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点体力。",
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
});
|