From 11868debcf1a5d04191c9c9ef9a5afff18115ce8 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Thu, 30 May 2024 19:46:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8A=80=E8=83=BD=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.调整刘理、庞山民、蒯祺、孙狼、唐咨、庞会、SP孙策的技能 2.调整谯周【星卜】为OL展示结算 --- character/huicui/character.js | 2 +- character/huicui/skill.js | 170 ++++++++++++++++++++++++++-------- character/huicui/translate.js | 12 ++- character/mobile/skill.js | 9 +- character/mobile/translate.js | 2 +- character/sp/character.js | 2 +- character/sp/skill.js | 18 +++- character/sp/translate.js | 2 + character/sp2/skill.js | 46 ++++++--- character/sp2/translate.js | 6 +- character/tw/skill.js | 1 + 11 files changed, 199 insertions(+), 71 deletions(-) diff --git a/character/huicui/character.js b/character/huicui/character.js index 593f091a8..15efc66da 100644 --- a/character/huicui/character.js +++ b/character/huicui/character.js @@ -47,7 +47,7 @@ const characters = { dc_sp_jiaxu: ["male", "wei", 3, ["zhenlue", "dcjianshu", "dcyongdi"]], leibo: ["male", "qun", 4, ["dcsilve", "dcshuaijie"]], gongsundu: ["male", "qun", 4, ["dczhenze", "dcanliao"]], - panghui: ["male", "wei", 5, ["dcyiyong"]], + panghui: ["male", "wei", 5, ["dcyiyong", "dcsuchou"]], dc_yuejiu: ["male", "qun", 4, ["dccuijin"]], chenjiao: ["male", "wei", 3, ["dcxieshou", "dcqingyan", "dcqizi"]], wanglie: ["male", "qun", 3, ["dcchongwang", "dchuagui"]], diff --git a/character/huicui/skill.js b/character/huicui/skill.js index 9decf2a3d..1b7e52288 100644 --- a/character/huicui/skill.js +++ b/character/huicui/skill.js @@ -1312,27 +1312,32 @@ const skills = { cards.reduce((sum, card) => sum + get.cardNameLength(card), 0) ); if (num) await player.draw(num); - if (cards.some(card => card.name != "shandian" && get.tag(card, "damage"))) { - const { - result: { bool, targets }, - } = await player.chooseTarget("抚黎:是否令一名角色的攻击范围-1直到你的下个回合开始?").set("ai", target => { + const goon = cards.some(card => card.name != "shandian" && get.tag(card, "damage")); + const { + result: { bool, targets }, + } = await player + .chooseTarget("抚黎:是否令一名角色的攻击范围" + (goon ? "减至0" : "-1") + "直到你的下个回合开始?", (card, player, target) => { + return !get.event("goon") || target.getAttackRange() > 0; + }) + .set("ai", target => { const player = get.event("player"), num = target.getAttackRange(); + if (get.event("goon")) return -num; return -get.sgn(get.attitude(player, target)) * (target.getAttackRange() + (num <= 0 ? -num + 0.5 : num)); - }); - if (bool) { - const target = targets[0]; - player.line(target); - target.addSkill("dcfuli_range"); - target.addMark("dcfuli_range", 1, false); - player - .when(["phaseBegin", "dieBegin"]) - .then(() => { - target.removeMark("dcfuli_range", 1, false); - if (!target.hasMark("dcfuli_range")) target.removeSkill("dcfuli_range"); - }) - .vars({ target: target }); - } + }) + .set("goon", goon); + if (bool) { + const target = targets[0]; + player.line(target); + target.addSkill("dcfuli_range"); + target.addMark("dcfuli_range", goon ? target.getAttackRange() : 1, false); + player + .when(["phaseBegin", "dieBegin"]) + .then(() => { + target.removeMark("dcfuli_range", 1, false); + if (!target.hasMark("dcfuli_range")) target.removeSkill("dcfuli_range"); + }) + .vars({ target: target }); } } } @@ -1413,8 +1418,10 @@ const skills = { const card = new lib.element.VCard({ name: name }); return get.tag(card, "damage") && !player.getStorage("dcdehua").includes(name); }) - ) - player.removeSkills("dcdehua"); + ) { + await player.removeSkills("dcdehua"); + player.addSkill("dcdehua_hand"); + } }, mod: { maxHandcard(player, num) { @@ -1438,6 +1445,21 @@ const skills = { return "
  • 手牌上限+" + storage.length + "
  • 不能从手牌中使用" + get.translation(storage); }, }, + subSkill: { + hand: { + charlotte: true, + mark: true, + intro: { content: "伤害牌不计入手牌上限" }, + mod: { + ignoredHandcard(card) { + if (get.tag(card, "damage")) return true; + }, + cardDiscardable(card, _, name) { + if (name == "phaseDiscard" && get.tag(card, "damage")) return false; + }, + }, + }, + }, }, //蒋琬费祎 dcshengxi: { @@ -2165,7 +2187,7 @@ const skills = { onremove: true, content: function* (event, map) { const player = map.player; - const cards = []; + let cards = []; const bannedTypes = []; bannedTypes.addArray(event.cards.map(card => get.type2(card, player))); bannedTypes.addArray(player.getStorage("dcliangxiu")); @@ -2182,22 +2204,56 @@ const skills = { } if (cards.length >= 2) break; } - let result; if (!cards.length) { player.chat("没牌了…"); game.log("但是哪里都找不到没有符合条件的牌!"); event.finish(); return; - } else if (cards.length == 1) result = { bool: true, links: cards }; - else result = yield player.chooseButton(["良秀:获得一张牌", cards], true).set("ai", get.buttonValue); - if (result.bool) { - const toGain = result.links; - player.markAuto("dcliangxiu", get.type2(toGain[0], false)); - player.when({ global: "phaseChange" }).then(() => { - player.unmarkSkill("dcliangxiu"); - }); - player.gain(toGain, "gain2"); } + if (_status.connectMode) game.broadcastAll(() => (_status.noclearcountdown = true)); + let given_map = {}; + while (cards.length) { + let result; + if (cards.length == 1) result = { bool: true, links: cards.slice() }; + else { + result = yield player.chooseCardButton("良秀:请选择要分配的牌", cards, [1, cards.length], true).set("ai", button => { + if (!ui.selected.buttons.length) return get.buttonValue(button); + return 0; + }); + } + const gives = result.links; + const result2 = yield player + .chooseTarget("选择获得" + get.translation(gives) + "的角色", cards.length == 1) + .set("ai", target => { + return get.attitude(get.event("player"), target) * get.sgn(get.sgn(get.event("goon")) + 0.5); + }) + .set( + "goon", + gives.reduce((sum, card) => sum + get.value(card), 0) + ); + if (result2.bool) { + cards.removeArray(gives); + const id = result2.targets[0].playerid; + if (!given_map[id]) given_map[id] = []; + given_map[id].addArray(gives); + } + } + if (_status.connectMode) game.broadcastAll(() => delete _status.noclearcountdown); + let list = []; + for (const i in given_map) { + const source = (_status.connectMode ? lib.playerOL : game.playerMap)[i]; + player.line(source, "green"); + game.log(source, "获得了", given_map[i]); + list.push([source, given_map[i]]); + } + yield game + .loseAsync({ + gain_list: list, + giver: player, + animate: "gain2", + }) + .setContent("gaincardMultiple"); + game.delayx(); }, intro: { content: "已因此技能获得过$牌", @@ -2437,7 +2493,7 @@ const skills = { return get.type(event.card) == "basic" && _status.currentPhase; }, prompt2: function (event, player) { - const num = player.countMark("dccaisi_more") + 1; + const num = Math.pow(2, player.countMark("dccaisi_more") - 1); return `从${player == _status.currentPhase ? "牌堆" : "弃牌"}堆中随机获得${get.cnNumber(num)}张非基本牌`; }, content: function* (event, map) { @@ -2445,7 +2501,7 @@ const skills = { trigger = map.trigger; const position = player == _status.currentPhase ? "cardPile" : "discardPile"; let cards = [], - num = player.countMark("dccaisi_more") + 1; + num = Math.pow(2, player.countMark("dccaisi_more") - 1); while (num > 0) { num--; let card = get[position](card => get.type(card) != "basic" && !cards.includes(card)); @@ -2458,7 +2514,7 @@ const skills = { game.log(`但是${position == "discardPile" ? "弃" : ""}牌堆里没有非基本牌!`); } const sum = player.getHistory("useSkill", evt => evt.skill == "dccaisi").length; - if (sum < player.maxHp) { + if (sum <= player.maxHp) { player.addTempSkill("dccaisi_more"); player.addMark("dccaisi_more", 1, false); } else player.tempBanSkill("dccaisi"); @@ -5876,7 +5932,7 @@ const skills = { } }, ai: { - combo: "dcaishou" + combo: "dcaishou", }, }, //向朗 @@ -6981,13 +7037,53 @@ const skills = { var num0 = getn(event.cards0), num1 = getn(event.cards1); if (num0 <= num1) { - player.draw(event.cards1.length); + player.draw(event.cards1.length + 1); } if (num0 >= num1) { trigger.num++; } }, }, + dcsuchou: { + audio: 2, + trigger: { player: "phaseUseBegin" }, + forced: true, + async content(event, trigger, player) { + const index = await player + .chooseControl() + .set("prompt", "夙仇:请选择一项") + .set("choiceList", ["失去1点体力,本阶段使用牌不可被响应", "减1点体力上限,本阶段使用牌不可被响应", "失去〖夙仇〗"]) + .set("ai", () => { + const player = get.event("player"); + if (player.isHealthy()) return player.maxHp <= 2 ? 3 : 0; + return 2; + }) + .forResult("index"); + switch (index) { + case 0: + await player.loseHp(); + player.addTempSkill("dcsuchou_effect", "phaseUseAfter"); + break; + case 1: + await player.loseMaxHp(); + player.addTempSkill("dcsuchou_effect", "phaseUseAfter"); + break; + case 2: + await player.removeSkills("dcsuchou"); + break; + } + }, + subSkill: { + effect: { + charlotte: true, + mark: true, + marktext: "仇", + intro: { content: "使用牌不可被响应" }, + inherit: "twsaotao", + audio: "dcsuchou", + }, + }, + }, //乐就 dccuijin: { audio: 2, @@ -13352,7 +13448,7 @@ const skills = { } }, ai: { - combo: "recangchu" + combo: "recangchu", }, }, reshishou: { diff --git a/character/huicui/translate.js b/character/huicui/translate.js index 221ee31d7..8598bde3c 100644 --- a/character/huicui/translate.js +++ b/character/huicui/translate.js @@ -261,7 +261,9 @@ const translates = { dccuijin_info: "当你或你攻击范围内的角色使用【杀】或【决斗】时,你可以弃置一张牌,令此牌的伤害基数+1。然后当此牌被目标角色抵消或无效或防止伤害后,你摸两张牌并对使用者造成1点伤害。", panghui: "庞会", dcyiyong: "异勇", - dcyiyong_info: "当你对其他角色造成伤害时,若你有牌,你可以与其同时弃置至少一张牌。若你以此法弃置的牌的点数之和:不大于其,你摸X张牌;不小于其,此伤害+1(X为其以此法弃置的牌数)。", + dcyiyong_info: "当你对其他角色造成伤害时,若你有牌,你可以与其同时弃置至少一张牌。若你以此法弃置的牌的点数之和:不大于其,你摸X+1张牌;不小于其,此伤害+1(X为其以此法弃置的牌数)。", + dcsuchou: "夙仇", + dcsuchou_info: "锁定技,出牌阶段开始时,你选择一项:①失去1点体力或减1点体力上限,本阶段使用牌不可被响应;②失去〖夙仇〗。", chenjiao: "陈矫", dcxieshoux: "协守/清严", dcxieshou: "协守", @@ -435,7 +437,7 @@ const translates = { dcshizong_info: "当你需要使用一张基本牌时,你可以交给一名其他角色X张牌,然后其可以将一张牌置于牌堆底,视为你使用之。若其不为当前回合角色,此技能失效直到回合结束(X为你本回合发动〖恃纵〗的次数)。", pangshanmin: "庞山民", dccaisi: "才思", - dccaisi_info: "当你于回合内/回合外使用基本牌结算结束后,你可以从牌堆/弃牌堆随机获得一张非基本牌,然后若你本回合发动此技能的次数:小于你的体力上限,本回合你发动此技能获得的牌数+1;大于等于你的体力上限,本回合此技能失效。", + dccaisi_info: "当你于回合内/回合外使用基本牌结算结束后,你可以从牌堆/弃牌堆随机获得一张非基本牌,然后若你本回合发动此技能的次数:小于等于你的体力上限,本回合你发动此技能获得的牌数翻倍;大于你的体力上限,本回合此技能失效。", dczhuoli: "擢吏", dczhuoli_info: "锁定技。一名角色的回合结束时,若你本回合使用或获得的牌数大于体力值,你加1点体力上限(不能超过游戏人数),回复1点体力。", yue_caiyong: "乐蔡邕", @@ -447,7 +449,7 @@ const translates = { dcfeibai_info: "每回合限一次。当你使用牌结算结束后,若你本回合使用过至少两张牌,你可以随机获得一张字数为X的牌。若你的“弦”数不大于X,你重置〖飞白〗(X为此牌与你使用的上一张牌的字数之和)。", kuaiqi: "蒯祺", dcliangxiu: "良秀", - dcliangxiu_info: "出牌阶段,你可以弃置两张不同类型的牌,然后从两张与你弃置的牌类型均不同的牌中选择一张获得之(每阶段每种类型限一次)。", + dcliangxiu_info: "出牌阶段每种类型限一次,你可以弃置两张不同类型的牌,然后你将牌堆或弃牌堆中的两张与你弃置的牌类型均不同的牌分配给任意角色。", dcxunjie: "殉节", dcxunjie_info: "每轮每项限一次。一名角色的回合结束时,若你本回合于摸牌阶段外得到过牌,你可以选择一项:1.令一名角色将手牌数摸或弃置至与其体力值相同;2.令一名角色将体力回复或失去至与其手牌数相同。", dc_dongzhao: "董昭", @@ -486,9 +488,9 @@ const translates = { dcshoucheng_info: "每回合限一次,当一名角色于其回合外失去手牌后,若其没有手牌,你可令其摸两张牌。", dc_liuli: "刘理", dcfuli: "抚黎", - dcfuli_info: "出牌阶段限一次,你可以展示手牌并弃置一种类别的所有手牌,然后摸X张牌(X为这些牌的牌名字数和且X至多为场上手牌数最多的角色的手牌数)。若你因此弃置了伤害类卡牌,则你可以选择一名角色,令其攻击范围-1直到你的下个回合开始。", + dcfuli_info: "出牌阶段限一次,你可以展示手牌并弃置一种类别的所有手牌,然后摸X张牌(X为这些牌的牌名字数和且X至多为场上手牌数最多的角色的手牌数)。然后你可以选择一名角色,令其攻击范围-X直到你的下个回合开始(X为1,若你因此弃置了伤害类卡牌,则X改为减其攻击范围)。", dcdehua: "德化", - dcdehua_info: "锁定技。①一轮游戏开始时,若有你可以使用的非延时类伤害类牌的牌名,你选择其中一个并视为使用之,然后你不能从手牌中使用此牌名的牌,然后若你已选择过所有的伤害类牌牌名,你失去〖德化〗。②你的手牌上限+Y(Y为你〖德化①〗选择过的牌名数)。", + dcdehua_info: "锁定技。①一轮游戏开始时,若有你可以使用的非延时类伤害类牌的牌名,你选择其中一个并视为使用之,然后你不能从手牌中使用此牌名的牌,然后若你已选择过所有的伤害类牌牌名,你失去〖德化〗,然后本局游戏你的伤害牌不计手牌上限。②你的手牌上限+Y(Y为你〖德化①〗选择过的牌名数)。", gongsunxiu: "公孙修", dcgangu: "干蛊", dcgangu_info: "锁定技。每回合限一次。当其他角色失去体力后,你摸两张牌,然后失去1点体力。", diff --git a/character/mobile/skill.js b/character/mobile/skill.js index e4feeb8e5..f2c1150bd 100644 --- a/character/mobile/skill.js +++ b/character/mobile/skill.js @@ -8491,16 +8491,11 @@ const skills = { xingbu: { audio: 2, trigger: { player: "phaseJieshuBegin" }, - prompt2: "亮出牌堆顶的三张牌,并可以根据其中红色牌的数量,令一名其他角色获得一种效果", + prompt2: "展示牌堆顶的三张牌,并可以根据其中红色牌的数量,令一名其他角色获得一种效果", content: function () { "step 0"; - var cards = get.cards(3); - //for(var i=cards.length-1;i--;i>=0){ - // ui.cardPile.insertBefore(cards[i],ui.cardPile.firstChild); - //} - game.updateRoundNumber(); + var cards = get.cards(3, true); event.cards = cards; - //game.cardsGotoOrdering(cards); player.showCards(cards, get.translation(player) + "发动了【星卜】"); "step 1"; var num = 0; diff --git a/character/mobile/translate.js b/character/mobile/translate.js index 518c81e01..6c8d906aa 100644 --- a/character/mobile/translate.js +++ b/character/mobile/translate.js @@ -479,7 +479,7 @@ const translates = { zhiming: "知命", zhiming_info: "准备阶段开始时或弃牌阶段结束时,你摸一张牌,然后可以将一张牌置于牌堆顶。", xingbu: "星卜", - xingbu_info: "结束阶段,你可以亮出牌堆顶的三张牌,然后你可以根据X值(X为这三张牌中红色牌的数量),令一名其他角色获得对应的效果直到其下回合结束:①三张:其摸牌阶段多摸两张牌,使用【杀】的次数上限+1。②两张:其使用【杀】的次数上限-1,跳过弃牌阶段。③小于两张:其于准备阶段开始时弃置一张手牌。", + xingbu_info: "结束阶段,你可以展示牌堆顶的三张牌,然后你可以根据X值(X为这三张牌中红色牌的数量),令一名其他角色获得对应的效果直到其下回合结束:①三张:其摸牌阶段多摸两张牌,使用【杀】的次数上限+1。②两张:其使用【杀】的次数上限-1,跳过弃牌阶段。③小于两张:其于准备阶段开始时弃置一张手牌。", xin_sunluban: "手杀界孙鲁班", xin_sunluban_prefix: "手杀界", xinzenhui: "谮毁", diff --git a/character/sp/character.js b/character/sp/character.js index 1d24b8294..71f6d26e0 100644 --- a/character/sp/character.js +++ b/character/sp/character.js @@ -2,7 +2,7 @@ const characters = { caimao: ["male", "wei", 4, ["olzuolian", "oljingzhou"]], ol_peixiu: ["male", "wei", 4, ["olmaozhu", "oljinlan"]], yadan: ["male", "qun", 4, ["olqingya", "oltielun"]], - sp_sunce: ["male", "qun", 4, ["olliantao"]], + sp_sunce: ["male", "qun", 4, ["junkliantao"]], ol_liupi: ["male", "qun", 4, ["olyicheng"]], ol_lukai: ["male", "wu", 3, ["olxuanzhu", "oljiane"]], liupan: ["male", "qun", 4, ["olpijing"]], diff --git a/character/sp/skill.js b/character/sp/skill.js index 3fb2fca5d..89c24e91a 100644 --- a/character/sp/skill.js +++ b/character/sp/skill.js @@ -445,7 +445,7 @@ const skills = { }, async cost(event, trigger, player) { event.result = await player - .chooseTarget(get.prompt2("olliantao"), lib.filter.notMe) + .chooseTarget(get.prompt2(event.name.slice(0, -"_cost".length)), lib.filter.notMe) .set("ai", target => { const player = get.event("player"), att = get.attitude(player, target); @@ -555,6 +555,7 @@ const skills = { .reduce((sum, evt) => sum + evt.num, 0); if (num) await player.draw(num); if ( + event.name == "olliantao" && !game.hasPlayer2(current => { return current.getHistory("damage", evt => { return evt.getParent(4) == event; @@ -565,6 +566,16 @@ const skills = { player.addTempSkill("olliantao_buff"); player.addMark("olliantao_buff", 3, false); } + if ( + event.name == "junkliantao" && + !target.getHistory("damage", evt => { + return evt.getParent(4) == event; + }).length + ) { + await player.draw(); + player.addTempSkill("olliantao_buff"); + player.addMark("olliantao_buff", 1, false); + } }, subSkill: { backup: { @@ -590,6 +601,11 @@ const skills = { }, }, }, + //王战孙策,但是通渠 + junkliantao: { + audio: "olliantao", + inherit: "olliantao", + }, //刘辟 olyicheng: { audio: 2, diff --git a/character/sp/translate.js b/character/sp/translate.js index f9dbb5e82..e93d0f64b 100644 --- a/character/sp/translate.js +++ b/character/sp/translate.js @@ -1239,6 +1239,8 @@ const translates = { sp_sunce_prefix: "SP", olliantao: "连讨", olliantao_info: "出牌阶段开始时,你可以令一名其他角色选择一个颜色,然后你依次将此颜色的所有手牌当作【决斗】对其使用直到有一方进入濒死状态,然后你摸X张牌(X为你本次以此法造成的伤害数)。若没有角色因本次技能结算受到伤害,你摸三张牌,本回合手牌上限+3且本回合你不能使用【杀】。", + junkliantao: "连讨", + junkliantao_info: "出牌阶段开始时,你可以令一名其他角色选择一个颜色,然后你依次将此颜色的所有手牌当作【决斗】对其使用直到有一方进入濒死状态,然后你摸X张牌(X为你本次以此法造成的伤害数)。若其未因本次技能结算受到伤害,你摸一张牌,本回合手牌上限+1且本回合你不能使用【杀】。", yadan: "雅丹", olqingya: "倾轧", olqingya_info: "当你使用【杀】指定唯一目标后,你可从逆时针方向和顺时针方向中选择一个你与其之间角色最少的方向。你弃置该方向下你与其之间的角色各一张手牌,然后你可以于本回合下个阶段结束时使用其中一张牌。", diff --git a/character/sp2/skill.js b/character/sp2/skill.js index 2ae959823..8eafda952 100644 --- a/character/sp2/skill.js +++ b/character/sp2/skill.js @@ -1162,7 +1162,7 @@ const skills = { } }, ai: { - combo: "mpjiusong" + combo: "mpjiusong", }, }, mpbishi: { @@ -2227,9 +2227,11 @@ const skills = { filter: function (event, player) { return event.card.name == "sha" && event.getParent().triggeredTargets3.length == event.targets.length; }, + /* check: function (event, player) { return event.targets.some(target => get.effect(target, event.card, player, player) <= 0); }, + */ content: function () { "step 0"; var num = player.countCards("e") + 1; @@ -2238,7 +2240,7 @@ const skills = { "step 1"; var num = Math.min(trigger.targets.length, num); player - .chooseTarget("铤险:令此杀对其中至多" + get.cnNumber(num) + "个目标无效", [1, num], true, (card, player, target) => { + .chooseTarget("铤险:是否令此杀对其中至多" + get.cnNumber(num) + "个目标无效?", [1, num], (card, player, target) => { return _status.event.getTrigger().targets.includes(target); }) .set("ai", target => { @@ -2250,6 +2252,7 @@ const skills = { trigger.getParent().excluded.addArray(result.targets); } }, + /* ai: { effect: { player_use(card, player, target) { @@ -2273,6 +2276,7 @@ const skills = { }, }, }, + */ }, dcbenshi: { audio: 2, @@ -2294,6 +2298,7 @@ const skills = { }, content: function () {}, mod: { + /* attackRangeBase: function (player, num) { if (num !== "unchanged") return num; var range = 1; @@ -2309,8 +2314,9 @@ const skills = { } return range; }, + */ attackRange: function (player, num) { - return num + 1; + if (!player.getEquips(1).length) return num + 1; }, selectTarget: function (card, player, range) { if (card.name == "sha") { @@ -3342,7 +3348,7 @@ const skills = { } }, ai: { - halfneg: true + halfneg: true, }, }, xiongrao: { @@ -11576,32 +11582,42 @@ const skills = { var num = game.countPlayer(function (current) { return current.isDamaged(); }); - var str = "暂无任何效果"; + var str = "
  • 造成的伤害+1"; if (num >= 1) { str = "
  • 视为拥有技能“恂恂”"; } if (num >= 2) { - str += ";使用装备牌时摸一张牌"; + str += "
  • 装备牌进入或离开你的装备区时摸一张牌"; } if (num >= 3) { - str += ";始终跳过弃牌阶段"; + str += "
  • 始终跳过弃牌阶段"; } - if (num == 0 || num >= 4) { - str += ";造成的伤害+1"; + if (num >= 4) { + str += "
  • 造成的伤害+1"; } return str; }, }, trigger: { - player: "useCard", + player: "loseAfter", + global: ["equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"], }, forced: true, filter: function (event, player) { - if (get.type(event.card) != "equip") return false; - var num = game.countPlayer(function (current) { - return current.isDamaged(); - }); - return num >= 2; + if ( + game.countPlayer(function (current) { + return current.isDamaged(); + }) < 2 + ) + return false; + const evt = event.getl(player); + if (event.name == "equip" && event.player == player) return true; + return evt && evt.es.length; + }, + getIndex(event, player) { + const evt = event.getl(player); + if (event.name == "equip" && event.player == player && evt && evt.es.length) return 2; + return 1; }, content: function () { player.draw(); diff --git a/character/sp2/translate.js b/character/sp2/translate.js index 980525913..efe003821 100644 --- a/character/sp2/translate.js +++ b/character/sp2/translate.js @@ -57,7 +57,7 @@ const translates = { xz_xunxun: "恂恂", xz_xunxun_info: "摸牌阶段,你可以观看牌堆顶的四张牌,然后将其中的两张牌置于牌堆顶,并将其余的牌以任意顺序置于牌堆底。", xinfu_xingzhao: "兴棹", - xinfu_xingzhao_info: "锁定技。若X≥1,你视为拥有技能〖恂恂〗。若X≥2,当你使用装备牌时,你摸一张牌。若X≥3,判定阶段或弃牌阶段开始时,你跳过此阶段。若X=0或X≥4,当你造成伤害时,此伤害+1(X为场上已受伤的角色数)。", + xinfu_xingzhao_info: "锁定技。若场上已受伤的角色数:≥1,你视为拥有技能〖恂恂〗;X≥2,有装备牌进入或离开你的装备区时,你摸一张牌;X≥3,判定阶段或弃牌阶段开始时,你跳过此阶段;为0或≥4,当你造成伤害时,此伤害+1。", xinfu_xingzhao2: "兴棹", xinfu_xingzhao2_info: "", xinfu_xingzhao3: "兴棹", @@ -485,9 +485,9 @@ const translates = { dczuojian_info: "出牌阶段结束时,若你于此阶段使用过的牌数不小于体力值,你可以选择一项:1.令装备区牌数多于你的角色各摸一张牌;2.弃置装备区牌数少于你的角色各一张手牌。", sunlang: "孙狼", dctingxian: "铤险", - dctingxian_info: "每回合限一次。当你使用【杀】指定最后一个目标后,你可以摸X张牌,然后令此【杀】对其中至多X个目标无效(X为你装备区的牌数+1)。", + dctingxian_info: "每回合限一次。当你使用【杀】指定最后一个目标后,你可以摸X张牌,然后可以令此【杀】对其中至多X个目标无效(X为你装备区的牌数+1)。", dcbenshi: "奔矢", - dcbenshi_info: "锁定技。①你的攻击范围+1。②你的攻击范围基数不受装备区内武器牌的影响。③由你使用的【杀】的牌面信息中的“使用目标”产生的规则改为“攻击范围内的所有角色”。", + dcbenshi_info: "锁定技。①若你未装备武器牌,则你的攻击范围+1。②由你使用的【杀】的牌面信息中的“使用目标”产生的规则改为“攻击范围内的所有角色”。", sunhuan: "孙桓", dcniji: "逆击", dcniji_info: "①当你成为非装备牌的目标后,你可以摸一张牌,称为“逆击”。②一名角色的结束阶段,你可以使用一张“逆击”牌,然后弃置所有“逆击”牌。", diff --git a/character/tw/skill.js b/character/tw/skill.js index b7578dcd9..ab3706dc3 100644 --- a/character/tw/skill.js +++ b/character/tw/skill.js @@ -8327,6 +8327,7 @@ const skills = { forced: true, content: function () { trigger.directHit.addArray(game.players); + game.log(trigger.card, "不可被响应"); }, ai: { directHit_ai: true }, }, From 68bb9517774c238c97d6917fa29e18569e3eaa9c Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Thu, 30 May 2024 20:01:56 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=A9=AC=E8=85=BE=E3=80=90=E9=9B=84?= =?UTF-8?q?=E5=BC=82=E3=80=91bugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard/skill.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/character/standard/skill.js b/character/standard/skill.js index 6253923a2..917fef3fa 100644 --- a/character/standard/skill.js +++ b/character/standard/skill.js @@ -42,6 +42,7 @@ const skills = { unique: true, limited: true, audio: "xiongyi", + enable: "phaseUse", filterTarget: true, selectTarget: [1, Infinity], skillAnimation: true, @@ -51,6 +52,7 @@ const skills = { const targets = event.targets.sortBySeat(); let keep = true; while (true) { + let stop = false; for (const target of targets) { let next = target .chooseToUse(function (card) { @@ -63,9 +65,13 @@ const skills = { }); if (!keep) next.set("prompt2", "若你不使用,则结束此流程"); const result = await next.forResult(); - if (!result.bool && !keep) break; - if (targets[targets.length - 1] == target && !keep) keep = true; + if (!result.bool && !keep) { + stop = true; + break; + } } + if (keep) keep = false; + if (stop) break; } }, ai: {