diff --git a/character/huicui.js b/character/huicui.js index 7c317b219..83ee125f6 100644 --- a/character/huicui.js +++ b/character/huicui.js @@ -96,6 +96,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_chunyuqiong:['male','qun',4,['recangchu','reliangying','reshishou']], xingdaorong:['male','qun','4/6',['xuxie']], re_panfeng:['male','qun',4,['xinkuangfu']], + dc_jiangfei:['male','shu',3,['dcshengxi','dcshoucheng']], }, characterSort:{ huicui:{ @@ -107,7 +108,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_jianghu:['guanning','huzhao','dc_huangchengyan','mengjie'], sp_zongheng:['huaxin','luyusheng','re_xunchen','re_miheng','fengxi','re_dengzhi','dc_yanghu','zongyu'], sp_taiping:['guanhai','liupi','peiyuanshao','zhangchu','zhangkai','dc_zhangmancheng'], - sp_yanhan:['dc_liuba','dc_huangquan','furongfuqian','xianglang','dc_huojun','gaoxiang','dc_wuban'], + sp_yanhan:['dc_liuba','dc_huangquan','furongfuqian','xianglang','dc_huojun','gaoxiang','dc_wuban','dc_jiangfei'], sp_jishi:['dc_jiben','zhenghun','dc_sunhanhua','liuchongluojun'], sp_raoting:['dc_huanghao','dc_sunziliufang','dc_sunchen','dc_jiachong'], sp_yijun:['gongsundu','mengyou','dc_sp_menghuo'], @@ -115,6 +116,86 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, skill:{ + dcshengxi:{ + audio:2, + trigger:{player:'phaseDiscardEnd'}, + filter(event,player){ + return !player.getStat('damage'); + }, + frequent:true, + content(){ + player.draw(2); + }, + }, + dcshoucheng:{ + audio:2, + init(player){ + game.addGlobalSkill('dcshoucheng_draw',player); + }, + trigger:{ + global:['equipAfter','addJudgeAfter','loseAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], + }, + filter(event,player){ + return game.hasPlayer(function(current){ + if(current==_status.currentPhase) return false; + let evt=event.getl(current); + return evt&&evt.hs&&evt.hs.length&¤t.countCards('h')==0; + }); + }, + direct:true, + content(){ + "step 0" + event.list=game.filterPlayer(current=>{ + if(current==_status.currentPhase) return false; + let evt=trigger.getl(current); + return evt&&evt.hs&&evt.hs.length&¤t.countCards('h')==0; + }).sortBySeat(_status.currentPhase); + "step 1" + var target=event.list.shift(); + event.target=target; + if(target.isIn()) player.chooseBool(get.prompt2('dcshoucheng',target)).set('ai',function(){ + return get.attitude(_status.event.player,_status.event.getParent().target)>0; + }); + else event.goto(3); + "step 2" + if(result.bool){ + player.logSkill(event.name,target); + if(player!==target&&(get.mode()!=='identity'||player.identity!=='nei')) player.addExpose(0.2); + target.draw(2); + } + "step 3" + if(event.list.length) event.goto(1); + }, + ai:{ + threaten(player,target){ + return Math.sqrt(game.countPlayer(i=>{ + return get.attitude(target,i)>0; + })); + } + }, + subSkill:{ + draw:{ + trigger:{player:'dieAfter'}, + filter(event,player){ + return !game.hasPlayer(current=>{ + return current.hasSkill('dcshoucheng'); + },true); + }, + content(){ + game.removeGlobalSkill('dcshoucheng_draw'); + }, + ai:{ + noh:true, + skillTagFilter(player,tag,arg){ + if(player.countCards('h')!==1) return false; + return game.hasPlayer(current=>{ + return current.hasSkill('dcshoucheng')&&get.attitude(current,player)>0; + }); + } + } + } + } + }, //乐大乔 dczixi:{ init(){ @@ -11437,7 +11518,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinkuangfu_info:'出牌阶段限一次,你可选择:1,弃置装备区里的一张牌,你使用无对应实体牌的普【杀】。若此【杀】造成伤害,你摸两张牌。2,弃置一名其他角色装备区里的一张牌,你使用无对应实体牌的普【杀】。若此【杀】未造成伤害,你弃置两张手牌。', xingdaorong:'邢道荣', xuxie:'虚猲', - xuxie_info:'出牌阶段开始时,你可以减1点体力上限并选择所有与你距离为1的角色,弃置这些角色的各一张牌或令这些角色各摸一张牌。出牌阶段结束时,若你的体力上限不为全场最多,则你加1点体力上限,然后回复1点体力或摸两张牌。', + xuxie_info:'出牌阶段开始时,你可以减1点体力上限并选择所有距离1以内的角色,弃置这些角色的各一张牌或令这些角色各摸一张牌。出牌阶段结束时,若你的体力上限不为全场最多,则你加1点体力上限,然后回复1点体力或摸两张牌。', caoxing:'曹性', cxliushi:'流矢', cxliushi2:'流矢', @@ -11910,6 +11991,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yue_daqiao_prefix:'乐', dczixi:'姊希', dczixi_info:'①出牌阶段开始和结束时,你可以将一张“琴”当作一张无效果的【乐不思蜀】、【兵粮寸断】或【闪电】置于一名角色的判定区。②当你使用基本牌或普通锦囊牌指定唯一目标后,你可根据其判定区内的牌数执行对应项:1.令此牌对其额外结算一次;2.摸两张牌;3.弃置其判定区所有牌,对其造成3点伤害。', + dc_jiangfei:'新杀蒋琬费祎', + dc_jiangfei_prefix:'新杀', + dcshengxi:'生息', + dcshengxi_info:'弃牌阶段结束时,若你本回合未造成过伤害,你可以摸两张牌。', + dcshoucheng:'守成', + dcshoucheng_info:'一名角色于其回合外失去最后的手牌时,你可令其摸两张牌。', sp_baigei:'无双上将', sp_caizijiaren:'才子佳人', diff --git a/character/sp.js b/character/sp.js index 868eb87fb..9e88aa187 100755 --- a/character/sp.js +++ b/character/sp.js @@ -22982,36 +22982,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{global:'phaseJieshuBegin'}, filter:function(event,player){ - return event.player.isIn()&&event.player!=player&&player.countCards('h',function(card){ - if(_status.connectMode) return true; - return get.type(card)=='basic'; - }); + return event.player.isIn()&&event.player!=player&&player.countCards('h'); }, direct:true, content:function(){ "step 0" - var nono=(Math.abs(get.attitude(player,trigger.player))<3); - if(get.damageEffect(trigger.player,player,player)<=0){ - nono=true; - } - var next=player.chooseToDiscard(get.prompt('xiaoguo',trigger.player),{type:'basic'}); + var next=player.chooseToDiscard(get.prompt('xiaoguo',trigger.player)); next.set('ai',function(card){ - if(_status.event.nono) return 0; - return 8-get.useful(card); + return _status.event.eff-get.useful(card); }); next.set('logSkill',['xiaoguo',trigger.player]); - next.set('nono',nono); + next.set('eff',function(){ + if(trigger.player.hasSkillTag('noe')) return get.attitude(_status.event.player,trigger.player); + return get.damageEffect(trigger.player,player,_status.event.player); + }()); "step 1" if(result.bool){ - var nono=(get.damageEffect(trigger.player,player,trigger.player)>=0); if(get.mode()!=='identity'||player.identity!=='nei') player.addExpose(0.15); trigger.player.chooseToDiscard('he','弃置一张装备牌并令'+get.translation(player)+'摸一张牌,或受到1点伤害',{type:'equip'}).set('ai',function(card){ - if(_status.event.nono){ - return 0; - } - if(_status.event.player.hp==1) return 10-get.value(card); - return 9-get.value(card); - }).set('nono',nono); + if(_status.event.damage>0) return 0; + if(_status.event.noe) return 12-get.value(card); + return 2*_status.event.damage-get.value(card); + }).set('damage',get.damageEffect(trigger.player,player,trigger.player)).set('noe',trigger.player.hasSkillTag('noe')); } else{ event.finish(); @@ -26489,7 +26481,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ guixiu_info:'当你成为【杀】的目标后,若你的手牌数小于体力值,则你可以摸一张牌。', fenming_info:'结束阶段开始时,若你处于横置状态,你可以弃置所有处于横置状态的角色的各一张牌。', duanxie_info:'出牌阶段限一次,你可以令至多X名其他角色横置(X为你已损失的体力值且至少为1),然后你横置。', - xiaoguo_info:'其他角色的结束阶段开始时,你可以弃置一张基本牌,令该角色选择一项:1.弃置一张装备牌,然后你摸一张牌;2.受到你对其造成的1点伤害。', + xiaoguo_info:'其他角色的结束阶段开始时,你可以弃置一张手牌,令该角色选择一项:1.弃置一张装备牌,然后你摸一张牌;2.受到你对其造成的1点伤害。', sijian_info:'当你失去最后的手牌时,你可以弃置一名其他角色的一张牌。', suishi_info:'当其他角色进入濒死状态时,伤害来源可以令你摸一张牌;当其他角色死亡时,伤害来源可以令你失去1点体力。', quji_info:'出牌阶段限一次,你可以弃置X张牌(X为你已损失的体力值),然后令至多X名已受伤的角色各回复1点体力。若你以此法弃置的牌中有黑色牌,你失去1点体力。', diff --git a/character/sp2.js b/character/sp2.js index 88cb88a9e..573f280c4 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -11401,7 +11401,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ starzongshi:'纵势', starzongshi_info:'出牌阶段,你可以展示一张可展示目标的基本牌或普通锦囊牌,然后你将手牌中所有与此牌花色相同的其他牌当作此牌使用,且此牌至多指定转化牌数的目标。', starjiaowang:'骄妄', - starjiaowang_info:'锁定技,非首轮游戏开始时,若上一轮没有角色因〖硝焰〗死亡,则你失去1点体力并发动〖硝焰〗。', + starjiaowang_info:'锁定技,非首轮游戏开始时,若上一轮没有角色死亡,则你失去1点体力并发动〖硝焰〗。', staraoshi:'傲势', staraoshi_info:'主公技,其他群势力角色的出牌阶段限一次,其可以交给你一张手牌,然后你可以发动一次〖纵势〗。',