From dc4bbb34d5943227f917dc592eb640829b89c36e Mon Sep 17 00:00:00 2001 From: libccy Date: Sun, 7 May 2017 12:14:32 +0800 Subject: [PATCH] q --- card/swd.js | 34 +++++- character/gujian.js | 72 ++++++------ character/rank.js | 1 + character/swd.js | 9 +- character/xianjian.js | 254 +++++++++++++++++++++++++++++++++++++++--- game/game.js | 2 +- 6 files changed, 310 insertions(+), 62 deletions(-) diff --git a/card/swd.js b/card/swd.js index 0d3c8e558..32ff31a6e 100644 --- a/card/swd.js +++ b/card/swd.js @@ -1249,14 +1249,22 @@ game.import('card',function(lib,game,ui,get,ai,_status){ target.changeHujia(2); target.turnOver(); 'step 1' - target.addTempSkill('qianxing',{player:'turnOverAfter'}); + target.addTempSkill('hslingjian_jinjilengdong',{player:'turnOverAfter'}); }, ai:{ order:2, result:{ target:function(player,target){ - if(target.hasSkillTag('noturn')) return 0; - return -1; + var num=ai.get.threaten(target,player); + if(target.hasSkillTag('noturn')) return 2*num; + if(target.hp>4) return -1.2*num; + else if(target.hp==4) return -1*num; + else if(target.hp==3) return -0.9*num; + else if(target.hp==2) return -0.5*num; + else{ + if(target.maxHp>2) return 1*num; + return 0; + } }, }, useful:[2,0.5], @@ -4186,11 +4194,28 @@ game.import('card',function(lib,game,ui,get,ai,_status){ forced:true, popup:false, silent:true, + temp:true, content:function(){ player.removeSkill('hslingjian_xingtigaizao'); player.storage.hslingjian_xingtigaizao=0; } }, + hslingjian_jinjilengdong:{ + mark:true, + nopop:true, + temp:true, + intro:{ + content:'不能使用卡牌,也不能成为卡牌的目标' + }, + mod:{ + targetEnabled:function(card,player,target){ + return false; + }, + cardEnabled:function(card,player){ + return false; + } + } + }, qinglonglingzhu:{ trigger:{source:'damageEnd'}, direct:true, @@ -4909,7 +4934,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ hslingjian_zhongxinghujia:'重型护甲', hslingjian_zhongxinghujia_info:'可用于煅造装备;令一名角色装备一件随机防具,然后随机弃置其一张手牌', hslingjian_jinjilengdong:'紧急冷冻', - hslingjian_jinjilengdong_info:'可用于煅造装备;令一名武将牌正面朝上的其他角色获得两点护甲并翻面,然后获得技能潜行直到武将牌翻回正面', + hslingjian_jinjilengdong_bg:'冻', + hslingjian_jinjilengdong_info:'可用于煅造装备;令一名武将牌正面朝上的其他角色获得两点护甲并翻面,该角色不能使用卡牌,也不能成为卡牌的目标直到武将牌翻回正面', hslingjian_yinmilichang:'隐秘力场', hslingjian_yinmilichang_info:'可用于煅造装备;令一名其他角色获得技能潜行,直到其下一回合开始', hslingjian_xingtigaizao:'型体改造', diff --git a/character/gujian.js b/character/gujian.js index f60812cc3..bf0ac8e23 100644 --- a/character/gujian.js +++ b/character/gujian.js @@ -377,51 +377,57 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, liuying:{ - trigger:{player:'useCard'}, + trigger:{player:'useCardAfter'}, filter:function(event,player){ - if(event.card.name!='sha') return false; - return game.hasPlayer(function(current){ - return (event.targets.contains(current)==false&¤t!=player&& - lib.filter.targetEnabled(event.card,player,current)) + if(!player.storage.liuying) player.storage.liuying=[]; + return event.card&&event.card.name=='sha'&&game.hasPlayer(function(current){ + return !player.storage.liuying.contains(current)&&player.canUse('sha',current,false); }); }, direct:true, content:function(){ 'step 0' - var list=game.filterPlayer(function(current){ - return (trigger.targets.contains(current)==false&¤t!=player&& - lib.filter.targetEnabled(trigger.card,player,current)) - }); - event.list=list; + player.chooseTarget(get.prompt('liuying'),function(card,player,target){ + return !player.storage.liuying.contains(target)&&player.canUse('sha',target,false); + }).ai=function(target){ + return ai.get.effect(target,{name:'sha'},player,player); + }; 'step 1' - if(event.list.length){ - player.chooseTarget(get.prompt('liuying'),function(card,player,target){ - return event.list.contains(target); - }).ai=function(target){ - return get.effect(target,trigger.card,player,player); - }; + if(result.bool){ + player.logSkill('liuying',result.targets); + event.target=result.targets[0]; + var cards=get.cards(); + player.showCards(cards,get.translation(player)+'对'+get.translation(result.targets)+'发动了【流影】'); + event.bool=(get.color(cards[0])=='black'); } else{ event.finish(); } 'step 2' - if(result.bool){ - event.current=result.targets[0]; - event.current.judge(function(card){ - if(get.color(card)=='black') return -1; - return 0; - }); - event.list.remove(event.current); - player.logSkill('liuying',event.current); + if(event.bool){ + player.useCard({name:'sha'},event.target,false).animate=false; } - else{ - event.finish(); - } - 'step 3' - if(result.color=='black'){ - trigger.targets.push(event.current); - game.log(event.current,'被追加为额外目标'); - event.goto(1); + }, + group:['liuying_count1','liuying_count2'], + subSkill:{ + count1:{ + trigger:{player:'shaAfter'}, + forced:true, + popup:false, + silent:true, + content:function(){ + if(!player.storage.liuying) player.storage.liuying=[]; + player.storage.liuying.add(trigger.target); + } + }, + count2:{ + trigger:{player:'phaseAfter'}, + forced:true, + popup:false, + silent:true, + content:function(){ + delete player.storage.liuying; + } } } }, @@ -1629,7 +1635,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xiuhua:'袖花', xiuhua_info:'每当一件其他角色的装备因被替换或弃置进入弃牌堆,你可以获得之', liuying:'流影', - liuying_info:'每当你使用一张杀,你可以指定一名不是此杀目标的角色并进行一次判定,若结果是黑色,将其追加为杀的额外目标并可以再次判定', + liuying_info:'每当你使用一张杀结算完毕后,你可以指定一名本回合未成为过你的杀的目标的角色,并亮出牌堆顶的一张牌,若为黑色,你对该角色使用一张杀', boyun:'拨云', boyun1:'拨云', boyun2:'拨云', diff --git a/character/rank.js b/character/rank.js index 1bf4dc170..85dc0a6ff 100644 --- a/character/rank.js +++ b/character/rank.js @@ -56,6 +56,7 @@ window.noname_character_rank={ 'swd_shuwaner', ], a:[ + 'pal_yueqi', 'pal_luozhaoyan', 'pal_xia', 'hs_yashaji', diff --git a/character/swd.js b/character/swd.js index 403b83792..23c3b3cc3 100644 --- a/character/swd.js +++ b/character/swd.js @@ -392,12 +392,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ min=nh; } }); - if(game.countPlayer()>=7){ - return max-min<=2; - } - else{ - return max-min<=1; - } + return max-min<=1; }, content:function(){ player.draw(2); @@ -9275,7 +9270,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jiefen:'解纷', jiefen_info:'出牌阶段限一次,你可以令一名手牌数多于你的角色交给你一张牌,然后你交给一名手牌数少于你的角色一张牌', datong:'大同', - datong_info:'任意一名角色的结束阶段,若全场手牌数最多和最少的角色手牌数之差不超过1(人数不少于7时改为2),你摸两张牌', + datong_info:'任意一名角色的结束阶段,若全场手牌数最多和最少的角色手牌数之差不超过1,你摸两张牌', huodan:'火丹', huodan_info:'出牌阶段限一次,你可以弃置一张红色牌并失去一点体力,然后将两点火属性伤害分配给1~2名角色', huodan_info_alter:'出牌阶段限一次,你可以弃置一张红色牌并失去一点体力,然后将两点火属性伤害分配给1~2名角色;若你只分配了一名角色,该角色在结算后摸一张牌', diff --git a/character/xianjian.js b/character/xianjian.js index 7aeb32ff6..bc330e106 100644 --- a/character/xianjian.js +++ b/character/xianjian.js @@ -40,7 +40,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ pal_jiangcheng:['male','qun',4,['yanzhan','fenshi']], pal_yuejinzhao:['male','wei',4,['ywuhun','yingfeng']], - // pal_yueqi:['female','wei',4,[]], + pal_yueqi:['female','wei',3,['tianwu','liguang','shiying']], // pal_mingxiu:['female','qun',4,[]], // pal_xianqing:['male','qun',4,[]], pal_luozhaoyan:['female','shu',4,['fenglue','tanhua']], @@ -84,6 +84,219 @@ game.import('character',function(lib,game,ui,get,ai,_status){ pal_jiangcheng:'折剑山庄庄主欧阳英的得意门生,但因其蚩尤后人魔族的身份,令他无法被容于人界;再加上人界半魔同族饱受人类迫害,故最终成为净天教教主魔君“姜世离”,毅然肩负起保护同族的重任。', }, skill:{ + tianwu:{ + trigger:{player:'useCardToBegin'}, + filter:function(event,player){ + return event.targets&&event.targets.length==1&&player.getEnemies().contains(event.target); + }, + frequent:true, + content:function(){ + var list=[1,2,3,4,5,6]; + var target=trigger.target; + if(target.countCards('he')==0){ + list.remove(1); + } + if(target.isLinked()){ + list.remove(4); + } + if(target.hasSkill('fengyin')){ + list.remove(5); + } + switch(list.randomGet()){ + case 1:target.discard(target.getCards('he').randomGet());break; + case 2:target.loseHp();break; + case 3:target.damage();break; + case 4:if(!target.isLinked()) target.link();break; + case 5:target.addTempSkill('fengyin',{player:'phaseAfter'});break; + case 6:{ + var list=[]; + for(var i=0;i=3; + }, + filter:function(event,player){ + return !player.storage.shiying&&event.player!=player; + }, + logTarget:'player', + content:function(){ + 'step 0' + trigger.untrigger(); + trigger.finish(); + player.awakenSkill('shiying'); + player.storage.shiying=true; + + player.maxHp=3; + player.hp=3; + trigger.player.maxHp=3; + trigger.player.hp=3; + + player.clearSkills(); + trigger.player.clearSkills(); + 'step 1' + var hs=player.get('hej'); + player.$throw(hs); + player.lose(player.get('hej'))._triggered=null; + 'step 2' + var hs=trigger.player.get('hej'); + trigger.player.$throw(hs); + trigger.player.lose(trigger.player.get('hej'))._triggered=null; + 'step 3' + game.asyncDraw([player,trigger.player],3); + }, + ai:{ + threaten:1.5 + } + }, + liguang:{ + trigger:{player:'phaseEnd'}, + filter:function(event,player){ + if(!game.hasPlayer(function(current){ + return current.countCards('ej'); + })){ + return false; + } + return player.countCards('h')>0; + }, + direct:true, + content:function(){ + "step 0" + player.chooseCardTarget({ + ai1:function(card){ + return 7-get.useful(card); + }, + ai2:function(target){ + var player=_status.event.player; + if(ui.selected.targets.length==0){ + if(target.countCards('j')&&get.attitude(player,target)>0) return 10; + if(get.attitude(player,target)<0){ + var players=game.filterPlayer(); + for(var i=0;i0){ + if((target.getEquip(1)&&!players[i].getEquip(1))|| + (target.getEquip(2)&&!players[i].getEquip(2))|| + (target.getEquip(3)&&!players[i].getEquip(3))|| + (target.getEquip(4)&&!players[i].getEquip(4))|| + (target.getEquip(5)&&!players[i].getEquip(5))) return -get.attitude(player,target); + } + } + } + return 0; + } + return -get.attitude(player,target)*get.attitude(player,ui.selected.targets[0]); + }, + multitarget:true, + filterTarget:function(card,player,target){ + if(ui.selected.targets.length){ + var from=ui.selected.targets[0]; + var judges=from.getCards('j'); + for(var i=0;i0; + } + }, + selectTarget:2, + filterCard:lib.filter.cardDiscardable, + prompt:get.prompt('liguang'), + targetprompt:['被移走','移动目标'], + target:target + }); + "step 1" + if(!result.bool){ + event.finish(); + return; + } + player.discard(result.cards); + player.logSkill('liguang',result.targets,false); + player.line2(result.targets); + event.targets=result.targets; + "step 2" + game.delay(); + "step 3" + if(targets.length==2){ + player.choosePlayerCard('ej',true,function(button){ + var player=_status.event.player; + var targets0=_status.event.targets0; + var targets1=_status.event.targets1; + if(get.attitude(player,targets0)>get.attitude(player,targets1)){ + return get.position(button.link)=='j'?10:0; + } + else{ + if(get.position(button.link)=='j') return -10; + return get.equipValue(button.link); + } + },targets[0]).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){ + var targets1=_status.event.targets1; + if(get.position(button.link)=='j'){ + return !targets1.hasJudge(button.link.viewAs||button.link.name); + } + else{ + return !targets1.countCards('e',{subtype:get.subtype(button.link)}); + } + }); + } + else{ + event.finish(); + } + "step 4" + if(result.bool&&result.links.length){ + var link=result.links[0]; + if(get.position(link)=='e'){ + event.targets[1].equip(link); + } + else if(link.viewAs){ + event.targets[1].addJudge({name:link.viewAs},[link]); + } + else{ + event.targets[1].addJudge(link); + } + event.targets[0].$give(link,event.targets[1]) + game.delay(); + } + }, + ai:{ + expose:0.2, + threaten:1.3 + } + }, xiepan:{ trigger:{player:'loseEnd'}, check:function(event,player){ @@ -137,7 +350,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } player.chooseButton(true,['御甲:选择一张机关牌获得之',[list,'vcard']]).ai=function(button){ if(player.hasSkill('jiguanyaoshu_skill')&&button.link[2]=='jiguanyaoshu') return 0; - return ai.get.value({name:button.link[2]}); + return get.value({name:button.link[2]}); }; } else{ @@ -494,7 +707,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ hef=-1; } else{ - hef=ai.get.effect(target,hs[i],player,player); + hef=get.effect(target,hs[i],player,player); } if(lib.filter.targetEnabled2(hs[i],player,target)&&hef>0){ num++; @@ -519,7 +732,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.chooseCard([1,Infinity],'按顺序选择对'+get.translation(result.targets)+'使用的牌',function(card){ return lib.filter.targetEnabled2(card,player,event.target); }).ai=function(card){ - if(ai.get.effect(event.target,card,player,player)>0){ + if(get.effect(event.target,card,player,player)>0){ if(get.attitude(player,event.target)>0&&get.tag(card,'damage')){ for(var i=0;i2&& - ai.get.recoverEffect(players[i],player,player)>0){ + get.recoverEffect(players[i],player,player)>0){ if(players[i].hp==1){ if(player.hp0){ if(trigger.player.hp==1){ - return 10-ai.get.value(card); + return 10-get.value(card); } - return 8-ai.get.value(card); + return 8-get.value(card); } } 'step 1' @@ -883,29 +1096,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.storage.husha>2){ var num1=game.countPlayer(function(current){ if(current!=player&&player.canUse('yuansuhuimie',current)){ - return get.sgn(ai.get.effect(current,{name:'yuansuhuimie'},player,player)); + return get.sgn(get.effect(current,{name:'yuansuhuimie'},player,player)); } }); var num2=game.countPlayer(function(current){ if(current!=player&&player.canUse('yuansuhuimie',current)){ - return ai.get.effect(current,{name:'yuansuhuimie'},player,player); + return get.effect(current,{name:'yuansuhuimie'},player,player); } }); - if(num1>0&&num2>0) return 3; + if(num1>0&&num2>0) return '选项三'; } if(player.storage.husha>1){ var num=game.countPlayer(function(current){ if(current!=player&&player.canUse('nanman',current)){ - return get.sgn(ai.get.effect(current,{name:'nanman'},player,player)); + return get.sgn(get.effect(current,{name:'nanman'},player,player)); } }); - if(num>0) return 2; + if(num>0) return '选项二'; } if(game.hasPlayer(function(current){ - return player.canUse('sha',current,false)&&ai.get.effect(current,{name:'sha'},player,player)>0; + return player.canUse('sha',current,false)&&get.effect(current,{name:'sha'},player,player)>0; })){ - return 1; + return '选项一'; } + return 'cancel2'; }).set('prompt',get.prompt('husha')).set('choiceList',list); 'step 1' if(result.control!='cancel2'){ @@ -916,7 +1130,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.chooseTarget('选择出杀的目标',true,function(card,player,target){ return player.canUse('sha',target,false); }).ai=function(target){ - return ai.get.effect(target,{name:'sha'},player,player); + return get.effect(target,{name:'sha'},player,player); } } else if(result.control=='选项二'){ @@ -3390,6 +3604,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ pal_mingxiu:'明绣', pal_jushifang:'居十方', + tianwu:'天舞', + tianwu_info:'每当你使用卡牌指定一名敌方角色为惟一目标,你可以对其施加一个随机的负面效果', + liguang:'离光', + liguang_info:'结束阶段,你可以弃置一张手牌并将场上的一张牌移动到另一个合理的位置', + shiying:'逝影', + shiying_info:'限定技,在一名其他角色死亡前,你可以防止其死亡,然后你与该角色失去全部技能、将体力和体力上限变为3、移去所有牌并摸3张牌', yujia:'御甲', yujia_info:'每当你使用一张未强化的装备牌,你可以随机观看X张机关牌,并选择一张获得之,X为你本局使用过的机关牌数且至少为1', xiepan:'械磐', diff --git a/game/game.js b/game/game.js index 836f04804..3b69db959 100644 --- a/game/game.js +++ b/game/game.js @@ -41769,7 +41769,7 @@ for(i=0;i
'+get.translation(skills[i])+'
'+lib.translate[skills[i]+'_info']+'
'); } else{