@@ -26111,60 +26111,72 @@
2611126111 return list;
2611226112 },
2611326113 addSkillTrigger:function(skill,hidden,triggeronly){
26114- let skills=game.expandSkills([skill]);
26115- for(let skill of skills){
26116- let info=lib.skill[skill];
26117- if(!info){
26118- console.trace(`Cannot find skill: ${skill}\nPlease check if game.expandSkills is overwritten`);
26119- continue;
26114+ var info=lib.skill[skill];
26115+ if(!info) return;
26116+ if(typeof info.group=='string'){
26117+ this.addSkillTrigger(info.group,hidden);
26118+ }
26119+ else if(Array.isArray(info.group)){
26120+ for(var i=0;i<info.group.length;i++){
26121+ this.addSkillTrigger(info.group[i],hidden);
2612026122 }
26121- if(!triggeronly){
26122- if(info.global&&(!hidden||info.globalSilent) ){
26123- if(typeof info.global=='string' ){
26124- game.addGlobalSkill( info.global,this);
26125- }
26126- else{
26127- for(let j=0;j<info.global.length;j++) {
26128- game.addGlobalSkill( info.global[j],this);
26129- }
26123+ }
26124+ if(!triggeronly ){
26125+ if(info.global&&(!hidden||info.globalSilent) ){
26126+ if(typeof info.global=='string'){
26127+ game.addGlobalSkill(info.global,this);
26128+ }
26129+ else {
26130+ for(var j=0;j< info.global.length;j++){
26131+ game.addGlobalSkill(info.global[j],this);
2613026132 }
2613126133 }
26132- if(this.initedSkills.contains(skill)) return this;
26133- this.initedSkills.push(skill);
26134- if(info.init&&!_status.video) info.init(this,skill);
2613526134 }
26136- if(info.trigger&&this.playerid){
26137- let playerid=this.playerid;
26138- let setTrigger=function(i,evt){
26139- if(i=='global'){
26140- if(!lib.hook.globaltrigger[evt]){
26141- lib.hook.globaltrigger[evt]={};
26142- }
26143- if(!lib.hook.globaltrigger[evt][playerid]){
26144- lib.hook.globaltrigger[evt][playerid]=[];
26145- }
26146- lib.hook.globaltrigger[evt][playerid].add(skill);
26135+ if(this.initedSkills.contains(skill)) return this;
26136+ this.initedSkills.push(skill);
26137+ if(info.init&&!_status.video){
26138+ info.init(this,skill);
26139+ }
26140+ }
26141+ if(info.trigger&&this.playerid){
26142+ var playerid=this.playerid;
26143+ var setTrigger=function(i,evt){
26144+ if(i=='global'){
26145+ if(!lib.hook.globaltrigger[evt]){
26146+ lib.hook.globaltrigger[evt]={};
2614726147 }
26148- else{
26149- let name=playerid+'_'+i+'_'+evt;
26150- if(!lib.hook[name]) lib.hook[name]=[];
26151- lib.hook[name].add(skill);
26148+ if(!lib.hook.globaltrigger[evt][playerid]){
26149+ lib.hook.globaltrigger[evt][playerid]=[];
2615226150 }
26153- lib.hookmap [evt]=true ;
26151+ lib.hook.globaltrigger [evt][playerid].add(skill) ;
2615426152 }
26155- for(let i in info.trigger) {
26156- if(typeof info.trigger[i]=='string') setTrigger(i,info.trigger[i]) ;
26157- else if(Array.isArray(info.trigger[i]) ){
26158- for(let trigger of info.trigger[i]) setTrigger(i,trigger) ;
26153+ else {
26154+ var name=playerid+'_'+i+'_'+evt ;
26155+ if(!lib.hook[name] ){
26156+ lib.hook[name]=[] ;
2615926157 }
26158+ lib.hook[name].add(skill);
2616026159 }
26160+ lib.hookmap[evt]=true;
2616126161 }
26162- if(info.hookTrigger){
26163- if(!this._hookTrigger) this._hookTrigger=[];
26164- this._hookTrigger.add(skill);
26162+ for(var i in info.trigger){
26163+ if(typeof info.trigger[i]=='string'){
26164+ setTrigger(i,info.trigger[i]);
26165+ }
26166+ else if(Array.isArray(info.trigger[i])){
26167+ for(var j=0;j<info.trigger[i].length;j++){
26168+ setTrigger(i,info.trigger[i][j]);
26169+ }
26170+ }
26171+ }
26172+ }
26173+ if(info.hookTrigger){
26174+ if(!this._hookTrigger){
26175+ this._hookTrigger=[];
2616526176 }
26166- if(_status.event&&_status.event.addTrigger) _status.event.addTrigger (skill,this );
26177+ this._hookTrigger.add (skill);
2616726178 }
26179+ if(_status.event&&_status.event.addTrigger) _status.event.addTrigger(skill,this);
2616826180 return this;
2616926181 },
2617026182 addSkillLog:function(skill){
@@ -26462,49 +26474,59 @@
2646226474 return this;
2646326475 },
2646426476 removeSkillTrigger:function(skill,triggeronly){
26465- let skills=game.expandSkills([skill]);
26466- for(let skill of skills){
26467- let info=lib.skill[skill];
26468- if(!info){
26469- console.trace(`Cannot find skill: ${skill}\nPlease check if game.expandSkills is overwritten`);
26470- continue;
26477+ var info=lib.skill[skill];
26478+ if(!info) return;
26479+ if(typeof info.group=='string'){
26480+ this.removeSkillTrigger(info.group);
26481+ }
26482+ else if(Array.isArray(info.group)){
26483+ for(var i=0;i<info.group.length;i++){
26484+ this.removeSkillTrigger(info.group[i]);
2647126485 }
26472- if(!triggeronly) this.initedSkills.remove(skill);
26473- if(info.trigger){
26474- let playerid=this.playerid;
26475- let removeTrigger=function(i,evt){
26476- if(i=='global' ){
26477- for(let j in lib.hook.globaltrigger ){
26478- if( lib.hook.globaltrigger[j][playerid] ){
26479- lib.hook.globaltrigger[j][playerid].remove(skill);
26480- if( lib.hook.globaltrigger[j][playerid].length==0){
26481- delete lib.hook.globaltrigger[j][playerid];
26482- }
26483- if(get.is.empty(lib.hook.globaltrigger[j])){
26484- delete lib.hook.globaltrigger[j];
26485- }
26486+ }
26487+ if(!triggeronly) this.initedSkills.remove(skill);
26488+ if(info.trigger){
26489+ var playerid=this.playerid;
26490+ var removeTrigger=function(i,evt ){
26491+ if(i=='global' ){
26492+ for(var j in lib.hook.globaltrigger){
26493+ if( lib.hook.globaltrigger[j][playerid]){
26494+ lib.hook.globaltrigger[j][playerid].remove(skill);
26495+ if( lib.hook.globaltrigger[j][playerid].length==0){
26496+ delete lib.hook.globaltrigger[j][playerid];
26497+ }
26498+ if(get.is.empty( lib.hook.globaltrigger[j])){
26499+ delete lib.hook.globaltrigger[j];
2648626500 }
2648726501 }
2648826502 }
26489- else{
26490- let name=playerid+'_'+i+'_'+evt;
26491- if(lib.hook[name]){
26492- lib.hook[name].remove(skill);
26493- if(lib.hook[name].length==0) delete lib.hook[name];
26503+ }
26504+ else{
26505+ var name=playerid+'_'+i+'_'+evt;
26506+ if(lib.hook[name]){
26507+ lib.hook[name].remove(skill);
26508+ if(lib.hook[name].length==0){
26509+ delete lib.hook[name];
2649426510 }
2649526511 }
2649626512 }
26497- for(let i in info.trigger){
26498- if(typeof info.trigger[i]=='string') removeTrigger(i,info.trigger[i]);
26499- else if(Array.isArray(info.trigger[i])){
26500- for(let trigger of info.trigger[i]) removeTrigger(i,trigger);
26513+ }
26514+ for(var i in info.trigger){
26515+ if(typeof info.trigger[i]=='string'){
26516+ removeTrigger(i,info.trigger[i]);
26517+ }
26518+ else if(Array.isArray(info.trigger[i])){
26519+ for(var j=0;j<info.trigger[i].length;j++){
26520+ removeTrigger(i,info.trigger[i][j]);
2650126521 }
2650226522 }
2650326523 }
26504- if(info.hookTrigger){
26505- if(this._hookTrigger){
26506- this._hookTrigger.remove(skill);
26507- if(!this._hookTrigger.length) delete this._hookTrigger;
26524+ }
26525+ if(info.hookTrigger){
26526+ if(this._hookTrigger){
26527+ this._hookTrigger.remove(skill);
26528+ if(!this._hookTrigger.length){
26529+ delete this._hookTrigger;
2650826530 }
2650926531 }
2651026532 }
4025040272 if(drawDeck&&drawDeck.drawDeck) players[0].draw(num2,drawDeck);
4025140273 else players[0].draw(num2);
4025240274 },
40253- finishSkill:(i,history )=>{
40275+ finishSkill:(i,sub )=>{
4025440276 const mode=get.mode(),info=lib.skill[i],iInfo=`${i}_info`;
4025540277 if(info.alter){
4025640278 lib.translate[`${iInfo}_origin`]=lib.translate[iInfo];
@@ -40293,25 +40315,14 @@
4029340315 });
4029440316 }
4029540317 if(info.inherit){
40296- var inheritHistory=[];
40297- while(true){
40298- if(!info.inherit) break;
40299- if(inheritHistory.includes(info.inherit)){
40300- console.trace(`Inherit Error: ${info.inherit} in ${i}'s inherit forms a deadlock`);
40301- break;
40302- }
40303- inheritHistory.push(info.inherit);
40304-
40305- const inheritInfo=lib.skill[info.inherit];
40306- if(inheritInfo) Object.keys(inheritInfo).forEach(value=>{
40307- if(info[value]!=undefined) return;
40308- if(value=='audio'&&(typeof info[value]=='number'||typeof info[value]=='boolean')) info[value]=info.inherit;
40309- else info[value]=inheritInfo[value];
40310- });
40311- if(lib.translate[i]==undefined) lib.translate[i]=lib.translate[info.inherit];
40312- if(lib.translate[`${i}_info`]==undefined) lib.translate[`${i}_info`]=lib.translate[`${info.inherit}_info`];
40313- if(!inheritInfo||!inheritInfo.inherit) info.inherit=void 0;
40314- }
40318+ const skill=lib.skill[info.inherit];
40319+ if(skill) Object.keys(skill).forEach(value=>{
40320+ if(info[value]!=undefined) return;
40321+ if(value=='audio'&&(typeof info[value]=='number'||typeof info[value]=='boolean')) info[value]=info.inherit;
40322+ else info[value]=skill[value];
40323+ });
40324+ if(lib.translate[i]==undefined) lib.translate[i]=lib.translate[info.inherit];
40325+ if(lib.translate[iInfo]==undefined) lib.translate[iInfo]=lib.translate[`${info.inherit}_info`];
4031540326 }
4031640327 if(info.limited){
4031740328 if(info.mark===undefined) info.mark=true;
@@ -40320,26 +40331,16 @@
4032040331 if(info.skillAnimation===undefined) info.skillAnimation=true;
4032140332 if(info.init===undefined) info.init=(player,skill)=>player.storage[skill]=false;
4032240333 }
40323- if(info.subSkill){
40324- let subSkillHistory=Array.isArray(history)?history:[];
40325- for(let value in info.subSkill){
40326- if(subSkillHistory.includes(value)){
40327- console.trace(`SubSkill Error: ${value} in ${i} forms a deadlock`);
40328- continue;
40329- }
40330- let history=subSkillHistory.slice(0);
40331- history.push(value);
40332-
40333- const iValue=`${i}_${value}`;
40334- lib.skill[iValue]=info.subSkill[value];
40335- lib.skill[iValue].sub=true;
40336- if(info.subSkill[value].name) lib.translate[iValue]=info.subSkill[value].name;
40337- else lib.translate[iValue]=lib.translate[iValue]||lib.translate[i];
40338- if(info.subSkill[value].description) lib.translate[`${iValue}_info`]=info.subSkill[value].description;
40339- if(info.subSkill[value].marktext) lib.translate[`${iValue}_bg`]=info.subSkill[value].marktext;
40340- game.finishSkill(iValue,history);
40341- }
40342- }
40334+ if(info.subSkill&&!sub) Object.keys(info.subSkill).forEach(value=>{
40335+ const iValue=`${i}_${value}`;
40336+ lib.skill[iValue]=info.subSkill[value];
40337+ lib.skill[iValue].sub=true;
40338+ if(info.subSkill[value].name) lib.translate[iValue]=info.subSkill[value].name;
40339+ else lib.translate[iValue]=lib.translate[iValue]||lib.translate[i];
40340+ if(info.subSkill[value].description) lib.translate[`${iValue}_info`]=info.subSkill[value].description;
40341+ if(info.subSkill[value].marktext) lib.translate[`${iValue}_bg`]=info.subSkill[value].marktext;
40342+ game.finishSkill(iValue,true);
40343+ });
4034340344 if(info.round){
4034440345 const k=`${i}_roundcount`;
4034540346 if(typeof info.group=='string') info.group=[info.group,k];
@@ -41237,25 +41238,15 @@
4123741238 if(!player.storage.skill_blocker||!player.storage.skill_blocker.length) return out;
4123841239 return out.filter(value=>exclude&&exclude.includes(value)||!get.is.blocked(value,player));
4123941240 },
41240- expandSkills:(skill,oldHistory)=>{
41241- let history=[];
41242- if(oldHistory) history.addArray(oldHistory);
41243- if(Array.isArray(skill)){
41244- return skill.reduce((previous,current)=>previous.addArray(game.expandSkills(current,history)),[]);
41245- }
41246-
41247- let info=get.info(skill);
41248- if(!info){
41249- console.trace(`Cannot find skill: ${skill}`);
41250- return history;
41251- }
41252- history.add(skill);
41253- if(info.group){
41254- let group=Array.isArray(info.group)?info.group:[info.group];
41255- history.addArray(game.expandSkills([].addArray(group.filter(skill=>!history.includes(skill))),history));
41241+ expandSkills:skills=>skills.addArray(skills.reduce((previousValue,currentValue)=>{
41242+ const info=get.info(currentValue);
41243+ if(info){
41244+ if(Array.isArray(info.group)) previousValue.push(...info.group);
41245+ else if(info.group) previousValue.push(info.group);
4125641246 }
41257- return history;
41258- },
41247+ else console.log(currentValue);
41248+ return previousValue;
41249+ },[])),
4125941250 css:style=>Object.keys(style).forEach(value=>{
4126041251 let uiStyle=ui.style[value];
4126141252 if(!uiStyle){
0 commit comments