From 1eb2577ae77668f9b6e982ac232662e4e8c5860f Mon Sep 17 00:00:00 2001 From: libccy Date: Sat, 21 Nov 2015 13:30:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E5=B0=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.MD | 5 +- audio/die/{yanliangwenchou.mp3 => yanwen.mp3} | Bin audio/die/{jvshou.mp3 => yj_jushou.mp3} | Bin audio/skill/xinpojun1.mp3 | Bin 0 -> 15604 bytes audio/skill/xinpojun2.mp3 | Bin 0 -> 8980 bytes card/hearth.js | 4 +- card/standard.js | 11 +- character/fire.js | 2 +- character/gujian.js | 22 +- character/hearth.js | 219 +- character/jiange.js | 5 +- character/mountain.js | 15 +- character/rank.js | 10 +- character/refresh.js | 8 +- character/sp.js | 462 +++- character/standard.js | 2 + character/swd.js | 103 +- character/xianjian.js | 17 +- character/yijiang.js | 2014 ++++++++++++++++- character/yxs.js | 12 +- game/game.js | 216 +- image/card/mengjing_feicuiyoulong.jpg | Bin 0 -> 61813 bytes image/card/mengjing_huanxiaojiemei.jpg | Bin 0 -> 72862 bytes image/card/mengjing_mengjing.jpg | Bin 0 -> 81406 bytes image/card/mengjing_mengye.jpg | Bin 0 -> 53319 bytes image/card/mengjing_mengye.png | Bin 0 -> 189812 bytes image/card/mengjing_suxing.jpg | Bin 0 -> 73858 bytes image/character/default/boss_liubei.jpg | Bin 185804 -> 39732 bytes image/character/default/boss_shuijing.jpg | Bin 352782 -> 15199 bytes image/character/default/caorui.jpg | Bin 0 -> 16091 bytes image/character/default/caoxiu.jpg | Bin 0 -> 14505 bytes image/character/default/caozhen.jpg | Bin 0 -> 15322 bytes image/character/default/chengpu.jpg | Bin 0 -> 16943 bytes image/character/default/gongsunyuan.jpg | Bin 0 -> 12572 bytes image/character/default/guanping.jpg | Bin 0 -> 14259 bytes image/character/default/guotufengji.jpg | Bin 0 -> 14258 bytes image/character/default/hanhaoshihuan.jpg | Bin 0 -> 25876 bytes image/character/default/hs_malygos.jpg | Bin 23376 -> 23356 bytes image/character/default/hs_ysera.jpg | Bin 0 -> 15909 bytes image/character/default/liaohua.jpg | Bin 0 -> 14953 bytes image/character/default/liuchen.jpg | Bin 0 -> 11075 bytes image/character/default/panzhangmazhong.jpg | Bin 0 -> 24665 bytes image/character/default/quancong.jpg | Bin 0 -> 14055 bytes image/character/default/sunxiu.jpg | Bin 0 -> 18900 bytes image/character/default/wuyi.jpg | Bin 0 -> 14956 bytes image/character/default/zhangyi.jpg | Bin 0 -> 13992 bytes image/character/default/zhongyao.jpg | Bin 0 -> 13237 bytes image/character/default/zhuran.jpg | Bin 19593 -> 10505 bytes image/character/default/zhuzhi.jpg | Bin 0 -> 13098 bytes image/character/fullskin/caorui.jpg | Bin 0 -> 38795 bytes image/character/fullskin/caoxiu.jpg | Bin 0 -> 30481 bytes image/character/fullskin/caozhen.jpg | Bin 0 -> 42995 bytes image/character/fullskin/chengpu.jpg | Bin 0 -> 37998 bytes image/character/fullskin/gaoshun.jpg | Bin 0 -> 29304 bytes image/character/fullskin/gongsunyuan.jpg | Bin 0 -> 36472 bytes image/character/fullskin/guanping.jpg | Bin 0 -> 39814 bytes image/character/fullskin/guotufengji.jpg | Bin 0 -> 36997 bytes image/character/fullskin/hanhaoshihuan.jpg | Bin 0 -> 42682 bytes image/character/fullskin/hs_malygos.jpg | Bin 64412 -> 63553 bytes image/character/fullskin/hs_ysera.jpg | Bin 0 -> 84820 bytes image/character/fullskin/liaohua.jpg | Bin 0 -> 37626 bytes image/character/fullskin/liuchen.jpg | Bin 0 -> 35757 bytes image/character/fullskin/panzhangmazhong.jpg | Bin 0 -> 43741 bytes image/character/fullskin/quancong.jpg | Bin 0 -> 32672 bytes image/character/fullskin/sunxiu.jpg | Bin 0 -> 38846 bytes image/character/fullskin/wuyi.jpg | Bin 0 -> 36679 bytes image/character/fullskin/zhangyi.jpg | Bin 0 -> 41886 bytes image/character/fullskin/zhongyao.jpg | Bin 0 -> 27777 bytes image/character/fullskin/zhoucang.jpg | Bin 40980 -> 36932 bytes image/character/fullskin/zhuran.jpg | Bin 0 -> 34154 bytes image/character/fullskin/zhuzhi.jpg | Bin 0 -> 39510 bytes layout/default/layout.css | 7 +- layout/default/menu.css | 23 +- layout/newlayout/global.css | 3 + 74 files changed, 2956 insertions(+), 204 deletions(-) rename audio/die/{yanliangwenchou.mp3 => yanwen.mp3} (100%) rename audio/die/{jvshou.mp3 => yj_jushou.mp3} (100%) create mode 100644 audio/skill/xinpojun1.mp3 create mode 100644 audio/skill/xinpojun2.mp3 create mode 100644 image/card/mengjing_feicuiyoulong.jpg create mode 100644 image/card/mengjing_huanxiaojiemei.jpg create mode 100644 image/card/mengjing_mengjing.jpg create mode 100644 image/card/mengjing_mengye.jpg create mode 100644 image/card/mengjing_mengye.png create mode 100644 image/card/mengjing_suxing.jpg create mode 100644 image/character/default/caorui.jpg create mode 100644 image/character/default/caoxiu.jpg create mode 100644 image/character/default/caozhen.jpg create mode 100644 image/character/default/chengpu.jpg create mode 100644 image/character/default/gongsunyuan.jpg create mode 100644 image/character/default/guanping.jpg create mode 100644 image/character/default/guotufengji.jpg create mode 100644 image/character/default/hanhaoshihuan.jpg create mode 100644 image/character/default/hs_ysera.jpg create mode 100644 image/character/default/liaohua.jpg create mode 100644 image/character/default/liuchen.jpg create mode 100644 image/character/default/panzhangmazhong.jpg create mode 100644 image/character/default/quancong.jpg create mode 100644 image/character/default/sunxiu.jpg create mode 100644 image/character/default/wuyi.jpg create mode 100644 image/character/default/zhangyi.jpg create mode 100644 image/character/default/zhongyao.jpg mode change 100755 => 100644 image/character/default/zhuran.jpg create mode 100644 image/character/default/zhuzhi.jpg create mode 100644 image/character/fullskin/caorui.jpg create mode 100644 image/character/fullskin/caoxiu.jpg create mode 100644 image/character/fullskin/caozhen.jpg create mode 100644 image/character/fullskin/chengpu.jpg create mode 100644 image/character/fullskin/gaoshun.jpg create mode 100644 image/character/fullskin/gongsunyuan.jpg create mode 100644 image/character/fullskin/guanping.jpg create mode 100644 image/character/fullskin/guotufengji.jpg create mode 100644 image/character/fullskin/hanhaoshihuan.jpg create mode 100644 image/character/fullskin/hs_ysera.jpg create mode 100644 image/character/fullskin/liaohua.jpg create mode 100644 image/character/fullskin/liuchen.jpg create mode 100644 image/character/fullskin/panzhangmazhong.jpg create mode 100644 image/character/fullskin/quancong.jpg create mode 100644 image/character/fullskin/sunxiu.jpg create mode 100644 image/character/fullskin/wuyi.jpg create mode 100644 image/character/fullskin/zhangyi.jpg create mode 100644 image/character/fullskin/zhongyao.jpg create mode 100644 image/character/fullskin/zhuran.jpg create mode 100644 image/character/fullskin/zhuzhi.jpg diff --git a/CHANGELOG.MD b/CHANGELOG.MD index 95a5fd24e..17e760257 100644 --- a/CHANGELOG.MD +++ b/CHANGELOG.MD @@ -1,5 +1,6 @@ 1.5.7 -对决模式改进 屏蔽强将选项 卡牌、卡背、体力条样式 -新武将(张鲁、士燮、马云騄、兀突骨、sp蔡文姬) +徐盛、步练师修改 +新武将(5个SP武将、补全一将成名) +安卓精简版(去掉配音、DIY武将及卡牌) diff --git a/audio/die/yanliangwenchou.mp3 b/audio/die/yanwen.mp3 similarity index 100% rename from audio/die/yanliangwenchou.mp3 rename to audio/die/yanwen.mp3 diff --git a/audio/die/jvshou.mp3 b/audio/die/yj_jushou.mp3 similarity index 100% rename from audio/die/jvshou.mp3 rename to audio/die/yj_jushou.mp3 diff --git a/audio/skill/xinpojun1.mp3 b/audio/skill/xinpojun1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a69c1a4118c5954006c65f1c2397933c0b3ec688 GIT binary patch literal 15604 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 Z-~ax%K6k$!F1tUsKg`$PZ~xyv{4XeyjV}NI literal 0 HcmV?d00001 diff --git a/audio/skill/xinpojun2.mp3 b/audio/skill/xinpojun2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..6ba348b5444bd320f3b26055dc23a46bbfe18f4c GIT binary patch literal 8980 zcmchdbyQSczsJwe-60{}-7O5Ibhm$P?(7Cj^i)a8Jb+z-T2TK*wrB9-^usUjRzr8XiV13hDtst3yP38m2qf zL7e3Aq>q*l&XJr`NsRejqDr}%qN#c=gUe)cRQ|+ZS41{MdEg;#WV!D$Of$dzeNxVw*2PydXvk?5wp zd1Qa%wH$E10yLM(d)|SH%Z&SkO5p5$V+S3ol^7J&I07R9(0K9O1cMUy$+*1;1L4>P z$KmZPqGsONQdaPJG-hl}%TIk_mIC3sqougdBS$^c&>3DJPDV9VOBU*Im1bB}K2^Uu zkh*zYb0XqRceU$oxl+d?3K>4j3m#+QyzmG7@0Eft^+EC+bwFjI9A&&bbABn0%|=1= zp8FAzvRu|9k{v3%wlo-2;doF+m!f_*>)K#)UUDNFqw^QqcmOwzAGUj386epf7UwALFJMT$%r!v zWn?aqguHbvUtM8M?`Uhc)4+_+%-9st<@V=Dc1o=WlqPI%vypPj)gc)URP&WNNvcWp zxQhf1^T;*S(NtcSOzv{x?ITD89~cRgjD*N{&f8o^EMM^4C2)1{m=$G>zR(A0G~j`c zq`o;~BeRDkKv_+nBG9d=HMdV~JjjRe%)?fCa@1EQxiYPu07^wol(u&q<1ZCmkj!-R zqm$Y)M=;{d{f#aW%hZb?Vt@fXf;9Do9#4hemZMW*$8BOl2Aq(PLalJ94zYnXiWa%{ z3D4j&hcV4@&WWs$Vqf}g`U@U=+?Z}_ADL3~3wFY^HKOaImwH))a*4tS&NYaoI>`Kv3ls;cGaM zwxZz|g;L}AU0W3m^LVa-P^$YSS!#Mb%fsLGo^v{K?lCu~n8z5;s@m0`C6jgGus0cA z@Py#39>C&wIyJ9&;wRzjo3-o*p17VmIp2Nuu>egh?IAE12t}pvK#5i`_#yss41Zje zlc#oOMD%&@L>)uJ( zhUqO=Rf$G*z1aW?xd&pZ$tX{YMBpJP5fgXA)tkhO*dNTXu6|Gg`=|R>^_}*;i=A$lX~=6T3-d`z@Cg}S4Xb=s zz_#NQ(s02uga>){fFB!s?~2E{aG;^>Q-z4~ZTxa+T>p4i<9OO!l~}pwM#s@wUkFJR zC%AcST3)CzVvCbnEw9rLoWD*z?wF2GfL3~T#2Iii%_Z{!F2t;Fzeqntx8&_EPYP-w z{`i&Xb)p=+vDQd(KG6&>pl2{qGQKOhi#9_#HtognyB6W2B~^wCp6@tTs80L^WJu5X zoe#xk@43GbE$RQEor3_6s?M82hfEYW@Nrh(&KRNvqpGCB00ThA>y5C6Nb`bkiN$yK zf);^0Yt)K8%;VR&?7vwf14_e6%;~01KY^~!7Y#3EVX>deOs?8$k+e!GCR>B|qGm>k z^mR2pJk`RDNk)o9l26;Ol@@Nn zQl6%ml0>)6Yu4DxUc(!d?D9&n!Cde?*5$zmZH-daDx}G<<*MvbMtgJcpeNT^+*;8U zCFs0cBOLK701C9-AxxJG;EdobDYENkNAFTA`}aZ2ba$NU6Xq%51W@D}3`H!T*Irzmxpky%h({0g^D z+4iR)yl;4%Z82uX+65rEB1}BpU#eX1B##D-E>uf>oE~L=$J67E-Ic@q+dDQRZ)+O# zC^h9$AKXnyFgJ_S>nr~W&5C%ZGoogKH2@U@KXnCu)tekMz3!$fCKmrIAzlgRx}4E5 zC-&UkB&bJPkL5KHq9rAPF;;t1R-W*{%tC$;?8Y3=%|YhD$b zR~4;D&#{cW*UThYN7ST!5+NY)XfZRLAofY-I$MEr_E~|x5yGB0Jh9uSZx<{(#hf6e zX4e=27UGtQ zc~m@>LGJZFBP^#&9(;2fi`z0ifAV4D%X=^T^d!^YY1TG+VGC1=xXP4sljIkb!P+(7 zgwxpQP+}@f-h+?qQMQY{uEP~EWh!OrOl5wQ&Wq{NkpUjcB6dDkBrsB{TU7H5h;IDI z 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 GC;tVo_1rrE literal 0 HcmV?d00001 diff --git a/card/hearth.js b/card/hearth.js index 53db6fde5..53ed4d568 100644 --- a/card/hearth.js +++ b/card/hearth.js @@ -534,7 +534,7 @@ card.hearth={ }, ai:{ order:4, - value:[6,3], + value:[8,3], useful:[6,3], result:{ target:function(player,target){ @@ -543,7 +543,7 @@ card.hearth={ var num=target.maxHp-target.hp; if(num<1) return 0; if(num==1) return 1; - if(target.hp==2) return 2.5; + if(target.hp==1) return 2.5; return 2; } } diff --git a/card/standard.js b/card/standard.js index 43802839e..4587324de 100755 --- a/card/standard.js +++ b/card/standard.js @@ -95,6 +95,7 @@ card.standard={ } else{ event.trigger('shaMiss'); + event.responded=result; } "step 2" if(result.bool==false&&!event.unhurt){ @@ -1122,7 +1123,7 @@ card.standard={ player.removeSkill('jiu'); event.jiu=true; } - player.chooseToUse('是否发动青龙偃月刀?',{name:'sha'},trigger.target,-1); + player.chooseToUse('是否发动青龙偃月刀?',{name:'sha'},trigger.target,-1).logSkill='qinglong'; "step 1" if(result.bool){ player.logSkill('qinglong'); @@ -1154,9 +1155,11 @@ card.standard={ }, content:function(){ "step 0" - player.chooseToDiscard('是否发动贯石斧?',2,'he',function(card){ + var next=player.chooseToDiscard('是否发动贯石斧?',2,'he',function(card){ return player.get('e',{subtype:'equip1'}).contains(card)==false; - }).ai= + }); + next.logSkill='guanshi_skill'; + next.ai= function(card){ if(ai.get.attitude(player,trigger.target)<0){ if(player.skills.contains('jiu')|| @@ -1170,7 +1173,6 @@ card.standard={ }; "step 1" if(result.bool){ - player.logSkill('guanshi_skill'); trigger.untrigger(); trigger.trigger('shaHit'); trigger._result.bool=false; @@ -1218,6 +1220,7 @@ card.standard={ bagua_skill:{ trigger:{player:'chooseToRespondBegin'}, filter:function(event,player){ + if(event.responded) return false; if(!event.filterCard({name:'shan'})) return false; if(event.parent.player.num('s','unequip')) return false; return true; diff --git a/character/fire.js b/character/fire.js index d051e7f1e..cea7b51e1 100755 --- a/character/fire.js +++ b/character/fire.js @@ -183,7 +183,7 @@ character.fire={ event.finish(); } "step 2" - if(result.bool){ + if(result.bool&&result.targets&&result.targets.length){ result.targets[0].damage(target); } }, diff --git a/character/gujian.js b/character/gujian.js index 9ff7d98c6..93c6cb7a2 100755 --- a/character/gujian.js +++ b/character/gujian.js @@ -60,7 +60,9 @@ character.gujian={ direct:true, content:function(){ "step 0" - player.chooseToDiscard('是否弃置一张黑色牌使伤害+1?',{color:'black'}).ai=function(card){ + var next=player.chooseToDiscard('是否弃置一张黑色牌使伤害+1?',{color:'black'}); + next.logSkill='zhongji'; + next.ai=function(card){ if(ai.get.attitude(player,trigger.player)<0){ return 7-ai.get.value(card); } @@ -68,7 +70,6 @@ character.gujian={ } "step 1" if(result.bool){ - player.logSkill('zhongji'); trigger.num++; } }, @@ -120,12 +121,13 @@ character.gujian={ }, content:function(){ "step 0" - player.chooseToDiscard('是否发动【戏蝶】?',[1,Math.min(3,player.num('h')-player.hp)]).ai=function(card){ + var next=player.chooseToDiscard('是否发动【戏蝶】?',[1,Math.min(3,player.num('h')-player.hp)]); + next.ai=function(card){ return 6-ai.get.value(card); } + next.logSkill='xidie'; "step 1" if(result.bool){ - player.logSkill('xidie'); player.storage.xidie=result.cards.length; } }, @@ -380,7 +382,9 @@ character.gujian={ priority:-5, content:function(){ "step 0" - player.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【晴岚】?','he').ai=function(card){ + var next=player.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【晴岚】?','he'); + next.logSkill='qinglan'; + next.ai=function(card){ if(trigger.num>1||!trigger.source){ if(ai.get.attitude(player,trigger.player)>0){ return 9-ai.get.value(card); @@ -403,7 +407,6 @@ character.gujian={ } "step 1" if(result.bool){ - player.logSkill('qinglan'); trigger.untrigger(); trigger.finish(); if(trigger.source){ @@ -644,15 +647,16 @@ character.gujian={ for(var i=0;i0; + }, + content:function(){ + player.discard(player.get('he')); + player.removeSkill('mengjing_mengye'); + }, + mark:'image', + intro:{ + content:'回合结束阶段,弃置所有牌' + } + }, zhanhou:{ init:function(player){ player.forcemin=true; @@ -778,11 +808,11 @@ character.hearth={ player:1 } }, - mod:{ - globalFrom:function(from,to,distance){ - return distance-from.hujia; - } - }, + // mod:{ + // globalFrom:function(from,to,distance){ + // return distance-from.hujia; + // } + // }, }, shijie:{ trigger:{player:'phaseEnd'}, @@ -1311,15 +1341,16 @@ character.hearth={ var val=ai.get.value(trigger.card); var suit=get.suit(trigger.card); var eff=ai.get.effect(trigger.target,trigger.card,trigger.player,player); - player.chooseToDiscard('是否对'+get.translation(trigger.player)+'使用的'+get.translation(trigger.card)+'发动【闷棍】?',function(card){ + var next=player.chooseToDiscard('是否对'+get.translation(trigger.player)+'使用的'+get.translation(trigger.card)+'发动【闷棍】?',function(card){ return get.suit(card)==suit; - }).ai=function(card){ + }); + next.logSkill=['mengun',trigger.player]; + next.ai=function(card){ if(eff>=0) return 0; return Math.min(8,1+val)-ai.get.value(card); } "step 1" if(result.bool){ - player.logSkill('mengun',trigger.player); game.log(get.translation(trigger.player)+'收回了'+get.translation(trigger.cards)); trigger.untrigger(); trigger.finish(); @@ -1385,10 +1416,11 @@ character.hearth={ direct:true, content:function(){ "step 0" - player.chooseToDiscard('是否发动【激活】?').ai=ai.get.unuseful2; + var next=player.chooseToDiscard('是否发动【激活】?'); + next.ai=ai.get.unuseful2; + next.logSkill='jihuo'; "step 1" if(result.bool){ - player.logSkill('jihuo'); player.storage.jihuo=true; } else{ @@ -1941,6 +1973,146 @@ character.hearth={ }, }, card:{ + mengjing_feicuiyoulong:{ + type:'mengjing', + image:'card/mengjing_feicuiyoulong', + color:'white', + opacity:1, + textShadow:'black 0 0 2px', + enable:true, + filterTarget:true, + content:function(){ + target.damage(2); + }, + ai:{ + order:5, + result:{ + target:-2 + }, + tag:{ + damage:2 + }, + useful:5, + value:10, + } + }, + mengjing_suxing:{ + type:'mengjing', + image:'card/mengjing_suxing', + color:'white', + opacity:1, + textShadow:'black 0 0 2px', + enable:true, + filterTarget:function(card,player,target){ + return player!=target; + }, + selectTarget:-1, + content:function(){ + target.loseHp(); + var he=target.get('he'); + if(he.length){ + target.discard(he.randomGets(2)); + } + }, + ai:{ + result:{ + target:-1, + }, + order:6, + useful:5, + value:10, + } + }, + mengjing_mengye:{ + type:'mengjing', + image:'card/mengjing_mengye', + color:'white', + opacity:1, + textShadow:'black 0 0 2px', + enable:true, + filterTarget:true, + content:function(){ + target.draw(); + target.addSkill('mengjing_mengye'); + }, + ai:{ + order:1, + useful:5, + value:10, + result:{ + target:function(player,target){ + if(target.skills.contains('mengjing_mengye')) return 0.5; + return -target.num('he'); + } + } + } + }, + mengjing_mengjing:{ + type:'mengjing', + image:'card/mengjing_mengjing', + color:'white', + opacity:1, + textShadow:'black 0 0 2px', + enable:true, + filterTarget:function(card,player,target){ + return !target.num('j','lebu')||target.num('e')>0; + }, + content:function(){ + 'step 0' + var es=target.get('e'); + if(es.length){ + target.gain(es,'gain2'); + } + 'step 1' + if(!target.num('j','lebu')){ + target.addJudge(game.createCard('lebu')); + } + }, + ai:{ + order:2, + useful:5, + value:10, + result:{ + target:function(player,target){ + var num=target.hp-target.num('he')-2; + if(num>-1) return -1; + if(target.hp<3) num--; + if(target.hp<2) num--; + if(target.hp<1) num--; + return num; + } + } + } + }, + mengjing_huanxiaojiemei:{ + type:'mengjing', + image:'card/mengjing_huanxiaojiemei', + color:'white', + opacity:1, + textShadow:'black 0 0 2px', + enable:true, + filterTarget:function(card,player,target){ + return target.hpplayer.hp; - player.chooseToDiscard('是否发动巧变路过弃牌阶段?').ai=function(card){ + var next=player.chooseToDiscard('是否发动巧变路过弃牌阶段?'); + next.logSkill='qiaobian'; + next.ai=function(card){ if(discard){ return 100-ai.get.useful(card); } @@ -431,7 +434,6 @@ character.mountain={ }; "step 1" if(result.bool){ - player.logSkill('qiaobian'); trigger.untrigger(); trigger.finish(); } @@ -795,10 +797,11 @@ character.mountain={ }, content:function(){ "step 0" - player.chooseToDiscard('he','是否发动悲歌?').ai=ai.get.unuseful2; + var next=player.chooseToDiscard('he','是否发动悲歌?'); + next.ai=ai.get.unuseful2; + next.logSkill='beige'; "step 1" if(result.bool){ - player.logSkill('beige'); trigger.player.judge(); } else{ diff --git a/character/rank.js b/character/rank.js index d7c315669..7272b0a61 100644 --- a/character/rank.js +++ b/character/rank.js @@ -52,6 +52,7 @@ window.characterRank={ 'hs_malygos', ], a:[ + 'hs_ysera', 'yxs_diaochan', 'swd_wangsiyue', 'swd_lanyin', @@ -87,7 +88,7 @@ window.characterRank={ 'zhoutai', ], am:[ - 'hs_xuefashi', + 'sp_caiwenji', 'manchong', 'swd_linyue', 'swd_fuyan', @@ -141,9 +142,12 @@ window.characterRank={ 'hs_siwangzhiyi', 'jg_huangyueying', 'hs_bilanyoulong', + 'zhanglu', ], bp:[ + 'shixie', 'yxs_mozi', + 'hs_xuefashi', 'xiahoushi', 'zhangsong', 'zhuhuan', @@ -170,6 +174,7 @@ window.characterRank={ 'jiangwei', 'liubei', 'mateng', + 'wutugu', 'swd_chunyuheng', 'hetaihou', 'hs_alleria', @@ -206,6 +211,7 @@ window.characterRank={ 'guyong', 'diy_xuhuang', 'sunquan', + 'hs_jgarrosh', ], b:[ 'pal_linyueru', @@ -231,7 +237,6 @@ window.characterRank={ 'sp_sunshangxiang', 're_lidian', 'jiangqing', - 'hs_jgarrosh', 'hs_lrexxar', 'mifuren', 'diy_huangzhong', @@ -269,6 +274,7 @@ window.characterRank={ 'zhouyu', 'guanyinping', 'dingfeng', + 'mayunlu', 'pangtong', 'zhugeliangwolong', 'shen_guanyu', diff --git a/character/refresh.js b/character/refresh.js index 5286fa304..92071f83c 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -962,12 +962,8 @@ character.refresh={ !lib.filter.autoRespondSha.call({player:player}); }, content:function(){ - "step 0" - player.chooseToUse({name:'sha'},'是否对'+get.translation(trigger.player)+'使用一张杀',trigger.player); - "step 1" - if(result.bool){ - player.logSkill('zhuhai'); - } + player.chooseToUse({name:'sha'},'是否对'+get.translation(trigger.player)+'使用一张杀', + trigger.player).logSkill='zhuhai'; } }, qianxin:{ diff --git a/character/sp.js b/character/sp.js index 18653478f..b5df4da28 100755 --- a/character/sp.js +++ b/character/sp.js @@ -36,9 +36,381 @@ character.sp={ sp_caiwenji:['female','wei',3,['chenqing','mozhi'],['fullskin']], }, skill:{ + chenqing:{ + trigger:{global:'dying'}, + priority:6, + filter:function(event,player){ + return event.player.hp<=0&&!player.skills.contains('chenqing2'); + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget('是否发动【陈情】?',function(card,player,target){ + return target!=player&&target!=trigger.player; + }).ai=function(target){ + if(ai.get.attitude(player,trigger.player)>0){ + var att1=ai.get.attitude(target,player); + var att2=ai.get.attitude(target,trigger.player); + var att3=ai.get.attitude(player,target); + if(att3<0) return 0; + return att1/2+att2+att3; + } + else{ + return ai.get.attitude(player,target); + } + } + 'step 1' + if(result.bool){ + player.addTempSkill('chenqing2',{player:'phaseBegin'}); + event.target=result.targets[0]; + event.target.draw(4); + player.logSkill('chenqing',event.target); + } + else{ + event.finish(); + } + 'step 2' + var target=event.target; + var tosave=trigger.player; + var att=ai.get.attitude(target,tosave); + var hastao=target.num('h','tao'); + target.chooseToDiscard(4,true).ai=function(card){ + if(!hastao&&att>0){ + var suit=get.suit(card); + for(var i=0;i0&&player.num('h')>0; + }, + content:function(){ + if(player.storage.mozhi.length&&player.num('h')){ + var card=player.storage.mozhi.shift(); + card={name:card.name,nature:card.nature,suit:card.suit,number:card.number}; + if(lib.filter.cardEnabled(card)){ + for(var i=0;i0; + }, + content:function(){ + player.loseHp(player.storage.ranshang); + } + }, + hanyong:{ + trigger:{player:'useCard'}, + filter:function(event,player){ + return player.storage.hanyong>player.hp&&event.card&& + (event.card.name=='nanman'||event.card.name=='wanjian'); + }, + content:function(){ + player.addTempSkill('hanyong3','useCardAfter'); + }, + init:function(player){ + player.storage.hanyong=0; + }, + group:'hanyong2' + }, + hanyong2:{ + trigger:{player:'phaseBegin'}, + forced:true, + popup:false, + silent:true, + content:function(){ + player.storage.hanyong++; + } + }, + hanyong3:{ + trigger:{source:'damageBegin'}, + forced:true, + filter:function(event,player){ + return event.card&&(event.card.name=='nanman'||event.card.name=='wanjian'); + }, + content:function(){ + trigger.num++; + } + }, + yishe:{ + trigger:{player:'phaseEnd'}, + init:function(player){ + player.storage.yishe=[]; + }, + filter:function(event,player){ + return !player.storage.yishe||!player.storage.yishe.length; + }, + intro:{ + content:'cards' + }, + content:function(){ + 'step 0' + player.draw(2); + player.chooseCard(2,'he',true,'选择两张牌作为“米”'); + 'step 1' + player.markSkill('yishe'); + player.storage.yishe=result.cards; + player.lose(result.cards,ui.special); + game.addVideo('storage',player,['yishe',get.cardsInfo(player.storage.yishe),'cards']); + } + }, + bushi:{ + trigger:{player:'damageEnd',source:'damageEnd'}, + filter:function(event,player){ + return player.storage.yishe&&player.storage.yishe.length&&event.player.isAlive(); + }, + direct:true, + content:function(){ + 'step 0' + trigger.player.chooseCardButton('选择获得一张“米”',player.storage.yishe); + 'step 1' + if(result.bool){ + player.logSkill('bushi'); + trigger.player.gain(result.buttons[0].link,'gain2'); + player.storage.yishe.remove(result.buttons[0].link); + game.addVideo('storage',player,['yishe',get.cardsInfo(player.storage.yishe),'cards']); + if(player.storage.yishe.length==0){ + player.recover(); + player.unmarkSkill('yishe'); + } + } + } + }, + midao:{ + unique:true, + trigger:{global:'judge'}, + direct:true, + filter:function(event,player){ + return player.storage.yishe&&player.storage.yishe.length&&event.player.isAlive(); + }, + content:function(){ + "step 0" + var list=player.storage.yishe; + var dialog=ui.create.dialog(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+get.translation(trigger.player.judging)+ + ',是否发动【米道】?',list,'hidden'); + player.chooseButton(dialog,function(button){ + var card=button.link; + var trigger=_status.event.parent._trigger; + var player=_status.event.player; + var result=trigger.judge(card)-trigger.judge(trigger.player.judging); + var attitude=ai.get.attitude(player,trigger.player); + return result*attitude; + }); + "step 1" + if(result.bool){ + event.card=result.buttons[0].link; + player.$throw(event.card,1000); + player.storage.yishe.remove(result.buttons[0].link); + game.addVideo('storage',player,['yishe',get.cardsInfo(player.storage.yishe),'cards']); + if(player.storage.yishe.length==0){ + player.recover(); + player.unmarkSkill('yishe'); + } + if(event.card.clone){ + event.card.clone.classList.add('thrownhighlight'); + game.addVideo('highlightnode',player,get.cardInfo(event.card)); + } + } + "step 2" + if(event.card){ + player.logSkill('midao',trigger.player); + ui.discardPile.appendChild(trigger.player.judging); + trigger.player.judging=event.card; + trigger.position.appendChild(event.card); + game.log(get.translation(trigger.player)+'的判定牌改为'+get.translation(event.card)); + event.card.expired=true; + game.delay(2); + } + }, + ai:{ + tag:{ + rejudge:0.6 + } + } + }, + fengpo:{ + trigger:{player:['shaBegin','juedouBegin']}, + filter:function(event,player){ + if(player.skills.contains('fengpo3')) return false; + return event.target&&event.targets&&event.targets.length==1; + }, + direct:true, + content:function(){ + 'step 0' + player.addTempSkill('fengpo3','phaseAfter'); + player.chooseControl('draw_card','加伤害','cancel', + ui.create.dialog('是否发动【凤魄】?','hidden')); + 'step 1' + if(result.control&&result.control!='cancel'){ + player.logSkill('fengpo'); + var nd=trigger.target.num('h',{suit:'diamond'}); + if(result.control=='draw_card'){ + player.draw(nd); + } + else{ + player.addTempSkill('fengpo2','useCardToAfter'); + player.storage.fengpo=nd; + } + } + } + }, + fengpo2:{ + trigger:{source:'damageBegin'}, + filter:function(event){ + return event.card&&(event.card.name=='sha'||event.card.name=='juedou')&& + event.parent.name!='_lianhuan'&&event.parent.name!='_lianhuan2'; + }, + forced:true, + content:function(){ + if(typeof player.storage.fengpo=='number'){ + trigger.num+=player.storage.fengpo; + } + } + }, + fengpo3:{}, biluan:{ trigger:{player:'phaseDrawBefore'}, + mark:true, + unique:true, + intro:{ + content:function(storage){ + if(storage>0){ + return '防御距离+'+storage; + } + else if(storage<0){ + return '防御距离'+storage; + } + else{ + return '无距离变化'; + } + } + }, + init:function(player){ + player.storage.biluan=0; + }, check:function(event,player){ + if(player.num('h')>player.hp) return true; + if(player.num('j','lebu')) return true; var ng=[]; for(var i=0;i1){ - nai++; + if(game.players[i]!=player){ + var dist=get.distance(game.players[i],player,'attack'); + if(dist<=1&&dist+ng>1){ + nai++; + } } } - console.log(nai); return nai>=2; }, filter:function(event,player){ for(var i=0;i1; + }, + forced:true, + content:function(){ + 'step 0' + player.chooseTarget(function(card,player,target){ + return target==player||target==trigger.player; + },true,'礼下:选择一个目标摸一张牌').ai=function(target){ + return target==player; + }.ai=function(target){ + return player==target?1:0; + }; + 'step 1' + if(result.targets.length){ + result.targets[0].draw(); + player.line(result.targets[0],'green'); + } + player.storage.biluan--; + game.addVideo('storage',player,['biluan',player.storage.biluan]); + } }, fuji:{ trigger:{global:'damageBegin'}, @@ -386,8 +800,7 @@ character.sp={ if(cards.length){ var dialog; if(event.isMine()){ - dialog=ui.create.dialog('是否发动【'+get.translation(event.name)+'】?'); - dialog.style.opacity='none'; + dialog=ui.create.dialog('是否发动【'+get.translation(event.name)+'】?','hidden'); dialog.add(cards); for(var i=0;i0){ return 7-ai.get.useful(card); } return -1; } + next.logSkill=['zhendu',trigger.player]; "step 1" if(result.bool){ - player.logSkill('zhendu',trigger.player); trigger.player.damage(); } else{ @@ -1448,16 +1866,17 @@ character.sp={ content:function(){ "step 0" var nono=(Math.abs(ai.get.attitude(player,trigger.player))<3); - player.chooseToDiscard('是否发动【骁果】?',{type:'basic'}).ai=function(card){ + var next=player.chooseToDiscard('是否发动【骁果】?',{type:'basic'}); + next.ai=function(card){ if(nono) return 0; if(ai.get.damageEffect(trigger.player,player,player)>0){ return 8-ai.get.useful(card); } return 0; } + next.logSkill=['xiaoguo',trigger.player]; "step 1" if(result.bool){ - player.logSkill('xiaoguo',trigger.player); var nono=(ai.get.damageEffect(trigger.player,player,trigger.player)>=0); trigger.player.chooseToDiscard('he',{type:'equip'}).ai=function(card){ if(nono){ @@ -2381,7 +2800,7 @@ character.sp={ if(current>0) return; if(target.num('h')==0) return 1.6; if(target.num('h')==1) return 1.2; - if(target.num('h')==2) return [0.8,0.5,0,-0.5]; + if(target.num('h')==2) return [0.8,0.2,0,-0.2]; return [0.4,0.7,0,-0.7]; } } @@ -2850,12 +3269,14 @@ character.sp={ zhanglu:'张鲁', wutugu:'兀突骨', mateng:'马腾', + sp_caiwenji:'蔡文姬', biluan:'避乱', biluan_info:'摸牌阶段开始时,若有其他角色与你距离不大于1,则你可以放弃摸牌。若如此做,其他角色与你距离+X(X为势力数)', lixia:'礼下', lixia_info:'锁定技,其他角色结束阶段开始时,若你不在其攻击范围内,你摸一张牌或令其摸一张牌。若如此做,其他角色与你的距离-1', yishe:'义舍', + yishe_bg:'米', yishe_info:'结束阶段开始时,若你的武将牌上没有牌,你可以摸两张牌。若如此做,你将两张牌置于武将牌上,称为“米”;当“米”移至其他区域后,若你的武将牌上没有“米”,你回复1点体力', bushi:'布施', midao:'米道', @@ -2868,6 +3289,7 @@ character.sp={ mozhi:'默识', mozhi_info:'结束阶段开始时,你可以将一张手牌当你本回合出牌阶段使用的第一张基本或非延时类锦囊牌使用。然后,你可以将一张手牌当你本回合出牌阶段使用的第二张基本或非延时类锦囊牌使用', ranshang:'燃殇', + ranshang2:'燃殇', ranshang_info:'锁定技,当你受到1点火焰伤害后,你获得1枚“燃”标记;结束阶段开始时,你失去X点体力(X为“燃”标记的数量)', hanyong:'悍勇', hanyong_info:'当你使用【南蛮入侵】或【万箭齐发】时,若你的体力值小于游戏轮数,你可以令此牌造成的伤害+1', diff --git a/character/standard.js b/character/standard.js index fe30bc155..92ab54d6f 100755 --- a/character/standard.js +++ b/character/standard.js @@ -46,6 +46,7 @@ character.standard={ unique:true, trigger:{player:'chooseToRespondBegin'}, filter:function(event,player){ + if(event.responded) return false; if(!player.isZhu) return false; if(event.filterCard({name:'shan'})==false) return false; for(var i=0;i0; + return target.num('h')>0&&get.distance(player,target)<=2; }).ai=function(target){ var att=ai.get.attitude(player,target); var hs=target.get('h'); @@ -665,9 +665,11 @@ character.swd={ "step 0" var yep=ai.get.attitude(player,trigger.player)<0&& trigger.player.num('h')>2; - player.chooseToDiscard(function(card){ + var next=player.chooseToDiscard(function(card){ return get.type(card)!='basic'; - },'是否对'+get.translation(trigger.player)+'发动【入梦】?','he').ai=function(card){ + },'是否对'+get.translation(trigger.player)+'发动【入梦】?','he'); + next.logSkill=['rumeng',trigger.player]; + next.ai=function(card){ if(yep){ return 6-ai.get.value(card); } @@ -675,7 +677,6 @@ character.swd={ } "step 1" if(result.bool){ - player.logSkill('rumeng',trigger.player); trigger.player.chooseToDiscard({type:'basic'},'入梦:弃置一张基本牌或路过出牌及弃牌阶段').ai=function(card){ return 5-ai.get.value(card); } @@ -702,15 +703,16 @@ character.swd={ }, content:function(){ "step 0" - player.chooseToDiscard('he','是否发动【连打】?').ai=function(card){ + var next=player.chooseToDiscard('he','是否发动【连打】?'); + next.ai=function(card){ if(ai.get.effect(trigger.target,{name:'sha'},player,player)>0){ return 7-ai.get.value(card); } return 0; } + next.logSkill='lianda'; "step 1" if(result.bool){ - player.logSkill('lianda'); player.addTempSkill('lianda2','phaseAfter'); player.useCard({name:'sha'},trigger.target); } @@ -840,7 +842,9 @@ character.swd={ } } } - player.chooseToDiscard('he','是否发动【镇卫】?').ai=function(card){ + var next=player.chooseToDiscard('he','是否发动【镇卫】?'); + next.logSkill='hzhenwei',trigger.target; + next.ai=function(card){ if(save){ return 7-ai.get.value(card); } @@ -848,7 +852,6 @@ character.swd={ } "step 1" if(result.bool){ - player.logSkill('hzhenwei',trigger.target); trigger.target=player; trigger.untrigger(); trigger.trigger('useCardToBefore'); @@ -1616,13 +1619,14 @@ character.swd={ content:function(){ "step 0" var att=ai.get.attitude(player,trigger.player); - player.chooseToDiscard('he','是否发动【碎岩】?').ai=function(card){ + var next=player.chooseToDiscard('he','是否发动【碎岩】?'); + next.ai=function(card){ if(att<0) return 7-ai.get.value(card); return -1; } + next.logSkill=['suiyan',trigger.player]; "step 1" if(result.bool){ - player.logSkill('suiyan',trigger.player); trigger.player.discard(trigger.player.get('e')); } }, @@ -2146,7 +2150,9 @@ character.swd={ str+='对'+get.translation(trigger.targets); } str+='的'+get.translation(trigger.card)+'失效?' - player.chooseToDiscard('he',{type:'equip'},str).ai=function(card){ + var next=player.chooseToDiscard('he',{type:'equip'},str); + next.logSkill='gongshen'; + next.ai=function(card){ if(effect<0){ var val=9-ai.get.value(card); var nme=trigger.card.name; @@ -2173,7 +2179,6 @@ character.swd={ game.delay(); trigger.untrigger(); trigger.finish(); - player.logSkill('gongshen'); } }, ai:{ @@ -3066,14 +3071,15 @@ character.swd={ }, content:function(){ "step 0" - player.chooseToDiscard('是否弃置两张手牌将'+get.translation(trigger.card)+'反弹?',2).ai=function(card){ + var next=player.chooseToDiscard('是否弃置两张手牌将'+get.translation(trigger.card)+'反弹?',2); + next.ai=function(card){ if(ai.get.effect(player,trigger.card)<0) return 4-ai.get.value(card); return 0; } + next.logSkill='yihua'; "step 1" if(result.bool){ // player.discard(result.cards); - player.logSkill('yihua'); trigger.target=trigger.player; trigger.player=player; trigger.untrigger(); @@ -3312,10 +3318,9 @@ character.swd={ }, content:function(){ "step 0" - player.chooseToUse({name:'sha'},'是否对'+get.translation(trigger.player)+'使用一张杀',trigger.player); + player.chooseToUse({name:'sha'},'是否对'+get.translation(trigger.player)+'使用一张杀',trigger.player).logSkill='rexue'; "step 1" if(result.bool){ - player.logSkill('rexue'); player.draw(); } } @@ -3400,7 +3405,9 @@ character.swd={ "step 0" var att=ai.get.attitude(player,trigger.player); var nh=player.num('h'); - player.chooseToDiscard('是否发动苏生?').ai=function(card){ + var next=player.chooseToDiscard('是否发动苏生?'); + next.logSkill='susheng'; + next.ai=function(card){ if(att>3||(att>1&&nh>2)){ return ai.get.unuseful2(card); } @@ -3414,7 +3421,6 @@ character.swd={ trigger.player.hp=1; if(trigger.player.maxHp<1) trigger.player.maxHp=1; trigger.player.update(); - player.logSkill('susheng'); player.addTempSkill('susheng2','phaseAfter'); } @@ -4268,9 +4274,11 @@ character.swd={ direct:true, content:function(){ "step 0" - player.chooseToDiscard('he','是否发动【唤魂】?',function(card){ + var next=player.chooseToDiscard('he','是否发动【唤魂】?',function(card){ return get.color(card)=='red'; - }).ai=function(card){ + }); + next.logSkill=['huanhun',trigger.player]; + next.ai=function(card){ if(ai.get.attitude(player,trigger.player)>0){ return 8-ai.get.value(card); } @@ -4278,7 +4286,6 @@ character.swd={ }; "step 1" if(result.bool){ - player.logSkill('huanhun',trigger.player); trigger.player.judge(function(card){ return get.color(card)=='red'?1:-1; }); @@ -4394,7 +4401,9 @@ character.swd={ direct:true, content:function(){ "step 0" - player.chooseToDiscard('请选择发动代形的卡牌','he',[1,player.num('he')]).ai=function(card){ + var next=player.chooseToDiscard('请选择发动代形的卡牌','he',[1,player.num('he')]); + next.logSkill='daixing'; + next.ai=function(card){ if(ui.selected.cards.length>=2) return 0; if(ui.selected.cards.length==1){ if(player.num('h')>player.hp){ @@ -4408,7 +4417,6 @@ character.swd={ if(result.bool){ player.changeHujia(result.cards.length); player.storage.daixing=result.cards.length; - player.logSkill('daixing'); } }, ai:{ @@ -5051,7 +5059,9 @@ character.swd={ var num=player.num('h')-trigger.source.num('h'); event.num=num; if(num>0){ - player.chooseToDiscard(num,'是否弃置'+num+'张手牌,并对'+get.translation(trigger.source)+'造成一点伤害?').ai=function(card){ + var next=player.chooseToDiscard(num,'是否弃置'+num+'张手牌,并对'+get.translation(trigger.source)+'造成一点伤害?'); + next.logSkill=['pozhen',trigger.source]; + next.ai=function(card){ if(ai.get.damageEffect(trigger.source,player,player)>0&&num<=2){ return 6-ai.get.value(card); } @@ -5068,11 +5078,11 @@ character.swd={ } "step 1" if(result.bool){ - player.logSkill('pozhen',trigger.source); if(event.num>0){ trigger.source.damage(); } else{ + player.logSkill('pozhen',trigger.source); var cards=trigger.source.get('h'); cards.sort(lib.sort.random); trigger.source.discard(cards.slice(0,-event.num)); @@ -5605,9 +5615,11 @@ character.swd={ direct:true, content:function(){ "step 0" - player.chooseToDiscard('he','是否弃置一张装备牌抵消伤害?',function(card,player){ + var next=player.chooseToDiscard('he','是否弃置一张装备牌抵消伤害?',function(card,player){ return get.type(card)=='equip'; - }).ai=function(card){ + }); + next.logSkill='yulin'; + next.ai=function(card){ if(player.hp==1||trigger.num>1){ return 9-ai.get.value(card); } @@ -5618,7 +5630,6 @@ character.swd={ }; "step 1" if(result.bool){ - player.logSkill('yulin'); game.delay(); trigger.untrigger(); trigger.finish(); @@ -5792,9 +5803,11 @@ character.swd={ direct:true, content:function(){ "step 0" - player.chooseToDiscard('朱羽:是否弃置一张红色手牌使其受到一点火焰伤害?',function(card){ + var next=player.chooseToDiscard('朱羽:是否弃置一张红色手牌使其受到一点火焰伤害?',function(card){ return get.color(card)=='red'; - }).ai=function(card){ + }); + next.logSkill=['zhuyu',trigger.player,'fire']; + next.ai=function(card){ if(trigger.player.hasSkillTag('nofire')) return 0; if(ai.get.damageEffect(trigger.player,player,player,'fire')>0){ return 9-ai.get.value(card); @@ -5803,7 +5816,6 @@ character.swd={ }; "step 1" if(result.bool){ - player.logSkill('zhuyu',trigger.player,'fire'); trigger.player.damage('fire'); } } @@ -5822,9 +5834,11 @@ character.swd={ direct:true, content:function(){ "step 0" - player.chooseToDiscard('是否弃置一张黑色手牌使其横置或翻面?',function(card){ + var next=player.chooseToDiscard('是否弃置一张黑色手牌使其横置或翻面?',function(card){ return get.color(card)=='black'; - }).ai=function(card){ + }); + next.logSkill='ningshuang'; + next.ai=function(card){ if(ai.get.attitude(player,trigger.player)<0){ return 9-ai.get.value(card); } @@ -5832,7 +5846,6 @@ character.swd={ }; "step 1" if(result.bool){ - player.logSkill('ningshuang'); if(trigger.player.classList.contains('turnedover')){ trigger.player.loseHp(); } @@ -6239,7 +6252,7 @@ character.swd={ list=list.concat(game.players[i].get('j')); } var dialog=ui.create.dialog(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+get.translation(trigger.player.judging)+ - ',是否发动【天轮】?',list); + ',是否发动【天轮】?',list,'hidden'); player.chooseButton(dialog,function(button){ var card=button.link; var trigger=_status.event.parent._trigger; @@ -6275,7 +6288,7 @@ character.swd={ } } }, - longyin:{ + hlongyin:{ enable:'phaseUse', usable:1, filterCard:function(card,player){ @@ -6875,16 +6888,17 @@ character.swd={ ai.get.attitude(player,trigger.source)<0&& ai.get.damageEffect(trigger.player,trigger.source,player)< ai.get.damageEffect(trigger.source,trigger.player,player); - player.chooseToDiscard('是否将伤害来源('+get.translation(trigger.source)+ - ')和目标('+get.translation(trigger.player)+')对调?','he').ai=function(card){ + var next=player.chooseToDiscard('是否将伤害来源('+get.translation(trigger.source)+ + ')和目标('+get.translation(trigger.player)+')对调?','he'); + next.ai=function(card){ if(go){ return 10-ai.get.value(card); } return 0; }; + next.logSkill='yinguo'; "step 1" if(result.bool){ - player.logSkill('yinguo'); var target=trigger.player; trigger.player=trigger.source; trigger.source=target; @@ -7568,13 +7582,14 @@ character.swd={ content:function(){ "step 0" var dis=trigger.target.num('h','shan')||trigger.target.num('e','bagua')||trigger.target.num('h')>2; - player.chooseToDiscard('是否发动【狩猎】?').ai=function(card){ + var next=player.chooseToDiscard('是否发动【狩猎】?'); + next.ai=function(card){ if(dis) return 7-ai.get.value(card); return 0; } + next.logSkill='shoulie'; "step 1" if(result.bool){ - player.logSkill('shoulie'); trigger.directHit=true; } } @@ -7817,7 +7832,7 @@ character.swd={ bingfeng2_info:'不能使用或打出手牌', bingfeng_info:'限定技,出牌阶段,你可以指定至多三个目标与其一同翻面,且处于翻面状态时不能使用或打出手牌;若如此做,你失去技能玄咒并减少一点体力上限', guozao:'聒噪', - guozao_info:'锁定技,每当距离你1以内的角色受到一次伤害,若伤害来源不你,你须观看牌堆顶的三张牌,然后指定一名有手牌的角色将手牌与这些牌交换', + guozao_info:'锁定技,每当距离你1以内的角色受到一次伤害,若伤害来源不你,你须观看牌堆顶的三张牌,然后指定距离2以内的一名有手牌角色将手牌与这些牌交换', heihuo:'黑火', heihuo_info:'出牌阶段,你可以弃置一张装备牌,令你的手牌数加倍;若你的手牌因此达到8张或更多,你立即受到3点火焰伤害且本回合内不能再次发动黑火', yaotong:'妖瞳', @@ -8097,7 +8112,7 @@ character.swd={ tianhuo:'天火', huanyin:'幻音', tianlun:'天轮', - longyin:'龙吟', + hlongyin:'龙吟', lanzhi:'兰芷', duanyi:'断意', miesheng:'灭生', @@ -8166,7 +8181,7 @@ character.swd={ duanyi_info:'出牌阶段限一次,你可以弃置两张杀,对一名角色造成一点伤害,然后其翻面并摸X张牌,X为其已损失的体力值', guxing_info:'出牌阶段,你可以将最后至多X张手牌当杀使用,此杀无视距离且可以指定至多3个目标,每造成一次伤害,你摸一张牌,X为你已损失的体力值且至少为1。', tianlun_info:'任意一名角色的判定生效前,你可以弃置一张场上角色的判定牌代替之', - longyin_info:'出牌阶段,你可以弃置任意张颜色相同且点数不同的牌,并获得逆时针座位距离与卡牌点数相同的角色区域内的一张牌。每阶段限一次', + hlongyin_info:'出牌阶段,你可以弃置任意张颜色相同且点数不同的牌,并获得逆时针座位距离与卡牌点数相同的角色区域内的一张牌。每阶段限一次', lanzhi_info:'每当你即将造成伤害,可以防止此伤害,然后摸两张牌。每回合限发动一次。', tianhuo_info:'出牌阶段,你可以令所有角色弃置其判定区域内的牌,并受到没有来源的等量火焰伤害,每阶段限一次', huanyin_info:'锁定技,每当你成为其他角色的卡牌的目标时,你进行一次判定,若为黑桃则取消之,若为红桃你摸一张牌', diff --git a/character/xianjian.js b/character/xianjian.js index 66b883ad5..bef3ecdf3 100755 --- a/character/xianjian.js +++ b/character/xianjian.js @@ -408,7 +408,9 @@ character.xianjian={ targets.push(game.players[i]); } } - player.chooseToDiscard('是否对'+get.translation(targets)+'发动【忘忧】?','he').ai=function(card){ + var next=player.chooseToDiscard('是否对'+get.translation(targets)+'发动【忘忧】?','he'); + next.logSkill=['wangyou',event.targets]; + next.ai=function(card){ if(num<=0) return 0; switch(num){ case 1:return 5-ai.get.value(card); @@ -420,7 +422,6 @@ character.xianjian={ "step 1" if(result.bool){ event.targets.sort(lib.sort.seat); - player.logSkill('wangyou',event.targets); game.asyncDraw(event.targets); } else{ @@ -760,7 +761,8 @@ character.xianjian={ } } if(num){ - player.chooseToDiscard(num,'是否发动【千方】?','he').ai=function(card){ + var next=player.chooseToDiscard(num,'是否发动【千方】?','he'); + next.ai=function(card){ if(ainum>=0){ switch(num){ case 1:return 8-ai.get.value(card); @@ -770,6 +772,8 @@ character.xianjian={ } return -1; } + next.logSkill='qianfang'; + event.logged=true; } else{ player.chooseBool('是否发动【千方】?').ai=function(){ @@ -781,7 +785,7 @@ character.xianjian={ player.storage.xuanning=0; player.unmarkSkill('xuanning'); player.addTempSkill('qianfang2','phaseAfter'); - player.logSkill('qianfang'); + if(!event.logged) player.logSkill('qianfang'); player.useCard({name:'wanjian'},event.targets); } else{ @@ -1223,7 +1227,9 @@ character.xianjian={ trigger:{target:'useCardToBefore'}, content:function(){ "step 0" - player.chooseToDiscard('是否弃置两张牌使'+get.translation(trigger.card)+'失效?','he',2).ai=function(card){ + var next=player.chooseToDiscard('是否弃置两张牌使'+get.translation(trigger.card)+'失效?','he',2); + next.logSkill='xiaoyao'; + next.ai=function(card){ if(ai.get.effect(player,trigger.card,trigger.player,player)<0){ if(get.tag(trigger.card,'respondSha')&&player.num('h','sha')) return 0; if(get.tag(trigger.card,'respondShan')&&player.num('h','shan')) return 0; @@ -1235,7 +1241,6 @@ character.xianjian={ if(result.bool){ trigger.untrigger(); trigger.finish(); - player.logSkill('xiaoyao'); } } }, diff --git a/character/yijiang.js b/character/yijiang.js index bffbce9cc..2baf0dd96 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -14,8 +14,8 @@ character.yijiang={ masu:['male','shu',3,['xinzhan','huilei'],['fullskin']], fazheng:['male','shu',3,['enyuan','xuanhuo'],['fullskin']], xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo'],['fullskin']], - // zhuran:['male','wu',4,['danshou']], - xusheng:['male','wu',4,['pojun'],['fullskin']], + zhuran:['male','wu',4,['danshou'],['fullskin']], + xusheng:['male','wu',4,['xinpojun'],['fullskin']], wuguotai:['female','wu',3,['ganlu','buyi'],['fullskin']], lingtong:['male','wu',4,['xuanfeng'],['fullskin']], liubiao:['male','qun',3,['zongshi','zishou'],['fullskin']], @@ -41,9 +41,1830 @@ character.yijiang={ zhangsong:['male','shu',3,['qiangzhi','xiantu'],['fullskin']], zhuhuan:['male','wu',4,['youdi'],['fullskin']], xiahoushi:['female','shu',3,['qiaoshi','yanyu'],['fullskin']], - // zhoucang:['male','shu',4,['zhongyong'],['fullskin']], + + panzhangmazhong:['male','wu',4,['anjian','duodao'],['fullskin']], + zhoucang:['male','shu',4,['zhongyong'],['fullskin']], + guanping:['male','shu',4,['longyin'],['fullskin']], + liaohua:['male','shu',4,['dangxian','fuli'],['fullskin']], + chengpu:['male','wu',4,['lihuo','chunlao'],['fullskin']], + gaoshun:['male','qun',4,['xianzhen','jinjiu'],['fullskin']], + caozhen:['male','wei',4,['sidi'],['fullskin']], + wuyi:['male','shu',4,['benxi'],['fullskin']], + hanhaoshihuan:['male','wei',4,['shenduan','yonglve'],['fullskin']], + + caorui:['male','wei',3,['huituo','mingjian','xingshuai'],['fullskin','zhu']], + caoxiu:['male','wei',4,['taoxi'],['fullskin']], + zhongyao:['male','wei',3,['huomo','zuoding'],['fullskin']], + liuchen:['male','shu',4,['zhanjue','qinwang'],['fullskin','zhu']], + zhangyi:['male','shu',4,['wurong','shizhi'],['fullskin']], + sunxiu:['male','wu',3,['yanzhu','xingxue','zhaofu'],['fullskin','zhu']], + zhuzhi:['male','wu',4,['anguo'],['fullskin']], + quancong:['male','wu',4,['yaoming'],['fullskin']], + gongsunyuan:['male','qun',4,['huaiyi'],['fullskin']], + guotufengji:['male','shu',3,['jigong','shifei'],['fullskin']], }, skill:{ + jinjiu:{ + mod:{ + cardEnabled:function(card,player){ + if(card.name=='jiu'&&_status.event.skill!='jinjiu') return false; + }, + cardUsable:function(card,player){ + if(card.name=='jiu'&&_status.event.skill!='jinjiu') return false; + }, + cardRespondable:function(card,player){ + if(card.name=='jiu'&&_status.event.skill!='jinjiu') return false; + }, + cardSavable:function(card,player){ + if(card.name=='jiu'&&_status.event.skill!='jinjiu') return false; + }, + }, + enable:['chooseToUse','chooseToRespond'], + filter:function(event,player){ + return player.num('h','jiu')>0; + }, + filterCard:{name:'jiu'}, + viewAs:{name:'sha'}, + viewAsFilter:function(player){ + if(!player.num('h','jiu')) return false; + }, + check:function(){return 1}, + ai:{ + skillTagFilter:function(player){ + if(!player.num('h','jiu')) return false; + }, + respondSha:true, + order:4, + useful:-1, + value:-1 + } + }, + xianzhen:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){ + return player!=target&&target.num('h')>0; + }, + filter:function(event,player){ + return player.num('h')>0; + }, + content:function(){ + "step 0" + player.chooseToCompare(target); + "step 1" + if(result.bool){ + player.storage.xianzhen=target; + player.addTempSkill('xianzhen2','phaseAfter'); + player.addTempSkill('unequip','phaseAfter'); + } + else{ + player.addTempSkill('xianzhen3','phaseAfter'); + } + }, + ai:{ + order:function(name,player){ + var cards=player.get('h'); + if(player.num('h','sha')==0){ + return 1; + } + for(var i=0;i11&&ai.get.value(cards[i])<7){ + return 9; + } + } + return lib.card.sha.ai.order-1; + }, + result:{ + player:function(player){ + if(player.num('h','sha')>0) return 0.6; + var num=player.num('h'); + if(num>player.hp) return 0; + if(num==1) return -2; + if(num==2) return -1; + return -0.7; + }, + target:function(player,target){ + var num=target.num('h'); + if(num==1) return -1; + if(num==2) return -0.7; + return -0.5 + }, + }, + threaten:1.3 + } + }, + xianzhen2:{ + mod:{ + targetInRange:function(card,player,target,now){ + if(player.storage.xianzhen==target) return true; + }, + cardUsable:function(card,player,num){ + if(card.name=='sha') return Infinity; + } + }, + }, + xianzhen3:{ + mod:{ + cardEnabled:function(card){if(card.name=='sha') return false} + } + }, + lihuo:{ + enable:'phaseUse', + usable:1, + filterCard:function(card){ + return card.name=='sha'&&!card.nature; + }, + filter:function(event,player){ + return player.num('h','sha')>0 + }, + viewAs:{name:'sha',nature:'fire'}, + mod:{ + selectTarget:function(card,player,range){ + if(card.name=='sha'&&card.nature=='fire'&&range[1]!=-1){ + range[1]++; + } + }, + } + }, + chunlao:{ + trigger:{player:'phaseEnd'}, + direct:true, + audio:2, + filter:function(event,player){ + return player.num('h','sha')>0&&!player.storage.chunlao.length; + }, + init:function(player){ + player.storage.chunlao=[]; + }, + intro:{ + content:'cards', + }, + content:function(){ + 'step 0' + player.chooseCard([1,player.num('h','sha')],'是否发动【醇醪】?',{name:'sha'}).ai=function(){ + return 1; + }; + 'step 1' + if(result.bool){ + player.logSkill('chunlao'); + player.storage.chunlao=player.storage.chunlao.concat(result.cards); + player.syncStorage('chunlao'); + player.markSkill('chunlao'); + player.lose(result.cards,ui.special); + player.$give(result.cards,player); + } + }, + ai:{ + effect:{ + player:function(card,player){ + console.log(1); + if(_status.currentPhase!=player) return; + if(card.name=='sha'&&player.num('h')<=player.hp&&!player.storage.chunlao.length){ + + return [0,0,0,0]; + } + } + }, + }, + group:'chunlao2', + ai:{ + threaten:1.4 + } + }, + chunlao2:{ + trigger:{global:'dying'}, + priority:6, + filter:function(event,player){ + return event.player.hp<=0&&player.storage.chunlao.length>0; + }, + direct:true, + content:function(){ + "step 0" + var att=ai.get.attitude(player,trigger.player); + player.chooseCardButton('是否对'+get.translation(trigger.player)+'发动【醇醪】?',player.storage.chunlao).ai=function(button){ + if(att>0) return 1; + return 0; + }; + "step 1" + if(result.bool){ + player.logSkill('chunlao',trigger.player); + player.$throw(result.links); + player.storage.chunlao.remove(result.links[0]); + ui.discardPile.appendChild(result.links[0]); + player.syncStorage('chunlao'); + trigger.player.useCard({name:'jiu'},trigger.player); + if(!player.storage.chunlao.length){ + player.unmarkSkill('chunlao'); + } + } + }, + ai:{ + expose:0.2 + } + }, + shenduan:{ + trigger:{player:'discardAfter'}, + filter:function(event,player){ + for(var i=0;i0; + }, + content:function(){ + 'step 0' + var att=ai.get.attitude(player,trigger.player); + var nh=trigger.player.num('h'); + var eff=ai.get.effect(trigger.player,{name:'sha'},player,player); + player.chooseCardButton('是否对'+get.translation(trigger.player)+'发动【勇略】?',trigger.player.get('j')).ai=function(button){ + var name=button.link.viewAs||button.link.name; + if(att>0&&eff>=0) return 1; + if(att>=0&&eff>0) return 1; + if(att>0&&(trigger.player.hp>=3||trigger.player.num('e','bagua')||trigger.player.num('h','shan'))){ + if(name=='lebu'&&nh>trigger.player.hp) return 1; + if(name=='bingliang'&&nh1){ + player.removeSkill('unequip'); + return; + } + } + player.addSkill('unequip'); + }, + group:['benxi2','benxi3'], + mod:{ + globalFrom:function(from,to,distance){ + if(_status.currentPhase==from){ + return distance-get.cardCount(true,from); + } + }, + selectTarget:function(card,player,range){ + if(_status.currentPhase==player){ + if(card.name=='sha'&&range[1]!=-1){ + for(var i=0;i1) return; + } + range[1]++; + } + } + }, + }, + }, + benxi2:{ + trigger:{player:'phaseBegin'}, + forced:true, + popup:false, + silent:true, + priority:5, + filter:function(event,player){ + return player.skills.contains('benxi'); + }, + content:function(){ + player.storage.benxi=!player.skills.contains('unequip'); + if(player.storage.benxi){ + for(var i=0;i1){ + return; + } + } + player.addSkill('unequip'); + } + } + }, + benxi3:{ + trigger:{player:'phaseAfter'}, + forced:true, + popup:false, + silent:true, + content:function(){ + if(player.storage.benxi){ + player.storage.benxi=false; + player.removeSkill('unequip'); + } + } + }, + sidi:{ + trigger:{global:'respondEnd'}, + filter:function(event,player){ + if(event.parent.parent.name!='sha') return false; + if(event.player==player) return true; + return _status.currentPhase==player; + }, + frequent:true, + init:function(player){ + player.storage.sidi=[]; + }, + intro:{ + content:'cards' + }, + content:function(){ + var card=get.cards()[0]; + game.log(get.translation(player)+'将'+get.translation(card)+'置于武将牌上'); + player.$gain2(card); + player.storage.sidi.add(card); + player.markSkill('sidi'); + player.syncStorage('sidi'); + }, + group:'sidi2' + }, + sidi2:{ + trigger:{global:'phaseUseBegin'}, + filter:function(event,player){ + if(event.player==player) return false; + if(!player.storage.sidi.length) return false; + return true; + }, + check:function(event,player){ + if(ai.get.attitude(player,event.player)>=0) return false; + if(event.player.num('e','zhuge')) return false; + if(event.player.skills.contains('paoxiao')) return false; + for(var i=0;i0) break; + } + if(i==game.players.length) return false; + var nh=event.player.num('h'); + var nsha=event.player.num('h','sha'); + if(nh<2) return false; + switch(nh){ + case 2: + if(nsha) return Math.random()<0.4; + return Math.random()<0.2; + case 3: + if(nsha) return Math.random()<0.8; + return Math.random()<0.3; + case 4: + if(nsha>1) return true; + if(nsha) return Math.random()<0.9; + return Math.random()<0.5; + default:return true; + } + }, + content:function(){ + 'step 0' + if(player.storage.sidi.length==1){ + event.directbutton=player.storage.sidi[0]; + } + else{ + player.chooseCardButton('弃置武将牌上的一张牌',player.storage.sidi,true); + } + 'step 1' + var button; + if(event.directbutton){ + button=event.directbutton; + } + else if(result.bool&&result.links&&result.links.length){ + button=result.links[0]; + } + if(button){ + player.$throw([button]); + player.line(trigger.player,'green'); + game.log(get.translation(player)+'将'+get.translation(button)+'置于弃牌堆'); + ui.discardPile.appendChild(button); + trigger.player.addTempSkill('sidi3','phaseAfter'); + player.storage.sidi.remove(button); + player.syncStorage('sidi'); + if(player.storage.sidi.length==0){ + player.unmarkSkill('sidi'); + } + game.delayx(); + } + } + }, + sidi3:{ + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num-1; + } + } + }, + zhongyong:{ + trigger:{player:'shaMiss'}, + direct:true, + filter:function(event,player){ + return event.responded&&get.itemtype(event.responded.cards)=='cards'; + }, + content:function(){ + "step 0" + var cards=trigger.responded.cards; + event.cards=cards; + player.chooseTarget('忠勇:将'+get.translation(trigger.responded.cards)+'交给一名角色',function(card,player,target){ + return target!=trigger.target; + }).ai=function(target){ + var att=ai.get.attitude(player,target); + if(target.num('h','shan')&&target.num('h')>=2){ + att/=1.5; + } + return att; + } + "step 1" + if(result.bool){ + player.logSkill('zhongyong',result.targets); + result.targets[0].gain(event.cards,'gain2'); + if(result.targets[0]==player){ + event.finish(); + } + } + else{ + event.finish(); + } + "step 2" + if(player.skills.contains('jiu')){ + player.removeSkill('jiu'); + event.jiu=true; + } + player.chooseToUse('是否对'+get.translation(trigger.target)+'再使用一张杀?', + {name:'sha'},trigger.target,-1).logSkill='qinglong'; + "step 3" + if(event.jiu){ + player.addSkill('jiu'); + } + } + }, + dangxian:{ + trigger:{player:'phaseBegin'}, + forced:true, + content:function(){ + player.phaseUse(); + } + }, + longyin:{ + trigger:{global:'shaBegin'}, + direct:true, + filter:function(event,player){ + return event.target==event.targets[0]&&player.num('he')>0&&event.card.name=='sha'&& + _status.currentPhase==event.player&&event.parent.parent.parent.name=='phaseUse'; + }, + content:function(){ + 'step 0' + var go=false; + if(ai.get.attitude(player,trigger.player)>0){ + if(get.color(trigger.card)=='red'){ + go=true; + } + else if(!trigger.player.skills.contains('paoxiao')&& + !trigger.player.skills.contains('tanlnin3')&& + !trigger.player.skills.contains('zhaxiang2')&& + !trigger.player.skills.contains('fengnu')&& + !trigger.player.num('e','zhuge')){ + var nh=trigger.player.num('h'); + if(nh>=4){ + go=true; + } + else if(player.num('h','sha')){ + if(nh==3){ + go=Math.random()<0.8; + } + else if(nh==2){ + go=Math.random()<0.5; + } + } + else if(nh>=3){ + if(nh==3){ + go=Math.random()<0.5; + } + else if(nh==2){ + go=Math.random()<0.2; + } + } + } + } + var next=player.chooseToDiscard('是否发动【龙吟】?','he'); + next.logSkill=['longyin',trigger.player]; + next.ai=function(card){ + if(go){ + return 6-ai.get.value(card); + } + return 0; + } + 'step 1' + if(result.bool){ + trigger.player.getStat().card.sha--; + if(get.color(trigger.card)=='red'){ + player.draw(); + } + player.logSkill('longyin',trigger.player); + } + }, + ai:{ + expose:0.2 + } + }, + jigong:{ + trigger:{player:'phaseUseBegin'}, + check:function(event,player){ + var nh=player.num('h'); + if(nh<=2) return true; + if(nh==3&&!player.num('h','tao')) return Math.random()<0.5; + return false; + }, + content:function(){ + player.draw(2); + player.addTempSkill('jigong2','phaseAfter'); + } + }, + jigong2:{ + mod:{ + maxHandcard:function(player,num){ + var damage=player.getStat().damage; + if(typeof damage=='number') return damage; + return 0; + } + } + }, + shifei:{ + trigger:{player:'chooseToRespondBegin'}, + filter:function(event,player){ + if(event.responded) return false; + if(!event.filterCard({name:'shan'})) return false; + return true; + }, + check:function(event,player){ + if(ai.get.attitude(player,_status.currentPhase)>0) return true; + var nh=_status.currentPhase.num('h')+1; + var hasshan=(player.num('h','shan')>0); + for(var i=0;inh){ + if(!hasshan||ai.get.attitude(player,game.players[i])<=0) return true; + } + } + return false; + }, + content:function(){ + 'step 0' + player.line(_status.currentPhase,'green'); + _status.currentPhase.draw(); + 'step 1' + var nh=_status.currentPhase.num('h'); + var nmax=nh+1; + var targets=[]; + for(var i=0;inmax){ + nmax=nh2; + targets.length=0; + targets.push(game.players[i]); + } + else if(nh2==nmax){ + targets.push(game.players[i]); + } + } + if(targets.length==1){ + event.onlytarget=targets[0]; + } + else if(targets.length){ + player.chooseTarget('选择一名角色弃置其一张牌',true,function(card,player,target){ + return targets.contains(target); + }).ai=function(target){ + return -ai.get.attitude(player,target); + }; + } + else{ + event.finish(); + } + 'step 2' + var target; + if(event.onlytarget){ + target=event.onlytarget; + } + else if(result.targets&&result.targets.length){ + target=result.targets[0]; + } + if(target){ + player.line(target,'green'); + if(target==player){ + player.chooseToDiscard('he',true); + } + else{ + player.discardPlayerCard(target,'he',true); + } + trigger.untrigger(); + trigger.responded=true; + trigger.result={bool:true,card:{name:'shan'}} + } + } + }, + huaiyi:{ + enable:'phaseUse', + usable:1, + delay:0, + filter:function(event,player){ + return player.num('h',{color:'red'})&&player.num('h',{color:'black'}); + }, + content:function(){ + 'step 0' + player.chooseControl('红色','黑色').ai=function(){ + if(player.num('h',{color:'red'})==1&& + player.num('h',{color:'black'})>1) return '红色'; + return '黑色'; + } + 'step 1' + var cards; + if(result.control=='red'){ + cards=player.get('h',{color:'red'}); + } + else{ + cards=player.get('h',{color:'black'}); + } + player.discard(cards); + event.num=cards.length; + 'step 2' + player.chooseTarget([1,event.num],function(card,player,target){ + return target!=player&&target.num('he')>0; + }).ai=function(target){ + return -ai.get.attitude(player,target)+0.5; + } + 'step 3' + if(result.targets){ + event.targets=result.targets; + event.gained=event.targets.length; + } + else{ + event.finish(); + } + 'step 4' + if(event.targets.length){ + player.gainPlayerCard(event.targets.shift(),'he',true); + event.redo(); + } + 'step 5' + if(event.gained>=2){ + player.loseHp(); + } + }, + ai:{ + order:function(item,player){ + if(player.num('h',{color:'red'})==1) return 10; + if(player.num('h',{color:'black'})==1) return 10; + return 1; + }, + result:{ + player:1 + } + } + }, + yaoming:{ + trigger:{player:'damageEnd',source:'damageEnd'}, + direct:true, + filter:function(event,player){ + if(player.skills.contains('yaoming2')) return false; + var nh=player.num('h'); + for(var i=0;inh) return -att; + return att; + } + 'step 1' + if(result.bool){ + player.logSkill('yaoming',result.targets); + player.addTempSkill('yaoming2','phaseAfter'); + var target=result.targets[0]; + if(target.num('h')0; + }, + content:function(){ + 'step 0' + player.choosePlayerCard(target,'e',true); + 'step 1' + if(result.links){ + var num=0; + for(var i=0;inum2){ + player.draw(); + } + }, + ai:{ + order:7, + result:{ + target:function(player,target){ + if(target.get('e','1')||target.get('e','4')) return -1; + if(target.get('e','2')) return -0.7; + return -0.5; + } + } + } + }, + zhaofu:{ + unique:true, + global:'zhaofu2' + }, + zhaofu2:{ + mod:{ + attackTo:function(from,to,distance){ + if(from.group!='wu') return; + var zhu; + for(var i=0;i0&&target!=player; + }, + content:function(){ + 'step 0' + if(target.num('e')){ + target.chooseBool('是否将装备区内的所有牌交给'+get.translation(player)+'?').ai=function(){ + if(player.num('e')>=2) return false; + return true; + } + } + else{ + target.chooseToDiscard(true,'he'); + event.finish(); + } + 'step 1' + if(result.bool){ + var es=target.get('e'); + player.gain(es); + target.$give(es,player); + player.removeSkill('yanzhu'); + } + else{ + target.chooseToDiscard(true,'he'); + } + }, + ai:{ + order:6, + result:{ + target:function(player,target){ + var ne=target.num('e'); + if(!ne) return -2; + if(ne>=2) return -ne; + return 0; + } + } + } + }, + shizhi:{ + mod:{ + cardRespondable:function(card,player){ + if(card.name=='shan'&&player.hp==1&&_status.event.skill!='shizhi') return false; + }, + }, + enable:['chooseToUse','chooseToRespond'], + filter:function(event,player){ + return player.hp==1; + }, + filterCard:{name:'shan'}, + viewAs:{name:'sha'}, + viewAsFilter:function(player){ + if(!player.num('h','shan')) return false; + if(player.hp!=1) return false; + }, + check:function(){return 1}, + ai:{ + skillTagFilter:function(player){ + if(!player.num('h','shan')) return false; + if(player.hp!=1) return false; + }, + respondSha:true, + order:4, + useful:-1, + value:-1 + } + }, + wurong:{ + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.num('h')>0; + }, + filterTarget:function(card,player,target){ + return target.num('h')>0; + }, + content:function(){ + "step 0" + if(target.num('h')==0||player.num('h')==0){ + event.finish(); + return; + } + player.chooseCard(true).ai=function(){ + return Math.random(); + }; + "step 1" + event.card1=result.cards[0]; + var rand=Math.random()<0.4; + target.chooseCard(true).ai=function(card){ + if(rand) return card.name=='shan'?1:0; + return card.name=='shan'?0:1; + }; + "step 2" + event.card2=result.cards[0]; + ui.arena.classList.add('thrownhighlight'); + game.addVideo('thrownhighlight1'); + player.$compare(event.card1,target,event.card2); + game.delay(4); + "step 3" + game.log(get.translation(player)+'展示了'+get.translation(event.card1)); + game.log(get.translation(target)+'展示了'+get.translation(event.card2)); + var name1=event.card1.name; + if(player.hp==1&&name1=='shan'){ + name1='sha'; + } + if(name1=='sha'&&event.card2.name!='shan'){ + player.discard(event.card1).animate=false; + target.$gain2(event.card2); + var clone=event.card1.clone; + if(clone){ + clone.style.transition='all 0.5s'; + clone.style.transform='scale(1.2)'; + clone.delete(); + game.addVideo('deletenode',player,get.cardsInfo([clone])); + } + target.damage(); + } + else if(name1!='sha'&&event.card2.name=='shan'){ + player.discard(event.card1).animate=false; + target.$gain2(event.card2); + var clone=event.card1.clone; + if(clone){ + clone.style.transition='all 0.5s'; + clone.style.transform='scale(1.2)'; + clone.delete(); + game.addVideo('deletenode',player,get.cardsInfo([clone])); + } + player.gainPlayerCard(target,true); + } + else{ + player.$gain2(event.card1); + target.$gain2(event.card2); + } + ui.arena.classList.remove('thrownhighlight'); + game.addVideo('thrownhighlight2'); + }, + ai:{ + order:6, + result:{ + target:-1, + } + } + }, + zhanjue:{ + enable:'phaseUse', + filterCard:true, + selectCard:-1, + filter:function(event,player){ + if(!player.num('h')) return false; + if(player.storage.zhanjue>=2) return false; + return true; + }, + prepare:function(cards,player,targets){ + player.$throw(cards); + player.line(targets); + }, + discard:false, + filterTarget:function(card,player,target){ + return player.canUse('juedou',target); + }, + content:function(){ + targets.sort(lib.sort.seat); + player.useCard({name:'juedou'},cards,targets,'zhanjue').animate=false; + }, + group:['zhanjue2','zhanjue3'], + ai:{ + order:1, + result:{ + target:function(player,target){ + if(player.num('h')>3) return 0; + if(target.num('h','sha')) return 0; + if(player.num('h','tao')) return 0; + return ai.get.effect(target,{name:'juedou'},player,target); + } + } + } + }, + zhanjue2:{ + trigger:{player:'phaseBegin'}, + forced:true, + popup:false, + silent:true, + content:function(){ + player.storage.zhanjue=0; + } + }, + zhanjue3:{ + trigger:{player:'damageAfter',source:'damageAfter'}, + forced:true, + popup:false, + filter:function(event,player){ + return event.parent.skill=='zhanjue'; + }, + content:function(){ + if(player==trigger.source){ + game.asyncDraw([player,trigger.player]); + player.storage.zhanjue++; + } + else{ + player.draw(2); + player.storage.zhanjue+=2; + } + } + }, + qinwang:{ + unique:true, + group:['qinwang1','qinwang2'], + }, + qinwang1:{ + trigger:{player:'chooseToRespondBegin'}, + filter:function(event,player){ + if(event.responded) return false; + if(!player.isZhu) return false; + if(event.filterCard({name:'sha'})==false) return false; + for(var i=0;i0&&game.players[i].num('h')>=3){ + yep=true;break; + } + } + var next=player.chooseToDiscard('是否发动【勤王】?','he'); + next.ai=function(card){ + if(yep) return 5-ai.get.value(card); + return 0; + } + next.logSkill='qinwang' + "step 1" + if(!result.bool){ + event.finish(); + } + "step 2" + if(event.current==undefined) event.current=player.next; + if(event.current==player){ + event.finish(); + } + else if(event.current.group=='shu'){ + var next=event.current.chooseToRespond('是否替'+get.translation(player)+'打出一张杀?',{name:'sha'}); + next.ai=function(){ + var event=_status.event; + return (ai.get.attitude(event.player,event.source)-2); + }; + next.autochoose=lib.filter.autoRespondSha; + next.source=player; + } + "step 3" + if(result.bool){ + event.finish(); + trigger.result=result; + trigger.responded=true; + trigger.animate=false; + event.current.draw(); + if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ + event.current.ai.shown+=0.3; + if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; + } + } + else{ + event.current=event.current.next; + event.goto(2); + } + } + }, + qinwang2:{ + enable:'chooseToUse', + filter:function(event,player){ + if(event.filterCard&&!event.filterCard({name:'sha'},player)) return false; + if(!player.isZhu) return false; + if(player!=game.me&&player.skills.contains('qinwang3')) return false; + for(var i=0;i0&&game.players[i].num('h')>=3){ + return 5-ai.get.value(card); + } + } + return 0; + }, + filterTarget:function(card,player,target){ + if(_status.event._backup&& + typeof _status.event._backup.filterTarget=='function'&& + !_status.event._backup.filterTarget({name:'sha'},player,target)){ + return false; + } + return player.canUse({name:'sha'},target); + }, + content:function(){ + "step 0" + if(event.current==undefined) event.current=player.next; + if(event.current==player){ + player.addTempSkill('qinwang3','phaseAfter'); + event.parent.parent.step=0; + event.finish(); + } + else if(event.current.group=='shu'){ + var next=event.current.chooseToRespond('是否替'+get.translation(player)+'对'+get.translation(target)+'使用一张杀', + function(card){return player.canUse(card,target)&&card.name=='sha';}); + next.ai=function(card){ + var event=_status.event; + return ai.get.effect(event.target,card,event.source,event.player); + }; + next.autochoose=lib.filter.autoRespondSha; + next.source=player; + next.target=target; + } + "step 1" + if(result.bool){ + event.finish(); + event.current.draw(); + if(result.cards&&result.cards.length==1&&result.cards[0].name=='sha'){ + player.useCard(result.cards[0],target).animate=false; + } + else{ + player.useCard({name:'sha'},target).animate=false; + } + if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ + event.current.ai.shown+=0.3; + if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; + } + } + else{ + event.current=event.current.next; + event.goto(0); + } + }, + ai:{ + result:{ + target:function(player,target){ + if(player.skills.contains('qinwang3')) return 0; + return ai.get.effect(target,{name:'sha'},player,target); + } + }, + order:function(){ + return lib.card.sha.ai.order-0.1; + }, + } + }, + qinwang3:{}, + zuoding:{ + trigger:{global:'useCard'}, + filter:function(event,player){ + return !player.skills.contains('zuoding2')&&get.suit(event.card)=='spade'&& + event.targets&&event.targets.length&&event.player!=player; + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget('是否发动【佐定】?',function(card,player,target){ + return trigger.targets.contains(target); + }).ai=function(target){ + return ai.get.attitude(player,target); + } + 'step 1' + if(result.bool){ + player.logSkill('zuoding',result.targets); + result.targets[0].draw(); + } + }, + ai:{ + expose:0.2 + }, + group:'zuoding3' + }, + zuoding2:{}, + zuoding3:{ + trigger:{global:'damageEnd'}, + forced:true, + popup:false, + silent:true, + content:function(){ + player.addTempSkill('zuoding2','phaseAfter'); + } + }, + huomo:{ + trigger:{player:'chooseToRespondBegin'}, + filter:function(event,player){ + if(event.responded) return false; + if(!event.filterCard({name:'shan'})) return false; + if(player.skills.contains('huomo2')) return false; + if(event.parent.name!='sha') return false; + var hs=player.get('h',{color:'black'}); + for(var i=0;i0&&!player.skills.contains('taoxi4')&&player!=event.target; + }, + check:function(event,player){ + return ai.get.attitude(player,event.target)<0; + }, + intro:{ + content:'cards' + }, + content:function(){ + var card=trigger.target.get('h').randomGet(); + player.showCards([card]); + player.storage.taoxi=card; + player.storage.taoxi2=trigger.target; + player.syncStorage('taoxi'); + player.markSkill('taoxi'); + player.addTempSkill('taoxi4','phaseAfter'); + }, + intro:{ + content:'card' + }, + group:['taoxi2','taoxi3'] + }, + taoxi2:{ + enable:'phaseUse', + filter:function(event,player){ + if(player.storage.taoxi&&player.storage.taoxi2&& + get.owner(player.storage.taoxi)==player.storage.taoxi2&& + lib.filter.filterCard(player.storage.taoxi,player,event)){ + return true; + } + return false; + }, + filterTarget:function(card,player,target){ + return player.canUse(player.storage.taoxi,target); + }, + selectTarget:function(){ + return get.select(get.info(_status.event.player.storage.taoxi).selectTarget); + }, + content:function(){ + player.useCard(player.storage.taoxi,targets); + delete player.storage.taoxi; + delete player.storage.taoxi2; + player.unmarkSkill('taoxi'); + }, + ai:{ + order:8, + result:{ + target:function(player,target){ + return ai.get.effect(target,player.storage.taoxi,player,target); + }, + player:1 + } + } + }, + taoxi3:{ + trigger:{player:'phaseEnd'}, + forced:true, + popup:false, + filter:function(event,player){ + return player.storage.taoxi?true:false; + }, + content:function(){ + if(get.owner(player.storage.taoxi)==player.storage.taoxi2){ + player.loseHp(); + } + delete player.storage.taoxi; + delete player.storage.taoxi2; + player.unmarkSkill('taoxi'); + } + }, + taoxi4:{}, + xingshuai:{ + trigger:{player:'dying'}, + priority:6, + filter:function(event,player){ + if(player.storage.xingshuai) return false; + if(player.hp>0) return false; + if(!player.isZhu) return false; + for(var i=0;i2; + } + event.current=current; + } + else{ + event.redo(); + } + } + else{ + event.goto(3); + } + 'step 2' + if(result.bool){ + event.damages.push(event.current); + event.current.line(player,'green'); + game.log(get.translation(event.current)+'令'+get.translation(player)+'回复一点体力'); + } + if(event.targets.length){ + event.goto(1); + } + 'step 3' + if(event.damages.length){ + player.recover(event.damages.length); + } + 'step 4' + if(event.damages.length){ + event.damages.shift().damage('nosource'); + event.redo(); + } + } + }, + mingjian:{ + trigger:{player:'phaseUseBefore'}, + direct:true, + filter:function(event,player){ + return player.num('h')>0; + }, + content:function(){ + 'step 0' + var go=Math.random()<0.5; + player.chooseTarget('是否发动【明鉴】?',function(card,player,target){ + return player!=target + }).ai=function(target){ + var att=ai.get.attitude(player,target); + if(att>3){ + if(player.num('h')>player.hp) return att; + if(go) return att; + } + return 0; + } + 'step 1' + if(result.bool){ + player.logSkill('huituo',result.targets); + trigger.untrigger(); + trigger.finish(); + var target=result.targets[0]; + target.addSkill('mingjian2'); + var hs=player.get('h'); + target.gain(hs); + player.$give(hs.length,target); + } + } + }, + mingjian2:{ + trigger:{global:'phaseAfter'}, + forced:true, + popup:false, + content:function(){ + if(lib.config.glow_phase){ + if(_status.currentPhase){ + _status.currentPhase.classList.remove('glow_phase'); + } + player.classList.add('glow_phase'); + } + game.addVideo('phaseChange',player); + _status.currentPhase=player; + player.ai.tempIgnore=[]; + player.stat.push({card:{},skill:{}}); + player.phaseUse(); + player.removeSkill('mingjian2'); + } + }, + huituo:{ + trigger:{player:'damageEnd'}, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget('是否发动【恢拓】?').ai=function(target){ + if(ai.get.attitude(player,target)>0){ + return ai.get.recoverEffect(target,player,player)+1; + } + return 0; + } + 'step 1' + if(result.bool){ + player.logSkill('huituo',result.targets); + var target=result.targets[0]; + event.target=target; + target.judge(function(card){ + if(target.hp==target.maxHp){ + if(get.color(card)=='red') return 0; + } + if(get.color(card)=='red') return 1.5; + return 1; + }); + } + else{ + event.finish(); + } + 'step 2' + if(result.color){ + if(result.color=='red'){ + if(event.target.hp0&&event.source&&event.source.get('e','1')!=undefined&& + event.card&&event.card.name=='sha'; + }, + check:function(event,player){ + return ai.get.attitude(player,event.source)<=0; + }, + direct:true, + priority:5, + audio:2, + content:function(){ + 'step 0' + var next=player.chooseToDiscard('he','是否发动【夺刀】?'); + next.logSkill=['duodao',trigger.source]; + next.ai=function(card){ + if(ai.get.attitude(player,trigger.source)<0){ + return 6-ai.get.value(card); + } + return 0; + }; + 'step 1' + if(result.bool){ + trigger.source.$give(trigger.source.get('e','1'),player); + player.gain(trigger.source.get('e','1')); + } + }, + }, + anjian:{ + audio:2, + trigger:{source:'damageBegin'}, + check:function(event,player){ + return ai.get.attitude(player,event.player)<=0; + }, + forced:true, + filter:function(event,player){ + return event.card&&event.card.name=='sha'&&get.distance(event.player,player,'attack')>1&& + event.parent.name!='_lianhuan'&&event.parent.name!='_lianhuan2'; + }, + content:function(){ + trigger.num++; + } + }, + xinpojun:{ + trigger:{player:'shaBegin'}, + direct:true, + filter:function(event,player){ + return event.target.hp>0&&event.target.num('he')>0; + }, + audio:2, + content:function(){ + 'step 0' + player.choosePlayerCard(trigger.target,'he', + [1,Math.min(trigger.target.num('he'),trigger.target.hp)],'是否发动【破军】?'); + 'step 1' + if(result.bool&&result.links.length){ + player.logSkill('xinpojun'); + if(trigger.target.storage.xinpojun2){ + trigger.target.storage.xinpojun2=trigger.target.storage.xinpojun2.concat(result.links); + } + else{ + trigger.target.storage.xinpojun2=result.links; + } + game.addVideo('storage',trigger.target,['xinpojun2',get.cardsInfo(trigger.target.storage.xinpojun2),'cards']); + trigger.target.addSkill('xinpojun2'); + trigger.target.lose(result.links,ui.special); + } + }, + ai:{ + expose:0.2 + } + }, + xinpojun2:{ + trigger:{global:'phaseEnd'}, + forced:true, + mark:true, + intro:{ + content:'cardCount' + }, + content:function(){ + if(player.storage.xinpojun2){ + player.gain(player.storage.xinpojun2); + delete player.storage.xinpojun2; + } + player.removeSkill('xinpojun2'); + } + }, qiaoshi:{ trigger:{global:'phaseEnd'}, filter:function(event,player){ @@ -52,6 +1873,7 @@ character.yijiang={ check:function(event,player){ return ai.get.attitude(player,event.player)>=0; }, + priority:-5, content:function(){ game.asyncDraw([trigger.player,player]); }, @@ -839,9 +2661,10 @@ character.yijiang={ direct:true, content:function(){ "step 0" - player.chooseToDiscard('he','是否弃置一张装备牌令伤害-1?',function(card,player){ + var next=player.chooseToDiscard('he','是否弃置一张装备牌令伤害-1?',function(card,player){ return get.type(card)=='equip'; - }).ai=function(card){ + }); + next.ai=function(card){ if(player.hp==1||trigger.num>1){ return 9-ai.get.value(card); } @@ -850,9 +2673,9 @@ character.yijiang={ } return 7-ai.get.value(card); }; + next.logSkill='jiaojin'; "step 1" if(result.bool){ - player.logSkill('jiaojin'); game.delay(); trigger.num--; } @@ -968,6 +2791,7 @@ character.yijiang={ } if(!hasfriend) return; if(target.hp>=4) return [0.5,get.tag(card,'damage')*2]; + if(!target.skills.contains('paiyi')&&target.hp>1) return [0.5,get.tag(card,'damage')*1.5]; if(target.hp==3) return [0.5,get.tag(card,'damage')*1.5]; if(target.hp==2) return [1,get.tag(card,'damage')*0.5]; } @@ -2169,7 +3993,7 @@ character.yijiang={ player.update(); }, }, - danshou:{ + danshou_old:{ trigger:{source:'damageEnd'}, priority:9, content:function(){ @@ -2183,6 +4007,74 @@ character.yijiang={ _status.event.untrigger(true); } }, + danshou:{ + enable:'phaseUse', + filterCard:true, + position:'he', + audio:2, + filter:function(event,player){ + var num=player.getStat().skill.danshou; + if(num){ + num++; + } + else{ + num=1; + } + return player.num('he')>=num; + }, + check:function(card){ + return 6-ai.get.value(card); + }, + selectCard:function(card){ + var num=_status.event.player.getStat().skill.danshou; + if(num) return num+1; + return 1; + }, + filterTarget:function(card,player,target){ + var num=player.getStat().skill.danshou; + if(num){ + num++; + } + else{ + num=1; + } + if(num<=2&&!target.num('he')) return false; + return get.distance(player,target,'attack')<=1; + }, + content:function(){ + 'step 0' + var num=player.getStat().skill.danshou; + switch(num){ + case 1:player.discardPlayerCard(target,true);break; + case 2:target.chooseCard('选择一张牌交给'+get.translation(player),'he',true);break; + case 3:target.damage();break; + default:game.asyncDraw([player,target],2); + } + if(num!=2) event.finish(); + 'step 1' + if(result.cards){ + player.gain(result.cards); + target.$give(result.cards.length,player); + } + }, + ai:{ + order:8, + result:{ + target:function(player,target){ + var num=player.getStat().skill.danshou; + if(num){ + num++; + } + else{ + num=1; + } + if(num>3) return 0; + if(num==3) return ai.get.damageEffect(target,player,target); + return -1; + } + } + } + }, qice:{ enable:'phaseUse', usable:1, @@ -2843,7 +4735,9 @@ character.yijiang={ direct:true, content:function(){ "step 0" - player.chooseToDiscard('是否发动【仁心】?',{type:'equip'},'he').ai=function(card){ + var next=player.chooseToDiscard('是否发动【仁心】?',{type:'equip'},'he'); + next.logSkill=['renxin',trigger.player]; + next.ai=function(card){ if(ai.get.attitude(player,trigger.player)>3){ return 11-ai.get.value(card); } @@ -2851,7 +4745,6 @@ character.yijiang={ } "step 1" if(result.bool){ - player.logSkill('renxin',trigger.player); player.turnOver(); } else{ @@ -2874,12 +4767,13 @@ character.yijiang={ }, content:function(){ "step 0" - player.chooseToDiscard('是否发动御策?').ai=function(card){ + var next=player.chooseToDiscard('是否发动御策?'); + next.logSkill='yuce'; + next.ai=function(card){ return 7-ai.get.value(card); } "step 1" if(result.bool){ - player.logSkill('yuce'); var type=get.type(result.cards[0],'trick'); if(trigger.source){ trigger.source.chooseToDiscard('弃置一张'+get.translation(type)+'牌或令'+get.translation(player)+'回复一点体力',function(card){ @@ -3366,6 +5260,101 @@ character.yijiang={ yj_jushou:'沮授', zhuhuan:'朱桓', xiahoushi:'夏侯氏', + panzhangmazhong:'潘璋马忠', + caorui:'曹叡', + caoxiu:'曹休', + zhongyao:'钟繇', + liuchen:'刘谌', + zhangyi:'张嶷', + sunxiu:'孙休', + zhuzhi:'朱治', + quancong:'全琮', + gongsunyuan:'公孙渊', + guotufengji:'郭图逢纪', + zhoucang:'周仓', + guanping:'关平', + liaohua:'廖化', + caozhen:'曹真', + wuyi:'吴懿', + hanhaoshihuan:'韩浩史涣', + chengpu:'程普', + gaoshun:'高顺', + + xianzhen:'陷阵', + xianzhen_info:'出牌阶段,你可以与一名角色拼点。若你赢,你获得以下技能直到回合结束:无视与该角色的距离;无视防具且可使用任意数量的【杀】。若你没赢,你不能使用【杀】直到回合结束。每回合限一次', + jinjiu:'禁酒', + jinjiu_info:'锁定技,你的【酒】均视为【杀】', + chunlao:'醇醪', + chunlao_info:'结束阶段开始时,若没有“醇”,你可以将至少一张【杀】置于你的武将牌上,称为“醇”。当一名角色处于濒死状态时,你可以将一张“醇”置入弃牌堆,视为该角色使用一张【酒】', + lihuo:'疠火', + lihuo_info:'你可以将一张普通【杀】当火【杀】使用。若以此法使用的【杀】造成了伤害,则此【杀】结算后你失去1点体力;你使用火【杀】指定目标后,可以额外指定一个目标', + shenduan:'慎断', + shenduan_info:'当你的黑色基本牌因弃置而进入弃牌堆时,你可以将之视为 【兵粮寸断】并置于一名其他角色的判定区里', + yonglve:'勇略', + yonglve_info:'你攻击范围内的一名其他角色的判定阶段开始时,你可以弃置其判定区里的一张牌,视为对该角色使用一张【杀】。若此【杀】未造成伤害,你摸一张牌', + benxi:'奔袭', + benxi_info:'锁定技,在你的回合内,你每使用一次牌后,你计算与其他角色的距离便减少1,直到回合结束;你的回合内,若你与所有角色的距离均为1,你无视其他角色的防具,且你使用的【杀】可额外指定一个目标', + sidi:'司敌', + sidi2:'司敌', + sidi3:'司敌', + sidi_info:'每当你使用或其他角色在你的回合内使用闪时,你可以将牌堆顶的一张牌正面向上置于你的武将牌上;一名其他角色的出牌阶段开始时,你可以将你武将牌上的一张牌置入弃牌堆,然后该角色本阶段可使用杀的次数上限-1', + dangxian:'当先', + dangxian_info:'锁定技,回合开始时,你执行一个额外的出牌阶段', + longyin:'龙吟', + longyin_info:'每当一名角色在其出牌阶段使用【杀】时,你可弃置一张牌令此【杀】不计入出牌阶段使用次数,若此【杀】为红色,你摸一张牌', + zhongyong:'忠勇', + zhongyong_info:'当你于出牌阶段内使用的【杀】被目标角色使用的【闪】抵消时,你可以将此【闪】交给除该角色外的一名角色。若获得此【闪】的角色不是你,你可以对相同的目标再使用一张【杀】', + jigong:'急攻', + jigong_info:'出牌阶段开始时,你可以摸两张牌。若如此做,此回合你的手牌上限改为X(X为你此阶段造成的伤害数)', + shifei:'饰非', + shifei_info:'当你需要使用或打出【闪】时,你可以令当前回合角色摸一张牌,然后若其手牌数不为全场最多,则你弃置全场手牌数最多(或之一)角色的一张牌,视为你使用或打出了一张【闪】', + huaiyi:'怀异', + huaiyi_info:'出牌阶段限一次,你可以展示所有手牌,若其中包含不止一种颜色,则你选择一种颜色并弃置该颜色的所有手牌,然后你可以获得至多X名角色的各一张牌(X为你以此法弃置的手牌数)。若你以此法获得的牌不少于两张,则你失去1点体力', + yaoming:'邀名', + yaoming_info:'每回合限一次,当你造成或受到伤害后,你可以选择一项:1. 弃置手牌数大于你的一名角色的一张牌;2. 令手牌数小于你的一名角色摸一张牌', + anguo:'安国', + anguo_info:'出牌阶段限一次,你可以选择一名其他角色装备区里的一张牌,令其将此牌收回手牌。然后若该角色攻击范围内的角色数因此减少,则你摸一张牌', + yanzhu:'宴诛', + yanzhu_info:'出牌阶段限一次,你可以令一名有牌的其他角色选择一项:令你获得其装备区里所有的牌,然后你失去技能“宴诛”,直到游戏结束;或弃置一张牌', + xingxue:'兴学', + xingxue_info:'结束阶段开始时,你可以令至多X名角色依次摸一张牌并将一张牌置于牌堆顶(X为你的体力值);若你已失去技能“宴诛”,则将X改为你的体力上限', + zhaofu:'诏缚', + zhaofu_info:'主公技,锁定技,你距离为1的角色视为在其他吴势力角色的攻击范围内', + wurong:'怃戎', + wurong_info:'出牌阶段限一次,你可以令一名其他角色与你同时展示一张手牌:若你展示的是【杀】且该角色展示的不是【闪】,则你弃置此【杀】并对其造成1点伤害;若你展示的不是【杀】且该角色展示的是【闪】,则你弃置你展示的牌并获得其一张牌', + shizhi:'矢志', + shizhi_info:'锁定技,当你体力为1时,你的【闪】均视为【杀】', + zhanjue:'战绝', + zhanjue_info:'出牌阶段,你可以将所有手牌当【决斗】使用,结算后你和以此法受到伤害的角色各摸一张牌。若你在同一阶段内以此法摸了两张或更多的牌,则此技能失效直到回合结束', + qinwang:'勤王', + qinwang1:'勤王', + qinwang2:'勤王', + qinwang_info:'主公技,你可以弃置一张牌,然后视为你发动“激将”。若有角色响应,则该角色打出【杀】时摸一张牌', + huomo:'活墨', + huomo_sha:'墨杀', + huomo_shan:'墨闪', + huomo_tao:'墨桃', + huomo_jiu:'墨酒', + huomo_info:'每当你需要使用一张你于此回合内未使用过的基本牌时,你可以将一张黑色非基本牌置于牌堆顶,然后视为你使用了此基本牌', + zuoding:'佐定', + zuoding_info:'每当一名其他角色于其出牌阶段内使用♠牌指定目标后,若此阶段没有角色受到过伤害,则你可以令其中一名目标角色摸一张牌', + taoxi:'讨袭', + taoxi2:'讨袭', + taoxi3:'讨袭', + taoxi_info:'出牌阶段限一次,你使用牌指定一名其他角色为唯一目标后,你可以亮出其一张手牌直到回合结束,并且你可以于此回合内将此牌如手牌般使用。回合结束时,若该角色未失去此手牌,则你失去1点体力', + huituo:'恢拓', + huituo_info:'每当你受到伤害后,你可以令一名角色进行一次判定,若结果为红色,该角色回复1点体力;若结果为黑色,该角色摸X张牌(X为此次伤害的伤害数)', + mingjian:'明鉴', + mingjian_info:'你可以跳过出牌阶段并将所有手牌交给一名其他角色。若如此做,你结束此回合,然后该角色进行一个额外的出牌阶段', + xingshuai:'兴衰', + xingshuai_info:'主公技,限定技,当你进入濒死状态时,其他魏势力角色可依次令你回复1点体力,然后这些角色依次受到1点伤害', + duodao:'夺刀', + duodao_info:'每当你受到杀造成的一次伤害后,你可以弃置一张牌,然后获得伤害来源装备区里的武器牌', + anjian:'暗箭', + anjian_info:'当你使用的杀对目标角色造成伤害时,若你不在其攻击范围内,则此杀伤害+1', + xinpojun:'破军', + xinpojun2:'破军', + xinpojun_info:'当你于出牌阶段内使用【杀】指定一个目标后,你可以将其至多X张牌扣置于该角色的武将牌旁(X为其体力值)。若如此做,当前回合结束后,该角色获得其武将牌旁的所有牌。', qiaoshi:'樵拾', qiaoshi_info:'其他角色的结束阶段开始时,若你的手牌数与其相等,则你可以与其各摸一张牌。', @@ -3539,7 +5528,8 @@ character.yijiang={ zishou_info:'摸牌阶段摸牌时,你可以额外摸X张牌(X为现存势力数)。若如此做,你于本回合出牌阶段内使用的牌不能指定其他角色为目标。', zongshi_info:'锁定技,场上每有一种势力,你的手牌上限便+1。', shiyong_info:'锁定技,每当你受到一次红色【杀】或【酒】【杀】造成的伤害后,你减1点体力上限。', - danshou_info:'每当你造成一次伤害后,你可以摸一张牌。若如此做,终止一切结算,当前回合结束。', + danshou_info:'出牌阶段,你可以选择你攻击范围内的一名其他角色,然后弃置X张牌(X为此前你于此阶段你发动“胆守”的次数+1)。若X:为1,你弃置该角色的一张牌;为2,令该角色交给你一张牌;为3,你对该角色造成1点伤害;不小于4,你与该角色各摸两张牌。', + danshou_infox:'每当你造成一次伤害后,你可以摸一张牌。若如此做,终止一切结算,当前回合结束。', yizhong_info:'锁定技,当你没有防具时,黑色的杀对你无效', xinzhan_info:'出牌阶段限一次,你可以观看牌堆顶的3张牌,然后展示其中任意数量♥的牌并获得之', huilei_info:'锁定技,杀死你的角色立即弃置所有的牌。', diff --git a/character/yxs.js b/character/yxs.js index 8e76556ac..96d167fd8 100755 --- a/character/yxs.js +++ b/character/yxs.js @@ -658,12 +658,13 @@ character.yxs={ }, content:function(){ "step 0" - player.chooseToDiscard('he','是否弃置一张黑色牌并收回'+get.translation(trigger.card)+'?',{color:'black'}).ai=function(card){ + var next=player.chooseToDiscard('he','是否弃置一张黑色牌并收回'+get.translation(trigger.card)+'?',{color:'black'}); + next.ai=function(card){ return ai.get.value(trigger.card)-ai.get.value(card); } + next.logSkill='jieyong'; "step 1" if(result.bool){ - player.logSkill('jieyong'); player.gain(trigger.card,'gain2'); player.addTempSkill('jieyong2',['phaseAfter','phaseBegin']); } @@ -801,15 +802,16 @@ character.yxs={ "step 0" var val=ai.get.value(trigger.card); var suit=get.suit(trigger.card); - player.chooseToDiscard('he','逐鹿:是否发动弃置一张'+get.translation(suit)+ - '牌并获得'+get.translation(trigger.card)+'?',{suit:suit}).ai=function(card){ + var next=player.chooseToDiscard('he','逐鹿:是否发动弃置一张'+get.translation(suit)+ + '牌并获得'+get.translation(trigger.card)+'?',{suit:suit}); + next.ai=function(card){ return val-ai.get.value(card); }; + next.logSkill='zhulu'; "step 1" if(result.bool){ player.gain(trigger.card,'gain2'); player.addTempSkill('zhulu2','phaseAfter'); - player.logSkill('zhulu'); } }, ai:{ diff --git a/game/game.js b/game/game.js index f1e484939..046ac3677 100755 --- a/game/game.js +++ b/game/game.js @@ -239,6 +239,12 @@ else{ ui.arena.classList.remove('mobile'); } + if(lib.config.layout=='default'){ + ui.arena.classList.add('oldlayout'); + } + else{ + ui.arena.classList.remove('oldlayout'); + } if(lib.config.layout=='default'&&lib.config.hp_style=='official'){ ui.arena.classList.add('hpimage'); } @@ -359,7 +365,7 @@ item:{ default:'无', blur:'模糊', - gray:'黑色', + gray:'黑白', sepia:'怀旧', invert:'反色', saturate:'饱和', @@ -1748,8 +1754,7 @@ help:{ '游戏选项':'