344 lines
9.2 KiB
JavaScript
344 lines
9.2 KiB
JavaScript
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;
|
||
});
|
||
"step 1";
|
||
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);
|
||
};
|
||
"step 1";
|
||
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();
|
||
"step 1";
|
||
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();
|
||
"step 1";
|
||
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点体力。",
|
||
},
|
||
};
|
||
});
|