"forceOut" for trigger-type skill

This commit is contained in:
Spmario233 2023-07-30 02:57:41 +08:00
parent a101ac1f84
commit 542196ea61
3 changed files with 32 additions and 6 deletions

View File

@ -1697,6 +1697,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
}, },
dddtuoji:{
trigger:{global:'useCardAfter'},
frequent:true,
filter:function(event,player){
return event.card.storage&&event.card.storage._3dfusi_owner==player&&!player.hasCard(function(card){
return !card.hasGaintag('dddxujing_tag');
},'h');
},
content:function(){
player.draw(3);
},
},
dddchashi:{ dddchashi:{
trigger:{global:'phaseUseBegin'}, trigger:{global:'phaseUseBegin'},
direct:true, direct:true,

View File

@ -597,7 +597,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true, forced:true,
direct:true, direct:true,
priority:15, priority:15,
group:'mbmowang_die', group:['mbmowang_die','mbmowang_return'],
content:function(){ content:function(){
if(_status.mbmowang_return&&_status.mbmowang_return[player.playerid]){ if(_status.mbmowang_return&&_status.mbmowang_return[player.playerid]){
trigger.cancel(); trigger.cancel();
@ -608,6 +608,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(lib.config.background_speak) game.playAudio('die','shichangshiRest'); if(lib.config.background_speak) game.playAudio('die','shichangshiRest');
}); });
trigger.setContent(lib.skill.mbmowang.dieContent); trigger.setContent(lib.skill.mbmowang.dieContent);
trigger.includeOut=true;
} }
}, },
dieContent:function(){ dieContent:function(){
@ -629,7 +630,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.reserveOut=true; event.reserveOut=true;
game.log(player,'进入了修整状态'); game.log(player,'进入了修整状态');
game.log(player,'移出了游戏'); game.log(player,'移出了游戏');
game.addGlobalSkill('mbmowang_return'); //game.addGlobalSkill('mbmowang_return');
if(!_status.mbmowang_return) _status.mbmowang_return={}; if(!_status.mbmowang_return) _status.mbmowang_return={};
_status.mbmowang_return[player.playerid]=1; _status.mbmowang_return[player.playerid]=1;
} }
@ -767,10 +768,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
return:{ return:{
trigger:{global:'phaseBefore'}, trigger:{player:'phaseBefore'},
forced:true, forced:true,
charlotte:true, charlotte:true,
silent:true, silent:true,
forceDie:true,
forceOut:true,
filter:function(event,player){ filter:function(event,player){
return !event._mbmowang_return&&event.player.isOut()&&_status.mbmowang_return[event.player.playerid]; return !event._mbmowang_return&&event.player.isOut()&&_status.mbmowang_return[event.player.playerid];
}, },

View File

@ -12162,6 +12162,7 @@
'step 0' 'step 0'
event.filter1=function(info){ event.filter1=function(info){
if(info[1].isDead()&&!lib.skill[info[0]].forceDie) return false; if(info[1].isDead()&&!lib.skill[info[0]].forceDie) return false;
if(info[1].isOut()&&!lib.skill[info[0]].forceOut) return false;
return lib.filter.filterTrigger(trigger,info[1],event.triggername,info[0]); return lib.filter.filterTrigger(trigger,info[1],event.triggername,info[0]);
} }
event.filter2=function(info2){ event.filter2=function(info2){
@ -12231,7 +12232,8 @@
for(var i=0;i<event.choice.length;i++){ for(var i=0;i<event.choice.length;i++){
controls.push(event.choice[i][0]); controls.push(event.choice[i][0]);
} }
event.current.chooseControl(controls).set('prompt','选择下一个触发的技能').set('forceDie',true).set('arrangeSkill',true); event.current.chooseControl(controls)
.set('prompt','选择下一个触发的技能').set('forceDie',true).set('arrangeSkill',true).set('includeOut',true)
'step 5' 'step 5'
if(result.control){ if(result.control){
for(var i=0;i<event.doing.list.length;i++){ for(var i=0;i<event.doing.list.length;i++){
@ -12255,6 +12257,7 @@
}, },
createTrigger:function(){ createTrigger:function(){
"step 0" "step 0"
//console.log('triggering: ' + player.name+ ' \'s skill: ' + event.skill+' in ' + event.triggername)
if(lib.filter.filterTrigger(trigger,player,event.triggername,event.skill)){ if(lib.filter.filterTrigger(trigger,player,event.triggername,event.skill)){
var fullskills=game.expandSkills(player.getSkills().concat(lib.skill.global)); var fullskills=game.expandSkills(player.getSkills().concat(lib.skill.global));
if(!fullskills.contains(event.skill)){ if(!fullskills.contains(event.skill)){
@ -12343,6 +12346,7 @@
var next=player.chooseBool(str); var next=player.chooseBool(str);
if(event.frequentSkill) next.set('frequentSkill',event.skill); if(event.frequentSkill) next.set('frequentSkill',event.skill);
next.set('forceDie',true); next.set('forceDie',true);
next.set('includeOut',true);
next.ai=function(){ next.ai=function(){
return !check||check(trigger,player); return !check||check(trigger,player);
}; };
@ -12427,7 +12431,7 @@
next.setContent(info.content); next.setContent(info.content);
next.skillHidden=event.skillHidden; next.skillHidden=event.skillHidden;
if(info.forceDie) next.forceDie=true; if(info.forceDie) next.forceDie=true;
if(event.skill=='_turnover') next.includeOut=true; if(info.forceOut||event.skill=='_turnover') next.includeOut=true;
"step 4" "step 4"
if(player._hookTrigger){ if(player._hookTrigger){
for(var i=0;i<player._hookTrigger.length;i++){ for(var i=0;i<player._hookTrigger.length;i++){
@ -16081,6 +16085,7 @@
"step 0" "step 0"
var info=get.info(event.skill); var info=get.info(event.skill);
if(!info.noForceDie) event.forceDie=true; if(!info.noForceDie) event.forceDie=true;
if(!info.noForceOut) event.includeOut=true;
event._skill=event.skill; event._skill=event.skill;
game.trySkillAudio(event.skill,player); game.trySkillAudio(event.skill,player);
var checkShow=player.checkShow(event.skill); var checkShow=player.checkShow(event.skill);
@ -16261,6 +16266,7 @@
next.cards=cards; next.cards=cards;
next.player=player; next.player=player;
if(event.forceDie) next.forceDie=true; if(event.forceDie) next.forceDie=true;
if(event.includeOut) next.includeOut=true;
} }
"step 2" "step 2"
if(!event.skill){ if(!event.skill){
@ -16303,6 +16309,7 @@
} }
next.target=targets[num]; next.target=targets[num];
if(event.forceDie) next.forceDie=true; if(event.forceDie) next.forceDie=true;
if(event.includeOut) next.includeOut=true;
if(next.target&&!info.multitarget){ if(next.target&&!info.multitarget){
if(num==0&&targets.length>1){ if(num==0&&targets.length>1){
// var ttt=next.target; // var ttt=next.target;
@ -16338,6 +16345,7 @@
next.cards=cards; next.cards=cards;
next.player=player; next.player=player;
if(event.forceDie) next.forceDie=true; if(event.forceDie) next.forceDie=true;
if(event.includeOut) next.includeOut=true;
} }
"step 4" "step 4"
if(player.getStat().allSkills>200){ if(player.getStat().allSkills>200){
@ -22798,6 +22806,7 @@
var next=game.createEvent('logSkill',false),evt=_status.event; var next=game.createEvent('logSkill',false),evt=_status.event;
next.player=player; next.player=player;
next.forceDie=true; next.forceDie=true;
next.includeOut=true;
evt.next.remove(next); evt.next.remove(next);
if(evt.logSkill) evt=evt.getParent(); if(evt.logSkill) evt=evt.getParent();
for(var i in logInfo){ for(var i in logInfo){
@ -22812,6 +22821,7 @@
var next2=game.createEvent('logSkillBegin',false); var next2=game.createEvent('logSkillBegin',false);
next2.player=player; next2.player=player;
next2.forceDie=true; next2.forceDie=true;
next2.includeOut=true;
for(var i in logInfo){ for(var i in logInfo){
if(i=='event') next2.log_event=logInfo[i]; if(i=='event') next2.log_event=logInfo[i];
else next2[i]=logInfo[i]; else next2[i]=logInfo[i];
@ -34177,13 +34187,14 @@
} }
}, },
createTrigger:function(name,skill,player,event){ createTrigger:function(name,skill,player,event){
if((player.isOut()||player.removed)&&skill!='_turnover') return; //if((player.isOut()||player.removed)&&skill!='_turnover') return;
if(player.isDead()&&!lib.skill[skill].forceDie) return; if(player.isDead()&&!lib.skill[skill].forceDie) return;
var next=game.createEvent('trigger',false); var next=game.createEvent('trigger',false);
next.skill=skill; next.skill=skill;
next.player=player; next.player=player;
next.triggername=name; next.triggername=name;
next.forceDie=true; next.forceDie=true;
next.includeOut=true;
next._trigger=event; next._trigger=event;
if(skill=='_turnover') next.includeOut=true; if(skill=='_turnover') next.includeOut=true;
next.setContent('createTrigger'); next.setContent('createTrigger');