Merge pull request #763 from mengxinzxz/PR-Branch

small bugfix
This commit is contained in:
Spmario233 2024-01-05 23:48:31 +08:00 committed by GitHub
commit 5743094b4b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 54 additions and 21 deletions

View File

@ -1126,13 +1126,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
dcxianjin:{ dcxianjin:{
init:function(player){
var num=game.getAllGlobalHistory('changeHp',evt=>{
return evt.getParent().name=='damage'&&(evt.getParent().player==player||(evt.getParent().source&&evt.getParent().source==player));
}).concat(game.getAllGlobalHistory('changeHp',evt=>{
return evt.getParent().name=='damage'&&evt.getParent().player==player&&evt.getParent().source&&evt.getParent().source==player;
})).length;
if(num) player.addMark('dcxianjin',num,false);
},
onremove:true,
audio:2, audio:2,
trigger:{ trigger:{
player:'damageEnd', player:'damageEnd',
source:'damageSource', source:'damageSource',
}, },
filter:function(event,player){ filter:function(event,player){
return game.getGlobalHistory('damage',evt=>evt.player==player||(evt.source&&evt.source==player)).indexOf(event)%2==1; return player.countMark('dcxianjin')%2==0;
}, },
forced:true, forced:true,
content:function(){ content:function(){
@ -1155,6 +1164,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player.isMaxHandcard()) player.draw(); if(player.isMaxHandcard()) player.draw();
else player.draw(player.getStorage('dctuoyu').length) else player.draw(player.getStorage('dctuoyu').length)
}, },
group:'dcxianjin_mark',
intro:{content:'已造成或受到#次伤害'},
subSkill:{
mark:{
charlotte:true,
trigger:{
player:'damageEnd',
source:'damageSource',
},
forced:true,
popup:false,
firstDo:true,
content:function(){
player.addMark('dcxianjin',1,false);
},
},
},
}, },
dcqijing:{ dcqijing:{
derivation:'dccuixin', derivation:'dccuixin',
@ -1178,9 +1204,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var evt=trigger.getParent(); var evt=trigger.getParent();
if(evt.name=='phaseLoop'&&evt._isStandardLoop) evt.player=player.next; if(evt.name=='phaseLoop'&&evt._isStandardLoop) evt.player=player.next;
} }
player.chooseTarget(true,'请选择一名要更换座次的角色,将自己移动到该角色的上家位置',function(card,player,target){ player.chooseTarget('请选择一名要更换座次的角色,将自己移动到该角色的上家位置',function(card,player,target){
return target!=player&&target!=player.next; return target!=player&&target!=player.next;
}).set('ai',function(target){ },true).set('ai',function(target){
var player=_status.event.player; var player=_status.event.player;
var current=_status.currentPhase.next; var current=_status.currentPhase.next;
var max=20,att=0; var max=20,att=0;
@ -1193,7 +1219,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return att; return att;
}) })
} }
else event.goto(3); else event.finish();
'step 2' 'step 2'
if(result.bool){ if(result.bool){
var target=result.targets[0]; var target=result.targets[0];
@ -1201,6 +1227,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.swapSeat(target1,target2,null,true); game.swapSeat(target1,target2,null,true);
},player,target); },player,target);
} }
else event.finish();
'step 3' 'step 3'
player.insertPhase(); player.insertPhase();
}, },
@ -4517,10 +4544,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){ content:function(){
'step 0' 'step 0'
event.logged=false; event.logged=false;
//event.targets=[]; event.targets=[];
event.goto(player.countCards('h')%2==1?1:4); event.goto(player.countCards('h')%2==1?1:4);
'step 1' 'step 1'
player.chooseTarget(get.prompt('shenfu'),'对一名其他角色造成1点雷属性伤害',lib.filter.notMe).set('ai',function(target){ player.chooseTarget(get.prompt('shenfu'),'对一名其他角色造成1点雷属性伤害',function(card,player,target){
return target!=player&&!_status.event.getParent().targets.includes(target);
}).set('ai',function(target){
var player=_status.event.player; var player=_status.event.player;
return get.damageEffect(target,player,player,'thunder')*(target.hp==1?2:1); return get.damageEffect(target,player,player,'thunder')*(target.hp==1?2:1);
}); });
@ -4533,16 +4562,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.logSkill('shenfu',target,'thunder'); player.logSkill('shenfu',target,'thunder');
} }
else player.line(target,'thunder'); else player.line(target,'thunder');
event.targets.push(target);
target.damage('thunder'); target.damage('thunder');
} }
else event.finish(); else event.finish();
'step 3' 'step 3'
if(target.isDead()) event.goto(1); if(target.getHistory('damage',function(evt){
return evt.getParent('shenfu')==event&&evt._dyinged;
}).length) event.goto(1);
else event.finish(); else event.finish();
'step 4' 'step 4'
player.chooseTarget(get.prompt('shenfu'),'令一名角色摸一张牌或弃置其一张手牌'/*,function(card,player,target){ player.chooseTarget(get.prompt('shenfu'),'令一名角色摸一张牌或弃置其一张手牌',function(card,player,target){
return !_status.event.getParent().targets.includes(target); return !_status.event.getParent().targets.includes(target);
}*/).set('ai',function(target){ }).set('ai',function(target){
var att=get.attitude(_status.event.player,target); var att=get.attitude(_status.event.player,target);
var delta=target.hp-target.countCards('h'); var delta=target.hp-target.countCards('h');
if(Math.abs(delta)==1&&get.sgn(delta)==get.sgn(att)) return 3*Math.abs(att); if(Math.abs(delta)==1&&get.sgn(delta)==get.sgn(att)) return 3*Math.abs(att);
@ -4558,7 +4590,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.logSkill('shenfu',target); player.logSkill('shenfu',target);
} }
else player.line(target,'green'); else player.line(target,'green');
//targets.push(target); event.targets.push(target);
if(target.countCards('h')==0) event._result={index:0}; if(target.countCards('h')==0) event._result={index:0};
else player.chooseControl('摸一张牌','弃置一张手牌').set('prompt','选择一项令'+get.translation(target)+'执行…').set('goon',get.attitude(player,target)>0?0:1).set('ai',()=>_status.event.goon); else player.chooseControl('摸一张牌','弃置一张手牌').set('prompt','选择一项令'+get.translation(target)+'执行…').set('goon',get.attitude(player,target)>0?0:1).set('ai',()=>_status.event.goon);
//else player.discardPlayerCard(target,'h','弃置'+get.translation(target)+'一张手牌,或点【取消】令其摸一张牌。'); //else player.discardPlayerCard(target,'h','弃置'+get.translation(target)+'一张手牌,或点【取消】令其摸一张牌。');
@ -7810,7 +7842,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shen_zhenji:'神甄宓', shen_zhenji:'神甄宓',
shen_zhenji_prefix:'神', shen_zhenji_prefix:'神',
shenfu:'神赋', shenfu:'神赋',
shenfu_info:'回合结束时若你的手牌数为奇数你可对一名其他角色造成1点雷属性伤害。若其死亡,你可重复此流程。偶数,你可选择一名角色,你令其摸一张牌或弃置一张手牌。若其手牌数等于体力值,你可重复此流程。', shenfu_info:'回合结束时若你的手牌数为奇数你可对一名其他角色造成1点雷属性伤害。若其因此进入过濒死状态,你可重复此流程(不能选择本次已选择过的角色)。偶数,你可选择一名角色,你令其摸一张牌或弃置一张手牌。若其手牌数等于体力值,你可重复此流程(不能选择本次已选择过的角色)。',
qixian:'七弦', qixian:'七弦',
qixian_info:'锁定技你的手牌上限视为7。', qixian_info:'锁定技你的手牌上限视为7。',
caopi_xingdong:'行动', caopi_xingdong:'行动',
@ -7978,7 +8010,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcxianjin:'险进', dcxianjin:'险进',
dcxianjin_info:'锁定技。当你每造成或受到两次伤害后你激活一个副区域标签并摸X张牌X为你已激活的副区域数若你的手牌数为全场最多则改为摸一张牌。', dcxianjin_info:'锁定技。当你每造成或受到两次伤害后你激活一个副区域标签并摸X张牌X为你已激活的副区域数若你的手牌数为全场最多则改为摸一张牌。',
dcqijing:'奇径', dcqijing:'奇径',
dcqijing_info:'觉醒技。一名角色的回合结束后若你的三个副区域标签均被激活则你减1点体力上限获得〖摧心〗将座位移动至一名其他角色的上家之后,然后执行一个额外回合。', dcqijing_info:'觉醒技。一名角色的回合结束后若你的三个副区域标签均被激活则你减1点体力上限获得〖摧心〗将座位移动至两名相邻的其他角色之间并执行一个额外回合。',
dccuixin:'摧心', dccuixin:'摧心',
dccuixin_info:'当你不因此技能使用的基本牌或普通锦囊牌结算结束后,若此牌的目标于你使用此牌指定第一个目标时包含你的上家或下家,则你可以视为对下家或上家再使用一张牌名和元素相同的牌。', dccuixin_info:'当你不因此技能使用的基本牌或普通锦囊牌结算结束后,若此牌的目标于你使用此牌指定第一个目标时包含你的上家或下家,则你可以视为对下家或上家再使用一张牌名和元素相同的牌。',
shen_dianwei:'神典韦', shen_dianwei:'神典韦',

