v1.9.113.3
|
@ -251,13 +251,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
singleCard:true,
|
||||
type:'trick',
|
||||
selectTarget:2,
|
||||
complexTarget:true,
|
||||
multitarget:true,
|
||||
targetprompt:['给一张牌','得两张牌'],
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player;
|
||||
},
|
||||
filterAddedTarget:function(card,player,target){
|
||||
return target!=player;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(!player.countCards('h')){
|
||||
|
|
|
@ -1567,31 +1567,30 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
fullskin:true,
|
||||
type:'trick',
|
||||
enable:true,
|
||||
selectTarget:2,
|
||||
singleCard:true,
|
||||
multitarget:true,
|
||||
targetprompt:['被借刀','出杀目标'],
|
||||
complexSelect:true,
|
||||
complexTarget:true,
|
||||
multicheck:function(){
|
||||
return game.hasPlayer(function(current){
|
||||
if(current.getEquip(1)){
|
||||
return game.hasPlayer(function(current2){
|
||||
return lib.filter.filterTarget({name:'sha'},current,current2);
|
||||
return current.inRange(current2)&¤t.canUse('sha',current2,false);
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
if(ui.selected.targets.length==0){
|
||||
return (player!=target&&target.getCards('e',{subtype:'equip1'}).length);
|
||||
}
|
||||
else{
|
||||
return lib.filter.filterTarget({name:'sha'},ui.selected.targets[0],target);
|
||||
}
|
||||
return player!=target&&target.getEquip(1)&&game.hasPlayer(function(current){
|
||||
return target!=current&&target.inRange(current)&&target.canUse('sha',current,false);
|
||||
});
|
||||
},
|
||||
filterAddedTarget:function(card,player,target,preTarget){
|
||||
return target!=preTarget&&preTarget.inRange(target)&&preTarget.canUse('sha',target,false);
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
if(event.directHit||(!_status.connectMode&&lib.config.skip_shan&&!target.hasSha())){
|
||||
if(event.directHit||!event.addedTarget||(!_status.connectMode&&lib.config.skip_shan&&!target.hasSha())){
|
||||
event.directfalse=true;
|
||||
}
|
||||
else{
|
||||
|
|
|
@ -97,9 +97,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ns_zhangwei:['female','shu',3,['nsqiyue','nsxuezhu']],
|
||||
diy_wenyang:['male','wei','4/6',['lvli','choujue']],
|
||||
// diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']],
|
||||
// diy_hanlong:['male','wei',4,['siji','ciqiu']],
|
||||
diy_hanlong:['male','wei',4,['siji','ciqiu']],
|
||||
diy_feishi:['male','shu',3,['nsshuaiyan','moshou']],
|
||||
diy_liuyan:['male','shu',3,['juedao','geju']],
|
||||
diy_liuyan:['male','qun',3,['juedao','geju']],
|
||||
// diy_luxun:['male','wu',3,['shaoying','zonghuo']],
|
||||
diy_yuji:['male','qun',3,['diyguhuo','diychanyuan']],
|
||||
// diy_zhouyu:['male','wu',3,['jieyan','honglian']],
|
||||
|
@ -195,7 +195,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"ns_chentai","ns_huangwudie","ns_sunyi","ns_zhangning","ns_yanghu"],
|
||||
diy_tieba:["ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua","ns_luyusheng"],
|
||||
diy_fakenews:["diy_wenyang","ns_zhangwei","ns_caimao","ns_chengpu"],
|
||||
diy_default:["diy_feishi","diy_liuyan","diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji","diy_liufu","diy_xizhenxihong","diy_liuzan","diy_zaozhirenjun","diy_yangyi","diy_tianyu"],
|
||||
diy_xushi:["diy_feishi","diy_hanlong","diy_liufu","diy_liuyan","diy_liuzan","diy_tianyu","diy_xizhenxihong","diy_yangyi","diy_zaozhirenjun"],
|
||||
diy_default:["diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji"],
|
||||
diy_noname:['noname'],
|
||||
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku","key_hiroto","key_sakuya","key_youta","key_rumi","key_chihaya","key_yukito","key_asara","key_kotomi","key_mia","key_kano","db_key_liyingxia"],
|
||||
diy_trashbin:['old_jiakui','ol_guohuai','junk_zhangrang'],
|
||||
|
@ -203,6 +204,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
characterIntro:{
|
||||
noname:'无名杀的吉祥物。<br>画师:空城<br>技能设计:李木子',
|
||||
diy_hanlong:'韩龙,魏国刺客。他孤身一人深入到了长城外的敌人领地,成功刺杀了敌方首领轲比能,瓦解了鲜卑民族,曹魏边境因此获得了几十年的安稳。',
|
||||
ns_zhangwei:'血骑教习·张葳,三国杀集换式卡牌游戏《阵面对决》中的帝畿系列卡牌。游卡桌游官方原创的三国时期女性角色。',
|
||||
diy_feishi:'字公举,生卒年不详,益州犍为郡南安县(今四川省乐山市)人。刘璋占据益州时,以费诗为绵竹县县令。刘备进攻刘璋夺取益州,费诗举城而降,后受拜督军从事,转任牂牁郡太守,再为州前部司马。',
|
||||
diy_lukang:'字幼节,吴郡吴县(今江苏苏州)人。三国时期吴国名将,丞相陆逊次子。',
|
||||
|
@ -14874,40 +14876,39 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
ciqiu:{
|
||||
unique:true,
|
||||
trigger:{source:'damageBegin'},
|
||||
trigger:{source:"damageBegin1"},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.card&&event.card.name=='sha'&&event.player.hp==event.player.maxHp&&event.notLink();
|
||||
filter:function(event){
|
||||
return event.card&&event.card.name=='sha'&&event.player.isHealthy();
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
trigger.num++;
|
||||
trigger._ciqiu3=true;
|
||||
},
|
||||
group:['ciqiu2']
|
||||
},
|
||||
ciqiu2:{
|
||||
trigger:{global:'dying'},
|
||||
priority:9,
|
||||
filter:function(event,player){
|
||||
return event.player!=player&&event.parent._ciqiu3&&event.parent.source==player;
|
||||
},
|
||||
check:function(event,player){
|
||||
return get.attitude(player,event.player)<0;
|
||||
},
|
||||
forced:true,
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
'step 0'
|
||||
trigger.player.die();
|
||||
player.removeSkill('ciqiu2');
|
||||
'step 1'
|
||||
if(!trigger.player.isAlive()){
|
||||
trigger.cancel(true);
|
||||
if(trigger.num>=trigger.player.hp){
|
||||
trigger.player.addTempSkill('ciqiu_dying');
|
||||
player.removeSkill('ciqiu')
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
player:function(card,player,target){
|
||||
if(card.name=='sha'&&target.isHealthy()&&get.attitude(player,target)>0){
|
||||
return [1,-2];
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
ciqiu_dying:{
|
||||
trigger:{player:"dyingBegin"},
|
||||
forced:true,
|
||||
silent:true,
|
||||
firstDo:true,
|
||||
content:function(){
|
||||
player.die();
|
||||
},
|
||||
popup:false,
|
||||
},
|
||||
ciqiu3:{},
|
||||
juedao:{
|
||||
enable:'phaseUse',
|
||||
filter:function(event,player){
|
||||
|
@ -15928,8 +15929,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
|
||||
siji:'伺机',
|
||||
ciqiu:'刺酋',
|
||||
ciqiu2:'刺酋',
|
||||
ciqiu3:'刺酋',
|
||||
ciqiu_dying:'刺酋',
|
||||
diy_liuyan:'刘焉',
|
||||
juedao:'绝道',
|
||||
geju:'割据',
|
||||
|
@ -15991,6 +15991,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
junk_zhangrang_ab:'张让',
|
||||
old_jiakui_ab:'贾逵',
|
||||
diy_tieba:'吧友设计',
|
||||
diy_xushi:'玩点论杀·虚实篇',
|
||||
diy_default:'常规',
|
||||
diy_noname:'无名专属',
|
||||
diy_key:'论外',
|
||||
|
|
|
@ -4893,7 +4893,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dulie:'笃烈',
|
||||
dulie_info:'锁定技。当你成为【杀】的目标时,若使用者的体力值大于你,则你进行判定。若结果为红桃,则取消此目标。',
|
||||
tspowei:'破围',
|
||||
tspowei_info:'使命技。①游戏开始时,你令所有其他角色获得一个“围”。②一名角色受到伤害后,若其有“围”,则其移去“围”。③回合开始时,你选择所有有“围”的角色。这些角色失去“围”,然后这些角色的第一个不为你的下家获得等量的“围”。④一名其他角色的回合开始时,若其有围,则你可以选择一项:⒈弃置一张手牌并对其造成1点伤害。⒉若其体力值不大于你,则你获得其一张手牌。选择完成后,你视为在其攻击范围内直到回合结束。⑤使命:当你使用【杀】结算完成后,若场上没有“围”,则你获得技能〖神著〗。⑥失败:当你进入濒死状态时,你将体力值回复至1点,然后弃置装备区的所有牌。',
|
||||
tspowei_info:'使命技。①游戏开始时,你令所有其他角色获得一个“围”。②一名角色受到伤害后,若其有“围”,则其移去“围”。③回合开始时,你选择所有有“围”的角色。这些角色失去“围”,然后这些角色的第一个不为你的下家获得等量的“围”。④一名其他角色的回合开始时,若其有“围”,则你可以选择一项:⒈弃置一张手牌并对其造成1点伤害。⒉若其体力值不大于你,则你获得其一张手牌。选择完成后,你视为在其攻击范围内直到回合结束。⑤使命:回合开始时,若场上没有“围”,则你获得技能〖神著〗。⑥失败:当你进入濒死状态时,你将体力值回复至1点,然后弃置装备区的所有牌。',
|
||||
shenzhu:'神著',
|
||||
shenzhu_info:'锁定技,当你使用有对应实体牌的非转化【杀】结算结束后,你选择一项:①摸一张牌,且本回合使用【杀】的次数上限+1。②摸三张牌,且本回合不能再使用【杀】。',
|
||||
dangmo:'荡魔',
|
||||
|
|
|
@ -81,7 +81,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_mifuren:['female','shu',3,['xinguixiu','qingyu']],
|
||||
sp_xinpi:['male','wei',3,['spyinju','spchijie']],
|
||||
nanhualaoxian:['male','qun',3,['yufeng','tianshu']],
|
||||
feiyi:['male','shu',3,['mjshengxi','mjkuanji']],
|
||||
feiyi:['male','shu',3,['mjshengxi','fyjianyu']],
|
||||
sp_bianfuren:['female','wei',3,['spwanwei','spyuejian']],
|
||||
sp_duyu:['male','qun',4,['spwuku','spsanchen']],
|
||||
luotong:['male','wu',4,['qinzheng']],
|
||||
|
@ -1242,6 +1242,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sptaoluan:{
|
||||
audio:2,
|
||||
trigger:{global:'judgeEnd'},
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return event.result&&event.result.suit=='spade';
|
||||
},
|
||||
|
@ -3157,6 +3158,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(!player.storage.jueyong) player.storage.jueyong=[[],[]];
|
||||
player.storage.jueyong[0].push(card);
|
||||
player.storage.jueyong[1].push(trigger.player);
|
||||
game.delayx();
|
||||
},
|
||||
onremove:function(player,skill){
|
||||
var cards=player.getExpansions(skill);
|
||||
|
@ -3165,9 +3167,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
intro:{
|
||||
markcount:function(storage){
|
||||
if(!storage) return 0;
|
||||
return storage[0].length;
|
||||
},
|
||||
mark:function(dialog,storage,player){
|
||||
if(!storage) return;
|
||||
dialog.addAuto(storage[0]);
|
||||
dialog.addText(get.translation(storage[1]));
|
||||
},
|
||||
|
@ -5150,12 +5154,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
targets.sortBySeat();
|
||||
for(var i of targets) i.addMark('luanchou',1);
|
||||
},
|
||||
global:'gonghuan',
|
||||
global:['gonghuan','gonghuan_clear'],
|
||||
derivation:'gonghuan',
|
||||
marktext:'姻',
|
||||
intro:{
|
||||
name:'共患',
|
||||
content:'锁定技。每回合限一次,一名其他角色受到伤害时,若其拥有“姻”标记且其体力值小于你,则你将伤害转移给自己。',
|
||||
content:'锁定技。每回合限一次,一名其他角色受到伤害时,若其拥有“姻”标记且其体力值小于你,则你将伤害转移给自己。此伤害结算结束后,若你与其体力值相等,则你与其移去“姻”标记。',
|
||||
onunmark:true,
|
||||
},
|
||||
ai:{
|
||||
order:10,
|
||||
|
@ -5182,6 +5187,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
},
|
||||
content:function(){
|
||||
trigger._gonghuan_player=trigger.player;
|
||||
trigger.player=player;
|
||||
},
|
||||
ai:{
|
||||
|
@ -5204,6 +5210,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
clear:{
|
||||
trigger:{player:'damageEnd'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
return event._gonghuan_player&&player.hp==event._gonghuan_player.hp;
|
||||
},
|
||||
content:function(){
|
||||
player.removeMark('luanchou',player.countMark('luanchou'));
|
||||
trigger._gonghuan_player.removeMark('luanchou',trigger._gonghuan_player.countMark('luanchou'));
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//刘璋
|
||||
xiusheng:{
|
||||
|
@ -5446,19 +5466,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player){
|
||||
if(player==event.player) return false;
|
||||
if(_status.renku.length) return true;
|
||||
return event.player.countCards('h')>1&&event.player.countCards('h')!=event.player.hp;
|
||||
return event.player.countCards('h')>event.player.hp;
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var target=trigger.player;
|
||||
event.target=target;
|
||||
var num=Math.min(9,Math.abs(target.hp-target.countCards('h')));
|
||||
var num=Math.max(0,target.countCards('h')-target.hp);
|
||||
var choiceList=['令其从仁库中获得一张牌','令其将'+get.cnNumber(num)+'张手牌置入仁库'];
|
||||
var choices=[];
|
||||
if(_status.renku.length) choices.push('选项一');
|
||||
else choiceList[0]='<span style="opacity:0.5">'+choiceList[0]+'</span>';
|
||||
if(target.countCards('h')>1&&target.countCards('h')!=target.hp){
|
||||
if(target.countCards('h')>target.hp){
|
||||
event.num=num;
|
||||
choices.push('选项二');
|
||||
}
|
||||
|
@ -5471,7 +5491,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(_status.renku.length>0) return '选项一';
|
||||
return 0;
|
||||
}
|
||||
if(target.countCards('h')>1&&target.countCards('h')!=target.hp) return '选项二';
|
||||
if(target.countCards('h')>target.hp) return '选项二';
|
||||
return 'cancel2';
|
||||
});
|
||||
'step 1'
|
||||
|
@ -6792,7 +6812,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
var num=Math.max(1,player.hp),target=trigger.player;
|
||||
player.chooseCard('he',get.prompt('sheyi',target),'交给其至少'+get.cnNumber(num)+'张牌,防止即将受到的伤害('+trigger.num+'点)',[num,player.countCards('h')]).set('goon',function(){
|
||||
player.chooseCard('he',get.prompt('sheyi',target),'交给其至少'+get.cnNumber(num)+'张牌,防止即将受到的伤害('+trigger.num+'点)',[num,player.countCards('he')]).set('goon',function(){
|
||||
if(get.attitude(player,target)<0) return false;
|
||||
if(trigger.num<target.hp&&get.damageEffect(target,trigger.source,player,trigger.nature)>=0) return false;
|
||||
if(trigger.num<2&&target.hp>trigger.num) return 6/Math.sqrt(num);
|
||||
|
@ -16069,7 +16089,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
liaoyi:'疗疫',
|
||||
liaoyi_info:'其他角色的回合开始时,若其:①手牌数小于体力值且仁库内牌数大于等于X,则你可令其从仁库中获得X张牌;②手牌数大于体力值,则你可以令其将X张牌置于仁库中(X为其手牌数与体力值之差且至多为4)。',
|
||||
xinliaoyi:'疗疫',
|
||||
xinliaoyi_info:'其他角色的回合开始时,你可选择一项:①令其从仁库中获得一张牌。②若其手牌数大于1,则令其将X张手牌置入仁库(X为其手牌数与体力值之差且至多为9)。',
|
||||
xinliaoyi_info:'其他角色的回合开始时,你可选择一项:①令其从仁库中获得一张牌。②若其手牌数大于体力值,则令其将X张手牌置入仁库(X为其手牌数与体力值之差)。',
|
||||
binglun:'病论',
|
||||
binglun_info:'出牌阶段限一次,你可以将仁库中的一张牌置于弃牌堆并选择一名角色。该角色选择一项:①摸一张牌。②于其下回合结束时回复1点体力。',
|
||||
sp_zhangwen:'手杀张温',
|
||||
|
@ -16090,7 +16110,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
luanchou:'鸾俦',
|
||||
luanchou_info:'出牌阶段限一次,你可令两名角色获得“姻”标记并清除原有标记。拥有“姻”标记的角色视为拥有技能〖共患〗。',
|
||||
gonghuan:'共患',
|
||||
gonghuan_info:'锁定技。每回合限一次,一名其他角色受到伤害时,若其拥有“姻”标记且其体力值小于你,则你将伤害转移给自己。',
|
||||
gonghuan_info:'锁定技。每回合限一次,一名其他角色受到伤害时,若其拥有“姻”标记且其体力值小于你,则你将伤害转移给自己。此伤害结算结束后,若你与其体力值相等,则你与其移去“姻”标记。',
|
||||
sp_yanghu:'羊祜',
|
||||
mingfa:'明伐',
|
||||
mingfa_info:'①结束阶段,你可展示一张牌并记录为“明伐”。②出牌阶段开始时,若“明伐”牌在你的手牌区或装备区,则你可以使用“明伐”牌与一名其他角色拼点。若你赢:你获得对方一张牌并从牌堆中获得一张点数等于“明伐”牌牌面点数-1的牌。若你没赢:你本回合不能使用牌指定其他角色为目标。③你的拼点牌亮出后,你令此牌的点数+2。',
|
||||
|
@ -16283,7 +16303,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
spshiji:'势击',
|
||||
spshiji_info:'当你对其他角色造成属性伤害时,若你的手牌数不为全场唯一最多,则你可以观看其手牌。你令其弃置其中的所有红色牌,然后摸等量的牌。',
|
||||
sptaoluan:'讨乱',
|
||||
sptaoluan_info:'一名角色的判定牌生效后,若判定结果的花色为♠,则你可以终止导致此判定发生的上级事件。然后选择一项:①获得判定牌对应的实体牌。②视为对判定角色使用一张火【杀】(无距离和次数限制)',
|
||||
sptaoluan_info:'每回合限一次。一名角色的判定牌生效后,若判定结果的花色为♠,则你可以终止导致此判定发生的上级事件。然后选择一项:①获得判定牌对应的实体牌。②视为对判定角色使用一张火【杀】(无距离和次数限制)',
|
||||
sp_yangwan:'杨婉',
|
||||
spmingxuan:'瞑昡',
|
||||
spmingxuan_info:'锁定技。出牌阶段开始时,你须选择至多X张牌(X为未选择过选项①的角色),将这些牌随机交给这些角色中的等量角色。然后这些角色依次选择一项:①对你使用一张【杀】。②交给你一张牌,然后你摸一张牌。',
|
||||
|
|
|
@ -8,7 +8,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao","pangde","xuhuang"],
|
||||
old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong"],
|
||||
old_yijiang1:["masu","xushu","xin_yujin","old_xusheng","old_lingtong","fazheng"],
|
||||
old_yijiang2:["old_zhonghui"],
|
||||
old_yijiang2:["old_zhonghui","madai"],
|
||||
old_yijiang3:["liru","old_zhuran","old_fuhuanghou","old_caochong"],
|
||||
old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan"],
|
||||
old_yijiang5:["old_caoxiu","old_quancong","old_zhuzhi"],
|
||||
|
@ -19,6 +19,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
madai:['male','shu',4,['mashu','oldqianxi']],
|
||||
xuhuang:['male','wei',4,['gzduanliang']],
|
||||
junk_simayi:['male','jin',3,['buchen','smyyingshi','xiongzhi','quanbian'],['hiddenSkill']],
|
||||
fazheng:['male','shu',3,['enyuan','xuanhuo']],
|
||||
|
@ -783,6 +784,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
fazheng:'旧法正',
|
||||
junk_simayi:'旧晋司马懿',
|
||||
junk_simayi_ab:'司马懿',
|
||||
madai:'旧马岱',
|
||||
|
||||
old_standard:'标准包',
|
||||
old_shenhua:'神话再临',
|
||||
|
@ -794,6 +796,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
old_yijiang5:'一将成名2015',
|
||||
old_yijiang67:'原创设计',
|
||||
old_sp:'SP',
|
||||
old_yingbian:'文德武备',
|
||||
old_mobile:'移动版',
|
||||
}
|
||||
};
|
||||
|
|
|
@ -496,6 +496,8 @@ window.noname_character_rank={
|
|||
'ol_dongzhao',
|
||||
'xin_jushou',
|
||||
'sp_zhujun',
|
||||
're_guohuanghou',
|
||||
'tw_liuhong',
|
||||
],
|
||||
bp:[
|
||||
'chess_diaochan',
|
||||
|
@ -744,6 +746,7 @@ window.noname_character_rank={
|
|||
'sp_maojie',
|
||||
'ol_xuhuang',
|
||||
'ol_zhuling',
|
||||
'tw_zangba',
|
||||
],
|
||||
b:[
|
||||
'diy_feishi',
|
||||
|
@ -861,6 +864,7 @@ window.noname_character_rank={
|
|||
're_zhangzhang',
|
||||
're_masu',
|
||||
'old_madai',
|
||||
're_madai',
|
||||
'wangyi',
|
||||
'guanzhang',
|
||||
'ns_chengpu',
|
||||
|
@ -959,6 +963,9 @@ window.noname_character_rank={
|
|||
'wangtao',
|
||||
'tianyu',
|
||||
'fanjiangzhangda',
|
||||
'zhaoyan',
|
||||
'huojun',
|
||||
'tw_caocao',
|
||||
],
|
||||
bm:[
|
||||
'diy_xizhenxihong',
|
||||
|
@ -1483,6 +1490,8 @@ window.noname_character_rank={
|
|||
'zhongyan',
|
||||
'kaisa',
|
||||
'tw_zhaoxiang',
|
||||
'tw_caocao',
|
||||
'tw_liuhong',
|
||||
'key_kano',
|
||||
'key_haruko',
|
||||
'key_akiko',
|
||||
|
@ -1852,6 +1861,9 @@ window.noname_character_rank={
|
|||
'sp_zhujun',
|
||||
'ol_chendeng',
|
||||
'ol_xuhuang',
|
||||
're_guohuanghou',
|
||||
'tw_huojun',
|
||||
'zhaoyan',
|
||||
],
|
||||
junk:[
|
||||
'sunshao',
|
||||
|
|
|
@ -10,14 +10,16 @@ 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','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai'],
|
||||
refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua'],
|
||||
refresh_yijiang2:['old_madai','re_wangyi','guanzhang','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_bulianshi','xin_liubiao'],
|
||||
refresh_yijiang2:['re_madai','re_wangyi','guanzhang','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_bulianshi','xin_liubiao'],
|
||||
refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','xin_yufan','re_liru','re_manchong','re_fuhuanghou','re_guanping'],
|
||||
refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan','re_caozhen','re_zhoucang','re_chenqun','re_caifuren','re_guyong','xin_jushou'],
|
||||
refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu','re_gongsunyuan','re_guotufengji','re_xiahoushi'],
|
||||
refresh_yijiang6:['re_guohuanghou'],
|
||||
},
|
||||
},
|
||||
connect:true,
|
||||
character:{
|
||||
re_guohuanghou:['female','wei',3,['rejiaozhao','redanxin']],
|
||||
re_xiahoushi:['female','shu',3,['reqiaoshi','reyanyu']],
|
||||
xin_jushou:['male','qun',3,['xinjianying','shibei']],
|
||||
ol_lusu:['male','wu',3,['olhaoshi','oldimeng']],
|
||||
|
@ -48,7 +50,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_hanhaoshihuan:['male','wei',4,['reshenduan','reyonglve']],
|
||||
re_panzhangmazhong:['male','wu',4,['reduodao','reanjian']],
|
||||
re_wangyi:['female','wei',4,['zhenlie','miji']],
|
||||
old_madai:['male','shu',4,['mashu','qianxi']],
|
||||
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']],
|
||||
|
@ -141,6 +143,286 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_xushu:['zhaoyun','sp_zhugeliang'],
|
||||
},
|
||||
skill:{
|
||||
rejiaozhao:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
group:'rejiaozhao_base',
|
||||
mod:{
|
||||
targetEnabled:function(card,player,target){
|
||||
if(player==target&&card.storage&&card.storage.rejiaozhao) return false;
|
||||
},
|
||||
},
|
||||
filter:function(event,player){
|
||||
return (player.hasMark('redanxin')&&player.countCards('h')&&player.getStorage('rejiaozhao_clear').length<player.countMark('redanxin'));
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
var list=[],storage=player.getStorage('rejiaozhao_clear');
|
||||
for(var name of lib.inpile){
|
||||
var type=get.type(name);
|
||||
if((type=='basic'||type=='trick')&&!storage.contains(type)){
|
||||
list.push([type,'',name]);
|
||||
if(name=='sha'){
|
||||
for(var nature of lib.inpile_nature) list.push([type,'',name,nature]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ui.create.dialog('惮心',[list,'vcard']);
|
||||
},
|
||||
filter:function(button,player){
|
||||
var card={name:button.link[2],nature:button.link[3]};
|
||||
if(player.countMark('redanxin')<2) card.storage={rejiaozhao:true};
|
||||
var evt=_status.event.getParent();
|
||||
return evt.filterCard(card,player,evt);
|
||||
},
|
||||
check:function(button){
|
||||
var card={name:button.link[2],nature:button.link[3]},player=_status.event.player;
|
||||
if(player.countMark('redanxin')<2) card.storage={rejiaozhao:true};
|
||||
return player.getUseValue(card,null,true);
|
||||
},
|
||||
backup:function(links,player){
|
||||
var next={
|
||||
audio:'redanxin',
|
||||
viewAs:{name:links[0][2],nature:links[0][3]},
|
||||
filterCard:true,
|
||||
position:'h',
|
||||
popname:true,
|
||||
ai1:(card)=>8-get.value(card),
|
||||
onuse:function(result,player){
|
||||
player.addTempSkill('rejiaozhao_clear','phaseUseAfter');
|
||||
player.markAuto('rejiaozhao_clear',[get.type(result.card)])
|
||||
},
|
||||
}
|
||||
if(player.countMark('redanxin')<2) next.viewAs.storage={rejiaozhao:true};
|
||||
return next;
|
||||
},
|
||||
prompt:function(links){
|
||||
return '将一张手牌当做'+(get.translation(links[0][3])||'')+get.translation(links[0][2])+'使用';
|
||||
},
|
||||
},
|
||||
ai:{
|
||||
order:6,
|
||||
result:{
|
||||
player:1
|
||||
}
|
||||
},
|
||||
derivation:['rejiaozhao_lv2','rejiaozhao_lv3'],
|
||||
subSkill:{
|
||||
clear:{onremove:true},
|
||||
base:{
|
||||
audio:'rejiaozhao',
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
if(player.hasMark('redanxin')) return false;
|
||||
return player.countCards('h')>0&&game.hasPlayer((current)=>current!=player);
|
||||
},
|
||||
filterCard:true,
|
||||
position:'h',
|
||||
discard:false,
|
||||
lose:false,
|
||||
check:function(card){
|
||||
return 1/Math.max(1,_status.event.player.getUseValue(card));
|
||||
},
|
||||
prompt:'出牌阶段限一次。你可以展示一张手牌,并令一名距离你最近的角色选择一种基本牌或普通锦囊牌的牌名。你可将此牌当做其声明的牌使用直到此阶段结束(你不是此牌的合法目标)。',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.showCards(cards);
|
||||
'step 1'
|
||||
var targets=game.filterPlayer();
|
||||
targets.remove(player);
|
||||
targets.sort(function(a,b){
|
||||
return Math.max(1,get.distance(player,a))-Math.max(1,get.distance(player,b));
|
||||
});
|
||||
var distance=Math.max(1,get.distance(player,targets[0]));
|
||||
for(var i=1;i<targets.length;i++){
|
||||
if(Math.max(1,get.distance(player,targets[i]))>distance){
|
||||
targets.splice(i);break;
|
||||
}
|
||||
}
|
||||
player.chooseTarget('请选择【矫诏】的目标',true,function(card,player,target){
|
||||
return _status.event.targets.contains(target);
|
||||
}).set('ai',function(target){
|
||||
return get.attitude(_status.event.player,target);
|
||||
}).set('targets',targets);
|
||||
'step 2'
|
||||
if(!result.bool){
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
var list=[];
|
||||
for(var i=0;i<lib.inpile.length;i++){
|
||||
var name=lib.inpile[i];
|
||||
if(name=='sha'){
|
||||
list.push(['基本','','sha']);
|
||||
for(var j of lib.inpile_nature) list.push(['基本','','sha',j]);
|
||||
}
|
||||
else if(get.type(name)=='basic') list.push(['基本','',name]);
|
||||
else if(get.type(name)=='trick') list.push(['锦囊','',name]);
|
||||
}
|
||||
target.chooseButton(['矫诏',[list,'vcard']],true).set('ai',function(button){
|
||||
var player=_status.event.getParent().player,card={
|
||||
name:button.link[2],
|
||||
nature:button.link[3],
|
||||
storage:{
|
||||
rejiaozhao:true,
|
||||
}
|
||||
};
|
||||
return player.getUseValue(card,null,true)*_status.event.att;
|
||||
}).set('att',get.attitude(event.target,player)>0?1:-1);
|
||||
'step 3'
|
||||
var chosen=result.links[0][2];
|
||||
var nature=result.links[0][3];
|
||||
var fakecard={
|
||||
name:chosen,
|
||||
storage:{rejiaozhao:true},
|
||||
};
|
||||
if(nature) fakecard.nature=nature;
|
||||
event.target.showCards(game.createCard({
|
||||
name:chosen,
|
||||
nature:nature,
|
||||
suit:cards[0].suit,
|
||||
number:cards[0].number,
|
||||
}),get.translation(event.target)+'声明了'+get.translation(chosen));
|
||||
player.storage.rejiaozhao_viewas=fakecard;
|
||||
cards[0].addGaintag('rejiaozhao')
|
||||
player.addTempSkill('rejiaozhao_viewas','phaseUseEnd');
|
||||
},
|
||||
ai:{
|
||||
order:9,
|
||||
result:{
|
||||
player:1,
|
||||
}
|
||||
},
|
||||
},
|
||||
backup:{audio:'rejiaozhao'},
|
||||
viewas:{
|
||||
enable:'phaseUse',
|
||||
mod:{
|
||||
targetEnabled:function(card,player,target){
|
||||
if(player==target&&card.storage&&card.storage.rejiaozhao) return false;
|
||||
},
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(!player.storage.rejiaozhao_viewas) return false;
|
||||
var cards=player.getCards('h',function(card){
|
||||
return card.hasGaintag('rejiaozhao');
|
||||
});
|
||||
if(!cards.length) return false;
|
||||
if(!game.checkMod(cards[0],player,'unchanged','cardEnabled2',player)) return false;
|
||||
var card=get.autoViewAs(player.storage.rejiaozhao_viewas,cards);
|
||||
return event.filterCard(card,player,event);
|
||||
},
|
||||
viewAs:function(cards,player){
|
||||
return player.storage.rejiaozhao_viewas;
|
||||
},
|
||||
filterCard:function(card){
|
||||
return card.hasGaintag('rejiaozhao');
|
||||
},
|
||||
selectCard:-1,
|
||||
position:'h',
|
||||
popname:true,
|
||||
prompt:function(){
|
||||
return '将“矫诏”牌当做'+get.translation(_status.event.player.storage.rejiaozhao_viewas)+'使用';
|
||||
},
|
||||
onremove:function(player){
|
||||
player.removeGaintag('rejiaozhao');
|
||||
delete player.storage.rejiaozhao_viewas;
|
||||
},
|
||||
ai:{order:8},
|
||||
},
|
||||
},
|
||||
},
|
||||
redanxin:{
|
||||
audio:2,
|
||||
trigger:{player:'damageEnd'},
|
||||
frequent:true,
|
||||
content:function(){
|
||||
player.draw();
|
||||
if(player.countMark('redanxin')<2) player.addMark('redanxin',1,false);
|
||||
},
|
||||
intro:{content:'当前升级等级。:Lv#'},
|
||||
},
|
||||
//马岱
|
||||
reqianxi:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
frequent:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.draw();
|
||||
'step 1'
|
||||
if(player.hasCard((card)=>lib.filter.cardDiscardable(card,player,'reqianxi'),'he')) player.chooseToDiscard('he',true);
|
||||
else event.finish();
|
||||
'step 2'
|
||||
if(result.bool&&game.hasPlayer((current)=>current!=player&&get.distance(player,current)<=1)){
|
||||
var color=get.color(result.cards[0],player);
|
||||
event.color=color;
|
||||
color=get.translation(color);
|
||||
player.chooseTarget(true,'选择【潜袭】的目标','令其本回合不能使用或打出'+color+'牌,且'+color+'防具失效,且回复体力时,你摸两张牌',function(card,player,target){
|
||||
return target!=player&&get.distance(player,target)<=1;
|
||||
}).set('ai',function(target){
|
||||
return -get.attitude(_status.event.player,target)*Math.sqrt(1+target.countCards('he'));
|
||||
});
|
||||
}
|
||||
else event.finish();
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.line(target,'green');
|
||||
target.storage.reqianxi_effect=[event.color,player];
|
||||
target.addTempSkill('reqianxi_effect');
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
mark:true,
|
||||
intro:{
|
||||
markcount:()=>0,
|
||||
content:function(storage,player){
|
||||
var color=get.translation(storage[0]),source=get.translation(storage[1]);
|
||||
return '本回合不能使用或打出'+color+'牌,且'+color+'防具失效,且回复体力时,'+source+'摸两张牌';
|
||||
},
|
||||
},
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
mod:{
|
||||
cardEnabled2:function(card,player){
|
||||
if(get.itemtype(card)=='card'&&get.color(card)==player.getStorage('reqianxi_effect')[0]) return false;
|
||||
},
|
||||
},
|
||||
trigger:{player:'recoverEnd'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
return player.storage.reqianxi_effect&&player.storage.reqianxi_effect[1].isIn();
|
||||
},
|
||||
content:function(){
|
||||
var target=player.storage.reqianxi_effect[1];
|
||||
target.logSkill('reqianxi',player);
|
||||
target.draw(2);
|
||||
},
|
||||
ai:{
|
||||
unequip2:true,
|
||||
skillTagFilter:function(player){
|
||||
var evt=_status.event,color=player.getStorage('reqianxi_effect')[0];
|
||||
if(evt.name=='lose'&&evt.loseEquip){
|
||||
var card=evt.cards[evt.num];
|
||||
if(card&&get.subtype(card,false)=='equip2'&&get.color(card)==color) return true;
|
||||
return false;
|
||||
}
|
||||
else{
|
||||
var equip=player.getEquip(2);
|
||||
if(equip&&get.color(equip)==color) return true;
|
||||
return false;
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//徐晃
|
||||
olduanliang:{
|
||||
audio:2,
|
||||
|
@ -1305,7 +1587,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
chooseButton:{
|
||||
check:function(button){
|
||||
if(typeof button.link=='object') return 1;
|
||||
var player=_status.event.player,num=player.storage.xinquanji.length-1;
|
||||
var player=_status.event.player,num=player.getExpansions('xinquanji').length-1;
|
||||
if(button.link==1){
|
||||
if(game.countPlayer(function(current){
|
||||
return get.damageEffect(current,player,player)>0;
|
||||
|
@ -2254,9 +2536,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
gzpaiyi:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
usable:2,
|
||||
filter:function(event,player){
|
||||
return player.getExpansions('gzquanji').length>0&&!player.hasSkill('gzquanji2');
|
||||
return player.getExpansions('gzquanji').length>0;
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
|
@ -2275,11 +2557,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
order:10,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
var num=player.getExpansions('gzquanji').length-1;
|
||||
if(num==0){
|
||||
if(target.countCards('h')>player.countCards('h')) return get.damageEffect(target,player,target);
|
||||
return 0;
|
||||
}
|
||||
if(target!=player) return 0;
|
||||
if(player.needsToDiscard()&&!player.getEquip('zhuge')&&!player.hasSkill('new_paoxiao')) return 0;
|
||||
return 1;
|
||||
|
@ -2294,10 +2571,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"step 0"
|
||||
var card=lib.skill.gzpaiyi_backup.card;
|
||||
player.loseToDiscardpile(card);
|
||||
player.addTempSkill('gzquanji2');
|
||||
"step 1"
|
||||
var num=player.getExpansions('gzquanji').length;
|
||||
if(num) target.draw(Math.min(7,num));
|
||||
target.draw(2);
|
||||
"step 2"
|
||||
if(target.countCards('h')>player.countCards('h')){
|
||||
target.damage();
|
||||
|
@ -10713,7 +10988,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
decadepojun:'破军',
|
||||
decadepojun2:'破军',
|
||||
decadepojun_info:'当你使用【杀】指定目标后,你可以将其的至多X张牌置于其武将牌上(X为其体力值)。若这些牌中:有装备牌,你将这些装备牌中的一张置于弃牌堆;有锦囊牌,你摸一张牌。其于回合结束时获得其武将牌上的这些牌。',
|
||||
old_madai:'界马岱',
|
||||
re_wangyi:'界王异',
|
||||
wangyi:'王异',
|
||||
guanzhang:'界关兴张苞',
|
||||
|
@ -10807,7 +11081,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
gzquanji_info:'当你受到伤害后或当你使用牌指定唯一目标并对其造成伤害后,你可以摸一张牌,然后你将一张牌置于武将牌上,称为“权”;你的手牌上限+X(X为“权”的数量)。',
|
||||
gzpaiyi:'排异',
|
||||
gzpaiyi_backup:'排异',
|
||||
gzpaiyi_info:'出牌阶段限一次。你可以移去一张“权”,然后选择一名角色并令其摸X张牌(X为“权”的数量且至多为7),若其手牌数不小于你,则你对其造成1点伤害。',
|
||||
gzpaiyi_info:'出牌阶段限两次。你可以移去一张“权”,然后选择一名角色并令其摸两张牌。若其手牌数大于你,则你对其造成1点伤害。',
|
||||
ol_zhurong:'界祝融',
|
||||
changbiao:'长标',
|
||||
changbiao_info:'出牌阶段限一次,你可以将任意张手牌当做【杀】使用(无距离限制)。若你因此【杀】对目标角色造成过伤害,则你于出牌阶段结束时摸X张牌(X为此【杀】对应的实体牌数量)。',
|
||||
|
@ -10902,6 +11176,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
olduanliang_info:'你可以将一张黑色非锦囊牌当做【兵粮寸断】使用。若你于当前回合内未造成过伤害,则你使用【兵粮寸断】无距离限制。',
|
||||
oljiezi:'截辎',
|
||||
oljiezi_info:'①当有角色跳过摸牌阶段后,你可选择一名角色。若该角色:手牌数为全场最少且没有“辎”,则其获得一枚“辎”。否则其摸一张牌。②一名角色的摸牌阶段结束时,若其有“辎”,则你移去其“辎”,然后令其获得一个额外的摸牌阶段。',
|
||||
re_madai:'界马岱',
|
||||
reqianxi:'潜袭',
|
||||
reqianxi_info:'准备阶段开始时,你可摸一张牌,然后弃置一张牌并选择一名距离为1的其他角色。该角色于本回合内:{不能使用或打出与此牌颜色相同的牌,且其装备区内与此牌颜色相同的防具牌无效,且当其回复体力时,你摸两张牌。}',
|
||||
re_guohuanghou:'界郭皇后',
|
||||
rejiaozhao:'矫诏',
|
||||
rejiaozhao_info:'出牌阶段限一次。你可以展示一张手牌,并令一名距离你最近的角色选择一种基本牌或普通锦囊牌的牌名。你可将此牌当做其声明的牌使用直到此阶段结束(你不是此牌的合法目标)。',
|
||||
rejiaozhao_lv2:'矫诏·升级 Lv.1',
|
||||
rejiaozhao_lv2_info:'出牌阶段限一次。你可以将一张手牌当做一张基本牌或普通锦囊牌使用(你不是此牌的合法目标)。',
|
||||
rejiaozhao_lv3:'矫诏·升级 Lv.2',
|
||||
rejiaozhao_lv3_info:'出牌阶段每种类型各限一次。你可以将一张手牌当做一张基本牌或普通锦囊牌使用(你不是此牌的合法目标)。',
|
||||
redanxin:'殚心',
|
||||
redanxin_info:'当你受到伤害后,你可以摸一张牌并升级〖矫诏〗。',
|
||||
|
||||
refresh_standard:'界限突破·标',
|
||||
refresh_feng:'界限突破·风',
|
||||
|
@ -10913,6 +11199,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
refresh_yijiang3:'界限突破·将3',
|
||||
refresh_yijiang4:'界限突破·将4',
|
||||
refresh_yijiang5:'界限突破·将5',
|
||||
refresh_yijiang6:'界限突破·原6',
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
|
@ -2527,7 +2527,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else event._result={control:target.name1};
|
||||
}
|
||||
else event.goto(4);
|
||||
else event.finish();
|
||||
'step 4'
|
||||
target.reinit(result.control,'guansuo');
|
||||
if(_status.characterlist){
|
||||
|
@ -5250,7 +5250,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
var num=Math.max(1,player.getDamagedHp());
|
||||
player.chooseTarget('是否发动【誓仇】,令至多'+num+'名其他角色也成为此【杀】的目标?',[1,num],function(card,player,target){
|
||||
return target!=player&&!trigger.targets.contains(target)&&player.canUse({name:'sha'},target);
|
||||
var evt=_status.event.getTrigger();
|
||||
return target!=player&&!evt.targets.contains(target)&&lib.filter.targetEnabled2(evt.card,player,target)&&lib.filter.targetInRange(evt.card,player,target);
|
||||
}).ai=function(target){
|
||||
return get.effect(target,{name:'sha'},_status.event.player);
|
||||
};
|
||||
|
@ -11085,19 +11086,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
recover:{
|
||||
audio:'yishe',
|
||||
trigger:{
|
||||
player:['loseAfter','gainAfter'],
|
||||
player:['loseAfter'],
|
||||
global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(player.isHealthy()) return false;
|
||||
var evt=event.getl(player);
|
||||
if(!evt||!evt.xs||!evt.xs.length||player.getExpansions('yishe').length>0) return false;
|
||||
for(var i in evt.gaintag_map){
|
||||
if(evt.gaintag_map[i].contains('yishe')) return true;
|
||||
if(event.name=='lose'){
|
||||
for(var i in event.gaintag_map){
|
||||
if(event.gaintag_map[i].contains('yishe')) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
return player.hasHistory('lose',function(evt){
|
||||
if(event!=evt.getParent()) return false;
|
||||
for(var i in evt.gaintag_map){
|
||||
if(evt.gaintag_map[i].contains('yishe')) return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
content:function(){
|
||||
player.recover();
|
||||
},
|
||||
|
@ -15884,6 +15894,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ol_dongzhao:['ol_dongzhao','tw_dongzhao'],
|
||||
mayunlu:['tw_mayunlu','mayunlu'],
|
||||
zhuling:['ol_zhuling','zhuling'],
|
||||
zangba:['tw_zangba','zangba'],
|
||||
},
|
||||
translate:{
|
||||
"xinfu_lingren":"凌人",
|
||||
|
|
218
character/sp2.js
|
@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
name:'sp2',
|
||||
connect:true,
|
||||
character:{
|
||||
zhaoyan:['female','wu',3,['jinhui','qingman']],
|
||||
re_sunyi:['male','wu',5,['syjiqiao','syxiongyi']],
|
||||
re_pangdegong:['male','qun',3,['heqia','yinyi']],
|
||||
wangtao:['female','shu',3,['huguan','yaopei']],
|
||||
|
@ -115,7 +116,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_shengun:["puyuan","guanlu","gexuan","xushao"],
|
||||
sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong','xiahoujie'],
|
||||
sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou","xinping","hanmeng"],
|
||||
sp_caizijiaren:['re_dongbai','re_sunluyu','huaxin','luyusheng','re_xunchen','heyan'],
|
||||
sp_caizijiaren:['re_dongbai','re_sunluyu','huaxin','luyusheng','re_xunchen','heyan','zhaoyan'],
|
||||
sp_huangjin:['liuhong','zhujun','re_hansui'],
|
||||
sp_qihuan:['liubian','zhaozhong','re_hejin'],
|
||||
sp_fadong:['ol_dingyuan','wangrong','re_quyi','hanfu'],
|
||||
|
@ -129,12 +130,153 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
skill:{
|
||||
//赵嫣
|
||||
jinhui:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=[];
|
||||
while(cards.length<3){
|
||||
var card=get.cardPile2(function(card){
|
||||
for(var i of cards){
|
||||
if(i.name==card.name) return false;
|
||||
}
|
||||
var info=get.info(card,false);
|
||||
if(info.ai&&info.ai.tag&&info.ai.tag.damage) return false;
|
||||
return !info.notarget&&(info.toself||info.singleCard||!info.selectTarget||info.selectTarget==1);
|
||||
});
|
||||
if(card) cards.push(card);
|
||||
else break;
|
||||
}
|
||||
if(!cards.length) event.finish();
|
||||
else{
|
||||
player.showCards(cards,get.translation(player)+'发动了【锦绘】');
|
||||
event.cards=cards;
|
||||
game.cardsGotoOrdering(cards);
|
||||
if(game.hasPlayer((current)=>(current!=player))) player.chooseTarget('选择【锦绘】的目标',true,lib.filter.notMe).set('ai',function(target){
|
||||
var player=_status.event.player,cards=_status.event.getParent().cards.slice(0);
|
||||
var max_effect=0,max_effect_player=0;
|
||||
for(var i of cards){
|
||||
var targetx=lib.skill.jinhui.getUsableTarget(i,target,player);
|
||||
if(targetx){
|
||||
var effect2=get.effect(targetx,i,target,target);
|
||||
var effect3=get.effect(targetx,i,target,player);
|
||||
if(effect2>max_effect){
|
||||
max_effect=effect2;
|
||||
max_effect_player=effect3;
|
||||
}
|
||||
}
|
||||
}
|
||||
return max_effect_player;
|
||||
});
|
||||
else event.finish();
|
||||
}
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.line(target,'green');
|
||||
var cards=cards.filter(function(card){
|
||||
return lib.skill.jinhui.getUsableTarget(card,target,player);
|
||||
});
|
||||
if(cards.length){
|
||||
if(cards.length==1) event._result={bool:true,links:cards};
|
||||
else target.chooseButton(['选择按“锦绘”规则使用一张牌',cards],true).set('ai',function(button){
|
||||
var player=_status.event.player,target=_status.event.getParent().player,card=button.link;
|
||||
var targetx=lib.skill.jinhui.getUsableTarget(card,player,target);
|
||||
var effect=get.effect(targetx,card,player,player),cards=_status.event.getParent().cards.slice(0);
|
||||
var effect2=0,effect3=0;
|
||||
cards.remove(button.link);
|
||||
for(var i of cards){
|
||||
var targetx=lib.skill.jinhui.getUsableTarget(i,target,player);
|
||||
if(targetx){
|
||||
effect2+=get.effect(targetx,i,target,target);
|
||||
effect3+=get.effect(targetx,i,target,player);
|
||||
}
|
||||
}
|
||||
if(effect2>0) effect+=effect3;
|
||||
return effect;
|
||||
});
|
||||
}
|
||||
else event.goto(3);
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
var card=result.links[0];
|
||||
event.cards.remove(card);
|
||||
var targetx=lib.skill.jinhui.getUsableTarget(card,target,player);
|
||||
target.useCard(card,targetx,false,'noai');
|
||||
}
|
||||
'step 3'
|
||||
var cards=cards.filter(function(card){
|
||||
return lib.skill.jinhui.getUsableTarget(card,player,target);
|
||||
});
|
||||
var effect=0;
|
||||
for(var i of cards){
|
||||
effect+=get.effect(lib.skill.jinhui.getUsableTarget(i,player,target),i,player,player)
|
||||
}
|
||||
if(cards.length){
|
||||
player.chooseBool('是否按“锦绘规则使用以下牌?”',get.translation(cards)).set('goon',effect>0).set('ai',()=>_status.event.goon);
|
||||
}
|
||||
else event.finish();
|
||||
'step 4'
|
||||
if(!result.bool) event.finish();
|
||||
'step 5'
|
||||
for(var card of cards){
|
||||
var targetx=lib.skill.jinhui.getUsableTarget(card,player,target);
|
||||
if(targetx){
|
||||
player.useCard(card,targetx,false,'noai');
|
||||
cards.remove(card);
|
||||
if(cards.length) event.redo();
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
getUsableTarget:function(card,player,target){
|
||||
var info=get.info(card,false);
|
||||
if(info.toself) return player.canUse(card,player,false)?player:false;
|
||||
return (target.isIn&&player.canUse(card,target,false))?target:false;
|
||||
},
|
||||
ai:{
|
||||
order:5,
|
||||
result:{player:1},
|
||||
},
|
||||
},
|
||||
qingman:{
|
||||
audio:2,
|
||||
trigger:{global:'phaseEnd'},
|
||||
forced:true,
|
||||
logTarget:'player',
|
||||
filter:function(event,player){
|
||||
if(!event.player.isAlive()) return false;
|
||||
var num=player.countCards('h');
|
||||
if(num>=5) return false;
|
||||
var num2=0;
|
||||
for(var i=1;i<=5;i++){
|
||||
if(event.player.isEmpty(i)) num2++;
|
||||
}
|
||||
return num<num2;
|
||||
},
|
||||
content:function(){
|
||||
var num2=0;
|
||||
for(var i=1;i<=5;i++){
|
||||
if(trigger.player.isEmpty(i)) num2++;
|
||||
}
|
||||
player.drawTo(num2);
|
||||
},
|
||||
},
|
||||
//孙翊
|
||||
syjiqiao:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
content:function(){
|
||||
var cards=get.cards(player.maxHp);
|
||||
cards.sort(function(a,b){
|
||||
return get.color(b).length-get.color(a).length;
|
||||
});
|
||||
player.addToExpansion(cards,'gain2').gaintag.add('syjiqiao');
|
||||
player.addTempSkill('syjiqiao_gain','phaseUseAfter');
|
||||
},
|
||||
|
@ -158,7 +300,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
var cards=player.getExpansions('syjiqiao')
|
||||
player.chooseButton(['激峭:选择获得一张牌',cards],true).set('ai',function(button){
|
||||
var dialog=['激峭:选择获得一张牌']
|
||||
var reds=[],blacks=[];
|
||||
for(var i of cards) (get.color(i)=='red'?reds:blacks).push(i);
|
||||
if(reds.length>0){
|
||||
dialog.push('<div class="text center">红色牌</div>');
|
||||
dialog.push(reds);
|
||||
}
|
||||
if(blacks.length>0){
|
||||
dialog.push('<div class="text center">黑色牌</div>');
|
||||
dialog.push(blacks);
|
||||
};
|
||||
player.chooseButton(dialog,true).set('ai',function(button){
|
||||
var player=_status.event.player;
|
||||
var color=get.color(button.link),cards=player.getExpansions('syjiqiao');
|
||||
var num1=cards.filter((card)=>get.color(card)==color),num2=cards.length-num1;
|
||||
|
@ -1545,7 +1698,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target:1,
|
||||
},
|
||||
},
|
||||
derivation:['releiji','rebiyue','new_retuxi','mingce','zhiyan','nhyinbing','nhhuoqi','nhguizhu','nhxianshou','nhlundao','nhguanyue','nhyanzheng'],
|
||||
derivation:['releiji','rebiyue','new_retuxi','mingce','xinzhiyan','nhyinbing','nhhuoqi','nhguizhu','nhxianshou','nhlundao','nhguanyue','nhyanzheng'],
|
||||
subSkill:{
|
||||
clear:{
|
||||
onremove:function(player){
|
||||
|
@ -4112,31 +4265,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//牛金
|
||||
recuorui:{
|
||||
audio:'cuorui',
|
||||
trigger:{player:'phaseBegin'},
|
||||
enable:'phaseUse',
|
||||
limited:true,
|
||||
skillAnimation:true,
|
||||
animationColor:'thunder',
|
||||
filter:function(event,player){
|
||||
return player.phaseNumber==1&&player.hp>0&&game.hasPlayer(function(current){
|
||||
return player.hp>0&&game.hasPlayer(function(current){
|
||||
return current!=player&¤t.countGainableCards(player,'h')>0;
|
||||
})
|
||||
},
|
||||
direct:true,
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player&&target.countGainableCards(player,'h')>0;
|
||||
},
|
||||
selectTarget:function(){
|
||||
return [1,_status.event.player.hp];
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget([1,player.hp],get.prompt('recuorui'),'获得至多'+get.cnNumber(player.hp)+'名角色的各一张手牌',function(card,player,current){
|
||||
return current!=player&¤t.countGainableCards(player,'h')>0;
|
||||
}).set('ai',function(target){
|
||||
var att=get.attitude(_status.event.player,target);
|
||||
if(target.hasSkill('tuntian')) return att/10;
|
||||
return 1-att;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var targets=result.targets;
|
||||
player.logSkill('recuorui',targets);
|
||||
targets.sortBySeat();
|
||||
player.gainMultiple(targets);
|
||||
}
|
||||
if(num==0) player.awakenSkill('recuorui');
|
||||
player.gainPlayerCard(target,true,'h');
|
||||
},
|
||||
},
|
||||
reliewei:{
|
||||
|
@ -4144,13 +4290,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{global:'dying'},
|
||||
frequent:true,
|
||||
filter:function(event,player){
|
||||
var evt=event.getParent();
|
||||
return evt&&evt.name=='damage'&&evt.source==player&&player.getHistory('custom',function(evt){
|
||||
return evt&&evt.reliewei==true;
|
||||
}).length<player.hp;
|
||||
return player==_status.currentPhase;
|
||||
},
|
||||
content:function(){
|
||||
player.getHistory('custom').push({reliewei:true});
|
||||
player.draw();
|
||||
},
|
||||
},
|
||||
|
@ -4838,9 +4980,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{target:'useCardToTargeted'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(player==_status.currentPhase||event.targets.length!=1||player.countCards('h')) return false;
|
||||
var type=get.type(event.card);
|
||||
return ((type=='basic'||type=='trick')&&get.tag(event.card,'damage')>0);
|
||||
if(player==_status.currentPhase||player.countCards('h')) return false;
|
||||
return event.card.name=='sha'||get.type(event.card,false)=='trick';
|
||||
},
|
||||
content:function(){
|
||||
player.draw(2);
|
||||
|
@ -10269,7 +10410,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
//管辂和葛玄
|
||||
gxlianhua:{
|
||||
derivation:['reyingzi','reguanxing','zhiyan','gongxin'],
|
||||
derivation:['reyingzi','reguanxing','xinzhiyan','gongxin'],
|
||||
audio:2,
|
||||
init:function(player,skill){
|
||||
if(!player.storage[skill]) player.storage[skill]={
|
||||
|
@ -10324,7 +10465,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else if(red<black){
|
||||
cards=['shunshou'];
|
||||
skill='zhiyan';
|
||||
skill='xinzhiyan';
|
||||
}
|
||||
else{
|
||||
cards=['sha','juedou'];
|
||||
|
@ -12035,6 +12176,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
caojinyu:'金乡公主,本姓曹氏,名字不详,沛国谯县(今安徽省亳州市)人。魏武帝曹操的女儿,母为杜夫人。适婚的时候,嫁给曹操的养子何晏。高平陵之变,何晏作为大将军曹爽的党羽,遭到太傅司马懿处死。在何晏母亲尹夫人苦苦哀求下,何晏的儿子得以保全。',
|
||||
wangtao:'王桃是在《花关索传》中登场的虚拟人物,盗贼王令公的两个女儿之一,王悦的姐姐,与妹妹都是关索之妻。姐妹俩原为卢塘寨山贼,以武艺与美貌而闻名,被众多男性求婚却皆不与理睬。她们在关索回西川认父途中与关索交手时不敌,因意气投合而一齐下嫁。虽为架空之人物,但四川省内有记述夫妻三人共同守护葭萌关一事,民间亦流传如夫妻三人曾共同参与诸葛亮之南蛮征伐等轶事。',
|
||||
wangyue:'王悦是在《花关索传》中登场的虚拟人物,盗贼王令公的两个女儿之一,王桃的妹妹,与姐姐都是关索之妻。姐妹俩原为卢塘寨山贼,以武艺与美貌而闻名,被众多男性求婚却皆不与理睬。她们在关索回西川认父途中与关索交手时不敌,因意气投合而一齐下嫁。虽为架空之人物,但四川省内有记述夫妻三人共同守护葭萌关一事,民间亦流传如夫妻三人曾共同参与诸葛亮之南蛮征伐等轶事。',
|
||||
zhaoyan:'赵嫣,生卒年不详。东吴方士(一说是丞相)赵达之妹,吴大帝孙权之妃,人称赵夫人。她心灵手巧,多才多艺,有“三绝”之称。孙权曾经想要找擅长绘画之人绘制山川地势军阵之图。赵达举荐了自己的妹妹。赵嫣认为水墨容易褪色,不方便在军旅之中保存。自己擅长刺绣,可以在锦帛上绣出孙权所需之图。待制作完成后献于孙权,只见方帛锦绣之上有五岳河海城邑行阵之形,孙权大为赞叹。时人谓之“针绝”。除刺绣之外,赵嫣还擅长绘画织锦,她能用彩丝织成云霞龙蛇之锦,大则盈尺,小则方寸,宫中谓之“机绝”。孙权在昭阳宫居住之时,饱受暑气之扰,以紫绡制成帷帐缓解暑气。赵嫣认为此物不足为贵,她削下自己的头发剖为细丝,以郁夷国出产的神胶连接,花了数月功夫将其制成一顶幔帐,打开之后薄如蝉翼,轻赛寒烟。放下帐帷能笼罩一丈之地,帐内清风自生暑意顿消。收起来则可纳入枕中,携带方便。时人谓之“丝绝”。',
|
||||
},
|
||||
characterTitle:{
|
||||
wulan:'#b对决限定武将',
|
||||
|
@ -12124,6 +12266,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
pangdegong:['re_pangdegong','pangdegong'],
|
||||
zhujun:['sp_zhujun','zhujun'],
|
||||
sunyi:['re_sunyi','sunyi'],
|
||||
tw_liuhong:['tw_liuhong','liuhong'],
|
||||
},
|
||||
translate:{
|
||||
lijue:"李傕",
|
||||
|
@ -12520,7 +12663,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
yangzhong:'殃众',
|
||||
yangzhong_info:'当你造成或受到伤害后,若受伤角色和伤害来源均存活,则伤害来源可弃置两张牌,然后令受伤角色失去1点体力。',
|
||||
huangkong:'惶恐',
|
||||
huangkong_info:'锁定技,当你于回合外成为【杀】或伤害类锦囊牌的唯一目标后,若你没有手牌,则你摸两张牌。',
|
||||
huangkong_info:'锁定技,当你于回合外成为【杀】或普通锦囊牌的目标后,若你没有手牌,则你摸两张牌。',
|
||||
re_taoqian:'陶谦',
|
||||
reyixiang:'义襄',
|
||||
reyixiang_info:'锁定技,其他角色于其出牌阶段内使用的第一张牌对你的伤害-1;其使用的第二张牌若为黑色,则对你无效。',
|
||||
|
@ -12558,9 +12701,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhangu_info:'锁定技,准备阶段,若你的体力上限大于1且没有手牌/装备区内没有牌,则你减1点体力上限,然后从牌堆中获得三张类型不同的牌。',
|
||||
re_niujin:'牛金',
|
||||
recuorui:'摧锐',
|
||||
recuorui_info:'你的第一个回合开始时,你可以依次获得至多X名角色的各一张手牌(X为你的体力值)。',
|
||||
recuorui_info:'限定技,出牌阶段,你可以依次获得至多X名角色的各一张手牌(X为你的体力值)。',
|
||||
reliewei:'裂围',
|
||||
reliewei_info:'每回合限X次(X为你的体力值),当有其他角色因你造成伤害而进入濒死状态时,你可以摸一张牌。',
|
||||
reliewei_info:'当有角色于你的回合内进入濒死状态时,你可以摸一张牌。',
|
||||
duanwei:'段煨',
|
||||
langmie:'狼灭',
|
||||
langmie_damage:'狼灭',
|
||||
|
@ -12756,9 +12899,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
yinyi_info:'锁定技。每回合限一次,当你受到非属性伤害时,若你的手牌数和体力值与伤害来源均不相同,则你防止此伤害。',
|
||||
re_sunyi:'孙翊',
|
||||
syjiqiao:'激峭',
|
||||
syjiqiao_info:'出牌阶段开始时,你可将牌堆顶的X张牌置于你的武将牌上(X为你的体力上限)。当你于此出牌阶段内使用的牌结算结束后,你可以获得其中的一张牌,然后若剩余牌中红色牌和黑色牌的数量:不相等,你失去1点体力;相等,你摸一张牌。出牌阶段结束时,你将这些牌置入弃牌堆。',
|
||||
syjiqiao_info:'出牌阶段开始时,你可将牌堆顶的X张牌置于你的武将牌上(X为你的体力上限)。当你于此出牌阶段内使用的牌结算结束后,你可以获得其中的一张牌,然后若剩余牌中红色牌和黑色牌的数量:不相等,你失去1点体力;相等,你回复1点体力。出牌阶段结束时,你将这些牌置入弃牌堆。',
|
||||
syxiongyi:'凶疑',
|
||||
syxiongyi_info:'限定技。当你处于濒死状态时,若剩余武将牌堆中:有“徐氏”,则你将体力值回复至3点,并将此武将牌替换为“徐氏”;没有“徐氏”,则你将体力值回复至1点并获得〖魂姿〗。',
|
||||
zhaoyan:'赵嫣',
|
||||
jinhui:'锦绘',
|
||||
jinhui_info:'出牌阶段限一次,你可以随机展示牌堆中的三张不具有“伤害”标签且使用目标范围为“自己”或“一名角色”的牌,然后选择一名其他角色。该角色选择并按如下“锦绘”规则使用其中一张,然后你可以依次按如下“锦绘”规则使用其余两张:若此牌的使用目标为“自己”,则对自己使用该牌,否则对对方使用该牌(无距离限制且不计入次数限制)。',
|
||||
qingman:'轻幔',
|
||||
qingman_info:'锁定技。一名角色的回合结束时,你将手牌摸至X张(X为其装备区中空栏的数量)。',
|
||||
|
||||
sp_whlw:"文和乱武",
|
||||
sp_zlzy:"逐鹿中原",
|
||||
|
|
|
@ -87,6 +87,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
machao:['madai','mayunlu'],
|
||||
zhangliao:['zangba'],
|
||||
ganning:['lingtong','xf_sufei'],
|
||||
guanyu:['zhangfei'],
|
||||
},
|
||||
skill:{
|
||||
rewangzun:{
|
||||
|
|
773
character/tw.js
|
@ -5,12 +5,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
connect:true,
|
||||
characterSort:{
|
||||
tw:{
|
||||
tw_mobile:['tw_beimihu','nashime','tw_gexuan','tw_dongzhao','jiachong','duosidawang','wuban','yuejiu','tw_fuwan','tw_yujin','tw_zhaoxiang','tw_hucheer','tw_hejin','tw_mayunlu','tw_re_caohong'],
|
||||
tw_mobile:['nashime','tw_dongzhao','jiachong','duosidawang','wuban','yuejiu','tw_huojun','tw_caocao'],
|
||||
tw_mobile2:['tw_beimihu','tw_gexuan','tw_fuwan','tw_yujin','tw_zhaoxiang','tw_hucheer','tw_hejin','tw_mayunlu','tw_re_caohong','tw_zangba','tw_liuhong'],
|
||||
tw_yijiang:['tw_caoang','tw_caohong','tw_zumao','tw_dingfeng','tw_maliang','tw_xiahouba'],
|
||||
tw_english:['kaisa'],
|
||||
},
|
||||
},
|
||||
character:{
|
||||
tw_caocao:['male','qun',4,['twlingfa']],
|
||||
tw_liuhong:['male','qun',4,['twyujue','twgezhi','twfengqi'],['zhu']],
|
||||
tw_huojun:['male','shu',4,['twsidai','twjieyu']],
|
||||
tw_zangba:['male','wei',4,['twhanyu','twhengjiang']],
|
||||
tw_re_caohong:['male','wei',4,['twyuanhu','twjuezhu']],
|
||||
tw_mayunlu:['female','shu',4,['mashu','twfengpo']],
|
||||
tw_hejin:['male','qun',4,['twmouzhu','twyanhuo']],
|
||||
|
@ -40,6 +45,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
duosidawang:'朵思大王是《三国演义》中人物,南蛮秃龙洞的元帅,孟获弟弟孟优的朋友,据说是南蛮第一智者。',
|
||||
wuban:'吴班,字元雄,生卒年不详,兖州陈留郡(治今河南省开封市)人。三国时期蜀汉将领。为领军,随刘备参加伐吴之战,后又随蜀汉丞相诸葛亮参加北伐曹魏的战争,并于公元231年(建兴九年)的北伐中大破司马懿。官至骠骑将军,封绵竹侯。吴班以豪爽侠义著称于当时,又因族妹吴氏是蜀汉穆皇后,在蜀汉将领中有较高的地位。',
|
||||
yuejiu:'乐就(?-197),在袁术为攻徐州而大兴七军之际,以督战官之身份担任联络之役。但是,袁术军不幸战败,其也在寿春被曹操军逮捕并遭到斩首。',
|
||||
huojun:'霍峻(178年—217年),字仲邈,南郡枝江(今湖北枝江)人,东汉末年刘备麾下名将。其兄霍笃曾在故乡聚部众数百人。后霍笃逝世,刘表以霍峻继承其部曲。208年(建安十三年),刘表病逝,霍峻便率部曲归降刘备,并被任为中郎将。后随刘备入蜀,刘备从葭萌还袭刘璋,留霍峻守葭萌城。张鲁遣将杨帛劝降霍峻,霍峻严词拒绝,杨帛退去。后刘璋将扶禁、向存等率万余人由阆水上,攻围霍峻,城中兵不过数百人,霍峻坚守一年,伺机将其击破。刘备定蜀,嘉霍峻之功,于是分广汉为梓潼郡,以峻为梓潼太守、裨将军。三年后去世,还葬成都。刘备亲率群僚临会吊祭,留宿墓上,当时的人都为他感到荣幸。',
|
||||
},
|
||||
card:{
|
||||
dz_mantianguohai:{
|
||||
|
@ -153,6 +159,741 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
twlingfa:{
|
||||
audio:2,
|
||||
trigger:{global:'roundStart'},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(game.roundNumber<3||!player.hasSkill('twlingfa')){
|
||||
var str;
|
||||
switch(game.roundNumber){
|
||||
case 1:str='获得如下效果直到本轮结束:其他角色使用【杀】时,若其有牌,则其需弃置一张牌,否则受到你造成的1点伤害。';break;
|
||||
case 2:str='获得如下效果直到本轮结束:其他角色使用【桃】结算结束后,若其有牌,则其需交给你一张牌,否则受到你造成的1点伤害。';break;
|
||||
default:str='失去【令法】并获得【治暗】';break;
|
||||
}
|
||||
player.chooseBool(get.prompt('twlingfa'),str);
|
||||
}
|
||||
else event._result={bool:true};
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
switch(game.roundNumber){
|
||||
case 1:
|
||||
player.logSkill('twlingfa',game.filterPlayer((current)=>current!=player).sortBySeat());
|
||||
player.addTempSkill('twlingfa_sha','roundStart');
|
||||
break;
|
||||
case 2:
|
||||
player.logSkill('twlingfa',game.filterPlayer((current)=>current!=player).sortBySeat());
|
||||
player.addTempSkill('twlingfa_tao','roundStart');
|
||||
break;
|
||||
default:
|
||||
player.logSkill('twlingfa');
|
||||
player.removeSkill('twlingfa');
|
||||
game.log(player,'失去了技能','#g【令法】');
|
||||
player.addSkillLog('twzhian');
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
sha:{
|
||||
audio:'twlingfa',
|
||||
trigger:{global:'useCard'},
|
||||
charlotte:true,
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return player!=event.player&&event.card.name=='sha'&&event.player.countCards('he')>0;
|
||||
},
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
'step 0'
|
||||
game.delayx();
|
||||
trigger.player.chooseToDiscard('he','令法:弃置一张牌,或受到来自'+get.translation(player)+'的1点伤害').set('goon',get.damageEffect(trigger.player,player,trigger.player)<0).set('ai',function(card){
|
||||
if(!_status.event.goon) return 0;
|
||||
return 8-get.value(card);
|
||||
});
|
||||
'step 1'
|
||||
if(!result.bool){
|
||||
trigger.player.damage();
|
||||
}
|
||||
},
|
||||
mark:true,
|
||||
marktext:'<span style="text-decoration: line-through;">杀</span>',
|
||||
intro:{content:'其他角色使用【杀】时,若其有牌,则其需弃置一张牌,否则受到你造成的1点伤害。'},
|
||||
},
|
||||
tao:{
|
||||
audio:'twlingfa',
|
||||
trigger:{global:'useCard'},
|
||||
charlotte:true,
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return player!=event.player&&event.card.name=='tao'&&event.player.countCards('he')>0;
|
||||
},
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
'step 0'
|
||||
game.delayx();
|
||||
trigger.player.chooseCard('he','令法:交给'+get.translation(player)+'一张牌,否则受到来自其的1点伤害').set('goon',get.damageEffect(trigger.player,player,trigger.player)<0).set('ai',function(card){
|
||||
if(!_status.event.goon) return 0;
|
||||
return 8-get.value(card);
|
||||
});
|
||||
'step 1'
|
||||
if(!result.bool){
|
||||
trigger.player.damage();
|
||||
}
|
||||
else player.gain(result.cards,trigger.player,'giveAuto');
|
||||
},
|
||||
mark:true,
|
||||
marktext:'<span style="text-decoration: line-through;">桃</span>',
|
||||
intro:{content:'其他角色使用【桃】结算结束后,若其有牌,则其需交给你一张牌,否则受到你造成的1点伤害。'},
|
||||
},
|
||||
},
|
||||
derivation:'twzhian',
|
||||
},
|
||||
twzhian:{
|
||||
audio:2,
|
||||
usable:1,
|
||||
trigger:{global:'useCardAfter'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
var type=get.type(event.card);
|
||||
if(type!='delay'&&type!='equip') return false;
|
||||
if(event.cards.length!=1) return false;
|
||||
var position=get.position(event.cards[0]);
|
||||
if(position=='e'||position=='j') return true;
|
||||
return event.player.isIn();
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var str=get.translation(trigger.cards[0]),owner=get.owner(trigger.cards[0]);
|
||||
var choiceList=[
|
||||
'弃置'+(owner?(get.translation(owner)+'区域内的'):'')+str,
|
||||
'弃置一张手牌并获得'+str,
|
||||
'对'+get.translation(trigger.player)+'造成1点伤害',
|
||||
];
|
||||
var choices=[];
|
||||
if(owner&&lib.filter.canBeDiscarded(card,player,owner)) choices.push('选项一');
|
||||
else choiceList[0]='<span style="opacity:0.5">'+choiceList[0]+'</span>';
|
||||
if(owner&&player.hasCard(function(card){
|
||||
return lib.filter.cardDiscardable(card,player,'twzhian');
|
||||
},'h')&&lib.filter.canBeGained(card,player,owner)) choices.push('选项二');
|
||||
else choiceList[1]='<span style="opacity:0.5">'+choiceList[1]+'</span>';
|
||||
if(trigger.player.isIn()) choices.push('选项三');
|
||||
else choiceList[2]='<span style="opacity:0.5">'+choiceList[2]+'</span>';
|
||||
player.chooseControl(choices,'cancel2').set('choiceList',choiceList).set('prompt',get.prompt('twzhian')).set('ai',function(){
|
||||
var player=_status.event.player,choices=_status.event.controls.slice(0);
|
||||
var card=_status.event.getTrigger().cards[0],owner=get.owner(card);
|
||||
var getEffect=function(choice){
|
||||
if(choice=='cancel2') return 0.1;
|
||||
if(choice=='选项三'){
|
||||
return get.damageEffect(_status.event.getTrigger().player,player,player);
|
||||
}
|
||||
var result;
|
||||
if(get.position(card)=='j'){
|
||||
result=-get.effect(player,{
|
||||
name:card.viewAs||card.name,
|
||||
cards:[card],
|
||||
},player,player)*get.sgn(get.attitude(player,owner));
|
||||
}
|
||||
else result=-(get.value(card,owner)-0.01)*get.sgn(get.attitude(player,owner));
|
||||
if(choice=='选项一') return result;
|
||||
if(player.hasCard(function(cardx){
|
||||
return lib.filter.cardDiscardable(cardx,player,'twzhian')&&get.value(cardx,player)<get.value(card,player);
|
||||
},'h')) return result*1.2;
|
||||
return 0;
|
||||
}
|
||||
choices.sort(function(a,b){
|
||||
return getEffect(b)-getEffect(a);
|
||||
});
|
||||
return choices[0];
|
||||
});
|
||||
'step 1'
|
||||
if(result.control!='cancel2'){
|
||||
var card=trigger.cards[0],owner=get.owner(card);
|
||||
switch(result.control){
|
||||
case '选项一':
|
||||
player.logSkill('twzhian',owner);
|
||||
owner.discard(card,'notBySelf');
|
||||
event.finish();
|
||||
break;
|
||||
case '选项二':
|
||||
player.chooseToDiscard('h',true).logSkill=['twzhian',owner];
|
||||
event.target=owner;
|
||||
break;
|
||||
case '选项三':
|
||||
player.logSkill('twzhian',trigger.player);
|
||||
trigger.player.damage();
|
||||
event.finish();
|
||||
break;
|
||||
}
|
||||
}
|
||||
else player.storage.counttrigger.twzhian--;
|
||||
'step 2'
|
||||
if(result.bool&&target.getCards('ej').contains(trigger.cards[0])) player.gain(trigger.cards,target,'give');
|
||||
},
|
||||
},
|
||||
twyujue:{
|
||||
audio:2,
|
||||
global:'twyujue_give',
|
||||
trigger:{player:'gainAfter'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(player==_status.currentPhase) return false;
|
||||
return game.hasPlayer(function(current){
|
||||
if(current==player) return false;
|
||||
var evt=event.getl(current);
|
||||
if(!evt||!evt.cards2||!evt.cards2.length) return false;
|
||||
return (!current.hasSkill('twyujue_effect0'))||(!current.hasSkill('twyujue_effect1'));
|
||||
})
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var list=game.filterPlayer(function(current){
|
||||
if(current==player) return false;
|
||||
var evt=trigger.getl(current);
|
||||
if(!evt||!evt.cards2||!evt.cards2.length) return false;
|
||||
return (!current.hasSkill('twyujue_effect0'))||(!current.hasSkill('twyujue_effect1'));
|
||||
}).sortBySeat();
|
||||
event.targets=list;
|
||||
'step 1'
|
||||
var target=event.targets.shift();
|
||||
if(target.isIn()){
|
||||
event.target=target;
|
||||
var num=2;
|
||||
if(target.hasSkill('twyujue_effect0')) num--;
|
||||
if(target.hasSkill('twyujue_effect1')) num--;
|
||||
num=Math.min(num,trigger.getl(target).cards2.length);
|
||||
if(num>0) event.count=num;
|
||||
else if(targets.length>0) event.redo();
|
||||
else event.finish();
|
||||
}
|
||||
else if(targets.length>0) event.redo();
|
||||
else event.finish();
|
||||
'step 2'
|
||||
event.count--;
|
||||
player.chooseBool(get.prompt('twyujue',target),'可令其选择本回合内未选择过的一项:⒈弃置攻击范围内一名角色的一张牌。⒉下一次使用牌时,从牌堆中获得一张同类别的牌。').set('ai',function(){
|
||||
var evt=_status.event.getParent();
|
||||
return get.attitude(evt.player,evt.target)>0;
|
||||
});
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
player.logSkill('twyujue',target);
|
||||
var list=[0,1];
|
||||
if(target.hasSkill('twyujue_effect0')) list.remove(0);
|
||||
if(target.hasSkill('twyujue_effect1')) list.remove(1);
|
||||
if(!list.length) event.goto(6);
|
||||
else if(list.length==1) event._result={index:list[0]};
|
||||
else target.chooseControl().set('choiceList',['弃置攻击范围内一名角色的一张牌','下一次使用牌时,从牌堆中获得一张同类别的牌']).set('ai',function(){
|
||||
var player=_status.event.player;
|
||||
if(game.hasPlayer(function(current){
|
||||
return player.inRange(current)&¤t.countDiscardableCards(player,'he')>0&&get.effect(current,{name:'guohe_copy2'},player,player)>0;
|
||||
})) return 0;
|
||||
return 1;
|
||||
});
|
||||
}
|
||||
else event.goto(6);
|
||||
'step 4'
|
||||
target.addTempSkill('twyujue_effect'+result.index);
|
||||
if(result.index==0){
|
||||
if(game.hasPlayer(function(current){
|
||||
return target.inRange(current)&¤t.countDiscardableCards(target,'he')>0;
|
||||
})){
|
||||
target.chooseTarget('弃置攻击范围内一名角色的一张牌',true,function(card,player,target){
|
||||
return player.inRange(target)&&target.countDiscardableCards(player,'he')>0;
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.effect(target,{name:'guohe_copy2'},player,player)
|
||||
});
|
||||
}
|
||||
else event.goto(6);
|
||||
}
|
||||
else event.goto(6);
|
||||
'step 5'
|
||||
if(result.bool){
|
||||
var target2=result.targets[0];
|
||||
target.line(target2,'green');
|
||||
target.discardPlayerCard(target2,'he',true);
|
||||
}
|
||||
'step 6'
|
||||
game.delayx();
|
||||
if(event.count>0) event.goto(2);
|
||||
else if(targets.length) event.goto(1);
|
||||
},
|
||||
subSkill:{
|
||||
clear:{
|
||||
onremove:true,
|
||||
},
|
||||
effect0:{charlotte:true},
|
||||
effect1:{
|
||||
charlotte:true,
|
||||
trigger:{player:'useCard'},
|
||||
usable:1,
|
||||
forced:true,
|
||||
popup:false,
|
||||
content:function(){
|
||||
player.unmarkSkill('twyujue_effect1');
|
||||
var type2=get.type2(trigger.card,false);
|
||||
var card=get.cardPile2(function(card){
|
||||
return get.type2(card,false)==type2;
|
||||
});
|
||||
if(card) trigger.player.gain(card,'gain2');
|
||||
},
|
||||
mark:true,
|
||||
marktext:'爵',
|
||||
intro:{content:'使用下一张牌时,从牌堆中获得一张类型相同的牌'},
|
||||
},
|
||||
},
|
||||
},
|
||||
twyujue_give:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filter:function(event,player){
|
||||
if(!player.countCards('he')) return false;
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.hasSkill('twyujue');
|
||||
});
|
||||
if(!targets.length) return false;
|
||||
for(var target of targets){
|
||||
var num=2;
|
||||
if(player.group=='qun'&&target.hasZhuSkill('twfengqi',player)) num=4;
|
||||
if(target.countMark('twyujue_clear')<num) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
selectCard:function(){
|
||||
var player=_status.event.player;
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.hasSkill('twyujue');
|
||||
});
|
||||
return [1,Math.max.apply(Math,targets.map(function(target){
|
||||
var num=2;
|
||||
if(player.group=='qun'&&target.hasZhuSkill('twfengqi',player)) num=4;
|
||||
return num-target.countMark('twyujue_clear');
|
||||
}))];
|
||||
},
|
||||
filterCard:true,
|
||||
filterTarget:function(card,player,target){
|
||||
if(!target.hasSkill('twyujue')) return false;
|
||||
var num=2;
|
||||
if(player.group=='qun'&&target.hasZhuSkill('twfengqi',player)) num=4;
|
||||
return (num-target.countMark('twyujue_clear'))>=Math.max(1,ui.selected.cards.length);
|
||||
},
|
||||
selectTarget:function(){
|
||||
var player=_status.event.player;
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.hasSkill('twyujue');
|
||||
});
|
||||
return targets.length>1?1:-1;
|
||||
},
|
||||
complexSelect:true,
|
||||
prompt:function(){
|
||||
var player=_status.event.player;
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.hasSkill('twyujue');
|
||||
});
|
||||
return '将任意张牌交给'+get.translation(targets)+(targets.length>1?'中的一人':'');
|
||||
},
|
||||
position:'he',
|
||||
discard:false,
|
||||
lose:false,
|
||||
delay:false,
|
||||
check:function(card){
|
||||
if(ui.selected.cards.length) return 0;
|
||||
var player=_status.event.player;
|
||||
if(game.hasPlayer(function(current){
|
||||
return lib.skill.twyujue_give.filterTarget(null,player,current)&&get.attitude(player,current)>0;
|
||||
})){
|
||||
var val=get.value(card);
|
||||
if(val<=0&&get.position(card)=='e') return 100-val;
|
||||
if(!player.hasSkill('twyujue_effect1')&&player.hasCard(function(cardx){
|
||||
return cardx!=card&&player.getUseValue(cardx,null,true)>0;
|
||||
},'hs')) return 6-get.value(card);
|
||||
if(!player.hasSkill('twyujue_effect0')&&game.hasPlayer(function(current){
|
||||
return player.inRange(current)&¤t.countDiscardableCards(player,'he')>0&&get.effect(current,{name:'guohe_copy2'},player,player)>0;
|
||||
})) return 5.5-get.value(card);
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
content:function(){
|
||||
game.trySkillAudio('twyujue',target);
|
||||
target.gain(cards,player,'give');
|
||||
target.addTempSkill('twyujue_clear');
|
||||
target.addMark('twyujue_clear',cards.length,false);
|
||||
},
|
||||
ai:{
|
||||
order:10,
|
||||
result:{target:1},
|
||||
},
|
||||
},
|
||||
twgezhi:{
|
||||
audio:2,
|
||||
trigger:{player:'useCard'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(!player.countCards('h')) return false;
|
||||
var evt=event.getParent('phaseUse');
|
||||
if(!evt||evt.player!=player) return false;
|
||||
var type=get.type2(event.card,false);
|
||||
return !player.hasHistory('useCard',function(evtx){
|
||||
return evtx!=event&&get.type2(evtx.card,false)==type&&evtx.getParent('phaseUse')==evt;
|
||||
},event);
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(!event.isMine()&&!event.isOnline()) game.delayx();
|
||||
player.chooseCard('是否发动【革制】重铸一张牌?').set('ai',function(card){
|
||||
return 5.5-get.value(card);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('twgezhi');
|
||||
player.loseToDiscardpile(result.cards);
|
||||
player.draw();
|
||||
}
|
||||
},
|
||||
group:'twgezhi_buff',
|
||||
subSkill:{
|
||||
buff:{
|
||||
audio:'twgezhi',
|
||||
trigger:{player:'phaseUseEnd'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.getHistory('lose',function(evt){
|
||||
return evt.getParent(2).name=='twgezhi'&&evt.getParent('phaseUse')==event;
|
||||
}).length>1;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('twgezhi'),'你可以令一名角色选择获得一个其未获得过的效果:⒈攻击范围+2;⒉手牌上限+2;⒊加1点体力上限。',function(card,player,target){
|
||||
return !target.hasSkill('twgezhi_选项一')||!target.hasSkill('twgezhi_选项二')||!target.hasSkill('twgezhi_选项三');
|
||||
}).set('ai',function(target){
|
||||
return get.attitude(_status.event.player,target);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.logSkill('twgezhi',target);
|
||||
var list=[];
|
||||
for(var i=1;i<=3;i++){
|
||||
var str='选项'+get.cnNumber(i,true);
|
||||
if(!target.hasSkill('twgezhi_'+str)) list.push(str);
|
||||
}
|
||||
if(list.length==1) event._result={control:list[0]};
|
||||
else target.chooseControl(list).set('choiceList',['令自己的攻击范围+2','令自己的手牌上限+2','令自己的体力上限+1']).set('ai',function(){
|
||||
var player=_status.event.player,controls=_status.event.controls;
|
||||
if(controls.contains('选项一')&&game.hasPlayer(function(current){
|
||||
return (get.realAttitude||get.attitude)(player,current)<0&&get.distance(player,current,'attack')>1;
|
||||
})) return '选项一';
|
||||
if(controls.contains('选项二')&&player.needsToDiscard()) return '选项二';
|
||||
if(controls.contains('选项三')) return '选项三';
|
||||
return controls.randomGet();
|
||||
});
|
||||
}
|
||||
else{
|
||||
event._triggered=null;
|
||||
event.finish();
|
||||
}
|
||||
'step 2'
|
||||
target.addSkill('twgezhi_'+result.control);
|
||||
if(result.control=='选项三') target.gainMaxHp();
|
||||
'step 3'
|
||||
game.delayx();
|
||||
},
|
||||
},
|
||||
选项一:{
|
||||
charlotte:true,
|
||||
mod:{
|
||||
attackFrom:function(from,to,distance){
|
||||
return distance-2;
|
||||
},
|
||||
},
|
||||
mark:true,
|
||||
marktext:' +2 ',
|
||||
intro:{content:'攻击范围+2'},
|
||||
},
|
||||
选项二:{
|
||||
charlotte:true,
|
||||
mod:{
|
||||
maxHandcard:function(player,num){
|
||||
return num+2;
|
||||
},
|
||||
},
|
||||
mark:true,
|
||||
marktext:' +2 ',
|
||||
intro:{content:'手牌上限+2'},
|
||||
},
|
||||
选项三:{
|
||||
charlotte:true,
|
||||
mark:true,
|
||||
marktext:' +1 ',
|
||||
intro:{content:'体力上限+1'},
|
||||
},
|
||||
},
|
||||
},
|
||||
twfengqi:{
|
||||
audio:2,
|
||||
zhuSkill:true,
|
||||
trigger:{player:'twgezhi_buffAfter'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(!event.target||!event.target.isIn()||!player.hasZhuSkill('twfengqi',event.target)) return false;
|
||||
var skills=event.target.getStockSkills(true,true);
|
||||
for(var i of skills){
|
||||
var info=get.info(i);
|
||||
if(info.zhuSkill&&!event.target.hasZhuSkill(i)) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
skillAnimation:true,
|
||||
animationColor:'thunder',
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.target=trigger.target;
|
||||
event.target.chooseBool(get.prompt('twfengqi'),'激活武将牌上的所有主公技');
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
target.logSkill('twfengqi',player);
|
||||
var skills=target.getStockSkills(true,true).filter(function(i){
|
||||
var info=get.info(i);
|
||||
if(info.zhuSkill&&!target.hasZhuSkill(i)) return true;
|
||||
});
|
||||
target.markAuto('zhuSkill_twfengqi',skills);
|
||||
game.log(target,'激活了武将牌上的主公技')
|
||||
}
|
||||
},
|
||||
},
|
||||
twsidai:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
locked:false,
|
||||
skillAnimation:true,
|
||||
animationColor:'fire',
|
||||
filter:function(event,player){
|
||||
var cards=player.getCards('h',{type:'basic'});
|
||||
if(!cards.length) return false;
|
||||
for(var i of cards){
|
||||
if(!game.checkMod(i,player,'unchanged','cardEnabled2',player)) return false;
|
||||
}
|
||||
return event.filterCard(get.autoViewAs({name:'sha',storage:{twsidai:true}},cards),player,event);
|
||||
},
|
||||
viewAs:{name:'sha',storage:{twsidai:true}},
|
||||
filterCard:{type:'basic'},
|
||||
selectCard:-1,
|
||||
check:()=>1,
|
||||
onuse:function(result,player){
|
||||
player.awakenSkill('twsidai');
|
||||
player.addTempSkill('twsidai_effect');
|
||||
},
|
||||
ai:{
|
||||
order:2.9,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
var cards=ui.selected.cards.slice(0);
|
||||
var names=[];
|
||||
for(var i of cards) names.add(i.name);
|
||||
if(names.length<player.hp) return 0;
|
||||
if(player.hasUnknown()&&(player.identity!=fan||!target.isZhu)) return 0;
|
||||
if(get.attitude(player,target)>=0) return -20;
|
||||
return lib.card.sha.ai.result.target.apply(this,arguments);
|
||||
},
|
||||
},
|
||||
},
|
||||
mod:{
|
||||
cardUsable:function(card){
|
||||
if(card.storage&&card.storage.twsidai) return Infinity;
|
||||
},
|
||||
targetInRange:function(card){
|
||||
if(card.storage&&card.storage.twsidai) return true;
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
charlotte:true,
|
||||
trigger:{source:'damageBegin1'},
|
||||
filter:function(event,player){
|
||||
if(!event.card||!event.card.storage||!event.card.storage.twsidai||event.getParent().type!='card') return false;
|
||||
for(var i of event.cards){
|
||||
if(i.name=='jiu') return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
content:function(){
|
||||
trigger.num*=2;
|
||||
game.log(trigger.card,'的伤害值','#y×2');
|
||||
},
|
||||
group:['twsidai_tao','twsidai_shan'],
|
||||
},
|
||||
tao:{
|
||||
trigger:{source:'damageSource'},
|
||||
filter:function(event,player){
|
||||
if(!event.card||!event.card.storage||!event.card.storage.twsidai||!event.player.isIn()) return false;
|
||||
for(var i of event.cards){
|
||||
if(i.name=='tao') return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
content:function(){
|
||||
trigger.player.loseMaxHp();
|
||||
},
|
||||
},
|
||||
shan:{
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
filter:function(event,player){
|
||||
if(!event.card||!event.card.storage||!event.card.storage.twsidai||!event.target.isIn()) return false;
|
||||
for(var i of event.cards){
|
||||
if(i.name=='shan') return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
content:function(){
|
||||
'step 0'
|
||||
trigger.target.chooseToDiscard('h',{type:'basic'},'弃置一张基本牌,否则不能响应'+get.translation(trigger.card)).set('ai',function(card){
|
||||
var player=_status.event.player;
|
||||
if(player.hasCard('hs',function(cardx){
|
||||
return cardx!=card&&get.name(cardx,player)=='shan';
|
||||
})) return 12-get.value(card);
|
||||
return 0;
|
||||
});
|
||||
'step 1'
|
||||
if(!result.bool) trigger.directHit.add(trigger.target);
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
twjieyu:{
|
||||
audio:2,
|
||||
trigger:{player:['phaseJieshuBegin','damageEnd']},
|
||||
round:1,
|
||||
filter:function(event,player){
|
||||
if(event.name!='phaseJieshu'){
|
||||
var history=player.getHistory('damage');
|
||||
for(var i of history){
|
||||
if(i==event) break;
|
||||
return false;
|
||||
}
|
||||
var all=player.actionHistory;
|
||||
for(var i=all.length-2;i>=0;i--){
|
||||
if(all[i].damage.length) return false;
|
||||
if(all[i].isRound) break;
|
||||
}
|
||||
}
|
||||
return player.countCards('h')>0&&!player.hasCard(function(card){
|
||||
return !lib.filter.cardDiscardable(card,player,'twjieyu');
|
||||
},'h')
|
||||
},
|
||||
check:function(event,player){
|
||||
var cards=[],names=[];
|
||||
for(var i=0;i<ui.discardPile.childNodes.length;i++){
|
||||
var card=ui.discardPile.childNodes[i];
|
||||
if(get.type(card,false)=='basic'&&!names.contains(card.name)){
|
||||
cards.push(card);
|
||||
names.push(card.name);
|
||||
}
|
||||
}
|
||||
if(!names.contains('shan')||!names.contains('tao')) return false;
|
||||
if(player.countCards('h','shan')<2&&player.countCards('h','tao')<1) return true;
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.discard(player.getCards('h'));
|
||||
'step 1'
|
||||
var cards=[],names=[];
|
||||
for(var i=0;i<ui.discardPile.childNodes.length;i++){
|
||||
var card=ui.discardPile.childNodes[i];
|
||||
if(get.type(card,false)=='basic'&&!names.contains(card.name)){
|
||||
cards.push(card);
|
||||
names.push(card.name);
|
||||
}
|
||||
}
|
||||
if(cards.length) player.gain(cards,'gain2');
|
||||
},
|
||||
},
|
||||
twhanyu:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
global:'phaseBefore',
|
||||
player:'enterGame',
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.name!='phase'||game.phaseNumber==0;
|
||||
},
|
||||
content:function(){
|
||||
var cards=[],types=['basic','trick','equip'];
|
||||
for(var i of types){
|
||||
var card=get.cardPile2(function(card){
|
||||
return get.type2(card,false)==i;
|
||||
});
|
||||
if(card) cards.push(card);
|
||||
}
|
||||
if(cards.length) player.gain(cards,'gain2');
|
||||
},
|
||||
},
|
||||
twhengjiang:{
|
||||
audio:2,
|
||||
trigger:{player:'useCardToPlayer'},
|
||||
filter:function(event,player){
|
||||
return !player.hasSkill('twhengjiang2')&&event.targets.length==1&&['basic','trick'].contains(get.type(event.card,false))&&player.isPhaseUsing()&&game.hasPlayer(function(current){
|
||||
return player.inRange(current)&&lib.filter.targetEnabled2(event.card,player,current);
|
||||
});
|
||||
},
|
||||
prompt:'是否发动【横江】?',
|
||||
prompt2:function(event,player){
|
||||
return '将'+get.translation(event.card)+'的目标改为'+get.translation(lib.skill.twhengjiang.logTarget(event,player));
|
||||
},
|
||||
logTarget:function(event,player){
|
||||
return game.filterPlayer(function(current){
|
||||
return player.inRange(current)&&lib.filter.targetEnabled2(event.card,player,current);
|
||||
}).sortBySeat();
|
||||
},
|
||||
check:function(event,player){
|
||||
var effect1=get.effect(event.target,event.card,player,player);
|
||||
var effect2=0,targets=lib.skill.twhengjiang.logTarget(event,player);
|
||||
for(var i of targets) effect2+=get.effect(i,event.card,player,player);
|
||||
return effect2>effect1;
|
||||
},
|
||||
content:function(){
|
||||
var targets=lib.skill.twhengjiang.logTarget(trigger,player);
|
||||
trigger.targets.length=0;
|
||||
trigger.targets.addArray(targets);
|
||||
trigger.getParent().triggeredTargets1.length=0;
|
||||
trigger.getParent().twhengjiang_buffed=true;
|
||||
player.addTempSkill('twhengjiang2','phaseUseAfter');
|
||||
},
|
||||
},
|
||||
twhengjiang2:{
|
||||
charlotte:true,
|
||||
trigger:{player:'useCardAfter'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
return event.twhengjiang_buffed&&game.hasPlayer2(function(current){
|
||||
return current!=player&&(current.hasHistory('useCard',function(evt){
|
||||
return evt.respondTo&&evt.respondTo[1]==event.card;
|
||||
})||current.hasHistory('respond',function(evt){
|
||||
return evt.respondTo&&evt.respondTo[1]==event.card;
|
||||
}))
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
player.draw(game.countPlayer2(function(current){
|
||||
return current!=player&&(current.hasHistory('useCard',function(evt){
|
||||
return evt.respondTo&&evt.respondTo[1]==trigger.card;
|
||||
})||current.hasHistory('respond',function(evt){
|
||||
return evt.respondTo&&evt.respondTo[1]==trigger.card;
|
||||
}))
|
||||
}));
|
||||
},
|
||||
},
|
||||
twyuanhu:{
|
||||
audio:'yuanhu',
|
||||
enable:'phaseUse',
|
||||
|
@ -2051,6 +2792,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
},
|
||||
characterReplace:{
|
||||
tw_caocao:['tw_caocao','yj_caocao'],
|
||||
},
|
||||
dynamicTranslate:{
|
||||
twfengpo:function(player){
|
||||
if(player.storage.twfengpo) return '当你使用【杀】或【决斗】指定唯一目标后,你可观看目标角色的手牌并选择一项:⒈摸X张牌。⒉令此牌的伤害值基数+X(X为其手牌中的红色牌数)。';
|
||||
|
@ -2162,7 +2906,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
twyuanhu_info:'出牌阶段限一次。你可将一张装备牌置入一名角色的装备区内。若此牌为:武器牌,你弃置与其距离为1的另一名角色区域的一张牌;防具牌,其摸一张牌;坐骑牌,其回复1点体力。若其的体力值或手牌数不大于你,则你可摸一张牌,且可以于本回合的结束阶段再发动一次〖援护〗。',
|
||||
twjuezhu:'决助',
|
||||
twjuezhu_info:'限定技。准备阶段,你可废除一个坐骑栏,令一名角色获得〖飞影〗并废除判定区。该角色死亡后,你恢复以此法废除的装备栏。',
|
||||
tw_mobile:'移动版',
|
||||
tw_zangba:'TW臧霸',
|
||||
twhanyu:'捍御',
|
||||
twhanyu_info:'锁定技。游戏开始时,你获得牌堆中的基本牌,锦囊牌,装备牌各一张。',
|
||||
twhengjiang:'横江',
|
||||
twhengjiang_info:'出牌阶段限一次,当你使用基本牌或普通锦囊牌指定唯一目标后,你可将此牌的目标改为攻击范围内的所有合法目标,然后你于此牌结算结束后摸X张牌(X为因响应此牌而使用或打出过牌的角色数)。',
|
||||
tw_huojun:'霍峻',
|
||||
twsidai:'伺怠',
|
||||
twsidai_info:'限定技。出牌阶段,你可以将手牌区内的所有基本牌当做【杀】使用(无距离和次数限制)。若此牌对应的实体牌中:包含【闪】,则目标角色成为此牌的目标后,需弃置一张基本牌,否则不可响应此牌;包含【桃】,则当目标角色受到此牌的伤害后,其减1点体力上限;包含【酒】,则当目标角色受到此牌的伤害时,此伤害×2。',
|
||||
twjieyu:'竭御',
|
||||
twjieyu_info:'每轮限一次。结束阶段开始时,或当你于一轮内第一次受到伤害后,你可以弃置所有手牌,然后从弃牌堆中获得不同牌名的基本牌各一张。',
|
||||
tw_liuhong:'TW刘宏',
|
||||
twyujue:'鬻爵',
|
||||
twyujue_give:'鬻爵',
|
||||
twyujue_info:'①其他角色的出牌阶段内,可以交给你任意张牌(每阶段上限为两张)。②当你于回合外获得其他角色的一张牌后,你可令其选择本回合内未选择过的一项:⒈弃置攻击范围内一名角色的一张牌。⒉下一次使用牌时,从牌堆中获得一张同类别的牌。',
|
||||
twgezhi:'革制',
|
||||
twgezhi_info:'①当你于出牌阶段内首次使用某种类别的牌时,你可以重铸一张手牌。②出牌阶段结束时,若你本阶段内因〖革制①〗失去过至少两张牌,则你可以令一名角色选择获得一个其未获得过的效果:⒈攻击范围+2;⒉手牌上限+2;⒊加1点体力上限。',
|
||||
twfengqi:'烽起',
|
||||
twfengqi_info:'主公技,锁定技。①其他群势力角色发动〖鬻爵①〗时,将每阶段上限改为四张。②以其他角色为目标的〖革制②〗结算结束后,目标角色可以激活其武将牌上的主公技。',
|
||||
tw_caocao:'TW曹操',
|
||||
twlingfa:'令法',
|
||||
twlingfa_info:'①第一轮游戏开始时,你可选择获得如下效果直到本轮结束:其他角色使用【杀】时,若其有牌,则其需弃置一张牌,否则受到你造成的1点伤害。②第二轮游戏开始时,你可选择获得如下效果直到本轮结束:其他角色使用【桃】结算结束后,若其有牌,则其需交给你一张牌,否则受到你造成的1点伤害。③第三轮游戏开始时,你失去〖令法〗并获得〖治暗〗。',
|
||||
twzhian:'治暗',
|
||||
twzhian_info:'每回合限一次。一名角色使用装备牌或延时锦囊牌后,你可选择:⒈弃置位于场上的此牌。⒉弃置一张手牌并获得位于场上的此牌。⒊对其造成1点伤害。',
|
||||
|
||||
tw_mobile:'移动版·海外服',
|
||||
tw_mobile2:'海外服异构',
|
||||
tw_yijiang:'一将成名TW',
|
||||
tw_english:'英文版',
|
||||
}
|
||||
|
|
|
@ -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','madai','liaohua','old_guanzhang','bulianshi','handang','chengpu','liubiao','old_huaxiong','caozhang'],
|
||||
yijiang_2012:['old_wangyi','xunyou','zhonghui','old_madai','liaohua','old_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'],
|
||||
|
@ -39,7 +39,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
fuhuanghou:['female','qun',3,['qiuyuan','zhuikong']],
|
||||
zhonghui:['male','wei',4,['quanji','zili']],
|
||||
jianyong:['male','shu',3,['qiaoshui','jyzongshi']],
|
||||
madai:['male','shu',4,['mashu','oldqianxi']],
|
||||
old_madai:['male','shu',4,['mashu','qianxi']],
|
||||
liufeng:['male','shu',4,['xiansi']],
|
||||
manchong:['male','wei',3,['junxing','yuce']],
|
||||
chenqun:['male','wei',3,['pindi','faen']],
|
||||
|
@ -963,14 +963,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
unique:true,
|
||||
limited:true,
|
||||
enable:'chooseToUse',
|
||||
init:function(player){
|
||||
player.storage.xinfuli=false;
|
||||
},
|
||||
mark:true,
|
||||
filter:function(event,player){
|
||||
if(event.type!='dying') return false;
|
||||
if(player!=event.dying) return false;
|
||||
if(player.storage.xinfuli) return false;
|
||||
return true;
|
||||
},
|
||||
content:function(){
|
||||
|
@ -4406,7 +4402,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
name:button.link[2],
|
||||
nature:button.link[3],
|
||||
storage:{
|
||||
nowuxie:true,
|
||||
jiaozhao:player,
|
||||
}
|
||||
};
|
||||
|
@ -4417,7 +4412,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var nature=result.links[0][3];
|
||||
var fakecard={
|
||||
name:chosen,
|
||||
storage:{nowuxie:true,jiaozhao:player},
|
||||
storage:{jiaozhao:player},
|
||||
};
|
||||
if(nature) fakecard.nature=nature;
|
||||
event.target.showCards(game.createCard({
|
||||
|
@ -9298,7 +9293,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
result:{
|
||||
target:function(player,target){
|
||||
if(player!=target) return 0;
|
||||
if(player.hasSkill('requanji')||(player.countCards('h')+2<=player.hp+player.storage.quanji.length)) return 1;
|
||||
if(player.hasSkill('requanji')||(player.countCards('h')+2<=player.hp+player.getExpansions('quanji').length)) return 1;
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
|
@ -9335,10 +9330,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
limited:true,
|
||||
enable:'phaseUse',
|
||||
filter:function(event,player){
|
||||
return !player.storage.xianzhou&&player.countCards('e')>0;
|
||||
},
|
||||
init:function(player){
|
||||
player.storage.xianzhou=false;
|
||||
return player.countCards('e')>0;
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return player!=target;
|
||||
|
@ -9351,7 +9343,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var cards=player.getCards('e');
|
||||
target.gain(cards,player,'give');
|
||||
event.num=cards.length;
|
||||
player.storage.xianzhou=true;
|
||||
game.delay();
|
||||
"step 1"
|
||||
target.chooseTarget([1,event.num],'令'+get.translation(player)+'回复'+
|
||||
|
@ -12071,7 +12062,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
wangyi:['wangyi','old_wangyi'],
|
||||
caozhang:['re_caozhang','xin_caozhang','caozhang'],
|
||||
guanzhang:['guanzhang','old_guanzhang'],
|
||||
madai:['old_madai','madai'],
|
||||
madai:['re_madai','old_madai','madai'],
|
||||
liaohua:['xin_liaohua','re_liaohua','liaohua'],
|
||||
bulianshi:['re_bulianshi','bulianshi','old_bulianshi'],
|
||||
handang:['xin_handang','re_handang','handang'],
|
||||
|
@ -12140,7 +12131,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhangsong:'张松',
|
||||
guyong:'顾雍',
|
||||
jianyong:'简雍',
|
||||
madai:'马岱',
|
||||
old_madai:'马岱',
|
||||
gz_madai:'马岱',
|
||||
xin_xushu:'徐庶',
|
||||
manchong:'满宠',
|
||||
liufeng:'刘封',
|
||||
|
|
|
@ -335,10 +335,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(target.isIn()&&player.canUse(card,target,null,true)){
|
||||
player.useCard(card,target,cards);
|
||||
}
|
||||
else event.finish();
|
||||
'step 1'
|
||||
player.removeSkill('maihuo_effect');
|
||||
},
|
||||
marktext:'祸',
|
||||
intro:{
|
||||
content:'expansion',
|
||||
markcount:'expansion',
|
||||
|
@ -354,11 +354,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
return event.player.hasSkill('maihuo_effect')&&event.player.storage.maihuo_effect&&event.player.storage.maihuo_effect.length>0;
|
||||
return event.player.hasSkill('maihuo_effect')&&event.player.getExpansions('maihuo_effect').length>0;
|
||||
},
|
||||
content:function(){
|
||||
trigger.player.removeSkill('maihuo_effect');
|
||||
game.delayx();
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -2915,7 +2914,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
wanyi:'婉嫕',
|
||||
wanyi_info:'每回合每项限一次。出牌阶段,你可以将一张具有应变效果的牌当做【逐近弃远】/【出其不意】/【水淹七军】/【洞烛先机】使用。',
|
||||
maihuo:'埋祸',
|
||||
maihuo_info:'①当你成为其他角色使用【杀】的目标后,若此【杀】不为转化牌且有对应的实体牌且其武将牌上没有“祸”且你是此牌的唯一目标,则你可以令此牌对你无效,并将此【杀】置于其武将牌上,称为“祸”。②一名其他角色的出牌阶段开始时,若其武将牌上有“祸”,则其对你使用此“祸”(有距离限制且计入次数限制)。③当你对有“祸”的其他角色造成伤害后,你移去其“祸”。',
|
||||
maihuo_info:'①当你成为其他角色使用【杀】的目标后,若此【杀】不为转化牌且有对应的实体牌且其武将牌上没有“祸”且你是此牌的唯一目标,则你可以令此牌对你无效,并将此【杀】置于其武将牌上,称为“祸”。②一名其他角色的出牌阶段开始时,若其武将牌上有“祸”,则其对你使用此“祸”(有距离限制且计入次数限制,若你不是此牌的合法目标,则改为将此“祸”置入弃牌堆)。③当你对有“祸”的其他角色造成伤害后,你移去其“祸”。',
|
||||
xinchang:'辛敞',
|
||||
canmou:'参谋',
|
||||
canmou_info:'一名角色使用普通锦囊牌指定第一个目标时,若其手牌数为全场唯一最多,则你可以为此牌增加一个额外目标。',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
window.noname_asset_list=[
|
||||
'v1.9.113.2',
|
||||
'v1.9.113.3',
|
||||
'audio/background/aozhan_chaoming.mp3',
|
||||
'audio/background/aozhan_online.mp3',
|
||||
'audio/background/aozhan_rewrite.mp3',
|
||||
|
@ -851,6 +851,9 @@ window.noname_asset_list=[
|
|||
'audio/die/ol_chendeng.mp3',
|
||||
'audio/die/re_sunyi.mp3',
|
||||
'audio/die/tianyu.mp3',
|
||||
'audio/die/re_guohuanghou.mp3',
|
||||
'audio/die/tw_caocao.mp3',
|
||||
'audio/die/tw_liuhong.mp3',
|
||||
|
||||
'audio/skill/decadezishou1.mp3',
|
||||
'audio/skill/decadezishou2.mp3',
|
||||
|
@ -3878,6 +3881,18 @@ window.noname_asset_list=[
|
|||
'audio/skill/yuanchou2.mp3',
|
||||
'audio/skill/zhuitao1.mp3',
|
||||
'audio/skill/zhuitao2.mp3',
|
||||
'audio/skill/redanxin1.mp3',
|
||||
'audio/skill/redanxin2.mp3',
|
||||
'audio/skill/rejiaozhao1.mp3',
|
||||
'audio/skill/rejiaozhao2.mp3',
|
||||
'audio/skill/twgezhi1.mp3',
|
||||
'audio/skill/twgezhi2.mp3',
|
||||
'audio/skill/twlingfa1.mp3',
|
||||
'audio/skill/twlingfa2.mp3',
|
||||
'audio/skill/twyujue1.mp3',
|
||||
'audio/skill/twyujue2.mp3',
|
||||
'audio/skill/twzhian1.mp3',
|
||||
'audio/skill/twzhian2.mp3',
|
||||
|
||||
'audio/voice/male/0.mp3',
|
||||
'audio/voice/male/1.mp3',
|
||||
|
@ -4916,6 +4931,14 @@ window.noname_asset_list=[
|
|||
'image/character/re_sunyi.jpg',
|
||||
'image/character/tianyu.jpg',
|
||||
'image/character/fanjiangzhangda.jpg',
|
||||
'image/character/diy_hanlong.jpg',
|
||||
'image/character/re_guohuanghou.jpg',
|
||||
'image/character/re_madai.jpg',
|
||||
'image/character/tw_caocao.jpg',
|
||||
'image/character/tw_huojun.jpg',
|
||||
'image/character/tw_liuhong.jpg',
|
||||
'image/character/tw_zangba.jpg',
|
||||
'image/character/zhaoyan.jpg',
|
||||
|
||||
'image/character/baiwuchang.jpg',
|
||||
'image/character/baosanniang.jpg',
|
||||
|
|
98
game/game.js
|
@ -11422,6 +11422,37 @@
|
|||
'step 2'
|
||||
game.delay();
|
||||
},
|
||||
addExtraTarget:function(){
|
||||
"step 0"
|
||||
event.num=0;
|
||||
"step 1"
|
||||
var target=targets[num],info=get.info(card);
|
||||
if(target==event.target&&event.addedTarget){
|
||||
event.addedTargets[num]=event.addedTarget;
|
||||
event._result={bool:false};
|
||||
}
|
||||
else if(game.hasPlayer(function(current){
|
||||
return info.filterAddedTarget(card,player,current,target)
|
||||
})){
|
||||
var next=player.chooseTarget(get.translation(event.card)+':选择'+get.translation(targets[num])+'对应的指向目标',function(card,player,target){
|
||||
var card=get.card(),info=get.info(card);
|
||||
return info.filterAddedTarget(card,player,target,_status.event.preTarget)
|
||||
},true);
|
||||
next.set('_get_card',card);
|
||||
next.set('preTarget',targets[num]);
|
||||
}
|
||||
else{
|
||||
event.addedTargets[num]=false;
|
||||
event._result={bool:false};
|
||||
}
|
||||
"step 2"
|
||||
if(result.bool){
|
||||
event.addedTargets[num]=result.targets[0];
|
||||
player.line2([targets[num],result.targets[0]]);
|
||||
}
|
||||
event.num++;
|
||||
if(event.num<targets.length) event.goto(1);
|
||||
},
|
||||
reverseOrder:function(){
|
||||
"step 0"
|
||||
game.delay();
|
||||
|
@ -11530,18 +11561,25 @@
|
|||
},
|
||||
phaseLoop:function(){
|
||||
"step 0"
|
||||
var num=1,current=player;
|
||||
while(current.getSeatNum()==0){
|
||||
current.setSeatNum(num);
|
||||
current=current.next;
|
||||
num++;
|
||||
}
|
||||
"step 1"
|
||||
for(var i=0;i<lib.onphase.length;i++){
|
||||
lib.onphase[i]();
|
||||
}
|
||||
player.phase();
|
||||
"step 1"
|
||||
"step 2"
|
||||
if(!game.players.contains(event.player.next)){
|
||||
event.player=game.findNext(event.player.next);
|
||||
}
|
||||
else{
|
||||
event.player=event.player.next;
|
||||
}
|
||||
event.goto(0);
|
||||
event.goto(1);
|
||||
},
|
||||
loadPackage:function(){
|
||||
'step 0'
|
||||
|
@ -15070,6 +15108,19 @@
|
|||
next.type='precard';
|
||||
if(event.forceDie) next.forceDie=true;
|
||||
}
|
||||
else if(info.singleCard&&info.filterAddedTarget&&event.addedTargets&&event.addedTargets.length<targets.length){
|
||||
var next=game.createEvent(card.name+'ContentBefore');
|
||||
next.setContent('addExtraTarget');
|
||||
next.target=target;
|
||||
next.targets=targets;
|
||||
next.card=card;
|
||||
next.cards=cards;
|
||||
next.player=player;
|
||||
next.type='precard';
|
||||
next.addedTarget=event.addedTarget;
|
||||
next.addedTargets=event.addedTargets;
|
||||
if(event.forceDie) next.forceDie=true;
|
||||
}
|
||||
"step 10"
|
||||
if(event.all_excluded) return;
|
||||
var info=get.info(card,false);
|
||||
|
@ -15107,7 +15158,7 @@
|
|||
if(event.forceDie) next.forceDie=true;
|
||||
if(event.addedTargets){
|
||||
next.addedTargets=event.addedTargets;
|
||||
next.addedTarget=event.addedTarget;
|
||||
next.addedTarget=event.addedTargets[num];
|
||||
next._targets=event._targets;
|
||||
}
|
||||
if(info.targetDelay===false){
|
||||
|
@ -15238,7 +15289,7 @@
|
|||
str+='</span>'
|
||||
}
|
||||
str+='发动了';
|
||||
if(!info.direct){
|
||||
if(!info.direct&&info.log!==false){
|
||||
game.log(player,str,'【'+get.skillTranslation(skill,player)+'】');
|
||||
if(info.logv!==false) game.logv(player,skill,targets);
|
||||
player.trySkillAnimate(skill,skill,checkShow);
|
||||
|
@ -16511,9 +16562,9 @@
|
|||
}
|
||||
}
|
||||
if(_status.characterlist){
|
||||
if(lib.character[player.name]) _status.characterlist.add(player.name);
|
||||
if(lib.character[player.name1]) _status.characterlist.add(player.name1);
|
||||
if(lib.character[player.name2]) _status.characterlist.add(player.name2);
|
||||
if(lib.character[player.name]&&player.name.indexOf('gz_shibing')!=0) _status.characterlist.add(player.name);
|
||||
if(lib.character[player.name1]&&player.name1.indexOf('gz_shibing')!=0) _status.characterlist.add(player.name1);
|
||||
if(lib.character[player.name2]&&player.name2.indexOf('gz_shibing')!=0) _status.characterlist.add(player.name2);
|
||||
}
|
||||
event.cards=player.getCards('hejsx');
|
||||
if(event.cards.length){
|
||||
|
@ -16943,6 +16994,15 @@
|
|||
},
|
||||
player:{
|
||||
//新函数
|
||||
setSeatNum:function(num){
|
||||
game.broadcastAll(function(player,num){
|
||||
player.seatNum=num;
|
||||
},this,num);
|
||||
},
|
||||
getSeatNum:function(){
|
||||
if(typeof this.seatNum=='number') return this.seatNum;
|
||||
return 0;
|
||||
},
|
||||
hasSex:function(sex){
|
||||
if(this.sex=='unknown') return false;
|
||||
if(this.sex=='double') return true;
|
||||
|
@ -18121,6 +18181,7 @@
|
|||
phaseNumber:this.phaseNumber,
|
||||
unseen:this.isUnseen(0),
|
||||
unseen2:this.isUnseen(1),
|
||||
seatNum:this.seatNum,
|
||||
}
|
||||
for(var i=0;i<state.judges.length;i++){
|
||||
state.views[i]=state.judges[i].viewAs;
|
||||
|
@ -26563,15 +26624,17 @@
|
|||
targetEnabledx:function(card,player,target){
|
||||
if(!card) return false;
|
||||
if(_status.event.addCount_extra&&!lib.filter.cardUsable2(card,player)&&!game.checkMod(card,player,target,false,'cardUsableTarget',player)) return false;
|
||||
var info=get.info(card);
|
||||
if(info.singleCard&&info.filterAddedTarget&&ui.selected.targets.length) return info.filterAddedTarget(card,player,target,ui.selected.targets[ui.selected.targets.length-1]);
|
||||
return lib.filter.targetEnabled.apply(this,arguments);
|
||||
},
|
||||
targetEnabled:function(card,player,target){
|
||||
if(!card) return false;
|
||||
var info=get.info(card);
|
||||
var filter=info.filterTarget;
|
||||
var mod=game.checkMod(card,player,target,'unchanged','playerEnabled',player);
|
||||
if(mod==false) return false;
|
||||
if(!info.singleCard||ui.selected.targets.length==0){
|
||||
var mod=game.checkMod(card,player,target,'unchanged','playerEnabled',player);
|
||||
if(mod==false) return false;
|
||||
var mod=game.checkMod(card,player,target,'unchanged','targetEnabled',target);
|
||||
if(mod!='unchanged') return mod;
|
||||
}
|
||||
|
@ -26664,19 +26727,21 @@
|
|||
selectCard:function(){
|
||||
return [1,1];
|
||||
},
|
||||
selectTarget:function(){
|
||||
var card=get.card(),player=get.player();
|
||||
selectTarget:function(card,player){
|
||||
if(!card) card=get.card();
|
||||
if(!player) player=get.player();
|
||||
if(card==undefined) return;
|
||||
var range;
|
||||
var select=get.copy(get.info(card).selectTarget);
|
||||
var range,info=get.info(card);
|
||||
var select=get.copy(info.selectTarget);
|
||||
if(select==undefined){
|
||||
if(get.info(card).filterTarget==undefined) return[0,0];
|
||||
if(info.filterTarget==undefined) return [0,0];
|
||||
range=[1,1];
|
||||
}
|
||||
else if(typeof select=='number') range=[select,select];
|
||||
else if(get.itemtype(select)=='select') range=select;
|
||||
else if(typeof select=='function') range=select(card,player);
|
||||
game.checkMod(card,player,range,'selectTarget',player);
|
||||
if(info.singleCard) return [range[0]*2,range[1]*2];
|
||||
return range;
|
||||
},
|
||||
judge:function(card,player,target){
|
||||
|
@ -28504,7 +28569,8 @@
|
|||
player.hujia=info.hujia;
|
||||
player.sex=info.sex;
|
||||
player.side=info.side;
|
||||
player.phaseNumber=info.phaseNumber,
|
||||
player.phaseNumber=info.phaseNumber;
|
||||
player.seatNum=info.seatNum;
|
||||
player.setNickname();
|
||||
if(info.dead){
|
||||
player.classList.add('dead');
|
||||
|
@ -33760,7 +33826,7 @@
|
|||
}
|
||||
if((skillinfo&&skillinfo.viewAs&&typeof skillinfo.viewAs!='function')||!_status.event.skill){
|
||||
var cardinfo=get.info(get.card());
|
||||
if(cardinfo&&cardinfo.multitarget&&!cardinfo.multiline){
|
||||
if(cardinfo&&(cardinfo.multitarget||cardinfo.complexSelect)&&!cardinfo.multiline){
|
||||
_status.multitarget=true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,18 +1,20 @@
|
|||
window.noname_update={
|
||||
version:'1.9.113.2',
|
||||
update:'1.9.113.1',
|
||||
version:'1.9.113.3',
|
||||
update:'1.9.113.2',
|
||||
changeLog:[
|
||||
'孙翊、OL陈登、OL朱灵、OL界徐晃、范强张达',
|
||||
'界郭皇后、界马岱、赵嫣',
|
||||
'海外服群曹操、霍峻、刘宏、臧霸',
|
||||
'玩点韩龙',
|
||||
'bug修复',
|
||||
],
|
||||
files:[
|
||||
//'card/extra.js',
|
||||
//'card/gujian.js',
|
||||
'card/guozhan.js',
|
||||
//'card/guozhan.js',
|
||||
//'card/gwent.js',
|
||||
//'card/huanlekapai.js',
|
||||
//'card/mtg.js',
|
||||
//'card/sp.js',
|
||||
'card/sp.js',
|
||||
'card/standard.js',
|
||||
//'card/swd.js',
|
||||
//'card/yunchou.js',
|
||||
|
@ -20,9 +22,9 @@ window.noname_update={
|
|||
//'card/yongjian.js',
|
||||
//'card/zhenfa.js',
|
||||
//'card/zhulu.js',
|
||||
//'character/diy.js',
|
||||
'character/diy.js',
|
||||
'character/extra.js',
|
||||
'character/hearth.js',
|
||||
//'character/hearth.js',
|
||||
//'character/gujian.js',
|
||||
//'character/gwent.js',
|
||||
//'character/hearth.js',
|
||||
|
@ -33,17 +35,17 @@ window.noname_update={
|
|||
//'character/ow.js',
|
||||
'character/rank.js',
|
||||
'character/refresh.js',
|
||||
'character/shenhua.js',
|
||||
//'character/shenhua.js',
|
||||
'character/sp.js',
|
||||
'character/sp2.js',
|
||||
'character/standard.js',
|
||||
'character/tw.js',
|
||||
//'character/standard.js',
|
||||
//'character/swd.js',
|
||||
//'character/xianjian.js',
|
||||
//'character/xinghuoliaoyuan.js',
|
||||
//'character/yingbian.js',
|
||||
'character/yingbian.js',
|
||||
'character/yijiang.js',
|
||||
'character/yxs.js',
|
||||
//'character/yxs.js',
|
||||
//'extension/boss/extension.js',
|
||||
//'layout/default/layout.css',
|
||||
//'layout/newlayout/global.css',
|
||||
|
@ -56,8 +58,8 @@ window.noname_update={
|
|||
//'mode/connect.js',
|
||||
//'mode/doudizhu.js',
|
||||
'mode/guozhan.js',
|
||||
//'mode/identity.js',
|
||||
'mode/single.js',
|
||||
'mode/identity.js',
|
||||
//'mode/single.js',
|
||||
//'mode/stone.js',
|
||||
//'mode/tafang.js',
|
||||
//'mode/versus.js',
|
||||
|
|
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 176 KiB |
After Width: | Height: | Size: 136 KiB |
After Width: | Height: | Size: 140 KiB |
After Width: | Height: | Size: 133 KiB |
After Width: | Height: | Size: 155 KiB |
After Width: | Height: | Size: 174 KiB |
After Width: | Height: | Size: 152 KiB |
|
@ -2706,8 +2706,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
var node=this;
|
||||
var player1,player2;
|
||||
if(init){
|
||||
player1=ui.create.player(null,true).init('lvmeng');
|
||||
player2=ui.create.player(null,true).init('guanyu');
|
||||
player1=ui.create.player(null,true);
|
||||
player1.classList.add('fullskin');
|
||||
player1.node.avatar.show();
|
||||
player1.node.avatar.setBackground('lvmeng','character');
|
||||
player2=ui.create.player(null,true)
|
||||
player2.classList.add('fullskin');
|
||||
player2.node.avatar.show();
|
||||
player2.node.avatar.setBackground('guanyu','character');
|
||||
player1.node.marks.remove();
|
||||
player1.node.hp.remove();
|
||||
player2.node.marks.remove();
|
||||
|
@ -2730,32 +2736,30 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
player1=this.player1;
|
||||
player2=this.player2;
|
||||
}
|
||||
var rect1=player1.getBoundingClientRect();
|
||||
var rect2=player2.getBoundingClientRect();
|
||||
var left1=rect1.left+rect1.width/2-ui.arena.offsetLeft;
|
||||
var left2=rect2.left+rect2.width/2-ui.arena.offsetLeft;
|
||||
var top1=rect1.top+rect1.height/2-ui.arena.offsetTop;
|
||||
var top2=rect2.top+rect2.height/2-ui.arena.offsetTop;
|
||||
var func=function(){
|
||||
//game.linexy([left1,top1,left2,top2]);
|
||||
setTimeout(function(){
|
||||
player1.reinit(player1.name,'re_lvmeng');
|
||||
player2.reinit(player2.name,'re_guanyu');
|
||||
//game.linexy([left2,top2,left1,top1],'green');
|
||||
player1.smoothAvatar();
|
||||
player2.smoothAvatar();
|
||||
player1.node.avatar.setBackground('re_lvmeng','character');
|
||||
player2.node.avatar.setBackground('re_guanyu','character');
|
||||
},1500);
|
||||
setTimeout(function(){
|
||||
player1.reinit(player1.name,'sp_lvmeng');
|
||||
player2.reinit(player2.name,'jsp_guanyu');
|
||||
//game.linexy([left1,top1,left2,top2],'thunder');
|
||||
player1.smoothAvatar();
|
||||
player2.smoothAvatar();
|
||||
player1.node.avatar.setBackground('sp_lvmeng','character');
|
||||
player2.node.avatar.setBackground('jsp_guanyu','character');
|
||||
},3000);
|
||||
setTimeout(function(){
|
||||
player1.reinit(player1.name,'shen_lvmeng');
|
||||
player2.reinit(player2.name,'shen_guanyu');
|
||||
//game.linexy([left2,top2,left1,top1],'fire');
|
||||
player1.smoothAvatar();
|
||||
player2.smoothAvatar();
|
||||
player1.node.avatar.setBackground('shen_lvmeng','character');
|
||||
player2.node.avatar.setBackground('shen_guanyu','character');
|
||||
},4500);
|
||||
setTimeout(function(){
|
||||
player1.reinit(player1.name,'lvmeng');
|
||||
player2.reinit(player2.name,'guanyu');
|
||||
player1.smoothAvatar();
|
||||
player2.smoothAvatar();
|
||||
player1.node.avatar.setBackground('lvmeng','character');
|
||||
player2.node.avatar.setBackground('guanyu','character');
|
||||
},6000);
|
||||
};
|
||||
node.showcaseinterval=setInterval(func,6000);
|
||||
|
|
|
@ -7769,7 +7769,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
usable:1,
|
||||
audio:"qice_backup",
|
||||
filter:function(event,player){
|
||||
return player.countCards('h')>0
|
||||
var hs=player.getCards('h');
|
||||
if(!hs.length) return false;
|
||||
for(var i=0;i<hs.length;i++){
|
||||
var mod2=game.checkMod(hs[i],player,'unchanged','cardEnabled2',player);
|
||||
if(mod2===false) return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
group:'gzqice_change',
|
||||
subSkill:{
|
||||
|
|
|
@ -1180,11 +1180,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
_status.tempNoButton=false;
|
||||
},500);
|
||||
var link=this.link;
|
||||
if(game.zhu.name){
|
||||
if(game.zhu){
|
||||
if(link!='random'){
|
||||
_status.event.parent.fixedseat=get.distance(game.me,game.zhu,'absolute');
|
||||
}
|
||||
game.zhu.uninit();
|
||||
if(game.zhu.name) game.zhu.uninit();
|
||||
delete game.zhu.isZhu;
|
||||
delete game.zhu.identityShown;
|
||||
}
|
||||
|
|