From 4e1daab70e6076e7e36281995b8ae2e7478386a1 Mon Sep 17 00:00:00 2001 From: Sukincen <33780347+Sukincen@users.noreply.github.com> Date: Thu, 21 Nov 2019 13:51:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AC=A2=E4=B9=90=E5=8D=A1=E7=89=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- card/huanlekapai.js | 566 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 566 insertions(+) create mode 100644 card/huanlekapai.js diff --git a/card/huanlekapai.js b/card/huanlekapai.js new file mode 100644 index 000000000..7dc0c3b1e --- /dev/null +++ b/card/huanlekapai.js @@ -0,0 +1,566 @@ +'use strict'; +game.import('card',function(lib,game,ui,get,ai,_status){ + return { + name:'huanlekapai', + connect:true, + card:{ + "monkey":{ + audio:true, + fullskin:true, + type:"equip", + subtype:"equip5", + skills:["monkey"], + ai:{ + basic:{ + equipValue:8, + order:function (card,player){ + if(player&&player.hasSkillTag('reverseEquip')){ + return 8.5-get.equipValue(card,player)/20; + } + else{ + return 8+get.equipValue(card,player)/20; + } + }, + useful:2, + value:function (card,player){ + var value=0; + var info=get.info(card); + var current=player.getEquip(info.subtype); + if(current&&card!=current){ + value=get.value(current,player); + } + var equipValue=info.ai.equipValue; + if(equipValue==undefined){ + equipValue=info.ai.basic.equipValue; + } + if(typeof equipValue=='function') return equipValue(card,player)-value; + if(typeof equipValue!='number') equipValue=0; + return equipValue-value; + }, + }, + result:{ + target:function (player,target){ + return get.equipResult(player,target,name); + }, + }, + }, + enable:true, + selectTarget:-1, + filterTarget:function (card,player,target){ + return target==player; + }, + modTarget:true, + allowMultiple:false, + content:function (){ + target.equip(card); + }, + toself:true, + }, + + "mianju":{ + audio:true, + type:"equip", + subtype:"equip2", + skills:["mianju"], + ai:{ + order:9.5, + basic:{ + equipValue:function (card,player){ + if(!player.isTurnedOver()) return 6; + if(player.isTurnedOver()) return -10; + return 0; + }, + order:function (card,player){ + if(player&&player.hasSkillTag('reverseEquip')){ + return 8.5-get.equipValue(card,player)/20; + } + else{ + return 8+get.equipValue(card,player)/20; + } + }, + useful:2, + value:function (card,player){ + var value=0; + var info=get.info(card); + var current=player.getEquip(info.subtype); + if(current&&card!=current){ + value=get.value(current,player); + } + var equipValue=info.ai.equipValue; + if(equipValue==undefined){ + equipValue=info.ai.basic.equipValue; + } + if(typeof equipValue=='function') return equipValue(card,player)-value; + if(typeof equipValue!='number') equipValue=0; + return equipValue-value; + }, + }, + result:{ + target:function (player,target){ + return get.equipResult(player,target,name); + }, + }, + }, + enable:true, + selectTarget:-1, + modTarget:true, + allowMultiple:false, + toself:true, + fullskin:true, + }, + "shoulijian":{ + audio:true, + type:"basic", + skills:["shoulijian"], + enable:true, + fullskin:true, + filterTarget:function (card,player,target){ + return get.distance(player,target)>1; + }, + content:function (){ + "step 0" + game.playSu('shoulijian'); + if(!target.countCards('he',{type:'equip'})){ + target.damage(); + event.finish(); + } + else{ + target.chooseToDiscard('he',{type:'equip'},'弃置一张装备牌或受到一点伤害').ai=function(card){ + return 7-get.value(card); + }; + } + "step 1" + if(!result.bool){ + target.damage(); + } + }, + + ai:{ + basic:{ + order:9, + value:6, + useful:2, + }, + result:{ + target:-2, + }, + tag:{ + discard:1, + damage:1, + }, + }, + selectTarget:1, + }, + + "kuwu":{ + audio:true, + fullskin:true, + + type:"equip", + subtype:"equip1", + skills:["kuwu"], + nomod:true, + nopower:true, + unique:true, + distance:{ + attackFrom:-1, + }, + ai:{ + equipValue:6, + basic:{ + order:function (card,player){ + if(player&&player.hasSkillTag('reverseEquip')){ + return 8.5-get.equipValue(card,player)/20; + } + else{ + return 8+get.equipValue(card,player)/20; + } + }, + useful:2, + equipValue:1, + value:function (card,player){ + var value=0; + var info=get.info(card); + var current=player.getEquip(info.subtype); + if(current&&card!=current){ + value=get.value(current,player); + } + var equipValue=info.ai.equipValue; + if(equipValue==undefined){ + equipValue=info.ai.basic.equipValue; + } + if(typeof equipValue=='function') return equipValue(card,player)-value; + if(typeof equipValue!='number') equipValue=0; + return equipValue-value; + }, + }, + result:{ + target:function (player,target){ + return get.equipResult(player,target,name); + }, + }, + }, + enable:true, + selectTarget:-1, + modTarget:true, + allowMultiple:false, + toself:true, + }, + "xuelunyang":{ + audio:true, + fullskin:true, + type:"equip", + subtype:"equip5", + skills:["xuelunyang"], + ai:{ + basic:{ + equipValue:8, + order:function (card,player){ + if(player&&player.hasSkillTag('reverseEquip')){ + return 8.5-get.equipValue(card,player)/20; + } + else{ + return 8+get.equipValue(card,player)/20; + } + }, + useful:2, + value:function (card,player){ + var value=0; + var info=get.info(card); + var current=player.getEquip(info.subtype); + if(current&&card!=current){ + value=get.value(current,player); + } + var equipValue=info.ai.equipValue; + if(equipValue==undefined){ + equipValue=info.ai.basic.equipValue; + } + if(typeof equipValue=='function') return equipValue(card,player)-value; + if(typeof equipValue!='number') equipValue=0; + return equipValue-value; + }, + }, + result:{ + target:function (player,target){ + return get.equipResult(player,target,name); + }, + }, + }, + + enable:true, + selectTarget:-1, + modTarget:true, + allowMultiple:false, + toself:true, + }, + "jiuwei":{ + audio:true, + fullskin:true, + type:"equip", + subtype:"equip5", + skills:["jiuwei"], + ai:{ + basic:{ + equipValue:8, + order:function (card,player){ + if(player&&player.hasSkillTag('reverseEquip')){ + return 8.5-get.equipValue(card,player)/20; + } + else{ + return 8+get.equipValue(card,player)/20; + } + }, + useful:2, + value:function (card,player){ + var value=0; + var info=get.info(card); + var current=player.getEquip(info.subtype); + if(current&&card!=current){ + value=get.value(current,player); + } + var equipValue=info.ai.equipValue; + if(equipValue==undefined){ + equipValue=info.ai.basic.equipValue; + } + if(typeof equipValue=='function') return equipValue(card,player)-value; + if(typeof equipValue!='number') equipValue=0; + return equipValue-value; + }, + }, + result:{ + target:function (player,target){ + return get.equipResult(player,target,name); + }, + }, + }, + + enable:true, + selectTarget:-1, + modTarget:true, + allowMultiple:false, + toself:true, + }, + }, + skill:{ + + "shoulijian":{ + audio:true, + enable:true, + filterTarget:function (card,player,target){ + return get.distance(player,target)>1; + }, + content:function (){ + "step 0" + game.playSu('shoulijian'); + if(!target.countCards('he',{type:'equip'})){ + target.damage(); + event.finish(); + } + else{ + target.chooseToDiscard('he',{type:'equip'},'弃置一张装备牌或受到一点伤害').ai=function(card){ + return 7-get.value(card); + }; + } + "step 1" + if(!result.bool){ + target.damage(); + } + }, + ai:{ + basic:{ + order:9, + value:6, + useful:2, + }, + result:{ + target:-2, + }, + tag:{ + discard:1, + damage:1, + }, + }, + selectTarget:1, + }, + + "monkey":{ +trigger:{ + global:"useCardToBegin", + }, + audio:true, + filter:function (event,player){ + var card=player.get('e','5'); + if(card){ + var name=card.name; + if(event.name=='tao'&&get.itemtype(event.cards)=='cards'&&get.position(event.cards[0])=='d'&&event.player!=player&&name&&name.indexOf('monkey')!=-1) return true; + } + return false; + }, + check:function (event,player){ + return ai.get.attitude(player,event.player)<=0; + }, + content:function (){ + "step 0" + player.$fullscreenpop('猴子偷桃','fire'); + trigger.untrigger(); + trigger.finish(); + "step 1" + player.discard(player.get('e','5')); + "step 2" + player.gain(trigger.cards); + player.$gain2(trigger.cards); + }, +}, + +"mianju":{ + audio:true, + trigger:{ + player:"turnOverBefore", + }, + forced:true, + content:function (){ + trigger.cancel(); + }, + ai:{ + noturnOver:true, + effect:{ + target:function (card,player,target,current){ + if(get.tag(card,'turnOver')) return [0,0]; + }, + }, + }, +}, + +"kuwu":{ +audio:true, + trigger:{ + source:"damageEnd", + }, + forced:true, + priority:55, + filter:function (event,player){ + if(event._notrigger.contains(event.player)) return false; + return event.card&&event.card.name=='sha'&&event.notLink()&&event.player.countCards('he')>0; + }, + content:function (){ + trigger.player.chooseToDiscard(true,'he'); + }, +}, + +"xuelunyang":{ + audio:true, + trigger:{ + player:"phaseBegin", + }, + priority:2018, + direct:true, + createDialog:function (player,target,onlylist){ + var names=[]; + var list=[]; + if(target.name&&!target.isUnseen(0)) names.add(target.name); + if(target.name1&&!target.isUnseen(0)) names.add(target.name1); + if(target.name2&&!target.isUnseen(1)) names.add(target.name2); + var pss=player.getSkills(); + for(var i=0;i
【'+ + translation+'】
'+lib.translate[list[i]+'_info']+'
'); + item.firstChild.addEventListener('click',clickItem); + item.firstChild.link=list[i]; + } + } + dialog.add(ui.create.div('.placeholder')); + return dialog; + }, + content:function (){ + 'step 0' + player.chooseTarget(get.prompt2('xuelunyang'),function(card,player,target){ + var names=[]; + if(target.name&&!target.isUnseen(0)) names.add(target.name); + if(target.name1&&!target.isUnseen(0)) names.add(target.name1); + if(target.name2&&!target.isUnseen(1)) names.add(target.name2); + var pss=player.getSkills(); + for(var i=0;i0) return Math.randomGet(); + return get.attitude(_status.event.player,target)<=0; + }); + 'step 1' + if(result.bool){ + event.target=result.targets[0]; + player.logSkill('xuelunyang',event.target); + } + else{ + event.finish(); + } + 'step 2' + event.skillai=function(list){ + return get.max(list,get.skillRank,'item'); + }; + if(event.isMine()){ + event.dialog=lib.skill.xuelunyang.createDialog(player,target);//tianshu + event.switchToAuto=function(){ + event._result=event.skillai(event.list); + game.resume(); + }; + _status.imchoosing=true; + game.pause(); + } + else{ + event._result=event.skillai(lib.skill.xuelunyang.createDialog(player,target,true)); + } + 'step 3' + _status.imchoosing=false; + if(event.dialog){ + event.dialog.close(); + } + player.addTempSkill(result); + player.popup(result); + game.log(player,'获得了','【'+get.translation(result)+'】'); + }, +}, + +"jiuwei":{ +trigger:{ + player:"phaseEnd", + }, + audio:true, + filter:function (event,player){ + return player.isAlive(); + }, + frequent:true, + content:function (){ + if(player.isDamaged()){ + player.recover(); + } + else{ + player.draw(); + } + }, +}, + }, + translate:{ + "monkey":"猴子", + "monkey_info":"猴子偷桃:当场上有其他角色使用【桃】时,你可以弃掉【猴子】,阻止【桃】的结算并将其收为手牌", + "mianju":"漩涡面具", + "mianju_info":"锁定技 你的武将牌不能被翻面", + "shoulijian":"手里剑", + "shoulijian_info":"出牌阶段,对一名距离1以外的角色使用,令其弃置一张装备牌或受到一点伤害", + "kuwu":"苦无", + "kuwu_info":"锁定技 每当你使用【杀】造成一次伤害,受伤角色须弃置一张牌", + "xuelunyang":"写轮眼", + "xuelunyang_info":"回合开始阶段,你可以选择一名角色,然后获得其一项技能,直到回合结束", + "jiuwei":"九尾", + "jiuwei_info":"(收集查克拉)回合结束时,若你已受伤,你可回复一点体力,否则摸一张牌", + }, + list:[ + ["diamond","5","monkey"], + ["heart","9","jiuwei"], + ["heart","2","xuelunyang"], + ["spade","6","kuwu"], + ["diamond","4","shoulijian"], + ["spade","4","shoulijian"], + ["club","3","mianju"], + ], + } +});