Builds / 1.15.35
Update 1.15.35
Compared with 1.15.33 · published Mon, 12 Oct 2026 00:41:16 GMT · live channel
Highlights
- Soldier Placement in the main game: tap your castle during battle and drag soldiers to new positions.
- Free Entry Tickets in the Spirit Plains now refill to the daily amount at each daily reset. Tickets from the Shop or mail are kept separately and used last.
- Fishing hunts are much bigger: nine new monsters, two new harpoons, a monster schedule, monster waves that hit your boat, and a defeat animation with a reward card.
New content
- Soldier Placement: tap the castle during battle to open an editor that dims the field and shows the patrol rings. Drag soldiers within their ring, then press Save or Cancel. Only soldiers you actually moved are updated, and the new spots are stored as rally points. The prompt reads "Drag soldiers to change their positions".
FormationEditor,BattleController - Spirit Plains tickets: the ticket counter now shows free tickets as
free/max, plus+bonusfor Shop or mail tickets. The Spirit Plains guide has a new entry explaining the refill rule.SpiritLandDataManager,SpriteLandGuidePopup,SpriteBattleReadyPopup,InventoryPetTicketView - Fishing mini window: a new minimize button on the fishing screen shrinks it to a draggable floating window.
- It shows a snapshot of your boat, net count and boat HP.
- It flashes "!" on a bite, and tapping it hooks the fish.
- Buttons expand it back or switch fishing off.
- Fishing keeps going slowly while it is off.
- The old fullscreen toggle on the shell is gone.
FishingMiniWindow,FishingShell - Auto Sell (자동 팔기) on the Net (어망) tab. You choose when it sells (when the net is full, or as soon as you catch), a rarity limit, and a size limit. It always keeps very rare fish, extra-large and king-size fish, quest fish, and first catches of a species. If you turn it on while the net is full, it sells matching fish immediately.
FishingTankPage,FishingDataManager,FishingSettlePanel - New monsters: Swamp Crocodile, Giant Jellyfish, Hammerhead school, Ice Narwhal, Giant Squid, Giant Anglerfish, Giant Octopus, White Sperm Whale and Abyssal Sea Serpent. The last four look like they appear only in deep ocean waters.
FishingSilhouetteRig,FishingDataManager,FishingSeaMap - New harpoons: Bone Harpoon (용뼈 작살) and Thunder Harpoon (번개 작살).
- They need hunt materials, Dragon Bone (용뼈) and Thunder Crystal (번개 결정), which you craft from fish plus gold.
- The crafting screen now has a materials section, and harpoons and materials have their own icons.
FishingHuntUi,FishingAssets - Monster schedule: the monster chip now shows a face icon and countdown ("soon", "passing"). Tapping it opens a schedule card with upcoming monsters for your current waters and the first zone point they appear at. The big map also shows monster faces on spots where they appear, with a legend entry.
MonsterFace,FishingHuntUi - Monster waves and kill card: big monsters can send a wave across the water at your boat. It shows "끄떡없음" when blocked or "내구도 −N" when it hits. A defeated monster rolls belly-up with ripples and bubbles, then a card shows your damage, the number of players who helped, and your gold and pearl rewards.
FishingSeaMap,FishingTurtleRig,FishingHuntUi - Hazard cut-in cards: boat hazards such as gust, rapids, rocks, reef, storm, thunder and monster wakes now play a full-screen card with art and an animated HP drain bar. Tap to skip. A few hazards have separate sea-water art.
FishingHazardCut,FishingBoatUi - New fish school behaviors on the sea map: ribbon lines, pods, leaping, darting, tight balls, and a school fleeing a predator. Schools can be silver or gold. Each water uses its own set of behaviors.
FishingFishSchool,FishingSeaMap - New fish species: about 60 new species (IDs 193–263), including several top-rarity fish. Some fish now live in more than one zone, and the list shows "에서도" (also in) for them.
FishingDataManager - New fish and gear card frames: grades 1–9 have their own card art. Grade 7 and above get a colored glow, grade 8 and above get a holographic shine with sparkles, and grade 9 gets a crown.
GradeCardArt,FishCard,GearCard - Sell-price gear stat (물고기 판매가): a new stat that raises the gold you get when selling fish. The Lantern slot now appears to give it instead of Ice Box.
FishingAssets,FishingDataManager - Fishing Contest redesign: each day you pick one of four contests:
- Max Weight (최대 무게)
- Highest Rarity (최고 희귀도)
- Trophy Hunt (대어 사냥)
- Most Catches (다어)
You compete with up to 30 anglers for 12 hours from joining. The tab has a live top-3 board, a full ranking, a past records list, a rewards list and an info screen. A result screen with a "보상 받기" button claims your rewards. FishingSocialPanel, QuestCanvas
- Achievements tab redesign: trophy counts, a "모두 받기" button for stored pearl rewards, medal tracks for dex, sales and help, and a "내 기록" records screen. FishingAchievementPanel, FishingQuestPage
- New menu icons for the fishing tabs. The selected tab now gets a highlight and a name label. FishingShell, MenuArt
Changes
- Infinite Ranking lobby is redesigned.
- A new dashboard shows your rank badge, points, rank and tickets with a recharge timer.
- Opponent rows show Lv, points and win/loss counts. The team icon strip appears to be gone from these rows.
- The tabs are restyled.
- The season and league now sit in the header.
PVPBattleSubView,PVPOpponentItemRenderer,PVPBattlePopup - Auto-save timing: the main game appears to auto-save on wave clear only if at least 10 waves have passed and 30 seconds have gone by since the last auto-save.
BattleController - Fish rarity naming: star ratings in the fishing UI are now rarity names (common, uncommon, rare, very rare, rarest). The net sell filters read "흔한 것만 / 보통까지 / 드문 것까지". The Bobber effect now reads "드문 물고기 ×1".
FishingTankPage,FishingDataManager - Fish spawn odds appear to be set per zone (R/C/O) and run up to a higher rarity tier. Fish living in a second zone appear at half weight. Rarity-based fish prices in the client table look lower.
FishingDataManager - Gear stat tables appear to have changed:
- Luck and Star values are much lower.
- Sell was added.
- Higher gear grades got a new color range.
FishingDataManager - Harpoon costs: Iron Harpoon now has a ×2 multiplier and costs 100 gold (was ×1.6 and 200). Mithril Harpoon has a ×3.5 multiplier and costs 400 gold (was ×2.5 and 1500).
FishingDataManager - Hunt participation: you can now join only one water's monster per round. The harpoon button shows "참가 끝" and the banner explains why. The boss HP curve in the client also looks gentler.
FishingHuntUi,FishingDataManager - Hazard damage constants for swell, storm, thunder, monster wake and Ocean-zone hazards appear to be about 50% higher.
FishingDataManager - Harpoon gauge: the sweet spot now moves around the bar with randomized speed, and the hint reads "노란 칸에 맞춰 멈추세요".
FishingHarpoonGauge,FishingHuntUi - Fishing milestone thresholds: several cumulative-sales milestones need less than before (for example 10,000 → 2,000 and 50,000 → 10,000 for the first two).
FishingDataManager - Page layouts: the Gear, Net, Dex and Shop pages share a new header style, and the Gear page tabs are renamed 내 배, 가방, 상자, 도구. Gear cards now use the new frames.
FishingGearPage,FishingMyBoatView,FishingGearBagView,FishingGearChestView,FishingShopPage,GearHeader,PageHeader - Catch feedback: fish that are auto-sold show gold flying to the wallet. The Settle panel adds a line about auto-sold fish.
FishingShell,FishingSettlePanel
Fixes
- Infinite Ranking: the surrender button is hidden until the fight actually starts and after it ends, and the confirm dialog closes when the battle ends. The result is also sent only once.
PVP2BattleController,PVPBattleStatus - Main game: when the server says a revive is needed but nothing is saved locally, the revive prompt is now restored on startup.
BattleController - Network requests: the timeout now also covers reading the server's response, not just the connection, so stalled replies fail cleanly.
BaseService
Technical
- Live monster sync (
FishingSocket) only builds a URL for localhost or the dev server. Live builds appear to fall back to polling every 5–30 seconds. - The fishing server gained endpoints for auto-sell, claim-all milestones, hunt materials, hunt crafting and a socket ticket.
FishingService - A new
GradeFramecard renderer and asset loader handle the grade art. Hazard, monster, harpoon, material and menu icon atlases load lazily.FishingAssets - The Infinite Ranking Elo helpers moved into a shared module.
BaseMap - The sprite atlas now has 263 frames (up from 256). The app version is 1.15.35.
VersionManager - Many other classes only show renamed minified identifiers.
AI summary (claude-sonnet-5-5) written from the diffs below. Check the evidence before quoting it.
Text changes 3
| Key | Text | |
|---|---|---|
| GAME_1930 | + | Free Entry Tickets refill to the daily amount (@@) at each daily reset. Tickets from the Shop or mail are kept separately and never disappear. Free tickets are used first. |
| GAME_1931 | + | Drag soldiers to change their positions |
| GAME_1932 | + | Soldier Placement |
Translations touched: de (3), es (3), fr (3), id (3), it (3), ja (3), ko (3), pl (3), pt (3), ru (3), th (3), tr (3), vi (3), zh-CN (3), zh-TW (3)
Assets 37
| File | Change | Size | Preview |
|---|---|---|---|
assets/images/UI_FISH.json |
changed | 50.2 KB → 51.5 KB | |
|
New sprites: fish_257, fish_258, fish_259, fish_260, fish_261, fish_262, fish_263 | |||
assets/images/UI_FISH.webp |
changed | 1,063.5 KB → 922.8 KB | |
assets/images/fishing/topdown/grade_card/card_1.webp |
added | 1.3 KB | |
assets/images/fishing/topdown/grade_card/card_2.webp |
added | 1.9 KB | |
assets/images/fishing/topdown/grade_card/card_3.webp |
added | 1.9 KB | |
assets/images/fishing/topdown/grade_card/card_4.webp |
added | 2.8 KB | |
assets/images/fishing/topdown/grade_card/card_5.webp |
added | 3.3 KB | |
assets/images/fishing/topdown/grade_card/card_6.webp |
added | 3.6 KB | |
assets/images/fishing/topdown/grade_card/card_7.webp |
added | 3.6 KB | |
assets/images/fishing/topdown/grade_card/card_8.webp |
added | 4.2 KB | |
assets/images/fishing/topdown/grade_card/card_9.webp |
added | 5.6 KB | |
assets/images/fishing/topdown/grade_card/gloss.webp |
added | 0.4 KB | |
assets/images/fishing/topdown/grade_card/holo_8.webp |
added | 13.6 KB | |
assets/images/fishing/topdown/grade_card/holo_9.webp |
added | 13.6 KB | |
assets/images/fishing/topdown/grade_card/parts.webp |
added | 8.3 KB | |
assets/images/fishing/topdown/harpoon_icons.webp |
added | 14.1 KB | |
assets/images/fishing/topdown/hazard_cuts/ghost.webp |
added | 24.6 KB | |
assets/images/fishing/topdown/hazard_cuts/ghost_sea.webp |
added | 31.7 KB | |
assets/images/fishing/topdown/hazard_cuts/gust.webp |
added | 36.4 KB | |
assets/images/fishing/topdown/hazard_cuts/gust_sea.webp |
added | 45.5 KB | |
assets/images/fishing/topdown/hazard_cuts/ice.webp |
added | 41.7 KB | |
assets/images/fishing/topdown/hazard_cuts/ice_sea.webp |
added | 37.9 KB | |
assets/images/fishing/topdown/hazard_cuts/log.webp |
added | 29.1 KB | |
assets/images/fishing/topdown/hazard_cuts/log_sea.webp |
added | 36.3 KB | |
assets/images/fishing/topdown/hazard_cuts/monster.webp |
added | 45.2 KB | |
assets/images/fishing/topdown/hazard_cuts/rapid.webp |
added | 42.0 KB | |
assets/images/fishing/topdown/hazard_cuts/reef.webp |
added | 43.3 KB | |
assets/images/fishing/topdown/hazard_cuts/rock.webp |
added | 33.9 KB | |
assets/images/fishing/topdown/hazard_cuts/storm.webp |
added | 36.9 KB | |
assets/images/fishing/topdown/hazard_cuts/swell.webp |
added | 33.0 KB | |
assets/images/fishing/topdown/hazard_cuts/thunder.webp |
added | 36.3 KB | |
assets/images/fishing/topdown/hazard_cuts/vine.webp |
added | 39.9 KB | |
assets/images/fishing/topdown/hazard_cuts/vine_sea.webp |
added | 42.2 KB | |
assets/images/fishing/topdown/hazard_cuts/wave.webp |
added | 28.6 KB | |
assets/images/fishing/topdown/hunt_mats.webp |
added | 8.1 KB | |
assets/images/fishing/topdown/menu_icons.webp |
added | 55.0 KB | |
assets/images/fishing/topdown/monster_icons.webp |
added | 41.9 KB | |
Code 665 changes in 140 classes
Minified client code with short names blanked for diffing. Class names are real.
- FishingQuestPage 452
- FishingFishSchool 427
- FishingSilhouetteRig 385
- FishingHuntUi 359
- MonsterFace 309
- FishingSocialPanel 251
- FishingMiniWindow 250
- FishingSeaMap 233
- GradeCardArt 205
- FishingTankPage 196
- FishingDataManager 178
- QuestCanvas 166
- FishingHazardCut 85
- FishingFog 84
- FishingTurtleRig 84
- FishingShell 82
- FishingGearPage 79
- FormationEditor 77
- PVPOpponentItemRenderer 73
- FishingAssets 58
- FishingAchievementPanel 57
- BattleController 52
- FishingBoatUi 47
- FishingShopPage 41
- PVPBattleSubView 33
- MenuArt 30
- FishingMyBoatView 28
- PvpLobbyTab 27
- FishingService 27
- BaseService 26
- BaseCastle 26
- FishingGiantRig 25
- FishingGearBagView 20
- GearCard 19
- SpiritLandDataManager 18
- PageHeader 17
- BaseMap 15
- Un 14
- PVPBattleStatus 13
- FishingHarpoonGauge 13
- PVP2BattleController 12
- FishingSettlePanel 12
- FishingGearChestView 12
- PVPBattlePopup 11
- FishCard 10
- InventoryPetTicketView 9
- MiniAscentCardPickPopup 8
- FishingHarpoonFx 7
- GearHeader 7
- MiniAscentRelicsPage 7
- SpriteBattleReadyPopup 6
- GuildWarBattlePopupV3 6
- FishingMainPage 6
- FloatingLayer 5
- GodBlessToast 5
- FishingAvatarMaker 5
- BoatRepairFx 5
- Archery2GameScene 4
- FishGridRow 4
- MiniAscentResultPopup 4
- MiniAscentLobbyPopup 4
- Circle 3
- BatchableSprite 3
- VersionManager 3
- SHA256 3
- SuiProvider 3
- WalletPopup 3
- SpriteLandGuidePopup 3
- SpriteLandSubMenu 3
- MiniAscentAssets 3
- FishingTravelFx 3
- FishingStatusHud 3
- MiniAscentDeployPopup 3
- AppReadyEvent 2
- HelpDetailPopup 2
- GuildBarrackRowItemRenderer 2
- GuildWarBattleReadyPopup 2
- GuildWarSquadsPopup 2
- GuildWarTierAssignPopup 2
- MiniAscentShell 2
- MiniAscentBattleController 2
- AvatarFront 2
- MiniAscentCorpsPanel 2
- MiniAscentCorpsPage 2
- MiniAscentChapterRewardItem 2
- DefaultShader 1
- BlurFilter 1
- HTMLTextStyle 1
- WebGLRenderer 1
- WebGPURenderer 1
- AutoTogglePill 1
- FireBird1 1
- Emitter 1
- Socket 1
- Mt 1
- Sr 1
- Ma 1
- Yp 1
- SuiStandardProvider 1
- SolProvider 1
- OkxwalletInjectConnector 1
- TcRootElement 1
- WalletSelectPopup 1
- GuideBubble 1
- HeroMassiveBuyPopup 1
- BuffStatusPopup 1
- FavoritePetSubView 1
- TreasureSubView 1
- EventSchedulePopup 1
- GuildBarracksRaceView 1
- GuildMainSubView 1
- EmblemBadge 1
- GuildRaidBattleReadyPopup 1
- GuildWarHistoryItemRenderer 1
- GuildWarTournamentRewardGuidePopup 1
- NpcDialogueToast 1
- MainLayer 1
- IntroOverlay 1
- GuildWarCombatLogItemRenderer 1
- GuildWarMemberStatusItemRenderer 1
- GuildWarTargetMarkerItemRenderer 1
- MiniAscentBattleProgress 1
- FButton 1
- FishingCoach 1
- FishingTerritory 1
- FishingDiscoveryFx 1
- FishingTradeUi 1
- PointCard 1
- FishingMapPage 1
- Delay 1
- NetworkTimeout 1
- RecaptchaVerifier 1
- BrowserPopupRedirectResolver 1
- MiniAscentCardsPage 1
- MiniAscentCrystalRowRenderer 1
- MiniAscentCrystalsPage 1
- MiniAscentTextButton 1
- MiniAscentRoutePopup 1
- MiniAscentCrystalRewardPopup 1
- MiniAscentModeSwitch 1
FishingQuestPage 28 hunks, 452 statements
- const mUi=.16,vUi=Qt(t=>Math.max(0,Math.min(1,t)),"c01"),_Ui=Qt(t=>t*t,"eIn"),MUi=Qt(t=>1-(1-t)*(1-t),"eOut"),bUi=Qt(t=>1+2.70158*Math.pow(t-1,3)+1.70158*Math.pow(t-1,2),"backOut"); + const hWi=.16,rWi=Qt(t=>Math.max(0,Math.min(1,t)),"c01$1"),oWi=Qt(t=>t*t,"eIn"),aWi=Qt(t=>1-(1-t)*(1-t),"eOut"),cWi=Qt(t=>1+2.70158*Math.pow(t-1,3)+1.70158*Math.pow(t-1,2),"backOut$1");
- const EUi=ORi.CONTENT_W,AUi=[["area","수역"],["contest","대회"],["visit","의뢰"],["goal","업적"]].filter(([t])=>"visit"!==t||XTi),SUi=AUi.map(([t])=>t),TUi=Qt((t,i)=>10*Math.round(CTi(t)*TTi(i)/10),"rankGold"),CUi=class t extends OR{ + const uWi=JRi.CONTENT_W,dWi=[["area","수역"],["contest","대회"],["visit","의뢰"],["goal","업적"]].filter(([t])=>"visit"!==t||PCi),fWi=dWi.map(([t])=>t),pWi=class t extends Ve{
- super(),Zt(this,"bg",new ip),Zt(this,"nameText",oki("",zIi,14)),Zt(this,"prog",oki("",YIi,12,!1)),Zt(this,"bar",new ip),Zt(this,"pearl",Mki("pearl",18)),Zt(this,"reward",oki("",QIi,13)),Zt(this,"btn",new gki("받기",110,40,14)),Zt(this,"row",null); - const i=(new ip).rect(0,0,EUi,t.H).fill({ - color:0,alpha:.001} - ); - i.eventMode="none",this.addChild(i),this.nameText.position.set(14,9),this.prog.position.set(14,36),this.bar.eventMode="none",this.btn.position.set(EUi-122,11),this.btn.onTap=()=>{ - var t; - return null==(t=this.row)?void 0:t.onClaim(this.btn)} - ,this.addChild(this.bg,this.nameText,this.prog,this.bar,this.pearl,this.reward,this.btn)} - setData(i){ - this.row=i; - const s=!i.claimed&&i.progress>=i.need; - this.bg.clear().roundRect(0,0,EUi,t.H-6,10).fill(s?2244666:BIi),this.nameText.text=i.label,this.nameText.textColor=i.claimed?qIi:zIi,this.pearl.position.set(14+this.nameText.width+12,10),this.reward.text=`${ - i.pearl} - `,this.reward.position.set(this.pearl.x+22,10),this.prog.text=`${ - Math.min(i.progress,i.need).toLocaleString()} - / ${ - i.need.toLocaleString()} - `,this.bar.clear(),_ki(this.bar,150,42,EUi-150-140,8,i.progress/i.need,i.claimed?qIi:s?XIi:jIi),this.btn.enabled=s,this.btn.setText(i.claimed?"완료":"받기")} - } - ; - Qt(CUi,"GoalRow"),Zt(CUi,"H",66); - let OUi=CUi; - const IUi=class t extends Ve{ - constructor(){ - super(),Zt(this,"dim",new ip),Zt(this,"card",new Ve),Zt(this,"cardBg",new ip),Zt(this,"cup",new Ve),Zt(this,"big",oki("",16771496,44)),Zt(this,"sub",oki("",zIi,15)),Zt(this,"gap",oki("",jIi,14)),Zt(this,"goldIcon",Mki("gold",24)),Zt(this,"goldText",oki("",zIi,20)),Zt(this,"pearlIcon",Mki("pearl",24)),Zt(this,"pearlText",oki("",QIi,20)),Zt(this,"confetti",new Ve),Zt(this,"ok",new gki("낚시 지갑에 받기",360,50,17)),Zt(this,"tl",null),this.dim.eventMode="static",this.card.addChild(this.cardBg,this.confetti,this.cup,this.big,this.sub,this.gap,this.goldIcon,this.goldText,this.pearlIcon,this.pearlText,this.ok),this.confetti.eventMode="none",this.ok.position.set(40,334),this.ok.onTap=()=>{ - var t,i; - null==(t=this.tl)||t.progress(1); - const s=ORi.getInstance(); - s.flyCurrency("gold",this.goldIcon.toGlobal({ - x:12,y:12} - ),9),s.flyCurrency("pearl",this.pearlIcon.toGlobal({ - x:12,y:12} - ),5),null==(i=this.parent)||i.removeChild(this)} - ,this.addChild(this.dim,this.card)} - closeOne(){ - var t,i; - return null==(i=(t=this.ok).onTap)||i.call(t),!0} - layout(){ - const i=ORi.contentHeight,s=ORi.OVERLAY_PAD,e=t.CH; - this.dim.clear().rect(-s,0,EUi+2*s,i).fill({ - color:0,alpha:.65} - ),this.dim.hitArea=new Ui(-s,0,EUi+2*s,2e3),this.card.position.set(EUi/2,Math.max(10,(i-e)/2)+e/2)} - open(i){ - var s; - const e=t.CW,n=t.CH; - this.card.pivot.set(e/2,n/2),this.layout(); - const h=i.rank<=3; - if(this.cardBg.clear().roundRect(0,0,e,n,20).fill(h?2760978:$Ii),h&&this.cardBg.roundRect(0,0,e,n,20).stroke({ - color:10123836,width:2} - ),this.cup.removeChildren().forEach(t=>t.destroy({ - children:!0} - )),h){ - const t=Aki(i.rank,84); - t.position.set(-42,-42),this.cup.addChild(t)} - this.cup.position.set(e/2,70),this.big.textColor=1===i.rank?16765773:2===i.rank?15133679:3===i.rank?14721130:zIi; - const r=Qt(t=>1===t?"우승!":2===t?"아차상!":3===t?"3등!":`${ - t} - 등`,"title"); - this.sub.text=`${ - i.day} - 일차 ${ - i.title} - · 30명 중 ${ - i.rank} - 위 · 기록 ${ - "-"===i.record?"없음":i.record} - `,this.gap.text=i.gapToFirst?`1등과 ${ - i.gapToFirst} - 차이!`:h?"장식장에 컵이 남아요":"꼴찌까지 모두 골드를 받아요"; - const o=Qt((t,i)=>{ - aki(t,e-40),t.position.set((e-t.width)/2,i)} - ,"place"); - o(this.sub,200),o(this.gap,230); - const a={ - rank:30,gold:0,pearl:0} - ,c=Qt(()=>{ - this.goldText.text=Math.round(a.gold).toLocaleString(),this.pearlText.text=`${ - Math.round(a.pearl)} - `; - const t=30+this.goldText.width+30+30+this.pearlText.width; - this.goldIcon.position.set((e-t)/2,278),this.goldText.position.set(this.goldIcon.x+30,276),this.pearlIcon.position.set(this.goldText.x+this.goldText.width+30,278),this.pearlText.position.set(this.pearlIcon.x+30,276)} - ,"drawReward"),l=Qt(()=>{ - this.big.text=r(Math.round(a.rank)),this.big.pivot.set(this.big.width/2,this.big.height/2),this.big.position.set(e/2,160)} - ,"drawRank"); - l(),c(),this.confetti.removeChildren().forEach(t=>t.destroy()),ORi.getInstance().overlay.addChild(this),null==(s=this.tl)||s.kill(); - const u=MR.timeline(); - u.fromTo(this.card,{ - alpha:0} - ,{ - alpha:1,duration:.2} - ).fromTo(this.card.scale,{ - x:.9,y:.9} - ,{ - x:1,y:1,duration:.25,ease:"back.out(2)"} - ,0).set([this.sub,this.gap,this.goldIcon,this.goldText,this.pearlIcon,this.pearlText,this.ok,this.cup],{ - alpha:0} - ,0).to(a,{ - rank:i.rank,duration:.9,ease:"power2.out",onUpdate:l} - ,.15).call(()=>{ - jG(h?"success":"light"),qG.getInstance().playSFX(h?qG.SFX_TRUMPET:qG.SFX_POPUP),h&&this.burst(e)} - ,[],1.05).fromTo(this.big.scale,{ - x:1.6,y:1.6} - ,{ - x:1,y:1,duration:.35,ease:"back.out(3)"} - ,1.05).to(this.cup,{ - alpha:1,duration:.2} - ,1.05).fromTo(this.cup.scale,{ - x:.3,y:.3} - ,{ - x:1,y:1,duration:.45,ease:"back.out(2.5)"} - ,1.05).to([this.sub,this.gap],{ - alpha:1,duration:.25} - ,1.3).to([this.goldIcon,this.goldText,this.pearlIcon,this.pearlText],{ - alpha:1,duration:.2} - ,1.5).to(a,{ - gold:i.gold,pearl:i.pearl,duration:.7,ease:"power1.out",onUpdate:c} - ,1.5).to(this.ok,{ - alpha:1,duration:.2} - ,1.9),this.tl=u} - burst(t){ - const i=[16765773,16743019,8378016,8369919,15262964]; - for(let s=0; - s<36; - s++){ - const e=(new ip).rect(-3,-1.5,6,3).fill(i[s%i.length]); - e.position.set(t/2,90),this.confetti.addChild(e); - const n=-Math.PI/2+2.4*(Math.random()-.5),h=120+160*Math.random(); - MR.timeline({ - onComplete:Qt(()=>e.destroy(),"onComplete")} - ).to(e,{ - x:t/2+Math.cos(n)*h,y:90+Math.sin(n)*h*.8,rotation:8*Math.random(),duration:.6,ease:"power2.out"} - ).to(e,{ - y:"+="+(120+80*Math.random()),alpha:0,rotation:"+="+6*Math.random(),duration:1.1,ease:"power1.in"} - )} - } - } - ; - Qt(IUi,"ResultPanel"),Zt(IUi,"CW",440),Zt(IUi,"CH",404); - let kUi=IUi; - const RUi=class t extends Ve{ - constructor(){ - super(),Zt(this,"tabId","quest"),Zt(this,"view","area"),Zt(this,"socialPanel",new wUi),Zt(this,"body",new Ve),Zt(this,"result",new kUi),Zt(this,"contestLayer",new Ve),Zt(this,"cBg",cki(EUi,214,UIi,VIi,14)),Zt(this,"cIcon",Eki("trophy",26,jIi)),Zt(this,"cTitle",oki("",jIi,20)),Zt(this,"cDesc",oki("",zIi,14,!1)),Zt(this,"cTarget",new uki(52)),Zt(this,"cTargetText",oki("",zIi,14)),Zt(this,"cTargetSub",oki("",YIi,12,!1)),Zt(this,"cGo",new gki("그곳으로",100,38,13)),Zt(this,"cStatus",oki("",zIi,14)),Zt(this,"cBar",new ip),Zt(this,"cBtn",new gki("참가하기",200,46,16)),Zt(this,"devEnd",new gki("끝내기(개발)",110,32,12)),Zt(this,"rewardTitle",oki("상금 · 30명 모두 받아요",zIi,15)),Zt(this,"rewardStrip",new Ve),Zt(this,"boardTitle",oki("",zIi,15)),Zt(this,"board",new Ve),Zt(this,"boardRows",[]),Zt(this,"calTitle",oki("10일 대회 달력",zIi,15)),Zt(this,"cal",[]),Zt(this,"calHint",oki("개발 · 날짜를 누르면 그날 대회를 바로 열어요",jIi,12)),Zt(this,"calBusy",!1),Zt(this,"visitLayer",new Ve),Zt(this,"vNext",oki("",YIi,13)),Zt(this,"vCards",[]),Zt(this,"areaLayer",new Ve),Zt(this,"areaKey",null),Zt(this,"areaSel",null),Zt(this,"areaSheet",!1),Zt(this,"areaPop",null),Zt(this,"areaSig",""),Zt(this,"areaBusy",!1),Zt(this,"pinGlows",[]),Zt(this,"slam",null),Zt(this,"slamRefs",{ + super(),Zt(this,"tabId","quest"),Zt(this,"view","area"),Zt(this,"socialPanel",new nWi),Zt(this,"achievementPanel",new ZHi),Zt(this,"body",new Ve),Zt(this,"visitLayer",new Ve),Zt(this,"vNext",Axi("",dxi,Txi)),Zt(this,"vCards",[]),Zt(this,"areaLayer",new Ve),Zt(this,"areaKey",null),Zt(this,"areaSel",null),Zt(this,"areaSheet",!1),Zt(this,"areaPop",null),Zt(this,"areaSig",""),Zt(this,"areaBusy",!1),Zt(this,"pinGlows",[]),Zt(this,"slam",null),Zt(this,"slamRefs",{
- ),Zt(this,"previewIdx",-1),Zt(this,"goalLayer",new Ve),Zt(this,"goalList",new TR(OUi,EUi,400,0)),Zt(this,"records",new Ve),Zt(this,"contestBusy",!1),this.buildContest(),this.buildVisit(),this.records.y=52,this.goalList.y=190,this.goalLayer.addChild(this.records),this.goalLayer.addChild(this.goalList),this.body.y=-t.LIFT,this.body.addChild(this.contestLayer,this.visitLayer,this.areaLayer,this.goalLayer,this.socialPanel),this.addChild(this.body)} + ),Zt(this,"previewIdx",-1),this.buildVisit(),this.body.y=-t.LIFT,this.body.addChild(this.visitLayer,this.areaLayer,this.socialPanel,this.achievementPanel),this.addChild(this.body)}
- var t; - return"goal"!==this.view&&"area"!==this.view&&!("contest"===this.view&&(null==(t=xIi.getInstance().social)?void 0:t.enabled))} + return"visit"===this.view}
- buildContest(){ - const t=this.contestLayer; - this.cBg.y=48,this.cIcon.position.set(16,62),this.cTitle.position.set(50,62),this.cDesc.position.set(16,98),this.cTarget.position.set(16,126),this.cTargetText.position.set(78,130),this.cTargetSub.position.set(78,154),this.cGo.setPrimary(!1),this.cGo.position.set(EUi-116,134),this.cGo.onTap=()=>{ - this.goContestSpot()} - ,this.cStatus.position.set(16,190),this.cBar.eventMode="none",this.cBtn.position.set(EUi-216,58),this.cBtn.onTap=()=>{ - this.onContestButton()} - ,this.devEnd.setPrimary(!1),this.devEnd.onTap=async()=>{ - await xIi.getInstance().devEndContest(),this.render()} - ,this.rewardTitle.position.set(4,274),this.rewardStrip.y=302,this.boardTitle.position.set(4,376),this.board.y=406; - for(let i=0; - i<7; - i++){ - const t=new Ve,s=new ip,e=new Ve,n=oki("",YIi,14),h=oki("",zIi,14),r=oki("",zIi,14),o=oki("",jIi,12); - s.eventMode="none",t.addChild(s,e,n,h,r,o),t.y=38*i,e.position.set(10,3),h.position.set(50,8),this.board.addChild(t),this.boardRows.push({ - root:t,bg:s,medal:e,rank:n,name:h,score:r,gold:o} - )} - t.addChild(this.cBg,this.cIcon,this.cTitle,this.cDesc,this.cTarget,this.cTargetText,this.cTargetSub,this.cGo,this.cStatus,this.cBar,this.cBtn,this.devEnd,this.rewardTitle,this.rewardStrip,this.boardTitle,this.board,this.calTitle); - for(let i=0; - i<10; - i++){ - const s=new ip,e=oki(`${ - i+1} - `,zIi,14),n=oki(yTi[i].title,YIi,11,!1),h=oki("",jIi,11),r=new Ve,o=new Ve; - s.eventMode="none",r.eventMode="none"; - const a={ - bg:s,day:e,title:n,res:h,cup:r,hit:o,d:i+1} - ; - o.cursor="pointer",o.on("pointertap",t=>{ - t.stopPropagation(),this.devOpenDay(a.d)} - ),t.addChild(s,e,n,h,r,o),this.cal.push(a)} - t.addChild(this.calHint)}
- "contest"===this.view&&xIi.getInstance().refreshSocial(),"goal"!==this.view&&this.render()} - async onContestButton(){ - if(!this.contestBusy){ - this.contestBusy=!0; - try{ - const t=xIi.getInstance(),i=t.contestStanding(),s=t.state.contest; - if(s&&(null==i?void 0:i.ended)&&!s.claimed){ - const i=await t.claimContest(); - i&&this.result.open(i)} - else{ - const i=await t.joinContest(); - i||jG("medium"),vH.getInstance().showMessage(i??`${ - t.state.contest.room} - 번 방 30명이 모였어요. 12시간 동안 겨뤄요!`)} - } - finally{ - this.contestBusy=!1} - this.render()} - } - contestShown(){ - const t=xIi.getInstance(),i=t.state.contest,s=t.eventDay(); - return ETi(i&&!i.claimed?i.day:s)} - async goContestSpot(){ - const t=this.contestShown(),i=xIi.getInstance(); - if(!t.speciesId)return; - const s=RSi(t.speciesId),e=await i.goTo(FSi(s)); - e?vH.getInstance().showMessage(e):(vH.getInstance().showMessage(`${ - _Si[`${ - s.race} - |${ - s.zone} - `]} - (으)로 옮겼어요${ - s.roam?" · 회유어는 오늘 자리를 찾아야 해요":""} - `),ORi.getInstance().selectTab("fish"))} + "contest"===this.view&&Oki.getInstance().refreshSocial(),this.render()}
- var t; - const i="contest"===this.view&&!!(null==(t=xIi.getInstance().social)?void 0:t.enabled); - this.socialPanel.visible=i,this.contestLayer.visible="contest"===this.view&&!i,this.visitLayer.visible="visit"===this.view,this.areaLayer.visible="area"===this.view,this.goalLayer.visible="goal"===this.view,this.socialPanel.visible?this.socialPanel.render():"contest"===this.view?this.renderContest():"visit"===this.view?this.renderVisit():"area"===this.view?this.renderArea():this.renderGoals()} + const t="contest"===this.view; + this.socialPanel.visible=t,this.visitLayer.visible="visit"===this.view,this.areaLayer.visible="area"===this.view,this.achievementPanel.visible="goal"===this.view,this.socialPanel.visible?this.socialPanel.render():"visit"===this.view?this.renderVisit():"area"===this.view?this.renderArea():this.achievementPanel.render()}
- const u=t.LIFT+4,d=a.filter(t=>t.claimed).length,f=new Ve,p=new ip,g=(new ip).circle(0,0,5.5).fill(rki[r]),w=oki(_Si[h],zIi,20),m=oki(`${ + const u=t.LIFT+4,d=a.filter(t=>t.claimed).length,f=9===d,p=new Oxi(uWi); + p.onTitle=()=>queueMicrotask(()=>{ + this.areaSheet=!0,this.renderArea(!0)} + ),p.set(qSi[h],`${
- `,YIi,13),v=(new ip).moveTo(0,0).lineTo(6,6).lineTo(12,0).stroke({ - color:YIi,width:3,cap:"round",join:"round"} - ); - g.position.set(18,26),w.position.set(32,(52-w.height)/2),m.position.set(w.x+w.width+8,w.y+w.height-m.height-2),v.position.set(m.x+m.width+10,23); - const _=v.x+12+14; - p.roundRect(0,0,_,52,12).fill(BIi),p.eventMode=g.eventMode=v.eventMode="none",f.addChild(p,g,w,m,v),f.position.set(0,u),f.eventMode="static",f.cursor="pointer",f.hitArea=new Ui(0,0,_,52),f.on("pointertap",t=>{ - t.stopPropagation(),queueMicrotask(()=>{ - this.areaSheet=!0,this.renderArea(!0)} - )} - ); - const M=9===d,b=new ip,y=Mki("pearl",18),E=oki("+300",M?jIi:YIi,15),A=38+E.width+14; - b.roundRect(0,0,A,40,20).fill(M?tki:BIi),b.position.set(EUi-A,u+6),y.position.set(b.x+14,u+17),E.position.set(y.x+24,u+26-E.height/2); - const S=oki(`${ + ·`,{ + accent:f?"9곳 다 채웠어요 · 진주 +300":"9곳 다 채우면 진주 +300",right:`수역 ${
- /9`,zIi,19),T=oki("수역",YIi,13); - S.position.set(b.x-12-S.width,u+26-S.height/2),T.position.set(S.x-6-T.width,u+26-T.height/2+1),l.addChild(f,b,y,E,T,S); - const C=Math.max(240,Math.min(470,n-84-392)),O=u+64,I=hAi.topdownInfo(h),k=t.mapView(I.points,I.w,EUi,C),R=new Ve; + / 9`} + ),p.y=u,l.addChild(p); + const w=Math.max(240,Math.min(470,n-84-392)),g=u+66,m=xAi.topdownInfo(h),v=t.mapView(m.points,m.w,uWi,w),_=new Ve;
- const f=oki(s.name,zIi,19); + const f=Axi(s.name,uxi,18);
- `,QIi,16); + `,cxi,Sxi);
- _ki(m,c,66,Math.max(60,g.x-12-c),8,s.need?s.have/s.need:0,s.claimed?XIi:jIi),m.eventMode="none",l.addChild(m,g); + Fxi(m,c,66,Math.max(60,w.x-12-c),8,s.need?s.have/s.need:0,cxi),m.eventMode="none",l.addChild(m,w);
- `,s?XIi:YIi,12,s); + `,s?cxi:dxi,Txi,s);
- const t=new gki("",EUi-32,58,18),i=oki("받기",KIi,18),e=Mki("pearl",22),n=oki(`${ + const t=new Dxi("",uWi-32,58,Sxi),i=Axi("받기",lxi,Sxi),e=$xi("pearl",22),n=Axi(`${
- `,KIi,18),h=i.width+10+22+6+n.width; + `,lxi,Sxi),h=i.width+10+22+6+n.width;
- /9`,YIi,16),h=28+n.width; + /9`,dxi,Txi),h=28+n.width;
- const t=o.spot.race===s.race&&o.spot.zone===s.zone&&o.spot.point===s.point,i=new gki(t?"지금 이 수역에 있어요":"이 수역으로 가기",EUi-32,58,17); + const t=o.spot.race===s.race&&o.spot.zone===s.zone&&o.spot.point===s.point,i=new Dxi(t?"지금 이 수역에 있어요":"이 수역으로 가기",uWi-32,58,Sxi);
- const d=oki("지역",zIi,19),f=oki(`12곳 · 수역 ${ + const d=Axi("지역",uxi,24),f=Axi(`12곳 · 수역 ${
- /108 · 지역마다 9곳을 다 채우면 진주 +300`,YIi,13); + /108 · 지역마다 9곳을 다 채우면 진주 +300`,dxi,Txi);
- const s=oki(gSi[t],YIi,13); + const s=Axi(jSi[t],dxi,Txi);
- const p=oki(_Si[h],o?qIi:zIi,15); + const p=Axi(qSi[h],o?fxi:uxi,Sxi);
- 단계부터`,qIi,12); + 단계부터`,dxi,Txi);
- /9`,YIi,13),i=new ip; + /9`,dxi,Txi),i=new ip;
- h.star} + h.tier}
- renderContest(){ - var t; - const i=xIi.getInstance(),s=i.state,e=i.eventDay(),n=i.now(),h=s.contest,r=i.contestStanding(),o=!!h&&!h.claimed,a=this.contestShown(),c=o&&h.day!==e&&OG.getInstance().development&&!(null==r?void 0:r.ended); - this.cTitle.text=`${ - o?h.day:e} - 일차 · ${ - a.title} - ${ - o&&h.day!==e?c?" · 개발로 엶":" (지난 대회)":""} - `,aki(this.cTitle,EUi-280),this.cDesc.text=a.desc,aki(this.cDesc,EUi-32); - const l=a.speciesId?RSi(a.speciesId):null; - if(this.cTarget.visible=!!l,this.cGo.visible=!!l,l){ - const t=!!s.dex[l.id]; - this.cTarget.set(l.id,l.star,0,!t),this.cTargetText.text=`${ - t?l.name:"???"} - · 가장 무거운 한 마리`,this.cTargetSub.text=`${ - _Si[`${ - l.race} - |${ - l.zone} - `]} - · ${ - "전체"===l.tide?"모든 물때":`${ - l.tide} - 물때`} - · ${ - t?WSi(l):"소문만 무성해요"} - `,this.cTargetText.x=this.cTargetSub.x=78} - else{ - const t=NSi(n); - this.cTargetText.text="tidePct"===a.kind?`${ - vSi[a.tide]} - 에 잡은 물고기만`:"class"===a.kind?`${ - a.kindClass} - 종류만`:"어디서 잡아도 돼요",this.cTargetSub.text="tidePct"===a.kind?t===a.tide?"지금이 그 시간대예요!":`다음 ${ - vSi[a.tide]} - 까지 ${ - bki(DSi(n,a.tide))} - `:"count"===a.kind||"class"===a.kind||"dex"===a.kind?"켜둔 시간이 길수록 유리해요":"종 대비 크기(%)로 겨뤄서 대양 고래가 없어도 공평해요",this.cTargetText.x=this.cTargetSub.x=16} - aki(this.cTargetText,EUi-210),aki(this.cTargetSub,EUi-210); - const u=!!h&&h.day===e; - if(this.cBar.clear(),h&&r&&!h.claimed?(this.cStatus.text=r.ended?`대회 끝! 지금 ${ - r.myRank} - 위 · 결과를 받아 주세요`:`${ - h.room} - 번 방 · 지금 ${ - r.myRank} - 위 · 남은 시간 ${ - bki(h.endAt-n)} - `,this.cBtn.setText(r.ended?"결과 받기":"진행 중"),this.cBtn.enabled=r.ended,_ki(this.cBar,16,218,EUi-32-(this.devEnd.visible?120:0),6,r.progress,r.ended?XIi:jIi)):u?(this.cStatus.text="오늘 대회는 끝났어요. 내일 새 대회가 열려요.",this.cBtn.setText("내일 다시"),this.cBtn.enabled=!1):null!=(null==(t=i.season)?void 0:t.endAt)&&n+432e5>i.season.endAt+(s.devOffset??0)?(this.cStatus.text="오늘 대회는 마감됐어요. 회차가 곧 끝나요",this.cBtn.setText("마감"),this.cBtn.enabled=!1):(this.cStatus.text="누르면 선착순으로 30명 방에 들어가요. 방이 차면 12시간.",this.cBtn.setText("참가하기"),this.cBtn.enabled=!0),aki(this.cStatus,EUi-32-120),this.devEnd.visible=OG.getInstance().development&&!!h&&!!r&&!r.ended&&!h.claimed,this.devEnd.position.set(EUi-126,186),this.renderRewardStrip(o?h.day:e),this.board.visible=this.boardTitle.visible=!(!h||!r||h.claimed),h&&r&&!h.claimed){ - this.boardTitle.text=`${ - h.room} - 번 방 순위 · 30명`; - const t=ETi(h.day),i=r.rows,s=r.myRank-1,e=s<6?i.slice(0,7).map((t,i)=>({ - r:t,i} - )):[...i.slice(0,5).map((t,i)=>({ - r:t,i} - )),{ - r:null,i:-1} - ,{ - r:i[s],i:s} - ]; - this.boardRows.forEach((i,s)=>{ - const n=e[s]; - if(i.root.visible=!!n,!n)return; - i.bg.clear(); - const r=n.r&&n.r.score>0?n.i+1:0; - if(i.medal.label!==String(r)&&(i.medal.label=String(r),i.medal.removeChildren().forEach(t=>t.destroy({ - children:!0} - )),r>=1&&r<=3&&i.medal.addChild(Ski(r,28))),!n.r)return i.rank.text="",i.name.text="⋮",i.score.text="",void(i.gold.text=""); - const o=n.r.me,a=n.i+1; - i.bg.roundRect(0,0,EUi,34,8).fill(o?FIi:BIi),o&&i.bg.stroke({ - color:6012341,width:1.5} - ),i.rank.text=r>=1&&r<=3?"":r?`${ - r} - `:"-",i.rank.position.set(24-i.rank.width/2,8),i.name.text=`${ - o?"나":n.r.name} - ${ - 1===r?" · 우승":2===r?" · 아차상":""} - `,i.name.textColor=o?10481894:zIi,i.score.text=n.r.score>0?STi(t,n.r.score):"기록 없음",i.score.textColor=n.r.score>0?zIi:qIi,i.gold.text=`${ - TUi(h.day,a).toLocaleString()} - G`,i.gold.alpha=r?1:.5,i.gold.position.set(EUi-14-i.gold.width,10),i.score.position.set(EUi-104-i.score.width,8)} - )} - const d=12+(this.board.visible?676:376); - this.calTitle.position.set(4,d); - const f=(EUi-24)/5,p=OG.getInstance().development,g=p&&h&&!h.claimed?h.day:e; - this.calHint.visible=p,this.calHint.position.set(EUi-this.calHint.width-4,d+2); - const w=10*Math.floor((Math.max(1,e)-1)/10); - this.cal.forEach((t,i)=>{ - const n=i%5*(f+6),h=d+30+66*Math.floor(i/5),r=w+i+1,o=r===g,a=!p&&r<e,c=s.history.find(t=>t.day===r); - t.d=r,t.hit.eventMode=p?"static":"none",t.hit.hitArea=new Ui(n,h,f,60),t.bg.clear().roundRect(n,h,f,60,8).fill(o?jIi:BIi),o||t.bg.stroke({ - color:VIi,width:1,alpha:a?.4:1} - ),t.day.text=`${ - r} - 일`,t.day.textColor=o?KIi:a?qIi:zIi,t.day.position.set(n+8,h+5),t.title.text=ETi(r).title,t.title.textColor=o?KIi:YIi,aki(t.title,f-12),t.title.position.set(n+8,h+36); - const l=c&&c.rank<=3?c.rank:0; - if(t.cup.label!==String(l)&&(t.cup.label=String(l),t.cup.removeChildren().forEach(t=>t.destroy({ - children:!0} - )),l)){ - const i=Aki(l,26); - i.position.set(n+f-30,h+4),t.cup.addChild(i)} - t.res.text=c&&!l?`${ - c.rank} - 위`:"",t.res.position.set(n+f-t.res.width-6,h+7)} - )} - async devOpenDay(t){ - if(!this.calBusy&&OG.getInstance().development){ - this.calBusy=!0; - try{ - const i=await xIi.getInstance().devContestDay(t); - vH.getInstance().showMessage(i??`${ - t} - 일 · ${ - ETi(t).title} - 대회를 열었어요 (개발 · 12시간)`),i||jG("light")} - finally{ - this.calBusy=!1} - this.render()} - } - renderRewardStrip(t){ - const i=this.rewardStrip; - if(i.label===String(t))return; - i.label=String(t),i.removeChildren().forEach(t=>t.destroy({ - children:!0} - )); - const s=(EUi-24)/4; - [{ - r:1,t:"우승"} - ,{ - r:2,t:"아차상"} - ,{ - r:3,t:"3등"} - ,{ - r:30,t:"꼴찌도"} - ].forEach((e,n)=>{ - const h=n*(s+8); - if(i.addChild(Object.assign(cki(s,58,BIi,VIi,10),{ - x:h} - )),e.r<=3){ - const t=Ski(e.r,24); - t.position.set(h+8,5),i.addChild(t)} - const r=oki(e.t,e.r<=3?zIi:YIi,12); - r.position.set(h+(e.r<=3?36:10),9); - const o=Mki("gold",14); - o.position.set(h+10,35); - const a=oki(`${ - TUi(t,e.r).toLocaleString()} - · 진주 ${ - OTi(e.r)} - `,jIi,12); - aki(a,s-34),a.position.set(h+28,33),i.addChild(r,o,a)} - )}
- renderRecords(){ - var t,i; - const s=xIi.getInstance(),e=s.records(),n=this.records; - n.removeChildren().forEach(t=>t.destroy({ - children:!0} - )),n.addChild(cki(EUi,128,UIi,null,12)); - const h=e.heaviest?`${ - RSi(e.heaviest.id).name} - ${ - MTi(e.heaviest.kg)} - `:"-",r=[...(null==(t=s.life)?void 0:t.cups)??[],...s.state.cups],o=[1,2,3].map(t=>r.filter(i=>i.rank===t).length),a=r.length?`금 ${ - o[0]} - · 은 ${ - o[1]} - · 동 ${ - o[2]} - `:"-",c=new Set([...Object.keys((null==(i=s.life)?void 0:i.dex)??{ - } - ),...Object.keys(s.state.dex)]).size,l=[["총 포획",`${ - e.total.toLocaleString()} - 마리`],["도감",`${ - e.kinds} - /192종`],["최고 별",e.topStar?`★${ - e.topStar} - `:"-"],["왕 크기",`${ - e.sCount} - 종`],["누적 판매",`${ - s.state.sales.toLocaleString()} - G`],["가장 무거운 한 마리",h],["대회 컵 (전체)",a],["평생 도감",`${ - c} - /192종`]],u=(EUi-28)/4; - l.forEach(([t,i],s)=>{ - const e=oki(t,YIi,11,!1),h=oki(i,5===s?jIi:zIi,15),r=14+s%4*u,o=12+58*Math.floor(s/4); - e.position.set(r,o),h.position.set(r,o+17),aki(h,u-8),n.addChild(e,h)} - )} - renderGoals(){ - const i=xIi.getInstance(); - this.renderRecords(),this.goalList.setListHeight(ORi.contentHeight-56-128-10+t.LIFT,!1); - const s=i.milestoneRows(),e=Qt(t=>t.claimed?2:t.progress>=t.need?0:1,"order"); - s.sort((t,i)=>e(t)-e(i)||i.progress/i.need-t.progress/t.need),this.goalList.dataProvider=s.map(t=>({ - ...t,onClaim:Qt(async s=>{ - const e=await i.claimMilestone(t.kind,t.idx); - e?vH.getInstance().showMessage(e):(vH.getInstance().showMessage(`진주 ${ - t.pearl} - 개를 받았어요`),ORi.getInstance().flyCurrency("pearl",s.toGlobal({ - x:55,y:20} - ),6),this.render())} - ,"onClaim")} - ))}
FishingFishSchool 26 hunks, 427 statements
- const hLi=["stream","swirl","scatter"],rLi={ + const LDi=["stream","swirl","scatter","ball","predator","ribbon","pods","leap","dart"],DDi={
- ,FIRST_S:[20,40],EVERY_S:[60,120],SWIRL_IN:58,SWIRL_OUT:44,SWIRL_HOLD:6.5,SWIRL_DIST:[90,150]} + ,FIRST_S:[20,40],EVERY_S:[60,120],SWIRL_IN:58,SWIRL_OUT:44,SWIRL_HOLD:6.5,SWIRL_DIST:[90,150],RIBBON_GAP:9,DART_ROUND:48,RIBBON_V:70,DART_V:110,PRED_V:95,PRED_L:40,PRED_R:70,PRED_RUN:90,BALL_IN:4,BALL_RUN:110,BALL_HOLD:7,BALL_OUT:2.4,LEAP_P:.12,LEAP_S:.55,LEAP_H:22,SIZE:{ + R:.9,C:1,O:1.2} + }
- ,"smooth$1"),lLi=Qt((t,i,s)=>t+(i-t)*s,"lerp"); + ,"smooth$3"),FDi=Qt((t,i,s)=>t+(i-t)*s,"lerp$1");
- s.push([t[t.length-1].x,t[t.length-1].y]); + return s.push([t[t.length-1].x,t[t.length-1].y]),jDi(s)} + function jDi(t){
- const n=e[e.length-1],h=s.length; + const s=i[i.length-1],e=t.length,n=Qt(i=>Math.atan2(t[i+1][1]-t[i][1],t[i+1][0]-t[i][0]),"seg"),h=t.map((i,s)=>0===s?n(0):s===e-1?n(e-2):Math.atan2(t[s+1][1]-t[s-1][1],t[s+1][0]-t[s-1][0]));
- const i=Math.atan2(s[1][1]-s[0][1],s[1][0]-s[0][0]); + const i=h[0];
- const i=Math.atan2(s[h-1][1]-s[h-2][1],s[h-1][0]-s[h-2][0]); + const i=h[e-1];
- const o=(t-e[i])/Math.max(1e-9,e[r]-e[i]),a=Math.atan2(s[r][1]-s[i][1],s[r][0]-s[i][0]); - return[lLi(s[i][0],s[r][0],o),lLi(s[i][1],s[r][1],o),a]} + const a=(n-i[r])/Math.max(1e-9,i[o]-i[r]),c=Math.atan2(Math.sin(h[o]-h[r]),Math.cos(h[o]-h[r])); + return[FDi(t[r][0],t[o][0],a),FDi(t[r][1],t[o][1],a),h[r]+c*a]}
- function wLi(t,i,s,e=rLi.SPEED){ + function zDi(t,i,s,e=DDi.SPEED,n={ + } + ){
- d:t*r,w:i*o*s,depth:h(),L:10+4*h(),ph:h()*oLi,p1:h()*oLi,p2:h()*oLi,f1:.6+.5*h(),f2:.9+.6*h(),orbR:(10+36*Math.sqrt(h()))*c,orbA:h()*oLi,orbW:1.55*(.85+.3*h()),br:h()*oLi,sc:h()*oLi,flashAt:.25*h()} + d:t*o,w:i*a*s,depth:r(),L:10+4*r(),ph:r()*GDi,p1:r()*GDi,p2:r()*GDi,f1:.6+.5*r(),f2:.9+.6*r(),orbR:(10+36*Math.sqrt(r()))*l,orbA:r()*GDi,orbW:1.55*(.85+.3*r()),br:r()*GDi,sc:r()*GDi,flashAt:.25*r(),r1:r(),r2:r(),r3:r(),pod:0}
+ const u={ + color:n.color??"deep",sizeK:n.sizeK??1} + ,d=cGi(h,c,o,a,r,s,u); + if(d)return d;
- mode:"swirl",fish:a,D:r,W:o,path:t,v:e,seed:s,swirl:f,dur:d+(i.len-l+.9*r+10)/rLi.SWIRL_OUT} + mode:"swirl",fish:c,D:o,W:a,path:t,v:e,seed:s,swirl:p,dur:f+(i.len-l+.9*o+10)/DDi.SWIRL_OUT,...u}
+ if("stream"!==h.mode&&"scatter"!==h.mode)throw new Error(`fishSchool: ${ + h.mode} + `);
- mode:n.mode,fish:a,D:r,W:o,path:l,v:e,seed:s,dur:(l.len+r)/e} + mode:h.mode,fish:c,D:o,W:a,path:f,v:e,seed:s,dur:(f.len+o)/e,...u}
+ function qDi(t,i,s=DDi.BOAT_R){ + const e=t.x-i.x,n=t.y-i.y,h=Math.hypot(e,n); + if(h>=2*s||h<1e-6)return t; + const r=s*(h/(h+24))*(1-h/(2*s))**2; + return{ + x:t.x+e/h*r,y:t.y+n/h*r} + }
+ if("stream"!==t.mode&&"swirl"!==t.mode&&"scatter"!==t.mode)return lGi(t,i,s,e);
- const n=t.fish[i],h=bLi(t,i,s,e),r=s>=.06,o=bLi(t,i,r?s-.06:s+.06,e),a=r?Math.atan2(h.y-o.y,h.x-o.x):Math.atan2(o.y-h.y,o.x-h.x),c=n.L*(1-.15*n.depth),l=oLi*aLi(.35+36/Math.max(10,.9*c),.65,2.2); + const n=t.fish[i],h=ZDi(t,i,s,e),r=s>=.06,o=ZDi(t,i,r?s-.06:s+.06,e),a=r?Math.atan2(h.y-o.y,h.x-o.x):Math.atan2(o.y-h.y,o.x-h.x),c=uGi(t,i,s),l=n.L*(1-.15*n.depth)*(t.sizeK??1)*c.scale,u=GDi*BDi(.35+36/Math.max(10,.9*l),.65,2.2);
- x:h.x,y:h.y,rot:a,L:c,alpha:(.36-.14*n.depth)*ALi(t,s),phase:n.ph+l*s,flash:MLi(t,i,s)} + x:h.x,y:h.y,rot:a,L:l,alpha:(.36-.14*n.depth)*sGi(t,s)*c.alpha,phase:n.ph+u*s,flash:Math.max(QDi(t,i,s),c.flash),lift:c.lift}
- Qt(pLi,"schoolPath"),Qt(gLi,"nearestS"),Qt(wLi,"makeFishSchool"),Qt(mLi,"flowAround"),Qt(vLi,"streamAt"),Qt(_Li,"scatterOffset"),Qt(MLi,"schoolFlash"),Qt(bLi,"schoolFishAt"),Qt(yLi,"swirlRipples"),Qt(ELi,"swirlGlints"),Qt(ALi,"schoolAlpha"),Qt(SLi,"schoolFishPose"),Qt(TLi,"toEdge"); + Qt(VDi,"schoolPath"),Qt(jDi,"polyPath"),Qt(KDi,"nearestS"),Qt(zDi,"makeFishSchool"),Qt(YDi,"flowAround"),Qt(qDi,"avoidBoat"),Qt(XDi,"streamAt"),Qt(JDi,"scatterOffset"),Qt(QDi,"schoolFlash"),Qt(ZDi,"schoolFishAt"),Qt(tGi,"swirlRipples"),Qt(iGi,"swirlGlints"),Qt(sGi,"schoolAlpha"),Qt(eGi,"schoolFishPose"),Qt(nGi,"toEdge");
- Qt(OLi,"pathInWater"),Qt(ILi,"planSchoolPath"),Qt(kLi,"planSwirl"); - const RLi=12,xLi=665137,PLi=Qt((t,i,s)=>{ + function cGi(t,i,s,e,n,h,r){ + const o=i.length; + switch(t.mode){ + case"ribbon":{ + const s=VDi(t.pts),e=DDi.RIBBON_V,n=DDi.RIBBON_GAP; + return i.forEach((t,i)=>{ + t.d=i*n,t.w=1} + ),{ + mode:"ribbon",fish:i,D:o*n,W:4,path:s,v:e,seed:h,dur:(s.len+o*n)/e,...r} + } + case"leap":{ + const n=VDi(t.pts),o=DDi.SPEED+5,a=(n.len+s)/o,c=i.map(t=>t.r1<DDi.LEAP_P?1.5+t.r2*Math.max(.5,a-4):-1); + return{ + mode:"leap",fish:i,D:s,W:e,path:n,v:o,seed:h,dur:a,jumps:c,...r} + } + case"dart":{ + const s=gGi(t.pts),e=DDi.DART_V; + i.forEach(t=>{ + const i=46*t.r1; + t.d=i,t.w=(t.r2<.5?-1:1)*i*.55+4*(t.r3-.5)} + ); + const n=t.pts.slice(1,-1).map(t=>KDi(s,t)); + return{ + mode:"dart",fish:i,D:46,W:26,path:s,v:e,seed:h,dur:(s.len+60)/e,turns:n,...r} + } + case"pods":{ + const a=t.routes.length,c=Math.max(6,Math.floor(o/a)),l=18+.7*c,u=t.routes.map((t,i)=>{ + const s=VDi(t),e=48+32*n(),h=i*(.6+.8*n()); + return{ + path:s,v:e,t0:h,D:l,end:h+(s.len+l)/e} + } + ); + return i.forEach((t,i)=>{ + t.pod=Math.min(a-1,Math.floor(i/c)),t.d*=.45,t.w*=.55} + ),{ + mode:"pods",fish:i,D:s,W:e,path:u[0].path,v:u[0].v,seed:h,dur:Math.max(...u.map(t=>t.end)),pods:u,...r} + } + case"ball":{ + const n=DDi.BALL_IN+DDi.BALL_HOLD; + return{ + mode:"ball",fish:i,D:s,W:e,path:VDi([t.from[0],t.center]),v:DDi.SPEED,seed:h,dur:n+DDi.BALL_OUT+.4,ball:{ + C:t.center,from:t.from,tBurst:n} + ,...r} + } + case"predator":{ + const n=VDi(t.pts),o=VDi(t.pred),a=DDi.SPEED+2,c=t.pred[1],l=(KDi(n,c)+s/2)/a,u=Math.max(.5,l-KDi(o,c)/DDi.PRED_V),d={ + mode:"predator",fish:i,D:s,W:e,path:n,v:a,seed:h,dur:Math.max((n.len+s)/a,u+o.len/DDi.PRED_V),pred:{ + path:o,p0:u,dodge:[]} + ,...r} + ; + return d.pred.dodge=i.map((t,i)=>{ + let s=0,e=1/0,n=0,h=0,r=1; + for(let a=0; + a<d.dur; + a+=.1){ + const t=dGi(d,a); + if(!t)continue; + const o=XDi(d,i,a),c=o.x-t.x,l=o.y-t.y,u=Math.hypot(c,l); + u<e&&(e=u,s=a,n=-Math.sin(t.rot),h=Math.cos(t.rot),r=c*n+l*h<0?-1:1)} + const o=r*Math.max(0,DDi.PRED_R-e)*.85; + return{ + t:s,x:n*o,y:h*o} + } + ),d} + default:return null} + } + function lGi(t,i,s,e){ + var n; + const h=t.fish[i]; + switch(t.mode){ + case"ribbon":{ + const i=t.v*s-h.d,[n,r,o]=t.path.at(i),a=3*Math.sin(i/18+h.p1),c={ + x:n-Math.sin(o)*a,y:r+Math.cos(o)*a} + ; + return e?qDi(c,e):c} + case"dart":{ + const[i,n,r]=t.path.at(t.v*s-h.d),o={ + x:i-Math.sin(r)*h.w,y:n+Math.cos(r)*h.w} + ; + return e?qDi(o,e):o} + case"pods":{ + const i=t.pods[h.pod],n=4*Math.sin(h.f1*s+h.p1),[r,o,a]=i.path.at(i.v*(s-i.t0)-(h.d+n)),c=h.w+2.5*Math.sin(h.f2*s+h.p2),l={ + x:r-Math.sin(a)*c,y:o+Math.cos(a)*c} + ; + return e?qDi(l,e):l} + case"ball":{ + const e=t.ball,n=e.from[i%e.from.length],r=Math.atan2(e.C.y-n.y,e.C.x-n.x),o=100*(h.r1-.5),a=80*h.r2,c=n.x-Math.cos(r)*a-Math.sin(r)*o,l=n.y-Math.sin(r)*a+Math.cos(r)*o,u=e.C.x+30*Math.sin(.35*s),d=e.C.y+18*Math.sin(.5*s),f=6+30*Math.sqrt(h.r3),p=1+.15*Math.sin(2.2*s),w=h.orbA+1.6*(1.3+.8*h.r1)*s,g=u+Math.cos(w)*f*p,m=d+Math.sin(w)*f*p*.9,v=UDi(0,DDi.BALL_IN+.01*f,s),_=UDi(e.tBurst,e.tBurst+DDi.BALL_OUT,s); + return{ + x:FDi(c,g,v)+60*Math.cos(h.br)*_,y:FDi(l,m,v)+60*Math.sin(h.br)*_} + } + case"predator":{ + const h=XDi(t,i,s); + let r=e?qDi(h,e):h; + const o=null==(n=t.pred)?void 0:n.dodge[i]; + if(o){ + const t=UDi(o.t-.9,o.t-.3,s)*(1-UDi(o.t+.4,o.t+1.2,s)); + r={ + x:r.x+o.x*t,y:r.y+o.y*t} + } + return r} + default:{ + const n=XDi(t,i,s); + return e?qDi(n,e):n} + } + } + function uGi(t,i,s){ + const e=t.fish[i]; + if("leap"===t.mode&&t.jumps){ + const e=t.jumps[i]; + if(e>0&&s>e&&s<e+DDi.LEAP_S){ + const t=Math.sin(Math.PI*(s-e)/DDi.LEAP_S); + return{ + lift:DDi.LEAP_H*t,scale:1+.5*t,alpha:2.2,flash:.4+.6*t} + } + } + if("ball"===t.mode&&t.ball){ + const i=t.ball.tBurst,e=UDi(i,i+DDi.BALL_OUT,s),n=(s-(i-.6))/1; + return{ + lift:0,scale:1-.4*e,alpha:1-.9*e,flash:n>0&&n<1?Math.sin(Math.PI*n):0} + } + if("dart"===t.mode&&t.turns){ + const i=t.v*s-e.d; + let n=0; + for(const s of t.turns){ + const t=i-s; + t>0&&t<30&&(n=Math.max(n,1-t/30))} + return{ + lift:0,scale:1,alpha:1,flash:n} + } + if("pods"===t.mode&&t.pods){ + const i=t.pods[e.pod]; + return{ + lift:0,scale:1,alpha:UDi(i.t0,i.t0+1,s)*(1-UDi(i.end-1.6,i.end,s)),flash:0} + } + return{ + lift:0,scale:1,alpha:1,flash:0} + } + function dGi(t,i){ + const s=t.pred; + if(!s)return null; + const e=DDi.PRED_V*(i-s.p0); + if(e<=0||e>=s.path.len)return null; + const[n,h,r]=s.path.at(e); + return{ + x:n,y:h,rot:r,L:DDi.PRED_L*(t.sizeK??1),alpha:.5*UDi(0,60,e)*(1-UDi(s.path.len-60,s.path.len,e)),phase:6*i} + } + function fGi(t,i,s){ + if(!t.jumps)return[]; + const e=[]; + return t.jumps.forEach((n,h)=>{ + if(!(n<0))for(const r of[n,n+DDi.LEAP_S])r>i&&r<=s&&e.push(ZDi(t,h,r,null))} + ),e} + Qt(rGi,"pathInWater"),Qt(oGi,"planSchoolPath"),Qt(aGi,"planSwirl"),Qt(cGi,"makeExtra"),Qt(lGi,"extraFishAt"),Qt(uGi,"extraLook"),Qt(dGi,"schoolPredator"),Qt(fGi,"leapSplashes"); + const pGi=Qt((t,i,s)=>[t*Math.cos(s)-i*Math.sin(s),t*Math.sin(s)+i*Math.cos(s)],"rot"); + function wGi(t,i,s,e){ + for(let n=0; + n<16; + n++){ + const n=e()*GDi,h=Math.cos(n),r=Math.sin(n),o=-r,a=h,c=nGi(t,i,-h,-r)+DDi.MARGIN,l=nGi(t,i,h,r)+DDi.MARGIN,u=(e()<.5?-1:1)*(50+80*e()),d=(e()<.5?-1:1)*(60+40*e()),f=-Math.sign(d)*(60+40*e()),p={ + x:i.x-h*c,y:i.y-r*c} + ,w={ + x:i.x+h*l,y:i.y+r*l} + ,g={ + x:i.x+o*u,y:i.y+a*u} + ,m=[p,{ + x:FDi(p.x,g.x,.5)+o*d,y:FDi(p.y,g.y,.5)+a*d} + ,g,{ + x:FDi(g.x,w.x,.5)+o*f,y:FDi(g.y,w.y,.5)+a*f} + ,w]; + if(rGi(VDi(m),t,s,16))return m} + return null} + function gGi(t){ + const i=DDi.DART_ROUND,s=[],e=Qt((t,i)=>{ + const e=Math.hypot(i.x-t.x,i.y-t.y),n=Math.max(1,Math.ceil(e/6)); + for(let h=0; + h<n; + h++)s.push([FDi(t.x,i.x,h/n),FDi(t.y,i.y,h/n)])} + ,"line"); + let n=t[0]; + for(let h=1; + h<t.length-1; + h++){ + const r=t[h-1],o=t[h],a=t[h+1],c=Math.hypot(o.x-r.x,o.y-r.y)||1,l=Math.hypot(a.x-o.x,a.y-o.y)||1,u={ + x:o.x-(o.x-r.x)/c*i,y:o.y-(o.y-r.y)/c*i} + ,d={ + x:o.x+(a.x-o.x)/l*i,y:o.y+(a.y-o.y)/l*i} + ; + e(n,u); + for(let t=0; + t<24; + t++){ + const i=t/24,e=1-i; + s.push([e*e*u.x+2*e*i*o.x+i*i*d.x,e*e*u.y+2*e*i*o.y+i*i*d.y])} + n=d} + return e(n,t[t.length-1]),s.push([t[t.length-1].x,t[t.length-1].y]),jDi(s)} + function mGi(t,i,s,e){ + const n=hGi({ + x:t.x+30,y:t.y+30,w:t.w-60,h:t.h-60} + ); + for(let h=0; + h<24; + h++){ + const h=e()*GDi,r=Math.cos(h),o=Math.sin(h),a=-o,c=r,l=nGi(t,i,-r,-o)+DDi.MARGIN,u=(e()<.5?-1:1)*(60+50*e()),d=40+60*e(),f={ + x:i.x-r*l,y:i.y-o*l} + ,p={ + x:i.x+a*u-r*d,y:i.y+c*u-o*d} + ,w=(e()<.5?-1:1)*(1.1+.4*e()),[g,m]=pGi(r,o,w),v=110+70*e(),_={ + x:p.x+g*v,y:p.y+m*v} + ,[M,b]=pGi(g,m,-Math.sign(w)*(1.6+.4*e())),y={ + x:_.x+M*(nGi(t,_,M,b)+DDi.MARGIN),y:_.y+b*(nGi(t,_,M,b)+DDi.MARGIN)} + ; + if(!n(p.x,p.y)||!n(_.x,_.y))continue; + const E=[f,p,_,y]; + if(rGi(gGi(E),t,s,20))return E} + return null} + function vGi(t,i,s,e){ + const n=hGi({ + x:t.x+60,y:t.y+60,w:t.w-120,h:t.h-120} + ); + for(let h=0; + h<40; + h++){ + const t=e()*GDi,h=DDi.SWIRL_DIST[0]+e()*(DDi.SWIRL_DIST[1]-DDi.SWIRL_DIST[0]),r={ + x:i.x+Math.cos(t)*h,y:i.y+Math.sin(t)*h} + ; + if(!n(r.x,r.y)||!s(r.x,r.y))continue; + let o=!0; + for(let i=0; + i<12&&o; + i++)o=s(r.x+60*Math.cos(i*GDi/12),r.y+60*Math.sin(i*GDi/12)); + if(o)return r} + return null} + function _Gi(t,i,s,e,n){ + const h=vGi(t,i,e,n); + if(!h)return null; + const r=[],o=[],a=n()*GDi; + for(let c=0; + c<24&&r.length<3; + c++){ + const i=a+c*GDi/24*7+.3*(n()-.5),e=Math.cos(i),l=Math.sin(i); + if(o.some(t=>Math.abs(Math.atan2(Math.sin(i-t),Math.cos(i-t)))<1.2))continue; + const u=nGi(t,h,e,l)+DDi.MARGIN; + let d=0; + for(; + d+8<=u&&s(h.x+e*(d+8),h.y+l*(d+8)); + )d+=8; + d<DDi.BALL_RUN||(o.push(i),r.push({ + x:h.x+e*d,y:h.y+l*d} + ))} + return r.length>=2?{ + center:h,from:r} + :null} + function MGi(t,i,s,e){ + for(let n=0; + n<14; + n++){ + const n=oGi(t,i,s,e); + if(!n)return null; + const h=VDi(n),[r,o,a]=h.at(h.len*(.3+.4*e())),c={ + x:r,y:o} + ; + if(Math.hypot(r-i.x,o-i.y)<70)continue; + const l=a+(e()<.5?-1:1)*(.55+1.25*e()),u=Math.cos(l),d=Math.sin(l),f=Qt((i,e)=>{ + const n=nGi(t,c,i,e)+DDi.MARGIN; + let h=0; + for(; + h+8<=n&&s(c.x+i*(h+8),c.y+e*(h+8)); + )h+=8; + return h} + ,"reach"),p=f(-u,-d),w=f(u,d); + if(p<DDi.PRED_RUN||w<DDi.PRED_RUN)continue; + const g={ + x:c.x-u*p,y:c.y-d*p} + ,m={ + x:c.x+u*w,y:c.y+d*w} + ; + return{ + pts:n,pred:[g,c,m]} + } + return null} + function bGi(t,i,s,e){ + const n=[]; + for(let h=0; + h<12&&n.length<4; + h++){ + const h=oGi(t,i,s,e); + h&&n.push(h)} + return n.length>=3?n:null} + function yGi(t,i,s,e,n,h=e){ + switch(t){ + case"swirl":{ + const t=aGi(i,s,e,n,h); + return t?{ + mode:"swirl",...t} + :null} + case"scatter":{ + const t=oGi(i,s,e,n,!0); + return t?{ + mode:"scatter",pts:t,boat:s} + :null} + case"ribbon":{ + const t=wGi(i,s,e,n); + return t?{ + mode:"ribbon",pts:t} + :null} + case"dart":{ + const t=mGi(i,s,e,n); + return t?{ + mode:"dart",pts:t} + :null} + case"leap":{ + const t=oGi(i,s,e,n); + return t?{ + mode:"leap",pts:t} + :null} + case"pods":{ + const t=bGi(i,s,e,n); + return t?{ + mode:"pods",routes:t} + :null} + case"ball":{ + const t=_Gi(i,s,e,h,n); + return t?{ + mode:"ball",...t} + :null} + case"predator":{ + const t=MGi(i,s,e,n); + return t?{ + mode:"predator",...t} + :null} + default:{ + const t=oGi(i,s,e,n); + return t?{ + mode:"stream",pts:t} + :null} + } + } + function EGi(t){ + let i=2166136261; + for(let s=0; + s<t.length; + s++)i^=t.charCodeAt(s),i=Math.imul(i,16777619); + return i>>>0} + function AGi(t,i,s,e,n,h,r,o=h){ + const a=i.filter(i=>i!==t&&"stream"!==i&&i!==s); + for(let l=a.length-1; + l>0; + l--){ + const t=Math.floor(r()*(l+1)); + [a[l],a[t]]=[a[t],a[l]]} + const c=[t,...a]; + s&&s!==t&&"stream"!==s&&i.includes(s)&&c.push(s),c.includes("stream")||c.push("stream"); + for(const l of c){ + const t=yGi(l,e,n,h,r,o); + if(t)return t} + return null} + function SGi(t){ + const i=$Di(EGi(t)),s=LDi.filter(t=>"stream"!==t); + for(let e=s.length-1; + e>0; + e--){ + const t=Math.floor(i()*(e+1)); + [s[e],s[t]]=[s[t],s[e]]} + return["stream",...s.slice(0,3)]} + function TGi(t,i,s){ + const e=t.flatMap(t=>"stream"===t?[t,t]:[t]).filter(t=>t!==i),n=e.length?e:t; + return n[Math.floor(s()*n.length)]} + Qt(wGi,"planCurvy"),Qt(gGi,"dartPath"),Qt(mGi,"planDart"),Qt(vGi,"pickOpenCenter"),Qt(_Gi,"planBall"),Qt(MGi,"planPredator"),Qt(bGi,"planPods"),Qt(yGi,"planSchool"),Qt(EGi,"hashText"),Qt(AGi,"planSchoolFor"),Qt(SGi,"schoolModesFor"),Qt(TGi,"pickSchoolMode"); + const CGi=Qt(t=>{ + const i=t(); + return i<.7?"deep":i<.92?"silver":"gold"} + ,"schoolColor"); + function OGi(t,i,s){ + return"ribbon"===t?40+Math.round(20*s()):"pods"===t?48+Math.round(16*s()):"dart"===t?50+Math.round(20*s()):"ball"===t?Math.min(140,Math.round(1.2*HDi(i,s))):HDi(i,s)} + Qt(OGi,"schoolCountFor"); + const IGi=12,kGi=665137,xGi=14283512,RGi=Qt((t,i,s)=>{
- super(),Zt(this,"school",null),Zt(this,"t",0),Zt(this,"sprites",[]),Zt(this,"glints",new ip),this.eventMode="none",this.glints.eventMode="none",this.addChild(this.glints)} + super(),Zt(this,"school",null),Zt(this,"t",0),Zt(this,"sprites",[]),Zt(this,"glints",new ip),Zt(this,"pred",new Ye(as.EMPTY)),this.eventMode="none",this.glints.eventMode="none",this.pred.anchor.set(.5),this.pred.eventMode="none",this.pred.visible=!1,this.pred.tint=399906,this.addChild(this.pred,this.glints)}
- start(t,i,s){ - this.school=wLi(t,i,s),this.t=0; + start(t,i,s,e={ + } + ){ + this.school=zDi(t,i,s,void 0,e),this.t=0;
- this.glints.clear()} + this.pred.visible=!1,this.glints.clear()}
- if(n)for(const t of yLi(h,r,this.t))n(t.x,t.y); + if(n)for(const t of[...tGi(h,r,this.t),...fGi(h,r,this.t)])n(t.x,t.y);
- const o=DLi(); + const o=LGi(),a=dGi(h,this.t),c=a?a.alpha*e(a.x,a.y):0; + this.pred.visible=!!a&&c>.01,a&&this.pred.visible&&(this.pred.texture=o[(Math.floor(a.phase/(2*Math.PI)*IGi)%IGi+IGi)%IGi],this.pred.position.set(a.x,a.y),this.pred.rotation=a.rot,this.pred.scale.set(a.L/32),this.pred.alpha=c); + const l="silver"===h.color?.55:0;
- n.texture=o[a],n.position.set(i.x,i.y),n.rotation=i.rot,n.scale.set(i.L/32),n.alpha=Math.min(1,r*(1+1.3*i.flash)),n.tint=i.flash>0?PLi(xLi,14283512,i.flash):xLi} + n.texture=o[a],n.position.set(i.x,i.y-i.lift),n.rotation=i.rot,n.scale.set(i.L/32),i.lift>.5&&this.glints.ellipse(i.x,i.y,.45*i.L,.18*i.L).fill({ + color:401450,alpha:.18*Math.min(1,r)} + ); + const c="gold"===h.color&&t%5==0,u=c?.75+.25*Math.sin(5*this.t+t):0,d=c?16766836:l?RGi(kGi,xGi,l):kGi; + n.alpha=Math.min(1,r*(1+1.3*i.flash)*(c?2.2*u:l?1.5:1)),n.tint=i.flash>0?RGi(d,xGi,i.flash):d}
FishingSilhouetteRig 1 hunks, 385 statements
+ const eBi=["croc","jelly","hammer","narwhal","squid","angler","octopus","sperm","serpent"],nBi=Qt(t=>eBi.includes(t),"isSilhouetteKind"),hBi=2*Math.PI,rBi=Qt((t,i,s)=>t+(i-t)*s,"lerp"),oBi=Qt(t=>Math.max(0,Math.min(1,t)),"clamp01"); + function aBi(t,i){ + for(let s=1; + s<t.length; + s++)if(i<=t[s][0])return rBi(t[s-1][1],t[s][1],(i-t[s-1][0])/(t[s][0]-t[s-1][0])); + return t[t.length-1][1]} + function cBi(t,i,s,e,n,h=44){ + const r=[]; + for(let o=0; + o<=h; + o++){ + const a=o/h; + r.push({ + x:(a-.5)*t,y:s*t*Math.sin(hBi*e*(1-a)-i)*Math.pow(1-a,n)} + )} + return r} + function lBi(t,i){ + const s=oBi(i)*(t.length-1),e=Math.min(t.length-2,Math.floor(s)),n=s-e,h=t[e],r=t[e+1]; + return{ + x:h.x+(r.x-h.x)*n,y:h.y+(r.y-h.y)*n,a:Math.atan2(r.y-h.y,r.x-h.x)} + } + function uBi(t){ + const i=t.length,s=[]; + let e=(t[i-1][0]+t[0][0])/2,n=(t[i-1][1]+t[0][1])/2; + for(let h=0; + h<i; + h++){ + const r=t[h],o=t[(h+1)%i],a=(r[0]+o[0])/2,c=(r[1]+o[1])/2; + for(const t of[1/3,2/3,1]){ + const i=1-t; + s.push(i*i*e+2*i*t*r[0]+t*t*a,i*i*n+2*i*t*r[1]+t*t*c)} + e=a,n=c} + return s} + function dBi(t,i,s={ + } + ){ + const e=t.length,n=[],h=[],r=s.ws??1; + for(let d=0; + d<e; + d++){ + const s=t[d],o=t[Math.max(0,d-1)],a=t[Math.min(e-1,d+1)],c=Math.atan2(a.y-o.y,a.x-o.x),l=aBi(i,d/(e-1))*r; + n.push([s.x-Math.sin(c)*l,s.y+Math.cos(c)*l]),h.push([s.x+Math.sin(c)*l,s.y-Math.cos(c)*l])} + const o=t[e-1],a=t[e-2],c=Math.atan2(o.y-a.y,o.x-a.x),l=aBi(i,1)*r,u=s.square?[[n[e-1][0]+Math.cos(c)*l*.25,n[e-1][1]+Math.sin(c)*l*.25],[h[e-1][0]+Math.cos(c)*l*.25,h[e-1][1]+Math.sin(c)*l*.25]]:[[o.x+Math.cos(c)*l*(s.nose??.9),o.y+Math.sin(c)*l*(s.nose??.9)]]; + return uBi([...n,...u,...h.reverse()])} + function fBi(t,i,s){ + const e=t.length,n=[],h=[]; + for(let o=0; + o<e; + o++){ + const r=t[o],a=t[Math.max(0,o-1)],c=t[Math.min(e-1,o+1)],l=Math.atan2(c.y-a.y,c.x-a.x),u=rBi(i,s,o/(e-1)); + n.push([r.x-Math.sin(l)*u,r.y+Math.cos(l)*u]),h.push([r.x+Math.sin(l)*u,r.y-Math.cos(l)*u])} + const r=t[e-1]; + return uBi([...n,[r.x,r.y],...h.reverse()])} + Qt(aBi,"prof"),Qt(cBi,"spine"),Qt(lBi,"at"),Qt(uBi,"smooth$1"),Qt(dBi,"body"),Qt(fBi,"ribbon"); + const pBi=Qt(t=>uBi(t),"blob"),wBi=Qt((t,i,s)=>{ + const e=i*(.55+.45*Math.abs(Math.sin(s))); + return uBi([[6,.9*e],[.55*-t,e],[-t,.35*e],[-t-2,0],[-t,.35*-e],[.55*-t,-e],[6,.9*-e]])} + ,"finEdge"),gBi=Qt((t,i,s)=>[...t,...i,...s],"tri"); + function mBi(t,i){ + const s=Math.cos(t.a),e=Math.sin(t.a),n=new Array(i.length); + for(let h=0; + h<i.length; + h+=2)n[h]=t.x+i[h]*s-i[h+1]*e,n[h+1]=t.y+i[h]*e+i[h+1]*s; + return n} + Qt(mBi,"place"); + const vBi=Qt((t,i,s)=>t.map((t,e)=>t+(e%2?s:i)),"shift"); + function _Bi(t,i,s,e,n,h,r,o,a=0){ + const c=[]; + for(let l=0; + l<=n; + l++){ + const u=l/n,d=s+a*u*u,f=e*u,p=h*Math.sin(r*u*hBi-o)*u; + c.push({ + x:t+Math.cos(d)*f-Math.sin(d)*p,y:i+Math.sin(d)*f+Math.cos(d)*p} + )} + return c} + function MBi(t,i,s,e){ + const n=[]; + for(let h=0; + h<=e; + h++){ + const r=h/e,o=1-r; + n.push({ + x:o*o*t.x+2*o*r*i.x+r*r*s.x,y:o*o*t.y+2*o*r*i.y+r*r*s.y} + )} + return n} + Qt(_Bi,"wavy"),Qt(MBi,"bezier"); + const bBi=[[0,2],[.1,6],[.3,13],[.6,17],[.85,16],[.9,15],[.93,21],[.97,25],[1,12]]; + function yBi(t,i,s=1){ + const e=[]; + for(const r of[.3,.55,.75]){ + const i=lBi(t,r),n=aBi(bBi,r)*s; + e.push(mBi(i,gBi([5,n-1],[-10,n+12*s],[-6,n-1])),mBi(i,gBi([5,1-n],[-10,-n-12*s],[-6,1-n])))} + const n=lBi(t,.9),h=aBi(bBi,.9)*s; + for(let r=0; + r<4; + r++){ + const t=1+.08*Math.sin(3*i+r); + e.push(mBi(n,gBi([8-6*r,h-2],[-14-7*r,(h+(26-4*r)*t)*s],[-2-6*r,h-2])),mBi(n,gBi([8-6*r,2-h],[-14-7*r,-(h+(26-4*r)*t)*s],[-2-6*r,2-h])))} + return e.push(dBi(t,bBi,{ + ws:s,nose:1.1} + )),e} + function EBi(t){ + const i=cBi(170,1.4*t,.045,.9,2.2),s=[[0,2],[.08,3],[.25,8.5],[.45,14],[.6,15],[.76,11],[.88,6.5],[1,5]],e=[]; + e.push(mBi(lBi(i,0),wBi(20,2.6,1.4*t))); + for(const n of[1,-1]){ + const t=lBi(i,.62),h=aBi(s,.62); + e.push(mBi(t,gBi([6,n*(h-2)],[-18,n*(h+22)],[-8,n*(h-2)])))} + return e.push(mBi(lBi(i,.95),pBi([[-6,-31],[4,-33],[7,-29],[6,29],[4,33],[-6,31],[-1,0]]))),e.push(dBi(i,s,{ + nose:.6} + )),e} + function ABi(t,i,s=44){ + const e=i+.18*Math.sin(i),n=Math.sin(e)**2,h=.008*Math.sin(e-.6),r=[]; + for(let o=0; + o<=s; + o++){ + const i=o/s,e=Math.max(0,(.3-i)/.3); + r.push({ + x:(i-.5)*t+e*e*t*.012*n,y:h*t*Math.pow(1-i,3)} + )} + return{ + pts:r,lift:n} + } + Qt(yBi,"serpentOn"),Qt(EBi,"hammerOne"),Qt(ABi,"whaleSpine"); + const SBi=Qt((t,i)=>t.map(([t,s])=>[t*(1-.1*i),s]),"fluke"),TBi=Qt((t,i)=>{ + const s=lBi(t,1); + return{ + x:s.x+14+1.5*Math.sin(1.2*i),y:s.y+2*Math.sin(.9*i)} + } + ,"anglerOrb"),CBi=Qt(t=>cBi(260,.8*t,.03,.8,2.2),"anglerSpine"),OBi={ + croc(t){ + const i=[]; + for(let n=0; + n<=44; + n++){ + const s=n/44,e=Math.pow(oBi((.55-s)/.55),1.6); + i.push({ + x:230*(s-.5),y:17.25*Math.sin(.85*hBi*(1-s)-t)*e} + )} + const s=[[0,1.2],[.12,4],[.3,9],[.44,14],[.56,15.5],[.66,13],[.72,9.5],[.78,11.5],[.86,8.5],[.94,6],[1,4.5]],e=[]; + for(const[n,h,r,o]of[[.42,1,0,0],[.42,-1,Math.PI,0],[.64,1,Math.PI,1],[.64,-1,0,1]]){ + const a=lBi(i,n),c=aBi(s,n),l=.6*Math.sin(1.3*t+r),u=h,d=o?-7:-5,f=c+(o?3.2:3.8),p=(o?-19:-21)+l,w=c+(o?2.2:1.6)+.3*l; + e.push(mBi(a,fBi([{ + x:1,y:u*(c-3)} + ,{ + x:d,y:u*f} + ,{ + x:p,y:u*w} + ],3.6,2.1))); + for(const t of[-1,1])e.push(mBi(a,fBi([{ + x:p+1,y:u*w} + ,{ + x:p-4.5,y:u*(w+1.6*t)} + ],1.5,.9)))} + for(let n=.07; + n<.42; + n+=.06){ + const t=lBi(i,n),h=aBi(s,n); + e.push(mBi(t,gBi([-2,h-.8],[0,h+2.2],[2,h-.8])),mBi(t,gBi([-2,.8-h],[0,-h-2.2],[2,.8-h])))} + return e.push(dBi(i,s,{ + nose:.7} + )),e} + ,jelly(t){ + const i=.5+.5*Math.sin(1.3*t),s=44*(1-.09*i),e=[]; + for(let h=0; + h<5; + h++)e.push(fBi(_Bi(50-.55*s,15*(h-2)*(1-.15*i),Math.PI+.08*(h-2),150-14*Math.abs(h-2),18,10,1.3,2*t+1.1*h),5.5,1.4)); + for(let h=0; + h<4; + h++)e.push(fBi(_Bi(50-.2*s,9*(h-1.5),Math.PI+.25*(h-1.5),78,12,7,1.6,2.4*t+h),8,2.5)); + const n=[]; + for(let h=0; + h<40; + h++){ + const t=h/40*hBi,i=s*(1+.06*Math.cos(10*t))*(t>.6*Math.PI&&t<1.4*Math.PI?.96:1); + n.push([50+Math.cos(t)*i*1.05,Math.sin(t)*i])} + return e.push(pBi(n)),e} + ,hammer(t){ + const i=[]; + for(const[s,e,n]of[[-80,-46,1.3],[-80,46,2.6],[0,0,0]])for(const h of EBi(t+n))i.push(vBi(h,s+40,e)); + return i} + ,narwhal(t){ + const{ + pts:i,lift:s} + =ABi(380,t),e=[[0,3],[.06,6],[.2,15],[.4,31],[.6,39],[.8,37],[.92,29],[.98,19],[1,11]],n=[]; + n.push(mBi(lBi(i,0),pBi(SBi([[10,0],[2,-22],[-20,-46],[-12,-18],[-14,0],[-12,18],[-20,46],[2,22]],s)))); + for(const h of[1,-1]){ + const t=lBi(i,.78),s=aBi(e,.78); + n.push(mBi(t,pBi([[8,h*(s-4)],[-4,h*(s+18)],[-22,h*(s+24)],[-12,h*(s+4)]])))} + return n.push(dBi(i,e,{ + nose:.7} + )),n.push(mBi(lBi(i,1),[4,-5,134,-1.4,136,0,134,1.4,4,5])),n} + ,squid(t){ + const i=[],s=cBi(240,.6*t,.012,.5,1,24).map(t=>({ + x:t.x+130,y:t.y} + )); + for(const n of[1,-1])i.push(pBi([[250,0],[222,30*n],[186,64*n],[170,50*n],[176,18*n]])); + for(let n=0; + n<8; + n++)i.push(fBi(_Bi(6,4*(n-3.5),Math.PI+.11*(n-3.5),128+n%3*10,14,8,1.2,2*t+.8*n,.05*(n-3.5)),7.5,1.6)); + for(const n of[1,-1]){ + const s=_Bi(6,6*n,Math.PI+.05*n,270,22,10,1,1.6*t+(n>0?0:1.7)),e=s[s.length-1],h=s[s.length-3],r=Math.atan2(e.y-h.y,e.x-h.x); + i.push(fBi(s,3.6,2.4)); + const o=[]; + for(let t=0; + t<12; + t++){ + const i=t/12*hBi; + o.push([e.x+12*Math.cos(i)*Math.cos(r)-6.5*Math.sin(i)*Math.sin(r),e.y+12*Math.cos(i)*Math.sin(r)+6.5*Math.sin(i)*Math.cos(r)])} + i.push(pBi(o))} + const e=[]; + for(let n=0; + n<16; + n++){ + const t=n/16*hBi; + e.push([8+26*Math.cos(t),25*Math.sin(t)])} + return i.push(pBi(e)),i.push(dBi(s,[[0,24],[.15,31],[.45,33],[.75,24],[.92,12],[1,5]],{ + nose:.8} + )),i} + ,angler(t){ + const i=CBi(t),s=[[0,4],[.1,6],[.22,22],[.4,56],[.6,70],[.78,66],[.9,57],[.97,47],[1,42]],e=[]; + e.push(mBi(lBi(i,0),wBi(28,4,.8*t))); + for(const c of[1,-1]){ + const n=lBi(i,.55),h=aBi(s,.55); + e.push(mBi(n,pBi([[6,c*(h-6)],[-2,c*(h+16+3*Math.sin(2*t))],[-18,c*(h+12)],[-14,c*(h-6)]])))} + e.push(dBi(i,s,{ + square:!0} + )); + const n=lBi(i,1),h=[8,-40]; + for(let c=0; + c<=12; + c++)h.push(c%2?15:9,c*(80/12)-40); + h.push(8,40,0,40,0,-40),e.push(mBi(n,h)); + const r=TBi(i,t),o=lBi(i,.84); + e.push(fBi(MBi(o,{ + x:(o.x+r.x)/2,y:(o.y+r.y)/2} + ,r,6),1.7,1.4)); + const a=[]; + for(let c=0; + c<10; + c++){ + const t=c/10*hBi; + a.push([r.x+6*Math.cos(t),r.y+6*Math.sin(t)])} + return e.push(pBi(a)),e} + ,octopus(t,i){ + const s=i.arms??8,e=[],n=(t/hBi%1+1)%1,h=n<.35,r=Qt(t=>t*t*(3-2*t),"sm")(h?n/.35:(n-.35)/.65),o=h?rBi(.62,.14,r):rBi(.14,.62,r),a=h?1-.12*Math.sin(n/.35*Math.PI):1,c=[-1,-.72,-.44,-.15,.15,.44,.72,1]; + for(let f=0; + f<s; + f++){ + const i=c[f],s=Math.PI+i*o,n=196+(Math.abs(i)<.3?18:0)-10*Math.abs(i); + e.push(fBi(_Bi(-6,12*i,s,n,18,h?3:7,1.1,1.6*t+.7*f,.25*-i*o),13,2.2))} + const l=[[2,0]]; + for(let f=0; + f<=8; + f++){ + const t=f/4-1,i=Math.PI+t*o,s=62-8*Math.abs(t); + l.push([Math.cos(i)*s-6,12*t+Math.sin(i)*s])} + e.push(pBi(l)); + const u=[]; + for(let f=0; + f<18; + f++){ + const t=f/18*hBi; + u.push([6+30*Math.cos(t),Math.sin(t)*(34+4*o)])} + e.push(pBi(u)); + const d=[]; + for(let f=0; + f<28; + f++){ + const t=f/28*hBi,i=t<Math.PI/2||t>1.5*Math.PI?96:40; + d.push([44+Math.cos(t)*i*(.96+.04*a),46*Math.sin(t)*a])} + return e.push(pBi(d)),e} + ,sperm(t){ + const{ + pts:i,lift:s} + =ABi(620,.7*t),e=[[0,4],[.06,8],[.2,24],[.4,45],[.55,55],[.66,58],[.75,60],[.96,60],[1,57]],n=[]; + n.push(mBi(lBi(i,0),pBi(SBi([[12,0],[4,-32],[-30,-72],[-16,-26],[-22,0],[-16,26],[-30,72],[4,32]],s)))); + for(const h of[1,-1]){ + const t=lBi(i,.63),s=aBi(e,.63); + n.push(mBi(t,pBi([[8,h*(s-4)],[-6,h*(s+22)],[-28,h*(s+26)],[-16,h*(s+2)]])))} + return n.push(dBi(i,e,{ + square:!0} + )),n} + ,serpent(t){ + const i=[]; + for(let s=0; + s<=70; + s++){ + const e=s/70; + i.push({ + x:1e3*(e-.5),y:60*Math.sin(2.1*hBi*(1-e)-1.4*t)*(.35+.65*(1-e))} + )} + return yBi(i,t)} + } + ,IBi=new Map; + function kBi(t){ + let i=IBi.get(t); + if(!i){ + let s=1/0,e=-1/0,n=0; + for(const i of[0,1.6,3.2,4.8])for(const h of OBi[t](i,{ + } + ))for(let t=0; + t<h.length; + t+=2)s=Math.min(s,h[t]),e=Math.max(e,h[t]),n=Math.max(n,Math.abs(h[t+1])); + i={ + cx:(s+e)/2,len:e-s,half:n/(e-s)} + ,IBi.set(t,i)} + return i} + function xBi(t,i,s={ + } + ){ + const{ + cx:e,len:n} + =kBi(t),h=1/n; + return OBi[t](i,s).map(t=>t.map((t,i)=>i%2?t*h:(t-e)*h))} + function RBi(t,i){ + if("angler"!==t)return null; + const{ + cx:s,len:e} + =kBi(t),n=TBi(CBi(i),i); + return{ + x:(n.x-s)/e,y:n.y/e,r:6/e,flicker:.78+.22*Math.sin(2.3*i)*Math.sin(.7*i+1)} + } + Qt(kBi,"boxOf"),Qt(xBi,"silhouette"),Qt(RBi,"silhouetteLight"); + const PBi={ + narwhal:380,sperm:620} + ; + function NBi(t){ + const i=PBi[t]; + if(!i)return null; + const{ + cx:s,len:e} + =kBi(t); + return{ + nose:.5-(i/2-s)/e,tail:.5+(i/2+s)/e} + } + Qt(NBi,"silhouetteBodySpan"); + const LBi=Qt(t=>kBi(t).half,"silhouetteHalfWidth"),DBi=class extends Ve{ + constructor(t){ + super(),Zt(this,"shape",new ip),Zt(this,"fx",new Float32Array(97)),Zt(this,"fy",new Float32Array(97)),Zt(this,"fa",new Float32Array(97)),Zt(this,"posed",!1),Zt(this,"arms",8),Zt(this,"light",null),this.kind=t,this.eventMode="none",this.addChild(this.shape)} + pose(t,i,s,e,n){ + for(let o=0; + o<=96; + o++){ + const i=n((1.12*o/96-.06)*t); + this.fx[o]=i.x,this.fy[o]=i.y,this.fa[o]=i.a} + this.posed=!0; + const h=RBi(this.kind,i); + if(h){ + const i=this.at(.5-h.x),s=h.y*t; + this.light={ + x:i.x-Math.sin(i.a)*s,y:i.y+Math.cos(i.a)*s,r:h.r*t,flicker:h.flicker} + } + else this.light=null; + const r=this.shape; + r.clear(); + for(const o of xBi(this.kind,i,{ + arms:this.arms} + )){ + const i=new Array(o.length); + for(let s=0; + s<o.length; + s+=2){ + const e=this.at(.5-o[s]),n=o[s+1]*t; + i[s]=e.x-Math.sin(e.a)*n,i[s+1]=e.y+Math.cos(e.a)*n} + r.poly(i).fill(16777215)} + } + bodyPoint(t){ + if(!this.posed)return{ + x:0,y:0} + ; + const i=this.at(t); + return{ + x:i.x,y:i.y} + } + at(t){ + const i=Math.max(0,Math.min(96,(t- -.06)/1.12*96)),s=Math.min(95,Math.floor(i)),e=i-s; + let n=this.fa[s+1]-this.fa[s]; + return n>Math.PI?n-=2*Math.PI:n<-Math.PI&&(n+=2*Math.PI),{ + x:this.fx[s]+(this.fx[s+1]-this.fx[s])*e,y:this.fy[s]+(this.fy[s+1]-this.fy[s])*e,a:this.fa[s]+n*e} + } + } + ; + Qt(DBi,"FishingSilhouetteRig"); + let GBi=DBi;
FishingHuntUi 50 hunks, 359 statements
- super(),Zt(this,"chip",new Ve),Zt(this,"chipBg",new ip),Zt(this,"chipText",oki("",zIi,12)),Zt(this,"banner",new Ve),Zt(this,"bannerBg",new ip),Zt(this,"bannerBar",new ip),Zt(this,"bannerTitle",oki("",zIi,14)),Zt(this,"bannerSub",oki("",YIi,12,!1)),Zt(this,"throwBtn",new Ve),Zt(this,"throwBg",new ip),Zt(this,"throwText",oki("작살",KIi,15)),Zt(this,"throwSub",oki("",KIi,11,!1)),Zt(this,"gauge",new AGi),Zt(this,"gaugeOn",!1),Zt(this,"throwing",!1),Zt(this,"preparing",!1),Zt(this,"aimId",null),Zt(this,"aimStartPerf",0),Zt(this,"aimEndPerf",0),Zt(this,"gaugeFrame",0),Zt(this,"aimTarget",null),Zt(this,"generation",0),Zt(this,"contextKey",""),Zt(this,"statusRevision",0),Zt(this,"records",new Ve),Zt(this,"boss",null),Zt(this,"status",null),Zt(this,"statusAt",0),Zt(this,"spawnedW",null),Zt(this,"alertMap",""),Zt(this,"spawnTry",0),Zt(this,"spawnFails",0),Zt(this,"craft",new Ve),Zt(this,"crafting",!1),Zt(this,"warnedW",null),Zt(this,"lastSeenResult",-1),Zt(this,"chipKey",""),Zt(this,"bannerY",Qt(()=>166,"bannerY")),Zt(this,"tickGauge",Qt(()=>{ + super(),Zt(this,"chip",new Ve),Zt(this,"chipBg",new ip),Zt(this,"chipFace",new HFi(30,!1)),Zt(this,"chipText",Axi("",uxi,14)),Zt(this,"mapMarks"),Zt(this,"banner",new Ve),Zt(this,"bannerBg",new ip),Zt(this,"bannerBar",new ip),Zt(this,"bannerTitle",Axi("",uxi,14)),Zt(this,"bannerSub",Axi("",dxi,12,!1)),Zt(this,"throwBtn",new Ve),Zt(this,"throwGlow",new ip),Zt(this,"throwBg",new ip),Zt(this,"throwArt",new Ye(as.EMPTY)),Zt(this,"throwText",Axi("작살",lxi,15)),Zt(this,"throwSub",Axi("",uxi,13)),Zt(this,"throwSubBg",new ip),Zt(this,"throwBadge",new ip),Zt(this,"throwBadgeText",Axi("",uxi,12)),Zt(this,"throwKey",""),Zt(this,"gauge",new GFi),Zt(this,"gaugeOn",!1),Zt(this,"throwing",!1),Zt(this,"preparing",!1),Zt(this,"aimId",null),Zt(this,"aimStartPerf",0),Zt(this,"aimEndPerf",0),Zt(this,"gaugeFrame",0),Zt(this,"aimTarget",null),Zt(this,"generation",0),Zt(this,"contextKey",""),Zt(this,"statusRevision",0),Zt(this,"records",new Ve),Zt(this,"boss",null),Zt(this,"status",null),Zt(this,"statusAt",0),Zt(this,"sockOff",[]),Zt(this,"statusQuiet",!1),Zt(this,"spawnedW",null),Zt(this,"alertMap",""),Zt(this,"spawnTry",0),Zt(this,"spawnFails",0),Zt(this,"craft",new Ve),Zt(this,"crafting",!1),Zt(this,"warnedW",null),Zt(this,"lastSeenResult",-1),Zt(this,"chipKey",""),Zt(this,"killedW",null),Zt(this,"killedAt",0),Zt(this,"mine",{ + w:null,dmg:0,last:!1} + ),Zt(this,"bossSeenAt",0),Zt(this,"card",null),Zt(this,"cardFor",null),Zt(this,"bannerY",Qt(()=>166,"bannerY")),Zt(this,"tickGauge",Qt(()=>{
- this.scene.setAimMark(i,OGi[s],1-Math.min(1,Math.abs(this.gauge.value)/this.gauge.range.good),t),this.gaugeFrame=requestAnimationFrame(this.tickGauge)} - ,"tickGauge")),Zt(this,"recordsSig",""),Zt(this,"craftSig",""),this.scene=t,this.viewH=i,this.chip.addChild(this.chipBg,this.chipText),this.chip.eventMode="static",this.chip.cursor="pointer",this.chip.on("pointertap",t=>{ - t.stopPropagation(),this.openRecords()} + this.scene.setAimMark(i,QFi[s],1-Math.min(1,Math.abs(this.gauge.value-(this.gauge.range.center??0))/this.gauge.range.good),t),this.gaugeFrame=requestAnimationFrame(this.tickGauge)} + ,"tickGauge")),Zt(this,"recordsSig",""),Zt(this,"craftSig",""),this.scene=t,this.viewH=i; + const s=YFi.get(); + s.start(()=>Oki.getInstance().wsTicket()),this.sockOff=[s.onHunt(t=>this.onSocketHunt(t)),s.onRing(t=>this.onSocketRing(t))],this.chipBg.eventMode="none",this.chipFace.position.set(3,2),this.chip.addChild(this.chipBg,this.chipFace,this.chipText),this.chip.eventMode="static",this.chip.cursor="pointer",this.chip.on("pointertap",t=>{ + t.stopPropagation(),this.openSchedule()} + ); + const e=Qt(()=>Oki.getInstance(),"dm"); + this.mapMarks=new KFi(t,()=>e().realNow(),()=>{ + var t; + return null==(t=e().state)?void 0:t.huntDevAt}
- ),this.throwBtn.addChild(this.throwBg,this.throwText,this.throwSub),this.throwBtn.visible=!1,this.throwBtn.eventMode="static",this.throwBtn.cursor="pointer",this.throwBtn.on("pointertap",t=>{ - t.stopPropagation(),zOi(xIi.getInstance().harpoons())?this.openGauge():this.openCraft()} + ),this.throwArt.anchor.set(.5); + for(const n of[this.throwGlow,this.throwBg,this.throwArt,this.throwText,this.throwSub,this.throwSubBg,this.throwBadge,this.throwBadgeText])n.eventMode="none"; + this.throwBtn.addChild(this.throwGlow,this.throwBg,this.throwArt,this.throwText,this.throwSubBg,this.throwSub,this.throwBadge,this.throwBadgeText),this.throwBtn.visible=!1,this.throwBtn.eventMode="static",this.throwBtn.cursor="pointer",this.throwBtn.on("pointertap",t=>{ + t.stopPropagation(),this.live&&UIi(Oki.getInstance().harpoons())?this.openGauge():this.openCraft()}
- return this.gauge.visible||this.records.visible||this.craft.visible} + return this.gauge.visible||this.records.visible||this.craft.visible||VFi.isOpen}
- this.generation++,this.records.visible=this.craft.visible=!1,this.closeGauge(),this.scene.cancelHarpoon()} + this.generation++,this.records.visible=this.craft.visible=!1,VFi.close(),this.closeGauge(),this.scene.cancelHarpoon()}
- var t,i; + var t,i,s,e,n;
- const e=s.state,n=s.realNow(),h=BOi(e.spot,n,e.huntDevAt),r=`${ + const r=h.state,o=h.realNow(),a=TIi(r.spot,o,r.huntDevAt); + YFi.get().setWater(`w:${ + r.social?`s${ + r.social.serverId} + |`:""} + ${ + r.spot.race} + |${ + r.spot.zone} + `); + const c=`${
- const o=(null==(t=e.hunt)?void 0:t.xp)??0,a=VOi(o); - this.chip.visible=!!h||o>0||ZSi(e.spot)>=IOi.MIN_LEVEL; - const c=`${ - a.name} - |${ - !!h} - `; - if(c!==this.chipKey){ - this.chipKey=c,this.chipText.text=h?"사냥 중!":a.name,this.chipText.textColor=h?16757611:zIi; - const t=this.chipText.width+20; - this.chipBg.clear().roundRect(0,0,t,26,8).fill({ - color:h?3810324:ZIi,alpha:.78} - ),this.chipText.position.set(10,4),this.chip.hitArea=new Ui(0,0,t,26)} + const l=!!a&&this.killedW===a.w; + a&&!l&&(null==(t=this.status)?void 0:t.w)===a.w&&this.status.total>=(this.status.hp??a.hp)&&this.onKilled(a,!1),a&&this.killedW===a.w?this.renderChip(null,o,a.end+1):this.renderChip(a,o),this.mapMarks.sync();
- ! (1분 뒤)`)),h&&this.spawnedW!==h.w&&(this.spawnedW=h.w,this.status=null,this.spawnTry=0,this.spawnFails=0,jG("medium"),SGi(qG.SFX_STONE_BREAK,.5),vH.getInstance().showMessage(`${ + ! (1분 뒤)`)),a&&this.spawnedW!==a.w){ + this.spawnedW=a.w,this.bossSeenAt=performance.now(); + const t=null==(i=r.hunt)?void 0:i.pending; + this.mine={ + w:a.w,dmg:t&&t.w===a.w&&t.map===`${ + r.spot.race} + |${ + r.spot.zone} + `?t.my:0,last:!1} + ,this.status=null,this.spawnTry=0,this.spawnFails=0,KG("medium"),qFi(XG.SFX_STONE_BREAK,.5),_H.getInstance().showMessage(`${
- 나타났어요! 그림자가 가까이 지날 때 작살을 던져요`)),h&&!this.scene.hasBossShadow&&performance.now()>this.spawnTry&&(this.spawnTry=performance.now()+3e3,this.scene.bossGiant(h.kind)?this.spawnFails=0:this.spawnFails++),h&&!this.throwing&&performance.now()-this.statusAt>3e3){ + 나타났어요! 그림자가 가까이 지날 때 작살을 던져요`)} + const d=!!a&&((null==(s=this.status)?void 0:s.w)===a.w||performance.now()-this.bossSeenAt>4e3); + a&&this.killedW!==a.w&&d&&!this.scene.hasBossShadow&&performance.now()>this.spawnTry&&(this.spawnTry=performance.now()+3e3,this.scene.bossGiant(a.kind)?this.spawnFails=0:this.spawnFails++); + const f=YFi.get().live?3e4:this.statusQuiet?1e4:5e3; + if(a&&this.killedW!==a.w&&!this.throwing&&performance.now()-this.statusAt>f){
- const t=this.statusRevision,i=this.generation; + const t=this.statusRevision,i=this.generation,s=(null==(e=this.status)?void 0:e.w)===a.w?this.status.total:-1;
- i===this.generation&&t===this.statusRevision&&!this.throwing&&(null==s?void 0:s.boss)&&this.boss&&s.boss.w===this.boss.w&&(this.status={ - w:s.boss.w,total:s.boss.total,n:s.boss.n} + i===this.generation&&t===this.statusRevision&&!this.throwing&&(null==e?void 0:e.boss)&&this.boss&&e.boss.w===this.boss.w&&(this.statusQuiet=e.boss.total===s,this.status={ + w:e.boss.w,total:e.boss.total,n:e.boss.n,hp:e.boss.hp}
- renderBanner(){ + onSocketHunt(t){ + this.boss&&t.w===this.boss.w&&!this.throwing&&(this.statusRevision++,this.status={ + w:t.w,total:t.total,n:t.n,hp:t.hp} + ,this.statusAt=performance.now(),this.statusQuiet=!1)} + onSocketRing(t){ + var i; + const s=Oki.getInstance(),e=AG.userId; + if(s.ringsShown.has(t.id)||e&&t.id.endsWith(`:${ + e} + `))return; + const n=null==(i=s.posProvider)?void 0:i.call(s); + !n||Math.hypot(n.x-t.x,n.y-t.y)>380||s.boatHp().fixing||(s.markRingShown(t.id),this.scene.boatHit(NSi(t.power,RSi(s.state))))} + onKilled(t,i){ + var s; + if(this.killedW===t.w)return; + const e=Oki.getInstance(); + this.killedW=t.w,this.killedAt=performance.now(),i&&this.mine.w===t.w&&(this.mine.last=!0),this.gauge.visible&&!this.throwing&&this.closeGauge(); + const n=(null==(s=this.status)?void 0:s.w)===t.w?this.status.n:0; + if(!this.scene.hasBossShadow)return this.mine.w===t.w&&this.mine.dmg?this.showCard(t.w,t.name,t.kind,n):_H.getInstance().showMessage(`${ + XFi(t.name,"은","는")} + 벌써 잡혔어요 · 다음 회차에 만나요`),void e.syncSoon(); + KG("heavy"),qFi(XG.SFX_STONE_BREAK,.6); + const h=this.generation; + this.scene.defeatBoss(()=>{
- const s=this.boss,e=xIi.getInstance(); - if(this.banner.visible=!!s,!s)return; + this.destroyed||h!==this.generation||(qFi(XG.SFX_TRUMPET,.55),this.mine.w===t.w&&this.mine.dmg>0?this.showCard(t.w,t.name,t.kind,(null==(i=this.status)?void 0:i.w)===t.w?this.status.n:n):_H.getInstance().showMessage(`함께 ${ + (null==(s=this.status)?void 0:s.n)??n} + 명이 ${ + XFi(t.name,"을","를")} + 잡았어요!`),e.syncSoon())} + )} + showCard(t,i,s,e,n){ + var h; + this.closeCard(); + const r=JRi.BLEED_W,o=Math.min(r-32,420),a=new Ve,c=!!(null==(h=Oki.getInstance().social)?void 0:h.enabled); + a.addChild((new ip).roundRect(0,4,o,104,18).fill({ + color:0,alpha:.25} + ).roundRect(0,0,o,104,18).fill({ + color:927774,alpha:.96} + )); + const l=xAi.monsterIcon(s); + if(l){ + const t=new Ye(l); + t.width=t.height=76,t.position.set(14,14),a.addChild(t)} + const u=l?104:18,d=o-u-14,f=Axi(`${ + i} + 사냥 성공!`,pxi,19); + f.position.set(u,12),Ixi(f,d); + const p=this.mine.w===t?this.mine.dmg:0,w=Axi(`${ + p?`내 피해 ${ + p} + `:"구경"} + · 함께 ${ + e||"여러"} + 명${ + this.mine.w===t&&this.mine.last?" · 마지막 한 방!":""} + `,uxi,13,!1); + w.position.set(u,42),Ixi(w,d); + const g=Axi(n?"골드 +0 진주 +0":c?"보상은 대회·사냥 보상함에서 받아요":"보상 받는 중…",n?16766836:dxi,n?17:13); + g.position.set(u,68),Ixi(g,d),a.addChild(f,w,g),a.position.set((r-o)/2,this.viewH()-250),a.eventMode="static",a.cursor="pointer",a.on("pointertap",t=>{ + t.stopPropagation(),this.closeCard()} + ),this.addChild(a),this.card=a,this.cardFor={ + w:t,name:i} + ,a.reward=t=>{ + const i={ + k:0} + ; + g.textColor=16766836,g.textSize=17,Mx.to(i,{ + k:1,duration:.6,ease:"power2.out",onUpdate:Qt(()=>{ + g.text=`골드 +${ + Math.round(t.gold*i.k).toLocaleString()} + 진주 +${ + Math.round(t.pearl*i.k)} + `,Ixi(g,d)} + ,"onUpdate")} + )} + ,n&&a.reward(n),Mx.fromTo(a,{ + alpha:0,y:a.y+40} + ,{ + alpha:1,y:a.y,duration:.35,ease:"back.out(1.9)"} + ),Mx.delayedCall(7,()=>{ + this.card===a&&this.closeCard()} + )} + closeCard(){ + const t=this.card; + t&&(this.card=null,this.cardFor=null,Mx.killTweensOf(t),Mx.to(t,{ + alpha:0,duration:.25,onComplete:Qt(()=>t.destroy({ + children:!0} + ),"onComplete")} + ))} + renderBanner(){ + var t,i,s; + const e=this.boss,n=Oki.getInstance(),h=(performance.now()-this.killedAt)/1e3*this.scene.fxSpeed,r=!!e&&this.killedW===e.w; + if(this.banner.visible=!!e&&(!r||h<1.9),!e||!this.banner.visible)return; + this.banner.alpha=r?1-Math.min(1,Math.max(0,(h-1.6)/.3)):1;
- const o=(null==(t=this.status)?void 0:t.w)===s.w?this.status.total:0,a=(null==(i=this.status)?void 0:i.w)===s.w?this.status.n:0,c=o>=s.hp,l=Math.max(0,s.end-e.realNow()); + const l=(null==(t=this.status)?void 0:t.w)===e.w?this.status.total:0,u=(null==(i=this.status)?void 0:i.w)===e.w?this.status.n:0,d=((null==(s=this.status)?void 0:s.w)===e.w?this.status.hp:void 0)??e.hp,f=r||l>=d,p=Math.max(0,e.end-n.realNow());
- const u=this.spawnFails>=2?" · 물이 좁아 그림자가 안 와요. 넓은 물로 가요":""; - this.bannerSub.text=`${ - c?"남은 시간 동안 더 던져도 기여가 올라요":`체력 ${ - Math.max(0,s.hp-o)} + const w=this.spawnFails>=2?" · 물이 좁아 그림자가 안 와요. 넓은 물로 가요":"",g=GIi(n.state,e,`${ + n.state.spot.race} + |${ + n.state.spot.zone} + `)?" · 이번 회차는 다른 물에서 참가했어요":""; + this.bannerSub.text=f?`함께 ${ + u} + 명이 잡았어요`:`체력 ${ + Math.max(0,d-l).toLocaleString()}
- s.hp} - `} + d.toLocaleString()}
- `,this.bannerSub.position.set(14,28),aki(this.bannerSub,h-28),this.bannerBar.clear(),_ki(this.bannerBar,14,47,h-28,4,c?1:1-o/s.hp,c?XIi:13724671,3811904),this.banner.hitArea=new Ui(0,0,h,56)} + ${ + w} + `,this.bannerSub.position.set(14,28),Ixi(this.bannerSub,a-28),this.bannerBar.clear(),Fxi(this.bannerBar,14,47,a-28,4,f?1:1-l/d,f?pxi:13724671,3811904),this.banner.hitArea=new Ui(0,0,a,56)}
- const i=xIi.getInstance(),s=this.boss,e=i.harpoons(),n=zOi(e),h=n?e.stock[n]:0,r=KOi(i.state,s,`${ + const i=Oki.getInstance(),s=this.boss,e=i.harpoons(),n=UIi(e),h=n?e.stock[n]:0,r=`${
- `),o=this.scene.bossShadow(CGi),a=i.realNow()-((null==(t=i.state.hunt)?void 0:t.lastThrow)??0)<IOi.CD_MS,c=this.throwing||this.scene.harpoonBusy?"투척 중":a?"재장전":i.boatProblem()?"수리 중":n?r<1?"장전 끝":o?o.near&&this.scene.captureHarpoonTarget(CGi)?"":o.seen?"더 가까이":"그림자 대기":"그림자 대기":"만들기"; + `,o=BIi(i.state,s,r),a=GIi(i.state,s,r),c=this.scene.bossShadow(JFi),l=i.realNow()-((null==(t=i.state.hunt)?void 0:t.lastThrow)??0)<dIi.CD_MS,u=this.throwing||this.scene.harpoonBusy?"투척 중":l?"재장전":i.boatProblem()?"수리 중":a?"참가 끝":n?o<1?"장전 끝":c?c.near&&this.scene.captureHarpoonTarget(JFi)?"":c.seen?"더 가까이":"그림자 대기":"그림자 대기":"만들기";
+ get live(){ + return!!this.boss&&this.killedW!==this.boss.w}
- const t=xIi.getInstance(),i=this.boss; - if(this.throwBtn.visible=!(!i||this.gauge.visible||this.craft.visible||this.records.visible),!this.throwBtn.visible)return; - const s=ORi.BLEED_W,e=this.viewH(),n=40,h=this.throwState(); - this.throwBtn.position.set(s-16-80,e-150-80); - const r=h.ok?1+.04*Math.sin(performance.now()/160):1; - this.throwBtn.pivot.set(n,n),this.throwBtn.position.set(s-16-n,e-150-n),this.throwBtn.scale.set(r),this.throwBg.clear().circle(n,n,n).fill(h.ok?jIi:"만들기"===h.why?FIi:iki),this.throwText.text="만들기"===h.why?"작살 만들기":"작살",this.throwText.textColor=h.ok?KIi:"만들기"===h.why?zIi:ski,aki(this.throwText,72),this.throwText.position.set(n-this.throwText.width/2,22),this.throwSub.text=h.ok||"장전 끝"===h.why?`${ - ROi[h.kind].name.replace(" 작살","")} - ${ - h.have} - · ${ + const t=Oki.getInstance(); + if(this.throwBtn.visible=!(JRi.getInstance().inTutorial||this.gauge.visible||this.craft.visible||this.records.visible),!this.throwBtn.visible)return; + const i=JRi.BLEED_W,s=this.viewH(),e=38,n=!this.live,h=t.harpoons(),r=fIi.reduce((t,i)=>t+(h.stock[i]??0),0),o=n?{ + ok:!1,kind:UIi(h),left:0,why:r?`작살 ${ + r} + `:"만들기"} + :this.throwState(),a="만들기"===o.why||n,c=RIi(t.state.gear.boat); + this.throwBtn.pivot.set(0,0),this.throwBtn.scale.set(1),this.throwBtn.position.set(i-16-76,s-160-76),this.throwGlow.alpha=o.ok?.35+.35*Math.sin(performance.now()/260):0; + const l=o.ok?"던지기!":n?o.why:a?"작살 만들기":o.why,u=`${ + o.ok} + |${ + a} + |${ + n} + |${ + o.kind} + |${ + l} + |${ + o.left} + |${ + c} + `; + if(u===this.throwKey)return; + this.throwKey=u,this.throwGlow.clear().circle(e,e,45).fill({ + color:cxi,alpha:.45} + ),this.throwBg.clear().circle(e,e,e).fill(o.ok?cxi:a&&!n?exi:{ + color:mxi,alpha:.86} + ); + const d=xAi.harpoonIcon(o.kind??"wood"); + this.throwArt.visible=!!d,this.throwText.visible=!d,d?(this.throwArt.texture=d,this.throwArt.scale.set(62/d.width),this.throwArt.position.set(e,e),this.throwArt.alpha=o.ok||a?1:.5,this.throwArt.tint=o.ok||a?16777215:10132122):(this.throwText.textColor=o.ok?lxi:_xi,this.throwText.position.set(e-this.throwText.width/2,e-this.throwText.height/2)),this.throwSub.text=l,this.throwSub.textColor=o.ok?cxi:n||a?uxi:dxi,Ixi(this.throwSub,100); + const f=this.throwSub.width+18,p=this.throwSub.height+6; + this.throwSubBg.clear().roundRect(e-f/2,82,f,p,p/2).fill({ + color:mxi,alpha:.82} + ),this.throwSub.position.set(e-this.throwSub.width/2,85),this.throwBadgeText.text=a?"+":`${
- $Oi(t.state.gear.boat)} - `:"만들기"===h.why?"물고기로":h.why,this.throwSub.textColor=h.ok?KIi:YIi,aki(this.throwSub,72),this.throwSub.position.set(n-this.throwSub.width/2,44),this.throwBtn.hitArea=new Ui(0,0,80,80)} + c} + `,this.throwBadgeText.textColor=a?lxi:o.left>0?uxi:wxi; + const w=Math.max(24,this.throwBadgeText.width+12); + this.throwBadge.clear().roundRect(76-w+8,-4,w,22,11).fill(a?cxi:{ + color:1054235,alpha:.92} + ),this.throwBadgeText.position.set(76-w+8+(w-this.throwBadgeText.width)/2,(22-this.throwBadgeText.height)/2-4),this.throwBtn.hitArea=new Ui(-6,-8,90,82+p+10)}
- if(!this.boss||this.preparing||this.throwing||this.gauge.visible||this.scene.harpoonBusy)return; + if(!this.live||this.preparing||this.throwing||this.gauge.visible||this.scene.harpoonBusy)return;
- if(!s.ok)return void vH.getInstance().showMessage("재장전"===s.why?"작살을 다시 준비하고 있어요":"수리 중"===s.why?"배를 고치는 중엔 작살을 던질 수 없어요":"장전 끝"===s.why?`이번 몬스터에는 ${ + if(!s.ok)return void _H.getInstance().showMessage("재장전"===s.why?"작살을 다시 준비하고 있어요":"수리 중"===s.why?"배를 고치는 중엔 작살을 던질 수 없어요":"참가 끝"===s.why?"이번 회차에는 다른 물 몬스터를 이미 잡으러 갔어요 · 다음 회차에 만나요":"장전 끝"===s.why?`이번 몬스터에는 ${
- let e=performance.now(),n=qOi(i.gearStats().aim),h=s.kind; + const e=SCi(Math.random); + let n=performance.now(),h={ + ...$Ii(i.gearStats().aim),center:e.center} + ,r=s.kind,o=e;
- this.aimId=r.aim.id,e=r.startPerf,n=r.aim.range,h=r.aim.kind,this.aimStartPerf=e,this.aimEndPerf=e+r.aim.expiresAt-r.aim.startAt} + this.aimId=e.aim.id,n=e.startPerf,h=e.aim.range,r=e.aim.kind,o={ + speed:e.aim.speed,wob:e.aim.wob} + ,this.aimStartPerf=n,this.aimEndPerf=n+e.aim.expiresAt-e.aim.startAt}
- this.gaugeOn=!0,this.gauge.open(h,this.boss.name,ORi.BLEED_W,this.viewH(),e,n),this.throwBtn.visible=!1,jG("light"),this.tickGauge()} + this.boss&&this.live&&(this.gaugeOn=!0,this.gauge.open(r,this.boss.name,JRi.BLEED_W,this.viewH(),n,h,o),this.throwBtn.visible=!1,KG("light"),this.tickGauge())}
- this.throwing=!0,this.statusRevision++,this.gauge.freeze(r),jG("light"); + this.throwing=!0,this.scene.waveIncoming=performance.now()+3e3,this.statusRevision++,this.gauge.freeze(r),KG("light");
- const h=t.result,o=h.dmg<=0?"miss":h.grade??r,a=h.kind??e.kind??"wood",c="mithril"===a?2:"iron"===a?1:0; + const h=t.result,o=h.dmg<=0?"miss":h.grade??r,a=h.kind??e.kind??"wood",c=fIi.indexOf(a);
- w:s.w,total:h.total,n:h.n} - ,this.statusAt=performance.now(),this.renderBanner(),jG("miss"===o?"light":"perfect"===o&&c>0?"heavy":c>0?"medium":"light"),SGi("miss"===o?qG.SFX_BATTLE_BOW_ATTACK2:qG.SFX_ARCHERY_HIT_ON_TARGET,"miss"===o?.36:.42+.1*c+("perfect"===o?.08:0)),h.killed&&h.total-h.dmg<h.hp&&(vH.getInstance().showMessage(`${ - h.name} - 사냥 성공! 결과는 몬스터가 지나간 뒤에 받아요`),SGi(qG.SFX_TRUMPET,.5)))} + w:s.w,total:h.total,n:h.n,hp:h.hp} + ,this.statusAt=performance.now(),this.renderBanner(),KG("miss"===o?"light":"perfect"===o&&c>0?"heavy":c>0?"medium":"light"),qFi("miss"===o?XG.SFX_BATTLE_BOW_ATTACK2:XG.SFX_ARCHERY_HIT_ON_TARGET,"miss"===o?.36:.42+.1*c+("perfect"===o?.08:0)),this.mine.w!==s.w&&(this.mine={ + w:s.w,dmg:0,last:!1} + ),this.mine.dmg+=h.dmg,h.killed&&this.onKilled(s,h.total-h.dmg<h.hp),h.wave&&"miss"!==o&&this.scene.monsterWave(n.sample()??n.point,s.wave,h.wave.dmg,h.wave.broke))}
+ var i; + if(t.killed){ + const s=this.card&&(null==(i=this.cardFor)?void 0:i.name)===t.name?this.card:null; + return void((null==s?void 0:s.reward)?s.reward({ + gold:t.gold,pearl:t.pearl} + ):(0!==this.mine.dmg&&null!==this.mine.w||(this.mine={ + w:-1,dmg:t.my,last:!1} + ),this.showCard(this.mine.w??-1,t.name,t.kind,t.n,{ + gold:t.gold,pearl:t.pearl} + )))}
+ renderChip(t,i,s){ + const e=Oki.getInstance().state,n=RTi(e.spot)<dIi.MIN_LEVEL&&!t; + if(this.chip.visible=!JRi.getInstance().inTutorial,!this.chip.visible)return; + const h=t??OIi(e.spot.race,e.spot.zone,s??i,s?null:e.huntDevAt),r=t?{ + state:"live",left:t.end-i} + :kIi(h,i),o=n?`${ + xIi(e.spot.zone)} + 번 수역부터`:FFi(r,!0),a=n?"dim":r.state; + this.chipFace.set(h.kind,n||"idle"===r.state?null:r.state,n),this.chipText.text!==o&&(this.chipText.text=o),this.chipText.alpha="soon"===a&&Math.floor(performance.now()/500)%2?.5:1; + const c=39+Math.ceil(this.chipText.width)+10,l=`${ + a} + |${ + c} + `; + if(l===this.chipKey)return; + this.chipKey=l,this.chipText.textColor="live"===a?16765124:"soon"===a?UFi:"dim"===a?fxi:uxi,this.chipText.position.set(39,(34-this.chipText.height)/2); + const u=this.chipBg.clear().roundRect(0,0,c,34,10).fill({ + color:"live"===a?4856338:"soon"===a?3810324:mxi,alpha:"idle"===a||"dim"===a?.82:.92} + ); + "live"===a&&u.roundRect(0,0,c,34,10).stroke({ + color:BFi,width:2} + ),this.chip.hitArea=new Ui(-4,-6,c+8,46)} + openSchedule(){ + const t=Oki.getInstance(),i=t.state; + this.records.visible=this.craft.visible=!1,VFi.open(this,JRi.BLEED_W,this.viewH(),i.spot.race,i.spot.zone,()=>t.realNow(),{ + devAt:i.huntDevAt,onRecords:Qt(()=>this.openRecords(),"onRecords")} + )}
- const a=ORi.BLEED_W,c=this.viewH(),l=Math.min(a-20,480),u=(a-l)/2,d=u+18,f=128+24*POi.length+60,p=Math.max(10,c-f-8),g=cki(l,f,ZIi,null,14); + const a=JRi.BLEED_W,c=this.viewH(),l=Math.min(a-20,480),u=(a-l)/2,d=u+18,f=Math.max(18,Math.min(24,Math.floor((c-18-188)/_Ii.length))),p=128+_Ii.length*f+60,w=Math.max(10,c-p-8),g=kxi(l,p,mxi,null,14);
- const e=null==s?void 0:s.records[t.name],n=p+116+24*i,h=oki(`${ + const e=null==s?void 0:s.records[t.name],n=w+116+i*f,h=Axi(`${
- gSi[t.zone]} + t.deep?"깊은 대양":jSi[t.zone]}
- ),o.addChild(...b)} + ),o.addChild(...y)}
+ ),Oki.getInstance().refreshHuntMats().then(()=>{ + this.craft.visible&&(this.craftSig="",this.renderCraft())}
- const i=xIi.getInstance(),s=i.harpoons(),e=`${ + const i=Oki.getInstance(),s=i.harpoons(),e=i.huntMatHave,n=`${
- t.fishFor(1)} + e.bone}
- t.fishFor(2)} + e.thunder}
- t.fishFor(3)} + [1,2,3,4,5].map(i=>t.fishFor(i)).join(",")}
- const h=ORi.BLEED_W,r=this.viewH(),o=Math.min(h-20,480),a=(h-o)/2,c=a+18,l=84+92*kOi.length+60,u=r-l-8,d=cki(o,l,ZIi,null,14); + const r=JRi.BLEED_W,o=this.viewH(),a=Math.min(r-20,480),c=(r-a)/2,l=c+18,u=84+62*wIi.length+10,d=Math.max(72,Math.min(92,Math.floor((o-u-76)/fIi.length))),f=u+fIi.length*d+60,p=Math.max(4,o-f-8),w=kxi(a,f,mxi,null,14);
- const p=oki(`어망의 물고기(값싼 것부터 · 의뢰 물고기는 빼고) + 골드 · 몬스터 한 번에 ${ + const m=Axi(`물고기(값싼 것부터 · 의뢰 물고기 빼고) + 골드 · 용뼈·번개 작살은 재료 + 골드 · 한 번에 ${
- const h=ROi[e],r=u+70+92*n,l=s.use===e,d=t.fishFor(h.minStar),f=(new ip).roundRect(c-8,r,o-20,84,10).fill(l?UIi:BIi),p=oki(`${ + const h=gIi[s],r=p+70+62*n,o=t.fishFor(h.minStar),u=Qt(t=>o>=h.fish*t&&i.state.gold>=h.gold*t,"can"); + v.push((new ip).roundRect(l-8,r,a-20,56,10).fill({ + color:sxi,alpha:.7} + )); + const d=xAi.huntMatIcon(s),f=d?46:0; + if(d){ + const t=new Ye(d); + t.anchor.set(.5),t.scale.set(38/d.width),t.position.set(l+20,r+28),t.eventMode="none",v.push(t)} + const w=Axi(`${ + h.name} + ${ + e[s]} + 개`,uxi,15); + w.position.set(l+4+f,r+6); + const g=Axi(`${ + iCi[h.minStar]} + ${ + h.fish} + 마리 + ${ + h.gold.toLocaleString()} + 골드 (맞는 물고기 ${ + o} + 마리)`,u(1)?dxi:wxi,12,!1); + g.position.set(l+4+f,r+30),Ixi(g,a-190-f); + const m=new Dxi("1개",56,30,13),_=new Dxi("5개",56,30,13); + m.position.set(c+a-24-118,r+13),_.position.set(c+a-24-56,r+13),m.enabled=u(1),_.enabled=u(5),m.onTap=()=>{ + this.makeMat(s,1)} + ,_.onTap=()=>{ + this.makeMat(s,5)} + ,v.push(w,g,m,_)} + ),fIi.forEach((n,h)=>{ + const r=pIi[n],o=p+u+h*d,f=s.use===n,w=r.fish?t.fishFor(r.minStar):0,g=Qt(t=>w>=r.fish*t&&(!r.mat||e[r.mat]>=(r.matN??1)*t)&&i.state.gold>=r.gold*t,"can"),m=(new ip).roundRect(l-8,o,a-20,d-8,10).fill(f?exi:sxi),_=xAi.harpoonIcon(n),M=_?50:0; + if(_){ + const t=new Ye(_); + t.anchor.set(.5),t.scale.set(44/_.width),t.position.set(l+24,o+26),t.eventMode="none",v.push(t)} + const b=Axi(`${
- p.position.set(c+4,r+8); - const w=oki(`★${ - h.minStar} - 이상 물고기 ${ + b.position.set(l+4+M,o+8); + const y=Axi(r.fish?`${ + iCi[r.minStar]} + ${
- 마리)`,d>=h.fish?YIi:JIi,12,!1); - w.position.set(c+4,r+32),aki(w,o-60),g.push(f,p,w); + 마리)`:`${ + gIi[r.mat].name} + ${ + r.matN??1} + 개 + ${ + r.gold.toLocaleString()} + 골드 (가진 ${ + gIi[r.mat].name} + ${ + e[r.mat]} + 개)`,g(1)?dxi:wxi,12,!1); + y.position.set(l+4+M,o+30),Ixi(y,a-60-M),v.splice(v.length-(_?1:0),0,m),v.push(b,y);
- _.setPrimary(!1),_.enabled=!l,m.position.set(c+4,r+52),v.position.set(c+74,r+52),_.position.set(a+o-24-104,r+52),m.enabled=d>=h.fish&&i.state.gold>=h.gold,v.enabled=d>=5*h.fish&&i.state.gold>=5*h.gold,m.onTap=()=>{ + S.setPrimary(!1),S.enabled=!f; + const T=o+d-8-36; + E.position.set(l+4,T),A.position.set(l+74,T),S.position.set(c+a-24-104,T),E.enabled=g(1),A.enabled=g(5),E.onTap=()=>{
- ),n.addChild(...g)} + ),h.addChild(...v)} + async makeMat(t,i){ + if(this.crafting)return; + this.crafting=!0; + const s=await Oki.getInstance().huntMakeMat(t,i).finally(()=>{ + this.crafting=!1} + ); + if(s.message||!s.result)return void _H.getInstance().showMessage(s.message??"재료를 만들지 못했어요"); + const e=s.result.used.map(t=>`${ + uTi(t.id).name} + ${ + t.count} + `).join(" · "); + _H.getInstance().showMessage(`${ + gIi[t].name} + ${ + i} + 개를 만들었어요 (${ + e} + )`),KG("light"),qFi(XG.SFX_STONE_BREAK,.4),this.craftSig="",this.renderCraft()}
- this.closeAll(),super.destroy(t)} + this.closeAll(); + for(const i of this.sockOff)i(); + YFi.get().stop(),super.destroy(t)}
MonsterFace 1 hunks, 309 statements
+ const BFi=16739146,UFi=16757611; + function FFi(t,i=!1){ + return"live"===t.state?`${ + i?"사냥!":"지나가는 중"} + ${ + Hxi(t.left)} + `:"soon"===t.state?`곧 와요 ${ + Hxi(t.left)} + `:`${ + Hxi(t.left)} + 뒤`} + Qt(FFi,"monsterTimeText"); + const $Fi=class extends Ve{ + constructor(t,i=!0){ + super(),Zt(this,"body",new Ve),Zt(this,"bg",new ip),Zt(this,"art",new Ye(as.EMPTY)),Zt(this,"edge",new ip),Zt(this,"ripple",new ip),Zt(this,"anim",null),Zt(this,"sig",""),this.size=t,this.rippleOn=i; + const s=t/2; + this.bg.circle(0,0,s).fill(1054235),this.art.anchor.set(.5),this.ripple.circle(0,0,s+1).stroke({ + color:BFi,width:Math.max(2,.09*t)} + ),this.ripple.visible=!1,this.body.position.set(s,s),this.ripple.position.set(s,s),this.body.addChild(this.bg,this.art,this.edge),this.addChild(this.ripple,this.body); + for(const e of[this.body,this.bg,this.art,this.edge,this.ripple])e.eventMode="none"} + set(t,i,s=!1){ + var e; + const n=`${ + t} + |${ + i} + |${ + s} + `; + if(n===this.sig)return this; + this.sig=n; + const h=xAi.monsterIcon(t),r=this.size/2; + this.art.texture=h??as.EMPTY,h&&this.art.scale.set(1.12*this.size/Math.max(1,h.width)),this.art.tint=s?9079434:16777215,this.art.alpha=s?.75:1; + const o=Math.max(2,.09*this.size); + return this.edge.clear(),"live"===i?this.edge.circle(0,0,r).stroke({ + color:BFi,width:o} + ):"soon"===i&&this.edge.circle(0,0,r).stroke({ + color:UFi,width:.85*o} + ),null==(e=this.anim)||e.kill(),this.anim=null,this.ripple.visible=this.rippleOn&&"live"===i&&!s,this.ripple.visible&&(this.anim=Mx.timeline({ + repeat:-1} + ).fromTo(this.ripple.scale,{ + x:1,y:1} + ,{ + x:1.7,y:1.7,duration:1.4,ease:"power1.out"} + ,0).fromTo(this.ripple,{ + alpha:.8} + ,{ + alpha:0,duration:1.4,ease:"power1.out"} + ,0)),this} + destroy(t){ + var i; + null==(i=this.anim)||i.kill(),this.anim=null,super.destroy(t)} + } + ; + Qt($Fi,"MonsterFace"); + let HFi=$Fi; + const WFi=class t extends Ve{ + constructor(t,i,s,e,n,h){ + super(),Zt(this,"times",[]),Zt(this,"tick",Qt(()=>this.refresh(),"tick")),this.W=t,this.H=i,this.race=s,this.zone=e,this.real=n,this.opts=h; + const r=IIi(s,e,n(),3,h.devAt),o=Math.min(t-40,470),a=20,c=(new ip).rect(0,0,t,i).fill({ + color:0,alpha:oxi} + ); + c.eventMode="static",c.on("pointertap",t=>{ + t.stopPropagation(),queueMicrotask(()=>this.closeCard())} + ); + const l=new Ve,u=Axi(`${ + qSi[`${ + s} + |${ + e} + `]??"이 물"} + 몬스터`,cxi,21),d=xIi(e),f=Axi(d>1?`${ + d} + 번 수역부터 와요 (1~${ + d-1} + 번은 초급 수역)`:"이 물의 모든 수역에 와요",dxi,14,!1),p=Axi(`같은 물이면 모두 같은 시각에 ${ + Math.round(dIi.DUR_MS/6e4)} + 분 동안 지나가요`,dxi,13,!1); + for(const M of[f,p])Ixi(M,o-40); + let w=a; + u.position.set((o-u.width)/2,w),w+=u.height+6,f.position.set((o-f.width)/2,w),w+=f.height+2,p.position.set((o-p.width)/2,w),w+=p.height+12; + const g=[u,f,p]; + r.forEach(t=>{ + const i=(new ip).roundRect(a,w,o-40,56,12).fill(sxi),s=new HFi(46); + s.position.set(28,w+5); + const e=Axi(t.name,uxi,17); + e.position.set(84,w+(56-e.height)/2); + const n=Axi("",uxi,16); + g.push(i,s,e,n),this.times.push({ + b:t,t:n,face:s} + ),w+=64} + ),w+=6; + const m=h.onRecords?(o-40-10)/2:o-40; + if(h.onRecords){ + const t=new Dxi("기록 보기",m,50,16); + t.setPrimary(!1),t.position.set(a,w),t.onTap=()=>{ + const t=h.onRecords; + this.closeCard(),t()} + ,g.push(t)} + const v=new Dxi("닫기",m,50,16); + v.position.set(h.onRecords?a+m+10:a,w),v.onTap=()=>this.closeCard(),g.push(v); + const _=w+50+a; + l.addChild(kxi(o,_,hxi,null,18),...g),l.position.set((t-o)/2,Math.max(10,(i-_)/2)),l.eventMode="static",l.hitArea=new Ui(0,0,o,_),l.on("pointertap",t=>t.stopPropagation()),this.addChild(c,l),this.eventMode="static",this.refresh(),ES.app.ticker.add(this.tick)} + static get isOpen(){ + var t; + return!!(null==(t=this.current)?void 0:t.parent)} + static close(t){ + var i,s; + t&&(null==(i=this.current)?void 0:i.parent)!==t||null==(s=this.current)||s.closeCard()} + static open(i,s,e,n,h,r,o={ + } + ){ + var a; + null==(a=this.current)||a.closeCard(); + const c=new t(s,e,n,h,r,o); + return i.addChild(c),this.current=c,Mx.fromTo(c,{ + alpha:0} + ,{ + alpha:1,duration:.15} + ),c} + refresh(){ + const t=this.real(),i=Math.min(this.W-40,470); + for(const{ + b:s,t:e,face:n} + of this.times){ + const h=kIi(s,t),r=t>=s.end?"지나갔어요":FFi(h); + if(e.text!==r){ + e.text=r,e.textColor=t>=s.end?fxi:"live"===h.state?BFi:"soon"===h.state?UFi:uxi; + const o=n.y-5; + e.position.set(i-20-14-e.width,o+(56-e.height)/2)} + n.set(s.kind,t>=s.end||"idle"===h.state?null:h.state)} + } + closeOne(){ + return this.closeCard(),!0} + closeCard(){ + ES.app.ticker.remove(this.tick),t.current===this&&(t.current=null),this.parent&&(this.parent.removeChild(this),queueMicrotask(()=>this.destroy({ + children:!0} + )))} + } + ; + Qt(WFi,"MonsterScheduleCard"),Zt(WFi,"current",null); + let VFi=WFi; + const jFi=class{ + constructor(t,i,s){ + Zt(this,"layer",new Ve),Zt(this,"line",new Ve),Zt(this,"lineFace",new HFi(26)),Zt(this,"lineName",Axi("",uxi,14)),Zt(this,"lineTime",Axi("",cxi,14)),Zt(this,"faces",[]),Zt(this,"sig",""),Zt(this,"legendAdded",!1),this.scene=t,this.real=i,this.devAt=s,this.line.addChild(this.lineFace,this.lineName,this.lineTime),this.line.eventMode="static",this.line.cursor="pointer",this.line.on("pointertap",t=>{ + t.stopPropagation(),this.openCard()} + ),this.layer.addChild(this.line); + try{ + this.addLegend(this.parts)} + catch{ + } + } + get parts(){ + return this.scene} + where(){ + const[t,i]=this.scene.mapKey.split("|"); + return t&&i?{ + race:t,zone:i} + :null} + openCard(){ + const t=this.where(),i=this.parts; + t&&VFi.open(i.bigMap,i.viewW,i.viewH,t.race,t.zone,this.real,{ + devAt:this.devAt()} + )} + sync(){ + let t,i; + try{ + t=this.parts,i=this.where()} + catch{ + return} + if(!((null==t?void 0:t.bigMap)&&t.bigImg&&i&&t.info&&this.scene.bigMapOpen))return this.layer.parent&&this.layer.parent.removeChild(this.layer),void(!this.scene.bigMapOpen&&(null==t?void 0:t.bigMap)&&VFi.close(t.bigMap)); + this.layer.parent!==t.bigMap&&t.bigMap.addChild(this.layer); + const s=this.real(),e=OIi(i.race,i.zone,s,this.devAt()),n=kIi(e,s); + this.lineFace.set(e.kind,"idle"===n.state?null:n.state),this.lineName.text=e.name,this.lineTime.text=FFi(n),this.lineTime.textColor="live"===n.state?BFi:"soon"===n.state?UFi:cxi,this.lineName.position.set(32,(26-this.lineName.height)/2),this.lineTime.position.set(this.lineName.x+this.lineName.width+8,(26-this.lineTime.height)/2); + const h=this.lineTime.x+this.lineTime.width; + if(t.bigTitle&&t.bigClose){ + const i=t.bigClose.x-10,s=t.bigTitle.x+t.bigTitle.width+12,e=t.bigClose.y+20; + this.lineName.visible=i-s>=h,this.lineName.visible||(this.lineTime.x=32); + const n=this.lineName.visible?h:this.lineTime.x+this.lineTime.width; + this.line.position.set(i-n,e-13),this.line.hitArea=new Ui(-6,-8,n+12,42)} + else this.lineName.visible=!0,this.line.position.set(t.bigImg.x+(t.bigImg.width-h)/2,Math.max(8,t.bigImg.y-36)),this.line.hitArea=new Ui(-6,-8,h+12,42); + const r=t.bigImg.width/t.info.w,o=t.info.points.map((t,i)=>({ + q:t,n:i} + )).filter(({ + n:s} + )=>t.known(s)&&RTi({ + zone:i.zone,point:s} + )>=dIi.MIN_LEVEL),a=`${ + this.scene.mapKey} + |${ + o.map(t=>t.n).join(",")} + |${ + e.kind} + |${ + n.state} + |${ + Math.round(t.bigImg.x)} + |${ + Math.round(t.bigImg.y)} + |${ + Math.round(t.bigImg.width)} + `; + if(a!==this.sig){ + this.sig=a; + for(const t of this.faces)t.destroy({ + children:!0} + ); + this.faces=o.map(({ + q:i} + )=>{ + const s=new HFi(26).set(e.kind,"idle"===n.state?null:n.state); + return s.position.set(t.bigImg.x+i.x*r+10,t.bigImg.y+i.y*r-6),s.eventMode="static",s.cursor="pointer",s.hitArea=new Ui(-6,-6,38,38),s.on("pointertap",t=>{ + t.stopPropagation(),this.openCard()} + ),this.layer.addChildAt(s,0),s} + )} + } + addLegend(t){ + if(this.legendAdded||!t.bigLegend)return; + this.legendAdded=!0; + const i=t.bigLegend.width+20,s=new HFi(16).set("catfish",null),e=Axi("몬스터",dxi,12,!1); + s.position.set(i,0),e.position.set(i+20,0),t.bigLegend.addChild(s,e)} + } + ; + Qt(jFi,"MonsterMapMarks"); + let KFi=jFi; + const zFi=class t{ + constructor(){ + Zt(this,"live",!1),Zt(this,"ws",null),Zt(this,"want",0),Zt(this,"room",""),Zt(this,"joined",""),Zt(this,"retry",0),Zt(this,"timer",null),Zt(this,"pinger",null),Zt(this,"ticket",null),Zt(this,"huntFns",new Set),Zt(this,"ringFns",new Set)} + static get(){ + return t.inst??(t.inst=new t)} + static url(t=LP.baseURL){ + try{ + const i=new URL(t); + if("localhost"===i.hostname||"127.0.0.1"===i.hostname)return`ws://${ + i.hostname} + :4111/fishing-ws`; + if("teledev.weracle.io"===i.hostname&&"4101"===i.port)return"wss://teledev.weracle.io:4101/fishing-ws"} + catch{ + } + return null} + start(t){ + this.ticket=t,1===++this.want&&this.connect()} + stop(){ + --this.want>0||(this.want=0,this.close())} + setWater(t){ + var i; + this.room=t,(null==(i=this.ws)?void 0:i.readyState)===WebSocket.OPEN&&this.joined!==t&&this.join()} + onHunt(t){ + return this.huntFns.add(t),()=>this.huntFns.delete(t)} + onRing(t){ + return this.ringFns.add(t),()=>this.ringFns.delete(t)} + async connect(){ + var i; + const s=t.url(); + if(!s||!this.want||this.ws)return; + const e=await(null==(i=this.ticket)?void 0:i.call(this).catch(()=>null)); + if(!e||!this.want||this.ws)return void(this.want&&!this.ws&&this.later()); + const n=new WebSocket(`${ + s} + ?t=${ + encodeURIComponent(e)} + `); + this.ws=n,n.onmessage=t=>this.onMessage(String(t.data)),n.onclose=()=>{ + this.ws===n&&(this.ws=null,this.live=!1,this.joined="",this.pinger&&(clearInterval(this.pinger),this.pinger=null),this.want&&this.later())} + ,n.onerror=()=>{ + } + } + later(){ + if(this.timer)return; + const t=Math.min(3e4,2e3*2**this.retry++); + this.timer=setTimeout(()=>{ + this.timer=null,this.connect()} + ,t)} + close(){ + this.timer&&(clearTimeout(this.timer),this.timer=null),this.pinger&&(clearInterval(this.pinger),this.pinger=null); + const t=this.ws; + this.ws=null,this.live=!1,this.joined=""; + try{ + null==t||t.close()} + catch{ + } + } + join(){ + var t; + this.room&&(null==(t=this.ws)?void 0:t.readyState)===WebSocket.OPEN&&this.ws.send(JSON.stringify({ + event:"join",data:{ + room:this.room} + } + ))} + onMessage(t){ + var i; + let s; + try{ + s=JSON.parse(t)} + catch{ + return} + if("hello"===s.ev)this.retry=0,this.join(),this.pinger??(this.pinger=setInterval(()=>{ + var t; + (null==(t=this.ws)?void 0:t.readyState)===WebSocket.OPEN&&this.ws.send(JSON.stringify({ + event:"ping"} + ))} + ,25e3)); + else if("joined"===s.ev)this.joined=(null==(i=s.data)?void 0:i.room)??"",this.live=this.joined===this.room; + else if("hunt"===s.ev&&s.data)for(const e of this.huntFns)e(s.data); + else if("ring"===s.ev&&s.data)for(const e of this.ringFns)e(s.data)} + } + ; + Qt(zFi,"FishingSocket"),Zt(zFi,"inst",null); + let YFi=zFi;
FishingSocialPanel 9 hunks, 251 statements
- const e=xIi.getInstance(),n=e.social,h=[],r=null==n?void 0:n.board,o=(null==r?void 0:r.day)??(null==n?void 0:n.day)??1,a=ETi(o),c=e.claimableSocialIds(); - c.length&&h.push({ - title:`받을 보상 ${ - c.length} - 개`,detail:"끝난 대회·사냥 결과예요 · 이번 회차 교환이 끝나기 전까지 받아요",reward:"",button:"모두 받기",action:Qt(()=>{ - this.perform(c)} - ,"action")} - ); - for(const g of(null==n?void 0:n.rewards)??[])null===g.claimedAt&&g.seasonId===(null==(t=e.season)?void 0:t.id)&&h.push({ - title:`${ - "hunt"===g.source?"사냥":"대회"} - · ${ - g.title} - `,detail:`${ - g.date} - · ${ - g.rank?`${ + const e=Oki.getInstance(),n=e.social,h=(null==n?void 0:n.enabled)?e.realNow():e.now(),r=(null==n?void 0:n.enabled)?n.board:null,o=e.state.contest,a=!!o&&!o.claimed&&h>=o.endAt,c=!o||o.claimed||a||r&&!r.final?null:o,l=null==(t=null==n?void 0:n.rewards)?void 0:t.find(t=>{ + var i; + return"contest"===t.source&&t.seasonId===(null==(i=e.season)?void 0:i.id)&&null===t.claimedAt&&!this.dismissed.has(t.id)} + ),u=r&&!r.final?r:null,d=c?e.contestStanding():null,f="open"===e.phase()&&((null==n?void 0:n.enabled)?!0===n.canJoin&&(null==(i=e.state.social)?void 0:i.legacyDate)!==n.date:(!o||(o.claimed||a)&&bCi(o.startAt)!==bCi(h))&&(!(null==(s=e.season)?void 0:s.endAt)||h+432e5<=e.season.endAt)),p=e.claimableSocialIds().length+(a?1:0),w=JSON.stringify([this.selected,this.busy,u,l,c,null==d?void 0:d.rows,f,p,e.phase(),!!u&&h>=(u.myEndAt??u.endAt),c&&h>=c.endAt,[...this.dismissed]]); + this.paint(w,()=>{ + this.clockLabel=null,this.endAt=0; + const t=this.canvas; + BHi(t,"낚시 대회",8,6,25),HHi(t,282,5,140,29,sxi),UHi(t,"하루 1회 "+(f?"1/1":"0/1"),352,11,13,f?cxi:dxi),u?this.live(u,h):c&&d?this.legacy(c,d,h):l?this.result(l,f):this.choose(f,h),VHi(t,u?"전체 순위 ›":l&&f&&!c?"새 대회 고르기 ›":"지난 기록 ›",8,this.logicalHeight-33,176,32,()=>{ + u?this.ranking(u):l&&f&&!c?(this.dismissed.add(l.id),this.render()):this.history()} + ,!1),VHi(t,p?`받을 보상 ${ + p} + ›`:"대회 안내 ?",230,this.logicalHeight-33,192,32,()=>p?this.rewards():this.info(),!1)} + ),this.clockLabel&&(this.clockLabel.text=this.endAt>h?`${ + Hxi(this.endAt-h)} + 남음`:"기록 집계 중",this.clockLabel.x=(430-this.clockLabel.width)/2)} + fish(t,i,s,e,n=e){ + const h=this.canvas; + "count"===t?(FHi(h,xAi.fish(49),i-.15*e,s-.1*n,.65*e,.8*n),FHi(h,xAi.fish(63),i+.24*e,s+.14*n,.42*e,.6*n),FHi(h,xAi.fish(61),i-.26*e,s+.26*n,.32*e,.45*n)):FHi(h,xAi.fish(tWi[t]),i,s,e,n)} + choose(t,i){ + const s=this.canvas,e=this.logicalHeight-530,n=166+.14*e,h=111+.43*e,r=.07*e; + if($Hi(s,93,100+r,116+Math.min(24,r)),BHi(s,"오늘은 내가",164,57+r,24),BHi(s,"낚시왕!",164,85+r,34,cxi),BHi(s,"도전할 대회를 골라봐!",164,128+r,14,dxi),nCi.forEach((t,i)=>{ + const e=8+i%2*212,r=n+Math.floor(i/2)*(h+11),o=t.id===this.selected; + HHi(s,e,r+3,202,h,921104),HHi(s,e,r,202,h,o?vxi:sxi,o?cxi:axi),this.fish(t.id,e+98,r+(h-24)/2,Math.min(184,1.3*h),h-27),BHi(s,iWi[t.id],e+13,r+10,"rarity"===t.id?13:17,o?cxi:dxi,66),o&&(s.addChild((new ip).circle(e+180,r+15,10).fill(cxi)),UHi(s,"✓",e+180,r+7,14,lxi,18)),UHi(s,t.title,e+101,r+h-26,18),WHi(s,e,r,202,h,()=>{ + this.selected=t.id,this.render()} + )} + ),UHi(s,hCi(1,this.selected).desc,202,414+e,14,dxi,335),VHi(s,"?",382,406+e,38,34,()=>this.info(this.selected),!1),VHi(s,t?"도전!":"open"!==Oki.getInstance().phase()?"이번 회차 종료":"오늘의 도전 완료",8,448+e,414,40,()=>this.confirm(),!0,t&&!this.busy),!t&&"open"===Oki.getInstance().phase()){ + const t=Oki.getInstance().social,n=(null==t?void 0:t.endAt)??864e5*(Math.floor(i/864e5)+1); + UHi(s,(null==t?void 0:t.joinedToday)||!(null==t?void 0:t.enabled)?`다음 참가 ${ + new Date(n).toLocaleTimeString([],{ + hour:"2-digit",minute:"2-digit"} + )} + `:"회차 마감 전에는 새 대회를 열 수 없어요",215,431+e,11,fxi)} + } + confirm(){ + const t=this.selected; + qHi.open(hCi(1,t).title,[{ + title:"오늘의 도전 1회",detail:"시작하면 오늘은 다른 종목으로 바꿀 수 없어요."} + ,{ + title:"참가한 순간부터 12시간",detail:"참가 후 잡은 물고기만 기록돼요. 날짜가 바뀌어도 이어져요."} + ,{ + title:"이렇게 겨뤄요",detail:sWi[t]} + ],{ + text:"도전 시작!",run:Qt(()=>{ + this.perform(async()=>{ + var i; + const s=Oki.getInstance(); + if(null==(i=s.social)?void 0:i.enabled)return s.joinSocial(t); + const e=s.state.contest,n=e&&!e.claimed&&s.now()>=e.endAt?await s.claimContest():null,h=await s.joinContest(t); + return!h&&n&&_H.getInstance().showMessage(`지난 대회 ${ + n.rank} + 위 보상도 받았어요 · 진주 ${ + n.pearl} + `),h} + ,"대회 시작! 낚시하러 가자!")} + ,"run")} + )} + live(t,i){ + const s=hCi(t.day,t.contestId),e=t.rows.find(t=>t.me),n=t.myEndAt??t.endAt,h=this.canvas,r=this.logicalHeight-530; + UHi(h,s.title,215,53,24,cxi),this.endAt=n,this.clockLabel=UHi(h,"",215,85,13,dxi),t.contestId?this.fish(t.contestId,215,173+.28*r,244+Math.min(50,.15*r),148+.3*r):$Hi(h,215,176+.28*r,148+Math.min(60,.2*r)),UHi(h,oCi(s,(null==e?void 0:e.score)??0),215,242+.52*r,"star"===s.kind?27:36),UHi(h,`${ + (null==e?void 0:e.rank)?`${
- ${ - g.hunt?` · ${ - g.hunt.killed?"사냥 성공":"달아났어요"} - · 내 피해 ${ - g.hunt.my} - `:` · ${ - (null==(i=g.contest)?void 0:i.record)??""} - `} - `,reward:`진주 ${ - g.participationPearl+g.rankPearl} - (참가 ${ - g.participationPearl} - + 순위 ${ - g.rankPearl} - )${ - g.gold?` · 골드 ${ - g.gold.toLocaleString()} - `:""} - `,button:"받기",action:Qt(()=>{ - this.perform([g.id])} - ,"action")} - ); - const l=e.state.contest; - l&&!l.claimed&&e.now()>=l.endAt&&h.push({ - title:"이전 방식으로 참가한 대회",detail:"받지 않은 결과가 있어요",reward:"이 대회의 원래 보상을 받아요",button:"받기",action:Qt(()=>{ - this.busy||(this.busy=!0,e.claimContest().finally(()=>{ - this.busy=!1,this.signature="",this.render()} - ))} - ,"action")} - ),this.title.text=`오늘 · ${ - a.title} - `; - const u=(null==r?void 0:r.endAt)??(null==n?void 0:n.endAt)??0,d=u-e.realNow(),f=u?new Date(u).toLocaleTimeString([],{ - hour:"2-digit",minute:"2-digit"} - ):""; - if(this.detail.text=d>0?`${ - (null==n?void 0:n.date)??""} - · 내 시간 ${ - f} - 마감 · ${ - bki(d)} - 남음`:"오늘 대회를 마쳤어요. 잠시 후 새로 보기를 눌러 주세요",this.status.text=r?`${ - r.group} - 번 방 · 마지막 자동 낚시 기록은 마감 때 더해져요`:"빈자리에는 다른 낚시꾼이 들어와요",this.rule.text=`${ - a.desc} - · 1위 진주 30 ~ 30위 1 · 사냥 성공은 참가 + 순위 진주`,this.action.setText(r?`참가 중 · ${ + / ${
- /30명`:"참가하기"),this.action.enabled=!this.busy&&!r&&!!(null==n?void 0:n.enabled)&&"open"===e.phase()&&d>0,r)for(const g of r.rows)h.push({ + 명`,215,291+.6*r,18,cxi),HHi(h,8,328+r,414,94,sxi),t.rows.slice(0,3).forEach((t,i)=>{ + const e=338+r+26*i; + BHi(h,t.rank?`${ + t.rank} + `:"—",23,e,15,cxi),BHi(h,t.name+(t.me?" · 나":""),53,e,14,t.me?cxi:uxi,212),BHi(h,oCi(s,t.score),278,e,14,dxi,127)} + ),WHi(h,8,328+r,414,94,()=>this.ranking(t)),VHi(h,"낚시하러 가자!",8,448+r,414,40,()=>{ + JRi.getInstance().selectTab("fish")} + ,!0),UHi(h,i<n?"참가 후 잡은 물고기만 기록돼요":"약 2~7분 뒤 순위가 확정돼요",215,430+r,11,fxi)} + ranking(t){ + const i=hCi(t.day,t.contestId); + qHi.open(`${ + i.title} + · ${ + t.final?"최종":"현재"} + 순위`,t.rows.map(s=>({
- g.rank||"—"} - 위 · ${ + s.rank?`${ + s.rank} + 위`:"—"} + · ${
- g.me?" (나)":""} - `,detail:g.score>0?`기록 ${ - STi(a,g.score)} - `:"아직 대회 기록이 없어요",reward:`예상 진주 ${ + s.me?" · 나":""} + `,detail:oCi(i,s.score),reward:s.rank?`${ + t.final?"":"예상 "} + 진주 ${
- `,me:g.me} - ); - else h.push({ - title:"하루 중 언제든 참가해요",detail:"같은 게임 서버의 낚시꾼과 최대 30명이 겨뤄요",reward:"참가한 뒤 잡은 물고기부터 기록에 들어가요"} - ); - for(const g of(null==n?void 0:n.past)??[]){ + `:"기록을 남기면 순위에 올라요",me:s.me} + )))} + result(t,i){ + var s; + const e=this.canvas,n=this.logicalHeight-530; + UHi(e,t.contest?hCi(t.contest.day,t.contest.contestId).title:t.title,215,56,23,cxi),$Hi(e,215,183+.3*n,215+Math.min(50,.15*n),t.rank<=3&&t.rank>0?t.rank:1),UHi(e,t.rank?`${ + t.rank} + 위!`:"도전 완료!",215,279+.55*n,39,cxi),UHi(e,(null==(s=t.contest)?void 0:s.record)??"기록 없음",215,334+.65*n,24),HHi(e,94,378+1*n,242,49,vxi),BHi(e,"보상",117,393+1*n,14,dxi),jHi(e,t.rankPearl+t.participationPearl,207,390+1*n,22),VHi(e,"보상 받기",8,448+n,414,40,()=>{ + this.perform(()=>Oki.getInstance().claimSocial([t.id]),"대회 보상을 받았어요!")} + ,!0,!this.busy),WHi(e,94,49,242,375,()=>{ + var i,s; + const e=Oki.getInstance(),n=[null==(i=e.social)?void 0:i.board,...(null==(s=e.social)?void 0:s.past)??[]].find(i=>(null==i?void 0:i.id)===t.sourceId); + n?this.ranking(n):this.history()} + )} + legacy(t,i,s){ + const e={ + id:"legacy",day:t.day,contestId:t.contestId,date:bCi(t.startAt),group:t.room,endAt:t.endAt,count:i.rows.length,final:i.ended,rows:i.rows.map((t,i)=>({ + ...t,userId:String(i),rank:i+1,scoreAt:0,order:i} + ))} + ; + if(!i.ended)return void this.live(e,s); + const n=this.canvas,h=this.logicalHeight-530,r=hCi(t.day,t.contestId); + UHi(n,r.title,215,57,23,cxi),$Hi(n,215,185+.3*h,220+Math.min(50,.15*h),i.myRank<=3?i.myRank:1),UHi(n,`${ + i.myRank} + 위!`,215,280+.55*h,39,cxi),UHi(n,oCi(r,t.my),215,336+.65*h,25),jHi(n,aCi(i.myRank),170,389+1*h,22),VHi(n,"보상 받기",8,448+h,414,40,()=>{ + this.claimLegacy()} + ,!0,!this.busy),VHi(n,"전체 순위 ›",131,424+h,168,22,()=>qHi.open(r.title,i.rows.map((t,i)=>({ + title:`${ + i+1} + 위 · ${ + t.name} + `,detail:oCi(r,t.score),me:t.me} + ))),!1)} + info(t){ + qHi.open(t?hCi(1,t).title:"대회 안내",[...t?[{ + title:"승부 기준",detail:sWi[t]} + ]:[],{ + title:"매일 원하는 종목으로",detail:"서버 날짜(UTC 0시)마다 전체 종목 중 한 번 참가해요."} + ,{ + title:"12시간 동안 낚시!",detail:"직접 잡기·자동 낚시 모두 집계해요. 같은 점수는 먼저 기록한 순서예요."} + ,{ + title:"최대 30명과 승부",detail:"같은 종목에 비슷한 시간에 참가한 낚시꾼끼리 겨뤄요."} + ,{ + title:"마지막 기록까지 집계",detail:"내 대회가 끝나면 약 2~7분 뒤 순위가 확정돼요."} + ,{ + title:"대회 보상",detail:"1위 진주 30개 ~ 30위 1개. 기록이 없으면 순위 보상은 없어요."} + ,{ + title:"보상은 교환 마감 전까지",detail:"받지 않은 보상은 새 참가를 막지 않아요. 이번 회차 교환이 끝나기 전에 받아요."} + ])} + history(){ + var t,i,s; + const e=Oki.getInstance(),n=[]; + for(const h of[null==(t=e.social)?void 0:t.board,...(null==(i=e.social)?void 0:i.past)??[]])if(h){
- ETi(g.day).title} - `,detail:g.final?`내 순위 ${ + hCi(h.day,h.contestId).title} + `,detail:`${ + h.final?"최종":"현재"} + ${
- g.count} - 명 참가`:"마지막 기록을 모으고 있어요",reward:g.final?"결과는 맨 위 받을 보상에서 받아요":"잠시 후 새로 보기를 눌러 주세요"} + oCi(hCi(h.day,h.contestId),(null==t?void 0:t.score)??0)} + `,button:"순위",action:Qt(()=>this.ranking(h),"action")}
- aki(this.title,dUi-162),aki(this.detail,dUi-8),aki(this.rule,dUi-8),aki(this.status,dUi-116),this.list.setListHeight(Math.max(80,ORi.contentHeight-this.y-((null==(s=this.parent)?void 0:s.y)??0)-this.list.y-8),!1); - const p=JSON.stringify(h); - p!==this.signature&&(this.signature=p,this.list.dataProvider=h)} + if(!(null==(s=e.social)?void 0:s.enabled))for(const h of[...e.state.history].reverse())n.push({ + title:h.title,detail:`${ + h.rank} + 위`} + ); + qHi.open("최근 대회 기록",n)} + rewards(){ + var t,i,s; + const e=Oki.getInstance(),n=[],h=e.claimableSocialIds(); + h.length>1&&n.push({ + title:`보상 ${ + h.length} + 개`,detail:"이번 회차에 받을 수 있는 보상",button:"모두 받기",action:Qt(()=>{ + this.perform(()=>e.claimSocial(h),"보상을 모두 받았어요!")} + ,"action")} + ); + for(const a of(null==(t=e.social)?void 0:t.rewards)??[])h.includes(a.id)&&n.push({ + title:a.title,detail:`${ + a.rank?`${ + a.rank} + 위 · `:""} + ${ + (null==(i=a.contest)?void 0:i.record)??((null==(s=a.hunt)?void 0:s.killed)?"사냥 성공":"사냥 종료")} + `,reward:`진주 ${ + a.participationPearl+a.rankPearl} + ${ + a.gold?` · ${ + a.gold.toLocaleString()} + G`:""} + `,action:Qt(()=>{ + this.perform(()=>e.claimSocial([a.id]),"보상을 받았어요!")} + ,"action")} + ); + const r=e.state.contest,o=r&&!r.claimed&&e.now()>=r.endAt?e.contestStanding():null; + if(r&&o){ + const t=hCi(r.day,r.contestId); + n.push({ + title:`지난 대회 · ${ + t.title} + `,detail:`${ + o.myRank} + 위 · ${ + oCi(t,r.my)} + `,reward:`진주 ${ + aCi(o.myRank)} + `,action:Qt(()=>{ + this.claimLegacy()} + ,"action")} + )} + qHi.open("받을 보상",n)} + async claimLegacy(){ + await this.perform(async()=>await Oki.getInstance().claimContest()?null:"결과를 확인한 뒤 다시 받아 주세요","대회 보상을 받았어요!")} + async perform(t,i){ + if(!this.busy){ + this.busy=!0,this.render(); + try{ + _H.getInstance().showMessage(await t()??i)} + catch{ + _H.getInstance().showMessage("연결을 확인하고 다시 시도해 주세요")} + finally{ + this.busy=!1,this.render()} + } + }
FishingMiniWindow 1 hunks, 250 statements
+ )),CWi=150,OWi=34,IWi=140,kWi=.8,xWi=.25,RWi=Qt(t=>Math.max(0,Math.min(1,t)),"c01"),PWi=Qt(t=>1+2.70158*Math.pow(t-1,3)+1.70158*Math.pow(t-1,2),"backOut"),NWi=Qt((t,i)=>null!=t&&t>=0&&t<i,"on"); + function LWi(t,i){ + const s=t.bite,e=t.catch,n=t.hit,h=null!=s&&s>=0?PWi(RWi(s/.25)):0,r=NWi(e,kWi)?RWi(e/kWi):0,o=null!=e&&e>=kWi&&e<1.05?1-(e-kWi)/xWi:0; + return{ + bang:h,bangY:-6*h,ring:null!=s&&s>=0?.4+.6*Math.abs(Math.sin(6*s)):0,fishAlpha:NWi(e,kWi)?1-RWi((r-.85)/.15):0,fishX:i.from.x+(i.to.x-i.from.x)*r,fishY:i.from.y+(i.to.y-i.from.y)*r*r-88*r*(1-r),fishScale:.6+.6*Math.sin(Math.PI*r),netScale:1+.35*o,flash:null!=n&&n>=0?.55*(1-RWi(n/.35)):0,shake:NWi(n,.4)?5*(1-n/.4)*Math.sin(70*n):0,numAlpha:NWi(n,1.3)?1-RWi((n-.9)/.4):0,numY:null!=n&&n>=0?-16*RWi(n):0} + } + function DWi(t,i,s,e,n=150){ + const h=t+n/2<s/2,r=Math.max(10,e-n-150); + return{ + x:h?10:s-n-10,y:Math.round(Math.max(10,Math.min(r,i)))} + } + function GWi(t,i){ + return{ + x:t-70,y:i-50.88533333333333,w:IWi,h:IWi} + } + Qt(LWi,"miniPose"),Qt(DWi,"miniSnap"),Qt(GWi,"miniShotFrame"); + const BWi="ef2_fishing_mini_pos_v1",UWi=16739166,FWi=16757611,$Wi=CWi,HWi=116; + function WWi(){ + try{ + const t=JSON.parse(localStorage.getItem(BWi)??"null"); + if(t&&Number.isFinite(t.x)&&Number.isFinite(t.y))return t} + catch{ + } + return{ + x:10,y:96} + } + function VWi(t){ + try{ + localStorage.setItem(BWi,JSON.stringify(t))} + catch{ + } + } + Qt(WWi,"loadPos"),Qt(VWi,"savePos"); + const jWi=class t extends Ve{ + constructor(){ + super(),Zt(this,"fake",null),Zt(this,"speed",1),Zt(this,"onPreviewTap",null),Zt(this,"body",new Ve),Zt(this,"edge",new ip),Zt(this,"clip",new Ve),Zt(this,"clipMask",new ip),Zt(this,"water",new ip),Zt(this,"shot",new Ye),Zt(this,"shotTex",null),Zt(this,"boatAlt",new Ye),Zt(this,"stripBg",new ip),Zt(this,"netIcon",new Ye),Zt(this,"netNum",new Ve),Zt(this,"netText",Axi("0",uxi,15)),Zt(this,"boatIcon",new Ye),Zt(this,"hpText",Axi("",uxi,15)),Zt(this,"flash",new ip),Zt(this,"fix",new Ve),Zt(this,"fixBg",new ip),Zt(this,"fixRing",new ip),Zt(this,"ring",new ip),Zt(this,"bang",new Ve),Zt(this,"fish",new Ye),Zt(this,"num",new ZD("",UWi,{ + ...eD.DEFAULT_FONT_OPTION_16,fontSize:20,lineHeight:26,fontWeight:"bolder",stroke:{ + color:3804424,width:4} + } + )),Zt(this,"maxBtn",new Ve),Zt(this,"closeBtn",new Ve),Zt(this,"clock",0),Zt(this,"biteK",null),Zt(this,"biteAt",null),Zt(this,"catchAt",null),Zt(this,"hitAt",null),Zt(this,"netHold",null),Zt(this,"fishBase",1),Zt(this,"path",{ + from:{ + x:75,y:54.519999999999996} + ,to:{ + x:30,y:133} + } + ),Zt(this,"view",null),Zt(this,"sampleAt",0),Zt(this,"stripSig",""),Zt(this,"fixSig",""),Zt(this,"timer",new kx(250)),Zt(this,"unsub",[]),Zt(this,"down",null),Zt(this,"pos",WWi()),Zt(this,"onFrame",Qt(t=>this.frame(t.deltaMS),"onFrame")),Zt(this,"onShellOpen",Qt(()=>this.hide(),"onShellOpen")),Zt(this,"onResize",Qt(()=>this.place(this.x,this.y,!1),"onResize")),this.edge.roundRect(0,6,$Wi,$Wi,18).fill({ + color:0,alpha:.44} + ).roundRect(-3,-3,156,156,21).fill(1118481),this.clipMask.roundRect(0,0,$Wi,$Wi,18).fill(16777215),this.clip.mask=this.clipMask,this.water.rect(0,0,$Wi,$Wi).fill(2379871),this.shot.width=this.shot.height=$Wi,this.boatAlt.anchor.set(.5),this.boatAlt.position.set(75,54.519999999999996),this.stripBg.rect(0,116,$Wi,OWi).fill({ + color:789518,alpha:.82} + ),this.netNum.addChild(this.netText),this.flash.rect(0,0,$Wi,$Wi).fill(UWi),this.flash.alpha=0,this.fixBg.rect(0,0,$Wi,HWi).fill({ + color:0,alpha:.55} + ); + const t=new ip,i={ + color:FWi,width:3.5,cap:"round",join:"round"} + ,s=-Math.PI/4+.7; + t.moveTo(-8,8).lineTo(2,-2).stroke(i).moveTo(6+5.5*Math.cos(s),5.5*Math.sin(s)-6).arc(6,-6,5.5,s,s+2*Math.PI-1.4).stroke(i),t.position.set(75,58),this.fix.addChild(this.fixBg,this.fixRing,t),this.fix.visible=!1,this.clip.addChild(this.water,this.boatAlt,this.shot,this.stripBg,this.netIcon,this.netNum,this.boatIcon,this.hpText,this.fix,this.flash),this.ring.roundRect(2,2,146,146,16).stroke({ + color:cxi,width:4} + ),this.ring.alpha=0; + const e=Axi("!",lxi,24); + e.position.set(-e.width/2,-e.height/2),this.bang.addChild((new ip).ellipse(0,3,17,17).fill({ + color:0,alpha:.4} + ).circle(0,0,17).fill(cxi),e),this.bang.position.set(75,37),this.bang.visible=!1,this.fish.anchor.set(.5),this.fish.visible=!1,this.num.alpha=0; + const n={ + color:14540253,width:2.2,cap:"round",join:"round"} + ,h=Qt((t,i,s,e,n)=>{ + i.eventMode="none"; + const h=(new ip).circle(0,0,12).fill({ + color:0,alpha:.55} + ); + h.eventMode="none",t.addChild(h,i),t.position.set(s,16),t.eventMode="static",t.cursor="pointer",t.hitArea=e,t.on("pointerdown",t=>t.stopPropagation()),t.on("pointertap",t=>{ + t.stopPropagation(),queueMicrotask(n)} + )} + ,"roundBtn"); + h(this.maxBtn,(new ip).roundRect(-4.5,-4.5,9,9,1.5).stroke(n),106,new Ui(-16,-18,30,36),()=>this.expand()),h(this.closeBtn,(new ip).moveTo(-4.5,-4.5).lineTo(4.5,4.5).moveTo(4.5,-4.5).lineTo(-4.5,4.5).stroke(n),134,new Ui(-14,-18,32,36),()=>this.turnOff()); + for(const r of[this.edge,this.clip,this.clipMask,this.ring,this.bang,this.fish,this.num])r.eventMode="none"; + this.body.addChild(this.edge,this.clip,this.clipMask,this.ring,this.bang,this.fish,this.num,this.maxBtn,this.closeBtn),this.addChild(this.body),this.eventMode="static",this.cursor="grab",this.hitArea=new Ui(-3,-3,156,159),this.on("pointerdown",t=>this.onDown(t)),this.on("globalpointermove",t=>this.onMove(t)),this.on("pointerup",t=>this.onUp(t)),this.on("pointerupoutside",t=>this.onUp(t)),this.timer.addEventListener("timer",()=>this.onTimer())} + static getInstance(){ + return this.instance??(this.instance=new t)} + static get isOn(){ + var t; + return!!(null==(t=this.instance)?void 0:t.parent)} + static capture(){ + try{ + const t=M$i.getInstance().scene,i=t.boatPos; + if(!i)return null; + const s=t.toLocal(t.worldToGlobal(i.x,i.y)),e=GWi(s.x,s.y),n=ES.app.renderer; + return n.generateTexture({ + target:t,frame:new Ui(e.x,e.y,e.w,e.h),resolution:Math.min(2,n.resolution)*$Wi/IWi} + )} + catch(urt){ + return null} + } + show(t){ + this.setShot(t); + const i=!this.parent; + if(i&&jci.getInstance().addChild(this),this.place(this.pos.x,this.pos.y,!1),this.clock=0,this.sampleAt=0,this.biteK=this.biteAt=this.catchAt=this.hitAt=this.netHold=null,this.view=null,this.stripSig=this.fixSig="",this.frame(0),!i)return; + ES.app.ticker.add(this.onFrame),ES.stage.on("resized",this.onResize),this.timer.start(); + const s=Oki.getInstance(),e=JRi.getInstance(); + e.on("added",this.onShellOpen),this.unsub.push(()=>e.off("added",this.onShellOpen),s.onCatch(t=>this.onCatch(t)),s.onBoatLog(t=>this.onLogs(t)),s.onSeasonChange(t=>{ + "open"!==t.phase&&this.turnOff(!1)} + )),Mx.fromTo(this.scale,{ + x:.82,y:.82} + ,{ + x:1,y:1,duration:.22,ease:"back.out(2.2)"} + )} + hide(){ + if(this.parent){ + ES.app.ticker.remove(this.onFrame),ES.stage.off("resized",this.onResize),this.timer.stop(); + for(const t of this.unsub)t(); + this.unsub=[],Mx.killTweensOf(this),Mx.killTweensOf(this.scale),this.down=null,this.parent.removeChild(this),this.setShot(null)} + } + turnOff(t=!0){ + if(!this.parent)return; + if(this.hide(),this.fake)return; + const i=Oki.getInstance(); + i.open=!1,i.flushHooks(),t&&_H.getInstance().showMessage("낚시를 껐어요 · 꺼 둔 동안에도 천천히 잡혀요")} + previewCatch(t){ + this.onCatch({ + id:t,broken:!1} + )} + previewHit(t){ + this.onLogs([{ + kind:"hazard",dmg:t} + ])} + onCatch(t){ + var i; + if(t.broken)return; + const s=xAi.fish(t.id); + this.fish.texture=s,this.fishBase=44/Math.max(1,s.width,s.height),Ski(t)||(this.netHold??(this.netHold=(null==(i=this.view)?void 0:i.net)??null)),this.catchAt=this.clock} + onLogs(t){ + const{ + main:i} + =_Fi(t),s=t.some(t=>"broke"===t.kind); + (i||s)&&(this.num.text=i?`−${ + Math.round(i.dmg)} + `:"",this.num.x=($Wi-this.num.width)/2,this.hitAt=this.clock)} + liveView(){ + const t=Oki.getInstance(); + if(!t.ready||!t.state)return null; + const i=t.boatHp(),s=t.biteOpen(); + return{ + net:t.netCount(),cap:t.netCap,hp:i.hp,max:i.max,fixing:i.fixing,broken:i.broken,boatLv:t.state.gear.boat,bite:s?s.k:null} + } + frame(t){ + if(this.clock+=t/1e3*this.speed,this.clock>=this.sampleAt){ + this.sampleAt=this.clock+.1; + const t=this.fake??this.liveView(); + t&&(this.view=t,t.bite!==this.biteK&&(this.biteK=t.bite,this.biteAt=null==t.bite?null:this.clock),this.drawStrip(t),this.drawFix(t))} + const i=Qt(t=>null==t?null:this.clock-t,"since"),s=LWi({ + bite:i(this.biteAt),catch:i(this.catchAt),hit:i(this.hitAt)} + ,this.path); + this.body.x=s.shake,this.ring.alpha=s.ring,this.bang.visible=s.bang>.01,this.bang.scale.set(s.bang),this.bang.y=37+s.bangY,this.fish.visible=s.fishAlpha>0,this.fish.alpha=s.fishAlpha,this.fish.position.set(s.fishX,s.fishY),this.fish.scale.set(this.fishBase*s.fishScale),this.netNum.scale.set(s.netScale),this.flash.alpha=s.flash,this.num.alpha=s.numAlpha,this.num.y=50-this.num.height/2+s.numY,null!=this.netHold&&(null==this.catchAt||this.clock-this.catchAt>=kWi)&&(this.netHold=null,this.view&&this.drawStrip(this.view)),null!=this.catchAt&&this.clock-this.catchAt>1.05&&(this.catchAt=null),null!=this.hitAt&&this.clock-this.hitAt>1.3&&(this.hitAt=null)} + drawStrip(t){ + const i=this.netHold??t.net,s=t.hp/Math.max(1,t.max),e=t.fixing?"수리":t.broken?"고장":`${ + Math.ceil(100*s)} + %`,n=`${ + i} + |${ + t.cap} + |${ + e} + |${ + t.boatLv} + |${ + t.fixing} + `; + if(n===this.stripSig)return; + this.stripSig=n,this.netText.text=`${ + i} + `,this.netText.textColor=i>=t.cap?UWi:uxi,this.hpText.text=e,this.hpText.textColor=t.fixing?FWi:s<=.25?UWi:uxi; + const h=xAi.menuIcon("net"); + this.netIcon.visible=!!h,h&&(this.netIcon.texture=h,this.netIcon.width=this.netIcon.height=22),this.boatIcon.texture=xAi.boatBig(t.boatLv),this.boatIcon.width=this.boatIcon.height=20; + const r=(h?25:0)+this.netText.width,o=23+this.hpText.width,a=Math.max(0,$Wi-r-o),c=133,l=a/4,u=l+r+a/2; + this.netIcon.position.set(l,122); + const d=l+(h?25:0); + this.netText.position.set(-this.netText.width/2,-this.netText.height/2),this.netNum.position.set(d+this.netText.width/2,c),this.boatIcon.position.set(u,123),this.hpText.position.set(u+23,c-this.hpText.height/2),this.path={ + from:{ + x:75,y:54.519999999999996} + ,to:{ + x:l+11,y:c} + } + ,this.shot.visible||this.drawBoatAlt(t.boatLv)} + drawFix(t){ + if(this.fix.visible=t.fixing,!t.fixing)return void(this.fixSig=""); + const i=Math.max(0,Math.min(1,t.hp/Math.max(1,t.max))),s=i.toFixed(2); + if(s===this.fixSig)return; + this.fixSig=s; + this.fixRing.clear().circle(75,58,28).stroke({ + color:16777215,alpha:.13,width:7} + ),i>0&&this.fixRing.moveTo(75,30).arc(75,58,28,-Math.PI/2,-Math.PI/2+2*Math.PI*i).stroke({ + color:FWi,width:7,cap:"round"} + )} + setShot(t){ + this.shotTex&&this.shotTex!==t&&this.shotTex.destroy(!0),this.shotTex=t,this.shot.texture=t??as.EMPTY,this.shot.width=this.shot.height=$Wi,this.shot.visible=!!t,this.boatAlt.visible=!t} + drawBoatAlt(t){ + const i=xAi.boat(t); + this.boatAlt.texture=i,this.boatAlt.scale.set(64/Math.max(1,i.width,i.height))} + onDown(t){ + var i; + const s=null==(i=this.parent)?void 0:i.toLocal(t.global); + s&&(Mx.killTweensOf(this),this.down={ + sx:s.x,sy:s.y,x:this.x,y:this.y,moved:!1,id:t.pointerId} + )} + onMove(t){ + const i=this.down; + if(!i||t.pointerId!==i.id||!this.parent)return; + const s=this.parent.toLocal(t.global),e=s.x-i.sx,n=s.y-i.sy; + if(!i.moved&&Math.hypot(e,n)<6)return; + i.moved=!0; + const{ + w:h,h:r} + =this.screen(); + this.position.set(Math.max(-75,Math.min(h-75,i.x+e)),Math.max(0,Math.min(r-$Wi,i.y+n)))} + onUp(t){ + const i=this.down; + i&&t.pointerId===i.id&&(this.down=null,i.moved?this.place(this.x,this.y,!0):this.tap())} + tap(){ + var t; + if(this.fake)return void(null==(t=this.onPreviewTap)||t.call(this)); + const i=Oki.getInstance(); + i.hookable()&&i.hook().then(t=>{ + t.message&&_H.getInstance().showMessage(t.message)} + )} + expand(){ + ei(()=>Promise.resolve().then(()=>TWi),void 0).then(t=>t.FishingFlow.openTab("fish"))} + screen(){ + return{ + w:ES.stageWidth||640,h:ES.safeHeight||1280} + } + place(t,i,s){ + const{ + w:e,h:n} + =this.screen(),h=DWi(t,i,e,n); + this.pos=h,VWi(h),s?Mx.to(this,{ + x:h.x,y:h.y,duration:.18,ease:"power2.out"} + ):this.position.set(h.x,h.y)} + onTimer(){ + if(this.fake)return; + const t=Oki.getInstance(); + if(!t.ready)return; + const i="undefined"==typeof document||"visible"===document.visibilityState; + t.open=i&&!l5t.getInstance().isActive,t.tick()} + } + ; + Qt(jWi,"FishingMiniWindow"),Zt(jWi,"instance",null); + let KWi=jWi; + const zWi=Object.freeze(Object.defineProperty({ + __proto__:null,FishingMiniWindow:KWi} + ,Symbol.toStringTag,{ + value:"Module"}
FishingSeaMap 35 hunks, 233 statements
+ ,croc:{ + L:345,rope:!1,amp:0,tailPow:1,wave:0,freq:.55,speed:20,turn:.25,rMin:.8,wn:.7,alpha:.42,need:143} + ,jelly:{ + L:267,rope:!1,amp:0,tailPow:1,wave:0,freq:.28,speed:17,turn:.12,rMin:1.4,wn:.5,alpha:.4,need:143} + ,hammer:{ + L:250,rope:!1,amp:0,tailPow:1,wave:0,freq:.7,speed:40,turn:.22,rMin:1.3,wn:.8,alpha:.38,need:150} + ,narwhal:{ + L:510,rope:!1,amp:0,tailPow:1,wave:0,freq:.2,speed:30,turn:.08,rMin:2,wn:.5,alpha:.4,need:200} + ,squid:{ + L:520,rope:!1,amp:0,tailPow:1,wave:0,freq:.3,speed:26,turn:.09,rMin:1.8,wn:.5,alpha:.4,need:210} + ,angler:{ + L:330,rope:!1,amp:0,tailPow:1,wave:0,freq:.25,speed:21,turn:.1,rMin:1.6,wn:.5,alpha:.44,need:160} + ,octopus:{ + L:380,rope:!1,amp:0,tailPow:1,wave:0,freq:.25,speed:18,turn:.1,rMin:1.6,wn:.5,alpha:.42,need:180} + ,sperm:{ + L:620,rope:!1,amp:0,tailPow:1,wave:0,freq:.12,speed:26,turn:.06,rMin:2.4,wn:.4,alpha:.4,need:250} + ,serpent:{ + L:1e3,rope:!1,amp:0,tailPow:1,wave:0,freq:.22,speed:32,turn:.05,rMin:2.6,wn:.35,alpha:.38,need:280}
- kinds:[["whale",.23],["manta",.2],["shark",.17],["whaleShark",.22],["turtle",.1],["megalodon",.08]],first:[12,25],every:[40,80],under:.3,scale:1} + kinds:[["whale",.14],["manta",.1],["shark",.1],["whaleShark",.12],["turtle",.06],["megalodon",.05],["narwhal",.08],["squid",.08],["angler",.07],["octopus",.07],["sperm",.07],["serpent",.06]],first:[12,25],every:[40,80],under:.3,scale:1}
- kinds:[["shark",.28],["manta",.24],["turtle",.4],["whaleShark",.08]],first:[45,70],every:[90,170],under:.25,scale:.8} + kinds:[["shark",.22],["manta",.2],["turtle",.3],["whaleShark",.08],["jelly",.12],["hammer",.08]],first:[45,70],every:[90,170],under:.25,scale:.8}
- kinds:[["catfish",.44],["eel",.28],["sturgeon",.28]],first:[100,160],every:[200,360],under:.2,scale:1} + kinds:[["catfish",.34],["eel",.22],["sturgeon",.22],["croc",.22]],first:[100,160],every:[200,360],under:.2,scale:1}
- ),Zt(this,"mapFogCanvas",null),Zt(this,"mapFogTex",null),Zt(this,"nextFishAt",0),Zt(this,"rockUntil",0),Zt(this,"devWhaleBox",null),Zt(this,"nibbler",null),Zt(this,"nibbleRolled",0),Zt(this,"verts",null),Zt(this,"terr",null),Zt(this,"tileLayer",new Ve),Zt(this,"shoreLayer",new Ve),Zt(this,"shoreFoamLayer",new Ve),Zt(this,"propLayer",new Ve),Zt(this,"regions",new Map),Zt(this,"shoreRuns",new Map),Zt(this,"water",null),Zt(this,"surf",[]),Zt(this,"miniMap",new Ve),Zt(this,"miniImg",new Ye(as.EMPTY)),Zt(this,"miniBg",new ip),Zt(this,"miniDots",new ip),Zt(this,"miniGoal",new ip),Zt(this,"bigGoal",new ip),Zt(this,"bigMap",new Ve),Zt(this,"bigImg",new Ye(as.EMPTY)),Zt(this,"bigDots",new ip),Zt(this,"bigLabels",new Ve),Zt(this,"bigDim",new ip),Zt(this,"bigClose",new gki("닫기",132,46,16)),Zt(this,"bigTip",vki("가고 싶은 곳을 누르면 배가 출발해요",16777215,ZIi,12,9)),Zt(this,"miniTex",null),Zt(this,"miniMe",new ip),Zt(this,"miniView",new ip),Zt(this,"miniTarget",new ip),Zt(this,"bigMe",new ip),Zt(this,"bigTarget",new ip),Zt(this,"bigOthers",new ip),Zt(this,"markSig",""),Zt(this,"bigOthersAt",0),Zt(this,"npcLayer",new Ve),Zt(this,"npcTags",new Ve),Zt(this,"npcs",[]),Zt(this,"npcSig",""),Zt(this,"npcSpots",[]),Zt(this,"onVisitorTap",null),Zt(this,"onHubTap",null),Zt(this,"onHubArrive",null),Zt(this,"hubLayer",new Ve),Zt(this,"hubs",[]),Zt(this,"hubViews",new Map),Zt(this,"hubPlaces",new Map),Zt(this,"hubSig",""),Zt(this,"goal",null),Zt(this,"goalSig",""),Zt(this,"goalMarks",new ip),Zt(this,"goalArrow",new Ve),Zt(this,"goalArrowHead",new ip),Zt(this,"goalArrowText",""),Zt(this,"chunkKey",""),Zt(this,"othersFloats",new Ve),Zt(this,"othersWater",new Ve),Zt(this,"othersLines",new ip),Zt(this,"onOtherTap",null),Zt(this,"speedBonus",0),Zt(this,"sailBlock",null),Zt(this,"repairFx",new HPi({ + ),Zt(this,"mapFogCanvas",null),Zt(this,"mapFogTex",null),Zt(this,"nextFishAt",0),Zt(this,"rockUntil",0),Zt(this,"devWhaleBox",null),Zt(this,"lastSchool",null),Zt(this,"nibbler",null),Zt(this,"nibbleRolled",0),Zt(this,"verts",null),Zt(this,"terr",null),Zt(this,"tileLayer",new Ve),Zt(this,"shoreLayer",new Ve),Zt(this,"shoreFoamLayer",new Ve),Zt(this,"propLayer",new Ve),Zt(this,"regions",new Map),Zt(this,"shoreRuns",new Map),Zt(this,"water",null),Zt(this,"surf",[]),Zt(this,"miniMap",new Ve),Zt(this,"miniImg",new Ye(as.EMPTY)),Zt(this,"miniBg",new ip),Zt(this,"miniDots",new ip),Zt(this,"miniGoal",new ip),Zt(this,"bigGoal",new ip),Zt(this,"bigMap",new Ve),Zt(this,"bigImg",new Ye(as.EMPTY)),Zt(this,"bigDots",new ip),Zt(this,"bigLabels",new Ve),Zt(this,"bigDim",new ip),Zt(this,"bigClose",new Dxi("닫기",132,46,16)),Zt(this,"bigTip",Uxi("가고 싶은 곳을 누르면 배가 출발해요",16777215,mxi,12,9)),Zt(this,"miniTex",null),Zt(this,"miniMe",new ip),Zt(this,"miniView",new ip),Zt(this,"miniTarget",new ip),Zt(this,"bigMe",new ip),Zt(this,"bigTarget",new ip),Zt(this,"bigOthers",new ip),Zt(this,"markSig",""),Zt(this,"bigOthersAt",0),Zt(this,"npcLayer",new Ve),Zt(this,"npcTags",new Ve),Zt(this,"npcs",[]),Zt(this,"npcSig",""),Zt(this,"npcSpots",[]),Zt(this,"onVisitorTap",null),Zt(this,"onHubTap",null),Zt(this,"onHubArrive",null),Zt(this,"hubLayer",new Ve),Zt(this,"hubs",[]),Zt(this,"hubViews",new Map),Zt(this,"hubPlaces",new Map),Zt(this,"hubSig",""),Zt(this,"goal",null),Zt(this,"goalSig",""),Zt(this,"goalMarks",new ip),Zt(this,"goalArrow",new Ve),Zt(this,"goalArrowHead",new ip),Zt(this,"goalArrowText",""),Zt(this,"chunkKey",""),Zt(this,"othersFloats",new Ve),Zt(this,"othersWater",new Ve),Zt(this,"othersLines",new ip),Zt(this,"onOtherTap",null),Zt(this,"speedBonus",0),Zt(this,"sailBlock",null),Zt(this,"repairFx",new wLi({
- )),Zt(this,"fixingNow",!1),Zt(this,"afterFixAt",0),Zt(this,"plunderG",new ip),Zt(this,"ropes",[]),Zt(this,"plunderFocus",null),Zt(this,"snaps",[]),Zt(this,"tut",!1),Zt(this,"tutorialMoveBtn",!1),Zt(this,"modeBtnHidden",!1),Zt(this,"tutorialRing",null),Zt(this,"tutorialRingScale",1),Zt(this,"tutorialLift",0),Zt(this,"rodBalloon",new Ve),Zt(this,"rodBalloonOn",!1),Zt(this,"rodBubble",new Ye(as.EMPTY)),Zt(this,"pointSyncUntil",0),Zt(this,"dockAt",0),Zt(this,"dockShown",0),this.viewW=i,this.viewH=s,this.on("removed",()=>this.cancelHarpoon()); + )),Zt(this,"fixingNow",!1),Zt(this,"afterFixAt",0),Zt(this,"waveG",new ip),Zt(this,"waves",[]),Zt(this,"waveKick",{ + dx:0,dy:0,rot:0} + ),Zt(this,"waveIncoming",0),Zt(this,"waveWait",null),Zt(this,"plunderG",new ip),Zt(this,"ropes",[]),Zt(this,"plunderFocus",null),Zt(this,"snaps",[]),Zt(this,"tut",!1),Zt(this,"tutorialMoveBtn",!1),Zt(this,"modeBtnHidden",!1),Zt(this,"tutorialRing",null),Zt(this,"tutorialRingScale",1),Zt(this,"tutorialLift",0),Zt(this,"rodBalloon",new Ve),Zt(this,"rodBalloonOn",!1),Zt(this,"rodBubble",new Ye(as.EMPTY)),Zt(this,"pointSyncUntil",0),Zt(this,"dockAt",0),Zt(this,"dockShown",0),this.viewW=i,this.viewH=s,this.on("removed",()=>this.cancelHarpoon());
- this.glints.eventMode="none",this.shadowLayer.eventMode=this.flyLayer.eventMode=this.labels.eventMode=this.foamLayer.eventMode="none",this.underLayer.eventMode=this.giantLayer.eventMode="none",this.underLayer.addChild(this.giantLayer,this.shadowLayer,this.school),this.fxAdd.blendMode="add",this.boat.anchor.set(.5),this.boat.eventMode="none",this.angler.eventMode=this.lamp.eventMode=this.floatSp.eventMode="none",this.lamp.anchor.set(.5),this.floatSp.visible=!1,this.lightLayer.eventMode="none",this.lightLayer.mask=this.lightClip,this.birdClip.eventMode="none",this.birds.sky.mask=this.birdClip,this.chunkLayer.eventMode="none",this.othersLayer.eventMode=this.otherNames.eventMode=this.othersFloats.eventMode=this.othersLines.eventMode=this.othersWater.eventMode=this.plunderG.eventMode="none",this.tileLayer.eventMode="none",this.shoreFoamLayer.eventMode=this.shoreLayer.eventMode=this.propLayer.eventMode="none",this.npcLayer.eventMode=this.npcTags.eventMode=this.hubLayer.eventMode=this.goalMarks.eventMode=this.goalArrow.eventMode="none",this.world.addChild(this.mapSprite,this.tileLayer,this.shoreFoamLayer,this.shoreLayer,this.chunkLayer,this.glints,this.waterLight,this.birds.shadows,this.propLayer,this.npcLayer,this.hubLayer,this.othersWater,this.othersLayer,this.othersFloats,this.othersLines,this.plunderG,this.boatWater,this.foamLayer,this.boatShadow,this.line,this.float,this.floatSp,this.boat,this.angler,this.lamp,this.fx,this.fxAdd,this.flyLayer,this.otherNames,this.hitLayer,this.npcTags,this.fogOfWar,this.goalMarks,this.labels,this.rodBalloon),this.world.addChildAt(this.repairFx.under,this.world.getChildIndex(this.boatWater)),this.world.addChildAt(this.repairFx.over,this.world.getChildIndex(this.otherNames)),this.repairFx.onSound=t=>{ + this.glints.eventMode="none",this.shadowLayer.eventMode=this.flyLayer.eventMode=this.labels.eventMode=this.foamLayer.eventMode="none",this.underLayer.eventMode=this.giantLayer.eventMode="none",this.underLayer.addChild(this.giantLayer,this.shadowLayer,this.school),this.fxAdd.blendMode="add",this.boat.anchor.set(.5),this.boat.eventMode="none",this.angler.eventMode=this.lamp.eventMode=this.floatSp.eventMode="none",this.lamp.anchor.set(.5),this.floatSp.visible=!1,this.lightLayer.eventMode="none",this.lightLayer.mask=this.lightClip,this.birdClip.eventMode="none",this.birds.sky.mask=this.birdClip,this.chunkLayer.eventMode="none",this.othersLayer.eventMode=this.otherNames.eventMode=this.othersFloats.eventMode=this.othersLines.eventMode=this.othersWater.eventMode=this.plunderG.eventMode="none",this.tileLayer.eventMode="none",this.shoreFoamLayer.eventMode=this.shoreLayer.eventMode=this.propLayer.eventMode="none",this.npcLayer.eventMode=this.npcTags.eventMode=this.hubLayer.eventMode=this.goalMarks.eventMode=this.goalArrow.eventMode="none",this.world.addChild(this.mapSprite,this.tileLayer,this.shoreFoamLayer,this.shoreLayer,this.chunkLayer,this.glints,this.waterLight,this.birds.shadows,this.propLayer,this.npcLayer,this.hubLayer,this.othersWater,this.othersLayer,this.othersFloats,this.othersLines,this.plunderG,this.boatWater,this.foamLayer,this.boatShadow,this.line,this.float,this.floatSp,this.boat,this.angler,this.lamp,this.fx,this.fxAdd,this.flyLayer,this.otherNames,this.hitLayer,this.npcTags,this.fogOfWar,this.goalMarks,this.labels,this.rodBalloon),this.world.addChildAt(this.repairFx.under,this.world.getChildIndex(this.boatWater)),this.world.addChildAt(this.repairFx.over,this.world.getChildIndex(this.otherNames)),this.waveG.eventMode="none",this.world.addChildAt(this.waveG,this.world.getChildIndex(this.boatShadow)),this.repairFx.onSound=t=>{
- const o=(1-(this.glide.ms?Math.min(1,(performance.now()-this.glide.at)/this.glide.ms):1))**3,a=this.hullPose=BNi(this.bx+this.glide.dx*o,this.by+this.glide.dy*o,this.heading,t/1e3,this.zone,this.boatLv,this.speed),c=performance.now()<this.rockUntil?.07*Math.sin(t/110)*((this.rockUntil-performance.now())/1800):0; - this.boat.position.set(a.x,a.y),this.boat.rotation=a.rotation+c,this.boat.skew.set(a.skew,0),this.boat.scale.set(aDi*a.scaleX,aDi*a.scaleY); + const o=(1-(this.glide.ms?Math.min(1,(performance.now()-this.glide.at)/this.glide.ms):1))**3,a=this.hullPose=pDi(this.bx+this.glide.dx*o,this.by+this.glide.dy*o,this.heading,t/1e3,this.zone,this.boatLv,this.speed),c=performance.now()<this.rockUntil?.07*Math.sin(t/110)*((this.rockUntil-performance.now())/1800):0,l=this.waveKick; + this.boat.position.set(a.x+l.dx,a.y+l.dy),this.boat.rotation=a.rotation+c+l.rot,this.boat.skew.set(a.skew,0),this.boat.scale.set(hUi*a.scaleX,hUi*a.scaleY);
- ),this.boatShadow.position.set(a.waterX+1.5,a.waterY+2),this.boatShadow.rotation=this.boat.rotation,this.boatWater.update(s,{ + ),this.boatShadow.position.set(a.waterX+1.5+l.dx,a.waterY+2+l.dy),this.boatShadow.rotation=this.boat.rotation,this.boatWater.update(s,{
+ this.waveStep(s);
- var i; - t.view.destroy(),t.src.destroy({ + var i,s,e; + null==(i=t.defeat)||i.done(),t.view.destroy(),t.src.destroy({
- ),t.rt.destroy(!0),null==(i=t.blur)||i.destroy()} + ),t.rt.destroy(!0),null==(s=t.blur)||s.destroy(),null==(e=t.glow)||e.destroy()}
- const w="megalodon"===n||"whaleShark"===n||"sturgeon"===n||"turtle"===n,m="megalodon"===n||"whaleShark"===n||"sturgeon"===n||"turtle"===n?{ + const g="megalodon"===n||"whaleShark"===n||"sturgeon"===n||"turtle"===n||nBi(n),m=g?{
- ),_=new Ye(as.EMPTY),M=new Ye(as.EMPTY)):"turtle"===n?(A=new FLi,_=new Ye(as.EMPTY),M=new Ye(as.EMPTY)):"shark"===n||"megalodon"===n||"whaleShark"===n||"sturgeon"===n?(A=new nLi(n),_=new Ye(as.EMPTY),M=new Ye(as.EMPTY)):"manta"===n||"catfish"===n||"eel"===n?(A=new CNi(n,m.sharp),_=new Ye(as.EMPTY),M=new Ye(as.EMPTY)):h.rope?(b=Array.from({ + ),_=new Ye(as.EMPTY),M=new Ye(as.EMPTY)):nBi(n)?(A=new GBi(n),_=new Ye(as.EMPTY),M=new Ye(as.EMPTY)):"turtle"===n?(A=new sBi,_=new Ye(as.EMPTY),M=new Ye(as.EMPTY)):"shark"===n||"megalodon"===n||"whaleShark"===n||"sturgeon"===n?(A=new NDi(n),_=new Ye(as.EMPTY),M=new Ye(as.EMPTY)):"manta"===n||"catfish"===n||"eel"===n?(A=new eDi(n,m.sharp),_=new Ye(as.EMPTY),M=new Ye(as.EMPTY)):h.rope?(b=Array.from({
- const S=w?r*("turtle"===n?1.15:.43):Math.max(m.sharp.height,h.rope?0:m.sharp.width)*v,T=Math.ceil(.5*(1.1*r+1.15*S+40)),C=Mv.create({ + const S=g?r*(nBi(n)?2.2*LBi(n):"turtle"===n?1.15:.43):Math.max(m.sharp.height,h.rope?0:m.sharp.width)*v,T=Math.ceil(.5*(1.1*r+1.15*S+40)),C=Mv.create({
+ static makeGlow(i){ + if(!t.glowTex){ + const i=document.createElement("canvas"); + i.width=i.height=64; + const s=i.getContext("2d"),e=s.createRadialGradient(32,32,0,32,32,32); + e.addColorStop(0,"rgba(255,246,190,1)"),e.addColorStop(.16,"rgba(255,228,120,0.95)"),e.addColorStop(.45,"rgba(255,200,70,0.32)"),e.addColorStop(1,"rgba(255,190,60,0)"),s.fillStyle=e,s.fillRect(0,0,64,64),t.glowTex=as.from(i)} + const s=new Ye(t.glowTex); + return s.anchor.set(.5),s.blendMode="add",s.eventMode="none",i.addChild(s),s}
+ var e;
- const i=TDi[c.kind],a=i.need*o; + const i=EUi[l.kind],c=i.need*a,u=l.defeat?{ + x:l.x,y:l.y,dir:l.dir,phase:l.phase} + :null;
- c.v+=(_-c.v)*(1-Math.exp(.35*-s)),c.x+=Math.cos(c.dir)*c.v*s,c.y+=Math.sin(c.dir)*c.v*s,c.phase+=s*(gNi(c.kind,c.v,c.L)??i.freq*Math.PI*2*(.62+.38*c.effort)); + l.v+=(b-l.v)*(1-Math.exp(.35*-s)),l.x+=Math.cos(l.dir)*l.v*s,l.y+=Math.sin(l.dir)*l.v*s,l.phase+=s*(HLi(l.kind,l.v,l.L)??i.freq*Math.PI*2*(.62+.38*l.effort)),u&&this.defeatStep(l,u,s);
- c.depth+=(y-c.depth)*(1-Math.exp(-s*(c.leaving?.2:.3))); + l.depthV=(l.depthV??0)+((A-l.depth)*(l.leaving?.2:.3)-(l.depthV??0))*(1-Math.exp(1.5*-s)),l.depth+=l.depthV*s;
+ else if(l.rig&&nBi(l.kind)&&NBi(l.kind)){ + const i=l.L*x,s=NBi(l.kind),e=ZLi(t.trailAt(l.trail,l,0),t.trailDir(l.trail,l,.15*i,.12*i),s=>t.trailDir(l.trail,l,s,.07*i),i,s.nose,s.tail); + l.rig.pose(i,l.phase,l.effort,l.bank,t=>{ + const i=tDi(e,t); + return{ + x:i.x-S.x,y:i.y-S.y,a:i.a} + } + ); + for(let t=1; + t<=4; + t++){ + const s=tDi(e,i*t/5); + R=Math.min(R,Math.hypot(s.x-this.bx,s.y-this.by))} + }
+ (null==(e=l.defeat)?void 0:e.pose)&&this.defeatLook(l);
- if(c.view.visible=R,R&&c.view.alpha>.002&&ES.app.renderer.render({ + l.view.visible=P; + const N=l.rig&&"light"in l.rig?l.rig.light:null; + if(N&&!l.glow&&(l.glow=t.makeGlow(this.giantLayer)),l.glow&&(l.glow.visible=P&&!!N&&!l.defeat,N&&(l.glow.position.set(l.view.x+N.x,l.view.y+N.y),l.glow.scale.set(7*N.r/32),l.glow.alpha=Math.min(1,l.view.alpha/i.alpha)*N.flicker*(1-.5*l.depth))),P&&l.view.alpha>.002&&ES.app.renderer.render({
+ get schoolModes(){ + return SGi(this.key)}
- ,h=Qt((t,i)=>!this.isLand(t,i)&&this.shoreDist(t,i)>=30,"water"),r=Qt((t,i)=>h(t,i)&&!this.unexplored(t,i),"seen"),o=s??hLi[Math.floor(Math.random()*hLi.length)]; - let a=null; - if("swirl"===o){ - const t=kLi(e,n,h,Math.random,r); - t&&(a={ - mode:"swirl",...t} - )} - if("scatter"===o){ - const t=ILi(e,n,h,Math.random,!0); - t&&(a={ - mode:"scatter",pts:t,boat:n} - )} - if(!a){ - const t=ILi(e,n,h,Math.random); - t&&(a={ - mode:"stream",pts:t} - )} - return!!a&&(this.school.start(i??dLi(this.zone,Math.random),a,1e9*Math.random()|0),!0)} + ,h=Qt((t,i)=>!this.isLand(t,i)&&this.shoreDist(t,i)>=30,"water"),r=Qt((t,i)=>h(t,i)&&!this.unexplored(t,i),"seen"),o=s?[s]:SGi(this.key),a=AGi(s??TGi(o,this.lastSchool,Math.random),o,this.lastSchool,e,n,h,Math.random,r); + return!!a&&(this.lastSchool=a.mode,this.school.start(i??OGi(a.mode,this.zone,Math.random),a,1e9*Math.random()|0,{ + color:CGi(Math.random),sizeK:DDi.SIZE[this.zone]} + ),!0)}
+ monsterWave(t,i,s,e=!1,n){ + return new Promise(h=>this.waves.push({ + t:0,from:{ + x:t.x,y:t.y} + ,tail:n??{ + x:t.x,y:t.y} + ,size:zGi(i),blocked:s<=0,dmg:s,broke:e,done:h} + ))} + expectWave(){ + var i; + return null==(i=this.waveWait)||i.resolve(!1),new Promise(i=>{ + const s=setTimeout(()=>{ + var t; + (null==(t=this.waveWait)?void 0:t.timer)===s&&(this.waveWait=null),i(!1)} + ,2500/t.fxSpeed); + this.waveWait={ + resolve:Qt(t=>{ + clearTimeout(s),this.waveWait=null,i(t)} + ,"resolve"),timer:s} + } + )} + waveStep(i){ + var s; + const e=this.waveG.clear(); + let n=0,h=0,r=0; + for(const o of this.waves){ + const a=o.t,c=o.t+=i*t.fxSpeed,l={ + x:this.bx,y:this.by} + ,u=l.x-o.from.x,d=l.y-o.from.y,f=Math.max(1,Math.hypot(u,d)),p=u/f,w=d/f,g=tBi(a,c,o.size,o.blocked); + g.crown&&this.splash(o.tail.x,o.tail.y,Math.round(o.size.burst/2),15004914,.7*o.size.crown); + const m=QGi(c,o.size,o.blocked); + if(m){ + const s=o.from.x+28*p,n=o.from.y+28*w,h=l.x-16*p,r=l.y-16*w,a=s+(h-s)*m.p,c=n+(r-n)*m.p,u=-w,d=p,f=m.half; + e.moveTo(a-26*p+u*f*.92,c-26*w+d*f*.92).quadraticCurveTo(a+6*p,c+6*w,a-26*p-u*f*.92,c-26*w-d*f*.92).lineTo(a-2*p-u*f,c-2*w-d*f).quadraticCurveTo(a+10*p,c+10*w,a-2*p+u*f,c-2*w+d*f).closePath().fill({ + color:15267830,alpha:.22*m.alpha} + ),e.moveTo(a-6*p+u*f,c-6*w+d*f).quadraticCurveTo(a+12*p,c+12*w,a-6*p-u*f,c-6*w-d*f).stroke({ + color:16777215,width:2+f/20,alpha:.95*m.alpha,cap:"round"} + ); + for(let t=0; + t<9; + t++){ + const i=2*(t/8-.5),s=3-9*i*i+4*(LAi(31*t+7)%100/100-.5); + e.circle(a+p*s+u*i*f,c+w*s+d*i*f,1.4+LAi(17*t+3)%100/70).fill({ + color:16777215,alpha:.9*m.alpha} + )} + Math.random()<30*i&&this.addFoam(a-10*p+u*(Math.random()-.5)*f*1.4,c-10*w+d*(Math.random()-.5)*f*1.4,1.2+1.4*Math.random(),.6/t.fxSpeed,.45*m.alpha)} + if(g.hit){ + const i={ + x:l.x-14*p,y:l.y-14*w} + ; + if(o.blocked)this.splash(i.x-30*p,i.y-30*w,6,15004914,14),this.floatTag("끄떡없음",8378016,this.bx,this.by-64); + else{ + this.crowns.push({ + x:i.x,y:i.y,age:0,life:.55/t.fxSpeed,size:o.size.crown,t:Math.floor(4*Math.random()),rot:Math.random()*Math.PI*2} + ); + const s=Math.atan2(-w,-p); + for(let e=0; + e<o.size.burst; + e++){ + const e=s+2.2*(Math.random()-.5),n=(25+45*Math.random())*t.fxSpeed; + this.particles.push({ + x:i.x,y:i.y,vx:Math.cos(e)*n,vy:Math.sin(e)*n*.6,z:0,vz:(60+60*Math.random())*t.fxSpeed,life:.65/t.fxSpeed,age:0,size:1.2+Math.random(),color:15004914} + )} + o.broke||this.floatTag(`내구도 −${ + LSi(o.dmg)} + `,16751752,this.bx,this.by-64),o.size.shake&&this.cameraShake(o.size.shake,180/t.fxSpeed),KG(o.size.shake>=2?"heavy":"medium"); + try{ + XG.getInstance().playSFX(XG.SFX_STONE_BREAK,.25+.1*o.size.shake)} + catch{ + } + } + null==(s=this.waveWait)||s.resolve(!0)} + const v=ZGi(c,o.size,o.blocked); + n+=p*v.push,h+=w*v.push,r+=v.rot,g.done&&o.done()} + this.waves=this.waves.filter(t=>t.t<=XGi(t.size,t.blocked)+1.2),this.waveKick={ + dx:n,dy:h,rot:r} + }
+ get fxSpeed(){ + return t.fxSpeed} + defeatBoss(i){ + const s=this.giants.find(t=>!t.leaving&&t.vanish<.5)??this.giants[0]; + return s?s.defeat?new Promise(t=>{ + const i=s.defeat.done; + s.defeat.done=()=>{ + i(),t(!0)} + } + ):(this.nextGiantAt=Math.max(this.nextGiantAt,performance.now()+6e4),new Promise(e=>{ + var n; + let h=!1; + s.defeat={ + t:0,dir:t.trailDir(s.trail,s,.18*s.L,.13*s.L),drift:0,base:(null==(n=s.flinch)?void 0:n.base)??s.view.tint,pose:null,done:Qt(()=>{ + var t; + if(!h){ + if(h=!0,null==(t=s.defeat)?void 0:t.onCard){ + const t=s.defeat.onCard; + s.defeat.onCard=void 0,t()} + e(!0)} + } + ,"done"),onCard:i} + } + )):(null==i||i(),Promise.resolve(!1))} + defeatStep(i,s,e){ + const n=i.defeat,h=n.t; + n.t+=e*t.fxSpeed; + const r=HGi(n.t),o=WGi(h,n.t),a=r.drift-n.drift; + n.drift=r.drift,n.pose=r,i.x=s.x+Math.cos(n.dir)*a,i.y=s.y+Math.sin(n.dir)*a,i.dir=s.dir,i.w=0,i.phase=s.phase+(i.phase-s.phase)*r.rate*t.fxSpeed,i.leaving=!1,i.vanish=0; + const c=t.trailAt(i.trail,i,.5*i.L); + for(const l of o.rings)this.ripples.push({ + x:c.x,y:c.y,age:0,life:l.life/t.fxSpeed,r0:l.r0,r1:l.r1,alpha:l.alpha} + ); + for(let t=0; + t<o.splashes; + t++)this.splash(c.x,c.y,6,15004914,24); + for(const l of o.bubbles){ + const i=LAi(7919*l+13)/4294967296*Math.PI*2,s=10+LAi(104729*l+7)%30; + this.addFoam(c.x+Math.cos(i)*s,c.y+Math.sin(i)*s*.8,1.6+l%3,1.1/t.fxSpeed,.6,0,-14*t.fxSpeed)} + if(o.shake&&this.cameraShake(BGi.SHAKE_PX,BGi.SHAKE_MS/t.fxSpeed),o.card&&n.onCard){ + const t=n.onCard; + n.onCard=void 0,t()} + r.done&&(i.vanish=1,n.done())} + defeatLook(t){ + const i=t.defeat,s=i.pose,e=s.scale/.5; + t.view.setFromMatrix((new Si).scale(e,e).rotate(-i.dir).scale(1,s.squash).rotate(i.dir+s.rot).translate(t.view.x,t.view.y)),t.view.tint=VGi(VGi(i.base,BGi.BELLY,s.belly),16777215,.75*s.flash),t.view.alpha*=s.alpha*(1+.5*s.belly),t.blur&&(t.blur.strength+=s.blur)} + defeatWarp(t,i,s){ + var e; + const n=null==(e=t.defeat)?void 0:e.pose; + if(!n)return{ + x:i,y:s,rot:0} + ; + const h=t.defeat.dir,r=Math.cos(h),o=Math.sin(h),a=(i*r+s*o)*n.scale,c=(-i*o+s*r)*n.scale*n.squash,l=h+n.rot; + return{ + x:a*Math.cos(l)-c*Math.sin(l),y:a*Math.sin(l)+c*Math.cos(l),rot:n.rot} + }
- const i=this.giants.find(t=>!t.leaving&&t.vanish<.5); + const i=this.giants.find(t=>!t.leaving&&t.vanish<.5&&!t.defeat);
- if(h)return{ - ...h,x:i.view.x+h.x,y:i.view.y+h.y,...n} - ; + if(h){ + const t=this.defeatWarp(i,h.x,h.y); + return{ + ...h,x:i.view.x+t.x,y:i.view.y+t.y,angle:h.angle+t.rot,...n} + }
- const s=this.giants.find(t=>!t.leaving&&t.vanish<.5&&t.view.alpha>.12); + const s=this.giants.find(t=>!t.leaving&&t.vanish<.5&&t.view.alpha>.12&&!t.defeat);
- s} + cTi(i)}
- `,16777215,e>=2?nki[e]:eki[Math.min(5,s)],10,6); + `,16777215,e>=2?bxi[e]:Mxi[cTi(i)],10,6);
- this.splash(r.x,r.y,4,14207136),h>=3&&this.burst(r.x,r.y,h>=4?24:12,eki[Math.min(5,t.star)]),i||t.star>=4||this.tag(`${ + this.splash(r.x,r.y,4,14207136),h>=3&&this.burst(r.x,r.y,h>=4?24:12,Mxi[cTi(t.id)]),i||t.star>=4||this.tag(`${
- c.destroy(),this.splash(this.bx,this.by,3,14207136),o>=3&&this.burst(this.bx,this.by,o>=4?24:12,eki[Math.min(5,t.star)]),i||t.star>=4||this.tag(`${ + c.destroy(),this.splash(this.bx,this.by,3,14207136),o>=3&&this.burst(this.bx,this.by,o>=4?24:12,Mxi[cTi(t.id)]),i||t.star>=4||this.tag(`${
- Qt(FDi,"FishingSeaMap"),Zt(FDi,"DEFAULT_H",400),Zt(FDi,"hintSeen",!1),Zt(FDi,"lightTex",null),Zt(FDi,"regionTex",new Map),Zt(FDi,"MINI",108); + Qt(GUi,"FishingSeaMap"),Zt(GUi,"DEFAULT_H",400),Zt(GUi,"hintSeen",!1),Zt(GUi,"lightTex",null),Zt(GUi,"glowTex",null),Zt(GUi,"regionTex",new Map),Zt(GUi,"MINI",108),Zt(GUi,"fxSpeed",1),Zt(GUi,"devAnyZone",!1);
GradeCardArt 2 hunks, 205 statements
- luck:'<path d="M12 12c-2.5-4.5-6.5-3-5.5 0 .8 2.4 5.5 0 5.5 0zm0 0c4.5-2.5 3-6.5 0-5.5-2.4.8 0 5.5 0 5.5zm0 0c2.5 4.5 6.5 3 5.5 0-.8-2.4-5.5 0-5.5 0zm0 0c-4.5 2.5-3 6.5 0 5.5 2.4-.8 0-5.5 0-5.5z"/><path d="M13 14l4 6"/>',hp:'<path d="M12 20s-7-4.4-7-9.5A4 4 0 0 1 12 8a4 4 0 0 1 7 2.5C19 15.6 12 20 12 20z"/>',armor:'<path d="M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6z"/>',repair:'<path d="M14.5 6.5a4 4 0 0 0-5.3 5.3L4 17l3 3 5.2-5.2a4 4 0 0 0 5.3-5.3l-2.6 2.6-2.4-.6-.6-2.4z"/>',speed:'<path d="M3 8h11a3 3 0 1 0-3-3M3 12h15a3 3 0 1 1-3 3M3 16h7"/>',aim:'<circle cx="12" cy="12" r="7"/><circle cx="12" cy="12" r="2.5"/><path d="M12 2v3M12 19v3M2 12h3M19 12h3"/>',power:'<path d="M4 20L18 6M18 6l-1-3 4 1-1 3zM8 14l-3-1M10 16l1 3"/>',steal:'<path d="M7 11V6a1.5 1.5 0 0 1 3 0v4M10 10V4.5a1.5 1.5 0 0 1 3 0V10M13 10V5.5a1.5 1.5 0 0 1 3 0V12M16 9a1.5 1.5 0 0 1 3 0v5a6 6 0 0 1-6 6h-1a6 6 0 0 1-5-2.7L4 13.5a1.5 1.5 0 0 1 2.6-1.5L7 13"/>',icebox:'<path d="M4 6h16l-2 13H6zM4 6l4 13M20 6l-4 13M12 6v13M5 10.5h14M5.6 15h12.8"/>',big:'<path d="M3 12c3-5 9-6 13-2l5-3-1 5 1 5-5-3c-4 4-10 3-13-2z"/><circle cx="8" cy="11" r="1"/>',star:'<path d="M12 3l2.7 5.6 6.1.9-4.4 4.3 1 6.1L12 17l-5.4 2.9 1-6.1-4.4-4.3 6.1-.9z"/>',protect:'<rect x="5" y="11" width="14" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/>',lock:'<rect x="5" y="11" width="14" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/>',map:'<path d="M9 4L3 6v14l6-2 6 2 6-2V4l-6 2z"/><path d="M9 4v14M15 6v14"/>',line:'<path d="M6 4h12M6 20h12M8 4v16M16 4v16M8 9h8M8 14h8"/>',clock:'<circle cx="12" cy="12" r="8"/><path d="M12 7v5l3 2"/>',moon:'<path d="M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5z"/>',weight:'<path d="M8.5 9a3.5 3.5 0 1 1 7 0"/><path d="M6 9.5h12l2 10H4z"/>',ruler:'<rect x="3" y="8" width="18" height="8" rx="1.5"/><path d="M7 8v3M10.5 8v4.5M14 8v3M17.5 8v4.5"/>',pin:'<path d="M12 21s-6-6-6-10.5a6 6 0 0 1 12 0C18 15 12 21 12 21z"/><circle cx="12" cy="10.5" r="2"/>',shield:'<path d="M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6z"/><path d="M9 12l2.2 2.2L15 10"/>',trophy:'<path d="M8 4h8v5a4 4 0 0 1-8 0zM8 6H5c0 2.5 1.3 3.8 3 4M16 6h3c0 2.5-1.3 3.8-3 4M12 13v4M9 20h6"/>',depth:'<path d="M3 6.5c1.5-1.2 3-1.2 4.5 0s3 1.2 4.5 0 3-1.2 4.5 0 3 1.2 4.5 0"/><path d="M12 10v10M8.5 16.5L12 20l3.5-3.5"/>'} + luck:'<path d="M12 12c-2.5-4.5-6.5-3-5.5 0 .8 2.4 5.5 0 5.5 0zm0 0c4.5-2.5 3-6.5 0-5.5-2.4.8 0 5.5 0 5.5zm0 0c2.5 4.5 6.5 3 5.5 0-.8-2.4-5.5 0-5.5 0zm0 0c-4.5 2.5-3 6.5 0 5.5 2.4-.8 0-5.5 0-5.5z"/><path d="M13 14l4 6"/>',hp:'<path d="M12 20s-7-4.4-7-9.5A4 4 0 0 1 12 8a4 4 0 0 1 7 2.5C19 15.6 12 20 12 20z"/>',armor:'<path d="M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6z"/>',repair:'<path d="M14.5 6.5a4 4 0 0 0-5.3 5.3L4 17l3 3 5.2-5.2a4 4 0 0 0 5.3-5.3l-2.6 2.6-2.4-.6-.6-2.4z"/>',speed:'<path d="M3 8h11a3 3 0 1 0-3-3M3 12h15a3 3 0 1 1-3 3M3 16h7"/>',aim:'<circle cx="12" cy="12" r="7"/><circle cx="12" cy="12" r="2.5"/><path d="M12 2v3M12 19v3M2 12h3M19 12h3"/>',power:'<path d="M4 20L18 6M18 6l-1-3 4 1-1 3zM8 14l-3-1M10 16l1 3"/>',steal:'<path d="M7 11V6a1.5 1.5 0 0 1 3 0v4M10 10V4.5a1.5 1.5 0 0 1 3 0V10M13 10V5.5a1.5 1.5 0 0 1 3 0V12M16 9a1.5 1.5 0 0 1 3 0v5a6 6 0 0 1-6 6h-1a6 6 0 0 1-5-2.7L4 13.5a1.5 1.5 0 0 1 2.6-1.5L7 13"/>',icebox:'<path d="M4 6h16l-2 13H6zM4 6l4 13M20 6l-4 13M12 6v13M5 10.5h14M5.6 15h12.8"/>',big:'<path d="M3 12c3-5 9-6 13-2l5-3-1 5 1 5-5-3c-4 4-10 3-13-2z"/><circle cx="8" cy="11" r="1"/>',star:'<path d="M12 3l2.7 5.6 6.1.9-4.4 4.3 1 6.1L12 17l-5.4 2.9 1-6.1-4.4-4.3 6.1-.9z"/>',protect:'<rect x="5" y="11" width="14" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/>',sell:'<circle cx="10" cy="14" r="6"/><path d="M10 11v6M8.2 12.6c.4-.8 3.2-1 3.4.3.2 1.4-3.5 1-3.4 2.6.1 1.2 3 1.2 3.6.2"/><path d="M18 3v8M15 6l3-3 3 3"/>',lock:'<rect x="5" y="11" width="14" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/>',map:'<path d="M9 4L3 6v14l6-2 6 2 6-2V4l-6 2z"/><path d="M9 4v14M15 6v14"/>',line:'<path d="M6 4h12M6 20h12M8 4v16M16 4v16M8 9h8M8 14h8"/>',clock:'<circle cx="12" cy="12" r="8"/><path d="M12 7v5l3 2"/>',moon:'<path d="M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5z"/>',weight:'<path d="M8.5 9a3.5 3.5 0 1 1 7 0"/><path d="M6 9.5h12l2 10H4z"/>',ruler:'<rect x="3" y="8" width="18" height="8" rx="1.5"/><path d="M7 8v3M10.5 8v4.5M14 8v3M17.5 8v4.5"/>',pin:'<path d="M12 21s-6-6-6-10.5a6 6 0 0 1 12 0C18 15 12 21 12 21z"/><circle cx="12" cy="10.5" r="2"/>',shield:'<path d="M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6z"/><path d="M9 12l2.2 2.2L15 10"/>',trophy:'<path d="M8 4h8v5a4 4 0 0 1-8 0zM8 6H5c0 2.5 1.3 3.8 3 4M16 6h3c0 2.5-1.3 3.8-3 4M12 13v4M9 20h6"/>',depth:'<path d="M3 6.5c1.5-1.2 3-1.2 4.5 0s3 1.2 4.5 0 3-1.2 4.5 0 3 1.2 4.5 0"/><path d="M12 10v10M8.5 16.5L12 20l3.5-3.5"/>'}
- const DIi=723725,GIi=1644829,BIi=2368554,UIi=3158071,FIi=4013379,$Ii=3158071,HIi=3881795,WIi=.62,VIi=3815998,jIi=16106577,KIi=2825477,zIi=15921908,YIi=10592678,qIi=7237235,XIi=8378016,JIi=16751752,QIi=15262964,ZIi=921104,tki=3813926,iki=2763309,ski=8158338,eki=[3815998,10135467,6142819,4886754,10513640,15901498,16734815],nki=[0,7315384,15247664,16732013],hki={ + const Rki=[3032396,10135467,6142819,4886754,10513640,16734815,16757806,4184298,15967960,7044351],Pki=Qt(t=>t>=9?9414911:8===t?16762088:7===t?4184298:null,"gradeGlow"),Nki=Qt(t=>Math.max(1,Math.min(9,Math.round(t))),"clampGrade"); + function Lki(t){ + const i=Nki(t); + if(i<=4)return Array.from({ + length:i} + ,()=>"s"); + const s=i-5,e=Math.floor(s/2),n=s-e; + return[...Array(e).fill("s"),9===i?"kr":"k",...Array(n).fill("s")]} + function Dki(t){ + const i=Nki(t); + return 7===i?[{ + corner:"tl",kind:"cyan"} + ]:8===i?[{ + corner:"tl",kind:"pink"} + ,{ + corner:"br",kind:"pink"} + ]:9===i?["tl","tr","bl","br"].map(t=>({ + corner:t,kind:"rainbow"} + )):[]} + Qt(Lki,"starLayout"),Qt(Dki,"pearls"); + const Gki=Qt(t=>Nki(t)>=9,"hasCrown"),Bki=Qt(t=>Nki(t)>=8,"isCoated"),Uki=4.6,Fki=[0,3.8,2],$ki=Qt(t=>Nki(t)>=9?3:8===Nki(t)?2:0,"glintCount"); + function Hki(t){ + const i=(t%Uki+Uki)%Uki,s=Qt(t=>{ + const s=(i-t)/.7; + return s>0&&s<1?Math.pow(Math.sin(Math.PI*s),1.5):0} + ,"pop"); + return{ + ho:.5-.5*Math.cos(2*Math.PI*i/Uki),glints:[s(Fki[0]),s(Fki[1]),s(Fki[2])]} + } + Qt(Hki,"coat"); + const Wki=Qt(t=>Math.max(0,Math.min(23,Math.round(23*t))),"holoFrame"),Vki=Qt(t=>({ + scale:.35+.75*t,rot:20*t*Math.PI/180,alpha:t} + ),"glintPose"); + function jki(t){ + let i=0|t; + return()=>{ + i=i+1831565813|0; + let t=Math.imul(i^i>>>15,1|i); + return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296} + } + Qt(jki,"rng"); + const Kki=Qt(t=>jki(31*t)()*Uki,"cardPhase"); + function zki(t,i,s){ + const e=jki(7919*t+104729*i+13),n=[]; + let h=0; + for(; + n.length<s&&h++<200; + ){ + const t=[.16+.68*e(),.12+.5*e()]; + (n.every(i=>Math.hypot(i[0]-t[0],i[1]-t[1])>.32)||h>150)&&n.push(t)} + return n} + Qt(zki,"glintSpots"); + const Yki=Qt(t=>CS.getAssetPath(`fishing/topdown/grade_card/${ + t} + ?v=${ + SS.appVersion} + &art=20261011-grade-card-v1`),"path"),qki=class{ + static load(){ + if(this.loading)return this.loading; + const t={ + autoGenerateMipmaps:!0,mipmapFilter:"nearest"} + ,i=Qt(i=>fd.load({ + src:Yki(`${ + i} + .webp`),parser:"loadTextures",data:t} + ),"get"); + return this.loading=(async()=>{ + try{ + const[t,s,e,n,h]=await Promise.all([Promise.all(Array.from({ + length:9} + ,(t,s)=>i(`card_${ + s+1} + `))),i("parts"),i("gloss"),i("holo_8"),i("holo_9")]); + this.cards=t,this.parts=Array.from({ + length:8} + ,(t,i)=>new as({ + source:s.source,frame:new Ui(i%4*64,64*Math.floor(i/4),64,64)} + )),this.glossTex=e; + const r=Qt(t=>Array.from({ + length:24} + ,(i,s)=>new as({ + source:t.source,frame:new Ui(s%6*96,96*Math.floor(s/6),96,96)} + )),"cut"); + return this.holo={ + 8:r(n),9:r(h)} + ,Zki.redrawAll(),!0} + catch(urt){ + return!1} + } + )(),this.loading} + static get ready(){ + return 9===this.cards.length} + static card(t){ + return this.cards[Nki(t)-1]} + static part(t){ + return this.parts[t]} + static gloss(){ + return this.glossTex} + static holoFrames(t){ + return Nki(t)>=9?this.holo[9]:this.holo[8]} + } + ; + Qt(qki,"GradeCardArt"),Zt(qki,"cards",[]),Zt(qki,"parts",[]),Zt(qki,"glossTex",null),Zt(qki,"holo",{ + 8:[],9:[]} + ),Zt(qki,"loading",null); + let Xki=qki,Jki=0; + const Qki=class t{ + constructor(i){ + Zt(this,"back",new Ve),Zt(this,"front",new Ve),Zt(this,"glow",new ip),Zt(this,"bg",new Ye),Zt(this,"plain",new ip),Zt(this,"holo",new Ye),Zt(this,"gloss",new Ye),Zt(this,"glints",[]),Zt(this,"deco",new Ve),Zt(this,"stars",new Ve),Zt(this,"star",null),Zt(this,"tlPearl",!0),Zt(this,"seed",++Jki),Zt(this,"phase",Kki(this.seed)),Zt(this,"cycle",-1),this.size=i,this.back.eventMode="none",this.front.eventMode="none",this.back.addChild(this.glow,this.plain,this.bg,this.holo),this.front.addChild(this.gloss,this.deco,this.stars),t.track(this),Xki.load()} + set(t,i=!0){ + this.star=null===t?null:Nki(t),this.tlPearl=i,this.draw()} + get grade(){ + return this.star} + showStars(t){ + this.stars.visible=t} + draw(){ + const i=this.size,s=this.star,e=Xki.ready; + if(this.glow.clear(),this.plain.clear(),this.deco.removeChildren().forEach(t=>t.destroy()),this.stars.removeChildren().forEach(t=>t.destroy()),this.glints.forEach(t=>t.destroy()),this.glints=[],this.bg.visible=this.holo.visible=this.gloss.visible=!1,null===s)return this.plain.roundRect(0,0,i,i,.2*i).fill(2765112).roundRect(.05*i,.05*i,.9*i,.9*i,.144*i).fill(1054234),void t.live.delete(this); + const n=Pki(s); + if(null!==n&&this.glow.roundRect(-5,-5,i+10,i+10,.2*i+5).fill({ + color:n,alpha:.16} + ).roundRect(-3,-3,i+6,i+6,.2*i+3).fill({ + color:n,alpha:.35} + ),e){ + this.bg.texture=Xki.card(s),this.bg.width=this.bg.height=i,this.bg.visible=!0; + const e=.15*i,n=-.008*i,h={ + tl:[n,n],tr:[i-e-n,n],bl:[n,i-e-n],br:[i-e-n,i-e-n]} + ; + for(const t of Dki(s)){ + if("tl"===t.corner&&!this.tlPearl)continue; + const i=new Ye(Xki.part("cyan"===t.kind?2:"pink"===t.kind?3:4)); + i.width=i.height=e,i.position.set(...h[t.corner]),this.deco.addChild(i)} + if(Gki(s)){ + const t=new Ye(Xki.part(5)),s=.28*i; + t.width=t.height=s,t.position.set(.36*i,.2*-i),this.deco.addChild(t)} + if(Bki(s)){ + this.holo.visible=!0,this.holo.width=this.holo.height=i,this.holo.alpha=s>=9?.5:.36; + const e=Xki.gloss(); + e&&(this.gloss.texture=e,this.gloss.width=this.gloss.height=i,this.gloss.visible=!0); + for(let t=0; + t<$ki(s); + t++){ + const t=new Ye(Xki.part(6)); + t.anchor.set(.5),t.alpha=0,this.glints.push(t),this.deco.addChild(t)} + this.cycle=-1,t.live.add(this),t.startTicker(),this.tick(t.clock)} + else t.live.delete(this)} + else this.plain.roundRect(0,0,i,i,.2*i).fill(Rki[s]).roundRect(.05*i,.05*i,.9*i,.9*i,.144*i).fill(1447964); + this.drawStars(s,e)} + drawStars(t,i){ + const s=this.size,e=Lki(t),n=.165*s,h=.27*s,r=-.022*s,o=e.map(t=>"s"===t?n:h),a=Math.max(...o),c=s+.42*a,l=o.reduce((t,i)=>t+i,0)+2*r*(e.length-1); + let u=(s-l)/2; + e.forEach((t,e)=>{ + const h=o[e],l="s"===t&&a>n?.02*s:0; + if(i){ + const i=new Ye(Xki.part("kr"===t?1:0)); + i.width=i.height=h,i.position.set(u,c-h-l),this.stars.addChild(i)} + else this.stars.addChild((new ip).circle(u+h/2,c-h/2-l,.36*h).fill(16767053).stroke({ + color:5911048,width:Math.max(1,.1*h)} + )); + u+=h+2*r} + )} + tick(t){ + const i=this.star; + if(null===i||!Bki(i))return; + const s=t+this.phase,e=Hki(s),n=Xki.holoFrames(i); + n.length&&(this.holo.texture=n[Wki(e.ho)]); + const h=Math.floor(s/Uki),r=this.size; + h!==this.cycle&&(this.cycle=h,zki(this.seed,h,this.glints.length).forEach(([t,i],s)=>this.glints[s].position.set(t*r,i*r))),this.glints.forEach((t,i)=>{ + const s=Vki(e.glints[i]),n=.29*r; + t.width=t.height=n*s.scale,t.rotation=s.rot,t.alpha=s.alpha,t.visible=s.alpha>.01} + )} + onStage(){ + var t; + let i=this.front; + for(; + i; + ){ + if(!i.visible||i.alpha<=0||i.destroyed)return!1; + if(!i.parent)return i===(null==(t=ES.app)?void 0:t.stage)||i.isRenderGroup; + i=i.parent} + return!1} + static startTicker(){ + this.ticking||(this.ticking=!0,vn.shared.add(this.step,this))} + static step(t){ + if(this.paused||(this.clock+=t.deltaMS/1e3*this.speed),this.acc+=t.deltaMS,!(this.acc<1e3/30)){ + this.acc%=1e3/30; + for(const t of this.live)t.front.destroyed||t.back.destroyed?this.live.delete(t):t.onStage()&&t.tick(this.clock); + this.live.size||(vn.shared.remove(this.step,this),this.ticking=!1)} + } + static track(t){ + Xki.ready||this.waiting.add(t)} + static redrawAll(){ + for(const t of this.waiting)t.front.destroyed||null===t.star||t.draw(); + this.waiting.clear()} + static setClock(t){ + this.clock=t; + for(const i of this.live)i.tick(t)} + static get now(){ + return this.clock} + } + ; + Qt(Qki,"GradeFrame"),Zt(Qki,"live",new Set),Zt(Qki,"ticking",!1),Zt(Qki,"acc",0),Zt(Qki,"clock",0),Zt(Qki,"speed",1),Zt(Qki,"paused",!1),Zt(Qki,"waiting",new Set); + let Zki=Qki; + const txi=723725,ixi=1644829,sxi=2368554,exi=3158071,nxi=4013379,hxi=3158071,rxi=3881795,oxi=.62,axi=3815998,cxi=16106577,lxi=2825477,uxi=15921908,dxi=10592678,fxi=7237235,pxi=8378016,wxi=16751752,gxi=15262964,mxi=921104,vxi=3813926,_xi=8158338,Mxi=[3815998,10135467,6142819,4886754,10513640,16734815,16757806,4184298,15967960,7044351],bxi=[0,7315384,15247664,16732013],yxi={
FishingTankPage 33 hunks, 196 statements
- v:1,text:"★1"} + v:1,text:"흔한 것만"}
- v:2,text:"★2 이하"} + v:2,text:"보통까지"}
- v:3,text:"★3 이하"} + v:3,text:"드문 것까지"} + ],NPi=[{ + v:0,text:"C 보통"} + ,{ + v:1,text:"B 대 이하"} + ],LPi=104,DPi=42,GPi=[{ + v:"full",text:"어망이 차면"} + ,{ + v:"catch",text:"잡자마자"} + ],BPi=[{ + v:1,text:"흔한 것만"} + ,{ + v:2,text:"보통까지"} + ,{ + v:3,text:"드문 것까지"}
- super(),Zt(this,"tabId","tank"),Zt(this,"view","net"),Zt(this,"scrollInShell",!1),Zt(this,"netLayer",new Ve),Zt(this,"capBg",new ip),Zt(this,"capNum",oki("",zIi,26)),Zt(this,"capOf",oki("",YIi,15)),Zt(this,"gradeCounts",[]),Zt(this,"capBar",new ip),Zt(this,"capNote",oki("도둑이 어망에 줄을 걸었어요. 줄을 끊어야 팔 수 있어요",JIi,13,!1)),Zt(this,"sellBtn",new gki("팔기",132,52,18)),Zt(this,"sellGlow",new ip),Zt(this,"glowTween",null),Zt(this,"cutBtn",new gki("줄 끊기",132,52,16)),Zt(this,"netEmpty",oki("어망이 비었어요. 잡은 물고기는 모두 여기에 담겨요.",qIi,14,!1)),Zt(this,"netList",new TR(rxi,ZRi,400,0)),Zt(this,"detail",new Ve),Zt(this,"card",null),Zt(this,"sheet",new Ve),Zt(this,"sheetOpen",!1),Zt(this,"sheetBg",new ip),Zt(this,"sheetBack",new Ve),Zt(this,"sheetTitle",oki("물고기 팔기",zIi,20)),Zt(this,"allChip",new fki("모두 고르기",150,40,14)),Zt(this,"starLb",oki("별",YIi,14)),Zt(this,"sizeLb",oki("크기",YIi,14)),Zt(this,"sizeNote",oki("특대·왕은 눌러서만",qIi,12,!1)),Zt(this,"starChips",uxi.map(t=>new fki(t.text,120,38,15))),Zt(this,"sizeChips",dxi.map(t=>new fki(t.text,120,38,15))),Zt(this,"sellList",new TR(rxi,ZRi,300,0)),Zt(this,"barBg",new ip),Zt(this,"barN",oki("",YIi,15)),Zt(this,"barCoin",Mki("gold",24)),Zt(this,"barGold",oki("",jIi,24)),Zt(this,"barEmpty",oki("",YIi,17)),Zt(this,"barEmptySub",oki("위 칩으로 한꺼번에 · 눌러서 하나씩",qIi,13,!1)),Zt(this,"barSell",new gki("팔기",200,60,19)),Zt(this,"pickStar",0),Zt(this,"pickSize",-1),Zt(this,"pickAll",!1),Zt(this,"pickAdd",new Set),Zt(this,"pickDel",new Set),Zt(this,"selling",!1),Zt(this,"confirm",new Ve),Zt(this,"aqLayer",new Ve),Zt(this,"dexLayer",new Ve),Zt(this,"raceChips",["전체",...dSi].map(t=>new fki(t,108,36,14))),Zt(this,"zoneChips",["전체",...fSi.map(t=>gSi[t])].map(t=>new fki(t,130,36,14))),Zt(this,"dexKnownLb",oki("잡은 종",YIi,14)),Zt(this,"dexProgress",oki("",zIi,16)),Zt(this,"dexBar",new ip),Zt(this,"dexList",new TR(cxi,ZRi,300,0)),Zt(this,"raceFilter","전체"),Zt(this,"zoneFilter","전체"),Zt(this,"selected",0),Zt(this,"lastSig",""),this.capBg.eventMode=this.capBar.eventMode=this.sellGlow.eventMode="none",this.capNum.position.set(18,10),this.capNote.position.set(18,48),this.netLayer.addChild(this.capBg,this.capNum,this.capOf,this.capBar,this.capNote),[3,2,1,0].forEach(t=>{ - const i=new Ve,s=(new ip).roundRect(0,0,20,20,6).fill(t?nki[t]:4868690),e=oki(cTi[t],16777215,13),n=oki("0",zIi,15); - e.position.set((20-e.width)/2,(20-e.height)/2),n.position.set(25,(20-n.height)/2),i.addChild(s,e,n),i.eventMode="none",this.gradeCounts.push({ - root:i,n} - ),this.netLayer.addChild(i)} - ),this.sellBtn.position.set(ZRi-18-132,12),this.sellBtn.onTap=()=>this.openSheet(),this.cutBtn.position.set(ZRi-18-132,12),this.cutBtn.onTap=async()=>{ + super(),Zt(this,"tabId","tank"),Zt(this,"view","net"),Zt(this,"scrollInShell",!1),Zt(this,"netLayer",new Ve),Zt(this,"netHead",new Oxi(yPi)),Zt(this,"sellBtn",new Dxi("팔기",LPi,DPi,Sxi)),Zt(this,"sellGlow",new ip),Zt(this,"glowTween",null),Zt(this,"cutBtn",new Dxi("줄 끊기",LPi,DPi,Sxi)),Zt(this,"autoBtn",new Ve),Zt(this,"autoBg",new ip),Zt(this,"autoText",Axi("자동 팔기",dxi,14)),Zt(this,"autoSwitch",new ip),Zt(this,"autoDrawn",""),Zt(this,"autoPanel",new Ve),Zt(this,"autoDraft",{ + ...qIi} + ),Zt(this,"autoBusy",!1),Zt(this,"netEmpty",Axi("어망이 비었어요. 잡은 물고기는 모두 여기에 담겨요.",dxi,Txi,!1)),Zt(this,"netList",new Tx(OPi,yPi,400,0)),Zt(this,"detail",new Ve),Zt(this,"card",null),Zt(this,"sheet",new Ve),Zt(this,"sheetOpen",!1),Zt(this,"sheetBg",new ip),Zt(this,"sheetBack",new Ve),Zt(this,"sheetTitle",Axi("물고기 팔기",uxi,24)),Zt(this,"allChip",new Nxi("모두 고르기",150,40,14)),Zt(this,"starLb",Axi("별",dxi,14)),Zt(this,"sizeLb",Axi("크기",dxi,14)),Zt(this,"sizeNote",Axi("특대·왕은 눌러서만",dxi,Txi,!1)),Zt(this,"starChips",PPi.map(t=>new Nxi(t.text,120,38,15))),Zt(this,"sizeChips",NPi.map(t=>new Nxi(t.text,120,38,15))),Zt(this,"sellList",new Tx(OPi,yPi,300,0)),Zt(this,"barBg",new ip),Zt(this,"barN",Axi("",dxi,Txi)),Zt(this,"barCoin",$xi("gold",24)),Zt(this,"barGold",Axi("",cxi,24)),Zt(this,"barEmpty",Axi("",dxi,Sxi)),Zt(this,"barEmptySub",Axi("위 칩으로 한꺼번에 · 눌러서 하나씩",dxi,Txi,!1)),Zt(this,"barSell",new Dxi("팔기",200,60,19)),Zt(this,"pickStar",0),Zt(this,"pickSize",-1),Zt(this,"pickAll",!1),Zt(this,"pickAdd",new Set),Zt(this,"pickDel",new Set),Zt(this,"selling",!1),Zt(this,"confirm",new Ve),Zt(this,"aqLayer",new Ve),Zt(this,"dexLayer",new Ve),Zt(this,"raceChips",["전체",...HSi].map(t=>new Nxi(t,108,36,14))),Zt(this,"zoneChips",["전체",...WSi.map(t=>jSi[t])].map(t=>new Nxi(t,130,36,14))),Zt(this,"dexHead",new Oxi(yPi)),Zt(this,"dexList",new Tx(xPi,yPi,300,0)),Zt(this,"raceFilter","전체"),Zt(this,"zoneFilter","전체"),Zt(this,"selected",0),Zt(this,"lastSig",""),this.sellGlow.eventMode="none",this.netLayer.addChild(this.netHead),this.sellBtn.position.set(yPi-LPi,1),this.sellBtn.onTap=()=>this.openSheet(),this.cutBtn.position.set(yPi-LPi,1),this.cutBtn.onTap=async()=>{
- ,this.netEmpty.position.set(4,100),this.netEmpty.setWrapWidth(ZRi-8),this.netList.y=88,this.netLayer.addChild(this.sellGlow,this.sellBtn,this.cutBtn,this.netEmpty,this.netList),this.sheetBg.eventMode="static"; + ,this.netEmpty.position.set(4,78),this.netEmpty.setWrapWidth(yPi-8),this.netList.y=66,this.netLayer.addChild(this.sellGlow,this.sellBtn,this.cutBtn,this.netEmpty,this.netList),this.autoBg.eventMode=this.autoSwitch.eventMode="none",this.autoBtn.addChild(this.autoBg,this.autoText,this.autoSwitch),this.autoBtn.position.set(yPi-LPi-8-128,1),this.autoBtn.eventMode="static",this.autoBtn.cursor="pointer",this.autoBtn.hitArea=new Ui(0,-4,128,50),this.autoBtn.on("pointertap",t=>{ + t.stopPropagation(),queueMicrotask(()=>this.openAuto())} + ),this.netLayer.addChild(this.autoBtn),this.autoPanel.visible=!1,this.sheetBg.eventMode="static";
- ),this.sheetTitle.position.set(60,9),this.allChip.soft=!0,this.allChip.position.set(ZRi-150,3),this.allChip.onTap=()=>this.pickRule("all",0),this.starLb.position.set(2,67),this.sizeLb.position.set(2,113); + ),this.sheetTitle.position.set(60,(46-this.sheetTitle.height)/2),this.allChip.soft=!0,this.allChip.position.set(yPi-150,3),this.allChip.onTap=()=>this.pickRule("all",0),this.starLb.position.set(2,67),this.sizeLb.position.set(2,113);
- ,this.sheet.addChild(this.sheetBg,this.sheetBack,this.sheetTitle,this.allChip,this.starLb,this.sizeLb,...this.starChips,...this.sizeChips,this.sizeNote,this.sellList,this.barBg,this.barN,this.barCoin,this.barGold,this.barEmpty,this.barEmptySub,this.barSell),this.sheet.visible=!1,this.detail.visible=!1,this.confirm.visible=!1; + ,this.sheet.addChild(this.sheetBg,this.sheetBack,this.sheetTitle,this.allChip,this.starLb,this.sizeLb,...this.starChips,...this.sizeChips,this.sizeNote,this.sellList,this.barBg,this.barN,this.barCoin,this.barGold,this.barEmpty,this.barEmptySub,this.barSell),this.sheet.visible=!1,this.detail.visible=!1,this.confirm.visible=!1,this.dexLayer.addChild(this.dexHead);
- t.soft=!0,t.dot=i?rki[dSi[i-1]]:null,t.resize(s,36),t.position.set(i*(s+8),0),t.onTap=()=>{ + t.soft=!0,t.dot=i?Exi[HSi[i-1]]:null,t.resize(s,36),t.position.set(i*(s+8),66),t.onTap=()=>{
- t.soft=!0,t.resize(e,36),t.position.set(i*(e+8),44),t.onTap=()=>{ + t.soft=!0,t.resize(e,36),t.position.set(i*(e+8),110),t.onTap=()=>{
- ),this.dexKnownLb.position.set(2,93),this.dexBar.eventMode="none",this.dexList.y=122,this.dexLayer.addChild(this.dexKnownLb,this.dexProgress,this.dexBar,this.dexList),this.addChild(this.netLayer,this.aqLayer,this.dexLayer,this.sheet,this.detail,this.confirm)} + ),this.dexList.y=158,this.dexLayer.addChild(this.dexList),this.addChild(this.netLayer,this.aqLayer,this.dexLayer,this.sheet,this.detail,this.autoPanel,this.confirm)}
- this.sheetOpen=!1,this.sheet.visible=!1,this.card=null,this.detail.visible=!1,this.hideConfirm(),this.stopGlow()} + this.sheetOpen=!1,this.sheet.visible=!1,this.card=null,this.detail.visible=!1,this.hideConfirm(),this.hideAuto(),this.stopGlow()}
- return this.confirm.visible?(this.hideConfirm(),!0):this.card?(this.closeDetail(),!0):!!this.sheetOpen&&(this.closeSheet(),!0)} + return this.confirm.visible?(this.hideConfirm(),!0):this.autoPanel.visible?(this.hideAuto(),!0):this.card?(this.closeDetail(),!0):!!this.sheetOpen&&(this.closeSheet(),!0)}
- var t,i,s; + var t,i,s,e;
+ |${ + (null==(e=h.autoSell)?void 0:e.on)??!1}
- const s=xIi.getInstance(),e=ORi.contentHeight,n=s.netCount(),h=s.netCap,r=h?n/h:0,o=n>=h,a=!!(null==(i=s.plunder)?void 0:i.raidBy); - this.capBg.clear().roundRect(0,0,ZRi,76,14).fill(BIi),this.capNum.text=`${ + const s=Oki.getInstance(),e=JRi.contentHeight,n=s.netCount(),h=s.netCap,r=n>=h,o=!!(null==(i=s.plunder)?void 0:i.raidBy),a=this.fishCells(),c=[3,2,1,0].map(t=>[HTi[t],a.filter(i=>i.c.grade===t).length]).filter(([,t])=>t>0).map(([t,i])=>`${
- `,this.capNum.textColor=o?sxi(1):zIi,this.capOf.text=`/ ${ + ${
- `,this.capOf.position.set(this.capNum.x+this.capNum.width+5,this.capNum.y+this.capNum.height-this.capOf.height-2); - const c=this.fishCells(); - let l=Math.max(110,this.capOf.x+this.capOf.width+18); - [3,2,1,0].forEach((t,i)=>{ - const s=c.filter(i=>i.c.grade===t).length,e=this.gradeCounts[i]; - e.n.text=`${ + `),l=`${
- `,e.root.alpha=s?1:.35,e.root.position.set(l,15),l+=25+e.n.width+14} - ),this.capBar.clear(),a||_ki(this.capBar,18,54,ZRi-18-132-36,6,Math.min(1,r),sxi(r)),this.capNote.visible=a,aki(this.capNote,ZRi-18-132-36),this.sellBtn.visible=!a,this.cutBtn.visible=a,this.sellBtn.enabled=n>0,o&&!a?this.startGlow():this.stopGlow(),this.netEmpty.visible=!c.length,this.netList.visible=c.length>0,this.netList.setListHeight(Math.max(60,e-this.netList.y),!1); + / ${ + h} + 마리${ + c.length?` · ${ + c.join(" · ")} + `:""} + `; + o?this.netHead.set("어망","도둑이 줄을 걸었어요 ·",{ + accent:"줄을 끊어야 팔 수 있어요",accentColor:wxi,rightW:252} + ):this.netHead.set("어망",r?`${ + l} + ·`:l,{ + accent:r?"가득 찼어요":"",rightW:252} + ),this.drawAutoBtn(),this.sellBtn.visible=!o,this.cutBtn.visible=o,this.sellBtn.enabled=n>0,r&&!o?this.startGlow():this.stopGlow(),this.netEmpty.visible=!a.length,this.netList.visible=a.length>0,this.netList.setListHeight(Math.max(60,e-this.netList.y),!1);
- i.clear().roundRect(-66,-26,132,52,12).fill(jIi),i.position.set(t.x+66,t.y+26),i.visible=!0,this.glowTween=MR.timeline({ + i.clear().roundRect(-52,-21,LPi,DPi,10).fill(cxi),i.position.set(t.x+52,t.y+21),i.visible=!0,this.glowTween=Mx.timeline({
- x:1+28/132,y:1+28/52,duration:1.4,ease:"power1.out"} + x:1+24/LPi,y:1+24/DPi,duration:1.4,ease:"power1.out"}
- r.star} + r.tier}
- const t=n,i=iIi(t),s=i?(x-10)/2:x,o=lxi("팔기",ZOi(t),s,58,17,!0,!g); + const t=n,i=zIi(t),s=i?(R-10)/2:R,o=RPi("팔기",hSi(jIi(t),Oki.getInstance().state),s,58,17,!0,!w);
+ drawAutoBtn(){ + var t; + const i=!!(null==(t=Oki.getInstance().autoSell)?void 0:t.on),s=`${ + i} + `; + if(s===this.autoDrawn)return; + this.autoDrawn=s,this.autoBg.clear().roundRect(0,0,128,DPi,10).fill(i?vxi:sxi),this.autoText.textColor=i?cxi:dxi,this.autoText.position.set(14,(DPi-this.autoText.height)/2); + this.autoSwitch.clear().roundRect(80,11,36,20,10).fill(i?cxi:exi).circle(i?106:90,21,7).fill(i?lxi:dxi)} + openAuto(){ + const t=Oki.getInstance().autoSell; + this.autoDraft=t?{ + on:t.on,when:t.when,star:t.star,size:t.size} + :{ + ...qIi} + ,KG("light"),this.drawAuto(),Mx.fromTo(this.autoPanel,{ + alpha:0} + ,{ + alpha:1,duration:.15} + )} + hideAuto(){ + this.autoPanel.visible&&(this.autoPanel.visible=!1,queueMicrotask(()=>{ + this.autoPanel.visible||this.autoPanel.removeChildren().forEach(t=>t.destroy({ + children:!0} + ))} + ))} + drawAuto(){ + var t; + const i=this.autoPanel,s=Oki.getInstance(),e=!!(null==(t=s.autoSell)?void 0:t.on),n=this.autoDraft,h=JRi.contentHeight,r=JRi.OVERLAY_PAD,o=Math.min(yPi-40,480); + i.removeChildren().forEach(t=>t.destroy({ + children:!0} + )); + const a=(new ip).rect(-r,0,yPi+2*r,h).fill({ + color:0,alpha:oxi} + ),c=new Ve,l=Axi("자동 팔기",cxi,19); + let u=20; + l.position.set((o-l.width)/2,u),u+=l.height+16; + const d=[["언제",GPi.map(t=>({ + text:t.text,on:n.when===t.v,tap:Qt(()=>{ + n.when=t.v} + ,"tap")} + ))],["별",BPi.map(t=>({ + text:t.text,on:n.star===t.v,tap:Qt(()=>{ + n.star=t.v} + ,"tap")} + ))],["크기",UPi.map(t=>({ + text:t.text,on:n.size===t.v,tap:Qt(()=>{ + n.size=t.v} + ,"tap")} + ))]],f=[l]; + for(const[M,b]of d){ + const t=Axi(M,dxi,14); + t.position.set(20,u+(38-t.height)/2); + const i=(o-40-52-8*(b.length-1))/b.length; + b.forEach((t,s)=>{ + const e=new Nxi(t.text,i,38,15); + e.soft=!0,e.selected=t.on,e.draw(),e.position.set(72+s*(i+8),u),e.onTap=()=>{ + t.tap(),KG("light"),queueMicrotask(()=>{ + this.autoPanel.visible&&this.drawAuto()} + )} + ,f.push(e)} + ),f.push(t),u+=48} + u+=4; + const p=s.netFish().filter(t=>{ + var i; + return XIi(n,t)&&((null==(i=s.state.dex[t.id])?void 0:i.count)??0)>1&&!s.isQuestFish(t)} + ).length,w=["full"===n.when?"어망이 가득 차면 맞는 물고기를 팔아 자리를 만들어요":"맞는 물고기는 어망에 넣지 않고 바로 팔아요","아주 드문 것·특대·왕 · 의뢰용 · 처음 잡은 물고기는 남겨요",`지금 어망에서 맞는 물고기 ${ + p} + 마리`]; + for(const[M,b]of w.entries()){ + const t=Axi(b,0===M?uxi:dxi,14,0===M); + Ixi(t,o-40),t.position.set((o-t.width)/2,u),u+=t.height+4,f.push(t)} + u+=14; + const g=(o-40-10)/2,m=new Dxi(e?"끄기":"닫기",g,52,16),v=new Dxi(e?"적용":"켜기",g,52,16); + m.setPrimary(!1),v.setPrimary(!0),m.position.set(20,u),v.position.set(20+g+10,u),m.onTap=()=>{ + e?this.saveAuto({ + ...n,on:!1} + ):this.hideAuto()} + ,v.onTap=()=>{ + this.saveAuto({ + ...n,on:!0} + )} + ; + const _=u+52+20; + c.addChild(kxi(o,_,hxi,null,16),...f,m,v),c.position.set((yPi-o)/2,Math.max(10,(h-_)/2)),i.addChild(a,c),i.hitArea=new Ui(-r,0,yPi+2*r,h),i.eventMode="static",i.removeAllListeners("pointertap"),i.on("pointertap",t=>t.stopPropagation()),i.visible=!0} + async saveAuto(t){ + var i,s; + if(this.autoBusy)return; + this.autoBusy=!0; + const e=Oki.getInstance(),n=(null==(i=e.autoSell)?void 0:i.n)??0,h=(null==(s=e.autoSell)?void 0:s.g)??0,r=this.autoBtn.toGlobal({ + x:64,y:21} + ); + let o; + try{ + o=await e.setAutoSell(t)} + finally{ + this.autoBusy=!1} + if(o)return void _H.getInstance().showMessage(o); + this.hideAuto(); + const a=e.autoSell,c=((null==a?void 0:a.n)??0)-n,l=((null==a?void 0:a.g)??0)-h,u=`${ + BPi.find(i=>i.v===t.star).text} + · ${ + UPi.find(i=>i.v===t.size).text} + · ${ + GPi.find(i=>i.v===t.when).text} + `; + t.on?c>0?(_H.getInstance().showMessage(`자동 팔기를 켰어요 · 어망이 가득이라 ${ + c} + 마리를 바로 팔았어요 · ${ + l.toLocaleString()} + G`),JRi.getInstance().flyCurrency("gold",r,Math.min(10,3+c))):_H.getInstance().showMessage(`자동 팔기를 켰어요 · ${ + u} + `):_H.getInstance().showMessage("자동 팔기를 껐어요"),KG("medium"),this.autoDrawn="",this.render()}
- `,hint:"★4 이상·특대·왕 · 눌러야 골라져요"} + `,hint:"아주 드문 것·특대·왕 · 눌러야 골라져요"}
- const d=this.pickedFish(),f=d.length,p=d.reduce((t,i)=>t+ZOi(i),0),g=f>0&&!n; + const d=this.pickedFish(),f=d.length,p=hSi(d.reduce((t,i)=>t+jIi(i),0),i.state),w=f>0&&!n;
- i.length?this.ask("아끼는 물고기도 팔까요?",`★4 이상·특대·왕 ${ + i.length?this.ask("아끼는 물고기도 팔까요?",`아주 드문 것·특대·왕 ${
- const n=oki("어항",zIi,18),h=oki(`${ + const n=new Oxi(yPi); + if(n.set("어항",`${
- `,YIi,16); - n.position.set(2,8),h.position.set(n.x+n.width+8,n.y+n.height-h.height-1); - const r=JRi([{ - icon:"shield",text:"도둑맞지 않고 팔리지도 않아요",color:qIi} - ]); - if(r.position.set(2,42),e.addChild(n,h,r),null!==s.nextPrice){ - const n=s.nextPrice,h=172,r=lxi("칸 +5",n,h,44,14,!1,i.gold>=n); - r.position.set(ZRi-h,4),r.onTap=async()=>{ + 칸 · 도둑맞지 않고 팔리지도 않아요`,{ + rightW:null!==s.nextPrice?184:0} + ),e.addChild(n),null!==s.nextPrice){ + const n=s.nextPrice,h=RPi("칸 +5",n,172,42,Txi,!1,i.gold>=n); + h.position.set(yPi-172,1),h.onTap=async()=>{
- const t=a%5*o,i=76+Math.floor(a/5)*rxi.H,n=s.fish[a],h=new Ve; + const t=r%5*h,i=66+Math.floor(r/5)*OPi.H,n=s.fish[r],o=new Ve;
- const i=oki(MTi(n.kg),YIi,12,!1); + const i=Axi(ZTi(n.kg),dxi,Txi,!1);
- const t=oki("★4 이상이나 특대·왕 물고기를 어망에서 누르고 [어항에 넣기]로 넣어요.",qIi,13,!1); - t.setWrapWidth(ZRi-8),t.position.set(4,76+Math.ceil(s.cap/5)*rxi.H+4),e.addChild(t)} + const t=Axi("아주 드문 물고기나 특대·왕을 어망에서 누르고 [어항에 넣기]로 넣어요.",dxi,Txi,!1); + t.setWrapWidth(yPi-8),t.position.set(4,66+Math.ceil(s.cap/5)*OPi.H+4),e.addChild(t)}
- this.dexProgress.text=`${ + this.dexHead.set("도감",`잡은 종 ${
- `,this.dexProgress.position.set(this.dexKnownLb.x+this.dexKnownLb.width+8,this.dexKnownLb.y+this.dexKnownLb.height-this.dexProgress.height+1); - const r=this.dexProgress.x+this.dexProgress.width+16; - this.dexBar.clear(),_ki(this.dexBar,r,100,ZRi-r-2,6,n.length?h/n.length:0,XIi); + `,{ + accent:h&&h===n.length?"· 다 모았어요":""} + );
FishingDataManager 49 hunks, 178 statements
- ,"smooth$2"); + ,"smooth$4");
- ,kOi=["wood","iron","mithril"],ROi={ + ,fIi=["wood","iron","mithril","bone","thunder"],pIi={
- kind:"iron",name:"쇠 작살",mult:1.6,fish:3,minStar:2,gold:200} + kind:"iron",name:"쇠 작살",mult:2,fish:3,minStar:2,gold:100}
- kind:"mithril",name:"미스릴 작살",mult:2.5,fish:2,minStar:3,gold:1500} + kind:"mithril",name:"미스릴 작살",mult:3.5,fish:2,minStar:3,gold:400} + ,bone:{ + kind:"bone",name:"용뼈 작살",mult:6,fish:0,minStar:0,gold:1e3,mat:"bone",matN:1} + ,thunder:{ + kind:"thunder",name:"번개 작살",mult:10,fish:0,minStar:0,gold:2e3,mat:"thunder",matN:1} + } + ,wIi=["bone","thunder"],gIi={ + bone:{ + kind:"bone",kindNum:1,name:"용뼈",fish:2,minStar:4,gold:1e3} + ,thunder:{ + kind:"thunder",kindNum:2,name:"번개 결정",fish:1,minStar:5,gold:2e3}
- kind:"catfish",name:"거대 메기"} + kind:"catfish",name:"거대 메기",min:1,wave:6}
- kind:"eel",name:"왕장어"} + kind:"eel",name:"왕장어",min:1,wave:8}
- kind:"sturgeon",name:"늙은 철갑상어"} + kind:"sturgeon",name:"늙은 철갑상어",min:2,wave:12} + ,{ + kind:"croc",name:"늪 악어",min:2,wave:10}
- kind:"manta",name:"대왕 가오리"} + kind:"manta",name:"대왕 가오리",min:2,wave:26}
- kind:"turtle",name:"고대 바다거북"} + kind:"turtle",name:"고대 바다거북",min:2,wave:30}
- kind:"shark",name:"백상아리"} + kind:"shark",name:"백상아리",min:3,wave:36}
- kind:"whaleShark",name:"고래상어"} + kind:"whaleShark",name:"고래상어",min:3,wave:40} + ,{ + kind:"jelly",name:"거대 해파리",min:2,wave:28} + ,{ + kind:"hammer",name:"귀상어 떼",min:3,wave:38}
- kind:"whale",name:"대왕고래"} + kind:"shark",name:"식인 상어",min:3,wave:75}
- kind:"shark",name:"식인 상어"} + kind:"whaleShark",name:"심해 고래상어",min:4,wave:85}
- kind:"whaleShark",name:"심해 고래상어"} + kind:"narwhal",name:"얼음 일각고래",min:4,wave:80}
- kind:"megalodon",name:"메갈로돈"} + kind:"squid",name:"대왕오징어",min:6,wave:100} + ,{ + kind:"angler",name:"거대 아귀",min:5,wave:95,deep:!0} + ,{ + kind:"octopus",name:"왕문어",min:6,wave:105,deep:!0} + ,{ + kind:"sperm",name:"흰 향유고래",min:8,wave:110,deep:!0} + ,{ + kind:"serpent",name:"심연 바다뱀",min:10,wave:120,deep:!0}
- ,POi=["R","C","O"].flatMap(t=>xOi[t].map(i=>({ + ,vIi=Qt((t,i)=>mIi[t].filter(s=>!!s.deep==("O"===t&&i>=11)),"bossList"),_Ii=["R","C","O"].flatMap(t=>mIi[t].map(i=>({
- ))),NOi=Qt(t=>Math.round(80*Math.pow(1.32,t-1)),"bossHp"); - function LOi(t,i,s){ - const e=$Ai(t,i),n=cAi(7919*e+104729*s),h=xOi[i],r=h[n%h.length],o=s*IOi.EVERY_MS+cAi(n+3)%Math.floor(IOi.EVERY_MS/2); + ))),MIi=Qt(t=>Math.round(80*Math.pow(1.24,t-1)),"huntShare"),bIi=(dIi.SLOT_BASE+Math.min(3,Math.floor(3)))*(dIi.DMG+18)*dIi.MULT.great*pIi.thunder.mult*1.6; + function yIi(t,i,s=0){ + const e=Math.max(i.min,Math.pow(Math.max(0,s),.85)),n=Math.round(MIi(t)*e),h=i.needBest?100*Math.ceil(((i.needBest-1)*bIi+1)/100):0;
- w:s,at:o,end:o+IOi.DUR_MS,kind:r.kind,name:r.name,tier:e,hp:NOi(e)} + hp:Math.max(n,h),pot:4*n} + } + function EIi(t,i,s){ + const e=gSi(t,i),n=LAi(7919*e+104729*s),h=vIi(i,e),r=h[n%h.length],o=s*dIi.EVERY_MS+LAi(n+3)%Math.floor(dIi.EVERY_MS/2); + return{ + w:s,at:o,end:o+dIi.DUR_MS,kind:r.kind,name:r.name,tier:e,...yIi(e,r),min:r.min,...r.needBest?{ + needBest:r.needBest} + :{ + } + ,wave:Math.round(r.wave*pSi(e))}
- ...LOi(t,i,Math.floor(s/IOi.EVERY_MS)),w:e,at:s,end:s+IOi.DUR_MS} + ...EIi(t,i,Math.floor(s/dIi.EVERY_MS)),w:e,at:s,end:s+dIi.DUR_MS}
+ if(e&&s>=e&&s<e+dIi.DUR_MS)return AIi(t,i,e);
- const n=GOi(t,i,s); + const n=SIi(t,i,s,e);
- Qt(LOi,"bossOf"),Qt(DOi,"devBoss"),Qt(GOi,"bossNow"),Qt(BOi,"bossHere"),Qt(UOi,"bossNextHere"),Qt(FOi,"bossNext"); + function IIi(t,i,s,e=3,n){ + const h=OIi(t,i,s,n),r=[h]; + let o=h.w>=0?h.w:Math.floor(s/dIi.EVERY_MS); + for(; + r.length<e; + ){ + const s=EIi(t,i,++o); + s.at>r[r.length-1].at&&r.push(s)} + return r} + function kIi(t,i){ + if(i>=t.at&&i<t.end)return{ + state:"live",left:t.end-i} + ; + const s=Math.max(0,t.at-i); + return{ + state:s<=6e4?"soon":"idle",left:s} + } + function xIi(t){ + for(let i=0; + i<20; + i++)if(RTi({ + zone:t,point:i} + )>=dIi.MIN_LEVEL)return i+1; + return 1} + Qt(yIi,"bossHpFor"),Qt(EIi,"bossOf"),Qt(AIi,"devBoss"),Qt(SIi,"bossNow"),Qt(TIi,"bossHere"),Qt(CIi,"bossNextHere"),Qt(OIi,"bossNext"),Qt(IIi,"bossSchedule"),Qt(kIi,"monsterState"),Qt(xIi,"monsterFirstPoint");
- stock:(null==i?void 0:i.stock)??{ - wood:IOi.START_WOOD,iron:0,mithril:0} + stock:{ + wood:dIi.START_WOOD,iron:0,mithril:0,bone:0,thunder:0,...(null==i?void 0:i.stock)??{ + } + }
+ const n=null==(e=t.hunt)?void 0:e.round; + return!!n&&n.w===i.w&&n.map!==s} + function BIi(t,i,s){ + var e; + if(GIi(t,i,s))return 0;
- Qt(jOi,"stockOf"),Qt(KOi,"loadedLeft"),Qt(zOi,"pickHarpoon"); + Qt(DIi,"stockOf"),Qt(GIi,"roundElsewhere"),Qt(BIi,"loadedLeft"),Qt(UIi,"pickHarpoon");
- const s=Math.abs(t); + const s=Math.abs(t-(i.center??0));
- ),"fishRef"),iIi=Qt(t=>RSi(t.id).star>=JOi.KEEP_STAR||t.grade>=JOi.KEEP_GRADE,"keepable"),sIi=Qt(t=>JOi.AQUARIUM_SLOTS[Math.min(t,JOi.AQUARIUM_SLOTS.length-1)],"aquariumCap"); + ),"fishRef"),zIi=Qt(t=>uTi(t.id).star>=WIi.KEEP_STAR||t.grade>=WIi.KEEP_GRADE,"keepable"),YIi=Qt(t=>WIi.AQUARIUM_SLOTS[Math.min(t,WIi.AQUARIUM_SLOTS.length-1)],"aquariumCap"),qIi={ + on:!1,when:"full",star:2,size:1} + ,XIi=Qt((t,i)=>!zIi(i)&&uTi(i.id).star<=t.star&&i.grade<=t.size,"autoSellRule");
- const lIi=Qt((t,i)=>Math.max(0,10-((null==t?void 0:t.day)===i?t.n:0)),"tradeLeft"),uIi=Qt(t=>Math.max(0,Math.min(1,t)),"clamp01$4"),dIi=Qt(t=>t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2,"ease"),fIi=Qt(t=>1-Math.pow(1-t,3),"easeOut"); + const nki=Qt((t,i)=>Math.max(0,10-((null==t?void 0:t.day)===i?t.n:0)),"tradeLeft"),hki=Qt(t=>Math.max(0,Math.min(1,t)),"clamp01$7"),rki=Qt(t=>t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2,"ease"),oki=Qt(t=>1-Math.pow(1-t,3),"easeOut$1");
- const n=[[t,i],...dSi.flatMap(t=>fSi.map(i=>[t,i])).filter(([s,e])=>s!==t||e!==i)]; + const n=[[t,i],...HSi.flatMap(t=>WSi.map(i=>[t,i])).filter(([s,e])=>s!==t||e!==i)];
- const RIi=class t{ + const Ski=Qt(t=>t.sold??0,"soldOf"),Tki=Qt((t,i)=>`어망이 가득 차서 ${ + t} + 마리를 자동으로 팔았어요 · ${ + i.toLocaleString()} + G`,"autoSoldText"),Cki=class t{
- )()),Zt(this,"seenTips",new Set),Zt(this,"eventDays",10),Zt(this,"boatRule",GAi)} + )()),Zt(this,"seenTips",new Set),Zt(this,"eventDays",10),Zt(this,"boatRule",uSi),Zt(this,"mats",{ + bone:0,thunder:0} + ),Zt(this,"ringsShown",new Set)}
- localCatch(t,i){ + localCatch(t,i,s=!1){
- ),e} + ),this.localAutoSell(t,i,s),n} + autoSellable(t,i){ + var s,e; + const n=t.autoSell; + return!!(null==n?void 0:n.on)&&!i.broken&&!(null==(s=t.plunder)?void 0:s.raidBy)&&XIi(n,i)&&((null==(e=t.dex[i.id])?void 0:e.count)??0)>1&&!this.isQuestFish(i)} + localAutoSell(t,i,s){ + const e=t.autoSell; + if(!(null==e?void 0:e.on)||i.broken)return; + let n=[]; + if("catch"===e.when&&this.autoSellable(t,i)?(n=[i],i.sold=hSi(jIi(i),t)):t.icebox.length>=ITi(t.gear,eSi(t).icebox)&&(n=t.icebox.filter(i=>this.autoSellable(t,i))),!n.length)return; + const h=new Set(n),r=hSi(n.reduce((t,i)=>t+jIi(i),0),t); + t.icebox=t.icebox.filter(t=>!h.has(t)),t.gold+=r,t.sales+=r,t.autoSell={ + ...e,n:e.n+n.length,g:e.g+r} + ,"full"!==e.when||s||this.notice(Tki(n.length,r))} + get autoSell(){ + var t; + return(null==(t=this.state)?void 0:t.autoSell)??null} + async setAutoSell(t){ + return(await this.call(this.api.autoSell(t))).message}
- t&&this.localCatch(g,xCi(t,kCi(g.seq,v,g.gear.reel,g.devSpeed,this.hookedKs(g).filter(t=>t<v)),g.spot,!Object.keys(g.dex).length))} - VTi.setRun(g.startAt),this.state=g,this.ready=!0,this.emitBoatLogs(); + t&&this.localCatch(w,wOi(t,fOi(w.seq,M,w.gear.reel,w.devSpeed,this.hookedKs(w).filter(t=>t<M)),w.spot,!Object.keys(w.dex).length),!0)} + CCi.setRun(w.startAt); + const v=null==p?void 0:p.autoSell,_=w.autoSell; + v&&(null==_?void 0:_.on)&&"full"===_.when&&_.n>v.n&&(null==p?void 0:p.startAt)===w.startAt&&this.notice(Tki(_.n-v.n,_.g-v.g)),this.state=w,this.ready=!0,this.emitBoatLogs();
- var t,i,s,e; + var t,i,s,e,n;
- return o.result&&this.addCatch(o.result.catch,o.result.isNew),{ + return(null==(s=a.result)?void 0:s.sold)&&(a.result.catch.sold=a.result.sold),a.result&&this.addCatch(a.result.catch,a.result.isNew),{
- return ETi((null==(t=this.social)?void 0:t.enabled)?this.social.day??1:this.eventDay())} + const i=null==(t=this.social)?void 0:t.board,s=this.state.contest; + return i?hCi(i.day,i.contestId):s&&!s.claimed?hCi(s.day,s.contestId):hCi(1,"weight")}
- const i=ETi(t.day),s=this.now(),e=Math.min(1,(s-t.startAt)/(t.endAt-t.startAt)),n=s>=t.endAt,h=t.bots.map(t=>({ + const i=hCi(t.day,t.contestId),s=this.now(),e=Math.min(1,(s-t.startAt)/(t.endAt-t.startAt)),n=s>=t.endAt,h=t.bots.map(t=>({
- return[...DTi.map((s,e)=>({ + return[...gCi.map((s,e)=>({
- )),...GTi.map((i,s)=>({ + )),...mCi.map((i,s)=>({
- )),...BTi.map((i,s)=>{ + )),...vCi.map((i,s)=>{
- async joinSocial(){ - return(await this.call(this.api.socialJoin())).message} + async joinSocial(t){ + return(await this.call(this.api.socialJoin(t))).message}
- async joinContest(){ - return(await this.call(this.api.joinContest())).message} + async joinContest(t){ + return(await this.call(this.api.joinContest(t))).message}
+ async claimAllMilestones(){ + return(await this.call(this.api.claimAllMilestones())).message}
- for(const i of"tut"===t?["tut",...UCi]:[t])this.seenTips.add(i); + for(const i of"tut"===t?["tut",...yOi]:[t])this.seenTips.add(i);
+ get huntMatHave(){ + return this.mats} + keepMats(t){ + var i; + const s=null==(i=null==t?void 0:t.body)?void 0:i.mats; + s&&(this.mats={ + bone:s.bone??0,thunder:s.thunder??0} + )} + async refreshHuntMats(){ + const t=await this.api.huntMats().catch(()=>null); + (null==t?void 0:t.success)&&this.keepMats(t)}
- return this.call(this.api.huntCraft(t,i))} + const s=await this.api.huntCraft(t,i); + return this.keepMats(s),this.apply(s)} + async huntMakeMat(t,i){ + const s=await this.api.huntMakeMat(t,i); + return this.keepMats(s),this.apply(s)}
+ async wsTicket(){ + var t; + const i=await this.api.wsTicket().catch(()=>null); + return(null==i?void 0:i.success)?(null==(t=i.body)?void 0:t.ticket)??null:null} + markRingShown(t){ + this.ringsShown.add(t),this.ringsShown.size>60&&this.ringsShown.delete(this.ringsShown.values().next().value)}
- const t=await this.api.huntStatus(); + var t; + const i=this.state,s=null==(t=this.posProvider)?void 0:t.call(this),e=i?{ + race:i.spot.race,zone:i.spot.zone,point:i.spot.point,...i.social?{ + server:i.social.serverId} + :{ + } + ,...s?{ + x:Math.round(s.x),y:Math.round(s.y)} + :{ + } + } + :void 0,n=!!(null==i?void 0:i.huntDevAt)&&this.realNow()>=i.huntDevAt&&this.realNow()<i.huntDevAt+dIi.DUR_MS,h=await this.api.huntStatus(n?void 0:e);
QuestCanvas 3 hunks, 166 statements
- )),dUi=ORi.CONTENT_W,fUi=class t extends OR{ - constructor(){ - super(),Zt(this,"bg",new ip),Zt(this,"title",oki("",zIi,14)),Zt(this,"detail",oki("",YIi,12,!1)),Zt(this,"reward",oki("",QIi,12)),Zt(this,"button",new gki("받기",92,38,13)),Zt(this,"row",null),this.addChild((new ip).rect(0,0,dUi,t.H).fill({ - color:0,alpha:.001} - )),this.title.position.set(12,9),this.detail.position.set(12,33),this.reward.position.set(12,53),this.button.position.set(dUi-104,17),this.button.onTap=()=>{ - var t,i; - return null==(i=null==(t=this.row)?void 0:t.action)?void 0:i.call(t)} - ,this.addChild(this.bg,this.title,this.detail,this.reward,this.button)} - setData(i){ - this.row=i,this.bg.clear().rect(0,0,dUi,t.H-5).fill(i.me?FIi:BIi),this.title.text=i.title,this.detail.text=i.detail,this.reward.text=i.reward; - for(const t of[this.title,this.detail,this.reward])aki(t,dUi-(i.button?126:24)); - this.button.visible=!!i.button,this.button.enabled=!!i.action,this.button.setText(i.button??"받기")} + )),GHi=430,BHi=Qt((t,i,s,e,n=16,h=uxi,r=GHi-s)=>{ + const o=Axi(i,h,n); + return Ixi(o,r),o.position.set(s,e),t.addChild(o),o} + ,"qText"),UHi=Qt((t,i,s,e,n=16,h=uxi,r=GHi)=>{ + const o=BHi(t,i,0,e,n,h,r); + return o.x=s-o.width/2,o} + ,"qCenter"); + function FHi(t,i,s,e,n,h=n){ + if(!i)return null; + const r=new Ye(i); + return r.anchor.set(.5),r.scale.set(Math.min(n/i.width,h/i.height)),r.position.set(s,e),r.eventMode="none",t.addChild(r),r} + function $Hi(t,i,s,e,n=1){ + const h=FHi(t,xAi.menuIcon("quest"),i,s,e); + if(h&&1!==n){ + const t=new bf,i=2===n?[.83,.89,1]:[1,.66,.36]; + t.matrix=[.3*i[0],.59*i[0],.11*i[0],0,0,.3*i[1],.59*i[1],.11*i[1],0,0,.3*i[2],.59*i[2],.11*i[2],0,0,0,0,0,1,0],h.filters=[t]}
- ; - Qt(fUi,"SocialRow"),Zt(fUi,"H",76); - let pUi=fUi; + function HHi(t,i,s,e,n,h=2368554,r=null){ + const o=kxi(e,n,h,r,14); + return o.position.set(i,s),t.addChild(o),o} + function WHi(t,i,s,e,n,h){ + const r=new Ve; + return r.position.set(i,s),r.hitArea=new Ui(0,0,e,n),r.eventMode="static",r.cursor="pointer",r.on("pointertap",t=>{ + t.stopPropagation(),queueMicrotask(h)} + ),t.addChild(r),r} + function VHi(t,i,s,e,n,h,r,o=!0,a=!0){ + o&&a&&HHi(t,s,e+4,n,h,9397287); + const c=new Dxi(i,n,h,h>=44?19:14); + return c.position.set(s,e),c.setPrimary(o),c.enabled=a,c.onTap=()=>queueMicrotask(r),t.addChild(c),c} + function jHi(t,i,s,e,n=17,h="pearl"){ + const r=$xi(h,n); + r.position.set(s,e+2),t.addChild(r),BHi(t,i.toLocaleString(),s+n+7,e,n,"gold"===h?cxi:gxi)} + Qt(FHi,"qArt"),Qt($Hi,"qCup"),Qt(HHi,"qBox"),Qt(WHi,"qTap"),Qt(VHi,"qButton"),Qt(jHi,"qMoney");
- super(),Zt(this,"title",oki("",zIi,18)),Zt(this,"detail",oki("",YIi,12,!1)),Zt(this,"status",oki("",YIi,12,!1)),Zt(this,"rule",oki("",QIi,12)),Zt(this,"action",new gki("참가하기",142,40,14)),Zt(this,"refresh",new gki("새로 보기",100,34,12)),Zt(this,"list",new TR(pUi,dUi,300,0)),Zt(this,"signature",""),Zt(this,"busy",!1),this.y=50,this.title.position.set(4,4),this.detail.position.set(4,36),this.rule.position.set(4,60),this.action.position.set(dUi-146,0),this.refresh.position.set(dUi-104,91),this.list.y=134,this.status.position.set(4,101),this.action.onTap=()=>{ - this.perform()} - ,this.refresh.onTap=()=>{ - xIi.getInstance().refreshSocial(!0)} - ,this.addChild(this.title,this.detail,this.rule,this.status,this.action,this.refresh,this.list)} - async perform(t){ + super(),Zt(this,"canvas",new Ve),Zt(this,"signature",""),Zt(this,"busy",!1),Zt(this,"logicalHeight",530),this.y=48,this.addChild(this.canvas)} + paint(t,i){ + const s=JRi.contentHeight,e=Math.min(JRi.CONTENT_W/GHi,s/530); + this.logicalHeight=s/e,t=`${ + s} + :${ + t} + `,this.canvas.scale.set(e),this.canvas.x=(JRi.CONTENT_W-GHi*e)/2,this.signature!==t&&(this.signature=t,this.canvas.removeChildren().forEach(t=>t.destroy({ + children:!0} + )),i())} + } + ; + Qt(KHi,"QuestCanvas"); + let zHi=KHi; + const YHi=class t extends Ve{ + constructor(t,i,s){ + super(),Zt(this,"shade",new ip),Zt(this,"card",new Ve),Zt(this,"page",0),this.title=t,this.rows=i,this.action=s,this.addChild(this.shade,this.card),this.shade.eventMode="static",this.shade.on("pointertap",t=>{ + t.stopPropagation(),queueMicrotask(()=>this.close())} + ),this.card.eventMode="static",this.card.on("pointertap",t=>t.stopPropagation())} + static open(i,s,e){ + var n; + null==(n=this.current)||n.close(); + const h=new t(i,s,e); + this.current=h,JRi.getInstance().overlay.addChild(h),h.layout()} + close(){ + t.current===this&&(t.current=null),this.destroyed||this.destroy({ + children:!0} + )} + closeOne(){ + return this.close(),!0} + layout(){ + this.card.removeChildren().forEach(t=>t.destroy({ + children:!0} + )); + const t=JRi.contentHeight,i=JRi.CONTENT_W,s=JRi.OVERLAY_PAD; + this.shade.clear().rect(-s,0,i+2*s,t).fill({ + color:0,alpha:oxi} + ); + const e=Math.min(i/430,t/480),n=Math.max(2,Math.min(6,Math.floor((t/e-146)/74))),h=Math.max(1,Math.ceil(this.rows.length/n)); + this.page=Math.min(this.page,h-1); + const r=this.rows.slice(this.page*n,(this.page+1)*n),o=72+74*Math.max(1,r.length)+(h>1||this.action?64:18); + this.card.scale.set(e),this.card.position.set((i-398*e)/2,Math.max(0,(t-o*e)/2)),this.card.hitArea=new Ui(0,0,398,o),HHi(this.card,0,0,398,o,hxi),BHi(this.card,this.title,20,20,22,uxi,310),VHi(this.card,"×",344,13,40,40,()=>this.close(),!1),r.length||UHi(this.card,"아직 기록이 없어요",199,92,16,dxi),r.forEach((t,i)=>{ + const s=68+74*i,e=t.action?254:350; + if(HHi(this.card,14,s,370,68,t.me?vxi:rxi),BHi(this.card,t.title,25,s+8,16,t.me?cxi:uxi,e),t.detail){ + const i=BHi(this.card,t.detail,25,s+31,12,dxi,e); + i.scale.set(1),i.setWrapWidth(e)} + t.reward&&BHi(this.card,t.reward,25,s+49,12,cxi,e),t.action&&VHi(this.card,t.button??"받기",295,s+18,76,34,()=>{ + this.close(),t.action()} + )} + ); + const a=o-53; + h>1?(VHi(this.card,"‹",20,a,54,38,()=>{ + this.page--,this.layout()} + ,!1,this.page>0),UHi(this.card,`${ + this.page+1} + / ${ + h} + `,199,a+8,15,dxi),VHi(this.card,"›",324,a,54,38,()=>{ + this.page++,this.layout()} + ,!1,this.page<h-1)):this.action&&VHi(this.card,this.action.text,20,a,358,42,()=>{ + this.close(),this.action.run()} + )} + } + ; + Qt(YHi,"QuestDetails"),Zt(YHi,"current",null); + let qHi=YHi; + const XHi={ + dex:"도감 수집가",sales:"노련한 상인",help:"든든한 이웃"} + ,JHi=Qt(t=>t>=1e4?+(t/1e4).toFixed(1)+"만":t.toLocaleString(),"short"),QHi=class extends zHi{ + render(){ + var t; + const i=Oki.getInstance(),s=i.milestoneRows(),e=[...(null==(t=i.life)?void 0:t.cups)??[],...i.state.cups]; + this.paint(JSON.stringify([s,e,this.busy]),()=>{ + const t=this.canvas,i=this.logicalHeight-530,n=120+.25*i,h=181+.25*i,r=72+.1*i,o=s.filter(t=>!t.claimed&&t.progress>=t.need).reduce((t,i)=>t+i.pearl,0); + BHi(t,"업적",8,6,25),VHi(t,"내 기록 ›",321,3,101,36,()=>this.records(),!1),HHi(t,6,49,418,n,sxi); + for(const[s,a]of[2,1,3].entries()){ + const n=88+127*s; + $Hi(t,n,(1===a?99:108)+.12*i,(1===a?96:76)+.14*i,a),UHi(t,`× ${ + e.filter(t=>t.rank===a).length} + `,n,142+.25*i,18,1===a?cxi:uxi),WHi(t,n-48,55,96,108+.25*i,()=>qHi.open("대회 트로피 · 누적",e.filter(t=>t.rank===a).map(t=>({ + title:`${ + t.rank} + 위 · ${ + t.title} + `,detail:t.record} + ))))} + HHi(t,6,h,418,r,o?vxi:sxi,o?7822901:null),FHi(t,xAi.gearChest(!!o),50,h+r/2,80+.05*i),BHi(t,o?"모아 둔 보상":"다음 메달을 향해!",95,h+r/2-26,13,dxi),o?jHi(t,o,97,h+r/2-1,19):BHi(t,"도전은 계속된다",95,h+r/2+1,17,uxi,180),VHi(t,"모두 받기",298,h+(r-38)/2,110,38,()=>{ + this.claim()} + ,!0,!this.busy&&!!o),["dex","sales","help"].forEach((e,n)=>{ + const h=s.filter(t=>t.kind===e),r=h.find(t=>!t.claimed)??h[h.length-1],o=h.every(t=>t.claimed),a=70+.65*i/3,c=266+.35*i+n*(a+8),l=c+(a-70)/2,u=!o&&r.progress>=r.need; + HHi(t,6,c,418,a,sxi); + const d=(new ip).poly([26,l+47,20,l+70,39,l+62,56,l+70,51,l+47]).fill(12143441).circle(39,l+29,27).fill(9136180).circle(39,l+27,23).fill(14858582).circle(39,l+27,18).fill(8217404); + t.addChild(d); + const f="dex"===e?xAi.menuIcon("map"):"sales"===e?xAi.menuIcon("shop"):xAi.boatGearIcon(4,0); + FHi(t,f,39,l+25,44),BHi(t,XHi[e],81,l+9,17,uxi,212),BHi(t,"›",273,l+10,17,dxi),WHi(t,6,c,288,a,()=>this.stages(e)); + const p="sales"===e?`${ + JHi(r.progress)} + / ${ + JHi(r.need)} + `:`${ + r.progress} + / ${ + r.need} + ${ + "dex"===e?"종":"번"} + `; + BHi(t,o?"모든 메달 달성!":p,81,l+34,13,o?cxi:dxi,200); + const w=new ip; + Fxi(w,81,l+57,202,5,Math.min(1,r.progress/r.need),u||o?cxi:6925487),t.addChild(w),o||jHi(t,r.pearl,303,l+8,13),u?VHi(t,"받기",304,l+31,104,30,()=>{ + this.claim(r)} + ,!0,!this.busy):UHi(t,o?"✓ 완료":"도전 중",356,l+39,13,o?cxi:fxi)} + ),VHi(t,`달성한 메달 ${ + s.filter(t=>t.claimed).length} + ›`,103,507+i,224,23,()=>qHi.open("달성한 메달",s.filter(t=>t.claimed).map(t=>({ + title:XHi[t.kind],detail:t.label,reward:`진주 ${ + t.pearl.toLocaleString()} + · 수령 완료`} + ))),!1)} + )} + stages(t){ + qHi.open(`${ + XHi[t]} + · 이번 회차`,Oki.getInstance().milestoneRows().filter(i=>i.kind===t).map(t=>({ + title:t.label,detail:t.claimed?"수령 완료":`${ + t.progress.toLocaleString()} + / ${ + t.need.toLocaleString()} + `,reward:`진주 ${ + t.pearl.toLocaleString()} + `,action:!this.busy&&!t.claimed&&t.progress>=t.need?()=>{ + this.claim(t)} + :void 0} + )))} + async claim(t){
FishingHazardCut 2 hunks, 85 statements
+ function cFi(t){ + if(rFi[t])return t; + const i=Object.entries(rFi).find(([,i])=>i.prefixes.some(i=>t.startsWith(i))); + return i?i[0]:null}
+ Qt(aFi,"hazardArt"),Qt(cFi,"hazardKey"),Qt(lFi,"hazardIcon"),Qt(uFi,"hazardNotice"); + const dFi=.22,fFi=2.3,pFi=Qt(t=>Math.max(0,Math.min(1,t)),"c01$2"),wFi=Qt(t=>1-(1-t)*(1-t),"eOut$1"),gFi=Qt(t=>1+2.70158*Math.pow(t-1,3)+1.70158*Math.pow(t-1,2),"backOut$2"); + function mFi(t){ + const i=pFi((t-fFi)/(2.6-fFi)),s=gFi(pFi(t/dFi)); + return{ + dim:.55*pFi(t/.15)*(1-i),y:60*s-60,scale:1.12-.12*s,rot:4*s-6,alpha:(t>0?1:0)*(1-i),shake:t<dFi?0:8*(1-pFi((t-dFi)/.3))*Math.sin(60*(t-dFi)),flash:t<dFi?0:.7*(1-pFi((t-dFi)/.12)),numAlpha:t<.3?0:1,numScale:1.8-.8*pFi((t-.3)/.15),capAlpha:pFi((t-.4)/.2),drain:wFi(pFi((t-.35)/.6)),fade:pFi((t-.95)/.35)} + } + function vFi(t,i,s){ + const e=mFi(s),n=t+(i-t)*e.drain; + return{ + cur:n,lostTo:t+(n-t)*e.fade} + } + function _Fi(t){ + const i=t.filter(t=>"hazard"===t.kind&&t.dmg>0); + return i.length?{ + main:i.reduce((t,i)=>i.dmg>t.dmg?i:t),more:i.length-1} + :{ + main:null,more:0} + } + Qt(mFi,"cutPose"),Qt(vFi,"cutHp"),Qt(_Fi,"pickCut"); + const MFi=new Set(["gust","log","vine","ghost","ice"]); + function bFi(t,i){ + return"R"!==i&&MFi.has(t)?`${ + t} + _sea`:t} + Qt(bFi,"cutArt"); + const yFi={ + gust:["돌풍!","돌풍에 배가 밀렸어요"],rapid:["급류!","급류에 휩쓸렸어요"],rock:["바위 충돌!","바위에 배가 긁혔어요"],wave:["거센 파도!","거센 파도가 배를 덮쳤어요"],reef:["암초 충돌!","암초에 배 밑이 부딪혔어요"],swell:["큰 너울!","큰 너울에 배가 들렸다 떨어졌어요"],storm:["폭풍!","폭풍이 배를 몰아쳤어요"],thunder:["번개!","번개가 배에 떨어졌어요"],monster:["몬스터의 물살!","몬스터가 지나가며 물살이 일었어요"],log:["통나무 충돌!","떠내려온 통나무에 부딪혔어요"],vine:["가시 덩굴!","가시 덩굴이 배에 감겼어요"],ghost:["망령의 손길!","망령이 배를 붙잡아 끌었어요"],ice:["얼음 충돌!","얼음 덩어리에 부딪혔어요"]} + ,EFi=7035454,AFi=class extends Ve{ + constructor(){ + super(),Zt(this,"dim",new ip),Zt(this,"card",new Ve),Zt(this,"cardBg",new ip),Zt(this,"img",new Ye),Zt(this,"imgMask",new ip),Zt(this,"flash",new ip),Zt(this,"bar",new ip),Zt(this,"num",Axi("",15029053,30)),Zt(this,"cap",Axi("",EFi,Txi,!1)),Zt(this,"title",Axi("",2825477,24)),Zt(this,"moreL",Axi("",EFi,Txi)),Zt(this,"t",0),Zt(this,"play",null),Zt(this,"hitDone",!1),Zt(this,"onHit",null),Zt(this,"onEnd",null),Zt(this,"barW",0),this.dim.eventMode="static",this.dim.on("pointertap",t=>{ + t.stopPropagation(),this.skip()} + ),this.card.eventMode="static",this.card.on("pointertap",t=>{ + t.stopPropagation(),this.skip()} + ),this.img.mask=this.imgMask; + for(const t of[this.cardBg,this.img,this.imgMask,this.flash,this.bar,this.num,this.cap,this.title,this.moreL])t.eventMode="none"; + this.card.addChild(this.cardBg,this.img,this.imgMask,this.flash,this.title,this.moreL,this.cap,this.bar,this.num),this.addChild(this.dim,this.card),this.visible=!1,this.once("destroyed",()=>vn.shared.remove(this.tick,this))} + get playing(){ + return!!this.play} + get hpNow(){ + return this.play?vFi(this.play.from,this.play.to,this.t).cur:null} + start(t,i,s){ + this.stop(),this.play=t,this.onHit=i,this.onEnd=s,this.t=0,this.hitDone=!1; + const[e,n]=yFi[t.key]??["돌발사건!","배가 크게 흔들렸어요"],h=Math.min(t.W-48,520),r=h-24,o=Math.round(2*r/3); + this.img.texture=t.tex,this.img.position.set(12,12),this.img.width=r,this.img.height=o,this.imgMask.clear().roundRect(12,12,r,o,14).fill(16777215),this.flash.clear().roundRect(12,12,r,o,14).fill(16777215),this.title.text=e,this.title.position.set(20,12+o+12),this.moreL.text=t.more>0?`외 ${ + t.more} + 건`:"",this.moreL.position.set(h-20-this.moreL.width,this.title.y+(this.title.height-this.moreL.height)/2),this.cap.text=n,this.cap.position.set(20,this.title.y+this.title.height+2); + const a=this.cap.y+this.cap.height+12; + this.barW=h-40-96,this.bar.position.set(20,a),this.num.text=`−${ + Math.round(t.dmg)} + `,this.num.position.set(20+this.barW+14,a+6-this.num.height/2); + const c=a+12+18; + this.cardBg.clear().roundRect(0,12,h,c,22).fill({ + color:0,alpha:.4} + ).roundRect(0,0,h,c,22).fill(16511967),this.card.pivot.set(h/2,c/2),this.card.hitArea=new Ui(0,0,h,c),this.card.position.set(t.W/2,Math.round(.46*t.H)),this.dim.clear().rect(0,0,t.W,t.H).fill(0),this.visible=!0,this.draw(),vn.shared.add(this.tick,this)} + skip(){ + var t; + !this.play||this.t<.5||this.t>=fFi||(this.hitDone||(this.hitDone=!0,null==(t=this.onHit)||t.call(this)),this.t=fFi)} + stop(){ + vn.shared.remove(this.tick,this),this.play=null,this.visible=!1} + tick(t){ + var i; + const s=this.play; + if(s){ + if(this.t+=t.deltaMS/1e3*(s.speed??1),!this.hitDone&&this.t>=dFi&&(this.hitDone=!0,null==(i=this.onHit)||i.call(this)),this.t>=2.6){ + const t=this.onEnd; + return this.stop(),void(null==t||t())} + this.draw()} + } + draw(){ + const t=this.play; + if(!t)return; + const i=mFi(this.t),s=vFi(t.from,t.to,this.t); + this.dim.alpha=i.dim,this.card.alpha=i.alpha,this.card.scale.set(i.scale),this.card.rotation=i.rot*Math.PI/180,this.card.position.set(t.W/2+i.shake,Math.round(.46*t.H)+i.y),this.flash.alpha=i.flash,this.cap.alpha=i.capAlpha,this.num.alpha=i.numAlpha,this.num.scale.set(i.numScale); + const e=this.barW,n=Math.max(0,s.cur/t.max),h=Math.max(n,s.lostTo/t.max),r=this.bar.clear().roundRect(0,0,e,12,6).fill(15195332); + n>0&&r.roundRect(0,0,Math.max(12,e*n),12,6).fill(8378016),h>n+.001&&r.rect(e*n,0,e*(h-n),12).fill(16743016)} + } + ; + Qt(AFi,"FishingHazardCut"); + let SFi=AFi; + const TFi=Qt(t=>!!t&&t in yFi,"hasHazardCut");
FishingFog 43 hunks, 84 statements
- ),Zt(nAi,"terrainInfo",null),Zt(nAi,"worldInfo",null),Zt(nAi,"worldTex",null),Zt(nAi,"terrains",new Map),Zt(nAi,"waterTex",null),Zt(nAi,"boatGearTex",null),Zt(nAi,"toolTex",null),Zt(nAi,"toolCells",new Map),Zt(nAi,"gearBackgrounds",[]),Zt(nAi,"gearChestTex",null),Zt(nAi,"boatBigTex",null),Zt(nAi,"boatBigCells",[]),Zt(nAi,"areaStampTex",null),Zt(nAi,"areaStampCells",[]),Zt(nAi,"gearChestCells",[]),Zt(nAi,"boatGearCells",new Map),Zt(nAi,"gearArt",null),Zt(nAi,"foamTex",null); + ),Zt(kAi,"terrainInfo",null),Zt(kAi,"worldInfo",null),Zt(kAi,"worldTex",null),Zt(kAi,"terrains",new Map),Zt(kAi,"waterTex",null),Zt(kAi,"boatGearTex",null),Zt(kAi,"toolTex",null),Zt(kAi,"toolCells",new Map),Zt(kAi,"gearBackgrounds",[]),Zt(kAi,"gearChestTex",null),Zt(kAi,"boatBigTex",null),Zt(kAi,"boatBigCells",[]),Zt(kAi,"hazardCuts",new Map),Zt(kAi,"menuIconTex",null),Zt(kAi,"menuIconCells",[]),Zt(kAi,"monsterIconTex",null),Zt(kAi,"monsterIconCells",[]),Zt(kAi,"harpoonIconTex",null),Zt(kAi,"harpoonIconCells",[]),Zt(kAi,"huntMatTex",null),Zt(kAi,"huntMatCells",[]),Zt(kAi,"areaStampTex",null),Zt(kAi,"areaStampCells",[]),Zt(kAi,"gearChestCells",[]),Zt(kAi,"boatGearCells",new Map),Zt(kAi,"gearArt",null),Zt(kAi,"foamTex",null);
- const gAi=["prow","compass","deck","anchor","toolbox","sail","lantern"],wAi=["luck","hp","armor","repair","speed","aim","power","steal","icebox","big","star","protect"],mAi={ - luck:[3,6,10,15,21,28,36],hp:[10,20,35,55,80,110,150],armor:[1,2,4,6,9,12,16],repair:[4,8,12,17,23,30,38],speed:[3,6,9,13,17,22,28],aim:[5,10,16,23,31,40,50],power:[5,10,16,23,31,40,50],steal:[3,6,9,13,17,22,28],icebox:[4,8,12,18,24,32,40],big:[4,8,13,19,26,34,43],star:[4,8,13,19,26,34,43],protect:[5,10,15,20,30,40,60]} + const $Ai=["prow","compass","deck","anchor","toolbox","sail","lantern"],HAi=["luck","hp","armor","repair","speed","aim","power","steal","icebox","big","star","protect","sell"],WAi={ + luck:[1,2,3,5,6,8,11],hp:[10,20,35,55,80,110,150],armor:[1,2,4,6,9,12,16],repair:[4,8,12,17,23,30,38],speed:[3,6,9,13,17,22,28],aim:[5,10,16,23,31,40,50],power:[5,10,16,23,31,40,50],steal:[3,6,9,13,17,22,28],icebox:[4,8,12,18,24,32,40],big:[4,8,13,19,26,34,43],star:[1,2,4,6,8,10,13],protect:[5,10,15,20,30,40,60],sell:[3,6,10,15,22,32,45]}
- repair:60,steal:50,big:90,protect:120} + repair:60,steal:50,big:90,protect:120,sell:60}
+ ,sell:{ + name:"물고기 판매가",unit:"%"}
- case"protect":return"털린 뒤 다시 털리지 않는 시간이 길어져요"} + case"protect":return"털린 뒤 다시 털리지 않는 시간이 길어져요"; + case"sell":return"물고기를 팔 때 더 많은 골드를 받아요"}
- prow:"luck",compass:"aim",deck:"hp",anchor:"steal",toolbox:"repair",sail:"speed",lantern:"icebox"} + prow:"luck",compass:"aim",deck:"hp",anchor:"steal",toolbox:"repair",sail:"speed",lantern:"sell"}
+ Qt(eSi,"gearStats"); + const nSi=Qt(t=>1+eSi(t).sell/100,"saleMult"),hSi=Qt((t,i)=>Math.round(t*nSi(i)),"saleGold");
- Qt(RAi,"gearStats"),Qt(xAi,"bestGear"),Qt(PAi,"betterGear"),Qt(NAi,"mergeable"),Qt(LAi,"mergeGroups"); - const DAi=[3032396,10135467,6142819,4886754,10513640,15901498,16734815,16769126],GAi={ + Qt(rSi,"bestGear"),Qt(oSi,"betterGear"),Qt(aSi,"mergeable"),Qt(cSi,"mergeGroups"); + const lSi=[3032396,10135467,6142819,4886754,10513640,16734815,16757806,4184298,15967960,7044351],uSi={
- R:0,C:2,O:4} + R:0,C:2,O:5}
- ,BAi=["인간|R","오크|R","엘프|R","언데드|R","인간|C","오크|C","엘프|C","언데드|C","인간|O","오크|O","엘프|O","언데드|O"],UAi=[1,1.08,1.16,1.24],FAi=[0,0,0,0,3,3,3,4,5,5,6,6],$Ai=Qt((t,i)=>BAi.indexOf(`${ + ,dSi=["인간|R","오크|R","엘프|R","언데드|R","인간|C","오크|C","엘프|C","언데드|C","인간|O","오크|O","엘프|O","언데드|O"],fSi=[1,1.08,1.16,1.24],pSi=Qt(t=>fSi[(t-1)%4],"tierSub"),wSi=[0,0,0,0,3,3,3,4,5,6,6,6],gSi=Qt((t,i)=>dSi.indexOf(`${
- key:"swell",text:"큰 너울에",dmg:42,w:3} + key:"swell",text:"큰 너울에",dmg:63,w:3}
- key:"storm",text:"폭풍이 몰아쳐",dmg:59,w:2} + key:"storm",text:"폭풍이 몰아쳐",dmg:89,w:2}
- key:"thunder",text:"번개를 맞아",dmg:51,w:1} + key:"thunder",text:"번개를 맞아",dmg:77,w:1}
- key:"monster",text:"몬스터의 물살로",dmg:46,w:2} + key:"monster",text:"몬스터의 물살로",dmg:69,w:2}
- R:11,C:30,O:55} + R:11,C:30,O:83}
- const s=UAi[($Ai(t,i)-1)%4]; - return[...HAi[i],{ - ...WAi[t],dmg:VAi[i],w:1} + const s=pSi(gSi(t,i)); + return[...mSi[i],{ + ...vSi[t],dmg:_Si[i],w:1}
- const sSi=Qt(t=>iSi(JAi(t.gear.boat)+RAi(t).hp),"maxHpOf"),eSi=Qt(t=>iSi(QAi(t.gear.boat)+RAi(t).armor),"armorOfS"),nSi=Qt((t,i)=>iSi(Math.max(0,t-i)),"hitDamage"),hSi=Qt(t=>String(iSi(t)),"hpText"),rSi=Qt(t=>t.replace(/\d+\.\d{ + const xSi=Qt(t=>kSi(TSi(t.gear.boat)+eSi(t).hp),"maxHpOf"),RSi=Qt(t=>kSi(CSi(t.gear.boat)+eSi(t).armor),"armorOfS"),PSi=Qt((t,i)=>kSi(Math.max(0,t-i)),"hitDamage"),NSi=Qt((t,i)=>kSi(.35*Math.max(0,t-i)),"ringDamage"),LSi=Qt(t=>String(kSi(t)),"hpText"),DSi=Qt(t=>t.replace(/\d+\.\d{
- ,ySi=[["고래상어","고래"],["돌고래","거대"],["범고래","범고래"],["고래","고래"],["백상아리","거대"],["바다사자","거대"],["매너티","거대"],["장수거북","거대"],["개복치","거대"],["대왕오징어","대물"],["산갈치","대물"],["가비알","대물"],["철갑상어","대물"],["실러캔스","대물"],["청새치","대물"],["참치","대물"],["물범","대물"],["꼬마상어","아주큼"],["상어","대물"],["거북손","아주작음"],["늑대거북","아주큼"],["가오리","아주큼"],["곰치","아주큼"],["늑대장어","아주큼"],["해달","아주큼"],["비버","아주큼"],["가아","아주큼"],["망토문어","아주큼"],["초롱아귀","큼"],["아귀","아주큼"],["메기","큼"],["장어","큼"],["문어","큼"],["펭귄","큼"],["거북","큼"],["투구게","큼"],["잉어","큼"],["용고기","큼"],["도치","큼"],["대왕등각류","보통"],["갑오징어","보통"],["오징어","보통"],["앵무조개","보통"],["전복","보통"],["해삼","보통"],["가시복","보통"],["쏠배감펭","보통"],["날치","보통"],["놀래기","보통"],["박쥐고기","보통"],["토끼고기","보통"],["통구멍","보통"],["칼고기","보통"],["성대","보통"],["빗해파리","아주작음"],["해파리","보통"],["볼루트고둥","보통"],["왕우럭조개","보통"],["집소라게","아주작음"],["달랑게","아주작음"],["매미새우","작음"],["불가사리","작음"],["도롱뇽","작음"],["게","작음"],["가재","작음"],["가리비","작음"],["소라","작음"],["진주조개","작음"],["가시굴","작음"],["홍합","작음"],["말미잘","작음"],["상자고기","작음"],["학공치","작음"],["집낙지","작음"],["꼬마고둥","아주작음"],["고둥","작음"],["새우","아주작음"],["등각류","아주작음"],["실고기","아주작음"],["해마","아주작음"],["베타","아주작음"],["갯민숭이","아주작음"],["리본벌레","아주작음"],["바다나리","아주작음"],["삿갓조개","아주작음"],["군부","아주작음"],["바다천사","아주작음"],["맛조개","아주작음"],["도끼고기","아주작음"]],ESi=Qt(t=>{ + ,QSi=[["피라루쿠","대물"],["금붕어","작음"],["비파고기","보통"],["별거미게","큼"],["듀공","거대"],["망둥어","작음"],["리프피시","작음"],["쥐노래미","보통"],["톱가오리","대물"],["쥐가오리","대물"],["수염상어","아주큼"],["은상어","큼"],["콩게","아주작음"],["농게","아주작음"],["대합","작음"],["새조개","작음"],["빗조개","작음"],["지붕굴","작음"],["방패굴","작음"],["오리너구리","큼"],["물쥐","보통"],["혹돔","큼"],["도루묵","작음"],["닭새우","큼"],["바다코끼리","거대"],["물개","대물"],["전갱이","보통"],["빙어","아주작음"],["쏠종개","보통"],["패들피시","대물"],["물돼지","대물"],["바다악어","거대"],["돛새치","대물"],["다랑어","대물"],["큰넙치","대물"],["창꼬치","큼"],["늑대고기","큼"],["바다뱀","보통"],["쥐치","보통"],["넙치","보통"],["가자미","보통"],["앵무고기","보통"],["나비고기","작음"],["투명머리고기","작음"],["씬벵이","작음"],["해룡","작음"],["바다나비","아주작음"],["고래상어","고래"],["돌고래","거대"],["범고래","범고래"],["고래","고래"],["백상아리","거대"],["바다사자","거대"],["매너티","거대"],["장수거북","거대"],["개복치","거대"],["대왕오징어","대물"],["산갈치","대물"],["가비알","대물"],["철갑상어","대물"],["실러캔스","대물"],["청새치","대물"],["참치","대물"],["물범","대물"],["꼬마상어","아주큼"],["상어","대물"],["거북손","아주작음"],["늑대거북","아주큼"],["가오리","아주큼"],["곰치","아주큼"],["늑대장어","아주큼"],["해달","아주큼"],["비버","아주큼"],["가아","아주큼"],["망토문어","아주큼"],["초롱아귀","큼"],["아귀","아주큼"],["메기","큼"],["장어","큼"],["문어","큼"],["펭귄","큼"],["거북","큼"],["투구게","큼"],["잉어","큼"],["용고기","큼"],["도치","큼"],["대왕등각류","보통"],["갑오징어","보통"],["오징어","보통"],["앵무조개","보통"],["전복","보통"],["해삼","보통"],["가시복","보통"],["쏠배감펭","보통"],["날치","보통"],["놀래기","보통"],["박쥐고기","보통"],["토끼고기","보통"],["통구멍","보통"],["칼고기","보통"],["성대","보통"],["빗해파리","아주작음"],["해파리","보통"],["볼루트고둥","보통"],["왕우럭조개","보통"],["집소라게","아주작음"],["달랑게","아주작음"],["매미새우","작음"],["불가사리","작음"],["도롱뇽","작음"],["게","작음"],["가재","작음"],["가리비","작음"],["소라","작음"],["진주조개","작음"],["가시굴","작음"],["홍합","작음"],["말미잘","작음"],["상자고기","작음"],["학공치","작음"],["집낙지","작음"],["꼬마고둥","아주작음"],["고둥","작음"],["새우","아주작음"],["등각류","아주작음"],["실고기","아주작음"],["해마","아주작음"],["베타","아주작음"],["갯민숭이","아주작음"],["리본벌레","아주작음"],["바다나리","아주작음"],["삿갓조개","아주작음"],["군부","아주작음"],["바다천사","아주작음"],["맛조개","아주작음"],["도끼고기","아주작음"]],ZSi=Qt(t=>{
- ,"startTrim"),ISi=[[1,"인간","어류","화로입꿀꺽장어","O","B","전체",3,"대형",4,1125,[3,6],0],[2,"인간","어류","불꽃돛청새치","O","S","노을",4,"대형",4,2250,[2,4,6,7],1],[3,"인간","어류","잿꽃꼬리베타","R","S","전체",2,"중형",1,20,[0,1,2,3,4],0],[4,"인간","어류","숯갑옷상자고기","C","M","전체",2,"중형",2,70,[0,1,2,3,4],0],[5,"인간","어류","대장간귀상어","O","M","전체",3,"대형",4,750,[4,7],0],[6,"인간","어류","불갈기해마","C","S","노을",3,"소형",2,175,[3,6],0],[7,"인간","어류","석탄주걱통구멍","C","B","전체",1,"중형",2,35,[0,1,2,3,4,5,6,7,8],0],[8,"인간","어류","불씨가시복","R","S","전체",1,"중형",1,10,[0,1,2,3,4,5,6,7,8],0],[9,"인간","어류","용암띠장어","R","M","노을",2,"대형",2,20,[3,4,5,6],0],[10,"인간","어류","숯등철갑상어","R","B","노을",5,"대형",3,600,[8],0],[11,"인간","어류","장밋날개날치","O","S","햇살",2,"중형",3,300,[0,1,2,3,4],0],[12,"인간","어류","화덕수염메기","R","B","전체",1,"대형",2,10,[0,1,2,3,4,5,6,7,8],0],[13,"인간","어류","햇살원반가오리","R","S","햇살",3,"대형",2,50,[3,6],0],[14,"인간","어류","홍등초롱아귀","O","B","달빛",4,"대형",4,3375,[2,4,6,7],1],[15,"인간","어류","불꽃꼬리참치","O","M","전체",2,"대형",4,300,[2,3,4,5],0],[16,"인간","어류","잿꽃갈기쏠배감펭","C","M","전체",2,"중형",2,70,[2,3,4,5],0],[17,"인간","갑각·껍질","도가니등게","R","B","전체",3,"소형",1,50,[4,7],0],[18,"인간","갑각·껍질","잿구름벙어리게","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[19,"인간","갑각·껍질","현무암투구게","C","B","달빛",4,"소형",2,525,[2,4,6,7],1],[20,"인간","갑각·껍질","숯주걱집게게","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[21,"인간","갑각·껍질","대장간권총새우","R","M","전체",2,"소형",1,20,[5,6,7,8],0],[22,"인간","갑각·껍질","불씨마디등각류","O","B","전체",1,"소형",3,225,[0,1,2,3,4,5,6,7,8],0],[23,"인간","갑각·껍질","용암주먹갯가재","C","B","전체",3,"소형",2,175,[4,7],0],[24,"인간","갑각·껍질","화산집소라게","C","B","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[25,"인간","갑각·껍질","노을불꽃가리비","C","M","노을",2,"소형",2,70,[4,5,6,7],0],[26,"인간","갑각·껍질","불씨진주조개","R","B","전체",3,"소형",1,50,[5,8],0],[27,"인간","갑각·껍질","화로소용돌이고둥","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[28,"인간","갑각·껍질","잿구름뿔소라","C","B","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[29,"인간","갑각·껍질","용암판앵무조개","O","M","전체",2,"소형",3,300,[4,5,6,7],0],[30,"인간","갑각·껍질","화덕삿갓조개","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[31,"인간","갑각·껍질","햇살테전복","C","B","햇살",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[32,"인간","갑각·껍질","홍등꼬마고둥","O","B","전체",1,"소형",3,225,[0,1,2,3,4,5,6,7,8],0],[33,"인간","비어류","화로배고래","O","S","햇살",5,"거대",5,9e3,[8],0],[34,"인간","비어류","잿꽃꼬리돌고래","O","S","전체",3,"거대",5,750,[5,8],0],[35,"인간","비어류","화산등늑대거북","R","S","전체",4,"대형",2,150,[2,4,6,7],1],[36,"인간","비어류","불꽃아가미도롱뇽","R","M","전체",2,"중형",1,20,[1,2,7,8],0],[37,"인간","비어류","풀무입문어","C","B","전체",2,"대형",3,70,[5,6,7,8],0],[38,"인간","비어류","횃불오징어","O","M","달빛",2,"대형",4,300,[5,6,7,8],0],[39,"인간","비어류","잿꽃치마갑오징어","C","S","전체",1,"대형",3,35,[0,1,2,3,4,5,6,7,8],0],[40,"인간","비어류","불씨심장귀문어","O","B","전체",2,"대형",4,450,[1,2,7,8],0],[41,"인간","비어류","화로등해파리","O","M","전체",1,"중형",3,150,[0,1,2,3,4,5,6,7,8],0],[42,"인간","비어류","불꽃말미잘","C","B","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[43,"인간","비어류","불바퀴거미불가사리","O","B","전체",1,"소형",3,225,[0,1,2,3,4,5,6,7,8],0],[44,"인간","비어류","불씨혹해삼","O","B","전체",1,"소형",3,225,[0,1,2,3,4,5,6,7,8],0],[45,"인간","비어류","잿갈기바다사자","C","S","전체",4,"거대",4,525,[8],0],[46,"인간","비어류","불꽃볏펭귄","C","S","전체",3,"대형",3,175,[5,8],0],[47,"인간","비어류","노을꽃갯민숭이","C","M","노을",2,"소형",2,70,[1,2,7,8],0],[48,"인간","비어류","용암리본벌레","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[49,"엘프","어류","연꽃꼬리베타","R","S","전체",2,"중형",1,20,[0,1,2,3,4],0],[50,"엘프","어류","도토리가시복","C","S","전체",2,"중형",2,70,[0,1,2,3,4],0],[51,"엘프","어류","연잎가오리","R","S","전체",3,"대형",2,50,[3,6],0],[52,"엘프","어류","뿌리수염메기","R","B","전체",1,"대형",2,10,[0,1,2,3,4,5,6,7,8],0],[53,"엘프","어류","고사리돛청새치","O","S","햇살",4,"대형",4,2250,[2,4,6,7],1],[54,"엘프","어류","꼬투리상자고기","C","S","전체",2,"중형",2,70,[2,3,4,5],0],[55,"엘프","어류","버들잎장어","R","M","달빛",2,"대형",2,20,[3,4,5,6],0],[56,"엘프","어류","은행잎개복치","O","M","전체",3,"대형",4,750,[3,6],0],[57,"엘프","어류","솔방울철갑상어","R","B","안개",5,"대형",3,600,[8],0],[58,"엘프","어류","단풍날개날치","O","S","노을",2,"중형",3,300,[0,1,2,3,4],0],[59,"엘프","어류","완두꼬투리학공치","O","S","전체",1,"중형",3,150,[0,1,2,3,4,5,6,7,8],0],[60,"엘프","어류","이끼혹놀래기","C","M","전체",1,"중형",2,35,[0,1,2,3,4,5,6,7,8],0],[61,"엘프","어류","덩굴꼬리해마","C","S","햇살",3,"소형",2,175,[3,6],0],[62,"엘프","어류","꽃입아귀","O","B","달빛",4,"대형",4,3375,[2,4,6,7],1],[63,"엘프","어류","씨앗비늘잉어","R","M","전체",1,"중형",1,10,[0,1,2,3,4,5,6,7,8],0],[64,"엘프","어류","잎꼬리꼬마상어","O","M","전체",2,"대형",4,300,[2,3,4,5],0],[65,"엘프","갑각·껍질","밤송이집게게","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[66,"엘프","갑각·껍질","연꽃그릇게","R","S","햇살",2,"소형",1,20,[5,6,7,8],0],[67,"엘프","갑각·껍질","고사리집게게","C","B","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[68,"엘프","갑각·껍질","잎방패투구게","C","B","달빛",4,"소형",2,525,[2,4,6,7],1],[69,"엘프","갑각·껍질","씨앗주먹갯가재","C","B","전체",3,"소형",2,175,[4,7],0],[70,"엘프","갑각·껍질","대나무마디새우","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[71,"엘프","갑각·껍질","솔방울등각류","O","B","전체",1,"소형",3,225,[0,1,2,3,4,5,6,7,8],0],[72,"엘프","갑각·껍질","버섯집소라게","C","B","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[73,"엘프","갑각·껍질","은행부채가리비","C","M","전체",2,"소형",2,70,[4,5,6,7],0],[74,"엘프","갑각·껍질","씨앗진주조개","R","B","전체",3,"소형",1,50,[4,7],0],[75,"엘프","갑각·껍질","도토리뿔소라","C","B","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[76,"엘프","갑각·껍질","덩굴나선고둥","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[77,"엘프","갑각·껍질","호두방앵무조개","O","M","전체",3,"소형",3,750,[4,7],0],[78,"엘프","갑각·껍질","꽃잎삿갓조개","C","B","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[79,"엘프","갑각·껍질","이끼테전복","C","B","안개",3,"소형",2,175,[5,8],0],[80,"엘프","갑각·껍질","초롱꼬투리고둥","O","B","달빛",2,"소형",3,450,[4,5,6,7],0],[81,"엘프","비어류","버들잎지느러미고래","O","S","햇살",5,"거대",5,9e3,[8],0],[82,"엘프","비어류","완두꼬투리매너티","R","S","햇살",4,"거대",3,150,[2,4,6,7],1],[83,"엘프","비어류","나이테등거북","R","M","전체",1,"대형",2,10,[0,1,2,3,4,5,6,7,8],0],[84,"엘프","비어류","고사리아가미도롱뇽","R","B","안개",2,"중형",1,20,[1,2,7,8],0],[85,"엘프","비어류","꽃봉오리오징어","O","M","달빛",2,"대형",4,300,[5,6,7,8],0],[86,"엘프","비어류","연꽃망토문어","C","M","전체",4,"대형",3,525,[8],0],[87,"엘프","비어류","클로버귀문어","O","B","전체",3,"대형",4,1125,[5,8],0],[88,"엘프","비어류","이끼치마갑오징어","C","S","전체",2,"대형",3,70,[5,6,7,8],0],[89,"엘프","비어류","버섯갓해파리","O","M","전체",1,"중형",3,150,[0,1,2,3,4,5,6,7,8],0],[90,"엘프","비어류","꽃잎말미잘","O","B","전체",1,"소형",3,225,[0,1,2,3,4,5,6,7,8],0],[91,"엘프","비어류","고사리깃바다나리","O","B","전체",1,"소형",3,225,[0,1,2,3,4,5,6,7,8],0],[92,"엘프","비어류","완두등해삼","C","B","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[93,"엘프","비어류","뿌리수염해달","R","S","전체",3,"대형",2,50,[5,8],0],[94,"엘프","비어류","버들꼬리물범","O","S","전체",2,"대형",4,300,[1,2,7,8],0],[95,"엘프","비어류","단풍망토갯민숭이","C","M","노을",2,"소형",2,70,[1,2,7,8],0],[96,"엘프","비어류","덩굴리본벌레","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[97,"언데드","어류","뼈줄무늬가아","R","S","전체",2,"대형",2,20,[0,1,2,3,4],0],[98,"언데드","어류","달그늘도끼고기","O","M","달빛",1,"중형",3,150,[0,1,2,3,4,5,6,7,8],0],[99,"언데드","어류","송곳니늑대장어","C","B","전체",3,"대형",3,175,[3,6],0],[100,"언데드","어류","잿빛박쥐고기","C","B","전체",2,"중형",2,70,[0,1,2,3,4],0],[101,"언데드","어류","유령칼고기","R","M","달빛",2,"중형",1,20,[3,4,5,6],0],[102,"언데드","어류","그림자꿀꺽장어","O","M","전체",2,"대형",4,300,[0,1,2,3,4],0],[103,"언데드","어류","뼈턱용고기","O","B","달빛",3,"대형",4,1125,[3,6],0],[104,"언데드","어류","자주초롱아귀","O","B","전체",2,"대형",4,450,[2,3,4,5],0],[105,"언데드","어류","고대뼈실러캔스","O","B","달빛",5,"대형",5,13500,[8],0],[106,"언데드","어류","달가면토끼고기","C","S","전체",1,"중형",2,35,[0,1,2,3,4,5,6,7,8],0],[107,"언데드","어류","무덤입통구멍","C","B","전체",2,"중형",2,70,[2,3,4,5],0],[108,"언데드","어류","뼈마디실고기","R","M","전체",2,"소형",1,20,[5,6,7,8],0],[109,"언데드","어류","망령주름상어","O","M","안개",4,"대형",4,2250,[2,4,6,7],1],[110,"언데드","어류","뼈등철갑상어","R","B","안개",5,"대형",3,600,[8],0],[111,"언데드","어류","해골무늬가오리","R","B","전체",3,"대형",2,50,[3,6],0],[112,"언데드","어류","유령갈기쏠배감펭","C","M","달빛",2,"중형",2,70,[4,5,6,7],0],[113,"언데드","갑각·껍질","해골방패투구게","C","B","달빛",3,"소형",2,175,[4,7],0],[114,"언데드","갑각·껍질","뼈가시거미게","O","B","전체",2,"소형",3,450,[4,5,6,7],0],[115,"언데드","갑각·껍질","봉합등상자게","C","B","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[116,"언데드","갑각·껍질","박쥐날개집게게","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[117,"언데드","갑각·껍질","뼈갑옷대왕등각류","O","B","전체",3,"소형",3,1125,[4,7],0],[118,"언데드","갑각·껍질","뼈마디유령새우","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[119,"언데드","갑각·껍질","숯뼈가재","R","B","전체",1,"중형",1,10,[0,1,2,3,4,5,6,7,8],0],[120,"언데드","갑각·껍질","묘비집소라게","R","B","전체",2,"소형",1,20,[1,2,7,8],0],[121,"언데드","갑각·껍질","뼈고리뿔고둥","C","B","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[122,"언데드","갑각·껍질","송곳니가리비","C","M","전체",2,"소형",2,70,[5,6,7,8],0],[123,"언데드","갑각·껍질","관뚜껑홍합","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[124,"언데드","갑각·껍질","흑진주가시굴","C","B","안개",4,"소형",2,525,[2,4,6,7],1],[125,"언데드","갑각·껍질","자주번개볼루트고둥","O","B","전체",2,"소형",3,450,[5,6,7,8],0],[126,"언데드","갑각·껍질","유령관고둥","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[127,"언데드","갑각·껍질","뼈방앵무조개","O","M","전체",3,"소형",3,750,[5,8],0],[128,"언데드","갑각·껍질","잿뿔유령소라","R","S","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[129,"언데드","비어류","망령갈비고래","O","S","달빛",4,"거대",5,2250,[2,4,6,7],1],[130,"언데드","비어류","보랏띠물범","C","S","달빛",4,"대형",3,525,[8],0],[131,"언데드","비어류","뼈등가비알","R","S","전체",4,"거대",3,150,[2,4,6,7],1],[132,"언데드","비어류","창백동굴도롱뇽","R","B","안개",3,"소형",1,50,[4,7],0],[133,"언데드","비어류","초승망토문어","C","M","달빛",3,"대형",3,175,[5,8],0],[134,"언데드","비어류","유리유령오징어","O","S","전체",1,"대형",4,150,[0,1,2,3,4,5,6,7,8],0],[135,"언데드","비어류","죄수줄무늬오징어","C","S","전체",1,"대형",3,35,[0,1,2,3,4,5,6,7,8],0],[136,"언데드","비어류","양뿔촉수오징어","O","M","전체",2,"대형",4,300,[1,2,7,8],0],[137,"언데드","비어류","흰보유령해파리","R","S","달빛",3,"중형",1,50,[5,8],0],[138,"언데드","비어류","자주꽃거꾸로해파리","C","B","전체",1,"중형",2,35,[0,1,2,3,4,5,6,7,8],0],[139,"언데드","비어류","뼈마디거미불가사리","O","B","전체",1,"소형",3,225,[0,1,2,3,4,5,6,7,8],0],[140,"언데드","비어류","잿가시해삼","C","B","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[141,"언데드","비어류","박쥐망토갯민숭이","C","M","전체",2,"소형",2,70,[1,2,7,8],0],[142,"언데드","비어류","망령관말미잘","O","B","전체",1,"소형",3,225,[0,1,2,3,4,5,6,7,8],0],[143,"언데드","비어류","보랏깃바다나리","O","B","전체",1,"소형",3,225,[0,1,2,3,4,5,6,7,8],0],[144,"언데드","비어류","그림자리본벌레","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[145,"오크","어류","푸른질주참치","O","M","전체",1,"대형",4,150,[0,1,2,3,4,5,6,7,8],0],[146,"오크","어류","달원반개복치","O","M","달빛",1,"대형",4,150,[0,1,2,3,4,5,6,7,8],0],[147,"오크","어류","하늘날개날치","C","S","전체",1,"중형",2,35,[0,1,2,3,4,5,6,7,8],0],[148,"오크","어류","물결갈기산갈치","O","B","달빛",5,"거대",5,13500,[8],0],[149,"오크","어류","별점고래상어","O","S","전체",3,"거대",5,750,[3,6],0],[150,"오크","어류","파도이빨백상아리","O","M","전체",3,"거대",5,750,[4,7],0],[151,"오크","어류","남빛망치귀상어","O","M","전체",2,"대형",4,300,[0,1,2,3,4],0],[152,"오크","어류","물톱주둥이상어","R","B","안개",5,"대형",3,600,[8],0],[153,"오크","어류","초승꼬리환도상어","C","M","노을",4,"대형",3,525,[2,4,6,7],1],[154,"오크","어류","물방울전기가오리","R","B","전체",3,"대형",2,50,[3,6],0],[155,"오크","어류","서리가시복","R","S","전체",2,"중형",1,20,[0,1,2,3,4],0],[156,"오크","어류","남빛상자고기","C","M","전체",1,"중형",2,35,[0,1,2,3,4,5,6,7,8],0],[157,"오크","어류","물창학공치","R","S","전체",2,"중형",1,20,[3,4,5,6],0],[158,"오크","어류","물날개성대","C","B","전체",2,"중형",2,70,[0,1,2,3,4],0],[159,"오크","어류","방울혹도치","R","M","안개",3,"중형",1,50,[4,7],0],[160,"오크","어류","푸른리본곰치","C","B","전체",3,"대형",3,175,[3,6],0],[161,"오크","갑각·껍질","파도주걱게","C","S","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[162,"오크","갑각·껍질","해면이불게","C","B","전체",2,"소형",2,70,[2,3,4,5],0],[163,"오크","갑각·껍질","서리벙어리참게","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[164,"오크","갑각·껍질","물안경달랑게","C","S","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[165,"오크","갑각·껍질","넓적부채매미새우","C","B","전체",3,"소형",2,175,[4,7],0],[166,"오크","갑각·껍질","물대포권총새우","C","M","전체",2,"소형",2,70,[4,5,6,7],0],[167,"오크","갑각·껍질","남빛꼬부리옆새우","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[168,"오크","갑각·껍질","서리꽃거북손","R","S","안개",2,"대형",2,20,[5,6,7,8],0],[169,"오크","갑각·껍질","물결방앵무조개","O","M","전체",1,"소형",3,150,[0,1,2,3,4,5,6,7,8],0],[170,"오크","갑각·껍질","달배집낙지","O","S","달빛",2,"소형",3,300,[2,3,4,5],0],[171,"오크","갑각·껍질","푸른막대맛조개","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[172,"오크","갑각·껍질","긴목왕우럭조개","C","B","전체",3,"소형",2,175,[5,8],0],[173,"오크","갑각·껍질","서리삿갓조개","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[174,"오크","갑각·껍질","물소용돌이고둥","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[175,"오크","갑각·껍질","산호뿔소라","C","B","전체",1,"소형",2,35,[0,1,2,3,4,5,6,7,8],0],[176,"오크","갑각·껍질","남빛갑옷군부","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0],[177,"오크","비어류","밤바다범고래","O","S","달빛",4,"거대",5,2250,[2,4,6,7],1],[178,"오크","비어류","네모머리향유고래","O","B","전체",4,"거대",5,3375,[2,4,6,7],1],[179,"오크","비어류","파도날개혹등고래","O","S","전체",2,"거대",5,300,[4,5,6,7],0],[180,"오크","비어류","초승턱북극고래","O","S","안개",2,"거대",5,300,[5,6,7,8],0],[181,"오크","비어류","긴팔대왕오징어","O","B","전체",3,"거대",5,1125,[5,8],0],[182,"오크","비어류","밤망토흡혈오징어","O","B","달빛",1,"대형",4,225,[0,1,2,3,4,5,6,7,8],0],[183,"오크","비어류","방울귀오징어","C","M","전체",1,"대형",3,35,[0,1,2,3,4,5,6,7,8],0],[184,"오크","비어류","비단망토문어","C","M","달빛",4,"대형",3,525,[8],0],[185,"오크","비어류","물줄기등장수거북","O","M","전체",2,"거대",5,300,[1,2,7,8],0],[186,"오크","비어류","파도날개펭귄","C","S","전체",2,"대형",3,70,[5,6,7,8],0],[187,"오크","비어류","물방망이비버","R","S","전체",4,"대형",2,150,[2,4,6,7],1],[188,"오크","비어류","둥실배해달","R","S","전체",3,"대형",2,50,[5,8],0],[189,"오크","비어류","서리날개바다천사","C","M","안개",2,"소형",2,70,[1,2,7,8],0],[190,"오크","비어류","푸른용갯민숭이","O","S","전체",1,"소형",3,150,[0,1,2,3,4,5,6,7,8],0],[191,"오크","비어류","물줄무늬빗해파리","R","M","달빛",2,"소형",1,20,[1,2,7,8],0],[192,"오크","비어류","물방울말미잘","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0]].map(t=>{ + ,"startTrim"),hTi=new Set([33,81,129,177,178,179,180,181]),rTi=[[1,"인간","어류","화로입꿀꺽장어","O","B","전체",3,"대형",4,285,[3,6],0,7,""],[2,"인간","어류","불꽃돛청새치","O","S","노을",4,"대형",4,570,[2,4,6,7],1,8,""],[3,"인간","어류","잿꽃꼬리베타","R","S","전체",2,"중형",1,20,[0,1,2,3,4],0,2,""],[4,"인간","어류","숯갑옷상자고기","C","M","전체",2,"중형",2,50,[0,1,2,3,4],0,4,"O"],[5,"인간","어류","대장간귀상어","O","M","전체",3,"대형",4,190,[4,7],0,7,""],[6,"인간","어류","불갈기해마","C","S","노을",3,"소형",2,125,[3,6],0,5,""],[7,"인간","어류","석탄주걱통구멍","C","B","전체",1,"중형",2,25,[0,1,2,3,4,5,6,7,8],0,1,"O"],[8,"인간","어류","불씨가시복","R","S","전체",1,"중형",1,10,[0,1,2,3,4,5,6,7,8],0,1,""],[9,"인간","어류","용암띠장어","R","M","노을",2,"대형",2,20,[3,4,5,6],0,2,"CO"],[10,"인간","어류","숯등철갑상어","R","B","노을",5,"대형",3,300,[8],0,5,""],[11,"인간","어류","장밋날개날치","O","S","햇살",2,"중형",3,76,[0,1,2,3,4],0,6,""],[12,"인간","어류","화덕수염메기","R","B","전체",1,"대형",2,10,[0,1,2,3,4,5,6,7,8],0,1,""],[13,"인간","어류","햇살원반가오리","R","S","햇살",3,"대형",2,50,[3,6],0,3,"CO"],[14,"인간","어류","홍등초롱아귀","O","B","달빛",4,"대형",4,855,[2,4,6,7],1,7,""],[15,"인간","어류","불꽃꼬리참치","O","M","전체",2,"대형",4,76,[2,3,4,5],0,6,""],[16,"인간","어류","잿꽃갈기쏠배감펭","C","M","전체",2,"중형",2,50,[2,3,4,5],0,4,"O"],[17,"인간","갑각·껍질","도가니등게","R","B","전체",3,"소형",1,50,[4,7],0,3,"CO"],[18,"인간","갑각·껍질","잿구름벙어리게","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"CO"],[19,"인간","갑각·껍질","현무암투구게","C","B","달빛",4,"소형",2,375,[2,4,6,7],1,6,""],[20,"인간","갑각·껍질","숯주걱집게게","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"CO"],[21,"인간","갑각·껍질","대장간권총새우","R","M","전체",2,"소형",1,20,[5,6,7,8],0,2,"C"],[22,"인간","갑각·껍질","불씨마디등각류","O","B","전체",1,"소형",3,57,[0,1,2,3,4,5,6,7,8],0,1,""],[23,"인간","갑각·껍질","용암주먹갯가재","C","B","전체",3,"소형",2,125,[4,7],0,5,""],[24,"인간","갑각·껍질","화산집소라게","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,2,"O"],[25,"인간","갑각·껍질","노을불꽃가리비","C","M","노을",2,"소형",2,50,[4,5,6,7],0,4,""],[26,"인간","갑각·껍질","불씨진주조개","R","B","전체",3,"소형",1,50,[5,8],0,3,""],[27,"인간","갑각·껍질","화로소용돌이고둥","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"C"],[28,"인간","갑각·껍질","잿구름뿔소라","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,2,"O"],[29,"인간","갑각·껍질","용암판앵무조개","O","M","전체",2,"소형",3,76,[4,5,6,7],0,6,""],[30,"인간","갑각·껍질","화덕삿갓조개","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"C"],[31,"인간","갑각·껍질","햇살테전복","C","B","햇살",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[32,"인간","갑각·껍질","홍등꼬마고둥","O","B","전체",1,"소형",3,57,[0,1,2,3,4,5,6,7,8],0,2,""],[33,"인간","비어류","화로배고래","O","S","햇살",5,"거대",5,1140,[8],0,5,""],[34,"인간","비어류","잿꽃꼬리돌고래","O","S","전체",3,"거대",5,190,[5,8],0,7,""],[35,"인간","비어류","화산등늑대거북","R","S","전체",4,"대형",2,150,[2,4,6,7],1,4,""],[36,"인간","비어류","불꽃아가미도롱뇽","R","M","전체",2,"중형",1,20,[1,2,7,8],0,2,""],[37,"인간","비어류","풀무입문어","C","B","전체",2,"대형",3,50,[5,6,7,8],0,4,"O"],[38,"인간","비어류","횃불오징어","O","M","달빛",2,"대형",4,76,[5,6,7,8],0,6,""],[39,"인간","비어류","잿꽃치마갑오징어","C","S","전체",1,"대형",3,25,[0,1,2,3,4,5,6,7,8],0,1,"O"],[40,"인간","비어류","불씨심장귀문어","O","B","전체",2,"대형",4,114,[1,2,7,8],0,6,""],[41,"인간","비어류","화로등해파리","O","M","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,3,""],[42,"인간","비어류","불꽃말미잘","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[43,"인간","비어류","불바퀴거미불가사리","O","B","전체",1,"소형",3,57,[0,1,2,3,4,5,6,7,8],0,3,""],[44,"인간","비어류","불씨혹해삼","O","B","전체",1,"소형",3,57,[0,1,2,3,4,5,6,7,8],0,4,""],[45,"인간","비어류","잿갈기바다사자","C","S","전체",5,"거대",5,750,[8],0,7,""],[46,"인간","비어류","불꽃볏펭귄","C","S","전체",3,"대형",3,125,[5,8],0,5,"O"],[47,"인간","비어류","노을꽃갯민숭이","C","M","노을",2,"소형",2,50,[1,2,7,8],0,4,""],[48,"인간","비어류","용암리본벌레","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,""],[49,"엘프","어류","연꽃꼬리베타","R","S","전체",2,"중형",1,20,[0,1,2,3,4],0,2,""],[50,"엘프","어류","도토리가시복","C","S","전체",2,"중형",2,50,[0,1,2,3,4],0,4,"O"],[51,"엘프","어류","연잎가오리","R","S","전체",3,"대형",2,50,[3,6],0,3,"CO"],[52,"엘프","어류","뿌리수염메기","R","B","전체",1,"대형",2,10,[0,1,2,3,4,5,6,7,8],0,1,""],[53,"엘프","어류","고사리돛청새치","O","S","햇살",4,"대형",4,570,[2,4,6,7],1,8,""],[54,"엘프","어류","꼬투리상자고기","C","S","전체",2,"중형",2,50,[2,3,4,5],0,4,"O"],[55,"엘프","어류","버들잎장어","R","M","달빛",2,"대형",2,20,[3,4,5,6],0,2,"CO"],[56,"엘프","어류","은행잎개복치","O","M","전체",3,"대형",4,190,[3,6],0,7,""],[57,"엘프","어류","솔방울철갑상어","R","B","안개",5,"대형",3,300,[8],0,5,""],[58,"엘프","어류","단풍날개날치","O","S","노을",2,"중형",3,76,[0,1,2,3,4],0,6,""],[59,"엘프","어류","완두꼬투리학공치","O","S","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,4,""],[60,"엘프","어류","이끼혹놀래기","C","M","전체",1,"중형",2,25,[0,1,2,3,4,5,6,7,8],0,1,"O"],[61,"엘프","어류","덩굴꼬리해마","C","S","햇살",3,"소형",2,125,[3,6],0,5,""],[62,"엘프","어류","꽃입아귀","O","B","달빛",4,"대형",4,855,[2,4,6,7],1,7,""],[63,"엘프","어류","씨앗비늘잉어","R","M","전체",1,"중형",1,10,[0,1,2,3,4,5,6,7,8],0,1,""],[64,"엘프","어류","잎꼬리꼬마상어","O","M","전체",2,"대형",4,76,[2,3,4,5],0,6,""],[65,"엘프","갑각·껍질","밤송이집게게","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"CO"],[66,"엘프","갑각·껍질","연꽃그릇게","R","S","햇살",2,"소형",1,20,[5,6,7,8],0,2,"C"],[67,"엘프","갑각·껍질","고사리집게게","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,1,"O"],[68,"엘프","갑각·껍질","잎방패투구게","C","B","달빛",4,"소형",2,375,[2,4,6,7],1,6,""],[69,"엘프","갑각·껍질","씨앗주먹갯가재","C","B","전체",3,"소형",2,125,[4,7],0,5,""],[70,"엘프","갑각·껍질","대나무마디새우","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"CO"],[71,"엘프","갑각·껍질","솔방울등각류","O","B","전체",1,"소형",3,57,[0,1,2,3,4,5,6,7,8],0,1,""],[72,"엘프","갑각·껍질","버섯집소라게","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,2,"O"],[73,"엘프","갑각·껍질","은행부채가리비","C","M","전체",2,"소형",2,50,[4,5,6,7],0,4,""],[74,"엘프","갑각·껍질","씨앗진주조개","R","B","전체",3,"소형",1,50,[4,7],0,3,"C"],[75,"엘프","갑각·껍질","도토리뿔소라","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[76,"엘프","갑각·껍질","덩굴나선고둥","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"C"],[77,"엘프","갑각·껍질","호두방앵무조개","O","M","전체",3,"소형",3,190,[4,7],0,7,""],[78,"엘프","갑각·껍질","꽃잎삿갓조개","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[79,"엘프","갑각·껍질","이끼테전복","C","B","안개",3,"소형",2,125,[5,8],0,5,""],[80,"엘프","갑각·껍질","초롱꼬투리고둥","O","B","달빛",2,"소형",3,114,[4,5,6,7],0,6,""],[81,"엘프","비어류","버들잎지느러미고래","O","S","햇살",5,"거대",5,1140,[8],0,5,""],[82,"엘프","비어류","완두꼬투리매너티","R","S","햇살",4,"거대",3,150,[2,4,6,7],1,4,""],[83,"엘프","비어류","나이테등거북","R","M","전체",1,"대형",2,10,[0,1,2,3,4,5,6,7,8],0,1,""],[84,"엘프","비어류","고사리아가미도롱뇽","R","B","안개",2,"중형",1,20,[1,2,7,8],0,2,""],[85,"엘프","비어류","꽃봉오리오징어","O","M","달빛",2,"대형",4,76,[5,6,7,8],0,6,""],[86,"엘프","비어류","연꽃망토문어","C","M","전체",5,"대형",4,750,[8],0,7,""],[87,"엘프","비어류","클로버귀문어","O","B","전체",3,"대형",4,285,[5,8],0,7,""],[88,"엘프","비어류","이끼치마갑오징어","C","S","전체",2,"대형",3,50,[5,6,7,8],0,4,"O"],[89,"엘프","비어류","버섯갓해파리","O","M","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,2,""],[90,"엘프","비어류","꽃잎말미잘","O","B","전체",1,"소형",3,57,[0,1,2,3,4,5,6,7,8],0,3,""],[91,"엘프","비어류","고사리깃바다나리","O","B","전체",1,"소형",3,57,[0,1,2,3,4,5,6,7,8],0,3,""],[92,"엘프","비어류","완두등해삼","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,2,"O"],[93,"엘프","비어류","뿌리수염해달","R","S","전체",3,"대형",2,50,[5,8],0,3,""],[94,"엘프","비어류","버들꼬리물범","O","S","전체",2,"대형",4,76,[1,2,7,8],0,6,""],[95,"엘프","비어류","단풍망토갯민숭이","C","M","노을",2,"소형",2,50,[1,2,7,8],0,4,""],[96,"엘프","비어류","덩굴리본벌레","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"C"],[97,"언데드","어류","뼈줄무늬가아","R","S","전체",2,"대형",2,20,[0,1,2,3,4],0,2,""],[98,"언데드","어류","달그늘도끼고기","O","M","달빛",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,4,""],[99,"언데드","어류","송곳니늑대장어","C","B","전체",3,"대형",3,125,[3,6],0,5,"O"],[100,"언데드","어류","잿빛박쥐고기","C","B","전체",2,"중형",2,50,[0,1,2,3,4],0,4,""],[101,"언데드","어류","유령칼고기","R","M","달빛",2,"중형",1,20,[3,4,5,6],0,2,""],[102,"언데드","어류","그림자꿀꺽장어","O","M","전체",2,"대형",4,76,[0,1,2,3,4],0,6,""],[103,"언데드","어류","뼈턱용고기","O","B","달빛",3,"대형",4,285,[3,6],0,7,""],[104,"언데드","어류","자주초롱아귀","O","B","전체",2,"대형",4,114,[2,3,4,5],0,6,""],[105,"언데드","어류","고대뼈실러캔스","O","B","달빛",5,"대형",5,1710,[8],0,8,""],[106,"언데드","어류","달가면토끼고기","C","S","전체",1,"중형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[107,"언데드","어류","무덤입통구멍","C","B","전체",2,"중형",2,50,[2,3,4,5],0,4,"O"],[108,"언데드","어류","뼈마디실고기","R","M","전체",2,"소형",1,20,[5,6,7,8],0,2,""],[109,"언데드","어류","망령주름상어","O","M","안개",4,"대형",4,570,[2,4,6,7],1,8,""],[110,"언데드","어류","뼈등철갑상어","R","B","안개",5,"대형",3,300,[8],0,5,""],[111,"언데드","어류","해골무늬가오리","R","B","전체",3,"대형",2,50,[3,6],0,3,"CO"],[112,"언데드","어류","유령갈기쏠배감펭","C","M","달빛",2,"중형",2,50,[4,5,6,7],0,4,"O"],[113,"언데드","갑각·껍질","해골방패투구게","C","B","달빛",3,"소형",2,125,[4,7],0,5,""],[114,"언데드","갑각·껍질","뼈가시거미게","O","B","전체",2,"소형",3,114,[4,5,6,7],0,6,""],[115,"언데드","갑각·껍질","봉합등상자게","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,2,"O"],[116,"언데드","갑각·껍질","박쥐날개집게게","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"CO"],[117,"언데드","갑각·껍질","뼈갑옷대왕등각류","O","B","전체",3,"소형",3,285,[4,7],0,7,""],[118,"언데드","갑각·껍질","뼈마디유령새우","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"CO"],[119,"언데드","갑각·껍질","숯뼈가재","R","B","전체",1,"중형",1,10,[0,1,2,3,4,5,6,7,8],0,1,""],[120,"언데드","갑각·껍질","묘비집소라게","R","B","전체",2,"소형",1,20,[1,2,7,8],0,2,"CO"],[121,"언데드","갑각·껍질","뼈고리뿔고둥","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[122,"언데드","갑각·껍질","송곳니가리비","C","M","전체",2,"소형",2,50,[5,6,7,8],0,4,""],[123,"언데드","갑각·껍질","관뚜껑홍합","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"C"],[124,"언데드","갑각·껍질","흑진주가시굴","C","B","안개",4,"소형",2,375,[2,4,6,7],1,6,""],[125,"언데드","갑각·껍질","자주번개볼루트고둥","O","B","전체",2,"소형",3,114,[5,6,7,8],0,6,""],[126,"언데드","갑각·껍질","유령관고둥","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"C"],[127,"언데드","갑각·껍질","뼈방앵무조개","O","M","전체",3,"소형",3,190,[5,8],0,7,""],[128,"언데드","갑각·껍질","잿뿔유령소라","R","S","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"C"],[129,"언데드","비어류","망령갈비고래","O","S","달빛",4,"거대",5,570,[2,4,6,7],1,4,""],[130,"언데드","비어류","보랏띠물범","C","S","달빛",5,"대형",4,750,[8],0,7,""],[131,"언데드","비어류","뼈등가비알","R","S","전체",4,"거대",3,150,[2,4,6,7],1,4,""],[132,"언데드","비어류","창백동굴도롱뇽","R","B","안개",3,"소형",1,50,[4,7],0,3,""],[133,"언데드","비어류","초승망토문어","C","M","달빛",3,"대형",3,125,[5,8],0,5,""],[134,"언데드","비어류","유리유령오징어","O","S","전체",1,"대형",4,38,[0,1,2,3,4,5,6,7,8],0,4,""],[135,"언데드","비어류","죄수줄무늬오징어","C","S","전체",1,"대형",3,25,[0,1,2,3,4,5,6,7,8],0,1,"O"],[136,"언데드","비어류","양뿔촉수오징어","O","M","전체",2,"대형",4,76,[1,2,7,8],0,6,""],[137,"언데드","비어류","흰보유령해파리","R","S","달빛",3,"중형",1,50,[5,8],0,3,"CO"],[138,"언데드","비어류","자주꽃거꾸로해파리","C","B","전체",1,"중형",2,25,[0,1,2,3,4,5,6,7,8],0,1,"O"],[139,"언데드","비어류","뼈마디거미불가사리","O","B","전체",1,"소형",3,57,[0,1,2,3,4,5,6,7,8],0,1,""],[140,"언데드","비어류","잿가시해삼","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,2,"O"],[141,"언데드","비어류","박쥐망토갯민숭이","C","M","전체",2,"소형",2,50,[1,2,7,8],0,4,""],[142,"언데드","비어류","망령관말미잘","O","B","전체",1,"소형",3,57,[0,1,2,3,4,5,6,7,8],0,2,""],[143,"언데드","비어류","보랏깃바다나리","O","B","전체",1,"소형",3,57,[0,1,2,3,4,5,6,7,8],0,3,""],[144,"언데드","비어류","그림자리본벌레","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,""],[145,"오크","어류","푸른질주참치","O","M","전체",1,"대형",4,38,[0,1,2,3,4,5,6,7,8],0,3,""],[146,"오크","어류","달원반개복치","O","M","달빛",1,"대형",4,38,[0,1,2,3,4,5,6,7,8],0,4,""],[147,"오크","어류","하늘날개날치","C","S","전체",1,"중형",2,25,[0,1,2,3,4,5,6,7,8],0,1,"O"],[148,"오크","어류","물결갈기산갈치","O","B","달빛",5,"거대",5,1710,[8],0,8,""],[149,"오크","어류","별점고래상어","O","S","전체",3,"거대",5,190,[3,6],0,7,""],[150,"오크","어류","파도이빨백상아리","O","M","전체",3,"거대",5,190,[4,7],0,7,""],[151,"오크","어류","남빛망치귀상어","O","M","전체",2,"대형",4,76,[0,1,2,3,4],0,6,""],[152,"오크","어류","물톱주둥이상어","R","B","안개",5,"대형",3,300,[8],0,5,""],[153,"오크","어류","초승꼬리환도상어","C","M","노을",4,"대형",3,375,[2,4,6,7],1,6,""],[154,"오크","어류","물방울전기가오리","R","B","전체",3,"대형",2,50,[3,6],0,3,"CO"],[155,"오크","어류","서리가시복","R","S","전체",2,"중형",1,20,[0,1,2,3,4],0,2,""],[156,"오크","어류","남빛상자고기","C","M","전체",1,"중형",2,25,[0,1,2,3,4,5,6,7,8],0,2,"O"],[157,"오크","어류","물창학공치","R","S","전체",2,"중형",1,20,[3,4,5,6],0,2,""],[158,"오크","어류","물날개성대","C","B","전체",2,"중형",2,50,[0,1,2,3,4],0,4,"O"],[159,"오크","어류","방울혹도치","R","M","안개",3,"중형",1,50,[4,7],0,3,""],[160,"오크","어류","푸른리본곰치","C","B","전체",3,"대형",3,125,[3,6],0,5,""],[161,"오크","갑각·껍질","파도주걱게","C","S","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,2,"O"],[162,"오크","갑각·껍질","해면이불게","C","B","전체",2,"소형",2,50,[2,3,4,5],0,4,"O"],[163,"오크","갑각·껍질","서리벙어리참게","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"CO"],[164,"오크","갑각·껍질","물안경달랑게","C","S","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,3,"O"],[165,"오크","갑각·껍질","넓적부채매미새우","C","B","전체",3,"소형",2,125,[4,7],0,5,"O"],[166,"오크","갑각·껍질","물대포권총새우","C","M","전체",2,"소형",2,50,[4,5,6,7],0,4,""],[167,"오크","갑각·껍질","남빛꼬부리옆새우","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"CO"],[168,"오크","갑각·껍질","서리꽃거북손","R","S","안개",2,"대형",2,20,[5,6,7,8],0,2,"C"],[169,"오크","갑각·껍질","물결방앵무조개","O","M","전체",1,"소형",3,38,[0,1,2,3,4,5,6,7,8],0,1,""],[170,"오크","갑각·껍질","달배집낙지","O","S","달빛",2,"소형",3,76,[2,3,4,5],0,6,""],[171,"오크","갑각·껍질","푸른막대맛조개","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"C"],[172,"오크","갑각·껍질","긴목왕우럭조개","C","B","전체",3,"소형",2,125,[5,8],0,5,""],[173,"오크","갑각·껍질","서리삿갓조개","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"C"],[174,"오크","갑각·껍질","물소용돌이고둥","R","M","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,""],[175,"오크","갑각·껍질","산호뿔소라","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[176,"오크","갑각·껍질","남빛갑옷군부","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,""],[177,"오크","비어류","밤바다범고래","O","S","달빛",4,"거대",5,570,[2,4,6,7],1,4,""],[178,"오크","비어류","네모머리향유고래","O","B","전체",4,"거대",5,855,[2,4,6,7],1,4,""],[179,"오크","비어류","파도날개혹등고래","O","S","전체",2,"거대",5,76,[4,5,6,7],0,2,""],[180,"오크","비어류","초승턱북극고래","O","S","안개",2,"거대",5,76,[5,6,7,8],0,2,""],[181,"오크","비어류","긴팔대왕오징어","O","B","전체",3,"거대",5,285,[5,8],0,3,""],[182,"오크","비어류","밤망토흡혈오징어","O","B","달빛",1,"대형",4,57,[0,1,2,3,4,5,6,7,8],0,4,""],[183,"오크","비어류","방울귀오징어","C","M","전체",1,"대형",3,25,[0,1,2,3,4,5,6,7,8],0,1,"O"],[184,"오크","비어류","비단망토문어","C","M","달빛",5,"대형",4,750,[8],0,7,""],[185,"오크","비어류","물줄기등장수거북","O","M","전체",2,"거대",5,76,[1,2,7,8],0,6,""],[186,"오크","비어류","파도날개펭귄","C","S","전체",2,"대형",3,50,[5,6,7,8],0,4,"O"],[187,"오크","비어류","물방망이비버","R","S","전체",4,"대형",2,150,[2,4,6,7],1,4,""],[188,"오크","비어류","둥실배해달","R","S","전체",3,"대형",2,50,[5,8],0,3,"C"],[189,"오크","비어류","서리날개바다천사","C","M","안개",2,"소형",2,50,[1,2,7,8],0,4,""],[190,"오크","비어류","푸른용갯민숭이","O","S","전체",1,"소형",3,38,[0,1,2,3,4,5,6,7,8],0,2,""],[191,"오크","비어류","물줄무늬빗해파리","R","M","달빛",2,"소형",1,20,[1,2,7,8],0,2,"CO"],[192,"오크","비어류","물방울말미잘","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,""],[193,"인간","어류","부싯돌이빨쥐치","O","S","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,4,""],[194,"인간","어류","숯가마비늘피라루쿠","R","M","전체",3,"대형",2,50,[3,6],0,3,""],[195,"인간","어류","홍옥혹금붕어","R","S","전체",2,"중형",1,20,[2,3,4,5],0,2,""],[196,"인간","어류","노을치마넙치","O","S","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,5,""],[197,"인간","어류","용광로입칠성장어","R","B","노을",2,"대형",2,20,[5,6,7,8],0,2,"CO"],[198,"인간","어류","불씨망토비파고기","R","B","전체",1,"중형",1,10,[0,1,2,3,4,5,6,7,8],0,1,""],[199,"인간","갑각·껍질","불꽃수염바닷가재","O","M","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,5,""],[200,"인간","갑각·껍질","잿빛별거미게","O","B","전체",4,"소형",3,855,[2,4,6,7],1,7,""],[201,"인간","갑각·껍질","홍옥부채홍합","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[202,"인간","갑각·껍질","벽돌등군부","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[203,"인간","어류","분홍돛해룡","O","M","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,5,""],[205,"인간","비어류","숯가마배듀공","C","S","전체",4,"거대",4,375,[2,4,6,7],1,6,""],[206,"인간","비어류","화염꼬리바다뱀","O","S","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,5,""],[209,"엘프","어류","수련볼망둥어","R","S","전체",1,"중형",1,10,[0,1,2,3,4,5,6,7,8],0,1,"C"],[210,"엘프","어류","버들깃리프피시","R","M","전체",2,"중형",1,20,[2,3,4,5],0,2,""],[211,"엘프","어류","대나무부리나비고기","O","S","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,4,""],[212,"엘프","어류","도토리턱쥐노래미","C","M","전체",1,"중형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[213,"엘프","어류","이슬관투명머리고기","O","M","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,5,""],[214,"엘프","어류","이끼잠옷가자미","O","M","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,5,""],[215,"엘프","어류","수초부채톱가오리","O","B","전체",4,"대형",4,855,[2,4,6,7],1,7,""],[216,"엘프","어류","꽃술수염수염상어","C","B","전체",3,"대형",3,125,[3,6],0,5,"O"],[218,"엘프","갑각·껍질","연밥등콩게","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,""],[219,"엘프","갑각·껍질","클로버입대합","C","B","전체",1,"중형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[220,"엘프","갑각·껍질","새싹지붕굴","C","B","전체",2,"소형",2,50,[2,3,4,5],0,4,""],[221,"엘프","비어류","연잎등오리너구리","R","S","전체",3,"중형",1,50,[3,6],0,3,""],[222,"엘프","비어류","갈대꼬리물쥐","R","S","전체",2,"중형",1,20,[5,6,7,8],0,2,""],[224,"엘프","비어류","수련날개바다나비","O","S","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,5,""],[227,"언데드","어류","묘비이마혹돔","C","M","전체",2,"대형",3,50,[2,3,4,5],0,4,""],[228,"언데드","어류","망령부채나비고기","O","S","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,5,""],[229,"언데드","어류","박쥐입씬벵이","O","M","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,5,""],[230,"언데드","어류","흑요석쐐기쥐치","O","M","전체",2,"중형",3,76,[2,3,4,5],0,6,""],[231,"언데드","어류","뼈바늘도루묵","R","M","달빛",2,"중형",1,20,[2,3,4,5],0,2,"C"],[232,"언데드","어류","장막꼬리금붕어","R","S","전체",2,"중형",1,20,[5,6,7,8],0,2,""],[233,"언데드","갑각·껍질","망령투구닭새우","C","B","전체",2,"소형",2,50,[5,6,7,8],0,4,"O"],[234,"언데드","갑각·껍질","뼈열쇠농게","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,""],[235,"언데드","갑각·껍질","유령가면새조개","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[236,"언데드","갑각·껍질","관문나선고둥","R","B","전체",1,"소형",1,10,[0,1,2,3,4,5,6,7,8],0,1,""],[237,"언데드","비어류","초승엄니바다코끼리","O","S","전체",4,"거대",5,570,[2,4,6,7],1,7,""],[238,"언데드","비어류","유령두건물개","C","S","전체",3,"대형",3,125,[3,6],0,5,""],[239,"언데드","비어류","봉합등바다뱀","O","M","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,5,""],[240,"언데드","비어류","망령방울해파리","O","S","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,3,""],[241,"오크","어류","여울창꼬치고기","O","S","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,5,""],[242,"오크","어류","얼음부리앵무고기","O","S","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,5,""],[243,"오크","어류","물방패전갱이","O","M","전체",1,"중형",3,38,[0,1,2,3,4,5,6,7,8],0,5,""],[244,"오크","어류","서리날개빙어","R","M","전체",1,"중형",1,10,[0,1,2,3,4,5,6,7,8],0,1,""],[245,"오크","어류","해류줄무늬쏠종개","O","B","전체",2,"중형",3,114,[2,3,4,5],0,6,""],[246,"오크","어류","푸른주걱패들피시","O","M","전체",2,"대형",4,76,[5,6,7,8],0,6,""],[247,"오크","어류","얼음턱늑대고기","O","B","전체",1,"중형",3,57,[0,1,2,3,4,5,6,7,8],0,5,""],[248,"오크","어류","파도깃실고기","C","M","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[249,"오크","갑각·껍질","얼음망토대게","O","B","전체",1,"소형",3,57,[0,1,2,3,4,5,6,7,8],0,3,""],[250,"오크","갑각·껍질","물방울손새우","R","B","전체",2,"소형",1,20,[2,3,4,5],0,2,"CO"],[251,"오크","갑각·껍질","서리문빗조개","C","B","전체",1,"소형",2,25,[0,1,2,3,4,5,6,7,8],0,3,""],[252,"오크","갑각·껍질","물결방패굴","C","B","전체",2,"소형",2,50,[2,3,4,5],0,4,""],[253,"오크","비어류","눈송이이마흰돌고래","O","S","전체",4,"거대",5,570,[2,4,6,7],1,8,""],[254,"오크","비어류","파도엄니물돼지","O","S","전체",4,"대형",4,570,[2,4,6,7],1,7,""],[255,"오크","비어류","빙하등바다악어","C","S","전체",4,"거대",4,375,[2,4,6,7],1,6,""],[257,"인간","어류","화산갑옷개복치","O","S","햇살",5,"대형",5,1140,[8],0,8,""],[258,"인간","어류","태양창돛새치","O","S","전체",6,"대형",5,2280,[8],0,8,""],[259,"엘프","어류","고사리날개쥐가오리","O","M","전체",6,"대형",5,2280,[8],0,8,""],[260,"엘프","어류","꽃술갈기다랑어","O","S","햇살",5,"대형",5,1140,[8],0,8,""],[261,"언데드","어류","망령은상어","O","M","전체",6,"대형",5,2280,[8],0,8,""],[262,"언데드","어류","그림자망토쥐가오리","O","S","전체",4,"대형",4,570,[2,4,6,7],1,7,""],[263,"오크","어류","빙산등큰넙치","O","S","전체",6,"대형",5,2280,[8],0,8,""]].map(t=>{
- id:t[0],race:t[1],kind:t[2],name:t[3],zone:t[4],depth:t[5],tide:t[6],star:t[7],wclass:t[8],power:t[9],price:t[10],pts:OSi(t[0],t[1],t[4],t[7],t[11]),roam:1===t[12],cm:[i.cm*e,i.cm*e*Math.cbrt(10)],kg:[i.kg*s,i.kg*s*10]} + id:t[0],race:t[1],kind:t[2],name:t[3],zone:t[4],depth:t[5],tide:t[6],star:t[7],tier:t[13]??t[7],also:(t[14]??"").split(""),wclass:t[8],power:t[9],price:t[10],pts:nTi(t[0],t[1],t[4],t[7],t[11]),roam:1===t[12],cm:[i.cm*e,i.cm*e*Math.cbrt(10)],kg:[i.kg*s,i.kg*s*10]}
- ),kSi=new Map(ISi.map(t=>[t.id,t])); + ),oTi=rTi.filter(t=>!hTi.has(t.id)),aTi=new Map(rTi.map(t=>[t.id,t])),cTi=Qt(t=>{ + var i; + return(null==(i=aTi.get(t))?void 0:i.tier)??1} + ,"tierOf"),lTi=Qt((t,i)=>t.zone===i||t.also.includes(i),"livesInZone");
+ const i=t.also.length?` · ${ + t.also.map(t=>jSi[t]).join("·")} + 에서도`:""; + return ATi(t)+i} + function ATi(t){
- Qt(USi,"livesAt"),Qt(FSi,"homeSpot"),Qt($Si,"anglersAt"),Qt(HSi,"tagText"),Qt(WSi,"whereText"); + Qt(_Ti,"livesAt"),Qt(MTi,"homeSpot"),Qt(bTi,"anglersAt"),Qt(yTi,"tagText"),Qt(ETi,"whereText"),Qt(ATi,"whereHome");
- key:"bobber",title:"찌",names:["깃털 찌","코르크 찌","반딧불 찌","황금 찌"],effects:["★3 이상 ×1","×1.3","×1.6","×2"],prices:[0,2e3,15e3,9e4]} + key:"bobber",title:"찌",names:["깃털 찌","코르크 찌","반딧불 찌","황금 찌"],effects:["드문 물고기 ×1","×1.3","×1.6","×2"],prices:[0,2e3,15e3,9e4]}
- ],jSi=[1,1.15,1.3,1.4,1.5],KSi=[0,.05,.12,.2,.3],zSi=[1,1.3,1.6,2],YSi=[40,60,90,120],qSi=Qt(t=>jSi[t.reel],"reelSpeed"),XSi=Qt((t,i=0)=>YSi[t.icebox]+Math.max(0,Math.round(i)),"iceboxCap"),JSi=Qt(t=>t.line+1,"lineLimit"),QSi={ + ],TTi=[0,.05,.12,.2,.3],CTi=[1,1.3,1.6,2],OTi=[40,60,90,120],ITi=Qt((t,i=0)=>OTi[t.icebox]+Math.max(0,Math.round(i)),"iceboxCap"),kTi=Qt(t=>t.line+1,"lineLimit"),xTi={
- 1:100,2:40,3:12,4:6,5:2.5} + R:{ + 1:100,2:40,3:12,4:6,5:.25} + ,C:{ + 1:100,2:60,3:35,4:20,5:10,6:4,7:1,8:.2} + ,O:{ + 1:100,2:60,3:35,4:20,5:10,6:4,7:1,8:.2} + }
- if(t.zone===i.zone)n=1; + if(lTi(t,i.zone))n=1;
- return ISi.filter(n=>n.race===t&&(n.zone===i?USi(n,s,e):1===n.star&&eTi[n.zone].includes(i)&&ZSi({ + return oTi.filter(n=>n.race===t&&(lTi(n,i)?_Ti(n,s,e):1===n.star&&DTi[n.zone].includes(i)&&RTi({
- function aTi(t,i,s,e,n=0){ + function $Ti(t,i,s,e,n=0,h=!1){
- if(i<=0)continue; - let e=sTi[c.star]*i; - c.star>=3&&(e*=zSi[s.bobber]*(1+Math.max(0,n)/100)),o&&o===c.kind&&(e*=2),a.push({ + if(i<=0||h&&l.star>=5)continue; + let e=(LTi[t.zone][l.tier]??0)*(l.zone!==t.zone&&l.also.includes(t.zone)?.5:1)*i; + l.star>=3&&(e*=CTi[s.bobber]*(l.star<=4?1+Math.max(0,n)/100:1)),a&&a===l.kind&&(e*=2),c.push({
- R:10,C:35,O:150} + R:10,C:25,O:38}
- 1:1,2:2,3:5,4:15,5:60} + 1:1,2:2,3:5,4:15,5:30,6:60}
- g`,"formatKg"),bTi=Qt(t=>"★".repeat(Math.max(0,t)),"starText"),yTi=[{ + g`,"formatKg"),tCi=Qt(t=>"★".repeat(Math.max(0,t)),"starText"),iCi=["","물고기","흔하지 않은 물고기","드문 물고기","아주 드문 물고기","가장 드문 물고기"],sCi=[{
- ],ETi=Qt(t=>yTi[(Math.max(1,Math.floor(t))-1)%10],"contestFor"),ATi=Qt(t=>"big"===t.kind||"star"===t.kind||"tidePct"===t.kind||"pct"===t.kind,"contestIsMax"); + ],eCi=Qt(t=>sCi[(Math.max(1,Math.floor(t))-1)%10],"contestFor"),nCi=[{ + id:"weight",day:1,title:"최대 무게",kind:"big",desc:"가장 무거운 한 마리!"} + ,{ + id:"rarity",day:1,title:"최고 희귀도",kind:"star",desc:"가장 높은 별 한 마리!"} + ,{ + id:"giant",day:1,title:"대어 사냥",kind:"pct",desc:"같은 종에서 가장 큰 한 마리!"} + ,{ + id:"count",day:1,title:"다어",kind:"count",desc:"많이 잡을수록 높은 순위!"} + ],hCi=Qt((t,i)=>nCi.find(t=>t.id===i)??eCi(t),"contestDef"),rCi=Qt(t=>"big"===t.kind||"star"===t.kind||"tidePct"===t.kind||"pct"===t.kind,"contestIsMax");
- (100*i).toFixed(1)} + (100*i).toFixed(2)}
- function TTi(t,i=30){ - return 1===t?5:2===t?3.5:3===t?2.5:2-1.5*(t-4)/Math.max(1,i-4)} - Qt(STi,"formatContestScore"),Qt(TTi,"rankMult"); - const CTi=Qt(t=>t<=1?700:t<=4?2e3:t<=7?1e4:4e4,"contestBaseGold"),OTi=Qt(t=>1===t?1200:2===t?720:3===t?480:t<=10?240:80,"pearlByRank"); + Qt(oCi,"formatContestScore"); + const aCi=Qt(t=>1===t?1200:2===t?720:3===t?480:t<=10?240:80,"pearlByRank");
- need:1e4,pearl:250} + need:2e3,pearl:250}
- need:5e4,pearl:500} + need:1e4,pearl:500}
- need:2e5,pearl:750} + need:4e4,pearl:750}
- need:5e5,pearl:1e3} + need:1e5,pearl:1e3}
- need:1e6,pearl:1500} + need:2e5,pearl:1500}
- need:2e6,pearl:2500} + need:4e5,pearl:2500}
- ],UTi=[],FTi=Qt(t=>Math.floor(t/864e5),"utcDay"),$Ti=Qt(t=>Number.isInteger(t)&&t>=1&&t<=30?31-t:0,"rankPearl"),HTi=Qt(t=>-Math.cos(t/1e3*3.4+.6*Math.sin(t/1700)),"socialGaugeValue"),WTi=class{ + ],_Ci=[],MCi=Qt(t=>Math.floor(t/864e5),"utcDay"),bCi=Qt(t=>new Date(t).toISOString().slice(0,10),"utcDate"),yCi=Qt(t=>Number.isInteger(t)&&t>=1&&t<=30?31-t:0,"rankPearl"),ECi=Qt((t,i={ + } + )=>-Math.cos(t/1e3*3.4*(i.speed??1)+.6*Math.sin(t/1700+(i.wob??0))),"socialGaugeValue"),ACi=[.85,1.2]; + function SCi(t){ + return{ + center:Math.round(.35*(2*t()-1)*1e3)/1e3,speed:Math.round(1e3*(ACi[0]+t()*(ACi[1]-ACi[0])))/1e3,wob:Math.round(t()*Math.PI*2*1e3)/1e3} + } + Qt(SCi,"randomAim"); + const TCi=class{
FishingTurtleRig 1 hunks, 84 statements
+ const BGi={ + DUR:3.4,STOP:.25,THRASH_END:1.1,FLIP_END:1.5,CARD_AT:1.8,RINGS:[{ + at:.3,life:.7,r0:14,r1:80,alpha:.6} + ,{ + at:.6,life:.7,r0:14,r1:80,alpha:.5} + ,{ + at:.9,life:.7,r0:14,r1:80,alpha:.45} + ,{ + at:1.5,life:1.2,r0:30,r1:110,alpha:.35} + ],SPLASH:[.3,.6,.9],BUBBLE_FROM:1.5,BUBBLE_EVERY:.11,BUBBLES:12,SHAKE_PX:7,SHAKE_MS:400,BELLY:14085359} + ,UGi=Qt(t=>Math.max(0,Math.min(1,t)),"clamp01$2"),FGi=Qt((t,i,s)=>{ + const e=UGi((s-t)/(i-t)); + return e*e*(3-2*e)} + ,"smooth$2"),$Gi=Qt(t=>1-Math.pow(1-UGi(t),3),"easeOut"); + function HGi(t){ + if(t<0)return{ + rate:1,drift:0,rot:0,squash:1,belly:0,flash:0,scale:1,alpha:1,blur:0,done:!1} + ; + const i=UGi((t-BGi.FLIP_END)/(BGi.DUR-BGi.FLIP_END)),s=UGi((t-BGi.THRASH_END)/(BGi.FLIP_END-BGi.THRASH_END)),e=t<.12?1-t/.12:t>=.13&&t<BGi.STOP?1-(t-.13)/.12:0,n=.2*Math.sin(2*Math.PI*4.5*(t-BGi.STOP))*FGi(BGi.STOP,.35,t)*(1-FGi(.9,BGi.THRASH_END,t)); + return{ + rate:t<BGi.STOP?.3:t<BGi.THRASH_END?3:.25,drift:t>BGi.FLIP_END?18*$Gi(i):0,rot:n+.35*FGi(BGi.FLIP_END,BGi.DUR,t),squash:t<BGi.THRASH_END?1:.12+.88*Math.abs(Math.cos(Math.PI*s)),belly:FGi(1.24,1.32,t),flash:Math.max(0,e),scale:1-.28*i*i,alpha:t<BGi.FLIP_END?1:1-Math.pow(i,1.6),blur:6*i,done:t>=BGi.DUR} + } + function WGi(t,i){ + const s=Qt(s=>s>t&&s<=i,"hit"),e=[]; + for(let n=0; + n<BGi.BUBBLES; + n++)s(BGi.BUBBLE_FROM+n*BGi.BUBBLE_EVERY)&&e.push(n); + return{ + rings:BGi.RINGS.filter(t=>s(t.at)),splashes:BGi.SPLASH.filter(s).length,bubbles:e,shake:t<0&&i>=0,card:s(BGi.CARD_AT)} + } + function VGi(t,i,s){ + const e=UGi(s),n=Qt(s=>Math.round((t>>s&255)*(1-e)+(i>>s&255)*e),"c"); + return n(16)<<16|n(8)<<8|n(0)} + Qt(HGi,"defeatPose"),Qt(WGi,"defeatEvents"),Qt(VGi,"mixColor"); + const jGi=.85,KGi=.18; + function zGi(t){ + return t<20?{ + w0:15,w1:25,travel:.5,tilt:.035,push:3,shake:0,burst:8,crown:16} + :t<60?{ + w0:20,w1:40,travel:.45,tilt:.07,push:5,shake:1,burst:12,crown:22} + :{ + w0:28,w1:60,travel:.42,tilt:.105,push:7,shake:2,burst:16,crown:30} + } + Qt(zGi,"waveSize"); + const YGi=Qt(t=>Math.max(0,Math.min(1,t)),"clamp01$1"),qGi=Qt(t=>t*t,"easeIn"); + function XGi(t,i=!1){ + return.3+t.travel*(i?Math.sqrt(jGi):1)} + function JGi(t,i=!1){ + return i?XGi(t,!0)+.2:.3+t.travel+.38} + function QGi(t,i,s=!1){ + const e=t-.3,n=i.travel; + if(e<0)return null; + const h=Qt(t=>i.w0+(i.w1-i.w0)*Math.min(1.3,t),"width"); + if(s){ + const t=n*Math.sqrt(jGi); + if(e<=t){ + const t=qGi(e/n); + return{ + p:t,half:h(t),alpha:1} + } + const i=(e-t)/.2; + return i>=1?null:{ + p:jGi,half:h(jGi)*(1+.3*i),alpha:1-i} + } + if(e>n+.38)return null; + const r=e<=n?qGi(e/n):1+(e-n)/n*.9; + return{ + p:r,half:h(r),alpha:r>1?YGi(1-(r-1)/.9):1} + } + function ZGi(t,i,s=!1){ + const e=t-XGi(i,s); + if(e<=0)return{ + push:0,rot:0,shake:0} + ; + const n=Math.exp(3*-e),h=s?.25:1; + return{ + push:i.push*n*h,rot:-Math.sin(8.5*e)*i.tilt*n*h,shake:!s&&e<KGi?i.shake*(1-e/KGi):0} + } + function tBi(t,i,s,e=!1){ + const n=Qt(s=>t<s&&s<=i,"at"); + return{ + crown:n(.16),hit:n(XGi(s,e)),done:n(JGi(s,e))} + } + Qt(XGi,"waveHitAt"),Qt(JGi,"waveEndAt"),Qt(QGi,"crestPose"),Qt(ZGi,"boatKick"),Qt(tBi,"waveEvents");
FishingShell 23 hunks, 82 statements
- id:"fish",text:"낚시",icon:"hook"} + id:"fish",text:"낚시",icon:"hook",art:"fish"}
- id:"gear",text:"장비",icon:"toolbox"} + id:"gear",text:"장비",icon:"toolbox",art:"gear"}
- id:"tank",text:"어망",icon:"keepnet"} + id:"tank",text:"어망",icon:"keepnet",art:"net"}
- id:"quest",text:"퀘스트",icon:"trophy"} + id:"quest",text:"퀘스트",icon:"trophy",art:"quest"}
- id:"shop",text:"상점",icon:"stall"} + id:"shop",text:"상점",icon:"stall",art:"shop"}
- super(),Zt(this,"paper",new ip),Zt(this,"pageBg",new ip),Zt(this,"chrome",new ip),Zt(this,"pages",new Ve),Zt(this,"pageMask",new ip),Zt(this,"overlay",new Ve),Zt(this,"me",new Ve),Zt(this,"meBg",new ip),Zt(this,"meFace",new Ye),Zt(this,"meLookRaw"),Zt(this,"dayBg",new ip),Zt(this,"dayText",oki("",YIi,12)),Zt(this,"walletBg",new ip),Zt(this,"goldIcon",Mki("gold",18)),Zt(this,"goldText",oki("",zIi,13)),Zt(this,"pearlIcon",Mki("pearl",18)),Zt(this,"pearlText",oki("",QIi,13)),Zt(this,"walletSig",""),Zt(this,"battleBg",new ip),Zt(this,"battleIcon",new ip),Zt(this,"battleText",oki("",zIi,13)),Zt(this,"battleSig",""),Zt(this,"castleDown",Qt(()=>!1,"castleDown")),Zt(this,"close",new Ve),Zt(this,"maximize",new Ve),Zt(this,"maximizeIcon",new ip),Zt(this,"navigation",new Ve),Zt(this,"subBar",new Ve),Zt(this,"subSig",""),Zt(this,"tabButtons",[]),Zt(this,"fxLayer",new Ve),Zt(this,"shown",{ + super(),Zt(this,"paper",new ip),Zt(this,"pageBg",new ip),Zt(this,"chrome",new ip),Zt(this,"pages",new Ve),Zt(this,"pageMask",new ip),Zt(this,"overlay",new Ve),Zt(this,"me",new Ve),Zt(this,"meBg",new ip),Zt(this,"meFace",new Ye),Zt(this,"meLookRaw"),Zt(this,"dayBg",new ip),Zt(this,"dayText",Axi("",dxi,12)),Zt(this,"walletBg",new ip),Zt(this,"goldIcon",$xi("gold",18)),Zt(this,"goldText",Axi("",uxi,13)),Zt(this,"pearlIcon",$xi("pearl",18)),Zt(this,"pearlText",Axi("",gxi,13)),Zt(this,"walletSig",""),Zt(this,"battleBg",new ip),Zt(this,"battleIcon",new ip),Zt(this,"battleText",Axi("",uxi,13)),Zt(this,"battleSig",""),Zt(this,"castleDown",Qt(()=>!1,"castleDown")),Zt(this,"close",new Ve),Zt(this,"minimizeBtn",new Ve),Zt(this,"minimizing",!1),Zt(this,"navigation",new Ve),Zt(this,"subBar",new Ve),Zt(this,"subSig",""),Zt(this,"tabButtons",[]),Zt(this,"tabDrawn",null),Zt(this,"fxLayer",new Ve),Zt(this,"shown",{
- ),this.maximizeIcon.eventMode="none",this.maximize.addChild(this.maximizeIcon),this.drawMaximizeIcon(),this.maximize.eventMode="static",this.maximize.cursor="pointer",this.maximize.hitArea=new Ui(-2,-4,50,56),this.maximize.on("pointertap",i=>{ - i.stopPropagation(),this.setFullscreen(!t.fullscreen)} + ); + const s=(new ip).moveTo(13,31).lineTo(35,31).stroke({ + color:dxi,width:3.5,cap:"round"} + ); + s.eventMode="none",this.minimizeBtn.addChild(s),this.minimizeBtn.eventMode="static",this.minimizeBtn.cursor="pointer",this.minimizeBtn.hitArea=new Ui(-2,-4,48,56),this.minimizeBtn.on("pointertap",t=>{ + t.stopPropagation(),queueMicrotask(()=>{ + this.minimize()} + )}
- id:t,text:n,icon:h} + id:t,text:h,icon:r,art:o}
- const i=new Ve,s=new ip,e=oki(n,YIi,14),r=(new ip).circle(0,0,6).fill(14698538),o=Eki(h,26,16777215); - s.eventMode="none",r.eventMode="none",r.visible=!1,i.addChild(s,o,e,r),i.eventMode="static",i.cursor="pointer",i.on("pointertap",i=>{ + const i=new Ve,s=new ip,e=(new ip).circle(0,0,6).fill(14698538),n=new Kxi(o,r,64,16777215,30),a=Axi(h,cxi,15); + n.pivot.set(32,32),s.eventMode="none",e.eventMode="none",e.visible=!1,i.addChild(s,n,a,e),i.eventMode="static",i.cursor="pointer",i.on("pointertap",i=>{
- id:t,root:i,bg:s,icon:o,text:e,dot:r} + id:t,root:i,bg:s,icon:n,name:a,dot:e}
- ),this.addChild(this.paper,this.pageBg,this.pages,this.pageMask,this.overlay,this.chrome,this.subBar,this.backBtn,this.me,this.dayBg,this.dayText,this.walletBg,this.battleBg,this.battleIcon,this.battleText,this.goldIcon,this.goldText,this.pearlIcon,this.pearlText,this.devRow,this.devToggle,this.navigation,this.maximize,this.close,this.scrollTrack,this.fxLayer,this.wake),this.timer.addEventListener("timer",()=>this.onTimer())} + ),this.addChild(this.paper,this.pageBg,this.pages,this.pageMask,this.overlay,this.chrome,this.subBar,this.backBtn,this.me,this.dayBg,this.dayText,this.walletBg,this.battleBg,this.battleIcon,this.battleText,this.goldIcon,this.goldText,this.pearlIcon,this.pearlText,this.devRow,this.devToggle,this.navigation,this.minimizeBtn,this.close,this.scrollTrack,this.fxLayer,this.wake),this.timer.addEventListener("timer",()=>this.onTimer())}
- t.open=!0,this.unsubscribe.push(t.onChange(()=>this.updateHeader()),t.onNotice(t=>vH.getInstance().showMessage(t)))} + i.open=!0,this.unsubscribe.push(i.onChange(()=>this.updateHeader()),i.onNotice(t=>_H.getInstance().showMessage(t)),i.onCatch(i=>{ + Ski(i)>0&&this.flyCurrency("gold",this.toGlobal({ + x:t.WIDTH/2,y:.5*t.layoutHeight} + ),3)} + ))}
- this.exchangeOnly=t; + this.exchangeOnly=t,this.minimizeBtn.visible=!t,this.battleSig="";
- for(const i of[this.navigation,this.subBar,this.close,this.maximize,this.me,this.backBtn,this.devToggle,this.devRow])t?(this.tutorialEvents.set(i,i.eventMode??"passive"),i.eventMode="none"):i.eventMode=this.tutorialEvents.get(i)??i.eventMode; + for(const i of[this.navigation,this.subBar,this.close,this.minimizeBtn,this.me,this.backBtn,this.devToggle,this.devRow])t?(this.tutorialEvents.set(i,i.eventMode??"passive"),i.eventMode="none"):i.eventMode=this.tutorialEvents.get(i)??i.eventMode;
- for(const t of[this.chrome,this.me,this.backBtn,this.dayBg,this.dayText,this.walletBg,this.battleBg,this.battleIcon,this.battleText,this.goldIcon,this.goldText,this.pearlIcon,this.pearlText,this.devRow,this.devToggle,this.navigation,this.subBar,this.maximize,this.close,this.scrollTrack])t.alpha=1-i; + for(const t of[this.chrome,this.me,this.backBtn,this.dayBg,this.dayText,this.walletBg,this.battleBg,this.battleIcon,this.battleText,this.goldIcon,this.goldText,this.pearlIcon,this.pearlText,this.devRow,this.devToggle,this.navigation,this.subBar,this.minimizeBtn,this.close,this.scrollTrack])t.alpha=1-i;
+ |${ + this.minimizeBtn.visible}
- const r=t.HEADER/2,o=s?5906207:BIi,a=this.devToggle.visible?this.devToggle.x-8:this.maximize.x+4,c=32+this.battleText.width+10,l=a-c; + const r=t.HEADER/2,o=s?5906207:sxi,a=this.devToggle.visible?this.devToggle.x-8:(this.minimizeBtn.visible?this.minimizeBtn.x:this.close.x)+4,c=32+this.battleText.width+10,l=a-c;
- this.setImmersed(!1,!0),t.fullscreen=i,EF.getInstance().visible=!i,this.width=t.WIDTH,this.drawMaximizeIcon(),this.onResize(); + this.setImmersed(!1,!0),t.fullscreen=i,AF.getInstance().visible=!i,this.width=t.WIDTH,this.onResize();
- drawMaximizeIcon(){ - const i=this.maximizeIcon.clear(),s={ - color:YIi,width:3.5,join:"round",cap:"round"} - ; - t.fullscreen?i.moveTo(19,16).lineTo(19,12).lineTo(36,12).lineTo(36,29).lineTo(32,29).stroke(s).roundRect(12,19,17,17,2.5).stroke(s):i.roundRect(13,13,22,22,3).stroke(s)}
+ var i;
- this.walletSig="",this.battleSig="",this.close.position.set(i-56,h-24),this.maximize.position.set(i-56-44,h-24),this.devToggle.position.set(i-56-44-8-56,h-13),[this.speedChip,this.dayChip,this.tideChip,this.boatChip,this.goldChip,this.botsChip,this.journeyChip,this.giantChip,this.badgeChip,this.raidChip,this.robbedChip,this.cutChip,this.breakChip,this.hazardChip,this.fixChip,this.brokenDummyChip,this.huntChip,this.huntCrowdChip,this.gearChip,this.netChip,this.resetChip].forEach((t,i)=>t.position.set(i%4*68,30*Math.floor(i/4))),this.devRow.position.set(i-16-266,t.CONTENT_Y+54); - const r=(i-28-5*(TRi.length-1))/TRi.length; - this.tabButtons.forEach(({ - id:t,root:i,bg:s,icon:e,text:h,dot:o} + this.walletSig="",this.battleSig="",this.close.position.set(s-56,r-24),this.minimizeBtn.position.set(s-56-44,r-24); + const o=this.minimizeBtn.visible?this.minimizeBtn.x:this.close.x; + this.devToggle.position.set(o-8-56,r-13),[this.speedChip,this.dayChip,this.tideChip,this.boatChip,this.goldChip,this.botsChip,this.journeyChip,this.giantChip,this.badgeChip,this.raidChip,this.robbedChip,this.cutChip,this.breakChip,this.hazardChip,this.fixChip,this.brokenDummyChip,this.huntChip,this.huntCrowdChip,this.gearChip,this.netChip,this.resetChip].forEach((t,i)=>t.position.set(i%4*68,30*Math.floor(i/4))),this.devRow.position.set(s-16-266,t.CONTENT_Y+54); + const a=(s-28-5*(qRi.length-1))/qRi.length,c=(null==(i=this.activePage)?void 0:i.tabId)??null,l=c!==this.tabDrawn; + this.tabDrawn=c,this.tabButtons.forEach(({ + id:t,root:i,bg:s,icon:e,name:n,dot:r}
- var c; - i.position.set(14+a*(r+5),n+8),i.hitArea=new Ui(0,0,r,62); - const l=(null==(c=this.activePage)?void 0:c.tabId)===t; - s.clear(),l&&s.roundRect((r-52)/2,60,52,3,1.5).fill(jIi),e.tint=l?jIi:YIi,e.position.set((r-26)/2,4),h.textColor=l?jIi:YIi,h.position.set((r-h.width)/2,34),o.position.set(r/2+20,8)} + i.position.set(14+o*(a+5),h+8),i.hitArea=new Ui(0,-10,a,82); + const u=c===t; + s.clear(),u&&s.roundRect((a-88)/2,2,88,72,16).fill(sxi),e.refresh(),e.setTone(u?cxi:dxi,u?16777215:12369084),n.visible=u,n.position.set((a-n.width)/2,52); + const d=u?18:30,f=u?1:.875; + e.x=a/2,Mx.killTweensOf(e),Mx.killTweensOf(e.scale),Mx.killTweensOf(n),l&&u?(Mx.fromTo(e,{ + y:30} + ,{ + y:d,duration:.2,ease:"back.out(2.4)"} + ),Mx.fromTo(e.scale,{ + x:.875,y:.875} + ,{ + x:f,y:f,duration:.2,ease:"back.out(2.4)"} + ),Mx.fromTo(n,{ + alpha:0} + ,{ + alpha:1,duration:.15,delay:.05} + )):(e.y=d,e.scale.set(f),n.alpha=1),r.position.set(a/2+26,(u?18:30)-26)}
- (null==(i=null==h?void 0:h.closeOne)?void 0:i.call(h))||(null==(e=null==(s=this.activePage)?void 0:s.closeOne)?void 0:e.call(s))?this.drawBack():this.backStack.length?this.goBack():!this.activePage||"fish"===this.activePage.tabId||this.exchangeOnly?t.fullscreen?this.setFullscreen(!1):(this.hideImmediately(),null==(n=this.onExit)||n.call(this)):this.selectTab("fish","user")} + (null==(t=null==n?void 0:n.closeOne)?void 0:t.call(n))||(null==(s=null==(i=this.activePage)?void 0:i.closeOne)?void 0:s.call(i))?this.drawBack():this.backStack.length?this.goBack():!this.activePage||"fish"===this.activePage.tabId||this.exchangeOnly?(this.hideImmediately(),null==(e=this.onExit)||e.call(this)):this.selectTab("fish","user")} + async minimize(){ + if(this.parent&&!this.minimizing&&!this.exchangeOnly&&!this.tutorialMode){ + this.minimizing=!0; + try{ + const{ + FishingMiniWindow:t} + =await ei(async()=>{ + const{ + FishingMiniWindow:t} + =await Promise.resolve().then(()=>zWi); + return{ + FishingMiniWindow:t} + } + ,void 0); + if(!this.parent)return; + const i=t.capture(); + this.hideImmediately(),Oki.getInstance().open=!0,t.getInstance().show(i)} + finally{ + this.minimizing=!1} + } + }
FishingGearPage 21 hunks, 79 statements
- const tUi=ORi.CONTENT_W,iUi=(tUi-12)/2,sUi={ + const CHi=(JRi.CONTENT_W-12)/2,OHi={
- ,eUi=["×1","×1.3","×1.6","×2"],nUi=VSi.filter(t=>"boat"!==t.key),hUi=["boat","bag","chest","tools"],rUi=["내 배","장비 가방","장비 상자","낚시 도구"]; + ,IHi=STi.filter(t=>"boat"!==t.key),kHi=["boat","bag","chest","tools"],xHi=["내 배","가방","상자","도구"];
- const t=iUi-24,i=new gki("",t,48),s=oki("올리기",KIi,18),e=Mki("gold",18),n=oki("",KIi,18); - return s.position.set(16,12),e.y=15,n.y=12,i.addChild(s,e,n),{ + const t=CHi-24,i=new Dxi("",t,46),s=Axi("올리기",lxi,16),e=$xi("gold",18),n=Axi("",lxi,16); + return i.addChild(s,e,n),{
- i.enabled=!a&&!o,s.textColor=i.enabled?KIi:ski,n.text=h.toLocaleString(),n.textColor=a?JIi:s.textColor,n.x=t-16-n.width,e.x=n.x-23} + i.enabled=!a&&!o; + const c=i.enabled?lxi:_xi; + s.textColor=c,n.text=h.toLocaleString(),n.textColor=a?wxi:c; + const l=s.width+10+18+5+n.width,u=(t-l)/2; + s.position.set(u,(46-s.height)/2),e.position.set(u+s.width+10,14),n.position.set(e.x+18+5,(46-n.height)/2)}
- case"line":return["버티는 물고기 힘",`${ + case"line":return["줄 힘",`${
- case"rod":return["큰 개체 다시 뽑기",h(n(e[i],/([\d.]+%)/),n(e[s],/([\d.]+%)/))]; + case"rod":return["큰 고기 다시 뽑기",h(n(e[i],/([\d.]+%)/),n(e[s],/([\d.]+%)/))];
- case"bobber":return["★3 이상 등장 확률",h(n(e[i],/(×[\d.]+)/),n(e[s],/(×[\d.]+)/))]; - case"icebox":return["담을 수 있는 물고기",`${ + case"bobber":return["★3 이상 확률",h(n(e[i],/(×[\d.]+)/),n(e[s],/(×[\d.]+)/))]; + case"icebox":return["어망",`${
- case"auto":return["꺼 둔 동안 자동 낚시",`입질 ${ + case"auto":return["꺼 둔 동안",`입질 ${
- super(),Zt(this,"tabId","gear"),Zt(this,"myBoat",new BBi),Zt(this,"bag",new $Bi),Zt(this,"chest",new WBi),Zt(this,"mergeView",new ZBi),Zt(this,"tools",new Ve),Zt(this,"stats",[]),Zt(this,"rows",[]),Zt(this,"busy",!1); - const i=this.tools,s=oki("낚시 도구",zIi,26),e=oki("다음 도구로 한 단계 더",YIi,14,!1); - s.position.set(2,0),e.position.set(tUi-e.width-2,10); - const n=cki(tUi,112,BIi,null,16); - n.y=42,i.addChild(s,e,n); - const h=(tUi-32-16)/3; - ["map","line","clock","star","moon","icebox"].forEach((t,s)=>{ - const e=16+s%3*(h+8),n=51+49*Math.floor(s/3),r=LIi(t,20,9425128); - r.position.set(e,n+12); - const o=oki("",qIi,12,!1),a=oki("",zIi,16); - o.position.set(e+30,n+1),a.position.set(e+30,n+20),i.addChild(r,o,a),this.stats.push({ - k:o,v:a} - )} - ),nUi.forEach((t,s)=>{ + super(),Zt(this,"tabId","gear"),Zt(this,"myBoat",new uHi),Zt(this,"bag",new pHi),Zt(this,"chest",new gHi),Zt(this,"mergeView",new THi),Zt(this,"tools",new Ve),Zt(this,"toolsHead",new nHi),Zt(this,"rows",[]),Zt(this,"busy",!1); + const i=this.tools; + this.toolsHead.set("낚시 도구","올리면 바로 세져요"),i.addChild(this.toolsHead),IHi.forEach((t,s)=>{
- e.position.set(s%2*(iUi+12),166+236*Math.floor(s/2)); - const n=(new ip).roundRect(0,0,iUi,224,16).fill(jIi); + e.position.set(s%2*(CHi+12),66+262*Math.floor(s/2)); + const n=(new ip).roundRect(0,0,CHi,250,16).fill(cxi);
- const h=(new ip).roundRect(12,14,92,92,18).fill(2961463); + const h=(new ip).roundRect((CHi-88)/2,14,88,88,16).fill(exi);
- r.pivot.set(23,23),r.position.set(58,60); + r.pivot.set(23,23),r.position.set(CHi/2,58);
- o.anchor.set(.5),o.position.set(58,60),o.eventMode="none"; - const a=oki(t.title,YIi,13),c=oki("",zIi,19),l=oki("",XIi,19); - a.position.set(116,17),c.position.set(116,40),l.position.set(14,140); - const u=oki("",YIi,12,!1),d=oki("",YIi,13,!1); - u.position.set(116,73),d.position.set(14,118); + o.anchor.set(.5),o.position.set(CHi/2,58),o.eventMode="none"; + const a=Axi("",uxi,18); + a.y=112;
- f.eventMode="none",f.position.set(116,97); + c.eventMode="none",c.y=142; + const l=new Ve,u=Axi("",dxi,14,!1),d=Axi("",cxi,16); + l.addChild(u,d),l.y=158;
- p.btn.position.set(12,166),p.btn.onTap=()=>{ + f.btn.position.set(12,192),f.btn.onTap=()=>{
- g.position.set((iUi-g.width)/2,178),e.addChild(cki(iUi,224,BIi,null,16),n,h,r,o,a,c,u,f,d,l,p.btn,g),i.addChild(e),this.rows.push({ - key:t.key,root:e,flash:n,icon:r,img:o,kind:a,name:c,stage:u,pips:f,effect:d,fx:l,up:p,max:g} + p.position.set((CHi-p.width)/2,215-p.height/2),e.addChild(kxi(CHi,250,sxi,null,16),n,h,r,o,a,c,l,f.btn,p),i.addChild(e),this.rows.push({ + key:t.key,root:e,flash:n,icon:r,img:o,name:a,pips:c,fxLine:l,effect:u,fx:d,up:f,max:p}
- const r=h.img.visible?h.img:h.icon,o=h.img.visible?88/Math.max(h.img.texture.width,h.img.texture.height):1; + const r=h.img.visible?h.img:h.icon,o=h.img.visible?80/Math.max(h.img.texture.width,h.img.texture.height):1;
- const s=xIi.getInstance(),e=s.state,n=e.gear,h=[["갈 수 있는 곳",n.boat>=GAi.ENTRY.O?n.reel>=4?"강·연안·대양·심해":"강·연안·대양":n.boat>=GAi.ENTRY.C?"강·연안":"강"],["줄 힘",`${ - JSi(n)} - 까지`],["입질 간격",`${ - Math.round(15e3/qSi(n)/1e3)} - ~${ - Math.round(3e4/qSi(n)/1e3)} - 초`],["★3 이상",eUi[n.bobber]],["꺼 둔 동안 입질",`${ - uAi(n.auto)} - 번에 1마리`],["어망",`${ - XSi(n,s.gearStats().icebox)} - 마리`]],r=(tUi-32-16)/3; - this.stats.forEach((t,i)=>{ - t.k.text=h[i][0],t.v.text=h[i][1],aki(t.k,r-30),aki(t.v,r-30)} - ),nUi.forEach((t,i)=>{ + const s=Oki.getInstance().state,e=s.gear; + IHi.forEach((t,i)=>{
- s.img.visible=!!c,s.icon.visible=!c,c&&s.img.texture!==c&&(s.img.texture=c,s.img.scale.set(88/Math.max(c.width,c.height))),s.name.text=t.names[a],aki(s.name,iUi-130),s.kind.text=`${ - t.title} - · ${ - o?"보유":"다음"} - `,aki(s.kind,iUi-130),s.stage.text="auto"===t.key?0===h?"아직 미보유":`보유 ${ - h} - / ${ - r} - 단계`:`보유 ${ - h+1} - / ${ - r+1} - 단계`,s.pips.clear(); - const l="auto"===t.key?1:0; + n.img.visible=!!c,n.icon.visible=!c,c&&n.img.texture!==c&&(n.img.texture=c,n.img.scale.set(80/Math.max(c.width,c.height))),n.name.text=t.names[a],Ixi(n.name,CHi-24),n.name.x=(CHi-n.name.width)/2,n.pips.clear(); + const l="auto"===t.key?1:0,u=r-l+1;
- e++)s.pips.roundRect(16*(e-l),0,12,7,3.5).fill(e<=h?jIi:FIi); + s++){ + const t=20*(s-l); + s<=h?n.pips.roundRect(t,0,16,7,3.5).fill(cxi):s===h+1?n.pips.roundRect(t+.75,.75,14.5,5.5,2.75).stroke({ + color:cxi,width:1.5} + ):n.pips.roundRect(t,0,16,7,3.5).fill(nxi)} + n.pips.x=(CHi-(16*u+4*(u-1)))/2;
- s.effect.text=u,s.fx.text=d,s.fx.textColor=o?jIi:XIi,aki(s.fx,iUi-28),s.up.btn.visible=!o,s.max.visible=o,o||s.up.set(t.prices[h+1],e.gold,this.busy)} + n.effect.text=d,n.fx.text=f,n.fxLine.scale.set(1),n.fx.position.set(n.effect.width+6,(n.effect.height-n.fx.height)/2),n.fxLine.scale.set(Math.min(1,(CHi-24)/Math.max(1,n.fxLine.width))),n.fxLine.x=(CHi-n.fxLine.width)/2,n.up.btn.visible=!o,n.max.visible=o,o||n.up.set(t.prices[h+1],s.gold,this.busy)}
FormationEditor 1 hunks, 77 statements
+ const Vdi=class t extends Ve{ + constructor(t){ + super(),Zt(this,"opt"),Zt(this,"dim",new ip),Zt(this,"rings",new ip),Zt(this,"activeRange",new Wdi),Zt(this,"entryLayer",new Ve),Zt(this,"views",[]),Zt(this,"bar",new Ve),Zt(this,"dragging",null),Zt(this,"closed",!1),this.opt=t; + const{ + centerX:i,centerY:s} + =t; + this.dim.rect(-400,-800,1440,2400).fill({ + color:0,alpha:.55} + ),this.dim.eventMode="static",this.addChild(this.dim); + const e=[...new Set(t.entries.map(t=>t.radius))].sort((t,i)=>i-t); + for(const h of e)this.rings.circle(i,s,h).fill({ + color:4886754,alpha:.06} + ),this.rings.circle(i,s,h).stroke({ + width:2,color:16777215,alpha:.28} + ); + this.rings.eventMode="none",this.addChild(this.rings),this.activeRange.x=i,this.activeRange.y=s,this.activeRange.eventMode="none",this.addChild(this.activeRange),this.addChild(this.entryLayer); + const n=[...t.entries].sort((t,i)=>t.y-i.y); + for(const h of n)this.views.push(this.createEntry(h)); + this.createBar(),this.eventMode="static",this.on("pointerup",this.onDragEnd,this),this.on("pointerupoutside",this.onDragEnd,this)} + createEntry(i){ + const s=new Ve; + s.x=i.x,s.y=i.y; + const e=new $di; + e.visible=!0,e.setValid(!0),e.scale.set(t.FLAG_SCALE),s.addChild(e); + const n=new o4; + n.mode=h4.BOOK,i.vo?n.setData(i.vo):n.setDataWithKindNum(i.kindNum); + const h=t.ICON_HEIGHT/n.height; + n.scale.set(h),n.x=-n.width/2,n.y=-n.height-.55*e.height,s.addChild(n),s.hitArea=new Ui(n.x-6,n.y-6,n.width+12,10-n.y),s.eventMode="static",s.cursor="grab"; + const r={ + key:i.key,view:s,icon:n,radius:i.radius,x:i.x,y:i.y,startX:i.x,startY:i.y} + ; + return s.on("pointerdown",t=>this.onDragStart(r,t)),this.entryLayer.addChild(s),r} + createBar(){ + const t=580,i=new lB; + this.bar.addChild(i); + const s=new dg({ + text:RB.getText("GAME_1932","병사 배치"),style:eD.DEFAULT_OUTLINE_FONT_OPTION_20} + ); + s.x=(t-s.width)/2,s.y=(53-s.height)/2,this.bar.addChild(s); + const e=new ZD(RB.getText("GAME_1931","병사를 끌어서 자리를 옮기세요"),eD.DEFAULT_COLOR,eD.DEFAULT_FONT_OPTION_17); + e.x=(t-e.width)/2,e.y=71,this.bar.addChild(e); + const n=new rB(RB.getText("GAME_527","저장")),h=new Fjt(RB.getText("COMMON_2","취소")); + n.x=(t-n.width-h.width-20)/2,h.x=n.x+n.width+20,n.y=h.y=e.y+e.height+20,this.bar.addChild(n,h),i.width=t,i.height=n.y+n.height+30,i.eventMode="static",h.onClick=()=>this.finish(),n.onClick=()=>{ + const t=j1(this.views).map(t=>({ + key:t.key,x:t.x,y:t.y} + )); + this.finish(()=>{ + t.length>0&&this.opt.onApply(t)} + )} + ,this.bar.x=30,this.bar.y=this.opt.barTop,this.opt.barHost.addChild(this.bar)} + onDragStart(i,s){ + this.closed||this.dragging||(s.stopPropagation(),this.dragging=i,i.view.scale.set(t.DRAG_SCALE),i.view.cursor="grabbing",this.entryLayer.addChild(i.view),this.activeRange.show(i.radius),ES.stage.on("globalpointermove",this.onDragMove,this))} + onDragMove(t){ + const i=this.dragging; + if(!i)return; + const s=this.toLocal(t.global),e=W1(this.opt.centerX,this.opt.centerY,s.x,s.y,i.radius); + i.x=e.x,i.y=e.y,i.view.x=e.x,i.view.y=e.y} + onDragEnd(){ + const t=this.dragging; + t&&(ES.stage.off("globalpointermove",this.onDragMove,this),this.dragging=null,t.view.scale.set(1),t.view.cursor="grab",this.activeRange.hide())} + finish(t){ + var i,s; + this.closed||(this.closed=!0,this.onDragEnd(),this.visible=!1,this.eventMode="none",this.bar.visible=!1,this.bar.eventMode="none",null==t||t(),null==(s=(i=this.opt).onClose)||s.call(i),setTimeout(()=>{ + this.bar.removeFromParent(),this.bar.destroy({ + children:!0} + ),this.removeFromParent(),this.destroy({ + children:!0} + )} + ,0))} + cancel(){ + this.finish()} + get isOpen(){ + return!this.closed} + } + ; + Qt(Vdi,"FormationEditor"),Zt(Vdi,"ICON_HEIGHT",40),Zt(Vdi,"FLAG_SCALE",.75),Zt(Vdi,"DRAG_SCALE",1.18); + let jdi=Vdi;
PVPOpponentItemRenderer 8 hunks, 73 statements
- function s0t(t){ - const i=t?t.split("|"):[],s=[]; - for(let e=0; - e<10; - e++){ - const[t,n]=(i[e]??"0-0").split("-").map(Number),h=t>0?t:0; - s.push({ - kindNum:h,trans:h>0&&n||0} - )} - return s} - function e0t(t,i,s){ - const e=1/(1+Math.pow(10,(i-t)/400)); - return Math.round(32*(s-e))} - function n0t(t,i,s){ - const e=1e3+(s||0)+1,n=Qt(s=>Math.max(e,t+e0t(t,i,s))-t,"after"); - return{ - win:n(1),lose:n(0)} - } - function h0t(t){ - let i=0,s=0; - for(const e of t)s+=e.maxHp,e.alive&&(i+=Math.max(0,Math.min(e.hp,e.maxHp))); - return s>0?i/s:0} - function r0t(t,i){ - return t>i} - Qt(s0t,"parsePvpTeam"),Qt(e0t,"eloDelta"),Qt(n0t,"pvpExpectedPoints"),Qt(h0t,"pvpTeamHpRatio"),Qt(r0t,"pvpTimeoutAllyWins");
- super(),Zt(this,"bg"),Zt(this,"lblRankTitle",new QD("",11184810,sD.DEFAULT_OUTLINE_FONT_OPTION_16)),Zt(this,"rankBadge",new i0t(58)),Zt(this,"lblNameInfo",new QD("",sD.DEFAULT_COLOR,sD.DEFAULT_OUTLINE_FONT_OPTION_17)),Zt(this,"lblDetail",new QD("",11184810,sD.DEFAULT_OUTLINE_FONT_OPTION_16)),Zt(this,"lblWin",new QD("",6742138,sD.DEFAULT_OUTLINE_FONT_OPTION_16)),Zt(this,"lblLose",new QD("",16738922,sD.DEFAULT_OUTLINE_FONT_OPTION_16)),Zt(this,"icons",[]),Zt(this,"iconVOs",[]),Zt(this,"btnFight",new iB("전투")),Zt(this,"onFight"),this.bg=new eE({ - texture:kS.getTexture("UI_Ekkorr","Popup_List_02"),leftWidth:140,topHeight:30,rightWidth:20,bottomHeight:30} - ),this.bg.width=615,this.bg.height=t.BG_H,this.bg.x=5,this.bg.eventMode="none",this.addChild(this.bg),this.lblRankTitle.x=25,this.lblRankTitle.y=10,this.addChild(this.lblRankTitle),this.rankBadge.x=36,this.rankBadge.y=34,this.addChild(this.rankBadge),this.lblNameInfo.x=140,this.lblNameInfo.y=8,this.addChild(this.lblNameInfo),this.lblDetail.x=140,this.lblDetail.y=36,this.addChild(this.lblDetail),this.lblWin.y=36,this.lblLose.y=36,this.addChild(this.lblWin,this.lblLose); - const i=t.ICON_SCALE; - for(let s=0; - s<10; - s++){ - const e=new e4; - e.setMode(i4.BOOK),e.scale.set(i),e.eventMode="none",e.x=t.ICON_X+s*(e.width+t.ICON_GAP),e.y=t.ICON_Y,this.addChild(e),this.icons.push(e),this.iconVOs.push(ix.getVO())} - this.btnFight.color=iB.RED,this.btnFight.width=120,this.btnFight.height=52,this.btnFight.x=this.bg.x+this.bg.width-this.btnFight.width-10,this.btnFight.y=8,this.btnFight.onClick=()=>{ - this.data&&this.onFight&&this.onFight(this.data)} + super(),Zt(this,"bg",new ip),Zt(this,"levelChip",(new ip).roundRect(108,21,64,26,8).fill(4930347)),Zt(this,"rankBadge",new f0t(66)),Zt(this,"lblNameInfo",r0t(20)),Zt(this,"lblLevel",r0t(16,e0t)),Zt(this,"lblPoint",r0t(21,h0t)),Zt(this,"lblPointCaption",r0t(13,n0t)),Zt(this,"lblWin",r0t(14,9754784)),Zt(this,"lblLose",r0t(14,15574163)),Zt(this,"btnFight",new sB("")),Zt(this,"onFight"),this.bg.roundRect(5,0,610,100,13).fill(s0t).roundRect(14,10,78,80,10).fill(2695449),this.bg.eventMode=this.levelChip.eventMode="none",this.rankBadge.position.set(20,17),this.lblNameInfo.x=182,this.lblPointCaption.x=109,this.lblWin.x=286,this.lblLose.x=389,this.addChild(this.bg,this.rankBadge,this.levelChip,this.lblLevel,this.lblNameInfo,this.lblPointCaption,this.lblPoint,this.lblWin,this.lblLose),this.btnFight.color=sB.RED; + const t=this.lblNameInfo.getStyle().clone(); + t.fontSize=18,this.btnFight.lbl.setStyle(t),this.btnFight.width=110,this.btnFight.height=48,this.btnFight.position.set(492,25),this.btnFight.onClick=()=>{ + var t; + this.data&&(null==(t=this.onFight)||t.call(this,this.data))}
- this.data=t,this.lblRankTitle.text=RB.getText("COMMON_373","순위"),this.lblRankTitle.x=15+.5*(100-this.lblRankTitle.width),this.rankBadge.setRank(Number(t.rank)||0); - const i=Math.floor((Number(t.maxWave)||0)/100); - this.lblNameInfo.text=`${ - t.name} - ( Lv.${ - i} - )`; - const s=Number(t.total)||0,e=Number(t.win)||0; - this.lblDetail.text=`${ - Number(t.point).toLocaleString()} - `+RB.getText("COMMON_37","점수").charAt(0)+` ( ${ - s} - -${ - e} - -${ - s-e} - )`,this.setPreview(t.preview),this.setTeam(t.team),this.btnFight.text=RB.getText("GAME_70","전투")} - setPreview(i){ - const s=t.RIGHT_X; + this.data=t,this.rankBadge.setRank(Number(t.rank)||0),this.lblLevel.text=`Lv.${ + Math.floor((Number(t.maxWave)||0)/100)} + `,o0t(this.lblLevel,56),this.lblLevel.position.set(108+(64-this.lblLevel.width)/2,34-this.lblLevel.height/2),this.lblNameInfo.text=String(t.name??"").replace(/\s*#\d+\s*$/,""); + const i=Array.from(this.lblNameInfo.text); + for(; + this.lblNameInfo.width>298&&i.length>1; + )i.pop(),this.lblNameInfo.text=`${ + i.join("")} + …`; + this.lblNameInfo.y=34-this.lblNameInfo.height/2,this.lblPointCaption.text=RB.getText("COMMON_37","점수"),o0t(this.lblPointCaption,50),this.lblPoint.text=(Number(t.point)||0).toLocaleString(),this.lblPoint.x=116+this.lblPointCaption.width,o0t(this.lblPoint,274-this.lblPoint.x),this.lblPoint.y=68-this.lblPoint.height/2; + const s=this.lblPoint.y+this.lblPoint.height; + this.lblPointCaption.y=s-this.lblPointCaption.height-2; + const e=t.preview;
+ RB.getText("COMMON_380","승리")} + ${
- `,this.lblLose.text=` / ${ + `,this.lblLose.text=`${ + RB.getText("COMMON_381","패배")} + ${
- `,this.lblLose.x=s-this.lblLose.width,this.lblWin.x=this.lblLose.x-this.lblWin.width)} - setTeam(t){ - const i=s0t(t); - for(let s=0; - s<10; - s++){ - const t=this.icons[s],e=i[s]; - if(t.visible=e.kindNum>0,!t.visible)continue; - const n=this.iconVOs[s]; - n.kindNum=e.kindNum,n.trans=e.trans,t.setData(n)} - } + `,o0t(this.lblWin,93),o0t(this.lblLose,87),this.lblWin.y=s-this.lblWin.height-2,this.lblLose.y=s-this.lblLose.height-2),this.btnFight.text=RB.getText("GAME_70","전투"),o0t(this.btnFight.lbl,88),this.btnFight.width=110,this.btnFight.height=48}
- return this.bg.height+2} + return t.HEIGHT}
- Qt(o0t,"PVPOpponentItemRenderer"),Zt(o0t,"BG_H",108),Zt(o0t,"ICON_SCALE",.34),Zt(o0t,"ICON_X",140),Zt(o0t,"ICON_Y",68),Zt(o0t,"ICON_GAP",2),Zt(o0t,"RIGHT_X",476); + Qt(p0t,"PVPOpponentItemRenderer"),Zt(p0t,"HEIGHT",100);
FishingAssets 5 hunks, 58 statements
- )),XEi=[[72,4,138],[49,4,170],[39,4,170],[35,4,168],[45,4,170],[60,4,154],[43,8,170],[54,4,170],[40,4,170],[26,5,170],[41,4,170],[35,4,170],[45,4,170],[39,5,170],[42,4,162],[43,4,170],[46,4,170],[39,4,170],[35,4,170],[50,4,170],[39,4,170],[44,4,170],[41,4,170],[44,4,170],[60,4,142],[44,4,166],[53,5,170],[43,4,170],[48,4,170],[27,4,163],[44,4,170],[51,4,170],[17,10,170],[36,5,170],[44,4,170],[50,4,170],[38,4,170],[56,5,162],[44,24,170],[35,5,170],[47,5,170],[50,4,170],[53,4,164],[49,5,170],[50,7,170],[43,5,170],[52,5,149],[39,4,170]],JEi=236/256,QEi="boat_gear.webp",ZEi="gear_chest.webp",tAi="boat_big.webp",iAi="area_stamp.webp",sAi="gear_backgrounds/",eAi=192,nAi=class{ + )),fAi=[[72,4,138],[49,4,170],[39,4,170],[35,4,168],[45,4,170],[60,4,154],[43,8,170],[54,4,170],[40,4,170],[26,5,170],[41,4,170],[35,4,170],[45,4,170],[39,5,170],[42,4,162],[43,4,170],[46,4,170],[39,4,170],[35,4,170],[50,4,170],[39,4,170],[44,4,170],[41,4,170],[44,4,170],[60,4,142],[44,4,166],[53,5,170],[43,4,170],[48,4,170],[27,4,163],[44,4,170],[51,4,170],[17,10,170],[36,5,170],[44,4,170],[50,4,170],[38,4,170],[56,5,162],[44,24,170],[35,5,170],[47,5,170],[50,4,170],[53,4,164],[49,5,170],[50,7,170],[43,5,170],[52,5,149],[39,4,170]],pAi=236/256,wAi="boat_gear.webp",gAi="gear_chest.webp",mAi="boat_big.webp",vAi="area_stamp.webp",_Ai="menu_icons.webp",MAi="monster_icons.webp",bAi=["catfish","eel","sturgeon","manta","turtle","shark","whaleShark","whale","megalodon","croc","jelly","hammer","narwhal","squid","angler","octopus","sperm","serpent"],yAi="harpoon_icons.webp",EAi="hunt_mats.webp",AAi=["bone","thunder"],SAi=["wood","iron","mithril","bone","thunder"],TAi=["fish","gear","net","quest","shop","map"],CAi="hazard_cuts/",OAi="gear_backgrounds/",IAi=192,kAi=class{
- &atlas=20260929-fish-256-v1`,i=await fetch(CS.getAssetPath(`UI_FISH.json${ + &atlas=20261011-fish-263`,i=await fetch(CS.getAssetPath(`UI_FISH.json${
- const i=t.startsWith(sAi)?"20261008-gear-background-v1":"giants.json"===t||"spine/giant_whale.atlas"===t?"20261004-giants-v1":t===QEi?"20261007-boat-gear-v1":t===ZEi?"20261008-gear-chest-v1":t===tAi?"20261008-boat-big-v1":t===iAi?"20261008-area-stamp-v1":"20261001-topdown-v25"; + const i=t.startsWith(OAi)?"20261008-gear-background-v1":"giants.json"===t||"spine/giant_whale.atlas"===t?"20261004-giants-v1":t===wAi?"20261007-boat-gear-v1":t===gAi?"20261008-gear-chest-v1":t===mAi?"20261008-boat-big-v1":t===vAi?"20261008-area-stamp-v1":t===_Ai?"20261008-menu-icons-v1":t===MAi?"20261011-monster-icons-v2":t===yAi?"20261010-harpoon-icons-v2":t===EAi?"20261010-hunt-mats-v1":t.startsWith(CAi)?"20261009-hazard-cut-v2":"20261001-topdown-v25";
+ ).catch(()=>null),this.menuIconTex=await fd.load({ + src:this.topPath(_Ai),parser:"loadTextures",data:n} + ).catch(()=>null),this.monsterIconTex=await fd.load({ + src:this.topPath(MAi),parser:"loadTextures",data:n} + ).catch(()=>null),this.harpoonIconTex=await fd.load({ + src:this.topPath(yAi),parser:"loadTextures",data:n} + ).catch(()=>null),this.huntMatTex=await fd.load({ + src:this.topPath(EAi),parser:"loadTextures",data:n}
+ static hazardCut(t){ + let i=this.hazardCuts.get(t); + return i||(i=fd.load({ + src:this.topPath(`${ + CAi} + ${ + t} + .webp`),parser:"loadTextures",data:{ + autoGenerateMipmaps:!0} + } + ).catch(()=>null),this.hazardCuts.set(t,i)),i} + static menuIcon(t){ + const i=this.menuIconTex; + if(!i)return null; + if(!this.menuIconCells.length){ + const t=i.height; + this.menuIconCells=TAi.map((s,e)=>new as({ + source:i.source,frame:new Ui(e*t,0,t,t)} + ))} + return this.menuIconCells[TAi.indexOf(t)]} + static monsterIcon(t){ + const i=this.monsterIconTex,s=bAi.indexOf(t); + if(!i||s<0)return null; + if(!this.monsterIconCells.length){ + const t=i.height; + this.monsterIconCells=bAi.map((s,e)=>new as({ + source:i.source,frame:new Ui(e*t,0,t,t)} + ))} + return this.monsterIconCells[s]} + static harpoonIcon(t){ + const i=this.harpoonIconTex,s=SAi.indexOf(t); + if(!i||s<0)return null; + if(!this.harpoonIconCells.length){ + const t=i.height,s=Math.floor(i.width/t); + this.harpoonIconCells=SAi.map((e,n)=>n<s?new as({ + source:i.source,frame:new Ui(n*t,0,t,t)} + ):null)} + return this.harpoonIconCells[s]} + static huntMatIcon(t){ + const i=this.huntMatTex,s=AAi.indexOf(t); + if(!i||s<0)return null; + if(!this.huntMatCells.length){ + const t=i.height; + this.huntMatCells=AAi.map((s,e)=>new as({ + source:i.source,frame:new Ui(e*t,0,t,t)} + ))} + return this.huntMatCells[s]??null}
FishingAchievementPanel 4 hunks, 57 statements
- this.busy=!0; + this.busy=!0,this.render();
- const i=xIi.getInstance(),s=t?await i.claimSocial(t):await i.joinSocial(); - vH.getInstance().showMessage(s??(t?"보상을 받았어요":"오늘 대회에 참가했어요"))} + const i=Oki.getInstance(),s=i.state.pearl,e=t?await i.claimMilestone(t.kind,t.idx):await i.claimAllMilestones(); + _H.getInstance().showMessage(e??`진주 +${ + Math.max(0,i.state.pearl-s).toLocaleString()} + `)}
- vH.getInstance().showMessage("결과를 확인하지 못했어요. 새로 보기를 눌러 주세요")} + _H.getInstance().showMessage("연결을 확인하고 다시 받아 주세요")}
+ records(){ + var t,i; + const s=Oki.getInstance(),e=s.records(); + qHi.open("내 기록",[{ + title:"총 포획 · 이번 회차",detail:`${ + e.total.toLocaleString()} + 마리`} + ,{ + title:"도감 · 이번 회차",detail:`${ + e.kinds} + / 192종 · 최고 ★${ + e.topStar} + · 왕 크기 ${ + e.sCount} + 종`} + ,{ + title:"판매 · 이번 회차",detail:`${ + s.state.sales.toLocaleString()} + G`} + ,{ + title:"가장 무거운 한 마리 · 이번 회차",detail:e.heaviest?`${ + uTi(e.heaviest.id).name} + · ${ + ZTi(e.heaviest.kg)} + `:"아직 기록이 없어요"} + ,{ + title:"평생 도감 · 누적",detail:`${ + new Set([...Object.keys((null==(t=s.life)?void 0:t.dex)??{ + } + ),...Object.keys(s.state.dex)]).size} + / ${ + oTi.length} + 종`} + ,{ + title:"수리 도움 · 이번 회차",detail:`${ + (null==(i=s.state.boat)?void 0:i.helped)??0} + 번`} + ])} + } + ; + Qt(QHi,"FishingAchievementPanel"); + let ZHi=QHi; + const tWi={ + weight:33,rarity:47,giant:10,count:49} + ,iWi={ + weight:"kg",rarity:"★★★",giant:"S",count:"+ +"} + ,sWi={ + weight:"어떤 어종이든 가장 무거운 한 마리로 겨뤄요.",rarity:"별 → 크기 등급 → 크기 비율 순으로 겨뤄요.",giant:"같은 종 안에서의 크기 비율로 겨뤄요. 작살 사냥과는 별개예요.",count:"참가한 뒤 잡은 모든 물고기의 마릿수를 더해요."} + ,eWi=class extends zHi{ + constructor(){ + super(...arguments),Zt(this,"selected","weight"),Zt(this,"dismissed",new Set),Zt(this,"clockLabel",null),Zt(this,"endAt",0)}
BattleController 13 hunks, 52 statements
- super(),Zt(this,"battleType",v$.IDLE),Zt(this,"reviveGoldBuff",1),Zt(this,"heroHireCosts",[10,30,50,100,150,200,300,500,1e3,1500,2e3,2e3,2e3,2e3]),Zt(this,"castleVO",ix.getVO()),Zt(this,"rallyDragHero",null),Zt(this,"rallyHeroes",new Set),Zt(this,"rallyRangeCircle",new Odi),Zt(this,"rallyDashLine",new ip),Zt(this,"isDragging",!1),Zt(this,"dragStartX",0),Zt(this,"dragStartY",0),Zt(this,"minSortingCooldown",30),Zt(this,"enemyHpRatio",.25),Zt(this,"enemyAtkRatio",.25),Zt(this,"enemyMoveSpdRatio",1),Zt(this,"map",new m7t),Zt(this,"currentScenarioId",1),Zt(this,"rushTime",420),Zt(this,"waveTimer",0),Zt(this,"waveDuration",600),Zt(this,"spawnSchedule",[]),Zt(this,"spawnScheduleIndex",0),Zt(this,"allEnemiesSpawned",!1),Zt(this,"totalEnemiesInWave",0),Zt(this,"bossSpawned",!1),Zt(this,"isGameOverFlag",!1),Zt(this,"castleDestroyHandled",!1),Zt(this,"skippedWaves",[]),Zt(this,"shownDialogueWaves",new Set),Zt(this,"activeWaveNumbers",[]),Zt(this,"waveSpawnStatus",new Map),Zt(this,"goldCoolTime",30),Zt(this,"goldCoolTimeCount",0),Zt(this,"spawnVo",ix.getVO()),Zt(this,"goldGoblinNextSpawnTime",-1),Zt(this,"goldGoblinList",[]),Zt(this,"goldGoblinSpawning",!1),Zt(this,"adsGoblinNextSpawnTime",-1),Zt(this,"adsGoblinList",[]),Zt(this,"adsGoblinSpawning",!1),Zt(this,"isFirstWave",!0),Zt(this,"autoSaveTimer",null),Zt(this,"autoSaveDelayTimer",null),Zt(this,"lastSavedWave",0),Zt(this,"lastGodBlessCheckedWave",0),Zt(this,"lastSavedGold",0),Zt(this,"isSaving",!1),Zt(this,"autoSaveRetryCount",0),Zt(this,"execute",Qt(()=>{ + super(),Zt(this,"battleType",_$.IDLE),Zt(this,"reviveGoldBuff",1),Zt(this,"heroHireCosts",[10,30,50,100,150,200,300,500,1e3,1500,2e3,2e3,2e3,2e3]),Zt(this,"castleVO",iR.getVO()),Zt(this,"rallyDragHero",null),Zt(this,"rallyHeroes",new Set),Zt(this,"rallyRangeCircle",new Wdi),Zt(this,"formationEditor",null),Zt(this,"rallyDashLine",new ip),Zt(this,"isDragging",!1),Zt(this,"dragStartX",0),Zt(this,"dragStartY",0),Zt(this,"minSortingCooldown",30),Zt(this,"enemyHpRatio",.25),Zt(this,"enemyAtkRatio",.25),Zt(this,"enemyMoveSpdRatio",1),Zt(this,"map",new O7t),Zt(this,"currentScenarioId",1),Zt(this,"rushTime",420),Zt(this,"waveTimer",0),Zt(this,"waveDuration",600),Zt(this,"spawnSchedule",[]),Zt(this,"spawnScheduleIndex",0),Zt(this,"allEnemiesSpawned",!1),Zt(this,"totalEnemiesInWave",0),Zt(this,"bossSpawned",!1),Zt(this,"isGameOverFlag",!1),Zt(this,"castleDestroyHandled",!1),Zt(this,"skippedWaves",[]),Zt(this,"shownDialogueWaves",new Set),Zt(this,"activeWaveNumbers",[]),Zt(this,"waveSpawnStatus",new Map),Zt(this,"goldCoolTime",30),Zt(this,"goldCoolTimeCount",0),Zt(this,"spawnVo",iR.getVO()),Zt(this,"goldGoblinNextSpawnTime",-1),Zt(this,"goldGoblinList",[]),Zt(this,"goldGoblinSpawning",!1),Zt(this,"adsGoblinNextSpawnTime",-1),Zt(this,"adsGoblinList",[]),Zt(this,"adsGoblinSpawning",!1),Zt(this,"isFirstWave",!0),Zt(this,"autoSaveTimer",null),Zt(this,"autoSaveDelayTimer",null),Zt(this,"lastSavedWave",0),Zt(this,"lastGodBlessCheckedWave",0),Zt(this,"lastSavedGold",0),Zt(this,"lastAutoSaveAt",Number.NEGATIVE_INFINITY),Zt(this,"isSaving",!1),Zt(this,"autoSaveRetryCount",0),Zt(this,"execute",Qt(()=>{
- 1!==h&&(this.player.baseMaxHp*=h,this.player.orgMaxHp=this.player.maxHp=this.player.baseMaxHp,this.player.hp=this.player.maxHp),this.player.setPlayerAtkRange((null==(t=tP.getInstance().getBookDataByKindNum(2))?void 0:t.value)??0),this.player.setPlayerAtkDuration((null==(i=tP.getInstance().getBookDataByKindNum(3))?void 0:i.value)??0),this.player.setPlayerNumShot((null==(s=tP.getInstance().getBookDataByKindNum(4))?void 0:s.value)??0),this.player.setPlayerNumBounce((null==(e=tP.getInstance().getBookDataByKindNum(5))?void 0:e.value)??0),this.player.x=this.player.xDefault=320,this.player.y=this.player.yDefault=320,this.player.initDelay=5,this.player.hasTextEffect=!1,this.friendList.push(this.player),this.player.enemyList=this.enemyList,this.player.allyList=this.friendList,SU.getInstance().addChild(this.player),this.applyCastleSkin(this.map.getRealm()),this.currentWave=EG.wave||1,this.waveTimer=0,this.waveDuration=600,this.rushTime=420,zdi.releaseAll(this.spawnSchedule),this.spawnScheduleIndex=0,this.allEnemiesSpawned=!1,this.totalEnemiesInWave=0,this.bossSpawned=!1,this.isGameOverFlag=!1,this.shownDialogueWaves.clear(),ldi.getInstance().updateDay(EG.wave),oG.getInstance().startUpdate(),this.updateReviveGoldBuff(),this.startNewWave(); + 1!==h&&(this.player.baseMaxHp*=h,this.player.orgMaxHp=this.player.maxHp=this.player.baseMaxHp,this.player.hp=this.player.maxHp),this.player.setPlayerAtkRange((null==(t=tP.getInstance().getBookDataByKindNum(2))?void 0:t.value)??0),this.player.setPlayerAtkDuration((null==(i=tP.getInstance().getBookDataByKindNum(3))?void 0:i.value)??0),this.player.setPlayerNumShot((null==(s=tP.getInstance().getBookDataByKindNum(4))?void 0:s.value)??0),this.player.setPlayerNumBounce((null==(e=tP.getInstance().getBookDataByKindNum(5))?void 0:e.value)??0),this.player.x=this.player.xDefault=320,this.player.y=this.player.yDefault=320,this.player.initDelay=5,this.player.hasTextEffect=!1,this.friendList.push(this.player),this.player.enemyList=this.enemyList,this.player.allyList=this.friendList,TU.getInstance().addChild(this.player),this.player.onTap=()=>this.openFormationEditor(),this.applyCastleSkin(this.map.getRealm()),this.currentWave=AG.wave||1,this.waveTimer=0,this.waveDuration=600,this.rushTime=420,lfi.releaseAll(this.spawnSchedule),this.spawnScheduleIndex=0,this.allEnemiesSpawned=!1,this.totalEnemiesInWave=0,this.bossSpawned=!1,this.isGameOverFlag=!1,this.shownDialogueWaves.clear(),Edi.getInstance().updateDay(AG.wave),aG.getInstance().startUpdate(),this.updateReviveGoldBuff(),this.startNewWave();
- const r=await MS.getData(MS.KEY_GAME_OVER); - if(r&&r.wave&&void 0!==r.numRevive)if(r.numRevive!==EG.numRevive)MS.removeData(MS.KEY_GAME_OVER),ZL.getInstance().user.clearNeedRevive().catch(()=>{ + const r=await MS.getData(MS.KEY_GAME_OVER),o=xdi(r,AG.numRevive,AG.needRevive); + if("clearStale"===o)MS.removeData(MS.KEY_GAME_OVER),tD.getInstance().user.clearNeedRevive().catch(()=>{
- else{ + else if("restoreLocal"===o){
+ else"restoreServer"===o&&this.handleCastleDestroyed();
- EG.gold+=Math.floor(i*this.reviveGoldBuff*s),xH.getInstance().updateGold(),EG.wave-this.lastSavedWave>=t.AUTO_SAVE_WAVE_DIFF&&this.performAutoSave()} + AG.gold+=Math.floor(t*this.reviveGoldBuff*i),PH.getInstance().updateGold(),kdi(AG.wave-this.lastSavedWave,performance.now()-this.lastAutoSaveAt)&&this.performAutoSave()}
+ const e=this.player; + if((null==e?void 0:e.onTap)&&e.containsCorePoint(s.global))return void e.handlePress(s);
- const e=s.x,o=s.y; - i.enablePatrol(e,o,n),i.xDefault=e,i.yDefault=o,i.repositionX=e,i.repositionY=o,i.repositionPatrolRadius=n,this.rallyHeroes.add(i),this.saveRallyPoints(),i.isAlive&&(i.target&&i.target.removeBlockedEnemy(i),i.target=null,i.rallyMoveTimer=300,i.resetToIdle(),i.tx=e,i.ty=o,i.gotoMoveState()),a&&(a.x=s.x,a.y=s.y,a.setValid(!0),a.fadeOutAndRemove(800)),this.rallyDragHero=null,this.isDragging=!1} + this.applyRallyPoint(i,s.x,s.y,h),this.saveRallyPoints(),c&&(c.x=s.x,c.y=s.y,c.setValid(!0),c.fadeOutAndRemove(800)),this.rallyDragHero=null,this.isDragging=!1}
+ applyRallyPoint(t,i,s,e){ + t.enablePatrol(i,s,e),t.xDefault=i,t.yDefault=s,t.repositionX=i,t.repositionY=s,t.repositionPatrolRadius=e,this.rallyHeroes.add(t),t.isAlive&&(t.target&&t.target.removeBlockedEnemy(t),t.target=null,t.rallyMoveTimer=300,t.resetToIdle(),t.tx=i,t.ty=s,t.gotoMoveState())} + getHeroHome(t){ + return t.needsReposition?{ + x:t.repositionX,y:t.repositionY} + :t.isPatrolMode?{ + x:t.patrolPoint.x,y:t.patrolPoint.y} + :{ + x:t.xDefault,y:t.yDefault} + } + patrolRadiusOf(i){ + return i.unitType===Gx.MELEE?t.MELEE_PATROL_RADIUS:t.RANGED_PATROL_RADIUS} + openFormationEditor(){ + var i; + if(null==(i=this.formationEditor)?void 0:i.isOpen)return; + if(!this.player||!this.player.isAlive||this.isGameOverFlag)return; + const s=this.friendList.filter(t=>t!==this.player); + if(0===s.length)return; + const e=Zx.getInstance().list,n=new jdi({ + centerX:this.player.x,centerY:this.player.y,entries:s.map(t=>{ + const i=this.getHeroHome(t); + return{ + key:t,vo:e.find(i=>i.id===t.id)??null,kindNum:t.kindNum,x:i.x,y:i.y,radius:this.patrolRadiusOf(t)} + } + ),onApply:Qt(t=>{ + for(const i of t){ + if(!this.friendList.includes(i.key))continue; + const t=this.patrolRadiusOf(i.key); + this.isWithinPatrolRange(i.x,i.y,t+.5)&&this.applyRallyPoint(i.key,i.x,i.y,t)} + this.saveRallyPoints()} + ,"onApply"),barHost:PG.getInstance(),barTop:AF.getInstance().y+(this.player.y+t.MELEE_PATROL_RADIUS+22)*AF.getInstance().scale.y,onClose:Qt(()=>{ + this.formationEditor===n&&(this.formationEditor=null)} + ,"onClose")} + ); + this.formationEditor=n,AF.getInstance().addChild(n)}
- MS.saveData(MS.KEY_GAME_OVER,{ + var t; + null==(t=this.formationEditor)||t.cancel(),MS.saveData(MS.KEY_GAME_OVER,{
- for(const i of this.skippedWaves)this.shownDialogueWaves.has(i)||(t.push(...tYt.getInstance().getByWave(i)),this.shownDialogueWaves.add(i)); - this.shownDialogueWaves.has(EG.wave)||(t.push(...tYt.getInstance().getByWave(EG.wave)),this.shownDialogueWaves.add(EG.wave)),t.length>0&&kci.getInstance().showDialogues(t)} + for(const i of this.skippedWaves)this.shownDialogueWaves.has(i)||(t.push(...nYt.getInstance().getByWave(i)),this.shownDialogueWaves.add(i)); + this.shownDialogueWaves.has(AG.wave)||(t.push(...nYt.getInstance().getByWave(AG.wave)),this.shownDialogueWaves.add(AG.wave)),t.length>0&&$ci.getInstance().showDialogues(t)}
- this.isSaving=!0,this.autoSaveRetryCount=0,this.lastSavedWave=i,this.lastSavedGold=t,this.executeAutoSave(n,h,r,l,o,u,d)} + this.isSaving=!0,this.autoSaveRetryCount=0,this.lastSavedWave=i,this.lastSavedGold=t,this.lastAutoSaveAt=performance.now(),this.executeAutoSave(n,h,r,l,o,u,d)}
- Qt(Ydi,"BattleController"),Zt(Ydi,"instance"),Zt(Ydi,"DRAG_THRESHOLD",10),Zt(Ydi,"MELEE_ORBIT_RADIUS",110),Zt(Ydi,"RANGED_ORBIT_RADIUS",80),Zt(Ydi,"MELEE_PATROL_RADIUS",150),Zt(Ydi,"RANGED_PATROL_RADIUS",120),Zt(Ydi,"FIRST_WAVE_DELAY",60),Zt(Ydi,"PULL_STALL_FRAMES",400),Zt(Ydi,"PULL_TRIGGER_RADIUS",150),Zt(Ydi,"PULL_SNAP_RADIUS",50),Zt(Ydi,"AUTO_SAVE_INTERVAL",18e4),Zt(Ydi,"AUTO_SAVE_RETRY_DELAY",5e3),Zt(Ydi,"AUTO_SAVE_MAX_RETRY",3),Zt(Ydi,"AUTO_SAVE_WAVE_DIFF",10),Zt(Ydi,"zoomEnabled",!0); + Qt(ufi,"BattleController"),Zt(ufi,"instance"),Zt(ufi,"DRAG_THRESHOLD",10),Zt(ufi,"MELEE_ORBIT_RADIUS",110),Zt(ufi,"RANGED_ORBIT_RADIUS",80),Zt(ufi,"MELEE_PATROL_RADIUS",150),Zt(ufi,"RANGED_PATROL_RADIUS",120),Zt(ufi,"FIRST_WAVE_DELAY",60),Zt(ufi,"PULL_STALL_FRAMES",400),Zt(ufi,"PULL_TRIGGER_RADIUS",150),Zt(ufi,"PULL_SNAP_RADIUS",50),Zt(ufi,"AUTO_SAVE_INTERVAL",18e4),Zt(ufi,"AUTO_SAVE_RETRY_DELAY",5e3),Zt(ufi,"AUTO_SAVE_MAX_RETRY",3),Zt(ufi,"zoomEnabled",!0);
FishingBoatUi 8 hunks, 47 statements
- Qt(uGi,"hazardArt"),Qt(dGi,"hazardIcon"),Qt(fGi,"hazardNotice"),Qt(pGi,"sfx$2"); + Qt(CFi,"sfx$2");
- super(),Zt(this,"chip",new Ve),Zt(this,"chipBg",new ip),Zt(this,"chipBar",new ip),Zt(this,"chipText",oki("",zIi,12)),Zt(this,"banner",new Ve),Zt(this,"bannerBg",new ip),Zt(this,"bannerBar",new ip),Zt(this,"bannerTitle",oki("",zIi,14)),Zt(this,"bannerSub",oki("",YIi,12,!1)),Zt(this,"stopBtn",new gki("그만 고치기",112,34,13)),Zt(this,"panelBox",new Ve),Zt(this,"helpBox",new Ve),Zt(this,"helpTarget",null),Zt(this,"helpBusy",!1),Zt(this,"notices",[]),Zt(this,"chipKey",""),Zt(this,"wasFixing",!1),Zt(this,"finishFxAt",0),Zt(this,"onPeek",null),Zt(this,"bannerY",Qt(()=>166,"bannerY")),Zt(this,"panelSig",""),Zt(this,"panelLive",null),Zt(this,"helpSig",""),Zt(this,"helpLive",null),this.scene=t,this.viewH=i,this.chip.addChild(this.chipBg,this.chipBar,this.chipText),this.chip.eventMode="static",this.chip.cursor="pointer",this.chip.on("pointertap",t=>{ + super(),Zt(this,"chip",new Ve),Zt(this,"chipBg",new ip),Zt(this,"chipBar",new ip),Zt(this,"chipText",Axi("",uxi,12)),Zt(this,"banner",new Ve),Zt(this,"bannerBg",new ip),Zt(this,"bannerBar",new ip),Zt(this,"bannerTitle",Axi("",uxi,14)),Zt(this,"bannerSub",Axi("",dxi,12,!1)),Zt(this,"stopBtn",new Dxi("그만 고치기",112,34,13)),Zt(this,"panelBox",new Ve),Zt(this,"helpBox",new Ve),Zt(this,"helpTarget",null),Zt(this,"helpBusy",!1),Zt(this,"notices",[]),Zt(this,"cut",new SFi),Zt(this,"cutHold",null),Zt(this,"chipKey",""),Zt(this,"wasFixing",!1),Zt(this,"finishFxAt",0),Zt(this,"onPeek",null),Zt(this,"bannerY",Qt(()=>166,"bannerY")),Zt(this,"panelSig",""),Zt(this,"panelLive",null),Zt(this,"helpSig",""),Zt(this,"helpLive",null),this.scene=t,this.viewH=i,this.chip.addChild(this.chipBg,this.chipBar,this.chipText),this.chip.eventMode="static",this.chip.cursor="pointer",this.chip.on("pointertap",t=>{
- ,this.panelBox.visible=this.helpBox.visible=!1,this.panelBox.eventMode=this.helpBox.eventMode="static",this.addChild(this.banner,this.panelBox,this.helpBox),t.sailBlock=()=>xIi.getInstance().boatProblem(); + ,this.panelBox.visible=this.helpBox.visible=!1,this.panelBox.eventMode=this.helpBox.eventMode="static",this.addChild(this.banner,this.panelBox,this.helpBox,this.cut),t.sailBlock=()=>Oki.getInstance().boatProblem();
- const i=t.boatHp(),s=i.hp/i.max,e=i.fixing?`수리 ${ + const i=t.boatHp(),s=(this.cut.hpNow??this.cutHold??i.hp)/i.max,e=i.fixing?`수리 ${
- for(const R of[...g].sort((t,i)=>i.dmg-t.dmg)){ + for(const x of[...w].sort((t,i)=>i.dmg-t.dmg)){
+ const i=t.filter(t=>"wave"===t.kind); + i.length&&performance.now()<this.scene.waveIncoming?this.scene.expectWave().then(s=>{ + if(!this.destroyed){ + if(!s)for(const t of i)this.scene.boatHit(t.dmg); + this.playLogs(t.filter(t=>"wave"!==t.kind))} + } + ):this.playLogs(t)} + playLogs(t){
- for(const e of t)if("hazard"===e.kind)this.scene.boatHit(e.dmg),this.showNotice(fGi(e,Math.min(460,ORi.BLEED_W-24))),e.dmg>0&&(jG(e.dmg>=30?"heavy":"medium"),pGi(qG.SFX_STONE_BREAK,.35)); + const{ + main:e,more:n} + =_Fi(t); + for(const h of t)if("wave"===h.kind){ + if(h.rid&&Oki.getInstance().ringsShown.has(h.rid))continue; + this.scene.boatHit(h.dmg),h.dmg>0&&(KG(h.dmg>=30?"heavy":"medium"),CFi(XG.SFX_STONE_BREAK,.3))} + else if("hazard"===h.kind){ + if(e&&h.dmg>0&&h!==e)continue; + if(h===e&&this.playCut(h,n))continue; + this.hazardPlain(h)}
+ hazardPlain(t){ + this.scene.boatHit(t.dmg),this.showNotice(uFi(t,Math.min(460,JRi.BLEED_W-24))),t.dmg>0&&(KG(t.dmg>=30?"heavy":"medium"),CFi(XG.SFX_STONE_BREAK,.35))} + playCut(t,i){ + const s=cFi(t.text); + if(!TFi(s))return!1; + const e=Oki.getInstance(),n=e.boatHp().max,h=Math.min(n,t.hp+t.dmg); + this.cutHold=h; + const r=new Promise(t=>setTimeout(()=>t(null),1500)); + return Promise.race([xAi.hazardCut(bFi(s,e.state.spot.zone)),r]).then(e=>{ + this.cutHold=null,this.destroyed||(e?this.cut.start({ + key:s,tex:e,dmg:t.dmg,from:h,to:t.hp,max:n,more:i,W:JRi.BLEED_W,H:this.viewH()} + ,()=>{ + this.scene.boatHit(t.dmg),KG(t.dmg>=30?"heavy":"medium"),CFi(XG.SFX_STONE_BREAK,.5)} + ,()=>this.update()):this.hazardPlain(t))} + ),!0} + async previewCut(t,i,s=1,e=0,n=!1){ + const h=await xAi.hazardCut(bFi(t,n?"C":"R")); + if(!h)return!1; + const r=Oki.getInstance().boatHp(),o=Math.max(i,r.hp); + return this.cut.start({ + key:t,tex:h,dmg:i,from:o,to:o-i,max:r.max,more:e,W:JRi.BLEED_W,H:this.viewH(),speed:s} + ,()=>{ + this.scene.boatHit(i),KG(i>=30?"heavy":"medium"),CFi(XG.SFX_STONE_BREAK,.5)} + ,()=>this.update()),!0}
FishingShopPage 10 hunks, 41 statements
- super(),Zt(this,"tabId","shop"),Zt(this,"view","items"),Zt(this,"banner",new Ve),Zt(this,"bannerBg",new ip),Zt(this,"bannerIcon",new Ve),Zt(this,"bannerTitle",oki("",zIi,14)),Zt(this,"bannerSub",oki("",YIi,12,!1)),Zt(this,"bannerBar",new ip),Zt(this,"rows",[]),Zt(this,"rewardIcons",Array.from({ + super(),Zt(this,"tabId","shop"),Zt(this,"view","items"),Zt(this,"head",new Oxi(mWi)),Zt(this,"banner",new Ve),Zt(this,"bannerBg",new ip),Zt(this,"bannerIcon",new Ve),Zt(this,"bannerTitle",Axi("",uxi,14)),Zt(this,"bannerSub",Axi("",dxi,12,!1)),Zt(this,"bannerBar",new ip),Zt(this,"rows",[]),Zt(this,"rewardIcons",Array.from({
- ,()=>new p4)),Zt(this,"qty",new Map),Zt(this,"locked",!1),Zt(this,"itemIcons",new Map),Zt(this,"bannerKey",""),Zt(this,"busy",!1),this.only=t,this.view=t,this.banner.y=0,this.bannerIcon.position.set(12,12),this.bannerTitle.position.set(66,12),this.bannerSub.position.set(66,36),this.bannerBar.eventMode="none",this.bannerSub.setWrapWidth(NUi-80),this.banner.addChild(this.bannerBg,this.bannerIcon,this.bannerTitle,this.bannerSub,this.bannerBar),this.banner.eventMode="none",this.addChild(this.banner); + ,()=>new v4)),Zt(this,"qty",new Map),Zt(this,"locked",!1),Zt(this,"itemIcons",new Map),Zt(this,"bannerKey",""),Zt(this,"busy",!1),this.only=t,this.view=t,this.banner.y=0,this.bannerIcon.position.set(12,12),this.bannerTitle.position.set(66,12),this.bannerSub.position.set(66,36),this.bannerBar.eventMode="none",this.bannerSub.setWrapWidth(mWi-80),this.banner.addChild(this.bannerBg,this.bannerIcon,this.bannerTitle,this.bannerSub,this.bannerBar),this.banner.eventMode="none",this.addChild(this.banner,this.head);
- t.y=78+88*i; + s.y=("exchange"===t?66:78)+88*i;
- const h=oki("",zIi,16),r=oki("",YIi,13,!1),o=new gki("",150,46,15),a=new Ve; + const r=Axi("",uxi,18),o=Axi("",dxi,Txi,!1),a=new Dxi("",150,46,Sxi),c=new Ve;
- const i=new fki("",64,30,13); + const i=new Nxi("",64,30,Txi);
- t.addChild(s,e,n,h,r,o,a,...c),this.addChild(t),this.rows.push({ + s.addChild(e,n,h,r,o,a,c,...l),this.addChild(s),this.rows.push({
- const i=xIi.getInstance(),s=i.state,e=i.baitLeftMs(),n="items"===this.view&&e>0&&!!s.bait; + const i=Oki.getInstance(),s=i.state; + if("exchange"===this.view){ + const e=null==(t=i.season)?void 0:t.shopEndAt; + return this.banner.visible=!1,this.head.visible=!0,void("exchangeOnly"===i.phase()&&e?this.head.set("상점","회차가 끝났어요 ·",{ + accent:`${ + Wxi(e)} + 까지 바꿀 수 있어요`,right:`진주 ${ + s.pearl.toLocaleString()} + `} + ):this.head.set("상점","모은 진주를 메인 게임 재화로 바꿔요 ·",{ + accent:e?`${ + Wxi(e)} + 까지`:"회차가 끝나고 며칠 안에",right:`진주 ${ + s.pearl.toLocaleString()} + `} + ))} + this.banner.visible=!0,this.head.visible=!1; + const e=i.baitLeftMs(),n=e>0&&!!s.bait;
- const h=n?UTi.find(t=>t.bait===s.bait.kind):null,r="items"===this.view?(null==h?void 0:h.id)??"none":"pearl"; - if(r!==this.bannerKey&&(this.bannerKey=r,this.bannerIcon.removeChildren().forEach(t=>t.destroy({ + const h=n?_Ci.find(t=>t.bait===s.bait.kind):null,r=(null==h?void 0:h.id)??"none"; + r!==this.bannerKey&&(this.bannerKey=r,this.bannerIcon.removeChildren().forEach(t=>t.destroy({
- )),this.bannerIcon.addChild("pearl"===r?Mki("pearl",40):Eki(h?LUi[h.id]:"hook",40,YIi))),"items"===this.view)this.bannerTitle.text=n?`사용 중 · ${ + )),this.bannerIcon.addChild(Vxi(h?vWi[h.id]:"hook",40,dxi))),this.bannerTitle.text=n?`사용 중 · ${
- 남음`:"미끼 없음",this.bannerTitle.textColor=n?jIi:zIi,this.bannerSub.text=n?"미끼는 한 번에 하나만 효과가 있어요. 새로 사면 바뀌어요.":"미끼는 30분 동안 효과가 있어요",n&&_ki(this.bannerBar,66,60,NUi-80,5,e/18e5,jIi); - else{ - this.bannerTitle.text=`진주 ${ - s.pearl.toLocaleString()} - 개`,this.bannerTitle.textColor=QIi; - const e=null==(t=i.season)?void 0:t.shopEndAt; - this.bannerSub.text="exchangeOnly"===i.phase()&&e?`회차가 끝났어요 · ${ - yki(e)} - 까지 바꿀 수 있어요. 그 뒤 남은 진주는 사라져요.`:`대회·손님·업적으로 모아 메인 게임 재화로 바꿔요. ${ - e?`${ - yki(e)} - 까지`:"회차가 끝나고 며칠 안에"} - 바꾸지 않은 진주는 사라져요.`} - aki(this.bannerSub,NUi-80),this.bannerBg.clear().roundRect(0,0,NUi,66,12).fill(n?2763288:UIi)} + 남음`:"미끼 없음",this.bannerTitle.textColor=n?cxi:uxi,this.bannerSub.text=n?"미끼는 한 번에 하나만 효과가 있어요. 새로 사면 바뀌어요.":"미끼는 30분 동안 효과가 있어요",n&&Fxi(this.bannerBar,66,60,mWi-80,5,e/18e5,cxi),Ixi(this.bannerSub,mWi-80),this.bannerBg.clear().roundRect(0,0,mWi,66,12).fill(n?2763288:exi)}
PVPBattleSubView 14 hunks, 33 statements
- super(),Zt(this,"lblPoint",new QD("",sD.COLOR_BRIGHT_ORANGE,sD.DEFAULT_OUTLINE_FONT_OPTION_18)),Zt(this,"lblTicket",new SF("PVP_TICKET_ON","",sD.COLOR_DEEP_SKYBLUE,sD.DEFAULT_OUTLINE_FONT_OPTION_16)),Zt(this,"lblTimer",new SF("Icon_Time02","",sD.DEFAULT_COLOR,sD.DEFAULT_OUTLINE_FONT_OPTION_17)),Zt(this,"lblSettlement",new QD("",16755370,sD.DEFAULT_OUTLINE_FONT_OPTION_18)),Zt(this,"opponentList"),Zt(this,"btnBuyTicket",new m$("UI_GEM","","티켓구매",.8,140,60)),Zt(this,"btnRefreshOppo",new m$("UI_GEM","","새로고침",.8,140,60)),Zt(this,"pvpInfo",null),Zt(this,"userPvp",null),Zt(this,"battleId",0),Zt(this,"lastLoadTime",0),Zt(this,"requestPending",!1),Zt(this,"requestPending2",!1),Zt(this,"timerRunning",!1),Zt(this,"timerUpdateCount",0),Zt(this,"rechargeTime",0),Zt(this,"myHeroKindNums",[]),Zt(this,"myHeroTrans",[]),this.lblPoint.x=12,this.lblPoint.y=4,this.addChild(this.lblPoint),this.lblTicket.iconScale=.9,this.lblTicket.x=12,this.lblTicket.y=30,this.addChild(this.lblTicket),this.lblTimer.iconScale=.7,this.lblTimer.x=this.lblTicket.x+80,this.lblTimer.y=30,this.addChild(this.lblTimer),this.btnRefreshOppo.color=m$.BROWN,this.btnRefreshOppo.width=140,this.btnRefreshOppo.height=60,this.btnRefreshOppo.x=640-this.btnRefreshOppo.width-19,this.btnRefreshOppo.y=0,this.btnRefreshOppo.onClick=this.onChangeOpponentList.bind(this),this.addChild(this.btnRefreshOppo),this.btnBuyTicket.color=m$.BROWN,this.btnBuyTicket.width=140,this.btnBuyTicket.height=60,this.btnBuyTicket.x=this.btnRefreshOppo.x-this.btnBuyTicket.width-7,this.btnBuyTicket.y=0,this.btnBuyTicket.onClick=this.onBuyTicket.bind(this),this.addChild(this.btnBuyTicket),this.lblSettlement.y=200,this.addChild(this.lblSettlement),this.lblSettlement.visible=!1; - const t=i9t.getInstance().listHeight-60-10; - this.opponentList=new TR(a0t,625,t),this.opponentList.x=0,this.opponentList.y=68,this.addChild(this.opponentList),this.on("added",this.onAdded,this),this.on("removed",this.onRemoved,this)} + super(),Zt(this,"dashboard",new ip),Zt(this,"rankBadge",new f0t(70)),Zt(this,"lblPointTitle",r0t(13,n0t)),Zt(this,"lblPoint",r0t(32,h0t)),Zt(this,"lblRank",r0t(14,e0t)),Zt(this,"lblTicketTitle",r0t(13,n0t)),Zt(this,"lblTicket",new TF("PVP_TICKET_ON","",e0t,eD.DEFAULT_FONT_OPTION_16)),Zt(this,"lblTimer",new TF("Icon_Time02","",n0t,{ + ...eD.DEFAULT_FONT_OPTION_16,fontSize:14} + )),Zt(this,"lblOpponents",r0t(18)),Zt(this,"lblSettlement",new ZD("",16755370,eD.DEFAULT_OUTLINE_FONT_OPTION_18)),Zt(this,"opponentList"),Zt(this,"btnBuyTicket",new v$("UI_GEM","","티켓구매",.8,140,60)),Zt(this,"btnRefreshOppo",new v$("UI_GEM","","새로고침",.8,140,60)),Zt(this,"pvpInfo",null),Zt(this,"userPvp",null),Zt(this,"battleId",0),Zt(this,"lastLoadTime",0),Zt(this,"requestPending",!1),Zt(this,"requestPending2",!1),Zt(this,"timerRunning",!1),Zt(this,"timerUpdateCount",0),Zt(this,"rechargeTime",0),Zt(this,"myHeroKindNums",[]),Zt(this,"myHeroTrans",[]),this.dashboard.roundRect(5,0,298,92,13).fill(s0t).roundRect(313,0,302,92,13).fill(s0t),this.dashboard.eventMode="none",this.rankBadge.position.set(18,11),this.lblPointTitle.position.set(104,10),this.lblPoint.position.set(102,27),this.lblRank.position.set(104,66),this.lblTicketTitle.position.set(331,10),this.lblTicket.iconScale=.9,this.lblTicket.textSize=24,this.lblTicket.position.set(330,30),this.lblTimer.iconScale=.5,this.lblTimer.position.set(331,66),this.addChild(this.dashboard,this.rankBadge,this.lblPointTitle,this.lblPoint,this.lblRank,this.lblTicketTitle,this.lblTicket,this.lblTimer); + for(const i of[this.btnBuyTicket,this.btnRefreshOppo])i.color=v$.BROWN,i.labelOrder=v$.TEXT_FIRST,i.iconLabel.setStyle(this.lblRank.getStyle().clone()),i.textLabel.setStyle(this.lblRank.getStyle().clone()),i.iconLabel.iconScale=.55; + this.btnBuyTicket.width=118,this.btnBuyTicket.height=58,this.btnBuyTicket.position.set(483,16),this.btnBuyTicket.onClick=this.onBuyTicket.bind(this),this.addChild(this.btnBuyTicket),this.lblOpponents.position.set(14,121),this.addChild(this.lblOpponents),this.btnRefreshOppo.width=134,this.btnRefreshOppo.height=50,this.btnRefreshOppo.position.set(478,104),this.btnRefreshOppo.onClick=this.onChangeOpponentList.bind(this),this.addChild(this.btnRefreshOppo),this.lblSettlement.y=226,this.lblSettlement.visible=!1,this.addChild(this.lblSettlement); + const t=Math.max(100,d9t.getInstance().listHeight-166-8); + this.opponentList=new Tx(w0t,620,t,10),this.opponentList.position.set(0,166),this.addChild(this.opponentList),this.on("added",this.onAdded,this),this.on("removed",this.onRemoved,this)}
- this.btnBuyTicket.text=RB.getText("COMMON_385","티켓 구매"),this.btnRefreshOppo.text=RB.getText("COMMON_60","새로고침")} + this.lblPointTitle.text=RB.getText("COMMON_375","내 점수"),this.lblTicketTitle.text=RB.getText("GAME_559","티켓"),this.lblOpponents.text=RB.getText("GAME_113","상대"),o0t(this.lblPointTitle,184),o0t(this.lblTicketTitle,140),this.btnBuyTicket.text=RB.getText("COMMON_385","티켓 구매"),this.btnRefreshOppo.text=RB.getText("COMMON_60","새로고침"),this.fitActionLabels()} + fitActionLabels(){ + for(const t of[this.btnBuyTicket,this.btnRefreshOppo])o0t(t.textLabel,t.width-20),t.width=t.width}
- (23:00 ~ 23:59 UTC)`,this.lblSettlement.x=.5*(620-this.lblSettlement.width),this.lblSettlement.visible=!0,this.opponentList.dataProvider=[],this.btnRefreshOppo.activated=!1} + (23:00 ~ 23:59 UTC)`,o0t(this.lblSettlement,590),this.lblSettlement.x=.5*(620-this.lblSettlement.width),this.lblSettlement.visible=!0,this.opponentList.dataProvider=[],this.btnRefreshOppo.activated=!1}
- let t=""; - t+=RB.getText("GAME_76","무한 랭킹전"),t+=" ( "+RB.getText("GAME_276","제 ##회 @@일차").replace("##",this.pvpInfo.episode.toString()).replace("@@",this.pvpInfo.round.toString())+" ) ",t+=` [ ${ - RB.getText("GAME_138","## 리그").replace("##",this.getGradeText(this.userPvp.grade))} - ]`,i9t.getInstance().updateTitle(t); - const i=this.userPvp.rank??""; - this.lblPoint.text=RB.getText("COMMON_37","점수")+`: ${ - this.userPvp.point.toLocaleString()} - `+(i?` (${ - RB.getText("GAME_97","##위").replace("##",String(i))} - )`:""),this.lblTicket.text=`${ + d9t.getInstance().updateSeason(this.pvpInfo.episode,this.pvpInfo.round,this.userPvp.grade); + const t=Number(this.userPvp.rank)||0; + this.rankBadge.setRank(t),this.lblPoint.text=Number(this.userPvp.point).toLocaleString(),o0t(this.lblPoint,184),this.lblRank.text=`${ + RB.getText("COMMON_374","내 순위")} + ${ + t>0?RB.getText("GAME_97","##위").replace("##",String(t)):"—"} + `,o0t(this.lblRank,184),this.lblTicket.text=`${
- /${ + / ${
- `; + `,this.lblTicket.scale.set(1),this.lblTicket.width>140&&this.lblTicket.scale.set(140/this.lblTicket.width);
- this.btnBuyTicket.iconText=String(s),this.updateButtonLabels(),this.updateRefreshInfo()} + this.btnBuyTicket.iconText=String(i),this.updateButtonLabels(),this.updateRefreshInfo(),this.timerUpdateCount=29,this.updateTimer()}
- var t; + var t,i;
- i<5?(this.btnRefreshOppo.showIconLabel=!0,this.btnRefreshOppo.showTextLabel=!0,this.btnRefreshOppo.iconLabel.iconScale=.8,this.btnRefreshOppo.iconLabel.iconHidden=!0,this.btnRefreshOppo.iconText=`${ + s<5?(this.btnRefreshOppo.showIconLabel=!0,this.btnRefreshOppo.showTextLabel=!0,this.btnRefreshOppo.iconLabel.iconScale=.55,this.btnRefreshOppo.iconLabel.iconHidden=!0,this.btnRefreshOppo.iconText=`${
- /5`,this.btnRefreshOppo.text=RB.getText("COMMON_60","새로고침")):(this.btnRefreshOppo.showIconLabel=!0,this.btnRefreshOppo.showTextLabel=!0,this.btnRefreshOppo.iconLabel.iconScale=.8,this.btnRefreshOppo.iconLabel.iconHidden=!1,this.btnRefreshOppo.iconText="100",this.btnRefreshOppo.text=RB.getText("COMMON_60","새로고침")),this.btnRefreshOppo.activated=!0} + /5`,this.btnRefreshOppo.text=RB.getText("COMMON_60","새로고침")):(this.btnRefreshOppo.showIconLabel=!0,this.btnRefreshOppo.showTextLabel=!0,this.btnRefreshOppo.iconLabel.iconScale=.55,this.btnRefreshOppo.iconLabel.iconHidden=!1,this.btnRefreshOppo.iconText="100",this.btnRefreshOppo.text=RB.getText("COMMON_60","새로고침")),this.btnRefreshOppo.activated=!(null==(i=this.pvpInfo)?void 0:i.isSettlement),this.fitActionLabels()}
- if(this.userPvp.ticket>=this.userPvp.maxTicket)return void(this.lblTimer.text=RB.getText("GAME_105","충전 완료")); + if(this.userPvp.ticket>=this.userPvp.maxTicket)return void this.setTimerText(RB.getText("GAME_105","충전 완료"));
- if(i<=0)return void(this.lblTimer.text=RB.getText("GAME_107","충전 중")); + if(i<=0)return void this.setTimerText(RB.getText("GAME_107","충전 중"));
- this.lblTimer.text=`${ + this.setTimerText(`${
- `} + `)} + setTimerText(t){ + this.lblTimer.text=t,this.lblTimer.scale.set(1),this.lblTimer.width>140&&this.lblTimer.scale.set(140/this.lblTimer.width)}
MenuArt 1 hunks, 30 statements
- function Aki(t,i){ - const s=new ip; - s.eventMode="none"; - const e=i,[n,h,r]=t<=0?[3815998,3815998,3815998]:1===t?[15907131,16769674,12156183]:2===t?[13226712,16054522,9082783]:[13666900,15841677,9590320]; - return s.moveTo(.24*e,.1*e).lineTo(.76*e,.1*e).lineTo(.72*e,.4*e).bezierCurveTo(.68*e,.58*e,.32*e,.58*e,.28*e,.4*e).closePath().fill(n).moveTo(.24*e,.16*e).bezierCurveTo(.02*e,.16*e,.06*e,.44*e,.3*e,.44*e).stroke({ - color:r,width:.06*e,cap:"round"} - ).moveTo(.76*e,.16*e).bezierCurveTo(.98*e,.16*e,.94*e,.44*e,.7*e,.44*e).stroke({ - color:r,width:.06*e,cap:"round"} - ).rect(.45*e,.56*e,.1*e,.16*e).fill(r).roundRect(.28*e,.72*e,.44*e,.14*e,.03*e).fill(n).roundRect(.34*e,.14*e,.08*e,.28*e,.04*e).fill({ - color:h,alpha:.85} - ),s} - function Ski(t,i){ - const s=new ip; - s.eventMode="none"; - const e=1===t?15907131:2===t?13226712:13666900; - return s.poly([.3*i,0,.44*i,.34*i,.22*i,.34*i]).fill(4886754).poly([.7*i,0,.56*i,.34*i,.78*i,.34*i]).fill(13780270).circle(i/2,.62*i,.36*i).fill(e).circle(i/2,.62*i,.26*i).stroke({ - color:16777215,width:Math.max(1,.05*i),alpha:.55} - ),s} - Qt(Eki,"fishingIcon"),Qt(Aki,"cupShape"),Qt(Ski,"medalShape"); + Qt(Vxi,"fishingIcon"); + const jxi=class extends Ve{ + constructor(t,i,s,e=16777215,n=s){ + super(),Zt(this,"art",null),Zt(this,"line"),this.kind=t,this.size=s,this.line=Vxi(i,n,e),this.line.position.set((s-n)/2,(s-n)/2),this.addChild(this.line),this.eventMode="none",this.refresh()} + get hasArt(){ + return!!this.art} + refresh(){ + if(this.art)return; + const t=xAi.menuIcon(this.kind); + t&&(this.art=new Ye(t),this.art.width=this.art.height=this.size,this.line.visible=!1,this.addChild(this.art))} + setTone(t,i=16777215){ + this.line.tint=t,this.art&&(this.art.tint=i)} + } + ; + Qt(jxi,"MenuArt"); + let Kxi=jxi; + const zxi=class extends Ve{ + constructor(t,i,s,e){ + super(),Zt(this,"onTap",null),Zt(this,"plate",new ip),Zt(this,"icon"),this.size=s,this.icon=new Kxi(t,i,s,16777215,Math.round(.55*s)),this.plate.roundRect(0,0,s,s,12).fill(e),this.plate.eventMode="none",this.addChild(this.plate,this.icon),this.pivot.set(s/2,s/2),this.eventMode="static",this.cursor="pointer",this.hitArea=new Ui(-4,-4,s+8,s+8),this.on("pointerdown",()=>this.scale.set(.92)),this.on("pointerup",()=>this.scale.set(1)),this.on("pointerupoutside",()=>this.scale.set(1)),this.on("pointertap",t=>{ + var i; + t.stopPropagation(),null==(i=this.onTap)||i.call(this)} + ),this.refresh()} + place(t,i){ + this.position.set(t+this.size/2,i+this.size/2)} + refresh(){ + this.icon.refresh(),this.plate.visible=!this.icon.hasArt} + } + ; + Qt(zxi,"MenuArtButton"); + let Yxi=zxi;
FishingMyBoatView 8 hunks, 28 statements
- super(),Zt(this,"heading",new Ve),Zt(this,"dock",new Ve),Zt(this,"water",new ip),Zt(this,"waterMask",new ip),Zt(this,"boat",new Ye),Zt(this,"slots",gAi.map(t=>{ + super(),Zt(this,"head",new nHi),Zt(this,"dock",new Ve),Zt(this,"water",new ip),Zt(this,"waterMask",new ip),Zt(this,"boat",new Ye),Zt(this,"slots",$Ai.map(t=>{
- )),Zt(this,"auto",new gki("자동 장착",146,36,15)),Zt(this,"info",new Ve),Zt(this,"moreStats",new Ve),Zt(this,"moreLabel",oki("",YIi,15,!1)),Zt(this,"expanded",!1),Zt(this,"next",new Ve),Zt(this,"details",new gki("›",44,44,28)),Zt(this,"up",new gki("",kBi-32,48,17)),Zt(this,"upCoin",Mki("gold",20)),Zt(this,"upTitle",oki("",KIi,17)),Zt(this,"upNote",oki("",YIi,15,!1)),Zt(this,"busy",!1),Zt(this,"sig",""),this.water.eventMode="none",this.waterMask.eventMode="none",this.water.mask=this.waterMask,this.boat.anchor.set(.5),this.boat.eventMode="none",this.auto.onTap=()=>{ + )),Zt(this,"auto",new Dxi("자동 장착",132,40,15)),Zt(this,"info",new Ve),Zt(this,"moreStats",new Ve),Zt(this,"moreLabel",Axi("",dxi,15,!1)),Zt(this,"expanded",!1),Zt(this,"next",new Ve),Zt(this,"details",new Dxi("›",44,44,28)),Zt(this,"up",new Dxi("",tHi-32,48,17)),Zt(this,"upCoin",$xi("gold",20)),Zt(this,"upTitle",Axi("",lxi,17)),Zt(this,"upNote",Axi("",dxi,15,!1)),Zt(this,"busy",!1),Zt(this,"sig",""),this.water.eventMode="none",this.waterMask.eventMode="none",this.water.mask=this.waterMask,this.boat.anchor.set(.5),this.boat.eventMode="none",this.auto.onTap=()=>{
- ,this.up.addChild(this.upCoin,this.upTitle,this.upNote),this.dock.addChild(this.water,this.waterMask,this.boat,...this.slots.map(t=>t.root)),this.dock.y=88,this.addChild(this.heading,this.dock,this.auto,this.info,this.next)} + ,this.up.addChild(this.upCoin,this.upTitle,this.upNote),this.dock.addChild(this.water,this.waterMask,this.boat,...this.slots.map(t=>t.root)),this.dock.y=sHi,this.addChild(this.head,this.dock,this.auto,this.info,this.next)}
- this.heading.removeChildren().forEach(t=>t.destroy({ - children:!0} - )); - const a=oki(RBi.names[e],zIi,30); - a.position.set(2,4),aki(a,kBi-170); - const c=oki(`${ + this.auto.visible=o.length>0,this.auto.enabled=!this.busy,this.auto.setText(`자동 장착 ${ + o.length} + `),this.auto.position.set(tHi-132,1),this.head.set(iHi.names[e],`${
- 단계`,YIi,16,!1); - c.position.set(2,52); - const l=new ip,u=c.x+c.width+12; - for(let x=0; - x<RBi.names.length; - x++)l.roundRect(u+15*x,60,11,5,2.5).fill(x<=e?jIi:FIi); - const d=oki(`장비 ★${ - n} - 까지`,jIi,16); - d.position.set(u+15*RBi.names.length+10,52); - const f=oki(`장착 장비 ${ + 단계 · 장착 ${
- `,YIi,16,!1); - f.position.set(kBi-f.width,12),this.heading.addChild(a,c,l,d,f),this.auto.visible=o.length>0,this.auto.enabled=!this.busy,this.auto.setText(`자동 장착 ${ - o.length} - `),this.auto.position.set(kBi-146,43); + ·`,{ + accent:`장비 ★${ + n} + 까지`,rightW:this.auto.visible?144:0} + );
- ),w.y=88+h+14; - const m=oki("장비 효과",zIi,19); + ),l.y=sHi+h+14; + const u=Axi("장비 효과",uxi,18);
- const v=t.gearStats(),_=[...LBi,...wAi.filter(t=>!LBi.includes(t))].filter(t=>v[t]>0),M=_.slice(0,3),b=_.slice(3); + const d=t.gearStats(),f=[...aHi,...HAi.filter(t=>!aHi.includes(t))].filter(t=>d[t]>0),p=f.slice(0,3),w=f.slice(3);
PvpLobbyTab 1 hunks, 27 statements
+ const s0t=3418657,e0t=16773852,n0t=12363404,h0t=16765051; + function r0t(t,i=16773852){ + const s=eD.DEFAULT_OUTLINE_FONT_OPTION_18; + s.fontSize=t,s.stroke={ + color:1774606,width:1.5,join:"round"} + ; + const e=new ZD("",i,s); + return e.eventMode="none",e} + function o0t(t,i){ + t.scale.set(1),t.width>i&&t.scale.set(i/t.width)} + Qt(r0t,"pvpLabel"),Qt(o0t,"fitPvpLabel"); + const a0t=class extends Ve{ + constructor(t){ + super(),Zt(this,"bg",new ip),Zt(this,"labelText",r0t(17,n0t)),Zt(this,"isSelected",!1),Zt(this,"onClick"),this.addChild(this.bg,this.labelText),this.bg.eventMode="none",this.eventMode="static",this.cursor="pointer",this.hitArea=new Ui(0,0,120,42),this.on("pointertap",t=>{ + var i; + t.stopPropagation(),XG.getInstance().playSFX(XG.SFX_NORMAL_CLICK),null==(i=this.onClick)||i.call(this)} + ),this.text=t,this.selected=!1} + set text(t){ + this.labelText.text=t,o0t(this.labelText,104),this.labelText.position.set((120-this.labelText.width)/2,(42-this.labelText.height)/2)} + set selected(t){ + this.isSelected=t,this.bg.clear(),t&&this.bg.roundRect(0,0,120,42,10).fill(7032880).roundRect(20,38,80,3,1.5).fill(h0t),this.labelText.textColor=t?h0t:n0t} + get selected(){ + return this.isSelected} + } + ; + Qt(a0t,"PvpLobbyTab"); + let c0t=a0t;
FishingService 11 hunks, 27 statements
- ...iCi[i],npc:e} + ...BCi[i],npc:e}
- 로 바꿨어요`,hint:"boat"===t.gear?"[장비] › 내 배에서":"[장비] › 낚시 도구에서"} + 로 바꿨어요`,hint:"boat"===t.gear?"[장비] › 내 배에서":"[장비] › 도구에서"}
+ autoSell(t){ + return this.send("autoSell",{ + opts:t} + ,!0)}
- joinContest(){ + joinContest(t){
- } + contestId:t}
- socialJoin(){ + socialJoin(t){
- } + contestId:t}
+ claimAllMilestones(){ + return this.send("claimAllMilestones",{ + } + ,!0)}
- huntStatus(){ - return this.send("hunt/status")} + huntStatus(t){ + return this.send("hunt/status",t?{ + hint:t} + :void 0)} + wsTicket(){ + return this.send("ws/ticket")}
+ huntMakeMat(t,i){ + return this.send("hunt/mat",{ + kind:t,n:i} + )} + huntMats(){ + return this.send("hunt/mats")}
- Qt(DCi,"FishingService"),Zt(DCi,"NO_FLUSH",new Set(["sync","hunt/status","life","trade/poll","trade/emote","trade/cancel","trade/answer"])); + Qt(_Oi,"FishingService"),Zt(_Oi,"NO_FLUSH",new Set(["sync","hunt/status","ws/ticket","life","trade/poll","trade/emote","trade/cancel","trade/answer"]));
BaseService 6 hunks, 26 statements
+ function sN(t,i){ + const s=new AbortController; + let e; + const n=new Promise((i,n)=>{ + e=setTimeout(()=>{ + s.abort(); + const i=new Error(`Request timeout (${ + t} + ms)`); + i.name="AbortError",n(i)} + ,t)} + ); + return Promise.race([i(s.signal),n]).finally(()=>clearTimeout(e))} + Qt(sN,"withRequestTimeout");
- const h=new AbortController,r=setTimeout(()=>h.abort(),t.REQUEST_TIMEOUT_MS);
+ const{ + response:h,body:r} + =await sN(t.REQUEST_TIMEOUT_MS,async t=>{
- ...s,signal:h.signal} + ...s,signal:t}
- let r=await t.json(); + return{ + response:e,body:await e.json()} + } + ); + let o=r;
- finally{ - clearTimeout(r)}
BaseCastle 3 hunks, 26 statements
+ function W1(t,i,s,e,n){ + const h=s-t,r=e-i,o=Math.sqrt(h*h+r*r); + if(o<=n||0===o)return{ + x:s,y:e} + ; + const a=n/o; + return{ + x:t+h*a,y:i+r*a} + } + function V1(t,i,s,e=12,n=450){ + return t*t+i*i<=e*e&&s<=n} + function j1(t){ + return t.filter(t=>Math.abs(t.x-t.startX)>=1||Math.abs(t.y-t.startY)>=1)} + Qt(W1,"clampToCircle"),Qt(V1,"isTap"),Qt(j1,"movedEntries");
- super(),Zt(this,"isCastle",!0),Zt(this,"numShot",1),Zt(this,"hpRegenPerSec",.001),Zt(this,"REGEN_INTERVAL",450),Zt(this,"regenTimer",0),Zt(this,"castleFireList"),Zt(this,"damageFireList"),Zt(this,"currentFireLevel",0),Zt(this,"rangeVisible",!1),Zt(this,"healthBarShowTimer",0),Zt(this,"defaultSkin",""),this.eventMode="dynamic",this.on("pointerdown",this.onPointerDown,this)} + super(),Zt(this,"isCastle",!0),Zt(this,"numShot",1),Zt(this,"hpRegenPerSec",.001),Zt(this,"REGEN_INTERVAL",450),Zt(this,"regenTimer",0),Zt(this,"castleFireList"),Zt(this,"damageFireList"),Zt(this,"currentFireLevel",0),Zt(this,"rangeVisible",!1),Zt(this,"onTap",null),Zt(this,"tapStart",null),Zt(this,"healthBarShowTimer",0),Zt(this,"defaultSkin",""),this.eventMode="dynamic",this.on("pointerdown",this.onPointerDown,this)}
- this.updateAttackRangeCircle(),this.showHealthBarTemporary(225)} + this.handlePress(t)} + handlePress(t){ + this.updateAttackRangeCircle(),this.showHealthBarTemporary(225),this.onTap&&(this.tapStart={ + x:t.global.x,y:t.global.y,t:performance.now()} + ,ES.stage.off("pointerup",this.onPointerUpTap,this),ES.stage.once("pointerup",this.onPointerUpTap,this))} + onPointerUpTap(t){ + const i=this.tapStart; + this.tapStart=null,i&&this.onTap&&V1(t.global.x-i.x,t.global.y-i.y,performance.now()-i.t)&&this.onTap()} + containsCorePoint(t){ + const i=this.getBounds(); + return t.x>=i.x+.15*i.width&&t.x<=i.x+.85*i.width&&t.y>=i.y+.15*i.height&&t.y<=i.y+.95*i.height}
FishingGiantRig 3 hunks, 25 statements
- const oNi=Qt(t=>Math.max(0,Math.min(1,t)),"clamp01"); + const NLi=Qt(t=>Math.max(0,Math.min(1,t)),"clamp01$3");
- return"manta"===t||"turtle"===t?0:"catfish"===t?aNi(.12,.6,i):"eel"===t?1:aNi(.38,.9,i)} + return"manta"===t||"turtle"===t?0:"catfish"===t?LLi(.12,.6,i):"eel"===t||"serpent"===t?1:LLi(.38,.9,i)}
+ const QLi=Qt((t,i)=>Math.atan2(Math.sin(t-i),Math.cos(t-i)),"chainAngDiff"); + function ZLi(t,i,s,e,n,h){ + const r=-.06*e,o=.01*e,a=h-n,c=new Float32Array(113),l=new Float32Array(113),u=new Float32Array(113),d=Qt(t=>i+QLi(s(Math.max(0,t)),i)*LLi(n+.3*a,n+.8*a,t/e),"ang"); + c[6]=t.x,l[6]=t.y,u[6]=d(0); + for(let f=7; + f<=112; + f++){ + const t=r+f*o,i=d(t-o/2); + c[f]=c[f-1]-Math.cos(i)*o,l[f]=l[f-1]-Math.sin(i)*o,u[f]=d(t)} + for(let f=5; + f>=0; + f--){ + const t=r+f*o,i=d(t+o/2); + c[f]=c[f+1]+Math.cos(i)*o,l[f]=l[f+1]+Math.sin(i)*o,u[f]=d(t)} + return{ + x:c,y:l,a:u,b0:r,db:o,n:112} + } + function tDi(t,i){ + const s=Math.max(0,Math.min(t.n,(i-t.b0)/t.db)),e=Math.min(t.n-1,Math.floor(s)),n=s-e; + return{ + x:t.x[e]+(t.x[e+1]-t.x[e])*n,y:t.y[e]+(t.y[e+1]-t.y[e])*n,a:t.a[e]+QLi(t.a[e+1],t.a[e])*n} + } + Qt(ZLi,"whaleChain"),Qt(tDi,"chainAt");
FishingGearBagView 7 hunks, 20 statements
- super(),Zt(this,"filter",null),Zt(this,"onMerge",null),Zt(this,"count",oki("",zIi,18)),Zt(this,"merge",new gki("합성",190,50,16)),Zt(this,"chips",[]),Zt(this,"grid",new Ve),Zt(this,"cards",[]),Zt(this,"shown",[]),Zt(this,"sig",""),this.count.position.set(2,12),this.merge.position.set(kBi-190,0),this.merge.onTap=()=>{ + super(),Zt(this,"filter",null),Zt(this,"onMerge",null),Zt(this,"head",new nHi),Zt(this,"merge",new Dxi("합성",104,42,16)),Zt(this,"chips",[]),Zt(this,"grid",new Ve),Zt(this,"cards",[]),Zt(this,"shown",[]),Zt(this,"sig",""),this.merge.position.set(tHi-104,1),this.merge.onTap=()=>{
- ,this.addChild(this.count,this.merge,this.grid); + ,this.addChild(this.head,this.merge,this.grid);
- s.position.set(i*(t+8),66),s.eventMode="static",s.cursor="pointer",s.hitArea=new Ui(0,0,t,t); + s.position.set(i*(t+8),sHi),s.eventMode="static",s.cursor="pointer",s.hitArea=new Ui(0,0,t,t);
- this.grid.y=66+t+18} + this.grid.y=sHi+t+18}
- this.count.text=`가방 ${ - n.length} - / 400`,this.merge.setPrimary(NAi(i).length>0),this.merge.enabled=LAi(i).length>0; + this.merge.setPrimary(aSi(i).length>0),this.merge.enabled=cSi(i).length>0;
- this.shown=a.map(t=>t.uid),this.cards.forEach((t,i)=>{ + const c=!a.length&&this.filter?` · ${ + QAi[this.filter]} + 없음`:""; + this.head.set("장비 가방",`${ + n.length} + / 400칸 · 같은 장비 3개로 합성${ + c} + `,{ + rightW:116} + ),this.shown=a.map(t=>t.uid),this.cards.forEach((t,i)=>{
- ),a.length||(this.count.text+=this.filter?` · ${ - TAi[this.filter]} - 없음`:"")} + )}
GearCard 2 hunks, 19 statements
- super(),Zt(this,"bg",new ip),Zt(this,"icon",new Ye),Zt(this,"band",new ip),Zt(this,"stars",oki("",jIi,11)),Zt(this,"marks",new Ve),Zt(this,"ring",GIi),this.size=t,this.thinFrame=i,this.eventMode="none",this.icon.anchor.set(.5),this.band.eventMode="none",this.marks.eventMode="none",this.addChild(this.bg,this.icon,this.band,this.stars,this.marks)} + super(),Zt(this,"frame"),Zt(this,"icon",new Ye),Zt(this,"marks",new Ve),Zt(this,"ring",ixi),this.size=t,this.eventMode="none",this.icon.anchor.set(.5),this.marks.eventMode="none",this.frame=new Zki(t),this.addChild(this.frame.back,this.icon,this.frame.front,this.marks)}
- const n=this.size,h=null===t?UIi:DAi[Math.max(1,Math.min(7,i))],r=this.thinFrame?2:Math.max(2,.05*n),o=.2*n,a=Math.max(1,o-r); - if(this.bg.clear(),null!==t&&i>=7&&this.bg.roundRect(-3,-3,n+6,n+6,o+3).fill({ - color:16769126,alpha:.35} - ),this.bg.roundRect(0,0,n,n,o).fill(h).roundRect(r,r,n-2*r,n-2*r,a).fill(null===t?1054234:ZIi),null!==t){ - const t=hAi.gearBackground(i); - this.bg.roundRect(r,r,n-2*r,n-2*r,a).fill(t?{ - texture:t,textureSpace:"local"} - :{ - color:h,alpha:.32} - )} - this.icon.texture=null!==t?lBi(t):s?uBi(s):as.EMPTY,this.icon.alpha=null!==t?e.lock?.45:1:.3,this.icon.scale.set(.7*n/(this.icon.texture.frame.width||128)),this.icon.position.set(n/2,.41*n); - const c=Math.round(.22*n),l=n-r-c; - if(this.band.clear(),this.stars.visible=null!==t&&i>0,this.stars.visible){ - const t=n-r,s=n-r; - this.band.moveTo(r,l).lineTo(t,l).lineTo(t,s-a).arcTo(t,s,t-a,s,a).lineTo(r+a,s).arcTo(r,s,r,s-a,a).closePath().fill({ - color:0,alpha:.28} - ),this.stars.text=bTi(i),this.stars.textSize=Math.max(9,Math.round(.15*n)),this.stars.textColor=i>=7?16769126:jIi,aki(this.stars,n-2*r-4),this.stars.position.set((n-this.stars.width)/2,l+(c-this.stars.height)/2)} - this.marks.removeChildren().forEach(t=>t.destroy({ + const n=this.size,h=.2*n,r=!!(e.on||e.lock||e.kept&&(e.up||e.pick)); + this.frame.set(null===t?null:Math.max(1,i),!r),this.icon.texture=null!==t?N$i(t):s?L$i(s):as.EMPTY,this.icon.alpha=null!==t?e.lock?.45:1:.3,this.icon.scale.set(n*(null!==t?.86:.7)/(this.icon.texture.frame.width||128)),this.icon.position.set(n/2,n*(null!==t?.46:.5)),this.marks.removeChildren().forEach(t=>t.destroy({
SpiritLandDataManager 3 hunks, 18 statements
- Zt(this,"bookList",[]),Zt(this,"bookMap",new Map),Zt(this,"stageList",[]),Zt(this,"stageMap",new Map),Zt(this,"ticket",12),Zt(this,"ticketMax",-1),Zt(this,"purchaseCount",0),Zt(this,"favoritePets",[]),Zt(this,"isDataLoaded",!1),Zt(this,"lastFetchUtcDate",""),Zt(this,"_chapterMax",1)} + Zt(this,"bookList",[]),Zt(this,"bookMap",new Map),Zt(this,"stageList",[]),Zt(this,"stageMap",new Map),Zt(this,"ticket",12),Zt(this,"ticketMax",-1),Zt(this,"freeTicket",-1),Zt(this,"bonusTicket",-1),Zt(this,"purchaseCount",0),Zt(this,"favoritePets",[]),Zt(this,"isDataLoaded",!1),Zt(this,"lastFetchUtcDate",""),Zt(this,"_chapterMax",1)}
+ setTicket(t){ + this.ticket=Number(t.ticket??12),this.ticketMax=Number(t.ticketMax??-1),this.freeTicket=null!=t.free?Number(t.free):-1,this.bonusTicket=null!=t.bonus?Number(t.bonus):-1,this.purchaseCount=Number(t.purchaseCount??0)} + ticketLabel(){ + return this.freeTicket<0||this.ticketMax<=0?`${ + this.ticket} + `:this.bonusTicket>0?`${ + this.freeTicket} + /${ + this.ticketMax} + +${ + this.bonusTicket} + `:`${ + this.freeTicket} + /${ + this.ticketMax} + `}
- if(this.isDataLoaded=!0,this.lastFetchUtcDate=t.getCurrentUtcDateKey(),i.ticket&&(this.ticket=i.ticket.ticket??12,this.ticketMax=i.ticket.ticketMax??-1,this.purchaseCount=i.ticket.purchaseCount??0),Array.isArray(i.favoritePets)&&(this.favoritePets=i.favoritePets.map(t=>Number(t)).filter(t=>Number.isInteger(t)&&t>0)),!i.stages)return; + if(this.isDataLoaded=!0,this.lastFetchUtcDate=t.getCurrentUtcDateKey(),i.ticket&&this.setTicket(i.ticket),Array.isArray(i.favoritePets)&&(this.favoritePets=i.favoritePets.map(t=>Number(t)).filter(t=>Number.isInteger(t)&&t>0)),!i.stages)return;
PageHeader 2 hunks, 17 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:s,lineHeight:Math.round(1.3*s),fontWeight:e?"bolder":"normal"} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:s,lineHeight:Math.round(1.3*s),fontWeight:e?"bolder":"normal"}
+ Qt(Axi,"label"); + const Sxi=16,Txi=14,Cxi=class extends Ve{ + constructor(t){ + super(),Zt(this,"titleL",Axi("",uxi,24)),Zt(this,"arrow",Axi("▾",dxi,Sxi)),Zt(this,"capL",Axi("",dxi,Txi,!1)),Zt(this,"accentL",Axi("",cxi,Txi)),Zt(this,"rightL",Axi("",dxi,15)),Zt(this,"hit",new Ve),Zt(this,"onTitle",null),this.w=t,this.titleL.position.set(2,0),this.capL.position.set(2,34),this.arrow.visible=!1,this.hit.eventMode="static",this.hit.cursor="pointer",this.hit.visible=!1,this.hit.on("pointertap",t=>{ + var i; + t.stopPropagation(),null==(i=this.onTitle)||i.call(this)} + ),this.addChild(this.titleL,this.arrow,this.capL,this.accentL,this.rightL,this.hit)} + set(t,i,s={ + } + ){ + const e=this.w,n=s.rightW??0,h=!!this.onTitle; + this.titleL.text=t,this.rightL.text=s.right??"",this.rightL.position.set(e-2-this.rightL.width,7),Ixi(this.titleL,e-4-(h?24:0)-Math.max(n,s.right?this.rightL.width+16:0)),this.arrow.visible=h,this.arrow.position.set(this.titleL.x+this.titleL.width+6,(31-this.arrow.height)/2+2),this.hit.visible=h,this.hit.hitArea=new Ui(-6,-6,this.titleL.width+40,44),this.capL.text=i,this.accentL.text=s.accent??"",this.accentL.textColor=s.accentColor??cxi,Ixi(this.capL,e-4-this.accentL.width-n),this.accentL.position.set(this.capL.x+this.capL.width+(i&&s.accent?4:0),34)} + } + ; + Qt(Cxi,"PageHeader"); + let Oxi=Cxi;
BaseMap 1 hunks, 15 statements
+ function E7t(t,i,s){ + const e=1/(1+Math.pow(10,(i-t)/400)); + return Math.round(32*(s-e))} + function A7t(t,i,s){ + const e=1e3+(s||0)+1,n=Qt(s=>Math.max(e,t+E7t(t,i,s))-t,"after"); + return{ + win:n(1),lose:n(0)} + } + function S7t(t){ + let i=0,s=0; + for(const e of t)s+=e.maxHp,e.alive&&(i+=Math.max(0,Math.min(e.hp,e.maxHp))); + return s>0?i/s:0} + function T7t(t,i){ + return t>i} + Qt(E7t,"eloDelta"),Qt(A7t,"pvpExpectedPoints"),Qt(S7t,"pvpTeamHpRatio"),Qt(T7t,"pvpTimeoutAllyWins");
Un 12 hunks, 14 statements
- )s&Qst&&(e=e.add(n)),n=n.double(),s>>=Qst; + )s&set&&(e=e.add(n)),n=n.double(),s>>=set;
- h>>=d,n>o&&(n-=u,h+=Qst); + h>>=d,n>o&&(n-=u,h+=set);
- const qst=ast,Xst=cst,Jst=BigInt(0),Qst=BigInt(1),Zst=new WeakMap,tet=new WeakMap; + const Zst=dst,tet=fst,iet=BigInt(0),set=BigInt(1),eet=new WeakMap,net=new WeakMap;
- =i,c=oet<<BigInt(8*o)-ret,l=s.create,u=(0,set.Field)(i.n,i.nBitLength),d=i.uvRatio||((t,i)=>{ + =i,c=det<<BigInt(8*o)-uet,l=s.create,u=(0,ret.Field)(i.n,i.nBitLength),d=i.uvRatio||((t,i)=>{
- return(0,set.mod)(t,e)} + return(0,ret.mod)(t,e)}
- const iet=ost,set=ast,eet=cst,net=cst,het=BigInt(0),ret=BigInt(1),oet=BigInt(2),aet=BigInt(8),cet={ + const het=ust,ret=dst,oet=fst,aet=fst,cet=BigInt(0),uet=BigInt(1),det=BigInt(2),fet=BigInt(8),pet={
- const det=ast,fet=cst,pet=fet.bytesToNumberBE; - function get(t,i){ + const get=dst,met=fst,vet=met.bytesToNumberBE; + function _et(t,i){
- const o=(0,fet.concatBytes)(i,get(i.length,1)),a=get(0,h),c=get(s,2),l=new Array(r),u=e((0,fet.concatBytes)(a,t,c,get(0,1),o)); - l[0]=e((0,fet.concatBytes)(u,get(1,1),o)); + const o=(0,met.concatBytes)(i,_et(i.length,1)),a=_et(0,h),c=_et(s,2),l=new Array(r),u=e((0,met.concatBytes)(a,t,c,_et(0,1),o)); + l[0]=e((0,met.concatBytes)(u,_et(1,1),o));
- const t=[wet(u,l[d-1]),get(d+1,1),o]; + const t=[Met(u,l[d-1]),_et(d+1,1),o];
- ).update(t).update(get(s,2)).update(i).update(get(i.length,1)).digest()} + ).update(t).update(_et(s,2)).update(i).update(_et(i.length,1)).digest()}
- t[i]=(0,det.mod)(pet(n),e)} + t[i]=(0,get.mod)(vet(n),e)}
- Qt(get,"jn"),Qt(wet,"Un"),Qt(met,"Hn"),Qt(vet,"Fn"),Qt(_et,"zn"),Qt(Met,"qn"); + Qt(_et,"jn"),Qt(Met,"Un"),Qt(bet,"Hn"),Qt(yet,"Fn"),Qt(Eet,"zn"),Qt(Aet,"qn");
PVPBattleStatus 4 hunks, 13 statements
- super(),Zt(this,"_showed",!1),Zt(this,"_frameCounter",0),Zt(this,"_allySnap",new Map),Zt(this,"_enemySnap",new Map),Zt(this,"_lblLeague"),Zt(this,"_lblMyName"),Zt(this,"_lblEnemyName"),Zt(this,"_lblMyScore"),Zt(this,"_lblEnemyScore"),Zt(this,"_lblMyRecord"),Zt(this,"_lblEnemyRecord"),Zt(this,"_lblAlly"),Zt(this,"_lblEnemy"),Zt(this,"_lblMeter"),Zt(this,"allyRows",[]),Zt(this,"enemyRows",[]),Zt(this,"_allyBarsG",new ip),Zt(this,"_enemyBarsG",new ip),Zt(this,"bg",new tG),Zt(this,"btnClose",new oB),this.bg.setIndex(6),this.addChild(this.bg),this.bg.width=640,this.bg.height=ES.stageHeight-640-454,this.bg.y=ES.safeHeight-640-this.bg.height,this._buildMatchHeader(),this._buildDamageHeaders(),this._buildAllRows(),this._buildDivider(),this.addChild(this._allyBarsG),this.addChild(this._enemyBarsG),this.btnClose.x=640-this.btnClose.width,this.btnClose.y=5-this.btnClose.height,this.btnClose.onClick=this.onClickGiveUp.bind(this),this.addChild(this.btnClose)} + super(),Zt(this,"_showed",!1),Zt(this,"_frameCounter",0),Zt(this,"_allySnap",new Map),Zt(this,"_enemySnap",new Map),Zt(this,"_lblLeague"),Zt(this,"_lblMyName"),Zt(this,"_lblEnemyName"),Zt(this,"_lblMyScore"),Zt(this,"_lblEnemyScore"),Zt(this,"_lblMyRecord"),Zt(this,"_lblEnemyRecord"),Zt(this,"_lblAlly"),Zt(this,"_lblEnemy"),Zt(this,"_lblMeter"),Zt(this,"allyRows",[]),Zt(this,"enemyRows",[]),Zt(this,"_allyBarsG",new ip),Zt(this,"_enemyBarsG",new ip),Zt(this,"bg",new iG),Zt(this,"btnClose",new aB),Zt(this,"giveUpConfirm",null),this.bg.setIndex(6),this.addChild(this.bg),this.bg.width=640,this.bg.height=ES.stageHeight-640-454,this.bg.y=ES.safeHeight-640-this.bg.height,this._buildMatchHeader(),this._buildDamageHeaders(),this._buildAllRows(),this._buildDivider(),this.addChild(this._allyBarsG),this.addChild(this._enemyBarsG),this.btnClose.x=640-this.btnClose.width,this.btnClose.y=5-this.btnClose.height,this.btnClose.onClick=this.onClickGiveUp.bind(this),this.addChild(this.btnClose)}
- this._allySnap.clear(),this._enemySnap.clear(),this._frameCounter=10,this._clearRows(),this._showed||(this._showed=!0,this.visible=!0,fE.getInstance().add(this.update,this))} + this.btnClose.visible=!0,this._allySnap.clear(),this._enemySnap.clear(),this._frameCounter=10,this._clearRows(),this._showed||(this._showed=!0,this.visible=!0,fE.getInstance().add(this.update,this))}
+ setGiveUpEnabled(t){ + this.btnClose.visible=t} + closeGiveUpConfirm(){ + const t=RKt.getInstance(); + this.giveUpConfirm&&t.onConfirm===this.giveUpConfirm&&(t.onConfirm=null,t.onCancel=null,t.hide()),this.giveUpConfirm=null}
- OKt.getInstance().show(i,()=>{ - t.giveUp()} - ,()=>{ - t.resume()} + if(!t.canGiveUp)return; + const s=Qt(()=>{ + this.giveUpConfirm=null,t.giveUp()} + ,"onYes"); + this.giveUpConfirm=s,RKt.getInstance().show(i,s,()=>{ + this.giveUpConfirm=null,t.resume()}
FishingHarpoonGauge 8 hunks, 13 statements
- wood:14464634,iron:12375785,mithril:10807780} + wood:14464634,iron:12375785,mithril:10807780,bone:15654080,thunder:16767050}
- super(),Zt(this,"shade",new ip),Zt(this,"card",new Ve),Zt(this,"back",new ip),Zt(this,"rail",new ip),Zt(this,"focus",new ip),Zt(this,"trail",new ip),Zt(this,"needle",new Ve),Zt(this,"needleInk",new ip),Zt(this,"feedback",new ip),Zt(this,"weapon",new Ye),Zt(this,"title",oki("",zIi,20)),Zt(this,"target",oki("",YIi,16,!1)),Zt(this,"hint",oki("중앙에 맞춰 멈추세요",YIi,16,!1)),Zt(this,"legends",["good","great","perfect"].map(t=>({ + super(),Zt(this,"shade",new ip),Zt(this,"card",new Ve),Zt(this,"back",new ip),Zt(this,"rail",new ip),Zt(this,"focus",new ip),Zt(this,"trail",new ip),Zt(this,"needle",new Ve),Zt(this,"needleInk",new ip),Zt(this,"feedback",new ip),Zt(this,"weapon",new Ye),Zt(this,"title",Axi("",uxi,20)),Zt(this,"target",Axi("",dxi,16,!1)),Zt(this,"hint",Axi("노란 칸에 맞춰 멈추세요",dxi,16,!1)),Zt(this,"legends",["good","great","perfect"].map(t=>({
- ))),Zt(this,"fireBg",new ip),Zt(this,"fireText",oki("눌러서 던지기",KIi,19)),Zt(this,"cancel",new Ve),Zt(this,"cancelBg",new ip),Zt(this,"cancelText",oki("취소",YIi,17)),Zt(this,"range",YOi),Zt(this,"state","closed"),Zt(this,"startedAt",0),Zt(this,"lockedAt",0),Zt(this,"now",0),Zt(this,"w",1),Zt(this,"railW",1),Zt(this,"cardY",0),Zt(this,"accent",yGi.wood),Zt(this,"currentGrade",null),Zt(this,"lockGrade","miss"),Zt(this,"finishResolve",null),Zt(this,"value",-1),Zt(this,"onFire",null),Zt(this,"onCancel",null),Zt(this,"onKey",Qt(t=>{ + ))),Zt(this,"fireBg",new ip),Zt(this,"fireText",Axi("눌러서 던지기",lxi,19)),Zt(this,"cancel",new Ve),Zt(this,"cancelBg",new ip),Zt(this,"cancelText",Axi("취소",dxi,17)),Zt(this,"range",FIi),Zt(this,"motion",{ + } + ),Zt(this,"state","closed"),Zt(this,"startedAt",0),Zt(this,"lockedAt",0),Zt(this,"now",0),Zt(this,"w",1),Zt(this,"railW",1),Zt(this,"cardY",0),Zt(this,"accent",LFi.wood),Zt(this,"currentGrade",null),Zt(this,"lockGrade","miss"),Zt(this,"finishResolve",null),Zt(this,"value",-1),Zt(this,"onFire",null),Zt(this,"onCancel",null),Zt(this,"onKey",Qt(t=>{
- open(t,i,s,e,n=performance.now(),h=YOi){ - this.close(),this.range=h,this.state="aiming",this.visible=!0,this.eventMode="static",this.cursor="pointer",this.startedAt=this.now=n,this.value=-1,this.currentGrade=null,this.accent=yGi[t],this.weapon.texture=ePi(t),this.title.text=ROi[t].name,this.title.textSize=20,this.title.textColor=this.accent,this.target.text=i,this.hint.text="중앙에 맞춰 멈추세요",this.fireText.text="눌러서 던지기",this.cancel.visible=!0,this.layout(s,e),this.update(n),window.addEventListener("keydown",this.onKey)} + open(t,i,s,e,n=performance.now(),h=FIi,r={ + } + ){ + this.close(),this.range=h,this.motion=r,this.state="aiming",this.visible=!0,this.eventMode="static",this.cursor="pointer",this.startedAt=this.now=n,this.value=-1,this.currentGrade=null,this.accent=LFi[t],this.weapon.texture=kNi(t),this.title.text=pIi[t].name,this.title.textSize=20,this.title.textColor=this.accent,this.target.text=i,this.hint.text="노란 칸에 맞춰 멈추세요",this.fireText.text="눌러서 던지기",this.cancel.visible=!0,this.layout(s,e),this.update(n),window.addEventListener("keydown",this.onKey)}
+ const s=20+i*(1+(this.range.center??0))/2;
- const s=20+i*(1-n.r)/2,e=n.r*i; + const e=Math.max(20,s-h.r*i/2),n=Math.min(20+i,s+h.r*i/2)-e;
- const s=this.range.perfect*i/2,e=this.w/2; + const e=this.range.perfect*i/2,n=s;
- const i=Math.max(0,t-this.startedAt),s=HTi(i),e=HTi(Math.max(0,i-28)); + const i=Math.max(0,t-this.startedAt),s=ECi(i,this.motion),e=ECi(Math.max(0,i-28),this.motion);
PVP2BattleController 10 hunks, 12 statements
- super(),Zt(this,"battleType",v$.PVP2),Zt(this,"PVP_TIME_LIMIT_FRAMES",3600),Zt(this,"pvpStarted",!1),Zt(this,"startToken",0),Zt(this,"speedHelper",new y0t("ef2.pvp2.battleSpeed")),Zt(this,"timerText",null),Zt(this,"hpGauge",new f7t),Zt(this,"introBanner",new g7t),Zt(this,"arena",new _7t),Zt(this,"savedView",null),Zt(this,"allyRoster",[]),Zt(this,"enemyRoster",[]),Zt(this,"spawnedVOs",[]),Zt(this,"pvpTeamVOs",[]),Zt(this,"opTransPoints",null),this.unitScale=t.UNIT_SCALE} + super(),Zt(this,"battleType",_$.PVP2),Zt(this,"PVP_TIME_LIMIT_FRAMES",3600),Zt(this,"pvpStarted",!1),Zt(this,"startToken",0),Zt(this,"resultSent",!1),Zt(this,"speedHelper",new I0t("ef2.pvp2.battleSpeed")),Zt(this,"timerText",null),Zt(this,"hpGauge",new M7t),Zt(this,"introBanner",new y7t),Zt(this,"arena",new k7t),Zt(this,"savedView",null),Zt(this,"allyRoster",[]),Zt(this,"enemyRoster",[]),Zt(this,"spawnedVOs",[]),Zt(this,"pvpTeamVOs",[]),Zt(this,"opTransPoints",null),this.unitScale=t.UNIT_SCALE}
- this.opTransPoints=r,kP.getInstance().setBattleContext(wP.Pvp),EF.getInstance().setDay(),this.battleEnded=!1,this.battleResult=null,this.battleTime=0,this.killCount=0; + this.opTransPoints=r,kP.getInstance().setBattleContext(gP.Pvp),AF.getInstance().setDay(),this.battleEnded=!1,this.resultSent=!1,this.battleResult=null,this.battleTime=0,this.killCount=0;
- await this.setupAllies(),await this.setupEnemies(e,n,h),this.setupEnemyLists(),this.createTimerUI(),xui.getInstance().switchToBattle(this),qdi.zoomEnabled=!1,this.applyZoom(),iU.getInstance().remove(this.execute,this),await M7t(()=>this.arena.show((null==o?void 0:o.grade)??1),t.ARENA_WAIT_MS,(t,i)=>{ + await this.setupAllies(),await this.setupEnemies(e,n,h),this.setupEnemyLists(),this.createTimerUI(),jui.getInstance().switchToBattle(this),dfi.zoomEnabled=!1,this.applyZoom(),sU.getInstance().remove(this.execute,this),g7t.getInstance().setGiveUpEnabled(!1),await x7t(()=>this.arena.show((null==o?void 0:o.grade)??1),t.ARENA_WAIT_MS,(t,i)=>{
- ),a===this.startToken&&(this.pvpStarted=!0,iU.getInstance().add(this.execute,this)))} + ),a===this.startToken&&(this.pvpStarted=!0,sU.getInstance().add(this.execute,this),g7t.getInstance().setGiveUpEnabled(!0)))}
- kP.getInstance().setBattleContext(wP.Normal),this.speedHelper.detachButton(),this.speedHelper.exit(),this.startToken++,this.removeTimerUI(),this.introBanner.stop(),this.arena.clear(),this.pvpStarted=!1,this.opTransPoints=null,this.allyRoster.length=0,this.enemyRoster.length=0; + kP.getInstance().setBattleContext(gP.Normal),this.speedHelper.detachButton(),this.speedHelper.exit(),this.startToken++,g7t.getInstance().closeGiveUpConfirm(),this.removeTimerUI(),this.introBanner.stop(),this.arena.clear(),this.pvpStarted=!1,this.opTransPoints=null,this.allyRoster.length=0,this.enemyRoster.length=0;
- this.hpGauge.setRatios(this.allyHpRatio,this.enemyHpRatio); + if(this.resultSent)return; + this.resultSent=!0,g7t.getInstance().setGiveUpEnabled(!1),g7t.getInstance().closeGiveUpConfirm(),this.hpGauge.setRatios(this.allyHpRatio,this.enemyHpRatio);
+ get canGiveUp(){ + return this.pvpStarted&&!this.battleEnded}
- iU.getInstance().remove(this.execute,this)} + this.canGiveUp&&sU.getInstance().remove(this.execute,this)}
- iU.getInstance().add(this.execute,this)} + this.canGiveUp&&sU.getInstance().add(this.execute,this)}
- this.battleEnded=!0,this.onDefeatCallback()} + this.canGiveUp&&(this.battleEnded=!0,this.onDefeatCallback())}
FishingSettlePanel 6 hunks, 12 statements
- super(),Zt(this,"dim",new ip),Zt(this,"card",new Ve),Zt(this,"bg",cki(wxi,mxi(2,!0),$Ii,null,18)),Zt(this,"cooler",Eki("keepnet",40,jIi)),Zt(this,"away",oki("",YIi,14)),Zt(this,"count",oki("",zIi,40)),Zt(this,"sub",oki("",YIi,14)),Zt(this,"warn",oki("",JIi,13)),Zt(this,"cells",[]),Zt(this,"sum",oki("",jIi,15)),Zt(this,"ok",new gki("확인",200,50,16)),Zt(this,"tl",null),Zt(this,"cardHeight",0),this.dim.eventMode="static",this.cooler.position.set(230,18),this.card.addChild(this.bg,this.cooler,this.away,this.count,this.sub,this.warn,this.sum,this.ok); + super(),Zt(this,"dim",new ip),Zt(this,"card",new Ve),Zt(this,"bg",kxi(WPi,VPi(2,!0),hxi,null,18)),Zt(this,"cooler",new Kxi("net","keepnet",44,cxi,40)),Zt(this,"away",Axi("",dxi,14)),Zt(this,"count",Axi("",uxi,40)),Zt(this,"sub",Axi("",dxi,14)),Zt(this,"warn",Axi("",wxi,13)),Zt(this,"cells",[]),Zt(this,"sum",Axi("",cxi,15)),Zt(this,"ok",new Dxi("확인",200,50,16)),Zt(this,"tl",null),Zt(this,"cardHeight",0),this.dim.eventMode="static",this.cooler.pivot.set(22,22),this.cooler.position.set(250,38),this.card.addChild(this.bg,this.cooler,this.away,this.count,this.sub,this.warn,this.sum,this.ok);
- var i,s; + var i,s,e,n;
- if(e?n.push("더 튼튼한 낚싯줄(장비 › 낚시 도구)이 있으면 잡을 수 있어요"):t.lost>0&&n.push(`줄이 끊어져 ${ + if(h?r.push("더 튼튼한 낚싯줄(장비 › 도구)이 있으면 잡을 수 있어요"):t.lost>0&&r.push(`줄이 끊어져 ${
- G에 자동으로 팔았어요`); + G에 자동으로 팔았어요`),(null==(s=t.autoSold)?void 0:s.count)&&r.push(`자동 팔기로 ${ + t.autoSold.count} + 마리를 ${ + t.autoSold.gold.toLocaleString()} + G에 팔았어요`);
- 마리가 줄을 끊고 달아났어요`:0===t.count?l?"어망이 차서 더 잡지 못했어요. 팔아서 비우면 다시 잡혀요":"어망을 정리했어요":`어망에 담겼어요 · 새 도감 ${ + 마리가 줄을 끊고 달아났어요`:0===t.count?d?"어망이 차서 더 잡지 못했어요. 팔아서 비우면 다시 잡혀요":"어망을 정리했어요":`${ + (null==(e=t.autoSold)?void 0:e.count)?"잡았어요":"어망에 담겼어요"} + · 새 도감 ${
- 종 더`:"",this.sum.position.set((wxi-this.sum.width)/2,o-106),ORi.getInstance().overlay.addChild(this),qG.getInstance().playSFX(qG.SFX_POPUP),null==(s=this.tl)||s.kill(); + 종 더`:"",this.sum.position.set((WPi-this.sum.width)/2,c-106),JRi.getInstance().overlay.addChild(this),this.cooler.refresh(),XG.getInstance().playSFX(XG.SFX_POPUP),null==(n=this.tl)||n.kill();
FishingGearChestView 4 hunks, 12 statements
- super(),Zt(this,"glow",new ip),Zt(this,"chest",new Ye),Zt(this,"title",oki("장비 상자",zIi,30)),Zt(this,"sub",oki("열면 배 장비 하나가 나와요",YIi,16,!1)),Zt(this,"odds",new Ve),Zt(this,"one",xBi("1개 열기",(kBi-12)/2,100,!1)),Zt(this,"ten",xBi("10개 열기",(kBi-12)/2,100,!0)),Zt(this,"bag",oki("",qIi,14,!1)),Zt(this,"bob",null),Zt(this,"busy",!1),Zt(this,"sig",""),this.glow.eventMode="none",this.chest.anchor.set(.5),this.chest.eventMode="none",this.one.btn.onTap=()=>{ + super(),Zt(this,"glow",new ip),Zt(this,"chest",new Ye),Zt(this,"head",new nHi),Zt(this,"odds",new Ve),Zt(this,"one",hHi("1개 열기",(tHi-12)/2,100,!1)),Zt(this,"ten",hHi("10개 열기",(tHi-12)/2,100,!0)),Zt(this,"bob",null),Zt(this,"busy",!1),Zt(this,"sig",""),this.glow.eventMode="none",this.chest.anchor.set(.5),this.chest.eventMode="none",this.one.btn.onTap=()=>{
- this.addChild(this.glow,this.chest,this.title,this.sub,this.odds,this.one.btn,this.ten.btn,this.bag)} + this.addChild(this.head,this.glow,this.chest,this.odds,this.one.btn,this.ten.btn)}
- this.sig=h; - const r=Math.max(8,(n-612)/2),o=hAi.gearChest(!1)??lBi(55); + this.sig=h,this.head.set("장비 상자","열면 배 장비 하나가 나와요",{ + right:`가방 ${ + (null==(i=e.gearBox)?void 0:i.items.length)??0} + / 400`} + ); + const r=sHi+Math.max(8,(n-sHi-488)/2),o=xAi.gearChest(!1)??N$i(55);
- let a=r+300+20; - this.title.position.set((kBi-this.title.width)/2,a),a+=40,this.sub.position.set((kBi-this.sub.width)/2,a),a+=50,this.odds.position.set((kBi-this.odds.width)/2,a),a+=64,this.one.btn.position.set(0,a),this.ten.btn.position.set((kBi-12)/2+12,a),this.one.set(100,e.gold,this.busy),this.ten.set(1e3,e.gold,this.busy),a+=118,this.bag.text=`가방 ${ - (null==(s=e.gearBox)?void 0:s.items.length)??0} - / 400`,this.bag.position.set((kBi-this.bag.width)/2,a)} + let a=r+300+24; + this.odds.position.set((tHi-this.odds.width)/2,a),a+=64,this.one.btn.position.set(0,a),this.ten.btn.position.set((tHi-12)/2+12,a),this.one.set(100,e.gold,this.busy),this.ten.set(1e3,e.gold,this.busy)}
PVPBattlePopup 5 hunks, 11 statements
- super(),Zt(this,"bg"),Zt(this,"btnClose",new mqt),Zt(this,"lblTitle",new QD("",16777215,sD.DEFAULT_OUTLINE_FONT_OPTION_18)),Zt(this,"tapBattle",new Rqt("대전",120)),Zt(this,"tapRank",new Rqt("랭킹",120)),Zt(this,"tapHistory",new Rqt("기록",120)),Zt(this,"tapHOF",new Rqt("전당",120)),Zt(this,"tapReward",new Rqt("보상",120)),Zt(this,"tabs"),Zt(this,"_currentSubView",null),Zt(this,"subViewY",0),this.tabs=[this.tapBattle,this.tapRank,this.tapHistory,this.tapHOF,this.tapReward],this.bg=new eE({ + super(),Zt(this,"bg"),Zt(this,"btnClose",new bqt),Zt(this,"lblTitle",r0t(26)),Zt(this,"lblSeason",r0t(14,n0t)),Zt(this,"leagueBg",new ip),Zt(this,"lblLeague",r0t(18,h0t)),Zt(this,"tabTrack",new ip),Zt(this,"tapBattle",new c0t("대전")),Zt(this,"tapRank",new c0t("랭킹")),Zt(this,"tapHistory",new c0t("기록")),Zt(this,"tapHOF",new c0t("전당")),Zt(this,"tapReward",new c0t("보상")),Zt(this,"tabs"),Zt(this,"_currentSubView",null),Zt(this,"subViewY",0),this.tabs=[this.tapBattle,this.tapRank,this.tapHistory,this.tapHOF,this.tapReward],this.bg=new eE({
- ),this.addChild(this.bg),this.bg.width=640,this.y=Math.min(ES.safeHeight-750,ES.viewMainY),this.bg.height=ES.safeHeight-this.y-Aui.getInstance().height,this.btnClose.x=this.bg.width-this.btnClose.width-2,this.btnClose.y=-this.btnClose.height-1,this.btnClose.onClick=this.onCloseBtnClick.bind(this),this.addChild(this.btnClose),this.lblTitle.text=RB.getText("GAME_76","무한 랭킹전"),this.lblTitle.x=15,this.lblTitle.y=52,this.addChild(this.lblTitle),this.updateLayout(),this.tapBattle.onClick=()=>this.selectTab(0),this.tapRank.onClick=()=>this.selectTab(1),this.tapHistory.onClick=()=>this.selectTab(2),this.tapHOF.onClick=()=>this.selectTab(3),this.tapReward.onClick=()=>this.selectTab(4),this.subViewY=this.tapBattle.y+this.tapBattle.height+5,this.on("added",this.onAdded.bind(this)),this.on("removed",this.onRemoved.bind(this))} + ),this.addChild(this.bg),this.bg.width=640,this.y=Math.min(ES.safeHeight-750,ES.viewMainY),this.bg.height=ES.safeHeight-this.y-Gui.getInstance().height,this.btnClose.x=this.bg.width-this.btnClose.width-2,this.btnClose.y=-this.btnClose.height-1,this.btnClose.onClick=this.onCloseBtnClick.bind(this),this.addChild(this.btnClose),this.lblTitle.text=RB.getText("GAME_76","무한 랭킹전"),this.lblTitle.position.set(24,49),this.lblSeason.position.set(25,83),this.leagueBg.roundRect(480,53,132,44,12).fill(s0t),this.leagueBg.eventMode="none",this.tabTrack.roundRect(15,110,610,50,13).fill(1446415),this.tabTrack.eventMode="none",this.addChild(this.lblTitle,this.lblSeason,this.leagueBg,this.lblLeague,this.tabTrack),this.updateLayout(),this.tapBattle.onClick=()=>this.selectTab(0),this.tapRank.onClick=()=>this.selectTab(1),this.tapHistory.onClick=()=>this.selectTab(2),this.tapHOF.onClick=()=>this.selectTab(3),this.tapReward.onClick=()=>this.selectTab(4),this.subViewY=172,this.on("added",this.onAdded.bind(this)),this.on("removed",this.onRemoved.bind(this))}
- let t=5; - for(const i of this.tabs)i.width=124,i.x=t,i.y=85,this.addChild(i),t+=i.width+2} + this.tabs.forEach((t,i)=>{ + t.position.set(19+121*i,114),this.addChild(t)} + ),o0t(this.lblTitle,440)}
- let t=RB.getText("GAME_76","무한 랭킹전"); + this.lblTitle.text=RB.getText("GAME_76","무한 랭킹전");
- i&&(t+=" ( "+RB.getText("GAME_276","제 ##회 @@일차").replace("##",i.episode.toString()).replace("@@",i.round.toString())+" ) ",t+=` [ ${ - RB.getText("GAME_138","## 리그").replace("##",this.getGradeText(i.userPvp.grade))} - ]`),this.lblTitle.text=t,this.tapBattle.text=RB.getText("GAME_101","대전"),this.tapRank.text=RB.getText("COMMON_20","랭킹"),this.tapHistory.text=RB.getText("COMMON_39","기록"),this.tapHOF.text=RB.getText("GAME_108","전당"),this.tapReward.text=RB.getText("COMMON_22","보상")} - updateTitle(t){ - this.lblTitle.text=t} + t&&this.updateSeason(t.episode,t.round,t.userPvp.grade),this.tapBattle.text=RB.getText("GAME_101","대전"),this.tapRank.text=RB.getText("COMMON_20","랭킹"),this.tapHistory.text=RB.getText("COMMON_39","기록"),this.tapHOF.text=RB.getText("GAME_108","전당"),this.tapReward.text=RB.getText("COMMON_22","보상")} + updateSeason(t,i,s){ + this.lblTitle.text=RB.getText("GAME_76","무한 랭킹전"),o0t(this.lblTitle,440),this.lblSeason.text=RB.getText("GAME_276","제 ##회 @@일차").replace("##",String(t)).replace("@@",String(i)),o0t(this.lblSeason,440),this.lblLeague.text=RB.getText("GAME_138","## 리그").replace("##",this.getGradeText(s)),o0t(this.lblLeague,108),this.lblLeague.position.set(480+(132-this.lblLeague.width)/2,53+(44-this.lblLeague.height)/2)}
FishCard 6 hunks, 10 statements
- Qt(oki,"label"),Qt(aki,"fitLabel"),Qt(cki,"panel"); + Qt(Ixi,"fitLabel"),Qt(kxi,"panel");
- super(),Zt(this,"bg",new ip),Zt(this,"icon",new Ye),Zt(this,"band",new ip),Zt(this,"stars",oki("",jIi,11)),Zt(this,"marks",new Ve),Zt(this,"fade",1),Zt(this,"unknown",!1),Zt(this,"badge",new Ve),Zt(this,"badgeBg",new ip),Zt(this,"badgeText",oki("",16777215,12)),Zt(this,"starsAlways",!1),Zt(this,"mystery",oki("?",YIi,16)),this.size=t,this.minimal=i,this.banded=s,this.eventMode="none",this.icon.anchor.set(.5),this.mystery.visible=!1,this.band.eventMode="none",this.marks.eventMode="none",this.badge.addChild(this.badgeBg,this.badgeText),this.addChild(this.bg,this.icon,this.mystery,this.band,this.stars,this.badge,this.marks)} + super(),Zt(this,"bg",new ip),Zt(this,"icon",new Ye),Zt(this,"band",new ip),Zt(this,"stars",Axi("",cxi,11)),Zt(this,"marks",new Ve),Zt(this,"fade",1),Zt(this,"unknown",!1),Zt(this,"badge",new Ve),Zt(this,"badgeBg",new ip),Zt(this,"badgeText",Axi("",16777215,12)),Zt(this,"starsAlways",!1),Zt(this,"mystery",Axi("?",dxi,16)),Zt(this,"frame"),this.size=t,this.minimal=i,this.banded=s,this.eventMode="none",this.icon.anchor.set(.5),this.mystery.visible=!1,this.band.eventMode="none",this.marks.eventMode="none",this.badge.addChild(this.badgeBg,this.badgeText),this.frame=i?null:new Zki(t),this.frame?this.addChild(this.bg,this.frame.back,this.icon,this.mystery,this.frame.front,this.band,this.stars,this.badge,this.marks):this.addChild(this.bg,this.icon,this.mystery,this.band,this.stars,this.badge,this.marks)}
- const n=this.size,h=e?eki[0]:eki[Math.min(5,i)],r=Math.max(2,.05*n),o=n*(this.minimal?.12:.2); - this.bg.clear(); + null!==t&&i>0&&(i=cTi(t)); + const n=this.size,h=e?Mxi[0]:Mxi[Math.max(1,Math.min(9,i))],r=Math.max(2,.05*n),o=n*(this.minimal?.12:.2),a=!!this.frame&&null!==t&&!e&&i>0; + this.bg.clear(),this.frame&&(this.frame.back.visible=this.frame.front.visible=a,a&&(this.frame.set(i),this.frame.showStars(n>=40||this.starsAlways)));
- if(this.minimal?this.bg.roundRect(0,0,n,n,o).fill(a):this.bg.roundRect(0,0,n,n,o).fill(h).roundRect(r,r,n-2*r,n-2*r,Math.max(1,o-r)).fill(a),this.icon.visible=null!==t,this.mystery.visible=null===t&&i>0,this.mystery.visible&&(this.mystery.textSize=Math.round(.42*n),this.mystery.position.set((n-this.mystery.width)/2,.43*n-this.mystery.height/2)),this.unknown=e,null!==t){ + if(this.minimal?this.bg.roundRect(0,0,n,n,o).fill(c):a||this.bg.roundRect(0,0,n,n,o).fill(h).roundRect(r,r,n-2*r,n-2*r,Math.max(1,o-r)).fill(c),this.icon.visible=null!==t,this.mystery.visible=null===t&&i>0,this.mystery.visible&&(this.mystery.textSize=Math.round(.42*n),this.mystery.position.set((n-this.mystery.width)/2,.43*n-this.mystery.height/2)),this.unknown=e,null!==t){
- const i=n*(this.banded?.7:.8)/100; - this.icon.scale.set(i),this.icon.position.set(n/2,n*(this.banded?.41:.46)),this.icon.tint=e?0:16777215} - if(this.stars.visible=(n>=40||this.starsAlways)&&(e||i>0),this.stars.text=e?"?":bTi(i),this.stars.textColor=e?qIi:jIi,this.band.clear(),this.banded&&this.stars.visible){ + const i=n*(a?.86:this.banded?.7:.8)/100; + this.icon.scale.set(i),this.icon.position.set(n/2,n*(a?.46:this.banded?.41:.46)),this.icon.tint=e?0:16777215} + if(this.stars.visible=!a&&(n>=40||this.starsAlways)&&(e||i>0),this.stars.text=e?"?":tCi(i),this.stars.textColor=e?fxi:cxi,this.band.clear(),this.banded&&this.stars.visible&&!a){
- this.icon.alpha=(this.unknown?.8:1)*this.fade} + this.frame&&(this.frame.back.alpha=this.frame.front.alpha=this.fade),this.icon.alpha=(this.unknown?.8:1)*this.fade}
InventoryPetTicketView 3 hunks, 9 statements
- let n=`${ + r=`${
- e.ticket} - `; - e.ticketMax>0&&(n+=`/${ - e.ticketMax} - `),r=n+", "+`${ + e.ticketLabel()} + , ${
- if((null==(i=null==(t=h.body)?void 0:t.inventory)?void 0:i.inventory)?DYt.getInstance().setData(h.body.inventory):DYt.getInstance().setData(h.body),"userSpiritTickets"in h.body){ - const t=wG.getInstance(); - t.ticket=Number(h.body.userSpiritTickets.ticket),t.ticketMax=Number(h.body.userSpiritTickets.ticketMax??-1),t.purchaseCount=Number(h.body.userSpiritTickets.purchaseCount)} + (null==(i=null==(t=h.body)?void 0:t.inventory)?void 0:i.inventory)?FYt.getInstance().setData(h.body.inventory):FYt.getInstance().setData(h.body),"userSpiritTickets"in h.body&&mG.getInstance().setTicket(h.body.userSpiritTickets);
MiniAscentCardPickPopup 8 hunks, 8 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:32,lineHeight:38} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:32,lineHeight:38}
- ...sD.DEFAULT_FONT_OPTION_15,fontSize:12,lineHeight:16} + ...eD.DEFAULT_FONT_OPTION_15,fontSize:12,lineHeight:16}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:18,lineHeight:24} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:18,lineHeight:24}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:28,lineHeight:34} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:28,lineHeight:34}
- ...sD.DEFAULT_FONT_OPTION_15,fontSize:13,lineHeight:18} + ...eD.DEFAULT_FONT_OPTION_15,fontSize:13,lineHeight:18}
- ...sD.DEFAULT_FONT_OPTION_15,fontSize:14} + ...eD.DEFAULT_FONT_OPTION_15,fontSize:14}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:20,lineHeight:22,fontWeight:"900",stroke:{ + ...eD.DEFAULT_FONT_OPTION_16,fontSize:20,lineHeight:22,fontWeight:"900",stroke:{
- ...sD.DEFAULT_FONT_OPTION_15,fontSize:12,lineHeight:16} + ...eD.DEFAULT_FONT_OPTION_15,fontSize:12,lineHeight:16}
FishingHarpoonFx 3 hunks, 7 statements
- const WPi=.115,VPi=Qt(t=>Math.max(0,Math.min(1,t)),"clamp01$1"),jPi=Qt(t=>{ + const gLi=.115,mLi=Qt(t=>Math.max(0,Math.min(1,t)),"clamp01$4"),vLi=Qt(t=>{
+ ,bone:{ + tier:3,trail:15784376,water:14674401,accent:15759988} + ,thunder:{ + tier:4,trail:16770922,water:16774328,accent:12165887}
- ,this.impactAngle=a.angle,this.bodyAngle=o.angle,this.trail.clear(),this.pressure.position.copyFrom(o),this.pressureEcho.position.copyFrom(o),this.impactGlow.position.copyFrom(o),this.pressure.visible=!this.miss,this.pressureEcho.visible=!this.miss&&2===this.material.tier,this.impactGlow.visible=!this.miss&&this.material.tier>0,this.pinMark.visible=this.blood.visible=this.bloodWisp.visible=!this.miss,this.result.visible=this.showResult,this.miss||this.target.hit(this.power),null==(n=(e=this.feedback).impact)||n.call(e,this.power),this.startSpray(o)} - const c=Math.max(0,r-.155),l=VPi(c/1.4),u=Math.atan2(Math.sin(o.angle-this.bodyAngle),Math.cos(o.angle-this.bodyAngle)),d=this.impactAngle+(this.miss?0:u),f=this.miss?10*jPi(c/.12):7.2+(1.2+.4*this.material.tier)*jPi((c-.04)/.04),p=this.miss?this.impactPoint:o,g=this.miss?0:Math.sin(90*Math.max(0,c-.035))*(.14-.04*this.material.tier)*Math.exp(20*-Math.max(0,c-.035)),w=(1-jPi((c-(this.miss?.14:.95))/.4))*Math.min(1,o.alpha/.15),m=d+g; + ,this.impactAngle=a.angle,this.bodyAngle=o.angle,this.trail.clear(),this.pressure.position.copyFrom(o),this.pressureEcho.position.copyFrom(o),this.impactGlow.position.copyFrom(o),this.pressure.visible=!this.miss,this.pressureEcho.visible=!this.miss&&this.material.tier>=2,this.impactGlow.visible=!this.miss&&this.material.tier>0,this.pinMark.visible=this.blood.visible=this.bloodWisp.visible=!this.miss,this.result.visible=this.showResult,this.miss||this.target.hit(this.power),null==(n=(e=this.feedback).impact)||n.call(e,this.power),this.startSpray(o)} + const c=Math.max(0,r-.155),l=mLi(c/1.4),u=Math.atan2(Math.sin(o.angle-this.bodyAngle),Math.cos(o.angle-this.bodyAngle)),d=this.impactAngle+(this.miss?0:u),f=this.miss?10*vLi(c/.12):7.2+(1.2+.4*this.material.tier)*vLi((c-.04)/.04),p=this.miss?this.impactPoint:o,w=this.miss?0:Math.sin(90*Math.max(0,c-.035))*Math.max(.03,.14-.04*this.material.tier)*Math.exp(20*-Math.max(0,c-.035)),g=(1-vLi((c-(this.miss?.14:.95))/.4))*Math.min(1,o.alpha/.15),m=d+w;
GearHeader 1 hunks, 7 statements
- const kBi=ORi.CONTENT_W,RBi=VSi.find(t=>"boat"===t.key); + const tHi=JRi.CONTENT_W,iHi=STi.find(t=>"boat"===t.key),sHi=66,eHi=class extends Oxi{ + constructor(){ + super(tHi)} + } + ; + Qt(eHi,"GearHeader"); + let nHi=eHi;
MiniAscentRelicsPage 7 hunks, 7 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:e,lineHeight:e+5} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:e,lineHeight:e+5}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:18} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:18}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:20,lineHeight:22,fontWeight:"900",stroke:{ + ...eD.DEFAULT_FONT_OPTION_16,fontSize:20,lineHeight:22,fontWeight:"900",stroke:{
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:16,lineHeight:19,fontWeight:"900",stroke:{ + ...eD.DEFAULT_FONT_OPTION_16,fontSize:16,lineHeight:19,fontWeight:"900",stroke:{
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:17,lineHeight:20,fontWeight:"900",stroke:{ + ...eD.DEFAULT_FONT_OPTION_16,fontSize:17,lineHeight:20,fontWeight:"900",stroke:{
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:s,lineHeight:s+5} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:s,lineHeight:s+5}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:23} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:23}
SpriteBattleReadyPopup 2 hunks, 6 statements
- )`,this.lblTryCount.textColor=c<=0?16729156:6728243,this.lblTicket.text=`${ - e.ticket} - `; + )`,this.lblTryCount.textColor=c<=0?16729156:6728243,this.lblTicket.text=e.ticketLabel();
- !1!==i.success?(i.body&&(EG.setUserInfo(i.body),i.body.spirit&&t.setData(i.body.spirit),xH.getInstance().updateAll()),this.lblTicket.text=`${ - t.ticket} - `,this.updateLayout(),N6t.getInstance().setData(),vH.getInstance().showMessage(RB.getValueReplace("GAME_601","##",3,"티켓 3개를 구매하였습니다."))):vH.getInstance().showMessage(RB.getText("COMMON_467","구매 실패했습니다."))} + !1!==i.success?(i.body&&(AG.setUserInfo(i.body),i.body.spirit&&t.setData(i.body.spirit),PH.getInstance().updateAll()),this.lblTicket.text=t.ticketLabel(),this.updateLayout(),$6t.getInstance().setData(),_H.getInstance().showMessage(RB.getValueReplace("GAME_601","##",3,"티켓 3개를 구매하였습니다."))):_H.getInstance().showMessage(RB.getText("COMMON_467","구매 실패했습니다."))}
GuildWarBattlePopupV3 6 hunks, 6 statements
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:13} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:13}
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:13} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:13}
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:13} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:13}
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:9} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:9}
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:11} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:11}
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:9} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:9}
FishingMainPage 6 hunks, 6 statements
- super(),Zt(this,"tabId","fish"),Zt(this,"scrollInShell",!1),Zt(this,"fullBleed",!0),Zt(this,"onOpenMap",null),Zt(this,"scene",new $Di(ORi.BLEED_W,this.H)),Zt(this,"hud",new jGi),Zt(this,"fishBtn",new gki("물고기",76,34,13)),Zt(this,"mapBtn",new gki("해도",64,34,13)),Zt(this,"bite",new Ve),Zt(this,"popLayer",new Ve),Zt(this,"fxCatch",new Ve),Zt(this,"fishPanel",new Ve),Zt(this,"panelBg",new ip),Zt(this,"candTitle",oki("이곳의 물고기",zIi,16)),Zt(this,"candCount",oki("",YIi,13)),Zt(this,"candClose",oki("✕",YIi,20)),Zt(this,"candCards",[]),Zt(this,"candBadges",[]),Zt(this,"candPool",[]),Zt(this,"candMore",oki("",YIi,12,!1)),Zt(this,"tip",new YGi),Zt(this,"settling",!1),Zt(this,"awayRetryAt",0),Zt(this,"netSellBtn",new gki("가득 참",92,26,12)),Zt(this,"netWasFull",!1),Zt(this,"othersAt",-1),Zt(this,"t0",performance.now()),Zt(this,"unsub",[]),Zt(this,"journeyBox",new Ve),Zt(this,"journeySig",""),Zt(this,"hubPanel",new Ve),Zt(this,"hubId",""),Zt(this,"logPanel",new Ve),Zt(this,"plunder"),Zt(this,"boatUi"),Zt(this,"huntUi"),Zt(this,"tradeUi"),Zt(this,"boatMenu"),Zt(this,"trackerTask",null),Zt(this,"progressHoldUntil",0),Zt(this,"lastWanted",[]),Zt(this,"dailyBusy",!1),Zt(this,"greeted",!1),Zt(this,"hubNearNow",!1),Zt(this,"depthOnClose",!1),Zt(this,"hubBusy",new Set),Zt(this,"hubPraise",""),Zt(this,"hubDrawn",""),Zt(this,"abandonArm",""),Zt(this,"logDrawn",""),Zt(this,"biteMark",new Ye(as.EMPTY)),Zt(this,"visitorPanel",new Ve),Zt(this,"visitorKey",""),Zt(this,"visitorSpot",""),Zt(this,"swallowTap",!1),Zt(this,"coach",new Txi),Zt(this,"sailTipAnchor",Qt(()=>this.scene.idleInSail?t.anchorOf(this.scene.boatSprite,!1)():null,"sailTipAnchor")),Zt(this,"realTutBackend",{ + super(),Zt(this,"tabId","fish"),Zt(this,"scrollInShell",!1),Zt(this,"fullBleed",!0),Zt(this,"onOpenMap",null),Zt(this,"scene",new BUi(JRi.BLEED_W,this.H)),Zt(this,"hud",new w$i),Zt(this,"fishBtn",new Dxi("물고기",76,34,13)),Zt(this,"mapBtn",new Yxi("map","map",56,nxi)),Zt(this,"bite",new Ve),Zt(this,"popLayer",new Ve),Zt(this,"fxCatch",new Ve),Zt(this,"fishPanel",new Ve),Zt(this,"panelBg",new ip),Zt(this,"candTitle",Axi("이곳의 물고기",uxi,16)),Zt(this,"candCount",Axi("",dxi,13)),Zt(this,"candClose",Axi("✕",dxi,20)),Zt(this,"candCards",[]),Zt(this,"candBadges",[]),Zt(this,"candPool",[]),Zt(this,"candMore",Axi("",dxi,12,!1)),Zt(this,"tip",new v$i),Zt(this,"settling",!1),Zt(this,"awayRetryAt",0),Zt(this,"netSellBtn",new Dxi("가득 참",92,26,12)),Zt(this,"netWasFull",!1),Zt(this,"othersAt",-1),Zt(this,"t0",performance.now()),Zt(this,"unsub",[]),Zt(this,"journeyBox",new Ve),Zt(this,"journeySig",""),Zt(this,"hubPanel",new Ve),Zt(this,"hubId",""),Zt(this,"logPanel",new Ve),Zt(this,"plunder"),Zt(this,"boatUi"),Zt(this,"huntUi"),Zt(this,"tradeUi"),Zt(this,"boatMenu"),Zt(this,"trackerTask",null),Zt(this,"progressHoldUntil",0),Zt(this,"lastWanted",[]),Zt(this,"dailyBusy",!1),Zt(this,"greeted",!1),Zt(this,"hubNearNow",!1),Zt(this,"depthOnClose",!1),Zt(this,"hubBusy",new Set),Zt(this,"hubPraise",""),Zt(this,"hubDrawn",""),Zt(this,"abandonArm",""),Zt(this,"logDrawn",""),Zt(this,"biteMark",new Ye(as.EMPTY)),Zt(this,"visitorPanel",new Ve),Zt(this,"visitorKey",""),Zt(this,"visitorSpot",""),Zt(this,"swallowTap",!1),Zt(this,"coach",new ZPi),Zt(this,"sailTipAnchor",Qt(()=>this.scene.idleInSail?t.anchorOf(this.scene.boatSprite,!1)():null,"sailTipAnchor")),Zt(this,"realTutBackend",{
- ,this.fishBtn.setPrimary(!1),this.mapBtn.setPrimary(!1),this.mapBtn.onTap=()=>{ + ,this.fishBtn.setPrimary(!1),this.mapBtn.onTap=()=>{
- this.scene.resize(t,i),this.mapBtn.position.set(t-64-10,10),this.fishBtn.position.set(t-64-10-76-6,10),this.fishPanel.hitArea=new Ui(0,0,t,i),this.fxCatch.hitArea=new Ui(0,0,t,i),this.candClose.position.set(t-34,12),this.hubPanel.visible&&this.renderHub(!0),this.logPanel.visible&&this.renderLog(),this.visitorPanel.visible&&this.renderVisitor(),this.plunder.layout(),this.tradeUi.layout(),this.boatUi.layout(),this.huntUi.layout(),this.tut.active&&this.tut.layout()} + this.scene.resize(t,i),this.mapBtn.refresh(),this.mapBtn.place(t-56-10,-1),this.fishBtn.position.set(t-56-10-76-8,10),this.fishPanel.hitArea=new Ui(0,0,t,i),this.fxCatch.hitArea=new Ui(0,0,t,i),this.candClose.position.set(t-34,12),this.hubPanel.visible&&this.renderHub(!0),this.logPanel.visible&&this.renderLog(),this.visitorPanel.visible&&this.renderVisitor(),this.plunder.layout(),this.tradeUi.layout(),this.boatUi.layout(),this.huntUi.layout(),this.tut.active&&this.tut.layout()}
- )),h.label=r,r&&h.addChild(vki(r,16777215,eki[e.s.star],10,5))),h.position.set(t.x+(KGi-h.width)/2,t.y-8)} + )),h.label=r,r&&h.addChild(Uxi(r,16777215,Mxi[e.s.tier],10,5))),h.position.set(t.x+(g$i-h.width)/2,t.y-8)}
- h.star} + h.tier}
- tex:hAi.fish(t.id),name:RSi(t.id).name,star:t.star,grade:t.grade??0,kg:t.kg,dex:xIi.getInstance().dexCount()} + tex:xAi.fish(t.id),name:uTi(t.id).name,star:cTi(t.id),grade:t.grade??0,kg:t.kg,dex:Oki.getInstance().dexCount()}
FloatingLayer 1 hunks, 5 statements
+ } + ; + Qt(Vci,"FloatingLayer"); + let jci=Vci; + const Kci=class extends $S{
GodBlessToast 1 hunks, 5 statements
- Qt(wdi,"rollElfSecretSkippedWaves"); + function kdi(t,i){ + return t>=10&&i>=3e4} + function xdi(t,i,s){ + return t&&t.wave&&void 0!==t.numRevive?t.numRevive!==i?"clearStale":"restoreLocal":s?"restoreServer":"none"} + Qt(Idi,"rollElfSecretSkippedWaves"),Qt(kdi,"shouldAutoSaveOnWaveClear"),Qt(xdi,"resolveBootGameOver");
FishingAvatarMaker 5 hunks, 5 statements
- ...wOi} + ...ZOi}
- ...wOi,skin:0,hair:0,hairColor:0,feats:[]} + ...ZOi,skin:0,hair:0,hairColor:0,feats:[]}
- ...wOi} + ...ZOi}
- ...wOi,race:i,sex:1,skin:0,hair:0,hairColor:cOi[i],feats:[]} + ...ZOi,race:i,sex:1,skin:0,hair:0,hairColor:KOi[i],feats:[]}
- ...wOi,race:this.draft.race,sex:i,skin:0,hair:0,hairColor:this.draft.hairColor,feats:[]} + ...ZOi,race:this.draft.race,sex:i,skin:0,hair:0,hairColor:this.draft.hairColor,feats:[]}
BoatRepairFx 2 hunks, 5 statements
+ ,bone:{ + shaft:15128244,shaftHi:16774621,head:16116952,headDark:11023418,fin:11739180,glow:16747130} + ,thunder:{ + shaft:4995988,shaftHi:10127082,head:16770138,headDark:12159504,fin:16765498,glow:16773242}
- ,fPi=Qt(t=>Math.min(1,Math.max(0,t)),"clamp01$2"),pPi=Qt((t,i,s)=>fPi((t-i)/s),"seg"),gPi=Qt(t=>1-(1-t)**3,"outCubic$1"),wPi=Qt((t,i)=>{ + ,FNi=Qt(t=>Math.min(1,Math.max(0,t)),"clamp01$5"),$Ni=Qt((t,i,s)=>FNi((t-i)/s),"seg"),HNi=Qt(t=>1-(1-t)**3,"outCubic$1"),WNi=Qt((t,i)=>{
Archery2GameScene 4 hunks, 4 statements
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fill:16777215} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fill:16777215}
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_20,fill:16766720} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_20,fill:16766720}
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fill:16737792} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fill:16737792}
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_20,fill:16777215} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_20,fill:16777215}
FishGridRow 4 hunks, 4 statements
- const ZRi=ORi.CONTENT_W,txi=["net","aquarium","dex"],ixi=["어망","어항","도감"],sxi=Qt(t=>t>=1?16739166:t>=.8?16757611:XIi,"netColor"),exi=ZRi/6,nxi=80,hxi=class t extends OR{ + const yPi=JRi.CONTENT_W,EPi=["net","aquarium","dex"],APi=["어망","어항","도감"],SPi=yPi/6,TPi=80,CPi=class t extends Ox{
- super(),Zt(this,"cells",[]),Zt(this,"headTitle",oki("",zIi,15)),Zt(this,"headHint",oki("",qIi,12,!1)),Zt(this,"row",null); + super(),Zt(this,"cells",[]),Zt(this,"headTitle",Axi("",uxi,Sxi)),Zt(this,"headHint",Axi("",dxi,Txi,!1)),Zt(this,"row",null);
- const i=new Ve,e=new ip,n=new uki(nxi,!1,!0),h=Mki("gold",14),r=oki("",YIi,12,!1); + const i=new Ve,e=new ip,n=new Rxi(TPi,!1,!0),h=$xi("gold",14),r=Axi("",dxi,Txi,!1);
- t.tile.visible=h,t.card.set(n.c.id,RSi(n.c.id).star,n.c.grade),t.card.setFade(r?.4:1),t.card.setMark(h?"on":r?"lock":!n.check&&n.quest?"quest":null,h?tki:GIi),t.coin.visible=o,t.under.text=r?"의뢰":o?ZOi(n.c).toLocaleString():MTi(n.c.kg),t.under.textColor=h?jIi:r?qIi:YIi,aki(t.under,exi-26); + t.tile.visible=h,t.card.set(n.c.id,uTi(n.c.id).star,n.c.grade),t.card.setFade(r?.4:1),t.card.setMark(h?"on":r?"lock":!n.check&&n.quest?"quest":null,h?vxi:ixi),t.coin.visible=o,t.under.text=r?"의뢰":o?hSi(jIi(n.c),Oki.getInstance().state).toLocaleString():ZTi(n.c.kg),t.under.textColor=h?cxi:dxi,Ixi(t.under,SPi-26);
MiniAscentResultPopup 4 hunks, 4 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:24,lineHeight:30} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:24,lineHeight:30}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:24,lineHeight:30} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:24,lineHeight:30}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:32,lineHeight:38} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:32,lineHeight:38}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:30,lineHeight:36} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:30,lineHeight:36}
MiniAscentLobbyPopup 4 hunks, 4 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:24,lineHeight:32} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:24,lineHeight:32}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:18,lineHeight:24} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:18,lineHeight:24}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:42,lineHeight:50} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:42,lineHeight:50}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:18,lineHeight:24} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:18,lineHeight:24}
Circle 3 hunks, 3 statements
- ...w.defaultOptions} + ...g.defaultOptions}
- ...w.defaultOptions,...this.loadOptions,onProgress:i} + ...g.defaultOptions,...this.loadOptions,onProgress:i}
- ...w.defaultOptions,...this.loadOptions,...i||{ + ...g.defaultOptions,...this.loadOptions,...i||{
BatchableSprite 3 hunks, 3 statements
- ...R.defaultTextStyle,...t} + ...x.defaultTextStyle,...t}
- ...R.defaultDropShadow,...t} + ...x.defaultDropShadow,...t}
- ...R.defaultDropShadow} + ...x.defaultDropShadow}
VersionManager 2 hunks, 3 statements
+ constructor(){ + Zt(this,5)}
- Qt(AS,"VersionManager"),Zt(AS,"gameId","ef2"),Zt(AS,"appVersion","1.15.33"); + Qt(AS,"VersionManager"),Zt(AS,"gameId","ef2"),Zt(AS,"appVersion","1.15.35");
SHA256 3 hunks, 3 statements
- ...Xwt,...Qwt,...tmt,...smt,...hmt,...gmt,...vmt,...bmt,...Tmt} + ...tmt,...smt,...nmt,...rmt,...cmt,..._mt,...ymt,...Smt,...kmt}
- ...cvt,...uvt} + ...fvt,...wvt}
- utf8:Hvt,"utf-8":Hvt,hex:Dvt.base16,latin1:Wvt,ascii:Wvt,binary:Wvt,...Dvt} + utf8:Kvt,"utf-8":Kvt,hex:Fvt.base16,latin1:zvt,ascii:zvt,binary:zvt,...Fvt}
SuiProvider 3 hunks, 3 statements
- namespace:PCt.NameSpaceKeyAptos,addresses:s,methods:[...LCt.AptosMethods],extra:h} + namespace:GCt.NameSpaceKeyAptos,addresses:s,methods:[...UCt.AptosMethods],extra:h}
- namespace:HCt.NameSpaceKeyTON,addresses:o,methods:[...jCt.TONMethods],extra:a,data:{ + namespace:KCt.NameSpaceKeyTON,addresses:o,methods:[...qCt.TONMethods],extra:a,data:{
- namespace:qCt.NameSpaceKeySui,addresses:i,methods:[...QCt.SuiMethods],extra:s} + namespace:ZCt.NameSpaceKeySui,addresses:i,methods:[...sOt.SuiMethods],extra:s}
WalletPopup 3 hunks, 3 statements
- ...sD.ERROR_POPUP_LABEL_OPTION,fontSize:24,fontWeight:"bold"} + ...eD.ERROR_POPUP_LABEL_OPTION,fontSize:24,fontWeight:"bold"}
- ...sD.ERROR_POPUP_LABEL_OPTION,fontSize:16} + ...eD.ERROR_POPUP_LABEL_OPTION,fontSize:16}
- ...sD.ERROR_POPUP_LABEL_OPTION,fontSize:16} + ...eD.ERROR_POPUP_LABEL_OPTION,fontSize:16}
SpriteLandGuidePopup 1 hunks, 3 statements
- const t=[RB.getText("GAME_728","매일 15개의 입장권이 주어지고, 입장권은 전투에서 이길 경우에만 소진됩니다."),RB.getText("GAME_729","적은 인원으로 클리어할수록 더 많은 별을 획득합니다. 별 3개로 클리어하면, 다음부터는 [ 즉시완료 ]로 전투 없이 보상을 얻을 수 있습니다."),RB.getText("GAME_730","이전 스테이지를 클리어하고 일정 기사단 레벨에 도달해야 다음 스테이지에 도전할 수 있습니다."),RB.getText("GAME_731","병사의 레벨, 강화, 유물 효과, 영웅 고유스킬은 적용되지 않으며, 펫의 정령의 고원 전용 버프만 적용됩니다."),RB.getText("GAME_732","오크는 인간에게, 인간은 엘프에게, 엘프는 언데드에게, 언데드는 오크에게 강합니다. ( 오크 > 인간 > 엘프 > 언데드 > 오크 )"),RB.getText("GAME_733","적 수호병 아이콘에 노란 원이 있으면 물리면역, 파란 원이 있으면 마법면역입니다."),RB.getText("GAME_734","적 수호병 아이콘에 +가 있으면 정예, ++가 있으면 상급정예, +++가 있으면 최정예를 뜻합니다. 정예병사들은 일반병사보다 강력합니다.")]; + const t=mG.getInstance(),i=t.ticketMax>0?t.ticketMax:12,s=[RB.getText("GAME_728","매일 15개의 입장권이 주어지고, 입장권은 전투에서 이길 경우에만 소진됩니다."),RB.getValueReplace("GAME_1930","@@",i,`무료 입장권은 매일 초기화 때 하루 지급량(${ + i} + 개)으로 다시 채워집니다. 상점·우편으로 받은 입장권은 따로 보관되어 사라지지 않고, 무료 입장권부터 사용됩니다.`),RB.getText("GAME_729","적은 인원으로 클리어할수록 더 많은 별을 획득합니다. 별 3개로 클리어하면, 다음부터는 [ 즉시완료 ]로 전투 없이 보상을 얻을 수 있습니다."),RB.getText("GAME_730","이전 스테이지를 클리어하고 일정 기사단 레벨에 도달해야 다음 스테이지에 도전할 수 있습니다."),RB.getText("GAME_731","병사의 레벨, 강화, 유물 효과, 영웅 고유스킬은 적용되지 않으며, 펫의 정령의 고원 전용 버프만 적용됩니다."),RB.getText("GAME_732","오크는 인간에게, 인간은 엘프에게, 엘프는 언데드에게, 언데드는 오크에게 강합니다. ( 오크 > 인간 > 엘프 > 언데드 > 오크 )"),RB.getText("GAME_733","적 수호병 아이콘에 노란 원이 있으면 물리면역, 파란 원이 있으면 마법면역입니다."),RB.getText("GAME_734","적 수호병 아이콘에 +가 있으면 정예, ++가 있으면 상급정예, +++가 있으면 최정예를 뜻합니다. 정예병사들은 일반병사보다 강력합니다.")];
SpriteLandSubMenu 1 hunks, 3 statements
- this.lblTicket.text=`${ - t.ticket} - `} + this.lblTicket.text=t.ticketLabel()}
MiniAscentAssets 3 hunks, 3 statements
- return[JMi,...XMi[t]??["ui_challenge_seal"],QMi]} + return[pbi,...fbi[t]??["ui_challenge_seal"],wbi]}
- ,rbi=[sbi,"crystal_effect_plate",...ebi,...nbi,...Object.values(hbi)],obi=class{ + ,Ebi=[_bi,"crystal_effect_plate",...Mbi,...bbi,...Object.values(ybi)],Abi=class{
- for(const h of["background_map","chapter_journey","encounter_battle","encounter_elite","encounter_boss","encounter_event","encounter_shop","encounter_gambling","ui_arrow_up","ui_button_lobby_blank","ui_close","ui_coin","ui_energy","ui_challenge_seal","ui_divider","UI_VS","UI_Check1","UI_Check2",...ZMi,...rbi])if(!n.textures[h])throw new Error(`UI_MINI: missing ${ + for(const h of["background_map","chapter_journey","encounter_battle","encounter_elite","encounter_boss","encounter_event","encounter_shop","encounter_gambling","ui_arrow_up","ui_button_lobby_blank","ui_close","ui_coin","ui_energy","ui_challenge_seal","ui_divider","UI_VS","UI_Check1","UI_Check2",...gbi,...Ebi])if(!n.textures[h])throw new Error(`UI_MINI: missing ${
FishingTravelFx 3 hunks, 3 statements
- const i=[...kRi[t]],s={ + const i=[...ZRi[t]],s={
- return s.R=i.push(e(t,"R"))-1,i.push(...RRi[t]),s.C=i.push(e(t,"C"))-1,s.O=i.push(e(t,"O"))-1,{ + return s.R=i.push(e(t,"R"))-1,i.push(...tPi[t]),s.C=i.push(e(t,"C"))-1,s.O=i.push(e(t,"O"))-1,{
- ,HRi=Qt((t,i,s)=>NRi((t-i)/(s-i)),"prog"),WRi=Qt((t,i,s)=>t+(i-t)*s,"lerp$1"); + ,uPi=Qt((t,i,s)=>ePi((t-i)/(s-i)),"prog"),dPi=Qt((t,i,s)=>t+(i-t)*s,"lerp$2");
FishingStatusHud 3 hunks, 3 statements
- super(),Zt(this,"band",new Ve),Zt(this,"bandBg",new ip),Zt(this,"clockSeg",new Ve),Zt(this,"dial",new ip),Zt(this,"dialIcon",new Ye(as.EMPTY)),Zt(this,"needle",new ip),Zt(this,"clockText",oki("",zIi,15)),Zt(this,"depthSeg",new Ve),Zt(this,"depthGlyph",new ip),Zt(this,"depthArrow",oki("▾",YIi,11)),Zt(this,"netSeg",new Ve),Zt(this,"netIcon",Eki("keepnet",20,16777215)),Zt(this,"netText",oki("",zIi,13)),Zt(this,"seps",new ip),Zt(this,"place",new Ve),Zt(this,"placeBg",new ip),Zt(this,"badge",new ip),Zt(this,"badgeText",oki("",1056783,11)),Zt(this,"placeText",oki("",zIi,12)),Zt(this,"pop",new Ve),Zt(this,"strip",new Ve),Zt(this,"card",new Ve),Zt(this,"cardId",0),Zt(this,"onDepth",null),Zt(this,"onNet",null),Zt(this,"sig",""),Zt(this,"stripSig",""),Zt(this,"last",null),Zt(this,"bandY",19),Zt(this,"bandW",0),Zt(this,"popSig",""),Zt(this,"cardSig",""),this.bandBg.eventMode=this.dial.eventMode=this.needle.eventMode=this.depthGlyph.eventMode=this.seps.eventMode="none",this.dialIcon.eventMode="none",this.dialIcon.anchor.set(.5),this.clockSeg.addChild(this.dial,this.dialIcon,this.needle,this.clockText),this.depthSeg.addChild(this.depthGlyph,this.depthArrow),this.netSeg.addChild(this.netIcon,this.netText); + super(),Zt(this,"band",new Ve),Zt(this,"bandBg",new ip),Zt(this,"clockSeg",new Ve),Zt(this,"dial",new ip),Zt(this,"dialIcon",new Ye(as.EMPTY)),Zt(this,"needle",new ip),Zt(this,"clockText",Axi("",uxi,15)),Zt(this,"depthSeg",new Ve),Zt(this,"depthGlyph",new ip),Zt(this,"depthArrow",Axi("▾",dxi,11)),Zt(this,"netSeg",new Ve),Zt(this,"netIcon",new Kxi("net","keepnet",22,16777215,20)),Zt(this,"netText",Axi("",uxi,13)),Zt(this,"seps",new ip),Zt(this,"place",new Ve),Zt(this,"placeBg",new ip),Zt(this,"badge",new ip),Zt(this,"badgeText",Axi("",1056783,11)),Zt(this,"placeText",Axi("",uxi,12)),Zt(this,"pop",new Ve),Zt(this,"strip",new Ve),Zt(this,"card",new Ve),Zt(this,"cardId",0),Zt(this,"onDepth",null),Zt(this,"onNet",null),Zt(this,"sig",""),Zt(this,"stripSig",""),Zt(this,"last",null),Zt(this,"bandY",19),Zt(this,"bandW",0),Zt(this,"popSig",""),Zt(this,"cardSig",""),this.bandBg.eventMode=this.dial.eventMode=this.needle.eventMode=this.depthGlyph.eventMode=this.seps.eventMode="none",this.dialIcon.eventMode="none",this.dialIcon.anchor.set(.5),this.clockSeg.addChild(this.dial,this.dialIcon,this.needle,this.clockText),this.depthSeg.addChild(this.depthGlyph,this.depthArrow),this.netSeg.addChild(this.netIcon,this.netText);
- this.netIcon.tint=g,this.netText.text=`${ + this.netIcon.refresh(),this.netIcon.setTone(w),this.netIcon.position.set(-1,-2),this.netText.text=`${
- `,zIi,15),u=oki("★".repeat(e.star),jIi,12); + `,uxi,15),u=Axi("★".repeat(e.tier),cxi,12);
MiniAscentDeployPopup 3 hunks, 3 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:24,lineHeight:30} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:24,lineHeight:30}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:16,lineHeight:20} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:16,lineHeight:20}
- ...sD.DEFAULT_FONT_OPTION_15,fontSize:12,lineHeight:16} + ...eD.DEFAULT_FONT_OPTION_15,fontSize:12,lineHeight:16}
AppReadyEvent 2 hunks, 2 statements
- return _St||(_St=[...fSt]),_St} + return ESt||(ESt=[...mSt]),ESt}
- Qt(mSt,"getWallets"),cSt.getWallets=mSt,Qt(vSt,"register$1"),Qt(MSt,"get"),Qt(bSt,"on"),Qt(ySt,"guard$1"); + Qt(bSt,"getWallets"),fSt.getWallets=bSt,Qt(ySt,"register$1"),Qt(ASt,"get"),Qt(SSt,"on$1"),Qt(TSt,"guard$1");
HelpDetailPopup 2 hunks, 2 statements
- ...sD.DEFAULT_FONT_OPTION_18,fontSize:32,lineHeight:40} + ...eD.DEFAULT_FONT_OPTION_18,fontSize:32,lineHeight:40}
- ...sD.DEFAULT_FONT_OPTION_18,fontSize:24,lineHeight:34} + ...eD.DEFAULT_FONT_OPTION_18,fontSize:24,lineHeight:34}
GuildBarrackRowItemRenderer 2 hunks, 2 statements
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:14} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:14}
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:13} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:13}
GuildWarBattleReadyPopup 2 hunks, 2 statements
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:13} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:13}
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:i} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:i}
GuildWarSquadsPopup 2 hunks, 2 statements
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:14} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:14}
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:i} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:i}
GuildWarTierAssignPopup 2 hunks, 2 statements
- const i=[...SD.memberList??[]].sort((t,i)=>i.roleLevel!==t.roleLevel?i.roleLevel-t.roleLevel:(i.wave??0)-(t.wave??0)); + const i=[...TD.memberList??[]].sort((t,i)=>i.roleLevel!==t.roleLevel?i.roleLevel-t.roleLevel:(i.wave??0)-(t.wave??0));
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:i} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:i}
MiniAscentShell 2 hunks, 2 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:26,lineHeight:32} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:26,lineHeight:32}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:14,lineHeight:18} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:14,lineHeight:18}
MiniAscentBattleController 2 hunks, 2 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:14,lineHeight:18} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:14,lineHeight:18}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:14,lineHeight:18} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:14,lineHeight:18}
AvatarFront 2 hunks, 2 statements
- const i=(new ip).poly([...Lki[t.race][t.sex]]).fill(16119285).stroke({ + const i=(new ip).poly([...nRi[t.race][t.sex]]).fill(16119285).stroke({
- if(t.poly([...p,...g]).fill(r).stroke(Vki(c)),t.poly(Wki(d,f,1.04*s,1.01*s,0,e+.08,o-.08,32),!1).stroke({ + if(t.poly([...p,...w]).fill(r).stroke(fRi(c)),t.poly(dRi(d,f,1.04*s,1.01*s,0,e+.08,o-.08,32),!1).stroke({
MiniAscentCorpsPanel 2 hunks, 2 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:i,lineHeight:i+4} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:i,lineHeight:i+4}
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:16,lineHeight:20} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:16,lineHeight:20}
MiniAscentCorpsPage 2 hunks, 2 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:22,lineHeight:28} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:22,lineHeight:28}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:14,lineHeight:19} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:14,lineHeight:19}
MiniAscentChapterRewardItem 2 hunks, 2 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:14} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:14}
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:15} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:15}
DefaultShader 1 hunks, 1 statements
- name:i,...gc({ + name:i,...wc({
BlurFilter 1 hunks, 1 statements
- ...gf.defaultOptions,...i} + ...wf.defaultOptions,...i}
HTMLTextStyle 1 hunks, 1 statements
- ...qg.defaultDropShadow,...t} + ...qw.defaultDropShadow,...t}
WebGLRenderer 1 hunks, 1 statements
- oi.handleByNamedList(ni.WebGLSystem,vb),oi.handleByNamedList(ni.WebGLPipes,_b),oi.handleByNamedList(ni.WebGLPipesAdaptor,Mb),oi.add(...gb,...wb,...mb); + oi.handleByNamedList(ni.WebGLSystem,vb),oi.handleByNamedList(ni.WebGLPipes,_b),oi.handleByNamedList(ni.WebGLPipesAdaptor,Mb),oi.add(...wb,...gb,...mb);
WebGPURenderer 1 hunks, 1 statements
- oi.handleByNamedList(ni.WebGPUSystem,Ny),oi.handleByNamedList(ni.WebGPUPipes,Ly),oi.handleByNamedList(ni.WebGPUPipesAdaptor,Dy),oi.add(...Ry,...xy,...Py); + oi.handleByNamedList(ni.WebGPUSystem,Ny),oi.handleByNamedList(ni.WebGPUPipes,Ly),oi.handleByNamedList(ni.WebGPUPipesAdaptor,Dy),oi.add(...xy,...Ry,...Py);
AutoTogglePill 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_15,fontSize:t.FONT_SIZE,lineHeight:t.PILL_H} + ...eD.DEFAULT_FONT_OPTION_15,fontSize:t.FONT_SIZE,lineHeight:t.PILL_H}
FireBird1 1 hunks, 1 statements
- Qt(s2,"FireBird1"),Zt(s2,"SWOOP_POSES",[[23,0,0],[27,-7.8,-8.2],[31,-11,-11.7],[35,5.2,11.2],[39,3.9,4.6],[43,1.6,1.8]]),Zt(s2,"SWOOP_HOLD",4),Zt(s2,"SWOOP_KEYS",[...s2.SWOOP_POSES.map(([t,i,s])=>[t+(s2.SWOOP_HOLD-1)/2,i,s]),[s2.SWOOP_POSES[s2.SWOOP_POSES.length-1][0]+s2.SWOOP_HOLD,0,0]]); + Qt(r2,"FireBird1"),Zt(r2,"SWOOP_POSES",[[23,0,0],[27,-7.8,-8.2],[31,-11,-11.7],[35,5.2,11.2],[39,3.9,4.6],[43,1.6,1.8]]),Zt(r2,"SWOOP_HOLD",4),Zt(r2,"SWOOP_KEYS",[...r2.SWOOP_POSES.map(([t,i,s])=>[t+(r2.SWOOP_HOLD-1)/2,i,s]),[r2.SWOOP_POSES[r2.SWOOP_POSES.length-1][0]+r2.SWOOP_HOLD,0,0]]);
Emitter 1 hunks, 1 statements
- Qt(I8,"rng"); + Qt(P8,"rng$1");
Socket 1 hunks, 1 statements
- Qt(A9,"on$2"); + Qt(O9,"on$3");
Mt 1 hunks, 1 statements
- const xit=Qt((t,i)=>t,"at"); + const Dit=Qt((t,i)=>t,"at$1");
Sr 1 hunks, 1 statements
- ...t,...Vet(i)} + ...t,...Yet(i)}
Ma 1 hunks, 1 statements
- ...iat,coercer:Qt((t,i)=>fot(t,sat)?iat.coercer(eat(t,i),i):iat.coercer(t,i),"coercer")} + ...hat,coercer:Qt((t,i)=>mot(t,rat)?hat.coercer(oat(t,i),i):hat.coercer(t,i),"coercer")}
Yp 1 hunks, 1 statements
- const e=126,n=[71,73,70,56,55,97,...i,246,0,0,255,255,255,...Ggt(381,0),44,0,0,0,0,...i,0,7],h=Math.floor(s.length/e); + const e=126,n=[71,73,70,56,55,97,...i,246,0,0,255,255,255,...$wt(381,0),44,0,0,0,0,...i,0,7],h=Math.floor(s.length/e);
SuiStandardProvider 1 hunks, 1 statements
- namespace:YEt.NameSpaceKeyEip155,addresses:i,methods:[...JEt.Eip55Methods],extra:s} + namespace:QEt.NameSpaceKeyEip155,addresses:i,methods:[...iAt.Eip55Methods],extra:s}
SolProvider 1 hunks, 1 statements
- namespace:ACt.NameSpaceKeySOL,addresses:i,methods:[...OCt.SOLANAMethods],extra:s} + namespace:OCt.NameSpaceKeySOL,addresses:i,methods:[...RCt.SOLANAMethods],extra:s}
OkxwalletInjectConnector 1 hunks, 1 statements
- namespace:sOt.NameSpaceKeyBtc,addresses:i,methods:[...nOt.BtcMethods],extra:s} + namespace:rOt.NameSpaceKeyBtc,addresses:i,methods:[...aOt.BtcMethods],extra:s}
TcRootElement 1 hunks, 1 statements
- return QBt()||(t.push(new pwt.OKXAppConnector),t.push(new pwt.OKXWalletAppConnector)),XBt()&&t.push(new pwt.OkxwalletInjectConnector),t.push(...tUt()),t} + return sUt()||(t.push(new vgt.OKXAppConnector),t.push(new vgt.OKXWalletAppConnector)),tUt()&&t.push(new vgt.OkxwalletInjectConnector),t.push(...nUt()),t}
WalletSelectPopup 1 hunks, 1 statements
- ...sD.ERROR_POPUP_LABEL_OPTION,fontSize:18} + ...eD.ERROR_POPUP_LABEL_OPTION,fontSize:18}
GuideBubble 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_18,fontSize:15,lineHeight:20} + ...eD.DEFAULT_FONT_OPTION_18,fontSize:15,lineHeight:20}
HeroMassiveBuyPopup 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_17} + ...eD.DEFAULT_FONT_OPTION_17}
BuffStatusPopup 1 hunks, 1 statements
- if(n)if(t=[...dx.getInstance().getContributors(o)],o===lx.GodBless){ + if(n)if(t=[...dR.getInstance().getContributors(o)],o===lR.GodBless){
FavoritePetSubView 1 hunks, 1 statements
- const t=[...wG.getInstance().favoritePets].sort((t,i)=>{ + const t=[...mG.getInstance().favoritePets].sort((t,i)=>{
TreasureSubView 1 hunks, 1 statements
- const t=[...Ax.getInstance().equipedList]; + const t=[...AR.getInstance().equipedList];
EventSchedulePopup 1 hunks, 1 statements
- this.title=RB.getText("GAME_1887","이벤트 일정"),this.header.setData(),this.list.dataProvider=[...GB.eventScheduled],t&&this.list.scrollTo(0)} + this.title=RB.getText("GAME_1887","이벤트 일정"),this.header.setData(),this.list.dataProvider=[...BB.eventScheduled],t&&this.list.scrollTo(0)}
GuildBarracksRaceView 1 hunks, 1 statements
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:i} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:i}
GuildMainSubView 1 hunks, 1 statements
- const i=[...SD.guildList].sort((t,i)=>{ + const i=[...TD.guildList].sort((t,i)=>{
EmblemBadge 1 hunks, 1 statements
- Qt(bni,"fillTagChips"),Qt(yni,"fillSkillPrefixChips"),Qt(Eni,"mixColor"),Qt(Ani,"runeTypeColor"); + Qt(Rni,"fillTagChips"),Qt(Pni,"fillSkillPrefixChips"),Qt(Nni,"mixColor$1"),Qt(Lni,"runeTypeColor");
GuildRaidBattleReadyPopup 1 hunks, 1 statements
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:13} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:13}
GuildWarHistoryItemRenderer 1 hunks, 1 statements
- ...sD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:i} + ...eD.DEFAULT_OUTLINE_FONT_OPTION_16,fontSize:i}
GuildWarTournamentRewardGuidePopup 1 hunks, 1 statements
- let e=[...SD.rewardBattleList.sort((t,i)=>i.kindNum-t.kindNum)].concat([...SD.rewardBattleLostList.sort((t,i)=>i.kindNum-t.kindNum)]); + let e=[...TD.rewardBattleList.sort((t,i)=>i.kindNum-t.kindNum)].concat([...TD.rewardBattleLostList.sort((t,i)=>i.kindNum-t.kindNum)]);
NpcDialogueToast 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_18,fontSize:14,lineHeight:18} + ...eD.DEFAULT_FONT_OPTION_18,fontSize:14,lineHeight:18}
MainLayer 1 hunks, 1 statements
- super(),this.addChild(EF.getInstance()),this.addChild(Cci.getInstance()),this.addChild(u7t.getInstance()),this.addChild(Nci.getInstance()),this.addChild(b$.getInstance()),this.addChild(Yzt.getInstance()),this.addChild(xci.getInstance()),this.addChild(oci.getInstance()),this.addChild(xG.getInstance()),this.addChild(XD.getInstance()),this.addChild(xYt.getInstance()),this.addChild(Dci.getInstance()),this.addChild(GP.getInstance()),this.addChild(Fci.getInstance()),this.addChild(LU.getInstance()),this.updateLayout()} + super(),this.addChild(AF.getInstance()),this.addChild(Bci.getInstance()),this.addChild(v7t.getInstance()),this.addChild(zci.getInstance()),this.addChild(jci.getInstance()),this.addChild(y$.getInstance()),this.addChild(Qzt.getInstance()),this.addChild(Wci.getInstance()),this.addChild(vci.getInstance()),this.addChild(PG.getInstance()),this.addChild(JD.getInstance()),this.addChild(DYt.getInstance()),this.addChild(qci.getInstance()),this.addChild(GP.getInstance()),this.addChild(Zci.getInstance()),this.addChild(DU.getInstance()),this.updateLayout()}
IntroOverlay 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_18,fontSize:14,lineHeight:18} + ...eD.DEFAULT_FONT_OPTION_18,fontSize:14,lineHeight:18}
GuildWarCombatLogItemRenderer 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_15,fontSize:14} + ...eD.DEFAULT_FONT_OPTION_15,fontSize:14}
GuildWarMemberStatusItemRenderer 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_15,fontSize:14} + ...eD.DEFAULT_FONT_OPTION_15,fontSize:14}
GuildWarTargetMarkerItemRenderer 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_15,fontSize:14} + ...eD.DEFAULT_FONT_OPTION_15,fontSize:14}
MiniAscentBattleProgress 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:20,lineHeight:26,align:"center"} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:20,lineHeight:26,align:"center"}
FButton 1 hunks, 1 statements
- const t=this._enabled,i=t?this.primary?jIi:FIi:iki; + const t=this._enabled,i=t?this.primary?cxi:nxi:2763309;
FishingCoach 1 hunks, 1 statements
- const Mxi=Qt(t=>Math.max(0,Math.min(1,t)),"clamp01$3"),bxi=Qt(t=>1+2.70158*Math.pow(t-1,3)+1.70158*Math.pow(t-1,2),"backOut$1"); + const zPi=Qt(t=>Math.max(0,Math.min(1,t)),"clamp01$6"),YPi=Qt(t=>1+2.70158*Math.pow(t-1,3)+1.70158*Math.pow(t-1,2),"backOut$3");
FishingTerritory 1 hunks, 1 statements
- else n=Qt(t=>({ + else n=Qt("bodyPoint"in i?t=>i.bodyPoint(t):t=>({
FishingDiscoveryFx 1 hunks, 1 statements
- const d=Math.max(0,Math.min(3,i.grade)),f=HDi[d],p=Math.max(1,Math.min(6,i.star)),g=eki[p]??jIi,w=d>=2?nki[d]:g,m=new Ve; + const d=Math.max(0,Math.min(3,i.grade)),f=UUi[d],p=Math.max(1,Math.min(7,i.star)),w=Mxi[p]??cxi,g=d>=2?bxi[d]:w,m=new Ve;
FishingTradeUi 1 hunks, 1 statements
- "★".repeat(s.star)} + "★".repeat(s.tier)}
PointCard 1 hunks, 1 statements
- )),t.current?this.badge.addChild(vki("낚시 중",KIi,jIi,10,6)):(null==(i=t.fish)?void 0:i.tag)&&this.badge.addChild(vki(t.fish.tag,16777215,eki[t.fish.star],10,5)),this.badge.position.set(ZGi-this.badge.width-6,5),t.fish&&this.fish.set(t.fish.id,t.fish.star,0,!t.fish.known)} + )),t.current?this.badge.addChild(Uxi("낚시 중",lxi,cxi,10,6)):(null==(i=t.fish)?void 0:i.tag)&&this.badge.addChild(Uxi(t.fish.tag,16777215,Mxi[cTi(t.fish.id)],10,5)),this.badge.position.set(E$i-this.badge.width-6,5),t.fish&&this.fish.set(t.fish.id,t.fish.star,0,!t.fish.known)}
FishingMapPage 1 hunks, 1 statements
- super(),Zt(this,"tabId","fish"),Zt(this,"onBack",null),Zt(this,"race","인간"),Zt(this,"zone","R"),Zt(this,"view","world"),Zt(this,"back",new gki("‹ 낚시로",110,38,14)),Zt(this,"titleText",oki("해도",zIi,20)),Zt(this,"worldView",new Ve),Zt(this,"worldImg",new Ye(as.EMPTY)),Zt(this,"worldPins",new Ve),Zt(this,"worldHint",oki("",YIi,13,!1)),Zt(this,"regionView",new Ve),Zt(this,"regionImg",new Ye(as.EMPTY)),Zt(this,"regionFog",new Ye(as.EMPTY)),Zt(this,"regionTerr",new Ye(as.EMPTY)),Zt(this,"terrCanvas",document.createElement("canvas")),Zt(this,"terrTex",null),Zt(this,"regionMarks",new Ve),Zt(this,"regionTitle",oki("",zIi,17)),Zt(this,"regionDex",oki("",YIi,12)),Zt(this,"regionGate",oki("",YIi,12)),Zt(this,"cards",[]),Zt(this,"foot",oki("수역은 스팟 둘레의 넓은 물이에요. 배로 새 수역에 들어가면 지도에 드러나요. 회유어(★4)는 날마다 UTC 0시에 몇몇 수역 중 한 곳으로 옮겨요.",qIi,12,!1)),Zt(this,"pulse",0),this.back.setPrimary(!1),this.back.onTap=()=>{ + super(),Zt(this,"tabId","fish"),Zt(this,"onBack",null),Zt(this,"race","인간"),Zt(this,"zone","R"),Zt(this,"view","world"),Zt(this,"back",new Dxi("‹ 낚시로",110,38,14)),Zt(this,"titleText",Axi("해도",uxi,20)),Zt(this,"worldView",new Ve),Zt(this,"worldImg",new Ye(as.EMPTY)),Zt(this,"worldPins",new Ve),Zt(this,"worldHint",Axi("",dxi,13,!1)),Zt(this,"regionView",new Ve),Zt(this,"regionImg",new Ye(as.EMPTY)),Zt(this,"regionFog",new Ye(as.EMPTY)),Zt(this,"regionTerr",new Ye(as.EMPTY)),Zt(this,"terrCanvas",document.createElement("canvas")),Zt(this,"terrTex",null),Zt(this,"regionMarks",new Ve),Zt(this,"regionTitle",Axi("",uxi,17)),Zt(this,"regionDex",Axi("",dxi,12)),Zt(this,"regionGate",Axi("",dxi,12)),Zt(this,"cards",[]),Zt(this,"foot",Axi("수역은 스팟 둘레의 넓은 물이에요. 배로 새 수역에 들어가면 지도에 드러나요. 회유어는 날마다 UTC 0시에 몇몇 수역 중 한 곳으로 옮겨요.",fxi,12,!1)),Zt(this,"pulse",0),this.back.setPrimary(!1),this.back.onTap=()=>{
Delay 1 hunks, 1 statements
- ...vWi(),[i]:s} + ...yzi(),[i]:s}
NetworkTimeout 1 hunks, 1 statements
- ...HWi,...i} + ...Kzi,...i}
RecaptchaVerifier 1 hunks, 1 statements
- ...EYi} + ...CQi}
BrowserPopupRedirectResolver 1 hunks, 1 statements
- ...Cqi,width:e.toString(),height:n.toString(),top:h,left:r} + ...xZi,width:e.toString(),height:n.toString(),top:h,left:r}
MiniAscentCardsPage 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:s,lineHeight:s+6} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:s,lineHeight:s+6}
MiniAscentCrystalRowRenderer 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:20,fontWeight:"900"} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:20,fontWeight:"900"}
MiniAscentCrystalsPage 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:n,lineHeight:n+5,fontWeight:"bold"} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:n,lineHeight:n+5,fontWeight:"bold"}
MiniAscentTextButton 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:15,lineHeight:20} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:15,lineHeight:20}
MiniAscentRoutePopup 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:f,lineHeight:f+2} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:f,lineHeight:f+2}
MiniAscentCrystalRewardPopup 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:s,lineHeight:s+5} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:s,lineHeight:s+5}
MiniAscentModeSwitch 1 hunks, 1 statements
- ...sD.DEFAULT_FONT_OPTION_16,fontSize:19,lineHeight:24} + ...eD.DEFAULT_FONT_OPTION_16,fontSize:19,lineHeight:24}