Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added audio/die/mb_cuilingyi.mp3
Binary file not shown.
Binary file added audio/skill/mbcaiqiu1.mp3
Binary file not shown.
Binary file added audio/skill/mbcaiqiu2.mp3
Binary file not shown.
Binary file added audio/skill/mbcaiqiu3.mp3
Binary file not shown.
Binary file added audio/skill/mbcaiqiu4.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_dongjiao1.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_dongjiao2.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_dongjiao3.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_dongjiao4.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_dongjiao5.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_dongjiao6.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_guidian1.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_guidian2.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_guidian3.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_guidian4.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_xiuge1.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_xiuge2.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_xiuge3.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_xiuge4.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_xiuge5.mp3
Binary file not shown.
Binary file added audio/skill/mbweizhuang_xiuge6.mp3
Binary file not shown.
Binary file added audio/skill/mbxishang1.mp3
Binary file not shown.
Binary file added audio/skill/mbxishang2.mp3
Binary file not shown.
Binary file added audio/skill/mbxishang3.mp3
Binary file not shown.
Binary file added audio/skill/mbxishang4.mp3
Binary file not shown.
Binary file added audio/skill/mbxishang5.mp3
Binary file not shown.
Binary file added audio/skill/mbxishang6.mp3
Binary file not shown.
Binary file added audio/skill/mbxishang7.mp3
Binary file not shown.
Binary file added audio/skill/mbxishang8.mp3
Binary file not shown.
32 changes: 32 additions & 0 deletions card/yingbian.js
Original file line number Diff line number Diff line change
Expand Up @@ -385,8 +385,37 @@ game.import("card", function () {
},
skills: ["taigongyinfu_skill", "taigongyinfu_link"],
},
baipidao: {
audio: true,
fullskin: true,
type: "equip",
subtype: "equip1",
bingzhu: ["曹操"],
distance: { attackFrom: -1 },
ai: {
basic: {
equipValue: 4,
},
},
skills: ["baipidao_skill"],
},
},
skill: {
baipidao_skill: {
audio: true,
equipSkill: true,
trigger: {
source: "damageSource",
},
filter(event, player) {
return event.card?.name == "sha" && event.notLink() && event.player?.isIn() && event.player.countGainableCards(player, "h");
},
prompt2: "获得其一张手牌",
logTarget: "player",
async content(event, trigger, player) {
await player.gainPlayerCard(trigger.player, "h", true);
},
},
suijiyingbian_skill: {
mod: {
cardname(card, player) {
Expand Down Expand Up @@ -890,6 +919,9 @@ game.import("card", function () {
tianjitu_info: "锁定技,当此牌进入你的装备区时,你弃置一张不为此【天机图】的牌。当此牌离开你的装备区时,你将手牌摸至五张。",
taigongyinfu: "太公阴符",
taigongyinfu_info: "出牌阶段开始时,你可以横置或重置一名角色。出牌阶段结束时,你可以重铸一张手牌。",
baipidao: "百辟刀",
baipidao_skill: "百辟刀",
baipidao_info: "当你使用【杀】对目标角色造成伤害后,可以获得其一张手牌。",
taigongyinfu_skill: "太公阴符",
taigongyinfu_link: "太公阴符",
yingbian_zhuzhan_tag: "助战",
Expand Down
7 changes: 7 additions & 0 deletions character/extra/character.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
const characters = {
dc_shen_sunquan: {
sex: "male",
group: "shen",
hp: 4,
skills: ["dccangming", "dcchouxi", "dcjichao"],
groupInGuozhan: "wu",
},
zc26_shen_huangyueying: {
sex: "female",
group: "shen",
Expand Down
1 change: 1 addition & 0 deletions character/extra/characterTitle.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export default {
//dc_shen_sunquan: "",
shen_liubei: "誓守桃园义",
shen_luxun: "红莲业火",
shen_ganning: "江表之力牧",
Expand Down
271 changes: 271 additions & 0 deletions character/extra/skill.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,277 @@ import { lib, game, ui, get, ai, _status } from "../../noname.js";

/** @type { importCharacterConfig['skill'] } */
const skills = {
//新杀神孙权
dccangming: {
audio: 2,
trigger: {
global: "gameDrawAfter",
},
forced: true,
filter(event, player) {
return game.countPlayer(() => true) > 0;
},
logTarget() {
return game.filterPlayer(() => true);
},
async content(event, trigger, player) {
const { name } = event;
const func = async target => {
if (!target.countCards("h")) {
return;
}
const next = target.addToExpansion(target.getCards("h"), target, "giveAuto", false);
next.gaintag.add(name);
await next;
};
await game.doAsyncInOrder(event.targets, func);
},
marktext: "溟",
intro: {
markcount: "expansion",
mark(dialog, storage, player) {
const cards = player.getExpansions("dccangming");
if (player.isUnderControl(true)) {
dialog.addAuto(cards);
} else {
return "共有" + get.cnNumber(cards.length) + "张牌";
}
},
},
global: "dccangming_gain",
subSkill: {
gain: {
trigger: {
player: ["phaseBegin", "damageEnd"],
},
filter(event, player) {
return player.countExpansions("dccangming") > 0;
},
forced: true,
async content(event, trigger, player) {
await player.gain(player.getExpansions("dccangming"), "giveAuto");
},
},
},
},
dcchouxi: {
audio: 2,
enable: "phaseUse",
onChooseToUse(event) {
if (game.online) {
return;
}
const list = [];
game.countPlayer(current => {
if (!current.countExpansions("dccangming")) {
return false;
}
for (const card of current.getExpansions("dccangming")) {
if (["basic", "trick"].includes(get.type(card, false))) {
list.add(get.name(card, false));
}
}
return true;
});
list.removeArray(event.player.getStorage("dcchouxi_used"));
event.set("dcchouxiList", list);
},
filter(event, player) {
if (!event.dcchouxiList?.length || !player.countCards("hs")) {
return false;
}
return event.dcchouxiList.some(name => {
const card = get.autoViewAs({ name: name, storage: { dcchouxi: true } }, "unsure");
return player.hasUseTarget(card);
});
},
chooseButton: {
dialog(event, player) {
const list = event.dcchouxiList.filter(name => {
const card = get.autoViewAs({ name: name, storage: { dcchouxi: true } }, "unsure");
return player.hasUseTarget(card);
});
const dialog = ui.create.dialog("筹汐", [list, "vcard"], "hidden");
dialog.direct = true;
return dialog;
},
check(button) {
const player = get.player(),
card = get.autoViewAs({ name: button.link[2], storage: { dcchouxi: true } }, "unsure");
return player.getUseValue(card);
},
backup(links, player) {
return {
audio: "dcchouxi",
popname: true,
viewAs: {
name: links[0][2],
storage: {
dcchouxi: true,
},
},
filterCard: true,
position: "hs",
check(card) {
return 5 - get.value(card);
},
async precontent(event, trigger, player) {
player.addTempSkill("dcchouxi_used");
player.markAuto("dcchouxi_used", event.result.card.name);
event.getParent().addCount = false;
},
};
},
prompt(links, player) {
return `将一张手牌当作${get.translation(links[0][2])}使用`;
},
},
locked: false,
mod: {
cardUsable(card, player) {
if (card?.storage?.dcchouxi) {
return Infinity;
}
},
targetInRange(card, player) {
if (card?.storage?.dcchouxi) {
return true;
}
},
},
ai: {
order: 8,
result: {
player: 1,
},
},
subSkill: {
backup: {},
used: {
charlotte: true,
onremove: true,
},
},
},
dcjichao: {
audio: 2,
enable: "phaseUse",
usable: 1,
filter(event, player) {
return game.hasPlayer(current => current != player && current.countCards("h") > 0);
},
chooseButton: {
dialog(event, player) {
const choiceList = [
["one", "令一名其他角色将随机一半手牌(向上取整)置于武将牌上"],
["all", "令所有其他角色将手牌置于武将牌上"],
];
const dialog = ui.create.dialog("激潮", [choiceList, "textbutton"], "hidden");
dialog.direct = true;
return dialog;
},
filter(button, player) {
return button.link == "one" || !player.hasSkill("dcjichao_blocker");
},
check(button) {
const player = get.player();
if (button.link == "all") {
return 2;
}
return 1;
},
backup(links, player) {
return {
choice: links[0],
manualConfirm: true,
filterTarget(card, player, target) {
return target != player && target.countCards("h") > 0;
},
selectTarget() {
const { choice } = get.info("dcjichao_backup");
if (choice == "all") {
return -1;
}
return 1;
},
async contentBefore(event, trigger, player) {
const { choice } = get.info("dcjichao_backup");
if (choice == "all") {
player.addTempSkill("dcjichao_blocker", { source: "die" });
}
},
async content(event, trigger, player) {
const { target, name } = event,
{ choice } = get.info(name);
let cards = target.getCards("h");
if (choice !== "all") {
let num = Math.ceil(cards.length / 2);
if (num > 0) {
cards = cards.randomGets(num);
}
}
if (!cards.length) {
return;
}
const next = target.addToExpansion(cards, target, "giveAuto");
next.gaintag.add("dccangming");
await next;
},
ai1: () => 1,
ai2(target) {
const player = get.player();
return -get.attitude(player, target);
},
};
},
prompt(links, player) {
if (links[0] == "all") {
return "令所有其他角色将手牌置于武将牌上,称为“溟”";
}
return "令一名其他角色将随机一半手牌(向上取整)置于武将牌上,称为“溟”";
},
},
ai: {
order(item, player) {
player ??= get.player();
if (
game.hasPlayer(current => {
if (current == player || !current.countCards("h")) {
return false;
}
if (get.attitude(player, current) > 0) {
return false;
}
return player.countCards("hs", card => player.canUse(card, current) && get.effect(current, card, player, player) > 0) > 0;
})
) {
return 9;
}
return 1;
},
result: {
player(player, target) {
if (
game.hasPlayer(current => {
if (current == player || !current.countCards("h")) {
return false;
}
return get.attitude(player, current) < 0;
})
) {
return 1;
}
return 0;
},
},
},
subSkill: {
blocker: {
charlotte: true,
},
backup: {},
},
},
//26珍藏神黄月英
zc26_cangqiao: {
trigger: {
Expand Down
2 changes: 1 addition & 1 deletion character/extra/sort.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const characterSort = {
extra_shan: ["shen_zhaoyun", "shen_simayi"],
extra_yin: ["shen_liubei", "shen_luxun"],
extra_lei: ["shen_ganning", "shen_zhangliao"],
extra_decade: ["shen_zhonghui", "shen_huangzhong", "shen_jiangwei", "shen_machao", "shen_zhangfei", "shen_zhangjiao", "shen_dengai", "shen_xuzhu", "dc_shen_huatuo", "shen_pangtong"],
extra_decade: ["dc_shen_sunquan", "shen_zhonghui", "shen_huangzhong", "shen_jiangwei", "shen_machao", "shen_zhangfei", "shen_zhangjiao", "shen_dengai", "shen_xuzhu", "dc_shen_huatuo", "shen_pangtong"],
extra_ol: ["shen_dianwei", "ol_zhangliao", "shen_caopi", "shen_zhenji", "shen_sunquan", "junk_zhangjiao"],
extra_mobilezhi: ["shen_guojia", "shen_xunyu"],
extra_mobilexin: ["shen_taishici", "shen_sunce"],
Expand Down
8 changes: 8 additions & 0 deletions character/extra/translate.js
Original file line number Diff line number Diff line change
Expand Up @@ -551,6 +551,14 @@ const translates = {
zc26_lingling_info: "准备阶段,你须对一名角色造成1点雷电伤害;每轮结束时,所有死亡角色同时秘密选择上家或下家,然后按顺序(死亡由前到后)依次移动此牌至选择的角色对应区域内。",
zc26_lingling_skill: "軨軨",
zc26_lingling_skill_info: "准备阶段,你须对一名角色造成1点雷电伤害;每轮结束时,所有死亡角色同时秘密选择上家或下家,然后按顺序(死亡由前到后)依次移动此牌至选择的角色对应区域内。",
dc_shen_sunquan: "新杀神孙权",
dc_shen_sunquan_prefix: "新杀|神",
dccangming: "沧溟",
dccangming_info: "锁定技,分发初始手牌后,你令所有角色将手牌置于武将牌上,称为“溟”。一名角色受到伤害后或回合开始时,获得其武将牌上的所有“溟”。",
dcchouxi: "筹汐",
dcchouxi_info: "出牌阶段,你可将一张手牌当作“溟”中的一张基本牌或普通锦囊牌使用(每种牌名每回合限一次),以此法使用牌无距离次数限制。",
dcjichao: "激潮",
dcjichao_info: "出牌阶段限一次,你可选择一项:1.令一名其他角色将随机一半数量的手牌(向上取整)置于武将牌上,称为“溟”;2.令所有其他角色将手牌置于武将牌上,称为“溟”,然后此选项失效直到你杀死一名角色。",
};

export default translates;
6 changes: 3 additions & 3 deletions character/huicui/skill.js
Original file line number Diff line number Diff line change
Expand Up @@ -11746,9 +11746,9 @@ const skills = {
target.addSkill("dcyongbi_eff1");
}
if (list.length >= 3) {
player.addMark("dcyongbi_eff2", 2, false);
player.addMark("dcyongbi_eff2", 1, false);
player.addSkill("dcyongbi_eff2");
target.addMark("dcyongbi_eff2", 2, false);
target.addMark("dcyongbi_eff2", 1, false);
target.addSkill("dcyongbi_eff2");
}
},
Expand Down Expand Up @@ -14295,7 +14295,7 @@ const skills = {
usable: 1,
content() {
"step 0";
player.draw();
player.draw(2);
"step 1";
if (player.countCards("h") > 0 && game.hasPlayer(current => current != player)) {
var suits = lib.suit.slice(0),
Expand Down
Loading