noname/card/extra.js

584 lines
14 KiB
JavaScript
Executable File
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.

card.extra={
card:{
jiu:{
audio:true,
fullskin:true,
type:"basic",
enable:true,
savable:function(card,player,dying){
return dying==player;
},
usable:1,
selectTarget:-1,
filterTarget:function(card,player,target){
return target==player;
},
content:function(){
if(target==_status.dying){
target.recover();
if(_status.currentPhase==target){
target.getStat().card.jiu--;
}
}
else{
target.addSkill('jiu');
if(!player.node.jiu&&lib.config.jiu_effect){
player.node.jiu=ui.create.div('.playerjiu',player.node.avatar);
player.node.jiu2=ui.create.div('.playerjiu',player.node.avatar2);
}
if(card.clone&&card.clone.parentNode==player.parentNode){
card.clone.moveDelete(target);
game.addVideo('gain2',target,get.cardsInfo([card]));
}
}
},
ai:{
basic:{
useful:function(card,i){
if(_status.event.player.hp>1){
if(i==0) return 5;
return 1;
}
if(i==0) return 7.3;
return 3;
},
value:function(card,player){
if(player.hp>1){
if(i==0) return 5;
return 1;
}
if(i==0) return 7.3;
return 3;
},
},
order:function(){
return lib.card.sha.ai.order+0.2;
},
result:{
target:function(player,target){
if(target&&target==_status.dying) return 2;
if(lib.config.mode=='stone'&&!player.isMin()){
if(player.getActCount()+1>=player.actcount) return false;
}
var shas=player.get('h','sha');
if(shas.length>1){
if(player.num('e','zhuge')) return 0;
if(player.skills.contains('paoxiao')) return 0;
if(player.skills.contains('fengnu')) return 0;
if(!player.getStat().card.sha){
if(player.skills.contains('tanlnin3')) return 0;
if(player.skills.contains('zhaxiang2')) return 0;
}
}
var card;
if(shas.length){
for(var i=0;i<shas.length;i++){
if(lib.filter.filterCard(shas[i],target)){
card=shas[i];break;
}
}
}
if(card){
for(var i=0;i<game.players.length;i++){
if(ai.get.attitude(target,game.players[i])<0&&
target.canUse(card,game.players[i],true,true)&&
!game.players[i].num('e','baiyin')){
if(ai.get.effect(game.players[i],card,target)>0) return 1;
}
}
}
return 0;
},
},
tag:{
save:1
}
}
},
huogong:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
if(player!=game.me&&player.num('h')<2) return false;
return target.num('h')>0;
},
content:function(){
"step 0"
if(target.get('h').length==0){
event.finish();
return;
}
var rand=Math.random()<0.5;
target.chooseCard(true).ai=function(card){
if(rand) return Math.random();
return ai.get.value(card);
};
"step 1"
event.dialog=ui.create.dialog(get.translation(target.name)+'展示的手牌',result.cards);
event.videoId=lib.status.videoId++;
game.addVideo('cardDialog',null,[get.translation(target.name)+'展示的手牌',get.cardsInfo(result.cards),event.videoId]);
event.card2=result.cards[0];
game.log(target,'展示了',event.card2);
player.chooseToDiscard(function(card){
return get.suit(card)==get.suit(_status.event.parent.card2);
},function(card){
if(ai.get.damageEffect(target,player,player,'fire')>0){
return 7-ai.get.value(card,_status.event.player);
}
return -1;
}).prompt=false;
game.delay(2);
"step 2"
if(result.bool){
target.damage('fire');
}
else{
target.addTempSkill('huogong2','phaseBegin');
}
game.addVideo('cardDialog',null,event.videoId);
event.dialog.close();
},
ai:{
basic:{
order:4,
value:[3,1],
useful:1,
},
wuxie:function(target,card,player,current,state){
if(ai.get.attitude(current,player)>=0&&state>0) return false;
},
result:{
player:function(player){
var nh=player.num('h');
if(nh<=player.hp&&nh<=4&&_status.event.name=='chooseToUse'){
if(typeof _status.event.filterCard=='function'&&
_status.event.filterCard({name:'huogong'})){
return -10;
}
if(_status.event.skill){
var viewAs=get.info(_status.event.skill).viewAs;
if(viewAs=='huogong') return -10;
if(viewAs&&viewAs.name=='huogong') return -10;
}
}
return 0;
},
target:function(player,target){
if(target.skills.contains('huogong2')||target.num('h')==0) return 0;
if(player.num('h')<=1) return 0;
if(target==player){
if(typeof _status.event.filterCard=='function'&&
_status.event.filterCard({name:'huogong'})){
return -1.5;
}
if(_status.event.skill){
var viewAs=get.info(_status.event.skill).viewAs;
if(viewAs=='huogong') return -1.5;
if(viewAs&&viewAs.name=='huogong') return -1.5;
}
return 0;
}
return -1.5;
}
},
tag:{
damage:1,
fireDamage:1,
natureDamage:1,
}
}
},
tiesuo:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
filterTarget:true,
selectTarget:[1,2],
content:function(){
target.link();
},
chongzhu:true,
ai:{
wuxie:function(){
if(Math.random()<0.5) return 0;
},
basic:{
useful:4,
value:4,
order:7
},
result:{
target:function(player,target){
if(target.classList.contains('linked')) return 1;
if(ai.get.attitude(player,target)>=0) return -1;
if(player.isMin()) return -1;
if(ui.selected.targets.length) return -1;
for(var i=0;i<game.players.length;i++){
if(ai.get.attitude(player,game.players[i])<=-1&&
game.players[i]!=target&&!game.players[i].isLinked()){
return -1;
}
}
return 0;
}
},
tag:{
multitarget:1,
multineg:1,
}
}
},
bingliang:{
audio:true,
fullskin:true,
type:'delay',
range:{global:1},
filterTarget:function(card,player,target){
return (lib.filter.judge(card,player,target)&&player!=target);
},
judge:function(card){
if(get.suit(card)=='club') return 0;
return -3;
},
effect:function(){
if(result.bool==false){
player.skip('phaseDraw');
}
},
ai:{
basic:{
order:1,
useful:1,
value:4,
},
result:{
target:function(player,target){
return -1-target.get('h').length;
}
},
tag:{
skip:'phaseDraw'
}
}
},
hualiu:{
fullskin:true,
type:'equip',
subtype:'equip3',
distance:{globalTo:1},
},
zhuque:{
fullskin:true,
type:'equip',
subtype:'equip1',
distance:{attackFrom:-3},
ai:{
basic:{
equipValue:2
}
},
skills:['zhuque_skill']
},
guding:{
fullskin:true,
type:'equip',
subtype:'equip1',
distance:{attackFrom:-1},
ai:{
basic:{
equipValue:2
}
},
skills:['guding_skill']
},
tengjia:{
fullskin:true,
type:'equip',
subtype:'equip2',
ai:{
basic:{
equipValue:function(card,player){
if(player.hasSkillTag('maixie')&&player.hp>1) return 0;
if(ai.get.damageEffect(player,player,player,'fire')>=0) return 10;
var num=3;
for(var i=0;i<game.players.length;i++){
if(ai.get.attitude(game.players[i],player)<0) num--;
}
if(player.hp==1) num+=4;
if(player.hp==2) num+=1;
if(player.hp==3) num--;
if(player.hp>3) num-=4;
return num;
}
},
},
skills:['tengjia1','tengjia2']
},
baiyin:{
fullskin:true,
type:'equip',
subtype:'equip2',
onLose:function(){
player.recover();
},
filterLose:function(card,player){
return player.hp<player.maxHp;
},
skills:['baiyin_skill'],
tag:{
recover:1,
},
ai:{
order:9.5,
basic:{
equipValue:function(card,player){
if(player.hp==player.maxHp) return 5;
if(player.num('h','baiyin')) return 6;
return 0;
}
}
}
},
},
skill:{
huogong2:{},
jiu:{
trigger:{source:'damageBegin'},
filter:function(event){
return (event.card&&(event.card.name=='sha')&&event.parent.name!='_lianhuan'&&event.parent.name!='_lianhuan2');
},
forced:true,
content:function(){
trigger.num++;
},
group:'jiu2'
},
jiu2:{
trigger:{player:'useCardAfter',global:'phaseAfter'},
priority:2,
filter:function(event){
if(event.name=='useCard') return (event.card&&(event.card.name=='sha'));
return true;
},
forced:true,
popup:false,
audio:false,
content:function(){
player.removeSkill('jiu');
if(player.node.jiu){
player.node.jiu.delete();
player.node.jiu2.delete();
delete player.node.jiu;
delete player.node.jiu2;
}
},
},
guding_skill:{
audio:true,
trigger:{source:'damageBegin'},
filter:function(event){
if(event.parent.name=='_lianhuan'||event.parent.name=='_lianhuan2') return false;
if(event.card&&event.card.name=='sha'){
if(event.player.get('h').length==0) return true;
}
return false;
},
forced:true,
content:function(){
trigger.num++;
},
ai:{
effect:{
target:function(card,player,target,current){
if(card.name=='sha'&&target.get('h').length==0) return [1,-2];
}
}
}
},
tengjia1:{
trigger:{target:'useCardToBefore'},
forced:true,
priority:6,
audio:true,
filter:function(event,player){
if(event.player.num('s','unequip')) return false;
if(event.card.name=='nanman') return true;
if(event.card.name=='wanjian') return true;
if(event.card.name=='sha'&&!event.card.nature) return true;
},
content:function(){
trigger.untrigger();
trigger.finish();
},
ai:{
effect:{
target:function(card,player,target,current){
if(player.num('s','unequip')) return;
if(card.name=='nanman'||card.name=='wanjian') return 'zerotarget';
if(card.name=='sha'){
var equip1=player.get('e','1');
if(equip1&&equip1.name=='zhuque') return 2;
if(equip1&&equip1.name=='qinggang') return 1;
if(!card.nature) return 'zerotarget';
}
}
}
}
},
tengjia2:{
trigger:{player:'damageBegin'},
filter:function(event){
if(event.nature=='fire') return true;
},
audio:true,
forced:true,
content:function(){
trigger.num++;
},
ai:{
effect:{
target:function(card,player,target,current){
if(card.name=='sha'){
if(card.nature=='fire'||player.skills.contains('zhuque_skill')) return 2;
}
if(get.tag(card,'fireDamage')&&current<0) return 2;
}
}
}
},
baiyin_skill:{
trigger:{player:'damageBegin'},
forced:true,
audio:true,
filter:function(event,player){
if(event.num<=1) return false;
if(event.parent.player.num('s','unequip')) return false;
return true;
},
priority:-10,
content:function(){
trigger.num=1;
}
},
zhuque_skill:{
trigger:{player:'useCardToBefore'},
priority:7,
filter:function(event,player){
if(event.card.name=='sha'&&!event.card.nature) return true;
},
audio:true,
check:function(event,player){
var att=ai.get.attitude(player,event.target);
if(event.target.hasSkillTag('nofire')){
return att>0;
}
return att<=0;
},
content:function(){
trigger.card.nature='fire';
player.addSkill('zhuque_skill2');
player.storage.zhuque_skill=trigger.card;
}
},
zhuque_skill2:{
trigger:{player:'useCardAfter'},
forced:true,
popup:false,
content:function(){
delete player.storage.zhuque_skill.nature;
}
},
huogon2:{},
},
translate:{
jiu:'酒',
huogong:'火攻',
tiesuo:'铁锁连环',
huogong_bg:'攻',
huogong_info:'目标角色展示一张手牌然后若你能弃掉一张与所展示牌相同花色的手牌则火攻对该角色造成1点火焰伤害。',
tiesuo_bg:'锁',
_chongzhu:'重铸',
_lianhuan:'连环',
_lianhuan2:'连环',
bingliang:'兵粮寸断',
hualiu:'骅骝',
zhuque:'朱雀羽扇',
bingliang_bg:'粮',
bingliang_info:'目标角色判定阶段进行判定:若判定结果不为梅花,则跳过该角色的摸牌阶段。',
hualiu_bg:'+马',
zhuque_bg:'扇',
zhuque_skill:'朱雀羽扇',
zhuque_info:'你可以将一张普通【杀】当具火焰伤害的【杀】使用。',
guding:'古锭刀',
guding_info:'锁定技,当你使用【杀】对目标角色造成伤害时,若其没有手牌,此伤害+1。',
guding_skill:'古锭刀',
tengjia:'藤甲',
tengjia_info:'锁定技,【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。你每次受到火焰伤害时,该伤害+1。',
tengjia1:'藤甲',
tengjia2:'藤甲',
baiyin:'白银狮子',
baiyin_info:'锁定技你每次受到伤害时最多承受1点伤害防止多余的伤害当你失去装备区里的【白银狮子】时你回复1点体力。',
baiyin_skill:'白银狮子',
_baiyin:'白银狮子',
},
list:[
["heart",4,"sha","fire"],
["heart",7,"sha","fire"],
["heart",10,"sha","fire"],
["diamond",4,"sha","fire"],
["diamond",5,"sha","fire"],
["spade",4,"sha","thunder"],
["spade",5,"sha","thunder"],
["spade",6,"sha","thunder"],
["spade",7,"sha","thunder"],
["spade",8,"sha","thunder"],
["club",5,"sha","thunder"],
["club",6,"sha","thunder"],
["club",7,"sha","thunder"],
["club",8,"sha","thunder"],
["heart",8,"shan"],
["heart",9,"shan"],
["heart",11,"shan"],
["heart",12,"shan"],
["diamond",6,"shan"],
["diamond",7,"shan"],
["diamond",8,"shan"],
["diamond",10,"shan"],
["diamond",11,"shan"],
["heart",5,"tao"],
["heart",6,"tao"],
["diamond",2,"tao"],
["diamond",3,"tao"],
["diamond",9,"jiu"],
["spade",3,"jiu"],
["spade",9,"jiu"],
["club",3,"jiu"],
["club",9,"jiu"],
["diamond",13,"hualiu"],
["club",1,"baiyin"],
["spade",2,"tengjia",'fire'],
["club",2,"tengjia",'fire'],
["spade",1,"guding"],
["diamond",1,"zhuque",'fire'],
["heart",2,"huogong","fire"],
["heart",3,"huogong","fire"],
["diamond",12,"huogong","fire"],
["spade",11,"tiesuo"],
["spade",12,"tiesuo"],
["club",10,"tiesuo"],
["club",11,"tiesuo"],
["club",12,"tiesuo"],
["club",13,"tiesuo"],
["heart",13,"wuxie"],
["heart",13,"wuxie"],
["spade",13,"wuxie"],
["spade",10,"bingliang"],
["club",4,"bingliang"],
],
}