diff --git a/character/clan/voices.js b/character/clan/voices.js index b337bf18b..44089d94a 100644 --- a/character/clan/voices.js +++ b/character/clan/voices.js @@ -140,4 +140,6 @@ export default { "#clanbaozu_clan_zhongyao1": "立规定矩,教习钟门之材。", "#clanbaozu_clan_zhongyao2": "放任纨绔,于族是祸非福。", "#clan_zhongyao:die": "幼子得宠而无忌,恐生无妄之祸……", + "#qice_clan_xunyou1": "二袁相争,此曹公得利之时。", + "#qice_clan_xunyou2": "穷寇宜追,需防死蛇之不僵。", }; diff --git a/character/collab/voices.js b/character/collab/voices.js index 3ce0f5698..ff33615f0 100644 --- a/character/collab/voices.js +++ b/character/collab/voices.js @@ -43,4 +43,6 @@ export default { "#dcnutao3": "智勇深沉,一世之雄!", "#dcnutao4": "波涛怒天,神力无边!", "#taoshen:die": "马革裹尸,身沉江心。", + "#jieyuan_more": "我所有的努力,都是为了杀你!", + "#jieyuan_less": "我必须活下去!", }; diff --git a/character/extra/voices.js b/character/extra/voices.js index 1ddcb6117..b2ae0d8ec 100644 --- a/character/extra/voices.js +++ b/character/extra/voices.js @@ -189,4 +189,34 @@ export default { "#longhun3": "金甲映日,驱邪祛秽。", "#longhun4": "腾龙行云,首尾不见。", "#boss_zhaoyun:die": "血染鳞甲,龙坠九天。", + "#dccuixin1": "今兵临城下,其王庭可摧。", + "#dccuixin2": "四面皆奏楚歌,问汝降是不降?", + "#dili_shengzhi1": "位继父兄,承弘德以继往。", + "#dili_shengzhi2": "英魂犹在,履功业而开来。", + "#dili_quandao1": "继策掌权,符令吴会。", + "#dili_quandao2": "以权驭衡,谋定天下。", + "#dili_chigang1": "秉承伦常,扶树纲纪。", + "#dili_chigang2": "至尊临位,则朝野自肃。", + "#shenzhu1": "力引强弓百斤,矢除贯手著棼!", + "#shenzhu2": "箭既已在弦上,吾又岂能不发!", + "#jilue_guicai1": "老夫,即是天命!", + "#jilue_fangzhu1": "赦你死罪,你去吧!", + "#wansha_shen_simayi1": "天要亡你,谁人能救?", + "#wansha_shen_simayi2": "天要亡你,谁人能救?", + "#jilue_zhiheng1": "天之道,轮回也。", + "#jilue_jizhi1": "顺应天意,得道多助。", + "#wushuang_shen_lvbu1": "燎原千里,凶名远扬!", + "#wushuang_shen_lvbu2": "铁蹄奋进,所向披靡!", + "#tianxing1": "孤之行,天之意。", + "#tianxing2": "我做的决定,便是天的旨意。", + "#rejianxiong_shen_caopi1": "孤之所长,继父之所长。", + "#rejianxiong_shen_caopi2": "乱世枭雄,哼,孤亦是。", + "#rerende_shen_caopi1": "这些都是孤赏赐给你的。", + "#rerende_shen_caopi2": "这些都是孤赏赐给你的。", + "#rezhiheng_shen_caopi1": "有些事情,还需多加思索。", + "#rezhiheng_shen_caopi2": "有些事情,还需多加思索。", + "#olluanji_shen_caopi1": "违逆我的,都该处罚。", + "#olluanji_shen_caopi2": "违逆我的,都该处罚。", + "#olfangquan_shen_caopi1": "此等小事,你们处理即可。", + "#olfangquan_shen_caopi2": "此等小事,你们处理即可。", }; diff --git a/character/huicui/voices.js b/character/huicui/voices.js index 492a2c6f4..08c1ad388 100644 --- a/character/huicui/voices.js +++ b/character/huicui/voices.js @@ -445,4 +445,18 @@ export default { "#dcshuliang1": "北伐鏖战正酣,此正需粮之时。", "#dcshuliang2": "粮草先于兵马而动,此军心之本。", "#dc_lifeng:die": "黍穗重丰,不见丞相还……", + "#dcfudou1": "既作困禽,何妨铤险以覆车?", + "#dcfudou2": "据将覆之巢,必作犹斗之困兽。", + "#sppanqin1": "百兽嘶鸣筋骨振,蛮王起兮万人随!", + "#sppanqin2": "呼勒格诗惹之民,召南中群雄复起!", + "#dctaji1": "仙途本寂寥,结发叹长生。", + "#dctaji2": "仙者不言,手执春风。", + "#dcqinghuang1": "上士无争,焉生妄心。", + "#dcqinghuang2": "心有草木,何畏荒芜?", + "#huomo_huzhao1": "行文挥毫,得心应手。", + "#huomo_huzhao2": "泼墨走笔,挥洒自如。", + "#llqshenwei1": "锋镝鸣手中,锐戟映秋霜。", + "#llqshenwei2": "红妆非我愿,学武觅封侯。", + "#wushuang_lvlingqi1": "猛将策良骥,长戟破敌营。", + "#wushuang_lvlingqi2": "杀气腾剑戟,严风卷戎装。", }; diff --git a/character/jsrg/skill.js b/character/jsrg/skill.js index 15cbc6fce..80f1272f4 100644 --- a/character/jsrg/skill.js +++ b/character/jsrg/skill.js @@ -6104,7 +6104,7 @@ const skills = { player.removeInvisibleSkill(skills); }, onremove: function (player, skill) { - lib.skill.sbyingmen.removeVisitors(player.getSkills("sbyingmen"), player); + lib.skill.sbyingmen.removeVisitors(player.getStorage("sbyingmen"), player); player.removeSkillBlocker("sbyingmen"); }, skillBlocker: function (skill, player) { diff --git a/character/jsrg/voices.js b/character/jsrg/voices.js index 6bea30181..db3a11e1a 100644 --- a/character/jsrg/voices.js +++ b/character/jsrg/voices.js @@ -2,4 +2,5 @@ export default { "#jsrg_zoushi:die": "年老色衰了吗……", "#jsrg_zhangren:die": "老臣,绝不事二主!", "#jsrg_huangzhong:die": "不得不服老啦~", + "#jsrg_liuhong:die": "权利的滋味,让人沉沦。", }; diff --git a/character/mobile/voices.js b/character/mobile/voices.js index d59214388..ca2be33d6 100644 --- a/character/mobile/voices.js +++ b/character/mobile/voices.js @@ -562,4 +562,40 @@ export default { "#scsanruo1": "小伤无碍,安心修养便可。", "#wangzun_old_yuanshu1": "这玉玺,当然是能者居之。", "#wangzun_old_yuanshu2": "我就是皇帝,我就是天!", + "#sbqingzheng_mb_caomao1": "朕虽不德,昧于大道,思与宇内共臻兹路。", + "#sbqingzheng_mb_caomao2": "愿遵前人教诲,为一国明帝贤君。", + "#rejiushi_mb_caomao1": "心忿无所表,下笔即成篇。", + "#rejiushi_mb_caomao2": "气幽但求醉,醒后寻复来。", + "#sbfangzhu_mb_caomao1": "卿当竭命纳忠,何为此逾矩之举!", + "#sbfangzhu_mb_caomao2": "朕继文帝风流,亦当效其权略。", + "#mbjuejin1": "朕宁拼一死,逆贼安敢一战!", + "#mbjuejin2": "朕安可坐受废辱,今日当与卿自出讨之!", + "#yanxiang:die": "若遇明主,或可青史留名……", + "#baoxin:die": "区区黄巾流寇,如何挡我?呃啊……", + "#jiangji:die": "洛水之誓,言犹在耳……咳咳咳……", + "#liwei:die": "安南重任,万不可轻之……", + "#binghuo1": "黄巾既起,必灭不义之师!", + "#binghuo2": "诛官杀吏,尽诛朝廷爪牙!", + "#paiyi_re_zhonghui1": "艾命不尊,死有余辜。", + "#paiyi_re_zhonghui2": "非我族类,其心必异。", + "#guanxing_re_jiangwei1": "知天易则观之,逆天难亦行之。", + "#guanxing_re_jiangwei2": "欲尽人事,亦先听天命。", + "#jixi_re_dengai1": "攻敌之不备,斩将夺辎!", + "#jixi_re_dengai2": "奇兵正攻,敌何能为?", + "#drlt_qingce1": "感明帝之恩,清君侧之贼。", + "#drlt_qingce2": "得太后手诏,清奸佞乱臣。", + "#reyingzi_re_heqi1": "人靠衣装马靠鞍!", + "#reyingzi_re_heqi2": "人靠衣装马靠鞍!", + "#qixi_re_heqi1": "可真是一把好刀啊!", + "#qixi_re_heqi2": "可真是一把好刀啊!", + "#xuanfeng_re_heqi1": "我的船队,要让全建业城的人都看见!", + "#xuanfeng_re_heqi2": "我的船队,要让全建业城的人都看见!", + "#jingong1": "若无老夫之谋,尔等皆化为腐土也。", + "#jingong2": "董贼旧部,可尽诛之!", + "#jijiang1_re_liushan1": "还望诸卿勠力同心,以保国祚。", + "#jijiang1_re_liushan2": "哪位爱卿愿意报效国家?", + "#reyingzi_re_sunben1": "有公瑾助我,可平天下。", + "#reyingzi_re_sunben2": "所到之处,战无不胜。", + "#yinghun_re_sunben1": "武烈之魂,助我扬名。", + "#yinghun_re_sunben2": "江东之主,众望所归。", }; diff --git a/character/offline/voices.js b/character/offline/voices.js index a08170d90..ec9e6c330 100644 --- a/character/offline/voices.js +++ b/character/offline/voices.js @@ -59,4 +59,12 @@ export default { "#manjuan": "漫卷纵酒,白首狂歌。", "#zuixiang": "懵懵醉乡中,天下心中藏。", "#sp_pangtong:die": "纵有治世才,难遇治世主……", + "#spmiewu1": "倾荡之势已成,石城尽在眼下", + "#spmiewu2": "吾军势如破竹,江东六郡唾手可得。", + "#gzshilu1": "以杀立威,谁敢反我?", + "#gzshilu2": "将这些乱臣贼子,尽皆诛之!", + "#gzxiongnve1": "当今天子乃我所立,他敢怎样?", + "#gzxiongnve2": "我兄弟三人同掌禁军,有何所惧?", + "#ns_lijue:die": "若无内讧,也不至如此。", + "#ns_fanchou:die": "唉,稚然疑心,甚重。", }; diff --git a/character/onlyOL/voices.js b/character/onlyOL/voices.js index 5e9177706..6f76c3cd2 100644 --- a/character/onlyOL/voices.js +++ b/character/onlyOL/voices.js @@ -29,4 +29,5 @@ export default { "#olsbshishou3": "吾居群士之首,可配剑履否?", "#ol_sb_yuanshao:die": "众人合而无力,徒负大义也……", "#ol_yufan:die": "唉,主公不能容我啊!", + "#ol_jianyong:die": "此景竟无言以对。", }; diff --git a/character/refresh/voices.js b/character/refresh/voices.js index 6d319673b..d6ea08008 100644 --- a/character/refresh/voices.js +++ b/character/refresh/voices.js @@ -586,4 +586,36 @@ export default { "#regongji1": "射石饮羽,弦无虚发!", "#regongji2": "驭马前行,弓急弦发!", "#repolu1": "斩敌复城,扬我江东军威!", + "#jianyan1": "开言纳谏,社稷之福。", + "#jianyan2": "如此如此,敌军自破!", + "#wusheng_re_guanzhang1": "青龙驰骋,恍若汉寿再世。", + "#wusheng_re_guanzhang2": "偃月幽光,恰如武圣冲阵。", + "#paoxiao_re_guanzhang1": "桓侯之子,当效父之勇烈!", + "#paoxiao_re_guanzhang2": "蛇矛在手,谁敢与我一战!", + "#rejianyan1": "此人之才,胜吾十倍。", + "#rejianyan2": "先生大才,请受此礼。", + "#xinpaiyi1": "蜀川三千里,皆由我一言决之!", + "#xinpaiyi2": "顺我者,封侯拜将!,逆我者,斧钺加身!", + "#jixi_ol_dengai1": "良田为济,神兵天降!", + "#jixi_ol_dengai2": "明至剑阁,暗袭蜀都!", + "#bazhen_ol_pangtong1": "八卦四象,阴阳运转。", + "#bazhen_ol_pangtong2": "离火艮山,皆随我用。", + "#rehuoji_ol_pangtong1": "火烧赤壁,曹贼必败。", + "#rehuoji_ol_pangtong2": "火计诱敌,江水助势。", + "#rekanpo_ol_pangtong1": "这些小伎俩,逃不出我的眼睛!", + "#rekanpo_ol_pangtong2": "卧龙之才,吾也略懂。", + "#gongxin_re_lvmeng1": "哼,早知如此。", + "#gongxin_re_lvmeng2": "洞若观火,运筹帷幄。", + "#rechanyuan1": "此咒甚重,怨念缠身。", + "#rechanyuan2": "不信吾法,无福之缘。", + "#guanxing_ol_jiangwei1": "星象相弦,此乃吉兆!", + "#guanxing_ol_jiangwei2": "星之分野,各有所属。", + "#jijiang1_ol_liushan1": "爱卿爱卿,快来护驾!", + "#jijiang1_ol_liushan2": "将军快替我,拦下此贼!", + "#sishu1": "蜀乐乡土,怎不思念?", + "#sishu2": "思乡心切,徘徊惶惶。", + "#reyingzi_re_sunce1": "策虽暗稚,窃有微志。", + "#reyingzi_re_sunce2": "收合流散,东据吴会。", + "#yinghun_re_sunce1": "东吴繁盛,望父亲可知。", + "#yinghun_re_sunce2": "父亲,吾定不负你期望!", }; diff --git a/character/sb/voices.js b/character/sb/voices.js index 4b35f4dd3..49685cb4c 100644 --- a/character/sb/voices.js +++ b/character/sb/voices.js @@ -221,4 +221,14 @@ export default { "#sbtianxiang1": "凤眸流盼,美目含情。", "#sbtianxiang2": "灿如春华,皎如秋月。", "#sb_xiaoqiao:die": "朱颜易改,初心永在……", + "#sbguanxing1": "明星皓月,前路通达。", + "#sbguanxing2": "冷夜孤星,正如时局啊。", + "#sbkongcheng1": "城下千军万马,我亦谈笑自若。", + "#sbkongcheng2": "仲达可愿与我城中一叙?", + "#sbduojing1": "快舟轻甲,速袭其后!", + "#sbduojing2": "复取荆州,尽在掌握!", + "#sbyingzi_sb_sunce1": "今与公瑾相约,共图天下霸业!", + "#sbyingzi_sb_sunce2": "空言岂尽意,跨马战沙场!", + "#yinghun_sb_sunce1": "父亲英魂犹在,助我定乱平贼!", + "#yinghun_sb_sunce2": "扫尽门庭之寇,贼自畏我之威!", }; diff --git a/character/shenhua/skill.js b/character/shenhua/skill.js index 6833b2466..1baf89218 100644 --- a/character/shenhua/skill.js +++ b/character/shenhua/skill.js @@ -77,7 +77,7 @@ const skills = { lose: false, delay: false, async precontent(event, trigger, player) { - var result = event.result; + const result = event.result; if (result.targets.length > 0) result.card = get.autoViewAs({ name: "tiesuo" }, result.cards); }, async content(event, trigger, player) { @@ -104,8 +104,8 @@ const skills = { if (player.hasSkill("dcwanglie2", null, null, false)) return true; if (["wuzhong", "kaihua", "dongzhuxianji"].includes(event.card.name)) return false; player._wanglie_temp = true; - var eff = 0; - for (var i of event.targets) { + let eff = 0; + for (const i of event.targets) { eff += get.effect(i, event.card, player, player); } delete player._wanglie_temp; @@ -167,13 +167,13 @@ const skills = { //if(tag=='pretao') return true; if (player._wanglie_temp) return false; player._wanglie_temp = true; - var bool = (function () { + const bool = (function () { if (["wuzhong", "kaihua", "dongzhuxianji"].includes(arg.card.name)) return false; if (get.attitude(player, arg.target) > 0 || !player.isPhaseUsing()) return false; - var cards = player.getCards("h", function (card) { + let cards = player.getCards("h", function (card) { return card != arg.card && (!arg.card.cards || !arg.card.cards.includes(card)); }); - var sha = player.getCardUsable("sha"); + let sha = player.getCardUsable("sha"); if (arg.card.name == "sha") sha--; cards = cards.filter(function (card) { if (card.name == "sha" && sha <= 0) return false; @@ -214,32 +214,30 @@ const skills = { if (event.name == "cardsGotoSpecial") return !event.notrigger; return true; }, - direct: true, usable: 1, + async cost(event, trigger, player) { + event.result = await player + .chooseTarget(get.prompt("olliangyin"), "选择一名其他角色,你与其各摸一张牌", lib.filter.notMe) + .set("ai", function (target) { + const player = _status.event.player, + num = player.getExpansions("olkongsheng").length - 1; + const att = get.attitude(player, target); + if (att <= 0) return 0; + if (target.countCards("h") == num && target.isDamaged() && get.recoverEffect(target, player, player) > 0) return 3 * att; + return att; + }) + .forResult(); + }, async content(event, trigger, player) { - const { - result: { bool, targets }, - } = await player.chooseTarget(get.prompt("olliangyin"), "选择一名其他角色,你与其各摸一张牌", lib.filter.notMe).set("ai", function (target) { - var player = _status.event.player, - num = player.getExpansions("olkongsheng").length - 1; - var att = get.attitude(player, target); - if (att <= 0) return 0; - if (target.countCards("h") == num && target.isDamaged() && get.recoverEffect(target, player, player) > 0) return 3 * att; - return att; - }); - if (bool) { - const target = targets[0]; - event.target = target; - player.logSkill("olliangyin", target); - await game.asyncDraw([player, target].sortBySeat()); - } else return; + const target = event.targets[0]; + player.logSkill("olliangyin", target); + await game.asyncDraw([player, target].sortBySeat()); await game.asyncDelayx(); let num = player.getExpansions("olkongsheng").length; let check = player => { if (!player.isIn() || player.isHealthy()) return false; return player.countCards("h") == num; }; - const { target } = event; if (check(player) || check(target)) { const choiceList = ["令自己回复1点体力", "令" + get.translation(target) + "回复1点体力"]; const choices = []; @@ -255,9 +253,9 @@ const skills = { .set("choiceList", choiceList) .set("prompt", "良姻:是否令一名角色回复体力?") .set("ai", function () { - var player = _status.event.player, + const player = _status.event.player, target = _status.event.getParent().target; - var list = _status.event.controls.slice(0), + let list = _status.event.controls.slice(0), eff1 = 0, eff2 = 0; if (list.includes("选项一")) eff1 = get.recoverEffect(player, player, player); @@ -277,74 +275,71 @@ const skills = { trigger: { global: ["loseAfter", "equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"], }, - direct: true, filter(event, player) { return game.hasPlayer(function (current) { - var evt = event.getl(current); + const evt = event.getl(current); return evt && (evt.xs.length > 0 || evt.ss.length > 0); }); }, usable: 1, - async content(event, trigger, player) { + async cost(event, trigger, player) { if (!player.countCards("he") || !game.hasPlayer(current => current != player && current.countCards("he") > 0)) return; - const { - result: { bool, targets, cards }, - } = await player.chooseCardTarget({ - prompt: get.prompt("olliangyin"), - prompt2: "弃置一张牌,并令一名其他角色也弃置一张牌", - position: "he", - filterCard: lib.filter.cardDiscardable, - filterTarget(card, player, target) { - return target != player && target.countCards("he") > 0; - }, - ai1(card) { - let player = _status.event.player; - if (_status.event.me) { - if (get.position(card) === _status.event.me) return 12 - player.hp - get.value(card); - return 0; - } - return 5 - get.value(card); - }, - ai2(target) { - let player = _status.event.player, - att = get.attitude(player, target); - if (att > 0 && (_status.event.me || target.isHealthy())) return -att; - if ( - att > 0 && - (target.countCards("he") > target.hp || - target.hasCard(function (card) { - return get.value(card, target) <= 0; - }, "e")) - ) - return att; - return -att; - }, - me: (() => { - if (player.isHealthy() || get.recoverEffect(player, player, _status.event.player) <= 0) return false; - let ph = player.countCards("h"), - num = player.getExpansions("olkongsheng").length; - if (ph === num) { - if (player.hasSkillTag("noh")) return "h"; - return "e"; - } - if (ph - 1 === num) return "h"; - return false; - })(), - }); - if (bool) { - const target = targets[0]; - event.target = target; - player.logSkill("olliangyin_gain", target); - await player.discard(cards); - await target.chooseToDiscard("he", true); - } else return; + event.result = await player + .chooseCardTarget({ + prompt: get.prompt("olliangyin"), + prompt2: "弃置一张牌,并令一名其他角色也弃置一张牌", + position: "he", + filterCard: lib.filter.cardDiscardable, + filterTarget(card, player, target) { + return target != player && target.countCards("he") > 0; + }, + ai1(card) { + let player = _status.event.player; + if (_status.event.me) { + if (get.position(card) === _status.event.me) return 12 - player.hp - get.value(card); + return 0; + } + return 5 - get.value(card); + }, + ai2(target) { + let player = _status.event.player, + att = get.attitude(player, target); + if (att > 0 && (_status.event.me || target.isHealthy())) return -att; + if ( + att > 0 && + (target.countCards("he") > target.hp || + target.hasCard(function (card) { + return get.value(card, target) <= 0; + }, "e")) + ) + return att; + return -att; + }, + me: (() => { + if (player.isHealthy() || get.recoverEffect(player, player, _status.event.player) <= 0) return false; + let ph = player.countCards("h"), + num = player.getExpansions("olkongsheng").length; + if (ph === num) { + if (player.hasSkillTag("noh")) return "h"; + return "e"; + } + if (ph - 1 === num) return "h"; + return false; + })(), + }) + .forResult(); + }, + async content(event, trigger, player) { + const target = event.targets[0]; + player.logSkill("olliangyin_gain", target); + await player.discard(event.cards); + await target.chooseToDiscard("he", true); await game.asyncDelayx(); - let num = player.getExpansions("olkongsheng").length; - let check = player => { + const num = player.getExpansions("olkongsheng").length; + const check = player => { if (!player.isIn() || player.isHealthy()) return false; return player.countCards("h") == num; }; - const { target } = event; if (check(player) || check(target)) { const choiceList = ["令自己回复1点体力", "令" + get.translation(target) + "回复1点体力"]; const choices = []; @@ -360,9 +355,9 @@ const skills = { .set("choiceList", choiceList) .set("prompt", "良姻:是否令一名角色回复体力?") .set("ai", function () { - var player = _status.event.player, + const player = _status.event.player, target = _status.event.getParent().target; - var list = _status.event.controls.slice(0), + let list = _status.event.controls.slice(0), eff1 = 0, eff2 = 0; if (list.includes("选项一")) eff1 = get.recoverEffect(player, player, player); @@ -381,45 +376,44 @@ const skills = { olkongsheng: { audio: "kongsheng", trigger: { player: "phaseZhunbeiBegin" }, - direct: true, filter(event, player) { return player.countCards("he") > 0; }, - content() { - "step 0"; - player.chooseCard("he", [1, player.countCards("he")], get.prompt("olkongsheng"), "将任意张牌作为“箜”置于武将牌上").set("ai", function (card) { - var player = _status.event.player, - num = player.getExpansions("olkongsheng") + ui.selected.cards.length; - if ( - ui.selected.cards.length > 0 && - game.hasPlayer(function (current) { - if (current.isHealthy() || get.recoverEffect(current, player, player) <= 0) return false; - var num2 = - current.countCards("h", function (card) { - if (current != player) return true; - return !ui.selected.cards.includes(card); - }) + 1; - return num == num2; - }) - ) - return 0; - if (get.type(card, null, false) == "equip") { - for (var i of ui.selected.cards) { - if (get.type(i, null, false) == "equip") return 0; + async cost(event, trigger, player) { + event.result = await player + .chooseCard("he", [1, player.countCards("he")], get.prompt("olkongsheng"), "将任意张牌作为“箜”置于武将牌上") + .set("ai", function (card) { + const player = _status.event.player, + num = player.getExpansions("olkongsheng") + ui.selected.cards.length; + if ( + ui.selected.cards.length > 0 && + game.hasPlayer(function (current) { + if (current.isHealthy() || get.recoverEffect(current, player, player) <= 0) return false; + const num2 = + current.countCards("h", function (card) { + if (current != player) return true; + return !ui.selected.cards.includes(card); + }) + 1; + return num == num2; + }) + ) + return 0; + if (get.type(card, null, false) == "equip") { + for (const i of ui.selected.cards) { + if (get.type(i, null, false) == "equip") return 0; + } + return 5 - get.value(card); } - return 5 - get.value(card); - } - if (!player.hasValueTarget(card)) return 1; - return 0; - }); - "step 1"; - if (result.bool) { - player.logSkill("olkongsheng"); - player.addToExpansion(result.cards, player, "give").gaintag.add("olkongsheng"); - } + if (!player.hasValueTarget(card)) return 1; + return 0; + }) + .forResult(); + }, + async content(event, trigger, player) { + player.addToExpansion(event.cards, player, "give").gaintag.add("olkongsheng"); }, onremove(player, skill) { - var cards = player.getExpansions(skill); + const cards = player.getExpansions(skill); if (cards.length) player.loseToDiscardpile(cards); }, intro: { @@ -439,42 +433,36 @@ const skills = { }).length > 0 ); }, - content() { - "step 0"; - var cards = player.getExpansions("olkongsheng").filter(function (card) { + async content(event, trigger, player) { + let cards = player.getExpansions("olkongsheng").filter(function (card) { return get.type(card, false) != "equip"; }); - if (cards.length) player.gain(cards, "gain2"); - "step 1"; - var cards = player.getExpansions("olkongsheng"); - if (cards.length > 0) { - player.chooseTarget(true, "令一名角色使用以下装备牌", get.translation(cards)).set("ai", function (target) { - var player = _status.event.player; - return get.effect(target, { name: "losehp" }, player, player); - }); - } else event.finish(); - "step 2"; - var target = result.targets[0]; - event.target = target; - player.line(target, "green"); - "step 3"; - var cards = player.getExpansions("olkongsheng").filter(function (i) { - return target.hasUseTarget(i); + if (cards.length) await player.gain(cards, "gain2"); + cards = player.getExpansions("olkongsheng"); + if (cards.length <= 0) return; + const { result } = await player.chooseTarget(true, "令一名角色使用以下装备牌", get.translation(cards)).set("ai", function (target) { + const player = _status.event.player; + return get.effect(target, { name: "losehp" }, player, player); }); - if (cards.length == 1) { - event._result = { bool: true, links: cards }; - } else if (cards.length) - target.chooseButton(true, ["选择要使用的装备牌", cards]).set("ai", function (button) { - return get.order(button.link); + const target = result.targets[0]; + player.line(target, "green"); + while (true) { + const cards = player.getExpansions("olkongsheng").filter(function (i) { + return target.hasUseTarget(i); }); - else event.goto(5); - "step 4"; - if (result.bool) { - target.chooseUseTarget(result.links[0], true); - event.goto(3); + if (cards.length) { + const card = cards[0]; + if (cards.length > 1) { + const { result } = await target.chooseButton(true, ["选择要使用的装备牌", cards]).set("ai", function (button) { + return get.order(button.link); + }); + if (!result.bool) break; + card = result.links[0]; + } + await target.chooseUseTarget(card, true); + } else break; } - "step 5"; - target.loseHp(); + await target.loseHp(); }, }, }, @@ -482,7 +470,6 @@ const skills = { //新毌丘俭 zhengrong: { trigger: { player: "useCardToPlayered" }, - direct: true, audio: "drlt_zhenrong", filter(event, player) { if (!event.isFirstTarget) return false; @@ -493,31 +480,29 @@ const skills = { }); return false; }, - content() { - "step 0"; - player + async cost(event, trigger, player) { + event.result = await player .chooseTarget(get.prompt("zhengrong"), "将一名手牌数不小于你的目标角色的一张牌置于你的武将牌上,成为「荣」", function (card, player, target) { return _status.event.targets.includes(target) && target.countCards("h") >= player.countCards("h") && target.countCards("he") > 0; }) .set("ai", function (target) { return (1 - get.attitude(_status.event.player, target)) / target.countCards("he"); }) - .set("targets", trigger.targets); - "step 1"; + .set("targets", trigger.targets) + .forResult(); + }, + async content(event, trigger, player) { + const target = event.targets[0]; + const next = player.choosePlayerCard(target, "he", true); + next.ai = get.buttonValue; + const { result } = await next; if (result.bool) { - var target = result.targets[0]; - event.target = result.targets[0]; - player.logSkill("zhengrong", target); - player.choosePlayerCard(target, "he", true).ai = get.buttonValue; - } else event.finish(); - "step 2"; - if (result.bool) { - var card = result.links[0]; + const card = result.links[0]; player.addToExpansion(card, "give", "log", target).gaintag.add("zhengrong"); } }, onremove(player, skill) { - var cards = player.getExpansions(skill); + const cards = player.getExpansions(skill); if (cards.length) player.loseToDiscardpile(cards); }, marktext: "荣", @@ -538,44 +523,43 @@ const skills = { filter(event, player) { return player.getExpansions("zhengrong").length >= 3; }, - content() { - "step 0"; + async content(event, trigger, player) { player.awakenSkill("hongju"); - var cards = player.getExpansions("zhengrong"); - if (!cards.length || !player.countCards("h")) { - event.goto(2); - return; + const cards = player.getExpansions("zhengrong"); + if (cards.length && player.countCards("h")) { + const next = player.chooseToMove("征荣:是否交换“荣”和手牌?"); + next.set("list", [ + [get.translation(player) + "(你)的“荣”", cards], + ["手牌区", player.getCards("h")], + ]); + next.set("filterMove", function (from, to) { + return typeof to != "number"; + }); + next.set("processAI", function (list) { + const player = _status.event.player, + cards = list[0][1].concat(list[1][1]).sort(function (a, b) { + return get.value(a) - get.value(b); + }), + cards2 = cards.splice(0, player.getExpansions("zhengrong").length); + return [cards2, cards]; + }); + const { result } = await next; + if (result.bool) { + const pushs = result.moved[0], + gains = result.moved[1]; + pushs.removeArray(player.getExpansions("zhengrong")); + gains.removeArray(player.getCards("h")); + if (pushs.length && pushs.length == gains.length) { + const next = player.addToExpansion(pushs); + next.gaintag.add("zhengrong"); + await next; + await player.gain(gains, "gain2", "log"); + } + } } - var next = player.chooseToMove("征荣:是否交换“荣”和手牌?"); - next.set("list", [ - [get.translation(player) + "(你)的“荣”", cards], - ["手牌区", player.getCards("h")], - ]); - next.set("filterMove", function (from, to) { - return typeof to != "number"; - }); - next.set("processAI", function (list) { - var player = _status.event.player, - cards = list[0][1].concat(list[1][1]).sort(function (a, b) { - return get.value(a) - get.value(b); - }), - cards2 = cards.splice(0, player.getExpansions("zhengrong").length); - return [cards2, cards]; - }); - "step 1"; - if (result.bool) { - var pushs = result.moved[0], - gains = result.moved[1]; - pushs.removeArray(player.getExpansions("zhengrong")); - gains.removeArray(player.getCards("h")); - if (!pushs.length || pushs.length != gains.length) return; - player.addToExpansion(pushs).gaintag.add("zhengrong"); - player.gain(gains, "gain2", "log"); - } - "step 2"; - player.addSkills("qingce"); + await player.addSkills("qingce"); game.log(player, "获得了技能", "#g【清侧】"); - player.loseMaxHp(); + await player.loseMaxHp(); }, ai: { combo: "zhengrong", @@ -605,7 +589,7 @@ const skills = { ai: { result: { target(player, target) { - var att = get.attitude(player, target); + const att = get.attitude(player, target); if ( att > 0 && (target.countCards("j") > 0 || @@ -625,13 +609,11 @@ const skills = { return "选择弃置一张手牌,获得" + get.translation(links[0]) + "并弃置一名角色装备区或判定区内的一张牌"; }, }, - contentx() { - "step 0"; - var card = lib.skill.qingce_backup.card; - player.gain(card, "gain2", "log"); - "step 1"; - if (target.countDiscardableCards(player, "ej") > 0) { - player.discardPlayerCard("ej", true, target); + async contentx(event, trigger, player) { + const card = lib.skill.qingce_backup.card; + await player.gain(card, "gain2", "log"); + if (event.target.countDiscardableCards(player, "ej") > 0) { + await player.discardPlayerCard("ej", true, event.target); } }, ai: { @@ -641,7 +623,7 @@ const skills = { player(player) { if ( game.hasPlayer(function (current) { - var att = get.attitude(player, current); + const att = get.attitude(player, current); if ((att > 0 && current.countCards("j") > 0) || (att < 0 && current.countCards("e") > 0)) return true; return false; }) @@ -666,19 +648,17 @@ const skills = { filter(event, player) { return event.player != player && event.player.countCards("h") > player.countCards("h"); }, - direct: true, - content() { - "step 0"; - player.choosePlayerCard("hej", get.prompt("drlt_zhenrong"), trigger.player).set("ai", function (button) { + async cost(event, trigger, player) { + const { result } = await player.choosePlayerCard("hej", get.prompt("drlt_zhenrong"), trigger.player).set("ai", function (button) { return -get.attitude(player, trigger.player) + 1; }); - "step 1"; if (result && result.links && result.links.length) { - player.line(player, trigger.player); - player.logSkill("drlt_zhenrong"); - player.addToExpansion(result.links, trigger.player, "give", "log").gaintag.add("drlt_zhenrong"); + event.result = result; } }, + async content(event, trigger, player) { + player.addToExpansion(event.cards, trigger.player, "give", "log").gaintag.add("drlt_zhenrong"); + }, }, drlt_hongju: { skillAnimation: true, @@ -694,43 +674,42 @@ const skills = { filter(event, player) { return player.getExpansions("drlt_zhenrong").length >= 3 && game.dead.length > 0; }, - content() { - "step 0"; + async content(event, trigger, player) { player.awakenSkill("drlt_hongju"); - var cards = player.getExpansions("drlt_zhenrong"); - if (!cards.length || !player.countCards("h")) { - event.goto(2); - return; + const cards = player.getExpansions("drlt_zhenrong"); + if (cards.length && player.countCards("h")) { + const next = player.chooseToMove("征荣:是否交换“荣”和手牌?"); + next.set("list", [ + [get.translation(player) + "(你)的“荣”", cards], + ["手牌区", player.getCards("h")], + ]); + next.set("filterMove", function (from, to) { + return typeof to != "number"; + }); + next.set("processAI", function (list) { + const player = _status.event.player, + cards = list[0][1].concat(list[1][1]).sort(function (a, b) { + return get.value(a) - get.value(b); + }), + cards2 = cards.splice(0, player.getExpansions("drlt_zhenrong").length); + return [cards2, cards]; + }); + const { result } = await next; + if (result.bool) { + const pushs = result.moved[0], + gains = result.moved[1]; + pushs.removeArray(player.getExpansions("drlt_zhenrong")); + gains.removeArray(player.getCards("h")); + if (pushs.length && pushs.length == gains.length) { + const next = player.addToExpansion(pushs); + next.gaintag.add("drlt_zhenrong"); + await next; + await player.gain(gains, "gain2", "log"); + } + } } - var next = player.chooseToMove("征荣:是否交换“荣”和手牌?"); - next.set("list", [ - [get.translation(player) + "(你)的“荣”", cards], - ["手牌区", player.getCards("h")], - ]); - next.set("filterMove", function (from, to) { - return typeof to != "number"; - }); - next.set("processAI", function (list) { - var player = _status.event.player, - cards = list[0][1].concat(list[1][1]).sort(function (a, b) { - return get.value(a) - get.value(b); - }), - cards2 = cards.splice(0, player.getExpansions("drlt_zhenrong").length); - return [cards2, cards]; - }); - "step 1"; - if (result.bool) { - var pushs = result.moved[0], - gains = result.moved[1]; - pushs.removeArray(player.getExpansions("drlt_zhenrong")); - gains.removeArray(player.getCards("h")); - if (!pushs.length || pushs.length != gains.length) return; - player.addToExpansion(pushs).gaintag.add("drlt_zhenrong"); - player.gain(gains, "gain2", "log"); - } - "step 2"; - player.addSkills("drlt_qingce"); - player.loseMaxHp(); + await player.addSkills("drlt_qingce"); + await player.loseMaxHp(); }, ai: { combo: "drlt_zhenrong", @@ -745,16 +724,14 @@ const skills = { filterTarget(card, player, target) { return target.countDiscardableCards(player, "ej") > 0; }, - content() { - "step 0"; - player.chooseCardButton(player.getExpansions("drlt_zhenrong"), 1, "请选择需要弃置的“荣”", true).ai = function (button) { - return 6 - get.value(button.link); - }; - "step 1"; + async content(event, trigger, player) { + const next = player.chooseCardButton(player.getExpansions("drlt_zhenrong"), 1, "请选择需要弃置的“荣”", true); + next.ai = button => 6 - get.value(button.link); + const { result } = await next; if (result.bool) { - var cards = result.links; + const cards = result.links; player.loseToDiscardpile(cards); - player.discardPlayerCard(target, "ej", 1, true); + player.discardPlayerCard(event.target, "ej", 1, true); } }, ai: { @@ -773,35 +750,32 @@ const skills = { trigger: { player: "phaseJieshuBegin", }, - direct: true, - content() { - "step 0"; - player + async cost(event, trigger, player) { + event.result = await player .chooseTarget(get.prompt2("drlt_zhenggu"), function (card, player, target) { //if(target.storage.drlt_zhenggu_mark&&target.storage.drlt_zhenggu_mark.includes(player)) return false; return target != player; }) .set("ai", function (target) { - var player = _status.event.player; + const player = _status.event.player; //if(target.storage.drlt_zhenggu_mark&&target.storage.drlt_zhenggu_mark.includes(player)) return 0; - var num = Math.min(5, player.countCards("h")) - target.countCards("h"); - var att = get.attitude(player, target); + const num = Math.min(5, player.countCards("h")) - target.countCards("h"); + const att = get.attitude(player, target); return num * att; - }); - "step 1"; - if (result.bool) { - var target = result.targets[0]; - player.logSkill("drlt_zhenggu", target); - player.addSkill("drlt_zhenggu2"); - target.addSkill("drlt_zhenggu_mark"); - target.storage.drlt_zhenggu_mark.push(player); - target.markSkill("drlt_zhenggu_mark"); - lib.skill.drlt_zhenggu.sync(player, target); - } + }) + .forResult(); + }, + async content(event, trigger, player) { + const target = event.targets[0]; + player.addSkill("drlt_zhenggu2"); + target.addSkill("drlt_zhenggu_mark"); + target.storage.drlt_zhenggu_mark.push(player); + target.markSkill("drlt_zhenggu_mark"); + lib.skill.drlt_zhenggu.sync(player, target); }, sync(player, target) { - var num = player.countCards("h"); - var num2 = target.countCards("h"); + const num = player.countCards("h"); + const num2 = target.countCards("h"); if (num < num2) { target.chooseToDiscard(num2 - num, true, "h"); } else target.drawTo(Math.min(5, num)); @@ -818,7 +792,7 @@ const skills = { filter(event, player) { return event.player.storage.drlt_zhenggu_mark && event.player.storage.drlt_zhenggu_mark.includes(player); }, - content() { + async content(event, trigger, player) { while (trigger.player.storage.drlt_zhenggu_mark.includes(player)) { trigger.player.storage.drlt_zhenggu_mark.remove(player); } @@ -842,7 +816,7 @@ const skills = { player: "phaseJieshuBegin", }, check(event, player) { - var num = 0; + let num = 0; if ( player.hasHistory("lose", function (evt) { return evt.type == "discard"; @@ -855,7 +829,7 @@ const skills = { return true; }, prompt(event, player) { - var num = 3; + let num = 3; if ( player.hasHistory("lose", function (evt) { return evt.type == "discard"; @@ -866,87 +840,79 @@ const skills = { if (!player.getStat("damage")) num--; return get.prompt("xinfu_zuilun") + "(可获得" + get.cnNumber(num) + "张牌)"; }, - content() { + async content(event, trigger, player) { "step 0"; - event.num = 0; - event.cards = get.cards(3); - game.cardsGotoOrdering(cards); + let num = 0; + const cards = get.cards(3); + await game.cardsGotoOrdering(cards); if ( player.hasHistory("lose", function (evt) { return evt.type == "discard"; }) ) - event.num++; - if (!player.isMinHandcard()) event.num++; - if (!player.getStat("damage")) event.num++; - "step 1"; - if (event.num == 0) { - player.gain(event.cards, "draw"); - event.finish(); - } else { - var prompt = "罪论:将" + get.cnNumber(num) + "张牌置于牌堆顶"; - if (num < 3) prompt += "并获得其余的牌"; - var next = player.chooseToMove(prompt, true); - if (num < 3) { - next.set("list", [["牌堆顶", cards], ["获得"]]); - next.set("filterMove", function (from, to, moved) { - if (to == 1 && moved[0].length <= _status.event.num) return false; - return true; - }); - next.set("filterOk", function (moved) { - return moved[0].length == _status.event.num; - }); - } else { - next.set("list", [["牌堆顶", cards]]); - } - next.set("num", num); - next.set("processAI", function (list) { - var check = function (card) { - var player = _status.event.player; - var next = player.next; - var att = get.attitude(player, next); - var judge = next.getCards("j")[tops.length]; - if (judge) { - return get.judge(judge)(card) * att; - } - return next.getUseValue(card) * att; - }; - var cards = list[0][1].slice(0), - tops = []; - while (tops.length < _status.event.num) { - list.sort(function (a, b) { - return check(b) - check(a); - }); - tops.push(cards.shift()); - } - return [tops, cards]; + num++; + if (!player.isMinHandcard()) num++; + if (!player.getStat("damage")) num++; + if (num == 0) { + await player.gain(cards, "draw"); + return; + } + let prompt = "罪论:将" + get.cnNumber(num) + "张牌置于牌堆顶"; + if (num < 3) prompt += "并获得其余的牌"; + const chooseToMove = player.chooseToMove(prompt, true); + if (num < 3) { + chooseToMove.set("list", [["牌堆顶", cards], ["获得"]]); + chooseToMove.set("filterMove", function (from, to, moved) { + if (to == 1 && moved[0].length <= _status.event.num) return false; + return true; }); - } - "step 2"; - if (result.bool) { - var list = result.moved[0]; - var num = list.length - 1; - for (var i = 0; i < list.length; i++) { - event.cards.remove(list[num - i]); - ui.cardPile.insertBefore(list[num - i], ui.cardPile.firstChild); - } - } - "step 3"; - game.updateRoundNumber(); - if (event.cards.length) { - player.gain(event.cards, "draw"); - event.finish(); - } else { - player.chooseTarget("请选择一名角色,与其一同失去1点体力", true, function (card, player, target) { - return target != player; - }).ai = function (target) { - return -get.attitude(_status.event.player, target); + chooseToMove.set("filterOk", function (moved) { + return moved[0].length == _status.event.num; + }); + } else chooseToMove.set("list", [["牌堆顶", cards]]); + chooseToMove.set("num", num); + chooseToMove.set("processAI", function (list) { + const check = function (card) { + const player = _status.event.player; + const next = player.next; + const att = get.attitude(player, next); + const judge = next.getCards("j")[tops.length]; + if (judge) { + return get.judge(judge)(card) * att; + } + return next.getUseValue(card) * att; }; + const cards = list[0][1].slice(0), + tops = []; + while (tops.length < _status.event.num) { + list.sort(function (a, b) { + return check(b) - check(a); + }); + tops.push(cards.shift()); + } + return [tops, cards]; + }); + let result = await chooseToMove.forResult(); + if (result.bool) { + const list = result.moved[0]; + cards.removeArray(list); + await game.cardsGotoPile(list.reverse(), "insert"); } - "step 4"; + game.updateRoundNumber(); + if (cards.length) { + await player.gain(cards, "draw"); + return; + } + const chooseTarget = player.chooseTarget("请选择一名角色,与其一同失去1点体力", true, function (card, player, target) { + return target != player; + }); + chooseTarget.ai = function (target) { + return -get.attitude(_status.event.player, target); + }; + result = await chooseTarget.forResult(); player.line(result.targets[0], "fire"); - player.loseHp(); - result.targets[0].loseHp(); + await player.loseHp(); + await result.targets[0].loseHp(); }, }, xinfu_fuyin: { @@ -966,7 +932,7 @@ const skills = { ); }); }, - content() { + async content(event, trigger, player) { trigger.getParent().excluded.add(player); }, ai: { @@ -1022,7 +988,7 @@ const skills = { filter(event, player) { return !player.isLinked(); }, - content() { + async content(event, trigger, player) { trigger.cancel(); }, }, @@ -1045,9 +1011,8 @@ const skills = { filter(event, player) { return player.hasEnabledSlot(1) || player.hasEnabledSlot(2) || player.hasEnabledSlot(5) || player.hasEnabledSlot("horse"); }, - content() { - "step 0"; - player.chooseToDisable(true).set("ai", function (event, player, list) { + async content(event, trigger, player) { + const { control } = await player.chooseToDisable(true).set("ai", function (event, player, list) { if (list.includes("equip2")) return "equip2"; if ( list.includes("equip1") && @@ -1065,9 +1030,8 @@ const skills = { }) > 1 ) return "equip5"; - }); - "step 1"; - switch (result.control) { + }).forResult(); + switch (control) { case "equip1": player.addTempSkill("drlt_jueyan1"); break; @@ -1154,12 +1118,10 @@ const skills = { filter(event, player) { return !player.hasEnabledSlot() || player.hp == 1; }, - content() { - "step 0"; + async content(event, trigger, player) { player.awakenSkill("drlt_poshi"); - player.loseMaxHp(); - "step 1"; - var num = player.maxHp - player.countCards("h"); + await player.loseMaxHp(); + const num = player.maxHp - player.countCards("h"); if (num > 0) player.draw(num); player.changeSkills(["drlt_huairou"], ["drlt_jueyan"]); }, @@ -1174,8 +1136,8 @@ const skills = { if (!_status.event.player.canEquip(card)) return 5; return 3 - get.value(card); }, - content() { - player.recast(cards); + async content(event, trigger, player) { + player.recast(event.cards); }, discard: false, lose: false, @@ -2419,7 +2381,7 @@ const skills = { if (cards.length) player.loseToDiscardpile(cards); }, group: ["nzry_mingren_1", "nzry_mingren_2"], - ai:{ + ai: { combo: "nzry_zhenliang", }, subSkill: { diff --git a/character/shenhua/voices.js b/character/shenhua/voices.js index 2516cd2f9..ae0b2e808 100644 --- a/character/shenhua/voices.js +++ b/character/shenhua/voices.js @@ -240,4 +240,22 @@ export default { "#yinghun_ol_sunjian2": "贼寇草莽,我且出战。", "#xueyi_re_yuanshao1": "崇王攘夷,生长尊贵。", "#xueyi_re_yuanshao2": "衣冠华胄,宜蒙优免。", + "#chanyuan1": "不识天数,在劫难逃。", + "#chanyuan2": "凡人仇怨,皆由心生。", + "#guanxing_jiangwei1": "继丞相之遗志,讨篡汉之逆贼!", + "#guanxing_jiangwei2": "克复中原,指日可待!", + "#jijiang1_liushan1": "匡扶汉室,谁敢出战!", + "#jijiang1_liushan2": "谁来替朕出战!", + "#jixi1": "攻其无备,出其不意!", + "#jixi2": "偷渡阴平,直取蜀汉!", + "#reyingzi_sunce1": "尔等看好了!", + "#reyingzi_sunce2": "公瑾,助我决一死战!", + "#drlt_qingce1": "感明帝之恩,清君侧之贼。", + "#drlt_qingce2": "得太后手诏,清奸佞乱臣。", + "#rejizhi_lukang1": "智父安能有愚子乎?", + "#rejizhi_lukang2": "智父安能有愚子乎?", + "#drlt_huairou1": "各保分界,无求细利。", + "#drlt_huairou2": "胸怀千万,彰其德,包其柔。", + "#shensu11": "吾善于千里袭人!", + "#shensu12": "取汝首级,有如探囊取物!", }; diff --git a/character/shiji/voices.js b/character/shiji/voices.js index b853b5f3d..ea5e54c77 100644 --- a/character/shiji/voices.js +++ b/character/shiji/voices.js @@ -219,4 +219,12 @@ export default { "#mjmouzhi1": "潜谋于无形,胜于不争不费。", "#mjmouzhi2": "欲思其成,必虑其败也。", "#sp_xunchen:die": "袁公不济,吾自当以死继之……", + "#gonghuan1": "曹魏势大,吴蜀当共拒之。", + "#gonghuan2": "两国得此联姻,邦交更当稳固。", + "#mouli1": "澄汰王室,迎立宗子!", + "#mouli2": "僣孽为害,吾岂可谋而不行?", + "#xuancun1": "阿斗年幼,望子龙将军仔细!", + "#xuancun2": "今得见将军,此儿有望生矣。", + "#spmiewu1": "倾荡之势已成,石城尽在眼下", + "#spmiewu2": "吾军势如破竹,江东六郡唾手可得。", }; diff --git a/character/sp/voices.js b/character/sp/voices.js index fceda5a22..f03862186 100644 --- a/character/sp/voices.js +++ b/character/sp/voices.js @@ -700,4 +700,58 @@ export default { "#shuangren2": "仲国大将纪灵在此!", "#shangyi1": "大丈夫为人坦荡,看下手牌算什么。", "#shangyi2": "敌情已了然于胸,即刻出发!", + "#oltianhou_spade": "月离于毕,俾滂沱矣。", + "#oltianhou_heart": "七月流火,涸我山泽。", + "#oltianhou_club": "雪瀑寒霜落,霜下可折竹。", + "#oltianhou_diamond": "云雾弥野,如夜之幽。", + "#olxieju1": "今举大义,誓与仲恭共死。", + "#olxieju2": "天降大任,当与志士同忾。", + "#olfeibai1": "字之体势,一笔而成。", + "#olfeibai2": "超前绝伦,独步无双。", + "#sppanqin1": "百兽嘶鸣筋骨振,蛮王起兮万人随!", + "#sppanqin2": "呼勒格诗惹之民,召南中群雄复起!", + "#weishu1": "水来土掩,兵来将挡。", + "#weishu2": "吴人来犯,当用心戒备。", + "#lingren_jianxiong1": "且收此弩箭,不日奉还。", + "#lingren_xingshang1": "此刀枪军械,尽归我有。", + "#tiaoxin_xiahouba1": "跪下受降,饶你不死!", + "#tiaoxin_xiahouba2": "黄口小儿,可听过将军名号?", + "#paoxiao_xiahouba1": "喝啊!", + "#paoxiao_xiahouba2": "受死吧!", + "#shensu1_xiahouba1": "冲杀敌阵,来去如电!", + "#shensu1_xiahouba2": "今日有恙在身,须得速战速决!", + "#xiaoji_sp_sunshangxiang1": "弓马何须忌红妆?", + "#xiaoji_sp_sunshangxiang2": "双剑夸巧,不让须眉!", + "#benghuai_zhugedan1": "咳……咳咳……", + "#benghuai_zhugedan2": "粮草还可支持几日?", + "#weizhong1": "定当夷司马氏三族!", + "#weizhong2": "定当夷司马氏三族!", + "#tiaoxin_sp_jiangwei1": "今日天公作美,怎能不战而退?", + "#tiaoxin_sp_jiangwei2": "贼将无胆,何不早降!", + "#ranshang21": "战火燃尽英雄胆!", + "#ranshang22": "尔等,竟如此歹毒!", + "#jieyuan_more": "我所有的努力,都是为了杀你!", + "#jieyuan_less": "我必须活下去!", + "#xintan1": "让心中之火慢慢吞噬你吧!哈哈哈哈哈哈……", + "#xintan2": "人人心中都有一团欲望之火!", + "#tianxiang_daxiaoqiao1": "哼,我才不怕你呢~", + "#tianxiang_daxiaoqiao2": "替我挡着吧~", + "#liuli_daxiaoqiao1": "不懂得怜香惜玉么~", + "#liuli_daxiaoqiao2": "交给你了。", + "#wusheng_guansuo1": "逆贼,可识得关氏之勇?", + "#wusheng_guansuo2": "逆贼,可识得关氏之勇?", + "#dangxian_guansuo1": "各位将军,且让小辈先行出战!", + "#dangxian_guansuo2": "各位将军,且让小辈先行出战!", + "#zhiman_guansuo1": "蛮夷可抚,不可剿!", + "#zhiman_guansuo2": "蛮夷可抚,不可剿!", + "#duanbing_heqi1": "可真是一把好刀啊!", + "#duanbing_heqi2": "可真是一把好刀啊!", + "#reyingzi_heqi1": "人靠衣装马靠鞍!", + "#reyingzi_heqi2": "人靠衣装马靠鞍!", + "#fenwei_heqi1": "我的船队,要让全建业城的人都看见!", + "#fenwei_heqi2": "我的船队,要让全建业城的人都看见!", + "#duanbing1": "众将官,短刀出鞘。", + "#duanbing2": "短兵轻甲也可取汝性命!", + "#jingong1": "若无老夫之谋,尔等皆化为腐土也。", + "#jingong2": "董贼旧部,可尽诛之!", }; diff --git a/character/sp2/voices.js b/character/sp2/voices.js index ea5e1cf8b..308e549f4 100644 --- a/character/sp2/voices.js +++ b/character/sp2/voices.js @@ -391,4 +391,18 @@ export default { "#qigong1": "打虎亲兄弟!", "#qigong2": "丞相有令,尔敢不从?", "#lvkuanglvxiang:die": "此处可是新野……", + "#dcnuchen1": "触关某之逆鳞者,杀无赦!", + "#dcnuchen2": "天下碌碌之辈,安敢小觑关某?!", + "#dczuojian1": "关羽者,刘备之枭将,宜除之。", + "#dczuojian2": "主公虽非赵简子,然某可为周舍。", + "#longdan_tongyuan": "能进能退,方显名将本色。", + "#ocongjian_tongyuan": "察言纳谏,安身立命之道也。", + "#chuanyun": "吾枪所至,人马俱亡!", + "#zhangu1": "孤军奋战,独破众将。", + "#zhangu2": "雄狮搏兔,何须援乎?", + "#bmcanshi1": "是你,在召唤我吗?", + "#bmcanshi2": "这片土地的人,真是太有趣了。", + "#xz_xunxun1": "精挑细选,方能成百年之计。", + "#xz_xunxun2": "让我先探他一探。", + "#xinfu_xingzhao2": "船,也不是一天就能造出来的。", }; diff --git a/character/tw/voices.js b/character/tw/voices.js index b82d207bb..d893a5d5b 100644 --- a/character/tw/voices.js +++ b/character/tw/voices.js @@ -315,4 +315,29 @@ export default { "#renshe1": "无论风雨再大,都无法阻挡我的脚步。", "#renshe2": "一定不能辜负女王的期望!", "#nashime:die": "请把这身残躯,带回我的家乡……", + "#twxiongjun1": "凶兵愤戾,尽诛长安之民!", + "#twxiongjun2": "继董公之命,逞凶历之兵!", + "#tw_jiangji:die": "洛水之誓,言犹在耳……咳咳咳……", + "#tw_baoxin:die": "区区黄巾流寇,如何挡我?呃啊……", + "#twluanlve1": "合兵寇河内,聚众掠太原。", + "#twluanlve2": "联白波之众,掠河东之地。", + "#tw_liwei:die": "安南重任,万不可轻之……", + "#tw_yanxiang:die": "若遇明主,或可青史留名……", + "#mouli1": "澄汰王室,迎立宗子!", + "#mouli2": "僣孽为害,吾岂可谋而不行?", + "#tw_fanchou:die": "唉,稚然疑心,甚重。", + "#drlt_qingce1": "感明帝之恩,清君侧之贼。", + "#drlt_qingce2": "得太后手诏,清奸佞乱臣。", + "#tianxiang_daxiaoqiao1": "哼,我才不怕你呢~", + "#tianxiang_daxiaoqiao2": "替我挡着吧~", + "#liuli_daxiaoqiao1": "不懂得怜香惜玉么~", + "#liuli_daxiaoqiao2": "交给你了。", + "#gonghuan1": "曹魏势大,吴蜀当共拒之。", + "#gonghuan2": "两国得此联姻,邦交更当稳固。", + "#twfeifu1": "此亦久矣,其能复几!", + "#twfeifu2": "以侯归第?终败于其!", + "#twzhian1": "此等蝼蚁不除,必溃千丈之堤!", + "#twzhian2": "尔等权贵贪赃枉法,岂可轻饶?!", + "#bmcanshi_tw_beimihu1": "此患不足为惧,可蚕食而尽。", + "#bmcanshi_tw_beimihu2": "小则蚕食,大则溃坝。", }; diff --git a/character/xianding/voices.js b/character/xianding/voices.js index 476a7a6df..a808bd6bc 100644 --- a/character/xianding/voices.js +++ b/character/xianding/voices.js @@ -429,4 +429,44 @@ export default { "#wlcuorui1": "减辎疾行,挫敌军锐气。", "#wlcuorui2": "外物当舍,摄敌为重。", "#wulan:die": "蛮狗,尔敢杀我!", + "#wusheng_guansuo1": "逆贼,可识得关氏之勇?", + "#wusheng_guansuo2": "逆贼,可识得关氏之勇?", + "#dangxian_guansuo1": "各位将军,且让小辈先行出战!", + "#dangxian_guansuo2": "各位将军,且让小辈先行出战!", + "#zhiman_guansuo1": "蛮夷可抚,不可剿!", + "#zhiman_guansuo2": "蛮夷可抚,不可剿!", + "#tiaoxin_xiahouba1": "跪下受降,饶你不死!", + "#tiaoxin_xiahouba2": "黄口小儿,可听过将军名号?", + "#paoxiao_xiahouba1": "喝啊!", + "#paoxiao_xiahouba2": "受死吧!", + "#shensu1_xiahouba1": "冲杀敌阵,来去如电!", + "#shensu1_xiahouba2": "今日有恙在身,须得速战速决!", + "#tianxiang_daxiaoqiao1": "哼,我才不怕你呢~", + "#tianxiang_daxiaoqiao2": "替我挡着吧~", + "#liuli_daxiaoqiao1": "不懂得怜香惜玉么~", + "#liuli_daxiaoqiao2": "交给你了。", + "#yongjue1": "扶幼主,成霸业!", + "#yongjue2": "能救一个是一个!", + "#jingong1": "若无老夫之谋,尔等皆化为腐土也。", + "#jingong2": "董贼旧部,可尽诛之!", + "#dcshouze": "白绫加之我颈,其罪何患无辞。", + "#dczimu1": "既为汉吏,当遵汉律。", + "#refenyin_wufan1": "奋音鼓劲,片甲不留!", + "#refenyin_wufan2": "奋勇杀敌,声罪致讨!", + "#olhunzi_re_sunyi1": "身临绝境,亦当心怀壮志!", + "#olhunzi_re_sunyi2": "危难之时,自当振奋以对!", + "#reyingzi_re_sunyi1": "骁悍果烈,威震江东!", + "#gzyinghun_re_sunyi1": "兄弟齐心,以保父兄基业!", + "#yuyun1": "春依旧,人消瘦。", + "#yuyun2": "泪沾青衫,玉殒香消。", + "#beishui1": "某若退却半步,诸将可立斩之!", + "#beishui2": "效淮阴之举,力敌数千!", + "#qingjiao1": "慈不掌兵,义不养财!", + "#qingjiao2": "清蛮夷之乱,剿不臣之贼!", + "#hmxili1": "系力而为,助君得胜。", + "#hmxili2": "有我在,将军此战必能一举拿下!", + "#reyingzi_gexuan1": "仙人之姿,凡目岂见!", + "#guanxing_gexuan1": "仙人之栖,群星浩瀚!", + "#zhiyan_gexuan1": "仙人之语,凡耳震聩!", + "#gongxin_gexuan1": "仙人之目,因果即现!", }; diff --git a/character/xinghuoliaoyuan/voices.js b/character/xinghuoliaoyuan/voices.js index 4fd63e1e2..6901705ca 100644 --- a/character/xinghuoliaoyuan/voices.js +++ b/character/xinghuoliaoyuan/voices.js @@ -55,4 +55,6 @@ export default { "#xinfu_limu1": "米贼作乱,吾必为益州自保。", "#xinfu_limu2": "废史立牧,可得一方安定。", "#liuyan:die": "背疮难治,世子难继。", + "#xinfu_zhanji1": "公瑾安全至吴,心安之。", + "#xinfu_zhanji2": "功曹之恩,吾必有展骥之机。", }; diff --git a/character/yijiang/skill.js b/character/yijiang/skill.js index a39bc85c8..839e181a3 100644 --- a/character/yijiang/skill.js +++ b/character/yijiang/skill.js @@ -1268,34 +1268,28 @@ const skills = { audio: 2, trigger: { global: "useCard" }, filter: function (event, player) { - var history = game.getAllGlobalHistory("useCard"); - var index = history.indexOf(event); + const history = game.getAllGlobalHistory("useCard"); + const index = history.indexOf(event); if (index <= 0) return false; - var previous = history[index - 1].player; + const previous = history[index - 1].player; if (event.player == player && previous != player && previous.isIn()) return true; if (event.player != player && previous == player) return true; return false; }, - direct: true, - content: function () { - "step 0"; - var history = game.getAllGlobalHistory("useCard"); - var index = history.indexOf(trigger); - var previous = history[index - 1].player; - var user = trigger.player, - target = previous; - event.user = user; - event.target = target; - if (user) { - user.chooseBool("是否对" + get.translation(target) + "发动【联对】?", "令" + get.translation(target) + "摸两张牌") - .set("ai", () => _status.event.bool) - .set("bool", get.effect(target, { name: "draw" }, user, user) > 0); - } - "step 1"; - if (result.bool) { - event.user.logSkill("liandui", target); - target.draw(2); - } + async cost(event, trigger, player) { + if (!trigger.player) return; + const history = game.getAllGlobalHistory("useCard"); + const index = history.indexOf(trigger); + const previous = history[index - 1].player; + const { result } = await trigger.player + .chooseBool("是否对" + get.translation(previous) + "发动【联对】?", "令" + get.translation(previous) + "摸两张牌") + .set("ai", () => _status.event.bool) + .set("bool", get.effect(previous, { name: "draw" }, trigger.player, trigger.player) > 0); + if (result.bool) event.result = { bool: true, cost_data: previous }; + }, + async content(event, trigger, player) { + const { cost_data: previous } = event; + previous.draw(2); }, }, biejun: { @@ -8379,14 +8373,20 @@ const skills = { content: function () { "step 0"; player.showHandcards(); - const hs = player.getCards("h"), color = get.color(hs[0], player); - if (hs.length === 1 || !hs.some((card,index) => { - return index > 0 && get.color(card) !== color; - })) { + const hs = player.getCards("h"), + color = get.color(hs[0], player); + if ( + hs.length === 1 || + !hs.some((card, index) => { + return index > 0 && get.color(card) !== color; + }) + ) { event.finish(); } "step 1"; - const list = [], bannedList = [], indexs = Object.keys(lib.color); + const list = [], + bannedList = [], + indexs = Object.keys(lib.color); player.getCards("h").forEach(card => { const color = get.color(card, player); list.add(color); @@ -8395,15 +8395,19 @@ const skills = { list.removeArray(bannedList); list.sort((a, b) => indexs.indexOf(a) - indexs.indexOf(b)); if (!list.length) event.finish(); - else if(list.length === 1) event._result = {control: list[0]}; - else player.chooseControl(list.map(i => `${i}2`)).set("ai", function () { - var player = _status.event.player; - if (player.countCards("h", { color: "red" }) == 1 && player.countCards("h", { color: "black" }) > 1) return 1; - return 0; - }).set("prompt", "请选择弃置一种颜色的所有手牌"); + else if (list.length === 1) event._result = { control: list[0] }; + else + player + .chooseControl(list.map(i => `${i}2`)) + .set("ai", function () { + var player = _status.event.player; + if (player.countCards("h", { color: "red" }) == 1 && player.countCards("h", { color: "black" }) > 1) return 1; + return 0; + }) + .set("prompt", "请选择弃置一种颜色的所有手牌"); "step 2"; event.control = result.control.slice(0, result.control.length - 1); - var cards = player.getCards("h", {color: event.control}); + var cards = player.getCards("h", { color: event.control }); player.discard(cards); event.num = cards.length; "step 3"; @@ -8442,7 +8446,7 @@ const skills = { return 1; }, result: { - player:(player) => { + player: player => { if (get.color(player.getCards("h")) != "none") return 0; return 1; }, diff --git a/character/yijiang/voices.js b/character/yijiang/voices.js index 4b90aa155..fd4eb3dd4 100644 --- a/character/yijiang/voices.js +++ b/character/yijiang/voices.js @@ -369,4 +369,20 @@ export default { "#yujin:die": "我,无颜面对丞相了……", "#reqiaoshui1": "慧心妙舌,难题可解。", "#reqiaoshui2": "巧言善辩,应对自如。", + "#wusheng_guanzhang1": "一夫当关,万夫莫当!", + "#wusheng_guanzhang2": "一夫当关,万夫莫当!", + "#paoxiao_guanzhang1": "喝啊~", + "#paoxiao_guanzhang2": "喝啊~", + "#luoying_discard1": "别着急扔,给我就好。", + "#luoying_discard2": "这些都是我的。", + "#luoying_judge1": "别着急扔,给我就好。", + "#luoying_judge2": "这些都是我的。", + "#jiushi21": "置酒高殿上,亲友从我游。", + "#jiushi22": "走马行酒醴,驱车布鱼肉。", + "#paiyi1": "妨碍我的人,都得死!", + "#paiyi2": "此地容不下你!", + "#juexiang_ji1": "一弹一拨,铿锵有力!", + "#juexiang_lie1": "一壶烈云烧,一曲人皆醉。", + "#juexiang_rou1": "君子以琴会友,以瑟辅人。", + "#juexiang_he1": "悠悠琴音,人人自醉。", }; diff --git a/character/yingbian/skill.js b/character/yingbian/skill.js index 801c0ba63..28c742746 100644 --- a/character/yingbian/skill.js +++ b/character/yingbian/skill.js @@ -1649,9 +1649,13 @@ const skills = { .getCards("he", function (card) { return lib.filter.canBeDiscarded(card, player, target); }) + .map(c => { + link: c; + }) .sort(function (a, b) { return get.buttonValue(b) - get.buttonValue(a); - }); + }) + .map(b => b.link); if ( target.countCards("h") - player.countCards("h") >= Math.max( diff --git a/character/yingbian/voices.js b/character/yingbian/voices.js index 53d43b6d7..2a10c9fcc 100644 --- a/character/yingbian/voices.js +++ b/character/yingbian/voices.js @@ -126,4 +126,10 @@ export default { "#zhaotao1": "奉诏伐吴,定鼎东南!", "#zhaotao2": "三陈方得诏,一股下孙吴!", "#duyu:die": "金瓯尚缺,死难瞑目……", + "#xijue_tuxi1": "动如霹雳,威震宵小!", + "#xijue_tuxi2": "行略如风,摧枯拉朽!", + "#xijue_xiaoguo1": "大丈夫生于世,当沙场效忠!", + "#xijue_xiaoguo2": "骁勇善战,刚毅果断!", + "#pozhu1": "攻其不备,摧枯拉朽!", + "#pozhu2": "势如破竹,铁锁横江亦难挡!", }; diff --git a/noname/game/index.js b/noname/game/index.js index ed8ac4841..ee1a64f7f 100644 --- a/noname/game/index.js +++ b/noname/game/index.js @@ -1557,9 +1557,7 @@ export class Game { let [, path = "skill", audioNum, ext = "mp3"] = list; let _audioname = getName(i => audioname.includes(i)); _audioname = _audioname ? `_${_audioname}` : ""; - if (audioNum === "true") return [getTextMap(`${path}/`, `${skill}${_audioname}`, `.${ext}`, isDefault)]; - const audioList = []; audioNum = parseInt(audioNum); for (let i = 1; i <= audioNum; i++) { @@ -1568,15 +1566,14 @@ export class Game { return audioList; } - let path = "", - ext = ""; + let path = "", ext = ""; if (!/^db:|^ext:|\//.test(audioInfo)) path = "skill/"; if (!/\.\w+$/.test(audioInfo)) ext = ".mp3"; if (path && ext) return parseAudio(audioInfo, Object.assign(options, { isDefault: true }), defaultInfo); //@TODO console.warn(`${skill}中的地址写法(${audioInfo})暂时没有完全支持台词系统。`); return [getTextMap(path, audioInfo, ext, isDefault)]; - }; + } return getAudioList(skill, { audioname: [], history: [], isDefault: false }, skillInfo); } @@ -1702,7 +1699,6 @@ export class Game { if (!lib.config.background_speak) return; if (info.direct && !directaudio) return; if (lib.skill.global.includes(skill) && !info.forceaudio) return; - let audio, list = game.parseSkillTextMap(skill, player, skillInfo).randomSort(); return (function play() { diff --git a/noname/get/index.js b/noname/get/index.js index c3d24680c..5e223e177 100644 --- a/noname/get/index.js +++ b/noname/get/index.js @@ -618,7 +618,7 @@ export class Get { if (num === 3 || num === 4) return []; return; } - return info || get.convertedCharacter({}); + return info || get.convertedCharacter({ isNull: true }); } characterInitFilter(name) { const info = get.character(name); diff --git a/noname/library/element/character.js b/noname/library/element/character.js index 5576d14f0..a25e09f4a 100644 --- a/noname/library/element/character.js +++ b/noname/library/element/character.js @@ -160,6 +160,11 @@ export class Character { * @type { string[] } */ tempname = []; + /** + * 武将牌是否存在(get.character未找到武将使用) + * @type { boolean } + */ + isNull = false; /** * @param { Object|[string, string, string|number, string[], any[]|undefined, any[]|undefined] } [data] */ @@ -208,8 +213,7 @@ export class Character { * @param { any[] } trash */ setPropertiesFromTrash(trash) { - const keptTrashes = [], - clans = []; + const keptTrashes = [], clans = [], dieAudios=[]; for (let i = 0; i < trash.length; i++) { const item = trash[i]; if (typeof item !== "string") { @@ -260,10 +264,11 @@ export class Character { clans.push(item.slice(5)); } else if (item.startsWith("InitFilter:")) { this.initFilters = item.slice(11).split(":"); - } else if (item.startsWith("die:")){ - this.dieAudios.push(item.slice(4)); - } else if (item.startsWith("die_audio:")){ - this.dieAudios = item.slice(10).split(":"); + } else if (item.startsWith("die:")) { + dieAudios.add(item.slice(4)); + } else if (item.startsWith("die_audio:")) { + console.warn(`die_audio参数已废弃,请使用多个die参数。`); + dieAudios.addArray(item.slice(10).split(":")); } else if (item.startsWith("tempname:")) { this.tempname = item.slice(9).split(":"); } else { @@ -271,6 +276,7 @@ export class Character { } } this.clans = clans; + this.dieAudios = dieAudios; this.trashBin = keptTrashes; } /** @@ -388,8 +394,7 @@ export class Character { trashes.push(`InitFilters:${character.initFilters.join(":")}`); } if (character.dieAudios.length > 0) { - if (character.dieAudios.length === 1) trashes.push(`die:${character.dieAudios[0]}`) - else trashes.push(`die_audio:${character.dieAudios.join(":")}`); + character.dieAudios.forEach((item) => trashes.push(`die:${item}`)); } if (character.tempname.length > 0) { trashes.push(`tempname:${character.tempname.join(":")}`); diff --git a/noname/library/element/content.js b/noname/library/element/content.js index 6670cc32c..a367e9ed8 100644 --- a/noname/library/element/content.js +++ b/noname/library/element/content.js @@ -8776,20 +8776,9 @@ export const Content = { game.dead.push(player); _status.dying.remove(player); - if (lib.config.background_speak) { - const audios = game.parseDieTextMap(player).randomGet(); - if (audios.isDefault) { - const name = audios.key; - game.playAudio("die", name, function () { - game.playAudio("die", name.slice(name.indexOf("_") + 1)); - }); - } - else{ - game.playAudio(audios.file); - } - } }, player); + game.tryDieAudio(player); game.addVideo("diex", player); if (event.animate !== false) { player.$die(source); diff --git a/noname/ui/click/index.js b/noname/ui/click/index.js index 7fdd018d5..5f57cd088 100644 --- a/noname/ui/click/index.js +++ b/noname/ui/click/index.js @@ -3360,7 +3360,7 @@ export class Click { } // 添加台词部分 - const dieAudios = game.parseDieTextMap(name).filter(i => "text" in i); + const dieAudios = game.parseDieTextMap(name).map(i => i.text).filter(Boolean); const skillAudioMap = new Map(); nameinfo.skills.forEach(skill => { const voiceMap = game.parseSkillText(skill, name, null, true); @@ -3397,10 +3397,10 @@ export class Click { skillNameSpanStyle2.lineHeight = "1.9"; skillNameSpan2.innerHTML = `• 阵亡台词`; intro.appendChild(skillNameSpan2); - dieAudios.forEach((item, index) => { + dieAudios.forEach((text, index) => { const dieTextSpan = document.createElement("span"); dieTextSpan.style.fontSize = "15.2px"; - dieTextSpan.innerHTML = `
${dieAudios.length > 1 ? `${index + 1}. ` : ""}${item.text}`; + dieTextSpan.innerHTML = `
${dieAudios.length > 1 ? `${index + 1}. ` : ""}${text}`; intro.appendChild(dieTextSpan); }); } @@ -3677,7 +3677,7 @@ export class Click { Array.from(htmlParser.childNodes).forEach((value) => introduction.appendChild(value)); // 添加台词部分 - const dieAudios = game.parseDieTextMap(name).filter(i => "text" in i); + const dieAudios = game.parseDieTextMap(name).map(i => i.text).filter(Boolean); const skillAudioMap = new Map(); nameInfo.skills.forEach(skill => { const voiceMap = game.parseSkillText(skill, name, null, true); @@ -3712,9 +3712,9 @@ export class Click { skillNameSpan.innerHTML = `
阵亡台词`; introduction.appendChild(skillNameSpan); - dieAudios.forEach((item, index) => { + dieAudios.forEach((text, index) => { const dieTextSpan = document.createElement("span"); - dieTextSpan.innerHTML = `
${dieAudios.length > 1 ? `${index + 1}. ` : ""}${item.text}`; + dieTextSpan.innerHTML = `
${dieAudios.length > 1 ? `${index + 1}. ` : ""}${text}`; introduction.appendChild(dieTextSpan); }); }