bug修复,新增孙翊英姿和英魂的语音

This commit is contained in:
copcap 2023-07-22 08:50:24 +08:00
parent 8c54cb7176
commit 16f52d8b65
9 changed files with 88 additions and 34 deletions

Binary file not shown.

Binary file not shown.

View File

@ -5752,7 +5752,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var map={sha:'diamond',tao:'heart'} var map={sha:'diamond',tao:'heart'}
for(var i=0;i<list.length;i++){ for(var i=0;i<list.length;i++){
var name=list[i]; var name=list[i];
if(player.countCards('hs',function(card){ if(player.countCards('hes',function(card){
return (name!='sha'||get.value(card)<5)&&get.suit(card,player)==map[name]; return (name!='sha'||get.value(card)<5)&&get.suit(card,player)==map[name];
})>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){ })>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){
var temp=get.order({name:name,nature:name=='sha'?'fire':null}); var temp=get.order({name:name,nature:name=='sha'?'fire':null});
@ -5767,7 +5767,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
return 1; return 1;
}, },
position:'hs', position:'hes',
filterCard:function(card,player,event){ filterCard:function(card,player,event){
event=event||_status.event; event=event||_status.event;
var filter=event._backup.filterCard; var filter=event._backup.filterCard;
@ -5780,10 +5780,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
filter:function(event,player){ filter:function(event,player){
var filter=event.filterCard; var filter=event.filterCard;
if(filter({name:'sha',nature:'fire'},player,event)&&player.countCards('hs',{suit:'diamond'})) return true; if(filter({name:'sha',nature:'fire'},player,event)&&player.countCards('hes',{suit:'diamond'})) return true;
if(filter({name:'shan'},player,event)&&player.countCards('hs',{suit:'club'})) return true; if(filter({name:'shan'},player,event)&&player.countCards('hes',{suit:'club'})) return true;
if(filter({name:'tao'},player,event)&&player.countCards('hs',{suit:'heart'})) return true; if(filter({name:'tao'},player,event)&&player.countCards('hes',{suit:'heart'})) return true;
if(filter({name:'wuxie'},player,event)&&player.countCards('hs',{suit:'spade'})) return true; if(filter({name:'wuxie'},player,event)&&player.countCards('hes',{suit:'spade'})) return true;
return false; return false;
}, },
ai:{ ai:{
@ -5796,7 +5796,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
case 'respondShan':name='club';break; case 'respondShan':name='club';break;
case 'save':name='heart';break; case 'save':name='heart';break;
} }
if(!player.countCards('hs',{suit:name})) return false; if(!player.countCards('hes',{suit:name})) return false;
}, },
order:function(item,player){ order:function(item,player){
if(player&&_status.event.type=='phase'){ if(player&&_status.event.type=='phase'){
@ -5805,7 +5805,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var map={sha:'diamond',tao:'heart'} var map={sha:'diamond',tao:'heart'}
for(var i=0;i<list.length;i++){ for(var i=0;i<list.length;i++){
var name=list[i]; var name=list[i];
if(player.countCards('hs',function(card){ if(player.countCards('hes',function(card){
return (name!='sha'||get.value(card)<5)&&get.suit(card,player)==map[name]; return (name!='sha'||get.value(card)<5)&&get.suit(card,player)==map[name];
})>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){ })>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){
var temp=get.order({name:name,nature:name=='sha'?'fire':null}); var temp=get.order({name:name,nature:name=='sha'?'fire':null});
@ -5819,9 +5819,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
hiddenCard:function(player,name){ hiddenCard:function(player,name){
if(name=='wuxie'&&_status.connectMode&&player.countCards('hs')>0) return true; if(name=='wuxie'&&_status.connectMode&&player.countCards('hes')>0) return true;
if(name=='wuxie') return player.countCards('hs',{suit:'spade'})>0; if(name=='wuxie') return player.countCards('hes',{suit:'spade'})>0;
if(name=='tao') return player.countCards('hs',{suit:'heart'})>0; if(name=='tao') return player.countCards('hes',{suit:'heart'})>0;
}, },
}, },
xinjuejing:{ xinjuejing:{
@ -6955,7 +6955,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
relonghun:'龙魂', relonghun:'龙魂',
relonghun_info:'你可以将同花色的一至两张牌按下列规则使用或打出:红桃当【桃】,方块当火【杀】,梅花当【闪】,黑桃当普【无懈可击】。若你以此法使用了两张红色牌,则此牌回复值或伤害值+1。若你以此法使用了两张黑色牌则你弃置当前回合角色一张牌。', relonghun_info:'你可以将同花色的一至两张牌按下列规则使用或打出:红桃当【桃】,方块当火【杀】,梅花当【闪】,黑桃当普【无懈可击】。若你以此法使用了两张红色牌,则此牌回复值或伤害值+1。若你以此法使用了两张黑色牌则你弃置当前回合角色一张牌。',
xinlonghun:'龙魂', xinlonghun:'龙魂',
xinlonghun_info:'你可以将你的牌按下列规则使用或打出:红桃当【桃】,方块当火【杀】,梅花当【闪】,黑桃当普【无懈可击】。', xinlonghun_info:'你可以将你的牌按下列规则使用或打出:红桃当【桃】,方块当火【杀】,梅花当【闪】,黑桃当普【无懈可击】。',
longhun:'龙魂', longhun:'龙魂',
longhun1:'龙魂♥︎', longhun1:'龙魂♥︎',
longhun2:'龙魂♦︎', longhun2:'龙魂♦︎',

View File

@ -437,7 +437,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}); });
'step 2' 'step 2'
player.give(result.cards,trigger.player); player.give(result.cards,trigger.player);
trigger.player.addSkill('rexiantu_check'); trigger.player.addTempSkill('rexiantu_check','phaseUseAfter');
trigger.player.markAuto('rexiantu_check',[player]); trigger.player.markAuto('rexiantu_check',[player]);
}, },
ai:{ ai:{
@ -12444,6 +12444,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reyingzi:{ reyingzi:{
audio:2, audio:2,
audioname:['heqi','sunce','gexuan','re_sunben','re_sunce','re_heqi'], audioname:['heqi','sunce','gexuan','re_sunben','re_sunce','re_heqi'],
audioname2:{re_sunyi:'reyingzi_re_sunyi'},
trigger:{player:'phaseDrawBegin2'}, trigger:{player:'phaseDrawBegin2'},
forced:true, forced:true,
preHidden:true, preHidden:true,

View File

@ -5085,6 +5085,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gzyinghun:{ gzyinghun:{
audio:'yinghun', audio:'yinghun',
audioname:['re_sunjian','sunce','re_sunben','re_sunce','ol_sunjian','sb_sunce'], audioname:['re_sunjian','sunce','re_sunben','re_sunce','ol_sunjian','sb_sunce'],
audioname2:{re_sunyi:'gzyinghun_re_sunyi'},
trigger:{player:'phaseZhunbeiBegin'}, trigger:{player:'phaseZhunbeiBegin'},
filter:function(event,player){ filter:function(event,player){
return player.getDamagedHp()>0; return player.getDamagedHp()>0;

View File

@ -8271,10 +8271,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
effect:{ effect:{
target:function(card,player,target){ target:function(card,player,target){
if(!_status.olxiuhao_judging&&get.tag(card,'damage')&&get.attitude(target,player)>0&&(!target.storage.counttrigger||!target.storage.counttrigger.olxiuhao)) return [0,0.5,0,0.5]; if(!_status.olxiuhao_judging&&get.tag(card,'damage')&&get.attitude(target,player)>0&&player!=target&&(!target.storage.counttrigger||!target.storage.counttrigger.olxiuhao)) return [0,0.5,0,0.5];
}, },
player:function(card,player,target){ player:function(card,player,target){
if(!_status.olxiuhao_judging&&get.tag(card,'damage')&&get.attitude(player,target)>0&&(!player.storage.counttrigger||!player.storage.counttrigger.olxiuhao)) return [0,0.5,0,0.5]; if(!_status.olxiuhao_judging&&get.tag(card,'damage')&&get.attitude(player,target)>0&&player!=target&&(!player.storage.counttrigger||!player.storage.counttrigger.olxiuhao)) return [0,0.5,0,0.5];
}, },
}, },
}, },
@ -9209,7 +9209,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
backup:function(links,player){ backup:function(links,player){
return { return {
selectCard:player.countMark('jinzhi2')+1, selectCard:player.countMark('jinzhi2')+1,
filterCard:lib.filter.cardDiscardable, filterCard:function(card,player){
if(ui.selected.cards.length){
if(get.color(card)!=get.color(ui.selected.cards[0])) return false;
}
return lib.filter.cardDiscardable.apply(this,arguments);
},
complexCard:true,
viewAs:{ viewAs:{
name:links[0][2], name:links[0][2],
nature:links[0][3], nature:links[0][3],
@ -9258,7 +9264,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:function(links,player){ prompt:function(links,player){
var name=links[0][2]; var name=links[0][2];
var nature=links[0][3]; var nature=links[0][3];
return '弃置'+get.cnNumber(player.countMark('jinzhi2')+1)+'张牌并摸一张牌。若弃置的牌颜色均相同,则视为使用'+(get.translation(nature)||'')+get.translation(name); return '弃置'+get.cnNumber(player.countMark('jinzhi2')+1)+'张颜色相同的牌并摸一张牌,然后视为使用'+(get.translation(nature)||'')+get.translation(name);
}, },
}, },
ai:{ ai:{
@ -22991,7 +22997,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
weiyi_info:'每名角色限一次。当有角色受到伤害后你可选择①若其体力值不小于你则其失去1点体力。②若其体力值不大于你且其已受伤则其回复1点体力。', weiyi_info:'每名角色限一次。当有角色受到伤害后你可选择①若其体力值不小于你则其失去1点体力。②若其体力值不大于你且其已受伤则其回复1点体力。',
jinzhi:'锦织', jinzhi:'锦织',
jinzhi2:'锦织', jinzhi2:'锦织',
jinzhi_info:'当你需要使用或打出一张基本牌时你可弃置X+1张牌并摸一张牌。若你以此法弃置的牌均为同一颜色,则视为你使用或打出了此牌。X为你于本轮内发动此技能的次数', jinzhi_info:'当你需要使用或打出一张基本牌时你可弃置X+1张颜色相同的牌并摸一张牌,然后视为你使用或打出了此牌。X为你于本轮内发动此技能的次数',
yanxiao_card:'言笑', yanxiao_card:'言笑',
yanxiao_global:'言笑', yanxiao_global:'言笑',
yanxiao_card_info:'判定阶段开始时,你获得判定区内的所有牌。', yanxiao_card_info:'判定阶段开始时,你获得判定区内的所有牌。',

View File

@ -17200,6 +17200,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
derivation:['olhunzi','reyingzi','gzyinghun'], derivation:['olhunzi','reyingzi','gzyinghun'],
}, },
gzyinghun_re_sunyi:{audio:1},
reyingzi_re_sunyi:{audio:1},
//庞德公 //庞德公
heqia:{ heqia:{
audio:2, audio:2,
@ -27424,10 +27426,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xpchijie:{ xpchijie:{
audio:2, audio:2,
trigger:{ trigger:{
player:'useCardToAfter', target:'useCardToAfter',
}, },
filter:function(event,player){ filter:function(event,player){
return !player.hasSkill('xpchijie4')&&event.player!=player; var evt=event.getParent();
var targets=evt.targets.slice(evt.num+1);
return event.player!=player&&targets.length>0;
},
usable:1,
prompt2:function(event,player){
var evt=event.getParent();
var targets=evt.targets.slice(evt.num+1);
return '令'+get.translation(event.card)+'对'+get.translation(targets)+'无效';
}, },
check:function(event,player){ check:function(event,player){
var evt=event.getParent(); var evt=event.getParent();
@ -27439,7 +27449,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return num<-1; return num<-1;
}, },
content:function(){ content:function(){
player.addTempSkill('xpchijie4');
var evt=trigger.getParent(); var evt=trigger.getParent();
evt.excluded.addArray(evt.targets); evt.excluded.addArray(evt.targets);
}, },
@ -27449,17 +27458,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{global:'useCardAfter'}, trigger:{global:'useCardAfter'},
audio:'xpchijie', audio:'xpchijie',
filter:function(event,player){ filter:function(event,player){
return event.player!=player&&event.targets.contains(player)&&!player.hasSkill('xpchijie4')&&event.cards.filterInD().length>0&&!game.hasPlayer2(function(current){ return event.player!=player&&event.targets.contains(player)&&event.cards.filterInD().length>0&&!game.hasPlayer2(function(current){
return current.getHistory('damage',function(evt){ return current.getHistory('damage',function(evt){
return evt.card==event.card; return evt.card==event.card;
}).length>0; }).length>0;
}); });
}, },
usable:1,
check:function(event,player){ check:function(event,player){
return get.value(event.cards.filterInD(),player,'raw')>0; return get.value(event.cards.filterInD(),player,'raw')>0;
}, },
prompt2:function(event,player){
return '获得'+get.translation(event.cards.filterInD())+'。';
},
content:function(){ content:function(){
player.addTempSkill('xpchijie4');
player.gain(trigger.cards.filterInD(),'log','gain2'); player.gain(trigger.cards.filterInD(),'log','gain2');
}, },
}, },
@ -27476,6 +27488,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.yinju2=target; player.storage.yinju2=target;
player.addTempSkill('yinju2'); player.addTempSkill('yinju2');
}, },
ai:{
result:{
player:function(player,target){
if(player.countCards('hs',function(card){
return get.tag(card,'damage')&&player.canUse(card,target);
})>=1&&target.hp<=2) return 0.1;
if(player.countCards('hes',function(card){
return player.canUse(card,target);
})<=2) return -100;
return 1;
},
target:function(player,target){
return target.isDamaged()?5:3;
},
}
}
}, },
yinju2:{ yinju2:{
trigger:{ trigger:{
@ -27504,6 +27532,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1' 'step 1'
game.delayx(); game.delayx();
}, },
ai:{
effect:{
player:function(card,player,target){
if(target!=player.storage.yinju2) return;
if(card.name=='lebu') return;
return [0,0.5,0,0.5];
},
},
},
}, },
//管辂和葛玄 //管辂和葛玄
gxlianhua:{ gxlianhua:{
@ -29779,7 +29816,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lskuizhu:'馈珠', lskuizhu:'馈珠',
lskuizhu_info:'出牌阶段结束时你可以选择体力值为全场最多的一名其他角色将手牌摸至与该角色相同最多摸至五张然后该角色观看你的手牌弃置任意张手牌并从观看的牌中获得等量的牌。若其获得的牌大于一张则你选择一项移去一个“珠”或令其对其攻击范围内的一名角色造成1点伤害。', lskuizhu_info:'出牌阶段结束时你可以选择体力值为全场最多的一名其他角色将手牌摸至与该角色相同最多摸至五张然后该角色观看你的手牌弃置任意张手牌并从观看的牌中获得等量的牌。若其获得的牌大于一张则你选择一项移去一个“珠”或令其对其攻击范围内的一名角色造成1点伤害。',
xpchijie:'持节', xpchijie:'持节',
xpchijie_info:'每回合限一次。①当你其他角色使用的牌对你结算结束后,你可以令此牌对所有后续目标无效。②其他角色使用的牌结算完成时,若你是此牌的目标之一且此牌未造成过伤害,则你可以获得此牌对应的所有实体牌。', xpchijie_info:'每回合每项各限一次。1.当其他角色使用的牌对你结算结束后你可以令此牌对所有后续目标无效。2.其他角色使用的牌结算完成时,若你是此牌的目标之一且此牌未造成过伤害,则你可以获得此牌对应的所有实体牌。',
xpchijie2:'持节', xpchijie2:'持节',
yinju:'引裾', yinju:'引裾',
yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你于此阶段内使用牌指定其为目标后,你与其各摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。', yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你于此阶段内使用牌指定其为目标后,你与其各摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。',

View File

@ -2211,16 +2211,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return '选项一'; return '选项一';
}).set('list',list); }).set('list',list);
'step 1' 'step 1'
if(result.control=='背水!'&&player!=trigger.player) player.give(player.getCards('h'),trigger.player); event.choice=result.control;
if(result.control!='选项二'){ if(event.choice=='背水!'&&player!=trigger.player) player.give(player.getCards('h'),trigger.player);
'step 2'
if(event.choice!='选项二'){
var card=get.cardPile2(function(card){ var card=get.cardPile2(function(card){
return card.name=='sha'; return card.name=='sha';
}); });
if(card) trigger.player.gain(card,'gain2'); if(card) trigger.player.gain(card,'gain2');
else game.log('但牌堆里已经没有','#y杀','了!'); else game.log('但牌堆里已经没有','#y杀','了!');
if(result.control=='选项一') event.finish(); if(event.choice=='选项一') event.finish();
} }
if(result.control!='选项一'){ 'step 3'
if(event.choice!='选项一'){
if(trigger.player.countCards('h')) trigger.player.chooseCardTarget({ if(trigger.player.countCards('h')) trigger.player.chooseCardTarget({
prompt:'将一张手牌交给另一名其他角色并摸两张牌', prompt:'将一张手牌交给另一名其他角色并摸两张牌',
filterCard:true, filterCard:true,
@ -2237,7 +2240,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}); });
else event.finish(); else event.finish();
} }
'step 2' 'step 4'
var target=result.targets[0]; var target=result.targets[0];
trigger.player.line(target); trigger.player.line(target);
trigger.player.give(result.cards,target); trigger.player.give(result.cards,target);

View File

@ -1096,8 +1096,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
} }
"step 3" "step 3"
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
_status.characterlist.remove(get.sourceCharacter(game.players[i].name1)); _status.characterlist.remove(game.players[i].name1);
_status.characterlist.remove(get.sourceCharacter(game.players[i].name2)); _status.characterlist.remove(game.players[i].name2);
} }
setTimeout(function(){ setTimeout(function(){
ui.arena.classList.remove('choose-character'); ui.arena.classList.remove('choose-character');
@ -2259,9 +2259,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}, },
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('h',2,'是否发动【飞扬】,弃置两张手牌并弃置自己判定区的一张牌?').set('logSkill','feiyang').ai=function(card){ player.chooseToDiscard('h',2,get.prompt('feiyang'),'弃置两张手牌,然后弃置判定区里的一张牌').set('logSkill','feiyang').set('ai',function(card){
return 6-get.value(card); if(_status.event.goon) return 6-get.value(card);
}; return 0;
}).set('goon',player.hasCard(function(card){
return get.effect(player,{
name:card.viewAs||card.name,
cards:[card],
},player,player)<0;
},'j'));
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.discardPlayerCard(player,'j',true); player.discardPlayerCard(player,'j',true);