noname/character/zhuogui.js

344 lines
9.2 KiB
JavaScript
Raw Normal View History

2024-04-15 18:10:02 +00:00
import { lib, game, ui, get, ai, _status } from "../noname.js";
game.import("character", function () {
return {
name: "zhuogui",
character: {
nianshou: ["male", "shu", 4, ["nianrui", "qixiang"]],
mamian: ["male", "qun", 4, ["lianyu", "guiji"]],
niutou: ["male", "shu", 4, ["manjia", "xiaoshou"]],
baiwuchang: ["male", "qun", 3, ["qiangzheng", "moukui"]],
heiwuchang: ["male", "qun", 3, ["suoling", "xixing"]],
},
skill: {
qixiang: {
group: ["qixiang1", "qixiang2"],
ai: {
effect: {
target: function (card, player, target, current) {
if (card.name == "lebu" && card.name == "bingliang") return 0.8;
},
},
},
},
qixiang1: {
trigger: { player: "judge" },
forced: true,
filter: function (event, player) {
if (event.card) {
if (event.card.viewAs) {
return event.card.viewAs == "lebu";
} else {
return event.card.name == "lebu";
}
}
},
content: function () {
player.addTempSkill("qixiang3", "phaseJudgeAfter");
},
},
qixiang2: {
trigger: { player: "judge" },
forced: true,
filter: function (event, player) {
if (event.card) {
if (event.card.viewAs) {
return event.card.viewAs == "bingliang";
} else {
return event.card.name == "bingliang";
}
}
},
content: function () {
player.addTempSkill("qixiang4", "phaseJudgeAfter");
},
},
qixiang3: {
mod: {
suit: function (card, suit) {
if (suit == "diamond") return "heart";
},
},
},
qixiang4: {
mod: {
suit: function (card, suit) {
if (suit == "spade") return "club";
},
},
},
nianrui: {
trigger: { player: ["phaseBegin", "phaseEnd"] },
content: function () {
"step 0";
player.judge(function (card) {
return get.color(card) == "red" ? 1 : 0;
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.draw();
}
},
},
lianyu: {
enable: "phaseUse",
usable: 1,
filterCard: { color: "red" },
check: function (card) {
return 6 - get.value(card);
},
filterTarget: true,
selectTarget: -1,
line: "fire",
content: function () {
target.damage("fire");
},
ai: {
result: {
player: function (card, player, target) {
var eff = 0;
for (var i = 0; i < game.players.length; i++) {
if (!game.players[i].isOut()) {
eff += get.damageEffect(game.players[i], player, player, "fire");
}
}
return eff;
},
},
expose: 0.1,
},
},
manjia: {
group: ["manjia1", "manjia2"],
},
manjia1: {
trigger: { target: "useCardToBefore" },
forced: true,
priority: 6,
filter: function (event, player) {
if (player.getEquip(2)) return false;
return lib.skill.tengjia1.filter(event, player);
},
content: function () {
trigger.cancel();
},
ai: {
effect: {
target: function (card, player, target, current) {
if (target.getEquip(2)) return;
return lib.skill.tengjia1.ai.effect.target.apply(this, arguments);
},
},
},
},
manjia2: {
trigger: { player: "damageBegin" },
filter: function (event, player) {
if (player.getEquip(2)) return false;
if (event.hasNature("fire")) return true;
},
forced: true,
check: function () {
return false;
},
content: function () {
trigger.num++;
},
ai: {
effect: {
target: function (card, player, target, current) {
if (target.getEquip(2)) return;
return lib.skill.tengjia2.ai.effect.target.apply(this, arguments);
},
},
},
},
xiaoshou: {
trigger: { player: "phaseEnd" },
filter: function (event, player) {
var players = game.players.slice(0);
players.sort(function (a, b) {
return b.hp - a.hp;
});
return players[0].hp > players[1].hp && players[0] != player;
},
check: function (event, player) {
var players = game.players.slice(0);
players.sort(function (a, b) {
return b.hp - a.hp;
});
return get.damageEffect(players[0], player, player, "fire") > 0;
},
prompt: function () {
var players = game.players.slice(0);
players.sort(function (a, b) {
return b.hp - a.hp;
});
return "枭首:是否对" + get.translation(players[0]) + "造成1点火焰伤害";
},
content: function () {
var players = game.players.slice(0);
players.sort(function (a, b) {
return b.hp - a.hp;
});
if (players[0].hp > players[1].hp && players[0] != player) {
players[0].damage("fire");
player.line(players[0], "fire");
}
},
ai: {
expose: 0.2,
},
},
guiji: {
trigger: { player: "phaseJudgeBegin" },
forced: true,
content: function () {
player.discard(player.getCards("j").randomGet());
},
filter: function (event, player) {
return player.countCards("j") > 0;
},
ai: {
effect: {
target: function (card, player, target, current) {
if (get.type(card) == "delay" && target.countCards("j") == 0) return 0.1;
},
},
},
},
qiangzheng: {
audio: 2,
trigger: { player: "phaseEnd" },
direct: true,
forced: true,
filter: function (event, player) {
for (var i = 0; i < game.players.length; i++) {
if (game.players[i] != player && game.players[i].countCards("h")) return true;
}
return false;
},
content: function () {
"step 0";
player.chooseTarget("获得一名角色的一张手牌", true, function (card, player, target) {
return player != target && target.countCards("h") > 0;
}).ai = function (target) {
return -get.attitude(player, target);
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.targets && result.targets.length) {
player.logSkill("qiangzheng", result.targets);
player.gain(result.targets[0].getCards("h").randomGet(), result.targets[0]);
result.targets[0].$give(1, player);
game.delay();
}
},
ai: {
threaten: 1.7,
},
},
suoling: {
trigger: { player: "phaseEnd" },
forced: true,
filter: function (event, player) {
if (player.isLinked()) return true;
for (var i = 0; i < game.players.length; i++) {
if (game.players[i] != player && !game.players[i].isLinked()) {
return true;
}
}
return false;
},
content: function () {
"step 0";
event.targets = game.players.slice(0);
event.targets.remove(player);
event.targets.sort(lib.sort.seat);
if (player.isLinked()) player.link();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.targets.length) {
var target = event.targets.shift();
if (!target.isLinked()) {
target.link();
}
event.redo();
}
},
},
xixing: {
enable: "phaseUse",
usable: 1,
filterCard: function (card) {
var type = get.type(card);
for (var i = 0; i < ui.selected.cards.length; i++) {
if (get.type(ui.selected.cards[i]) == type) return false;
}
return true;
},
complexCard: true,
selectCard: 3,
position: "he",
filterTarget: function (card, player, target) {
return player != target;
},
check: function (card) {
if (_status.event.player.hp == _status.event.player.maxHp) {
return 5 - get.value(card);
}
return 10 - get.value(card);
},
content: function () {
"step 0";
target.damage();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
player.recover();
},
ai: {
order: 9.5,
result: {
target: function (player, target) {
return get.damageEffect(target, player);
},
},
expose: 0.2,
},
},
},
translate: {
nianshou: "年兽",
nianrui: "年瑞",
qixiang: "祺祥",
qixiang1: "祺祥",
qixiang2: "祺祥",
nianrui_info: "准备阶段和结束阶段,你可以进行一次判定,若结果为红色则摸一张牌。",
qixiang_info: "乐不思蜀判定时,你的方块判定牌视为红桃;兵粮寸断判定时,你的黑桃判定牌视为草花。",
mamian: "马面",
lianyu: "炼狱",
lianyu_info: "出牌阶段限一次你可以弃置一张红色手牌令场上所有角色受到1点火焰伤害。",
niutou: "牛头",
manjia: "蛮甲",
manjia1: "蛮甲",
manjia2: "蛮甲",
manjia_info: "锁定技,若你的装备区内没有防具牌,则你视为装备了【藤甲】。",
xiaoshou: "枭首",
xiaoshou_info: "结束阶段若场上体力值最多的角色只有一个你可以对其造成1点火焰伤害。",
guiji: "诡计",
guiji_info: "锁定技,准备阶段结束时,若你的判定区内有牌,你随机弃置其中一张牌。",
baiwuchang: "白无常",
qiangzheng: "强征",
qiangzheng_info: "锁定技,结束阶段,你获得一名其他角色的一张手牌。",
zuijiu: "醉酒",
zuijiu_info: "锁定技,你的黑杀造成的伤害+1造成伤害后须弃置一张手牌。",
heiwuchang: "黑无常",
suoling: "索令",
suoling_info: "锁定技,结束阶段,你解除横置状态,除你之外的所有角色进入横置状态。",
xixing: "吸星",
xixing_info:
"出牌阶段限一次你可以弃置三张不同类别的牌对一名其他角色造成1点伤害然后回复1点体力。",
},
};
});