Builds / 1.15.36
Update 1.15.36
Compared with 1.15.35 · published Mon, 12 Oct 2026 00:59:10 GMT · live channel
No summary yet.
Code 38 changes in 19 classes
Minified client code with short names blanked for diffing. Class names are real.
- BattleController 30
- GodBlessToast 21
- FishingDataManager 7
- FishingAvatarMaker 5
- VersionManager 3
- FavoritePetSubMenu 3
- MiniAscentAssets 3
- FishingTankPage 3
- FishingFog 2
- FishingTravelFx 2
- FishingService 1
- AvatarFront 1
- FishingFishSchool 1
- FishingHuntUi 1
- FishingMyBoatView 1
- Delay 1
- NetworkTimeout 1
- RecaptchaVerifier 1
- BrowserPopupRedirectResolver 1
BattleController 5 hunks, 30 statements
- const h=s.length; - if(0===h)return; - const r=2*Math.PI/h,o=new Set; - for(const t of e){ - const i=t.x-this.player.x,s=t.y-this.player.y; - let e=Math.atan2(s,i); - e<0&&(e+=2*Math.PI); - let n=0,a=1/0; - for(let t=0; - t<h; - t++){ - if(o.has(t))continue; - let i=Math.abs(e-r*t); - i>Math.PI&&(i=2*Math.PI-i),i<a&&(a=i,n=t)} - o.add(n)} - const a=[]; - for(let t=0; - t<h; - t++)o.has(t)||a.push(t); - const c=TU.getInstance(); + if(0===s.length)return; + const h=Rdi(this.player.x,this.player.y,e.map(t=>this.getHeroHome(t)),n.length),r=TU.getInstance();
- const s=n[l],e=r*(l<a.length?a[l]:l),h=s.unitType===Gx.MELEE,o=h?t.MELEE_ORBIT_RADIUS:t.RANGED_ORBIT_RADIUS,u=h?t.MELEE_PATROL_RADIUS:t.RANGED_PATROL_RADIUS,d=this.player.x+o*Math.cos(e),f=this.player.y+o*Math.sin(e); + const s=n[o],e=h[o],a=s.unitType===Gx.MELEE,c=a?t.MELEE_ORBIT_RADIUS:t.RANGED_ORBIT_RADIUS,l=a?t.MELEE_PATROL_RADIUS:t.RANGED_PATROL_RADIUS,u=this.player.x+c*Math.cos(e),d=this.player.y+c*Math.sin(e);
- const n=[]; + const n=[],h=[]; + for(const t of this.friendList)t!==this.player&&(this.rallyHeroes.has(t)?n.push(this.getHeroHome(t)):h.push(t)); + const r=Rdi(this.player.x,this.player.y,n,h.length);
- t<this.friendList.length; - t++)this.friendList[t]!==this.player&&n.push(this.friendList[t]); - const h=n.length; - for(let r=0; - r<h; + o<h.length;
- const i=n[r],s=2*Math.PI/h*r,e=i.unitType===Gx.MELEE,o=e?t.MELEE_ORBIT_RADIUS:t.RANGED_ORBIT_RADIUS,a=e?t.MELEE_PATROL_RADIUS:t.RANGED_PATROL_RADIUS,c=this.player.x+o*Math.cos(s),l=this.player.y+o*Math.sin(s); + const i=h[o],s=r[o],e=i.unitType===Gx.MELEE,n=e?t.MELEE_ORBIT_RADIUS:t.RANGED_ORBIT_RADIUS,a=e?t.MELEE_PATROL_RADIUS:t.RANGED_PATROL_RADIUS,c=this.player.x+n*Math.cos(s),l=this.player.y+n*Math.sin(s);
GodBlessToast 1 hunks, 21 statements
- Qt(Idi,"rollElfSecretSkippedWaves"),Qt(kdi,"shouldAutoSaveOnWaveClear"),Qt(xdi,"resolveBootGameOver"); + function Rdi(t,i,s,e){ + const n=s.length+e; + if(0===n||0===e)return[]; + const h=2*Math.PI/n,r=new Set; + for(const a of s){ + let s=Math.atan2(a.y-i,a.x-t); + s<0&&(s+=2*Math.PI); + let e=-1,o=1/0; + for(let t=0; + t<n; + t++){ + if(r.has(t))continue; + let i=Math.abs(s-h*t); + i>Math.PI&&(i=2*Math.PI-i),i<o&&(o=i,e=t)} + r.add(e)} + const o=[]; + for(let a=0; + a<n&&o.length<e; + a++)r.has(a)||o.push(h*a); + return o} + Qt(Idi,"rollElfSecretSkippedWaves"),Qt(kdi,"shouldAutoSaveOnWaveClear"),Qt(xdi,"resolveBootGameOver"),Qt(Rdi,"autoSlotAngles");
FishingDataManager 7 hunks, 7 statements
- 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?{ + w:s,at:o,end:o+fIi.DUR_MS,kind:r.kind,name:r.name,tier:e,...EIi(e,r),min:r.min,...r.needBest?{
- ...EIi(t,i,Math.floor(s/dIi.EVERY_MS)),w:e,at:s,end:s+dIi.DUR_MS} + ...AIi(t,i,Math.floor(s/fIi.EVERY_MS)),w:e,at:s,end:s+fIi.DUR_MS}
- const n=[[t,i],...HSi.flatMap(t=>WSi.map(i=>[t,i])).filter(([s,e])=>s!==t||e!==i)]; + const n=[[t,i],...WSi.flatMap(t=>VSi.map(i=>[t,i])).filter(([s,e])=>s!==t||e!==i)];
- return[...gCi.map((s,e)=>({ + return[...mCi.map((s,e)=>({
- )),...mCi.map((i,s)=>({ + )),...vCi.map((i,s)=>({
- )),...vCi.map((i,s)=>{ + )),..._Ci.map((i,s)=>{
- for(const i of"tut"===t?["tut",...yOi]:[t])this.seenTips.add(i); + for(const i of"tut"===t?["tut",...EOi]:[t])this.seenTips.add(i);
FishingAvatarMaker 5 hunks, 5 statements
- ...ZOi} + ...tIi}
- ...ZOi,skin:0,hair:0,hairColor:0,feats:[]} + ...tIi,skin:0,hair:0,hairColor:0,feats:[]}
- ...ZOi} + ...tIi}
- ...ZOi,race:i,sex:1,skin:0,hair:0,hairColor:KOi[i],feats:[]} + ...tIi,race:i,sex:1,skin:0,hair:0,hairColor:zOi[i],feats:[]}
- ...ZOi,race:this.draft.race,sex:i,skin:0,hair:0,hairColor:this.draft.hairColor,feats:[]} + ...tIi,race:this.draft.race,sex:i,skin:0,hair:0,hairColor:this.draft.hairColor,feats:[]}
VersionManager 2 hunks, 3 statements
- constructor(){ - Zt(this,5)}
- Qt(AS,"VersionManager"),Zt(AS,"gameId","ef2"),Zt(AS,"appVersion","1.15.35"); + Qt(AS,"VersionManager"),Zt(AS,"gameId","ef2"),Zt(AS,"appVersion","1.15.36");
FavoritePetSubMenu 1 hunks, 3 statements
- this.lblTicket.text=`${ - mG.getInstance().ticket} - `} + this.lblTicket.text=mG.getInstance().ticketLabel()}
MiniAscentAssets 3 hunks, 3 statements
- return[pbi,...fbi[t]??["ui_challenge_seal"],wbi]} + return[wbi,...pbi[t]??["ui_challenge_seal"],gbi]}
- ,Ebi=[_bi,"crystal_effect_plate",...Mbi,...bbi,...Object.values(ybi)],Abi=class{ + ,Abi=[Mbi,"crystal_effect_plate",...bbi,...ybi,...Object.values(Ebi)],Sbi=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",...gbi,...Ebi])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",...mbi,...Abi])if(!n.textures[h])throw new Error(`UI_MINI: missing ${
FishingTankPage 2 hunks, 3 statements
- ...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()=>{ + ...XIi} + ),Zt(this,"autoBusy",!1),Zt(this,"netEmpty",Sxi("어망이 비었어요. 잡은 물고기는 모두 여기에 담겨요.",fxi,Cxi,!1)),Zt(this,"netList",new Tx(IPi,EPi,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",Sxi("물고기 팔기",dxi,24)),Zt(this,"allChip",new Lxi("모두 고르기",150,40,14)),Zt(this,"starLb",Sxi("별",fxi,14)),Zt(this,"sizeLb",Sxi("크기",fxi,14)),Zt(this,"sizeNote",Sxi("특대·왕은 눌러서만",fxi,Cxi,!1)),Zt(this,"starChips",NPi.map(t=>new Lxi(t.text,120,38,15))),Zt(this,"sizeChips",LPi.map(t=>new Lxi(t.text,120,38,15))),Zt(this,"sellList",new Tx(IPi,EPi,300,0)),Zt(this,"barBg",new ip),Zt(this,"barN",Sxi("",fxi,Cxi)),Zt(this,"barCoin",Hxi("gold",24)),Zt(this,"barGold",Sxi("",lxi,24)),Zt(this,"barEmpty",Sxi("",fxi,Txi)),Zt(this,"barEmptySub",Sxi("위 칩으로 한꺼번에 · 눌러서 하나씩",fxi,Cxi,!1)),Zt(this,"barSell",new Gxi("팔기",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",["전체",...WSi].map(t=>new Lxi(t,108,36,14))),Zt(this,"zoneChips",["전체",...VSi.map(t=>KSi[t])].map(t=>new Lxi(t,130,36,14))),Zt(this,"dexHead",new Ixi(EPi)),Zt(this,"dexList",new Tx(RPi,EPi,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(EPi-DPi,1),this.sellBtn.onTap=()=>this.openSheet(),this.cutBtn.position.set(EPi-DPi,1),this.cutBtn.onTap=async()=>{
- ...qIi} + ...XIi}
FishingFog 1 hunks, 2 statements
- return[...mSi[i],{ - ...vSi[t],dmg:_Si[i],w:1} + return[...vSi[i],{ + ..._Si[t],dmg:MSi[i],w:1}
FishingTravelFx 2 hunks, 2 statements
- const i=[...ZRi[t]],s={ + const i=[...tPi[t]],s={
- 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,{ + return s.R=i.push(e(t,"R"))-1,i.push(...iPi[t]),s.C=i.push(e(t,"C"))-1,s.O=i.push(e(t,"O"))-1,{
FishingService 1 hunks, 1 statements
- ...BCi[i],npc:e} + ...UCi[i],npc:e}
AvatarFront 1 hunks, 1 statements
- const i=(new ip).poly([...nRi[t.race][t.sex]]).fill(16119285).stroke({ + const i=(new ip).poly([...hRi[t.race][t.sex]]).fill(16119285).stroke({
FishingFishSchool 1 hunks, 1 statements
- if(n)for(const t of[...tGi(h,r,this.t),...fGi(h,r,this.t)])n(t.x,t.y); + if(n)for(const t of[...iGi(h,r,this.t),...pGi(h,r,this.t)])n(t.x,t.y);
FishingHuntUi 1 hunks, 1 statements
- ...$Ii(i.gearStats().aim),center:e.center} + ...HIi(i.gearStats().aim),center:e.center}
FishingMyBoatView 1 hunks, 1 statements
- 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); + const d=t.gearStats(),f=[...cHi,...WAi.filter(t=>!cHi.includes(t))].filter(t=>d[t]>0),p=f.slice(0,3),w=f.slice(3);
Delay 1 hunks, 1 statements
- ...yzi(),[i]:s} + ...Ezi(),[i]:s}
NetworkTimeout 1 hunks, 1 statements
- ...Kzi,...i} + ...zzi,...i}
RecaptchaVerifier 1 hunks, 1 statements
- ...CQi} + ...OQi}
BrowserPopupRedirectResolver 1 hunks, 1 statements
- ...xZi,width:e.toString(),height:n.toString(),top:h,left:r} + ...RZi,width:e.toString(),height:n.toString(),top:h,left:r}