EF2 Changelog

Builds / 1.14.71

Update 1.14.71

Compared with 1.14.70 · published Tue, 22 Sep 2026 02:21:54 GMT · live channel

No summary yet.

Code 120 changes in 29 classes

Minified client code with short names blanked for diffing. Class names are real.

MiniAscentOpponentPopup 1 hunks, 52 statements
+ super(),Yt(this,"body",new He),Yt(this,"onSelect",null),Yt(this,"onBack",null),this.height=730,this.contentContainer.addChild(this.body)}
+ static getInstance(){
+ return this.instance??(this.instance=new t)}
+ addText(t,i,s,e=16,n=13878960){
+ const h=new AD(t,n,IL.DEFAULT_FONT_OPTION_16);
+ return h.textSize=e,h.position.set(i,s),this.body.addChild(h),h}
+ setData(t){
+ for(const e of this.body.removeChildren())e.destroy({
+ children:!0}
+ );
+ const i=this.addText(`${
+ t.floor}
+ 층 · 상대 선택`,0,22,24,16767332);
+ i.x=(this.width-i.width)/2,this.addText("상대 한 명을 선택하세요. 패배해도 군단과 층은 유지됩니다.",28,83,15),t.opponents.forEach((t,i)=>{
+ const s=122+166*i;
+ this.body.addChild((new Ff).roundRect(24,s,568,150,12).fill(1512465).stroke({
+ color:5588789,width:1}
+ ));
+ const e=t.training?`훈련 상대 ${
+ i+1}
+ `:t.name;
+ this.addText(e,40,s+10,18,16777215);
+ const n=t.enemy.filter(t=>t.heroKindNum>0);
+ n.forEach((t,i)=>{
+ const e=40+80*i,n=new V3;
+ n.setDataWithKindNum(t.heroKindNum,t.heroTrans),n.scale.set(.55),n.position.set(e,s+40),this.body.addChild(n),this.addText(`Lv.${
+ t.heroLevel??10}
+ `,e,s+87,13),this.addText(`×${
+ t.soldierTiers.reduce((t,i)=>t+i.count,0)}
+ `,e,s+109,14)}
+ );
+ const h=new TG("편성 확인");
+ h.width=128,h.height=48,h.position.set(448,s+61),h.onClick=()=>{
+ const i=this.onSelect;
+ this.onSelect=null,this.hideImmediately(),null==i||i(t)}
+ ,this.body.addChild(h)}
+ ),this.addText("상대는 해당 층의 편성 기록입니다. 기록이 부족하면 훈련 상대가 등장합니다.",28,633,14).setWrapWidth(560);
+ const s=new TG("로비로");
+ s.width=240,s.height=48,s.color=TG.BROWN,s.position.set((this.width-240)/2,674),s.onClick=()=>this.onCloseBtnClick(),this.body.addChild(s),this.drawPanel()}
+ onCloseBtnClick(){
+ var t;
+ this.hideImmediately(),null==(t=this.onBack)||t.call(this)}
+ }
+ ;
+ Xt(aPi,"MiniAscentOpponentPopup"),Yt(aPi,"instance");
+ let cPi=aPi;
+ const lPi=Object.freeze(Object.defineProperty({
+ __proto__:null,MiniAscentOpponentPopup:cPi}
+ ,Symbol.toStringTag,{
+ value:"Module"}
+ )),uPi=class t extends wvi{
+ constructor(){
MiniAscentResultPopup 2 hunks, 48 statements
- super(),Yt(this,"lblHeader"),Yt(this,"lblCleared"),Yt(this,"lblCoin"),Yt(this,"btnExit"),Yt(this,"onExit",null),this.btnClose.visible=!1,this.title=sB.getText("","도전 결과"),this.lblHeader=new AD("",14708828,IL.DEFAULT_OUTLINE_FONT_OPTION_24),this.lblHeader.textColor=14708828,this.contentContainer.addChild(this.lblHeader),this.lblCleared=new AD("",16767332,IL.DEFAULT_OUTLINE_FONT_OPTION_32),this.lblCleared.textColor=16767332,this.contentContainer.addChild(this.lblCleared),this.lblCoin=new AD("",IL.DEFAULT_COLOR,IL.DEFAULT_FONT_OPTION_16),this.contentContainer.addChild(this.lblCoin),this.btnExit=new TG(sB.getText("COMMON_1","확인")),this.btnExit.onClick=this.onExitClick.bind(this),this.contentContainer.addChild(this.btnExit)}
- static getInstance(){
- return this._instance||(this._instance=new t),this._instance}
- setData(t){
- const i=this.width;
- let s=80;
- this.lblHeader.text=sB.getText("","##에서 패배했습니다.").replace(/##/g,Evi(t.floor)),this.lblHeader.x=.5*(i-this.lblHeader.width),this.lblHeader.y=s,s+=50,this.lblCleared.text=sB.getText("","## 클리어").replace(/##/g,Evi(t.cleared)),this.lblCleared.x=.5*(i-this.lblCleared.width),this.lblCleared.y=s,s+=56,this.lblCoin.text=sB.getText("","획득 코인 : ##").replace(/##/g,String(t.runCoin)),this.lblCoin.x=.5*(i-this.lblCoin.width),this.lblCoin.y=s,s+=50,this.btnExit.width=240,this.btnExit.x=.5*(i-this.btnExit.width),this.btnExit.y=s,s+=this.btnExit.height+30,this.height=s}
- onExitClick(){
- const t=this.onExit;
- this.onExit=null,this.hide(),queueMicrotask(()=>{
- t&&t()}
- )}
- onBackButton(){
- return this.onExitClick(),!0}
- }
- ;
- Xt(Ovi,"MiniAscentResultPopup"),Yt(Ovi,"_instance");
- let kvi=Ovi;
- const xvi=Object.freeze(Object.defineProperty({
- __proto__:null,MiniAscentResultPopup:kvi}
- ,Symbol.toStringTag,{
- value:"Module"}
- )),Rvi=class t extends DG{
- constructor(){
+ super(),Yt(this,"lblHeader"),Yt(this,"lblCleared"),Yt(this,"lblCoin"),Yt(this,"btnExit"),Yt(this,"onExit",null),this.btnClose.visible=!1,this.title=sB.getText("","도전 결과"),this.lblHeader=new AD("",14708828,IL.DEFAULT_OUTLINE_FONT_OPTION_24),this.lblHeader.textColor=14708828,this.contentContainer.addChild(this.lblHeader),this.lblCleared=new AD("",16767332,IL.DEFAULT_OUTLINE_FONT_OPTION_32),this.lblCleared.textColor=16767332,this.contentContainer.addChild(this.lblCleared),this.lblCoin=new AD("",IL.DEFAULT_COLOR,IL.DEFAULT_FONT_OPTION_16),this.contentContainer.addChild(this.lblCoin),this.btnExit=new TG(sB.getText("COMMON_1","확인")),this.btnExit.onClick=this.onExitClick.bind(this),this.contentContainer.addChild(this.btnExit)}
+ static getInstance(){
+ return this._instance||(this._instance=new t),this._instance}
+ setData(t){
+ const i=this.width;
+ let s=80;
+ this.lblHeader.text=sB.getText("","##에서 패배했습니다.").replace(/##/g,Tvi(t.floor)),this.lblHeader.x=.5*(i-this.lblHeader.width),this.lblHeader.y=s,s+=50,this.lblCleared.text=sB.getText("","## 클리어").replace(/##/g,Tvi(t.cleared)),this.lblCleared.x=.5*(i-this.lblCleared.width),this.lblCleared.y=s,s+=56,this.lblCoin.text=sB.getText("","군단과 현재 층이 유지됩니다. 다시 도전하세요."),this.lblCoin.x=.5*(i-this.lblCoin.width),this.lblCoin.y=s,s+=50,this.btnExit.width=240,this.btnExit.x=.5*(i-this.btnExit.width),this.btnExit.y=s,s+=this.btnExit.height+30,this.height=s}
+ onExitClick(){
+ const t=this.onExit;
+ this.onExit=null,this.hide(),queueMicrotask(()=>{
+ t&&t()}
+ )}
+ onBackButton(){
+ return this.onExitClick(),!0}
+ }
+ ;
+ Xt(pPi,"MiniAscentResultPopup"),Yt(pPi,"_instance");
+ let gPi=pPi;
+ const mPi=Object.freeze(Object.defineProperty({
+ __proto__:null,MiniAscentResultPopup:gPi}
+ ,Symbol.toStringTag,{
+ value:"Module"}
+ )),wPi=class t extends DG{
+ constructor(){
CrowKnightBullet1 5 hunks, 43 statements
+ function bZ(t){
+ return{
+ left:t.x-t.hitWidth/2,right:t.x+t.hitWidth/2,top:t.y-t.hitHeight-t.airHeight,bottom:t.y-.2*t.hitHeight-t.airHeight}
+ }
+ function MZ(t,i,s,e,n,h){
+ const r=h.x-t,o=h.y-h.hitHeight/2-h.airHeight-i,a=r*s+o*e;
+ if(a<0||a>n)return-1;
+ const c=r*r+o*o-a*a;
+ return c>1600?-1:Math.max(0,a-Math.sqrt(1600-c))}
+ function yZ(t,i,s,e,n,h){
+ const r=bZ(h);
+ let o=0,a=n;
+ const c=[[t,s,r.left,r.right],[i,e,r.top,r.bottom]];
+ for(const[l,u,d,f]of c){
+ if(Math.abs(u)<1e-9){
+ if(l<d||l>f)return-1;
+ continue}
+ const t=(d-l)/u,i=(f-l)/u;
+ if(o=Math.max(o,Math.min(t,i)),a=Math.min(a,Math.max(t,i)),o>a)return-1}
+ return o}
+ function EZ(t,i,s,e,n,h){
+ const r=MZ(t,i,s,e,n,h),o=yZ(t,i,s,e,n,h);
+ return r<0?o:o<0?r:Math.min(r,o)}
+ function AZ(t,i,s){
+ const e=s.x-t,n=s.y-s.hitHeight/2-s.airHeight-i;
+ if(e*e+n*n<=3136)return!0;
+ const h=bZ(s);
+ return t>=h.left-16&&t<=h.right+16&&i>=h.top-16&&i<=h.bottom+16}
+ Xt(bZ,"hitBox"),Xt(MZ,"circleEnter"),Xt(yZ,"boxEnter"),Xt(EZ,"rayEnterDistance"),Xt(AZ,"isImpact");
- const e=this.vx/s,n=this.vy/s,h=t.HIT_RADIUS,r=h*h,o=s*t.LIFETIME,a=this.x,c=this.y;
+ const e=this.vx/s,n=this.vy/s,h=s*t.LIFETIME,r=this.x,o=this.y;
- const s=i.x-a,h=i.y-i.hitHeight/2-i.airHeight-c,f=s*e+h*n;
- if(f<0||f>o)continue;
- const p=s*s+h*h-f*f;
- if(p>r)continue;
- const g=f-Math.sqrt(r-p);
- g<l&&(l=g,u=i)}
+ const s=EZ(r,o,e,n,h,i);
+ s>=0&&s<a&&(a=s,c=i)}
- if(i&&!(this.flightTimer<this.hitFrame)){
- if(i.isAlive&&!i.isUntagetable){
- const s=t.IMPACT_R,e=i.x-this.x,n=i.y-i.hitHeight/2-i.airHeight-this.y;
- if(e*e+n*n<=s*s)return this.hasHit=!0,this.vx=0,this.vy=0,this.visible=!1,this.owner.doDamage(i,this.damagePercent,!0),this.showHitEffect(this.resolvedHitClassName),this.owner.evolStage>=1&&i.stun(30),void this.remove()}
- this.flightTimer>this.hitFrame+t.GRACE&&(this.hitTarget=null)}
- }
+ return!i||this.flightTimer<this.hitFrame?void 0:i.isAlive&&!i.isUntagetable&&AZ(this.x,this.y,i)?(this.hasHit=!0,this.vx=0,this.vy=0,this.visible=!1,this.owner.doDamage(i,this.damagePercent,!0),this.showHitEffect(this.resolvedHitClassName),this.owner.evolStage>=1&&i.stun(30),void this.remove()):void(this.flightTimer>this.hitFrame+t.GRACE&&(this.hitTarget=null))}
- Xt(bZ,"CrowKnightBullet1"),Yt(bZ,"LIFETIME",60),Yt(bZ,"HIT_RADIUS",40),Yt(bZ,"IMPACT_R",56),Yt(bZ,"GRACE",3);
+ Xt(SZ,"CrowKnightBullet1"),Yt(SZ,"LIFETIME",60),Yt(SZ,"GRACE",3);
MiniAscentShopPopup 12 hunks, 39 statements
- super(),Yt(this,"body",new He),Yt(this,"shop",null),Yt(this,"busy",!1),Yt(this,"loaded",!1),Yt(this,"failed",!1),this.height=746,this.contentContainer.addChild(this.body)}
+ super(),Yt(this,"body",new He),Yt(this,"shop",null),Yt(this,"busy",!1),Yt(this,"loaded",!1),Yt(this,"failed",!1),this.height=606,this.contentContainer.addChild(this.body)}
- const i=Nvi("##군단 · ").replace(/##/g,String((t.targetCorp??0)+1));
+ var i;
+ const s=Nvi("##군단 · ").replace(/##/g,String((t.targetCorp??0)+1)),e=null==(i=uvi.getInstance().run)?void 0:i.corps[t.targetCorp];
- case"startSoldierAdd":return{
- title:i+Nvi("시작 병사 +3명"),badge:"+3",desc:Nvi("다음 도전부터 해당 군단 병사 +3명"),rare:!1}
+ case"heroReplace":return{
+ title:s+Nvi("영웅 교체"),badge:"↔",desc:Nvi("표시된 영웅으로 교체 · 레벨과 강화 유지"),rare:!1}
- case"startSoldierUp":return{
- title:i+Nvi("시작 병사 3명 강화"),badge:"↑3",desc:Nvi("다음 도전부터 시작 병사 3명 강화"),rare:!1}
+ case"heroUp":return{
+ title:s+Nvi("영웅 강화"),badge:"↑",desc:e?`${
+ Svi(e.heroStage)}
+  → ${
+ Svi(e.heroStage+1)}
+ `:"",rare:!1}
- case"startHeroUp":return{
- title:i+Nvi("시작 영웅 강화"),badge:"↑1",desc:Nvi("다음 도전부터 시작 영웅 1단계 강화"),rare:!1}
- ;
- case"soldierAddChance":return{
- title:Nvi("+4명 추가 카드"),badge:"+4",desc:Nvi("등장 확률 +10%p · 이후 성장 카드부터"),rare:!0}
- ;
- case"soldierUpChance":return{
- title:Nvi("4명 강화 카드"),badge:"↑4",desc:Nvi("등장 확률 +10%p · 이후 성장 카드부터"),rare:!0}
+ case"soldierUp":return{
+ title:s+Nvi("병사 3명 강화"),badge:"↑3",desc:Nvi("낮은 단계부터 3명 진화·초월"),rare:!1}
- if(n.x=this.width-44-n.width,this.centered(Nvi("시즌 누적 · 시작 상품은 다음 도전부터 적용"),147,15,10331309),!this.loaded||!this.shop){
+ if(n.x=this.width-44-n.width,this.centered(Nvi("구매 즉시 적용 · 시즌 동안 성장 유지"),147,15,10331309),!this.loaded||!this.shop){
- var s,n;
+ var s,n,h,r;
- const o=this.addLabel(r.badge,0,h+26,28,r.rare?16767332:14988422);
- o.x=72-o.width/2,this.addLabel(r.title,120,h+12,17,t.sold?9275262:16777215,290),this.addLabel(r.desc,120,h+41,14,11379345,290);
+ const c=null==(s=e.run)?void 0:s.corps[t.targetCorp],l="heroReplace"===t.type?t.heroKind:"heroUp"===t.type&&c?Avi(c):null==c?void 0:c.soldierKind;
+ if(l){
+ const i=new V3,s="heroReplace"===t.type&&((null==c?void 0:c.heroStage)??0)>0?null==(n=Tx.getInstance().getBookVO(l))?void 0:n.evolKindNum:0;
+ i.setDataWithKindNum(s||l,"soldierUp"===t.type?0:Math.max(0,((null==c?void 0:c.heroStage)??0)-1)),i.scale.set(Math.min(62/i.width,60/i.height)),i.position.set(72-i.width/2,o+(88-i.height)/2),this.body.addChild(i)}
+ this.addLabel(a.title,120,o+12,17,t.sold?9275262:16777215,290),this.addLabel(a.desc,120,o+41,14,11379345,290);
- ),0===this.shop.offers.length&&this.centered(Nvi("모든 상점 강화를 완료했습니다"),315,18),this.centered(Nvi("+4명 카드 등장 확률 · 추가 ##% / 강화 @@%").replace(/##/g,String(this.shop.soldierAddChance)).replace(/@@/g,String(this.shop.soldierUpChance)),484,15,14988422),this.shop.startingBonuses.forEach((t,i)=>{
- const s=24+144*i;
- this.body.addChild((new Ff).roundRect(s,516,136,100,10).fill(3156255)),this.addLabel(Nvi("##군단 시작").replace(/##/g,String(i+1)),s+10,524,15,14988422),this.addLabel(Mvi(t.heroStage),s+10,547,14,16777215);
- const e=t.counts.flatMap((t,i)=>t>0?[`${
- yvi(i)}
-  ×${
- t}
- `]:[]);
- this.addLabel(e.join(" · "),s+10,568,11,12432291,116)}
- );
+ ),0===this.shop.offers.length&&this.centered(Nvi("모든 상점 강화를 완료했습니다"),315,18);
- h.color=TG.BROWN,h.width=568,h.height=54,h.position.set(24,634),h.activated=!this.busy&&!(null==(i=e.run)?void 0:i.battlePending)&&this.shop.canRefresh&&((null==(s=e.season)?void 0:s.coin)??0)>=this.shop.refreshPrice;
+ h.color=TG.BROWN,h.width=568,h.height=54,h.position.set(24,492),h.activated=!this.busy&&!(null==(i=e.run)?void 0:i.battlePending)&&this.shop.canRefresh&&((null==(s=e.season)?void 0:s.coin)??0)>=this.shop.refreshPrice;
- ,this.body.addChild(h),this.centered(Nvi("상품을 모두 구매하면 무료로 새로고침됩니다"),708,14,10331309),this.drawPanel()}
+ ,this.body.addChild(h),this.centered(Nvi("상품을 모두 구매하면 무료로 새로고침됩니다"),566,14,10331309),this.drawPanel()}
- const s=null!=i.targetCorp?Nvi("##군단 시작 강화 누적 · 다음 도전부터 적용").replace(/##/g,String(i.targetCorp+1)):void 0!==i.autoRefreshed?Nvi("4명 카드 등장 확률이 올랐습니다"):Nvi("상점이 갱신되었습니다");
+ const s=null!=i.targetCorp?Nvi("##군단에 적용했습니다").replace(/##/g,String(i.targetCorp+1)):void 0!==i.autoRefreshed?Nvi("상품을 구매했습니다"):Nvi("상점이 갱신되었습니다");
Pi 31 hunks, 31 statements
- i++,s=set(s))t[i]=s;
+ i++,s=oet(s))t[i]=s;
- (0,Jst.bytes)(t);
+ (0,set.bytes)(t);
- function get(t){
+ function bet(t){
- if((0,Jst.bytes)(i),i.length<t)throw new Error(`aes: wrong destination length, expected at least ${
+ if((0,set.bytes)(i),i.length<t)throw new Error(`aes: wrong destination length, expected at least ${
- (0,Jst.bytes)(i,tet),(0,Jst.bytes)(s);
+ (0,set.bytes)(i,het),(0,set.bytes)(s);
- (0,Jst.bytes)(s,tet),(0,Jst.bytes)(e),n=bet(e.length,n);
+ (0,set.bytes)(s,het),(0,set.bytes)(e),n=Tet(e.length,n);
- if((0,Jst.bytes)(t),t.length%tet!=0)throw new Error("aes/(cbc-ecb).decrypt ciphertext should consist of blocks with size 16")}
+ if((0,set.bytes)(t),t.length%het!=0)throw new Error("aes/(cbc-ecb).decrypt ciphertext should consist of blocks with size 16")}
- (0,Jst.bytes)(t);
+ (0,set.bytes)(t);
- Xt(pet,"ei"),Xt(get,"ti"),Xt(met,"ni"),Xt(wet,"ri"),Xt(vet,"ii"),Xt(_et,"oi"),Xt(bet,"si"),Xt(Met,"ai"),Xt(yet,"ci"),Xt(Eet,"li"),Xt(Aet,"di"),Xt(Tet,"ui"),Xt(Cet,"hi"),Xt(Iet,"fi"),Gst.ctr=(0,Zst.wrapCipher)({
+ Xt(_et,"ei"),Xt(bet,"ti"),Xt(Met,"ni"),Xt(yet,"ri"),Xt(Eet,"ii"),Xt(Aet,"oi"),Xt(Tet,"si"),Xt(Cet,"ai"),Xt(Iet,"ci"),Xt(Oet,"li"),Xt(ket,"di"),Xt(xet,"ui"),Xt(Ret,"hi"),Xt(Pet,"fi"),$st.ctr=(0,net.wrapCipher)({
- if((0,Jst.bytes)(s),void 0!==e&&((0,Jst.bytes)(e),!(0,Zst.isAligned32)(e)))throw new Error("unaligned destination");
+ if((0,set.bytes)(s),void 0!==e&&((0,set.bytes)(e),!(0,net.isAligned32)(e)))throw new Error("unaligned destination");
- return Xt(s,"n"),(0,Jst.bytes)(t),(0,Jst.bytes)(i,tet),{
+ return Xt(s,"n"),(0,set.bytes)(t),(0,set.bytes)(i,het),{
- (0,Jst.bytes)(t);
+ (0,set.bytes)(t);
- const n=get(t),h=bet(i.length,e),r=[n];
+ const n=bet(t),h=Tet(i.length,e),r=[n];
- (0,Jst.bytes)(t),(0,Jst.bytes)(i,16);
+ (0,set.bytes)(t),(0,set.bytes)(i,16);
- const h=get(t);
+ const h=bet(t);
- (0,Jst.bytes)(s);
+ (0,set.bytes)(s);
- return Xt(s,"n"),(0,Jst.bytes)(t),(0,Jst.bytes)(i,16),{
+ return Xt(s,"n"),(0,set.bytes)(t),(0,set.bytes)(i,16),{
- if((0,Jst.bytes)(t),(0,Jst.bytes)(i),void 0!==s&&(0,Jst.bytes)(s),i.length<8)throw new Error("aes/gcm: invalid nonce length");
+ if((0,set.bytes)(t),(0,set.bytes)(i),void 0!==s&&(0,set.bytes)(s),i.length<8)throw new Error("aes/gcm: invalid nonce length");
- (0,Jst.bytes)(t);
+ (0,set.bytes)(t);
- if((0,Jst.bytes)(t),t.length<16)throw new Error("aes/gcm: ciphertext less than tagLen (16)");
+ if((0,set.bytes)(t),t.length<16)throw new Error("aes/gcm: ciphertext less than tagLen (16)");
- if((0,Jst.bytes)(i,16),!ket(t))throw new Error("_encryptBlock accepts result of expandKeyLE");
+ if((0,set.bytes)(i,16),!Let(t))throw new Error("_encryptBlock accepts result of expandKeyLE");
- if((0,Jst.bytes)(i,16),!ket(t))throw new Error("_decryptBlock accepts result of expandKeyLE");
+ if((0,set.bytes)(i,16),!Let(t))throw new Error("_decryptBlock accepts result of expandKeyLE");
- return Xt(o,"a"),Xt(a,"c"),Xt(c,"l"),(0,Jst.bytes)(t,16,24,32),(0,Jst.bytes)(i),h(i.length),void 0!==s&&((0,Jst.bytes)(s),e(s.length)),{
+ return Xt(o,"a"),Xt(a,"c"),Xt(c,"l"),(0,set.bytes)(t,16,24,32),(0,set.bytes)(i),h(i.length),void 0!==s&&((0,set.bytes)(s),e(s.length)),{
- (0,Jst.bytes)(t),n(t.length);
+ (0,set.bytes)(t),n(t.length);
- (0,Jst.bytes)(t),r(t.length);
+ (0,set.bytes)(t),r(t.length);
- const s=get(t),e=i.length/8-1;
+ const s=bet(t),e=i.length/8-1;
- if((0,Jst.bytes)(i),!i.length||i.length%8!=0)throw new Error("invalid plaintext length");
+ if((0,set.bytes)(i),!i.length||i.length%8!=0)throw new Error("invalid plaintext length");
- if((0,Jst.bytes)(i),i.length%8!=0||i.length<24)throw new Error("invalid ciphertext length");
+ if((0,set.bytes)(i),i.length%8!=0||i.length<24)throw new Error("invalid ciphertext length");
- if((0,Jst.bytes)(i),!i.length)throw new Error("invalid plaintext length");
+ if((0,set.bytes)(i),!i.length)throw new Error("invalid plaintext length");
- if((0,Jst.bytes)(i),i.length<16)throw new Error("invalid ciphertext length");
+ if((0,set.bytes)(i),i.length<16)throw new Error("invalid ciphertext length");
- expandKeyLE:pet,expandKeyDecLE:get,encrypt:vet,decrypt:_et,encryptBlock:xet,decryptBlock:Ret,ctrCounter:Met,ctr32:yet}
+ expandKeyLE:_et,expandKeyDecLE:bet,encrypt:Eet,decrypt:Aet,encryptBlock:Det,decryptBlock:Get,ctrCounter:Cet,ctr32:Iet}
MiniAscentFlow 7 hunks, 31 statements
- const n=await s.loadFormation(e.ally.length),{
- MiniAscentDeployPopup:h}
+ const{
+ MiniAscentOpponentPopup:n}
- MiniAscentDeployPopup:t}
+ MiniAscentOpponentPopup:t}
- MiniAscentDeployPopup:t}
+ MiniAscentOpponentPopup:t}
- if(r.setData(e,n,Jwi(e.floor)),r.onStart=i=>{
- s.saveFormation(i),t.startFloor(i)}
+ if(h.setData(e),h.onSelect=s=>{
+ t.showDeploy({
+ ...e,enemy:s.enemy,opponentId:s.id}
+ ,i)}
+ ,h.onBack=()=>{
+ i?t.backToLobby():t.showLobby()}
- r.onBack=()=>{
- i?t.backToLobby():t.showLobby()}
+ h.show()}
+ static async showDeploy(i,s){
+ const e=uvi.getInstance(),n=await e.loadFormation(i.ally.length),{
+ MiniAscentDeployPopup:h}
+ =await ti(async()=>{
+ const{
+ MiniAscentDeployPopup:t}
+ =await Promise.resolve().then(()=>fPi);
+ return{
+ MiniAscentDeployPopup:t}
+ }
+ ,void 0),r=h.getInstance();
+ r.setData(i,n,svi(i.floor)),r.onStart=s=>{
+ e.saveFormation(s),t.startFloor(s,i.opponentId)}
+ ,r.onBack=()=>{
+ t.openDeploy(s)}
- static async startFloor(i){
+ static async startFloor(i,s){
- const s=await ovi.getInstance().battleStart(),e=cvi.getInstance();
- e.setMapIndex(Jwi(s.floor)),e.setTeams(zwi({
- ...s,ally:svi(s.ally,i)}
- )),e.onFinish=i=>{
+ const e=await uvi.getInstance().battleStart(s,i),n=fvi.getInstance();
+ n.setMapIndex(svi(e.floor)),n.setTeams(Qwi(e)),n.onFinish=i=>{
MiniAscentCorpsPanel 11 hunks, 27 statements
- return[sB.getText("","일반"),sB.getText("","진화"),sB.getText("","1초"),sB.getText("","2초"),sB.getText("","3초")][t]??""}
- function Evi(t){
+ case"heroLevel":return`Lv.${
+ s.heroLevel??10}
+  → ${
+ (s.heroLevel??10)+(t.amount??2)}
+ `;
+ case"soldierLevel":return`Lv.${
+ s.soldierLevel??10}
+  → ${
+ (s.soldierLevel??10)+(t.amount??2)}
+ `;
+ case"heroLevel":return sB.getText("","##군단 영웅 레벨 +@@").replace(/##/g,String(t.corp+1)).replace(/@@/g,String(t.amount??2));
+ case"soldierLevel":return sB.getText("","##군단 병사 레벨 +@@").replace(/##/g,String(t.corp+1)).replace(/@@/g,String(t.amount??2));
- Xt(_vi,"unitName"),Xt(bvi,"heroIconKind"),Xt(Mvi,"heroStageLabel"),Xt(yvi,"soldierStageLabel"),Xt(Evi,"floorText"),Xt(Avi,"cardTitle"),Xt(Svi,"cardDesc"),Xt(Tvi,"rewardsText");
+ Xt(Evi,"unitName"),Xt(Avi,"heroIconKind"),Xt(Svi,"heroStageLabel"),Xt(Tvi,"floorText"),Xt(Cvi,"cardTitle"),Xt(Ivi,"cardDesc"),Xt(Ovi,"rewardsText");
- super(),Yt(this,"rows",[]),this.eventMode="none";
+ super(),Yt(this,"rows",[]),Yt(this,"visibleRows",4),this.eventMode="none";
+ const n=new AD("",14988422,IL.DEFAULT_FONT_OPTION_16);
+ n.textSize=12,s.addChild(n);
- hero:e,soldiers:n,empty:h,noSoldiers:a}
+ root:s,hero:e,levels:n,soldiers:h,empty:r,noSoldiers:c}
- this.rows.forEach((s,e)=>{
+ this.visibleRows=Math.max(4,(null==i?void 0:i.length)??4),this.rows.forEach((s,e)=>{
- s.hero.visible=!!h,s.empty.visible=!h,s.noSoldiers.visible=!1;
+ s.root.visible=e<this.visibleRows,s.hero.visible=!!h,s.levels.visible=!!h,s.empty.visible=!h,s.noSoldiers.visible=!1;
- s.hero.setDataWithKindNum(bvi(h),Math.max(0,h.heroStage-1)),s.hero.position.set((118-s.hero.width)/2,(t.ROW_H-s.hero.height)/2);
+ s.levels.text=`영웅 ${
+ h.heroLevel??10}
+  · 병사 ${
+ h.soldierLevel??10}
+ `,s.levels.position.set(6,72),s.hero.setDataWithKindNum(Avi(h),Math.max(0,h.heroStage-1)),s.hero.position.set((118-s.hero.width)/2,(72-s.hero.height)/2);
- return 5*t.ROW_H+4*t.GAP}
+ return this.visibleRows*t.ROW_H+(this.visibleRows-1)*t.GAP}
MiniAscentLobbyPopup 5 hunks, 16 statements
- super(),Yt(this,"countdownTimer",new ex(1e3)),Yt(this,"lblTitle"),Yt(this,"lblInfo"),Yt(this,"lblPeriod"),Yt(this,"lblRun"),Yt(this,"corps"),Yt(this,"btnMain"),Yt(this,"btnShop"),Yt(this,"btnRewards"),Yt(this,"btnGiveUp"),Yt(this,"busy",!1),this.lblTitle=new AD(sB.getText("","미니게임 등반"),16767332,IL.DEFAULT_OUTLINE_FONT_OPTION_24),this.lblTitle.textColor=16767332,this.contentContainer.addChild(this.lblTitle),this.lblInfo=new AD("",IL.DEFAULT_COLOR,IL.DEFAULT_FONT_OPTION_16),this.contentContainer.addChild(this.lblInfo),this.lblPeriod=new AD("",10134450,IL.DEFAULT_FONT_OPTION_15),this.lblPeriod.textColor=10134450,this.contentContainer.addChild(this.lblPeriod),this.lblRun=new AD("",16777215,IL.DEFAULT_OUTLINE_FONT_OPTION_18),this.lblRun.textColor=16777215,this.contentContainer.addChild(this.lblRun),this.corps=new Ivi,this.contentContainer.addChild(this.corps),this.btnMain=new TG(""),this.btnMain.width=Ivi.WIDTH,this.btnMain.height=56,this.btnMain.onClick=this.onMainClick.bind(this),this.contentContainer.addChild(this.btnMain),this.btnShop=new TG(sB.getText("","상점")),this.btnShop.color=TG.BROWN,this.btnShop.onClick=this.onShopClick.bind(this),this.contentContainer.addChild(this.btnShop),this.btnRewards=new TG(sB.getText("","층 보상")),this.btnRewards.color=TG.BROWN,this.btnRewards.onClick=this.onRewardsClick.bind(this),this.contentContainer.addChild(this.btnRewards),this.btnGiveUp=new TG(sB.getText("","포기")),this.btnGiveUp.color=TG.GRAY,this.btnGiveUp.onClick=this.onGiveUpClick.bind(this),this.contentContainer.addChild(this.btnGiveUp);
+ super(),Yt(this,"countdownTimer",new ex(1e3)),Yt(this,"lblTitle"),Yt(this,"lblInfo"),Yt(this,"lblPeriod"),Yt(this,"lblRun"),Yt(this,"corps"),Yt(this,"btnMain"),Yt(this,"btnShop"),Yt(this,"btnRewards"),Yt(this,"busy",!1),this.lblTitle=new AD(sB.getText("","미니게임 등반"),16767332,IL.DEFAULT_OUTLINE_FONT_OPTION_24),this.lblTitle.textColor=16767332,this.contentContainer.addChild(this.lblTitle),this.lblInfo=new AD("",IL.DEFAULT_COLOR,IL.DEFAULT_FONT_OPTION_16),this.contentContainer.addChild(this.lblInfo),this.lblPeriod=new AD("",10134450,IL.DEFAULT_FONT_OPTION_15),this.lblPeriod.textColor=10134450,this.contentContainer.addChild(this.lblPeriod),this.lblRun=new AD("",16777215,IL.DEFAULT_OUTLINE_FONT_OPTION_18),this.lblRun.textColor=16777215,this.contentContainer.addChild(this.lblRun),this.corps=new xvi,this.contentContainer.addChild(this.corps),this.btnMain=new TG(""),this.btnMain.width=xvi.WIDTH,this.btnMain.height=56,this.btnMain.onClick=this.onMainClick.bind(this),this.contentContainer.addChild(this.btnMain),this.btnShop=new TG(sB.getText("","상점")),this.btnShop.color=TG.BROWN,this.btnShop.onClick=this.onShopClick.bind(this),this.contentContainer.addChild(this.btnShop),this.btnRewards=new TG(sB.getText("","층 보상")),this.btnRewards.color=TG.BROWN,this.btnRewards.onClick=this.onRewardsClick.bind(this),this.contentContainer.addChild(this.btnRewards);
- this.lblInfo.text=i?sB.getText("","코인 ##1   최고 ##2   레벨 ##3").replace(/##1/g,String(i.coin)).replace(/##2/g,Evi(i.bestFloor)).replace(/##3/g,String(i.allyLevel)):"",this.updatePeriod(),this.lblRun.text=s?sB.getText("","진행 중 — ## 도전 차례").replace(/##/g,Evi(s.floor)):t.lastDefeat?`${
+ this.lblInfo.text=i?sB.getText("","코인 ##1   최고 ##2").replace(/##1/g,String(i.coin)).replace(/##2/g,Tvi(i.bestFloor)).replace(/##3/g,String(i.allyLevel)):"",this.updatePeriod(),this.lblRun.text=t.lastDefeat&&s?sB.getText("","##층에서 패배했습니다. 군단을 정비하고 다시 도전하세요.").replace(/##/g,String(s.floor)):s?sB.getText("","진행 중 — ## 도전 차례").replace(/##/g,Tvi(s.floor)):t.lastDefeat?`${
- `:sB.getText("","새 도전을 시작하세요"),this.corps.setData((null==s?void 0:s.corps)??null),this.corps.visible=!!s||!t.lastDefeat,s?s.offer?this.btnMain.text=sB.getText("","성장 카드 선택"):this.btnMain.text=sB.getText("","## 도전").replace(/##/g,Evi(s.floor)):this.btnMain.text=sB.getText("","도전 시작"),this.btnMain.activated=e,this.btnShop.activated=e,this.btnRewards.activated=e,this.btnGiveUp.visible=!!s,this.updateLayout()}
+ `:sB.getText("","새 도전을 시작하세요"),this.corps.setData((null==s?void 0:s.corps)??null),this.corps.visible=!!s||!t.lastDefeat,s?s.offer?this.btnMain.text=sB.getText("","성장 카드 선택"):this.btnMain.text=sB.getText("","## 도전").replace(/##/g,Tvi(s.floor)):this.btnMain.text=sB.getText("","도전 시작"),this.btnMain.activated=e,this.btnShop.activated=e&&!!s,this.btnRewards.activated=e,this.updateLayout()}
- const n=this.btnGiveUp.visible?[this.btnShop,this.btnRewards,this.btnGiveUp]:[this.btnShop,this.btnRewards],h=Ivi.WIDTH,r=(h-12*(n.length-1))/n.length;
+ const n=[this.btnShop,this.btnRewards],h=xvi.WIDTH,r=(h-12*(n.length-1))/n.length;
- async onGiveUpClick(){
- if(!this.busy){
- this.busy=!0;
- try{
- const t=await ovi.getInstance().giveUp(),i=kvi.getInstance();
- i.setData(t),i.onExit=()=>this.render(),i.show()}
- catch(Wnt){
- lH.getInstance().showMessage(Wnt.message)}
- finally{
- this.busy=!1,this.render()}
- }
- }
MiniAscentDeployPopup 8 hunks, 15 statements
- this.btnStart=new TG(sB.getText("","전투 시작")),this.btnStart.width=368,this.btnStart.onClick=()=>this.finish(!0),this.contentContainer.addChild(this.btnStart),this.btnBack=new TG(sB.getText("","로비로")),this.btnBack.width=184,this.btnBack.color=TG.BROWN,this.btnBack.onClick=()=>this.finish(!1),this.contentContainer.addChild(this.btnBack)}
+ this.btnStart=new TG(sB.getText("","전투 시작")),this.btnStart.width=368,this.btnStart.onClick=()=>this.finish(!0),this.contentContainer.addChild(this.btnStart),this.btnBack=new TG(sB.getText("","상대 선택")),this.btnBack.width=184,this.btnBack.color=TG.BROWN,this.btnBack.onClick=()=>this.finish(!1),this.contentContainer.addChild(this.btnBack)}
+ const o=new AD("",16777215,IL.DEFAULT_OUTLINE_FONT_OPTION_16);
+ o.textSize=11,s.addChild(o);
- root:s,frame:e,hero:n,soldier:h,lblCount:r}
+ root:s,frame:e,hero:n,soldier:h,lblCount:r,lblLevels:o}
- this.detachStage(),this.ally=i.ally,this.formation=[...s],this.vertical=Qwi(e),this.busy=!1,this.dragSlot=-1,this.hoverSlot=-1,this.lblTitle.text=sB.getText("","## 배치").replace(/##/g,Evi(i.floor)),this.lblLevel.text=sB.getText("","아군 Lv.##1   적 Lv.##2").replace(/##1/g,String(i.allyLevel)).replace(/##2/g,String(i.enemyLevel)),this.height=Math.min(900,YA.safeHeight-48),this.fieldW=this.width-48,this.fieldH=Math.max(160,this.height-t.FIELD_TOP-t.BOTTOM_RESERVE),this.field.position.set((this.width-this.fieldW)/2,t.FIELD_TOP),this.map.texture=eS.getTexture("GW_BG2",`gwbg${
+ this.detachStage(),this.ally=i.ally,this.formation=[...s],this.vertical=evi(e),this.busy=!1,this.dragSlot=-1,this.hoverSlot=-1,this.lblTitle.text=sB.getText("","## 배치").replace(/##/g,Tvi(i.floor));
+ const n=i.opponents.find(t=>t.id===i.opponentId);
+ this.lblLevel.text=(null==n?void 0:n.training)?"훈련 상대":(null==n?void 0:n.name)??"상대 편성",this.height=Math.min(900,YA.safeHeight-48),this.fieldW=this.width-48,this.fieldH=Math.max(160,this.height-t.FIELD_TOP-t.BOTTOM_RESERVE),this.field.position.set((this.width-this.fieldW)/2,t.FIELD_TOP),this.map.texture=eS.getTexture("GW_BG2",`gwbg${
- s.root.visible=!!e,e&&(this.fillToken(s,e),s.root.x=h[t].x*this.fieldW,s.root.y=h[t].y*this.fieldH)}
+ s.root.visible=!!(null==e?void 0:e.heroKindNum),(null==e?void 0:e.heroKindNum)&&(this.fillToken(s,e),s.root.x=r[t].x*this.fieldW,s.root.y=r[t].y*this.fieldH)}
- t.soldier.visible=!!s,s&&t.soldier.setDataWithKindNum(s.kindNum);
+ t.soldier.visible=!!s,s&&t.soldier.setDataWithKindNum(s.kindNum,Math.max(0,Math.round(s.plusLevel/6)));
- `,t.hero.x=-t.hero.width/2,t.hero.y=-42;
+ `,t.lblLevels.text=`영웅 ${
+ i.heroLevel??10}
+  · 병사 ${
+ i.soldierLevel??10}
+ `,t.lblLevels.position.set(-t.lblLevels.width/2,50),t.hero.x=-t.hero.width/2,t.hero.y=-42;
- a.root.visible=!!o,o&&(this.fillToken(a,o),t!==this.dragSlot&&(a.root.x=e,a.root.y=n,a.root.alpha=1))}
+ a.root.visible=!!(null==o?void 0:o.heroKindNum),(null==o?void 0:o.heroKindNum)&&(this.fillToken(a,o),t!==this.dragSlot&&(a.root.x=e,a.root.y=n,a.root.alpha=1))}
GuildWarBattleController 4 hunks, 6 statements
- super(),Yt(this,"battleType",lF.GUILD_WAR),Yt(this,"currentAllyOffsets",[]),Yt(this,"currentEnemyOffsets",[]),Yt(this,"battleMode",1),Yt(this,"mapIndex",1),Yt(this,"zoomLevel",.7),Yt(this,"prevGameScale",1),Yt(this,"prevGameX",0),Yt(this,"prevGameY",0),Yt(this,"prevBackgroundVisible",!0),Yt(this,"prevZoomEnabled",!0),Yt(this,"hasViewStateBackup",!1),Yt(this,"heroKindNums",[60,58,78,54,56]),Yt(this,"soldierKindNums",[1,4,7,20,13]),Yt(this,"enemyHeroKindNums",[78,78,78,78,78]),Yt(this,"enemySoldierKindNums",[20,9,14,8,21]),Yt(this,"allyCorpSoldierTiers",[null,null,null,null,null]),Yt(this,"enemyCorpSoldierTiers",[null,null,null,null,null]),Yt(this,"allyKnightLevel",1),Yt(this,"enemyKnightLevel",1),Yt(this,"allyHeroTrans",null),Yt(this,"enemyHeroTrans",null),Yt(this,"allyTransPoints",null),Yt(this,"enemyTransPoints",null),Yt(this,"allyPetBuffs",null),Yt(this,"enemyPetBuffs",null),Yt(this,"enemyHeroLevelBonus",0),Yt(this,"allyHeroLevelBonus",0),Yt(this,"onComplete",null),Yt(this,"onAfterReturnToIdle",null),Yt(this,"lastReward",{
+ super(),Yt(this,"battleType",lF.GUILD_WAR),Yt(this,"currentAllyOffsets",[]),Yt(this,"currentEnemyOffsets",[]),Yt(this,"battleMode",1),Yt(this,"mapIndex",1),Yt(this,"zoomLevel",.7),Yt(this,"prevGameScale",1),Yt(this,"prevGameX",0),Yt(this,"prevGameY",0),Yt(this,"prevBackgroundVisible",!0),Yt(this,"prevZoomEnabled",!0),Yt(this,"hasViewStateBackup",!1),Yt(this,"heroKindNums",[60,58,78,54,56]),Yt(this,"soldierKindNums",[1,4,7,20,13]),Yt(this,"enemyHeroKindNums",[78,78,78,78,78]),Yt(this,"enemySoldierKindNums",[20,9,14,8,21]),Yt(this,"allyCorpSoldierTiers",[null,null,null,null,null]),Yt(this,"enemyCorpSoldierTiers",[null,null,null,null,null]),Yt(this,"allyHeroLevels",null),Yt(this,"allySoldierLevels",null),Yt(this,"enemyHeroLevels",null),Yt(this,"enemySoldierLevels",null),Yt(this,"allyKnightLevel",1),Yt(this,"enemyKnightLevel",1),Yt(this,"allyHeroTrans",null),Yt(this,"enemyHeroTrans",null),Yt(this,"allyTransPoints",null),Yt(this,"enemyTransPoints",null),Yt(this,"allyPetBuffs",null),Yt(this,"enemyPetBuffs",null),Yt(this,"enemyHeroLevelBonus",0),Yt(this,"allyHeroLevelBonus",0),Yt(this,"onComplete",null),Yt(this,"onAfterReturnToIdle",null),Yt(this,"lastReward",{
- if(i.allyHeroes)for(let t=0;
+ if(this.allyHeroLevels=i.allyHeroLevels??null,this.allySoldierLevels=i.allySoldierLevels??null,this.enemyHeroLevels=i.enemyHeroLevels??null,this.enemySoldierLevels=i.enemySoldierLevels??null,i.allyHeroes)for(let t=0;
- var e;
- const n=this.computeCorpY(i,s),h=s?this.heroKindNums[i]:this.enemyHeroKindNums[i],r=s?this.soldierKindNums[i]:this.enemySoldierKindNums[i],o=s?this.allyKnightLevel:this.enemyKnightLevel,a=s?o+this.allyHeroLevelBonus:o+this.enemyHeroLevelBonus,c=s?this.currentAllyOffsets[i]:this.currentEnemyOffsets[i];
+ var e,n,h;
+ const r=this.computeCorpY(i,s),o=s?this.heroKindNums[i]:this.enemyHeroKindNums[i],a=s?this.soldierKindNums[i]:this.enemySoldierKindNums[i],c=s?this.allyKnightLevel:this.enemyKnightLevel,l=(null==(e=s?this.allySoldierLevels:this.enemySoldierLevels)?void 0:e[i])??c,u=(null==(n=s?this.allyHeroLevels:this.enemyHeroLevels)?void 0:n[i])??c+(s?this.allyHeroLevelBonus:this.enemyHeroLevelBonus),d=s?this.currentAllyOffsets[i]:this.currentEnemyOffsets[i];
- var e;
- const n=s?this.heroKindNums[i]:this.enemyHeroKindNums[i],h=s?this.soldierKindNums[i]:this.enemySoldierKindNums[i],r=s?this.allyKnightLevel:this.enemyKnightLevel,o=s?r+this.allyHeroLevelBonus:r+this.enemyHeroLevelBonus,a=i>=t.REAR_CORP_START_INDEX_M2,c=a?t.REAR_CORP_PERP_COUNT_M2:t.FRONT_CORP_PERP_COUNT_M2,l=a?t.REAR_CORP_ALONG_COUNT_M2:t.FRONT_CORP_ALONG_COUNT_M2,u=a?t.REAR_CORP_X_SPACING_M2:t.FRONT_CORP_X_SPACING_M2,d=a?t.REAR_CORP_Y_SPACING_M2:t.FRONT_CORP_Y_SPACING_M2,f=t.SOLDIER_HERO_GAP_M2,p=t.CORP_X_START_M2[i],g=p+(c-1)*u/2,m=a?t.OFFSET_REAR:t.OFFSET_FRONT,w=s?t.ALLY_FRONT_Y_M2-m:t.ENEMY_FRONT_Y_M2+m,v=(l-1)*d+f,_=s?w+v:w-v;
+ var e,n,h;
+ const r=s?this.heroKindNums[i]:this.enemyHeroKindNums[i],o=s?this.soldierKindNums[i]:this.enemySoldierKindNums[i],a=s?this.allyKnightLevel:this.enemyKnightLevel,c=(null==(e=s?this.allySoldierLevels:this.enemySoldierLevels)?void 0:e[i])??a,l=(null==(n=s?this.allyHeroLevels:this.enemyHeroLevels)?void 0:n[i])??a+(s?this.allyHeroLevelBonus:this.enemyHeroLevelBonus),u=i>=t.REAR_CORP_START_INDEX_M2,d=u?t.REAR_CORP_PERP_COUNT_M2:t.FRONT_CORP_PERP_COUNT_M2,f=u?t.REAR_CORP_ALONG_COUNT_M2:t.FRONT_CORP_ALONG_COUNT_M2,p=u?t.REAR_CORP_X_SPACING_M2:t.FRONT_CORP_X_SPACING_M2,g=u?t.REAR_CORP_Y_SPACING_M2:t.FRONT_CORP_Y_SPACING_M2,m=t.SOLDIER_HERO_GAP_M2,w=t.CORP_X_START_M2[i],v=w+(d-1)*p/2,_=u?t.OFFSET_REAR:t.OFFSET_FRONT,b=s?t.ALLY_FRONT_Y_M2-_:t.ENEMY_FRONT_Y_M2+_,M=(f-1)*g+m,y=s?b+M:b-M;
Fr 3 hunks, 5 statements
- ),Gst.unsafe=Gst.aeskwp=Gst.aeskw=Gst.siv=Gst.gcm=Gst.cfb=Gst.cbc=Gst.ecb=Gst.ctr=void 0,Gst.expandKeyLE=pet,Gst.expandKeyDecLE=get;
- const Jst=y9,Qst=Bst,Zst=M9,tet=16,iet=new Uint8Array(tet);
- function set(t){
+ ),$st.unsafe=$st.aeskwp=$st.aeskw=$st.siv=$st.gcm=$st.cfb=$st.cbc=$st.ecb=$st.ctr=void 0,$st.expandKeyLE=_et,$st.expandKeyDecLE=bet;
+ const set=C9,eet=Wst,net=T9,het=16,ret=new Uint8Array(het);
+ function oet(t){
- i>>=1)s^=t&-(1&i),t=set(t);
+ i>>=1)s^=t&-(1&i),t=oet(t);
- Xt(set,"Fr"),Xt(eet,"zr");
+ Xt(oet,"Fr"),Xt(aet,"zr");
ServerRejected 4 hunks, 5 statements
- allyHeroes:i.map(t=>(null==t?void 0:t.heroKindNum)??0),allyHeroTrans:i.map(t=>(null==t?void 0:t.heroTrans)??0),allyCorpSoldierTiers:i.map(e),allyKnightLevel:t.allyLevel,allyHeroLevelBonus:0,allyTransPoints:null,allyPetBuffs:null,enemyHeroes:s.map(t=>(null==t?void 0:t.heroKindNum)??0),enemyHeroTrans:s.map(t=>(null==t?void 0:t.heroTrans)??0),enemyCorpSoldierTiers:s.map(e),enemyKnightLevel:t.enemyLevel,enemyHeroLevelBonus:0,enemyTransPoints:null,enemyPetBuffs:null}
+ allyHeroLevels:i.map(i=>(null==i?void 0:i.heroLevel)??t.allyLevel),allySoldierLevels:i.map(i=>(null==i?void 0:i.soldierLevel)??t.allyLevel),enemyHeroLevels:s.map(i=>(null==i?void 0:i.heroLevel)??t.enemyLevel),enemySoldierLevels:s.map(i=>(null==i?void 0:i.soldierLevel)??t.enemyLevel),allyHeroes:i.map(t=>(null==t?void 0:t.heroKindNum)??0),allyHeroTrans:i.map(t=>(null==t?void 0:t.heroTrans)??0),allyCorpSoldierTiers:i.map(e),allyKnightLevel:t.allyLevel,allyHeroLevelBonus:0,allyTransPoints:null,allyPetBuffs:null,enemyHeroes:s.map(t=>(null==t?void 0:t.heroKindNum)??0),enemyHeroTrans:s.map(t=>(null==t?void 0:t.heroTrans)??0),enemyCorpSoldierTiers:s.map(e),enemyKnightLevel:t.enemyLevel,enemyHeroLevelBonus:0,enemyTransPoints:null,enemyPetBuffs:null}
- return s?"heroUp"===t.type?s.heroKind:s.soldierKind||t.soldierKind||0:0}
+ return s?"heroUp"===t.type||"heroLevel"===t.type?s.heroKind:s.soldierKind||t.soldierKind||0:0}
- return i.map(i=>i>=0?t[i]??null:null)}
- function evi(t,i){
- Xt(Kwi,"pad"),Xt(zwi,"toSetTeamsParams"),Xt(qwi,"cardIconKind"),Xt(Xwi,"totalSoldiers"),Xt(Ywi,"soldierDisplayTiers"),Xt(Jwi,"mapIndexForFloor"),Xt(Qwi,"isVerticalMap"),Xt(Zwi,"defaultFormation"),Xt(tvi,"normalizeFormation"),Xt(ivi,"swapSlots"),Xt(svi,"applyFormation"),Xt(evi,"slotLayout");
+ Xt(Jwi,"pad"),Xt(Qwi,"toSetTeamsParams"),Xt(Zwi,"cardIconKind"),Xt(tvi,"totalSoldiers"),Xt(ivi,"soldierDisplayTiers"),Xt(svi,"mapIndexForFloor"),Xt(evi,"isVerticalMap"),Xt(nvi,"defaultFormation"),Xt(hvi,"normalizeFormation"),Xt(rvi,"swapSlots"),Xt(ovi,"slotLayout");
Zr 3 hunks, 4 statements
- s++,e^=set(e))t[s]=e;
+ s++,e^=oet(e))t[s]=e;
- function cet(t,i){
+ function get(t,i){
- Xt(cet,"Zr");
- const uet=cet(net,t=>eet(t,3)<<24|t<<16|t<<8|eet(t,2)),det=cet(het,t=>eet(t,11)<<24|eet(t,13)<<16|eet(t,9)<<8|eet(t,14)),fet=(()=>{
+ Xt(get,"Zr");
+ const met=get(cet,t=>aet(t,3)<<24|t<<16|t<<8|aet(t,2)),wet=get(uet,t=>aet(t,11)<<24|aet(t,13)<<16|aet(t,9)<<8|aet(t,14)),vet=(()=>{
MiniAscentDataManager 3 hunks, 4 statements
- t&&(t.season&&((null==(i=this.season)?void 0:i.seasonId)!==t.season.seasonId&&(this.lastDefeat=null),this.season=t.season),void 0!==t.run&&(this.run=t.run,this.run&&(this.lastDefeat=null)))}
+ t&&(t.season&&((null==(i=this.season)?void 0:i.seasonId)!==t.season.seasonId&&(this.lastDefeat=null),this.season=t.season),void 0!==t.run&&(this.run=t.run,this.lastDefeat&&this.run&&this.run.floor>this.lastDefeat.floor&&(this.lastDefeat=null)))}
- async battleStart(){
- const t=this.unwrap(await this.api().battleStart());
+ async battleStart(t,i){
+ const s=this.unwrap(await this.api().battleStart(t,i));
- return await zA.removeData(zA.KEY_MINI_ASCENT_PENDING),this.apply(t),"LOSE"===t.result&&(this.run=null,this.lastDefeat={
+ return await zA.removeData(zA.KEY_MINI_ASCENT_PENDING),this.apply(t),"LOSE"===t.result&&(this.lastDefeat={
SHA256 3 hunks, 3 statements
- ...Rgt,...Ngt,...Dgt,...Bgt,...Hgt,...Jgt,...tmt,...emt,...amt}
+ ...Ggt,...Ugt,...Hgt,...Wgt,...Kgt,...smt,...hmt,...amt,...fmt}
- ...Vmt,...zmt}
+ ...Ymt,...Qmt}
- utf8:Awt,"utf-8":Awt,hex:vwt.base16,latin1:Swt,ascii:Swt,binary:Swt,...vwt}
+ utf8:Owt,"utf-8":Owt,hex:Ewt.base16,latin1:kwt,ascii:kwt,binary:kwt,...Ewt}
SuiProvider 3 hunks, 3 statements
- namespace:gTt.NameSpaceKeyAptos,addresses:s,methods:[...wTt.AptosMethods],extra:h}
+ namespace:bTt.NameSpaceKeyAptos,addresses:s,methods:[...yTt.AptosMethods],extra:h}
- namespace:ATt.NameSpaceKeyTON,addresses:o,methods:[...CTt.TONMethods],extra:a,data:{
+ namespace:OTt.NameSpaceKeyTON,addresses:o,methods:[...RTt.TONMethods],extra:a,data:{
- namespace:xTt.NameSpaceKeySui,addresses:i,methods:[...NTt.SuiMethods],extra:s}
+ namespace:DTt.NameSpaceKeySui,addresses:i,methods:[...UTt.SuiMethods],extra:s}
MiniAscentService 2 hunks, 2 statements
- async battleStart(t=!0){
+ async battleStart(t,i,s=!0){
- }
+ opponentId:t,formation:i}
BattleController 1 hunks, 2 statements
- for(const i of this.skippedWaves)this.shownDialogueWaves.has(i)||(t.push(...TKt.getInstance().getByWave(i)),this.shownDialogueWaves.add(i));
- this.shownDialogueWaves.has(XD.wave)||(t.push(...TKt.getInstance().getByWave(XD.wave)),this.shownDialogueWaves.add(XD.wave)),t.length>0&&voi.getInstance().showDialogues(t)}
+ for(const i of this.skippedWaves)this.shownDialogueWaves.has(i)||(t.push(...xKt.getInstance().getByWave(i)),this.shownDialogueWaves.add(i));
+ this.shownDialogueWaves.has(XD.wave)||(t.push(...xKt.getInstance().getByWave(XD.wave)),this.shownDialogueWaves.add(XD.wave)),t.length>0&&Eoi.getInstance().showDialogues(t)}
MiniAscentCardPickPopup 2 hunks, 2 statements
- heroUp:sB.getText("","영웅 강화"),soldierAdd:sB.getText("","병사 추가"),soldierUp:sB.getText("","병사 강화"),newHero:sB.getText("","새 영웅")}
+ heroLevel:sB.getText("","영웅 레벨"),soldierLevel:sB.getText("","병사 레벨"),heroUp:sB.getText("","영웅 강화"),soldierAdd:sB.getText("","병사 추가"),soldierUp:sB.getText("","병사 강화"),newHero:sB.getText("","새 영웅")}
- const h=i.corps[e.corp],r="heroUp"===e.type?h:void 0,a=r?bvi(r):qwi(e,i.corps);
+ const h=i.corps[e.corp],r="heroUp"===e.type||"heroLevel"===e.type?h:void 0,a=r?Avi(r):Zwi(e,i.corps);
VersionManager 1 hunks, 1 statements
- Xt(JA,"VersionManager"),Yt(JA,"gameId","ef2"),Yt(JA,"appVersion","1.14.70");
+ Xt(JA,"VersionManager"),Yt(JA,"gameId","ef2"),Yt(JA,"appVersion","1.14.71");
CrowKnight1 1 hunks, 1 statements
- const s=Math.atan2(t.y-d,t.x-u),e=Math.PI;
+ const s=Math.atan2(t.y-t.hitHeight/2-t.airHeight-d,t.x-u),e=Math.PI;
Sr 1 hunks, 1 statements
- ...t,...Ast(i)}
+ ...t,...Ost(i)}
Ma 1 hunks, 1 statements
- ...Grt,coercer:Xt((t,i)=>Xht(t,Brt)?Grt.coercer(Urt(t,i),i):Grt.coercer(t,i),"coercer")}
+ ...$rt,coercer:Xt((t,i)=>trt(t,Wrt)?$rt.coercer(jrt(t,i),i):$rt.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,..._pt(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,...Apt(381,0),44,0,0,0,0,...i,0,7],h=Math.floor(s.length/e);
SuiStandardProvider 1 hunks, 1 statements
- namespace:kyt.NameSpaceKeyEip155,addresses:i,methods:[...Pyt.Eip55Methods],extra:s}
+ namespace:Lyt.NameSpaceKeyEip155,addresses:i,methods:[...Byt.Eip55Methods],extra:s}
AppReadyEvent 1 hunks, 1 statements
- return iAt||(iAt=[...XEt]),iAt}
+ return rAt||(rAt=[...tAt]),rAt}
SolProvider 1 hunks, 1 statements
- namespace:rTt.NameSpaceKeySOL,addresses:i,methods:[...lTt.SOLANAMethods],extra:s}
+ namespace:uTt.NameSpaceKeySOL,addresses:i,methods:[...gTt.SOLANAMethods],extra:s}
OkxwalletInjectConnector 1 hunks, 1 statements
- namespace:BTt.NameSpaceKeyBtc,addresses:i,methods:[...FTt.BtcMethods],extra:s}
+ namespace:WTt.NameSpaceKeyBtc,addresses:i,methods:[...VTt.BtcMethods],extra:s}
TcRootElement 1 hunks, 1 statements
- return NGt()||(t.push(new Ypt.OKXAppConnector),t.push(new Ypt.OKXWalletAppConnector)),RGt()&&t.push(new Ypt.OkxwalletInjectConnector),t.push(...DGt()),t}
+ return UGt()||(t.push(new igt.OKXAppConnector),t.push(new igt.OKXWalletAppConnector)),GGt()&&t.push(new igt.OkxwalletInjectConnector),t.push(...HGt()),t}