Merge pull request #232 from mengxinzxz/PR-Branch

bug修复+调虎离山修改
This commit is contained in:
Spmario233 2023-08-25 21:44:28 +08:00 committed by GitHub
commit 7273418d0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 98 additions and 80 deletions

View File

@ -397,7 +397,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
player.logSkill('taipingyaoshu'); player.logSkill('taipingyaoshu');
player.draw(2); player.draw(2);
'step 1' 'step 1'
if(player.hp>1) player.loseHp(); if(player.hp>1||get.mode()=='guozhan') player.loseHp();
} }
}, },
yuxi:{ yuxi:{
@ -1496,7 +1496,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return current.isFriendOf(player); return current.isFriendOf(player);
}); });
} }
return num+game.countGroup(); return num+game.countGroup()-1;
} }
}, },
trigger:{player:'damageBegin4'}, trigger:{player:'damageBegin4'},
@ -1687,34 +1687,23 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}, },
g_diaohulishan:{}, g_diaohulishan:{},
diaohulishan:{ diaohulishan:{
trigger:{player:['damageBegin3','loseHpBefore','recoverBefore']}, charlotte:true,
forced:true,
popup:false,
content:function(){
trigger.cancel();
},
mod:{
cardEnabled:function(){
return false;
},
cardSavable:function(){
return false;
},
targetEnabled:function(){
return false;
},
},
mark:true,
intro:{
content:'不计入距离的计算且不能使用牌且不是牌的合法目标且不能失去/回复体力和受到伤害'
},
group:'undist', group:'undist',
ai:{ init:function(player){
effect:{ if(player.isIn()){
target:function (card,player,target){ game.broadcastAll(function(player){
if(get.tag(card,'recover')||get.tag(card,'damage')) return 'zeroplayertarget'; player.classList.add('out');
}, },player);
game.log(player,'移出了游戏');
}
}, },
onremove:function(player){
if(player.isOut()){
game.broadcastAll(function(player){
player.classList.remove('out');
},player);
game.log(player,'移回了游戏');
}
}, },
}, },
huxinjing:{ huxinjing:{
@ -1815,8 +1804,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
feilongduofeng3:'飞龙夺凤', feilongduofeng3:'飞龙夺凤',
feilongduofeng_info:'①当你使用【杀】指定目标后,你可令目标角色弃置一张牌。②当你因使用【杀】而令其他角色进入濒死状态时,你可以获得其一张手牌。', feilongduofeng_info:'①当你使用【杀】指定目标后,你可令目标角色弃置一张牌。②当你因使用【杀】而令其他角色进入濒死状态时,你可以获得其一张手牌。',
taipingyaoshu:'太平要术', taipingyaoshu:'太平要术',
taipingyaoshu_info:'锁定技。①当你即将到属性伤害时,取消之。②你的手牌上限+XX为势力数。③当你失去装备区里的【太平要术】时你摸两张牌然后若你的体力值大于1你失去1点体力。', taipingyaoshu_info:'锁定技。①当你即将到属性伤害时,取消之。②你的手牌上限+XX为场上势力数-1。③当你失去装备区里的【太平要术】时你摸两张牌然后若你的体力值大于1你失去1点体力。',
taipingyaoshu_info_guozhan:'锁定技。①当你即将到属性伤害时,取消之。②你的手牌上限+XX为与你势力相同的角色数。③当你失去装备区里的【太平要术】时你摸两张牌然后若你的体力值大于1你失去1点体力。', taipingyaoshu_info_guozhan:'锁定技。①当你即将到属性伤害时,取消之。②你的手牌上限+XX为与你势力相同的角色数。③当你失去装备区里的【太平要术】时你摸两张牌然后你失去1点体力。',
yuxi_skill:'玉玺', yuxi_skill:'玉玺',
yuxi_skill2:'玉玺', yuxi_skill2:'玉玺',
yuxi:'玉玺', yuxi:'玉玺',
@ -1836,7 +1825,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
chiling:'敕令', chiling:'敕令',
chiling_info:'①出牌阶段对所有没有势力的角色使用。目标角色选择一项1、明置一张武将牌然后摸一张牌2、弃置一张装备牌3、失去1点体力。②当【敕令】因判定或弃置而置入弃牌堆时系统将之移出游戏并将【诏书】置于牌堆底然后系统于当前回合结束后视为对所有没有势力的角色使用【敕令】。', chiling_info:'①出牌阶段对所有没有势力的角色使用。目标角色选择一项1、明置一张武将牌然后摸一张牌2、弃置一张装备牌3、失去1点体力。②当【敕令】因判定或弃置而置入弃牌堆时系统将之移出游戏并将【诏书】置于牌堆底然后系统于当前回合结束后视为对所有没有势力的角色使用【敕令】。',
diaohulishan:'调虎离山', diaohulishan:'调虎离山',
diaohulishan_info:'出牌阶段,对至多两名其他角色使用。目标角色于此回合结束之前不计入距离的计算且不能使用牌且不是牌的合法目标且不能失去或回复体力或受到伤害。', diaohulishan_info:'出牌阶段,对至多两名其他角色使用。目标角色于此回合视为移出游戏。',
huoshaolianying:'火烧连营', huoshaolianying:'火烧连营',
huoshaolianying_bg:'烧', huoshaolianying_bg:'烧',
huoshaolianying_info_guozhan:'出牌阶段对你的下家及其队列中的所有角色使用。你对目标角色造成1点火属性伤害。', huoshaolianying_info_guozhan:'出牌阶段对你的下家及其队列中的所有角色使用。你对目标角色造成1点火属性伤害。',

View File

@ -613,38 +613,39 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return game.hasPlayer(current=>{ return game.hasPlayer(current=>{
if(current==player||current==event.player) return false; if(current==player||current==event.player) return false;
return current.hasHistory('lose',function(evt){ return current.hasHistory('lose',function(evt){
return evt.cards.length>0; return evt.cards2.length>0;
}); });
})&&(_status.connectMode||player.hasCard({type:'basic'},'h')); })&&(_status.connectMode||player.hasCard({type:'basic'},'h'));
}, },
direct:true, direct:true,
content:function(){ content:function(){
'step 0' 'step 0'
var map={};
game.countPlayer(function(current){
if(current==player||current==trigger.player) return false;
if(current.hasHistory('lose',function(evt){
return evt.cards2.length>0;
})) map[current.playerid]=Math.min(5,current.getHistory('lose').reduce(function(num,evt){
return num=evt.cards2.length;
},0))+1;
});
player.chooseCardTarget({ player.chooseCardTarget({
prompt:get.prompt('dcporui'), prompt:get.prompt('dcporui'),
//prompt2:'弃置一张基本牌并选择一名本回合失去过牌的非当前回合的其他角色,你视为对其依次使用'+get.cnNumber(Math.max(0,player.hp)+1)+'张【杀】',
prompt2:get.skillInfoTranslation('dcporui',player), prompt2:get.skillInfoTranslation('dcporui',player),
filterCard:lib.filter.cardDiscardable, filterCard:function(card,player){
selectCard:1, return get.type2(card)=='basic'&&lib.filter.cardDiscardable(card,player,'dcporui');
},
position:'he', position:'he',
list:game.filterPlayer(current=>{
if(current==player||current==trigger.player) return false;
return current.hasHistory('lose',function(evt){
return evt.cards.length>0;
});
}),
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return _status.event.list.map(i=>i[0]).contains(target); return Object.keys(_status.event.map).contains(target.playerid);
}, },
ai1:function(card){ ai1:function(card){
return 7-get.value(card); return 7-get.value(card);
}, },
ai2:function(target){ ai2:function(target){
return get.effect(target,{name:'sha'},_status.event.player,_status.event.player)*_status.event.list.find(i=>{ return get.effect(target,{name:'sha'},_status.event.player,_status.event.player)*_status.event.map[target.playerid];
return i[0]==target;
})[1];
} }
}); }).set('map',map);
'step 1' 'step 1'
if(result.bool){ if(result.bool){
var target=result.targets[0],cards=result.cards; var target=result.targets[0],cards=result.cards;

View File

@ -168,9 +168,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.addSkillLog('rezhiheng'); player.addSkillLog('rezhiheng');
player.addSkill('jsrgzhasi_undist'); player.addSkill('jsrgzhasi_undist');
}, },
derivation:'rezhiheng',
subSkill:{ subSkill:{
undist:{ undist:{
inherit:'undist', group:'undist',
charlotte:true, charlotte:true,
trigger:{ trigger:{
player:['useCardAfter','damageEnd'], player:['useCardAfter','damageEnd'],
@ -301,7 +302,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).set('choice',maxGroup); }).set('choice',maxGroup);
'step 1' 'step 1'
var group=result.control; var group=result.control;
if(group=='cancel2') if(group=='cancel2') return;
player.logSkill('jsrglipan'); player.logSkill('jsrglipan');
player.popup(group+'2',get.groupnature(group,'raw')); player.popup(group+'2',get.groupnature(group,'raw'));
player.changeGroup(group); player.changeGroup(group);
@ -575,6 +576,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.useCard({name:name},target,cards); player.useCard({name:name},target,cards);
player.addTempSkill('jsrgqingjiao_'+name,'phaseUseAfter'); player.addTempSkill('jsrgqingjiao_'+name,'phaseUseAfter');
}, },
ai:{
order:7,
result:{
target:function(player,target){
var name=(target.countCards('h')>player.countCards('h')?'tuixinzhifu':'chenghuodajie');
var list=[];
if(ui.selected.cards.length) list.addArray(ui.selected.cards);
var card=get.autoViewAs({name:name},list);
return get.effect(card,target,player);
},
},
},
subSkill:{ subSkill:{
tuixinzhifu:{ tuixinzhifu:{
charlotte:true, charlotte:true,
@ -1526,13 +1539,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){ content:function(){
'step 0' 'step 0'
player.chooseTarget(get.prompt('jsrgtuwei'),'获得攻击范围内任意名角色的各一张牌。然后回合结束时这些角色中未受过伤害的角色依次获得你的一张牌。',(card,player,target)=>{ player.chooseTarget(get.prompt('jsrgtuwei'),'获得攻击范围内任意名角色的各一张牌。然后回合结束时这些角色中未受过伤害的角色依次获得你的一张牌。',(card,player,target)=>{
return player.inRange(current)&&target.countGainableCards(player,'he')>0; return player.inRange(target)&&target.countGainableCards(player,'he')>0;
},[1,Infinity]).set('ai',target=>{ },[1,Infinity]).set('ai',target=>{
var player=_status.event.player; var player=_status.event.player;
return get.effect(target,{name:'shunshou'},player,player); return get.effect(target,{name:'shunshou_copy2'},player,player);
}).set('damage',player.hasCard(card=>{ });
return player.hasValueTarget(card)&&get.tag(card,'damage');
},'hs'));
'step 1' 'step 1'
if(result.bool){ if(result.bool){
var targets=result.targets.slice(); var targets=result.targets.slice();
@ -1831,7 +1842,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
//江山如故·起 //江山如故·起
sbyingmen:{ sbyingmen:{
forbid:['guozhan'],
trigger:{ trigger:{
global:'phaseBefore', global:'phaseBefore',
player:'enterGame', player:'enterGame',

View File

@ -6488,21 +6488,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
tianshu:{ tianshu:{
audio:2, audio:2,
enable:'phaseUse', trigger:{player:'phaseUseBegin'},
usable:1,
filter:function(event,player){ filter:function(event,player){
return player.countCards('he')>0&&!game.hasPlayer(function(current){ return player.countCards('he')&&!game.hasPlayer(function(current){
return current.countCards('ej','taipingyaoshu'); return current.countCards('ej','taipingyaoshu');
}); });
}, },
position:'he', direct:true,
filterCard:true,
filterTarget:true,
check:function(card){
return 6-get.value(card);
},
content:function(){ content:function(){
'step 0' 'step 0'
player.chooseCardTarget({
prompt:get.prompt2('tianshu'),
filterCard:true,
position:'he',
ai1:function(card){
return 5-get.value(card);
},
ai2:function(target){
var player=_status.event.player;
if(get.attitude(player,target)>0&&!target.hasEmptySlot(2)) return 0;
return get.attitude(player,target);
},
});
'step 1'
if(!result.bool){event.finish();return;}
var target=result.targets[0];
event.target=target;
player.logSkill('tianshu',target);
player.discard(result.cards);
if(!lib.inpile.contains('taipingyaoshu')){ if(!lib.inpile.contains('taipingyaoshu')){
lib.inpile.push('taipingyaoshu'); lib.inpile.push('taipingyaoshu');
event.card=game.createCard2('taipingyaoshu','heart',3); event.card=game.createCard2('taipingyaoshu','heart',3);
@ -6514,20 +6527,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
if(!event.card) event.finish(); if(!event.card) event.finish();
else target.gain(event.card,'gain2'); else target.gain(event.card,'gain2');
'step 1' 'step 2'
if(target.getCards('h').contains(card)&&get.name(card,target)=='taipingyaoshu') target.chooseUseTarget(card,'nopopup',true); if(target.getCards('h').contains(card)&&get.name(card,target)=='taipingyaoshu') target.chooseUseTarget(card,'nopopup',true);
}, },
ai:{
order:3,
result:{
target:function(player,target){
if(lib.inpile.contains('taipingyaoshu')&&!get.cardPile(function(card){
return card.name=='taipingyaoshu';
})) return 0;
return target.getUseValue({name:'taipingyaoshu'});
},
},
},
}, },
//界伏寿 //界伏寿
xinzhuikong:{ xinzhuikong:{
@ -13560,7 +13562,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yufeng2:'御风', yufeng2:'御风',
yufeng_info:'出牌阶段限一次你可以表演“御风飞行”。若表演失败则你摸X张牌。若表演成功则你可以选择至多X名其他角色获得“御风”效果然后摸X-Y张牌准备阶段开始时你进行判定。若结果为红色你跳过摸牌阶段黑色你跳过出牌阶段和弃牌阶段。X为你的得分。Y为你选择的角色数。', yufeng_info:'出牌阶段限一次你可以表演“御风飞行”。若表演失败则你摸X张牌。若表演成功则你可以选择至多X名其他角色获得“御风”效果然后摸X-Y张牌准备阶段开始时你进行判定。若结果为红色你跳过摸牌阶段黑色你跳过出牌阶段和弃牌阶段。X为你的得分。Y为你选择的角色数。',
tianshu:'天书', tianshu:'天书',
tianshu_info:'出牌阶段限一次,若场上没有【太平要术】,则你可以弃置一张牌并选择一名角色。该角色获得并使用【太平要术】。', tianshu_info:'出牌阶段开始时,若场上没有【太平要术】,则你可以弃置一张牌并选择一名角色。该角色获得并使用【太平要术】。',
re_jiangwei:'手杀姜维', re_jiangwei:'手杀姜维',
retiaoxin:'挑衅', retiaoxin:'挑衅',
retiaoxin_info:'出牌阶段限一次,你可以指定一名有牌的其他角色,该角色需对你使用一张【杀】,否则你弃置其一张牌。', retiaoxin_info:'出牌阶段限一次,你可以指定一名有牌的其他角色,该角色需对你使用一张【杀】,否则你弃置其一张牌。',

View File

@ -467,6 +467,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
sbzhiba:{ sbzhiba:{
init:function(player){
if(player.hasZhuSkill('sbzhiba')) player.markSkill('sbzhiba');
},
audio:2, audio:2,
trigger:{player:'dying'}, trigger:{player:'dying'},
filter:function(event,player){ filter:function(event,player){
@ -475,6 +478,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
zhuSkill:true, zhuSkill:true,
limited:true, limited:true,
mark:false,
skillAnimation:true, skillAnimation:true,
animationColor:'wood', animationColor:'wood',
content:function(){ content:function(){
@ -1603,7 +1607,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lose:false, lose:false,
delay:false, delay:false,
filter:function(event,player){ filter:function(event,player){
return player.countMark('sbrende')<2||player.hasSkill('sbrende_used'); if(player.countMark('sbrende')<2||player.hasSkill('sbrende_used')) return true;
for(var name of lib.inpile){
if(get.type(name)!='basic') continue;
var card={name:name,isCard:true};
if(event.filterCard(card,player,event)) return false;
if(name=='sha'){
for(var nature of lib.inpile_nature){
card.nature=nature;
if(event.filterCard(card,player,event)) return false;
}
}
}
return true;
}, },
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
if(player.getStorage('sbrende_given').contains(target)) return false; if(player.getStorage('sbrende_given').contains(target)) return false;

View File

@ -6548,7 +6548,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
spjungong_info:'出牌阶段你可失去X+1点体力或弃置X+1张牌视为对一名其他角色使用【杀】不计入次数和距离限制X为你本回合内发动过〖峻攻〗的次数。若你因此【杀】造成了伤害则你令此技能失效直到回合结束。', spjungong_info:'出牌阶段你可失去X+1点体力或弃置X+1张牌视为对一名其他角色使用【杀】不计入次数和距离限制X为你本回合内发动过〖峻攻〗的次数。若你因此【杀】造成了伤害则你令此技能失效直到回合结束。',
spdengli:'等力', spdengli:'等力',
spdengli_info:'当你使用【杀】指定目标后,或成为【杀】的目标后,若使用者和目标的体力值相等,则你摸一张牌。', spdengli_info:'当你使用【杀】指定目标后,或成为【杀】的目标后,若使用者和目标的体力值相等,则你摸一张牌。',
sp_huaman:'手杀花', sp_huaman:'手杀花',
spxiangzhen:'象阵', spxiangzhen:'象阵',
spxiangzhen_info:'锁定技。①【南蛮入侵】对你无效。②当有角色使用的【南蛮入侵】结算结束后,若有角色因此牌受到过伤害,则你和使用者各摸一张牌。', spxiangzhen_info:'锁定技。①【南蛮入侵】对你无效。②当有角色使用的【南蛮入侵】结算结束后,若有角色因此牌受到过伤害,则你和使用者各摸一张牌。',
spfangzong:'芳踪', spfangzong:'芳踪',

View File

@ -14846,7 +14846,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gzzhengrong:'征荣', gzzhengrong:'征荣',
gzzhengrong_info:'锁定技。①你至大势力角色的距离-1。②当你选择“军令”时你令可选军令数量+1。③当你造成或受到伤害时若你没有存活的队友则此伤害+1。', gzzhengrong_info:'锁定技。①你至大势力角色的距离-1。②当你选择“军令”时你令可选军令数量+1。③当你造成或受到伤害时若你没有存活的队友则此伤害+1。',
gzhongju:'鸿举', gzhongju:'鸿举',
gzhongju_info:'限定技。出牌阶段你可以选择一名其他角色A并选择一个“军令”。你执行该军令然后令除A以外的所有其他角色依次选择一项⒈执行该军令。⒉不计入距离的计算且不能使用牌且不是牌的合法目标且不能失去或回复体力或受到伤害直到回合结束。', gzhongju_info:'限定技。出牌阶段你可以选择一名其他角色A并选择一个“军令”。你执行该军令然后令除A以外的所有其他角色依次选择一项⒈执行该军令。⒉于本回合视为移出游戏。',
gzbiaozhao:'表召', gzbiaozhao:'表召',
gzbiaozhao_info:'出牌阶段限一次。你可以选择两名势力不同的其他角色A和B。你视为对A使用一张【知己知彼】然后将一张牌交给B并摸一张牌。', gzbiaozhao_info:'出牌阶段限一次。你可以选择两名势力不同的其他角色A和B。你视为对A使用一张【知己知彼】然后将一张牌交给B并摸一张牌。',
gzyechou:'业仇', gzyechou:'业仇',