v1.9.120.3

This commit is contained in:
Spmario233 2023-05-02 19:26:19 +08:00
parent 83c7a2a8e2
commit eec54fa6f5
77 changed files with 7231 additions and 336 deletions

View File

@ -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"

View File

@ -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&&current.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(){

View File

@ -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(){

View File

@ -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:'神张角',

View File

@ -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,9 +1303,11 @@ 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 player.getStorage('sbbenxi_effect3').contains(event.card)&&game.hasPlayer2(current=>{
return current.hasHistory('damage',evt=>{
return event.card==evt.card;
});
});
},
content:function(){
player.draw(5);
@ -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');
@ -15707,8 +15708,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(list.length>1){
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:'手杀步练师',

File diff suppressed because it is too large Load Diff

View File

@ -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:'神话再临',

View File

@ -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:'界限突破·风',

View File

@ -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&&current.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,9 +989,22 @@ 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:{
audio:2,
enable:'phaseUse',
@ -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;
},
}
@ -2460,7 +2928,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
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);
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();
}
'step 1'
player.changeHujia(2,null,true);
player.addTempSkill('sbkeji_losehp','phaseUseAfter');
}
},
mod:{
maxHandcard:function(player,num){
@ -3308,6 +3779,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
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:'主公技,锁定技。①你的手牌上限+2XX为场上其他群势力角色数。②当你使用牌指定其他群势力角色为目标后你摸一张牌。',
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:'谋攻篇·识',

View File

@ -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:'神话再临·火',

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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:'曹操',

View File

@ -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&&current.hasSkill('twkaizeng');
});
},
chooseButton:{
dialog:function(event,player){
var targets=game.filterPlayer(current=>{
return current!=player&&current.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&&current.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&&current.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&&current.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张牌且令本回合的手牌上限+XX为你本阶段使用过的牌的类型数。',
xia_dianwei:'侠典韦',
twliexi:'烈袭',
twliexi_info:'准备阶段你可以弃置任意张牌并选择一名其他角色。若你以此法弃置的牌数大于其体力值你对其造成1点伤害否则其对你造成1点伤害。然后若你弃置的牌中有武器牌你对其造成1点伤害。',
twshezhong:'慑众',
twshezhong_info:'结束阶段若你本回合对其他角色造成过伤害你可以令至多X名其他角色下个摸牌阶段的额定摸牌数-1X为你本回合造成的伤害值本回合受到过伤害你可以将手牌摸至与其中一名伤害来源的体力值相同至多摸至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:'运筹帷幄·智',

View File

@ -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;
},

View File

@ -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',

View File

@ -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',

View File

@ -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;
}

View File

@ -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',

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

BIN
image/character/pk_duyu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
image/character/ps_lvbu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
image/character/qiaorui.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
image/character/qinlang.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
image/character/quhuang.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
image/character/yj_liru.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -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);

View File

@ -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;

View File

@ -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));