noname/card/gujian.js

1937 lines
48 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'use strict';
game.import('card',function(lib,game,ui,get,ai,_status){
return {
name:'gujian',
card:{
luyugeng:{
fullskin:true,
type:'food',
enable:true,
filterTarget:function(card,player,target){
return !target.hasSkill('luyugeng');
},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.luyugeng=card;
target.storage.luyugeng_markcount=3;
target.addSkill('luyugeng');
},
ai:{
order:2,
value:4,
result:{
target:1
}
}
},
jinlianzhu:{
type:'trick',
fullskin:true,
filterTarget:true,
global:'g_jinlianzhu',
content:function(){
var evt=event.getParent(3)._trigger;
evt.cancel()
if(evt.source){
evt.source.draw();
}
},
ai:{
order:1,
value:[5,1],
useful:[6,1],
result:{
target:function(player,target){
var evt=_status.event.getTrigger();
var eff=get.damageEffect(target,evt.source,target,evt.nature);
if(eff>0) return -1;
if(eff<0) return 2;
return 0;
}
}
}
},
chunbing:{
fullskin:true,
type:'food',
enable:true,
filterTarget:function(card,player,target){
return !target.hasSkill('chunbing');
},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.chunbing=card;
target.storage.chunbing_markcount=5;
target.addSkill('chunbing');
},
ai:{
order:2,
value:4,
result:{
target:function(player,target){
var num=target.needsToDiscard();
if(num){
if(target==player&&num>1){
return num;
}
return Math.sqrt(num);
}
return 0;
}
}
}
},
gudonggeng:{
fullskin:true,
type:'food',
enable:true,
filterTarget:function(card,player,target){
return !target.hasSkill('gudonggeng');
},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.gudonggeng=card;
target.storage.gudonggeng_markcount=3;
target.addSkill('gudonggeng');
},
ai:{
order:2,
value:4,
result:{
target:function(player,target){
if(player==target&&!player.hasShan()) return 2;
return 1/Math.max(1,target.hp);
}
}
}
},
liyutang:{
fullskin:true,
type:'food',
enable:true,
filterTarget:function(card,player,target){
return !target.hasSkill('liyutang');
},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.liyutang=card;
target.storage.liyutang_markcount=2;
target.addSkill('liyutang');
},
ai:{
order:2,
value:4,
result:{
target:function(player,target){
if(player==target&&target.isMinHp()) return 2;
if(target.isMinHp()) return 1.5;
return 1/Math.max(1,target.hp);
}
}
}
},
mizhilianou:{
fullskin:true,
type:'food',
enable:true,
filterTarget:function(card,player,target){
return !target.hasSkill('mizhilianou');
},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.mizhilianou=card;
target.storage.mizhilianou_markcount=4;
target.addSkill('mizhilianou');
},
ai:{
order:2,
value:4,
result:{
target:function(player,target){
if(target==player){
if(target.countCards('he',{suit:'heart'})){
if(target.isDamaged()) return 1.5;
}
else{
return 0.2;
}
}
else if(target.isDamaged()){
return 1;
}
return 0.5;
}
}
}
},
xiajiao:{
fullskin:true,
type:'food',
enable:true,
filterTarget:function(card,player,target){
return !target.hasSkill('xiajiao');
},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.xiajiao=card;
target.storage.xiajiao_markcount=3;
target.addSkill('xiajiao');
target.addTempSkill('xiajiao3');
},
ai:{
order:2,
value:5,
result:{
target:1
}
}
},
tanhuadong:{
fullskin:true,
type:'food',
enable:true,
filterTarget:function(card,player,target){
return !target.hasSkill('tanhuadong');
},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.tanhuadong=card;
target.storage.tanhuadong_markcount=3;
target.addSkill('tanhuadong');
},
ai:{
order:2,
value:5,
result:{
target:1
}
}
},
mapodoufu:{
fullskin:true,
type:'food',
enable:true,
filterTarget:function(card,player,target){
return !target.hasSkill('mapodoufu');
},
//range:{global:1},
content:function(){
if(target==targets[0]&&cards.length) target.$gain2(cards);
target.storage.mapodoufu=card;
target.storage.mapodoufu_markcount=2;
target.addSkill('mapodoufu');
},
ai:{
order:1,
value:5,
result:{
target:function(player,target){
return player==target?2:1;
}
}
}
},
qingtuan:{
fullskin:true,
type:'food',
enable:true,
filterTarget:function(card,player,target){
return !target.hasSkill('qingtuan');
},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.qingtuan=card;
target.storage.qingtuan_markcount=2;
target.addSkill('qingtuan');
},
ai:{
order:4,
value:4,
result:{
target:function(player,target){
if(target==player){
if(target.hasSha()) return 2;
}
else{
var nh=target.countCards('h');
if(nh>=3) return 1;
if(target.hasSha()) return 1;
if(nh&&Math.random()<0.5) return 1;
}
return player.needsToDiscard()?0.2:0;
}
}
}
},
yougeng:{
fullskin:true,
type:'food',
enable:true,
filterTarget:function(card,player,target){
return !target.hasSkill('yougeng');
},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.yougeng=card;
target.storage.yougeng_markcount=2;
target.addSkill('yougeng');
},
ai:{
order:2,
value:4,
result:{
target:function(player,target){
if(target.isHealthy()) return player.needsToDiscard()?0.1:0;
if(target.isMinHp()) return 1.5;
return 1/Math.max(1,target.hp);
}
}
}
},
molicha:{
fullskin:true,
type:'food',
enable:true,
filterTarget:function(card,player,target){
return !target.hasSkill('molicha');
},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.molicha=card;
target.storage.molicha_markcount=4;
target.addSkill('molicha');
},
ai:{
order:2,
value:4,
result:{
target:1
}
}
},
yuanbaorou:{
fullskin:true,
type:'food',
enable:true,
filterTarget:function(card,player,target){
return !target.hasSkill('yuanbaorou');
},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.yuanbaorou=card;
target.storage.yuanbaorou_markcount=4;
target.addSkill('yuanbaorou');
},
ai:{
order:2,
value:4,
result:{
target:function(player,target){
if(target==player){
if(target.hasSha()) return 2;
}
else{
var nh=target.countCards('h');
if(nh>=3) return 1;
if(target.hasSha()) return 1;
if(nh&&Math.random()<0.5) return 1;
}
return player.needsToDiscard()?0.2:0;
}
}
}
},
heilonglinpian:{
fullskin:true,
type:'trick',
enable:true,
toself:true,
filterTarget:function(card,player,target){
return target==player;
},
selectTarget:-1,
modTarget:true,
content:function(){
target.changeHujia();
target.addTempSkill('heilonglinpian',{player:'phaseBegin'});
},
ai:{
value:[6,1],
useful:1,
order:2,
result:{
target:1
}
}
},
mutoumianju:{
fullskin:true,
type:'equip',
subtype:'equip2',
skills:['mutoumianju_skill'],
ai:{
equipValue:4
}
},
yuheng:{fullskin:true},
gjyuheng:{
fullskin:true,
cardimage:'yuheng',
type:'equip',
subtype:'equip5',
nopower:true,
nomod:true,
unique:true,
skills:['gjyuheng_skill'],
ai:{
equipValue:6
}
},
gjyuheng_plus:{
fullskin:true,
type:'equip',
subtype:'equip5',
nopower:true,
unique:true,
nomod:true,
epic:true,
cardimage:'yuheng',
skills:['gjyuheng_plus_skill'],
ai:{
equipValue:7
}
},
gjyuheng_pro:{
fullskin:true,
type:'equip',
subtype:'equip5',
nopower:true,
unique:true,
nomod:true,
legend:true,
cardimage:'yuheng',
skills:['gjyuheng_pro_skill'],
ai:{
equipValue:8
}
},
shatang:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:true,
cardcolor:'red',
cardnature:'fire',
content:function(){
'step 0'
target.damage('fire');
'step 1'
target.changeHujia();
},
ai:{
value:[4,1],
useful:2,
order:2,
result:{
target:function(player,target){
if(target.hasSkillTag('nofire')) return 1.5;
if(target.hasSkillTag('maixie_hp')) return 0;
if(target.hp==1) return -1;
return -1/Math.sqrt(target.hp+1);
}
},
tag:{
damage:1,
fireDamage:1,
natureDamage:1
}
}
},
shujinsan:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
return target.countCards('he')>0;
},
content:function(){
'step 0'
target.chooseToDiscard('he',[1,target.countCards('he')],'弃置任意张牌并摸等量的牌').ai=function(card){
return 6-get.value(card);
}
'step 1'
if(result.bool){
target.draw(result.cards.length);
}
},
ai:{
order:1.5,
value:[4,1],
tag:{
norepeat:1
},
result:{
target:function(player,target){
if(target==player){
var cards=player.getCards('he');
var num=-1;
for(var i=0;i<cards.length;i++){
if(get.value(cards[i])<6) num++;
}
if(player.needsToDiscard()&&num<1){
num=1;
}
return Math.max(0,num);
}
else{
if(!player.needsToDiscard()&&target.countCards('he')<=3){
return 0;
}
return target.countCards('he')/2;
}
}
}
}
},
dinvxuanshuang:{
fullskin:true,
type:'basic',
savable:true,
selectTarget:-1,
content:function(){
'step 0'
target.recover();
'step 1'
if(target.isIn()){
target.chooseToDiscard([1,Infinity],'he','弃置任意张牌并摸等量的牌');
}
else{
event.finish();
}
'step 2'
if(result.bool){
target.draw(result.cards.length);
}
},
ai:{
basic:{
order:6,
useful:10,
value:[8,6.5,5,4],
},
result:{
target:2
},
tag:{
recover:1,
save:1,
}
}
},
dinvxuanshuang_old:{
fullskin:true,
type:'basic',
enable:true,
// range:{global:1},
filterTarget:function(card,player,target){
return !target.hujia;
},
content:function(){
target.storage.dinvxuanshuang_skill=game.createCard('dinvxuanshuang');
target.addSkill('dinvxuanshuang_skill');
if(cards&&cards.length){
card=cards[0];
}
if(target==targets[0]&&card.clone&&(card.clone.parentNode==player.parentNode||card.clone.parentNode==ui.arena)){
card.clone.moveDelete(target);
game.addVideo('gain2',target,get.cardsInfo([card]));
}
},
ai:{
basic:{
order:7,
useful:5,
value:[8,6.5,5,4],
},
result:{
target:function(player,target){
var num=1/Math.sqrt(1+target.hp)+0.1/Math.sqrt(target.countCards('h')+1);
if(player==target) num*=1.2;
return num;
}
}
}
},
ziyangdan:{
fullskin:true,
type:'basic',
enable:true,
filterTarget:true,
content:function(){
target.changeHujia(3);
if(target.hasSkill('ziyangdan')){
target.storage.ziyangdan+=3;
}
else{
target.addSkill('ziyangdan');
}
},
ai:{
order:1.6,
value:[7,1],
useful:3,
tag:{
norepeat:1
},
result:{
target:function(player,target){
if(target.hp>2){
if(player.needsToDiscard()) return 1/target.hp;
return 0;
}
if(target.hp>0){
return 2/target.hp;
}
return 0;
}
}
}
},
yunvyuanshen:{
fullskin:true,
type:'basic',
enable:true,
logv:false,
filterTarget:function(card,player,target){
return !target.hasSkill('yunvyuanshen_skill');
},
content:function(){
target.storage.yunvyuanshen_skill=game.createCard('yunvyuanshen');
target.addSkill('yunvyuanshen_skill');
if(cards&&cards.length){
card=cards[0];
}
if(target==targets[0]&&card.clone&&(card.clone.parentNode==player.parentNode||card.clone.parentNode==ui.arena)){
card.clone.moveDelete(target);
game.addVideo('gain2',target,get.cardsInfo([card]));
}
},
ai:{
basic:{
value:9,
useful:4,
value:7
},
order:2,
result:{
target:function(player,target){
return 1/Math.sqrt(1+target.hp);
},
},
}
},
bingpotong:{
fullskin:true,
type:'jiguan',
enable:true,
wuxieable:true,
filterTarget:function(card,player,target){
return target.countCards('h')>0;
},
selectTarget:[1,3],
content:function(){
"step 0"
if(target.countCards('h')==0||player.countCards('h')==0){
event.finish();
return;
}
player.chooseCard('请展示一张手牌',true).set('ai',function(){
var num=0;
var rand=_status.event.rand;
if(get.color(card)=='red'){
if(rand) num-=6;
}
else{
if(!rand) num-=6;
}
var value=get.value(card);
if(value>=8) return -100;
return num-value;
}).set('rand', Math.random()<0.5).prompt2='若与'+get.translation(target)+'展示的牌相同,你弃置展示的牌,'+get.translation(target)+'失去一点体力';
"step 1"
event.card1=result.cards[0];
target.chooseCard('请展示一张手牌',true).set('ai',function(card){
var num=0;
var rand=_status.event.rand;
if(get.color(card)=='red'){
if(rand) num-=6;
}
else{
if(!rand) num-=6;
}
var value=get.value(card);
if(value>=8) return -100;
return num-value;
}).set('rand', Math.random()<0.5).prompt2='若与'+get.translation(player)+'展示的牌相同,'+get.translation(player)+'弃置展示的牌,你失去一点体力';
"step 2"
event.card2=result.cards[0];
ui.arena.classList.add('thrownhighlight');
game.addVideo('thrownhighlight1');
player.$compare(event.card1,target,event.card2);
game.delay(4);
"step 3"
game.log(player,'展示了',event.card1);
game.log(target,'展示了',event.card2);
if(get.color(event.card2)==get.color(event.card1)){
player.discard(event.card1).animate=false;
target.$gain2(event.card2);
var clone=event.card1.clone;
if(clone){
clone.style.transition='all 0.5s';
clone.style.transform='scale(1.2)';
clone.delete();
game.addVideo('deletenode',player,get.cardsInfo([clone]));
}
target.loseHp();
event.finish();
event.parent.cancelled=true;
}
else{
player.$gain2(event.card1);
target.$gain2(event.card2);
game.delay();
}
ui.arena.classList.remove('thrownhighlight');
game.addVideo('thrownhighlight2');
"step 4"
// if(cards&&cards.length){
// player.gain(cards,'gain2');
// target.addTempSkill('bingpotong');
// }
},
ai:{
basic:{
order:2,
value:[5,1],
useful:1,
},
result:{
player:function(player,target){
if(player.countCards('h')<=Math.min(5,Math.max(2,player.hp))&&_status.event.name=='chooseToUse'){
if(typeof _status.event.filterCard=='function'&&
_status.event.filterCard({name:'bingpotong'})){
return -10;
}
if(_status.event.skill){
var viewAs=get.info(_status.event.skill).viewAs;
if(viewAs=='bingpotong') return -10;
if(viewAs&&viewAs.name=='bingpotong') return -10;
}
}
return 0;
},
target:function(player,target){
if(player.countCards('h')<=1) return 0;
return -1.5;
}
},
tag:{
loseHp:1
}
}
},
feibiao:{
type:'jiguan',
enable:true,
fullskin:true,
wuxieable:true,
outrange:{globalFrom:2},
filterTarget:function(card,player,target){
return target!=player;
},
content:function(){
"step 0"
if(!target.countCards('h',{color:'black'})){
target.loseHp();
event.finish();
}
else{
target.chooseToDiscard({color:'black'},'弃置一张黑色手牌或受流失一点体力').ai=function(card){
return 8-get.value(card);
};
}
"step 1"
if(!result.bool){
target.loseHp();
}
},
ai:{
basic:{
order:9,
value:3,
useful:1,
},
result:{
target:-2
},
tag:{
discard:1,
loseHp:1
}
}
},
longxugou:{
type:'jiguan',
enable:true,
fullskin:true,
wuxieable:true,
filterTarget:function(card,player,target){
return target!=player&&target.countGainableCards(player,'e');
},
content:function(){
'step 0'
var es=target.getGainableCards(player,'e')
if(es.length){
player.choosePlayerCard('e',target,true).set('es',es).set('filterButton',function(button){
return _status.event.es.contains(button.link);
});
}
else{
event.finish();
}
'step 1'
if(result.bool){
target.$give(result.links[0],player);
target.lose(result.links[0],ui.special);
event.card=result.links[0];
game.delay();
}
else{
event.finish();
}
'step 2'
if(event.card&&get.position(event.card)=='s'){
player.equip(event.card);
}
},
ai:{
basic:{
order:9,
value:6,
useful:4,
},
result:{
target:-1
},
tag:{
loseCard:1,
gain:1,
}
}
},
qiankunbiao:{
type:'jiguan',
enable:true,
fullskin:true,
wuxieable:true,
filterTarget:function(card,player,target){
return target!=player&&target.countCards('he')>0;
},
changeTarget:function(player,targets){
game.filterPlayer(function(current){
return get.distance(targets[0],current,'pure')==1&&current.countCards('he');
},targets);
},
content:function(){
var he=target.getCards('he');
if(he.length){
target.discard(he.randomGet()).delay=false;
}
},
contentAfter:function(){
game.delay(0.5);
},
ai:{
order:7,
tag:{
loseCard:1,
discard:1,
},
wuxie:function(){
return 0;
},
result:{
target:-1,
}
}
},
shenhuofeiya:{
type:'jiguan',
enable:true,
fullskin:true,
wuxieable:true,
filterTarget:function(card,player,target){
return target!=player;
},
changeTarget:function(player,targets){
game.filterPlayer(function(current){
return get.distance(targets[0],current,'pure')==1;
},targets);
},
cardcolor:'red',
cardnature:'fire',
content:function(){
"step 0"
var next=target.chooseToRespond({name:'shan'});
next.ai=function(card){
if(get.damageEffect(target,player,target,'fire')>=0) return 0;
if(player.hasSkillTag('notricksource')) return 0;
if(target.hasSkillTag('notrick')) return 0;
if(target.hasSkillTag('noShan')){
return -1;
}
return 11-get.value(card);
};
next.autochoose=lib.filter.autoRespondShan;
"step 1"
if(result.bool==false){
target.damage('fire');
}
},
ai:{
wuxie:function(target,card,player,viewer){
if(get.attitude(viewer,target)>0&&target.countCards('h','shan')){
if(!target.countCards('h')||target.hp==1||Math.random()<0.7) return 0;
}
if(get.attitude(viewer,target)<=0){
return 0;
}
},
order:7,
tag:{
respond:1,
respondShan:1,
damage:1,
natureDamage:1,
fireDamage:1,
multitarget:1,
multineg:1,
},
result:{
target:function(player,target){
if(target.hasSkillTag('nofire')) return 0;
if(player.hasUnknown(2)) return 0;
var nh=target.countCards('h');
if(lib.config.mode=='identity'){
if(target.isZhu&&nh<=2&&target.hp<=1) return -100;
}
if(nh==0) return -2;
if(nh==1) return -1.7
return -1.5;
},
}
}
},
// wenhuangsan:{
// type:'jiguan',
// enable:true,
// fullskin:true,
// },
// tuhunsha:{
// type:'jiguan',
// enable:true,
// fullskin:true,
// },
// shenhuofeiya:{
// type:'jiguan',
// enable:true,
// fullskin:true,
// },
mianlijinzhen:{
type:'jiguan',
enable:true,
fullskin:true,
filterTarget:function(card,player,target){
return target.hp>=player.hp;
},
content:function(){
'step 0'
target.draw();
'step 1'
target.loseHp();
},
ai:{
order:2,
value:[5,1],
useful:[4,1],
result:{
target:-1.5
},
tag:{
// damage:1
}
}
},
// longxugou:{
// type:'jiguan',
// enable:true,
// fullskin:true,
// },
liutouge:{
type:'jiguan',
enable:true,
fullskin:true,
filterTarget:true,
wuxieable:true,
content:function(){
if(player.getEnemies().contains(target)){
target.getDebuff();
}
else{
target.getBuff();
}
},
ai:{
order:4,
value:5,
result:{
player:function(player,target){
if(get.attitude(player,target)==0) return 0;
return 1;
}
}
}
},
liufengsan:{
type:'trick',
enable:true,
fullskin:true,
filterTarget:true,
content:function(){
var list=[];
for(var i=0;i<2;i++){
list.push(game.createCard('shan'));
}
target.gain(list,'gain2');
},
ai:{
order:4.5,
value:[5,1],
tag:{
gain:1,
norepeat:1
},
result:{
target:function(player,target){
if(target==player){
if(!target.hasShan()) return 2;
var num=target.needsToDiscard(2);
if(num==0) return 1.5;
if(num==1) return 1;
return 0.5;
}
else{
switch(target.countCards('h')){
case 0:return 2;
case 1:return 1.5;
case 2:return 1;
default:return 0.5;
}
}
}
}
}
},
shihuifen:{
type:'trick',
fullskin:true,
filterTarget:true,
global:'g_shihuifen',
content:function(){
'step 0'
var next=_status.currentPhase.chooseToRespond({name:'shan'});
next.set('prompt2','否则本回合无法对其他角色使用卡牌');
'step 1'
if(!result.bool){
_status.currentPhase.addTempSkill('shihuifen','phaseUseAfter');
}
},
ai:{
order:1,
value:[5,1],
useful:[5,1],
tag:{
respond:1,
respondShan:1,
},
result:{
target:function(player,target){
if(target.countCards('h')>=3||target.needsToDiscard()) return -1.5;
return 0;
}
}
}
},
},
skill:{
ziyangdan:{
trigger:{player:'phaseBegin'},
silent:true,
init:function(player){
player.storage.ziyangdan=3;
},
onremove:true,
content:function(){
if(player.hujia>0){
player.changeHujia(-1);
}
player.storage.ziyangdan--;
if(player.hujia==0||player.storage.ziyangdan==0){
player.removeSkill('ziyangdan');
}
},
ai:{
threaten:0.8
}
},
luyugeng:{
mark:'card',
enable:'phaseUse',
usable:1,
nopop:true,
filterCard:{type:'basic'},
filter:function(event,player){
return player.countCards('h',{type:'basic'});
},
intro:{
content:function(storage,player){
return '出牌阶段限一次,你可以弃置一张基本牌并发现一张牌,持续两回合(剩余'+player.storage.luyugeng_markcount+'回合)'
}
},
content:function(){
player.discoverCard();
},
group:'luyugeng_count',
subSkill:{
count:{
trigger:{player:'phaseAfter'},
forced:true,
popup:false,
content:function(){
player.storage.luyugeng_markcount--;
if(player.storage.luyugeng_markcount==0){
delete player.storage.luyugeng;
delete player.storage.luyugeng_markcount;
player.removeSkill('luyugeng');
}
else{
player.updateMarks();
}
},
}
}
},
xiajiao:{
mark:'card',
trigger:{player:['phaseUseBefore','phaseEnd']},
forced:true,
popup:false,
nopop:true,
filter:function(event,player){
return !player.hasSkill('xiajiao3');
},
intro:{
content:function(storage,player){
return '你在摸牌阶段额外摸一张牌,然后弃置一张牌(剩余'+player.storage.xiajiao_markcount+'回合)'
}
},
content:function(){
player.storage.xiajiao_markcount--;
if(player.storage.xiajiao_markcount==0){
delete player.storage.xiajiao;
delete player.storage.xiajiao_markcount;
player.removeSkill('xiajiao');
}
else{
player.updateMarks();
}
player.addTempSkill('xiajiao3');
},
group:'xiajiao_draw',
subSkill:{
draw:{
trigger:{player:'phaseDrawBegin'},
forced:true,
content:function(){
trigger.num++;
player.addTempSkill('xiajiao2');
}
}
}
},
xiajiao2:{
trigger:{player:'phaseDrawAfter'},
silent:true,
content:function(){
player.chooseToDiscard('he',true);
}
},
xiajiao3:{},
mizhilianou:{
mark:'card',
trigger:{player:'phaseAfter'},
forced:true,
popup:false,
nopop:true,
intro:{
content:function(storage,player){
return '你可以将一张红桃牌当作桃使用(剩余'+player.storage.mizhilianou_markcount+'回合)'
}
},
content:function(){
player.storage.mizhilianou_markcount--;
if(player.storage.mizhilianou_markcount==0){
delete player.storage.mizhilianou;
delete player.storage.mizhilianou_markcount;
player.removeSkill('mizhilianou');
}
else{
player.updateMarks();
}
},
group:'mizhilianou_use',
subSkill:{
use:{
enable:'chooseToUse',
filterCard:{suit:'heart'},
position:'he',
viewAs:{name:'tao'},
viewAsFilter:function(player){
return player.countCards('he',{suit:'heart'})>0;
},
prompt:'将一张红桃牌当桃使用',
check:function(card){return 10-get.value(card)},
ai:{
skillTagFilter:function(player){
return player.countCards('he',{suit:'heart'})>0;
},
save:true,
respondTao:true,
}
}
}
},
chunbing:{
mark:'card',
trigger:{player:'phaseAfter'},
forced:true,
popup:false,
nopop:true,
intro:{
content:function(storage,player){
return '你的手牌上限+1剩余'+player.storage.chunbing_markcount+'回合'
}
},
mod:{
maxHandcard:function(player,num){
return num+1;
}
},
content:function(){
player.storage.chunbing_markcount--;
if(player.storage.chunbing_markcount==0){
delete player.storage.chunbing;
delete player.storage.chunbing_markcount;
player.removeSkill('chunbing');
}
else{
player.updateMarks();
}
},
},
gudonggeng:{
mark:'card',
trigger:{player:'phaseBegin'},
forced:true,
popup:false,
nopop:true,
intro:{
content:function(storage,player){
return '当你下一次受到杀造成的伤害时令伤害-1剩余'+player.storage.gudonggeng_markcount+'回合'
}
},
content:function(){
player.storage.gudonggeng_markcount--;
if(player.storage.gudonggeng_markcount==0){
delete player.storage.gudonggeng;
delete player.storage.gudonggeng_markcount;
player.removeSkill('gudonggeng');
}
else{
player.updateMarks();
}
},
group:'gudonggeng_damage',
subSkill:{
damage:{
trigger:{player:'damageBegin'},
filter:function(event,player){
return event.card&&event.card.name=='sha'&&event.num>0;
},
forced:true,
content:function(){
trigger.num--;
delete player.storage.gudonggeng;
delete player.storage.gudonggeng_markcount;
player.removeSkill('gudonggeng');
}
}
},
ai:{
effect:{
target:function(card,player,target){
if(card.name=='sha'&&get.attitude(player,target)<0) return 0.5;
}
}
}
},
qingtuan:{
mark:'card',
trigger:{player:'phaseAfter'},
forced:true,
popup:false,
nopop:true,
intro:{
content:function(storage,player){
return '你在回合内使用首张杀时摸一张牌剩余'+player.storage.qingtuan_markcount+'回合'
}
},
content:function(){
player.storage.qingtuan_markcount--;
if(player.storage.qingtuan_markcount==0){
delete player.storage.qingtuan;
delete player.storage.qingtuan_markcount;
player.removeSkill('qingtuan');
}
else{
player.updateMarks();
}
},
group:'qingtuan_draw',
subSkill:{
draw:{
trigger:{player:'useCard'},
filter:function(event,player){
return event.card.name=='sha'&&_status.currentPhase==player;
},
usable:1,
forced:true,
content:function(){
player.draw();
}
}
}
},
liyutang:{
mark:'card',
trigger:{player:'phaseEnd'},
forced:true,
popup:false,
nopop:true,
intro:{
content:function(storage,player){
return '结束阶段若你的体力值为全场最少或之一你获得一点护甲剩余'+player.storage.liyutang_markcount+'回合'
}
},
content:function(){
if(player.isMinHp()){
player.logSkill('liyutang');
player.changeHujia();
}
player.storage.liyutang_markcount--;
if(player.storage.liyutang_markcount==0){
delete player.storage.liyutang;
delete player.storage.liyutang_markcount;
player.removeSkill('liyutang');
}
else{
player.updateMarks();
}
},
},
yougeng:{
mark:'card',
trigger:{player:'phaseBegin'},
forced:true,
popup:false,
nopop:true,
intro:{
content:function(storage,player){
return '准备阶段若你的体力值为全场最少或之一你回复一点体力剩余'+player.storage.yougeng_markcount+'回合'
}
},
content:function(){
if(player.isDamaged()&&player.isMinHp()){
player.logSkill('yougeng');
player.recover();
}
player.storage.yougeng_markcount--;
if(player.storage.yougeng_markcount==0){
delete player.storage.yougeng;
delete player.storage.yougeng_markcount;
player.removeSkill('yougeng');
}
else{
player.updateMarks();
}
},
},
molicha:{
mark:'card',
trigger:{player:'phaseAfter'},
forced:true,
popup:false,
nopop:true,
intro:{
content:function(storage,player){
return '你不能成为其他角色的黑色牌的目标剩余'+player.storage.molicha_markcount+'回合'
}
},
mod:{
targetEnabled:function(card,player,target){
if(player!=target&&get.color(card)=='black'){
return false;
}
}
},
content:function(){
player.storage.molicha_markcount--;
if(player.storage.molicha_markcount==0){
delete player.storage.molicha;
delete player.storage.molicha_markcount;
player.removeSkill('molicha');
player.logSkill('molicha');
}
else{
player.updateMarks();
}
}
},
yuanbaorou:{
mark:'card',
trigger:{player:'phaseAfter'},
forced:true,
popup:false,
nopop:true,
intro:{
content:function(storage,player){
return '你在出牌阶段可以额外使用一张杀剩余'+player.storage.yuanbaorou_markcount+'回合'
}
},
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num+1;
}
},
content:function(){
player.storage.yuanbaorou_markcount--;
if(player.storage.yuanbaorou_markcount==0){
delete player.storage.yuanbaorou;
delete player.storage.yuanbaorou_markcount;
player.removeSkill('yuanbaorou');
}
else{
player.updateMarks();
}
},
},
tanhuadong:{
mark:'card',
trigger:{player:'phaseEnd'},
forced:true,
popup:false,
nopop:true,
intro:{
content:function(storage,player){
return '出牌阶段结束时你摸一张牌剩余'+player.storage.tanhuadong_markcount+'回合'
}
},
content:function(){
player.storage.tanhuadong_markcount--;
if(player.storage.tanhuadong_markcount==0){
delete player.storage.tanhuadong;
delete player.storage.tanhuadong_markcount;
player.removeSkill('tanhuadong');
}
else{
player.updateMarks();
}
},
group:'tanhuadong_draw',
subSkill:{
draw:{
trigger:{player:'phaseUseEnd'},
forced:true,
content:function(){
player.draw();
}
}
}
},
mapodoufu:{
mark:'card',
trigger:{player:'phaseJieshuBegin'},
forced:true,
popup:false,
nopop:true,
forceLoad:true,
intro:{
content:function(storage,player){
return '结束阶段你随机弃置一名随机敌人的一张随机牌剩余'+player.storage.mapodoufu_markcount+'回合'
}
},
content:function(){
var list=player.getEnemies();
for(var i=0;i<list.length;i++){
if(!list[i].countCards('he')){
list.splice(i--,1);
}
}
var target=list.randomGet();
if(target){
player.logSkill('mapodoufu',target);
target.discard(target.getCards('he').randomGet());
target.addExpose(0.2);
}
player.storage.mapodoufu_markcount--;
if(player.storage.mapodoufu_markcount==0){
delete player.storage.mapodoufu;
delete player.storage.mapodoufu_markcount;
player.removeSkill('mapodoufu');
}
else{
player.updateMarks();
}
}
},
yunvyuanshen_skill:{
mark:'card',
intro:{
content:'下一进入濒死状态时回复一点体力'
},
trigger:{player:'dying'},
forced:true,
priority:6.1,
onremove:true,
filter:function(event,player){
return player.hp<=0;
},
content:function(){
player.recover();
player.removeSkill('yunvyuanshen_skill');
}
},
dinvxuanshuang_skill:{
mark:'card',
intro:{
content:'下个结束阶段获得一点护甲若你体力值为全场最少之一你摸一张牌'
},
trigger:{player:'phaseEnd'},
forced:true,
onremove:true,
content:function(){
player.changeHujia();
if(player.isMinHp()){
player.draw();
}
player.removeSkill('dinvxuanshuang_skill');
}
},
bingpotong:{},
heilonglinpian:{
mark:true,
marktext:'',
intro:{
content:'防御距离+1'
},
mod:{
globalTo:function(from,to,distance){
return distance+1
}
}
},
mutoumianju_skill:{
enable:'chooseToUse',
filterCard:true,
usable:1,
viewAs:{name:'sha'},
viewAsFilter:function(player){
if(!player.countCards('h')) return false;
},
prompt:'将一张手牌当杀使用',
check:function(card){return 5-get.value(card)},
ai:{
respondSha:true,
order:function(){
return get.order({name:'sha'})+0.1;
},
skillTagFilter:function(player,tag,arg){
if(arg!='use') return false;
if(!player.countCards('h')) return false;
},
},
},
gjyuheng_skill:{
enable:'phaseUse',
usable:1,
filterCard:{suit:'spade'},
check:function(card){
return 8-get.value(card);
},
filter:function(event,player){
if(!player.countCards('h',{suit:'spade'})) return false;
var enemies=player.getEnemies();
for(var i=0;i<enemies.length;i++){
if(enemies[i].countCards('h',{suit:'spade'})) return true;
}
return false;
},
content:function(){
var enemies=player.getEnemies();
var list=[];
for(var i=0;i<enemies.length;i++){
var hs=enemies[i].getCards('h',{suit:'spade'});
if(hs.length){
list.push([enemies[i],hs]);
}
}
if(list.length){
var current=list.randomGet();
player.line(current[0]);
current[0].give(current[1].randomGet(),player,true);
}
'step 1'
var card=player.getEquip('gjyuheng');
if(card){
if(typeof card.storage.gjyuheng!='number'){
card.storage.gjyuheng=1;
}
else{
card.storage.gjyuheng++;
}
if(card.storage.gjyuheng>=3){
card.init([card.suit,card.number,'gjyuheng_plus',card.nature]);
player.addTempSkill('gjyuheng_plus_temp');
}
}
},
ai:{
order:9,
result:{
player:1
}
}
},
gjyuheng_plus_temp:{},
gjyuheng_plus_skill:{
enable:'phaseUse',
usable:1,
filterCard:{color:'black'},
check:function(card){
return 8-get.value(card);
},
filter:function(event,player){
// if(player.hasSkill('gjyuheng_plus_temp')) return false;
if(!player.countCards('h',{color:'black'})) return false;
var enemies=player.getEnemies();
for(var i=0;i<enemies.length;i++){
if(enemies[i].countCards('h',{suit:'spade'})) return true;
}
return false;
},
content:function(){
var enemies=player.getEnemies();
var list=[];
for(var i=0;i<enemies.length;i++){
var hs=enemies[i].getCards('h',{suit:'spade'});
if(hs.length){
list.push([enemies[i],hs]);
}
}
if(list.length){
var current=list.randomGet();
player.line(current[0]);
current[0].give(current[1].randomGet(),player,true);
}
'step 1'
var card=player.getEquip('gjyuheng_plus');
if(card){
if(typeof card.storage.gjyuheng!='number'){
card.storage.gjyuheng=1;
}
else{
card.storage.gjyuheng++;
}
if(card.storage.gjyuheng>=7){
card.init([card.suit,card.number,'gjyuheng_pro',card.nature]);
}
}
},
ai:{
order:9,
result:{
player:1
}
}
},
gjyuheng_pro_skill:{
enable:'phaseUse',
filterCard:{color:'black'},
check:function(card){
return 8-get.value(card);
},
filter:function(event,player){
if(!player.countCards('h',{color:'black'})) return false;
var enemies=player.getEnemies();
for(var i=0;i<enemies.length;i++){
if(enemies[i].countCards('h',{suit:'spade'})) return true;
}
return false;
},
content:function(){
var enemies=player.getEnemies();
var list=[];
for(var i=0;i<enemies.length;i++){
var hs=enemies[i].getCards('h',{suit:'spade'});
if(hs.length){
list.push([enemies[i],hs]);
}
}
if(list.length){
var current=list.randomGet();
player.line(current[0]);
current[0].give(current[1].randomGet(),player,true);
}
'step 1'
var card=player.getEquip('gjyuheng');
if(card){
if(typeof card.storage.gjyuheng!='number'){
card.storage.gjyuheng=1;
}
else{
card.storage.gjyuheng++;
}
if(card.storage.gjyuheng>=3){
card.init([card.suit,card.number,'gjyuheng_plus',card.nature]);
player.addTempSkill('gjyuheng_plus_temp');
}
}
},
ai:{
order:9,
result:{
player:1
}
}
},
shihuifen:{
mark:true,
intro:{
content:'使用卡牌无法指定其他角色为目标'
},
mod:{
playerEnabled:function(card,player,target){
if(player!=target) return false;
}
}
},
g_shihuifen:{
trigger:{global:'phaseUseBegin'},
direct:true,
filter:function(event,player){
if(event.player.hasSkill('shihuifen')) return false;
if(event.player==player) return false;
if(!lib.filter.targetEnabled({name:'shihuifen'},player,event.player)) return false;
return player.hasCard('shihuifen')||player.hasSkillTag('shihuifen');
},
content:function(){
player.chooseToUse(get.prompt('shihuifen',trigger.player).replace(/发动/,'使用'),function(card,player){
if(card.name!='shihuifen') return false;
return lib.filter.cardEnabled(card,player,'forceEnable');
},trigger.player,-1).targetRequired=true;
}
},
g_jinlianzhu:{
trigger:{global:'damageBefore'},
direct:true,
filter:function(event,player){
if(!lib.filter.targetEnabled({name:'jinlianzhu'},player,event.player)) return false;
return player.hasCard('jinlianzhu');
},
content:function(){
player.chooseToUse(get.prompt('jinlianzhu',trigger.player).replace(/发动/,'使用'),function(card,player){
if(card.name!='jinlianzhu') return false;
return lib.filter.cardEnabled(card,player,'forceEnable');
},trigger.player,-1).targetRequired=true;
}
},
},
cardType:{
food:0.3
},
translate:{
jinlianzhu:'金莲珠',
jinlianzhu_info:'对一名即将受到伤害的角色使用防止此伤害并令伤害来源摸一张牌',
shihuifen:'石灰粉',
shihuifen_info:'在一名其他角色的出牌阶段开始时对其使用目标需打出一张闪否则此阶段使用卡牌无法指定其他角色为目标',
liufengsan:'流风散',
liufengsan_info:'出牌阶段对一名角色使用目标获得两张闪',
liutouge:'六骰格',
liutouge_info:'出牌阶段对一名角色使用若目标是敌人对目标施加一个随机的负面效果否则对目标施加一个随机的正面效果',
longxugou:'龙须钩',
longxugou_info:'出牌阶段对一名装备区内有牌的其他角色使用获得其装备区内的一张牌并装备之',
mianlijinzhen:'棉里针',
mianlijinzhen_info:'出牌阶段对一名体力值不小于你的角色使用目标摸一张牌然后失去一点体力',
shenhuofeiya:'神火飞鸦',
shenhuofeiya_info:'出牌阶段对一名其他角色和其相邻角色使用目标需打出一张闪否则受到一点火属性伤害',
// tuhunsha:'土魂砂',
// tuhunsha_info:'土魂砂',
// wenhuangsan:'瘟癀伞',
// wenhuangsan_info:'瘟癀伞',
qiankunbiao:'乾坤镖',
qiankunbiao_info:'随机弃置一名其他角色和其相邻角色的一张牌',
bingpotong:'天女散花',
bingpotong_ab:'散花',
bingpotong_info:'出牌阶段对至多3名角色使用你与每个目标依次同时展示一张手牌若颜色相同你弃置展示的手牌目标失去一点体力并终止结算',
feibiao:'飞镖',
feibiao_info:'出牌阶段对一名距离1以外的角色使用令其弃置一张黑色手牌或流失一点体力',
dinvxuanshuang:'帝女玄霜',
dinvxuanshuang_skill:'帝女玄霜',
dinvxuanshuang_info:'对一名濒死状态的角色使用目标回复一点体力然后可以弃置任意张牌并摸等量的牌',
yunvyuanshen:'玉女元参',
yunvyuanshen_skill:'玉女元参',
yunvyuanshen_info:'出牌阶段对一名角色使用目标在下一次进入濒死状态时回复一点体力',
ziyangdan:'紫阳丹',
ziyangdan_info:'出牌阶段对一名角色使用目标获得3点护甲此后每个准备阶段失去1点护甲直到首次失去所有护甲或累计以此法失去3点护甲',
gjyuheng:'玉衡',
gjyuheng_plus:'玉衡',
gjyuheng_pro:'玉衡',
gjyuheng_skill:'玉衡',
gjyuheng_plus_skill:'玉衡',
gjyuheng_pro_skill:'玉衡',
gjyuheng_info:'出牌阶段限一次若敌方角色有黑桃手牌你可以弃置一张黑桃手牌然后获得一名随机敌方角色的一张随机黑桃手牌此牌在本局游戏中第三次和第七次发动效果后分别自动获得一次强化',
gjyuheng_plus_info:'由普通玉衡强化得到将玉衡技能描述中的弃置一张黑桃手牌改为弃置一张黑色手牌',
gjyuheng_pro_info:'由普通玉衡二次强化得到将玉横技能描述中的弃置一张黑桃手牌改为弃置一张黑色手牌并去掉使用次数限制',
gjyuheng_skill_info:'出牌阶段限一次若敌方角色有黑桃手牌你可以弃置一张黑桃手牌然后获得一名随机敌方角色的一张随机黑桃手牌',
gjyuheng_plus_skill_info:'出牌阶段限一次若敌方角色有黑桃手牌你可以弃置一张黑色手牌然后获得一名随机敌方角色的一张随机黑桃手牌',
gjyuheng_pro_skill_info:'出牌阶段限若敌方角色有黑桃手牌你可以弃置一张黑色手牌然后获得一名随机敌方角色的一张随机黑桃手牌',
shujinsan:'舒筋散',
shujinsan_info:'出牌阶段对任意角色使用目标可弃置任意张牌并摸等量的牌',
mutoumianju:'木头面具',
mutoumianju_info:'出牌阶段限一次你可以将一张手牌当作杀使用',
mutoumianju_skill:'木杀',
mutoumianju_skill_info:'出牌阶段限一次你可以将一张手牌当作杀使用',
heilonglinpian:'黑龙鳞片',
heilonglinpian_info:'出牌阶段对自己使用获得一点护甲直到下一回合开始你的防御距离+1',
shatang:'沙棠',
shatang_info:'出牌阶段对一名角色使用对目标造成一点火焰伤害然后目标获得一点护甲',
food:'食物',
chunbing:'春饼',
chunbing_info:'你的手牌上限+1持续五回合',
gudonggeng:'骨董羹',
gudonggeng_info:'当你下一次受到杀造成的伤害时令伤害-1持续三回合',
yougeng:'酉羹',
yougeng_info:'准备阶段若你的体力值为全场最少或之一你回复一点体力持续两回合',
liyutang:'鲤鱼汤',
liyutang_info:'结束阶段若你的体力值为全场最少或之一你获得一点护甲持续两回合',
mizhilianou:'蜜汁藕',
mizhilianou_info:'你可以将一张红桃牌当作桃使用持续四回合',
xiajiao:'虾饺',
xiajiao_info:'你在摸牌阶段额外摸一张牌然后弃置一张牌持续三回合',
tanhuadong:'昙花冻',
tanhuadong_info:'出牌阶段结束时你摸一张牌持续三回合',
qingtuan:'青团',
qingtuan_info:'你在回合内使用首张杀时摸一张牌持续两回合',
luyugeng:'鲈鱼羹',
luyugeng_info:'出牌阶段限一次你可以弃置一张基本牌并发现一张牌持续三回合',
yuanbaorou:'元宝肉',
yuanbaorou_info:'你在出牌阶段可以额外使用一张杀持续四回合',
molicha:'茉莉茶',
molicha_info:'你不能成为其他角色的黑色牌的目标持续四回合',
mapodoufu:'麻婆豆腐',
mapodoufu_info:'结束阶段你弃置一名随机敌人的一张随机牌持续两回合',
},
list:[
['spade',2,'tanhuadong'],
['club',1,'molicha'],
['club',3,'chunbing'],
['heart',12,'yougeng'],
['heart',8,'gudonggeng'],
['heart',1,'liyutang'],
['diamond',4,'mizhilianou'],
['diamond',6,'xiajiao'],
['spade',3,'qingtuan'],
['club',11,'luyugeng'],
['heart',4,'mapodoufu'],
['spade',8,'yuanbaorou'],
['spade',7,'gjyuheng'],
['club',4,'mutoumianju'],
['spade',2,'heilonglinpian'],
['spade',1,'mianlijinzhen'],
['heart',13,'yunvyuanshen'],
['club',8,'feibiao','poison'],
['diamond',9,'feibiao','poison'],
['spade',3,'bingpotong','poison'],
['club',12,'bingpotong','poison'],
['club',5,'shihuifen'],
['club',1,'shihuifen'],
['spade',13,'shihuifen'],
['diamond',6,'shujinsan'],
['spade',2,'shujinsan'],
['diamond',6,'ziyangdan'],
['heart',1,'ziyangdan'],
// ['diamond',7,'dinvxuanshuang'],
['heart',9,'dinvxuanshuang'],
['spade',9,'qiankunbiao'],
['club',13,'qiankunbiao'],
['diamond',9,'shenhuofeiya'],
['spade',7,'longxugou'],
['heart',9,'jinlianzhu'],
['spade',7,'jinlianzhu'],
['heart',6,'liutouge'],
['club',6,'liutouge'],
['club',6,'liufengsan'],
['club',3,'liufengsan'],
['heart',13,'shatang','fire']
]
};
});