View File

@ -180,13 +180,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2, audio:2,
trigger:{player:'useCardAfter'}, trigger:{player:'useCardAfter'},
filter:function(event,player){ filter:function(event,player){
var num=Math.max(player.getHistory('useSkill',evt=>evt.skill=='dczhifou').length,1); var num=player.getHistory('useSkill',evt=>evt.skill=='dczhifou').length+1;
return player.getExpansions('dclingxi').length>=num; return player.getExpansions('dclingxi').length>=num;
}, },
direct:true, direct:true,
content:function*(event,map){ content:function*(event,map){
var player=map.player,cards=player.getExpansions('dclingxi'); var player=map.player,cards=player.getExpansions('dclingxi');
var num=Math.max(player.getHistory('useSkill',evt=>evt.skill=='dczhifou').length,1); var num=player.getHistory('useSkill',evt=>evt.skill=='dczhifou').length+1;
var result=yield player.chooseButton(['###'+get.prompt('dczhifou')+'###移去至少'+get.cnNumber(num)+'张武将牌上的“翼”',cards],[num,cards.length]).set('ai',button=>{ var result=yield player.chooseButton(['###'+get.prompt('dczhifou')+'###移去至少'+get.cnNumber(num)+'张武将牌上的“翼”',cards],[num,cards.length]).set('ai',button=>{
var player=_status.event.player; var player=_status.event.player;
if(2*player.getExpansions('dclingxi').filter(card=>!ui.selected.buttons.some(but=>but.link==card)).reduce((list,card)=>list.add(get.suit(card,false)),[]).length-player.countCards('h')<=0) return 0; if(2*player.getExpansions('dclingxi').filter(card=>!ui.selected.buttons.some(but=>but.link==card)).reduce((list,card)=>list.add(get.suit(card,false)),[]).length-player.countCards('h')<=0) return 0;
@ -197,7 +197,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.logSkill('dczhifou'); player.logSkill('dczhifou');
player.loseToDiscardpile(result.links); player.loseToDiscardpile(result.links);
var list=[],choiceList=[ var list=[],choiceList=[
'将一张牌称为“翼”置于'+get.translation(player)+'的武将牌上', '将一张牌称为“翼”置于的武将牌上',
'弃置两张牌', '弃置两张牌',
'失去1点体力', '失去1点体力',
]; ];
@ -241,18 +241,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return; return;
} }
else if(list.length==1) result3={control:list[0]}; else if(list.length==1) result3={control:list[0]};
else result3=yield target.chooseControl(list).set('prompt','知否:请选择一项').set('choiceList',choiceList).set('ai',()=>{ else result3=yield player.chooseControl(list).set('prompt','知否:请选择一项').set('choiceList',choiceList.map(str=>'令'+get.translation(target)+str)).set('ai',()=>{
var player=_status.event.player; var player=_status.event.player;
var target=_status.event.target;
var getNum=function(control){ var getNum=function(control){
return [ return [
get.effect(player,{name:'guohe_copy2'},player,player)/2, get.effect(target,{name:'guohe_copy2'},target,player)/2,
get.effect(player,{name:'guohe_copy2'},player,player), get.effect(target,{name:'guohe_copy2'},target,player),
get.effect(player,{name:'losehp'},player,player), get.effect(target,{name:'losehp'},target,player),
][['置入“翼”','弃置卡牌','失去体力'].indexOf(control)]; ][['置入“翼”','弃置卡牌','失去体力'].indexOf(control)];
}; };
var controls=_status.event.controls.slice(); var controls=_status.event.controls.slice();
return controls.sort((a,b)=>getNum(b)-getNum(a))[0]; return controls.sort((a,b)=>getNum(b)-getNum(a))[0];
}); }).set('target',target);
switch(result3.control){ switch(result3.control){
case '置入“翼”': case '置入“翼”':
player.addTempSkill('dczhifou_0'); player.addTempSkill('dczhifou_0');
@ -13886,7 +13887,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dclingxi:'灵犀', dclingxi:'灵犀',
dclingxi_info:'出牌阶段开始和结束时你可以将至多X张牌称为“翼”置于你的武将牌上X为你的体力上限。当你失去武将牌上的“翼”时你将手牌数调整至Y张Y为你武将牌上的“翼”所含有的花色数的两倍。', dclingxi_info:'出牌阶段开始和结束时你可以将至多X张牌称为“翼”置于你的武将牌上X为你的体力上限。当你失去武将牌上的“翼”时你将手牌数调整至Y张Y为你武将牌上的“翼”所含有的花色数的两倍。',
dczhifou:'知否', dczhifou:'知否',
dczhifou_info:'当你使用牌结算完毕后你可以移去至少X张武将牌上的“翼”X为本回合此前发动此技能的次数且X至少为1然后令一名角色选择执行以下一项①将一张牌称为“翼”置于你的武将牌上②弃置两张牌③失去1点体力。', dczhifou_info:'当你使用牌结算完毕后你可以移去至少X张武将牌上的“翼”X为本回合此前发动此技能的次数+1然后选择一名角色并选择一项令其执行每个选项每回合限选择一次①将一张牌称为“翼”置于你的武将牌上②弃置两张牌③失去1点体力。',
sp2_yinyu:'隐山之玉', sp2_yinyu:'隐山之玉',
sp2_huben:'百战虎贲', sp2_huben:'百战虎贲',