From 1c362ced96a3fdb8e32c868712681907e2c3a649 Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Sun, 5 May 2024 16:39:44 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=90=B4=E5=85=B0=E3=80=90=E6=8C=AB?= =?UTF-8?q?=E9=94=90=E3=80=91bugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/xianding/skill.js | 226 +++++++++++++++--------------------- 1 file changed, 94 insertions(+), 132 deletions(-) diff --git a/character/xianding/skill.js b/character/xianding/skill.js index a05a72fc2..f88e4c822 100644 --- a/character/xianding/skill.js +++ b/character/xianding/skill.js @@ -15520,7 +15520,6 @@ const skills = { wlcuorui: { audio: 2, trigger: { player: "phaseUseBegin" }, - direct: true, filter: function (event, player) { if (!["identity", "guozhan"].includes(get.mode())) { return game.hasPlayer(function (current) { @@ -15531,52 +15530,37 @@ const skills = { return get.distance(player, current) <= 1 && current.countDiscardableCards(player, "hej") > 0; }); }, + async cost(event, trigger, player){ + if (!["identity", "guozhan"].includes(get.mode())) { + event.result = await player.chooseTarget(function (card, player, target) { + return target.isFriendOf(player) && target.countDiscardableCards(player, "hej") > 0; + }, get.prompt2("wlcuorui")).set("ai", function (target) { + if (target.countCards("e", function (card) { + return card.name != "tengjia" && get.value(card, target) <= 0; + })) return 10; + if (target.countCards("j", function (card) { + return get.effect(target, { name: card.viewAs || card.name }, target, target) < 0; + })) return 10; + return Math.random() + 0.2 - 1 / target.countCards("hej"); + }).forResult(); + } else { + event.result = await player.chooseTarget(function (card, player, target) { + return get.distance(player, target) <= 1 && target.countDiscardableCards(player, "hej") > 0; + }, get.prompt2("wlcuorui")).set("ai", function (target) { + if (game.hasPlayer(current => { + return current != target && get.attitude(_status.event.player, current) < 0; + })) return get.effect(target, { name: "guohe" }, player, player) + 10; + return 0; + }).forResult(); + } + }, content: function () { "step 0"; - if (!["identity", "guozhan"].includes(get.mode())) { - player - .chooseTarget(function (card, player, target) { - return target.isFriendOf(player) && target.countDiscardableCards(player, "hej") > 0; - }, get.prompt2("wlcuorui")) - .set("ai", function (target) { - if ( - target.countCards("e", function (card) { - return card.name != "tengjia" && get.value(card, target) <= 0; - }) - ) - return 10; - if ( - target.countCards("j", function (card) { - return get.effect(target, { name: card.viewAs || card.name }, target, target) < 0; - }) - ) - return 10; - return Math.random() + 0.2 - 1 / target.countCards("hej"); - }); - } else { - player - .chooseTarget(function (card, player, target) { - return get.distance(player, target) <= 1 && target.countDiscardableCards(player, "hej") > 0; - }, get.prompt2("wlcuorui")) - .set("ai", function (target) { - if ( - game.hasPlayer(current => { - return current != target && get.attitude(_status.event.player, current) < 0; - }) - ) - return get.effect(target, { name: "guohe" }, player, player) + 10; - return 0; - }); - } + var target = targets[0]; + event.target = target; + player.discardPlayerCard(target, "hej", true); + if (["identity", "guozhan"].includes(get.mode())) event.goto(6); "step 1"; - if (result.bool) { - var target = result.targets[0]; - event.target = target; - player.logSkill("wlcuorui", target); - player.discardPlayerCard(target, "hej", true); - if (["identity", "guozhan"].includes(get.mode())) event.goto(7); - } else event.finish(); - "step 2"; if (!result.cards || !result.cards.length) { event.finish(); return; @@ -15584,64 +15568,46 @@ const skills = { var color = get.color(result.cards[0], result.cards[0].original == "j" ? false : target); event.color = color; var list = []; - if ( - game.hasPlayer(function (current) { - return (get.mode() == "versus" ? current.isEnemyOf(player) : current != player && current != target) && current.countCards("h"); - }) - ) - list.push("展示手牌"); - if ( - game.hasPlayer(function (current) { - return (get.mode() == "versus" ? current.isEnemyOf(player) : current != player && current != target) && current.countCards("e", { color: color }); - }) - ) - list.push("弃置装备"); + if (game.hasPlayer(function (current) { + return (get.mode() == "versus" ? current.isEnemyOf(player) : current != player && current != target) && current.countCards("h"); + })) list.push("展示手牌"); + if (game.hasPlayer(function (current) { + return (get.mode() == "versus" ? current.isEnemyOf(player) : current != player && current != target) && current.countCards("e", { color: color }); + })) list.push("弃置装备"); if (!list.length) { event.finish(); return; } if (list.length == 1) event._result = { control: list[0] }; - else - player - .chooseControl(list) - .set("prompt", "挫锐:展示对手的至多两张手牌,或弃置对手装备区内至多两张" + get.translation(color) + "牌") - .set("ai", function () { - var player = _status.event.player; - var color = _status.event.getParent().color; - if ( - game.countPlayer(function (current) { - if (!current.isEnemyOf(player)) return false; - return current.countCards("e", function (card) { - return get.color(card) == color && get.value(card) > 0; - }); - }) > 1 - ) - return 1; - return 0; + else player.chooseControl(list).set("prompt", "挫锐:展示对手的至多两张手牌,或弃置对手装备区内至多两张" + get.translation(color) + "牌").set("ai", function () { + var player = _status.event.player; + var color = _status.event.getParent().color; + if (game.countPlayer(function (current) { + if (!current.isEnemyOf(player)) return false; + return current.countCards("e", function (card) { + return get.color(card) == color && get.value(card) > 0; }); - "step 3"; + }) > 1) return 1; + return 0; + }); + "step 2"; if (result.control == "弃置装备") event.goto(5); else { var dialog = ["请选择要展示的牌"]; - var list = game - .filterPlayer(function (current) { - return current.isEnemyOf(player) && current.countCards("h"); - }) - .sortBySeat(); + var list = game.filterPlayer(function (current) { + return current.isEnemyOf(player) && current.countCards("h"); + }).sortBySeat(); for (var i of list) { dialog.push('
' + get.translation(i) + "
"); if (player.hasSkillTag("viewHandcard", null, i, true)) dialog.push(i.getCards("h")); else dialog.push([i.getCards("h"), "blank"]); } - player - .chooseButton([1, 2], true) - .set("createDialog", dialog) - .set("ai", function (button) { - var color = get.color(button.link) == _status.event.getParent().color; - return color ? Math.random() : 0.35; - }); + player.chooseButton([1, 2], true).set("createDialog", dialog).set("ai", function (button) { + var color = get.color(button.link) == _status.event.getParent().color; + return color ? Math.random() : 0.35; + }); } - "step 4"; + "step 3"; player.showCards(result.links); var map = {}; var map2 = {}; @@ -15663,34 +15629,27 @@ const skills = { return lib.sort.seat(a.source || a.player, b.source || b.player); }); event.finish(); - "step 5"; + "step 4"; var dialog = ["请选择要弃置的牌"]; - var list = game - .filterPlayer(function (current) { - return ( - current.isEnemyOf(player) && - current.countCards("e", function (card) { - return get.color(card) == event.color; - }) - ); - }) - .sortBySeat(); - for (var i of list) { - dialog.push('
' + get.translation(i) + "
"); - dialog.push( - i.getCards("e", function (card) { + var list = game.filterPlayer(function (current) { + return ( + current.isEnemyOf(player) && + current.countCards("e", function (card) { return get.color(card) == event.color; }) ); + }).sortBySeat(); + for (var i of list) { + dialog.push('
' + get.translation(i) + "
"); + dialog.push(i.getCards("e", function (card) { + return get.color(card) == event.color; + })); } - player - .chooseButton([1, 2], true) - .set("createDialog", dialog) - .set("ai", function (button) { - var owner = get.owner(button.link); - return get.value(button.link, owner); - }); - "step 6"; + player.chooseButton([1, 2], true).set("createDialog", dialog).set("ai", function (button) { + var owner = get.owner(button.link); + return get.value(button.link, owner); + }); + "step 5"; var map = {}; for (var i of result.links) { if (get.color(i) != event.color) continue; @@ -15705,45 +15664,48 @@ const skills = { return lib.sort.seat(a.player, b.player); }); event.finish(); - "step 7"; + "step 6"; if (!result.cards || !result.cards.length) { event.finish(); return; } - if ( - game.hasPlayer(current => { - return current.countCards("he") > 0 && current != player && current != target; - }) - ) { - var color = get.color(result.cards[0], result.cards[0].original == "j" ? false : target); + var color = get.color(result.cards[0], result.cards[0].original == "j" ? false : target); + if (game.hasPlayer(current => { + return current != player && current != target && current.hasCard(card => { + const position = get.position(card); + if (position === "h") return true; + return position === "e" && get.color(card, current) === color; + }, "he"); + })) { event.color = color; var next = player.chooseTarget(true, "挫锐:选择另一名其他角色", "弃置该角色装备区里至多两张" + get.translation(event.color) + "牌;或展示该角色的至多两张手牌,然后获得其中的" + get.translation(event.color) + "牌"); next.set("filterTarget", (card, player, target) => { - return target.countCards("he") > 0 && target != player && target != _status.event.getParent().target; + const evt = get.event().getParent(), color = evt.color; + return target != player && target != evt.target && target.hasCard(card => { + const position = get.position(card); + if (position === "h") return true; + return position === "e" && get.color(card, target) === color; + }, "he"); }); next.set("ai", target => { return -get.attitude(_status.event.player, target) * target.countCards("he") + 0.1; }); } else event.finish(); - "step 8"; + "step 7"; if (result.bool) { var targetx = result.targets[0]; event.targetx = targetx; player.line(targetx); - player - .choosePlayerCard(targetx, "he", true, [1, 2]) - .set("prompt", "展示至多两张手牌,或弃置至多两张" + get.translation(event.color) + "装备") - .set("filterButton", button => { - if (ui.selected.buttons.length) { - var linkx = ui.selected.buttons[0].link; - if (get.position(button.link) != get.position(linkx)) return false; - } - if (get.position(button.link) == "e") return get.color(button.link, _status.event.target) == _status.event.getParent().color; - return true; - }) - .set("target", targetx); + player.choosePlayerCard(targetx, "he", true, [1, 2]).set("prompt", "展示至多两张手牌,或弃置至多两张" + get.translation(event.color) + "装备").set("filterButton", button => { + if (ui.selected.buttons.length) { + var linkx = ui.selected.buttons[0].link; + if (get.position(button.link) != get.position(linkx)) return false; + } + if (get.position(button.link) == "e") return get.color(button.link, _status.event.target) == _status.event.getParent().color; + return true; + }).set("target", targetx); } else event.finish(); - "step 9"; + "step 8"; if (result.bool) { var cards = result.links; if (get.position(cards[0]) == "e") { From 3da752aa0e32759e2a17d255ff505e8b959325ca Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Sun, 5 May 2024 16:50:26 +0800 Subject: [PATCH 2/9] minor fix --- character/jsrg/skill.js | 24 +++++------------------- character/tw/character.js | 2 +- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/character/jsrg/skill.js b/character/jsrg/skill.js index 86da960b3..36a85cd8e 100644 --- a/character/jsrg/skill.js +++ b/character/jsrg/skill.js @@ -3340,29 +3340,16 @@ const skills = { charlotte: true, direct: true, check: function (event, player) { - return ( - player - .getCards("h") - .map(i => get.value(i)) - .reduce((p, c) => p + c, 0) < - event.player - .getCards("h") - .map(i => get.value(i)) - .reduce((p, c) => p + c, 0) + - 4 * Math.random() - ); + return (player.getCards("h").map(i => get.value(i)).reduce((p, c) => p + c, 0) < event.player.getCards("h").map(i => get.value(i)).reduce((p, c) => p + c, 0) + 4 * Math.random()); }, content: function () { "step 0"; + player.unmarkAuto("jsrgguiji_swapback", [trigger.player]); if (trigger.name == "phaseUse") { - player - .chooseBool(get.prompt("jsrgguiji_swapback", trigger.player), "与其交换手牌。") - .set("ai", () => { - return get.event("bool"); - }) - .set("bool", lib.skill.jsrgguiji_swapback.check(trigger, player) > 0); + player.chooseBool(get.prompt("jsrgguiji_swapback", trigger.player), "与其交换手牌。").set("ai", () => { + return get.event("bool"); + }).set("bool", lib.skill.jsrgguiji_swapback.check(trigger, player) > 0); } else { - player.unmarkAuto("jsrgguiji_swapback", [trigger.player]); event.finish(); } "step 1"; @@ -3370,7 +3357,6 @@ const skills = { player.logSkill("jsrgguiji_swapback", trigger.player); player.swapHandcards(trigger.player); } - player.unmarkAuto("jsrgguiji_swapback", [trigger.player]); }, intro: { content: "$的下个出牌阶段结束时,你可以与其交换手牌", diff --git a/character/tw/character.js b/character/tw/character.js index a5d41a217..5d6e9cd83 100644 --- a/character/tw/character.js +++ b/character/tw/character.js @@ -66,7 +66,7 @@ const characters = { tw_daxiaoqiao: ["female", "wu", 3, ["twxingwu", "twpingting"], ["tempname:daxiaoqiao"]], tw_furong: ["male", "shu", 4, ["twxuewei", "twliechi"]], tw_yl_luzhi: ["male", "qun", 3, ["twmingren", "twzhenliang"]], - tw_liuzhang: ["male", "qun", 3, ["jutu", "twyaohu", "rehuaibi"]], + tw_liuzhang: ["male", "qun", 3, ["jutu", "twyaohu", "rehuaibi"], ["zhu"]], tw_zongyu: ["male", "shu", 3, ["twzhibian", "twyuyan"]], tw_zhouchu: ["male", "wu", 4, ["twguoyi", "twchuhai"]], tw_qiaogong: ["male", "wu", 3, ["twyizhu", "twluanchou"]], From cbf59815ab42654ffe1dc3ddd2acd9abc64da820 Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Sun, 5 May 2024 17:33:06 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E9=83=AD=E5=9B=BE=E3=80=81=E5=85=AC?= =?UTF-8?q?=E5=AD=99=E6=B8=8A=E7=BB=93=E7=AE=97=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/refresh/skill.js | 33 +++++++++++++++++----------- character/sp/skill.js | 38 ++++++++++++-------------------- character/sp/translate.js | 2 +- character/yijiang/skill.js | 44 +++++++++++++++++++++++++------------- mode/guozhan.js | 42 +++++++++++++++++++----------------- noname/library/index.js | 2 ++ 6 files changed, 89 insertions(+), 72 deletions(-) diff --git a/character/refresh/skill.js b/character/refresh/skill.js index c834b3b1c..cb2901f96 100644 --- a/character/refresh/skill.js +++ b/character/refresh/skill.js @@ -7237,25 +7237,34 @@ const skills = { content: function () { "step 0"; player.showHandcards(); - if (get.color(player.getCards("h")) != "none") { + 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; + })) { player.draw(); player.addTempSkill("rehuaiyi2", "phaseUseEnd"); event.finish(); } "step 1"; - player.chooseControl("红色", "黑色").set("ai", function () { - var player = _status.event.player; - if (player.countCards("h", { color: "red" }) == 1 && player.countCards("h", { color: "black" }) > 1) return "红色"; - return "黑色"; + + const list = [], bannedList = [], indexs = Object.keys(lib.color); + player.getCards("h").forEach(card => { + const color = get.color(card, player); + list.add(color); + if (!lib.filter.cardDiscardable(card, player, "rehuaiyi")) bannedList.add(color); }); + 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", "请选择弃置一种颜色的所有手牌"); "step 2"; - event.control = result.control; - var cards; - if (event.control == "红色") { - cards = player.getCards("h", { color: "red" }); - } else { - cards = player.getCards("h", { color: "black" }); - } + event.control = result.control.slice(0, result.control.length - 1); + var cards = player.getCards("h", {color: event.control}); player.discard(cards); event.num = cards.length; "step 3"; diff --git a/character/sp/skill.js b/character/sp/skill.js index 195071e2b..26032af71 100644 --- a/character/sp/skill.js +++ b/character/sp/skill.js @@ -677,7 +677,8 @@ const skills = { content: "expansion", markcount: "expansion", mark(dialog, storage, player) { - return "共扣置" + get.cnNumber(player.getExpansions("olqushi_effect").length) + "张“趋”"; + if (storage.some(source => source.isUnderControl(true))) dialog.add(player.getExpansions("olqushi_effect")); + else return "共扣置" + get.cnNumber(player.getExpansions("olqushi_effect").length) + "张“趋”"; }, }, trigger: { player: "phaseJieshuBegin" }, @@ -687,29 +688,18 @@ const skills = { const cards = player.getExpansions("olqushi_effect"); if (cards.length) { await player.loseToDiscardpile(cards); - const targets = player - .getStorage("olqushi_effect") - .filter(i => { - return i.isIn(); - }) - .sortBySeat(); - const num = Math.min( - player - .getHistory("useCard", evt => { - return evt.targets && evt.targets.length; - }) - .reduce((sum, evt) => { - return sum + evt.targets.length; - }, 0), - 5 - ); - if ( - targets.length && - player.getHistory("useCard", evt => { - return cards.some(card => get.type2(card) == get.type2(evt.card)); - }).length && - num - ) { + const targets = player.getStorage("olqushi_effect").filter(i => { + return i.isIn(); + }).sortBySeat(); + const num = Math.min(player.getHistory("useCard", evt => { + return evt.targets && evt.targets.length; + }).reduce((targets, evt) => { + targets.addArray(evt.targets); + return targets; + }, []).length, 5); + if (targets.length && num>0 && player.getHistory("useCard", evt => { + return cards.some(card => get.type2(card) == get.type2(evt.card)); + }).length) { for (const target of targets) await target.draw(num); } } diff --git a/character/sp/translate.js b/character/sp/translate.js index 311d951f0..3fa69ccb9 100644 --- a/character/sp/translate.js +++ b/character/sp/translate.js @@ -1218,7 +1218,7 @@ const translates = { olchongshen_info: "你可以将本轮得到的红色手牌当作【闪】使用。", guotu: "郭图", olqushi: "趋势", - olqushi_info: "出牌阶段限一次,你可以摸一张牌,然后将一张手牌扣置于一名其他角色的武将牌上,称为“趋”。目标角色于其结束阶段移去武将牌上的所有“趋”,若其于本回合使用过与“趋”相同类别的牌,则你摸X张牌(X为其本回合使用牌指定过的目标数之和且至多为5)。", + olqushi_info: "出牌阶段限一次,你可以摸一张牌,然后将一张手牌扣置于一名其他角色的武将牌上,称为“趋”。目标角色于其结束阶段移去武将牌上的所有“趋”,若其于本回合使用过与“趋”相同类别的牌,则你摸X张牌(X为其本回合被其使用牌指定过的角色数总和且至多为5)。", olweijie: "诿解", olweijie_info: "回合外每名角色的回合限一次,当你需要使用或打出一张基本牌时,你可以弃置距离为1的一名角色的一张手牌,若此牌牌名与你需要使用或打出的牌的牌名相同,则视为你使用或打出之。", liupan: "刘磐", diff --git a/character/yijiang/skill.js b/character/yijiang/skill.js index d4c5429c0..5ddfcc4e3 100644 --- a/character/yijiang/skill.js +++ b/character/yijiang/skill.js @@ -8374,25 +8374,36 @@ const skills = { usable: 1, delay: false, filter: function (event, player) { - return player.countCards("h", { color: "red" }) && player.countCards("h", { color: "black" }); + return player.countCards("h") > 0; }, content: function () { "step 0"; player.showHandcards(); - "step 1"; - player.chooseControl("红色", "黑色").set("ai", function () { - var player = _status.event.player; - if (player.countCards("h", { color: "red" }) == 1 && player.countCards("h", { color: "black" }) > 1) return "红色"; - return "黑色"; - }); - "step 2"; - event.control = result.control; - var cards; - if (event.control == "红色") { - cards = player.getCards("h", { color: "red" }); - } else { - cards = player.getCards("h", { color: "black" }); + 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); + player.getCards("h").forEach(card => { + const color = get.color(card, player); + list.add(color); + if (!lib.filter.cardDiscardable(card, player, "huaiyi")) bannedList.add(color); + }); + 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", "请选择弃置一种颜色的所有手牌"); + "step 2"; + event.control = result.control.slice(0, result.control.length - 1); + var cards = player.getCards("h", {color: event.control}); player.discard(cards); event.num = cards.length; "step 3"; @@ -8431,7 +8442,10 @@ const skills = { return 1; }, result: { - player: 1, + player:(player) => { + if (get.color(player.getCards("h")) != "none") return 0; + return 1; + }, }, }, }, diff --git a/mode/guozhan.js b/mode/guozhan.js index cfc5752bb..145724a6b 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -6475,30 +6475,32 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { delay: false, content: function () { "step 0"; - var map = {}; player.showHandcards(); - for (var i of ["red", "black", "none"]) { - if (player.countCards("h", { color: i })) map[i] = true; + var 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(); } - if (Object.keys(map).length < 2) event.finish(); - else event.map = map; "step 1"; - var mapx = { red: "红色", black: "黑色", none: "无色" }; - player - .chooseControl(Object.keys(event.map).map((color) => mapx[color])) - .set("ai", function () { - var list = _status.event.controls; - var map = { 红色: "red", 黑色: "black", 无色: "none" }; - return list.sort( - (a, b) => - player.countCards("h", { color: map[a] }) - - player.countCards("h", { color: map[b] }) - )[0]; - }) - .set("prompt", "怀异:弃置一种颜色的所有牌"); + const list = [], bannedList = [], indexs = Object.keys(lib.color); + player.getCards("h").forEach(card => { + const color = get.color(card, player); + list.add(color); + if (!lib.filter.cardDiscardable(card, player, "gzrehuaiyi")) bannedList.add(color); + }); + 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", "请选择弃置一种颜色的所有手牌"); "step 2"; - var map = { 红色: "red", 黑色: "black", 无色: "none" }; - var cards = player.getCards("h", { color: map[result.control] }); + event.control = result.control.slice(0, result.control.length - 1); + var cards = player.getCards("h", {color: event.control}); player.discard(cards); event.num = cards.length; "step 3"; diff --git a/noname/library/index.js b/noname/library/index.js index bb22a84e9..392111ffe 100644 --- a/noname/library/index.js +++ b/noname/library/index.js @@ -9318,6 +9318,8 @@ export class Library { none2: "无色", red: "红色", black: "黑色", + red2: "红色", + black2: "黑色", ok: "确定", ok2: "确定", cancel: "取消", From 9e674d41240c8b8de8653ef8dfd6d1e33b8e91c7 Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Sun, 5 May 2024 17:41:01 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E5=BA=93=E7=89=B9=E8=8E=89=E4=BA=9A?= =?UTF-8?q?=E8=8A=99=E5=8D=A1=E3=80=90=E5=B7=A7=E6=89=8B=E3=80=91bugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/key/skill.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/character/key/skill.js b/character/key/skill.js index ab0d089bd..1a835047c 100644 --- a/character/key/skill.js +++ b/character/key/skill.js @@ -1251,15 +1251,17 @@ const skills = { } }, async content(event, trigger, player) { - await player.addToExpansion(event.cards, player, "give").gaintag.add("kud_qiaoshou_equip"); + const next = player.addToExpansion(event.cards, player, "give"); + next.gaintag.add("kud_qiaoshou_equip"); + await next; if (!player.getExpansions("kud_qiaoshou_equip").length) return; player.addTempSkill("kud_qiaoshou_equip", { player: ["phaseUseEnd", "phaseZhunbeiBegin"], }); - var name = event.cost_data.cardname; + const name = event.cost_data.cardname; player.storage.kud_qiaoshou_equip2 = name; - player.markAuto("kud_qiaoshou_equip", cards); - var info = lib.card[name].skills; + player.markAuto("kud_qiaoshou_equip", event.cards); + const info = lib.card[name].skills; if (info && info.length) player.addAdditionalSkill("kud_qiaoshou_equip", info); game.log(player, "声明了", "#y" + get.translation(name)); await player.draw(); From 20022976f356f249485e74636454bef2dce4f4b3 Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Sun, 5 May 2024 17:45:15 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E7=89=B5=E6=8B=9B=20=E6=B6=89=E5=8F=8A?= =?UTF-8?q?=E6=94=B9=E5=88=A4=E6=8A=80=E8=83=BD=E6=97=B6bug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/sp/skill.js | 42 +++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/character/sp/skill.js b/character/sp/skill.js index 26032af71..7deb6710d 100644 --- a/character/sp/skill.js +++ b/character/sp/skill.js @@ -3406,30 +3406,28 @@ const skills = { return player.hasCard(card => lib.filter.cardDiscardable(card, player), "he"); }, check: function (card) { - var player = _status.event.player; + var player = get.player(); return (5 - get.value(card)) / Math.pow(Math.max(0.1, player.getUseValue(card)), 0.33); }, content: function () { "step 0"; - player - .judge(card => { - var evt = _status.event.getParent(); - var cardx = evt.cards[0]; - if (get.type2(card) == get.type2(cardx)) return 0.5; - return 0.1; - }) - .set("callback", function () { - var card = event.judgeResult.card; - player.addTempSkill("olweifu_clear"); - player.addTempSkill("olweifu_add"); - if (!get.is.object(player.storage.olweifu_add)) player.storage.olweifu_add = {}; - var type = get.type2(card, player); - if (typeof player.storage.olweifu_add[type] != "number") player.storage.olweifu_add[type] = 0; - player.storage.olweifu_add[type]++; - player.markSkill("olweifu_add"); - if (type == get.type2(event.getParent(2).cards[0], player)) player.draw(); - }) - .set("judge2", result => result.bool); + player.judge(card => { + var evt = get.event().getParent("olweifu"); + if (evt.name !== "olweifu") return 0; + var cardx = evt.cards[0]; + if (get.type2(card) == get.type2(cardx)) return 0.5; + return 0.1; + }).set("callback", function () { + var card = event.judgeResult.card; + player.addTempSkill("olweifu_clear"); + player.addTempSkill("olweifu_add"); + if (!get.is.object(player.storage.olweifu_add)) player.storage.olweifu_add = {}; + var type = get.type2(card, player); + if (typeof player.storage.olweifu_add[type] != "number") player.storage.olweifu_add[type] = 0; + player.storage.olweifu_add[type]++; + player.markSkill("olweifu_add"); + if (type == get.type2(event.getParent(2).cards[0], player)) player.draw(); + }).set("judge2", result => result.bool); }, ai: { order: 7, @@ -3447,9 +3445,7 @@ const skills = { 1 > (get.is.object(player.storage.olweifu_add) ? player.storage.olweifu_add[type] || 0 : 0) ); - }, "hs") - ? 1 - : 0; + }, "hs") ? 1 : 0; }, }, }, From 918b20a4e62a516b1619de3c280eda3d250b7f0e Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Sun, 5 May 2024 18:03:00 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E6=97=8F=E9=9F=A9=E9=9F=B6=20bug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/clan/skill.js | 76 +++++++++++++++++---------------------- character/collab/skill.js | 4 +-- character/huicui/skill.js | 8 +++-- 3 files changed, 39 insertions(+), 49 deletions(-) diff --git a/character/clan/skill.js b/character/clan/skill.js index fd4329b75..778eb456c 100644 --- a/character/clan/skill.js +++ b/character/clan/skill.js @@ -2355,72 +2355,60 @@ const skills = { filter(event, player) { return game.hasPlayer(current => player.canCompare(current)); }, - direct: true, + async cost(event, trigger, player){ + event.result = await player.chooseTarget(get.prompt("clanliuju"), "与一名其他角色拼点,输的角色可以使用任意张拼点牌中的非基本牌", (card, player, target) => { + return player.canCompare(target); + }).set("ai", target => { + var player = _status.event.player; + var ts = target.getCards("h").sort((a, b) => get.number(a) - get.number(b)); + if (get.attitude(player, target) < 0) { + var hs = player.getCards("h").sort((a, b) => get.number(a) - get.number(b)); + if (!hs.length || !ts.length) return 0; + if (get.type(hs[0], null, false) == "basic" && get.value(hs[0]) > 6) return 0; + if (get.number(hs[0]) < get.number(ts[0]) || get.type(hs[0], null, false) == "basic") return 1; + return Math.random() - 0.7; + } + return get.type(ts[0]) != "basic"; + }).forResult(); + }, content() { "step 0"; - player - .chooseTarget(get.prompt("clanliuju"), "与一名其他角色拼点,输的角色可以使用任意张拼点牌中的非基本牌", (card, player, target) => { - return player.canCompare(target); - }) - .set("ai", target => { - var player = _status.event.player; - var ts = target.getCards("h").sort((a, b) => get.number(a) - get.number(b)); - if (get.attitude(player, target) < 0) { - var hs = player.getCards("h").sort((a, b) => get.number(a) - get.number(b)); - if (!hs.length || !ts.length) return 0; - if (get.type(hs[0], null, false) == "basic" && get.value(hs[0]) > 6) return 0; - if (get.number(hs[0]) < get.number(ts[0]) || get.type(hs[0], null, false) == "basic") return 1; - return Math.random() - 0.7; - } - return get.type(ts[0]) != "basic"; - }); + var target = targets[0]; + event.target = target; + player.chooseToCompare(target).set("small", true); "step 1"; - if (result.bool) { - var target = result.targets[0]; - event.target = target; - player.logSkill("clanliuju", target); - player.chooseToCompare(target).set("small", true); - } else event.finish(); - "step 2"; if (!result.tie) { var loser = result.bool ? target : player; var cards = []; game.getGlobalHistory("cardMove", evt => { - if (evt.getParent(2) == event) - cards.addArray( - evt.cards.filter(i => { - return get.position(i, true) == "d" && get.type(i, null, false) != "basic"; - }) - ); + if (evt.getParent(2).name === "chooseToCompare" && evt.getParent(3) === event) cards.addArray(evt.cards.filter(i => { + return get.position(i, true) == "d" && get.type(i, null, false) != "basic"; + })); }); event.loser = loser; event.distance = [get.distance(player, target), get.distance(target, player)]; if (cards.length) event.cards = cards; else event.finish(); } else event.finish(); - "step 3"; + "step 2"; var cardsx = cards.filter(i => get.position(i, true) == "d" && event.loser.hasUseTarget(i)); if (!cardsx.length) event.goto(6); - else - event.loser - .chooseButton(["留驹:是否使用其中的一张牌?", cardsx]) - .set("filterButton", button => { - return _status.event.player.hasUseTarget(button.link); - }) - .set("ai", button => { - return _status.event.player.getUseValue(button.link) + 0.1; - }); - "step 4"; + else event.loser.chooseButton(["留驹:是否使用其中的一张牌?", cardsx]).set("filterButton", button => { + return _status.event.player.hasUseTarget(button.link); + }).set("ai", button => { + return _status.event.player.getUseValue(button.link) + 0.1; + }); + "step 3"; if (result.bool) { var card = result.links[0]; event.cards.remove(card); event.loser.$gain2(card, false); game.delayx(); event.loser.chooseUseTarget(true, card, false); - } else event.goto(6); - "step 5"; + } else event.goto(5); + "step 4"; if (cards.filter(i => get.position(i, true) == "d" && event.loser.hasUseTarget(i)).length) event.goto(3); - "step 6"; + "step 5"; if (get.distance(player, target) != event.distance[0] || get.distance(target, player) != event.distance[1]) { player.restoreSkill("clanxumin"); game.log(player, "重置了", "#g【恤民】"); diff --git a/character/collab/skill.js b/character/collab/skill.js index a883c5797..0d54eba03 100644 --- a/character/collab/skill.js +++ b/character/collab/skill.js @@ -20,9 +20,7 @@ const skills = { const map = lib.skill.dcbenxi.getMap(), list = Object.keys(map); if (list.length > 0) { - const skill = list.randomGet(), - voiceMap = game.parseSkillTextMap(skill, map[skill]); - console.log(voiceMap); + const skill = list.randomGet(), voiceMap = game.parseSkillTextMap(skill, map[skill]); player.storage.dcbenxi_pending = skill; findaudio: for (let data of voiceMap) { if(!data.text) continue; diff --git a/character/huicui/skill.js b/character/huicui/skill.js index 2bbbd4f66..6b46a1c7d 100644 --- a/character/huicui/skill.js +++ b/character/huicui/skill.js @@ -2793,8 +2793,12 @@ const skills = { trigger: { player: ["gainAfter", "loseAsyncAfter"] }, forced: true, filter: (event, player) => { - if (event.getParent("phaseDraw", true)) return false; - const evt = player.getHistory("gain", i => !i.getParent("phaseDraw", true))[0]; + const phaseDraw = event.getParent("phaseDraw"); + if (phaseDraw && phaseDraw.player === player) return false; + const evt = player.getHistory("gain").find(i => { + const phaseDraw = i.getParent("phaseDraw"); + return (!phaseDraw || phaseDraw.player !== player); + }); if (!evt) return false; if (event.name == "gain") { if (evt != event || event.getlx === false) return false; From 7374623a059b4140dc2bbf61c13eb9091f9dd0de Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Sun, 5 May 2024 18:06:01 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E6=99=8B=E5=8F=B8=E9=A9=AC=E6=87=BF=20mino?= =?UTF-8?q?r=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/yingbian/skill.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/yingbian/skill.js b/character/yingbian/skill.js index 074eaa9dc..c584c0568 100644 --- a/character/yingbian/skill.js +++ b/character/yingbian/skill.js @@ -2900,7 +2900,7 @@ const skills = { }, content: function () { var stat = player.getStat("skill"); - if (this.trigger.name === "phaseUse") { + if (trigger.name === "phaseUse") { delete stat.xinquanbian; } else { if (!stat.xinquanbian) stat.xinquanbian = 0; From cf7db29832d48fcb033783b6c10d7812eb5506d7 Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Sun, 5 May 2024 18:10:59 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E5=86=AF=E5=A6=A4=20=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/xianding/skill.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/character/xianding/skill.js b/character/xianding/skill.js index f88e4c822..eda58f1f6 100644 --- a/character/xianding/skill.js +++ b/character/xianding/skill.js @@ -12690,7 +12690,10 @@ const skills = { } else event.finish(); } else if (target.isLinked()) target.link(); "step 3"; - if (target.isIn()) target.addMark("baoshu", event.num2); + if (target.isIn()){ + target.addSkill("baoshu_draw"); + target.addMark("baoshu", event.num2); + } if (num < targets.length - 1) { event.num++; event.goto(2); @@ -12700,20 +12703,22 @@ const skills = { intro: { name2: "梳", content: "mark", + onunmark(storage, player){ + delete player.storage.baoshu; + player.removeSkill("baoshu_draw"); + } }, - group: "baoshu_draw", + //group: "baoshu_draw", subSkill: { draw: { - trigger: { global: "phaseDrawBegin2" }, + trigger: { player: "phaseDrawBegin2" }, forced: true, - popup: false, + charlotte: true, filter: function (event, player) { - return !event.numFixed && event.player.hasMark("baoshu"); + return !event.numFixed && player.hasMark("baoshu"); }, content: function () { - var target = trigger.player, - num = target.countMark("baoshu"); - trigger.player.logSkill("baoshu_draw"); + var num = player.countMark("baoshu"); trigger.num += num; trigger.player.removeMark("baoshu", num); }, From 7898a1d6ec88bc4248af170dd896588ab401fe49 Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Sun, 5 May 2024 18:58:14 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E4=B8=80=E5=A0=86bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/huicui/skill.js | 5 +++-- character/huicui/translate.js | 2 +- character/mobile/skill.js | 26 +++++++++++--------------- character/offline/skill.js | 3 ++- character/sp/skill.js | 3 ++- character/sp/translate.js | 2 +- character/tw/skill.js | 11 ++++------- character/xianding/translate.js | 2 +- mode/guozhan.js | 4 ++-- 9 files changed, 27 insertions(+), 31 deletions(-) diff --git a/character/huicui/skill.js b/character/huicui/skill.js index 6b46a1c7d..35f685c7b 100644 --- a/character/huicui/skill.js +++ b/character/huicui/skill.js @@ -743,7 +743,7 @@ const skills = { const evtx = evt.event; if (evtx.givenCards) names.addArray(evtx.givenCards.map(card => get.name(card, false))); }); - return names.length >= 5; + return names.length > 5; }, forced: true, juexingji: true, @@ -6446,7 +6446,8 @@ const skills = { "step 0"; player.give(cards, targets[0], "give"); "step 1"; - targets[0].chooseToCompare(targets[1]); + if (targets[0].canCompare(targets[1])) targets[0].chooseToCompare(targets[1]); + else event.finish(); "step 2"; player.addTempSkill("dcjianshu_check", "phaseUseAfter"); if (result.bool) { diff --git a/character/huicui/translate.js b/character/huicui/translate.js index 54a0afc75..a93a50c0c 100644 --- a/character/huicui/translate.js +++ b/character/huicui/translate.js @@ -504,7 +504,7 @@ const translates = { dcjichou: "集筹", dcjichou_info: "出牌阶段结束时,若你于此阶段使用过牌且这些牌的牌名均不同,你可以观看位于弃牌堆中的这些牌,选择任意张牌并选择等量角色,将这些牌交给这些角色各一张,然后你摸X张牌(X为你本局游戏首次发动〖集筹〗给出的牌数)。", dcmouli: "谋立", - dcmouli_info: "觉醒技。回合结束时,若你因〖集筹〗给出的牌的牌名总数不小于5,你加1点体力上限并回复1点体力,然后获得〖自缚〗。", + dcmouli_info: "觉醒技。回合结束时,若你因〖集筹〗给出的牌的牌名总数大于5,你加1点体力上限并回复1点体力,然后获得〖自缚〗。", dczifu: "自缚", dczifu_info: "锁定技。出牌阶段开始时,你将手牌摸至体力上限(至多摸至五张)。若你以此法得到牌,你须选择手牌中不同牌名的牌各一张,然后弃置其余的手牌。", dc_simashi: "司马师", diff --git a/character/mobile/skill.js b/character/mobile/skill.js index bae758c35..087ba41fe 100644 --- a/character/mobile/skill.js +++ b/character/mobile/skill.js @@ -13939,24 +13939,20 @@ const skills = { } else event.finish(); "step 2"; player.gain(event.cards, "gain2"); - player - .chooseControl() - .set("choiceList", ["将" + get.cnNumber(event.num) + "张牌交给一名其他角色", "弃置" + get.cnNumber(event.num) + "张牌"]) - .set("ai", function () { - if ( - game.hasPlayer(function (current) { - return current != player && get.attitude(player, current) > 2; - }) - ) - return 0; - return 1; - }); - "step 3"; + "step 3" + if (!player.countCards("he")) event.finish(); + else player.chooseControl().set("choiceList", ["将" + get.cnNumber(event.num) + "张牌交给一名其他角色", "弃置" + get.cnNumber(event.num) + "张牌"]).set("ai", function () { + if (game.hasPlayer(function (current) { + return current != player && get.attitude(player, current) > 2; + })) return 0; + return 1; + }); + "step 4"; if (result.index == 0) { player.chooseCardTarget({ position: "he", filterCard: true, - selectCard: event.num, + selectCard: Math.min(event.num, player.countCards("he")), filterTarget: function (card, player, target) { return player != target; }, @@ -13976,7 +13972,7 @@ const skills = { player.chooseToDiscard(event.num, true, "he"); event.finish(); } - "step 4"; + "step 5"; if (result.bool) { var target = result.targets[0]; player.give(result.cards, target); diff --git a/character/offline/skill.js b/character/offline/skill.js index 9ea1ed88d..b6e93ea2d 100644 --- a/character/offline/skill.js +++ b/character/offline/skill.js @@ -4064,7 +4064,8 @@ const skills = { "step 0"; player.give(cards, targets[0], "give"); "step 1"; - targets[0].chooseToCompare(targets[1]); + if (targets[0].canCompare(targets[1])) targets[0].chooseToCompare(targets[1]); + else event.finish(); "step 2"; if (result.bool) { targets[1].loseHp(); diff --git a/character/sp/skill.js b/character/sp/skill.js index 7deb6710d..3915d7fba 100644 --- a/character/sp/skill.js +++ b/character/sp/skill.js @@ -20466,7 +20466,8 @@ const skills = { player.storage.jianshu = true; player.give(cards, targets[0], "give"); "step 1"; - targets[0].chooseToCompare(targets[1]); + if (targets[0].canCompare(targets[1])) targets[0].chooseToCompare(targets[1]); + else event.finish(); "step 2"; if (result.bool) { targets[0].chooseToDiscard("he", 2, true); diff --git a/character/sp/translate.js b/character/sp/translate.js index 3fa69ccb9..ace459105 100644 --- a/character/sp/translate.js +++ b/character/sp/translate.js @@ -849,7 +849,7 @@ const translates = { sp_ol_zhanghe: "SP张郃", sp_ol_zhanghe_prefix: "SP", spolzhouxuan: "周旋", - spolzhouxuan_info: "①弃牌阶段开始时,你可将任意张置于武将牌上,称为“旋”(你至多拥有五张“旋”)。②当你使用牌时,你随机将一张“旋”置入弃牌堆,然后摸一张牌(若你的手牌数不为全场唯一最多则额外摸X张牌,X为“旋”数)。③出牌阶段结束时,你将所有“旋”置入弃牌堆。", + spolzhouxuan_info: "①弃牌阶段开始时,你可将任意张手牌置于武将牌上,称为“旋”(你至多拥有五张“旋”)。②当你使用牌时,你随机将一张“旋”置入弃牌堆,然后摸一张牌(若你的手牌数不为全场唯一最多则额外摸X张牌,X为“旋”数)。③出牌阶段结束时,你将所有“旋”置入弃牌堆。", wuyan: "吾彦", lanjiang: "澜疆", lanjiang_info: "结束阶段,你可以选择所有手牌数不小于你的角色。这些角色依次选择是否令你摸一张牌。然后你可以对其中一名手牌数等于你的角色造成1点伤害,随后令其中一名手牌数小于你的角色摸一张牌。", diff --git a/character/tw/skill.js b/character/tw/skill.js index b8397d9ef..3c1d14aac 100644 --- a/character/tw/skill.js +++ b/character/tw/skill.js @@ -458,19 +458,16 @@ const skills = { trigger: { global: "damageBegin1" }, filter(event, player) { if (event.getParent().type != "card" || event.card.name != "juedou" || !event.player.isIn()) return false; - const evt = game.getGlobalHistory("useCard", evt => evt.card == event.card)[0]; - if (evt && evt.targets && (event.player != player || player.countCards("h"))) { - if (evt.player == player) { - return evt.targets.includes(event.player) && event.player != player; - } - return evt.targets.includes(player) && evt.player != player; + const evt = event.getParent() + if (evt && evt.targets && (event.player != player || player.countCards("h") > 0)) { + return (evt.player === player || evt.targets.includes(player)); } return false; }, forced: true, popup: false, async content(event, trigger, player) { - await player.logSkill("twxiayong" + (trigger.player === player ? "1" : "2"), trigger.player); + player.logSkill("twxiayong" + (trigger.player === player ? "1" : "2"), trigger.player); if (trigger.player === player) { const cards = player.getCards("h", card => { return lib.filter.cardDiscardable(card, player, "twxiayong"); diff --git a/character/xianding/translate.js b/character/xianding/translate.js index 3f382e134..072272d33 100644 --- a/character/xianding/translate.js +++ b/character/xianding/translate.js @@ -212,7 +212,7 @@ const translates = { dcgeyuan: "割圆", dcgeyuan_info: "锁定技。①游戏开始时,你将从A至K的所有整数排列为一个环形链表,称为“圆环之理”。②当有一张牌进入弃牌堆后,若此牌的点数在“圆环之理”内,且“圆环之弧”为空或此牌的点数与“圆环之弧”两端的点数相邻,则你将此牌的点数记录进“圆环之弧”;然后若“圆环之弧”与“圆环之理”长度相同,则你从“圆环之理”中移除“圆环之弧”记录的第一个和最后一个数字A和B(当“圆环之理”长度不大于3时则不移除),清空“圆环之弧”,获得场上和牌堆中所有点数为A和B的牌。", dcjieshu: "解术", - dcjieshu_info: "锁定技。①所有点数不在“圆环之理”中的牌不计入你的手牌上限。②当你使用牌时,若“圆环之弧”为空或此牌的点数与“圆环之弧”两端的点数相邻,则你摸一张牌。", + dcjieshu_info: "锁定技。①所有点数不在“圆环之理”中的牌不计入你的手牌上限。②当你使用或打出牌时,若“圆环之弧”为空或此牌的点数与“圆环之弧”两端的点数相邻,则你摸一张牌。", dcgusuan: "股算", dcgusuan_info: "觉醒技。一名角色的回合结束时,若你的“圆环之理”长度为3,则你减1点体力上限并修改〖割圆〗。", dcgeyuan_magica: "割圆·改", diff --git a/mode/guozhan.js b/mode/guozhan.js index 145724a6b..d71dd0b2a 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -5048,11 +5048,11 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { async content(event, trigger, player) { trigger.targets.length = 0; trigger.all_excluded = true; - const cards = trigger.cards.filter(i => !get.owner(i)); + const cards = trigger.cards.filterInD(); if (cards.length && get.type(trigger.card) == "equip") { await player.gain(cards, "gain2"); for (let i of cards) { - if (get.owner(i) == player && player.hasUseTarget(i)) { + if (player.getCards("h").includes(i) && player.hasUseTarget(i)) { await player.chooseUseTarget(i); } }