Add files via upload
|
@ -118,7 +118,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(player.getActCount()+1>=player.actcount) return 0;
|
||||
}
|
||||
var shas=player.getCards('h','sha');
|
||||
if(shas.length>1&&player.getCardUsable('sha')>1){
|
||||
if(shas.length>1&&(player.getCardUsable('sha')>1||player.countCards('h','zhuge'))){
|
||||
return 0;
|
||||
}
|
||||
var card;
|
||||
|
@ -742,6 +742,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(!trigger.baseDamage) trigger.baseDamage=1;
|
||||
trigger.baseDamage+=player.storage.jiu;
|
||||
trigger.jiu=true;
|
||||
trigger.jiu_add=player.storage.jiu;
|
||||
game.addVideo('jiuNode',player,false);
|
||||
game.broadcastAll(function(player){
|
||||
player.removeSkill('jiu');
|
||||
|
|
|
@ -39,7 +39,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
enable:true,
|
||||
fullskin:true,
|
||||
outrange:{
|
||||
global:1,
|
||||
global:2,
|
||||
},
|
||||
filterTarget:lib.filter.notMe,
|
||||
content:function (){
|
||||
|
|
|
@ -1586,6 +1586,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{player:'useCardToPlayered'},
|
||||
audio:true,
|
||||
logTarget:'target',
|
||||
check:function(event,player){
|
||||
if(get.attitude(player,event.target)>0) return true;
|
||||
return target.countCards('h')==0||!target.hasSkillTag('noh');
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(event.card.name!='sha') return false;
|
||||
if(player.sex=='male'&&event.target.sex=='female') return true;
|
||||
|
|
883
card/zhenfa.js
|
@ -1,441 +1,442 @@
|
|||
'use strict';
|
||||
game.import('card',function(lib,game,ui,get,ai,_status){
|
||||
return {
|
||||
name:'zhenfa',
|
||||
card:{
|
||||
pozhenjue:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:true,
|
||||
notarget:true,
|
||||
content:function(){
|
||||
var targets=game.filterPlayer();
|
||||
var n=targets.length;
|
||||
while(n--){
|
||||
game.swapSeat(targets.randomGet(),targets.randomGet());
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:8,
|
||||
result:{
|
||||
player:1,
|
||||
},
|
||||
}
|
||||
},
|
||||
changshezhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(card,player){
|
||||
if(player.inline()) return true;
|
||||
if(player.identity=='unknown'||player.identity=='ye') return false;
|
||||
return game.hasPlayer(function(current){
|
||||
return current!=player&¤t.isFriendOf(player);
|
||||
});
|
||||
},
|
||||
notarget:true,
|
||||
content:function(){
|
||||
if(player.inline()){
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return player.inline(current);
|
||||
});
|
||||
player.line(targets);
|
||||
game.asyncDraw(targets);
|
||||
}
|
||||
else if(player.getNext()){
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.isFriendOf(player);
|
||||
});
|
||||
if(list.length){
|
||||
list.sort(function(a,b){
|
||||
return get.distance(player,a,'absolute')-get.distance(player,b,'absolute');
|
||||
});
|
||||
player.line(list[0]);
|
||||
game.swapSeat(list[0],player.getNext(),true,true);
|
||||
}
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:6.5,
|
||||
result:{
|
||||
player:1,
|
||||
},
|
||||
tag:{
|
||||
draw:1
|
||||
}
|
||||
}
|
||||
},
|
||||
tianfuzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(){
|
||||
return game.hasPlayer(function(current){
|
||||
return current.isMajor();
|
||||
});
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return target.isMajor()&&target.countCards('he')>0;
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
target.chooseToDiscard('he',true).delay=false;
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:-1,
|
||||
},
|
||||
tag:{
|
||||
discard:1
|
||||
}
|
||||
}
|
||||
},
|
||||
dizaizhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(){
|
||||
return game.hasPlayer(function(current){
|
||||
return current.isNotMajor();
|
||||
});
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return target.isNotMajor();
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
target.draw(false);
|
||||
target.$draw();
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:1,
|
||||
},
|
||||
tag:{
|
||||
draw:1
|
||||
}
|
||||
}
|
||||
},
|
||||
fengyangzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
return target.sieged();
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
target.addTempSkill('feiying',{player:'damageAfter'});
|
||||
target.popup('feiying');
|
||||
game.log(target,'获得了技能','【飞影】');
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:2,
|
||||
},
|
||||
}
|
||||
},
|
||||
yunchuizhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
return target.siege();
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
target.addTempSkill('wushuang',{source:'damageAfter'});
|
||||
target.popup('wushuang');
|
||||
game.log(target,'获得了技能','【无双】');
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:2,
|
||||
},
|
||||
}
|
||||
},
|
||||
qixingzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(card,player){
|
||||
return player.siege()||player.sieged();
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return target==player;
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.targets=game.filterPlayer(function(current){
|
||||
return current.siege(player);
|
||||
});
|
||||
'step 1'
|
||||
if(event.targets.length){
|
||||
var current=event.targets.shift();
|
||||
player.line(current,'green');
|
||||
player.discardPlayerCard(current,true);
|
||||
event.redo();
|
||||
}
|
||||
'step 2'
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current.sieged(player);
|
||||
});
|
||||
if(list.length){
|
||||
player.useCard({name:'sha'},list,false);
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:1,
|
||||
},
|
||||
}
|
||||
},
|
||||
shepanzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(card,player){
|
||||
if(player.identity=='unknown'||player.identity=='ye') return false;
|
||||
if(get.population(player.identity)<=1) return false;
|
||||
return game.hasPlayer(function(current){
|
||||
return current!=player&¤t.identity==player.identity&&!player.inline(current);
|
||||
});
|
||||
},
|
||||
notarget:true,
|
||||
content:function(){
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return current.identity==player.identity;
|
||||
});
|
||||
targets.sortBySeat();
|
||||
for(var i=1;i<targets.length;i++){
|
||||
game.swapSeat(targets[i],targets[i-1].next,false);
|
||||
}
|
||||
game.log(get.translation(player.identity)+'势力角色摆成了蛇蟠阵')
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
player:1,
|
||||
},
|
||||
}
|
||||
},
|
||||
longfeizhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(card,player){
|
||||
return player.next.siege(player);
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
if(target.getCards('he').length==0) return false;
|
||||
return target==player.next||target==player.previous;
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.choosePlayerCard(target,'he',true);
|
||||
"step 1"
|
||||
target.discard(result.buttons[0].link);
|
||||
"step 2"
|
||||
if(target==targets[targets.length-1]){
|
||||
player.draw();
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:10,
|
||||
result:{
|
||||
target:-1,
|
||||
player:1
|
||||
},
|
||||
}
|
||||
},
|
||||
huyizhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(card,player){
|
||||
return player.siege(player.next)||player.siege(player.previous);
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return player.siege(target);
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseCard('将一张非基本牌当作杀对'+get.translation(target)+'使用','he',function(card){
|
||||
return get.type(card)!='basic';
|
||||
}).ai=function(card){
|
||||
if(get.effect(target,{name:'sha'},player,player)>0){
|
||||
return 6-get.value(card);
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
player.useCard({name:'sha'},result.cards,target,false);
|
||||
}
|
||||
"step 2"
|
||||
if(target==player.next) event.player2=player.next.next;
|
||||
else event.player2=player.previous.previous;
|
||||
event.player2.chooseCard('将一张非基本牌当作杀对'+get.translation(target)+'使用','he',function(card){
|
||||
return get.type(card)!='basic';
|
||||
}).ai=function(card){
|
||||
if(get.effect(target,{name:'sha'},event.player2,event.player2)>0){
|
||||
return 6-get.value(card);
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
"step 3"
|
||||
if(result.bool){
|
||||
event.player2.useCard({name:'sha'},result.cards,target,false);
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:-2,
|
||||
},
|
||||
}
|
||||
},
|
||||
niaoxiangzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
if(player.identity==target.identity) return false;
|
||||
if(target.identity=='unknown'||target.identity=='ye') return false;
|
||||
return target.identity==target.next.identity||target.identity==target.previous.identity
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
"step 0"
|
||||
var next=target.chooseToRespond({name:'shan'});
|
||||
next.ai=function(card){
|
||||
if(get.damageEffect(target,player,target)>=0) return 0;
|
||||
return 1;
|
||||
};
|
||||
next.autochoose=lib.filter.autoRespondShan;
|
||||
"step 1"
|
||||
if(result.bool==false){
|
||||
target.damage();
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
basic:{
|
||||
order:9,
|
||||
useful:1
|
||||
},
|
||||
result:{
|
||||
target:-1.5,
|
||||
},
|
||||
tag:{
|
||||
respond:1,
|
||||
respondShan:1,
|
||||
damage:1,
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
},
|
||||
},
|
||||
skill:{
|
||||
|
||||
},
|
||||
translate:{
|
||||
zhenfa:'阵法',
|
||||
changshezhen:'长蛇阵',
|
||||
pozhenjue:'破阵决',
|
||||
tianfuzhen:'天覆阵',
|
||||
dizaizhen:'地载阵',
|
||||
fengyangzhen:'风扬阵',
|
||||
yunchuizhen:'云垂阵',
|
||||
qixingzhen:'七星阵',
|
||||
shepanzhen:'蛇蟠阵',
|
||||
shepanzhen_bg:'列',
|
||||
yunchuizhen_bg:'垂',
|
||||
longfeizhen:'龙飞阵',
|
||||
huyizhen:'虎翼阵',
|
||||
niaoxiangzhen:'鸟翔阵',
|
||||
niaoxiangzhen_info:'令所有非你阵营的队列的角色今次打出一张闪,或者受到一点伤害',
|
||||
qixingzhen_info:'弃置所有围攻你的角色各一张牌,然后视为对所有你围攻的角色使用一张不计入出杀次数的杀',
|
||||
// longfeizhen_info:'弃置围攻你的角色各一张牌,然后摸一张牌',
|
||||
// qixingzhen_info:'令我方所有角色进入围攻状态',
|
||||
// shepanzhen_info:'令我方所有角色进入队列状态',
|
||||
// yunchuizhen_info:'令所有围攻角色获得技能【无双】,直到其首次造成伤害',
|
||||
// fengyangzhen_info:'令所有被围攻角色获得技能【飞影】,直到其首次受到伤害',
|
||||
dizaizhen_info:'所有小势力角色摸一张牌',
|
||||
changshezhen_info:'若你处于队列中,与你同一队列的所有角色摸一张牌,否则将与你逆时针距离最近的同势力角色移至你下家',
|
||||
// pozhenjue_info:'将所有角色的顺序随机重排',
|
||||
tianfuzhen_info:'所有大势力角色弃置一张牌'
|
||||
},
|
||||
list:[
|
||||
["diamond",1,'changshezhen'],
|
||||
["club",1,'changshezhen'],
|
||||
// ["spade",1,'changshezhen'],
|
||||
// ["heart",1,'changshezhen'],
|
||||
|
||||
["diamond",2,'tianfuzhen'],
|
||||
// ["club",2,'tianfuzhen'],
|
||||
["spade",2,'tianfuzhen'],
|
||||
["heart",2,'tianfuzhen'],
|
||||
|
||||
["diamond",3,'dizaizhen'],
|
||||
// ["club",3,'dizaizhen'],
|
||||
["spade",3,'dizaizhen'],
|
||||
["heart",3,'dizaizhen'],
|
||||
|
||||
// ["diamond",4,'fengyangzhen'],
|
||||
// ["club",4,'fengyangzhen'],
|
||||
// ["spade",4,'fengyangzhen'],
|
||||
// ["heart",4,'fengyangzhen'],
|
||||
|
||||
// ["diamond",5,'zhonghuangzhen'],
|
||||
// ["club",5,'zhonghuangzhen'],
|
||||
// ["spade",5,'zhonghuangzhen'],
|
||||
// ["heart",5,'zhonghuangzhen'],
|
||||
|
||||
// ["diamond",6,'huyizhen'],
|
||||
// ["club",6,'huyizhen'],
|
||||
// ["spade",6,'huyizhen'],
|
||||
// ["heart",6,'huyizhen'],
|
||||
|
||||
["diamond",7,'qixingzhen'],
|
||||
["club",7,'qixingzhen'],
|
||||
["spade",7,'qixingzhen'],
|
||||
// ["heart",7,'qixingzhen'],
|
||||
|
||||
// ["diamond",8,'shepanzhen'],
|
||||
// ["club",8,'shepanzhen'],
|
||||
// ["spade",8,'shepanzhen'],
|
||||
// ["heart",8,'shepanzhen'],
|
||||
|
||||
// ["diamond",9,'longfeizhen'],
|
||||
// ["club",9,'longfeizhen'],
|
||||
// ["spade",9,'longfeizhen'],
|
||||
// ["heart",9,'longfeizhen'],
|
||||
|
||||
["diamond",11,'niaoxiangzhen'],
|
||||
// ["club",11,'niaoxiangzhen'],
|
||||
["spade",11,'niaoxiangzhen'],
|
||||
["heart",11,'niaoxiangzhen'],
|
||||
|
||||
// ["diamond",12,'yunchuizhen'],
|
||||
// ["club",12,'yunchuizhen'],
|
||||
// ["spade",12,'yunchuizhen'],
|
||||
// ["heart",12,'yunchuizhen'],
|
||||
|
||||
// ["diamond",13,'pozhenjue'],
|
||||
// ["club",13,'pozhenjue'],
|
||||
// ["spade",13,'pozhenjue'],
|
||||
//["heart",13,'pozhenjue'],
|
||||
],
|
||||
};
|
||||
});
|
||||
'use strict';
|
||||
game.import('card',function(lib,game,ui,get,ai,_status){
|
||||
return {
|
||||
name:'zhenfa',
|
||||
card:{
|
||||
pozhenjue:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:true,
|
||||
notarget:true,
|
||||
content:function(){
|
||||
var targets=game.filterPlayer();
|
||||
var n=targets.length;
|
||||
while(n--){
|
||||
game.swapSeat(targets.randomGet(),targets.randomGet());
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:8,
|
||||
result:{
|
||||
player:1,
|
||||
},
|
||||
}
|
||||
},
|
||||
changshezhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(card,player){
|
||||
if(player.inline()) return true;
|
||||
if(player.identity=='unknown'||player.identity=='ye') return false;
|
||||
return game.hasPlayer(function(current){
|
||||
return current!=player&¤t.isFriendOf(player);
|
||||
});
|
||||
},
|
||||
notarget:true,
|
||||
content:function(){
|
||||
if(player.inline()){
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return player.inline(current);
|
||||
});
|
||||
player.line(targets);
|
||||
game.asyncDraw(targets);
|
||||
}
|
||||
else if(player.getNext()){
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.isFriendOf(player);
|
||||
});
|
||||
if(list.length){
|
||||
list.sort(function(a,b){
|
||||
return get.distance(player,a,'absolute')-get.distance(player,b,'absolute');
|
||||
});
|
||||
player.line(list[0]);
|
||||
game.swapSeat(list[0],player.getNext(),true,true);
|
||||
}
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:6.5,
|
||||
result:{
|
||||
player:1,
|
||||
},
|
||||
tag:{
|
||||
draw:1
|
||||
}
|
||||
}
|
||||
},
|
||||
tianfuzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(){
|
||||
return game.hasPlayer(function(current){
|
||||
return current.isMajor();
|
||||
});
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return target.isMajor()&&target.countCards('he')>0;
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
target.chooseToDiscard('he',true).delay=false;
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:-1,
|
||||
},
|
||||
tag:{
|
||||
discard:1
|
||||
}
|
||||
}
|
||||
},
|
||||
dizaizhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(){
|
||||
return game.hasPlayer(function(current){
|
||||
return current.isNotMajor();
|
||||
});
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return target.isNotMajor();
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
target.draw(false);
|
||||
target.$draw();
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:1,
|
||||
},
|
||||
tag:{
|
||||
draw:1
|
||||
}
|
||||
}
|
||||
},
|
||||
fengyangzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
return target.sieged();
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
target.addTempSkill('feiying',{player:'damageAfter'});
|
||||
target.popup('feiying');
|
||||
game.log(target,'获得了技能','【飞影】');
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:2,
|
||||
},
|
||||
}
|
||||
},
|
||||
yunchuizhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
return target.siege();
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
target.addTempSkill('wushuang',{source:'damageAfter'});
|
||||
target.popup('wushuang');
|
||||
game.log(target,'获得了技能','【无双】');
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:2,
|
||||
},
|
||||
}
|
||||
},
|
||||
qixingzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(card,player){
|
||||
return player.siege()||player.sieged();
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return target==player;
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.targets=game.filterPlayer(function(current){
|
||||
return current.siege(player);
|
||||
});
|
||||
'step 1'
|
||||
if(event.targets.length){
|
||||
var current=event.targets.shift();
|
||||
player.line(current,'green');
|
||||
player.discardPlayerCard(current,true);
|
||||
event.redo();
|
||||
}
|
||||
'step 2'
|
||||
var card={name:'sha',isCard:true};
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current.siege(player)&&player.canUse(card,current);
|
||||
});
|
||||
if(list.length){
|
||||
player.useCard(card,list,false);
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:1,
|
||||
},
|
||||
}
|
||||
},
|
||||
shepanzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(card,player){
|
||||
if(player.identity=='unknown'||player.identity=='ye') return false;
|
||||
if(get.population(player.identity)<=1) return false;
|
||||
return game.hasPlayer(function(current){
|
||||
return current!=player&¤t.identity==player.identity&&!player.inline(current);
|
||||
});
|
||||
},
|
||||
notarget:true,
|
||||
content:function(){
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return current.identity==player.identity;
|
||||
});
|
||||
targets.sortBySeat();
|
||||
for(var i=1;i<targets.length;i++){
|
||||
game.swapSeat(targets[i],targets[i-1].next,false);
|
||||
}
|
||||
game.log(get.translation(player.identity)+'势力角色摆成了蛇蟠阵')
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
player:1,
|
||||
},
|
||||
}
|
||||
},
|
||||
longfeizhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(card,player){
|
||||
return player.next.siege(player);
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
if(target.getCards('he').length==0) return false;
|
||||
return target==player.next||target==player.previous;
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.choosePlayerCard(target,'he',true);
|
||||
"step 1"
|
||||
target.discard(result.buttons[0].link);
|
||||
"step 2"
|
||||
if(target==targets[targets.length-1]){
|
||||
player.draw();
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:10,
|
||||
result:{
|
||||
target:-1,
|
||||
player:1
|
||||
},
|
||||
}
|
||||
},
|
||||
huyizhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:function(card,player){
|
||||
return player.siege(player.next)||player.siege(player.previous);
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return player.siege(target);
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseCard('将一张非基本牌当作杀对'+get.translation(target)+'使用','he',function(card){
|
||||
return get.type(card)!='basic';
|
||||
}).ai=function(card){
|
||||
if(get.effect(target,{name:'sha'},player,player)>0){
|
||||
return 6-get.value(card);
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
player.useCard({name:'sha'},result.cards,target,false);
|
||||
}
|
||||
"step 2"
|
||||
if(target==player.next) event.player2=player.next.next;
|
||||
else event.player2=player.previous.previous;
|
||||
event.player2.chooseCard('将一张非基本牌当作杀对'+get.translation(target)+'使用','he',function(card){
|
||||
return get.type(card)!='basic';
|
||||
}).ai=function(card){
|
||||
if(get.effect(target,{name:'sha'},event.player2,event.player2)>0){
|
||||
return 6-get.value(card);
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
"step 3"
|
||||
if(result.bool){
|
||||
event.player2.useCard({name:'sha'},result.cards,target,false);
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:-2,
|
||||
},
|
||||
}
|
||||
},
|
||||
niaoxiangzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
enable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
if(player.identity==target.identity) return false;
|
||||
if(target.identity=='unknown'||target.identity=='ye') return false;
|
||||
return target.identity==target.next.identity||target.identity==target.previous.identity
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
"step 0"
|
||||
var next=target.chooseToRespond({name:'shan'});
|
||||
next.ai=function(card){
|
||||
if(get.damageEffect(target,player,target)>=0) return 0;
|
||||
return 1;
|
||||
};
|
||||
next.autochoose=lib.filter.autoRespondShan;
|
||||
"step 1"
|
||||
if(result.bool==false){
|
||||
target.damage();
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
basic:{
|
||||
order:9,
|
||||
useful:1
|
||||
},
|
||||
result:{
|
||||
target:-1.5,
|
||||
},
|
||||
tag:{
|
||||
respond:1,
|
||||
respondShan:1,
|
||||
damage:1,
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
},
|
||||
},
|
||||
skill:{
|
||||
|
||||
},
|
||||
translate:{
|
||||
zhenfa:'阵法',
|
||||
changshezhen:'长蛇阵',
|
||||
pozhenjue:'破阵决',
|
||||
tianfuzhen:'天覆阵',
|
||||
dizaizhen:'地载阵',
|
||||
fengyangzhen:'风扬阵',
|
||||
yunchuizhen:'云垂阵',
|
||||
qixingzhen:'七星阵',
|
||||
shepanzhen:'蛇蟠阵',
|
||||
shepanzhen_bg:'列',
|
||||
yunchuizhen_bg:'垂',
|
||||
longfeizhen:'龙飞阵',
|
||||
huyizhen:'虎翼阵',
|
||||
niaoxiangzhen:'鸟翔阵',
|
||||
niaoxiangzhen_info:'令所有非你阵营的队列的角色今次打出一张闪,或者受到一点伤害',
|
||||
qixingzhen_info:'弃置所有围攻你的角色各一张牌,然后视为对所有你围攻的角色使用一张不计入出杀次数的杀',
|
||||
// longfeizhen_info:'弃置围攻你的角色各一张牌,然后摸一张牌',
|
||||
// qixingzhen_info:'令我方所有角色进入围攻状态',
|
||||
// shepanzhen_info:'令我方所有角色进入队列状态',
|
||||
// yunchuizhen_info:'令所有围攻角色获得技能【无双】,直到其首次造成伤害',
|
||||
// fengyangzhen_info:'令所有被围攻角色获得技能【飞影】,直到其首次受到伤害',
|
||||
dizaizhen_info:'所有小势力角色摸一张牌',
|
||||
changshezhen_info:'若你处于队列中,与你同一队列的所有角色摸一张牌,否则将与你逆时针距离最近的同势力角色移至你下家',
|
||||
// pozhenjue_info:'将所有角色的顺序随机重排',
|
||||
tianfuzhen_info:'所有大势力角色弃置一张牌'
|
||||
},
|
||||
list:[
|
||||
["diamond",1,'changshezhen'],
|
||||
["club",1,'changshezhen'],
|
||||
// ["spade",1,'changshezhen'],
|
||||
// ["heart",1,'changshezhen'],
|
||||
|
||||
["diamond",2,'tianfuzhen'],
|
||||
// ["club",2,'tianfuzhen'],
|
||||
["spade",2,'tianfuzhen'],
|
||||
["heart",2,'tianfuzhen'],
|
||||
|
||||
["diamond",3,'dizaizhen'],
|
||||
// ["club",3,'dizaizhen'],
|
||||
["spade",3,'dizaizhen'],
|
||||
["heart",3,'dizaizhen'],
|
||||
|
||||
// ["diamond",4,'fengyangzhen'],
|
||||
// ["club",4,'fengyangzhen'],
|
||||
// ["spade",4,'fengyangzhen'],
|
||||
// ["heart",4,'fengyangzhen'],
|
||||
|
||||
// ["diamond",5,'zhonghuangzhen'],
|
||||
// ["club",5,'zhonghuangzhen'],
|
||||
// ["spade",5,'zhonghuangzhen'],
|
||||
// ["heart",5,'zhonghuangzhen'],
|
||||
|
||||
// ["diamond",6,'huyizhen'],
|
||||
// ["club",6,'huyizhen'],
|
||||
// ["spade",6,'huyizhen'],
|
||||
// ["heart",6,'huyizhen'],
|
||||
|
||||
["diamond",7,'qixingzhen'],
|
||||
["club",7,'qixingzhen'],
|
||||
["spade",7,'qixingzhen'],
|
||||
// ["heart",7,'qixingzhen'],
|
||||
|
||||
// ["diamond",8,'shepanzhen'],
|
||||
// ["club",8,'shepanzhen'],
|
||||
// ["spade",8,'shepanzhen'],
|
||||
// ["heart",8,'shepanzhen'],
|
||||
|
||||
// ["diamond",9,'longfeizhen'],
|
||||
// ["club",9,'longfeizhen'],
|
||||
// ["spade",9,'longfeizhen'],
|
||||
// ["heart",9,'longfeizhen'],
|
||||
|
||||
["diamond",11,'niaoxiangzhen'],
|
||||
// ["club",11,'niaoxiangzhen'],
|
||||
["spade",11,'niaoxiangzhen'],
|
||||
["heart",11,'niaoxiangzhen'],
|
||||
|
||||
// ["diamond",12,'yunchuizhen'],
|
||||
// ["club",12,'yunchuizhen'],
|
||||
// ["spade",12,'yunchuizhen'],
|
||||
// ["heart",12,'yunchuizhen'],
|
||||
|
||||
// ["diamond",13,'pozhenjue'],
|
||||
// ["club",13,'pozhenjue'],
|
||||
// ["spade",13,'pozhenjue'],
|
||||
//["heart",13,'pozhenjue'],
|
||||
],
|
||||
};
|
||||
});
|
||||
|
|
|
@ -4035,8 +4035,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(result.bool){
|
||||
player.logSkill('nsdufu',result.targets);
|
||||
trigger.source=result.targets[0];
|
||||
trigger.untrigger();
|
||||
trigger.trigger('damageBefore');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1622,7 +1622,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{player:'phaseDrawBegin2'},
|
||||
//priority:-5,
|
||||
filter:function(event,player){
|
||||
return player.hp<player.maxHp;
|
||||
return !event.numFixed&&player.hp<player.maxHp;
|
||||
},
|
||||
forced:true,
|
||||
content:function(){
|
||||
|
@ -1783,9 +1783,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
shelie:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseDrawBegin1'},
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
trigger.cancel();
|
||||
trigger.changeToZero();
|
||||
event.cards=get.cards(5);
|
||||
event.videoId=lib.status.videoId++;
|
||||
game.broadcastAll(function(player,id,cards){
|
||||
|
|
5546
character/gujian.js
|
@ -476,7 +476,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
oldhuanjue:{
|
||||
trigger:{global:'useCard'},
|
||||
trigger:{global:'useCard1'},
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
if(event.targets.length!=1) return false;
|
||||
|
@ -536,9 +536,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.card=card;
|
||||
game.log(player,'将',trigger.card,'变为',card);
|
||||
// if(!event.isMine()) game.delayx();
|
||||
trigger.untrigger();
|
||||
trigger.card=card;
|
||||
trigger.card=get.autoViewAs(card);
|
||||
trigger.cards=[card];
|
||||
game.cardsGotoOrdering(card).relatedEvent=trigger;
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
|
@ -552,8 +552,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.line(trigger.player,'green');
|
||||
}
|
||||
game.delayx(0.5);
|
||||
'step 3'
|
||||
trigger.trigger('useCard');
|
||||
},
|
||||
ai:{
|
||||
threaten:0.1
|
||||
|
@ -7204,7 +7202,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
huanjue:{
|
||||
trigger:{player:'useCard'},
|
||||
trigger:{player:'useCard1'},
|
||||
frequent:true,
|
||||
filter:function(event,player){
|
||||
if(event._huanjue) return false;
|
||||
|
@ -7288,9 +7286,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.card=card;
|
||||
game.log(player,'将',trigger.card,'变为',card);
|
||||
// if(!event.isMine()) game.delayx();
|
||||
trigger.untrigger();
|
||||
trigger.card=card;
|
||||
trigger.card=get.autoViewAs(card);
|
||||
trigger.cards=[card];
|
||||
game.cardsGotoOrdering(card).relatedEvent=trigger;
|
||||
trigger._huanjue=true;
|
||||
}
|
||||
else{
|
||||
|
@ -7313,7 +7311,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
stat[trigger.card.name]++;
|
||||
}
|
||||
trigger.trigger('useCard');
|
||||
},
|
||||
draw:function(){
|
||||
player.draw();
|
||||
|
@ -7397,10 +7394,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
);
|
||||
event.card=card;
|
||||
game.log(player,'将',trigger.card,'变为',card);
|
||||
// if(!event.isMine()) game.delayx();
|
||||
trigger.untrigger();
|
||||
trigger.card=card;
|
||||
trigger.card=get.autoViewAs(card);
|
||||
trigger.cards=[card];
|
||||
game.cardsGotoOrdering(card);
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
|
@ -7415,7 +7411,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
game.delayx(0.5);
|
||||
'step 3'
|
||||
trigger.trigger('useCard');
|
||||
trigger.insertAfter(lib.skill.huanjue.draw,{player:trigger.player});
|
||||
},
|
||||
draw:function(){
|
||||
|
|
|
@ -6,12 +6,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
connect:true,
|
||||
characterSort:{
|
||||
mobile:{
|
||||
mobile_default:["miheng","taoqian","liuzan","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding"],
|
||||
mobile_default:["miheng","taoqian","liuzan","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui"],
|
||||
mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan"],
|
||||
mobile_sunben:["re_sunben"],
|
||||
},
|
||||
},
|
||||
character:{
|
||||
zhangyì:['male','shu',4,['zhiyi']],
|
||||
jiakui:['male','wei',3,['zhongzuo','wanlan']],
|
||||
re_jikang:["male","wei",3,["new_qingxian","new_juexiang"]],
|
||||
old_bulianshi:['female','wu',3,['anxu','zhuiyi']],
|
||||
miheng:['male','qun',3,['kuangcai','shejian']],
|
||||
|
@ -44,6 +46,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']],
|
||||
},
|
||||
characterIntro:{
|
||||
zhangyì:'张翼(?-264年),字伯恭,益州犍为郡武阳县人。三国时期蜀汉将领。历任梓潼、广汉、蜀郡三郡太守,出任庲降都督,后随诸葛亮和姜维北伐,官至左车骑将军,领冀州刺史。初封关内侯,进爵都亭侯。蜀汉灭亡后,魏将钟会密谋造反,成都大乱,张翼亦为乱兵所杀。张翼是蜀汉第三任庲降都督,由于执法严厉,不得南夷欢心。在北伐上,张翼认为国小民疲,不应滥用武力,是蜀汉朝廷当时极少敢当朝和姜维争辩北伐问题的大臣。',
|
||||
jiakui:'贾逵(174年—228年),本名贾衢,字梁道,河东襄陵人(今山西临汾县)。汉末三国时期魏国名臣,西晋开国功臣贾充父亲。初为并州郡吏,迁渑池县令,拜弘农太守,历仕曹操、曹丕、曹叡三世,是曹魏政权中具有军政才干的人物,终其一生为魏国统一事业作出卓越贡献。担任豫州刺史期间,兴修水利,凿通运河二百余里,时称“贾侯渠”,便利民生。随同曹丕伐吴,进封阳里亭侯,加号建威将军。石亭之战,率军救出曹休。太和二年,去世,赠本官,谥号为肃,《唐会要》将其尊为魏晋八君子之一。',
|
||||
shenpei:'审配(?-204年),字正南,魏郡阴安(今河北清丰北)人。为人正直, 袁绍领冀州,审配被委以腹心之任,并总幕府。河北平定,袁绍以审配、逢纪统军事,审配恃其强盛,力主与曹操决战。曾率领弓弩手大破曹军于官渡。官渡战败,审配二子被俘,反因此受谮见疑,幸得逢纪力保。袁绍病死,审配等矫诏立袁尚为嗣,导致兄弟相争,被曹操各个击破。曹操围邺,审配死守数月,终城破被擒,拒不投降,慷慨受死。',
|
||||
hujinding:'胡金定,女,传说中关羽之妻。关索之母,配偶关羽,出处《花关索传》和元代《三国志评话》民间传说人物。',
|
||||
},
|
||||
|
@ -86,7 +90,102 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
characterFilter:{},
|
||||
skill:{
|
||||
|
||||
zhongzuo:{
|
||||
audio:2,
|
||||
trigger:{global:'phaseEnd'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.getHistory('damage').length>0||player.getHistory('sourceDamage').length>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('zhongzuo'),'令一名角色摸两张牌。若其已受伤,则你摸一张牌。').set('ai',function(target){
|
||||
if(target.hasSkillTag('nogain')&&target!=_status.currentPhase) return target.isDamaged()?0:1;
|
||||
var att=get.attitude(_status.event.player,target);
|
||||
if(target.isDamaged()) att=att*1.2;
|
||||
return att;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('zhongzuo',target);
|
||||
target.draw(2);
|
||||
if(target.isDamaged()) player.draw();
|
||||
}
|
||||
},
|
||||
},
|
||||
wanlan:{
|
||||
audio:2,
|
||||
trigger:{global:'dying'},
|
||||
check:function(){return false},
|
||||
limited:true,
|
||||
unique:true,
|
||||
filter:function(event,player){
|
||||
return event.player.hp<=0&&player.countCards('h')>0;
|
||||
},
|
||||
skillAnimation:true,
|
||||
animationColor:'thunder',
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.awakenSkill('wanlan');
|
||||
player.discard(player.getCards('h'));
|
||||
'step 1'
|
||||
var num=1-trigger.player.hp;
|
||||
if(num) trigger.player.recover(num);
|
||||
'step 2'
|
||||
if(_status.currentPhase&&_status.currentPhase.isAlive()) _status.currentPhase.damage();
|
||||
},
|
||||
},
|
||||
zhiyi:{
|
||||
audio:2,
|
||||
trigger:{player:['useCard','respond']},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(get.type(event.card)!='basic') return false;
|
||||
var history=player.getHistory('useCard',function(evt){
|
||||
return get.type(evt.card)=='basic';
|
||||
}).concat(player.getHistory('respond',function(evt){
|
||||
return get.type(evt.card)=='basic';
|
||||
}));
|
||||
return history.length==1&&history[0]==event;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var info=get.info(trigger.card);
|
||||
if(!info||!info.enable) event._result={index:0};
|
||||
else{
|
||||
var evt=trigger;
|
||||
if(evt.respondTo&&evt.getParent('useCard').name=='useCard') evt=evt.getParent('useCard');
|
||||
event.evt=evt;
|
||||
player.chooseControl().set('prompt','执义:请选择一项').set('choiceList',[
|
||||
'摸一张牌',
|
||||
'于'+get.translation(evt.card)+'的使用结算结束之后视为使用一张'+get.translation({name:trigger.card.name,nature:trigger.card.nature,isCard:true}),
|
||||
]).set('ai',function(){return _status.event.choice}).set('choice',function(){
|
||||
var card={name:trigger.card.name,nature:trigger.card.nature,isCard:true};
|
||||
if(card.name=='sha'){
|
||||
if(player.getUseValue(card)>0) return 1;
|
||||
}
|
||||
else if(card.name=='tao'){
|
||||
var hp=player.maxHp-player.hp;
|
||||
if(trigger.targets.contains(player)) hp--;
|
||||
return hp>0?1:0;
|
||||
}
|
||||
return 0;
|
||||
}());
|
||||
}
|
||||
'step 1'
|
||||
if(result.index==0){
|
||||
player.draw();
|
||||
}
|
||||
else{
|
||||
var next=player.chooseUseTarget({name:trigger.card.name,nature:trigger.card.nature},false);
|
||||
_status.event.next.remove(next);
|
||||
event.evt.after.push(next);
|
||||
next.logSkill='zhiyi';
|
||||
}
|
||||
},
|
||||
},
|
||||
//表演测试
|
||||
qiaosi_map:{charlotte:true},
|
||||
qiaosi:{
|
||||
|
@ -1685,6 +1784,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
translate:{
|
||||
zhangyì:'张翼',
|
||||
jiakui:'贾逵',
|
||||
zhiyi:'执义',
|
||||
zhiyi_info:'锁定技,当你于一回合内使用或打出第一张基本牌时,你选择一项:1.摸一张牌。2.于此牌A(若此牌是因响应牌B而使用或打出的,则改为牌B)的使用或打出流程结算完成后,视为使用一张与此牌名称和属性相同的卡牌。',
|
||||
zhongzuo:'忠佐',
|
||||
zhongzuo_info:'一名角色的回合结束时,若你于此回合内造成或受到过伤害,则你可以令一名角色摸两张牌。若该角色已受伤,则你摸一张牌。',
|
||||
wanlan:'挽澜',
|
||||
wanlan_info:'限定技,当一名角色进入濒死状态时,你可以弃置所有手牌并令其回复体力至1点,然后对当前回合角色造成1点伤害。',
|
||||
re_jikang:"手杀嵇康",
|
||||
old_bulianshi:'手杀步练师',
|
||||
old_caochun:'旧曹纯',
|
||||
|
|
|
@ -158,9 +158,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
trigger.target=player.storage.mhuanyi_target[0];
|
||||
trigger.untrigger();
|
||||
trigger.trigger('useCardToBefore');
|
||||
trigger.trigger(trigger.card.name+'Before');
|
||||
player.removeSkill('mhuanyi_target');
|
||||
}
|
||||
},
|
||||
|
|
|
@ -80,10 +80,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
old_fuhun:{
|
||||
audio:'fuhun',
|
||||
trigger:{player:'phaseDrawBefore'},
|
||||
trigger:{player:'phaseDrawBegin1'},
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
trigger.cancel();
|
||||
trigger.changeToZero();
|
||||
'step 1'
|
||||
var cards=get.cards(2);
|
||||
event.cards=cards;
|
||||
|
|
|
@ -9,10 +9,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
refresh_huo:["re_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","re_pangtong","ol_yuanshao","re_pangde"],
|
||||
refresh_lin:['re_zhurong','re_menghuo','re_dongzhuo','re_sunjian','re_caopi','re_xuhuang'],
|
||||
refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce'],
|
||||
refresh_yijiang:['re_xusheng','re_wuguotai','re_gaoshun'],
|
||||
},
|
||||
},
|
||||
connect:true,
|
||||
character:{
|
||||
re_xusheng:['male','wu',4,['repojun']],
|
||||
re_wuguotai:['male','wu',3,['reganlu','buyi']],
|
||||
re_gaoshun:['male','qun',4,['rexianzhen','rejinjiu']],
|
||||
re_caocao:['male','wei',4,['new_rejianxiong','hujia'],['zhu']],
|
||||
re_simayi:['male','wei',3,['refankui','reguicai']],
|
||||
re_guojia:['male','wei',3,['tiandu','new_reyiji']],
|
||||
|
@ -88,6 +92,282 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sunben:['zhouyu','taishici','daqiao'],
|
||||
},
|
||||
skill:{
|
||||
rexianzhen:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterTarget:function(card,player,target){
|
||||
return player.canCompare(target);
|
||||
},
|
||||
filter:function(event,player){
|
||||
return player.countCards('h')>0;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseToCompare(target);
|
||||
"step 1"
|
||||
if(result.player&&(result.player.name=='sha'||player.hasSkill('rejinjiu')&&result.player.name=='jiu')) player.addTempSkill('rexianzhen4');
|
||||
if(result.bool){
|
||||
player.storage[event.name]=target;
|
||||
player.addTempSkill(event.name+2);
|
||||
}
|
||||
else{
|
||||
player.addTempSkill(event.name+3);
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:function(name,player){
|
||||
var cards=player.getCards('h');
|
||||
if(player.countCards('h','sha')==0){
|
||||
return 1;
|
||||
}
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(cards[i].name!='sha'&&cards[i].number>11&&get.value(cards[i])<7){
|
||||
return 9;
|
||||
}
|
||||
}
|
||||
return get.order({name:'sha'})-1;
|
||||
},
|
||||
result:{
|
||||
player:function(player){
|
||||
if(player.countCards('h','sha')>0) return 0;
|
||||
var num=player.countCards('h');
|
||||
if(num>player.hp) return 0;
|
||||
if(num==1) return -2;
|
||||
if(num==2) return -1;
|
||||
return -0.7;
|
||||
},
|
||||
target:function(player,target){
|
||||
var num=target.countCards('h');
|
||||
if(num==1) return -1;
|
||||
if(num==2) return -0.7;
|
||||
return -0.5
|
||||
},
|
||||
},
|
||||
threaten:1.3
|
||||
}
|
||||
},
|
||||
rexianzhen2:{
|
||||
charlotte:true,
|
||||
mod:{
|
||||
targetInRange:function(card,player,target){
|
||||
if(target==player.storage.rexianzhen) return true;
|
||||
},
|
||||
cardUsable:function(card,player,num){
|
||||
if(card.name=='sha'&&typeof num=='number') return num+100;
|
||||
},
|
||||
playerEnabled:function(card,player,target){
|
||||
if(card.name=='sha'&&player.storage.rexianzhen!=target&&!ui.selected.targets.contains(player.storage.rexianzhen)){
|
||||
var num=player.getCardUsable(card)-100;
|
||||
if(num<=0) return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
unequip:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(arg.target!=player.storage.rexianzhen) return false;
|
||||
},
|
||||
}
|
||||
},
|
||||
rexianzhen3:{
|
||||
charlotte:true,
|
||||
mod:{
|
||||
cardEnabled:function(card){if(card.name=='sha') return false}
|
||||
}
|
||||
},
|
||||
rexianzhen4:{
|
||||
mod:{
|
||||
ignoredHandcard:function(card,player){
|
||||
if(get.name(card)=='sha'){
|
||||
return true;
|
||||
}
|
||||
},
|
||||
cardDiscardable:function(card,player,name){
|
||||
if(name=='phaseDiscard'&&get.name(card)=='sha'){
|
||||
return false;
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
rejinjiu:{
|
||||
mod:{
|
||||
cardname:function(card,player){
|
||||
if(card.name=='jiu') return 'sha';
|
||||
},
|
||||
},
|
||||
ai:{
|
||||
skillTagFilter:function(player){
|
||||
if(!player.countCards('h','jiu')) return false;
|
||||
},
|
||||
respondSha:true,
|
||||
},
|
||||
audio:2,
|
||||
trigger:{player:['useCard1','respond']},
|
||||
firstDo:true,
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.card.name=='sha'&&!event.skill&&
|
||||
event.cards.length==1&&event.cards[0].name=='jiu';
|
||||
},
|
||||
content:function(){},
|
||||
group:'rejinjiu2',
|
||||
global:'rejinjiu3',
|
||||
},
|
||||
rejinjiu3:{
|
||||
mod:{
|
||||
cardEnabled:function(card,player){
|
||||
if(card.name=='jiu'&&_status.currentPhase&&_status.currentPhase!=player&&_status.currentPhase.hasSkill('rejinjiu')) return false;
|
||||
},
|
||||
cardSavable:function(card,player){
|
||||
if(card.name=='jiu'&&_status.currentPhase&&_status.currentPhase!=player&&_status.currentPhase.hasSkill('rejinjiu')) return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
rejinjiu2:{
|
||||
audio:'rejinjiu',
|
||||
forced:true,
|
||||
trigger:{player:'damageBegin3'},
|
||||
filter:function(event,player){
|
||||
return event.getParent(2).jiu==true;
|
||||
},
|
||||
content:function(){
|
||||
trigger.num-=trigger.getParent(2).jiu_add;
|
||||
},
|
||||
},
|
||||
repojun:{
|
||||
audio:2,
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return event.card.name=='sha'&&event.target.hp>0&&event.target.countCards('he')>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var next=player.choosePlayerCard(trigger.target,'he',[1,Math.min(trigger.target.hp,trigger.target.countCards('he'))],get.prompt('xinpojun',trigger.target));
|
||||
next.set('ai',function(button){
|
||||
if(!_status.event.goon) return 0;
|
||||
var val=get.value(button.link);
|
||||
if(button.link==_status.event.target.getEquip(2)) return 2*(val+3);
|
||||
return val;
|
||||
});
|
||||
next.set('goon',get.attitude(player,trigger.target)<=0);
|
||||
next.set('forceAuto',true);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=trigger.target;
|
||||
player.logSkill('repojun',trigger.target);
|
||||
target.addSkill('repojun2');
|
||||
target.storage.repojun2.addArray(result.cards);
|
||||
target.lose(result.cards,ui.special,'toStorage');
|
||||
game.log(target,'失去了'+get.cnNumber(result.cards.length)+'张牌');
|
||||
target.markSkill('repojun2');
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
unequip_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(arg&&arg.name=='sha'&&arg.target.getEquip(2)) return true;
|
||||
return false;
|
||||
}
|
||||
},
|
||||
group:'repojun3',
|
||||
},
|
||||
repojun3:{
|
||||
audio:'repojun',
|
||||
trigger:{source:'damageBegin1'},
|
||||
forced:true,
|
||||
locked:false,
|
||||
logTarget:'player',
|
||||
filter:function(event,player){
|
||||
var target=event.player;
|
||||
return event.getParent().name=='sha'&&player.countCards('h')>=target.countCards('h')&&player.countCards('e')>=target.countCards('e');
|
||||
},
|
||||
content:function(){
|
||||
trigger.num++;
|
||||
},
|
||||
},
|
||||
repojun2:{
|
||||
init:function(player,skill){
|
||||
if(!player.storage[skill]) player.storage[skill]=[];
|
||||
},
|
||||
trigger:{global:'phaseEnd'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
return player.storage.repojun2&&player.storage.repojun2.length>0;
|
||||
},
|
||||
content:function(){
|
||||
player.removeSkill('repojun2');
|
||||
game.log(player,'收回了'+get.cnNumber(player.gain(player.storage.repojun2,'draw','fromStorage').cards.length)+'张〖破军〗牌');
|
||||
},
|
||||
intro:{
|
||||
onunmark:'throw',
|
||||
content:'cardCount',
|
||||
},
|
||||
},
|
||||
reganlu:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
audio:2,
|
||||
selectTarget:2,
|
||||
delay:0,
|
||||
filterTarget:function(card,player,target){
|
||||
if(target.isMin()) return false;
|
||||
if(ui.selected.targets.length==0) return true;
|
||||
if(ui.selected.targets[0].countCards('e')==0&&target.countCards('e')==0) return false;
|
||||
return target==player||ui.selected.targets[0]==player||Math.abs(ui.selected.targets[0].countCards('e')-target.countCards('e'))<=player.maxHp-player.hp;
|
||||
},
|
||||
multitarget:true,
|
||||
multiline:true,
|
||||
content:function(){
|
||||
targets[0].swapEquip(targets[1]);
|
||||
},
|
||||
ai:{
|
||||
order:10,
|
||||
threaten:function(player,target){
|
||||
return 0.8*Math.max(1+target.maxHp-target.hp);
|
||||
},
|
||||
result:{
|
||||
target:function(player,target){
|
||||
var list1=[];
|
||||
var list2=[];
|
||||
var num=player.maxHp-player.hp;
|
||||
var players=game.filterPlayer();
|
||||
for(var i=0;i<players.length;i++){
|
||||
if(get.attitude(player,players[i])>0) list1.push(players[i]);
|
||||
else if(get.attitude(player,players[i])<0) list2.push(players[i]);
|
||||
}
|
||||
list1.sort(function(a,b){
|
||||
return a.countCards('e')-b.countCards('e');
|
||||
});
|
||||
list2.sort(function(a,b){
|
||||
return b.countCards('e')-a.countCards('e');
|
||||
});
|
||||
var delta;
|
||||
for(var i=0;i<list1.length;i++){
|
||||
for(var j=0;j<list2.length;j++){
|
||||
delta=list2[j].countCards('e')-list1[i].countCards('e');
|
||||
if(delta<=0) continue;
|
||||
if(delta<=num||list1[i]==player||list2[j]==player){
|
||||
if(target==list1[i]||target==list2[j]){
|
||||
return get.attitude(player,target);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(target.hp==target.maxHp&&get.tag(card,'damage')) return 0.2;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
sishu:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
|
@ -1466,9 +1746,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(player.countCards('h')>3) return true;
|
||||
return false;
|
||||
},
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function (){
|
||||
"step 0"
|
||||
trigger.cancel(null,null,'notrigger');
|
||||
trigger.changeToZero();
|
||||
event.cards=get.cards(2);
|
||||
event.videoId=lib.status.videoId++;
|
||||
game.broadcastAll(function(player,id,cards){
|
||||
|
@ -1662,7 +1945,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
//priority:-10,
|
||||
filter:function (event){
|
||||
return event.num>0;
|
||||
return event.num>0&&!event.numFixed;
|
||||
},
|
||||
content:function (){
|
||||
"step 0"
|
||||
|
@ -1814,6 +2097,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function (){
|
||||
"step 0"
|
||||
var cards=get.cards(3);
|
||||
|
@ -1836,7 +2122,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(cards.length) player.gain(cards,'gain2');
|
||||
//game.cardsDiscard(cards2);
|
||||
player.addTempSkill('reluoyi2',{player:'phaseBefore'});
|
||||
trigger.cancel(null,null,'notrigger');
|
||||
trigger.changeToZero();
|
||||
}
|
||||
//else game.cardsDiscard(cards);
|
||||
},
|
||||
|
@ -3313,6 +3599,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audioname:['heqi','sunce','gexuan','re_sunben','re_sunce'],
|
||||
trigger:{player:'phaseDrawBegin2'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
trigger.num++;
|
||||
},
|
||||
|
@ -4552,11 +4841,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
rehuashen_info:'游戏开始后,你随机获得三张未加入游戏的武将牌,选一张置于你面前并声明该武将牌的一项技能,你拥有该技能且同时将性别和势力属性变成与该武将相同直到该化身被替换。你的每个准备阶段和结束后,你可以选择一项:①弃置至多两张未展示的化身牌并重新获得等量化身牌;②更换所展示的化身牌或技能。(你不可声明限定技、觉醒技或主公技)。',
|
||||
rexinsheng:'新生',
|
||||
rexinsheng_info:'当你受到1点伤害后,你可以获得一张新的化身牌。',
|
||||
re_wuguotai:'界吴国太',
|
||||
re_gaoshun:'界高顺',
|
||||
re_xusheng:'界徐盛',
|
||||
reganlu:'甘露',
|
||||
reganlu_info:'出牌阶段限一次,你可以选择装备区牌数之差不小于X的两名角色或包含你在内的两名角色,然后交换这两名角色装备区内的牌。',
|
||||
repojun:'破军',
|
||||
repojun2:'破军',
|
||||
repojun3:'破军',
|
||||
repojun_info:'当你于使用【杀】指定目标后,你可以将其的至多X张牌置于其武将牌上,然后其于当前回合结束时获得这些牌。当你因执行【杀】的效果而对一名角色造成伤害时,若该角色的手牌数和装备区内的牌数均不大于你,则此伤害+1。',
|
||||
rexianzhen:'陷阵',
|
||||
rexianzhen_info:'出牌阶段限一次,你可以和一名其他角色拼点。若你赢,你本回合内对其使用牌没有次数和距离限制。若你没赢,你本回合内不能使用【杀】。若你以此法失去的拼点牌为【杀】,则你的【杀】不计入本回合的手牌上限。',
|
||||
rejinjiu:'禁酒',
|
||||
rejinjiu_info:'锁定技,你的【酒】均视为【杀】。其他角色不能于你的回合内使用【酒】。当你受到酒【杀】的伤害时,你令此伤害-X(X为影响过此【杀】的伤害值的【酒】的数量)',
|
||||
rejinjiu2:'禁酒',
|
||||
rejinjiu3:'禁酒',
|
||||
|
||||
refresh_standard:'界限突破·标',
|
||||
refresh_feng:'界限突破·风',
|
||||
refresh_huo:'界限突破·火',
|
||||
refresh_lin:'界限突破·林',
|
||||
refresh_shan:'界限突破·山',
|
||||
refresh_yijiang:'界限突破·将',
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
|
@ -272,11 +272,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return {
|
||||
card:links[0],
|
||||
filterCard:true,
|
||||
position:'h',
|
||||
filterTarget:function(card,player,target){
|
||||
return target.countDiscardableCards(player,'ej')>0;
|
||||
},
|
||||
delay:false,
|
||||
audio:'drlt_zhengrong',
|
||||
audio:'drlt_qingce',
|
||||
content:lib.skill.qingce.contentx,
|
||||
ai:{
|
||||
result:{
|
||||
|
@ -293,7 +294,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
prompt:function(links,player){
|
||||
return '选择弃置一张牌,获得'+get.translation(links[0])+'并弃置一名角色装备区或判定区内的一张牌';
|
||||
return '选择弃置一手张牌,获得'+get.translation(links[0])+'并弃置一名角色装备区或判定区内的一张牌';
|
||||
},
|
||||
},
|
||||
contentx:function(){
|
||||
|
@ -793,6 +794,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player:'phaseDrawBegin2'
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
trigger.num=game.countGroup();
|
||||
},
|
||||
|
@ -1130,8 +1134,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function (){
|
||||
'step 0'
|
||||
player.chooseCard(get.prompt2('kongsheng'),'he',[1,player.countCards('he')]).set('ai',function(card){
|
||||
if(card.name=='shan'||card.name=='du'||!player.hasUseTarget(card)) return 1;
|
||||
return 5-get.value(card);
|
||||
if(get.position(card)=='e') return 1-get.value(card);
|
||||
if(card.name=='shan'||card.name=='du'||!player.hasValueTarget(card)) return 1;
|
||||
return 4-get.value(card);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
|
@ -1146,7 +1151,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
},
|
||||
kongsheng_ai:{ai:{reverseOrder:true}},
|
||||
"kongsheng2":{
|
||||
audio:'kongsheng',
|
||||
marktext:"箜",
|
||||
intro:{
|
||||
content:"cards",
|
||||
|
@ -1167,26 +1174,33 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return player.storage.kongsheng2!=undefined&&player.storage.kongsheng2.length>0;
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
content:function (){
|
||||
'step 0'
|
||||
player.logSkill('kongsheng');
|
||||
player.addTempSkill('kongsheng_ai','kongsheng2After');
|
||||
event.list=[];
|
||||
for(var i=0;i<player.storage.kongsheng2.length;i++){
|
||||
if(get.type(player.storage.kongsheng2[i])=='equip'&&game.hasPlayer(function(current){
|
||||
return player.canUse(player.storage.kongsheng2[i],current);
|
||||
})){
|
||||
player.chooseUseTarget(player.storage.kongsheng2[i],true,'nopopup','noanimate');
|
||||
event.list.push(player.storage.kongsheng2[i]);
|
||||
};
|
||||
var card=player.storage.kongsheng2[i];
|
||||
if(get.type(card)=='equip'&&player.hasUseTarget(card)){
|
||||
event.list.push(card);
|
||||
player.storage.kongsheng2.splice(i--,1);
|
||||
}
|
||||
};
|
||||
if(!event.list.length) event.goto(3);
|
||||
'step 1'
|
||||
for(var i=0;i<event.list.length;i++){
|
||||
player.storage.kongsheng2.remove(event.list[i]);
|
||||
};
|
||||
if(event.list.length==1){
|
||||
event._result={bool:true,links:event.list.slice(0)}
|
||||
}
|
||||
else player.chooseButton(true,['选择要使用的装备牌',event.list]).set('ai',function(button){
|
||||
return get.order(button.link);
|
||||
});
|
||||
'step 2'
|
||||
player.gain(player.storage.kongsheng2,'gain2','fromStorage');
|
||||
if(result.bool){
|
||||
player.chooseUseTarget(result.links[0],true);
|
||||
event.list.remove(result.links[0]);
|
||||
if(event.list.length) event.goto(1);
|
||||
}
|
||||
'step 3'
|
||||
if(player.storage.kongsheng2.length) player.gain(player.storage.kongsheng2,'gain2','fromStorage','log');
|
||||
player.storage.kongsheng2.length=0;
|
||||
player.removeSkill('kongsheng2');
|
||||
},
|
||||
|
@ -1392,11 +1406,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"tachibana_effect":{
|
||||
audio:'nzry_huaiju',
|
||||
trigger:{
|
||||
global:['damageBegin4','phaseDrawBegin'],
|
||||
global:['damageBegin4','phaseDrawBegin2'],
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.player.hasMark('nzry_huaiju');
|
||||
return event.player.hasMark('nzry_huaiju')&&(event.name=='damage'||!event.numFixed);
|
||||
},
|
||||
content:function(){
|
||||
player.line(trigger.player,'green');
|
||||
|
@ -3495,7 +3509,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
checkx:function(event,player,cards,cards2){
|
||||
if(cards.length>2||get.attitude(player,event.player)>0) return true;
|
||||
for(var i=0;i<cards2.length;i++){
|
||||
if(get.value(cards2[i],event.player)<0) return true;
|
||||
if(get.value(cards2[i],event.player,'raw')<0) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
@ -4048,7 +4062,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{player:'phaseDrawBegin1'},
|
||||
filter:function(event,player){
|
||||
return player.hp<player.maxHp;
|
||||
return !event.numFixed&&player.hp<player.maxHp;
|
||||
},
|
||||
check:function(event,player){
|
||||
if(player.getDamagedHp()<2){
|
||||
|
@ -4061,7 +4075,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
trigger.cancel(null,null,'notrigger');
|
||||
trigger.changeToZero();
|
||||
event.cards=get.cards(player.getDamagedHp()+(event.name=='zaiqi'?0:1));
|
||||
game.cardsGotoOrdering(event.cards);
|
||||
player.showCards(event.cards);
|
||||
|
@ -4324,6 +4338,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{player:'phaseDrawBegin2'},
|
||||
threaten:1.4,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
check:function(event,player){
|
||||
if(player.countCards('h')<=1) return true;
|
||||
return game.hasPlayer(function(current){
|
||||
|
@ -5424,6 +5441,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(player.countCards('h')>3) return true;
|
||||
return false;
|
||||
},
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.judge(ui.special);
|
||||
|
@ -5432,7 +5452,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.$gain2(result.card);
|
||||
player.addTempSkill('shuangxiong2');
|
||||
player.storage.shuangxiong=get.color(result.card);
|
||||
trigger.cancel(null,null,'notrigger');
|
||||
trigger.changeToZero();
|
||||
}
|
||||
},
|
||||
shuangxiong2:{
|
||||
|
@ -5512,7 +5532,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
firstDo:true,
|
||||
filter:function(event,player){
|
||||
return player.hasZhuSkill('xueyi')&&player.countCards('h')>player.hp;
|
||||
return player.hasZhuSkill('xueyi')&&game.hasPlayer(function(current){
|
||||
return current!=player&¤t.group=='qun';
|
||||
})&&player.countCards('h')>player.hp;
|
||||
},
|
||||
content:function(){},
|
||||
mod:{
|
||||
|
@ -5900,16 +5922,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"step 1"
|
||||
if(result.bool){
|
||||
player.logSkill(event.name,result.targets);
|
||||
trigger.untrigger();
|
||||
trigger.player=result.targets[0];
|
||||
trigger.player.addSkill('tianxiang2');
|
||||
player.discard(result.cards[0]);
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
"step 2"
|
||||
trigger.trigger('damageBegin3');
|
||||
},
|
||||
ai:{
|
||||
maixie_defend:true,
|
||||
|
@ -6125,7 +6141,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"step 1"
|
||||
if(result.bool){
|
||||
player.logSkill(event.name,result.targets);
|
||||
trigger.untrigger();
|
||||
trigger.player=result.targets[0];
|
||||
trigger.player.addSkill('xintianxiang2');
|
||||
trigger.player.storage.xintianxiang=player;
|
||||
|
@ -6134,8 +6149,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
event.finish();
|
||||
}
|
||||
"step 2"
|
||||
trigger.trigger('damageBefore');
|
||||
},
|
||||
ai:{
|
||||
maixie_defend:true,
|
||||
|
|
187
character/sp.js
|
@ -523,7 +523,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
"rewrite_bagua":{
|
||||
derivation:"majun",
|
||||
cardimage:"bagua",
|
||||
//cardimage:"bagua",
|
||||
fullskin:true,
|
||||
type:"equip",
|
||||
subtype:"equip2",
|
||||
|
@ -537,7 +537,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"rewrite_baiyin":{
|
||||
derivation:"majun",
|
||||
fullskin:true,
|
||||
cardimage:"baiyin",
|
||||
//cardimage:"baiyin",
|
||||
type:"equip",
|
||||
subtype:"equip2",
|
||||
filterLose:function(card,player){
|
||||
|
@ -566,7 +566,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
"rewrite_lanyinjia":{
|
||||
derivation:"majun",
|
||||
cardimage:"lanyinjia",
|
||||
//cardimage:"lanyinjia",
|
||||
fullskin:true,
|
||||
type:"equip",
|
||||
subtype:"equip2",
|
||||
|
@ -580,7 +580,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
"rewrite_renwang":{
|
||||
derivation:"majun",
|
||||
cardimage:"renwang",
|
||||
//cardimage:"renwang",
|
||||
fullskin:true,
|
||||
type:"equip",
|
||||
subtype:"equip2",
|
||||
|
@ -593,7 +593,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
"rewrite_tengjia":{
|
||||
derivation:"majun",
|
||||
cardimage:"tengjia",
|
||||
//cardimage:"tengjia",
|
||||
fullskin:true,
|
||||
type:"equip",
|
||||
subtype:"equip2",
|
||||
|
@ -620,7 +620,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
"rewrite_zhuge":{
|
||||
derivation:"majun",
|
||||
cardimage:"zhuge",
|
||||
//cardimage:"zhuge",
|
||||
distance:{
|
||||
attackFrom:-2,
|
||||
},
|
||||
|
@ -1446,9 +1446,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sibian:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseDrawBegin1'},
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
trigger.cancel(null,null,'notrigger');
|
||||
trigger.changeToZero();
|
||||
event.cards=get.cards(4);
|
||||
game.cardsGotoOrdering(event.cards);
|
||||
player.showCards(event.cards);
|
||||
|
@ -1577,77 +1580,45 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xpchijie:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
target:'useCardToTargeted'
|
||||
player:'damageEnd',
|
||||
},
|
||||
filter:function(event,player){
|
||||
return event.player!=player;
|
||||
},
|
||||
usable:1,
|
||||
content:function(){
|
||||
player.addTempSkill('xpchijie2');
|
||||
player.storage.xpchijie2=trigger.card;
|
||||
if(player.hasSkill('xpchijie4')||!event.card) return false;
|
||||
var evt=event.getParent('useCard');
|
||||
return evt.card==event.card&&evt.player!=player;
|
||||
},
|
||||
check:function(event,player){
|
||||
if(get.tag(event.card,'respondSha')){
|
||||
if(player.countCards('h',{name:'sha'})==0){
|
||||
return false;
|
||||
}
|
||||
var evt=event.getParent('useCard');
|
||||
var targets=evt.targets.slice(evt.num+1);
|
||||
var num=0;
|
||||
for(var i=0;i<targets.length;i++){
|
||||
num+=get.effect(targets[i],evt.card,evt.player,player);
|
||||
}
|
||||
else if(get.tag(event.card,'respondShan')){
|
||||
if(player.countCards('h',{name:'shan'})==0){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if(get.tag(event.card,'damage')){
|
||||
return false;
|
||||
}
|
||||
return get.value(event.cards)>0;
|
||||
return num<-1;
|
||||
},
|
||||
content:function(){
|
||||
player.addTempSkill('xpchijie4');
|
||||
var evt=trigger.getParent('useCard');
|
||||
evt.excluded.addArray(evt.targets);
|
||||
},
|
||||
group:'xpchijie2',
|
||||
},
|
||||
xpchijie2:{
|
||||
charlotte:true,
|
||||
trigger:{
|
||||
global:['useCardAfter','damage'],
|
||||
},
|
||||
onremove:true,
|
||||
forced:true,
|
||||
silent:true,
|
||||
popup:false,
|
||||
trigger:{global:'useCardAfter'},
|
||||
audio:'xpchijie',
|
||||
filter:function(event,player){
|
||||
return event.card==player.storage.xpchijie2;
|
||||
return event.targets.contains(player)&&!player.hasSkill('xpchijie4')&&event.cards.filterInD().length>0&&!game.hasPlayer2(function(current){
|
||||
return current.getHistory('damage',function(evt){
|
||||
return evt.card==event.card;
|
||||
}).length>0;
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
if(trigger.name=='damage') player.addTempSkill(player==trigger.player?'xpchijie3':'xpchijie4');
|
||||
else{
|
||||
if(!player.hasSkill('xpchijie4')&&!player.hasSkill('xpchijie3')){
|
||||
var cards=[];
|
||||
var cs=trigger.cards;
|
||||
for(var i=0;i<cs.length;i++){
|
||||
if(get.position(cs[i],true)=='o') cards.push(cs[i]);
|
||||
}
|
||||
if(cards.length){
|
||||
player.logSkill('xpchijie3');
|
||||
player.gain(cards,'gain2');
|
||||
}
|
||||
}
|
||||
player.removeSkill('xpchijie2');
|
||||
player.removeSkill('xpchijie3');
|
||||
player.removeSkill('xpchijie4');
|
||||
}
|
||||
},
|
||||
},
|
||||
xpchijie3:{
|
||||
trigger:{global:'damageBegin4'},
|
||||
//forced:true,
|
||||
filter:function(event,player){
|
||||
return event.card&&event.card==player.storage.xpchijie2;
|
||||
},
|
||||
logTarget:'player',
|
||||
check:function(event,player){
|
||||
return get.damageEffect(event.player,event.source,player)<0;
|
||||
return get.value(event.cards.filterInD(),player,'raw')>0;
|
||||
},
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
player.addTempSkill('xpchijie4');
|
||||
player.gain(trigger.cards.filterInD(),'log','gain2');
|
||||
},
|
||||
},
|
||||
xpchijie4:{},
|
||||
|
@ -1671,8 +1642,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
forced:true,
|
||||
onremove:true,
|
||||
filter:function(event,player){
|
||||
return lib.skill.yinju2.logTarget(event)==player.storage.yinju2;
|
||||
filter:function(event,player,name){
|
||||
if(name=='useCardToPlayered'){
|
||||
if(!event.isFirstTarget) return false;
|
||||
var type=get.type(event.card);
|
||||
if(type=='equip') return true;
|
||||
var bool=event.targets.contains(player.storage.yinju2);
|
||||
return type=='delay'?!bool:bool;
|
||||
}
|
||||
return event.player==player.storage.yinju2;
|
||||
},
|
||||
logTarget:function(event){
|
||||
return event[event.name=='damage'?'player':'target'];
|
||||
|
@ -3219,7 +3197,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return current!=player&¤t.countGainableCards(player,'e')>0;
|
||||
}).ai=function(target){
|
||||
var num=get.attitude(_status.event.player,target);
|
||||
if(target.isDamaged()&&target.getEquip('baiyin')&&att>0) return 2*num
|
||||
if(target.isDamaged()&&target.getEquip('baiyin')&&num>0) return 2*num
|
||||
return -num;
|
||||
};
|
||||
'step 1'
|
||||
|
@ -5365,6 +5343,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
xinfenyue:{
|
||||
enable:'phaseUse',
|
||||
audio:'fenyue',
|
||||
filter:function(event,player){
|
||||
var num=game.players.length-player.getFriends(true).length;
|
||||
if((player.getStat().skill.xinfenyue||0)>=num) return false;
|
||||
|
@ -5415,6 +5394,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
fenyue:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filter:function(event,player){
|
||||
if(!player.countCards('h')) return false;
|
||||
|
@ -6730,9 +6710,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:'yongsi1',
|
||||
trigger:{player:'phaseDrawBegin1'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
player.draw(game.countGroup());
|
||||
trigger.cancel(null,null,'notrigger');
|
||||
trigger.changeToZero();
|
||||
}
|
||||
},
|
||||
xinyongsi2:{
|
||||
|
@ -7128,10 +7111,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
popup:false,
|
||||
content:function(){
|
||||
trigger.untrigger();
|
||||
trigger.player=player.storage.shichou_target;
|
||||
trigger.player.addSkill('shichou4');
|
||||
trigger.trigger('damageBegin3');
|
||||
player.logSkill('shichou2',player.storage.shichou_target);
|
||||
game.delay(0.5);
|
||||
},
|
||||
|
@ -7183,8 +7164,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
zhaolie:{
|
||||
trigger:{player:'phaseDrawBegin1'},
|
||||
trigger:{player:'phaseDrawBegin2'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt2('zhaolie'),function(card,player,target){
|
||||
|
@ -7800,9 +7784,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(get.value(hs[i])<=6){
|
||||
switch(hs[i].number){
|
||||
case 13:return -1;
|
||||
case 12:if(player.storage.gushe+num<=8) return -1;break;
|
||||
case 11:if(player.storage.gushe+num<=7) return -1;break;
|
||||
default:if(hs[i].number>5&&player.storage.gushe+num<=6) return -1;
|
||||
case 12:if(player.countMark('gushe')+num<=8) return -1;break;
|
||||
case 11:if(player.countMark('gushe')+num<=7) return -1;break;
|
||||
default:if(hs[i].number>5&&player.countMark('gushe')+num<=6) return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7933,7 +7917,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(player.storage.shefu2&&player.storage.shefu2.contains(button.link[2])) return false;
|
||||
return true;
|
||||
}).set('ai',function(button){
|
||||
var rand=_status.event.rand*2;
|
||||
var rand=_status.event.rand;
|
||||
switch(button.link[2]){
|
||||
case 'sha':return 5+rand[1];
|
||||
case 'tao':return 4+rand[2];
|
||||
|
@ -7943,10 +7927,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
case 'shunshou':return 3+rand[6];
|
||||
case 'nanman':return 2+rand[7];
|
||||
case 'wanjian':return 2+rand[8];
|
||||
default:return rand[9];
|
||||
default:return rand[0];
|
||||
}
|
||||
}).set('rand',[Math.random(),Math.random(),Math.random(),Math.random(),
|
||||
Math.random(),Math.random(),Math.random(),Math.random()],Math.random());
|
||||
Math.random(),Math.random(),Math.random(),Math.random(),Math.random()]);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.storage.shefu2.push(result.links[0][2]);
|
||||
|
@ -8516,7 +8500,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
trigger.num++;
|
||||
}
|
||||
},
|
||||
ai:{presha:true},
|
||||
},
|
||||
jiqiao:{
|
||||
audio:2,
|
||||
|
@ -8915,6 +8900,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{player:'phaseDrawBegin1'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
check:function(event,player){
|
||||
var num=game.countPlayer(function(target){
|
||||
return target.hp==player.hp;
|
||||
|
@ -8927,7 +8915,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return num>=3;
|
||||
},
|
||||
content:function(){
|
||||
trigger.cancel(null,null,'notrigger');
|
||||
trigger.changeToZero();
|
||||
var num=game.countPlayer(function(target){
|
||||
return target.hp==player.hp;
|
||||
});
|
||||
|
@ -9869,7 +9857,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return player.countCards('h')-player.countCards('h',{type:'equip'})<=player.hp;
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(player.storage.tunchu&&player.storage.tunchu.length) return false;
|
||||
if(!event.numFixed||player.storage.tunchu&&player.storage.tunchu.length) return false;
|
||||
return true;
|
||||
},
|
||||
content:function(){
|
||||
|
@ -10328,6 +10316,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{player:'phaseDrawBegin2'},
|
||||
frequent:true,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
trigger.num+=1+Math.floor(player.countCards('e')/2);
|
||||
}
|
||||
|
@ -10705,7 +10696,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var evt2=event.getParent('phaseUse');
|
||||
if(evt2.player!=player) return false;
|
||||
return player.getHistory('useCard',function(evt){
|
||||
return ['sha','juedou'].contains(evt.card.name)&&evt.getParent('phaseUse')==2;
|
||||
return ['sha','juedou'].contains(evt.card.name)&&evt.getParent('phaseUse')==evt2;
|
||||
}).indexOf(event)==0;
|
||||
},
|
||||
direct:true,
|
||||
|
@ -10788,7 +10779,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return nai>=2;
|
||||
},
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer(function(current){
|
||||
return !event.numFixed&&game.hasPlayer(function(current){
|
||||
return current!=player&&get.distance(current,player)<=1;
|
||||
});
|
||||
},
|
||||
|
@ -10804,7 +10795,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.storage.biluan+=ng.length;
|
||||
player.markSkill('biluan');
|
||||
game.addVideo('storage',player,['biluan',player.storage.biluan]);
|
||||
trigger.cancel(null,null,'notrigger');
|
||||
trigger.changeToZero();
|
||||
},
|
||||
mod:{
|
||||
globalTo:function(from,to,distance){
|
||||
|
@ -10915,8 +10906,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
return '残蚀:是否改为摸'+get.cnNumber(num)+'张牌?';
|
||||
},
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
trigger.cancel(null,null,'notrigger');
|
||||
trigger.changeToZero();
|
||||
var num=game.countPlayer(function(current){
|
||||
if(player.hasZhuSkill('guiming')&¤t.group=='wu'&¤t!=player) return true;
|
||||
return current.isDamaged();
|
||||
|
@ -12365,7 +12359,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{player:'phaseDrawBegin1'},
|
||||
filter:function(event,player){
|
||||
return player.hp==1||player.countCards('h')==0;
|
||||
return !event.numFixed&&(player.hp==1||player.countCards('h')==0);
|
||||
},
|
||||
check:function(event,player){
|
||||
var num=game.countPlayer(function(current){
|
||||
|
@ -12385,7 +12379,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
targets.sort(lib.sort.seat);
|
||||
event.targets=targets;
|
||||
event.num=0;
|
||||
trigger.cancel(null,null,'notrigger');
|
||||
trigger.changeToZero();
|
||||
player.line(targets,'green');
|
||||
"step 1"
|
||||
if(num<event.targets.length){
|
||||
|
@ -13219,6 +13213,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{player:'phaseDrawBegin2'},
|
||||
direct:true,
|
||||
audio:2,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed&&event.num>0;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
var check;
|
||||
|
@ -13276,15 +13273,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var judge=event.judge(event.player.judging[0]);
|
||||
for(var i=0;i<cards.length;i++){
|
||||
var judge2=event.judge(cards[i]);
|
||||
if(_status.currentPhase!=player&&judge2==judge&&get.color(cards[i])=='red'&&get.useful(cards[i])<5) return true;
|
||||
if(judge2>judge) return true;
|
||||
if(_status.currentPhase!=player&&judge2==judge&&get.color(cards[i])=='red'&&get.useful(cards[i])<5) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
var target=trigger.player;
|
||||
player.line(target,'green');
|
||||
var judge=trigger.judge(target.judging[0]);
|
||||
var attitude=get.attitude(target,player);
|
||||
target.choosePlayerCard('请选择代替判定的牌','he','visible',true,player).set('ai',function(button){
|
||||
|
@ -13498,6 +13494,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{player:'phaseDrawBegin2'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
trigger.num+=game.countGroup();
|
||||
}
|
||||
|
@ -14375,9 +14374,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
pyzhuren:'铸刃',
|
||||
pyzhuren_info:'出牌阶段限一次,你可以弃置一张手牌。根据此牌的花色点数,你有一定概率打造成功并获得一张武器牌(若打造失败或武器已有则改为摸一张【杀】,花色决定武器名称,点数决定成功率)。此武器牌进入弃牌堆时,将其移出游戏。',
|
||||
pyzhuren_destroy:'铸刃',
|
||||
pyzhuren_heart:'红锻枪',
|
||||
pyzhuren_heart:'红缎枪',
|
||||
pyzhuren_heart_info:'每回合限一次,当你使用【杀】造成伤害后,你可以进行判定,若结果为红色,你回复1点体力。',
|
||||
pyzhuren_diamond:'裂淬刀',
|
||||
pyzhuren_diamond:'烈淬刀',
|
||||
pyzhuren_diamond_info:'当你使用【杀】对目标角色造成伤害时,你可以弃置一张【杀】或武器牌,令此伤害+1。',
|
||||
pyzhuren_club:'水波剑',
|
||||
pyzhuren_club_info:'当你于出牌阶段使用第一张牌时,若此牌是普通锦囊牌或【杀】,则你可以为此牌增加一个目标。',
|
||||
|
@ -14396,10 +14395,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
lskuizhu:'馈珠',
|
||||
lskuizhu_info:'出牌阶段结束时,你可以选择体力值为全场最多的一名其他角色,将手牌摸至与该角色相同(最多摸至五张),然后该角色观看你的手牌,弃置任意张手牌并从观看的牌中获得等量的牌。若其获得的牌大于一张,则你选择一项:移去一个“珠”;或令其对其攻击范围内的一名角色造成1点伤害。',
|
||||
xpchijie:'持节',
|
||||
xpchijie_info:'每回合限一次,当你成为其他角色使用牌的目标后,你可以获得如下效果:当此牌对其他角色造成伤害时,若此牌已对你造成过伤害,则你防止此伤害;当此牌使用结算完成时,若此牌未造成过伤害,则你可以获得此牌对应的所有实体牌。',
|
||||
xpchijie3:'持节',
|
||||
xpchijie_info:'每回合限一次。①当你受到其他角色使用的牌造成的伤害时,你可以令此牌对所有目标无效。②其他角色使用的牌结算完成时,若你是此牌的目标之一且此牌未造成过伤害,则你可以获得此牌对应的所有实体牌。',
|
||||
xpchijie2:'持节',
|
||||
yinju:'引裾',
|
||||
yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你对此角色使用牌时,你摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。',
|
||||
yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你于此阶段内使用装备牌指定目标或使用延时锦囊牌指定除其外的其他角色为目标或使用其他牌指定其为目标时,你摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。',
|
||||
yinju2:'引裾',
|
||||
mouzhu:'谋诛',
|
||||
mouzhu_info:'出牌阶段限一次,你可以令一名有牌的其他角色交给你一张牌。然后若你的手牌数大于其,其选择视为对你使用一张【杀】或【决斗】。',
|
||||
|
|
|
@ -308,6 +308,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{player:'phaseDrawBegin1'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
var check;
|
||||
|
@ -327,7 +330,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(result.bool){
|
||||
player.logSkill('tuxi',result.targets);
|
||||
player.gainMultiple(result.targets);
|
||||
trigger.cancel(null,null,'notrigger');
|
||||
trigger.changeToZero();
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
|
@ -350,6 +353,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return get.attitude(player,current)<0&&player.canUse('sha',current);
|
||||
});
|
||||
},
|
||||
filter:function(event,player){
|
||||
return !event.numFixed&&event.num>0;
|
||||
},
|
||||
content:function(){
|
||||
player.addTempSkill('luoyi2','phaseJieshuBegin');
|
||||
trigger.num--;
|
||||
|
@ -1812,6 +1818,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audioname:['sp_lvmeng'],
|
||||
trigger:{player:'phaseDrawBegin2'},
|
||||
frequent:true,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
trigger.num++;
|
||||
},
|
||||
|
|
|
@ -2754,9 +2754,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"step 1"
|
||||
if(result.bool){
|
||||
trigger.target=player;
|
||||
trigger.untrigger();
|
||||
trigger.trigger('useCardToBefore');
|
||||
trigger.trigger('shaBefore');
|
||||
player.addSkill('hzhenwei2');
|
||||
game.delay();
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
game.import('character',function(lib,game,ui,get,ai,_status){
|
||||
return {
|
||||
name:'tw',
|
||||
connect:false,
|
||||
connect:true,
|
||||
characterSort:{
|
||||
tw:{
|
||||
tw_mobile:['tw_beimihu','nashime'],
|
||||
|
@ -26,7 +26,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
card:{
|
||||
},
|
||||
characterFilter:{},
|
||||
characterFilter:{
|
||||
nashime:function(mode){
|
||||
return mode!='guozhan';
|
||||
},
|
||||
tw_xiahouba:function(mode){
|
||||
return mode!='guozhan';
|
||||
},
|
||||
},
|
||||
skill:{
|
||||
twrangyi:{
|
||||
audio:2,
|
||||
|
@ -392,7 +399,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
var choiceList=['令一名其他角色与你各摸一张牌','令自己下个出牌阶段可以多发动一次【外使】'];
|
||||
if(lib.skill.chijie.filter({},player)) choiceList.push('将自己的势力变更为场上存在的一个其他势力');
|
||||
if(lib.skill.chijie.filter&&lib.skill.chijie.filter({},player)) choiceList.push('将自己的势力变更为场上存在的一个其他势力');
|
||||
player.chooseControl('cancel2').set('prompt',get.prompt('renshe')).set('choiceList',choiceList).set('ai',function(){
|
||||
if(game.hasPlayer(function(current){
|
||||
return get.attitude(player,current)>0||current.hasSkillTag('nogain');
|
||||
|
|
|
@ -955,6 +955,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.give(event.card,result.targets[0],true);
|
||||
}
|
||||
},
|
||||
locked:false,
|
||||
mod:{
|
||||
aiOrder:function(player,card,num){
|
||||
if(player.isPhaseUsing()&&(!player.storage.counttrigger||!player.storage.counttrigger.xinfu_lianpian||!player.storage.counttrigger.xinfu_lianpian<3)){
|
||||
var evt=player.getLastUsed();
|
||||
if(evt&&evt.targets&&evt.targets.length&&evt.isPhaseUsing()&&game.hasPlayer(function(current){
|
||||
return evt.targets.contains(current)&&player.canUse(card,current)&&get.effect(current,card,player,player)>0;
|
||||
})){
|
||||
return num+10;
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
player:function(card,player,target){
|
||||
var evt=player.getLastUsed();
|
||||
if(evt&&evt.targets.contains(target)&&(!player.storage.counttrigger||!player.storage.counttrigger.xinfu_lianpian||!player.storage.counttrigger.xinfu_lianpian<3)&&player.isPhaseUsing()) return [1.5,0];
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
"xinfu_lingren":{
|
||||
usable:1,
|
||||
|
@ -4890,7 +4911,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
filter:function (event,player){
|
||||
if(!player.storage.xinfu_zhaoxin.length) return false;
|
||||
return player.inRange(event.player);
|
||||
return player==event.player||player.inRange(event.player);
|
||||
},
|
||||
direct:true,
|
||||
content:function (){
|
||||
|
@ -5438,7 +5459,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"xinfu_daigong":"怠攻",
|
||||
"xinfu_daigong_info":"每回合限一次。当你受到伤害时,你可以展示所有手牌,然后令伤害来源选择一项:交给你一张与你所有手牌花色均不相同的一张牌,或防止此伤害。",
|
||||
"xinfu_zhaoxin":"昭心",
|
||||
"xinfu_zhaoxin_info":"出牌阶段限一次,你可以将任意张手牌置于武将牌上并摸等量的牌,称之为「望」(你至多拥有三张「望」)。你攻击范围内的一名其他角色的摸牌阶段结束后,其可以获得一张由你选择的「望」,然后你可以对其造成1点伤害。",
|
||||
"xinfu_zhaoxin_info":"出牌阶段限一次,你可以将任意张手牌置于武将牌上并摸等量的牌,称之为「望」(你至多拥有三张「望」)。你或你攻击范围内的一名其他角色的摸牌阶段结束后,其可以获得一张由你选择的「望」,然后你可以对其造成1点伤害。",
|
||||
"zhaoxin_give":"昭心",
|
||||
"zhaoxin_give_info":"",
|
||||
"xinfu_qianchong":"谦冲",
|
||||
|
|
|
@ -1085,17 +1085,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var choiceList=[
|
||||
'手牌上限-1且发动【忠鉴】时可以多展示对方的一张牌'
|
||||
];
|
||||
if(!trigger.numFixed){
|
||||
choiceList.push('摸牌阶段多摸两张牌,然后本回合内不能发动【忠鉴】');
|
||||
if(trigger.num>0){
|
||||
choiceList.unshift('摸牌阶段少摸一张牌,发动【忠鉴】时可以多展示自己的一张牌直到回合结束');
|
||||
event.first=true;
|
||||
}
|
||||
}
|
||||
var next=player.chooseControl('cancel2');
|
||||
next.set('choiceList',[
|
||||
'摸牌阶段少摸一张牌,发动【忠鉴】时可以多展示自己的一张牌直到回合结束',
|
||||
'手牌上限-1且发动【忠鉴】时可以多展示对方的一张牌',
|
||||
'摸牌阶段多摸两张牌,然后本回合内不能发动【忠鉴】',
|
||||
]);
|
||||
next.set('choiceList',choiceList);
|
||||
next.set('prompt',get.prompt('xincaishi'));
|
||||
next.set('ai',function(){return 2});
|
||||
'step 1'
|
||||
if(result.control!='cancel2'){
|
||||
player.logSkill('xincaishi');
|
||||
if(!event.first) result.index++;
|
||||
trigger.num+=(result.index>1?2:(result.index-1));
|
||||
player.addTempSkill('xincaishi_'+result.index);
|
||||
}
|
||||
|
@ -1676,7 +1683,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
},
|
||||
group:'pindi_clear',
|
||||
//group:'pindi_clear',
|
||||
check:function(card){
|
||||
var num=_status.event.player.getStat('skill').pindi||0;
|
||||
return 6+num-get.value(card);
|
||||
|
@ -1693,12 +1700,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.storage.pindi_target.push(target);
|
||||
player.storage.pindi_type.push(get.type2(cards[0]));
|
||||
event.num=player.getStat('skill').pindi;
|
||||
player.chooseControlList([
|
||||
'令'+get.translation(target)+'摸'+get.cnNumber(event.num)+'张牌',
|
||||
'令'+get.translation(target)+'弃置'+get.cnNumber(event.num)+'张牌'
|
||||
],function(){
|
||||
return _status.event.choice;
|
||||
}).set('choice',get.attitude(player,target)>0?0:1);
|
||||
var evt=_status.event.getParent('phase');
|
||||
if(evt&&evt.name=='phase'&&!evt.pindi){
|
||||
var next=game.createEvent('rerende_clear');
|
||||
_status.event.next.remove(next);
|
||||
evt.after.push(next);
|
||||
evt.pindi=true;
|
||||
next.player=player;
|
||||
next.setContent(lib.skill.pindi_clear.content);
|
||||
}
|
||||
player.syncStorage();
|
||||
if(target.countCards('he')==0) event._result={index:0};
|
||||
else{
|
||||
player.chooseControlList([
|
||||
'令'+get.translation(target)+'摸'+get.cnNumber(event.num)+'张牌',
|
||||
'令'+get.translation(target)+'弃置'+get.cnNumber(event.num)+'张牌'
|
||||
],function(){
|
||||
return _status.event.choice;
|
||||
}).set('choice',get.attitude(player,target)>0?0:1);
|
||||
}
|
||||
'step 1'
|
||||
if(result.index==0){
|
||||
target.draw(event.num);
|
||||
|
@ -1717,7 +1737,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
result:{
|
||||
target:function(player,target){
|
||||
var att=get.attitude(player,target);
|
||||
var num=player.getStat('skill').pindi+1;
|
||||
var num=(player.getStat('skill').pindi||0)+1;
|
||||
if(att<=0&&target.countCards('he')<num) return 0;
|
||||
return get.sgn(att);
|
||||
}
|
||||
|
@ -3064,6 +3084,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player){
|
||||
return typeof player.storage.fumian_draw=='number';
|
||||
},
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
trigger.num+=player.storage.fumian_draw;
|
||||
}
|
||||
|
@ -5608,11 +5631,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
longyin:{
|
||||
trigger:{global:'shaBegin'},
|
||||
trigger:{global:'useCard'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return event.target==event.targets[0]&&player.countCards('he')>0&&event.card.name=='sha'&&
|
||||
_status.currentPhase==event.player&&event.parent.parent.parent.name=='phaseUse';
|
||||
return event.card.name=='sha'&&player.countCards('he')>0&&event.player.isPhaseUsing();
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
|
@ -7064,8 +7086,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
ai:{
|
||||
expose:0.2
|
||||
}
|
||||
unequip_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(arg&&arg.name=='sha'&&arg.target.getEquip(2)) return true;
|
||||
return false;
|
||||
}
|
||||
},
|
||||
},
|
||||
xinpojun2:{
|
||||
trigger:{global:'phaseEnd'},
|
||||
|
@ -8864,6 +8890,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{player:'phaseDrawBegin1'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseTarget(get.prompt2('xinxuanhuo'),function(card,player,target){
|
||||
|
@ -8880,7 +8909,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
trigger.cancel(null,null,'notrigger');
|
||||
trigger.changeToZero();
|
||||
player.logSkill('xinxuanhuo',result.targets);
|
||||
event.target=result.targets[0];
|
||||
event.target.draw(2);
|
||||
|
@ -9418,6 +9447,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
jiushi:{
|
||||
audio:'jiushi1',
|
||||
group:['jiushi1','jiushi2','jiushi3'],
|
||||
},
|
||||
jiushi1:{
|
||||
|
@ -9518,7 +9548,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
jiushi3:{
|
||||
audio:2,
|
||||
audio:'jiushi1',
|
||||
trigger:{player:'damageEnd'},
|
||||
check:function(event,player){
|
||||
return player.isTurnedOver();
|
||||
|
@ -9548,10 +9578,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
check:function(event,player){
|
||||
return player.countCards('h')<=player.maxHp||player.skipList.contains('phaseUse');
|
||||
},
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
trigger.num+=game.countGroup();
|
||||
player.addTempSkill('zishou2');
|
||||
|
||||
},
|
||||
ai:{
|
||||
threaten:1.5
|
||||
|
@ -9828,6 +9860,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{player:'phaseDrawBegin2'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseControl('jiangchi_less','jiangchi_more','cancel2',function(){
|
||||
|
@ -10157,6 +10192,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{global:'dying'},
|
||||
//priority:6,
|
||||
audio:2,
|
||||
audioname:['re_wuguotai'],
|
||||
filter:function(event,player){
|
||||
return event.player.hp<=0&&event.player.countCards('h')>0;
|
||||
},
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
window.noname_asset_list=[
|
||||
'1.9.98.2.3',
|
||||
'1.9.98.3',
|
||||
'audio/background/aozhan_chaoming.mp3',
|
||||
'audio/background/aozhan_online.mp3',
|
||||
'audio/background/aozhan_rewrite.mp3',
|
||||
|
@ -543,6 +543,11 @@ window.noname_asset_list=[
|
|||
'audio/die/tw_beimihu.mp3',
|
||||
'audio/die/yuantanyuanshang.mp3',
|
||||
'audio/die/shenpei.mp3',
|
||||
'audio/die/re_gaoshun.mp3',
|
||||
'audio/die/re_wuguotai.mp3',
|
||||
'audio/die/re_xusheng.mp3',
|
||||
'audio/die/zhangyì.mp3',
|
||||
'audio/die/jiakui.mp3',
|
||||
|
||||
'audio/skill/anguo1.mp3',
|
||||
'audio/skill/anguo2.mp3',
|
||||
|
@ -2338,6 +2343,22 @@ window.noname_asset_list=[
|
|||
'audio/skill/reyingzi_re_sunce2.mp3',
|
||||
'audio/skill/yinghun_re_sunce1.mp3',
|
||||
'audio/skill/yinghun_re_sunce2.mp3',
|
||||
'audio/skill/buyi_re_wuguotai2.mp3',
|
||||
'audio/skill/reganlu1.mp3',
|
||||
'audio/skill/reganlu2.mp3',
|
||||
'audio/skill/rejinjiu1.mp3',
|
||||
'audio/skill/rejinjiu2.mp3',
|
||||
'audio/skill/repojun1.mp3',
|
||||
'audio/skill/repojun2.mp3',
|
||||
'audio/skill/rexianzhen1.mp3',
|
||||
'audio/skill/rexianzhen2.mp3',
|
||||
'audio/skill/wanlan1.mp3',
|
||||
'audio/skill/wanlan2.mp3',
|
||||
'audio/skill/zhiyi1.mp3',
|
||||
'audio/skill/zhiyi2.mp3',
|
||||
'audio/skill/zhongzuo1.mp3',
|
||||
'audio/skill/zhongzuo2.mp3',
|
||||
'audio/skill/buyi_re_wuguotai1.mp3',
|
||||
|
||||
'font/huangcao.ttf',
|
||||
'font/shousha.ttf',
|
||||
|
@ -2813,6 +2834,12 @@ window.noname_asset_list=[
|
|||
'image/character/re_sunce.jpg',
|
||||
'image/character/ol_maliang.jpg',
|
||||
'image/character/ns_zhangwei.jpg',
|
||||
'image/character/jiakui.jpg',
|
||||
'image/character/re_gaoshun.jpg',
|
||||
'image/character/re_wuguotai.jpg',
|
||||
'image/character/re_xusheng.jpg',
|
||||
'image/character/zhangyì.jpg',
|
||||
'image/character/gz_wuguotai.jpg',
|
||||
|
||||
'image/character/baiwuchang.jpg',
|
||||
'image/character/baosanniang.jpg',
|
||||
|
|
240
game/game.js
|
@ -58,6 +58,10 @@
|
|||
guojia_emotion:20,
|
||||
zhenji_emotion:20,
|
||||
},
|
||||
animate:{
|
||||
skill:{},
|
||||
card:{},
|
||||
},
|
||||
arenaReady:[],
|
||||
onfree:[],
|
||||
inpile:[],
|
||||
|
@ -2566,6 +2570,39 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
cardtempname:{
|
||||
name:'视为卡牌名称显示',
|
||||
intro:'显示强制视为类卡牌(如武魂)等名称的显示方式',
|
||||
init:'default',
|
||||
unfrequent:true,
|
||||
item:{
|
||||
default:'纵向',
|
||||
horizon:'横向',
|
||||
off:'禁用',
|
||||
},
|
||||
onclick:function(item){
|
||||
game.saveConfig('cardtempname',item);
|
||||
if(!game.me||!game.me.getCards) return;
|
||||
var hs=game.me.getCards('h');
|
||||
for(var i=0;i<hs.length;i++){
|
||||
if(hs[i]._tempName){
|
||||
switch(item){
|
||||
case 'default':
|
||||
var node=hs[i]._tempName;
|
||||
node.innerHTML=get.verticalStr(node.tempname);
|
||||
break;
|
||||
case 'horizon':
|
||||
var node=hs[i]._tempName;
|
||||
node.innerHTML=node.tempname;
|
||||
break;
|
||||
default:
|
||||
hs[i]._tempName.delete();
|
||||
delete hs[i]._tempName;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
textequip:{
|
||||
name:'装备显示',
|
||||
init:'image',
|
||||
|
@ -9763,7 +9800,10 @@
|
|||
if(targets.length){
|
||||
event.targets2=targets;
|
||||
}
|
||||
else event.finish();
|
||||
else{
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
}
|
||||
else event.targets2=[];
|
||||
if(!event.forced){
|
||||
|
@ -9788,12 +9828,7 @@
|
|||
return lib.filter[_status.event.nodistance?'targetEnabled':'filterTarget'].apply(this,arguments);
|
||||
});
|
||||
next.set('ai',event.ai||get.effect);
|
||||
if(typeof info.selectTarget=='function'){
|
||||
next.set('selectTarget',info.selectTarget);
|
||||
}
|
||||
else{
|
||||
next.set('selectTarget',get.select(info.selectTarget));
|
||||
}
|
||||
next.set('selectTarget',event.selectTarget||lib.filter.selectTarget);
|
||||
if(event.nodistance) next.set('nodistance',true);
|
||||
if(event.forced) next.set('forced',true);
|
||||
next.set('targets',targets);
|
||||
|
@ -10094,8 +10129,8 @@
|
|||
event.cards=[player.getCards('e'),target.getCards('e')];
|
||||
player.lose(event.cards[0],ui.ordering,'visible');
|
||||
target.lose(event.cards[1],ui.ordering,'visible');
|
||||
if(event.cards[0].length) player.$give(event.cards[0],target);
|
||||
if(event.cards[1].length) target.$give(event.cards[1],player);
|
||||
if(event.cards[0].length) player.$give(event.cards[0],target,false);
|
||||
if(event.cards[1].length) target.$give(event.cards[1],player,false);
|
||||
"step 2"
|
||||
for(var i=0;i<event.cards[1].length;i++){
|
||||
player.equip(event.cards[1][i]);
|
||||
|
@ -13416,21 +13451,17 @@
|
|||
player.logSkill(event.skill);
|
||||
}
|
||||
if(get.info(event.skill).popname){
|
||||
player.popup({name:event.card.name,nature:event.card.nature},'metal');
|
||||
player.tryCardAnimate(card,event.card.name,'metal',true);
|
||||
}
|
||||
}
|
||||
else if(lib.config.show_card_prompt){
|
||||
if(get.type(event.card)=='equip'&&lib.config.hide_card_prompt_equip);
|
||||
else if(get.type(event.card)=='basic'&&lib.config.hide_card_prompt_basic);
|
||||
else if(!event.nopopup){
|
||||
if(lib.translate[event.card.name+'_pop']){
|
||||
player.popup(lib.translate[event.card.name+'_pop'],'metal');
|
||||
}
|
||||
else{
|
||||
player.popup(event.card.name,'metal');
|
||||
}
|
||||
else if(!event.nopopup){
|
||||
if(lib.translate[event.card.name+'_pop']){
|
||||
player.tryCardAnimate(card,lib.translate[event.card.name+'_pop'],'metal');
|
||||
}
|
||||
}
|
||||
else{
|
||||
player.tryCardAnimate(card,event.card.name,'metal');
|
||||
}
|
||||
}
|
||||
if(event.audio===false){
|
||||
cardaudio=false;
|
||||
}
|
||||
|
@ -13890,21 +13921,7 @@
|
|||
if(!info.direct){
|
||||
game.log(player,str,'【'+get.skillTranslation(skill,player)+'】');
|
||||
if(info.logv!==false) game.logv(player,skill,targets);
|
||||
if(lib.config.skill_animation_type!='off'&&lib.skill[skill]&&lib.skill[skill].skillAnimation){
|
||||
if(lib.config.skill_animation_type=='default'){
|
||||
checkShow=checkShow||'main';
|
||||
}
|
||||
else{
|
||||
checkShow=false;
|
||||
}
|
||||
if(lib.skill[skill].textAnimation){
|
||||
checkShow=false;
|
||||
}
|
||||
player.$skill(lib.skill[skill].animationStr||lib.translate[skill],lib.skill[skill].skillAnimation,lib.skill[skill].animationColor,checkShow);
|
||||
}
|
||||
else{
|
||||
player.popup(get.skillTranslation(skill,player));
|
||||
}
|
||||
player.trySkillAnimate(skill,skill,checkShow);
|
||||
}
|
||||
if(event.addCount!=false){
|
||||
if(player.stat[player.stat.length-1].skill[skill]==undefined){
|
||||
|
@ -14121,9 +14138,7 @@
|
|||
lib.skill[event.skill].onrespond(event,player);
|
||||
}
|
||||
}
|
||||
else if(!event.nopopup&&lib.config.show_card_prompt&&!lib.config.hide_card_prompt_basic){
|
||||
player.popup(card.name,'wood');
|
||||
}
|
||||
else if(!event.nopopup) player.tryCardAnimate(card,card.name,'wood');
|
||||
if(cardaudio&&event.getParent(3).name=='useCard'){
|
||||
game.broadcastAll(function(player,card){
|
||||
if(lib.config.background_audio){
|
||||
|
@ -15323,6 +15338,44 @@
|
|||
},
|
||||
player:{
|
||||
//新函数
|
||||
trySkillAnimate:function(name,popname,checkShow){
|
||||
if(!game.online&&lib.config.skill_animation_type!='off'&&lib.skill[name]&&lib.skill[name].skillAnimation){
|
||||
if(lib.config.skill_animation_type=='default'){
|
||||
checkShow=checkShow||'main';
|
||||
}
|
||||
else{
|
||||
checkShow=false;
|
||||
}
|
||||
if(lib.skill[name].textAnimation){
|
||||
checkShow=false;
|
||||
}
|
||||
this.$skill(lib.skill[name].animationStr||lib.translate[name],lib.skill[name].skillAnimation,lib.skill[name].animationColor,checkShow);
|
||||
return;
|
||||
}
|
||||
var player=this;
|
||||
game.broadcast(function(player,name,popname){
|
||||
player.trySkillAnimate(name,popname);
|
||||
},player,name,popname);
|
||||
if(lib.animate.skill[name]) lib.animate.skill[name].apply(this,arguments);
|
||||
else{
|
||||
if(popname!=name) this.popup(name,'water',false);
|
||||
else this.popup(get.skillTranslation(name,this),'water',false);
|
||||
}
|
||||
},
|
||||
tryCardAnimate:function(card,name,nature,popname){
|
||||
var player=this;
|
||||
game.broadcast(function(player,card,name,nature,popname){
|
||||
player.tryCardAnimate(card,name,nature,popname);
|
||||
},player,card,name,nature,popname);
|
||||
if(lib.animate.card[card.name]) lib.animate.card[card.name].apply(this,arguments);
|
||||
else {
|
||||
if(!lib.config.show_card_prompt) return;
|
||||
if(get.type(card)=='equip'&&lib.config.hide_card_prompt_equip) return;
|
||||
if(get.type(card)=='basic'&&lib.config.hide_card_prompt_basic) return;
|
||||
if(popname) player.popup({name:card.name,nature:card.nature},nature,false);
|
||||
else player.popup(name,nature,false);
|
||||
}
|
||||
},
|
||||
hasUsableCard:function(name){
|
||||
var player=this;
|
||||
if(player.countCards('h',name)) return true;
|
||||
|
@ -18981,26 +19034,14 @@
|
|||
logSkill:function(name,targets,nature,logv){
|
||||
if(get.itemtype(targets)=='player') targets=[targets];
|
||||
var nopop=false;
|
||||
var popname=name;
|
||||
if(Array.isArray(name)){
|
||||
this.popup(name[1]);
|
||||
popname=name[1];
|
||||
name=name[0];
|
||||
nopop=true;
|
||||
}
|
||||
var checkShow=this.checkShow(name);
|
||||
if(lib.translate[name]){
|
||||
if(lib.config.skill_animation_type!='off'&&lib.skill[name]&&lib.skill[name].skillAnimation){
|
||||
if(lib.config.skill_animation_type=='default'){
|
||||
checkShow=checkShow||'main';
|
||||
}
|
||||
else{
|
||||
checkShow=false;
|
||||
}
|
||||
if(lib.skill[name].textAnimation){
|
||||
checkShow=false;
|
||||
}
|
||||
this.$skill(lib.skill[name].animationStr||lib.translate[name],lib.skill[name].skillAnimation,lib.skill[name].animationColor,checkShow);
|
||||
}
|
||||
else if(!nopop) this.popup(get.skillTranslation(name,this));
|
||||
this.trySkillAnimate(name,popname,checkShow);
|
||||
if(typeof targets=='object'&&targets.length){
|
||||
var str='对<span class="bluetext">'+(targets[0]==this?'自己':get.translation(targets[0]));
|
||||
for(var i=1;i<targets.length;i++){
|
||||
|
@ -19096,10 +19137,10 @@
|
|||
node.classList.add(className);
|
||||
}
|
||||
},
|
||||
popup:function(name,className){
|
||||
popup:function(name,className,nobroadcast){
|
||||
var name2=get.translation(name);
|
||||
if(!name2) return;
|
||||
this.$damagepop(name2,className||'water',true);
|
||||
this.$damagepop(name2,className||'water',true,nobroadcast);
|
||||
},
|
||||
popup_old:function(name,className){
|
||||
var name2=get.translation(name);
|
||||
|
@ -22140,10 +22181,10 @@
|
|||
node.style.transform='scale(1.5)'
|
||||
},avatar?1600:1000);
|
||||
},
|
||||
$damagepop:function(num,nature,font){
|
||||
$damagepop:function(num,nature,font,nobroadcast){
|
||||
if(typeof num=='number'||typeof num=='string'){
|
||||
game.addVideo('damagepop',this,[num,nature,font]);
|
||||
game.broadcast(function(player,num,nature,font){
|
||||
if(!nobroadcast) game.broadcast(function(player,num,nature,font){
|
||||
player.$damagepop(num,nature,font);
|
||||
},this,num,nature,font);
|
||||
var node=ui.create.div('.damage');
|
||||
|
@ -22822,6 +22863,10 @@
|
|||
}
|
||||
},
|
||||
event:{
|
||||
changeToZero:function(){
|
||||
this.num=0;
|
||||
this.numFixed=true;
|
||||
},
|
||||
finish:function(){
|
||||
this.finished=true;
|
||||
},
|
||||
|
@ -23096,7 +23141,6 @@
|
|||
var info=lib.skill[skillx];
|
||||
var bool=false;
|
||||
for(var i in info.trigger){
|
||||
if(i!='global'&&trigger[i]!=player) continue;
|
||||
if(filter(info.trigger[i])){bool=true;break}
|
||||
}
|
||||
if(!bool) return;
|
||||
|
@ -23245,21 +23289,19 @@
|
|||
if(info&&info.trigger){
|
||||
var trigger=info.trigger;
|
||||
var add=false;
|
||||
if(player===event.player&&trigger.player){
|
||||
if(trigger.player){
|
||||
if(typeof trigger.player==='string'){
|
||||
if(trigger.player===name) add=true;
|
||||
}
|
||||
else if(trigger.player.contains(name)) add=true;
|
||||
}
|
||||
if((player===event.target||
|
||||
(event.multitarget&&event.targets&&event.targets.contains(player)))&&
|
||||
trigger.target){
|
||||
if(trigger.target){
|
||||
if(typeof trigger.target==='string'){
|
||||
if(trigger.target===name) add=true;
|
||||
}
|
||||
else if(trigger.target.contains(name)) add=true;
|
||||
}
|
||||
if(player===event.source&&trigger.source){
|
||||
if(trigger.source){
|
||||
if(typeof trigger.source==='string'){
|
||||
if(trigger.source===name) add=true;
|
||||
}
|
||||
|
@ -23280,18 +23322,16 @@
|
|||
}
|
||||
else{
|
||||
for(var i=0;i<roles.length;i++){
|
||||
if(event[roles[i]]===player){
|
||||
var triggername=player.playerid+'_'+roles[i]+'_'+name;
|
||||
if(lib.hook[triggername]){
|
||||
for(var j=0;j<lib.hook[triggername].length;j++){
|
||||
addList(lib.hook[triggername][j],player);
|
||||
}
|
||||
var triggername=player.playerid+'_'+roles[i]+'_'+name;
|
||||
if(lib.hook[triggername]){
|
||||
for(var j=0;j<lib.hook[triggername].length;j++){
|
||||
addList(lib.hook[triggername][j],player);
|
||||
}
|
||||
triggername=roles[i]+'_'+name;
|
||||
if(lib.hook.globalskill[triggername]){
|
||||
for(var j=0;j<lib.hook.globalskill[triggername].length;j++){
|
||||
addList(lib.hook.globalskill[triggername][j],player);
|
||||
}
|
||||
}
|
||||
triggername=roles[i]+'_'+name;
|
||||
if(lib.hook.globalskill[triggername]){
|
||||
for(var j=0;j<lib.hook.globalskill[triggername].length;j++){
|
||||
addList(lib.hook.globalskill[triggername][j],player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23710,6 +23750,19 @@
|
|||
if(info.noHidden&&!fullskills.contains(skill)){
|
||||
return false;
|
||||
}
|
||||
if(!info.trigger) return false;
|
||||
var bool=false;
|
||||
var has=function(obj){
|
||||
if(typeof obj=='string') return obj==name;
|
||||
else if(obj.contains(name)) return true;
|
||||
return false;
|
||||
}
|
||||
for(var i in info.trigger){
|
||||
if((i=='global'||player==event[i])&&has(info.trigger[i])){
|
||||
bool=true;break;
|
||||
}
|
||||
}
|
||||
if(!bool) return false;
|
||||
if(info.filter&&!info.filter(event,player,name)){
|
||||
return false;
|
||||
}
|
||||
|
@ -23960,7 +24013,7 @@
|
|||
var range2=player.getAttackRange();
|
||||
if(range2<=0) return false;
|
||||
var distance=get.distance(player,target)+extra;
|
||||
if(outrange[i]>distance-range2) return false;
|
||||
if(outrange[i]>distance-range2+1) return false;
|
||||
}
|
||||
else{
|
||||
var distance=get.distance(player,target,i)+extra;
|
||||
|
@ -30300,6 +30353,21 @@
|
|||
var selectableCards=false;
|
||||
if(range[0]!=range[1]||range[0]>1) auto=false;
|
||||
for(i=0;i<cards.length;i++){
|
||||
if(lib.config.cardtempname!='off'){
|
||||
var cardname=get.name(cards[i]);
|
||||
if(cards[i].name!=cardname){
|
||||
if(!cards[i]._tempName) cards[i]._tempName=ui.create.div('.tempname',cards[i]);
|
||||
var tempname=get.translation(cardname);
|
||||
cards[i]._tempName.dataset.nature='fire';
|
||||
if(cardname=='sha'){
|
||||
var nature=get.nature(cards[i]);
|
||||
if(nature) tempname=get.translation(nature)+tempname;
|
||||
if(nature=='thunder') cards[i]._tempName.dataset.nature='thunder';
|
||||
}
|
||||
cards[i]._tempName.innerHTML=lib.config.cardtempname=='default'?get.verticalStr(tempname):tempname;
|
||||
cards[i]._tempName.tempname=tempname;
|
||||
}
|
||||
}
|
||||
var nochess=true;
|
||||
if(!lib.filter.cardAiIncluded(cards[i])){
|
||||
nochess=false;
|
||||
|
@ -30633,6 +30701,10 @@
|
|||
for(j=0;j<cards.length;j++){
|
||||
cards[j].classList.remove('selected');
|
||||
cards[j].classList.remove('selectable');
|
||||
if(cards[j]._tempName){
|
||||
cards[j]._tempName.delete();
|
||||
delete cards[j]._tempName;
|
||||
}
|
||||
cards[j].updateTransform();
|
||||
}
|
||||
ui.selected.cards.length=0;
|
||||
|
@ -36891,15 +36963,11 @@
|
|||
['female','女'],
|
||||
['none','无'],
|
||||
],null,ui.create.div('.indent','性别:',newCharacter));
|
||||
var groups=ui.create.selectlist([
|
||||
['wei','魏'],
|
||||
['shu','蜀'],
|
||||
['wu','吴'],
|
||||
['qun','群'],
|
||||
['shen','神'],
|
||||
['western','西'],
|
||||
['key','键'],
|
||||
],null,ui.create.div('.indent','势力:',newCharacter));
|
||||
var grouplist=[];
|
||||
for(var i=0;i<lib.group.length;i++){
|
||||
grouplist.push([lib.group[i],get.translation(lib.group[i])]);
|
||||
};
|
||||
var groups=ui.create.selectlist(grouplist,null,ui.create.div('.indent','势力:',newCharacter));
|
||||
var options=ui.create.div('.add_skill.options','<span>主公<input type="checkbox" name="zhu"></span><span>BOSS<input type="checkbox" name="boss"></span><span>AI禁选<input type="checkbox" name="forbidai"></span><br>',newCharacter);
|
||||
var addSkill=ui.create.div('.add_skill','添加技能<br>',newCharacter);
|
||||
var list=[];
|
||||
|
@ -49816,7 +49884,7 @@
|
|||
uiintro.add('<div class="text center">'+get.translation(node.skill,'skill')+'</div>');
|
||||
uiintro._place_text=uiintro.add('<div class="text" style="display:inline">'+get.translation(node.skill,'info')+'</div>');
|
||||
}
|
||||
if(node.targets&&node.targets.length){
|
||||
if(node.targets&&get.itemtype(node.targets)=='players'){
|
||||
uiintro.add('<div class="text center">目标</div>');
|
||||
uiintro.addSmall(node.targets);
|
||||
}
|
||||
|
|
|
@ -1,40 +1,44 @@
|
|||
window.noname_update={
|
||||
version:'1.9.98.2.4',
|
||||
update:'1.9.98.2.3',
|
||||
version:'1.9.98.3',
|
||||
update:'1.9.98.2.4',
|
||||
changeLog:[
|
||||
'bug修复',
|
||||
'贾逵,张翼,界一将成名',
|
||||
'特效接口(只有接口,没有特效)',
|
||||
'bug修复',
|
||||
],
|
||||
files:[
|
||||
//'card/extra.js',
|
||||
//'card/huanlekapai.js',
|
||||
'card/extra.js',
|
||||
'card/huanlekapai.js',
|
||||
//'card/sp.js',
|
||||
'card/standard.js',
|
||||
//'card/swd.js',
|
||||
//'card/mtg.js',
|
||||
//'card/guozhan.js',
|
||||
//'card/gwent.js',
|
||||
'card/zhenfa.js',
|
||||
//'card/zhulu.js',
|
||||
//'character/diy.js',
|
||||
'character/diy.js',
|
||||
'character/extra.js',
|
||||
//'character/hearth.js',
|
||||
//'character/gujian.js',
|
||||
'character/gujian.js',
|
||||
//'character/gwent.js',
|
||||
//'character/mobile.js',
|
||||
//'character/mtg.js',
|
||||
//'character/old.js',
|
||||
'character/hearth.js',
|
||||
'character/mobile.js',
|
||||
'character/mtg.js',
|
||||
'character/old.js',
|
||||
'character/refresh.js',
|
||||
'character/shenhua.js',
|
||||
'character/sp.js',
|
||||
//'character/tw.js',
|
||||
'character/tw.js',
|
||||
'character/standard.js',
|
||||
'character/swd.js',
|
||||
//'character/xianjian.js',
|
||||
'character/xinghuoliaoyuan.js',
|
||||
//'character/yijiang.js',
|
||||
'character/yijiang.js',
|
||||
//'character/yxs.js',
|
||||
//'extension/boss/extension.js',
|
||||
//'layout/default/layout.css',
|
||||
'layout/nova/layout.css',
|
||||
//'layout/nova/layout.css',
|
||||
//'mode/identity.js',
|
||||
//'mode/doudizhu.js',
|
||||
'mode/guozhan.js',
|
||||
|
@ -50,6 +54,6 @@ window.noname_update={
|
|||
//'game/config.js',
|
||||
//'game/package.js',
|
||||
//'game/asset.js',
|
||||
'game/source.js',
|
||||
//'game/source.js',
|
||||
]
|
||||
};
|
||||
|
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 197 KiB |
After Width: | Height: | Size: 140 KiB |
After Width: | Height: | Size: 144 KiB |
After Width: | Height: | Size: 197 KiB |
After Width: | Height: | Size: 191 KiB |
After Width: | Height: | Size: 229 KiB |
|
@ -7408,7 +7408,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
unique:true,
|
||||
filter:function(event){
|
||||
var type=get.type(event.card,'trick');
|
||||
return type!='basic'&&event.cards[0]&&event.cards[0]==event.card;
|
||||
return type!='basic'&&event.card.isCard;
|
||||
},
|
||||
content:function(){
|
||||
var cards=get.cards();
|
||||
|
|
|
@ -1383,8 +1383,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
filterTarget:function(card,player,target){
|
||||
return target!=player&&target.identity!='unknown';
|
||||
},
|
||||
ai1:function(card){return 7-get.value(card)},
|
||||
//ai2:function(card,player,target){}
|
||||
ai1:function(card){return 5-get.value(card)},
|
||||
ai2:function(target){
|
||||
var player=_status.event.player;
|
||||
var att=get.attitude(player,target);
|
||||
if(att>0) return 0;
|
||||
return -(att-1)/target.countCards('h');
|
||||
}
|
||||
}).set('forced',true);
|
||||
'step 2'
|
||||
event.target=result.targets[0];
|
||||
|
@ -1504,10 +1509,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
|
||||
junling4_eff:{
|
||||
mod:{
|
||||
cardEnabled:function(card){if(get.position(card)=='h') return false},
|
||||
cardUsable:function(card){if(get.position(card)=='h') return false},
|
||||
cardRespondable:function(card){if(get.position(card)=='h') return false},
|
||||
cardSavable:function(card){if(get.position(card)=='h') return false},
|
||||
cardEnabled2:function(card){
|
||||
if(get.position(card)=='h') return false
|
||||
},
|
||||
},
|
||||
mark:true,
|
||||
marktext:'令',
|
||||
|
@ -3476,6 +3480,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
if(player.identity=='ye') return true;
|
||||
return target.identity!=player.identity;
|
||||
},
|
||||
check:function(card){
|
||||
if(card.name=='tao') return 0;
|
||||
return 5-get.value(card);
|
||||
},
|
||||
selectCard:[1,3],
|
||||
prepare:'give',
|
||||
discard:false,
|
||||
|
@ -3494,6 +3502,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
result:{
|
||||
player:function(player,target){
|
||||
var huoshao=false;
|
||||
for(var i=0;i<ui.selected.cards.length;i++){
|
||||
if(ui.selected.cards[i].name=='huoshaolianying'){huoshao=true;break}
|
||||
}
|
||||
if(huoshao&&player.inline(target.getNext())) return -3;
|
||||
if(target.isUnseen()) return 0;
|
||||
if(player.isMajor()) return 0;
|
||||
return 0.5;
|
||||
|
@ -4835,7 +4848,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
if(ui.discardPile.childNodes[i].name=='taipingyaoshu') return true;
|
||||
}
|
||||
return game.hasPlayer(function(current){
|
||||
return current!=event.player&¤t.countCards('ej','taipingyaoshu');
|
||||
return current.countCards('ej','taipingyaoshu');
|
||||
});
|
||||
}());
|
||||
},
|
||||
|
@ -4850,11 +4863,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
game.countPlayer(function(current){
|
||||
if(current!=player){
|
||||
var ej=current.getCards('ej','taipingyaoshu');
|
||||
if(ej.length){
|
||||
list.addArray(ej);
|
||||
}
|
||||
var ej=current.getCards('ej','taipingyaoshu');
|
||||
if(ej.length){
|
||||
list.addArray(ej);
|
||||
}
|
||||
});
|
||||
if(list.length){
|
||||
|
@ -7300,6 +7311,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
fengshi_sha:'锋矢',
|
||||
fengshi_info:'阵法技,在一个围攻关系中,若你是围攻角色,则你或另一名围攻角色使用【杀】指定被围攻角色为目标后,可令该角色弃置装备区内的一张牌。',
|
||||
gzsuishi:'随势',
|
||||
gzsuishi2:'随势',
|
||||
gzsuishi_info:'锁定技,其他角色进入濒死状态时,若伤害来源与你势力相同,你摸一张牌;其他角色死亡时,若其与你势力相同,你失去1点体力。',
|
||||
baoling:'暴凌',
|
||||
baoling_info:'主将技,锁定技,出牌阶段结束时,若你有副将,则你移除副将,然后加3点体力上限,回复3点体力,失去技能〖暴凌〗并获得〖崩坏〗',
|
||||
|
@ -8160,6 +8172,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
}
|
||||
game.tryResult();
|
||||
},
|
||||
wontYe:function(){
|
||||
var group=lib.character[this.name1][1];
|
||||
|
@ -8292,7 +8305,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
return false;
|
||||
},
|
||||
isMinor:function(nomajor){
|
||||
if(this.identity=='unknown'||this.isMajor()) return false;
|
||||
if(this.identity=='unknown'||(!nomajor&&this.isMajor())) return false;
|
||||
if(!nomajor&&!game.hasPlayer(function(current){
|
||||
return current.isMajor();
|
||||
})){
|
||||
|
|