Add files via upload

This commit is contained in:
Spmario233 2020-03-13 18:02:18 +08:00 committed by GitHub
parent 3ac882ba08
commit 27891dc75b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
52 changed files with 4122 additions and 3515 deletions

Binary file not shown.

BIN
audio/die/jiakui.mp3 Normal file

Binary file not shown.

BIN
audio/die/re_gaoshun.mp3 Normal file

Binary file not shown.

BIN
audio/die/re_wuguotai.mp3 Normal file

Binary file not shown.

BIN
audio/die/re_xusheng.mp3 Normal file

Binary file not shown.

BIN
audio/die/zhangyì.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/reganlu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/reganlu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/rejinjiu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/rejinjiu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/repojun1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/repojun2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/rexianzhen1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/rexianzhen2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/wanlan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/wanlan2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhiyi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhiyi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhongzuo1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhongzuo2.mp3 Normal file

Binary file not shown.

View File

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

View File

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

View File

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

View File

@ -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&&current.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&&current.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&&current.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&&current.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&&current.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&&current.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'],
],
};
});

View File

@ -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');
}
}
},

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -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:'旧曹纯',

View File

@ -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');
}
},

View File

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

View File

@ -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:'锁定技,你的【酒】均视为【杀】。其他角色不能于你的回合内使用【酒】。当你受到酒【杀】的伤害时,你令此伤害-XX为影响过此【杀】的伤害值的【酒】的数量',
rejinjiu2:'禁酒',
rejinjiu3:'禁酒',
refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风',
refresh_huo:'界限突破·火',
refresh_lin:'界限突破·林',
refresh_shan:'界限突破·山',
refresh_yijiang:'界限突破·将',
},
};
});

View File

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

View File

@ -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&&current.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')&&current.group=='wu'&&current!=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:'出牌阶段限一次,你可以令一名有牌的其他角色交给你一张牌。然后若你的手牌数大于其,其选择视为对你使用一张【杀】或【决斗】。',

View File

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

View File

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

View File

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

View File

@ -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":"谦冲",

View File

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

View File

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

View File

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

View File

@ -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',
]
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 197 KiB

BIN
image/character/jiakui.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

View File

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

View File

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