From 2ec116273102c7f3a2fe37162c526b57ffbcbaa1 Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sun, 5 May 2024 17:09:49 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E7=94=A8=E5=BD=93=E5=89=8D=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E4=BB=A3=E6=9B=BF=E2=80=9D=E6=AD=A4=E6=AD=A6=E5=B0=86?= =?UTF-8?q?=E7=89=8C=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mode/guozhan.js | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/mode/guozhan.js b/mode/guozhan.js index cfc5752bb..396d7a81a 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -6439,8 +6439,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { .set("prompt", "近谀:请暗置一张武将牌") .set("ai", function () { var target = _status.event.player; - if (target.name == "gz_pengyang") return "主将"; - if (target.name2 == "gz_pengyang") return "副将"; + if (get.character(target.name, 3).includes("gzjinyu")) return "主将"; + if (get.character(target.name2, 3).includes("gzjinyu")) return "副将"; if ( lib.character[target.name][3].some((skill) => { var info = get.info(skill); @@ -7528,7 +7528,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { trigger: { player: "showCharacterAfter" }, forced: true, filter: function (event, player) { - return event.toShow.includes("gz_xf_huangquan") && !player.storage.gzdianhu_effect; + return event.toShow.some(name => { + return get.character(name, 3).includes("gzdianhu"); + }) && !player.storage.gzdianhu_effect; }, content: function () { "step 0"; @@ -8645,7 +8647,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { audio: "xuanbei", trigger: { player: "showCharacterAfter" }, filter: function (event, player) { - return !player.storage.gzxuanbei && event.toShow.includes("gz_yangyan"); + return !player.storage.gzxuanbei && event.toShow.some(name => { + return get.character(name, 3).includes("gzxuanbei"); + }); }, forced: true, locked: false, @@ -9565,7 +9569,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { trigger: { player: "showCharacterAfter" }, forced: true, filter: function (event, player) { - return event.toShow.includes("gz_liaohua") && !player.storage.gzdangxian_draw; + return event.toShow.some(name => { + return get.character(name, 3).includes("gzdangxian"); + }) && !player.storage.gzdangxian_draw; }, content: function () { player.storage.gzdangxian_draw = true; @@ -13038,7 +13044,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { }, content: function () { trigger.cancel(); - player.removeCharacter(player.name1 == "gz_yanbaihu" ? 0 : 1); + player.removeCharacter(get.character(player.name1, 3).includes("gzyjili") ? 0 : 1); }, }, }, @@ -14721,7 +14727,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { }, forced: true, filter: function (event, player) { - return event.toShow.includes("gz_zuoci") && !player.storage.yigui_init; + return event.toShow.some(name => { + return get.character(name, 3).includes("yigui"); + }) && !player.storage.yigui_init; }, content: function () { player.storage.yigui_init = true; @@ -16347,8 +16355,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { if (event.filterName(event.current.name2)) list.push("副将"); if (list.length > 1) event.current.chooseControl(["主将", "副将"]).set("ai", function () { - if (player.name1 == "gz_fazheng") return 0; - if (player.name2 == "gz_fazheng") return 1; + let player = _status.event.player; + if (get.character(player.name1, 3).includes("gzxuanhuo")) return 0; + if (get.character(player.name2, 3).includes("gzxuanhuo")) return 1; return Math.random() > 0.5 ? 0 : 1; }).prompt = "选择并展示一张武将牌,然后执行军令"; else event._result = { index: list[0] == "主将" ? 0 : 1 }; @@ -17008,9 +17017,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { break; } } - if (event.target.name == "gz_zhoutai") { + if (get.character(event.target.name, 3).includes("buqu")) { choice = "主将"; - } else if (event.target.name2 == "gz_zhoutai") { + } else if (get.character(event.target.name2, 3).includes("buqu")) { choice = "副将"; } player @@ -20608,8 +20617,12 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { trigger: { player: ["showCharacterAfter", "removeCharacterBefore"] }, filter: function (event, player) { if (event.name == "removeCharacter" || event.name == "changeVice") - return event.toRemove == "gz_mifuren" && player.isDamaged(); - return event.toShow.includes("gz_mifuren"); + return event.toRemove.some(name => { + return get.character(name, 3).includes("gzguixiu"); + }) && player.isDamaged(); + return event.toShow.some(name => { + return get.character(name, 3).includes("gzguixiu"); + }); }, content: function () { if (trigger.name == "showCharacter") { From 1b8efe1424fe28802f088610abba1fe1d4b2d67b Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sun, 5 May 2024 18:28:36 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=B8=B8=E8=A7=84=E6=AD=A6=E5=B0=86?= =?UTF-8?q?=E2=80=9D=E6=AD=A4=E6=AD=A6=E5=B0=86=E7=89=8C=E2=80=9C=E6=A3=80?= =?UTF-8?q?=E6=B5=8B=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/diy/skill.js | 4 +++- character/key/skill.js | 8 +++++++- character/xianding/skill.js | 40 +++++++++++++++++++------------------ character/yingbian/skill.js | 4 +++- 4 files changed, 34 insertions(+), 22 deletions(-) diff --git a/character/diy/skill.js b/character/diy/skill.js index e3ed0ac77..6b9444260 100644 --- a/character/diy/skill.js +++ b/character/diy/skill.js @@ -811,7 +811,9 @@ const skills = { forced: true, hiddenSkill: true, filter(event, player) { - return event.toShow && event.toShow.includes("ns_yanghu") && player != _status.currentPhase; + return event.toShow && event.toShow.some(name => { + return get.character(name, 3).includes("nsbizhao"); + }) && player != _status.currentPhase; }, content() { player.addTempSkill("nsbizhao2", { diff --git a/character/key/skill.js b/character/key/skill.js index ab0d089bd..261916ac6 100644 --- a/character/key/skill.js +++ b/character/key/skill.js @@ -4754,6 +4754,7 @@ const skills = { }, }, yukito_yaxiang: { + forceunique: true, enable: "chooseToUse", limited: true, filter(event, player) { @@ -10572,9 +10573,14 @@ const skills = { }, }, umi_qihuan: { + forceunique: true, enable: "chooseToUse", filter(summer, umi) { - return summer.type == "dying" && umi.isDying(); + return ( + summer.type == "dying" && + umi.isDying() && + [umi.name1, umi.name2].includes("key_umi") + ); }, limited: true, skillAnimation: true, diff --git a/character/xianding/skill.js b/character/xianding/skill.js index a05a72fc2..c61739582 100644 --- a/character/xianding/skill.js +++ b/character/xianding/skill.js @@ -5090,7 +5090,9 @@ const skills = { characters.remove("dc_mifuren"); } }); - return characters.length; + return characters.length && [player.name1, player.name2].some(name => { + return get.character(name, 3).includes("dcxunbie"); + }); }, check: () => true, skillAnimation: true, @@ -5100,30 +5102,30 @@ const skills = { content: function () { "step 0"; player.awakenSkill("dcxunbie"); - if (player.name1 == "ganfurenmifuren" || player.name2 == "ganfurenmifuren") { - var characters = ["dc_ganfuren", "dc_mifuren"]; - game.countPlayer(current => { - if (current.name1 == "dc_ganfuren" || current.name2 == "dc_ganfuren") { - characters.remove("dc_ganfuren"); - } - if (current.name1 == "dc_mifuren" || current.name2 == "dc_mifuren") { - characters.remove("dc_mifuren"); - } - }); - if (characters.length == 1) event._result = { control: characters[0] }; - else { - player - .chooseControl(characters) - .set("dialog", ["选择要替换成的武将", [characters, "character"]]) - .set("ai", () => [0, 1].randomGet()); + var characters = ["dc_ganfuren", "dc_mifuren"]; + game.countPlayer(current => { + if (current.name1 == "dc_ganfuren" || current.name2 == "dc_ganfuren") { + characters.remove("dc_ganfuren"); } - } else event.goto(2); + if (current.name1 == "dc_mifuren" || current.name2 == "dc_mifuren") { + characters.remove("dc_mifuren"); + } + }); + if (characters.length == 1) event._result = { control: characters[0] }; + else { + player + .chooseControl(characters) + .set("dialog", ["选择要替换成的武将", [characters, "character"]]) + .set("ai", () => [0, 1].randomGet()); + } "step 1"; var character = result.control; if (!_status.characterlist) { lib.skill.pingjian.initList(); } - player.reinitCharacter("ganfurenmifuren", character); + player.reinitCharacter((get.character(player.name2, 3).includes("dcxunbie") ? + player.name2 : player.name1 + ), character); "step 2"; player.recover(1 - player.hp); player.addTempSkill("dcxunbie_muteki", { player: "phaseAfter" }); diff --git a/character/yingbian/skill.js b/character/yingbian/skill.js index 074eaa9dc..9767101e3 100644 --- a/character/yingbian/skill.js +++ b/character/yingbian/skill.js @@ -951,7 +951,9 @@ const skills = { hiddenSkill: true, filter: function (event, player) { return ( - event.toShow.includes("xuangongzhu") && + event.toShow.some(name => { + return get.character(name, 3).includes("gaoling"); + }) && player != _status.currentPhase && game.hasPlayer(function (current) { return current.isDamaged(); From 15ca7ff26ceb15f8afe30addd4263312c52e737d Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sun, 5 May 2024 18:38:03 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=BD=E6=88=98?= =?UTF-8?q?=E3=80=90=E6=9C=9B=E5=BD=92=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/huicui/skill.js | 6 +++++- mode/guozhan.js | 4 +--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/character/huicui/skill.js b/character/huicui/skill.js index 2bbbd4f66..17f557256 100644 --- a/character/huicui/skill.js +++ b/character/huicui/skill.js @@ -12366,7 +12366,11 @@ const skills = { }, direct: true, filter: function (event, player) { - return player.hasSkill("wanggui") && !player.hasSkill("wanggui2"); + if (!player.hasSkill("wanggui") || player.hasSkill("wanggui2")) return false; + if (!player.isUnseen(2)) return true; + return !player.isUnseen() && [player.name1, player.name2].some(name => { + return get.character(name, 3).includes("wanggui"); + }); }, preHidden: true, content: function () { diff --git a/mode/guozhan.js b/mode/guozhan.js index 396d7a81a..df286370a 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -20617,9 +20617,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { trigger: { player: ["showCharacterAfter", "removeCharacterBefore"] }, filter: function (event, player) { if (event.name == "removeCharacter" || event.name == "changeVice") - return event.toRemove.some(name => { - return get.character(name, 3).includes("gzguixiu"); - }) && player.isDamaged(); + return get.character(event.toRemove, 3).includes("gzguixiu") && player.isDamaged(); return event.toShow.some(name => { return get.character(name, 3).includes("gzguixiu"); }); From c57bf686db1ae85b819e3584ba641ed18e1b009f Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sun, 5 May 2024 19:15:52 +0800 Subject: [PATCH 4/7] =?UTF-8?q?unique=E6=A0=87=E7=AD=BE=E8=A1=A5=E5=85=85?= =?UTF-8?q?=EF=BC=8Cbugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/diy/skill.js | 1 + character/huicui/skill.js | 4 +++- character/key/skill.js | 2 ++ character/xianding/skill.js | 1 + character/yingbian/skill.js | 1 + mode/guozhan.js | 12 ++++++++++++ 6 files changed, 20 insertions(+), 1 deletion(-) diff --git a/character/diy/skill.js b/character/diy/skill.js index 6b9444260..ecaef5e48 100644 --- a/character/diy/skill.js +++ b/character/diy/skill.js @@ -807,6 +807,7 @@ const skills = { }, noname_duocai2: { charlotte: true }, nsbizhao: { + unique: true, trigger: { player: "showCharacterAfter" }, forced: true, hiddenSkill: true, diff --git a/character/huicui/skill.js b/character/huicui/skill.js index 17f557256..4f930552e 100644 --- a/character/huicui/skill.js +++ b/character/huicui/skill.js @@ -12193,7 +12193,9 @@ const skills = { filter: function (event, player, name) { if (player.hasSkill("zhiwei2")) return false; if (!game.hasPlayer(current => current != player)) return false; - if (get.mode() == "guozhan") return event.name == "showCharacter" && (event.toShow.includes("gz_luyusheng") || event.toShow.includes("luyusheng")); + if (get.mode() == "guozhan") return event.name == "showCharacter" && event.toShow(name => { + return get.character(name, 3).includes("zhiwei"); + }); return event.name != "showCharacter" && (name != "phaseBefore" || game.phaseNumber == 0); }, content: function () { diff --git a/character/key/skill.js b/character/key/skill.js index 261916ac6..3ade3f88f 100644 --- a/character/key/skill.js +++ b/character/key/skill.js @@ -4754,6 +4754,7 @@ const skills = { }, }, yukito_yaxiang: { + unique: true, forceunique: true, enable: "chooseToUse", limited: true, @@ -10573,6 +10574,7 @@ const skills = { }, }, umi_qihuan: { + unique: true, forceunique: true, enable: "chooseToUse", filter(summer, umi) { diff --git a/character/xianding/skill.js b/character/xianding/skill.js index c61739582..bdabe422f 100644 --- a/character/xianding/skill.js +++ b/character/xianding/skill.js @@ -5075,6 +5075,7 @@ const skills = { }, }, dcxunbie: { + unique: true, audio: 2, trigger: { player: "dying", diff --git a/character/yingbian/skill.js b/character/yingbian/skill.js index 9767101e3..c52038894 100644 --- a/character/yingbian/skill.js +++ b/character/yingbian/skill.js @@ -946,6 +946,7 @@ const skills = { }, }, gaoling: { + unique: true, audio: 2, trigger: { player: "showCharacterAfter" }, hiddenSkill: true, diff --git a/mode/guozhan.js b/mode/guozhan.js index df286370a..0066eca2e 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -2674,8 +2674,15 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { }, }, fakezhiwei: { + unique: true, audio: "zhiwei", inherit: "zhiwei", + filter: function (event, player, name) { + if (!game.hasPlayer(current => current != player)) return false; + return event.name == "showCharacter" && event.toShow(name => { + return get.character(name, 3).includes("fakezhiwei"); + }); + }, content() { "step 0"; player @@ -4914,6 +4921,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { }, }, fakebaoqie: { + unique: true, audio: "baoqie", trigger: { player: "showCharacterEnd" }, filter(event, player) { @@ -5087,6 +5095,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { }, }, fakehuirong: { + unique: true, audio: "huirong", trigger: { player: "showCharacterEnd" }, filter(event, player) { @@ -5258,6 +5267,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { }, }, fakeshiren: { + unique: true, audio: "shiren", trigger: { player: "showCharacterEnd" }, filter(event, player) { @@ -7524,6 +7534,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { }, //黄权 gzdianhu: { + unique: true, audio: "xinfu_dianhu", trigger: { player: "showCharacterAfter" }, forced: true, @@ -20613,6 +20624,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { }, }, gzguixiu: { + unique: true, audio: "guixiu", trigger: { player: ["showCharacterAfter", "removeCharacterBefore"] }, filter: function (event, player) { From da17e63cf503ac56ea86e23cc9b7a56566c5e6c9 Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sun, 5 May 2024 19:28:47 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dzhiwei=E5=92=8Cfakezhiwei?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/huicui/skill.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/huicui/skill.js b/character/huicui/skill.js index 1184d9f98..2ecb9d3f6 100644 --- a/character/huicui/skill.js +++ b/character/huicui/skill.js @@ -12300,8 +12300,8 @@ const skills = { player.removeSkill("zhiwei2"); if (trigger.name != "die" || get.mode() != "guozhan") event.finish(); "step 1"; - if (player.name1 == "gz_luyusheng" || player.name1 == "luyusheng") player.hideCharacter(0); - if (player.name2 == "gz_luyusheng" || player.name2 == "luyusheng") player.hideCharacter(1); + if (get.character(player.name1, 3).includes("zhiwei")) player.hideCharacter(0); + if (get.character(player.name2, 3).includes("zhiwei")) player.hideCharacter(1); }, }, }, From a5e8e1e4a899051cdde03c7d8216701648978488 Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sun, 5 May 2024 19:52:03 +0800 Subject: [PATCH 6/7] =?UTF-8?q?Key=E5=8A=BF=E5=8A=9B=E2=80=9D=E6=AD=A4?= =?UTF-8?q?=E6=AD=A6=E5=B0=86=E7=89=8C=E2=80=9C=E6=8A=80=E8=83=BD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0forceunique=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/collab/skill.js | 2 +- character/key/skill.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/character/collab/skill.js b/character/collab/skill.js index 0d54eba03..d477ca7a4 100644 --- a/character/collab/skill.js +++ b/character/collab/skill.js @@ -82,7 +82,7 @@ const skills = { } list.forEach(name => { if (name !== "dc_wuyi") { - const skills = get.character(name).skills; + const skills = get.character(name, 3); skills.forEach(skill => { if (skill in _status.dcbenxi_map) return; const voices = game.parseSkillText(skill, name); diff --git a/character/key/skill.js b/character/key/skill.js index 0a4f763b7..c2fa0a8be 100644 --- a/character/key/skill.js +++ b/character/key/skill.js @@ -463,6 +463,8 @@ const skills = { }, //加纳天善(旧) tenzen_yixing: { + unique: true, + forceunique: true, trigger: { global: "damageEnd", }, From 5016691166e78742d9b8aa48a9426fcf707c7f16 Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sun, 5 May 2024 20:33:36 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=BD=E6=88=98?= =?UTF-8?q?=E3=80=90=E6=9C=9B=E5=BD=92=E3=80=91=EF=BC=8C=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E6=94=B9async=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/huicui/skill.js | 70 +++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/character/huicui/skill.js b/character/huicui/skill.js index 2ecb9d3f6..840ee7514 100644 --- a/character/huicui/skill.js +++ b/character/huicui/skill.js @@ -12371,53 +12371,53 @@ const skills = { player: "damageEnd", source: "damageSource", }, - direct: true, filter: function (event, player) { - if (!player.hasSkill("wanggui") || player.hasSkill("wanggui2")) return false; + if (player.isUnseen()) return false; if (!player.isUnseen(2)) return true; - return !player.isUnseen() && [player.name1, player.name2].some(name => { - return get.character(name, 3).includes("wanggui"); - }); + return ( + !player.isUnseen(0) && get.character(player.name1, 3).includes("wanggui") || + !player.isUnseen(1) && get.character(player.name2, 3).includes("wanggui") + ); }, + usable: 1, preHidden: true, - content: function () { - "step 0"; - player.addTempSkill("wanggui2"); - var bool = player.isUnseen(2); - if (bool) { - player - .chooseTarget("望归:是否对一名势力不同的角色造成1点伤害?", function (card, player, target) { + async cost(event, trigger, player) { + if (player.isUnseen(2)) event.result = await player + .chooseTarget( + get.prompt("wanggui"), + "望归:是否对与你势力不同的一名角色造成1点伤害?", + (card, player, target) => { return target.isEnemyOf(player); - }) - .set("ai", function (target) { - var player = _status.event.player; - return get.damageEffect(target, player, player); - }) - .setHiddenSkill("wanggui"); - } else event.goto(2); - "step 1"; - if (result.bool) { - var target = result.targets[0]; - player.logSkill("wanggui", target); - target.damage(); + } + ) + .set("ai", (target) => { + let player = _status.event.player; + return get.damageEffect(target, player, player); + }) + .setHiddenSkill("wanggui") + .forResult(); + else event.result = await player + .chooseBool("望归:是否令与你势力相同的角色各摸一张牌?") + .setHiddenSkill("wanggui") + .set("logSkill", ["wanggui", game.filterPlayer(current => { + return current.isFriendOf(player); + })]) + .forResult(); + }, + async content(event, trigger, player) { + if (player.isUnseen(2)) { + const target = event.targets[0]; + target.damage("nocard"); } - event.finish(); - "step 2"; - player.chooseBool("望归:是否令所有与自己势力相同的角色各摸一张牌?").setHiddenSkill("wanggui"); - "step 3"; - if (result.bool) { - var targets = game.filterPlayer(function (current) { + else { + const targets = game.filterPlayer(current => { return current.isFriendOf(player); }); targets.sortBySeat(); - player.logSkill("wanggui", targets); game.asyncDraw(targets); - } else event.finish(); - "step 4"; - game.delayx(); + } }, }, - wanggui2: {}, xibing: { audio: 2, trigger: { global: "useCardToPlayered" },