1934 lines
58 KiB
JavaScript
1934 lines
58 KiB
JavaScript
'use strict';
|
||
game.import('card',function(lib,game,ui,get,ai,_status){
|
||
return {
|
||
name:'guozhan',
|
||
connect:true,
|
||
card:{
|
||
zhaoshu:{
|
||
audio:true,
|
||
mode:['guozhan'],
|
||
fullskin:true,
|
||
type:'equip',
|
||
subtype:'equip5',
|
||
skills:['zhaoshu_skill'],
|
||
content:function(){
|
||
cards=cards.filterInD();
|
||
if(cards.length&&target.isAlive()){
|
||
game.cardsGotoSpecial(cards);
|
||
game.log(cards,'被移出了游戏');
|
||
player.$gain2(cards,false);
|
||
target.markAuto('zhaoshu_skill',cards);
|
||
target.addSkill('zhaoshu_skill');
|
||
game.addGlobalSkill('zhaoshu_global');
|
||
}
|
||
},
|
||
onEquip:function(){
|
||
if(player.isAlive()){
|
||
player.lose(card)._triggered=null;
|
||
player.markAuto('zhaoshu_skill',[card]);
|
||
player.addSkill('zhaoshu_skill');
|
||
game.addGlobalSkill('zhaoshu_global');
|
||
}
|
||
},
|
||
ai:{
|
||
order:12,
|
||
value:3,
|
||
useful:1,
|
||
result:{
|
||
keepAI:true,
|
||
target:1,
|
||
},
|
||
}
|
||
},
|
||
gz_haolingtianxia:{
|
||
audio:true,
|
||
mode:['guozhan'],
|
||
fullskin:true,
|
||
type:'trick',
|
||
enable:true,
|
||
filterTarget:function(card,player,target){
|
||
return target!=player&&!target.isMinHp();
|
||
},
|
||
content:function(){
|
||
'step 0'
|
||
event.list=game.filterPlayer(function(current){
|
||
return current!=target;
|
||
}).sortBySeat();
|
||
'step 1'
|
||
if(!target.isIn()){
|
||
event.finish();
|
||
return;
|
||
}
|
||
var current=event.list.shift();
|
||
if(!current||!current.isIn()||current.hasSkill('diaohulishan')){
|
||
if(event.list.length) event.redo();
|
||
else event.finish();
|
||
return;
|
||
}
|
||
event.current=current;
|
||
if(current.identity!='wei'){
|
||
current.chooseToDiscard('he','弃置一张牌,并视为对'+get.translation(target)+'使用一张【杀】,或点击「取消」弃置其一张牌').set('ai',function(card){
|
||
if(!_status.event.goon) return 0;
|
||
return 5-get.value(card);
|
||
}).set('goon',(get.effect(target,{name:'guohe'},current)<get.effect(target,{name:'sha'},current)));
|
||
}
|
||
else{
|
||
current.chooseBool('是否视为对'+get.translation(target)+'使用一张【杀】?','若点击「取消」则改为获得其一张牌').set('ai',function(){
|
||
var player=_status.event.player,target=_status.event.getParent().target;
|
||
return (get.effect(target,{name:'shunshou'},player)<=get.effect(target,{name:'sha'},player))
|
||
});
|
||
}
|
||
'step 2'
|
||
if(!target.isIn()){
|
||
event.finish();
|
||
return;
|
||
}
|
||
var current=event.current;
|
||
if(result.bool){
|
||
if(current.isIn()&¤t.canUse({name:'sha',isCard:true},target,false)) current.useCard({name:'sha',isCard:true},target,false);
|
||
}
|
||
else{
|
||
current[current.identity=='wei'?'gainPlayerCard':'discardPlayerCard'](target,true,'he').set('boolline',true);
|
||
}
|
||
if(event.list.length) event.goto(1);
|
||
},
|
||
ai:{
|
||
order:6,
|
||
value:9,
|
||
useful:6,
|
||
tag:{
|
||
damage:1,
|
||
discard:1,
|
||
loseCard:1,
|
||
},
|
||
result:{
|
||
target:function(player,target){
|
||
return -1.5*(game.countPlayer()-1);
|
||
},
|
||
},
|
||
},
|
||
},
|
||
gz_kefuzhongyuan:{
|
||
audio:true,
|
||
mode:['guozhan'],
|
||
fullskin:true,
|
||
type:'trick',
|
||
enable:true,
|
||
filterTarget:true,
|
||
selectTarget:[1,Infinity],
|
||
content:function(){
|
||
'step 0'
|
||
var p1='请选择【杀】的目标',p2='或点击「取消」摸一张牌';
|
||
if(target.identity=='shu'){
|
||
p1+='(伤害+1)';
|
||
p2='或点击「取消」摸两张牌';
|
||
}
|
||
var next=target.chooseUseTarget('sha',p1,p2,false);
|
||
if(target.identity=='shu') next.set('oncard',function(){
|
||
_status.event.baseDamage++;
|
||
});
|
||
'step 1'
|
||
if(!result.bool){
|
||
target.draw(target.identity=='shu'?2:1);
|
||
}
|
||
},
|
||
ai:{
|
||
order:3,
|
||
value:9,
|
||
useful:6,
|
||
tag:{
|
||
gain:1,
|
||
},
|
||
result:{target:1.5},
|
||
},
|
||
},
|
||
gz_guguoanbang:{
|
||
audio:true,
|
||
mode:['guozhan'],
|
||
fullskin:true,
|
||
type:'trick',
|
||
enable:true,
|
||
selectTarget:-1,
|
||
toself:true,
|
||
filterTarget:function(card,player,target){
|
||
return target==player;
|
||
},
|
||
modTarget:true,
|
||
content:function(){
|
||
'step 0'
|
||
target.draw(8);
|
||
'step 1'
|
||
target.chooseToDiscard('请弃置至少六张手牌',[6,target.countCards('h')],true,'h');
|
||
if(target.identity!='wu') event.finish();
|
||
'step 2'
|
||
if(!result.cards||!result.cards.length) event.finish();
|
||
event.give_cards=result.cards;
|
||
event.given_list=[];
|
||
'step 3'
|
||
event.give_cards=event.give_cards.filterInD('d');
|
||
if(!event.give_cards.length||!game.hasPlayer(function(current){
|
||
return current!=target&¤t.identity=='wu'&&!event.given_list.contains(current);
|
||
})) event.finish();
|
||
else{
|
||
target.chooseButton(['是否将弃置的牌交给其他吴势力角色?',event.give_cards],[1,2]);
|
||
}
|
||
'step 4'
|
||
if(result.bool){
|
||
event.cards2=result.links;
|
||
target.chooseTarget(true,'选择获得'+get.translation(event.cards2)+'的角色',function(card,player,target){
|
||
return target!=player&&target.identity=='wu'&&!_status.event.targets.contains(target);
|
||
}).set('targets',event.given_list);
|
||
}
|
||
else event.finish();
|
||
'step 5'
|
||
if(result.bool&&result.targets&&result.targets.length){
|
||
var current=result.targets[0];
|
||
target.line(current,'green');
|
||
current.gain(event.cards2,'gain2');
|
||
event.given_list.push(current);
|
||
event.goto(3);
|
||
}
|
||
},
|
||
ai:{
|
||
order:6,
|
||
value:9,
|
||
useful:6,
|
||
tag:{
|
||
draw:8,
|
||
loseCard:6,
|
||
discard:6,
|
||
},
|
||
result:{
|
||
target:function(player,target){
|
||
if(target.identity!='wu') return 3;
|
||
return Math.max(3,Math.min(8,2*game.countPlayer(function(current){
|
||
return current.identity=='wu';
|
||
})));
|
||
},
|
||
},
|
||
},
|
||
},
|
||
gz_wenheluanwu:{
|
||
audio:true,
|
||
mode:['guozhan'],
|
||
fullskin:true,
|
||
type:'trick',
|
||
enable:true,
|
||
filterTarget:true,
|
||
selectTarget:-1,
|
||
ignoreTarget:function(card,player,target){
|
||
return target.countCards('h')==0;
|
||
},
|
||
content:function(){
|
||
'step 0'
|
||
if(!target.countCards('h')||!player.isIn()) event.finish();
|
||
else target.showHandcards();
|
||
'step 1'
|
||
var str=get.translation(target);
|
||
player.chooseControl().set('prompt','文和乱武:请选择一项').set('choiceList',[
|
||
'令'+str+'弃置两张类型不同的手牌',
|
||
'弃置'+str+'的一张手牌',
|
||
]);
|
||
'step 2'
|
||
if(result.index==0){
|
||
var list=[],hs=target.getCards('h');
|
||
for(var i of hs){
|
||
if(lib.filter.cardDiscardable(i,target,'gz_wenheluanwu')) list.add(get.type2(i,target));
|
||
if(list.length>1) break;
|
||
}
|
||
if(list.length>1) target.chooseToDiscard('h',true,'请弃置两张类型不同的手牌',2,function(card,player){
|
||
if(!ui.selected.cards.length) return true;
|
||
return get.type2(card,target)!=get.type2(ui.selected.cards[0],target);
|
||
}).set('complexCard',true);
|
||
else if(list.length==1) target.chooseToDiscard('h',true);
|
||
else event.finish();
|
||
}
|
||
else{
|
||
player.discardPlayerCard(target,'h',true,'visible');
|
||
}
|
||
'step 3'
|
||
if(target.identity!='qun'||!result.bool||!result.cards||!result.cards.length||target.countCards('h')>0||target.hp<1) event.finish();
|
||
else target.draw(Math.min(5,target.hp));
|
||
},
|
||
ai:{
|
||
order:6,
|
||
value:10,
|
||
useful:6,
|
||
tag:{
|
||
discard:1.5,
|
||
loseCard:1.5,
|
||
},
|
||
result:{target:-1.5},
|
||
},
|
||
},
|
||
liulongcanjia:{
|
||
audio:true,
|
||
mode:['guozhan'],
|
||
fullskin:true,
|
||
type:'equip',
|
||
subtype:'equip6',
|
||
nomod:true,
|
||
nopower:true,
|
||
unique:true,
|
||
distance:{
|
||
globalFrom:-1,
|
||
globalTo:+1,
|
||
},
|
||
customSwap:function(card){
|
||
var type=get.subtype(card,false);
|
||
return type=='equip3'||type=='equip4'||type=='equip6';
|
||
},
|
||
skills:['liulongcanjia'],
|
||
ai:{
|
||
equipValue:function(card,player){
|
||
if(player.countCards('e',{subtype:['equip3','equip4']})>1) return 1;
|
||
if(player.hasSkill('gzzongyu')) return 9;
|
||
if(game.hasPlayer(function(current){
|
||
return current.hasSkill('gzzongyu')&&get.attitude(player,current)<=0;
|
||
})) return 1;
|
||
return 7.2;
|
||
},
|
||
basic:{
|
||
equipValue:7.2
|
||
}
|
||
},
|
||
},
|
||
minguangkai:{
|
||
audio:true,
|
||
mode:['guozhan'],
|
||
fullskin:true,
|
||
type:'equip',
|
||
subtype:'equip2',
|
||
skills:['minguangkai_cancel','minguangkai_link'],
|
||
ai:{
|
||
basic:{
|
||
equipValue:6
|
||
}
|
||
}
|
||
},
|
||
dinglanyemingzhu:{
|
||
audio:true,
|
||
mode:['guozhan'],
|
||
fullskin:true,
|
||
type:'equip',
|
||
subtype:'equip5',
|
||
nomod:true,
|
||
nopower:true,
|
||
unique:true,
|
||
global:'g_dinglanyemingzhu_ai',
|
||
skills:['dinglanyemingzhu_skill'],
|
||
ai:{
|
||
equipValue:function(card,player){
|
||
if(player.hasSkill('jubao')) return 8;
|
||
if(player.hasSkill('gzzhiheng')) return 6;
|
||
if(game.hasPlayer(function(current){
|
||
return current.hasSkill('jubao')&&get.attitude(player,current)<=0;
|
||
})){
|
||
return 0;
|
||
}
|
||
return 7;
|
||
},
|
||
basic:{
|
||
equipValue:6.5
|
||
}
|
||
}
|
||
},
|
||
feilongduofeng:{
|
||
audio:true,
|
||
mode:['guozhan'],
|
||
fullskin:true,
|
||
type:'equip',
|
||
subtype:'equip1',
|
||
nomod:true,
|
||
nopower:true,
|
||
unique:true,
|
||
global:'g_feilongduofeng_ai',
|
||
distance:{attackFrom:-1},
|
||
skills:['feilongduofeng','feilongduofeng3'],
|
||
ai:{
|
||
equipValue:function(card,player){
|
||
if(player.hasSkill('zhangwu')) return 9;
|
||
if(game.hasPlayer(function(current){
|
||
return current.hasSkill('zhangwu')&&get.attitude(player,current)<=0;
|
||
})){
|
||
return 1;
|
||
}
|
||
return 8;
|
||
},
|
||
basic:{
|
||
equipValue:7
|
||
}
|
||
}
|
||
},
|
||
taipingyaoshu:{
|
||
audio:true,
|
||
fullskin:true,
|
||
type:'equip',
|
||
subtype:'equip2',
|
||
nomod:true,
|
||
nopower:true,
|
||
unique:true,
|
||
global:['g_taipingyaoshu_ai'],
|
||
skills:['taipingyaoshu'],
|
||
ai:{
|
||
equipValue:function(card,player){
|
||
if(player.hasSkill('wendao')) return 9;
|
||
if(game.hasPlayer(function(current){
|
||
return current.hasSkill('wendao')&&get.attitude(player,current)<=0;
|
||
})){
|
||
return 1;
|
||
}
|
||
return 6;
|
||
},
|
||
basic:{
|
||
equipValue:6
|
||
}
|
||
},
|
||
filterLose:function(card,player){
|
||
if(player.hasSkillTag('unequip2')) return false;
|
||
return true;
|
||
},
|
||
loseDelay:false,
|
||
onLose:function(){
|
||
var next=game.createEvent('taipingyaoshu');
|
||
event.next.remove(next);
|
||
var evt=event.getParent();
|
||
if(evt.getlx===false) evt=evt.getParent();
|
||
evt.after.push(next);
|
||
next.player=player;
|
||
next.setContent(lib.card.taipingyaoshu.onLosex);
|
||
},
|
||
onLosex:function(){
|
||
'step 0'
|
||
player.logSkill('taipingyaoshu');
|
||
player.draw(2);
|
||
'step 1'
|
||
if(player.hp>1) player.loseHp();
|
||
}
|
||
},
|
||
yuxi:{
|
||
audio:true,
|
||
mode:['guozhan'],
|
||
fullskin:true,
|
||
type:'equip',
|
||
subtype:'equip5',
|
||
skills:['yuxi_skill'],
|
||
ai:{
|
||
equipValue:9
|
||
}
|
||
},
|
||
xietianzi:{
|
||
audio:true,
|
||
fullskin:true,
|
||
type:'trick',
|
||
enable:function(card,player,event){
|
||
if(get.mode()=='guozhan'&&!player.isMajor()) return false;
|
||
if(player.hasSkill('xietianzi')) return false;
|
||
if(_status.currentPhase!=player) return false;
|
||
var evt=event||_status.event;
|
||
if(evt.name!='chooseToUse') evt=evt.getParent('chooseToUse');
|
||
return evt.type=='phase';
|
||
},
|
||
filterTarget:function(card,player,target){
|
||
return player==target;
|
||
},
|
||
selectTarget:-1,
|
||
content:function(){
|
||
var evt=_status.event.getParent('phaseUse');
|
||
if(evt&&evt.name=='phaseUse'){
|
||
evt.skipped=true;
|
||
}
|
||
target.addTempSkill('xietianzi');
|
||
},
|
||
|
||
ai:{
|
||
order:0.5,
|
||
value:4,
|
||
useful:2,
|
||
result:{
|
||
target:function(player,target){
|
||
if(target.countCards('h')>=2) return 1;
|
||
return 0;
|
||
}
|
||
}
|
||
}
|
||
},
|
||
shuiyanqijunx:{
|
||
audio:'shuiyanqijun',
|
||
fullskin:true,
|
||
type:'trick',
|
||
filterTarget:function(card,player,target){
|
||
return target!=player&&(get.mode()!='guozhan'||_status.mode=='yingbian'||_status.mode=='free'||target.countCards('e')>0);
|
||
},
|
||
enable:true,
|
||
yingbian_prompt:function(card){
|
||
var str='';
|
||
if(get.cardtag(card,'yingbian_all')){
|
||
str+='此牌的效果改为依次执行所有选项';
|
||
}
|
||
if(!str.length||get.cardtag(card,'yingbian_add')){
|
||
if(str.length) str+=';';
|
||
str+='当你使用此牌选择目标后,你可为此牌增加一个目标';
|
||
}
|
||
return str;
|
||
},
|
||
yingbian:function(event){
|
||
var card=event.card,bool=false;
|
||
if(get.cardtag(card,'yingbian_all')){
|
||
bool=true;
|
||
card.yingbian_all=true;
|
||
game.log(card,'执行所有选项');
|
||
}
|
||
if(!bool||get.cardtag(card,'yingbian_add')){
|
||
event.yingbian_addTarget=true;
|
||
}
|
||
},
|
||
content:function(){
|
||
'step 0'
|
||
if(event.card.yingbian_all){
|
||
target.discard(target.getCards('e',function(card){
|
||
return lib.filter.cardDiscardable(card,target,'shuiyanqijunx');
|
||
}));
|
||
target.damage('thunder',event.baseDamage||1);
|
||
event.finish();
|
||
}
|
||
else if(!target.countCards('e',function(card){
|
||
return lib.filter.cardDiscardable(card,target,'shuiyanqijunx');
|
||
})){
|
||
var next=target.damage(event.baseDamage||1);
|
||
if(!get.is.single()) next.nature='thunder';
|
||
event.finish();
|
||
return;
|
||
}
|
||
else target.chooseControl('discard_card','take_damage',function(event,player){
|
||
if(get.damageEffect(player,event.player,player,'thunder')>=0){
|
||
return 'take_damage';
|
||
}
|
||
if(player.hp>=3&&player.countCards('e')>=2){
|
||
return 'take_damage';
|
||
}
|
||
return 'discard_card';
|
||
});
|
||
'step 1'
|
||
if(result.control=='discard_card'){
|
||
target.discard(target.getCards('e',function(card){
|
||
return lib.filter.cardDiscardable(card,target,'shuiyanqijunx');
|
||
}));
|
||
}
|
||
else{
|
||
var next=target.damage(event.baseDamage||1);
|
||
if(!get.is.single()) next.nature='thunder'
|
||
}
|
||
event.finish();
|
||
},
|
||
ai:{
|
||
canLink:function(player,target,card){
|
||
if(player.hasSkill('jueqing')||target.hasSkill('gangzhi')||target.hasSkill('gangzhi')) return false;
|
||
var es=target.countCards('e');
|
||
if(!es) return true;
|
||
if(target.hp>=3&&es>=2){
|
||
return true;
|
||
}
|
||
return false;
|
||
},
|
||
order:6,
|
||
value:4,
|
||
useful:2,
|
||
tag:{
|
||
damage:1,
|
||
thunderDamage:1,
|
||
natureDamage:1,
|
||
loseCard:1,
|
||
},
|
||
yingbian:function(card,player,targets,viewer){
|
||
if(get.attitude(viewer,player)<=0) return 0;
|
||
var base=0;
|
||
if(get.cardtag(card,'yingbian_all')){
|
||
if(targets.filter(function(current){
|
||
return get.damageEffect(current,player,player,'thunder')>0&¤t.countCards('e',function(card){
|
||
return get.value(card,current)<=0;
|
||
})<2&¤t.countCards('e',function(card){
|
||
return get.value(card,current)>0;
|
||
})>0;
|
||
}).length) base+=6;
|
||
}
|
||
if(get.cardtag(card,'yingbian_add')){
|
||
if(game.hasPlayer(function(current){
|
||
return !targets.contains(current)&&lib.filter.targetEnabled2(card,player,current)&&get.effect(current,card,player,player)>0;
|
||
})) base+=6;
|
||
}
|
||
return 0;
|
||
},
|
||
result:{
|
||
target:function(player,target,card,isLink){
|
||
if(isLink) return -1.5;
|
||
var es=target.getCards('e');
|
||
if(!es.length) return -1.5;
|
||
var val=0;
|
||
for(var i of es) val+=get.value(i,target);
|
||
return -Math.min(1.5,val/5);
|
||
}
|
||
}
|
||
}
|
||
},
|
||
lulitongxin:{
|
||
fullskin:true,
|
||
audio:true,
|
||
type:'trick',
|
||
enable:function(card,player){
|
||
if(get.mode()=='versus') return true;
|
||
return game.hasPlayer(function(current){
|
||
return current.isMajor();
|
||
});
|
||
},
|
||
mode:['guozhan','versus'],
|
||
filterTarget:true,
|
||
chongzhu:true,
|
||
changeTarget:function(player,targets){
|
||
var target=targets[0];
|
||
game.filterPlayer(function(current){
|
||
if(get.mode()=='versus') return current.isFriendOf(target);
|
||
return current.isMajor()==target.isMajor()&¤t!=target&&!current.hasSkill('diaohulishan');
|
||
},targets);
|
||
},
|
||
content:function(){
|
||
if(get.mode()=='versus'){
|
||
if(target.isEnemyOf(player)) target.link(true);
|
||
else if(target.isLinked()) target.draw();
|
||
}
|
||
else if(target.isLinked()){
|
||
target.draw();
|
||
}
|
||
else{
|
||
target.link();
|
||
}
|
||
},
|
||
ai:{
|
||
order:7.5,
|
||
value:4,
|
||
useful:2,
|
||
wuxie:function(){
|
||
return 0;
|
||
},
|
||
result:{
|
||
target:function(player,target){
|
||
if(get.mode()=='versus'){
|
||
if(target.isFriendOf(player)) return target.isLinked()?1:0;
|
||
return target.isLinked()?0:-1;
|
||
}
|
||
return target.isLinked()?1:-1;
|
||
}
|
||
}
|
||
}
|
||
},
|
||
lianjunshengyan:{
|
||
fullskin:true,
|
||
audio:true,
|
||
type:'trick',
|
||
enable:function(card,player){
|
||
if(get.mode()=='guozhan') return !player.isUnseen();
|
||
return true;
|
||
},
|
||
mode:['guozhan','boss'],
|
||
filterTarget:function(card,player,target){
|
||
if(get.mode()=='guozhan') return target!=player&&target.identity!='unknown'&&(target.identity!=player.identity||target.identity=='ye');
|
||
return true;
|
||
},
|
||
selectTarget:function(){
|
||
return get.mode()=='guozhan'?1:-1;
|
||
},
|
||
changeTarget:function(player,targets){
|
||
if(get.mode()=='guozhan'){
|
||
var target=targets[0];
|
||
targets.push(player);
|
||
if(target.identity!='ye'){
|
||
game.filterPlayer(function(current){
|
||
return target!=current&&target.identity==current.identity&&!current.hasSkill('diaohulishan');
|
||
},targets);
|
||
}
|
||
}
|
||
},
|
||
contentBefore:function(){
|
||
if(get.mode()=='guozhan'){
|
||
var evt=event.getParent();
|
||
if(evt&&evt.targets&&evt.targets.contains(player)){
|
||
evt.fixedSeat=true;
|
||
evt.targets.sortBySeat();
|
||
evt.targets.remove(player);
|
||
evt.targets.push(player);
|
||
}
|
||
}
|
||
},
|
||
content:function(){
|
||
'step 0'
|
||
if(get.mode()!='guozhan'){
|
||
if(player==target) target.draw(game.players.length);
|
||
else target.chooseDrawRecover(true);
|
||
event.finish();
|
||
}
|
||
else{
|
||
if(target==player){
|
||
var num=targets.length-1;
|
||
event.num=num;
|
||
var damaged=target.maxHp-target.hp;
|
||
if(damaged==0){
|
||
target.draw(num);
|
||
event.finish();
|
||
}
|
||
else{
|
||
var list=[];
|
||
for(var i=Math.min(num,damaged);i>=0;i--){
|
||
list.push('摸'+(num-i)+'回'+i);
|
||
}
|
||
target.chooseControl(list).set('prompt','请分配自己的摸牌数和回复量').ai=function(){
|
||
if(player.hasSkill('diaohulishan')) return 0;
|
||
if(_status._aozhan) return list.length-1;
|
||
return list.randomGet();
|
||
};
|
||
}
|
||
}
|
||
else{
|
||
target.draw();
|
||
}
|
||
}
|
||
'step 1'
|
||
if(target!=player) target.link(false);
|
||
else if(typeof result.control=='string'){
|
||
var index=result.control.indexOf('回');
|
||
var draw=parseInt(result.control.slice(1,index));
|
||
var recover=parseInt(result.control.slice(index+1));
|
||
if(draw) target.draw(draw);
|
||
if(recover) target.recover(recover);
|
||
}
|
||
},
|
||
ai:{
|
||
order:3,
|
||
value:4,
|
||
useful:2,
|
||
result:{
|
||
target:function(player,target){
|
||
if(player==target) return 2;
|
||
return 1;
|
||
},
|
||
},
|
||
},
|
||
},
|
||
chiling:{
|
||
fullskin:true,
|
||
audio:true,
|
||
type:'trick',
|
||
enable:function(){
|
||
return game.hasPlayer(function(current){
|
||
return current.isUnseen();
|
||
});
|
||
},
|
||
mode:['guozhan'],
|
||
global:['g_chiling1','g_chiling2','g_chiling3'],
|
||
filterTarget:function(card,player,target){
|
||
return target.isUnseen();
|
||
},
|
||
selectTarget:-1,
|
||
chooseai:function(event,player){
|
||
if(player.hasSkillTag('mingzhi_yes')) return '选项一';
|
||
if(_status.event.controls.contains('选项三')){
|
||
if(player.hasSkillTag('mingzhi_no')) return '选项三';
|
||
return Math.random()<0.5?'选项一':'选项三';
|
||
}
|
||
else{
|
||
if(_status.event.getParent().nomingzhi){
|
||
if(_status.event.controls.contains('选项二')) return '选项二';
|
||
return '选项一';
|
||
}
|
||
if(player.hasSkillTag('maixie_hp')||player.hp<=2) return '选项一';
|
||
return Math.random()<0.5?'选项一':'选项二';
|
||
}
|
||
},
|
||
content:function(){
|
||
'step 0'
|
||
var choiceList=['明置一张武将牌,然后摸一张牌','失去1点体力'];
|
||
event.nomingzhi=target.hasSkillTag('nomingzhi',false,null,true);
|
||
if(event.nomingzhi){
|
||
choiceList.shift();
|
||
}
|
||
if(target.countCards('he',{type:'equip'})){
|
||
choiceList.push('弃置一张装备牌');
|
||
}
|
||
target.chooseControl(lib.card.chiling.chooseai).set('prompt','敕令').set('choiceList',choiceList);
|
||
'step 1'
|
||
var index=result.index;
|
||
if(event.nomingzhi){
|
||
index++;
|
||
}
|
||
if(index==0){
|
||
target.chooseControl('主将','副将',function(){
|
||
return Math.floor(Math.random()*2);
|
||
}).set('prompt','选择要明置的武将牌');
|
||
}
|
||
else if(index==1){
|
||
target.loseHp();
|
||
event.finish();
|
||
}
|
||
else{
|
||
target.chooseToDiscard('he',{type:'equip'},true);
|
||
event.finish();
|
||
}
|
||
'step 2'
|
||
if(result.index==0){
|
||
target.showCharacter(0);
|
||
}
|
||
else{
|
||
target.showCharacter(1);
|
||
}
|
||
target.draw();
|
||
},
|
||
ai:{
|
||
order:6,
|
||
result:{
|
||
target:-1
|
||
},
|
||
tag:{
|
||
multitarget:1,
|
||
multineg:1,
|
||
}
|
||
}
|
||
},
|
||
diaohulishan:{
|
||
fullskin:true,
|
||
audio:true,
|
||
type:'trick',
|
||
enable:true,
|
||
global:'g_diaohulishan',
|
||
filterTarget:function(card,player,target){
|
||
return target!=player;
|
||
},
|
||
selectTarget:[1,2],
|
||
content:function(){
|
||
target.addTempSkill('diaohulishan');
|
||
},
|
||
ai:{
|
||
order:10,
|
||
value:4,
|
||
useful:[2,1],
|
||
wuxie:function(){
|
||
return 0;
|
||
},
|
||
result:{
|
||
player:function(player,target){
|
||
var att=get.attitude(player,target);
|
||
if(target.hp==1&&att<0) return 0;
|
||
if(game.hasPlayer(function(current){
|
||
return get.attitude(player,current)<att;
|
||
})){
|
||
var num=1;
|
||
if(target==player.next||target==player.previous){
|
||
num+=0.5;
|
||
}
|
||
return num;
|
||
}
|
||
return 0;
|
||
}
|
||
}
|
||
}
|
||
},
|
||
huxinjing:{
|
||
fullskin:true,
|
||
type:"equip",
|
||
subtype:"equip2",
|
||
skills:['huxinjing'],
|
||
ai:{
|
||
basic:{
|
||
equipValue:6
|
||
},
|
||
},
|
||
},
|
||
huoshaolianying:{
|
||
fullskin:true,
|
||
audio:true,
|
||
type:'trick',
|
||
filterTarget:function(card,player,target){
|
||
if(get.mode()=='guozhan'){
|
||
var next=player.getNext();
|
||
if(!next) return false;
|
||
return target==next||target.inline(next);
|
||
}
|
||
if(player==target) return false;
|
||
if(game.hasPlayer(function(current){
|
||
return current.isLinked()&¤t!=player;
|
||
})){
|
||
if(!target.isLinked()) return false;
|
||
var distance=get.distance(player,target,'absolute');
|
||
return !game.hasPlayer(function(current){
|
||
if(target!=current&¤t!=player&¤t.isLinked()){
|
||
var dist=get.distance(player,current,'absolute');
|
||
if(dist<distance){
|
||
return true;
|
||
}
|
||
if(dist==distance&&parseInt(current.dataset.position)<parseInt(target.dataset.position)){
|
||
return true;
|
||
}
|
||
}
|
||
});
|
||
}
|
||
else{
|
||
var dist=get.distance(player,target);
|
||
return !game.hasPlayer(function(current){
|
||
return current!=player&&get.distance(player,current)<dist
|
||
});
|
||
}
|
||
},
|
||
enable:true,
|
||
selectTarget:-1,
|
||
modTarget:true,
|
||
content:function(){
|
||
target.damage('fire',event.baseDamage||1);
|
||
},
|
||
ai:{
|
||
order:5,
|
||
value:6,
|
||
tag:{
|
||
damage:1,
|
||
natureDamage:1,
|
||
fireDamage:1,
|
||
},
|
||
result:{
|
||
target:function(player,target){
|
||
if(target.hasSkillTag('nofire')||target.hasSkillTag('nodamage')) return 0;
|
||
if(target.hasSkill('xuying')&&target.countCards('h')==0) return 0;
|
||
if(!target.isLinked()){
|
||
return get.damageEffect(target,player,target,'fire');
|
||
}
|
||
return game.countPlayer(function(current){
|
||
if(current.isLinked()){
|
||
return get.sgn(get.damageEffect(current,player,target,'fire'));
|
||
}
|
||
});
|
||
}
|
||
}
|
||
}
|
||
},
|
||
yuanjiao:{
|
||
audio:true,
|
||
fullskin:true,
|
||
type:'trick',
|
||
enable:function(card,player){
|
||
if(get.mode()=='guozhan'&&player.isUnseen()) return false;
|
||
return true;
|
||
},
|
||
filterTarget:function(card,player,target){
|
||
if(get.mode()!='guozhan') return player!=target;
|
||
if(target.identity=='unknown'||player.identity=='unknown') return false;
|
||
if(player==target) return false;
|
||
if(player.identity=='ye') return true;
|
||
return player.identity!=target.identity;
|
||
},
|
||
content:function(){
|
||
game.asyncDraw([target,player],[1,get.mode()=='guozhan'?3:1]);
|
||
},
|
||
ai:{
|
||
basic:{
|
||
useful:4,
|
||
value:8,
|
||
order:9
|
||
},
|
||
result:{
|
||
target:1,
|
||
player:3,
|
||
},
|
||
},
|
||
},
|
||
zhibi:{
|
||
audio:true,
|
||
fullskin:true,
|
||
type:'trick',
|
||
enable:true,
|
||
chongzhu:true,
|
||
filterTarget:function(card,player,target){
|
||
if(player==target) return false;
|
||
return (target.countCards('h')||target.isUnseen(2));
|
||
},
|
||
content:function(){
|
||
"step 0"
|
||
if(!player.storage.zhibi){
|
||
player.storage.zhibi=[];
|
||
}
|
||
player.storage.zhibi.add(target);
|
||
var controls=[];
|
||
if(target.countCards('h')) controls.push('手牌');
|
||
if(target.isUnseen(0)) controls.push('主将');
|
||
if(target.isUnseen(1)) controls.push('副将');
|
||
if(controls.length>1){
|
||
player.chooseControl(controls).set('ai',function(){return 1});
|
||
}
|
||
if(controls.length==0) event.finish();
|
||
"step 1"
|
||
var content;
|
||
var str=get.translation(target)+'的';
|
||
if(result.control){
|
||
if(result.control=='手牌'){
|
||
content=[str+'手牌',target.getCards('h')];
|
||
game.log(player,'观看了',target,'的手牌');
|
||
}
|
||
else if(result.control=='主将'){
|
||
content=[str+'主将',[[target.name1],'character']];
|
||
game.log(player,'观看了',target,'的主将');
|
||
}
|
||
else{
|
||
content=[str+'副将',[[target.name2],'character']];
|
||
game.log(player,'观看了',target,'的副将');
|
||
}
|
||
}
|
||
else if(target.countCards('h')){
|
||
content=[str+'手牌',target.getCards('h')];
|
||
game.log(player,'观看了',target,'的手牌');
|
||
}
|
||
else if(target.isUnseen(0)){
|
||
content=[str+'主将',[[target.name1],'character']];
|
||
game.log(player,'观看了',target,'的主将');
|
||
}
|
||
else{
|
||
content=[str+'副将',[[target.name2],'character']];
|
||
game.log(player,'观看了',target,'的副将');
|
||
}
|
||
player.chooseControl('ok').set('dialog',content);
|
||
},
|
||
mode:['guozhan'],
|
||
ai:{
|
||
order:9.5,
|
||
wuxie:function(){
|
||
return 0;
|
||
},
|
||
result:{
|
||
player:function(player,target){
|
||
if(player.countCards('h')<=player.hp) return 0;
|
||
if(player.storage.zhibi&&player.storage.zhibi.contains(target)) return 0;
|
||
return target.isUnseen()?1:0;
|
||
}
|
||
}
|
||
}
|
||
},
|
||
yiyi:{
|
||
audio:true,
|
||
fullskin:true,
|
||
type:'trick',
|
||
enable:true,
|
||
filterTarget:function(card,player,target){
|
||
if(get.mode()=='guozhan'){
|
||
return target.isFriendOf(player);
|
||
}
|
||
else if(get.is.versus()){
|
||
return player.side==target.side;
|
||
}
|
||
else{
|
||
return true;
|
||
}
|
||
},
|
||
selectTarget:function(){
|
||
if(get.mode()=='guozhan') return -1;
|
||
return [1,3];
|
||
},
|
||
content:function(){
|
||
target.draw(2);
|
||
target.chooseToDiscard(2,'he',true).ai=get.disvalue;
|
||
},
|
||
ai:{
|
||
wuxie:function(){
|
||
return 0;
|
||
},
|
||
basic:{
|
||
useful:3,
|
||
value:3,
|
||
order:5
|
||
},
|
||
result:{
|
||
target:function(player,target){
|
||
var hs=target.getCards('h');
|
||
if(hs.length<=1){
|
||
if(target==player&&(hs.length==0||hs[0].name=='yiyi')){
|
||
return 0;
|
||
}
|
||
return 0.3;
|
||
}
|
||
return Math.sqrt(target.countCards('he'));
|
||
},
|
||
},
|
||
tag:{
|
||
loseCard:1,
|
||
discard:1,
|
||
norepeat:1
|
||
}
|
||
},
|
||
},
|
||
wuliu:{
|
||
fullskin:true,
|
||
type:'equip',
|
||
subtype:'equip1',
|
||
global:'g_wuliu_skill',
|
||
distance:{attackFrom:-1},
|
||
ai:{
|
||
equipValue:function(card,player){
|
||
if(player.identity=='unknown'||player.identity=='ye') return 2.5;
|
||
return 2+game.countPlayer(function(current){
|
||
return current.identity==player.identity;
|
||
})/2;
|
||
},
|
||
basic:{
|
||
equipValue:3
|
||
}
|
||
},
|
||
skills:['wuliu_skill'],
|
||
mode:['guozhan'],
|
||
},
|
||
sanjian:{
|
||
fullskin:true,
|
||
type:'equip',
|
||
subtype:'equip1',
|
||
distance:{attackFrom:-2},
|
||
ai:{
|
||
basic:{
|
||
equipValue:4
|
||
}
|
||
},
|
||
skills:['sanjian_skill']
|
||
},
|
||
jingfanma:{
|
||
fullskin:true,
|
||
type:'equip',
|
||
subtype:'equip4',
|
||
distance:{globalFrom:-1},
|
||
},
|
||
},
|
||
skill:{
|
||
zhaoshu_skill:{
|
||
equipSkill:true,
|
||
charlotte:true,
|
||
enable:'phaseUse',
|
||
usable:1,
|
||
filter:function(event,player){
|
||
var cards=player.getStorage('zhaoshu_cards');
|
||
if(cards.length<4) return false;
|
||
var list=[];
|
||
for(var i of cards){
|
||
list.add(get.suit(i,false));
|
||
if(list.length>=4) return true;
|
||
}
|
||
return false;
|
||
},
|
||
delay:false,
|
||
content:function(){
|
||
'step 0'
|
||
var cards=player.getStorage('zhaoshu_cards');
|
||
game.cardsDiscard(cards);
|
||
player.$throw(cards);
|
||
game.log(player,'移去了',cards);
|
||
cards.length=0;
|
||
player.markSkill('zhaoshu_cards');
|
||
game.delayx();
|
||
'step 1'
|
||
var list=[
|
||
['spade',12,'gz_haolingtianxia'],
|
||
['diamond',1,'gz_kefuzhongyuan'],
|
||
['heart',1,'gz_guguoanbang'],
|
||
['club',12,'gz_wenheluanwu'],
|
||
];
|
||
for(var i=0;i<list.length;i++){
|
||
if(lib.inpile.contains(list[i][2])) list.splice(i--,1);
|
||
}
|
||
if(list.length){
|
||
var card=list.randomGet();
|
||
lib.inpile.add(card[2]);
|
||
player.gain(game.createCard2(card[2],card[0],card[1]),'gain2');
|
||
}
|
||
},
|
||
ai:{
|
||
order:10,
|
||
result:{player:1},
|
||
},
|
||
mark:true,
|
||
marktext:'诏',
|
||
intro:{
|
||
name:'诏书',
|
||
mark:function(dialog,content,player){
|
||
dialog.add(content);
|
||
dialog.addText('<br><li>与你势力相同的角色的出牌阶段限一次,其可以将一张手牌(小势力角色改为至多两张)置于【诏书】上,称为“应”。<br><li>出牌阶段限一次,若你的“应”中包含至少四种花色,则你可以发动“锦囊召唤”,将所有“应”置入弃牌堆,然后随机获得一张未加入游戏的势力锦囊牌。',false);
|
||
if(player.storage.zhaoshu_cards&&player.storage.zhaoshu_cards.length){
|
||
dialog.addAuto(player.storage.zhaoshu_cards)
|
||
}
|
||
},
|
||
content:'cards',
|
||
markcount:function(content,player){
|
||
return player.getStorage('zhaoshu_cards').length;
|
||
},
|
||
onunmark:function(storage,player){
|
||
var cards=player.getStorage('zhaoshu_skill').concat(player.getStorage('zhaoshu_cards'));
|
||
if(cards.length){
|
||
game.log(cards,'进入了弃牌堆');
|
||
game.cardsDiscard(cards);
|
||
player.$throw(cards,1000);
|
||
}
|
||
delete player.storage.zhaoshu_skill;
|
||
delete player.storage.zhaoshu_cards;
|
||
player.removeSkill('zhaoshu_skill');
|
||
},
|
||
},
|
||
},
|
||
zhaoshu_global:{
|
||
enable:'phaseUse',
|
||
usable:1,
|
||
filter:function(event,player){
|
||
if(!player.countCards('h')) return false;
|
||
return game.hasPlayer(function(current){
|
||
return current.hasSkill('zhaoshu_skill')&¤t.isFriendOf(player);
|
||
});
|
||
},
|
||
filterCard:true,
|
||
selectCard:function(){
|
||
if(_status.event.player.isNotMajor()) return [1,2];
|
||
return [1,1];
|
||
},
|
||
position:'h',
|
||
discard:false,
|
||
toStorage:true,
|
||
check:function(card){
|
||
var player=_status.event.player,cards=ui.selected.cards.concat(game.findPlayer(function(current){
|
||
return current.hasSkill('zhaoshu_skill')&¤t.isFriendOf(player);
|
||
}).getStorage('zhaoshu_cards')),suit=get.suit(card,false);
|
||
for(var i of cards){
|
||
if(get.suit(i)==suit) return 0;
|
||
}
|
||
return 5+player.needsToDiscard()*1.5-get.value(card);
|
||
},
|
||
filterTarget:function(card,player,target){
|
||
return target.hasSkill('zhaoshu_skill')&&target.isFriendOf(player);
|
||
},
|
||
selectTarget:function(){
|
||
if(game.countPlayer(function(current){
|
||
return current.hasSkill('zhaoshu_skill')&¤t.isFriendOf(_status.event.player);
|
||
})==1) return -1;
|
||
return 1;
|
||
},
|
||
prompt:function(){
|
||
var player=_status.event.player;
|
||
return '将'+(player.isNotMajor()?'至多两':'一')+'张手牌置于'+get.translation(game.filterPlayer(function(current){
|
||
return current.hasSkill('zhaoshu_skill')&¤t.isFriendOf(player);
|
||
}))+'的【诏书】上';
|
||
},
|
||
prepare:function(cards,player,targets){
|
||
var target=targets[0]
|
||
player.$give(cards,target,false);
|
||
game.log(player,'将',cards,'放在了',target,'的',target.getStorage('zhaoshu_skill'),'上');
|
||
target.markAuto('zhaoshu_cards',cards);
|
||
target.markSkill('zhaoshu_skill');
|
||
},
|
||
content:function(){},
|
||
ai:{
|
||
order:1,
|
||
result:{
|
||
player:1,
|
||
},
|
||
},
|
||
},
|
||
liulongcanjia:{
|
||
equipSkill:true,
|
||
mod:{
|
||
targetEnabled:function(card,player,target){
|
||
if(['equip3','equip4'].contains(get.subtype(card))) return false;
|
||
},
|
||
},
|
||
},
|
||
minguangkai_cancel:{
|
||
equipSkill:true,
|
||
trigger:{target:'useCardToTarget'},
|
||
forced:true,
|
||
check:function(event,player){
|
||
return get.effect(event.target,event.card,event.player,player)<0;
|
||
},
|
||
filter:function(event,player){
|
||
if(['huoshaolianying','huogong'].contains(event.card.name)) return true;
|
||
if(event.card.name=='sha') return event.card.nature=='fire';
|
||
return false;
|
||
},
|
||
content:function(){
|
||
trigger.getParent().targets.remove(player);
|
||
},
|
||
ai:{
|
||
effect:{
|
||
target:function(card,player,target,current){
|
||
if(['huoshaolianying','huogong'].contains(card.name)||(card.name=='sha'&&card.nature=='fire')){
|
||
return 'zeroplayertarget';
|
||
}
|
||
},
|
||
}
|
||
}
|
||
},
|
||
minguangkai_link:{
|
||
equipSkill:true,
|
||
trigger:{player:'linkBefore'},
|
||
forced:true,
|
||
//priority:20,
|
||
filter:function(event,player){
|
||
return !player.isMajor()&&!player.isLinked();
|
||
},
|
||
content:function(){
|
||
trigger.cancel();
|
||
},
|
||
ai:{
|
||
effect:{
|
||
target:function(card,player,target,current){
|
||
if(target.isMinor()&&['tiesuo','lulitongxin'].contains(card.name)){
|
||
return 'zeroplayertarget';
|
||
}
|
||
},
|
||
}
|
||
}
|
||
},
|
||
dinglanyemingzhu_skill:{
|
||
equipSkill:true,
|
||
inherit:'zhiheng',
|
||
filter:function(event,player){
|
||
return !player.hasSkill('gzzhiheng',true);
|
||
},
|
||
selectCard:function(){
|
||
var player=_status.event.player;
|
||
return [1,player.maxHp];
|
||
},
|
||
filterCard:function(card,player){
|
||
return card!=player.getEquip(5);
|
||
},
|
||
prompt:'出牌阶段限一次,你可以弃置至多X张牌(X为你的体力上限),然后摸等量的牌'
|
||
},
|
||
g_dinglanyemingzhu_ai:{
|
||
ai:{
|
||
effect:{
|
||
player:function(card,player){
|
||
if(player.hasSkill('jubao')) return;
|
||
if(card.name=='dinglanyemingzhu'&&game.hasPlayer(function(current){
|
||
return current.hasSkill('jubao')&&get.attitude(player,current)<=0;
|
||
})){
|
||
return [0,0,0,0];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
g_feilongduofeng_ai:{
|
||
ai:{
|
||
effect:{
|
||
player:function(card,player){
|
||
if(player.hasSkill('zhangwu')) return;
|
||
if(card.name=='feilongduofeng'&&game.hasPlayer(function(current){
|
||
return current.hasSkill('zhangwu')&&get.attitude(player,current)<=0;
|
||
})){
|
||
return [0,0,0,0];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
g_taipingyaoshu_ai:{
|
||
ai:{
|
||
effect:{
|
||
player:function(card,player){
|
||
if(player.hasSkill('wendao')) return;
|
||
if(card.name=='taipingyaoshu'&&game.hasPlayer(function(current){
|
||
return current.hasSkill('wendao')&&get.attitude(player,current)<=0;
|
||
})){
|
||
return [0,0,0,0];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
feilongduofeng:{
|
||
equipSkill:true,
|
||
trigger:{player:'useCardToPlayered'},
|
||
logTarget:'target',
|
||
check:function(event,player){
|
||
return get.attitude(player,event.target)<=0;
|
||
},
|
||
filter:function(event,player){
|
||
return event.card.name=='sha'&&event.target.countCards('he');
|
||
},
|
||
content:function(){
|
||
trigger.target.chooseToDiscard('he',true);
|
||
},
|
||
},
|
||
feilongduofeng2:{
|
||
equipSkill:true,
|
||
trigger:{source:'dieAfter'},
|
||
filter:function(event,player){
|
||
if(event.reason&&event.reason.card&&event.reason.card.name=='sha'){
|
||
return event.player.isDead()&&lib.group.contains(player.identity)&&player.isMinor();
|
||
}
|
||
return false;
|
||
},
|
||
logTarget:'player',
|
||
content:function(){
|
||
'step 0'
|
||
var list=[];
|
||
for(var i=0;i<_status.characterlist.length;i++){
|
||
var info=lib.character[_status.characterlist[i]];
|
||
if(info[4]&&info[4].contains('jun')) continue;
|
||
if(info[1]==player.identity){
|
||
list.push(_status.characterlist[i]);
|
||
}
|
||
}
|
||
event.identity=event.player.identity;
|
||
if(trigger.player==game.me&&!_status.auto){
|
||
event.dialog=ui.create.dialog('是否选择一名角色重新加入游戏?',[list,'character']);
|
||
event.filterButton=function(){return true};
|
||
event.player=game.me;
|
||
event.custom.replace.confirm=function(){
|
||
if(!ui.selected.buttons.length){
|
||
event.directresult='refuse';
|
||
}
|
||
else{
|
||
event.directresult=ui.selected.buttons[0].link;
|
||
}
|
||
event.dialog.close();
|
||
if(ui.confirm) ui.confirm.close();
|
||
delete event.player;
|
||
game.resume();
|
||
}
|
||
event.switchToAuto=function(){
|
||
event.directresult=list.randomGet();
|
||
event.dialog.close();
|
||
if(ui.confirm) ui.confirm.close();
|
||
delete event.player;
|
||
};
|
||
game.check();
|
||
game.pause();
|
||
}
|
||
else if(trigger.player.isOnline()){
|
||
trigger.player.send(function(player,list){
|
||
if(_status.auto){
|
||
_status.event._result=list.randomGet();
|
||
}
|
||
else{
|
||
var next=game.createEvent('replacePlayer');
|
||
next.source=player;
|
||
next.list=list;
|
||
next.setContent(function(){
|
||
event.dialog=ui.create.dialog('是否选择一名角色重新加入游戏?',[event.list,'character']);
|
||
event.filterButton=function(){return true};
|
||
event.player=event.source;
|
||
event.custom.replace.confirm=function(){
|
||
if(!ui.selected.buttons.length){
|
||
event.result='refuse';
|
||
}
|
||
else{
|
||
event.result=ui.selected.buttons[0].link;
|
||
}
|
||
event.dialog.close();
|
||
if(ui.confirm) ui.confirm.close();
|
||
delete event.player;
|
||
game.resume();
|
||
game.uncheck();
|
||
}
|
||
event.switchToAuto=function(){
|
||
event.result=list.randomGet();
|
||
event.dialog.close();
|
||
if(ui.confirm) ui.confirm.close();
|
||
delete event.player;
|
||
game.uncheck();
|
||
};
|
||
game.check();
|
||
game.pause();
|
||
});
|
||
}
|
||
game.resume();
|
||
},trigger.player,list);
|
||
trigger.player.wait();
|
||
game.pause();
|
||
}
|
||
else{
|
||
event.directresult=list.randomGet();
|
||
}
|
||
event.list=list;
|
||
'step 1'
|
||
game.uncheck();
|
||
if(!event.directresult){
|
||
if(event.resultOL){
|
||
event.directresult=event.resultOL[trigger.player.playerid];
|
||
}
|
||
if(!event.directresult||event.directresult=='ai'){
|
||
event.directresult=event.list.randomGet();
|
||
}
|
||
}
|
||
if(event.directresult=='refuse'){
|
||
game.log(trigger.player,'拒绝重新加入游戏');
|
||
return;
|
||
}
|
||
game.log(trigger.player,'重新加入游戏');
|
||
var name=event.directresult;
|
||
game.log(trigger.player,'将主将替换为','#b'+name);
|
||
_status.characterlist.remove(name);
|
||
game.broadcastAll(function(source,name,identity){
|
||
source.revive(2,false);
|
||
source.identity=identity;
|
||
source._group=identity;
|
||
source.setIdentity();
|
||
if(source==game.me){
|
||
ui.arena.classList.remove('selecting');
|
||
}
|
||
},trigger.player,name,event.identity);
|
||
trigger.player.draw();
|
||
trigger.player.reinit(trigger.player.name1,name,false);
|
||
trigger.player.removeCharacter(1);
|
||
trigger.getParent('damage').untrigger(false,trigger.player);
|
||
game.addVideo('setIdentity',trigger.player,event.identity);
|
||
}
|
||
},
|
||
feilongduofeng3:{
|
||
equipSkill:true,
|
||
trigger:{source:'dying'},
|
||
filter:function(event,player){
|
||
var evt=event.getParent('damage');
|
||
return evt&&evt.card&&evt.card.name=='sha'&&event.player.countGainableCards(player,'h')>0;
|
||
},
|
||
//priority:7,
|
||
logTarget:'player',
|
||
prompt2:'获得该角色的一张手牌',
|
||
check:function(event,player){
|
||
return get.attitude(player,event.player)<0;
|
||
},
|
||
content:function(){
|
||
player.gainPlayerCard(trigger.player,'h',true);
|
||
},
|
||
},
|
||
taipingyaoshu:{
|
||
equipSkill:true,
|
||
mod:{
|
||
maxHandcard:function(player,num){
|
||
if(get.mode()=='guozhan'){
|
||
if(player.hasSkill('huangjintianbingfu')){
|
||
num+=player.storage.huangjintianbingfu.length;
|
||
}
|
||
return num+game.countPlayer(function(current){
|
||
return current.isFriendOf(player);
|
||
});
|
||
}
|
||
return num+game.countGroup();
|
||
}
|
||
},
|
||
trigger:{player:'damageBegin4'},
|
||
filter:function(event,player){
|
||
if(player.hasSkillTag('unequip2')) return false;
|
||
if(event.source&&event.source.hasSkillTag('unequip',false,{
|
||
name:event.card?event.card.name:null,
|
||
target:player,
|
||
card:event.card
|
||
})) return false;
|
||
if(event.nature) return true;
|
||
},
|
||
forced:true,
|
||
content:function(){
|
||
trigger.cancel();
|
||
},
|
||
ai:{
|
||
nofire:true,
|
||
nothunder:true,
|
||
effect:{
|
||
target:function(card,player,target,current){
|
||
if(target.hasSkillTag('unequip2')) return;
|
||
if(player.hasSkillTag('unequip',false,{
|
||
name:card?card.name:null,
|
||
target:target,
|
||
card:card
|
||
})||player.hasSkillTag('unequip_ai',false,{
|
||
name:card?card.name:null,
|
||
target:target,
|
||
card:card
|
||
})) return;
|
||
if(get.tag(card,'natureDamage')) return 'zerotarget';
|
||
if(card.name=='tiesuo'){
|
||
return [0,0];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
g_taipingyaoshu:{},
|
||
yuxi_skill:{
|
||
equipSkill:true,
|
||
trigger:{player:'phaseDrawBegin2'},
|
||
forced:true,
|
||
filter:function(event,player){
|
||
return !player.isUnseen()&&!event.numFixed;
|
||
},
|
||
content:function(){
|
||
trigger.num++;
|
||
},
|
||
ai:{
|
||
threaten:1.3,
|
||
forceMajor:true,
|
||
},
|
||
group:'yuxi_skill2'
|
||
},
|
||
yuxi_skill2:{
|
||
equipSkill:true,
|
||
trigger:{player:'phaseUseBegin'},
|
||
forced:true,
|
||
filter:function(event,player){
|
||
if(player.isUnseen()) return false;
|
||
return game.hasPlayer(function(current){
|
||
return player.canUse('zhibi',current);
|
||
});
|
||
},
|
||
content:function(){
|
||
player.chooseUseTarget('玉玺:选择知己知彼的目标',{name:'zhibi'});
|
||
}
|
||
},
|
||
xietianzi:{
|
||
forced:true,
|
||
popup:false,
|
||
filter:function(event,player){
|
||
return player.countCards('h')>0;
|
||
},
|
||
trigger:{
|
||
player:'phaseDiscardAfter',
|
||
},
|
||
content:function(){
|
||
"step 0"
|
||
player.removeSkill('xietianzi');
|
||
player.chooseToDiscard('h','是否弃置一张手牌并获得一个额外回合?').set('ai',function(card){
|
||
return 10-get.value(card);
|
||
});
|
||
"step 1"
|
||
if(result.bool){
|
||
player.insertPhase();
|
||
}
|
||
},
|
||
},
|
||
g_chiling1:{
|
||
mode:['guozhan'],
|
||
trigger:{
|
||
player:'loseEnd',
|
||
global:'cardsDiscardEnd',
|
||
},
|
||
filter:function(event,player){
|
||
var evt=event.getParent().relatedEvent;
|
||
if(evt&&evt.name=='useCard') return false;
|
||
for(var i=0;i<event.cards.length;i++){
|
||
if(event.cards[i].name=='chiling'&&get.position(event.cards[i],true)=='d'){
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
},
|
||
forced:true,
|
||
popup:false,
|
||
content:function(){
|
||
var cards=[];
|
||
for(var i=0;i<trigger.cards.length;i++){
|
||
if(trigger.cards[i].name=='chiling'&&get.position(trigger.cards[i],true)=='d'){
|
||
cards.push(trigger.cards[i]);
|
||
}
|
||
}
|
||
if(cards.length){
|
||
game.cardsGotoSpecial(cards);
|
||
game.log(cards,'已被移出游戏');
|
||
_status.chiling=true;
|
||
if(player&&player.popup) player.popup('敕令');
|
||
}
|
||
if(!lib.inpile.contains('zhaoshu')){
|
||
lib.inpile.push('zhaoshu');
|
||
var card=game.createCard2('zhaoshu','club',3);
|
||
game.log(card,'被置于了牌堆底');
|
||
ui.cardPile.appendChild(card);
|
||
game.updateRoundNumber();
|
||
}
|
||
},
|
||
},
|
||
g_chiling2:{},
|
||
g_chiling3:{
|
||
mode:['guozhan'],
|
||
trigger:{player:'phaseAfter'},
|
||
forced:true,
|
||
popup:false,
|
||
filter:function(){
|
||
return _status.chiling==true;
|
||
},
|
||
content:function(){
|
||
'step 0'
|
||
_status.chiling=false;
|
||
var targets=game.filterPlayer(function(target){
|
||
return target.isUnseen();
|
||
});
|
||
targets.sort(lib.sort.seat);
|
||
event.targets=targets;
|
||
'step 1'
|
||
if(event.targets.length){
|
||
var target=event.targets.shift();
|
||
event.current=target;
|
||
var choiceList=['明置一张武将牌,然后摸一张牌','失去1点体力'];
|
||
if(target.countCards('he',{type:'equip'})){
|
||
choiceList.push('弃置一张装备牌');
|
||
}
|
||
target.chooseControl(lib.card.chiling.chooseai).set('prompt','敕令').set('choiceList',choiceList);
|
||
}
|
||
else{
|
||
event.finish();
|
||
}
|
||
'step 2'
|
||
var target=event.current;
|
||
if(result.control=='选项一'){
|
||
target.chooseControl('主将','副将',function(){
|
||
return Math.floor(Math.random()*2);
|
||
}).set('prompt','选择要明置的武将牌');
|
||
}
|
||
else if(result.control=='选项二'){
|
||
target.loseHp();
|
||
event.goto(1);
|
||
}
|
||
else{
|
||
target.chooseToDiscard('he',{type:'equip'},true);
|
||
event.goto(1);
|
||
}
|
||
'step 3'
|
||
var target=event.current;
|
||
if(result.index==0){
|
||
target.showCharacter(0);
|
||
}
|
||
else{
|
||
target.showCharacter(1);
|
||
}
|
||
target.draw();
|
||
event.goto(1);
|
||
}
|
||
},
|
||
g_diaohulishan:{},
|
||
diaohulishan:{
|
||
trigger:{player:['damageBegin3','loseHpBefore','recoverBefore']},
|
||
forced:true,
|
||
popup:false,
|
||
content:function(){
|
||
trigger.cancel();
|
||
},
|
||
mod:{
|
||
cardEnabled:function(){
|
||
return false;
|
||
},
|
||
cardSavable:function(){
|
||
return false;
|
||
},
|
||
targetEnabled:function(){
|
||
return false;
|
||
},
|
||
},
|
||
mark:true,
|
||
intro:{
|
||
content:'不计入距离的计算且不能使用牌且不是牌的合法目标且不能失去/回复体力和受到伤害'
|
||
},
|
||
group:'undist',
|
||
ai:{
|
||
effect:{
|
||
target:function (card,player,target){
|
||
if(get.tag(card,'recover')||get.tag(card,'damage')) return 'zeroplayertarget';
|
||
},
|
||
},
|
||
},
|
||
},
|
||
huxinjing:{
|
||
equipSkill:true,
|
||
trigger:{player:'damageBegin4'},
|
||
// forced:true,
|
||
filter:function(event,player){
|
||
if(player.hasSkillTag('unequip2')) return false;
|
||
if(event.source&&event.source.hasSkillTag('unequip',false,{
|
||
name:event.card?event.card.name:null,
|
||
target:player,
|
||
card:event.card
|
||
})) return false;
|
||
return event.num>=player.hp;
|
||
},
|
||
content:function(){
|
||
trigger.cancel();
|
||
var e2=player.getEquip('huxinjing');
|
||
if(e2){
|
||
player.discard(e2);
|
||
}
|
||
}
|
||
},
|
||
huxinjing2:{
|
||
equipSkill:true,
|
||
trigger:{player:['damageEnd','damageZero']},
|
||
//priority:10,
|
||
forced:true,
|
||
popup:false,
|
||
content:function(){
|
||
var card=player.getEquip('huxinjing');
|
||
if(card){
|
||
player.discard(card);
|
||
}
|
||
player.removeSkill('huxinjing2');
|
||
}
|
||
},
|
||
wuliu_skill:{
|
||
equipSkill:true,
|
||
},
|
||
g_wuliu_skill:{
|
||
equipSkill:true,
|
||
mod:{
|
||
attackFrom:function(from,to,distance){
|
||
return distance-game.countPlayer(function(current){
|
||
if(current==from) return false;
|
||
if(current.identity=='unknown'||current.identity=='ye') return false;
|
||
if(current.identity!=from.identity) return false;
|
||
if(current.hasSkill('wuliu_skill')) return true;
|
||
});
|
||
}
|
||
}
|
||
},
|
||
sanjian_skill:{
|
||
equipSkill:true,
|
||
audio:true,
|
||
trigger:{source:'damageSource'},
|
||
direct:true,
|
||
filter:function(event,player){
|
||
if(event.player.isDead()) return false;
|
||
if(player.countCards('h')==0) return false;
|
||
if(!event.card) return false;
|
||
if(event.card.name!='sha') return false;
|
||
if(!event.notLink()) return false;
|
||
return game.hasPlayer(function(current){
|
||
return current!=event.player&&get.distance(event.player,current)<=1;
|
||
});
|
||
},
|
||
content:function(){
|
||
"step 0"
|
||
var damaged=trigger.player;
|
||
player.chooseCardTarget({
|
||
filterCard:lib.filter.cardDiscardable,
|
||
filterTarget:function(card,player,target){
|
||
var damaged=_status.event.damaged;
|
||
return get.distance(damaged,target)<=1&&target!=damaged;
|
||
},
|
||
ai1:function(card){
|
||
return 9-get.value(card);
|
||
},
|
||
ai2:function(target){
|
||
var player=_status.event.player;
|
||
return get.damageEffect(target,player,player);
|
||
},
|
||
prompt:get.prompt('sanjian')
|
||
}).set('damaged',damaged);
|
||
"step 1"
|
||
if(result.bool){
|
||
player.logSkill('sanjian_skill',result.targets);
|
||
player.discard(result.cards);
|
||
result.targets[0].damage();
|
||
}
|
||
}
|
||
},
|
||
},
|
||
translate:{
|
||
liulongcanjia:'六龙骖驾',
|
||
liulongcanjia_info:'锁定技,你计算与其他角色的距离-1,其他角色计算与你的距离+1。</br>锁定技,当此牌进入你的装备区时,你弃置你装备区内其他坐骑牌;当此牌在你的装备区内,你不能使用其他坐骑牌(你的装备区便不能置入其他坐骑牌)。',
|
||
minguangkai:'明光铠',
|
||
minguangkai_cancel:'明光铠',
|
||
minguangkai_link:'明光铠',
|
||
minguangkai_info:'锁定技,当你成为【火烧连营】、【火攻】或火【杀】的目标时,取消之;若你是小势力角色,你不会被横置。',
|
||
dinglanyemingzhu:'定澜夜明珠',
|
||
dinglanyemingzhu_bg:'珠',
|
||
dinglanyemingzhu_info:'锁定技,你视为拥有技能“制衡”,若你已经有“制衡”,则改为取消弃置牌数的限制。',
|
||
dinglanyemingzhu_skill:'制衡',
|
||
dinglanyemingzhu_skill_info:'出牌阶段限一次,你可以弃置至多X张牌(X为你的体力上限),然后摸等量的牌',
|
||
feilongduofeng:'飞龙夺凤',
|
||
feilongduofeng2:'飞龙夺凤',
|
||
feilongduofeng3:'飞龙夺凤',
|
||
feilongduofeng_info:'当你使用【杀】指定一名角色为目标后,你可令该角色弃置一张牌。当你使用【杀】令其他角色进入濒死状态时,你可以获得其一张手牌。',
|
||
taipingyaoshu:'太平要术',
|
||
taipingyaoshu_info:'锁定技,防止你受到的所有属性伤害;你的手牌上限+X(X为势力数);当你失去装备区里的【太平要术】时,你摸两张牌,然后若你的体力值大于1,你失去1点体力。',
|
||
taipingyaoshu_info_guozhan:'锁定技,防止你受到的所有属性伤害;全场每有一名与你势力相同的角色存活,你的手牌上限便+1;当你失去装备区里的【太平要术】时,你摸两张牌,然后若你的体力值大于1,你失去1点体力。',
|
||
yuxi_skill:'玉玺',
|
||
yuxi_skill2:'玉玺',
|
||
yuxi:'玉玺',
|
||
yuxi_info:'锁定技,若你有明置的武将牌,你的势力视为唯一的大势力;锁定技,摸牌阶段,若你有明置的武将牌,你多摸一张牌;锁定技,出牌阶段开始时,若你有明置的武将牌,你视为使用【知己知彼】',
|
||
xietianzi:'挟令',
|
||
xietianzi_info:'出牌阶段,对自己使用。你结束出牌阶段,若如此做,弃牌阶段结束时,你可以弃置一张手牌,获得一个额外的回合',
|
||
xietianzi_info_guozhan:'出牌阶段,对为大势力角色的你使用。你结束出牌阶段,若如此做,弃牌阶段结束时,你可以弃置一张手牌,获得一个额外的回合',
|
||
shuiyanqijunx:'水淹七军',
|
||
shuiyanqijunx_info:'出牌阶段,对一名其他角色使用。目标角色选择一项:1、弃置装备区里的所有牌(至少一张);2、受到你造成的1点雷电伤害',
|
||
shuiyanqijunx_info_guozhan:'出牌阶段,对一名装备区里有牌的其他角色使用。目标角色选择一项:1、弃置装备区里的所有牌;2、受到你造成的1点雷电伤害',
|
||
lulitongxin:'勠力同心',
|
||
lulitongxin_info:'出牌阶段,对所有大势力角色或所有小势力角色使用。若目标角色:不处于“连环状态”,其横置;处于“连环状态”,其摸一张牌',
|
||
lulitongxin_info_versus:'出牌阶段,对所有敌方角色或所有己方角色使用。若目标角色:为敌方角色且不处于“连环状态”,其横置;为己方角色且处于“连环状态”,其摸一张牌。',
|
||
lianjunshengyan:'联军盛宴',
|
||
lianjunshengyan_info:'出牌阶段,对你和你选择的除你的势力外的一个势力的所有角色。若目标角色:为你,你选择摸Y张牌并回复X-Y点体力(X为该势力的角色数,Y∈[0,X]);不为你,其摸一张牌,然后重置。',
|
||
lianjunshengyan_info_boss:'出牌阶段,对场上所有角色使用。你摸X张牌(X为目存活角色数),其他角色依次选择回复1点体力或摸一张牌。',
|
||
chiling:'敕令',
|
||
chiling_info:'出牌阶段,对所有没有势力的角色使用。目标角色选择一项:1、明置一张武将牌,然后摸一张牌;2、弃置一张装备牌;3、失去1点体力。当【敕令】因判定或弃置而置入弃牌堆时,系统将之移出游戏并将【诏书】置于牌堆底,然后系统于当前回合结束后视为对所有没有势力的角色使用【敕令】。',
|
||
diaohulishan:'调虎离山',
|
||
diaohulishan_info:'出牌阶段,对至多两名其他角色使用。目标角色于此回合结束之前不计入距离的计算且不能使用牌且不是牌的合法目标且不能失去或回复体力或受到伤害。',
|
||
huoshaolianying:'火烧连营',
|
||
huoshaolianying_bg:'烧',
|
||
huoshaolianying_info_guozhan:'出牌阶段,对你的下家和与其处于同一队列的角色使用,每名角色受到一点火焰伤害',
|
||
huoshaolianying_info:'对离你最近的一名横置角色使用(若无横置角色则改为对距离你最近的所有角色使用),对目标造成一点火焰伤害',
|
||
yuanjiao:'远交近攻',
|
||
yuanjiao_info_guozhan:'对一名不同势力的角色使用,对方摸一张牌,然后你摸3张牌',
|
||
yuanjiao_info:'对一名其他角色使用,你与其各摸一张牌',
|
||
yuanjiao_bg:'交',
|
||
zhibi:'知己知彼',
|
||
zhibi_info:'出牌阶段对一名其他角色使用,观看其手牌或武将牌',
|
||
yiyi:'以逸待劳',
|
||
yiyi_info_guozhan:'对与自己势力相同的所有角色使用,摸两张牌然后弃置两张牌',
|
||
yiyi_info_combat:'对所有友方角色使用,摸两张牌然后弃置两张牌',
|
||
yiyi_info:'对与任意三名角色使用,摸两张牌然后弃置两张牌',
|
||
yiyi_bg:'逸',
|
||
wuliu:'吴六剑',
|
||
wuliu_info:'其他与装备者势力相同的角色攻击范围+1',
|
||
sanjian:'三尖两刃刀',
|
||
sanjian_info:'当你使用杀造成伤害后,可以弃置1张手牌对一名距离受伤害角色1以内的其他角色造成1点伤害',
|
||
wuliu_skill:'吴六剑',
|
||
sanjian_skill:'三尖两刃刀',
|
||
jingfanma_bg:'-马',
|
||
jingfanma:'惊帆',
|
||
jingfanma_info:'你的进攻距离+1',
|
||
huxinjing_bg:'镜',
|
||
huxinjing:'护心镜',
|
||
huxinjing_info:'当你受到伤害时,若伤害值大于或等于你的体力值,则你可以将【护心镜】置入弃牌堆,然后防止此伤害。',
|
||
gz_haolingtianxia:'号令天下',
|
||
gz_haolingtianxia_info:'出牌阶段,对一名体力值不为全场最少的角色使用。所有其他角色依次选择一项:①弃置一张牌(魏势力角色无需弃牌),视为对目标角色使用一张【杀】;②弃置目标角色的一张牌(魏势力角色改为获得其一张牌)。',
|
||
gz_kefuzhongyuan:'克复中原',
|
||
gz_kefuzhongyuan_info:'出牌阶段,对任意名角色使用。目标角色选择一项:①视为使用一张【杀】(蜀势力角色以此法使用【杀】的伤害值基数+1);②摸一张牌(蜀势力角色改为摸两张牌)。',
|
||
gz_guguoanbang:'固国安邦',
|
||
gz_guguoanbang_info:'出牌阶段,对你自己使用。你摸八张牌,然后弃置至少六张手牌。然后若你的势力为吴,则你可以将你以此法弃置的牌交给其他吴势力角色(每名角色至多获得两张牌)。',
|
||
gz_wenheluanwu:'文和乱武',
|
||
gz_wenheluanwu_info:'出牌阶段,对所有角色使用。目标角色展示所有手牌,然后你选择一项:①令其弃置两张类型不同的手牌;②你弃置其一张手牌。然后若其为群势力角色且其没有手牌,则其将手牌摸至当前体力值(至多为5)。',
|
||
zhaoshu:'诏书',
|
||
zhaoshu_skill:'锦囊召唤',
|
||
zhaoshu_global:'诏书',
|
||
zhaoshu_info:'<li>出牌阶段,对你自己使用。你将此牌置于目标的武将牌上。<br><li>与你势力相同的角色的出牌阶段限一次,其可以将一张手牌(小势力角色改为至多两张)置于【诏书】上,称为“应”。<br><li>出牌阶段限一次,若你的“应”中包含至少四种花色,则你可以发动“锦囊召唤”,将所有“应”置入弃牌堆,然后随机获得一张未加入游戏的势力锦囊牌。',
|
||
},
|
||
list:[
|
||
['heart',9,'yuanjiao'],
|
||
['club',3,'zhibi'],
|
||
['club',4,'zhibi'],
|
||
['diamond',4,'yiyi'],
|
||
['heart',11,'yiyi'],
|
||
['diamond',6,'wuliu'],
|
||
['diamond',12,'sanjian'],
|
||
['heart',3,'jingfanma'],
|
||
["spade",4,'shunshou'],
|
||
["spade",12,'guohe'],
|
||
["spade",11,'wuxie'],
|
||
['spade',3,'huoshaolianying','fire'],
|
||
['club',11,'huoshaolianying','fire'],
|
||
['heart',12,'huoshaolianying','fire'],
|
||
['club',2,'huxinjing'],
|
||
['heart',2,'diaohulishan'],
|
||
['diamond',10,'diaohulishan'],
|
||
['heart',1,'lianjunshengyan'],
|
||
['club',3,'chiling'],
|
||
['spade',12,'lulitongxin'],
|
||
['club',10,'lulitongxin'],
|
||
['club',12,'shuiyanqijunx'],
|
||
['heart',13,'shuiyanqijunx'],
|
||
['spade',1,'xietianzi'],
|
||
['diamond',1,'xietianzi'],
|
||
['diamond',4,'xietianzi'],
|
||
['club',1,'yuxi'],
|
||
],
|
||
}
|
||
});
|