noname/character/sp2.js

10146 lines
370 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'use strict';
game.import('character',function(lib,game,ui,get,ai,_status){
return {
name:'sp2',
connect:true,
character:{
zhanghu:['male','wei',4,['cuijian','tongyuan']],
caoanmin:['male','wei',4,['xianwei']],
re_panshu:['female','wu',3,['zhiren','yaner']],
re_zoushi:['female','qun',3,['rehuoshui','reqingcheng']],
luyusheng:['female','wu',3,['zhente','zhiwei']],
huaxin:['male','wei',3,['spwanggui','xibing']],
re_dongbai:['female','qun',3,['relianzhu','rexiahui']],
qiuliju:['male','qun','4/6',['koulve','qljsuiren']],
heyan:['male','wei',3,['yachai','qingtan']],
re_hucheer:['male','qun',4,['redaoji','fuzhong']],
re_dongcheng:['male','qun',4,['xuezhao']],
yangwan:['female','shu',3,['youyan','zhuihuan']],
tangji:['female','qun',3,['jielie','kangge']],
zhangheng:['male','qun',8,['dangzai','liangjue']],
duanwei:['male','qun',4,['langmie']],
re_niujin:['male','wei',4,['recuorui','reliewei']],
zhangmiao:['male','qun',4,['mouni','zongfan']],
liangxing:['male','qun',4,['lulve','lxzhuixi']],
ruanyu:['male','wei',3,['xingzuo','miaoxian']],
xiahoujie:['male','wei',5,['liedan','zhuangdan']],
caosong:['male','wei',4,['cslilu','csyizheng']],
re_taoqian:['male','qun',3,['zhaohuo','reyixiang','reyirang']],
zhaozhong:['male','qun',6,['yangzhong','huangkong']],
fanyufeng:['female','qun',3,['bazhan','jiaoying']],
re_chunyuqiong:['male','qun',4,['recangchu','reliangying','reshishou']],
guozhao:['female','wei',3,['pianchong','zunwei']],
hanfu:['male','qun',4,['hfjieying','weipo']],
re_quyi:['male','qun',4,['refuqi','jiaozi']],
dongxie:['female','qun','3/4',['juntun','jiaojie']],
re_xinxianying:['female','wei',3,['rezhongjian','recaishi']],
wangrong:['female','qun',3,['minsi','jijing','zhuide']],
ol_dingyuan:['male','qun',4,['cixiao','xianshuai']],
liubian:['male','qun',3,['shiyuan','dushi','yuwei'],['zhu']],
xin_baosanniang:['female','shu',3,['decadewuniang','decadexushen']],
re_hejin:['male','qun',4,['spmouzhu']],
re_hansui:['male','qun',4,['spniluan','spweiwu']],
liuhong:['male','qun',4,['yujue','tuxing']],
zhujun:['male','qun',4,['gongjian','kuimang']],
caoxing:['male','qun',4,['cxliushi','zhanwan']],
re_maliang:['male','shu',3,['rexiemu','heli'],[]],
caobuxing:['male','wu',3,['moying','juanhui'],[]],
re_sunluyu:['female','wu',3,['remeibu','remumu']],
re_liuzan:['male','wu',4,['refenyin','liji']],
wenyang:['male','wei',5,['xinlvli','choujue']],
wangshuang:['male','wei',8,['spzhuilie']],
huaman:['female','shu',3,['hmmanyi','mansi','souying','zhanyuan']],
re_panfeng:['male','qun',4,['xinkuangfu']],
xingdaorong:['male','qun','4/6',['xuxie']],
lijue:["male","qun","4/6",["xinfu_langxi","xinfu_yisuan"],[]],
zhangji:["male","qun",4,["xinfu_lveming","xinfu_tunjun"],[]],
fanchou:["male","qun",4,["xinfu_xingluan"],[]],
guosi:["male","qun",4,["xinfu_tanbei","xinfu_sidao"],[]],
lvkai:["male","shu",3,["xinfu_tunan","xinfu_bijing"],[]],
zhanggong:["male","wei",3,["xinfu_zhenxing","xinfu_qianxin"],[]],
weiwenzhugezhi:["male","wu",4,["xinfu_fuhai"],[]],
beimihu:['female','qun',3,['zongkui','guju','baijia']],
xurong:["male","qun",4,["xinfu_xionghuo","xinfu_shajue"],[]],
zhangqiying:["female","qun",3,["xinfu_falu","xinfu_dianhua","xinfu_zhenyi"],[]],
sp_liuqi:['male','qun',3,['spwenji','sptunjiang']],
xf_tangzi:["male","wei",4,["xinfu_xingzhao"],[]],
xf_huangquan:["male","shu",3,["xinfu_dianhu","xinfu_jianji"],[]],
xf_sufei:["male","wu",4,["xinfu_lianpian"],[]],
xushao:['male','qun',4,['pingjian']],
puyuan:['male','shu',4,['pytianjiang','pyzhuren']],
xinpi:['male','wei',3,['xpchijie','yinju']],
lisu:['male','qun',2,['lslixun','lskuizhu']],
zhangwen:['male','wu',3,['songshu','sibian']],
guanlu:['male','wei',3,['tuiyan','busuan','mingjie']],
gexuan:['male','wu',3,['gxlianhua','zhafu']],
mangyachang:["male","qun",4,["spjiedao"],[]],
xugong:["male","wu",3,["biaozhao","yechou"],[]],
zhangchangpu:["female","wei",3,["yanjiao","xingshen"],[]],
gaolan:['male','qun',4,['xiying']],
sp_shenpei:['male','qun',3,['gangzhi','beizhan']],
xunchen:['male','qun',3,['fenglve','mouzhi']],
sp_zhanghe:['male','qun',4,['yuanlve']],
sp_xuyou:['male','qun',3,['spshicai','spfushi']],
chunyuqiong:['male','qun',5,['cangchu','sushou','liangying']],
lvkuanglvxiang:['male','qun',4,['liehou','qigong']],
leitong:['male','shu',4,['kuiji']],
wulan:['male','shu',4,['wlcuorui']],
},
characterSort:{
sp2:{
sp_whlw:["xurong","lijue","zhangji","fanchou","guosi","duanwei","liangxing","zhangheng",'tangji'],
sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"],
sp_longzhou:["xf_tangzi","xf_huangquan","xf_sufei","sp_liuqi"],
sp_zizouqi:["mangyachang","xugong","zhangchangpu"],
sp_sbfm:["lisu","xinpi","zhangwen"],
sp_shengun:["puyuan","guanlu","gexuan","xushao"],
sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong','xiahoujie'],
sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"],
sp_caizijiaren:['re_dongbai','re_sunluyu','huaxin','luyusheng'],
sp_huangjin:['liuhong','zhujun','re_hejin','re_hansui'],
sp_qihuan:['liubian','zhaozhong'],
sp_fadong:['ol_dingyuan','wangrong','re_quyi','hanfu'],
sp_xuzhou:['re_taoqian','caosong','zhangmiao','qiuliju'],
sp_zhongyuan:['re_hucheer','re_zoushi','caoanmin'],
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','ruanyu','liangxing','re_niujin','re_dongzhao','re_dongcheng','yangwan','heyan','re_panshu','zhanghu'],
}
},
skill:{
cuijian:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.hasPlayer((current)=>lib.skill.cuijian.filterTarget(null,player,current));
},
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>0;
},
content:function(){
'step 0'
var hs=target.getCards('h','shan');
if(hs.length){
var card=target.getEquip(2);
if(card) hs.push(card);
player.gain(hs,target,'give');
event.num=(player.hasMark('tongyuan_tao')?1:hs.length);
}
else{
if(player.hasMark('tongyuan_wuxie')) player.draw();
else if(player.countCards('h')) player.chooseToDiscard('h',true);
event.finish();
}
'step 1'
var hs=player.getCards('he');
if(!hs.length||!target.isIn()) event.finish();
else if(hs.length<=num) event._result={bool:true,cards:hs};
else player.chooseCard('he',true,'选择交给'+get.translation(target)+get.cnNumber(num)+'张牌',num);
'step 2'
if(result.bool&&result.cards&&result.cards.length) target.gain(result.cards,player,'giveAuto');
},
ai:{
order:4,
result:{
player:function(player,target){
if(!target.countCards('h','shan')) return player.hasMark('tongyuan_wuxie')?1:-1;
return 0;
},
target:function(player,target){
if(target.countCards('h','shan')){
var num=-target.countCards('h')/2;
var card=target.getEquip(2);
if(card) num-=(get.value(card,target)/2);
return num;
}
return 0;
},
},
},
},
tongyuan:{
audio:2,
trigger:{player:'useCard'},
forced:true,
filter:function(event,player){
return (event.card.name=='tao'||event.card.name=='wuxie')&&((player!=_status.currentPhase&&!player.hasMark('tongyuan_'+event.card.name))||(player.hasMark('tongyuan_tao')&&player.hasMark('tongyuan_wuxie')));
},
content:function(){
if(!player.hasMark('tongyuan_'+trigger.card.name)){
player.addMark('tongyuan_'+trigger.card.name,1,false);
game.log(player,'修改了技能','#g【摧坚】');
}
else{
if(trigger.card.name=='wuxie') trigger.directHit.addArray(game.players);
else{
if(typeof trigger.baseDamage!='number') trigger.baseDamage=1;
trigger.baseDamage++;
}
}
},
},
xianwei:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return player.countDisabled()<5;
},
content:function(){
'step 0'
player.chooseToDisable().ai=function(event,player,list){
var getVal=function(num){
var card=player.getEquip(num);
if(card){
var val=get.value(card);
if(val>0) return 0;
return 5-val;
}
switch(num){
case 'equip3':return 4.5;break;
case 'equip4':return 4.4;break;
case 'equip5':return 4.3;break;
case 'equip2':return (3-player.hp)*1.5;break;
case 'equip1':{
if(game.hasPlayer(function(current){
return (get.realAttitude||get.attitude)(player,current)<0&&get.distance(player,current)>1;
})) return 0;
return 3.2;
}
}
}
list.sort(function(a,b){
return getVal(b)-getVal(a);
});
return list[0];
};
'step 1'
var cardType=result.control;
event.cardType=cardType;
player.draw(player.countDisabled());
player.chooseTarget(true,lib.filter.notMe,'令一名其他角色从牌堆中使用一张'+get.translation(cardType)+'牌').set('ai',function(target){
var player=_status.event.player,type=_status.event.cardType;
var card=get.cardPile2(function(card){
return get.subtype(card)==type&&target.canUse(card,target);
});
if(!card) return 0;
return get.effect(target,card,target,player);
}).set('cardType',event.cardType);
'step 2'
var target=result.targets[0];
player.line(target,'green');
var card=get.cardPile2(function(card){
return get.subtype(card)==event.cardType&&target.canUse(card,target);
});
if(card) target.chooseUseTarget(card,'nopopup',true);
else target.draw();
},
group:'xianwei_all',
subSkill:{
all:{
trigger:{player:'disableEquipAfter'},
forced:true,
filter:function(event,player){
return player.countDisabled()>=5;
},
content:function(){
player.gainMaxHp(2);
player.addSkill('xianwei_effect');
},
},
effect:{
charlotte:true,
mark:true,
intro:{content:'和其他角色视为在彼此的攻击范围内'},
mod:{
inRange:()=>true,
inRangeOf:()=>true,
},
},
},
},
zhiren:{
audio:2,
trigger:{player:'useCard'},
filter:function(event,player){
return (player==_status.currentPhase||player.hasSkill('yaner_zhiren'))&&event.card.isCard&&player.getHistory('useCard',function(evt){
return evt.card.isCard;
}).indexOf(event)==0;
},
frequent:true,
locked:false,
content:function(){
'step 0'
event.num=get.translation(trigger.card.name).length;
player.chooseToGuanxing(event.num);
if(event.num<2) event.finish();
'step 1'
if(!game.hasPlayer(function(current){
return current.countDiscardableCards(player,'e')>0;
})){
event.goto(3);
}
else player.chooseTarget('织纴:是否弃置一名角色装备区内的一张牌?',function(card,player,target){
return target.countDiscardableCards(player,'e')>0;
}).set('ai',function(target){
var player=_status.event.player,att=get.attitude(player,target),es=target.getCards('e'),val=0;
for(var i of es){
var eff=-(get.value(i,target)-0.1)*att;
if(eff>val) val=eff;
}
return eff;
});
'step 2'
if(result.bool){
var target=result.targets[0];
player.addExpose(0.15);
player.line(target,'green');
player.discardPlayerCard(target,'e',true);
}
else event.goto(6);
if(event.num<3) event.finish();
'step 3'
if(!game.hasPlayer(function(current){
return current.countDiscardableCards(player,'j')>0;
})){
if(event.num<3) event.finish();
else event.goto(5);
}
else player.chooseTarget('织纴:是否弃置一名角色判定区内的一张牌?',function(card,player,target){
return target.countDiscardableCards(player,'j')>0;
}).set('ai',function(target){
var player=_status.event.player,att=get.attitude(player,target),es=target.getCards('j'),val=0;
for(var i of es){
var eff=-(get.effect(target,i,target,player))
if(eff>val) val=eff;
}
return eff;
});
'step 4'
if(result.bool){
var target=result.targets[0];
player.addExpose(0.15);
player.line(target,'green');
player.discardPlayerCard(target,'j',true);
}
if(event.num<3) event.finish();
'step 5'
player.recover();
if(event.num<4) event.finish();
'step 6'
player.draw(3);
},
mod:{
aiOrder:function(player,card,num){
if(player==_status.currentPhase&&!player.getHistory('useCard',function(evt){
return evt.card.isCard;
}).length) return num+Math.pow(get.translation(card.name).length,2);
},
},
},
yaner:{
audio:2,
trigger:{
global:['equipAfter','addJudgeAfter','loseAfter','gainAfter','loseAsyncAfter'],
},
filter:function(event,player){
var current=_status.currentPhase;
if(!current||current==player||!current.isIn()||!current.isPhaseUsing()) return false;
var evt=event.getl(current);
return evt&&evt.hs&&evt.hs.length&&current.countCards('h')==0;
},
usable:1,
logTarget:function(){
return _status.currentPhase;
},
prompt2:'与该角色各摸两张牌',
check:function(event,player){
return get.attitude(player,_status.currentPhase)>0;
},
content:function(){
'step 0'
game.asyncDraw([_status.currentPhase,player],2);
'step 1'
var e1=player.getHistory('gain',function(evt){
return evt.getParent(2)==event;
})[0];
if(e1&&e1.cards&&e1.cards.length==2&&get.type(e1.cards[0])==get.type(e1.cards[1])){
player.addTempSkill('yaner_zhiren',{player:'phaseBegin'});
game.log(player,'修改了技能','#g【织纴】');
}
var target=_status.currentPhase;
if(target.isIn()&&target.isDamaged()){
var e2=target.getHistory('gain',function(evt){
return evt.getParent(2)==event;
})[0];
if(e2&&e2.cards&&e2.cards.length==2&&get.type(e2.cards[0])==get.type(e2.cards[1])) target.recover();
}
'step 2'
game.delayx();
},
subSkill:{
zhiren:{},
},
ai:{
expose:0.5,
},
},
rehuoshui:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
direct:true,
content:function(){
'step 0'
var num=Math.min(game.countPlayer()-1,Math.max(1,player.getDamagedHp()));
player.chooseTarget([1,num],get.prompt('rehuoshui'),'令至多'+get.cnNumber(num)+'名角色的非锁定技失效直到回合结束',lib.filter.notMe).set('ai',function(target){
var att=-get.attitude(_status.event.player,target);
if(att<=0) return 0;
if(target.hasSkillTag('maixie')||target.hasSkill('maixie_hp')||target.hasSkill('maixie_defed')) att*=3;
return att/get.threaten(target);
});
'step 1'
if(result.bool){
var targets=result.targets.sortBySeat();
player.logSkill('rehuoshui',targets);
for(var i of targets) i.addTempSkill('fengyin');
game.delayx();
}
},
},
reqingcheng:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.hasPlayer((current)=>lib.skill.reqingcheng.filterTarget(null,player,current));
},
filterTarget:function(card,player,target){
return target!=player&&target.sex=='male'&&target.countCards('h')<player.countCards('h');
},
content:function(){
player.swapHandcards(target);
},
ai:{
order:1,
result:{
player:function(player,target){
if(target.countCards('h')>0) return -Math.max(get.value(target.getCards('h'),player)-get.value(player.getCards('h'),player),0);
return 0;
},
},
},
},
//陆郁生
zhente:{
audio:2,
trigger:{target:'useCardToTargeted'},
logTarget:'player',
usable:1,
filter:function(event,player){
var color=get.color(event.card);
if(player==event.player||event.player.isDead()||(get.mode()=='guozhan'&&color!='black')) return false;
var type=get.type(event.card);
return type=='basic'||type=='trick';
},
check:function(event,player){
return !event.excluded.contains(player)&&get.effect(player,event.card,event.player,player)<0;
},
content:function(){
'step 0'
trigger.player.chooseControl().set('choiceList',[
'本回合内不能再使用'+get.translation(get.color(trigger.card))+'牌',
'令'+get.translation(trigger.card)+'对'+get.translation(player)+'无效',
]).set('prompt',get.translation(player)+'发动了【贞特】,请选择一项').set('ai',function(){
var player=_status.event.player;
var target=_status.event.getParent().player;
var card=_status.event.getTrigger().card,color=get.color(card);
if(get.effect(target,card,player,player)<=0) return 1;
var hs=player.countCards('h',function(card){
return get.color(card,player)==color&&player.hasValueTarget(card,null,true);
});
if(!hs.length) return 0;
if(hs>1) return 1;
return Math.random()>0.5?0:1;
});
'step 1'
if(result.index==0){
trigger.player.addTempSkill('zhente2');
trigger.player.storage.zhente2.add(get.color(trigger.card));
trigger.player.markSkill('zhente2');
}
else trigger.excluded.add(player);
},
},
zhente2:{
mod:{
cardEnabled:function(card,player){
if(player.getStorage('zhente2').contains(get.color(card))) return false;
},
cardSavable:function(card,player){
if(player.getStorage('zhente2').contains(get.color(card))) return false;
},
},
charlotte:true,
onremove:true,
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
intro:{content:'本回合内不能使用$牌'},
},
zhiwei:{
audio:2,
trigger:{
player:['enterGame','showCharacterAfter','phaseBegin'],
global:['gameDrawAfter'],
},
direct:true,
filter:function(event,player){
if(player.hasSkill('zhiwei2')) return false;
if(get.mode()=='guozhan') return event.name=='showCharacter'&&(event.toShow.contains('gz_luyusheng')||event.toShow.contains('luyusheng'));
return event.name!='showCharacter';
},
content:function(){
'step 0'
player.chooseTarget('请选择【至微】的目标','选择一名其他角色。该角色造成伤害后,你摸一张牌,该角色受到伤害后,你随机弃置一张手牌。你弃牌阶段弃置的牌均被该角色获得。',true,lib.filter.notMe).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(att>0) return 1+att;
return Math.random();
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('zhiwei',target);
player.storage.zhiwei2=target;
player.addSkill('zhiwei2');
}
},
},
zhiwei2:{
group:['zhiwei2_draw','zhiwei2_discard','zhiwei2_gain','zhiwei2_clear'],
charlotte:true,
onremove:true,
mark:'character',
intro:{content:'$造成伤害后你摸一张牌;$受到伤害后你弃置一张牌;你于弃牌阶段弃置牌后交给$'},
subSkill:{
draw:{
audio:'zhiwei',
trigger:{global:'damageSource'},
forced:true,
filter:function(event,player){
return event.source==player.storage.zhiwei2;
},
logTarget:'source',
content:function(){
player.draw();
},
},
discard:{
audio:'zhiwei',
trigger:{global:'damageEnd'},
forced:true,
filter:function(event,player){
return event.player==player.storage.zhiwei2&&player.countCards('h',function(card){
return lib.filter.cardDiscardable(card,player,'zhiwei2_discard');
});
},
logTarget:'player',
content:function(){
player.discard(player.getCards('h',function(card){
return lib.filter.cardDiscardable(card,player,'zhiwei2_discard');
}).randomGet());
},
},
gain:{
audio:'zhiwei',
trigger:{player:'loseAfter'},
forced:true,
filter:function(event,player){
return event.type=='discard'&&event.getParent('phaseDiscard').player==player&&player.storage.zhiwei2&&player.storage.zhiwei2.isIn()&&event.cards2.filterInD('d').length>0;
},
logTarget:function(event,player){
return player.storage.zhiwei2;
},
content:function(){
if(trigger.delay===false) game.delay();
player.storage.zhiwei2.gain(trigger.cards2.filterInD('d'),'gain2');
},
},
clear:{
audio:'zhiwei',
trigger:{
global:'die',
player:['hideCharacterEnd','removeCharacterEnd'],
},
forced:true,
filter:function(event,player){
if(event.name=='die') return event.player==player.storage.zhiwei2;
if(event.name=='removeCharacter') return event.toRemove=='luyusheng'||event.toRemove=='gz_luyusheng';
return event.toHide=='luyusheng'||event.toHide=='gz_luyusheng';
},
content:function(){
'step 0'
player.removeSkill('zhiwei2');
if(trigger.name!='die'||get.mode()!='guozhan') event.finish();
'step 1'
if(player.name1=='gz_luyusheng'||player.name1=='luyusheng') player.hideCharacter(0);
if(player.name2=='gz_luyusheng'||player.name2=='luyusheng') player.hideCharacter(1);
},
},
},
},
//华歆
spwanggui:{
audio:'wanggui',
trigger:{source:'damageSource'},
direct:true,
usable:1,
filter:function(event,player){
return game.hasPlayer(function(current){
return current.group!=player.group;
});
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('spwanggui'),'对一名势力不同的其他角色造成1点伤害',function(card,player,target){
return target.group!=player.group;
}).set('ai',function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player);
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('spwanggui',target);
target.damage();
}
else player.storage.counttrigger.spwanggui--;
},
group:'spwanggui_draw',
subSkill:{
draw:{
trigger:{player:'damageEnd'},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('spwanggui'),'令自己摸一张牌,或和一名势力相同的其他角色各摸一张牌',function(card,player,target){
return target.group==player.group;
}).set('ai',function(target){
var player=_status.event.player,att=get.attitude(player,target);
if(target!=player) att*=2;
if(target.hasSkillTag('nogain')) att/=1.7;
return att;
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('spwanggui',target);
if(player==target){
player.draw();
event.finish();
}
else{
var list=[player,target].sortBySeat();
game.asyncDraw(list);
}
}
else event.finish();
'step 2'
game.delayx();
},
},
},
},
wanggui:{
audio:2,
trigger:{
player:'damageEnd',
source:'damageSource',
},
direct:true,
filter:function(event,player){
return player.hasSkill('wanggui')&&!player.hasSkill('wanggui2');
},
content:function(){
'step 0'
player.addTempSkill('wanggui2');
var bool=player.isUnseen(2);
if(bool){
player.chooseTarget('望归是否对一名势力不同的角色造成1点伤害',function(card,player,target){
return target.isEnemyOf(player);
}).set('ai',function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player);
});
}
else event.goto(2);
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('wanggui',target);
target.damage();
}
event.finish();
'step 2'
player.chooseBool('望归:是否令所有与自己势力相同的角色各摸一张牌?');
'step 3'
if(result.bool){
var targets=game.filterPlayer(function(current){
return current.isFriendOf(player);
});
targets.sortBySeat();
player.logSkill('wanggui',targets);
game.asyncDraw(targets);
}
else event.finish();
'step 4'
game.delayx();
},
},
wanggui2:{},
xibing:{
audio:2,
trigger:{global:'useCardToPlayered'},
filter:function(event,player){
if(player==event.player||event.targets.length!=1||event.player.countCards('h')>=event.player.hp) return false;
var bool=function(card){
return (card.name=='sha'||get.type(card,false)=='trick')&&get.color(card,false)=='black';
};
if(!bool(event.card)) return false;
var evt=event.getParent('phaseUse');
if(evt.player!=event.player) return false;
return get.mode()!='guozhan'||event.player.getHistory('useCard',function(evtx){
return bool(evtx.card)&&evtx.getParent('phaseUse')==evt;
})[0]==event.getParent();
},
logTarget:'player',
check:function(event,player){
var target=event.player;
var att=get.attitude(player,target);
var num2=Math.min(5,target.hp-target.countCards('h'));
if(num2<=0) return att<=0;
var num=target.countCards('h',function(card){
return target.hasValueTarget(card,null,true);
});
if(!num) return att>0;
return num>num2;
},
content:function(){
'step 0'
var num=Math.min(5,trigger.player.hp-trigger.player.countCards('h'));
if(num>0) trigger.player.draw(num);
trigger.player.addTempSkill('xibing2');
player._xibing=true;
if(get.mode()!='guozhan'||player.isUnseen(2)||trigger.player.isUnseen(2)) event.finish();
'step 1'
var target=trigger.player;
var players1=[player.name1,player.name2];
var players2=[target.name1,target.name2];
player.chooseButton(2,[
'是否暗置自己和'+get.translation(target)+'的各一张武将牌?',
'<div class="text center">你的武将牌</div>',
[players1,'character'],
'<div class="text center">'+get.translation(target)+'的武将牌</div>',
[players2,'character'],
]).set('players',players1).set('complexSelect',true).set('filterButton',function(button){
return !get.is.jun(button.link)&&(ui.selected.buttons.length==0)==(_status.event.players.contains(button.link));
});
'step 2'
if(result.bool){
var target=trigger.player;
player.hideCharacter(player.name1==result.links[0]?0:1);
target.hideCharacter(target.name1==result.links[1]?0:1);
player.addTempSkill('xibing3');
target.addTempSkill('xibing3');
}
},
},
xibing2:{
mod:{
cardEnabled2:function(card){
if(get.position(card)=='h') return false;
},
},
},
xibing3:{
ai:{nomingzhi:true},
},
//董白
relianzhu:{
audio:'lianzhu',
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('he')>0;
},
filterCard:true,
discard:false,
lose:false,
delay:false,
position:'he',
filterTarget:lib.filter.notMe,
check:function(card){
var num=get.value(card);
if(get.color(card)=='black'){
if(num>=6) return 0;
return 9-num;
}
else{
return 7-num;
}
},
content:function(){
'step 0'
target.gain(cards,player,'give');
'step 1'
if(get.color(cards[0],player)=='red'){
player.draw();
event.finish();
}
else{
target.chooseToDiscard('he',2,'弃置两张牌,或令'+get.translation(player)+'摸两张牌').set('goon',get.attitude(target,player)<0).set('ai',function(card){
if(!_status.event.goon) return -get.value(card);
return 6-get.value(card);
});
}
'step 2'
if(!result.bool) player.draw(2);
},
ai:{
order:3,
expose:0.2,
result:{
target:function(player,target){
if(ui.selected.cards.length&&get.color(ui.selected.cards[0])=='red'){
if(target.countCards('h')<player.countCards('h')) return 1;
return 0.5;
}
return -1;
}
}
}
},
rexiahui:{
audio:'xiahui',
mod:{
ignoredHandcard:function(card,player){
if(get.color(card,player)=='black') return true;
},
cardDiscardable:function(card,player,name){
if(name=='phaseDiscard'&&get.color(card,player)=='black') return false;
}
},
trigger:{global:'phaseEnd'},
forced:true,
logTarget:'player',
filter:function(event,player){
var target=event.player;
return target!=player&&target.countCards('h',function(card){
return card.hasGaintag('rexiahui');
})==0&&target.getHistory('lose',function(evt){
for(var i in evt.gaintag_map){
if(evt.gaintag_map[i].contains('rexiahui')) return true;
}
}).length>0;
},
content:function(){
trigger.player.loseHp();
},
group:'rexiahui_gain',
subSkill:{
gain:{
trigger:{global:'gainEnd'},
forced:true,
popup:false,
filter:function(event,player){
if(player==event.player) return false;
var evt=event.getl(player);
return evt&&evt.cards2&&evt.cards2.filter(function(card){
return get.color(card,player)=='black';
}).length>0;
},
content:function(){
trigger.player.addSkill('rexiahui_block');
var cards=trigger.getl(player).cards2.filter(function(card){
return get.color(card,player)=='black';
});
trigger.player.addGaintag(cards,'rexiahui');
},
},
block:{
mod:{
cardEnabled2:function(card){
if(get.itemtype(card)=='card'&&card.hasGaintag('rexiahui')) return false;
},
cardDiscardable:function(card){
if(card.hasGaintag('rexiahui')) return false;
},
},
charlotte:true,
forced:true,
popup:false,
trigger:{player:'changeHp'},
filter:function(event,player){
return event.num<0;
},
content:function(){
player.removeSkill('rexiahui_block');
},
onremove:function(player){
player.removeGaintag('rexiahui');
},
},
},
},
//丘力居
koulve:{
audio:2,
trigger:{source:'damageSource'},
logTarget:'player',
filter:function(event,player){
return event.player.countCards('h')>0&&player.isPhaseUsing();
},
check:function(event,player){
if(player.hp==1&&player.isHealthy()) return false;
return get.attitude(player,event.player)<=0;
},
content:function(){
'step 0'
player.choosePlayerCard(trigger.player,'h',true);
'step 1'
var card=result.cards[0];
event.card=card;
player.showCards(card,get.translation(player)+'发动了【宼略】');
'step 2'
var target=trigger.player,type=get.type2(card,target);
if((type=='basic'||type=='trick')&&get.tag(card,'damage')>0) player.gain(card,target,'give');
'step 3'
if(get.color(card,trigger.player)=='red'){
player[player.isDamaged()?'loseMaxHp':'loseHp']();
player.draw(2);
}
},
},
qljsuiren:{
audio:2,
trigger:{player:'die'},
forced:true,
forceDie:true,
skillAnimation:true,
animationColor:'gray',
filter:function(event,player){
return player.countCards('h',function(card){
var type=get.type(card,player);
return (type=='basic'||type=='trick')&&get.tag(card,'damage')>0;
});
},
content:function(){
'step 0'
player.chooseTarget(lib.filter.notMe,get.prompt('qljsuiren'),'将所有伤害性基本牌和锦囊牌交给一名其他角色').set('forceDie',true).set('ai',function(target){
var player=_status.event.player,cards=_status.event.aiCards;
var att=get.attitude(player,target);
if(att<=0) return 0;
if(target.hasSkillTag('nogain')) att/=100;
var num=0.1;
for(var i of cards) num+=Math.max(0,target.getUseValue(card));
return num*att;
}).set('aiCards',player.getCards('h',function(card){
var type=get.type(card,player);
return (type=='basic'||type=='trick')&&get.tag(card,'damage')>0;
}));
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('qljsuiren',target);
target.gain(player.getCards('h',function(card){
var type=get.type(card,player);
return (type=='basic'||type=='trick')&&get.tag(card,'damage')>0;
}),player,'giveAuto');
}
},
},
//何晏
yachai:{
audio:2,
trigger:{player:'damageEnd'},
filter:function(event,player){
return event.source&&event.source.isIn();
},
logTarget:'source',
check:function(event,player){
return get.attitude(player,event.source)<0;
},
content:function(){
'step 0'
var target=trigger.source;
event.target=target;
var th=target.countCards('h');
if(th>0){
var list=[
'本回合不能使用或打出手牌',
'展示所有手牌并弃置其中一种花色的所有牌',
],ph=player.countCards('h');
if(ph!=th){
var num=Math.ceil(Math.abs(ph-th)/2);
event.num=num;
list.push('交给'+get.translation(player)+get.cnNumber(num)+'张手牌');
}
target.chooseControl().set('choiceList',list);
}
else event._result={index:0};
'step 1'
switch(result.index){
case 0:target.addTempSkill('yachai_block');event.finish();break;
case 1:target.showHandcards();break;
case 2:event.goto(4);break;
}
'step 2'
var map={},hs=target.getCards('h');
for(var i of hs){
if(lib.filter.cardDiscardable(card,target,'yachai')) map[get.suit(i,target)]=true;
}
var list=[];
for(var i of lib.suit){
if(map[i]) list.push(i);
}
if(!list.length) event.finish();
else if(list.length==1) event._result={control:list[0]};
else target.chooseControl(list).set('prompt','选择弃置一种花色');
'step 3'
var cards=target.getCards('h',function(card){
return get.suit(card,target)==result.control&&lib.filter.cardDiscardable(card,target,'yachai');
});
if(cards.length) target.discard(cards);
event.finish();
'step 4'
target.chooseCard('h',true,'交给'+get.translation(player)+get.cnNumber(num)+'张手牌');
'step 5'
if(result.bool) player.gain(result.cards,target,'giveAuto');
},
subSkill:{
block:{
mark:true,
intro:{content:'不能使用或打出手牌'},
charlotte:true,
mod:{
cardEnabled2:function(card){
if(get.position(card)=='h') return false;
},
},
},
},
},
qingtan:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.hasPlayer((current)=>current.countCards('h')>0);
},
filterTarget:function(card,player,target){
return target.countCards('h')>0;
},
selectTarget:-1,
multitarget:true,
multiline:true,
content:function(){
'step 0'
targets.sortBySeat();
var next=player.chooseCardOL(targets,'请选择要展示的牌',true).set('ai',function(card){
return -get.value(card);
}).set('source',player);
next.aiCard=function(target){
var hs=target.getCards('h');
return {bool:true,cards:[hs.randomGet()]};
};
next._args.remove('glow_result');
'step 1'
var cards=[];
event.videoId=lib.status.videoId++;
for(var i=0;i<targets.length;i++) cards.push(result[i].cards[0]);
event.cards=cards;
game.log(player,'展示了',targets,'的',cards);
game.broadcastAll(function(targets,cards,id,player){
var dialog=ui.create.dialog(get.translation(player)+'发动了【清谈】',cards);
dialog.videoId=id;
var getName=function(target){
if(target._tempTranslate) return target._tempTranslate;
var name=target.name;
if(lib.translate[name+'_ab']) return lib.translate[name+'_ab'];
return get.translation(name);
}
for(var i=0;i<targets.length;i++){
dialog.buttons[i].querySelector('.info').innerHTML=getName(targets[i])+get.translation(cards[i].suit);
}
},targets,cards,event.videoId,player);
game.delay(4);
'step 2'
game.broadcastAll('closeDialog',event.videoId);
var max=0,max_suit=null,map={};
for(var i of cards){
var suit=get.suit(i);
if(!map[suit]) map[suit]=0;
map[suit]++;
}
for(var i in map){
if(map[i]>max){
max_suit=i;
max=map[i];
}
else if(map[i]==max) max_suit=null;
}
if(max_suit){
var cards=cards.filter(function(card){
return get.suit(card)==max_suit;
});
event.cards2=cards;
player.chooseBool('是否获得所有'+get.translation(max_suit)+'牌?','可获得:'+get.translation(cards));
}
else event.finish();
'step 3'
if(result.bool){
for(var i=0;i<cards.length;i++){
if(event.cards2.contains(cards[i])){
targets[i].$give(cards[i],player,false);
}
}
player.gain(event.cards2,'log');
}
else event.finish();
'step 4'
var draws=[];
for(var i=0;i<cards.length;i++){
if(!event.cards2.contains(cards[i])){
targets[i].discard(cards[i]).delay=false;
}
else draws.push(targets[i]);
}
if(draws.length) game.asyncDraw(draws);
'step 5'
game.delayx();
},
ai:{
order:7,
result:{
player:0.3,
target:-1,
},
},
},
//胡车儿
redaoji:{
audio:2,
trigger:{global:'useCard'},
direct:true,
filter:function(event,player){
if(player==event.player||get.subtype(event.card,false)!='equip1'||(event.player.isDead()&&!event.cards.filterInD().length)) return false;
var all=event.player.getAllHistory('useCard');
for(var i of all){
if(get.subtype(i.card,false)=='equip1') return i==event;
}
return false;
},
content:function(){
'step 0'
var list=[];
event.addIndex=0;
if(trigger.cards.filterInD().length>0) list.push('获得'+get.translation(trigger.cards.filterInD()));
else event.addIndex++;
if(trigger.player.isAlive()) list.push('令'+get.translation(trigger.player)+'本回合不能使用或打出【杀】');
player.chooseControl('cancel2').set('choiceList',list).set('prompt',get.prompt('redaoji',trigger.player)).set('ai',function(){
var evt=_status.event.getParent(),player=evt.player,evt2=evt._trigger;
if(evt.addIndex==0){
var noob=get.attitude(player,evt2.player)<0?1:'cancel2';
if(player.countMark('fuzhong')==3) return noob;
if(get.effect(evt2.targets[0],evt2.card,evt2.player,player)<3) return 0;
return noob;
}
return get.attitude(player,evt2.player)<0?0:'cancel2';
});
'step 1'
if(result.control!='cancel2'){
player.logSkill('redaoji',trigger.player);
game.delayx();
if(result.index+event.addIndex==0){
player.gain(trigger.cards.filterInD(),'gain2');
}
else trigger.player.addTempSkill('redaoji2');
}
},
},
redaoji2:{
charlotte:true,
mark:true,
mod:{
cardEnabled:function(card){
if(card.name=='sha') return false;
},
cardRespondable:function(card){
if(card.name=='sha') return false;
},
},
intro:{
content:'本回合不能使用或打出杀',
},
},
fuzhong:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return player.countMark('fuzhong')>3;
},
content:function(){
'step 0'
player.chooseTarget(lib.filter.notMe,'对一名其他角色造成1点伤害',true).set('ai',function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player);
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.line(target);
target.damage('nocard');
}
var num=player.countMark('fuzhong');
if(num) player.removeMark('fuzhong',num);
},
marktext:'重',
intro:{content:'mark'},
group:['fuzhong_gain','fuzhong_yingzi'],
mod:{
maxHandcard:function(player,num){
if(player.hasMark('fuzhong')) return num+1;
},
globalFrom:function(player,target,num){
if(player.countMark('fuzhong')>1) return num-1;
}
},
subSkill:{
gain:{
audio:'fuzhong',
trigger:{player:'gainAfter'},
forced:true,
filter:function(event,player){
return player!=_status.currentPhase;
},
content:function(){
player.addMark('fuzhong',1);
},
},
yingzi:{
audio:'fuzhong',
trigger:{player:'phaseDrawBegin2'},
forced:true,
filter:function(event,player){
return !event.numFixed&&player.countMark('fuzhong')>2;
},
content:function(){
trigger.num++;
},
},
},
},
//董承
xuezhao:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.hp>0&&player.countCards('h')>0;
},
filterCard:true,
position:'h',
filterTarget:lib.filter.notMe,
selectTarget:function(){
return [1,_status.event.player.hp];
},
check:function(card){
return 2*(_status.event.player.hp+2)-get.value(card);
},
content:function(){
'step 0'
if(!target.countCards('he')) event._result={bool:false};
else target.chooseCard('he','交给'+get.translation(player)+'一张牌并摸一张牌,或不能响应其使用的牌直到回合结束').set('ai',function(card){
var player=_status.event.player,target=_status.event.getParent().player,val=get.value(card);
if(get.attitude(player,target)>0){
if(get.name(card,target)=='sha'&&target.hasValueTarget(card)) return 30-val;
return 20-val;
}
return -val;
});
'step 1'
if(result.bool){
player.addTempSkill('xuezhao_sha');
player.addMark('xuezhao_sha',1,false);
player.gain(result.cards,target,'giveAuto');
target.draw();
}
else{
player.addTempSkill('xuezhao_hit');
player.markAuto('xuezhao_hit',[target]);
}
},
ai:{
threaten:2.4,
order:3.6,
result:{
player:function(player,target){
if(get.attitude(target,player)>0){
if(target.countCards('e',function(card){
return get.value(card,target)<0;
})) return 3;
return Math.sqrt(target.countCards('he'));
}
if(target.mayHaveShan()&&player.countCards('hs',function(card){
return !ui.selected.cards.contains(card)&&get.name(card)=='sha'&&player.canUse(card,target)&&get.effect(target,card,player,player)!=0;
})) return -Math.sqrt(Math.abs(get.attitude(player,target)))/2;
return 0.1;
},
},
},
subSkill:{
sha:{
charlotte:true,
onremove:true,
marktext:'血',
intro:{content:'多杀#刀,誓诛曹贼!'},
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num+player.countMark('xuezhao_sha');
},
},
},
hit:{
charlotte:true,
onremove:true,
marktext:'诏',
intro:{content:'$篡汉,其心可诛!'},
trigger:{player:'useCard1'},
forced:true,
popup:false,
content:function(){
trigger.directHit.addArray(player.getStorage('xuezhao_hit'));
},
ai:{
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
return player.getStorage('xuezhao_hit').contains(arg.target);
},
},
},
},
},
//杨婉
youyan:{
audio:2,
trigger:{player:'loseAfter'},
//usable:1,
filter:function(event,player){
if(event.type!='discard'||!event.cards2||!event.cards2.length||player!=_status.currentPhase) return false;
var list=[];
for(var i of event.cards2){
list.add(get.suit(i,player));
if(list.length>=lib.suit.length) return false;
}
var evt=event.getParent('phaseUse');
if(evt&&evt.player==player&&!evt.youyaned) return true;
var evt=event.getParent('phaseDiscard');
if(evt&&evt.player==player&&!evt.youyaned) return true;
return false;
},
content:function(){
var evt=event.getParent('phaseUse');
if(evt&&evt.player==player) evt.youyaned=true;
else{
var evt=event.getParent('phaseDiscard');
if(evt) evt.youyaned=true;
}
var list=[],cards=[];
for(var i of trigger.cards2){
list.add(get.suit(i,player));
}
for(var i of lib.suit){
if(list.contains(i)) continue;
var card=get.cardPile2(function(card){
return get.suit(card,false)==i;
})
if(card) cards.push(card);
}
if(cards.length) player.gain(cards,'gain2');
},
ai:{
effect:{
player_use:function(card,player,target){
if(typeof card=='object'&&player==_status.currentPhase&&
//(!player.storage.counttrigger||!player.storage.counttrigger.youyan)&&
player.needsToDiscard()==1&&card.cards&&card.cards.filter(function(i){
return get.position(i)=='h';
}).length>0&&!get.tag(card,'draw')&&!get.tag(card,'gain')&&!get.tag(card,'discard')) return 'zeroplayertarget';
},
},
},
},
zhuihuan:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
direct:true,
filter:function(event,player){
return game.hasPlayer(function(current){
return !current.hasSkill('zhuihuan2');
});
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('zhuihuan'),'令一名角色获得“追还”效果',function(card,player,target){
return !target.hasSkill('zhuihuan2');
}).set('ai',function(target){
var player=_status.event.player,att=get.attitude(player,target);
if(target.hasSkill('maixie')||target.hasSkill('maixie_defend')) att/=3;
if(target!=player) att/=Math.pow(game.players.length-get.distance(player,target,'absolute'),0.7);
return att;
}).set('animate',false);
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('zhuihuan');
target.addSkill('zhuihuan2_new');
game.delayx();
}
},
},
zhuihuan2_new:{
trigger:{player:'phaseZhunbeiBegin'},
charlotte:true,
forced:true,
onremove:true,
filter:function(event,player){
if(player.storage.zhuihuan2_new){
for(var source of player.storage.zhuihuan2_new){
if(!source.isIn()) continue;
if(source.hp>player.hp) return true;
return source.countCards('h')>0;
}
}
},
logTarget:function(event,player){
return player.storage.zhuihuan2_new.filter(function(target){
return target.isIn();
});
},
content:function(){
'step 0'
event.targets=player.storage.zhuihuan2_new;
player.removeSkill('zhuihuan2_new');
'step 1'
var target=targets.shift();
if(target.isIn()){
if(target.hp>player.hp) target.damage(2);
else{
var hs=target.getCards('h');
if(hs.length) target.discard(hs.randomGets(2));
}
}
if(targets.length) event.redo();
},
group:'zhuihuan2_new_count',
subSkill:{
count:{
trigger:{player:'damage'},
forced:true,
silent:true,
popup:false,
charlotte:true,
filter:function(event,player){
return get.itemtype(event.source)=='player';
},
content:function(){
player.markAuto('zhuihuan2_new',[trigger.source]);
},
},
},
},
zhuihuan2:{
trigger:{player:'damageEnd'},
forced:true,
charlotte:true,
logTarget:'source',
filter:function(event,player){
var source=event.source;
if(source.hp>player.hp) return true;
return source.countCards('h')>0;
},
content:function(){
if(player.hp<trigger.source.hp) trigger.source.damage();
else trigger.source.discard(trigger.source.getCards('h').randomGet());
},
mark:true,
intro:{content:'当你受到伤害后若伤害来源体力值大于你则你对其造成1点伤害否则其随机弃置一张手牌'},
},
//唐姬
jielie:{
audio:2,
trigger:{player:'phaseBegin'},
direct:true,
filter:function(event,player){
return player.phaseNumber==1&&!player.storage.jielie;
},
content:function(){
'step 0'
player.chooseTarget('请选择【节烈】的目标','其于回合外摸牌后你摸等量的牌其进入濒死状态时你可令其回复体力至1点其死亡后你弃置所有牌并失去1点体力',lib.filter.notMe,true).set('ai',function(target){
return get.attitude(_status.event.player,target)>0;
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('jielie',target);
player.storage.jielie=target;
player.markSkill('jielie');
game.delayx();
}
},
intro:{content:'已指定$为目标'},
group:['jielie_draw','jielie_dying','jielie_die'],
subSkill:{
draw:{
audio:'jielie',
trigger:{global:'gainAfter'},
forced:true,
usable:1,
filter:function(event,player){
return event.player==player.storage.jielie&&event.player!=_status.currentPhase&&event.getParent().name=='draw'&&event.cards&&event.cards.length>0;
},
logTarget:'player',
content:function(){
player.draw(Math.min(3,trigger.cards.length));
},
},
dying:{
audio:'jielie',
trigger:{global:'dying'},
logTarget:'player',
filter:function(event,player){
return event.player==player.storage.jielie&&event.player.hp<1&&!player.hasSkill('jielie_temp');
},
check:function(event,player){
return get.attitude(player,event.player)>0;
},
prompt2:'令其将体力值回复至1点',
content:function(){
trigger.player.recover(1-trigger.player.hp);
player.addTempSkill('jielie_temp','roundStart');
},
},
temp:{},
die:{
audio:'jielie',
trigger:{global:'dieAfter'},
filter:function(event,player){
return event.player==player.storage.jielie;
},
forced:true,
content:function(){
var cards=player.getCards('he');
if(cards.length) player.discard(cards);
player.loseHp();
},
},
},
ai:{
threaten:2,
},
},
kangge:{
audio:2,
trigger:{player:'damageBegin4'},
direct:true,
filter:function(event,player){
return (!event.source)||(event.source!=player&&event.source!=player.storage.jielie);
},
content:function(){
'step 0'
player.chooseControl(lib.suit.slice(0),'cancel2').set('prompt',get.prompt('kangge')).set('prompt2','防止伤害并改为失去等量体力,且从牌堆中获得等量的花色牌').set('ai',function(){
return lib.suit.randomGet();
});
'step 1'
if(result.control!='cancel2'){
event.suit=result.control;
player.logSkill('kangge');
trigger.cancel();
player.loseHp(trigger.num);
}
else event.finish();
'step 2'
var cards=[];
while(cards.length<trigger.num){
var card=get.discardPile(function(card){
return get.suit(card,false)==event.suit&&!cards.contains(card)
});
if(card) cards.push(card);
else break;
}
if(cards.length) player.gain(cards,'gain2');
},
},
//张横
dangzai:{
trigger:{player:'phaseUseBegin'},
direct:true,
filter:function(event,player){
return !player.storage._disableJudge&&game.hasPlayer(function(current){
return current!=player&&current.countCards('j',function(card){
return player.canAddJudge(card);
})>0;
})
},
content:function(){
'step 0'
player.chooseTarget(function(card,player,target){
return target!=player&&target.countCards('j',function(card){
return player.canAddJudge(card);
})>0;
},get.prompt('dangzai'),'将一名其他角色判定区内的一张牌移动到你的判定区内');
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('dangzai',target);
player.choosePlayerCard(target,'j',true).set('filterButton',function(button){
return _status.event.player.canAddJudge(button.link);
})
}
else event.finish();
'step 2'
if(result.bool&&result.cards&&result.cards.length){
target.$give(result.cards[0],player);
game.delayx();
player.addJudge(result.cards[0]);
}
},
},
liangjue:{
trigger:{
player:'loseAfter',
global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter'],
},
forced:true,
charlotte:true,
onremove:true,
filter:function(event,player){
if(player.hp<=1) return false;
if(event.player==player){
if(event.name=='equip'&&get.color(event.card,player)=='black') return true;
if(event.name=='addJudge'&&get.color(event.cards[0],player)=='black') return true;
}
var evt=event.getl(player);
if(!evt||!evt.es||!evt.js||!evt.es.length&&!evt.js.length) return false;
for(var i of evt.es){
if(get.color(i,player)=='black') return true;
}
for(var i of evt.js){
if(get.color(i,player)=='black') return true;
}
return false;
},
content:function(){
player.loseHp();
player.draw(2);
},
},
//狼灭
langmie:{
trigger:{global:'phaseUseEnd'},
forced:true,
filter:function(event,player){
if(player==event.player) return false;
var map={};
var list=event.player.getHistory('useCard',function(evt){
var evt2=evt.getParent('phaseUse');
return evt2==event;
});
for(var i of list){
var name=get.type2(i.card,false);
if(!map[name]) map[name]=true;
else return true;
}
},
frequent:true,
logTarget:'player',
content:function(){
player.draw();
},
group:'langmie_damage',
},
langmie_damage:{
audio:'langmie',
trigger:{global:'phaseEnd'},
direct:true,
filter:function(event,player){
return event.player!=player&&(event.player.getStat('damage')||0)>1&&player.countCards('he')>0;
},
content:function(){
'step 0'
player.chooseToDiscard('he',get.prompt('langmie',trigger.player),'弃置一张牌并对其造成1点伤害').set('goon',get.damageEffect(trigger.player,player,player)>0).set('ai',function(card){
if(!_status.event.goon) return 0;
return 7-get.value(card);
}).logSkill=['langmie_damage',trigger.player];
'step 1'
if(result.bool) trigger.player.damage();
},
ai:{expose:0.2},
},
//牛金
recuorui:{
audio:'cuorui',
trigger:{player:'phaseBegin'},
skillAnimation:true,
animationColor:'thunder',
filter:function(event,player){
return player.phaseNumber==1&&player.hp>0&&game.hasPlayer(function(current){
return current!=player&&current.countGainableCards(player,'h')>0;
})
},
direct:true,
content:function(){
'step 0'
player.chooseTarget([1,player.hp],get.prompt('recuorui'),'获得至多'+get.cnNumber(player.hp)+'名角色的各一张手牌',function(card,player,current){
return current!=player&&current.countGainableCards(player,'h')>0;
}).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(target.hasSkill('tuntian')) return att/10;
return 1-att;
});
'step 1'
if(result.bool){
var targets=result.targets;
player.logSkill('recuorui',targets);
targets.sortBySeat();
player.gainMultiple(targets);
}
},
},
reliewei:{
audio:'liewei',
trigger:{global:'dying'},
frequent:true,
filter:function(event,player){
var evt=event.getParent();
return evt&&evt.name=='damage'&&evt.source==player&&player.getHistory('custom',function(evt){
return evt&&evt.reliewei==true;
}).length<player.hp;
},
content:function(){
player.getHistory('custom').push({reliewei:true});
player.draw();
},
},
//张邈
mouni:{
trigger:{player:'phaseZhunbeiBegin'},
direct:true,
filter:function(event,player){
return player.countCards('h','sha')>0;
},
content:function(){
'step 0'
player.addSkill('mouni2');
player.chooseTarget(get.prompt2('mouni'),lib.filter.notMe).set('ai',function(target){
var player=_status.event.player,cards=player.getCards('h','sha');
if(get.attitude(player,target)>=0||!player.canUse(cards[0],target,false)||(!player.hasJudge('lebu')&&target.mayHaveShan()&&!player.hasSkillTag('directHit_ai',true,{
target:target,
card:cards[0],
},true))) return 0;
return get.effect(target,cards[0],player,player);
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('mouni',target);
event.cards=player.getCards('h','sha');
}
else event.finish();
'step 2'
if(event.mouni_dying) return;
var hs=player.getCards('h');
cards=cards.filter(function(card){
return hs.contains(card)&&get.name(card,player)=='sha'&&player.canUse({
name:'sha',
nature:get.nature(card,player),
isCard:true,
cards:[card],
},target,false);
});
if(cards.length){
var card=cards.randomRemove(1)[0];
player.useCard(target,false,card);
event.redo();
}
'step 3'
if(player.getHistory('useCard',function(evt){
return evt.getParent()==event&&!player.getHistory('sourceDamage',function(evt2){
return evt.card==evt2.card;
}).length;
}).length) player.skip('phaseUse');
player.removeSkill('mouni2');
},
},
mouni2:{
charlotte:true,
trigger:{global:'dying'},
forced:true,
firstDo:true,
popup:false,
filter:function(event,player){
var evt=event.getParent('mouni');
return evt&&evt.player==player&&evt.target==event.player;
},
content:function(){
trigger.getParent('mouni').mouni_dying=true;
},
},
zongfan:{
derivation:'zhangu',
trigger:{player:'phaseJieshuBegin'},
juexingji:true,
forced:true,
skillAnimation:true,
animationColor:'gray',
filter:function(event,player){
return !player.getHistory('skipped').contains('phaseUse')&&player.getHistory('useCard',function(evt){
return evt.getParent().name=='mouni';
}).length>0;
},
content:function(){
'step 0'
player.awakenSkill('zongfan');
var num=player.countCards('he');
if(num>0){
player.chooseCardTarget({
prompt:'是否将任意张牌交给一名其他角色?',
selectCard:[1,num],
filterCard:true,
filterTarget:lib.filter.notMe,
position:'he',
ai1:function(card){
if(card.name=='du') return 10;
else if(ui.selected.cards.length&&ui.selected.cards[0].name=='du') return 0;
var player=_status.event.player;
if(ui.selected.cards.length>4||!game.hasPlayer(function(current){
return get.attitude(player,current)>0&&!current.hasSkillTag('nogain');
})) return 0;
return 1/Math.max(0.1,get.value(card));
},
ai2:function(target){
var player=_status.event.player,att=get.attitude(player,target);
if(ui.selected.cards[0].name=='du') return -att;
if(target.hasSkillTag('nogain')) att/=6;
return att;
},
});
}
else event.goto(2);
'step 1'
if(result.bool){
var cards=result.cards,target=result.targets[0],num=Math.min(5,cards.length);
target.gain(cards,player,'giveAuto');
player.gainMaxHp(num);
player.recover(num);
}
'step 2'
player.removeSkill('mouni');
player.addSkill('zhangu');
},
},
zhangu:{
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return player.maxHp>1&&(player.countCards('h')==0||player.countCards('e')==0)
},
content:function(){
var cards=[],types=[];
for(var i=0;i<3;i++){
var card=get.cardPile2(function(card){
return !cards.contains(card)&&!types.contains(get.type2(card,false));
});
if(card){
cards.push(card);
types.push(get.type2(card,false));
}
else break;
}
if(cards.length) player.gain(cards,'gain2');
player.loseMaxHp();
},
},
//梁兴
lulve:{
audio:2,
trigger:{player:'phaseUseBegin'},
filter:function(event,player){
var hs=player.countCards('h');
return hs>1&&game.hasPlayer(function(target){
var ts=target.countCards('h');
return target!=player&&ts>0&&hs>ts;
});
},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('lulve'),function(card,player,target){
var hs=player.countCards('h'),ts=target.countCards('h');
return target!=player&&ts>0&&hs>ts;
}).set('ai',function(target){
var player=_status.event.player,att=get.attitude(player,target);
if(target.isTurnedOver()) return att/10;
if(!player.hasShan()&&target.canUse({name:'sha',isCard:true},player,false)&&get.effect(player,{name:'sha',isCard:true},target,player)<0&&player.hp<4) return 0;
return -att*Math.sqrt(target.countCards('h'));
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('lulve',target);
var str=get.translation(player);
target.chooseControl().set('choiceList',[
'将所有手牌交给'+str+',然后其将武将牌翻面',
'将武将牌翻面,然后视为对'+str+'使用【杀】',
]).set('ai',function(){
var player=_status.event.player,target=_status.event.getParent().player;
if(player.isTurnedOver()) return 1;
if(!target.hasShan()&&player.canUse({name:'sha',isCard:true},target,false)&&get.effect(target,{name:'sha',isCard:true},player,player)<0) return 0;
return Math.random()<0.5?0:1;
});
}
else event.finish();
'step 2'
if(result.index==0){
player.gain(target.getCards('h'),target,'giveAuto');
player.turnOver();
event.finish();
}
else target.turnOver();
'step 3'
if(target.canUse({name:'sha',isCard:true},player,false)) target.useCard({name:'sha',isCard:true},player,false);
},
},
lxzhuixi:{
audio:2,
trigger:{
player:'damageBegin3',
source:'damageBegin1',
},
forced:true,
logTarget:'player',
filter:function(event,player){
return event.source&&event.player.isTurnedOver()!=event.source.isTurnedOver();
},
content:function(){
trigger.num++;
},
},
//阮瑀
xingzuo:{
audio:2,
trigger:{player:'phaseUseBegin'},
frequent:true,
content:function(){
'step 0'
player.addTempSkill('xingzuo2');
var cards=get.bottomCards(3);
event.cards2=cards;
game.cardsGotoOrdering(cards);
var dialog=['兴作:将三张牌置于牌堆底(先选择的在上)','<div class="text center">牌堆底</div>',cards];
var hs=player.getCards('h');
if(hs.length){
dialog.push('<div class="text center">你的手牌</div>');
dialog.push(hs);
}
player.chooseButton(dialog,3,true).set('ai',function(button){
var player=_status.event.player,allcards=player.getCards('h').concat(_status.event.getParent().cards2);
if(button.link.name=='sha'&&allcards.filter(function(card){
return card.name=='sha'&&!ui.selected.buttons.filter(function(button){
return button.link==card;
}).length;
}).length>player.getCardUsable({name:'sha'})) return 10;
return -player.getUseValue(button.link,player);
});
'step 1'
if(result.bool){
event.forceDie=true;
var cards=result.links;
event.cards=cards;
player.storage.xingzuo2=cards;
var hs=player.getCards('h');
var lose=[],gain=event.cards2;
for(var i of cards){
if(hs.contains(i)) lose.push(i);
else gain.remove(i);
}
if(lose.length) player.lose(lose,ui.cardPile);
if(gain.length) player.gain(gain,'draw');
}
else event.finish();
'step 2'
for(var i of cards){
if(!(('hejsd').includes(get.position(i,true)))){
i.fix();
ui.cardPile.appendChild(i);
}
}
game.updateRoundNumber();
},
},
xingzuo2:{
trigger:{player:'phaseJieshuBegin'},
direct:true,
charlotte:true,
onremove:true,
filter:function(event,player){
return game.hasPlayer(function(target){
return target.countCards('h')>0;
});
},
content:function(){
'step 0'
player.chooseTarget(function(card,player,target){
return target.countCards('h')>0;
},'兴作:是否令一名角色将其手牌与牌堆底的三张牌替换?').set('ai',function(target){
var player=_status.event.player,att=get.attitude(player,target),hs=target.getCards('h'),num=hs.length;
var getv=function(list,target){
var num=0;
for(var i of list) num+=get.value(i,target);
return num;
},val=getv(hs,target)-getv(player.storage.xingzuo2,target);
if(num<3) return att*Math.sqrt(Math.max(0,-val))*1.5;
if(num==3) return -att*Math.sqrt(Math.max(0,val));
if(player.hp<(num>4?3:2)) return 0;
return -att*Math.sqrt(Math.max(0,val));
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('xingzuo',target);
var cards=get.bottomCards(3);
game.cardsGotoOrdering(cards);
var hs=target.getCards('h');
target.lose(hs,ui.cardPile);
target.gain(cards,'draw');
if(hs.length>3) player.loseHp();
}
else event.finish();
'step 2'
game.updateRoundNumber();
},
},
miaoxian:{
hiddenCard:function(player,name){
return get.type(name)=='trick'&&!player.getStorage('miaoxian2').contains(name)&&player.countCards('h',{color:'black'})==1;
},
enable:'chooseToUse',
filter:function(event,player){
var cards=player.getCards('h',{color:'black'});
if(cards.length!=1) return false;
var mod2=game.checkMod(cards[0],player,'unchanged','cardEnabled2',player);
if(mod2===false) return false;
var storage=player.getStorage('miaoxian2');
for(var i of lib.inpile){
if(!storage.contains(i)&&get.type(i)=='trick'&&event.filterCard({
name:i,
cards:cards,
},player,event)) return true;
}
return false;
},
chooseButton:{
dialog:function(event,player){
var cards=player.getCards('h',{color:'black'});
var storage=player.getStorage('miaoxian2');
var list=[];
for(var i of lib.inpile){
if(!storage.contains(i)&&get.type(i)=='trick'&&event.filterCard({
name:i,
cards:cards,
},player,event)){
list.push(['锦囊','',i]);
}
}
return ui.create.dialog('妙弦',[list,'vcard'],'hidden');
},
check:function(button){
var player=_status.event.player;
return player.getUseValue({name:button.link[2]})+1;
},
backup:function(links,player){
return {
audio:'miaoxian',
popname:true,
filterCard:{color:'black'},
selectCard:-1,
position:'h',
viewAs:{
name:links[0][2],
},
onuse:function(links,player){
if(!player.storage.miaoxian2) player.storage.miaoxian2=[];
player.storage.miaoxian2.add(links.card.name);
player.addTempSkill('miaoxian2');
},
}
},
prompt:function(links,player){
return '将'+get.translation(player.getCards('h',{color:'black'})[0])+'当做'+get.translation(links[0][2])+'使用';
},
},
group:'miaoxian_use',
subfrequent:['use'],
subSkill:{
use:{
audio:'miaoxian',
trigger:{player:'loseAfter'},
frequent:true,
prompt:'是否发动【妙弦】摸一张牌?',
filter:function(event,player){
var evt=event.getParent();
if(evt.name!='useCard') return false;
return event.hs&&event.hs.length==1&&event.cards&&event.cards.length==1
&&get.color(event.hs[0],player)=='red'&&!player.countCards('h',{color:'red'});
},
content:function(){
player.draw();
},
},
backup:{
audio:'miaoxian',
},
},
ai:{
order:12,
result:{
player:1,
},
},
},
miaoxian2:{onremove:true},
//夏侯杰
liedan:{
audio:2,
trigger:{global:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return (player!=event.player||player.countMark('liedan')>4)&&!player.hasSkill('zhuangdan_mark');
},
logTarget:'player',
content:function(){
if(player==trigger.player){
player.die();
return;
}
var num=0;
if(player.hp>trigger.player.hp) num++;
if(player.countCards('h')>trigger.player.countCards('h')) num++;
if(player.countCards('e')>trigger.player.countCards('e')) num++;
if(num){
player.draw(num);
if(num==3) player.gainMaxHp();
}
else{
player.addMark('liedan',1);
player.loseHp();
}
},
intro:{content:'mark'},
},
zhuangdan:{
audio:2,
trigger:{global:'phaseEnd'},
forced:true,
filter:function(event,player){
return player!=event.player&&player.isMaxHandcard(true);
},
content:function(){
player.addTempSkill('zhuangdan_mark',{player:'phaseEnd'})
},
},
zhuangdan_mark:{
mark:true,
marktext:'胆',
intro:{content:'我超勇的'},
},
//陶谦和曹嵩
reyirang:{
audio:'yirang',
audioname:['re_taoqian'],
trigger:{player:'phaseUseBegin'},
direct:true,
filter:function(event,player){
if(!player.countCards('he',function(card){
return get.type(card)!='basic';
})){
return false;
}
return game.hasPlayer(function(current){
return current.maxHp>player.maxHp;
});
},
content:function(){
'step 0'
player.chooseTarget(get.prompt2('reyirang'),function(card,player,target){
return target.maxHp>player.maxHp;
}).set('ai',function(target){
return (get.attitude(_status.event.player,target)-2)*target.maxHp;
});
'step 1'
if(result.bool){
var cards=player.getCards('he',function(card){
return get.type(card)!='basic';
});
var target=result.targets[0];
player.logSkill('reyirang',target);
target.gain(cards,player,'give');
player.gainMaxHp(target.maxHp-player.maxHp,true);
player.recover(cards.length);
}
}
},
cslilu:{
audio:2,
trigger:{player:'phaseDrawBegin1'},
filter:function(event,player){
return !event.numFixed;
},
check:function(event,player){
return Math.min(player.maxHp,5)-player.countCards('h')>3||game.hasPlayer(function(current){
return current!=player&&get.attitude(player,current)>0;
});
},
content:function(){
'step 0'
trigger.changeToZero();
'step 1'
player.drawTo(Math.min(player.maxHp,5));
'step 2'
if(player.countCards('h')>0){
var str='将至少一张手牌交给一名其他角色';
var num=player.countMark('cslilu');
if(num<player.countCards('h')){
if(num>0) str+=('。若给出的牌数大于'+get.cnNumber(num)+'张,则你');
else str+=',并';
str+='加1点体力上限并回复1点体力'
}
player.chooseCardTarget({
prompt:str,
filterCard:true,
filterTarget:lib.filter.notMe,
selectCard:[1,Infinity],
forced:true,
ai1:function(card){
if(ui.selected.cards.length<_status.event.goon){
if(get.tag(card,'damage')&&game.hasPlayer(function(current){
current!=player&&get.attitude(player,current)>0&&!current.hasSkillTag('nogain')&&!current.hasJudge('lebu')&&current.hasValueTarget(card);
})) return 1;
return 1/Math.max(0.1,get.value(card));
}
return 0;
},
ai2:function(target){
return Math.sqrt(5-Math.max(4,target.countCards('h')))*get.attitude(_status.event.player,target);
},
goon:function(){
if(!game.hasPlayer(function(current){
return current!=player&&get.attitude(player,current)>0&&!current.hasSkillTag('nogain')&&!current.hasJudge('lebu');
})) return 1;
if(num<player.countCards('h')) return num+1;
return 1;
}(),
});
}
else event.finish();
'step 3'
if(result.bool){
var num=player.countMark('cslilu');
result.targets[0].gain(result.cards,player,'giveAuto');
if(result.cards.length>num){
player.gainMaxHp();
player.recover();
}
player.storage.cslilu=result.cards.length;
player.markSkill('cslilu');
}
},
},
csyizheng:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('csyizheng'),lib.filter.notMe).set('ai',function(target){
if(target.isTurnedOver()||target.hasJudge('lebu')) return 0;
return get.attitude(_status.event.player,target)*Math.max(0,target.countCards('h')-2);
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('csyizheng',target);
player.storage.csyizheng2=target;
player.addTempSkill('csyizheng2',{player:'phaseBegin'});
}
},
},
csyizheng2:{
audio:'csyizheng',
trigger:{
global:['recoverBegin','damageBegin1'],
},
forced:true,
charlotte:true,
logTarget:function(event){
return event.name=='damage'?event.source:event.player;
},
filter:function(event,player){
var target=lib.skill.csyizheng2.logTarget(event);
if(target!=player.storage.csyizheng2) return false;
return player.maxHp>target.maxHp;
},
content:function(){
player.loseMaxHp();
trigger.num++;
},
mark:'character',
intro:{
content:'$造成伤害或回复体力时若你的体力上限大于其则你减1点体力上限然后此伤害/回复量+1',
},
},
reyixiang:{
audio:'yixiang',
audioname:['re_taoqian'],
trigger:{player:'damageBegin1'},
forced:true,
filter:function(event,player){
var evt=event.getParent(2);
if(evt.name!='useCard'||evt.card!=event.card) return false;
var source=evt.player;
var phsu=evt.getParent('phaseUse');
if(!source||source==player||source!=phsu.player) return false;
return source.getHistory('useCard',function(evt2){
return evt2.getParent('phaseUse')==phsu;
})[0]==evt;
},
content:function(){
trigger.num--;
},
group:'reyixiang_card',
subSkill:{
card:{
trigger:{target:'useCardToTargeted'},
forced:true,
filter:function(event,player){
if(get.color(event.card)!='black') return false;
var evt=event.getParent();
var source=evt.player;
var phsu=evt.getParent('phaseUse');
if(!source||source==player||source!=phsu.player) return false;
return source.getHistory('useCard',function(evt2){
return evt2.getParent('phaseUse')==phsu;
}).indexOf(evt)==1;
},
content:function(){
trigger.excluded.add(player);
},
},
},
ai:{
effect:{
target:function(card,player,target,current,isLink){
if(isLink||!player.isPhaseUsing()) return;
var num;
var evt=_status.event.getParent('useCard'),evt2=_status.event.getParent('phaseUse');
if(evt.card==card){
num=player.getHistory('useCard',function(evt){
return evt.getParent('phaseUse')==evt2;
}).indexOf(evt);
}
else num=player.getHistory('useCard',function(evt){
return evt.getParent('phaseUse')==evt2;
}).length;
if(num<0||num>1) return;
if(num==0&&get.tag(card,'damage')) return 'zerotarget';
if(num==1&&get.color(card)=='black') return 'zeroplayertarget';
},
},
},
},
//赵忠
yangzhong:{
audio:2,
trigger:{
source:'damageSource',
player:'damageEnd',
},
direct:true,
filter:function(event,player){
var target=event.player,source=event.source;
if(player!=source&&!player.hasSkill('yangzhong')) return false;
if(!target||!source||!target.isAlive()||!source.isAlive()) return false;
return source.countCards('he')>1;
},
content:function(){
'step 0'
trigger.source.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【殃众】?','弃置两张牌并令其失去1点体力','he',2).set('ai',function(card){
var evt=_status.event;
if(get.attitude(evt.player,evt.getTrigger().player)>=0) return 0;
return 7-get.value(card);
}).logSkill=['yangzhong',trigger.player];
'step 1'
if(result.bool) trigger.player.loseHp();
},
},
huangkong:{
audio:2,
trigger:{target:'useCardToTargeted'},
forced:true,
filter:function(event,player){
if(player==_status.currentPhase||event.targets.length!=1||player.countCards('h')) return false;
var type=get.type(event.card);
return ((type=='basic'||type=='trick')&&get.tag(event.card,'damage')>0);
},
content:function(){
player.draw(2);
},
},
//樊玉凤
bazhan:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
if(player.storage.bazhan){
return game.hasPlayer(function(current){
return current!=player&&current.countGainableCards(player,'h')>0;
})
}
return player.countCards('h')>0;
},
filterCard:true,
discard:false,
lose:false,
selectCard:function(){
if(_status.event.player.storage.bazhan) return 0;
return [1,2];
},
filterTarget:function(card,player,target){
if(player==target) return false;
if(player.storage.bazhan) return target.countGainableCards(player,'he')>0;
return true;
},
prompt:function(){
if(_status.event.player.storage.bazhan) return '获得一名其他角色的至多两张手牌';
return '将至多两张手牌交给一名其他角色';
},
delay:false,
check:function(card){
var player=_status.event.player;
var bool1=false,bool2=false;
for(var i of game.players){
if(get.attitude(player,i)<=0||player==i) continue;
bool1=true;
if(i.isDamaged()||i.isTurnedOver()){
bool2=true;
break;
}
}
if(bool2&&!ui.selected.cards.length&&(get.suit(card,player)=='heart'||get.name(card,player)=='jiu')) return 10;
if(bool1) return 9-get.value(card);
if(get.color(card)=='red') return 5-get.value(card);
return 0;
},
content:function(){
'step 0'
if(player.storage.bazhan){
player.storage.bazhan=false;
event.recover=player;
player.gainPlayerCard(target,'h',true,'visibleMove',[1,2]);
}
else{
player.storage.bazhan=true;
event.recover=target;
target.gain(cards,player,'give');
}
'step 1'
var target=event.recover;
if(result.bool&&result.cards&&result.cards.length){
cards=result.cards;
}
if(!cards||!target||!target.getCards('h').filter(function(i){
return cards.contains(i);
}).length||function(){
for(var card of cards){
if(get.suit(card,target)=='heart'||get.name(card,target)=='jiu') return false;
}
return true;
}()){
event.finish();
return;
}
var list=[];
event.addIndex=0;
var str=get.translation(target);
if(target.isDamaged()) list.push('令'+str+'回复一点体力');
else event.addIndex++;
if(target.isLinked()||target.isTurnedOver()) list.push('令'+get.translation(target)+'复原武将牌');
if(!list.length) event.finish();
else player.chooseControl('cancel2').set('choiceList',list).set('ai',function(){
var evt=_status.event.getParent();
if(get.attitude(evt.player,evt.target)<0) return 'cancel2';
if(target.hp>1&&target.isTurnedOver()) return 1-evt.addIndex;
return 0;
});
'step 2'
if(result.control=='cancel2') event.finish();
else if(result.index+event.addIndex==0){
event.recover.recover();
event.finish();
}
else if(event.recover.isLinked()) event.recover.link();
'step 3'
if(event.recover.isTurnedOver()) event.recover.turnOver();
},
ai:{
order:7,
result:{
target:function(player,target){
if(player.storage.bazhan) return -1;
if(ui.selected.cards.length){
var cards=ui.selected.cards,card=cards[0];
if(get.value(cards,target)<0) return -0.5;
if(get.attitude(player,target)>0){
if((target.isDamaged()||target.isTurnedOver())&&(get.suit(card,target)=='heart'||get.name(card,target)=='jiu')) return 3;
if(target.hasUseTarget(card)&&target.getUseValue(card)>player.getUseValue(card,null,true)) return 1.4;
return 1;
}
}
return 0;
},
},
},
},
jiaoying:{
audio:2,
trigger:{source:'gainEnd'},
forced:true,
filter:function(event,player){
if(player==event.player) return false;
var evt=event.getl(player);
return evt&&evt.hs&&evt.hs.length;
},
logTarget:'player',
content:function(){
var target=trigger.player;
if(!target.storage.jiaoying2) target.storage.jiaoying2=[];
var cs=trigger.getl(player).hs;
for(var i of cs) target.storage.jiaoying2.add(get.color(i,player));
target.addTempSkill('jiaoying2');
target.markSkill('jiaoying2');
player.addTempSkill('jiaoying3');
if(!player.storage.jiaoying3) player.storage.jiaoying3=[];
player.storage.jiaoying3.add(target);
},
ai:{
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
var target=arg.target;
if(target.getStorage('jiaoying2').contains('red')&&get.tag(arg.card,'respondShan')&&!target.hasSkillTag('respondShan',true,null,true)) return true;
return false;
},
}
},
jiaoying2:{
onremove:true,
charlotte:true,
mod:{
cardEnabled2:function(card,player){
if(player.getStorage('jiaoying2').contains(get.color(card))) return false;
},
},
intro:{
content:'本回合内不能使用或打出$牌',
},
},
jiaoying3:{
onremove:true,
trigger:{global:'useCard1'},
silent:true,
firstDo:true,
charlotte:true,
filter:function(event,player){
return player.storage.jiaoying3.contains(event.player);
},
content:function(){
while(player.storage.jiaoying3.contains(trigger.player)) player.storage.jiaoying3.remove(trigger.player);
if(!player.storage.jiaoying3.length) player.removeSkill('jiaoying3');
},
group:'jiaoying3_draw',
},
jiaoying3_draw:{
trigger:{global:'phaseEnd'},
direct:true,
charlotte:true,
filter:function(event,player){
return player.getStorage('jiaoying3').length>0&&game.hasPlayer(function(current){
return current.countCards('h')<5;
})
},
content:function(){
'step 0'
player.storage.jiaoying3.shift();
player.chooseTarget('醮影:令一名角色将手牌摸至五张',function(card,player,target){
return target.countCards('h')<5;
}).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(att>2){
return 5-target.countCards('h');
}
return att/3;
});
'step 1'
if(result.bool){
player.logSkill('jiaoying',result.targets);
for(var i=0;i<result.targets.length;i++){
result.targets[i].drawTo(5);
}
if(lib.skill.jiaoying3_draw.filter(null,player)) event.goto(0);
}
},
},
recangchu:{
audio:2,
trigger:{
global:'gameStart',
player:'enterGame',
},
marktext:'粮',
forced:true,
filter:function(event,player){
return player.countMark('recangchu')<game.countPlayer();
},
content:function(){
player.addMark('recangchu',Math.min(3,game.countPlayer()-player.countMark('recangchu')));
},
intro:{content:'mark',name:'粮'},
mod:{
maxHandcard:function(player,num){
return num+player.countMark('recangchu');
},
},
group:['recangchu2','recangchu3'],
},
recangchu2:{
audio:'recangchu',
trigger:{
player:'gainAfter',
},
forced:true,
usable:1,
filter:function(event,player){
return player!=_status.currentPhase&&player.countMark('recangchu')<game.countPlayer();
},
content:function(){
player.addMark('recangchu',1);
},
},
recangchu3:{
audio:'recangchu',
trigger:{global:'die'},
forced:true,
filter:function(event,player){
return player.countMark('recangchu')>game.countPlayer();
},
content:function(){
player.removeMark('recangchu',player.countMark('recangchu')-game.countPlayer());
},
},
reliangying:{
audio:2,
trigger:{player:'phaseDiscardBegin'},
direct:true,
content:function(){
'step 0'
var map={};
var list=[];
for(var i=1;i<=player.countMark('recangchu');i++){
var cn=get.cnNumber(i,true);
map[cn]=i;
list.push(cn);
}
list.push('cancel2');
event.map=map;
player.chooseControl(list).set('prompt',get.prompt('reliangying')).set('prompt2','摸至多'+get.cnNumber(player.countMark('recangchu'))+'张牌,然后交给等量的角色各一张牌').set('ai',function(){
var player=_status.event.player;
var num=Math.min(player.countMark('recangchu'),game.countPlayer(function(current){
return get.attitude(player,current)>0;
}));
if(num>0) return get.cnNumber(num,true);
return 'cancel2';
});
'step 1'
if(result.control=='cancel2'){event.finish();return;}
player.logSkill('reliangying');
var num=event.map[result.control]||1;
event.num=num;
player.draw(num);
'step 2'
var num=Math.min(event.num,player.countCards('he'),game.countPlayer(function(target){
return target!=player;
}));
if(num){
player.chooseCardTarget({
prompt:'将'+get.cnNumber(num)+'张牌交给其他角色',
prompt2:'操作提示:先按顺序选中所有要给出的牌,然后再按顺序选择等量的目标角色。可少选一张牌,并将此牌留给自己',
selectCard:[num-1,num],
selectTarget:function(){
return ui.selected.cards.length;
},
filterTarget:function(card,player,target){
return target!=player;
},
complexSelect:true,
position:'he',
ai1:function(card){
if(game.countPlayer(function(current){
return target!=_status.event.player&&get.attitude(_status.event.player,target)>0;
})<=ui.selected.cards.length) return 0;
if(card.name=='shan') return 1;
return Math.random();
},
ai2:function(target){
if(!target) return 1;
return Math.sqrt(5-Math.max(4,target.countCards('h')))*get.attitude(_status.event.player,target);
},
forced:true,
});
}
else event.finish();
'step 3'
if(result.bool){
while(result.cards.length){
var target=result.targets.shift();
var card=result.cards.shift();
target.gain(card,player);
player.$giveAuto(card,target);
}
event.next.sort(function(a,b){
return lib.sort.seat(a.player,b.player);
});
}
else event.finish();
'step 4'
game.delay();
},
},
reshishou:{
audio:2,
trigger:{player:['useCard','damageEnd']},
forced:true,
filter:function(event,player){
if(!player.countMark('recangchu')) return false;
return (event.name=='damage')?(event.nature=='fire'):(event.card&&event.card.name=='jiu');
},
content:function(){
player.removeMark('recangchu',Math.min(player.countMark('recangchu'),trigger.num||1));
},
group:'reshishou2',
},
reshishou2:{
audio:'reshishou',
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return !player.countMark('recangchu');
},
content:function(){
player.loseHp();
},
},
pianchong:{
audio:2,
trigger:{player:'phaseDrawBegin1'},
filter:function(event,player){
return !event.numFixed;
},
content:function(){
'step 0'
trigger.changeToZero();
var cards=[];
var card1=get.cardPile2(function(card){
return get.color(card,false)=='red';
});
if(card1) cards.push(card1);
var card2=get.cardPile2(function(card){
return get.color(card,false)=='black';
});
if(card2) cards.push(card2);
if(cards.length) player.gain(cards,'gain2');
'step 1'
game.updateRoundNumber();
player.chooseControl('red','black').set('prompt','偏宠:请选择一种颜色。直至你的下回合开始时,失去该颜色的一张牌后,从牌堆获得另一种颜色的一张牌。').set('ai',function(){
var red=0,black=0;
var player=_status.event.player;
var cards=player.getCards('he');
for(var i of cards){
var add=1;
var color=get.color(i,player);
if(get.position(i)=='e') add=0.5;
else if(get.name(i,player)!='sha'&&player.hasValueTarget(i)) add=1.5;
if(color=='red') red+=add;
else black+=add;
}
if(black>red) return 'black';
return 'red';
});
'step 2'
player.storage.pianchong2=result.control;
player.addTempSkill('pianchong2',{player:'phaseBeginStart'});
player.popup(result.control,result.control=='red'?'fire':'thunder');
game.log(player,'声明了','#y'+get.translation(result.control));
},
ai:{
threaten:4.8,
},
},
pianchong2:{
audio:'pianchong',
trigger:{
player:'loseAfter',
global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter'],
},
forced:true,
charlotte:true,
onremove:true,
filter:function(event,player){
var evt=event.getl(player);
if(!evt||!evt.cards2||!evt.cards2.length) return false;
for(var i of evt.cards2){
if(get.color(i,player)==player.storage.pianchong2) return true;
}
return false;
},
content:function(){
'step 0'
var num=trigger.getl(player).cards2.filter(function(card){
return get.color(card,player)==player.storage.pianchong2;
}).length;
var cards=[];
while(num--){
var card=get.cardPile2(function(card){
return !cards.contains(card)&&get.color(card,false)!=player.storage.pianchong2;
});
if(card) cards.push(card);
else break;
}
if(cards.length) player.gain(cards,'gain2');
else event.finish();
'step 1'
game.updateRoundNumber();
},
mark:true,
intro:{
content:'失去一张$牌后,从牌堆中获得一张与此牌颜色不同的牌',
},
},
zunwei:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return !player.storage.zunwei||player.storage.zunwei.length<3;
},
chooseButton:{
dialog:function(event,player){
var list=[
'选择体力值大于你的一名角色',
'选择手牌数大于你的一名角色',
'选择装备数大于你的一名角色',
];
var choiceList=ui.create.dialog('尊位:清选择一项','forcebutton','hidden');
for(var i=0;i<list.length;i++){
if(player.storage.zunwei&&player.storage.zunwei.contains(i)) continue;
var bool=game.hasPlayer(function(current){
return current!=player&&lib.skill.zunwei.backups[i].filterTarget(null,player,current);
});
var str='<div class="popup text" style="width:calc(100% - 10px);display:inline-block">';
if(!bool) str+='<div style="opacity:0.5">';
str+=list[i];
if(!bool) str+='</div>';
str+='</div>';
var next=choiceList.add(str);
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
next.firstChild.link=i;
next.firstChild._filterButton=bool;
for(var j in lib.element.button){
next[j]=lib.element.button[j];
}
choiceList.buttons.add(next.firstChild);
}
return choiceList;
},
filter:function(button){
return button._filterButton;
},
backup:function(links){
var next=get.copy(lib.skill.zunwei.backups[links[0]]);
next.audio='zunwei';
next.filterCard=function(){return false};
next.selectCard=-1;
return next;
},
check:function(button){
var player=_status.event.player;
switch(button.link){
case 0:{
var target=game.findPlayer(function(current){
return current.isMaxHp();
});
return (Math.min(target.hp,player.maxHp)-player.hp)*2;
}
case 1:{
var target=game.findPlayer(function(current){
return current.isMaxHandcard();
});
return Math.min(5,target.countCards('h')-player.countCards('h'))*0.8;
}
case 2:{
var target=game.findPlayer(function(current){
return current.isMaxEquip();
});
return (target.countCards('e')-player.countCards('e'))*1.4;
}
}
},
prompt:function(links){
return [
'选择一名体力值大于你的其他角色,将体力值回复至与其相同',
'选择一名手牌数大于你的其他角色,将手牌数摸至与其相同',
'选择一名装备区内牌数大于你的其他角色,依次使用牌堆中的装备牌,直到装备数与其相同',
][links[0]];
},
},
backups:[
{
filterTarget:function(card,player,target){
if(player.isHealthy()) return false;
return target.hp>player.hp;
},
content:function(){
player.recover(target.hp-player.hp);
if(!player.storage.zunwei) player.storage.zunwei=[];
player.storage.zunwei.add(0);
},
ai:{
order:10,
result:{
player:function(player,target){
return (Math.min(target.hp,player.maxHp)-player.hp);
},
},
},
},
{
filterTarget:function(card,player,target){
return target.countCards('h')>player.countCards('h');
},
content:function(){
player.draw(Math.min(5,target.countCards('h')-player.countCards('h')));
if(!player.storage.zunwei) player.storage.zunwei=[];
player.storage.zunwei.add(1);
},
ai:{
order:10,
result:{
player:function(player,target){
return Math.min(5,target.countCards('h')-player.countCards('h'));
},
},
},
},
{
filterTarget:function(card,player,target){
return target.countCards('e')>player.countCards('e');
},
content:function(){
'step 0'
if(!player.storage.zunwei) player.storage.zunwei=[];
player.storage.zunwei.add(2);
event.num=1;
'step 1'
var type='equip'+num;
if(!player.isEmpty(type)) return;
var card=get.cardPile2(function(card){
return get.subtype(card,false)==type&&player.canUse(card,player);
});
if(card) player.chooseUseTarget(card,true).nopopup=true;
'step 2'
game.updateRoundNumber();
event.num++;
if(event.num<=5&&target.isAlive()&&player.countCards('e')<target.countCards('e')) event.goto(1);
},
ai:{
order:10,
result:{
player:function(player,target){
return (target.countCards('e')-player.countCards('e'));
},
},
},
},
],
ai:{
order:10,
result:{
player:1,
},
},
},
hfjieying:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('hfjieying'),lib.filter.notMe).set('ai',function(target){
var player=_status.event.player;
return get.attitude(player,target)*(1+target.countCards('h',function(card){
return !get.tag(card,'damage')&&target.hasValueTarget(card);
}))/(1+target.countCards('h'));
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('hfjieying',target);
target.addTempSkill('hfjieying2',{player:'phaseJieshuBegin'});
}
},
ai:{
expose:0.05,
},
},
hfjieying2:{
mod:{
cardEnabled:function(card,player){
if(player.storage.hfjieying2) return false;
},
cardSavable:function(card,player){
if(player.storage.hfjieying2) return false;
},
targetInRange:function(card,player){
if(player==_status.currentPhase&&(card.name=='sha'||get.type(card)=='trick')) return true;
},
aiOrder:function(player,card,num){
var info=get.info(card);
if(!get.tag(card,'damage')&&(!info||!info.toself)) return num+8;
},
},
onremove:true,
trigger:{player:'useCard2'},
direct:true,
filter:function(event,player){
if(player!=_status.currentPhase) return false;
var card=event.card;
if(card.name!='sha'&&get.type(card)!='trick')return false;
var info=get.info(card);
if(info.allowMultiple==false) return false;
if(event.targets&&!info.multitarget){
if(game.hasPlayer(function(current){
return !event.targets.contains(current)&&lib.filter.targetEnabled2(card,player,current);
})){
return true;
}
}
return false;
},
content:function(){
'step 0'
var prompt2='为'+get.translation(trigger.card)+'增加一个目标'
player.chooseTarget(get.prompt('hfjieying2'),function(card,player,target){
var player=_status.event.player;
return !_status.event.targets.contains(target)&&lib.filter.targetEnabled2(_status.event.card,player,target);
}).set('prompt2',prompt2).set('ai',function(target){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
return get.effect(target,trigger.card,player,player);
}).set('card',trigger.card).set('targets',trigger.targets);
'step 1'
if(result.bool){
if(!event.isMine()&&!event.isOnline()) game.delayx();
event.targets=result.targets;
}
else{
event.finish();
}
'step 2'
if(event.targets){
player.logSkill('hfjieying2',event.targets);
trigger.targets.addArray(event.targets);
}
},
group:'hfjieying3',
mark:true,
intro:{
content:function(player){
if(player) return '不能使用牌直到回合结束';
return '使用【杀】或普通锦囊牌时无距离限制且可以多指定一个目标';
},
},
},
hfjieying3:{
trigger:{source:'damageSource'},
forced:true,
popup:false,
filter:function(event,player){
return !player.storage.hfjieying2&&player==_status.currentPhase;
},
content:function(){
player.storage.hfjieying2=true;
},
},
weipo:{
audio:2,
trigger:{target:'useCardToTargeted'},
forced:true,
filter:function(event,player){
return player!=event.player&&!player.hasSkill('weipo3')&&player.countCards('h')<Math.min(5,player.maxHp)&&(event.card.name=='sha'||get.type(event.card)=='trick');
},
content:function(){
'step 0'
player.addTempSkill('weipo2');
player.drawTo(Math.min(5,player.maxHp));
'step 1'
var evt=trigger.getParent();
if(!evt.weipo) evt.weipo={};
evt.weipo[player.playerid]=player.countCards('h');
},
},
weipo2:{
charlotte:true,
trigger:{global:'useCardAfter'},
forced:true,
popup:false,
filter:function(event,player){
return event.weipo&&event.weipo[player.playerid]!=undefined&&event.weipo[player.playerid]>player.countCards('h');
},
content:function(){
'step 0'
player.addTempSkill('weipo3',{player:'phaseBegin'});
if(player.countCards('h')&&trigger.player.isAlive()){
player.chooseCard('h',true,'将一张手牌交给'+get.translation(trigger.player));
}
else event.finish();
'step 1'
if(result.bool){
trigger.player.gain(result.cards,player,'giveAuto');
}
},
},
weipo3:{charlotte:true},
refuqi:{
audio:'fuqi',
forced:true,
trigger:{
player:"useCard",
},
filter:function(event,player){
return event.card&&(get.type(event.card)=='trick'||get.type(event.card)=='basic'&&!['shan','tao','jiu','du'].contains(event.card.name))&&game.hasPlayer(function(current){
return current!=player&&get.distance(player,current)<=1;
});
},
content:function(){
trigger.directHit.addArray(game.filterPlayer(function(current){
return current!=player&&get.distance(player,current)<=1;
}));
},
ai:{
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
return get.distance(player,arg.target)<=1;
},
},
},
zhuide:{
audio:2,
trigger:{player:'die'},
forceDie:true,
skillAnimation:true,
animationColor:'thunder',
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('zhuide'),lib.filter.notMe).set('ai',function(target){
return get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('zhuide',target);
var names=[];
var cards=[];
while(cards.length<4){
var card=get.cardPile2(function(card){
return !cards.contains(card)&&!names.contains(card.name)&&get.type(card)=='basic';
});
if(card){
cards.push(card);
names.push(card.name);
}
else break;
}
if(cards.length) target.gain(cards,'gain2');
}
},
},
juntun:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return player.maxHp>1;
},
content:function(){
player.loseMaxHp();
player.draw(player.maxHp);
},
},
jiaojie:{
audio:2,
mod:{
ignoredHandcard:function(card,player){
if(get.color(card)=='red'){
return true;
}
},
cardDiscardable:function(card,player,name){
if(name=='phaseDiscard'&&get.color(card)=='red'){
return false;
}
},
targetInRange:function(card){
if(get.color(card)=='black') return true;
},
cardUsable:function(card){
if(get.color(card)=='black') return Infinity;
},
},
},
decadewuniang:{
trigger:{
player:["useCard","respond"],
},
audio:'xinfu_wuniang',
direct:true,
filter:function(event,player){
return event.card.name=='sha';
},
content:function(){
'step 0'
player.chooseTarget(get.prompt2('decadewuniang'),function(card,player,target){
if(player==target) return false;
return target.countGainableCards(player,'he')>0;
}).set('ai',function(target){
return 10-get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('decadewuniang',target);
player.line(target,'fire');
player.gainPlayerCard(target,'he',true);
target.draw();
if(!player.storage.decadexushen) event.finish();
}
else event.finish();
'step 2'
var list=game.filterPlayer(function(current){
return current.name=='guansuo'||current.name2=='guansuo';
});
if(list.length) game.asyncDraw(list);
else event.finish();
'step 3'
game.delayx();
},
},
rezhongjian:{
enable:'phaseUse',
audio:'zhongjian',
usable:2,
filter:function(event,player){
if(player.getStat().skill.rezhongjian&&!player.hasSkill('recaishi2')) return false;
return game.hasPlayer(function(current){
return lib.skill.rezhongjian.filterTarget(null,player,current);
});
},
filterTarget:function(card,player,target){
if(!player.storage.rezhongjian2) return true;
return !player.storage.rezhongjian2[0].contains(target)&&!player.storage.rezhongjian2[1].contains(target);
},
content:function(){
'step 0'
player.chooseControl().set('prompt','忠鉴:为'+get.translation(target)+'选择获得一项效果').set('choiceList',[
'令其于下回合开始前首次造成伤害后弃置两张牌',
'令其于下回合开始前首次受到伤害后摸两张牌',
]).set('ai',function(){
return get.attitude(_status.event.player,_status.event.getParent().target)>0?1:0;
});
'step 1'
player.addTempSkill('rezhongjian2',{player:'phaseBeginStart'});
//var str=['造成伤害弃牌','受到伤害摸牌'][result.index];
//player.popup(str,['fire','wood'][result.index]);
//game.log(player,'选择了','#y'+str)
player.storage.rezhongjian2[result.index].push(target);
player.markSkill('rezhongjian2');
},
ai:{
order:10,
expose:0,
result:{
player:function(player,target){
if(get.attitude(player,target)==0) return false;
var sgn=get.sgn((get.realAttitude||get.attitude)(player,target));
if(game.countPlayer(function(current){
return get.sgn((get.realAttitude||get.attitude)(player,current))==sgn;
})<=game.countPlayer(function(current){
return get.sgn((get.realAttitude||get.attitude)(player,current))!=sgn;
})) return 1;
return 0.9;
},
},
},
},
rezhongjian2:{
trigger:{
global:['damageSource','damageEnd'],
},
forced:true,
filter:function(event,player,name){
var num=(name=='damageSource'?0:1);
var logTarget=(name=='damageSource'?event.source:event.player);
return logTarget&&logTarget.isAlive()&&player.storage.rezhongjian2[num].contains(logTarget);
},
logTarget:function(event,player,name){
return (name=='damageSource'?event.source:event.player);
},
content:function(){
var num=(event.triggername=='damageSource'?0:1);
var target=(event.triggername=='damageSource'?trigger.source:trigger.player);
var storage=player.storage.rezhongjian2;
storage[num].remove(target);
if(storage[0].length+storage[1].length) player.markSkill('rezhongjian2');
else player.removeSkill('rezhongjian2');
target[event.triggername=='damageSource'?'chooseToDiscard':'draw'](2,true,'he');
player.draw();
},
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[[],[]];
},
onremove:true,
intro:{
markcount:function(storage){
return storage[0].length+storage[1].length;
},
mark:function(dialog,storage,player){
if(player==game.me||player.isUnderControl()){
if(storage[0].length){
dialog.addText('弃牌');
dialog.add([storage[0],'player']);
}
if(storage[1].length){
dialog.addText('摸牌');
dialog.add([storage[1],'player']);
}
}
else{
var list=storage[0].concat(storage[1]).sortBySeat(player);
dialog.add([list,'player']);
}
},
},
},
recaishi:{
trigger:{player:'phaseDrawEnd'},
direct:true,
audio:'caishi',
isSame:function(event){
var cards=[];
event.player.getHistory('gain',function(evt){
if(evt.getParent().name=='draw'&&evt.getParent('phaseDraw')==event) cards.addArray(evt.cards);
});
if(!cards.length) return 'nogain';
var list=[];
for(var i=0;i<cards.length;i++){
list.add(get.suit(cards[i]));
}
if(list.length==1) return true;
if(list.length==cards.length) return false;
return 'nogain';
},
filter:function(event,player){
var isSame=lib.skill.recaishi.isSame(event);
if(isSame=='nogain') return false;
return isSame||player.isDamaged();
},
content:function(){
'step 0'
if(lib.skill.recaishi.isSame(trigger)){
player.logSkill('recaishi');
player.addTempSkill('recaishi2');
event.finish();
return;
}
player.chooseBool(get.prompt('recaishi'),'回复1点体力然后本回合内不能对自己使用牌').set('ai',function(){
if(player.countCards('h','tao')) return false;
if(player.hp<2) return true;
return player.countCards('h',function(card){
var info=get.info(card);
return info&&(info.toself||info.selectTarget==-1)&&player.canUse(card,player)&&player.getUseValue(card)>0;
})==0;
});
'step 1'
if(result.bool){
player.logSkill('recaishi');
player.recover();
player.addTempSkill('recaishi3');
}
},
},
recaishi2:{},
recaishi3:{
mod:{
targetEnabled:function(card,player,target){
if(player==target) return false;
},
},
mark:true,
intro:{content:'本回合内不能对自己使用牌'},
},
minsi:{
audio:2,
enable:'phaseUse',
getResult:function(cards){
var l=cards.length;
var all=Math.pow(l,2);
var list=[];
for(var i=1;i<all;i++){
var array=[];
for(var j=0;j<l;j++){
if(Math.floor((i%Math.pow(2,j+1))/Math.pow(2,j))>0) array.push(cards[j])
}
var num=0;
for(var k of array){
num+=get.number(k);
}
if(num==13) list.push(array);
}
if(list.length){
list.sort(function(a,b){
if(a.length!=b.length) return b.length-a.length;
return get.value(a)-get.value(b);
});
return list[0];
}
return list;
},
usable:1,
filterCard:function(card){
var num=0;
for(var i=0;i<ui.selected.cards.length;i++){
num+=get.number(ui.selected.cards[i]);
}
return get.number(card)+num<=13;
},
complexCard:true,
selectCard:function(){
var num=0;
for(var i=0;i<ui.selected.cards.length;i++){
num+=get.number(ui.selected.cards[i]);
}
if(num==13) return ui.selected.cards.length;
return ui.selected.cards.length+2;
},
check:function(card){
var evt=_status.event;
if(!evt.minsi_choice) evt.minsi_choice=lib.skill.minsi.getResult(evt.player.getCards('he'));
if(!evt.minsi_choice.contains(card)) return 0;
return 1;
},
position:'he',
content:function(){
player.draw(cards.length*2).gaintag=['minsi2'];
player.addTempSkill('minsi2');
},
ai:{
order:5,
result:{player:1},
},
},
minsi2:{
onremove:function(player){
player.removeGaintag('minsi2');
},
mod:{
targetInRange:function(card,player,target){
if(!card.cards) return;
for(var i of card.cards){
if(!i.hasGaintag('minsi2')||get.color(i)!='black') return;
}
return true;
},
ignoredHandcard:function(card,player){
if(card.hasGaintag('minsi2')&&get.color(card)=='red'){
return true;
}
},
cardDiscardable:function(card,player,name){
if(name=='phaseDiscard'&&card.hasGaintag('minsi2')&&get.color(card)=='red'){
return false;
}
},
aiOrder:function(player,card,num){
if(get.itemtype(card)=='card'&&card.hasGaintag('minsi2')&&get.color(card)=='black') return num-0.1;
},
},
},
jijing:{
audio:2,
trigger:{player:'damageEnd'},
frequent:true,
content:function(){
'step 0'
player.judge();
'step 1'
var num=result.number;
var next=player.chooseToDiscard('是否弃置任意张点数之和为'+get.cnNumber(num)+'的牌并回复1点体力',function(card){
var num=0;
for(var i=0;i<ui.selected.cards.length;i++){
num+=get.number(ui.selected.cards[i]);
}
return get.number(card)+num<=_status.event.num;
},'he');
next.set('num',num);
next.set('complexCard',true);
next.set('selectCard',function(){
var num=0;
for(var i=0;i<ui.selected.cards.length;i++){
num+=get.number(ui.selected.cards[i]);
}
if(num==_status.event.num) return ui.selected.cards.length;
return ui.selected.cards.length+2;
});
next.set('cardResult',function(){
var cards=player.getCards('he');
var l=cards.length;
var all=Math.pow(l,2);
var list=[];
for(var i=1;i<all;i++){
var array=[];
for(var j=0;j<l;j++){
if(Math.floor((i%Math.pow(2,j+1))/Math.pow(2,j))>0) array.push(cards[j])
}
var numx=0;
for(var k of array){
numx+=get.number(k);
}
if(numx==num) list.push(array);
}
if(list.length){
list.sort(function(a,b){
return get.value(a)-get.value(b);
});
return list[0];
}
return list;
}());
next.set('ai',function(card){
if(!_status.event.cardResult.contains(card)) return 0;
return 6-get.value(card);
});
'step 2'
if(result.bool) player.recover();
},
},
cixiao:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
direct:true,
filter:function(event,player){
if(!game.hasPlayer(function(current){
return current.hasSkill('panshi');
})) return true;
return player.countCards('he')>=1&&game.hasPlayer(function(current){
return current!=player&&!current.hasSkill('panshi');
});
},
content:function(){
'step 0'
if(game.hasPlayer(function(current){
return current.hasSkill('panshi');
})) event.goto(2);
else player.chooseTarget(lib.filter.notMe,get.prompt('cixiao'),'令一名其他角色获得「义子」标记').set('ai',function(target){
var player=_status.event.player;
var att=-get.attitude(player,target);
return att*target.countCards('h');
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('cixiao',target);
target.addSkill('panshi');
}
event.finish();
'step 2'
var list=game.filterPlayer(function(current){
return current.hasSkill('panshi');
});
player.chooseCardTarget({
prompt:get.prompt('cixiao'),
prompt2:('弃置一张牌并将'+get.translation(list)+'的「义子」标记转移给其他角色'),
position:'he',
filterTarget:function(card,player,target){
return player!=target&&!target.hasSkill('panshi');
},
filterCard:lib.filter.cardDiscardable,
ai1:function(card){
if(_status.event.goon) return 5-get.value(card);
return 0;
},
ai2:function(target){
var player=_status.event.player;
var att=-get.attitude(player,target);
return att*target.countCards('h');
},
goon:function(target){
var att=-get.attitude(player,target);
return att*target.countCards('h')<=0;
}(list[0]),
});
'step 3'
if(result.bool){
var target=result.targets[0];
player.logSkill('cixiao');
player.discard(result.cards).delay=false;
player.line2(game.filterPlayer(function(current){
if(current.hasSkill('panshi')){
current.removeSkill('panshi');
return true;
}
}).concat(result.targets),'green');
target.addSkill('panshi');
}
else event.finish();
'step 4'
game.delayx();
},
derivation:'panshi',
ai:{threaten:8},
},
panshi:{
mark:true,
marktext:'子',
intro:{content:'我是儿子'},
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return player.countCards('h')>0&&game.hasPlayer(function(current){
return current!=player&&current.hasSkill('cixiao');
});
},
content:function(){
'step 0'
var targets=game.filterPlayer(function(current){
return current!=player&&current.hasSkill('cixiao');
});
if(targets.length==1){
event.target=targets[0];
player.chooseCard('h',true,'叛弑:将一张手牌交给'+get.translation(targets));
}
else player.chooseCardTarget({
prompt:'叛弑:将一张手牌交给'+get.translation(targets)+'中的一名角色',
filterCard:true,
position:'h',
targets:targets,
forced:true,
filterTarget:function(card,player,target){
return _status.event.targets.contains(target);
},
});
'step 1'
if(result.bool){
if(!target) target=result.targets[0];
player.line(target);
target.gain(result.cards,player,'giveAuto');
}
},
group:'panshi_damage',
},
panshi_damage:{
trigger:{source:'damageBegin1'},
forced:true,
logTarget:'player',
filter:function(event,player){
return player.isPhaseUsing()&&event.card&&event.card.name=='sha'&&event.player.hasSkill('cixiao');
},
content:function(){
trigger.num++;
var evt=event.getParent('phaseUse');
if(evt&&evt.player==player) evt.skipped=true;
},
},
xianshuai:{
audio:2,
trigger:{global:'damageEnd'},
forced:true,
filter:function(event,player){
return event.source&&event.source.isAlive()&&!player.hasSkill('xianshuai2');
},
content:function(){
player.addTempSkill('xianshuai2','roundStart');
player.draw();
if(player==trigger.source&&trigger.player.isAlive()){
player.line(trigger.player,'green');
trigger.player.damage();
}
},
},
xianshuai2:{},
shiyuan:{
audio:2,
trigger:{target:'useCardToTargeted'},
frequent:true,
filter:function(event,player){
var num=1;
if(_status.currentPhase&&_status.currentPhase.group=='qun'&&player.hasZhuSkill('yuwei',_status.currentPhase)) num=2;
return player!=event.player&&player.getHistory('gain',function(evt){
return evt.getParent(2).name=='shiyuan'&&evt.cards.length==(2+get.sgn(event.player.hp-player.hp));
}).length<num;
},
content:function(){
player.draw(2+get.sgn(trigger.player.hp-player.hp));
},
},
dushi:{
audio:2,
global:'dushi2',
locked:true,
trigger:{player:'die'},
forceDie:true,
direct:true,
skillAnimation:true,
animationColor:'gray',
content:function(){
'step 0'
player.chooseTarget('请选择【毒逝】的目标','选择一名其他角色,令其获得技能【毒逝】',true,lib.filter.notMe).set('forceDie',true).set('ai',function(target){
return -get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('dushi',target);
target.markSkill('dushi');
target.addSkillLog('dushi');
}
},
intro:{content:'您已经获得弘农王的诅咒'},
},
dushi2:{
mod:{
cardSavable:function(card,player,target){
if(card.name=='tao'&&target!=player&&target.hasSkill('dushi')) return false;
},
},
},
yuwei:{
zhuSkill:true,
ai:{combo:'shiyuan'},
},
decadexushen:{
derivation:'decadezhennan',
audio:'xinfu_xushen',
trigger:{player:'dying'},
limited:true,
skillAnimation:true,
animationColor:'orange',
filter:function(event,player){
return player.hp<1;
},
content:function(){
player.awakenSkill('decadexushen');
player.addSkill('decadezhennan');
player.addTempSkill('decadexushen2');
trigger.decadexushen=true;
player.recover();
},
},
decadexushen2:{
trigger:{player:'dyingAfter'},
forced:true,
popup:false,
charlotte:true,
filter:function(event,player){
return event.decadexushen==true&&!game.hasPlayer(function(current){
return current.name=='guansuo'||current.name2=='guansuo';
});
},
content:function(){
'step 0'
player.chooseTarget(lib.filter.notMe,'许身:是否令一名其他角色选择是否将其武将牌替换为“关索”并令其摸三张牌?').set('ai',function(target){
return get.attitude(_status.event.player,target)-4;
});
'step 1'
if(!result.bool){
event.finish();
return;
}
var target=result.targets[0];
event.target=target;
player.line(target,'fire');
target.chooseBool('许身:是否将自己的一张武将牌替换为“关索”并令'+get.translation(player)+'摸三张牌?');
'step 2'
if(result.bool){
if(target.name2!=undefined){
target.chooseControl(target.name1,target.name2).set('prompt','请选择要更换的武将牌');
}
else event._result={control:target.name};
}
else event.goto(4);
'step 3'
target.reinit(result.control,'guansuo');
if(_status.characterlist){
_status.characterlist.add(result.control);
_status.characterlist.remove('guansuo');
}
'step 4'
target.draw(3);
},
},
decadezhennan:{
audio:'xinfu_zhennan',
trigger:{
global:"useCardToPlayered",
},
filter:function(event,player){
return event.isFirstTarget&&event.targets&&event.targets.length>1&&get.type2(event.card)=='trick';
},
direct:true,
content:function(){
"step 0"
player.chooseTarget(get.prompt('decadezhennan'),'对一名其他角色造成1点伤害',function(card,player,target){
return target!=player;
}).set('ai',function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player);
});
"step 1"
if(result.bool&&result.targets&&result.targets.length){
player.logSkill('decadezhennan',result.targets);
result.targets[0].damage();
}
},
ai:{
expose:0.25,
},
},
yujue:{
audio:2,
derivation:'zhihu',
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countDisabled()<5;
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('###鬻爵###'+lib.translate.yujue_info);
},
chooseControl:function(event,player){
var list=[];
for(var i=1;i<6;i++){
if(!player.isDisabled(i)) list.push('equip'+i);
}
list.push('cancel2');
return list;
},
check:function(event,player){
for(var i=5;i>0;i--){
if(player.isEmpty(i)) return ('equip'+i);
}
return 'cancel2';
},
backup:function(result){
var next=get.copy(lib.skill.yujuex);
next.position=result.control;
return next;
},
},
ai:{
order:1,
result:{
player:function(player){
if(game.hasPlayer(function(target){
if(player==target) return false;
var hs=target.countCards('h');
return hs>2&&get.attitude(player,target)>0;
})) return 1;
return 0;
},
},
},
},
yujuex:{
audio:'yujue',
content:function(){
'step 0'
player.disableEquip(lib.skill.yujue_backup.position);
'step 1'
if(player.isAlive()&&game.hasPlayer(function(current){
return current!=player&&current.countCards('h');
})){
player.chooseTarget(true,'选择一名角色交给你一张牌并获得技能〖执笏〗',function(card,player,target){
if(player==target) return false;
return target.countCards('h')>0;
}).set('ai',function(target){
return get.attitude(_status.event.player,target)*target.countCards('h');
});
}
else event.finish();
'step 2'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.line(target);
target.chooseCard('h',true,'交给'+get.translation(player)+'一张手牌');
}
else event.finish();
'step 3'
if(result.bool&&result.cards&&result.cards.length){
player.gain(result.cards,target,'giveAuto');
target.storage.zhihu_mark=player;
target.addSkill('zhihu');
target.addSkill('zhihu_mark');
}
},
},
zhihu:{
usable:2,
trigger:{source:'damageSource'},
forced:true,
filter:function(event,player){
return player!=event.player;
},
content:function(){
player.draw(2);
},
},
zhihu_mark:{
mark:'character',
intro:{
content:'以$之名,授予汝技能〖执笏〗,直至$的下回合开始为止!',
},
onremove:function(player){
delete player.storage.zhihu_mark;
player.removeSkill('zhihu');
},
trigger:{global:'phaseBeginStart'},
firstDo:true,
charlotte:true,
silent:true,
filter:function(event,player){
return event.player==player.storage.zhihu_mark;
},
content:function(){
player.removeSkill('zhihu_mark');
},
},
tuxing:{
audio:2,
trigger:{player:'disableEquipAfter'},
forced:true,
content:function(){
'step 0'
player.gainMaxHp();
player.recover();
'step 1'
if(player.countDisabled()>=5){
player.loseMaxHp(4);
player.addSkill('tuxing2');
}
}
},
tuxing2:{
audio:'tuxing',
trigger:{source:'damageBegin1'},
forced:true,
charlotte:true,
content:function(){
trigger.num++;
},
mark:true,
intro:{
content:'造成伤害时,此伤害+1',
},
},
gongjian:{
audio:2,
trigger:{player:'useCardToPlayered'},
usable:1,
logTarget:'target',
filter:function(event,player){
if(event.card.name!='sha') return false;
if(event.parent.gongjian_targets&&event.parent.gongjian_targets.filter(function(target){
return event.targets.contains(target);
}).length>0) return event.target.countDiscardableCards(player,'he')>0;
var evt=event.getParent();
var history=player.getAllHistory('useCard',function(evtx){
return evtx.card.name=='sha'
});
var index=history.indexOf(evt);
return index>0&&history[index-1].targets.filter(function(target){
return evt.targets.contains(target);
}).length>0&&event.target.countDiscardableCards(player,'he')>0;
},
check:function(event,player){
return get.attitude(player,event.target)<=0;
},
content:function(){
'step 0'
player.discardPlayerCard(trigger.target,true,'he',2);
'step 1'
if(result.bool){
var cards=result.cards.filter(function(card){
return get.name(card,card.original=='h'?trigger.target:false)=='sha';
});
if(cards.length) player.gain(cards,'gain2','log');
}
},
group:'gongjian_count',
subSkill:{
count:{
trigger:{global:'useCard1'},
silent:true,
firstDo:true,
filter:function(event,player){
return event.card&&event.card.name=='sha';
},
content:function(){
if(player.storage.gongjian) trigger.gongjian_targets=player.storage.gongjian;
player.storage.gongjian=trigger.targets;
},
},
},
},
kuimang:{
audio:2,
trigger:{global:'dieAfter'},
forced:true,
filter:function(event,player){
return player.getAllHistory('sourceDamage',function(target){
return target.player==event.player;
}).length>0;
},
content:function(){
player.draw(2);
},
},
cxliushi:{
audio:2,
enable:'phaseUse',
filter:function(event,player){
return player.countCards('he',{suit:'heart'})>0;
},
filterCard:{suit:'heart'},
position:'he',
filterTarget:function(card,player,target){
return player.canUse('sha',target,false);
},
check:function(card){
var player=_status.event.player;
var next=player.getNext();
var att=get.attitude(player,next);
if(att>0){
var js=next.getCards('j');
if(js.length) return get.judge(js[0])+10-get.value(card);
return 9-get.value(card)
}
return 6-get.value(card);
},
discard:false,
prepare:'throw',
loseTo:'cardPile',
visible:true,
insert:true,
content:function(){
game.log(player,'将',cards,'置于牌堆顶');
player.useCard({name:'sha',isCard:true},false,targets).card.cxliushi=true;
},
group:'cxliushi_damage',
subSkill:{
damage:{
trigger:{source:'damageSource'},
forced:true,
popup:false,
filter:function(event,player){
return event.card&&event.card.cxliushi==true&&event.player.isAlive()&&event.getParent(3).name=='cxliushi';
},
content:function(){
trigger.player.addMark('cxliushi2',1);
trigger.player.addSkill('cxliushi2');
},
},
},
ai:{
order:function(){
return get.order({name:'sha'})-0.4;
},
result:{
target:function(player,target){
var eff=get.effect(target,{name:'sha'},player,target);
var damageEff=get.damageEffect(target,player,player);
if(eff>0) return damageEff>0?0:eff;
if(target.hasSkill('bagua_skill')||target.hasSkill('rw_bagua_skill')||target.hasSkill('bazhen')) return 0;
return eff;
},
},
},
},
cxliushi2:{
mod:{
maxHandcard:function(player,num){
return num-player.countMark('cxliushi2');
},
},
onremove:true,
charlotte:true,
intro:{
name2:'流',
content:'手牌上限-#',
},
},
zhanwan:{
audio:2,
trigger:{global:'phaseDiscardEnd'},
forced:true,
filter:function(event,player){
return event.player.hasSkill('cxliushi2')&&event.player.getHistory('lose',function(evt){
if(evt.type=='discard'&&evt.getParent('phaseDiscard')==event) return true;
}).length>0;
},
logTarget:'player',
content:function(){
trigger.player.removeSkill('cxliushi2');
var num=0;
trigger.player.getHistory('lose',function(evt){
if(evt.type=='discard'&&evt.getParent('phaseDiscard')==trigger) num+=evt.cards2.length;
});
player.draw(num);
},
},
rexiemu:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
direct:true,
filter:function(event,player){
return !game.hasPlayer(function(current){
return current.hasMark('rexiemu');
});
},
content:function(){
'step 0'
player.chooseTarget(get.prompt2('rexiemu'),lib.filter.notMe).set('ai',function(target){
var player=_status.event.player;
return get.attitude(player,target)*Math.sqrt(Math.max(1+player.countCards('h'),1+target.countCards('h')));
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('rexiemu',target);
target.addMark('rexiemu',1);
player.addSkill('rexiemu2');
}
},
intro:{content:'mark'},
ai:{
expose:0.1,
},
},
rexiemu2:{
audio:'rexiemu',
trigger:{global:['loseAfter']},
forced:true,
charlotte:true,
usable:1,
filter:function(event,player){
return (event.player==player||event.player.hasMark('rexiemu'))&&['useCard','respond'].contains(event.getParent().name)&&event.hs&&event.hs.length&&
event.player!=_status.currentPhase&&game.hasPlayer(function(current){
return current.hasMark('rexiemu');
});
},
content:function(){
'step 0'
game.asyncDraw(game.filterPlayer(function(current){
return current==player||current==trigger.player||current.hasMark('rexiemu');
}));
'step 1'
game.delayx();
},
group:'rexiemu3',
},
rexiemu3:{
trigger:{player:'phaseBegin'},
forced:true,
charlotte:true,
silent:true,
firstDo:true,
content:function(){
player.removeSkill('rexiemu2');
game.countPlayer(function(current){
var num=current.countMark('rexiemu');
if(num) current.removeMark('rexiemu',num);
});
},
},
heli:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.hasPlayer(function(current){
return lib.skill.heli.filterTarget(null,player,current);
});
},
filterTarget:function(card,player,target){
return target.countCards('h')<player.countCards('h')
},
content:function(){
'step 0'
if(target.countCards('h')) target.showHandcards();
'step 1'
var list=[];
var cards=[];
for(var i of lib.inpile) list.add(get.type2(i));
for(var i of list){
if(!target.countCards('h',function(card){
return get.type2(card,target)==i;
})){
var card=get.cardPile2(function(card){
return get.type2(card,false)==i;
});
if(card) cards.push(card);
}
}
if(cards.length) target.gain(cards,'gain2','log');
else event.finish();
'step 2'
game.updateRoundNumber();
},
ai:{
order:10,
result:{
target:function(player,target){
return 1/Math.sqrt(1+target.countCards('h'))
},
},
},
},
moying:{
audio:2,
trigger:{
player:'loseAfter',
global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter'],
},
direct:true,
filter:function(event,player){
if(player==_status.currentPhase||event.getParent().name=='useCard') return false;
if(event.name=='gain'&&event.player==player) return false;
var evt=event.getl(player);
return evt&&evt.cards2&&evt.cards2.length==1&&
['equip','trick'].contains(get.type2(evt.cards2[0],(evt.type=='discard'&&evt.hs.contains(evt.cards2[0]))?player:false))&&
!player.hasSkill('moying2');
},
content:function(){
"step 0"
var number=trigger.getl(player).cards2[0].number;
var numbers=[number-2,number-1,number,number+1,number+2].filter(function(number){
return number>=1&&number<=13;
});
if(player.isUnderControl()){
game.swapPlayerAuto(player);
}
var switchToAuto=function(){
_status.imchoosing=false;
event._result={
bool:true,
suit:lib.suit.randomGet(),
number:numbers.randomGet(),
};
if(event.dialog) event.dialog.close();
if(event.control) event.control.close();
};
var chooseButton=function(player,numbers){
var event=_status.event;
player=player||event.player;
if(!event._result) event._result={};
var dialog=ui.create.dialog('是否发动【墨影】?','forcebutton','hidden');
event.dialog=dialog;
dialog.addText('花色');
var table=document.createElement('div');
table.classList.add('add-setting');
table.style.margin='0';
table.style.width='100%';
table.style.position='relative';
var listi=['spade','heart','club','diamond'];
for(var i=0;i<listi.length;i++){
var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
td.link=listi[i];
table.appendChild(td);
td.innerHTML='<span>'+get.translation(listi[i])+'</span>';
td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
if(_status.dragged) return;
if(_status.justdragged) return;
_status.tempNoButton=true;
setTimeout(function(){
_status.tempNoButton=false;
},500);
var link=this.link;
var current=this.parentNode.querySelector('.bluebg');
if(current){
current.classList.remove('bluebg');
}
this.classList.add('bluebg');
event._result.suit=link;
});
}
dialog.content.appendChild(table);
dialog.addText('点数');
var table2=document.createElement('div');
table2.classList.add('add-setting');
table2.style.margin='0';
table2.style.width='100%';
table2.style.position='relative';
for(var i=0;i<numbers.length;i++){
var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
td.link=numbers[i];
table2.appendChild(td);
var num=numbers[i];
switch(num){
case 1:num='A';break;
case 11:num='J';break;
case 12:num='Q';break;
case 13:num='K';break;
}
td.innerHTML='<span>'+num+'</span>';
td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
if(_status.dragged) return;
if(_status.justdragged) return;
_status.tempNoButton=true;
setTimeout(function(){
_status.tempNoButton=false;
},500);
var link=this.link;
var current=this.parentNode.querySelector('.bluebg');
if(current){
current.classList.remove('bluebg');
}
this.classList.add('bluebg');
event._result.number=link;
});
}
dialog.content.appendChild(table2);
dialog.add('  ');
event.dialog.open();
event.switchToAuto=function(){
event._result={
bool:true,
number:numbers.randomGet(),
suit:lib.suit.randomGet(),
};
event.dialog.close();
event.control.close();
game.resume();
_status.imchoosing=false;
};
event.control=ui.create.control('ok','cancel2',function(link){
var result=event._result;
if(link=='cancel2') result.bool=false;
else{
if(!result.number||!result.suit) return;
result.bool=true;
}
event.dialog.close();
event.control.close();
game.resume();
_status.imchoosing=false;
});
for(var i=0;i<event.dialog.buttons.length;i++){
event.dialog.buttons[i].classList.add('selectable');
}
game.pause();
game.countChoose();
};
if(event.isMine()){
chooseButton(player,numbers);
}
else if(event.isOnline()){
event.player.send(chooseButton,event.player,numbers);
event.player.wait();
game.pause();
}
else{
switchToAuto();
}
"step 1"
var map=event.result||result;
if(map.bool){
player.logSkill('moying');
player.addTempSkill('moying2');
var cards=[];
for(var i=0;i<ui.cardPile.childNodes.length;i++){
var card=ui.cardPile.childNodes[i];
if(get.suit(card)==map.suit&&get.number(card)==map.number) cards.push(card);
}
if(cards.length) player.gain(cards,'gain2','log');
}
else event.finish();
"step 2"
game.updateRoundNumber();
},
},
moying2:{},
juanhui:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('juanhui'),lib.filter.notMe).set('ai',function(target){
if(target.isTurnedOver()||target.hasJudge('lebu')) return Math.random();
return (1+target.countCards('h'))*2+Math.random();
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('juanhui',target);
player.storage.juanhui2=target;
player.storage.juanhui3=[];
player.addSkill('juanhui2');
}
},
},
juanhui2:{
charlotte:true,
mark:true,
mod:{
cardUsable:function(card){
if(card.name=='sha'&&_status.event.skill=='juanhui2_backup') return Infinity;
},
},
intro:{
markcount:function(storage,player){
return player.getStorage('juanhui3').length;
},
mark:function(dialog,storage,player){
dialog.addText('记录目标');
dialog.addSmall([storage]);
var vcard=player.getStorage('juanhui3');
if(vcard.length){
dialog.addText('记录卡牌');
dialog.addAuto([vcard,'vcard']);
}
},
content:function(storage,player){
var str='记录目标:'+get.translation(storage);
var vcard=player.getStorage('juanhui3');
if(vcard.length){
str+='<br>记录卡牌:';
for(var i of vcard){
if(i[2]=='sha'&&i[3]) str+=get.translation(i[3]);
str+=get.translation(i[2]);
str+='、';
}
str=str.slice(0,str.length-1);
}
return str;
},
},
onremove:function(player){
delete player.storage.juanhui2;
delete player.storage.juanhui3;
},
group:'juanhui3',
enable:'phaseUse',
filter:function(event,player){
return player.getStorage('juanhui3').length>0&&player.countCards('hs')>0;
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('绢绘',[player.getStorage('juanhui3'),'vcard'],'hidden')
},
filter:function(button,player){
return lib.filter.cardEnabled({
name:button.link[2],
nature:button.link[3],
},player,_status.event.getParent());
},
check:function(button){
var player=_status.event.player;
var card={
name:button.link[2],
nature:button.link[3],
};
if(player.getUseValue(card)>0) return get.order(card);
return -1;
},
backup:function(links,player){
return {
audio:'juanhui',
popname:true,
filterCard:true,
position:'hs',
viewAs:{
name:links[0][2],
nature:links[0][3],
},
check:function(card){
return 6-get.value(card);
},
precontent:function(){
var card=event.result.card;
if(card.name=='sha') event.getParent().addCount=false;
var vcard=player.storage.juanhui3;
for(var i=0;i<vcard.length;i++){
if(vcard[i][2]==card.name) vcard.splice(i--,1);
}
if(vcard.length) player.markSkill('juanhui2');
else{
player.unmarkSkill('juanhui2');
event.getParent().juanhui=true;
}
},
}
},
prompt:function(links,player){
return '将一张手牌当做'+(links[0][2]=='sha'&&links[0][3]?get.translation(links[0][3]):'')+get.translation(links[0][2])+'使用';
},
},
ai:{
order:function(item,player){
var muniu=player.getStorage('juanhui3');
var order=0;
for(var i=0;i<muniu.length;i++){
var card={name:muniu[i][2],nature:muniu[i][3]};
if(player.getUseValue(card)>0){
var order2=get.order(card);
if(order2>order) order=order2
}
}
return order+0.1;
},
result:{
player:1,
},
},
},
juanhui3:{
charlotte:true,
firstDo:true,
trigger:{
global:'useCard2',
player:['phaseUseEnd','phaseUseSkipped','useCardAfter'],
},
silent:true,
filter:function(event,player,name){
if(event.name=='phaseUse') return true;
else if(name=='useCardAfter') return event.getParent().juanhui;
return event.player==player.storage.juanhui2&&event.player.isPhaseUsing()&&
['basic','trick'].contains(get.type(event.card))&&player.getStorage('juanhui3').filter(function(vcard){
return vcard[2]==event.card.name;
}).length==0;
},
content:function(){
if(trigger.name=='phaseUse') player.removeSkill('juanhui2');
else if(event.triggername=='useCardAfter'){
player.recover();
player.drawTo(3);
}
else{
var vcard=[get.type(trigger.card),'',trigger.card.name];
if(trigger.card.nature) vcard.push(trigger.card.nature);
player.storage.juanhui3.push(vcard);
player.markSkill('juanhui2');
}
},
},
mubing:{
audio:2,
audioname:['sp_key_yuri'],
trigger:{player:'phaseUseBegin'},
//direct:true,
frequent:true,
filter:function(event,player){
return player.countCards('he')>0;
},
content:function(){
'step 0'
var num=player.storage.mubing2?4:3;
event.num=num;
event.cards=game.cardsGotoOrdering(get.cards(num)).cards;
game.log(player,'展示了',event.cards);
event.videoId=lib.status.videoId++;
game.broadcastAll(function(player,id,cards){
var str=get.translation(player)+'发动了【募兵】';
var dialog=ui.create.dialog(str,cards);
dialog.videoId=id;
},player,event.videoId,event.cards);
game.addVideo('showCards',player,[get.translation(player)+'发动了【募兵】',get.cardsInfo(event.cards)]);
game.delay(2);
'step 1'
var numa=0;
cards.sort(function(a,b){
return a.number-b.number;
});
for(var i of cards){
if(get.value(i,player)>0) numa+=get.number(i);
}
player.chooseToDiscard([1,Infinity],'h').set('ai',function(card){
var player=_status.event.player;
var numa=_status.event.numa;
//if(card.name!='tengjia'&&get.position(card)=='e'&&get.equipValue(card,player)<=0) return 14;
var num=0;
for(var i of ui.selected.cards){
num+=i.number;
}
if(num>=numa) return 0;
if(card.number+num>=numa) return 15-get.value(card);
if(!ui.selected.cards.length){
var min=_status.event.min;
if(card.number<min&&!player.countCards('h',function(xcard){
return xcard!=card&&card.number+xcard.number>min;
})) return 0;
return card.number;
}
return Math.max(5-get.value(card),card.number);
}).set('prompt',false).set('numa',numa).set('min',cards[0].number);
var func=function(id){
var dialog=get.idDialog(id);
if(dialog) dialog.content.firstChild.innerHTML='请选择要弃置的牌';
};
if(player==game.me) func(event.videoId);
else if(player.isOnline()) player.send(func,event.videoId);
'step 2'
if(!result.bool){
return;
}
var numx=0;
for(var i of result.cards){
numx+=get.number(i);
}
event.numx=numx;
var next=player.chooseButton([0,num]);
next.set('dialog',event.videoId);
next.set('filterButton',function(button){
var num=0
for(var i=0;i<ui.selected.buttons.length;i++){
num+=get.number(ui.selected.buttons[i].link);
}
return (num+get.number(button.link)<=_status.event.maxNum);
});
next.set('maxNum',event.numx);
next.set('ai',function(button){
return get.value(button.link,_status.event.player);
});
var func=function(id){
var dialog=get.idDialog(id);
if(dialog) dialog.content.firstChild.innerHTML='请选择要获得的牌';
};
if(player==game.me) func(event.videoId);
else if(player.isOnline()) player.send(func,event.videoId);
'step 3'
if(!result.bool) event.cards=[];
else event.cards=result.links;
'step 4'
game.broadcastAll('closeDialog',event.videoId);
if(!cards.length){
event.finish();
return;
}
player.gain(cards,'log','gain2');
if(!player.storage.mubing2){
event.finish();
return;
}
event.given=[];
'step 5'
var hs=player.getCards('h');
cards=cards.filter(function(card){
return hs.contains(card);
});
if(cards.length&&game.hasPlayer(function(current){
return current!=player&&!event.given.contains(current);
})) player.chooseCardTarget({
prompt:'是否将获得的牌中的任意张交给其他角色?',
selectCard:[1,cards.length],
filterCard:function(card){
return _status.event.cards.contains(card);
},
filterTarget:function(card,player,target){
return target!=player&&!_status.event.given.contains(target);
},
cards:cards,
given:event.given,
ai1:function(card){
return -1;
},
});
else event.finish();
'step 6'
if(result.bool){
var target=result.targets[0];
var cards=result.cards;
event.given.push(target);
event.cards.removeArray(cards);
player.line(target,'green');
target.gain(cards,player,'giveAuto');
event.goto(5);
}
},
},
ziqu:{
audio:2,
audioname:['sp_key_yuri'],
trigger:{source:'damageBegin2'},
filter:function(event,player){
return event.player!=player&&!player.getStorage('ziqu').contains(event.player)&&
event.player.countCards('he')>0;
},
check:function(event,player){
var target=event.player;
var eff=get.damageEffect(target,player,player);
if(get.attitude(player,target)>0){
if(eff>=0) return false;
return true;
}
if(eff<=0) return true;
if(target.hp==1) return false;
if(event.num>1) return false;
var cards=target.getCards('he');
for(var i=0;i<cards.length;i++){
if(get.number(cards[i])>10) return true;
}
return false;
},
logTarget:'player',
content:function(){
'step 0'
trigger.cancel();
if(!player.storage.ziqu) player.storage.ziqu=[];
player.storage.ziqu.push(trigger.player);
player.markSkill('ziqu');
trigger.player.chooseCard(true,'he',function(card,player){
return !player.countCards('he',function(cardx){
return cardx.number>card.number;
});
});
'step 1'
if(result.bool&&result.cards&&result.cards.length) player.gain(result.cards,trigger.player,'giveAuto');
},
intro:{content:'已对$发动过'},
},
mubing_rewrite:{
mark:true,
intro:{
content:'出牌阶段开始时,你可以展示牌堆顶的四张牌。你可弃置任意张手牌,并可获得任意张点数之和不大于你弃置的牌点数之和的牌。然后你可将以此法获得的牌以任意方式交给其他角色。',
},
},
diaoling:{
audio:2,
audioname:['sp_key_yuri'],
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
juexingji:true,
skillAnimation:true,
animationColor:'metal',
filter:function(event,player){
var num=0;
player.getAllHistory('gain',function(evt){
var evt2=evt.getParent();
if(evt2.name=='mubing'&&evt2.player==player) num+=evt.cards.filter(function(card){
return card.name=='sha'||get.subtype(card,false)=='equip1'||(get.type2(card,false)=='trick'&&get.tag({name:card.name},'damage'));
}).length;
});
return num>=6;
},
content:function(){
player.awakenSkill('diaoling');
player.storage.mubing2=true;
player.markSkill('mubing_rewrite');
player.chooseDrawRecover(2,true);
},
derivation:'mubing_rewrite',
},
remeibu:{
audio:"meibu",
trigger:{
global:"phaseUseBegin",
},
filter:function(event,player){
return event.player!=player&&event.player.isAlive()&&event.player.inRange(player)&&player.countCards('he')>0;
},
direct:true,
derivation:["rezhixi"],
checkx:function(event,player){
if(get.attitude(player,event.player)>=0) return false;
return event.player.countCards('h')>event.player.hp;
},
content:function(){
"step 0"
var check=lib.skill.new_meibu.checkx(trigger,player);
player.chooseToDiscard(get.prompt2('remeibu',trigger.player),'he').set('ai',function(card){
if(_status.event.check) return 6-get.value(card);
return 0;
}).set('check',check).set('logSkill',['remeibu',trigger.player]);
"step 1"
if(result.bool){
var target=trigger.player;
var card=result.cards[0];
player.line(target,'green');
player.markAuto('remeibu_gain',[get.suit(card,player)]);
player.addTempSkill('remeibu_gain');
target.addTempSkill('rezhixi','phaseUseEnd');
}
},
ai:{
expose:0.2,
},
subSkill:{
gain:{
trigger:{global:'loseAfter'},
forced:true,
charlotte:true,
popup:false,
onremove:true,
filter:function(event,player){
return event.getParent(3).name=='rezhixi'&&player.getStorage('remeibu_gain').contains(get.suit(event.cards[0],event.player))&&get.position(event.cards[0])=='d';
},
content:function(){
player.gain(trigger.cards[0],'gain2');
},
},
},
},
remumu:{
audio:"mumu",
trigger:{
player:"phaseUseBegin",
},
direct:true,
filter:function(event,player){
return game.hasPlayer(function(current){
return current.countCards('e')>0;
});
},
content:function(){
'step 0'
player.chooseTarget(get.prompt2('remumu'),function(card,player,target){
return target.countCards('e')>0;
}).set('ai',function(target){
var player=_status.event.player,att=get.attitude(player,target),es=target.getCards('e'),val=0;
for(var i of es){
var eff=-(get.value(i,target)-0.1)*att;
if(eff>val) val=eff;
}
return eff;
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('remumu',target);
if(player==target) event._result={index:1};
else{
var str=get.translation(target);
player.chooseControl().set('choiceList',[
'弃置'+str+'装备区的一张牌且本阶段使用【杀】的次数上限+1',
'获得'+str+'装备区的一张牌且本阶段使用【杀】的次数上限-1',
]).set('ai',function(){
var player=_status.event.player;
if(player.countCards('hs',function(card){
return get.name(card,player)=='sha'&&player.hasValueTarget(card);
})<Math.max(1,player.getCardUsable('sha'))) return 1;
return 0;
});
}
}
else event.finish();
'step 2'
if(result.index==0){
player.addTempSkill('remumu3','phaseUseAfter');
player.discardPlayerCard(target,'e',true);
}
else{
player.addTempSkill('remumu2','phaseUseAfter');
player.gainPlayerCard(target,'e',true);
}
},
},
remumu2:{
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num-1;
},
},
},
remumu3:{
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num+1;
},
},
},
rezhixi:{
trigger:{
player:"useCard",
},
forced:true,
filter:function(event,player){
return (event.card.name=='sha'||get.type(event.card)=='trick')&&player.countCards('h')>0;
},
content:function(){
player.chooseToDiscard('h',true);
},
},
//新岩泽(划掉)留赞
refenyin:{
audio:2,
trigger:{global:['loseAfter','cardsDiscardAfter']},
forced:true,
filter:function(event,player){
if(player!=_status.currentPhase) return false;
if(event.name=='lose'&&event.position!=ui.discardPile) return false;
var list=[];
var num=event.cards.length;
for(var i=0;i<event.cards.length;i++){
var card=event.cards[i];
list.add(get.suit(card,(event.cards2&&event.cards2.contains(card))?event.player:false));
}
game.getGlobalHistory('cardMove',function(evt){
if(evt==event||(evt.name!='lose'&&evt.name!='cardsDiscard')) return false;
if(evt.name=='lose'&&evt.position!=ui.discardPile) return false;
num+=evt.cards.length;
for(var i=0;i<evt.cards.length;i++){
var card=evt.cards[i];
list.remove(get.suit(card,(evt.cards2&&evt.cards2.contains(card))?evt.player:false));
}
},event);
player.storage.refenyin_mark2=num;
return list.length>0;
},
content:function(){
var list=[];
var list2=[];
for(var i=0;i<trigger.cards.length;i++){
var card=trigger.cards[i];
var suit=get.suit(card,(trigger.cards2&&trigger.cards2.contains(card))?trigger.player:false);
list.add(suit);
list2.add(suit);
}
game.getGlobalHistory('cardMove',function(evt){
if(evt==trigger||(evt.name!='lose'&&evt.name!='cardsDiscard')) return false;
if(evt.name=='lose'&&evt.position!=ui.discardPile) return false;
for(var i=0;i<evt.cards.length;i++){
var card=evt.cards[i];
var suit=get.suit(card,(evt.cards2&&evt.cards2.contains(card))?evt.player:false);
list.remove(suit);
list2.add(suit);
}
},trigger);
list2.sort();
player.draw(list.length);
player.storage.refenyin_mark=list2;
player.addTempSkill('refenyin_mark');
player.markSkill('refenyin_mark');
},
subSkill:{
mark:{
onremove:function(player){
delete player.storage.refenyin_mark;
delete player.storage.refenyin_mark2;
},
intro:{
content:function(s,p){
var str='本回合已经进入过弃牌堆的卡牌的花色:';
for(var i=0;i<s.length;i++){
str+=get.translation(s[i]);
}
str+='<br>本回合进入过弃牌堆的牌数:'
str+=p.storage.refenyin_mark2;
return str;
},
},
},
},
},
liji:{
enable:'phaseUse',
audio:2,
filter:function(event,player){
return (player.getStat().skill.liji||0)<(event.liji_num||0);
},
onChooseToUse:function(event){
if(game.online) return;
var num=0;
var evt2=event.getParent();
if(!evt2.liji_all) evt2.liji_all=(game.players.length>4?8:4);
game.getGlobalHistory('cardMove',function(evt){
if(evt.name=='cardsDiscard'||(evt.name=='lose'&&evt.position==ui.discardPile)) num+=evt.cards.length;
});
event.set('liji_num',Math.floor(num/evt2.liji_all));
},
filterCard:true,
position:'he',
check:function(card){
var val=get.value(card);
if(!_status.event.player.getStorage('refenyin_mark').contains(get.suit(card))) return 12-val;
return 8-val;
},
filterTarget:lib.filter.notMe,
content:function(){
target.damage('nocard');
},
ai:{
order:1,
result:{
target:-1.5
},
tag:{
damage:1
},
},
},
//文鸯
xinlvli:{
audio:'lvli',
trigger:{player:'damageEnd',source:'damageSource'},
filter:function(event,player,name){
var stat=player.getStat().skill;
if(!stat.xinlvli) stat.xinlvli=0;
if(name=='damageEnd'&&!player.storage.beishui) return false;
if(stat.xinlvli>1) return false;
if(stat.xinlvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false;
if(player.hp==player.countCards('h')) return false;
if(player.hp<player.countCards('h')&&player.isHealthy()) return false;
return true;
},
content:function(){
var stat=player.getStat().skill;
stat.xinlvli++;
var num=player.hp-player.countCards('h');
if(num>0) player.draw(num);
else player.recover(-num);
},
//group:'lvli3',
},
lvli:{
audio:2,
init:function(player,skill){
player.storage[skill]=0;
},
enable:'chooseToUse',
filter:function(event,player){
if(player.storage.lvli>1) return false;
if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false;
return event.type!='wuxie'&&event.type!='respondShan';
},
chooseButton:{
dialog:function(event,player){
var list=[];
for(var i=0;i<lib.inpile.length;i++){
var name=lib.inpile[i];
if(name=='wuxie') continue;
if(name=='sha'){
list.push(['基本','','sha']);
list.push(['基本','','sha','fire']);
list.push(['基本','','sha','thunder']);
}
else if(get.type(name)=='trick') list.push(['锦囊','',name]);
else if(get.type(name)=='basic') list.push(['基本','',name]);
}
return ui.create.dialog(event.lvli6?get.prompt('lvli'):'膂力',[list,'vcard']);
},
filter:function(button,player){
var evt=_status.event.getParent();
if(evt&&typeof evt.filterCard=='function') return evt.filterCard({name:button.link[2]},player,evt);
return lib.filter.filterCard({name:button.link[2]},player,_status.event.getParent());
},
check:function(button){
var player=_status.event.player;
if(player.countCards('h',button.link[2])) return 0;
if(_status.event.getParent().type!='phase'&&!_status.event.getParent().lvli6) return 1;
return player.getUseValue({name:button.link[2]});
},
backup:function(links,player){
return {
filterCard:function(){return false;},
audio:'lvli',
selectCard:-1,
check:function(card){
return 1;
},
viewAs:{name:links[0][2],nature:links[0][3],isCard:true},
}
},
prompt:function(links,player){
return '请选择'+(get.translation(links[0][3])||'')+get.translation(links[0][2])+'的目标';
}
},
ai:{
order:4,
result:{
player:1,
},
threaten:2.9,
fireAttack:true,
},
group:['lvli2','lvli3','lvli4','lvli5','lvli6']
},
lvli2:{
trigger:{player:['useCardBefore','respondBefore']},
forced:true,
popup:false,
priority:35,
filter:function(event,player){
return event.skill=='lvli_backup'||event.skill=='lvli5'||event.skill=='lvli4';
},
content:function(){
'step 0'
player.logSkill('lvli');
player.storage.lvli++;
player.popup(trigger.card.name,trigger.name=='useCard'?'metal':'wood');
'step 1'
var random=0.5+player.countCards('e')*0.1;
if(get.isLuckyStar(player)) random=1;
if(random>=Math.random()){
player.popup('洗具');
}
else{
player.popup('杯具');
trigger.cancel();
if(!trigger.getParent().lvli6){
trigger.getParent().goto(0);
}
game.broadcastAll(function(str){
var dialog=ui.create.dialog(str);
dialog.classList.add('center');
setTimeout(function(){
dialog.close();
},1000);
},get.translation(player)+'声明的'+get.translation(trigger.card.name)+'并没有生效');
game.log('然而什么都没有发生');
game.delay(2);
}
},
},
lvli3:{
trigger:{global:'phaseBefore'},
forced:true,
silent:true,
popup:false,
content:function(){
player.storage.lvli=0;
},
},
lvli4:{
log:false,
enable:'chooseToUse',
viewAsFilter:function(player){
if(player.storage.lvli>1) return false;
if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false;
return true;
},
filterCard:function(){return false},
selectCard:-1,
viewAs:{name:'shan'},
ai:{
skillTagFilter:function(player){
if(player.storage.lvli>1) return false;
if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false;
return true;
},
threaten:1.5,
respondShan:true,
}
},
lvli5:{
log:false,
enable:'chooseToUse',
viewAsFilter:function(player){
if(player.storage.lvli>1) return false;
if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false;
return true;
},
filterCard:function(){return false},
selectCard:-1,
viewAs:{name:'wuxie'},
},
lvli6:{
trigger:{player:'damageEnd'},
direct:true,
filter:function(event,player){
if(!player.storage.beishui) return false;
if(player.storage.lvli>1) return false;
if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false;
return true;
},
content:function(){
var next=player.chooseToUse();
next.set('norestore',true);
next.set('_backupevent','lvli');
next.backup('lvli');
next.set('lvli6',true);
},
},
choujue:{
derivation:['beishui','qingjiao'],
trigger:{global:'phaseAfter'},
audio:2,
skillAnimation:true,
animationColor:'water',
unique:true,
juexingji:true,
forced:true,
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=false;
},
filter:function(event,player){
if(player.storage.choujue) return false;
return Math.abs(player.hp-player.countCards('h'))>=3;
},
content:function(){
player.awakenSkill('choujue');
player.storage.choujue=true;
player.loseMaxHp();
player.addSkill('beishui');
},
},
beishui:{
trigger:{player:'phaseZhunbeiBegin'},
audio:2,
skillAnimation:'epic',
animationColor:'thunder',
unique:true,
juexingji:true,
forced:true,
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=false;
},
filter:function(event,player){
if(player.storage.beishui) return false;
return Math.min(player.hp,player.countCards('h'))<2;
},
content:function(){
player.awakenSkill('beishui');
player.storage.beishui=true;
player.loseMaxHp();
player.addSkill('qingjiao');
},
},
qingjiao:{
trigger:{player:'phaseUseBegin'},
filter:function(event,player){
return (ui.cardPile.hasChildNodes()||ui.discardPile.hasChildNodes());
},
//check:function(event,player){
// return player.countCards('h')<=player.hp;
//},
content:function(){
'step 0'
player.discard(player.getCards('h'));
'step 1'
var evt=trigger.getParent();
if(evt&&evt.getParent&&!evt.qingjiao){
evt.qingjiao=true;
var next=game.createEvent('qingjiao_discard',false,evt.getParent());
next.player=player;
next.setContent(function(){
var hs=player.getCards('he');
if(hs.length) player.discard(hs);
});
}
'step 2'
var list=[];
var typelist=[];
var getType=function(card){
var sub=get.subtype(card);
if(sub) return sub;
return card.name;
};
for(var i=0;i<ui.cardPile.childElementCount;i++){
var node=ui.cardPile.childNodes[i];
var typex=getType(node);
if(!typelist.contains(typex)){
list.push(node);
typelist.push(typex);
if(list.length>=8) break;
}
}
if(list.length<8){
for(var i=0;i<ui.discardPile.childElementCount;i++){
var node=ui.discardPile.childNodes[i];
var typex=getType(node);
if(!typelist.contains(typex)){
list.push(node);
typelist.push(typex);
if(list.length>=8) break;
}
}
}
player.gain(list,'gain2');
'step 3'
game.updateRoundNumber();
},
},
//王双
spzhuilie:{
mod:{
targetInRange:function(card){
if(card.name=='sha') return true;
},
},
trigger:{player:'useCardToTargeted'},
filter:function(event,player){
return event.card&&event.card.name=='sha'&&!player.inRange(event.target);
},
forced:true,
logTarget:'target',
content:function(){
'step 0'
player.judge(function(card){
var type=get.subtype(card);
return ['equip1','equip4','equip3','equip6'].contains(type)?6: -6;
switch(type){
case 'equip': return 4;
case 'trick': return -4;
default: return 0;
}
}).judge2=function(result){
return result.bool;
};
'step 1'
if(trigger.getParent().addCount!==false){
trigger.getParent().addCount=false;
var stat=player.getStat();
if(stat&&stat.card&&stat.card.sha) stat.card.sha--;
}
if(result.bool===true){
var map=trigger.customArgs;
var id=trigger.target.playerid;
if(!map[id]) map[id]={};
if(typeof map[id].extraDamage!='number') map[id].extraDamage=0;
map[id].extraDamage+=trigger.target.hp-1;
}
else if(result.bool===false) player.loseHp();
},
},
spzhuilie2:{
onremove:true,
intro:{
content:'使用【杀】的次数上限+#',
},
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num+player.countMark('spzhuilie2');
},
},
},
//花鬘
manyi:{audio:2},
hmmanyi:{
trigger:{target:'useCardToBefore'},
forced:true,
audio:'manyi',
filter:function(event,player){
return event.card.name=='nanman';
},
content:function(){
trigger.cancel();
},
},
mansi:{
audio:2,
group:'mansi_viewas',
trigger:{global:'damageEnd'},
filter:function(event,player){
return event.card&&event.card.name=='nanman';
},
frequent:true,
content:function(){
player.draw();
player.addMark('mansi',1,false);
},
intro:{content:'已因此技能获得了#张牌'},
},
mansi_viewas:{
audio:'mansi',
position:'h',
enable:'phaseUse',
usable:1,
filterCard:true,
selectCard:-1,
filter:function(event,player){
var hs=player.getCards('h');
if(!hs.length) return false;
for(var i=0;i<hs.length;i++){
var mod2=game.checkMod(hs[i],player,'unchanged','cardEnabled2',player);
if(mod2===false) return false;
}
return true;
},
viewAs:{name:'nanman'},
ai:{order:0.1},
},
souying:{
audio:2,
trigger:{
player:'useCardToPlayered',
target:'useCardToTargeted',
},
direct:true,
filter:function(event,player,name){
if(!player.countCards('he')||player.hasSkill('souying2')) return false;
if(!event.targets||event.targets.length!=1||event.player==event.target) return false;
if(event.card.name!='sha'&&get.type(event.card)!='trick') return false;
if(name=='useCardToPlayered'){
if(!event.cards.filterInD().length) return false;
var target=event.target;
return player.getHistory('useCard',function(evt){
return evt.targets&&evt.targets.contains(target);
}).indexOf(event.getParent())>0;
}
else{
var source=event.player;
return source.getHistory('useCard',function(evt){
return evt.targets&&evt.targets.contains(player);
}).indexOf(event.getParent())>0;
}
},
content:function(){
'step 0'
var next=player.chooseToDiscard('he');
var prompt;
if(event.triggername=='useCardToTargeted'){
event.target=trigger.player;
prompt='令'+get.translation(trigger.card)+'对你无效';
next.set('goon',-get.effect(player,trigger.card,trigger.player,player));
}
else{
event.target=trigger.targets[0];
prompt='弃置一张牌,并获得'+get.translation(trigger.cards.filterInD());
next.set('goon',get.value(trigger.cards.filterInD()));
}
next.set('prompt',get.prompt('souying',event.target));
next.set('prompt2',prompt)
next.set('ai',function(card){
return _status.event.goon-get.value(card);
});
next.set('logSkill',['souying',event.target]);
'step 1'
if(result.bool){
player.addTempSkill('souying2');
if(event.triggername=='useCardToPlayered') player.gain(trigger.cards.filterInD());
else trigger.excluded.add(player);
}
},
ai:{
expose:0.25,
},
},
souying2:{},
zhanyuan:{
unique:true,
audio:2,
derivation:'hmxili',
skillAnimation:true,
animationColor:'soil',
juexingji:true,
forced:true,
filter:function(event,player){
return player.countMark('mansi')>7;
},
trigger:{player:'phaseZhunbeiBegin'},
content:function(){
'step 0'
player.awakenSkill('zhanyuan');
player.gainMaxHp();
player.recover();
'step 1'
player.chooseTarget('是否失去〖蛮嗣〗,令一名其他男性角色和自己一同获得技能〖系力〗?',function(card,player,target){
return target!=player&&target.sex=='male';
}).ai=function(target){
return get.attitude(_status.event.player,target);
};
'step 2'
if(result.bool){
var target=result.targets[0];
player.line(target,'fire');
player.addSkill('hmxili');
target.addSkill('hmxili');
player.removeSkill('mansi');
}
},
},
hmxili:{
trigger:{global:'damageBegin1'},
direct:true,
audio:2,
filter:function(event,player){
return event.source&&event.source!=player&&event.source==_status.currentPhase&&event.source.hasSkill('hmxili')&&!event.player.hasSkill('hmxili')&&player.countCards('he')>0&&!player.hasSkill('hmxili2');
},
content:function(){
'step 0'
player.chooseToDiscard('是否弃置一张牌,令'+get.translation(trigger.source)+'对'+get.translation(trigger.player)+'的伤害+1且你与其各摸两张牌','he').set('logSkill',['hmxili',trigger.player]).ai=function(card){
return 9-get.value(card);
};
'step 1'
if(result.bool){
game.asyncDraw([trigger.source,player],2);
trigger.num++;
player.addTempSkill('hmxili2');
}
else event.finish();
'step 2'
game.delayx();
},
},
hmxili2:{},
//说出吾名吓汝一跳
xuxie:{
audio:2,
trigger:{player:'phaseUseBegin'},
logTarget:function(event,player){
return game.filterPlayer(function(current){
return get.distance(player,current)<=1;
}).sortBySeat();
},
check:function(event,player){
if(player.isHealthy()) return false;
var list=game.filterPlayer(function(current){
return get.distance(player,current)<=1;
});
var draw=0;
var discard=0;
var num=2/player.getDamagedHp();
while(list.length){
var target=list.shift();
var att=get.attitude(player,target);
if(att>0){
draw++;
if(target.countDiscardableCards(player,'he')>0) discard--;
}
if(att==0){
draw--;
if(target.countDiscardableCards(player,'he')>0) discard--;
}
if(att<0){
draw--;
if(target.countDiscardableCards(player,'he')>0) discard++;
}
}
return draw>=num||discard>=num;
},
content:function(){
'step 0'
player.loseMaxHp();
'step 1'
var targets=game.filterPlayer(function(current){
return get.distance(player,current)<=1;
}).sortBySeat();
if(!targets.length) event.finish();
else{
event.targets=targets;
player.chooseControl().set('choiceList',[
'弃置'+get.translation(targets)+'的各一张牌',
'令'+get.translation(targets)+'各摸一张牌',
]).set('ai',function(){
var player=_status.event.player;
var list=_status.event.getParent().targets.slice(0);
var draw=0;
var discard=0;
while(list.length){
var target=list.shift();
var att=get.attitude(player,target);
if(att>0){
draw++;
if(target.countDiscardableCards(player,'he')>0) discard--;
}
if(att<0){
draw--;
if(target.countDiscardableCards(player,'he')>0) discard++;
}
}
if(draw>discard) return 1;
return 0;
});
}
'step 2'
event.index=result.index;
if(result.index==1){
game.asyncDraw(targets);
}
else event.goto(4);
'step 3'
game.delay();
event.finish();
'step 4'
var target=targets.shift();
if(target.countDiscardableCards(player,'he')>0) player.discardPlayerCard(target,'he',true);
if(targets.length) event.redo();
},
group:'xuxie_add',
},
xuxie_add:{
audio:'xuxie',
trigger:{player:'phaseUseEnd'},
forced:true,
locked:false,
filter:function(event,player){
return !game.hasPlayer(function(current){
return current.maxHp<player.maxHp;
});
},
content:function(){
player.gainMaxHp();
},
},
//新潘凤
xinkuangfu:{
enable:'phaseUse',
usable:1,
audio:2,
delay:false,
filterTarget:function(card,player,target){
if(player==target) return player.countCards('e',function(card){
return lib.filter.cardDiscardable(card,player);
})>0;
return target.countDiscardableCards(player,'e')>0;
},
filter:function(event,player){
return game.hasPlayer(function(current){
return current.countCards('e')>0;
});
},
content:function(){
'step 0'
if(player==target) player.chooseToDiscard('e',true);
else player.discardPlayerCard(target,'e',true);
'step 1'
player.chooseUseTarget('sha',true,false,'nodistance');
'step 2'
var bool=game.hasPlayer2(function(current){
return current.getHistory('damage',function(evt){
return evt.getParent(4)==event;
}).length>0
});
if(player==target&&bool) player.draw(2);
else if(player!=target&&!bool) player.chooseToDiscard('h',2,true);
},
ai:{
order:function(){
return get.order({name:'sha'})+0.3;
},
result:{
target:function(player,target){
var att=get.attitude(player,target);
var max=0;
var min=1;
target.countCards('e',function(card){
var val=get.value(card,target);
if(val>max) max=val;
if(val<min) min=val;
});
if(att>0&&min<=0) return target.hasSkillTag('noe')?3:1;
if(att<0&&max>0){
if(target.hasSkillTag('noe')) return max>6?(-max/3):0;
return -max;
}
return 0;
},
},
},
},
//吴兰雷铜
wlcuorui:{
audio:2,
trigger:{player:'phaseUseBegin'},
direct:true,
filter:function(event,player){
return game.hasPlayer(function(current){
return current.isFriendOf(player)&&current.countDiscardableCards(player,'hej')>0;
});
},
content:function(){
'step 0'
player.chooseTarget(function(card,player,target){
return target.isFriendOf(player)&&target.countDiscardableCards(player,'hej')>0;
},get.prompt2('wlcuorui')).set('ai',function(target){
if(target.countCards('e',function(card){
return card.name!='tengjia'&&get.value(card,target)<=0;
})) return 10;
if(target.countCards('j',function(card){
return get.effect(target,{name:card.viewAs||card.name},target,target)<0;
})) return 10;
return Math.random()+0.2-1/target.countCards('hej');
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('wlcuorui',target);
player.discardPlayerCard(target,'hej',true);
}
else event.finish();
'step 2'
if(!result.cards||!result.cards.length){
event.finish();
return;
}
var color=get.color(result.cards[0],result.cards[0].original=='j'?false:target);
event.color=color;
var list=[];
if(game.hasPlayer(function(current){
return current.isEnemyOf(player)&&current.countCards('h');
})) list.push('展示手牌');
if(game.hasPlayer(function(current){
return current.isEnemyOf(player)&&current.countCards('e',{color:color});
})) list.push('弃置装备');
if(!list.length){
event.finish();
return;
}
if(list.length==1) event._result={control:list[0]};
else player.chooseControl(list).set('prompt','挫锐:展示对手的至多两张手牌,或弃置对手装备区内至多两张'+get.translation(color)+'牌').set('ai',function(){
var player=_status.event.player;
var color=_status.event.getParent().color;
if(game.countPlayer(function(current){
if(!current.isEnemyOf(player)) return false;
return current.countCards('e',function(card){
return get.color(card)==color&&get.value(card)>0;
});
})>1) return 1;
return 0;
});
'step 3'
if(result.control=='弃置装备') event.goto(5);
else{
var dialog=['请选择要展示的牌'];
var list=game.filterPlayer(function(current){
return current.isEnemyOf(player)&&current.countCards('h');
}).sortBySeat();
for(var i of list){
dialog.push('<div class="text center">'+get.translation(i)+'</div>');
if(player.hasSkillTag('viewHandcard',null,i,true)) dialog.push(i.getCards('h'));
else dialog.push([i.getCards('h'),'blank']);
}
player.chooseButton([1,2],true).set('createDialog',dialog).set('ai',function(button){
var color=(get.color(button.link)==_status.event.getParent().color);
return color?Math.random():0.35;
});
}
'step 4'
player.showCards(result.links);
var map={};
var map2={};
for(var i of result.links){
var id=get.owner(i).playerid;
if(!map[id]) map[id]=[];
map[id].push(i);
if(get.color(i)!=event.color) continue;
if(!map2[id]) map2[id]=[];
map2[id].push(i);
}
for(var i in map){
var source=(_status.connectMode?lib.playerOL:game.playerMap)[i];
if(map2[i]) player.gain(map2[i],source,'bySelf','give');
player.line(source);
game.log(player,'展示了',source,'的',map[i]);
}
event.next.sort(function(a,b){
return lib.sort.seat(a.source||a.player,b.source||b.player);
});
event.finish();
'step 5'
var dialog=['请选择要弃置的牌'];
var list=game.filterPlayer(function(current){
return current.isEnemyOf(player)&&current.countCards('e',function(card){
return get.color(card)==event.color;
});
}).sortBySeat();
for(var i of list){
dialog.push('<div class="text center">'+get.translation(i)+'</div>');
dialog.push(i.getCards('e',function(card){
return get.color(card)==event.color;
}));
}
player.chooseButton([1,2],true).set('createDialog',dialog).set('ai',function(button){
var owner=get.owner(button.link);
return get.value(button.link,owner)
});
'step 6'
var map={};
for(var i of result.links){
if(get.color(i)!=event.color) continue;
var id=get.owner(i).playerid;
if(!map[id]) map[id]=[];
map[id].push(i);
}
for(var i in map){
(_status.connectMode?lib.playerOL:game.playerMap)[i].discard(map[i],'notBySelf');
}
event.next.sort(function(a,b){
return lib.sort.seat(a.player,b.player);
});
},
},
kuiji:{
audio:2,
usable:1,
enable:"phaseUse",
filter:function(event,player){
if(player.hasJudge('bingliang')) return false;
return player.countCards('hes',function(card){
return get.color(card)=='black'&&get.type(card)=='basic';
})>0;
},
viewAs:{name:'bingliang'},
position:"hes",
filterCard:function(card,player,event){
return get.color(card)=='black'&&get.type(card)=='basic'&&player.canAddJudge({name:'bingliang',cards:[card]});
},
selectTarget:-1,
filterTarget:function(card,player,target){
return player==target;
},
check:function(card){
return 9-get.value(card);
},
onuse:function(links,player){
var next=game.createEvent('kuiji_content',false,_status.event.getParent());
next.player=player;
next.setContent(lib.skill.kuiji.kuiji_content);
},
kuiji_content:function(){
'step 0'
player.draw();
'step 1'
player.chooseTarget('选择一名体力值最大的敌方角色对其造成2点伤害',function(card,player,target){
return target.isEnemyOf(player)&&!game.hasPlayer(function(current){
return current.isEnemyOf(player)&&current.hp>target.hp;
});
}).set('ai',function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player)
});
'step 2'
if(result.bool){
var target=result.targets[0];
player.line(target);
target.damage(2);
}
},
ai:{
result:{
target:1,
},
order:12,
},
group:'kuiji_dying',
subSkill:{
dying:{
trigger:{global:'dying'},
forced:true,
popup:false,
filter:function(event,player){
var evt=event.getParent(2);
if(!evt||evt.name!='kuiji_content'||evt.player!=player) return false;
var list=game.filterPlayer(function(current){
return current.isFriendOf(player);
}).sort(function(a,b){
return a.hp-b.hp;
});
return (list.length==1||list[0].hp<list[1].hp)&&list[0].isDamaged();
},
content:function(){
var list=game.filterPlayer(function(current){
return current.isFriendOf(player);
}).sort(function(a,b){
return a.hp-b.hp;
})[0];
player.logSkill('kuiji',list);
list.recover();
},
},
},
},
//官渡之战
xiying:{
trigger:{player:'phaseUseBegin'},
audio:2,
direct:true,
filter:function(event,player){
return player.countCards('h',function(card){
return _status.connectMode||get.type(card)!='basic';
})>0;
},
content:function(){
'step 0'
var list=game.filterPlayer(function(current){
return current!=player;
});
list.sortBySeat();
event.targets=list;
player.chooseToDiscard(get.prompt2('xiying'),'h',function(card){
return get.type(card)!='basic';
}).set('logSkill',['xiying',list]).set('ai',function(card){
return _status.event.val-get.value(card)
}).set('val',function(){
return 4*Math.sqrt(game.countPlayer(function(current){
return get.attitude(player,current)<0&&current.countCards('he')>0;
}));
}());
'step 1'
if(!result.bool) event.finish();
else player.addTempSkill('xiying_gain');
'step 2'
var target=targets.shift();
event.target=target;
if(target.isAlive()) target.chooseToDiscard('he','弃置一张牌,或本回合内不能使用或打出牌').set('ai',function(card){
var player=_status.event.player;
var source=_status.event.getTrigger().player;
if(get.attitude(source,player)>0) return -1;
if(_status.event.getRand()>0.5) return 5-get.value(card);
return -1;
});
'step 3'
if(target.isAlive()&&!result.bool) target.addTempSkill('xiying2');
if(targets.length) event.goto(2);
},
ai:{
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
return arg.target.hasSkill('xiying2');
},
},
subSkill:{
gain:{
trigger:{player:'phaseJieshuBegin'},
forced:true,
charlotte:true,
filter:function(event,player){
return player.getHistory('sourceDamage',function(evt){
return evt.isPhaseUsing(player);
}).length>0;
},
content:function(){
var card=get.cardPile2(function(card){
var type=get.type(card,false);
if(type!='basic'&&type!='trick') return false;
return get.tag(card,'damage')>0;
});
if(card) player.gain(card,'gain2');
},
},
},
},
xiying2:{
mark:true,
intro:{content:'本回合内不能使用或打出牌'},
mod:{
cardEnabled2:function(card){
return false;
},
},
},
gangzhi:{
audio:2,
trigger:{
player:'damageBefore',
source:'damageBefore',
},
forced:true,
content:function(){
trigger.cancel();
trigger.player.loseHp(trigger.num);
},
ai:{
jueqing:true,
},
},
beizhan:{
trigger:{player:'phaseJieshuBegin'},
direct:true,
audio:2,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('beizhan')).set('ai',function(target){
var player=_status.event.player;
var att=get.attitude(player,target);
var hs=target.countCards('h');
var ht=target.maxHp;
if(hs>=ht&&target.isMaxHandcard()) return -att*hs;
if(hs<ht&&game.hasPlayer(function(current){
return current.countCards('h')>ht;
})) return att*2*(ht-hs);
return 0;
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('beizhan',target);
target.drawTo(Math.min(5,target.maxHp))
target.addSkill('beizhan2');
}
},
ai:{
expose:0.25,
},
},
beizhan2:{
trigger:{player:'phaseBegin'},
silent:true,
firstDo:true,
content:function(){
player.removeSkill('beizhan2');
if(player.isMaxHandcard()) player.addTempSkill('zishou2');
},
mark:true,
intro:{content:'回合开始时,若手牌数为全场最多,则回合内不能使用牌指定其他角色为目标'},
},
fenglve:{
audio:2,
trigger:{
player:"phaseUseBegin",
},
direct:true,
content:function(){
'step 0'
var goon=player.hasCard(function(card){
if(get.position(card)!="h") return false;
var val=get.value(card);
if(val<0) return true;
if(val<=5){
return card.number>=12;
}
if(val<=6){
return card.number>=13;
}
return false;
});
player.chooseTarget(get.prompt2('fenglve'),function(card,player,target){
return player.canCompare(target);
}).set('ai',function(target){
if(!_status.event.goon) return 0;
return -get.attitude(player,target)*(1+target.countCards('e'))/(1+target.countCards('j'));
}).set('goon',goon);
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('fenglve',target);
player.chooseToCompare(target);
}
else{
event.finish();
}
'step 2'
if(result.bool){
var num=0;
if(target.countCards('h')) num++;
if(target.countCards('e')) num++;
if(target.countCards('j')) num++;
if(num){
event.gainner=player;
event.giver=target;
target.choosePlayerCard(target,num,'hej',true).set('filterButton',function(button){
for(var i=0;i<ui.selected.buttons.length;i++){
if(get.position(button.link)==get.position(ui.selected.buttons[i].link)) return false;
}
return true;
}).set('prompt','选择交给'+get.translation(event.gainner)+'的牌');
}
else event.finish();
}
else{
if(player.countCards('he')){
event.gainner=target;
event.giver=player;
player.choosePlayerCard(player,true,'he').set('prompt','选择交给'+get.translation(event.gainner)+'的牌');
}
else event.finish();
}
'step 3'
event.gainner.gain(result.links,'giveAuto',event.giver)
},
group:'fenglve2',
ai:{
expose:0.25,
},
},
fenglve2:{
trigger:{
player:'chooseToCompareAfter',
target:'chooseToCompareAfter',
},
check:function(event,player){
var card,target;
if(player==event.player){
card=event.card1;
target=event.target;
}
else{
card=event.card2;
target=event.player;
}
return get.attitude(player,target)*get.value(card,target,'raw')>0;
},
filter:function(event,player){
if(event.targets) return false;
var card,target;
if(player==event.player){
card=event.card1;
target=event.target;
}
else{
card=event.card2;
target=event.player;
}
return get.position(card,true)=='o';
},
prompt:function(event,player){
var card,target;
if(player==event.player){
card=event.card1;
target=event.target;
}
else{
card=event.card2;
target=event.player;
}
return '是否发动【锋略】,令'+get.translation(target)+'获得'+get.translation(card)+''
},
logTarget:function(event,player){
var target;
if(player==event.player){
target=event.target;
}
else{
target=event.player;
}
return target;
},
content:function(){
var card,target;
if(player==trigger.player){
card=trigger.card1;
target=trigger.target;
}
else{
card=trigger.card2;
target=trigger.player;
}
target.gain(card,'gain2','log');
},
},
mouzhi:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('h')>0
},
filterCard:true,
filterTarget:function(card,player,target){
if(target.storage.mouzhi2&&target.storage.mouzhi2.contains(player)) return false;
return target!=player;
},
delay:0,
lose:false,
discard:false,
check:function(card){
if(card.name=='du') return 20;
var player=_status.event.player;
var useval=player.getUseValue(card);
var maxval=0;
game.countPlayer(function(current){
if(current!=player&&!current.hasSkillTag('nogain')&&get.attitude(player,current)>0){
var temp=current.getUseValue(card);
if(temp>maxval) maxval=temp;
}
});
if(maxval>0&&get.tag(card,'damage')) return 15;
if(maxval>useval) return 10;
if(player.needsToDiscard()) return 1/Math.max(0.1,get.value(card));
return -1;
},
content:function(){
target.gain(cards,player,'giveAuto');
target.addTempSkill('mouzhi2',{player:'phaseEnd'});
target.storage.mouzhi2.add(player);
target.storage.mouzhi2.sortBySeat(target);
target.markSkill('mouzhi2');
},
ai:{
order:10,
result:{
target:function(player,target){
if(ui.selected.cards.length){
var card=ui.selected.cards[0];
if(card.name=='du') return target.hasSkill('lucia_duqu')?1:-1;
var t=target.getUseValue(card);
var p=player.getUseValue(card);
if(t>p) return 2;
if(t>0) return 1.5
if(player.needsToDiscard()) return 1;
return 0;
}
return 0;
},
},
},
},
mouzhi2:{
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
onremove:true,
trigger:{source:'damageSource'},
forced:true,
intro:{
content:'出牌阶段内第一次对一名其他角色造成伤害时,$摸一张牌',
},
filter:function(event,player){
var evt2=event.getParent('phaseUse');
if(!evt2||evt2.player!=player) return false;
var history=event.player.getHistory('damage',function(evt){
return evt.source==player&&evt.getParent('phaseUse')==evt2;
});
return history[0]==event;
},
content:function(){
'step 0'
game.asyncDraw(player.storage.mouzhi2);
'step 1'
game.delay();
},
},
yuanlve:{
enable:'phaseUse',
usable:1,
audio:2,
filter:function(event,player){
return player.countCards('h',function(card){
return get.type(card)!='equip';
})
},
filterCard:function(card){
return get.type(card)!='equip';
},
filterTarget:lib.filter.notMe,
delay:false,
discard:false,
lose:false,
check:function(card){
if(card.name=='du') return 20;
var player=_status.event.player;
var useval=player.getUseValue(card);
var maxval=0;
game.countPlayer(function(current){
if(current!=player&&!current.hasSkillTag('nogain')&&get.attitude(player,current)>0){
var temp=current.getUseValue(card);
if(temp>maxval) maxval=temp;
}
});
if(maxval>useval) return 15;
if(maxval>0) return 10;
if(player.needsToDiscard()) return 1/Math.max(0.1,get.value(card));
return -1;
},
content:function(){
'step 0'
target.gain(cards,player,'giveAuto');
'step 1'
target.chooseUseTarget(cards[0]);
'step 2'
if(result.bool) player.draw();
},
ai:{
order:10,
result:{
target:function(player,target){
if(ui.selected.cards.length){
var card=ui.selected.cards[0];
if(card.name=='du') return target.hasSkill('lucia_duqu')?1:-1;
var t=target.getUseValue(card);
var p=player.getUseValue(card);
if(t>p) return 2;
if(t>0) return 1.5
if(player.needsToDiscard()) return 1;
return 0;
}
return 0;
},
},
},
},
//吕旷吕翔和淳于琼和官渡哔哔机
spshicai:{
audio:2,
enable:'phaseUse',
position:'he',
filter:function(event,player){
return !player.storage.spshicai2||!player.getCards('h').contains(player.storage.spshicai2);
},
filterCard:true,
prompt:function(){
var str='弃置一张牌,然后获得';
if(get.itemtype(_status.pileTop)=='card') str+=get.translation(_status.pileTop);
else str+='牌堆顶的一张牌';
return str;
},
check:function(card){
var player=_status.event.player;
var cardx=_status.pileTop;
if(get.itemtype(cardx)!='card') return 0;
var val=player.getUseValue(cardx,null,true);
if(!val) return 0;
var val2=player.getUseValue(card,null,true);
return (val-val2)/Math.max(0.1,get.value(card));
},
content:function(){
var card=get.cards()[0];
player.storage.spshicai2=card;
player.gain(card,'draw');
game.log(player,'获得了牌堆顶的一张牌');
},
group:'spshicai_mark',
ai:{
order:1,
result:{player:1},
},
},
spshicai_mark:{
trigger:{player:'phaseUseBegin'},
silent:true,
firstDo:true,
content:function(){
player.addTempSkill('spshicai2','phaseUseEnd');
},
},
spshicai2:{
onremove:true,
mark:true,
intro:{
mark:function(dialog,content,player){
if(player!=game.me) return get.translation(player)+'观看牌堆中...';
if(get.itemtype(_status.pileTop)!='card') return '牌堆顶无牌';
dialog.add([_status.pileTop]);
},
},
},
spfushi:{
group:['zezhu','chenggong'],
derivation:['zezhu','chenggong'],
locked:true,
},
zezhu:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
var enemy=0;
var friend=0;
var zhu=0;
for(var i of game.players){
if(i.isEnemyOf(player)) enemy++;
else friend++;
if(i!=player&&i.isZhu) zhu++;
}
return zhu>0&&enemy<friend;
},
filterTarget:function(card,player,target){
return target!=player&&target.isZhu;
},
selectTarget:-1,
multiline:true,
multitarget:true,
content:function(){
'step 0'
event.targets.sortBySeat();
event.targets2=event.targets.slice(0);
'step 1'
var target=event.targets2.shift();
if(target.countGainableCards(player,'he')>0) player.gainPlayerCard(target,'he',true);
else player.draw();
if(event.targets2.length) event.redo();
'step 2'
if(player.countCards('he')>=targets.length){
player.chooseCard('he',true,'依次选择'+get.cnNumber(targets.length)+'张牌,分别交给'+get.translation(targets),targets.length).set('ai',function(card){
var target=_status.event.getParent().targets[ui.selected.cards.length];
var player=_status.event.player;
return get.attitude(player,target)*get.value(card,target);
});
}
else event.finish();
'step 3'
for(var i=0;i<targets.length;i++){
targets[i].gain(result.cards[i],player,'giveAuto');
}
},
ai:{
order:6,
result:{player:1},
},
},
chenggong:{
audio:2,
trigger:{global:'useCardToPlayered'},
filter:function(event,player){
if(!(event.isFirstTarget&&event.targets&&event.targets.length>1&&event.player.isAlive())) return false;
var enemy=0;
var friend=0;
for(var i of game.players){
if(i.isEnemyOf(player)) enemy++;
else friend++;
}
return enemy>friend;
},
check:function(event,player){
return get.attitude(player,event.player)>0;
},
logTarget:'player',
content:function(){
trigger.player.draw();
},
},
cangchu:{
trigger:{
global:'gameDrawAfter',
player:['damageEnd','enterGame'],
},
audio:2,
forced:true,
filter:function(event,player){
if(event.name!='damage') return true;
return event.nature=='fire'&&player.countMark('cangchu')>0;
},
content:function(){
if(trigger.name!='damage') player.addMark('cangchu',3);
else{
player.removeMark('cangchu',Math.min(trigger.num,player.countMark('cangchu')));
if(!player.hasMark('cangchu')) event.trigger('cangchuAwaken');
}
},
marktext:'粮',
intro:{
name2:'粮',
content:'mark',
},
ai:{
threaten:function(player,target){
return 1+target.countMark('cangchu')/2;
},
effect:{
target:function(card,player,target,current){
if(target.hasMark('cangchu')){
if(card.name=='sha'){
if(lib.skill.global.contains('huoshaowuchao')||card.nature=='fire'||player.hasSkill('zhuque_skill')) return 2;
}
if(get.tag(card,'fireDamage')&&current<0) return 2;
}
}
},
},
},
sushou:{
trigger:{player:'phaseDiscardBegin'},
frequent:true,
audio:2,
content:function(){
'step 0'
player.draw(1+player.countMark('cangchu'));
'step 1'
var num=Math.min(player.countCards('h'),game.countPlayer(function(target){
return target!=player&&target.isFriendOf(player);
}));
if(num){
player.chooseCardTarget({
prompt:'是否将任意张手牌交给其他己方角色?',
prompt2:'操作提示:先按顺序选中所有要给出的手牌,然后再按顺序选择等量的目标角色',
selectCard:[1,num],
selectTarget:function(){
return ui.selected.cards.length;
},
filterTarget:function(card,player,target){
return target!=player&&target.isFriendOf(player);
},
complexSelect:true,
ai1:function(card){
if(card.name=='shan') return 1;
return Math.random();
},
ai2:function(target){
return Math.sqrt(5-Math.max(4,target.countCards('h')))*get.attitude(_status.event.player,target);
},
});
}
else event.finish();
'step 2'
if(result.bool){
while(result.cards.length){
var target=result.targets.shift();
var card=result.cards.shift();
target.gain(card,player);
player.$giveAuto(card,target);
}
event.next.sort(function(a,b){
return lib.sort.seat(a.player,b.player);
});
}
else event.finish();
'step 3'
game.delay();
},
},
liangying:{
trigger:{
global:'phaseDrawBegin2',
player:'cangchuAwaken',
},
forced:true,
audio:1,
logTarget:function(event,player){
if(event.name=='phaseDraw') return event.player;
return game.filterPlayer(function(current){
return current.isEnemyOf(player);
});
},
filter:function(event,player){
if(event.name=='cangchu') return true;
return player.hasMark('cangchu')&&!event.numFixed&&event.player.isFriendOf(player);
},
content:function(){
'step 0'
if(trigger.name=='cangchu'){
player.loseMaxHp();
var list=game.filterPlayer(function(current){
return current.isEnemyOf(player);
});
if(list.length){
game.asyncDraw(list,2);
}
}
else{
trigger.num++;
event.finish();
}
'step 1'
game.delay();
},
},
liehou:{
enable:'phaseUse',
usable:1,
audio:2,
filterTarget:function(card,player,target){
return player.inRange(target)&&target.countCards('h');
},
content:function(){
'step 0'
target.chooseCard('h',true,'交给'+get.translation(player)+'一张牌');
'step 1'
if(result.bool){
player.gain(result.cards,target,'giveAuto');
}
else event.finish();
'step 2'
if(player.countCards('h')&&game.hasPlayer(function(current){
return current!=target&&player.inRange(current);
})){
player.chooseCardTarget({
position:'h',
filterCard:true,
filterTarget:function(card,player,target){
return target!=_status.event.getParent().target&&player.inRange(target);
},
forced:true,
prompt:'将一张手牌交给一名攻击范围内的其他角色',
ai1:function(card){
var player=_status.event.player;
if(get.name(card)=='du') return 20;
if(game.hasPlayer(function(current){
return current!=_status.event.getParent().target&&player.inRange(current)&&get.attitude(player,current)>0&&current.getUseValue(card)>player.getUseValue(card)&&current.getUseValue(card)>player.getUseValue(card);
})) return 12;
if(game.hasPlayer(function(current){
return current!=player&&get.attitude(player,current)>0;
})){
if(card.name=='wuxie') return 11;
if(card.name=='shan'&&player.countCards('h','shan')>1) return 9
}
return 6/Math.max(1,get.value(card));
},
ai2:function(target){
var player=_status.event.player;
var card=ui.selected.cards[0];
var att=get.attitude(player,target);
if(card.name=='du') return -6*att;
if(att>0){
if(get.position(card)=='h'&&target.getUseValue(card)>player.getUseValue(card)) return 4*att;
if(get.value(card,target)>get.value(card,player)) return 2*att;
return 1.2*att;
}
return -att*Math.min(4,target.countCards('he'))/6;
},
});
}
else event.finish();
'step 3'
if(result.bool) result.targets[0].gain(result.cards,player,'giveAuto')
},
ai:{
order:6,
result:{
target:-1,
},
},
},
qigong:{
trigger:{player:'shaMiss'},
direct:true,
audio:2,
filter:function(event,player){
return event.target.isIn()&&game.hasPlayer(function(current){
return current!=event.target&&current.canUse('sha',event.target,false);
})
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('qigong'),'令一名角色可再对'+get.translation(trigger.target)+'使用一张【杀】',function(card,player,target){
var source=_status.event.getTrigger().target;
return target!=source&&target.canUse('sha',source,false);
}).set('ai',function(target){
var player=_status.event.player,card={name:'sha'},source=_status.event.getTrigger().target;
if(target.hasSha()){
var eff1=get.effect(source,card,target,target);
if(eff1>0) return get.effect(source,card,target,player);
}
return (target!=player)?(Math.random()*get.attitude(player,target)):0;
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('qigong',target);
target.addTempSkill('qigong_ai','chooseToUseEnd');
target.chooseToUse('是否再对'+get.translation(trigger.target)+'使用一张【杀】?',function(card,player,event){
if(get.name(card)!='sha') return false;
return lib.filter.filterCard.apply(this,arguments);
},trigger.target,-1).set('addCount',false).set('oncard',function(){
_status.event.directHit.addArray(game.players);
});
}
},
subSkill:{
ai:{
ai:{
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
return arg.card&&arg.card.name=='sha';
},
},
},
},
},
//和沙摩柯一起上线的新服三将
spjiedao:{
audio:2,
trigger:{
source:"damageBegin1",
},
filter:function(event,player){
return player.isDamaged()&&!player.getHistory('sourceDamage').length;
},
logTarget:'player',
direct:true,
check:function(trigger,player){
if(get.attitude(player,trigger.player)>=-1) return false;
return !trigger.player.hasSkillTag('filterDamage',null,{
player:player,
card:trigger.card,
});
},
content:function(){
"step 0"
var num=player.getDamagedHp();
var map={};
var list=[];
for(var i=1;i<=num;i++){
var cn=get.cnNumber(i,true);
map[cn]=i;
list.push(cn);
}
event.map=map;
player.chooseControl(list,'cancel2',function(){
if(!lib.skill.spjiedao.check(_status.event.getTrigger(),player)) return 'cancel2';
return get.cnNumber(_status.event.goon,true);
}).set('prompt',get.prompt2('spjiedao',trigger.player)).set('goon',num);
"step 1"
if(result.control=='cancel2') return;
player.logSkill('spjiedao',trigger.player);
var num=event.map[result.control]||1;
trigger.num+=num;
var next=game.createEvent('spjiedao_after',null,trigger.getParent());
next.player=player;
next.target=trigger.player;
next.num=num;
next.setContent(function(){
if(target.isAlive()) player.chooseToDiscard(num,true,'he');
});
},
},
biaozhao:{
audio:2,
intro:{
content:"cards",
},
trigger:{
player:"phaseJieshuBegin",
},
direct:true,
filter:function(event,player){
return player.countCards('he')>0&&!player.storage.biaozhao;
},
content:function(){
'step 0'
player.chooseCard('he',get.prompt2('biaozhao')).ai=function(card){
return 6-get.value(card);
}
'step 1'
if(result.bool){
player.addSkill('biaozhao2');
player.addSkill('biaozhao3');
player.logSkill('biaozhao');
player.lose(result.cards,ui.special,'toStorage','visible');
player.$give(result.cards,player,false);
player.storage.biaozhao=result.cards;
player.markSkill('biaozhao');
}
},
ai:{
notemp:true,
},
},
"biaozhao2":{
trigger:{
global:["loseAfter","cardsDiscardAfter"],
},
charlotte:true,
forced:true,
audio:"biaozhao",
filter:function(event,player){
if(!player.storage.biaozhao) return false;
var suit=get.suit(player.storage.biaozhao[0]);
var num=get.number(player.storage.biaozhao[0]);
for(var i=0;i<event.cards.length;i++){
if(get.position(event.cards[i],true)=='d'&&get.suit(event.cards[i])==suit
&&get.number(event.cards[i])==num) return true;
}
return false;
},
content:function(){
"step 0"
var card=player.storage.biaozhao[0];
delete player.storage.biaozhao;
if(trigger.getParent().name=='discard'){
trigger.player.gain(card,'fromStorage');
player.$give(card,trigger.player);
}
else{
player.$throw(card);
game.cardsDiscard(card);
}
"step 1"
player.unmarkSkill('biaozhao');
player.loseHp();
},
},
"biaozhao3":{
trigger:{
player:"phaseZhunbeiBegin",
},
forced:true,
charlotte:true,
audio:"biaozhao",
filter:function(event,player){
return player.storage.biaozhao!=undefined;
},
content:function(){
"step 0"
var card=player.storage.biaozhao[0];
delete player.storage.biaozhao;
player.unmarkSkill('biaozhao');
game.cardsDiscard(card);
event.num=0;
game.countPlayer(function(current){
if(current.countCards('h')>event.num) event.num=current.countCards('h');
});
player.chooseTarget('是否令一名角色将手牌摸至'+event.num+'张并回复1点体力').ai=function(target){
var num=Math.min(event.num-target.countCards('h'),5);
if(target.isDamaged()) num++;
return num*get.attitude(_status.event.player,target);
};
"step 1"
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
var draw=Math.min(num-target.countCards('h'),5);
if(draw) target.draw(draw);
target.recover();
}
},
},
yechou:{
audio:2,
trigger:{
player:"die",
},
direct:true,
forceDie:true,
skillAnimation:true,
animationColor:'wood',
content:function(){
"step 0"
player.chooseTarget(get.prompt2('yechou'),function(card,player,target){
return player!=target&&target.getDamagedHp()>1
}).set('forceDie',true).set('ai',function(target){
var num=get.attitude(_status.event.player,target);
return -num;
});
"step 1"
if(result.bool){
var target=result.targets[0];
player.logSkill('yechou',target);
player.line(target,'green');
target.addTempSkill('yechou2',{player:'phaseZhunbeiBegin'});
}
},
ai:{
expose:0.5,
},
},
"yechou2":{
mark:true,
marktext:"仇",
intro:{
content:"每个回合结束时失去1点体力直到回合开始",
},
trigger:{
global:"phaseAfter",
},
forced:true,
content:function(){player.loseHp()},
},
yanjiao:{
audio:2,
ai:{
order:10,
result:{
player:1,
target:1.1,
},
},
enable:"phaseUse",
usable:1,
filterTarget:function(card,player,target){
return target!=player;
},
content:function(){
"step 0"
var num=4;
if(player.storage.xingshen){
num+=player.storage.xingshen;
player.storage.xingshen=0;
player.unmarkSkill('xingshen');
}
if(player.storage.olxingshen){
num+=player.storage.olxingshen;
player.storage.olxingshen=0;
player.unmarkSkill('olxingshen');
}
event.cards=get.cards(num);
player.showCards(event.cards);
"step 1"
event.getedResult=lib.skill.yanjiao.getResult(cards);
if(!event.getedResult.length){
game.cardsDiscard(cards);
player.addTempSkill('yanjiao2');
event.finish();
}
"step 2"
target.chooseControl("自动分配","手动分配").set("prompt","【严教】:是否让系统自动分配方案?").ai=function(){
return 0;
};
"step 3"
if(result.control=="手动分配"){
event.map=[cards,[],[]];
_status.noclearcountdown=true;
event.goto(8);
}
else if(!_status.connectMode){
var choiceList=ui.create.dialog('请选择一种方案','hidden','forcebutton');
for(var i=0;i<event.getedResult.length;i++){
var str='<div class="popup text" style="width:calc(100% - 10px);display:inline-block">方案'+get.cnNumber(i+1,true);
str+='<br>第一组:';
var current=event.getedResult[i];
str+=get.translation(current[0]);
str+='<br>第二组:';
str+=get.translation(current[1]);
if(current[2].length){
str+='<br>剩余:';
str+=get.translation(current[2]);
}
str+='</div>';
var next=choiceList.add(str);
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
next.firstChild.link=i;
for(var j in lib.element.button){
next[j]=lib.element.button[j];
}
choiceList.buttons.add(next.firstChild);
}
event.choiceList=choiceList;
target.chooseButton(choiceList,true,function(button){
return true;
});
}
"step 4"
if(result.bool&&result.links) event.index=result.links[0];
else event.index=0;
event.togain=event.getedResult[event.index];
target.showCards(event.togain[0],get.translation(target)+'分出的第一份牌');
"step 5"
target.showCards(event.togain[1],get.translation(target)+'分出的第二份牌');
"step 6"
target.chooseControl().set('choiceList',[
'获得'+get.translation(event.togain[0]),
'获得'+get.translation(event.togain[1])
]).ai=function(){return Math.random()<0.5?1:0};
"step 7"
target.gain(event.togain[result.index],'gain2');
player.gain(event.togain[1-result.index],'gain2');
if(event.togain[2].length){
game.cardsDiscard(event.togain[2]);
if(event.togain[2].length>1) player.addTempSkill('yanjiao2');
}
event.finish();
"step 8"
event.videoId=lib.status.videoId++;
var dialogx=['严教:选择要移动的牌'];
var name=["未分配","第一组","第二组"];
for(var i=0;i<event.map.length;i++){
if(event.map[i].length>0){
dialogx.push('<div class="text center">'+name[i]+'</div>');
dialogx.push(event.map[i])
}
}
if(target.isOnline2()){
target.send(function(dialogx,id){
ui.create.dialog.apply(null,dialogx).videoId=id;
},dialogx,event.videoId);
}
event.dialog=ui.create.dialog.apply(null,dialogx);
event.dialog.videoId=event.videoId;
if(target!=game.me||_status.auto){
event.dialog.style.display='none';
}
var next=target.chooseButton();
next.set('selectButton',function(){
if(!_status.event.map[1].length||!_status.event.map[2].length) return 1;
var num1=0;
for(var i=0;i<_status.event.map[1].length;i++){
num1+=_status.event.map[1][i].number;
}
var num2=0;
for(var j=0;j<_status.event.map[2].length;j++){
num2+=_status.event.map[2][j].number;
}
return (num1==num2?[0,1]:1);
});
next.set('map',event.map);
next.set('dialog',event.videoId);
next.set('ai',function(){return -1});
next.set('forceAuto',true);
"step 9"
if(result.bool){
if(!result.links.length){
if(target.isOnline2()){
target.send('closeDialog',event.videoId);
}
event.dialog.close();
delete _status.noclearcountdown;
if(!_status.noclearcountdown){
game.stopCountChoose();
}
event.togain=[event.map[1],event.map[2],event.map[0]];
target.showCards(event.togain[0],get.translation(target)+'分出的第一份牌');
event.goto(5);
}
else{
event.card=result.links[0];
var controls=["取消分组","移动到第一组","移动到第二组"];
for(var i=0;i<event.map.length;i++){
if(event.map[i].contains(event.card)){
controls.splice(i,1);
break;
}
}
var func=function(card,id){
var dialog=get.idDialog(id);
if(dialog){
for(var i=0;i<dialog.buttons.length;i++){
if(dialog.buttons[i].link==card){
dialog.buttons[i].classList.add('glow');
}
else{
dialog.buttons[i].classList.add('unselectable');
}
}
}
}
if(target.isOnline2()){
target.send(func,event.card,event.videoId);
}
else if(target==game.me&&!_status.auto){
func(event.card,event.videoId);
}
target.chooseControl(controls);
}
}
else{
if(target.isOnline2()){
target.send('closeDialog',event.videoId);
}
event.dialog.close();
delete _status.noclearcountdown;
if(!_status.noclearcountdown){
game.stopCountChoose();
}
game.cardsDiscard(cards);
player.addTempSkill('yanjiao2');
event.finish();
}
"step 10"
if(target.isOnline2()){
target.send('closeDialog',event.videoId);
}
event.dialog.close();
var position={
"取消分组":0,
"移动到第一组":1,
"移动到第二组":2,
}[result.control||"取消分组"];
for(var i=0;i<event.map.length;i++){
if(event.map[i].contains(card)){
event.map[i].remove(card);
event.map[position].push(card);
break;
}
}
event.goto(8);
},
getResult:function(cards){
var cl=cards.length;
var maxmium=Math.pow(3,cl);
var filter=function(list){
if(!list[1].length||!list[0].length) return false;
var num1=0;
for(var i=0;i<list[1].length;i++){
num1+=list[1][i].number;
}
var num2=0;
for(var j=0;j<list[0].length;j++){
num2+=list[0][j].number;
}
return num1==num2
};
var results=[];
for(var i=0;i<maxmium;i++){
var result=[[],[],[]];
for(var j=0;j<cl;j++){
result[Math.floor((i%Math.pow(3,j+1))/Math.pow(3,j))].push(cards[j]);
}
if(filter(result)) results.push(result);
}
var filterSame=function(list1,list2){
if(list1[1].length==list2[0].length&&list1[0].length==list2[1].length){
for(var i=0;i<list1[0].length;i++){
if(!list2[1].contains(list1[0][i])) return false;
}
for(var i=0;i<list1[1].length;i++){
if(!list2[0].contains(list1[1][i])) return false;
}
return true;
}
return false;
}
for(var i=0;i<results.length;i++){
for(var j=i+1;j<results.length;j++){
if(filterSame(results[i],results[j])) results.splice(j--,1);
}
}
results.sort(function(a,b){
return a[2].length-b[2].length;
});
return results;
},
},
"yanjiao2":{
marktext:"教",
mark:true,
intro:{
content:"本回合手牌上限-1",
},
mod:{
maxHandcard:function(player,num){
return num-1;
},
},
},
xingshen:{
audio:2,
intro:{
content:"下一次发动【严教】时多展示#张牌",
},
trigger:{
player:"damageEnd",
},
frequent:true,
content:function(){
player.draw(player.isMinHandcard()?2:1);
if(!player.storage.xingshen) player.storage.xingshen=0;
player.storage.xingshen+=player.isMinHp()?2:1;
if(player.storage.xingshen>4) player.storage.xingshen=4;
player.markSkill('xingshen');
},
},
pingjian:{
audio:2,
trigger:{
player:['damageEnd','phaseJieshuBegin'],
},
initList:function(){
var list=[];
if(_status.connectMode) var list=get.charactersOL();
else{
var list=[];
for(var i in lib.character){
if(lib.filter.characterDisabled2(i)||lib.filter.characterDisabled(i)) continue;
list.push(i);
}
}
game.countPlayer2(function(current){
list.remove(current.name);
list.remove(current.name1);
list.remove(current.name2);
if(current.storage.rehuashen&&current.storage.rehuashen.character) list.removeArray(current.storage.rehuashen.character)
});
_status.characterlist=list;
},
frequent:true,
content:function(){
'step 0'
if(!player.storage.pingjian) player.storage.pingjian=[];
event._result={bool:true};
'step 1'
if(result.bool){
if(!_status.characterlist){
lib.skill.pingjian.initList();
}
var list=[];
var skills=[];
var map=[];
_status.characterlist.randomSort();
var name2=event.triggername;
for(var i=0;i<_status.characterlist.length;i++){
var name=_status.characterlist[i];
if(name.indexOf('zuoci')!=-1||name.indexOf('xushao')!=-1) continue;
var skills2=lib.character[name][3];
for(var j=0;j<skills2.length;j++){
if(player.storage.pingjian.contains(skills2[j])) continue;
if(skills.contains(skills2[j])){
list.add(name);
if(!map[name]) map[name]=[];
map[name].push(skills2[j]);
skills.add(skills2[j]);
continue;
}
var list2=[skills2[j]];
game.expandSkills(list2);
for(var k=0;k<list2.length;k++){
var info=lib.skill[list2[k]];
if(!info||!info.trigger||!info.trigger.player||info.silent||info.limited||info.juexingji||info.zhuanhuanji||info.hiddenSkill||info.dutySkill) continue;
if(info.trigger.player==name2||Array.isArray(info.trigger.player)&&info.trigger.player.contains(name2)){
if(info.init||info.ai&&(info.ai.combo||info.ai.notemp||info.ai.neg)) continue;
if(info.filter){
try{
var bool=info.filter(trigger,player,name2);
if(!bool) continue;
}
catch(e){
continue;
}
}
list.add(name);
if(!map[name]) map[name]=[];
map[name].push(skills2[j]);
skills.add(skills2[j]);
break;
}
}
}
if(list.length>2) break;
}
if(!skills.length){
//player.draw();
event.finish();
}
else{
//skills.unshift('摸一张牌');
player.chooseControl(skills).set('dialog',['请选择要发动的技能',[list,'character']]).set('ai',function(){return 0});
}
}
else event.finish();
'step 2'
if(result.control=='摸一张牌'){
player.draw();
return;
}
player.storage.pingjian.add(result.control);
player.addTempSkill(result.control,event.triggername=='damageEnd'?'damageAfter':'phaseJieshu');
},
group:'pingjian_use',
phaseUse_special:['xinfu_lingren'],
},
pingjian_use:{
audio:'pingjian',
enable:'phaseUse',
usable:1,
position:'he',
content:function(){
'step 0'
if(!player.storage.pingjian) player.storage.pingjian=[];
event._result={bool:true};
'step 1'
if(result.bool){
var list=[];
var skills=[];
var map=[];
if(!_status.characterlist){
lib.skill.pingjian.initList();
}
_status.characterlist.randomSort();
for(var i=0;i<_status.characterlist.length;i++){
var name=_status.characterlist[i];
if(name.indexOf('zuoci')!=-1||name.indexOf('xushao')!=-1) continue;
var skills2=lib.character[name][3];
for(var j=0;j<skills2.length;j++){
if(player.storage.pingjian.contains(skills2[j])) continue;
if(skills.contains(skills2[j])||lib.skill.pingjian.phaseUse_special.contains(skills2[j])){
list.add(name);
if(!map[name]) map[name]=[];
map[name].push(skills2[j]);
skills.add(skills2[j]);
continue;
}
var list2=[skills2[j]];
game.expandSkills(list2);
for(var k=0;k<list2.length;k++){
var info=lib.skill[list2[k]];
if(!info||!info.enable||info.viewAs||info.limited||info.juexingji||info.zhuanhuanji||info.hiddenSkill||info.dutySkill) continue;
if(info.enable=='phaseUse'||Array.isArray(info.enable)&&info.enable.contains('phaseUse')){
if(info.init||info.onChooseToUse||info.ai&&(info.ai.combo||info.ai.notemp||info.ai.neg)) continue;
if(info.filter){
try{
var bool=info.filter(event.getParent(2),player);
if(!bool) continue;
}
catch(e){
continue;
}
}
list.add(name);
if(!map[name]) map[name]=[];
map[name].push(skills2[j]);
skills.add(skills2[j]);
break;
}
}
}
if(list.length>2) break;
}
if(!skills.length){
//player.draw();
event.finish();
}
else{
//skills.unshift('摸一张牌');
player.chooseControl(skills).set('dialog',['请选择要发动的技能',[list,'character']]).set('ai',function(){return 0});
}
}
else event.finish();
'step 2'
if(result.control=='摸一张牌'){
player.draw();
return;
}
player.storage.pingjian.add(result.control);
player.addTempSkill(result.control,'phaseUseEnd');
player.addTempSkill('pingjian_temp','phaseUseEnd');
player.storage.pingjian_temp=result.control;
//event.getParent(2).goto(0);
},
ai:{order:10,result:{player:1}},
},
pingjian_temp:{
onremove:true,
trigger:{player:['useSkillBegin','useCard1']},
silent:true,
firstDo:true,
filter:function(event,player){
var info=lib.skill[event.skill];
if(!info) return false;
if(event.skill==player.storage.pingjian_temp) return true;
if(info.sourceSkill==player.storage.pingjian_temp||info.group==player.storage.pingjian_temp) return true;
if(Array.isArray(info.group)&&info.group.contains(player.storage.pingjian_temp)) return true;
return false;
},
content:function(){
player.removeSkill(player.storage.pingjian_temp);
player.removeSkill('pingjian_temp');
},
},
//蒲元
pytianjiang:{
audio:2,
trigger:{
global:'gameDrawAfter',
player:'enterGame',
},
forced:true,
locked:false,
content:function(){
'step 0'
var i=0;
var list=[];
while(i++<2){
var card=get.cardPile(function(card){
if(get.type(card)!='equip') return false;
return list.length==0||get.subtype(card)!=get.subtype(list[0]);
});
if(card) list.push(card);
}
if(!list.length){event.finish();return;}
event.list=list;
player.gain(event.list,'gain2');
'step 1'
game.delay(1);
var card=event.list.shift();
if(player.getCards('h').contains(card)){
player.$give(card,player,false)
player.equip(card);
}
if(event.list.length) event.redo();
},
group:'pytianjiang_move',
},
pytianjiang_move:{
audio:'pytianjiang',
prompt:'将装备区里的一张牌移动至其他角色的装备区',
enable:'phaseUse',
position:'e',
filter:function(event,player){
return player.countCards('e')>0;
},
check:function(){return 1},
filterCard:true,
filterTarget:function(event,player,target){
return target!=player&&target.canEquip(ui.selected.cards[0],true);
},
prepare:'give',
discard:false,
lose:false,
content:function(){
target.equip(cards[0]);
if(cards[0].name.indexOf('pyzhuren_')==0) player.draw(2);
},
ai:{
order:11,
expose:0.2,
result:{
target:function(player,target){
if(ui.selected.cards.length){
var card=ui.selected.cards[0];
if(target.getEquip(card)||target.countCards('h',{subtype:get.subtype(card)})) return 0;
return get.effect(target,card,player,target);
}
return 0;
},
},
},
},
pyzhuren:{
audio:2,
enable:'phaseUse',
usable:1,
filterCard:true,
selectCard:1,
check:function(card){
var player=_status.event.player;
var name='pyzhuren_'+(card[card.name=='shandian'?'name':'suit']);
if(!lib.card[name]||_status.pyzhuren&&_status.pyzhuren[name]){
if(!player.countCards('h','sha')) return 4-get.value(card);
return 0;
}
return 7-get.value(card);
},
content:function(){
player.addSkill('pyzhuren_destroy');
if(!_status.pyzhuren) _status.pyzhuren={};
var rand=0.85;
var num=get.number(cards[0]);
if(num>4) rand=0.9;
if(num>8) rand=0.95;
if(num>12||cards[0].name=='shandian'||get.isLuckyStar(player)) rand=1;
var name='pyzhuren_'+(cards[0][cards[0].name=='shandian'?'name':'suit']);
if(!lib.card[name]||_status.pyzhuren[name]||Math.random()>rand){
player.popup('杯具');
game.log(player,'锻造失败');
var card=get.cardPile(function(card){
return card.name=='sha';
});
if(card) player.gain(card,'gain2');
}
else{
_status.pyzhuren[name]=true;
player.gain(game.createCard(name,cards[0].name=='shandian'?'spade':cards[0].suit,1),'gain2')
}
},
ai:{
order:10,
result:{
player:1,
},
},
},
pyzhuren_destroy:{
trigger:{global:['loseEnd','cardsDiscardEnd']},
forced:true,
charlotte:true,
filter:function(event,player){
var cs=event.cards;
for(var i=0;i<cs.length;i++){
if(cs[i].name.indexOf('pyzhuren_')==0&&get.position(cs[i],true)=='d') return true;
}
return false;
},
forceDie:true,
content:function(){
if(!_status.pyzhuren) _status.pyzhuren={};
var list=[];
var cs=trigger.cards;
for(var i=0;i<cs.length;i++){
if(cs[i].name.indexOf('pyzhuren_')==0&&get.position(cs[i],true)=='d'){
_status.pyzhuren[cs[i].name]=false;
list.push(cs[i]);
}
}
game.log(list,'已被移出游戏');
game.cardsGotoSpecial(list);
},
},
pyzhuren_heart:{
audio:true,
trigger:{source:'damageSource'},
usable:1,
equipSkill:true,
filter:function(event,player){
return event.getParent().name=='sha';
},
check:function(event,player){
return player.isDamaged();
},
content:function(){
'step 0'
player.judge(function(card){
var player=_status.event.getParent('pyzhuren_heart').player;
if(player.isHealthy()&&get.color(card)=='red') return 0;
return 2;
});
'step 1'
if(result.color=='red') player.recover();
else player.draw(2);
},
},
pyzhuren_diamond:{
audio:true,
trigger:{source:'damageBegin1'},
direct:true,
usable:2,
equipSkill:true,
mod:{
cardUsable:function(card,player,num){
var cardx=player.getEquip('pyzhuren_diamond');
if(card.name=='sha'&&(!cardx||player.hasSkill('pyzhuren_diamond',null,false)||(!_status.pyzhuren_diamond_temp&&!ui.selected.cards.contains(cardx)))){
return num+1;
}
},
cardEnabled2:function(card,player){
if(!_status.event.addCount_extra||player.hasSkill('pyzhuren_diamond',null,false)) return;
if(card&&card==player.getEquip('pyzhuren_diamond')){
_status.pyzhuren_diamond_temp=true;
var bool=lib.filter.cardUsable(get.autoViewAs({name:'sha'},ui.selected.cards.concat([card])),player);
delete _status.pyzhuren_diamond_temp;
if(!bool) return false;
}
},
},
filter:function(event,player){
if(event.getParent().name!='sha') return false;
return player.countCards('he',function(card){
return card!=player.getEquip('pyzhuren_diamond');
})>0;
},
content:function(){
'step 0'
var next=player.chooseToDiscard('he',function(card,player){
return card!=player.getEquip('pyzhuren_diamond');
},get.prompt(event.name,trigger.player),'弃置一张牌,令即将对其造成的伤害+1');
next.ai=function(card){
if(_status.event.goon) return 6-get.value(card);
return -1;
};
next.set('goon',get.attitude(player,trigger.player)<0&&!trigger.player.hasSkillTag('filterDamage',null,{
player:player,
card:trigger.card,
}));
next.logSkill=[event.name,trigger.player];
'step 1'
if(result.bool) trigger.num++;
else player.storage.counttrigger.pyzhuren_diamond--;
},
ai:{
expose:0.25,
},
},
pyzhuren_club:{
audio:true,
trigger:{player:'useCard2'},
direct:true,
equipSkill:true,
usable:2,
filter:function(event,player){
if(event.card.name!='sha'&&get.type(event.card)!='trick') return false;
var info=get.info(event.card);
if(info.allowMultiple==false) return false;
if(event.targets&&!info.multitarget){
if(game.hasPlayer(function(current){
return lib.filter.targetEnabled2(event.card,player,current)&&!event.targets.contains(current);
})){
return true;
}
}
return false;
},
content:function(){
'step 0'
var prompt2='为'+get.translation(trigger.card)+'额外指定一个目标';
player.chooseTarget([1,player.storage.fumian_red],get.prompt(event.name),function(card,player,target){
var player=_status.event.player;
if(_status.event.targets.contains(target)) return false;
return lib.filter.targetEnabled2(_status.event.card,player,target);
}).set('prompt2',prompt2).set('ai',function(target){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
return get.effect(target,trigger.card,player,player);
}).set('targets',trigger.targets).set('card',trigger.card);
'step 1'
if(result.bool){
if(!event.isMine()&&!event.isOnline()) game.delayx();
event.targets=result.targets;
}
else{
player.storage.counttrigger[event.name]--;
event.finish();
}
'step 2'
if(event.targets){
player.logSkill(event.name,event.targets);
trigger.targets.addArray(event.targets);
}
},
},
pyzhuren_spade:{
audio:true,
trigger:{player:'useCardToPlayered'},
filter:function(event,player){
return event.card.name=='sha';//&&event.targets.length==1&&get.color(event.card)=='black';
},
check:function(event,player){
return get.attitude(player,event.target)<=0;
},
logTarget:'target',
content:function(){
player.addTempSkill('pyzhuren_spade2');
player.addMark('pyzhuren_spade2',1,false);
//trigger.target.gain(trigger.cards.filterInD(),'gain2','log');
trigger.target.loseHp(Math.min(player.countMark('pyzhuren_spade2'),5));//.set('source',player);
},
ai:{
jueqing:true,
unequip_ai:true,
skillTagFilter:function(player,tag,arg){
if(tag=='unequip_ai'){
if(arg&&arg.name=='sha'&&get.color(arg.card)=='black') return true;
return false;
}
}
},
},
pyzhuren_spade2:{onremove:true},
pyzhuren_shandian:{
audio:true,
trigger:{player:'useCardToPlayered'},
filter:function(event,player){
return event.card.name=='sha';//&&event.targets.length==1;
},
check:function(event,player){
return get.attitude(player,event.target)<=0;
},
logTarget:'target',
content:function(){
'step 0'
trigger.target.judge(function(card){
var suit=get.suit(card);
if(suit=='spade') return -10;
if(suit=='club') return -5;
return 0;
}).judge2=function(result){
return result.color=='black'?true:false;
};
'step 1'
if(result.suit=='spade'){
trigger.target.damage(3,'thunder');
//trigger.getParent().excluded.add(trigger.target);
}
else if(result.suit=='club'){
trigger.target.damage('thunder');
player.recover();
player.draw();
}
},
},
//上兵伐谋
//伊籍在标包 不会移动
songshu:{
audio:2,
enable:'phaseUse',
filter:function(event,player){
return !player.hasSkill('songshu_reflectionblue')&&player.countCards('h')>0;
},
filterTarget:function(card,player,target){
return target!=player&&player.canCompare(target);
},
content:function(){
'step 0'
player.chooseToCompare(target).set('small',get.attitude(player,target)>0);
'step 1'
if(!result.bool){
target.draw(2);
player.addTempSkill('songshu_reflectionblue');
}
},
},
songshu_reflectionblue:{
},
sibian:{
audio:2,
trigger:{player:'phaseDrawBegin1'},
filter:function(event,player){
return !event.numFixed;
},
content:function(){
'step 0'
trigger.changeToZero();
event.cards=get.cards(4);
game.cardsGotoOrdering(event.cards);
player.showCards(event.cards);
'step 1'
cards.sort(function(a,b){
return b.number-a.number;
});
var gains=[];
var mx=[cards[0].number,cards[3].number];
for(var i=0;i<cards.length;i++){
if(mx.contains(cards[i].number)) gains.addArray(cards.splice(i--,1));
}
player.gain(gains,'gain2');
if(cards.length!=2||Math.abs(gains[0].number-gains[1].number)>=game.players.length) event._result={bool:false};
else player.chooseTarget('是否令一名手牌数最少的角色获得'+get.translation(cards),function(card,player,target){
return target.isMinHandcard();
}).ai=function(target){
return get.attitude(_status.event.player,target);
}
'step 2'
if(result.bool){
var target=result.targets[0];
player.line(target);
player.addExpose(0.2);
target.gain(cards,'gain2');
}
},
},
lslixun:{
audio:2,
forced:true,
trigger:{player:'damageBegin4'},
marktext:'珠',
intro:{
name2:'珠',
content:'共有#个“珠”',
},
content:function(){
trigger.cancel();
player.addMark('lslixun',trigger.num);
},
group:'lslixun_fate',
},
lslixun_fate:{
audio:'lslixun',
trigger:{player:'phaseUseBegin'},
forced:true,
filter:function(event,player){
return player.countMark('lslixun')>0;
},
content:function(){
'step 0'
event.forceDie=true;
_status.lslixun=player.countMark('lslixun');
player.judge(function(card){
if(get.number(card)<_status.lslixun) return -_status.lslixun;
return 1;
}).judge2=function(result){
return result.bool?true:false;
};
'step 1'
delete _status.lslixun;
if(!result.bool){
player.chooseToDiscard([1,player.countMark('lslixun')],'h').ai=lib.skill.qiangxi.check;
}
else event.finish();
'step 2'
var num=player.countMark('lslixun');
if(result.cards&&result.cards.length) num-=result.cards.length;
if(num) player.loseHp(num);
},
},
lskuizhu:{
audio:2,
trigger:{player:'phaseUseEnd'},
direct:true,
filter:function(event,player){
return player.isMaxHp(true)==false;
},
content:function(){
'step 0'
player.chooseTarget(get.prompt2('lskuizhu'),function(card,player,target){
return target!=player&&target.isMaxHp();
}).ai=function(target){
var player=_status.event.player;
var ts=Math.min(5,target.countCards('h'));
var delta=ts-player.countCards('h');
if(delta<=0) return 0;
if(get.attitude(player,target)<1) return false;
return target.countCards('he',function(card){
return lib.skill.zhiheng.check(card)>0;
})>1?delta:0;
};
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('lskuizhu',target);
player.drawTo(Math.min(5,target.countCards('h')));
}
else event.finish();
'step 2'
if(!player.countCards('h')){
event.finish();
return;
}
target.viewHandcards(player);
'step 3'
if(!target.countCards('h')){
event.finish();
return;
}
target.chooseToDiscard(true,'h',[1,player.countCards('h')],'弃置至多'+get.cnNumber(player.countCards('h'))+'张手牌,并获得'+get.translation(player)+'等量的手牌').ai=function(card){
if(ui.selected.cards.length>1) return -1;
return lib.skill.zhiheng.check.apply(this,arguments)
};
'step 4'
if(result.bool&&result.cards&&result.cards.length&&player.countGainableCards(target,'h')>0){
target.gainPlayerCard(player,'h',true,result.cards.length).visible=true;
}
'step 5'
if(result.bool&&result.cards&&result.cards.length>1){
var bool=player.storage.lslixun>0!==true;
player.chooseTarget(bool,'令'+get.translation(target)+'对其攻击范围内的一名角色造成1点伤害'+(bool?'':',或点「取消」移去一个“珠”'),function(card,player,target){
var source=_status.event.source;
return target!=source&&source.inRange(target);
}).set('source',target).set('ai',function(target){
return get.damageEffect(target,_status.event.source,_status.event.player);
});
}
else event.finish();
'step 6'
if(result.bool&&result.targets&&result.targets.length){
player.line(result.targets[0]);
result.targets[0].damage(target);
}
else{
player.removeMark('lslixun',1);
}
},
ai:{
expose:0.25,
},
},
xpchijie:{
audio:2,
trigger:{
player:'damageEnd',
},
filter:function(event,player){
if(player.hasSkill('xpchijie4')||!event.card) return false;
var evt=event.getParent('useCard');
return evt.card==event.card&&evt.player!=player;
},
check:function(event,player){
var evt=event.getParent('useCard');
var targets=evt.targets.slice(evt.num+1);
var num=0;
for(var i=0;i<targets.length;i++){
num+=get.effect(targets[i],evt.card,evt.player,player);
}
return num<-1;
},
content:function(){
player.addTempSkill('xpchijie4');
var evt=trigger.getParent('useCard');
evt.excluded.addArray(evt.targets);
},
group:'xpchijie2',
},
xpchijie2:{
trigger:{global:'useCardAfter'},
audio:'xpchijie',
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 current.getHistory('damage',function(evt){
return evt.card==event.card;
}).length>0;
});
},
check:function(event,player){
return get.value(event.cards.filterInD(),player,'raw')>0;
},
content:function(){
player.addTempSkill('xpchijie4');
player.gain(trigger.cards.filterInD(),'log','gain2');
},
},
xpchijie4:{},
yinju:{
audio:2,
enable:'phaseUse',
limited:true,
filterTarget:lib.filter.notMe,
skillAnimation:true,
animationColor:'water',
content:function(){
player.awakenSkill('yinju');
player.storage.yinju2=target;
player.addTempSkill('yinju2');
},
},
yinju2:{
trigger:{
player:'useCardToPlayered',
source:'damageBefore',
},
forced:true,
onremove:true,
filter:function(event,player,name){
if(name=='useCardToPlayered') return event.target==player.storage.yinju2;
return event.player==player.storage.yinju2;
},
logTarget:function(event){
return event[event.name=='damage'?'player':'target'];
},
content:function(){
'step 0'
if(trigger.name=='damage'){
trigger.cancel();
trigger.player.recover(trigger.num);
event.finish();
}
else{
game.asyncDraw([player,trigger.target]);
}
'step 1'
game.delayx();
},
},
//管辂和葛玄
gxlianhua:{
derivation:['reyingzi','reguanxing','zhiyan','gongxin'],
audio:2,
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]={
red:0,black:0,
}
},
marktext:'丹',
intro:{
name:'丹血',
markcount:function(storage){
return storage.red+storage.black;
},
content:function(storage){
return '共有'+(storage.red+storage.black)+'个标记';
},
},
trigger:{global:'damageEnd'},
forced:true,
filter:function(event,player){
return event.player!=player&&event.player.isAlive()&&_status.currentPhase!=player;
},
content:function(){
player.storage.gxlianhua[player.getFriends().contains(trigger.player)?'red':'black']++;
player.markSkill('gxlianhua');
},
group:'gxlianhua_harmonia',
subSkill:{
harmonia:{
forced:true,
audio:'gxlianhua',
sub:true,
trigger:{player:'phaseZhunbeiBegin'},
//filter:function(event,player){
// return player.storage.gxlianhua&&player.storage.gxlianhua.red+player.storage.gxlianhua.black>0;
//},
forced:true,
content:function(){
var cards=[];
var cards2=[];
var skill='';
var red=player.storage.gxlianhua.red;
var black=player.storage.gxlianhua.black;
player.storage.gxlianhua={red:0,black:0};
player.unmarkSkill('gxlianhua');
if(red+black<4){
cards=['tao'];
skill='reyingzi';
}
else if(red>black){
cards=['wuzhong'];
skill='reguanxing';
}
else if(red<black){
cards=['shunshou'];
skill='zhiyan';
}
else{
cards=['sha','juedou'];
skill='gongxin';
}
for(var i=0;i<cards.length;i++){
var card=get.cardPile(function(shiona){
return shiona.name==cards[i];
});
if(card) cards2.push(card);
}
player.addTempSkill(skill);
if(cards2.length) player.gain(cards2,'gain2','log');
},
},
},
},
zhafu:{
audio:2,
enable:'phaseUse',
limited:true,
skillAnimation:true,
animationColor:'wood',
filterTarget:lib.filter.notMe,
content:function(){
player.awakenSkill('zhafu');
target.addSkill('zhafu_hf');
target.storage.zhafu_hf=player;
},
subSkill:{
hf:{
trigger:{
player:'phaseDiscardBegin'
},
forced:true,
popup:false,
charlotte:true,
onremove:true,
content:function(){
'step 0'
if(player.countCards('h')<=1||player.storage.zhafu_hf.isDead()) event.finish();
'step 1'
player.storage.zhafu_hf.logSkill('zhafu_hf',player);
player.chooseCard('h',true,'选择保留一张手牌,将其余的手牌交给'+get.translation(player.storage.zhafu_hf)).ai=get.value;
'step 2'
var cards=player.getCards('h');
cards.remove(result.cards[0]);
player.storage.zhafu_hf.gain(cards,player,'giveAuto');
'step 3'
player.removeSkill('zhafu_hf');
},
},
},
},
tuiyan:{
audio:2,
trigger:{player:'phaseUseBegin'},
frequent:true,
content:function(){
'step 0'
var cards=get.cards(3);
event.cards=cards;
game.log(player,'观看了牌堆顶的'+get.cnNumber(cards.length)+'张牌');
player.chooseControl('ok').set('dialog',['推演',cards]);
'step 1'
while(cards.length){
ui.cardPile.insertBefore(cards.pop(),ui.cardPile.firstChild);
}
game.updateRoundNumber();
},
},
busuan:{
audio:2,
enable:'phaseUse',
usable:1,
filterTarget:lib.filter.notMe,
content:function(){
'step 0'
var list=[];
for(var i=0;i<lib.inpile.length;i++){
var name=lib.inpile[i];
var type=get.type(name,'trick');
if(['basic','trick'].contains(type)) list.push([type,'',name]);
}
player.chooseButton(['选择至多两种牌',[list,'vcard']],true,[1,2]).set('ai',function(button){
var target=_status.event.getParent().target;
var card={name:button.link[2]};
if(get.type(card)=='basic'||!target.hasUseTarget(card)) return false;
return get.attitude(_status.event.player,target)*(target.getUseValue(card)-0.1);
});
'step 1'
target.storage.busuan_angelbeats=result.links.slice(0);
target.addSkill('busuan_angelbeats');
},
ai:{
order:1,
result:{
target:function(player,target){
var att=get.attitude(player,target);
if(att>0) return 1
return -5/(target.countCards('h')+1);
},
},
},
},
busuan_angelbeats:{
mark:true,
intro:{
mark:function(dialog,content,player){
if(content&&content.length) dialog.add([content,'vcard']);
},
},
trigger:{player:'drawBefore'},
forced:true,
filter:function(event,player){
return event.getParent().name=='phaseDraw';
},
onremove:true,
content:function(){
'step 0'
var list=player.storage['busuan_angelbeats'];
var cards=[];
for(var i=0;i<Math.min(trigger.num,list.length);i++){
var card=get.cardPile(function(cardx){
return !cards.contains(cardx)&&cardx.name==list[Math.min(i,list.length-1)][2];
});
if(card){
player.storage.busuan_angelbeats.splice(i--,1);
trigger.num--;
cards.push(card);
}
}
if(cards.length){
player.gain(cards,'gain2','log');
}
'step 1'
if(!trigger.num) trigger.cancel();
if(!player.storage.busuan_angelbeats.length) player.removeSkill('busuan_angelbeats');
},
},
mingjie:{
audio:1,
trigger:{player:'phaseJieshuBegin'},
check:function(){
return ui.cardPile.hasChildNodes()&&get.color(ui.cardPile.firstChild)!='black';
},
content:function(){
'step 0'
event.count=0;
'step 1'
player.draw('visible');
'step 2'
if(Array.isArray(result)){
event.count+=result.length;
if(get.color(result)!='red'){
if(player.hp>1) player.loseHp();
event.finish();
}
else if(event.count<3) player.chooseBool('是否继续发动【命戒】?').ai=function(){
if(event.count==2) return Math.random()<0.5;
return lib.skill.mingjie.check();
};
}
else event.finish();
'step 3'
if(result.bool) event.goto(1);
},
},
spwenji:{
audio:2,
trigger:{player:'phaseUseBegin'},
direct:true,
filter:function(event,player){
return game.hasPlayer(function(current){
return current!=player&&current.countCards('he');
});
},
content:function(){
'step 0'
player.chooseTarget(get.prompt2('spwenji'),function(card,player,target){
return target!=player&&target.countCards('he');
}).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(att>0) return Math.sqrt(att)/10;
return 5-att;
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('spwenji',target);
target.chooseCard('he',true,'问计:将一张牌交给'+get.translation(player));
}
else{
event.finish();
}
'step 2'
if(result.bool){
player.addTempSkill('spwenji_respond');
player.storage.spwenji_respond=result.cards[0].name;
event.target.give(result.cards,player,true);
}
},
subSkill:{
respond:{
onremove:true,
trigger:{player:'useCard'},
forced:true,
charlotte:true,
audio:'spwenji',
filter:function(event,player){
return event.card.name==player.storage.spwenji_respond;
},
content:function(){
trigger.directHit.addArray(game.filterPlayer(function(current){
return current!=player;
}));
},
ai:{
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
return arg.card.name==player.storage.spwenji_respond;
},
},
}
}
},
sptunjiang:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
frequent:true,
filter:function(event,player){
if(player.getHistory('skipped').contains('phaseUse')) return false;
return player.getHistory('useCard',function(evt){
if(evt.targets&&evt.targets.length&&evt.isPhaseUsing()){
var targets=evt.targets.slice(0);
while(targets.contains(player)) targets.remove(player);
return targets.length>0;
}
return false;
}).length==0;
},
content:function(){
player.draw(game.countGroup());
},
},
bingzhao:{
audio:2,
unique:true,
zhuSkill:true,
forced:true,
intro:{
content:function(group){
return '已选择了'+get.translation(group)+'势力'
},
},
trigger:{global:['gameDrawAfter','zhuUpdate']},
filter:function(event,player){
return !player.storage.bingzhao&&player.hasZhuSkill('bingzhao');
},
content:function(){
'step 0'
var list=lib.group.filter(function(group){
return ['wei','shu','wu','qun'].contains(group)||game.hasPlayer(function(current){
return current.group==group;
})
});
player.chooseControl(list).set('prompt','秉诏:请选择一个势力').set('ai',function(){
var listx=list.slice(0);
listx.sort(function(a,b){
return game.countPlayer(function(current){
return current!=player&&current.group==b;
})-game.countPlayer(function(current){
return current!=player&&current.group==a;
});
})
return listx[0];
});
'step 1'
var group=result.control;
player.popup(get.translation(group)+'势力',get.groupnature(group,'raw'));
game.log(player,'选择了','#y'+get.translation(group)+'势力');
player.storage.bingzhao=group;
player.markSkill('bingzhao');
},
},
baijia:{
audio:2,
audioname:['tw_beimihu'],
unique:true,
derivation:'bmcanshi',
juexingji:true,
ai:{
combo:'guju'
},
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
skillAnimation:true,
animationColor:'thunder',
filter:function(event,player){
return player.hasSkill('guju')&&player.storage.guju>=7;
},
content:function(){
player.awakenSkill('baijia');
player.gainMaxHp();
player.recover();
var list=game.filterPlayer();
for(var i=0;i<list.length;i++){
if(list[i]!=player&&!list[i].hasMark('zongkui_mark')){
list[i].addMark('zongkui_mark',1);
player.line(list[i],'green');
}
}
player.removeSkill('guju');
player.addSkill('bmcanshi');
}
},
bmcanshi:{
audio:2,
audioname:['tw_beimihu'],
group:['bmcanshi_add','bmcanshi_remove'],
subSkill:{
add:{
audio:'bmcanshi',
trigger:{player:'useCard2'},
filter:function(event,player){
if(!event.targets||event.targets.length!=1) return false;
var info=get.info(event.card);
if(info.multitarget) return false;
if(info.allowMultiple==false) return false;
if(info.type=='equip') return false;
if(info.type=='delay') return false;
return game.hasPlayer(function(current){
if(!current.hasMark('zongkui_mark')) return false;
return !event.targets.contains(current)&&lib.filter.targetEnabled2(event.card,player,current);
});
},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('bmcanshi'),[1,Infinity],function(card,player,target){
if(!target.hasMark('zongkui_mark')) return false;
var trigger=_status.event.getTrigger();
return !trigger.targets.contains(target)&&lib.filter.targetEnabled2(trigger.card,player,target);
}).set('ai',function(target){
var player=_status.event.player;
return get.effect(target,_status.event.getTrigger().card,player,player);
});
'step 1'
if(result.bool){
if(!event.isMine()&&!event.isOnline()) game.delayx();
event.targets=result.targets.sortBySeat();
}
else{
event.finish();
}
'step 2'
player.logSkill('bmcanshi',event.targets);
for(var i=0;i<event.targets.length;i++){
event.targets[i].removeMark('zongkui_mark',1);
}
trigger.targets.addArray(event.targets);
}
},
remove:{
audio:'bmcanshi',
trigger:{
target:'useCardToTarget',
},
check:function(event,player){
return get.attitude(event.player,player)<0&&get.effect(player,event.card,event.player,player)<0;
},
logTarget:'player',
filter:function(event,player){
if(!['basic','trick'].contains(get.type(event.card))) return false;
if(!event.targets||event.targets.length!=1) return false;
return event.player.hasMark('zongkui_mark');
},
content:function(){
trigger.targets.remove(player);
trigger.getParent().triggeredTargets2.remove(player);
game.delay();
trigger.player.removeMark('zongkui_mark');
}
}
}
},
guju:{
audio:2,
audioname:['tw_beimihu'],
init:function(player){
if(!player.storage.guju) player.storage.guju=0;
},
intro:{
content:'已因此技能获得#张牌'
},
trigger:{global:'damageEnd'},
forced:true,
filter:function(event,player){
return event.player!=player&&event.player.isAlive()&&event.player.hasMark('zongkui_mark');
},
content:function(){
'step 0'
player.draw();
player.storage.guju++;
player.markSkill('guju');
'step 1'
if(player.hasZhuSkill('bingzhao',trigger.player)&&trigger.player.group==player.storage.bingzhao&&trigger.player.isAlive()){
trigger.player.chooseBool('是否对'+get.translation(player)+'发动【秉诏】?').ai=function(){
return get.attitude(trigger.player,player)>1;
};
}
else event.finish();
'step 2'
if(result.bool){
trigger.player.logSkill('bingzhao',player);
player.draw();
player.storage.guju++;
player.markSkill('guju');
}
},
ai:{
combo:'zongkui'
}
},
zongkui:{
trigger:{player:'phaseBefore',global:'roundStart'},
direct:true,
audio:2,
audioname:['tw_beimihu'],
filter:function(event,player,name){
return game.hasPlayer(function(current){
if(name=='roundStart'&&!current.isMinHp()) return false;
return current!=player&&!current.hasMark('zongkui_mark');
});
},
content:function(){
'step 0'
var targets=game.filterPlayer(function(current){
if(event.triggername=='roundStart'&&!current.isMinHp()) return false;
return current!=player&&!current.hasMark('zongkui_mark');
});
if(event.triggername=='roundStart'&&targets.length==1){
event._result={bool:true,targets:targets};
}
else{
var next=player.chooseTarget(get.prompt('zongkui'),'令一名'+(event.triggername=='roundStart'?'体力值最小的':'')+'其他角色获得“傀”标记',function(card,player,target){
if(_status.event.round&&!target.isMinHp()) return false;
return target!=player&&!target.hasMark('zongkui_mark');
}).set('ai',function(target){
var num=target.isMinHp()?0.5:1;
return num*get.threaten(target);
}).set('round',event.triggername=='roundStart');
if(event.triggername=='roundStart') next.set('forced',true);
}
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('zongkui',target);
target.addMark('zongkui_mark',1);
game.delayx();
}
},
subSkill:{
mark:{
marktext:'傀',
intro:{
name2:'傀',
content:'mark'
}
}
},
ai:{
combo:'guju',
threaten:1.4
}
},
"xinfu_langxi":{
audio:2,
trigger:{
player:"phaseZhunbeiBegin",
},
direct:true,
filter:function(event,player){
return game.hasPlayer(function(current){
return current!=player&&current.hp<=player.hp;
});
},
content:function(){
"step 0"
player.chooseTarget(get.prompt('xinfu_langxi'),'对一名体力值不大于你的其他角色造成0-2点随机伤害',function(card,player,target){
return target.hp<=player.hp&&target!=player;
}).set('ai',function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player);
});
"step 1"
if(result.bool&&result.targets&&result.targets.length){
player.logSkill('xinfu_langxi',result.targets);
var num=[1,2,0].randomGet();
if(get.isLuckyStar(player)) num=2;
player.line(result.targets[0],'green');
result.targets[0].damage(num);
}
},
ai:{
expose:0.25,
threaten:1.7,
},
},
"xinfu_yisuan":{
usable:1,
audio:2,
trigger:{
player:"useCardEnd",
},
check:function(event,player){
return get.value(event.cards)+player.maxHp*2-18>0;
},
filter:function(event,player){
return player.isPhaseUsing()&&get.type(event.card)=='trick'&&event.cards.filterInD().length>0;
},
content:function(){
player.loseMaxHp();
player.gain(trigger.cards.filterInD(),'gain2','log');
},
},
"xinfu_xingluan":{
usable:1,
audio:2,
trigger:{
player:"useCardAfter",
},
filter:function(event,player){
if(!player.isPhaseUsing()) return false;
if(get.type(event.card)==undefined) return false;
return (event.targets&&event.targets.length==1);
},
content:function(){
var card=get.cardPile2(function(card){
return card.number==6;
});
if(!card){
player.chat('无牌可得了吗');
game.log('但是牌堆里面已经没有点数为6的牌了');
event.finish();
return;
}
player.gain(card,'gain2');
},
},
"xinfu_lveming":{
init:function(player){
player.storage.xinfu_lveming=0;
},
mark:true,
intro:{
content:"已发动过#次",
},
audio:2,
enable:"phaseUse",
usable:1,
filterTarget:function(card,player,target){
return player!=target&&target.countCards('e')<player.countCards('e');
},
content:function(){
"step 0"
var list=[1,2,3,4,5,6,7,8,9,10,11,12,13].map((i)=>get.strNumber(i));
target.chooseControl(list).set('ai',function(){
return get.rand(0,12);
}).set('prompt','请选择一个点数');
"step 1"
if(result.control){
target.$damagepop(result.control,'thunder');
var num=result.index+1;
event.num=num;
}
else{
target.$damagepop('K','thunder');
event.num=13;
};
game.log(target,'选择的点数是','#y'+get.strNumber(event.num));
player.storage.xinfu_lveming++;
player.judge(function(card){
if(card.number==_status.event.getParent('xinfu_lveming').num) return 4;
return 0;
});
"step 2"
if(result.bool==true){
target.damage(2);
}
else{
var card=target.getCards('hej').randomGet();
player.gain(card,target,'giveAuto','bySelf');
}
},
ai:{
order:9,
result:{
target:function(player,target){
var numj=target.countCards('j');
var numhe=target.countCards('he');
if(numhe==0) return numj>0?6:-6;
return -6-(numj+1)/numhe;
},
},
threaten:1.1,
},
},
"xinfu_tunjun":{
skillAnimation:true,
animationColor:'metal',
limited:true,
unique:true,
enable:"phaseUse",
audio:2,
filter:function(event,player){
if(player.storage.xinfu_tunjun) return false;
return player.storage.xinfu_lveming&&player.storage.xinfu_lveming>0;
},
filterTarget:true,
selectTarget:1,
content:function(){
"step 0"
player.awakenSkill('xinfu_tunjun');
event.num=player.storage.xinfu_lveming;
event.toequip=[];
"step 1"
var equip=get.cardPile(function(card){
var bool1=true;
for(var i=0;i<event.toequip.length;i++){
if(get.type(card)=='equip'&&get.subtype(card)==get.subtype(event.toequip[i])) bool1=false;
}
return (get.type(card)=='equip'&&!event.toequip.contains(card)&&target.isEmpty(get.subtype(card))&&bool1);
});
if(equip) event.toequip.push(equip);
else event.num=0;
event.num--;
"step 2"
if(event.num>0) event.goto(1);
"step 3"
for (var i=0;i<event.toequip.length;i++){
target.chooseUseTarget(event.toequip[i],true).set('animate',false).set('nopopup',true);
}
},
ai:{
order:1,
result:{
target:0,
},
},
mark:true,
intro:{
content:"limited",
},
init:function(player){
player.storage.xinfu_tunjun=false;
},
},
"xinfu_tanbei":{
audio:2,
enable:"phaseUse",
usable:1,
filterTarget:function(card,player,target){
return player!=target;
},
content:function(){
"step 0"
if(target.countCards('hej')==0){
event._result={index:1};
}
else{
target.chooseControl().set('choiceList',[
'令'+get.translation(player)+'随机获得你区域内的一张牌,然后其本回合内不能再对你使用牌。',
'令'+get.translation(player)+'本回合内对你使用牌没有次数与距离限制。',
]).set('ai',function(){
var list=[0,1];
return list.randomGet();
});
}
"step 1"
player.addTempSkill('tanbei_effect3');
if(result.index==0){
var card=target.getCards('hej').randomGet();
player.gain(card,target,'giveAuto','bySelf');
target.addTempSkill('tanbei_effect2');
}
else{
target.addTempSkill('tanbei_effect1');
}
},
ai:{
order:function(){
return [2,4,6,8,10].randomGet();
},
result:{
target:function(player,target){
return -2-target.countCards('h');
},
},
threaten:1.1,
},
},
tanbei_effect3:{
charlotte:true,
mod:{
targetInRange:function(card,player,target){
if(target.hasSkill('tanbei_effect1')){
return true;
}
},
cardUsableTarget:function(card,player,target){
if(target.hasSkill('tanbei_effect1')) return true;
},
playerEnabled:function(card,player,target){
if(target.hasSkill('tanbei_effect2')) return false;
},
},
},
"xinfu_sidao":{
audio:2,
trigger:{
player:'useCardAfter',
},
filter:function(event,player){
if(player.hasSkill('xinfu_sidaoy')||!player.countCards('hs')) return false;
if(!event.targets||!event.targets.length||!event.isPhaseUsing(player)) return false;
var history=player.getHistory('useCard');
var index=history.indexOf(event)-1;
if(index<0) return false;
var evt=history[index];
if(!evt||!evt.targets||!evt.targets.length||!evt.isPhaseUsing(player)) return false;
for(var i=0;i<event.targets.length;i++){
if(evt.targets.contains(event.targets[i])&&lib.filter.filterTarget({name:'shunshou'},player,event.targets[i])) return true;
}
return false;
},
direct:true,
content:function(){
var targets=player.getLastUsed(1).targets;
var next=player.chooseToUse();
next.set('targets',game.filterPlayer(function(current){
return targets.contains(current)&&trigger.targets.contains(current);
}));
next.set('openskilldialog',get.prompt2('xinfu_sidao'));
next.set('norestore',true);
next.set('_backupevent','xinfu_sidaox');
next.set('custom',{
add:{},
replace:{window:function(){}}
});
next.backup('xinfu_sidaox');
},
},
xinfu_sidaox:{
audio:'xinfu_sidao',
filterCard:function(card){
return get.itemtype(card)=='card';
},
position:"hs",
viewAs:{
name:"shunshou",
},
filterTarget:function(card,player,target){
return _status.event.targets&&_status.event.targets.contains(target)&&lib.filter.filterTarget.apply(this,arguments);
},
prompt:"将一张手牌当顺手牵羊使用",
check:function(card){return 7-get.value(card)},
onuse:function(links,player){player.addTempSkill('xinfu_sidaoy')},
},
xinfu_sidaoy:{},
"tanbei_effect1":{
charlotte:true,
},
"tanbei_effect2":{
charlotte:true,
},
"xinfu_tunan":{
audio:2,
enable:"phaseUse",
usable:1,
filterTarget:function(card,player,target){
return target!=player;
},
content:function(){
'step 0'
event.cards=get.cards(1);
player.showCards(get.translation(player)+'对'+get.translation(target)+'发动了【图南】',event.cards);
'step 1'
var card=cards[0];
var bool1=game.hasPlayer(function(current){
return target.canUse(card,current,false);
});
var bool2=game.hasPlayer(function(current){
return target.canUse({name:'sha'},current);
});
if(bool1&&bool2){
target.chooseControl(function(){
return 0;
}).set('choiceList',[
'使用'+get.translation(cards)+'。(没有距离限制)',
'将'+get.translation(cards)+'当做【杀】使用。',
]).set('ai',function(){
return _status.event.choice;
}).set('choice',target.getUseValue(card,false)>target.getUseValue({name:'sha',cards:cards})?0:1);
}
else if(bool1){
event.directindex=0;
}
else if(bool2){
event.directindex=1;
}
else{
ui.cardPile.insertBefore(card,ui.cardPile.firstChild);
event.finish();
}
'step 2'
var card=cards[0];
if(result&&typeof event.directindex!='number'){
event.directindex=result.index;
}
if(event.directindex==1){
target.chooseUseTarget({name:'sha'},cards,true,false).viewAs=true;
}
else{
target.chooseUseTarget(card,true,false,'nodistance');
}
},
ai:{
order:7,
result:{
target:1,
},
},
},
"xinfu_bijing":{
audio:2,
group:["xinfu_bijing_lose","xinfu_bijing_discard"],
subSkill:{
lose:{
trigger:{
global:"phaseDiscardBegin",
},
audio:'xinfu_bijing',
filter:function(event,player){
if(event.player==player) return false;
return player.getHistory('lose',function(evt){
for(var i in evt.gaintag_map){
if(evt.gaintag_map[i].contains('xinfu_bijing')) return true;
}
}).length>0&&event.player.countCards('he')>0;
},
forced:true,
logTarget:'player',
content:function(){
trigger.player.chooseToDiscard(2,true,'he');
},
sub:true,
},
discard:{
trigger:{
player:"phaseZhunbeiBegin",
},
forced:true,
filter:function(event,player){
return player.getCards('h',function(card){
return card.hasGaintag('xinfu_bijing');
}).length>0;
},
content:function(){
player.discard(player.getCards('h',function(card){
return card.hasGaintag('xinfu_bijing');
}));
},
sub:true,
},
},
trigger:{
player:"phaseJieshuBegin",
},
direct:true,
filter:function(player,event){
return event.countCards('h')>0;
},
content:function(){
'step 0'
player.chooseCard(get.prompt2('xinfu_bijing'),'h').set('ai',function(card){
if(card.name=='shan') return 6;
return 6-get.value(card);
});
'step 1'
if(result.bool){
player.logSkill('xinfu_bijing');
player.addGaintag(result.cards,'xinfu_bijing');
}
},
},
"xinfu_zhenxing":{
audio:2,
trigger:{
player:["damageEnd","phaseJieshuBegin"],
},
direct:true,
content:function(){
'step 0'
player.chooseControl('一张','两张','三张','cancel2').set('prompt',get.prompt2('xinfu_zhenxing')).set('',function(){return 0});
'step 1'
if(result.control=='cancel2') event.finish();
else{
player.logSkill('xinfu_zhenxing');
event.num={一张:1,两张:2,三张:3}[result.control];
};
'step 2'
event.cards=get.cards(num);
player.chooseButton(['【镇行】:请选择要获得的牌',event.cards]).set('filterButton',function(button){
var cards=_status.event.cards;
for(var i=0;i<cards.length;i++){
if(button.link!=cards[i]&&get.suit(cards[i])==get.suit(button.link)) return false;
}
return true;
}).set('ai',function(button){
return get.value(button.link);
}).set('cards',event.cards);
'step 3'
var tothrow=[];
for(var i=event.cards.length-1;i>=0;i--){
if(result.bool&&result.links.contains(event.cards[i])){
player.gain(event.cards[i],'gain2');
}
else{
event.cards[i].fix();
ui.cardPile.insertBefore(event.cards[i],ui.cardPile.childNodes[0]);
}
}
game.updateRoundNumber();
},
},
"xinfu_qianxin":{
audio:2,
group:["xinfu_qianxin2"],
enable:"phaseUse",
usable:1,
onChooseToUse:function(event){
if(!game.online){
var num1=game.players.length-1;
var player=event.player;
var num2=ui.cardPile.childElementCount;
var num3=num2;
if(num1>num2) num3=0;
else if(!player.storage.xinfu_qianxin){}
else{
for(var i=0;i<num2;i++){
if(player.storage.xinfu_qianxin.contains(ui.cardPile.childNodes[i])){
num3=0;break;
}
}
}
event.set('qianxinNum',num3);
}
},
filter:function(event,player){
return event.qianxinNum&&event.qianxinNum>0;
},
filterTarget:function(card,player,target){
return target!=player;
},
filterCard:true,
selectCard:function(){
var num1=game.players.length-1;
var num2=_status.event.qianxinNum;
return [1,Math.floor(num2/num1)];
},
discard:false,
check:function(){
return -1;
},
delay:false,
lose:false,
prompt:function(){
return '选择一名角色并将任意张手牌放置于牌堆中'+get.cnNumber(game.players.length)+'倍数的位置(先选择的牌在上)';
},
content:function(){
'step 0'
player.$throw(cards.length);
player.storage.xinfu_qianxin=cards.slice(0);
player.storage.xinfu_qianxin2=target;
//cards.reverse();
player.lose(cards,ui.cardPile).insert_index=function(event,card){
var num1=game.players.length,i=event.cards.indexOf(card);
var num3=num1*(i+1)-1;
return ui.cardPile.childNodes[num3];
};
'step 1'
game.updateRoundNumber();
game.log(player,'把',get.cnNumber(cards.length),'张牌放在了牌堆里');
game.delayx();
},
ai:{
order:1,
result:{
target:-1,
},
},
},
"xinfu_qianxin2":{
subSkill:{
dis:{
mod:{
maxHandcard:function(player,num){
return num-2;
},
},
sub:true,
},
},
forced:true,
locked:false,
audio:'xinfu_qianxin',
logTarget:'player',
trigger:{
global:"phaseDiscardBegin",
},
filter:function(event,player){
if(player.storage.xinfu_qianxin2!=event.player) return false;
if(!player.storage.xinfu_qianxin) return false;
var hs=event.player.getCards('h');
var cs=player.storage.xinfu_qianxin;
var bool=false;
var history=event.player.getHistory('gain')
for(var i=0;i<history.length;i++){
for(var j=0;j<history[i].cards.length;j++){
var card=history[i].cards[j];
if(hs.contains(card)&&cs.contains(card)) return true;
}
}
return false;
},
content:function(){
'step 0'
delete player.storage.xinfu_qianxin2;
if(player.countCards('h')>=4){
event._result={index:1};
}
else{
trigger.player.chooseControl().set('choiceList',[
'令'+get.translation(player)+'将手牌摸至四张',
'令自己本回合的手牌上限-2'
]).set('ai',function(){
var player=_status.event.player;
var source=_status.event.getParent().player;
if(get.attitude(player,source)>0) return 0;
if(player.hp-player.countCards('h')>1) return 1;
return [0,1].randomGet();
})
}
'step 1'
if(result.index==0){
player.drawTo(4);
}
else{
trigger.player.addTempSkill('xinfu_qianxin2_dis');
}
},
},
"xinfu_fuhai":{
subSkill:{
next:{},
previous:{},
},
audio:2,
group:["fuhai_clear"],
intro:{
content:"已指定过#个目标",
},
enable:"phaseUse",
filter:function(event,player){
if(player.hasSkill('xinfu_fuhai_next')&&player.hasSkill('xinfu_fuhai_previous')) return false;
return player.countCards('h')>0;
},
filterTarget:function(card,player,target){
if(![player.next,player.previous].contains(target)||target.countCards('h')==0) return false;
if(player.hasSkill('xinfu_fuhai_next')) return target==player.previous;
if(player.hasSkill('xinfu_fuhai_previous')) return target==player.next;
return true;
},
line:false,
content:function(){
'step 0'
event.side=target==player.next?'next':'previous';
event.current=target;
if(!player.storage.xinfu_fuhai) player.storage.xinfu_fuhai=1;
player.addTempSkill('xinfu_fuhai_'+event.side,'phaseUseAfter');
'step 1'
if(player.countCards('h')==0||event.current.countCards('h')==0||event.current==player){
event.finish();
return;
}
var next=event.current[event.side];
if(get.attitude(event.current,player)>0){
if(get.attitude(next,target)<=0||next.countCards('h')==0||player.countCards('h')==1){
event.stopm=true;
event.stopt=true
}
else{
event.stopm=false;
event.stopt=false;
}
}
else{
if(get.attitude(next,target)>=0){
event.stopt=true;
event.stopm=false;
}
else{
event.stopt=false;
event.stopm=false;
}
}
player.markSkill('xinfu_fuhai');
player.line(event.current,'green');
player.chooseCard('请选择要展示的牌',true).set('ai',function(card){
if(_status.event.stop) return 14-get.number(card);
return get.number(card)
}).set('stop',event.stopm);
'step 2'
event.mes=result.cards[0];
player.showCards(event.mes);
'step 3'
event.current.chooseCard('请选择要展示的牌',true).set('ai',function(card){
if(_status.event.stop) return get.number(card);
return 14-get.number(card);
}).set('stop',event.stopt);
'step 4'
event.tes=result.cards[0];
event.current.showCards(event.tes);
'step 5'
var num1=get.number(event.mes);
var num2=get.number(event.tes);
if(num1<num2){
event.current.discard(event.tes);
game.asyncDraw([player,event.current],player.storage.xinfu_fuhai);
player.addTempSkill('xinfu_fuhai_next','phaseUseAfter');
player.addTempSkill('xinfu_fuhai_previous','phaseUseAfter');
player.unmarkSkill('xinfu_fuhai');
}
else{
player.discard(event.mes);
player.storage.xinfu_fuhai++;
event.current=event.current[event.side];
if(player.countCards('h')>0&&event.current.countCards('h')>0&&event.current!=player) event.goto(1);
}
},
ai:{
order:1,
result:{
player:function(player,target){
var hs=player.countCards('h');
var side=target==player.next?'next':'previous';
var current=player;
for(var i=0;i<hs;i++){
current=current[side];
if(current==player||!current.countCards('h')) return 0;
if(get.attitude(current,player)>0) return 1;
}
return 0;
},
},
},
},
"fuhai_clear":{
trigger:{
player:"phaseAfter",
},
forced:true,
silent:true,
popup:false,
filter:function(event,player){
return player.storage.xinfu_fuhai!=undefined;
},
content:function(){
player.unmarkSkill('xinfu_fuhai');
delete player.storage.xinfu_fuhai;
},
},
"xz_xunxun":{
filter:function(event,player){
var num=game.countPlayer(function(current){
return current.isDamaged();
});
return num>=1&&!player.hasSkill('xunxun');
},
audio:2,
trigger:{
player:"phaseDrawBegin1",
},
//priority:10,
content:function(){
"step 0"
event.cards=get.cards(4);
player.chooseCardButton(true,event.cards,2,'选择两张牌置于牌堆顶').set('ai',ai.get.buttonValue);
"step 1"
if(result.bool){
var choice=[];
for(var i=0;i<result.links.length;i++){
choice.push(result.links[i]);
cards.remove(result.links[i]);
}
for(var i=0;i<cards.length;i++){
ui.cardPile.appendChild(cards[i]);
}
while(choice.length){
ui.cardPile.insertBefore(choice.pop(),ui.cardPile.firstChild);
}
}
},
},
"xinfu_xingzhao":{
audio:true,
group:["xz_xunxun","xinfu_xingzhao2"],
mark:true,
intro:{
content:function(storage,player){
var num=game.countPlayer(function(current){
return current.isDamaged();
})
var str='暂无任何效果';
if(num>=1){
str='<li>视为拥有技能“恂恂”';
}
if(num>=2){
str+=';使用装备牌时摸一张牌';
}
if(num>=3){
str+=';始终跳过弃牌阶段';
}
return str;
},
},
trigger:{
player:"useCard",
},
forced:true,
filter:function(event,player){
if(get.type(event.card)!='equip') return false;
var num=game.countPlayer(function(current){
return current.isDamaged();
});
return num>=2;
},
content:function(){
player.draw();
},
},
"xinfu_xingzhao2":{
audio:true,
trigger:{
player:"phaseDiscardBefore",
},
forced:true,
filter:function(event,player){
var num=game.countPlayer(function(current){
return current.isDamaged();
});
return num>=3;
},
content:function(){
trigger.cancel();
game.log(player,'跳过了弃牌阶段');
},
},
"xinfu_dianhu":{
audio:2,
trigger:{
global:"gameDrawAfter",
player:"enterGame",
},
forced:true,
filter:function(){
return game.players.length>1;
},
content:function(){
'step 0'
player.chooseTarget('选择【点虎】的目标',lib.translate.xinfu_dianhu_info,true,function(card,player,target){
return target!=player&&!target.hasSkill('xinfu_dianhu2');
}).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(att<0) return -att+3;
return Math.random();
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
game.log(target,'成为了','【点虎】','的目标');
target.storage.xinfu_dianhu2=player;
target.addSkill('xinfu_dianhu2');
}
},
},
"xinfu_dianhu2":{
mark:"character",
intro:{
content:"当你受到来自$的伤害或回复体力后,$摸一张牌",
},
nopop:true,
trigger:{
player:["damageAfter","recoverAfter"],
},
forced:true,
popup:false,
filter:function(event,player){
if(player.storage.xinfu_dianhu2&&player.storage.xinfu_dianhu2.isIn()){
if(event.name=='damage') return event.source==player.storage.xinfu_dianhu2;
return true;
};
},
content:function(){
'step 0'
var target=player.storage.xinfu_dianhu2;
target.logSkill('xinfu_dianhu');
target.draw();
},
onremove:true,
},
"xinfu_jianji":{
audio:2,
enable:"phaseUse",
usable:1,
filterTarget:function(card,player,target){
return target!=player;
},
content:function(){
'step 0'
target.draw();
'step 1'
var card=result[0];
if(card&&game.hasPlayer(function(current){
return target.canUse(card,current);
})&&get.owner(card)==target){
target.chooseToUse({
prompt:'是否使用'+get.translation(card)+'',
filterCard:function(cardx,player,target){
return cardx==_status.event.cardx;
},
cardx:card,
});
}
},
ai:{
order:7.5,
result:{
target:1,
},
},
},
"xinfu_lianpian":{
audio:2,
usable:3,
trigger:{
player:"useCardToPlayered",
},
frequent:true,
filter:function(event,player){
if(!event.targets||!event.targets.length||
event.getParent().triggeredTargets3.length>1||!event.isPhaseUsing(player)) return false;
var evt=player.getLastUsed(1);
if(!evt||!evt.targets||!evt.targets.length||!evt.isPhaseUsing(player)) return false;
for(var i=0;i<event.targets.length;i++){
if(evt.targets.contains(event.targets[i])) return true;
}
return false;
},
content:function(){
'step 0'
player.draw();
'step 1'
event.card=result[0];
var ablers=player.getLastUsed(1).targets.slice(0);
for(var i=0;i<ablers.length;i++){
if(ablers[i]==player||!trigger.targets.contains(ablers[i])) ablers.splice(i--,1);
}
if(event.card&&get.owner(event.card)==player&&ablers.length){
player.chooseTarget('是否将'+get.translation(event.card)+'交给其他角色?',function(card,player,target){
return _status.event.ablers.contains(target)&&target!=player;
}).set('ablers',ablers).ai=function(){
return false;
};
}
else event.finish();
'step 2'
if(result.bool){
player.give(event.card,result.targets[0],true);
}
},
locked:false,
mod:{
aiOrder:function(player,card,num){
if(player.isPhaseUsing()&&(!player.storage.counttrigger||!player.storage.counttrigger.xinfu_lianpian||!player.storage.counttrigger.xinfu_lianpian<3)){
var evt=player.getLastUsed();
if(evt&&evt.targets&&evt.targets.length&&evt.isPhaseUsing(player)&&game.hasPlayer(function(current){
return evt.targets.contains(current)&&player.canUse(card,current)&&get.effect(current,card,player,player)>0;
})){
return num+10;
}
}
},
},
ai:{
effect:{
player:function(card,player,target){
var evt=player.getLastUsed();
if(evt&&evt.targets.contains(target)&&(!player.storage.counttrigger||!player.storage.counttrigger.xinfu_lianpian||!player.storage.counttrigger.xinfu_lianpian<3)&&player.isPhaseUsing(player)) return [1.5,0];
}
},
},
},
},
card:{
pyzhuren_heart:{
fullskin:true,
derivation:'puyuan',
type:'equip',
subtype:'equip1',
distance:{attackFrom:-2},
skills:['pyzhuren_heart'],
ai:{
basic:{
equipValue:4
}
},
},
pyzhuren_diamond:{
fullskin:true,
derivation:'puyuan',
type:'equip',
subtype:'equip1',
distance:{attackFrom:-1},
skills:['pyzhuren_diamond'],
ai:{
basic:{
equipValue:3
}
},
},
pyzhuren_club:{
fullskin:true,
derivation:'puyuan',
type:'equip',
subtype:'equip1',
distance:{attackFrom:-1},
skills:['pyzhuren_club'],
ai:{
basic:{
equipValue:5
}
},
loseDelay:false,
onLose:function(){
var next=game.createEvent('baiyin_recover');
event.next.remove(next);
var evt=event.getParent();
if(evt.getlx===false) evt=evt.getParent();
evt.after.push(next);
next.player=player;
next.setContent(function(){
if(player.isDamaged()) player.logSkill('pyzhuren_club');
player.recover();
});
},
},
pyzhuren_spade:{
fullskin:true,
derivation:'puyuan',
type:'equip',
subtype:'equip1',
skills:['pyzhuren_spade'],
ai:{
basic:{
equipValue:3
}
},
},
pyzhuren_shandian:{
fullskin:true,
derivation:'puyuan',
type:'equip',
subtype:'equip1',
distance:{attackFrom:-3},
skills:['pyzhuren_shandian'],
ai:{
basic:{
equipValue:3
}
},
},
},
characterIntro:{
tangji:'唐姬,会稽太守唐瑁女,弘农怀王刘辩的妃子。刘辩死后,唐姬回归故里,因节烈不愿改嫁他人,后被汉献帝下诏封为弘农王妃。',
lijue:"李傕jué一说“傕”读音“què”—198年字稚然。北地郡泥阳县今陕西省耀县汉末群雄之一。东汉末年汉献帝时的军阀、权臣官至大司马、车骑将军、开府、领司隶校尉、假节。<br>李傕本为董卓部将后被董卓的女婿牛辅派遣至中牟与朱儁交战大破朱儁进而至陈留、颍川等地劫掠。初平三年192年董卓和牛辅被杀后李傕归无所依于是采用贾诩之谋伙同郭汜、张济、樊稠等原董卓部曲将攻向长安。击败吕布杀死王允等人占领长安把持朝廷大权。后诸将不和李傕在会议上杀死了樊稠又与郭汜分别劫持了汉献帝和众臣相互交战张济率兵赶来和解于是二人罢兵李傕出屯池阳黄白城郭汜、张济等人随汉献帝东归前往弘农。<br>后来李傕、郭汜、张济反悔联合起来追击汉献帝与杨奉、董承等人几番交战。汉献帝一路逃亡狼狈不堪到达安邑与李傕等人讲和。不久汉献帝被曹操迎往许都。建安三年198年曹操派谒者仆射裴茂召集关西诸将段煨等人征讨李傕灭其三族。",
zhangji:"张济196年武威郡祖厉县今甘肃靖远东南人。东汉末年割据军阀之一。 张济原为董卓部将,董卓被诛杀后,张济与李傕一同率军攻破长安,任中郎将。不久,升任镇东将军,封平阳侯,出屯弘农。献帝东迁时,张济升任骠骑将军,率军护卫献帝,后来因与董承等人有矛盾,便与李傕、郭汜一同追赶献帝。 建安元年196年张济因军队缺粮而进攻穰城中流矢而死。死后部队由侄儿张绣接管。",
guosi:"郭汜197年又名郭多凉州张掖今甘肃张掖西北东汉末年将领、军阀献帝时权臣。原为董卓部下。董卓被杀后凉州众将归无所依于是采用贾诩之谋联兵将攻向长安击败吕布杀死王允等人占领长安把持朝廷大权。几年后郭汜被部将伍习杀死。",
fanchou:"樊稠—195年凉州金城治今甘肃永靖西北人。东汉末年军阀、将领。官至右将军封万年侯。 原为董卓部将董卓死后伙同李傕、郭汜、张济等人合众十余万反扑长安败吕布、杀王允把持朝政。后马腾因与李傕有隙于是联合韩遂举兵进攻李傕派樊稠、郭汜等与其交战大败马腾、韩遂于长平观下。樊稠追至陈仓与韩遂友好罢兵却遭李傕猜疑。兴平二年195年李傕让外甥骑都尉胡封在会议上将樊稠刺死一说趁醉用杖击杀。",
lvkai:"吕凯―225年字季平永昌郡不韦县今云南保山东北三国时期蜀汉官员。初任永昌郡五官掾功曹。章武三年223年建宁太守雍闿反叛投降吴国吴国任雍闿为永昌太守吕凯闭境抗拒雍闿。建兴三年225年丞相诸葛亮南征表奏吕凯功劳任命他为云南太守封阳迁亭侯。吕凯还未上任便被叛乱的少数民族杀害。",
zhanggong:"张恭(生卒年不详),三国时期魏国大臣,与子张就一同闻名于西域。官至西域戊己校尉、关内侯,赠执金吾。初为敦煌郡功曹。东汉末河西大乱,太守马艾卒官,他被众人推为代理长史,遂派儿子张就请曹操委任太守,直至新太守到任。魏文帝时拜西域戊己校尉。魏明帝时去世。",
weiwenzhugezhi:"卫温 —231年三国时期东吴将领曾任将军职。诸葛直—231年三国时期东吴将领。黄龙二年230年正月孙权派卫温、诸葛直带领上万士兵出海寻找夷洲、亶洲想要俘获那里的民众以充实东吴的人口陆逊和全琮都谏言反对孙权不听。230年和卫温一起登上台湾当时的台湾叫做夷洲他们是中国历史上记载的最早登陆台湾的人。卫温和诸葛直花费了约一年时间行军士兵们因为疾病死去了十分之八到十分之九因为亶洲太过遥远卫温和诸葛直最终没能到达那里只带了几千名夷洲的人返回。黄龙三年231年孙权认为诸葛直违背诏令劳财伤民无功而返和卫温一同入狱被处死。",
xurong:"徐荣192年玄菟人一说为辽东襄平人《公孙度传》中说公孙度本辽东襄平人迁居玄菟为同郡徐荣所举任辽东太守。同郡当是同“玄菟”郡东汉末年将领。本为中郎将曾向董卓推举同郡出身的公孙度出任辽东太守。于汴水之战中击败曹操的独立追击军以及在梁东之战中击败孙坚的部队。在董卓死后受司徒王允的命令与李傕、郭汜交战因部将胡珍投降寡不敌众于新丰之战被击败战死在乱军之中。",
zhangqiying:"张琪瑛196年217年字不详或琪瑛为字名不详祖籍沛国丰县今江苏省丰县。她的曾祖父张陵是西汉留侯张良的十一世孙、天师道五斗米道教祖她的父亲是东汉末年割据汉中的军阀张鲁。张琪瑛继承家说是五斗米教的传人。",
beimihu:'卑弥呼ひみこ约159年-约249年有的史书也写成“俾弥呼”是日本弥生时代邪马台国今日本本州近畿地区的女王在《三国志·魏书·倭人传》中有关于她的记载。关于她的真实身份一直众说纷纭是个极具神秘色彩的古代女性统治者。亦是日本古代宗教鬼道教的发源者。',
liuqi:'刘琦209年。兖州山阳郡高平县今山东省济宁市微山县两城镇人。荆州牧刘表的长子、谏议大夫刘琮兄。官至荆州刺史。建安十四年209年病逝。',
tangzi:"唐咨(生卒年不详),三国时魏利城(今江苏赣榆西)人。魏文帝黄初中利城郡反,推唐咨为主。后为魏军击破,遂亡至吴,官至左将军,封侯、持节。后助诸葛诞拒魏,兵败被俘。为安抚吴国军民,魏主拜唐咨为安远将军。",
huangquan:"黄权240年字公衡。巴西郡阆中县今四川阆中人。三国时期蜀汉、曹魏将领。<br>黄权年轻时为郡吏后被益州牧刘璋召为主簿。曾劝谏刘璋不要迎接刘备因而被外放为广汉县长。刘璋败才降刘备被拜为偏将军。建计取汉中拜护军。刘备为汉中王仍领益州牧以黄权为治中从事。及刘备称帝将伐吴黄权劝谏而不纳。以其为镇北将军督江北军以防魏师进攻。刘备伐吴败还而归途隔绝黄权不得归无奈之下率部降魏。被魏文帝所赏识拜镇南将军封育阳侯加侍中使同车陪乘。后领益州刺史进驻河南。景初三年239年迁车骑将军、仪同三司。正始元年240年黄权去世谥号“景”。",
sufei:"苏飞(生卒年不详),东汉末年人物,原为东汉末年荆州牧刘表的部将,任江夏都督。<br>苏飞与甘宁交好,但是数次向黄祖推荐都失败。甘宁决定投效孙权时助其逃离。后来甘宁率吴军攻破江夏,苏飞兵败被俘。孙权打算将苏飞处斩,但是因为甘宁用性命担保而赦免了苏飞。降吴后官至军都督。",
zhangchangpu:"钟会的母亲。《母夫人张氏传》:夫人张氏,字昌蒲,太原兹氏人,太傅定陵成侯之命妇也。",
xugong:"许贡是东汉末官吏。先后任吴郡都尉、太守欲送密信给曹操要曹操注意孙策却被孙策发现而被杀。许贡生前招揽了一些门客当中有三人不忘故主千方百计想要手刃仇人。建安五年公元200年广陵太守陈登派人秘密联系孙策治下的山贼余党企图颠覆孙策在江东的统治。孙策决定讨伐陈登行军到丹徒时许贡门客终于找到了机会。因为孙策有单骑出猎在野外思考的习惯三门客趁孙策轻装外出打猎时放冷箭射中孙策面颊。这些门客后来在与孙策的搏斗中被赶到的侍卫杀死。孙策此后因为伤口感染并且俊美的容貌被毁终于不治身亡去世时年仅26岁。",
mangyachang:"南蛮王孟获的部将,使一口截头大刀,骑一匹黄骠马。率军与蜀军交战,战败王平。后被平北将军马岱斩杀。只出现在《三国演义》里,正史中无此人。",
xushao:'许劭shào150年—195年字子将。汝南平舆今河南平舆县射桥镇人。东汉末年著名人物评论家。据说他每月都要对当时人物进行一次品评人称为“月旦评”。曾任汝南郡功曹后南渡投靠扬州刺史刘繇。刘繇被孙策击败后许劭随其逃往豫章郡并在豫章去世。',
puyuan:'蒲元是三国时蜀汉杰出的工匠。为诸葛亮造刀三千口,并且制作木牛流马。后来姜维为他写过两部传记《蒲元传》《蒲元别传》。',
zhangwen:'张温193年—230年字惠恕吴郡吴县今江苏苏州人。少修节操容貌奇伟。孙权召拜议郎、选曹尚书徙太子太傅。黄武三年224以辅义中郎将身份出使蜀汉孙权原先害怕诸葛亮会有意留难张温但张温不担心。在呈上蜀汉朝廷的文书刻意称颂蜀汉以表明和解的诚意重建两国关系。他在蜀汉表现出色得蜀汉朝廷重视。回东吴后不久被调进豫章的军队事业上再无进展。孙权一方面介怀他出使蜀汉时称颂蜀汉又嫌他声名太盛恐怕张温不会尽忠地由他任用。当时正好碰上暨艳事件暨艳是张温引荐的臣子但他滥用职权升迁评定等只看自己喜恶。事件被揭发后暨艳及同党徐彪都自杀。孙权见此于是以张温与暨艳、徐彪等人多有来往而下罪张温后更将张温发还到家乡吴郡。将军骆统曾上书为张温辩解但孙权不理会。六年后张温病逝。',
lisu:'李肃192年五原治今内蒙古包头西北人。永汉三年四月司徒王允、尚书仆射士孙瑞、卓将吕布共谋诛卓。是时天子有疾新愈大会未央殿。布使同郡骑都尉肃等、将亲兵十馀人伪著卫士服守掖门。布怀诏书。卓至肃等格卓。卓惊呼布所在。布曰“有诏”遂杀卓夷三族。后卓女婿中郎将牛辅典兵别屯陕分遣校尉李傕、郭汜、张济略陈留、颍川诸县。卓死吕布使李肃至陕欲以诏命诛辅。辅等逆与肃战肃败走弘农布诛肃。',
xinpi:'辛毗生卒年不详字佐治颍川阳翟人。三国时期曹魏大臣。原居陇西郡治在今甘肃临洮县东汉光武帝建武年间其先人东迁。当初辛毗跟随其兄事袁绍。曹操任司空时征召辛毗他不受命。官渡战后辛毗事袁绍的儿子袁谭。公元204年曹操攻下邺城上表推荐辛毗任议郎后为丞相长史。公元220年曹丕即皇帝位以辛毗为侍中赐爵关内侯后赐广平亭侯。魏明帝即位封辛毗颍乡侯食邑三百户后为卫尉。公元234年诸葛亮屯兵渭南司马懿上表魏明帝。魏明帝任辛毗为大将军军师加使持节号。诸葛亮病逝后辛毗返回仍任卫尉。不久逝世谥肃侯。',
zhangchangpu:"钟会的母亲。《母夫人张氏传》:夫人张氏,字昌蒲,太原兹氏人,太傅定陵成侯之命妇也。",
xugong:"许贡是东汉末官吏。先后任吴郡都尉、太守欲送密信给曹操要曹操注意孙策却被孙策发现而被杀。许贡生前招揽了一些门客当中有三人不忘故主千方百计想要手刃仇人。建安五年公元200年广陵太守陈登派人秘密联系孙策治下的山贼余党企图颠覆孙策在江东的统治。孙策决定讨伐陈登行军到丹徒时许贡门客终于找到了机会。因为孙策有单骑出猎在野外思考的习惯三门客趁孙策轻装外出打猎时放冷箭射中孙策面颊。这些门客后来在与孙策的搏斗中被赶到的侍卫杀死。孙策此后因为伤口感染并且俊美的容貌被毁终于不治身亡去世时年仅26岁。",
mangyachang:"南蛮王孟获的部将,使一口截头大刀,骑一匹黄骠马。率军与蜀军交战,战败王平。后被平北将军马岱斩杀。只出现在《三国演义》里,正史中无此人。",
guanlu:"管辂209年256年字公明平原今山东德州平原县人。三国时期曹魏术士。年八九岁便喜仰观星辰。成人后精通《周易》善于卜筮、相术习鸟语相传每言辄中出神入化。体性宽大常以德报怨。正元初为少府丞。北宋时被追封为平原子。管辂是历史上著名的术士被后世奉为卜卦观相的祖师。",
gexuan:"葛玄164年-244年汉族吴丹阳郡句容县都乡吉阳里人今句容市祖籍山东琅琊三国著名高道道教灵宝派祖师。字孝先号仙翁被尊称为“葛天师”。道教尊为葛仙翁又称太极仙翁与张道陵、许逊、萨守坚共为四大天师。为汉下邳僮侯葛艾后裔祖葛矩安平太守黄门郎从祖葛弥豫章第五郡太守。父葛焉字德儒州主簿山阴令散骑常侍大尚书。随左慈学道得《太清丹经》、《黄帝九鼎神丹经》、《金液丹经》等道经。曾采药海山吴嘉禾二年233年在閤皂山修道建庵筑坛立炉修炼九转金丹。喜好遨游山川去过括苍山、南岳山、罗浮山。编撰《灵宝经诰》精研上清、灵宝等道家真经并嘱弟子世世箓传。",
wulan:'吴兰(?~218年青州今山东潍坊市人。东汉末年将领。初为益州牧刘璋部将后来归降刘备。汉中之战中与马超、张飞各领一军驻扎于下辩。建安二十三年为曹操将领曹洪、张郃所败退回汉中。途中为阴平氐族首领强端所杀。',
leitong:'雷铜(?-218年阴平今甘肃文县氐族东汉末年益州名将。本属益州牧刘璋麾下。刘备攻取益州后归刘备麾下。参加汉中之战为魏将张郃所杀。',
xingdaorong:'邢道荣是《三国演义》中虚构的人物,为零陵太守刘度手下武将,被评价有万夫不当之勇,于《三国演义》第五十二回登场,被赵云刺死。',
huaman:'花鬘,古典戏曲《龙凤巾》(一名《化外奇缘》)中的人物,身份为三国时期南蛮王孟获与祝融夫人的女儿,关索的夫人之一。在关于关三小姐·关银屏的民间传说中,其名字为“花中秀”,与关索其他几位夫人鲍三娘、王桃、王悦都被关索之姐关银屏编入自己的女兵营中。花鬘在《三国志》,《三国演义》均未有提及,只是戏曲中的虚构人物。其形象并非一般君主家中闺秀,而是与其母祝融相似,是一个可以披甲上阵,善于刀枪作战的女武将。戏曲中在诸葛亮平定南蛮时,花鬘曾与关索作战,失败被俘,两人互生爱意,南蛮王孟获降服后二人成婚。近些年,花鬘接连在各类三国题材的游戏中登场,更广被人知晓。',
wangshuang:'王双(?-228年三国时期曹魏将领。蜀汉建兴六年228年诸葛亮出散关攻陈仓后粮尽而退。王双率领骑兵追击蜀军但在与蜀军的交战中被击败王双也被蜀军所斩。在《三国演义》中王双字子全是陇西郡狄道县今甘肃临洮县有万夫不当之勇。在诸葛亮北伐期间被魏延所斩。',
wenyang:"文俶238年—291年一作文淑字次骞小名阿鸯世称文鸯谯郡今安徽亳州市人。魏末晋初名将曹魏扬州刺史文钦之子。骁勇善战依附大将军曹爽效忠于王室。司马师废黜皇帝曹芳后随父联合毌丘俭于淮南起兵勤王。兵败之后向南投奔吴国。诸葛诞发动淮南叛乱奉命率军驰援。双方发生内讧父亲为诸葛诞所害遂降于司马昭封关内侯。西晋建立后任平虏护军。咸宁三年277年拜平西将军、都督凉秦雍州三州军事大破鲜卑首领秃发树机能名震天下迁使持节、护东夷校尉、监辽东军事。八王之乱中为诸葛诞外孙、东安王司马繇所诬杀惨遭灭族时年五十四岁。",
liuzan:'字正明会稽长山人人曾任左护军有两子留略、留平。少为会稽郡吏曾参与镇压黄巾起义后被东吴大将凌统所引用任屯骑校尉。吴五凤二年公元255年留赞任左护军随孙峻征淮南因病撤军被魏将蒋班围困于道力战而死时年73岁。',
caoxing:'曹性,东汉末年吕布部将,史载他曾与身为自己上司的反叛者郝萌交战,并砍去郝萌一臂,受到吕布的嘉奖。在罗贯中所著古典小说《三国演义》中,也有关于曹性箭射夏侯惇左目的描述,而曹性也随即被暴怒的夏侯惇所杀。在穿越小说《三国之银河射手》中,主角穿越成为曹性,经过一番闯荡之后,被封为“银河射手”。',
zhujun:'朱儁195年字公伟。会稽郡上虞县今浙江绍兴上虞区人。东汉末年名将。朱儁出身寒门赡养母亲以好义轻财闻名受乡里敬重。后被太守徐珪举为孝廉任兰陵令颇有治绩。再升任交州刺史以家兵五千大破叛军平定交州。战后以功封都亭侯入朝为谏议大夫。光和七年184年黄巾起义爆发朱儁以右中郎将、持节平定三郡之地以功进封西乡侯迁镇贼中郎将。又率军讨平黄巾“威声满天下”。中平二年185年进拜右车骑将军更封钱塘侯。后为河内太守击退进逼的张燕。权臣董卓秉政时想任朱儁为副手遭其婉拒。其后出逃荆州更屯军中牟徐州刺史陶谦等欲推举他为太师并传檄各州牧伯相邀讨伐李傕、奉迎天子。但朱儁却奉诏入京任太仆。初平三年192年升任太尉、录尚书事。兴平元年194年行骠骑将军事持节镇关东因故未成行。兴平二年195年李傕与郭汜相互攻杀郭汜扣留朱儁作为人质。朱儁性格刚烈即日发病而死。',
liuhong:'汉灵帝刘宏157年一作156年189年5月13日生于冀州河间国今河北深州。东汉第十二位皇帝168年189年在位汉章帝刘炟的玄孙。刘宏早年世袭解渎亭侯。永康元年167年十二月汉桓帝刘志逝世刘宏被外戚窦氏挑选为皇位继承人于建宁元年168年正月即位。刘宏在位的大部分时期施行党锢及宦官政治。他又设置西园巧立名目搜刮钱财甚至卖官鬻爵以用于自己享乐。在位晚期爆发了黄巾起义而凉州等地也陷入持续动乱之中。中平六年189年刘宏去世谥号孝灵皇帝葬于文陵。刘宏喜好辞赋作有《皇羲篇》、《追德赋》、《令仪颂》、《招商歌》等。',
liubian:'刘辩176年190年3月6日是汉灵帝刘宏与何皇后的嫡长子。刘辩在灵帝驾崩后继位为帝史称少帝由于年幼实权掌握在临朝称制的母亲何太后和母舅大将军何进手中。少帝在位时期东汉政权已经名存实亡他即位后不久即遭遇以何进为首的外戚集团和以十常侍为首的内廷宦官集团这两大敌对政治集团的火并被迫出宫回宫后又受制于以“勤王”为名进京的凉州军阀董卓终于被废为弘农王成为东汉唯一被废黜的皇帝其同父异母弟陈留王刘协继位为帝是为汉献帝。被废黜一年之后刘辩在董卓胁迫下自尽时年仅十五岁一说十八岁其弟献帝追谥他为怀王。中国古代的史书中称刘辩为皇子辩、少帝和弘农王等。因为在位不逾年传统上称东汉共十二帝刘辩与东汉另一位少帝刘懿都不在其中亦皆无本纪不过现代史学界也有观点承认两位少帝均是汉朝皇帝则刘辩为东汉第十三位皇帝。',
wangrong:'汉灵怀皇后王荣(?~181年赵国邯郸今河北邯郸市人。五官中郎将王苞孙女汉灵帝刘宏妃子汉献帝刘协生母。初以良家子选入掖庭封为美人服侍汉灵帝。光和四年181年生下陈留王刘协惨遭灵思皇后毒杀。王荣死后汉灵帝曾作《追德赋》、《令仪颂》。永汉元年189年其子刘协即位是为汉献帝追谥灵怀皇后葬于文昭陵。',
hanfu:'韩馥—191年字文节颍川郡今河南禹州人。东汉末年的诸侯冀州牧。韩馥担任过东汉的御史中丞之后被董卓举荐为冀州牧在各诸侯起兵讨伐董卓时韩馥也是其中之一的参与者。韩馥与袁绍也曾经有意立刘虞为皇帝。当时冀州民殷人盛兵粮优足于是袁绍便用计夺取冀州韩馥被迫投靠张邈之后张邈与袁绍的使者见面韩馥以为是要来杀害自己的于是在厕所中以刻书用的小刀自杀。',
guozhao:'郭照,电视剧《军师联盟》中的女主角之一,由唐艺昕饰演。原型为文德皇后郭氏(字女王),魏国皇后,张春华的义妹,深爱曹丕,替甄宓抚育曹叡,因甄宓之死被曹叡记恨,曹丕死后,成为皇太后,被曹叡逼上死路。自尽身亡。',
fanyufeng:'樊夫人东汉末年人物昔桂阳太守赵范寡嫂。赵云随刘备平定江南四郡后刘备以赵云为桂阳太守。赵范居心叵测要将自己的嫂嫂樊氏嫁给赵云但遭到赵云的拒绝。后来赵范逃走樊氏也下落不明。2001年应日本日中青少年文化中心成立50周年之邀北京京剧院赴日进行40场巡回演出这次访日的剧目都不同程度地进行了加工改编以符合日本观众的需求。《取桂阳》是根据老本重新排演的叶金援饰赵云王怡饰樊玉凤。剧中的樊玉凤成为文武双全的巾帼英雄被赵云收降后来在《龙凤呈祥》中也参与堵截东吴的追兵。',
zhaozhong:'赵忠—189年安平人东汉末年宦官赵延之兄。桓帝、灵帝时历为小黄门、中常侍、大长秋、车骑将军等职封都乡侯。在职时以搜刮暴敛、骄纵贪婪见称灵帝极为宠信常谓“赵常侍是我母”。中平六年189年何进谋诛宦官事泄他和其余几个常侍设计伏杀何进袁绍、袁术等人闻何进被杀入宫杀尽宦官后捕杀赵忠。',
caosong:'曹嵩—194年字巨高沛郡谯县今安徽省亳州市人。东汉大臣大长秋曹腾的养子曹操之父亲。门荫入仕历任司隶校尉、鸿胪卿、大司农位列九卿位高权重。中平四年187年靠着贿赂中官出任太尉位列三公。中平五年188年受累于黄巾之乱坐罪免官。兴平元年194年投奔兖州牧曹操遇害于徐州。延康元年220年追尊魏国太王。曹魏建立后追尊皇帝谥号为太。',
xiahoujie:'夏侯杰—208年是罗贯中的小说《三国演义》中曹操的部将征战时常常带在身边。在第42回长坂坡之战中张飞大吼从马儿受惊跌下马来而死。',
ruanyu:'阮瑀约165—212年字元瑜陈留尉氏今河南开封市尉氏县是东汉末年文学家建安七子之一。阮瑀所作章表书记很出色当时军国书檄文字多为阮瑀与陈琳所拟。名作有《为曹公作书与孙权》。诗有《驾出北郭门行》描写孤儿受后母虐待的苦难遭遇比较生动形象。年轻时曾受学于蔡邕蔡邕称他为“奇才”。后徙为丞相仓曹掾属。诗歌语言朴素往往能反映出一般的社会问题。阮瑀的音乐修养颇高他的儿子阮籍孙子阮咸皆当时名人位列“竹林七贤”妙于音律。明人辑有《阮元瑜集》。',
liangxing:'梁兴(?-212年武威郡姑臧人也东汉末年凉州军阀之一。与张横、贾诩、段煨是同乡曾斩杀李傕。建安十六年同韩遂、马超联合起兵反抗曹操。梁兴率步骑五千夜袭曹军先头部队徐晃被击退。联军战败后梁兴逃到蓝田劫掠周围郡县。夏侯渊进攻蓝田联合郑浑征讨梁兴梁兴战败不知所终。',
zhangmiao:'张邈195年字孟卓东平寿张今山东东平县人。东汉大臣、名士“八厨”之一。举孝廉出身授骑都尉出任陈留太守。参与讨伐董卓参加汴水之战归附于曹操。兴平元年194年趁着曹操讨伐徐州牧陶谦联合陈宫发动叛乱迎立吕布为兖州牧。受到曹操讨伐兵败投奔徐州牧刘备。兴平二年张邈向袁术借兵途中被部下所杀。',
duanwei:'段煨209年字忠明武威郡姑臧今甘肃省武威市人也。东汉末年将领东汉太尉段颎同族兄弟与太尉贾诩、张济、宣威侯张绣乃是同乡。原为董卓帐下将领奉命屯兵华阴勤劳农业。兴平二年195年迎接汉献帝刘协东归洛阳供给衣食补给与护驾将领杨定不和引发激战十余天听从汉献帝刘协劝解。东汉建安三年198年攻打黄白城击杀李傕夷其三族封为镇远将军、闅乡亭侯、北地太守累迁大鸿胪、金光禄大夫。建安十四年209年寿终正寝。',
zhangheng:'张横生卒年不详武威郡姑臧人东汉末年凉州军阀之一。与梁兴、贾诩、段煨乃是同乡。建安三年198张横与梁兴、段煨等斩杀李傕。十六年211同韩遂、马超联合起兵反抗曹操兵败后不知所终。',
tangji:'唐姬,会稽太守唐瑁女,弘农怀王刘辩的妃子。刘辩死后,唐姬回归故里,因节烈不愿改嫁他人,后被汉献帝下诏封为弘农王妃。',
yangwan:'杨氏婉字出自小说史书无记载生卒年不详东汉末年凉州人。早年嫁于东汉前将军、槐里侯马腾之子马超追随马超转战并州、雍州、凉州为马超生下子嗣。公元212年马超联军在渭南战败后杨婉随马超逃亡凉州很快马超反攻吞并陇上诸郡县。公元213年杨婉为了帮助马超结识王异了解马超这些投降部下。可惜被王异蛊惑遭致马超大败。自己和孩子都被赵衢、梁宽杀害。',
wenqin:'文钦(?~258年字仲若沛国谯郡今安徽省亳州市三国时期曹魏将领曹操部将文稷之子。魏明帝太和年间文钦任牙门将、五营校督后拜庐江太守、冠军将军嘉平元年249年曹爽及其同党在高平陵之变中被杀文钦心中不安执政的司马氏集团为了安抚文钦升其为前将军、扬州刺史任职期间结交镇东将军毌丘俭。击退吴国太傅诸葛恪进攻取得一定战果。正元二年255年文钦与镇东将军毌丘俭在扬州起兵讨伐司马师兵败后投奔吴国被封为镇北大将军、幽州牧封谯侯。甘露二年257年文钦随吴军援救起兵反抗司马氏的诸葛诞此后因被司马昭大军围困军情告急文钦与诸葛诞本就有矛盾对文钦日益不满的诸葛诞遂将文钦杀死。淮南平定之后文钦遗体被其二子收敛安葬。',
heyan:'何晏249年字平叔。南阳郡宛县今河南省南阳市人。三国时期曹魏大臣、玄学家东汉大将军何进之孙一称何进弟何苗之孙。何晏之父早逝司空曹操纳其母尹氏为妾他因而被收养为曹操所宠爱。少年时以才秀知名喜好老庄之学娶曹操之女金乡公主。魏文帝在位时未被授予官职。魏明帝认为何晏虚浮不实也只授其冗官之职。大将军曹爽秉政时何晏与之共事得以累官至侍中、吏部尚书典选举封列侯。高平陵之变后与大将军曹爽同为太傅司马懿所杀被夷灭三族。何晏有文集十一卷并曾与郑冲等共撰《论语集解》今已佚。钟嵘《诗品》称“平叔鸿鹄之篇风规见矣。”将何晏诗列入中品。袁宏在《名士传》中将何晏等称为正始名士。他与夏侯玄、王弼等倡导玄学竞事清谈遂开一时风气为魏晋玄学的创始者之一。',
qiuliju:'丘力居,东汉末年的辽西乌丸大人。拉拢中山太守张纯反叛东汉,寇略青、徐、幽、冀四州,杀略吏民。死时认为儿子楼班年幼,于是让从子蹋顿总摄三王部。',
fengxi:'冯熙(?—223年字子柔颍川郡父城县今河南省平顶山市宝丰县人。汉末三国时期吴国官员东汉初年名将冯异的后人。孙权担任车骑将军时冯熙担任其幕府东曹掾后迁立信都尉。刘备去世时奉命进入蜀汉吊丧返回后任中大夫。后奉命出使魏国受到魏文帝曹丕和尚书令陈群招揽宁死不从自尽未果。孙权闻之流泪称其“东吴苏武”。最终在曹魏死去。',
liuba:'刘巴222年字子初荆州零陵郡烝阳县今湖南省衡阳县、邵东县一带东汉末年至三国时期蜀汉时期官员、名士。刘巴少知名荆州牧刘表多次征用推举刘巴均不应就。曹操征伐荆州荆州士人多归刘备刘巴却北上投靠曹操。后受曹操命令招降荆南三郡不料先为刘备所得刘巴不能复命曹操遂远至交趾又辗转进入益州。刘备平定益州后刘巴归附刘备为左将军西曹掾法正死后接任尚书令。章武二年222年去世。刘巴博学多才为刘备解决入蜀后的财政困难问题又与诸葛亮等共制蜀汉的法律文件《蜀科》。为人简朴清高退无私交曹魏大臣陈群甚敬重之。所著录于《刘令君集》。',
pengyang:'彭羕184年220年字永年广汉今四川广汉北人。东汉末年官吏。彭羕起初在益州任书佐但后来其他人向益州牧刘璋诽谤他刘璋于是以“髡钳”剃去头发和胡须并戴上刑具处罚他并且贬奴隶。此时刘备入蜀彭羕想投靠刘备于是去见庞统。庞统和他会面后很欣赏他而法正亦很清楚彭羕于是二人共同向刘备推荐彭羕。刘备多次命令彭羕传递军情和指示给诸将表现都十分满意日渐被赏识。刘备入主益州领益州牧后就任命他为治州从事。彭羕见此又变得嚣张自矜诸葛亮对他礼待但心中并不喜欢他多次密告刘备说彭羕“心大志广难可保安”。刘备见诸葛亮这样说决定疏远彭羕又观察他行事于是贬他为江阳太守。彭羕见将被派往外地心感不悦与马超见面时又曾对他说“老革荒悖可复道邪”“卿为其外我为其内天下不足定也。”马超听后大惊彭羕走后以他的说话告发彭羕彭羕于是被收监下狱。最后彭羕被处死死时三十七岁。',
huaxin:'华歆157年232年1月30日字子鱼汉族。平原郡高唐县人今山东省高唐县。汉末至三国曹魏初年名士、重臣。华歆早年拜太尉陈球为师与卢植、郑玄、管宁等为同门又与管宁、邴原共称一龙华歆为龙头。汉灵帝时华歆被举为孝廉任郎中因病去官。又被大将军何进征召为尚书郎。后任豫章太守甚得民心。孙策率军南下华歆举郡投降被奉为上宾。官渡之战时被征为议郎、参司空军事。入为尚书、侍中又代荀彧为尚书令。丞相曹操讨孙权时授华歆为军师。后为魏王国的御史大夫。曹丕即王位拜华歆为相国封安乐乡侯。曹魏建立后其相国职名改称司徒。魏明帝即位升任太尉晋封博平侯。太和五年十二月232年1月华歆去世年七十五谥号“敬”。有文集三十卷今佚失其余见《全三国文》。',
luyusheng:'陆郁生(?年-三国时期吴国官员陆绩之女。陆郁生的父亲陆绩是吴郡公认的才子又是当时吴郡陆氏的领袖。陆绩赴任担任郁林太守遂取此名。陆郁生年少的时候就定下坚贞的志向。建安二十四年219年)陆绩早亡她与两个兄弟陆宏、陆睿当时都只有几岁一起返回吴县被他们的从兄陆瑁接回抚养。13周岁的陆郁生嫁给同郡出身的张白为妻。出嫁3个月后张白因为其兄张温一族的案件遭到连坐被处以流刑后死于流放地陆郁生成为了寡妇其后公开宣言不再改嫁困难于生计但拒绝了所有提亲在艰苦中从未停止服侍、照顾张白的姐妹。事情传到朝廷皇帝褒奖陆郁生号其为“义姑”。她的表侄姚信在文集中称赞她的义举。',
dongxie:'董卓之女,牛辅之妻。在《三国群英传》中名为董宜,在电视剧《三国群英会之吕布与貂蝉》中名为董媛。',
caoanmin:'曹安民(?-197年沛国谯县今安徽亳州字安民。东汉时期人物曹德之子曹操之侄曹昂的堂兄弟曹丕的堂兄死于宛城之战。按曹丕《典论》记载的“亡兄孝廉子脩、从兄安民遇害。”等情况来看安民应该是曹操侄子错不了曹丕是他们属于兄弟关系肯定不会弄错。另外从典论的记载来看安民是和子脩并提的子脩是曹昂的字安民则肯定也是字不是名至于三国志中记载则应取自曹丕之《典论》但陈寿又不知曹安民其名故写为“长子昂、弟子安民”。',
},
characterTitle:{
wulan:'#b对决限定武将',
leitong:'#b对决限定武将',
chunyuqiong:'#b对决限定武将',
sp_xuyou:'#g4v4限定武将',
},
perfectPair:{},
characterFilter:{
chunyuqiong:function(mode){
return mode!='identity'&&mode!='guozhan';
},
leitong:function(mode){
return mode!='identity'&&mode!='guozhan';
},
wulan:function(mode){
return mode!='identity'&&mode!='guozhan';
},
sp_xuyou:function(mode){
return mode=='versus'&&['guandu','4v4','four'].contains(_status.mode);
},
},
dynamicTranslate:{
xinlvli:function(player){
var str='每回合限一次';
if(player.storage.choujue) str+='(自己的回合内则改为限两次)';
str+=',当你造成';
if(player.storage.beishui) str+='或受到';
str+='伤害后你可选择1若你的体力值大于你的手牌数你摸张牌2若你的手牌数大于你的体力值且你已受伤你回复点体力为你的手牌数与体力值之差。';
return str;
},
lvli:function(player){
var str='每名角色的回合限一次';
if(player.storage.choujue) str+='(自己的回合内则改为限两次)';
str+=',你可以声明一个基本牌或普通锦囊牌的牌名,有随机概率视为使用之(装备区里的牌数越多,成功概率越大)';
if(player.storage.beishui) str+='。当你受到伤害后,你也可以以此法使用一张牌。';
return str;
},
mubing:function(player){
if(player.storage.mubing2) return '出牌阶段开始时,你可以展示牌堆顶的四张牌。你可弃置任意张手牌,并可获得任意张点数之和不大于你弃置的牌点数之和的牌。然后你可将以此法获得的牌以任意方式交给其他角色。';
return '出牌阶段开始时,你可以展示牌堆顶的三张牌。你可弃置任意张手牌,并可获得任意张点数之和不大于你弃置的牌点数之和的牌。';
},
rezhongjian:function(player){
return '出牌阶段限'+(player.hasSkill('recaishi2')?'两':'一')+'次,你可以选择一名本回合内未选择过的角色。你令其获得一项效果直至你的下回合开始:①其下次造成伤害后弃置两张牌,然后你摸一张牌。②其下次受到伤害后摸两张牌,然后你摸一张牌。'
},
bazhan:function(player){
if(player.storage.bazhan) return '转换技,出牌阶段限一次,阴:你可以将至多两张手牌交给一名其他角色。<span class="bluetext">阳:你可以获得一名其他角色的至多两张手牌。</span>若以此法移动的牌包含【酒】或♥牌则你可令得到此牌的角色执行一项①回复1点体力。②复原武将牌。';
return '转换技,出牌阶段限一次,<span class="bluetext">阴:你可以将至多两张手牌交给一名其他角色。</span>阳你可以获得一名其他角色的至多两张手牌。若以此法移动的牌包含【酒】或♥牌则你可令得到此牌的角色执行一项①回复1点体力。②复原武将牌。';
},
zhiren:function(player){
return '当你于'+(player.hasSkill('yaner_zhiren')?'一':'你的')+'回合内使用第一张非转化牌时你可依次执行以下选项中的前X项①卜算X。②可弃置场上的一张装备牌和延时锦囊牌。③回复1点体力。④摸三张牌。X为此牌的名称的字数';
},
cuijian:function(player){
return '出牌阶段限一次,你可以选择一名有手牌的其他角色。若其手牌中:有【闪】,其将装备区内的防具牌和所有【闪】交给你,然后你交给其'+(player.hasMark('tongyuan_tao')?'一张':'等量的')+'牌;没有【闪】,你'+(player.hasMark('tongyuan_wuxie')?'摸一张':'弃置一张手')+'牌。';
},
},
perfectPair:{
},
characterReplace:{
lijue:['lijue','ns_lijue'],
fanchou:['fanchou','ns_fanchou'],
zhangji:['zhangji','ns_zhangji'],
zhangchangpu:['ol_zhangchangpu','zhangchangpu'],
huangfusong:['huangfusong','old_huangfusong'],
wenyang:['wenyang','db_wenyang','diy_wenyang'],
dingyuan:['ol_dingyuan','dingyuan'],
quyi:['quyi','re_quyi'],
hansui:['xin_hansui','re_hansui'],
jin_simashi:['jin_simashi','simashi'],
jin_yanghuiyu:['jin_yanghuiyu','yanghuiyu'],
chunyuqiong:['chunyuqiong','re_chunyuqiong'],
taoqian:['taoqian','re_taoqian'],
sp_liubei:['sp_liubei','jsp_liubei'],
dongcheng:['re_dongcheng','dongcheng'],
hucheer:['re_hucheer','hucheer'],
dongbai:['re_dongbai','dongbai'],
gexuan:['gexuan','tw_gexuan'],
panshu:['panshu','re_panshu'],
},
translate:{
lijue:"李傕",
zhangji:"张济",
fanchou:"樊稠",
guosi:"郭汜",
lvkai:"吕凯",
zhanggong:"张恭",
weiwenzhugezhi:"卫温诸葛直",
xurong:"徐荣",
zhangqiying:"张琪瑛",
sp_liuqi:'刘琦',
xf_tangzi:"唐咨",
xf_huangquan:"黄权",
xf_sufei:"苏飞",
"xinfu_langxi":"狼袭",
"xinfu_langxi_info":"准备阶段你可以对一名体力小于或等于你的其他角色造成02点随机伤害。",
"xinfu_yisuan":"亦算",
"xinfu_yisuan_info":"每回合限一次。当你于出牌阶段使用的锦囊牌进入弃牌堆时你可以减1点体力上限从弃牌堆中获得之。",
"xinfu_xingluan":"兴乱",
"xinfu_xingluan_info":"每回合限一次。当你于出牌阶段使用的仅指定一个目标的牌结算完成后你可以从牌堆中随机获得一张点数为6的牌。",
"xinfu_lveming":"掠命",
"xinfu_lveming_info":"出牌阶段限一次,你可以选择一名装备区装备比你少的角色,令其选择一个点数,然后你进行判定:<br>若点数相同你对其造成2点伤害<br>若点数不同,则你随机获得其区域内的一张牌。",
"xinfu_tunjun":"屯军",
"xinfu_tunjun_info":"限定技出牌阶段你可以选择一名角色令其随机使用牌堆中的X张装备牌。(X为你发动过“掠命”的次数)",
"xinfu_tanbei":"贪狈",
"xinfu_tanbei_info":"出牌阶段限一次你可以令一名其他角色选择一项1.令你随机获得其区域内的一张牌本回合内你不能对其使用牌。2.令你此回合内对其使用牌没有次数与距离限制。",
"xinfu_sidao":"伺盗",
xinfu_sidaox:'伺盗',
"xinfu_sidao_info":"出牌阶段限一次,当你对一名其他角色连续使用两张牌后,你可以将一张手牌当做【顺手牵羊】对其使用。",
"tanbei_effect1":"贪狈",
"tanbei_effect1_info":"",
"tanbei_effect2":"贪狈",
"tanbei_effect2_info":"",
"xinfu_tunan":"图南",
"xinfu_tunan_info":"出牌阶段限一次,你可以展示牌堆顶的一张牌并选择一名其他角色,然后该角色选择一项:使用此牌(无距离限制);或将此牌当普通【杀】使用。",
"xinfu_bijing":"闭境",
"xinfu_bijing_info":"结束阶段,你可以选择一张手牌并标记为“闭境”。若你于回合外失去“闭境”牌,则当前回合角色的弃牌阶段开始时,其需弃置两张牌。你的准备阶段,弃置手牌中的“闭境”牌。",
"xinfu_zhenxing":"镇行",
"xinfu_zhenxing_info":"结束阶段开始时或当你受到伤害后,你可以观看牌堆顶的至多三张牌,然后你获得其中与其余牌花色均不相同的一张牌。",
"xinfu_qianxin":"遣信",
"xinfu_qianxin_info":"出牌阶段限一次若牌堆中没有“信”你可以选择一名角色并将任意张手牌放置于牌堆中X倍数的位置X为存活人数称为“信”。该角色的弃牌阶段开始时若其手牌区内有于本回合内获得过的“信”其选择一项令你将手牌摸至四张本回合手牌上限-2。",
"qianxin_effect":"遣信",
"qianxin_effect_info":"",
"xinfu_qianxin2":"遣信",
"xinfu_qianxin2_info":"",
"xinfu_fuhai":"浮海",
"xinfu_fuhai_info":"出牌阶段每个方向限一次你可以展示一张手牌并选择上家或下家。该角色展示一张手牌若你展示的牌点数大于等于其展示的牌点数你弃置你展示的牌然后继续对其上家或下家重复此流程若你展示的牌点数小于该展示角色牌的点数则该角色弃置其展示的牌然后你与其各摸X张牌X为你此回合内发动此技能选择的角色数且你此阶段内不能再发动〖浮海〗。",
"fuhai_clear":"浮海",
"fuhai_clear_info":"",
"xz_xunxun":"恂恂",
"xz_xunxun_info":"摸牌阶段,你可以观看牌堆顶的四张牌,然后将其中的两张牌置于牌堆顶,并将其余的牌以任意顺序置于牌堆底。",
"xinfu_xingzhao":"兴棹",
"xinfu_xingzhao_info":"锁定技若X≥1你视为拥有技能〖恂恂〗。若X≥2当你使用装备牌时你摸一张牌。若X≥3弃牌阶段开始时你跳过此阶段。X为场上已受伤的角色数",
"xinfu_xingzhao2":"兴棹",
"xinfu_xingzhao2_info":"",
"xinfu_dianhu":"点虎",
"xinfu_dianhu_info":"锁定技,游戏开始时,你选择一名其他角色。当其受到来自你的伤害后或回复体力后,你摸一张牌。",
"xinfu_dianhu2":"点虎",
"xinfu_dianhu2_info":"",
"xinfu_jianji":"谏计",
"xinfu_jianji_info":"出牌阶段限一次,你可以令一名其他角色摸一张牌。然后该角色可以使用此牌。",
"xinfu_lianpian":"联翩",
"xinfu_lianpian_info":"出牌阶段限三次。当你对一名角色连续使用牌时,你可以摸一张牌,然后可以将一张牌交给该角色。",
spwenji:'问计',
spwenji_info:'出牌阶段开始时,你可以令一名其他角色交给你一张牌。你于本回合内使用与该牌名称相同的牌时不能被其他角色响应。',
sptunjiang:'屯江',
sptunjiang_info:'结束阶段若你未跳过本回合的出牌阶段且你于本回合出牌阶段内未使用牌指定过其他角色为目标则你可以摸X张牌X为全场势力数。',
zongkui:'纵傀',
zongkui_mark:'纵傀',
zongkui_mark_bg:'傀',
zongkui_info:'回合开始时,你可以指定一名未拥有“傀”标记的其他角色,令其获得一枚“傀”标记。每轮游戏开始时,你指定一名体力值最少且没有“傀”标记的其他角色,令其获得一枚“傀”标记。',
guju:'骨疽',
guju_info:'锁定技,拥有“傀”标记的角色受到伤害后,你摸一张牌。',
baijia:'拜假',
baijia_info:'觉醒技准备阶段若你因〖骨疽〗获得的牌不少于7张则你增加1点体力上限回复1点体力然后令所有未拥有“傀”标记的其他角色获得“傀”标记最后失去技能〖骨疽〗并获得技能〖蚕食〗。',
bmcanshi:'蚕食',
bmcanshi_info:'一名角色使用基本牌或普通锦囊牌指定你为唯一目标时,若其有“傀”标记,你可以取消之,然后其失去“傀”标记;你使用牌仅指定一名角色为目标时,你可以额外指定任意名带有“傀”标记的角色为目标(无距离限制),然后这些角色失去“傀”标记。',
xinpi:'辛毗',
lisu:'李肃',
zhangwen:'张温',
puyuan:'蒲元',
xushao:'许劭',
mangyachang:"忙牙长",
xugong:"许贡",
zhangchangpu:"张昌蒲",
guanlu:'管辂',
gexuan:'葛玄',
tuiyan:'推演',
tuiyan_info:'出牌阶段开始时,你可以观看牌堆顶的三张牌。',
busuan:'卜算',
busuan_info:'出牌阶段限一次,你可以选择一名其他角色,然后选择至多两张不同的卡牌名称(限基本牌或锦囊牌)。该角色下次摸牌阶段摸牌时,改为从牌堆或弃牌堆中获得你选择的牌。',
busuan_angelbeats:'卜算',
mingjie:'命戒',
mingjie_info:'结束阶段你可以摸一张牌若此牌为红色你可以重复此流程直到摸到黑色牌或摸到第三张牌。当你以此法摸到黑色牌时若你的体力值大于1则你失去1点体力。',
gxlianhua:'炼化',
gxlianhua_info:'你的回合外,每当有其他角色受到伤害后,你获得一个“丹血”标记(该角色与你阵营一致时为红色,不一致为黑色,此颜色对所有玩家均不可见)直到你的准备阶段开始。准备阶段,根据你获得的“丹血”标记的数量和颜色,你从牌堆/弃牌堆中获得相应的牌以及相应技能直到回合结束。3枚或以下〖英姿〗和【桃】超过3枚且红色“丹血”较多〖观星〗和【无中生有】超过3枚且黑色“丹血”较多〖直言〗和【顺手牵羊】超过3枚且红色和黑色一样多【杀】、【决斗】和〖攻心〗。',
zhafu:'札符',
zhafu_info:' 限定技出牌阶段你可以选择一名其他角色令其获得一枚「札」。有「札」的角色弃牌阶段开始时若其手牌数大于1其移去「札」并选择保留一张手牌然后将其余的手牌交给你。',
pingjian:'评荐',
pingjian_info:'结束阶段开始时/当你受到伤害后/出牌阶段限一次,你可以令系统随机从剩余武将牌堆中检索出三张拥有发动时机为结束阶段开始时/当你受到伤害后/出牌阶段的技能的武将牌。然后你可以选择尝试发动其中一个技能。每个技能每局只能选择一次。',
pingjian_use:'评荐',
pytianjiang:'天匠',
pytianjiang_info:'游戏开始时,你随机获得两张不同副类别的装备牌,并置入你的装备区。出牌阶段,你可以将装备区的牌移动至其他角色的装备区(可替换原装备)。若你以此法移动了〖铸刃〗的衍生装备,你摸两张牌。',
pytianjiang_move:'天匠',
pyzhuren:'铸刃',
pyzhuren_info:'出牌阶段限一次,你可以弃置一张手牌。根据此牌的花色点数,你有一定概率打造成功并获得一张武器牌(若打造失败或武器已有则改为摸一张【杀】,花色决定武器名称,点数决定成功率)。此武器牌进入弃牌堆时,将其移出游戏。',
pyzhuren_destroy:'铸刃',
pyzhuren_heart:'红缎枪',
pyzhuren_heart_info:'每回合限一次当你使用【杀】造成伤害后你可以进行判定若结果为红色你回复1点体力黑色你摸两张牌。',
pyzhuren_diamond:'烈淬刀',
pyzhuren_diamond_info:'每回合限两次,当你使用【杀】对目标角色造成伤害时,你可以弃置一张牌,令此伤害+1。你使用【杀】的次数上限+1。',
pyzhuren_club:'水波剑',
pyzhuren_club_info:'每回合限两次当你使用普通锦囊牌或【杀】时你可以为此牌增加一个目标。当你失去装备区里的【水波剑】后你回复1点体力。',
pyzhuren_spade:'混毒弯匕',
pyzhuren_spade_info:'当你使用【杀】指定目标后你可令其失去X点体力X为此技能本回合内发动过的次数且至多为5。',
pyzhuren_shandian:'天雷刃',
pyzhuren_shandian_info:'当你使用【杀】指定目标后可令其进行判定若结果为黑桃其受到3点雷属性伤害梅花其受到1点雷属性伤害你回复1点体力并摸一张牌。',
songshu:'颂蜀',
songshu_info:'出牌阶段,你可以和其他角色拼点。若你没赢,其摸两张牌,且你本阶段内不能再发动〖颂蜀〗',
sibian:'思辩',
sibian_info:'摸牌阶段,你可以放弃摸牌,改为亮出牌堆顶的四张牌,然后获得其中所有点数最大与点数最小的牌。若获得的牌是两张且点数之差小于存活人数,则你可以将剩余的牌交给手牌数最少的角色。',
lslixun:'利熏',
lslixun_fate:'利熏',
lslixun_info:'锁定技,当你受到伤害时,你防止此伤害,然后获得等同于伤害值的“珠”标记。出牌阶段开始时,你进行判定,若结果点数小于“珠”的数量,你弃置等同于“珠”数量的手牌(若弃牌的牌数不够,则失去剩余数量的体力值)。',
lskuizhu:'馈珠',
lskuizhu_info:'出牌阶段结束时你可以选择体力值为全场最多的一名其他角色将手牌摸至与该角色相同最多摸至五张然后该角色观看你的手牌弃置任意张手牌并从观看的牌中获得等量的牌。若其获得的牌大于一张则你选择一项移去一个“珠”或令其对其攻击范围内的一名角色造成1点伤害。',
xpchijie:'持节',
xpchijie_info:'每回合限一次。①当你受到其他角色使用的牌造成的伤害时,你可以令此牌对所有目标无效。②其他角色使用的牌结算完成时,若你是此牌的目标之一且此牌未造成过伤害,则你可以获得此牌对应的所有实体牌。',
xpchijie2:'持节',
yinju:'引裾',
yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你于此阶段内使用牌指定其为目标后,你与其各摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。',
yinju2:'引裾',
spjiedao:"截刀",
"spjiedao_info":"当你每回合第一次造成伤害时,你可令此伤害至多+XX为你损失的体力值。然后若受到此伤害的角色没有死亡你弃置等同于此伤害加值的牌。",
biaozhao:"表召",
"biaozhao_info":"结束阶段你可以将一张牌置于武将牌上称为“表”。当有一张与“表”花色点数均相同的牌进入弃牌堆时你将“表”置入弃牌堆并失去1点体力若此牌是其他角色因弃置而进入弃牌堆的则改为该角色获得“表”。准备阶段若你的武将牌上有“表”则你将“表”置入弃牌堆。然后你选择一名角色该角色回复1点体力且将手牌摸至与全场手牌数最多的人相同最多摸五张。",
"biaozhao2":"表召",
"biaozhao2_info":"",
"biaozhao3":"表召",
"biaozhao3_info":"",
yechou:"业仇",
"yechou_info":"当你死亡时你可以选择一名已损失体力值大于1的角色。直到其下个回合开始前每个回合结束时该角色失去1点体力。",
"yechou2":"业仇",
"yechou2_info":"",
yanjiao:"严教",
"yanjiao_info":"出牌阶段限一次,你可以选择一名其他角色并从牌堆顶亮出四张牌。该角色将这些牌分成点数之和相等的两组,你与其各获得其中一组,然后将剩余未分组的牌置入弃牌堆。若未分组的牌超过一张,则你本回合手牌上限-1。",
"yanjiao2":"严教",
"yanjiao2_info":"",
xingshen:"省身",
"xingshen_info":"当你受到伤害后,你可以摸一张牌且下一次发动〖严教〗亮出的牌数+1。若你的手牌数为全场最少则改为摸两张牌若你的体力值为全场最少则〖严教〗亮出的牌数改为+2加值总数不能超过4。",
sp_zhanghe:'SP张郃',
yuanlve:'远略',
yuanlve_info:'出牌阶段限一次,你可以将一张非装备牌交给一名角色,然后该角色可以使用该牌并令你摸一张牌。',
xunchen:'荀谌',
fenglve:'锋略',
fenglve2:'锋略',
fenglve_info:'出牌阶段开始时,你可以与一名角色拼点,若你赢,该角色将其区域内的各一张牌交给你;若你没赢,你交给其一张牌。当你的单人拼点结算后,你可以令对方获得你拼点的牌。',
mouzhi:'谋识',
mouzhi2:'谋识',
mouzhi_info:'出牌阶段限一次,你可以将一张手牌交给一名角色,若如此做,当其于其下回合的出牌阶段内对一名角色造成伤害后,若是此阶段其第一次对该角色造成伤害,你摸一张牌。',
sp_shenpei:'SP审配',
gangzhi:'刚直',
gangzhi_info:'锁定技,当你即将受到或造成伤害时,你防止此伤害,改为受到伤害的角色失去等量的体力。',
beizhan:'备战',
beizhan2:'备战',
beizhan_info:'结束阶段你可以令一名角色将手牌摸至体力上限至多为5。其下个回合开始时若其手牌数为全场最多则其此回合内使用的牌不能指定其他角色为目标。',
gaolan:'高览',
xiying:'袭营',
xiying2:'袭营',
xiying_info:'出牌阶段开始时,你可以弃置一张非基本手牌,然后令所有其他角色依次选择一项:弃置一张牌,或本回合内不能使用或打出牌;且你本回合内获得如下效果:结束阶段,若你于本回合的出牌阶段内造成过伤害,则你从牌堆中获得一张伤害性基本牌或普通锦囊牌。',
lvkuanglvxiang:'吕旷吕翔',
liehou:'列侯',
liehou_info:'出牌阶段限一次,你可以令一名攻击范围内的角色交给你一张手牌,然后你将一张手牌交给攻击范围内的另一名角色。',
qigong:'齐攻',
qigong_info:'当你使用的【杀】被【闪】抵消之后,你可以令一名角色再对目标角色使用一张【杀】(不可被响应)。',
chunyuqiong:'淳于琼',
sushou:'宿守',
sushou_info:'弃牌阶段开始时你可以摸X+1张牌X为“粮”数然后可以交给任意名友方角色各一张牌。',
cangchu:'仓储',
cangchu_info:'锁定技游戏开始时你获得3枚“粮”标记当你受到1点火焰伤害后你失去一枚“粮”标记。',
liangying:'粮营',
liangying_info:'锁定技,若你有“粮”标记,则友方角色摸牌阶段摸牌数+1当你失去所有“粮”标记后你减1点体力上限然后令敌方角色各摸两张牌。',
sp_xuyou:'SP许攸',
spshicai:'恃才',
spshicai2:'恃才',
spshicai_info:'出牌阶段,牌堆顶的一张牌对你可见。你可以弃置一张牌,然后获得牌堆顶的一张牌,且不能再发动〖恃才〗直到此牌离开你的手牌区。',
spfushi:'附势',
spfushi_info:'锁定技,若己方存活角色数:大于敌方,你视为拥有〖择主〗;小于敌方,你视为拥有〖逞功〗。',
zezhu:'择主',
zezhu_info:'出牌阶段限一次,你可以获得双方主帅的各一张牌(若无牌则改为你摸一张牌),然后交给双方主帅各一张牌。',
chenggong:'逞功',
chenggong_info:'当有角色使用牌指定目标后若此牌对目标数大于1则你可令使用者摸一张牌。',
leitong:'雷铜',
kuiji:'溃击',
kuiji_info:'出牌阶段限一次你可以将一张黑色基本牌当作【兵粮寸断】置于你的判定区然后摸一张牌。若如此做你可以对体力值最多的一名对手造成2点伤害。对手因此进入濒死状态时你或队友体力值最少的一方回复1点体力。',
wulan:'吴兰',
wlcuorui:'挫锐',
wlcuorui_info:'出牌阶段开始时你可以弃置你或队友区域里的一张牌。若如此做你选择一项1.弃置对手装备区里至多两张与此牌颜色相同的牌2.展示对手的共计两张手牌,然后获得其中与此牌颜色相同的牌。',
re_panfeng:'潘凤',
xinkuangfu:'狂斧',
xinkuangfu_info:'出牌阶段限一次你可选择1弃置装备区里的一张牌你使用无对应实体牌的普【杀】。若此【杀】造成伤害你摸两张牌。2弃置一名其他角色装备区里的一张牌你使用无对应实体牌的普【杀】。若此【杀】未造成伤害你弃置两张手牌。',
xingdaorong:'邢道荣',
xuxie:'虚猲',
xuxie_info:'出牌阶段开始时你可以减1点体力上限并选择所有与你距离为1的角色弃置这些角色的各一张牌或令这些角色各摸一张牌。出牌阶段结束时若你的体力上限为全场最少则你加1点体力上限。',
huaman:'花鬘',
hmmanyi:'蛮裔',
hmmanyi_info:'锁定技,【南蛮入侵】对你无效。',
mansi_viewas:'蛮嗣',
mansi:'蛮嗣',
mansi_info:'出牌阶段限一次,你可以将所有手牌当做【南蛮入侵】使用;当有角色受到【南蛮入侵】的伤害后,你摸一张牌。',
souying:'薮影',
souying_info:'每回合限一次,当你对其他角色(或其他角色对你)使用【杀】或普通锦囊牌指定唯一目标后,若此牌不是本回合你对其(或其对你)使用的第一张【杀】或普通锦囊牌,你可以弃置一张牌,获得此牌对应的所有实体牌(或令此牌对你无效)。',
zhanyuan:'战缘',
zhanyuan_info:'觉醒技准备阶段若你已因蛮嗣累计获得超过7张牌你加一点体力上限并回复1点体力并可以选择一名男性角色你与其获得技能〖系力〗然后你失去技能〖蛮嗣〗',
hmxili:'系力',
hmxili_info:'每回合限一次,你的回合外,当其他拥有【系力】技能的角色在其回合内对没有【系力】技能的角色造成伤害时,你可以弃置一张牌,令此伤害+1然后你与其各摸两张牌。',
wangshuang:'王双',
spzhuilie:'追猎',
spzhuilie2:'追猎',
spzhuilie_info:'锁定技你使用【杀】无距离限制当你使用【杀】指定目标后若其不在你的攻击范围内此【杀】不计入使用次数限制且你判定。若判定结果为武器牌或坐骑牌此【杀】的伤害基数改为XX为其体力值。否则你失去1点体力。',
wenyang:'文鸯',
xinlvli:'膂力',
xinlvli_info:'每回合限一次当你造成伤害后你可选择1若你的体力值大于你的手牌数你摸张牌2若你的手牌数大于你的体力值且你已受伤你回复点体力为你的手牌数与体力值之差。',
lvli:'膂力',
lvli4:'膂力',
lvli5:'膂力',
lvli_info:'每名角色的回合限一次,你可以声明一个基本牌或普通锦囊牌的牌名,有随机概率视为使用之(装备区里的牌数越多,成功概率越大)',
choujue:'仇决',
choujue_info:'觉醒技一名角色的回合结束时若你的手牌数和体力值相差3或更多你减1点体力上限并获得技能〖背水〗然后将〖膂力〗改为“在自己的回合时每回合限两次”。',
beishui:'背水',
beishui_info:'觉醒技准备阶段若你的手牌数或体力值小于2你减1点体力上限并获得技能〖清剿〗然后将〖膂力〗改为受到伤害后也可以发动。',
qingjiao:'清剿',
qingjiao_info:'出牌阶段开始时,你可以弃置所有手牌,然后从牌堆或弃牌堆中随机获得八张牌名各不相同且副类别不同的牌。若如此做,结束阶段,你弃置所有牌。',
re_liuzan:'留赞',
refenyin:'奋音',
refenyin_info:'锁定技,你的回合内,当一张牌进入弃牌堆后,若本回合内没有过与此牌花色相同的卡牌进入过弃牌堆,则你摸一张牌。',
liji:'力激',
liji_info:'出牌阶段限X次你可以弃置一张牌并对一名其他角色造成1点伤害。X为本回合内进入过弃牌堆的卡牌数除以8若场上人数小于5则改为除以4向下取整',
re_sunluyu:'孙鲁育',
remeibu:'魅步',
remeibu_info:'其他角色的出牌阶段开始时若你在其攻击范围内你可以弃置一张牌A该角色于本阶段内拥有〖止息〗且当其因〖止息〗弃置与牌A花色相同的牌时你获得之。',
rezhixi:'止息',
rezhixi_info:'锁定技,当你使用【杀】或普通锦囊牌时,你弃置一张手牌。',
remumu:'穆穆',
remumu_info:'出牌阶段开始时你可以选择一项1.弃置一名其他角色装备区里的一张牌,然后你本回合可使用【杀】的次数+12.获得一名角色装备区里的一张牌,然后你本回合可使用【杀】的次数-1。',
sp_zhangliao:'SP张辽',
//这仨技能给SP仲村由理毫无违和感好吗
mubing:'募兵',
mubing_info:'出牌阶段开始时,你可以展示牌堆顶的三张牌。你可弃置任意张手牌,并可获得任意张点数之和不大于你弃置的牌点数之和的牌。',
ziqu:'资取',
ziqu_info:'每名角色限一次,当你对有牌的其他角色造成伤害后,你可以防止此伤害。然后其将其点数最大的牌交给你。',
diaoling:'调令',
diaoling_info:'觉醒技准备阶段若你已因〖募兵〗获得了6张或更多的【杀】或武器牌或伤害锦囊牌则你回复1点体力或摸两张牌然后修改〖募兵〗。',
mubing_rewrite:'募兵·改',
mubing_rewrite_info:'出牌阶段开始时,你可以展示牌堆顶的四张牌。你可弃置任意张手牌,并可获得任意张点数之和不大于你弃置的牌点数之和的牌。然后你可将以此法获得的牌以任意方式交给其他角色。',
caobuxing:'曹不兴',
moying:'墨影',
moying_info:'每回合限一次当你于回合外不因使用而失去单一一张锦囊牌或装备牌后你可以选择一个花色和与此牌点数差绝对值不超过2的点数然后获得牌堆中所有与此牌花色点数相同的牌。',
juanhui:'绢绘',
juanhui2:'绢绘',
juanhui2_backup:'绢绘',
juanhui_info:'结束阶段,你可以选择一名其他角色。记录该角色下回合的出牌阶段里使用的基本牌和普通锦囊牌(每种牌名限记一次),你的下回合出牌阶段,可将一张手牌当这些牌里的任意一张牌使用(每张限使用一次,且【杀】不计次数)。当"绢绘"的牌全部用完时你回复1点体力并将手牌摸至三张。',
re_maliang:'马良',
rexiemu:'协穆',
rexiemu_info:'结束阶段,若全场没有“协穆”标记,你可以选择一名角色获得“协穆”标记直到你的下回合开始。你或该角色在各自的回合外使用或打出手牌时,你与其各摸一张牌(每回合限一次)。',
heli:'贺励',
heli_info:'出牌阶段限一次,你可以选择手牌数比你少的一名其他角色。该角色展示所有手牌,然后每缺少一种类型的牌,便从牌堆中随机获得一张此类型的牌。',
caoxing:'曹性',
cxliushi:'流矢',
cxliushi2:'流矢',
cxliushi_info:'出牌阶段,你可以将一张红桃牌置于牌堆顶,视为对一名角色使用一张【杀】(无距离限制且不计入使用次数)。当此【杀】造成伤害后,受到伤害的角色获得一个“流”。有“流”的角色手牌上限-XX为其“流”数。',
zhanwan:'斩腕',
zhanwan_info:'锁定技,有“流”的角色于弃牌阶段弃牌后,你摸等量的牌,然后其移去所有的“流”。',
zhujun:'朱儁',
gongjian:'攻坚',
gongjian_info:'每回合限一次,当你使用【杀】指定目标后,若此【杀】和你使用的上一张【杀】或场上使用的上一张【杀】有相同的目标,则你可以弃置其两张牌,然后获得以此法弃置的所有【杀】。',
kuimang:'溃蟒',
kuimang_info:'锁定技,一名角色死亡后,若你对其造成过伤害,你摸两张牌。',
liuhong:'刘宏',
yujue:'鬻爵',
yujue_backup:'鬻爵',
yujue_info:'出牌阶段限一次,你可以废除一个装备栏,然后令一名有手牌的其他角色交给你一张手牌。其获得〖执笏〗直到你的下回合开始。',
zhihu:'执笏',
zhihu_mark:'执笏',
zhihu_info:'锁定技,每回合限两次,当你对其他角色造成伤害后,你摸两张牌。',
tuxing:'图兴',
tuxing2:'图兴',
tuxing_info:'锁定技当你废除一个装备栏时你加1点体力上限并回复1点体力。然后若你所有的装备栏均已被废除则你减4点体力上限且本局游戏内造成的伤害+1。',
re_hejin:'何进',
xin_baosanniang:'鲍三娘',
decadexushen:"许身",
decadexushen2:'许身',
decadexushen_info:"限定技当你进入濒死状态后你可以回复1点体力并获得技能“镇南”然后如果你脱离濒死状态且“关索”不在场你可令一名其他角色选择是否用“关索”代替其武将并令其摸三张牌。",
decadezhennan:"镇南",
decadezhennan_info:"当有角色使用普通锦囊牌指定目标后若此牌目标数大于1你可以对一名其他角色造成1点伤害。",
liubian:'刘辩',
shiyuan:'诗怨',
shiyuan_info:'每回合每项限一次,当你成为其他角色使用牌的目标后:①若其体力值大于你,你摸三张牌。②若其体力值等于你,你摸两张牌。③若其体力值小于你,你摸一张牌。',
dushi:'毒逝',
dushi_info:'锁定技,你处于濒死状态时,其他角色不能对你使用【桃】。你死亡时,你选择一名其他角色获得〖毒逝〗。',
yuwei:'余威',
yuwei_info:'主公技,锁定技,其他群雄角色的回合内,你将〖诗怨〗改为“每回合每项限两次”。',
ol_dingyuan:'丁原',
cixiao:'慈孝',
cixiao_info:'准备阶段,若场上没有“义子”标记,你可令一名其他角色获得一个“义子”标记;若场上有“义子”标记,你可以弃置一张牌移动“义子”标记。拥有“义子”标记的角色获得技能“叛弑”。',
panshi:'叛弑',
panshi_info:'锁定技,准备阶段,你交给有“慈孝”技能的角色一张手牌;当你于出牌阶段因使用【杀】对其他角色造成伤害时,若其拥有技能“慈孝”,则此伤害+1且你结束出牌阶段。',
xianshuai:'先率',
xianshuai_info:'锁定技有角色造成伤害后若此伤害是本轮第一次造成伤害你摸一张牌若伤害来源是你则你对受伤角色再造成1点伤害。',
wangrong:'王荣',
minsi:'敏思',
minsi2:'敏思',
minsi_info:'出牌阶段限一次你可以弃置任意张点数之和为13的牌然后摸两倍数量的牌。以此法获得的牌中黑色牌本回合无距离限制红色牌本回合不计入手牌上限。',
jijing:'吉境',
jijing_info:'当你受到伤害后你可以进行一次判定然后若你弃置任意张点数之和与判定结果点数相同的牌你回复1点体力。',
zhuide:'追德',
zhuide_info:'当你死亡时,你可令一名其他角色从牌堆中获得四张名称各不相同的基本牌。',
re_xinxianying:'辛宪英',
rezhongjian:'忠鉴',
rezhongjian2:'忠鉴',
rezhongjian_info:'出牌阶段限一次,你可以选择一名本回合内未选择过的角色。你令其获得一项效果直至你的下回合开始:①其下次造成伤害后弃置两张牌,然后你摸一张牌。②其下次受到伤害后摸两张牌,然后你摸一张牌。',
recaishi:'才识',
recaishi3:'才识',
recaishi_info:'摸牌阶段结束时若你于本阶段内因摸牌而获得的所有的牌花色均相同你将〖忠鉴〗于本回合内改为“出牌阶段限两次”。不均相同你可回复1点体力。若如此做你本回合内不能对自己使用牌。',
decadewuniang:'武娘',
decadewuniang_info:'当你使用或打出【杀】时,你可以获得一名其他角色的一张牌。若如此做,其摸一张牌。(若你已发动许身,则关索也摸一张牌)',
dongxie:'董翓',
juntun:'军屯',
juntun_info:'锁定技准备阶段若X大于1则你减1点体力上限并摸X张牌X为你的体力上限。',
jiaojie:'狡黠',
jiaojie_info:'锁定技,你的红色牌不计入手牌上限。你使用黑色牌无距离和次数限制。',
buchen:'不臣',
buchen_info:'隐匿技,你于其他角色的回合登场时,可获得当前回合角色的一张牌。',
smyyingshi:'鹰视',
smyyingshi_info:'锁定技出牌阶段你可观看牌堆顶的X张牌X为你的体力上限。',
xiongzhi:'雄志',
xiongzhi_info:'限定技,出牌阶段,你可展示牌堆顶的一张牌并使用之。若如此做,你重复此流程,直到你以此法展示的牌无法使用。',
quanbian:'权变',
quanbian2:'权变',
quanbian_info:'当你于出牌阶段内使用/打出手牌时,若此牌有花色且你本回合内未使用/打出过该花色的其他手牌则你可以选择一项①摸一张牌。②将牌堆顶X张牌中的一张置于牌堆底X为你的体力上限。若你发动此技能则你本回合内不能再使用与此牌花色相同的手牌。',
re_hansui:'韩遂',
re_quyi:'麴义',
refuqi:'伏骑',
refuqi_info:'锁定技当你使用牌时你令所有距离为1的其他角色不能使用或打出牌响应此牌。',
hanfu:'韩馥',
hfjieying:'节应',
hfjieying2:'节应',
hfjieying3:'节应',
hfjieying_info:'结束阶段,你可以选择一名其他角色,该角色下回合使用【杀】或普通锦囊牌无距离限制且可多指定一个目标,且当其造成伤害后,其无法再使用牌直到回合结束。 ',
weipo:'危迫',
weipo_info:'锁定技其他角色使用【杀】或普通锦囊牌指定你为目标后若你的手牌数小于X则你将手牌摸至X张并记录摸牌事件结算后的手牌数Y。此牌结算结束后若你的手牌数小于Y则你将一张手牌交给此牌的使用者且此技能失效直到你的下回合开始。X为你的体力上限且至多为5 ',
guozhao:'郭照',
pianchong:'偏宠',
pianchong2:'偏宠',
pianchong_info:'摸牌阶段开始时,你可放弃摸牌。若如此做,你从牌堆中获得一张红色牌和一张黑色牌。然后你选择一种颜色。你的下回合开始前,当你失去该颜色的一张牌后,你从牌堆中获得另一种颜色的一张牌。',
zunwei:'尊位',
zunwei_backup:'尊位',
zunwei_info:"出牌阶段限一次你可选择本局游戏内未选择过的一项①若你已受伤则你可以选择一名体力值大于你的其他角色你将体力值回复至XX为你的体力上限与其体力值中的较小值②选择一名手牌数大于你的其他角色你将手牌数摸至与其相同至多摸五张③选择一名装备区内牌数大于你的其他角色。你令X=1。若你装备区内的('equip'+X)栏为空,则你使用牌堆中的一张副类别为('equip'+X)且能对自己使用的装备牌。你令X+1。若X不大于5且你装备区内的牌数仍小于目标角色则你重复此流程。",
re_chunyuqiong:'淳于琼',
recangchu:'仓储',
recangchu2:'仓储',
recangchu3:'仓储',
recangchu_info:'锁定技游戏开始时你获得3个“粮”。你的手牌上限+XX为“粮”数。当你于回合外获得牌时你获得一个“粮”。你的“粮”数不能超过存活角色数',
reliangying:'粮营',
reliangying_info:'弃牌阶段开始时你可以摸至多X张牌然后交给等量的角色各一张牌。X为你的“粮”数',
reshishou:'失守',
reshishou2:'失守',
reshishou_info:'锁定技当你使用【酒】时或受到1点火焰伤害后你移去一个“粮”。准备阶段若你没有“粮”你失去1点体力。',
ol_lisu:'OL李肃',
qiaoyan:'巧言',
qiaoyan_info:'锁定技,当你于回合外受到其他角色造成的伤害时,若你:有“珠”,则你令伤害来源获得“珠”;没有“珠”,则你防止此伤害,然后摸一张牌,并将一张牌正面朝上置于武将牌上,称为“珠”。',
xianzhu:'献珠',
xianzhu_info:'锁定技出牌阶段开始时你令一名角色A获得“珠”。若A不为你自己则你选择A攻击范围内的一名角色B视为A对B使用一张【杀】。',
fanyufeng:'樊玉凤',
bazhan:'把盏',
bazhan_info:'转换技出牌阶段限一次你可以将至多两张手牌交给一名其他角色。阳你可以获得一名其他角色的至多两张手牌。若以此法移动的牌包含【酒】或♥牌则你可令得到牌的角色执行一项①回复1点体力。②复原武将牌。',
jiaoying:'醮影',
jiaoying2:'醮影',
jiaoying3:'醮影',
jiaoying3_draw:'醮影',
jiaoying_info:'锁定技,其他角色获得你的手牌后,该角色本回合不能使用或打出与此牌颜色相同的牌。然后此回合结束时,若其本回合没有再使用牌,你令一名角色将手牌摸至五张。',
zhaozhong:'赵忠',
yangzhong:'殃众',
yangzhong_info:'当你造成或受到伤害后若受伤角色和伤害来源均存活则伤害来源可弃置两张牌然后令受伤角色失去1点体力。',
huangkong:'惶恐',
huangkong_info:'锁定技,当你于回合外成为【杀】或伤害类锦囊牌的唯一目标后,若你没有手牌,则你摸两张牌。',
re_taoqian:'陶谦',
reyixiang:'义襄',
reyixiang_info:'锁定技,其他角色于其出牌阶段内使用的第一张牌对你的伤害-1其使用的第二张牌若为黑色则对你无效。',
caosong:'曹嵩',
cslilu:'礼赂',
cslilu_info:'摸牌阶段你可以放弃摸牌改为将手牌摸至X张X为你的体力上限和5中的最小值然后将至少一张手牌交给一名其他角色。若你以此法给出的牌数大于你上次以此法给出的牌数则你加1点体力上限并回复1点体力。',
csyizheng:'翊正',
csyizheng2:'翊正',
csyizheng_info:'结束阶段开始时你可以选择一名其他角色。你的下回合开始前当该角色造成伤害或回复体力时若其体力上限小于你则你减1点体力上限且令此伤害值/回复值+1。',
reyirang:'揖让',
reyirang_info:'出牌阶段开始时你可以将所有非基本牌交给一名体力上限大于你的其他角色然后调整体力上限至与该角色相同并回复X点体力X为你以此法交给其的牌数。',
xiahoujie:'夏侯杰',
liedan:'裂胆',
liedan_info:'锁定技其他角色的准备阶段开始时若X大于0则你摸X张牌。若X等于3则你加1点体力上限。若X为0则你失去1点体力并获得一枚“裂”X为你的手牌数体力值装备区牌数中大于其的数量。准备阶段若“裂”数大于4则你死亡。',
zhuangdan:'壮胆',
zhuangdan_mark:'壮胆',
zhuangdan_info:'锁定技,其他角色的回合结束时,若你的手牌数为全场唯一最多,则你令〖裂胆〗失效直到你下回合结束。',
ruanyu:'阮瑀',
xingzuo:'兴作',
xingzuo2:'兴作',
xingzuo_info:'出牌阶段开始时你可观看牌堆底的三张牌并用任意张手牌替换其中等量的牌。若如此做结束阶段你可令一名有手牌的角色用所有手牌替换牌堆底的三张牌。若其因此法失去的牌多于三张则你失去1点体力。',
miaoxian:'妙弦',
miaoxian_info:'若你的手牌中仅有一张黑色牌,你可将此牌当作任意一张普通锦囊牌使用(每种牌名每回合限一次);若你的手牌中仅有一张红色牌,你使用此牌时摸一张牌。',
liangxing:'梁兴',
lulve:'掳掠',
lulve_info:'出牌阶段开始时,你可选择一名有手牌且手牌数少于你的角色。其选择一项:①将所有手牌交给你,然后你将武将牌翻面。②将武将牌翻面,然后其视为对你使用一张【杀】。',
lxzhuixi:'追袭',
lxzhuixi_info:'锁定技,当你造成伤害或受到伤害时,若受伤角色的翻面状态和伤害来源的翻面状态不同,则此伤害+1。',
zhangmiao:'张邈',
mouni:'谋逆',
mouni_info:'准备阶段,你可对一名其他角色依次使用你手牌中所有的【杀】(若其进入了濒死状态,则终止此流程)。然后若这些【杀】中有未造成伤害的【杀】,则你跳过本回合的出牌阶段。',
zongfan:'纵反',
zongfan_info:'觉醒技结束阶段若你本回合内因〖谋逆〗使用过【杀】且未跳过本回合的出牌阶段则你将任意张牌交给一名其他角色然后加X点体力上限并回复X点体力X为你以此法给出的牌数。最后失去〖谋逆〗并获得〖战孤〗。',
zhangu:'战孤',
zhangu_info:'锁定技准备阶段若你的体力上限大于1且没有手牌/装备区内没有牌则你减1点体力上限然后从牌堆中获得三张类型不同的牌。',
re_niujin:'牛金',
recuorui:'摧锐',
recuorui_info:'你的第一个回合开始时你可以依次获得至多X名角色的各一张手牌X为你的体力值。',
reliewei:'裂围',
reliewei_info:'每回合限X次X为你的体力值当有其他角色因你造成伤害而进入濒死状态时你可以摸一张牌。',
duanwei:'段煨',
langmie:'狼灭',
langmie_damage:'狼灭',
langmie_info:'其他角色的出牌阶段结束时若其本阶段内使用过的牌中有类型相同的牌则你可以摸一张牌其他角色的结束阶段开始时若其本回合内造成的伤害大于1则你可以弃置一张牌并对其造成1点伤害。',
zhangheng:'张横',
dangzai:'挡灾',
dangzai_info:'出牌阶段开始时,你可将一名其他角色判定区内的一张牌移动至你的判定区内。',
liangjue:'粮绝',
liangjue_info:'锁定技当有黑色牌进入或者离开你的判定区或装备区后若你的体力值大于1你失去1点体力然后摸两张牌。',
tangji:'唐姬',
jielie:'节烈',
jielie_info:'你的第一个回合开始时选择一名其他角色该角色每次于其回合外摸牌时你摸等量的牌每回合限一次且至多摸三张其进入濒死状态时你可令其回复体力至1点每轮限一次。该角色死亡时你弃置所有牌并失去1点体力。',
kangge:'抗歌',
kangge_info:'当你受到除自己和“节烈”角色以外的角色造成的伤害时你可以防止此伤害并选择一种花色然后你失去X点体力从弃牌堆中随机获得X张此花色的牌X为伤害值。',
yangwan:'杨婉',
youyan:'诱言',
youyan_info:'出牌阶段/弃牌阶段各限一次,当你的牌因弃置进入弃牌堆后,你可以从牌堆中获得本次弃牌中没有的花色的牌各一张。',
zhuihuan:'追还',
zhuihuan2:'追还',
zhuihuan2_new:'追还',
zhuihuan_info:'结束阶段开始时你可以选择一名角色对其他角色不可见。记录所有对该角色造成过伤害的角色。该角色的下个准备阶段开始时停止记录且所有记录过的角色若体力值大于该角色则受到其造成的2点伤害若体力值小于等于该角色则随机弃置两张手牌。',
re_dongcheng:'董承',
xuezhao:'血诏',
xuezhao_info:'出牌阶段限一次你可弃置一张手牌并选择至多X名其他角色(X为你的体力值。这些角色依次选择是否交给你一张牌若选择是该角色摸一张牌且你本回合可多使用一张【杀】若选择否该角色本回合无法响应你使用的牌。',
re_hucheer:'胡车儿',
redaoji:'盗戟',
redaoji2:'盗戟',
redaoji_info:'其他角色第一次使用武器牌时,你可选择一项:①获得此牌。②令其本回合内不能使用或打出【杀】。',
fuzhong:'负重',
fuzhong_info:'锁定技当你于回合外获得牌后你获得一枚“重”标记。若X大于0你的手牌上限+1大于1你至其他角色的距离-1大于2你于摸牌阶段开始时令额定摸牌数+1大于3准备阶段你对一名其他角色造成1点伤害然后移去X枚“重”X为“重”数。',
heyan:'何晏',
yachai:'崖柴',
yachai_info:'当你受到伤害后,你可令伤害来源选择一项:①其本回合不能再使用手牌;②其展示所有手牌,然后弃置手牌中一种花色的所有牌。③交给你与你手牌数差值一半数量的手牌(向上取整);',
qingtan:'清谈',
qingtan_info:'出牌阶段限一次,你可令所有有手牌的角色同时选择一张手牌并同时展示。你可以获得其中花色唯一最多的牌,然后展示此花色牌的角色各摸一张牌。若如此做,弃置其他的牌。',
qiuliju:'丘力居',
koulve:'寇略',
koulve_info:'当你于出牌阶段内对其他角色造成伤害后你可以展示其一张手牌。若此牌为带有伤害标签的基本牌或锦囊牌则你获得之为红色牌你失去1点体力若已受伤则改为减1点体力上限然后摸两张牌。',
qljsuiren:'随认',
qljsuiren_info:'当你死亡时,你可以将手牌中所有的带有伤害标签的基本牌或锦囊牌交给一名其他角色。',
re_dongbai:'董白',
relianzhu:'连诛',
relianzhu_info:'出牌阶段限一次,你可将一张牌正面朝上交给一名其他角色。若此牌为:红色,你摸一张牌;黑色,对方弃置两张牌或令你摸两张牌。’',
rexiahui:'黠慧',
rexiahui_info:'锁定技①你的黑色牌不计入手牌上限。②当有其他角色获得你的黑色牌后其于下次扣减体力前不能使用打出弃置这些牌。③一名其他角色的回合结束时若其本回合失去过其所有“黠慧”牌则其失去1点体力。',
huaxin:'华歆',
wanggui:'望归',
wanggui_info:'每回合限触发一次当你造成或受到伤害后若你仅明置了此武将牌则你可对与你势力不同的一名角色造成1点伤害武将牌均明置则你可令与你势力相同的角色各摸一张牌。',
spwanggui:'望归',
spwanggui_info:'①当你受到伤害后你可以摸一张牌或和一名势力相同的其他角色各摸一张牌②每回合限一次当你造成伤害后你可以对一名与你势力不同的角色造成1点伤害。',
xibing:'息兵',
xibing_info:'当一名其他角色在其出牌阶段内使用黑色【杀】或黑色普通锦囊牌指定唯一角色为目标后,你可令该角色将手牌摸至当前体力值(至多摸五张)且本回合不能再使用手牌。',
xibing_info_guozhan:'当一名其他角色在其出牌阶段内使用第一张黑色【杀】或黑色普通锦囊牌指定唯一角色为目标后,你可令该角色将手牌摸至当前体力(至多摸五张)值且本回合不能再使用手牌。若你与其均明置了所有武将牌,则你可以暗置你与其各一张武将牌且本回合不能再明置此武将牌。',
luyusheng:'陆郁生',
zhente:'贞特',
zhente2:'贞特',
zhente_info:'每回合限一次当你成为其他角色使用基本牌或普通锦囊牌的目标后你可令使用者选择一项1.本回合不能再使用与此牌颜色相同的牌2.此牌对你无效。 ',
zhente_info_guozhan:'每回合限一次当你成为其他角色使用黑色基本牌或黑色普通锦囊牌的目标后你可令使用者选择一项1.本回合不能再使用黑色牌2.此牌对你无效。 ',
zhiwei:'至微',
zhiwei2:'至微',
zhiwei_info:'游戏开始时/你的回合开始时,若场上没有因此法被选择过的角色存活,则你选择一名其他角色。该角色造成伤害后,你摸一张牌,该角色受到伤害后,你随机弃置一张手牌。你弃牌阶段弃置的牌均被该角色获得。',
zhiwei_info_guozhan:'你明置此武将牌时,选择一名其他角色。该角色造成伤害后,你摸一张牌,该角色受到伤害后,你随机弃置一张手牌。你弃牌阶段弃置的牌均被该角色获得。该角色死亡时,若你的两个武将牌均明置,你暗置此武将牌。 ',
re_zoushi:'邹氏',
rehuoshui:'祸水',
rehuoshui_info:'准备阶段你可以令至多X名角色的非锁定技无效直到回合结束X为你已损失的体力值且至少为1。',
reqingcheng:'倾城',
reqingcheng_info:'出牌阶段限一次,你可以与一名手牌数小于你的男性角色交换手牌。',
re_panshu:'潘淑',
zhiren:'织纴',
zhiren_info:'当你于你的回合内使用第一张非转化牌时你可依次执行以下选项中的前X项①卜算X。②可弃置场上的一张装备牌和延时锦囊牌。③回复1点体力。④摸三张牌。X为此牌的名称的字数',
yaner:'燕尔',
yaner_info:'每回合限一次。当有其他角色于其出牌阶段内失去手牌后若其没有手牌则你可以与其各摸两张牌。若其以此法摸得的两张牌类型相同则其回复1点体力。若你以此法摸得的两张牌类型相同则你将〖织纴〗中的“你的回合内”改为“一回合内”。',
caoanmin:'曹安民',
xianwei:'险卫',
xianwei_info:'锁定技准备阶段你废除一个装备栏并摸X张牌X为你已废除的装备栏数然后令一名其他角色对其自己使用一张牌堆中的一张与此装备栏副类别相同的装备牌没有可使用的牌则改为摸一张牌。当你废除所有装备栏后你加2点体力上限然后你与所有其他角色视为在彼此的攻击范围内。',
zhanghu:'张虎',
cuijian:'摧坚',
cuijian_info:'出牌阶段限一次,你可以选择一名有手牌的其他角色。若其手牌中:有【闪】,其将装备区内的防具牌和所有【闪】交给你,然后你交给其等量的牌;没有【闪】,你弃置一张手牌。',
tongyuan:'同援',
tongyuan_info:'锁定技。①当你于回合外使用【无懈可击】时,你将〖摧坚〗中的“弃置一张手牌”改为“摸一张牌”;②当你于回合外使用【桃】时,你将〖摧坚〗中的“等量的牌”改为“一张牌”。③当你使用【无懈可击】/【桃】时,若你已发动过〖摧坚①〗和〖摧坚②〗,则此牌不可被响应/回复值+1。',
sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原",
sp_longzhou:"同舟共济",
sp_zizouqi:"自走棋",
sp_sbfm:'上兵伐谋',
sp_shengun:'三国奇人传',
sp_baigei:'无双上将',
sp_guandu:'官渡之战',
sp_huangjin:'黄巾之乱',
sp_fadong:'诸侯伐董',
sp_xuzhou:'徐州风云',
sp_caizijiaren:'才子佳人',
sp_qihuan:'戚宦之争',
sp_zhongyuan:'中原狼烟',
sp_decade:'其他新服武将',
},
};
});