From bbb81d1bc00e206895c8c76e8fd0083ea13d49ca Mon Sep 17 00:00:00 2001 From: MengXinZXZ <2223529500@qq.com> Date: Sun, 27 Oct 2024 20:50:15 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=89=91=E5=85=8B=E7=89=8C=E7=82=B9?= =?UTF-8?q?=E6=95=B0=E6=8E=A5=E5=8F=A3=E5=BC=80=E6=94=BE=EF=BC=8C=E7=AE=80?= =?UTF-8?q?=E5=8C=96=E7=B9=81=E7=90=90=E7=9A=84[1,11,12,13]=E5=88=97?= =?UTF-8?q?=E4=B8=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/extra/skill.js | 4 +-- character/sixiang/skill.js | 8 +++--- character/sp/skill.js | 8 +++--- noname/get/index.js | 49 +++++++++++++--------------------- noname/library/element/card.js | 18 +------------ noname/library/index.js | 7 +++++ 6 files changed, 37 insertions(+), 57 deletions(-) diff --git a/character/extra/skill.js b/character/extra/skill.js index dbfd8b319a..cb37ac10ab 100644 --- a/character/extra/skill.js +++ b/character/extra/skill.js @@ -4705,7 +4705,7 @@ const skills = { if (result.bool) { var card = result.cards[0]; var num = get.number(card); - if ([1, 11, 12, 13].includes(num)) { + if (typeof get.strNumber(num) === "string") { if (lib.filter.canBeGained(card, player, target)) player.gain(card, target, "give", "bySelf"); } else if (lib.filter.canBeDiscarded(card, player, target)) target.discard(card); } else event.finish(); @@ -4909,7 +4909,7 @@ const skills = { audio: 2, mod: { cardname(card, player) { - if (player.storage.yuheng && [1, 11, 12, 13].includes(card.number)) { + if (player.storage.yuheng && typeof get.strNumber(card.number) === "string") { var list = ["rezhiheng", "jiexun", "reanxu"]; for (var i of list) { if (!player.storage.yuheng.includes(i)) return; diff --git a/character/sixiang/skill.js b/character/sixiang/skill.js index f403169aa8..41499ac920 100644 --- a/character/sixiang/skill.js +++ b/character/sixiang/skill.js @@ -1405,16 +1405,16 @@ const skills = { aiValue: (player, card, val) => { if (card.name == "wuxie") return 0; var num = get.number(card); - if ([1, 11, 12, 13].includes(num)) return 0; + if (typeof get.strNumber(num) === "string") return 0; }, aiUseful: (player, card, val) => { if (card.name == "wuxie") return 0; var num = get.number(card); - if ([1, 11, 12, 13].includes(num)) return 0; + if (typeof get.strNumber(num) === "string") return 0; }, aiOrder: (player, card, order) => { var num = get.number(card); - if ([1, 11, 12, 13].includes(num)) return 0; + if (typeof get.strNumber(num) === "string") return 0; return order; }, }, @@ -1422,7 +1422,7 @@ const skills = { player: "useCard", }, filter(event, player) { - return [1, 11, 12, 13].includes(get.number(event.card)); + return typeof get.strNumber(get.number(event.card)) === "string"; }, forced: true, async content(event, trigger, player) { diff --git a/character/sp/skill.js b/character/sp/skill.js index a54fe1553a..476e6859f9 100644 --- a/character/sp/skill.js +++ b/character/sp/skill.js @@ -5459,17 +5459,17 @@ const skills = { aiValue: (player, card, val) => { if (card.name == "wuxie") return 0; var num = get.number(card); - if ([1, 11, 12, 13].includes(num)) return val * 1.1; + if (typeof get.strNumber(num) === "string") return val * 1.1; }, aiUseful: (player, card, val) => { if (card.name == "wuxie") return 0; var num = get.number(card); - if ([1, 11, 12, 13].includes(num)) return val * 1.1; + if (typeof get.strNumber(num) === "string") return val * 1.1; }, aiOrder: (player, card, order) => { if (get.name(card) == "sha" && player.hasSkill("oltuishi_unlimit")) order += 9; var num = get.number(card); - if ([1, 11, 12, 13].includes(num)) order += 3; + if (typeof get.strNumber(num) === "string") order += 3; return order; }, }, @@ -5489,7 +5489,7 @@ const skills = { .indexOf(event) >= 2 ); } - return [1, 11, 12, 13].includes(get.number(event.card)); + return typeof get.strNumber(get.number(event.card)) === "string"; }, forced: true, content: function () { diff --git a/noname/get/index.js b/noname/get/index.js index 5b98428fc0..49c790e88d 100644 --- a/noname/get/index.js +++ b/noname/get/index.js @@ -2770,10 +2770,7 @@ export class Get extends GetCompatible { } } if ((str.suit && str.number) || str.isCard) { - var cardnum = get.number(str, false) || ""; - if ([1, 11, 12, 13].includes(cardnum)) { - cardnum = { 1: "A", 11: "J", 12: "Q", 13: "K" }[cardnum]; - } + var cardnum = get.strNumber(get.number(str, false), true) || ""; if (arg == "viewAs" && str.viewAs != str.name && str.viewAs) { str2 += "(" + get.translation(str) + ")"; } else { @@ -2840,40 +2837,32 @@ export class Get extends GetCompatible { /** * 返回数字在扑克牌中的表示形式 * @param { number } num + * @param { boolean } [forced] 未获取点数字母对应元素时是否返回字符串格式 * @returns { string } */ - strNumber(num) { - switch (num) { - case 1: - return "A"; - case 11: - return "J"; - case 12: - return "Q"; - case 13: - return "K"; - default: - return num.toString(); - } + strNumber(num, forced) { + if (typeof num !== "number") return; + let result = lib.numstrList.entries().reduce((map, list) => { + map[list[0]] = list[1]; + return map; + }, {})[num]; + if (result === undefined && forced) result = num.toString(); + return result; } /** * 返回扑克牌中的表示形式对应的数字 * @param { string } str + * @param { boolean } [forced] 未获取字母点数对应元素时是否返回数字格式 * @returns { number } */ - numString(str) { - switch (str) { - case "A": - return 1; - case "J": - return 11; - case "Q": - return 12; - case "K": - return 13; - default: - return parseInt(str); - } + numString(str, forced) { + if (typeof str !== "string") return; + let result = lib.numstrList.entries().reduce((map, list) => { + map[list[1]] = list[0]; + return map; + }, {})[str]; + if (result === undefined && forced) result = parseInt(str); + return result; } /** * 将阿拉伯数字转换为中文的表达形式 diff --git a/noname/library/element/card.js b/noname/library/element/card.js index e5abc1e1aa..6838b31506 100644 --- a/noname/library/element/card.js +++ b/noname/library/element/card.js @@ -311,23 +311,7 @@ export class Card extends HTMLDivElement { var info = lib.card[card[2]]; var cardnum = card[1] || ""; if (parseInt(cardnum) == cardnum) cardnum = parseInt(cardnum); - if (cardnum > 0 && cardnum < 14) { - cardnum = [ - "A", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "J", - "Q", - "K", - ][cardnum - 1]; - } + cardnum = get.strNumber(cardnum, true) || ""; if (this.name) { this.classList.remove("epic"); this.classList.remove("legend"); diff --git a/noname/library/index.js b/noname/library/index.js index 816d43b858..da3f36bc24 100644 --- a/noname/library/index.js +++ b/noname/library/index.js @@ -13490,6 +13490,13 @@ export class Library { }, }, }; + //为lib.numstrList属性set数字对应花色,即可在get.strNumber和get.numString中获取使用 + numstrList = new Map([ + [1, "A"], + [11, "J"], + [12, "Q"], + [13, "K"], + ]); suit = ["club", "spade", "diamond", "heart"]; suits = ["club", "spade", "diamond", "heart", "none"]; color = { From a3c457f3e80da6755e6b573df33203b6e5b58515 Mon Sep 17 00:00:00 2001 From: MengXinZXZ <2223529500@qq.com> Date: Sun, 27 Oct 2024 21:14:59 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E7=AE=80=E5=8C=96strNumber?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- noname/get/index.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/noname/get/index.js b/noname/get/index.js index 49c790e88d..4f379d7a96 100644 --- a/noname/get/index.js +++ b/noname/get/index.js @@ -2842,10 +2842,7 @@ export class Get extends GetCompatible { */ strNumber(num, forced) { if (typeof num !== "number") return; - let result = lib.numstrList.entries().reduce((map, list) => { - map[list[0]] = list[1]; - return map; - }, {})[num]; + let result = lib.numstrList.get(num); if (result === undefined && forced) result = num.toString(); return result; } From b731eb5242f29d39e70987bf95b55108d5020fd2 Mon Sep 17 00:00:00 2001 From: MengXinZXZ <2223529500@qq.com> Date: Sun, 27 Oct 2024 21:21:50 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=B8=85=E6=B2=B3=E5=85=AC=E4=B8=BB?= =?UTF-8?q?=E3=80=90=E9=95=BF=E5=A7=AC=E3=80=91=E6=91=B8=E7=89=8C=E6=97=B6?= =?UTF-8?q?=E6=9C=BA=E5=86=8D=E6=AC=A1=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/xianding/skill.js | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/character/xianding/skill.js b/character/xianding/skill.js index c2bbe587fc..8f5c9f24d9 100644 --- a/character/xianding/skill.js +++ b/character/xianding/skill.js @@ -4751,22 +4751,7 @@ const skills = { trigger.targets = [player, ...trigger.targets.remove(player)]; evtx.targets = [player, ...evtx.targets.remove(player)]; evtx.triggeredTargets4 = [player, ...evtx.triggeredTargets4.remove(player)]; - player - .when({ - global: "eventNeutralized", - target: ["useCardToBegin", "useCardToExcluded", "useCardToIgnored"], - }) - .filter((evt, _, name) => { - if (evt.getParent().targets.length <= 1) return false; - if (name === "evtNeutralized") { - if (evt._neutralize_event.type != "card" || evt.type != "card") return false; - return evt._neutralize_event.card === trigger.card; - } - return evt.getParent() == trigger.getParent(); - }) - .then(() => { - player.draw(trigger.getParent().targets.length - 1); - }); + await player.draw(evtx.targets.length - 1); }, }, dczengou: { From 5edc7241d73d854ada027399061f1b344d955c44 Mon Sep 17 00:00:00 2001 From: MengXinZXZ <2223529500@qq.com> Date: Sun, 27 Oct 2024 21:27:00 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E8=AF=B8=E8=91=9B=E8=AF=9E=E3=80=90?= =?UTF-8?q?=E6=91=A7=E5=86=B0=E3=80=91bugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/jsrg/skill.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/jsrg/skill.js b/character/jsrg/skill.js index e4deff85a4..569aa633d7 100644 --- a/character/jsrg/skill.js +++ b/character/jsrg/skill.js @@ -11231,7 +11231,7 @@ const skills = { } else break; } else break; } - } else if (numx < num) { + } else { await player.drawTo(num); player.addTempSkill("jsrgcuibing_keji"); } From 401635f5afaceba4b2f81d911098f759d9d7be0f Mon Sep 17 00:00:00 2001 From: MengXinZXZ <2223529500@qq.com> Date: Sun, 27 Oct 2024 21:38:01 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=9D=8E=E8=B5=B5=E3=80=90=E6=85=88?= =?UTF-8?q?=E8=8D=AB=E3=80=91bugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/tw/skill.js | 50 ++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/character/tw/skill.js b/character/tw/skill.js index 191d505b8e..eb758f7583 100644 --- a/character/tw/skill.js +++ b/character/tw/skill.js @@ -637,13 +637,16 @@ const skills = { }, filter(event, player) { if (!event.gaintag.includes("twciyin")) return false; - const cards = player.getExpansions("twciyin"); const history = game.getAllGlobalHistory("everything", evt => evt.name == "twciyin_heart" && evt.player == player); const limit = history.map(evt => evt.cost_data).flat(); - return (cards.length % 3 == 0 || event.cards.length > 2) && (!limit.includes("选项一") || (!limit.includes("选项二") && player.countCards("h") < player.maxHp)); + return !limit.includes("选项一") || (!limit.includes("选项二") && player.countCards("h") < player.maxHp); + }, + getIndex(event, player) { + const history = game.getAllGlobalHistory("everything", evt => evt.name == "twciyin_heart" && evt.player == player); + const limit = history.map(evt => evt.cost_data).flat(); + return Math.floor(player.getExpansions("twciyin").length / 3) - limit.length; }, async cost(event, trigger, player) { - const goon = player.getExpansions("twciyin").length > 5; const history = game.getAllGlobalHistory("everything", evt => evt.name == "twciyin_heart" && evt.player == player); const limit = history.map(evt => evt.cost_data).flat(); const choices = []; @@ -652,30 +655,23 @@ const skills = { else choiceList[0] = '' + choiceList[0] + ""; if (!limit.includes("选项二") && player.countCards("h") < player.maxHp) choices.push("选项二"); else choiceList[1] = '' + choiceList[1] + ""; - if (goon && !history.length && choices.length == 2) { - event.result = { - bool: true, - cost_data: choices, - }; - } else { - const control = - choices.length == 1 - ? choices[0] - : await player - .chooseControl(choices) - .set("prompt", get.prompt("twciyin")) - .set("choiceList", choiceList) - .set("ai", () => { - const player = get.player(), - num = player.maxHp - player.countCards("h"); - return get.recoverEffect(player, player, player) > get.effect(player, { name: "draw" }, player, player) * num ? "选项一" : "选项二"; - }) - .forResultControl(); - event.result = { - bool: true, - cost_data: [control], - }; - } + const control = + choices.length == 1 + ? choices[0] + : await player + .chooseControl(choices) + .set("prompt", get.prompt("twciyin")) + .set("choiceList", choiceList) + .set("ai", () => { + const player = get.player(), + num = player.maxHp - player.countCards("h"); + return get.recoverEffect(player, player, player) > get.effect(player, { name: "draw" }, player, player) * num ? "选项一" : "选项二"; + }) + .forResultControl(); + event.result = { + bool: true, + cost_data: [control], + }; }, async content(event, trigger, player) { if (event.cost_data.includes("选项一")) {