diff --git a/audio/die/re_guotufengji.mp3 b/audio/die/re_guotufengji.mp3 new file mode 100644 index 000000000..b16bdb161 Binary files /dev/null and b/audio/die/re_guotufengji.mp3 differ diff --git a/audio/skill/rejigong1.mp3 b/audio/skill/rejigong1.mp3 new file mode 100644 index 000000000..b4c6ecbeb Binary files /dev/null and b/audio/skill/rejigong1.mp3 differ diff --git a/audio/skill/rejigong2.mp3 b/audio/skill/rejigong2.mp3 new file mode 100644 index 000000000..666d9567c Binary files /dev/null and b/audio/skill/rejigong2.mp3 differ diff --git a/audio/skill/shifei_re_guotufengji1.mp3 b/audio/skill/shifei_re_guotufengji1.mp3 new file mode 100644 index 000000000..3c8112edf Binary files /dev/null and b/audio/skill/shifei_re_guotufengji1.mp3 differ diff --git a/audio/skill/shifei_re_guotufengji2.mp3 b/audio/skill/shifei_re_guotufengji2.mp3 new file mode 100644 index 000000000..ed9aff680 Binary files /dev/null and b/audio/skill/shifei_re_guotufengji2.mp3 differ diff --git a/card/extra.js b/card/extra.js index b647923b0..178805809 100644 --- a/card/extra.js +++ b/card/extra.js @@ -640,7 +640,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ muniu_skill7:{ trigger:{player:'loseEnd'}, firstDo:true, - silent:true, + forced:true, + //silent:true, filter:function(event,player){ if(!event.ss||!event.ss.length||event.parent.name=='lose_muniu') return false; var muniu=player.getEquip('muniu'); @@ -950,6 +951,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ muniu:'木牛流马', muniu_bg:'牛', muniu_skill:'木牛', + muniu_skill7:'木牛流马', muniu_skill_bg:'辎', muniu_info:'出牌阶段限一次,你可以将一张手牌扣置于你装备区里的【木牛流马】下,若如此做,你可以将此装备移动到一名其他角色的装备区里;你可以将此装备牌下的牌如手牌般使用或打出。', muniu_skill_info:'出牌阶段限一次,你可以将一张手牌扣置于你装备区里的【木牛流马】下,若如此做,你可以将此装备移动到一名其他角色的装备区里;你可以将此装备牌下的牌如手牌般使用或打出。', diff --git a/card/standard.js b/card/standard.js index 7612680fa..3ce5c2a32 100644 --- a/card/standard.js +++ b/card/standard.js @@ -2399,6 +2399,16 @@ game.import('card',function(lib,game,ui,get,ai,_status){ game.players[i].hideTimer(); } 'step 8' + if(event.wuxieresult&&event.wuxieresult2&&event.wuxieresult2.skill){ + var info=get.info(event.wuxieresult2.skill); + if(info&&info.precontent&&!game.online){ + var next=game.createEvent('pre_'+event.wuxieresult2); + next.setContent(info.precontent); + next.set('result',event.wuxieresult2); + next.set('player',event.wuxieresult); + } + } + 'step 9' if(event.wuxieresult){ var next=event.wuxieresult.useResult(event.wuxieresult2); if(event.stateplayer&&event.statecard) next.respondTo=[event.stateplayer,event.statecard]; @@ -2406,7 +2416,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ next.respondTo=[trigger.player,trigger.card]; } } - 'step 9' + 'step 10' if(event.wuxieresult){ if(result.wuxied){ event.nowuxie=result.nowuxie; diff --git a/character/diy.js b/character/diy.js index 406687971..b8b4f3918 100755 --- a/character/diy.js +++ b/character/diy.js @@ -76,6 +76,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_kamome:['female','key',3,['kamome_yangfan','kamome_huanmeng','kamome_jieban']], key_nao:['female','key',3,['nao_duyin','nao_wanxin','nao_shouqing']], key_yuuki:['female','key',3,['yuuki_yicha']], + key_tenzen:['male','key',4,['tenzen_yixing','tenzen_lingyu']], key_kyouko:['female','key',3,['kyouko_rongzhu','kyouko_gongmian']], ns_huangchengyan:['male','shu',3,['nslongyue','nszhenyin']], @@ -186,7 +187,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ diy:{ diy_yijiang:["key_kud","key_misuzu","key_kamome","key_nao", "ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"], - diy_yijiang2:["key_yuuki","key_kyouko", + diy_yijiang2:["key_yuuki","key_tenzen","key_kyouko", "ns_chentai","ns_huangwudie","ns_sunyi","ns_zhangning","ns_yanghu"], diy_tieba:["ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua","ns_luyusheng"], diy_fakenews:["diy_wenyang","ns_zhangwei","ns_caimao","ns_chengpu"], @@ -279,7 +280,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_kamome:'#b仿生纱', key_nao:'#b潮鸣', key_yuuki:'#b4399司命', - key_kyouko:'#g阿阿啊687', + key_kyouko:'#b阿阿阿687', ns_huangchengyan:'#g竹邀月', ns_sunchensunjun:'#gVenusjeu', @@ -451,6 +452,166 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_lucia:['key_shizuru'], }, skill:{ + tenzen_yixing:{ + trigger:{ + player:'damageEnd', + source:'damageSource', + }, + logTarget:function(event,player){ + if(player==event.player) return event.source; + return event.player; + }, + filter:function(event,player){ + if(!event.card||(event.card.name!='sha'&&event.card.name!='juedou')) return false; + var hairi=lib.skill.tenzen_yixing.logTarget(event,player); + return hairi&&hairi!=player&&hairi.isAlive()&&(hairi.name1!='key_shizuku'&&hairi.name2!='key_shizuku'); + }, + frequent:true, + content:function(){ + 'step 0' + player.draw(); + 'step 1' + if(player.countCards('he')>0){ + player.chooseCard('he',true,'将一张牌作为“兴”置于武将牌上'); + } + else event.finish(); + 'step 2' + if(result.bool){ + var cards=result.cards; + player.lose(cards,ui.special,'toStorage'); + player.markAuto('tenzen_yixing',cards); + game.log(player,'将',cards,'放在了武将牌上'); + } + }, + intro:{ + content:'cards', + }, + group:'tenzen_yixing_counter', + subSkill:{ + counter:{ + trigger:{target:'useCardToTargeted'}, + filter:function(event,player){ + if(player==event.player||!player.getStorage('tenzen_yixing').length) return false; + return event.targets.length==1&&(event.card.name=='sha'||get.type(event.card)=='trick'); + }, + prompt:function(event){ + return '获得武将牌上的一张“兴”,并于'+get.translation(event.card)+'结算完成后视为对'+get.translation(event.player)+'使用一张同名牌'; + }, + check:function(event,player){ + if(!player.storage.tenzen_lingyu&&player.getStorage('tenzen_yixing').length<3) return false; + var card={ + name:event.card.name, + nature:event.card.nature, + isCard:true, + } + return player.canUse(card,event.player,false)&&get.effect(event.player,card,player,player)>0; + }, + content:function(){ + 'step 0' + player.chooseButton(['选择获得一张“兴”',player.storage.tenzen_yixing],true); + 'step 1' + if(result.bool){ + player.gain(result.links,'gain2','fromStorage'); + player.unmarkAuto('tenzen_yixing',result.links); + } + var next=game.createEvent('tenzen_yixing_insert'); + event.next.remove(next); + trigger.getParent().after.push(next); + next.player=player; + next.target=trigger.player; + next.setContent(function(){ + var card=event.getParent().card; + card={ + name:card.name, + nature:card.nature, + isCard:true, + }; + if(player.canUse(card,target,false)) player.useCard(card,target,false,'tenzen_yixing'); + }); + }, + }, + }, + }, + tenzen_lingyu:{ + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + juexingji:true, + skillAnimation:true, + animationColor:'water', + filter:function(event,player){ + return player.getStorage('tenzen_yixing').length>1; + }, + content:function(){ + player.awakenSkill('tenzen_lingyu'); + player.storage.tenzen_lingyu=true; + player.loseMaxHp(); + if(player.isHealthy()) player.draw(2); + player.addSkill('tenzen_tianquan'); + }, + }, + tenzen_tianquan:{ + trigger:{player:'useCardToPlayered'}, + filter:function(event,player){ + return (event.card.name=='sha'||event.card.name=='juedou')&&event.targets.length==1&&player.getStorage('tenzen_yixing').length>0; + }, + logTarget:'target', + usable:1, + check:function(event,player){ + return get.attitude(player,event.target)<0; + }, + content:function(){ + 'step 0' + player.viewHandcards(trigger.target); + 'step 1' + player.chooseButton(['选择一张“兴”置于牌堆顶',player.storage.tenzen_yixing],true); + 'step 2' + if(result.bool){ + player.unmarkAuto('tenzen_yixing',result.links); + var cards=get.cards(5); + player.showCards(cards,get.translation(player)+'发动了【天全】'); + game.cardsGotoOrdering(cards).relatedEvent=trigger.getParent(); + ui.cardPile.insertBefore(result.links[0],ui.cardPile.firstChild); + var num=cards.filter(function(card){ + return get.type(card,false)=='basic'; + }).length; + if(num){ + if(trigger.card.name=='sha'){ + var id=trigger.target.playerid; + var map=trigger.getParent().customArgs; + if(!map[id]) map[id]={}; + if(typeof map[id].shanRequired=='number'){ + map[id].shanRequired+=num; + } + else{ + map[id].shanRequired=1+num; + } + } + else{ + var idt=trigger.target.playerid; + var map=trigger.getParent().customArgs; + if(!map[idt]) map[idt]={}; + if(!map[idt].shaReq) map[idt].shaReq={}; + if(!map[idt].shaReq[idt]) map[idt].shaReq[idt]=1; + map[idt].shaReq[idt]++; + } + } + if(num<5){ + var next=game.createEvent('tenzen_lingyu_gain'); + next.cards=cards; + next.player=player; + event.next.remove(next); + trigger.getParent().after.push(next); + next.setContent(function(){ + if(player.getHistory('sourceDamage',function(evt){ + return evt.card==event.parent.card; + }).length>0) player.gain(cards.filter(function(card){ + return get.type(card,false)!='basic'; + }),'gain2'); + }); + } + } + }, + }, kyouko_rongzhu:{ trigger:{global:'gainEnd'}, filter:function(event,player){ @@ -2963,7 +3124,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ else event.finish(); 'step 3' if(event.count&&game.hasPlayer(function(target){ - return lib.skill.ryoichi_baoyi.filterTarget; + return lib.skill.ryoichi_baoyi.filterTarget(null,player,target); })) event.goto(1); }, }, @@ -14811,6 +14972,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ kyouko_gongmian_use:'共勉', kyouko_gongmian_exchange:'共勉', kyouko_gongmian_info:'①出牌阶段,你可以选择一名未以此法选择过的角色,若其手牌:大于你,你获得其一张牌,然后交给其一张牌;小于你,其交给你一张牌,然后你交给其一张牌;等于你,你与其各摸一张牌。②出牌阶段结束时,你可以获得一名其他角色区域内的至多X张牌,然后交给其等量的牌。③弃牌阶段开始时,若X不小于你的体力值,你可以获得一名手牌数少于你的角色的所有手牌,然后将手牌数的一半(向上取整)交给该角色。(X为你本回合内发动过〖共勉①〗的次数)', + key_tenzen:'加纳天善', + tenzen_yixing:'弈兴', + tenzen_yixing_info:'当你因【杀】或【决斗】而造成伤害后或受到伤害后,你可以摸一张牌,然后将一张牌置于武将牌上,称为“兴”。当你成为其他角色使用【杀】或普通锦囊牌的唯一目标后,你可以获得一张“兴”,并于此牌结算完成后视为对其使用一张名称相同的牌。', + //若对方为水织静久则无法触发〖弈兴〗 + tenzen_lingyu:'领域', + tenzen_lingyu_info:'觉醒技,准备阶段,若你的“兴”超过一张,则你减1点体力上限并获得技能〖天全〗。若你以此法失去了体力,则你摸两张牌。', + tenzen_tianquan:'天全', + tenzen_tianquan_info:'每回合限一次,当你使用【杀】或【决斗】指定唯一目标后,你可以观看目标角色的手牌,将一张“兴”置于牌堆顶并展示牌堆顶的五张牌。这些牌中每有一张基本牌,响应此牌需要的【闪】/【杀】的数量便+1。此牌结算完成后,若此牌造成过伤害,则你获得这些牌中的非基本牌。', noname:"小无", noname_zhuyuan:"祝愿", diff --git a/character/extra.js b/character/extra.js index 0289737b9..b11457852 100755 --- a/character/extra.js +++ b/character/extra.js @@ -14,6 +14,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ extra_lei:['shen_ganning','shen_zhangliao'], extra_key:['key_kagari','key_shiki','key_hina'], extra_ol:['ol_zhangliao','shen_caopi','shen_zhenji'], + extra_mobile:['shen_guojia'], extra_offline:['shen_diaochan','boss_zhaoyun'], extra_mini:['mini_zhugeliang','mini_lvbu','mini_lvmeng'], }, @@ -23,6 +24,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,['hina_shenxian','hina_mashu','hina_tieji'],['key','hiddenSkill']], + shen_guojia:['male','shen',3,['shuishi','stianyi','sghuishi']], shen_diaochan:['female','shen',3,['meihun','huoxin'],['qun']], shen_guanyu:['male','shen',5,['new_wuhun','wushen'],['shu']], shen_zhaoyun:['male','shen',2,['xinjuejing','relonghun'],['shu']], @@ -33,10 +35,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shen_caocao:['male','shen',3,['new_guixin','feiying'],['wei']], shen_lvbu:['male','shen',5,['baonu','wumou','ol_wuqian','ol_shenfen'],['qun']], - "shen_liubei":["male","shen",6,["nzry_longnu","nzry_jieying"],["shu"]], - "shen_luxun":["male","shen",4,["nzry_junlve","nzry_cuike","nzry_dinghuo"],["wu"]], - "shen_zhangliao":["male","shen",4,["drlt_duorui","drlt_zhiti"],["wei"]], - "shen_ganning":["male","shen","3/6",["drlt_poxi","drlt_jieying"],["wu"]], + shen_liubei:["male","shen",6,["nzry_longnu","nzry_jieying"],["shu"]], + shen_luxun:["male","shen",4,["nzry_junlve","nzry_cuike","nzry_dinghuo"],["wu"]], + shen_zhangliao:["male","shen",4,["drlt_duorui","drlt_zhiti"],["wei"]], + shen_ganning:["male","shen","3/6",["drlt_poxi","drlt_jieying"],["wu"]], ol_zhangliao:['male','shen',4,['olduorui','olzhiti'],['wei']], shen_caopi:['male','shen',5,['chuyuan','dengji'],['wei']], shen_zhenji:['female','shen',4,['shenfu','qixian'],['wei']], @@ -228,6 +230,190 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.turnOver(); }, }, + shuishi:{ + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.maxHp<10; + }, + filterTarget:true, + content:function(){ + 'step 0' + target.draw(); + 'step 1' + if(!result||!Array.isArray(result)||result.length!=1||get.itemtype(result[0])!='card'){ + event.finish(); + return; + } + var suit=get.suit(result[0]),hs=target.getCards('h'); + for(var i of hs){ + if(i!=result[0]&&get.suit(i,target)==suit){ + player.loseMaxHp(); + target.showHandcards(); + event.finish(); + return; + } + } + player.gainMaxHp(); + 'step 2' + if(player.maxHp<10){ + player.chooseBool('是否继续发动【慧识】?'); + } + else event.finish(); + 'step 3' + if(result.bool) event.goto(0); + }, + ai:{ + order:0.5, + result:{ + target:0.2, + player:function(player,target){ + var list=[],hs=target.getCards('h'); + for(var i of hs) list.add(get.suit(i,target)); + if(list.length==0) return 0; + if(list.length==1) return player.maxHp>2?0:-2; + if(list.length==2) return player.maxHp>3?0:-2; + return -2; + }, + }, + }, + }, + stianyi:{ + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + juexingji:true, + skillAnimation:true, + animationColor:'gray', + filter:function(event,player){ + return !game.hasPlayer(function(current){ + return current.getAllHistory('damage').length==0; + }); + }, + content:function(){ + 'step 0' + player.awakenSkill('stianyi'); + player.gainMaxHp(2); + player.recover(); + 'step 1' + player.chooseTarget(true,'令一名角色获得技能〖佐幸〗').set('ai',function(target){ + return get.attitude(_status.event.player,target); + }); + 'step 2' + if(result.bool){ + var target=result.targets[0]; + player.line(target,'green'); + target.storage.zuoxing=player; + target.addSkill('zuoxing'); + } + }, + derivation:'zuoxing', + }, + zuoxing:{ + trigger:{player:'phaseZhunbeiBegin'}, + filter:function(event,player){ + var target=player.storage.zuoxing; + return target&&target.isAlive()&&target.maxHp>1; + }, + logTarget:function(event,player){ + return player.storage.zuoxing; + }, + check:function(event,player){ + var target=player.storage.zuoxing; + if(get.attitude(player,target)<=0) return true; + return target.maxHp>3&&!player.hasJudge('lebu'); + }, + content:function(){ + player.storage.zuoxing.loseMaxHp(); + player.addTempSkill('zuoxing2'); + }, + }, + zuoxing2:{ + enable:'phaseUse', + usable:1, + filter:function(event,player){ + for(var i of lib.inpile){ + if(get.type(i)=='trick'&&event.filterCard({name:i,isCard:true},player,event)) return true; + } + return false; + }, + chooseButton:{ + dialog:function(event,player){ + var list=[]; + for(var i of lib.inpile){ + if(get.type(i)=='trick'&&event.filterCard({name:i,isCard:true},player,event)) list.push(['锦囊','',i]); + } + return ui.create.dialog('佐幸',[list,'vcard']); + }, + check:function(button){ + return _status.event.player.getUseValue({name:button.link[2],isCard:true}); + }, + backup:function(links,player){ + return { + viewAs:{ + name:links[0][2], + isCard:true, + }, + filterCard:()=>false, + selectCard:-1, + popname:true, + precontent:function(){ + player.logSkill('zuoxing'); + //delete event.result.skill; + }, + } + }, + prompt:function(links,player){ + return '请选择'+get.translation(links[0][2])+'的目标'; + }, + }, + ai:{order:1,result:{player:1}}, + }, + sghuishi:{ + enable:'phaseUse', + limited:true, + skillAnimation:true, + animationColor:'water', + filterTarget:lib.filter.notMe, + content:function(){ + 'step 0' + player.awakenSkill('sghuishi'); + var list=target.getSkills(null,false,false).filter(function(skill){ + var info=lib.skill[skill]; + return info&&info.juexingji; + }); + if(list.length){ + target.addMark('sghuishi',1,false); + for(var i of list){ + var info=lib.skill[i]; + if(info.filter&&!info.charlotte&&!info.sghuishi_filter){ + info.sghuishi_filter=info.filter; + info.filter=function(event,player){ + if(player.hasMark('sghuishi')) return true; + return this.sghuishi_filter.apply(this,arguments); + } + } + } + } + else target.draw(4); + player.loseMaxHp(2); + }, + intro:{content:'发动非Charlotte觉醒技时无视条件'}, + ai:{ + order:0.1, + expose:0.2, + result:{ + target:function(player,target){ + if(player.hasUnknown()||player.maxHp<5) return 0; + var list=target.getSkills(null,false,false).filter(function(skill){ + var info=lib.skill[skill]; + return info&&info.juexingji; + }); + if(list.length||target.hasJudge('lebu')||target.hasSkillTag('nogain')) return 0; + return 4; + }, + }, + }, + }, zhanjiang:{ trigger:{player:'phaseZhunbeiBegin'}, filter:function(event,player){ @@ -4147,6 +4333,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ boss_juejing_info:'锁定技,摸牌阶段开始前,你跳过此阶段。当你获得牌/失去手牌后,若你的手牌数大于4/小于4,则你将手牌摸至4张/弃置至4张。', zhanjiang:'斩将', zhanjiang_info:'准备阶段开始时,如果其他角色的装备区内有【青釭剑】,你可以获得之', + shen_guojia:'神郭嘉', + shuishi:'慧识', + shuishi_info:'出牌阶段限一次,若你的体力上限小于10,则你可选择一名角色。你令其摸一张牌,若其以此法获得的牌:与该角色的其他手牌花色均不相同,则你加1点体力上限,若你的体力上限小于10,则你可以重复此流程;否则你减1点体力上限,且其展示所有手牌。', + stianyi:'天翊', + stianyi_info:'觉醒技,准备阶段,若场上的所有存活角色均于本局游戏内受到过伤害,则你加2点体力上限并回复1点体力,然后令一名角色获得技能〖佐幸〗。', + zuoxing:'佐幸', + zuoxing2:'佐幸', + zuoxing_info:'准备阶段,若令你获得〖佐幸〗的角色存活且体力上限大于1,则你可以令其减1点体力上限,然后你获得如下效果:出牌阶段限一次,你可以获得一张普通锦囊牌。', + sghuishi:'辉逝', + sghuishi_info:'限定技,出牌阶段,你可以选择一名其他角色:若其有未发动过的觉醒技,则你令其发动这些觉醒技时无视原有条件;否则其摸四张牌。然后你减2点体力上限。', key_kagari:'篝', kagari_zongsi:'纵丝', @@ -4178,6 +4374,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ extra_lei:'神话再临·雷', extra_key:'神话再临·论外', extra_ol:'神话再临OL', + extra_mobile:'神话再临·始计篇', extra_offline:'神话再临·线下', extra_mini:'欢乐三国杀', }, diff --git a/character/mobile.js b/character/mobile.js index d5452f495..12b22f883 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -12,12 +12,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mobile_shijixin:['wujing','sp_mifuren','sp_xinpi'], mobile_sunben:["re_sunben"], mobile_standard:["xin_xiahoudun","xin_zhangfei"], - mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai"], + mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong"], mobile_yijiang1:["re_jikang","old_bulianshi","xin_liaohua","xin_caozhang","re_xusheng","xin_chengpu","xin_jianyong","xin_gongsunzan","xin_zhuran","re_lingtong","re_liubiao","xin_guohuai","xin_panzhangmazhong","xin_fuhuanghou","re_handang"], mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","liuzan","xin_hansui"], }, }, character:{ + re_zhurong:['female','shu',4,['juxiang','relieren']], + re_jiangwei:['male','shu',4,['retiaoxin','zhiji']], wujing:['male','wu',4,['heji']], sp_mifuren:['female','shu',3,['spcunsi','spguixiu']], sp_xinpi:['male','wei',3,['spyinju','spchijie']], @@ -341,6 +343,76 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + relieren:{ + shaRelated:true, + audio:2, + audioname:['boss_lvbu3'], + trigger:{player:'useCardToPlayered'}, + filter:function(event,player){ + return event.card.name=='sha'&&player.canCompare(event.target); + }, + check:function(event,player){ + return get.attitude(player,event.target)<0; + }, + //priority:5, + content:function(){ + "step 0" + player.chooseToCompare(trigger.target).clear=false; + "step 1" + if(result.bool){ + if(trigger.target.countGainableCards(player,'he')) player.gainPlayerCard(trigger.target,true,'he'); + ui.clear(); + } + else{ + var card1=result.player; + var card2=result.target; + if(get.position(card1)=='d') trigger.target.gain(card1,'gain2'); + if(get.position(card2)=='d') player.gain(card2,'gain2'); + } + } + }, + retiaoxin:{ + audio:'tiaoxin', + audioname:['sp_jiangwei','xiahouba','re_jiangwei'], + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){ + return target!=player&&target.countCards('he'); + }, + content:function(){ + "step 0" + target.chooseToUse(function(card,player,event){ + if(get.name(card)!='sha') return false; + return lib.filter.filterCard.apply(this,arguments); + },'挑衅:对'+get.translation(player)+'使用一张杀,或令其弃置你的一张牌').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){ + if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false; + return lib.filter.filterTarget.apply(this,arguments); + }).set('sourcex',player); + "step 1" + if(result.bool==false&&target.countCards('he')>0){ + player.discardPlayerCard(target,'he',true); + } + else{ + event.finish(); + } + }, + ai:{ + order:4, + expose:0.2, + result:{ + target:-1, + player:function(player,target){ + if(!target.canUse('sha',player)) return 0; + if(target.countCards('h')==0) return 0; + if(target.countCards('h')==1) return -0.1; + if(player.hp<=2) return -2; + if(player.countCards('h','shan')==0) return -1; + return -0.5; + } + }, + threaten:1.1 + } + }, //狗剩 reduoji:{ audio:'duoji', @@ -8594,6 +8666,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ spchijie_info:'每回合限一次。当你成为其他角色使用牌的唯一目标时,你可判定。若结果大于6,则你取消此牌的所有目标。', reduoji:'夺冀', reduoji_info:'出牌阶段限一次,你可将一张牌置于其他角色的武将牌上,称为“冀”。当有装备牌因使用而进入一名角色的装备区后,若该角色有“冀”且其为使用者,则你获得此装备牌,其移去一个“冀”并摸一张牌。一名其他角色的回合结束后,若其有“冀”,则你获得其的所有“冀”。', + re_jiangwei:'界姜维', + retiaoxin:'挑衅', + retiaoxin_info:'出牌阶段限一次,你可以指定一名有牌的其他角色,该角色需对你使用一张【杀】,否则你弃置其一张牌。', + re_zhurong:'界祝融', + relieren:'烈刃', + relieren_info:'当你使用【杀】指定目标后,你可以和目标角色进行拼点。若你赢,你获得其一张牌。若你没赢,你获得对方的拼点牌,其获得你的拼点牌。', mobile_standard:'手杀异构·标准包', mobile_shenhua:'手杀异构·神话再临', diff --git a/character/rank.js b/character/rank.js index b44f1fe25..589373f36 100644 --- a/character/rank.js +++ b/character/rank.js @@ -470,6 +470,8 @@ window.noname_character_rank={ 'ns_chentai', 'ns_yanghu', 'ns_zhangning', + 'huangchengyan', + 'zhongyan', ], bp:[ 'chess_diaochan', @@ -674,6 +676,10 @@ window.noname_character_rank={ 'nanhualaoxian', 'ns_sunyi', 'key_kyouko', + 're_guotufengji', + 'shen_guojia', + 'ol_jiangwei', + 'key_tenzen', ], b:[ 'diy_feishi', @@ -854,6 +860,7 @@ window.noname_character_rank={ 'cheliji', 'shibao', 'zhangmiao', + 'ol_zhurong', ], bm:[ 'diy_xizhenxihong', @@ -1067,6 +1074,7 @@ window.noname_character_rank={ 'junk_simayi', 'key_youta', 'old_chenqun', + 'duanwei', ], rarity:{ legend:[ @@ -1171,6 +1179,7 @@ window.noname_character_rank={ 're_sunben', 'ol_dingyuan', 'wujing', + 'shen_guojia', 'key_tomoya', 'key_masato', 'key_shiorimiyuki', @@ -1184,6 +1193,9 @@ window.noname_character_rank={ 'key_shiroha', 'key_hina', 'key_sakuya', + 'key_yuuki', + 'key_kyouko', + 'key_tenzen', 'noname', ], epic:[ @@ -1374,8 +1386,7 @@ window.noname_character_rank={ 'key_chihaya', 'key_yukito', 'key_kotomi', - 'key_yuuki', - 'key_kyouko', + 'zhongyan', 'kaisa', ], rare:[ @@ -1657,6 +1668,10 @@ window.noname_character_rank={ 're_zhoucang', 'sp_mifuren', 'cheliji', + 're_guotufengji', + 'ol_jiangwei', + 'ol_zhurong', + 'huangchengyan', ], junk:[ 'sunshao', diff --git a/character/refresh.js b/character/refresh.js index 992db2f5d..059f5de9c 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -7,20 +7,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong",'re_gongsunzan'], refresh_feng:['caoren','ol_xiahouyuan','re_huangzhong','ol_weiyan','ol_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'], refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"], - refresh_lin:['re_zhurong','re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo','ol_zhurong'], - refresh_shan:['re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai'], + refresh_lin:['re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo','ol_zhurong'], + refresh_shan:['ol_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai'], refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua'], refresh_yijiang2:['old_madai','wangyi','guanzhang','xin_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_bulianshi','xin_liubiao'], refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','re_yufan','re_liru','re_manchong','re_fuhuanghou'], refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan','re_caozhen','re_zhoucang','re_chenqun'], - refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu','re_gongsunyuan'], + refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu','re_gongsunyuan','re_guotufengji'], }, }, connect:true, character:{ - re_chenqun:['math','wei',3,['redingpin','refaen']], + re_guotufengji:['male','qun',3,['rejigong','shifei']], + re_chenqun:['male','wei',3,['redingpin','refaen']], re_zhoucang:['male','shu',4,['rezhongyong']], - ol_zhurong:['female','shu',4,['juxiang','lieren','changbiao'],['unseen']], + ol_zhurong:['female','shu',4,['juxiang','lieren','changbiao']], re_zhangchunhua:['female','wei',3,['rejueqing','reshangshi']], re_gongsunyuan:['male','qun',4,['rehuaiyi']], re_caozhen:['male','wei',4,['residi']], @@ -57,7 +58,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_zhuran:['male','wu',4,['xindanshou']], re_caozhi:['male','wei',3,['reluoying','rejiushi','chengzhang']], ol_pangtong:['male','shu',3,['ollianhuan','olniepan'],[]], - re_zhangyi:['male','shu',4,['rewurong','shizhi']], + re_zhangyi:['male','shu',5,['rewurong','reshizhi']], re_wuguotai:['female','wu',3,['reganlu','buyi']], re_gaoshun:['male','qun',4,['rexianzhen','rejinjiu']], re_caocao:['male','wei',4,['new_rejianxiong','hujia'],['zhu']], @@ -106,12 +107,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_dianwei:["male","wei",4,["reqiangxi"],[]], re_yanwen:["male","qun",4,["reshuangxiong"],[]], ol_yuanshao:['male','qun',4,['olluanji','olxueyi'],['zhu']], - re_zhurong:['female','shu',4,['juxiang','relieren']], re_menghuo:['male','shu',4,['huoshou','rezaiqi']], ol_dongzhuo:['male','qun',8,['oljiuchi','roulin','benghuai','olbaonue'],['zhu']], ol_sunjian:['male','wu','4/5',['gzyinghun','wulie']], re_caopi:['male','wei',3,['rexingshang','refangzhu','songwei'],['zhu']], - re_jiangwei:['male','shu',4,['retiaoxin','zhiji']], + ol_jiangwei:['male','shu',4,['oltiaoxin','olzhiji']], re_caiwenji:['female','qun',3,['rebeige','duanchang']], ol_liushan:['male','shu',3,['xiangle','olfangquan','olruoyu'],['zhu']], re_zhangzhang:['male','wu',3,['rezhijian','guzheng']], @@ -134,6 +134,140 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_xushu:['zhaoyun','sp_zhugeliang'], }, skill:{ + //界姜维 + oltiaoxin:{ + audio:'tiaoxin', + audioname:['sp_jiangwei','xiahouba','re_jiangwei','gz_jiangwei','ol_jiangwei'], + enable:'phaseUse', + usable:2, + filter:function(event,player){ + if(player.getStat('skill').oltiaoxin) return !player.hasSkill('oltiaoxin2'); + return true; + }, + filterTarget:function(card,player,target){ + return target!=player&&target.inRange(player)&&target.countCards('he')>0; + }, + content:function(){ + "step 0" + target.chooseToUse(function(card,player,event){ + if(get.name(card)!='sha') return false; + return lib.filter.filterCard.apply(this,arguments); + },'挑衅:对'+get.translation(player)+'使用一张杀,或令其弃置你的一张牌').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){ + if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false; + return lib.filter.filterTarget.apply(this,arguments); + }).set('sourcex',player); + "step 1" + if(result.bool&&player.getHistory('damage',function(evt){ + return evt.getParent().type=='card'&&evt.getParent(4)==event; + }).length>0) player.addTempSkill('oltiaoxin2','phaseUseEnd'); + else if(target.countDiscardableCards(player,'he')>0) player.discardPlayerCard(target,'he',true).boolline=true; + }, + ai:{ + order:4, + expose:0.2, + result:{ + target:-1, + player:function(player,target){ + if(target.countCards('h')==0) return 0; + if(target.countCards('h')==1) return -0.1; + if(player.hp<=2) return -2; + if(player.countCards('h','shan')==0) return -1; + return -0.5; + } + }, + threaten:1.1 + } + }, + oltiaoxin2:{}, + olzhiji:{ + skillAnimation:true, + animationColor:'fire', + audio:2, + unique:true, + juexingji:true, + //priority:-10, + derivation:'reguanxing', + trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']}, + forced:true, + filter:function(event,player){ + if(player.storage.zhiji) return false; + return player.countCards('h')==0; + }, + content:function(){ + "step 0" + player.awakenSkill('olzhiji'); + player.chooseDrawRecover(2,true); + "step 1" + player.loseMaxHp(); + player.storage.olzhiji=true; + player.addSkill('reguanxing'); + } + }, + //界郭图张嶷 + rejigong:{ + audio:2, + direct:true, + trigger:{player:'phaseUseBegin'}, + content:function(){ + 'step 0' + player.chooseControl('一张','两张','三张','cancel2').set('prompt',get.prompt2('rejigong')).set('ai',()=>'三张'); + 'step 1' + if(result.control!='cancel2'){ + player.logSkill('rejigong'); + player.addTempSkill('rejigong2'); + player.draw(1+result.index); + } + }, + }, + rejigong2:{ + audio:'rejigong', + mod:{ + maxHandcardBase:function(player){ + if(game.online) return (player.getStat('damage')||0); + var num=0; + player.getHistory('sourceDamage',function(evt){ + num+=evt.num; + }); + return num; + }, + }, + trigger:{player:'phaseDiscardBegin'}, + forced:true, + charlotte:true, + filter:function(event,player){ + if(player.isHealthy()) return false; + var num=0; + player.getHistory('sourceDamage',function(evt){ + num+=evt.num; + }); + if(!num) return false; + var num2=0; + player.getHistory('gain',function(evt){ + var evtx=evt.getParent(2); + if(evtx.name=='rejigong'&&evtx.player==player) num2+=evt.cards.length; + }); + return num>=num2; + }, + content:function(){ + player.recover(); + }, + }, + reshizhi:{ + mod:{ + cardname:function(card,player){ + if(card.name=='shan'&&player.hp==1) return 'sha'; + }, + }, + trigger:{source:'damageEnd'}, + forced:true, + filter:function(event,player){ + return event.card&&event.card.name=='sha'&&player.hp==1&& + event.cards&&event.cards.length==1&&event.cards[0].name=='shan'; + }, + content:function(){ + player.recover(); + }, + }, //界陈群 redingpin:{ audio:2, @@ -1656,7 +1790,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ direct:true, filter:function(event,player){ return game.hasPlayer(function(current){ - return current!=player&¤t.getHistory('lose').length>0; + return current!=player&¤t.getHistory('lose',function(evt){ + return evt.cards2&&evt.cards2.length>0; + }).length>0; }); }, content:function(){ @@ -1664,7 +1800,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.chooseTarget(get.prompt('rejuece'),'对一名本回合失去过牌的其他角色造成1点伤害',function(card,player,target){ return _status.event.targets.contains(target); }).set('targets',game.filterPlayer(function(current){ - return current!=player&¤t.getHistory('lose').length>0; + return current!=player&¤t.getHistory('lose',function(evt){ + return evt.cards2&&evt.cards2.length>0; + }).length>0; })).set('ai',function(target){ var player=_status.event.player; return get.damageEffect(target,player,player); @@ -8586,48 +8724,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ nolose:true } }, - retiaoxin:{ - audio:'tiaoxin', - audioname:['sp_jiangwei','xiahouba','re_jiangwei'], - enable:'phaseUse', - usable:1, - filterTarget:function(card,player,target){ - return target!=player&&target.countCards('he'); - }, - content:function(){ - "step 0" - target.chooseToUse(function(card,player,event){ - if(get.name(card)!='sha') return false; - return lib.filter.filterCard.apply(this,arguments); - },'挑衅:对'+get.translation(player)+'使用一张杀,或令其弃置你的一张牌').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){ - if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false; - return lib.filter.filterTarget.apply(this,arguments); - }).set('sourcex',player); - "step 1" - if(result.bool==false&&target.countCards('he')>0){ - player.discardPlayerCard(target,'he',true); - } - else{ - event.finish(); - } - }, - ai:{ - order:4, - expose:0.2, - result:{ - target:-1, - player:function(player,target){ - if(!target.canUse('sha',player)) return 0; - if(target.countCards('h')==0) return 0; - if(target.countCards('h')==1) return -0.1; - if(player.hp<=2) return -2; - if(player.countCards('h','shan')==0) return -1; - return -0.5; - } - }, - threaten:1.1 - } - }, rebeige:{ audio:'beige', audioname:['re_caiwenji'], @@ -8881,34 +8977,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ air:{}, }, }, - relieren:{ - shaRelated:true, - audio:2, - audioname:['boss_lvbu3'], - trigger:{player:'useCardToPlayered'}, - filter:function(event,player){ - return event.card.name=='sha'&&player.canCompare(event.target); - }, - check:function(event,player){ - return get.attitude(player,event.target)<0; - }, - //priority:5, - content:function(){ - "step 0" - player.chooseToCompare(trigger.target).clear=false; - "step 1" - if(result.bool){ - if(trigger.target.countGainableCards(player,'he')) player.gainPlayerCard(trigger.target,true,'he'); - ui.clear(); - } - else{ - var card1=result.player; - var card2=result.target; - if(get.position(card1)=='d') trigger.target.gain(card1,'gain2'); - if(get.position(card2)=='d') player.gain(card2,'gain2'); - } - } - }, rezaiqi:{ count:function(){ var num=0; @@ -9239,7 +9307,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rehuashen_info:'游戏开始后,你随机获得三张未加入游戏的武将牌,选一张置于你面前并声明该武将牌的一项技能,你拥有该技能且同时将性别和势力属性变成与该武将相同直到该化身被替换。你的每个准备阶段和结束后,你可以选择一项:①弃置至多两张未展示的化身牌并重新获得等量化身牌;②更换所展示的化身牌或技能。(你不可声明限定技、觉醒技、隐匿技、主公技等特殊技能)。', rexinsheng:'新生', rexinsheng_info:'当你受到1点伤害后,你可以获得一张新的化身牌。', - re_zhurong:'界祝融', re_menghuo:'界孟获', re_sunjian:'手杀孙坚', re_caopi:'界曹丕', @@ -9251,18 +9318,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rexingshang_info:'当其他角色死亡后,你可以选择一项:回复1点体力,或获得其所有牌。', refangzhu:'放逐', refangzhu_info:'当你受到伤害后,你可以令一名其他角色选择一项:摸X张牌并将武将牌翻面,或弃置X张牌并失去1点体力。(X为你已损失的体力值)', - relieren:'烈刃', - relieren_info:'当你使用【杀】指定目标后,你可以和目标角色进行拼点。若你赢,你获得其一张牌。若你没赢,你获得对方的拼点牌,其获得你的拼点牌。', rezaiqi:'再起', rezaiqi_info:'弃牌阶段结束时,你可以令至多X名角色选择一项:1.摸一张牌,2.令你回复1点体力(X为本回合进入弃牌堆的红色牌数)', - re_jiangwei:'界姜维', + ol_jiangwei:'界姜维', re_caiwenji:'界蔡文姬', re_baosanniang:'手杀鲍三娘', retuntian:'屯田', - retiaoxin:'挑衅', rebeige:'悲歌', retuntian_info:'当你于回合外失去牌时,你可以进行一次判定。若判定结果为♥,你获得此判定牌。否则你将此牌置于你的武将牌上,称之为【田】。锁定技,你计算与其他角色的距离时-X(X为你武将牌上【田】的数目)', - retiaoxin_info:'出牌阶段限一次,你可以指定一名有牌的其他角色,该角色需对你使用一张【杀】,否则你弃置其一张牌。', rebeige_info:'当有角色受到【杀】造成的伤害后,你可以弃一张牌,并令其进行一次判定,若判定结果为:♥该角色回复X点体力(X为伤害点数);♦︎该角色摸三张牌;♣伤害来源弃两张牌;♠伤害来源将其武将牌翻面', re_liushan:'手杀刘禅', re_sunben:'界孙笨', @@ -9479,6 +9542,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ redingpin_info:'出牌阶段,你可以弃置一张本回合未使用过/弃置过的类型的牌并选择一名角色。其进行判定,若结果为:黑色,其摸X张牌(X为其体力值且至多为3)且本回合内不能再成为〖定品〗的目标;红桃,你令此次弃置的牌不计入〖定品〗弃置牌合法性的检测;方片,你将武将牌翻面。', refaen:'法恩', refaen_info:'一名角色翻面或横置后,你可令其摸一张牌。', + reshizhi:'矢志', + reshizhi_info:'锁定技,若你的体力值为1,则你的【闪】视为【杀】,且当你使用对应的实体牌为一张【闪】的非转化普通杀造成伤害后,你回复1点体力。', + re_guotufengji:'界郭图逢纪', + rejigong:'急攻', + rejigong2:'急攻', + rejigong_info:'出牌阶段开始时,你可以摸至多三张牌。若如此做,你本回合的手牌上限基数改为X,且弃牌阶段结束时,若X不小于Y,则你回复1点体力。(X为你本回合内造成的伤害值之和,Y为你本回合内因〖急攻〗摸牌而获得的牌的数量总和)', + ol_jiangwei:'界姜维', + oltiaoxin:'挑衅', + oltiaoxin_info:'出牌阶段限一次,你可以选择一名攻击范围内包含你的角色。然后除非该角色对你使用一张【杀】且此【杀】对你造成伤害,否则你弃置其一张牌,然后将此技能于此出牌阶段内修改为出牌阶段限两次。 ', + olzhiji:'志继', + olzhiji_info:'觉醒技,准备阶段或结束阶段,若你没有手牌,你回复1点体力或摸两张牌,然后减1点体力上限,获得〖观星〗。', refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', diff --git a/character/shenhua.js b/character/shenhua.js index c6ff64c8b..f374690f9 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -5571,11 +5571,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(card.name=='sha') return num+1; } }, + charlotte:true, }, tianyi3:{ mod:{ cardEnabled:function(card){if(card.name=='sha') return false} - } + }, + charlotte:true, }, shuangxiong:{ audio:true, @@ -7337,13 +7339,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ caopi:['caopi','re_caopi'], xuhuang:['re_xuhuang','xuhuang'], menghuo:['re_menghuo','menghuo'], - zhurong:['re_zhurong','zhurong'], + zhurong:['re_zhurong','ol_zhurong','zhurong'], sunjian:['ol_sunjian','re_sunjian','sunjian'], jiaxu:['jiaxu','ns_jiaxu'], dongzhuo:['ol_dongzhuo','sp_dongzhuo','re_dongzhuo','dongzhuo'], dengai:['re_dengai','ol_dengai','dengai'], sp_zhanghe:['sp_zhanghe','yj_zhanghe'], - jiangwei:['re_jiangwei','mini_jiangwei','jiangwei'], + jiangwei:['ol_jiangwei','re_jiangwei','mini_jiangwei','jiangwei'], liushan:['ol_liushan','re_liushan','liushan'], sunce:['re_sunben','re_sunce','sunce'], zhangzhang:['re_zhangzhang','zhangzhang'], diff --git a/character/sp.js b/character/sp.js index 6b372d445..3efb874c1 100755 --- a/character/sp.js +++ b/character/sp.js @@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ sp:{ - sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu','caoshuang','sp_zhangliao','wolongfengchu','ol_xinxianying','panshu','huangzu'], + sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu','caoshuang','sp_zhangliao','wolongfengchu','ol_xinxianying','panshu','huangzu','huangchengyan'], sp_tongque:["liuxie","lingju","fuwan","sp_fuwan","sp_fuhuanghou","sp_jiben"], sp_zhongdan:["cuiyan","huangfusong"], sp_star:["sp_xiahoushi","jsp_zhaoyun","huangjinleishi","sp_pangtong","sp_daqiao","sp_ganning","sp_xiahoudun","sp_lvmeng","sp_zhangfei","sp_liubei"], @@ -18,6 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, characterFilter:{}, character:{ + huangchengyan:['male','qun',3,['guanxu','yashi']], huangzu:['male','qun',4,['wangong']], panshu:['female','wu',3,['weiyi','jinzhi']], sp_jiben:['male','qun',3,['spduanzhi','spduyi']], @@ -161,6 +162,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //kaisa:["male","western",4,["zhengfu"]], }, characterIntro:{ + huangchengyan:'黄承彦,生卒年不详,汉末三国时期沔阳名士,诸葛亮岳父,黄月英之父。南郡大士蔡讽的女婿,与襄阳名士上层社会圈子:庞统(凤雏)、庞德公、司马徽、徐庶等人交好。《襄阳记》:黄承彦者,高爽开列,为沔阳名士,谓诸葛孔明曰:“闻君择妇,身有丑女,黄头黑色,而才堪配。”孔明许,即载送之。时人以为笑乐,乡里为之谚曰:“莫作孔明择妇,正得阿承丑女。”', panshu:'潘淑(?-252年),会稽句章(今浙江省宁波市)人,是吴大帝孙权的皇后,吴少帝孙亮的母亲。和孙权是中国历代帝后中年龄差距较大的一对。潘淑少时与姐姐俱没入织室,容媚有宠,拜为夫人,生有一子孙亮。赤乌十三年(250年),孙权立孙亮为皇太子,翌年(251年)立潘淑为皇后。神凤元年(252年)暴崩,合葬蒋陵。世称潘淑为江东绝色,有神女之称。', jiben:'吉本(?—218年),东汉末年太医令。建安二十三年春正月,时金祎自以世为汉臣,睹汉祚将移,谓可季兴,乃喟然发愤,遂与太医令本、少府耿纪、司直韦晃、本子邈、邈弟穆等结谋攻许,杀曹公长史王必,南援刘备。后必营,必与典农中郎将严匡讨斩之。在《三国演义》中,吉本在此为吉平或吉太,因字称平,故又唤作吉平。曾参与董承等人刺杀曹操的计划,并企图在为曹操治病时毒死曹操,但被曹操识破而遭处刑。之后其子吉邈和吉穆都参与了由耿纪和韦晃等人所发动的反叛曹操的行动,但都失败被杀。', zongyu:'宗预(?-264年),字德艳 ,荆州南阳郡安众县(今河南省南阳市)人。三国时期蜀汉官员、将领。曾随张飞入蜀助平益州,又受辟为丞相诸葛亮手下主簿,升任参军、右中郎将。诸葛亮逝世后,宗预受命出使孙吴,得到孙权的赞赏。迁后将军,出督永安,又升任征西大将军,并受封关内侯。公元258年(景耀元年),因病回成都,受任镇军大将军。蜀汉灭亡后,宗预随后主刘禅徙往洛阳,在中途病逝。宗预为人坦率耿直,多次出使孙吴并深得孙权的敬重,为吴、汉两国同盟的巩固作出了一定的贡献。', @@ -427,6 +429,151 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //黄承彦 + guanxu:{ + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return game.hasPlayer((current)=>lib.skill.guanxu.filterTarget(null,player,current)); + }, + filterTarget:function(card,player,target){ + return target!=player&&target.countCards('h')>0; + }, + content:function(){ + 'step 0' + var cards=get.cards(5); + for(var i=cards.length-1;i>=0;i--){ + ui.cardPile.insertBefore(cards[i],ui.cardPile.firstChild); + } + game.updateRoundNumber(); + var hs=target.getCards('h'); + var dialog=['观虚:选择要操作的牌','
'+get.translation(target)+'的手牌
',hs,'
牌堆顶
',cards]; + player.chooseButton(dialog,2).set('filterButton',function(button){ + if(ui.selected.buttons.length) return get.position(button.link)!=get.position(ui.selected.buttons[0].link); + return true; + }).set('cards1',hs).set('cards2',cards).set('ai',function(button){ + var card=button.link,cards1=_status.event.cards1.slice(0); + var cards2=_status.event.cards2.slice(0),target=_status.event.getParent().target; + if(!ui.selected.buttons.length){ + if(!cards1.contains(card)) return 0; + cards1.remove(card); + var suits=cards2.map(function(i){ + return get.suit(i,target); + }); + for(var i of lib.suit){ + var num=cards1.filter(function(c){ + return get.suit(c,target)==i; + }).length; + if(num>2||(num>1&&suits.contains(i))) return 20+get.value(card); + } + return get.value(card); + } + cards1.remove(ui.selected.buttons[0].link); + cards1.push(card); + for(var i of lib.suit){ + if(cards1.filter(function(c){ + return get.suit(c,target)==i; + }).length>2) return 20-get.value(card); + return get.value(ui.selected.buttons[0].link)-get.value(card); + } + }); + 'step 1' + if(result.bool){ + var cards=result.links; + if(get.position(cards[0])!='h') cards.reverse(); + var next=target.lose(cards[0],ui.cardPile); + next.insert_index_card=cards[1]; + next.insert_index=function(event){ + return event.insert_index_card; + } + target.gain(cards[1],'draw'); + } + else event.finish(); + 'step 2' + game.updateRoundNumber(); + var suits=[],map={},hs=target.getCards('h'); + if(hs.length){ + for(var i of hs){ + if(!lib.filter.canBeDiscarded(i,player,target,'guanxu')) continue; + var suit=get.suit(i,target); + if(!map[suit]) map[suit]=1; + else map[suit]++; + if(map[suit]>2) suits.add(suit); + } + var next=player.discardPlayerCard(target,3,'visible','h'); + next.set('suits',suits); + next.set('filterButton',function(button){ + var suit=get.suit(button.link); + if(!ui.selected.buttons.length) return _status.event.suits.contains(suit); + return suit==get.suit(ui.selected.buttons[0].link) + }); + if(suits.length) next.set('forced',true); + } + }, + ai:{ + order:9, + result:{ + target:function(player,target){ + if(target.countCards('h')>3) return -5; + if(target.countCards('h')==3) return -3; + return -0.5; + }, + }, + }, + }, + yashi:{ + trigger:{player:'damageEnd'}, + direct:true, + filter:function(event,player){ + if(event.source&&event.source.isAlive()) return true; + return game.hasPlayer((current)=>lib.skill.guanxu.filterTarget(null,player,current)); + }, + content:function(){ + 'step 0' + event.addIndex=0; + var choiceList=[]; + if(trigger.source&&trigger.source.isAlive()){ + choiceList.push('令'+get.translation(trigger.source)+'的所有非锁定技失效'); + } + else event.addIndex++; + if(game.hasPlayer((current)=>lib.skill.guanxu.filterTarget(null,player,current))) choiceList.push('发动一次〖观虚〗'); + player.chooseControl('cancel2').set('prompt',get.prompt('yashi')).set('choiceList',choiceList).set('ai',function(){ + var player=_status.event.player,source=_status.event.getTrigger().source,index=_status.event.getParent().index; + if(game.hasPlayer(function(current){ + return current!=player&¤t.countCards('h')>3&&get.attitude(player,current)<0; + })) return 1-index; + if(source&&source.isAlive()&&get.attitude(player,source)<0&&!source.hasSkill('fengyin')) return 0; + if(game.hasPlayer(function(current){ + return current!=player&¤t.countCards('h')>0&&get.attitude(player,current)<0; + })) return 1-index; + return 'cancel2'; + }); + 'step 1' + if(result.control!='cancel2'){ + if(result.index+event.addIndex==0){ + var target=trigger.source; + player.logSkill('yashi',target); + target.removeSkill('fengyin'); + target.addTempSkill('fengyin',{player:'phaseBegin'}); + event.finish(); + } + else player.chooseTarget(true,'请选择〖观虚〗的目标',lib.skill.guanxu.filterTarget).set('ai',function(target){ + var player=_status.event.player; + return get.effect(target,'guanxu',player,player); + }); + } + else event.finish(); + 'step 2' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('yashi',target); + var next=game.createEvent('yashi_guanxu'); + next.player=player; + next.target=target; + next.setContent(lib.skill.guanxu.content); + } + }, + }, //黄祖 wangong:{ audio:2, @@ -11387,7 +11534,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ unique:true, juexingji:true, audio:2, - derivation:'retiaoxin', + derivation:'oltiaoxin', trigger:{player:'dying'}, //priority:10, forced:true, @@ -11402,7 +11549,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.recover(2-player.hp); } "step 2" - player.addSkill('retiaoxin'); + player.addSkill('oltiaoxin'); player.storage.kunfen=true; player.awakenSkill('fengliang'); }, @@ -14163,7 +14310,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var list=[]; if(player.hp<=3){ //if(trigger.num!=undefined&&trigger.num<0&&player.hp-trigger.num>1) player.logSkill('baobian'); - list.push('retiaoxin'); + list.push('oltiaoxin'); } if(player.hp<=2){ list.push('olpaoxiao'); @@ -14175,13 +14322,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.addAdditionalSkill('baobian',list); } }, - derivation:['retiaoxin','olpaoxiao','xinshensu'], + derivation:['oltiaoxin','olpaoxiao','xinshensu'], content:function(){ player.removeAdditionalSkill('baobian'); var list=[]; if(player.hp<=3){ if(trigger.num!=undefined&&trigger.num<0&&player.hp-trigger.num>1) player.logSkill('baobian'); - list.push('retiaoxin'); + list.push('oltiaoxin'); } if(player.hp<=2){ list.push('olpaoxiao'); @@ -17148,6 +17295,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ wangong:'挽弓', wangong2:'挽弓', wangong_info:'锁定技,当你使用基本牌时,你获得如下效果:当你使用下一张牌时,若此牌为【杀】,则此牌无次数和距离限制且伤害+1。', + huangchengyan:'黄承彦', + guanxu:'观虚', + guanxu_info:'出牌阶段限一次,你可以观看一名其他角色的手牌,然后你可将其中一张手牌与牌堆顶5张牌中的一张交换。若如此做,你弃置其手牌中3张花色相同的牌。', + yashi:'雅士', + yashi_info:'当你受到一次伤害后,你可选择一项:1. 令伤害来源的非锁定技无效直到其下个回合开始;2. 对一名其他角色发动〖观虚〗。', sp_default:"常规", sp_tongque:"铜雀台", diff --git a/character/sp2.js b/character/sp2.js index 54c829488..4d399f3cc 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + duanwei:['male','qun',4,['langmie']], re_niujin:['male','wei',4,['recuorui','reliewei']], zhangmiao:['male','qun',4,['mouni','zongfan']], liangxing:['male','qun',4,['lulve','lxzhuixi'],['unseen']], @@ -97,7 +98,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_huangjin:['liuhong','zhujun','re_hejin','re_hansui','liubian'], sp_fadong:['ol_dingyuan','wangrong','re_quyi','hanfu'], sp_xuzhou:['re_taoqian','caosong'], - sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_yujin','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','zhaozhong','ruanyu','liangxing','zhangmiao','re_niujin'], + sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_yujin','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','zhaozhong','ruanyu','liangxing','zhangmiao','re_niujin','duanwei'], sp_mini:["mini_sunquan","mini_zuoci","mini_jiangwei","mini_diaochan","mini_zhangchunhua"], sp_luanwu:["ns_lijue","ns_zhangji","ns_fanchou"], sp_yongjian:["ns_chendao","yj_caoang"], @@ -105,6 +106,50 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, skill:{ + //狼灭 + langmie:{ + trigger:{global:'phaseUseEnd'}, + forced:true, + filter:function(event,player){ + if(player==event.player) return false; + var map={}; + var list=event.player.getHistory('useCard',function(evt){ + var evt2=evt.getParent('phaseUse'); + return evt2==event; + }); + for(var i of list){ + var name=i.card.name; + if(!map[name]) map[name]=true; + else return true; + } + }, + frequent:true, + logTarget:'player', + content:function(){ + player.draw(); + }, + group:'langmie_damage', + }, + langmie_damage:{ + audio:'langmie', + trigger:{global:'phaseEnd'}, + direct:true, + filter:function(event,player){ + return event.player!=player&&event.player.getHistory('sourceDamage',function(evt){ + return evt.num>1; + }).length>0&&player.countCards('he')>0; + }, + content:function(){ + 'step 0' + player.chooseToDiscard('he',get.prompt('langmie',trigger.player),'弃置一张牌并对其造成1点伤害').set('goon',get.damageEffect(trigger.player,player,player)>0).set('ai',function(card){ + if(!_status.event.goon) return 0; + return 7-get.value(card); + }).logSkill=['langmie_damage',trigger.player]; + 'step 1' + if(result.bool) trigger.player.damage(); + }, + ai:{expose:0.2}, + }, //牛金 recuorui:{ audio:'cuorui', @@ -7885,28 +7930,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ delay:false, lose:false, prompt:function(){ - return '选择一名角色并将任意张手牌置于处理区,然后将这些牌放置于牌堆中'+get.cnNumber(game.players.length)+'倍数的位置(先选择的牌在上)'; + return '选择一名角色并将任意张手牌放置于牌堆中'+get.cnNumber(game.players.length)+'倍数的位置(先选择的牌在上)'; }, content:function(){ 'step 0' - player.lose(cards,ui.ordering).noOrdering=true; player.$throw(cards.length); player.storage.xinfu_qianxin=cards.slice(0); player.storage.xinfu_qianxin2=target; - 'step 1' - event.cards.reverse(); - var num1=game.players.length; - var num2=ui.cardPile.childElementCount; - for(var i=0;i2&&get.attitude(player,target)>0; + }); + } + 'step 1' + if(result.bool){ + player.logSkill('bolan',trigger.player); + if(player!=trigger.player) trigger.player.loseHp(); + } + else event.finish(); + 'step 2' + if(player.isIn()&&trigger.player.isIn()){ + if(!player.storage.bolan) lib.skill.bolan.initList(player); + var list=player.storage.bolan.randomGets(3); + if(!list.length){ + event.finish(); + return; + } + event.videoId=lib.status.videoId++; + var func=function(skills,id){ + var dialog=ui.create.dialog('forcebutton'); + dialog.videoId=id; + dialog.add('博览:选择一个技能'); + for(var i=0;i
【'+get.translation(skills[i])+'】
'+lib.translate[skills[i]+'_info']+'
'); + } + dialog.addText('
'); + } + if(player.isOnline()) player.send(func,list,event.videoId); + else if(player==game.me) func(list,event.videoId); + player.chooseControl(list); + } + else event.finish(); + 'step 3' + game.broadcastAll('closeDialog',event.videoId); + trigger.player.addTempSkill(result.control,'phaseUseEnd'); + }, + }, + yifa:{ + audio:2, + trigger:{target:'useCardToTargeted'}, + forced:true, + logTarget:'player', + filter:function(event,player){ + return player!=event.player&&(event.card.name=='sha'|| + get.color(event.card)=='black'&&get.type(event.card)=='trick'); + }, + content:function(){ + var target=trigger.player; + target.addTempSkill('yifa2'); + target.addMark('yifa2',1,false); + }, + }, + yifa2:{ + charlotte:true, + onremove:true, + intro:{content:'手牌上限-#'}, + mod:{ + maxHandcard:function(player,num){ + return num-player.countMark('yifa2'); + }, + }, + }, buchen:{ audio:2, trigger:{player:'showCharacterAfter'}, @@ -446,7 +554,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ equipSkill:true, filter:function(event,player){ return player!=event.player&&event.player.getHistory('useCard',function(card){ - return get.type(card)!='basic'; + return get.type(card.card)!='basic'; }).length>0&&event.player.countCards('he')>0&&player.getEquip('cheliji_feilunzhanyu'); }, logTarget:'player', @@ -485,6 +593,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return get.attitude(player,lib.skill.caiwang.logTarget(event,player))<=0; }, content:function(){ + if(player!=game.me&&!player.isOnline()) game.delayx(); var target=lib.skill.caiwang.logTarget(trigger,player); player[player.getStorage('naxiang2').contains(target)?'gainPlayerCard':'discardPlayerCard'](target,'he',true); }, @@ -743,7 +852,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, cardUsable:function(card,player,target){ - if(!card.cards||get.type(card)!='basic'||!(game.online?player==_status.currentPhase:player.isPhaseUsing())) return; + if(!card.cards||get.mode()=='guozhan'||get.type(card)!='basic'||!(game.online?player==_status.currentPhase:player.isPhaseUsing())) return; for(var i of card.cards){ if(i.hasGaintag('zhuosheng')) return Infinity; } @@ -829,7 +938,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ silent:true, firstDo:true, filter:function(event,player){ - if(event.name=='useCard') return get.type(event.card)=='basic'&&lib.skill.zhuosheng.filterx(event,player)&&event.addCount!==false; + if(event.name=='useCard') return get.mode()!='guozhan'&&get.type(event.card)=='basic'&&lib.skill.zhuosheng.filterx(event,player)&&event.addCount!==false; return true; }, content:function(){ @@ -1858,6 +1967,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ huangzu:'黄祖(?-208年),东汉末年将领。刘表任荆州牧时,黄祖出任江夏太守。初平二年(191年),黄祖在与长沙太守孙坚交战时,其部下将孙坚射死,因此与孙家结下仇怨。之后,黄祖多次率部与东吴军队交战,射杀凌操、徐琨等人。建安十三年(208年),在与孙权的交战中,兵败被杀。', cheliji:'彻里吉是历史小说《三国演义》中的虚构人物,西羌国王。蜀相诸葛亮伐魏,魏都督曹真驰书赴羌,国王彻里吉即命雅丹丞相与越吉元帅起羌兵一十五万、并战车直扣西平关。后军大败,越吉亡,雅丹被俘,亮将所获羌兵及车马器械,尽给还雅丹,俱放回国。彻里吉感蜀恩义,与之结盟。正史中没有关于彻里吉的记载。', weiguan:'卫瓘(220年-291年),字伯玉。河东郡安邑县(今山西省夏县)人。三国曹魏后期至西晋初年重臣、书法家,曹魏尚书卫觊之子。卫瓘出身官宦世家,年轻时仕官于曹魏,历任尚书郎、散骑常侍、侍中、廷尉等职。后以镇西军司、监军身份参与伐蜀战争。蜀汉亡后,与钟会一道逮捕邓艾;钟会谋反时,又成功平息叛乱,命田续杀邓艾父子。回师后转任督徐州诸军事、镇东将军,封菑阳侯。西晋建立后,历任青州、幽州刺史、征东大将军等职,成功化解北方边境威胁,因功进爵菑阳公。后入朝为尚书令、侍中,又升任司空,领太子少傅。后逊位,拜太保。晋惠帝即位后,与贾皇后对立,终在政变中满门遇害,享年七十二岁。卫瓘善隶书及章草。不仅兼工各体,还能学古人之长,是颇有创意的书法家。唐朝张怀瓘《书断》中评其章草为“神品”。', + zhongyan:' 钟琰 (?—?年)颍川人,王浑之妻。生卒年不详,约魏末晋初间前后在世。王浑的妻子钟琰,是颍川人,为魏太傅钟繇的曾孙女,父亲钟徽,为黄门郎。她平时广泛阅读各种书籍,因此几岁的时候就能撰写文章。她聪慧弘雅,善于啸咏,她的礼仪法度,为中表所推崇,她写有文集五卷。', }, characterTitle:{}, perfectPair:{}, @@ -1954,6 +2064,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shibao:'石苞', zhuosheng:'擢升', zhuosheng_info:'出牌阶段,①你使用本轮内获得的基本牌时无次数和距离限制。②你使用本轮内获得的普通锦囊牌选择目标后,可令此牌的目标数+1或-1。③你使用本轮内获得的装备牌时可以摸一张牌(以此法获得的牌不能触发〖擢升〗)。', + zhuosheng_info_guozhan:'出牌阶段,①你使用本轮内获得的基本牌时无距离限制。②你使用本轮内获得的普通锦囊牌选择目标后,可令此牌的目标数+1或-1。③你使用本轮内获得的装备牌时可以摸一张牌(以此法获得的牌不能触发〖擢升〗)。', jin_yanghuiyu:'晋羊徽瑜', jin_yanghuiyu_ab:'羊徽瑜', gz_jin_yanghuiyu:'羊徽瑜', @@ -1989,10 +2100,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhongyun_info:'锁定技。每名角色的回合限一次,你受伤/回复体力后,若你的体力值与手牌数相等,你回复一点体力或对你攻击范围内的一名角色造成1点伤害;每名角色的回合限一次,你获得手牌或失去手牌后,若你的体力值与手牌数相等,你摸一张牌或弃置一名其他角色一张牌。', shenpin:'神品', shenpin_info:'当一名角色的判定牌生效前,你可以打出一张与判定牌颜色不同的牌代替之。', + zhongyan:'钟琰', + bolan:'博览', + bolan_info:'出牌阶段开始时,你可从三个描述中包含“出牌阶段限一次”的技能中选择一个获得直到此阶段结束;其他角色的出牌阶段限一次,其可以失去1点体力,令你从三个描述中包含“出牌阶段限一次”的技能中选择一个,其获得此技能直到此阶段结束。', + yifa:'仪法', + yifa2:'仪法', + yifa_info:'锁定技,其他角色使用【杀】或黑色普通锦囊牌指定你为目标后,其手牌上限-1直到回合结束。', yingbian_pack1:'文德武备·理', yingbian_pack2:'文德武备·备', yingbian_pack3:'文德武备·果', + yingbian_pack4:'文德武备·戒', }, }; }); diff --git a/game/asset.js b/game/asset.js index 1f0d3fb80..44c2cd52e 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.110.7.1', + 'v1.9.110.8', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -728,6 +728,7 @@ window.noname_asset_list=[ 'audio/die/re_chenqun.mp3', 'audio/die/ruanyu.mp3', 'audio/die/zhangmiao.mp3', + 'audio/die/re_guotufengji.mp3', 'audio/skill/decadezishou1.mp3', 'audio/skill/decadezishou2.mp3', @@ -3214,6 +3215,10 @@ window.noname_asset_list=[ 'audio/skill/zhangu2.mp3', 'audio/skill/zongfan1.mp3', 'audio/skill/zongfan2.mp3', + 'audio/skill/rejigong1.mp3', + 'audio/skill/rejigong2.mp3', + 'audio/skill/shifei_re_guotufengji1.mp3', + 'audio/skill/shifei_re_guotufengji2.mp3', 'audio/voice/male/0.mp3', 'audio/voice/male/1.mp3', @@ -4065,6 +4070,14 @@ window.noname_asset_list=[ 'image/character/key_kyouko.jpg', 'image/character/key_yuuki.jpg', 'image/character/re_niujin.jpg', + 'image/character/duanwei.jpg', + 'image/character/huangchengyan.jpg', + 'image/character/key_tenzen.jpg', + 'image/character/ol_jiangwei.jpg', + 'image/character/ol_zhurong.jpg', + 'image/character/re_guotufengji.jpg', + 'image/character/shen_guojia.jpg', + 'image/character/zhongyan.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/game.js b/game/game.js index 5f743e203..8a1de0dd3 100644 --- a/game/game.js +++ b/game/game.js @@ -12103,7 +12103,7 @@ } event.buttoned=event.result.skill; } - else if(info&&info.precontent&&!game.online){ + else if(info&&info.precontent&&!game.online&&!event.nouse){ var next=game.createEvent('pre_'+event.result.skill); next.setContent(info.precontent); next.set('result',event.result); @@ -13719,7 +13719,7 @@ if(event.prompt2){ event.dialog.addText(event.prompt2); } - var directh=!lib.config.unauto_choose; + var directh=(!lib.config.unauto_choose&&!event.complexSelect); for(var i=0;i0||(hs&&get.value(hs)>val)) return 1/Math.min(0.1,val); - return 0; + return 5-get.value(card); }); } else event.finish(); @@ -1390,10 +1416,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ player.removeGaintag('gzwenji'); } else{ - var cards=player.getCards('h',function(card){ - return card.hasGaintag('gzwenji'); - }); - if(cards.length) player.discard(cards); + target.draw(); } }, subSkill:{ @@ -9007,7 +9030,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ liangfan2:'量反', liangfan_info:'锁定技,准备阶段开始时,若你的武将牌上有“函”,则你获得这些牌,然后失去1点体力。当你于此回合内因使用实体牌中包含“函”的牌且执行这些牌的效果而对目标角色造成伤害时,你可以获得目标角色的一张牌。', gzwenji:'问计', - gzwenji_info:'出牌阶段开始时,你可令一名其他角色交给你一张牌。然后若该角色:未确定势力或势力与你相同,则你于本回合内使用实体牌包含“问计”牌的牌无距离和次数限制,且不可被其他角色响应。与你势力不同,则你交给其一张不为“问计”牌的牌或弃置“问计”牌。', + gzwenji_info:'出牌阶段开始时,你可令一名其他角色交给你一张牌。然后若该角色:未确定势力或势力与你相同,则你于本回合内使用实体牌包含“问计”牌的牌无距离和次数限制,且不可被其他角色响应。与你势力不同,则你交给其一张不为“问计”牌的牌或令其摸一张牌。', gztunjiang:'屯江', gztunjiang_info:'结束阶段,若你于本回合的出牌阶段内使用过牌且这些牌均未指定其他角色为目标,则你可摸X张牌(X为势力数)。', gzbushi:'布施', @@ -9022,6 +9045,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gzlixia_info:'与你势力不同的角色的准备阶段开始时,其可弃置你装备区内的一张牌,然后其选择一项:①弃置两张手牌。②失去1点体力。③令你摸两张牌。', mffengshi:'锋势', mffengshi_info:'当你使用牌指定唯一目标后,或成为其他角色使用牌的唯一目标后,若此牌使用者的手牌数大于此牌目标的手牌数,则此牌的使用者可令你弃置自己和对方的各一张牌,并令此牌的伤害值+1。', + gzrekuangcai:'狂才', + gzrekuangcai_info:'锁定技,你于回合内使用牌无距离和次数限制;弃牌阶段开始时,若你本回合内使用过牌但未造成过伤害,则你的手牌上限-1。', gzkuangcai:'狂才', gzkuangcai_info:'锁定技,你的回合内,你使用牌无距离和次数限制,无视防具且不能被【无懈可击】响应;弃牌阶段开始时,若你本回合使用过牌但没造成伤害,本回合你的手牌上限-2;若你本回合造成的伤害点数不小于你使用的牌数,你将手牌摸至体力上限且本回合手牌上限+2。', gzshejian:'舌箭',