Merge pull request #362 from mengxinzxz/PR-Branch

bugfix
This commit is contained in:
Spmario233 2023-09-21 18:41:53 +08:00 committed by GitHub
commit 112b5203e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 110 additions and 75 deletions

Binary file not shown.

Binary file not shown.

View File

@ -3050,13 +3050,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!player.hasZhuSkill('sbhuangtian')||!player.hasSkill('sbguidao',null,false,false)) return false;
if(!event.source||player==event.source||event.source.group!='qun') return false;
if(player.hasSkill('sbguidao')&&player.countMark('sbguidao')>=8) return false;
// if(player.countMark('sbhuangtian_count')>999) return false;
if(player.countMark('sbhuangtian_count')>=4) return false;
return true;
},
content:function(){
player.addMark('sbguidao',1);
// player.addTempSkill('sbhuangtian_count','roundStart');
// player.addMark('sbhuangtian_count',1,false);
player.addTempSkill('sbhuangtian_count','roundStart');
player.addMark('sbhuangtian_count',1,false);
}
},
count:{onremove:true}
@ -4645,7 +4645,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sbguidao:'鬼道',
sbguidao_info:'①游戏开始时你获得4枚“道兵”标记。②“道兵”上限为8。③一名角色受到属性伤害后你获得2枚“道兵”。④当你受到伤害时你可以弃2枚“道兵”并防止此伤害。然后若当前回合角色不为你〖鬼道③〗于你下回合开始前无效。',
sbhuangtian:'黄天',
sbhuangtian_info:'主公技锁定技。①回合开始时若本回合为你的第一个回合且游戏轮数为1且游戏内没有【太平要术】你装备【太平要术】。②其他群势力角色造成伤害后若你拥有〖鬼道〗你获得1枚“道兵”。',
sbhuangtian_info:'主公技锁定技。①回合开始时若本回合为你的第一个回合且游戏轮数为1且游戏内没有【太平要术】你装备【太平要术】。②其他群势力角色造成伤害后若你拥有〖鬼道〗你获得1枚“道兵”每轮你至多以此法获得4枚“道兵”。',
sb_caocao:'谋曹操',
sbjianxiong:'奸雄',
sbjianxiong_info:'①游戏开始时你可获得至多2枚“治世”标记。②当你受到伤害后你可获得伤害牌摸1-X张牌X为“治世”数然后你可弃1枚“治世”。',

View File

