技能调整

1.调整刘理、庞山民、蒯祺、孙狼、唐咨、庞会、SP孙策的技能
2.调整谯周【星卜】为OL展示结算
This commit is contained in:
mengxinzxz 2024-05-30 19:46:10 +08:00
parent 50083b3a07
commit 11868debcf
11 changed files with 199 additions and 71 deletions

View File

@ -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"]],

View File

@ -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 "<li>手牌上限+" + storage.length + "<br><li>不能从手牌中使用" + 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: {

View File

@ -261,7 +261,9 @@ const translates = {
dccuijin_info: "当你或你攻击范围内的角色使用【杀】或【决斗】时,你可以弃置一张牌,令此牌的伤害基数+1。然后当此牌被目标角色抵消或无效或防止伤害后你摸两张牌并对使用者造成1点伤害。",
panghui: "庞会",
dcyiyong: "异勇",
dcyiyong_info: "当你对其他角色造成伤害时若你有牌你可以与其同时弃置至少一张牌。若你以此法弃置的牌的点数之和不大于其你摸X张牌不小于其此伤害+1X为其以此法弃置的牌数。",
dcyiyong_info: "当你对其他角色造成伤害时若你有牌你可以与其同时弃置至少一张牌。若你以此法弃置的牌的点数之和不大于其你摸X+1张牌不小于其此伤害+1X为其以此法弃置的牌数。",
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: "锁定技。①一轮游戏开始时,若有你可以使用的非延时类伤害类牌的牌名,你选择其中一个并视为使用之,然后你不能从手牌中使用此牌名的牌,然后若你已选择过所有的伤害类牌牌名,你失去〖德化〗。②你的手牌上限+YY为你〖德化①〗选择过的牌名数。",
dcdehua_info: "锁定技。①一轮游戏开始时,若有你可以使用的非延时类伤害类牌的牌名,你选择其中一个并视为使用之,然后你不能从手牌中使用此牌名的牌,然后若你已选择过所有的伤害类牌牌名,你失去〖德化〗,然后本局游戏你的伤害牌不计手牌上限。②你的手牌上限+YY为你〖德化①〗选择过的牌名数。",
gongsunxiu: "公孙修",
dcgangu: "干蛊",
dcgangu_info: "锁定技。每回合限一次。当其他角色失去体力后你摸两张牌然后失去1点体力。",

View File

@ -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;

View File

@ -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: "谮毁",

View File

@ -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"]],

View File

@ -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,

View File

@ -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: "当你使用【杀】指定唯一目标后,你可从逆时针方向和顺时针方向中选择一个你与其之间角色最少的方向。你弃置该方向下你与其之间的角色各一张手牌,然后你可以于本回合下个阶段结束时使用其中一张牌。",

View File

@ -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 = "<li>造成的伤害+1";
if (num >= 1) {
str = "<li>视为拥有技能“恂恂”";
}
if (num >= 2) {
str += ";使用装备牌时摸一张牌";
str += "<br><li>装备牌进入或离开你的装备区时摸一张牌";
}
if (num >= 3) {
str += "始终跳过弃牌阶段";
str += "<br><li>始终跳过弃牌阶段";
}
if (num == 0 || num >= 4) {
str += "造成的伤害+1";
if (num >= 4) {
str += "<br><li>造成的伤害+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();

View File

@ -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当你造成伤害时此伤害+1X为场上已受伤的角色数。",
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: "①当你成为非装备牌的目标后,你可以摸一张牌,称为“逆击”。②一名角色的结束阶段,你可以使用一张“逆击”牌,然后弃置所有“逆击”牌。",

View File

@ -8327,6 +8327,7 @@ const skills = {
forced: true,
content: function () {
trigger.directHit.addArray(game.players);
game.log(trigger.card, "不可被响应");
},
ai: { directHit_ai: true },
},