族钟繇
This commit is contained in:
parent
705c979557
commit
c9fe123b90
|
@ -73,6 +73,8 @@ game.import("character", function () {
|
||||||
["clantanque", "clanshengmo", "clanzhongliu"],
|
["clantanque", "clanshengmo", "clanzhongliu"],
|
||||||
["clan:太原王氏"],
|
["clan:太原王氏"],
|
||||||
],
|
],
|
||||||
|
//笑点解析——群雄
|
||||||
|
clan_zhongyao: ["male", "qun", 3, ["clanchengqi", "clanjieli", "clanbaozu"], ["clan:颍川钟氏"]],
|
||||||
},
|
},
|
||||||
characterSort: {
|
characterSort: {
|
||||||
clan: {
|
clan: {
|
||||||
|
@ -87,11 +89,208 @@ game.import("character", function () {
|
||||||
"clan_wangguang",
|
"clan_wangguang",
|
||||||
"clan_wangmingshan",
|
"clan_wangmingshan",
|
||||||
],
|
],
|
||||||
clan_zhong: ["clan_zhongyan", "clan_zhonghui", "clan_zhongyu"],
|
clan_zhong: ["clan_zhongyan", "clan_zhonghui", "clan_zhongyu", "clan_zhongyao"],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
/** @type { importCharacterConfig['skill'] } */
|
/** @type { importCharacterConfig['skill'] } */
|
||||||
skill: {
|
skill: {
|
||||||
|
//族钟繇
|
||||||
|
clanchengqi: {
|
||||||
|
hiddenCard(player, name) {
|
||||||
|
if (get.type(name) != "basic" && get.type(name) != "trick") return false;
|
||||||
|
if (player.getStorage("clanchengqi_effect").includes(name)) return false;
|
||||||
|
return player.countCards("hs") > 1 && lib.inpile.includes(name);
|
||||||
|
},
|
||||||
|
audio: 2,
|
||||||
|
enable: "chooseToUse",
|
||||||
|
filter(event, player) {
|
||||||
|
if (player.countCards("hs") < 2) return false;
|
||||||
|
return get.inpileVCardList(info => {
|
||||||
|
const name = info[2];
|
||||||
|
if (get.type(name) != "basic" && get.type(name) != "trick") return false;
|
||||||
|
return !player.getStorage("clanchengqi_effect").includes(name);
|
||||||
|
}).some(card => event.filterCard({ name: card[2], nature: card[3] }, player, event));
|
||||||
|
},
|
||||||
|
chooseButton: {
|
||||||
|
dialog(event, player) {
|
||||||
|
const list = get.inpileVCardList(info => {
|
||||||
|
const name = info[2];
|
||||||
|
if (get.type(name) != "basic" && get.type(name) != "trick") return false;
|
||||||
|
return !player.getStorage("clanchengqi_effect").includes(name);
|
||||||
|
}).filter(card => event.filterCard({ name: card[2], nature: card[3] }, player, event));
|
||||||
|
return ui.create.dialog("承启", [list, "vcard"]);
|
||||||
|
},
|
||||||
|
check(button) {
|
||||||
|
if (get.event().getParent().type != "phase") return 1;
|
||||||
|
return get.event("player").getUseValue({ name: button.link[2], nature: button.link[3] });
|
||||||
|
},
|
||||||
|
backup(links, player) {
|
||||||
|
return {
|
||||||
|
audio: "clanchengqi",
|
||||||
|
filterCard: true,
|
||||||
|
complexCard: true,
|
||||||
|
selectCard: [2, Infinity],
|
||||||
|
popname: true,
|
||||||
|
viewAs: {
|
||||||
|
name: links[0][2],
|
||||||
|
nature: links[0][3],
|
||||||
|
},
|
||||||
|
filterOk() {
|
||||||
|
return (ui.selected.cards || []).reduce((sum, card) => {
|
||||||
|
return sum + get.cardNameLength(card);
|
||||||
|
}, 0) >= get.cardNameLength(lib.skill.clanchengqi_backup.viewAs.name);
|
||||||
|
},
|
||||||
|
check(card) {
|
||||||
|
const player = get.event("player");
|
||||||
|
const name = lib.skill.clanchengqi_backup.viewAs.name;
|
||||||
|
if (ui.selected.cards.length > 1 || card.name == name) return 0;
|
||||||
|
if (ui.selected.cards.length && game.hasPlayer(target => {
|
||||||
|
return get.effect(target, { name: "draw" }, player, player) > 0;
|
||||||
|
})) {
|
||||||
|
if (get.cardNameLength(name) <= get.cardNameLength(card) + get.cardNameLength(ui.selected.cards[0])) {
|
||||||
|
return 10 / (get.value(card) || 0.5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1 / (get.value(card) || 0.5);
|
||||||
|
},
|
||||||
|
position: "hs",
|
||||||
|
precontent() {
|
||||||
|
player.addTempSkill("clanchengqi_effect");
|
||||||
|
player.markAuto("clanchengqi_effect", [event.result.card.name]);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ai: {
|
||||||
|
order(item, player) {
|
||||||
|
if (player && get.event().type == "phase") {
|
||||||
|
let list = get.inpileVCardList(info => {
|
||||||
|
const name = info[2];
|
||||||
|
if (get.type(name) != "basic" && get.type(name) != "trick") return false;
|
||||||
|
return !player.getStorage("clanchengqi_effect").includes(name);
|
||||||
|
}).map(card => { return { name: card[2], nature: card[3] } }).filter(card => player.getUseValue(card, true, true) > 0);
|
||||||
|
if (!list.length) return 0;
|
||||||
|
list.sort((a, b) => (player.getUseValue(b, true, true) || 0) - (player.getUseValue(a, true, true) || 0));
|
||||||
|
return get.order(list[0], player) * 0.99;
|
||||||
|
}
|
||||||
|
return 0.001;
|
||||||
|
},
|
||||||
|
respondSha: true,
|
||||||
|
respondShan: true,
|
||||||
|
skillTagFilter(player, tag, arg) {
|
||||||
|
if (arg == "respond") return false;
|
||||||
|
const name = tag == "respondSha" ? "sha" : "shan";
|
||||||
|
return get.info("clanchengqi").hiddenCard(player, name);
|
||||||
|
},
|
||||||
|
result: { player: 1 },
|
||||||
|
},
|
||||||
|
subSkill: {
|
||||||
|
backup: { audio: "clanchengqi" },
|
||||||
|
effect: {
|
||||||
|
charlotte: true,
|
||||||
|
onremove: true,
|
||||||
|
trigger: { player: "useCard" },
|
||||||
|
filter(event, player) {
|
||||||
|
return event.skill == "clanchengqi_backup" && get.cardNameLength(event.card) == (event.cards || []).reduce((sum, card) => {
|
||||||
|
return sum + get.cardNameLength(card);
|
||||||
|
}, 0);
|
||||||
|
},
|
||||||
|
async cost(event, trigger, player) {
|
||||||
|
event.result = await player.chooseTarget("承启:是否令一名角色摸一张牌?").set('ai', target => {
|
||||||
|
const player = get.event("player");
|
||||||
|
return get.effect(target, { name: "draw" }, player, player);
|
||||||
|
}).forResult();
|
||||||
|
},
|
||||||
|
popup: false,
|
||||||
|
content() {
|
||||||
|
player.line(event.targets);
|
||||||
|
event.targets[0].draw();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
clanjieli: {
|
||||||
|
audio: 2,
|
||||||
|
trigger: { player: 'phaseJieshuBegin' },
|
||||||
|
filter(event, player) {
|
||||||
|
return game.hasPlayer(target => {
|
||||||
|
return target.countCards("h");
|
||||||
|
});
|
||||||
|
},
|
||||||
|
async cost(event, trigger, player) {
|
||||||
|
let num = 0;
|
||||||
|
if (player.getHistory("useCard").length) {
|
||||||
|
for (const history of player.getHistory("useCard")) {
|
||||||
|
if (num < get.cardNameLength(history.card)) {
|
||||||
|
num = get.cardNameLength(history.card);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const str = (num > 0 ? ("并观看牌堆顶" + get.cnNumber(num) + "张牌,然后你可以交换其中等量的牌") : "");
|
||||||
|
event.result = await player.chooseTarget(get.prompt("clanjieli"), "观看一名角色的牌名字数最多的手牌" + str, (card, player, target) => {
|
||||||
|
return target.countCards("h");
|
||||||
|
}).set('ai', target => {
|
||||||
|
const player = get.event("player");
|
||||||
|
return get.effect(target, { name: "draw" }, player, player);
|
||||||
|
}).forResult();
|
||||||
|
},
|
||||||
|
async content(event, trigger, player) {
|
||||||
|
const target = event.targets[0];
|
||||||
|
let num = 0;
|
||||||
|
if (player.getHistory("useCard").length) {
|
||||||
|
for (const history of player.getHistory("useCard")) {
|
||||||
|
if (num < get.cardNameLength(history.card)) {
|
||||||
|
num = get.cardNameLength(history.card);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let map = {};
|
||||||
|
for (const i of target.getCards("h")) {
|
||||||
|
if (!map[get.cardNameLength(i)]) {
|
||||||
|
map[get.cardNameLength(i)] = 0;
|
||||||
|
}
|
||||||
|
map[get.cardNameLength(i)]++;
|
||||||
|
}
|
||||||
|
const num2 = Object.keys(map).sort((a, b) => map[b] - map[a])[0];
|
||||||
|
const cards = target.getCards("he", card => get.cardNameLength(card) == num2);
|
||||||
|
if (num > 0 && cards.length >= num) {
|
||||||
|
const topCards = get.cards(num);
|
||||||
|
game.updateRoundNumber();
|
||||||
|
const result = await player.chooseToMove(
|
||||||
|
"诫厉:交换其中" + get.cnNumber(num) + "张牌"
|
||||||
|
).set("list", [
|
||||||
|
[get.translation(target) + "牌名字数最多的手牌", cards, "dcsushou_tag"],
|
||||||
|
["牌堆顶", topCards],
|
||||||
|
]).set("filterMove", (from, to) => {
|
||||||
|
return typeof to != "number";
|
||||||
|
}).set('num', num).set("filterOk", moved => {
|
||||||
|
return moved[1].every(card => get.owner(card));
|
||||||
|
}).set("processAI", list => {
|
||||||
|
const player = get.event("player"), target = get.event().getParent().targets[0];
|
||||||
|
const sgn = get.sgn(get.sgn(get.attitude(player, target)) - 0.5);
|
||||||
|
const cards1 = list[0][1].slice().sort((a, b) => get.value(a, "raw") * sgn - get.value(b, "raw") * sgn);
|
||||||
|
const cards2 = list[1][1].slice().sort((a, b) => get.value(b, "raw") * sgn - get.value(a, "raw") * sgn);
|
||||||
|
return [cards1.slice().addArray(cards2.slice(0, get.event("num"))), cards2.slice().addArray(cards1.slice(0, get.event("num")))];
|
||||||
|
}).forResult();
|
||||||
|
if (result.bool) {
|
||||||
|
const lose = result.moved[1].slice();
|
||||||
|
const gain = result.moved[0].slice().filter(i => !get.owner(i));
|
||||||
|
if (lose.length) await target.lose(lose, ui.special);
|
||||||
|
for (let i = lose.length - 1; i--; i >= 0) {
|
||||||
|
ui.cardPile.insertBefore(lose[i], ui.cardPile.firstChild);
|
||||||
|
}
|
||||||
|
game.updateRoundNumber();
|
||||||
|
if (gain.length) await target.gain(gain, "draw");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const topCards = get.cards(num, true);
|
||||||
|
game.updateRoundNumber();
|
||||||
|
const content = [get.translation(target) + "牌名字数最多的手牌", cards, "牌堆顶", topCards];
|
||||||
|
await player.chooseControl("ok").set("dialog", content);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
//族王明山
|
//族王明山
|
||||||
clantanque: {
|
clantanque: {
|
||||||
audio: 2,
|
audio: 2,
|
||||||
|
@ -179,9 +378,9 @@ game.import("character", function () {
|
||||||
filter(event, player) {
|
filter(event, player) {
|
||||||
if (event.responded) return false;
|
if (event.responded) return false;
|
||||||
const names = lib.inpile.filter(
|
const names = lib.inpile.filter(
|
||||||
(name) =>
|
(name) =>
|
||||||
get.type(name) == "basic" && !player.getStorage("clanshengmo").includes(name)
|
get.type(name) == "basic" && !player.getStorage("clanshengmo").includes(name)
|
||||||
),
|
),
|
||||||
cards = get.event("clanshengmo_cards") || [];
|
cards = get.event("clanshengmo_cards") || [];
|
||||||
return (
|
return (
|
||||||
cards.length > 0 &&
|
cards.length > 0 &&
|
||||||
|
@ -216,9 +415,9 @@ game.import("character", function () {
|
||||||
async content(event, trigger, player) {
|
async content(event, trigger, player) {
|
||||||
const evt = event.getParent(2);
|
const evt = event.getParent(2);
|
||||||
const names = lib.inpile.filter(
|
const names = lib.inpile.filter(
|
||||||
(name) =>
|
(name) =>
|
||||||
get.type(name) == "basic" && !player.getStorage("clanshengmo").includes(name)
|
get.type(name) == "basic" && !player.getStorage("clanshengmo").includes(name)
|
||||||
),
|
),
|
||||||
cards = evt.clanshengmo_cards;
|
cards = evt.clanshengmo_cards;
|
||||||
const links = await player
|
const links = await player
|
||||||
.chooseButton(["剩墨:获得其中一张牌", cards], true)
|
.chooseButton(["剩墨:获得其中一张牌", cards], true)
|
||||||
|
@ -276,7 +475,7 @@ game.import("character", function () {
|
||||||
evt.set("norestore", true);
|
evt.set("norestore", true);
|
||||||
evt.set("custom", {
|
evt.set("custom", {
|
||||||
add: {},
|
add: {},
|
||||||
replace: { window() {} },
|
replace: { window() { } },
|
||||||
});
|
});
|
||||||
evt.goto(0);
|
evt.goto(0);
|
||||||
},
|
},
|
||||||
|
@ -428,8 +627,8 @@ game.import("character", function () {
|
||||||
let str = "";
|
let str = "";
|
||||||
const card = new lib.element.VCard({ name: "sha" });
|
const card = new lib.element.VCard({ name: "sha" });
|
||||||
const targets = game.filterPlayer((target) => {
|
const targets = game.filterPlayer((target) => {
|
||||||
return event.player.getPrevious() == target || event.player.getNext() == target;
|
return event.player.getPrevious() == target || event.player.getNext() == target;
|
||||||
}),
|
}),
|
||||||
bool = !targets.some((target) => {
|
bool = !targets.some((target) => {
|
||||||
return target.getHistory("useCard").length;
|
return target.getHistory("useCard").length;
|
||||||
}),
|
}),
|
||||||
|
@ -455,8 +654,8 @@ game.import("character", function () {
|
||||||
check(event, player) {
|
check(event, player) {
|
||||||
const card = new lib.element.VCard({ name: "sha" });
|
const card = new lib.element.VCard({ name: "sha" });
|
||||||
const targets = game.filterPlayer((target) => {
|
const targets = game.filterPlayer((target) => {
|
||||||
return event.player.getPrevious() == target || event.player.getNext() == target;
|
return event.player.getPrevious() == target || event.player.getNext() == target;
|
||||||
}),
|
}),
|
||||||
bool = !targets.some((target) => {
|
bool = !targets.some((target) => {
|
||||||
return target.getHistory("useCard").length;
|
return target.getHistory("useCard").length;
|
||||||
}),
|
}),
|
||||||
|
@ -481,10 +680,10 @@ game.import("character", function () {
|
||||||
player.awakenSkill("clanjianji");
|
player.awakenSkill("clanjianji");
|
||||||
const card = new lib.element.VCard({ name: "sha" });
|
const card = new lib.element.VCard({ name: "sha" });
|
||||||
const targets = game.filterPlayer((target) => {
|
const targets = game.filterPlayer((target) => {
|
||||||
return (
|
return (
|
||||||
trigger.player.getPrevious() == target || trigger.player.getNext() == target
|
trigger.player.getPrevious() == target || trigger.player.getNext() == target
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
boolx = !targets.some((target) => {
|
boolx = !targets.some((target) => {
|
||||||
return target.getHistory("useCard").length;
|
return target.getHistory("useCard").length;
|
||||||
}),
|
}),
|
||||||
|
@ -507,7 +706,7 @@ game.import("character", function () {
|
||||||
.set(
|
.set(
|
||||||
"choice",
|
"choice",
|
||||||
get.attitude(player, trigger.player) > 0 ||
|
get.attitude(player, trigger.player) > 0 ||
|
||||||
trigger.player.countCards("h") > player.countCards("h")
|
trigger.player.countCards("h") > player.countCards("h")
|
||||||
);
|
);
|
||||||
if (bool) draw = true;
|
if (bool) draw = true;
|
||||||
} else draw = true;
|
} else draw = true;
|
||||||
|
@ -546,9 +745,9 @@ game.import("character", function () {
|
||||||
.set(
|
.set(
|
||||||
"prompt",
|
"prompt",
|
||||||
"当前手牌点数和为" +
|
"当前手牌点数和为" +
|
||||||
player.getCards("h").reduce((sum, card) => sum + get.number(card), 0) +
|
player.getCards("h").reduce((sum, card) => sum + get.number(card), 0) +
|
||||||
"," +
|
"," +
|
||||||
get.prompt("clanqiajue")
|
get.prompt("clanqiajue")
|
||||||
)
|
)
|
||||||
.set(
|
.set(
|
||||||
"prompt2",
|
"prompt2",
|
||||||
|
@ -972,7 +1171,7 @@ game.import("character", function () {
|
||||||
return false;
|
return false;
|
||||||
return (
|
return (
|
||||||
get.effect(target, card, player, player) +
|
get.effect(target, card, player, player) +
|
||||||
get.effect(target, { name: "draw" }, player, player) >
|
get.effect(target, { name: "draw" }, player, player) >
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -1130,10 +1329,10 @@ game.import("character", function () {
|
||||||
.set(
|
.set(
|
||||||
"dying",
|
"dying",
|
||||||
player.hp +
|
player.hp +
|
||||||
player.countCards("hs", {
|
player.countCards("hs", {
|
||||||
name: ["tao", "jiu"],
|
name: ["tao", "jiu"],
|
||||||
}) <
|
}) <
|
||||||
1
|
1
|
||||||
)
|
)
|
||||||
.set("num", event.num1);
|
.set("num", event.num1);
|
||||||
} else event.finish();
|
} else event.finish();
|
||||||
|
@ -1353,7 +1552,7 @@ game.import("character", function () {
|
||||||
next.set("_backupevent", "clanfuxun_backup");
|
next.set("_backupevent", "clanfuxun_backup");
|
||||||
next.set("custom", {
|
next.set("custom", {
|
||||||
add: {},
|
add: {},
|
||||||
replace: { window() {} },
|
replace: { window() { } },
|
||||||
});
|
});
|
||||||
next.backup("clanfuxun_backup");
|
next.backup("clanfuxun_backup");
|
||||||
}
|
}
|
||||||
|
@ -2488,13 +2687,13 @@ game.import("character", function () {
|
||||||
if (eff > 0) return eff;
|
if (eff > 0) return eff;
|
||||||
return Math.max(
|
return Math.max(
|
||||||
2 * get.effect(target, { name: "draw" }, player, player) +
|
2 * get.effect(target, { name: "draw" }, player, player) +
|
||||||
0.6 * get.effect(player, { name: "draw" }, player, player),
|
0.6 * get.effect(player, { name: "draw" }, player, player),
|
||||||
get.recoverEffect(target, player, player)
|
get.recoverEffect(target, player, player)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return Math.max(
|
return Math.max(
|
||||||
2 * get.effect(target, { name: "draw" }, player, player) +
|
2 * get.effect(target, { name: "draw" }, player, player) +
|
||||||
0.6 * get.effect(player, { name: "draw" }, player, player),
|
0.6 * get.effect(player, { name: "draw" }, player, player),
|
||||||
get.recoverEffect(target, player, player)
|
get.recoverEffect(target, player, player)
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
|
@ -2503,10 +2702,10 @@ game.import("character", function () {
|
||||||
player.countCards("hs", (card) => {
|
player.countCards("hs", (card) => {
|
||||||
return get.name(card) == "jiu" && player.hasUseTarget(card);
|
return get.name(card) == "jiu" && player.hasUseTarget(card);
|
||||||
}) &&
|
}) &&
|
||||||
player.countCards("hs", (card) => {
|
player.countCards("hs", (card) => {
|
||||||
if (get.name(card) != "sha") return false;
|
if (get.name(card) != "sha") return false;
|
||||||
return game.hasNature(card, "linked");
|
return game.hasNature(card, "linked");
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
"step 1";
|
"step 1";
|
||||||
if (result.bool) {
|
if (result.bool) {
|
||||||
|
@ -2782,11 +2981,11 @@ game.import("character", function () {
|
||||||
trigger.player
|
trigger.player
|
||||||
.chooseCard(
|
.chooseCard(
|
||||||
"连和:交给" +
|
"连和:交给" +
|
||||||
get.translation(player) +
|
get.translation(player) +
|
||||||
get.cnNumber(num - 1) +
|
get.cnNumber(num - 1) +
|
||||||
"张牌,或点“取消”令其摸" +
|
"张牌,或点“取消”令其摸" +
|
||||||
get.cnNumber(num + 1) +
|
get.cnNumber(num + 1) +
|
||||||
"张牌",
|
"张牌",
|
||||||
num - 1,
|
num - 1,
|
||||||
pos
|
pos
|
||||||
)
|
)
|
||||||
|
@ -2966,8 +3165,8 @@ game.import("character", function () {
|
||||||
.chooseTarget(
|
.chooseTarget(
|
||||||
"三恇:选择一名其他角色",
|
"三恇:选择一名其他角色",
|
||||||
"令其交给你至少X张牌" +
|
"令其交给你至少X张牌" +
|
||||||
(cards.length ? ",然后其获得" + get.translation(cards) : "") +
|
(cards.length ? ",然后其获得" + get.translation(cards) : "") +
|
||||||
"(X为以下条件中其满足的项数:场上有牌、已受伤、体力值小于手牌数)",
|
"(X为以下条件中其满足的项数:场上有牌、已受伤、体力值小于手牌数)",
|
||||||
true,
|
true,
|
||||||
lib.filter.notMe
|
lib.filter.notMe
|
||||||
)
|
)
|
||||||
|
@ -3007,15 +3206,15 @@ game.import("character", function () {
|
||||||
"prompt",
|
"prompt",
|
||||||
num > 0
|
num > 0
|
||||||
? "是否交给" +
|
? "是否交给" +
|
||||||
get.translation(player) +
|
get.translation(player) +
|
||||||
"任意张牌" +
|
"任意张牌" +
|
||||||
(cards.length ? "并获得" + get.translation(cards) : "") +
|
(cards.length ? "并获得" + get.translation(cards) : "") +
|
||||||
"?"
|
"?"
|
||||||
: "交给" +
|
: "交给" +
|
||||||
get.translation(player) +
|
get.translation(player) +
|
||||||
"至少" +
|
"至少" +
|
||||||
get.cnNumber(num) +
|
get.cnNumber(num) +
|
||||||
"张牌"
|
"张牌"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else event.finish();
|
} else event.finish();
|
||||||
|
@ -3194,19 +3393,19 @@ game.import("character", function () {
|
||||||
next.set(
|
next.set(
|
||||||
"openskilldialog",
|
"openskilldialog",
|
||||||
"将" +
|
"将" +
|
||||||
get.cnNumber(cards.length) +
|
get.cnNumber(cards.length) +
|
||||||
"张牌当做" +
|
"张牌当做" +
|
||||||
(get.translation(nature) || "") +
|
(get.translation(nature) || "") +
|
||||||
"【" +
|
"【" +
|
||||||
get.translation(name) +
|
get.translation(name) +
|
||||||
"】使用"
|
"】使用"
|
||||||
);
|
);
|
||||||
next.set("norestore", true);
|
next.set("norestore", true);
|
||||||
next.set("addCount", false);
|
next.set("addCount", false);
|
||||||
next.set("_backupevent", "clanshenjun_backup");
|
next.set("_backupevent", "clanshenjun_backup");
|
||||||
next.set("custom", {
|
next.set("custom", {
|
||||||
add: {},
|
add: {},
|
||||||
replace: { window() {} },
|
replace: { window() { } },
|
||||||
});
|
});
|
||||||
next.backup("clanshenjun_backup");
|
next.backup("clanshenjun_backup");
|
||||||
}
|
}
|
||||||
|
@ -3405,7 +3604,7 @@ game.import("character", function () {
|
||||||
filter(event, player) {
|
filter(event, player) {
|
||||||
return player.getStorage("clanfenchai").length;
|
return player.getStorage("clanfenchai").length;
|
||||||
},
|
},
|
||||||
content() {},
|
content() { },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mod: {
|
mod: {
|
||||||
|
@ -3441,8 +3640,8 @@ game.import("character", function () {
|
||||||
return (
|
return (
|
||||||
num > 0 &&
|
num > 0 &&
|
||||||
num ==
|
num ==
|
||||||
player.getDiscardableCards(player, "h").filter((i) => get.name(i) == link)
|
player.getDiscardableCards(player, "h").filter((i) => get.name(i) == link)
|
||||||
.length
|
.length
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
check(button) {
|
check(button) {
|
||||||
|
@ -3830,8 +4029,8 @@ game.import("character", function () {
|
||||||
player
|
player
|
||||||
.chooseTarget(
|
.chooseTarget(
|
||||||
"蹈节:将" +
|
"蹈节:将" +
|
||||||
get.translation(trigger.cards.filterInD()) +
|
get.translation(trigger.cards.filterInD()) +
|
||||||
"交给一名颍川荀氏角色",
|
"交给一名颍川荀氏角色",
|
||||||
true,
|
true,
|
||||||
(card, player, target) => {
|
(card, player, target) => {
|
||||||
return target == player || target.hasClan("颍川荀氏");
|
return target == player || target.hasClan("颍川荀氏");
|
||||||
|
@ -3924,7 +4123,7 @@ game.import("character", function () {
|
||||||
player.countCards("h", function (card) {
|
player.countCards("h", function (card) {
|
||||||
return lib.skill.clanyirong.checkx(card) > 0;
|
return lib.skill.clanyirong.checkx(card) > 0;
|
||||||
}) +
|
}) +
|
||||||
1 <
|
1 <
|
||||||
player.countCards("h") - player.getHandcardLimit()
|
player.countCards("h") - player.getHandcardLimit()
|
||||||
)
|
)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -4284,6 +4483,13 @@ game.import("character", function () {
|
||||||
clanshengmo: "剩墨",
|
clanshengmo: "剩墨",
|
||||||
clanshengmo_info:
|
clanshengmo_info:
|
||||||
"当你需要使用一张未以此法使用过的基本牌时,你可以获得一张于本回合进入弃牌堆且点数不为这些牌中最大且不为这些牌中最小的牌,视为你使用需要使用的牌。",
|
"当你需要使用一张未以此法使用过的基本牌时,你可以获得一张于本回合进入弃牌堆且点数不为这些牌中最大且不为这些牌中最小的牌,视为你使用需要使用的牌。",
|
||||||
|
clan_zhongyao: "族钟繇",
|
||||||
|
clan_zhongyao_prefix: "族",
|
||||||
|
clanchengqi: "承启",
|
||||||
|
clanchengqi_info: "你可以将至少两张手牌当作本回合未以此法转换过的基本牌或普通锦囊牌使用,且你以此法转化的牌名字数须不大于以此法转化的所有实体牌牌名字数之和,若你以此法转化的牌名字数等于以此法转化的所有实体牌牌名字数之和,则你使用此牌时可以令一名角色摸一张牌。",
|
||||||
|
clanjieli: "诫厉",
|
||||||
|
clanjieli_info: "结束阶段,你可以选择一名角色,你观看其手牌中牌名字数最多的牌和牌堆顶X张牌,然后你可以交换其中的X张牌(X为你本回合使用过的牌中的牌名字数最大值)。",
|
||||||
|
|
||||||
|
|
||||||
clan_wu: "陈留·吴氏",
|
clan_wu: "陈留·吴氏",
|
||||||
clan_xun: "颍川·荀氏",
|
clan_xun: "颍川·荀氏",
|
||||||
|
|
|
@ -142,6 +142,7 @@ window.noname_character_rank = {
|
||||||
"dc_shen_huatuo",
|
"dc_shen_huatuo",
|
||||||
"sp_zhenji",
|
"sp_zhenji",
|
||||||
"wu_guanyu",
|
"wu_guanyu",
|
||||||
|
"clan_zhongyao",
|
||||||
],
|
],
|
||||||
a: [
|
a: [
|
||||||
"star_caoren",
|
"star_caoren",
|
||||||
|
@ -1916,6 +1917,7 @@ window.noname_character_rank = {
|
||||||
"wu_guanyu",
|
"wu_guanyu",
|
||||||
],
|
],
|
||||||
epic: [
|
epic: [
|
||||||
|
"clan_zhongyao",
|
||||||
"dc_caoshuang",
|
"dc_caoshuang",
|
||||||
"tianchou",
|
"tianchou",
|
||||||
"star_yuanshao",
|
"star_yuanshao",
|
||||||
|
|
Loading…
Reference in New Issue