EF2 Changelog

Builds / 1.14.85

Update 1.14.85

Compared with 1.14.84 · published Sat, 26 Sep 2026 02:37:06 GMT · live channel

No summary yet.

Code 11 changes in 3 classes

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

MiniAscentCrystalsPage 9 hunks, 48 statements
+ gridCell(t,i,s){
+ const e=this.data,n=this.itemIcon(t,i);
+ if(n.eventMode="static",n.cursor="pointer",n.hitArea=new Di(0,0,100,100),n.label=`crystal-item:${
+ t.id}
+ `,this.merging){
+ const i=e.items.find(t=>t.id===this.merging[0]),h=!s.has(t.id)&&t.grade<e.maxGrade&&(!i||i.grade===t.grade);
+ n.alpha=h?1:.35,this.merging.includes(t.id)&&n.addChild((new Ff).roundRect(0,0,100,100,12).stroke({
+ color:Lvi.accent,width:4}
+ )),n.on("pointertap",i=>{
+ i.stopPropagation(),!this.busy&&h&&(this.merging.includes(t.id)?this.merging=this.merging.filter(i=>i!==t.id):this.merging.length<4&&this.merging.push(t.id),this.render())}
+ )}
+ else n.on("pointertap",i=>{
+ i.stopPropagation(),this.busy||(this.selected=t,this.render())}
+ );
+ return n}
+ this.body.removeChild(this.list);
+ this.list.visible=!1;
- this.corp=E,this.page=0,this.selectedSlot=null,this.merging=null,this.render()}
+ this.corp=_,this.list.scrollTo(0),this.selectedSlot=null,this.merging=null,this.render()}
- i.stopPropagation(),this.busy||(this.selectedSlot=E,t?this.selected=t:this.page=0,this.render())}
+ i.stopPropagation(),this.busy||(this.selectedSlot=_,t?this.selected=t:this.list.scrollTo(0),this.render())}
- this.merging=this.merging?null:[],this.page=0,this.render()}
+ this.merging=this.merging?null:[],this.list.scrollTo(0),this.render()}
- const u=c+(s?49:45),d=this.height-(s?151:140),f=s?72:84,p=s?24:10,g=f+12,m=(this.width-(6*f+5*p))/2,w=6*Math.max(1,Math.floor((d-u-44)/g)),v=new Set(i.slots.flat()),_=[...l].sort((t,i)=>Number(v.has(i.id))-Number(v.has(t.id))||i.grade-t.grade||t.kind-i.kind||t.id.localeCompare(i.id)),b=Math.max(1,Math.ceil(_.length/w));
- if(this.page=Math.min(this.page,b-1),_.slice(this.page*w,(this.page+1)*w).forEach((t,s)=>{
- const e=m+s%6*(f+p),n=u+Math.floor(s/6)*g,h=this.itemIcon(t,f);
- if(h.position.set(e,n),h.eventMode="static",h.cursor="pointer",h.hitArea=new Di(0,0,100,100),h.label=`crystal-item:${
- t.id}
- `,this.merging){
- const s=i.items.find(t=>t.id===this.merging[0]),e=!v.has(t.id)&&t.grade<i.maxGrade&&(!s||s.grade===t.grade);
- h.alpha=e?1:.35,this.merging.includes(t.id)&&h.addChild((new Ff).roundRect(0,0,100,100,12).stroke({
- color:Lvi.accent,width:4}
- )),h.on("pointertap",i=>{
- i.stopPropagation(),!this.busy&&e&&(this.merging.includes(t.id)?this.merging=this.merging.filter(i=>i!==t.id):this.merging.length<4&&this.merging.push(t.id),this.render())}
- )}
- else h.on("pointertap",i=>{
- i.stopPropagation(),this.busy||(this.selected=t,this.render())}
+ const u=c+(s?49:45),d=this.height-(s?151:140),f=PNi.COLUMNS,p=PNi.SIZE,g=(this.width-PNi.W)/2,m=new Set(i.slots.flat()),w=[...l].sort((t,i)=>Number(m.has(i.id))-Number(m.has(t.id))||i.grade-t.grade||t.kind-i.kind||t.id.localeCompare(i.id)),v=[];
+ for(let _=0;
+ _<w.length;
+ _+=f)v.push({
+ items:w.slice(_,_+f),cell:qt(t=>this.gridCell(t,p,m),"cell")}
- this.body.addChild(h)}
- ),_.length||this.addLabel(this.body,Rvi("CRYSTAL_EMPTY"),42,u+6,16,Lvi.muted,this.width-84,!0),b>1){
- const t=d-40;
- this.button(this.body,"‹",188,t,48,()=>{
- this.page--,this.render()}
- ,this.page>0),this.addLabel(this.body,`${
- this.page+1}
-  / ${
- b}
- `,248,t+6,15,Lvi.muted,120,!0),this.button(this.body,"›",380,t,48,()=>{
- this.page++,this.render()}
- ,this.page<b-1)}
- this.body.addChild((new Ff).moveTo(28,d-8).lineTo(this.width-28,d-8).stroke({
+ this.list.position.set(g,u),this.list.setListHeight(Math.max(p,d-8-u),!1),this.rows.length===v.length?(v.forEach((t,i)=>Object.assign(this.rows[i],t)),this.list.updateItemData()):(this.rows=v,this.list.dataProvider=this.rows),this.list.visible=w.length>0,this.body.addChild(this.list),w.length||this.addLabel(this.body,Rvi("CRYSTAL_EMPTY"),42,u+6,16,Lvi.muted,this.width-84,!0),this.body.addChild((new Ff).moveTo(28,d-8).lineTo(this.width-28,d-8).stroke({
- this.selected=null,this.selectedSlot=null,this.merging=null,this.page=0,this.result=t.length?t:null}
+ this.selected=null,this.selectedSlot=null,this.merging=null,this.list.scrollTo(0),this.result=t.length?t:null}
MiniAscentCrystalRowRenderer 1 hunks, 22 statements
- super(),Xt(this,"tabId","crystals"),Xt(this,"body",new He),Xt(this,"art",null),Xt(this,"busy",!1),Xt(this,"failed",!1),Xt(this,"corp",0),Xt(this,"page",0),Xt(this,"selected",null),Xt(this,"selectedSlot",null),Xt(this,"merging",null),Xt(this,"result",null),Xt(this,"confirmingMerge",!1),this.contentContainer.addChild(this.body),this.canCloseShell=()=>!this.busy}
+ super(),Xt(this,"cells",new He),this.addChild(this.cells)}
+ get width(){
+ return t.W}
+ get height(){
+ return t.H}
+ setData(i){
+ const s=i;
+ this.data=s;
+ for(const t of this.cells.removeChildren())t.destroy({
+ children:!0}
+ );
+ s&&s.items.forEach((i,e)=>{
+ const n=s.cell(i);
+ n.position.set(e*(t.SIZE+t.GAP),0),this.cells.addChild(n)}
+ )}
+ }
+ ;
+ qt(xNi,"MiniAscentCrystalRowRenderer"),Xt(xNi,"COLUMNS",6),Xt(xNi,"SIZE",84),Xt(xNi,"GAP",10),Xt(xNi,"W",xNi.COLUMNS*xNi.SIZE+(xNi.COLUMNS-1)*xNi.GAP),Xt(xNi,"H",xNi.SIZE);
+ let PNi=xNi;
+ const NNi=class t extends XPi{
+ constructor(){
+ super(),Xt(this,"tabId","crystals"),Xt(this,"body",new He),Xt(this,"art",null),Xt(this,"busy",!1),Xt(this,"failed",!1),Xt(this,"corp",0),Xt(this,"list",new Zk(PNi,PNi.W,300,12)),Xt(this,"rows",[]),Xt(this,"selected",null),Xt(this,"selectedSlot",null),Xt(this,"merging",null),Xt(this,"result",null),Xt(this,"confirmingMerge",!1),this.contentContainer.addChild(this.body),this.canCloseShell=()=>!this.busy}
VersionManager 1 hunks, 1 statements
- qt(Jy,"VersionManager"),Xt(Jy,"gameId","ef2"),Xt(Jy,"appVersion","1.14.84");
+ qt(Jy,"VersionManager"),Xt(Jy,"gameId","ef2"),Xt(Jy,"appVersion","1.14.85");