noname/card/yunchou.js

1278 lines
32 KiB
JavaScript
Raw Normal View History

2016-03-22 06:45:57 +00:00
card.yunchou={
2015-04-29 03:25:17 +00:00
card:{
2017-02-05 08:48:28 +00:00
diaobingqianjiang:{
fullskin:true,
type:'trick',
enable:true,
selectTarget:-1,
filterTarget:true,
contentBefore:function(){
"step 0"
game.delay();
player.draw();
"step 1"
ui.clear();
2017-02-05 15:22:29 +00:00
var cards=get.cards(Math.ceil(game.players.length/2));
2017-02-05 08:48:28 +00:00
var dialog=ui.create.dialog('调兵遣将',cards,true);
_status.dieClose.push(dialog);
dialog.videoId=lib.status.videoId++;
game.addVideo('cardDialog',null,['调兵遣将',get.cardsInfo(cards),dialog.videoId]);
event.getParent().preResult=dialog.videoId;
},
content:function(){
"step 0"
for(var i=0;i<ui.dialogs.length;i++){
if(ui.dialogs[i].videoId==event.preResult){
event.dialog=ui.dialogs[i];break;
}
}
if(!event.dialog||!target.num('h')){
event.finish();
return;
}
var minValue=20;
var hs=target.get('h');
for(var i=0;i<hs.length;i++){
2017-02-05 15:22:29 +00:00
minValue=Math.min(minValue,ai.get.value(hs[i],target));
2017-02-05 08:48:28 +00:00
}
if(target.isUnderControl(true)){
event.dialog.setCaption('选择一张牌并用一张手牌替换之');
}
var next=target.chooseButton(function(button){
return ai.get.value(button.link,_status.event.player)-minValue;
});
next.set('dialog',event.preResult);
next.set('closeDialog',false);
next.set('dialogdisplay',true);
"step 1"
event.dialog.setCaption('调兵遣将');
if(result.bool){
event.button=result.buttons[0];
target.chooseCard('用一张牌牌替换'+get.translation(result.links),true).ai=function(card){
return -ai.get.value(card);
}
}
else{
2017-02-05 10:40:30 +00:00
target.popup('不换');
2017-02-05 08:48:28 +00:00
event.finish();
}
"step 2"
if(result.bool){
target.lose(result.cards,ui.special);
target.$throw(result.cards);
game.log(target,'用',result.cards,'替换了',event.button.link);
target.gain(event.button.link);
target.$gain2(event.button.link);
event.dialog.buttons.remove(event.button);
event.dialog.buttons.push(ui.create.button(result.cards[0],'card',event.button.parentNode));
event.button.remove();
}
"step 3"
game.delay(2);
},
contentAfter:function(){
'step 0'
event.dialog=get.idDialog(event.preResult);
if(!event.dialog){
event.finish();
return;
}
2017-02-05 15:22:29 +00:00
var nextSeat=_status.currentPhase.next;
var att=ai.get.attitude(player,nextSeat);
2017-02-05 08:48:28 +00:00
if(player.isUnderControl(true)&&!_status.auto){
event.dialog.setCaption('将任意张牌以任意顺序置于牌堆顶(先选择的在上)');
}
var next=player.chooseButton([1,event.dialog.buttons.length],event.dialog);
next.ai=function(button){
if(att>0){
2017-02-05 15:22:29 +00:00
return ai.get.value(button.link,nextSeat)-5;
2017-02-05 08:48:28 +00:00
}
else{
2017-02-05 15:22:29 +00:00
return 5-ai.get.value(button.link,nextSeat);
2017-02-05 08:48:28 +00:00
}
}
next.set('closeDialog',false);
next.set('dialogdisplay',true);
'step 1'
if(result&&result.bool&&result.links&&result.links.length){
for(var i=0;i<result.buttons.length;i++){
event.dialog.buttons.remove(result.buttons[i]);
}
var cards=result.links.slice(0);
while(cards.length){
ui.cardPile.insertBefore(cards.pop(),ui.cardPile.firstChild);
}
game.log(player,'将'+get.cnNumber(result.links.length)+'张牌置于牌堆顶');
}
for(var i=0;i<event.dialog.buttons.length;i++){
ui.discardPile.appendChild(event.dialog.buttons[i].link);
}
'step 2'
var dialog=event.dialog;
dialog.close();
_status.dieClose.remove(dialog);
game.addVideo('cardDialog',null,event.preResult);
},
ai:{
wuxie:function(){
return 0;
},
basic:{
order:2,
useful:[3,1],
value:[5,1]
},
result:{
player:1,
target:function(player,target){
if(target.num('h')==0) return 0;
return (Math.sqrt(target.num('h'))-get.distance(player,target,'absolute')/game.players.length/3)/2;
}
},
tag:{
loseCard:1,
multitarget:1
}
}
},
2017-02-04 06:48:16 +00:00
caochuanjiejian:{
fullskin:true,
type:'trick',
2017-02-04 09:54:43 +00:00
enable:true,
2017-02-04 08:02:35 +00:00
filterTarget:function(card,player,target){
return target.num('h')>0&&target!=player;
},
2017-02-04 09:54:43 +00:00
content:function(){
'step 0'
if(target.num('h','sha')){
2017-02-05 05:41:36 +00:00
var name=get.translation(player.name);
2017-02-04 09:54:43 +00:00
target.chooseControl().set('prompt',get.translation('caochuanjiejian')).set('choiceList',[
2017-02-05 05:41:36 +00:00
'将手牌中的所有杀交给'+name+',并视为对'+name+'使用一张杀','展示手牌并令'+name+'弃置任意一张'
2017-02-04 09:54:43 +00:00
],function(){
if(ai.get.effect(player,{name:'sha'},target,target)<0) return 1;
if(target.num('h','sha')>=3) return 1;
return 0;
});
}
else{
event.directfalse=true;
}
'step 1'
if(event.directfalse||result.control=='选项二'){
2017-02-05 05:41:36 +00:00
if(target.num('h')){
if(!player.isUnderControl(true)){
target.showHandcards();
}
else{
game.log(target,'展示了',target.get('h'));
}
player.discardPlayerCard(target,'h',true,'visible');
}
2017-02-04 09:54:43 +00:00
event.finish();
}
else{
var hs=target.get('h','sha');
player.gain(hs,target);
target.$give(hs,player);
}
'step 2'
target.useCard({name:'sha'},player);
},
2017-02-04 08:02:35 +00:00
ai:{
order:4,
2017-02-04 12:02:30 +00:00
value:[5,1],
2017-02-04 08:02:35 +00:00
result:{
target:function(player,target){
if(player.hasShan()) return -1;
return 0;
}
}
}
2017-02-04 06:48:16 +00:00
},
xiaolicangdao:{
fullskin:true,
type:'trick',
2017-02-04 09:54:43 +00:00
enable:true,
filterTarget:function(card,player,target){
return target!=player;
},
content:function(){
'step 0'
if(cards&&cards.length){
target.gain(cards,player);
target.$gain2(cards);
if(cards.length==1){
event.card1=cards[0];
}
}
'step 1'
event.card2=target.get('h').randomGet();
if(event.card2){
target.discard(event.card2);
}
else{
event.finish();
}
'step 2'
if(event.card1&&event.card1.name==event.card2.name){
target.damage();
}
},
ai:{
order:6,
2017-02-04 12:02:30 +00:00
value:[4,1],
2017-02-04 09:54:43 +00:00
result:{
target:function(player,target){
return -2/Math.sqrt(1+target.num('h'));
},
},
tag:{
damage:1,
discard:1,
loseCard:1,
}
}
2017-02-04 06:48:16 +00:00
},
geanguanhuo:{
fullskin:true,
type:'trick',
2017-02-04 09:54:43 +00:00
enable:true,
filterTarget:function(card,player,target){
return target!=player&&target.num('h')>0;
},
multitarget:true,
multiline:true,
content:function(){
'step 0'
targets[0].chooseToCompare(targets[1]);
'step 1'
if(!result.tie){
if(result.bool){
2017-02-06 12:03:57 +00:00
targets[0].gainPlayerCard(targets[1],true);
2017-02-04 09:54:43 +00:00
targets[0].line(targets[1]);
}
else{
2017-02-06 12:03:57 +00:00
targets[1].gainPlayerCard(targets[0],true);
2017-02-04 09:54:43 +00:00
targets[1].line(targets[0]);
}
event.finish();
}
'step 2'
2017-02-06 12:03:57 +00:00
targets[0].discardPlayerCard(player);
2017-02-04 09:54:43 +00:00
targets[0].line(player);
'step 3'
2017-02-06 12:03:57 +00:00
targets[1].discardPlayerCard(player);
2017-02-04 09:54:43 +00:00
targets[1].line(player);
},
selectTarget:2,
ai:{
order:5,
2017-02-04 12:02:30 +00:00
value:[7,1],
useful:[4,1],
2017-02-04 09:54:43 +00:00
result:{
target:-1,
}
}
2017-02-04 06:48:16 +00:00
},
shezhanqunru:{
fullskin:true,
type:'trick',
2017-02-05 15:22:29 +00:00
enable:true,
2017-02-04 09:54:43 +00:00
filterTarget:function(card,player,target){
return target==player;
},
selectTarget:-1,
modTarget:true,
content:function(){
'step 0'
var list=[];
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=target&&game.players[i].num('h')){
list.push(game.players[i]);
}
}
if(!list.length){
2017-02-05 15:22:29 +00:00
target.draw(3);
2017-02-04 09:54:43 +00:00
event.finish();
}
else{
2017-02-05 06:55:07 +00:00
get.sortSeat(list,target);
2017-02-04 09:54:43 +00:00
event.list=list;
event.torespond=[];
}
'step 1'
if(event.list.length){
event.current=event.list.shift();
2017-02-04 12:02:30 +00:00
event.current.chooseBool('是否响应'+get.translation(target)+'的舌战群儒?',function(event,player){
2017-02-04 09:54:43 +00:00
if(ai.get.attitude(player,_status.event.source)>=0) return false;
var hs=player.get('h');
for(var i=0;i<hs.length;i++){
var value=ai.get.value(hs[i]);
2017-02-04 15:59:46 +00:00
if(!_status.event.hasTarget){
2017-02-04 09:54:43 +00:00
if(hs[i].number>=8&&value<=7) return true;
if(value<=3) return true;
}
else{
if(hs[i].number>=11&&value<=5) return true;
if(value<0) return true;
}
}
return false;
2017-02-04 15:59:46 +00:00
}).set('source',target).set('hasTarget',event.torespond.length>0);
2017-02-04 09:54:43 +00:00
}
else{
event.goto(3);
}
'step 2'
if(result.bool){
event.torespond.push(event.current);
event.current.line(target,'green');
event.current.popup('响应');
game.log(event.current,'响应了舌战群儒');
game.delayx(0.5);
}
event.goto(1);
'step 3'
if(event.torespond.length==0){
event.num=1;
}
else{
event.num=0;
2017-02-04 12:02:30 +00:00
target.chooseToCompare(event.torespond).callback=lib.card.shezhanqunru.callback;
2017-02-04 09:54:43 +00:00
}
'step 4'
if(event.num>0){
2017-02-04 12:02:30 +00:00
target.draw(3);
2017-02-04 09:54:43 +00:00
}
},
callback:function(){
if(event.card1.number>event.card2.number){
event.parent.parent.num++;
}
else{
event.parent.parent.num--;
}
},
ai:{
order:8.5,
2017-02-04 12:02:30 +00:00
value:[6,1],
useful:[3,1],
2017-02-04 09:54:43 +00:00
result:{
target:function(player,target){
var hs=target.get('h');
for(var i=0;i<hs.length;i++){
var value=ai.get.value(hs[i]);
if(hs[i].number>=7&&value<=6) return 1;
if(value<=3) return 1;
}
return 0;
}
}
}
2017-02-04 06:48:16 +00:00
},
2017-02-04 05:07:19 +00:00
youdishenru:{
fullskin:true,
type:'trick',
2017-02-04 12:02:30 +00:00
notarget:true,
2017-02-04 17:02:18 +00:00
wuxieable:true,
2017-02-04 12:02:30 +00:00
content:function(){
'step 0'
2017-02-04 15:59:46 +00:00
var info=event.getParent(2).youdiinfo||event.getParent(3).youdiinfo;
if(!info){
2017-02-04 12:02:30 +00:00
event.finish();
return;
}
2017-02-04 15:59:46 +00:00
info.evt.untrigger();
info.evt.finish();
event.source=info.source;
2017-02-04 12:02:30 +00:00
event.source.storage.youdishenru=player;
event.source.addSkill('youdishenru');
'step 1'
2017-02-04 15:59:46 +00:00
var next=event.source.chooseToUse({name:'sha'},player,-1,'对'+get.translation(player)+'使用一张杀,或受到一点伤害');
next.ai2=function(){
return 1;
};
2017-02-04 12:02:30 +00:00
'step 2'
if(result.bool){
if(event.source.storage.youdishenru){
event.goto(1);
}
else{
event.source.removeSkill('youdishenru');
}
}
else{
event.source.damage(player);
event.source.removeSkill('youdishenru');
}
},
ai:{
value:[5,1],
useful:[5,1],
order:1,
2017-02-04 17:02:18 +00:00
wuxie:function(target,card,player,current,state){
return -state*ai.get.attitude(player,current);
},
2017-02-04 12:02:30 +00:00
result:{
player:function(player){
2017-02-04 15:59:46 +00:00
if(_status.event.parent.youdiinfo&&
ai.get.attitude(player,_status.event.parent.youdiinfo.source)<=0){
return 1;
}
2017-02-04 12:02:30 +00:00
return 0;
}
}
}
2017-02-04 05:07:19 +00:00
},
2017-02-04 02:55:04 +00:00
wangmeizhike:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
2017-02-06 16:24:42 +00:00
return (target.isLowestHp()&&target.isDamaged())||target.isFewestHandcard();
2017-02-04 02:55:04 +00:00
},
content:function(){
'step 0'
2017-02-06 16:24:42 +00:00
if(target.isFewestHandcard()) target.draw(2);
2017-02-04 02:55:04 +00:00
'step 1'
2017-02-06 16:24:42 +00:00
if(target.isLowestHp()) target.recover();
2017-02-04 02:55:04 +00:00
},
ai:{
order:2,
value:6,
result:{
target:function(player,target){
var num=0;
2017-02-06 16:24:42 +00:00
if(target.isLowestHp()&&ai.get.recoverEffect(target)>0){
2017-02-04 02:55:04 +00:00
if(target.hp==1){
num+=3;
}
else{
num+=2;
}
}
2017-02-06 16:24:42 +00:00
if(target.isFewestHandcard()){
2017-02-04 02:55:04 +00:00
num+=2;
}
return num;
}
}
}
},
2016-03-22 06:45:57 +00:00
suolianjia:{
fullskin:true,
type:"equip",
subtype:"equip2",
skills:['suolianjia'],
onEquip:function(){
if(player.isLinked()==false) player.link();
},
onLose:function(){
if(player.isLinked()) player.link();
},
ai:{
basic:{
equipValue:5
},
},
},
chenhuodajie:{
fullskin:true,
type:'trick',
2017-01-15 02:06:03 +00:00
filterTarget:true,
2016-03-22 06:45:57 +00:00
content:function(){
if(target.num('he')){
player.gainPlayerCard('he',target,true);
}
},
ai:{
order:1,
useful:6,
value:6,
result:{
target:-1
},
tag:{
loseCard:1
}
}
},
shushangkaihua:{
fullskin:true,
type:'trick',
enable:true,
selectTarget:-1,
multitarget:true,
multiline:true,
filterTarget:function(card,player,target){
var num=target.num('h');
for(var i=0;i<game.players.length;i++){
if(game.players[i].num('h')<num) return false;
}
return true;
},
content:function(){
2016-05-30 08:07:55 +00:00
var num=[];
for(var i=0;i<targets.length;i++){
if(targets[i]==player){
num.push(2);
}
else{
num.push(1);
}
}
if(!targets.contains(player)){
targets.add(player);
}
game.asyncDraw(targets,num);
2016-03-22 06:45:57 +00:00
},
ai:{
order:1,
value:5,
result:{
2016-05-30 08:07:55 +00:00
target:1,
player:0.1,
2016-03-22 06:45:57 +00:00
}
}
},
yihuajiemu:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
if(target.isMin()) return false;
if(ui.selected.targets.length){
return target.get('e',{subtype:'equip5'}).length==0;
}
else{
return target.get('e',{subtype:'equip5'}).length>0;
}
},
selectTarget:2,
multitarget:true,
content:function(){
if(targets[0].get('e','5')){
targets[0].$give(targets[0].get('e','5'),targets[1]);
targets[1].equip(targets[0].get('e','5'));
game.delay();
}
},
ai:{
order:1,
result:{
target:function(player,target){
if(target.get('e',{subtype:'equip5'}).length){
if(ai.get.attitude(target,player)>0){
return -0.5;
}
return -1;
}
return 1;
}
},
tag:{
loseCard:1
}
}
},
fudichouxin:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
return player!=target&&target.get('h').length;
},
content:function(){
"step 0"
2017-01-23 15:49:24 +00:00
player.chooseToCompare(target).set('preserve','win').clear=false;
2016-03-22 06:45:57 +00:00
"step 1"
if(result.bool){
player.gain([result.player,result.target]);
result.player.clone.moveDelete(player);
result.target.clone.moveDelete(player);
game.addVideo('gain2',player,get.cardsInfo([result.player,result.target]));
}
else if(!result.cancelled){
result.player.clone.delete();
result.target.clone.delete();
game.addVideo('deletenode',player,get.cardsInfo([result.player,result.target]));
}
},
ai:{
order:4,
result:{
target:function(player){
if(player.get('h').length<=1) return 0;
return -1;
},
player:function(player){
if(player.get('h').length<=1) return 0;
return 0.5;
}
},
tag:{
loseCard:1
}
}
},
shuiyanqijun:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
return target.num('e');
},
selectTarget:-1,
content:function(){
if(target.num('e')) target.chooseToDiscard('e',true);
},
ai:{
order:9,
result:{
target:function(player,target){
if(target.num('e')) return -1;
return 0;
}
},
tag:{
multitarget:1,
multineg:1
}
}
},
toulianghuanzhu:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
return target.num('h')>0;
},
selectTarget:2,
multitarget:true,
targetprompt:['被拿牌','得牌'],
content:function(){
"step 0"
targets[0].addTempSkill('toulianghuanzhu2','phaseAfter');
var hs=targets[0].get('h');
event.num=Math.min(2,hs.length);
if(event.num){
2017-01-13 18:51:13 +00:00
targets[1].gain(hs.randomGets(event.num),targets[0]);
2016-03-22 06:45:57 +00:00
targets[0].$give(event.num,targets[1]);
game.delay();
}
else{
event.finish();
}
"step 1"
if(targets[1].num('h')){
if(_status.auto&&targets[1]==game.me){
game.delay();
}
targets[1].chooseCard(true,event.num,'选择'+get.cnNumber(event.num)+'张手牌还给'+get.translation(targets[0])).ai=ai.get.disvalue;
}
else{
event.finish();
}
"step 2"
2017-01-13 18:51:13 +00:00
targets[0].gain(result.cards,targets[1]);
2016-03-22 06:45:57 +00:00
targets[1].$give(event.num,targets[0]);
},
ai:{
order:6.5,
tag:{
loseCard:1,
multitarget:1,
multineg:1
},
result:{
target:function(player,target){
if(ui.selected.targets.length){
if(target==player&&target.num('h')<=1) return 0;
return 0.5;
}
2016-08-13 07:28:11 +00:00
if(target.hasSkill('toulianghuanzhu2')) return 0;
2016-03-22 06:45:57 +00:00
return -0.5;
}
},
wuxie:function(){
return 0;
},
2017-02-04 12:02:30 +00:00
useful:[3,1],
value:[4,1]
2016-03-22 06:45:57 +00:00
}
},
2015-04-29 03:25:17 +00:00
hufu:{
fullskin:true,
type:'basic',
2017-01-12 14:50:54 +00:00
savable:function(card,player,dying){
return dying==player;
},
2015-04-29 03:25:17 +00:00
ai:{
value:[7.5,5,2],
useful:[7.5,5,2],
}
},
huoshan:{
fullskin:true,
type:'delay',
2017-01-15 09:55:22 +00:00
modTarget:function(card,player,target){
return lib.filter.judge(card,player,target);
},
2015-04-29 03:25:17 +00:00
enable:function(card,player){
return (lib.filter.judge(card,player,player));
},
filterTarget:function(card,player,target){
return (lib.filter.judge(card,player,target)&&player==target);
},
selectTarget:[-1,-1],
judge:function(card){
if(get.suit(card)=='heart'&&get.number(card)>1&&get.number(card)<10) return -6;
return 0;
},
effect:function(){
if(result.judge){
player.damage(2,'fire','nosource');
var players=get.players();
for(var i=0;i<game.players.length;i++){
if(get.distance(player,game.players[i])<=1&&player!=game.players[i]){
game.players[i].damage(1,'fire','nosource');
}
}
}
else{
if(!card.expired){
2015-06-27 16:21:25 +00:00
var target=player.next;
2015-12-10 15:57:45 +00:00
for(var iwhile=0;iwhile<10;iwhile++){
if(target.num('j','huoshan')){
target=target.next;
}
else{
break;
}
2015-06-27 16:21:25 +00:00
}
2015-12-10 15:57:45 +00:00
if(target.num('j','huoshan')||target==player){
ui.discardPile.appendChild(card);
2015-04-29 03:25:17 +00:00
}
else{
2015-12-10 15:57:45 +00:00
if(card.name!='huoshan'){
target.addJudge('huoshan',card);
}
else{
target.addJudge(card);
}
2015-04-29 03:25:17 +00:00
}
}
else{
card.expired=false;
}
}
},
cancel:function(){
2015-06-27 16:21:25 +00:00
if(!card.expired){
var target=player.next;
2015-12-10 15:57:45 +00:00
for(var iwhile=0;iwhile<10;iwhile++){
if(target.num('j','huoshan')){
target=target.next;
}
else{
break;
}
2015-06-27 16:21:25 +00:00
}
2015-12-10 15:57:45 +00:00
if(target.num('j','huoshan')||target==player){
ui.discardPile.appendChild(card);
2015-06-27 16:21:25 +00:00
}
else{
2015-12-10 15:57:45 +00:00
if(card.name!='huoshan'){
target.addJudge('huoshan',card);
}
else{
target.addJudge(card);
}
2015-06-27 16:21:25 +00:00
}
}
else{
card.expired=false;
}
2015-04-29 03:25:17 +00:00
},
ai:{
basic:{
useful:0,
value:0,
},
order:1,
result:{
target:function(player,target){
var rejudge,num=0;
for(var i=0;i<game.players.length;i++){
for(var j=0;j<game.players[i].skills.length;j++){
rejudge=get.tag(game.players[i].skills[j],'rejudge',game.players[i]);
if(rejudge!=undefined){
if(ai.get.attitude(target,game.players[i])>0&&
ai.get.attitude(game.players[i],target)>0) num+=rejudge;
else num-=rejudge;
}
}
}
if(num>0) return num;
if(num==0){
if(lib.config.mode=='identity'){
if(target.identity=='nei') return 1;
var situ=ai.get.situation();
if(target.identity=='fan'){
if(situ>1) return 1;
}
else{
if(situ<-1) return 1;
}
}
else if(lib.config.mode=='guozhan'){
if(target.identity=='ye') return 1;
for(var i=0;i<game.players.length;i++){
if(game.players[i].identity=='unknown') return -1;
}
if(get.population(target.identity)==1){
if(target.maxHp>2&&target.hp<2) return 1;
if(game.players.length<3) return -1;
if(target.hp<=2&&target.num('he')<=3) return 1;
}
}
}
return -1;
}
},
tag:{
// damage:1,
// natureDamage:1,
// fireDamage:1,
}
}
},
hongshui:{
type:'delay',
enable:function(card,player){
return (lib.filter.judge(card,player,player));
},
2017-01-15 09:55:22 +00:00
modTarget:function(card,player,target){
return lib.filter.judge(card,player,target);
},
2015-04-29 03:25:17 +00:00
filterTarget:function(card,player,target){
return (lib.filter.judge(card,player,target)&&player==target);
},
selectTarget:[-1,-1],
judge:function(card){
if(get.suit(card)=='club'&&get.number(card)>1&&get.number(card)<10) return -3;
return 0;
},
fullskin:true,
effect:function(){
if(result.judge){
if(player.num('he')==0) player.loseHp();
2015-09-03 03:49:14 +00:00
else{
player.discard(player.get('he').randomGets(3));
}
2015-04-29 03:25:17 +00:00
var players=get.players();
2015-09-03 03:49:14 +00:00
for(var i=0;i<players.length;i++){
var dist=get.distance(player,players[i]);
if(dist<=2&&player!=players[i]){
var cs=players[i].get('he');
if(cs.length==0) players[i].loseHp();
else{
players[i].discard(cs.randomGets(3-Math.max(1,dist)));
}
2015-04-29 03:25:17 +00:00
}
}
}
else{
if(!card.expired){
2015-06-27 16:21:25 +00:00
var target=player.next;
2015-12-10 15:57:45 +00:00
for(var iwhile=0;iwhile<10;iwhile++){
if(target.num('j','hongshui')){
target=target.next;
}
else{
break;
}
2015-06-27 16:21:25 +00:00
}
2015-12-10 15:57:45 +00:00
if(target.num('j','hongshui')||target==player){
ui.discardPile.appendChild(card);
2015-04-29 03:25:17 +00:00
}
else{
2015-12-10 15:57:45 +00:00
if(card.name!='hongshui'){
target.addJudge('hongshui',card);
}
else{
target.addJudge(card);
}
2015-04-29 03:25:17 +00:00
}
}
else{
card.expired=false;
}
}
},
cancel:function(){
2015-06-27 16:21:25 +00:00
if(!card.expired){
var target=player.next;
2015-12-10 15:57:45 +00:00
for(var iwhile=0;iwhile<10;iwhile++){
if(target.num('j','hongshui')){
target=target.next;
}
else{
break;
}
2015-06-27 16:21:25 +00:00
}
2015-12-10 15:57:45 +00:00
if(target.num('j','hongshui')||target==player){
ui.discardPile.appendChild(card);
2015-06-27 16:21:25 +00:00
}
else{
2015-12-10 15:57:45 +00:00
if(card.name!='hongshui'){
target.addJudge('hongshui',card);
}
else{
target.addJudge(card);
}
2015-06-27 16:21:25 +00:00
}
}
else{
card.expired=false;
}
2015-04-29 03:25:17 +00:00
},
ai:{
basic:{
useful:0,
value:0,
},
order:1,
result:{
target:function(player,target){
var rejudge,num=0;
for(var i=0;i<game.players.length;i++){
for(var j=0;j<game.players[i].skills.length;j++){
rejudge=get.tag(game.players[i].skills[j],'rejudge',game.players[i]);
if(rejudge!=undefined){
if(ai.get.attitude(target,game.players[i])>0&&
ai.get.attitude(game.players[i],target)>0) num+=rejudge;
else num-=rejudge;
}
}
}
if(num>0) return num;
if(num==0){
if(lib.config.mode=='identity'){
if(target.identity=='nei') return 1;
var situ=ai.get.situation();
if(target.identity=='fan'){
if(situ>0) return 1;
}
else{
if(situ<0) return 1;
}
}
else if(lib.config.mode=='guozhan'){
if(game.players.length<=2) return -1;
if(target.identity=='ye') return 1;
for(var i=0;i<game.players.length;i++){
if(game.players[i].identity=='unknown') return -1;
}
if(get.population(target.identity)==1){
return 1;
}
}
}
return -1;
}
},
}
},
liuxinghuoyu:{
fullskin:true,
type:'trick',
enable:true,
2016-05-31 02:24:21 +00:00
filterTarget:true,
2015-04-29 03:25:17 +00:00
content:function(){
"step 0"
2016-07-01 01:31:02 +00:00
if(target.num('he')<2){
event.directfalse=true;
}
else{
target.chooseToDiscard('he',2).ai=function(card){
if(target.hasSkillTag('nofire')) return 0;
2016-07-17 03:28:46 +00:00
if(ai.get.damageEffect(target,player,target,'fire')>=0) return 0;
2016-07-20 02:04:20 +00:00
if(player.hasSkillTag('notricksource')) return 0;
if(target.hasSkillTag('notrick')) return 0;
2016-07-01 01:31:02 +00:00
if(card.name=='tao') return 0;
if(target.hp==1&&card.name=='jiu') return 0;
if(target.hp==1&&get.type(card)!='basic'){
return 10-ai.get.value(card);
}
return 8-ai.get.value(card);
};
}
2015-04-29 03:25:17 +00:00
"step 1"
2016-07-01 07:34:40 +00:00
if(event.directfalse||!result.bool){
2016-05-31 02:24:21 +00:00
target.damage('fire');
2015-04-29 03:25:17 +00:00
}
},
ai:{
basic:{
order:4,
value:7,
useful:2,
},
result:{
target:function(player,target){
if(target.hasSkillTag('nofire')) return 0;
2016-07-01 07:34:40 +00:00
if(ai.get.damageEffect(target,player,player)<0&&ai.get.attitude(player,target)>0){
return -2;
}
2015-09-16 02:45:45 +00:00
var nh=target.num('he');
if(target==player) nh--;
2016-05-31 02:24:21 +00:00
switch(nh){
case 0:case 1:return -2;
case 2:return -1.5;
case 3:return -1;
default:return -0.7;
}
2015-04-29 03:25:17 +00:00
}
},
tag:{
2016-05-31 02:24:21 +00:00
damage:1,
fireDamage:1,
natureDamage:1,
discard:1,
loseCard:1,
2015-04-29 03:25:17 +00:00
position:'he',
}
}
},
qiankundai:{
fullskin:true,
type:'equip',
subtype:'equip5',
onLose:function(){
player.draw();
},
skills:['qiankundai'],
ai:{
order:9.5,
basic:{
equipValue:function(card,player){
if(player.num('h','qiankundai')) return 6;
return 1;
}
}
}
},
},
skill:{
2016-03-22 06:45:57 +00:00
suolianjia:{
trigger:{player:'damageBefore'},
filter:function(event){
if(event.source&&event.source.num('s','unequip')) return;
if(event.nature) return true;
},
forced:true,
content:function(){
trigger.untrigger();
trigger.finish();
},
ai:{
nofire:true,
nothunder:true,
effect:{
target:function(card,player,target,current){
if(get.tag(card,'natureDamage')) return 'zerotarget';
if(card.name=='tiesuo'){
return [0,0];
}
}
}
}
},
toulianghuanzhu2:{},
2017-02-04 12:02:30 +00:00
youdishenru:{
trigger:{source:'damageEnd'},
forced:true,
popup:false,
silent:true,
2017-02-05 03:56:18 +00:00
onremove:true,
2017-02-04 12:02:30 +00:00
filter:function(event,player){
return event.card&&event.card.name=='sha'&&event.player==player.storage.youdishenru;
},
content:function(){
delete player.storage.youdishenru;
}
},
_youdishenru:{
trigger:{target:'shaBefore'},
direct:true,
filter:function(event,player){
return player.hasCard('youdishenru');
},
content:function(){
2017-02-04 15:59:46 +00:00
event.youdiinfo={
source:trigger.player,
evt:trigger
};
2017-02-04 12:02:30 +00:00
player.chooseToUse({name:'youdishenru'},'是否使用诱敌深入?');
}
},
2016-03-22 06:45:57 +00:00
_chenhuodajie:{
trigger:{global:'damageEnd'},
direct:true,
filter:function(event,player){
if(event.player==player) return false;
if(!event.player.num('he')) return false;
2017-01-15 02:06:03 +00:00
if(!lib.filter.targetEnabled({name:'chenhuodajie'},player,event.player)) return false;
2017-02-04 12:02:30 +00:00
return player.hasCard('chenhuodajie');
2016-03-22 06:45:57 +00:00
},
content:function(){
2016-10-01 07:52:22 +00:00
player.chooseToUse(get.prompt('chenhuodajie',trigger.player).replace(/发动/,'使用'),function(card,player){
2016-03-22 06:45:57 +00:00
if(card.name!='chenhuodajie') return false;
var mod=game.checkMod(card,player,'unchanged','cardEnabled',player.get('s'));
if(mod!='unchanged') return mod;
return true;
},trigger.player,-1).targetRequired=true;
}
},
2015-04-29 03:25:17 +00:00
qiankundai:{
mod:{
maxHandcard:function(player,num){
return num+1;
}
},
},
_hufu_sha:{
enable:['chooseToRespond','chooseToUse'],
filter:function(event,player){
return player.num('h','hufu')>0;
},
filterCard:{name:'hufu'},
viewAs:{name:'sha'},
prompt:'将一张虎符当杀使用或打出',
check:function(card){return 1},
ai:{
order:1,
useful:7.5,
value:7.5
}
},
_hufu_shan:{
enable:['chooseToRespond','chooseToUse'],
filter:function(event,player){
return player.num('h','hufu')>0;
},
filterCard:{name:'hufu'},
viewAs:{name:'shan'},
prompt:'将一张虎符当闪使用或打出',
check:function(){return 1},
ai:{
order:1,
useful:7.5,
value:7.5
}
},
_hufu_jiu:{
enable:['chooseToRespond','chooseToUse'],
filter:function(event,player){
return player.num('h','hufu')>0;
},
filterCard:{name:'hufu'},
viewAs:{name:'jiu'},
prompt:'将一张虎符当酒使用',
check:function(){return 1},
},
},
translate:{
2017-02-05 08:48:28 +00:00
diaobingqianjiang:'调兵遣将',
2017-02-05 15:22:29 +00:00
diaobingqianjiang_info:'出牌阶段对所有角色使用。你摸一张牌然后亮出牌堆顶的X张牌X为存活角色数的一半向上取整目标可以用一张手牌替换其中的一张牌。结算后你可以将剩余的牌中的任意张以任意顺序置于牌堆顶',
2017-02-04 06:48:16 +00:00
caochuanjiejian:'草船借箭',
2017-02-05 05:41:36 +00:00
caochuanjiejian_info:'出牌阶段对一名有手牌的其他角色使用目标选择一项将手牌中的所有杀至少1张交给你并视为对你使用一张杀或展示手牌并令你弃置任意张',
2017-02-04 06:48:16 +00:00
xiaolicangdao:'笑里藏刀',
xiaolicangdao_info:'出牌阶段对一名其他角色使用。你将此【笑里藏刀】交给目标然后弃置其一张手牌若这两张牌牌名相同你对其造成1点伤害',
shezhanqunru:'舌战群儒',
shezhanqunru_info:'出牌阶段,对你使用。你请求所有有手牌的其他角色响应,然后同时与响应的角色拼点。若有角色响应且结果中你赢的次数更多,或若没有角色响应,你摸三张牌',
2017-02-04 05:07:19 +00:00
youdishenru:'诱敌深入',
youdishenru_info:'当以你为目标的【杀】生效前对此【杀】使用。抵消此【杀】然后此【杀】的使用者需对你使用【杀】在此【杀】结算结束之后若此【杀】未对你造成伤害其重复此流程否则受到你造成的1点伤害',
2016-03-22 06:45:57 +00:00
suolianjia:'锁链甲',
suolianjia_info:'锁定技,你防止即将受到的属性伤害,当装备时进入连环状态,当卸下时解除连环状态',
suolianjia_bg:'链',
geanguanhuo:'隔岸观火',
2017-02-06 12:03:57 +00:00
geanguanhuo_info:'出牌阶段对两名其他角色使用,令目标拼点,赢的角色获得另一方的一张牌;若点数相同,两名目标可分别弃置你一张牌',
2016-03-22 06:45:57 +00:00
toulianghuanzhu:'偷梁换柱',
toulianghuanzhu_info:'令一名角色获得另一名角色的两张手牌,然后还回两张手牌',
toulianghuanzhu_bg:'柱',
yihuajiemu:'移花接木',
yihuajiemu_info:'将一名角色的宝物牌转移至另一名角色',
fudichouxin:'釜底抽薪',
fudichouxin_info:'与一名角色进行拼点,若成功则获得双方拼点牌',
2016-06-25 06:30:34 +00:00
shuiyanqijun:'水攻',
2016-03-22 06:45:57 +00:00
shuiyanqijun_info:'令所有有装备的角色各弃置一张装备牌',
2017-02-04 02:55:04 +00:00
wangmeizhike:'望梅止渴',
wangmeizhike_info:'出牌阶段对一名角色使用,若没有角色手牌比目标少,目标摸两张牌;若没有角色体力比目标少,目标回复一点体力',
2016-03-22 06:45:57 +00:00
chenhuodajie:'趁火打劫',
chenhuodajie_info:'任意一名其他角色受到伤害时对其使用,获得其一张牌',
2015-04-29 03:25:17 +00:00
huoshan:'火山',
huoshan_info:'出牌阶段对自己使用。若判定结果为红桃2~9则目标角色受到2点火焰伤害距离目标1以内的其他角色受到1点火焰伤害。若判定不为红桃2~9将之移动到下家的判定区里。',
hongshui:'洪水',
2015-09-03 03:49:14 +00:00
hongshui_info:'出牌阶段对自己使用。若判定结果为梅花2~9该角色随机弃置3张牌距离该角色为X的角色随机弃置3-X张牌若没有牌则失去一点体力X至少为1',
2015-04-29 03:25:17 +00:00
liuxinghuoyu:'流星火羽',
2016-05-31 02:24:21 +00:00
liuxinghuoyu_info:'出牌阶段对一名角色使用令目标弃置2张牌或受到一点火焰伤害',
2015-04-29 03:25:17 +00:00
qiankundai:'乾坤袋',
2017-02-04 02:55:04 +00:00
qiankundai_info:'你的手牌上限+1。当你失去该装备时你摸一张牌。',
2015-04-29 03:25:17 +00:00
hufu:'虎符',
hufu_bg:'符',
_hufu_sha:'符杀',
_hufu_shan:'符闪',
_hufu_jiu:'符酒',
hufu_info:'你可以将一张虎符当作杀、闪或酒使用或打出',
},
list:[
['heart',1,'hufu'],
['spade',1,'hufu'],
['club',1,'qiankundai'],
['heart',6,'huoshan','fire'],
['club',7,'hongshui'],
['diamond',3,'liuxinghuoyu','fire'],
['heart',6,'liuxinghuoyu','fire'],
['heart',9,'liuxinghuoyu','fire'],
2016-03-22 06:45:57 +00:00
['heart',3,'yihuajiemu'],
["diamond",3,'guohe'],
['diamond',4,'fudichouxin'],
['diamond',1,'yihuajiemu'],
['club',6,'fudichouxin'],
['spade',1,'fudichouxin'],
['club',7,'shuiyanqijun'],
['diamond',7,'yihuajiemu'],
['club',8,'shuiyanqijun'],
['club',8,'guohe'],
['spade',9,'shuiyanqijun'],
['heart',9,'toulianghuanzhu'],
['club',10,'toulianghuanzhu'],
['spade',13,'guohe'],
2017-02-04 05:07:19 +00:00
['heart',6,'wangmeizhike'],
['club',1,'wangmeizhike'],
2016-03-22 06:45:57 +00:00
['diamond',6,'chenhuodajie'],
['diamond',9,'chenhuodajie'],
['club',3,'chenhuodajie'],
['club',13,'suolianjia'],
2017-02-04 09:54:43 +00:00
['club',3,'caochuanjiejian'],
['spade',7,'caochuanjiejian'],
2017-02-04 12:02:30 +00:00
['spade',5,'xiaolicangdao'],
['diamond',11,'xiaolicangdao'],
['heart',1,'geanguanhuo'],
['spade',6,'geanguanhuo'],
['heart',4,'shezhanqunru'],
['club',8,'shezhanqunru'],
2017-02-05 08:48:28 +00:00
['diamond',1,'diaobingqianjiang'],
['spade',2,'diaobingqianjiang'],
2017-02-04 12:02:30 +00:00
['heart',12,'youdishenru'],
['club',2,'youdishenru'],
['spade',9,'youdishenru'],
2015-04-29 03:25:17 +00:00
],
}