diff --git a/card/zhulu.js b/card/zhulu.js index f11ed0050..a3da3b29f 100644 --- a/card/zhulu.js +++ b/card/zhulu.js @@ -605,25 +605,31 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, skill:{ jinhe_lose:{ - trigger:{player:'loseEnd'}, + trigger:{ + player:['loseAfter','equipAfter'], + }, equipSkill:true, forced:true, filter:function(event,player){ - if(event.type!='discard'||!_status.jinhe||event.getParent(2).name=='jinhe_skill'&&event.getParent(2).player==player) return false; - for(var i=0;i0) return false; + if(event.player.hasJudge('lebu')||!event.player.needsToDiscard()) return false; + return true; + }, + logTarget:'player', + content:function(){ + 'step 0' + player.turnOver(); + 'step 1' + if(player.isTurnedOver()){ + player.addTempSkill('yuu_lveduo4','roundStart') + if(!player.storage.yuu_lveduo) player.storage.yuu_lveduo=[]; + player.storage.yuu_lveduo.push(trigger.player); + trigger.player._trueMe=player; + game.addGlobalSkill('autoswap'); + if(trigger.player==game.me){ + game.notMe=true; + if(!_status.auto) ui.click.auto(); + } + player.addSkill('yuu_lveduo2'); + trigger.player.addSkill('yuu_lveduo3'); + } + }, + }, + yuu_lveduo2:{ + trigger:{ + player:'turnOverEnd', + }, + lastDo:true, + charlotte:true, + forceDie:true, + forced:true, + silent:true, + filter:function(event,player){ + return !player.isTurnedOver(); + }, + content:function(){ + var target=game.findPlayer(function(current){ + return current._trueMe==player; + }); + if(target){ + if(target==game.me){ + if(!game.notMe) game.swapPlayerAuto(target._trueMe) + else delete game.notMe; + if(_status.auto) ui.click.auto(); + } + delete target._trueMe; + target.removeSkill('yuu_lveduo3'); + var skills=target.getStockSkills(true,true).filter(function(skill){ + var info=get.info(skill); + return info&&info.charlotte==true; + }); + if(skills.length){ + target.removeSkill(skills); + player.addSkill(skills); + lib.translate.yuu_lveduo_info=lib.translate.yuu_lveduo_full_info; + } + if(target.name=='key_yusa'){ + delete target.storage.dualside; + target.storage.dualside_over=true; + target.unmarkSkill('dualside'); + target.removeSkill('dualside'); + } + else if(target.name=='key_misa'){ + delete target.storage.dualside; + target.storage.dualside_over=true; + target.unmarkSkill('dualside'); + target.reinit('key_misa','key_yusa'); + target.removeSkill('yusa_misa'); + target.removeSkill('dualside'); + target.turnOver(false); + } + } + player.removeSkill('yuu_lveduo2'); + }, + }, + yuu_lveduo3:{ + trigger:{ + player:['phaseAfter','dieAfter'], + global:'phaseBefore', + }, + lastDo:true, + charlotte:true, + forceDie:true, + forced:true, + silent:true, + content:function(){ + player.removeSkill('yuu_lveduo3'); + }, + onremove:function(player){ + if(player._trueMe&&player._trueMe.isTurnedOver()) player._trueMe.turnOver(); + }, + }, + yuu_lveduo4:{}, godan_yuanyi:{ trigger:{player:'phaseBegin'}, forced:true, @@ -881,6 +998,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ misuzu_hengzhou:{ trigger:{player:['phaseJieshuBegin','recoverEnd','damageEnd','phaseDrawBegin2','phaseZhunbeiBegin']}, forced:true, + character:true, filter:function(event,player){ if(event.name=='phaseZhunbei') return true; if(['damage','recover'].contains(event.name)) return event.num>0; @@ -1519,6 +1637,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, shizuru_nianli:{ enable:'chooseToUse', + charlotte:true, prompt:'展示一张♦/♣/♥/♠手牌,然后视为使用一张雷杀/闪/桃/无懈可击', viewAs:function(cards,player){ var name=false; @@ -1877,6 +1996,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'phaseZhunbeiBegin'}, limited:true, unique:true, + charlotte:true, skillAnimation:true, animationColor:'water', filter:function(event,player){ @@ -1899,6 +2019,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, midori_nonghuan:{ enable:'phaseUse', + charlotte:true, filter:function(event,player){ return (player.getStat('skill').midori_nonghuan||0)0); + return get.value(event.cards.filterInD())>0; }, logTarget:'player', content:function(){ @@ -10371,6 +10496,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_akiko:'水濑秋子', key_abyusa:'游佐', key_godan:'松下护騨', + key_yuu:'乙坂有宇', lucia_duqu:'毒躯', lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。
②当你因【毒】失去体力时,你改为回复等量的体力。
③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。', lucia_zhenren:'振刃', @@ -10619,6 +10745,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ godan_feiqu_info:'锁定技,当你使用【杀】时,或你成为【杀】的目标后,你令此【杀】不可被响应。', godan_xiaoyuan:'消元', godan_xiaoyuan_info:'觉醒技,当你扣减体力时,若你的体力值小于4,则你减3点体力上限并摸三张牌,失去【肥躯】。', + yuu_lveduo:'掠夺', + yuu_lveduo_info:'每轮限一次,其他角色的回合开始时,若你本局游戏内未对其发动过〖掠夺〗且你的武将牌正面朝上,你可以将武将牌翻面并获得该角色本回合内的控制权。此回合结束时,你将武将牌翻回正面。锁定技,若你的武将牌背面朝上,则你不能使用或打出牌。', + yuu_lveduo_full_info:'每轮限一次,其他角色的回合开始时,若你本局游戏内未对其发动过〖掠夺〗且你的武将牌正面朝上,你可以将武将牌翻面并获得该角色本回合内的控制权。此回合结束时,你将武将牌翻回正面,获得该角色武将牌上所有的带有「Charlotte」标签的技能,且该角色失去这些技能。锁定技,若你的武将牌背面朝上,则你不能使用或打出牌。', key_kud:'库特莉亚芙卡', kud_qiaoshou:'巧手', diff --git a/character/extra.js b/character/extra.js index 53970d556..ed444950b 100755 --- a/character/extra.js +++ b/character/extra.js @@ -51,7 +51,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, characterFilter:{ shen_diaochan:function(mode){ - return mode=='identity'||mode=='doudizhu'; + return mode=='identity'||mode=='doudizhu'||mode=='single'||(mode=='versus'&&_status.mode!='standard'); }, }, skill:{ @@ -154,8 +154,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } else event.finish(); 'step 3' - if(result.bool!==true) targets[0].addMark('huoxin',1); - if(result.bool!==false) targets[1].addMark('huoxin',1); + if(result.winner!==targets[0]) targets[0].addMark('huoxin',1); + if(result.winner!==targets[1]) targets[1].addMark('huoxin',1); }, marktext:'魅', intro:{ @@ -3594,7 +3594,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ caopi_xingdong_info:'出牌阶段限一次,你可以将一张【杀】或普通锦囊牌交给一名其他角色,然后该角色选择一项:对除你以外的角色使用此牌并在此牌结算完成后和你各摸一张牌;或跳过下回合的判定阶段和摸牌阶段。', shen_diaochan:'神貂蝉', meihun:'魅魂', - meihun_info:'结束阶段或当你成为【杀】的目标后,你可以令一名其他角色交给你一张你声明的花色的牌,若其没有则你观看其手牌然后弃置其中一张。', + meihun_info:'结束阶段或当你成为【杀】的目标后,你可以令一名其他角色交给你一张你声明的花色的手牌,若其没有则你观看其手牌然后弃置其中一张。', huoxin_control:'惑心', huoxin:'惑心', huoxin_info:'出牌阶段限一次,你可以展示两张花色相同的手牌并分别交给两名其他角色,然后令这两名角色拼点,没赢的角色获得1个“魅惑”标记。拥有2个或更多“魅惑”的角色回合即将开始时,该角色移去其所有“魅惑”,此回合改为由你操控。', diff --git a/character/shenhua.js b/character/shenhua.js index fa4161dcb..86e4f65b4 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -75,7 +75,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jiaxu:['liqueguosi'], re_yuanshao:['yanwen'], menghuo:['zhurong'], - sp_zhugeliang:['pangtong'], + sp_zhugeliang:['pangtong','huangyueying'], sunce:['zhouyu','taishici','daqiao'], zuoci:['yuji'], xunyu:['xunyou'], diff --git a/character/sp.js b/character/sp.js index 3574d88bd..e6f1f1199 100755 --- a/character/sp.js +++ b/character/sp.js @@ -11,7 +11,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'], sp_guozhan:["zangba","shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan"], sp_guozhan2:["mifuren","mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","kongrong","bianfuren","liqueguosi","lvfan","cuimao","jiling","zhangren","zoushi"], - sp_single:["hejin","hansui","niujin"], + sp_single:["niujin"], sp_others:["hanba","caiyang"], }, }, @@ -33,8 +33,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yuantanyuanshang:['male','qun',4,['neifa']], xujing:['male','shu',3,['yuxu','xjshijian']], - hejin:['male','qun',4,['spmouzhu']], - hansui:['male','qun',4,['spniluan','spweiwu']], niujin:['male','wei',4,['cuorui','liewei']], jianggan:["male","wei",3,["weicheng","daoshu"]], @@ -469,7 +467,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ selectTarget:-1, content:function(){ 'step 0' - target.chooseCard('he','交给'+get.translation(player)+'一张牌',true); + if(!target.countCards('he')) event.finish(); + else target.chooseCard('he','交给'+get.translation(player)+'一张牌',true); 'step 1' player.gain(result.cards,target,'giveAuto'); 'step 2' @@ -8972,7 +8971,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, audio:2, filter:function(event,player){ - return event.parent.name=='phaseDiscard'&&player.countCards('h',{type:'basic'})player.getHandcardLimit(); }, content:function(){}, mod:{ @@ -11680,12 +11679,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, sijian:{ - trigger:{player:'loseAfter'}, + trigger:{ + player:'loseAfter', + source:'gainAfter', + global:['equipAfter','addJudgeAfter'], + }, direct:true, audio:2, filter:function(event,player){ if(player.countCards('h')) return false; - return event.hs&&event.hs.length>0; + var evt=event.getl(player); + return evt&&evt.hs&&evt.hs.length>0; }, content:function(){ "step 0" diff --git a/character/sp2.js b/character/sp2.js index 89d9d3be3..6760650a6 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,6 +4,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + hejin:['male','qun',4,['spmouzhu']], + hansui:['male','qun',4,['spniluan','spweiwu']], + liuhong:['male','qun',4,['yujue','tuxing'],['unseen']], + zhujun:['male','qun',4,['gongjian','kuimang'],['unseen']], caoxing:['male','qun',4,['cxliushi','zhanwan'],['unseen']], re_maliang:['male','shu',3,['rexiemu','heli'],[]], ol_yujin:['male','wei',4,['rezhenjun']], @@ -61,10 +65,171 @@ 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_huangjin:['liuhong','zhujun','hejin','hansui'], sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_xinxianying','ol_yujin','re_maliang'], } }, skill:{ + yujue:{ + derivation:'zhihu', + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countDisabled()<5; + }, + chooseButton:{ + dialog:function(event,player){ + return ui.create.dialog('###鬻爵###'+lib.translate.yujue_info); + }, + chooseControl:function(event,player){ + var list=[]; + for(var i=1;i<6;i++){ + if(!player.isDisabled(i)) list.push('equip'+i); + } + list.push('cancel2'); + return list; + }, + backup:function(result){ + var next=get.copy(lib.skill.yujuex); + next.position=result.control; + return next; + }, + }, + }, + yujuex:{ + audio:'yujue', + content:function(){ + 'step 0' + player.disableEquip(lib.skill.yujue_backup.position); + 'step 1' + if(player.isAlive()&&game.hasPlayer(function(current){ + return current!=player&¤t.countCards('h'); + })){ + player.chooseTarget(true,'选择一名角色交给你一张牌并获得技能〖执笏〗',function(card,player,target){ + if(player==target) return false; + var hs=target.countCards('h'); + return hs>0&&!game.hasPlayer(function(current){ + return current!=player&¤t!=target&¤t.countCards('h')>hs; + }); + }); + } + else event.finish(); + 'step 2' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.line(target); + target.chooseCard('h',true,'交给'+get.translation(player)+'一张手牌'); + } + else event.finish(); + 'step 3' + if(result.bool&&result.cards&&result.cards.length){ + player.gain(result.cards,target,'giveAuto'); + target.storage.zhihu_mark=player; + target.addSkill('zhihu'); + target.addSkill('zhihu_mark'); + } + }, + }, + zhihu:{ + usable:3, + trigger:{source:'damageSource'}, + forced:true, + filter:function(event,player){ + return player!=event.player; + }, + content:function(){ + player.draw(); + }, + }, + zhihu_mark:{ + mark:'character', + intro:{ + content:'以$之名,授予汝技能〖执笏〗,直至$的下回合开始为止!', + }, + onremove:function(player){ + delete player.storage.zhihu_mark; + player.removeSkill('zhihu'); + }, + trigger:{global:'phaseBeginStart'}, + firstDo:true, + charlotte:true, + silent:true, + filter:function(event,player){ + return event.player==player.storage.zhihu_mark; + }, + content:function(){ + player.removeSkill('zhihu_mark'); + }, + }, + tuxing:{ + trigger:{player:'disableEquipAfter'}, + forced:true, + content:function(){ + 'step 0' + player.gainMaxHp(); + player.recover(); + 'step 1' + if(player.countDisabled()>=5){ + player.loseMaxHp(4); + player.addSkill('tuxing2'); + } + } + }, + tuxing2:{ + audio:'tuxing', + trigger:{source:'damageBegin1'}, + forced:true, + charlotte:true, + filter:function(event,player){ + return event.getParent().name=='sha'; + }, + content:function(){ + trigger.num++; + }, + mark:true, + intro:{ + content:'因执行【杀】的效果造成伤害时,此伤害+1', + }, + }, + gongjian:{ + trigger:{player:'useCardToPlayered'}, + usable:1, + logTarget:'target', + filter:function(event,player){ + var evt=event.getParent(); + var history=player.getAllHistory('useCard',function(evtx){ + return evtx.card.name=='sha' + }); + var index=history.indexOf(evt); + return index>0&&history[index-1].targets.filter(function(target){ + return evt.targets.contains(target); + }).length>0&&event.target.countDiscardableCards(player,'he')>0; + }, + content:function(){ + 'step 0' + player.discardPlayerCard(trigger.target,true,'he',2); + 'step 1' + if(result.bool){ + var cards=result.cards.filter(function(card){ + return get.name(card,card.original=='h'?trigger.target:false)=='sha'; + }); + if(cards.length) player.gain(cards,'gain2','log'); + } + }, + }, + kuimang:{ + trigger:{global:'dieAfter'}, + forced:true, + filter:function(event,player){ + return player.getAllHistory('sourceDamage',function(target){ + return target.player==event.player; + }).length>0; + }, + content:function(){ + player.draw(2); + }, + }, cxliushi:{ enable:'phaseUse', filter:function(event,player){ @@ -475,7 +640,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ backup:function(links,player){ return { audio:'juanhui', - popname·true, + popname:true, filterCard:true, viewAs:{ name:links[0][2], @@ -5265,6 +5430,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ wenyang:"文俶(238年—291年),一作文淑,字次骞,小名阿鸯,世称文鸯,谯郡(今安徽亳州市)人。魏末晋初名将,曹魏扬州刺史文钦之子。骁勇善战,依附大将军曹爽,效忠于王室。司马师废黜皇帝曹芳后,随父联合毌丘俭于淮南起兵勤王。兵败之后,向南投奔吴国。诸葛诞发动淮南叛乱,奉命率军驰援。双方发生内讧,父亲为诸葛诞所害,遂降于司马昭,封关内侯。西晋建立后,任平虏护军。咸宁三年(277年),拜平西将军、都督凉秦雍州三州军事,大破鲜卑首领秃发树机能,名震天下,迁使持节、护东夷校尉、监辽东军事。八王之乱中,为诸葛诞外孙、东安王司马繇所诬杀,惨遭灭族,时年五十四岁。", liuzan:'字正明,会稽长山人人,曾任左护军,有两子:留略、留平。少为会稽郡吏,曾参与镇压黄巾起义,后被东吴大将凌统所引用,任屯骑校尉。吴五凤二年(公元255年)留赞任左护军,随孙峻征淮南,因病撤军,被魏将蒋班围困于道,力战而死,时年73岁。', caoxing:'曹性,东汉末年吕布部将,史载他曾与身为自己上司的反叛者郝萌交战,并砍去郝萌一臂,受到吕布的嘉奖。在罗贯中所著古典小说《三国演义》中,也有关于曹性箭射夏侯惇左目的描述,而曹性也随即被暴怒的夏侯惇所杀。', + zhujun:'朱儁(?-195年),字公伟。会稽郡上虞县(今浙江绍兴上虞区)人。东汉末年名将。朱儁出身寒门,赡养母亲,以好义轻财闻名,受乡里敬重。后被太守徐珪举为孝廉,任兰陵令,颇有治绩。再升任交州刺史,以家兵五千大破叛军,平定交州。战后以功封都亭侯,入朝为谏议大夫。光和七年(184年),黄巾起义爆发,朱儁以右中郎将、持节平定三郡之地,以功进封西乡侯,迁镇贼中郎将。又率军讨平黄巾,“威声满天下”。中平二年(185年),进拜右车骑将军,更封钱塘侯。后为河内太守,击退进逼的张燕。权臣董卓秉政时,想任朱儁为副手,遭其婉拒。其后出逃荆州,更屯军中牟,徐州刺史陶谦等欲推举他为太师,并传檄各州牧伯,相邀讨伐李傕、奉迎天子。但朱儁却奉诏入京任太仆。初平三年(192年),升任太尉、录尚书事。兴平元年(194年),行骠骑将军事,持节镇关东,因故未成行。兴平二年(195年),李傕与郭汜相互攻杀,郭汜扣留朱儁作为人质。朱儁性格刚烈,即日发病而死。', + liuhong:'汉灵帝刘宏(157年,一作156年-189年5月13日),生于冀州河间国(今河北深州)。东汉第十二位皇帝(168年-189年在位),汉章帝刘炟的玄孙。刘宏早年世袭解渎亭侯。永康元年(167年)十二月,汉桓帝刘志逝世,刘宏被外戚窦氏挑选为皇位继承人,于建宁元年(168年)正月即位。刘宏在位的大部分时期,施行党锢及宦官政治。他又设置西园,巧立名目搜刮钱财,甚至卖官鬻爵以用于自己享乐。在位晚期,爆发了黄巾起义,而凉州等地也陷入持续动乱之中。中平六年(189年),刘宏去世,谥号孝灵皇帝,葬于文陵。刘宏喜好辞赋,作有《皇羲篇》、《追德赋》、《令仪颂》、《招商歌》等。', }, characterTitle:{ wulan:'#b对决限定武将', @@ -5582,6 +5749,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ cxliushi_info:'出牌阶段,你可以将一张红桃牌置于牌堆顶,视为对一名角色使用一张不计入次数的【杀】。若此【杀】造成伤害,该角色手牌上限永久-1。', zhanwan:'斩腕', zhanwan_info:'锁定技,受到【流矢】效果影响的角色若弃牌阶段有弃牌,你摸等量的牌,然后移除【流矢】的效果。', + zhujun:'朱儁', + gongjian:'攻坚', + gongjian_info:'每回合限一次,当你使用【杀】指定目标后,若此【杀】和你使用的上一张【杀】有相同的目标,则你可以弃置其两张牌,然后获得以此法弃置的所有【杀】。', + kuimang:'溃蟒', + kuimang_info:'锁定技,一名角色死亡后,若你对其造成过伤害,你摸两张牌。', + liuhong:'刘宏', + yujue:'鬻爵', + yujue_backup:'鬻爵', + yujue_info:'出牌阶段限一次,你可以废除一个装备栏,然后令除你之外手牌数最多的一名其他角色交给你一张手牌。其获得〖执笏〗直到你的下回合开始。', + zhihu:'执笏', + zhihu_mark:'执笏', + zhihu_info:'锁定技,每回合限三次,当你对其他角色造成伤害后,你摸一张牌。', + tuxing:'图兴', + tuxing2:'图兴', + tuxing_info:'锁定技,当你废除一个装备栏时,你加1点体力上限并回复1点体力。然后若你所有的装备栏均已被废除,则你减4点体力上限,且本局游戏内使用【杀】造成的伤害+1。', sp_whlw:"文和乱武", sp_zlzy:"逐鹿中原", @@ -5591,6 +5773,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_shengun:'三国奇人传', sp_baigei:'无双上将', sp_guandu:'官渡之战', + sp_huangjin:'黄巾之乱', sp_decade:'其他新服武将', }, }; diff --git a/character/standard.js b/character/standard.js index 04632c40c..669a50d43 100755 --- a/character/standard.js +++ b/character/standard.js @@ -77,7 +77,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhenji:['caopi'], caocao:['xuzhu','dianwei','bianfuren'], huangzhong:['weiyan'], - zhugeliang:['huangyueying','jiangwei','jiangfei'], + zhugeliang:['jiangwei','jiangfei'], liubei:['guanyu','zhangfei','ganfuren'], zhaoyun:['liushan'], daqiao:['xiaoqiao'], diff --git a/character/swd.js b/character/swd.js index 91aa1dbd5..2cc845479 100644 --- a/character/swd.js +++ b/character/swd.js @@ -17,7 +17,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ swd_chenjingchou:['male','wu',3,['youyin','yihua']], swd_duguningke:['female','qun',3,['nlianji','touxi']], swd_guyue:['male','wei',3,['gtiandao','gxianyin','wangchen']], - swd_tuobayuer:['female','shu',4,['liuhong','poyue','niepan']], + swd_tuobayuer:['female','shu',4,['swdliuhong','poyue','niepan']], swd_yuwentuo:['male','shu',4,['wushuang','xielei','kunlunjing']], swd_yuxiaoxue:['female','wei',3,['huanhun','daixing','yinyue']], @@ -4005,7 +4005,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.recover(); } }, - liuhong:{ + swdliuhong:{ trigger:{player:['useCard']}, frequent:true, filter:function(event){ @@ -10082,8 +10082,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gongshen:'工神', gongshen_info:'任意一名其他角色使用一张基本牌或锦囊牌指定目标后,你可以弃置一张装备牌令其失效', - liuhong:'流虹', - liuhong_info:'每当你使用一张杀,可以摸一张牌', + swdliuhong:'流虹', + swdliuhong_info:'每当你使用一张杀,可以摸一张牌', poyue:'破月', poyue_info:'锁定技,你的黑杀无视距离,红色杀不计入回合内的出杀限制且不可闪避', poyue_info_alter:'锁定技,你的黑杀无视距离,红色杀不可闪避', diff --git a/character/xinghuoliaoyuan.js b/character/xinghuoliaoyuan.js index a756a4930..1d49d5510 100755 --- a/character/xinghuoliaoyuan.js +++ b/character/xinghuoliaoyuan.js @@ -421,9 +421,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, }, + qinguo_use:{audio:2}, "xinfu_qinguo":{ group:"xinfu_qinguo_recover", - audio:2, + audio:'qinguo_use', subfrequent:['recover'], trigger:{ player:"useCardEnd", @@ -433,11 +434,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, direct:true, content:function(){ - player.chooseUseTarget({name:'sha'},get.prompt('xinfu_qinguo'),'视为使用一张【杀】',false).logSkill='qinguo_use'; + player.chooseUseTarget({name:'sha'},get.prompt('xinfu_qinguo'),'视为使用一张【杀】',false).logSkill='xinfu_qinguo'; }, subSkill:{ recover:{ - audio:'xinfu_qinguo', + audio:'qinguo_use', trigger:{ player:'loseAfter', source:'gainAfter', diff --git a/character/yijiang.js b/character/yijiang.js index d4180ba88..6da1dbbbe 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -21,7 +21,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_guanzhang:['male','shu',4,['old_fuhun']], old_wangyi:['female','wei',3,['oldzhenlie','oldmiji']], caozhang:['male','wei',4,['jiangchi']], - guohuai:['male','wei',4,['jingce']], + guohuai:['male','wei',4,['rejingce']], zhangchunhua:['female','wei',3,['rejueqing','reshangshi']], caozhi:['male','wei',3,['luoying','jiushi']], caochong:['male','wei',3,['chengxiang','renxin']], @@ -194,6 +194,55 @@ game.import('character',function(lib,game,ui,get,ai,_status){ fazheng:['liubei'], }, skill:{ + rejingce:{ + audio:'jingce', + trigger:{player:'phaseUseEnd'}, + frequent:true, + filter:function(event,player){ + return player.getHistory('useCard',function(evt){ + return evt.getParent('phaseUse')==event; + }).length>0; + }, + content:function(){ + var list=[]; + player.getHistory('useCard',function(evt){ + if(evt.getParent('phaseUse')==trigger) list.add(get.type2(evt.card)); + }); + player.draw(list.length); + }, + group:'rejingce_add', + }, + rejingce_add:{ + trigger:{player:'loseEnd'}, + silent:true, + firstDo:true, + filter:function(event,player){ + if(event.getParent().name!='useCard'||player!=_status.currentPhase) return false; + var list=player.getStorage('rejingce2'); + for(var i of event.cards){ + if(!list.contains(get.suit(i,player))) return true; + } + return false; + }, + content:function(){ + if(!player.storage.rejingce2) player.storage.rejingce2=[]; + for(var i of trigger.cards) player.storage.rejingce2.add(get.suit(i,player)); + player.storage.rejingce2.sort(); + player.addTempSkill('rejingce2'); + player.markSkill('rejingce2'); + }, + }, + rejingce2:{ + onremove:true, + intro:{ + content:'当前已使用花色:$', + }, + mod:{ + maxHandcard:function(player,num){ + return num+player.getStorage('rejingce2').length; + }, + }, + }, rejueqing:{ audio:'jueqing', trigger:{source:'damageBegin2'}, @@ -12617,7 +12666,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ reshangshi:'伤逝', reshangshi_2nd:'伤逝', reshangshi_info:'当你受到伤害时,你可以弃置一张牌。当你的手牌数小于X时,你可以将手牌摸至X张。(X为你已损失的体力值)', - re_gongsunzan:'界公孙瓒', + re_gongsunzan:'公孙瓒', + rejingce:'精策', + rejingce2:'精策', + rejingce_add:'精策', + rejingce_info:'当你于一回合内首次使用某种花色的手牌时,你的手牌上限+1。出牌阶段结束时,你可以摸X张牌(X为你本阶段内使用过的牌的类型数)。', yijiang_2011:'一将成名2011', yijiang_2012:'一将成名2012', diff --git a/game/asset.js b/game/asset.js index e6aecf167..9a23fefe8 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.105.4', + 'v1.9.105.5', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -3386,6 +3386,7 @@ window.noname_asset_list=[ 'image/character/xin_liaohua.jpg', 'image/character/key_godan.jpg', 'image/character/shen_diaochan.jpg', + 'image/character/key_yuu.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/game.js b/game/game.js index 63e02f304..0616923c9 100644 --- a/game/game.js +++ b/game/game.js @@ -169,7 +169,13 @@ name:'无闪自动取消', init:false, unfrequent:true, - intro:'当自己需要使用或打出闪时,若自己没有闪,则跳过该步骤', + intro:'当自己需要使用或打出【闪】时,若自己没有【闪】,则跳过该步骤', + }, + unauto_choose:{ + name:'拆顺手牌选择', + init:false, + unfrequent:true, + intro:'拆牌或者顺牌时,就算只能选择对方的手牌依然手动选择', }, wuxie_self:{ name:'不无懈自己', @@ -11616,11 +11622,18 @@ if(info&&info.chooseButton){ if(event.dialog&&typeof event.dialog=='object') event.dialog.close(); var dialog=info.chooseButton.dialog(event,player); - var next=player.chooseButton(dialog); - next.set('ai',info.chooseButton.check||function(){return 1;}); - next.set('filterButton',info.chooseButton.filter||function(){return true;}); - next.set('selectButton',info.chooseButton.select||1); - event.buttoned=event.result.skill; + if(info.chooseButton.chooseControl){ + var next=player.chooseControl(info.chooseButton.chooseControl(event,player)); + next.dialog=dialog; + next.set('ai',info.chooseButton.check||function(){return 0;}); + } + else{ + var next=player.chooseButton(dialog); + next.set('ai',info.chooseButton.check||function(){return 1;}); + next.set('filterButton',info.chooseButton.filter||function(){return true;}); + next.set('selectButton',info.chooseButton.select||1); + } + event.buttoned=event.result.skill; } else if(info&&info.precontent&&!game.online){ var next=game.createEvent('pre_'+event.result.skill); @@ -11632,9 +11645,9 @@ } "step 3" if(event.buttoned){ - if(result.bool){ + if(result.bool||result.control&&result.control!='cancel2'){ var info=get.info(event.buttoned).chooseButton; - lib.skill[event.buttoned+'_backup']=info.backup(result.links,player); + lib.skill[event.buttoned+'_backup']=info.backup(info.chooseControl?result:result.links,player); lib.skill[event.buttoned+'_backup'].sourceSkill=event.buttoned; if(game.online){ event._sendskill=[event.buttoned+'_backup',lib.skill[event.buttoned+'_backup']]; @@ -12978,7 +12991,7 @@ if(event.prompt2){ event.dialog.addText(event.prompt2); } - var directh=true; + var directh=!lib.config.unauto_choose; for(var i=0;i=side2.length+2){ - game.me.showGiveup(); + me.showGiveup(); } } } @@ -6491,19 +6493,19 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ delete friend.replacetwo; } else{ - game.over(this.side!=game.me.side); + game.over(this.side!=me.side); } } else{ if(!friend){ - game.over(this.side!=game.me.side); + game.over(this.side!=me.side); } } return; } else if(_status.mode=='siguo'){ if(game.players.length==1||(game.players.length==2&&game.players[0].side==game.players[1].side)){ - game.over(game.me.side==game.players[0].side); + game.over(me.side==game.players[0].side); } var assignzhibao=function(){ var list=game.players.slice(0); @@ -6563,10 +6565,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } else if(_status.mode=='jiange'){ if(get.population('wei')==0){ - game.over(game.me.identity=='shu'); + game.over(me.identity=='shu'); } else if(get.population('shu')==0){ - game.over(game.me.identity=='wei'); + game.over(me.identity=='wei'); } return; } @@ -6580,7 +6582,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } } else{ - if(this==game.me){ + if(this==me){ game.modeSwapPlayer(game.friendZhu); } game.friend.remove(this); @@ -6588,7 +6590,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } return; } - if(this.side==game.me.side){ + if(this.side==me.side){ _status.friendDied.push(this.name); _status.friendCount.innerHTML='阵亡: '+get.cnNumber(_status.friendDied.length,true); } @@ -6597,7 +6599,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ _status.enemyCount.innerHTML='杀敌: '+get.cnNumber(_status.enemyDied.length,true); } - var list=(this.side==game.me.side)?_status.friend:_status.enemy; + var list=(this.side==me.side)?_status.friend:_status.enemy; if((list.length==0&&lib.storage.noreplace_end)|| (lib.storage.zhu&&lib.storage.main_zhu&&this.identity=='zhu'&&game.players.length>2)){ if(game.friend.contains(this)){