diff --git a/card/gujian.js b/card/gujian.js index 23c988076..bc40f63bd 100644 --- a/card/gujian.js +++ b/card/gujian.js @@ -853,7 +853,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ target.gain(list,'gain2'); }, ai:{ - order:1, + order:4.5, + value:[5,1], + tag:{ + gain:1 + }, result:{ target:function(player,target){ if(target==player){ diff --git a/card/gwent.js b/card/gwent.js index 776bc2742..ef5380d20 100644 --- a/card/gwent.js +++ b/card/gwent.js @@ -401,6 +401,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){ return !current.isUnseen(); },'list').randomSort(),function(current){ var att=get.attitude(player,current); + if(att<0&¤t.isDamaged()&¤t.hp<=3){ + return -10; + } var rank=get.rank(current,true); if(current.maxHp>=3){ if(current.hp<=1){ @@ -542,15 +545,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(max!=min&&max!=null&&min!=null){ for(var i=0;i=2){ - return '在每个准备阶段令牌数为全场最多的所有其他角色各随机弃置一张牌(重复'+storage+'次)'; + return '锁定技,准备阶段,你令手牌数为全场最多的所有其他角色各随机弃置一张手牌,若目标不包含敌方角色,将一名随机敌方角色追加为额外目标,结算X次(重复'+storage+'次)'; } else{ - return '在每个准备阶段令牌数为全场最多的所有其他角色各随机弃置一张牌'; + return '锁定技,准备阶段,你令手牌数为全场最多的所有其他角色各随机弃置一张手牌,若目标不包含敌方角色,将一名随机敌方角色追加为额外目标,结算X次'; } } }, @@ -1290,7 +1292,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ var list=game.filterPlayer(); for(var i=0;i=7) return; if(player.hp<=2) return; if(!player.hasSkill('jilue')||player.storage.renjie==0){ - return [0,0,0,0]; + return 'zeroplayertarget'; } } } diff --git a/character/ow.js b/character/ow.js index bd0cd1509..5ab16d364 100644 --- a/character/ow.js +++ b/character/ow.js @@ -1430,7 +1430,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ effect:{ player:function(card,player,target){ if(get.tag(card,'damage')&&get.attitude(player,target)>0){ - if(target.hp==target.maxHp) return [0,0,0,0]; + if(target.hp==target.maxHp||get.recoverEffect(target,player,player)<=0) return 'zeroplayertarget'; return [0,0,0,1]; } } diff --git a/character/swd.js b/character/swd.js index 36237a381..4cc00247f 100644 --- a/character/swd.js +++ b/character/swd.js @@ -9178,7 +9178,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ for(var i=0;i1) return [0,0,0,0]; + if(num>1) return 'zeroplayertarget'; } } } diff --git a/character/xianjian.js b/character/xianjian.js index 518d37fa1..a1926e537 100644 --- a/character/xianjian.js +++ b/character/xianjian.js @@ -43,7 +43,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ pal_yuejinzhao:['male','wei',4,['ywuhun','yingfeng']], pal_yueqi:['female','wei',3,['tianwu','liguang','shiying']], pal_mingxiu:['female','shu',3,['linghuo','guijin','chengxin']], - pal_xianqing:['male','qun',4,['zisha','xtanxi']], + pal_xianqing:['male','qun',4,['xtanxi','xiaoyue']], pal_luozhaoyan:['female','shu',4,['fenglue','tanhua']], pal_jushifang:['male','shu',3,['yujia','xiepan','yanshi']], }, @@ -85,13 +85,70 @@ game.import('character',function(lib,game,ui,get,ai,_status){ pal_jiangcheng:'折剑山庄庄主欧阳英的得意门生,但因其蚩尤后人魔族的身份,令他无法被容于人界;再加上人界半魔同族饱受人类迫害,故最终成为净天教教主魔君“姜世离”,毅然肩负起保护同族的重任。', }, skill:{ + xiaoyue:{ + trigger:{global:'roundStart'}, + forced:true, + filter:function(event,player){ + return player.countCards('h','sha'); + }, + content:function(){ + 'step 0' + event.num=0; + 'step 1' + var card=player.get('h','sha').randomGet(); + var target=player.getEnemies().randomGet(); + if(card&&target){ + event.num++; + target.addExpose(0.1); + player.useCard(card,target); + event.redo(); + } + 'step 2' + if(event.num){ + player.draw(event.num); + } + }, + ai:{ + effect:{ + player:function(card,player){ + if(_status.currentPhase!=player) return; + if(card.name=='sha'&&get.itemtype(card)=='card'&&!player.needsToDiscard()){ + return 'zeroplayertarget'; + } + } + }, + } + }, + xiaoyue2:{ + mod:{ + cardRespondable:function(card,player){ + if(_status.event.getParent(4).name=='xiaoyue'&&get.suit(card)!='heart') return false; + } + } + }, + huanlei:{ + trigger:{player:'damageEnd'}, + check:function(event,player){ + return get.damageEffect(event.source,player,player,'thunder')>0; + }, + filter:function(event,player){ + return event.source&&event.source.isIn()&&event.source.hp>player.hp; + }, + logTarget:'source', + content:function(){ + 'step 0' + trigger.source.damage('thunder'); + 'step 1' + trigger.source.draw(); + } + }, zisha:{ trigger:{source:'damageEnd'}, check:function(event,player){ - return get.attitude(player,event.player)<0&&!event.player.hasSkill('zisha2'); + return get.attitude(player,event.player)<0; }, filter:function(event,player){ - return event.player!=player&&event.player.isIn(); + return event.player!=player&&event.player.isIn()&&!event.player.hasSkill('zisha2'); }, logTarget:'player', content:function(){ @@ -102,7 +159,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mod:{ cardEnabled:function(card,player){ if(_status.currentPhase!=player) return; - if(get.cardCount(true,player)>=2) return false; + if(get.cardCount(true,player)>=player.storage.zisha2) return false; }, maxHandcard:function(player,num){ return num-1; @@ -110,10 +167,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, mark:true, intro:{ - content:'手牌上限-1且每回合最多使用两张牌(剩余$回合)' + content:'手牌上限-1且每回合最多使用$张牌(剩余$回合)' }, init:function(player){ - player.storage.zisha2=2; + player.storage.zisha2=3; }, trigger:{player:'phaseAfter'}, forced:true, @@ -156,13 +213,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return 0; }, content:function(){ - var targets=player.getEnemies().sortBySeat(); - var list=[]; + player.addExpose(0.1); + var targets=player.getEnemies(); for(var i=0;i1) return [0,0,0,0]; + if(num>1) return 'zeroplayertarget'; } } } @@ -2934,7 +2997,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ types.add(get.type(player.storage.shuiyun[i],'trick')); } if(!types.contains(get.type(card,'trick'))){ - return [0,0,0,0]; + return 'zeroplayertarget'; } } } @@ -3997,11 +4060,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ pal_mingxiu:'明绣', pal_jushifang:'居十方', + xiaoyue:'啸月', + xiaoyue_info:'锁定技,每轮开始时,若你手牌中有杀,你将手牌中的杀依次对随机敌方角色使用,然后摸等量的牌', + leiyin:'雷印', + leiyin_info:'出牌阶段限一次,你可以弃置两张手牌,并对一名体力值不小于你的随机敌方角色造成一点雷属性伤害,然后距离目标1以内的所有其他角色随机弃置一张手牌', + xhuanlei:'唤雷', + xhuanlei_info:'每当你受到一次伤害,若伤害来源体力值大于你,你可以对其造成一点雷属性伤害,然后其摸一张牌', zisha:'紫煞', zisha2:'紫煞', - zisha_info:'每当你对其他角色造成一次伤害,你可以令目标获得一枚紫煞标记;拥有紫煞标记的角色手牌上限-1且每回合最多使用两张牌,效果持续两回合', + zisha_info:'每当你对其他角色造成一次伤害,你可以令目标获得三枚紫煞标记;拥有紫煞标记的角色手牌上限-1,每回合最多使用X张牌(X为紫煞标记数),每个结束阶段失去一枚紫煞标记', xtanxi:'探息', - xtanxi_info:'出牌阶段限一次,你可以弃置一张手牌,然后从每名敌方角色的手牌中获得随机一张与之同名的牌(如果有的话)', + xtanxi_info:'出牌阶段限一次,你可以弃置一张手牌,然后随机选择一名手牌中有与之同名的牌的敌方角色,观看其手牌并获得任意一张', linghuo:'灵火', linghuo_info:'每两轮限一次,在一名其他角色的结束阶段,若其本回合内造成过伤害,你可以对其造成一点火属性伤害', guijin:'归烬', diff --git a/character/yijiang.js b/character/yijiang.js index 91594224a..d9e2ef74d 100644 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -1861,8 +1861,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ effect:{ player:function(card,player){ if(_status.currentPhase!=player) return; - if(card.name=='sha'&&player.countCards('h')<=player.hp&&!player.storage.chunlao.length){ - return [0,0,0,0]; + if(card.name=='sha'&&!player.needsToDiscard()&&!player.storage.chunlao.length){ + return 'zeroplayertarget'; } } }, @@ -5436,7 +5436,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ effect:{ target:function(card,player,target,current){ - if(get.type(card)=='trick'||card.name=='sha') return [0,0,0,0]; + if(get.type(card)=='trick'||card.name=='sha') return 'zeroplayertarget'; } } } diff --git a/character/yxs.js b/character/yxs.js index 6de612fb0..384b30869 100644 --- a/character/yxs.js +++ b/character/yxs.js @@ -1260,7 +1260,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ effect:{ target:function(card,player,target,current){ - if(get.type(card)=='trick'||card.name=='sha') return [0,0,0,0]; + if(get.type(card)=='trick'||card.name=='sha') return 'zeroplayertarget'; } } } diff --git a/game/game.js b/game/game.js index cde35c366..2ae966b29 100644 --- a/game/game.js +++ b/game/game.js @@ -14449,9 +14449,11 @@ } } if(result.card||!result.skill){ + result.used=result.card||result.cards[0]; this.useCard(result.card,result.cards,result.targets,result.skill).oncard=event.oncard; } else if(result.skill){ + result.used=result.skill; this.useSkill(result.skill,result.cards,result.targets); } }, @@ -14770,7 +14772,7 @@ next.player=this; next.targets=targets; next.animation=animation; - if(get.itemtype(position)=='cards'){ + if(Array.isArray(position)){ next.cards=position; } else{ @@ -16096,12 +16098,13 @@ if(this.hasSkill(skill)&&this.tempSkills[skill]==undefined) return; this.addSkill(skill,checkConflict,true); this.skills.remove(skill); - this.tempSkills[skill]=expire; if(!expire){ expire='phaseAfter'; } - else if(typeof expire=='string'){ + this.tempSkills[skill]=expire; + + if(typeof expire=='string'){ lib.hookmap[expire]=true; } else if(Array.isArray(expire)){ diff --git a/mode/chess.js b/mode/chess.js index 4d7894ede..9422ffd32 100644 --- a/mode/chess.js +++ b/mode/chess.js @@ -4699,7 +4699,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ if(card.name=='shunshou') return; if(card.name=='yuanjiao') return; if(card.name=='yiyi') return; - if(!player.hasSkill('cangming2')) return [0,0,0,0]; + if(!player.hasSkill('cangming2')) return 'zeroplayertarget'; } } }, @@ -4874,7 +4874,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ if(lib.filter.targetEnabled({name:'sha'},player,game.players[i])&& get.attitude(player,game.players[i])<0){ num++; - if(num>1) return [0,0,0,0]; + if(num>1) return 'zeroplayertarget'; } } }