diff --git a/character/clan.js b/character/clan.js index b7098dbd7..d23a1d9e0 100644 --- a/character/clan.js +++ b/character/clan.js @@ -23,18 +23,178 @@ game.import('character',function(lib,game,ui,get,ai,_status){ clan_wanglun:['male','jin',3,['clanqiuxin','clanjianyuan','clanzhongliu'],['clan:太原王氏']], clan_xunyou:['male','wei',3,['clanbaichu','clandaojie'],['clan:颍川荀氏']], clan_wuqiao:['male','jin',4,['clanqiajue','clanmuyin'],['clan:陈留吴氏']], + clan_wangguang:['male','wei',3,['clanlilun','clanjianji','clanzhongliu'],['clan:太原王氏']], }, characterSort:{ clan:{ clan_wu:['clan_wuxian','clan_wuban','clan_wukuang','clan_wuqiao'], clan_xun:['clan_xunshu','clan_xunchen','clan_xuncai','clan_xuncan','clan_xunyou'], clan_han:['clan_hanshao','clan_hanrong'], - clan_wang:['clan_wangling','clan_wangyun','clan_wanghun','clan_wanglun'], + clan_wang:['clan_wangling','clan_wangyun','clan_wanghun','clan_wanglun','clan_wangguang'], clan_zhong:['clan_zhongyan','clan_zhonghui','clan_zhongyu'], }, }, /** @type { importCharacterConfig['skill'] } */ skill:{ + //族贝斯塔[doge] + clanlilun:{ + audio:2, + enable:'phaseUse', + filter(event,player){ + return player.hasCard(card=>get.info('clanlilun').filterCard(card,player),'h'); + }, + filterCard(card,player){ + if(player.getStorage('clanlilun').includes(card.name)) return false; + if(ui.selected.cards.length&&ui.selected.cards[0].name!=card.name) return false; + const cards=player.getCards('h',cardx=>player.canRecast(cardx)); + return cards.includes(card)&&cards.filter(i=>i.name==card.name).length>1; + }, + selectCard:2, + position:'h', + check(card){ + const player=get.event('player'); + const value=function(card,player){ + const num=player.getUseValue(card); + return num>0?(num+(1/(get.value(card)||0.5))+7):7-get.value(card); + }; + if(ui.selected.cards.length&&value(card,player){ + player.unmarkSkill('clanlilun'); + delete player.storage.clanlilun; + }); + } + player.markAuto('clanlilun',event.cards.slice().map(card=>card.name)); + const cards=event.cards.filterInD('d'); + if(cards.some(card=>player.hasUseTarget(card))){ + const {result:{bool,links}}=await player.chooseButton(['离论:是否使用其中的一张牌?',cards]).set('filterButton',button=>{ + return get.event('player').hasUseTarget(button.link); + }).set('ai',button=>{ + return get.event('player').getUseValue(button.link); + }); + if(bool){ + const card=links[0]; + player.$gain2(card,false); + await game.asyncDelayx(); + await player.chooseUseTarget(true,card,false); + } + } + }, + onremove:true, + intro:{content:'本回合已重铸过$'}, + ai:{ + order(item,player){ + let cards=player.getCards('h',card=>get.info('clanlilun').filterCard(card,player)&&player.getUseValue(card)>0); + cards=cards.filter(card=>cards.filter(i=>i.name==card.name).length>1); + if(!cards.length) return 1; + cards.sort((a,b)=>get.order(b)-get.order(a)); + return get.order(cards[0])-0.001; + }, + result:{player:1}, + }, + }, + clanjianji:{ + unique:true, + limited:true, + audio:2, + trigger:{global:'phaseJieshuBegin'}, + filter(event,player){ + if(!event.player.isIn()) return false; + const targets=game.filterPlayer(target=>{ + return event.player.getPrevious()==target||event.player.getNext()==target; + }); + if(!targets.length) return false; + const card=new lib.element.VCard({name:'sha'}); + return !targets.some(target=>{ + return target.getHistory('useCard').length; + })||(player.hasUseTarget(card)&&!targets.some(target=>{ + return game.hasPlayer2(current=>{ + return current.getHistory('useCard',evt=>{ + return evt.targets&&evt.targets.includes(target); + }).length; + }); + })); + }, + skillAnimation:true, + animationColor:'watar', + prompt2(event,player){ + let str=''; + const card=new lib.element.VCard({name:'sha'}); + const targets=game.filterPlayer(target=>{ + return event.player.getPrevious()==target||event.player.getNext()==target; + }),bool=(!targets.some(target=>{ + return target.getHistory('useCard').length; + })),goon=(player.hasUseTarget(card)&&!targets.some(target=>{ + return game.hasPlayer2(current=>{ + return current.getHistory('useCard',evt=>{ + return evt.targets&&evt.targets.includes(target); + }).length; + }); + })); + if(bool){ + if(goon) str+='你可以'; + str+='与'+get.translation(get.translation(event.player))+'各摸一张牌'; + } + if(goon){ + if(bool) str+=',然后你可以'; + str+='视为使用一张【杀】'; + } + return str; + }, + check(event,player){ + const card=new lib.element.VCard({name:'sha'}); + const targets=game.filterPlayer(target=>{ + return event.player.getPrevious()==target||event.player.getNext()==target; + }),bool=(!targets.some(target=>{ + return target.getHistory('useCard').length; + })),goon=(player.hasUseTarget(card)&&!targets.some(target=>{ + return game.hasPlayer2(current=>{ + return current.getHistory('useCard',evt=>{ + return evt.targets&&evt.targets.includes(target); + }).length; + }); + })); + return (bool&&(get.attitude(player,event.player)>0||event.player.countCards('h')>player.countCards('h')))||(goon&&player.hasValueTarget(card)); + }, + logTarget:'player', + async content(event,trigger,player){ + player.awakenSkill('clanjianji'); + const card=new lib.element.VCard({name:'sha'}); + const targets=game.filterPlayer(target=>{ + return trigger.player.getPrevious()==target||trigger.player.getNext()==target; + }),boolx=(!targets.some(target=>{ + return target.getHistory('useCard').length; + })),goon=(player.hasUseTarget(card)&&!targets.some(target=>{ + return game.hasPlayer2(current=>{ + return current.getHistory('useCard',evt=>{ + return evt.targets&&evt.targets.includes(target); + }).length; + }); + })); + if(boolx){ + let draw=false; + if(goon){ + const {result:{bool}}=await player.chooseBool('是否与'+get.translation(trigger.player)+'各摸一张牌?').set('choice',get.attitude(player,trigger.player)>0||trigger.player.countCards('h')>player.countCards('h')); + if(bool) draw=true; + } + else draw=true; + if(draw){ + await player.draw('nodelay'); + await trigger.player.draw(); + } + } + if(goon) await player.chooseUseTarget(card,false,!boolx); + }, + }, //族吴乔 clanqiajue:{ audio:2, @@ -1236,7 +1396,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, clanzhongliu:{ audio:2, - audioname:['clan_wangling','clan_wangyun','clan_wanghun','clan_wanglun'], + audioname:['clan_wangling','clan_wangyun','clan_wanghun','clan_wanglun','clan_wangguang'], trigger:{player:'useCard'}, forced:true, clanSkill:true, @@ -2627,6 +2787,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhongyu:'钟毓(?-263年),字稚叔,颍川长社(今河南长葛市)人。三国时期魏国大臣,太傅钟繇之子、司徒钟会之兄。出身颍川钟氏,机灵敏捷,有其父之遗风。十四岁时,起家散骑侍郎。太和初年,迁黄门侍郎,袭封定陵县侯。正始年间,拜散骑常侍,迁魏郡太守,入为侍中、御史中丞、廷尉 [5] 。随平诸葛诞的淮南叛乱,拜青州刺史、后将军,都督徐州、荆州诸军事。景元四年(263年),去世,追赠车骑将军,谥号为惠,著有文集五卷(见《隋书·经籍志》及《两唐书·经籍志》),传于世。', wanglun:'王沦(233年-257年)字太冲,出身太原晋阳王姓世族(今山西省太原市),王昶三子,王浑、王深之弟,王湛之兄。醇粹简远,崇尚老庄之学,心思平淡。二十多时被举荐为孝廉,没有前往,后任大将军参军。257年,诸葛诞不满司马氏篡权而在寿春起义,王沦跟随司马昭征讨,遭遇疾疫去世,时年二十五,时人惜之,司马昭为他流泪。其兄著诔文《表德论》,表述其德行,说“因为畏惧帝王的典章制度,不能写墓志铭,于是撰写过往的事迹,刻在墓的背面。”', wuqiao:'吴乔,西晋人物,蜀车骑将军吴懿之孙。李雄建立成汉政权,他沦落益州,长达三十年,始终不向李雄屈服。', + clan_wangguang:'王广,三国时期曹魏太原祁县人,哲学家。东汉司徒王允从孙,魏太尉王凌之子。有志尚学,官至尚书。魏时随父亲在朝作官,屯骑校尉,机智有谋。当得知司马懿篡夺曹魏政权时,王凌与外甥令狐愚合谋立楚王为魏主,王广劝其父不可,王凌没有接受儿子的谏言,结果计谋泄而被害。', }, dynamicTranslate:{ clanlianzhu(player){ @@ -2757,6 +2918,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ clan_wuqiao:'族吴乔', clanqiajue:'跒倔', clanqiajue_info:'摸牌阶段开始时,你可以弃置一张黑色牌。若如此做,此阶段结束时,你展示手牌,若这些牌的点数和大于30,你的手牌上限-2,否则你执行一个额外的摸牌阶段。', + clan_wangguang:'族王广', + clan_wangguang_prefix:'族', + clanlilun:'离论', + clanlilun_info:'出牌阶段限一次,你可以重铸两张手牌(不能是你本回合以此法重铸过的牌名的牌),然后使用其中的一张牌。', + clanjianji:'见机', + clanjianji_info:'限定技,一名角色的结束阶段,若其上下家均未于本回合:使用过牌,则你可以与其各摸一张牌;成为过牌的目标,则你可以视为使用一张【杀】。', clan_wu:'陈留·吴氏', clan_xun:'颍川·荀氏', diff --git a/character/huicui.js b/character/huicui.js index 0589883f7..31ba2901d 100644 --- a/character/huicui.js +++ b/character/huicui.js @@ -7095,6 +7095,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ 'step 0' player.showCards(cards,get.translation(player)+'发动了【数合】'); + player.addMark('dcliehou',1); 'step 1' event.cards2=[]; var num1=get.number(cards[0],player); @@ -7135,7 +7136,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var target=result.targets[0]; player.line(target,'green'); player.give(cards,target); - player.addMark('dcliehou',1); } }, ai:{ @@ -11908,7 +11908,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 0' var target=trigger.player; event.target=target; - if(target.getHistory('sourceDamage').length>0&&player.canUse('juedou',target)){ + if(target.getHistory('useCard',evt=>get.color(evt.card)=='black').length>0&&player.canUse('juedou',target)){ player.useCard({name:'juedou',isCard:true},target,'dcxunji_effect'); } 'step 1' @@ -12558,7 +12558,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhuangdan_info:'锁定技,其他角色的回合结束时,若你的手牌数为全场唯一最多,则你令〖裂胆〗失效直到你下回合结束。', dc_caiyang:'蔡阳', dcxunji:'寻嫉', - dcxunji_info:'出牌阶段限一次,你可以选择一名其他角色。该角色的下个结束阶段开始时,若其于该回合内造成过伤害,则你视为对其使用一张【决斗】,且当此【决斗】对其造成伤害后,其对你造成等量的伤害。', + dcxunji_info:'出牌阶段限一次,你可以选择一名其他角色。该角色的下个结束阶段开始时,若其此回合使用过黑色牌,则你视为对其使用一张【决斗】,且当此【决斗】对其造成伤害后,其对你造成等量的伤害。', dcjiaofeng:'交锋', dcjiaofeng_info:'锁定技。每回合限一次,当你造成伤害时,若你本回合内未造成过其他伤害且你已损失的体力值:大于0,则你摸一张牌;大于1,则此伤害+1;大于2,则你回复1点体力。', zhoushan:'周善', @@ -12758,7 +12758,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qinbao_info:'锁定技。当你使用【杀】或普通锦囊牌时,你令所有手牌数不小于你的角色不能响应此牌。', dc_lvkuanglvxiang:'吕旷吕翔', dcshuhe:'数合', - dcshuhe_info:'出牌阶段限一次,你可以展示一张手牌。若场上有与此牌点数相同的牌,则你获得这些牌;否则你将此牌交给一名其他角色并获得一枚“爵”。', + dcshuhe_info:'出牌阶段限一次,你可以展示一张手牌并获得一枚“爵”。若场上有与此牌点数相同的牌,则你获得这些牌;否则你将此牌交给一名其他角色。', dcliehou:'列侯', dcliehou_info:'锁定技。摸牌阶段开始时,你令额定摸牌数+X;然后此摸牌阶段结束时,你选择一项:⒈弃置X张牌。⒉失去1点体力(X为你的“爵”数+1且至多为5)。', yinfuren:'尹夫人', diff --git a/character/rank.js b/character/rank.js index c9dc1c3b2..ed2b6d944 100644 --- a/character/rank.js +++ b/character/rank.js @@ -684,6 +684,8 @@ window.noname_character_rank={ 'ol_sb_guanyu', 'gongsunxiu', 'dc_caoshuang', + 'clan_wangling', + 'clan_wangguang', ], bp:[ 'xin_huojun', @@ -2657,6 +2659,7 @@ window.noname_character_rank={ 'furongfuqian', 'zhenghun', 'clan_wangling', + 'clan_wangguang', 'clan_wangyun', 'quhuang', 'ol_wenqin', diff --git a/character/refresh.js b/character/refresh.js index 43463f8ea..5c8b939dc 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -1356,7 +1356,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, olkanpo:{ audio:'rekanpo', - audioname:['ol_sp_zhugeliang'], + audioname:['ol_sp_zhugeliang','ol_pangtong'], trigger:{player:'useCard'}, forced:true, locked:false, diff --git a/character/sb.js b/character/sb.js index e7d1c20d4..ba07cf518 100644 --- a/character/sb.js +++ b/character/sb.js @@ -2735,7 +2735,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sbguose:{ audio:2, enable:'phaseUse', - usable:4, + get usable(){ + return get.mode()=='identity'?4:2; + }, discard:false, lose:false, delay:false, @@ -7024,7 +7026,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sbzhiba_info:'主公技,限定技。当你进入濒死状态时,你可以回复X-1点体力并修改〖激昂③〗为“出牌阶段限X次”(X为场上其他吴势力角色数+1)。然后其他吴势力角色依次受到1点无来源伤害,且当有角色因此死亡后,你摸三张牌。', sb_daqiao:'谋大乔', sbguose:'国色', - sbguose_info:'出牌阶段限四次。你可以选择一项:1.将一张♦牌当【乐不思蜀】使用;2.弃置场上一张【乐不思蜀】。然后你摸一张牌。', + sbguose_info:'出牌阶段限两次,你可以将一张♦牌当【乐不思蜀】使用或弃置场上一张【乐不思蜀】,然后你摸一张牌。', + sbguose_info_identity:'出牌阶段限四次,你可以将一张♦牌当【乐不思蜀】使用或弃置场上一张【乐不思蜀】,然后你摸一张牌。', sbliuli:'流离', sbliuli_info:'当你成为【杀】的目标时,你可以弃置一张牌并选择你攻击范围内的一名不为此【杀】使用者的角色,将此【杀】转移给该角色。若你以此法弃置了♥牌,则你可以令一名不为此【杀】使用者的其他角色获得“流离”标记,且移去场上所有其他的“流离”(每回合限一次)。有“流离”的角色回合开始时,其移去其“流离”并执行一个额外的出牌阶段。', sb_liubiao:'谋刘表', diff --git a/character/sp.js b/character/sp.js index cc9622aa8..1a097f7af 100755 --- a/character/sp.js +++ b/character/sp.js @@ -25521,12 +25521,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ break; case 2: player.line(trigger.player,'green'); + /* var card1=trigger.player.getCards('h').randomGet(); var card2=trigger.player.getCards('e').randomGet(); var list=[]; if(card1) list.push(card1); if(card2) list.push(card2); if(list.length) player.gain(list,trigger.player,'giveAuto','bySelf'); + */ + const cards=trigger.player.getGainableCards(player,'he'); + if(cards.length) player.gain(cards.randomGets(2),trigger.player,'giveAuto','bySelf'); break; } 'step 2' @@ -26544,7 +26548,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ fujian:'伏间', fujian_info:'锁定技,准备阶段和结束阶段,你随机观看一名手牌数不为全场最多的其他角色的手牌。', xinfu_xionghuo:'凶镬', - xinfu_xionghuo_info:'游戏开始时,你获得3个“暴戾”标记(标记上限为3)。出牌阶段,你可以交给一名其他角色一个“暴戾”标记。当你对有“暴戾”标记的其他角色造成伤害时,此伤害+1。有“暴戾”标记的其他角色的出牌阶段开始时,其移去所有“暴戾”标记并随机执行一项:1.受到1点火焰伤害且本回合不能对你使用【杀】;2.失去1点体力且本回合手牌上限-1;3.你随机获得其一张手牌和一张装备区的牌。', + xinfu_xionghuo_info:'游戏开始时,你获得3个“暴戾”标记(标记上限为3)。出牌阶段,你可以交给一名其他角色一个“暴戾”标记。当你对有“暴戾”标记的其他角色造成伤害时,此伤害+1。有“暴戾”标记的其他角色的出牌阶段开始时,其移去所有“暴戾”标记并随机执行一项:1.受到1点火焰伤害且本回合不能对你使用【杀】;2.失去1点体力且本回合手牌上限-1;3.你随机获得其两张牌。', xinfu_shajue:'杀绝', xinfu_shajue_info:'锁定技,其他角色进入濒死状态时,你获得一个“暴戾”标记。然后若其体力值小于0,你获得使其进入濒死状态的牌。', xinfu_jianjie:"荐杰", diff --git a/character/sp2.js b/character/sp2.js index 8be60fa17..51432f316 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -3272,7 +3272,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } else player.addTempSkill('piaoping_blocker'); }, - intro:{name2:'栗',content:'mark'}, + init(player){ + player.addMark('tuoxian',1,false); + }, + intro:{name2:'栗',content:'剩余可用#次'}, }, chuaili:{ audio:2, @@ -3288,8 +3291,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.changeZhuanhuanji('piaoping'); } else{ - player.addMark('tuoxian',1); - player.addTempSkill('chuaili_blocker'); + player.addMark('tuoxian',1,false); + if(player.countCards('tuoxian')>3) player.addTempSkill('chuaili_blocker'); } game.delayx(); }, @@ -6738,7 +6741,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ trigger.num++; - if(trigger.source.name.indexOf('lvbu')!=-1) trigger.source.storage.panshi='吾堂堂丈夫,安肯为汝子乎!';// 彩蛋 + if(['name','name1','name2'].some(name=>{ + if(!player[name]||!get.character(player[name])||typeof get.translation(player[name])!='string') return false; + return player[name].includes('lvbu')&&get.translation(player[name]).includes('吕布'); + })) player.chat('吾堂堂丈夫,安肯为汝子乎!'); var evt=event.getParent('phaseUse'); if(evt&&evt.player==player) evt.skipped=true; }, @@ -11040,9 +11046,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return '转换技,锁定技。当你使用一张牌时,阴:你摸X张牌。阳:你弃置X张牌。(X为你本阶段内发动过〖漂萍〗的次数且至多等于你的体力值)'; }, chuaili:function(player){ - if(!player.hasSkill('piaoping',null,null,false)) return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你获得一枚“栗”,且令〖惴栗〗于本回合内失效。'; - if(player.storage.piaoping) return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你获得一枚“栗”,且令〖惴栗〗于本回合内失效。'; - return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你获得一枚“栗”,且令〖惴栗〗于本回合内失效。'; + if(!player.hasSkill('piaoping',null,null,false)) return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你令〖托献〗发动次数+1,然后若〖托献〗发动次数大于3,则〖惴栗〗于本回合内失效。'; + if(player.storage.piaoping) return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你令〖托献〗发动次数+1,然后若〖托献〗发动次数大于3,则〖惴栗〗于本回合内失效。'; + return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你令〖托献〗发动次数+1,然后若〖托献〗发动次数大于3,则〖惴栗〗于本回合内失效。'; }, dcdouzhen:function(player){ var str='锁定技。①转换技。你的回合内,'; @@ -11526,9 +11532,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ piaoping:'漂萍', piaoping_info:'转换技,锁定技。当你使用一张牌时,阴:你摸X张牌。阳:你弃置X张牌。(X为你本阶段内发动过〖漂萍〗的次数且至多等于你的体力值)', tuoxian:'托献', - tuoxian_info:'当你因执行〖漂萍〗的效果而弃置牌后,你可以弃置一枚“栗”并令一名其他角色获得这些牌,然后令该角色选择一项:⒈弃置区域内等量的牌。⒉令你的〖漂萍〗失效直到回合结束。', + tuoxian_info:'每局游戏限一次。当你因执行〖漂萍〗的效果而弃置牌后,你可令一名其他角色获得这些牌,然后令该角色选择一项:⒈弃置区域内等量的牌。⒉令你的〖漂萍〗失效直到回合结束。', chuaili:'惴栗', - chuaili_info:'锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你获得一枚“栗”,且令〖惴栗〗于本回合内失效。', + chuaili_info:'锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你令〖托献〗发动次数+1,然后若〖托献〗发动次数大于3,则〖惴栗〗于本回合内失效。', fengfang:'冯方', dcditing:'谛听', dcditing_info:'其他角色的出牌阶段开始时,若你在该角色的攻击范围内,则你可以观看其的X张手牌(X为你的体力值)并选择其中一张,且获得如下效果:①当其使用对应实体牌包含此牌的牌指定你为目标后,你令此牌对你无效。②当其使用对应实体牌包含此牌的牌结算结束后,若你不是此牌的目标,则你摸两张牌。③其出牌阶段结束时,若此牌位于其的手牌区,则你获得此牌。', diff --git a/character/xianding.js b/character/xianding.js index 2054f99f2..4aca7ebb8 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -1282,14 +1282,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhuanhuanji:true, intro:{ content:function(storage){ - if(!storage) return '每回合限一次,当你得到其他角色的牌后,或其他角色得到你的牌后,你可以令该角色使用至多X张【杀】,且其每以此法造成1点伤害,其回复1点体力。(X为你的体力值)' - return '每回合限一次,当你得到其他角色的牌后,或其他角色得到你的牌后,你可令该角色打出至多X张【杀】,然后其失去Y点体力。(X为你的体力值,Y为X-其打出【杀】数)'; + if(!storage) return '每回合限一次,当你得到其他角色的牌后,或其他角色得到你的牌后,你可以令该角色使用至多X张【杀】,且其每以此法造成1点伤害,其回复1点体力。(X为你的体力上限)'; + return '每回合限一次,当你得到其他角色的牌后,或其他角色得到你的牌后,你可令该角色打出至多X张【杀】,然后其失去Y点体力。(X为你的体力上限,Y为X-其打出【杀】数)'; }, }, audio:2, trigger:{global:['gainAfter','loseAsyncAfter']}, filter:function(event,player){ - if(!player.getHp()) return false; + if(typeof player.maxHp!='number'||player.maxHp<=0) return false; if(event.name=='loseAsync'&&event.type!='gain') return false; if(player.hasSkill('dcsbmengmou_true')&&player.hasSkill('dcsbmengmou_false')) return false; var cards1=event.getl(player).cards2,cards2=event.getg(player); @@ -1308,7 +1308,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var player=map.player,trigger=map.trigger; var storage=player.storage.dcsbmengmou; player.addTempSkill('dcsbmengmou_effect','dcsbmengmouAfter'); - var targets=[],num=player.getHp(); + var targets=[],num=player.maxHp; var cards1=trigger.getl(player).cards2; var cards2=trigger.getg(player); targets.addArray(game.filterPlayer(function(current){ @@ -1525,14 +1525,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{player:'phaseJieshuBegin'}, direct:true, - filter:function(event,player){ - return game.hasPlayer(current=>current.countCards('e')); - }, content:function*(event,map){ const player=map.player; - let result=yield player.chooseTarget(get.prompt('dcnuanhui'),'选择一名装备区有牌的角色,该角色可以依次使用X张基本牌(X为其装备区牌数)。',(card,player,target)=>{ - return target.countCards('e'); - }).set('ai',target=>{ + let result=yield player.chooseTarget(get.prompt('dcnuanhui'),'选择一名装备区有牌的角色,该角色可以依次使用X张基本牌(X为其装备区牌数)。').set('ai',target=>{ return get.event('aiTarget')==target?10:0; }).set('aiTarget',(()=>{ const player=get.player(); @@ -1544,7 +1539,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(get.attitude(player,target)<=0) return -1; const toUse=[]; const hp=target.hp; - let eff=0,count=target.countCards('e'); + let eff=0,count=Math.max(1,target.countCards('e')); while(count--){ target.hp=Math.min(target.maxHp,target.hp+toUse.filter(card=>card.name=='tao').length); const listx=list.map(info=>{ @@ -1570,11 +1565,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } return eff; } - const playerList=game.filterPlayer(current=>{ - return current.countCards('e'); - }).map(current=>[current,getUseValue(current)]).sort((a,b)=>{ - return b[1]-a[1]; - }); + const playerList=game.filterPlayer().map(current=>[current,getUseValue(current)]).sort((a,b)=>b[1]-a[1]); if(playerList[0][1]<=0) return null; return playerList[0][0]; })()); @@ -1582,8 +1573,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ const target=result.targets[0]; player.logSkill('dcnuanhui',target); if(!target.isUnderControl(true)&&!target.isOnline()) game.delayx(); - const total=target.countCards('e'); - let count=0,forced=false; + const total=Math.max(1,target.countCards('e')); + let count=0,forced=false,used=[],discard=false; while(count{ return info[0]=='basic'&&target.hasUseTarget({name:info[2],nature:info[3],isCard:true}); @@ -1602,10 +1593,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } forced=true; const card=new lib.element.VCard({name:result.links[0][2],nature:result.links[0][3],isCard:true}); - yield target.chooseUseTarget(card,true,false); + const result=yield target.chooseUseTarget(card,true,false); + if(!discard&&result.bool){ + if(used.includes(result.links[0][2])) discard=true; + else used.add(result.links[0][2]); + } count++; } - if(count>1){ + if(discard){ const cards=target.getCards('e',card=>{ return lib.filter.cardDiscardable(card,target,'dcnuanhui'); }); @@ -14445,7 +14440,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(storage) str+=''; str+='阳,你可令该角色打出至多X张【杀】,然后其失去Y点体力。'; if(storage) str+=''; - str+='(X为你的体力值,Y为X-其打出【杀】数)'; + str+='(X为你的体力上限,Y为X-其打出【杀】数)'; return str; }, dcsbyingmou:function(player){ @@ -14969,7 +14964,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcqiongying:'琼英', dcqiongying_info:'出牌阶段限一次。你可以移动场上的一张牌,然后你弃置一张与此牌花色相同的手牌(若没有该花色的手牌则改为展示所有手牌)。', dcnuanhui:'暖惠', - dcnuanhui_info:'结束阶段,你可以选择一名装备区有牌的角色,其可以视为依次使用X张基本牌(X为其装备区牌数)。若其以此法使用了至少两张牌,其弃置装备区里的所有牌。', + dcnuanhui_info:'结束阶段,你可以选择一名装备区有牌的角色,其可以视为依次使用X张基本牌(X为其装备区牌数且至少为1)。若其此次以此法使用了同名牌,其弃置装备区里的所有牌。', zhangjian:'张臶', dc_zj_a:'技能', dc_zj_a_info:'锁定技。当你受到牌造成的伤害时,若此牌有点数,则你将此伤害值改为此牌点数,否则你防止此伤害。', @@ -14980,7 +14975,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcsbmingshi:'明势', dcsbmingshi_info:'摸牌阶段,你可以多摸两张牌,然后展示三张牌并令一名其他角色选择获得其中的一张牌。', dcsbmengmou:'盟谋', - dcsbmengmou_info:'转换技,每回合每项各限一次,当你得到其他角色的牌后,或其他角色得到你的牌后:阴,你可以令该角色使用至多X张【杀】,且其每以此法造成1点伤害,其回复1点体力;阳,你可令该角色打出至多X张【杀】,然后其失去Y点体力。(X为你的体力值,Y为X-其打出【杀】数)', + dcsbmengmou_info:'转换技,每回合每项各限一次,当你得到其他角色的牌后,或其他角色得到你的牌后:阴,你可以令该角色使用至多X张【杀】,且其每以此法造成1点伤害,其回复1点体力;阳,你可令该角色打出至多X张【杀】,然后其失去Y点体力。(X为你的体力上限,Y为X-其打出【杀】数)', dc_sb_zhouyu:'新杀谋周瑜', dc_sb_zhouyu_prefix:'新杀谋', dcsbronghuo:'融火', diff --git a/image/character/clan_wangguang.jpg b/image/character/clan_wangguang.jpg new file mode 100644 index 000000000..234b93828 Binary files /dev/null and b/image/character/clan_wangguang.jpg differ