2024-04-15 18:36:20 +00:00
|
|
|
|
import { lib, game, ui, get, ai, _status } from "../noname.js";
|
|
|
|
|
game.import("card", function () {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return {
|
2024-04-15 18:36:20 +00:00
|
|
|
|
name: "guozhan",
|
|
|
|
|
connect: true,
|
|
|
|
|
card: {
|
|
|
|
|
zhaoshu: {
|
|
|
|
|
audio: true,
|
|
|
|
|
mode: ["guozhan"],
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "equip",
|
|
|
|
|
subtype: "equip5",
|
|
|
|
|
skills: ["zhaoshu_skill"],
|
|
|
|
|
content: function () {
|
|
|
|
|
cards = cards.filterInD();
|
|
|
|
|
if (cards.length && target.isAlive()) {
|
|
|
|
|
target.addToExpansion(cards, "gain2").gaintag.add("zhaoshu_skill");
|
|
|
|
|
target.addSkill("zhaoshu_skill");
|
|
|
|
|
game.addGlobalSkill("zhaoshu_global");
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
onEquip: function () {
|
|
|
|
|
if (player.isAlive()) {
|
|
|
|
|
player.addToExpansion(card, "giveAuto").gaintag.add("zhaoshu_skill");
|
|
|
|
|
player.markAuto("zhaoshu_skill", [card]);
|
|
|
|
|
player.addSkill("zhaoshu_skill");
|
|
|
|
|
game.addGlobalSkill("zhaoshu_global");
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 12,
|
|
|
|
|
value: 3,
|
|
|
|
|
useful: 1,
|
|
|
|
|
result: {
|
|
|
|
|
keepAI: true,
|
|
|
|
|
target: 1,
|
2021-08-05 11:46:11 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},
|
2021-08-05 11:46:11 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
gz_haolingtianxia: {
|
|
|
|
|
audio: true,
|
|
|
|
|
mode: ["guozhan"],
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
filterTarget(card, player, target) {
|
|
|
|
|
return target != player && !target.isMinHp();
|
|
|
|
|
},
|
|
|
|
|
async content(event, trigger, player) {
|
|
|
|
|
const target = event.target;
|
|
|
|
|
if (!target.isIn()) return;
|
|
|
|
|
const str = get.translation(target);
|
|
|
|
|
const card = new lib.element.VCard({ name: "sha" });
|
|
|
|
|
const targets = game
|
|
|
|
|
.filterPlayer((current) => {
|
|
|
|
|
return current != target;
|
|
|
|
|
})
|
|
|
|
|
.sortBySeat();
|
|
|
|
|
for (const current of targets) {
|
|
|
|
|
if (!target.isIn()) return;
|
|
|
|
|
if (!current || !current.isIn() || current.hasSkill("diaohulishan")) continue;
|
|
|
|
|
let choiceList = [
|
|
|
|
|
"弃置一张牌,视为对" + str + "使用一张【杀】",
|
|
|
|
|
"弃置" + str + "一张牌",
|
|
|
|
|
],
|
|
|
|
|
choices = ["出杀", "弃牌", "cancel2"];
|
|
|
|
|
if (current.identity == "wei") {
|
|
|
|
|
choiceList[0] = choiceList[0].slice(6);
|
|
|
|
|
choiceList[1] = "获得" + choiceList[1].slice(2);
|
|
|
|
|
choices[1] = "得牌";
|
2024-02-05 12:35:36 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (
|
|
|
|
|
!current.canUse(card, target, false) ||
|
|
|
|
|
(current.identity != "wei" && !current.countDiscardableCards(current, "he"))
|
|
|
|
|
) {
|
|
|
|
|
choiceList[0] = '<span style="opacity:0.5">' + choiceList[0] + "</span>";
|
|
|
|
|
choices.remove("出杀");
|
2024-02-05 12:35:36 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (!target.countCards("he")) {
|
|
|
|
|
choiceList[1] = '<span style="opacity:0.5">' + choiceList[1] + "</span>";
|
|
|
|
|
choices.remove(current.identity == "wei" ? "得牌" : "弃牌");
|
2024-02-05 12:35:36 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (choices.length > 1) {
|
|
|
|
|
const {
|
|
|
|
|
result: { control },
|
|
|
|
|
} = await current
|
|
|
|
|
.chooseControl(choices)
|
|
|
|
|
.set("prompt", "号令天下:请选择其中一项")
|
|
|
|
|
.set("target", target)
|
|
|
|
|
.set("ai", () => {
|
|
|
|
|
const player = get.event("player"),
|
|
|
|
|
target = get.event("target"),
|
|
|
|
|
choices = get.event("controls");
|
|
|
|
|
const guohe = new lib.element.VCard({ name: "guohe_copy2" }),
|
|
|
|
|
shunshou = new lib.element.VCard({ name: "shunshou_copy2" }),
|
|
|
|
|
sha = new lib.element.VCard({ name: "sha" });
|
|
|
|
|
const num = Math.max(
|
|
|
|
|
0,
|
|
|
|
|
choices.includes("弃牌") ? get.effect(target, guohe, player) : 0,
|
|
|
|
|
choices.includes("得牌") ? get.effect(target, shunshou, player) : 0
|
|
|
|
|
);
|
|
|
|
|
if (
|
|
|
|
|
choices.includes("出杀") &&
|
|
|
|
|
get.effect(player, guohe, player) + get.effect(target, sha, player) >
|
|
|
|
|
num
|
|
|
|
|
)
|
|
|
|
|
return "出杀";
|
|
|
|
|
if (choices.includes("得牌") && num > 0) return "得牌";
|
|
|
|
|
if (choices.includes("弃牌") && num > 0) return "弃牌";
|
|
|
|
|
return "cancel2";
|
|
|
|
|
});
|
|
|
|
|
if (control != "cancel2") {
|
|
|
|
|
if (control == "出杀") {
|
|
|
|
|
if (current.identity != "wei") await current.chooseToDiscard("he", true);
|
|
|
|
|
await current.useCard(card, target, false);
|
|
|
|
|
} else
|
|
|
|
|
await current[
|
|
|
|
|
current.identity == "wei" ? "gainPlayerCard" : "discardPlayerCard"
|
|
|
|
|
](target, true, "he").set("boolline", true);
|
2024-02-05 12:35:36 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2021-06-28 04:20:10 +00:00
|
|
|
|
}
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
ai: {
|
|
|
|
|
order: 6,
|
|
|
|
|
value: 9,
|
|
|
|
|
useful: 6,
|
|
|
|
|
tag: {
|
|
|
|
|
damage: 1,
|
|
|
|
|
discard: 1,
|
|
|
|
|
loseCard: 1,
|
2021-06-28 04:20:10 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
result: {
|
|
|
|
|
target(player, target) {
|
|
|
|
|
return -1.5 * (game.countPlayer() - 1);
|
2021-06-28 04:20:10 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
gz_kefuzhongyuan: {
|
|
|
|
|
audio: true,
|
|
|
|
|
mode: ["guozhan"],
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
filterTarget: true,
|
|
|
|
|
selectTarget: [1, Infinity],
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
var p1 = "请选择【杀】的目标",
|
|
|
|
|
p2 = "或点击「取消」摸一张牌";
|
|
|
|
|
if (target.identity == "shu") {
|
|
|
|
|
p1 += "(伤害+1)";
|
|
|
|
|
p2 = "或点击「取消」摸两张牌";
|
|
|
|
|
}
|
|
|
|
|
var next = target.chooseUseTarget("sha", p1, p2, false);
|
|
|
|
|
if (target.identity == "shu")
|
|
|
|
|
next.set("oncard", function () {
|
|
|
|
|
_status.event.baseDamage++;
|
|
|
|
|
});
|
|
|
|
|
"step 1";
|
|
|
|
|
if (!result.bool) {
|
|
|
|
|
target.draw(target.identity == "shu" ? 2 : 1);
|
2021-06-28 04:20:10 +00:00
|
|
|
|
}
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
ai: {
|
|
|
|
|
wuxie: function (target, card, player, viewer) {
|
|
|
|
|
if (get.mode() == "guozhan") {
|
|
|
|
|
if (!_status._aozhan) {
|
|
|
|
|
if (!player.isMajor()) {
|
|
|
|
|
if (!viewer.isMajor()) return 0;
|
2024-02-21 23:24:35 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-02-21 14:26:17 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
order: 4,
|
|
|
|
|
value: 9,
|
|
|
|
|
useful: 6,
|
|
|
|
|
tag: {
|
|
|
|
|
gain: 1,
|
2021-06-28 04:20:10 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
result: { target: 1.5 },
|
2021-06-28 04:20:10 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
gz_guguoanbang: {
|
|
|
|
|
audio: true,
|
|
|
|
|
mode: ["guozhan"],
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
selectTarget: -1,
|
|
|
|
|
toself: true,
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return target == player;
|
|
|
|
|
},
|
|
|
|
|
modTarget: true,
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
2021-06-28 04:20:10 +00:00
|
|
|
|
target.draw(8);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
"step 1";
|
|
|
|
|
target.chooseToDiscard("请弃置至少六张手牌", [6, target.countCards("h")], true, "h");
|
|
|
|
|
if (target.identity != "wu") event.finish();
|
|
|
|
|
"step 2";
|
|
|
|
|
if (!result.cards || !result.cards.length) event.finish();
|
|
|
|
|
event.give_cards = result.cards;
|
|
|
|
|
event.given_list = [];
|
|
|
|
|
"step 3";
|
|
|
|
|
event.give_cards = event.give_cards.filterInD("d");
|
|
|
|
|
if (
|
|
|
|
|
!event.give_cards.length ||
|
|
|
|
|
!game.hasPlayer(function (current) {
|
|
|
|
|
return (
|
|
|
|
|
current != target &&
|
|
|
|
|
current.identity == "wu" &&
|
|
|
|
|
!event.given_list.includes(current)
|
|
|
|
|
);
|
|
|
|
|
})
|
|
|
|
|
)
|
|
|
|
|
event.finish();
|
|
|
|
|
else {
|
|
|
|
|
target.chooseButton(["是否将弃置的牌交给其他吴势力角色?", event.give_cards], [1, 2]);
|
|
|
|
|
}
|
|
|
|
|
"step 4";
|
|
|
|
|
if (result.bool) {
|
|
|
|
|
event.cards2 = result.links;
|
|
|
|
|
target
|
|
|
|
|
.chooseTarget(
|
|
|
|
|
true,
|
|
|
|
|
"选择获得" + get.translation(event.cards2) + "的角色",
|
|
|
|
|
function (card, player, target) {
|
|
|
|
|
return (
|
|
|
|
|
target != player &&
|
|
|
|
|
target.identity == "wu" &&
|
|
|
|
|
!_status.event.targets.includes(target)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
.set("targets", event.given_list);
|
|
|
|
|
} else event.finish();
|
|
|
|
|
"step 5";
|
|
|
|
|
if (result.bool && result.targets && result.targets.length) {
|
|
|
|
|
var current = result.targets[0];
|
|
|
|
|
target.line(current, "green");
|
|
|
|
|
current.gain(event.cards2, "gain2").giver = player;
|
2021-06-28 04:20:10 +00:00
|
|
|
|
event.given_list.push(current);
|
|
|
|
|
event.goto(3);
|
|
|
|
|
}
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
ai: {
|
|
|
|
|
wuxie: function (target, card, player, viewer) {
|
|
|
|
|
if (get.mode() == "guozhan") {
|
|
|
|
|
if (!_status._aozhan) {
|
|
|
|
|
if (!player.isMajor()) {
|
|
|
|
|
if (!viewer.isMajor()) return 0;
|
2024-02-21 23:24:35 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-02-21 14:26:17 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
order: 6,
|
|
|
|
|
value: 9,
|
|
|
|
|
useful: 6,
|
|
|
|
|
tag: {
|
|
|
|
|
draw: 8,
|
|
|
|
|
loseCard: 6,
|
|
|
|
|
discard: 6,
|
2021-06-28 04:20:10 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
result: {
|
|
|
|
|
target: function (player, target) {
|
|
|
|
|
if (target.identity != "wu") return 3;
|
|
|
|
|
return Math.max(
|
|
|
|
|
3,
|
|
|
|
|
Math.min(
|
|
|
|
|
8,
|
|
|
|
|
2 *
|
|
|
|
|
game.countPlayer(function (current) {
|
|
|
|
|
return current.identity == "wu";
|
|
|
|
|
})
|
|
|
|
|
)
|
|
|
|
|
);
|
2021-06-28 04:20:10 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
gz_wenheluanwu: {
|
|
|
|
|
audio: true,
|
|
|
|
|
mode: ["guozhan"],
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
filterTarget: true,
|
|
|
|
|
selectTarget: -1,
|
|
|
|
|
ignoreTarget: function (card, player, target) {
|
|
|
|
|
return target.countCards("h") == 0;
|
|
|
|
|
},
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
if (!target.countCards("h") || !player.isIn()) event.finish();
|
2021-06-28 04:20:10 +00:00
|
|
|
|
else target.showHandcards();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
"step 1";
|
|
|
|
|
var str = get.translation(target);
|
|
|
|
|
player
|
|
|
|
|
.chooseControl()
|
|
|
|
|
.set("prompt", "文和乱武:请选择一项")
|
|
|
|
|
.set("choiceList", [
|
|
|
|
|
"令" + str + "弃置两张类型不同的手牌",
|
|
|
|
|
"弃置" + str + "的一张手牌",
|
|
|
|
|
])
|
|
|
|
|
.set("ai", () => {
|
|
|
|
|
let target = _status.event.getParent().target,
|
|
|
|
|
hs = target.getCards("h"),
|
|
|
|
|
type = [],
|
|
|
|
|
att = get.attitude(_status.event.player, target);
|
|
|
|
|
if (hs.length < 2) return att > 0 ? 1 : 0;
|
|
|
|
|
hs.forEach((i) => {
|
|
|
|
|
type.add(get.type2(i, target));
|
|
|
|
|
});
|
|
|
|
|
if (target.identity !== "qun") {
|
|
|
|
|
if (Boolean(att > 0) === Boolean(type.length > 1)) return 1;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
if (type.length < 2 || target.hp < 3) return att > 0 ? 1 : 0;
|
|
|
|
|
if (hs.length === 2) return att > 0 ? 0 : 1;
|
|
|
|
|
return att > 0 ? 1 : 0;
|
2023-12-27 00:53:29 +00:00
|
|
|
|
});
|
2024-04-15 18:36:20 +00:00
|
|
|
|
"step 2";
|
|
|
|
|
if (result.index == 0) {
|
|
|
|
|
var list = [],
|
|
|
|
|
hs = target.getCards("h");
|
|
|
|
|
for (var i of hs) {
|
|
|
|
|
if (lib.filter.cardDiscardable(i, target, "gz_wenheluanwu"))
|
|
|
|
|
list.add(get.type2(i, target));
|
|
|
|
|
if (list.length > 1) break;
|
2023-12-27 00:53:29 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (list.length > 1)
|
|
|
|
|
target
|
|
|
|
|
.chooseToDiscard(
|
|
|
|
|
"h",
|
|
|
|
|
true,
|
|
|
|
|
"请弃置两张类型不同的手牌",
|
|
|
|
|
2,
|
|
|
|
|
function (card, player) {
|
|
|
|
|
if (!ui.selected.cards.length) return true;
|
|
|
|
|
return (
|
|
|
|
|
get.type2(card, target) != get.type2(ui.selected.cards[0], target)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
.set("complexCard", true);
|
|
|
|
|
else if (list.length == 1) target.chooseToDiscard("h", true);
|
2021-06-28 04:20:10 +00:00
|
|
|
|
else event.finish();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else {
|
|
|
|
|
player.discardPlayerCard(target, "h", true, "visible");
|
|
|
|
|
}
|
|
|
|
|
"step 3";
|
|
|
|
|
if (
|
|
|
|
|
target.identity != "qun" ||
|
|
|
|
|
!result.bool ||
|
|
|
|
|
!result.cards ||
|
|
|
|
|
!result.cards.length ||
|
|
|
|
|
target.countCards("h") > 0 ||
|
|
|
|
|
target.hp < 1
|
|
|
|
|
)
|
|
|
|
|
event.finish();
|
|
|
|
|
else target.draw(Math.min(5, target.hp));
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 6,
|
|
|
|
|
value: 10,
|
|
|
|
|
useful: 6,
|
|
|
|
|
tag: {
|
|
|
|
|
discard: 1.5,
|
|
|
|
|
loseCard: 1.5,
|
2021-06-28 04:20:10 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
result: { target: -1.5 },
|
2021-06-28 04:20:10 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
liulongcanjia: {
|
|
|
|
|
audio: true,
|
|
|
|
|
mode: ["guozhan"],
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "equip",
|
|
|
|
|
subtype: "equip6",
|
|
|
|
|
subtypes: ["equip3", "equip4"],
|
|
|
|
|
nomod: true,
|
|
|
|
|
nopower: true,
|
2023-08-12 05:05:29 +00:00
|
|
|
|
//unique:true,
|
2024-04-15 18:36:20 +00:00
|
|
|
|
distance: {
|
|
|
|
|
globalFrom: -1,
|
|
|
|
|
globalTo: +1,
|
|
|
|
|
},
|
|
|
|
|
skills: ["liulongcanjia"],
|
|
|
|
|
ai: {
|
|
|
|
|
equipValue: function (card, player) {
|
|
|
|
|
if (player.countCards("e", { subtype: ["equip3", "equip4"] }) > 1) return 1;
|
|
|
|
|
if (player.hasSkill("gzzongyu")) return 9;
|
|
|
|
|
if (
|
|
|
|
|
game.hasPlayer(function (current) {
|
|
|
|
|
return current.hasSkill("gzzongyu") && get.attitude(player, current) <= 0;
|
|
|
|
|
})
|
|
|
|
|
)
|
|
|
|
|
return 1;
|
2020-02-08 03:39:33 +00:00
|
|
|
|
return 7.2;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
basic: {
|
|
|
|
|
equipValue: 7.2,
|
|
|
|
|
},
|
2020-02-08 03:39:33 +00:00
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
minguangkai: {
|
|
|
|
|
audio: true,
|
|
|
|
|
mode: ["guozhan"],
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "equip",
|
|
|
|
|
subtype: "equip2",
|
|
|
|
|
skills: ["minguangkai_cancel", "minguangkai_link"],
|
|
|
|
|
ai: {
|
|
|
|
|
basic: {
|
|
|
|
|
equipValue: 6,
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
dinglanyemingzhu: {
|
|
|
|
|
audio: true,
|
|
|
|
|
mode: ["guozhan"],
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "equip",
|
|
|
|
|
subtype: "equip5",
|
|
|
|
|
nomod: true,
|
|
|
|
|
nopower: true,
|
|
|
|
|
unique: true,
|
|
|
|
|
global: "g_dinglanyemingzhu_ai",
|
|
|
|
|
skills: ["dinglanyemingzhu_skill"],
|
|
|
|
|
ai: {
|
|
|
|
|
equipValue: function (card, player) {
|
|
|
|
|
if (player.hasSkill("jubao")) return 8;
|
|
|
|
|
if (player.hasSkill("gzzhiheng")) return 6;
|
|
|
|
|
if (
|
|
|
|
|
game.hasPlayer(function (current) {
|
|
|
|
|
return current.hasSkill("jubao") && get.attitude(player, current) <= 0;
|
|
|
|
|
})
|
|
|
|
|
) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
return 7;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
basic: {
|
|
|
|
|
equipValue: 6.5,
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
feilongduofeng: {
|
|
|
|
|
audio: true,
|
|
|
|
|
mode: ["guozhan"],
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "equip",
|
|
|
|
|
subtype: "equip1",
|
|
|
|
|
nomod: true,
|
|
|
|
|
nopower: true,
|
|
|
|
|
unique: true,
|
|
|
|
|
global: "g_feilongduofeng_ai",
|
|
|
|
|
distance: { attackFrom: -1 },
|
|
|
|
|
skills: ["feilongduofeng", "feilongduofeng3"],
|
|
|
|
|
ai: {
|
|
|
|
|
equipValue: function (card, player) {
|
|
|
|
|
if (player.hasSkill("zhangwu")) return 9;
|
|
|
|
|
if (
|
|
|
|
|
game.hasPlayer(function (current) {
|
|
|
|
|
return current.hasSkill("zhangwu") && get.attitude(player, current) <= 0;
|
|
|
|
|
})
|
|
|
|
|
) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
return 8;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
basic: {
|
|
|
|
|
equipValue: 7,
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
taipingyaoshu: {
|
|
|
|
|
audio: true,
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "equip",
|
|
|
|
|
subtype: "equip2",
|
2024-04-28 08:21:58 +00:00
|
|
|
|
cardcolor: "heart",
|
2024-04-15 18:36:20 +00:00
|
|
|
|
nomod: true,
|
|
|
|
|
nopower: true,
|
|
|
|
|
unique: true,
|
|
|
|
|
global: ["g_taipingyaoshu_ai"],
|
|
|
|
|
skills: ["taipingyaoshu"],
|
|
|
|
|
ai: {
|
|
|
|
|
equipValue: function (card, player) {
|
|
|
|
|
if (player.hasSkill("wendao")) return 9;
|
|
|
|
|
if (
|
|
|
|
|
game.hasPlayer(function (current) {
|
|
|
|
|
return current.hasSkill("wendao") && get.attitude(player, current) <= 0;
|
|
|
|
|
})
|
|
|
|
|
) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
return 6;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
basic: {
|
|
|
|
|
equipValue: 6,
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
filterLose: function (card, player) {
|
|
|
|
|
if (player.hasSkillTag("unequip2")) return false;
|
2020-10-15 05:41:31 +00:00
|
|
|
|
return true;
|
2019-11-14 05:47:38 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
loseDelay: false,
|
|
|
|
|
onLose: function () {
|
|
|
|
|
var next = game.createEvent("taipingyaoshu");
|
2020-10-15 05:41:31 +00:00
|
|
|
|
event.next.remove(next);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
var evt = event.getParent();
|
|
|
|
|
if (evt.getlx === false) evt = evt.getParent();
|
2020-10-15 05:41:31 +00:00
|
|
|
|
evt.after.push(next);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
next.player = player;
|
2020-10-15 05:41:31 +00:00
|
|
|
|
next.setContent(lib.card.taipingyaoshu.onLosex);
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
onLosex: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
player.logSkill("taipingyaoshu");
|
2019-11-07 14:38:08 +00:00
|
|
|
|
player.draw(2);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
"step 1";
|
|
|
|
|
if (player.hp > 1) player.loseHp();
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
yuxi: {
|
|
|
|
|
audio: true,
|
|
|
|
|
mode: ["guozhan"],
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "equip",
|
|
|
|
|
subtype: "equip5",
|
|
|
|
|
skills: ["yuxi_skill"],
|
|
|
|
|
ai: {
|
|
|
|
|
equipValue: 9,
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
xietianzi: {
|
|
|
|
|
audio: true,
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: function (card, player, event) {
|
|
|
|
|
if (get.mode() == "guozhan" && !player.isMajor()) return false;
|
|
|
|
|
if (player.hasSkill("xietianzi")) return false;
|
|
|
|
|
if (_status.currentPhase != player) return false;
|
|
|
|
|
var evt = event || _status.event;
|
|
|
|
|
if (evt.name != "chooseToUse") evt = evt.getParent("chooseToUse");
|
|
|
|
|
return evt.type == "phase";
|
|
|
|
|
},
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return player == target;
|
|
|
|
|
},
|
|
|
|
|
selectTarget: -1,
|
|
|
|
|
content: function () {
|
|
|
|
|
var evt = _status.event.getParent("phaseUse");
|
|
|
|
|
if (evt && evt.name == "phaseUse") {
|
|
|
|
|
evt.skipped = true;
|
|
|
|
|
}
|
|
|
|
|
target.addTempSkill("xietianzi");
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 0.5,
|
|
|
|
|
value: 4,
|
|
|
|
|
useful: 2,
|
|
|
|
|
result: {
|
|
|
|
|
target: function (player, target) {
|
|
|
|
|
if (target.countCards("h") >= 2) return 1;
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return 0;
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
shuiyanqijunx: {
|
|
|
|
|
audio: "shuiyanqijun",
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return (
|
|
|
|
|
target != player &&
|
|
|
|
|
(get.mode() != "guozhan" ||
|
|
|
|
|
_status.mode == "yingbian" ||
|
|
|
|
|
_status.mode == "free" ||
|
|
|
|
|
target.countCards("e") > 0)
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
enable: true,
|
|
|
|
|
defaultYingbianEffect: "add",
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
if (event.card.yingbian_all) {
|
|
|
|
|
target.discard(
|
|
|
|
|
target.getCards("e", function (card) {
|
|
|
|
|
return lib.filter.cardDiscardable(card, target, "shuiyanqijunx");
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
|
target.damage("thunder");
|
2021-03-20 13:29:25 +00:00
|
|
|
|
event.finish();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else if (
|
|
|
|
|
!target.countCards("e", function (card) {
|
|
|
|
|
return lib.filter.cardDiscardable(card, target, "shuiyanqijunx");
|
|
|
|
|
})
|
|
|
|
|
) {
|
|
|
|
|
var next = target.damage();
|
|
|
|
|
if (!get.is.single()) game.setNature(next, "thunder", true);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
event.finish();
|
|
|
|
|
return;
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else
|
|
|
|
|
target
|
|
|
|
|
.chooseControl("discard_card", "take_damage", function (event, player) {
|
|
|
|
|
let eff = get.damageEffect(player, event.player, player, "thunder");
|
|
|
|
|
if (eff > 0) return "take_damage";
|
|
|
|
|
if (player.hasSkillTag("noe")) return "discard_card";
|
|
|
|
|
if (!eff) return "take_damage";
|
|
|
|
|
if (
|
|
|
|
|
player.isDamaged() &&
|
|
|
|
|
player.hasCard(
|
|
|
|
|
(card) =>
|
|
|
|
|
get.name(card) == "baiyin" &&
|
|
|
|
|
get.recoverEffect(player, player, _status.event.player) > 0,
|
|
|
|
|
"e"
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
return "discard_card";
|
|
|
|
|
if (
|
|
|
|
|
player.hasCard((card) => get.value(card, player) <= 0, "e") &&
|
|
|
|
|
!player.hasCard(
|
|
|
|
|
(card) => get.value(card, player) > Math.max(7, 12 - player.hp),
|
|
|
|
|
"e"
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
return "discard_card";
|
|
|
|
|
if (
|
|
|
|
|
(player.hp > 2 && player.countCards("e") > 2) ||
|
|
|
|
|
(player.hp > 1 && player.countCards("e") > 3)
|
|
|
|
|
)
|
|
|
|
|
return "take_damage";
|
|
|
|
|
return "discard_card";
|
|
|
|
|
})
|
|
|
|
|
.set("prompt", "水淹七军")
|
|
|
|
|
.set(
|
|
|
|
|
"prompt2",
|
|
|
|
|
"请选择一项:⒈弃置装备区里的所有牌;⒉受到" +
|
|
|
|
|
get.translation(player) +
|
|
|
|
|
"造成的1点雷电伤害。"
|
|
|
|
|
);
|
|
|
|
|
"step 1";
|
|
|
|
|
if (result.control == "discard_card") {
|
|
|
|
|
target.discard(
|
|
|
|
|
target.getCards("e", function (card) {
|
|
|
|
|
return lib.filter.cardDiscardable(card, target, "shuiyanqijunx");
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
var next = target.damage();
|
|
|
|
|
if (!get.is.single()) game.setNature(next, "thunder", true);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2020-12-12 04:30:27 +00:00
|
|
|
|
event.finish();
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
ai: {
|
|
|
|
|
canLink: function (player, target, card) {
|
|
|
|
|
if (
|
|
|
|
|
!target.isLinked() ||
|
|
|
|
|
player.hasSkill("jueqing") ||
|
|
|
|
|
target.hasSkill("gangzhi") ||
|
|
|
|
|
player.hasSkill("gangzhi")
|
|
|
|
|
)
|
|
|
|
|
return false;
|
|
|
|
|
let es = target.getCards("e"),
|
|
|
|
|
val = 0;
|
|
|
|
|
if (!es.length) return true;
|
|
|
|
|
for (let i of es) {
|
|
|
|
|
if (i.name == "baiyin" && target.isDamaged() && get.recoverEffect(target))
|
|
|
|
|
val += get.value({ name: "tao" }, target);
|
|
|
|
|
else val -= get.value(i, target);
|
2021-07-06 08:45:57 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (0.15 * val > 2 * get.sgn(get.damageEffect(target, player, target, "thunder")))
|
|
|
|
|
return false;
|
2023-11-26 06:23:45 +00:00
|
|
|
|
return true;
|
2021-07-06 08:45:57 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
order: 6,
|
|
|
|
|
value: 4,
|
|
|
|
|
useful: 2,
|
|
|
|
|
tag: {
|
|
|
|
|
damage: 1,
|
|
|
|
|
thunderDamage: 1,
|
|
|
|
|
natureDamage: 1,
|
|
|
|
|
loseCard: 1,
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
yingbian: function (card, player, targets, viewer) {
|
|
|
|
|
if (get.attitude(viewer, player) <= 0) return 0;
|
|
|
|
|
var base = 0;
|
|
|
|
|
if (get.cardtag(card, "yingbian_all")) {
|
|
|
|
|
if (
|
|
|
|
|
targets.filter(function (current) {
|
|
|
|
|
return (
|
|
|
|
|
get.damageEffect(current, player, player, "thunder") > 0 &&
|
|
|
|
|
current.countCards("e", function (card) {
|
|
|
|
|
return get.value(card, current) <= 0;
|
|
|
|
|
}) < 2 &&
|
|
|
|
|
current.countCards("e", function (card) {
|
|
|
|
|
return get.value(card, current) > 0;
|
|
|
|
|
}) > 0
|
|
|
|
|
);
|
|
|
|
|
}).length
|
|
|
|
|
)
|
|
|
|
|
base += 6;
|
2021-07-28 08:46:10 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (get.cardtag(card, "yingbian_add")) {
|
|
|
|
|
if (
|
|
|
|
|
game.hasPlayer(function (current) {
|
|
|
|
|
return (
|
|
|
|
|
!targets.includes(current) &&
|
|
|
|
|
lib.filter.targetEnabled2(card, player, current) &&
|
|
|
|
|
get.effect(current, card, player, player) > 0
|
|
|
|
|
);
|
|
|
|
|
})
|
|
|
|
|
)
|
|
|
|
|
base += 6;
|
2021-07-28 08:46:10 +00:00
|
|
|
|
}
|
2020-12-22 13:57:12 +00:00
|
|
|
|
return 0;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
result: {
|
|
|
|
|
target: function (player, target, card, isLink) {
|
|
|
|
|
let es = target.getCards("e"),
|
|
|
|
|
eff = 2 * get.sgn(get.damageEffect(target, player, target, "thunder"));
|
|
|
|
|
if (isLink || !es.length) return eff;
|
|
|
|
|
let val = 0;
|
|
|
|
|
for (let i of es) {
|
|
|
|
|
if (i.name == "baiyin" && target.isDamaged() && get.recoverEffect(target))
|
|
|
|
|
val += 6;
|
|
|
|
|
else val -= get.value(i, target);
|
2023-11-23 06:53:49 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
return Math.max(eff, 0.15 * val);
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
lulitongxin: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
audio: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: function (card, player) {
|
|
|
|
|
if (get.mode() == "versus") return true;
|
|
|
|
|
return game.hasPlayer(function (current) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return current.isMajor();
|
|
|
|
|
});
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
mode: ["guozhan", "versus"],
|
|
|
|
|
filterTarget: true,
|
|
|
|
|
recastable: true,
|
|
|
|
|
changeTarget: function (player, targets) {
|
|
|
|
|
var target = targets[0];
|
|
|
|
|
game.filterPlayer(function (current) {
|
|
|
|
|
if (get.mode() == "versus") return current.isFriendOf(target);
|
|
|
|
|
return (
|
|
|
|
|
current.isMajor() == target.isMajor() &&
|
|
|
|
|
current != target &&
|
|
|
|
|
!current.hasSkill("diaohulishan")
|
|
|
|
|
);
|
|
|
|
|
}, targets);
|
|
|
|
|
},
|
|
|
|
|
content: function () {
|
|
|
|
|
if (get.mode() == "versus") {
|
|
|
|
|
if (target.isEnemyOf(player)) target.link(true);
|
|
|
|
|
else if (target.isLinked()) target.draw();
|
|
|
|
|
} else if (target.isLinked()) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
target.draw();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
target.link();
|
|
|
|
|
}
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
ai: {
|
|
|
|
|
order: 7.5,
|
|
|
|
|
value: 4,
|
|
|
|
|
useful: 2,
|
|
|
|
|
result: {
|
|
|
|
|
target: function (player, target) {
|
|
|
|
|
if (get.mode() == "versus") {
|
|
|
|
|
if (target.isFriendOf(player)) return target.isLinked() ? 1 : 0;
|
|
|
|
|
return target.isLinked() ? 0 : -1;
|
2020-08-11 13:05:00 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
return target.isLinked() ? 1 : -1;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
lianjunshengyan: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
audio: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: function (card, player) {
|
|
|
|
|
if (get.mode() == "guozhan") return !player.isUnseen();
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return true;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
mode: ["guozhan", "boss"],
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
if (get.mode() == "guozhan")
|
|
|
|
|
return target != player && target.identity != "unknown" && !target.isFriendOf(player);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return true;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
selectTarget: function () {
|
|
|
|
|
return get.mode() == "guozhan" ? 1 : -1;
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
changeTarget: function (player, targets) {
|
|
|
|
|
if (get.mode() == "guozhan") {
|
|
|
|
|
var target = targets[0];
|
2019-11-07 14:38:08 +00:00
|
|
|
|
targets.push(player);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (target.identity != "ye") {
|
|
|
|
|
game.filterPlayer(function (current) {
|
|
|
|
|
return (
|
|
|
|
|
target != current &&
|
|
|
|
|
target.isFriendOf(current) &&
|
|
|
|
|
!current.hasSkill("diaohulishan")
|
|
|
|
|
);
|
|
|
|
|
}, targets);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} /*
|
2019-11-07 14:38:08 +00:00
|
|
|
|
contentBefore:function(){
|
|
|
|
|
if(get.mode()=='guozhan'){
|
|
|
|
|
var evt=event.getParent();
|
2023-12-29 15:32:33 +00:00
|
|
|
|
if(evt&&evt.targets&&evt.targets.includes(player)){
|
2019-11-07 14:38:08 +00:00
|
|
|
|
evt.fixedSeat=true;
|
|
|
|
|
evt.targets.sortBySeat();
|
|
|
|
|
evt.targets.remove(player);
|
|
|
|
|
evt.targets.push(player);
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},*/,
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
if (get.mode() != "guozhan") {
|
|
|
|
|
if (player == target) target.draw(game.filterPlayer().length);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
else target.chooseDrawRecover(true);
|
|
|
|
|
event.finish();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else {
|
|
|
|
|
if (target == player) {
|
|
|
|
|
var num = targets.length - 1;
|
|
|
|
|
event.num = num;
|
|
|
|
|
var damaged = target.maxHp - target.hp;
|
|
|
|
|
if (damaged == 0) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
target.draw(num);
|
|
|
|
|
event.finish();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else {
|
|
|
|
|
var list = [];
|
|
|
|
|
for (var i = Math.min(num, damaged); i >= 0; i--) {
|
|
|
|
|
list.push("摸" + (num - i) + "回" + i);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
target.chooseControl(list).set("prompt", "请分配自己的摸牌数和回复量").ai =
|
|
|
|
|
function () {
|
|
|
|
|
return 0;
|
|
|
|
|
};
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
target.draw();
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
"step 1";
|
|
|
|
|
if (target != player) target.link(false);
|
|
|
|
|
else if (typeof result.control == "string") {
|
|
|
|
|
var index = result.control.indexOf("回");
|
|
|
|
|
var draw = parseInt(result.control.slice(1, index));
|
|
|
|
|
var recover = parseInt(result.control.slice(index + 1));
|
|
|
|
|
if (draw) target.draw(draw);
|
|
|
|
|
if (recover) target.recover(recover);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
wuxie: function (target, card, player, viewer) {
|
|
|
|
|
if (get.mode() == "guozhan") {
|
|
|
|
|
if (!_status._aozhan) {
|
|
|
|
|
if (!player.isMajor()) {
|
|
|
|
|
if (!viewer.isMajor()) return 0;
|
2024-02-21 23:24:35 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-02-21 14:26:17 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
order: 6,
|
|
|
|
|
value: 4,
|
|
|
|
|
useful: 2,
|
|
|
|
|
result: {
|
|
|
|
|
target: function (player, target) {
|
|
|
|
|
if (player == target) return 2;
|
2020-08-11 13:05:00 +00:00
|
|
|
|
return 1;
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
chiling: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
audio: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: function () {
|
|
|
|
|
return game.hasPlayer(function (current) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return current.isUnseen();
|
|
|
|
|
});
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
mode: ["guozhan"],
|
2023-10-28 06:27:13 +00:00
|
|
|
|
//global:['g_chiling1','g_chiling2','g_chiling3'],
|
2024-04-15 18:36:20 +00:00
|
|
|
|
filterTarget: function (card, player, target) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return target.isUnseen();
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
selectTarget: -1,
|
|
|
|
|
chooseai: function (event, player) {
|
|
|
|
|
if (player.hasSkillTag("mingzhi_yes")) return "选项一";
|
|
|
|
|
if (_status.event.controls.includes("选项三")) {
|
|
|
|
|
if (player.hasSkillTag("mingzhi_no")) return "选项三";
|
|
|
|
|
return Math.random() < 0.5 ? "选项一" : "选项三";
|
|
|
|
|
} else {
|
|
|
|
|
if (_status.event.getParent().nomingzhi) {
|
|
|
|
|
if (_status.event.controls.includes("选项二")) return "选项二";
|
|
|
|
|
return "选项一";
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (player.hasSkillTag("maixie_hp") || player.hp <= 2) return "选项一";
|
|
|
|
|
return Math.random() < 0.5 ? "选项一" : "选项二";
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
var choiceList = ["明置一张武将牌,然后摸一张牌", "失去1点体力"];
|
|
|
|
|
event.nomingzhi = target.hasSkillTag("nomingzhi", false, null, true);
|
|
|
|
|
if (event.nomingzhi) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
choiceList.shift();
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (target.countCards("he", { type: "equip" })) {
|
|
|
|
|
choiceList.push("弃置一张装备牌");
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
target
|
|
|
|
|
.chooseControl(lib.card.chiling.chooseai)
|
|
|
|
|
.set("prompt", "敕令")
|
|
|
|
|
.set("choiceList", choiceList);
|
|
|
|
|
"step 1";
|
|
|
|
|
var index = result.index;
|
|
|
|
|
if (event.nomingzhi) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
index++;
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (index == 0) {
|
|
|
|
|
target
|
|
|
|
|
.chooseControl("主将", "副将", function () {
|
|
|
|
|
return Math.floor(Math.random() * 2);
|
|
|
|
|
})
|
|
|
|
|
.set("prompt", "选择要明置的武将牌");
|
|
|
|
|
} else if (index == 1) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
target.loseHp();
|
|
|
|
|
event.finish();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else {
|
|
|
|
|
target.chooseToDiscard("he", { type: "equip" }, true);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
event.finish();
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
"step 2";
|
|
|
|
|
if (result.index == 0) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
target.showCharacter(0);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
target.showCharacter(1);
|
|
|
|
|
}
|
|
|
|
|
target.draw();
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
destroy: function (card, targetPosition, player, event) {
|
|
|
|
|
if (
|
|
|
|
|
(event.name != "lose" && event.name != "cardsDiscard") ||
|
|
|
|
|
targetPosition != "discardPile"
|
|
|
|
|
)
|
|
|
|
|
return false;
|
|
|
|
|
var evt = event.getParent().relatedEvent;
|
|
|
|
|
if (evt && evt.name == "useCard") return false;
|
2023-10-28 06:27:13 +00:00
|
|
|
|
return true;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
onDestroy: function () {
|
|
|
|
|
var currentPhase = _status.currentPhase;
|
|
|
|
|
if (currentPhase) {
|
|
|
|
|
_status.chiling = true;
|
|
|
|
|
currentPhase.addTempSkill("g_chiling3");
|
2023-10-28 06:27:13 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (!lib.inpile.includes("zhaoshu")) {
|
|
|
|
|
lib.inpile.push("zhaoshu");
|
|
|
|
|
var card = game.createCard2("zhaoshu", "club", 3);
|
|
|
|
|
game.log(card, "被置于了牌堆底");
|
2023-10-28 06:27:13 +00:00
|
|
|
|
ui.cardPile.appendChild(card);
|
|
|
|
|
game.updateRoundNumber();
|
|
|
|
|
}
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
ai: {
|
|
|
|
|
order: 6,
|
|
|
|
|
result: {
|
|
|
|
|
target: -1,
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
tag: {
|
|
|
|
|
multitarget: 1,
|
|
|
|
|
multineg: 1,
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
diaohulishan: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
audio: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
global: "g_diaohulishan",
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return target != player;
|
|
|
|
|
},
|
|
|
|
|
selectTarget: [1, 2],
|
|
|
|
|
content: function () {
|
|
|
|
|
target.addTempSkill("diaohulishan");
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: function (item, player) {
|
|
|
|
|
if (!player) player = get.player();
|
|
|
|
|
if (
|
|
|
|
|
player.hasCard(function (card) {
|
|
|
|
|
return [
|
|
|
|
|
"gz_haolingtianxia",
|
|
|
|
|
"gz_guguoanbang",
|
|
|
|
|
"gz_kefuzhongyuan",
|
|
|
|
|
"wuzhong",
|
|
|
|
|
"yuanjiao",
|
|
|
|
|
"lianjunshengyan",
|
|
|
|
|
"lulitongxin",
|
|
|
|
|
"yiyi",
|
|
|
|
|
].includes(get.name(card));
|
|
|
|
|
}, "hs")
|
|
|
|
|
)
|
|
|
|
|
return 3.5;
|
|
|
|
|
if (
|
|
|
|
|
player.hasCard(function (card) {
|
|
|
|
|
return get.name(card) == "taoyuan";
|
|
|
|
|
}, "hs")
|
|
|
|
|
)
|
|
|
|
|
return get.order({ name: "taoyuan" }, player) - 1;
|
2024-02-22 08:27:06 +00:00
|
|
|
|
return 9.5;
|
2024-02-22 10:15:24 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
value: 4,
|
|
|
|
|
useful: [2, 1],
|
|
|
|
|
wuxie: function () {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return 0;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
result: {
|
|
|
|
|
player: function (player, target) {
|
|
|
|
|
var att = get.attitude(player, target);
|
|
|
|
|
if (target.hp == 1 && att < 0) return 0;
|
|
|
|
|
if (
|
|
|
|
|
game.hasPlayer(function (current) {
|
|
|
|
|
return get.attitude(player, current) < att;
|
|
|
|
|
})
|
|
|
|
|
) {
|
|
|
|
|
var num = 1;
|
|
|
|
|
if (target == player.next || target == player.previous) {
|
|
|
|
|
num += 0.5;
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
|
|
|
|
return num;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
huxinjing: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "equip",
|
|
|
|
|
subtype: "equip2",
|
2024-04-28 08:21:58 +00:00
|
|
|
|
cardcolor: "club",
|
2024-04-15 18:36:20 +00:00
|
|
|
|
skills: ["huxinjing"],
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
if (get.mode() == "guozhan" && player != target) return false;
|
|
|
|
|
return target.canEquip(card, true);
|
|
|
|
|
},
|
|
|
|
|
selectTarget: function () {
|
|
|
|
|
return get.mode() == "guozhan" ? -1 : 1;
|
|
|
|
|
},
|
|
|
|
|
toself: false,
|
|
|
|
|
ai: {
|
|
|
|
|
basic: {
|
|
|
|
|
equipValue: 6,
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
huoshaolianying: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
audio: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
if (get.mode() == "guozhan") {
|
|
|
|
|
var next = player.getNext();
|
|
|
|
|
if (!next) return false;
|
|
|
|
|
return target == next || target.inline(next);
|
|
|
|
|
}
|
|
|
|
|
if (player == target) return false;
|
|
|
|
|
if (
|
|
|
|
|
game.hasPlayer(function (current) {
|
|
|
|
|
return current.isLinked() && current != player;
|
|
|
|
|
})
|
|
|
|
|
) {
|
|
|
|
|
if (!target.isLinked()) return false;
|
|
|
|
|
var distance = get.distance(player, target, "absolute");
|
|
|
|
|
return !game.hasPlayer(function (current) {
|
|
|
|
|
if (target != current && current != player && current.isLinked()) {
|
|
|
|
|
var dist = get.distance(player, current, "absolute");
|
|
|
|
|
if (dist < distance) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return true;
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (
|
|
|
|
|
dist == distance &&
|
|
|
|
|
parseInt(current.dataset.position) < parseInt(target.dataset.position)
|
|
|
|
|
) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else {
|
|
|
|
|
var dist = get.distance(player, target);
|
|
|
|
|
return !game.hasPlayer(function (current) {
|
|
|
|
|
return current != player && get.distance(player, current) < dist;
|
2019-11-07 14:38:08 +00:00
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
enable: true,
|
|
|
|
|
selectTarget: -1,
|
|
|
|
|
modTarget: true,
|
|
|
|
|
content: function () {
|
|
|
|
|
target.damage("fire");
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 5,
|
|
|
|
|
value: 6,
|
|
|
|
|
tag: {
|
|
|
|
|
damage: 1,
|
|
|
|
|
natureDamage: 1,
|
|
|
|
|
fireDamage: 1,
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
result: {
|
|
|
|
|
target: function (player, target) {
|
|
|
|
|
if (target.hasSkillTag("nofire") || target.hasSkillTag("nodamage")) return 0;
|
|
|
|
|
if (target.hasSkill("xuying") && target.countCards("h") == 0) return 0;
|
|
|
|
|
if (!target.isLinked()) {
|
|
|
|
|
return get.damageEffect(target, player, target, "fire");
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
return game.countPlayer(function (current) {
|
|
|
|
|
if (current.isLinked()) {
|
|
|
|
|
return get.sgn(get.damageEffect(current, player, target, "fire"));
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
|
|
|
|
});
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
yuanjiao: {
|
|
|
|
|
audio: true,
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: function (card, player) {
|
|
|
|
|
if (get.mode() == "guozhan" && player.isUnseen()) return false;
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return true;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
if (get.mode() != "guozhan") return target.group != player.group;
|
|
|
|
|
if (target.identity == "unknown" || player.identity == "unknown") return false;
|
2022-08-18 14:57:28 +00:00
|
|
|
|
return player.isEnemyOf(target);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
content: function () {
|
|
|
|
|
target.draw(1, "nodelay");
|
2022-08-18 14:57:28 +00:00
|
|
|
|
player.draw(3);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
ai: {
|
|
|
|
|
wuxie: function (target, card, player, viewer) {
|
|
|
|
|
if (get.mode() == "guozhan") {
|
|
|
|
|
if (!_status._aozhan) {
|
|
|
|
|
if (!player.isMajor()) {
|
|
|
|
|
if (!viewer.isMajor()) return 0;
|
2024-02-21 23:24:35 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-02-21 14:26:17 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
basic: {
|
|
|
|
|
useful: 4,
|
|
|
|
|
value: 8,
|
|
|
|
|
order: 9,
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
result: {
|
|
|
|
|
target: 1,
|
|
|
|
|
player: 3,
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
zhibi: {
|
|
|
|
|
audio: true,
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
recastable: true,
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
if (player == target) return false;
|
|
|
|
|
return target.countCards("h") || target.isUnseen(2);
|
|
|
|
|
},
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
if (!player.storage.zhibi) {
|
|
|
|
|
player.storage.zhibi = [];
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
|
|
|
|
player.storage.zhibi.add(target);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
var controls = [];
|
|
|
|
|
if (target.countCards("h")) controls.push("手牌");
|
|
|
|
|
if (target.isUnseen(0)) controls.push("主将");
|
|
|
|
|
if (target.isUnseen(1)) controls.push("副将");
|
|
|
|
|
if (controls.length > 1) {
|
|
|
|
|
player.chooseControl(controls).set("ai", function () {
|
|
|
|
|
return 1;
|
|
|
|
|
});
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (controls.length == 0) event.finish();
|
|
|
|
|
"step 1";
|
2019-11-07 14:38:08 +00:00
|
|
|
|
var content;
|
2024-04-15 18:36:20 +00:00
|
|
|
|
var str = get.translation(target) + "的";
|
|
|
|
|
if (result.control) {
|
|
|
|
|
if (result.control == "手牌") {
|
|
|
|
|
content = [str + "手牌", target.getCards("h")];
|
|
|
|
|
game.log(player, "观看了", target, "的手牌");
|
|
|
|
|
} else if (result.control == "主将") {
|
|
|
|
|
content = [str + "主将", [[target.name1], "character"]];
|
|
|
|
|
game.log(player, "观看了", target, "的主将");
|
|
|
|
|
} else {
|
|
|
|
|
content = [str + "副将", [[target.name2], "character"]];
|
|
|
|
|
game.log(player, "观看了", target, "的副将");
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else if (target.countCards("h")) {
|
|
|
|
|
content = [str + "手牌", target.getCards("h")];
|
|
|
|
|
game.log(player, "观看了", target, "的手牌");
|
|
|
|
|
} else if (target.isUnseen(0)) {
|
|
|
|
|
content = [str + "主将", [[target.name1], "character"]];
|
|
|
|
|
game.log(player, "观看了", target, "的主将");
|
|
|
|
|
} else {
|
|
|
|
|
content = [str + "副将", [[target.name2], "character"]];
|
|
|
|
|
game.log(player, "观看了", target, "的副将");
|
|
|
|
|
}
|
|
|
|
|
player.chooseControl("ok").set("dialog", content);
|
|
|
|
|
},
|
|
|
|
|
mode: ["guozhan"],
|
|
|
|
|
ai: {
|
|
|
|
|
order: 9.5,
|
|
|
|
|
wuxie: function () {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return 0;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
result: {
|
|
|
|
|
player: function (player, target) {
|
|
|
|
|
if (player.countCards("h") <= player.hp) return 0;
|
|
|
|
|
if (player.storage.zhibi && player.storage.zhibi.includes(target)) return 0;
|
|
|
|
|
return target.isUnseen() ? 1 : 0;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
yiyi: {
|
|
|
|
|
audio: true,
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
if (get.mode() == "guozhan") {
|
2021-05-27 16:12:07 +00:00
|
|
|
|
return target.isFriendOf(player);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else if (get.is.versus()) {
|
|
|
|
|
return player.side == target.side;
|
|
|
|
|
} else {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
selectTarget: function () {
|
|
|
|
|
if (get.mode() == "guozhan") return -1;
|
|
|
|
|
return [1, 3];
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
content: function () {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
target.draw(2);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
target.chooseToDiscard(2, "he", true).ai = get.disvalue;
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
ai: {
|
2024-03-17 03:56:32 +00:00
|
|
|
|
wuxie: function () {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return 0;
|
|
|
|
|
},
|
2024-03-17 03:56:32 +00:00
|
|
|
|
basic: {
|
|
|
|
|
order: 9,
|
|
|
|
|
useful: 1.5,
|
2024-04-15 18:36:20 +00:00
|
|
|
|
value: 3,
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-03-17 03:56:32 +00:00
|
|
|
|
result: {
|
|
|
|
|
target(player, target) {
|
|
|
|
|
let i,
|
|
|
|
|
add = 0,
|
|
|
|
|
y = 1,
|
|
|
|
|
tars = 0;
|
|
|
|
|
if (!ui.selected.cards) y = 0;
|
|
|
|
|
if (ui.selected.targets) tars = 0.01 * ui.selected.targets.length;
|
|
|
|
|
else tars = 0;
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (target == player)
|
|
|
|
|
i = player.countCards("h", function (card) {
|
|
|
|
|
if (y > 0 && ui.selected.cards.includes(card)) return false;
|
|
|
|
|
if (!y && get.name(card) === "yiyi") {
|
|
|
|
|
y = -1;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
});
|
|
|
|
|
else i = target.countCards("he");
|
|
|
|
|
if (target.hasSkillTag("noh")) add++;
|
2024-03-17 03:56:32 +00:00
|
|
|
|
return add + Math.sqrt(i / 3.6 + tars) / 2;
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-03-17 03:56:32 +00:00
|
|
|
|
tag: {
|
|
|
|
|
draw: 2,
|
|
|
|
|
loseCard: 2,
|
|
|
|
|
discard: 2,
|
|
|
|
|
multitarget: true,
|
2024-04-15 18:36:20 +00:00
|
|
|
|
norepeat: 1,
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
wuliu: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "equip",
|
|
|
|
|
subtype: "equip1",
|
|
|
|
|
global: "g_wuliu_skill",
|
|
|
|
|
distance: { attackFrom: -1 },
|
|
|
|
|
ai: {
|
|
|
|
|
equipValue: function (card, player) {
|
|
|
|
|
if (player.identity == "unknown" || player.identity == "ye") return 2;
|
|
|
|
|
return (
|
|
|
|
|
2 +
|
|
|
|
|
game.countPlayer(function (current) {
|
|
|
|
|
return current.isFriendOf(player);
|
|
|
|
|
}) /
|
|
|
|
|
2
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
basic: {
|
|
|
|
|
equipValue: 3,
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
skills: ["wuliu_skill"],
|
|
|
|
|
mode: ["guozhan"],
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
sanjian: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "equip",
|
|
|
|
|
subtype: "equip1",
|
|
|
|
|
distance: { attackFrom: -2 },
|
|
|
|
|
ai: {
|
|
|
|
|
basic: {
|
|
|
|
|
equipValue: 4,
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
skills: ["sanjian_skill"],
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
jingfanma: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "equip",
|
|
|
|
|
subtype: "equip4",
|
|
|
|
|
distance: { globalFrom: -1 },
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
skill: {
|
|
|
|
|
zhaoshu_skill: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
charlotte: true,
|
|
|
|
|
enable: "phaseUse",
|
|
|
|
|
usable: 1,
|
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
var cards = player.getExpansions("zhaoshu_cards");
|
|
|
|
|
if (cards.length < 4) return false;
|
|
|
|
|
var list = [];
|
|
|
|
|
for (var i of cards) {
|
|
|
|
|
list.add(get.suit(i, false));
|
|
|
|
|
if (list.length >= 4) return true;
|
2021-08-05 11:46:11 +00:00
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
delay: false,
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
var cards = player.getExpansions("zhaoshu_cards");
|
2022-04-10 16:34:02 +00:00
|
|
|
|
player.loseToDiscardpile(cards);
|
2021-08-05 11:46:11 +00:00
|
|
|
|
game.delayx();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
"step 1";
|
|
|
|
|
var list = [
|
|
|
|
|
["spade", 12, "gz_haolingtianxia"],
|
|
|
|
|
["diamond", 1, "gz_kefuzhongyuan"],
|
|
|
|
|
["heart", 1, "gz_guguoanbang"],
|
|
|
|
|
["club", 12, "gz_wenheluanwu"],
|
2021-08-05 11:46:11 +00:00
|
|
|
|
];
|
2024-04-15 18:36:20 +00:00
|
|
|
|
for (var i = 0; i < list.length; i++) {
|
|
|
|
|
if (lib.inpile.includes(list[i][2])) list.splice(i--, 1);
|
2021-08-05 11:46:11 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (list.length) {
|
|
|
|
|
var card = list.randomGet();
|
2021-08-05 11:46:11 +00:00
|
|
|
|
lib.inpile.add(card[2]);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
player.gain(game.createCard2(card[2], card[0], card[1]), "gain2");
|
2021-08-05 11:46:11 +00:00
|
|
|
|
}
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
ai: {
|
|
|
|
|
order: 10,
|
|
|
|
|
result: { player: 1 },
|
2021-08-05 11:46:11 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
mark: true,
|
|
|
|
|
marktext: "诏",
|
|
|
|
|
intro: {
|
|
|
|
|
name: "诏书",
|
|
|
|
|
mark: function (dialog, content, player) {
|
|
|
|
|
var content = player.getExpansions("zhaoshu_skill");
|
2021-08-05 11:46:11 +00:00
|
|
|
|
dialog.add(content);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
dialog.addText(
|
|
|
|
|
"<br><li>与你势力相同的角色的出牌阶段限一次,其可以将一张手牌(小势力角色改为至多两张)置于【诏书】上,称为“应”。<br><li>出牌阶段限一次,若你的“应”中包含至少四种花色,则你可以发动“锦囊召唤”,将所有“应”置入弃牌堆,然后随机获得一张未加入游戏的势力锦囊牌。",
|
|
|
|
|
false
|
|
|
|
|
);
|
|
|
|
|
var cards = player.getExpansions("zhaoshu_cards");
|
|
|
|
|
if (cards.length) {
|
|
|
|
|
dialog.addAuto(cards);
|
2021-08-05 11:46:11 +00:00
|
|
|
|
}
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
content: "expansion",
|
|
|
|
|
markcount: function (content, player) {
|
|
|
|
|
return player.getExpansions("zhaoshu_cards").length;
|
2021-08-05 11:46:11 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
onremove: function (player, skill) {
|
|
|
|
|
var cards = player.getExpansions(skill).concat(player.getExpansions("zhaoshu_cards"));
|
|
|
|
|
if (cards.length) player.loseToDiscardpile(cards);
|
2022-04-10 16:34:02 +00:00
|
|
|
|
},
|
2021-08-05 11:46:11 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
zhaoshu_global: {
|
|
|
|
|
enable: "phaseUse",
|
|
|
|
|
usable: 1,
|
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
if (!player.countCards("h")) return false;
|
|
|
|
|
return game.hasPlayer(function (current) {
|
|
|
|
|
return current.hasSkill("zhaoshu_skill") && current.isFriendOf(player);
|
2021-08-05 11:46:11 +00:00
|
|
|
|
});
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
filterCard: true,
|
|
|
|
|
selectCard: function () {
|
|
|
|
|
if (_status.event.player.isNotMajor()) return [1, 2];
|
|
|
|
|
return [1, 1];
|
|
|
|
|
},
|
|
|
|
|
position: "h",
|
|
|
|
|
discard: false,
|
|
|
|
|
lose: false,
|
|
|
|
|
delay: false,
|
|
|
|
|
check: function (card) {
|
|
|
|
|
var player = _status.event.player,
|
|
|
|
|
cards = ui.selected.cards.concat(
|
|
|
|
|
game
|
|
|
|
|
.findPlayer(function (current) {
|
|
|
|
|
return current.hasSkill("zhaoshu_skill") && current.isFriendOf(player);
|
|
|
|
|
})
|
|
|
|
|
.getExpansions("zhaoshu_cards")
|
|
|
|
|
),
|
|
|
|
|
suit = get.suit(card, false);
|
|
|
|
|
for (var i of cards) {
|
|
|
|
|
if (get.suit(i) == suit) return 0;
|
|
|
|
|
}
|
|
|
|
|
return 5 + player.needsToDiscard() * 1.5 - get.value(card);
|
|
|
|
|
},
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return target.hasSkill("zhaoshu_skill") && target.isFriendOf(player);
|
|
|
|
|
},
|
|
|
|
|
selectTarget: function () {
|
|
|
|
|
if (
|
|
|
|
|
game.countPlayer(function (current) {
|
|
|
|
|
return (
|
|
|
|
|
current.hasSkill("zhaoshu_skill") && current.isFriendOf(_status.event.player)
|
|
|
|
|
);
|
|
|
|
|
}) == 1
|
|
|
|
|
)
|
|
|
|
|
return -1;
|
2021-08-05 11:46:11 +00:00
|
|
|
|
return 1;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
prompt: function () {
|
|
|
|
|
var player = _status.event.player;
|
|
|
|
|
return (
|
|
|
|
|
"将" +
|
|
|
|
|
(player.isNotMajor() ? "至多两" : "一") +
|
|
|
|
|
"张手牌置于" +
|
|
|
|
|
get.translation(
|
|
|
|
|
game.filterPlayer(function (current) {
|
|
|
|
|
return current.hasSkill("zhaoshu_skill") && current.isFriendOf(player);
|
|
|
|
|
})
|
|
|
|
|
) +
|
|
|
|
|
"的【诏书】上"
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
target.addToExpansion(cards, player, "give").gaintag.add("zhaoshu_cards");
|
|
|
|
|
"step 1";
|
|
|
|
|
target.markSkill("zhaoshu_skill");
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 1,
|
|
|
|
|
result: {
|
|
|
|
|
player: 1,
|
2021-08-05 11:46:11 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
liulongcanjia: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
mod: {
|
|
|
|
|
canBeReplaced: function (card, player) {
|
|
|
|
|
if (player.getEquips("liulongcanjia").includes(card)) return false;
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
minguangkai_cancel: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
trigger: { target: "useCardToTarget" },
|
|
|
|
|
forced: true,
|
|
|
|
|
check: function (event, player) {
|
|
|
|
|
return get.effect(event.target, event.card, event.player, player) < 0;
|
|
|
|
|
},
|
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
if (["huoshaolianying", "huogong"].includes(event.card.name)) return true;
|
|
|
|
|
if (event.card.name == "sha") return game.hasNature(event.card, "fire");
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return false;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
content: function () {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
trigger.getParent().targets.remove(player);
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
ai: {
|
|
|
|
|
effect: {
|
2024-05-11 07:28:14 +00:00
|
|
|
|
target_use(card, player, target, current) {
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (
|
|
|
|
|
["huoshaolianying", "huogong"].includes(card.name) ||
|
|
|
|
|
(card.name == "sha" && game.hasNature(card, "fire"))
|
|
|
|
|
) {
|
|
|
|
|
return "zeroplayertarget";
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
minguangkai_link: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
trigger: { player: "linkBefore" },
|
|
|
|
|
forced: true,
|
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
return player.isNotMajor() && !player.isLinked();
|
|
|
|
|
},
|
|
|
|
|
content: function () {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
trigger.cancel();
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
ai: {
|
|
|
|
|
effect: {
|
|
|
|
|
target: function (card, player, target, current) {
|
|
|
|
|
if (target.isMinor() && ["tiesuo", "lulitongxin"].includes(card.name)) {
|
|
|
|
|
return "zeroplayertarget";
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
dinglanyemingzhu_skill: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
inherit: "zhiheng",
|
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
return !player.hasSkill("gzzhiheng", true);
|
|
|
|
|
},
|
|
|
|
|
selectCard: function () {
|
|
|
|
|
var player = _status.event.player;
|
|
|
|
|
return [1, player.maxHp];
|
|
|
|
|
},
|
|
|
|
|
filterCard: function (card, player) {
|
|
|
|
|
var cards = player.getEquips("dinglanyemingzhu");
|
|
|
|
|
if (cards.length)
|
|
|
|
|
return cards.some((card2) => card2 != card && !ui.selected.cards.includes(card2));
|
2023-08-12 14:57:27 +00:00
|
|
|
|
return true;
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
prompt: "出牌阶段限一次,你可以弃置至多X张牌(X为你的体力上限),然后摸等量的牌",
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
g_dinglanyemingzhu_ai: {
|
|
|
|
|
ai: {
|
|
|
|
|
effect: {
|
2024-05-11 07:28:14 +00:00
|
|
|
|
player_use(card, player) {
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (player.hasSkill("jubao")) return;
|
|
|
|
|
if (
|
|
|
|
|
card.name == "dinglanyemingzhu" &&
|
|
|
|
|
game.hasPlayer(function (current) {
|
|
|
|
|
return current.hasSkill("jubao") && get.attitude(player, current) <= 0;
|
|
|
|
|
})
|
|
|
|
|
) {
|
|
|
|
|
return [0, 0, 0, 0];
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
g_feilongduofeng_ai: {
|
|
|
|
|
ai: {
|
|
|
|
|
effect: {
|
2024-05-11 07:28:14 +00:00
|
|
|
|
player_use(card, player) {
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (player.hasSkill("zhangwu")) return;
|
|
|
|
|
if (
|
|
|
|
|
card.name == "feilongduofeng" &&
|
|
|
|
|
game.hasPlayer(function (current) {
|
|
|
|
|
return current.hasSkill("zhangwu") && get.attitude(player, current) <= 0;
|
|
|
|
|
})
|
|
|
|
|
) {
|
|
|
|
|
return [0, 0, 0, 0];
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
g_taipingyaoshu_ai: {
|
|
|
|
|
ai: {
|
|
|
|
|
effect: {
|
2024-05-11 07:28:14 +00:00
|
|
|
|
player_use(card, player) {
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (player.hasSkill("wendao")) return;
|
|
|
|
|
if (
|
|
|
|
|
card.name == "taipingyaoshu" &&
|
|
|
|
|
game.hasPlayer(function (current) {
|
|
|
|
|
return current.hasSkill("wendao") && get.attitude(player, current) <= 0;
|
|
|
|
|
})
|
|
|
|
|
) {
|
|
|
|
|
return [0, 0, 0, 0];
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2023-12-27 07:53:07 +00:00
|
|
|
|
},
|
2024-05-11 07:28:14 +00:00
|
|
|
|
target_use(card, player, target) {
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (target._g_taipingyaoshu_temp) return;
|
|
|
|
|
if (
|
|
|
|
|
get.subtype(card) === "equip2" &&
|
|
|
|
|
target.getEquip("taipingyaoshu") &&
|
|
|
|
|
!target.countEmptySlot(2)
|
|
|
|
|
) {
|
|
|
|
|
target._g_taipingyaoshu_temp = true;
|
|
|
|
|
let lose = get.effect(target, { name: "losehp" }, target, target),
|
|
|
|
|
draw = 2 * get.effect(target, { name: "draw" }, target, target);
|
2023-12-27 07:54:50 +00:00
|
|
|
|
delete target._g_taipingyaoshu_temp;
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (
|
|
|
|
|
lose < 0 &&
|
|
|
|
|
target.hp <= 1 &&
|
|
|
|
|
!target.hasCard((i) => {
|
|
|
|
|
return (
|
|
|
|
|
get.name(i) === "tao" &&
|
|
|
|
|
lib.filter.cardEnabled(i, target, "forceEnable")
|
|
|
|
|
);
|
|
|
|
|
})
|
|
|
|
|
)
|
|
|
|
|
draw = 0;
|
|
|
|
|
return [1, (lose + draw) / get.attitude(target, target)];
|
2023-12-27 07:53:07 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
feilongduofeng: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
trigger: { player: "useCardToPlayered" },
|
|
|
|
|
logTarget: "target",
|
|
|
|
|
check: function (event, player) {
|
|
|
|
|
return get.attitude(player, event.target) <= 0;
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
return event.card.name == "sha" && event.target.countCards("he");
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
content: function () {
|
|
|
|
|
trigger.target.chooseToDiscard("he", true);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
feilongduofeng2: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
trigger: { source: "dieAfter" },
|
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
if (event.reason && event.reason.card && event.reason.card.name == "sha") {
|
|
|
|
|
return (
|
|
|
|
|
event.player.isDead() && lib.group.includes(player.identity) && player.isMinor()
|
|
|
|
|
);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
logTarget: "player",
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
var list = [];
|
|
|
|
|
for (var i = 0; i < _status.characterlist.length; i++) {
|
|
|
|
|
var info = lib.character[_status.characterlist[i]];
|
|
|
|
|
if (info[4] && info[4].includes("jun")) continue;
|
|
|
|
|
if (info[1] == player.identity) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
list.push(_status.characterlist[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
event.identity = event.player.identity;
|
|
|
|
|
if (trigger.player == game.me && !_status.auto) {
|
|
|
|
|
event.dialog = ui.create.dialog("是否选择一名角色重新加入游戏?", [
|
|
|
|
|
list,
|
|
|
|
|
"character",
|
|
|
|
|
]);
|
|
|
|
|
event.filterButton = function () {
|
|
|
|
|
return true;
|
|
|
|
|
};
|
|
|
|
|
event.player = game.me;
|
|
|
|
|
event.custom.replace.confirm = function () {
|
|
|
|
|
if (!ui.selected.buttons.length) {
|
|
|
|
|
event.directresult = "refuse";
|
|
|
|
|
} else {
|
|
|
|
|
event.directresult = ui.selected.buttons[0].link;
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
|
|
|
|
event.dialog.close();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (ui.confirm) ui.confirm.close();
|
2019-11-07 14:38:08 +00:00
|
|
|
|
delete event.player;
|
|
|
|
|
game.resume();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
};
|
|
|
|
|
event.switchToAuto = function () {
|
|
|
|
|
event.directresult = list.randomGet();
|
2019-11-07 14:38:08 +00:00
|
|
|
|
event.dialog.close();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (ui.confirm) ui.confirm.close();
|
2019-11-07 14:38:08 +00:00
|
|
|
|
delete event.player;
|
|
|
|
|
};
|
|
|
|
|
game.check();
|
|
|
|
|
game.pause();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else if (trigger.player.isOnline()) {
|
|
|
|
|
trigger.player.send(
|
|
|
|
|
function (player, list) {
|
|
|
|
|
if (_status.auto) {
|
|
|
|
|
_status.event._result = list.randomGet();
|
|
|
|
|
} else {
|
|
|
|
|
var next = game.createEvent("replacePlayer");
|
|
|
|
|
next.source = player;
|
|
|
|
|
next.list = list;
|
|
|
|
|
next.setContent(function () {
|
|
|
|
|
event.dialog = ui.create.dialog("是否选择一名角色重新加入游戏?", [
|
|
|
|
|
event.list,
|
|
|
|
|
"character",
|
|
|
|
|
]);
|
|
|
|
|
event.filterButton = function () {
|
|
|
|
|
return true;
|
|
|
|
|
};
|
|
|
|
|
event.player = event.source;
|
|
|
|
|
event.custom.replace.confirm = function () {
|
|
|
|
|
if (!ui.selected.buttons.length) {
|
|
|
|
|
event.result = "refuse";
|
|
|
|
|
} else {
|
|
|
|
|
event.result = ui.selected.buttons[0].link;
|
|
|
|
|
}
|
|
|
|
|
event.dialog.close();
|
|
|
|
|
if (ui.confirm) ui.confirm.close();
|
|
|
|
|
delete event.player;
|
|
|
|
|
game.resume();
|
|
|
|
|
game.uncheck();
|
|
|
|
|
};
|
|
|
|
|
event.switchToAuto = function () {
|
|
|
|
|
event.result = list.randomGet();
|
|
|
|
|
event.dialog.close();
|
|
|
|
|
if (ui.confirm) ui.confirm.close();
|
|
|
|
|
delete event.player;
|
|
|
|
|
game.uncheck();
|
|
|
|
|
};
|
|
|
|
|
game.check();
|
|
|
|
|
game.pause();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
game.resume();
|
|
|
|
|
},
|
|
|
|
|
trigger.player,
|
|
|
|
|
list
|
|
|
|
|
);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
trigger.player.wait();
|
|
|
|
|
game.pause();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else {
|
|
|
|
|
event.directresult = list.randomGet();
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
event.list = list;
|
|
|
|
|
"step 1";
|
2019-11-07 14:38:08 +00:00
|
|
|
|
game.uncheck();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (!event.directresult) {
|
|
|
|
|
if (event.resultOL) {
|
|
|
|
|
event.directresult = event.resultOL[trigger.player.playerid];
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (!event.directresult || event.directresult == "ai") {
|
|
|
|
|
event.directresult = event.list.randomGet();
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
if (event.directresult == "refuse") {
|
|
|
|
|
game.log(trigger.player, "拒绝重新加入游戏");
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return;
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
game.log(trigger.player, "重新加入游戏");
|
|
|
|
|
var name = event.directresult;
|
|
|
|
|
game.log(trigger.player, "将主将替换为", "#b" + name);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
_status.characterlist.remove(name);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
game.broadcastAll(
|
|
|
|
|
function (source, name, identity) {
|
|
|
|
|
source.revive(2, false);
|
|
|
|
|
source.identity = identity;
|
|
|
|
|
source._group = identity;
|
|
|
|
|
source.setIdentity();
|
|
|
|
|
if (source == game.me) {
|
|
|
|
|
ui.arena.classList.remove("selecting");
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
trigger.player,
|
|
|
|
|
name,
|
|
|
|
|
event.identity
|
|
|
|
|
);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
trigger.player.draw();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
trigger.player.reinit(trigger.player.name1, name, false);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
trigger.player.removeCharacter(1);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
trigger.getParent("damage").untrigger(false, trigger.player);
|
|
|
|
|
game.addVideo("setIdentity", trigger.player, event.identity);
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
feilongduofeng3: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
trigger: { source: "dying" },
|
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
var evt = event.getParent("damage");
|
|
|
|
|
return (
|
|
|
|
|
evt &&
|
|
|
|
|
evt.card &&
|
|
|
|
|
evt.card.name == "sha" &&
|
|
|
|
|
event.player.countGainableCards(player, "h") > 0
|
|
|
|
|
);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2019-11-22 05:15:05 +00:00
|
|
|
|
//priority:7,
|
2024-04-15 18:36:20 +00:00
|
|
|
|
logTarget: "player",
|
|
|
|
|
prompt2: "获得该角色的一张手牌",
|
|
|
|
|
check: function (event, player) {
|
|
|
|
|
return get.attitude(player, event.player) < 0;
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
content: function () {
|
|
|
|
|
player.gainPlayerCard(trigger.player, "h", true);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
taipingyaoshu: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
mod: {
|
|
|
|
|
maxHandcard: function (player, num) {
|
|
|
|
|
if (get.mode() == "guozhan") {
|
2024-06-03 23:36:30 +00:00
|
|
|
|
// if (player.hasSkill("hongfa")) {
|
|
|
|
|
// 村规
|
2024-06-04 15:01:28 +00:00
|
|
|
|
if (player.hasSkill("hongfa", null, null, false)) {
|
2024-04-15 18:36:20 +00:00
|
|
|
|
num += player.getExpansions("huangjintianbingfu").length;
|
2021-05-18 07:57:26 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
return (
|
|
|
|
|
num +
|
|
|
|
|
game.countPlayer(function (current) {
|
|
|
|
|
return current.isFriendOf(player);
|
|
|
|
|
})
|
|
|
|
|
);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
return num + game.countGroup() - 1;
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
trigger: { player: "damageBegin4" },
|
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
if (player.hasSkillTag("unequip2")) return false;
|
|
|
|
|
if (
|
|
|
|
|
event.source &&
|
|
|
|
|
event.source.hasSkillTag("unequip", false, {
|
|
|
|
|
name: event.card ? event.card.name : null,
|
|
|
|
|
target: player,
|
|
|
|
|
card: event.card,
|
|
|
|
|
})
|
|
|
|
|
)
|
|
|
|
|
return false;
|
|
|
|
|
if (event.nature) return true;
|
|
|
|
|
},
|
|
|
|
|
forced: true,
|
|
|
|
|
content: function () {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
trigger.cancel();
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
ai: {
|
|
|
|
|
nofire: true,
|
|
|
|
|
nothunder: true,
|
|
|
|
|
effect: {
|
|
|
|
|
target: function (card, player, target, current) {
|
|
|
|
|
if (target.hasSkillTag("unequip2")) return;
|
|
|
|
|
if (
|
|
|
|
|
player.hasSkillTag("unequip", false, {
|
|
|
|
|
name: card ? card.name : null,
|
|
|
|
|
target: target,
|
|
|
|
|
card: card,
|
|
|
|
|
}) ||
|
|
|
|
|
player.hasSkillTag("unequip_ai", false, {
|
|
|
|
|
name: card ? card.name : null,
|
|
|
|
|
target: target,
|
|
|
|
|
card: card,
|
|
|
|
|
})
|
|
|
|
|
)
|
|
|
|
|
return;
|
|
|
|
|
if (get.tag(card, "natureDamage")) return "zeroplayertarget";
|
|
|
|
|
if (card.name == "tiesuo") {
|
|
|
|
|
return [0, 0];
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
g_taipingyaoshu: {},
|
|
|
|
|
yuxi_skill: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
trigger: { player: "phaseDrawBegin2" },
|
|
|
|
|
forced: true,
|
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
return !player.isUnseen() && !event.numFixed;
|
|
|
|
|
},
|
|
|
|
|
content: function () {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
trigger.num++;
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
ai: {
|
|
|
|
|
threaten: 1.3,
|
|
|
|
|
forceMajor: true,
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
group: "yuxi_skill2",
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
yuxi_skill2: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
trigger: { player: "phaseUseBegin" },
|
|
|
|
|
forced: true,
|
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
if (player.isUnseen()) return false;
|
|
|
|
|
return game.hasPlayer(function (current) {
|
|
|
|
|
return player.canUse("zhibi", current);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
});
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
content: function () {
|
|
|
|
|
player.chooseUseTarget("玉玺:选择知己知彼的目标", { name: "zhibi" });
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
xietianzi: {
|
|
|
|
|
forced: true,
|
|
|
|
|
popup: false,
|
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
return player.countCards("h") > 0;
|
|
|
|
|
},
|
|
|
|
|
trigger: {
|
|
|
|
|
player: "phaseDiscardAfter",
|
|
|
|
|
},
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
player.removeSkill("xietianzi");
|
|
|
|
|
player
|
|
|
|
|
.chooseToDiscard("h", "是否弃置一张手牌并获得一个额外回合?")
|
|
|
|
|
.set("ai", function (card) {
|
|
|
|
|
return 10 - get.value(card);
|
|
|
|
|
});
|
|
|
|
|
"step 1";
|
|
|
|
|
if (result.bool) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
player.insertPhase();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
g_chiling3: {
|
|
|
|
|
mode: ["guozhan"],
|
|
|
|
|
trigger: { player: "phaseEnd" },
|
|
|
|
|
forced: true,
|
|
|
|
|
popup: false,
|
|
|
|
|
filter: function () {
|
|
|
|
|
return _status.chiling == true;
|
|
|
|
|
},
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
_status.chiling = false;
|
|
|
|
|
var targets = game.filterPlayer(function (target) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
return target.isUnseen();
|
|
|
|
|
});
|
|
|
|
|
targets.sort(lib.sort.seat);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
event.targets = targets;
|
|
|
|
|
"step 1";
|
|
|
|
|
if (event.targets.length) {
|
|
|
|
|
var target = event.targets.shift();
|
|
|
|
|
event.current = target;
|
|
|
|
|
var choiceList = ["明置一张武将牌,然后摸一张牌", "失去1点体力"];
|
|
|
|
|
if (target.countCards("he", { type: "equip" })) {
|
|
|
|
|
choiceList.push("弃置一张装备牌");
|
2019-11-07 14:38:08 +00:00
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
target
|
|
|
|
|
.chooseControl(lib.card.chiling.chooseai)
|
|
|
|
|
.set("prompt", "敕令")
|
|
|
|
|
.set("choiceList", choiceList);
|
|
|
|
|
} else {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
event.finish();
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
"step 2";
|
|
|
|
|
var target = event.current;
|
|
|
|
|
if (result.control == "选项一") {
|
|
|
|
|
target
|
|
|
|
|
.chooseControl("主将", "副将", function () {
|
|
|
|
|
return Math.floor(Math.random() * 2);
|
|
|
|
|
})
|
|
|
|
|
.set("prompt", "选择要明置的武将牌");
|
|
|
|
|
} else if (result.control == "选项二") {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
target.loseHp();
|
|
|
|
|
event.goto(1);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else {
|
|
|
|
|
target.chooseToDiscard("he", { type: "equip" }, true);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
event.goto(1);
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
"step 3";
|
|
|
|
|
var target = event.current;
|
|
|
|
|
if (result.index == 0) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
target.showCharacter(0);
|
2024-04-15 18:36:20 +00:00
|
|
|
|
} else {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
target.showCharacter(1);
|
|
|
|
|
}
|
|
|
|
|
target.draw();
|
|
|
|
|
event.goto(1);
|
2023-08-25 07:31:37 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},
|
|
|
|
|
g_diaohulishan: {},
|
|
|
|
|
diaohulishan: {
|
|
|
|
|
charlotte: true,
|
|
|
|
|
group: "undist",
|
|
|
|
|
init: function (player) {
|
|
|
|
|
if (player.isIn()) {
|
|
|
|
|
game.broadcastAll(function (player) {
|
|
|
|
|
player.classList.add("out");
|
|
|
|
|
}, player);
|
|
|
|
|
game.log(player, "移出了游戏");
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
onremove: function (player) {
|
|
|
|
|
if (player.isOut()) {
|
|
|
|
|
game.broadcastAll(function (player) {
|
|
|
|
|
player.classList.remove("out");
|
|
|
|
|
}, player);
|
|
|
|
|
game.log(player, "移回了游戏");
|
2023-08-25 07:31:37 +00:00
|
|
|
|
}
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
huxinjing: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
trigger: { player: "damageBegin4" },
|
2019-11-07 14:38:08 +00:00
|
|
|
|
// forced:true,
|
2024-04-15 18:36:20 +00:00
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
if (player.hasSkillTag("unequip2")) return false;
|
|
|
|
|
if (
|
|
|
|
|
event.source &&
|
|
|
|
|
event.source.hasSkillTag("unequip", false, {
|
|
|
|
|
name: event.card ? event.card.name : null,
|
|
|
|
|
target: player,
|
|
|
|
|
card: event.card,
|
|
|
|
|
})
|
|
|
|
|
)
|
|
|
|
|
return false;
|
|
|
|
|
var cards = player.getEquips("huxinjing");
|
|
|
|
|
if (!cards.length) return false;
|
|
|
|
|
if (get.mode() != "guozhan" && event.num > 1) return true;
|
|
|
|
|
return event.num >= player.hp;
|
|
|
|
|
},
|
|
|
|
|
content: function () {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
trigger.cancel();
|
2024-04-15 18:36:20 +00:00
|
|
|
|
var e2 = player.getEquips("huxinjing");
|
|
|
|
|
if (e2.length) {
|
2019-11-07 14:38:08 +00:00
|
|
|
|
player.discard(e2);
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
player.removeSkill("huxinjing");
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
wuliu_skill: {
|
|
|
|
|
equipSkill: true,
|
2019-11-14 05:47:38 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
g_wuliu_skill: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
mod: {
|
|
|
|
|
attackRange: function (player, distance) {
|
|
|
|
|
return (
|
|
|
|
|
distance +
|
|
|
|
|
game.countPlayer(function (current) {
|
|
|
|
|
if (current == player || !current.isFriendOf(player)) return false;
|
|
|
|
|
if (current.hasSkill("wuliu_skill")) return true;
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
sanjian_skill: {
|
|
|
|
|
equipSkill: true,
|
|
|
|
|
audio: true,
|
|
|
|
|
trigger: { source: "damageSource" },
|
|
|
|
|
direct: true,
|
|
|
|
|
filter: function (event, player) {
|
|
|
|
|
if (event.player.isDead()) return false;
|
|
|
|
|
if (player.countCards("h") == 0) return false;
|
|
|
|
|
if (!event.card) return false;
|
|
|
|
|
if (event.card.name != "sha") return false;
|
|
|
|
|
if (!event.notLink()) return false;
|
|
|
|
|
return game.hasPlayer(function (current) {
|
|
|
|
|
return current != event.player && get.distance(event.player, current) <= 1;
|
2019-11-07 14:38:08 +00:00
|
|
|
|
});
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
var damaged = trigger.player;
|
|
|
|
|
player
|
|
|
|
|
.chooseCardTarget({
|
|
|
|
|
filterCard: lib.filter.cardDiscardable,
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
var damaged = _status.event.damaged;
|
|
|
|
|
return get.distance(damaged, target) <= 1 && target != damaged;
|
|
|
|
|
},
|
|
|
|
|
ai1: function (card) {
|
|
|
|
|
return 9 - get.value(card);
|
|
|
|
|
},
|
|
|
|
|
ai2: function (target) {
|
|
|
|
|
var player = _status.event.player;
|
|
|
|
|
return get.damageEffect(target, player, player);
|
|
|
|
|
},
|
|
|
|
|
prompt: get.prompt("sanjian"),
|
|
|
|
|
})
|
|
|
|
|
.set("damaged", damaged);
|
|
|
|
|
"step 1";
|
|
|
|
|
if (result.bool) {
|
|
|
|
|
player.logSkill("sanjian_skill", result.targets);
|
2019-11-07 14:38:08 +00:00
|
|
|
|
player.discard(result.cards);
|
|
|
|
|
result.targets[0].damage();
|
|
|
|
|
}
|
2024-04-15 18:36:20 +00:00
|
|
|
|
},
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
translate: {
|
|
|
|
|
liulongcanjia: "六龙骖驾",
|
|
|
|
|
liulongcanjia_info:
|
|
|
|
|
"锁定技。此牌占用1个进攻坐骑和1个防御坐骑槽位,且不可被替换。你计算与其他角色的距离-1,其他角色计算与你的距离+1。",
|
|
|
|
|
minguangkai: "明光铠",
|
|
|
|
|
minguangkai_cancel: "明光铠",
|
|
|
|
|
minguangkai_link: "明光铠",
|
|
|
|
|
minguangkai_info:
|
|
|
|
|
"锁定技。①当你成为【火烧连营】、【火攻】或火【杀】的目标时,取消之。②当你即将横置前,若你是小势力角色,取消之。",
|
|
|
|
|
dinglanyemingzhu: "定澜夜明珠",
|
|
|
|
|
dinglanyemingzhu_bg: "珠",
|
|
|
|
|
dinglanyemingzhu_info:
|
|
|
|
|
"锁定技。若你拥有〖制衡〗,则你取消〖制衡〗的弃置牌数限制,否则你视为拥有〖制衡〗。",
|
|
|
|
|
dinglanyemingzhu_skill: "制衡",
|
|
|
|
|
dinglanyemingzhu_skill_info:
|
|
|
|
|
"出牌阶段限一次。你可以弃置至多X张牌(X为你的体力上限),然后摸等量的牌。",
|
|
|
|
|
feilongduofeng: "飞龙夺凤",
|
|
|
|
|
feilongduofeng2: "飞龙夺凤",
|
|
|
|
|
feilongduofeng3: "飞龙夺凤",
|
|
|
|
|
feilongduofeng_info:
|
|
|
|
|
"①当你使用【杀】指定目标后,你可令目标角色弃置一张牌。②当你因使用【杀】而令其他角色进入濒死状态时,你可以获得其一张手牌。",
|
|
|
|
|
taipingyaoshu: "太平要术",
|
|
|
|
|
taipingyaoshu_info:
|
|
|
|
|
"锁定技。①当你即将受到属性伤害时,取消之。②你的手牌上限+X(X为场上势力数-1)。③当你失去装备区里的【太平要术】时,你摸两张牌,然后若你的体力值大于1,你失去1点体力。",
|
|
|
|
|
taipingyaoshu_info_guozhan:
|
|
|
|
|
"锁定技。①当你即将受到属性伤害时,取消之。②你的手牌上限+X(X为与你势力相同的角色数)。③当你失去装备区里的【太平要术】时,你摸两张牌,然后若你的体力值大于1,你失去1点体力。",
|
|
|
|
|
yuxi_skill: "玉玺",
|
|
|
|
|
yuxi_skill2: "玉玺",
|
|
|
|
|
yuxi: "玉玺",
|
|
|
|
|
yuxi_info:
|
|
|
|
|
"锁定技。若你有明置的武将牌,则:①你的势力视为唯一的大势力。②摸牌阶段开始时,你令额定摸牌数+1。③出牌阶段开始时,你视为使用【知己知彼】。",
|
|
|
|
|
xietianzi: "挟令",
|
|
|
|
|
xietianzi_info:
|
|
|
|
|
"出牌阶段,对自己使用。你结束出牌阶段。本回合的弃牌阶段结束时,你可以弃置一张手牌,获得一个额外的回合。",
|
|
|
|
|
xietianzi_info_guozhan:
|
|
|
|
|
"出牌阶段,对身为大势力角色的自己使用。你结束出牌阶段。本回合的弃牌阶段结束时,你可以弃置一张手牌,获得一个额外的回合。",
|
|
|
|
|
shuiyanqijunx: "水淹七军",
|
|
|
|
|
shuiyanqijunx_info:
|
|
|
|
|
"出牌阶段,对一名其他角色使用。目标角色选择一项:⒈弃置装备区里的所有牌(至少一张)。⒉受到你造成的1点雷电伤害。",
|
|
|
|
|
shuiyanqijunx_info_guozhan:
|
|
|
|
|
"出牌阶段,对一名装备区里有牌的其他角色使用。目标角色选择一项:⒈弃置装备区里的所有牌。⒉受到你造成的1点雷电伤害。",
|
|
|
|
|
lulitongxin: "勠力同心",
|
|
|
|
|
lulitongxin_info:
|
|
|
|
|
"出牌阶段,对所有大势力角色或所有小势力角色使用。若目标角色:未横置,则其横置;已横置,则其摸一张牌。",
|
|
|
|
|
lulitongxin_info_versus:
|
|
|
|
|
"出牌阶段,对所有己方角色或所有敌方角色使用。若目标角色:未横置,则其横置;已横置,则其摸一张牌。",
|
|
|
|
|
lianjunshengyan: "联军盛宴",
|
|
|
|
|
lianjunshengyan_info:
|
|
|
|
|
"出牌阶段,对你和你选择的除你的势力外的一个势力的所有角色使用。若目标角色:为你,你选择摸Y张牌并回复X-Y点体力(X为该势力的角色数,Y∈[0,X]);不为你,其摸一张牌,然后重置。",
|
|
|
|
|
lianjunshengyan_info_boss:
|
|
|
|
|
"出牌阶段,对场上所有角色使用。你摸X张牌(X为存活角色数),其他角色依次选择回复1点体力或摸一张牌。",
|
|
|
|
|
chiling: "敕令",
|
|
|
|
|
chiling_info:
|
|
|
|
|
"①出牌阶段,对所有没有势力的角色使用。目标角色选择一项:1、明置一张武将牌,然后摸一张牌;2、弃置一张装备牌;3、失去1点体力。②当【敕令】因判定或弃置而置入弃牌堆时,系统将之移出游戏并将【诏书】置于牌堆底,然后系统于当前回合结束后视为对所有没有势力的角色使用【敕令】。",
|
|
|
|
|
diaohulishan: "调虎离山",
|
|
|
|
|
diaohulishan_info: "出牌阶段,对至多两名其他角色使用。目标角色于此回合视为移出游戏。",
|
|
|
|
|
huoshaolianying: "火烧连营",
|
|
|
|
|
huoshaolianying_bg: "烧",
|
|
|
|
|
huoshaolianying_info_guozhan:
|
|
|
|
|
"出牌阶段,对你的下家及其队列中的所有角色使用。你对目标角色造成1点火属性伤害。",
|
|
|
|
|
huoshaolianying_info:
|
|
|
|
|
"出牌阶段,对距离最小的一名横置角色使用(若无横置角色,则改为对距离最小的所有角色使用),你对目标造成1点火属性伤害。",
|
|
|
|
|
yuanjiao: "远交近攻",
|
|
|
|
|
yuanjiao_info: "出牌阶段,对一名与你势力不同的其他角色使用。其摸一张牌,然后你摸三张牌。",
|
|
|
|
|
yuanjiao_info_guozhan:
|
|
|
|
|
"出牌阶段,对一名与你势力不同且已确定势力的其他角色使用。其摸一张牌,然后你摸三张牌。",
|
|
|
|
|
yuanjiao_bg: "交",
|
|
|
|
|
zhibi: "知己知彼",
|
|
|
|
|
zhibi_info:
|
|
|
|
|
"出牌阶段,对一名有手牌或有暗置武将牌的其他角色使用。你选择一项:⒈观看其手牌。⒉观看其的一张暗置武将牌。",
|
|
|
|
|
yiyi: "以逸待劳",
|
|
|
|
|
yiyi_info_guozhan: "出牌阶段,对所有己方角色使用。目标角色摸两张牌,然后弃置两张牌。",
|
|
|
|
|
yiyi_info_combat: "出牌阶段,对所有己方角色使用。目标角色摸两张牌,然后弃置两张牌。",
|
|
|
|
|
yiyi_info: "出牌阶段,对至多三名角色使用。目标角色摸两张牌,然后弃置两张牌。",
|
|
|
|
|
yiyi_bg: "逸",
|
|
|
|
|
wuliu: "吴六剑",
|
|
|
|
|
wuliu_info: "锁定技。与你势力相同的所有其他角色的攻击范围+1。",
|
|
|
|
|
sanjian: "三尖两刃刀",
|
|
|
|
|
sanjian_info:
|
|
|
|
|
"当你因执行【杀】而对A造成伤害后,你可以弃置一张牌并选择一名其他角色B(A至B的距离需为1)。你对B造成1点伤害。",
|
|
|
|
|
wuliu_skill: "吴六剑",
|
|
|
|
|
sanjian_skill: "三尖两刃刀",
|
|
|
|
|
jingfanma_bg: "-马",
|
|
|
|
|
jingfanma: "惊帆",
|
|
|
|
|
jingfanma_info: "锁定技,你计算与其他角色的距离-1。",
|
|
|
|
|
huxinjing_bg: "镜",
|
|
|
|
|
huxinjing: "护心镜",
|
|
|
|
|
huxinjing_info:
|
|
|
|
|
"此牌可对其他角色使用。当你受到伤害时,若伤害值大于1或大于等于你的体力值,则你可以将所有【护心镜】置入弃牌堆,然后防止此伤害。",
|
|
|
|
|
huxinjing_info_guozhan:
|
|
|
|
|
"当你受到伤害时,若伤害值大于等于你的体力值,则你可以将所有【护心镜】置入弃牌堆,然后防止此伤害。",
|
|
|
|
|
gz_haolingtianxia: "号令天下",
|
|
|
|
|
gz_haolingtianxia_info:
|
|
|
|
|
"出牌阶段,对一名体力值不为全场最少的角色使用。所有其他角色依次可以选择一项:①弃置一张牌(魏势力角色无需弃牌),视为对目标角色使用一张【杀】;②弃置目标角色的一张牌(魏势力角色改为获得其一张牌)。",
|
|
|
|
|
gz_kefuzhongyuan: "克复中原",
|
|
|
|
|
gz_kefuzhongyuan_info:
|
|
|
|
|
"出牌阶段,对任意名角色使用。目标角色选择一项:①视为使用一张【杀】(蜀势力角色以此法使用【杀】的伤害值基数+1);②摸一张牌(蜀势力角色改为摸两张牌)。",
|
|
|
|
|
gz_guguoanbang: "固国安邦",
|
|
|
|
|
gz_guguoanbang_info:
|
|
|
|
|
"出牌阶段,对你自己使用。你摸八张牌,然后弃置至少六张手牌。然后若你的势力为吴,则你可以将你以此法弃置的牌交给其他吴势力角色(每名角色至多获得两张牌)。",
|
|
|
|
|
gz_wenheluanwu: "文和乱武",
|
|
|
|
|
gz_wenheluanwu_info:
|
|
|
|
|
"出牌阶段,对所有角色使用。目标角色展示所有手牌,然后你选择一项:①令其弃置两张类型不同的手牌;②你弃置其一张手牌。然后若其为群势力角色且其没有手牌,则其将手牌摸至当前体力值(至多为5)。",
|
|
|
|
|
zhaoshu: "诏书",
|
|
|
|
|
zhaoshu_skill: "锦囊召唤",
|
|
|
|
|
zhaoshu_global: "诏书",
|
|
|
|
|
zhaoshu_info:
|
|
|
|
|
"<li>出牌阶段,对你自己使用。你将此牌置于目标的武将牌上。<br><li>与你势力相同的角色的出牌阶段限一次,其可以将一张手牌(小势力角色改为至多两张)置于【诏书】上,称为“应”。<br><li>出牌阶段限一次,若你的“应”中包含至少四种花色,则你可以发动“锦囊召唤”:将所有“应”置入弃牌堆,然后随机获得一张未加入游戏的势力锦囊牌。",
|
2019-11-07 14:38:08 +00:00
|
|
|
|
},
|
2024-04-15 18:36:20 +00:00
|
|
|
|
list: [
|
|
|
|
|
["heart", 9, "yuanjiao"],
|
|
|
|
|
["club", 3, "zhibi"],
|
|
|
|
|
["club", 4, "zhibi"],
|
|
|
|
|
["diamond", 4, "yiyi"],
|
|
|
|
|
["heart", 11, "yiyi"],
|
|
|
|
|
["diamond", 6, "wuliu"],
|
|
|
|
|
["diamond", 12, "sanjian"],
|
|
|
|
|
["heart", 3, "jingfanma"],
|
|
|
|
|
["spade", 4, "shunshou"],
|
|
|
|
|
["spade", 12, "guohe"],
|
|
|
|
|
["spade", 11, "wuxie"],
|
|
|
|
|
["spade", 3, "huoshaolianying", "fire"],
|
|
|
|
|
["club", 11, "huoshaolianying", "fire"],
|
|
|
|
|
["heart", 12, "huoshaolianying", "fire"],
|
|
|
|
|
["club", 2, "huxinjing"],
|
|
|
|
|
["heart", 2, "diaohulishan"],
|
|
|
|
|
["diamond", 10, "diaohulishan"],
|
|
|
|
|
["heart", 1, "lianjunshengyan"],
|
|
|
|
|
["club", 3, "chiling"],
|
|
|
|
|
["spade", 12, "lulitongxin"],
|
|
|
|
|
["club", 10, "lulitongxin"],
|
|
|
|
|
["club", 12, "shuiyanqijunx"],
|
|
|
|
|
["heart", 13, "shuiyanqijunx"],
|
|
|
|
|
["spade", 1, "xietianzi"],
|
|
|
|
|
["diamond", 1, "xietianzi"],
|
|
|
|
|
["diamond", 4, "xietianzi"],
|
|
|
|
|
["club", 1, "yuxi"],
|
2019-11-07 14:38:08 +00:00
|
|
|
|
],
|
2024-04-15 18:36:20 +00:00
|
|
|
|
};
|
2019-11-07 14:38:08 +00:00
|
|
|
|
});
|