【' +
get.translation(
- lib.translate[i + "_ab"] || get.translation(i).slice(0, 2)
+ lib.translate[i + "_ab"] ||
+ get.translation(i).slice(0, 2)
) +
"】
" +
get.skillInfoTranslation(i, player) +
@@ -3138,12 +4330,23 @@ game.import("character", function () {
.set("ai", () => {
var choices = _status.event.controls.slice();
var value = (skill) =>
- get.skillRank(skill, "in") + get.skillRank(skill, "out");
- choices = choices.map((skill) => [skill, value(skill)]);
- var list = choices.sort((a, b) => a[1] - b[1])[0];
+ get.skillRank(skill, "in") +
+ get.skillRank(skill, "out");
+ choices = choices.map((skill) => [
+ skill,
+ value(skill),
+ ]);
+ var list = choices.sort(
+ (a, b) => a[1] - b[1]
+ )[0];
if (list[1] < 2) return list[0];
else {
- if (_status.event.controls.includes("clanxumin")) return "clanxumin";
+ if (
+ _status.event.controls.includes(
+ "clanxumin"
+ )
+ )
+ return "clanxumin";
return list[0];
}
});
@@ -3151,7 +4354,7 @@ game.import("character", function () {
player.gain(cards, "gain2");
event.finish();
}
- "step 6";
+ ("step 6");
player.removeSkills(result.control);
},
ai: {
@@ -3165,11 +4368,15 @@ game.import("character", function () {
direct: true,
forced: true,
filter(event, player) {
- if (!game.hasPlayer((current) => current != player)) return false;
+ if (!game.hasPlayer((current) => current != player))
+ return false;
const type = get.type2(event.card);
return (
player
- .getRoundHistory("useCard", (evt) => get.type2(evt.card) == type)
+ .getRoundHistory(
+ "useCard",
+ (evt) => get.type2(evt.card) == type
+ )
.indexOf(event) == 0
);
},
@@ -3187,8 +4394,10 @@ game.import("character", function () {
.chooseTarget(
"三恇:选择一名其他角色",
"令其交给你至少X张牌" +
- (cards.length ? ",然后其获得" + get.translation(cards) : "") +
- "(X为以下条件中其满足的项数:场上有牌、已受伤、体力值小于手牌数)",
+ (cards.length
+ ? ",然后其获得" + get.translation(cards)
+ : "") +
+ "(X为以下条件中其满足的项数:场上有牌、已受伤、体力值小于手牌数)",
true,
lib.filter.notMe
)
@@ -3197,7 +4406,10 @@ game.import("character", function () {
num = lib.skill.clansankuang.getNum(target);
if (num == 0) return att;
if (_status.event.goon) return -att;
- return -Math.sqrt(Math.abs(att)) - lib.skill.clansankuang.getNum(target);
+ return (
+ -Math.sqrt(Math.abs(att)) -
+ lib.skill.clansankuang.getNum(target)
+ );
})
.set(
"goon",
@@ -3206,7 +4418,7 @@ game.import("character", function () {
trigger.cards.map((i) => get.value(i))
) <= 5 || trigger.cards.filterInD("oe").length == 0
);
- "step 1";
+ ("step 1");
if (result.bool) {
var target = result.targets[0],
num = lib.skill.clansankuang.getNum(target),
@@ -3228,27 +4440,34 @@ game.import("character", function () {
"prompt",
num > 0
? "是否交给" +
- get.translation(player) +
- "任意张牌" +
- (cards.length ? "并获得" + get.translation(cards) : "") +
- "?"
+ get.translation(player) +
+ "任意张牌" +
+ (cards.length
+ ? "并获得" +
+ get.translation(cards)
+ : "") +
+ "?"
: "交给" +
- get.translation(player) +
- "至少" +
- get.cnNumber(num) +
- "张牌"
+ get.translation(player) +
+ "至少" +
+ get.cnNumber(num) +
+ "张牌"
);
}
} else event.finish();
- "step 2";
+ ("step 2");
if (result.bool) {
var cards = result.cards;
target.give(cards, player);
game.delayx();
} else event.finish();
- "step 3";
+ ("step 3");
if (trigger.cards.filterInD().length)
- target.gain(trigger.cards.filterInD(), "gain2", "bySelf");
+ target.gain(
+ trigger.cards.filterInD(),
+ "gain2",
+ "bySelf"
+ );
else if (trigger.cards.filterInD("e").length)
target.gain(
trigger.cards.filterInD("e"),
@@ -3259,7 +4478,12 @@ game.import("character", function () {
ai: {
reverseOrder: true,
skillTagFilter(player) {
- if (player.getHistory("useCard", (evt) => get.type(evt.card) == "equip").length > 0)
+ if (
+ player.getHistory(
+ "useCard",
+ (evt) => get.type(evt.card) == "equip"
+ ).length > 0
+ )
return false;
},
effect: {
@@ -3267,8 +4491,10 @@ game.import("character", function () {
if (
player == target &&
get.type(card) == "equip" &&
- !player.getHistory("useCard", (evt) => get.type(evt.card) == "equip")
- .length == 0
+ !player.getHistory(
+ "useCard",
+ (evt) => get.type(evt.card) == "equip"
+ ).length == 0
)
return [1, 3];
},
@@ -3290,7 +4516,10 @@ game.import("character", function () {
},
forced: true,
filter(event, player) {
- var history = player.getAllHistory("useSkill", (evt) => evt.skill == "clansankuang");
+ var history = player.getAllHistory(
+ "useSkill",
+ (evt) => evt.skill == "clansankuang"
+ );
if (!history.length) return false;
var target = history[0].targets[0];
if (target.countCards("h")) return false;
@@ -3314,29 +4543,40 @@ game.import("character", function () {
locked: false,
filter(event, player) {
return (
- (event.card.name == "sha" || get.type(event.card) == "trick") &&
+ (event.card.name == "sha" ||
+ get.type(event.card) == "trick") &&
player.countCards("h", event.card.name) > 0
);
},
content() {
var cards = player.getCards("h", trigger.card.name);
- player.showCards(cards, get.translation(player) + "发动了【神君】");
+ player.showCards(
+ cards,
+ get.translation(player) + "发动了【神君】"
+ );
player.markSkill("clanshenjun");
player.addGaintag(cards, "clanshenjun");
for (var name of lib.phaseName) {
var evt = _status.event.getParent(name);
if (!evt || evt.name != name) continue;
- player.addTempSkill("clanshenjun_viewAs", name + "After");
+ player.addTempSkill(
+ "clanshenjun_viewAs",
+ name + "After"
+ );
break;
}
},
marktext: "君",
intro: {
markcount(storage, player) {
- return player.countCards("h", (card) => card.hasGaintag("clanshenjun"));
+ return player.countCards("h", (card) =>
+ card.hasGaintag("clanshenjun")
+ );
},
mark(dialog, content, player) {
- var cards = player.getCards("h", (card) => card.hasGaintag("clanshenjun"));
+ var cards = player.getCards("h", (card) =>
+ card.hasGaintag("clanshenjun")
+ );
if (cards.length) {
dialog.addAuto(cards);
} else return "无展示牌";
@@ -3355,13 +4595,19 @@ game.import("character", function () {
],
},
filter(event, player) {
- return player.countCards("h", (card) => card.hasGaintag("clanshenjun")) > 0;
+ return (
+ player.countCards("h", (card) =>
+ card.hasGaintag("clanshenjun")
+ ) > 0
+ );
},
forced: true,
charlotte: true,
content() {
"step 0";
- var cards = player.getCards("h", (card) => card.hasGaintag("clanshenjun"));
+ var cards = player.getCards("h", (card) =>
+ card.hasGaintag("clanshenjun")
+ );
var list = [],
names = [];
for (var card of cards) {
@@ -3371,7 +4617,12 @@ game.import("character", function () {
if (nature && nature.length) {
namex += nature;
if (names.includes(namex)) continue;
- list.push([get.type(card), "", name, nature]);
+ list.push([
+ get.type(card),
+ "",
+ name,
+ nature,
+ ]);
} else {
if (names.includes(namex)) continue;
list.push([get.type(card), "", name]);
@@ -3379,7 +4630,9 @@ game.import("character", function () {
names.push(namex);
}
list.sort((a, b) => {
- var del1 = lib.inpile.indexOf(a[2]) - lib.inpile.indexOf(b[2]);
+ var del1 =
+ lib.inpile.indexOf(a[2]) -
+ lib.inpile.indexOf(b[2]);
if (del1 != 0) return del1;
var a1 = 0,
b1 = 0;
@@ -3389,7 +4642,9 @@ game.import("character", function () {
});
player
.chooseButton([
- "是否将" + get.cnNumber(cards.length) + "张牌当下列一张牌使用?",
+ "是否将" +
+ get.cnNumber(cards.length) +
+ "张牌当下列一张牌使用?",
[list, "vcard"],
])
.set("ai", function (button) {
@@ -3398,15 +4653,19 @@ game.import("character", function () {
nature: button.link[3],
});
});
- "step 1";
+ ("step 1");
if (result.bool) {
var name = result.links[0][2],
nature = result.links[0][3];
- var cards = player.getCards("h", (card) => card.hasGaintag("clanshenjun"));
+ var cards = player.getCards("h", (card) =>
+ card.hasGaintag("clanshenjun")
+ );
game.broadcastAll(
function (num, card) {
- lib.skill.clanshenjun_backup.selectCard = num;
- lib.skill.clanshenjun_backup.viewAs = card;
+ lib.skill.clanshenjun_backup.selectCard =
+ num;
+ lib.skill.clanshenjun_backup.viewAs =
+ card;
},
cards.length,
{ name: name, nature: nature }
@@ -3415,19 +4674,19 @@ game.import("character", function () {
next.set(
"openskilldialog",
"将" +
- get.cnNumber(cards.length) +
- "张牌当做" +
- (get.translation(nature) || "") +
- "【" +
- get.translation(name) +
- "】使用"
+ get.cnNumber(cards.length) +
+ "张牌当做" +
+ (get.translation(nature) || "") +
+ "【" +
+ get.translation(name) +
+ "】使用"
);
next.set("norestore", true);
next.set("addCount", false);
next.set("_backupevent", "clanshenjun_backup");
next.set("custom", {
add: {},
- replace: { window() { } },
+ replace: { window() {} },
});
next.backup("clanshenjun_backup");
}
@@ -3454,7 +4713,12 @@ game.import("character", function () {
},
forced: true,
filter(event, player) {
- if (game.getGlobalHistory("changeHp", (evt) => evt.player == player).length != 1)
+ if (
+ game.getGlobalHistory(
+ "changeHp",
+ (evt) => evt.player == player
+ ).length != 1
+ )
return false;
var cards = player.getCards("h"),
map = {};
@@ -3469,10 +4733,15 @@ game.import("character", function () {
if (map[i] > 0) list.push([i, map[i]]);
}
list.sort((a, b) => b[1] - a[1]);
- return list[0][0] == "trick" && (list.length == 1 || list[0][1] > list[1][1]);
+ return (
+ list[0][0] == "trick" &&
+ (list.length == 1 || list[0][1] > list[1][1])
+ );
},
content() {
- player.showHandcards(get.translation(player) + "发动了【八龙】");
+ player.showHandcards(
+ get.translation(player) + "发动了【八龙】"
+ );
player.drawTo(game.countPlayer());
},
},
@@ -3487,7 +4756,7 @@ game.import("character", function () {
content() {
"step 0";
target.recover();
- "step 1";
+ ("step 1");
var name = get.translation(target);
player
.chooseControl()
@@ -3505,13 +4774,23 @@ game.import("character", function () {
nature: "ice",
isCard: true,
};
- var eff = get.effect(player, card, target, player),
- eff2 = get.effect(target, card, player, player);
+ var eff = get.effect(
+ player,
+ card,
+ target,
+ player
+ ),
+ eff2 = get.effect(
+ target,
+ card,
+ player,
+ player
+ );
if (eff > eff2) return "选项一";
else return "选项二";
})()
);
- "step 2";
+ ("step 2");
var players = [target, player];
if (result.control == "选项二") players.reverse();
var card = { name: "sha", nature: "ice", isCard: true };
@@ -3547,7 +4826,8 @@ game.import("character", function () {
audio: 2,
trigger: { global: "damageEnd" },
filter(event, player) {
- if (!event.hasNature() || !event.player.isIn()) return false;
+ if (!event.hasNature() || !event.player.isIn())
+ return false;
return (
game.countPlayer2((current) => {
return current.hasHistory("damage", (evt) => {
@@ -3579,7 +4859,12 @@ game.import("character", function () {
var info = get.info(skill);
if (!info || info.charlotte) return false;
if (targets && targets.length) {
- if (targets.filter((i) => player.differentSexFrom(i)).length > 0) return true;
+ if (
+ targets.filter((i) =>
+ player.differentSexFrom(i)
+ ).length > 0
+ )
+ return true;
}
return false;
});
@@ -3600,7 +4885,8 @@ game.import("character", function () {
onremove: true,
marktext: "钗",
intro: {
- content: (storage, player) => "对象:" + get.translation(storage),
+ content: (storage, player) =>
+ "对象:" + get.translation(storage),
},
group: "clanfenchai_audio",
filter(event, player) {
@@ -3609,13 +4895,19 @@ game.import("character", function () {
if (!targets || !targets.length) return false;
var info = get.info(event.sourceSkill || event.skill);
if (!info || info.charlotte) return false;
- if (player.getStorage("clanfenchai").length != 0) return false;
- return targets.filter((i) => player.differentSexFrom(i)).length > 0;
+ if (player.getStorage("clanfenchai").length != 0)
+ return false;
+ return (
+ targets.filter((i) => player.differentSexFrom(i))
+ .length > 0
+ );
},
content() {
player.markAuto(
"clanfenchai",
- trigger.targets.filter((i) => player.differentSexFrom(i))
+ trigger.targets.filter((i) =>
+ player.differentSexFrom(i)
+ )
);
},
subSkill: {
@@ -3626,16 +4918,23 @@ game.import("character", function () {
filter(event, player) {
return player.getStorage("clanfenchai").length;
},
- content() { },
+ content() {},
},
},
mod: {
suit(card, suit) {
var player = get.owner(card) || _status.event.player;
- if (!player || !player.judging || player.judging[0] != card) return;
+ if (
+ !player ||
+ !player.judging ||
+ player.judging[0] != card
+ )
+ return;
var storage = player.getStorage("clanfenchai");
if (!storage.length) return;
- return storage.filter((i) => i.isIn()).length > 0 ? "heart" : "spade";
+ return storage.filter((i) => i.isIn()).length > 0
+ ? "heart"
+ : "spade";
},
},
},
@@ -3646,13 +4945,21 @@ game.import("character", function () {
filter(event, player) {
return (
!player.isDisabledJudge() ||
- player.countCards("h", (card) => ["sha", "shan"].includes(get.name(card))) > 0
+ player.countCards("h", (card) =>
+ ["sha", "shan"].includes(get.name(card))
+ ) > 0
);
},
chooseButton: {
dialog(event, player) {
- var dialog = ui.create.dialog("烈誓:选择一项", "hidden");
- dialog.add([lib.skill.clanlieshi.choices.slice(), "textbutton"]);
+ var dialog = ui.create.dialog(
+ "烈誓:选择一项",
+ "hidden"
+ );
+ dialog.add([
+ lib.skill.clanlieshi.choices.slice(),
+ "textbutton",
+ ]);
return dialog;
},
filter(button, player) {
@@ -3662,32 +4969,49 @@ game.import("character", function () {
return (
num > 0 &&
num ==
- player.getDiscardableCards(player, "h").filter((i) => get.name(i) == link)
- .length
+ player
+ .getDiscardableCards(player, "h")
+ .filter((i) => get.name(i) == link).length
);
},
check(button) {
var player = _status.event.player;
switch (button.link) {
case "damage":
- if (get.damageEffect(player, player, player, "fire") >= 0) return 10;
if (
- player.hp >= Math.max(2, 3 - player.getFriends().length) &&
+ get.damageEffect(
+ player,
+ player,
+ player,
+ "fire"
+ ) >= 0
+ )
+ return 10;
+ if (
+ player.hp >=
+ Math.max(
+ 2,
+ 3 - player.getFriends().length
+ ) &&
game.countPlayer(
(current) =>
get.attitude(player, current) < 0 &&
current.countCards("h", (card) =>
- ["sha", "shan"].includes(get.name(card))
+ ["sha", "shan"].includes(
+ get.name(card)
+ )
)
)
)
return 0.8 + Math.random();
return 0;
case "shan":
- if (player.countCards("h", "shan") == 1) return 8 + Math.random();
+ if (player.countCards("h", "shan") == 1)
+ return 8 + Math.random();
return 1 + Math.random();
case "sha":
- if (player.countCards("h", "sha") == 1) return 8 + Math.random();
+ if (player.countCards("h", "sha") == 1)
+ return 8 + Math.random();
return 0.9 + Math.random();
}
},
@@ -3697,7 +5021,8 @@ game.import("character", function () {
return next;
},
prompt(links) {
- if (links[0] == "damage") return "废除判定区并受到1点火焰伤害";
+ if (links[0] == "damage")
+ return "废除判定区并受到1点火焰伤害";
return "弃置所有【" + get.translation(links[0]) + "】";
},
},
@@ -3709,10 +5034,16 @@ game.import("character", function () {
ai: {
order(item, player) {
if (!player) return;
- var eff = get.damageEffect(player, player, player, "fire"),
+ var eff = get.damageEffect(
+ player,
+ player,
+ player,
+ "fire"
+ ),
disabled = !player.isDisabledJudge();
if (
- (player.countCards("h", "sha") == 1 || player.countCards("h", "shan") == 1) &&
+ (player.countCards("h", "sha") == 1 ||
+ player.countCards("h", "shan") == 1) &&
eff < 0 &&
!disabled
)
@@ -3720,22 +5051,35 @@ game.import("character", function () {
else if (eff >= 0 && !disabled) return 5.8;
if (
!disabled &&
- !player.countCards("h", (card) => ["sha", "shan"].includes(get.name(card)))
+ !player.countCards("h", (card) =>
+ ["sha", "shan"].includes(get.name(card))
+ )
) {
if (
- (!player.hasSkill("clanhuanyin") || !player.canSave(player)) &&
+ (!player.hasSkill("clanhuanyin") ||
+ !player.canSave(player)) &&
player.hp <= 1
)
return 0;
- if (player.canSave(player) && player.hp == 1 && player.countCards("h") <= 1)
+ if (
+ player.canSave(player) &&
+ player.hp == 1 &&
+ player.countCards("h") <= 1
+ )
return 2.6;
if (
- player.hp < Math.max(2, 3 - player.getFriends().length) ||
+ player.hp <
+ Math.max(
+ 2,
+ 3 - player.getFriends().length
+ ) ||
!game.countPlayer(
(current) =>
get.attitude(player, current) < 0 &&
current.countCards("h", (card) =>
- ["sha", "shan"].includes(get.name(card))
+ ["sha", "shan"].includes(
+ get.name(card)
+ )
)
)
)
@@ -3761,57 +5105,91 @@ game.import("character", function () {
event.choice = choice;
if (choice == "damage") {
player.damage("fire");
- if (!player.isDisabledJudge()) player.disableJudge();
+ if (!player.isDisabledJudge())
+ player.disableJudge();
} else {
var cards = player.getCards("h", choice);
if (cards.length) player.discard(cards);
}
- "step 1";
- if (!player.isIn() || !game.hasPlayer((current) => current != player))
+ ("step 1");
+ if (
+ !player.isIn() ||
+ !game.hasPlayer((current) => current != player)
+ )
event.finish();
else
player
- .chooseTarget("烈誓:令一名其他角色选择另一项", lib.filter.notMe, true)
+ .chooseTarget(
+ "烈誓:令一名其他角色选择另一项",
+ lib.filter.notMe,
+ true
+ )
.set("ai", (target) => {
var player = _status.event.player,
- chosen = _status.event.getParent().choice,
+ chosen =
+ _status.event.getParent()
+ .choice,
att = get.attitude(player, target);
if (chosen == "damage") {
if (att > 0) return 0;
return (
-att / 2 +
target.countCards("h", (card) =>
- ["sha", "shan"].includes(get.name(card))
+ ["sha", "shan"].includes(
+ get.name(card)
+ )
)
);
}
- return get.damageEffect(target, player, player, "fire");
+ return get.damageEffect(
+ target,
+ player,
+ player,
+ "fire"
+ );
});
- "step 2";
+ ("step 2");
if (result.bool) {
var target = result.targets[0];
event.target = target;
player.line(target, "fire");
var list = [],
choice = event.choice;
- var choiceList = lib.skill.clanlieshi.choices.slice();
- choiceList = choiceList.map((link, ind, arr) => {
- link = link[1];
- var ok = true;
- if (arr[ind][0] == choice) {
- link += "(" + get.translation(player) + "已选)";
- ok = false;
+ var choiceList =
+ lib.skill.clanlieshi.choices.slice();
+ choiceList = choiceList.map(
+ (link, ind, arr) => {
+ link = link[1];
+ var ok = true;
+ if (arr[ind][0] == choice) {
+ link +=
+ "(" +
+ get.translation(player) +
+ "已选)";
+ ok = false;
+ }
+ if (ind == 0) {
+ if (target.isDisabledJudge())
+ ok = false;
+ } else if (ind > 0) {
+ var name =
+ ind == 1 ? "shan" : "sha";
+ if (!target.countCards("h", name))
+ ok = false;
+ }
+ if (!ok)
+ link =
+ '
' +
+ link +
+ "";
+ else
+ list.push(
+ "选项" +
+ get.cnNumber(ind + 1, true)
+ );
+ return link;
}
- if (ind == 0) {
- if (target.isDisabledJudge()) ok = false;
- } else if (ind > 0) {
- var name = ind == 1 ? "shan" : "sha";
- if (!target.countCards("h", name)) ok = false;
- }
- if (!ok) link = '
' + link + "";
- else list.push("选项" + get.cnNumber(ind + 1, true));
- return link;
- });
+ );
if (!list.length) {
game.log(target, "没有能执行的选项");
event.finish();
@@ -3821,43 +5199,71 @@ game.import("character", function () {
.chooseControl(list)
.set("choiceList", choiceList)
.set("ai", () => {
- var controls = _status.event.controls.slice(),
+ var controls =
+ _status.event.controls.slice(),
player = _status.event.player,
- user = _status.event.getParent().player;
- if (controls.length == 1) return controls[0];
+ user =
+ _status.event.getParent()
+ .player;
+ if (controls.length == 1)
+ return controls[0];
if (
controls.includes("选项一") &&
- get.damageEffect(player, user, player, "fire") >= 0
+ get.damageEffect(
+ player,
+ user,
+ player,
+ "fire"
+ ) >= 0
)
return "选项一";
if (
controls.includes("选项一") &&
player.hp <= 2 &&
player.countCards("h", (card) =>
- ["sha", "shan"].includes(get.name(card))
+ ["sha", "shan"].includes(
+ get.name(card)
+ )
) <= 3
)
controls.remove("选项一");
- if (controls.length == 1) return controls[0];
+ if (controls.length == 1)
+ return controls[0];
if (
player
.getCards("h", "sha")
- .reduce((p, c) => p + get.value(c, player), 0) >
+ .reduce(
+ (p, c) =>
+ p +
+ get.value(c, player),
+ 0
+ ) >
player
.getCards("h", "sha")
- .reduce((p, c) => p + get.value(c, player), 0)
+ .reduce(
+ (p, c) =>
+ p +
+ get.value(c, player),
+ 0
+ )
) {
- if (controls.includes("选项三")) return "选项三";
- } else if (controls.includes("选项二")) return "选项二";
+ if (controls.includes("选项三"))
+ return "选项三";
+ } else if (controls.includes("选项二"))
+ return "选项二";
return controls.randomGet();
});
} else event.finish();
- "step 3";
+ ("step 3");
if (result.control == "选项一") {
- if (!target.isDisabledJudge()) target.disableJudge();
+ if (!target.isDisabledJudge())
+ target.disableJudge();
target.damage("fire");
} else {
- var cards = target.getCards("h", result.control == "选项二" ? "shan" : "sha");
+ var cards = target.getCards(
+ "h",
+ result.control == "选项二" ? "shan" : "sha"
+ );
if (cards.length) target.discard(cards);
}
},
@@ -3877,33 +5283,46 @@ game.import("character", function () {
const suit = get.suit(event.card);
if (
player
- .getRoundHistory("useCard", (evt) => get.suit(evt.card) == suit)
+ .getRoundHistory(
+ "useCard",
+ (evt) => get.suit(evt.card) == suit
+ )
.indexOf(event) != 0
)
return false;
return (
- (event.targets && event.targets.length == 1 && !event.targets[0].isLinked()) ||
+ (event.targets &&
+ event.targets.length == 1 &&
+ !event.targets[0].isLinked()) ||
player.hasCard(
- (card) => get.suit(card) == get.suit(event.card) && player.canRecast(card),
+ (card) =>
+ get.suit(card) == get.suit(event.card) &&
+ player.canRecast(card),
"h"
)
);
},
content() {
"step 0";
- if (trigger.targets && trigger.targets.length == 1 && !trigger.targets[0].isLinked()) {
+ if (
+ trigger.targets &&
+ trigger.targets.length == 1 &&
+ !trigger.targets[0].isLinked()
+ ) {
trigger.targets[0].link(true);
event.link = true;
}
var cards = player.getCards(
"h",
- (card) => get.suit(card) == get.suit(trigger.card) && player.canRecast(card)
+ (card) =>
+ get.suit(card) == get.suit(trigger.card) &&
+ player.canRecast(card)
);
if (cards.length > 0) {
player.recast(cards);
event.recast = true;
}
- "step 1";
+ ("step 1");
if (event.link && event.recast) player.draw();
},
group: "clandianzhan_count",
@@ -3914,7 +5333,10 @@ game.import("character", function () {
filter(event, player) {
let suit = get.suit(event.card);
return (
- lib.suits.includes(suit) && !player.getStorage("clandianzhan").includes(suit)
+ lib.suits.includes(suit) &&
+ !player
+ .getStorage("clandianzhan")
+ .includes(suit)
);
},
forced: true,
@@ -3922,17 +5344,25 @@ game.import("character", function () {
content() {
let suits = player
.getRoundHistory("useCard", (evt) => {
- return lib.suits.includes(get.suit(evt.card));
+ return lib.suits.includes(
+ get.suit(evt.card)
+ );
})
.reduce((list, evt) => {
return list.add(get.suit(evt.card));
}, [])
- .sort((a, b) => lib.suits.indexOf(a) - lib.suits.indexOf(b));
+ .sort(
+ (a, b) =>
+ lib.suits.indexOf(a) -
+ lib.suits.indexOf(b)
+ );
if (!player.storage.clandianzhan) {
- player.when({ global: "roundStart" }).then(() => {
- delete player.storage.clandianzhan;
- player.unmarkSkill("clandianzhan");
- });
+ player
+ .when({ global: "roundStart" })
+ .then(() => {
+ delete player.storage.clandianzhan;
+ player.unmarkSkill("clandianzhan");
+ });
}
player.storage.clandianzhan = suits;
player.markSkill("clandianzhan");
@@ -3947,7 +5377,10 @@ game.import("character", function () {
.reduce((list, evt) => {
return list.add(get.suit(evt.card));
}, [])
- .sort((a, b) => lib.suits.indexOf(a) - lib.suits.indexOf(b));
+ .sort(
+ (a, b) =>
+ lib.suits.indexOf(a) - lib.suits.indexOf(b)
+ );
if (suits.length) {
if (!player.storage.clandianzhan) {
player.when({ global: "roundStart" }).then(() => {
@@ -3974,7 +5407,13 @@ game.import("character", function () {
},
clandaojie: {
audio: 2,
- audioname: ["clan_xunshu", "clan_xunchen", "clan_xuncai", "clan_xuncan", "clan_xunyou"],
+ audioname: [
+ "clan_xunshu",
+ "clan_xunchen",
+ "clan_xuncai",
+ "clan_xuncan",
+ "clan_xunyou",
+ ],
trigger: { player: "useCardAfter" },
filter(event, player) {
return (
@@ -3984,7 +5423,8 @@ game.import("character", function () {
player
.getHistory("useCard", (evt) => {
return (
- get.type(evt.card, null, false) == "trick" && !get.tag(evt.card, "damage")
+ get.type(evt.card, null, false) ==
+ "trick" && !get.tag(evt.card, "damage")
);
})
.indexOf(event) == 0
@@ -3994,17 +5434,20 @@ game.import("character", function () {
clanSkill: true,
content() {
"step 0";
- var skills = player.getSkills(null, false, false).filter((skill) => {
- var info = get.info(skill);
- if (
- !info ||
- info.charlotte ||
- !get.is.locked(skill) ||
- get.skillInfoTranslation(skill, player).length == 0
- )
- return false;
- return true;
- });
+ var skills = player
+ .getSkills(null, false, false)
+ .filter((skill) => {
+ var info = get.info(skill);
+ if (
+ !info ||
+ info.charlotte ||
+ !get.is.locked(skill) ||
+ get.skillInfoTranslation(skill, player)
+ .length == 0
+ )
+ return false;
+ return true;
+ });
player
.chooseControl(skills, "cancel2")
.set(
@@ -4013,7 +5456,8 @@ game.import("character", function () {
return (
'
【' +
get.translation(
- lib.translate[i + "_ab"] || get.translation(i).slice(0, 2)
+ lib.translate[i + "_ab"] ||
+ get.translation(i).slice(0, 2)
) +
"】
" +
get.skillInfoTranslation(i, player) +
@@ -4022,7 +5466,10 @@ game.import("character", function () {
})
)
.set("displayIndex", false)
- .set("prompt", "蹈节:失去一个锁定技,或点“取消”失去1点体力")
+ .set(
+ "prompt",
+ "蹈节:失去一个锁定技,或点“取消”失去1点体力"
+ )
.set("ai", () => {
var player = _status.event.player,
choices = _status.event.controls.slice();
@@ -4032,34 +5479,51 @@ game.import("character", function () {
return info.ai.neg || info.ai.halfneg;
});
if (negs.length) return negs.randomGet();
- if (get.effect(player, { name: "losehp" }, player, player) >= 0) return "cancel2";
+ if (
+ get.effect(
+ player,
+ { name: "losehp" },
+ player,
+ player
+ ) >= 0
+ )
+ return "cancel2";
if (player.hp > 3) return "cancel2";
- return Math.random() < 0.75 ? "clandaojie" : choices.randomGet();
+ return Math.random() < 0.75
+ ? "clandaojie"
+ : choices.randomGet();
});
- "step 1";
+ ("step 1");
if (result.control != "cancel2") {
player.removeSkills(result.control);
} else {
player.loseHp();
}
- "step 2";
+ ("step 2");
var targets = game.filterPlayer(
- (current) => current == player || current.hasClan("颍川荀氏")
+ (current) =>
+ current == player || current.hasClan("颍川荀氏")
);
- if (targets.length == 1) event._result = { bool: true, targets: targets };
+ if (targets.length == 1)
+ event._result = { bool: true, targets: targets };
else
player
.chooseTarget(
"蹈节:将" +
- get.translation(trigger.cards.filterInD()) +
- "交给一名颍川荀氏角色",
+ get.translation(trigger.cards.filterInD()) +
+ "交给一名颍川荀氏角色",
true,
(card, player, target) => {
- return target == player || target.hasClan("颍川荀氏");
+ return (
+ target == player ||
+ target.hasClan("颍川荀氏")
+ );
}
)
- .set("ai", (target) => get.attitude(_status.event.player, target));
- "step 3";
+ .set("ai", (target) =>
+ get.attitude(_status.event.player, target)
+ );
+ ("step 3");
if (result.bool) {
var target = result.targets[0];
player.line(target, "green");
@@ -4102,13 +5566,17 @@ game.import("character", function () {
},
content() {
if (
- player.hasHistory("sourceDamage", function (evt) {
- return evt.card == trigger.card;
- })
+ player.hasHistory(
+ "sourceDamage",
+ function (evt) {
+ return evt.card == trigger.card;
+ }
+ )
) {
var num1 = player.countCards("h"),
num2 = player.getHandcardLimit();
- if (num1 < num2) player.draw(Math.min(5, num2 - num1));
+ if (num1 < num2)
+ player.draw(Math.min(5, num2 - num1));
} else if (trigger.addCount !== false) {
trigger.addCount = false;
player.getStat().card.sha--;
@@ -4145,7 +5613,7 @@ game.import("character", function () {
player.countCards("h", function (card) {
return lib.skill.clanyirong.checkx(card) > 0;
}) +
- 1 <
+ 1 <
player.countCards("h") - player.getHandcardLimit()
)
return 0;
@@ -4153,7 +5621,8 @@ game.import("character", function () {
},
checkx(card) {
var num = 1;
- if (_status.event.player.getUseValue(card, null, true) <= 0) num = 1.5;
+ if (_status.event.player.getUseValue(card, null, true) <= 0)
+ num = 1.5;
return (15 - get.value(card)) * num;
},
prompt() {
@@ -4162,9 +5631,15 @@ game.import("character", function () {
num2 = player.getHandcardLimit();
var str = '';
if (num1 > num2) {
- str += "弃置" + get.cnNumber(num1 - num2) + "张牌,然后手牌上限+1。";
+ str +=
+ "弃置" +
+ get.cnNumber(num1 - num2) +
+ "张牌,然后手牌上限+1。";
} else {
- str += "摸" + get.cnNumber(Math.min(8, num2 - num1)) + "张牌,然后手牌上限-1。";
+ str +=
+ "摸" +
+ get.cnNumber(Math.min(8, num2 - num1)) +
+ "张牌,然后手牌上限-1。";
}
str += "
※当前手牌上限:" + num2;
var num3 = (_status.event.getParent().phaseIndex || 0) + 1;
@@ -4184,14 +5659,20 @@ game.import("character", function () {
num2 = player.getHandcardLimit();
if (num1 < num2) player.draw(Math.min(8, num2 - num1));
}
- "step 1";
+ ("step 1");
lib.skill.chenliuwushi.change(player, -1);
},
ai: {
order(item, player) {
var num = player.getHandcardLimit(),
- numx = (_status.event.getParent().phaseIndex || 0) + 1;
- if (num == 5 && numx == 4 && player.getStat("skill").clanyirong) return 0;
+ numx =
+ (_status.event.getParent().phaseIndex || 0) + 1;
+ if (
+ num == 5 &&
+ numx == 4 &&
+ player.getStat("skill").clanyirong
+ )
+ return 0;
if (
player.countCards("h") == num + 1 &&
num != 2 &&
@@ -4211,7 +5692,8 @@ game.import("character", function () {
},
forced: true,
filter(event, player) {
- if (event.phaseList[event.num].startsWith("phaseUse")) return false;
+ if (event.phaseList[event.num].startsWith("phaseUse"))
+ return false;
var num1 = player.getHandcardLimit() - 1,
num2 = event.num;
return num1 == num2;
@@ -4224,18 +5706,27 @@ game.import("character", function () {
clanmuyin: {
audio: 2,
clanSkill: true,
- audioname: ["clan_wuxian", "clan_wuban", "clan_wukuang", "clan_wuqiao"],
+ audioname: [
+ "clan_wuxian",
+ "clan_wuban",
+ "clan_wukuang",
+ "clan_wuqiao",
+ ],
trigger: { player: "phaseBegin" },
isMax(player) {
var num = player.getHandcardLimit();
return !game.hasPlayer(function (current) {
- return current != player && current.getHandcardLimit() > num;
+ return (
+ current != player &&
+ current.getHandcardLimit() > num
+ );
});
},
filter(event, player) {
return game.hasPlayer(function (current) {
return (
- (current == player || current.hasClan("陈留吴氏")) &&
+ (current == player ||
+ current.hasClan("陈留吴氏")) &&
!lib.skill.clanmuyin.isMax(current)
);
});
@@ -4249,7 +5740,8 @@ game.import("character", function () {
"令一名陈留吴氏角色的手牌上限+1",
function (card, player, current) {
return (
- (current == player || current.hasClan("陈留吴氏")) &&
+ (current == player ||
+ current.hasClan("陈留吴氏")) &&
!lib.skill.clanmuyin.isMax(current)
);
}
@@ -4257,7 +5749,7 @@ game.import("character", function () {
.set("ai", function (target) {
return get.attitude(_status.event.player, target);
});
- "step 1";
+ ("step 1");
if (result.bool) {
var target = result.targets[0];
player.logSkill("clanmuyin", target);
@@ -4271,9 +5763,11 @@ game.import("character", function () {
change(player, num) {
player.addSkill("chenliuwushi");
var info = player.storage;
- if (typeof info.chenliuwushi != "number") info.chenliuwushi = 0;
+ if (typeof info.chenliuwushi != "number")
+ info.chenliuwushi = 0;
info.chenliuwushi += num;
- if (info.chenliuwushi == 0) player.unmarkSkill("chenliuwushi");
+ if (info.chenliuwushi == 0)
+ player.unmarkSkill("chenliuwushi");
else player.markSkill("chenliuwushi");
if (num >= 0) game.log(player, "的手牌上限", "#y+" + num);
else game.log(player, "的手牌上限", "#g" + num);
@@ -4418,7 +5912,8 @@ game.import("character", function () {
clanliuju_info:
"出牌阶段结束时,你可以与一名角色A拼点,输的角色可以使用任意张拼点牌中的非基本牌。然后若你至A的距离或A至你的距离发生了变化,你重置〖恤民〗。",
clanxumin: "恤民",
- clanxumin_info: "宗族技,限定技。你可以将一张牌当做【五谷丰登】对任意名其他角色使用。",
+ clanxumin_info:
+ "宗族技,限定技。你可以将一张牌当做【五谷丰登】对任意名其他角色使用。",
clan_hanrong: "族韩融",
clanlianhe: "连和",
clanlianhe_info:
@@ -4445,7 +5940,8 @@ game.import("character", function () {
clanxiaoyong_info:
"锁定技。当你于回合内首次使用字数为X的牌时,你重置〖观骨〗(X为你上次发动〖观骨〗观看的牌数)。",
clanbaozu: "保族",
- clanbaozu_info: "宗族技,限定技。当一名颍川钟氏角色进入濒死状态时,你可以令其横置并回复1点体力。",
+ clanbaozu_info:
+ "宗族技,限定技。当一名颍川钟氏角色进入濒死状态时,你可以令其横置并回复1点体力。",
clan_wangyun: "族王允",
clanjiexuan: "解悬",
clanjiexuan_info:
@@ -4508,10 +6004,11 @@ game.import("character", function () {
clan_zhongyao: "族钟繇",
clan_zhongyao_prefix: "族",
clanchengqi: "承启",
- clanchengqi_info: "你可以将至少两张手牌当作本回合未以此法转换过的基本牌或普通锦囊牌使用,且你以此法转化的牌名字数须不大于以此法转化的所有实体牌牌名字数之和,若你以此法转化的牌名字数等于以此法转化的所有实体牌牌名字数之和,则你使用此牌时可以令一名角色摸一张牌。",
+ clanchengqi_info:
+ "你可以将至少两张手牌当作本回合未以此法转换过的基本牌或普通锦囊牌使用,且你以此法转化的牌名字数须不大于以此法转化的所有实体牌牌名字数之和,若你以此法转化的牌名字数等于以此法转化的所有实体牌牌名字数之和,则你使用此牌时可以令一名角色摸一张牌。",
clanjieli: "诫厉",
- clanjieli_info: "结束阶段,你可以选择一名角色,你观看其手牌中牌名字数最多的牌和牌堆顶X张牌,然后你可以交换其中的X张牌(X为你本回合使用过的牌中的牌名字数最大值)。",
-
+ clanjieli_info:
+ "结束阶段,你可以选择一名角色,你观看其手牌中牌名字数最多的牌和牌堆顶X张牌,然后你可以交换其中的X张牌(X为你本回合使用过的牌中的牌名字数最大值)。",
clan_wu: "陈留·吴氏",
clan_xun: "颍川·荀氏",