From 843bfcf4533c56cdf5602471ae1b1c7feb219658 Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Thu, 15 Oct 2020 13:41:31 +0800 Subject: [PATCH] =?UTF-8?q?=E7=95=99=E8=B5=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- card/extra.js | 6 +- card/guozhan.js | 15 ++- card/standard.js | 3 +- card/zhulu.js | 13 ++- character/diy.js | 23 +++-- character/extra.js | 5 +- character/mobile.js | 14 +-- character/refresh.js | 22 +++-- character/shenhua.js | 12 ++- character/sp.js | 57 ++++++++--- character/sp2.js | 28 +++--- character/standard.js | 20 +++- character/tw.js | 13 ++- character/xinghuoliaoyuan.js | 179 +++++++++++++++------------------- character/yijiang.js | 21 +++- game/asset.js | 4 +- game/game.js | 92 +++++++++++++++-- game/update.js | 39 ++++---- image/character/re_liuzan.jpg | Bin 0 -> 55493 bytes mode/guozhan.js | 73 +++++++++----- 20 files changed, 412 insertions(+), 227 deletions(-) create mode 100644 image/character/re_liuzan.jpg diff --git a/card/extra.js b/card/extra.js index 5b1df0eb7..778863865 100644 --- a/card/extra.js +++ b/card/extra.js @@ -408,12 +408,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){ subtype:'equip2', loseDelay:false, onLose:function(){ - if(player.isDamaged()) player.logSkill('baiyin_skill'); var next=game.createEvent('baiyin_recover'); event.next.remove(next); - event.getParent().after.push(next); + var evt=event.getParent(); + if(evt.getlx===false) evt=evt.getParent(); + evt.after.push(next); next.player=player; next.setContent(function(){ + if(player.isDamaged()) player.logSkill('baiyin_skill'); player.recover(); }); }, diff --git a/card/guozhan.js b/card/guozhan.js index 81f0d01ea..1525d35a2 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -129,11 +129,22 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, filterLose:function(card,player){ - if(player.hasSkillTag('unequip2')) return false; - return true; + if(player.hasSkillTag('unequip2')) return false; + return true; }, + loseDelay:false, onLose:function(){ + var next=game.createEvent('taipingyaoshu'); + event.next.remove(next); + var evt=event.getParent(); + if(evt.getlx===false) evt=evt.getParent(); + evt.after.push(next); + next.player=player; + next.setContent(lib.card.taipingyaoshu.onLosex); + }, + onLosex:function(){ 'step 0' + player.logSkill('taipingyaoshu'); player.draw(2); 'step 1' if(player.hp>1) player.loseHp(); diff --git a/card/standard.js b/card/standard.js index cce6bc389..60e814597 100644 --- a/card/standard.js +++ b/card/standard.js @@ -1663,7 +1663,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ onremove:true, trigger:{ player:['damage','damageCancelled','damageZero'], - target:['shaMiss','useCardToExcluded'], + target:['shaMiss','useCardToExcluded','shaEnd'], + global:['useCardEnd'], }, charlotte:true, filter:function(event,player){ diff --git a/card/zhulu.js b/card/zhulu.js index 0b2e58d87..f11ed0050 100644 --- a/card/zhulu.js +++ b/card/zhulu.js @@ -319,11 +319,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){ filterTarget:lib.filter.notMe, selectTarget:1, toself:false, - onEquip:function(){ - var cards=player.getCards('e',function(cardz){ - return cardz!=card; - }); - if(cards.length) player.discard(cards); + loseThrow:true, + customSwap:function(){ + return true; }, ai:{ order:9, @@ -467,9 +465,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(player.sex!='male') return; var next=game.createEvent('nvzhuang_lose'); event.next.remove(next); - event.getParent().after.push(next); + var evt=event.getParent(); + if(evt.getlx===false) evt=evt.getParent(); + evt.after.push(next); next.player=player; - next.card=card; next.setContent(function(){ if(player.countCards('he')){ player.popup('nvzhuang'); diff --git a/character/diy.js b/character/diy.js index fcd564070..7178d5bf9 100755 --- a/character/diy.js +++ b/character/diy.js @@ -444,6 +444,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return ['equip','delay'].contains(get.type(card,false)); }, filterTarget:function(card,player,target){ + if(player==target) return false; var card=ui.selected.cards[0]; if(get.type(card,false)=='delay') return target.canAddJudge({name:card.name}); return target.isEmpty(get.subtype(card,false)); @@ -948,10 +949,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, misuzu_zhongxing:{ - trigger:{player:'loseAfter'}, + trigger:{ + player:'loseAfter', + source:'gainAfter', + global:['equipAfter','addJudgeAfter'], + }, direct:true, filter:function(event,player){ - return event.js&&event.js.length>0&&!player.hasSkill('misuzu_zhongxing_haruko'); + var evt=event.getl(player); + return evt&&evt.js&&evt.js.length>0&&!player.hasSkill('misuzu_zhongxing_haruko'); }, content:function(){ 'step 0' @@ -979,16 +985,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, kamome_yangfan:{ trigger:{ - global:'gameDrawAfter', - player:['enterGame','loseAfter'], + player:['loseAfter','enterGame'], + source:'gainAfter', + global:['equipAfter','addJudgeAfter','gameDrawAfter'], }, forced:true, filter:function(event,player){ - if(event.name!='lose') return true; - return event.es&&event.es.length; + if(typeof event.getl!='function') return true; + var evt=event.getl(player); + return evt&&evt.player==player&&evt.es&&evt.es.length; }, content:function(){ - if(trigger.name=='lose') player.draw(2*trigger.es.length); + if(trigger.getl) player.draw(2*trigger.getl(player).es.length); else player.equip(game.createCard2('kamome_suitcase','spade',1)); }, ai:{ @@ -1469,6 +1477,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); 'step 1' if(result.control=='cancel2'){event.finish();return;} + player.logSkill('shiorimiyuki_tingxian'); var num=1+result.index; player.draw(num); 'step 2' diff --git a/character/extra.js b/character/extra.js index 0bbab8eb1..7f64d79db 100755 --- a/character/extra.js +++ b/character/extra.js @@ -20,6 +20,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_shiki:['female','shen','3/5',['shiki_omusubi'],['key']], //key_hina:['female','shen',3,[],['key']], + //shen_diaochan:['female','shen',3,[],['qun']], shen_guanyu:['male','shen',5,['new_wuhun','wushen'],['shu']], shen_zhaoyun:['male','shen',2,['xinjuejing','relonghun'],['shu']], shen_zhugeliang:['male','shen',3,['qixing','kuangfeng','dawu'],['shu']], @@ -3422,6 +3423,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qixian_info:'锁定技,你的手牌上限视为7。', caopi_xingdong:'行动', caopi_xingdong_info:'出牌阶段限一次,你可以将一张【杀】或普通锦囊牌交给一名其他角色,然后该角色选择一项:对除你以外的角色使用此牌并在此牌结算完成后和你各摸一张牌;或跳过下回合的判定阶段和摸牌阶段。', + //shen_diaochan:'神貂蝉', key_kagari:'篝', kagari_zongsi:'纵丝', @@ -3429,7 +3431,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_shiki:'神山识', shiki_omusubi:'御结', shiki_omusubi_info:'一轮游戏开始时,你可以减1点体力上限,然后将一名其他角色武将牌上的技能加入到你的武将牌上。', - //key_hina:'雏', + shiki_omusubi_append:'来吧,羽依里。用你的手,让我变成那只真正的鬼吧!', + //key_hina:'佐藤雏', extra_feng:'神话再临·风', extra_huo:'神话再临·火', diff --git a/character/mobile.js b/character/mobile.js index b21d94cec..697163420 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -12,7 +12,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mobile_standard:["xin_xiahoudun"], mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian"], mobile_yijiang1:["re_jikang","old_bulianshi","xin_liaohua","xin_caozhang","re_xusheng","xin_chengpu"], - mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","old_liuzan"], + mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","liuzan"], mobile_trashbin:['old_jiakui'], }, }, @@ -47,7 +47,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_bulianshi:['female','wu',3,['anxu','zhuiyi']], miheng:['male','qun',3,['kuangcai','shejian']], taoqian:['male','qun',3,['zhaohuo','yixiang','yirang']], - old_liuzan:['male','wu',4,['fenyin']],lingcao:['male','wu',4,['dujin']], + liuzan:['male','wu',4,['fenyin']],lingcao:['male','wu',4,['dujin']], sunru:['female','wu',3,['yingjian','shixin']], lifeng:['male','shu',3,['tunchu','shuliang']], zhuling:['male','wei',4,['xinzhanyi']], @@ -178,12 +178,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, loseDelay:false, onLose:function(){ - player.logSkill('rw_baiyin_skill'); - var next=game.createEvent('rw_baiyin_recover'); + var next=game.createEvent('rewrite_baiyin_recover'); event.next.remove(next); - event.getParent().after.push(next); + var evt=event.getParent(); + if(evt.getlx===false) evt=evt.getParent(); + evt.after.push(next); next.player=player; next.setContent(function(){ + player.logSkill('rw_baiyin_skill'); player.draw(2); player.recover(); }); @@ -5594,7 +5596,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, translate:{ - old_liuzan:'手杀留赞', + liuzan:'手杀留赞', re_sp_zhugeliang:"手杀卧龙", ly_piliche:'霹雳车', ly_piliche_info:'当你对其他角色造成伤害后,若造成伤害的牌不为延时锦囊牌,你可以弃置其装备区里的防具牌与+1坐骑牌;当你失去此装备时,销毁之。', diff --git a/character/refresh.js b/character/refresh.js index cbaf3a633..c573bd38e 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -1107,7 +1107,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rexuanfeng:{ audio:'xuanfeng', audioname:['boss_lvbu3','re_heqi','re_lingtong'], - trigger:{player:['loseAfter','phaseDiscardEnd']}, + trigger:{ + player:'loseAfter', + source:'gainAfter', + global:['equipAfter','addJudgeAfter'], + }, direct:true, filter:function(event,player){ if(!game.hasPlayer(function(current){ @@ -1120,7 +1124,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); return cards.length>1; } - else return event.es&&event.es.length>0; + var evt=event.getl(player); + return evt&&evt.es&&evt.es.length>0; }, content:function(){ 'step 0' @@ -5727,16 +5732,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, relianying:{ audio:2, - trigger:{player:'loseAfter'}, + trigger:{ + player:'loseAfter', + source:'gainAfter', + global:['equipAfter','addJudgeAfter'], + }, direct:true, filter:function(event,player){ if(player.countCards('h')) return false; - return event.hs&&event.hs.length; + var evt=event.getl(player); + return evt&&evt.hs&&evt.hs.length; }, content:function(){ "step 0" - var num=trigger.hs.length; - player.chooseTarget('选择发动连营的目标',[1,num]).ai=function(target){ + var num=trigger.getl(player).hs.length; + player.chooseTarget(get.prompt('relianying'),'令至多'+get.cnNumber(num)+'名角色各摸一张牌',[1,num]).ai=function(target){ var player=_status.event.player; if(player==target) return get.attitude(player,target)+10; return get.attitude(player,target); diff --git a/character/shenhua.js b/character/shenhua.js index ff659ea8e..fa4161dcb 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -3148,11 +3148,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ tuntian:{ audio:2, audioname:['gz_dengai'], - trigger:{player:'loseAfter'}, + trigger:{ + player:'loseAfter', + source:'gainAfter', + global:['equipAfter','addJudgeAfter'], + }, frequent:true, filter:function(event,player){ if(player==_status.currentPhase) return false; - return event.cards2&&event.cards2.length>0; + var evt=event.getl(player); + return evt&&evt.cards2&&evt.cards2.length>0; }, content:function(){ 'step 0' @@ -4912,9 +4917,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, weimu:{ - trigger:{global:'useCard'}, + trigger:{global:'useCard1'}, audio:2, forced:true, + firstDo:true, filter:function (event,player,card){ if(get.color(event.card)!='black') return false; return event.card.name=='nanman'&&player!=event.player||event.card.name=='wanjian'&&player!=event.player||event.card.name=='taoyuan'&&player.hp1; - return event.cards2&&event.cards2.length>1; + if(event.name=='gain'&&event.player==player) return event.cards&&event.cards.length>1; + var evt=event.getl(player); + return evt&&evt.cards2&&evt.cards2.length>1; }, content:function(){ 'step 0' @@ -11314,19 +11321,41 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audioname:['liushan'] }, shoucheng:{ - trigger:{global:'loseAfter'}, + trigger:{ + global:['equipAfter','addJudgeAfter','loseAfter','gainAfter'], + }, audio:2, - check:function(event,player){ - return get.attitude(player,event.player)>0; - }, + direct:true, filter:function(event,player){ - if(event.player==player||event.player.isDead()||event.player.countCards('h')) return false; - if(_status.currentPhase==event.player) return false; - return event.hs&&event.hs.length>0; + return game.hasPlayer(function(current){ + if(current==_status.currentPhase) return false; + var evt=event.getl(current); + return evt&&evt.hs&&evt.hs.length&¤t.countCards('h')==0; + }); }, - logTarget:'player', content:function(){ - trigger.player.draw(); + "step 0" + event.list=game.filterPlayer(function(current){ + if(current==_status.currentPhase) return false; + var evt=trigger.getl(current); + return evt&&evt.hs&&evt.hs.length; + }).sortBySeat(_status.currentPhase); + "step 1" + var target=event.list.shift(); + event.target=target; + if(target.isAlive()&&target.countCards('h')==0){ + player.chooseBool(get.prompt2('shoucheng',target)).set('ai',function(){ + return get.attitude(_status.event.player,_status.event.getParent().target)>0; + }); + } + else event.goto(3); + "step 2" + if(result.bool){ + player.logSkill(event.name,target); + target.draw(); + } + "step 3" + if(event.list.length) event.goto(1); }, ai:{ threaten:1.3, diff --git a/character/sp2.js b/character/sp2.js index c14e080bd..06c26eca0 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -11,7 +11,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ caobuxing:['male','wu',3,['moying','juanhui'],[]], //sp_zhangliao:['male','qun',4,['mubing','diaoling']], re_sunluyu:['female','wu',3,['remeibu','remumu']], - liuzan:['male','wu',4,['refenyin','liji']], + re_liuzan:['male','wu',4,['refenyin','liji']], wenyang:['male','wei',5,['xinlvli','choujue']], wangshuang:['male','wei',8,['spzhuilie']], huaman:['female','shu',3,['hmmanyi','mansi','souying','zhanyuan']], @@ -61,7 +61,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_shengun:["puyuan","guanlu","gexuan","xushao"], sp_baigei:['re_panfeng','xingdaorong','caoxing'], sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"], - sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','liuzan','re_sunluyu','caobuxing','ol_xinxianying','ol_yujin','re_maliang'], + sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_xinxianying','ol_yujin','re_maliang'], } }, skill:{ @@ -231,14 +231,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, moying:{ audio:2, - trigger:{player:'loseAfter'}, + trigger:{ + player:'loseAfter', + source:'gainAfter', + global:['equipAfter','addJudgeAfter'], + }, direct:true, filter:function(event,player){ - return player!=_status.currentPhase&&event.getParent().name!='useCard'&&event.cards2&&event.cards2.length==1&&!player.hasSkill('moying2')&&['equip','trick'].contains(get.type2(event.cards2[0],event.hs.contains(event.cards2[0])?player:false)); + if(player==_status.currentPhase||event.getParent().name=='useCard') return false; + var evt=event.getl(player); + return evt&&evt.cards2&&evt.cards2.length==1&& + ['equip','trick'].contains(get.type2(evt.cards2[0],(evt.type=='discard'&&evt.hs.contains(evt.cards2[0]))?player:false))&& + !player.hasSkill('moying2'); }, content:function(){ "step 0" - var number=trigger.cards2[0].number; + var number=trigger.getl(player).cards2[0].number; var numbers=[number-2,number-1,number,number+1,number+2].filter(function(number){ return number>=1&&number<=13; }); @@ -2594,8 +2602,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:"biaozhao", filter:function (event,player){ if(!player.storage.biaozhao) return false; - var evt=event.getParent(); - if(evt&&(evt.name=='useCard'||evt.name=='respond'||evt.name=='biaozhao2')) return false; var suit=get.suit(player.storage.biaozhao[0]); var num=get.number(player.storage.biaozhao[0]); for(var i=0;i0; + var evt=event.getl(player); + return evt&&evt.player==player&&evt.hs&&evt.hs.length>0; }, content:function(){ player.draw(); @@ -2090,14 +2095,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xiaoji:{ audio:2, audioname:['sp_sunshangxiang','re_sunshangxiang'], - trigger:{player:'loseAfter'}, + trigger:{ + player:'loseAfter', + source:'gainAfter', + global:['equipAfter','addJudgeAfter'], + }, frequent:true, filter:function(event,player){ - return event.es&&event.es.length>0; + var evt=event.getl(player); + return evt&&evt.player==player&&evt.es&&evt.es.length>0; }, content:function(){ "step 0" - event.count=trigger.es.length; + event.count=trigger.getl(player).es.length; "step 1" event.count--; player.draw(2); diff --git a/character/tw.js b/character/tw.js index f483cc45a..28852b685 100644 --- a/character/tw.js +++ b/character/tw.js @@ -52,11 +52,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ target.chooseToUse({ prompt:'请使用得到的一张牌,或者受到来自'+get.translation(player)+'的一点伤害', filterCard:function(card,player,event){ - var cards=_status.event.cards; - if(!cards||get.itemtype(card)!='card'||!cards.contains(card)) return false; + if(get.itemtype(card)!='card'||!cards.contains(card)) return false; return lib.filter.filterCard(card,player,event); }, - cards:event.cards, }); 'step 2' if(result.bool){ @@ -521,10 +519,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ 'step 0' - var list=[]; - game.countPlayer(function(current){ - if(current.group!=player.group&¤t.group!='shen') list.add(current.group); - }); + var list=lib.group.filter(function(group){ + return group!=player.group&&game.hasPlayer(function(current){ + return current.group==group; + }); + }) if(!event.renshe) list.push('cancel2'); player.chooseControl(list).set('prompt',event.renshe?'请选择一个势力':get.prompt('chijie')).set('prompt2',event.renshe?'':'将自己的势力变更为场上存在的一个势力').set('',function(){ return list.randomGet(); diff --git a/character/xinghuoliaoyuan.js b/character/xinghuoliaoyuan.js index d09c02aa9..f0babf26b 100755 --- a/character/xinghuoliaoyuan.js +++ b/character/xinghuoliaoyuan.js @@ -215,28 +215,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){ result:{ target:function (player,target){ var raweffect=function(player,target){ - if(player.countCards('h','sha')){ - return get.effect(target,{name:'sha'},player,target); - } - else{ - var att=get.attitude(player,target); - var nh=target.countCards('h'); - if(att>0){ - if(target.getEquip('baiyin')&&target.isDamaged()&& - get.recoverEffect(target,player,player)>0){ - if(target.hp==1&&!target.hujia) return 1.6; - if(target.hp==2) return 0.01; - return 0; - } - } - var es=target.getCards('e'); - var noe=(es.length==0||target.hasSkillTag('noe')); - var noe2=(es.length==1&&es[0].name=='baiyin'&&target.isDamaged()); - var noh=(nh==0||target.hasSkillTag('noh')); - if(noh&&(noe||noe2)) return 0; - if(att<=0&&!target.countCards('he')) return 1.5; - return -1.5; - } + if(player.countCards('h','sha')){ + return get.effect(target,{name:'sha'},player,target); + } + else{ + var att=get.attitude(player,target); + var nh=target.countCards('h'); + if(att>0){ + if(target.getEquip('baiyin')&&target.isDamaged()&& + get.recoverEffect(target,player,player)>0){ + if(target.hp==1&&!target.hujia) return 1.6; + if(target.hp==2) return 0.01; + return 0; + } + } + var es=target.getCards('e'); + var noe=(es.length==0||target.hasSkillTag('noe')); + var noe2=(es.length==1&&es[0].name=='baiyin'&&target.isDamaged()); + var noh=(nh==0||target.hasSkillTag('noh')); + if(noh&&(noe||noe2)) return 0; + if(att<=0&&!target.countCards('he')) return 1.5; + return -1.5; + } } var num=game.countPlayer(function(current){ return current!=player&¤t.hp==target.hp&&(raweffect(player,current)*get.attitude(player,current))>0 @@ -421,33 +421,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, }, - "qinguo_use":{ - audio:2, - trigger:{ - player:"equipEnd", - }, - filter:function (event,player){ - if(!event.swapped&&player.countCards('e')==player.hp&&player.isDamaged()){ - return true; - }; - return false; - }, - frequent:true, - content:function (){ - player.recover(); - }, - ai:{ - reverseEquip:true, - effect:{ - target:function (card,player,target,current){ - if(get.type(card)=='equip'&&player==target&&player==_status.currentPhase) return [1,3]; - }, - }, - }, - }, "xinfu_qinguo":{ - group:["qinguo_use","qinguo_lose"], + group:"xinfu_qinguo_recover", audio:2, + subfrequent:['recover'], trigger:{ player:"useCardEnd", }, @@ -455,23 +432,29 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return get.type(event.card)=='equip'; }, direct:true, - content:function (){ + content:function(){ player.chooseUseTarget({name:'sha'},get.prompt('xinfu_qinguo'),'视为使用一张【杀】',false).logSkill='qinguo_use'; }, - }, - "qinguo_lose":{ - audio:2, - trigger:{ - player:"loseAfter", - }, - filter:function (event,player){ - if(event.getParent().name=='equip') return false; - if(player.hp!=player.countCards('e')||!player.isDamaged()) return false; - return event.es&&event.es.length>0; - }, - frequent:true, - content:function (){ - player.recover(); + subSkill:{ + recover:{ + audio:'xinfu_qinguo', + trigger:{ + player:'loseAfter', + source:'gainAfter', + global:['equipAfter','addJudgeAfter'], + }, + prompt:'是否发动【勤国】回复1点体力?', + filter:function (event,player){ + if(player.isHealthy()||player.countCards('e')!=player.hp) return false; + var evt=event.getl(player); + if(event.name=='equip') return !evt||evt.cards.length!=1; + return evt&&evt.es.length; + }, + frequent:true, + content:function(){ + player.recover(); + }, + }, }, }, "xinfu_jijun":{ @@ -930,13 +913,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sub:true, mod:{ ignoredHandcard:function (card,player){ - if(get.suit(card)=='heart'){ - return true; - } - }, + if(get.suit(card)=='heart'){ + return true; + } + }, cardDiscardable:function (card,player,name){ - if(name=='phaseDiscard'&&get.suit(card)=='heart') return false; - }, + if(name=='phaseDiscard'&&get.suit(card)=='heart') return false; + }, }, }, }, @@ -1174,17 +1157,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ aiOrder:function(player,card,num){ if(typeof card.number!='number') return; var history=player.getHistory('useCard',function(evt){ - return evt.isPhaseUsing(); - }); - if(history.length==0) return num+10*(14-card.number); - var num=get.number(history[0].card); - if(!num) return; - for(var i=1;inum) return num+10*(14-card.number); + return evt.isPhaseUsing(); + }); + if(history.length==0) return num+10*(14-card.number); + var num=get.number(history[0].card); + if(!num) return; + for(var i=1;inum) return num+10*(14-card.number); }, }, filter:function (event,player){ @@ -1227,17 +1210,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ aiOrder:function(player,card,num){ if(typeof card.number!='number') return; var history=player.getHistory('useCard',function(evt){ - return evt.isPhaseUsing(); - }); - if(history.length==0) return num+10*card.number; - var num=get.number(history[0].card); - if(!num) return; - for(var i=1;i=num) return; - num=num2; - } - if(card.number=num) return; + num=num2; + } + if(card.number0) return 0; - var damaged=player.maxHp-player.hp-1; - var ts=player.countCards('h',function(cardx){ - return cardx!=card&&cardx.name=='tao'; - }); - if(ts>0&&ts>damaged) return 0; + if(player.countCards('h',function(cardx){ + return cardx!=card&&cardx.name=='shan'; + })>0) return 0; + var damaged=player.maxHp-player.hp-1; + var ts=player.countCards('h',function(cardx){ + return cardx!=card&&cardx.name=='tao'; + }); + if(ts>0&&ts>damaged) return 0; } if(card.name=='shan') return 15; if(card.name=='tao') return 10; diff --git a/character/yijiang.js b/character/yijiang.js index 92e7c1419..d4180ba88 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -239,13 +239,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, reshangshi:{ audio:'shangshi', - trigger:{player:['loseAfter','changeHp']}, + trigger:{ + player:['loseAfter','changeHp','gainMaxHpAfter','loseMaxHpAfter'], + source:'gainAfter', + global:['equipAfter','addJudgeAfter'], + }, frequent:true, prompt:function(event,player){ return '是否发动【伤逝】将手牌摸至'+get.cnNumber(player.getDamagedHp())+'张?' }, prompt2:false, filter:function(event,player){ + if(event.getl&&!event.getl(player)) return false; return player.countCards('h')1; } - else return event.es&&event.es.length>0; + else{ + var evt=event.getl(player); + return evt&&evt.es&&evt.es.length>0; + } }, content:function(){ "step 0" diff --git a/game/asset.js b/game/asset.js index d08c6780c..418fbe79f 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.105.2', + 'v1.9.105.3', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -3292,7 +3292,7 @@ window.noname_asset_list=[ 'image/character/key_doruji.jpg', 'image/character/key_riki.jpg', 'image/character/key_yuiko.jpg', - 'image/character/old_liuzan.jpg', + 'image/character/re_liuzan.jpg', 'image/character/re_caozhang.jpg', 'image/character/re_chengpu.jpg', 'image/character/re_guohuai.jpg', diff --git a/game/game.js b/game/game.js index d511849e4..aa02597aa 100644 --- a/game/game.js +++ b/game/game.js @@ -11974,12 +11974,12 @@ event.result.num2[event.iwhile]=event.num2; var str; if(event.num1>event.num2){ - str=get.translation(player.name)+'拼点成功'; + str=get.translation(player)+'拼点成功'; player.popup('胜'); target.popup('负'); } else{ - str=get.translation(player.name)+'拼点失败'; + str=get.translation(player)+'拼点失败'; if(event.num1==event.num2){ player.popup('平'); target.popup('平'); @@ -12139,13 +12139,13 @@ if(event.num1>event.num2){ event.result.bool=true; event.result.winner=player; - str=get.translation(player.name)+'拼点成功'; + str=get.translation(player)+'拼点成功'; player.popup('胜'); target.popup('负'); } else{ event.result.bool=false; - str=get.translation(player.name)+'拼点失败'; + str=get.translation(player)+'拼点失败'; if(event.num1==event.num2){ event.result.tie=true; player.popup('平'); @@ -14447,7 +14447,7 @@ if(cards){ var owner=event.source||get.owner(cards[0]); if(owner){ - var next=owner.lose(cards,ui.special).set('type','gain').set('forceDie',true); + var next=owner.lose(cards,ui.special).set('type','gain').set('forceDie',true).set('getlx',false); if(event.animate=='give'||event.visible==true) next.visible=true; event.relatedLose=next; } @@ -15226,7 +15226,7 @@ equip:function(){ "step 0" var owner=get.owner(card) - if(owner) owner.lose(card,ui.special,'visible').set('type','equip'); + if(owner) owner.lose(card,ui.special,'visible').set('type','equip').set('getlx',false); "step 1" if(event.cancelled){ event.finish(); @@ -15257,9 +15257,16 @@ } player.equiping=true; "step 3" - var current=player.getCards('e',{subtype:get.subtype(card)}); + var info=get.info(card,false); + var current=player.getCards('e',function(card){ + if(info.customSwap) return info.customSwap(card); + return get.subtype(card,false)==info.subtype; + }); if(current.length){ - player.lose(current,false,'visible'); + player.lose(current,false,'visible').set('type','equip').set('getlx',false); + if(info.loseThrow){ + player.$throw(current); + } event.swapped=true; event.redo(); } @@ -15310,7 +15317,7 @@ if(cards){ var owner=get.owner(cards[0]); if(owner){ - owner.lose(cards,'visible'); + event.relatedLose=owner.lose(cards,'visible').set('getlx',false); } } "step 1" @@ -18728,6 +18735,27 @@ } } next.setContent('gain'); + next.getl=function(player){ + var that=this; + var map={ + player:player, + hs:[], + es:[], + js:[], + cards:[], + cards2:[], + }; + player.getHistory('lose',function(evt){ + if(evt.parent==that){ + map.hs.addArray(evt.hs); + map.es.addArray(evt.es); + map.js.addArray(evt.js); + map.cards.addArray(evt.cards); + map.cards2.addArray(evt.cards2); + } + }); + if(map.cards.length>0) return map; + }; return next; }, give:function(cards,target,visible){ @@ -18774,6 +18802,9 @@ next.cards=next.cards.slice(0); } next.setContent('lose'); + next.getl=function(player){ + if(this.getlx!==false&&this.player==player) return this; + }; return next; }, damage:function(){ @@ -19130,6 +19161,28 @@ } next.setContent(lib.element.content.equip); if(get.is.object(next.card)&&next.card.cards) next.card=next.card.cards[0]; + next.cards=[next.card]; + next.getl=function(player){ + var that=this; + var map={ + player:player, + hs:[], + es:[], + js:[], + cards:[], + cards2:[], + }; + player.getHistory('lose',function(evt){ + if(evt.parent==that){ + map.hs.addArray(evt.hs); + map.es.addArray(evt.es); + map.js.addArray(evt.js); + map.cards.addArray(evt.cards); + map.cards2.addArray(evt.cards2); + } + }); + if(map.cards.length>0) return map; + }; return next; }, addJudge:function(card,cards){ @@ -19140,6 +19193,27 @@ if(get.itemtype(next.cards)=='card') next.cards=[next.cards]; next.player=this; next.setContent('addJudge'); + next.getl=function(player){ + var that=this; + var map={ + player:player, + hs:[], + es:[], + js:[], + cards:[], + cards2:[], + }; + player.getHistory('lose',function(evt){ + if(evt.parent==that){ + map.hs.addArray(evt.hs); + map.es.addArray(evt.es); + map.js.addArray(evt.js); + map.cards.addArray(evt.cards); + map.cards2.addArray(evt.cards2); + } + }); + if(map.cards.length>0) return map; + }; return next; }, canAddJudge:function(card){ diff --git a/game/update.js b/game/update.js index 6c5143127..20b84e750 100644 --- a/game/update.js +++ b/game/update.js @@ -1,50 +1,51 @@ window.noname_update={ - version:'1.9.105.2', - update:'1.9.105.1', + version:'1.9.105.3', + update:'1.9.105.2', changeLog:[ - '庆祝《成神之日》开播!联机服务器全新升级!', + '新留赞插画', + 'getl机制', 'bug修复', ], files:[ - //'card/extra.js', + 'card/extra.js', //'card/huanlekapai.js', //'card/sp.js', - //'card/standard.js', + 'card/standard.js', //'card/swd.js', //'card/mtg.js', //'card/gujian.js', - //'card/guozhan.js', + 'card/guozhan.js', //'card/gwent.js', //'card/yunchou.js', //'card/zhenfa.js', - //'card/zhulu.js', - //'character/diy.js', - //'character/extra.js', + 'card/zhulu.js', + 'character/diy.js', + 'character/extra.js', //'character/hearth.js', //'character/gujian.js', //'character/gwent.js', //'character/hearth.js', - //'character/mobile.js', + 'character/mobile.js', //'character/mtg.js', //'character/old.js', - //'character/refresh.js', - //'character/shenhua.js', + 'character/refresh.js', + 'character/shenhua.js', 'character/sp.js', 'character/sp2.js', - //'character/tw.js', - //'character/standard.js', + 'character/tw.js', + 'character/standard.js', //'character/swd.js', //'character/xianjian.js', - //'character/xinghuoliaoyuan.js', - ///'character/yijiang.js', + 'character/xinghuoliaoyuan.js', + 'character/yijiang.js', //'character/yxs.js', //'extension/boss/extension.js', //'layout/default/layout.css', //'layout/nova/layout.css', //'mode/identity.js', //'mode/doudizhu.js', - //'mode/guozhan.js', + 'mode/guozhan.js', //'mode/chess.js', //'mode/tafang.js', //'mode/single.js', @@ -53,8 +54,8 @@ window.noname_update={ //'mode/versus.js', //'mode/boss.js', 'game/game.js', - 'game/keyWords.js', - 'game/server.js', + //'game/keyWords.js', + //'game/server.js', //'game/NoSleep.js', //'game/config.js', //'game/package.js', diff --git a/image/character/re_liuzan.jpg b/image/character/re_liuzan.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83ced03f494bf834c1a56d8f549121381e718947 GIT binary patch literal 55493 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 literal 0 HcmV?d00001 diff --git a/mode/guozhan.js b/mode/guozhan.js index d0cb7568f..eac2abc6c 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -829,28 +829,26 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, xindiaodu:{ audio:"diaodu", - global:"xindiaodu_use", - subfrequent:['use'], + group:'xindiaodu_use', subSkill:{ use:{ trigger:{ player:"useCard", }, - popup:false, - frequent:true, - prompt:'是否发动【调度】摸一张牌?', filter:function (event,player){ - return get.type(event.card)=='equip'&&game.hasPlayer(function(current){ - return current.hasSkill('xindiaodu')&¤t.isFriendOf(player); - }); + return get.type(event.card)=='equip'&&event.player.isAlive()&& + event.player.isFriendOf(player)&&(player==event.player||player.hasSkill('xindiaodu')); }, - content:function (){ - var logger=game.findPlayer(function(current){ - return current.isFriendOf(player)&¤t.hasSkill('xindiaodu'); - }); - logger.line(player,'green'); - logger.logSkill('xindiaodu'); - player.draw('nodelay'); + direct:true, + content:function(){ + 'step 0' + var next=trigger.player.chooseBool('是否发动【调度】摸一张牌?'); + if(player.hasSkill('xindiaodu')) next.set('frequentSkill','xindiaodu'); + 'step 1' + if(result.bool){ + player.logSkill('xindiaodu',trigger.player); + trigger.player.draw('nodelay'); + } }, ai:{ reverseEquip:true, @@ -900,7 +898,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } else event.finish(); 'step 2' - if(result.bool){ + if(result.bool&&player.getCards('h').contains(result.cards[0])){ event.card=result.cards[0]; player.chooseTarget('是否将'+get.translation(event.card)+'交给一名其他角色?',function(card,player,current){ return current!=player&¤t!=_status.event.target1&¤t.isFriendOf(player); @@ -4090,10 +4088,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } }, xuanlve:{ - trigger:{player:'loseAfter'}, + trigger:{ + player:'loseAfter', + source:'gainAfter', + global:['equipAfter','addJudgeAfter'], + }, direct:true, filter:function(event,player){ - return event.es&&event.es.length>0; + var evt=event.getl(player); + return evt&&evt.es&&evt.es.length>0; }, content:function(){ 'step 0' @@ -5495,13 +5498,35 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ inherit:'shoucheng', audio:'shoucheng', filter:function(event,player){ - if(event.player.isDead()||event.player.countCards('h')) return false; - if(!event.player.isFriendOf(player)) return false; - if(_status.currentPhase==event.player) return false; - for(var i=0;i0; + }); } - return false; + else event.goto(3); + "step 2" + if(result.bool){ + player.logSkill(event.name,target); + target.draw(); + } + "step 3" + if(event.list.length) event.goto(1); }, }, yicheng:{