diff --git a/card/yingbian.js b/card/yingbian.js index 8fed66518..0fd190613 100644 --- a/card/yingbian.js +++ b/card/yingbian.js @@ -434,10 +434,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, }, _yingbian:{ - trigger:{player:'useCard1'}, + trigger:{player:'yingbian'}, forced:true, popup:false, - firstDo:true, ruleSkill:true, forceLoad:true, filter:(event,player)=>{ diff --git a/character/diy.js b/character/diy.js index 576b4ae5b..69649956a 100755 --- a/character/diy.js +++ b/character/diy.js @@ -4262,9 +4262,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, asara_yingwei:{ - trigger:{player:'useCardBegin'}, + trigger:{player:'yingbian'}, forced:true, - filter:event=>event.card.isCard&&event.cards.some(value=>value.hasGaintag('asara_yingwei')), + filter:(event,player)=>event.card.isCard&&player.hasHistory('lose',evt=>evt.getParent()==event&&Object.values(evt.gaintag_map).some(value=>value.includes('asara_yingwei'))), content:()=>{ trigger.forceYingbian=true; } diff --git a/character/extra.js b/character/extra.js index 4e36da0ea..966ca1dbb 100755 --- a/character/extra.js +++ b/character/extra.js @@ -2341,9 +2341,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ group:'hina_shenshi_yingbian', }, hina_shenshi_yingbian:{ - trigger:{player:'useCardBegin'}, + trigger:{player:'yingbian'}, forced:true, - filter:event=>event.card.isCard&&event.cards.some(value=>value.hasGaintag('hina_shenshi')), + filter:(event,player)=>event.card.isCard&&player.hasHistory('lose',evt=>evt.getParent()==event&&Object.values(evt.gaintag_map).some(value=>value.includes('hina_shenshi'))), content:()=>{ if(!Array.isArray(trigger.temporaryYingbian)) trigger.temporaryYingbian=[]; trigger.temporaryYingbian.add('force'); @@ -2352,11 +2352,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, hina_xingzhi:{ groupSkill:true, - trigger:{player:'useCard1'}, + trigger:{player:'yingbian'}, usable:1, filter:(event,player)=>player.group=='key'&&!event.card.yingbian&&lib.yingbian.condition.complex.has('zhuzhan'), content:()=>{ 'step 0' + trigger.yingbianZhuzhanAI=(player,card,source,targets)=>cardx=>{ + if(get.attitude(player,source)<=0) return 0; + var info=get.info(card),num=0; + if(info&&info.ai&&info.ai.yingbian){ + var ai=info.ai.yingbian(card,source,targets,player); + if(ai) num=ai; + } + return Math.max(num,6)-get.value(cardx); + }; trigger.afterYingbianZhuzhan=event=>event.zhuzhanresult.draw(2); lib.yingbian.condition.complex.get('zhuzhan')(trigger); 'step 1' diff --git a/character/sb.js b/character/sb.js index de3e30f89..4c091fa84 100644 --- a/character/sb.js +++ b/character/sb.js @@ -3610,7 +3610,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ onremove:true, content:function(){ 'step 0' - player.chooseControl('变化','不变').set('prompt','统业:猜测场上装备数是否于你下回合准备阶段前发生变化').set('ai',()=>(game.countPlayer()<=4?Math.random():1)<0.4); + player.chooseControl('变化','不变').set('prompt','统业:猜测场上装备数是否于你下回合准备阶段前发生变化').set('ai',()=>Number((game.countPlayer()<=4?Math.random():1)<0.4)); 'step 1' if(result.control=='变化'){ player.addSkill('sbtongye_change',1); diff --git a/character/tw.js b/character/tw.js index 1a56ef2a0..b686cb847 100644 --- a/character/tw.js +++ b/character/tw.js @@ -7447,7 +7447,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 2' player.chooseToCompare(targets,function(card){ return get.number(card); - }).setContent(lib.skill.twchaofeng.chooseToCompareMeanwhile); + }).setContent('chooseToCompareMeanwhile'); 'step 3' if(result.winner&&result.winner==player){ event.targets.remove(result.winner); @@ -7685,7 +7685,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(result.bool){ event.targets=result.targets; player.logSkill('twchaofeng_compare',event.targets); - player.chooseToCompare(event.targets).setContent(lib.skill.twchaofeng.chooseToCompareMeanwhile); + player.chooseToCompare(event.targets).setContent('chooseToCompareMeanwhile'); } 'step 2' if(result.winner){ @@ -7699,169 +7699,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } } - }, - chooseToCompareMeanwhile:function(){ - 'step 0' - if(player.countCards('h')==0){ - event.result={cancelled:true,bool:false} - event.finish(); - return; - } - for(var i=0; ievent.maxNum){ - event.maxNum=i[1]; - event.winner=i[0]; - } - else if(event.winner&&i[1]==event.maxNum&&i[0]!=event.winner){ - event.winner=null; - } - } - 'step 6' - event.iwhile++; - event.goto(4); - 'step 7' - var player=event.tempplayer; - event.player=player; - delete event.tempplayer; - var str='无人拼点成功'; - if(event.winner){ - event.result.winner=event.winner; - str=get.translation(event.winner)+'拼点成功'; - game.log(event.winner,'拼点成功'); - event.winner.popup('胜'); - } else game.log('#b无人','拼点成功'); - var list=[player].addArray(targets); - list.remove(event.winner); - for(var i of list){ - i.popup('负'); - } - if(str){ - game.broadcastAll(function(str){ - var dialog=ui.create.dialog(str); - dialog.classList.add('center'); - setTimeout(function(){ - dialog.close(); - },1000); - },str); - } - game.delay(3); - 'step 8' - game.broadcastAll(ui.clear); - 'step 9' - event.cards.add(event.card1); } }, twchuanshu:{ diff --git a/character/xianding.js b/character/xianding.js index a395a91bc..90bc2a8ee 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -6443,7 +6443,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ target.gain(cards,'draw'); event.goto(4); }, - group:'dcgeyuan_qyubee', + group:'dcgeyuan_kyubey', filterNumber:function(player,num){ var list1=player.getStorage('dcgeyuan'); var list2=player.getStorage('dcgeyuan_homura'); @@ -6459,7 +6459,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return false; }, subSkill:{ - qyubee:{ + kyubey:{ audio:'dcgeyuan', trigger:{ global:'phaseBefore', @@ -6494,7 +6494,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(!storage||!storage.length) return '(圆环之理尚不存在)'; var list2=player.getStorage('dcgeyuan_homura'); var core=document.createElement('div'); - var centerX=-10,centerY=80,radius=80; + core.style.width='0'; + var centerX=-15,centerY=80,radius=80; var radian=Math.PI*2/list.length; var fulllist=['A','2','3','4','5','6','7','8','9','10','J','Q','K']; for(var i=0;i{ 'step 0' event._global_waiting=true; - event.send=(player,card,source,targets,id,id2,skillState)=>{ + event.send=(player,card,source,targets,id,id2,yingbianZhuzhanAI,skillState)=>{ if(skillState) player.applySkills(skillState); var type=get.type2(card),str=get.translation(source); if(targets&&targets.length) str+=`对${get.translation(targets)}`; @@ -181,7 +183,7 @@ _global_waiting:true, id:id, id2:id2, - ai:cardx=>{ + ai:typeof yingbianZhuzhanAI=='function'?yingbianZhuzhanAI(player,card,source,targets):cardx=>{ var info=get.info(card); if(info&&info.ai&&info.ai.yingbian){ var ai=info.ai.yingbian(card,source,targets,player); @@ -203,7 +205,7 @@ 'step 2' if(!event.list.length) event.finish(); else if(_status.connectMode&&(event.list[0].isOnline()||event.list[0]==game.me)) event.goto(4); - else event.send(event.current=event.list.shift(),event.card,player,trigger.targets,event.id,trigger.parent.id); + else event.send(event.current=event.list.shift(),event.card,player,trigger.targets,event.id,trigger.parent.id,trigger.yingbianZhuzhanAI); 'step 3' if(result.bool){ event.zhuzhanresult=event.current; @@ -231,12 +233,12 @@ if(current.isOnline()){ withol=true; current.wait(sendback); - current.send(event.send,current,event.card,player,trigger.targets,event.id,trigger.parent.id,get.skillState(current)); + current.send(event.send,current,event.card,player,trigger.targets,event.id,trigger.parent.id,trigger.yingbianZhuzhanAI,get.skillState(current)); list.splice(i--,1); } else if(current==game.me){ withme=true; - event.send(current,event.card,player,trigger.targets,event.id,trigger.parent.id); + event.send(current,event.card,player,trigger.targets,event.id,trigger.parent.id,trigger.yingbianZhuzhanAI); list.splice(i--,1); } } @@ -8790,6 +8792,11 @@ } }, onload:function(){ + const libOnload=lib.onload; + delete lib.onload; + while(libOnload.length){ + libOnload.shift()(); + } ui.updated(); game.documentZoom=game.deviceZoom; if(game.documentZoom!=1){ @@ -9664,55 +9671,36 @@ name:name }); }, - js:function(path,file,onload,onerror){ - if(path[path.length-1]=='/'){ - path=path.slice(0,path.length-1); - } - if(path==lib.assetURL+'mode'&&lib.config.all.stockmode.indexOf(file)==-1){ - lib.init['setMode_'+file](); + js:(path,file,onload,onerror)=>{ + if(path[path.length-1]=='/') path=path.slice(0,path.length-1); + if(path==`${lib.assetURL}mode`&&lib.config.all.stockmode.indexOf(file)==-1){ + lib.init[`setMode_${file}`](); onload(); return; } if(Array.isArray(file)){ - for(var i=0;ilib.init.js(path,value,onload,onerror)); + return; } - else{ - var script_src; - if(!file){ - script_src = path; - } - else{ - script_src = path+'/'+file+".js"; - } - if(path.indexOf('http')==0){ - script_src+='?rand='+get.id(); - } - else{ - if(game.readFile&&lib.config.fuck_sojson&&script_src.includes('extension')!=-1&&script_src.indexOf(lib.assetURL)==0){ - var path_to_read=script_src.slice(lib.assetURL.length); - game.readFileAsText(path_to_read,function(result){ - if(result.includes('sojson')||result.includes('jsjiami')||result.includes('var _0x')) alert('检测到您安装了使用免费版sojson进行加密的扩展。请谨慎使用这些扩展,避免游戏数据遭到破坏。\n扩展文件:'+path_to_read); - },function(){ - - }); - } - } - var script=document.createElement('script'); - script.src=script_src; - if(path.indexOf('http')==0){ - script.addEventListener('load',function(){ - script.remove(); - }); - } - document.head.appendChild(script); - if(typeof onload=='function'){ - script.addEventListener('load',onload); - script.addEventListener('error',onerror); - } - return script; + let script_src; + if(!file) script_src=path; + else script_src=`${path}/${file}.js`; + if(path.indexOf('http')==0) script_src+=`?rand=${get.id()}`; + else if(game.readFile&&lib.config.fuck_sojson&&script_src.includes('extension')!=-1&&script_src.indexOf(lib.assetURL)==0){ + const path_to_read=script_src.slice(lib.assetURL.length); + game.readFileAsText(path_to_read,result=>{ + if(result.includes('sojson')||result.includes('jsjiami')||result.includes('var _0x')) alert(`检测到您安装了使用免费版sojson进行加密的扩展。请谨慎使用这些扩展,避免游戏数据遭到破坏。\n扩展文件:${path_to_read}`); + },()=>void 0); } + const script=document.createElement('script'); + script.src=script_src; + if(path.indexOf('http')==0) script.addEventListener('load',()=>script.remove()); + document.head.appendChild(script); + if(typeof onload=='function'){ + script.addEventListener('load',onload); + script.addEventListener('error',onerror); + } + return script; }, req:function(str,onload,onerror,master){ var sScriptURL; @@ -14218,6 +14206,172 @@ next.getlx=false; } }, + chooseToCompareMeanwhile:function(){ + 'step 0' + if(player.countCards('h')==0){ + event.result={cancelled:true,bool:false} + event.finish(); + return; + } + for(var i=0; ievent.maxNum){ + event.maxNum=i[1]; + event.winner=i[0]; + } + else if(event.winner&&i[1]==event.maxNum&&i[0]!=event.winner){ + event.winner=null; + } + } + 'step 8' + event.iwhile++; + event.goto(6); + 'step 9' + var player=event.tempplayer; + event.player=player; + delete event.tempplayer; + var str='无人拼点成功'; + if(event.winner){ + event.result.winner=event.winner; + str=get.translation(event.winner)+'拼点成功'; + game.log(event.winner,'拼点成功'); + event.winner.popup('胜'); + } else game.log('#b无人','拼点成功'); + var list=[player].addArray(targets); + list.remove(event.winner); + for(var i of list){ + i.popup('负'); + } + if(str){ + game.broadcastAll(function(str){ + var dialog=ui.create.dialog(str); + dialog.classList.add('center'); + setTimeout(function(){ + dialog.close(); + },1000); + },str); + } + game.delay(3); + 'step 10' + game.broadcastAll(ui.clear); + 'step 11' + event.cards.add(event.card1); + }, chooseToCompareMultiple:function(){ "step 0" if(player.countCards('h')==0){ @@ -16346,8 +16500,10 @@ } event.trigger('useCard1'); "step 1" - event.trigger('useCard2'); + event.trigger('yingbian'); "step 2" + event.trigger('useCard2'); + "step 3" event.trigger('useCard'); event._oncancel=function(){ game.broadcastAll(function(id){ @@ -16357,7 +16513,7 @@ } },event.id); }; - "step 3" + "step 4" event.sortTarget=function(animate,sort){ var info=get.info(card,false); if(num==0&&targets.length>1){ @@ -16384,7 +16540,7 @@ } return null; } - "step 4" + "step 5" if(event.all_excluded) return; if(!event.triggeredTargets1) event.triggeredTargets1=[]; var target=event.getTriggerTarget(targets,event.triggeredTargets1); @@ -16408,7 +16564,7 @@ if(event.forceDie) next.forceDie=true; event.redo(); } - "step 5" + "step 6" if(event.all_excluded) return; if(!event.triggeredTargets2) event.triggeredTargets2=[]; var target=event.getTriggerTarget(targets,event.triggeredTargets2); @@ -16432,7 +16588,7 @@ if(event.forceDie) next.forceDie=true; event.redo(); } - "step 6" + "step 7" var info=get.info(card,false); if(!info.nodelay&&event.animate!=false){ if(event.delayx!==false){ @@ -16445,7 +16601,7 @@ } } } - "step 7" + "step 8" if(event.all_excluded) return; if(!event.triggeredTargets3) event.triggeredTargets3=[]; var target=event.getTriggerTarget(targets,event.triggeredTargets3); @@ -16469,7 +16625,7 @@ if(event.forceDie) next.forceDie=true; event.redo(); } - "step 8" + "step 9" if(event.all_excluded) return; if(!event.triggeredTargets4) event.triggeredTargets4=[]; var target=event.getTriggerTarget(targets,event.triggeredTargets4); @@ -16496,7 +16652,7 @@ } event.redo(); } - "step 9" + "step 10" if(event.all_excluded) return; event.effectedCount++; event.num=0; @@ -16537,7 +16693,7 @@ next.addedTargets=event.addedTargets; if(event.forceDie) next.forceDie=true; } - "step 10" + "step 11" if(event.all_excluded) return; var info=get.info(card,false); if(num==0&&targets.length>1){ @@ -16601,13 +16757,13 @@ game.delayx(0.5); } } - "step 11" + "step 12" if(event.all_excluded) return; if(!get.info(event.card,false).multitarget&&num