v1.9.120.3
|
@ -2136,7 +2136,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(get.mode()=='guozhan'||!event.card||event.card.name!='sha') return false;
|
||||
return event.target.isIn()&&player.canUse('sha',event.target,false)&&(player.hasSha()||_status.connectMode&&player.countCards('h'));
|
||||
return event.target.isIn()&&player.canUse('sha',event.target,false)&&(player.hasSha()||_status.connectMode&&player.countCards('hs'));
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
|
|
|
@ -592,10 +592,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
enable:'phaseUse',
|
||||
forceLoad:true,
|
||||
filter:function(event,player){
|
||||
return player.hasCard((card)=>lib.skill._yongjian_zengyu.filterCard(card),'h');
|
||||
return player.hasCard((card)=>lib.skill._yongjian_zengyu.filterCard(card,player),'he');
|
||||
},
|
||||
filterCard:function(card){
|
||||
return get.cardtag(card,'gifts');
|
||||
filterCard:function(card,player){
|
||||
var mod=game.checkMod(card,player,'unchanged','cardZengyuable',player);
|
||||
if(mod!='unchanged') return mod;
|
||||
return get.position(card)=='h'&&get.cardtag(card,'gifts');
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
if(player==target) return false;
|
||||
|
@ -605,6 +607,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
return true;
|
||||
},
|
||||
position:'he',
|
||||
discard:false,
|
||||
lose:false,
|
||||
delay:false,
|
||||
|
@ -613,7 +616,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(get.cardtag(card,'gifts')&&get.type(card,false)=='equip'&&game.hasPlayer(function(current){
|
||||
return current!=player&¤t.canEquip(card,true)&&!current.hasSkillTag('refuseGifts')&&get.effect(current,card,player,player)>0;
|
||||
})) return 2;
|
||||
if(!player.needsToDiscard()) return 0;
|
||||
if(!player.needsToDiscard()&&get.position(card)=='h') return 0;
|
||||
return 1+Math.random();
|
||||
},
|
||||
content:function(){
|
||||
|
|
|
@ -284,7 +284,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(num<=1) event._result={bool:false};
|
||||
else{
|
||||
var pos=player==trigger.player?'e':'he';
|
||||
trigger.player.chooseCard('连和:交给'+get.translation(player)+get.cnNumber(num-1)+'张牌,或点“取消”令其摸'+get.cnNumber(num+1)+'张牌',true,num-1,pos).set('ai',card=>{
|
||||
trigger.player.chooseCard('连和:交给'+get.translation(player)+get.cnNumber(num-1)+'张牌,或点“取消”令其摸'+get.cnNumber(num+1)+'张牌',num-1,pos).set('ai',card=>{
|
||||
if(_status.event.draw) return 0;
|
||||
return 5-get.value(card);
|
||||
}).set('draw',get.attitude(trigger.player,player)>=0);
|
||||
|
@ -420,7 +420,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget('三恇:选择一名其他角色','令其交给你至少X张牌,然后其获得'+get.translation(trigger.cards.filterInD('ejod'))+'(X为以下条件中其满足的项数:场上有牌、已受伤、体力值小于手牌数)',true,lib.filter.notMe).set('ai',target=>{
|
||||
var att=get.attitude(player,target);
|
||||
var att=get.attitude(player,target),num=lib.skill.clansankuang.getNum(target);
|
||||
if(num==0) return att;
|
||||
if(_status.event.goon) return -att;
|
||||
return -Math.sqrt(Math.abs(att))-lib.skill.clansankuang.getNum(target);
|
||||
}).set('goon',Math.max.apply(Math,trigger.cards.map(i=>get.value(i)))<=5||trigger.cards.filterInD('ejod').length==0)
|
||||
|
@ -429,7 +430,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var target=result.targets[0],num=lib.skill.clansankuang.getNum(target),num2=target.countCards('he');
|
||||
event.target=target;
|
||||
player.logSkill('clansankuang',target);
|
||||
if(num2==0) event._result={bool:false};
|
||||
if(num==0||num2==0) event._result={bool:false};
|
||||
else if(num2<=num) event._result={bool:true,cards:target.getCards('he')};
|
||||
else target.chooseCard('he',true,[num,Infinity]).set('ai',get.unuseful);
|
||||
}else event.finish();
|
||||
|
@ -440,7 +441,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
game.delayx();
|
||||
}
|
||||
'step 3'
|
||||
if(trigger.cards.filterInD('ej').length) target.gain(trigger.cards.filterInD('ej'),get.owner(trigger.cards.filterInD('ej')[0]),'giveAuto','bySelf');
|
||||
if(trigger.cards.filterInD('ej').length) target.gain(trigger.cards.filterInD('ejod'),get.owner(trigger.cards.filterInD('ej')[0]),'giveAuto','bySelf');
|
||||
else if(trigger.cards.filterInD('od').length) target.gain(trigger.cards.filterInD('od'),'gain2','bySelf');
|
||||
},
|
||||
ai:{
|
||||
|
@ -548,7 +549,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return get.itemtype(card)=='card';
|
||||
},
|
||||
position:'hes',
|
||||
filterTarget:lib.filter.targetEnabled,
|
||||
filterTarget:lib.filter.filterTarget,
|
||||
check:(card)=>6-get.value(card),
|
||||
log:false,
|
||||
precontent:function(){
|
||||
|
|
|
@ -68,6 +68,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
shen_guanyu:['shen_guanyu','tw_shen_guanyu'],
|
||||
shen_sunquan:['shen_sunquan','junk_sunquan'],
|
||||
shen_lvmeng:['tw_shen_lvmeng','shen_lvmeng'],
|
||||
shen_machao:['shen_machao','ps_shen_machao'],
|
||||
},
|
||||
characterFilter:{
|
||||
shen_diaochan:function(mode){
|
||||
|
@ -6907,7 +6908,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
twwuhun_info:'锁定技。①当你受到其他角色造成的1点伤害后,你令伤害来源获得1枚“梦魇”标记。②当你对有“梦魇”标记的其他角色造成伤害后,你令其获得一枚“梦魇”标记。③当你死亡时,你可进行判定。若结果不为【桃】或【桃园结义】,则你选择至少一名拥有“梦魇”标记的角色。令这些角色各自失去X点体力(X为其“梦魇”标记数)。',
|
||||
shen_zhangfei:'神张飞',
|
||||
shencai:'神裁',
|
||||
shencai_info:'①出牌阶段限一次,你可以令一名其他角色进行判定。你获得此判定牌,然后若此判定牌:包含以下要素中的任意一个,则其失去已有的下列效果,并获得对应的效果:{⒈体力:当其受到伤害后,其失去等量的体力、⒉武器:其不能使用牌响应杀、⒊打出:当其失去手牌后,其再随机弃置一张手牌(不嵌套触发)、⒋距离:其的结束阶段开始时,其翻面};若均不包含,你获得其一张牌,其获得一枚“死”并获得如下效果:其的角色手牌上限-X、其的回合结束时,若X大于场上存活人数,则其死亡(X为其“死”标记数)。',
|
||||
shencai_info:'①出牌阶段限一次,你可以令一名其他角色进行判定。你获得此判定牌,然后若此判定牌:包含以下要素中的任意一个,则其失去已有的下列效果,并获得对应的效果:{⒈体力:当其受到伤害后,其失去等量的体力、⒉武器:其不能使用牌响应杀、⒊打出:当其失去手牌后,其再随机弃置一张手牌(不嵌套触发)、⒋距离:其的结束阶段开始时,其翻面};若均不包含,你获得其区域里的一张牌,其获得一枚“死”并获得如下效果:其的角色手牌上限-X、其的回合结束时,若X大于场上存活人数,则其死亡(X为其“死”标记数)。',
|
||||
xunshi:'巡使',
|
||||
xunshi_info:'锁定技。①你手牌区内所有的多目标锦囊牌均视为花色为none的普【杀】。②你使用颜色为none的牌无距离和次数限制。③当你使用无颜色的牌选择目标后,你令你的〖神裁〗的发动次数上限+1(至多为5),然后可以为此牌增加任意个目标。',
|
||||
shen_zhangjiao:'神张角',
|
||||
|
|
|
@ -186,7 +186,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']],
|
||||
},
|
||||
characterIntro:{
|
||||
fuqian:'傅金[qiān] ( ? ~263年),义阳(治今湖北省枣阳市)人,蜀汉将领傅彤之子,三国时期蜀汉名将。金长于谋略,并颇有胆勇,姜维甚爱之。傅金官至关中都督。魏国攻伐蜀汉时,傅金和蒋舒防守阳安关,兵败战死。',
|
||||
fuqian:'傅佥[qiān] ( ? ~263年),义阳(治今湖北省枣阳市)人,蜀汉将领傅彤之子,三国时期蜀汉名将。金长于谋略,并颇有胆勇,姜维甚爱之。傅佥官至关中都督。魏国攻伐蜀汉时,傅佥和蒋舒防守阳安关,兵败战死。',
|
||||
wangjun:'王濬(207年~286年),字士治,小名阿童,弘农郡湖县(今河南省灵宝市阌乡)人。西晋时期名将。王濬出身世家,博学多闻,容颜英俊,多谋善战。举秀才出身,起家河东郡从事。泰始八年(272年),担任广汉太守,平定益州叛乱,迁益州刺史。利用长江上游地势之利,修造战船,组建强大的水军。上书晋武帝,促成晋灭吴之战。咸宁六年(280年),率兵顺流而下,熔毁横江铁链,攻克丹阳郡,率先攻取石头城,接受吴末帝孙皓投降,完成西晋统一大业。凭借功勋,拜辅国将军、步兵校尉,册封襄阳侯。为避猜忌,纵情享受,累迁特进、抚军大将军、开府仪同三司、散骑常侍、后军将军等。太康六年十二月(286年1月18日),王濬去世,享年八十岁,谥号为“武”,安葬于柏谷山。',
|
||||
yangfu:'杨阜(172年—244年),字义山,汉天水冀县(今甘谷县东南)人。三国时期曹魏名臣。汉献帝建安初年,任凉州从事,旋拜安定长史;韦康任刺史后辟为别驾,改任州参军;后因讨马超有功,赐爵关内侯。曹操征汉中时,杨阜担任益州刺史,回来后又担任武都太守。魏明帝时,由将作大匠改少府。杨阜不但卓识远见,而且刚正不阿,敢于直言,对朝廷弊政多有诤谏,六次进言谏魏明帝应勤政爱民,魏明帝对他颇有敬畏之心。杨阜勤政廉洁,在宫内担任少府时,专管宝器、珍膳、衣物等,而他死后则家无馀财。皇帝让杨阜的孙子杨豹继任了少府之职。原甘谷县文昌宫西侧有杨氏家祠,内悬“两代尚书”匾额。',
|
||||
ruanhui:'阮氏女,是指三国时期曹魏名士许允之妻阮氏,陈留尉氏人。阮氏女是中国古代四大丑女之一,貌丑而见识非凡。她出身士族之家,是卫尉阮共(字伯彦)之女、阮侃(字德如)之妹。嫁与许允后生有二子:许奇,官至司隶校尉;许猛,官至幽州刺史。',
|
||||
|
@ -1303,8 +1303,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
charlotte:true,
|
||||
onremove:true,
|
||||
filter:function(event,player){
|
||||
return player.getStorage('sbbenxi_effect3').contains(event.card)&&event.player.hasHistory('sourceDamage',evt=>{
|
||||
return event.card==evt.card;
|
||||
return player.getStorage('sbbenxi_effect3').contains(event.card)&&game.hasPlayer2(current=>{
|
||||
return current.hasHistory('damage',evt=>{
|
||||
return event.card==evt.card;
|
||||
});
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
|
@ -15687,7 +15689,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{
|
||||
player:"phaseUseBegin",
|
||||
},
|
||||
locked:false,
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
var es=player.getCards('e');
|
||||
|
@ -15705,10 +15706,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
list.remove(player.storage.xinfu_qianchong[i]);
|
||||
}
|
||||
if(list.length>1){
|
||||
player.chooseControl(list).set('ai',function(){
|
||||
player.chooseControl(list).set('ai',function(){
|
||||
return list[0];
|
||||
}
|
||||
).set('prompt',get.prompt('xinfu_qianchong')).set('prompt2',get.translation('xinfu_qianchong_info'));
|
||||
}).set('prompt',get.prompt('xinfu_qianchong')).set('prompt2',get.translation('xinfu_qianchong_info'));
|
||||
}
|
||||
else event.finish();
|
||||
'step 1'
|
||||
|
@ -15801,8 +15801,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
return num>0&&num<=player.hp
|
||||
},
|
||||
locked:true,
|
||||
frequent:true,
|
||||
forced:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var num=0;
|
||||
|
@ -17818,12 +17817,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
feiyi:['tw_feiyi','feiyi'],
|
||||
wangling:['tw_wangling','wangling'],
|
||||
qiaogong:['tw_qiaogong','qiaogong'],
|
||||
sp_chendong:['tw_chendong','sp_chendong'],
|
||||
sp_jiangqing:['tw_jiangqing','sp_jiangqing'],
|
||||
sp_chendong:['tw_chendong','sp_chendong','chendong'],
|
||||
sp_jiangqing:['tw_jiangqing','sp_jiangqing','jiangqing'],
|
||||
zhaotongzhaoguang:['dc_zhaotongzhaoguang','zhaotongzhaoguang'],
|
||||
yangbiao:['yangbiao','dc_yangbiao'],
|
||||
qiaozhou:['yj_qiaozhou','qiaozhou'],
|
||||
sunhanhua:['dc_qiaozhou','sunhanhua'],
|
||||
sp_duyu:['sp_duyu','pk_sp_duyu'],
|
||||
kongrong:['sp_kongrong','kongrong'],
|
||||
},
|
||||
translate:{
|
||||
liuzan:'手杀留赞',
|
||||
|
@ -17869,7 +17870,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"qc_mingzhe":"明哲",
|
||||
"qc_mingzhe_info":"",
|
||||
"xinfu_shangjian":"尚俭",
|
||||
"xinfu_shangjian_info":"锁定技。一名角色的结束阶段开始时,若你于此回合内失去了X张或更少的牌,则你可以摸等量的牌(X为你的体力值)。",
|
||||
"xinfu_shangjian_info":"锁定技。一名角色的结束阶段开始时,若你于此回合内失去了X张或更少的牌,则你摸等量的牌(X为你的体力值)。",
|
||||
"rw_bagua_skill":"先天八卦阵",
|
||||
"rw_bagua_skill_info":"当你需要使用或打出一张【闪】时,你可以进行判定,若判定结果不为黑桃,视为你使用或打出了一张【闪】。",
|
||||
"rw_baiyin_skill":"照月狮子盔",
|
||||
|
@ -18626,6 +18627,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
spdaoshu:'盗书',
|
||||
spdaoshu_info:'每轮限一次。一名敌方角色的出牌阶段开始时,若其有手牌,则你可以令其视为使用一张【酒】。其须声明一个基本牌的牌名,然后你判断其手牌区内是否有该牌名的牌。若你判断正确,则你随机获得其五张手牌,否则你不能响应其使用的牌直到回合结束。',
|
||||
spdaizui:'戴罪',
|
||||
spdaizui2:'戴罪',
|
||||
spdaizui_info:'限定技。当你受到伤害值不小于体力值的伤害时,你可防止此伤害并将此伤害渠道对应的所有实体牌置于伤害来源的武将牌上,称为“释”。本回合结束时,其获得所有“释”。',
|
||||
re_caiwenji:'手杀蔡琰',
|
||||
re_bulianshi:'手杀步练师',
|
||||
|
|
3468
character/offline.js
|
@ -7,20 +7,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
characterSort:{
|
||||
old:{
|
||||
old_standard:['ol_yuanshu'],
|
||||
old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao","pangde","xuhuang",'junk_sunquan',"huangzhong","new_caoren"],
|
||||
old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong"],
|
||||
old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao","pangde","xuhuang",'junk_sunquan',"huangzhong","new_caoren",'old_chendao'],
|
||||
old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong",'old_re_lidian'],
|
||||
old_yijiang1:["masu","xushu","xin_yujin","old_xusheng","old_lingtong","fazheng",'old_gaoshun'],
|
||||
old_yijiang2:["old_zhonghui","madai",'old_handang','old_liubiao','oldre_liubiao'],
|
||||
old_yijiang2:["old_zhonghui","madai",'old_handang','old_liubiao','oldre_liubiao','old_guanzhang'],
|
||||
old_yijiang3:["liru","old_zhuran","old_fuhuanghou","old_caochong"],
|
||||
old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan",'old_caorui'],
|
||||
old_yijiang5:["old_caoxiu","old_zhuzhi"],
|
||||
old_yijiang67:["ol_zhangrang","ol_liuyu",'old_huanghao'],
|
||||
old_yijiang67:["ol_zhangrang","ol_liuyu",'old_huanghao','old_liyan'],
|
||||
old_sp:["old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","old_wangyun",'ol_wanglang','old_dingfeng'],
|
||||
old_yingbian:['junk_simayi','old_yangyan','old_yangzhi'],
|
||||
old_mobile:["old_caochun",'old_majun'],
|
||||
},
|
||||
},
|
||||
character:{
|
||||
old_chendao:['male','shu',4,['drlt_wanglie']],
|
||||
old_liyan:['male','shu',3,['duliang','fulin']],
|
||||
old_re_lidian:['male','wei',3,['xunxun','wangxi']],
|
||||
old_guanzhang:['male','shu',4,['old_fuhun']],
|
||||
new_caoren:['male','wei',4,['jushou']],
|
||||
huangzhong:['male','shu',4,['liegong']],
|
||||
junk_sunquan:['male','shen',4,['dili','yuheng'],['wei']],
|
||||
|
@ -581,9 +585,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.lose(card,ui.ordering).relatedEvent=trigger;
|
||||
trigger.throw=false;
|
||||
trigger.skill='old_guhuo_backup';
|
||||
game.log(player,'声明',trigger.targets&&trigger.targets.length?'对':'',trigger.targets,'使用',trigger.card);
|
||||
game.log(player,'声明',trigger.targets&&trigger.targets.length?'对':'',trigger.targets||'',trigger.name=='useCard'?'使用':'打出',trigger.card);
|
||||
event.prompt=get.translation(player)+'声明'+(trigger.targets&&trigger.targets.length?'对'+get.translation(trigger.targets):'')+
|
||||
'使用'+(get.translation(trigger.card.nature)||'')+get.translation(trigger.card.name)+',是否质疑?';
|
||||
(trigger.name=='useCard'?'使用':'打出')+(get.translation(trigger.card.nature)||'')+get.translation(trigger.card.name)+',是否质疑?';
|
||||
event.targets=game.filterPlayer(i=>i!=player&&i.hp>0).sortBySeat(_status.currentPhase);
|
||||
|
||||
game.broadcastAll(function(card,player){
|
||||
|
@ -1022,8 +1026,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
old_dingfeng:'旧丁奉',
|
||||
junk_sunquan:'改版神孙权',
|
||||
junk_sunquan_ab:'神孙权',
|
||||
new_caoren:'13版曹仁',
|
||||
new_caoren:'旧曹仁',
|
||||
new_caoren_ab:'旧曹仁',
|
||||
old_re_lidian:'旧李典',
|
||||
old_liyan:'旧李严',
|
||||
old_chendao:'旧陈到',
|
||||
|
||||
old_standard:'标准包',
|
||||
old_shenhua:'神话再临',
|
||||
|
|
|
@ -10,7 +10,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
refresh_lin:['re_menghuo','ol_sunjian','re_caopi','ol_xuhuang','ol_dongzhuo','ol_zhurong','re_jiaxu','ol_lusu'],
|
||||
refresh_shan:['ol_jiangwei','ol_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai','re_zhanghe'],
|
||||
refresh_yijiang1:['xin_wuguotai','xin_gaoshun','dc_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua','dc_xushu','re_chengong'],
|
||||
refresh_yijiang2:['re_madai','re_wangyi','guanzhang','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','dc_bulianshi','xin_liubiao','re_xunyou','re_guanzhang'],
|
||||
refresh_yijiang2:['re_madai','re_wangyi','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','dc_bulianshi','xin_liubiao','re_xunyou','re_guanzhang'],
|
||||
refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','xin_yufan','dc_liru','re_manchong','re_fuhuanghou','re_guanping','re_liufeng'],
|
||||
refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan','re_caozhen','re_zhoucang','dc_chenqun','re_caifuren','re_guyong','re_jushou','re_zhuhuan'],
|
||||
refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu','re_gongsunyuan','re_guotufengji','re_xiahoushi','re_liuchen'],
|
||||
|
@ -23,7 +23,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dc_caozhi:['male','wei',3,['reluoying','dcjiushi']],
|
||||
ol_huangzhong:['male','shu',4,['xinliegong','remoshi']],
|
||||
re_wenpin:['male','wei',5,['rezhenwei'],['unseen']],
|
||||
re_guanzhang:['male','shu',4,['fuhun','retongxin'],['unseen']],
|
||||
re_guanzhang:['male','shu',4,['fuhun','retongxin']],
|
||||
re_mazhong:['male','shu',4,['refuman']],
|
||||
dc_chenqun:['male','wei',3,['repindi','refaen']],
|
||||
re_sundeng:['male','wu',4,['rekuangbi']],
|
||||
|
@ -72,7 +72,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_panzhangmazhong:['male','wu',4,['reduodao','reanjian']],
|
||||
re_wangyi:['female','wei',4,['zhenlie','miji']],
|
||||
re_madai:['male','shu',4,['mashu','reqianxi']],
|
||||
guanzhang:['male','shu',4,['fuhun']],
|
||||
xin_xusheng:['male','wu',4,['decadepojun']],
|
||||
re_taishici:['male','wu',4,['tianyi','hanzhan']],
|
||||
re_masu:['male','shu',3,['resanyao','rezhiman']],
|
||||
|
@ -158,9 +157,65 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_guohuai:['xiahouyuan','zhanghe'],
|
||||
},
|
||||
skill:{
|
||||
//新李典
|
||||
xinwangxi:{
|
||||
audio:'wangxi',
|
||||
trigger:{player:'damageEnd',source:'damageSource'},
|
||||
filter:function(event){
|
||||
if(event._notrigger.contains(event.player)) return false;
|
||||
return event.num&&event.source&&event.player&&
|
||||
event.player.isAlive()&&event.source.isAlive()&&event.source!=event.player;
|
||||
},
|
||||
check:function(event,player){
|
||||
if(player.isPhaseUsing()) return true;
|
||||
if(event.player==player) return get.attitude(player,event.source)>-5;
|
||||
return get.attitude(player,event.player)>-5;
|
||||
},
|
||||
logTarget:function(event,player){
|
||||
if(event.player==player) return event.source;
|
||||
return event.player;
|
||||
},
|
||||
preHidden:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.count=trigger.num;
|
||||
event.target=lib.skill.xinwangxi.logTarget(trigger,player);
|
||||
'step 1'
|
||||
player.draw(2);
|
||||
event.count--;
|
||||
'step 2'
|
||||
var cards=player.countCards('he');
|
||||
if(cards.length>0&&target.isAlive()){
|
||||
if(cards.length==1) event._result={bool:true,cards:cards};
|
||||
else player.chooseCard('he','忘隙:交给'+get.translation(target)+'一张牌',true);
|
||||
}
|
||||
else event.goto(5);
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
player.give(result.cards,target);
|
||||
}
|
||||
'step 4'
|
||||
game.delayx();
|
||||
'step 5'
|
||||
if(event.count&&target.isAlive()){
|
||||
player.chooseBool(get.prompt2('xinwangxi',target));
|
||||
}
|
||||
else event.finish();
|
||||
'step 6'
|
||||
if(result.bool){
|
||||
player.logSkill('xinwangxi',target);
|
||||
event.goto(1);
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
maixie:true,
|
||||
maixie_hp:true
|
||||
}
|
||||
},
|
||||
//OL界火诸葛
|
||||
olhuoji:{
|
||||
audio:'rehuoji',
|
||||
audioname:['ol_sp_zhugeliang'],
|
||||
trigger:{player:'huogongBegin'},
|
||||
forced:true,
|
||||
locked:false,
|
||||
|
@ -207,6 +262,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
subSkill:{viewAs:{inherit:'rehuoji',audio:'rehuoji'}}
|
||||
},
|
||||
olkanpo:{
|
||||
audio:'rekanpo',
|
||||
audioname:['ol_sp_zhugeliang'],
|
||||
trigger:{player:'useCard'},
|
||||
forced:true,
|
||||
locked:false,
|
||||
|
@ -7584,7 +7641,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
olpaoxiao:{
|
||||
audio:"paoxiao",
|
||||
audioname:['re_zhangfei','guanzhang','xiahouba'],
|
||||
audioname:['re_zhangfei','guanzhang','xiahouba','re_guanzhang'],
|
||||
trigger:{player:'shaMiss'},
|
||||
forced:true,
|
||||
content:function(){
|
||||
|
@ -10532,7 +10589,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
locked:false,
|
||||
audio:"wusheng",
|
||||
audioname:['re_guanyu','guanzhang','jsp_guanyu','guansuo'],
|
||||
audioname:['re_guanyu','guanzhang','jsp_guanyu','guansuo','re_guanzhang'],
|
||||
enable:["chooseToRespond","chooseToUse"],
|
||||
filterCard:function(card,player){
|
||||
if(get.zhu(player,'shouyue')) return true;
|
||||
|
@ -13724,7 +13781,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
decadepojun_info:'当你使用【杀】指定目标后,你可以将其的至多X张牌置于其武将牌上(X为其体力值)。若这些牌中:有装备牌,你将这些装备牌中的一张置于弃牌堆;有锦囊牌,你摸一张牌。其于回合结束时获得其武将牌上的这些牌。',
|
||||
re_wangyi:'界王异',
|
||||
wangyi:'王异',
|
||||
guanzhang:'界关兴张苞',
|
||||
guanzhang:'关兴张苞',
|
||||
rezishou:'自守',
|
||||
rezishou2:'自守',
|
||||
rezishou_info:'摸牌阶段,你可以多摸X张牌(X为存活势力数)。若如此做,本回合你对其他角色造成伤害时,防止此伤害。',
|
||||
|
@ -13850,7 +13907,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
relongyin:'龙吟',
|
||||
relongyin_info:'当一名角色于其出牌阶段内使用【杀】时,你可弃置一张牌令此【杀】不计入出牌阶段使用次数。若此【杀】为红色,则你摸一张牌;若你以此法弃置的牌与此【杀】点数相同,则你重置“竭忠”。',
|
||||
jiezhong:'竭忠',
|
||||
jiezhong_info:'限定技,出牌阶段开始时,你可以将手牌补至手牌上限(至多摸五张)。',
|
||||
jiezhong_info:'限定技,出牌阶段开始时,你可以将手牌补至体力上限(至多摸五张)。',
|
||||
re_caifuren:'界蔡夫人',
|
||||
reqieting:'窃听',
|
||||
reqieting_info:'其他角色的回合结束时,若其本回合内未造成过伤害,则你可将其装备区内的一张牌置于你的装备区内;若其本回合内未对其他角色使用过牌,则你可摸一张牌。',
|
||||
|
@ -14032,6 +14089,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
olhuoji_info:'①你可以将一张红色牌当【火攻】使用。②你使用【火攻】的作用效果改为“目标角色随机展示一张手牌A,然后你可以弃置一张与A颜色相同的牌,对目标造成1点火属性伤害”。',
|
||||
olkanpo:'看破',
|
||||
olkanpo_info:'①你可以将一张黑色牌当【无懈可击】使用。②你使用的【无懈可击】不可被响应。',
|
||||
xinwangxi:'忘隙',
|
||||
xinwangxi_info:'当你对其他角色造成1点伤害后,或受到其他角色造成的1点伤害后,你可以摸两张牌,然后交给其一张牌。',
|
||||
|
||||
refresh_standard:'界限突破·标',
|
||||
refresh_feng:'界限突破·风',
|
||||
|
|
553
character/sb.js
|
@ -27,18 +27,470 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sb_zhaoyun:['male','shu',4,['sblongdan','sbjizhu']],
|
||||
sb_liubei:['male','shu',4,['sbrende','sbzhangwu','sbjijiang'],['zhu']],
|
||||
sb_jiangwei:['male','shu',4,['sbtiaoxin','sbzhiji']],
|
||||
sb_fazheng:['male','shu',3,['sbxuanhuo','sbenyuan'],['unseen']],
|
||||
sb_fazheng:['male','shu',3,['sbxuanhuo','sbenyuan']],
|
||||
sb_chengong:['male','qun',3,['sbmingce','sbzhichi'],['unseen']],
|
||||
sb_diaochan:['female','qun',3,['sblijian','sbbiyue'],['unseen']],
|
||||
sb_yuanshao:['male','qun',4,['sbluanji','sbxueyi'],['zhu','unseen']],
|
||||
sb_pangtong:['male','shu',3,['sblianhuan','sbniepan'],['unseen']],
|
||||
},
|
||||
characterSort:{
|
||||
sb:{
|
||||
sb_zhi:['sb_sunquan','sb_zhouyu','sb_zhangjiao','sb_caocao','sb_zhenji','sb_liubei'],
|
||||
sb_shi:['sb_xuhuang','sb_machao','sb_fazheng'],
|
||||
sb_shi:['sb_xuhuang','sb_machao','sb_fazheng','sb_chengong','sb_pangtong'],
|
||||
sb_tong:['liucheng','sp_yangwan','sb_xiahoushi','sb_zhangfei','sb_zhaoyun'],
|
||||
sb_yu:['sb_yujin','sb_lvmeng','sb_huangzhong','sb_huanggai','sb_zhouyu','sb_caoren','sb_ganning'],
|
||||
sb_neng:['sb_huaxiong','sb_sunshangxiang','sb_jiangwei'],
|
||||
sb_neng:['sb_huaxiong','sb_sunshangxiang','sb_jiangwei','sb_diaochan','sb_yuanshao'],
|
||||
}
|
||||
},
|
||||
skill:{
|
||||
//貂蝉
|
||||
sblijian:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return game.countPlayer(current=>{
|
||||
return current!=player;
|
||||
});
|
||||
},
|
||||
filterCard:true,
|
||||
selectCard:[1,Infinity],
|
||||
filterTarget:lib.filter.notMe,
|
||||
selectTarget:function(){
|
||||
return ui.selected.cards.length+1;
|
||||
},
|
||||
multiline:true,
|
||||
content:function(){
|
||||
var targetx=targets.slice().sortBySeat(target)[1];
|
||||
var card={name:'juedou',isCard:true};
|
||||
if(target.canUse(card,targetx)) target.useCard(card,targetx);
|
||||
},
|
||||
ai:{
|
||||
order:7,
|
||||
result:{target:-1}
|
||||
}
|
||||
},
|
||||
sbbiyue:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
forced:true,
|
||||
content:function(){
|
||||
player.draw(Math.min(5,game.countPlayer(current=>{
|
||||
return current.getHistory('damage').length>0;
|
||||
})+1));
|
||||
}
|
||||
},
|
||||
//陈宫
|
||||
sbmingce:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
position:'he',
|
||||
filter:function(event,player){
|
||||
return player.countCards('he')>0;
|
||||
},
|
||||
filterCard:true,
|
||||
check:function(card){
|
||||
return 8-get.value(card)
|
||||
},
|
||||
filterTarget:lib.filter.notMe,
|
||||
selectTarget:1,
|
||||
discard:false,
|
||||
lose:false,
|
||||
delay:false,
|
||||
onremove:true,
|
||||
group:'sbmingce_hit',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.give(cards,target);
|
||||
'step 1'
|
||||
var choices=['选项二'];
|
||||
var choiceList=[
|
||||
'失去1点体力,令'+get.translation(player)+'摸两张牌并获得1枚“策”',
|
||||
'摸一张牌'
|
||||
];
|
||||
if(target.hp>0) choices.unshift('选项一');
|
||||
else choiceList[0]='<span style="opacity:0.5">'+choiceList[0]+'</span>';
|
||||
target.chooseControl(choices).set('choiceList', choiceList).set('prompt',get.translation(player)+'对你发动了【明策】,请选择一项').set('ai',()=>{
|
||||
return _status.event.choice;
|
||||
}).set('choice',target.hp<=0||((target.hp+target.countCards('hs','tao')>2&&get.attitude(target,player)>0)||get.effect(target,{name:'losehp'},target,target)>0)&&target.hp>0?0:1);
|
||||
'step 2'
|
||||
if(result.control=='选项一'){
|
||||
target.loseHp();
|
||||
player.draw(2);
|
||||
}
|
||||
else{
|
||||
target.draw();
|
||||
event.finish();
|
||||
}
|
||||
'step 3'
|
||||
player.addMark('sbmingce',1);
|
||||
},
|
||||
marktext:'笨',
|
||||
intro:{
|
||||
name:'策(明策)',
|
||||
name2:'策',
|
||||
content:'mark'
|
||||
},
|
||||
ai:{
|
||||
result:{
|
||||
player:0.5,
|
||||
target:1,
|
||||
},
|
||||
order:8.5,
|
||||
expose:0.2
|
||||
},
|
||||
subSkill:{
|
||||
hit:{
|
||||
audio:'sbmingce',
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
filter:function(event,player){
|
||||
return player.hasMark('sbmingce');
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var num=player.countMark('sbmingce');
|
||||
event.num=num;
|
||||
player.chooseTarget(get.prompt('sbmingce'),'移去所有“策”,对一名其他角色造成'+num+'点伤害',lib.filter.notMe).set('ai',target=>{
|
||||
var player=_status.event.player;
|
||||
var eff=get.damageEffect(target,player,player);
|
||||
var num=player.countMark('sbmingce');
|
||||
if(target.hasSkillTag('filterDamage',null,{player:player})) num=1;
|
||||
return eff*num;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('sbmingce_hit',target);
|
||||
player.removeMark('sbmingce',num);
|
||||
target.damage(num);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
sbzhichi:{
|
||||
audio:2,
|
||||
trigger:{player:'damageEnd'},
|
||||
forced:true,
|
||||
content:function(){
|
||||
player.addTempSkill('sbzhichi_muteki');
|
||||
},
|
||||
subSkill:{
|
||||
muteki:{
|
||||
audio:'sbzhichi',
|
||||
trigger:{player:'damageBegin4'},
|
||||
charlotte:true,
|
||||
forced:true,
|
||||
group:'sbzhichi_egg',
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
},
|
||||
mark:true,
|
||||
intro:{content:'我无敌啦!'},
|
||||
ai:{
|
||||
maixie:true,
|
||||
maixie_hp:true,
|
||||
nofire:true,
|
||||
nothunder:true,
|
||||
nodamage:true,
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(get.tag(card,'damage')) return 'zeroplayertarget';
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
egg:{
|
||||
trigger:{player:'die'},
|
||||
charlotte:true,
|
||||
forced:true,
|
||||
silent:true,
|
||||
forceDie:true,
|
||||
content:function(){
|
||||
player.chat('你是真滴牛批');
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
//袁绍
|
||||
sbluanji:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
trigger:{global:'respond'},
|
||||
viewAs:{name:'wanjian'},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
if(event.name=='chooseToUse') return player.countCards('hs')>1&&!player.hasSkill('sbluanji_used');
|
||||
var evt=event.getParent(2);
|
||||
return evt.name=='wanjian'&&evt.getParent().player==player&&event.player!=player;
|
||||
},
|
||||
filterCard:true,
|
||||
selectCard:2,
|
||||
position:'hs',
|
||||
prompt:'将两张手牌当【万箭齐发】使用',
|
||||
check:function(card){
|
||||
var player=_status.event.player;
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return player.canUse('wanjian',current);
|
||||
});
|
||||
var num=0;
|
||||
for(var i=0;i<targets.length;i++){
|
||||
var eff=get.sgn(get.effect(targets[i],{name:'wanjian'},player,player));
|
||||
if(targets[i].hp==1){
|
||||
eff*=1.5;
|
||||
}
|
||||
num+=eff;
|
||||
}
|
||||
if(!player.needsToDiscard(-1)){
|
||||
if(targets.length>=7){
|
||||
if(num<2) return 0;
|
||||
}
|
||||
else if(targets.length>=5){
|
||||
if(num<1.5) return 0;
|
||||
}
|
||||
}
|
||||
return 6-get.value(card);
|
||||
},
|
||||
content:function(){
|
||||
player.draw();
|
||||
},
|
||||
precontent:function(){
|
||||
player.addTempSkill('sbluanji_used','phaseUseAfter');
|
||||
},
|
||||
ai:{
|
||||
threaten:1.6,
|
||||
},
|
||||
subSkill:{used:{charlotte:true}}
|
||||
},
|
||||
sbxueyi:{
|
||||
audio:2,
|
||||
trigger:{player:'useCardToTargeted'},
|
||||
filter:function(event,player){
|
||||
return player.hasZhuSkill('sbxueyi')&&event.target!=player&&event.target.group=='qun';
|
||||
},
|
||||
zhuSkill:true,
|
||||
forced:true,
|
||||
logTarget:'target',
|
||||
content:function(){
|
||||
player.draw();
|
||||
},
|
||||
mod:{
|
||||
maxHandcard:function(player,num){
|
||||
if(player.hasZhuSkill('sbxueyi')){
|
||||
return num+2*game.countPlayer(current=>player!=current&¤t.group=='qun');
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
//庞统
|
||||
sblianhuan:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filterCard:{suit:'club'},
|
||||
filter:function(event,player){
|
||||
var num=(player.getStat('skill').spjungong||0);
|
||||
return (num<player.hp||num<=player.countCards('he'))&&!player.hasSkill('spjungong_block');
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
if(player.hasSkill('sblianhuan_blocker')) return false;
|
||||
if(!ui.selected.cards.length) return false;
|
||||
card=get.autoViewAs({name:'tiesuo'},[ui.selected.cards[0]]);
|
||||
return player.canUse(card,target);
|
||||
},
|
||||
selectCard:1,
|
||||
position:'hs',
|
||||
derivation:'sblianhuan_lv2',
|
||||
selectTarget:function(){
|
||||
var card=get.card(),player=get.player();
|
||||
if(player.hasSkill('sblianhuan_blocker')) return 0;
|
||||
if(card==undefined) return;
|
||||
var range=[0,2];
|
||||
game.checkMod(card,player,range,'selectTarget',player);
|
||||
return range;
|
||||
},
|
||||
filterOk:function(){
|
||||
var card=ui.selected.cards[0];
|
||||
if(!card) return false;
|
||||
if(get.position(card)=='s'&&!ui.selected.targets.length) return false;
|
||||
return true;
|
||||
},
|
||||
check:function(card){
|
||||
return 6-get.value(card);
|
||||
},
|
||||
prompt:function(){
|
||||
var player=_status.event.player,use=!player.hasSkill('sblianhuan_blocker');
|
||||
return '重铸一张♣手牌'+(use?';或将一张♣手牌当【铁索连环】使用':'');
|
||||
},
|
||||
group:['sblianhuan_use','sblianhuan_add','sblianhuan_discard2'],
|
||||
multitarget:true,
|
||||
multiline:true,
|
||||
discard:false,
|
||||
lose:false,
|
||||
delay:false,
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(targets.length){
|
||||
player.addTempSkill('sblianhuan_blocker','phaseUseAfter');
|
||||
var card=get.autoViewAs({name:'tiesuo'},cards);
|
||||
player.useCard(card,cards,targets);
|
||||
}
|
||||
else{
|
||||
player.loseToDiscardpile(cards);
|
||||
player.draw(cards.length);
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
blocker:{charlotte:true},
|
||||
use:{
|
||||
audio:'sblianhuan',
|
||||
trigger:{player:'useCard'},
|
||||
filter:function(event,player){
|
||||
return event.card.name=='tiesuo'&&!player.storage.sblianhuan;
|
||||
},
|
||||
check:function(event,player){
|
||||
var eff=0,targets=event.targets.filter(i=>!i.isLinked());
|
||||
for(var target of targets){
|
||||
eff+=get.attitude(player,target);
|
||||
}
|
||||
return eff<-1;
|
||||
},
|
||||
prompt2:'失去1点体力,然后当此牌指定第一个目标后,你随机弃置所有不处于连环状态的目标角色各一张手牌',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.loseHp();
|
||||
'step 1'
|
||||
if(!trigger.card.storage) trigger.card.storage={};
|
||||
trigger.card.storage.sblianhuan=true;
|
||||
player.addTempSkill('sblianhuan_discard','phaseUseAfter');
|
||||
}
|
||||
},
|
||||
discard:{
|
||||
trigger:{global:'useCardToPlayered'},
|
||||
forced:true,
|
||||
locked:false,
|
||||
popup:false,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
return event.isFirstTarget&&event.card.storage&&event.card.storage.sblianhuan;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.targets=trigger.targets.filter(i=>!i.isLinked());
|
||||
player.logSkill('sblianhuan_discard',event.targets);
|
||||
'step 1'
|
||||
var target=targets.shift();
|
||||
var cards=target.getCards('h',card=>{
|
||||
return lib.filter.cardDiscardable(card,player,'sblianhuan');
|
||||
});
|
||||
if(cards.length>0){
|
||||
player.line(target);
|
||||
target.discard(cards.randomGet());
|
||||
}
|
||||
if(targets.length) event.redo();
|
||||
}
|
||||
},
|
||||
add:{
|
||||
trigger:{player:'useCard2'},
|
||||
filter:function(event,player){
|
||||
return event.card.name=='tiesuo'&&player.storage.sblianhuan&&game.hasPlayer(current=>{
|
||||
return !event.targets.contains(current)&&player.canUse(event.card,current);
|
||||
});
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('sblianhuan_add'),'为'+get.translation(trigger.card)+'额外指定任意个目标',function(card,player,target){
|
||||
return !_status.event.sourcex.contains(target)&&player.canUse(_status.event.card,target);
|
||||
}).set('sourcex',trigger.targets).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.effect(target,_status.event.card,player,player);
|
||||
}).set('card',trigger.card);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
if(!event.isMine()&&!event.isOnline()) game.delayx();
|
||||
event.targets=result.targets;
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
'step 2'
|
||||
player.logSkill('sblianhuan_add',event.targets);
|
||||
trigger.targets.addArray(event.targets);
|
||||
}
|
||||
},
|
||||
discard2:{
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
forced:true,
|
||||
locked:false,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
return event.isFirstTarget&&event.card.name=='tiesuo'&&player.storage.sblianhuan;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.targets=trigger.targets.filter(i=>!i.isLinked());
|
||||
player.logSkill('sblianhuan_discard2',event.targets);
|
||||
'step 1'
|
||||
var target=targets.shift();
|
||||
var cards=target.getCards('h',card=>{
|
||||
return lib.filter.cardDiscardable(card,player,'sblianhuan');
|
||||
});
|
||||
if(cards.length>0){
|
||||
player.line(target);
|
||||
target.discard(cards.randomGet());
|
||||
}
|
||||
if(targets.length) event.redo();
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
sbniepan:{
|
||||
audio:2,
|
||||
enable:'chooseToUse',
|
||||
mark:true,
|
||||
skillAnimation:true,
|
||||
animationStr:'涅盘',
|
||||
limited:true,
|
||||
animationColor:'orange',
|
||||
filter:function(event,player){
|
||||
return event.type=='dying'&&player==event.dying;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.awakenSkill('sbniepan');
|
||||
player.discard(player.getCards('hej'));
|
||||
'step 1'
|
||||
player.draw(3);
|
||||
'step 2'
|
||||
if(player.hp<3) player.recover(3-player.hp);
|
||||
'step 3'
|
||||
player.turnOver(false);
|
||||
'step 4'
|
||||
player.link(false);
|
||||
'step 5'
|
||||
player.storage.sblianhuan=true;
|
||||
game.log(player,'修改了','#g【连环】');
|
||||
},
|
||||
ai:{
|
||||
order:1,
|
||||
skillTagFilter:function(player,arg,target){
|
||||
if(player!=target||player.storage.sbniepan) return false;
|
||||
},
|
||||
save:true,
|
||||
result:{
|
||||
player:function(player){
|
||||
if(player.hp<=0) return 10;
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
threaten:function(player,target){
|
||||
if(!target.storage.sbniepan) return 0.6;
|
||||
}
|
||||
}
|
||||
},
|
||||
//法正
|
||||
sbxuanhuo:{
|
||||
audio:2,
|
||||
|
@ -257,7 +709,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
content:function(){
|
||||
var num=Math.min(4-player.countMark('charge'),trigger.name.indexOf('lose')==0?trigger.getl(player).cards2.length:2);
|
||||
var num=Math.min(4-player.countMark('charge'),trigger.name.indexOf('lose')==0?trigger.getl(player).cards2.length:4);
|
||||
if(num>0) player.addMark('charge',num);
|
||||
}
|
||||
}
|
||||
|
@ -276,7 +728,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(evt.skill!='sbtiaoxin') return false;
|
||||
len+=evt.targets.length;
|
||||
});
|
||||
return len>=5;
|
||||
return len>=4;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
|
@ -307,7 +759,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
mod:{
|
||||
playerEnabled:function(card,player,target){
|
||||
if(player!=target&&player.getStorage('sbzhiji_beifa').contains(target)) return false;
|
||||
if(player!=target&&!player.getStorage('sbzhiji_beifa').contains(target)) return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -325,6 +777,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sbrende:{
|
||||
audio:3,
|
||||
enable:['chooseToUse','chooseToRespond'],
|
||||
maxNum:8,
|
||||
filter:function(event,player){
|
||||
if(event.type=='wuxie'||player.hasSkill('sbrende_used')) return false;
|
||||
if(player.countMark('sbrende')<2) return false;
|
||||
|
@ -341,7 +794,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
return false;
|
||||
},
|
||||
group:'sbrende_give',
|
||||
group:['sbrende_give','sbrende_gain'],
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
var dialog=ui.create.dialog('仁德');
|
||||
|
@ -419,7 +872,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
prompt:function(links,player){
|
||||
var isUse=links.length==1;
|
||||
return (isUse?('移去2枚“仁望”,视为使用或打出'+(get.translation(links[0][3])||'')+get.translation(links[0][2]))
|
||||
:'###仁德###出牌阶段每名角色限一次。你可以将任意张牌交给一名其他角色,然后你获得等量“仁望”标记(至多为8)');
|
||||
:'###仁德###出牌阶段每名角色限一次。你可以将任意张牌交给一名其他角色,然后你获得等量“仁望”标记(至多为'+lib.skill.sbrende.maxNum+')');
|
||||
}
|
||||
},
|
||||
hiddenCard:function(player,name){
|
||||
|
@ -434,11 +887,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ai:{
|
||||
respondSha:true,
|
||||
respondShan:true,
|
||||
save:true,
|
||||
skillTagFilter:function(player){
|
||||
return player.countMark('sbrende')>0&&!player.hasSkill('sbrende_used');
|
||||
return player.countMark('sbrende')>1&&!player.hasSkill('sbrende_used');
|
||||
},
|
||||
order:function(item,player){
|
||||
if(lib.skill.sbzhangwu.ai.result.player(player)>0) return 9.1;
|
||||
if(_status.event.type=='phase'&&lib.skill.sbzhangwu.ai.result.player(player)>0) return 9.1;
|
||||
return 0.5;
|
||||
},
|
||||
result:{
|
||||
|
@ -483,12 +937,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return player!=target;
|
||||
},
|
||||
prompt:function(event){
|
||||
return '出牌阶段每名角色限一次。你可以将任意张牌交给一名其他角色,然后你获得等量“仁望”标记(至多为8)';
|
||||
return '出牌阶段每名角色限一次。你可以将任意张牌交给一名其他角色,然后你获得等量“仁望”标记(至多为'+lib.skill.sbrende.maxNum+')';
|
||||
},
|
||||
check:function(card){
|
||||
var player=get.owner(card);
|
||||
if(ui.selected.cards.length&&ui.selected.cards[0].name=='du') return 0;
|
||||
if(ui.selected.cards.length+player.countMark('sbrende')>8) return 0;
|
||||
if(ui.selected.cards.length+player.countMark('sbrende')>lib.skill.sbrende.maxNum) return 0;
|
||||
if(!ui.selected.cards.length&&card.name=='du') return 20;
|
||||
if(ui.selected.cards.length>=Math.max(2,player.countCards('he')-player.hp)) return 0;
|
||||
if(player.countCards('he')<=1){
|
||||
|
@ -512,7 +966,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.addTempSkill('sbrende_given','phaseUseAfter');
|
||||
player.markAuto('sbrende_given',[target]);
|
||||
player.give(cards,target);
|
||||
var num=Math.min(8-player.countMark('sbrende'),cards.length);
|
||||
var num=Math.min(lib.skill.sbrende.maxNum-player.countMark('sbrende'),cards.length);
|
||||
if(num>0) player.addMark('sbrende',num);
|
||||
},
|
||||
ai:{
|
||||
|
@ -522,7 +976,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
result:{
|
||||
target:function(player,target){
|
||||
if(!player.hasFriend()&&player.hasSkill('sbzhangwu')&&ui.selected.cards.length&&
|
||||
get.value(ui.selected.cards[0])<(lib.skill.sbzhangwu.filterTarget(null,player,target)?3:5)) return -0.1;
|
||||
get.value(ui.selected.cards[0])>(lib.skill.sbzhangwu.filterTarget(null,player,target)?3:5)) return -0.1;
|
||||
if(target.hasSkillTag('nogain')) return 0;
|
||||
if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){
|
||||
if(target.hasSkillTag('nodu')) return 0;
|
||||
|
@ -535,7 +989,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
threaten:1.1
|
||||
},
|
||||
}
|
||||
},
|
||||
gain:{
|
||||
audio:'sbrende',
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
return player.countMark('sbrende')<lib.skill.sbrende.maxNum;
|
||||
},
|
||||
content:function(){
|
||||
var num=Math.min(lib.skill.sbrende.maxNum-player.countMark('sbrende'),2);
|
||||
if(num>0) player.addMark('sbrende',num);
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
sbzhangwu:{
|
||||
|
@ -577,7 +1044,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
contentAfter:function(){
|
||||
'step 0'
|
||||
player.gainMaxHp();
|
||||
player.recover(3);
|
||||
'step 1'
|
||||
player.removeSkill('sbrende');
|
||||
game.log(player,'失去了技能','#g【'+get.translation('sbrende')+'】');
|
||||
|
@ -589,11 +1056,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
result:{
|
||||
player:function(player,target){
|
||||
var targets=game.filterPlayer(current=>lib.skill.sbzhangwu.filterTarget(null,player,current));
|
||||
if(!targets) return 0;
|
||||
if(!targets.length) return 0;
|
||||
var eff=0;
|
||||
for(var target of targets){
|
||||
eff+=get.effect(target,{name:'shunshou_copy2'},player,player);
|
||||
}
|
||||
eff+=15-5*Math.max(0,3-player.getDamagedHp());
|
||||
return eff>15?1:0;
|
||||
},
|
||||
}
|
||||
|
@ -2459,8 +2927,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhuSkill:true,
|
||||
group:'sbjiuyuan_recover',
|
||||
filter:function(event,player){
|
||||
return event.card.name=='tao'&&player!=event.player&&event.player.group=='wu' &&
|
||||
event.player.isIn()&&player.hasZhuSkill('zhushi',event.player);
|
||||
return event.card.name=='tao'&&player!=event.player&&event.player.group=='wu'&&
|
||||
event.player.isIn()&&player.hasZhuSkill('sbjiuyuan',event.player);
|
||||
},
|
||||
content:function(){
|
||||
player.draw();
|
||||
|
@ -2473,7 +2941,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(event.player==player) return false;
|
||||
if(!player.hasZhuSkill('sbjiuyuan')) return false;
|
||||
if(!player.hasZhuSkill('sbjiuyuan',event.player)) return false;
|
||||
if(event.player.group!='wu') return false;
|
||||
return true;
|
||||
},
|
||||
|
@ -2727,15 +3195,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return 6-get.value(card);
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(cards.length){
|
||||
player.changeHujia(1,null,true);
|
||||
player.addTempSkill('sbkeji_discard','phaseUseAfter');
|
||||
event.finish();
|
||||
}
|
||||
else{
|
||||
player.loseHp();
|
||||
player.changeHujia(2,null,true);
|
||||
player.addTempSkill('sbkeji_losehp','phaseUseAfter');
|
||||
}
|
||||
'step 1'
|
||||
player.changeHujia(2,null,true);
|
||||
player.addTempSkill('sbkeji_losehp','phaseUseAfter');
|
||||
},
|
||||
mod:{
|
||||
maxHandcard:function(player,num){
|
||||
|
@ -3301,13 +3772,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
dynamicTranslate:{
|
||||
sbkeji:function (player) {
|
||||
sbkeji:function(player){
|
||||
return '①出牌阶段' + (player.storage.sbkeji ? '' :'各') + '限一次。你可以选择一项:1.弃置一张手牌,然后获得1点护甲;2.失去1点体力,然后获得2点护甲。②你的手牌上限+X(X为你的护甲数)。③若你不为正在结算濒死流程的角色,你不能使用【桃】。';
|
||||
},
|
||||
sblongdan:function(player){
|
||||
if(player.hasSkill('sblongdan_mark',null,null,false)) return '蓄力技(1/3)。①你可以消耗1点蓄力值,将一张基本牌当做任意基本牌使用或打出,然后摸一张牌。②一名角色的回合结束时,你获得1点蓄力值。';
|
||||
return '蓄力技(1/3)。①你可以消耗1点蓄力值,将【杀】当做【闪】或将【闪】当做【杀】使用或打出,然后摸一张牌。②一名角色的回合结束时,你获得1点蓄力值。';
|
||||
},
|
||||
sblianhuan:function(player){
|
||||
var str='①出牌阶段,你可以重铸一张♣手牌。②出牌阶段限一次。你可以将一张♣手牌当【铁索连环】使用。';
|
||||
if(!player.storage.sblianhuan) str+='③当你使用【铁索连环】时,你可以失去1点体力,然后当此牌指定第一个目标后,你随机弃置每名不处于连环状态的目标角色一张手牌。';
|
||||
else str+='③当你使用【铁索连环】时,你可以额外指定任意名角色为目标。④当你使用【铁索连环】指定第一个目标后,你随机弃置每名不处于连环状态的目标角色一张手牌。';
|
||||
return str;
|
||||
}
|
||||
},
|
||||
translate:{
|
||||
sp_yangwan:'手杀杨婉',
|
||||
|
@ -3416,21 +3893,43 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sblongdan_shabi_info:'蓄力技(1/3)。①你可以消耗1点蓄力值,将一张基本牌当做任意基本牌使用或打出,然后摸一张牌。②一名角色的回合结束时,你获得1点蓄力值。',
|
||||
sb_liubei:'谋刘备',
|
||||
sbrende:'仁德',
|
||||
sbrende_info:'①出牌阶段每名角色限一次。你可以将任意张牌交给一名其他角色,然后你获得等量“仁望”标记(至多为8)。②每回合限一次。你可以移去2枚“仁望”,视为使用或打出一张基本牌。',
|
||||
sbrende_info:'①出牌阶段每名角色限一次。你可以将任意张牌交给一名其他角色,然后你获得等量“仁望”标记(至多为8)。②每回合限一次。你可以移去2枚“仁望”,视为使用或打出一张基本牌。③出牌阶段开始时,你获得2枚“仁望”。',
|
||||
sbzhangwu:'章武',
|
||||
sbzhangwu_info:'限定技。出牌阶段,你可以令所有于本局游戏成为过〖仁德①〗目标的其他角色依次交给你X张牌,然后你加1点体力上限,失去〖仁德〗(X为游戏轮数-1,且至多为3)。',
|
||||
sbzhangwu_info:'限定技。出牌阶段,你可以令所有于本局游戏成为过〖仁德①〗目标的其他角色依次交给你X张牌,然后你回复3点体力并失去〖仁德〗(X为游戏轮数-1,且至多为3)。',
|
||||
sbjijiang:'激将',
|
||||
sbjijiang_info:'主公技。出牌阶段结束时,你可以选择一名体力值不小于你的其他蜀势力角色A和一名在A攻击范围内的角色B。A选择一项:1.视为对B使用一张【杀】;2.下一个出牌阶段开始前,跳过此阶段。',
|
||||
sb_jiangwei:'谋姜维',
|
||||
sbtiaoxin:'挑衅',
|
||||
sbtiaoxin_info:'蓄力技(2/4)。①出牌阶段限一次。你可以选择至多X名角色(X为你的蓄力值),令这些角色选择一项:1.对你使用一张【杀】;2.交给你一张牌。然后你消耗等同于你选择的目标数的蓄力值。②当你于弃牌阶段弃置牌后,你获得等量蓄力值。',
|
||||
sbtiaoxin_info:'蓄力技(4/4)。①出牌阶段限一次。你可以选择至多X名角色(X为你的蓄力值),令这些角色选择一项:1.对你使用一张【杀】;2.交给你一张牌。然后你消耗等同于你选择的目标数的蓄力值。②当你于弃牌阶段弃置牌后,你获得等量蓄力值。',
|
||||
sbzhiji:'志继',
|
||||
sbzhiji_info:'觉醒技。准备阶段,若你发动〖挑衅①〗选择过共计5个目标,你减1点体力上限,令任意名角色获得“北伐”标记并获得如下效果直到你的下回合开始:其使用牌只能指定你或其为目标。',
|
||||
sbzhiji_info:'觉醒技。准备阶段,若你因〖挑衅①〗消耗过至少4点蓄力值,你减1点体力上限,令任意名角色获得“北伐”标记并获得如下效果直到你的下回合开始:其使用牌只能指定你或其为目标。',
|
||||
sb_fazheng:'谋法正',
|
||||
sbxuanhuo:'眩惑',
|
||||
sbxuanhuo_info:'①出牌阶段限一次。你可以将一张牌交给一名没有“眩”标记的其他角色,然后令其获得“眩”标记。②当有“眩”的其他角色于摸牌阶段外获得牌后,若你以此法于其本次获得“眩”的期间内获得其的牌数小于5,你随机获得其一张手牌。',
|
||||
sbenyuan:'恩怨',
|
||||
sbenyuan_info:'锁定技。准备阶段,若场上存在有“眩”的角色,你移去该角色的“眩”,且你于其本次获得“眩”的期间内获得其的牌数:不小于3,你交给其两张牌;小于3,其失去1点体力,你回复1点体力。',
|
||||
sb_chengong:'谋陈宫',
|
||||
sbmingce:'明策',
|
||||
sbmingce_info:'①出牌阶段限一次。你可以将一张牌交给一名其他角色,其选择一项:1.失去1点体力,令你摸两张牌并获得1枚“策”;2.摸一张牌。②出牌阶段开始时,你可以移去所有“策”并对一名其他角色造成等量伤害。',
|
||||
sbzhichi:'智迟',
|
||||
sbzhichi_info:'锁定技。当你受到伤害后,防止你本回合受到的伤害。',
|
||||
sb_yuanshao:'谋袁绍',
|
||||
sbluanji:'乱击',
|
||||
sbluanji_info:'①出牌阶段限一次。你可以将两张手牌当【万箭齐发】使用。②当其他角色因响应你使用的【万箭齐发】而打出【闪】时,你摸一张牌。',
|
||||
sbxueyi:'血裔',
|
||||
sbxueyi_info:'主公技,锁定技。①你的手牌上限+2X(X为场上其他群势力角色数)。②当你使用牌指定其他群势力角色为目标后,你摸一张牌。',
|
||||
sb_diaochan:'谋貂蝉',
|
||||
sblijian:'离间',
|
||||
sblijian_info:'出牌阶段限一次。你可以选择至少两名其他角色并弃置X张牌(X为你选择的角色数-1)。然后每名你选择的角色依次视为对这些角色中与其逆时针座次最近的另一名角色使用一张【决斗】。',
|
||||
sbbiyue:'闭月',
|
||||
sbbiyue_info:'锁定技。结束阶段,你摸Y张牌(Y为本回合受到过伤害的角色数+1且至多为5)。',
|
||||
sb_pangtong:'谋庞统',
|
||||
sblianhuan:'连环',
|
||||
sblianhuan_info:'①出牌阶段,你可以重铸一张♣手牌。②出牌阶段限一次。你可以将一张♣手牌当【铁索连环】使用。③当你使用【铁索连环】时,你可以失去1点体力,然后当此牌指定第一个目标后,你随机弃置每名不处于连环状态的目标角色一张手牌。',
|
||||
sblianhuan_lv2:'连环·改',
|
||||
sblianhuan_lv2_info:'①出牌阶段,你可以重铸一张♣手牌。②出牌阶段限一次。你可以将一张♣手牌当【铁索连环】使用。③当你使用【铁索连环】时,你可以额外指定任意名角色为目标。④当你使用【铁索连环】指定第一个目标后,你随机弃置每名不处于连环状态的目标角色一张手牌。',
|
||||
sbniepan:'涅槃',
|
||||
sbniepan_info:'限定技。当你处于濒死状态时,你可以弃置区域里的所有牌,摸三张牌,将体力回复至3点,复原武将牌,然后修改〖连环〗。',
|
||||
|
||||
sb_zhi:'谋攻篇·知',
|
||||
sb_shi:'谋攻篇·识',
|
||||
|
|
|
@ -67,7 +67,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"lukang":["male","wu",4,["drlt_qianjie","drlt_jueyan","drlt_poshi"],[]],
|
||||
"yl_yuanshu":["male","qun",4,["drlt_yongsi","drlt_weidi"],["zhu"]],
|
||||
"zhangxiu":["male","qun",4,["drlt_xiongluan","drlt_congjian"],[]],
|
||||
"chendao":["male","shu",4,["drlt_wanglie"],[]],
|
||||
"chendao":["male","shu",4,["dcwanglie"],[]],
|
||||
zhoufei:["female","wu",3,["olliangyin","olkongsheng"]],
|
||||
},
|
||||
perfectPair:{
|
||||
|
@ -141,6 +141,113 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"chendao":"陈到,字叔至,生卒年不详,豫州汝南(今河南驻马店平舆县)人。三国时期蜀汉将领,刘备帐下白毦兵统领,名位常亚于赵云,以忠勇著称。蜀汉建兴年间,任征西将军、永安都督,封亭侯。在任期间去世。",
|
||||
},
|
||||
skill:{
|
||||
//新杀小加强 陈到
|
||||
dcwanglie:{
|
||||
audio:'drlt_wanglie',
|
||||
locked:false,
|
||||
mod:{
|
||||
targetInRange:function(card,player,target){
|
||||
if(player.hasSkill('dcwanglie_effect',null,null,false)) return true;
|
||||
},
|
||||
},
|
||||
trigger:{
|
||||
player:"useCard",
|
||||
},
|
||||
filter:function(event,player){
|
||||
return player.isPhaseUsing()&&(event.card.name=='sha'||get.type(event.card)=='trick');
|
||||
},
|
||||
preHidden:true,
|
||||
check:function(event,player){
|
||||
if(player.hasSkill('dcwanglie2',null,null,false)) return true;
|
||||
if(['wuzhong','kaihua','dongzhuxianji'].contains(event.card.name)) return false;
|
||||
player._wanglie_temp=true;
|
||||
var eff=0;
|
||||
for(var i of event.targets){
|
||||
eff+=get.effect(i,event.card,player,player);
|
||||
}
|
||||
delete player._wanglie_temp;
|
||||
if(eff<0) return true;
|
||||
if(!player.countCards('h',function(card){
|
||||
return player.hasValueTarget(card,null,true);
|
||||
})) return true;
|
||||
if(get.tag(event.card,'damage')&&!player.needsToDiscard()&&!player.countCards('h',function(card){
|
||||
return get.tag(card,'damage')&&player.hasValueTarget(card,null,true);
|
||||
})) return true;
|
||||
return false;
|
||||
},
|
||||
prompt2:function(event){
|
||||
return '令'+get.translation(event.card)+'不能被响应,然后本阶段你使用牌只能指定自己为目标'
|
||||
},
|
||||
group:'dcwanglie_startup',
|
||||
content:function(){
|
||||
trigger.nowuxie=true;
|
||||
trigger.directHit.addArray(game.players);
|
||||
player.addTempSkill('dcwanglie2','phaseUseAfter');
|
||||
},
|
||||
subSkill:{
|
||||
startup:{
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
content:function(){
|
||||
player.addTempSkill('dcwanglie_effect','phaseUseAfter');
|
||||
},
|
||||
},
|
||||
effect:{
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
firstDo:true,
|
||||
popup:false,
|
||||
trigger:{player:'useCard1'},
|
||||
filter:function(event,player){
|
||||
return event.targets.some(target=>target!=player);
|
||||
},
|
||||
content:function(){
|
||||
player.addMark('dcwanglie_effect',1,false);
|
||||
if(player.countMark('dcwanglie_effect')>=2) player.removeSkill('dcwanglie_effect');
|
||||
},
|
||||
onremove:true,
|
||||
},
|
||||
},
|
||||
ai:{
|
||||
//pretao:true,
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
//if(tag=='pretao') return true;
|
||||
if(player._wanglie_temp) return false;
|
||||
player._wanglie_temp=true;
|
||||
var bool=function(){
|
||||
if(['wuzhong','kaihua','dongzhuxianji'].contains(arg.card.name)) return false;
|
||||
if(get.attitude(player,arg.target)>0||!player.isPhaseUsing()) return false;
|
||||
var cards=player.getCards('h',function(card){
|
||||
return card!=arg.card&&(!arg.card.cards||!arg.card.cards.contains(card));
|
||||
});
|
||||
var sha=player.getCardUsable('sha');
|
||||
if(arg.card.name=='sha') sha--;
|
||||
cards=cards.filter(function(card){
|
||||
if(card.name=='sha'&&sha<=0) return false;
|
||||
return player.hasValueTarget(card,null,true);
|
||||
});
|
||||
if(!cards.length) return true;
|
||||
if(!get.tag(arg.card,'damage')) return false;
|
||||
if(!player.needsToDiscard()&&!cards.filter(function(card){
|
||||
return get.tag(card,'damage');
|
||||
}).length) return true;
|
||||
return false;
|
||||
}();
|
||||
delete player._wanglie_temp;
|
||||
return bool;
|
||||
},
|
||||
},
|
||||
},
|
||||
dcwanglie2:{
|
||||
charlotte:true,
|
||||
mod:{
|
||||
playerEnabled:function(card,player,target){
|
||||
if(player!=target) return false;
|
||||
}
|
||||
},
|
||||
},
|
||||
//周妃
|
||||
olliangyin:{
|
||||
audio:'liangyin',
|
||||
|
@ -566,7 +673,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(result&&result.links&&result.links.length){
|
||||
player.line(player,trigger.player);
|
||||
player.logSkill('drlt_zhenrong');
|
||||
player.addToExpansion(result.links,trigger.player,'give','log').gaintag.add('drlt_zhengrong');
|
||||
player.addToExpansion(result.links,trigger.player,'give','log').gaintag.add('drlt_zhenrong');
|
||||
};
|
||||
},
|
||||
},
|
||||
|
@ -582,12 +689,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
juexingji:true,
|
||||
derivation:['drlt_qingce'],
|
||||
filter:function(event,player){
|
||||
return player.getExpansions('drlt_zhengrong').length>=3&&game.dead.length>0;
|
||||
return player.getExpansions('drlt_zhenrong').length>=3&&game.dead.length>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.awakenSkill('drlt_hongju');
|
||||
var cards=player.getExpansions('drlt_zhengrong');
|
||||
var cards=player.getExpansions('drlt_zhenrong');
|
||||
if(!cards.length||!player.countCards('h')){
|
||||
event.goto(2);
|
||||
return;
|
||||
|
@ -603,16 +710,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
next.set('processAI',function(list){
|
||||
var player=_status.event.player,cards=list[0][1].concat(list[1][1]).sort(function(a,b){
|
||||
return get.value(a)-get.value(b);
|
||||
}),cards2=cards.splice(0,player.getExpansions('drlt_zhengrong').length);
|
||||
}),cards2=cards.splice(0,player.getExpansions('drlt_zhenrong').length);
|
||||
return [cards2,cards];
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var pushs=result.moved[0],gains=result.moved[1];
|
||||
pushs.removeArray(player.getExpansions('drlt_zhengrong'));
|
||||
pushs.removeArray(player.getExpansions('drlt_zhenrong'));
|
||||
gains.removeArray(player.getCards('h'));
|
||||
if(!pushs.length||pushs.length!=gains.length) return;
|
||||
player.addToExpansion(pushs).gaintag.add('drlt_zhengrong');
|
||||
player.addToExpansion(pushs).gaintag.add('drlt_zhenrong');
|
||||
player.gain(gains,'gain2','log');
|
||||
}
|
||||
'step 2'
|
||||
|
@ -7425,8 +7532,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
// player.line(trigger.targets,trigger.card.nature);
|
||||
trigger.throw=false;
|
||||
trigger.skill='xinfu_guhuo_backup';
|
||||
game.log(player,'声明',trigger.targets&&trigger.targets.length?'对':'',trigger.targets||'',trigger.name=='useCard'?'使用':'打出',trigger.card);
|
||||
event.prompt=get.translation(player)+'声明'+(trigger.targets&&trigger.targets.length?'对'+get.translation(trigger.targets):'')+
|
||||
'使用'+(get.translation(trigger.card.nature)||'')+get.translation(trigger.card.name)+',是否质疑?';
|
||||
(trigger.name=='useCard'?'使用':'打出')+(get.translation(trigger.card.nature)||'')+get.translation(trigger.card.name)+',是否质疑?';
|
||||
event.targets=game.filterPlayer(function(current){
|
||||
return current!=player&&!current.hasSkill('chanyuan');
|
||||
}).sortBySeat(_status.currentPhase);
|
||||
|
@ -7599,13 +7707,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_yuanshao:['ol_yuanshao','re_yuanshao','xin_yuanshao'],
|
||||
pangde:['ol_pangde','re_pangde','pangde'],
|
||||
yanwen:['re_yanwen','yanwen'],
|
||||
caopi:['caopi','re_caopi'],
|
||||
caopi:['caopi','re_caopi','ps_caopi'],
|
||||
xuhuang:['ol_xuhuang','re_xuhuang','xuhuang'],
|
||||
menghuo:['re_menghuo','menghuo'],
|
||||
zhurong:['re_zhurong','ol_zhurong','zhurong'],
|
||||
sunjian:['ol_sunjian','re_sunjian','sunjian'],
|
||||
jiaxu:['re_jiaxu','jiaxu','ns_jiaxu'],
|
||||
dongzhuo:['ol_dongzhuo','sp_dongzhuo','re_dongzhuo','dongzhuo'],
|
||||
jiaxu:['re_jiaxu','jiaxu','ns_jiaxu','ps_jiaxu'],
|
||||
dongzhuo:['ol_dongzhuo','sp_dongzhuo','re_dongzhuo','dongzhuo','yj_dongzhuo'],
|
||||
dengai:['re_dengai','ol_dengai','dengai'],
|
||||
sp_ol_zhanghe:['sp_ol_zhanghe','yj_zhanghe','sp_zhanghe'],
|
||||
jiangwei:['ol_jiangwei','re_jiangwei','jiangwei'],
|
||||
|
@ -7614,9 +7722,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhangzhang:['re_zhangzhang','zhangzhang'],
|
||||
zuoci:['re_zuoci','zuoci'],
|
||||
caiwenji:['ol_caiwenji','re_caiwenji','caiwenji'],
|
||||
xuyou:['sp_xuyou','xuyou'],
|
||||
xuyou:['sp_xuyou','xuyou','yj_xuyou'],
|
||||
guanqiujian:['guanqiujian','tw_guanqiujian','re_guanqiujian','old_guanqiujian'],
|
||||
chendao:['chendao','ns_chendao'],
|
||||
chendao:['chendao','old_chendao','ns_chendao'],
|
||||
zhugezhan:['zhugezhan','old_zhugezhan'],
|
||||
ol_lusu:['ol_lusu','re_lusu'],
|
||||
zhanghe:['re_zhanghe','zhanghe'],
|
||||
|
@ -7714,10 +7822,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"drlt_zhenggu":"镇骨",
|
||||
drlt_zhenggu2:"镇骨",
|
||||
"drlt_zhenggu_info":"结束阶段,你可以选择一名其他角色,你的回合结束后和该角色的下个回合结束时,其将手牌摸至或弃至X张。(X为你的手牌数且至多为5)",
|
||||
"drlt_zhenrong":"徵荣",
|
||||
"drlt_zhenrong_info":"当你对其他角色造成伤害后,若其手牌比你多,你可以将其一张牌置于你的武将牌上,称为“荣”",
|
||||
"drlt_zhenrong":"征荣",
|
||||
"drlt_zhenrong_info":"当你对其他角色造成伤害后,若其手牌比你多,你可以将其一张牌置于你的武将牌上,称为“荣”。",
|
||||
"drlt_hongju":"鸿举",
|
||||
"drlt_hongju_info":"觉醒技,准备阶段,若“荣”的数量大于或等于3且场上有角色死亡,则你可以用任意张手牌替换等量的“荣”,然后扣减一点体力上限并获得技能“清侧”",
|
||||
"drlt_hongju_info":"觉醒技,准备阶段,若“荣”的数量大于或等于3且场上有角色死亡,则你可以用任意张手牌替换等量的“荣”,然后减1点体力上限并获得〖清侧〗。",
|
||||
"drlt_qingce":"清侧",
|
||||
"drlt_qingce_info":"出牌阶段,你可以移去一张“荣”,然后弃置一名角色装备区或判定区内的一张牌。",
|
||||
|
||||
|
@ -8016,6 +8124,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
olliangyin_info:'当有牌发生移动后,若此移动事件是本回合内你拥有〖良姻〗期间的首个有牌移出游戏/移入游戏的事件,则你可以选择一名其他角色。你与其各摸一张牌/弃置一张牌,然后你可以选择你或其中的一名手牌数为X的角色,该角色回复1点体力(X为你的“箜”数)',
|
||||
olkongsheng:'箜声',
|
||||
olkongsheng_info:'①准备阶段开始时,你可以将任意张牌置于你的武将牌上,称为“箜”。②结束阶段开始时,若你有不为装备牌的“箜”,则你获得“箜”中的非装备牌,然后令一名角色依次使用“箜”中的装备牌并失去1点体力。',
|
||||
dcwanglie:"往烈",
|
||||
dcwanglie_info:"①出牌阶段,你对其他角色使用的前两张牌无距离限制。②当你于出牌阶段内使用牌时,你可以令此牌不能被响应,然后你于本阶段内不能使用牌指定其他角色为目标。",
|
||||
|
||||
shenhua_feng:'神话再临·风',
|
||||
shenhua_huo:'神话再临·火',
|
||||
|
|
872
character/sp.js
1327
character/sp2.js
|
@ -11,7 +11,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
re_lidian:['male','wei',3,['xunxun','wangxi']],
|
||||
re_lidian:['male','wei',3,['xunxun','xinwangxi']],
|
||||
re_xushu:['male','shu',4,['zhuhai','qianxin']],
|
||||
caocao:['male','wei',4,['jianxiong','hujia'],['zhu']],
|
||||
simayi:['male','wei',3,['fankui','guicai']],
|
||||
|
@ -994,7 +994,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
wusheng:{
|
||||
audio:2,
|
||||
audioname2:{old_guanzhang:'old_fuhun'},
|
||||
audioname:['re_guanyu','guanzhang','jsp_guanyu','guansuo'],
|
||||
audioname:['re_guanyu','guanzhang','jsp_guanyu','guansuo','re_guanzhang'],
|
||||
enable:['chooseToRespond','chooseToUse'],
|
||||
filterCard:function(card,player){
|
||||
if(get.zhu(player,'shouyue')) return true;
|
||||
|
@ -2452,38 +2452,39 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
characterReplace:{
|
||||
caocao:['re_caocao','caocao'],
|
||||
guojia:['re_guojia','guojia'],
|
||||
simayi:['re_simayi','simayi'],
|
||||
jin_simayi:['jin_simayi','junk_simayi'],
|
||||
zhenji:['re_zhenji','zhenji'],
|
||||
guojia:['re_guojia','guojia','ps1059_guojia','ps2070_guojia'],
|
||||
simayi:['re_simayi','simayi','ps_simayi','ps2068_simayi'],
|
||||
jin_simayi:['jin_simayi','junk_simayi','ps_jin_simayi'],
|
||||
zhenji:['re_zhenji','yj_zhenji','zhenji'],
|
||||
xuzhu:['re_xuzhu','xuzhu'],
|
||||
zhangliao:['re_zhangliao','zhangliao'],
|
||||
sp_zhangliao:['sp_zhangliao','yj_zhangliao'],
|
||||
xiahoudun:['re_xiahoudun','xin_xiahoudun','xiahoudun'],
|
||||
liubei:['re_liubei','liubei','junk_liubei'],
|
||||
guanyu:['re_guanyu','guanyu'],
|
||||
zhangfei:['re_zhangfei','tw_zhangfei','xin_zhangfei','old_zhangfei','zhangfei'],
|
||||
zhaoyun:['re_zhaoyun','old_zhaoyun','zhaoyun'],
|
||||
guanyu:['re_guanyu','guanyu','ps_guanyu'],
|
||||
zhangfei:['re_zhangfei','tw_zhangfei','xin_zhangfei','old_zhangfei','zhangfei','yj_zhangfei'],
|
||||
zhaoyun:['re_zhaoyun','old_zhaoyun','zhaoyun','ps2063_zhaoyun','ps2067_zhaoyun'],
|
||||
sp_zhaoyun:['sp_zhaoyun','jsp_zhaoyun'],
|
||||
machao:['re_machao','machao'],
|
||||
machao:['re_machao','machao','ps_machao'],
|
||||
sp_machao:['sp_machao','old_machao'],
|
||||
zhugeliang:['re_zhugeliang','zhugeliang'],
|
||||
zhugeliang:['re_zhugeliang','zhugeliang','ps2066_zhugeliang','ps_zhugeliang'],
|
||||
huangyueying:['re_huangyueying','huangyueying','junk_huangyueying'],
|
||||
sunquan:['re_sunquan','sunquan'],
|
||||
zhouyu:['re_zhouyu','zhouyu'],
|
||||
zhouyu:['re_zhouyu','zhouyu','ps1062_zhouyu','ps2080_zhouyu'],
|
||||
luxun:['re_luxun','luxun'],
|
||||
lvmeng:['re_lvmeng','lvmeng'],
|
||||
huanggai:['re_huanggai','huanggai'],
|
||||
daqiao:['re_daqiao','daqiao'],
|
||||
sunshangxiang:['re_sunshangxiang','sunshangxiang'],
|
||||
ganning:['re_ganning','ganning'],
|
||||
ganning:['re_ganning','ganning','yongjian_ganning'],
|
||||
yj_ganning:['yj_ganning','sp_ganning'],
|
||||
lvbu:['re_lvbu','lvbu'],
|
||||
lvbu:['re_lvbu','lvbu','ps_lvbu'],
|
||||
diaochan:['re_diaochan','diaochan'],
|
||||
huatuo:['re_huatuo','old_huatuo','huatuo'],
|
||||
huaxiong:['re_huaxiong','old_huaxiong','huaxiong','ol_huaxiong'],
|
||||
yuanshu:['yl_yuanshu','yuanshu','re_yuanshu','old_yuanshu','ol_yuanshu'],
|
||||
gongsunzan:['dc_gongsunzan','re_gongsunzan','xin_gongsunzan','gongsunzan'],
|
||||
re_lidian:['re_lidian','old_re_lidian'],
|
||||
},
|
||||
translate:{
|
||||
caocao:'曹操',
|
||||
|
|
647
character/tw.js
|
@ -11,7 +11,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
tw_yunchouren:['tw_xujing','tw_qiaogong'],
|
||||
tw_yunchouyong:['tw_zongyu','tw_chendong','tw_sunyi'],
|
||||
tw_yunchouyan:['tw_jiangqing'],
|
||||
tw_swordsman:['xia_xushu','xia_wangyue','xia_liyàn','xia_tongyuan'],
|
||||
tw_swordsman:['xia_xushu','xia_wangyue','xia_liyàn','xia_tongyuan','xia_lusu','xia_dianwei','xia_zhaoe','xia_xiahouzie'],
|
||||
tw_mobile:['nashime','tw_beimihu','tw_gexuan','tw_zhugeguo'],
|
||||
tw_mobile2:['tw_chengpu','tw_guohuai','old_quancong','tw_caoxiu','tw_guanqiujian','tw_re_fazheng','tw_madai','tw_zhangfei','tw_guyong','tw_handang','tw_xuezong','tw_yl_luzhi'],
|
||||
tw_yijiang:['tw_caoang','tw_caohong','tw_zumao','tw_dingfeng','tw_maliang','tw_xiahouba'],
|
||||
|
@ -19,6 +19,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
xia_xiahouzie:['female','qun','3/4',['twxuechang','twduoren'],[]],
|
||||
xia_zhaoe:['female','qun',3,['twyanshi','twrenchou'],[]],
|
||||
xia_lusu:['male','qun',4,['twkaizeng','twyangming'],[]],
|
||||
xia_dianwei:['male','qun',4,['twliexi','twshezhong'],[]],
|
||||
tw_bingyuan:['male','qun',3,['twbingde','twqingtao'],[]],
|
||||
tw_niufudongxie:['double','qun',4,['twjuntun','twxiongxi','twxiafeng'],[]],
|
||||
tw_jianshuo:['male','qun',6,['twkunsi'],[]],
|
||||
|
@ -147,6 +151,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
liyàn:'李彦,号称"并州第一戟",是童渊的师兄。早年间两人在玉真子门下一起习武,后成年出师开枝散叶。同为并州人的吕布在得知李彦的名声后,投入其门下学习武艺。',
|
||||
re_fazheng:'字孝直,本为刘璋部下,刘备围成都时劝说刘璋投降,而后又与刘备进取汉中,献计将曹操大将夏侯渊斩首。法正善奇谋,深受刘备信任和敬重。',
|
||||
xin_guyong:'为蔡邕之徒。其为人少言语,不饮酒,严厉正大,被张纮推荐仕于孙权。孙权任命他为会稽郡丞,行太守事,后不断升迁,官至吴国丞相。顾雍为官,多进良言,有功于吴。',
|
||||
zhaoe:'赵娥,东汉酒泉郡禄福县(即肃州)人。丈夫庞子夏,表氏县(今高台县)人。庞子夏去世后,赵娥在禄福县抚养其子庞淯。她的父亲被李寿杀死。灵帝光和二年(公元179年)二月上旬的一天早晨,赵娥在都亭前与李寿相遇,她奋力挥刀杀死了李寿,随后到了都亭尊长的面前认罪伏法。后来,凉州刺史周洪、酒泉太守刘班等人共同上表朝廷,禀奏赵娥的烈义行为,刻石立碑显其赵家门户。黄门侍郎梁宽还著书追述赵娥的事迹,为其作传。西晋政治家傅玄为其作《秦女休行》诗,加以赞美。',
|
||||
xiahouzie:'夏侯紫萼,游卡桌游《三国杀阵面对决》中虚构的人物。幼年因天天帮病种的母亲采紫萼得其名。亲眼目睹母亲被宦官所杀,愤怒之下夺过佩剑斩下宦官的头颅。被神秘人所救,发现了自己的身世,决心与宦官争斗到底。后再闯荡江湖的过程中,与夏侯惇义结金兰,以夏侯家姓氏称呼。',
|
||||
},
|
||||
card:{
|
||||
dz_mantianguohai:{
|
||||
|
@ -260,6 +266,616 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
//夏侯紫萼
|
||||
twxuechang:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterTarget:function(card,player,target){
|
||||
return player.canCompare(target);
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseToCompare(target);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
if(!target.countGainableCards(player,'he')) event.finish();
|
||||
else player.gainPlayerCard(target,'he',true);
|
||||
}
|
||||
else{
|
||||
player.damage(target);
|
||||
player.addSkill('twxuechang_add');
|
||||
if(!player.storage.twxuechang_add) player.storage.twxuechang_add={};
|
||||
if(!player.storage.twxuechang_add[target.playerid]) player.storage.twxuechang_add[target.playerid]=0;
|
||||
player.storage.twxuechang_add[target.playerid]++;
|
||||
player.markSkill('twxuechang_add');
|
||||
event.finish();
|
||||
}
|
||||
'step 2'
|
||||
var card=result.cards[0];
|
||||
if(get.type(card)=='equip'){
|
||||
var card={name:'sha',isCard:true};
|
||||
if(player.canUse(card,target,false)) player.useCard(card,target,'noai',false);
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:6.5,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
var hs=player.getCards('h').sort(function(a,b){
|
||||
return get.number(b)-get.number(a);
|
||||
});
|
||||
var ts=target.getCards('h').sort(function(a,b){
|
||||
return get.number(b)-get.number(a);
|
||||
});
|
||||
if(!hs.length||!ts.length) return 0;
|
||||
if(get.number(hs[0])>get.number(ts[0])||get.number(hs[0])-ts.length>=(9+Math.min(2,player.hp/2))) return get.sgnAttitude(player,target)*get.effect(target,{name:'shunshou_copy2'},player,player);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
add:{
|
||||
audio:'twxuechang',
|
||||
trigger:{source:'damageBegin1'},
|
||||
filter:function(event,player){
|
||||
return player.storage.twxuechang_add&&player.storage.twxuechang_add[event.player.playerid];
|
||||
},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
content:function(){
|
||||
trigger.num+=player.storage.twxuechang_add[trigger.player.playerid];
|
||||
delete player.storage.twxuechang_add[trigger.player.playerid];
|
||||
if(get.is.empty(player.storage.twxuechang_add)) player.removeSkill('twxuechang_add');
|
||||
else player.markSkill('twxuechang_add');
|
||||
},
|
||||
marktext:'偿',
|
||||
intro:{
|
||||
content:function(storage,player){
|
||||
if(!storage) return '';
|
||||
var str='';
|
||||
var map=(_status.connectMode?lib.playerOL:game.playerMap);
|
||||
for(var i in storage){
|
||||
str+='<li>下次对'+get.translation(map[i])+'造成的伤害+'+storage[i];
|
||||
}
|
||||
return str;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
twduoren:{
|
||||
audio:2,
|
||||
trigger:{source:'dieAfter'},
|
||||
check:function(event,player){
|
||||
if(player.hp<3&&!player.isDamaged()) return false;
|
||||
var skills=event.player.getSkills(null,false,false).filter(skill=>{
|
||||
if(player.hasSkill(skill,null,false,false)) return false;
|
||||
var info=get.info(skill);
|
||||
return info&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte;
|
||||
});
|
||||
return skills.length>0;
|
||||
},
|
||||
group:'twduoren_remove',
|
||||
prompt2:function(event,player){
|
||||
var skills=event.player.getSkills(null,false,false).filter(skill=>{
|
||||
if(player.hasSkill(skill,null,false,false)) return false;
|
||||
var info=get.info(skill);
|
||||
return info&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte;
|
||||
});
|
||||
var str='';
|
||||
for(var i of skills){
|
||||
str+='〖'+get.translation(i)+'〗、';
|
||||
}
|
||||
str=str.slice(0,str.length-1);
|
||||
return '减1点体力上限,然后'+(str.length?'获得'+str:'听一句技能配音');
|
||||
},
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.loseMaxHp();
|
||||
'step 1'
|
||||
var skills=trigger.player.getSkills(null,false,false).filter(skill=>{
|
||||
if(player.hasSkill(skill,null,false,false)) return false;
|
||||
var info=get.info(skill);
|
||||
return info&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte;
|
||||
});
|
||||
if(skills.length){
|
||||
for(var i of skills) player.addSkillLog(i);
|
||||
player.markAuto('twduoren',skills);
|
||||
game.broadcastAll(function(list){
|
||||
game.expandSkills(list);
|
||||
for(var i of list){
|
||||
var info=lib.skill[i];
|
||||
if(!info) continue;
|
||||
if(!info.audioname2) info.audioname2={};
|
||||
info.audioname2.xia_xiahouzie='twduoren';
|
||||
}
|
||||
},skills);
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
remove:{
|
||||
trigger:{source:'dying'},
|
||||
filter:function(event,player){
|
||||
return event.player!=player&&player.getStorage('twduoren').some(skill=>{
|
||||
return player.hasSkill(skill,null,false,false);
|
||||
});
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
content:function(){
|
||||
for(var i of player.getStorage('twduoren')){
|
||||
player.removeSkill(i);
|
||||
game.log(player,'失去了技能','#g【'+get.translation(i)+'】');
|
||||
}
|
||||
delete player.storage.twduoren;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
//赵娥
|
||||
twyanshi:{
|
||||
audio:2,
|
||||
trigger:{global:'phaseBefore',player:'enterGame'},
|
||||
forced:true,
|
||||
locked:false,
|
||||
direct:true,
|
||||
onremove:true,
|
||||
filter:function(event,player){
|
||||
return (event.name!='phase'||game.phaseNumber==0);
|
||||
},
|
||||
group:['twyanshi_hurt','twyanshi_damage'],
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget('言誓:选择一名其他角色',lib.filter.notMe,true).set('ai',target=>get.attitude(_status.event.player,target));
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('twyanshi',target);
|
||||
player.markAuto('twyanshi',[target]);
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
hurt:{
|
||||
audio:'twyanshi',
|
||||
trigger:{
|
||||
global:'damageEnd',
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
if(!event.source||!event.source.isIn()) return false;
|
||||
return player==event.player&&!player.getStorage('twyanshi').contains(event.source)||player!=event.source&&player.getStorage('twyanshi').contains(event.player);
|
||||
},
|
||||
content:function(){
|
||||
trigger.source.addMark('twyanshi_mark',1);
|
||||
}
|
||||
},
|
||||
damage:{
|
||||
audio:'twyanshi',
|
||||
trigger:{
|
||||
source:['damageBegin1','damageSource'],
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
return event.player.hasMark('twyanshi_mark');
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(event.triggername=='damageBegin1'){
|
||||
trigger.num++;
|
||||
}
|
||||
else{
|
||||
player.draw(trigger.num);
|
||||
trigger.player.removeMark('twyanshi_mark',trigger.player.countMark('twyanshi_mark'));
|
||||
}
|
||||
}
|
||||
},
|
||||
mark:{
|
||||
marktext:'誓',
|
||||
intro:{
|
||||
name:'誓',
|
||||
name2:'誓',
|
||||
content:'mark'
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
twrenchou:{
|
||||
audio:2,
|
||||
trigger:{global:'die'},
|
||||
forced:true,
|
||||
forceDie:true,
|
||||
filter:function(event,player){
|
||||
if(!event.source||!event.source.isIn()) return false;
|
||||
if(event.player==player){
|
||||
return player.getStorage('twyanshi').some(i=>i.isIn()&&i.hp>0);
|
||||
}
|
||||
if(player.getStorage('twyanshi').contains(event.player)){
|
||||
return player.isIn()&&player.hp>0;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
logTarget:'source',
|
||||
line:false,
|
||||
skillAnimation:true,
|
||||
animationColor:'water',
|
||||
global:'twrenchou_ai',
|
||||
content:function(){
|
||||
'step 0'
|
||||
var avengers=[];
|
||||
if(trigger.player==player){
|
||||
avengers=player.getStorage('twyanshi').filter(i=>i.isIn()&&i.hp>0);
|
||||
}
|
||||
if(player.getStorage('twyanshi').contains(trigger.player)){
|
||||
avengers=[player];
|
||||
}
|
||||
event.avengers=avengers;
|
||||
'step 1'
|
||||
var avenger=event.avengers.shift();
|
||||
avenger.line(trigger.source,'fire');
|
||||
trigger.source.damage(avenger,avenger.hp);
|
||||
'step 2'
|
||||
if(event.avengers.length&&trigger.source.isIn()) event.goto(1);
|
||||
},
|
||||
ai:{
|
||||
combo:'twyanshi',
|
||||
},
|
||||
subSkill:{
|
||||
ai:{
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(!get.tag(card,'damage')) return;
|
||||
var num=0;
|
||||
game.filterPlayer(current=>{
|
||||
if(current.getStorage('twyanshi').some(i=>target==i)){
|
||||
num+=current.hp;
|
||||
}
|
||||
});
|
||||
var targets=target.getStorage('twyanshi').filter(i=>i.isIn());
|
||||
for(var targetx of targets){
|
||||
num+=targetx.hp;
|
||||
}
|
||||
if(num>0) return [1,0.5-1.5*num];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
//侠典韦
|
||||
twliexi:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
filter:function(event,player){
|
||||
return player.countCards('he');
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var list=[[],[]];
|
||||
for(var current of game.players){
|
||||
if(current==player) continue;
|
||||
var cards=[];
|
||||
var weapon=false;
|
||||
for(var card of player.getCards('he')){
|
||||
if(!lib.filter.cardDiscardable(card,player)) continue;
|
||||
if(get.subtype(card)=='equip1'&&!ui.selected.cards.some(i=>get.subtype(i)=='equip1')){
|
||||
if(16-get.value(card)>0){
|
||||
cards.push(card);
|
||||
weapon=true;
|
||||
}
|
||||
}
|
||||
if(7-get.value(card)>0) cards.push(card);
|
||||
}
|
||||
if(cards.length>current.hp){
|
||||
var val=0;
|
||||
for(var card of cards){
|
||||
if(get.subtype(card)!='equip1') val+=get.value(card);
|
||||
}
|
||||
if(val<30) list[0].push(current);
|
||||
}
|
||||
if(weapon&&player.hp>2||get.damageEffect(player,current,player)>10) list[1].push(current);
|
||||
}
|
||||
list[0].sort((a,b)=>{
|
||||
return get.damageEffect(b,player,player)-get.damageEffect(a,player,player);
|
||||
});
|
||||
player.chooseCardTarget({
|
||||
filterCard:lib.filter.cardDiscardable,
|
||||
selectCard:[1,Infinity],
|
||||
position:'he',
|
||||
filterTarget:lib.filter.notMe,
|
||||
prompt:get.prompt2('twliexi'),
|
||||
targetsx:[list[0][0],list[1][0]],
|
||||
ai1:function(card){
|
||||
var targetx=_status.event.targetsx[0];
|
||||
var hasWeapon=ui.selected.cards.some(i=>get.subtype(i)=='equip1');
|
||||
if(!targetx){
|
||||
var targetx=_status.event.targetsx[1];
|
||||
if(get.subtype(card)=='equip1'&&!hasWeapon) return 30-get.value(card);
|
||||
return -get.value(card);
|
||||
}
|
||||
if(ui.selected.cards.length>targetx.hp) return 0;
|
||||
if(get.subtype(card)=='equip1'&&!hasWeapon) return 30-get.value(card);
|
||||
return 7-get.value(card);
|
||||
},
|
||||
ai2:function(target){
|
||||
var targetx=_status.event.targetsx[0]||_status.event.targetsx[1];
|
||||
if(targetx==target) return 10;
|
||||
return 0;
|
||||
},
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
var cards=result.cards;
|
||||
player.logSkill('twliexi',target);
|
||||
player.discard(cards);
|
||||
if(cards.length>target.hp) target.damage();
|
||||
else player.damage(target);
|
||||
var goon=false;
|
||||
for(var card of cards){
|
||||
if(get.subtype(card)=='equip1'){
|
||||
goon=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!goon) event.finish();
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
game.delayx();
|
||||
target.damage();
|
||||
}
|
||||
},
|
||||
twshezhong:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var damage=player.getHistory('sourceDamage').length;
|
||||
if(damage){
|
||||
player.chooseTarget(get.prompt('twshezhong'),'令至多'+get.cnNumber(damage)+'名其他角色下个摸牌阶段的摸牌数-1',[1,damage],lib.filter.notMe).set('ai',target=>{
|
||||
return -get.attitude(_status.event.player,target);
|
||||
});
|
||||
}
|
||||
else event.goto(2);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var targets=result.targets;
|
||||
player.logSkill('twshezhong',targets);
|
||||
for(var target of targets){
|
||||
target.addSkill('twshezhong_minus');
|
||||
target.addMark('twshezhong_minus',1,false);
|
||||
}
|
||||
}
|
||||
'step 2'
|
||||
var targets=[];
|
||||
for(var evt of player.getHistory('damage')){
|
||||
if(evt.source&&evt.source.isIn()) targets.add(evt.source);
|
||||
}
|
||||
if(targets.length){
|
||||
player.chooseTarget(get.prompt('twshezhong'),'将手牌摸至一名与一名本回合对你造成过伤害的角色的体力值相同,且至多摸至五张',(card,player,target)=>{
|
||||
return _status.event.targets.contains(target);
|
||||
}).set('ai',target=>{
|
||||
return Math.max(0.1,target.hp-_status.event.player.countCards('h'));
|
||||
}).set('targets',targets);
|
||||
}
|
||||
else event.finish();
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('twshezhong',target);
|
||||
var num=Math.min(target.hp,5)-player.countCards('h');
|
||||
if(num>0) player.draw(num);
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
minus:{
|
||||
trigger:{player:'phaseDrawBegin'},
|
||||
forced:true,
|
||||
onremove:true,
|
||||
content:function(){
|
||||
var num=player.countMark('twshezhong_minus');
|
||||
trigger.num-=num;
|
||||
game.log(player,'的额定摸牌数','#g-'+num);
|
||||
player.removeSkill('twshezhong_minus');
|
||||
},
|
||||
mark:true,
|
||||
intro:{
|
||||
content:'额定摸牌数-#',
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
//侠鲁肃
|
||||
twkaizeng:{
|
||||
audio:2,
|
||||
global:'twkaizeng_want',
|
||||
askInfo:['好哥哥给点XXX','有XXX吗','想要XXX','能给些XXX吗','手头正缺XXX'],
|
||||
refuseInfo:['不给','拒绝'],
|
||||
subSkill:{
|
||||
want:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer(current=>{
|
||||
return current!=player&¤t.hasSkill('twkaizeng');
|
||||
});
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
var targets=game.filterPlayer(current=>{
|
||||
return current!=player&¤t.hasSkill('twkaizeng');
|
||||
});
|
||||
return ui.create.dialog('###慨赠###'+'选择一种基本牌的牌名或非基本牌的类型,然后令'+get.translation(targets)+(targets.length>1?'中的一人':'')+'选择是否交给你任意张牌');
|
||||
},
|
||||
chooseControl:function(){
|
||||
var list=[];
|
||||
var basic=[];
|
||||
for(var i=0;i<lib.inpile.length;i++){
|
||||
var name=lib.inpile[i];
|
||||
var type=get.type(name,'trick');
|
||||
if(type=='basic'){
|
||||
list.push(name);
|
||||
basic.push(name);
|
||||
}
|
||||
else list.add(type);
|
||||
}
|
||||
list.push('cancel2');
|
||||
return list;
|
||||
},
|
||||
check:function(event,player){
|
||||
if(Math.random()<0.4){
|
||||
var list=_status.event.controls.slice();
|
||||
list.remove('du');
|
||||
return list.randomGet();
|
||||
}
|
||||
var targets=game.filterPlayer(current=>current!=player&¤t.hasSkill('twkaizeng'));
|
||||
targets.sort((a,b)=>get.attitude(player,b)-get.attitude(player,a));
|
||||
var cards=targets[0].getCards('h');
|
||||
var list=[];
|
||||
for(var card of cards){
|
||||
var type=get.type2(card);
|
||||
if(type=='basic') list.add(get.name(card));
|
||||
else list.add(type);
|
||||
}
|
||||
var need=['trick','equip'].randomSort();
|
||||
need.addArray(['sha','jiu'].randomSort());
|
||||
for(var type of need){
|
||||
if(list.contains(type)) return type;
|
||||
}
|
||||
return list.randomGet();
|
||||
},
|
||||
backup:function(result,player){
|
||||
return {
|
||||
audio:'twkaizeng',
|
||||
type:result.control,
|
||||
direct:true,
|
||||
clearTime:true,
|
||||
delay:false,
|
||||
filterTarget:function(card,player,target){
|
||||
return target.hasSkill('twkaizeng');
|
||||
},
|
||||
selectTarget:function(){
|
||||
var player=_status.event.player;
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.hasSkill('twkaizeng');
|
||||
});
|
||||
return targets.length>1?1:-1;
|
||||
},
|
||||
prepare:function(cards,player,targets){
|
||||
targets[0].logSkill('twkaizeng_want',player);
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var type=lib.skill.twkaizeng_want_backup.type;
|
||||
var isbasic=lib.card[type];
|
||||
target.chooseCard('慨赠:是否交给'+get.translation(player)+'任意张手牌?','若你以此法:交给其至少两张牌,你摸一张牌;交给其的牌包含其选择的牌名或类型,你获得一张不为此牌名或类型的牌',[1,Infinity]).set('ai',card=>{
|
||||
if(!_status.event.goon) return -get.value(card);
|
||||
var player=_status.event.player,target=_status.event.getParent().player;
|
||||
if(ui.selected.cards.length>player.countCards('h')/2&&ui.selected.cards.length>=2) return 0;
|
||||
var type=_status.event.type;
|
||||
var isbasic=lib.card[type];
|
||||
var add=0;
|
||||
if(!ui.selected.cards.some(i=>get[isbasic?'name':'type2'](i,target)==type)) add+=3;
|
||||
if(ui.selected.cards.length<2) add+=3;
|
||||
return get.value(card,target)-get.value(card,player)+add;
|
||||
}).set('type',type).set('goon',get.attitude(target,player)>0);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var cards=result.cards;
|
||||
event.cards=cards;
|
||||
target.give(cards,player);
|
||||
}
|
||||
else{
|
||||
var refuseInfo=lib.skill.twkaizeng.refuseInfo;
|
||||
if(get.attitude(target,player)<0) refuseInfo.push('没门');
|
||||
target.chat(refuseInfo.randomGet());
|
||||
event.finish();
|
||||
}
|
||||
'step 2'
|
||||
if(cards.length>1) target.draw();
|
||||
'step 3'
|
||||
var type=lib.skill.twkaizeng_want_backup.type;
|
||||
var isbasic=lib.card[type];
|
||||
var fn=isbasic?'name':'type2';
|
||||
if(cards.some(card=>get[fn](card,player)==type)){
|
||||
var card=get.cardPile(cardx=>{
|
||||
return get[fn](cardx,target)!=type;
|
||||
});
|
||||
if(card) target.gain(card,'gain2');
|
||||
}
|
||||
'step 4'
|
||||
game.delayx();
|
||||
},
|
||||
ai:{
|
||||
result:{
|
||||
target:1,
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
prompt:()=>'请选择一名有【慨赠】的角色',
|
||||
},
|
||||
ai:{
|
||||
order:10,
|
||||
result:{
|
||||
player:function(player){
|
||||
var targets=game.filterPlayer(current=>{
|
||||
return current!=player&¤t.hasSkill('twkaizeng');
|
||||
});
|
||||
for(var i of targets) if(get.attitude(player,i)>0) return 1;
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
want_backup:{},
|
||||
},
|
||||
ai:{
|
||||
threaten:3
|
||||
}
|
||||
},
|
||||
twyangming:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:'phaseUseEnd',
|
||||
},
|
||||
frequent:true,
|
||||
filter:function(event,player){
|
||||
return player.hasHistory('useCard',evt=>evt.getParent('phaseUse')==event);
|
||||
},
|
||||
content:function(){
|
||||
var types=[];
|
||||
var history=player.getHistory('useCard',evt=>evt.getParent('phaseUse')==trigger);
|
||||
for(var evt of history){
|
||||
types.add(get.type2(evt.card));
|
||||
}
|
||||
var num=types.length;
|
||||
player.draw(num);
|
||||
player.addTempSkill('twyangming_limit');
|
||||
player.addMark('twyangming_limit',num,false);
|
||||
game.log(player,'本回合的手牌上限','#g+'+num);
|
||||
},
|
||||
subSkill:{
|
||||
limit:{
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
mod:{
|
||||
maxHandcard:function(player,num){
|
||||
return num+player.countMark('twyangming_limit');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
//邴原
|
||||
twbingde:{
|
||||
audio:2,
|
||||
|
@ -5382,7 +5998,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(_status.event.controls.contains('背水!')&&player.isDamaged()&&(target.countCards('h')||target.countCards('e',function(card){
|
||||
return player.canEquip(card)&&get.value(card,target)>=4+player.getDamagedHp();
|
||||
}))) return 2;
|
||||
if(player.isDamaged()&&(player.hp<=2||(!targtet.countCards('h')&&!target.countCards('e',function(card){
|
||||
if(player.isDamaged()&&(player.hp<=2||(!target.countCards('h')&&!target.countCards('e',function(card){
|
||||
return player.canEquip(card)&&get.value(card,target)>=4+player.getDamagedHp();
|
||||
})))) return 1;
|
||||
return 0;
|
||||
|
@ -7007,8 +7623,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
charlotte:true,
|
||||
filter:function(event,player,name){
|
||||
if(name=='useCard') return (event.card.name=='sha'&&player.hasMark('twchuanshu_mark'));
|
||||
return event._twchuanshu&&player.hasHistory('sourceDamage',function(evt){
|
||||
return evt.card==event.card&&evt.getParent().type=='card';
|
||||
return event.player!=player&&event._twchuanshu&&player.hasHistory('sourceDamage',function(evt){
|
||||
return evt.card==event.card;
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
|
@ -7022,7 +7638,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var num1=trigger._twchuanshu;
|
||||
var num2=0;
|
||||
player.getHistory('sourceDamage',function(evt){
|
||||
if(evt.card==trigger.card&&evt.getParent().type=='card') num2+=evt.num;
|
||||
if(evt.card==trigger.card) num2+=evt.num;
|
||||
});
|
||||
player.draw(num1*num2);
|
||||
}
|
||||
|
@ -12509,6 +13125,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
characterReplace:{
|
||||
tw_caocao:['tw_caocao','yj_caocao'],
|
||||
mateng:['tw_mateng','mateng'],
|
||||
},
|
||||
dynamicTranslate:{
|
||||
twfengpo:function(player){
|
||||
|
@ -13004,6 +13621,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
tw_dengzhi:'TW邓芝',
|
||||
twjimeng:'急盟',
|
||||
twjimeng_info:'出牌阶段限一次。你可以获得一名其他角色区域内的一张牌,然后交给其一张牌。若其体力值不小于你,你摸一张牌。',
|
||||
xia_lusu:'侠鲁肃',
|
||||
twkaizeng:'慨赠',
|
||||
twkaizeng_info:'其他角色的出牌阶段限一次。其可以选择一种基本牌的牌名或非基本牌的类型,然后令你选择是否交给其任意张手牌。若你以此法:交给其至少两张牌,你摸一张牌;交给其的牌中包含其选择的牌名或类型的牌,你获得一张与此牌名或类型不同的牌。',
|
||||
twyangming:'扬名',
|
||||
twyangming_info:'出牌阶段结束时,你可以摸X张牌,且令本回合的手牌上限+X(X为你本阶段使用过的牌的类型数)。',
|
||||
xia_dianwei:'侠典韦',
|
||||
twliexi:'烈袭',
|
||||
twliexi_info:'准备阶段,你可以弃置任意张牌并选择一名其他角色。若你以此法弃置的牌数大于其体力值,你对其造成1点伤害;否则其对你造成1点伤害。然后若你弃置的牌中有武器牌,你对其造成1点伤害。',
|
||||
twshezhong:'慑众',
|
||||
twshezhong_info:'结束阶段,若你:本回合对其他角色造成过伤害,你可以令至多X名其他角色下个摸牌阶段的额定摸牌数-1(X为你本回合造成的伤害值);本回合受到过伤害,你可以将手牌摸至与其中一名伤害来源的体力值相同(至多摸至5)。',
|
||||
xia_zhaoe:'赵娥',
|
||||
twyanshi:'言誓',
|
||||
twyanshi_info:'①游戏开始时,你选择一名其他角色,称为“言誓”角色。②当你或“言誓”角色受到二者之外角色造成的伤害后,伤害来源获得1枚“誓”标记。③你对有“誓”的角色使用牌无距离限制。④当你对有“誓”的角色造成伤害时,此伤害+1,且当你对这些角色造成伤害后,你摸等同于伤害值的牌并移去其所有“誓”。',
|
||||
twrenchou:'刃仇',
|
||||
twrenchou_info:'锁定技。当你或“言誓”角色死亡时,若二者中的另一名角色A存活,A对杀死你或其的角色造成X点伤害(X为A的体力值)。',
|
||||
xia_xiahouzie:'夏侯紫萼',
|
||||
twxuechang:'血偿',
|
||||
twxuechang_info:'出牌阶段限一次。你可以与一名其他角色拼点。若你:赢,你获得其一张牌,若此牌为装备牌,你视为对其使用一张【杀】;没赢,其对你造成1点伤害,且你下次对其造成的伤害+1。',
|
||||
twduoren:'夺刃',
|
||||
twduoren_info:'①当你杀死角色后,你可以减1点体力上限,然后获得其所有的非主公技和非隐匿技。②当你令其他角色进入濒死状态时,你失去因〖夺刃①〗获得的技能。',
|
||||
|
||||
tw_mobile:'海外服·稀有专属',
|
||||
tw_yunchouzhi:'运筹帷幄·智',
|
||||
|
|
|
@ -371,7 +371,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
filter:function(event,player){
|
||||
var cards=event.getg(player);
|
||||
if(!cards.length) return false;
|
||||
if(!cards||!cards.length) return false;
|
||||
var namelist=[];
|
||||
var namedlist=[];
|
||||
for(var i=0;i<cards.length;i++){
|
||||
|
@ -379,7 +379,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
var hs=player.getCards('h');
|
||||
for(var j=0;j<hs.length;j++){
|
||||
if(namelist.contains(get.name(hs[j]))&&!event.cards.contains(hs[j])) return true;
|
||||
if(namelist.contains(get.name(hs[j]))&&!cards.contains(hs[j])) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
|
|
@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
characterSort:{
|
||||
yijiang:{
|
||||
yijiang_2011:['caozhi','yujin','zhangchunhua','xin_fazheng','xin_masu','xin_xushu','xusheng','lingtong','wuguotai','chengong','gaoshun'],
|
||||
yijiang_2012:['old_wangyi','xunyou','zhonghui','old_madai','liaohua','old_guanzhang','bulianshi','handang','chengpu','liubiao','old_huaxiong','caozhang'],
|
||||
yijiang_2012:['old_wangyi','xunyou','zhonghui','old_madai','liaohua','guanzhang','bulianshi','handang','chengpu','liubiao','old_huaxiong','caozhang'],
|
||||
yijiang_2013:['manchong','guohuai','caochong','guanping','liufeng','jianyong','yufan','panzhangmazhong','zhuran','xin_liru','fuhuanghou'],
|
||||
yijiang_2014:['hanhaoshihuan','chenqun','caozhen','zhangsong','wuyi','zhoucang','zhuhuan','guyong','sunluban','yj_jushou','caifuren'],
|
||||
yijiang_2015:['caoxiu','caorui','zhongyao','xiahoushi','liuchen','zhangyi','zhuzhi','quancong','sunxiu','gongsunyuan','guotufengji'],
|
||||
|
@ -26,7 +26,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
kebineng:['male','qun',4,['kousheng']],
|
||||
lukai:['male','wu',4,['lkbushi','lkzhongzhuang']],
|
||||
xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo'],['die_audio']],
|
||||
old_guanzhang:['male','shu',4,['old_fuhun']],
|
||||
guanzhang:['male','shu',4,['fuhun']],
|
||||
old_wangyi:['female','wei',3,['oldzhenlie','oldmiji']],
|
||||
caozhang:['male','wei',4,['new_jiangchi']],
|
||||
guohuai:['male','wei',4,['rejingce']],
|
||||
|
@ -85,7 +85,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
|
||||
guohuanghou:['female','wei',3,['jiaozhao','danxin']],
|
||||
liuyu:['male','qun',2,['xinzhige','xinzongzuo']],
|
||||
liyan:['male','shu',3,['duliang','fulin']],
|
||||
liyan:['male','shu',3,['dcduliang','fulin']],
|
||||
sundeng:['male','wu',4,['kuangbi']],
|
||||
|
||||
cenhun:['male','wu',4,['jishe','lianhuo']],
|
||||
|
@ -209,6 +209,79 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhonghui:['jiangwei'],
|
||||
},
|
||||
skill:{
|
||||
//新杀小加强 李严
|
||||
dcduliang:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterTarget:function(card,player,target){
|
||||
return player!=target&&target.countCards('he')>0;
|
||||
},
|
||||
audio:'duliang',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.gainPlayerCard(target,'he',true);
|
||||
'step 1'
|
||||
var name=get.translation(target);
|
||||
player.chooseControl(function(){
|
||||
return Math.random()<0.5?'选项一':'选项二';
|
||||
}).set('prompt','督粮:请选择一项').set('choiceList',['你观看牌堆顶的两张牌,然后令'+name+'获得其中的一或两张基本牌','令'+name+'于下回合的摸牌阶段额外摸一张牌']);
|
||||
'step 2'
|
||||
if(result.control=='选项一'){
|
||||
var cards=get.cards(2),bool=false;
|
||||
event.cards=cards;
|
||||
game.cardsGotoOrdering(cards);
|
||||
for(var card of cards){
|
||||
if(get.type(card)=='basic'){
|
||||
bool=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
player.chooseButton(['督粮:选择令'+get.translation(target)+'获得的牌',cards],[1,2],bool).set('filterButton',button=>{
|
||||
return get.type(button.link)=='basic';
|
||||
}).set('ai',button=>{
|
||||
return _status.event.sgn*get.value(button.link);
|
||||
}).set('sgn',get.sgnAttitude(player,target)>0);
|
||||
}
|
||||
else{
|
||||
target.addTempSkill('dcduliang2',{player:'phaseAfter'});
|
||||
target.addMark('dcduliang2',1,false);
|
||||
event.finish();
|
||||
}
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var cardsx=result.links;
|
||||
target.gain(cardsx,'draw');
|
||||
game.log(target,'获得了'+get.cnNumber(cardsx.length)+'张牌');
|
||||
cards.removeArray(cardsx);
|
||||
cards.reverse();
|
||||
}
|
||||
for(var i=0;i<cards.length;i++){
|
||||
ui.cardPile.insertBefore(cards[i],ui.cardPile.firstChild);
|
||||
}
|
||||
game.updateRoundNumber();
|
||||
},
|
||||
ai:{
|
||||
order:4,
|
||||
result:{
|
||||
target:-1,
|
||||
player:0.1
|
||||
}
|
||||
}
|
||||
},
|
||||
dcduliang2:{
|
||||
trigger:{player:'phaseDrawBegin'},
|
||||
forced:true,
|
||||
mark:true,
|
||||
audio:false,
|
||||
onremove:true,
|
||||
charlotte:true,
|
||||
intro:{
|
||||
content:'下回合的摸牌阶段额外摸#张牌'
|
||||
},
|
||||
content:function(){
|
||||
trigger.num+=player.countMark('dcduliang2');
|
||||
}
|
||||
},
|
||||
//苏飞
|
||||
shuojian:{
|
||||
audio:2,
|
||||
|
@ -730,7 +803,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//诸葛尚
|
||||
sangu:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseUseEnd'},
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
direct:true,
|
||||
getEffect:function(player,target,event){
|
||||
var att=get.attitude(player,target);
|
||||
|
@ -738,7 +811,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var list1=[],list2=[];
|
||||
var used=[];
|
||||
player.getHistory('useCard',function(evt){
|
||||
if(evt.getParent('phaseUse')==event) used.add(evt.card.name);
|
||||
used.add(evt.card.name);
|
||||
});
|
||||
event.used=used;
|
||||
for(var name of lib.inpile){
|
||||
|
@ -757,7 +830,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
if(att<0){
|
||||
for(var i of list1){
|
||||
if(getv(i,target)<=0) return -att*Math.sqrt(get.threaten(target))*2;
|
||||
if(getv(i,target)<=0||target.getUseValue({name:i,storage:{sangu:true}})<=0) return -att*Math.sqrt(get.threaten(target))*2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -779,7 +852,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('sangu'),lib.filter.notMe).set('ai',function(target){
|
||||
player.chooseTarget(get.prompt2('sangu'),lib.filter.notMe).set('ai',function(target){
|
||||
return lib.skill.sangu.getEffect(_status.event.player,target,_status.event.getTrigger());
|
||||
});
|
||||
'step 1'
|
||||
|
@ -793,7 +866,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var list1=[],list2=[];
|
||||
var used=[];
|
||||
player.getHistory('useCard',function(evt){
|
||||
if(evt.getParent('phaseUse')==trigger) used.add(evt.card.name);
|
||||
used.add(evt.card.name);
|
||||
});
|
||||
event.used=used;
|
||||
for(var name of lib.inpile){
|
||||
|
@ -811,15 +884,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
var dialog=['为'+get.translation(target)+'选择至多三个牌名'];
|
||||
if(list1.length){
|
||||
dialog.push('<div class="text center">本阶段已使用过的牌</div>');
|
||||
dialog.push('<div class="text center">本回合已使用过的牌</div>');
|
||||
dialog.push([list1,'vcard']);
|
||||
}
|
||||
if(list2.length){
|
||||
dialog.push('<div class="text center">本阶段未使用过的牌</div>');
|
||||
dialog.push('<div class="text center">本回合未使用过的牌</div>');
|
||||
dialog.push([list2,'vcard']);
|
||||
}
|
||||
player.chooseButton(dialog,true,[1,3]).set('ai',function(button){
|
||||
var card={name:button.link[2]},list=_status.event.list;
|
||||
var card={name:button.link[2],storage:{sangu:true}},list=_status.event.list;
|
||||
var player=_status.event.player,target=_status.event.getParent().target;
|
||||
if(get.attitude(player,target)<0){
|
||||
if(!list.contains(card.name)) return 0;
|
||||
|
@ -843,12 +916,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
game.log(player,'为',target,'选择了','#y'+get.translation(names));
|
||||
target.addTempSkill('sangu_effect',{player:'phaseUseAfter'});
|
||||
target.markSkill('sangu_effect');
|
||||
var bool=true;
|
||||
for(var i of names){
|
||||
if(!event.used.contains(i)){
|
||||
player.loseHp();
|
||||
bool=false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(bool){
|
||||
target.addTempSkill('sangu_prevent',{player:'phaseUseAfter'});
|
||||
target.markAuto('sangu_prevent',[player]);
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(get.tag(card,'damage')&&card.storage&&card.storage.sangu) return 'zeroplayertarget';
|
||||
},
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
|
@ -894,9 +979,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return player.getStorage('sangu_effect').length>0;
|
||||
},
|
||||
content:function(){
|
||||
if(!trigger.card.storage) trigger.card.storage={};
|
||||
trigger.card.storage.sangu=true;
|
||||
player.unmarkAuto('sangu_effect',[player.getStorage('sangu_effect')[0]]);
|
||||
},
|
||||
},
|
||||
prevent:{
|
||||
trigger:{source:'damageBegin2'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
filter:function(event,player){
|
||||
return event.card&&event.card.storage&&event.card.storage.sangu&&player.getStorage('sangu_prevent').contains(event.player);
|
||||
},
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
yizu:{
|
||||
|
@ -5395,7 +5494,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
mod:{
|
||||
cardEnabled:function(card,player){
|
||||
if(player.storage.jiyu2&&player.storage.jiyu2.contains(get.suit(card))) return false;
|
||||
}
|
||||
},
|
||||
cardSavable:function(card,player){
|
||||
if(player.storage.jiyu2&&player.storage.jiyu2.contains(get.suit(card))) return false;
|
||||
},
|
||||
}
|
||||
},
|
||||
jiyu2:{
|
||||
|
@ -6149,11 +6251,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(!map[id]) map[id]={};
|
||||
if(!map[id].extraDamage) map[id].extraDamage=0;
|
||||
map[id].extraDamage++;
|
||||
trigger.target.judge(function(card){
|
||||
if(get.color(card)=='red') return -1;
|
||||
player.judge(function(card){
|
||||
if(get.color(card)=='red') return 1;
|
||||
return 0;
|
||||
}).judge2=function(result){
|
||||
return result.bool==false?true:false;
|
||||
return result.bool;
|
||||
};
|
||||
}
|
||||
'step 2'
|
||||
|
@ -9138,6 +9240,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
selectCard:2,
|
||||
position:'hs',
|
||||
audio:2,
|
||||
audioname:['re_guanzhang'],
|
||||
derivation:['new_rewusheng','olpaoxiao'],
|
||||
viewAs:{name:'sha'},
|
||||
prompt:'将两张手牌当杀使用或打出',
|
||||
|
@ -13388,7 +13491,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
characterReplace:{
|
||||
caozhi:['re_caozhi','dc_caozhi','caozhi'],
|
||||
caozhi:['re_caozhi','dc_caozhi','caozhi','ps_caozhi'],
|
||||
zhangchunhua:['re_zhangchunhua','zhangchunhua','mini_zhangchunhua'],
|
||||
yujin:['yujin_yujin','ol_yujin','xin_yujin','yujin'],
|
||||
dc_xushu:['dc_xushu','re_xushu'],
|
||||
|
@ -13399,7 +13502,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
wuguotai:['xin_wuguotai','re_wuguotai','wuguotai'],
|
||||
lingtong:['xin_lingtong','re_lingtong','lingtong','old_lingtong'],
|
||||
gaoshun:['xin_gaoshun','re_gaoshun','gaoshun','old_gaoshun'],
|
||||
zhonghui:['re_zhonghui','xin_zhonghui','zhonghui','old_zhonghui'],
|
||||
zhonghui:['re_zhonghui','xin_zhonghui','zhonghui','old_zhonghui','pe_zhonghui'],
|
||||
wangyi:['re_wangyi','wangyi','old_wangyi'],
|
||||
caozhang:['re_caozhang','xin_caozhang','caozhang'],
|
||||
guanzhang:['re_guanzhang','guanzhang','old_guanzhang'],
|
||||
|
@ -13416,7 +13519,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
panzhangmazhong:['xin_panzhangmazhong','re_panzhangmazhong','panzhangmazhong'],
|
||||
yufan:['xin_yufan','re_yufan','yufan'],
|
||||
zhuran:['re_zhuran','xin_zhuran','zhuran','old_zhuran'],
|
||||
liru:['re_liru','dc_liru','xin_liru','liru'],
|
||||
liru:['re_liru','dc_liru','xin_liru','liru','yj_liru'],
|
||||
fuhuanghou:['re_fuhuanghou','xin_fuhuanghou','fuhuanghou','old_fuhuanghou'],
|
||||
chenqun:['dc_chenqun','chenqun','re_chenqun','old_chenqun'],
|
||||
hanhaoshihuan:['re_hanhaoshihuan','hanhaoshihuan'],
|
||||
|
@ -13452,6 +13555,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
huanghao:['huanghao','dc_huanghao','old_huanghao'],
|
||||
caorui:['caorui','old_caorui'],
|
||||
sunziliufang:['dc_sunziliufang','sunziliufang'],
|
||||
liyan:['liyan','old_liyan'],
|
||||
},
|
||||
translate:{
|
||||
old_huaxiong:'华雄',
|
||||
|
@ -14004,7 +14108,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
pojun_info:'当你使用【杀】造成伤害后,你可以令受伤角色摸X张牌,然后其翻面(X为该角色的体力值且至多为5)。',
|
||||
shiyong:'恃勇',
|
||||
shiyong_info:'锁定技,当你受到一次红色【杀】或【酒】【杀】造成的伤害后,须减1点体力上限',
|
||||
old_guanzhang:'关兴张苞',
|
||||
old_guanzhang:'旧关兴张苞',
|
||||
old_wangyi:'王异',
|
||||
oldqianxi:'潜袭',
|
||||
oldqianxi_info:'当你使用【杀】对距离为1的目标角色造成伤害时,你可以进行一次判定,若判定结果不为红桃,你防止此伤害,令其减1点体力上限',
|
||||
|
@ -14050,7 +14154,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
kousheng_info:'①出牌阶段开始时,你可以选择任意张手牌,这些牌称为“寇旌”直到回合结束。②你的“寇旌”均视为【杀】且无次数限制。③当你因执行对应实体牌包含“寇旌”的【杀】的效果而造成伤害后,你展示所有“寇旌”牌,然后目标角色可以用所有手牌交换这些牌。',
|
||||
zhugeshang:'诸葛尚',
|
||||
sangu:'三顾',
|
||||
sangu_info:'出牌阶段结束时,你可以选择至多三个{【杀】或不为notarget或singleCard的普通锦囊牌}中的牌名,然后令一名其他角色记录这些牌名。该角色的下个出牌阶段开始时,其的手牌于其需要使用牌时均视为其记录中的第一张牌直到此阶段结束,且当其使用或打出牌时,移除这些牌中的第一张牌。若你以此法选择过的牌名中包含你本阶段内未使用过的牌名,则你失去1点体力。',
|
||||
sangu_info:'结束阶段,你可以选择至多三个{【杀】或不为notarget或singleCard的普通锦囊牌}中的牌名,然后令一名其他角色记录这些牌名。该角色的下个出牌阶段开始时,其的手牌于其需要使用牌时均视为其记录中的第一张牌直到此阶段结束,且当其使用或打出牌时,移除这些牌中的第一张牌。若你以此法选择过的牌名均为你本回合内使用过的牌名,则防止你因其以此法使用牌造成的伤害。',
|
||||
yizu:'轶祖',
|
||||
yizu_info:'锁定技。每回合限一次,当你成为【杀】或【决斗】的目标后,若你的体力值不大于使用者的体力值,则你回复1点体力。',
|
||||
liwan:'李婉',
|
||||
|
@ -14076,6 +14180,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
diezhang_info:'转换技。①出牌阶段,你使用杀的次数上限+1。②阴:当你使用牌被其他角色抵消后,你可以弃置一张牌,视为对其使用X张【杀】;阳:当其他角色使用牌被你抵消后,你可以摸X张牌,视为对其使用一张【杀】(X为1)。',
|
||||
duanwan:'断腕',
|
||||
duanwan_info:'限定技。当你处于濒死状态时,你可以将体力回复至2点,然后删除〖叠嶂①〗和当前转换技状态的〖叠嶂②〗分支,并将〖叠嶂〗修改为“每回合限一次”且将X修改为2。',
|
||||
dcduliang:'督粮',
|
||||
dcduliang2:'督粮',
|
||||
dcduliang_info:'出牌阶段限一次。你可以获得一名其他角色的一张牌,然后选择一项:1.你观看牌堆顶的两张牌,然后令其获得其中的一或两张基本牌;2.令其于下回合的摸牌阶段额外摸一张牌。',
|
||||
|
||||
yijiang_2011:'一将成名2011',
|
||||
yijiang_2012:'一将成名2012',
|
||||
|
|
|
@ -5716,6 +5716,62 @@ window.noname_asset_list=[
|
|||
'image/card/ziyangdan.png',
|
||||
'image/card/zong.png',
|
||||
|
||||
'image/character/dc_huojun.jpg',
|
||||
'image/character/dc_ruiji.jpg',
|
||||
'image/character/dc_sunziliufang.jpg',
|
||||
'image/character/dc_tengfanglan.jpg',
|
||||
'image/character/dongtuna.jpg',
|
||||
'image/character/maxiumatie.jpg',
|
||||
'image/character/ol_zhangyì.jpg',
|
||||
'image/character/ol_zhujun.jpg',
|
||||
'image/character/old_chendao.jpg',
|
||||
'image/character/old_liyan.jpg',
|
||||
'image/character/old_re_lidian.jpg',
|
||||
'image/character/pe_mengda.jpg',
|
||||
'image/character/pe_sunchen.jpg',
|
||||
'image/character/pe_wangyun.jpg',
|
||||
'image/character/pe_wenqin.jpg',
|
||||
'image/character/pe_zhonghui.jpg',
|
||||
'image/character/pk_duyu.jpg',
|
||||
'image/character/ps_caopi.jpg',
|
||||
'image/character/ps_caozhi.jpg',
|
||||
'image/character/ps_guanyu.jpg',
|
||||
'image/character/ps_jiaxu.jpg',
|
||||
'image/character/ps_jin_simayi.jpg',
|
||||
'image/character/ps_lvbu.jpg',
|
||||
'image/character/ps_machao.jpg',
|
||||
'image/character/ps_shen_machao.jpg',
|
||||
'image/character/ps_simayi.jpg',
|
||||
'image/character/ps_zhugeliang.jpg',
|
||||
'image/character/ps1059_guojia.jpg',
|
||||
'image/character/ps1062_zhouyu.jpg',
|
||||
'image/character/ps2063_zhaoyun.jpg',
|
||||
'image/character/ps2066_zhugeliang.jpg',
|
||||
'image/character/ps2067_zhaoyun.jpg',
|
||||
'image/character/ps2068_simayi.jpg',
|
||||
'image/character/ps2070_guojia.jpg',
|
||||
'image/character/ps2080_zhouyu.jpg',
|
||||
'image/character/qiaorui.jpg',
|
||||
'image/character/qinlang.jpg',
|
||||
'image/character/quhuang.jpg',
|
||||
'image/character/re_guanzhang.jpg',
|
||||
'image/character/sb_fazheng.jpg',
|
||||
'image/character/shen_jiaxu.jpg',
|
||||
'image/character/xia_dianwei.jpg',
|
||||
'image/character/xia_lusu.jpg',
|
||||
'image/character/xia_xiahouzie.jpg',
|
||||
'image/character/xia_zhaoe.jpg',
|
||||
'image/character/yj_caohong.jpg',
|
||||
'image/character/yj_dongzhuo.jpg',
|
||||
'image/character/yj_jiaxu.jpg',
|
||||
'image/character/yj_liru.jpg',
|
||||
'image/character/yj_xuyou.jpg',
|
||||
'image/character/yj_zhangfei.jpg',
|
||||
'image/character/yj_zhenji.jpg',
|
||||
'image/character/yongjian_ganning.jpg',
|
||||
'image/character/yuantanyuanxiyuanshang.jpg',
|
||||
'image/character/zhanghua.jpg',
|
||||
|
||||
'image/character/ahuinan.jpg',
|
||||
'image/character/baiwuchang.jpg',
|
||||
'image/character/baosanniang.jpg',
|
||||
|
|
59
game/game.js
|
@ -4280,6 +4280,7 @@
|
|||
update:function(config,map){
|
||||
if(config.connect_identity_mode=='zhong'){
|
||||
map.connect_player_number.hide();
|
||||
map.connect_limit_zhu.hide();
|
||||
map.connect_enhance_zhu.hide();
|
||||
map.connect_double_nei.hide();
|
||||
map.connect_zhong_card.show();
|
||||
|
@ -4288,6 +4289,7 @@
|
|||
}
|
||||
else if(config.connect_identity_mode=='purple'){
|
||||
map.connect_player_number.hide();
|
||||
map.connect_limit_zhu.hide();
|
||||
map.connect_enhance_zhu.hide();
|
||||
map.connect_double_nei.hide();
|
||||
map.connect_zhong_card.hide();
|
||||
|
@ -4297,6 +4299,7 @@
|
|||
else{
|
||||
map.connect_double_character.show();
|
||||
map.connect_player_number.show();
|
||||
map.connect_limit_zhu.show();
|
||||
map.connect_enhance_zhu.show();
|
||||
if(config.connect_player_number!='2'){
|
||||
map.connect_double_nei.show();
|
||||
|
@ -4341,6 +4344,18 @@
|
|||
frequent:true,
|
||||
restart:true,
|
||||
},
|
||||
connect_limit_zhu:{
|
||||
name:'常备主候选武将数',
|
||||
init:'group',
|
||||
restart:true,
|
||||
item:{
|
||||
off:'不限制',
|
||||
group:'按势力筛选',
|
||||
'4':'四',
|
||||
'6':'六',
|
||||
'8':'八',
|
||||
},
|
||||
},
|
||||
connect_zhong_card:{
|
||||
name:'明忠卡牌替换',
|
||||
init:true,
|
||||
|
@ -4398,6 +4413,7 @@
|
|||
map.double_nei.hide();
|
||||
map.auto_identity.hide();
|
||||
map.choice_zhu.hide();
|
||||
map.limit_zhu.hide();
|
||||
map.choice_zhong.hide();
|
||||
map.choice_nei.hide();
|
||||
map.choice_fan.hide();
|
||||
|
@ -4426,6 +4442,7 @@
|
|||
map.double_nei.hide();
|
||||
map.auto_identity.hide();
|
||||
map.choice_zhu.hide();
|
||||
map.limit_zhu.hide();
|
||||
map.choice_zhong.hide();
|
||||
map.choice_nei.hide();
|
||||
map.choice_fan.hide();
|
||||
|
@ -4455,6 +4472,7 @@
|
|||
map.double_nei.hide();
|
||||
}
|
||||
map.choice_zhu.show();
|
||||
map.limit_zhu.show();
|
||||
map.choice_zhong.show();
|
||||
map.choice_nei.show();
|
||||
map.choice_fan.show();
|
||||
|
@ -4787,6 +4805,18 @@
|
|||
'10':'十',
|
||||
},
|
||||
},
|
||||
limit_zhu:{
|
||||
name:'常备主候选武将数',
|
||||
init:'group',
|
||||
restart:true,
|
||||
item:{
|
||||
off:'不限制',
|
||||
group:'按势力筛选',
|
||||
'4':'四',
|
||||
'6':'六',
|
||||
'8':'八',
|
||||
},
|
||||
},
|
||||
choice_zhong:{
|
||||
name:'忠臣候选武将数',
|
||||
init:'4',
|
||||
|
@ -19853,7 +19883,7 @@
|
|||
var ais=lib.skill[card].check||function(){return 0};
|
||||
return ais();
|
||||
}
|
||||
var addi=(get.value(card)>=8&&get.type(card)!='equip')?-6:0;
|
||||
var addi=(get.value(card)>=8&&get.type(card)!='equip')?-3:0;
|
||||
if(card.name=='du') addi-=3;
|
||||
var source=_status.event.source;
|
||||
var player=_status.event.player;
|
||||
|
@ -19863,7 +19893,11 @@
|
|||
return get.number(card)*(Boolean(event.small)?-1:1);
|
||||
}
|
||||
if(source&&source!=player){
|
||||
if((get.attitude(player,source)>1)==Boolean(event.small)) return -getn(card)-get.value(card)/2+addi;
|
||||
if(get.attitude(player,source)>1){
|
||||
if(Boolean(event.small)) return getn(card)-get.value(card)/2+addi;
|
||||
return -getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
if(Boolean(event.small)) return -getn(card)-get.value(card)/2+addi;
|
||||
return getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
else{
|
||||
|
@ -21152,7 +21186,7 @@
|
|||
return map;
|
||||
};
|
||||
next.getg=function(player){
|
||||
if(this.getlx===false||player!=this.player) return [];
|
||||
if(this.getlx===false||player!=this.player||!this.cards) return [];
|
||||
return this.cards.slice(0);
|
||||
}
|
||||
next.gaintag=[];
|
||||
|
@ -50700,7 +50734,7 @@
|
|||
}
|
||||
},
|
||||
pause:function(){
|
||||
if(_status.paused2||_status.pausing||_status.nopause) return;
|
||||
if(_status.paused2||_status.pausing||_status.nopause||!ui.pause) return;
|
||||
if(!_status.video){
|
||||
if(ui.pause.classList.contains('hidden')) return;
|
||||
if(!_status.gameStarted) return;
|
||||
|
@ -52761,15 +52795,16 @@
|
|||
}
|
||||
return func;
|
||||
},
|
||||
eventInfoOL:function(item,level){
|
||||
eventInfoOL:function(item,level,nomore){
|
||||
if(Object.prototype.toString.call(item)=='[object Object]'){
|
||||
var item2={};
|
||||
for(var i in item){
|
||||
if(i=='_trigger'){
|
||||
if(level!==false) item2[i]=get.eventInfoOL(item[i],false);
|
||||
if(nomore===false) continue;
|
||||
else item2[i]=get.eventInfoOL(item[i],null,false);
|
||||
}
|
||||
else if(lib.element.event[i]||i=='content'||get.itemtype(item[i])=='event') continue;
|
||||
else item2[i]=get.stringifiedResult(item[i],level-1);
|
||||
else item2[i]=get.stringifiedResult(item[i],null,false);
|
||||
}
|
||||
return '_noname_event:'+JSON.stringify(item2);
|
||||
}
|
||||
|
@ -52791,7 +52826,7 @@
|
|||
}
|
||||
return evt||item;
|
||||
},
|
||||
stringifiedResult:function(item,level){
|
||||
stringifiedResult:function(item,level,nomore){
|
||||
if(!item) return item;
|
||||
if(typeof item=='function'){
|
||||
return get.funcInfoOL(item);
|
||||
|
@ -52802,7 +52837,9 @@
|
|||
case 'cards': return get.cardsInfoOL(item);
|
||||
case 'player': return get.playerInfoOL(item);
|
||||
case 'players': return get.playersInfoOL(item);
|
||||
case 'event': return get.eventInfoOL(item);
|
||||
case 'event':
|
||||
if(nomore===false) return '';
|
||||
return get.eventInfoOL(item);
|
||||
default:
|
||||
if(typeof level!='number'){
|
||||
level=8;
|
||||
|
@ -52813,7 +52850,7 @@
|
|||
}
|
||||
var item2=[];
|
||||
for(var i=0;i<item.length;i++){
|
||||
item2.push(get.stringifiedResult(item[i],level-1));
|
||||
item2.push(get.stringifiedResult(item[i],level-1,nomore));
|
||||
}
|
||||
return item2;
|
||||
}
|
||||
|
@ -52823,7 +52860,7 @@
|
|||
}
|
||||
var item2={};
|
||||
for(var i in item){
|
||||
item2[i]=get.stringifiedResult(item[i],level-1);
|
||||
item2[i]=get.stringifiedResult(item[i],level-1,nomore);
|
||||
}
|
||||
return item2;
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
window.noname_update={
|
||||
version:'1.9.120.2',
|
||||
update:'1.9.120.1',
|
||||
version:'1.9.120.3',
|
||||
update:'1.9.120.2',
|
||||
changeLog:[
|
||||
'远野美凪入选技能公布',
|
||||
'整合@copcap 和@萌新 编写的身份和国战新武将',
|
||||
'开放常备主数量限制选项',
|
||||
'整合@copcap 和@萌新 编写的新武将',
|
||||
'其他技能调整和bug修复',
|
||||
],
|
||||
files:[
|
||||
|
@ -22,18 +22,18 @@ window.noname_update={
|
|||
//'card/zhenfa.js',
|
||||
//'card/zhulu.js',
|
||||
'character/clan.js',
|
||||
'character/diy.js',
|
||||
//'character/diy.js',
|
||||
'character/extra.js',
|
||||
//'character/hearth.js',
|
||||
'character/gujian.js',
|
||||
//'character/gujian.js',
|
||||
//'character/gwent.js',
|
||||
//'character/hearth.js',
|
||||
'character/mobile.js',
|
||||
//'character/mtg.js',
|
||||
//'character/offline.js',
|
||||
'character/offline.js',
|
||||
'character/old.js',
|
||||
//'character/ow.js',
|
||||
'character/rank.js',
|
||||
//'character/rank.js',
|
||||
'character/refresh.js',
|
||||
'character/sb.js',
|
||||
'character/shenhua.js',
|
||||
|
@ -45,7 +45,7 @@ window.noname_update={
|
|||
//'character/xianjian.js',
|
||||
'character/xinghuoliaoyuan.js',
|
||||
'character/yijiang.js',
|
||||
'character/yingbian.js',
|
||||
//'character/yingbian.js',
|
||||
//'character/yxs.js',
|
||||
//'extension/boss/extension.js',
|
||||
//'font/suits.ttf',
|
||||
|
@ -59,11 +59,11 @@ window.noname_update={
|
|||
//'mode/boss.js',
|
||||
//'mode/brawl.js',
|
||||
//'mode/chess.js',
|
||||
//'mode/connect.js',
|
||||
'mode/connect.js',
|
||||
//'mode/doudizhu.js',
|
||||
'mode/guozhan.js',
|
||||
//'mode/identity.js',
|
||||
'mode/single.js',
|
||||
'mode/identity.js',
|
||||
//'mode/single.js',
|
||||
//'mode/stone.js',
|
||||
//'mode/tafang.js',
|
||||
//'mode/versus.js',
|
||||
|
|
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 99 KiB |
After Width: | Height: | Size: 144 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 161 KiB |
After Width: | Height: | Size: 132 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 29 KiB |
|
@ -18,6 +18,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
if(lib.node&&window.require){
|
||||
ui.startServer=ui.create.system('启动服务器',function(e){
|
||||
ui.click.shortcut(false);
|
||||
e.stopPropagation();
|
||||
ui.click.connectMenu();
|
||||
},true);
|
||||
|
|
|
@ -928,7 +928,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
event.junling=result.junling;
|
||||
event.targets=result.targets;
|
||||
event.num=0;
|
||||
player.carryOutJunling(player,event.junling,targets);
|
||||
player.carryOutJunling(player,event.junling,event.targets);
|
||||
'step 2'
|
||||
if(num<event.players.length) event.current=event.players[num];
|
||||
if(event.current&&event.current.isAlive()){
|
||||
|
@ -944,7 +944,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
else event.goto(4);
|
||||
'step 3'
|
||||
if(result.index==0){
|
||||
event.current.carryOutJunling(player,event.junling,targets);
|
||||
event.current.carryOutJunling(player,event.junling,event.targets);
|
||||
}
|
||||
else{
|
||||
event.current.addTempSkill('diaohulishan');
|
||||
|
@ -1440,21 +1440,22 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
event.goto(3);
|
||||
}
|
||||
'step 2'
|
||||
if(trigger.player.countCards('e')){
|
||||
trigger.player.chooseControl(list).set('prompt','追妒:请选择一项').set('choiceList',[
|
||||
if(trigger.player.countCards('e')>0){
|
||||
trigger.player.chooseControl().set('prompt','追妒:请选择一项').set('choiceList',[
|
||||
'令'+get.translation(trigger.player)+'此次对你造成的伤害+1',
|
||||
'弃置装备区里的所有牌',
|
||||
]).set('ai',function(){
|
||||
var list=_status.event.list;
|
||||
if(list.length>1) return '选项二';
|
||||
return list[0];
|
||||
var player=_status.event.player,cards=player.getCards('e');
|
||||
if(player.hp<=2) return 1;
|
||||
if(get.value(cards)<=7) return 1;
|
||||
return 0;
|
||||
}).set('list',list);
|
||||
}
|
||||
else event._result={control:'选项一'};
|
||||
'step 3'
|
||||
player.line(trigger.player);
|
||||
if(result.control!='选项二') trigger.num++;
|
||||
if(result.control!='选项一') trigger.player.discard(trigger.player.getCards('e'));
|
||||
if(result.control!='选项一') trigger.player.chooseToDiscard(trigger.player.countCards('e'),true,'e');
|
||||
},
|
||||
},
|
||||
gzshigong:{
|
||||
|
@ -3013,7 +3014,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
trigger:{player:'phaseDrawBegin2'},
|
||||
forced:true,
|
||||
filter:(event)=>!event.numFixed&&player.isMaxHp(),
|
||||
filter:(event,player)=>!event.numFixed&&player.isMaxHp(),
|
||||
preHidden:true,
|
||||
content:function(){
|
||||
trigger.num+=2;
|
||||
|
|
|
@ -1437,13 +1437,35 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
list3.push(i);
|
||||
}
|
||||
};
|
||||
var getZhuList=function(){
|
||||
var limit_zhu=get.config('limit_zhu');
|
||||
if(!limit_zhu||limit_zhu=='off') return list2.slice(0).sort(lib.sort.character);
|
||||
if(limit_zhu!='group'){
|
||||
var num=(parseInt(limit_zhu)||6);
|
||||
return list2.randomGets(num).sort(lib.sort.character);
|
||||
}
|
||||
var getGroup=function(name){
|
||||
if(lib.characterReplace[name]) return lib.character[lib.characterReplace[name][0]][1];
|
||||
return lib.character[name][1];
|
||||
}
|
||||
var list2x=list2.slice(0);
|
||||
list2x.randomSort();
|
||||
for(var i=0;i<list2x.length;i++){
|
||||
for(var j=i+1;j<list2x.length;j++){
|
||||
if(getGroup(list2x[i])==getGroup(list2x[j])){
|
||||
list2x.splice(j--,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
list2x.sort(lib.sort.character);
|
||||
return list2x;
|
||||
}
|
||||
list2.sort(lib.sort.character);
|
||||
event.list.randomSort();
|
||||
_status.characterlist=list4.slice(0).randomSort();
|
||||
list3.randomSort();
|
||||
if(_status.brawl&&_status.brawl.chooseCharacterFilter){
|
||||
_status.brawl.chooseCharacterFilter(event.list,list2,list3);
|
||||
_status.brawl.chooseCharacterFilter(event.list,getZhuList(),list3);
|
||||
}
|
||||
var num=get.config('choice_'+game.me.identity);
|
||||
if(event.zhongmode){
|
||||
|
@ -1453,7 +1475,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
if(game.zhu!=game.me){
|
||||
event.ai(game.zhu,event.list,list2)
|
||||
event.ai(game.zhu,event.list,getZhuList())
|
||||
event.list.remove(get.sourceCharacter(game.zhu.name1));
|
||||
event.list.remove(get.sourceCharacter(game.zhu.name2));
|
||||
if(_status.brawl&&_status.brawl.chooseCharacter){
|
||||
|
@ -1468,13 +1490,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else{
|
||||
if(_status.brawl&&_status.brawl.chooseCharacter){
|
||||
list=_status.brawl.chooseCharacter(list2,list3,num);
|
||||
list=_status.brawl.chooseCharacter(getZhuList(),list3,num);
|
||||
if(list===false){
|
||||
if(event.zhongmode){
|
||||
list=list3.slice(0,6);
|
||||
}
|
||||
else{
|
||||
list=list2.concat(list3.slice(0,num));
|
||||
list=getZhuList().concat(list3.slice(0,num));
|
||||
}
|
||||
}
|
||||
else if(list==='nozhu'){
|
||||
|
@ -1486,7 +1508,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
list=list3.slice(0,8);
|
||||
}
|
||||
else{
|
||||
list=list2.concat(list3.slice(0,num));
|
||||
list=getZhuList().concat(list3.slice(0,num));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1548,16 +1570,16 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
else{
|
||||
list2.sort(lib.sort.character);
|
||||
getZhuList().sort(lib.sort.character);
|
||||
list3.randomSort();
|
||||
if(_status.brawl&&_status.brawl.chooseCharacter){
|
||||
list=_status.brawl.chooseCharacter(list2,list3,num);
|
||||
list=_status.brawl.chooseCharacter(getZhuList(),list3,num);
|
||||
if(list===false){
|
||||
if(event.zhongmode){
|
||||
list=list3.slice(0,6);
|
||||
}
|
||||
else{
|
||||
list=list2.concat(list3.slice(0,num));
|
||||
list=getZhuList().concat(list3.slice(0,num));
|
||||
}
|
||||
}
|
||||
else if(list==='nozhu'){
|
||||
|
@ -1570,7 +1592,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
list=list3.slice(0,6);
|
||||
}
|
||||
else{
|
||||
list=list2.concat(list3.slice(0,num));
|
||||
list=getZhuList().concat(list3.slice(0,num));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1905,8 +1927,30 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
list=event.list.randomGets(8);
|
||||
}
|
||||
else{
|
||||
list2.sort(lib.sort.character);
|
||||
list=list2.concat(list3.randomGets(5));
|
||||
var getZhuList=function(list2){
|
||||
var limit_zhu=lib.configOL.limit_zhu;
|
||||
if(!limit_zhu||limit_zhu=='off') return list2.slice(0).sort(lib.sort.character);
|
||||
if(limit_zhu!='group'){
|
||||
var num=(parseInt(limit_zhu)||6);
|
||||
return list2.randomGets(num).sort(lib.sort.character);
|
||||
}
|
||||
var getGroup=function(name){
|
||||
if(lib.characterReplace[name]) return lib.character[lib.characterReplace[name][0]][1];
|
||||
return lib.character[name][1];
|
||||
}
|
||||
var list2x=list2.slice(0);
|
||||
list2x.randomSort();
|
||||
for(var i=0;i<list2x.length;i++){
|
||||
for(var j=i+1;j<list2x.length;j++){
|
||||
if(getGroup(list2x[i])==getGroup(list2x[j])){
|
||||
list2x.splice(j--,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
list2x.sort(lib.sort.character);
|
||||
return list2x;
|
||||
}
|
||||
list=getZhuList(list2).concat(list3.randomGets(5));
|
||||
}
|
||||
var next=game.zhu.chooseButton(true);
|
||||
next.set('selectButton',(lib.configOL.double_character?2:1));
|
||||
|
|