kano
This commit is contained in:
parent
c44fd358cf
commit
6da54d23fc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -17,10 +17,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
forceDie:true,
|
||||
onLose:function(){
|
||||
player.unmarkSkill('muniu_skill');
|
||||
delete player.getStat('skill').muniu_skill;
|
||||
if(!card||!card.cards||!card.cards.length) return;
|
||||
if((event.getParent(2)&&event.getParent(2).name!='swapEquip')&&(event.parent.type!='equip'||event.parent.swapEquip)){
|
||||
if((!event.getParent(2)||event.getParent(2).name!='swapEquip')&&(event.getParent().type!='equip'||event.getParent().swapEquip)){
|
||||
player.lose(card.cards,ui.discardPile);
|
||||
player.$throw(card.cards,1000);
|
||||
player.popup('muniu');
|
||||
|
|
|
@ -795,7 +795,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
zhujinqiyuan:'逐近弃远',
|
||||
zhujinqiyuan_info:'出牌阶段,对一名有牌的其他角色使用。若你与其距离的大于1,你弃置其区域内的一张牌;若你与其的距离等于1,你获得其区域内的一张牌。',
|
||||
dongzhuxianji:'洞烛先机',
|
||||
dongzhuxianji_info:'出牌阶段,对包含你在内的一名角色使用。你观看牌堆顶的两张牌并将其以任意顺序置于牌堆顶或牌堆底,然后摸两张牌。',
|
||||
dongzhuxianji_info:'出牌阶段,对包含你在内的一名角色使用。目标角色卜算2,然后摸两张牌。',
|
||||
chuqibuyi:'出其不意',
|
||||
chuqibuyi_info:'出牌阶段,对一名有手牌的其他角色使用。你展示其一张手牌,若此牌与【出其不意】的花色不同,则你对其造成1点伤害。',
|
||||
wuxinghelingshan:'五行鹤翎扇',
|
||||
|
|
209
character/diy.js
209
character/diy.js
|
@ -71,6 +71,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
key_asara:['female','key',3,['asara_shelu','asara_yingwei']],
|
||||
key_kotomi:['female','key',3,['kotomi_qinji','kotomi_chuanxiang']],
|
||||
key_mia:['female','key',3,['mia_shihui','mia_qianmeng']],
|
||||
key_kano:['female','key',3,['kano_liezhen','kano_poyu']],
|
||||
|
||||
key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']],
|
||||
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
|
||||
|
@ -196,7 +197,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
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_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"],
|
||||
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"],
|
||||
diy_trashbin:['old_jiakui','ol_guohuai','junk_zhangrang','junk_simayi'],
|
||||
},
|
||||
},
|
||||
|
@ -204,7 +205,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
noname:'无名杀的吉祥物。<br>画师:空城<br>技能设计:李木子',
|
||||
ns_zhangwei:'血骑教习·张葳,三国杀集换式卡牌游戏《阵面对决》中的帝畿系列卡牌。游卡桌游官方原创的三国时期女性角色。',
|
||||
diy_feishi:'字公举,生卒年不详,益州犍为郡南安县(今四川省乐山市)人。刘璋占据益州时,以费诗为绵竹县县令。刘备进攻刘璋夺取益州,费诗举城而降,后受拜督军从事,转任牂牁郡太守,再为州前部司马。',
|
||||
//diy_liuyan:'字元海,新兴(今山西忻州北)人,匈奴族,匈奴首领冒顿单于之后,南匈奴单于于夫罗之孙,左贤王刘豹之子,母呼延氏,十六国时期前赵政权开国皇帝,304年-310年在位。',
|
||||
diy_lukang:'字幼节,吴郡吴县(今江苏苏州)人。三国时期吴国名将,丞相陆逊次子。',
|
||||
diy_liufu:'字元颖,沛国相县(今安徽濉溪县西北)人。东汉末年名守。在汉末避难于淮南,说服袁术将戚寄和秦翊率部投奔曹操,曹操大悦,使司徒辟其为掾属。',
|
||||
diy_xizhenxihong:'习珍,襄阳人。三国时蜀汉将领。先主刘备时曾任零陵北部都尉,加裨将军。建安二十四年,关羽率荆州大军攻打樊城,唯有习珍据城不降。被困月余,直到箭尽粮绝,拔剑自刎而死。习宏,生卒年不详,习珍之弟。曾在东吴入侵蜀汉时建议哥哥习珍伪降,约樊胄举兵。习珍死后,弟弟习宏落在东吴,有问必不答,终身不为孙权发一言。',
|
||||
|
@ -218,7 +218,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
yanghu:'羊祜(221年-278年12月27日),字叔子,泰山郡南城县人。西晋时期杰出的战略家、政治家、文学家,曹魏上党太守羊衜的儿子,名儒蔡邕的女儿蔡文姬的外甥。出身“泰山羊氏”,博学能文,清廉正直。曹魏时期,接受公车征辟,出任中书郎,迁给事黄门侍郎。姐姐嫁给大将军司马师,投靠司马氏家族,仕途平步青云。魏元帝曹奂即位,出任秘书监、相国从事中郎、中领军,统领御林军,兼管内外政事,册封钜平县子,迁。西晋建立后,迁中军将军、散骑常侍、郎中令,册封钜平侯。泰始五年(269年),出任车骑将军、荆州都督,加任开府仪同三司坐镇襄阳,屯田兴学,以德怀柔,深得军民之心;扩充军备,训练士兵,全力准备灭亡孙吴,累迁征南大将军,册封南城侯。咸宁四年,去世,临终前举荐杜预接任职务,获赠侍中、太傅,谥号为“成”。唐宋时期,配享武庙。',
|
||||
},
|
||||
characterTitle:{
|
||||
key_kotomi:'#bLoopers',
|
||||
key_kano:'#bAIR',
|
||||
key_mia:'#bLoopers',
|
||||
key_kotomi:'#gClannad',
|
||||
key_asara:'#bRewrite',
|
||||
key_yukito:'#bAIR',
|
||||
|
@ -333,6 +334,51 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ns_liuzhang:'#r矮子剑薄荷糖',
|
||||
},
|
||||
card:{
|
||||
kano_paibingbuzhen:{
|
||||
fullskin:true,
|
||||
type:'trick',
|
||||
enable:true,
|
||||
filterTarget:true,
|
||||
selectTarget:[1,3],
|
||||
content:function(){
|
||||
'step 0'
|
||||
target.draw();
|
||||
'step 1'
|
||||
var hs=target.getCards('he');
|
||||
if(!hs.length) event.finish();
|
||||
else if(hs.length==1) event._result={bool:true,cards:hs};
|
||||
else target.chooseCard('he',true,'选择一张牌置入仁库');
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
var card=result.cards[0];
|
||||
target.$throw(card,1000);
|
||||
target.lose(card,'toRenku');
|
||||
}
|
||||
},
|
||||
contentAfter:function(){
|
||||
if(player.isIn()&&_status.renku.length&&function(){
|
||||
var cards=_status.renku;
|
||||
if(cards.length==1) return true;
|
||||
var color=get.color(cards[0],false),type=get.type(cards[0],false);
|
||||
for(var i=1;i<cards.length;i++){
|
||||
if(color&&get.color(cards[i],false)!=color) color=false;
|
||||
if(type&&get.type(cards[i],false)!=type) type=false;
|
||||
if(!color&&!type) return false;
|
||||
}
|
||||
return true;
|
||||
}()) player.draw();
|
||||
},
|
||||
ai:{
|
||||
order:1,
|
||||
result:{
|
||||
player:function(player,target){
|
||||
if(player.hasSkill('kano_poyu')) return 2;
|
||||
return 0;
|
||||
},
|
||||
target:0.1,
|
||||
},
|
||||
},
|
||||
},
|
||||
kamome_suitcase:{
|
||||
fullskin:true,
|
||||
type:'equip',
|
||||
|
@ -459,6 +505,91 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
key_lucia:['key_shizuru'],
|
||||
},
|
||||
skill:{
|
||||
kano_liezhen:{
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
filter:function(event,player){
|
||||
return player.getHistory('useCard').length>0;
|
||||
},
|
||||
direct:true,
|
||||
frequent:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var history=player.getHistory('useCard');
|
||||
if(history.length>1){
|
||||
var type=get.type2(history[0].card,false);
|
||||
for(var i=1;i<history.length;i++){
|
||||
if(get.type2(history[i].card,false)!=type){
|
||||
player.chooseButton(['列阵:是否视为使用其中一种牌?',[['kano_paibingbuzhen'].concat(get.zhinangs()),'vcard']]).set('filterButton',function(button){
|
||||
return _status.event.player.hasUseTarget({name:button.link[2],isCard:true});
|
||||
}).set('ai',function(button){
|
||||
return _status.event.player.getUseValue({name:button.link[2],isCard:true});
|
||||
});
|
||||
event.goto(2);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
var str=_status.renku.length?'获得仁库中的所有牌':'摸两张牌';
|
||||
player.chooseBool(get.prompt('kano_liezhen'),str).set('frequentSkill','kano_liezhen');
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('kano_liezhen');
|
||||
if(_status.renku.length){
|
||||
player.gain(_status.renku,'gain2','fromRenku');
|
||||
_status.renku.length=0;
|
||||
game.updateRenku();
|
||||
}
|
||||
else player.draw(2);
|
||||
}
|
||||
event.finish();
|
||||
'step 2'
|
||||
if(result.bool) player.chooseUseTarget(result.links[0][2],true).logSkill='kano_liezhen';
|
||||
},
|
||||
init:function(player){
|
||||
player.storage.renku=true;
|
||||
},
|
||||
},
|
||||
kano_poyu:{
|
||||
trigger:{target:'useCardToTargeted'},
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
return _status.renku.length>0&&(event.card.name=='sha'||get.type(event.card)=='trick'&&get.tag(event.card,'damage')>0);
|
||||
},
|
||||
check:function(trigger,player){
|
||||
return get.effect(player,trigger.card,trigger.player,player)<0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.judge();
|
||||
'step 1'
|
||||
var bool=false,type=get.type2(result.card.name);
|
||||
for(var i of _status.renku){
|
||||
if(get.suit(i)==result.suit||get.type2(i)==type){
|
||||
bool=true;break;
|
||||
}
|
||||
}
|
||||
if(bool){
|
||||
player.chooseButton(['是否移去一张牌,令'+get.translation(trigger.card)+'对你无效?',_status.renku]).set('types',[result.suit,type]).set('filterButton',function(button){
|
||||
var types=_status.event.types;
|
||||
return get.suit(button.link,false)==types[0]||get.type2(button.link,false)==types[1];
|
||||
}).set('ai',()=>1);
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
var card=result.links[0];
|
||||
player.$throw(card,1000);
|
||||
_status.renku.remove(card);
|
||||
game.cardsDiscard(card).fromRenku=true;
|
||||
game.log(player,'将',card,'置入了弃牌堆');
|
||||
trigger.excluded.add(player);
|
||||
game.updateRenku();
|
||||
}
|
||||
},
|
||||
init:function(player){
|
||||
player.storage.renku=true;
|
||||
},
|
||||
},
|
||||
mia_shihui:{
|
||||
trigger:{player:'phaseDrawBegin1'},
|
||||
forced:true,
|
||||
|
@ -2998,6 +3129,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(name=='damageBegin3') return true;
|
||||
return player!=event.player;
|
||||
},
|
||||
locked:function(skill,player){
|
||||
if(!player||!player.storage.shiroha_jiezhao) return true;
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var num=event.triggername=='damageBegin3'?-1:1;
|
||||
|
@ -3732,14 +3867,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
abyusa_jueqing:{
|
||||
audio:2,
|
||||
trigger:{source:'damageBegin2'},
|
||||
skillAnimation:true,
|
||||
animationColor:'metal',
|
||||
animationColor:'water',
|
||||
filter:function(event,player){
|
||||
return player!=event.player&&!player.hasSkill('abyusa_jueqing_1st');
|
||||
return player!=event.player&&!player.storage.abyusa_jueqing_rewrite;
|
||||
},
|
||||
prompt2:function(event,player){
|
||||
return '令即将对其造成的伤害+'+event.num+',并令自己失去'+get.cnNumber(event.num)+'点体力';
|
||||
var num=get.cnNumber(2*event.num,true);
|
||||
return '令即将对其造成的伤害翻倍至'+num+'点,并令自己失去'+get.cnNumber(event.num)+'点体力';
|
||||
},
|
||||
check:function(event,player){
|
||||
return player.hp>event.num&&event.player.hp>event.num&&!event.player.hasSkillTag('filterDamage',null,{
|
||||
|
@ -3747,35 +3884,39 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
card:event.card,
|
||||
})&&get.attitude(player,event.player)<0;
|
||||
},
|
||||
locked:function(skill,player){
|
||||
return player&&player.storage.abyusa_jueqing_rewrite;
|
||||
},
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
player.loseHp(trigger.num);
|
||||
trigger.num*=2;
|
||||
var next=game.createEvent('abyusa_jueqing_add',false);
|
||||
event.next.remove(next);
|
||||
trigger.after.push(next);
|
||||
next.player=player;
|
||||
next.setContent(function(){
|
||||
player.addSkill('abyusa_jueqing_1st');
|
||||
});
|
||||
player.storage.abyusa_jueqing_rewrite=true;
|
||||
},
|
||||
derivation:'abyusa_jueqing_rewrite',
|
||||
},
|
||||
abyusa_jueqing_1st:{
|
||||
trigger:{source:'damageBefore'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
return player.hasSkill('abyusa_jueqing');
|
||||
group:'abyusa_jueqing_rewrite',
|
||||
subSkill:{
|
||||
rewrite:{
|
||||
trigger:{source:'damageBefore'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
audio:'abyusa_jueqing',
|
||||
filter:function(event,player){
|
||||
return player.storage.abyusa_jueqing_rewrite==true;
|
||||
},
|
||||
check:function(){return false;},
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
trigger.player.loseHp(trigger.num);
|
||||
},
|
||||
ai:{
|
||||
jueqing:true,
|
||||
skillTagFilter:function(player){
|
||||
return player.storage.abyusa_jueqing_rewrite==true;
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
check:function(){return false;},
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
trigger.player.loseHp(trigger.num);
|
||||
},
|
||||
ai:{
|
||||
jueqing:true
|
||||
}
|
||||
},
|
||||
akiko_dongcha:{
|
||||
trigger:{global:'gameDrawAfter'},
|
||||
|
@ -9640,6 +9781,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var target=(name=='damageSource'?event.source:event.player);
|
||||
return target&&target!=player&&get.distance(player,target)<=1&&target.countCards('hej')>0;
|
||||
},
|
||||
locked:function(skill,player){
|
||||
return player&&player.storage.nsfuwei;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var target=(event.triggername=='damageSource'?trigger.source:trigger.player);
|
||||
|
@ -14858,7 +15002,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return '与你距离1以内的其他角色造成或受到伤害后,你可以将其区域内的一张牌置于你的武将牌上(称为“威”)。你使用【杀】的次数上限+X(X为“威”数)。';
|
||||
},
|
||||
abyusa_jueqing:function(player){
|
||||
if(player.hasSkill('abyusa_jueqing_1st')) return '锁定技,你即将造成的伤害均视为失去体力。';
|
||||
if(player.storage.abyusa_jueqing_rewrite) return '锁定技,你即将造成的伤害均视为失去体力。';
|
||||
return '当你对其他角色造成伤害时,你可以令此伤害值+X。若如此做,你失去X点体力,并于此伤害结算完成后修改〖绝情〗(X为伤害值)。';
|
||||
},
|
||||
tomoya_shangxian:function(player){
|
||||
|
@ -15042,6 +15186,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
key_asara:'井上晶',
|
||||
key_kotomi:'一之濑琴美',
|
||||
key_mia:'藤川米娅',
|
||||
key_kano:'雾岛佳乃',
|
||||
lucia_duqu:'毒躯',
|
||||
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
|
||||
lucia_zhenren:'振刃',
|
||||
|
@ -15385,6 +15530,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
mia_qianmeng_info:'使命技。①游戏开始时,你摸一张牌,然后将一张牌置于牌堆的正中央。②使命:当有角色获得“潜梦”牌时,其将此牌交给你。你将体力值回复至上限,失去〖时迴〗并获得〖风发〗。③失败:当你死亡时,你可令一名角色获得牌堆中所有与“潜梦”牌点数相同的牌。',
|
||||
mia_fengfa:'风发',
|
||||
mia_fengfa_info:'锁定技。摸牌阶段,你多摸X张牌(X为你上回合使用过的牌数)。',
|
||||
kano_liezhen:'列阵',
|
||||
kano_liezhen_info:'结束阶段,若你本回合内使用过牌且这些牌的类型:不均相同,你可视为使用【排兵布阵】或智囊;均相同,你获得仁库中的所有牌(没有则改为摸两张牌)。',
|
||||
kano_paibingbuzhen:'排兵布阵',
|
||||
kano_paibingbuzhen_info:'出牌阶段,对至多三名角色使用。目标角色摸一张牌,然后将一张牌置入仁库。若仁库中的牌类型或颜色均相同,则你摸一张牌。',
|
||||
kano_poyu:'破羽',
|
||||
kano_poyu_info:'当你成为【杀】或伤害性锦囊牌的目标后,若仁库中有牌,你可判定。然后你可从仁库中移去一张与此牌类型或花色相同的牌,令此牌对你无效。',
|
||||
|
||||
key_kud:'库特莉亚芙卡',
|
||||
kud_qiaoshou:'巧手',
|
||||
|
|
|
@ -2175,7 +2175,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
player.removeMark('renjie',1);
|
||||
player.addTempSkill('wansha');
|
||||
player.addTempSkill('rewansha');
|
||||
}
|
||||
},
|
||||
jilue_zhiheng:{
|
||||
|
|
|
@ -91,7 +91,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
hs_kazhakusi:['male','shu',3,['lianjin']],
|
||||
// hs_lazi:['male','wei',3,[]],
|
||||
hs_shaku:['male','wei',3,['shouji']],
|
||||
hs_laxiao:['male','shu',3,['guimou','yingxi','longyi']],
|
||||
hs_laxiao:['male','shu',3,['guimou','yingxi','hlongyi']],
|
||||
// hs_xiangyaqishi:['male','wei',3,[]],
|
||||
// hs_fenjie:['male','shu',3,['guimou','yingxi']],
|
||||
hs_mojinbaozi:['male','wei',3,['jingcu','shengzhang']],
|
||||
|
@ -2945,7 +2945,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
},
|
||||
longyi:{
|
||||
hlongyi:{
|
||||
mod:{
|
||||
ignoredHandcard:function(card,player){
|
||||
if(get.color(card)=='black'){
|
||||
|
@ -9792,8 +9792,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
moxie_info:'锁定技,你失去毒时不流失体力;你使用毒时摸两张牌;结束阶段,你将一张随机手牌转化为毒',
|
||||
gfuhun:'附魂',
|
||||
gfuhun_info:'结束阶段,若你未翻面,你可以和一名其他角色拼点,若你赢,你将武将牌翻至背面,该角色进入混乱状态直到下一回合结束',
|
||||
longyi:'龙裔',
|
||||
longyi_info:'锁定技,你的黑色牌不占用手牌上限',
|
||||
hlongyi:'龙裔',
|
||||
hlongyi_info:'锁定技,你的黑色牌不占用手牌上限',
|
||||
zhongji:'重击',
|
||||
zhongji_info:'每当你即将造成伤害,可弃置一张黑色手牌令伤害+1',
|
||||
fuwen:'符文',
|
||||
|
|
|
@ -599,7 +599,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var color=get.color(cards[0],player),type=get.type(cards[0],player);
|
||||
for(var i=1;i<cards.length;i++){
|
||||
if(color&&get.color(cards[i],player)!=color) color=false;
|
||||
if(type&&get.type(cards[i],player)!=type) color=false;
|
||||
if(type&&get.type(cards[i],player)!=type) type=false;
|
||||
if(!color&&!type) return false;
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -1388,6 +1388,8 @@ window.noname_character_rank={
|
|||
'ol_huaxin',
|
||||
'longyufei',
|
||||
're_guyong',
|
||||
're_panshu',
|
||||
'key_kano',
|
||||
'key_haruko',
|
||||
'key_akiko',
|
||||
'key_sunohara',
|
||||
|
|
|
@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong",'re_gongsunzan'],
|
||||
refresh_feng:['caoren','ol_xiahouyuan','re_huangzhong','ol_weiyan','ol_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'],
|
||||
refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"],
|
||||
refresh_lin:['re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo','ol_zhurong'],
|
||||
refresh_lin:['re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo','ol_zhurong','re_jiaxu'],
|
||||
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','wangyi','guanzhang','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_bulianshi','xin_liubiao'],
|
||||
|
@ -18,6 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
connect:true,
|
||||
character:{
|
||||
re_jiaxu:['male','qun',3,['rewansha','reluanwu','reweimu'],['unseen']],
|
||||
re_guyong:['male','wu',3,['reshenxing','rebingyi']],
|
||||
xin_zhonghui:['male','wei',4,['xinquanji','xinzili']],
|
||||
re_caifuren:['female','qun',3,['reqieting','rexianzhou']],
|
||||
|
@ -137,6 +138,152 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_xushu:['zhaoyun','sp_zhugeliang'],
|
||||
},
|
||||
skill:{
|
||||
//贾诩
|
||||
rewansha:{
|
||||
audio:'wansha',
|
||||
audioname:['re_jiaxu','shen_simayi','boss_lvbu2'],
|
||||
global:'rewansha_global',
|
||||
trigger:{global:'dyingBegin'},
|
||||
forced:true,
|
||||
logTarget:'player',
|
||||
filter:function(event,player){
|
||||
return player==_status.currentPhase;
|
||||
},
|
||||
content:function(){
|
||||
game.countPlayer(function(current){
|
||||
if(current!=player&¤t!=trigger.player) current.addSkillBlocker('rewansha_fengyin');
|
||||
});
|
||||
player.addTempSkill('rewansha_clear');
|
||||
},
|
||||
subSkill:{
|
||||
global:{
|
||||
mod:{
|
||||
cardEnabled:function(card,player){
|
||||
var source=_status.currentPhase;
|
||||
if(card.name=='tao'&&source&&source!=player&&source.hasSkill('rewansha')) return false;
|
||||
},
|
||||
cardSavable:function(card,player){
|
||||
var source=_status.currentPhase;
|
||||
if(card.name=='tao'&&source&&source!=player&&source.hasSkill('rewansha')) return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
fengyin:{
|
||||
inherit:'fengyin',
|
||||
},
|
||||
clear:{
|
||||
trigger:{global:'dyingAfter'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
return !_status.dying.length;
|
||||
},
|
||||
content:function(){
|
||||
player.removeSkill('rewansha_clear');
|
||||
},
|
||||
onremove:function(){
|
||||
game.countPlayer2(function(current){
|
||||
current.removeSkillBlocker('rewansha_fengyin');
|
||||
});
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
reluanwu:{
|
||||
audio:2,
|
||||
unique:true,
|
||||
enable:'phaseUse',
|
||||
limited:true,
|
||||
skillAnimation:'epic',
|
||||
animationColor:'thunder',
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player;
|
||||
},
|
||||
selectTarget:-1,
|
||||
multitarget:true,
|
||||
multiline:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.awakenSkill('reluanwu');
|
||||
event.current=player.next;
|
||||
event.currented=[];
|
||||
event.num1=0;
|
||||
event.num2=0;
|
||||
"step 1"
|
||||
event.currented.push(event.current);
|
||||
event.current.animate('target');
|
||||
event.current.chooseToUse('乱武:使用一张杀或流失一点体力',{name:'sha'},function(card,player,target){
|
||||
if(player==target) return false;
|
||||
if(!player.canUse('sha',target)) return false;
|
||||
if(get.distance(player,target)<=1) return true;
|
||||
if(game.hasPlayer(function(current){
|
||||
return current!=player&&get.distance(player,current)<get.distance(player,target);
|
||||
})){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
"step 2"
|
||||
if(result.bool==false){
|
||||
event.num1++;
|
||||
event.current.loseHp();
|
||||
}
|
||||
else event.num2++;
|
||||
event.current=event.current.next;
|
||||
if(event.current!=player&&!event.currented.contains(event.current)){
|
||||
game.delay(0.5);
|
||||
event.goto(1);
|
||||
}
|
||||
else player.draw(Math.max(event.num1,event.num2));
|
||||
},
|
||||
ai:{
|
||||
order:1,
|
||||
result:{
|
||||
player:function(player){
|
||||
if(lib.config.mode=='identity'&&game.zhu.isZhu&&player.identity=='fan'){
|
||||
if(game.zhu.hp==1&&game.zhu.countCards('h')<=2) return 1;
|
||||
}
|
||||
var num=0;
|
||||
var players=game.filterPlayer();
|
||||
for(var i=0;i<players.length;i++){
|
||||
var att=get.attitude(player,players[i]);
|
||||
if(att>0) att=1;
|
||||
if(att<0) att=-1;
|
||||
if(players[i]!=player&&players[i].hp<=3){
|
||||
if(players[i].countCards('h')==0) num+=att/players[i].hp;
|
||||
else if(players[i].countCards('h')==1) num+=att/2/players[i].hp;
|
||||
else if(players[i].countCards('h')==2) num+=att/4/players[i].hp;
|
||||
}
|
||||
if(players[i].hp==1) num+=att*1.5;
|
||||
}
|
||||
if(player.hp==1){
|
||||
return -num;
|
||||
}
|
||||
if(player.hp==2){
|
||||
return -game.players.length/4-num;
|
||||
}
|
||||
return -game.players.length/3-num;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
reweimu:{
|
||||
audio:2,
|
||||
mod:{
|
||||
targetEnabled:function(card){
|
||||
if(get.type2(card)=='trick'&&get.color(card)=='black') return false;
|
||||
},
|
||||
},
|
||||
trigger:{player:'damageBegin2'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return player==_status.currentPhase;
|
||||
},
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
},
|
||||
},
|
||||
//顾雍
|
||||
reshenxing:{
|
||||
audio:2,
|
||||
|
@ -5719,66 +5866,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
reguhuo_backup:{},
|
||||
reguhuo_phase:{},
|
||||
rechanyuan:{
|
||||
//charlotte:true,
|
||||
firstDo:true,
|
||||
trigger:{
|
||||
player:["phaseBefore","changeHp"],
|
||||
init:function(player,skill){
|
||||
player.addSkillBlocker(skill);
|
||||
},
|
||||
priority:99,
|
||||
firstDo:true,
|
||||
forced:true,
|
||||
popup:false,
|
||||
unique:true,
|
||||
content:function (){
|
||||
if(player.hp<=1){
|
||||
var skills=player.getSkills(true,false);
|
||||
for(var i=0;i<skills.length;i++){
|
||||
var info=get.info(skills[i]);
|
||||
if(skills[i]=='chanyuan'||skills[i]=='rechanyuan'||info.charlotte){
|
||||
skills.splice(i--,1);
|
||||
}
|
||||
}
|
||||
player.disableSkill('rechanyuan',skills);
|
||||
}
|
||||
else player.enableSkill('rechanyuan');
|
||||
onremove:function(player,skill){
|
||||
player.removeSkillBlocker(skill);
|
||||
},
|
||||
charlotte:true,
|
||||
locked:true,
|
||||
skillBlocker:function(skill,player){
|
||||
return skill!='chanyuan'&&skill!='rechanyuan'&&!lib.skill[skill].charlotte&&player.hp<=1;
|
||||
},
|
||||
mark:true,
|
||||
intro:{
|
||||
content:function (storage,player,skill){
|
||||
var str='<li>锁定技,你不能质疑于吉,只要你的体力值不大于1,你的其他技能便全部失效。';
|
||||
var list=[];
|
||||
for(var i in player.disabledSkills){
|
||||
if(player.disabledSkills[i].contains(skill)){
|
||||
list.push(i)
|
||||
}
|
||||
}
|
||||
if(list.length){
|
||||
str+='<br><li>失效技能:';
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(lib.translate[list[i]+'_info']){
|
||||
str+=get.translation(list[i])+'、';
|
||||
}
|
||||
}
|
||||
return str.slice(0,str.length-1);
|
||||
}else return str;
|
||||
},
|
||||
},
|
||||
init:function (player,skill){
|
||||
if(player.hp<=1){
|
||||
var skills=player.getSkills(true,false);
|
||||
for(var i=0;i<skills.length;i++){
|
||||
var info=get.info(skills[i]);
|
||||
if(skills[i]=='chanyuan'||skills[i]=='rechanyuan'||info.charlotte){
|
||||
skills.splice(i--,1);
|
||||
}
|
||||
}
|
||||
player.disableSkill(skill,skills);
|
||||
content:function(storage,player,skill){
|
||||
var str='<li>锁定技,你不能于〖蛊惑〗的结算流程中进行质疑。当你的体力值不大于1时,你的其他技能失效。';
|
||||
var list=player.getSkills(null,null,false).filter(function(i){
|
||||
return lib.skill.rechanyuan.skillBlocker(i,player);
|
||||
});
|
||||
if(list.length) str+=('<br><li>失效技能:'+get.translation(list))
|
||||
return str;
|
||||
}
|
||||
},
|
||||
onremove:function (player,skill){
|
||||
player.enableSkill(skill);
|
||||
},
|
||||
locked:true,
|
||||
}
|
||||
},
|
||||
botu:{
|
||||
audio:2,
|
||||
|
@ -6531,6 +6640,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(get.suit(card)=='diamond'&&card.name=='sha') return true;
|
||||
},
|
||||
},
|
||||
locked:false,
|
||||
audio:"wusheng",
|
||||
audioname:['re_guanyu','guanzhang','jsp_guanyu','guansuo'],
|
||||
enable:["chooseToRespond","chooseToUse"],
|
||||
|
@ -7142,7 +7252,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var next=player.judge(function(card){
|
||||
if(get.color(card)=='black') return 1.5;
|
||||
return -1.5;
|
||||
}).judge2=function(result){
|
||||
});
|
||||
next.judge2=function(result){
|
||||
return result.bool;
|
||||
};
|
||||
if(get.mode()!='guozhan'&&!player.hasSkillTag('rejudge')) next.set('callback',function(){
|
||||
|
@ -9768,7 +9879,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
reguhuo_guess:"蛊惑",
|
||||
reguhuo_guess_info:"",
|
||||
rechanyuan:"缠怨",
|
||||
rechanyuan_info:"锁定技,你不能质疑于吉,只要你的体力值不大于1,你失去你的武将技能。",
|
||||
rechanyuan_info:"锁定技,你不能于〖蛊惑〗的结算流程中进行质疑。当你的体力值不大于1时,你的其他技能失效。",
|
||||
reguhuo_sha:"蛊惑",
|
||||
reguhuo_shan:"蛊惑",
|
||||
reguhuo_wuxie:"蛊惑",
|
||||
|
@ -10045,9 +10156,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xinpaiyi_info:'出牌阶段每项各限一次,你可移去一张“权”并选择一项:①令一名角色摸X张牌。②对至多X名角色各造成1点伤害。(X为“权”数)',
|
||||
re_guyong:'界顾雍',
|
||||
reshenxing:'慎行',
|
||||
reshenxing_info:'出牌阶段,你可以(X为你本阶段内发动过〖慎行〗的次数),然后摸一张牌。若这两张牌颜色不同,则改为摸两张牌。',
|
||||
reshenxing_info:'出牌阶段,你可以弃置X张牌(X为你本阶段内发动过〖慎行〗的次数),然后摸一张牌。若这两张牌颜色不同,则改为摸两张牌。',
|
||||
rebingyi:'秉壹',
|
||||
rebingyi_info:'结束阶段,你可展示所有手牌。若这些牌:颜色均相同,则你可以令至多X名角色各摸一张牌(X为你的手牌数);点数均相同,则你摸一张牌。',
|
||||
re_jiaxu:'界贾诩',
|
||||
rewansha:'完杀',
|
||||
rewansha_info:'锁定技。①你的回合内,不处于濒死状态的角色不能使用【桃】。②当有角色于你的回合内进入濒死状态时,你令所有其他角色的非锁定技失效直到此濒死状态结算结束。',
|
||||
reluanwu:'乱武',
|
||||
reluanwu_info:'限定技,出牌阶段,你可令所有其他角色依次选择一项:①对距离最近(或之一)的角色使用一张【杀】;②失去1点体力。然后你摸X张牌(X为选择①和②的角色数中的最大值)。',
|
||||
reweimu:'帷幕',
|
||||
reweimu_info:'锁定技。①你不能成为黑色锦囊牌的目标。②当你于回合内受到伤害时,防止此伤害。',
|
||||
|
||||
refresh_standard:'界限突破·标',
|
||||
refresh_feng:'界限突破·风',
|
||||
|
|
|
@ -7117,65 +7117,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
chanyuan:{
|
||||
//charlotte:true,
|
||||
firstDo:true,
|
||||
trigger:{
|
||||
player:["phaseBefore","changeHp"],
|
||||
init:function(player,skill){
|
||||
player.addSkillBlocker(skill);
|
||||
},
|
||||
priority:99,
|
||||
forced:true,
|
||||
popup:false,
|
||||
unique:true,
|
||||
content:function(){
|
||||
if(player.hp==1){
|
||||
var skills=player.getSkills(true,false);
|
||||
for(var i=0;i<skills.length;i++){
|
||||
var info=get.info(skills[i]);
|
||||
if(skills[i]=='chanyuan'||skills[i]=='rechanyuan'||info.charlotte){
|
||||
skills.splice(i--,1);
|
||||
}
|
||||
}
|
||||
player.disableSkill('chanyuan',skills);
|
||||
}
|
||||
else player.enableSkill('chanyuan');
|
||||
onremove:function(player,skill){
|
||||
player.removeSkillBlocker(skill);
|
||||
},
|
||||
charlotte:true,
|
||||
locked:true,
|
||||
skillBlocker:function(skill,player){
|
||||
return skill!='chanyuan'&&skill!='rechanyuan'&&!lib.skill[skill].charlotte&&player.hp<=1;
|
||||
},
|
||||
mark:true,
|
||||
intro:{
|
||||
content:function(storage,player,skill){
|
||||
var str='<li>锁定技,你不能质疑于吉,只要你的体力值为1,你的其他技能便全部失效。';
|
||||
var list=[];
|
||||
for(var i in player.disabledSkills){
|
||||
if(player.disabledSkills[i].contains(skill)){
|
||||
list.push(i)
|
||||
}
|
||||
}
|
||||
if(list.length){
|
||||
str+='<br><li>失效技能:';
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(lib.translate[list[i]+'_info']){
|
||||
str+=get.translation(list[i])+'、';
|
||||
}
|
||||
}
|
||||
return str.slice(0,str.length-1);
|
||||
}else return str;
|
||||
},
|
||||
},
|
||||
init:function(player,skill){
|
||||
if(player.hp==1){
|
||||
var skills=player.getSkills(true,false);
|
||||
for(var i=0;i<skills.length;i++){
|
||||
var info=get.info(skills[i]);
|
||||
if(skills[i]=='chanyuan'||skills[i]=='rechanyuan'||info.charlotte){
|
||||
skills.splice(i--,1);
|
||||
}
|
||||
}
|
||||
player.disableSkill(skill,skills);
|
||||
var list=player.getSkills(null,null,false).filter(function(i){
|
||||
return lib.skill.rechanyuan.skillBlocker(i,player);
|
||||
});
|
||||
if(list.length) str+=('<br><li>失效技能:'+get.translation(list))
|
||||
return str;
|
||||
}
|
||||
},
|
||||
onremove:function(player,skill){
|
||||
player.enableSkill(skill);
|
||||
},
|
||||
locked:true,
|
||||
}
|
||||
},
|
||||
"guhuo_respond":{
|
||||
trigger:{
|
||||
|
@ -7359,7 +7322,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
menghuo:['re_menghuo','menghuo'],
|
||||
zhurong:['re_zhurong','ol_zhurong','zhurong'],
|
||||
sunjian:['ol_sunjian','re_sunjian','sunjian'],
|
||||
jiaxu:['jiaxu','ns_jiaxu'],
|
||||
jiaxu:['re_jiaxu','jiaxu','ns_jiaxu'],
|
||||
dongzhuo:['ol_dongzhuo','sp_dongzhuo','re_dongzhuo','dongzhuo'],
|
||||
dengai:['re_dengai','ol_dengai','dengai'],
|
||||
sp_zhanghe:['sp_zhanghe','yj_zhanghe'],
|
||||
|
|
|
@ -5887,7 +5887,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
enable:'phaseUse',
|
||||
filterTarget:function(card,player,target){
|
||||
if(target==player) return false;
|
||||
var stat=player.getStat().fuman_targets;
|
||||
var stat=player.getStat('skill').fuman_targets;
|
||||
return !stat||!stat.contains(target);
|
||||
},
|
||||
filter:function(event,player){
|
||||
|
@ -10236,6 +10236,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
kunfen:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
locked:function(skill,player){
|
||||
if(!player||!player.storage.kunfen) return true;
|
||||
return false;
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
|
|
341
character/sp2.js
341
character/sp2.js
|
@ -4,6 +4,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
name:'sp2',
|
||||
connect:true,
|
||||
character:{
|
||||
zhanghu:['male','wei',4,['cuijian','tongyuan']],
|
||||
caoanmin:['male','wei',4,['xianwei']],
|
||||
re_panshu:['female','wu',3,['zhiren','yaner']],
|
||||
re_zoushi:['female','qun',3,['rehuoshui','reqingcheng']],
|
||||
luyusheng:['female','wu',3,['zhente','zhiwei']],
|
||||
huaxin:['male','wei',3,['spwanggui','xibing']],
|
||||
|
@ -97,12 +100,320 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_huangjin:['liuhong','zhujun','re_hejin','re_hansui'],
|
||||
sp_qihuan:['liubian','zhaozhong'],
|
||||
sp_fadong:['ol_dingyuan','wangrong','re_quyi','hanfu'],
|
||||
sp_xuzhou:['re_taoqian','caosong','zhangmiao'],
|
||||
sp_zhongyuan:['re_hucheer','re_zoushi'],
|
||||
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','ruanyu','liangxing','re_niujin','re_dongzhao','re_dongcheng','yangwan','qiuliju','heyan'],
|
||||
sp_xuzhou:['re_taoqian','caosong','zhangmiao','qiuliju'],
|
||||
sp_zhongyuan:['re_hucheer','re_zoushi','caoanmin'],
|
||||
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','ruanyu','liangxing','re_niujin','re_dongzhao','re_dongcheng','yangwan','heyan','re_panshu','zhanghu'],
|
||||
}
|
||||
},
|
||||
skill:{
|
||||
cuijian:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer((current)=>lib.skill.cuijian.filterTarget(null,player,current));
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player&&target.countCards('h')>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var hs=target.getCards('h','shan');
|
||||
if(hs.length){
|
||||
var card=target.getEquip(2);
|
||||
if(card) hs.push(card);
|
||||
player.gain(hs,target,'give');
|
||||
event.num=(player.hasMark('tongyuan_tao')?1:hs.length);
|
||||
}
|
||||
else{
|
||||
if(player.hasMark('tongyuan_wuxie')) player.draw();
|
||||
else if(player.countCards('h')) player.chooseToDiscard('h',true);
|
||||
event.finish();
|
||||
}
|
||||
'step 1'
|
||||
var hs=player.getCards('he');
|
||||
if(!hs.length||!target.isIn()) event.finish();
|
||||
else if(hs.length<=num) event._result={bool:true,cards:hs};
|
||||
else player.chooseCard('he',true,'选择交给'+get.translation(target)+get.cnNumber(num)+'张牌');
|
||||
'step 2'
|
||||
if(result.bool&&result.cards&&result.cards.length) target.gain(result.cards,player,'giveAuto');
|
||||
},
|
||||
ai:{
|
||||
order:4,
|
||||
result:{
|
||||
player:function(player,target){
|
||||
if(!target.countCards('h','shan')) return player.hasMark('tongyuan_wuxie')?1:-1;
|
||||
return 0;
|
||||
},
|
||||
target:function(player,target){
|
||||
if(target.countCards('h','shan')){
|
||||
var num=-target.countCards('h')/2;
|
||||
var card=target.getEquip(2);
|
||||
if(card) num-=(get.value(card,target)/2);
|
||||
return num;
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
tongyuan:{
|
||||
audio:2,
|
||||
trigger:{player:'useCard'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return (event.card.name=='tao'||event.card.name=='wuxie')&&((player!=status.currentPhase&&!player.hasMark('tongyuan_'+event.card.name))||(player.hasMark('tongyuan_tao')&&player.hasMark('tongyuan_wuxie')));
|
||||
},
|
||||
content:function(){
|
||||
if(!player.hasMark('tongyuan_'+trigger.card.name)){
|
||||
player.addMark('tongyuan_'+trigger.card.name,1,false);
|
||||
game.log(player,'修改了技能','#g【摧坚】');
|
||||
}
|
||||
else if(trigger.card.name=='wuxie') trigger.directHit.addArray(game.players);
|
||||
else{
|
||||
if(typeof trigger.baseDamage!='number') trigger.baseDamage=1;
|
||||
trigger.baseDamage++;
|
||||
}
|
||||
},
|
||||
},
|
||||
xianwei:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return player.countDisabled()<5;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseToDisable().ai=function(event,player,list){
|
||||
var getVal=function(num){
|
||||
var card=player.getEquip(num);
|
||||
if(card){
|
||||
var val=get.value(card);
|
||||
if(val>0) return 0;
|
||||
return 5-val;
|
||||
}
|
||||
switch(num){
|
||||
case 'equip3':return 4.5;break;
|
||||
case 'equip4':return 4.4;break;
|
||||
case 'equip5':return 4.3;break;
|
||||
case 'equip2':return (3-player.hp)*1.5;break;
|
||||
case 'equip1':{
|
||||
if(game.hasPlayer(function(current){
|
||||
return (get.realAttitude||get.attitude)(player,current)<0&&get.distance(player,current)>1;
|
||||
})) return 0;
|
||||
return 3.2;
|
||||
}
|
||||
}
|
||||
}
|
||||
list.sort(function(a,b){
|
||||
return getVal(b)-getVal(a);
|
||||
});
|
||||
return list[0];
|
||||
};
|
||||
'step 1'
|
||||
var cardType=result.control;
|
||||
event.cardType=cardType;
|
||||
player.draw(player.countDisabled());
|
||||
player.chooseTarget(true,lib.filter.notMe,'令一名其他角色从牌堆中使用一张'+get.translation(cardType)+'牌').set('ai',function(target){
|
||||
var player=_status.event.player,type=_status.event.cardType;
|
||||
var card=get.cardPile2(function(card){
|
||||
return get.subtype(card)==type&&target.canUse(card,target);
|
||||
});
|
||||
if(!card) return 0;
|
||||
return get.effect(target,card,target,player);
|
||||
}).set('cardType',event.cardType);
|
||||
'step 2'
|
||||
var target=result.targets[0];
|
||||
player.line(target,'green');
|
||||
var card=get.cardPile2(function(card){
|
||||
return get.subtype(card)==event.cardType&&target.canUse(card,target);
|
||||
});
|
||||
if(card) target.chooseUseTarget(card,'nopopup',true);
|
||||
else target.draw();
|
||||
},
|
||||
group:'xianwei_all',
|
||||
subSkill:{
|
||||
all:{
|
||||
trigger:{player:'disableEquipAfter'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return player.countDisabled()>=5;
|
||||
},
|
||||
content:function(){
|
||||
player.addSkill('xianwei_effect');
|
||||
},
|
||||
},
|
||||
effect:{
|
||||
charlotte:true,
|
||||
mark:true,
|
||||
intro:{content:'和其他角色视为在彼此的攻击范围内'},
|
||||
mod:{
|
||||
inRange:()=>true,
|
||||
inRangeOf:()=>true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
zhiren:{
|
||||
audio:2,
|
||||
trigger:{player:'useCard'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return (player==_status.currentPhase||player.hasSkill('yaner_zhiren'))&&get.color(event.card)=='red'&&player.getHistory('useCard',function(evt){
|
||||
return get.color(evt.card)=='red'
|
||||
}).indexOf(event)==0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.num=get.translation(trigger.card.name).length;
|
||||
event.logged=false;
|
||||
player.chooseBool('织纴:是否卜算'+event.num+'?');
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('zhiren');
|
||||
event.logged=true;
|
||||
player.chooseToGuanxing(num);
|
||||
}
|
||||
if(event.num<2) event.finish();
|
||||
'step 2'
|
||||
if(!game.hasPlayer(function(current){
|
||||
return current.countDiscardableCards(player,'e')>0;
|
||||
})){
|
||||
event.forcejudge=true;
|
||||
event.goto(4);
|
||||
}
|
||||
else player.chooseTarget('织纴:是否弃置一名其他角色装备区内的一张牌?',function(card,player,target){
|
||||
return target.countDiscardableCards(player,'e')>0;
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player,att=get.attitude(player,target),es=target.getCards('e'),val=0;
|
||||
for(var i of es){
|
||||
var eff=-(get.value(i,target)-0.1)*att;
|
||||
if(eff>val) val=eff;
|
||||
}
|
||||
return eff;
|
||||
});
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
if(!event.logged){
|
||||
event.logged=true;
|
||||
player.logSkill('zhiren',target);
|
||||
player.addExpose(0.15);
|
||||
}
|
||||
else player.line(target,'green');
|
||||
player.discardPlayerCard(target,'e',true);
|
||||
}
|
||||
else event.goto(6);
|
||||
if(event.num<3) event.finish();
|
||||
'step 4'
|
||||
if(!game.hasPlayer(function(current){
|
||||
return current.countDiscardableCards(player,'j')>0;
|
||||
})){
|
||||
if(event.num<3) event.finish();
|
||||
else event.goto(6);
|
||||
}
|
||||
else if(!event.forcejudge) player.chooseTarget('织纴:弃置一名其他角色判定区内的一张牌',true,function(card,player,target){
|
||||
return target.countDiscardableCards(player,'j')>0;
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player,att=get.attitude(player,target),es=target.getCards('j'),val=0;
|
||||
for(var i of es){
|
||||
var eff=-(get.effect(target,i,target,player))
|
||||
if(eff>val) val=eff;
|
||||
}
|
||||
return eff;
|
||||
});
|
||||
else player.chooseTarget('织纴:是否弃置一名其他角色判定区内的一张牌?',function(card,player,target){
|
||||
return target.countDiscardableCards(player,'j')>0;
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player,att=get.attitude(player,target),es=target.getCards('j'),val=0;
|
||||
for(var i of es){
|
||||
var eff=-(get.effect(target,i,target,player))
|
||||
if(eff>val) val=eff;
|
||||
}
|
||||
return eff;
|
||||
});
|
||||
'step 5'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
if(!event.logged){
|
||||
event.logged=true;
|
||||
player.logSkill('zhiren',target);
|
||||
player.addExpose(0.15);
|
||||
}
|
||||
else player.line(target,'green');
|
||||
player.discardPlayerCard(target,'j',true);
|
||||
}
|
||||
if(event.num<3) event.finish();
|
||||
'step 6'
|
||||
if(player.isDamaged()) player.chooseBool('织纴:是否回复1点体力?');
|
||||
else if(event.num<4) event.finish();
|
||||
else event.goto(8);
|
||||
'step 7'
|
||||
if(result.bool){
|
||||
if(!event.logged){
|
||||
event.logged=true;
|
||||
player.logSkill('zhiren');
|
||||
}
|
||||
player.recover();
|
||||
}
|
||||
if(event.num<4) event.finish();
|
||||
'step 8'
|
||||
player.chooseBool('织纴:是否摸三张牌?');
|
||||
'step 9'
|
||||
if(result.bool){
|
||||
if(!event.logged){
|
||||
event.logged=true;
|
||||
player.logSkill('zhiren');
|
||||
}
|
||||
player.draw(3);
|
||||
}
|
||||
},
|
||||
},
|
||||
yaner:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
global:['equipAfter','addJudgeAfter','loseAfter','gainAfter','loseAsyncAfter'],
|
||||
},
|
||||
filter:function(event,player){
|
||||
var current=_status.currentPhase;
|
||||
if(!current||current==player||!current.isPhaseUsing()) return false;
|
||||
var evt=event.getl(current);
|
||||
return evt&&evt.hs&&evt.hs.length&¤t.countCards('h')==0;
|
||||
},
|
||||
usable:1,
|
||||
logTarget:'player',
|
||||
prompt2:'与该角色各摸两张牌',
|
||||
check:function(event,player){
|
||||
return get.attitude(player,event.player)>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
game.asyncDraw([trigger.player,player],2);
|
||||
'step 1'
|
||||
var e1=player.getHistory('gain',function(evt){
|
||||
return evt.getParent(2)==event;
|
||||
})[0];
|
||||
if(e1&&e1.cards&&e1.cards.length==2&&get.type(e1.cards[0])==get.type(e1.cards[1])){
|
||||
player.addTempSkill('yaner_zhiren',{player:'phaseBegin'});
|
||||
game.log(player,'修改了技能','#g【织纴】');
|
||||
}
|
||||
if(trigger.player.isIn()&&trigger.player.isDamaged()){
|
||||
var e2=trigger.player.getHistory('gain',function(evt){
|
||||
return evt.getParent(2)==event;
|
||||
})[0];
|
||||
if(e2&&e2.cards&&e2.cards.length==2&&get.type(e2.cards[0])==get.type(e2.cards[1])) trigger.player.recover();
|
||||
}
|
||||
'step 2'
|
||||
game.delayx();
|
||||
},
|
||||
subSkill:{
|
||||
zhiren:{},
|
||||
},
|
||||
ai:{
|
||||
expose:0.5,
|
||||
},
|
||||
},
|
||||
rehuoshui:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
|
@ -596,7 +907,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
charlotte:true,
|
||||
forced:true,
|
||||
popup:false,
|
||||
trigger:{player:'loseHp'},
|
||||
trigger:{player:'changeHp'},
|
||||
filter:function(event,player){
|
||||
return event.num<0;
|
||||
},
|
||||
|
@ -604,7 +915,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.removeSkill('rexiahui_block');
|
||||
},
|
||||
onremove:function(player){
|
||||
player.removeSkill('rexiahui_block');
|
||||
player.removeGaintag('rexiahui');
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -9298,6 +9609,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(player.storage.bazhan) return '转换技,出牌阶段限一次,阴:你可以将至多两张手牌交给一名其他角色。<span class="bluetext">阳:你可以获得一名其他角色的至多两张手牌。</span>若以此法移动的牌包含【酒】或♥牌,则你可令得到此牌的角色执行一项:①回复1点体力。②复原武将牌。';
|
||||
return '转换技,出牌阶段限一次,<span class="bluetext">阴:你可以将至多两张手牌交给一名其他角色。</span>阳:你可以获得一名其他角色的至多两张手牌。若以此法移动的牌包含【酒】或♥牌,则你可令得到此牌的角色执行一项:①回复1点体力。②复原武将牌。';
|
||||
},
|
||||
zhiren:function(player){
|
||||
return '当你于'+(player.hasSkill('yaner_zhiren')?'一':'你的')+'回合内使用第一张红色牌时,你可依次执行以下选项中的前X项:①卜算X。②弃置场上的一张装备牌和延时锦囊牌。③回复1点体力。④摸三张牌。(X为此牌的名称的字数)';
|
||||
},
|
||||
cuijian:function(player){
|
||||
return '出牌阶段限一次,你可以选择一名有手牌的其他角色。若其手牌中:有【闪】,其将装备区内的防具牌和所有【闪】交给你,然后你交给其'+(player.hasMark('tongyuan_tao')?'一张':'等量的')+'牌;没有【闪】,你'+(player.hasMark('tongyuan_wuxie')?'摸一张':'弃置一张手')+'牌。';
|
||||
},
|
||||
},
|
||||
perfectPair:{
|
||||
},
|
||||
|
@ -9320,6 +9637,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
hucheer:['re_hucheer','hucheer'],
|
||||
dongbai:['re_dongbai','dongbai'],
|
||||
gexuan:['gexuan','tw_gexuan'],
|
||||
panshu:['panshu','re_panshu'],
|
||||
},
|
||||
translate:{
|
||||
lijue:"李傕",
|
||||
|
@ -9822,6 +10140,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
rehuoshui_info:'准备阶段,你可以令至多X名角色的非锁定技无效直到回合结束(X为你已损失的体力值且至少为1)。',
|
||||
reqingcheng:'倾城',
|
||||
reqingcheng_info:'出牌阶段限一次,你可以与一名手牌数小于你的男性角色交换手牌。',
|
||||
re_panshu:'潘淑',
|
||||
zhiren:'织纴',
|
||||
zhiren_info:'当你于你的回合内使用第一张红色牌时,你可依次执行以下选项中的前X项:①卜算X。②弃置场上的一张装备牌和延时锦囊牌。③回复1点体力。④摸三张牌。(X为此牌的名称的字数)',
|
||||
yaner:'燕尔',
|
||||
yaner_info:'每回合限一次。当有其他角色于其出牌阶段内失去手牌后,若其没有手牌,则你可以与其各摸两张牌。若其以此法摸得的两张牌类型相同,则其回复1点体力。若你以此法摸得的两张牌类型相同,则你将〖织纴〗中的“你的回合内”改为“一回合内”。',
|
||||
caoanmin:'曹安民',
|
||||
xianwei:'险卫',
|
||||
xianwei_info:'锁定技,准备阶段,你废除一个装备栏并摸X张牌(X为你已废除的装备栏数),然后令一名其他角色对其自己使用一张牌堆中的一张与此装备栏副类别相同的装备牌(没有可使用的牌则改为摸一张牌)。当你废除所有装备栏后,你加2点体力上限,然后你与所有其他角色视为在彼此的攻击范围内。',
|
||||
zhanghu:'张虎',
|
||||
cuijian:'摧坚',
|
||||
cuijian_info:'出牌阶段限一次,你可以选择一名有手牌的其他角色。若其手牌中:有【闪】,其将装备区内的防具牌和所有【闪】交给你,然后你交给其等量的牌;没有【闪】,你弃置一张手牌。',
|
||||
tongyuan:'同援',
|
||||
tongyuan_info:'锁定技。①当你于回合外使用【无懈可击】时,你将〖摧坚〗中的“弃置一张手牌”改为“摸一张牌”;②当你于回合外使用【桃】时,你将〖摧坚〗中的“等量的牌”改为“一张牌”。③当你使用【无懈可击】/【桃】时,若你已发动过〖摧坚①〗和〖摧坚②〗,则此牌不可被响应/回复值+1。',
|
||||
|
||||
sp_whlw:"文和乱武",
|
||||
sp_zlzy:"逐鹿中原",
|
||||
|
|
|
@ -249,11 +249,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
skillAnimation:true,
|
||||
animationColor:'water',
|
||||
filter:function(event,player){
|
||||
return player!=event.player&&!player.hasSkill('rejueqing_1st');
|
||||
return player!=event.player&&!player.storage.rejueqing_rewrite;
|
||||
},
|
||||
prompt2:function(event,player){
|
||||
var num=get.cnNumber(2*event.num);
|
||||
return '令即将对其造成的伤害翻倍至'+num+',并令自己失去'+get.cnNumber(event.num)+'点体力';
|
||||
var num=get.cnNumber(2*event.num,true);
|
||||
return '令即将对其造成的伤害翻倍至'+num+'点,并令自己失去'+get.cnNumber(event.num)+'点体力';
|
||||
},
|
||||
check:function(event,player){
|
||||
return player.hp>event.num&&event.player.hp>event.num&&!event.player.hasSkillTag('filterDamage',null,{
|
||||
|
@ -261,36 +261,39 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
card:event.card,
|
||||
})&&get.attitude(player,event.player)<0;
|
||||
},
|
||||
locked:function(skill,player){
|
||||
return player&&player.storage.rejueqing_rewrite;
|
||||
},
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
player.loseHp(trigger.num);
|
||||
trigger.num*=2;
|
||||
var next=game.createEvent('rejueqing_add',false);
|
||||
event.next.remove(next);
|
||||
trigger.after.push(next);
|
||||
next.player=player;
|
||||
next.setContent(function(){
|
||||
player.addSkill('rejueqing_1st');
|
||||
});
|
||||
player.storage.rejueqing_rewrite=true;
|
||||
},
|
||||
derivation:'rejueqing_rewrite',
|
||||
},
|
||||
rejueqing_1st:{
|
||||
trigger:{source:'damageBefore'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
audio:'jueqing',
|
||||
filter:function(event,player){
|
||||
return player.hasSkill('rejueqing');
|
||||
group:'rejueqing_rewrite',
|
||||
subSkill:{
|
||||
rewrite:{
|
||||
trigger:{source:'damageBefore'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
audio:'rejueqing',
|
||||
filter:function(event,player){
|
||||
return player.storage.rejueqing_rewrite==true;
|
||||
},
|
||||
check:function(){return false;},
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
trigger.player.loseHp(trigger.num);
|
||||
},
|
||||
ai:{
|
||||
jueqing:true,
|
||||
skillTagFilter:function(player){
|
||||
return player.storage.rejueqing_rewrite==true;
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
check:function(){return false;},
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
trigger.player.loseHp(trigger.num);
|
||||
},
|
||||
ai:{
|
||||
jueqing:true
|
||||
}
|
||||
},
|
||||
reshangshi:{
|
||||
audio:2,
|
||||
|
@ -12058,7 +12061,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
dynamicTranslate:{
|
||||
rejueqing:function(player){
|
||||
if(player.hasSkill('rejueqing_1st')) return '锁定技,你即将造成的伤害均视为失去体力。';
|
||||
if(player.storage.rejueqing_rewrite) return '锁定技,你即将造成的伤害均视为失去体力。';
|
||||
return '当你对其他角色造成伤害时,你可以令此伤害值+X。若如此做,你失去X点体力,并于此伤害结算完成后修改〖绝情〗(X为伤害值)。';
|
||||
},
|
||||
reyanzhu:function(player){
|
||||
|
@ -12690,7 +12693,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
old_fuhun:'父魂',
|
||||
old_fuhun_info:'摸牌阶段开始时,你可以放弃摸牌,改为从牌堆顶亮出两张牌并获得之,若亮出的牌颜色不同,你获得技能“武圣”、“咆哮”,直到回合结束。',
|
||||
rejueqing:'绝情',
|
||||
rejueqing_info:'当你对其他角色造成伤害时,你可以令此伤害值+X。若如此做,你失去X点体力,并于此伤害结算完成后修改〖绝情〗(X为伤害值)。',
|
||||
rejueqing_info:'当你对其他角色造成伤害时,你可以令此伤害值+X。若如此做,你失去X点体力并修改〖绝情〗(X为伤害值)。',
|
||||
rejueqing_1st:'绝情',
|
||||
rejueqing_rewrite:'绝情·改',
|
||||
rejueqing_rewrite_info:'锁定技,你即将造成的伤害均视为失去体力。',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
window.noname_asset_list=[
|
||||
'v1.9.110.9.1',
|
||||
'v1.9.110.9.2',
|
||||
'audio/background/aozhan_chaoming.mp3',
|
||||
'audio/background/aozhan_online.mp3',
|
||||
'audio/background/aozhan_rewrite.mp3',
|
||||
|
@ -772,6 +772,12 @@ window.noname_asset_list=[
|
|||
'audio/die/xin_caifuren.mp3',
|
||||
'audio/die/xin_guyong.mp3',
|
||||
'audio/die/zhangzhongjing.mp3',
|
||||
'audio/die/gz_dengzhi.mp3',
|
||||
'audio/die/ol_huaxin.mp3',
|
||||
'audio/die/re_guyong.mp3',
|
||||
'audio/die/re_panshu.mp3',
|
||||
'audio/die/xin_zhonghui.mp3',
|
||||
'audio/die/zhanghu.mp3',
|
||||
|
||||
'audio/skill/decadezishou1.mp3',
|
||||
'audio/skill/decadezishou2.mp3',
|
||||
|
@ -3460,6 +3466,32 @@ window.noname_asset_list=[
|
|||
'audio/skill/yinlang2.mp3',
|
||||
'audio/skill/yizhu1.mp3',
|
||||
'audio/skill/yizhu2.mp3',
|
||||
'audio/skill/caozhao1.mp3',
|
||||
'audio/skill/caozhao2.mp3',
|
||||
'audio/skill/cuijian1.mp3',
|
||||
'audio/skill/cuijian2.mp3',
|
||||
'audio/skill/gzjianliang1.mp3',
|
||||
'audio/skill/gzjianliang2.mp3',
|
||||
'audio/skill/gzweimeng1.mp3',
|
||||
'audio/skill/gzweimeng2.mp3',
|
||||
'audio/skill/olxibing1.mp3',
|
||||
'audio/skill/olxibing2.mp3',
|
||||
'audio/skill/rebingyi1.mp3',
|
||||
'audio/skill/rebingyi2.mp3',
|
||||
'audio/skill/reshenxing1.mp3',
|
||||
'audio/skill/reshenxing2.mp3',
|
||||
'audio/skill/tongyuan1.mp3',
|
||||
'audio/skill/tongyuan2.mp3',
|
||||
'audio/skill/xinpaiyi1.mp3',
|
||||
'audio/skill/xinpaiyi2.mp3',
|
||||
'audio/skill/xinquanji1.mp3',
|
||||
'audio/skill/xinquanji2.mp3',
|
||||
'audio/skill/xinzili1.mp3',
|
||||
'audio/skill/xinzili2.mp3',
|
||||
'audio/skill/yaner1.mp3',
|
||||
'audio/skill/yaner2.mp3',
|
||||
'audio/skill/zhiren1.mp3',
|
||||
'audio/skill/zhiren2.mp3',
|
||||
|
||||
'audio/voice/male/0.mp3',
|
||||
'audio/voice/male/1.mp3',
|
||||
|
@ -4377,6 +4409,10 @@ window.noname_asset_list=[
|
|||
'image/character/re_guyong.jpg',
|
||||
'image/character/re_zoushi.jpg',
|
||||
'image/character/xin_zhonghui.jpg',
|
||||
'image/character/caoanmin.jpg',
|
||||
'image/character/gz_dengzhi.jpg',
|
||||
'image/character/re_panshu.jpg',
|
||||
'image/character/zhanghu.jpg',
|
||||
|
||||
'image/character/baiwuchang.jpg',
|
||||
'image/character/baosanniang.jpg',
|
||||
|
|
116
game/game.js
116
game/game.js
|
@ -15125,7 +15125,8 @@
|
|||
}
|
||||
}
|
||||
for(var i in map){
|
||||
var owner=(_status.connectMode?lib.playerOL:game.playerMap)[i],next=owner.lose(map[i],ui.special).set('type','gain').set('forceDie',true).set('getlx',false);
|
||||
var owner=(_status.connectMode?lib.playerOL:game.playerMap)[i];
|
||||
var next=owner.lose(map[i],ui.special).set('type','gain').set('forceDie',true).set('getlx',false);
|
||||
if(event.animate=='give'||event.visible==true) next.visible=true;
|
||||
event.relatedLose=next;
|
||||
}
|
||||
|
@ -16429,6 +16430,16 @@
|
|||
},
|
||||
player:{
|
||||
//新函数
|
||||
addSkillBlocker:function(skill){
|
||||
if(!this.storage.skill_blocker) this.storage.skill_blocker=[];
|
||||
this.storage.skill_blocker.push(skill);
|
||||
},
|
||||
removeSkillBlocker:function(skill){
|
||||
if(this.storage.skill_blocker){
|
||||
this.storage.skill_blocker.remove(skill);
|
||||
if(!this.storage.skill_blocker.length) delete this.storage.skill_blocker;
|
||||
}
|
||||
},
|
||||
loseToSpecial:function(cards,tag,target){
|
||||
var next=game.loseAsync({
|
||||
player:this,
|
||||
|
@ -26378,74 +26389,47 @@
|
|||
},
|
||||
fengyin:{
|
||||
init:function(player,skill){
|
||||
var skills=player.getSkills(true,false);
|
||||
for(var i=0;i<skills.length;i++){
|
||||
if(get.is.locked(skills[i])||lib.skill[skills[i]].charlotte){
|
||||
skills.splice(i--,1);
|
||||
}
|
||||
}
|
||||
player.disableSkill(skill,skills);
|
||||
player.addSkillBlocker(skill);
|
||||
},
|
||||
onremove:function(player,skill){
|
||||
player.enableSkill(skill);
|
||||
player.removeSkillBlocker(skill);
|
||||
},
|
||||
locked:true,
|
||||
charlotte:true,
|
||||
skillBlocker:function(skill,player){
|
||||
return !lib.skill[skill].charlotte&&!get.is.locked(skill,player);
|
||||
},
|
||||
mark:true,
|
||||
intro:{
|
||||
content:function(storage,player,skill){
|
||||
var list=[];
|
||||
for(var i in player.disabledSkills){
|
||||
if(player.disabledSkills[i].contains(skill)){
|
||||
list.push(i)
|
||||
}
|
||||
}
|
||||
if(list.length){
|
||||
var str='失效技能:';
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(lib.translate[list[i]+'_info']){
|
||||
str+=get.translation(list[i])+'、';
|
||||
}
|
||||
}
|
||||
return str.slice(0,str.length-1);
|
||||
}
|
||||
var list=player.getSkills(null,null,false).filter(function(i){
|
||||
return lib.skill.fengyin.skillBlocker(i,player);
|
||||
});
|
||||
if(list.length) return '失效技能:'+get.translation(list);
|
||||
return '无失效技能';
|
||||
}
|
||||
}
|
||||
},
|
||||
baiban:{
|
||||
init:function(player,skill){
|
||||
var skills=player.getSkills(true,false);
|
||||
for(var i=0;i<skills.length;i++){
|
||||
if(lib.skill[skills[i]].charlotte){
|
||||
skills.splice(i--,1);
|
||||
}
|
||||
}
|
||||
player.disableSkill(skill,skills);
|
||||
player.addSkillBlocker(skill);
|
||||
},
|
||||
onremove:function(player,skill){
|
||||
player.enableSkill(skill);
|
||||
player.removeSkillBlocker(skill);
|
||||
},
|
||||
charlotte:true,
|
||||
skillBlocker:function(skill,player){
|
||||
return !lib.skill[skill].charlotte;
|
||||
},
|
||||
mark:true,
|
||||
locked:true,
|
||||
intro:{
|
||||
content:function(storage,player,skill){
|
||||
var list=[];
|
||||
for(var i in player.disabledSkills){
|
||||
if(player.disabledSkills[i].contains(skill)){
|
||||
list.push(i)
|
||||
}
|
||||
}
|
||||
if(list.length){
|
||||
var str='失效技能:';
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(lib.translate[list[i]+'_info']){
|
||||
str+=get.translation(list[i])+'、';
|
||||
}
|
||||
}
|
||||
return str.slice(0,str.length-1);
|
||||
}
|
||||
},
|
||||
},
|
||||
var list=player.getSkills(null,null,false).filter(function(i){
|
||||
return lib.skill.baiban.skillBlocker(i,player);
|
||||
});
|
||||
if(list.length) return '失效技能:'+get.translation(list);
|
||||
return '无失效技能';
|
||||
}
|
||||
}
|
||||
},
|
||||
qianxing:{
|
||||
mark:true,
|
||||
|
@ -35165,6 +35149,11 @@
|
|||
for(var i in player.disabledSkills){
|
||||
out.remove(i);
|
||||
}
|
||||
if(player.storage.skill_blocker&&player.storage.skill_blocker.length){
|
||||
for(var i=0;i<out.length;i++){
|
||||
if(get.is.blocked(out[i],player)) out.splice(i--,1);
|
||||
}
|
||||
}
|
||||
return out;
|
||||
},
|
||||
expandSkills:function(skills){
|
||||
|
@ -49238,6 +49227,13 @@
|
|||
return 0;
|
||||
},
|
||||
is:{
|
||||
blocked:function(skill,player){
|
||||
if(!player.storage.skill_blocker||!player.storage.skill_blocker.length) return false;
|
||||
for(var i of player.storage.skill_blocker){
|
||||
if(lib.skill[i]&&lib.skill[i].skillBlocker&&lib.skill[i].skillBlocker(skill,player)) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
double:function(name,array){
|
||||
if(!lib.character[name]||!lib.character[name][4]||name.indexOf('gz_')!=0) return false;
|
||||
for(var i of lib.character[name][4]){
|
||||
|
@ -49434,8 +49430,9 @@
|
|||
pos:function(str){
|
||||
return (str=='h'||str=='e'||str=='j'||str=='he'||str=='hj'||str=='ej'||str=='hej');
|
||||
},
|
||||
locked:function(skill){
|
||||
locked:function(skill,player){
|
||||
var info=lib.skill[skill];
|
||||
if(typeof info.locked=='function') return info.locked(skill,player);
|
||||
if(info.locked==false) return false;
|
||||
if(info.trigger&&info.forced) return true;
|
||||
if(info.mod) return true;
|
||||
|
@ -51423,9 +51420,10 @@
|
|||
return num;
|
||||
},
|
||||
owner:function(card,method){
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(game.players[i].getCards('hej').contains(card)) return game.players[i];
|
||||
if(game.players[i].judging[0]==card&&method!='judge') return game.players[i];
|
||||
var list=game.players.concat(game.dead);
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(list[i].getCards('hej').contains(card)) return list[i];
|
||||
if(list[i].judging[0]==card&&method!='judge') return list[i];
|
||||
}
|
||||
//for(var i=0;i<game.players.length;i++){
|
||||
// if(game.players[i].using&&game.players[i].using.contains(card)) return game.players[i];
|
||||
|
@ -51756,11 +51754,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
var skills=node.getSkills(false,false);
|
||||
for(var i in node.forbiddenSkills){
|
||||
skills.add(i);
|
||||
}
|
||||
skills=skills.slice(0);
|
||||
var skills=node.getSkills(null,null,false).slice(0);
|
||||
var skills2=game.filterSkills(skills,node);
|
||||
if(node==game.me&&node.hiddenSkills.length){
|
||||
skills.addArray(node.hiddenSkills);
|
||||
|
@ -51769,7 +51763,7 @@
|
|||
if(node.disabledSkills[i].length==1&&
|
||||
node.disabledSkills[i][0]==i+'_awake'&&
|
||||
!node.hiddenSkills.contains(i)){
|
||||
skills.push(i);
|
||||
skills.add(i);
|
||||
}
|
||||
}
|
||||
for(i=0;i<skills.length;i++){
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
window.noname_update={
|
||||
version:'1.9.110.9.1',
|
||||
update:'1.9.110.9',
|
||||
version:'1.9.110.9.2',
|
||||
update:'1.9.110.9.1',
|
||||
changeLog:[
|
||||
'界钟会,界顾雍,邹氏',
|
||||
'诸葛果、孙鲁育技能调整',
|
||||
'雾岛佳乃',
|
||||
'十周年潘淑、曹安民、张虎、国战邓芝',
|
||||
'bug修复',
|
||||
],
|
||||
files:[
|
||||
|
@ -14,7 +14,7 @@ window.noname_update={
|
|||
//'card/huanlekapai.js',
|
||||
//'card/mtg.js',
|
||||
//'card/sp.js',
|
||||
'card/standard.js',
|
||||
//'card/standard.js',
|
||||
//'card/swd.js',
|
||||
//'card/yunchou.js',
|
||||
'card/yingbian.js',
|
||||
|
@ -22,13 +22,13 @@ window.noname_update={
|
|||
//'card/zhulu.js',
|
||||
'character/diy.js',
|
||||
'character/extra.js',
|
||||
//'character/hearth.js',
|
||||
'character/gujian.js',
|
||||
'character/hearth.js',
|
||||
//'character/gujian.js',
|
||||
//'character/gwent.js',
|
||||
//'character/hearth.js',
|
||||
'character/mobile.js',
|
||||
//'character/mtg.js',
|
||||
'character/offline.js',
|
||||
//'character/offline.js',
|
||||
//'character/old.js',
|
||||
//'character/ow.js',
|
||||
'character/rank.js',
|
||||
|
@ -37,9 +37,9 @@ window.noname_update={
|
|||
'character/sp.js',
|
||||
'character/sp2.js',
|
||||
//'character/tw.js',
|
||||
'character/standard.js',
|
||||
//'character/standard.js',
|
||||
//'character/swd.js',
|
||||
'character/xianjian.js',
|
||||
//'character/xianjian.js',
|
||||
//'character/xinghuoliaoyuan.js',
|
||||
//'character/yingbian.js',
|
||||
'character/yijiang.js',
|
||||
|
@ -56,7 +56,7 @@ window.noname_update={
|
|||
//'mode/doudizhu.js',
|
||||
'mode/guozhan.js',
|
||||
//'mode/identity.js',
|
||||
'mode/single.js',
|
||||
//'mode/single.js',
|
||||
//'mode/stone.js',
|
||||
//'mode/tafang.js',
|
||||
//'mode/versus.js',
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 152 KiB |
Binary file not shown.
After Width: | Height: | Size: 144 KiB |
Binary file not shown.
After Width: | Height: | Size: 80 KiB |
Binary file not shown.
After Width: | Height: | Size: 147 KiB |
|
@ -3289,6 +3289,7 @@ div:not(.handcards)>.card>.info>span,
|
|||
top: auto;
|
||||
right: 20px;
|
||||
bottom: 20px;
|
||||
z-index: 5;
|
||||
}
|
||||
.connectevents.server{
|
||||
left: 20px;
|
||||
|
|
266
mode/guozhan.js
266
mode/guozhan.js
|
@ -359,7 +359,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
guozhan_single:['gz_re_xushu','gz_yanbaihu','gz_wujing','gz_dongzhao','gz_huangzu','gz_zhugeke','gz_liuba','gz_wenpin'],
|
||||
guozhan_double:['gz_tangzi','gz_liuqi','gz_mengda','gz_mifangfushiren','gz_zhanglu','gz_shixie','gz_xuyou','gz_xiahouba','gz_panjun','gz_xf_sufei','gz_wenqin','gz_pengyang'],
|
||||
guozhan_yexinjia:['gz_zhonghui','gz_simazhao','gz_gongsunyuan'],
|
||||
guozhan_zongheng:['gz_huaxin','gz_luyusheng','gz_zongyu','gz_miheng','gz_fengxi'],
|
||||
guozhan_zongheng:['gz_huaxin','gz_luyusheng','gz_zongyu','gz_miheng','gz_fengxi','gz_dengzhi'],
|
||||
guozhan_others:["gz_lingcao","gz_lifeng","gz_beimihu","gz_jianggan","gz_key_ushio","gz_sp_duyu"],
|
||||
}
|
||||
},
|
||||
|
@ -509,6 +509,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
gz_zongyu:['male','shu',3,['zyqiao','chengshang']],
|
||||
gz_miheng:['male','qun',3,['gzrekuangcai','gzshejian'],['gzskin']],
|
||||
gz_fengxi:['male','wu',3,['yusui','boyan']],
|
||||
gz_dengzhi:['male','shu',3,['gzjianliang','gzweimeng'],['gzskin']],
|
||||
|
||||
gz_cuimao:['male','wei',3,['gzzhengbi','gzfengying'],[]],
|
||||
gz_yujin:['male','wei',4,['gzjieyue'],['gzskin']],
|
||||
|
@ -538,6 +539,105 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
skill:{
|
||||
//邓芝
|
||||
gzjianliang:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseDrawBegin2'},
|
||||
frequent:true,
|
||||
filter:function(event,player){
|
||||
return player.isMinHandcard();
|
||||
},
|
||||
logTarget:function(event,player){
|
||||
var isFriend;
|
||||
if(player.identity=='unknown'){
|
||||
var group='shu';
|
||||
if(!player.wontYe('shu')) group=null;
|
||||
isFriend=function(current){
|
||||
return current==player||current.identity==group;
|
||||
}
|
||||
}
|
||||
else isFriend=function(target){
|
||||
return target.isFriendOf(player);
|
||||
};
|
||||
return game.filterPlayer(isFriend);
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current.isFriendOf(player);
|
||||
});
|
||||
if(list.length==1){
|
||||
list[0].draw();
|
||||
event.finish();
|
||||
}
|
||||
else game.asyncDraw(list);
|
||||
'step 1'
|
||||
game.delayx();
|
||||
},
|
||||
},
|
||||
gzweimeng:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterTarget:function(card,player,target){
|
||||
return target.countGainableCards(player,'h')>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.gainPlayerCard(target,'h',true,event.name=='gzweimeng'?[1,player.hp]:1);
|
||||
'step 1'
|
||||
if(result.bool&&target.isIn()){
|
||||
var num=result.cards.length,hs=player.getCards('he');
|
||||
if(!hs.length) event.goto(3);
|
||||
else if(hs.length<=num) event._result={bool:true,cards:hs};
|
||||
else player.chooseCard('he',true,'选择交给'+get.translation(target)+get.cnNumber(num)+'张牌',num);
|
||||
}
|
||||
else event.goto(3);
|
||||
'step 2'
|
||||
target.gain(result.cards,player,'giveAuto');
|
||||
'step 3'
|
||||
if(target.isIn()&&event.name=='gzweimeng') player.chooseBool('纵横:是否令'+get.translation(target)+'获得【危盟】?').set('ai',function(){
|
||||
var evt=_status.event.getParent();
|
||||
return get.attitude(evt.player,evt.target)>0;
|
||||
});
|
||||
else event.finish();
|
||||
'step 4'
|
||||
if(result.bool){
|
||||
target.addTempSkill('gzweimeng_zongheng',{player:'phaseEnd'});
|
||||
game.log(player,'发起了','#y纵横',',令',target,'获得了技能','#g【危盟】');
|
||||
}
|
||||
},
|
||||
derivation:'gzweimeng_zongheng',
|
||||
subSkill:{
|
||||
zongheng:{
|
||||
inherit:'gzweimeng',
|
||||
ai:{
|
||||
order:6,
|
||||
tag:{
|
||||
lose:1,
|
||||
loseCard:1,
|
||||
gain:1,
|
||||
},
|
||||
result:{
|
||||
target:-1,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
ai:{
|
||||
order:6,
|
||||
tag:{
|
||||
lose:1,
|
||||
loseCard:1,
|
||||
gain:1,
|
||||
},
|
||||
result:{
|
||||
target:function(player,target){
|
||||
return -Math.pow(Math.min(player.hp,target.countCards('h')),2)/4;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//邹氏
|
||||
huoshui:{
|
||||
audio:2,
|
||||
|
@ -1129,9 +1229,40 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
target.draw(Math.min(5,target.maxHp-target.countCards('h')));
|
||||
'step 1'
|
||||
target.addTempSkill('boyan_block')
|
||||
target.addTempSkill('boyan_block');
|
||||
'step 2'
|
||||
if(target.isIn()) player.chooseBool('纵横:是否令'+get.translation(target)+'获得【驳言】?').set('ai',function(){
|
||||
var evt=_status.event.getParent();
|
||||
return get.attitude(evt.player,evt.target)>0;
|
||||
});
|
||||
else event.finish();
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
target.addTempSkill('boyan_zongheng',{player:'phaseEnd'});
|
||||
game.log(player,'发起了','#y纵横',',令',target,'获得了技能','#g【驳言】');
|
||||
}
|
||||
},
|
||||
derivation:'boyan_zongheng',
|
||||
subSkill:{
|
||||
zongheng:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterTarget:lib.filter.notMe,
|
||||
content:function(){
|
||||
target.addTempSkill('boyan_block');
|
||||
},
|
||||
ai:{
|
||||
order:4,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
if(target.countCards('h','shan')&&!target.hasSkillTag('respondShan',true,null,true)&&player.countCards('h',function(card){
|
||||
return get.tag(card,'respondShan')&&get.effect(target,card,player,player)>0&&player.getUseValue(card)>0;
|
||||
})) return -target.countCards('h');
|
||||
return -0.5;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
block:{
|
||||
mark:true,
|
||||
intro:{content:'不能使用或打出手牌'},
|
||||
|
@ -1243,6 +1374,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
player.awakenSkill('gzduwu');
|
||||
player.addSkill('gzduwu_count');
|
||||
targets.sortBySeat();
|
||||
event.players=targets.slice(0);
|
||||
game.delayx();
|
||||
player.chooseJunlingFor(event.players[0]).set('prompt','为所有目标角色选择军令牌');
|
||||
|
@ -1922,12 +2054,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
player.line(trigger.target);
|
||||
trigger.target.chooseToDiscard('he',true);
|
||||
},
|
||||
ai:{
|
||||
unequip:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(!arg||!arg.card||!arg.card.gzzhuhai_tag) return false;
|
||||
},
|
||||
},
|
||||
ai:{
|
||||
unequip:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(!arg||!arg.card||!arg.card.gzzhuhai_tag) return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
quanjin:{
|
||||
audio:2,
|
||||
|
@ -3337,22 +3469,22 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
isCard:true,
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
var xx=lib.skill.yigui_backup;
|
||||
var evt=_status.event;
|
||||
var group=xx.group;
|
||||
var double=get.is.double(xx.character,true);
|
||||
var info=get.info(card);
|
||||
if((!(info.singleCard&&ui.selected.targets.length))&&group!='ye'&&target.identity!='unknown'&&target.identity!='ye'&&target.identity!=group&&(!double||!double.contains(target.identity))) return false;
|
||||
if(info.changeTarget){
|
||||
var targets=[target];
|
||||
info.changeTarget(player,targets);
|
||||
for(var i=0;i<targets.length;i++){
|
||||
if(group!='ye'&&targets[i].identity!='unknown'&&targets[i].identity!='ye'&&targets[i].identity!=group&&(!double||!double.contains(targets[i].identity))) return false;
|
||||
}
|
||||
}
|
||||
//if(evt.type=='dying') return target==evt.dying;
|
||||
if(evt._backup&&evt._backup.filterTarget) return evt._backup.filterTarget(card,player,target);
|
||||
return lib.filter.filterTarget(card,player,target);
|
||||
var xx=lib.skill.yigui_backup;
|
||||
var evt=_status.event;
|
||||
var group=xx.group;
|
||||
var double=get.is.double(xx.character,true);
|
||||
var info=get.info(card);
|
||||
if((!(info.singleCard&&ui.selected.targets.length))&&group!='ye'&&target.identity!='unknown'&&target.identity!='ye'&&target.identity!=group&&(!double||!double.contains(target.identity))) return false;
|
||||
if(info.changeTarget){
|
||||
var targets=[target];
|
||||
info.changeTarget(player,targets);
|
||||
for(var i=0;i<targets.length;i++){
|
||||
if(group!='ye'&&targets[i].identity!='unknown'&&targets[i].identity!='ye'&&targets[i].identity!=group&&(!double||!double.contains(targets[i].identity))) return false;
|
||||
}
|
||||
}
|
||||
//if(evt.type=='dying') return target==evt.dying;
|
||||
if(evt._backup&&evt._backup.filterTarget) return evt._backup.filterTarget(card,player,target);
|
||||
return lib.filter.filterTarget(card,player,target);
|
||||
},
|
||||
onuse:function(result,player){
|
||||
player.logSkill('yigui');
|
||||
|
@ -5943,45 +6075,51 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
},
|
||||
"fengyin_main":{
|
||||
fengyin_main:{
|
||||
init:function(player,skill){
|
||||
var skills=lib.character[player.name1][3];
|
||||
for(var i=0;i<skills.length;i++){
|
||||
if(get.is.locked(skills[i])){
|
||||
skills.splice(i--,1);
|
||||
}
|
||||
}
|
||||
player.disableSkill(skill,skills);
|
||||
player.addSkillBlocker(skill);
|
||||
},
|
||||
onremove:function(player,skill){
|
||||
player.enableSkill(skill);
|
||||
player.removeSkillBlocker(skill);
|
||||
},
|
||||
charlotte:true,
|
||||
skillBlocker:function(skill,player){
|
||||
return lib.character[player.name1][3].contains(skill)&&!lib.skill[skill].charlotte&&!get.is.locked(skill,player);
|
||||
},
|
||||
marktext:"主",
|
||||
locked:true,
|
||||
mark:true,
|
||||
marktext:'主',
|
||||
intro:{
|
||||
content:"主武将牌上的全部非锁定技失效",
|
||||
},
|
||||
content:function(storage,player,skill){
|
||||
var list=player.getSkills(null,null,false).filter(function(i){
|
||||
return lib.skill.fengyin_main.skillBlocker(i,player);
|
||||
});
|
||||
if(list.length) return '失效技能:'+get.translation(list);
|
||||
return '无失效技能';
|
||||
}
|
||||
}
|
||||
},
|
||||
"fengyin_vice":{
|
||||
fengyin_vice:{
|
||||
init:function(player,skill){
|
||||
var skills=lib.character[player.name2][3];
|
||||
for(var i=0;i<skills.length;i++){
|
||||
if(get.is.locked(skills[i])){
|
||||
skills.splice(i--,1);
|
||||
}
|
||||
}
|
||||
player.disableSkill(skill,skills);
|
||||
player.addSkillBlocker(skill);
|
||||
},
|
||||
onremove:function(player,skill){
|
||||
player.enableSkill(skill);
|
||||
player.removeSkillBlocker(skill);
|
||||
},
|
||||
charlotte:true,
|
||||
skillBlocker:function(skill,player){
|
||||
return lib.character[player.name2][3].contains(skill)&&!lib.skill[skill].charlotte&&!get.is.locked(skill,player);
|
||||
},
|
||||
locked:true,
|
||||
mark:true,
|
||||
marktext:"副",
|
||||
marktext:'主',
|
||||
intro:{
|
||||
content:"副武将牌上的全部非锁定技失效",
|
||||
},
|
||||
content:function(storage,player,skill){
|
||||
var list=player.getSkills(null,null,false).filter(function(i){
|
||||
return lib.skill.fengyin_vice.skillBlocker(i,player);
|
||||
});
|
||||
if(list.length) return '失效技能:'+get.translation(list);
|
||||
return '无失效技能';
|
||||
}
|
||||
}
|
||||
},
|
||||
"new_tieji":{
|
||||
audio:"retieji",
|
||||
|
@ -9321,12 +9459,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ushio_huanxin:{
|
||||
trigger:{
|
||||
player:['damageEnd','useCard'],
|
||||
player:['damageEnd','useCardAfter'],
|
||||
source:'damageSource',
|
||||
},
|
||||
frequent:true,
|
||||
filter:function(event,player,name){
|
||||
if(name=='useCard') return get.type(event.card)=='equip';
|
||||
if(name=='useCardAfter') return get.type(event.card)=='equip';
|
||||
if(name=='damageEnd') return true;
|
||||
return event.getParent().name=='sha';
|
||||
},
|
||||
|
@ -10137,6 +10275,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
_status.event.result='ai';
|
||||
}).set('processAI',function(){
|
||||
var buttons=_status.event.dialog.buttons;
|
||||
var filterChoice=function(name1,name2){
|
||||
if(get.is.double(name1)) return false;
|
||||
var group1=lib.character[name1][1];
|
||||
var group2=lib.character[name2][1];
|
||||
if(group1=='ye') return group2!='ye';
|
||||
var double=get.is.double(name2,true);
|
||||
if(double) return double.contains(group1);
|
||||
return group1==group2;
|
||||
};
|
||||
for(var i=0;i<buttons.length-1;i++){
|
||||
for(var j=i+1;j<buttons.length;j++){
|
||||
if(filterChoice(buttons[i].link,buttons[j].link)||filterChoice(buttons[j].link,buttons[i].link)){
|
||||
|
@ -10319,12 +10466,18 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
fengxi:'冯熙',
|
||||
liuba:'刘巴',
|
||||
pengyang:'彭羕',
|
||||
gzjianliang:'简亮',
|
||||
gzjianliang_info:'摸牌阶段开始时,若你的手牌数为全场最少,则你可以令所有与你势力相同的角色各摸一张牌。',
|
||||
gzweimeng:'危盟',
|
||||
gzweimeng_info:'出牌阶段限一次,你可以获得一名其他角色的至多X张手牌,然后交给其等量的牌(X为你的体力值)。',
|
||||
gzweimeng_zongheng:'危盟·纵横',
|
||||
gzweimeng_zongheng_info:'出牌阶段限一次,你可以获得一名其他角色的一张手牌,然后交给其一张牌。',
|
||||
gzzhenwei:'镇卫',
|
||||
gzzhenwei_info:'①弃牌阶段开始时,你可失去1点体力。然后若你于此阶段内弃置过你的牌,则你令其他角色各选择一项:1.将X张手牌置入弃牌堆(X为你于此阶段内弃置过的牌数);2.受到你造成的1点伤害。②你杀死与你势力相同的角色不执行奖惩。 ',
|
||||
gzyulin:'鱼鳞',
|
||||
gzyulin_info:'阵法技,若你在一个围攻关系中:①是围攻角色,则所有围攻角色的手牌上限+1且被围攻角色手牌上限-1;②是被围攻角色,则结束阶段开始时,你视为对一名围攻角色使用【杀】。',
|
||||
jianni:'谏逆',
|
||||
jianni_info:'一名己方角色A的出牌阶段开始时,你可弃置一张锦囊牌,横置一名结算并摸X张牌(X为拥有横置角色的势力数)。然后你选择一项:①视为对A使用一张【桃】;②令A视为对由你选择的另一名角色使用一张雷【杀】。',
|
||||
jianni_info:'一名己方角色A的出牌阶段开始时,你可弃置一张锦囊牌,横置一名角色并摸X张牌(X为拥有横置角色的势力数)。然后你选择一项:①视为对A使用一张【桃】;②令A视为对由你选择的另一名角色使用一张雷【杀】。',
|
||||
xiaoba:'嚣跋',
|
||||
xiaoba_info:'锁定技,当你使用或被使用基本牌或普通锦囊牌时,若有其他与你势力相同的角色且这些角色的手牌数均不大于你,则此牌不可被响应。',
|
||||
chouduo:'筹度',
|
||||
|
@ -10337,6 +10490,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
yusui_info:'当你成为其他势力的角色使用黑色牌的目标后,你可以失去1点体力,然后选择一项:①令其弃置X张手牌(X为其体力上限);②令其失去Y点体力(Y为其的体力值减去你的体力值,不为正时不可选择)',
|
||||
boyan:'驳言',
|
||||
boyan_info:'出牌阶段限一次,你可令一名其他角色将手牌摸至体力上限(至多摸五张),然后其本回合不能使用或打出手牌。',
|
||||
boyan_zongheng:'驳言·纵横',
|
||||
boyan_zongheng_info:'出牌阶段限一次,你可令一名其他角色本回合不能使用或打出手牌。',
|
||||
gzyaoqi:'邀旗',
|
||||
gzyaoqi_info:'出牌阶段限一次,你可弃置一张牌并令一名其他角色选择一项:①交给你一张装备牌。②你获得其一张牌。若你以此法获得了♠牌,则其视为对你使用一张【杀】。',
|
||||
gzduwu:'黩武',
|
||||
|
@ -10675,7 +10830,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
|
||||
gz_key_ushio:'冈崎汐',
|
||||
ushio_huanxin:'幻心',
|
||||
ushio_huanxin_info:'当你受到伤害后/使用【杀】造成伤害后/使用装备牌时,你可进行判定。然后你获得判定牌并弃置一张牌。',
|
||||
ushio_huanxin_info:'当你受到伤害后/使用【杀】造成伤害后/使用装备牌后,你可进行判定。然后你获得判定牌并弃置一张牌。',
|
||||
ushio_xilv:'汐旅',
|
||||
ushio_xilv2:'汐旅',
|
||||
ushio_xilv_info:'锁定技,此武将牌可作为任意单势力武将牌的副将。当你进行判定后,你令你的手牌上限+1直至你的下个结束阶段。',
|
||||
|
@ -12135,7 +12290,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
'<div style="margin:10px">声明</div><ul style="margin-top:0"><li>以下所有规则均为根据公开爆料整理,经村规改动后制定的临时规则。不代表任何官方意见。请以后续发布的官方规则作为标准。</ul>'
|
||||
+'<div style="margin:10px">双势力武将</div><ul style="margin-top:0"><li>双势力武将牌只能放在副将位置。主将可以为普通武将牌和野心家武将牌。<br><li>双势力武将牌明置时,势力按照主将的势力进行结算(无论是否明置主将)。胜负条件与正常的单势力武将相同。<br><li>变更副将时,可以选择包含原势力的双势力武将牌。左慈发动【役鬼】时,可以使用双势力武将牌同时指定两个不同势力的角色为目标。<br><li>特殊地,“冈崎汐”作为多势力武将牌,结算流程和规则与其他双势力武将相同。</ul>'
|
||||
+'<div style="margin:10px">野心家武将</div><ul style="margin-top:0"><li>野心家武将只能放在主将位置。副将可以为任意非野心家武将牌。<br><li>选择了野心家武将牌的角色(以下简称“野心家角色”)仅明置副将时,若副将为单势力武将牌,则势力暂时视为与该武将牌相同。若副将为双势力武将牌,则势力视为野心家。<br><li>野心家角色明置主将时,其势力改为野心家。若其是首次明置该武将牌,则其获得一个“野心家”标记。<br><li>“野心家”标记可以当做“先驱”标记,“阴阳鱼”标记或是“珠联璧合”标记使用。当同时拥有两种标记时,优先弃置原装标记,下次发动时才弃置“野心家”标记。<br><li>野心家角色变更副将时,若其主将未明置过,则按照副将的势力进行变更。若主将已经明置过,则可以选择所有的非野心家武将牌。左慈发动【役鬼】时,可以使用野心家武将牌同时指定所有势力的角色为目标。'
|
||||
+'<br><li>当场上触发了胜利条件时,若这些角色中存在未明置过主将的野心家角色,则这些野心家角色选择是否“暴露野心”。若无人选择“是”且场上存在非野心家角色存活,则所有非野心家角色胜利,野心家角色失败。若有人选择“是”,则这些角色明置主将。然后若场上存活角色数大于等于3,则这些角色选择是否发起“拉拢人心”<br><li>选择发起“拉拢人心”的野心家角色,令所有其他非野心家角色和非君主角色依次选择是否和该野心家角色“结盟”。若有人选择“是”,则野心家角色弃置“野心家”标记,且该角色将势力改为野心家,且视为和发起“拉拢人心”的野心家角色势力相同,并终止对其他角色的询问。</ul>',
|
||||
+'<br><li>当场上触发了胜利条件时,若这些角色中存在未明置过主将的野心家角色,则这些野心家角色选择是否“暴露野心”。若无人选择“是”且场上存在非野心家角色存活,则所有非野心家角色胜利,野心家角色失败。若有人选择“是”,则这些角色明置主将。然后若场上存活角色数大于等于3,则这些角色选择是否发起“拉拢人心”<br><li>选择发起“拉拢人心”的野心家角色,令所有其他非野心家角色和非君主角色依次选择是否和该野心家角色“结盟”。若有人选择“是”,则野心家角色弃置“野心家”标记,且该角色将势力改为野心家,且视为和发起“拉拢人心”的野心家角色势力相同,并终止对其他角色的询问。</ul>'
|
||||
+'<div style="margin:10px">纵横捭阖</div><ul style="margin-top:0"><li>当一名角色对目标角色发动具有拥有“纵横”衍生技的技能时,其可以令对方获得“纵横”衍生技直到其下回合结束。</ul>',
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue