import { lib, game, ui, get, ai, _status } from "../noname.js"; game.import("card", function () { return { name: "mtg", card: { mtg_lindixiliu: { type: "land", fullborder: "wood", enable: function (card, player) { return !player.hasSkill("land_used"); }, notarget: true, content: function () { "step 0"; game.changeLand("mtg_lindixiliu", player); var card = get.cardPile2(function (card) { return get.suit(card) == "heart"; }); if (card) { player.gain(card, "draw"); } "step 1"; player .chooseToDiscard("he", [1, Infinity], { suit: "heart" }, "林地溪流") .set("ai", function (card) { return 8 - get.value(card); }) .set( "prompt2", "弃置任意张红桃牌,每弃置一张牌,将一张延时锦囊牌置入一名随机敌方角色的判定区" ); "step 2"; if (result.bool) { event.num = result.cards.length; event.targets = player.getEnemies(); } "step 3"; if (event.num && event.targets && event.targets.length) { var target = event.targets.randomGet(); var list = get.inpile("delay"); for (var i = 0; i < list.length; i++) { if (target.hasJudge(list[i])) { list.splice(i--, 1); } } if (list.length) { player.line(target); var card = game.createCard(list.randomGet()); target.addJudge(card); target.$draw(card); game.delay(); event.num--; } else { event.targets.remove(target); } event.redo(); } }, ai: { value: 6, useful: 3, order: 7, result: { player: 1, }, }, }, mtg_longlushanfeng: { type: "land", fullborder: "wood", enable: function (card, player) { return !player.hasSkill("land_used"); }, notarget: true, content: function () { "step 0"; game.changeLand("mtg_longlushanfeng", player); player .chooseControl("获得杀", "获得闪") .set("prompt", "选择一项") .set("ai", function () { var player = _status.event.player; if (player.hasShan()) return 0; return 1; }); "step 1"; if (result.control == "获得杀") { player.gain(game.createCard("sha"), "gain2"); } else { player.gain(game.createCard("shan"), "gain2"); } }, ai: { value: 5, useful: 3, order: 4, result: { player: 1, }, }, }, mtg_cangbaohaiwan: { type: "land", fullborder: "wood", enable: function (card, player) { if (!lib.cardPack.mode_derivation || !lib.cardPack.mode_derivation.length) return false; return !player.hasSkill("land_used"); }, notarget: true, content: function () { "step 0"; game.changeLand("mtg_cangbaohaiwan", player); event.map = {}; var pack1 = []; var pack2 = []; for (var i = 0; i < lib.cardPack.mode_derivation.length; i++) { var name = lib.cardPack.mode_derivation[i]; var info = lib.card[name]; if (info.gainable == false || info.destroy) continue; if (info.derivationpack) { var trans = lib.translate[info.derivationpack + "_card_config"] + "(卡牌包)"; if (!event.map[trans]) { event.map[trans] = []; pack2.push(trans); } event.map[trans].push(name); } else if (typeof info.derivation == "string") { for (var j in lib.characterPack) { if (lib.characterPack[j][info.derivation]) { var trans = lib.translate[j + "_character_config"] + "(武将包)"; if (!event.map[trans]) { event.map[trans] = []; pack1.push(trans); } event.map[trans].push(name); break; } } } } if (!pack1.length && !pack2.length) { event.finish(); return; } player .chooseControl(pack1.concat(pack2), "dialogcontrol", function () { return _status.event.controls.randomGet("轩辕剑(卡牌包)"); }) .set("prompt", "选择一个扩展包获得其中一张衍生牌"); "step 1"; if (result.control && event.map[result.control]) { player.gain(game.createCard(event.map[result.control].randomGet()), "draw"); } }, ai: { value: 7, useful: 3, order: 9, result: { player: 1, }, }, }, mtg_linzhongjianta: { type: "land", fullborder: "wood", enable: function (card, player) { return !player.hasSkill("land_used"); }, notarget: true, content: function () { "step 0"; game.changeLand("mtg_linzhongjianta", player); player.discoverCard( function (card) { return get.subtype(card) == "equip1"; }, "nogain", "选择一个武器装备之" ); "step 1"; if (result.choice) { player.equip(game.createCard(result.choice), true); } }, ai: { value: 5, useful: 3, order: 9, result: { player: function (player) { if (player.getEquip(1)) return 0; return 1; }, }, }, }, mtg_youlin: { type: "land", fullborder: "wood", enable: function (card, player) { return !player.hasSkill("land_used"); }, notarget: true, content: function () { game.changeLand("mtg_youlin", player); var list = get.inpile("trick"); while (list.length) { var name = list.randomRemove(); if (lib.card[name].multitarget) continue; var targets = game.filterPlayer(); while (targets.length) { var target = targets.randomRemove(); if ( player.canUse(name, target, false) && get.effect(target, { name: name }, player, player) > 0 ) { player.useCard({ name: name }, target); return; } } } }, ai: { value: 5, useful: 3, order: 4, result: { player: 1, }, }, }, mtg_haidao: { type: "land", fullborder: "wood", enable: function (card, player) { return !player.hasSkill("land_used"); }, notarget: true, content: function () { "step 0"; game.changeLand("mtg_haidao", player); if (player.isHealthy()) { player.changeHujia(); event.finish(); } else { player._temp_mtg_haidao = true; player .chooseToDiscard("he", "海岛") .set("ai", function (card) { return 5 - get.value(card); }) .set("prompt2", "弃置一张牌并回复1点体力,或取消并获得1点护甲"); } "step 1"; if (result.bool) { player.recover(); } else { player.changeHujia(); } "step 2"; delete player._temp_mtg_haidao; }, ai: { value: 5, useful: 3, order: 4, result: { player: 1, }, }, }, mtg_yixialan: { type: "land", fullborder: "wood", enable: function (card, player) { return !player.hasSkill("land_used"); }, notarget: true, content: function () { "step 0"; game.changeLand("mtg_yixialan", player); player .chooseControl("基本牌", "锦囊牌") .set("prompt", "选择一个类型获得该类型的一张牌") .set("ai", function () { var player = _status.event.player; if (!player.hasSha() || !player.hasShan() || player.hp == 1) return 0; return 1; }); "step 1"; if (result.control == "基本牌") { player.gain(game.createCard(get.inpile("basic").randomGet()), "gain2"); } else { player.gain(game.createCard(get.inpile("trick", "trick").randomGet()), "gain2"); } }, ai: { value: 5, useful: 3, order: 4, result: { player: 1, }, }, }, mtg_shuimomuxue: { type: "land", fullborder: "wood", enable: function (card, player) { return !player.hasSkill("land_used"); }, notarget: true, content: function () { "step 0"; game.changeLand("mtg_shuimomuxue", player); if (player.countDiscardableCards("he")) { player.chooseToDiscard("是否弃置一张牌并摸两张牌?", "he").set("ai", function (card) { return 8 - get.value(card); }); } else { event.finish(); } "step 1"; if (result.bool) { player.draw(2); } }, ai: { value: 5, useful: 3, order: 4, result: { player: function (player) { if ( !player.countCards("h", function (card) { return card.name != "mtg_shuimomuxue" && get.value(card) < 8; }) ) { return 0; } return 1; }, }, }, }, mtg_feixu: { type: "land", fullborder: "wood", enable: function (card, player) { return !player.hasSkill("land_used"); }, notarget: true, content: function () { game.changeLand("mtg_feixu", player); player.discoverCard(ui.discardPile.childNodes); }, ai: { value: 5, useful: 3, order: 4, result: { player: 1, }, }, }, mtg_shamolvzhou: { type: "land", fullborder: "wood", enable: function (card, player) { return !player.hasSkill("land_used"); }, notarget: true, content: function () { game.changeLand("mtg_shamolvzhou", player); player.discoverCard(get.inpile("basic")); }, ai: { value: 5, useful: 3, order: 4, result: { player: 1, }, }, }, mtg_duzhao: { type: "land", fullborder: "wood", enable: function (card, player) { return !player.hasSkill("land_used"); }, notarget: true, content: function () { "step 0"; game.changeLand("mtg_duzhao", player); player.chooseTarget("选择一名角色令其获得一张毒", true).set("ai", function (target) { if (target.hasSkillTag("nodu")) return 0; return -get.attitude(_status.event.player, target) / Math.sqrt(target.hp + 1); }); "step 1"; if (result.bool) { var target = result.targets[0]; player.line(target, "green"); target.gain(game.createCard("du"), "gain2"); } }, ai: { value: 5, useful: 3, order: 4, result: { player: function (player) { if ( game.countPlayer(function (current) { if (current.hasSkillTag("nodu")) return false; return get.attitude(player, current) < 0; }) > game.countPlayer(function (current) { if (current.hasSkillTag("nodu")) return false; return get.attitude(player, current) > 0; }) ) { return 1; } return 0; }, }, }, }, mtg_bingheyaosai: { type: "land", fullborder: "wood", enable: function (card, player) { return !player.hasSkill("land_used"); }, notarget: true, content: function () { "step 0"; game.changeLand("mtg_bingheyaosai", player); player.draw(2); "step 1"; player.chooseToDiscard("he", 2, true); }, ai: { value: 5, useful: 3, order: 2, result: { player: 1, }, }, }, }, skill: { mtg_bingheyaosai_skill: { trigger: { player: "useCard" }, forced: true, filter: function (event, player) { if (player.countCards("he") == 0) return false; return event.card.name == "sha"; }, autodelay: true, content: function () { player.chooseToDiscard(true, "he"); }, ai: { mapValue: -4, }, }, mtg_duzhao_skill: { trigger: { player: "phaseEnd" }, forced: true, content: function () { player.gain(game.createCard("du"), "gain2"); }, ai: { mapValue: -5, }, }, mtg_shamolvzhou_skill: { mod: { ignoredHandcard: function (card) { if (get.type(card) == "basic") { return true; } }, }, ai: { mapValue: 3, }, }, mtg_haidao_skill: { trigger: { player: "changeHujiaBefore" }, forced: true, filter: function (event, player) { return player.isDamaged() && !player._temp_mtg_haidao && event.num > 0; }, content: function () { player.recover(trigger.num); trigger.cancel(); }, ai: { mapValue: 1, }, }, mtg_yixialan_skill: { enable: "phaseUse", filter: (event, player) => player.hasCard((card) => lib.skill.mtg_yixialan_skill.filterCard(card, player), "h"), filterCard: (card, player) => get.type(card) == "basic" && player.canRecast(card), discard: false, lose: false, check: function (card) { return 7 - get.value(card); }, usable: 1, content: function () { player.recast(cards, null, (player, cards) => { var cardsToGain = []; for (var repetition = 0; repetition < cards.length; repetition++) { var card = get.cardPile((card) => get.type(card, "trick") == "trick"); if (card) cardsToGain.push(card); } if (cardsToGain.length) player.gain(cardsToGain, "draw"); if (cards.length - cardsToGain.length) player.draw(cards.length - cardsToGain.length).log = false; }); }, ai: { mapValue: 2, order: 1, result: { player: 1, }, }, }, mtg_shuimomuxue_skill: { mod: { maxHandcard: function (player, num) { return num - 1; }, }, trigger: { player: "phaseDiscardEnd" }, forced: true, filter: function (event) { return event.cards && event.cards.length > 0; }, content: function () { player.draw(); }, ai: { mapValue: 2, }, }, mtg_feixu_skill: { trigger: { player: "phaseBegin" }, silent: true, content: function () { var num = ui.discardPile.childNodes.length; if (num) { var card = ui.discardPile.childNodes[get.rand(num)]; if (card) { ui.cardPile.insertBefore(card, ui.cardPile.firstChild); } } }, ai: { mapValue: 0, }, }, mtg_youlin_skill: { enable: "phaseUse", usable: 1, filter: function (event, player) { return player.countCards("h", { type: ["trick", "delay"] }); }, filterCard: function (card) { return get.type(card, "trick") == "trick"; }, check: function (card) { return 7 - get.value(card); }, content: function () { player.discoverCard(); }, ai: { mapValue: 1, order: 7, result: { player: 2, }, }, }, mtg_linzhongjianta_skill: { enable: "chooseToUse", filterCard: function (card) { return get.type(card) == "basic"; }, usable: 1, viewAs: { name: "sha" }, viewAsFilter: function (player) { if (!player.getEquip(1)) return false; if (!player.countCards("h", { type: "basic" })) return false; }, prompt: "将一张基本牌当杀使用", check: function (card) { return 6 - get.value(card); }, ai: { mapValue: 2, respondSha: true, order: function () { return get.order({ name: "sha" }) - 0.1; }, skillTagFilter: function (player, tag, arg) { if (arg != "use") return false; if (!player.getEquip(1)) return false; if (!player.countCards("h", { type: "basic" })) return false; }, }, }, mtg_cangbaohaiwan_skill: { trigger: { player: "drawBegin" }, silent: true, content: function () { if (Math.random() < 1 / 3) { var list = []; for (var i = 0; i < lib.cardPack.mode_derivation.length; i++) { var name = lib.cardPack.mode_derivation[i]; var info = lib.card[name]; if (info.gainable == false || info.destroy) continue; list.push(name); } if (list.length) { ui.cardPile.insertBefore( game.createCard(list.randomGet()), ui.cardPile.firstChild ); } } }, ai: { mapValue: 5, }, }, mtg_longlushanfeng_skill: { mod: { cardUsable: function (card, player, num) { if (card.name == "sha") return num + 1; }, }, ai: { mapValue: 2, }, }, mtg_lindixiliu_skill: { trigger: { player: "phaseBegin" }, direct: true, filter: function (event, player) { return player.countCards("he", { suit: "heart" }) && player.countCards("j"); }, content: function () { "step 0"; player .chooseToDiscard("he", { suit: "heart" }, get.prompt2("mtg_lindixiliu_skill")) .set("ai", function (card) { return 8 - get.value(card); }) .set("logSkill", "mtg_lindixiliu_skill"); "step 1"; if (result.bool) { player.discardPlayerCard(player, "j", true); } }, ai: { mapValue: 1.5, }, }, }, cardType: { land: 0.6, }, translate: { land: "地图", mtg_yixialan: "依夏兰", mtg_yixialan_skill: "依夏兰", mtg_yixialan_info: "选项一:随机获得一张基本牌;选项二:随机获得一张锦囊牌。地图效果:出牌阶段限一次,你可以将一张基本牌重铸为锦囊牌。", mtg_yixialan_skill_info: "出牌阶段限一次,你可以将一张基本牌重铸为锦囊牌。", mtg_shuimomuxue: "水没墓穴", mtg_shuimomuxue_skill: "水没墓穴", mtg_shuimomuxue_info: "你可以弃置一张牌并摸两张牌。地图效果:锁定技,你的手牌上限-1;若弃牌阶段弃置了至少一张牌,则在此阶段结束时摸一张牌。", mtg_shuimomuxue_skill_info: "锁定技,你的手牌上限-1;若弃牌阶段弃置了至少一张牌,则在此阶段结束时摸一张牌。", mtg_feixu: "废墟", mtg_feixu_skill: "废墟", mtg_feixu_info: "从弃牌堆中发现一张牌。地图效果:准备阶段,随机将弃牌堆的一张牌置于牌堆顶。", mtg_feixu_skill_info: "准备阶段,随机将弃牌堆的一张牌置于牌堆顶。", mtg_haidao: "海岛", mtg_haidao_skill: "海岛", mtg_haidao_info: "选项一:获得1点护甲(无视地图效果);选项二:弃置一张牌并回复1点体力。地图效果:锁定技,当你获得护甲时,若你已受伤,改为回复等量体力。", mtg_haidao_skill_info: "锁定技,当你获得护甲时,若你已受伤,改为回复等量体力。", mtg_youlin: "幽林", mtg_youlin_skill: "幽林", mtg_youlin_info: "随机使用一张普通锦囊牌,随机指定一个具有正收益的目标。地图效果:出牌阶段限一次,你可以弃置一张锦囊牌并发现一张牌。", mtg_youlin_skill_info: "出牌阶段限一次,你可以弃置一张锦囊牌并发现一张牌。", mtg_shamolvzhou: "沙漠绿洲", mtg_shamolvzhou_skill: "沙漠绿洲", mtg_shamolvzhou_info: "发现一张基本牌。地图效果:你的基本牌不计入手牌上限。", mtg_shamolvzhou_skill_info: "你的基本牌不计入手牌上限。", mtg_duzhao: "毒沼", mtg_duzhao_skill: "毒沼", mtg_duzhao_info: "选择一名角色令其获得一张毒。地图效果:结束阶段,你获得一张毒。", mtg_duzhao_skill_info: "结束阶段,你获得一张毒。", mtg_linzhongjianta: "林中尖塔", mtg_linzhongjianta_skill: "林中尖塔", mtg_linzhongjianta_info: "发现一张武器牌并装备之。地图效果:若你装备区内有武器牌,你可以将一张基本牌当作杀使用。", mtg_linzhongjianta_skill_info: "若你装备区内有武器牌,你可以将一张基本牌当作杀使用。", mtg_cangbaohaiwan: "藏宝海湾", mtg_cangbaohaiwan_skill: "藏宝海湾", mtg_cangbaohaiwan_info: "选择一个扩展包,随机获得来自该扩展包的一张衍生牌。地图效果:你在摸牌时有可能摸到衍生牌。", mtg_cangbaohaiwan_skill_info: "你在摸牌时有可能摸到衍生牌。", mtg_longlushanfeng: "龙颅山峰", mtg_longlushanfeng_skill: "龙颅山峰", mtg_longlushanfeng_info: "选项一:获得一张杀;选项二:获得一张闪。地图效果:你出杀的次数上限+1。", mtg_longlushanfeng_skill_info: "你出杀的次数上限+1。", mtg_bingheyaosai: "冰河要塞", mtg_bingheyaosai_skill: "冰河要塞", mtg_bingheyaosai_info: "摸两张牌,然后弃置两张牌。地图效果:锁定技,每当你使用一张杀,若你有牌,则需弃置一张牌。", mtg_bingheyaosai_skill_info: "锁定技,每当你使用一张杀,若你有牌,则需弃置一张牌。", mtg_lindixiliu: "林地溪流", mtg_lindixiliu_skill: "林地溪流", mtg_lindixiliu_info: "从牌堆中摸一张红桃牌,然后弃置任意张红桃牌,每弃置一张牌,将一张延时锦囊牌置入一名随机敌方角色的判定区。地图效果:准备阶段,你可以弃置一张红桃牌,然后弃置判定区内的一张牌。", mtg_lindixiliu_skill_info: "准备阶段,你可以弃置一张红桃牌,然后弃置判定区内的一张牌。", }, help: { 万智牌: "