v1.9.113.3

This commit is contained in:
Spmario233 2022-04-30 20:32:57 +08:00
parent 1a755b8a83
commit be73e76fdc
43 changed files with 1534 additions and 189 deletions

Binary file not shown.

BIN
audio/die/tw_caocao.mp3 Normal file

Binary file not shown.

BIN
audio/die/tw_liuhong.mp3 Normal file

Binary file not shown.

BIN
audio/skill/redanxin1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/redanxin2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/rejiaozhao1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/rejiaozhao2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/twgezhi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/twgezhi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/twlingfa1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/twlingfa2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/twyujue1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/twyujue2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/twzhian1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/twzhian2.mp3 Normal file

Binary file not shown.

View File

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

View File

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

View File

@ -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:'论外',

View File

@ -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:'荡魔',

View File

@ -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为未选择过选项①的角色将这些牌随机交给这些角色中的等量角色。然后这些角色依次选择一项①对你使用一张【杀】。②交给你一张牌然后你摸一张牌。',

View File

@ -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:'移动版',
}
};

View File

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

View File

@ -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:'当你受到伤害后或当你使用牌指定唯一目标并对其造成伤害后,你可以摸一张牌,然后你将一张牌置于武将牌上,称为“权”;你的手牌上限+XX为“权”的数量。',
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',
},
};
});

View File

@ -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":"凌人",

View File

@ -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&&current.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&&current.countGainableCards(player,'h')>0;
}).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(target.hasSkill('tuntian')) return att/10;
return 1-att;
});
'step 1'
if(result.bool){
var targets=result.targets;
player.logSkill('recuorui',targets);
targets.sortBySeat();
player.gainMultiple(targets);
}
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:"逐鹿中原",

View File

@ -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:{

View File

@ -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)&&current.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)&&current.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&&current.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&&current.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&&current.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&&current.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)&&current.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张牌。⒉令此牌的伤害值基数+XX为其手牌中的红色牌数。';
@ -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:'英文版',
}

View File

@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterSort:{
yijiang:{
yijiang_2011:['caozhi','yujin','zhangchunhua','xin_fazheng','xin_masu','xin_xushu','xusheng','lingtong','wuguotai','chengong','gaoshun'],
yijiang_2012:['old_wangyi','xunyou','zhonghui','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:'刘封',

View File

@ -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:'一名角色使用普通锦囊牌指定第一个目标时,若其手牌数为全场唯一最多,则你可以为此牌增加一个额外目标。',

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

BIN
image/character/zhaoyan.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

View File

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

View File

@ -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:{

View File

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