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("选项一")) {