458 lines
12 KiB
JavaScript
458 lines
12 KiB
JavaScript
import { lib, game, ui, get, ai, _status } from "../noname.js";
|
||
game.import("card", function () {
|
||
return {
|
||
name: "zhenfa",
|
||
card: {
|
||
pozhenjue: {
|
||
type: "zhenfa",
|
||
recastable: true,
|
||
enable: true,
|
||
notarget: true,
|
||
content: function () {
|
||
var targets = game.filterPlayer();
|
||
var n = targets.length;
|
||
while (n--) {
|
||
game.swapSeat(targets.randomGet(), targets.randomGet());
|
||
}
|
||
},
|
||
mode: ["guozhan"],
|
||
ai: {
|
||
order: 8,
|
||
result: {
|
||
player: 1,
|
||
},
|
||
},
|
||
},
|
||
changshezhen: {
|
||
type: "zhenfa",
|
||
recastable: true,
|
||
enable: function (card, player) {
|
||
if (player.inline()) return true;
|
||
if (player.identity == "unknown" || player.identity == "ye") return false;
|
||
return game.hasPlayer(function (current) {
|
||
return current != player && current.isFriendOf(player);
|
||
});
|
||
},
|
||
notarget: true,
|
||
content: function () {
|
||
if (player.inline()) {
|
||
var targets = game.filterPlayer(function (current) {
|
||
return player.inline(current);
|
||
});
|
||
player.line(targets);
|
||
game.asyncDraw(targets);
|
||
} else if (player.getNext()) {
|
||
var list = game.filterPlayer(function (current) {
|
||
return current != player && current.isFriendOf(player);
|
||
});
|
||
if (list.length) {
|
||
list.sort(function (a, b) {
|
||
return (
|
||
get.distance(player, a, "absolute") - get.distance(player, b, "absolute")
|
||
);
|
||
});
|
||
player.line(list[0]);
|
||
game.swapSeat(list[0], player.getNext(), true, true);
|
||
}
|
||
}
|
||
},
|
||
mode: ["guozhan"],
|
||
ai: {
|
||
order: 6.5,
|
||
result: {
|
||
player: 1,
|
||
},
|
||
tag: {
|
||
draw: 1,
|
||
},
|
||
},
|
||
},
|
||
tianfuzhen: {
|
||
type: "zhenfa",
|
||
recastable: true,
|
||
enable: function () {
|
||
return game.hasPlayer(function (current) {
|
||
return current.isMajor();
|
||
});
|
||
},
|
||
filterTarget: function (card, player, target) {
|
||
return target.isMajor() && target.countCards("he") > 0;
|
||
},
|
||
selectTarget: -1,
|
||
content: function () {
|
||
target.chooseToDiscard("he", true).delay = false;
|
||
},
|
||
mode: ["guozhan"],
|
||
ai: {
|
||
order: 7,
|
||
result: {
|
||
target: -1,
|
||
},
|
||
tag: {
|
||
discard: 1,
|
||
},
|
||
},
|
||
},
|
||
dizaizhen: {
|
||
type: "zhenfa",
|
||
recastable: true,
|
||
enable: function () {
|
||
return game.hasPlayer(function (current) {
|
||
return current.isNotMajor();
|
||
});
|
||
},
|
||
filterTarget: function (card, player, target) {
|
||
return target.isNotMajor();
|
||
},
|
||
selectTarget: -1,
|
||
content: function () {
|
||
target.draw(false);
|
||
target.$draw();
|
||
},
|
||
mode: ["guozhan"],
|
||
ai: {
|
||
order: 7,
|
||
result: {
|
||
target: 1,
|
||
},
|
||
tag: {
|
||
draw: 1,
|
||
},
|
||
},
|
||
},
|
||
fengyangzhen: {
|
||
type: "zhenfa",
|
||
recastable: true,
|
||
enable: true,
|
||
filterTarget: function (card, player, target) {
|
||
return target.sieged();
|
||
},
|
||
selectTarget: -1,
|
||
content: function () {
|
||
target.addTempSkill("feiying", { player: "damageAfter" });
|
||
target.popup("feiying");
|
||
game.log(target, "获得了技能", "【飞影】");
|
||
},
|
||
mode: ["guozhan"],
|
||
ai: {
|
||
order: 7,
|
||
result: {
|
||
target: 2,
|
||
},
|
||
},
|
||
},
|
||
yunchuizhen: {
|
||
type: "zhenfa",
|
||
recastable: true,
|
||
enable: true,
|
||
filterTarget: function (card, player, target) {
|
||
return target.siege();
|
||
},
|
||
selectTarget: -1,
|
||
content: function () {
|
||
target.addTempSkill("wushuang", { source: "damageAfter" });
|
||
target.popup("wushuang");
|
||
game.log(target, "获得了技能", "【无双】");
|
||
},
|
||
mode: ["guozhan"],
|
||
ai: {
|
||
order: 7,
|
||
result: {
|
||
target: 2,
|
||
},
|
||
},
|
||
},
|
||
qixingzhen: {
|
||
type: "zhenfa",
|
||
recastable: true,
|
||
enable: function (card, player) {
|
||
return player.siege() || player.sieged();
|
||
},
|
||
filterTarget: function (card, player, target) {
|
||
return target == player;
|
||
},
|
||
selectTarget: -1,
|
||
content: function () {
|
||
"step 0";
|
||
event.targets = game.filterPlayer(function (current) {
|
||
return current.siege(player);
|
||
});
|
||
"step 1";
|
||
if (event.targets.length) {
|
||
var current = event.targets.shift();
|
||
player.line(current, "green");
|
||
player.discardPlayerCard(current, true);
|
||
event.redo();
|
||
}
|
||
"step 2";
|
||
var card = { name: "sha", isCard: true };
|
||
var list = game.filterPlayer(function (current) {
|
||
return current.siege(player) && player.canUse(card, current);
|
||
});
|
||
if (list.length) {
|
||
player.useCard(card, list, false);
|
||
}
|
||
},
|
||
mode: ["guozhan"],
|
||
ai: {
|
||
order: 7,
|
||
result: {
|
||
target: 1,
|
||
},
|
||
},
|
||
},
|
||
shepanzhen: {
|
||
type: "zhenfa",
|
||
recastable: true,
|
||
enable: function (card, player) {
|
||
if (player.identity == "unknown" || player.identity == "ye") return false;
|
||
if (get.population(player.identity) <= 1) return false;
|
||
return game.hasPlayer(function (current) {
|
||
return (
|
||
current != player &&
|
||
current.identity == player.identity &&
|
||
!player.inline(current)
|
||
);
|
||
});
|
||
},
|
||
notarget: true,
|
||
content: function () {
|
||
var targets = game.filterPlayer(function (current) {
|
||
return current.identity == player.identity;
|
||
});
|
||
targets.sortBySeat();
|
||
for (var i = 1; i < targets.length; i++) {
|
||
game.swapSeat(targets[i], targets[i - 1].next, false);
|
||
}
|
||
game.log(get.translation(player.identity) + "势力角色摆成了蛇蟠阵");
|
||
},
|
||
mode: ["guozhan"],
|
||
ai: {
|
||
order: 7,
|
||
result: {
|
||
player: 1,
|
||
},
|
||
},
|
||
},
|
||
longfeizhen: {
|
||
type: "zhenfa",
|
||
recastable: true,
|
||
enable: function (card, player) {
|
||
return player.next.siege(player);
|
||
},
|
||
filterTarget: function (card, player, target) {
|
||
if (target.getCards("he").length == 0) return false;
|
||
return target == player.next || target == player.previous;
|
||
},
|
||
selectTarget: -1,
|
||
content: function () {
|
||
"step 0";
|
||
player.choosePlayerCard(target, "he", true);
|
||
"step 1";
|
||
target.discard(result.buttons[0].link);
|
||
"step 2";
|
||
if (target == targets[targets.length - 1]) {
|
||
player.draw();
|
||
}
|
||
},
|
||
mode: ["guozhan"],
|
||
ai: {
|
||
order: 10,
|
||
result: {
|
||
target: -1,
|
||
player: 1,
|
||
},
|
||
},
|
||
},
|
||
huyizhen: {
|
||
type: "zhenfa",
|
||
recastable: true,
|
||
enable: function (card, player) {
|
||
return player.siege(player.next) || player.siege(player.previous);
|
||
},
|
||
filterTarget: function (card, player, target) {
|
||
return player.siege(target);
|
||
},
|
||
selectTarget: -1,
|
||
content: function () {
|
||
"step 0";
|
||
player.chooseCard(
|
||
"将一张非基本牌当作杀对" + get.translation(target) + "使用",
|
||
"he",
|
||
function (card) {
|
||
return get.type(card) != "basic";
|
||
}
|
||
).ai = function (card) {
|
||
if (get.effect(target, { name: "sha" }, player, player) > 0) {
|
||
return 6 - get.value(card);
|
||
}
|
||
return 0;
|
||
};
|
||
"step 1";
|
||
if (result.bool) {
|
||
player.useCard({ name: "sha" }, result.cards, target, false);
|
||
}
|
||
"step 2";
|
||
if (target == player.next) event.player2 = player.next.next;
|
||
else event.player2 = player.previous.previous;
|
||
event.player2.chooseCard(
|
||
"将一张非基本牌当作杀对" + get.translation(target) + "使用",
|
||
"he",
|
||
function (card) {
|
||
return get.type(card) != "basic";
|
||
}
|
||
).ai = function (card) {
|
||
if (get.effect(target, { name: "sha" }, event.player2, event.player2) > 0) {
|
||
return 6 - get.value(card);
|
||
}
|
||
return 0;
|
||
};
|
||
"step 3";
|
||
if (result.bool) {
|
||
event.player2.useCard({ name: "sha" }, result.cards, target, false);
|
||
}
|
||
},
|
||
mode: ["guozhan"],
|
||
ai: {
|
||
order: 7,
|
||
result: {
|
||
target: -2,
|
||
},
|
||
},
|
||
},
|
||
niaoxiangzhen: {
|
||
type: "zhenfa",
|
||
recastable: true,
|
||
enable: true,
|
||
filterTarget: function (card, player, target) {
|
||
if (player.identity == target.identity) return false;
|
||
if (target.identity == "unknown" || target.identity == "ye") return false;
|
||
return (
|
||
target.identity == target.next.identity || target.identity == target.previous.identity
|
||
);
|
||
},
|
||
selectTarget: -1,
|
||
content: function () {
|
||
"step 0";
|
||
var next = target.chooseToRespond({ name: "shan" });
|
||
next.ai = function (card) {
|
||
if (get.damageEffect(target, player, target) >= 0) return 0;
|
||
return 1;
|
||
};
|
||
next.autochoose = lib.filter.autoRespondShan;
|
||
"step 1";
|
||
if (result.bool == false) {
|
||
target.damage();
|
||
}
|
||
},
|
||
ai: {
|
||
basic: {
|
||
order: 9,
|
||
useful: 1,
|
||
},
|
||
result: {
|
||
target: -1.5,
|
||
},
|
||
tag: {
|
||
respond: 1,
|
||
respondShan: 1,
|
||
damage: 1,
|
||
},
|
||
},
|
||
mode: ["guozhan"],
|
||
},
|
||
},
|
||
skill: {},
|
||
translate: {
|
||
zhenfa: "阵法",
|
||
changshezhen: "长蛇阵",
|
||
pozhenjue: "破阵决",
|
||
tianfuzhen: "天覆阵",
|
||
dizaizhen: "地载阵",
|
||
fengyangzhen: "风扬阵",
|
||
yunchuizhen: "云垂阵",
|
||
qixingzhen: "七星阵",
|
||
shepanzhen: "蛇蟠阵",
|
||
shepanzhen_bg: "列",
|
||
yunchuizhen_bg: "垂",
|
||
longfeizhen: "龙飞阵",
|
||
huyizhen: "虎翼阵",
|
||
niaoxiangzhen: "鸟翔阵",
|
||
niaoxiangzhen_info: "令所有非你阵营的队列的角色今次打出一张闪,或者受到1点伤害。",
|
||
qixingzhen_info:
|
||
"弃置所有围攻你的角色各一张牌,然后视为对所有你围攻的角色使用一张不计入出杀次数的杀。",
|
||
// longfeizhen_info:'弃置围攻你的角色各一张牌,然后摸一张牌。',
|
||
// qixingzhen_info:'令我方所有角色进入围攻状态。',
|
||
// shepanzhen_info:'令我方所有角色进入队列状态。',
|
||
// yunchuizhen_info:'令所有围攻角色获得技能〖无双〗,直到其首次造成伤害。',
|
||
// fengyangzhen_info:'令所有被围攻角色获得技能〖飞影〗,直到其首次受到伤害。',
|
||
dizaizhen_info: "所有小势力角色摸一张牌。",
|
||
changshezhen_info:
|
||
"若你处于队列中,与你同一队列的所有角色摸一张牌,否则将与你逆时针距离最近的同势力角色移至你下家。",
|
||
// pozhenjue_info:'将所有角色的顺序随机重排。',
|
||
tianfuzhen_info: "所有大势力角色弃置一张牌。",
|
||
},
|
||
list: [
|
||
["diamond", 1, "changshezhen"],
|
||
["club", 1, "changshezhen"],
|
||
// ["spade",1,'changshezhen'],
|
||
// ["heart",1,'changshezhen'],
|
||
|
||
["diamond", 2, "tianfuzhen"],
|
||
// ["club",2,'tianfuzhen'],
|
||
["spade", 2, "tianfuzhen"],
|
||
["heart", 2, "tianfuzhen"],
|
||
|
||
["diamond", 3, "dizaizhen"],
|
||
// ["club",3,'dizaizhen'],
|
||
["spade", 3, "dizaizhen"],
|
||
["heart", 3, "dizaizhen"],
|
||
|
||
// ["diamond",4,'fengyangzhen'],
|
||
// ["club",4,'fengyangzhen'],
|
||
// ["spade",4,'fengyangzhen'],
|
||
// ["heart",4,'fengyangzhen'],
|
||
|
||
// ["diamond",5,'zhonghuangzhen'],
|
||
// ["club",5,'zhonghuangzhen'],
|
||
// ["spade",5,'zhonghuangzhen'],
|
||
// ["heart",5,'zhonghuangzhen'],
|
||
|
||
// ["diamond",6,'huyizhen'],
|
||
// ["club",6,'huyizhen'],
|
||
// ["spade",6,'huyizhen'],
|
||
// ["heart",6,'huyizhen'],
|
||
|
||
["diamond", 7, "qixingzhen"],
|
||
["club", 7, "qixingzhen"],
|
||
["spade", 7, "qixingzhen"],
|
||
// ["heart",7,'qixingzhen'],
|
||
|
||
// ["diamond",8,'shepanzhen'],
|
||
// ["club",8,'shepanzhen'],
|
||
// ["spade",8,'shepanzhen'],
|
||
// ["heart",8,'shepanzhen'],
|
||
|
||
// ["diamond",9,'longfeizhen'],
|
||
// ["club",9,'longfeizhen'],
|
||
// ["spade",9,'longfeizhen'],
|
||
// ["heart",9,'longfeizhen'],
|
||
|
||
["diamond", 11, "niaoxiangzhen"],
|
||
// ["club",11,'niaoxiangzhen'],
|
||
["spade", 11, "niaoxiangzhen"],
|
||
["heart", 11, "niaoxiangzhen"],
|
||
|
||
// ["diamond",12,'yunchuizhen'],
|
||
// ["club",12,'yunchuizhen'],
|
||
// ["spade",12,'yunchuizhen'],
|
||
// ["heart",12,'yunchuizhen'],
|
||
|
||
// ["diamond",13,'pozhenjue'],
|
||
// ["club",13,'pozhenjue'],
|
||
// ["spade",13,'pozhenjue'],
|
||
//["heart",13,'pozhenjue'],
|
||
],
|
||
};
|
||
});
|