diff --git a/card/hearth.js b/card/hearth.js index e4de72939..3598fc002 100644 --- a/card/hearth.js +++ b/card/hearth.js @@ -379,14 +379,16 @@ card.hearth={ tanshezhiren:{ fullskin:true, type:'trick', - enable:function(){ + enable:function(card,player){ + if(game.players.length<3) return false; for(var i=0;i0; + return target.num('h')>0&&target!=player; }, selectTarget:-1, multitarget:true, @@ -639,7 +641,7 @@ card.hearth={ xingjiegoutong:'星界沟通', xingjiegoutong_info:'增加一点体力上限并回复一点体力,弃置你的所有手牌', tanshezhiren:'弹射之刃', - tanshezhiren_info:'弃置一名随机角色的手牌,重复此过程直到有一名角色失去最后一张手牌(最多重复10次)', + tanshezhiren_info:'限场存活角色不小于3时使用,弃置一名随机角色(不含你)的手牌,重复此过程直到有一名角色失去最后一张手牌(最多重复10次)', chuansongmen:'传送门', chuansongmen_info:'摸一张牌,若你能立即使用之,则将此牌回手(每回合最多使用3次)', dunpaigedang:'盾牌格挡', diff --git a/card/yunchou.js b/card/yunchou.js index a391256b4..470715eef 100644 --- a/card/yunchou.js +++ b/card/yunchou.js @@ -20,6 +20,7 @@ card.yunchou={ order:10, result:{ target:function(player,target){ + if(target==player&&target.num('h',{type:'equip'})) return 2.5; if(target.hasSkill('mujiaren_skill')) return 2; return 1; } @@ -42,15 +43,27 @@ card.yunchou={ var es=target.get('e'); var list=get.typeCard('hslingjian'); var cards=[]; + var time=0; for(var i=0;i0; + }, + filterTarget:function(card,player,target){ + return target.num('he')>0; + }, + check:function(card){ + return 5-ai.get.value(card); + }, + content:function(){ + target.discard(target.get('he').randomGet()); + }, + ai:{ + order:5, + result:{ + target:function(player,target){ + var dh=player.num('he')-target.num('he'); + if(dh>0){ + return -Math.sqrt(dh); + } + return 0; + } + } + } + }, + hslingjian_zhongxinghujia_equip1:{ + trigger:{source:'damageEnd'}, + check:function(event,player){ + return !player.get('e','2'); + }, + filter:function(event){ + return event.card&&event.card.name=='sha'; + }, + content:function(){ + var card=game.createCard(get.inpile('equip2').randomGet()); + player.equip(card); + player.$draw(card); + game.delay(); + } + }, + hslingjian_zhongxinghujia_equip2:{ + trigger:{player:'damageEnd'}, + check:function(event,player){ + return ai.get.attitude(player,event.source)<0; + }, + filter:function(event){ + return event.card&&event.card.name=='sha'&&event.source&&event.source.get('e','2'); + }, + content:function(){ + player.line(trigger.source,'green'); + trigger.source.discard(trigger.source.get('e','2')); + } + }, + hslingjian_zhongxinghujia_equip3:{ + mod:{ + globalTo:function(from,to,distance){ + if(to.get('e','2')) return distance+1; + } + } + }, + hslingjian_zhongxinghujia_equip4:{ + mod:{ + globalFrom:function(from,to,distance){ + if(from.get('e','2')) return distance-1; + } + } + }, + hslingjian_zhongxinghujia_equip5:{ + enable:'phaseUse', + usable:1, + filterCard:true, + position:'he', + filterTarget:true, + selectCard:2, + filter:function(event,player){ + return player.num('he')>=2; + }, + check:function(card){ + return 5-ai.get.value(card); + }, + content:function(){ + var card=game.createCard(get.inpile('equip2').randomGet()); + target.equip(card); + target.$draw(card); + game.delay(); + }, + ai:{ + order:1, + result:{ + target:function(player,target){ + if(target.get('e','2')) return 0; + return 1; + } + } + } + }, + hslingjian_jinjilengdong_equip1:{ + trigger:{source:'damageEnd'}, + check:function(event,player){ + if(event.player.isTurnedOver()){ + return ai.get.attitude(player,event.player)>0; + } + return ai.get.attitude(player,event.player)<=0; + }, + filter:function(event){ + return event.card&&event.card.name=='sha'&&event.player&&event.player.isAlive(); + }, + logTarget:function(event){ + return event.player; + }, + content:function(){ + trigger.player.draw(2); + trigger.player.turnOver(); + } + }, + hslingjian_jinjilengdong_equip2:{ + trigger:{player:'damageEnd'}, + check:function(event,player){ + if(event.player.isTurnedOver()){ + return ai.get.attitude(player,event.source)>0; + } + return ai.get.attitude(player,event.source)<=0; + }, + filter:function(event){ + return event.card&&event.card.name=='sha'&&event.source&&event.source.isAlive(); + }, + logTarget:function(event){ + return event.source; + }, + content:function(){ + player.line(trigger.source,'green'); + trigger.source.draw(2); + trigger.source.turnOver(); + } + }, + hslingjian_jinjilengdong_equip3:{ + mod:{ + globalTo:function(from,to,distance){ + if(to.isTurnedOver()) return distance+2; + } + } + }, + hslingjian_jinjilengdong_equip4:{ + mod:{ + globalFrom:function(from,to,distance){ + if(from.isTurnedOver()) return distance-2; + } + } + }, + hslingjian_jinjilengdong_equip5:{ + trigger:{player:'phaseAfter'}, + direct:true, + filter:function(event,player){ + return !player.isTurnedOver(); + }, + content:function(){ + "step 0" + player.chooseTarget('是否发动【冰冻】?',function(card,player,target){ + return player!=target&&!target.isTurnedOver(); + }).ai=function(target){ + return Math.max(0,-ai.get.attitude(player,target)-2); + }; + "step 1" + if(result.bool){ + player.logSkill('hslingjian_jinjilengdong_equip5',result.targets); + player.turnOver(); + result.targets[0].turnOver(); + game.asyncDraw([player,result.targets[0]],2); + } + }, + }, hslingjian_yinmilichang_equip1:{}, hslingjian_yinmilichang_equip2:{}, hslingjian_yinmilichang_equip3:{}, @@ -1025,6 +1253,7 @@ card.yunchou={ }, _lingjianduanzao:{ enable:'phaseUse', + position:'he', prompt:function(event){ var lingjians=[],types=[]; var hs=event.player.get('h'); @@ -1038,10 +1267,10 @@ card.yunchou={ for(var i=0;i'; @@ -1148,7 +1377,6 @@ card.yunchou={ lib.card[name].filterTarget=true; lib.card[name].selectTarget=1; lib.card[name].range={global:1}; - lib.card[name].vanish=true; var str; if(cards.length==2){ str=lib.translate[cards[0].name+'_duanzao2']+lib.translate[cards[1].name+'_duanzao2']; @@ -1168,7 +1396,7 @@ card.yunchou={ for(var i=0;i0; + } return ai.get.attitude(player,event.player)<=0; }, + logTarget:function(event){ + return event.player; + }, content:function(){ trigger.player.draw(2); trigger.player.turnOver(); diff --git a/character/swd.js b/character/swd.js index 8c21113e0..d4ab60404 100755 --- a/character/swd.js +++ b/character/swd.js @@ -2517,7 +2517,7 @@ character.swd={ order:8, } }, - mufeng:{ + mufeng_old:{ init:function(player){ player.storage.mufeng=0; }, @@ -2571,35 +2571,15 @@ character.swd={ } } }, - mufeng_old:{ - priority:9, + mufeng:{ + trigger:{global:'phaseEnd'}, filter:function(event,player){ - return event.player!=player&&event.targets&&event.targets.length>1; + return event.player!=player&&event.player.num('h')>player.num('h'); }, - check:function(event,player){ - return get.tag(event.card,'multineg')||ai.get.effect(player,event.card,event.player,player)<=0; - }, - trigger:{target:'useCardToBefore'}, + frequent:true, content:function(){ - trigger.untrigger(); - trigger.finish(); - player.draw(); + player.draw(); }, - ai:{ - effect:{ - target:function(card,player,target){ - if(get.type(card)!='trick') return; - if(card.name=='yihuajiemu'||card.name=='tiesuo'){ - if(target.hp==target.maxHp) return [0,0]; - return [0,1]; - } - if(get.tag(card,'multineg')){ - if(target.hp==target.maxHp) return [0,0]; - return [0,2]; - } - } - } - } }, jiying:{ // trigger:{player:'respond'}, @@ -5261,7 +5241,10 @@ character.swd={ player.updateMarks(); game.log(player,'学习了','【'+get.translation(skill)+'】'); }, - group:'tianshu2' + group:'tianshu2', + ai:{ + threaten:2 + } }, tianshu2:{ enable:'phaseUse', @@ -6301,15 +6284,17 @@ character.swd={ lanzhi:{ trigger:{source:'damageBefore'}, filter:function(event,player){ - return player.skills.contains('lanzhi2')==false&&event.player!=player; + return event.player!=player; }, prompt:function(event){ return '是否对'+get.translation(event.player)+'发动【兰芷】?'; }, check:function(event,player){ if(event.source==player){ - if(event.num>1) return ai.get.attitude(player,event.player)>=0; - return ai.get.attitude(player,event.player)>=-2; + if(player.hp==1&&event.player.hp>1) return true; + var att=ai.get.attitude(player,event.player); + if(player.hp==player.maxHp) return att>0; + return att>=0; } else{ if(player.hp==1||event.num>1) return true; @@ -6320,8 +6305,7 @@ character.swd={ content:function(){ trigger.untrigger(); trigger.finish(); - trigger.source.draw(2); - player.addTempSkill('lanzhi2','phaseAfter'); + player.recover(); }, }, lanzhi2:{}, @@ -7904,7 +7888,8 @@ character.swd={ qimou:'奇谋', qimou_info:'每当你于回合外受到一次伤害,你可以摸一张牌,并立即使用之', mufeng:'沐风', - mufeng_info:'锁定技,每当你于回合外失去牌,你的防御距离+1;若防御距离的变化值超过了存活角色数的一半,则降至0', + mufeng_info:'在一名角色的回合结束阶段,若你的手牌数比其少,你可以摸一张牌', + mufeng_old_info:'锁定技,每当你于回合外失去牌,你的防御距离+1;若防御距离的变化值超过了存活角色数的一半,则降至0', lexue:'乐学', lexue_info:'回合内,你随机获得制衡、集智、缔盟、驱虎中的一个技能;回合外,你随机获得遗计、急救、鬼道、反馈中的一个技能', mingfu:'冥缚', @@ -8080,7 +8065,8 @@ character.swd={ guxing_info:'出牌阶段,你可以将最后至多X张手牌当杀使用,此杀无视距离且可以指定至多3个目标,每造成一次伤害,你摸一张牌,X为你已损失的体力值且至少为1。', tianlun_info:'任意一名角色的判定生效前,你可以弃置一张场上角色的判定牌代替之', hlongyin_info:'出牌阶段,你可以弃置任意张颜色相同且点数不同的牌,并获得逆时针座位距离与卡牌点数相同的角色区域内的一张牌。每阶段限一次', - lanzhi_info:'每当你即将造成伤害,可以防止此伤害,然后摸两张牌。每回合限发动一次。', + lanzhi_info:'你对一名其他角色造成伤害时,你可以防止此伤害,然后回复一点体力', + lanzhi_old_info:'每当你即将造成伤害,可以防止此伤害,然后摸两张牌。每回合限发动一次。', tianhuo_info:'出牌阶段,你可以令所有角色弃置其判定区域内的牌,并受到没有来源的等量火焰伤害,每阶段限一次', huanyin_info:'锁定技,每当你成为其他角色的卡牌的目标时,你进行一次判定,若为黑桃则取消之,若为红桃你摸一张牌', luomu_info:'锁定技,每当你造成伤害时,受伤害角色随机弃置一张牌', @@ -8101,7 +8087,7 @@ character.swd={ tanlin_info:'出牌阶段限一次,你可以与一名其他角色进行拼点,若你赢,你获得对方拼点牌、对该角色使用卡牌无视距离且可以额外使用一张杀直到回合结束,若你没赢,你受到该角色的一点伤害。', pozhen_info:'每当你受到一次伤害,若你的手牌数大于伤害来源,你可以弃置X张手牌对其造成一点伤害;若你的手牌数小于伤害来源,你可以弃置其X张手牌。X为你与伤害来源的手牌数之差。', yunchou_info:'出牌阶段限一次,你可以弃置任意张手牌,并弃置一张其他角色的手牌,你弃置的手牌中每有一张与此牌的颜色相同,你摸一张牌,否则对方摸一张牌', - tianshu_info:'每当你使用卡牌指定惟一目标时,你可以学习该目标的一项随机技能;出牌阶段,你可以装备一项已学习的技能', + tianshu_info:'每当你使用卡牌结算完毕后,若此牌指定了惟一目标,你可以学习该目标的一项随机技能;出牌阶段,你可以装备一项已学习的技能', luomei_info:'每当你使用或打出一张梅花花色的牌,你可以摸一张牌', xingdian_info:'出牌阶段限一次,你可以弃置一张手牌,然后指定至多两名角色令其各弃置一张牌', yulin_info:'每当你即将受到伤害,你可以弃置一张装备牌抵消此伤害', diff --git a/game/game.js b/game/game.js index 5587d59ea..ba3de99a3 100755 --- a/game/game.js +++ b/game/game.js @@ -16054,7 +16054,12 @@ game.log(player,'发动了','【'+get.skillTranslation(event.skill,player)+'】'); } else{ - player.logSkill(event.skill); + if(info.logTarget){ + player.logSkill(event.skill,info.logTarget(trigger,player)); + } + else{ + player.logSkill(event.skill); + } } } } @@ -26768,6 +26773,9 @@ if(type.indexOf('equip')==0&&type.length==6){ if(get.subtype(lib.inpile[i])==type) list.push(lib.inpile[i]); } + else if(type.indexOf('hslingjian')==0&&type.length==11){ + if(get.subtype(lib.inpile[i])==type) list.push(lib.inpile[i]); + } else{ if(get.type(lib.inpile[i])==type) list.push(lib.inpile[i]); } @@ -26781,6 +26789,9 @@ if(type.indexOf('equip')==0&&type.length==6){ if(get.subtype(i)==type) list.push(i); } + else if(type.indexOf('hslingjian')==0&&type.length==11){ + if(get.subtype(i)==type) list.push(i); + } else{ if(get.type(i)==type) list.push(i); } @@ -27286,6 +27297,8 @@ return lib.card[obj.name].type; }, subtype:function(obj){ + if(typeof obj=='string') obj={name:obj}; + if(typeof obj!='object') return; if(!lib.card[obj.name]) return; return lib.card[obj.name].subtype; }, diff --git a/game/update.js b/game/update.js index cc910350a..49ba0beb2 100644 --- a/game/update.js +++ b/game/update.js @@ -11,6 +11,7 @@ window.noname_update={ 'character/swd.js', 'character/sp.js', 'card/swd.js', + 'card/hearth.js', 'card/yunchou.js', 'layout/default/layout.css', 'theme/woodden/style.css', diff --git a/layout/default/layout.css b/layout/default/layout.css index 1f65db949..8072c6325 100755 --- a/layout/default/layout.css +++ b/layout/default/layout.css @@ -608,7 +608,7 @@ div:not(.handcards)>.card>.info>span, display: block !important; } /*--------窗口--------*/ -.dialog{text-align: center;z-index:4;transition-property:opacity,background,box-shadow;line-height: 18px;} +.dialog{text-align: center;z-index:4;transition-property:opacity,background,box-shadow;} .dialog{width: calc(90% - 420px);height: calc(100% / 3 - 160px / 3 + 120px);} .dialog.fullheight{height:calc(100% - 80px) !important;top:40px !important} .dialog.fullwidth{left:calc(5% + 60px) !important;width:calc(90% - 120px) !important}