diff --git a/character/huicui.js b/character/huicui.js index 98f9f8b4c..c2dcfed0d 100644 --- a/character/huicui.js +++ b/character/huicui.js @@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'huicui', connect:true, character:{ + dc_sp_menghuo:['male','qun',4,['dcmanwang']], dc_lingcao:['male','wu','4/5',['dcdufeng']], yue_xiaoqiao:['female','wu',3,['dcqiqin','dcweiwan']], dc_dongzhao:['male','wei',3,['dcyijia','dcdingji']], @@ -107,11 +108,94 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_yanhan:['dc_liuba','dc_huangquan','furongfuqian','xianglang','dc_huojun','gaoxiang','dc_wuban'], sp_jishi:['dc_jiben','zhenghun','dc_sunhanhua','liuchongluojun'], sp_raoting:['dc_huanghao','dc_sunziliufang','dc_sunchen','dc_jiachong'], - sp_yijun:['gongsundu','mengyou'], + sp_yijun:['gongsundu','mengyou','dc_sp_menghuo'], sp_zhengyin:['yue_caiwenji','yue_zhoufei','yue_caiyong','yue_xiaoqiao'], } }, skill:{ + //新服SP孟获 + dcmanwang:{ + audio:'spmanwang', + inherit:'spmanwang', + check:function(card){ + var player=_status.event.player; + var max=Math.min(player.isDamaged()?3:2,4-player.countMark('dcmanwang')); + if(!max&&!player.hasSkill('dcpanqin')) return 0; + if(max==0&&ui.selected.length>0) return 0; + return 7-ui.selected.cards.length-get.value(card); + }, + content:function(){ + var num=Math.min(cards.length,4-player.countMark('dcmanwang')); + if(num>=1) player.addSkill('dcpanqin'); + if(num>=2) player.draw(); + if(num>=3) player.recover(); + if(num>=4){ + player.draw(2); + player.removeSkill('dcpanqin'); + } + }, + ai:{ + order:2, + result:{ + player:function(player,target){ + if(player.getUseValue({name:'nanman'})<=0) return 0; + if(player.getStat('skill').spmanwang&&player.hasSkill('dcpanqin')) return 0; + return 1; + }, + }, + }, + derivation:'dcpanqin', + }, + dcpanqin:{ + audio:'sppanqin', + inherit:'sppanqin', + content:function(){ + var cards=[]; + player.getHistory('lose',function(evt){ + if(evt.type!='discard'||evt.getParent(trigger.name)!=trigger) return false; + for(var i of evt.cards2){ + if(get.position(i,true)=='d'){ + cards.add(i); + } + } + }); + player.chooseUseTarget(true,{name:'nanman'},cards); + player.addTempSkill('dcpanqin_eff'); + }, + subSkill:{ + eff:{ + charlotte:true, + trigger:{player:'useCard'}, + filter:function(event,player){ + return event.card.name=='nanman'&&event.getParent(2).name=='dcpanqin'&&player.countMark('dcmanwang')<4&&player.hasSkill('dcmanwang',null,null,false)&&event.cards.length<=event.targets.length; + }, + forced:true, + popup:false, + content:function(){ + 'step 0' + player.addMark('dcmanwang',1,false); + switch(player.countMark('dcmanwang')){ + case 1: + player.draw(2); + player.removeSkill('dcpanqin'); + break; + case 2: + player.recover(); + break; + case 3: + player.draw(); + break; + case 4: + player.addSkill('dcpanqin'); + break; + } + 'step 1' + player.gainMaxHp(); + player.recover(); + }, + } + } + }, //凌操 dcdufeng:{ audio:2, @@ -11115,6 +11199,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcporui:function(player){ return '每轮限'+(player.hasMark('dcgonghu_basic')?'两':'一')+'次。其他角色的结束阶段,你可以弃置一张牌并选择另一名于此回合内失去过牌的其他角色,你视为对其依次使用X+1张【杀】'+(player.hasMark('dcgonghu_damage')?'':',然后你交给其X张手牌')+'(X为其本回合失去的牌数且至多为5)。'; }, + dcmanwang:function(player){ + var num=4-player.countMark('dcmanwang'); + var str='出牌阶段,你可以弃置任意张牌。然后你依次执行以下选项中的前X项:'; + var list=[ + '⒈获得〖叛侵〗。', + '⒉摸一张牌。', + '⒊回复1点体力。', + '⒋摸两张牌并失去〖叛侵〗。', + ]; + for(var i=0;i<4;i++){ + if(i==num){ + str+=''; + } + str+=list[i]; + } + if(num<4) str+=''; + return str; + }, }, perfectPair:{}, characterReplace:{ @@ -11139,6 +11241,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhangxuan:['zhangxuan','jsrg_zhangxuan'], gaoxiang:['gaoxiang','jsrg_gaoxiang'], lingcao:['lingcao','dc_lingcao'], + sp_menghuo:['sp_menghuo','dc_sp_menghuo'], }, translate:{ re_panfeng:'潘凤', @@ -11606,6 +11709,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dc_lingcao_prefix:'新杀', dcdufeng:'独锋', dcdufeng_info:'锁定技。出牌阶段开始时,你失去1点体力或废除一个装备栏,摸X张牌,然后你的攻击范围与使用【杀】的次数上限均为X直到回合结束(X为你已废除的装备栏数与损失的体力值之和,至多为你的体力上限)。', + dc_sp_menghuo:'群孟获', + dc_sp_menghuo_prefix:'群', + dcmanwang:'蛮王', + dcmanwang_info:'出牌阶段,你可以弃置任意张牌。然后你依次执行以下选项中的前X项:⒈获得〖叛侵〗。⒉摸一张牌。⒊回复1点体力。⒋摸两张牌并失去〖叛侵〗。', + dcpanqin:'叛侵', + dcpanqin_info:'出牌阶段或弃牌阶段结束时,你可将你于本阶段内弃置且位于弃牌堆的所有牌当做【南蛮入侵】使用。然后若此牌被使用时对应的实体牌数不大于此牌的目标数,则你执行并移除〖蛮王〗中的最后一个选项,然后加1点体力上限并回复1点体力。', sp_baigei:'无双上将', sp_caizijiaren:'才子佳人', diff --git a/character/rank.js b/character/rank.js index 4848518f3..801711344 100644 --- a/character/rank.js +++ b/character/rank.js @@ -590,6 +590,8 @@ window.noname_character_rank={ 'tengfanglan', 'tenggongzhu', 'sp_menghuo', + 'dc_sp_menghuo', + 'dc_qinghegongzhu', 'ruiji', 're_liuchen', 'dc_gongsunzan', @@ -2484,6 +2486,8 @@ window.noname_character_rank={ 'jin_guohuai', 'liuba', 'sp_menghuo', + 'dc_sp_menghuo', + 'dc_qinghegongzhu', 'tenggongzhu', 'tengfanglan', 'dc_bulianshi', diff --git a/character/xianding.js b/character/xianding.js index 6c9672f95..93a03b700 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'xianding', connect:true, character:{ + dc_qinghegongzhu:['female','wei',3,['dczhangji','dczengou']], caoxian:['female','wei',3,['dclingxi','dczhifou']], dc_sb_zhouyu:['male','wu',4,['dcsbronghuo','dcsbyingmou']], dc_sb_lusu:['male','wu',3,['dcsbmingshi','dcsbmengmou']], @@ -97,7 +98,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp2_bizhe:['dc_luotong','dc_wangchang','chengbing','dc_yangbiao','ruanji'], sp2_huangjia:['caomao','liubian','dc_liuyu','quanhuijie','dingshangwan','yuanji','xielingyu','sunyu','ganfurenmifuren','dc_ganfuren','dc_mifuren','dc_shixie'], sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'], - sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen','zhugeruoxue','caoxian'], + sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen','zhugeruoxue','caoxian','dc_qinghegongzhu'], sp2_yinyu:['zhouyi','luyi','sunlingluan','caoyi'], sp2_wangzhe:['dc_daxiaoqiao','dc_sp_machao'], sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao','tianshangyi','malingli'], @@ -110,6 +111,91 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, skill:{ + //清河公主 + dczhangji:{ + audio:2, + trigger:{global:'useCard'}, + filter:function(event,player){ + return event.targets&&event.targets.length>1&&event.targets.includes(player); + }, + forced:true, + logTarget:'player', + content:function*(event,map){ + const player=map.player; + let trigger=map.trigger,targets=trigger.targets.slice(); + targets.remove(player); + player.when({global:'useCardToTargeted'}).filter(evt=>targets.length&&evt.getParent()==trigger&&evt.targets.length==evt.getParent().triggeredTargets4.length).then(()=>{ + trigger.getParent().targets=[player].concat(targets); + trigger.getParent().triggeredTargets4=[player].concat(targets); + }).vars({targets:targets}); + player.when({target:['useCardToEnd','useCardToExcluded']}).filter(evt=>targets.length&&evt.getParent()==trigger).then(()=>{ + player.draw(targets.length); + }).vars({targets:targets}); + }, + }, + dczengou:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + return player.maxHp>0&&player.countCards('he')>0; + }, + filterCard:true, + selectCard:()=>[1,_status.event.player.maxHp], + position:'he', + filterTarget:lib.filter.notMe, + discard:false, + lose:false, + delay:false, + usable:1, + check:function(card){ + if(card.name=='tao'||card.name=='jiu') return 0; + return 1/(get.value(card)||0.5); + }, + content:function*(event,map){ + const player=map.player,cards=event.cards,target=event.target; + yield player.give(cards,target).gaintag.add('dczengou_debuff'); + yield player.draw(cards.length); + target.addSkill('dczengou_debuff'); + }, + ai:{ + order:10, + result:{target:-1}, + }, + subSkill:{ + debuff:{ + charlotte:true, + mark:true, + intro:{content:'下次体力值增加或使用牌结算完毕后展示所有手牌,然后失去手牌中“谮构”牌数的体力值'}, + trigger:{player:['changeHp','useCardAfter']}, + filter:function(event,player){ + return event.name=='useCard'||event.num>0; + }, + forced:true, + popup:false, + content:function(){ + player.removeSkill('dczengou_debuff'); + const cards=player.getCards('h',card=>card.hasGaintag('dczengou_debuff')); + player.showHandcards(); + if(cards.length) player.loseHp(cards.length); + }, + mod:{ + aiValue:function(player,card,num){ + if(get.itemtype(card)=='card'&&card.hasGaintag('dczengou_debuff')) return -1; + }, + aiUseful:function(){ + return lib.skill.dczengou.subSkill.debuff.mod.aiValue.apply(this,arguments); + }, + aiOrder:function(player,card,num){ + if(get.itemtype(card)=='card'&&card.hasGaintag('dczengou_debuff')){ + const cards=player.getCards('h',card=>card.hasGaintag('dczengou_debuff')); + if(cards.length==1) return num+10; + return 0; + } + }, + }, + }, + }, + }, //曹宪 dclingxi:{ audio:2, @@ -13528,6 +13614,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dc_wangchang:['dc_wangchang','tw_wangchang'], guozhao:['guozhao','xin_guozhao','jsrg_guozhao'], dingshangwan:['dingshangwan','ol_dingshangwan'], + qinghegongzhu:['qinghegongzhu','dc_qinghegongzhu'], }, translate:{ puyuan:'蒲元', @@ -14044,6 +14131,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dclingxi_info:'出牌阶段开始和结束时,你可以将至多X张牌称为“翼”置于你的武将牌上(X为你的体力上限)。当你失去武将牌上的“翼”时,你将手牌数调整至Y张(Y为你武将牌上的“翼”所含有的花色数的两倍)。', dczhifou:'知否', dczhifou_info:'当你使用牌结算完毕后,你可以移去至少X张武将牌上的“翼”(X为本回合此前发动此技能的次数+1),然后选择一名角色并选择一项令其执行(每个选项每回合限选择一次):①将一张牌称为“翼”置于你的武将牌上;②弃置两张牌;③失去1点体力。', + dc_qinghegongzhu:'新杀清河公主', + dc_qinghegongzhu_prefix:'新杀', + dczhangji:'长姬', + dczhangji_info:'锁定技,一名角色使用多目标牌时,若你是此牌的目标之一,则你先结算此牌的效果,然后你摸X张牌(X为此牌的其他目标数)。', + dczengou:'谮构', + dczengou_info:'出牌阶段限一次,你可以将至多体力上限张牌称为“谮构”交给一名其他角色并摸等量张牌。若如此做,其下次体力值增加或使用牌结算完毕后,其展示所有手牌,然后失去Y点体力(Y为其手牌中的“谮构”牌数)。', sp2_yinyu:'隐山之玉', sp2_huben:'百战虎贲',