noname/character/gwent.js

5007 lines
140 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 () {
2017-04-15 00:25:50 +00:00
return {
2024-04-15 18:10:02 +00:00
name: "gwent",
character: {
gw_huoge: ["male", "qun", 3, ["gwjinli"]],
gw_aisinie: ["female", "wu", 3, ["huihun"]],
gw_enxier: ["male", "wei", 4, ["gwbaquan"]],
2024-04-15 18:10:02 +00:00
gw_kaerweite: ["male", "shu", 4, ["gwjiquan"]],
gw_falanxisika: ["female", "wu", 3, ["shewu"]],
gw_haluo: ["male", "qun", 4, ["nuhou"]],
2024-04-15 18:10:02 +00:00
gw_airuiting: ["male", "wei", 4, ["kuanglie"]],
gw_laduoweide: ["male", "wei", 4, ["gwxiaoshou"]],
gw_dagong: ["male", "qun", 4, ["gwtianbian"]],
2024-04-15 18:10:02 +00:00
gw_bulanwang: ["male", "qun", 4, ["bolang"]],
gw_kuite: ["male", "qun", 4, ["gwxuezhan"]],
gw_fuertaisite: ["male", "wei", 3, ["zhengjun"]],
gw_hengsaite: ["male", "wei", 3, ["jielue"]],
gw_fulisi: ["male", "qun", 3, ["lanquan"]],
gw_gaier: ["male", "shu", 3, ["hunmo"]],
2024-04-15 18:10:02 +00:00
gw_jieluote: ["male", "qun", 6, ["fayin"]],
gw_yenaifa: ["female", "qun", 3, ["xuezhou"]],
gw_telisi: ["female", "wei", 3, ["huandie"]],
gw_xili: ["female", "wu", 3, ["fengjian"]],
gw_luoqi: ["male", "wei", 4, ["gwzhanjiang"]],
2019-06-07 03:46:13 +00:00
// gw_yioufeisi:['male','wu',4,['gwchuanxin']],
2024-04-15 18:10:02 +00:00
gw_aigeleisi: ["female", "wu", 3, ["gwshenyu"]],
gw_aokeweisite: ["male", "qun", 4, ["yunhuo"]],
gw_kaxier: ["male", "shu", 4, ["gwfengchi"]],
gw_luobo: ["male", "qun", 3, ["junchi"]],
gw_mieren: ["male", "shu", 3, ["lingji"]],
gw_sanhanya: ["male", "shu", 3, ["gwjinyan"]],
gw_shanhu: ["female", "qun", 3, ["shuijian"]],
gw_zhangyujushou: ["male", "wu", 4, ["gwjushi"]],
gw_zhuoertan: ["male", "wu", 3, ["hupeng"]],
2024-04-15 18:10:02 +00:00
gw_meizi: ["female", "wei", 3, ["gwjieyin"]],
gw_aimin: ["female", "wu", 3, ["huanshu"]],
gw_puxila: ["female", "qun", 3, ["gwqinwu"]],
2024-04-15 18:10:02 +00:00
gw_xigedelifa: ["female", "qun", 3, ["gwfusheng"]],
gw_laomaotou: ["male", "qun", 4, ["gwchenshui"]],
gw_qigaiwang: ["male", "qun", 4, ["julian"]],
2024-04-15 18:10:02 +00:00
gw_bierna: ["female", "qun", 3, ["gwfengshi"]],
gw_haizhiyezhu: ["male", "qun", 4, ["yangfan"]],
gw_nitelila: ["male", "wei", 4, ["shuangxi"]],
2024-04-15 18:10:02 +00:00
gw_linjing: ["male", "wu", 4, ["gwyewu"]],
gw_kanbi: ["male", "qun", 1, ["gwfutian"]],
gw_nvyemo: ["female", "shu", 3, ["gwgouhun"]],
2024-04-15 18:10:02 +00:00
gw_kairuisi: ["female", "qun", 3, ["gwweitu"]],
gw_oudimu: ["male", "shu", 3, ["gwjingshi"]],
gw_shasixiwusi: ["male", "qun", 4, ["gwjingtian"]],
2024-04-15 18:10:02 +00:00
gw_yioufeisisp: ["male", "wu", 3, ["gwminxiang"]],
gw_lanbote: ["male", "qun", 4, ["gwlangshi"]],
gw_fenghuang: ["male", "shu", 4, ["gwliaotian"]],
gw_diandian: ["male", "wu", 3, ["gwhuanbi"]],
gw_yisilinni: ["female", "wu", 3, ["gwhuanshuang"]],
gw_feilafanruide: ["male", "wei", 3, ["yinzhang"]],
2024-04-15 18:10:02 +00:00
gw_saqiya: ["female", "shu", 4, ["sqlongwu"]],
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
characterIntro: {
gw_huoge: "那个老年痴呆?不知道他是活着还是已经被制成标本了!",
gw_aisinie: "树精皇后有着熔银做成的眼睛,冰冷铸钢的心脏。",
gw_gaier: "画作应该要传达情绪,而不是字句。",
gw_enxier: "我可没什么耐心,最好小心点,否则脑袋不保",
2024-04-15 18:10:02 +00:00
gw_yenaifa: "魔法是艺术、混沌与科学的结合。因为魔法的确是一门技艺也是一种诅咒。",
gw_telisi: "我可以照顾我自己,相信我。",
gw_jieluote: "如果要付出这种代价才能拯救世界,那最好还是让世界消逝吧。",
gw_xili: "我想去哪,就去哪。",
gw_luoqi: "是个爱国者…还是个货真价实的王八蛋。",
gw_yioufeisi: "国王还是乞丐,两者有何区别,人类少一个算一个",
2017-04-15 00:25:50 +00:00
},
2024-02-05 16:26:11 +00:00
/** @type { importCharacterConfig['skill'] } */
2024-04-15 18:10:02 +00:00
skill: {
sqlongyin: {
trigger: { player: "phaseBeginStart" },
forced: true,
check() {
2019-06-07 03:46:13 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
init(player) {
player.storage.sqlongyin = "sqlongwu";
2019-06-07 03:46:13 +00:00
},
2024-04-15 18:10:02 +00:00
content() {
var list = ["sqlongnu", "sqlonghuo", "sqlongwu"];
var map = {
sqlongwu: "gw_saqiya",
sqlongnu: "gw_saqiya1",
sqlonghuo: "gw_saqiya2",
};
2019-06-07 03:46:13 +00:00
list.remove(player.storage.sqlongyin);
2024-04-15 18:10:02 +00:00
if (list.length == 2) {
var name = list.randomGet();
2019-06-07 03:46:13 +00:00
player.removeSkill(player.storage.sqlongyin);
player.addSkill(name);
2024-04-15 18:10:02 +00:00
player.storage.sqlongyin = name;
player.setAvatar("gw_saqiya", map[name]);
2019-06-07 03:46:13 +00:00
}
2024-04-15 18:10:02 +00:00
},
2019-06-07 03:46:13 +00:00
},
2024-04-15 18:10:02 +00:00
sqlongnu: {
group: "sqlongyin",
trigger: { player: "phaseBegin" },
frequent: true,
content() {
"step 0";
player.discoverCard(
ui.cardPile.childNodes,
function (button) {
var card = button.link;
var player = _status.event.player;
var value = get.value(card, player);
if (player.countCards("h", card.name)) {
value = Math.max(value, 9);
}
return value;
},
"nogain"
);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (
player.countCards("h", function (card) {
return card != result.card && card.name == result.card.name;
})
) {
event.current = result.card;
player
.chooseTarget("是否改为对一名角色造成1点火属性伤害")
.set("ai", function (target) {
return get.damageEffect(target, null, player, player, "fire");
});
} else {
player.gain(result.card, "draw");
2019-06-07 03:46:13 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.bool) {
var target = result.targets[0];
player.line(target, "fire");
target.damage("fire", "nocard");
2019-06-07 03:46:13 +00:00
// player.discoverCard(ui.cardPile.childNodes);
2024-04-15 18:10:02 +00:00
} else {
player.gain(event.current, "draw");
2019-06-07 03:46:13 +00:00
}
},
},
2024-04-15 18:10:02 +00:00
sqlonghuo: {
group: "sqlongyin",
enable: "phaseUse",
usable: 1,
filter(event, player) {
return player.countCards("h") > 0;
},
delay: false,
content() {
"step 0";
var hs = player.getCards("h");
player.discard(hs).set("delay", false);
event.hs = hs;
2024-04-15 18:31:36 +00:00
"step 1";
2019-06-07 03:46:13 +00:00
player.draw(event.hs.length);
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
var enemies = player.getEnemies();
for (var i = 0; i < enemies.length; i++) {
var hs = enemies[i].getCards("h");
var same = [];
for (var j = 0; j < hs.length; j++) {
for (var k = 0; k < event.hs.length; k++) {
if (hs[j].name == event.hs[k].name) {
2019-06-07 03:46:13 +00:00
same.push(hs[j]);
break;
}
}
}
2024-04-15 18:10:02 +00:00
if (same.length) {
enemies[i].discard(same.randomGet()).set("delay", false);
event.discarded = true;
player.line(enemies[i], "green");
2019-06-07 03:46:13 +00:00
}
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
if (event.discarded) {
2019-06-07 03:46:13 +00:00
game.delay();
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 5,
result: {
player: 1,
},
},
2019-06-07 03:46:13 +00:00
},
2024-04-15 18:10:02 +00:00
sqlongwu: {
group: "sqlongyin",
trigger: { player: "phaseEnd" },
frequent: true,
filter(event, player) {
return player.countCards("h") > 0;
},
content() {
"step 0";
var max = 1;
var map = {};
var hs = player.getCards("h");
for (var i = 0; i < hs.length; i++) {
var name = hs[i].name;
if (!map[name]) {
map[name] = 1;
} else {
2019-06-07 03:46:13 +00:00
map[name]++;
2024-04-15 18:10:02 +00:00
if (map[name] > max) {
max = map[name];
2019-06-07 03:46:13 +00:00
}
}
}
player.draw(max);
2024-04-15 18:31:36 +00:00
"step 1";
2019-06-07 03:46:13 +00:00
player.chooseToUse();
2024-04-15 18:10:02 +00:00
},
2019-06-07 03:46:13 +00:00
},
2024-04-15 18:10:02 +00:00
jielue: {
trigger: { player: "phaseUseBegin" },
filter(event, player) {
var list = player.getFriends();
for (var i = 0; i < list.length; i++) {
var hs = list[i].getCards("h");
for (var j = 0; j < hs.length; j++) {
if (player.hasUseTarget(hs[j])) {
2018-02-09 09:49:41 +00:00
return true;
}
}
}
return false;
},
2024-04-15 18:10:02 +00:00
forced: true,
content() {
"step 0";
var list = player.getFriends();
var cards = [];
for (var i = 0; i < list.length; i++) {
var hs = list[i].getCards("h");
var usables = [];
for (var j = 0; j < hs.length; j++) {
if (player.hasUseTarget(hs[j])) {
2018-02-09 09:49:41 +00:00
usables.push(hs[j]);
}
}
2024-04-15 18:10:02 +00:00
if (usables.length) {
2018-02-09 09:49:41 +00:00
cards.push(usables);
}
}
2024-04-15 18:10:02 +00:00
var touse = [];
var owners = [];
for (var i = 0; i < 2; i++) {
if (cards.length) {
var card = cards.randomRemove().randomRemove();
var owner = get.owner(card);
owner.lose(card, ui.special);
owner.$give(card, player);
player.line(owner, "green");
2018-02-09 09:49:41 +00:00
touse.push(card);
owners.push(owner);
}
}
2024-04-15 18:10:02 +00:00
event.touse = touse;
event.owners = owners;
2024-04-15 18:31:36 +00:00
"step 1";
2018-02-09 09:49:41 +00:00
game.delayx(1.5);
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.touse.length) {
player.chooseUseTarget(true, event.touse.shift(), null, false);
2018-02-09 09:49:41 +00:00
event.redo();
}
2024-04-15 18:31:36 +00:00
"step 3";
2018-02-09 09:49:41 +00:00
game.asyncDraw(event.owners);
2024-04-15 18:31:36 +00:00
"step 4";
2018-02-09 09:49:41 +00:00
game.delay();
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.5,
},
2018-02-09 09:49:41 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_hengsaite_sha: {
trigger: { global: "damageAfter" },
silent: true,
filter(event) {
return event.getParent(3).name == "gwmaoxian_hengsaite";
},
content() {
var card = game.createCard("sha");
2018-01-19 02:51:53 +00:00
player.gain(card);
player.$draw(card);
2024-04-15 18:10:02 +00:00
},
2018-01-19 02:51:53 +00:00
},
2024-04-15 18:10:02 +00:00
gwhuanshuang: {
trigger: { player: ["phaseBegin", "phaseEnd"] },
direct: true,
filter(event, player) {
return !player.hasSkill("gwhuanshuang_disable");
},
content() {
"step 0";
var list = [];
for (var i in lib.card) {
if (lib.card[i].subtype == "spell_bronze") list.push(i);
}
for (var i = 0; i < list.length; i++) {
if (!player.hasUseTarget(list[i])) {
list.splice(i--, 1);
2018-01-11 15:07:44 +00:00
}
}
2024-04-15 18:10:02 +00:00
if (!list.length) {
2018-01-11 15:07:44 +00:00
event.finish();
return;
}
2024-04-15 18:10:02 +00:00
var rand = get.rand();
var aozu = game.hasPlayer(function (current) {
return (
player.canUse("gw_aozuzhilei", current) &&
current.hp <= 3 &&
get.effect(current, { name: "gw_aozuzhilei" }, player, player) > 0
);
2018-01-11 15:07:44 +00:00
});
2024-04-15 18:10:02 +00:00
var aozu2 = game.hasPlayer(function (current) {
return (
player.canUse("gw_aozuzhilei", current) &&
current.hp <= 2 &&
get.effect(current, { name: "gw_aozuzhilei" }, player, player) > 0
);
2018-01-11 15:07:44 +00:00
});
2024-04-15 18:10:02 +00:00
var aozu3 = game.hasPlayer(function (current) {
return (
player.canUse("gw_aozuzhilei", current) &&
get.effect(current, { name: "gw_aozuzhilei" }, player, player) > 0
);
2018-01-11 15:07:44 +00:00
});
2024-04-15 18:10:02 +00:00
var baoxue = game.hasPlayer(function (current) {
return (
player.canUse("gw_baoxueyaoshui", current) &&
get.attitude(player, current) < 0 &&
[2, 3].includes(current.countCards("h")) &&
!current.hasSkillTag("noh")
);
2018-01-11 15:07:44 +00:00
});
2024-04-15 18:10:02 +00:00
var baoxue2 = game.hasPlayer(function (current) {
return (
player.canUse("gw_baoxueyaoshui", current) &&
get.attitude(player, current) < 0 &&
[2].includes(current.countCards("h")) &&
!current.hasSkillTag("noh")
);
2018-01-11 15:07:44 +00:00
});
2024-04-15 18:10:02 +00:00
var baoxue3 = game.hasPlayer(function (current) {
return (
player.canUse("gw_baoxueyaoshui", current) &&
get.attitude(player, current) < 0 &&
current.countCards("h") >= 2 &&
!current.hasSkillTag("noh")
);
2018-01-11 15:07:44 +00:00
});
2024-04-15 18:10:02 +00:00
var nongwu = game.hasPlayer(function (current) {
return (
get.attitude(player, current) < 0 &&
(get.attitude(player, current.getNext()) < 0 ||
get.attitude(player, current.getPrevious()) < 0)
);
2018-01-11 15:07:44 +00:00
});
2024-04-15 18:10:02 +00:00
var nongwu2 = game.hasPlayer(function (current) {
return (
get.attitude(player, current) < 0 &&
get.attitude(player, current.getNext()) < 0 &&
get.attitude(player, current.getPrevious()) < 0
);
2018-01-11 15:07:44 +00:00
});
2024-04-15 18:10:02 +00:00
var yanzi = game.hasPlayer(function (current) {
return get.attitude(player, current) > 0 && current.isMinHandcard();
2018-01-11 15:07:44 +00:00
});
2024-04-15 18:10:02 +00:00
player.chooseVCardButton(get.prompt("gwhuanshuang"), list.randomGets(3), "notype").ai =
function (button) {
var name = button.link[2];
switch (name) {
case "gw_ciguhanshuang":
if (nongwu2) return 3;
if (nongwu) return 1;
return 0;
case "gw_baoxueyaoshui":
if (baoxue2) return 2;
if (baoxue) return 1.5;
if (baoxue3) return 0.5;
return 0;
case "gw_aozuzhilei":
if (aozu2) return 2.5;
if (aozu) return 1.2;
if (aozu3) return 0.2;
return 0;
case "gw_yanziyaoshui":
if (yanzi) return 2;
return 0.6;
}
if (
game.hasPlayer(function (current) {
return (
player.canUse(name, current) &&
get.effect(current, { name: name }, player, player) > 0
);
})
) {
return Math.random();
}
return 0;
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("gwhuanshuang");
event.cardname = result.links[0][2];
player.chooseUseTarget(true, event.cardname);
player.addTempSkill("gwhuanshuang_disable");
2018-01-11 15:07:44 +00:00
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.cardname && player.hasUseTarget(event.cardname)) {
player.chooseUseTarget(true, event.cardname);
2018-01-11 15:07:44 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.6,
},
subSkill: {
disable: {},
2018-01-11 15:07:44 +00:00
},
},
2024-04-15 18:10:02 +00:00
gw_xianzumaijiu: {
trigger: { source: "damageEnd" },
filter(event) {
return event.card && event.card.name == "sha";
},
forced: true,
temp: true,
vanish: true,
onremove(player) {
if (player.node.jiu) {
2018-01-11 12:51:54 +00:00
player.node.jiu.delete();
player.node.jiu2.delete();
delete player.node.jiu;
delete player.node.jiu2;
}
},
2024-04-15 18:10:02 +00:00
content() {
var list = player.getFriends();
2018-01-11 12:51:54 +00:00
list.add(player);
game.asyncDraw(list);
2024-04-15 18:10:02 +00:00
player.removeSkill("gw_xianzumaijiu");
},
ai: {
damageBonus: true,
2018-01-11 12:51:54 +00:00
},
},
2024-04-15 18:10:02 +00:00
gwjinli: {
enable: "phaseUse",
usable: 1,
filterCard: true,
filterTarget(card, player, target) {
return !target.hasSkill("gwjinli_jiu");
},
check(card) {
return 8 - get.value(card);
},
content() {
target.addSkill("gwjinli_jiu");
},
subSkill: {
jiu: {
init(player) {
player.storage.gwjinli_jiu = 2;
2018-01-11 12:51:54 +00:00
},
2024-04-15 18:10:02 +00:00
onremove: true,
mark: "image",
intro: {
content: "结束阶段,随机获得一个正面效果;&个回合后将先祖麦酒收入手牌",
2018-01-11 12:51:54 +00:00
},
2024-04-15 18:10:02 +00:00
trigger: { player: "phaseEnd" },
forced: true,
content() {
"step 0";
2018-01-11 12:51:54 +00:00
player.getBuff();
2024-04-15 18:31:36 +00:00
"step 1";
2018-01-11 15:07:44 +00:00
player.storage.gwjinli_jiu--;
2024-04-15 18:10:02 +00:00
if (player.storage.gwjinli_jiu <= 0) {
player.removeSkill("gwjinli_jiu");
player.gain(game.createCard("gw_xianzumaijiu"), "gain2");
} else {
player.updateMark("gwjinli_jiu", true);
2018-01-11 12:51:54 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
ai: {
threaten: 1.5,
order: 2,
result: {
target(player, target) {
return 1 / (1 + target.hp) / Math.sqrt(1 + target.countCards("h"));
},
},
2018-01-11 15:07:44 +00:00
},
2018-01-11 12:51:54 +00:00
},
2024-04-15 18:10:02 +00:00
gwliaotian: {
enable: "phaseUse",
delay: 0,
usable: 2,
filter(event, player) {
var hs = player.getCards("h");
if (hs.length < 2) return false;
var color = get.color(hs[0]);
for (var i = 1; i < hs.length; i++) {
if (get.color(hs[i]) != color) return false;
2018-01-11 12:51:54 +00:00
}
return true;
},
2024-04-15 18:10:02 +00:00
content() {
"step 0";
player.recast(player.getCards("h", lib.filter.cardRecastable));
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
var targets = player.getEnemies();
if (targets.length) {
player.useCard({ name: "sha" }, targets.randomGet(), false);
2018-01-11 12:51:54 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 9,
result: {
player: 1,
},
},
2018-01-11 12:51:54 +00:00
},
2024-04-15 18:10:02 +00:00
gwhuanbi: {
enable: "phaseUse",
usable: 1,
filterCard: true,
position: "he",
check(card) {
return 8 - get.value(card);
},
content() {
"step 0";
player.chooseVCardButton(get.typeCard("gwmaoxian").randomGets(3), true, "选择一张冒险牌");
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
event.card = game.createCard(result.links[0][2]);
player.gain(event.card, "gain2");
} else {
2018-01-10 15:30:39 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
var list = game.filterPlayer(function (current) {
return current != player && current.countCards("h");
2018-01-10 15:30:39 +00:00
});
2024-04-15 18:10:02 +00:00
if (list.length) {
event.target = list.randomGet();
event.target
.chooseCard(
"h",
"是否交给" + get.translation(event.player) + "一张手牌并获得冒险牌?"
)
.set("ai", function (card) {
if (get.attitude(event.target, player) > 0) {
return 11 - get.value(card);
}
return 7 - get.value(card);
})
.set("promptx", [event.card]);
} else {
2018-01-10 15:30:39 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
if (result.bool) {
event.target.line(player, "green");
event.target.give(result.cards, player);
event.target.gain(game.createCard(event.card), "gain2");
2018-01-10 15:30:39 +00:00
}
2018-01-10 10:21:50 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 8,
result: {
player: 1,
},
},
2018-01-10 10:21:50 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_old: {
trigger: { global: "gameStart", player: ["enterGame", "phaseBefore"] },
forced: true,
filter(event, player) {
2018-01-10 10:21:50 +00:00
return !player.storage.gwmaoxian;
},
2024-04-15 18:10:02 +00:00
content() {
player.storage.gwmaoxian = 10;
player.storage.gwmaoxian_skill = [];
event.insert(lib.skill.gwmaoxian.learn, { player: player });
},
learn() {
var list = {
draw: {
bronze: [1, "准备阶段,你获得一张随机铜卡法术"],
basic: [1, "准备阶段,你从牌堆中获得一张杀"],
silver: [2, "结束阶段,你获得一张随机银卡法术"],
trick: [3, "结束阶段,你发现一张普通锦囊牌"],
gold: [3, "出牌阶段开始时,你获得一张随机金卡法术"],
equip: [3, "出牌阶段开始时,你在装备区内的空余位置装备一件随机装备"],
2018-01-10 10:21:50 +00:00
},
2024-04-15 18:10:02 +00:00
attack: {
sha: [1, "你可以将一张手牌当作杀使用"],
huogong: [1, "你可以将一张手牌当作火攻使用"],
aoe: [2, "出牌阶段限一次,你可以弃置两张牌,视为使用一张南蛮入侵"],
shas: [2, "每当你使用一张杀,你可以追加一名无视距离的目标"],
2018-01-10 10:21:50 +00:00
},
2024-04-15 18:10:02 +00:00
defend: {},
assist: {},
control: {},
};
},
2018-01-10 10:21:50 +00:00
},
2024-04-15 18:10:02 +00:00
gwminxiang_old: {
group: ["gwminxiang_count", "gwminxiang_clear", "gwminxiang_use"],
subSkill: {
count: {
trigger: { player: "phaseBegin" },
silent: true,
content() {
player.storage.gwminxiang = [];
},
2018-08-06 17:01:36 +00:00
},
2024-04-15 18:10:02 +00:00
clear: {
trigger: { player: "phaseAfter" },
silent: true,
content() {
2018-08-06 17:01:36 +00:00
delete player.storage.gwminxiang;
2024-04-15 18:10:02 +00:00
},
2018-08-06 17:01:36 +00:00
},
2024-04-15 18:10:02 +00:00
use: {
trigger: { player: "useCardAfter" },
silent: true,
filter(event, player) {
if (_status.currentPhase != player) return false;
var type = get.type(event.card);
if (type != "trick" && type != "basic") return false;
if (get.info(event.card).multitarget) return false;
if (!player.storage.gwminxiang) return false;
2018-08-06 17:01:36 +00:00
return true;
},
2024-04-15 18:10:02 +00:00
content() {
2018-08-06 17:01:36 +00:00
player.storage.gwminxiang.add(trigger.card);
2024-04-15 18:10:02 +00:00
},
},
2018-08-06 17:01:36 +00:00
},
2024-04-15 18:10:02 +00:00
trigger: { player: "phaseEnd" },
direct: true,
filter(event, player) {
if (player.storage.gwminxiang) {
for (var i = 0; i < player.storage.gwminxiang.length; i++) {
var card = player.storage.gwminxiang[i];
if (
game.countPlayer(function (current) {
return (
current != player && lib.filter.targetEnabled3(card, player, current)
);
}) > 1
) {
2018-08-06 17:01:36 +00:00
return true;
}
}
}
return false;
},
2024-04-15 18:10:02 +00:00
content() {
"step 0";
var list = [];
for (var i = 0; i < player.storage.gwminxiang.length; i++) {
var card = player.storage.gwminxiang[i];
if (
game.countPlayer(function (current) {
return current != player && lib.filter.targetEnabled3(card, player, current);
}) > 1
) {
2018-08-06 17:01:36 +00:00
list.push(card);
}
}
2024-04-15 18:10:02 +00:00
var skip = ["shunshou", "huogong", "shandianjian", "jiu"];
player.chooseCardButton(get.prompt("gwminxiang"), list).set("ai", function (button) {
if (skip.includes(button.link.name)) return 0;
var val = get.value(button.link);
if (get.tag(button.link, "damage")) {
val += 3;
2018-08-06 17:01:36 +00:00
}
return val;
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
var card = result.links[0];
event.card = card;
player
.chooseTarget(
"选择两个目标互相使用" + get.translation(event.card),
2,
function (cardx, player, target) {
return (
target != player && lib.filter.targetEnabled3(card, player, target)
);
}
)
.set("ai", function (target) {
if (ui.selected.targets.length) {
return get.effect(target, card, ui.selected.targets[0], player);
}
return get.effect(target, card, target, player);
})
.set("targetprompt", ["先出牌", "后出牌"]);
} else {
2018-08-06 17:01:36 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-08-06 17:01:36 +00:00
player.$throw(event.card);
2024-04-15 18:10:02 +00:00
player.logSkill("gwminxiang", result.targets);
event.target1 = result.targets[0];
event.target2 = result.targets[1];
2018-08-06 17:01:36 +00:00
game.delay();
2024-04-15 18:10:02 +00:00
} else {
2018-08-06 17:01:36 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
event.target1.useCard(event.card, event.target2, "noai");
2024-04-15 18:31:36 +00:00
"step 4";
2024-04-15 18:10:02 +00:00
if (event.target1.isIn() && event.target2.isIn()) {
event.target2.useCard(event.card, event.target1, "noai");
2018-08-06 17:01:36 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.4,
threaten: 1.6,
},
2018-08-06 17:01:36 +00:00
},
2024-04-15 18:10:02 +00:00
gwminxiang: {
enable: "phaseUse",
usable: 1,
filter(event, player) {
var hs = player.getCards("h");
var names = [];
for (var i = 0; i < hs.length; i++) {
if (["basic", "trick"].includes(get.type(hs[i])) && !get.info(hs[i]).multitarget) {
2018-01-10 10:21:50 +00:00
names.add(hs[i].name);
}
}
2024-04-15 18:10:02 +00:00
for (var i = 0; i < names.length; i++) {
if (
game.countPlayer(function (current) {
return (
current != player &&
lib.filter.targetEnabled3({ name: names[i] }, player, current)
);
}) > 1
) {
2018-01-10 10:21:50 +00:00
return true;
}
}
return false;
},
2024-04-15 18:10:02 +00:00
check(card) {
if (["shunshou", "huogong", "shandianjian", "jiu", "tianxianjiu"].includes(card.name))
return 0;
if (get.tag(card, "damage")) {
return get.value(card) + 2;
2018-01-10 10:21:50 +00:00
}
return get.value(card);
},
2024-04-15 18:10:02 +00:00
filterCard(card, player) {
if (!["basic", "trick"].includes(get.type(card))) return false;
return (
game.countPlayer(function (current) {
return (
current != player &&
lib.filter.targetEnabled3({ name: card.name }, player, current)
);
}) > 1
);
},
filterTarget(card, player, target) {
if (player == target || !ui.selected.cards.length) return false;
return lib.filter.targetEnabled3({ name: ui.selected.cards[0].name }, player, target);
},
targetprompt: ["先出牌", "后出牌"],
selectTarget: 2,
multitarget: true,
delay: 0,
content() {
"step 0";
2018-08-06 17:01:36 +00:00
player.draw();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
targets[0].useCard({ name: cards[0].name }, targets[1], "noai");
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (targets[0].isIn() && targets[1].isIn()) {
targets[1].useCard({ name: cards[0].name }, targets[0], "noai");
2018-01-10 10:21:50 +00:00
}
},
2018-08-06 17:01:36 +00:00
// group:'gwminxiang_draw',
2024-04-15 18:10:02 +00:00
multiline: true,
2018-08-06 17:01:36 +00:00
// subSkill:{
// draw:{
// trigger:{global:'damageAfter'},
// silent:true,
// filter(event,player){
2018-08-06 17:01:36 +00:00
// var evt=event.getParent(3);
// return evt.name=='gwminxiang'&&evt.player==player;
// },
// content(){
2018-08-06 17:01:36 +00:00
// trigger.getParent(3).draw+=trigger.num;
// }
// }
// },
2024-04-15 18:10:02 +00:00
ai: {
order: 8,
result: {
target(player, target) {
if (!ui.selected.cards.length) return 0;
return get.effect(target, { name: ui.selected.cards[0].name }, target, target);
},
2018-01-10 10:21:50 +00:00
},
2024-04-15 18:10:02 +00:00
expose: 0.4,
threaten: 1.6,
},
2018-01-10 10:21:50 +00:00
},
2024-04-15 18:10:02 +00:00
gwlangshi: {
trigger: { source: "damageEnd" },
direct: true,
filter(event, player) {
if (event.parent.name == "gwlangshi") return false;
return game.hasPlayer(function (current) {
return current != event.player && current != player && current.hp >= event.player.hp;
2018-01-10 10:21:50 +00:00
});
},
2024-04-15 18:10:02 +00:00
content() {
"step 0";
player
.chooseTarget(get.prompt2("gwlangshi"), function (card, player, target) {
return (
target != trigger.player && target != player && target.hp >= trigger.player.hp
);
})
.set("ai", function (target) {
return get.damageEffect(target, player, player);
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("gwlangshi", result.targets);
2018-01-10 10:21:50 +00:00
result.targets[0].damage(player);
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.5,
},
2018-01-10 10:21:50 +00:00
},
2024-04-15 18:10:02 +00:00
gwjingtian: {
clickable(player) {
player.addTempSkill("gwjingtian2");
2017-09-15 07:45:38 +00:00
player.directgain(get.cards());
player.$draw();
player.storage.gwjingtian--;
2024-04-15 18:10:02 +00:00
player.updateMark("gwjingtian", true);
player.logSkill("gwjingtian");
2024-03-04 02:25:52 +00:00
if (_status.imchoosing) {
delete _status.event._buttonChoice;
2017-09-15 07:45:38 +00:00
delete _status.event._cardChoice;
delete _status.event._targetChoice;
game.check();
}
},
2024-04-15 18:10:02 +00:00
clickableFilter(player) {
return player.storage.gwjingtian > 0 && !player.hasSkill("gwjingtian2");
2017-09-15 07:45:38 +00:00
},
2024-04-15 18:10:02 +00:00
init(player) {
player.storage.gwjingtian = 0;
2017-09-15 07:45:38 +00:00
},
2024-04-15 18:10:02 +00:00
trigger: { player: "phaseDrawBefore" },
forced: true,
content() {
2017-09-15 07:45:38 +00:00
trigger.cancel();
2024-04-15 18:10:02 +00:00
player.storage.gwjingtian += 3;
player.updateMark("gwjingtian", true);
},
group: "gwjingtian_ai",
mark: true,
intro: {
mark(dialog, content, player) {
if (player.isUnderControl(true)) {
if (
_status.gameStarted &&
player.storage.gwjingtian > 0 &&
!player.hasSkill("gwjingtian2")
) {
dialog.add(
ui.create.div(".menubutton.pointerdiv", "点击发动", function () {
if (!this.disabled) {
this.disabled = true;
this.classList.add("disabled");
this.style.opacity = 0.5;
lib.skill.gwjingtian.clickable(player);
}
})
);
2017-09-15 07:45:38 +00:00
}
2024-04-15 18:10:02 +00:00
var list = [];
var num = Math.min(9, ui.cardPile.childElementCount);
for (var i = 0; i < num; i++) {
2017-09-15 07:45:38 +00:00
list.push(ui.cardPile.childNodes[i]);
}
dialog.addSmall(list);
2024-04-15 18:10:02 +00:00
} else {
dialog.addText("剩余" + content + "次");
2017-09-15 07:45:38 +00:00
}
},
2024-04-15 18:10:02 +00:00
content(content, player) {
if (player.isUnderControl(true)) {
var list = [];
var num = Math.min(9, ui.cardPile.childElementCount);
for (var i = 0; i < num; i++) {
2017-09-15 07:45:38 +00:00
list.push(ui.cardPile.childNodes[i]);
}
return get.translation(list);
2024-04-15 18:10:02 +00:00
} else {
return "剩余" + content + "次";
2017-09-15 07:45:38 +00:00
}
2024-04-15 18:10:02 +00:00
},
2017-09-15 07:45:38 +00:00
},
2024-04-15 18:10:02 +00:00
subSkill: {
ai: {
trigger: { global: "drawAfter" },
filter(event, player) {
return (
(_status.auto || !player.isUnderControl(true)) &&
player.storage.gwjingtian > 0 &&
!player.hasSkill("gwjingtian2")
);
2017-09-15 07:45:38 +00:00
},
2024-04-15 18:10:02 +00:00
popup: false,
check(event, player) {
var value = 0,
card = ui.cardPile.firstChild;
if (card) {
value = get.value(card);
2017-09-15 07:45:38 +00:00
}
2024-04-15 18:10:02 +00:00
if (value >= 6) return true;
if (value >= 5 && get.type(card) != "equip" && player.storage.gwjingtian >= 3)
return true;
if (player.storage.gwjingtian > 3 && value > 3) return true;
2017-09-15 07:45:38 +00:00
return false;
},
2024-04-15 18:10:02 +00:00
content() {
2017-09-15 07:45:38 +00:00
lib.skill.gwjingtian.clickable(player);
2024-04-15 18:10:02 +00:00
},
},
},
2017-09-15 07:45:38 +00:00
},
2024-04-15 18:10:02 +00:00
gwjingtian2: {},
gwjingshi: {
enable: "phaseUse",
usable: 1,
2021-03-20 13:29:25 +00:00
//direct:true,
//delay:0,
2024-04-15 18:10:02 +00:00
filter(event, player) {
return game.hasPlayer(function (current) {
return current.countCards("h");
2017-09-15 07:45:38 +00:00
});
2024-04-15 18:10:02 +00:00
},
content() {
"step 0";
var targets = game.filterPlayer(function (current) {
return current.countCards("h");
2017-09-15 07:45:38 +00:00
});
2024-04-15 18:10:02 +00:00
var num = targets.length;
for (var i = 0; i < targets.length; i++) {
targets[i] = [targets[i], targets[i].countCards("h", { color: "black" })];
2017-09-15 07:45:38 +00:00
}
2024-04-15 18:10:02 +00:00
targets.sort(function (a, b) {
return b[1] - a[1];
2017-09-15 07:45:38 +00:00
});
2024-04-15 18:10:02 +00:00
for (var i = 1; i < targets.length; i++) {
if (targets[i][1] < targets[0][1]) {
targets.splice(i);
break;
}
}
for (var i = 0; i < targets.length; i++) {
targets[i] = targets[i][0];
}
event.targets = targets;
var rand = Math.random();
var choice = targets.randomGet();
player
.chooseTarget("猜测手牌中黑色牌最多的角色", true, function (card, player, target) {
return target.countCards("h");
})
.set("ai", function (target) {
if (rand < 0.6 || player == game.me) {
return target.isMaxHandcard() ? 1 : 0;
} else if (rand < 0.8) {
return target == choice ? 1 : 0;
} else {
return Math.random();
}
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.targets.includes(result.targets[0])) {
player.popup("成功");
game.log(player, "发动", "【血契】", "成功");
var dialog = ui.create.dialog("hidden");
dialog.add("获得任意一名角色的一张手牌");
var list = game
.filterPlayer(function (current) {
return current != player && current.countCards("h");
})
.sortBySeat();
for (var i = 0; i < list.length; i++) {
2017-09-15 07:45:38 +00:00
dialog.addText(get.translation(list[i]));
2024-04-15 18:10:02 +00:00
dialog.add(list[i].getCards("h"));
2017-09-15 07:45:38 +00:00
}
2024-04-15 18:10:02 +00:00
player.chooseButton(dialog, true).set("ai", function (button) {
if (get.attitude(player, get.owner(button.link)) > 0) return -1;
2017-09-15 07:45:38 +00:00
return get.value(button.link);
});
2024-04-15 18:10:02 +00:00
} else {
player.popup("失败");
game.log(player, "发动", "【血契】", "失败");
2017-09-15 07:45:38 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.bool && result.links && result.links.length) {
var owner = get.owner(result.links[0]);
if (owner) {
owner.give(result.links, player);
2017-09-15 07:45:38 +00:00
player.line(owner);
2024-04-15 18:10:02 +00:00
} else {
player.gain(result.links, "gain2");
2017-09-15 07:45:38 +00:00
}
}
2018-03-11 15:17:57 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 10,
result: {
player: 10,
},
},
2017-09-15 07:45:38 +00:00
},
2024-04-15 18:10:02 +00:00
gwweitu: {
trigger: { player: "discardAfter" },
forced: true,
filter(event, player) {
return player.hujia < 3;
2017-09-14 15:19:44 +00:00
},
2024-04-15 18:10:02 +00:00
content() {
2019-06-07 03:46:13 +00:00
player.changeHujia();
// var num=Math.min(trigger.cards.length,3-player.hujia);
// if(num>0){
// player.changeHujia();
// }
2017-09-14 15:19:44 +00:00
},
2024-04-15 18:10:02 +00:00
init(player) {
player.storage.gwweitu = 0;
2017-09-14 15:19:44 +00:00
},
2024-04-15 18:10:02 +00:00
intro: {
content: "护甲自上次计算起已抵挡#点伤害",
2017-09-14 15:19:44 +00:00
},
2024-04-15 18:10:02 +00:00
group: "gwweitu_gain",
subSkill: {
gain: {
trigger: { player: "changeHujiaAfter" },
filter: (event) => event.num < 0,
2024-04-15 18:10:02 +00:00
forced: true,
content() {
2018-04-17 07:32:43 +00:00
player.storage.gwweitu++;
2024-04-15 18:10:02 +00:00
if (player.storage.gwweitu >= 3) {
player.storage.gwweitu -= 3;
player.unmarkSkill("gwweitu");
var list = get.typeCard("spell_silver");
if (list.length) {
player.gain(game.createCard(list.randomGet()), "draw");
2017-09-14 15:19:44 +00:00
}
2024-04-15 18:10:02 +00:00
} else {
player.markSkill("gwweitu", true);
2017-09-14 15:19:44 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
2017-09-14 15:19:44 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 0.7,
effect: {
target(card, player, target, current) {
if (
get.tag(card, "discard") &&
target.hujia < 3 &&
target.countCards("he") &&
current < 0
) {
2017-09-14 15:19:44 +00:00
return 0;
}
},
2024-04-15 18:10:02 +00:00
player(card, player) {
if (player.hujia >= 3) return;
if (_status.event.name != "chooseToUse" || _status.event.player != player) return;
if (get.type(card) == "basic") return;
if (get.tag(card, "gain")) return;
if (get.value(card, player, "raw") >= 7) return;
if (player.needsToDiscard() > 1) return;
return "zeroplayertarget";
},
},
},
2017-09-14 15:19:44 +00:00
},
2024-04-15 18:10:02 +00:00
gwgouhun: {
enable: "phaseUse",
usable: 1,
filterCard: true,
discard: false,
prepare: "give",
filterTarget(card, player, target) {
return target != player && target.countCards("h") > 0;
},
check(card) {
return 7 - get.value(card);
},
content() {
"step 0";
target.gain(cards, player);
event.card = cards[0];
event.suit = get.suit(cards[0]);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
var hs = target.getCards("h");
var num1 = 0;
var num2 = 0;
for (var i = 0; i < hs.length; i++) {
if (get.suit(hs[i]) == event.suit) {
2017-08-27 06:00:44 +00:00
num1++;
2024-04-15 18:10:02 +00:00
} else {
2017-08-27 06:00:44 +00:00
num2++;
}
}
2024-04-15 18:10:02 +00:00
event.num1 = num1;
event.num2 = num2;
var list = [
"将手牌中的" + get.translation(event.suit) + "牌交给" + get.translation(player),
"弃置手牌中的非" + get.translation(event.suit) + "牌",
"进入混乱状态直到下一回合结束",
2017-08-27 06:00:44 +00:00
];
2024-04-15 18:10:02 +00:00
if (num1 && num2) {
target.chooseControlList(list, true, function () {
if (num1 > 2 && num2 > 3) {
2017-08-27 06:00:44 +00:00
return 2;
}
2024-04-15 18:10:02 +00:00
if (num1 > num2 / 2) {
2017-08-27 06:00:44 +00:00
return 1;
2024-04-15 18:10:02 +00:00
} else if (num1 < num2 / 2) {
2017-08-27 06:00:44 +00:00
return 0;
}
return get.rand(2);
});
2024-04-15 18:10:02 +00:00
} else if (num1) {
list.splice(1, 1);
target.chooseControlList(list, true, function () {
if (num1 > 2) return 1;
2017-08-27 06:00:44 +00:00
return 0;
});
2024-04-15 18:10:02 +00:00
} else if (num2) {
list.splice(0, 1);
target.chooseControlList(list, true, function () {
if (num2 > 3) return 1;
2017-08-27 06:00:44 +00:00
return 0;
});
2024-04-15 18:10:02 +00:00
} else {
target.goMad({ player: "phaseAfter" });
2017-08-27 06:00:44 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
var index = result.index;
var cards1 = target.getCards("h", function (card) {
return get.suit(card) == event.suit;
2017-08-27 06:00:44 +00:00
});
2024-04-15 18:10:02 +00:00
var cards2 = target.getCards("h", function (card) {
return get.suit(card) != event.suit;
2017-08-27 06:00:44 +00:00
});
2024-04-15 18:10:02 +00:00
if (typeof index == "number") {
if (event.num1 && event.num2) {
if (index == 0) {
target.give(cards1, player);
} else if (index == 1) {
2017-08-27 06:00:44 +00:00
target.discard(cards2);
2024-04-15 18:10:02 +00:00
} else {
target.goMad({ player: "phaseAfter" });
2017-08-27 06:00:44 +00:00
}
2024-04-15 18:10:02 +00:00
} else {
if (index == 1) {
target.goMad({ player: "phaseAfter" });
} else if (event.num1) {
target.give(cards1, player);
} else {
2017-08-27 06:00:44 +00:00
target.discard(cards2);
}
}
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.5,
order: 9,
result: {
target(player, target) {
return -Math.sqrt(target.countCards("h"));
},
},
},
2017-08-27 06:00:44 +00:00
},
2024-04-15 18:10:02 +00:00
gwfutian: {
trigger: { player: "damageBefore" },
forced: true,
content() {
2017-09-15 07:54:36 +00:00
trigger.cancel();
2017-08-27 04:44:18 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
nofire: true,
nothunder: true,
nodamage: true,
effect: {
target(card, player, target, current) {
if (get.tag(card, "damage")) return [0, 0];
},
2017-08-27 04:44:18 +00:00
},
},
2024-04-15 18:10:02 +00:00
init(player) {
player.storage.gwfutian = 0;
},
intro: {
content: "弃置的牌总点数:#",
},
unique: true,
onremove: true,
group: "gwfutian_discard",
subSkill: {
discard: {
trigger: { player: "phaseBegin" },
forced: true,
filter(event, player) {
return game.hasPlayer(function (current) {
return current != player && current.countCards("h");
2017-08-27 04:44:18 +00:00
});
},
2024-04-15 18:10:02 +00:00
content() {
"step 0";
player
.chooseTarget(
"覆天:弃置一名角色的一张手牌",
function (card, player, target) {
return target != player && target.countCards("h");
},
true
)
.set("ai", function (target) {
if (target.hasSkillTag("noh")) return 0;
return -get.attitude(player, target) / Math.sqrt(target.countCards("h"));
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
var target = result.targets[0];
player.discardPlayerCard(target, "h", true);
player.line(target, "green");
} else {
2017-08-27 04:44:18 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.bool && result.cards && result.cards.length) {
player.storage.gwfutian += get.number(result.cards[0]);
player.markSkill("gwfutian", true);
2017-08-27 04:44:18 +00:00
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
if (player.storage.gwfutian >= 24) {
player.$skill("覆天", "legend", "metal");
player.removeSkill("gwfutian");
player.addSkill("gwzhongmo");
player.setAvatar("gw_kanbi", "gw_hanmuduoer");
player.maxHp += 4;
player.hp = player.maxHp;
2017-08-27 04:44:18 +00:00
player.update();
}
2024-04-15 18:10:02 +00:00
},
},
},
2017-08-27 04:44:18 +00:00
},
2024-04-15 18:10:02 +00:00
gwzhongmo: {
trigger: { player: "phaseDrawBefore" },
forced: true,
content() {
2017-09-15 07:54:36 +00:00
trigger.cancel();
2024-04-15 18:10:02 +00:00
var list = ["bronze", "silver", "gold"];
2017-08-27 04:44:18 +00:00
list.randomRemove();
2024-04-15 18:10:02 +00:00
var cards = [];
for (var i = 0; i < list.length; i++) {
var list2 = get.typeCard("spell_" + list[i]);
if (list2.length) {
2017-08-27 04:44:18 +00:00
cards.push(game.createCard(list2.randomGet()));
}
}
2024-04-15 18:10:02 +00:00
if (cards.length) {
player.gain(cards, "draw2");
2017-08-27 04:44:18 +00:00
}
2024-04-15 18:10:02 +00:00
},
2017-08-27 04:44:18 +00:00
},
2024-04-15 18:10:02 +00:00
gwyewu: {
enable: "phaseUse",
usable: 1,
filter(event, player) {
if (!player.countCards("he")) return false;
var targets = player.getEnemies();
for (var i = 0; i < targets.length; i++) {
if (targets[i].countCards("he")) return true;
2017-08-05 02:13:01 +00:00
}
return false;
},
2024-04-15 18:10:02 +00:00
filterCard: true,
position: "h",
check(card) {
return 8 - get.value(card);
},
global: "g_gw_yewu",
content() {
"step 0";
event.targets = player.getEnemies();
event.color = get.color(cards[0]);
event.nh = 0;
event.ne = 0;
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
event.repeat = false;
var list = game.filterPlayer(function (current) {
return event.targets.includes(current) && current.countCards("he");
2017-08-05 02:13:01 +00:00
});
2024-04-15 18:10:02 +00:00
if (list.length) {
var target = list.randomGet();
var card = target.randomDiscard()[0];
player.line(target, "green");
if (get.position(card) == "e") {
2019-06-07 03:46:13 +00:00
event.ne++;
2024-04-15 18:10:02 +00:00
} else {
2019-06-07 03:46:13 +00:00
event.nh++;
}
2024-04-15 18:10:02 +00:00
if (card && get.color(card) == event.color) {
2017-08-05 02:13:01 +00:00
event.redo();
}
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
var togain = [];
for (var i = 0; i < event.nh; i++) {
togain.push(game.createCard("gw_wuyao"));
2017-08-05 02:13:01 +00:00
}
2024-04-15 18:10:02 +00:00
for (var i = 0; i < event.ne; i++) {
togain.push(game.createCard("gw_lang"));
2019-06-07 03:46:13 +00:00
}
2024-04-15 18:10:02 +00:00
player.gain(togain, "gain2");
},
ai: {
order: 8,
result: {
player: 1,
},
2017-08-05 02:13:01 +00:00
},
},
2024-04-15 18:10:02 +00:00
g_gw_yewu: {
trigger: { player: "phaseAfter" },
silent: true,
content() {
var cards = player.getCards("h", "gw_wuyao").concat(player.getCards("h", "gw_lang"));
if (cards.length) {
player.lose(cards).position = null;
2017-08-04 05:32:46 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
shuangxi: {
enable: "phaseUse",
round: 2,
filterTarget(card, player, target) {
if (player.getStat("damage")) {
return player.canUse("gw_baishuang", target);
} else {
return player.canUse("gw_ciguhanshuang", target);
2017-08-04 05:32:46 +00:00
}
},
// changeTarget(player,targets){
2017-08-04 05:32:46 +00:00
// if(!player.getStat('damage')){
// game.filterPlayer(function(current){
2018-04-17 07:32:43 +00:00
// return get.distance(targets[0],current,'pure')==1;
// },targets);
2017-08-04 05:32:46 +00:00
// }
// },
2024-04-15 18:10:02 +00:00
selectTarget() {
if (_status.event.player.getStat("damage")) {
return [1, 3];
} else {
2017-08-04 05:32:46 +00:00
return 1;
}
},
2024-04-15 18:10:02 +00:00
delay: 0,
multitarget: true,
multiline: true,
prompt() {
if (_status.event.player.getStat("damage")) {
return "视为使用一张【白霜】";
} else {
return "视为使用一张【刺骨寒霜】";
2017-08-04 05:32:46 +00:00
}
},
2024-04-15 18:10:02 +00:00
content() {
if (player.getStat("damage")) {
player.useCard({ name: "gw_baishuang" }, targets);
} else {
player.useCard({ name: "gw_ciguhanshuang" }, targets);
2017-08-04 05:32:46 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 1,
result: {
player(player, target) {
if (player.getStat("damage")) {
return get.effect(target, { name: "gw_baishuang" }, player, player);
} else {
return get.effect(target, { name: "gw_ciguhanshuang" }, player, player);
2017-08-04 05:32:46 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2017-08-04 05:32:46 +00:00
},
2024-04-15 18:10:02 +00:00
yangfan: {
trigger: { player: "useCard" },
forced: true,
filter: (event, player) =>
get.type(event.card) != "equip" &&
player.hasCard(
(card) => get.color(card) == get.color(event.card) && player.canRecast(card),
"h"
),
content() {
"step 0";
var cards = player.getCards(
"h",
(card) => get.suit(card) == get.suit(trigger.card) && player.canRecast(card)
);
if (!cards.length)
cards = player.getCards(
"h",
(card) => get.color(card) == get.color(trigger.card) && player.canRecast(card)
);
if (!cards.length) {
2017-08-03 23:34:11 +00:00
event.finish();
return;
}
2023-08-19 16:40:34 +00:00
player.recast(cards.randomGet());
2017-08-03 16:51:09 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
pretao: true,
},
2017-08-03 16:51:09 +00:00
},
2024-04-15 18:10:02 +00:00
gwfengshi: {
trigger: { player: "phaseEnd" },
direct: true,
content() {
"step 0";
player.chooseControlList(
get.prompt("gwfengshi"),
[
"为自己施加一个随机负面效果,并对两名随机敌人施加一个随机负面效果",
"为自己施加两个随机正面效果,并对一名随机敌人施加一个随机正面效果",
],
function () {
if (player.getEnemies().length < 2) return 1;
if (player.hp <= 1) return 1;
if (player.hp == 2 && Math.random() < 0.5) return 1;
return 0;
2017-08-03 16:51:09 +00:00
}
2024-04-15 18:10:02 +00:00
);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.index != 2) {
player.logSkill("gwfengshi");
if (result.index == 0) {
event.debuff = [player].addArray(player.getEnemies().randomGets(2));
} else {
event.buff = [player, player, player.getEnemies().randomGet()];
2017-08-03 16:51:09 +00:00
}
2024-04-15 18:10:02 +00:00
} else {
2017-08-03 16:51:09 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.debuff && event.debuff.length) {
player.line(event.debuff.shift().getDebuff(false).addExpose(0.1), "green");
2017-08-03 16:51:09 +00:00
event.redo();
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
if (event.buff && event.buff.length) {
player.line(event.buff.shift().getBuff(false).addExpose(0.1), "green");
2017-08-03 16:51:09 +00:00
event.redo();
}
2024-04-15 18:31:36 +00:00
"step 4";
2017-08-03 16:51:09 +00:00
game.delay();
2024-04-15 18:10:02 +00:00
},
2017-08-03 16:51:09 +00:00
},
2024-04-15 18:10:02 +00:00
gwchenshui: {
trigger: { player: "damageBefore", source: "damageBefore" },
forced: true,
init(player) {
player.storage.gwchenshui = 0;
},
mark: true,
intro: {
content(storage) {
if (!storage) {
return "未发动过沉睡效果";
} else {
return "累计发动过" + storage + "次沉睡效果";
2017-07-29 03:25:40 +00:00
}
2024-04-15 18:10:02 +00:00
},
2017-07-29 03:25:40 +00:00
},
2024-04-15 18:10:02 +00:00
logTarget(event, player) {
if (player == event.source) return event.player;
2017-07-29 03:25:40 +00:00
return event.source;
},
2024-04-15 18:10:02 +00:00
content() {
2017-09-15 07:54:36 +00:00
trigger.cancel();
2017-07-29 03:25:40 +00:00
player.storage.gwchenshui++;
player.updateMarks();
2024-04-15 18:10:02 +00:00
if (trigger.source != trigger.player && trigger.source.isIn() && trigger.player.isIn()) {
var cards = trigger.player.getCards("he");
if (cards.length) {
trigger.player.give(cards.randomGet(), trigger.source);
2017-07-29 03:25:40 +00:00
}
}
},
2024-04-15 18:10:02 +00:00
onremove: true,
group: "gwchenshui_juexing",
subSkill: {
juexing: {
trigger: { player: "phaseEnd" },
filter(event, player) {
return player.storage.gwchenshui >= 3;
2017-07-29 03:25:40 +00:00
},
2024-04-15 18:10:02 +00:00
skillAnimation: true,
animationStr: "觉醒",
forced: true,
content() {
"step 0";
player.removeSkill("gwchenshui");
player.setAvatar("gw_laomaotou", "gw_laomaotou2");
event.list = player.getEnemies().sortBySeat();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.list.length) {
var target = event.list.shift();
player.line(target, "green");
2017-07-29 03:25:40 +00:00
target.damage();
event.redo();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
player.addSkill("gwliedi");
},
},
2017-08-01 07:56:57 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 0.6,
effect: {
target(card, player, target) {
if (get.tag(card, "damage")) {
if (player.hasSkillTag("jueqing", false, target)) return;
if (!target.countCards("he")) return "zeroplayertarget";
2017-08-01 07:56:57 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2017-07-29 03:25:40 +00:00
},
2024-04-15 18:10:02 +00:00
gwliedi: {
trigger: { source: "damageBegin" },
forced: true,
filter(event, player) {
return event.player != player && player.distanceTo(event.player) >= 2;
},
content() {
trigger.num += Math.floor(Math.max(1, player.distanceTo(trigger.player)) / 2);
},
group: ["gwliedi_sleep", "gwliedi_damage"],
onremove: true,
subSkill: {
damage: {
trigger: { source: "damageEnd" },
silent: true,
filter(event, player) {
return event.player != player;
2017-08-01 07:56:57 +00:00
},
2024-04-15 18:10:02 +00:00
content() {
player.storage.gwliedi = -1;
2017-08-01 07:56:57 +00:00
},
},
2024-04-15 18:10:02 +00:00
sleep: {
trigger: { player: "phaseEnd" },
silent: true,
content() {
if (player.storage.gwliedi != 1) {
if (player.storage.gwliedi == -1) {
player.storage.gwliedi = 0;
} else {
player.storage.gwliedi = 1;
2017-08-01 07:56:57 +00:00
}
2024-04-15 18:10:02 +00:00
} else {
player.logSkill("gwliedi");
player.addSkill("gwchenshui");
player.removeSkill("gwliedi");
player.setAvatar("gw_laomaotou", "gw_laomaotou");
2017-08-01 07:56:57 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2017-07-29 03:25:40 +00:00
},
2024-04-15 18:10:02 +00:00
julian: {
trigger: { player: "phaseUseBegin" },
frequent: true,
filter(event, player) {
2017-07-28 09:19:16 +00:00
return !player.isMaxHandcard();
},
2024-04-15 18:10:02 +00:00
content() {
var num = 0;
for (var i = 0; i < game.players.length; i++) {
if (game.players[i] != player) {
num = Math.max(num, game.players[i].countCards("h"));
2017-07-28 09:19:16 +00:00
}
}
2024-04-15 18:10:02 +00:00
var dh = num - player.countCards("h");
if (dh > 0) {
2017-07-28 09:19:16 +00:00
player.draw(dh);
}
2024-04-15 18:10:02 +00:00
},
2017-07-28 09:19:16 +00:00
},
2024-04-15 18:10:02 +00:00
gwfusheng: {
enable: "chooseToUse",
filter(event, player) {
return event.type == "dying" && event.dying && !event.dying.isTurnedOver();
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filterTarget(card, player, target) {
return target == _status.event.dying;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
selectTarget: -1,
content() {
2017-07-28 08:21:24 +00:00
target.turnOver();
2018-04-17 07:32:43 +00:00
target.recover();
2024-04-15 18:10:02 +00:00
if (player != target) {
game.asyncDraw([player, target]);
} else {
2017-08-27 16:16:57 +00:00
player.draw(2);
2017-07-28 09:19:16 +00:00
}
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 0.1,
skillTagFilter(player) {
if (!_status.event.dying || _status.event.dying.isTurnedOver()) return false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
save: true,
result: {
target: 3,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.6,
2018-04-17 07:32:43 +00:00
},
},
2024-04-15 18:10:02 +00:00
gwqinwu: {
trigger: { player: "useCard" },
usable: 1,
filter(event, player) {
return get.type(event.card) == "basic";
},
direct: true,
content() {
"step 0";
player.chooseTarget(get.prompt2("gwqinwu")).ai = function (target) {
var att = get.attitude(player, target);
if (att <= 0) return 0;
if (att < 3) return att;
att = 10 - get.distance(player, target, "absolute") / game.players.length;
if (target.hasSkill("gwqinwu")) {
att /= 1.5;
}
if (target.hasJudge("lebu") || target.skipList.includes("phaseUse")) {
att /= 2;
2017-07-23 07:32:56 +00:00
}
return att;
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
var target = result.targets[0];
player.logSkill("gwqinwu", target);
2017-07-23 07:32:56 +00:00
target.draw();
2024-04-15 18:10:02 +00:00
if (!target.hasSkill("gwqinwu")) {
target.addTempSkill("gwqinwu", { player: "phaseAfter" });
target.addTempSkill("gwqinwu2", { player: "phaseAfter" });
2017-07-23 07:32:56 +00:00
}
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.5,
},
2017-07-23 07:32:56 +00:00
},
2024-04-15 18:10:02 +00:00
gwqinwu2: {
mark: true,
intro: {
content: "获得【琴舞】直到下一回合结束",
},
2017-07-23 07:32:56 +00:00
},
2024-04-15 18:10:02 +00:00
huanshu: {
trigger: { player: "phaseEnd" },
direct: true,
filter(event, player) {
return player.countCards("h") > 0 && !player.hasSkill("huangshu2");
},
content() {
"step 0";
player.chooseCard(get.prompt2("huanshu")).ai = function (card) {
return 6 - get.value(card);
2017-07-23 05:10:52 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.$give(result.cards, player);
player.logSkill("huanshu");
player.storage.huanshu2 = result.cards[0];
player.lose(result.cards, ui.special);
player.addSkill("huanshu2");
2017-07-23 05:10:52 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.4,
2017-07-23 05:10:52 +00:00
},
},
2024-04-15 18:10:02 +00:00
huanshu2: {
intro: {
content(storage, player) {
if (player.isUnderControl(true)) {
return (
"当一名敌方角色使用" +
get.translation(get.color(storage)) +
"锦囊牌时,移去" +
get.translation(storage) +
",取消锦囊的效果,并摸两张牌"
);
} else {
return "当一名敌方角色使用与“幻术”牌颜色相同的锦囊牌时,移去“幻术”牌,取消锦囊的效果,并摸两张牌";
2017-07-23 05:10:52 +00:00
}
},
2024-04-15 18:10:02 +00:00
onunmark(storage, player) {
if (storage) {
2017-07-23 05:10:52 +00:00
storage.discard();
delete player.storage.huanshu2;
}
2024-04-15 18:10:02 +00:00
},
2017-07-23 05:10:52 +00:00
},
2024-04-15 18:10:02 +00:00
trigger: { global: "useCard" },
forced: true,
filter(event, player) {
return (
player.getEnemies().includes(event.player) &&
get.type(event.card, "trick") == "trick" &&
get.color(event.card) == get.color(player.storage.huanshu2)
);
},
mark: true,
content() {
"step 0";
2017-11-07 10:41:45 +00:00
game.delayx();
2017-07-23 05:10:52 +00:00
player.addExpose(0.1);
trigger.player.addExpose(0.1);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
player.showCards(player.storage.huanshu2, get.translation(player) + "发动了【幻术】");
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
player.removeSkill("huanshu2");
2017-09-15 07:54:36 +00:00
trigger.cancel();
2017-07-23 05:10:52 +00:00
player.draw(2);
},
2024-04-15 18:10:02 +00:00
group: "huanshu3",
2017-07-23 05:10:52 +00:00
},
2024-04-15 18:10:02 +00:00
huanshu3: {
trigger: { player: "phaseBegin" },
forced: true,
content() {
2017-07-23 05:10:52 +00:00
player.$throw(player.storage.huanshu2);
2024-04-15 18:10:02 +00:00
game.log(player, "弃置了", player.storage.huanshu2);
player.removeSkill("huanshu2");
},
2017-07-23 05:10:52 +00:00
},
2024-04-15 18:10:02 +00:00
gwjieyin: {
group: "gwjieyin_reset",
init(player) {
player.storage.gwjieyin = [];
},
enable: "phaseUse",
filter(event, player) {
return player.storage.gwjieyin.length < 3;
},
chooseButton: {
dialog(event, player) {
return ui.create.dialog(
"结印",
[
[
["", "", "gw_wenyi"],
["", "", "gw_yanziyaoshui"],
["", "", "gw_kunenfayin"],
],
"vcard",
],
"hidden"
);
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
filter(button, player) {
if (player.storage.gwjieyin.includes(button.link[2])) {
2017-07-23 03:19:32 +00:00
return false;
}
return true;
},
2024-04-15 18:10:02 +00:00
check(button) {
var player = _status.event.player;
if (button.link[2] == "gw_yanziyaoshui") {
if (
game.hasPlayer(function (current) {
return get.attitude(player, current) > 1 && current.isMinHandcard();
})
) {
2017-07-23 03:19:32 +00:00
return 3;
2024-04-15 18:10:02 +00:00
} else if ((game.roundNumber - player.storage.gwjieyin_round) % 2 == 0) {
2017-07-23 03:19:32 +00:00
return 0;
2024-04-15 18:10:02 +00:00
} else {
2017-07-23 03:19:32 +00:00
return 0.5;
}
2024-04-15 18:10:02 +00:00
} else if (button.link[2] == "gw_wenyi") {
if (
game.countPlayer(function (current) {
if (current.isMinHp()) {
if (!current.countCards("h")) {
return -2 * get.sgn(get.attitude(player, current));
} else {
return -get.sgn(get.attitude(player, current));
}
2017-11-26 05:21:55 +00:00
}
2024-04-15 18:10:02 +00:00
}) > 0
) {
2017-07-23 03:19:32 +00:00
return 2;
2024-04-15 18:10:02 +00:00
} else {
2017-07-23 03:19:32 +00:00
return 0;
}
2024-04-15 18:10:02 +00:00
} else {
2017-07-23 03:19:32 +00:00
return 1;
}
},
2024-04-15 18:10:02 +00:00
backup(links, player) {
2018-04-17 07:32:43 +00:00
return {
2024-04-15 18:10:02 +00:00
filterCard() {
return false;
},
selectCard: -1,
viewAs: { name: links[0][2] },
popname: true,
onuse(result, player) {
player.logSkill("gwjieyin");
2017-07-23 03:19:32 +00:00
player.storage.gwjieyin.add(result.card.name);
2024-04-15 18:10:02 +00:00
},
};
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
prompt(links, player) {
return "选择" + get.translation(links[0][2]) + "的目标";
},
},
subSkill: {
reset: {
trigger: { player: "phaseBegin" },
silent: true,
content() {
if (typeof player.storage.gwjieyin_round == "number") {
var num = game.roundNumber - player.storage.gwjieyin_round;
if (num && num % 2 == 0) {
player.storage.gwjieyin.length = 0;
player.storage.gwjieyin_round = game.roundNumber;
2017-07-23 03:19:32 +00:00
}
2024-04-15 18:10:02 +00:00
} else {
player.storage.gwjieyin_round = game.roundNumber;
2017-07-23 03:19:32 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
ai: {
order: 6,
result: {
player: 1,
},
2017-07-23 03:19:32 +00:00
},
},
2024-04-15 18:10:02 +00:00
zhengjun: {
init(player) {
player.storage.zhengjun = [];
player.storage.zhengjun_one = [];
},
trigger: { player: "zhengjun" },
forced: true,
intro: {
content: "已经使用或打出过至少两张同名牌的牌有:$",
},
content() {
"step 0";
player.markSkill("zhengjun");
2017-07-21 13:20:45 +00:00
player.gainMaxHp();
2024-04-15 18:31:36 +00:00
"step 1";
2017-07-21 13:20:45 +00:00
player.recover();
},
2024-04-15 18:10:02 +00:00
group: ["zhengjun_one", "zhengjun_draw"],
subSkill: {
one: {
trigger: { player: ["useCard", "respondAfter"] },
silent: true,
content() {
if (player.storage.zhengjun_one.includes(trigger.card.name)) {
if (!player.storage.zhengjun.includes(trigger.card.name)) {
2017-07-21 13:20:45 +00:00
player.storage.zhengjun.add(trigger.card.name);
2024-04-15 18:10:02 +00:00
event.trigger("zhengjun");
2017-07-21 13:20:45 +00:00
}
2024-04-15 18:10:02 +00:00
} else {
2017-07-21 13:20:45 +00:00
player.storage.zhengjun_one.add(trigger.card.name);
}
2024-04-15 18:10:02 +00:00
},
2017-07-21 13:20:45 +00:00
},
2024-04-15 18:10:02 +00:00
draw: {
trigger: { player: "phaseEnd" },
frequent: true,
filter(event, player) {
return player.storage.zhengjun.length >= 1;
2017-07-21 13:20:45 +00:00
},
2024-04-15 18:10:02 +00:00
content() {
"step 0";
if (player.storage.zhengjun.length == 1) {
2017-07-21 14:44:03 +00:00
player.draw();
event.finish();
return;
}
2024-04-15 18:10:02 +00:00
event.cards = get.cards(player.storage.zhengjun.length);
player
.chooseCardButton("整军:获得其中一张牌", true, event.cards)
.set("ai", function (button) {
return get.useful(button.link);
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
var card = result.links[0];
2017-07-21 14:44:03 +00:00
card.fix();
2024-04-15 18:10:02 +00:00
player.gain(card, "draw");
2017-07-21 13:55:32 +00:00
event.cards.remove(card);
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
while (event.cards.length) {
ui.cardPile.insertBefore(event.cards.pop(), ui.cardPile.firstChild);
2017-07-21 13:55:32 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2017-07-21 13:20:45 +00:00
},
2024-04-15 18:10:02 +00:00
gwxuezhan: {
trigger: { player: "phaseBegin" },
filter(event, player) {
2017-07-21 13:20:45 +00:00
return player.isMinHandcard();
},
2024-04-15 18:10:02 +00:00
frequent: true,
content() {
player.gain(game.createCard("gw_shizizhaohuan"), "gain2");
2017-07-21 12:03:04 +00:00
},
2024-04-15 18:10:02 +00:00
},
jielue_old: {
trigger: { player: "useCard" },
frequent: true,
oncancel(event, player) {
player.addTempSkill("jielue2");
},
usable: 1,
filter(event, player) {
if (event.card.isCard) {
return (
!player.hasSkill("jielue2") &&
get.type(event.card) == "basic" &&
!event.card.storage.jielue
);
2018-02-09 09:49:41 +00:00
}
return false;
2017-07-21 12:03:04 +00:00
},
2024-04-15 18:10:02 +00:00
check(event, player) {
return get.value(event.card) > 3;
},
content() {
var card1 = game.createCard(trigger.card);
var card2 = game.createCard(trigger.card);
card1.storage.jielue = true;
card2.storage.jielue = true;
player.gain([card1, card2], "gain2");
2017-07-21 12:03:04 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
pretao: true,
2017-07-21 12:03:04 +00:00
},
},
2024-04-15 18:10:02 +00:00
jielue2: {},
bolang: {
trigger: { player: "phaseBegin" },
frequent: true,
init(player) {
player.storage.bolang = [];
},
content() {
"step 0";
var cards = [];
for (var i = 0; i < ui.cardPile.childElementCount; i++) {
2017-07-17 02:45:11 +00:00
cards.push(ui.cardPile.childNodes[i]);
}
2024-04-15 18:10:02 +00:00
player.chooseCardButton("搏浪:将至多三张牌移至弃牌堆", [1, 3], cards.slice(0, 6)).ai =
function (button) {
if (button.link == cards[0] || button.link == cards[1]) {
return get.value(button.link) - 5;
} else if (button.link == cards[4] || button.link == cards[5]) {
return get.value(button.link) / 5;
}
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
for (var i = 0; i < player.storage.bolang.length; i++) {
if (!player.storage.bolang[i].vanishtag.includes("bolang")) {
player.storage.bolang.splice(i--, 1);
2017-07-17 02:45:11 +00:00
}
}
player.storage.bolang.addArray(result.links);
2024-04-15 18:10:02 +00:00
for (var i = 0; i < result.links.length; i++) {
result.links[i].vanishtag.add("bolang");
2017-07-17 02:45:11 +00:00
result.links[i].discard();
}
}
},
2024-04-15 18:10:02 +00:00
group: "bolang_gain",
subSkill: {
gain: {
trigger: { source: "damageEnd" },
direct: true,
usable: 1,
filter(event, player) {
for (var i = 0; i < player.storage.bolang.length; i++) {
if (player.storage.bolang[i].vanishtag.includes("bolang")) {
2017-07-17 02:45:11 +00:00
return true;
}
}
},
2024-04-15 18:10:02 +00:00
content() {
"step 0";
var list = [];
for (var i = 0; i < player.storage.bolang.length; i++) {
if (player.storage.bolang[i].vanishtag.includes("bolang")) {
2017-07-17 02:45:11 +00:00
list.push(player.storage.bolang[i]);
}
}
2024-04-15 18:10:02 +00:00
player.chooseCardButton(true, list, get.prompt("bolang"));
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("bolang");
player.gain(result.links, "gain2");
2017-07-17 02:45:11 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2017-07-17 02:45:11 +00:00
},
2024-04-15 18:10:02 +00:00
gwjushi: {
enable: "phaseUse",
usable: 1,
filter(event, player) {
return !player.hasSkill("gwjushi2");
},
filterTarget(card, player, target) {
return (
target != player && get.distance(player, target) <= 1 && target.countCards("he") > 0
);
},
content() {
var hs = target.getCards("he");
if (hs.length) {
var card = hs.randomGet();
target.$give(card, player);
player.storage.gwjushi2 = card;
player.storage.gwjushi3 = target;
player.storage.gwjushi4 = get.position(card);
target.lose(card, ui.special);
player.addSkill("gwjushi2");
}
},
ai: {
order: 8,
result: {
target: -1,
},
},
2017-07-17 02:45:11 +00:00
},
2024-04-15 18:10:02 +00:00
gwjushi2: {
mark: "card",
intro: {
content: "受到伤害时,令此牌回归原位;准备阶段,你获得此牌",
},
trigger: { player: ["phaseBegin", "damageEnd"] },
forced: true,
content() {
var card = player.storage.gwjushi2;
var target = player.storage.gwjushi3;
if (trigger.name == "damage") {
if (target.isIn()) {
if (player.storage.gwjushi4 == "e" && get.type(card) == "equip") {
2017-07-17 02:45:11 +00:00
target.equip(card);
2024-04-15 18:10:02 +00:00
player.$give(card, target);
2017-07-17 02:45:11 +00:00
game.delay();
2024-04-15 18:10:02 +00:00
} else {
player.give(card, target);
2017-07-17 02:45:11 +00:00
}
2024-04-15 18:10:02 +00:00
} else {
2017-07-17 02:45:11 +00:00
card.discard();
}
2024-04-15 18:10:02 +00:00
} else {
player.gain(card, "gain2");
2017-07-17 02:45:11 +00:00
}
2024-04-15 18:10:02 +00:00
player.removeSkill("gwjushi2");
},
onremove: ["gwjushi2", "gwjushi3", "gwjushi4"],
ai: {
threaten: 1.5,
2017-07-17 02:45:11 +00:00
},
},
2024-04-15 18:10:02 +00:00
gwfengchi: {
trigger: { player: "phaseUseBegin" },
forced: true,
content() {
"step 0";
var list = get.gainableSkills(function (info) {
if (typeof info.enable == "string") return info.enable == "phaseUse";
if (Array.isArray(info.enable)) return info.enable.includes("phaseUse");
}, player);
2018-04-17 07:32:43 +00:00
list.remove(player.getSkills());
2024-04-15 18:10:02 +00:00
list = list.randomGets(3);
event.skillai = function () {
return get.max(list, get.skillRank, "item");
2018-04-17 07:32:43 +00:00
};
2024-04-15 18:10:02 +00:00
if (event.isMine()) {
var dialog = ui.create.dialog("forcebutton");
dialog.add("风驰:选择获得一项技能");
var clickItem = function () {
_status.event._result = this.link;
2018-04-17 07:32:43 +00:00
dialog.close();
game.resume();
};
2024-04-15 18:10:02 +00:00
for (var i = 0; i < list.length; i++) {
if (lib.translate[list[i] + "_info"]) {
var translation = get.translation(list[i]);
if (translation[0] == "新" && translation.length == 3) {
translation = translation.slice(1, 3);
} else {
translation = translation.slice(0, 2);
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:10:02 +00:00
var item = dialog.add(
'<div class="popup pointerdiv" style="width:80%;display:inline-block"><div class="skill">【' +
translation +
"】</div><div>" +
lib.translate[list[i] + "_info"] +
"</div></div>"
);
item.firstChild.addEventListener("click", clickItem);
item.firstChild.link = list[i];
2018-04-17 07:32:43 +00:00
}
}
2024-04-15 18:10:02 +00:00
dialog.add(ui.create.div(".placeholder"));
event.switchToAuto = function () {
event._result = event.skillai();
2018-04-17 07:32:43 +00:00
dialog.close();
game.resume();
};
2024-04-15 18:10:02 +00:00
_status.imchoosing = true;
2018-04-17 07:32:43 +00:00
game.pause();
2024-04-15 18:10:02 +00:00
} else {
event._result = event.skillai();
2018-04-17 07:32:43 +00:00
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
_status.imchoosing = false;
var link = result;
player.addTempSkill(link, "phaseUseAfter");
2018-04-17 07:32:43 +00:00
player.popup(link);
2024-04-15 18:10:02 +00:00
player.flashAvatar("gwfengchi", link);
game.log(player, "获得了技能", "【" + get.translation(link) + "】");
2018-04-17 07:32:43 +00:00
game.delay();
2024-04-15 18:10:02 +00:00
},
2017-07-16 15:34:51 +00:00
},
2024-04-15 18:10:02 +00:00
lingji: {
enable: "phaseUse",
usable: 1,
content() {
"step 0";
2017-05-18 22:15:32 +00:00
player.draw(2);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
player.chooseToDiscard("he", 2, true).ai = function (card) {
var val = -get.value(card);
if (ui.selected.cards.length) {
if (get.suit(card) == get.suit(ui.selected.cards[0])) val++;
if (get.number(card) == get.number(ui.selected.cards[0])) val += 3;
2017-05-18 22:15:32 +00:00
}
return val;
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.cards.length == 2) {
var list = [];
if (get.suit(result.cards[0]) == get.suit(result.cards[1])) {
var list1 = get.typeCard("spell_bronze");
if (list1.length) {
2017-05-18 22:15:32 +00:00
list.push(game.createCard(list1.randomGet()));
}
}
2024-04-15 18:10:02 +00:00
if (get.number(result.cards[0]) == get.number(result.cards[1])) {
var list2 = get.typeCard("spell_silver");
if (list2.length) {
2017-05-18 22:15:32 +00:00
list.push(game.createCard(list2.randomGet()));
}
}
2024-04-15 18:10:02 +00:00
if (list.length) {
player.gain(list, "gain2");
2017-05-18 22:15:32 +00:00
}
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 8,
result: {
player: 1,
},
},
2017-05-18 22:15:32 +00:00
},
2024-04-15 18:10:02 +00:00
gwjinyan: {
trigger: { player: ["damageBefore"] },
forced: true,
mark: true,
filter(event, player) {
return game.roundNumber % 3 != 0;
},
content() {
2017-09-15 07:54:36 +00:00
trigger.cancel();
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
group: ["gwjinyan_gain"],
subSkill: {
gain: {
trigger: { player: "phaseBegin" },
frequent: true,
filter() {
return game.roundNumber % 3 == 0;
2017-05-18 09:40:25 +00:00
},
2024-04-15 18:10:02 +00:00
content() {
var list = get.typeCard("spell_gold");
if (list.length) {
player.gain(game.createCard(list.randomGet()), "gain2");
2017-05-18 09:40:25 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
2017-05-18 09:40:25 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
threaten() {
if (game.roundNumber % 3 == 0) return 1.6;
2017-05-18 09:40:25 +00:00
return 0.8;
},
2024-04-15 18:10:02 +00:00
nofire: true,
nothunder: true,
nodamage: true,
skillTagFilter() {
if (game.roundNumber % 3 == 0) return false;
2017-08-03 04:15:31 +00:00
},
2024-04-15 18:10:02 +00:00
effect: {
target(card, player, target) {
if (game.roundNumber % 3 != 0 && get.tag(card, "damage")) {
return [0, 0];
2017-08-03 04:15:31 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2017-05-18 09:40:25 +00:00
},
2024-04-15 18:10:02 +00:00
gwshenyu: {
trigger: { player: "phaseBegin" },
direct: true,
filter(event, player) {
if (
game.hasPlayer(function (current) {
return current.isDamaged();
})
) {
2017-05-17 08:53:56 +00:00
return true;
}
2024-04-15 18:10:02 +00:00
for (var i = 0; i < ui.discardPile.childElementCount; i++) {
var card = ui.discardPile.childNodes[i];
if (card.vanishtag.includes("_gwshenyu")) continue;
if (get.type(card) == "spell" && get.subtype(card) != "spell_gold") {
2017-05-17 08:53:56 +00:00
return true;
}
}
return false;
2017-05-17 07:11:21 +00:00
},
2024-04-15 18:10:02 +00:00
content() {
"step 0";
var list = [];
for (var i = 0; i < ui.discardPile.childElementCount; i++) {
var card = ui.discardPile.childNodes[i];
if (card.vanishtag.includes("_gwshenyu")) continue;
if (get.type(card) == "spell" && get.subtype(card) != "spell_gold") {
2017-05-17 08:53:56 +00:00
list.push(card);
2017-05-17 07:11:21 +00:00
}
2017-05-17 08:53:56 +00:00
}
2024-04-15 18:10:02 +00:00
event.list = list;
player.chooseTarget(get.prompt("gwshenyu"), function (card, player, target) {
return list.length || target.isDamaged();
}).ai = function (target) {
var att = get.attitude(player, target);
if (att <= 0) return 0;
var num = 1;
if (player == target) {
num += 1;
2017-05-17 08:53:56 +00:00
}
2024-04-15 18:10:02 +00:00
if (target.hp == 1) {
num += 2;
2017-05-17 08:53:56 +00:00
}
2024-04-15 18:10:02 +00:00
return num * att;
2017-05-17 08:53:56 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("gwshenyu", result.targets);
event.target = result.targets[0];
if (!event.list.length) {
2017-05-17 08:53:56 +00:00
event.target.recover();
event.finish();
2024-04-15 18:10:02 +00:00
} else if (event.target.isHealthy()) {
event.directbool = true;
} else {
event.target
.chooseControl(function (event, player) {
if (player.hp >= 3 && !player.needsToDiscard()) return 1;
if (player.hp == 2 && player.hasShan() && player.countCards("h") <= 1)
return 1;
return 0;
})
.set("choiceList", ["回复1点体力", "从弃牌堆中获得一张非金法术"]);
}
} else {
2017-05-17 07:11:21 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (!event.directbool && result.index == 0) {
2017-05-17 08:53:56 +00:00
event.target.recover();
event.finish();
2017-05-17 07:11:21 +00:00
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
var list = event.list;
if (list.length) {
event.target.chooseCardButton("选择一张法术牌", list, true).ai = function (button) {
2017-05-17 07:11:21 +00:00
return get.value(button.link);
};
2024-04-15 18:10:02 +00:00
} else {
2017-05-17 07:11:21 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 4";
2024-04-15 18:10:02 +00:00
if (result.bool) {
result.links[0].vanishtag.add("_gwshenyu");
event.target.gain(result.links, "gain2", "log");
2017-05-17 07:11:21 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 2,
expose: 0.2,
2017-05-17 06:45:21 +00:00
},
2024-04-15 18:10:02 +00:00
},
junchi: {
trigger: { global: "shaAfter" },
direct: true,
usable: 1,
filter(event, player) {
return (
event.player != player &&
event.target != player &&
event.target.isIn() &&
player.hasCard(function (card) {
return player.canUse(card, event.target, false) && !get.info(card).multitarget;
})
);
},
content() {
var next = player
.chooseToUse(get.prompt("junchi"), trigger.target, -1)
.set("targetRequired", true);
next.prompt2 = "对" + get.translation(trigger.target) + "使用一张牌,并摸一张牌";
next.filterCard = function (card) {
return player.canUse(card, trigger.target, false) && !get.info(card).multitarget;
2017-05-17 06:45:21 +00:00
};
2024-04-15 18:10:02 +00:00
next.oncard = function () {
2017-05-17 06:45:21 +00:00
player.draw();
};
2024-04-15 18:10:02 +00:00
next.logSkill = "junchi";
},
subSkill: {
gold: {
trigger: { global: "useCardAfter" },
frequent: true,
filter(event, player) {
return event.player != player && get.subtype(event.card) == "spell_gold";
2017-05-17 06:45:21 +00:00
},
2024-04-15 18:10:02 +00:00
content() {
2017-05-17 06:45:21 +00:00
player.insertPhase();
2024-04-15 18:10:02 +00:00
},
},
2017-05-17 06:45:21 +00:00
},
2017-07-12 14:56:02 +00:00
// group:'junchi_gold'
2017-05-17 06:45:21 +00:00
},
2024-04-15 18:10:02 +00:00
junchi_old: {
trigger: { global: "shaAfter" },
forced: true,
popup: false,
filter(event, player) {
return (
event.player != player &&
event.target != player &&
event.player.isIn() &&
event.player.countCards("he") > 0
);
},
content() {
"step 0";
var att = get.attitude(trigger.player, player);
trigger.player.chooseCard("he", "是否交给" + get.translation(player) + "一张牌?").ai =
function (card) {
if (att > 1) {
if (trigger.target.isIn()) {
return 9 - get.value(card);
}
return 4 - get.value(card);
2017-05-17 06:45:21 +00:00
}
2024-04-15 18:10:02 +00:00
return 0;
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("junchi");
player.gain(result.cards, trigger.player);
if (get.position(result.cards[0]) == "h") {
trigger.player.$giveAuto(result.cards, player);
} else {
trigger.player.$give(result.cards, player);
2017-05-17 06:45:21 +00:00
}
trigger.player.addExpose(0.2);
2024-04-15 18:10:02 +00:00
trigger.player.line(player, "green");
} else {
2017-05-17 06:45:21 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (trigger.target.isIn()) {
var next = player
.chooseToUse(
"是否对" + get.translation(trigger.target) + "使用一张牌?",
trigger.target,
-1
)
.set("targetRequired", true);
next.filterCard = function (card) {
return player.canUse(card, trigger.target, false) && !get.info(card).multitarget;
2017-05-17 06:45:21 +00:00
};
2024-04-15 18:10:02 +00:00
next.oncard = function () {
2017-05-17 06:45:21 +00:00
player.recover();
trigger.player.draw();
2024-04-15 18:10:02 +00:00
};
2017-05-17 06:45:21 +00:00
}
2024-04-15 18:10:02 +00:00
},
2017-05-17 06:45:21 +00:00
},
2024-04-15 18:10:02 +00:00
hupeng: {
enable: "phaseUse",
usable: 1,
filter(event, player) {
return player.countCards("he") > 0;
},
filterCard: true,
check(card) {
return 7 - get.value(card);
},
filterTarget: true,
content() {
"step 0";
var att = get.attitude(player, target);
player.chooseVCardButton(
"选择令" + get.translation(target) + "获得的牌",
["gw_dudayuanshuai1", "gw_dudayuanshuai2"],
true
).ai = function (button) {
if (att > 0) {
return button.link[2] == "gw_dudayuanshuai1" ? 1 : -1;
} else {
return button.link[2] == "gw_dudayuanshuai2" ? 1 : -1;
2017-05-16 16:52:28 +00:00
}
2024-04-15 18:10:02 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
target.gain(game.createCard(result.links[0][2]), "gain2");
}
},
ai: {
threaten: 1.5,
order: 6,
result: {
target(player, target) {
var nh = target.countCards("h");
if (get.attitude(player, target) > 0) {
if (!nh) return 3;
if (!target.needsToDiscard(1)) {
if (nh == 1) return 2.5;
2017-05-16 16:52:28 +00:00
return 2;
}
2024-04-15 18:10:02 +00:00
if (!target.needsToDiscard()) return 1;
2017-05-16 16:52:28 +00:00
return 0.1;
2024-04-15 18:10:02 +00:00
} else {
if (!nh) return -0.05;
if (target.hp == 1) return -1;
if (target.hp == 2) return -2.5;
if (target.hp == 3) return -2;
2017-05-16 16:52:28 +00:00
return -0.5;
}
2024-04-15 18:10:02 +00:00
},
},
2017-05-16 16:52:28 +00:00
},
2024-04-15 18:10:02 +00:00
global: ["hupeng2", "hupeng3", "hupeng4"],
2017-05-16 16:52:28 +00:00
},
2024-04-15 18:10:02 +00:00
hupeng2: {
mod: {
cardDiscardable(card, player) {
if (card.name == "gw_dudayuanshuai2") return false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
cardEnabled(card, player) {
if (card.name == "gw_dudayuanshuai2") return false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
cardUsable(card, player) {
if (card.name == "gw_dudayuanshuai2") return false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
cardRespondable(card, player) {
if (card.name == "gw_dudayuanshuai2") return false;
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
cardSavable(card, player) {
if (card.name == "gw_dudayuanshuai2") return false;
2018-04-17 07:32:43 +00:00
},
2017-05-16 16:52:28 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
effect: {
target(card, player, target) {
if (
target.countCards("h", "gw_dudayuanshuai1") &&
get.attitude(player, target) < 0
) {
2017-05-16 16:52:28 +00:00
return 0.4;
}
2024-04-15 18:10:02 +00:00
},
},
},
2017-05-16 16:52:28 +00:00
},
2024-04-15 18:10:02 +00:00
hupeng3: {
trigger: { player: "phaseEnd" },
silent: true,
filter(event, player) {
return player.countCards("h", "gw_dudayuanshuai2") > 0;
},
content() {
var hs = player.getCards("h");
var hs2 = player.getCards("h", "gw_dudayuanshuai2");
2017-05-16 16:52:28 +00:00
hs.remove(hs2);
2024-04-15 18:10:02 +00:00
if (hs.length) {
2017-05-16 16:52:28 +00:00
hs2.addArray(hs.randomGets(hs2.length));
}
player.discard(hs2);
2024-04-15 18:10:02 +00:00
},
2017-05-16 16:52:28 +00:00
},
2024-04-15 18:10:02 +00:00
hupeng4: {
trigger: { target: "useCardToBefore" },
forced: true,
popup: false,
filter(event, player) {
if (event.player == player) return false;
var num = player.countCards("h", "gw_dudayuanshuai1");
return num > 0;
},
content() {
"step 0";
player
.chooseToUse(
{ name: "gw_dudayuanshuai1" },
"是否对" + get.translation(trigger.card) + "使用【杜达元帅】?"
)
.set("ai1", function (card) {
return _status.event.bool;
})
.set("bool", -get.effect(player, trigger.card, trigger.player, player));
trigger.gw_dudayuanshuai1 = true;
2024-04-15 18:31:36 +00:00
"step 1";
2017-05-16 16:52:28 +00:00
delete trigger.gw_dudayuanshuai1;
2024-04-15 18:10:02 +00:00
},
2017-05-16 16:52:28 +00:00
},
2024-04-15 18:10:02 +00:00
hunmo: {
enable: "phaseUse",
filter(event, player) {
return game.hasPlayer(function (current) {
return lib.skill.hunmo.filterTarget(null, player, current);
2017-05-15 17:44:43 +00:00
});
},
2024-04-15 18:10:02 +00:00
filterTarget(card, player, target) {
if (target == player) return false;
if (target.hasSkill("hunmo2")) return false;
var nh = player.countCards("h");
var nh2 = target.countCards("h");
if (nh < 2) return nh2 < 2;
return nh2 >= 2 && target.countDiscardableCards(player, "h") > 0;
},
prompt(event) {
var nh = event.player.countCards("h");
if (nh < 2)
return "选择一名手牌数小于2的其他角色观看牌堆顶的两张牌你获得一张并交给其另一张";
return "选择一名手牌数大于2的其他角色你弃置一张手牌然后观看并弃置其一张手牌";
},
content() {
"step 0";
target.addTempSkill("hunmo2");
var nh = player.countCards("h");
if (nh < 2) {
event.cards = get.cards(2);
player.chooseCardButton(
event.cards,
"获得一张牌并交给" + get.translation(target) + "另一张牌",
true
);
} else {
player.chooseToDiscard("h", true).delay = false;
event.discard = true;
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.discard) {
player.discardPlayerCard(target, "h", true, "visible");
} else {
if (result.links && result.links.length) {
player.gain(result.links, false);
2019-06-07 03:46:13 +00:00
event.cards.remove(result.links[0]);
2024-04-15 18:10:02 +00:00
target.gain(event.cards, false);
2019-06-07 03:46:13 +00:00
player.$drawAuto(result.links);
target.$drawAuto(event.cards);
}
2017-05-15 17:44:43 +00:00
}
2024-04-15 18:31:36 +00:00
"step 2";
2019-06-07 03:46:13 +00:00
game.delay();
2017-05-15 17:44:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order() {
var player = _status.event.player;
if (player.countCards("h") < 2) return 11;
2017-06-29 05:22:36 +00:00
return 6;
2017-06-07 07:36:48 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.2,
result: {
target(player, target) {
if (player.countCards("h") < 2) return 1;
if (
player.hasCard(function (card) {
return get.value(card) <= 5;
})
) {
2017-05-15 17:44:43 +00:00
return -1;
}
2024-04-15 18:10:02 +00:00
},
},
2017-06-29 05:22:36 +00:00
},
2019-06-07 03:46:13 +00:00
// group:'hunmo_draw',
2024-04-15 18:10:02 +00:00
subSkill: {
draw: {
trigger: { player: "phaseEnd" },
filter(event, player) {
return player.getStat("skill").hunmo >= 3;
2017-06-29 05:22:36 +00:00
},
2024-04-15 18:10:02 +00:00
frequent: true,
content() {
"step 0";
player.chooseTarget(get.prompt("魂墨造成1点伤害")).ai = function (target) {
return get.damageEffect(target, player, player);
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("hunmo_draw", result.targets);
2018-02-27 06:23:23 +00:00
result.targets[0].damage();
}
2024-04-15 18:10:02 +00:00
},
2017-06-29 05:22:36 +00:00
},
2024-04-15 18:10:02 +00:00
},
2017-05-15 17:44:43 +00:00
},
2024-04-15 18:10:02 +00:00
hunmo2: {},
hunmo3: {},
shuijian: {
trigger: { player: "phaseBegin" },
direct: true,
filter(event, player) {
return player.countCards("h") > 0;
},
content() {
"step 0";
var targets = player.getEnemies();
var num = 0;
for (var i = 0; i < targets.length; i++) {
num += get.sgn(get.effect(targets[i], { name: "wanjian" }, player, player));
}
event.targets = targets;
player.chooseToDiscard(get.prompt("shuijian")).set("ai", function (card) {
if (num >= 3) return 10 - get.value(card);
if (num >= 2) return 9 - get.value(card);
if (num >= 1) return 7 - get.value(card);
2017-05-13 08:56:28 +00:00
return 0;
2024-04-15 18:10:02 +00:00
}).logSkill = "shuijian";
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
for (var i = 0; i < event.targets.length; i++) {
2017-05-13 08:56:28 +00:00
event.targets[i].addExpose(0.1);
}
2024-04-15 18:10:02 +00:00
player.useCard({ name: "wanjian" }, event.targets);
2017-05-13 08:56:28 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.6,
},
2017-05-13 08:56:28 +00:00
},
2024-04-15 18:10:02 +00:00
yunhuo: {
trigger: { player: "phaseBegin" },
filter(event, player) {
return game.roundNumber % 4 == 0 && event.skill != "yunhuo";
},
forced: true,
content() {
"step 0";
2017-05-17 06:45:21 +00:00
player.insertPhase();
2024-04-15 18:10:02 +00:00
event.list = player.getEnemies().sortBySeat();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.list.length) {
var target = event.list.shift();
player.line(target, "fire");
if (target.countCards("h")) {
target.randomDiscard("h", false);
} else {
target.damage("fire");
2017-05-13 08:07:06 +00:00
}
event.redo();
}
2024-04-15 18:31:36 +00:00
"step 2";
2017-05-13 08:07:06 +00:00
game.delayx();
2024-04-15 18:10:02 +00:00
},
2017-05-13 08:07:06 +00:00
},
2024-04-15 18:10:02 +00:00
yinzhang: {
enable: "phaseUse",
usable: 1,
filterCard: true,
position: "he",
check(card) {
return 8 - get.value(card);
},
content() {
"step 0";
var list = get.typeCard("spell_silver").randomGets(3);
if (!list.length) {
2017-05-13 08:07:06 +00:00
event.finish();
return;
}
2024-04-15 18:10:02 +00:00
var dialog = ui.create.dialog("选择一张加入你的手牌", [list, "vcard"], "hidden");
player.chooseButton(dialog, true);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
player.gain(game.createCard(result.links[0][2]), "draw");
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 8,
threaten: 1.3,
result: {
player: 1,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
},
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
gwtianbian: {
trigger: { player: "phaseUseBegin" },
direct: true,
content() {
"step 0";
var num1 = 0,
num2 = 0;
2017-04-15 00:25:50 +00:00
var choice;
2024-04-15 18:10:02 +00:00
if (player.hasUnknown(2)) {
if (game.dead.length == 0) {
choice = "选项二";
} else {
choice = "cancel2";
}
} else {
game.countPlayer(function (current) {
var att = get.attitude(player, current);
if (att > 0) {
2017-04-15 00:25:50 +00:00
num1++;
2024-04-15 18:10:02 +00:00
} else if (att < 0) {
2017-04-15 00:25:50 +00:00
num2++;
}
});
2024-04-15 18:10:02 +00:00
choice = num1 > num2 ? "选项一" : "选项二";
}
player
.chooseControl("选项一", "选项二", "cancel2", function () {
return choice;
})
.set("prompt", get.prompt("gwtianbian"))
.set("choiceList", [
"随机使用一张对全场有正面效果的牌",
"随机使用一张对全场有负面效果的牌",
]);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.control != "cancel2") {
player.logSkill("gwtianbian");
var list = [];
for (var i in lib.card) {
if (
lib.inpile.includes(i) &&
lib.card[i].selectTarget == -1 &&
lib.card[i].type != "equip" &&
lib.card[i].ai &&
lib.card[i].ai.tag &&
lib.card[i].ai.tag.multitarget
) {
if (lib.card[i].ai.tag.multineg) {
if (result.control == "选项二") {
2017-04-15 00:25:50 +00:00
list.push(i);
}
2024-04-15 18:10:02 +00:00
} else {
if (result.control == "选项一") {
2017-04-15 00:25:50 +00:00
list.push(i);
}
2017-03-21 09:24:19 +00:00
}
}
}
2024-04-15 18:10:02 +00:00
var name = null;
while (list.length) {
name = list.randomRemove();
if (
game.hasPlayer(function (current) {
return player.canUse(name, current);
})
) {
2017-04-15 00:25:50 +00:00
break;
2024-04-15 18:10:02 +00:00
} else {
name = null;
2017-04-15 00:25:50 +00:00
}
2017-03-21 09:24:19 +00:00
}
2024-04-15 18:10:02 +00:00
if (name) {
var targets = game.filterPlayer(function (current) {
return player.canUse(name, current);
2017-04-15 00:25:50 +00:00
});
targets.sortBySeat();
2024-04-15 18:10:02 +00:00
player.useCard({ name: name }, targets);
2017-03-21 09:24:19 +00:00
}
}
2024-04-15 18:10:02 +00:00
},
2017-03-21 09:24:19 +00:00
},
2024-04-15 18:10:02 +00:00
gwxiaoshou: {
enable: "phaseUse",
usable: 2,
filterTarget(card, player, target) {
2017-05-12 08:05:59 +00:00
return target.isMaxHp();
2017-03-21 09:24:19 +00:00
},
2024-04-15 18:10:02 +00:00
check(card) {
return 7 - get.value(card);
},
position: "he",
filterCard: true,
content() {
2017-04-15 00:25:50 +00:00
target.damage();
},
2024-04-15 18:10:02 +00:00
ai: {
result: {
target(player, target) {
return get.damageEffect(target, player);
2017-04-15 00:25:50 +00:00
},
},
2024-04-15 18:10:02 +00:00
order: 7,
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
},
kuanglie: {
trigger: { player: "useCardToBegin" },
filter(event, player) {
return (
event.target &&
event.target != player &&
event.target.countCards("he") > 0 &&
get.color(event.card) == "black"
);
},
init(player) {
player.storage.kuanglie = 0;
},
forced: true,
content() {
2017-04-15 00:25:50 +00:00
trigger.target.randomDiscard();
player.storage.kuanglie++;
2024-04-15 18:10:02 +00:00
if (player.storage.kuanglie % 2 == 0) {
2017-04-15 00:25:50 +00:00
player.draw();
2017-03-11 16:19:35 +00:00
}
2024-04-15 18:10:02 +00:00
},
2017-03-11 16:19:35 +00:00
},
2024-04-15 18:10:02 +00:00
kuanglie2: {},
gwjiquan: {
enable: "phaseUse",
usable: 1,
filterTarget(card, player, target) {
return target != player && target.countCards("he") > 0;
},
selectTarget: [1, Infinity],
content() {
"step 0";
player.gainPlayerCard(target, "he", true);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
target.useCard({ name: "sha" }, player);
},
ai: {
threaten: 1.4,
order: 7,
result: {
target(player, target) {
if (
player.getEquip("tengjia") ||
player.hasSkillTag("freeShan", false, {
player: target,
card: new lib.element.VCard({ name: "sha" }),
})
)
return -1;
if (get.effect(player, { name: "sha" }, target, player) >= 0) return -1;
if (!player.hasShan()) {
if (ui.selected.targets.length) return 0;
if (player.hp >= 4) return -1;
if (player.hp >= 3 && target.hp == 1) return -1;
2017-04-15 00:25:50 +00:00
return 0;
}
2024-04-15 18:10:02 +00:00
var num = player.countCards("h", "shan");
if (num < 1) {
num = 1;
2017-04-15 00:25:50 +00:00
}
2024-04-15 18:10:02 +00:00
if (ui.selected.targets.length >= num) {
2017-04-15 00:25:50 +00:00
return 0;
}
return -1;
2024-04-15 18:10:02 +00:00
},
},
},
2017-03-11 16:19:35 +00:00
},
2024-04-15 18:10:02 +00:00
nuhou_old: {
enable: "phaseUse",
usable: 1,
position: "he",
filterCard: true,
check(card) {
return 7 - get.value(card);
},
content() {
"step 0";
var list = player.getEnemies();
2017-04-15 00:25:50 +00:00
list.sortBySeat();
2024-04-15 18:10:02 +00:00
event.list = list;
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.list.length) {
var current = event.list.shift();
var he = current.getCards("he");
player.line(current, "green");
if (he.length) {
2017-04-15 00:25:50 +00:00
current.discard(he.randomGet());
current.addExpose(0.2);
}
event.redo();
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 8.5,
result: {
player: 1,
2017-04-15 00:25:50 +00:00
},
2017-03-11 16:19:35 +00:00
},
},
2024-04-15 18:10:02 +00:00
nuhou: {
trigger: { player: "damageEnd" },
direct: true,
filter(event, player) {
return player.countCards("he") > 0;
},
content() {
"step 0";
player
.chooseToDiscard(get.prompt2("nuhou"), "he")
.set("ai", function (card) {
return 8 - get.useful(card);
})
.set("logSkill", "nuhou");
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
var targets = player.getEnemies();
if (targets.length) {
var target = targets.randomGet();
player.line(target, "green");
2017-07-21 12:03:04 +00:00
target.damage();
target.randomDiscard();
}
2018-04-17 07:32:43 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 0.8,
maixie: true,
maixie_hp: true,
maixie_defend: true,
effect: {
target(card, player, target) {
if (get.tag(card, "damage")) {
var nh = target.countCards("he");
if (player.hasSkillTag("jueqing", false, target) || nh == 0) return [1, -2];
if (!target.hasFriend() || nh <= 1) return;
if (target.hp >= 2) return [1, get.tag(card, "damage") * 0.5];
2017-07-21 12:03:04 +00:00
}
2024-04-15 18:10:02 +00:00
},
},
},
2017-07-21 12:03:04 +00:00
},
2024-04-15 18:10:02 +00:00
shewu: {
enable: "phaseUse",
usable: 1,
position: "he",
filterCard: true,
selectCard: [1, 3],
check(card) {
if (!ui.selected.cards.length) {
return 8 - get.value(card);
}
var player = _status.event.player;
if (player.isDamaged()) {
var hs = player.getCards("h");
var num = 0;
for (var i = 0; i < hs.length; i++) {
if (get.value(hs[i]) < 6) {
2017-04-15 00:25:50 +00:00
num++;
}
}
2024-04-15 18:10:02 +00:00
if (num >= 3) {
return 6 - get.value(card);
2017-03-11 16:19:35 +00:00
}
}
2017-04-15 00:25:50 +00:00
return 0;
},
2024-04-15 18:10:02 +00:00
content() {
2017-04-15 00:25:50 +00:00
player.draw(3);
2024-04-15 18:10:02 +00:00
if (cards.length >= 2) {
player.addTempSkill("shewu_dist");
2017-04-15 00:25:50 +00:00
}
2024-04-15 18:10:02 +00:00
if (cards.length == 3) {
2017-04-15 00:25:50 +00:00
player.recover();
2017-03-11 16:19:35 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
order: 4,
result: {
player: 1,
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.6,
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
subSkill: {
dist: {
mod: {
targetInRange() {
2017-04-15 00:25:50 +00:00
return true;
2024-04-15 18:10:02 +00:00
},
},
},
},
2017-03-02 16:46:02 +00:00
},
2024-04-15 18:10:02 +00:00
gwzhanjiang: {
trigger: { global: "phaseBegin" },
direct: true,
filter(event, player) {
return !player.hasSkill("gwzhanjiang2") && event.player != player;
},
content() {
"step 0";
var bool =
get.effect(trigger.player, { name: "sha" }, player, player) > 0 &&
Math.abs(get.attitude(player, trigger.player)) > 1 &&
game.hasPlayer(function (current) {
return get.attitude(current, player) > 0 && current.hasSha();
});
var next = player.chooseToDiscard(get.prompt("gwzhanjiang", trigger.player), "he");
next.ai = function (card) {
if (bool) return 7 - get.value(card);
2017-04-15 00:25:50 +00:00
return 0;
};
2024-04-15 18:10:02 +00:00
next.logSkill = ["gwzhanjiang", trigger.player];
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.addTempSkill("gwzhanjiang2", { player: "phaseBegin" });
event.targets = game.filterPlayer(function (current) {
return current != trigger.player;
2017-04-15 00:25:50 +00:00
});
event.targets.sortBySeat(trigger.player);
2024-04-15 18:10:02 +00:00
event.num = 0;
} else {
2017-04-15 00:25:50 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.targets.length) {
event.current = event.targets.shift();
if (event.current.hasSha()) {
event.current.chooseToUse(
{ name: "sha" },
"是否对" + get.translation(trigger.player) + "使用一张杀?",
trigger.player,
-1
).oncard = function (card, player) {
2017-05-17 06:45:21 +00:00
player.draw();
};
2024-04-15 18:10:02 +00:00
} else {
2017-04-15 00:25:50 +00:00
event.redo();
}
2024-04-15 18:10:02 +00:00
} else {
2017-05-05 09:45:46 +00:00
event.finish();
2017-03-22 07:59:16 +00:00
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2017-04-15 00:25:50 +00:00
event.num++;
2024-04-15 18:10:02 +00:00
if (event.num >= 2) {
2017-04-15 00:25:50 +00:00
return;
2017-04-06 01:54:08 +00:00
}
}
2017-04-15 00:25:50 +00:00
event.goto(2);
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.2,
threaten: 1.4,
2017-04-15 00:25:50 +00:00
},
2017-03-02 16:46:02 +00:00
},
2024-04-15 18:10:02 +00:00
gwzhanjiang2: {},
gwzhanjiang3: {
trigger: { player: "useCard" },
filter(event) {
return event.card.name == "sha" && event.getParent(2).name == "gwzhanjiang";
},
forced: true,
popup: false,
content() {
2017-04-15 00:25:50 +00:00
player.draw();
2024-04-15 18:10:02 +00:00
},
2017-04-06 01:54:08 +00:00
},
2024-04-15 18:10:02 +00:00
gwchuanxin_old: {
trigger: { player: "shaAfter" },
filter(event, player) {
if (player.storage.gwchuanxin && player.storage.gwchuanxin.length >= 4) return false;
2017-04-15 00:25:50 +00:00
return event.target.isAlive();
},
2024-04-15 18:10:02 +00:00
check(event, player) {
return get.effect(event.target, { name: "sha" }, player, player) > 0;
},
logTarget: "target",
logLine: false,
content() {
"step 0";
event.card = get.cards()[0];
player.showCards(
event.card,
get.translation(player) + "对" + get.translation(trigger.player) + "发动了【穿心】"
);
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (
player.storage.gwchuanxin &&
!player.storage.gwchuanxin.includes(get.suit(event.card))
) {
player.useCard({ name: "sha" }, [event.card], trigger.target, false);
}
},
group: ["gwchuanxin_count1", "gwchuanxin_count2"],
subSkill: {
count1: {
trigger: { global: "phaseBegin" },
silent: true,
content() {
player.storage.gwchuanxin = [];
},
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
count2: {
trigger: { player: "useCard" },
silent: true,
// filter(event){
2017-04-15 00:25:50 +00:00
// return event.card&&event.card.name=='sha';
// },
2024-04-15 18:10:02 +00:00
content() {
for (var i = 0; i < trigger.cards.length; i++) {
2017-04-15 00:25:50 +00:00
player.storage.gwchuanxin.add(get.suit(trigger.cards[i]));
}
2024-04-15 18:10:02 +00:00
},
},
},
ai: {
presha: true,
2017-04-15 00:25:50 +00:00
},
2017-03-02 13:06:03 +00:00
},
2024-04-15 18:10:02 +00:00
gwchuanxin: {
trigger: { player: "shaAfter" },
filter(event, player) {
2017-04-15 00:25:50 +00:00
return event.target.isAlive();
},
2024-04-15 18:10:02 +00:00
check(event, player) {
return get.effect(event.target, { name: "sha" }, player, player) > 0;
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
logTarget: "target",
2017-04-15 00:25:50 +00:00
// logLine:false,
2024-04-15 18:10:02 +00:00
content() {
"step 0";
var cards = get.cards();
player.showCards(cards, get.translation(player) + "发动了【穿心】");
event.bool = get.color(cards[0]) == "black";
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.bool) {
player.useCard({ name: "sha" }, trigger.target, false).animate = false;
}
},
mod: {
attackFrom(from, to, distance) {
return distance - from.hp + 1;
},
2017-04-15 00:25:50 +00:00
},
2017-03-02 13:06:03 +00:00
},
2024-04-15 18:10:02 +00:00
fengjian: {
trigger: { player: "useCard" },
direct: true,
filter(event, player) {
var type = get.type(event.card, "trick");
return (
type == "trick" &&
game.hasPlayer(function (current) {
return player.canUse("sha", current, false) && !event.targets.includes(current);
})
);
},
content() {
"step 0";
player.chooseTarget(get.prompt("fengjian"), function (card, player, target) {
return player.canUse("sha", target, false) && !trigger.targets.includes(target);
}).ai = function (target) {
return get.effect(target, { name: "sha", nature: "thunder" }, player, player);
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("fengjian");
if (!event.isMine()) {
2017-05-15 17:44:43 +00:00
game.delay();
}
2024-04-15 18:10:02 +00:00
player.useCard({ name: "sha", nature: "thunder" }, result.targets, false);
2019-06-07 03:46:13 +00:00
player.tempHide();
2017-04-15 00:25:50 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
expose: 0.2,
threaten: 1.5,
noautowuxie: true,
2017-04-15 00:25:50 +00:00
},
// group:'fengjian_hide',
// subSkill:{
// hide:{
// trigger:{source:'damageEnd'},
// forced:true,
// popup:false,
// filter(event,player){
2017-04-15 00:25:50 +00:00
// return event.getParent(3).name=='fengjian';
// },
// content(){
2019-06-07 03:46:13 +00:00
// player.tempHide();
2017-04-15 00:25:50 +00:00
// }
// }
// }
},
2024-04-15 18:10:02 +00:00
huandie: {
trigger: { player: "phaseBegin" },
direct: true,
content() {
"step 0";
player.chooseTarget(
get.prompt("huandie"),
[0, game.countPlayer()],
function (card, player, target) {
return target != player;
}
).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.bool) {
2017-04-15 00:25:50 +00:00
result.targets.sortBySeat();
result.targets.unshift(player);
2024-04-15 18:10:02 +00:00
player.logSkill("huandie", result.targets);
game.asyncDrawAuto(result.targets, function (current) {
return current == player ? 1 : 2;
2017-03-02 13:06:03 +00:00
});
2024-04-15 18:10:02 +00:00
player.addTempSkill("huandie_discard");
2017-04-15 00:25:50 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.5,
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
subSkill: {
discard: {
trigger: { player: "phaseEnd" },
forced: true,
filter(event, player) {
return game.hasPlayer(function (current) {
return current.countCards("h") > current.hp;
2017-04-15 00:25:50 +00:00
});
},
2024-04-15 18:10:02 +00:00
logTarget() {
return game
.filterPlayer(function (current) {
return current.countCards("h") > current.hp;
})
.sortBySeat();
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
content() {
"step 0";
var list = game
.filterPlayer(function (current) {
return current.countCards("h") > current.hp;
})
.sortBySeat();
event.list = list;
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.list.length) {
event.list.shift().chooseToDiscard("h", true, 2);
2017-04-15 00:25:50 +00:00
event.redo();
}
2024-04-15 18:10:02 +00:00
},
},
},
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
xuezhou: {
trigger: { player: "phaseBegin" },
direct: true,
unique: true,
forceunique: true,
intro: {
content(storage, player) {
var name = get.translation(player);
if (storage == 1) {
return (
"每当一名角色(" +
name +
"除外受到一次伤害该角色失去1点体力" +
name +
"回复1点体力"
);
} else if (storage == 2) {
return (
"每当一名角色(" +
name +
"除外造成一次伤害该角色失去1点体力" +
name +
"若不是受伤害角色回复1点体力"
);
} else {
return "未发动";
2017-04-15 00:25:50 +00:00
}
2024-04-15 18:10:02 +00:00
},
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
content() {
"step 0";
var next = player.chooseControl("选项一", "选项二", "cancel2", function () {
if (Math.random() < 0.65) return 0;
2017-04-15 00:25:50 +00:00
return 1;
});
2024-04-15 18:10:02 +00:00
next.prompt = get.prompt("xuezhou");
next.choiceList = [
"每当一名其他角色在一个回合中首次受到伤害该角色失去1点体力你回复1点体力",
"每当一名其他角色在一个回合中首次造成伤害该角色失去1点体力若不是受伤害角色回复1点体力",
2017-04-15 00:25:50 +00:00
];
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.control == "cancel2") {
player.unmarkSkill("xuezhou");
2017-04-15 00:25:50 +00:00
delete _status.xuezhou;
2024-04-15 18:10:02 +00:00
} else {
player.logSkill("xuezhou");
player.storage.xuezhou = result.index + 1;
player.syncStorage("xuezhou");
player.markSkill("xuezhou");
_status.xuezhou = player;
2017-03-02 13:06:03 +00:00
}
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 2.5,
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
global: "xuezhou_hp",
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
xuezhou_hp: {
trigger: { source: "damageEnd", player: "damageEnd" },
filter(event, player) {
if (!_status.xuezhou) return false;
if (player == _status.xuezhou) return false;
if (!player.isIn() || !_status.xuezhou.isIn()) return false;
if (_status.currentPhase.hasSkill("xuezhou_hp2")) return false;
switch (_status.xuezhou.storage.xuezhou) {
case 1:
return player == event.player;
case 2:
return player == event.source;
default:
return false;
}
},
silent: true,
content() {
"step 0";
2017-04-15 00:25:50 +00:00
game.delayx();
2024-04-15 18:10:02 +00:00
_status.currentPhase.addTempSkill("xuezhou_hp2");
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
_status.xuezhou.logSkill("xuezhou", player);
2017-04-15 00:25:50 +00:00
player.loseHp();
2024-04-15 18:10:02 +00:00
if (_status.xuezhou != trigger.player) {
2017-04-15 00:25:50 +00:00
_status.xuezhou.recover();
}
2024-04-15 18:10:02 +00:00
},
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
xuezhou_hp2: {},
fayin: {
trigger: { player: "shaBegin" },
direct: true,
filter(event, player) {
return player.countCards("he") > 0;
},
content() {
"step 0";
var target = trigger.target;
var bool = get.attitude(player, target) < 0;
var next = player.chooseToDiscard("he", get.prompt("fayin", target));
next.ai = function (card) {
if (bool) return 7 - get.value(card);
2017-04-15 00:25:50 +00:00
return 0;
};
2024-04-15 18:10:02 +00:00
next.logSkill = ["fayin", target];
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
var target = trigger.target;
var num = 5;
if (target.isMad()) {
num = 4;
}
switch (Math.floor(Math.random() * num)) {
case 0:
target.randomDiscard(2);
break;
case 1:
target.damage("fire");
break;
case 2:
player.changeHujia();
break;
case 3:
target.turnOver();
target.draw();
break;
case 4:
target.goMad({ player: "phaseBegin" });
break;
2017-04-15 00:25:50 +00:00
}
2017-03-02 13:06:03 +00:00
}
2024-04-15 18:10:02 +00:00
},
2017-03-02 13:06:03 +00:00
},
2024-04-15 18:10:02 +00:00
gwbaquan: {
enable: "phaseUse",
usable: 1,
filterTarget(card, player, target) {
return target != player && target.countCards("h") > 0;
},
content() {
"step 0";
var hs = target.getCards("h");
player.gain(hs, target);
target.$giveAuto(hs, player);
event.hs = hs;
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
var damage = target.hp >= player.hp && get.damageEffect(target, player, player) > 0;
var hs = event.hs;
if (damage && target.hp > 1) {
for (var i = 0; i < hs.length; i++) {
if (get.value(hs[i], player, "raw") >= 8) {
damage = false;
break;
2017-04-15 00:25:50 +00:00
}
2017-03-02 13:06:03 +00:00
}
}
2024-04-15 18:10:02 +00:00
player.chooseCard(hs.length, true, "选择还给" + get.translation(target) + "的牌").ai =
function (card) {
if (damage) {
return hs.includes(card) ? 1 : 0;
} else {
return -get.value(card, player, "raw");
}
};
if (!event.isMine()) game.delay();
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
target.gain(result.cards, player);
player.$giveAuto(result.cards, target);
event.hs2 = result.cards;
if (player.hp > target.hp) {
2017-04-15 00:25:50 +00:00
event.finish();
2017-03-02 13:06:03 +00:00
}
2024-04-15 18:31:36 +00:00
"step 3";
2024-04-15 18:10:02 +00:00
for (var i = 0; i < event.hs2.length; i++) {
if (!event.hs.includes(event.hs2[i])) return;
2017-03-02 13:06:03 +00:00
}
2017-04-15 00:25:50 +00:00
player.line(target);
target.damage();
},
2024-04-15 18:10:02 +00:00
ai: {
order: 11,
result: {
target(player, target) {
return -Math.sqrt(target.countCards("h"));
},
},
},
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
hunmo_old: {
enable: "phaseUse",
usable: 1,
filterTarget(card, player, target) {
return target.countCards("h") != Math.min(3, player.hp);
},
selectTarget: [1, 3],
content() {
var dh = Math.min(3, player.hp) - target.countCards("h");
if (dh > 0) {
target.draw(dh, false);
2017-03-21 09:24:19 +00:00
target.$draw(dh);
2017-04-15 00:25:50 +00:00
game.delay(0.5);
2024-04-15 18:10:02 +00:00
} else if (dh < 0) {
target.chooseToDiscard(-dh, true);
if (player != target) player.useCard({ name: "sha" }, target, false);
}
},
ai: {
order: 11,
result: {
target(player, target) {
var dh = Math.min(3, player.hp) - target.countCards("h");
if (dh < 0) {
dh += get.sgn(get.effect(target, { name: "sha" }, player, target));
2017-04-15 00:25:50 +00:00
}
return dh;
2024-04-15 18:10:02 +00:00
},
},
},
2017-03-02 16:46:02 +00:00
},
2024-04-15 18:10:02 +00:00
hunmo_old2: {
trigger: { player: ["phaseBegin", "phaseEnd"] },
direct: true,
content() {
"step 0";
player.chooseTarget(
get.prompt("hunmo"),
[1, game.countPlayer()],
function (card, player, target) {
return target.countCards("h") != Math.min(3, target.hp);
}
).ai = function (target) {
return (
get.attitude(player, target) * (Math.min(3, target.hp) - target.countCards("h"))
);
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.logSkill("hunmo", result.targets);
event.targets = result.targets.slice(0);
2017-04-15 00:25:50 +00:00
event.targets.sortBySeat();
2024-04-15 18:10:02 +00:00
} else {
2017-04-15 00:25:50 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.targets.length) {
var target = event.targets.shift();
var dh = Math.min(3, target.hp) - target.countCards("h");
if (dh > 0) {
target.draw(dh, false);
2017-04-15 00:25:50 +00:00
target.$draw(dh);
2024-04-15 18:10:02 +00:00
} else if (dh < 0) {
target.chooseToDiscard(-dh, true).delay = false;
2017-03-02 13:06:03 +00:00
}
2017-04-15 00:25:50 +00:00
game.delay(0.5);
event.redo();
}
2024-04-15 18:10:02 +00:00
},
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
huihun: {
trigger: { player: "phaseEnd" },
filter(event, player) {
if (!player.storage.huihun) return false;
for (var i = 0; i < player.storage.huihun.length; i++) {
if (get.position(player.storage.huihun[i]) == "d") return true;
2017-03-02 13:06:03 +00:00
}
2017-04-15 00:25:50 +00:00
return false;
2017-03-02 13:06:03 +00:00
},
2024-04-15 18:10:02 +00:00
frequent: true,
content() {
var list = [];
for (var i = 0; i < player.storage.huihun.length; i++) {
if (get.position(player.storage.huihun[i]) == "d") {
2017-04-15 00:25:50 +00:00
list.push(player.storage.huihun[i]);
2024-04-15 18:10:02 +00:00
if (list.length >= 2) break;
2017-04-15 00:25:50 +00:00
}
2017-03-02 13:06:03 +00:00
}
2024-04-15 18:10:02 +00:00
player.gain(list, "gain2", "log");
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
threaten: 1.8,
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
group: ["huihun_count", "huihun_count2"],
subSkill: {
count: {
trigger: { player: "useCard" },
silent: true,
filter(event, player) {
return _status.currentPhase == player;
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
content() {
if (!player.storage.huihun) {
player.storage.huihun = [];
2017-04-15 00:25:50 +00:00
}
2024-04-15 18:10:02 +00:00
for (var i = 0; i < trigger.cards.length; i++) {
if (get.color(trigger.cards[i]) == "red") {
2017-04-15 00:25:50 +00:00
player.storage.huihun.add(trigger.cards[i]);
}
}
2024-04-15 18:10:02 +00:00
},
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
count2: {
trigger: { player: "phaseAfter" },
silent: true,
content() {
2017-04-15 00:25:50 +00:00
delete player.storage.huihun;
2024-04-15 18:10:02 +00:00
},
},
},
2017-03-02 13:06:03 +00:00
},
2024-04-15 18:10:02 +00:00
lanquan: {
enable: "phaseUse",
usable: 1,
onChooseToUse(event) {
var cards = [];
var num = 6;
if (ui.cardPile.childNodes.length < num) {
var discardcards = get.cards(num);
for (var i = 0; i < discardcards.length; i++) {
2017-11-23 09:25:15 +00:00
discardcards[i].discard();
2017-04-15 00:25:50 +00:00
}
2017-03-02 13:06:03 +00:00
}
2024-04-15 18:10:02 +00:00
for (var i = 0; i < num; i++) {
2017-04-15 00:25:50 +00:00
cards.push(ui.cardPile.childNodes[i]);
}
2024-04-15 18:10:02 +00:00
event.set("lanquancards", cards);
2017-03-02 13:06:03 +00:00
},
2024-04-15 18:10:02 +00:00
chooseButton: {
dialog(event, player) {
return ui.create.dialog("选择一张牌使用", event.lanquancards);
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
filter(button, player) {
var evt = _status.event.getParent();
if (evt && evt.filterCard) {
var type = get.type(button.link, "trick");
return evt.filterCard(button.link, player, evt);
2017-04-15 00:25:50 +00:00
}
return false;
},
2024-04-15 18:10:02 +00:00
check(button) {
2017-04-15 00:25:50 +00:00
return get.value(button.link);
},
2024-04-15 18:10:02 +00:00
backup(links, player) {
2017-04-15 00:25:50 +00:00
return {
2024-04-15 18:10:02 +00:00
filterCard() {
return false;
},
selectCard: -1,
viewAs: links[0],
};
},
prompt(links, player) {
return "选择" + get.translation(links) + "的目标";
2017-04-15 00:25:50 +00:00
},
2017-03-02 13:06:03 +00:00
},
2024-04-15 18:10:02 +00:00
ai: {
order: 12,
result: {
player: 1,
2017-04-15 00:25:50 +00:00
},
2024-04-15 18:10:02 +00:00
threaten: 1.5,
},
2017-03-02 13:06:03 +00:00
},
},
2024-04-15 18:10:02 +00:00
card: {
gwjinli_jiu: {
fullimage: true,
gainable: false,
image: "card/gw_xianzumaijiu",
2018-01-11 12:51:54 +00:00
},
2024-04-15 18:10:02 +00:00
gw_xianzumaijiu: {
type: "special",
fullborder: "gold",
vanish: true,
derivation: "gw_huoge",
toself: true,
enable(event, player) {
return !player.hasSkill("gw_xianzumaijiu");
},
savable(card, player, dying) {
return dying == player;
},
usable: 1,
selectTarget: -1,
logv: false,
modTarget: true,
filterTarget(card, player, target) {
return target == player;
},
content() {
"step 0";
if (target.isDying()) target.recover();
else {
target.addTempSkill("gw_xianzumaijiu", ["phaseAfter", "shaAfter"]);
if (cards && cards.length) {
card = cards[0];
}
if (
target == targets[0] &&
card.clone &&
(card.clone.parentNode == player.parentNode || card.clone.parentNode == ui.arena)
) {
2018-01-11 12:51:54 +00:00
card.clone.moveDelete(target);
2024-04-15 18:10:02 +00:00
game.addVideo("gain2", target, get.cardsInfo([card]));
2018-01-11 12:51:54 +00:00
}
2024-04-15 18:10:02 +00:00
if (!target.node.jiu && lib.config.jiu_effect) {
target.node.jiu = ui.create.div(".playerjiu", target.node.avatar);
target.node.jiu2 = ui.create.div(".playerjiu", target.node.avatar2);
2018-01-11 12:51:54 +00:00
}
}
},
2024-04-15 18:10:02 +00:00
ai: {
basic: {
useful(card, i) {
if (_status.event.player.hp > 1) {
if (i == 0) return 5;
2018-01-11 12:51:54 +00:00
return 1;
}
2024-04-15 18:10:02 +00:00
if (i == 0) return 7.3;
2018-01-11 15:07:44 +00:00
return 4;
2018-01-11 12:51:54 +00:00
},
2024-04-15 18:10:02 +00:00
value(card, player, i) {
if (player.hp > 1) {
if (i == 0) return 5;
2018-01-11 12:51:54 +00:00
return 1;
}
2024-04-15 18:10:02 +00:00
if (i == 0) return 7.3;
2018-01-11 15:07:44 +00:00
return 4;
2018-01-11 12:51:54 +00:00
},
},
2024-04-15 18:10:02 +00:00
order() {
return get.order({ name: "sha" }) + 0.2;
2018-01-11 12:51:54 +00:00
},
2024-04-15 18:10:02 +00:00
result: {
target(player, target) {
if (target && target.isDying()) return 2;
if (lib.config.mode == "stone" && !player.isMin()) {
if (player.getActCount() + 1 >= player.actcount) return false;
2018-01-11 12:51:54 +00:00
}
2024-04-15 18:10:02 +00:00
var shas = player.getCards("h", "sha");
if (shas.length > 1 && player.getCardUsable("sha") > 1) {
2018-01-11 12:51:54 +00:00
return 0;
}
var card;
2024-04-15 18:10:02 +00:00
if (shas.length) {
for (var i = 0; i < shas.length; i++) {
if (lib.filter.filterCard(shas[i], target)) {
card = shas[i];
break;
2018-01-11 12:51:54 +00:00
}
}
2024-04-15 18:10:02 +00:00
} else if (player.hasSha()) {
card = { name: "sha" };
2018-01-11 12:51:54 +00:00
}
2024-04-15 18:10:02 +00:00
if (card) {
if (
game.hasPlayer(function (current) {
return (
!current.hujia &&
get.attitude(target, current) < 0 &&
target.canUse(card, current, true, true) &&
get.effect(current, card, target) > 0
);
})
) {
2018-01-11 12:51:54 +00:00
return 1;
}
}
return 0;
},
},
2024-04-15 18:10:02 +00:00
},
2018-01-11 12:51:54 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_yioufeisi: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_yioufeisisp",
enable() {
return game.countPlayer() > 2;
},
filterTarget(card, player, target) {
return target != player;
},
selectTarget: 2,
multitarget: true,
multiline: true,
content() {
"step 0";
targets[0].useCard({ name: "sha" }, targets[1], "noai");
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (targets[0].isIn() && targets[1].isIn()) {
targets[1].useCard({ name: "sha" }, targets[0], "noai");
}
},
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
}
},
ai: {
value: 10,
order: 1,
result: {
target(player, target) {
return get.effect(target, { name: "sha" }, target, target);
},
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_luoqi: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_luoqi",
enable: true,
filterTarget(card, player, target) {
return player.canUse("sha", target, false);
},
content() {
"step 0";
player.useCard({ name: "sha" }, target, false).animate = false;
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
event.targets = game.filterPlayer(function (current) {
return current.canUse("sha", target, false) && current != player;
2018-01-10 15:30:39 +00:00
});
event.targets.sortBySeat();
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.targets.length && target.isIn()) {
event.current = event.targets.shift();
if (event.current.hasSha()) {
event.current.chooseToUse(
{ name: "sha" },
"是否对" + get.translation(target) + "使用一张杀?",
target,
-1
);
2018-01-10 15:30:39 +00:00
}
event.redo();
}
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
target(player, target) {
return get.effect(target, { name: "sha" }, player, target);
},
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_jieluote: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_jieluote",
enable: true,
filterTarget: true,
content() {
if (target.isMaxHp() && target.hp > 2) {
2018-01-10 15:30:39 +00:00
target.damage(2);
2024-04-15 18:10:02 +00:00
} else {
2018-01-10 15:30:39 +00:00
target.damage();
}
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
tag: {
damage: 1,
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
result: {
player(player, target) {
var eff = get.damageEffect(target, player, player);
if (eff > 0) {
eff = Math.sqrt(eff);
if (target.isMaxHp() && target.hp > 2) {
if (get.attitude(player, target) > 0) return 0;
switch (target.hp) {
case 3:
return eff * 2;
case 4:
return eff * 1.5;
default:
return eff * 1.1;
2018-01-10 15:30:39 +00:00
}
2024-04-15 18:10:02 +00:00
} else {
switch (target.hp) {
case 1:
return eff * 1.6;
case 2:
return eff * 1.1;
default:
return eff;
2018-01-10 15:30:39 +00:00
}
}
}
return 0;
2024-04-15 18:10:02 +00:00
},
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_yenaifa: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_yenaifa",
enable: true,
notarget: true,
content() {
"step 0";
event.targets = player.getEnemies().randomGets(3).sortBySeat();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.targets.length) {
2018-01-10 15:30:39 +00:00
player.line(event.targets.shift().getDebuff(false).addExpose(0.1));
event.redo();
}
2024-04-15 18:31:36 +00:00
"step 2";
2018-01-10 15:30:39 +00:00
game.delay();
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
player: 1,
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_telisi: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_telisi",
enable: true,
notarget: true,
content() {
"step 0";
event.targets = player.getFriends().randomGets(3);
2018-01-10 15:30:39 +00:00
event.targets.add(player);
event.targets.sortBySeat();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (event.targets.length) {
2018-01-10 15:30:39 +00:00
player.line(event.targets.shift().getBuff(false).addExpose(0.1));
event.redo();
}
2024-04-15 18:31:36 +00:00
"step 2";
2018-01-10 15:30:39 +00:00
game.delay();
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
player: 1,
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_hengsaite: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_hengsaite",
enable: true,
notarget: true,
content() {
var targets = game
.filterPlayer(function (current) {
return player.canUse("wanjian", current);
})
.sortBySeat();
if (targets.length) {
player.addTempSkill("gwmaoxian_hengsaite_sha");
player.useCard({ name: "wanjian" }, targets);
}
},
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
}
},
ai: {
value: 10,
order: 1,
result: {
player(player, target) {
var targets = game.filterPlayer(function (current) {
return player.canUse("wanjian", current);
2018-01-19 02:51:53 +00:00
});
2024-04-15 18:10:02 +00:00
var eff = 0;
for (var i = 0; i < targets.length; i++) {
eff +=
get.sgn(get.effect(targets[i], { name: "wanjian" }, player, player)) /
Math.sqrt(targets[i].hp + 1);
2018-01-19 02:51:53 +00:00
}
return get.sgn(eff);
2024-04-15 18:10:02 +00:00
},
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_fuertaisite: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_fuertaisite",
enable: true,
filterTarget: true,
selectTarget: [1, 2],
content() {
2018-01-10 15:30:39 +00:00
target.changeHujia();
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
target(player, target) {
var num = 1 / Math.sqrt(target.hp + 1);
if (target.hasSkillTag("maixie_hp")) {
num *= 0.7;
2018-01-10 15:30:39 +00:00
}
2024-04-15 18:10:02 +00:00
if (target.hp == 1) {
num *= 1.5;
2018-01-10 15:30:39 +00:00
}
return num;
2024-04-15 18:10:02 +00:00
},
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_laduoweide: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_laduoweide",
enable: true,
filterTarget: true,
content() {
target.addTempSkill("fengyin", { player: "phaseAfter" });
2018-01-10 15:30:39 +00:00
target.damage();
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
target(player, target) {
var num = 1 / Math.sqrt(target.hp + 1);
if (target.hasSkillTag("maixie_hp")) {
num *= 1.5;
2018-01-10 15:30:39 +00:00
}
return -num;
2024-04-15 18:10:02 +00:00
},
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_enxier: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_enxier",
enable: true,
filterTarget(card, player, target) {
return Math.abs(target.countCards("h") - player.countCards("h")) <= 1;
},
content() {
2018-01-10 15:30:39 +00:00
player.swapHandcards(target);
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
target(player, target) {
var dh = target.countCards("h") - player.countCards("h");
if (dh > 0) return -1;
if (dh == 0 && player.needsToDiscard()) return -0.5;
2018-01-10 15:30:39 +00:00
return 0;
2024-04-15 18:10:02 +00:00
},
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_fulisi: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_fulisi",
enable: true,
filterTarget(card, player, target) {
return target != player && target.countCards("h");
},
selectTarget: [1, 3],
multitarget: true,
multiline: true,
content() {
"step 0";
var dialog = ui.create.dialog("弃置至多2张手牌", "hidden");
for (var i = 0; i < targets.length; i++) {
var hs = targets[i].getCards("h");
if (hs.length) {
2018-01-14 03:24:58 +00:00
dialog.addText(get.translation(targets[i]));
dialog.add(hs);
2018-01-10 15:30:39 +00:00
}
}
2024-04-15 18:10:02 +00:00
player.chooseButton(dialog, [1, 2]).ai = function (button) {
return get.value(button.link, get.owner(button.link));
2018-01-14 03:24:58 +00:00
};
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
var owner1 = get.owner(result.links[0]);
var owner2 = get.owner(result.links[1]);
if (owner1 == owner2) {
2018-01-14 03:24:58 +00:00
owner1.discard(result.links.slice(0));
2024-04-15 18:10:02 +00:00
} else {
owner1.discard(result.links[0]).delay = false;
2018-01-14 03:24:58 +00:00
owner2.discard(result.links[1]);
}
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
target: -1,
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_kaerweite: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_kaerweite",
enable: true,
filterTarget(card, player, target) {
return target != player && target.countCards("h");
},
selectTarget: [1, 2],
multitarget: true,
multiline: true,
content() {
2018-01-10 15:30:39 +00:00
player.gainMultiple(targets);
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
target(player, target) {
if (target.hasSkillTag("nolose") || target.hasSkillTag("noh")) {
2018-01-10 15:30:39 +00:00
return 0;
}
2024-04-15 18:10:02 +00:00
return -1 / Math.sqrt(1 + target.countCards("h"));
},
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_bulanwang: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_bulanwang",
enable: true,
notarget: true,
content() {
"step 0";
player
.chooseToDiscard("he", [1, 2], "弃置至多两张牌并摸弃牌数2倍的牌")
.set("ai", function (card) {
return 9 - get.value(card);
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.draw(2 * result.cards.length);
}
player.skip("phaseDiscard");
},
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
}
},
ai: {
value: 10,
order: 1,
result: {
player(player, target) {
if (
player.hasCard("he", function (card) {
return get.value(card) < 9;
})
) {
2018-01-10 15:30:39 +00:00
return 1;
}
return 0;
2024-04-15 18:10:02 +00:00
},
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_kuite: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_kuite",
enable: true,
filterTarget(card, player, target) {
return (
target.countCards("h") >= player.countCards("h") && player.canUse("juedou", target)
);
},
content() {
"step 0";
player.useCard({ name: "juedou" }, target).animate = false;
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (player.isIn() && target.isIn()) {
player.useCard({ name: "juedou" }, target);
}
},
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
}
},
ai: {
value: 10,
order: 1,
result: {
target(player, target) {
return get.effect(target, { name: "juedou" }, player, target);
},
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_haluo: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_haluo",
enable: true,
filterTarget(card, player, target) {
2018-01-10 15:30:39 +00:00
return target.isMinHp();
},
2024-04-15 18:10:02 +00:00
selectTarget: -1,
content() {
2018-01-10 15:30:39 +00:00
target.damage();
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
target: -1.5,
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
tag: {
damage: 1,
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_dagong: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_dagong",
enable: true,
content() {
target.addSkill("gw_ciguhanshuang");
target.addSkill("gw_birinongwu");
target.addSkill("gw_qinpendayu");
},
filterTarget(card, player, target) {
return (
!target.hasSkill("gw_ciguhanshuang") ||
!target.hasSkill("gw_qinpendayu") ||
!target.hasSkill("gw_birinongwu")
);
},
changeTarget(player, targets) {
game.filterPlayer(function (current) {
return get.distance(targets[0], current, "pure") == 1;
}, targets);
},
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
}
},
ai: {
value: 10,
order: 1,
result: {
target(player, target) {
return get.effect(target, { name: "gw_ciguhanshuang" }, player, target);
},
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_gaier: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_gaier",
enable: true,
filterTarget: true,
content() {
"step 0";
var str1 = "令" + get.translation(target);
var str2 = "1点体力和体力上限";
player.chooseControlList([str1 + "增加" + str2, str1 + "减少" + str2], function () {
if (get.attitude(player, target) > 0) return 0;
2018-01-10 15:30:39 +00:00
return 1;
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.index == 0) {
2018-01-10 15:30:39 +00:00
target.gainMaxHp(true);
target.recover();
2024-04-15 18:10:02 +00:00
} else {
2018-01-10 15:30:39 +00:00
target.loseHp();
target.loseMaxHp(true);
}
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
player(player, target) {
var num = 1;
if (target.hasSkillTag("maixie_hp")) {
num = 1.5;
2018-01-10 15:30:39 +00:00
}
2024-04-15 18:10:02 +00:00
return num / Math.sqrt(target.hp + 1);
},
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_airuiting: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_airuiting",
enable: true,
filterTarget(card, player, target) {
return target != player;
},
selectTarget: -1,
content() {
"step 0";
target.chooseToUse({ name: "sha" }, "使用一张杀或失去1点体力");
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (!result.bool) {
2018-01-10 15:30:39 +00:00
target.loseHp();
}
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
target(player, target) {
if (target.hasSha()) {
if (Math.random() < 0.5) return 1;
2018-01-10 15:30:39 +00:00
return 0;
}
2024-04-15 18:10:02 +00:00
if (target.countCards("h") >= 2) {
2018-01-10 15:30:39 +00:00
return 0;
2024-04-15 18:10:02 +00:00
} else {
2018-01-10 15:30:39 +00:00
return -1;
}
2024-04-15 18:10:02 +00:00
},
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_aisinie: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_aisinie",
enable: true,
notarget: true,
content() {
"step 0";
2018-01-10 15:30:39 +00:00
player.recover();
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
var list = get.typeCard("spell_silver");
if (list.length) {
player.chooseVCardButton("获得一张银卡法术", list, true);
} else {
2018-01-10 15:30:39 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (result.bool) {
player.gain(game.createCard(result.links[0][2]), "gain2");
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
player: 1,
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_falanxisika: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_falanxisika",
enable: true,
notarget: true,
content() {
"step 0";
var list = get.typeCard("spell_gold");
list.remove("gw_huangjiashenpan");
if (list.length) {
player.chooseVCardButton("使用一张金卡法术", list.randomGets(3), true).ai = function (
button
) {
var info = get.info(button.link[2]);
if (info && info.ai && info.ai.result && info.ai.result.player) {
return info.ai.result.player(player, player);
2018-01-10 15:30:39 +00:00
}
return 0;
};
2024-04-15 18:10:02 +00:00
} else {
2018-01-10 15:30:39 +00:00
event.finish();
}
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
2018-01-10 15:30:39 +00:00
player.useCard(game.createCard(result.links[0][2]));
}
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
player: 1,
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gwmaoxian_huoge: {
type: "gwmaoxian",
fullborder: "gold",
vanish: true,
derivation: "gw_diandian",
image: "character:gw_huoge",
enable: true,
notarget: true,
content() {
"step 0";
event.cards = get.cards(6);
player
.chooseCardButton(event.cards, [1, 2], "选择至多两牌依次使用之")
.set("filterButton", function (button) {
return game.hasPlayer(function (current) {
return player.canUse(button.link, current);
});
})
.set("ai", function (button) {
return get.value(button.link);
2018-01-10 15:30:39 +00:00
});
2024-04-15 18:31:36 +00:00
"step 1";
2024-04-15 18:10:02 +00:00
if (result.bool) {
event.list = result.links.slice(0);
for (var i = 0; i < event.cards.length; i++) {
if (!event.list.includes(event.cards[i])) {
2018-01-10 15:30:39 +00:00
event.cards[i].discard();
}
}
}
2024-04-15 18:31:36 +00:00
"step 2";
2024-04-15 18:10:02 +00:00
if (event.list.length) {
player.chooseUseTarget(true, event.list.shift());
2018-01-10 15:30:39 +00:00
event.redo();
}
},
2024-04-15 18:10:02 +00:00
contentAfter() {
var evt = _status.event.getParent("phaseUse");
if (evt && evt.name == "phaseUse") {
evt.skipped = true;
2018-01-10 15:30:39 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
order: 1,
result: {
player: 1,
},
},
2018-01-10 15:30:39 +00:00
},
2024-04-15 18:10:02 +00:00
gw_wuyao: {
type: "special",
fullimage: true,
derivation: "gw_linjing",
vanish: true,
addinfo: "杀",
autoViewAs: "sha",
ai: {
order() {
return get.order({ name: "sha" }) + 0.5;
},
},
2019-06-07 03:46:13 +00:00
},
2024-04-15 18:10:02 +00:00
gw_lang: {
type: "special",
fullimage: true,
derivation: "gw_linjing",
vanish: true,
addinfo: "酒",
autoViewAs: "jiu",
ai: {
order() {
return get.order({ name: "jiu" }) + 0.5;
},
},
2017-08-05 02:13:01 +00:00
},
2024-04-15 18:10:02 +00:00
gw_dudayuanshuai1: {
type: "special",
fullimage: true,
derivation: "gw_zhuoertan",
vanish: true,
addinfo: "小伙伴",
notarget: true,
content() {
var evt = event.getParent(3)._trigger;
if (evt.gw_dudayuanshuai1) {
2017-11-05 06:56:08 +00:00
evt.cancel();
2017-05-16 16:52:28 +00:00
}
2024-04-15 18:10:02 +00:00
if (evt.cards) {
player.gain(evt.cards, "gain2");
2017-05-16 16:52:28 +00:00
}
},
2024-04-15 18:10:02 +00:00
ai: {
value: 10,
useful: 9,
result: {
player: 1,
2017-05-16 16:52:28 +00:00
},
2024-04-15 18:10:02 +00:00
},
2017-05-16 16:52:28 +00:00
},
2024-04-15 18:10:02 +00:00
gw_dudayuanshuai2: {
type: "special",
fullimage: true,
derivation: "gw_zhuoertan",
vanish: true,
addinfo: "捣蛋鬼",
ai: {
value: -1,
},
2017-05-16 16:52:28 +00:00
},
},
2024-04-15 18:10:02 +00:00
cardType: {
gwmaoxian: 0.5,
2018-04-17 07:32:43 +00:00
},
2024-04-15 18:10:02 +00:00
translate: {
gw_huoge: "霍格",
gw_aisinie: "埃丝涅",
gw_gaier: "盖尔",
gw_enxier: "恩希尔",
gw_kuite: "奎特",
gw_dagong: "达贡",
gw_airuiting: "艾瑞汀",
gw_fuertaisite: "弗尔泰斯特",
gw_falanxisika: "法兰茜斯卡",
gw_haluo: "哈洛",
gw_hengsaite: "亨赛特",
gw_kaerweite: "卡尔维特",
gw_bulanwang: "布兰王",
gw_fulisi: "符里斯",
gw_laduoweide: "拉多维德",
2024-04-15 18:10:02 +00:00
gw_jieluote: "杰洛特",
gw_yenaifa: "叶奈法",
gw_telisi: "特莉斯",
gw_xili: "希里",
gw_luoqi: "罗契",
gw_yioufeisi: "伊欧菲斯",
2024-04-15 18:10:02 +00:00
gw_aigeleisi: "艾格蕾斯",
gw_aokeweisite: "奥克维斯特",
gw_kaxier: "卡西尔",
gw_luobo: "萝卜",
gw_mieren: "尔米恩",
gw_sanhanya: "三寒鸦",
gw_shanhu: "珊瑚",
gw_zhangyujushou: "章鱼巨兽",
gw_zhuoertan: "卓尔坦",
gw_meizi: "梅兹",
gw_aimin: "艾敏",
gw_puxila: "普希拉",
2024-04-15 18:10:02 +00:00
gw_xigedelifa: "希格德莉法",
gw_laomaotou: "毛矛头",
gw_laomaotou2: "毛矛头",
gw_qigaiwang: "乞丐王",
2024-04-15 18:10:02 +00:00
gw_bierna: "碧尔娜",
gw_haizhiyezhu: "海之野猪",
gw_nitelila: "尼斯里拉",
2024-04-15 18:10:02 +00:00
gw_linjing: "林精",
gw_nvyemo: "女夜魔",
gw_mierjiata: "米尔加塔",
gw_kanbi: "坎毕",
gw_hanmuduoer: "汉姆多尔",
gw_kairuisi: "凯瑞斯",
gw_oudimu: "欧迪姆",
gw_shasixiwusi: "沙斯西乌斯",
2024-04-15 18:10:02 +00:00
gw_yioufeisisp: "伊欧菲斯",
gw_diandian: "店店",
gw_feilafanruide: "菲拉凡德苪",
gw_fenghuang: "凤凰",
gw_yisilinni: "伊斯琳妮",
gw_lanbote: "兰伯特",
2024-04-15 18:10:02 +00:00
gw_saqiya: "萨琪亚",
2019-06-07 03:46:13 +00:00
// sqlongyin:'龙影',
// sqlongyin_info:'',
2024-04-15 18:10:02 +00:00
sqlongnu: "龙怒",
sqlongnu_info:
"准备阶段你可以发现一张牌堆中的牌若你手牌中有同名牌你可以改为造成1点火属性伤害锁定技。准备阶段开始时你随机切换至一种形态。",
sqlonghuo: "龙火",
sqlonghuo_info:
"出牌阶段限一次,你可以弃置所有手牌并摸等量的牌,若敌方角色手牌中与你弃置的牌同名的牌,则随机弃置其中一张。准备阶段开始时,你随机切换至一种形态。",
sqlongwu: "龙舞",
sqlongwu_info:
"结束阶段你可以摸X张牌然后可以使用一张牌X为手牌中同名牌数最多的牌的数量。准备阶段开始时你随机切换至一种形态。",
kuanglie: "狂猎",
kuanglie_info:
"锁定技,每当你使用黑色牌指定其他角色为目标后,目标随机弃置一张牌;每当你以此法累计弃置两张牌后,你摸一张牌。",
2023-12-05 12:21:05 +00:00
// kuanglie_info:'锁定技,每当一名敌方角色成为你的黑色牌的目标,你视为对其使用【刺骨寒霜】;在一名角色受到【刺骨寒霜】的影响后,你随机获得一张【狂猎】牌。',
2024-04-15 18:10:02 +00:00
lingshuang: "凛霜",
lingshuang_info:
"每当你失去最后一张基本牌你可以视为对距离2以内的所有敌方角色使用【刺骨寒霜】在一名角色受到【刺骨寒霜】影响时你可以弃置一张手牌将其效果改为“摸牌数-2”。",
gwshuangwu: "霜舞",
gwshuangwu_info:
"锁定技,每当你造成一次伤害,你视为对目标使用刺骨寒霜;你对处于刺骨寒霜的角色造成的伤害+1。",
gwhuanshuang: "幻霜",
gwhuanshuang_info: "准备或结束阶段,你可以发现一张铜卡法术并使用之,此牌结算两次。",
gwjinli: "金醴",
gwjinli_jiu: "先祖麦酒",
gwjinli_info: "出牌阶段限一次,你可以弃置一张手牌,并将一张先祖麦酒置于一名角色的武将牌上。",
gw_xianzumaijiu: "先祖麦酒",
gw_xianzumaijiu_info:
"出牌阶段对自己使用你使用下一张杀造成伤害后令所有友方角色摸一张牌濒死阶段对自己使用回复1点体力。",
gwliaotian: "燎天",
gwliaotian_info:
"出牌阶段限2次若你有至少两张手牌且颜色均相同你可以重铸你的全部手牌并视为对一名随机敌方角色使用一张不计入出杀次数的杀。",
gwmaoxian_yioufeisi: "伊欧菲斯",
gwmaoxian_yioufeisi_info: "选择两名角色,令目标依次视为对对方使用一张杀,然后结束出牌阶段。",
gwmaoxian_luoqi: "罗契",
gwmaoxian_luoqi_info:
"选择一名角色视为对其使用一张不计入出杀次数的杀,然后所有其他角色可以对目标使用一张杀,然后结束出牌阶段。",
gwmaoxian_jieluote: "杰洛特",
gwmaoxian_jieluote_info:
"对一名角色造成1点伤害若目标体力值大于2且为全场最多改为造成2点伤害然后结束出牌阶段。",
gwmaoxian_yenaifa: "叶奈法",
gwmaoxian_yenaifa_info: "对至多3名随机敌方角色施加一个随机负面效果然后结束出牌阶段。",
gwmaoxian_telisi: "特丽斯",
gwmaoxian_telisi_info: "对至多3名随机友方角色施加一个随机正面效果然后结束出牌阶段。",
gwmaoxian_hengsaite: "亨赛特",
gwmaoxian_hengsaite_info:
"视为使用一张万箭齐发,每当有一名角色因此受到伤害,你获得一张杀,然后结束出牌阶段。",
gwmaoxian_fuertaisite: "弗尔泰斯特",
gwmaoxian_fuertaisite_info: "令至多两名角色各获得1点护甲然后结束出牌阶段。",
gwmaoxian_laduoweide: "拉多维德",
gwmaoxian_laduoweide_info:
"令一名角色的非锁定技失效直到其下一回合结束并对其造成1点伤害然后结束出牌阶段。",
gwmaoxian_enxier: "恩希尔",
gwmaoxian_enxier_info: "与一名手牌并不超过1的其他角色交换手牌然后结束出牌阶段。",
gwmaoxian_fulisi: "符里斯",
gwmaoxian_fulisi_info: "选择至多三名角色观看目标的手牌并可以弃置其中1~2张然后结束出牌阶段。",
gwmaoxian_kaerweite: "卡尔维特",
gwmaoxian_kaerweite_info: "获得至多两名角色各一张手牌,然后结束出牌阶段。",
gwmaoxian_bulanwang: "布兰王",
gwmaoxian_bulanwang_info:
"弃置至多两张牌并摸数量等于弃牌数2倍的牌跳过弃牌阶段然后结束出牌阶段。",
gwmaoxian_kuite: "奎特",
gwmaoxian_kuite_info: "视为对一名手牌数不小于你的角色连续使用2张决斗然后结束出牌阶段。",
gwmaoxian_haluo: "哈洛",
gwmaoxian_haluo_info: "对所有体力值全场最少的角色造成1点伤害然后结束出牌阶段。",
gwmaoxian_dagong: "达贡",
gwmaoxian_dagong_info: "视为同时使用刺骨寒霜、蔽日浓雾和倾盆大雨,然后结束出牌阶段。",
gwmaoxian_gaier: "盖尔",
gwmaoxian_gaier_info: "令一名角色增加或减少1点体力和体力上限然后结束出牌阶段。",
gwmaoxian_airuiting: "艾瑞汀",
gwmaoxian_airuiting_info: "令所有其他角色选择一项使用一张杀或失去1点体力然后结束出牌阶段。",
gwmaoxian_aisinie: "埃丝涅",
gwmaoxian_aisinie_info: "回复1点体力并获得任意一张银卡法术然后结束出牌阶段。",
gwmaoxian_falanxisika: "法兰茜斯卡",
gwmaoxian_falanxisika_info: "随机观看3张金卡法术并使用其中一张然后结束出牌阶段。",
gwmaoxian_huoge: "霍格",
gwmaoxian_huoge_info: "观看牌堆顶的六张牌,使用至多两张,然后弃掉其余的牌,然后结束出牌阶段。",
gwmaoxian: "冒险",
gwhuanbi: "幻笔",
gwhuanbi_info:
"出牌阶段限一次,你可以弃置一张牌,并创造一张冒险牌,然后随机选择一名有手牌的角色,被选中的角色可以交给你一张手牌并获得一张该牌的复制。",
gwminxiang: "冥想",
gwminxiang_old_info:
"结束阶段,你可以选择一张本回合使用过的基本牌或普通锦囊牌并选择两名其他角色,令目标分别视为对对方使用一张此牌的复制。",
gwminxiang_info:
"出牌阶段限一次,你可以弃置一张基本牌或普通锦囊牌并摸一张牌,然后选择其他两名角色,令目标分别视为对对方使用一张你弃置的牌的同名牌。",
gwlangshi: "狼噬",
gwlangshi_info: "每当你造成一次伤害你可以对一名体力值不小于受伤害角色的其他角色造1点伤害。",
gwjingshi: "血契",
gwjingshi_info:
"出牌阶段限一次,你可以猜测手牌中黑色牌最多的角色是谁,若猜对,你可以观看所有其他角色的手牌并获得任意一张。",
gwjingtian: "经天",
gwjingtian_info:
"锁定技牌堆顶的九张牌对你始终可见你始终跳过摸牌阶段改为获得3枚“经天”标记每名角色的回合限一次你可以在任意时间点移去一枚“经天”标记然后获得牌堆顶的一张牌。",
gwweitu: "卫土",
gwweitu_info:
"锁定技每当你弃置牌若你的护甲数小于3你获得1点护甲每当你的护甲为你累计抵消3次伤害你获得一张随机银卡法术。",
gwzhongmo: "终末",
gwzhongmo_info: "锁定技,你跳过摸牌阶段,改为获得两张随机的稀有度不同的法术牌。",
gwfutian: "覆天",
gwfutian_info:
"锁定技你防止一切伤害准备阶段你须弃置一名其他角色的一张手牌若你以此法累计弃置弃置的总点数达到了24你变身为汉姆多尔。",
gwgouhun: "勾魂",
gwgouhun_info:
"出牌阶段限一次你可以交给一名有手牌的其他角色一张手牌然后令其选择一项1. 将手牌中与此牌花色相同的牌至少一张交给你2. 弃置手牌中与此牌花色不同的牌至少一张3. 进入混乱状态直到下一回合结束。",
gw_wuyao: "雾妖",
gw_wuyao_info: "在你行动时可当作杀使用;回合结束后,从手牌中消失。",
gw_lang: "狼",
gw_lang_info: "在你行动时可当作酒使用;回合结束后,从手牌中消失。",
gwyewu: "叶舞",
gwyewu_info:
"出牌阶段限一次,你可以弃置一张手牌,并弃置一名随机敌人的一张随机牌;若目标弃置的牌与你弃置的牌颜色相同,则重复发动;每以此法弃置一张敌方角色的手牌,你获得一张【雾妖】;每以此法弃置一张敌方角色的手牌,你获得一张【狼】。",
shuangxi: "霜袭",
shuangxi_info:
"每两轮限一次,出牌阶段,你可以视为使用一张【刺骨寒霜】;若你在本回合造成过伤害,改为使用【白霜】。",
gwfengshi: "风蚀",
gwfengshi_info:
"结束阶段你可以选择一项1. 为自己施加一个随机负面效果并对两名随机敌人施加一个随机负面效果2. 为自己施加两个随机正面效果,并对一名随机敌人施加一个随机正面效果。",
yangfan: "扬帆",
yangfan_info:
"锁定技,每当你使用一张非装备牌,你随机重铸一张与其花色相同的手牌;若没有花色相同的手牌,改为随机重铸一张与其颜色相同的手牌。",
gwchenshui: "沉睡",
gwchenshui_bg: "睡",
gwchenshui_info:
"锁定技你防止即将造成或受到的伤害改为令伤害来随机源获得对方一张牌结束阶段若你自上次沉睡起累计发动了至少3次沉睡效果你解除沉睡状态对所有敌方角色造成1点伤害然后切换至觉醒状态。",
gwliedi: "裂地",
gwliedi_info:
"锁定技,你造成的伤害+XX为你到该角色距离的一半向下取整结束阶段若你连续两轮未造成伤害你切换至沉睡状态。",
julian: "巨敛",
julian_info: "出牌阶段开始时,你可以摸若干张牌直到你的手牌数为全场最多或之一。",
gwfusheng: "复生",
gwfusheng_info:
"当一名未翻面的角色进入濒死状态时你可以令其翻面并回复1点体力然后你与其各摸一张牌。",
gwqinwu: "琴舞",
gwqinwu2: "琴舞",
gwqinwu_info:
"出牌阶段限一次,每当你使用一张基本牌,你可以令一名角色摸一张牌并获得技能〖琴舞〗直到其下一回合结束。",
huanshu: "幻术",
huanshu2: "幻术",
huanshu3: "幻术",
huanshu_info:
"结束阶段,你可以将一张手牌背面朝上置于你的武将牌上;当一名敌方角色使用一张与之颜色相同的锦囊牌时,你展示并移去此牌,取消锦囊的效果,然后摸两张牌;准备阶段,你移去武将牌上的“幻术”牌。",
gwjieyin: "结印",
gwjieyin_info:
"出牌阶段,你可以视为使用瘟疫、燕子药水或昆恩法印(不能重复使用同一法术),技能两轮重置一次。",
zhengjun: "整军",
zhengjun_info:
"锁定技每当你使用或打出一张卡牌若这是你在本局游戏中使用或打出的第二张与之同名的牌你增加1点体力和体力上限结束阶段你可以观看牌堆顶的X张牌并获得其中一张X为你以此法增加的体力上限数。",
gwxuezhan: "血战",
gwxuezhan_info: "准备阶段,若你的手牌数为全场最少或之一,你可以获得一张十字召唤。",
jielue: "劫掠",
jielue_info:
"锁定技,出牌阶段开始时,你从两个随机队友处各获得一张可使用的牌并依次使用之,然后被拿牌的队友摸一张牌。",
jielue_old_info:
"当你于回合内首次使用基本牌时,你可以获得两张该牌的复制(使用复制的牌时不触发此技能)。",
gwfengchi: "风驰",
gwfengchi_info:
"锁定技出牌阶段开始时你随机观看3个可以在出牌阶段使用的技能并获得其中一个技能直到此阶段结束。",
gwjushi: "巨噬",
gwjushi2: "巨噬",
gwjushi_info:
"出牌阶段限一次你可以将一名距离1以内的其他角色的一张随机牌置于你的武将牌上当你受到伤害后令“巨噬”牌回到原来的位置准备阶段你获得武将牌上的“巨噬”牌。",
bolang: "搏浪",
bolang_info:
"准备阶段你可以观看牌堆顶的六张牌然后将其中至多3张移入弃牌堆每当你造成一次伤害你可以从弃牌堆中获得一张以此法移入弃牌堆的牌每回合限发动一次。",
lingji: "灵计",
lingji_info:
"出牌阶段限一次,你可以摸两张牌并弃置两张牌,若弃置的牌花色相同,你获得一张随机铜卡并展示;若弃置的牌点数相同,你获得一张随机银卡并展示。",
gwjinyan: "金焰",
gwjinyan_info:
"锁定技准备阶段若游戏轮数为3的倍数你获得一张随机金卡当游戏轮数不是3的倍数时你防止所有伤害。",
gwshenyu: "神愈",
gwshenyu_info:
"准备阶段你可以令一名角色选择一项回复1点体力或从弃牌堆中获得一张非金法术牌直到洗牌入牌堆前该牌不能再以此法获得。",
junchi: "骏驰",
junchi_info:
"每当一名其他角色使用一张杀,若目标不是你,你可以对杀的目标使用一张牌,并摸一张牌,每回合限一次。",
junchi_old_info:
"当一名其他角色使用杀对一个目标结算后该角色可以交给你一张牌然后你可以对杀的目标使用一张牌若如此做你回复1点体力杀的使用者摸一张牌。",
gw_dudayuanshuai1: "杜达元帅",
gw_dudayuanshuai1_info:
"当你成为其他角色使用牌的目标时,你可以使用此牌取消之,然后获得对你使用的牌。",
gw_dudayuanshuai2: "杜达元帅",
gw_dudayuanshuai2_info:
"你不能使用、打出或弃置此牌;结束阶段,若此牌在你手牌中,你弃置之并随机弃置一张手牌。",
hupeng: "呼朋",
hupeng_info: "出牌阶段限一次,你可以弃置一张牌并将一张杜达元帅置入一名角色的手牌。",
shuijian: "水箭",
shuijian_info: "准备阶段,你可以弃置一张手牌视为对所有敌方角色使用一张万箭齐发。",
yunhuo: "陨火",
yunhuo_info:
"锁定技准备阶段若游戏轮数为4的倍数你令所有敌方角色随机弃置一张手牌若没有手牌改为受到1点火焰伤害然后在此回合结束后获得一个额外回合。",
yinzhang: "银杖",
yinzhang_info: "出牌阶段限一次,你可以弃置一张牌,然后发现一张银卡法术。",
gwtianbian: "天变",
gwtianbian_info:
"出牌阶段开始时,你可以选择一项:随机使用一张对全场有正面效果的牌;或随机使用一张对全场有负面效果的牌。",
gwxiaoshou: "枭首",
gwxiaoshou_info:
"出牌阶段限两次你可以弃置一张牌对场上体力值最高或之一的一名角色造成1点伤害。",
gwjiquan: "集权",
gwjiquan_info:
"出牌阶段限一次,你可以从任意名角色处各获得一张牌,每拿一张牌,被拿牌的角色视为对你使用一张杀。",
nuhou: "怒吼",
nuhou_info:
"每当你受到一次伤害你可以弃置一张牌然后对一名随机敌人造成1点伤害并随机弃置其一张牌。",
shewu: "蛇舞",
shewu_info:
"出牌阶段限一次你可以弃置至多三张牌然后摸三张牌若你弃置了至少两张牌你本回合使用牌无视距离若你弃置了三张牌你回复1点体力。",
gwzhanjiang: "斩将",
gwzhanjiang_info:
"每轮限一次,在一名角色的准备阶段,你可以弃置一张牌,然后所有角色可以对该角色使用一张杀,出杀的角色在响应时摸一张牌,当有至少两名角色响应后终止结算。",
gwchuanxin: "穿心",
gwchuanxin_info:
"你的攻击范围基数为你当前体力值;每当你对一名角色使用杀结算完毕后,你可以亮出牌堆顶的一张牌,若为黑色,视为对目标再使用一张杀。",
fengjian: "风剑",
fengjian_info:
"每当你使用一张锦囊牌,你可以视为对一名不是此牌目标的角色使用一张雷杀,若如此做,你获得潜行直到下一回合开始。",
huandie: "幻蝶",
huandie_info:
"准备阶段,你可以摸一张牌,并令任意名其他角色摸两张牌,若如此做,此回合结束时,所有手牌数大于体力值的角色需弃置两张手牌。",
xuezhou: "血咒",
xuezhou_info:
"准备阶段你可以选择一项效果直到下一回合开始1. 每当一名其他角色在一个回合中首次受到伤害该角色失去1点体力你回复1点体力2. 每当一名其他角色在一个回合中首次造成伤害该角色失去1点体力若不是受伤害角色回复1点体力。",
fayin: "法印",
fayin_info:
"每当你使用一张杀你可以弃置一张牌并获得一个随机法印效果1. 目标随机弃置两张牌2. 目标进入混乱状态直到下一回合开始3. 对目标造成1点火属性伤害4. 获得1点护甲5. 令目标翻面并摸一张牌。",
gwbaquan: "霸权",
gwbaquan_info:
"出牌阶段限一次你可以获得一名其他角色的所有牌然后还给其等量的牌若你归还的牌均为你得到的牌且该角色体力值不小于你你对其造成1点伤害。",
hunmo: "魂墨",
hunmo_info:
"出牌阶段若你手牌数少于2你可以选择一名手牌数小于2的其他角色观看牌堆顶的两张牌你获得一张并交给其另一张若你手牌数不少2你可以选择一名手牌数不少于2的其他角色你弃置一张手牌然后观看并弃置其一张手牌。每回合对同一名角色最多发动一次。",
huihun: "回魂",
huihun_info: "结束阶段,你可以从弃牌堆中获得本回合使用的前两张红色牌。",
lanquan: "远略",
lanquan_backup: "远略",
lanquan_info: "出牌阶段限一次,你可以观看牌堆顶的六张牌,并选择一张使用。",
2024-04-15 18:10:02 +00:00
chaoyong: "潮涌",
chaoyong_info: "准备阶段,你可以弃置一张牌,视为对所有敌方角色使用一张南蛮入侵或万箭齐发。",
},
2017-04-15 00:25:50 +00:00
};
2017-04-14 23:35:56 +00:00
});