diff --git a/audio/background/aozhan_rewrite.mp3 b/audio/background/aozhan_rewrite.mp3 new file mode 100644 index 000000000..f6804a799 Binary files /dev/null and b/audio/background/aozhan_rewrite.mp3 differ diff --git a/audio/card/female/caomu.mp3 b/audio/card/female/caomu.mp3 new file mode 100644 index 000000000..b16348259 Binary files /dev/null and b/audio/card/female/caomu.mp3 differ diff --git a/audio/card/female/chiling.mp3 b/audio/card/female/chiling.mp3 new file mode 100644 index 000000000..35721fd10 Binary files /dev/null and b/audio/card/female/chiling.mp3 differ diff --git a/audio/card/female/diaohulishan.mp3 b/audio/card/female/diaohulishan.mp3 new file mode 100644 index 000000000..b7d744290 Binary files /dev/null and b/audio/card/female/diaohulishan.mp3 differ diff --git a/audio/card/female/fulei.mp3 b/audio/card/female/fulei.mp3 new file mode 100644 index 000000000..c8f989f15 Binary files /dev/null and b/audio/card/female/fulei.mp3 differ diff --git a/audio/card/female/huoshaolianying.mp3 b/audio/card/female/huoshaolianying.mp3 new file mode 100644 index 000000000..eea018e3a Binary files /dev/null and b/audio/card/female/huoshaolianying.mp3 differ diff --git a/audio/card/female/jinchan.mp3 b/audio/card/female/jinchan.mp3 new file mode 100644 index 000000000..7d2dfc96b Binary files /dev/null and b/audio/card/female/jinchan.mp3 differ diff --git a/audio/card/female/lianjunshengyan.mp3 b/audio/card/female/lianjunshengyan.mp3 new file mode 100644 index 000000000..0762e1329 Binary files /dev/null and b/audio/card/female/lianjunshengyan.mp3 differ diff --git a/audio/card/female/lulitongxin.mp3 b/audio/card/female/lulitongxin.mp3 new file mode 100644 index 000000000..34848b204 Binary files /dev/null and b/audio/card/female/lulitongxin.mp3 differ diff --git a/audio/card/female/qijia.mp3 b/audio/card/female/qijia.mp3 new file mode 100644 index 000000000..7c294a891 Binary files /dev/null and b/audio/card/female/qijia.mp3 differ diff --git a/audio/card/female/shengdong.mp3 b/audio/card/female/shengdong.mp3 new file mode 100644 index 000000000..727539110 Binary files /dev/null and b/audio/card/female/shengdong.mp3 differ diff --git a/audio/card/female/shuiyanqijun.mp3 b/audio/card/female/shuiyanqijun.mp3 new file mode 100644 index 000000000..df937ef77 Binary files /dev/null and b/audio/card/female/shuiyanqijun.mp3 differ diff --git a/audio/card/female/xietianzi.mp3 b/audio/card/female/xietianzi.mp3 new file mode 100644 index 000000000..83ffbd766 Binary files /dev/null and b/audio/card/female/xietianzi.mp3 differ diff --git a/audio/card/female/zengbin.mp3 b/audio/card/female/zengbin.mp3 new file mode 100644 index 000000000..d9d92bdc2 Binary files /dev/null and b/audio/card/female/zengbin.mp3 differ diff --git a/audio/card/male/caomu.mp3 b/audio/card/male/caomu.mp3 new file mode 100644 index 000000000..53622dfa4 Binary files /dev/null and b/audio/card/male/caomu.mp3 differ diff --git a/audio/card/male/chiling.mp3 b/audio/card/male/chiling.mp3 new file mode 100644 index 000000000..eea0f78de Binary files /dev/null and b/audio/card/male/chiling.mp3 differ diff --git a/audio/card/male/diaohulishan.mp3 b/audio/card/male/diaohulishan.mp3 new file mode 100644 index 000000000..8c31a5677 Binary files /dev/null and b/audio/card/male/diaohulishan.mp3 differ diff --git a/audio/card/male/fulei.mp3 b/audio/card/male/fulei.mp3 new file mode 100644 index 000000000..4c4219318 Binary files /dev/null and b/audio/card/male/fulei.mp3 differ diff --git a/audio/card/male/huoshaolianying.mp3 b/audio/card/male/huoshaolianying.mp3 new file mode 100644 index 000000000..fd2bfcafb Binary files /dev/null and b/audio/card/male/huoshaolianying.mp3 differ diff --git a/audio/card/male/jinchan.mp3 b/audio/card/male/jinchan.mp3 new file mode 100644 index 000000000..dd3f67000 Binary files /dev/null and b/audio/card/male/jinchan.mp3 differ diff --git a/audio/card/male/lianjunshengyan.mp3 b/audio/card/male/lianjunshengyan.mp3 new file mode 100644 index 000000000..032749795 Binary files /dev/null and b/audio/card/male/lianjunshengyan.mp3 differ diff --git a/audio/card/male/lulitongxin.mp3 b/audio/card/male/lulitongxin.mp3 new file mode 100644 index 000000000..e2550f156 Binary files /dev/null and b/audio/card/male/lulitongxin.mp3 differ diff --git a/audio/card/male/qijia.mp3 b/audio/card/male/qijia.mp3 new file mode 100644 index 000000000..3a0e37545 Binary files /dev/null and b/audio/card/male/qijia.mp3 differ diff --git a/audio/card/male/shengdong.mp3 b/audio/card/male/shengdong.mp3 new file mode 100644 index 000000000..063c7cc90 Binary files /dev/null and b/audio/card/male/shengdong.mp3 differ diff --git a/audio/card/male/shuiyanqijun.mp3 b/audio/card/male/shuiyanqijun.mp3 new file mode 100644 index 000000000..d2933125a Binary files /dev/null and b/audio/card/male/shuiyanqijun.mp3 differ diff --git a/audio/card/male/xietianzi.mp3 b/audio/card/male/xietianzi.mp3 new file mode 100644 index 000000000..da7d85010 Binary files /dev/null and b/audio/card/male/xietianzi.mp3 differ diff --git a/audio/card/male/zengbin.mp3 b/audio/card/male/zengbin.mp3 new file mode 100644 index 000000000..9c6c9f8fb Binary files /dev/null and b/audio/card/male/zengbin.mp3 differ diff --git a/card/extra.js b/card/extra.js index 91776411d..3a741d060 100644 --- a/card/extra.js +++ b/card/extra.js @@ -718,6 +718,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ content:function(){ if(!trigger.baseDamage) trigger.baseDamage=1; trigger.baseDamage+=player.storage.jiu; + trigger.jiu=true; game.broadcastAll(function(player){ player.removeSkill('jiu'); },player); diff --git a/card/guozhan.js b/card/guozhan.js index bb8d2ba04..f47321366 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -5,6 +5,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ connect:true, card:{ liulongcanjia:{ + audio:true, mode:['guozhan'], fullskin:true, type:'equip', @@ -36,6 +37,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, }, minguangkai:{ + audio:true, mode:['guozhan'], fullskin:true, type:'equip', @@ -49,6 +51,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, dinglanyemingzhu:{ + audio:true, mode:['guozhan'], fullskin:true, type:'equip', @@ -75,6 +78,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, feilongduofeng:{ + audio:true, mode:['guozhan'], fullskin:true, type:'equip', @@ -101,6 +105,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, taipingyaoshu:{ + audio:true, mode:['guozhan'], fullskin:true, type:'equip', @@ -132,6 +137,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, yuxi:{ + audio:true, mode:['guozhan'], fullskin:true, type:'equip', @@ -142,6 +148,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, xietianzi:{ + audio:true, fullskin:true, type:'trick', enable:function(card,player,event){ @@ -177,6 +184,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, shuiyanqijunx:{ + audio:'shuiyanqijun', fullskin:true, type:'trick', filterTarget:function(card,player,target){ @@ -227,6 +235,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, lulitongxin:{ fullskin:true, + audio:true, type:'trick', enable:function(card,player){ return game.hasPlayer(function(current){ @@ -275,6 +284,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, lianjunshengyan:{ fullskin:true, + audio:true, type:'trick', enable:function(card,player){ if(get.mode()=='guozhan') return !player.isUnseen(); @@ -364,6 +374,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, chiling:{ fullskin:true, + audio:true, type:'trick', enable:true, mode:['guozhan'], @@ -436,6 +447,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, diaohulishan:{ fullskin:true, + audio:true, type:'trick', enable:true, global:'g_diaohulishan', @@ -484,6 +496,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, huoshaolianying:{ fullskin:true, + audio:true, type:'trick', filterTarget:function(card,player,target){ if(get.mode()=='guozhan'){ diff --git a/card/sp.js b/card/sp.js index adee294c0..498356a95 100644 --- a/card/sp.js +++ b/card/sp.js @@ -5,6 +5,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ connect:true, card:{ jinchan:{ + audio:true, fullskin:true, type:'trick', notarget:true, @@ -39,6 +40,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, qijia:{ + audio:true, fullskin:true, type:'trick', enable:true, @@ -134,6 +136,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, fulei:{ + audio:true, fullskin:true, type:'delay', cardnature:'thunder', @@ -182,6 +185,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, qibaodao:{ + audio:true, fullskin:true, type:'equip', subtype:'equip1', @@ -202,6 +206,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, }, zhungangshuo:{ + audio:true, fullskin:true, type:'equip', subtype:'equip1', @@ -221,6 +226,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, yinyueqiang:{ + audio:true, fullskin:true, type:'equip', subtype:'equip1', @@ -259,6 +265,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ selectTarget:-1 }, shengdong:{ + audio:true, fullskin:true, enable:function(){ return game.countPlayer()>2; @@ -339,6 +346,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, zengbin:{ + audio:true, fullskin:true, enable:true, type:'trick', @@ -382,6 +390,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, caomu:{ + audio:true, fullskin:true, enable:true, type:'delay', diff --git a/card/standard.js b/card/standard.js index 3a64401d4..4bc32a09f 100644 --- a/card/standard.js +++ b/card/standard.js @@ -367,12 +367,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){ ai:{ equipValue:function(card,player){ if(!game.hasPlayer(function(current){ - return player.canUse('sha',current)&&get.distance(player,current)==1&&get.effect(current,{name:'sha'},player,player)>0; + return player.canUse('sha',current)&&get.distance(player,current)<=1&&get.effect(current,{name:'sha'},player,player)>0; })){ return 1; } if(player.hasSha()&&_status.currentPhase==player){ - if(player.getEquip('zhuge')||player.getCardUsable('sha')==0){ + if(player.getEquip('zhuge')&&player.countUsed('sha')||player.getCardUsable('sha')==0){ return 10; } } @@ -1410,6 +1410,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ filter:function(event){ return event.card&&event.card.name=='sha'&&event.notLink()&&event.player.getCards('he').length>0; }, + priority:1, check:function(event,player){ var target=event.player; var eff=get.damageEffect(target,player,player); @@ -1419,7 +1420,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } if(eff<=0) return true; if(target.hp==1) return false; - if(player.hasSkill('jiu')||player.hasSkill('tianxianjiu')|| + if(event.num>1||player.hasSkill('tianxianjiu')|| player.hasSkill('luoyi2')||player.hasSkill('reluoyi2')) return false; if(target.countCards('he')<2) return -1; var num=0; diff --git a/character/diy.js b/character/diy.js index 688c5cd32..d94debbbc 100755 --- a/character/diy.js +++ b/character/diy.js @@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connectBanned:['diy_tianyu','diy_yangyi','diy_lukang','ns_huamulan','ns_yuji','ns_duangui','ns_liuzhang'], character:{ diy_wenyang:['male','wei','4/6',['lvli','choujue']], - key_lucia:['female','qun','1/3',['lucia_duqu','lucia_zhenren']], + key_lucia:['female','qun','1/2',['lucia_duqu','lucia_zhenren']], key_kyousuke:['male','qun',4,['nk_shekong','key_huanjie']], key_yuri:['female','qun',3,['yuri_xingdong','key_huanjie','yuri_wangxi'],['zhu']], // diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']], @@ -225,6 +225,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.logSkill('yuri_wangxi',trigger.player); player.awakenSkill('yuri_wangxi'); game.broadcastAll(function(source){ + if(source.node.dieidentity){ + source.node.dieidentity.innerHTML='忠臣'; + } source.revive(2,false); source.identity='zhong'; source.setIdentity(); diff --git a/character/extra.js b/character/extra.js index 32ff07536..4e73fbc48 100755 --- a/character/extra.js +++ b/character/extra.js @@ -1621,11 +1621,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ autodelay:function(event){ return event.name=='respond'?0.5:false; }, - filter:function(evt){ + filter:function(evt,player){ return (evt.skill=='xinlonghun3'||evt.skill=='xinlonghun4')&& - evt.cards&&evt.cards.length==2&&_status.currentPhase.countDiscardableCards('he'); + evt.cards&&evt.cards.length==2&&_status.currentPhase&&_status.currentPhase!=player&&_status.currentPhase.countDiscardableCards(player,'he'); }, content:function(){ + player.line(_status.currentPhase,'green'); player.discardPlayerCard(_status.currentPhase,'he',true); } } @@ -2326,8 +2327,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ enable:'phaseUse', usable:1, filterTarget:function(card,player,target){ - //return target!=player&&target.countCards('h')>0; - return target!=player; + return target!=player&&target.countCards('h')>0; + //return target!=player; }, content:function(){ 'step 0' diff --git a/character/mobile.js b/character/mobile.js index b4c37ccf2..f95bf8cc1 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -8,7 +8,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mobile:{ mobile_default:["miheng","taoqian","liuzan","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei"], mobile_fire:["re_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","re_pangtong","xin_yuanshao"], - mobile_forest:['re_zhurong','re_menghuo'], + mobile_forest:['re_zhurong','re_menghuo','re_dongzhuo','re_sunjian','re_caopi'], mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun"], }, }, @@ -39,6 +39,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_zhurong:['female','shu',4,['juxiang','relieren']], re_menghuo:['male','shu',4,['huoshou','rezaiqi']], re_wangyun:['male','qun',3,['relianji','remoucheng']], + re_dongzhuo:['male','qun',8,['rejiuchi','roulin','benghuai','baonue'],['zhu']], + re_sunjian:['male','wu',4,['gzyinghun','repolu']], + re_caopi:['male','wei',3,['rexingshang','refangzhu','songwei'],['zhu']], }, characterIntro:{ shenpei:'审配(?-204年),字正南,魏郡阴安(今河北清丰北)人。为人正直, 袁绍领冀州,审配被委以腹心之任,并总幕府。河北平定,袁绍以审配、逢纪统军事,审配恃其强盛,力主与曹操决战。曾率领弓弩手大破曹军于官渡。官渡战败,审配二子被俘,反因此受谮见疑,幸得逢纪力保。袁绍病死,审配等矫诏立袁尚为嗣,导致兄弟相争,被曹操各个击破。曹操围邺,审配死守数月,终城破被擒,拒不投降,慷慨受死。', @@ -82,6 +85,165 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, characterFilter:{}, skill:{ + rexingshang:{ + audio:'xingshang', + trigger:{global:'die'}, + filter:function(event,player){ + return player.isDamaged()||event.player.countCards('he')>0; + }, + direct:true, + content:function(){ + "step 0" + var choice=[]; + if(player.isDamaged()) choice.push('回复体力'); + if(trigger.player.countCards('he')) choice.push('获得牌'); + choice.push('cancel2'); + player.chooseControl(choice).set('prompt',get.prompt2('rexingshang')).set('ai',function(){ + if(choice.length==2) return 0; + if(get.value(trigger.player.getCards('he'))>8) return 1; + return 0; + }); + "step 1" + if(result.control!='cancel2'){ + player.logSkill('rexingshang'); + if(result.control=='获得牌'){ + event.togain=trigger.player.getCards('he'); + player.gain(event.togain,trigger.player,'giveAuto'); + } + else player.recover(); + } + }, + }, + refangzhu:{ + audio:"fangzhu", + trigger:{ + player:"damageEnd", + }, + direct:true, + content:function (){ + "step 0" + player.chooseTarget(get.prompt2('refangzhu'),function(card,player,target){ + return player!=target + }).ai=function(target){ + if(target.hasSkillTag('noturn')) return 0; + var player=_status.event.player; + if(get.attitude(_status.event.player,target)==0) return 0; + if(get.attitude(_status.event.player,target)>0){ + if(target.classList.contains('turnedover')) return 1000-target.countCards('h'); + if(player.getDamagedHp()<3) return -1; + return 100-target.countCards('h'); + } + else{ + if(target.classList.contains('turnedover')) return -1; + if(player.getDamagedHp()>=3) return -1; + return 1+target.countCards('h'); + } + } + "step 1" + if(result.bool){ + player.logSkill('refangzhu',result.targets); + event.target=result.targets[0] + event.target.chooseToDiscard('he',player.getDamagedHp()).set('ai',function(card){ + var player=_status.event.player; + if(player.isTurnedOver()||_status.event.getTrigger().player.getDamagedHp()>2) return -1; + return (player.hp*player.hp)-get.value(card); + }).set('prompt','弃置'+get.cnNumber(player.getDamagedHp())+'张手牌并失去一点体力;或选择不弃置,将武将牌翻面并摸'+get.cnNumber(player.getDamagedHp())+'张牌。'); + } + else event.finish(); + "step 2" + if(result.bool){ + event.target.loseHp(); + } + else{ + event.target.draw(player.getDamagedHp()); + event.target.turnOver(); + } + }, + ai:{ + maixie:true, + "maixie_hp":true, + effect:{ + target:function (card,player,target){ + if(get.tag(card,'damage')){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; + if(target.hp<=1) return; + if(!target.hasFriend()) return; + var hastarget=false; + var turnfriend=false; + var players=game.filterPlayer(); + for(var i=0;i0&&players[i].isTurnedOver()){ + hastarget=true; + turnfriend=true; + } + } + if(get.attitude(player,target)>0&&!hastarget) return; + if(turnfriend||target.hp==target.maxHp) return [0.5,1]; + if(target.hp>1) return [1,0.5]; + } + }, + }, + }, + }, + repolu:{ + audio:2, + trigger:{ + source:'dieAfter', + player:'die', + }, + forceDie:true, + filter:function(event,player,name){ + return name=='die'||player.isAlive(); + }, + direct:true, + content:function(){ + 'step 0' + if(!player.storage.repolu) player.storage.repolu=0; + event.num=player.storage.repolu+1; + player.chooseTarget([1,Infinity],get.prompt('repolu'),'令任意名角色摸'+get.cnNumber(event.num)+'张牌').set('forceDie',true).ai=function(target){ + return get.attitude(_status.event.player,target); + }; + 'step 1' + if(result.bool){ + player.storage.repolu++; + result.targets.sortBySeat(); + player.logSkill('repolu',result.targets); + game.asyncDraw(result.targets,num); + } + else event.finish(); + 'step 2' + game.delay(); + }, + }, + rejiuchi:{ + group:['jiuchi'], + trigger:{source:'damage'}, + forced:true, + popup:false, + locked:false, + audio:'jiuchi', + filter:function(event,player){ + return event.card&&event.card.name=='sha'&&event.getParent(2).jiu==true&&!player.hasSkill('rejiuchi_air'); + }, + content:function(){ + player.logSkill('jiuchi'); + player.addTempSkill('rejiuchi_air'); + }, + subSkill:{ + air:{ + sub:true, + init:function(player,skill){ + player.disableSkill(skill,'benghuai'); + }, + onremove:function(player,skill){ + player.enableSkill(skill); + }, + }, + }, + }, relianji:{ audio:2, enable:'phaseUse', @@ -108,20 +270,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.finish(); return; } + if(equip1.name=='qinggang'&&!lib.inpile.contains('qibaodao')){ + equip1.remove(); + equip1=game.createCard('qibaodao',equip1.suit,equip1.number); + } target.$draw(equip1); target.chooseUseTarget(equip1,'noanimate','nopopup',true); 'step 2' + game.updateRoundNumber(); var list=['nanman','wanjian','huogong','juedou','sha']; var list2=game.players.slice(0); list2.remove(player); for(var i=0;i=2; } return true; @@ -3805,7 +3805,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ "step 0" trigger.cancel(); - event.cards=get.cards(player.maxHp-player.hp); + event.cards=get.cards(player.getDamagedHp()); player.showCards(event.cards); "step 1" var num=0; @@ -3916,7 +3916,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ direct:true, content:function(){ "step 0" - player.chooseTarget(get.prompt('fangzhu'),'令一名其他角色将武将牌翻面并摸'+get.cnNumber(player.maxHp-player.hp)+'张牌',function(card,player,target){ + player.chooseTarget(get.prompt('fangzhu'),'令一名其他角色将武将牌翻面并摸'+get.cnNumber(player.getDamagedHp())+'张牌',function(card,player,target){ return player!=target }).ai=function(target){ if(target.hasSkillTag('noturn')) return 0; @@ -3924,19 +3924,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(get.attitude(_status.event.player,target)==0) return 0; if(get.attitude(_status.event.player,target)>0){ if(target.classList.contains('turnedover')) return 1000-target.countCards('h'); - if(player.maxHp-player.hp<3) return -1; + if(player.getDamagedHp()<3) return -1; return 100-target.countCards('h'); } else{ if(target.classList.contains('turnedover')) return -1; - if(player.maxHp-player.hp>=3) return -1; + if(player.getDamagedHp()>=3) return -1; return 1+target.countCards('h'); } } "step 1" if(result.bool){ player.logSkill('fangzhu',result.targets); - result.targets[0].draw(player.maxHp-player.hp); + result.targets[0].draw(player.getDamagedHp()); result.targets[0].turnOver(); } }, @@ -4303,7 +4303,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audioname:['sunce'], trigger:{player:'phaseBegin'}, filter:function(event,player){ - return player.hp0; }, direct:true, content:function(){ @@ -4312,20 +4312,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return player!=target; }).set('ai',function(target){ var player=_status.event.player; - if(player.maxHp-player.hp==1&&target.countCards('he')==0){ + if(player.getDamagedHp()==1&&target.countCards('he')==0){ return 0; } if(get.attitude(_status.event.player,target)>0){ return 10+get.attitude(_status.event.player,target); } - if(player.maxHp-player.hp==1){ + if(player.getDamagedHp()==1){ return -1; } return 1; }); "step 1" if(result.bool){ - event.num=player.maxHp-player.hp; + event.num=player.getDamagedHp(); player.logSkill(event.name,result.targets); event.target=result.targets[0]; if(event.num==1){ @@ -4436,7 +4436,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.hp==player.maxHp) return 'baonue_hp'; if(player.hp=player.storage.gzbuqu.length){ - player.hp-=player.storage.gzbuqu.length-1; - player.update(); - while(player.storage.gzbuqu.length){ - player.storage.gzbuqu.shift().discard(); - } - player.unmarkSkill('gzbuqu'); - delete player.nodying; - event.finish(); - } - else{ - player.chooseCardButton('移去'+get.cnNumber(player.hp)+'张不屈牌',true,player.hp,player.storage.gzbuqu).set('ai',function(button){ + event.count=trigger.num; + 'step 1' + event.count--; + if((player.hp+player.storage.gzbuqu.length)>1){ + player.chooseCardButton('移去一张不屈牌',true,player.storage.gzbuqu).set('ai',function(button){ var buttons=get.selectableButtons(); for(var i=0;i0) player.chooseBool(get.prompt2('spjiedao',trigger.player)).ai=function(){ if(get.attitude(player,trigger.player)>=-1) return false; return !trigger.player.getEquip('baiyin')&&!trigger.player.getEquip('rewrite_baiyin'); @@ -1029,11 +1029,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ else{ player.$throw(card); game.cardsDiscard(card); - player.loseHp(); } "step 1" player.unmarkSkill('biaozhao'); - game.delay(); + player.loseHp(); }, }, "biaozhao3":{ @@ -1082,7 +1081,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function (){ "step 0" player.chooseTarget(get.prompt2('yechou'),function(card,player,target){ - return player!=target&&target.maxHp-target.hp>1 + return player!=target&&target.getDamagedHp()>1 }).set('forceDie',true).set('ai',function(target){ var num=get.attitude(_status.event.player,target); return -num; @@ -1150,7 +1149,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(result.control=="手动分配"){ event.map=[cards,[],[]]; event.goto(8); - game.log('38'); } else if(!_status.connectMode){ var choiceList=ui.create.dialog('请选择一种方案','hidden','forcebutton'); @@ -1977,7 +1975,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ 'step 0' - var num=player.maxHp-player.hp; + var num=player.getDamagedHp(); player.chooseTarget('是否发动【誓仇】,令至多'+num+'名其他角色也成为此【杀】的目标?',[1,num],function(card,player,target){ return target!=player&&!trigger.targets.contains(target)&&player.canUse({name:'sha'},target); }).ai=function(target){ @@ -2222,7 +2220,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function (){ 'step 0' player.chooseTarget(get.prompt('new_mumu'),'弃置一名角色装备区内的一张牌,或者获得一名角色装备区内的防具牌',function(card,player,target){ - if(target==player) return false; + if(target==player) return target.getEquip(2)!=undefined; return target.countCards('e')>0; }).set('ai',function(target){ var player=_status.event.player; @@ -2239,7 +2237,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.line(event.target,'green'); var e=event.target.getEquip(2); event.e=e; - if(e){ + if(target==player) event.choice='获得一张防具牌'; + else if(e){ player.chooseControl('弃置一张装备牌','获得一张防具牌').set('ai',function(){ if(_status.event.player.getEquip(2)){ return '弃置一张装备牌'; @@ -3320,10 +3319,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.finish(); return; } + if(equip1.name=='qinggang'&&!lib.inpile.contains('qibaodao')){ + equip1.remove(); + equip1=game.createCard('qibaodao',equip1.suit,equip1.number); + } target.$draw(equip1); target.chooseUseTarget(true,equip1,'noanimate','nopopup'); game.delay(); 'step 2' + game.updateRoundNumber(); var card=cards[0]; var bool1=game.hasPlayer(function(current){ return current!=player&&target.canUse(card,current); @@ -6560,6 +6564,44 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } }, + xinzhengnan:{ + audio:'zhengnan', + trigger:{global:'dieAfter'}, + direct:true, + content:function(){ + 'step 0' + var list=['摸牌']; + if(!player.hasSkill('new_rewusheng')){ + list.push('new_rewusheng'); + } + if(!player.hasSkill('xindangxian')){ + list.push('xindangxian'); + } + if(!player.hasSkill('zhiman')){ + list.push('zhiman'); + } + list.push('cancel2'); + if(list.length){ + player.chooseControl(list).set('prompt',get.prompt2('xinzhengnan')).set('ai',function(){ + if(list.contains('new_rewusheng')) return 1; + return 0; + }); + } + 'step 1' + if(result.control=='cancel2') return; + player.logSkill('xinzhengnan'); + if(result.control=='摸牌'){ + player.draw(3); + return; + } + player.addSkill(result.control); + player.popup(result.control); + game.log(player,'获得了技能','#g【'+get.translation(result.control)+'】'); + }, + ai:{ + threaten:1.3 + } + }, zhengnan:{ audio:1, trigger:{global:'dieAfter'}, @@ -6586,7 +6628,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ game.log(player,'获得技能','【'+get.translation(result.control)+'】'); }, ai:{ - threaten:1.4 + threaten:2.4 } }, xiefang:{ @@ -10788,7 +10830,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filterCard:true, selectCard:function(){ var player=_status.event.player; - return player.maxHp-player.hp; + return player.getDamagedHp(); }, filterTarget:function(card,player,target){ return target.hp=event.player.countCards('h'))|| + (event.targets&&event.targets.contains(player))) + &&!player.hasSkill('xindanshou_as'); + }, + content:function(){ + 'step 0' + if(event.triggername=='phaseBefore'){ + player.storage.xindanshou=0; + event.finish(); + return; + } + else if(event.triggername=='phaseEnd'){ + var num=trigger.player.countCards('h'); + if(num>0) player.chooseToDiscard(get.prompt('xindanshou',trigger.player),num,'弃置'+get.cnNumber(num)+'张牌并对'+get.translation(trigger.player)+'造成1点伤害','he').set('logSkill',['xindanshou',trigger.player]).set('ai',function(card){ + if(get.damageEffect(_status.event.getTrigger().player,_status.event.player,_status.event.player)>0) return 6-get.value(card); + return -1; + }); + else player.chooseBool(get.prompt('xindanshou',trigger.player),'对'+get.translation(trigger.player)+'造成1点伤害').ai=function(){ + return get.damageEffect(trigger.player,player,player)>0 + }; + } + else{ + if(!player.storage.xindanshou) player.storage.xindanshou=0; + player.storage.xindanshou++; + if(!['basic','trick'].contains(get.type(trigger.card,'trick'))){ + event.finish(); + return; + }; + player.chooseBool(get.prompt('xindanshou')+'(可摸'+get.cnNumber(player.storage.xindanshou)+'张牌)',get.translation('xindanshou_info')); + } + 'step 1' + if(result.bool){ + if(!result.cards||!result.cards.length){ + player.logSkill('xindanshou',trigger.player); + } + if(event.triggername=='useCard'){ + player.draw(player.storage.xindanshou); + player.addTempSkill('xindanshou_as'); + } + else{ + trigger.player.damage('nocard'); + } + } + }, + subSkill:{as:{sub:true}}, + }, + xinbenxi:{ + group:['xinbenxi_summer','xinbenxi_damage'], + audio:'benxi', + trigger:{ + player:'useCard', + }, + forced:true, + mod:{ + globalFrom:function(from,to,distance){ + if(_status.currentPhase==from){ + return distance-from.storage.xinbenxi; + } + }, + wuxieRespondable:function(card,player,target,current){ + if(player!=current&&player.storage.xinbenxi_directHit.contains(card)){ + return false; + } + }, + }, + init:function(player){ + player.storage.xinbenxi_directHit=[]; + player.storage.xinbenxi_damage=[]; + player.storage.xinbenxi_unequip=[]; + player.storage.xinbenxi=0; + }, + filter:function(trigger,player){ + return _status.currentPhase==player&&trigger.targets&&trigger.targets.length==1&&!game.hasPlayer(function(current){ + return get.distance(player,current)>1; + }); + }, + filterx:function(event,player){ + var info=get.info(event.card); + if(info.allowMultiple==false) return false; + if(event.targets&&!info.multitarget){ + if(game.hasPlayer(function(current){ + return lib.filter.targetEnabled2(event.card,player,current)&&!event.targets.contains(current); + })){ + return true; + } + } + return false; + }, + content:function(){ + "step 0" + event.videoId=lib.status.videoId++; + var func=function(card,id,bool){ + var list=[ + '为XXX多指定一个目标', + '令XXX无视防具', + '令XXX不可被响应', + '当XXX造成伤害时摸一张牌', + ]; + var choiceList=ui.create.dialog('【奔袭】:请选择一至两项','forcebutton'); + choiceList.videoId=id; + for(var i=0;i0; + })) return 1.2+Math.random(); + return 0; + } + case 1:{ + return Math.random(); + } + case 2:{ + if(event.card.name=='sha'||event.card.name=='juedou'||get.type(event.type)=='trick'&&game.hasPlayer(function(current){ + return get.attitude(current,player)<0&¤t.hasWuxie(); + })) return 1+Math.random(); + return Math.random(); + } + case 3:{ + return get.tag(event.card,'damage')+Math.random(); + } + } + }); + "step 1" + if(player.isOnline2()){ + player.send('closeDialog',event.videoId); + } + event.dialog.close(); + var map=[ + function(trigger,player,event){ + player.chooseTarget('请选择'+get.translation(trigger.card)+'的额外目标',true,function(card,player,target){ + var player=_status.event.player; + if(_status.event.targets.contains(target)) return false; + return lib.filter.targetEnabled2(_status.event.card,player,target); + }).set('targets',trigger.targets).set('card',trigger.card).set('ai',function(target){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + return get.effect(target,trigger.card,player,player); + }); + }, + function(trigger,player,event){ + player.storage.xinbenxi_unequip.add(trigger.card); + }, + function(trigger,player,event){ + player.storage.xinbenxi_directHit.add(trigger.card); + }, + function(trigger,player,event){ + player.storage.xinbenxi_damage.add(trigger.card); + } + ]; + for(var i=0;ite) return false; + if((s.contains('等于')||te==0)&&pe==te) return false; + if(s.contains('小于')&&peth){ + player.storage.xinyaoming.push('大于'); + target.draw(); + event.finish(); + } + else if(ph==th){ + player.storage.xinyaoming.push('等于'); + target.chooseToDiscard('弃置一到两张牌,然后摸等量的牌',true,[1,2]).ai=lib.skill.zhiheng.check; + } + else{ + player.storage.xinyaoming.push('小于'); + player.discardPlayerCard(target,'h',true); + event.finish(); + } + } + else event.finish(); + 'step 2' + if(result.bool) target.draw(result.cards.length); + }, + group:'xinyaoming_kanon', + subSkill:{ + kanon:{ + trigger:{global:'phaseAfter'}, + silent:true, + sub:true, + content:function(){lib.skill.xinyaoming.init(player)} + }, + }, + }, + xinzhenjun:{ + audio:'jieyue', + trigger:{ + player:'phaseUseBegin' + }, + direct:true, + filter:function(event,player){ + return player.countCards('he')>0; + }, + content:function(){ + 'step 0' + player.chooseCardTarget({ + filterCard:true, + filterTarget:lib.filter.notMe, + position:'he', + prompt:get.prompt2('xinzhenjun'), + ai1:function(card){ + var player=_status.event.player; + if(card.name=='sha'&&get.color(card)=='red'){ + for(var i=0;i0&&game.hasPlayer(function(target){ + return target!=current&¤t.canUse(card,target)&&get.effect(target,card,current,current)>0 + })) return 7; + } + return 0; + } + return 7-get.value(card); + }, + ai2:function(target){ + var player=_status.event.player; + var card=ui.selected.cards[0]; + var att=get.attitude(player,target); + if(get.value(card)<0) return -att*2; + if(target.countCards('h',{name:'sha',color:'red'})||target.hasSkill('wusheng')||target.hasSkill('new_rewusheng')||target.hasSkill('wushen')||(card.name=='sha'&&get.color(card)=='red'&&game.hasPlayer(function(target2){ + return target2!=target&&target.canUse({name:'sha'},target2)&&get.effect(target2,{name:'sha'},target,target)>0 + }))) return att*2; + var eff=0; + game.countPlayer(function(current){ + if(target!=current&&get.distance(target,current,'attack')>1) return; + var eff2=get.damageEffect(current,player,player); + if(eff2>eff) eff=eff2; + }); + if(att>0&&eff>0) eff+=2*att; + return eff; + }, + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('xinzhenjun',target); + target.gain(result.cards,player,'giveAuto') + } + else event.finish(); + 'step 2' + target.chooseToUse({ + filterCard:function(card){ + return card.name=='sha'&&get.color(card)!='black'; + }, + prompt:'请使用一张不为黑色的【杀】,否则'+get.translation(player)+'可以对你或你攻击范围内的一名其他角色造成1点伤害', + }); + 'step 3' + if(result.bool){ + player.draw(); + event.finish(); + } + else{ + player.chooseTarget('是否对'+get.translation(target)+'或其攻击范围内的一名角色造成1点伤害?',function(card,player,target){ + return target==event.target||get.distance(event.target,target,'attack')<=1; + }).ai=function(target){ + var player=_status.event.player; + return get.damageEffect(target,player,player) + }; + } + 'step 4' + if(result.bool){ + player.line(result.targets); + result.targets[0].damage('nocard'); + } + }, + group:['xinzhenjun_damage'], + subSkill:{ + damage:{ + trigger:{global:'damage'}, + forced:true, + silent:true, + popup:false, + filter:function(event,player){ + var evt=event.getParent(event.notLink()?4:8); + return evt&&evt.name=='xinzhenjun'&&evt.player==player; + }, + content:function(){ + player.draw(trigger.num); + }, + }, + }, + }, + xinfuli:{ + audio:'fuli', + skillAnimation:true, + animationColor:'soil', + audio:2, + unique:true, + limited:true, + enable:'chooseToUse', + init:function(player){ + player.storage.xinfuli=false; + }, + mark:true, + filter:function(event,player){ + if(event.type!='dying') return false; + if(player!=event.dying) return false; + if(player.storage.xinfuli) return false; + return true; + }, + content:function(){ + "step 0" + player.awakenSkill('xinfuli'); + event.num=game.countGroup(); + player.recover(event.num-player.hp); + "step 1" + var num2=num-player.countCards('h'); + if(num2) player.draw(num2); + "step 2" + if(num>2) player.turnOver(); + player.storage.xinfuli=true; + }, + ai:{ + save:true, + result:{ + player:10 + }, + threaten:function(player,target){ + if(!target.storage.xinfuli) return 0.9; + } + }, + intro:{ + content:'limited' + } + }, + xindangxian:{ + trigger:{player:'phaseBegin'}, + forced:true, + audio:'dangxian', + audioname:['guansuo'], + content:function(){ + 'step 0' + player.loseHp(); + 'step 1' + var card=get.cardPile(function(card){ + return card.name=='sha'; + }); + if(card) player.gain(card,'gain2'); + 'step 2' + game.updateRoundNumber(); + player.phaseUse(); + 'step 3' + var stat=player.getStat(); + stat.card={}; + for(var i in stat.skill){ + var bool=false; + var info=lib.skill[i]; + if(info.enable!=undefined){ + if(typeof info.enable=='string'&&info.enable=='phaseUse') bool=true; + else if(typeof info.enable=='object'&&info.enable.contains('phaseUse')) bool=true; + } + if(bool) stat.skill[i]=0; + } + } + }, + xinjunxing:{ + inherit:'junxing', + audio:'junxing', + content:function(){ + "step 0" + var types=[]; + for(var i=0;i=0?-1:(9-get.value(card)); + }; + "step 1" + if(result.bool){ + player.gain(result.cards,targets[0],'give'); + } + else{ + if(targets[0].canUse('sha',targets[1])) targets[0].useCard({name:'sha'},targets[1]); + } + }, + ai:{ + result:{ + target:function(player,target){ + if(ui.selected.targets.length){ + var from=ui.selected.targets[0]; + return get.effect(target,{name:'sha'},from,target); + } + var effs=[0,0]; + game.countPlayer(function(current){ + if(current!=target&&target.canUse('sha',current)){ + var eff=get.effect(current,{name:'sha'},target,target); + if(eff>effs[0]) effs[0]=eff; + if(eff0?0:1]; + } + }, + order:8.5, + expose:0.2 + } + }, + xinzongzuo:{ + trigger:{global:'phaseBefore'}, + forced:true, + priority:10, + audio:'zongzuo', + filter:function(event,player){ + return !player.storage.xinzongzuo; + }, + content:function(){ + 'step 0' + player.storage.xinzongzuo=true; + var num=game.countGroup(); + player.gainMaxHp(num); + event.num=num; + 'step 1' + player.hp+=event.num; + player.update(); + }, + group:'xinzongzuo_lose', + subSkill:{ + lose:{ + trigger:{global:'dieAfter'}, + forced:true, + audio:'zongzuo', + filter:function(event,player){ + if(!lib.group.contains(event.player.group)) return false; + if(game.hasPlayer(function(current){ + return current.group==event.player.group; + })){ + return false; + } + return true; + }, + content:function(){ + 'step 0' + player.loseMaxHp(); + 'step 1' + player.draw(2); + } + } + } + }, + xintaoluan:{ + enable:'chooseToUse', + filter:function(event,player){ + return event.type!='wuxie'&&!player.hasSkill('xintaoluan3')&&player.countCards('he')>0&&!_status.dying.length; + }, + init:function(player){ + if(!player.storage.xintaoluan) player.storage.xintaoluan=[]; + }, + chooseButton:{ + dialog:function(event,player){ + var list=[]; + for(var i=0;i0){ + return 1+Math.random(); + } + return 0; + } + if(button.link[2]=='nanman'||button.link[2]=='wanjian'||button.link[2]=='taoyuan'||button.link[2]=='wugu'){ + var eff=0; + for(var i=0;i0){ + return eff+Math.random(); + } + return 0; + } + return Math.random(); + + }, + backup:function(links,player){ + return { + filterCard:true, + audio:'taoluan', + selectCard:1, + popname:true, + check:function(card){ + return 6-get.value(card); + }, + position:'he', + viewAs:{name:links[0][2],nature:links[0][3]}, + onuse:function(result,player){ + player.storage.xintaoluan.add(result.card.name); + }, + } + }, + prompt:function(links,player){ + return '将一张牌当做'+(get.translation(links[0][3])||'')+get.translation(links[0][2])+'使用'; + } + }, + ai:{ + order:4, + result:{ + player:function(player){ + if(!player.storage.xintaoluan2) player.storage.xintaoluan2=0; + var players=game.filterPlayer(); + for(var i=0;i((player.storage.xintaoluan2+1)*2)&&get.attitude(player,players[i])>0){ + return 1; + } + } + return 0; + } + }, + threaten:1.9, + }, + group:['xintaoluan2','xintaoluan4','xintaoluan5','xintaoluan6'] + }, + xintaoluan2:{ + trigger:{player:['useCardAfter','respondAfter']}, + forced:true, + popup:false, + filter:function(event,player){ + return event.skill=='xintaoluan_backup'||event.skill=='xintaoluan5'||event.skill=='xintaoluan4'; + }, + content:function(){ + 'step 0' + if(!player.storage.xintaoluan2) player.storage.xintaoluan2=0; + if(player.storage.xintaoluan2<3) player.storage.xintaoluan2++; + event.num=player.storage.xintaoluan2; + player.chooseTarget(true,function(card,player,target){ + return target!=player; + },'滔乱

令一名其他角色选择一项:1.交给你'+get.cnNumber(event.num)+'张与你以此法使用的牌类别相同的牌;2.你失去'+get.cnNumber(event.num)+'点体力').set('ai',function(target){ + var player=_status.event.player; + if(get.attitude(player,target)>0){ + if(get.attitude(target,player)>0){ + return target.countCards('h'); + } + return target.countCards('h')/2; + } + return 0; + }); + 'step 1' + var target=result.targets[0]; + event.target=target; + player.line(target,'green'); + var type=get.type(trigger.card,'trick'); + target.chooseCard('滔乱

交给'+get.translation(player)+get.cnNumber(num)+'张不为'+get.translation(type)+'牌的牌,或令其失去'+get.cnNumber(num)+'点体力且滔乱无效直到回合结束','he',num,function(card,player,target){ + return get.type(card,'trick')!=_status.event.cardType; + }).set('cardType',type).set('ai',function(card){ + if(_status.event.att){ + return 11-get.value(card); + } + return 0; + }).set('att',get.attitude(target,player)>0); + 'step 2' + var target=event.target; + if(result.bool){ + player.gain(result.cards,target,'give'); + } + else{ + player.addTempSkill('xintaoluan3'); + player.loseHp(num); + } + } + }, + xintaoluan3:{}, + xintaoluan4:{ + audio:'taoluan', + prompt:'将一张牌当做闪使用', + enable:'chooseToRespond', + filter:function(event,player){ + if(event.parent.name!='sha') return false; + return !player.storage.xintaoluan.contains('shan')&&!player.hasSkill('xintaoluan3')&&!_status.dying.length; + }, + onrespond:function(result,player){ + player.storage.xintaoluan.add('shan'); + }, + filterCard:true, + position:'he', + selectCard:1, + viewAs:{name:'shan'}, + check:function(card){ + var player=_status.event.player; + if(!player.storage.xintaoluan2) player.storage.xintaoluan2=0; + var allshown=true,players=game.filterPlayer(); + for(var i=0;i((player.storage.xintaoluan2+1)*2)&&get.attitude(player,players[i])>0){ + return 6-get.value(card); + } + } + return 0; + }, + ai:{ + skillTagFilter:function(player){ + return !player.storage.xintaoluan.contains('shan')&&!player.hasSkill('xintaoluan3'); + }, + threaten:1.5, + respondShan:true, + } + }, + xintaoluan5:{ + audio:'taoluan', + enable:'chooseToUse', + prompt:'将一张牌当做无懈可击使用', + viewAsFilter:function(player){ + return !player.storage.xintaoluan.contains('wuxie'); + }, + onuse:function(result,player){ + player.storage.xintaoluan.add('wuxie'); + }, + filterCard:true, + position:'he', + selectCard:1, + viewAs:{name:'wuxie'}, + check:function(card){ + var player=_status.event.player; + if(!player.storage.xintaoluan2) player.storage.xintaoluan2=0; + var allshown=true,players=game.filterPlayer(); + for(var i=0;i((player.storage.xintaoluan2+1)*2)&&get.attitude(player,players[i])>0){ + return 6-get.value(card); + } + } + return 0; + }, + }, + xintaoluan6:{ + trigger:{player:'phaseAfter'}, + silent:true, + content:function(){ + player.storage.xintaoluan=[]; + player.storage.xintaoluan2=0; + }, + }, + xintaoluan_backup:{}, + xincaishi:{ + trigger:{ + player:'phaseDrawBegin' + }, + audio:'caishi', + direct:true, + content:function(){ + 'step 0' + var next=player.chooseControl('cancel2'); + next.set('choiceList',[ + '摸牌阶段少摸一张牌,发动【忠鉴】时可以多展示自己的一张牌直到回合结束', + '手牌上限-1且发动【忠鉴】时可以多展示对方的一张牌', + '摸牌阶段多摸两张牌,然后本回合内不能发动【忠鉴】', + ]); + next.set('prompt',get.prompt('xincaishi')); + next.set('ai',function(){return 2}); + 'step 1' + if(result.control!='cancel2'){ + player.logSkill('xincaishi'); + trigger.num+=(result.index>1?2:(result.index-1)); + player.addTempSkill('xincaishi_'+result.index); + } + }, + subSkill:{ + '0':{ + mark:true, + intro:{ + content:'发动【忠鉴】时可以多展示自己的一张牌', + }, + }, + '1':{ + mark:true, + intro:{ + content:'发动【忠鉴】时可以多展示目标角色的一张牌', + }, + mod:{ + maxHandcard:function(player,num){ + return num-1; + }, + }, + }, + '2':{ + mark:true, + intro:{ + content:'不能发动【忠鉴】直到回合结束', + }, + }, + }, + }, + xinzhongjian:{ + audio:'zhongjian', + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return (!player.hasSkill('xincaishi_2'))&&player.countCards('h')>0; + }, + filterTarget:function(event,player,target){ + return target!=player&&target.countCards('h')>0; + }, + filterCard:true, + selectCard:function(){ + return _status.event.player.hasSkill('xincaishi_0')?[1,2]:[1,1]; + }, + check:function(){return 1}, + content:function(){ + 'step 0' + event.suits=[]; + event.nums=[]; + for(var i=0;i0&&!_status.dying.length; @@ -2604,7 +3558,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:'taoluan', enable:'chooseToUse', prompt:'将一张牌当做无懈可击使用', - filter:function(event,player){ + viewAsFilter:function(player){ return !player.storage.taoluan.contains('wuxie'); }, onuse:function(result,player){ @@ -3589,7 +4543,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qianju:{ mod:{ globalFrom:function(from,to,distance){ - return distance-(from.maxHp-from.hp); + return distance-(from.getDamagedHp()); } } }, @@ -4405,6 +5359,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dangxian:{ trigger:{player:'phaseBegin'}, forced:true, + audio:2, + audioname:['guansuo'], content:function(){ 'step 0' player.phaseUse(); @@ -5389,6 +6345,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } 'step 3' if(event.card){ + event.card.fix(); ui.cardPile.insertBefore(event.card,ui.cardPile.firstChild); game.updateRoundNumber(); } @@ -5486,6 +6443,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 1' game.delay(); 'step 2' + event.card.fix(); ui.cardPile.insertBefore(event.card,ui.cardPile.firstChild); game.updateRoundNumber(); }, @@ -6344,7 +7302,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ "step 0" player.awakenSkill('fuli'); - player.recover(player.maxHp-player.hp); + player.recover(game.countGroup()-player.hp); "step 1" player.turnOver(); player.storage.fuli=true; @@ -7378,7 +8336,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } return num; - }).set('source',event.source); + }).set('source',trigger.source); "step 1" if(result.bool){ var target=result.targets[0]; @@ -7758,7 +8716,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ "step 0" - event.num=player.maxHp-player.hp; + event.num=player.getDamagedHp(); player.draw(event.num); "step 1" var check=player.countCards('h')-event.num; @@ -8076,10 +9034,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:['loseEnd','changeHp']}, frequent:true, filter:function(event,player){ - return (player.countCards('h')<(player.maxHp-player.hp)); + return player.countCards('h')0 }, @@ -8480,6 +9438,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ threaten:1.6, } }, + qice_backup:{audio:2}, zhiyu:{ audio:2, trigger:{player:'damageEnd'}, @@ -8964,12 +9923,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.draw(2); }, audio:2, - init:function(player){player.storage.jingce=true}, - intro:{ - content:function(storage,player){ - if(_status.currentPhase==player) return '已使用'+player.countUsed()+'张牌'; - } - } + }, + xinjingce:{ + trigger:{player:'phaseEnd'}, + frequent:true, + filter:function(event,player){ + return player.countUsed()>=player.hp; + }, + content:function(){ + player.draw(2); + }, + audio:'jingce', }, chengxiang:{ trigger:{player:'damageEnd'}, @@ -9738,6 +10702,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "qingxian_draw_info":"", zhenjun:"镇军", "zhenjun_info":"准备阶段,你可以弃置一名手牌数多于体力值的角色的X张牌(X为其手牌数和体力值之差),然后选择一项:1.你弃置等同于其中非装备牌数量的牌;2.其摸等量的牌。", + xinzhenjun:'镇军', + xinzhenjun_info:'出牌阶段开始时,你可以将一张牌交给一名其他角色,令其选择是否使用一张不为黑色的【杀】。若其选择是,则你于此【杀】结算完成后摸一张牌,且当此【杀】造成伤害时你摸X张牌(X为伤害点数)。若其选择否,则你对其或其攻击范围内的一名其他角色造成1点伤害。', fenli:'奋励', fenli_info:'若你的手牌数为全场最多,你可以跳过摸牌阶段;若你的体力值为全场最多,你可以跳过出牌阶段;若你的装备区里有牌且数量为全场最多,你可以跳过弃牌阶段。', pingkou:'平寇', @@ -9792,6 +10758,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ fumian_info:'准备阶段,你可以选择一项:1.摸牌阶段多摸一张牌;2.使用红色牌可以多选择一个目标(限一次)。若与你上回合选择的选项不同,则该选项数值+1并复原此技能', daiyan:'怠宴', daiyan_info:'结束阶段,你可以令一名其他角色从牌堆中获得一张红桃基本牌,然后若其于上回合成为过该技能目标,则其失去1点体力', + xinzhongjian:'忠鉴', + xinzhongjian_info:'出牌阶段限一次,你可以展示自己的一张手牌,然后展示一名其他角色的至多三张手牌。其展示的牌中:每有一张花色相同,你摸一张牌;点数相同,你对其造成1点伤害;均不同,你弃置一张手牌。', zhongjian:'忠鉴', zhongjian_bg:'鉴', zhongjian3:'忠鉴', @@ -9799,6 +10767,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhongjian_info:'出牌阶段限一次,你可以展示一张手牌,然后展示手牌数大于体力值的一名其他角色X张手牌(X为其手牌数和体力值之差)。若以此法展示的牌与你展示的牌:有颜色相同的,你摸一张牌或弃置其一张牌;有点数相同的,本回合此技能改为“出牌阶段限两次”;均不同,你的手牌上限-1', caishi:'才识', caishi_info:'摸牌阶段开始时,你可以选择一项:1.手牌上限+1,然后本回合你的牌不能对其他角色使用;2.回复1点体力,然后本回合你的牌不能对自己使用', + xincaishi:'才识', + xincaishi_info:'摸牌阶段,你可以选择一项:1.少摸一张牌,然后本回合发动【忠鉴】时可以多展示自己的一张牌;2.本回合手牌上限-1,然后本回合发动【忠鉴】时可以多展示对方的一张牌;3.多摸两张牌,本回合不能发动【忠鉴】。', guizao:'瑰藻', guizao_info:'弃牌阶段结束时,若你于此阶段弃置牌的数量不小于2且它们的花色各不相同,你可以回复1点体力或摸一张牌', jiyu:'讥谀', @@ -9816,6 +10786,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ taoluan5:'滔乱', taoluan_backup:'滔乱', taoluan_info:'若场上没有濒死的角色,则你可以将一张牌当做任意一张基本牌或普通锦囊牌使用(此牌不得是本局游戏你以此法使用过的牌),然后你令一名其他角色选择一项:1.交给你一张与你以此法使用的牌类别不同的牌;2.你失去1点体力且滔乱无效直到回合结束', + xintaoluan:'滔乱', + xintaoluan4:'滔乱', + xintaoluan5:'滔乱', + xintaoluan_backup:'滔乱', + xintaoluan_info:'若场上没有濒死的角色,则你可以将一张牌当做任意一张基本牌或普通锦囊牌使用(此牌不得是本回合内你以此法使用过的牌),然后你令一名其他角色选择一项:1.交给你X张与你以此法使用的牌类别不同的牌;2.你失去X点体力且滔乱无效直到回合结束(X为你本回合内发动过【滔乱】的次数且至多为3)', jiaozhao:'矫诏', jiaozhao2:'矫诏', jiaozhao_info:'出牌阶段限一次,你可以展示一张手牌,然后选择距离最近的一名其他角色,该角色声明一张基本牌的牌名。在此出牌阶段内,你可以将此手牌当声明的牌使用且你不能被选择为目标', @@ -9828,8 +10803,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ fulin_info:'锁定技,弃牌阶段内,你于此回合内获得的牌不计入你的手牌数', kuangbi:'匡弼', kuangbi_info:'出牌阶段限一次,你可以选择一名有牌的其他角色,该角色将其一至三张牌置于你的武将牌上。若如此做,你的下准备阶段,你获得武将牌上的所有牌,然后其摸等量的牌', + xinzhige:'止戈', + xinzhige_info:'出牌阶段限一次,你可以令一名其他角色交给你一张【杀】或武器牌,否则其视为对你指定的另一名其攻击范围内的角色使用了一张【杀】。', zhige:'止戈', zhige_info:'出牌阶段限一次,若你的手牌数大于你的体力值,你可以选择攻击范围内含有你的一名其他角色,除非该角色使用一张【杀】,否则其将其装备区里的一张牌交给你', + xinzongzuo:'宗祚', + xinzongzuo_info:'锁定技,游戏的第一个回合开始前,你加X点体力上限和体力(X为全场势力数);当一名角色死亡后,若没有与其势力相同的角色,你减1点体力上限并摸两张牌', zongzuo:'宗祚', zongzuo_info:'锁定技,游戏的第一个回合开始前,你加X点体力上限和体力(X为全场势力数);当一名角色死亡后,若没有与其势力相同的角色,你减1点体力上限', xinjuece:'绝策', @@ -9863,6 +10842,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yonglve_info:'你攻击范围内的一名其他角色的判定阶段开始时,你可以弃置其判定区里的一张牌,视为对该角色使用一张【杀】。若此【杀】未造成伤害,你摸一张牌', benxi:'奔袭', benxi_info:'锁定技,在你的回合内,你每使用一次牌后,你的进攻距离+1,直到回合结束;你的回合内,若你与所有角色的距离均为1,你无视其他角色的防具,且你使用的【杀】可额外指定一个目标', + xinbenxi:'奔袭', + xinbenxi_info:'锁定技,当你于回合内使用牌后,你本回合计算与其他角色的距离-1。你的回合内若你至场上所有其他角色的距离均不大于1,则当你使用牌指定唯一目标时,你选择至多两项:1.为此牌多指定一个目标;2.令此牌无视防具;3.令此牌不可被响应;4.你因此牌造成伤害时摸一张牌。', sidi:'司敌', sidi2:'司敌', sidi3:'司敌', @@ -9872,6 +10853,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinsidi_info:'其他角色出牌阶段开始时,你可以弃置一张与你装备区里的牌颜色相同的非基本牌,然后该角色于此阶段内不能使用和打出与此牌颜色相同的牌。此阶段结束时,若其此阶段没有使用【杀】,视为你对其使用了【杀】', dangxian:'当先', dangxian_info:'锁定技,准备阶段,你执行一个额外的出牌阶段', + xindangxian:'当先', + xindangxian_info:'锁定技,准备阶段,你失去1点体力并从牌堆/弃牌堆中获得一张【杀】,然后执行一个额外的出牌阶段', longyin:'龙吟', longyin_info:'每当一名角色在其出牌阶段使用【杀】时,你可弃置一张牌令此【杀】不计入出牌阶段使用次数,若此【杀】为红色,你摸一张牌', zhongyong:'忠勇', @@ -9886,6 +10869,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ huaiyi_info:'出牌阶段限一次,你可以展示所有手牌,若其中包含不止一种颜色,则你选择一种颜色并弃置该颜色的所有手牌,然后你可以获得至多X名角色的各一张牌(X为你以此法弃置的手牌数)。若你以此法获得的牌不少于两张,则你失去1点体力', yaoming:'邀名', yaoming_info:'每回合限一次,当你造成或受到伤害后,你可以选择一项:1. 弃置手牌数大于你的一名角色的一张手牌;2. 令手牌数小于你的一名角色摸一张牌', + xinyaoming:'邀名', + xinyaoming_info:'每回合每个选项限一次,当你造成或受到伤害后,你可以选择一项:1. 弃置手牌数大于你的一名角色的一张手牌;2. 令手牌数小于你的一名角色摸一张牌;3.令手牌数等于你的角色弃置至多两张牌,然后摸等量的牌。', anguo:'安国', anguo_info:'出牌阶段限一次,你可以选择一名其他角色装备区里的一张牌,令其将此牌收回手牌。然后若该角色攻击范围内的角色数因此减少,则你摸一张牌', yanzhu:'宴诛', @@ -9992,6 +10977,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qiaoshui_info:'出牌阶段开始时,你可与一名其他角色拼点。若你赢,你使用的下一张基本牌或普通锦囊牌可以额外指定任意一名其他角色为目标或减少指定一个目标;若你没赢,你不能使用锦囊牌直到回合结束', junxing:'峻刑', junxing_info:'出牌阶段限一次,你可以弃置至少一张手牌并选择一名其他角色,该角色需弃置一张与你弃置的牌类别均不同的手牌,否则其先将其武将牌翻面再摸X张牌(X为你以此法弃置的手牌数量)。', + xinjunxing:'峻刑', + xinjunxing_info:'出牌阶段限一次,你可以弃置至少一张手牌并选择一名其他角色,该角色需弃置一张与你弃置的牌类别均不同的手牌,否则其先将其武将牌翻面,然后将手牌摸至四张。', wuyan:'无言', xinwuyan:'无言', @@ -10018,6 +11005,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zongshi:'宗室', danshou:'胆守', olddanshou:'胆守', + xindanshou:'胆守', yizhong:'毅重', xinzhan:'心战', xinzhan_gain:'获得', @@ -10034,6 +11022,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhichi2:'智迟', pojun:'破军', jingce:'精策', + xinjingce:'精策', chengxiang:'称象', renxin:'仁心', zhenlie:'贞烈', @@ -10057,6 +11046,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qianxi2:'潜袭', qianxi2_bg:'袭', fuli:'伏枥', + xinfuli:'伏枥', jiefan:'解烦', juece:'绝策', mieji:'灭计', @@ -10067,7 +11057,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mieji_info:'你使用黑色普通锦囊牌仅指定一个目标后,可以额外指定一个目标', juece_info:'每当一名其他角色在你回合内失去最后一张手牌,你可以对其造成一点伤害', jiefan_info:'限定技,出牌阶段,你可以选择一名角色,令攻击范围内含有该角色的所有角色各选择一项:1.弃置一张武器牌;2.令其摸一张牌。', - fuli_info:'限定技,当你处于濒死状态时,可以将体力回复至体力上限,然后翻面', + fuli_info:'限定技,当你处于濒死状态时,可以将体力回复至与场上势力数相同,然后翻面', + xinfuli_info:'限定技,当你处于濒死状态时,可以将体力回复至X点并将手牌摸至X张(X为场上势力数)。若X大于2,你翻面。', qianxi_info:'准备阶段,你可以摸一张牌,并弃置一张牌,然后令一名距离为1的角色不能使用或打出与你弃置的牌颜色相同的手牌,直到回合结束。', zhiman_info:'当你对一名其他角色造成伤害时,你可以防止此伤害,然后获得其装备区或判定区的一张牌。', sanyao_info:'出牌阶段限一次,你可以弃置一张牌并指定一名体力最多(或之一)的角色,你对其造成1点伤害。', @@ -10089,6 +11080,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ chengxiang_info:'每当你受到一次伤害后,你可以亮出牌堆顶的四张牌。然后获得其中任意数量点数之和不大于13的牌', renxin_info:'每当体力值为1的一名其他角色受到伤害时,你可以将武将牌翻面并弃置一张装备牌,然后防止此伤害。', jingce_info:'出牌阶段结束时,若你本回合使用的牌数量大于或等于你当前体力值,你可以摸两张牌。', + xinjingce_info:'结束阶段,若你本回合使用的牌数量大于或等于你当前体力值,你可以摸两张牌。', wuyan_info:'锁定技,你使用的普通锦囊牌对其他角色无效;其他角色使用的普通锦囊牌对你无效。', xinwuyan_info:'锁定技,每当锦囊牌造成伤害时,若你为伤害来源,你防止此伤害;锁定技,每当你受到锦囊牌对你造成的伤害时,你防止此伤害。', jujian_info:'出牌阶段,你可以弃至多三张牌,然后让一名其他角色摸等量的牌。若你以此法弃牌不少于三张且均为同一类别,你回复1点体力。每回合限一次。', @@ -10105,6 +11097,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zongshi_info:'锁定技,场上每有一种势力,你的手牌上限便+1。', danshou_info:'出牌阶段,你可以选择你攻击范围内的一名其他角色,然后弃置X张牌(X为此前你于此阶段你发动“胆守”的次数+1)。若X:为1,你弃置该角色的一张牌;为2,令该角色交给你一张牌;为3,你对该角色造成1点伤害;不小于4,你与该角色各摸两张牌。', olddanshou_info:'每当你造成一次伤害后,你可以摸一张牌。若如此做,终止一切结算,当前回合结束。', + xindanshou_info:'①每回合限一次,当你成为基本牌或锦囊牌的目标时,你可以摸X张牌(X为你本回合内成为过牌的目标的次数)。②一名其他角色的结束阶段,若你本回合内没有发动过【胆守①】,则你可以弃置X张牌并对其造成1点伤害(X为其手牌数)。', yizhong_info:'锁定技,当你没有防具时,黑色的杀对你无效', xinzhan_info:'出牌阶段限一次,你可以观看牌堆顶的3张牌,然后展示其中任意数量♥的牌并获得之', huilei_info:'锁定技,杀死你的角色立即弃置所有的牌。', diff --git a/game/asset.js b/game/asset.js index e17502c1d..0a785d015 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,7 +1,8 @@ window.noname_asset_list=[ - '1.9.93.3', + '1.9.94', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', + 'audio/background/aozhan_rewrite.mp3', 'audio/background/music_danji.mp3', 'audio/background/music_default.mp3', 'audio/background/music_diaochan.mp3', @@ -10,6 +11,20 @@ window.noname_asset_list=[ 'audio/background/music_jilve.mp3', 'audio/card/default.mp3', + 'audio/card/female/caomu.mp3', + 'audio/card/female/chiling.mp3', + 'audio/card/female/diaohulishan.mp3', + 'audio/card/female/fulei.mp3', + 'audio/card/female/huoshaolianying.mp3', + 'audio/card/female/jinchan.mp3', + 'audio/card/female/lianjunshengyan.mp3', + 'audio/card/female/lulitongxin.mp3', + 'audio/card/female/qijia.mp3', + 'audio/card/female/shengdong.mp3', + 'audio/card/female/shuiyanqijun.mp3', + 'audio/card/female/xietianzi.mp3', + 'audio/card/female/zengbin.mp3', + 'audio/card/female/bagua.mp3', 'audio/card/female/baiyin.mp3', 'audio/card/female/chitu.mp3', @@ -60,6 +75,20 @@ window.noname_asset_list=[ 'audio/card/female/yuanjiao.mp3', 'audio/card/female/zhibi.mp3', + 'audio/card/male/caomu.mp3', + 'audio/card/male/chiling.mp3', + 'audio/card/male/diaohulishan.mp3', + 'audio/card/male/fulei.mp3', + 'audio/card/male/huoshaolianying.mp3', + 'audio/card/male/jinchan.mp3', + 'audio/card/male/lianjunshengyan.mp3', + 'audio/card/male/lulitongxin.mp3', + 'audio/card/male/qijia.mp3', + 'audio/card/male/shengdong.mp3', + 'audio/card/male/shuiyanqijun.mp3', + 'audio/card/male/xietianzi.mp3', + 'audio/card/male/zengbin.mp3', + 'audio/card/male/bagua.mp3', 'audio/card/male/baiyin.mp3', 'audio/card/male/chitu.mp3', @@ -2239,6 +2268,17 @@ window.noname_asset_list=[ 'image/character/key_kyousuke.jpg', 'image/character/key_lucia.jpg', 'image/character/re_yujin.jpg', + 'image/character/re_caopi.jpg', + 'image/character/re_dongzhuo.jpg', + 'image/character/re_sunjian.jpg', + 'image/character/ol_guansuo.jpg', + 'image/character/ol_guohuai.jpg', + 'image/character/ol_liaohua.jpg', + 'image/character/ol_manchong.jpg', + 'image/character/ol_xinxianying.jpg', + 'image/character/ol_yujin.jpg', + 'image/character/ol_zhangrang.jpg', + 'image/character/ol_zhuran.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/game.js b/game/game.js index ebce18ea1..39f881a36 100644 --- a/game/game.js +++ b/game/game.js @@ -4620,9 +4620,10 @@ item:{ disabled:'不启用', online:'Online', + rewrite:'Rewrite', chaoming:'潮鸣', }, - init:'chaoming', + init:'rewrite', onclick:function(item){ game.saveConfig('aozhan_bgm',item,this._link.config.mode); if(_status._aozhan==true) game.playBackgroundMusic(); @@ -13177,8 +13178,9 @@ game.playAudio('card',sex,card.name+'_'+card.nature); } else{ - if(typeof audioinfo=='string'&&audioinfo.indexOf('ext:')==0){ - game.playAudio('..','extension',audioinfo.slice(4),card.name+'_'+sex); + if(typeof audioinfo=='string'){ + if(audioinfo.indexOf('ext:')==0) game.playAudio('..','extension',audioinfo.slice(4),card.name+'_'+sex); + else game.playAudio('card',sex,audioinfo); } else{ game.playAudio('card',sex,card.name); @@ -14888,6 +14890,9 @@ }, player:{ //新函数 + getDamagedHp:function(){ + return this.maxHp-Math.max(0,this.hp); + }, changeGroup:function(group,log){ game.broadcastAll(function(player,group){ player.group=group; @@ -19585,7 +19590,7 @@ return (range); }, getHandcardLimit:function(){ - return Math.max(0,game.checkMod(this,this.hp,'maxHandcard',this)); + return Math.max(0,game.checkMod(this,Math.max(0,this.hp),'maxHandcard',this)); }, getEnemies:function(func){ var player=this; @@ -45657,6 +45662,7 @@ _status.maxShuffle--; } game.shuffleNumber++; + if(_status.event.trigger) _status.event.trigger('washCard'); var cards=[],i; for(var i=0;i0){ if(target.classList.contains('turnedover')) return 1000-target.countCards('h'); - if(player.maxHp-player.hp<3) return -1; + if(player.getDamagedHp()<3) return -1; return 100-target.countCards('h'); } else{ if(target.classList.contains('turnedover')) return -1; - if(player.maxHp-player.hp>=3) return -1; + if(player.getDamagedHp()>=3) return -1; return 1+target.countCards('h'); } } @@ -2704,7 +2704,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ var player=_status.event.player; if(player.isTurnedOver()) return -1; return (player.hp*player.hp)-get.value(card); - }).set('prompt','弃置一张手牌并失去一点体力;或选择不弃置,将武将牌翻面并摸'+(player.maxHp-player.hp)+'张牌。'); + }).set('prompt','弃置一张手牌并失去一点体力;或选择不弃置,将武将牌翻面并摸'+(player.getDamagedHp())+'张牌。'); } else event.finish(); "step 2" @@ -2712,7 +2712,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ event.target.loseHp(); } else{ - event.target.draw(player.maxHp-player.hp); + event.target.draw(player.getDamagedHp()); event.target.turnOver(); } }, @@ -2850,6 +2850,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, }, hmkyuanyu:{ + audio:'zongkui', trigger:{ player:"damageBegin", }, @@ -2877,6 +2878,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, }, hmkguishu:{ + audio:'bmcanshi', group:["hmkguishu_reset"], subSkill:{ reset:{ @@ -2925,6 +2927,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, backup:function (links,player){ return { + audio:'bmcanshi', filterCard:function (card,player){ return get.suit(card)=='spade'; }, @@ -3998,7 +4001,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gzqice:{ enable:'phaseUse', usable:1, - audio:"qice", + audio:"qice_backup", filter:function(event,player){ return player.countCards('h')>0 }, @@ -4107,7 +4110,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } return lib.filter.filterTarget(card,player,target); }, - audio:2, + audio:'qice_backup', popname:true, viewAs:{name:links[0][2]}, ai1:function(){ @@ -8122,7 +8125,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ if(name2.indexOf('gz_shibing')==0) return false; if(lib.character[name1][1]!=lib.character[name2][1]) return false; if(get.is.jun(this.name1)) return true; - var list=['re','diy','sp','jsp','shen','jg','xin','old','gz']; + var list=['re','diy','sp','jsp','shen','jg','xin','old','gz','ol']; for(var i=0;i