@ -27,7 +27,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
ol_luyusheng:['female','wu',3,['olcangxin','skill_luyusheng_B'],['unseen']],
ol_luyusheng:['female','wu',3,['olcangxin','olrunwei']],
caoxi:['male','wei',3,['olgangshu','oljianxuan']],
ol_pengyang:['male','shu',3,['olqifan','oltuishi','nzry_cunmu']],
ol_qianzhao:['male','wei',4,['olweifu','olkuansai']],
@ -758,12 +758,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
skill_luyusheng_B:{
olrunwei:{
audio:2,
trigger:{global:'phaseDiscardBegin'},
filter:function(event,player){
if(event.player==player) return false;
return event.player.isDamaged()&&event.player.countCards('h')!=event.player.getHandcardLimit();
return event.player.isDamaged();
},
direct:true,
content:function(){
@ -792,22 +792,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 2;
break;
}
}).set('prompt',get.prompt('skill_luyusheng_B',trigger.player));
}).set('prompt',get.prompt('olrunwei',trigger.player));
'step 1'
if(result.index!=2){
player.logSkill('skill_luyusheng_B',trigger.player);
player.logSkill('olrunwei',trigger.player);
if(result.index==0){
trigger.player.chooseToDiscard('he',true).set('ai',card=>{
if(get.position(card)=='e') return -get.value(card);
return 1/(get.value(card)||0.5);
});
trigger.player.addTempSkill('skill_luyusheng_B_+');
trigger.player.addMark('skill_luyusheng_B_+',1,false);
trigger.player.addTempSkill('olrunwei_+');
trigger.player.addMark('olrunwei_+',1,false);
}
if(result.index==1){
trigger.player.draw();
trigger.player.addTempSkill('skill_luyusheng_B_-');
trigger.player.addMark('skill_luyusheng_B_-',1,false);
trigger.player.addTempSkill('olrunwei_-');
trigger.player.addMark('olrunwei_-',1,false);
}
}
},
@ -819,7 +819,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
intro:{content:'手牌上限+#'},
mod:{
maxHandcard:function(player,num){
return num+player.countMark('skill_luyusheng_B_+');
return num+player.countMark('olrunwei_+');
},
},
},
@ -830,7 +830,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
intro:{content:'手牌上限-#'},
mod:{
maxHandcard:function(player,num){
return num-player.countMark('skill_luyusheng_B_-');
return num-player.countMark('olrunwei_-');
},
},
},
@ -7841,21 +7841,45 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
//芮姬
qiaoli:{
audio:2,
enable:'chooseToUse',
viewAs:{name:'juedou'},
viewAsFilter:function(player){
return player.hasCard(function(card){
return get.type(card)=='equip';
},'ehs')
onChooseToUse:function(event){
if(event.type=='phase'&&!game.online&&!(event.qiaoli_equip1&&event.qiaoli_noequip1)){
var player=event.player;
var evt=event.getParent('phaseUse');
if(player.getHistory('useCard',function(evtx){
return evtx.getParent('phaseUse')==evt&&evtx.skill=='qiaoli'&&get.subtype(evtx.cards[0])=='equip1';
}).length) event.set('qiaoli_equip1',true);
if(player.getHistory('useCard',function(evtx){
return evtx.getParent('phaseUse')==evt&&evtx.skill=='qiaoli'&&get.subtype(evtx.cards[0])!='equip1';
}).length) event.set('qiaoli_noequip1',true);
}
},
audio:2,
enable:'phaseUse',
viewAs:{
name:'juedou',
qiaoli:true,
},
filterCard:function(card,player){
if(get.type(card)!='equip') return false;
var event=_status.event;
if(get.subtype(card)=='equip1'&&event.qiaoli_equip1) return false;
if(get.subtype(card)!='equip1'&&event.qiaoli_noequip1) return false;
return true;
},
viewAsFilter:function(player){
return player.isPhaseUsing()&&player.hasCard(function(card){
return lib.skill.qiaoli.filterCard(card,player);
},'hes');
},
filterCard:{type:'equip'},
check:function(card){
if(get.position(card)=='e') return 7.5-get.value(card);
return 12-_status.event.player.getUseValue(card);
},
position:'hes',
group:['qiaoli_effect','qiaoli_gain','qiaoli_norespond'],
precontent:function(){
player.addTempSkill('qiaoli_norespond');
player.addTempSkill('qiaoli_effect');
},
ai:{
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
@ -7864,31 +7888,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
subSkill:{
norespond:{
trigger:{player:'useCard1'},
forced:true,
charlotte:true,
popup:false,
trigger:{player:'useCard1'},
filter:function(event,player){
if(event.skill!='qiaoli') return false;
var card=event.cards[0];
return get.subtype(card)!='equip1';
return event.card.qiaoli&&get.subtype(event.cards[0])!='equip1';
},
forced:true,
popup:false,
content:function(){
trigger.directHit.addArray(game.filterPlayer(function(current){
return current!=player;
}));
player.addTempSkill('qiaoli_gain');
trigger.directHit.addArray(game.players);
game.log(trigger.card,'不可被响应');
},
},
effect:{
trigger:{player:'useCardAfter'},
forced:true,
charlotte:true,
popup:false,
trigger:{source:'damageSource'},
filter:function(event,player){
if(event.skill!='qiaoli') return false;
var card=event.cards[0];
return get.subtype(card)=='equip1';
return event.card&&event.cards&&event.card.qiaoli&&get.subtype(event.cards[0])=='equip1';
},
forced:true,
popup:false,
content:function(){
'step 0'
var card=trigger.cards[0];
@ -7921,7 +7941,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
cards:cards,
filterTarget:lib.filter.notMe,
selectCard:[1,cards.length],
prompt:'是否将的牌分配给其他角色?',
prompt:'是否将得的牌分配给其他角色?',
ai1:function(card){
return -1;
},
@ -7940,33 +7960,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
'step 4'
if(_status.connectMode){
game.broadcastAll(function(){delete _status.noclearcountdown;game.stopCountChoose()});
game.broadcastAll(function(){delete _status.noclearcountdown});
game.stopCountChoose();
}
var map=[],cards=[];
for(var i in event.given_map){
var source=(_status.connectMode?lib.playerOL:game.playerMap)[i];
player.line(source,'green');
map.push([source,event.given_map[i]]);
cards.addArray(event.given_map[i]);
source.gain(event.given_map[i],player,'giveAuto');
}
if(map.length) game.loseAsync({
gain_list:map,
player:player,
cards:cards,
giver:player,
animate:'giveAuto',
}).setContent('gaincardMultiple');
event.next.sort(function(a,b){
return lib.sort.seat(a.player,b.player);
});
},
},
gain:{
charlotte:true,
audio:'qiaoli',
trigger:{player:'phaseJieshuBegin'},
forced:true,
filter:function(event,player){
return player.hasHistory('useCard',function(evt){
return evt.skill=='qiaoli';
})
},
content:function(){
var card=get.cardPile2(function(card){
return get.type(card)=='equip';
@ -7979,10 +7990,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
qingliang:{
audio:2,
trigger:{target:'useCardToTarget'},
usable:1,
filter:function(event,player){
if(event.targets.length!=1) return false;
var bool1=(event.card.name=='sha');
var bool2=(get.type2(event.card)=='trick'&&get.tag(event.card,'damage'));
if(!bool1&&!bool2) return false;
return player!=event.player&&player.countCards('h')>0;
},
usable:1,
logTarget:'player',
check:function(event,player){
if(get.attitude(player,event.player)>0||event.player.hasSkillTag('nogain')) return true;
@ -23988,6 +24003,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhouqun:['ol_zhouqun','zhouqun'],
qianzhao:['ol_qianzhao','qianzhao'],
ol_pengyang:['ol_pengyang','sp_pengyang'],
ol_luyusheng:['ol_luyusheng','luyusheng'],
},
translate:{
"xinfu_lingren":"凌人",
@ -24880,10 +24896,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
liejie_info:'当你受到伤害后你可以弃置至多三张牌摸等量的牌然后可弃置伤害来源的至多X张牌X为你以此法弃置的红色牌的数量。',
ruiji:'OL芮姬',
qiaoli:'巧力',
qiaoli_info:'①你可以将一张装备牌当做【决斗】使用。若此【决斗】对应的实体牌为武器牌,当你以此法声明使用【决斗】后你摸X张牌X为此牌的攻击范围且可以将其中任意张牌分配给其他角色不为武器牌,此牌不可被响应。②结束阶段开始时,若你于本回合内发动过〖巧力①〗,则你从牌堆中获得一张装备牌。',
qiaoli_info:'出牌阶段各限一次,你可以将一张武器牌/非武器装备牌当作【决斗】使用。若此【决斗】对应的实体牌为武器牌,当你以此【决斗】对目标角色造成伤害你摸X张牌X为此牌的攻击范围且可以将其中任意张牌分配给其他角色若此【决斗】对应的实体牌不为武器牌,此牌不可被响应,且你于结束阶段从牌堆中获得一张装备牌。',
qiaoli_given:'已分配',
qingliang:'清靓',
qingliang_info:'每回合限一次。当你成为其他角色使用牌的目标时,你可展示所有手牌,然后选择一项:⒈你与其各摸一张牌,⒉取消此目标,然后弃置你手牌中一种花色的所有牌。',
qingliang_info:'每回合限一次,当你成为其他角色使用【杀】或伤害类锦囊牌的唯一目标时,你可展示所有手牌,然后选择一项:⒈你与其各摸一张牌,⒉取消此目标,然后弃置你手牌中一种花色的所有牌。',
chixueqingfeng:'赤血青锋',
chixueqingfeng2:'赤血青锋',
chixueqingfeng_info:'锁定技,当你使用【杀】指定目标后,你令目标角色不能使用或打出手牌且防具技能无效直到此【杀】结算结束。',
@ -25113,8 +25129,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ol_luyusheng:'OL陆郁生',
olcangxin:'藏心',
olcangxin_info:'①当你受到伤害时你可以观看牌堆底的三张牌并弃置其中任意张牌若你以此法弃置了红桃牌则防止此伤害。②摸牌阶段你多摸X张牌X为牌堆底前三张牌中红桃牌的数量。',
skill_luyusheng_B:'技能',
skill_luyusheng_B_info:'其他角色的弃牌阶段开始时,若其已受伤且其手牌数不等于其体力上限,则你可以选择一项:①令其弃置一张牌,其本回合手牌上限+1②令其摸一张牌其本回合手牌上限-1。',
olrunwei:'润微',
olrunwei_info:'其他角色的弃牌阶段开始时,若其已受伤,则你可以选择一项:①令其弃置一张牌,其本回合手牌上限+1②令其摸一张牌其本回合手牌上限-1。',
caoxi:'曹羲',
olgangshu:'刚述',
olgangshu_info:'①当你使用非基本牌结算结束后,你可以令以下一项数值+1每项至多以此法+51.攻击范围2.受〖刚述〗影响的下个摸牌阶段摸牌数3.使用【杀】的次数上限。②当有牌被你抵消后,重置你〖刚述①〗增加的所有数值。',

View File

@ -9715,7 +9715,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
enable:['chooseToUse','chooseToRespond'],
filter:function(event,player){
if(event.type=='wuxie') return false;
if(event.type=='wuxie'||player.hasSkill('zhenshan_used')) return false;
var nh=player.countCards('h');
if(!game.hasPlayer(function(current){
return current!=player&&current.countCards('h')<nh;
@ -9787,6 +9787,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
player.logSkill('zhenshan',result.targets);
player.addTempSkill('zhenshan_used');
player.swapHandcards(result.targets[0]);
delete event.result.skill;
}
@ -9797,9 +9798,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
prompt:function(links,player){
return '选择【'+get.translation(links[0][3]||'')+get.translation(links[0][2])+'】的目标';
return '选择【'+get.translation(links[0][3]||'')+get.translation(links[0][2])+'】的目标';
}
},
subSkill:{
used:{charlotte:true},
},
ai:{
order:function(){
var player=_status.event.player;
@ -9828,6 +9832,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
respondSha:true,
respondShan:true,
skillTagFilter:function(player,tag,arg){
if(player.hasSkill('zhenshan_used')) return false;
var nh=player.countCards('h');
return game.hasPlayer(function(current){
return current!=player&&current.countCards('h')<nh;
@ -10361,7 +10366,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
frequent:true,
content:function(){
'step 0'
player.draw(player.hp);
player.draw(2);
'step 1'
if(player.getHistory('sourceDamage').length||player.getHistory('gain',function(evt){
return evt.getParent('phaseUse')==trigger.getParent('phaseUse')&&evt.getParent().name=='draw';
@ -10380,11 +10385,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
var choiceList=['令'+get.translation(trigger.source)+'本回合不能再使用或打出牌'];
if (trigger.source.countCards('h')) choiceList.push('令'+get.translation(trigger.source)+'弃置'+get.cnNumber(trigger.source.hp)+'张牌');
if (trigger.source.countCards('h')) choiceList.push('令'+get.translation(trigger.source)+'弃置张牌');
player.chooseControl('cancel2').set('prompt2',get.prompt2('yuzhang')).set('choiceList',choiceList).set('ai',function(){
var player=_status.event.player,source=_status.event.source;
if(get.attitude(player,event.source)>0) return 'cancel2';
if(source.hasSkillTag('noh')||source.hasSkillTag('noe')||source.countCards('h')>=2*source.hp) return 0;
if(source.hasSkillTag('noh')||source.hasSkillTag('noe')||source.countCards('h')>=4) return 0;
if(source.hp>1&&source.countCards('h')>1) return 1;
return 'cancel2';
}).set('source',trigger.source);
@ -10393,12 +10398,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.logSkill('yuzhang',trigger.source);
player.removeMark('twjingce',1);
if(result.index==0) trigger.source.addTempSkill('yuzhang_dontuse');
else trigger.source.chooseToDiscard('he',trigger.source.hp,true);
else trigger.source.chooseToDiscard('he',2,true);
}
},
group:"yuzhang_skip",
subSkill:{
skip:{
audio:'yuzhang',
trigger:{
player:["phaseJudgeBefore","phaseDrawBefore","phaseUseBefore","phaseDiscardBefore"],
},
@ -13966,6 +13972,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mateng:['tw_mateng','mateng'],
},
dynamicTranslate:{
twfeifu:function(player){
var str='转换技。';
if(!player.storage.twfeifu) str+='<span class="bluetext">';
str+='阴:当你成为【杀】的唯一目标后;';
if(!player.storage.twfeifu) str+='</span>';
if(player.storage.twfeifu) str+='<span class="bluetext">';
str+='阳:当你使用【杀】指定唯一目标后;';
if(player.storage.twfeifu) str+='</span>';
str+='目标角色须交给使用者一张牌。若此牌为装备牌,则使用者可使用此牌。';
return str;
},
twfengpo:function(player){
if(player.storage.twfengpo) return '当你使用【杀】或【决斗】指定唯一目标后你可观看目标角色的手牌并选择一项⒈摸X张牌。⒉令此牌的伤害值基数+XX为其手牌中的红色牌数。';
return '①当你使用【杀】或【决斗】指定唯一目标后你可观看目标角色的手牌并选择一项⒈摸X张牌。⒉令此牌的伤害值基数+XX为其手牌中的♦数。②当你杀死一名角色后你将〖凤魄①〗中的“♦数”改为“红色牌数”。';
@ -14136,9 +14153,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twchunlao_info:'①准备阶段,若场上没有“醇”,则你可将一名角色区域内的一张牌置于其武将牌上,称为“醇”。②一名角色使用【杀】时,若其有“醇”,则其可以交给你一张牌,令此【杀】的伤害值基数+1。③一名角色进入濒死状态时若其有“醇”则你可以移去“醇”并摸一张牌然后令其回复1点体力。',
tw_guohuai:'TW郭淮',
twjingce:"精策",
twjingce_info:"当你于出牌阶段使用第X张牌时你可以摸X张牌X为你的体力值。若此阶段你此前摸过牌或本回合造成过伤害你获得一枚“策”标记。",
twjingce_info:"当你于出牌阶段使用第X张牌时你可以摸张牌X为你的体力值。若此阶段你此前摸过牌或本回合造成过伤害你获得一枚“策”标记。",
yuzhang:"御嶂",
yuzhang_info:"你可以弃置一枚“策”标记,然后跳过一个阶段。当你受到伤害后,你可弃置一枚“策”标记,然后选择一项:⒈令伤害来源弃置X张牌X为其体力值;⒉令伤害来源本回合不能再使用或打出牌。",
yuzhang_info:"你可以弃置一枚“策”标记,然后跳过一个阶段。当你受到伤害后,你可弃置一枚“策”标记,然后选择一项:⒈令伤害来源弃置两张牌;⒉令伤害来源本回合不能再使用或打出牌。",
tw_caozhao:'曹肇',
twfuzuan:'复纂',
twfuzuan_info:'出牌阶段限一次/当你受到伤害后/当你对其他角色造成伤害后,你可选择一名拥有转换技的角色,变更其的一个转换技的的状态。',
@ -14166,7 +14183,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twcongji_info:'当你的红色牌于回合外因弃置而进入弃牌堆后,你可令一名其他角色获得这些牌。',
old_quancong:'TW全琮',
zhenshan:'振赡',
zhenshan_info:'当你需要使用或打出一张基本牌时,你可以与一名手牌数少于你的角色交换手牌,视为使用或打出此牌。',
zhenshan_info:'每回合限一次,当你需要使用或打出一张基本牌时,你可以与一名手牌数少于你的角色交换手牌,视为使用或打出此牌。',
tw_tianyu:'TW田豫',
twzhenxi:'震袭',
twzhenxi_info:'每回合限一次。当你使用【杀】指定目标后你可选择一项⒈弃置其X张手牌X为你至其的距离⒉将其装备区或判定区内的一张牌移动到另一名角色的装备区或判定区内。若其体力值大于你或其体力值为全场最高则你可以改为依次执行以上两项。',

View File

@ -4665,6 +4665,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(current.countCards('hs',card=>current.canUse(card,player)&&get.effect(player,card,current,player)<0)>=2) return false;
return true;
},
frequent:'check',
content:function(){
player.draw().gaintag=['dcjiexing'];
player.addTempSkill('dcjiexing_add');

View File

@ -20113,6 +20113,11 @@
player.update();
}
},this,this.name,this.sex,num,this.group);
skills=skills.filter(skill=>{
var info=get.info(skill);
if(info&&info.zhuSkill&&!this.isZhu2()) return false;
return true;
});
for(var i=0;i<skills.length;i++){
if(this.hiddenSkills.contains(skills[i])){
this.hiddenSkills.remove(skills[i]);
@ -55037,11 +55042,7 @@
}
}
}
if(name.indexOf('gz_')==0){
name=name.slice(3);
if(lib.characterIntro[name]) return lib.characterIntro[name];
}
if(name.indexOf('_')!=-1){
while(name.indexOf('_')!=-1&&!lib.characterIntro[name]){
name=name.slice(name.indexOf('_')+1);
}
if(lib.characterIntro[name]) return lib.characterIntro[name];