commit
46e43d6b6e
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -4,6 +4,7 @@ game.import("character", function () {
|
|||
name: "huicui",
|
||||
connect: true,
|
||||
character: {
|
||||
wupu: ["male", "qun", 4, ["dcduanti", "dcshicao"]],
|
||||
dc_caoshuang: ["male", "wei", 4, ["dcjianzhuan", "dcfanshi"]],
|
||||
zangba: ["male", "wei", 4, ["rehengjiang"]],
|
||||
dc_simashi: ["male", "wei", 3, ["dcsanshi", "dczhenrao", "dcchenlve"]],
|
||||
|
@ -191,7 +192,7 @@ game.import("character", function () {
|
|||
"dc_wuban",
|
||||
"jiangfei",
|
||||
],
|
||||
sp_jishi: ["dc_jiben", "zhenghun", "dc_sunhanhua", "liuchongluojun"],
|
||||
sp_jishi: ["dc_jiben", "zhenghun", "dc_sunhanhua", "liuchongluojun", "wupu"],
|
||||
sp_raoting: ["dc_huanghao", "dc_sunziliufang", "dc_sunchen", "dc_jiachong"],
|
||||
sp_yijun: ["gongsundu", "mengyou", "dc_sp_menghuo", "gongsunxiu"],
|
||||
sp_zhengyin: ["yue_caiwenji", "yue_zhoufei", "yue_caiyong", "yue_xiaoqiao", "yue_daqiao"],
|
||||
|
@ -200,6 +201,106 @@ game.import("character", function () {
|
|||
},
|
||||
/** @type { importCharacterConfig['skill'] } */
|
||||
skill: {
|
||||
//吴普
|
||||
dcduanti: {
|
||||
audio: 2,
|
||||
trigger: {
|
||||
player: ["useCardAfter", "respondAfter"],
|
||||
},
|
||||
forced: true,
|
||||
filter(event, player) {
|
||||
const number = game
|
||||
.getAllGlobalHistory("everything", evt => {
|
||||
if (evt.player !== player) return false;
|
||||
return ["useCard", "respond"].includes(evt.name);
|
||||
})
|
||||
.indexOf(event);
|
||||
return number >= 0 && (number + 1) % 5 === 0;
|
||||
},
|
||||
onremove: true,
|
||||
async content(event, trigger, player) {
|
||||
await player.recover();
|
||||
if (player.countMark("dcduanti") >= 5) return;
|
||||
player.addMark("dcduanti", 1, false);
|
||||
await player.gainMaxHp();
|
||||
},
|
||||
},
|
||||
dcshicao: {
|
||||
audio: 2,
|
||||
enable: "phaseUse",
|
||||
onremove: ["dcshicao_aiRecord"],
|
||||
chooseButton: {
|
||||
dialog(event, player) {
|
||||
return ui.create.dialog("###识草###选择一种类型与要摸牌的来源", [["basic", "trick", "equip"].map(type => [type, get.translation(type)]), "tdnodes"], [["牌堆顶", "牌堆底"], "tdnodes"]);
|
||||
},
|
||||
check(button) {
|
||||
const aiStorage = get.player().getStorage("dcshicao_aiRecord");
|
||||
if (aiStorage.length > 0 && get.name(ui.cardPile.lastChild, false) === get.name(aiStorage.lastItem, false)) {
|
||||
if (button.link === "牌堆底" || button.link === get.type2(aiStorage.lastItem, false)) return 20;
|
||||
}
|
||||
if (button.link === "牌堆顶" || button.link === "basic") return 10;
|
||||
return 5 + Math.random();
|
||||
},
|
||||
filter(button, player) {
|
||||
if (!ui.selected.buttons.length) return true;
|
||||
return ui.selected.buttons[0].parentNode != button.parentNode;
|
||||
},
|
||||
select: 2,
|
||||
backup(links, player) {
|
||||
return {
|
||||
audio: "dcshicao",
|
||||
type: links[0],
|
||||
pos: links[1],
|
||||
filterCard: () => false,
|
||||
selectCard: -1,
|
||||
async content(event, trigger, player) {
|
||||
let { type, pos } = lib.skill.dcshicao_backup;
|
||||
game.log(player, "声明了", `#y${get.translation(type)}牌`);
|
||||
const next = player.draw();
|
||||
const bottom = pos === "牌堆底";
|
||||
if (bottom) {
|
||||
next.set("bottom", true);
|
||||
if (player.getStorage("dcshicao_aiRecord").length > 0) {
|
||||
player.storage.dcshicao_aiRecord.pop();
|
||||
}
|
||||
}
|
||||
const drawnCards = await next.forResult();
|
||||
if (get.type2(drawnCards[0], player) === type) return;
|
||||
let cards;
|
||||
if (bottom) {
|
||||
cards = get.bottomCards(2);
|
||||
cards.reverse();
|
||||
} else cards = get.cards(2);
|
||||
await game.cardsGotoOrdering(cards);
|
||||
await player.viewCards(`${bottom ? "牌堆顶" : "牌堆底"}的两张牌(靠左的在牌堆更靠上)`, cards);
|
||||
if (bottom) {
|
||||
cards.reverse();
|
||||
delete player.storage.dcshicao_aiRecord;
|
||||
} else {
|
||||
player.storage.dcshicao_aiRecord = cards.slice();
|
||||
}
|
||||
await game.cardsGotoPile(cards, bottom ? "insert" : null);
|
||||
player.tempBanSkill("dcshicao");
|
||||
},
|
||||
ai: {
|
||||
result: {player: 1},
|
||||
},
|
||||
};
|
||||
},
|
||||
prompt(links, player) {
|
||||
return `点击“确定”,从${links[1]}摸一张牌`;
|
||||
},
|
||||
},
|
||||
subSkill: {
|
||||
backup: {},
|
||||
},
|
||||
ai: {
|
||||
order: 8,
|
||||
result:{
|
||||
player: 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
//新杀曹爽
|
||||
dcjianzhuan: {
|
||||
audio: 2,
|
||||
|
@ -16450,6 +16551,11 @@ game.import("character", function () {
|
|||
dcfudou: "覆斗",
|
||||
dcfudou_info:
|
||||
"当你使用黑色牌/红色牌指定唯一目标后,若该角色不为你,且其于本局游戏对你/未对你造成过伤害,则你可以与其各失去1点体力/各摸一张牌。",
|
||||
wupu: "吴普",
|
||||
dcduanti: "锻体",
|
||||
dcduanti_info: "锁定技。当你使用或打出牌结算结束后,若此牌是你本局游戏使用或打出过的牌中的第5X张牌(X∈N⁺),你回复1点体力,然后若你以此法增加的上限小于5,你加1点体力上限。",
|
||||
dcshicao: "识草",
|
||||
dcshicao_info: "出牌阶段,你可以声明一种类型,然后选择从牌堆顶或牌堆底摸一张牌。若此牌类型与你声明的类型不同,你观看牌堆另一端的两张牌,此技能本回合失效。",
|
||||
|
||||
sp_baigei: "无双上将",
|
||||
sp_caizijiaren: "才子佳人",
|
||||
|
|
|
@ -144,6 +144,7 @@ window.noname_character_rank = {
|
|||
"wu_guanyu",
|
||||
"clan_zhongyao",
|
||||
"guanyue",
|
||||
"wupu",
|
||||
],
|
||||
a: [
|
||||
"star_caoren",
|
||||
|
@ -383,6 +384,7 @@ window.noname_character_rank = {
|
|||
"drag_guanyu",
|
||||
"drag_caoren",
|
||||
"drag_lvchang",
|
||||
"star_sunjian",
|
||||
],
|
||||
am: [
|
||||
"tw_yanliang",
|
||||
|
@ -2204,6 +2206,8 @@ window.noname_character_rank = {
|
|||
"sp_zhenji",
|
||||
"drag_guanyu",
|
||||
"drag_caoren",
|
||||
"wupu",
|
||||
"star_sunjian",
|
||||
],
|
||||
rare: [
|
||||
"drag_lvchang",
|
||||
|
|
128
character/sp2.js
128
character/sp2.js
|
@ -4,6 +4,7 @@ game.import("character", function () {
|
|||
name: "sp2",
|
||||
connect: true,
|
||||
character: {
|
||||
star_sunjian: ["male", "qun", "4/5", ["starruijun", "stargangyi"]],
|
||||
liqueguosi: ["male", "qun", 4, ["xiongsuan"]],
|
||||
star_zhangchunhua: ["female", "wei", 3, ["starliangyan", "starminghui"]],
|
||||
star_yuanshao: [
|
||||
|
@ -168,12 +169,133 @@ game.import("character", function () {
|
|||
"star_dongzhuo",
|
||||
"star_yuanshao",
|
||||
"star_zhangchunhua",
|
||||
"star_sunjian",
|
||||
],
|
||||
mini_qixian: ["mp_liuling"],
|
||||
sp2_waitforsort: ["caobuxing", "re_maliang", "dc_jikang"],
|
||||
},
|
||||
},
|
||||
skill: {
|
||||
//星孙坚
|
||||
starruijun: {
|
||||
audio: 2,
|
||||
trigger: {
|
||||
player: "useCardToPlayered",
|
||||
},
|
||||
filter(event, player) {
|
||||
if (event.targets.length > 1) return false;
|
||||
if (
|
||||
player.hasHistory("useCard", evt => {
|
||||
if (evt === event.getParent()) return false;
|
||||
const targets = evt.targets;
|
||||
return targets.length === 1 && targets[0] !== player;
|
||||
})
|
||||
)
|
||||
return false;
|
||||
const target = event.target;
|
||||
if (target === player || !target.isIn()) return false;
|
||||
return true;
|
||||
},
|
||||
logTarget: "target",
|
||||
locked: false,
|
||||
check(event, player) {
|
||||
return (
|
||||
get.attitude(player, event.target) <= 0 ||
|
||||
!player.hasCard(card => {
|
||||
return game.hasPlayer(current => {
|
||||
return get.effect(current, card, player, player) > 0 && player.canUse(card, current, true, true);
|
||||
});
|
||||
}, "hs")
|
||||
);
|
||||
},
|
||||
prompt2(event, player) {
|
||||
return `摸${get.cnNumber(player.getDamagedHp() + 1)}张牌,令所有除${get.translation(event.target)}外的其他角色不在你的攻击范围内,且你对其造成的伤害逐次增加。`;
|
||||
},
|
||||
async content(event, trigger, player) {
|
||||
await player.draw(player.getDamagedHp() + 1);
|
||||
player.addTempSkill("starruijun_effect", "phaseChange");
|
||||
player.markAuto("starruijun_effect", trigger.target);
|
||||
},
|
||||
subSkill: {
|
||||
effect: {
|
||||
audio: "starruijun",
|
||||
trigger: {
|
||||
source: "damageBegin2",
|
||||
},
|
||||
charlotte: true,
|
||||
forced: true,
|
||||
onremove: true,
|
||||
async content(event, trigger, player) {
|
||||
let num = 1;
|
||||
const evts = player.getHistory("sourceDamage", evt => {
|
||||
return evt.source === player && evt.player === trigger.player;
|
||||
});
|
||||
if (evts.length) num += evts.lastItem.num;
|
||||
trigger.num = Math.min(5, num);
|
||||
},
|
||||
mod: {
|
||||
inRange(from, to) {
|
||||
if (!from.getStorage("starruijun_effect").includes(to)) return false;
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
mod: {
|
||||
aiOrder(player, card, num) {
|
||||
const event = get.event();
|
||||
if (!event || event.type !== "phase") return;
|
||||
if (
|
||||
game.hasPlayer(current => {
|
||||
return get.effect(current, card, player, player) > 0 && player.canUse(card, current, true, true) && get.damageEffect(current, player, player) > 0;
|
||||
})
|
||||
)
|
||||
return num * 2;
|
||||
return num / 1.5;
|
||||
}
|
||||
},
|
||||
},
|
||||
stargangyi: {
|
||||
audio: 2,
|
||||
trigger: {
|
||||
source: "damage",
|
||||
},
|
||||
silent: true,
|
||||
forced: true,
|
||||
group: "stargangyi_recover",
|
||||
async content(event, trigger, player) {
|
||||
player.addTempSkill("stargangyi_access");
|
||||
},
|
||||
subSkill: {
|
||||
recover: {
|
||||
audio: "stargangyi",
|
||||
trigger: {
|
||||
player: "recoverBegin",
|
||||
},
|
||||
filter(event, player) {
|
||||
const evt = event.getParent(3);
|
||||
if (!player.isDying() || evt.type !== "dying") return false;
|
||||
return ["tao", "jiu"].includes(event.getParent().name);
|
||||
},
|
||||
forced: true,
|
||||
async content(event, trigger, player) {
|
||||
trigger.num++;
|
||||
},
|
||||
},
|
||||
access: {
|
||||
charlotte: true,
|
||||
},
|
||||
},
|
||||
mod: {
|
||||
cardEnabled(card, player) {
|
||||
if (player.hasSkill("stargangyi_access")) return;
|
||||
if (player === _status.currentPhase && card.name === "tao") return false;
|
||||
},
|
||||
cardSavable(card, player) {
|
||||
if (player.hasSkill("stargangyi_access")) return;
|
||||
if (player === _status.currentPhase && card.name === "tao") return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
//李傕郭汜
|
||||
xiongsuan: {
|
||||
audio: 2,
|
||||
|
@ -14584,6 +14706,12 @@ game.import("character", function () {
|
|||
xiongsuan: "凶算",
|
||||
xiongsuan_info:
|
||||
"出牌阶段限一次,你可以弃置一张手牌并对一名角色造成1点伤害,然后你摸三张牌。若该角色不为你,你失去1点体力。",
|
||||
star_sunjian: "星孙坚",
|
||||
star_sunjian_prefix: "星",
|
||||
starruijun: "锐军",
|
||||
starruijun_info: "当你于出牌阶段首次使用牌指定其他角色为目标后,若目标角色数为1,你可以摸X张牌(X为你已损失的体力值+1)。直到此阶段结束,所有不为其的其他角色均不在你的攻击范围内,且当你对其造成伤害时,此伤害值改为Y(Y为你本回合上一次对其造成过的伤害值+1,至多为5)。",
|
||||
stargangyi: "刚毅",
|
||||
stargangyi_info: "锁定技。①你的回合内,若你本回合没有造成过伤害,你不能使用【桃】。②当你处于濒死状态时,以你为目标的【桃】或【酒】的回复值+1。",
|
||||
|
||||
sp_whlw: "文和乱武",
|
||||
sp_zlzy: "逐鹿中原",
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 163 KiB |
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
Binary file not shown.
After Width: | Height: | Size: 72 KiB |
Loading…
Reference in New Issue