EF2 Changelog

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

New content

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

Fixes

Technical

AI summary (claude-sonnet-5-5) written from the diffs below. Check the evidence before quoting it.

Text changes 3

KeyText
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

FileChangeSizePreview
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 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}