diff --git a/character/old.js b/character/old.js index f87722206..a53f4454d 100755 --- a/character/old.js +++ b/character/old.js @@ -15,7 +15,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan",'old_caorui'], old_yijiang5:["old_caoxiu","old_zhuzhi"], old_yijiang67:["ol_zhangrang",'old_huanghao','old_liyan'], - old_sp:["old_wanglang","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","old_wangyun",'old_dingfeng'], + old_sp:["old_wanglang","old_maliang","old_machao","zhangliang","jsp_caoren","old_zhangxingcai","old_wangyun",'old_dingfeng'], old_yingbian:['junk_simayi','old_yangyan','old_yangzhi'], old_mobile:["old_caochun",'old_majun'], }, @@ -49,7 +49,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_xiaoqiao:['female','wu',3,['tianxiang','hongyan']], weiyan:['male','shu',4,['kuanggu']], xiahouyuan:['male','wei',4,['shensu']], - old_huangfusong:['male','qun',4,['fenyue']], old_majun:["male","wei",3,["xinfu_jingxie1","xinfu_qiaosi"],[]], old_zhangxingcai:['female','shu',3,['oldshenxian','qiangwu']], old_fuhuanghou:['female','qun',3,['oldzhuikong','oldqiuyuan']], @@ -82,7 +81,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_zhugezhan:["male","shu",3,["old_zuilun","old_fuyin"]], zhangliang:["male","qun",4,["old_jijun","old_fangtong"]], ol_zhangrang:['male','qun',3,['xintaoluan'],['sex:male_castrated']], - ol_guansuo:['male','shu',4,['zhengnan','xiefang']], //ol_manchong:['male','wei',3,['yuce','junxing']], old_guanqiujian:["male","wei",4,["drlt_zhenrong","drlt_hongju"],[]], old_wanglang:['male','wei',3,['gushe','jici']], @@ -1039,12 +1037,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_zhangrang:'旧张让', ol_liaohua:'OL廖化', ol_zhuran:'OL朱然', - ol_guansuo:'OL关索', ol_manchong:'OL满宠', old_fuhuanghou:'旧伏寿', old_caochong:'旧曹冲', old_guanqiujian:'旧毌丘俭', - old_huangfusong:'旧皇甫嵩', old_wangyun:'旧王允', old_zhaoyun:'新杀赵云', old_zhaoyun_ab:'赵云', diff --git a/character/refresh.js b/character/refresh.js index 26d3d2949..417e58d5c 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -11566,6 +11566,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ locked:false, audio:"wusheng", audioname:['re_guanyu','guanzhang','jsp_guanyu','guansuo','re_guanzhang','dc_jsp_guanyu'], + audioname2:{ + ol_guansuo:'wusheng_guansuo', + }, enable:["chooseToRespond","chooseToUse"], filterCard:function(card,player){ if(get.zhu(player,'shouyue')) return true; @@ -11601,6 +11604,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, + wusheng_guansuo:{audio:2}, "new_yijue":{ audio:"yijue", enable:"phaseUse", @@ -11698,6 +11702,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audioname2:{ old_guanzhang:'old_fuhun', xin_zhangfei:'paoxiao_re_zhangfei', + dc_xiahouba:'paoxiao_xiahouba', }, audioname:['re_zhangfei','guanzhang','xiahouba','re_guanzhang'], trigger:{player:'useCard1'}, diff --git a/character/shenhua.js b/character/shenhua.js index b4583f463..a41844a16 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -3216,6 +3216,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ tiaoxin:{ audio:2, audioname:['sp_jiangwei','xiahouba','re_jiangwei','gz_jiangwei','ol_jiangwei'], + audioname2:{ + dc_xiahouba:'tiaoxin_xiahouba', + }, enable:'phaseUse', usable:1, filterTarget:function(card,player,target){ @@ -3254,6 +3257,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ threaten:1.1 } }, + tiaoxin_xiahouba:{audio:2}, zhiji:{ skillAnimation:true, animationColor:'fire', @@ -6245,11 +6249,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinshensu:{ audio:'shensu1', audioname:['xiahouba','re_xiahouyuan','ol_xiahouyuan'], + audioname2:{ + dc_xiahouba:'shensu1_xiahouba', + }, group:['shensu1','shensu2','shensu4'] }, + shensu1_xiahouba:{audio:2}, shensu1:{ audio:2, audioname:['xiahouba','re_xiahouyuan','ol_xiahouyuan'], + audioname2:{ + dc_xiahouba:'shensu1_xiahouba', + }, trigger:{player:'phaseJudgeBefore'}, direct:true, content:function(){ @@ -6274,6 +6285,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shensu2:{ audio:'shensu1', audioname:['xiahouba','re_xiahouyuan','ol_xiahouyuan'], + audioname2:{ + dc_xiahouba:'shensu1_xiahouba', + }, trigger:{player:'phaseUseBefore'}, direct:true, filter:function(event,player){ @@ -6318,6 +6332,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shensu4:{ audio:'shensu1', audioname:['xiahouba','re_xiahouyuan','ol_xiahouyuan'], + audioname2:{ + dc_xiahouba:'shensu1_xiahouba', + }, trigger:{player:'phaseDiscardBefore'}, direct:true, content:function(){ diff --git a/character/sp.js b/character/sp.js index c17021b4d..309af6215 100755 --- a/character/sp.js +++ b/character/sp.js @@ -110,7 +110,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ panfeng:['male','qun',4,['kuangfu']], sunshao:['male','wu',3,['bizheng','yidian']], - huangfusong:['male','qun',4,['xinfenyue']], + huangfusong:['male','qun',4,['fenyue']], yuantanyuanshang:['male','qun',4,['neifa']], xujing:['male','shu',3,['yuxu','xjshijian']], @@ -123,7 +123,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yangxiu:['male','wei',3,['jilei','danlao']], chenlin:['male','wei',3,['bifa','songci']], caohong:['male','wei',4,['yuanhu']], - xiahouba:['male','shu',4,['rebaobian']], + xiahouba:['male','shu',4,['baobian']], yuanshu:['male','qun',4,['yongsi','weidi']], sp_diaochan:['female','qun',3,['lihun','rebiyue']], sp_zhaoyun:['male','qun',3,['ollongdan','chongzhen']], @@ -161,7 +161,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ wenpin:['male','wei',4,['zhenwei']], daxiaoqiao:['female','wu',3,['new_xingwu','new_luoyan']], - guansuo:['male','shu',4,['xinzhengnan','xiefang']], + guansuo:['male','shu',4,['zhengnan','xiefang']], tadun:['male','qun',4,['reluanzhan']], yanbaihu:['male','qun',4,['zhidao','jili']], chengyu:['male','wei',3,['shefu','benyu']], @@ -177,7 +177,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dongbai:['female','qun',3,['lianzhu','xiehui']], - zhaoxiang:['female','shu',4,['refanghun','refuhan']], + zhaoxiang:['female','shu',4,['fanghun','fuhan']], mazhong:['male','shu',4,['fuman']], dongyun:['male','shu',3,['bingzheng','sheyan']], kanze:['male','wu',3,['xiashu','kuanshi']], @@ -8926,7 +8926,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } }, - derivation:['oltiaoxin','new_repaoxiao','xinshensu'], + derivation:['tiaoxin','new_repaoxiao','xinshensu'], }, //范强张达 yuanchou:{ @@ -17784,44 +17784,36 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.popup(result.control); game.log(player,'获得了技能','#g【'+get.translation(result.control)+'】'); }, - ai:{ - threaten:1.3 - }, + ai:{threaten:2.5}, intro:{ content:'已因$发动过技能', }, derivation:['new_rewusheng','xindangxian','rezhiman'], }, zhengnan:{ - audio:1, + derivation:['new_rewusheng','dangxian','rezhiman'], + audio:2, trigger:{global:'dieAfter'}, frequent:true, content:function(){ 'step 0' player.draw(3); - var list=[]; - if(!player.hasSkill('new_rewusheng')){ - list.push('new_rewusheng'); - } - if(!player.hasSkill('dangxian')){ - list.push('dangxian'); - } - if(!player.hasSkill('rezhiman')){ - list.push('rezhiman'); - } - if(list.length){ - player.chooseControl(list).set('prompt','选择获得一项技能'); + var list=lib.skill.zhengnan.derivation.filter(skill=>!player.hasSkill(skill)); + if(list.length==1) event._result={control:list[0]}; + else if(list.length){ + player.chooseControl(list).set('prompt','选择获得一项技能').set('ai',function(){ + if(_status.event.controls.contains('dangxian')) return 'dangxian'; + return _status.event.controls[0]; + }); } + else event.finish(); 'step 1' if(result.control){ player.addSkillLog(result.control); player.popup(result.control); } }, - ai:{ - threaten:2.4 - }, - derivation:['new_rewusheng','dangxian','rezhiman'], + ai:{threaten:2}, }, xiefang:{ mod:{ @@ -23823,7 +23815,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.line(target,'fire'); event.draws=game.filterPlayer(function(current){ if(current==target) return true; - return ['guansuo','old_guansuo'].contains(current.name)||['guansuo','old_guansuo'].contains(current.name2); + return current.name=='guansuo'||current.name2=='guansuo'; }); player.gainPlayerCard(target,'he',true); } @@ -24293,7 +24285,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ caoshuang:['caoshuang','ns_caoshuang'], caoang:['caoang','yj_caoang','tw_caoang'], caohong:['tw_re_caohong','caohong','tw_caohong','yj_caohong'], - xiahouba:['xiahouba','tw_xiahouba'], + xiahouba:['xiahouba','tw_xiahouba','dc_xiahouba'], maliang:['maliang','re_maliang','tw_maliang','ol_maliang','old_maliang'], dingfeng:['dingfeng','tw_dingfeng','old_dingfeng'], zumao:['zumao','tw_zumao'], @@ -24311,7 +24303,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ fuwan:['fuwan','sp_fuwan','tw_fuwan'], huaxin:['ol_huaxin','huaxin','sp_huaxin'], xujing:['xujing','tw_xujing','sp_xujing'], - zhaoxiang:['zhaoxiang','tw_zhaoxiang'], + zhaoxiang:['zhaoxiang','tw_zhaoxiang','dc_zhaoxiang'], dengzhi:['ol_dengzhi','re_dengzhi','tw_dengzhi','dengzhi'], wangrong:['wangrong','ol_wangrong'], zongyu:['tw_zongyu','sp_zongyu','zongyu'], @@ -24330,7 +24322,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ huojun:['dc_huojun','huojun','tw_huojun'], zhaoyǎn:['dc_zhaoyǎn','zhaoyǎn'], furong:['ol_furong','tw_furong','furong'], - daxiaoqiao:['tw_daxiaoqiao','daxiaoqiao'], + daxiaoqiao:['tw_daxiaoqiao','daxiaoqiao','dc_daxiaoqiao'], zhugeguo:['tw_zhugeguo','zhugeguo'], wanglang:['wanglang','ol_wanglang','old_wanglang'], tengfanglan:['dc_tengfanglan','tengfanglan'], @@ -24470,7 +24462,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ panfeng:'OL潘凤', gz_panfeng:'潘凤', zumao:'祖茂', - daxiaoqiao:'大小乔', + daxiaoqiao:'大乔小乔', cuiyan:'崔琰', wenpin:'文聘', jsp_huangyueying:'SP黄月英', @@ -24501,7 +24493,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ caoying:"曹婴", simahui:"司马徽", - baosanniang:"OL鲍三娘", + baosanniang:"鲍三娘", pangdegong:"手杀庞德公", zhaotongzhaoguang:"手杀赵统赵广", majun:"马钧", @@ -25080,7 +25072,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ spyanhuo_info:'当你死亡时,你可增加如下全局技能:当有角色使用【杀】时,此【杀】的伤害值基数+1。', xiaoxi:'骁袭', xiaoxi_info:'当你登场时,你可以视为使用一张【杀】。', - quyi:'OL麴义', + quyi:'麴义', wolongfengchu:'卧龙凤雏', youlong:'游龙', youlong_info:'转换技,阴,每轮限一次,你可以废除你的一个装备栏,视为使用一张未以此法使用过的普通锦囊牌;阳,每轮限一次,你可以废除你的一个装备栏,视为使用一张未以此法使用过的基本牌。', diff --git a/character/sp2.js b/character/sp2.js index 573088f9e..2b8a1ba5b 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,6 +4,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + dc_zhaoxiang:['female','shu',4,['refanghun','refuhan']], + ol_guansuo:['male','shu',4,['xinzhengnan','xiefang']], + dc_jikang:['male','wei',3,['new_qingxian','dcjuexiang']], dc_jsp_guanyu:['male','wei',4,['new_rewusheng','dcdanji']], dc_mengda:['male','wei',4,['dclibang','dcwujie']], dc_zhangmancheng:['male','qun',4,['dclvecheng','dczhongji'],['unseen']], @@ -107,10 +110,103 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_xuzhou:['re_taoqian','caosong','zhangmiao','qiuliju'], sp_zhongyuan:['re_hucheer','re_zoushi','caoanmin','re_dongcheng'], sp_xiaohu:['haomeng','yanfuren','yanrou','dc_zhuling'], - sp_decade:['caobuxing','re_maliang','xin_baosanniang'], + sp_decade:['caobuxing','re_maliang','xin_baosanniang','dc_jikang','ol_guansuo','dc_zhaoxiang'], } }, skill:{ + //十周年嵇康 + dcjuexiang: { + derivation: 'dccanyun', + audio: 'juexiang', + trigger: { player: 'die' }, + forced: true, + forceDie: true, + skillAnimation: true, + animationColor: 'water', + content: function () { + 'step 0' + if (trigger.source && trigger.source.isIn()) { + trigger.source.discard(trigger.source.getCards('e')); + trigger.source.loseHp(); + } + 'step 1' + player.chooseTarget('绝响:是否令一名其他角色获得技能〖残韵〗?', lib.filter.notMe).set('ai', function (target) { + return get.attitude(_status.event.player, target); + }).set('forceDie', true); + 'step 2' + if (result.bool) { + var target = result.targets[0]; + player.line(target, 'thunder'); + target.addSkillLog('dccanyun'); + } + }, + }, + dccanyun: { + enable: 'phaseUse', + filter: function (event, player) { + return game.hasPlayer(function (target) { + return lib.skill.dccanyun.filterTarget(null, player, target); + }); + }, + filterTarget: function (card, player, target) { + var list = [player]; + player.getAllHistory('useSkill', function (evt) { + if (evt.skill == 'dccanyun') list.addArray(evt.targets); + }); + return !list.includes(target) && !ui.selected.targets.length; + }, + selectTarget: [1, 2], + targetprompt: function (target) { + var pe = _status.event.player.countCards('e', function (card) { + return ui.selected.cards.includes(card) == false; + }); + var te = target.countCards('e'); + if (pe > te) return '回复体力'; + else if (pe == te) return '摸一张牌'; + else if (pe < te) return '失去体力'; + }, + filterCard: true, + position: 'he', + check: function (cardx) { + var player = _status.event.player; + var number = game.countPlayer(function (target) { + if (player == target) return false; + var pe = player.countCards('e', function (card) { + return card != cardx && ui.selected.cards.includes(card) == false; + }); + var te = target.countCards('e'); + if (pe > te && target.isDamaged() && get.attitude(player, target) > 2) return true; + else if (pe < te && get.attitude(player, target) < 0) return true; + return false; + }); + if (ui.selected.cards.length < number) return 6 - get.value(cardx); + else return 0; + }, + usable: 1, + content: function () { + var pe = player.countCards('e'); + var te = target.countCards('e'); + if (pe > te) target.recover(); + else if (pe == te) target.draw(); + else if (pe < te) target.loseHp(); + }, + contentAfter: function () { + if (player.hp == 1) player.draw(); + }, + ai: { + order: 10, + result: { + target: function (player, target) { + var pe = player.countCards('e'); + var te = target.countCards('e'); + if (pe > te && target.isDamaged()) return 2; + else if (pe == te) return 1; + else if (pe < te) return -2.5; + else return 0; + }, + }, + }, + }, //董翓 dcjiaoxia:{ mod:{ @@ -5439,7 +5535,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ else event.finish(); 'step 2' var list=game.filterPlayer(function(current){ - return current.name=='guansuo'||current.name2=='guansuo'; + return current.name=='ol_guansuo'||current.name2=='ol_guansuo'; }); if(list.length) game.asyncDraw(list); else event.finish(); @@ -5761,13 +5857,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ charlotte:true, filter:function(event,player){ return event.decadexushen==true&&!game.hasPlayer(function(current){ - return current.name=='guansuo'||current.name2=='guansuo'; + return current.name=='ol_guansuo'||current.name2=='ol_guansuo'; }); }, content:function(){ 'step 0' player.chooseTarget(lib.filter.notMe,'许身:是否令一名其他角色选择是否将其武将牌替换为“关索”并令其摸三张牌?').set('ai',function(target){ - return get.attitude(_status.event.player,target)-4; + return get.attitude(_status.event.player,target); }); 'step 1' if(!result.bool){ @@ -5787,11 +5883,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } else event.goto(4); 'step 3' - target.reinit(result.control,'guansuo'); - if(target.name=='guansuo'&&target.group!='shu') target.changeGroup('shu'); + target.reinit(result.control,'ol_guansuo'); + if(target.name=='ol_guansuo'&&target.group!='shu') target.changeGroup('shu'); if(_status.characterlist){ _status.characterlist.add(result.control); - _status.characterlist.remove('guansuo'); + _status.characterlist.remove('ol_guansuo'); } 'step 4' target.draw(3); @@ -10216,7 +10312,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ juanhui2:'绢绘', juanhui2_backup:'绢绘', juanhui_info:'结束阶段,你可以选择一名其他角色。记录该角色下回合的出牌阶段里使用的基本牌和普通锦囊牌(每种牌名限记一次),你的下回合出牌阶段,可将一张手牌当这些牌里的任意一张牌使用(每张限使用一次,且【杀】不计次数)。当"绢绘"的牌全部用完时,你回复1点体力并将手牌摸至三张。', - re_maliang:'马良', + re_maliang:'新杀马良', rexiemu:'协穆', rexiemu_info:'结束阶段,若全场没有“协穆”标记,你可以选择一名角色获得“协穆”标记直到你的下回合开始。你或该角色在各自的回合外使用或打出手牌时,你与其各摸一张牌(每回合限一次)。', heli:'贺励', @@ -10236,8 +10332,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ tuxing:'图兴', tuxing2:'图兴', tuxing_info:'锁定技,当你废除一个装备栏时,你加1点体力上限并回复1点体力。然后若你所有的装备栏均已被废除,则你减4点体力上限,且本局游戏内造成的伤害+1。', - re_hejin:'何进', - xin_baosanniang:'鲍三娘', + re_hejin:'新杀何进', + xin_baosanniang:'新杀鲍三娘', decadexushen:"许身", decadexushen2:'许身', decadexushen_info:"限定技,当你进入濒死状态后,你可以回复1点体力并获得技能“镇南”,然后如果你脱离濒死状态且“关索”不在场,你可令一名其他角色选择是否用“关索”代替其武将并令其摸三张牌。", @@ -10278,8 +10374,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ quanbian:'权变', quanbian2:'权变', quanbian_info:'当你于出牌阶段内使用/打出手牌时,若此牌有花色且你本回合内未使用/打出过该花色的其他手牌,则你可以选择一项:①摸一张牌。②将牌堆顶X张牌中的一张置于牌堆底(X为你的体力上限)。若你发动此技能,则你本回合内不能再使用与此牌花色相同的手牌。', - re_hansui:'韩遂', - re_quyi:'麴义', + re_hansui:'新杀韩遂', + re_quyi:'新杀麴义', refuqi:'伏骑', refuqi_info:'锁定技,当你使用牌时,你令所有距离为1的其他角色不能使用或打出牌响应此牌。', hanfu:'韩馥', @@ -10322,7 +10418,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zongfan_info:'觉醒技。结束阶段,若你本回合内因〖谋逆〗使用过【杀】且未跳过本回合的出牌阶段,则你将任意张牌交给一名其他角色,然后加X点体力上限并回复X点体力(X为你以此法给出的牌数且至多为5)。最后失去〖谋逆〗并获得〖战孤〗。', zhangu:'战孤', zhangu_info:'锁定技,准备阶段,若你的体力上限大于1且没有手牌/装备区内没有牌,则你减1点体力上限,然后从牌堆中获得三张类型不同的牌。', - re_niujin:'牛金', + re_niujin:'新杀牛金', recuorui:'摧锐', recuorui_info:'限定技,出牌阶段,你可以依次获得至多X名角色的各一张手牌(X为你的体力值)。', reliewei:'裂围', @@ -10531,6 +10627,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcdanji_info:'觉醒技。准备阶段,若你的手牌数大于体力值,你减1点体力上限,将体力回复至体力上限,然后获得〖马术〗和〖怒嗔〗。', dcnuchen:'怒嗔', dcnuchen_info:'出牌阶段限一次。你可以展示一名其他角色的一张手牌,然后选择一项:1.弃置任意张该花色的牌,对其造成等量伤害;2.获得该角色手牌中所有此花色的牌。', + dc_jikang:'新杀嵇康', + dcjuexiang:'绝响', + dcjuexiang_info:'当你死亡时,杀死你的角色弃置其装备区内的所有牌并失去1点体力,然后你可以令一名其他角色获得〖残韵〗。', + dccanyun:'残韵', + dccanyun_info:'每名角色限一次。出牌阶段,你可以弃置一张牌并选择一名其他角色,然后若其装备区里的牌数:小于你,其回复1点体力;大于你,其失去1点体力;等于你,其摸一张牌。若你的体力值为1,你摸一张牌。', + ol_guansuo:'新杀关索', + dc_zhaoxiang:'新杀赵襄', sp_whlw:"文和乱武", sp_zlzy:"逐鹿中原", diff --git a/character/standard.js b/character/standard.js index 65aa68850..084256aec 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1087,6 +1087,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ firstDo:true, audioname2:{old_guanzhang:'old_fuhun'}, audioname:['re_zhangfei','guanzhang','xiahouba'], + audioname2:{ + dc_xiahouba:'paoxiao_xiahouba', + }, trigger:{player:'useCard1'}, forced:true, filter:function(event,player){ @@ -1109,6 +1112,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } }, + paoxiao_xiahouba:{audio:2}, guanxing_fail:{}, guanxing:{ audio:2, diff --git a/character/xianding.js b/character/xianding.js index ec70839c0..1102b3cfc 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -4,6 +4,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'xianding', connect:true, character:{ + old_huangfusong:['male','qun',4,['xinfenyue']], + dc_xiahouba:['male','shu',4,['rebaobian']], + dc_daxiaoqiao:['female','wu',3,['dcxingwu','dcluoyan']], tianshangyi:['female','wei',3,['dcposuo','dcxiaoren'],['unseen']], sunlingluan:['female','wu',3,['dclingyue','dcpandi']], dc_wangjun:['male','qun',4,['dctongye','dcchangqu']], @@ -75,13 +78,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, characterSort:{ xianding:{ - sp2_huben:['wangshuang','wenyang','re_liuzan','dc_huangzu','wulan','leitong','chentai','dc_duyu','dc_wangjun'], + sp2_huben:['wangshuang','wenyang','re_liuzan','dc_huangzu','wulan','leitong','chentai','dc_duyu','dc_wangjun','dc_xiahouba','old_huangfusong'], sp2_shengun:["puyuan","guanlu","gexuan",'wufan','re_zhangbao','dukui','zhaozhi','zhujianping','dc_zhouxuān','zerong'], 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'], sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'], sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen'], sp2_yinyu:['zhouyi','luyi','sunlingluan'], + sp2_wangzhe:['dc_daxiaoqiao'], sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao','tianshangyi'], sp2_jichu:['zhaoang','dc_liuye','dc_wangyun','yanghong','huanfan','xizheng'], sp2_yuxiu:['dongguiren','dc_tengfanglan','zhangjinyun','zhoubuyi'], @@ -90,6 +94,113 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, skill:{ + //十周年二乔 + dcxingwu: { + intro: { + content: 'expansion', + markcount: 'expansion', + onunmark: function (storage, player) { + player.removeAdditionalSkill('dcluoyan'); + }, + }, + onremove: function (player, skill) { + var cards = player.getExpansions(skill); + if (cards.length) player.loseToDiscardpile(cards); + }, + audio: 'xingwu', + trigger: { player: 'phaseDiscardBegin' }, + filter: function (event, player) { + return player.countCards('h'); + }, + direct: true, + content: function () { + 'step 0' + player.chooseCard('h', get.prompt('dcxingwu'), '将一张手牌作为“舞”置于武将牌上').set('ai', function (card) { + var att = 1, list = []; + for (var i of player.getExpansions('dcxingwu')) { + if (!list.includes(get.suit(i))) list.push(get.suit(i)); + } + if (!list.includes(get.suit(card))) att = 2; + if (_status.event.goon) return (20 - get.value(card)) * att; + return (7 - get.value(card)) * att; + }).set('goon', player.needsToDiscard() || player.getStorage('dcxingwu').length == 2); + 'step 1' + if (result.bool) { + player.logSkill('dcxingwu'); + var cards = result.cards; + player.addToExpansion(cards, player, 'give').gaintag.add('dcxingwu'); + } + 'step 2' + game.delayx(); + if (player.getExpansions('dcxingwu').length > 2) { + player.chooseButton(['是否移去三张“舞”并发射核弹?', player.getExpansions('dcxingwu')], 3).ai = (button) => { + if (game.hasPlayer(function (current) { + return get.attitude(player, current) < 0; + })) return 1; + return 0; + } + } + else event.finish(); + 'step 3' + if (result.bool) { + event.cards = result.links; + var list = [], str = [ + '小型', + '中型', + '巨型' + ]; + for (var i of event.cards) { + if (!list.includes(get.suit(i))) list.push(get.suit(i)); + } + player.chooseTarget('请选择' + str[list.length - 1] + '核弹的投射的目标(伤害:' + list.length + '点)', lib.filter.notMe, true).ai = (target) => { + var att = 1; + if (target.sex == 'male') att = 1.5; + if (target.hp == target.sex == 'male' ? 2 : 1) att *= 1.2; + if (get.mode() == 'identity' && player.identity == 'fan' && target.isZhu) att *= 3; + return (-get.attitude(player, target)) * att * (Math.max(1, target.countCards('e'))); + } + } + 'step 4' + if (result.bool) { + var list = []; + for (var i of event.cards) { + if (!list.includes(get.suit(i))) list.push(get.suit(i)); + } + player.loseToDiscardpile(event.cards); + player.logSkill('dcxingwu', result.targets[0]); + player.discardPlayerCard(result.targets[0], 'e', result.targets[0].countCards('e'), true); + result.targets[0].damage(result.targets[0].sex == 'female' ? 1 : list.length); + } + }, + }, + dcluoyan: { + derivation: ['retianxiang', 'liuli'], + init: function (player) { + if (player.getStorage('dcxingwu').length) player.addAdditionalSkill('dcluoyan', ['retianxiang_daxiaoqiao', 'liuli_daxiaoqiao']); + else player.removeAdditionalSkill('dcluoyan'); + }, + onremove: function (player) { + player.removeAdditionalSkill('dcluoyan'); + }, + trigger: { + player: ['loseAfter', 'loseAsyncAfter', 'addToExpansionAfter'], + }, + filter: function (event, player) { + var cards = player.getExpansions('dcxingwu'), skills = player.additionalSkills.dcluoyan; + if ((cards.length && skills && skills.length) || (!cards.length && (!skills || !skills.length))) { + return false; + } + return true; + }, + forced: true, + content: function () { + lib.skill.twpingting.init(player, 'dcluoyan'); + }, + }, + retianxiang_daxiaoqiao: { + audio: 'tianxiang_daxiaoqiao', + inherit: 'retianxiang', + }, //田尚衣 dcposuo:{ onChooseToUse:function(event){ @@ -12141,6 +12252,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcposuo_info:'出牌阶段,若你本阶段未造成过伤害,则你可以将一张你本阶段未以此法使用过的花色的手牌当作任意一张存在于游戏的同花色伤害牌使用。', dcxiaoren:'绡刃', dcxiaoren_info:'每回合限一次,当你造成伤害后,你可以进行判定,若结果为:红色,你可以令一名角色回复1点体力;黑色,你可以对受伤角色的上家或下家造成1点伤害,然后你可以重复此方向的伤害流程直到有角色因此死亡或下个目标角色为你。', + dc_daxiaoqiao:'新杀大乔小乔', + dcxingwu:'星舞', + dcxingwu_info:'弃牌阶段开始时,你可以将一张手牌置于武将牌上,称为“星舞”。若你的“星舞”牌达到三张,则你可移去三张“星舞”,弃置一名其他角色装备区里的所有牌,然后对其造成X点伤害(X为移去的“星舞”牌的花色数,若为女性角色则改为1点伤害)。', + dcluoyan:'落雁', + dcluoyan_info:'锁定技,若你有“星舞”牌,你视为拥有技能〖天香〗和〖流离〗。', + dc_xiahouba:'新杀夏侯霸', + old_huangfusong:'新杀皇甫嵩', sp2_yinyu:'隐山之玉', sp2_huben:'百战虎贲', @@ -12149,6 +12267,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp2_zhangtai:'章台春望', sp2_jinse:'锦瑟良缘', sp2_bizhe:'笔舌如椽', + sp2_wangzhe:'往者可荐', sp2_doukou:'豆蔻梢头', sp2_jichu:'计将安出', sp2_yuxiu:'钟灵毓秀', diff --git a/character/yijiang.js b/character/yijiang.js index 0009db51b..1a978110d 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -2202,6 +2202,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, audio:'dangxian', audioname:['guansuo','xin_liaohua','re_liaohua'], + audioname2:{ + ol_guansuo:'dangxian_guansuo', + }, content:function(){ var next=player.phaseUse(); next.xindangxian=true; @@ -2242,6 +2245,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, + dangxian_guansuo:{audio:2}, xinjunxing:{ inherit:'junxing', audio:'junxing', @@ -9881,6 +9885,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rezhiman:{ audio:'zhiman', audioname:['guansuo','re_masu'], + audioname2:{ + ol_guansuo:'zhiman_guansuo', + }, trigger:{source:'damageBegin2'}, filter:function(event,player){ return player!=event.player; @@ -9907,6 +9914,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger.cancel(); } }, + zhiman_guansuo:{audio:2}, resanyao:{ audio:2, enable:'phaseUse', @@ -13630,7 +13638,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhuzhi:['re_zhuzhi','zhuzhi','xin_zhuzhi','old_zhuzhi'], liuyu:['dc_liuyu','liuyu','ol_liuyu'], zhangrang:['zhangrang','ol_zhangrang','junk_zhangrang'], - jikang:['re_jikang','jikang'], + jikang:['re_jikang','jikang','dc_jikang'], xinxianying:['re_xinxianying','xinxianying','ol_xinxianying','sp_xinxianying'], gongsunyuan:['re_gongsunyuan','gongsunyuan'], zhoucang:['re_zhoucang','xin_zhoucang','zhoucang'], diff --git a/game/game.js b/game/game.js index 19da12efb..7ba409a18 100644 --- a/game/game.js +++ b/game/game.js @@ -39872,14 +39872,25 @@ }); } if(info.inherit){ - const skill=lib.skill[info.inherit]; - if(skill) Object.keys(skill).forEach(value=>{ - if(info[value]!=undefined) return; - if(value=='audio'&&(typeof info[value]=='number'||typeof info[value]=='boolean')) info[value]=info.inherit; - else info[value]=skill[value]; - }); - if(lib.translate[i]==undefined) lib.translate[i]=lib.translate[info.inherit]; - if(lib.translate[iInfo]==undefined) lib.translate[iInfo]=lib.translate[`${info.inherit}_info`]; + var inheritHistory=[]; + doInherit(i); + function doInherit(i){ + const info=lib.skill[i],iInfo=`${i}_info`; + if(!info.inherit) return; + if(inheritHistory.includes(info.inherit)) return; + inheritHistory.push(info.inherit); + + const inheritInfo=lib.skill[info.inherit]; + if(inheritInfo) Object.keys(inheritInfo).forEach(value=>{ + if(info[value]!=undefined) return; + if(value=='audio'&&(typeof info[value]=='number'||typeof info[value]=='boolean')) info[value]=info.inherit; + else info[value]=inheritInfo[value]; + }); + if(lib.translate[i]==undefined) lib.translate[i]=lib.translate[info.inherit]; + if(lib.translate[iInfo]==undefined) lib.translate[iInfo]=lib.translate[`${info.inherit}_info`]; + + doInherit(info.inherit); + } } if(info.limited){ if(info.mark===undefined) info.mark=true; diff --git a/image/character/dc_daxiaoqiao.jpg b/image/character/dc_daxiaoqiao.jpg new file mode 100644 index 000000000..cd3f7a2da Binary files /dev/null and b/image/character/dc_daxiaoqiao.jpg differ diff --git a/image/character/dc_jikang.jpg b/image/character/dc_jikang.jpg new file mode 100644 index 000000000..f8310a553 Binary files /dev/null and b/image/character/dc_jikang.jpg differ diff --git a/image/character/dc_xiahouba.jpg b/image/character/dc_xiahouba.jpg new file mode 100644 index 000000000..23acad105 Binary files /dev/null and b/image/character/dc_xiahouba.jpg differ diff --git a/image/character/dc_zhaoxiang.jpg b/image/character/dc_zhaoxiang.jpg new file mode 100644 index 000000000..31713853c Binary files /dev/null and b/image/character/dc_zhaoxiang.jpg differ