"use strict"; game.import("mode", function (lib, game, ui, get, ai, _status) { return { name: "stone", start: function () { "step 0"; lib.init.css(lib.assetURL + "layout/mode/", "stone"); _status.mode = "deck"; game.initStone(); var playback = localStorage.getItem(lib.configprefix + "playback"); if (!playback && _status.mode == "deck") { var createCardDialog = function () { ui.deckBuilder = ui.create.div(".popup-container#deck-builder", function () { if (careerList.classList.contains("shown")) { careerList.classList.remove("shown"); newDeck.classList.remove("active"); } else if (!cardDialog.classList.contains("shown")) { this.classList.remove("shown"); this.timeout = setTimeout(function () { ui.deckBuilder.remove(); }, 500); ui.arena.style.top = ""; ui.arena.style.transform = ""; ui.arena.style.opacity = ""; ui.system.style.opacity = ""; ui.auto.show(); ui.pause.show(); ui.historybar.show(); } }); var clickNode = function () { cardDialog.classList.add("shown"); controls.classList.add("shown"); var name = "未命名"; for (var i = 1; ; i++) { if (!lib.storage.deckList[name + i]) { break; } } cardDialog.editing = { name: name + i, content: { career: this.firstChild.dataset.career, deck: [], }, }; rename.innerHTML = name + i; newDeck.innerHTML = "确认编辑"; newDeck.classList.add("active"); careerList.classList.remove("shown"); listContainer.style.transform = "translateX(200px)"; deckContainer.innerHTML = ""; deckContainer.classList.add("shown"); updateCardDialog(); }; var careerList = ui.create.div(".shadowed.career", ui.deckBuilder); for (var i = 0; i < lib.careerList.length; i++) { var node = ui.create.div(careerList, clickNode); ui.create.div(".menubutton.round", node).dataset.career = lib.careerList[i]; ui.create.div(".text", lib.translate[lib.careerList[i]], node); } var controls = ui.create.div(".controls", ui.deckBuilder); var cardCount = ui.create.div(".card-count", controls); ui.create.div(".menubutton.large", "删除", controls, function (e) { if (this.innerHTML == "删除") { this.innerHTML = "确定"; var that = this; setTimeout(function () { that.innerHTML = "删除"; }, 1000); } else { cardDialog.classList.remove("shown"); controls.classList.remove("shown"); newDeck.innerHTML = "新建卡组"; newDeck.classList.remove("active"); var editing = cardDialog.editing; if (editing) { if (editing.origin) { delete lib.storage.deckList[editing.origin]; for (var i = 0; i < listContainer.childElementCount; i++) { if (listContainer.childNodes[i].name == editing.origin) { listContainer.childNodes[i].remove(); break; } } } } game.save("deckList", lib.storage.deckList); listContainer.style.transform = ""; deckContainer.classList.remove("shown"); updateCardDialog(); } e.stopPropagation(); }); var rename = ui.create.div(".menubutton.large", "重命名", controls); rename.contentEditable = true; rename.onfocus = function () { var range = document.createRange(); range.selectNodeContents(this); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); }; rename.onblur = function () { if (cardDialog.editing) { if (!lib.storage.deckList[this.innerHTML]) { cardDialog.editing.name = this.innerHTML; } else { this.innerHTML = cardDialog.editing.name; } } var sel = window.getSelection(); sel.removeAllRanges(); }; rename.onkeydown = function (e) { if (e.keyCode == 13) { e.preventDefault(); e.stopPropagation(); rename.blur(); } }; var removeLine = function () { rename.innerHTML = rename.innerHTML.replace(/\n|
/g, ""); }; var observer = new MutationObserver(removeLine); observer.observe(rename, { characterData: true, subtree: true }); rename.addEventListener("keyup", removeLine); var cardDialog = ui.create.cardDialog( true, function (name) { if (lib.card[name].stonehidden) return true; var type = lib.card[name].type; return type != "stonecard" && type != "stonecharacter"; }, { seperate: function (list) { var nl = [], ns = []; var career = {}; var careerspell = {}; for (var i = 0; i < lib.careerList.length; i++) { career[lib.careerList[i]] = []; careerspell[lib.careerList[i]] = []; } var result = { list: {}, }; for (var i = 0; i < list.length; i++) { if (lib.card[list[i][2]].type == "stonecard") { if ( lib.card[list[i][2]].career && lib.careerList.includes(lib.card[list[i][2]].career) ) { careerspell[lib.card[list[i][2]].career].push(list[i]); } else { ns.push(list[i]); } } else { if ( lib.card[list[i][2]].career && lib.careerList.includes(lib.card[list[i][2]].career) ) { career[lib.card[list[i][2]].career].push(list[i]); } else { nl.push(list[i]); } } } for (var i = 0; i < lib.careerList.length; i++) { result.list[get.translation(lib.careerList[i])] = careerspell[ lib.careerList[i] ].concat(career[lib.careerList[i]]); result[ "法术·" + get.translation(lib.careerList[i]) + "_link:" + lib.careerList[i] ] = careerspell[lib.careerList[i]]; result[ "随从·" + get.translation(lib.careerList[i]) + "_link:" + lib.careerList[i] ] = career[lib.careerList[i]]; } result.list["中立"] = ns.concat(nl); result["法术·中立"] = ns; result["随从·中立"] = nl; return result; }, } ); for (var i = 0; i < cardDialog.buttons.length; i++) { if (cardDialog.buttons[i].node.info.innerHTML.indexOf("随从") != -1) { var buttonName = cardDialog.buttons[i].link[2]; buttonName = buttonName.slice(0, buttonName.indexOf("_stonecharacter")); buttonName = lib.character[buttonName]; cardDialog.buttons[i].node.info.innerHTML = buttonName[5][1] + "/" + buttonName[2]; } lib.setIntro(cardDialog.buttons[i]); } var updateCardDialog = function (button) { if (!deckContainer.classList.contains("shown")) { for (var i = 0; i < cardDialog.buttons.length; i++) { cardDialog.buttons[i].classList.remove("unselectable"); } for (var i = 0; i < cardDialog.content.childElementCount; i++) { cardDialog.content.childNodes[i].classList.remove("nodisplay"); } return; } if (deckContainer.childElementCount >= 30) { for (var i = 0; i < cardDialog.buttons.length; i++) { cardDialog.buttons[i].classList.add("unselectable"); } } else { var nummap = {}; for (var i = 0; i < deckContainer.childElementCount; i++) { var name = deckContainer.childNodes[i].name; if (!nummap[name]) { nummap[name] = 1; } else { nummap[name]++; } } var list = []; for (var i in nummap) { if (nummap[i] >= 2) { list.push(i); } } for (var i = 0; i < cardDialog.buttons.length; i++) { if (list.includes(cardDialog.buttons[i].link[2])) { cardDialog.buttons[i].classList.add("unselectable"); } else { cardDialog.buttons[i].classList.remove("unselectable"); } } } var career = cardDialog.editing.content.career; for (var i = 0; i < cardDialog.content.childElementCount; i++) { var currentNode = cardDialog.content.childNodes[i]; if (currentNode.link) { if (currentNode.link == career) { currentNode.classList.remove("nodisplay"); currentNode.nextSibling.classList.remove("nodisplay"); } else { currentNode.classList.add("nodisplay"); currentNode.nextSibling.classList.add("nodisplay"); } } } cardCount.innerHTML = deckContainer.childElementCount + "/30"; }; var clickCard = function () { this.remove(); updateCardDialog(); }; var clickButton = function () { if (!deckContainer.classList.contains("shown")) return; if (!this.classList.contains("unselectable")) { var card = ui.create.card(null, "noclick").init(this.link).listen(clickCard); deckContainer.insertBefore(card, deckContainer.firstChild); updateCardDialog(); } }; for (var i = 0; i < cardDialog.buttons.length; i++) { cardDialog.buttons[i].listen(clickButton); } cardDialog.classList.add("fullheight"); cardDialog.classList.add("scroll1"); cardDialog.classList.add("scroll2"); cardDialog.classList.add("fixed"); cardDialog.listen(function (e) { e.stopPropagation(); }); ui.deckBuilder.appendChild(cardDialog); var deckList = ui.create.div(".shadowed.list", ui.deckBuilder, function (e) { e.stopPropagation(); if (careerList.classList.contains("shown")) { careerList.classList.remove("shown"); newDeck.classList.remove("active"); } }); var editDeck = function () { if (!cardDialog.classList.contains("shown")) { cardDialog.classList.add("shown"); controls.classList.add("shown"); var info = lib.storage.deckList[this.name]; cardDialog.editing = { origin: this.name, name: this.name, content: { career: info.career, deck: info.deck, }, }; rename.innerHTML = this.name; newDeck.innerHTML = "确认编辑"; newDeck.classList.add("active"); careerList.classList.remove("shown"); listContainer.style.transform = "translateX(200px)"; deckContainer.innerHTML = ""; for (var i = 0; i < info.deck.length; i++) { ui.create .card(deckContainer, "noclick") .init(["", get.translation(lib.card[info.deck[i]].type), info.deck[i]]) .listen(clickCard); } deckContainer.classList.add("shown"); updateCardDialog(); } }; var newDeck = ui.create.div( ".menubutton.large.create", "新建卡组", deckList, function (e) { if (this.innerHTML == "新建卡组") { this.classList.toggle("active"); if (this.classList.contains("active")) { careerList.classList.add("shown"); } else { careerList.classList.remove("shown"); } } else { cardDialog.classList.remove("shown"); controls.classList.remove("shown"); this.innerHTML = "新建卡组"; this.classList.remove("active"); var editing = cardDialog.editing; if (editing) { editing.content.deck.length = 0; for (var i = 0; i < deckContainer.childElementCount; i++) { editing.content.deck.push(deckContainer.childNodes[i].name); } editing.content.deck.sort(function (a, b) { if (a > b) return 1; if (a < b) return -1; return 0; }); if (editing.origin) { for (var i = 0; i < listContainer.childElementCount; i++) { if (listContainer.childNodes[i].name == editing.origin) { listContainer.childNodes[i].name = editing.name; listContainer.childNodes[i].firstChild.innerHTML = editing.name; break; } } delete lib.storage.deckList[editing.origin]; } else if (!lib.storage.deckList[editing.name]) { var deckitem = ui.create.div( ".deckitem.shadowed", "" + editing.name + "", listContainer, editDeck ); ui.create.div(".menubutton.round", deckitem).dataset.career = editing.content.career; deckitem.name = editing.name; } lib.storage.deckList[editing.name] = editing.content; } game.save("deckList", lib.storage.deckList); listContainer.style.transform = ""; deckContainer.classList.remove("shown"); updateCardDialog(); } e.stopPropagation(); } ); var listContainer = ui.create.div(".list-container", deckList); for (var i in lib.storage.deckList) { var deckitem = ui.create.div( ".deckitem.shadowed", "" + i + "", listContainer, editDeck ); ui.create.div(".menubutton.round", deckitem).dataset.career = lib.storage.deckList[i].career; deckitem.name = i; } var deckContainer = ui.create.div(".list-container.deck", deckList); if (ui.deckcontrol) { ui.deckcontrol.show(); setTimeout(function () { if (ui.deckcontrol) ui.deckcontrol.style.transition = ""; }, 500); } }; ui.deckcontrol = ui.create.system( "卡组管理", function () { if (this.classList.contains("hidden")) return; // if(lib.config.low_performance){ // ui.arena.style.transform='translateY('+ui.window.offsetHeight+'px)'; // } // else{ // ui.arena.style.top='100%'; // } // ui.arena.style.transform='scale(0.6)'; ui.arena.style.opacity = 0; ui.system.style.opacity = 0; ui.window.appendChild(ui.deckBuilder); if (ui.deckBuilder.timeout) { clearTimeout(ui.deckBuilder.timeout); delete ui.deckBuilder.timeout; } ui.refresh(ui.deckBuilder); ui.deckBuilder.classList.add("shown"); ui.auto.hide(); ui.pause.hide(); ui.historybar.hide(); }, true ); if (lib.onfree) { ui.deckcontrol.style.transition = "all 0.5s"; ui.deckcontrol.hide(); lib.onfree.push(createCardDialog); } else { createCardDialog(); } } if (playback) { ui.create.me(); ui.arena.style.display = "none"; ui.system.style.display = "none"; _status.playback = playback; localStorage.removeItem(lib.configprefix + "playback"); var store = lib.db.transaction(["video"], "readwrite").objectStore("video"); store.get(parseInt(playback)).onsuccess = function (e) { if (e.target.result) { game.playVideoContent(e.target.result.video); } else { alert("播放失败:找不到录像"); game.reload(); } }; event.finish(); } else { game.prepareArena(2); // game.delay(); } ui.arena.classList.add("stone"); "step 1"; for (var i = 0; i < game.players.length; i++) { game.players[i].getId(); game.players[i].classList.add("noidentity"); } game.enemy = game.me.next; game.chooseCharacter(); "step 2"; if (_status.mode == "deck") { _status.deckButton = ui.create.system("卡组", null, true); lib.setPopped( _status.deckButton, function () { var uiintro = ui.create.dialog("hidden"); uiintro.listen(function (e) { e.stopPropagation(); }); uiintro.add( '剩余 ' + game.me.deckCards.length ); uiintro.addSmall([game.me.deckCards, "card"]); return uiintro; }, 220 ); if (get.config("skill_bar")) { _status.rageEnabled = true; ui.friendBar = ui.create.div(".skillbar.right.shadowed.playerbg", ui.arena); ui.enemyBar = ui.create.div(".skillbar.left.shadowed.playerbg", ui.arena); // ui.friendBar.dataset.nature='metal'; // ui.enemyBar.dataset.nature='fire'; ui.create.div(".skillbarshadow", ui.friendBar); ui.create.div(".skillbarshadow", ui.enemyBar); ui.create.div(".skillbarfill", ui.friendBar); ui.create.div(".skillbarfill", ui.enemyBar); ui.friendBar.fillnode = ui.create.div(ui.friendBar.lastChild); ui.enemyBar.fillnode = ui.create.div(ui.enemyBar.lastChild); // ui.friendBar.popnode=ui.create.div('.skillbartext',ui.friendBar); // ui.enemyBar.popnode=ui.create.div('.skillbartext',ui.enemyBar); _status.friendRage = 0; _status.enemyRage = 0; lib.setIntro(ui.friendBar, null, true); lib.setIntro(ui.enemyBar, null, true); } } _status.friendCount = ui.create.system("", null, true); _status.enemyCount = ui.create.system("", null, true); game.updateStatusCount(); lib.setPopped(_status.friendCount, function () { var uiintro = ui.create.dialog("hidden"); if (_status.deadfriend.length) { uiintro.add("已阵亡"); uiintro.add([_status.deadfriend, "player"]); } uiintro.add("未上场"); if (_status.mylist.length) { uiintro.add([_status.mylist, "character"]); } else { uiintro.add("(无)"); } return uiintro; }); lib.setPopped(_status.enemyCount, function () { if (_status.deadenemy.length) { var uiintro = ui.create.dialog("hidden"); uiintro.add("已阵亡"); uiintro.add([_status.deadenemy, "player"]); return uiintro; } }); game.me.side = Math.random() < 0.5; game.enemy.side = !game.me.side; var players = get.players(lib.sort.position); var info = []; for (var i = 0; i < players.length; i++) { info.push({ name: players[i].name1, name2: players[i].name2, count: players[i].actcount, }); } (_status.videoInited = true), game.addVideo("init", null, info); event.trigger("gameStart"); if (_status.mode == "deck") { game.gameDraw(game.me, 3); game.me.drawDeck(1, false); game.me.next.drawDeck(1, false); } else { game.gameDraw(game.me); } "step 3"; game.me.chooseBool("是否置换手牌?"); "step 4"; if (result.bool) { var hs = game.me.getCards("h"); for (var i = 0; i < hs.length; i++) { hs[i].discard(false); } if (_status.mode == "deck") { game.me.drawDeck(1, false); game.me.directgain(get.cards(3)); } else { game.me.directgain(get.cards(4)); } } "step 5"; if (game.me.side) { game.stoneLoop(game.me); } else { game.stoneLoop(game.enemy); } }, element: { content: { addFellowAuto: function () { "step 0"; if (!player.canAddFellow()) { event.finish(); return; } var name = event.fellowName; var added = false; var i; for (i = 0; i < player.actcharacterlist.length; i++) { if (player.actcharacterlist[i] === null) { added = true; break; } } var pos = i + 4; if (player != game.me) { pos += 4; } var fellow = game.addFellow(pos, name, "zoominanim"); fellow.side = player.side; fellow.classList.add("turnedover"); player.actcharacterlist[i] = fellow; event.source = fellow; var num = lib.character[name][5][1]; if (num) { fellow.draw(num, false); } player.updateActCount(); if (fellow.hasSkillTag("noPhaseDelay") || event.delay === false) { fellow.noPhaseDelay = true; } // player.line(fellow,'green'); "step 1"; event.trigger("fellow"); event.result = event.source; }, }, stonecharacter: { type: "stonecharacter", fullimage: true, enable: function (event, player) { return player.canAddFellow(); }, recastable: function (event, player) { return !player.isMin() && !player.canAddFellow(); }, notarget: true, content: function () { "step 0"; var name = card.name.slice(0, card.name.indexOf("_stonecharacter")); var added = false; var i; for (i = 0; i < player.actcharacterlist.length; i++) { if (player.actcharacterlist[i] === null) { added = true; break; } } var pos = i + 4; if (player != game.me) { pos += 4; } var fellow = game.addFellow(pos, name); fellow.side = player.side; fellow.classList.add("turnedover"); player.actcharacterlist[i] = fellow; fellow.$gain2(card); event.source = fellow; var num = lib.character[name][5][1]; if (num) { fellow.draw(num, false); } player.updateActCount(); if (fellow.hasSkillTag("noPhaseDelay")) { fellow.noPhaseDelay = true; } "step 1"; event.trigger("fellow"); }, ai: { order: 8.5, useful: [5.5, 1], result: { player: 1, }, }, }, player: { init: function (player) { if (!player.isMin() || player.forcemin) { if (!player.node.actcount) { player.node.actcount = ui.create.div(".actcount.hp", player); } if (typeof player.actcount !== "number") { player.actcount = 0; } player.actused = 0; if (!player.actcharacterlist) { player.actcharacterlist = []; } player.updateActCount(); } }, changeRage: function (num) { if (_status.mode != "deck") return; if (!_status.rageEnabled) return; var popup = null; if (this.side == game.me.side) { if (_status.friendRage < 100) { popup = ui.friendBar; } _status.friendRage += num; if (_status.friendRage < 0) { _status.friendRage = 0; } if (_status.friendRage >= 100) { _status.friendRage = 100; ui.friendBar.fillnode.style.top = "-50%"; ui.friendBar.classList.add("full"); } else { ui.friendBar.fillnode.style.top = 100 - _status.friendRage + "%"; ui.friendBar.classList.remove("full"); } } else { if (_status.enemyRage < 100) { popup = ui.enemyBar; } _status.enemyRage += num; if (_status.enemyRage < 0) { _status.enemyRage = 0; } if (_status.enemyRage >= 100) { _status.enemyRage = 100; ui.enemyBar.fillnode.style.top = "-50%"; ui.enemyBar.classList.add("full"); } else { ui.enemyBar.fillnode.style.top = 100 - _status.enemyRage + "%"; ui.enemyBar.classList.remove("full"); } } if (num > 0 && popup) { var node = ui.create.div(".skillbartext", num.toString(), popup); ui.refresh(node); node.style.opacity = 1; setTimeout(function () { node.delete(); }, 700); } }, drawDeck: function (num, log) { if (!num) { num = 1; } var cards = this.getDeckCards(num); if (log == false) { this.directgain(cards); } else if (log == true) { this.directgain(cards); game.log(this, "从牌库中获得了" + get.cnNumber(num) + "张牌"); } else { this.gain(cards, "draw"); game.log(this, "从牌库中获得了" + get.cnNumber(num) + "张牌"); } return cards; }, updateActCount: function (used, countx, current) { if (_status.video) { this.actcount = countx || 2; } else { game.addVideo("updateActCount", this, [used, this.actcount, this.getActCount()]); } var maxcount, overflow2; if (game.layout == "default" || used == "outphase" || _status.currentPhase != this) { maxcount = this.actcount; } else { if (_status.video) { maxcount = this.actcount - (current || 0); } else { maxcount = this.actcount - this.getActCount(); } if (this.actcount > maxcount) { maxcount = this.actcount; } if (maxcount > 12) { maxcount = this.actcount + 1; this.node.actcount.classList.add("overflow2"); } else { this.node.actcount.classList.remove("overflow2"); } } for (var i = 0; i < 12; i++) { if (maxcount > this.node.actcount.childElementCount) { ui.create.div(this.node.actcount); } else if (maxcount < this.node.actcount.childElementCount) { this.node.actcount.lastChild.remove(); } else { break; } } if (used !== false) { var count; if (_status.video) { count = this.actcount - (current || 0); } else { count = this.actcount - this.getActCount(); } for (var i = 0; i < this.node.actcount.childElementCount; i++) { if (i < count) { this.node.actcount.childNodes[i].classList.remove("lost"); if (i >= this.actcount) { this.node.actcount.childNodes[i].classList.add("overflow"); } else { this.node.actcount.childNodes[i].classList.remove("overflow"); } } else { this.node.actcount.childNodes[i].classList.add("lost"); this.node.actcount.childNodes[i].classList.remove("overflow"); } } } }, getAct: function () { return this.actcount - this.getActCount(); }, hasFellowSkill: function (skill, exclude) { for (var i = 0; i < game.players.length; i++) { if (exclude && game.players[i] == this) continue; if (game.players[i].hasSkill(skill) && game.players[i].side == this.side) { return true; } } return false; }, countFellowSkill: function (skill, exclude) { var num = 0; for (var i = 0; i < game.players.length; i++) { if (exclude && game.players[i] == this) continue; if (game.players[i].hasSkill(skill) && game.players[i].side == this.side) { num++; } } return num; }, canAddFellow: function () { if (!this.actcharacterlist) return false; if (this.actcharacterlist.length < 4) return true; for (var i = 0; i < this.actcharacterlist.length; i++) { if (this.actcharacterlist[i] === null) return true; } return false; }, getDeckCards: function (num) { if (typeof num != "number") { num = 1; } if (!this.deckCards) { return get.cards(num); } var player = this; for (var i = 0; i < 5; i++) { if (player.deckCards.length < num) { get.deck(player, player.deck); } else { break; } } var list = []; for (var i = 0; i < num; i++) { list.push(player.deckCards.randomRemove()); } return list; }, getActCount: function () { return this.countUsed() + (this.actused || 0); }, getLeader: function () { return this.side == game.me.side ? game.me : game.enemy; }, getEnemy: function () { return this.side != game.me.side ? game.me : game.enemy; }, hasFellow: function () { if (!this.actcharacterlist) return false; for (var i = 0; i < this.actcharacterlist.length; i++) { if (this.actcharacterlist[i]) return true; } return false; }, getFellow: function (enemy) { var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin()) { if (enemy) { if (game.players[i].side != this.side) { list.push(game.players[i]); } } else { if (game.players[i].side == this.side) { list.push(game.players[i]); } } } } return list; }, countFellow: function () { if (!this.actcharacterlist) return 0; var num = 0; for (var i = 0; i < this.actcharacterlist.length; i++) { if (this.actcharacterlist[i]) num++; } return num; }, addFellow: function (fellow) { if (!this.actcharacterlist) return this; var i; for (i = 0; i < this.actcharacterlist.length; i++) { if (this.actcharacterlist[i] === null) { break; } } this.actcharacterlist[i] = fellow; game.addVideo("stonePosition", null, [ fellow.dataset.position, i + 4 + (this == game.me ? 0 : 4), ]); fellow.dataset.position = i + 4 + (this == game.me ? 0 : 4); return this; }, addFellowAuto: function (name, delay) { var next = game.createEvent("addFellowAuto"); next.player = this; next.fellowName = name; if (typeof delay == "boolean") { next.delay = delay; } next.setContent("addFellowAuto"); }, removeFellow: function (fellow) { if (!this.actcharacterlist) return this; var index = this.actcharacterlist.indexOf(fellow); if (index >= 0) { this.actcharacterlist[index] = null; } return this; }, dieAfter: function (source) { var dead = this; if (game.me.isDead()) { if (!_status.mylist.length) { _status.friendCount.innerHTML = "友军: " + get.cnNumber(0); game.over(false); } } else if (game.enemy.isDead()) { if (!_status.enemylist.length) { _status.enemyCount.innerHTML = "敌军: " + get.cnNumber(0); game.over(true); } } }, dieAfter2: function (source) { var dead = this; if (game.me.isDead()) { if (!_status.mylist.length) { _status.friendCount.innerHTML = "友军: " + get.cnNumber(0); game.over(false); } else { game.pause(); _status.deadfriend.push(this); game.additionaldead.push(this); setTimeout(function () { var player = ui.create.player(); player.getId(); player.classList.add("noidentity"); player.dataset.position = dead.dataset.position; player.side = dead.side; player.actcharacterlist = dead.actcharacterlist; player.addTempClass("replaceme"); player.actcount = game.enemy.actcount; player.actcount = dead.actcount; if (_status.double_character) { player.init(_status.mylist.shift(), _status.mylist.shift()); } else { player.init(_status.mylist.shift()); } player.maxHp++; player.hp++; if (_status.mode == "deck") { get.deck(player, _status.deck.shift()); } game.players.push(player); ui.arena.appendChild(player); game.addVideo("stoneSwap", null, { name: player.name1, name2: player.name2, position: player.dataset.position, actcount: player.actcount, me: true, }); game.swapControl(player); game.arrangePlayers(); if (_status.mode == "deck") { var nd = game.enemy.countFellow(); if (nd) { player.draw(3 + nd, { drawDeck: nd }, false); } else { player.draw(3, false); } } else { player.draw(3 + game.enemy.countFellow(), false); } game.resume(); game.updateStatusCount(); }, lib.config.duration); } } else if (game.enemy.isDead()) { if (!_status.enemylist.length) { _status.enemyCount.innerHTML = "敌军: " + get.cnNumber(0); game.over(true); } else { game.pause(); _status.deadenemy.push(this); game.additionaldead.push(this); setTimeout(function () { var player = ui.create.player(); player.getId(); player.classList.add("noidentity"); player.dataset.position = dead.dataset.position; player.side = dead.side; player.actcharacterlist = dead.actcharacterlist; player.addTempClass("replaceenemy"); player.actcount = dead.actcount; if (_status.double_character) { player.init(_status.enemylist.shift(), _status.enemylist.shift()); } else { player.init(_status.enemylist.shift()); } player.maxHp++; player.hp++; if (_status.mode == "deck") { get.deck(player, "random"); } game.players.push(player); game.enemy = player; ui.arena.appendChild(player); game.addVideo("stoneSwap", null, { name: player.name1, name2: player.name2, position: player.dataset.position, actcount: player.actcount, }); game.arrangePlayers(); if (_status.mode == "deck") { var nd = game.me.countFellow(); if (nd) { player.draw(3 + nd, { drawDeck: nd }, false); } else { player.draw(3, false); } } else { player.draw(3 + game.me.countFellow(), false); } game.resume(); game.updateStatusCount(); }, lib.config.duration); } } if (source && source.side != this.side && !source.isMin()) { if (_status.mode == "deck") { source.drawDeck(); } else { source.draw(); } source.actused--; source.updateActCount(); } game.dead.remove(this); game.arrangePlayers(); this.getLeader().removeFellow(this); setTimeout(function () { dead.delete(); }, 500); }, }, }, beastList: [ "stone_misha", "stone_leiouke", "stone_huofu", "stone_caoyuanshi", "stone_jiewangzhu", "stone_huangjialeixiang", "stone_damoshatuo", "stone_tujiu", "stone_senlinlang", "stone_fennuxiaoji", "stone_juxingchanchu", "stone_yanjingshe", "stone_yuanhou", ], cardPack: { mode_stone: [ "spell_xiaoshi", "spell_chenmo", "spell_morizaihuo", "spell_shengerpingdeng", "spell_jingshenkongzhi", "spell_anyingkuangluan", "spell_binghuan", "spell_yanmie", "spell_zhiliaozhichu", "spell_wangzhezhufu", "spell_diyulieyan", "spell_zhiliaoshui", "spell_hanbingjian", "spell_huoqiushu", "spell_bianxingshu", "spell_aoshuzhihui", "spell_baofengxue", "spell_lieyanfengbao", "spell_shandianfengbao", "spell_chazhuangshandian", "spell_yaoshu", "spell_shixue", "spell_lianhuanbaolie", "spell_yexinglanghun", "spell_fuchouzhinu", "spell_liliangzhufu", "spell_fennuzhichui", "spell_fengxian", "spell_zuozhandongyuan", "spell_shengliaoshu", "spell_cigu", "spell_modaoyou", "spell_jianrenluanwu", "spell_daoshan", "spell_cisha", "spell_sijidaifa", "spell_huotigenxu", "spell_wuyashenxiang", "spell_ziranzhili", "spell_yemanpaoxiao", "spell_hengsao", "spell_yexingchengzhang", "spell_xishengqiyue", "spell_zuzhou", "spell_xiaoguibaopo", "spell_emozhinu", "spell_anyinglieyan", "spell_liliangdaijia", "spell_shenshengxinxing", "spell_shengguangzhadan", "spell_maizang", "spell_xinlingshijie", "spell_naluzhiguang", "spell_zhiliaozhihuan", "spell_nuxi", "spell_dunpaimengji", "spell_zhansha", "spell_nuhuozhongshao", "spell_xuanfengzhan", "spell_juemingluandou", "spell_lierenyinji", "spell_kuaisusheji", "spell_guanmenfanggou", "spell_zhaohuanchongwu", "spell_zidanshangtang", "spell_duochongsheji", "spell_xianzuzhihun", "spell_xianzuzhaohuan", "spell_fengnu", "spell_shihuawuqi", "spell_xianzuzhishi", "spell_rongyanbaolie", "spell_laojiuhuoba", "spell_chirehuoba", "spell_aoshufeidan", "spell_canying", "spell_yanbaoshu", "spell_hanbingpingzhang", "spell_jingxiang", "spell_mengun", "spell_jipao", "spell_beici", "spell_weijisifu", "spell_zhumo", "spell_anzhongpohuai", "spell_piaoqie", "spell_conglinzhihun", "spell_heiandiyu", "spell_fugen", "spell_xingchenzhuiluo", "spell_fennu", "spell_ziyang", "spell_shalumingling", "spell_tianjiangzhuqun", "spell_tanxianmao", "spell_dubiao", "spell_qiangfengsheji", "spell_zhuizongshu", "spell_zhenyanshu", "spell_enzeshu", "spell_anyingxingtai", "spell_kuaisuzhiliao", "spell_kongxinshu", "spell_xinlinghanbao", "spell_jinyingduijue", "spell_zhihuizhufu", "spell_shenshengfennu", "spell_yongshizhufu", "spell_shenpan", "spell_zhengqianghaosheng", "spell_zhongnian", "spell_fuchoudaji", "spell_yingyongdaji", "spell_zhandounuhuo", "spell_chongfeng", "spell_kuangbao", "spell_linghunhongxi", "spell_siwangchanrao", "spell_emozhixin", "spell_fushishu", "spell_ansezhadan", "spell_heianqiyue", ], }, characterPack: { mode_stone: { stone_tutengyongshi: [ "male", "wei", 4, ["shaman_jili"], ["minskin", "stone"], [4, 2, "shaman"], ], stone_xuejuren: ["male", "wei", 2, ["shaman_xueju"], ["minskin", "stone"], [1, 1, "shaman"]], stone_tuyuansu: ["male", "qun", 5, ["lschaofeng"], ["minskin", "stone"], [5, 4, "shaman"]], stone_huoyuansu: ["male", "shu", 3, ["shaman_huoxi"], ["minskin", "stone"], [4, 3, "shaman"]], stone_fachao: [ "male", "wei", 3, ["shaman_tuteng", "shaman_fachao"], ["minskin", "stone"], [3, 0, "shaman"], ], stone_huoshe: [ "male", "shu", 3, ["shaman_tuteng", "shaman_huoshe"], ["minskin", "stone"], [3, 0, "shaman"], ], stone_huoli: [ "male", "wei", 3, ["shaman_tuteng", "shaman_huoli"], ["minskin", "stone"], [2, 0, "shaman"], ], stone_huoyanweishi: [ "male", "shu", 4, ["shaman_zhuhuo"], ["minskin", "stone"], [4, 1, "shaman"], ], stone_tutengshi: [ "female", "wei", 2, ["shaman_peiyu"], ["minskin", "stone"], [3, 3, "shaman"], ], stone_shachuisaman: [ "male", "qun", 3, ["shaman_fengnu"], ["minskin", "stone"], [4, 4, "shaman"], ], stone_wanshiyuansu: [ "male", "qun", 3, ["shaman_zoushi"], ["minskin", "stone"], [3, 1, "shaman"], ], stone_shalinxingzhe: [ "male", "qun", 4, ["shaman_anhun"], ["minskin", "stone"], [4, 2, "shaman"], ], stone_kuangyedoushi: [ "male", "wu", 3, ["druid_nuhuo"], ["minskin", "stone"], [4, 2, "druid"], ], stone_conglinshouwei: [ "male", "wu", 3, ["druid_huwei"], ["minskin", "stone"], [4, 2, "druid"], ], stone_baohuzhishu: ["male", "qun", 6, ["lschaofeng"], ["minskin", "stone"], [6, 4, "druid"]], stone_liebao: ["male", "wei", 3, ["stone_chongfeng"], ["minskin", "stone"], [3, 2, "druid"]], stone_zongxiong: ["male", "shu", 4, ["lschaofeng"], ["minskin", "stone"], [4, 2, "druid"]], stone_baoqishi: [ "female", "wei", 2, ["druid_chengzhang"], ["minskin", "stone"], [2, 2, "druid"], ], stone_renyaqishi: [ "female", "wei", 1, ["druid_renya"], ["minskin", "stone"], [1, 1, "druid"], ], stone_huangyeqishi: [ "male", "wei", 4, ["druid_chicheng"], ["minskin", "stone"], [5, 2, "druid"], ], stone_huoshanxiemu: [ "male", "wei", 3, ["druid_juhuo", "lschaofeng"], ["minskin", "stone"], [5, 6, "druid"], ], stone_conglinxiaoshou: [ "male", "wei", 3, ["druid_yuehuo"], ["minskin", "stone"], [4, 4, "druid"], ], stone_lindishuyao: [ "female", "wei", 3, ["druid_yeyou"], ["minskin", "stone"], [3, 3, "druid"], ], stone_xunmenglong: [ "male", "wei", 2, ["druid_qicheng"], ["minskin", "stone"], [3, 3, "druid"], ], stone_caoyuanshi: [ "male", "qun", 5, ["hunter_nuhou"], ["minskin", "stone"], [5, 2, "hunter"], ], stone_leiouke: ["male", "shu", 2, ["hunter_zhanhuo"], ["minskin", "stone"], [3, 1, "hunter"]], stone_huofu: ["male", "qun", 2, ["stone_chongfeng"], ["minskin", "stone"], [3, 4, "hunter"]], stone_misha: ["male", "shu", 3, ["lschaofeng"], ["minskin", "stone"], [3, 3, "hunter"]], stone_jiewangzhu: [ "male", "wu", 1, ["hunter_jiewang"], ["minskin", "stone"], [1, 2, "hunter"], ], stone_xunshoushi: [ "male", "qun", 2, ["hunter_xunshou"], ["minskin", "stone"], [4, 3, "hunter"], ], stone_senlinlang: [ "male", "qun", 1, ["hunter_qunxi"], ["minskin", "stone"], [1, 2, "hunter"], ], stone_tujiu: ["male", "qun", 3, ["hunter_mishi"], ["minskin", "stone"], [3, 2, "hunter"]], stone_muyangren: [ "male", "qun", 3, ["hunter_muyang"], ["minskin", "stone"], [4, 3, "hunter"], ], stone_jujishou: ["male", "qun", 2, ["hunter_juji"], ["minskin", "stone"], [2, 2, "hunter"]], stone_damoshatuo: [ "male", "qun", 3, ["hunter_dusha"], ["minskin", "stone"], [3, 3, "hunter"], ], stone_huangjialeixiang: [ "male", "qun", 2, ["hunter_chuanlin"], ["minskin", "stone"], [2, 3, "hunter"], ], stone_shuiyuansu: ["male", "wei", 4, ["mage_bingdong"], ["minskin", "stone"], [4, 2, "mage"]], stone_wushixuetu: ["female", "wu", 1, ["mage_zhufa"], ["minskin", "stone"], [1, 2, "mage"]], stone_huoyao: ["male", "shu", 3, ["mage_lieyan"], ["minskin", "stone"], [3, 1, "mage"]], stone_falifulong: ["male", "shu", 2, ["mage_tunfa"], ["minskin", "stone"], [1, 1, "mage"]], stone_yingxiongzhihun: [ "male", "wei", 1, ["mage_minghuo"], ["minskin", "stone"], [1, 2, "mage"], ], stone_shifazhe: ["male", "qun", 3, ["mage_shifa"], ["minskin", "stone"], [3, 3, "mage"]], stone_aoshushi: ["male", "qun", 3, ["mage_aoshu"], ["minskin", "stone"], [3, 2, "mage"]], stone_faqishi: ["male", "qun", 4, ["mage_jili"], ["minskin", "stone"], [4, 2, "mage"]], stone_fuhuokaijia: ["male", "qun", 3, ["mage_gushou"], ["minskin", "stone"], [3, 3, "mage"]], stone_kaodalalong: ["male", "qun", 4, ["mage_yufa"], ["minskin", "stone"], [5, 4, "mage"]], stone_yanshushi: ["male", "qun", 2, ["mage_yanshu"], ["minskin", "stone"], [4, 4, "mage"]], stone_xulingwushi: ["male", "qun", 2, ["mage_pingxu"], ["minskin", "stone"], [3, 3, "mage"]], stone_hudunren: [ "male", "qun", 2, ["paladin_hudun"], ["minskin", "stone"], [2, 2, "paladin"], ], stone_junxuguan: [ "male", "qun", 3, ["paladin_buji"], ["minskin", "stone"], [4, 1, "paladin"], ], stone_yurenqishi: [ "male", "qun", 2, ["paladin_zhaochao"], ["minskin", "stone"], [4, 2, "paladin"], ], stone_chidunweishi: [ "male", "qun", 3, ["paladin_chidun"], ["minskin", "stone"], [3, 2, "paladin"], ], stone_liewangshouwei: [ "male", "qun", 5, ["paladin_shouwei"], ["minskin", "stone"], [5, 2, "paladin"], ], stone_longwangpeiou: [ "female", "qun", 4, ["paladin_zhaohuan"], ["minskin", "stone"], [5, 4, "paladin"], ], stone_baoweizhe: [ "male", "qun", 2, ["paladin_baowei"], ["minskin", "stone"], [2, 1, "paladin"], ], stone_guiqishi: ["male", "qun", 5, ["paladin_tuxi"], ["minskin", "stone"], [5, 4, "paladin"]], stone_shenmiqishou: [ "male", "qun", 4, ["paladin_miying"], ["minskin", "stone"], [5, 4, "paladin"], ], stone_shixiangweishi: [ "female", "qun", 3, ["paladin_huashi"], ["minskin", "stone"], [3, 3, "paladin"], ], stone_xuefanzhanshi: [ "male", "qun", 3, ["paladin_jinghua"], ["minskin", "stone"], [4, 4, "paladin"], ], stone_xunmashi: ["male", "qun", 3, ["paladin_moma"], ["minskin", "stone"], [3, 2, "paladin"]], stone_lieyanxiaogui: [ "male", "qun", 2, ["warlock_nonghuo"], ["minskin", "stone"], [1, 4, "warlock"], ], stone_xiaoguishouling: [ "male", "qun", 3, ["warlock_zhaogui"], ["minskin", "stone"], [3, 1, "warlock"], ], stone_xiaogui: ["male", "qun", 1, [], ["minskin", "stone", "stonehidden"], [1, 1]], stone_kongjuzhanma: [ "male", "qun", 1, ["warlock_yongsheng"], ["minskin", "stone"], [3, 1, "warlock"], ], stone_morishouwei: [ "male", "qun", 4, ["stone_chongfeng", "warlock_zaihuo"], ["minskin", "stone"], [4, 4, "warlock"], ], stone_xukongxingzhe: [ "male", "qun", 2, ["lschaofeng"], ["minskin", "stone"], [1, 1, "warlock"], ], stone_diyuhuo: ["male", "qun", 4, ["warlock_yuhuo"], ["minskin", "stone"], [5, 4, "warlock"]], stone_diyuhuox: [ "male", "qun", 2, [], ["minskin", "stone", "stonehidden"], [2, 2, "warlock"], ], stone_heishitanfan: [ "male", "qun", 2, ["warlock_anyu"], ["minskin", "stone"], [2, 2, "warlock"], ], stone_zhaohuanzhe: [ "male", "qun", 3, ["warlock_zhaohuan"], ["minskin", "stone"], [4, 2, "warlock"], ], stone_meimo: [ "male", "qun", 3, ["warlock_huanmeng"], ["minskin", "stone"], [2, 3, "warlock"], ], stone_tongkunvwang: [ "male", "qun", 2, ["warlock_tongku"], ["minskin", "stone"], [2, 1, "warlock"], ], stone_xukongkongmo: [ "male", "qun", 3, ["warlock_tunshi"], ["minskin", "stone"], [3, 3, "warlock"], ], stone_fukongmoyan: [ "male", "qun", 4, ["warlock_shijie"], ["minskin", "stone"], [5, 4, "warlock"], ], stone_zhihuiguan: [ "female", "qun", 2, ["warrior_tongling"], ["minskin", "stone"], [3, 2, "warrior"], ], stone_kuangzhanshi: [ "male", "qun", 2, ["warrior_baoluan"], ["minskin", "stone"], [3, 1, "warrior"], ], stone_zhujiashi: [ "male", "qun", 2, ["warrior_zhujia"], ["minskin", "stone"], [2, 1, "warrior"], ], stone_jiangong: [ "male", "qun", 2, ["warrior_jiangong"], ["minskin", "stone"], [2, 2, "warrior"], ], stone_chidunshinv: [ "female", "qun", 4, ["warrior_tidun"], ["minskin", "stone"], [5, 4, "warrior"], ], stone_yuanhou: ["male", "qun", 2, ["lschaofeng"], ["minskin", "stone"], [2, 3, "warrior"]], stone_heiyaoyaoshou: [ "male", "qun", 4, ["warrior_heiyao"], ["minskin", "stone"], [5, 4, "warrior"], ], stone_honglongyongshi: [ "male", "qun", 2, ["warrior_fenyong"], ["minskin", "stone"], [2, 3, "warrior"], ], stone_peilianshi: [ "male", "qun", 2, ["lschaofeng", "warrior_peilian"], ["minskin", "stone"], [2, 2, "warrior"], ], stone_jingyingweishi: [ "male", "qun", 3, ["stone_chongfeng"], ["minskin", "stone"], [4, 3, "warrior"], ], stone_mengmaren: [ "male", "qun", 3, ["warrior_chuanci"], ["minskin", "stone"], [4, 4, "warrior"], ], stone_zhifuzhe: [ "male", "qun", 2, ["warrior_zhifu"], ["minskin", "stone"], [3, 1, "warrior"], ], stone_daomufeizei: [ "male", "qun", 3, ["rogue_xunbao"], ["minskin", "stone"], [4, 3, "rogue"], ], stone_qiezei: ["male", "qun", 2, ["rogue_touqie"], ["minskin", "stone"], [2, 2, "rogue"]], stone_heitieairen: [ "male", "qun", 2, ["rogue_qiancang"], ["minskin", "stone"], [4, 3, "rogue"], ], stone_tegong: ["male", "qun", 2, ["rogue_touxi"], ["minskin", "stone"], [3, 3, "rogue"]], stone_haidaotoumu: [ "male", "qun", 2, ["rogue_zhaomu"], ["minskin", "stone"], [2, 2, "rogue"], ], stone_haidao: ["male", "qun", 1, [], ["minskin", "stone", "stonehidden"], [1, 2, "rogue"]], stone_cike: [ "male", "qun", 1, ["rogue_cisha", "stone_qianxing"], ["minskin", "stone"], [1, 1, "rogue"], ], stone_duyanhaidao: [ "male", "qun", 2, ["rogue_duxing"], ["minskin", "stone"], [3, 4, "rogue"], ], stone_gangtiewushi: [ "male", "qun", 2, ["rogue_shoudao"], ["minskin", "stone"], [3, 2, "rogue"], ], stone_lifaji: ["male", "qun", 2, ["rogue_lifa"], ["minskin", "stone"], [2, 2, "rogue"]], stone_shihualong: [ "male", "qun", 1, ["rogue_fusheng"], ["minskin", "stone"], [3, 2, "rogue"], ], stone_xiushuihaidao: [ "male", "qun", 1, ["rogue_jielue"], ["minskin", "stone"], [1, 2, "rogue"], ], stone_zousishangfan: [ "male", "qun", 3, ["rogue_jiaoyi"], ["minskin", "stone"], [4, 3, "rogue"], ], stone_beijunmushi: [ "male", "qun", 2, ["priest_shengliao"], ["minskin", "stone"], [1, 1, "priest"], ], stone_guanliyuan: [ "male", "qun", 2, ["priest_faxian"], ["minskin", "stone"], [2, 1, "priest"], ], stone_linghunjisi: [ "female", "qun", 4, ["priest_hunwu"], ["minskin", "stone"], [4, 2, "priest"], ], stone_heianjiaotu: [ "male", "qun", 3, ["priest_zhufu"], ["minskin", "stone"], [3, 2, "priest"], ], stone_guangyaozhizi: [ "male", "qun", 3, ["priest_guangyao"], ["minskin", "stone"], [5, 3, "priest"], ], stone_longmianjiaoguan: [ "male", "qun", 2, ["priest_xundao"], ["minskin", "stone"], [2, 2, "priest"], ], stone_shengdianzhishi: [ "male", "qun", 4, ["priest_puzhao"], ["minskin", "stone"], [5, 4, "priest"], ], stone_suoxiaojishi: [ "male", "qun", 2, ["priest_suoxiao"], ["minskin", "stone"], [2, 2, "priest"], ], stone_anyingzisi: [ "male", "qun", 3, ["priest_shixin"], ["minskin", "stone"], [4, 4, "priest"], ], stone_guangmingquan: [ "male", "qun", 3, ["priest_shengshui"], ["minskin", "stone"], [2, 0, "priest"], ], stone_muguangchulong: [ "male", "qun", 2, ["priest_muguang"], ["minskin", "stone"], [1, 1, "priest"], ], stone_shenshengyongshi: [ "male", "qun", 3, ["priest_shengguang"], ["minskin", "stone"], [4, 3, "priest"], ], stone_zhongshi: ["male", "wei", 1, ["stone_zhongshi1"], ["minskin", "stone"], [1, 2]], stone_zhucangzhe: ["male", "wei", 1, ["stone_zhucangzhe1"], ["minskin", "stone"], [1, 2]], stone_huoqiangshou: ["male", "wei", 3, ["stone_huoqiangshou1"], ["minskin", "stone"], [3, 1]], stone_lansaizhanshi: ["male", "shu", 1, ["stone_chongfeng"], ["minskin", "stone"], [1, 2]], stone_kutongsiseng: ["male", "shu", 1, ["stone_kutongsiseng1"], ["minskin", "stone"], [1, 2]], stone_yuanguanying: ["male", "shu", 3, ["stone_yuanguanying1"], ["minskin", "stone"], [3, 1]], stone_dijieshicong: ["male", "wu", 2, ["stone_dijieshicong1"], ["minskin", "stone"], [1, 1]], stone_yaosaishouwei: [ "male", "wu", 2, ["stone_yaosaishouwei1"], ["minskin", "stone"], [1, 1], ], stone_famingjia: ["male", "wu", 3, ["stone_famingjia1"], ["minskin", "stone"], [3, 1]], stone_chilundashi: ["male", "qun", 2, ["stone_chilundashi1"], ["minskin", "stone"], [1, 1]], stone_hanguangzhizhe: [ "male", "qun", 2, ["stone_hanguangzhizhe1"], ["minskin", "stone"], [2, 2], ], stone_aihaozhihun: ["male", "qun", 3, ["stone_aihaozhihun1"], ["minskin", "stone"], [3, 1]], stone_fennuxiaoji: ["male", "qun", 1, ["stone_fennuxiaoji1"], ["minskin", "stone"], [1, 2]], stone_juxingchanchu: [ "male", "qun", 2, ["stone_juxingchanchu1"], ["minskin", "stone"], [2, 1], ], stone_wuyi: ["male", "qun", 1, ["jijiu"], ["minskin", "stone", "die:wuyi"], [2, 2]], stone_langren: ["male", "qun", 1, ["stone_qianxing"], ["minskin", "stone"], [1, 2]], stone_shishigui: ["male", "qun", 2, ["stone_shishigui1"], ["minskin", "stone"], [2, 1]], stone_fatiaozhuru: ["female", "qun", 1, ["stone_fatiaozhuru1"], ["minskin", "stone"], [1, 2]], stone_mingguangjisi: ["female", "wu", 2, ["shushen"], ["minskin", "stone"], [2, 1]], stone_nianqingjisi: ["female", "wei", 2, ["stone_zhufu"], ["minskin", "stone"], [2, 1]], stone_aomishouwei: ["female", "qun", 1, ["biyue"], ["minskin", "stone"], [2, 2]], stone_yanjingshe: ["female", "qun", 2, ["stone_yanjingshe1"], ["minskin", "stone"], [3, 2]], stone_zhiyuzhe: ["female", "qun", 3, ["stone_zhiyu"], ["minskin", "stone"], [3, 1]], stone_mafengzhuru: ["female", "qun", 1, ["stone_mafengzhuru1"], ["minskin", "stone"], [1, 2]], stone_shumiao: ["none", "wu", 1, [], ["minskin", "stone", "stonehidden"], [1, 1]], stone_shuren: [ "none", "wu", 2, ["stone_chongfeng", "stone_zibao"], ["minskin", "stone", "stonehidden"], [2, 2], ], stone_shurenx: ["none", "wu", 2, [], ["minskin", "stone", "stonehidden"], [2, 2]], stone_shurenxx: [ "none", "wu", 2, ["lschaofeng"], ["minskin", "stone", "stonehidden"], [2, 2], ], stone_youlinglang: [ "none", "qun", 2, ["lschaofeng"], ["minskin", "stone", "stonehidden"], [2, 2], ], stone_xiaojingling: [ "none", "qun", 1, ["xuying"], ["minskin", "stone", "stonehidden"], [1, 1], ], stone_zhumo: ["none", "qun", 2, [], ["minskin", "stone", "stonehidden"], [2, 2]], stone_jingxiang: [ "none", "qun", 2, ["stone_jingxiang", "lschaofeng"], ["minskin", "stone", "stonehidden"], [2, 0], ], stone_shengguanghuwei: [ "female", "qun", 2, ["priest_shengguang"], ["minskin", "stone", "stonehidden"], [1, 1], ], stone_liegou: [ "none", "qun", 1, ["stone_chongfeng"], ["minskin", "stone", "stonehidden"], [1, 2], ], stone_mianyang: [ "none", "qun", 1, ["mage_mianyang"], ["minskin", "stone", "stonehidden"], [1, 0], ], stone_qingwa: [ "none", "wu", 1, ["shaman_qingwa"], ["minskin", "stone", "stonehidden"], [1, 0], ], stone_shengjiachong: [ "none", "qun", 1, ["lschaofeng"], ["minskin", "stone", "stonehidden"], [1, 1], ], stone_tuteng1: [ "none", "qun", 2, ["shaman_tuteng", "lschaofeng"], ["minskin", "stone", "stonehidden"], [2, 0], ], stone_tuteng2: [ "none", "qun", 2, ["shaman_tuteng", "shaman_zhuore"], ["minskin", "stone", "stonehidden"], [2, 0], ], stone_tuteng3: [ "none", "qun", 2, ["shaman_tuteng", "shaman_fali"], ["minskin", "stone", "stonehidden"], [2, 0], ], stone_tuteng4: [ "none", "qun", 2, ["shaman_tuteng", "shaman_zhiliao"], ["minskin", "stone", "stonehidden"], [2, 0], ], stone_xinbing: ["none", "qun", 2, [], ["minskin", "stone", "stonehidden"], [2, 0]], stone_siwangzhiyi: [ "male", "qun", 4, ["stone_mieshi"], ["minskin", "stone", "stonehidden", "stonelegend"], [6, 4], ], stone_alaikesita: [ "female", "qun", 4, ["stone_fushi"], ["minskin", "stone", "stonehidden", "stonelegend"], [6, 4], ], stone_yisela: [ "female", "qun", 4, ["stone_chenshui"], ["minskin", "stone", "stonehidden", "stonelegend"], [6, 2], ], stone_nuoziduomu: [ "male", "qun", 4, ["stone_shixu"], ["minskin", "stone", "stonehidden", "stonelegend"], [6, 4], ], stone_maligousi: [ "male", "qun", 4, ["stone_mowang"], ["minskin", "stone", "stonehidden", "stonelegend"], [6, 2], ], stone_aolajier: [ "male", "qun", 4, ["stone_chongfeng", "shaman_fengnu", "paladin_hudun", "lschaofeng"], ["minskin", "stone", "stonehidden", "stonelegend_shaman"], [6, 4], ], stone_andongni: [ "male", "qun", 4, ["stone_zhiyin"], ["minskin", "stone", "stonehidden", "stonelegend_mage"], [6, 4], ], stone_jialakesi: [ "male", "qun", 6, ["stone_bianshen"], ["minskin", "stone", "stonehidden", "stonelegend_warlock"], [6, 0], ], stone_jialakesix: [ "male", "qun", 6, ["stone_lianyu"], ["modeimage", "stonehidden", "stonespecial"], ], stone_kelushi: [ "male", "qun", 5, ["stone_chongfeng"], ["minskin", "stone", "stonehidden", "stonelegend_hunter"], [6, 5], ], stone_geluomashi: [ "male", "qun", 4, ["stone_chongfeng", "stone_jinu"], ["minskin", "stone", "stonehidden", "stonelegend_warrior"], [6, 4], ], stone_aidewen: [ "male", "qun", 3, ["stone_lianji"], ["minskin", "stone", "stonehidden", "stonelegend_rogue"], [6, 3], ], stone_sainaliusi: [ "male", "qun", 3, ["stone_shenyu"], ["minskin", "stone", "stonehidden", "stonelegend_druid"], [6, 3], ], stone_fuding: [ "male", "qun", 3, ["paladin_hudun", "lschaofeng", "stone_fuchou"], ["minskin", "stone", "stonehidden", "stonelegend_paladin"], [6, 3], ], stone_weilun: [ "male", "qun", 4, ["stone_shenyou"], ["minskin", "stone", "stonehidden", "stonelegend_priest"], [6, 6], ], }, }, careerList: ["mage", "shaman", "druid", "paladin", "rogue", "priest", "hunter", "warrior", "warlock"], game: { reserveDead: true, bannedcards: [ "lebu", "guiyoujie", "xietianzi", "lingjiandai", "jiguanshu", "sifeizhenmian", "fengxueren", "chuansongmen", ], onwash: function () { if (_status.mode != "deck") return; var list = []; for (var i = 0; i < ui.discardPile.childElementCount; i++) { var type = get.type(ui.discardPile.childNodes[i]); if (type == "stonecard" || type == "stonecharacter") { list.push(ui.discardPile.childNodes[i]); } } while (list.length) { list.shift().remove(); } }, getVideoName: function () { var str = get.translation(game.me.name); if (game.me.name2) { str += "/" + get.translation(game.me.name2); } var name = [str, "炉石 - " + get.config("battle_number") + "人"]; return name; }, updateStatusCount: function () { _status.friendCount.innerHTML = "友军: " + get.cnNumber(1 + _status.mylist.length / (_status.double_character ? 2 : 1), true); _status.enemyCount.innerHTML = "敌军: " + get.cnNumber(1 + _status.enemylist.length / (_status.double_character ? 2 : 1), true); }, stoneLoop: function (player) { var next = game.createEvent("phaseLoop"); next.player = player; next.setContent(function () { "step 0"; _status.roundStart = game.me; player.phase(); event.num = 0; "step 1"; if (event.num < player.actcharacterlist.length) { var current = player.actcharacterlist[event.num]; if (current) { current.phase(); } event.num++; event.redo(); } "step 2"; if (event.player == game.me) { event.player = game.enemy; } else { event.player = game.me; } event.goto(0); }); }, initStone: function () { var list = [], list2 = [], list3 = {}, list4 = {}; for (var i = 0; i < lib.careerList.length; i++) { list3[lib.careerList[i]] = []; list4[lib.careerList[i]] = []; } var i, j, name; for (var i in lib.characterPack.mode_stone) { lib.character[i] = lib.characterPack.mode_stone[i]; if (lib.character[i].isSpecialInStoneMode) continue; lib.character[i].skills.add("stonesha"); lib.character[i].skills.add("stoneshan"); lib.character[i].skills.add("stonedraw"); name = i + "_stonecharacter"; lib.card[name] = { image: "mode/stone/character/" + i, stoneact: lib.character[i].extraModeData[0], career: lib.character[i].extraModeData[2] || null, }; for (j in lib.element.stonecharacter) { lib.card[name][j] = lib.element.stonecharacter[j]; } lib.translate[name] = get.translation(i); lib.translate[name + "_info"] = get.skillintro(i); if (lib.character[i].isHiddenInStoneMode) { lib.card[name].stonehidden = true; continue; } if (!lib.character[i].extraModeData[2]) { if (lib.character[i].extraModeData[0] < 3) { list.push(name); } else { list2.push(name); } } else { list3[lib.character[i].extraModeData[2]].push(name); } } if (_status.mode == "deck") { lib.spells = []; var spells = lib.cardPack.mode_stone; for (var i = 0; i < spells.length; i++) { if (lib.card[spells[i]].stonehidden) continue; if (lib.card[spells[i]].career) { list4[lib.card[spells[i]].career].push(spells[i]); } else { lib.spells.push(spells[i]); } } lib.careerSpells = list4; lib.minions = list.concat(list2); lib.careerMinions = list3; if (!lib.storage.deckList) { lib.storage.deckList = {}; } } else { delete game.modPhaseDraw; var random_length = parseInt(get.config("random_length").slice(2)); if (!random_length) { random_length = 80; } var addedcardcount = Math.ceil(lib.card.list.length / random_length); var addedcardcount2 = Math.ceil(lib.card.list.length / random_length / 2); var suit = ["heart", "diamond", "club", "spade"]; while (addedcardcount--) { for (i = 0; i < list.length; i++) { lib.card.list.push([suit.randomGet(), Math.ceil(Math.random() * 13), list[i]]); } lib.card.list.push([ suit.randomGet(), Math.ceil(Math.random() * 13), "spell_shengerpingdeng", ]); lib.card.list.push([ suit.randomGet(), Math.ceil(Math.random() * 13), "spell_anyingkuangluan", ]); lib.card.list.push([ suit.randomGet(), Math.ceil(Math.random() * 13), "spell_jingshenkongzhi", ]); lib.card.list.push([ suit.randomGet(), Math.ceil(Math.random() * 13), "spell_binghuan", ]); lib.card.list.push([suit.randomGet(), Math.ceil(Math.random() * 13), "spell_zuzhou"]); lib.card.list.push([ suit.randomGet(), Math.ceil(Math.random() * 13), "spell_diyulieyan", ]); lib.card.list.push([ suit.randomGet(), Math.ceil(Math.random() * 13), "spell_diyulieyan", ]); lib.card.list.push([suit.randomGet(), Math.ceil(Math.random() * 13), "spell_chenmo"]); lib.card.list.push([ suit.randomGet(), Math.ceil(Math.random() * 13), "spell_xishengqiyue", ]); lib.card.list.push([ suit.randomGet(), Math.ceil(Math.random() * 13), "spell_zhiliaoshui", ]); } while (addedcardcount2--) { for (i = 0; i < list2.length; i++) { lib.card.list.push([suit.randomGet(), Math.ceil(Math.random() * 13), list2[i]]); } lib.card.list.push([ suit.randomGet(), Math.ceil(Math.random() * 13), "spell_morizaihuo", ]); lib.card.list.push([ suit.randomGet(), Math.ceil(Math.random() * 13), "spell_zhiliaozhichu", ]); lib.card.list.push([ suit.randomGet(), Math.ceil(Math.random() * 13), "spell_wangzhezhufu", ]); } lib.card.list.randomSort(); } lib.skill._recasting.usable = 3; for (i in lib.skill) { if (lib.skill[i].changeSeat) { lib.skill[i] = {}; if (lib.translate[i + "_info"]) { lib.translate[i + "_info"] = "此模式下不可用"; } } } for (i in lib.card) { if (lib.card[i].type == "equip") { lib.card[i].stoneact = 0; } else { if (typeof lib.card[i].stoneact === "number" && !lib.card[i].addinfo) { lib.card[i].addinfo = "消耗: " + lib.card[i].stoneact; lib.card[i].addinfomenu = "消耗:" + lib.card[i].stoneact; } } } _status.deadfriend = []; _status.deadenemy = []; game.additionaldead = []; }, chooseCharacter: function () { var next = game.createEvent("chooseCharacter"); next.showConfig = true; next.setContent(function () { "step 0"; ui.arena.classList.add("choose-character"); var i; var list = []; event.list = list; for (i in lib.character) { if (lib.character[i].isMinskin) continue; if (lib.character[i].isHiddenInStoneMode) continue; if (lib.config.forbidstone.includes(i)) continue; if (lib.filter.characterDisabled(i)) continue; list.push(i); } list.randomSort(); var dialog = ui.create.dialog( "按顺序选择出场角色" + (get.config("double_character") ? "(双将)" : ""), "hidden" ); dialog.add("0/" + (get.config("double_character") ? 2 : 1) * get.config("battle_number")); dialog.add([list.slice(0, get.config("battle_number") * 2 + 5), "character"]); dialog.open(); var next = game.me.chooseButton(dialog, true).set("onfree", true); next.selectButton = function () { return (get.config("double_character") ? 2 : 1) * get.config("battle_number"); }; next.custom.add.button = function () { if (ui.cheat2 && ui.cheat2.backup) return; _status.event.dialog.content.childNodes[0].innerHTML = "按顺序选择出场角色" + (get.config("double_character") ? "(双将)" : ""); _status.event.dialog.content.childNodes[1].innerHTML = ui.selected.buttons.length + "/" + _status.event.selectButton(); }; event.changeDialog = function () { if (ui.cheat2 && ui.cheat2.dialog == _status.event.dialog) { return; } if (game.changeCoin) { game.changeCoin(-3); } list.randomSort(); var buttons = ui.create.div(".buttons"); var node = _status.event.dialog.buttons[0].parentNode; _status.event.dialog.buttons = ui.create.buttons( list.slice(0, get.config("battle_number") * 2 + 5), "character", buttons ); _status.event.dialog.content.insertBefore(buttons, node); buttons.addTempClass("start"); node.remove(); game.uncheck(); game.check(); }; ui.create.cheat = function () { _status.createControl = ui.cheat2; ui.cheat = ui.create.control("更换", event.changeDialog); delete _status.createControl; }; if (lib.onfree) { lib.onfree.push(function () { event.dialogxx = ui.create.characterDialog("heightset"); if (ui.cheat2) { ui.cheat2.addTempClass("controlpressdownx", 500); ui.cheat2.classList.remove("disabled"); } event.dialogxx.style.height = (game.layout == "newlayout" ? 350 : 410) + "px"; event.dialogxx._scrollset = true; }); } else { event.dialogxx = ui.create.characterDialog("heightset"); } ui.create.cheat2 = function () { ui.cheat2 = ui.create.control("自由选将", function () { if (this.dialog == _status.event.dialog) { if (game.changeCoin) { game.changeCoin(10); } this.dialog.close(); _status.event.dialog = this.backup; this.backup.open(); delete this.backup; game.uncheck(); game.check(); if (ui.cheat) { ui.cheat.addTempClass("controlpressdownx", 500); ui.cheat.classList.remove("disabled"); } } else { if (game.changeCoin) { game.changeCoin(-10); } this.backup = _status.event.dialog; _status.event.dialog.close(); _status.event.dialog = _status.event.parent.dialogxx; this.dialog = _status.event.dialog; this.dialog.open(); game.uncheck(); game.check(); if (ui.cheat) { ui.cheat.classList.add("disabled"); } } }); if (lib.onfree) { ui.cheat2.classList.add("disabled"); } }; if (!ui.cheat && get.config("change_choice")) ui.create.cheat(); if (!ui.cheat2 && get.config("free_choose")) ui.create.cheat2(); "step 1"; if (ui.cheat) { ui.cheat.close(); delete ui.cheat; } if (ui.cheat2) { ui.cheat2.close(); delete ui.cheat2; } if (ui.deckcontrol) { ui.deckcontrol.remove(); delete ui.deckcontrol; } _status.mylist = result.links.slice(0); for (var i = 0; i < result.links.length; i++) { event.list.remove(result.links[i]); } event.list.randomSort(); _status.enemylist = event.list.slice(0, result.links.length); _status.double_character = get.config("double_character"); "step 2"; event.choosingDeck = true; if (_status.mode == "deck") { _status.deck = []; if (!_status.auto) { ui.auto.hide(); game.pause(); var list = _status.mylist.slice(0); if (_status.double_character) { event.dialog = ui.create.dialog("", "hidden", "forcebutton"); } else { event.dialog = ui.create.dialog("", "hidden", "forcebutton"); } var buttons = ui.create.div(".buttons", event.dialog.content); var currentNode = null; var clickButton = function (click) { if (!event.choosingDeck) return; if (click !== false) { _status.deck.push(this.name); } if (currentNode) { currentNode.delete(); } if (list.length) { var names = []; if (_status.double_character) { names.push(list.shift()); names.push(list.shift()); event.dialog.content.firstChild.innerHTML = "为" + get.translation(names[0]) + "/" + get.translation(names[1]) + "选择一个卡组"; currentNode = ui.create.player().init(names[0], names[1]); } else { names.push(list.shift()); event.dialog.content.firstChild.innerHTML = "为" + get.translation(names[0]) + "选择一个卡组"; currentNode = ui.create.player().init(names[0]); } currentNode.classList.add("stone_deck"); ui.arena.appendChild(currentNode); ui.refresh(currentNode); currentNode.classList.add("shown"); } else { event.choosingDeck = false; event.dialog.close(); ui.auto.show(); game.resume(); } }; clickButton(false); for (var i in lib.storage.deckList) { if (lib.storage.deckList[i].deck.length == 30) { var deckitem = ui.create.div( ".deckitem.shadowed", "" + i + "", buttons, clickButton ); ui.create.div(".menubutton.round", deckitem).dataset.career = lib.storage.deckList[i].career; deckitem.name = i; } } for (var i = 0; i < lib.careerList.length; i++) { var deckitem = ui.create.div( ".deckitem.shadowed", "随机", buttons, clickButton ); ui.create.div(".menubutton.round", deckitem).dataset.career = lib.careerList[i]; deckitem.name = "random:" + lib.careerList[i]; } event.dialog.open(); } else { var bn = parseInt(get.config("battle_number")); for (var i = 0; i < bn; i++) { _status.deck.push("random"); } } } "step 3"; game.addRecentCharacter.apply(this, _status.mylist); if (ui.coin) { _status.coinCoeff = get.coinCoeff(_status.mylist); } if (_status.double_character) { game.me.init(_status.mylist.shift(), _status.mylist.shift()); game.enemy.init(_status.enemylist.shift(), _status.enemylist.shift()); } else { game.me.init(_status.mylist.shift()); game.enemy.init(_status.enemylist.shift()); } game.me.maxHp++; game.me.hp++; game.me.update(); game.enemy.maxHp++; game.enemy.hp++; game.enemy.update(); if (_status.mode == "deck") { get.deck(game.me, _status.deck.shift()); get.deck(game.enemy, "random"); } ui.control.style.transitionDuration = "0s"; ui.refresh(ui.control); ui.arena.classList.remove("choose-character"); setTimeout(function () { ui.control.style.transitionDuration = ""; }, 500); }); }, }, get: { rawAttitude: function (from, to) { var num; if (to.isMin() && !to.hasSkill("lschaofeng")) { num = 5; } else { num = 6; } return num * (from.side == to.side ? 1 : -1); }, stonecard: function (type, career) { var list = []; for (var i in lib.card) { if (lib.card[i].stonehidden) continue; if (lib.card[i].type != "stonecard" && lib.card[i].type != "stonecharacter") continue; if (type == 1 && lib.card[i].type != "stonecard") continue; if (type == 2 && lib.card[i].type != "stonecharacter") continue; if (career && lib.card[i].career != career) continue; list.push(i); } return list; }, deck: function (player, name) { var career, deck; if (name == "random" || name.indexOf("random:") == 0) { if (name == "random") { career = lib.careerList.randomGet(); name = name + ":" + career; } else { career = name.slice(7); } deck = lib.careerMinions[career] .randomGets(6) .concat(lib.careerMinions[career].randomGets(6)) .concat(lib.minions.randomGets(6)) .concat(lib.spells.randomGets(4)) .concat(lib.careerSpells[career].randomGets(4)) .concat(lib.careerSpells[career].randomGets(4)); } else { career = lib.storage.deckList[name].career; deck = lib.storage.deckList[name].deck.slice(0); } deck.sort(function (a, b) { if (a > b) return 1; if (a == b) return 0; return -1; }); player.deck = name; player.career = career; if (!player.node.career) { player.node.career = ui.create.div(".menubutton.round.identity", player); player.node.career.dataset.career = career; lib.setIntro(player.node.career, null, true); } if (!player.deckCards) player.deckCards = []; for (var i = 0; i < deck.length; i++) { player.deckCards.push(game.createCard(deck[i])); } }, }, cardType: { stonecard: -0.5, stonecharacter: 1, }, card: { spell_siwangchanrao: { type: "stonecard", fullimage: true, enable: true, stoneact: 1, career: "warlock", filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { "step 0"; target.damage(); "step 1"; if (target.isDead()) { player.drawDeck(); } }, ai: { order: 2, value: 5, useful: 5, result: { target: -1, }, tag: { damage: 1, }, }, }, spell_ansezhadan: { type: "stonecard", fullimage: true, enable: true, stoneact: 3, career: "warlock", filterTarget: true, content: function () { target.damage(2); }, ai: { order: 8, value: 5, useful: 5, result: { target: -2, }, tag: { damage: 2, }, }, }, spell_emozhixin: { type: "stonecard", stoneact: 4, career: "warlock", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { if (target.side != player.side) { target.damage(4); } else { target.draw(4); } }, ai: { order: 4, value: 3, useful: 3, result: { target: function (player, target) { if (target.side != player.side) { return -3; } else { return 2; } }, }, }, }, spell_heianqiyue: { type: "stonecard", stoneact: 4, career: "warlock", enable: true, fullimage: true, notarget: true, content: function () { "step 0"; var fellows = player.getEnemy().getFellow(); if (fellows.length) { fellows.randomGet().die(); } "step 1"; var fellows = player.getEnemy().getFellow(); if (fellows.length) { fellows.randomGet().die(); } "step 2"; var hs = player.getCards("h"); if (hs.length) { player.discard(hs.randomGets(2)); } }, ai: { order: 7, value: 5, useful: 5, result: { player: function (player) { if (player.getEnemy().countFellow() >= 2) return 1; return 0; }, }, }, }, spell_linghunhongxi: { type: "stonecard", stoneact: 4, career: "warlock", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { "step 0"; target.die(); "step 1"; player.recover(); }, ai: { order: 7.5, value: 5, useful: 5, result: { target: function (player, target) { return -target.hp - target.countCards("h") / 2; }, }, }, }, spell_fushishu: { type: "stonecard", stoneact: 2, career: "warlock", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && !target.hasSkill("warlock_fushishu"); }, content: function () { target.addSkill("warlock_fushishu"); }, ai: { order: 7.5, value: 5, useful: 5, result: { target: function (player, target) { return -target.hp - target.countCards("h") / 2; }, }, }, }, spell_fuchoudaji: { type: "stonecard", fullimage: true, enable: true, stoneact: 3, career: "warrior", filterTarget: function (card, player, target) { return target.isMin(); }, selectTarget: -1, content: function () { if (player.hp <= 2) { target.damage(3); } else { target.damage(); } }, ai: { order: 8.9, value: 5, useful: 5, result: { target: -1.5, }, tag: { damage: 1, multitarget: 1, multineg: 1, }, }, }, spell_yingyongdaji: { type: "stonecard", stoneact: 2, career: "warrior", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.side != player.side; }, content: function () { "step 0"; player.damage(2, target); "step 1"; target.damage(2); }, ai: { order: 8, value: 5, useful: 5, result: { target: function (player, target) { if (player.hujia >= 2) return -1.5; if (player.hujia == 1) { if (player.hp > 3) return -1.5; return 0; } return 0; }, }, tag: { damage: 1, }, }, }, spell_zhandounuhuo: { type: "stonecard", fullimage: true, enable: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].side == player.side && game.players[i].isDamaged()) return true; } return false; }, stoneact: 1, career: "warrior", filterTarget: function (card, player, target) { return target == player; }, selectTarget: -1, content: function () { var num = 0; for (var i = 0; i < game.players.length; i++) { if (game.players[i].side == player.side && game.players[i].isDamaged()) { num++; } } if (num) { player.drawDeck(num); } }, ai: { order: 0.5, result: { player: 1, }, }, }, spell_kuangbao: { type: "stonecard", fullimage: true, enable: true, stoneact: 3, career: "warrior", filterTarget: function (card, player, target) { return target.isMin() && target.isDamaged(); }, content: function () { target.draw(4); }, ai: { order: 6, value: 3, useful: 3, result: { target: 1, }, }, }, spell_chongfeng: { type: "stonecard", fullimage: true, enable: true, stoneact: 2, career: "warrior", filterTarget: function (card, player, target) { return target.isMin() && target.isTurnedOver(); }, content: function () { "step 0"; target.draw(3); "step 1"; if (target.isTurnedOver()) { target.turnOver(); } }, ai: { order: 6, value: 3, useful: 3, result: { target: function (player, target) { if (target.isTurnedOver()) return 2; return 1; }, }, }, }, spell_zhongnian: { type: "stonecard", stoneact: 3, career: "warrior", enable: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].side == player.side && game.players[i].isDamaged()) return true; } return false; }, fullimage: true, filterTarget: true, content: function () { var num = 0; for (var i = 0; i < game.players.length; i++) { if (game.players[i].side == player.side && game.players[i].isDamaged()) { num++; } } if (num) { target.damage(Math.min(3, num)); } }, ai: { order: 7.2, value: 5, useful: 5, result: { target: function (player, target) { var num = 0; for (var i = 0; i < game.players.length; i++) { if (game.players[i].side == player.side && game.players[i].isDamaged()) { num++; if (num >= 2) return -1.5; } } return 0; }, tag: { damage: 1, }, }, }, }, spell_jinyingduijue: { type: "stonecard", stoneact: 4, career: "paladin", enable: function (card, player) { var n1 = player.countFellow(); var n2 = player.getEnemy().countFellow(); return n1 > 0 && n2 > 0 && n1 + n2 > 2; }, fullimage: true, filterTarget: function (card, player, target) { return target.isMin(); }, selectTarget: -1, multitarget: true, multiline: true, content: function () { "step 0"; if (!targets.length) { event.finish(); return; } var maxf = [], maxe = []; for (var i = 0; i < targets.length; i++) { if (targets[i].side == player.side) { if (!maxf.length || targets[i].hp == maxf[0].hp) { maxf.push(targets[i]); } else if (targets[i].hp > maxf[0].hp) { maxf.length = 0; maxf.push(targets[i]); } } else { if (!maxe.length || targets[i].hp == maxe[0].hp) { maxe.push(targets[i]); } else if (targets[i].hp > maxe[0].hp) { maxe.length = 0; maxe.push(targets[i]); } } } if (maxf.length) { targets.remove(maxf.randomGet()); } if (maxe.length) { targets.remove(maxe.randomGet()); } targets.sort(lib.sort.seat); event.targets = targets; "step 1"; if (event.targets.length) { event.targets.shift().die(); event.redo(); } }, ai: { order: 9, value: 2, useful: 2, result: { player: function (player, target) { return player.getEnemy().countFellow() - player.countFellow(); }, }, }, }, spell_zhihuizhufu: { type: "stonecard", stoneact: 1, career: "paladin", enable: function (card, player) { return !player.isMin(); }, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && !target.hasSkill("paladin_zhihuizhufu"); }, content: function () { target.addSkill("paladin_zhihuizhufu"); target.storage.paladin_zhihuizhufu = player; }, ai: { order: 2, value: 5, useful: 5, result: { player: function (player, target) { return target.hp; }, }, }, }, spell_shenshengfennu: { type: "stonecard", stoneact: 5, career: "paladin", enable: true, fullimage: true, filterTarget: true, content: function () { "step 0"; event.card = player.getDeckCards()[0]; player.gain(event.card, "gain2", "log"); "step 1"; var num = lib.card[event.card.name].stoneact; if (num && typeof num == "number") { target.damage(num); } }, ai: { order: 6, value: 2, useful: 2, result: { target: -2, }, tag: { damage: 2, }, }, }, spell_yongshizhufu: { type: "stonecard", stoneact: 2, career: "paladin", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && target.countCards("h") > 0; }, content: function () { target.draw(target.countCards("h")); }, ai: { order: 4, value: 2, useful: 2, result: { target: function (player, target) { return Math.max(0, target.countCards("h") - 1); }, }, }, }, spell_shenpan: { type: "stonecard", stoneact: 2, career: "paladin", enable: function (card, player) { var num = player.getEnemy().countFellow(); return num > 0 && num >= player.countFellow(); }, fullimage: true, notarget: true, content: function () { var target = player.getEnemy().getFellow().randomGet(); player.line(target); target.die(); }, ai: { order: 9, value: 4, useful: 4, result: { player: 1, }, }, }, spell_zhengqianghaosheng: { type: "stonecard", stoneact: 2, career: "paladin", enable: function (card, player) { return !player.hasSkill("paladin_zhengqianghaosheng"); }, fullimage: true, filterTarget: function (card, player, target) { return player == target; }, selectTarget: -1, content: function () { player.addSkill("paladin_zhengqianghaosheng"); }, ai: { order: 3, value: 4, useful: 4, result: { player: function (player) { if (player.countFellow() >= 2) return 1; return 0; }, }, }, }, spell_zhenyanshu: { type: "stonecard", stoneact: 1, career: "priest", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { target.maxHp++; target.hp++; target.update(); player.drawDeck(); }, ai: { order: 7, value: 3, useful: 3, result: { target: function (player, target) { return Math.max(1, 10 - target.hp); }, }, }, }, spell_enzeshu: { type: "stonecard", stoneact: 3, career: "priest", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { target.maxHp += 3; target.hp += 3; target.update(); }, ai: { order: 5, value: 3, useful: 3, result: { target: function (player, target) { return Math.max(1, 10 - target.hp); }, }, }, }, spell_anyingxingtai: { type: "stonecard", stoneact: 2, career: "priest", recastable: true, enable: function (event, player) { if (player.career != "priest") return false; return !player.storage.anyingxingtai || player.storage.anyingxingtai < 2; }, fullimage: true, filterTarget: function (card, player, target) { return player == target; }, selectTarget: -1, content: function () { if (typeof player.storage.anyingxingtai != "number") { player.storage.anyingxingtai = 1; } else if (player.storage.anyingxingtai < 2) { player.storage.anyingxingtai = 2; } player.markSkill("priest_anyingxingtai"); }, ai: { order: 6.1, value: 3, useful: 3, result: { player: 1, }, }, }, spell_kuaisuzhiliao: { type: "stonecard", stoneact: 2, career: "priest", enable: true, fullimage: true, filterTarget: function (card, player, target) { if (player.hasFellowSkill("priest_hunwu")) { return true; } return target.hp < target.maxHp; }, content: function () { var num = 2; if (player.hasFellowSkill("stone_shenyou")) { num = 4; } if (player.hasFellowSkill("priest_hunwu")) { target.loseHp(num); } else { target.recover(num); } // player.addTempSkill('priest_kuaisuzhiliao'); }, ai: { order: 7, value: 7, useful: 5, result: { target: function (player, target) { if (player.hasFellowSkill("priest_hunwu")) { return -2; } return get.recoverEffect(target, player, target); }, }, }, }, spell_kongxinshu: { type: "stonecard", stoneact: 3, career: "priest", enable: function (card, player) { return player.canAddFellow(); }, fullimage: true, filterTarget: function (card, player, target) { return target == player.getEnemy(); }, selectTarget: -1, content: function () { if (!player.canAddFellow()) return; var deck = player.getEnemy().deckCards; if (deck) { var list = []; for (var i = 0; i < deck.length; i++) { if (get.type(deck[i]) == "stonecharacter") { list.push(deck[i].name); } } if (list.length) { var name = list.randomGet(); player.addFellowAuto(name.slice(0, name.indexOf("_stonecharacter"))); } } }, ai: { order: 3, value: 2, useful: 2, result: { player: 1, }, }, }, spell_xinlinghanbao: { type: "stonecard", stoneact: 2, career: "priest", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target == player.getEnemy(); }, selectTarget: -1, content: function () { var num = 2; // if(player.hasFellowSkill('stone_shenyou')){ // num=4; // } target.damage(num); }, ai: { order: 6, value: 5, useful: 5, result: { target: -2, }, tag: { damage: 2, }, }, }, spell_shalumingling: { type: "stonecard", stoneact: 2, career: "hunter", enable: true, fullimage: true, filterTarget: true, content: function () { var num = 1; var friends = player.getFellow(); for (var i = 0; i < friends.length; i++) { if (lib.beastList.includes(friends[i].name)) { num = 2; break; } } target.damage(num); }, ai: { order: 7, value: 5, useful: 5, result: { target: -2, }, tag: { damage: 2, }, }, }, spell_dubiao: { type: "stonecard", stoneact: 0, career: "hunter", enable: true, fullimage: true, notarget: true, content: function () { var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].side != player.side) { list.push(game.players[i]); } } if (list.length) { var target = list.randomGet(); target.damage(); player.line(target); } }, ai: { order: 7, value: 5, useful: 5, result: { player: 1, }, }, }, spell_tanxianmao: { type: "stonecard", stoneact: 2, career: "hunter", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && target.side == player.side; }, content: function () { target.maxHp++; target.hp++; target.update(); target.draw(); target.addSkill("hunter_tanxianmao"); }, ai: { order: 2, value: 2, useful: 2, result: { target: function (player, target) { return Math.max(1, 10 - target.hp); }, }, }, }, spell_zhuizongshu: { type: "stonecard", stoneact: 1, career: "hunter", enable: true, fullimage: true, filterTarget: function (card, player, target) { return player == target; }, selectTarget: -1, content: function () { "step 0"; player.chooseCardButton("选择一张加入手牌", player.getDeckCards(3), true); "step 1"; player.gain(result.links, "draw"); }, ai: { order: 2, value: 3, useful: 3, result: { player: 1, }, }, }, spell_qiangfengsheji: { type: "stonecard", fullimage: true, enable: true, stoneact: 3, career: "hunter", filterTarget: function (card, player, target) { return target.side != player.side && target.isMin(); }, selectTarget: [1, 2], content: function () { "step 0"; target.damage(); "step 1"; if (target.isAlive()) { var hs = target.getCards("h"); if (hs.length) { target.discard(hs.randomGets(2)); } } }, ai: { order: 7, value: 5, useful: 5, result: { target: function (player, target) { if (target.countCards("h")) return -2; return -1.5; }, }, tag: { damage: 1, multitarget: 1, multineg: 1, }, }, }, spell_tianjiangzhuqun: { type: "stonecard", fullimage: true, enable: function (event, player) { return player.canAddFellow(); }, stoneact: 3, career: "hunter", notarget: true, content: function () { "step 0"; if (player.canAddFellow()) { player.addFellowAuto("stone_jiewangzhu"); } "step 1"; if (player.canAddFellow()) { player.addFellowAuto("stone_jiewangzhu"); } "step 2"; if (player.canAddFellow()) { player.addFellowAuto("stone_jiewangzhu"); } }, ai: { order: 9, value: 5, useful: 5, result: { player: 1, }, }, }, spell_conglinzhihun: { type: "stonecard", stoneact: 3, career: "druid", enable: true, fullimage: true, filterTarget: function (card, player, target) { return ( player.side == target.side && target.isMin() && !target.hasSkill("druid_conglinzhihun") ); }, selectTarget: -1, content: function () { target.addSkill("druid_conglinzhihun"); }, ai: { order: 7, value: 5, useful: 5, result: { player: function (player) { var num = 0; for (var i = 0; i < game.players.length; i++) { if ( game.players[i].isMin() && game.players[i].side == player.side && !game.players[i].hasSkill("druid_conglinzhihun") ) { num++; if (num >= 2) return 1; } } return 0; }, }, }, }, spell_heiandiyu: { fullimage: true, type: "stonecard", enable: true, stoneact: 4, career: "druid", filterTarget: function (card, player, target) { return target.isMin(); }, multitarget: true, targetprompt: ["增加体力并摸牌"], selectTarget: [0, 1], notarget: true, content: function () { "step 0"; if (targets.length) { targets[0].maxHp++; targets[0].hp++; target.update(); targets[0].draw(3); event.finish(); } else { event.num = 0; } "step 1"; if (player.canAddFellow() && event.num++ < 10) { player.addFellowAuto("stone_xiaojingling"); event.redo(); } }, ai: { order: 5, result: { target: function (player, target) { return Math.max(1, target.hp - target.countCards("h")); }, }, }, }, spell_ziyang: { type: "stonecard", stoneact: 3, career: "druid", enable: function (card, player) { return player.deckCards && !player.isMin(); }, fullimage: true, filterTarget: function (card, player, target) { return player == target; }, selectTarget: -1, content: function () { "step 0"; if (player.hasSkill("druid_ziyang")) { player.drawDeck(3); event.finish(); } else { player.chooseControl("获得行动值", "摸牌").ai = function () { if (player.countCards("h") <= 1) return "摸牌"; return "获得行动值"; }; } "step 1"; if (result.control == "摸牌") { player.drawDeck(3); } else { player.addSkill("druid_ziyang"); } }, ai: { order: 1, value: 4, useful: 4, result: { player: 1, }, }, }, spell_xingchenzhuiluo: { type: "stonecard", fullimage: true, enable: true, stoneact: 6, career: "druid", targetprompt: ["造成五点伤害"], multitarget: true, filterTarget: function (card, player, target) { return target.side != player.side && target.isMin(); }, selectTarget: [0, 1], notarget: true, content: function () { "step 0"; if (targets.length) { targets[0].damage(4); event.finish(); } else { var list = player.getFellow(true); if (list.length) { list.sort(lib.sort.seat); event.list = list; player.line(list); } else { event.finish(); } } "step 1"; if (event.list.length) { event.list.shift().damage(2); event.redo(); } }, ai: { order: 7, useful: 5, value: 5, result: { target: function (player, target) { if (target == player.getEnemy()) return -2; return -1; }, }, tag: { damage: 2, }, }, }, spell_fennu: { type: "stonecard", fullimage: true, enable: true, stoneact: 2, career: "druid", filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { "step 0"; player.chooseControl("两点", "一点").prompt = "造成2点伤害,或造成1点伤害并从牌库中获得一张牌"; "step 1"; if (result.control == "一点") { target.damage(); } else { target.damage(2); event.finish(); } "step 2"; player.drawDeck(); }, ai: { order: 8, value: 5, useful: 5, result: { target: -1, }, tag: { damage: 2, }, }, }, spell_fugen: { type: "stonecard", stoneact: 2, career: "druid", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { "step 0"; target.die(); "step 1"; var list = []; for (var i in lib.card) { if (lib.card[i].stonehidden) continue; if (lib.card[i].type == "stonecharacter") { list.push(i); } } player.getEnemy().gain(game.createCard(list.randomGet()), "draw"); }, ai: { order: 8.8, value: 5, useful: 5, result: { target: function (player, target) { return -target.hp - target.countCards("h") / 2; }, }, }, }, spell_mengun: { type: "stonecard", stoneact: 2, career: "rogue", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && target.side != player.side; }, content: function () { "step 0"; target.die()._triggered = null; event.name = target.name; "step 1"; player.getEnemy().gain(game.createCard(event.name + "_stonecharacter"), "gain2"); }, ai: { order: 8.8, value: 5, useful: 5, result: { target: function (player, target) { return -target.hp - target.countCards("h") / 2; }, }, }, }, spell_jipao: { type: "stonecard", stoneact: 3, career: "rogue", enable: function (card, player) { return !player.isMin(); }, fullimage: true, filterTarget: function (card, player, target) { return target == player; }, selectTarget: -1, content: function () { if (!player.isMin()) { player.drawDeck(4); } }, ai: { order: 1, value: 3, useful: 3, result: { player: 1, }, }, }, spell_beici: { type: "stonecard", stoneact: 0, career: "rogue", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && target.hp == target.maxHp; }, content: function () { target.loseHp(); }, ai: { order: 9, result: { target: -1, }, value: 6, useful: 6, }, }, spell_weijisifu: { type: "stonecard", stoneact: 2, career: "rogue", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target == player.getEnemy(); }, selectTarget: -1, content: function () { if (target.deckCards) { var cards = []; for (var i = 0; i < 3; i++) { cards.push(game.createCard("spell_zhumo")); } player.$give(cards, target); for (var i = 0; i < cards.length; i++) { target.deckCards.push(cards[i]); } game.addGlobalSkill("rogue_zhumo"); } }, ai: { order: 6, value: 5, useful: 5, result: { target: -1, }, }, }, spell_zhumo: { type: "stonecard", stoneact: 0, enable: false, fullimage: true, stonehidden: true, }, spell_anzhongpohuai: { type: "stonecard", stoneact: 3, career: "rogue", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target == player.getEnemy(); }, selectTarget: -1, content: function () { "step 0"; var list = target.getFellow(); if (list.length) { list.randomGet().die({ source: player }); } "step 1"; var es = target.getCards("e"); if (es.length) { target.discard(es.randomGet()); } }, ai: { order: 7, value: 5, useful: 5, result: { target: function (player, target) { if (target.hasFellow()) return -1; return 0; }, }, }, }, spell_piaoqie: { type: "stonecard", fullimage: true, enable: true, stoneact: 1, career: "rogue", filterTarget: function (card, player, target) { return target == player.getEnemy(); }, selectTarget: -1, content: function () { var cards = player.getEnemy().deckCards.randomGets(2); var list = []; for (var i = 0; i < cards.length; i++) { list.push( game.createCard(cards[i].name, cards[i].suit, cards[i].number, cards[i].nature) ); } if (list.length) { player.gain(list, "draw"); } }, ai: { order: 0.5, result: { player: 1, }, }, }, spell_canying: { type: "stonecard", stoneact: 1, career: "mage", enable: function (event, player) { return player.hasFellow(); }, filterTarget: function (card, player, target) { return target.isMin() && target.side == player.side; }, selectTarget: -1, multitarget: true, multiline: true, fullimage: true, content: function () { var cards = []; for (var i = 0; i < targets.length; i++) { if (lib.card[targets[i].name + "_stonecharacter"]) { cards.push(game.createCard(targets[i].name + "_stonecharacter")); } } player.gain(cards, "gain2"); }, ai: { order: 2, value: 5, useful: 5, result: { player: 1, }, }, }, spell_laojiuhuoba: { type: "stonecard", fullimage: true, enable: true, stoneact: 2, career: "mage", filterTarget: true, content: function () { target.damage("fire"); if (player.deckCards) { player.deckCards.push(game.createCard("spell_chirehuoba")); } }, ai: { order: 7, value: 4, useful: 4, result: { target: -1, }, tag: { damage: 1, natureDamage: 1, fireDamage: 1, }, }, }, spell_chirehuoba: { type: "stonecard", fullimage: true, enable: true, stoneact: 2, career: "mage", stonehidden: true, filterTarget: true, content: function () { target.damage(2, "fire"); }, ai: { order: 7, value: 6, useful: 6, result: { target: -2, }, tag: { damage: 2, natureDamage: 2, fireDamage: 2, }, }, }, spell_hanbingpingzhang: { type: "stonecard", stoneact: 1, career: "mage", enable: true, fullimage: true, filterTarget: true, content: function () { if (target.maxHp < 2) { target.maxHp = 2; } if (target.hp < 2) { target.hp = 2; target.update(); } target.addSkill("mage_hanbingpingzhang"); }, ai: { order: 1, value: 3, useful: 3, result: { target: function (player, target) { if (target.hp <= 2) return 3 - target.hp; return 0; }, }, }, }, spell_aoshufeidan: { type: "stonecard", fullimage: true, enable: function (event, player) { return player.getEnemy().countFellow() > 0; }, stoneact: 2, career: "mage", filterTarget: function (card, player, target) { return target.side != player.side && target.isMin(); }, selectTarget: -1, multitarget: true, multiline: true, content: function () { "step 0"; if (!targets.length) { event.finish(); return; } var map = []; for (var i = 0; i < targets.length; i++) { map.push(0); } for (var i = 0; i < 3; i++) { map[Math.floor(Math.random() * map.length)]++; } event.num = 0; event.map = map; "step 1"; if (event.num < targets.length) { if (event.map[event.num]) { targets[event.num].damage(event.map[event.num]); } event.num++; event.redo(); } }, ai: { order: 9, value: 5, useful: 5, result: { target: -1.5, }, tag: { damage: 1, }, }, }, spell_jingxiang: { type: "stonecard", fullimage: true, enable: function (event, player) { return player.canAddFellow(); }, stoneact: 2, career: "mage", selectTarget: -1, filterTarget: function (card, player, target) { return player == target; }, content: function () { "step 0"; if (player.canAddFellow()) { player.addFellowAuto("stone_jingxiang", false); } "step 1"; if (player.canAddFellow()) { player.addFellowAuto("stone_jingxiang", false); } }, ai: { order: 4, value: 5, useful: 5, result: { player: 1, }, }, }, spell_yanbaoshu: { type: "stonecard", fullimage: true, enable: true, stoneact: 6, career: "mage", filterTarget: true, content: function () { var num = 4; if (!target.isMin()) { num = Math.min(4, target.hp); } target.damage(num, "fire"); }, ai: { order: 8, value: 4, useful: 4, result: { target: -2, }, tag: { damage: 2, natureDamage: 2, fireDamage: 2, }, }, }, spell_fengnu: { type: "stonecard", stoneact: 2, career: "shaman", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && !target.hasSkill("shaman_fengnu"); }, content: function () { target.addSkill("shaman_fengnu"); }, ai: { order: 4, value: 4, useful: 4, result: { target: function (player, target) { if (target.hasSkill("shaman_tuteng")) return 0; if (target.hp > 1) return target.hp; return 0; }, }, }, }, spell_shihuawuqi: { type: "stonecard", stoneact: 1, career: "shaman", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && !target.hasSkill("shaman_shihuawuqi"); }, content: function () { target.addSkill("shaman_shihuawuqi"); }, ai: { order: 4, value: 4, useful: 4, result: { target: function (player, target) { if (target.isTurnedOver()) return 0; var num = 0; if (target.hasSkill("shaman_fengnu")) { num = 3; } if (target.isMin()) return target.hp + num; return 1.1; }, }, }, }, spell_xianzuzhaohuan: { type: "stonecard", stoneact: 2, career: "shaman", fullimage: true, enable: true, filterTarget: function (card, player, target) { return !target.isMin(); }, multitarget: true, multiline: true, selectTarget: -1, content: function () { "step 0"; if (targets[0]) { var hs = targets[0].getCards("h", function (card) { return get.type(card) == "stonecharacter"; }); if (hs.length && targets[0].canAddFellow()) { targets[0].useCard(targets[0], hs.randomGet(), false).noActCount = true; } } "step 1"; if (targets[1]) { var hs = targets[1].getCards("h", function (card) { return get.type(card) == "stonecharacter"; }); if (hs.length && targets[1].canAddFellow()) { targets[1].useCard(targets[1], hs.randomGet(), false).noActCount = true; } } }, ai: { order: 9, value: 5, useful: 5, result: { player: function (player) { var hs = player.getCards("h", function (card) { return get.type(card) == "stonecharacter"; }); if (hs.length == 0) return 0; var enemy = player.getEnemy(); if (enemy.countCards("h") <= 1) return 1; var num = 0; for (var i = 0; i < hs.length; i++) { num += get.info(hs[i]).stoneact; } if (num / hs.length >= 3) return 1; return 0; }, }, }, }, spell_xianzuzhihun: { type: "stonecard", stoneact: 2, career: "shaman", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && !target.hasSkill("shaman_xianzuzhihun"); }, content: function () { target.addSkill("shaman_xianzuzhihun"); }, ai: { order: 5, value: 4, useful: 4, result: { target: function (player, target) { if (lib.card[target.name + "_stonecharacter"]) { return lib.card[target.name + "_stonecharacter"].stoneact - 1; } return 0; }, }, }, }, spell_xianzuzhishi: { type: "stonecard", fullimage: true, enable: true, stoneact: 0, career: "shaman", filterTarget: function (card, player, target) { return target == player; }, selectTarget: -1, content: function () { player.drawDeck(2); player.addTempSkill("shaman_xianzuzhishi"); }, ai: { order: 10, result: { player: 1, }, }, }, spell_rongyanbaolie: { type: "stonecard", fullimage: true, enable: true, stoneact: 3, career: "shaman", filterTarget: true, content: function () { "step 0"; target.damage(3, "fire"); "step 1"; player.loseHp(); }, ai: { order: 8, value: 6, useful: 5, result: { target: -2, }, tag: { damage: 2, natureDamage: 2, fireDamage: 2, }, }, }, spell_shenshengxinxing: { type: "stonecard", stoneact: 5, career: "priest", enable: true, fullimage: true, filterTarget: function (card, player, target) { if (player.hasFellowSkill("priest_hunwu") || target.side != player.side) return true; return target.isDamaged(); }, selectTarget: -1, content: function () { var num = 1; if (player.hasFellowSkill("stone_shenyou")) { num = 2; } if (player.side == target.side) { if (player.hasFellowSkill("priest_hunwu")) { target.loseHp(num); } else { target.recover(num); } } else { target.damage(); } }, ai: { order: 7, value: 5, useful: 5, result: { target: function (player, target) { if (player.hasFellowSkill("priest_hunwu")) return -1; if (player.side == target.side) return 1; return -1; }, }, tag: { damage: 1, multitarget: 1, multineg: 1, }, }, }, spell_shengguangzhadan: { type: "stonecard", stoneact: 2, career: "priest", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && target.countCards("h") > 0; }, selectTarget: -1, content: function () { var num = 1; // if(player.hasFellowSkill('stone_shenyou')){ // num=2; // } target.damage(target.countCards("h") * num); }, ai: { order: 7, value: 5, useful: 5, result: { target: function (player, target) { return -Math.min(target.countCards("h"), target.hp); }, }, tag: { damage: 1, multitarget: 1, multineg: 1, }, }, }, spell_maizang: { type: "stonecard", stoneact: 3, career: "priest", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && target.side != player.side; }, content: function () { "step 0"; target.die()._triggered = null; "step 1"; if (player.deckCards) { player.deckCards.push(game.createCard(target.name + "_stonecharacter")); } }, ai: { order: 7, value: 5, useful: 5, result: { target: function (player, target) { return -target.hp - target.countCards("h") / 2; }, }, }, }, spell_xinlingshijie: { type: "stonecard", stoneact: 0, career: "priest", enable: function (event, player) { return player.getEnemy().countCards("h") > 0; }, fullimage: true, filterTarget: function (card, player, target) { return target == player.getEnemy(); }, selectTarget: -1, content: function () { var card = target.getCards("h").randomGet(); if (card) { player.gain(game.createCard(card.name, card.suit, card.number, card.nature), "draw"); } }, ai: { order: 9.5, value: 5, useful: 5, result: { player: 1, }, }, }, spell_naluzhiguang: { type: "stonecard", stoneact: 1, career: "priest", enable: true, fullimage: true, filterTarget: function (card, player, target) { if (player.hasFellowSkill("priest_hunwu")) { return true; } return target.hp < target.maxHp; }, content: function () { "step 0"; var num = 1; if (player.hasFellowSkill("stone_shenyou")) { num = 2; } if (player.hasFellowSkill("priest_hunwu")) { target.loseHp(num); } else { target.recover(num); } "step 1"; if (target.hp < target.maxHp && player.canAddFellow()) { player.addFellowAuto("stone_shengguanghuwei"); } }, ai: { order: 7, value: 7, useful: 5, result: { player: function (player, target) { if (player.hasFellowSkill("priest_hunwu")) { return 1; } if (target.hp < target.maxHp - 1) return 2; return 0; }, target: function (player, target) { if (player.hasFellowSkill("priest_hunwu")) { return -2; } return get.recoverEffect(target, player, target); }, }, }, }, spell_zhiliaozhihuan: { type: "stonecard", stoneact: 0, career: "priest", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin(); }, selectTarget: -1, content: function () { var num = 3; if (player.hasFellowSkill("stone_shenyou")) { num = 6; } if (player.hasFellowSkill("priest_hunwu")) { target.loseHp(num); } else { target.recover(num); } }, ai: { order: 7, value: 5, useful: 5, result: { target: function (player, target) { if (player.hasFellowSkill("priest_hunwu")) { return -1; } return get.recoverEffect(target, player, target); }, }, }, }, spell_nuxi: { type: "stonecard", stoneact: 3, career: "warrior", enable: true, fullimage: true, filterTarget: true, content: function () { target.damage(); player.changeHujia(2); }, ai: { order: 7, value: 5, useful: 5, result: { target: -1.5, }, tag: { damage: 1, }, }, }, spell_dunpaimengji: { type: "stonecard", stoneact: 2, career: "warrior", enable: function (event, player) { return player.hujia > 0; }, fullimage: true, filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { target.damage(player.hujia); }, ai: { order: 7.2, value: 5, useful: 5, result: { target: -1.5, tag: { damage: 1, }, }, }, }, spell_zhansha: { type: "stonecard", stoneact: 1, career: "warrior", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && target.hp < target.maxHp; }, content: function () { target.die(); }, ai: { order: 8, value: 5, useful: 5, result: { target: function (player, target) { return -target.hp - target.countCards("h") / 2; }, }, }, }, spell_nuhuozhongshao: { type: "stonecard", stoneact: 0, career: "warrior", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { "step 0"; target.damage(); "step 1"; if (target.isAlive()) { target.draw(2); } }, ai: { order: 7, value: 5, useful: 5, result: { target: function (player, target) { if (target.hp == 1) return -1; if (target.hp >= 4) return 1.5; if (target.hp >= 3 && target.countCards("h") < target.hp) return 1; return 0; }, }, }, }, spell_xuanfengzhan: { type: "stonecard", fullimage: true, enable: true, stoneact: 2, career: "warrior", filterTarget: function (card, player, target) { return target.isMin(); }, selectTarget: -1, content: function () { target.damage(); }, ai: { order: 9, value: 5, useful: 5, result: { target: -1.5, }, tag: { damage: 1, multitarget: 1, multineg: 1, }, }, }, spell_juemingluandou: { type: "stonecard", stoneact: 4, career: "warrior", enable: function () { var num = 0; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin()) { num++; if (num >= 2) return true; } } return false; }, fullimage: true, filterTarget: function (card, player, target) { return target.isMin(); }, selectTarget: -1, content: function () { "step 0"; targets.randomRemove(); targets.sort(lib.sort.seat); event.list = targets; "step 1"; if (event.list.length) { event.list.shift().die(); event.redo(); } }, ai: { order: 9, value: 5, useful: 5, result: { target: -2, }, }, }, spell_lierenyinji: { type: "stonecard", stoneact: 0, career: "hunter", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && target.maxHp > 1; }, content: function () { target.loseMaxHp(target.maxHp - 1); }, ai: { order: 7, value: 5, useful: 5, result: { target: function (player, target) { return 1 - target.hp; }, }, }, }, spell_kuaisusheji: { type: "stonecard", stoneact: 2, career: "hunter", enable: true, fullimage: true, filterTarget: true, content: function () { target.damage(); player.draw(); }, ai: { order: 7, value: 5, useful: 5, result: { target: -1.5, }, tag: { damage: 1, }, }, }, spell_guanmenfanggou: { type: "stonecard", stoneact: 2, career: "hunter", enable: function (event, player) { return player.getEnemy().countFellow() > 0 && player.canAddFellow(); }, fullimage: true, filterTarget: function (card, player, target) { return target == player; }, selectTarget: -1, content: function () { "step 0"; event.num = player.getEnemy().countFellow(); "step 1"; if (player.canAddFellow() && event.num--) { player.addFellowAuto("stone_liegou"); event.redo(); } }, ai: { order: 7, value: 5, useful: 5, result: { target: 1, }, }, }, spell_zhaohuanchongwu: { type: "stonecard", stoneact: 2, career: "hunter", enable: function (event, player) { return player.canAddFellow(); }, fullimage: true, filterTarget: function (card, player, target) { return target == player; }, selectTarget: -1, content: function () { player.addFellowAuto(lib.beastList.randomGet()); }, ai: { order: 6, value: 5, useful: 5, result: { player: 1, }, }, }, spell_zidanshangtang: { type: "stonecard", stoneact: 1, career: "hunter", enable: true, fullimage: true, filterTarget: function (card, player, target) { return target == player; }, selectTarget: -1, content: function () { var list = [ "spell_lierenyinji", "spell_guanmenfanggou", "spell_duochongsheji", "spell_kuaisusheji", "spell_zhaohuanchongwu", ]; player.gain(game.createCard(list.randomGet()), "draw"); player.addTempSkill("hunter_zidanshangtang"); }, ai: { order: 7.5, value: 5, useful: 5, result: { player: 1, }, }, }, spell_duochongsheji: { type: "stonecard", fullimage: true, enable: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i].side != player.side) { return true; } } return false; }, stoneact: 4, career: "hunter", notarget: true, content: function () { "step 0"; var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i].side != player.side) { list.push(game.players[i]); } } if (list.length) { list = list.randomGets(2); list.sort(lib.sort.seat); } event.list = list; "step 1"; if (event.list.length) { var current = event.list.shift(); player.line(current); current.damage(2); event.redo(); } }, ai: { order: 5, result: { player: 1, }, }, }, spell_liliangdaijia: { type: "stonecard", fullimage: true, enable: true, stoneact: 1, career: "warlock", filterTarget: function (card, player, target) { return target.side == player.side && target.isMin(); }, content: function () { target.draw(4); target.hp = 5; target.maxHp = 5; target.update(); target.addSkill("stone_zibao"); }, ai: { order: 7, value: 5, useful: 5, result: { target: function (player, target) { if (target.hasSkill("warlock_yongsheng")) return 2; if (target.hp == 1 && target.countCards("h") <= 2) return 1; return 0; }, }, }, }, spell_xiaoguibaopo: { type: "stonecard", fullimage: true, enable: true, stoneact: 3, career: "warlock", filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { "step 0"; event.num = Math.ceil(Math.random() * 3); target.damage(event.num); "step 1"; if (player.canAddFellow() && event.num--) { player.addFellowAuto("stone_xiaogui"); event.redo(); } }, ai: { order: 6, value: 5, useful: 5, result: { target: -1.5, }, tag: { damage: 1, }, }, }, spell_emozhinu: { type: "stonecard", fullimage: true, enable: true, stoneact: 4, career: "warlock", filterTarget: function (card, player, target) { return target.isMin(); }, selectTarget: -1, content: function () { target.damage(2); }, ai: { order: 9, value: 5, useful: 5, result: { target: -1.5, }, tag: { damage: 1, multitarget: 1, multineg: 1, }, }, }, spell_anyinglieyan: { type: "stonecard", fullimage: true, enable: true, stoneact: 3, career: "warlock", filterTarget: function (card, player, target) { return target.side == player.side && target.isMin(); }, content: function () { "step 0"; target.die({ source: player }); event.num = target.hp; "step 1"; event.list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i].side != player.side) { event.list.push(game.players[i]); } } event.list.sort(lib.sort.seat); "step 2"; if (event.list.length) { event.list.shift().damage(event.num); event.redo(); } }, ai: { order: 8, value: 5, useful: 5, result: { player: function (player, target) { if (player == target) return -10; var list = []; var maxHp = 0; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i].side != player.side) { list.push(game.players[i]); if (game.players[i].hp > maxHp) { maxHp = game.players[i].hp; } } } if (list.length < 2) return 0; if (list.length == 2 && target.hp >= 4) return 0; if (target.hp > maxHp) return 1; return target.hp; }, }, }, }, spell_xishengqiyue: { type: "stonecard", fullimage: true, enable: true, stoneact: 0, career: "warlock", filterTarget: function (card, player, target) { if (!target.isMin()) return false; if (ui.selected.targets.length) { return target.side != ui.selected.targets[0].side; } return true; }, selectTarget: 2, multitarget: true, multiline: true, content: function () { targets.sort(lib.sort.seat); for (var i = 0; i < targets.length; i++) { targets[i].die(); } }, ai: { result: { target: function (player, target) { if (ui.selected.targets.length && target.hp < ui.selected.targets[0].hp) { return 1; } return -1; }, }, order: 6, }, }, spell_zuzhou: { type: "stonecard", enable: true, stoneact: 1, fullimage: true, career: "warlock", filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { target.turnOver(); player.draw(); }, ai: { order: 6, result: { target: function (player, target) { if (target.isTurnedOver()) return 1; return -1; }, }, }, }, spell_yexingchengzhang: { type: "stonecard", fullimage: true, enable: function (event, player) { return !player.hasSkill("druid_yexingchengzhang") && !player.isMin(); }, stoneact: 2, career: "druid", filterTarget: function (card, player, target) { return target == player; }, selectTarget: -1, content: function () { player.addSkill("druid_yexingchengzhang"); }, ai: { order: 2, value: 5, useful: 5, result: { player: 1, }, }, }, spell_ziranzhili: { type: "stonecard", fullimage: true, enable: function (event, player) { return player.canAddFellow(); }, stoneact: 4, career: "druid", filterTarget: function (card, player, target) { return target == player; }, selectTarget: -1, content: function () { "step 0"; event.num = 3; "step 1"; if (player.canAddFellow() && event.num--) { player.addFellowAuto("stone_shuren"); event.redo(); } }, ai: { order: 6, value: 5, useful: 5, result: { player: 1, }, }, }, spell_yemanpaoxiao: { type: "stonecard", fullimage: true, enable: function (event, player) { return !player.hasSkill("spell_yemanpaoxiao"); }, stoneact: 2, career: "druid", filterTarget: function (card, player, target) { return target == player; }, selectTarget: -1, content: function () { player.addTempSkill("spell_yemanpaoxiao", { player: "phaseBegin" }); }, ai: { order: 1, value: 5, useful: 5, result: { player: function (player) { if (player.countFellow() >= 2) return 1; return 0; }, }, }, }, spell_hengsao: { type: "stonecard", fullimage: true, enable: true, stoneact: 4, career: "druid", filterTarget: function (card, player, target) { return target.side != player.side; }, content: function () { "step 0"; event.list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i] != target && game.players[i].side == target.side) { event.list.push(game.players[i]); } } target.damage(2); "step 1"; if (event.list.length) { event.list.shift().damage(); event.redo(); } }, ai: { order: 9, value: 5, useful: 5, result: { target: -2, }, tag: { damage: 1, }, }, }, spell_wuyashenxiang: { type: "stonecard", fullimage: true, enable: true, stoneact: 1, career: "druid", filterTarget: function (card, player, target) { return target == player; }, selectTarget: -1, content: function () { "step 0"; player.chooseControl("法术牌", "随从牌").ai = function () { return Math.random() < 0.5 ? "法术牌" : "随从牌"; }; "step 1"; var list = []; var bool = result.control == "法术牌"; for (var i in lib.card) { if (lib.card[i].stonehidden) continue; if (bool) { if (lib.card[i].type == "stonecard") { list.push(i); } } else { if (lib.card[i].type == "stonecharacter") { list.push(i); } } } list = list.randomGets(3); var cards = []; for (var i = 0; i < list.length; i++) { cards.push(game.createCard(list[i])); } player.chooseCardButton(cards, "选择一张加入手牌", true); "step 2"; player.gain(result.links, "draw"); }, ai: { order: 2, value: 5, useful: 5, result: { player: 1, }, }, }, spell_huotigenxu: { type: "stonecard", fullimage: true, enable: true, stoneact: 1, career: "druid", filterTarget: true, selectTarget: [0, 1], notarget: true, multitarget: true, targetprompt: ["造成一点伤害"], content: function () { "step 0"; if (targets.length) { targets[0].damage(); event.finish(); } else { event.num = 2; } "step 1"; if (player.canAddFellow() && event.num--) { player.addFellowAuto("stone_shumiao"); event.redo(); } }, ai: { order: 7, value: 5, useful: 5, result: { target: -1, }, tag: { damage: 1, }, }, }, spell_cigu: { type: "stonecard", fullimage: true, enable: true, stoneact: 2, career: "rogue", filterTarget: true, content: function () { "step 0"; if (player.countCards("e")) { player.chooseToDiscard("e", "是否弃置一张装备区内的牌令伤害+1?").ai = function ( card ) { return 7 - get.value(card); }; } else { event.goto(2); } "step 1"; if (result.bool) { event.add = true; } "step 2"; if (event.add) { target.damage(2); } else { target.damage(); } player.storage.spell_cigu = false; }, ai: { order: 8, value: 6, useful: 6, result: { target: -1.5, }, tag: { damage: 1, }, }, }, spell_sijidaifa: { type: "stonecard", fullimage: true, enable: function (event, player) { return !player.hasSkill("spell_sijidaifa"); }, stoneact: 0, career: "rogue", filterTarget: function (card, player, target) { return target == player; }, selectTarget: -1, content: function () { player.addSkill("spell_sijidaifa"); }, ai: { order: 9, value: 5, useful: 5, result: { player: 1, }, }, }, spell_daoshan: { type: "stonecard", fullimage: true, enable: true, stoneact: 3, career: "rogue", filterTarget: function (card, player, target) { return target.side != player.side && target.isMin(); }, selectTarget: -1, content: function () { target.damage(); }, contentAfter: function () { player.drawDeck(); }, ai: { order: 8, value: 5, useful: 5, result: { target: -1.5, }, tag: { damage: 1, multitarget: 1, multineg: 1, }, }, }, spell_jianrenluanwu: { type: "stonecard", fullimage: true, enable: function (event, player) { return player.getEquip(1) ? true : false; }, stoneact: 2, career: "rogue", filterTarget: function (card, player, target) { return target.side != player.side; }, selectTarget: -1, contentBefore: function () { player.discard(player.getEquip(1)); }, content: function () { if (typeof player.storage.spell_modaoyou == "number") { target.damage(player.storage.spell_modaoyou + 1); } else { target.damage(); } player.unmarkSkill("spell_modaoyou"); }, contentAfter: function () { player.storage.spell_modaoyou = 0; }, ai: { order: 8, value: 6, useful: 6, result: { target: -1.5, }, tag: { damage: 1, multitarget: 1, multineg: 1, }, }, }, spell_cisha: { type: "stonecard", fullimage: true, enable: true, stoneact: 4, career: "rogue", filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { target.die({ source: player }); }, ai: { order: 8.8, value: 5, useful: 5, result: { target: function (player, target) { return -target.hp - target.countCards("h") / 2; }, }, }, }, spell_modaoyou: { type: "stonecard", fullimage: true, enable: true, stoneact: 2, career: "rogue", filterTarget: function (card, player, target) { return target == player; }, selectTarget: -1, content: function () { player.markSkill("spell_modaoyou"); if (typeof player.storage.spell_modaoyou != "number") { player.storage.spell_modaoyou = 1; } else { player.storage.spell_modaoyou++; } var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i].side == player.side) { list.push(game.players[i]); } } if (list.length) { game.asyncDraw([player, list.randomGet()], 2); } else { player.draw(2); } }, ai: { order: 1, value: 5, useful: 5, result: { player: 1, }, }, }, spell_fengxian: { type: "stonecard", fullimage: true, enable: true, stoneact: 3, career: "paladin", filterTarget: function (card, player, target) { return target.side != player.side; }, selectTarget: -1, content: function () { target.damage(); }, ai: { order: 8, value: 5, useful: 5, result: { target: -1.5, }, tag: { damage: 1, multitarget: 1, multineg: 1, }, }, }, spell_fuchouzhinu: { type: "stonecard", fullimage: true, enable: function (event, player) { return player.getEnemy().countFellow() > 0; }, stoneact: 4, career: "paladin", filterTarget: function (card, player, target) { return target.side != player.side && target.isMin(); }, selectTarget: -1, multitarget: true, multiline: true, content: function () { "step 0"; if (!targets.length) { event.finish(); return; } var map = []; for (var i = 0; i < targets.length; i++) { map.push(0); } for (var i = 0; i < 5; i++) { map[Math.floor(Math.random() * map.length)]++; } event.num = 0; event.map = map; "step 1"; if (event.num < targets.length) { if (event.map[event.num]) { targets[event.num].damage(event.map[event.num]); } event.num++; event.redo(); } }, ai: { order: 9, value: 5, useful: 5, result: { target: -1.5, }, tag: { damage: 1, }, }, }, spell_liliangzhufu: { type: "stonecard", fullimage: true, enable: true, stoneact: 1, career: "paladin", filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { target.draw(2); }, ai: { order: 6, value: 5, useful: 5, result: { target: 1, }, }, }, spell_shengliaoshu: { type: "stonecard", fullimage: true, enable: true, stoneact: 3, career: "paladin", filterTarget: true, content: function () { target.recover(2); target.draw(2); }, ai: { order: 4, value: 5, useful: 5, result: { target: function (player, target) { return 1 + target.maxHp - target.hp; }, }, }, }, spell_zuozhandongyuan: { type: "stonecard", fullimage: true, enable: function (event, player) { return player.canAddFellow(); }, stoneact: 3, career: "paladin", notarget: true, content: function () { "step 0"; if (player.canAddFellow()) { player.addFellowAuto("stone_xinbing"); } "step 1"; if (player.canAddFellow()) { player.addFellowAuto("stone_xinbing"); } "step 2"; var equip1 = get.cardPile(function (card) { return get.subtype(card) == "equip1"; }); if (!equip1) { equip1 = game.createCard("qingnang"); } player.equip(equip1); }, ai: { order: 8.5, value: 5, useful: 5, result: { player: 1, }, }, }, spell_fennuzhichui: { type: "stonecard", fullimage: true, enable: true, stoneact: 2, career: "paladin", filterTarget: true, content: function () { target.damage(); player.drawDeck(); }, ai: { order: 8, value: 5, useful: 5, result: { target: -1.5, }, tag: { damage: 1, }, }, }, spell_lianhuanbaolie: { type: "stonecard", fullimage: true, enable: true, stoneact: 1, career: "shaman", filterTarget: true, content: function () { target.damage(Math.ceil(Math.random() * 2), "thunder"); }, ai: { order: 8, value: 5, useful: 5, result: { target: -1.5, }, tag: { damage: 1, natureDamage: 1, thunderDamage: 1, }, }, }, spell_shandianfengbao: { type: "stonecard", fullimage: true, enable: true, stoneact: 3, career: "shaman", filterTarget: function (card, player, target) { return target.isMin() && target.side != player.side; }, selectTarget: -1, content: function () { target.damage(Math.ceil(Math.random() * 2), "thunder"); }, ai: { order: 9, useful: 5, value: 5, result: { target: -1.5, }, tag: { damage: 1, natureDamage: 1, thunderDamage: 1, multitarget: 1, multineg: 1, }, }, }, spell_yaoshu: { type: "stonecard", fullimage: true, enable: true, stoneact: 1, career: "shaman", filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { target.clearSkills(true); target.init("stone_qingwa"); target.noPhaseDelay = true; }, ai: { order: 7, value: 5, useful: 5, result: { target: function (player, target) { return -target.hp; }, }, }, }, spell_shixue: { type: "stonecard", fullimage: true, enable: true, stoneact: 4, career: "shaman", selectTarget: -1, filterTarget: function (card, player, target) { return target.isMin() && target.side == player.side; }, multitarget: true, multiline: true, content: function () { game.asyncDraw(targets, 2); }, ai: { order: 5, value: 5, useful: 5, result: { target: 2, }, tag: { multitarget: 1, }, }, }, spell_yexinglanghun: { type: "stonecard", fullimage: true, enable: function (event, player) { return player.canAddFellow(); }, stoneact: 4, career: "shaman", notarget: true, content: function () { "step 0"; if (player.canAddFellow()) { player.addFellowAuto("stone_youlinglang"); } "step 1"; if (player.canAddFellow()) { player.addFellowAuto("stone_youlinglang"); } }, ai: { order: 9, value: 5, useful: 5, result: { player: 1, }, }, }, spell_chazhuangshandian: { type: "stonecard", fullimage: true, enable: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i].side != player.side) { return true; } } return false; }, stoneact: 2, career: "shaman", notarget: true, content: function () { "step 0"; var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i].side != player.side) { list.push(game.players[i]); } } if (list.length) { list = list.randomGets(2); list.sort(lib.sort.seat); } event.list = list; "step 1"; if (event.list.length) { var current = event.list.shift(); player.line(current, "thunder"); current.damage("thunder"); event.redo(); } }, ai: { order: 5, result: { player: 1, }, }, }, spell_hanbingjian: { type: "stonecard", fullimage: true, enable: true, stoneact: 2, career: "mage", filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { "step 0"; target.damage(2); "step 1"; if (target.isAlive() && !target.isTurnedOver()) { target.turnOver(); } }, ai: { order: 8, value: 5, useful: 5, result: { target: -1, }, tag: { damage: 2, }, }, }, spell_huoqiushu: { type: "stonecard", fullimage: true, enable: true, stoneact: 4, career: "mage", filterTarget: true, content: function () { var num = 3; if (!target.isMin()) { num = Math.min(3, target.hp); } target.damage(num, "fire"); }, ai: { order: 8, value: 5, useful: 5, result: { target: -2, }, tag: { damage: 2, natureDamage: 2, fireDamage: 2, }, }, }, spell_lieyanfengbao: { type: "stonecard", fullimage: true, enable: true, stoneact: 5, career: "mage", filterTarget: function (card, player, target) { return target.isMin() && target.side != player.side; }, selectTarget: -1, content: function () { target.damage(2); }, ai: { order: 9, useful: 5, value: 5, result: { target: -2, }, tag: { damage: 2, multitarget: 1, multineg: 1, }, }, }, spell_bianxingshu: { type: "stonecard", fullimage: true, enable: true, stoneact: 1, career: "mage", filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { target.clearSkills(); target.init("stone_mianyang"); }, ai: { order: 7, value: 5, useful: 5, result: { target: function (player, target) { return -target.hp; }, }, }, }, spell_aoshuzhihui: { type: "stonecard", fullimage: true, enable: true, stoneact: 1, career: "mage", filterTarget: function (card, player, target) { return target == player; }, selectTarget: -1, content: function () { player.drawDeck(2); }, ai: { order: 0.5, result: { player: 1, }, }, }, spell_baofengxue: { type: "stonecard", fullimage: true, enable: true, stoneact: 4, career: "mage", filterTarget: function (card, player, target) { return target.isMin() && target.side != player.side; }, selectTarget: -1, content: function () { "step 0"; target.damage(); "step 1"; if (target.isAlive()) { target.turnOver(); } }, ai: { order: 9, useful: 5, value: 5, result: { target: -1.5, }, tag: { damage: 1, multitarget: 1, multineg: 1, }, }, }, spell_chenmo: { type: "stonecard", enable: true, stoneact: 2, fullimage: true, filterTarget: function (card, player, target) { return target.isMin() && (target.maxHp > 1 || target.countCards("he") > 0); }, content: function () { "step 0"; target.discard(target.getCards("he")); "step 1"; if (target.maxHp > 2) { target.loseMaxHp(target.maxHp - 2); } }, ai: { result: { target: function (player, target) { return Math.min(0, 2 - target.hp) - target.countCards("h") / 2; }, }, order: 7, }, }, spell_morizaihuo: { fullimage: true, type: "stonecard", enable: true, filterTarget: function (card, player, target) { return target.isMin(); }, selectTarget: -1, multiline: true, multitarget: true, content: function () { "step 0"; targets.sort(lib.sort.seat); event.list = targets; "step 1"; if (event.list.length) { event.list.shift().die(); event.redo(); } "step 2"; player.recover(2); }, stoneact: 5, ai: { order: 9, result: { target: -1, player: function (player) { if (player.hp < player.maxHp) return 1; return 0; }, }, }, }, spell_shengerpingdeng: { fullimage: true, type: "stonecard", enable: true, stoneact: 2, filterTarget: function (card, player, target) { return target.isMin() && target.maxHp > 1; }, selectTarget: -1, content: function () { target.loseMaxHp(target.maxHp - 1); }, ai: { order: 9.1, result: { target: function (player, target) { if (target.hp > 1) return -1; if (target.maxHp > 1) return -0.1; return 0; }, }, }, }, spell_jingshenkongzhi: { fullimage: true, type: "stonecard", enable: function (event, player) { if (player.isMin()) return false; return player.canAddFellow(); }, stoneact: 6, filterTarget: function (card, player, target) { return target.isMin() && target.side != player.side; }, content: function () { target.getLeader().removeFellow(target); target.side = player.side; player.addFellow(target); if (!target.isTurnedOver()) { target.turnOver(); } }, ai: { order: 9.5, result: { target: function (player, target) { return -target.hp; }, }, }, }, spell_anyingkuangluan: { type: "stonecard", fullimage: true, enable: function (event, player) { if (player.isMin()) return false; return player.canAddFellow(); }, stoneact: 4, filterTarget: function (card, player, target) { return target.isMin() && target.side != player.side && target.countCards("h") <= 1; }, content: function () { target.getLeader().removeFellow(target); target.side = player.side; player.addFellow(target); target.addSkill("spell_anyingkuangluan_die"); }, ai: { order: 9.5, result: { target: function (player, target) { return -target.hp; }, }, }, }, spell_binghuan: { fullimage: true, type: "stonecard", enable: true, stoneact: 1, filterTarget: function (card, player, target) { return target.isMin(); }, selectTarget: -1, content: function () { target.turnOver(); }, ai: { order: 7, result: { target: function (player, target) { if (target.isTurnedOver()) return 1; return -1; }, }, }, }, spell_zhiliaozhichu: { fullimage: true, type: "stonecard", enable: true, stoneact: 1, filterTarget: function (card, player, target) { return ( target.isMin() && target.side == player.side && (!target.hasSkill("lschaofeng") || target.hp < target.maxHp) ); }, content: function () { if (target.hp < target.maxHp) { target.recover(target.maxHp - target.hp); } target.addSkill("lschaofeng"); target.markSkill("lschaofeng"); game.log(target, "获得了嘲讽"); target.popup("嘲讽"); }, ai: { order: 2, result: { target: function (player, target) { return target.maxHp - target.hp; }, }, }, }, spell_wangzhezhufu: { fullimage: true, type: "stonecard", enable: true, stoneact: 4, filterTarget: function (card, player, target) { return target.isMin(); }, content: function () { target.maxHp += 2; target.hp += 2; target.update(); target.draw(2); }, ai: { order: 7, result: { target: function (player, target) { return Math.max(1, 10 - target.hp); }, }, }, }, spell_diyulieyan: { type: "stonecard", fullimage: true, enable: true, stoneact: 2, filterTarget: true, selectTarget: -1, multitarget: true, multiline: true, content: function () { targets.sort(lib.sort.seat); for (var i = 0; i < targets.length; i++) { targets[i].loseHp(); } ui.clear(); }, ai: { order: 9, result: { target: -1, }, }, }, spell_zhiliaoshui: { type: "stonecard", fullimage: true, enable: function (event, player) { return player.hp < player.maxHp; }, savable: true, stoneact: 2, selectTarget: -1, filterTarget: function (card, player, target) { return target == player; }, content: function () { if (target.isDying()) { target.recover(); } else { target.recover(2); } }, ai: { order: 8, value: 6, useful: 6, result: { target: 1, }, }, }, spell_yanmie: { type: "stonecard", fullimage: true, enable: true, stoneact: 3, selectTarget: -1, filterTarget: function (card, player, target) { return target == player.getEnemy(); }, content: function () { "step 0"; var targets = [player, target]; event.cards = [targets[0].getCards("e"), targets[1].getCards("e")]; targets[0].lose(event.cards[0], ui.special); targets[1].lose(event.cards[1], ui.special); if (event.cards[0].length) targets[0].$give(event.cards[0], targets[1]); if (event.cards[1].length) targets[1].$give(event.cards[1], targets[0]); "step 1"; var targets = [player, target]; for (var i = 0; i < event.cards[1].length; i++) { targets[0].equip(event.cards[1][i]); } for (var i = 0; i < event.cards[0].length; i++) { targets[1].equip(event.cards[0][i]); } "step 2"; var dh = target.countCards("h") - player.countCards("h"); if (dh > 0) { player.draw(dh); } }, ai: { order: 7, value: 1, useful: 1, result: { target: function (player, target) { var ne1 = target.countCards("e"), ne2 = player.countCards("e"); var nh1 = target.countCards("h"), nh2 = player.countCards("h"); if (nh1 < nh2) nh1 = nh2; if (ne2 - ne1 < nh1 - nh2 + ne1 - ne2) return -1; return 0; }, }, }, }, spell_xiaoshi: { type: "stonecard", fullimage: true, enable: true, stoneact: 2, selectTarget: -1, filterTarget: function (card, player, target) { return target == player.getEnemy(); }, content: function () { "step 0"; target.gain(target.getCards("e"), "gain2"); "step 1"; var dh = target.countCards("h") - player.countCards("h"); if (dh > 0) { target.discard(target.getCards("h").randomGets(dh)); } }, ai: { order: 1, value: 1, useful: 1, result: { target: function (player, target) { if (target.countCards("he") >= player.countCards("h")) return -1; return 0; }, }, }, }, }, skill: { stone_mieshi: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i] != player) { return true; } } return false; }, content: function () { "step 0"; var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i] != player) { list.push(game.players[i]); } } list.sort(lib.sort.seat); event.list = list; "step 1"; if (event.list.length) { var current = event.list.shift(); current.damage(2, "fire"); player.line(current, "fire"); event.redo(); } "step 2"; var target = player.getLeader(); var hs = target.getCards("h"); if (hs.length) { target.discard(hs); } game.delay(); }, }, stone_fushi: { trigger: { source: "fellow" }, forced: true, unique: false, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].side == player.side && game.players[i].isDamaged()) return true; } return false; }, content: function () { var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].side == player.side && game.players[i].isDamaged()) { list.push(game.players[i]); game.players[i].recover(game.players[i].maxHp); } } player.line(list, "green"); }, }, stone_chenshui: { trigger: { player: "phaseEnd" }, forced: true, content: function () { var list = [ "hsmengjing_feicuiyoulong", "hsmengjing_huanxiaojiemei", "hsmengjing_suxing", "hsmengjing_mengye", "hsmengjing_mengjing", ]; var target = player.getLeader(); target.gain(game.createCard(list.randomGet())); target.$draw(); player.line(target, "green"); }, ai: { threaten: 2, }, }, stone_shixu: { trigger: { source: "fellow" }, forced: true, unique: false, filter: function (event, player) { return _status.currentPhase == player.getLeader(); }, content: function () { var target = player.getLeader(); target.actused -= 4; target.updateActCount(); player.line(target, "green"); }, }, stone_mowang: { trigger: { global: "damageBegin" }, forced: true, filter: function (event, player) { return ( event.source && event.source != player && player.side == event.source.side && event.notLink() && event.card && get.type(event.card) == "stonecard" ); }, content: function () { if (trigger.player.isMin()) { trigger.num += 4; } else { trigger.num += 2; } }, ai: { threaten: 1.6, }, }, shaman_fali: { trigger: { global: "damageBegin" }, forced: true, filter: function (event, player) { return ( event.source && event.source != player && event.source == player.getLeader() && event.notLink() && event.card && get.type(event.card) == "stonecard" ); }, content: function () { trigger.num++; }, ai: { threaten: 1.3, }, }, stone_zhiyin: { trigger: { global: "useCard" }, forced: true, unique: true, filter: function (event, player) { return get.type(event.card) == "stonecard" && event.player == player.getLeader(); }, content: function () { trigger.player.gain(game.createCard("spell_huoqiushu"), "gain2"); }, ai: { threaten: 1.5, }, }, stone_bianshen: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { return player.getLeader().career == "warlock"; }, content: function () { "step 0"; var target = player.getLeader(); if (target.name == "stone_jialakesix") { target.hp = target.maxHp; target.update(); target.actused -= 6; target.updateActCount(); target.storage.stone_lianyu++; } else { if (target.name2) { target.storage.stone_lianyu = 1; } else { target.storage.stone_lianyu = 0; } target.init("stone_jialakesix"); game.addVideo("reinit2", target, "stone_jialakesix"); } target.syncStorage("stone_lianyu"); game.delay(); "step 1"; player.die()._triggered = null; }, }, stone_jinu: { trigger: { player: "phaseDrawBegin" }, forced: true, filter: function (event, player) { return player.isDamaged(); }, content: function () { trigger.num += 2; }, ai: { threaten: function (player, target) { if (target.hp < target.maxHp) return 2; return 0.5; }, maixie: true, effect: { target: function (card, player, target) { if (target.maxHp <= 3) return; if (get.tag(card, "damage")) { if (target.hp == target.maxHp) return [0, 1]; } if (get.tag(card, "recover") && player.hp >= player.maxHp - 1) return [0, 0]; }, }, }, }, stone_lianyu: { mark: true, intro: { content: function (storage) { return "地狱火的初始手牌数和体力值为" + (storage + 2); }, }, ai: { threaten: function (player, target) { return 1 + target.storage.stone_lianyu; }, }, }, stone_lianji: { trigger: { global: "fellow" }, forced: true, unique: true, filter: function (event, player) { return event.player.side == player.side && event.source != player; }, content: function () { player.maxHp++; player.hp++; player.update(); player.draw(); }, ai: { threaten: 2, }, }, stone_shenyu: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { "step 0"; var target = player.getLeader(); var next = target.chooseControl("召唤树人", "增强随从"); next.prompt = "召唤两个嘲讽树人,或令所有其他随从增加1点体力和体力上限并摸两张牌"; next.ai = function () { if (target.countFellow() <= 2) return "召唤树人"; return "增强随从"; }; "step 1"; if (result.control == "增强随从") { var targets = player.getLeader().getFellow(); targets.remove(player); for (var i = 0; i < targets.length; i++) { targets[i].hp++; targets[i].maxHp++; targets[i].update(); } game.asyncDraw(targets, 2); event.finish(); } "step 2"; var target = player.getLeader(); if (target.canAddFellow()) { target.addFellowAuto("stone_shurenxx"); } "step 3"; var target = player.getLeader(); if (target.canAddFellow()) { target.addFellowAuto("stone_shurenxx"); } }, }, stone_fuchou: { trigger: { player: "dieBegin" }, forced: true, unique: true, content: function () { player.getLeader().addSkill("stone_fuchou2"); }, }, stone_fuchou2: { trigger: { global: "dieAfter" }, forced: true, popup: false, filter: function (event, player) { return event.player.hasSkill("stone_fuchou"); }, content: function () { game.delay(); player.removeSkill("stone_fuchou2"); var targets = player.getEnemy().getFellow(); if (targets.length) { player.useCard( targets, game.createCard("spell_fuchouzhinu"), false ).noActCount = true; } }, }, stone_shenyou: { ai: { threaten: 1.6, }, }, warlock_anyu: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { "step 0"; var list = []; for (var i in lib.card) { if (lib.card[i].stonehidden) continue; if (lib.card[i].type == "stonecharacter" || lib.card[i].type) { if (lib.card[i].stoneact == 1) { list.push(i); } } } list = list.randomGets(3); var cards = []; for (var i = 0; i < list.length; i++) { cards.push(game.createCard(list[i])); } player.getLeader().chooseCardButton(cards, "选择一张加入手牌", true); "step 1"; player.getLeader().gain(result.links, "draw"); }, }, warlock_zhaohuan: { trigger: { player: "dieBegin" }, forced: true, unique: true, content: function () { player.getLeader().addSkill("warlock_zhaohuan2"); }, ai: { threaten: 0.9, }, }, warlock_zhaohuan2: { trigger: { global: "dieAfter" }, forced: true, popup: false, filter: function (event, player) { return event.player.hasSkill("warlock_zhaohuan"); }, content: function () { game.delay(); player.removeSkill("warlock_zhaohuan2"); var hs = player.getCards("h", function (card) { return get.type(card) == "stonecharacter"; }); if (hs.length && player.canAddFellow()) { player.useCard(player, hs.randomGet(), false).noActCount = true; } }, }, warlock_huanmeng: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { var target = player.getLeader(); var hs = target.getCards("h"); if (hs.length) { target.discard(hs.randomGets(1)); } }, }, warlock_tongku: { trigger: { source: "damageEnd" }, unique: true, forced: true, filter: function (event, player) { return player.getLeader().isDamaged(); }, content: function () { var target = player.getLeader(); player.line(target, "green"); target.recover(); }, ai: { threaten: 1.3, }, }, warlock_tunshi: { trigger: { source: "fellow" }, unique: true, forced: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if ( game.players[i].isMin() && game.players[i].side == player.side && game.players[i] != player ) { return true; } } }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "吞噬:令一名友方随从死亡", function (card, playerx, target) { return player != target && target.isMin() && target.side == player.side; }, true ).ai = function (target) { return -target.hp - target.countCards("h") / 4; }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); game.delay(); var target = result.targets[0]; var hs = target.getCards("h"); if (hs.length) { player.gain(hs); } target.$give(hs.length, player); player.hp += target.hp; player.maxHp += target.hp; player.update(); target.die(); } }, }, warlock_shijie: { trigger: { global: "damageEnd" }, forced: true, unique: true, filter: function (event, player) { return event.player == player.getLeader(); }, content: function () { player.maxHp++; player.hp++; player.update(); player.draw(); }, ai: { threaten: 1.6, }, }, warrior_heiyao: { trigger: { global: "phaseEnd" }, forced: true, direct: true, filter: function (event, player) { return event.player == player.getLeader() && event.player.canAddFellow(); }, content: function () { trigger.player.addFellowAuto("stone_shengjiachong"); }, ai: { threaten: 1.3, }, }, warrior_fenyong: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { return player.getLeader().countCards("h", { type: "stonecharacter" }) > 0; }, content: function () { player.addSkill("stone_chongfeng"); if (player.isTurnedOver()) { player.turnOver(); } }, }, warrior_peilian: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if ( game.players[i] != player && game.players[i].isMin() && !game.players[i].hasSkill("lschaofeng") ) return true; } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget("陪练:令一名随从获得嘲讽", function (card, playerx, target) { return player != target && target.isMin() && !target.hasSkill("lschaofeng"); }).ai = function (target) { return get.attitude(event.chooser, target) * target.hp; }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); result.targets[0].addSkill("lschaofeng"); } }, }, warrior_chuanci: { trigger: { source: "damageEnd" }, forced: true, unique: true, filter: function (event, player) { var target = event.player; if (target.side == player.side) return false; if (event.parent.name == "warrior_chuanci") return false; if (!target.isMin()) return false; for (var i = 0; i < game.players.length; i++) { if ( game.players[i] != target && game.players[i].isMin() && game.players[i].side != player.side ) return true; } return false; }, content: function () { var list = []; for (var i = 0; i < game.players.length; i++) { if ( game.players[i] != trigger.player && game.players[i].isMin() && game.players[i].side != player.side ) { list.push(game.players[i]); } } if (list.length) { var target = list.randomGet(); player.line(target, "green"); target.damage(trigger.num); } }, }, warrior_zhifu: { trigger: { player: "damageEnd" }, forced: true, unique: true, content: function () { var target = player.getEnemy(); player.line(target, "green"); target.damage(); }, }, priest_puzhao: { trigger: { source: "fellow" }, unique: true, forced: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if ( game.players[i].side == player.side && game.players[i] != player && game.players[i].isMin() ) return true; } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "普照:选择一名己方随从增加2点体力和体力上限", function (card, playerx, target) { return player != target && player.side == target.side && target.isMin(); } ).ai = function (target) { return get.attitude(event.chooser, target) * Math.max(1, 10 - target.hp); }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); result.targets[0].maxHp += 2; result.targets[0].hp += 2; result.targets[0].update(); } }, }, priest_suoxiao: { trigger: { source: "fellow" }, unique: true, forced: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i] != player && game.players[i].isMin() && game.players[i].maxHp > 1) return true; } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "缩小:令一名随从减少2点体力上限", function (card, playerx, target) { return player != target && target.isMin() && target.maxHp > 1; } ).ai = function (target) { if (get.attitude(player, target) >= 0) return 0; if (target.hp == 1) return 0.01; if (target.maxHp - target.hp >= 2) return 0.01; if (target.maxHp - target.hp == 1) { if (target.hp == 2) return 1; return 0.1; } switch (target.hp) { case 1: return 0.01; case 2: return 1; case 3: return 2; case 4: return 1.5; case 5: return 1; default: return 0.8; } }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); result.targets[0].maxHp -= 2; if (result.targets[0].maxHp < 1) { result.targets[0].maxHp = 1; } result.targets[0].update(); } }, }, priest_shixin: { trigger: { global: "useSkillAfter" }, forced: true, unique: true, filter: function (event, player) { return event.career && event.player.side == player.side; }, content: function () { "step 0"; var target = player.getLeader(); target.damage(); player.line(target, "green"); "step 1"; var target = player.getEnemy(); target.damage(); player.line(target, "green"); }, }, priest_shengshui: { trigger: { player: "phaseBegin" }, unique: true, forced: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].side == player.side && game.players[i].isDamaged()) return true; } }, content: function () { var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].side == player.side && game.players[i].isDamaged()) { list.push(game.players[i]); } } if (list.length) { var target = list.randomGet(); target.recover(2); player.line(target, "green"); } }, ai: { threaten: 1.5, }, group: "priest_shengshui2", }, priest_shengshui2: { trigger: { player: "phaseDrawBefore" }, forced: true, popup: false, content: function () { trigger.cancel(); }, ai: { effect: { target: function (card) { if (card.name == "bingliang") return 0; }, }, noPhaseDelay: 1, }, }, priest_muguang: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { return player.getLeader().countCards("h", { type: "stonecharacter" }) > 0; }, content: function () { player.maxHp++; player.hp++; player.update(); }, }, hunter_mishi: { trigger: { global: "fellow" }, forced: true, unique: true, filter: function (event, player) { return event.player.side == player.side && event.source != player; }, content: function () { player.draw(); }, }, hunter_muyang: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { return player.getLeader().countFellow() > 1 && player.getLeader().canAddFellow(); }, content: function () { var num = player.getLeader().countFellow() - 1; var list = []; for (var i in lib.character) { if ( lib.character[i].isFellowInStoneMode && !lib.character[i].isHiddenInStoneMode && lib.character[i].extraModeData && lib.character[i].extraModeData[0] == num ) { list.push(i); } } var target = player.getLeader(); if (list.length) { target.addFellowAuto(list.randomGet()); } }, }, hunter_juji: { unique: true, }, hunter_dusha: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { "step 0"; var list = []; var target = player.getLeader(); for (var i = 0; i < target.deckCards.length; i++) { if ( get.type(target.deckCards[i]) == "stonecharacter" && get.info(target.deckCards[i]).stoneact == 1 ) { list.push(target.deckCards[i]); } } if (list.length && target.canAddFellow()) { target.useCard(target, list.randomGet(), false).noActCount = true; } "step 1"; var list = []; var target = player.getEnemy(); for (var i = 0; i < target.deckCards.length; i++) { if ( get.type(target.deckCards[i]) == "stonecharacter" && get.info(target.deckCards[i]).stoneact == 1 ) { list.push(target.deckCards[i]); } } if (list.length && target.canAddFellow()) { target.useCard(target, list.randomGet(), false).noActCount = true; } }, }, hunter_chuanlin: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { var list = []; var target = player.getLeader(); for (var i = 0; i < target.deckCards.length; i++) { if (get.type(target.deckCards[i]) == "stonecharacter") { list.push(target.deckCards[i]); } } if (list.length) { target.gain(target, list.randomGet(), "gain2"); } }, }, hunter_zhanhuo: { global: "hunter_zhanhuo2", ai: { threaten: 1.8, }, }, hunter_zhanhuo2: { trigger: { player: "phaseDrawBegin" }, forced: true, filter: function (event, player) { return player.hasFellowSkill("hunter_zhanhuo", true) && player.isMin(); }, content: function () { trigger.num += player.countFellowSkill("hunter_zhanhuo", true); }, }, rogue_jiaoyi: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { var target = player.getLeader(); return target.countCards("e") > 0; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseToDiscard( "是否弃置一张装备牌令" + get.translation(player) + "摸三张牌?", "he", function (card) { return get.type(card) == "equip"; } ).ai = function (card) { return 7 - get.value(card); }; "step 1"; if (result.bool) { player.draw(3); } }, }, rogue_jielue: { trigger: { global: "equipEnd" }, unique: true, forced: true, filter: function (event, player) { return event.player.side == player.side && get.subtype(event.card) == "equip1"; }, content: function () { player.draw(2); }, ai: { threaten: 1.3, }, }, rogue_fusheng: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i].hp > 1) { return true; } } }, content: function () { var num = 1; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i].hp > num) { num = game.players[i].hp; } } player.hp = num; player.maxHp = num; player.update(); }, }, rogue_lifa: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { "step 0"; var target = player.getLeader(); if (target.getEquip(1)) { target = target.getEnemy(); player.line(target, "green"); target.damage(); } else { player.line(target, "green"); var equip1 = get.cardPile(function (card) { return get.subtype(card) == "equip1"; }); if (!equip1) { equip1 = game.createCard("qingnang"); } target.equip(equip1); } }, }, rogue_shoudao: { trigger: { global: "phaseEnd" }, forced: true, direct: true, filter: function (event, player) { return event.player == player.getLeader() && event.player.countFellow() > 1; }, content: function () { "step 0"; var players = get.players(); var targets = []; for (var i = 0; i < players.length; i++) { if (players[i].side == player.side && players[i].isMin() && players[i] != player) { targets.push(players[i]); } } if (targets.length) { var target = targets.randomGet(); player.logSkill("rogue_shoudao", target); target.maxHp++; target.hp++; target.update(); target.draw(); } }, ai: { threaten: 1.8, }, }, rogue_duxing: { trigger: { global: "fellow" }, forced: true, unique: true, filter: function (event, player) { return event.player.side != player.side && !player.hasSkill("qianxing"); }, content: function () { player.tempHide(); }, }, paladin_moma: { global: "paladin_moma2", ai: { threaten: 1.5, }, }, paladin_moma2: { trigger: { player: "phaseDrawBegin" }, forced: true, filter: function (event, player) { return player.name == "stone_xinbing" && player.hasFellowSkill("paladin_moma"); }, content: function () { trigger.num += player.countFellowSkill("paladin_moma"); }, }, paladin_jinghua: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if ( game.players[i].isMin() && game.players[i] != player && game.players[i].countCards("h") > 1 ) { return true; } } return false; }, content: function () { "step 0"; var list = []; for (var i = 0; i < game.players.length; i++) { if ( game.players[i].isMin() && game.players[i] != player && game.players[i].countCards("h") > 1 ) { list.push(game.players[i]); } } list.sort(lib.sort.seat); event.list = list; "step 1"; if (event.list.length) { var current = event.list.shift(); current.damage(2); player.line(current, "green"); event.redo(); } }, }, paladin_tuxi: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { var leader = player.getLeader(); return leader.hp < leader.maxHp; }, content: function () { "step 0"; player.line(target, "green"); var target = player.getLeader(); event.target = target; target.judge(function (card) { return get.color(card) == "red" ? 1 : 0; }); "step 1"; if (result.color == "red") { event.target.recover(); } }, }, paladin_huashi: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if ( game.players[i].isMin() && game.players[i] != player && (game.players[i].hp != 2 || game.players[i].maxHp != 2) ) return true; } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "化石:令一名随从的体力值及体力上限变为2", function (card, playerx, target) { return ( player != target && target.isMin() && (target.hp != 2 || target.maxHp != 2) ); } ).ai = function (target) { if (target.hp == 2 && target.maxHp > 2) { return (get.attitude(event.chooser, target) * (2 - target.maxHp)) / 100; } return get.attitude(event.chooser, target) * (2 - target.hp); }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); result.targets[0].hp = 2; result.targets[0].maxHp = 2; result.targets[0].update(); } }, }, paladin_baowei: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if ( game.players[i].side == player.side && game.players[i] != player && game.players[i].isMin() ) return true; } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "保卫:令一名友方随从获得1点护甲", function (card, playerx, target) { return player != target && player.side == target.side && target.isMin(); } ).ai = function (target) { return get.attitude(event.chooser, target); }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); result.targets[0].changeHujia(); } }, }, paladin_miying: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { var target = player.getEnemy(); var added = []; for (var i = 0; i < ui.cardPile.childNodes.length; i++) { if (get.type(ui.cardPile.childNodes[i]) == "delay") { var name = ui.cardPile.childNodes[i].name; if (!added.includes(name) && !target.hasJudge(name)) { target.addJudge(ui.cardPile.childNodes[i]); added.add(name); } } } for (var i = 0; i < ui.discardPile.childNodes.length; i++) { if (get.type(ui.discardPile.childNodes[i]) == "delay") { var name = ui.discardPile.childNodes[i].name; if (!added.includes(name) && !target.hasJudge(name)) { target.addJudge(ui.discardPile.childNodes[i]); added.add(name); } } } if (added.length) { player.line(target, "green"); } }, }, mage_yufa: { trigger: { global: "useSkillAfter" }, forced: true, filter: function (event, player) { return event.career && event.player.side == player.side; }, content: function () { trigger.player.actused--; trigger.player.updateActCount(); }, }, mage_pingxu: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { "step 0"; var list = []; for (var i in lib.card) { if (lib.card[i].stonehidden) continue; if (lib.card[i].type == "stonecard") { list.push(i); } } list = list.randomGets(3); var cards = []; for (var i = 0; i < list.length; i++) { cards.push(game.createCard(list[i])); } player.getLeader().chooseCardButton(cards, "选择一张法术加入手牌", true); "step 1"; player.getLeader().gain(result.links, "draw"); }, }, mage_gushou: { trigger: { global: "damageBegin" }, forced: true, filter: function (event, player) { if (event.num <= 1) return false; return event.player == player.getLeader(); }, priority: -11, content: function () { trigger.num = 1; }, }, mage_jili: { trigger: { global: "useSkillAfter" }, forced: true, filter: function (event, player) { return event.career && event.player.side == player.side; }, content: function () { player.draw(); }, }, mage_aoshu: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { player.getLeader().gain(game.createCard("spell_aoshuzhihui"), "gain2"); }, }, mage_yanshu: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { return player.getLeader().countCards("e") > 0 && player.getEnemy().hasFellow(); }, content: function () { "step 0"; var num = player.getLeader().countCards("e"); var map = []; var targets = player.getEnemy().getFellow(); event.targets = targets; for (var i = 0; i < targets.length; i++) { map.push(0); } for (var i = 0; i < num; i++) { map[Math.floor(Math.random() * map.length)]++; } event.num = 0; event.map = map; "step 1"; var targets = event.targets; if (event.num < targets.length) { if (event.map[event.num]) { player.line(targets[event.num], "fire"); targets[event.num].damage(event.map[event.num], "fire"); } event.num++; event.redo(); } }, }, druid_juhuo: { trigger: { global: "dieAfter" }, filter: function (event, player) { return event.player.isMin() && _status.currentPhase == player.getLeader(); }, unique: true, content: function () { var target = player.getLeader(); target.actused--; target.updateActCount(); player.line(target, "green"); }, }, druid_yeyou: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { game.asyncDraw([player.getLeader(), player.getEnemy()], 1, { drawDeck: 1 }); }, }, druid_chicheng: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { var target = player.getLeader(); return _status.currentPhase == target && target.countFellow() > 1; }, content: function () { var target = player.getLeader(); var num = target.countFellow(); if (num > 1) { target.actused -= num - 1; target.updateActCount(); } }, }, druid_qicheng: { trigger: { player: "dieBegin" }, forced: true, unique: true, content: function () { player.getLeader().addSkill("druid_qicheng2"); }, ai: { threaten: 0.8, }, }, druid_qicheng2: { trigger: { global: "dieAfter" }, forced: true, popup: false, filter: function (event, player) { return event.player.hasSkill("druid_qicheng"); }, content: function () { game.delay(); var list = []; for (var i in lib.character) { if ( lib.character[i].isFellowInStoneMode && !lib.character[i].isHiddenInStoneMode && lib.character[i].extraModeData && lib.character[i].extraModeData[0] == 1 ) { list.push(i); } } player.addFellowAuto(list.randomGet()); player.removeSkill("druid_qicheng2"); }, }, druid_renya: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { "step 0"; player.getLeader().chooseControl("冲锋", "潜行").ai = function () { if (Math.random() < 0.5) return "潜行"; return "冲锋"; }; "step 1"; if (result.control == "潜行") { player.maxHp++; player.hp++; player.update(); player.tempHide(); } else { player.draw(); player.addSkill("stone_chongfeng"); if (player.isTurnedOver()) { player.turnOver(); } } }, }, druid_yuehuo: { trigger: { global: "damageBegin" }, forced: true, unique: true, filter: function (event) { return event.card && get.type(event.card) == "trick" && event.notLink(); }, content: function () { trigger.num++; }, }, shaman_anhun: { trigger: { global: "dieAfter" }, forced: true, unique: true, filter: function (event, player) { return event.player.side == player.side; }, content: function () { player.line(player.getLeader(), "green"); player.getLeader().drawDeck(); }, }, shaman_zoushi: { trigger: { global: "useCardAfter" }, direct: true, unique: true, filter: function (event, player) { return get.type(event.card) == "stonecharacter" && event.player == player.getLeader(); }, content: function () { if (!player.storage.shaman_zoushi) { player.storage.shaman_zoushi = true; } else { var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].side != player.side) { list.push(game.players[i]); } } var target = list.randomGet(); player.line(target, "green"); target.damage(); game.delay(); player.logSkill("shaman_zoushi"); } }, ai: { threaten: 1.3, }, }, shaman_zhuhuo: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { player.draw(Math.ceil(Math.random() * 3)); }, }, shaman_peiyu: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { var fellows = player.getLeader().getFellow(); for (var i = 0; i < fellows.length; i++) { if (fellows[i].hasSkill("shaman_tuteng")) return true; } return false; }, content: function () { var num = 0; var fellows = player.getLeader().getFellow(); for (var i = 0; i < fellows.length; i++) { if (fellows[i].hasSkill("shaman_tuteng")) num++; } player.maxHp += num; player.hp += num; player.update(); }, }, shaman_huoli: { trigger: { global: "phaseUseBegin" }, forced: true, unique: true, filter: function (event, player) { return event.player.career && player.side == event.player.side; }, content: function () { player.line(trigger.player, "green"); trigger.player.actused--; trigger.player.updateActCount(); }, ai: { threaten: 1.5, }, }, warlock_fushishu: { trigger: { player: "phaseAfter" }, forced: true, mark: true, intro: { content: "下个回合结束后死亡", }, content: function () { player.die(); }, ai: { threaten: 0.1, }, }, paladin_zhengqianghaosheng: { trigger: { player: "phaseBegin" }, forced: true, mark: true, intro: { content: "在你的下一准备阶段,令所有友方随从增加1点体力和体力上限并摸一张牌", }, content: function () { player.removeSkill("paladin_zhengqianghaosheng"); var list = player.getFellow(); for (var i = 0; i < list.length; i++) { list[i].maxHp++; list[i].hp++; list[i].update(); } game.asyncDraw(list); }, }, paladin_zhihuizhufu: { trigger: { player: "phaseBegin" }, forced: true, mark: true, intro: { content: function (storage) { return "准备阶段," + get.translation(storage) + "从牌库中获得一张牌"; }, }, filter: function (event, player) { return game.players.includes(player.storage.paladin_zhihuizhufu); }, content: function () { player.storage.paladin_zhihuizhufu.drawDeck(); }, }, priest_kuaisuzhiliao: { mark: true, intro: { content: "本回合手牌上限-1", }, marktext: "治", mod: { maxHandcard: function (player, num) { return num - 1; }, }, }, priest_anyingxingtai: { intro: { content: function (storage, player) { return "职业技能改为造成" + get.cnNumber(player.storage.anyingxingtai) + "点伤害"; }, }, }, hunter_tanxianmao: { trigger: { player: "dieBegin" }, forced: true, unique: true, mark: true, marktext: "帽", intro: { content: "你死亡时,将一张探险帽置入主将的手牌", }, content: function () { player.getLeader().addSkill("hunter_tanxianmao2"); }, }, hunter_tanxianmao2: { trigger: { global: "dieAfter" }, forced: true, popup: false, filter: function (event, player) { return event.player.hasSkill("hunter_tanxianmao"); }, content: function () { player.gain(game.createCard("spell_tanxianmao"), "gain2"); player.removeSkill("hunter_tanxianmao2"); }, }, rogue_zhumo: { trigger: { player: "discardAfter" }, filter: function (event, player) { for (var i = 0; i < event.cards.length; i++) { if (get.position(event.cards[i]) == "d") { if (event.cards[i].name == "spell_zhumo") return true; } } return false; }, forced: true, popup: false, content: function () { "step 0"; event.num = 0; for (var i = 0; i < trigger.cards.length; i++) { if (get.position(trigger.cards[i]) == "d") { if (trigger.cards[i].name == "spell_zhumo") event.num++; } } event.target = player.getEnemy(); "step 1"; if (event.num-- && event.target.canAddFellow()) { event.target.addFellowAuto("stone_zhumo"); event.redo(); } }, }, druid_conglinzhihun: { trigger: { player: "dieBegin" }, forced: true, unique: true, mark: true, intro: { content: "你死亡后,召唤一个树人", }, content: function () { player.getLeader().addSkill("druid_conglinzhihun2"); }, ai: { threaten: 0.8, }, }, druid_conglinzhihun2: { trigger: { global: "dieAfter" }, forced: true, popup: false, filter: function (event, player) { return event.player.hasSkill("druid_conglinzhihun"); }, content: function () { game.delay(); player.addFellowAuto("stone_shurenx"); player.removeSkill("druid_conglinzhihun2"); }, }, shaman_xianzuzhishi: { mark: true, intro: { content: "本回合手牌上限-1", }, marktext: "祖", mod: { maxHandcard: function (player, num) { return num - 1; }, }, }, shaman_xianzuzhihun: { trigger: { player: "dieBegin" }, forced: true, unique: true, mark: true, intro: { content: "你死亡后,召唤一个自身的复制", }, marktext: "魂", content: function () { var target = player.getLeader(); target.addSkill("shaman_xianzuzhihun2"); target.storage.shaman_xianzuzhihun = player.name; }, ai: { threaten: 0.5, }, }, shaman_xianzuzhihun2: { trigger: { global: "dieAfter" }, forced: true, popup: false, filter: function (event, player) { if (!player.storage.shaman_xianzuzhihun) return false; return event.player.hasSkill("shaman_xianzuzhihun"); }, content: function () { game.delay(); player.addFellowAuto(player.storage.shaman_xianzuzhihun); player.removeSkill("shaman_xianzuzhihun2"); delete player.storage.shaman_xianzuzhihun; }, }, shaman_fengnu: { unique: true, trigger: { player: "phaseAfter" }, forced: true, mark: true, intro: { content: "结合结束后,你获得一个额外的回合", }, filter: function (event, player) { return event.parent.name != "shaman_fengnu"; }, content: function () { player.phase(); }, ai: { order: -10, result: { target: 2, }, threaten: 1.5, }, }, shaman_shihuawuqi: { trigger: { player: "phaseBegin" }, forced: true, content: function () { player.draw(3); }, mark: true, intro: { content: "准备阶段,摸三张牌", }, group: "shaman_shihuawuqi2", }, shaman_shihuawuqi2: { trigger: { global: "phaseBegin" }, forced: true, popup: false, filter: function (event, player) { return event.player == player.getLeader(); }, content: function () { player.removeSkill("shaman_shihuawuqi"); }, }, mage_hanbingpingzhang: { trigger: { player: ["damageBegin", "loseHpBegin"] }, forced: true, unique: true, priority: -55, mark: true, filter: function (event, player) { return player.hp - event.num < 2; }, content: function () { trigger.num = player.hp - 2; }, intro: { content: "体力值不能降至2以内", }, marktext: "屏", ai: { effect: { target: function (card, player, target) { if (get.tag(card, "damage") || get.tag(card, "loseHp")) { if (target.hp <= 2) return 0; } }, }, }, group: "mage_hanbingpingzhang2", }, mage_hanbingpingzhang2: { trigger: { global: "phaseBegin" }, forced: true, popup: false, filter: function (event, player) { return event.player == player.getLeader(); }, content: function () { player.removeSkill("mage_hanbingpingzhang"); }, }, spell_modaoyou: { intro: { content: function (storage) { return "下次剑刃乱舞的伤害+" + storage; }, }, }, hunter_jiewang2: { trigger: { global: "dieAfter" }, forced: true, popup: false, filter: function (event, player) { return event.player.hasSkill("hunter_jiewang"); }, content: function () { player.gain(game.createCard(lib.beastList.randomGet() + "_stonecharacter"), "draw"); player.removeSkill("hunter_jiewang2"); }, }, hunter_zidanshangtang: { trigger: { player: "useCard" }, forced: true, mark: true, intro: { content: "每当你使用一张法术牌,便随机获得一张猎人职业法术牌", }, filter: function (event) { return get.type(event.card) == "stonecard"; }, content: function () { var list = [ "spell_lierenyinji", "spell_guanmenfanggou", "spell_duochongsheji", "spell_kuaisusheji", "spell_zhaohuanchongwu", ]; player.gain(game.createCard(list.randomGet()), "draw"); }, }, spell_yemanpaoxiao: { mark: true, intro: { content: "友方角色造成的伤害+1", }, global: "spell_yemanpaoxiao2", }, spell_yemanpaoxiao2: { trigger: { source: "damageBegin" }, forced: true, filter: function (event, player) { return player.getLeader().hasSkill("spell_yemanpaoxiao") && event.notLink(); }, content: function () { trigger.num++; }, }, stone_zibao: { trigger: { player: "phaseAfter" }, forced: true, content: function () { player.die(); }, }, spell_sijidaifa: { trigger: { player: "useCard" }, forced: true, filter: function (event, player) { return get.type(event.card) == "stonecard"; }, mark: true, intro: { content: "使用下一张法术牌时获得X点行动值,X为该法术的行动值消耗且不超过3", }, content: function () { var num = lib.card[trigger.card.name].stoneact; if (num > 3) num = 3; player.actused -= num; player.updateActCount(); player.removeSkill("spell_sijidaifa"); }, }, shaman_qingwa: { trigger: { player: "phaseDrawBefore" }, forced: true, unique: true, popup: false, content: function () { trigger.cancel(); }, ai: { threaten: 0.1, }, }, stone_jingxiang: { trigger: { player: "phaseDrawBefore" }, forced: true, unique: true, popup: false, content: function () { trigger.cancel(); }, ai: { effect: { target: function (card) { if (card.name == "bingliang") return 0; }, }, noPhaseDelay: 1, }, }, mage_mianyang: { mod: { cardEnabled: function (card) { if (card.name == "sha") return false; }, }, ai: { threaten: 0.1, }, }, priest_xundao: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { return player.getLeader().countCards("h", { type: "stonecharacter" }) > 0; }, content: function () { player.draw(); player.addSkill("lschaofeng"); }, }, priest_guangyao: { trigger: { player: "changeHp" }, forced: true, unique: true, filter: function (event) { return event.num != 0; }, content: function () { player.draw(Math.abs(trigger.num)); }, }, priest_zhufu: { trigger: { player: "dieBegin" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if ( game.players[i].isMin() && game.players[i].side == player.side && game.players[i] != player ) { return true; } } return false; }, content: function () { var list = []; for (var i = 0; i < game.players.length; i++) { if ( game.players[i].isMin() && game.players[i].side == player.side && game.players[i] != player ) { list.push(game.players[i]); } } var target = list.randomGet(); player.line(target, "green"); target.maxHp++; target.hp++; target.update(); }, }, priest_hunwu: { unique: true, }, priest_faxian: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { "step 0"; var list = []; for (var i in lib.card) { if (lib.card[i].stonehidden) continue; if (lib.card[i].type == "stonecharacter") { list.push(i); } } list = list.randomGets(3); var cards = []; for (var i = 0; i < list.length; i++) { cards.push(game.createCard(list[i])); } player.getLeader().chooseCardButton(cards, "选择一个随从加入手牌", true); "step 1"; player.getLeader().gain(result.links, "draw"); }, }, priest_shengliao: { trigger: { global: "recoverEnd" }, forced: true, unique: true, filter: function (event) { return event.player.isMin(); }, content: function () { player.getLeader().drawDeck(); }, }, priest_shengguang: { trigger: { global: "recoverEnd" }, forced: true, unique: true, filter: function (event) { return event.player.isMin(); }, content: function () { player.draw(); }, }, rogue_cisha: { trigger: { source: "damageEnd" }, forced: true, unique: true, filter: function (event, player) { return event.player.isAlive() && event.player.isMin(); }, content: function () { trigger.player.die({ source: player }); }, }, rogue_touxi: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { var target = player.getLeader(); return target.countCards("e") > 0; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseCardTarget({ position: "e", filterTarget: function (card, player, target) { return player.side != target.side; }, filterCard: true, ai1: function (card) { return 9 - get.value(card); }, ai2: function (target) { return get.damageEffect(target, player, player); }, prompt: "偷袭:弃置一张装备区内的牌并对一名敌方角色1点伤害", }); player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.discard(result.cards); event.chooser.line(result.targets[0]); result.targets[0].damage(event.chooser); } }, }, rogue_qiancang: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if ( game.players[i].isMin() && game.players[i].side != player.side && game.players[i].hp == game.players[i].maxHp ) { return true; } } return false; }, content: function () { "step 0"; var list = []; for (var i = 0; i < game.players.length; i++) { if ( game.players[i].isMin() && game.players[i].side != player.side && game.players[i].hp == game.players[i].maxHp ) { list.push(game.players[i]); } } list.sort(lib.sort.seat); event.list = list; "step 1"; if (event.list.length) { var current = event.list.shift(); current.damage(); player.line(current, "green"); event.redo(); } }, }, rogue_xunbao: { trigger: { player: "dieBegin" }, forced: true, unique: true, content: function () { player.getLeader().addSkill("rogue_xunbao2"); }, }, rogue_xunbao2: { trigger: { global: "dieAfter" }, forced: true, popup: false, filter: function (event, player) { return event.player.hasSkill("rogue_xunbao"); }, content: function () { player.gain(game.createCard("spell_sijidaifa"), "gain2"); player.removeSkill("rogue_xunbao2"); }, }, rogue_touqie: { trigger: { source: "damageEnd" }, forced: true, unique: true, content: function () { player.getLeader().drawDeck(); }, }, rogue_zhaomu: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { return player.getLeader().canAddFellow(); }, content: function () { "step 0"; player.getLeader().addFellowAuto("stone_haidao"); "step 1"; player.line(result, "green"); }, }, warrior_zhujia: { trigger: { player: "damageEnd" }, forced: true, unique: true, content: function () { var leader = player.getLeader(); leader.changeHujia(); }, }, warrior_tidun: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { var leader = player.getLeader(); leader.changeHujia(2); }, }, warrior_tongling: { trigger: { global: "fellow" }, forced: true, unique: true, filter: function (event, player) { return ( event.source.side == player.side && event.source != player && event.source.countCards("h") <= 2 ); }, content: function () { trigger.source.classList.remove("turnedover"); player.line(trigger.source, "green"); }, ai: { threaten: 1.3, }, }, warrior_baoluan: { trigger: { global: "damageEnd" }, forced: true, filter: function (event, player) { return event.player.isMin(); }, content: function () { player.draw(); }, ai: { threaten: 1.6, }, }, warrior_jiangong: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i] != player && game.players[i].isMin()) { return true; } } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "监工:对一名随从造成1点伤害然后令其摸两张牌", function (card, playerx, target) { return player != target && target.isMin(); } ).ai = function (target) { var att = get.attitude(event.chooser, target); if (target.hp == 1) return -att; if (target.hp == 2) return 0; return att; }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); game.delay(); result.targets[0].damage(event.chooser); result.targets[0].draw(2); } }, }, warlock_yuhuo: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i] != player) { return true; } } return false; }, content: function () { "step 0"; var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i] != player) { list.push(game.players[i]); } } list.sort(lib.sort.seat); event.list = list; "step 1"; if (event.list.length) { var current = event.list.shift(); current.damage(); player.line(current, "green"); event.redo(); } }, }, warlock_zaihuo: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { var target = player.getLeader(); var hs = target.getCards("h"); if (hs.length) { target.discard(hs.randomGets(2)); } }, }, warlock_yongsheng: { trigger: { player: "dieBegin" }, forced: true, unique: true, content: function () { player.getLeader().addSkill("warlock_yongsheng2"); }, ai: { threaten: 0.1, }, }, warlock_yongsheng2: { trigger: { global: "dieAfter" }, forced: true, popup: false, filter: function (event, player) { return event.player.hasSkill("warlock_yongsheng"); }, content: function () { game.delay(); player.addFellowAuto("stone_kongjuzhanma"); player.removeSkill("warlock_yongsheng2"); }, }, warlock_zhaogui: { trigger: { player: "damageEnd" }, forced: true, unique: true, filter: function (event, player) { return player.getLeader().canAddFellow(); }, content: function () { player.getLeader().addFellowAuto("stone_xiaogui"); }, }, warlock_nonghuo: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { var target = player.getLeader(); target.damage("fire"); player.line(target, "green"); game.delay(); }, }, paladin_zhaohuan: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { player.getLeader().addSkill("paladin_zhaohuan2"); }, }, paladin_zhaohuan2: { trigger: { player: "useCard" }, forced: true, mark: true, intro: { content: "使用下一张随从牌时,获得两点行动值", }, filter: function (event, player) { return get.type(event.card) == "stonecharacter"; }, content: function () { player.actused -= 2; player.updateActCount(); player.removeSkill("paladin_zhaohuan2"); }, }, paladin_shouwei: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { var leader = player.getLeader(); return leader.hp < leader.maxHp; }, content: function () { var leader = player.getLeader(); leader.recover(2); }, }, paladin_chidun: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if ( game.players[i].side != player.side && game.players[i].isMin() && game.players[i].countCards("he") ) { return true; } } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "持盾:弃置对方一名随从的所有牌", function (card, playerx, target) { return ( player.side != target.side && target.isMin() && target.countCards("he") > 0 ); } ).ai = function (target) { return target.countCards("he"); }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); game.delay(); result.targets[0].discard(result.targets[0].getCards("he")); } }, }, paladin_zhaochao: { trigger: { global: "useSkillAfter" }, forced: true, unique: true, filter: function (event, player) { return event.career && event.player.side == player.side; }, content: function () { player.draw(2); }, }, paladin_buji: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].name == "stone_xinbing" && game.players[i].side == player.side) { return true; } } return false; }, content: function () { var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].name == "stone_xinbing" && game.players[i].side == player.side) { list.push(game.players[i]); } } for (var i = 0; i < list.length; i++) { list[i].maxHp++; list[i].hp++; list[i].update(); } game.asyncDraw(list, 2); player.line(list, "green"); }, }, paladin_hudun: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { player.changeHujia(); }, }, mage_shifa: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].side == player.side && game.players[i] != player) return true; } return false; }, content: function () { var target1 = player.getLeader(); var target2 = player.getEnemy(); var list = []; for (var i in lib.card) { if (lib.card[i].stonehidden) continue; if (lib.card[i].type == "stonecard") { list.push(i); } } target1.gain(game.createCard(list.randomGet())); target2.gain(game.createCard(list.randomGet())); target1.$draw(); target2.$draw(); game.delay(); }, }, mage_minghuo: { trigger: { global: "damageBegin" }, forced: true, filter: function (event, player) { return ( event.source && event.source == player.getLeader() && event.parent.name == "_mage_skill" ); }, content: function () { trigger.num++; }, }, mage_tunfa: { trigger: { global: "useCard" }, forced: true, unique: true, filter: function (event, player) { return get.type(event.card) == "stonecard" && event.player == player.getLeader(); }, content: function () { player.draw(); }, }, mage_lieyan: { trigger: { global: "useCardAfter" }, forced: true, unique: true, filter: function (event, player) { return get.type(event.card) == "stonecard" && event.player == player.getLeader(); }, content: function () { var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].side != player.side) { list.push(game.players[i]); } } var target = list.randomGet(); player.line(target, "fire"); target.damage("fire"); game.delay(); }, ai: { threaten: 1.3, }, }, mage_zhufa: { trigger: { global: "useCard" }, forced: true, unique: true, filter: function (event, player) { return get.type(event.card) == "stonecard" && event.player == player.getLeader(); }, content: function () { trigger.player.actused--; trigger.player.updateActCount(); }, }, mage_bingdong: { trigger: { source: "damageEnd" }, forced: true, filter: function (event, player) { return event.player.isMin() && event.player != player && !event.player.isTurnedOver(); }, content: function () { trigger.player.turnOver(); }, }, hunter_xunshou: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if ( game.players[i].side == player.side && game.players[i] != player && game.players[i].isMin() ) return true; } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "驯兽:选择一名己方随从增加1点体力和体力上限并摸两张牌", function (card, playerx, target) { return player != target && player.side == target.side && target.isMin(); } ).ai = function (target) { return get.attitude(event.chooser, target); }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); result.targets[0].maxHp++; result.targets[0].hp++; result.targets[0].update(); result.targets[0].draw(2); result.targets[0].addSkill("lschaofeng"); } }, }, hunter_jiewang: { trigger: { player: "dieBegin" }, forced: true, unique: true, content: function () { player.getLeader().addSkill("hunter_jiewang2"); }, }, hunter_qunxi: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { var targets = []; for (var i = 0; i < game.players.length; i++) { if ( game.players[i].isMin() && game.players[i] != player && game.players[i].side == player.side ) { targets.push(game.players[i]); } } targets.sort(lib.sort.seat); game.asyncDraw(targets); }, }, stone_zhiyu: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { for (var i = 0; i < game.players.length; i++) { if ( game.players[i].isMin() && game.players[i] != player && game.players[i].side == player.side && game.players[i].hp < game.players[i].maxHp ) { game.players[i].recover(); } } }, }, hunter_nuhou: { trigger: { player: "dieBegin" }, forced: true, unique: true, content: function () { for (var i = 0; i < game.players.length; i++) { if (game.players[i].side != player.side) { game.players[i].addSkill("hunter_nuhou2"); } } }, }, hunter_nuhou2: { trigger: { global: "dieAfter" }, forced: true, popup: false, unique: true, filter: function (event, player) { return player.hasSkill("hunter_nuhou2"); }, content: function () { player.damage("nosource"); player.removeSkill("hunter_nuhou2"); }, }, stone_chongfeng: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { player.classList.remove("turnedover"); }, }, druid_nuhuo: { trigger: { global: "useSkillAfter" }, forced: true, filter: function (event, player) { return event.career && event.player.side == player.side; }, content: function () { var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].side != player.side) { list.push(game.players[i]); } } var target = list.randomGet(); player.line(target, "green"); target.damage(); game.delay(); }, ai: { threaten: 1.5, }, }, druid_huwei: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].side != player.side && game.players[i].isMin()) { return true; } } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "护卫:对一名对方随从造成1点伤害或弃置其所有牌并将其体力上限改为1", function (card, playerx, target) { return player.side != target.side && target.isMin(); } ).ai = function (target) { return Math.max(1, 10 - target.hp); }; player.line(event.chooser); "step 1"; if (result.bool) { event.target = result.targets[0]; event.chooser.chooseControl("造成伤害", "discard_card").ai = function () { if (event.target.hp > 1) return "discard_card"; return "造成伤害"; }; event.chooser.line(event.target); game.delay(); } else { event.finish(); } "step 2"; if (result.control == "造成伤害") { event.target.damage(event.chooser); } else { event.target.discard(event.target.getCards("h")); if (event.target.maxHp > 2) { event.target.loseMaxHp(event.target.maxHp - 2); } } }, }, druid_yexingchengzhang: { trigger: { player: "phaseUseBegin" }, forced: true, mark: true, intro: { content: "下个出牌阶段开始时获得三点额外行动值", }, content: function () { player.actused -= 3; player.updateActCount(); player.removeSkill("druid_yexingchengzhang"); }, }, druid_ziyang: { trigger: { player: "phaseUseBegin" }, forced: true, mark: true, intro: { content: "下个出牌阶段开始时获得四点额外行动值", }, content: function () { player.actused -= 4; player.updateActCount(); player.removeSkill("druid_ziyang"); }, }, druid_chengzhang: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { var target = player.getLeader(); target.actused--; target.updateActCount(); }, group: "druid_chengzhang2", }, druid_chengzhang2: { trigger: { player: "dieBegin" }, forced: true, unique: true, content: function () { player.getLeader().addSkill("druid_chengzhang3"); }, }, druid_chengzhang3: { trigger: { global: "dieAfter" }, forced: true, popup: false, filter: function (event, player) { return event.player.hasSkill("druid_chengzhang"); }, content: function () { if (player.countCards("h")) { game.delay(); player.chooseToDiscard("h", true); } player.removeSkill("druid_chengzhang3"); }, }, shaman_xueju: { trigger: { global: "useCard" }, forced: true, unique: true, filter: function (event, player) { return get.type(event.card) == "stonecharacter" && event.player == player.getLeader(); }, content: function () { player.draw(); }, }, shaman_huoxi: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].side != player.side && game.players[i].isMin()) { return true; } } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "火袭:对一名对方随从造成2点伤害", function (card, playerx, target) { return player.side != target.side && target.isMin(); } ).ai = function (target) { return Math.max(1, 10 - target.hp); }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); game.delay(); result.targets[0].damage(2, "fire", event.chooser); } }, }, shaman_fachao: { trigger: { global: "phaseEnd" }, forced: true, filter: function (event, player) { return event.player.career && player.side == event.player.side && event.player.isAlive(); }, content: function () { trigger.player.drawDeck(); trigger.player.recover(); }, }, shaman_jili: { trigger: { global: "phaseEnd" }, forced: true, filter: function (event, player) { if (event.player.career && player.side == event.player.side) { for (var i = 0; i < game.players.length; i++) { if ( !game.players[i].career && game.players[i].hasSkill("shaman_tuteng") && game.players[i].side == player.side ) { return true; } } } return false; }, content: function () { var list = []; for (var i = 0; i < game.players.length; i++) { if ( !game.players[i].career && game.players[i].hasSkill("shaman_tuteng") && game.players[i].side == player.side ) { list.push(game.players[i]); } } if (list.length) { game.asyncDraw(list); } }, }, shaman_huoshe: { trigger: { global: "damageBegin" }, forced: true, filter: function (event, player) { return ( event.source && event.source != player && event.source.isMin() && player.side == event.source.side && event.notLink() ); }, content: function () { trigger.num++; }, ai: { threaten: 1.8, }, }, _priest_skill: { enable: "phaseUse", filter: function (event, player) { if (player.career != "priest") return false; if (player.getActCount() + 2 > player.actcount) return false; if (player.storage.anyingxingtai) return false; return true; }, usable: 1, prompt: function (event) { if (event.player.hasFellowSkill("priest_hunwu")) return "令目标失去1点体力"; return "回复1点体力"; }, filterTarget: function (card, player, target) { if (player.hasFellowSkill("priest_hunwu")) return true; return target.hp < target.maxHp; }, content: function () { player.actused += 2; player.updateActCount(); event.parent.career = "priest"; var num = 1; if (player.hasFellowSkill("stone_shenyou")) { num = 2; } if (player.hasFellowSkill("priest_hunwu")) { target.loseHp(num); } else { target.recover(num); } }, ai: { order: 2, result: { target: function (player, target) { if (player.hasFellowSkill("priest_hunwu")) { return -1; } return get.recoverEffect(target, player, target); }, }, }, }, _priest_skillx: { enable: "phaseUse", filter: function (event, player) { if (player.career != "priest") return false; if (player.getActCount() + 2 > player.actcount) return false; if (!player.storage.anyingxingtai) return false; return true; }, usable: 1, prompt: function (event, player) { return "造成" + get.cnNumber(_status.event.player.storage.anyingxingtai) + "点伤害"; }, filterTarget: true, content: function () { player.actused += 2; player.updateActCount(); event.parent.career = "priest"; var num = 1; // if(player.hasFellowSkill('stone_shenyou')){ // num=2; // } target.damage(player.storage.anyingxingtai * num); }, ai: { order: 2, result: { target: function (player, target) { return get.damageEffect(target, player, target); }, }, }, }, _mage_skill: { enable: "phaseUse", filter: function (event, player) { if (player.career != "mage") return false; if (player.getActCount() + 2 > player.actcount) return false; return true; }, usable: 1, line: "fire", filterTarget: function (card, player, target) { return !target.career; }, content: function () { player.actused += 2; player.updateActCount(); target.damage("fire"); event.parent.career = "mage"; }, ai: { order: 2, result: { target: function (player, target) { return get.damageEffect(target, player, target, "fire"); }, }, }, }, _warlock_skill: { enable: "phaseUse", filter: function (event, player) { if (player.hasSkill("stone_lianyu")) return false; if (player.career != "warlock") return false; if (player.getActCount() + 2 > player.actcount) return false; return true; }, usable: 1, content: function () { player.actused += 2; player.updateActCount(); player.drawDeck(2); event.parent.career = "warlock"; }, ai: { order: 0.5, result: { player: 1, }, }, }, _warlock_skillx: { enable: "phaseUse", filter: function (event, player) { if (!player.hasSkill("stone_lianyu")) return false; if (player.career != "warlock") return false; if (player.getActCount() + 2 > player.actcount) return false; if (!player.canAddFellow()) return false; return true; }, usable: 1, content: function () { "step 0"; player.actused += 2; player.updateActCount(); event.parent.career = "warlock"; player.addFellowAuto("stone_diyuhuox"); "step 1"; var num = player.storage.stone_lianyu; if (num && get.itemtype(result) == "player") { result.maxHp += num; result.hp += num; result.directgain(get.cards(num)); } }, ai: { order: 0.5, result: { player: 1, }, }, }, _hunter_skill: { enable: "phaseUse", filter: function (event, player) { if (player.career != "hunter") return false; if (player.getActCount() + 2 > player.actcount) return false; return true; }, usable: 1, prompt: function (event) { if (event.player.hasFellowSkill("hunter_juji")) return "造成1点伤害"; return "对敌方主将造成1点伤害"; }, selectTarget: function () { if (_status.event.player.hasFellowSkill("hunter_juji")) return 1; return -1; }, filterTarget: function (card, player, target) { if (player.hasFellowSkill("hunter_juji")) return target != player; return target.career && target.side != player.side; }, content: function () { player.actused += 2; player.updateActCount(); target.damage(); event.parent.career = "hunter"; }, ai: { order: 2, result: { target: function (player, target) { return get.damageEffect(target, player, target); }, }, }, }, _warrior_skill: { enable: "phaseUse", filter: function (event, player) { if (player.hujia >= 3) return false; if (player.career != "warrior") return false; if (player.getActCount() + 2 > player.actcount) return false; return true; }, usable: 1, content: function () { player.actused += 2; player.updateActCount(); player.changeHujia(1); event.parent.career = "warrior"; }, ai: { order: 2, result: { player: 1, }, }, }, _rogue_skill: { enable: "phaseUse", filter: function (event, player) { if (player.career != "rogue") return false; if (player.getActCount() + 2 > player.actcount) return false; return true; }, usable: 1, content: function () { "step 0"; player.actused += 2; player.updateActCount(); var equip1 = get.cardPile(function (card) { return get.subtype(card) == "equip1"; }); if (!equip1) { equip1 = game.createCard("qingnang"); } var equip4 = get.cardPile(function (card) { return get.type(card) == "equip" && get.subtype(card) != "equip1"; }); if (!equip4) { equip4 = game.createCard("chitu"); } player.$gain(equip1); setTimeout(function () { player.$gain(equip4); }, 250); game.delay(); event.equip1 = equip1; event.equip4 = equip4; "step 1"; player.equip(event.equip1); game.delay(0.5); "step 2"; player.equip(event.equip4); event.parent.career = "rogue"; }, ai: { order: function (skill, player) { if (!player.getEquip(1) && player.countCards("e") < 2) { if ( player.countCards("h", "sha") && player.getActCount() + 3 <= player.actcount ) { return 4; } return 0.1; } return 0; }, result: { player: function (player) { if (player.countCards("e") <= 2) return 1; return 0; }, }, }, }, _druid_skill: { enable: "phaseUse", filter: function (event, player) { if (player.career != "druid") return false; if (player.getActCount() + 2 > player.actcount) return false; return lib.filter.cardEnabled({ name: "sha" }, player); }, usable: 1, filterTarget: function (card, player, target) { return player.canUse("sha", target, null, false); }, direct: true, content: function () { player.actused += 2; player.updateActCount(); player.useCard({ name: "sha" }, targets, "_druid_skill", false).animate = false; event.parent.career = "druid"; }, ai: { order: function () { return get.order({ name: "sha" }) - 0.1; }, result: { target: function (player, target) { return get.effect(target, { name: "sha" }, player, target); }, }, }, }, shaman_tuteng: { trigger: { player: "phaseDrawBefore" }, forced: true, popup: false, content: function () { trigger.cancel(); }, ai: { effect: { target: function (card) { if (card.name == "bingliang") return 0; }, }, noPhaseDelay: 1, }, }, shaman_zhiliao: { trigger: { player: "phaseEnd" }, forced: true, direct: true, content: function () { "step 0"; var players = get.players(); var targets = []; for (var i = 0; i < players.length; i++) { if ( players[i].side == player.side && !players[i].career && players[i].hp < players[i].maxHp ) { targets.push(players[i]); players[i].recover(); } } if (targets.length) { player.logSkill("shaman_zhiliao"); } else { event.finish(); } "step 1"; game.delay(); }, ai: { threaten: 2, }, }, shaman_fali_old: { trigger: { global: "phaseEnd" }, forced: true, direct: true, filter: function (event, player) { return event.player == player.getLeader(); }, content: function () { "step 0"; var players = get.players(); var targets = []; for (var i = 0; i < players.length; i++) { if ( players[i].side == player.side && !players[i].career && players[i].countCards("h") <= 1 ) { targets.push(players[i]); } } if (targets.length) { game.asyncDraw(targets); player.logSkill("shaman_fali"); } else { event.finish(); } "step 1"; game.delay(); }, }, shaman_zhuore: { trigger: { global: "phaseEnd" }, forced: true, direct: true, filter: function (event, player) { return event.player == player.getLeader(); }, content: function () { "step 0"; var players = get.players(); var targets = []; for (var i = 0; i < players.length; i++) { if (players[i].side != player.side && !players[i].career) { targets.push(players[i]); } } if (targets.length) { var target = targets.randomGet(); player.logSkill("shaman_zhuore", target); target.damage(); } else { event.finish(); } "step 1"; game.delay(); }, }, _shaman_skill: { enable: "phaseUse", filter: function (event, player) { if (player.career != "shaman") return false; if (!player.canAddFellow()) return false; if (player.getActCount() + 2 > player.actcount) return false; return true; }, usable: 1, content: function () { player.actused += 2; player.updateActCount(); var name = "stone_tuteng" + Math.ceil(Math.random() * 4); player.addFellowAuto(name); event.parent.career = "shaman"; }, ai: { order: 2, result: { player: 1, }, }, }, _paladin_skill: { enable: "phaseUse", filter: function (event, player) { if (player.career != "paladin") return false; if (!player.canAddFellow()) return false; if (player.getActCount() + 2 > player.actcount) return false; return true; }, usable: 1, content: function () { player.actused += 2; player.updateActCount(); player.addFellowAuto("stone_xinbing"); event.parent.career = "paladin"; }, ai: { order: 2, result: { player: 1, }, }, }, lschaofeng: { mark: true, intro: { content: "已获得嘲讽", }, }, _lschaofeng: { mod: { targetEnabled: function (card, player, target) { if (target.hasSkill("lschaofeng")) return; if (card.name == "sha") { for (var i = 0; i < game.players.length; i++) { if ( game.players[i].side == target.side && game.players[i].hasSkill("lschaofeng") ) { return false; } } } }, }, }, spell_anyingkuangluan_die: { trigger: { player: "phaseAfter" }, forced: true, unique: true, content: function () { player.die(); }, }, stone_juxingchanchu1: { trigger: { player: "dieBegin" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].side != player.side && game.players[i].isMin()) { return true; } } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "毒液:令一名敌方随从失去1点体力", function (card, playerx, target) { return player.side != target.side && target.isMin(); } ).ai = function (target) { return Math.max(1, 10 - target.hp); }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); game.delay(); result.targets[0].addSkill("stone_juxingchanchu2"); } }, }, stone_juxingchanchu2: { trigger: { global: "dieAfter" }, forced: true, popup: false, unique: true, filter: function (event, player) { return player.hasSkill("stone_juxingchanchu2"); }, content: function () { player.loseHp(); player.removeSkill("stone_juxingchanchu2"); }, }, stone_shishigui1: { trigger: { player: "dieBegin" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i] != player && game.players[i].isMin()) { return true; } } return false; }, content: function () { for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i] != player) { game.players[i].addSkill("stone_shishigui2"); } } }, }, stone_shishigui2: { trigger: { global: "dieAfter" }, forced: true, popup: false, unique: true, filter: function (event, player) { return player.hasSkill("stone_shishigui2"); }, content: function () { player.loseHp(); player.removeSkill("stone_shishigui2"); }, }, stone_fennuxiaoji1: { trigger: { player: "phaseBegin" }, filter: function (event, player) { return player.countCards("h") == 0; }, content: function () { player.draw(2); }, }, stone_fatiaozhuru1: { trigger: { player: "phaseEnd" }, filter: function (event, player) { return player.countCards("h") == 0; }, content: function () { player.draw(2); }, }, stone_qianxing: { trigger: { source: "fellow" }, silent: true, unique: true, content: function () { player.tempHide(); }, }, stone_kutongsiseng1: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { player.getLeader().addSkill("stone_kutongsiseng2"); }, }, stone_kutongsiseng2: { trigger: { player: "phaseEnd" }, forced: true, content: function () { player.draw(); player.removeSkill("stone_kutongsiseng2"); }, }, stone_yuanguanying1: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "暗影:选择敌方一名角色视为对其使用一张杀", function (card, player, target) { return lib.filter.targetEnabled({ name: "sha" }, event.chooser, target); } ).ai = function (target) { return get.effect(target, { name: "sha" }, event.chooser); }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.useCard({ name: "sha" }, result.targets, false); } }, }, stone_zhucangzhe1: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].side == player.side && game.players[i] != player) return true; } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "发明:选择己方一名角色摸一张牌", function (card, playerx, target) { return player != target && player.side == target.side; } ).ai = function (target) { return get.attitude(event.chooser, target); }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); result.targets[0].draw(); } }, }, stone_zhongshi1: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if ( game.players[i].side != player.side && game.players[i].isMin() && game.players[i].countCards("he") ) { return true; } } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "叫嚣:弃置对方一名随从的所有牌", function (card, playerx, target) { return ( player.side != target.side && target.isMin() && target.countCards("he") > 0 ); } ).ai = function (target) { return target.countCards("he"); }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); game.delay(); result.targets[0].discard(result.targets[0].getCards("he")); } }, }, stone_huoqiangshou1: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { for (var i = 0; i < game.players.length; i++) { if (game.players[i].side != player.side && game.players[i].isMin()) { return true; } } return false; }, content: function () { "step 0"; event.chooser = player.getLeader(); event.chooser.chooseTarget( "火枪:对一名对方随从造成1点伤害", function (card, playerx, target) { return player.side != target.side && target.isMin(); } ).ai = function (target) { return Math.max(1, 10 - target.hp); }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); game.delay(); result.targets[0].damage(event.chooser); } }, }, stone_dijieshicong1: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { return player.getEnemy().countCards("e") > 0; }, content: function () { var enemy = player.getEnemy(); var es = enemy.getCards("e"); if (es.length) { player.getLeader().line(enemy); game.delay(); enemy.discard(es.randomGet()); // game.log(get.translation(event.enemy)+'将'+get.translation(es)+'收入手牌') } }, }, stone_yaosaishouwei1: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { player.getLeader().addTempSkill("stone_yaosaishouwei2"); }, }, stone_yaosaishouwei2: { mod: { maxHandcard: function (player, num) { return num + 2; }, }, }, stone_famingjia1: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { player.getLeader().draw(2); }, }, stone_chilundashi1: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { player.addSkill("stone_chilundashi2"); }, }, stone_chilundashi2: { trigger: { player: "phaseDrawBegin" }, forced: true, content: function () { trigger.num++; player.removeSkill("stone_chilundashi2"); }, }, stone_hanguangzhizhe1: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { var targets = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i] != player) { targets.push(game.players[i]); } } targets.sort(lib.sort.seat); game.asyncDraw(targets); }, }, stone_aihaozhihun1: { trigger: { source: "fellow" }, forced: true, unique: true, content: function () { var targets = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i].side != player.side) { targets.push(game.players[i]); } } targets.sort(lib.sort.seat); for (var i = 0; i < targets.length; i++) { targets[i].discard(targets[i].getCards("he")); } }, }, stone_yanjingshe1: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { var num = player.getEnemy().countFellow(); return num > 0 && num >= player.getLeader().countFellow(); }, content: function () { var list = []; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i].side != player.side) { list.push(game.players[i]); } } if (list.length) { var target = list.randomGet(); player.line(target, "green"); target.die({ source: player }); game.delay(); } }, }, stone_yanjingshe_old: { trigger: { source: "fellow" }, forced: true, unique: true, filter: function (event, player) { return player.getEnemy().countFellow() >= player.getLeader().countFellow(); }, content: function () { "step 0"; event.chooser = player.getEnemy(); event.chooser.chooseTarget( "毒噬:选择己方一名随从令其死亡", function (card, playerx, target) { return target.isMin() && target.side != player.side; }, true ).ai = function (target) { return -target.hp; }; player.line(event.chooser); "step 1"; if (result.bool) { event.chooser.line(result.targets[0]); game.delay(); result.targets[0].die(); } }, }, stone_mafengzhuru1: { trigger: { player: "dieBegin" }, forced: true, filter: function (event) { return event.source && event.source.isMin(); }, content: function () { trigger.source.addSkill("stone_mafengzhuru2"); }, }, stone_mafengzhuru2: { trigger: { global: "dieAfter" }, forced: true, popup: false, unique: true, filter: function (event, player) { return player.hasSkill("stone_mafengzhuru2"); }, content: function () { player.loseHp(); player.removeSkill("stone_mafengzhuru2"); }, }, stone_zhufu: { trigger: { global: "phaseEnd" }, forced: true, unique: true, filter: function (event, player) { if (event.player != player.getLeader()) return false; for (var i = 0; i < game.players.length; i++) { if ( game.players[i].isMin() && game.players[i] != player && game.players[i].side == player.side && game.players[i].hp < game.players[i].maxHp ) { return true; } } return false; }, content: function () { var list = []; for (var i = 0; i < game.players.length; i++) { if ( game.players[i].isMin() && game.players[i] != player && game.players[i].side == player.side && game.players[i].hp < game.players[i].maxHp ) { list.push(game.players[i]); } } if (list.length) { var target = list.randomGet(); target.recover(); game.delay(); player.line(target, "green"); } }, }, _actcount: { mod: { cardEnabled: function (card, player) { if (player.isMin()) { return; } if (_status.currentPhase != player) return; var stoneact = get.info(card).stoneact; if (typeof stoneact != "number") { stoneact = 1; } if (player.getActCount() + stoneact > player.actcount) return false; }, }, trigger: { player: "phaseBegin" }, forced: true, popup: false, priority: 15, filter: function (event, player) { return !player.isMin(); }, content: function () { player.actused = 0; if (player.side) { player.actcount = player.getEnemy().actcount + 1; } else { player.actcount = player.getEnemy().actcount; if (!_status.actcoin) { _status.actcoin = true; player.actused--; } } if (player.actcount > 6) { if (get.config("mana_mode") == "inc") { player.actcount = 6; } else { player.actcount -= 4; } } player.updateActCount(); player.getEnemy().updateActCount("outphase"); }, }, _actcount2: { trigger: { player: "useCard" }, forced: true, popup: false, filter: function (event, player) { return !player.isMin() && !event.noActCount && _status.currentPhase == player; }, content: function () { var stoneact = get.info(trigger.card).stoneact; if (typeof stoneact === "number") { player.actused += stoneact - 1; } player.updateActCount(); }, }, stonesha: { unique: true, mod: { cardname: function (card) { if (lib.card[card.name].type == "equip") return "sha"; }, }, }, stoneshan: { unique: true, mod: { cardname: function (card) { if (lib.card[card.name].type.indexOf("stone") == 0) return "shan"; }, }, }, stonedraw: { trigger: { player: "phaseDrawBegin" }, forced: true, popup: false, content: function () { trigger.num--; }, ai: { effect: { target: function (card) { if (card.name == "bingliang") { return 0.6; } }, }, }, }, _stonerage1: { trigger: { player: "damageEnd" }, forced: true, popup: false, content: function () { if (player.isMin()) { player.changeRage(3 * trigger.num); } else { player.changeRage(6 * trigger.num); } }, }, _stonerage2: { trigger: { player: "dieBegin" }, forced: true, popup: false, content: function () { if (player.isMin()) { player.changeRage(10); } else { player.changeRage(20); } }, }, _stonerage3: { trigger: { player: "phaseAfter" }, forced: true, popup: false, filter: function (event, player) { return !player.isMin() && player.getEnemy().countFellow() > player.countFellow(); }, content: function () { player.changeRage((player.getEnemy().countFellow() - player.countFellow()) * 10); }, }, _stonerage_add: { trigger: { player: "phaseBegin" }, direct: true, priority: 10, filter: function (event, player) { if (!player.canAddFellow()) { return false; } if (player == game.me) { return _status.friendRage >= 100; } else if (player == game.me.getEnemy()) { return _status.enemyRage >= 100; } return false; }, content: function () { "step 0"; var list = []; var list2 = []; for (var i in lib.character) { if (lib.character[i].trashBin.includes("stonelegend_" + player.career)) { list.push(i); } else if (lib.character[i].trashBin.includes("stonelegend")) { list2.push(i); } } var dialog = ui.create.dialog( "hidden", "召唤一名传说随从", '
消耗100怒气值和4点行动值
', [list.concat(list2), "character"] ); var heilong = false; var dc = player.getEnemy().countFellow() - player.countFellow(); if (dc > 2) { heilong = true; } else if (dc == 2) { if (player.getEnemy().countFellow() >= 3) { heilong = Math.random() < 0.5; } else if (player.actcount - player.getActCount() <= 0) { heilong = true; } else { dc = 0; for (var i = 0; i < game.players.length; i++) { if (game.players[i].isMin() && game.players[i].side != player.side) { dc += game.players[i].hp; } } if (dc > 5) { heilong = true; } else { heilong = Math.random() < 0.3; } } } var honglong = false; if (!heilong) { var num = 0; for (var i = 0; i < game.players.length; i++) { if (game.players[i] == player) { num += 1.5 * (game.players[i].maxHp - game.players[i].hp); } else if (game.players[i].side == player.side) { num += game.players[i].maxHp - game.players[i].hp; } } if (num > 6) { honglong = true; } else if (player.maxHp - player.hp >= 3 && player.hp <= 2) { honglong = true; } } player.chooseButton(dialog).ai = function (button) { if (button.link == "stone_siwangzhiyi") { if (heilong) return 3; return 0; } if (button.link == "stone_alaikesita") { if (honglong) return 2; return 0; } return Math.random(); }; "step 1"; if (result.bool) { player.$skill(get.translation(result.links[0]), "legend", "metal"); game.delay(2); event.addname = result.links[0]; player.changeRage(-100); player.actused += 4; player.updateActCount(); } else { event.finish(); } "step 2"; if (event.addname) { if (event.addname == "stone_jialakesi") { if (player.name == "stone_jialakesix") { player.hp = player.maxHp; player.update(); player.actused -= 4; player.updateActCount(); player.storage.stone_lianyu++; } else { if (player.name2) { player.storage.stone_lianyu = 1; } else { player.storage.stone_lianyu = 0; } player.init("stone_jialakesix"); game.addVideo("reinit2", player, "stone_jialakesix"); } player.syncStorage("stone_lianyu"); var card = game.createCard("stone_jialakesi_stonecharacter"); card.node.info.remove(); card.node.addinfo.remove(); player.$give(card, player); } else { player.addFellowAuto(event.addname); } } }, }, }, translate: { shaman: "萨满", mage: "法师", priest: "牧师", warrior: "战士", warlock: "术士", knight: "死亡骑士", rogue: "潜行者", paladin: "圣骑士", hunter: "猎人", druid: "德鲁伊", stone_siwangzhiyi: "死亡之翼", stone_alaikesita: "阿莱克萨", stone_yisela: "伊瑟拉", stone_nuoziduomu: "诺兹多姆", stone_maligousi: "玛里苟斯", stone_aolajier: "奥拉基尔", stone_andongni: "安东尼", stone_jialakesi: "加拉克斯", stone_jialakesix: "加拉克斯", stone_kelushi: "克鲁什", stone_geluomashi: "格罗玛什", stone_aidewen: "艾德温", stone_sainaliusi: "塞纳留斯", stone_fuding: "弗丁", stone_weilun: "维纶", stone_fushi: "缚誓", stone_fushi_info: "你出场时,为所有友方角色回复所有体力值。", stone_mieshi: "灭世", stone_mieshi_info: "你出场时,对所有其他随从造成2点伤害,然后弃置己方主将的所有手牌。", stone_shixu: "时序", stone_shixu_info: "你出场的回合内,己方主将获得4点行动值。", stone_chenshui: "沉睡", stone_chenshui_info: "在你的结束阶段,令己方主将获得一张梦境牌。", stone_mowang: "魔网", stone_mowang_info: "己方法术对主将伤害+2,对随从伤害+4。", stone_zhiyin: "指引", stone_zhiyin_info: "每当己方主将使用一张法术牌,将一张火球术置于其手牌。", stone_bianshen: "变身", stone_bianshen_info: "你出场时,若己方主将职业为术士,则代之成为新的主将;若己变身,则改为令你召唤的地狱火的初始手牌数和体力值+1。", stone_lianyu: "炼狱", stone_lianyu_info: "你的职业技能改为召唤一个地狱火。", stone_lianji: "连击", stone_lianji_info: "每当己方主将召唤一个随从,便增加1点体力和体力上限并摸一张牌。", stone_shenyu: "神谕", stone_shenyu_info: "你出场时,己方主将可以选择一项:召唤两个嘲讽树人,或令所有其他随从增加1点体力和体力上限并摸两张牌。", stone_fuchou: "复仇", stone_fuchou_info: "你死亡后,视为己方主将使用了一张复仇之怒。", stone_shenyou: "神佑", stone_shenyou_info: "己方主将的职业技能和法术的治疗效果翻倍。", stone_jinu: "激怒", stone_jinu_info: "摸牌阶段,若你己受伤,则额外摸两张牌。", spell_shenshengxinxing: "神圣新星", spell_shenshengxinxing_info: "对所有敌方角色造成1点伤害,令所有友方角色回复1点体力。", spell_shengguangzhadan: "圣光炸弹", spell_shengguangzhadan_info: "对所有随从造成等同于其手牌数的伤害。", spell_maizang: "埋葬", spell_maizang_info: "令一名敌方随从死亡(不触发死亡技能),并将一张与该随从同名的随从洗入你的牌库。", spell_xinlingshijie: "心灵视界", spell_xinlingshijie_info: "将一张敌方主将手牌的复制置于你的手牌。", spell_naluzhiguang: "纳鲁之光", spell_naluzhiguang_info: "恢复1点体力值,若目标仍处于受伤状态,则召唤一名圣光护卫。", spell_zhiliaozhihuan: "治疗之环", spell_zhiliaozhihuan_info: "令所有随从回复3点体力。", spell_zhenyanshu: "真言术", spell_zhenyanshu_info: "令一名随从增加1点体力和体力上限;从牌库中获得一张牌。", spell_enzeshu: "恩泽术", spell_enzeshu_info: "令一名随从增加3点体力和体力上限。", spell_anyingxingtai: "暗影形态", priest_anyingxingtai: "暗影形态", spell_anyingxingtai_info: "你的职业技能改为造成1点伤害,若已进入暗影形态,则改为造成2点伤害。", spell_kuaisuzhiliao: "快速治疗", spell_kuaisuzhiliao_info: "回复2点体力。", spell_xinlinghanbao: "心灵撼爆", spell_xinlinghanbao_info: "对敌方主将造成2点伤害。", spell_kongxinshu: "控心术", spell_kongxinshu_info: "复制敌方牌库中的一张随从,将其置入战场。", stone_shengguanghuwei: "圣光护卫", priest_shengguang: "圣光", priest_shengguang_info: "每当一名随从获得治疗,摸一张牌。", spell_nuxi: "怒袭", spell_nuxi_info: "造成1点伤害,获得2点护甲。", spell_dunpaimengji: "盾牌猛击", spell_dunpaimengji_info: "对一名随从造成等同于你护甲值的伤害。", spell_zhansha: "斩杀", spell_zhansha_info: "令一名已受伤的敌方随从死亡。", spell_nuhuozhongshao: "怒火中烧", spell_nuhuozhongshao_info: "对一名随从造成1点伤害,然后令其摸两张牌。", spell_xuanfengzhan: "旋风斩", spell_xuanfengzhan_info: "对所有随从造成1点伤害。", spell_juemingluandou: "绝命乱斗", spell_juemingluandou_info: "随机保留一名随从,然后令所有其他随从死亡。", spell_zhongnian: "重碾", spell_zhongnian_info: "造成X点伤害,X为已受伤的友方角色数且不超过3。", spell_zhandounuhuo: "战斗怒火", spell_zhandounuhuo_info: "从牌库中获得X张牌,X为已受伤的友方角色数。", spell_chongfeng: "冲锋", spell_chongfeng_info: "令一名武将牌背面朝上的友方随从摸三张牌,然后将武将牌翻至正面。", spell_fuchoudaji: "复仇打击", spell_fuchoudaji_info: "对所有随从造成1点伤害,若你的体力值不大于2,改为造成3点伤害。", spell_kuangbao: "狂暴", spell_kuangbao_info: "令一名已受伤的友方随从摸四张牌。", spell_yingyongdaji: "英勇打击", spell_yingyongdaji_info: "令一名敌方角色对你造成2点伤害,然后对其造成2点伤害。", spell_dubiao: "毒镖", spell_dubiao_info: "对一名随机敌方角色造成1点伤害。", spell_qiangfengsheji: "强风射击", spell_qiangfengsheji_info: "对两名敌方随从各造成1点伤害,并弃置其两张手牌。", spell_tanxianmao: "探险帽", hunter_tanxianmao: "探险帽", hunter_tanxianmao_info: "你死亡时,将一张探险帽置入主将的手牌。", spell_tanxianmao_info: "令一名友方随从增加1点体力和体力上限并摸一张牌,当该随从死亡时,将一张探险帽置入你的手牌。", spell_shalumingling: "杀戮命令", spell_shalumingling_info: "造成1点伤害,如果你控制任何野兽,则改为造成2点伤害。", spell_zhuizongshu: "追踪术", spell_zhuizongshu_info: "从牌库中随机选择三张牌,获得其中的一张。", spell_tianjiangzhuqun: "天降蛛群", spell_tianjiangzhuqun_info: "召唤三只结网蛛。", spell_lierenyinji: "猎人印记", spell_lierenyinji_info: "将一名随从的体力上限降至1。", spell_kuaisusheji: "快速射击", spell_kuaisusheji_info: "造成1点伤害,摸一张牌。", spell_guanmenfanggou: "关门放狗", spell_guanmenfanggou_info: "每有一名敌方随从,便召唤一只猎狗。", spell_zhaohuanchongwu: "动物伙伴", spell_zhaohuanchongwu_info: "随机召唤一只野兽。", spell_zidanshangtang: "子弹上膛", spell_zidanshangtang_info: "随机获得一张猎人职业法术牌,并获得技能〖上膛〗直到回合结束。", spell_duochongsheji: "多重射击", spell_duochongsheji_info: "对两名随机敌方随从各造成2点伤害。", stone_liegou: "猎狗", hunter_zidanshangtang: "上膛", hunter_zidanshangtang_bg: "膛", hunter_zidanshangtang_info: "每当你使用一张法术牌,便随机获得一张猎人职业法术牌。", spell_zuzhou: "诅咒", spell_zuzhou_info: "将目标随从翻面,摸一张牌。", spell_xishengqiyue: "牺牲契约", spell_xishengqiyue_info: "令双方各一名随从立即死亡。", spell_xiaoguibaopo: "小鬼爆破", spell_xiaoguibaopo_info: "对一名随从造成1~3点伤害,每造成1点伤害,便召唤一只小鬼。", spell_anyinglieyan: "暗影裂焰", spell_anyinglieyan_info: "杀死一名友方随从,并对所有敌方随从造成等于其体力值的伤害。", spell_liliangdaijia: "力量代价", spell_liliangdaijia_info: "令一名友方随从摸四张牌,将体力值变为5,并在其下个回合结束后死亡。", spell_emozhinu: "恶魔之怒", spell_emozhinu_info: "对所有随从造成2点伤害。", spell_emozhixin: "恶魔之心", spell_emozhixin_info: "对一名敌方随从造成4点伤害,或令一名友方随从摸四张牌。", spell_ansezhadan: "暗色炸弹", spell_ansezhadan_info: "造成2点伤害。", spell_fushishu: "腐蚀术", warlock_fushishu: "腐蚀", warlock_fushishu_info: "下个回合结束后死亡。", spell_fushishu_info: "令一名敌方随从于其下个回合结束后死亡。", spell_heianqiyue: "黑暗契约", spell_heianqiyue_info: "随机令两名敌方随从死亡,随机弃置两张手牌。", spell_linghunhongxi: "灵魂虹吸", spell_linghunhongxi_info: "令一名随从死亡,回复1点体力。", spell_siwangchanrao: "死亡缠绕", spell_siwangchanrao_info: "对一名随从造成1点伤害;若该随从死亡,从牌库中获得一张牌。", spell_wuyashenxiang: "乌鸦神像", spell_wuyashenxiang_info: "从三张法术牌或随从牌中选择一张加入手牌。", spell_huotigenxu: "活体根须", spell_huotigenxu_info: "造成1点伤害,或召唤两个树苗。", spell_hengsao: "横扫", spell_hengsao_info: "对一名敌方角色造成2点伤害,然后对其他敌方角色造成1点伤害。", spell_yexingchengzhang: "野性成长", spell_yexingchengzhang_info: "下个出牌阶段开始时获得三点额外行动值。", spell_ziranzhili: "自然之力", spell_ziranzhili_info: "召唤三个自爆树人。", spell_yemanpaoxiao: "野蛮咆哮", spell_yemanpaoxiao_bg: "咆", spell_yemanpaoxiao2: "咆哮", spell_yemanpaoxiao_info: "所有友方角色造成的伤害+1,直到你的下个回合开始。", spell_conglinzhihun: "丛林之魂", druid_conglinzhihun: "树魂", druid_conglinzhihun_info: "你死亡后召唤一个树人。", spell_conglinzhihun_info: "令所有友方随从获得技能树魂(你死亡后召唤一个树人)。", spell_ziyang: "滋养", spell_ziyang_info: "下个出牌开始阶段获得4点额外行动值,或从牌库中获得三张牌。", spell_fugen: "腐根", spell_fugen_info: "令一名随从死亡,将一张随机随从置入对手的手牌。", spell_xingchenzhuiluo: "星辰坠落", spell_xingchenzhuiluo_info: "对一名敌方随从造成5点伤害,或对所有敌方随从造成2点伤害。", spell_fennu: "愤怒", spell_fennu_info: "对一名随从造成2点伤害,或造成1点伤害并从牌库中获得一张牌。", spell_heiandiyu: "黑暗低语", spell_heiandiyu_info: "召唤若干个小精灵直到你的随从数达到4;或令一名随从增加1点体力和体力上限并摸三张牌。", druid_yexingchengzhang: "成长", druid_yexingchengzhang_bg: "长", druid_yexingchengzhang_info: "下个出牌阶段开始时获得三点额外行动值。", druid_ziyang: "滋养", druid_ziyang_bg: "养", druid_ziyang_info: "下个出牌阶段开始时获得四点额外行动值。", stone_shumiao: "树苗", stone_shuren: "自爆树人", stone_shurenx: "树人", stone_shurenxx: "嘲讽树人", stone_zibao: "自爆", stone_zibao_info: "结合结束后立即死亡。", spell_cigu: "刺骨", spell_cigu_info: "造成1点伤害,你可以弃置一张装备区内的牌令伤害+1。", spell_jianrenluanwu: "剑刃乱舞", spell_jianrenluanwu_info: "弃置你的武器牌,并对所有敌方角色造成1点伤害。", spell_daoshan: "刀扇", spell_daoshan_info: "对所有敌方随从造成1点伤害,从牌库中获得一张牌。", spell_sijidaifa: "伺机待发", spell_sijidaifa_info: "你使用下一张法术牌时获得X点行动值,X为该法术的行动值消耗且不超过3。", spell_cisha: "刺杀", spell_cisha_info: "杀死一名随从。", spell_modaoyou: "磨刀油", spell_modaoyou_info: "令你下一次剑刃乱舞造成的伤害+1,并与一名随机友方随从各摸两张牌。", spell_mengun: "闷棍", spell_mengun_info: "令一名敌方随从死亡(不触发死亡技能),将一张该随从的复制置入对手的手牌。", spell_anzhongpohuai: "暗中破坏", spell_anzhongpohuai_info: "随机杀死一名敌方随从,随机弃置敌方的一张装备牌。", spell_beici: "背刺", spell_beici_info: "令一名未受伤的随从失去1点体力。", spell_weijisifu: "危机四伏", spell_zhumo: "蛛魔", stone_zhumo: "蛛魔", spell_zhumo_info: "每当该牌被弃置,为你的对手召唤一只蛛魔。", spell_weijisifu_info: "将三张蛛魔牌洗入对手的牌库;每当一名角色弃置蛛魔牌,为其对手召唤一只蛛魔。", spell_piaoqie: "剽窃", spell_piaoqie_info: "复制两张对手牌库中的牌加入你的手牌。", spell_jipao: "疾跑", spell_jipao_info: "从牌库中获得四张牌。", spell_fengxian: "奉献", spell_fengxian_info: "对所有敌方角色造成1点伤害。", spell_fuchouzhinu: "复仇之怒", spell_fuchouzhinu_info: "造成5点伤害,随机分配到所有敌方随从上。", spell_shengliaoshu: "圣疗术", spell_shengliaoshu_info: "恢复2点体力,摸两张牌。", spell_fennuzhichui: "愤怒之锤", spell_fennuzhichui_info: "造成1点伤害,从牌库中获得一张牌。", spell_zuozhandongyuan: "作战动员", spell_zuozhandongyuan_info: "召唤两个新兵,随机装备一把武器。", spell_liliangzhufu: "力量祝福", spell_liliangzhufu_info: "令一名随从摸两张牌。", spell_jinyingduijue: "精英对决", spell_jinyingduijue_info: "双方各保留体力值最高的一名随从,然后令其他随从死亡。", spell_shenpan: "审判", spell_shenpan_info: "若你的对手随从数不少于你,则随机令一名敌方随从死亡。", spell_shenshengfennu: "神圣愤怒", spell_shenshengfennu_info: "从牌库中获得一张牌,并造成等同于其行动值消耗的伤害。", spell_yongshizhufu: "勇士祝福", spell_yongshizhufu_info: "令一名随从的手牌数翻倍。", spell_zhengqianghaosheng: "争强好胜", paladin_zhengqianghaosheng: "争强好胜", paladin_zhengqianghaosheng_info: "在你的下一准备阶段,令所有友方随从增加1点体力和体力上限并摸一张牌。", spell_zhengqianghaosheng_info: "在你的下一准备阶段,令所有友方随从增加1点体力和体力上限并摸一张牌。", spell_zhihuizhufu: "智慧祝福", paladin_zhihuizhufu: "智慧祝福", spell_zhihuizhufu_info: "选择一名随从,在其每个准备阶段,你从牌库中获得一张牌。", spell_fengnu: "风怒", shaman_fengnu: "风怒", shaman_fengnu_info: "回合结束后,你获得一个额外回合。", spell_fengnu_info: "令一名随从获得技能风怒(回合结束后,你获得一个额外回合)。", spell_rongyanbaolie: "熔岩爆裂", spell_rongyanbaolie_info: "造成3点火焰伤害,失去1点体力。", spell_shihuawuqi: "石化武器", shaman_shihuawuqi: "充能", shaman_shihuawuqi_info: "准备阶段,你摸三张牌。", spell_shihuawuqi_info: "令一名友方随从获得技能充能(准备阶段,你摸三张牌),直到你的下一回合开始。", spell_xianzuzhaohuan: "先祖召唤", spell_xianzuzhaohuan_info: "双方各将手牌中的一张随机随从牌置入战场。", spell_xianzuzhihun: "先祖之魂", shaman_xianzuzhihun: "转生", shaman_xianzuzhihun_info: "你死亡后,召唤一个自身的复制。", spell_xianzuzhihun_info: "令一名随从获得技能转生(你死亡后,召唤一个自身的复制)。", spell_xianzuzhishi: "先祖知识", shaman_xianzuzhishi: "先祖知识", shaman_xianzuzhishi_info: "本回合手牌上限-1。", spell_xianzuzhishi_info: "从牌库中获得两张牌,本回合手牌上限-1(多次使用不叠加)。", spell_lianhuanbaolie: "连环爆裂", spell_lianhuanbaolie_info: "造成1~2点雷电伤害。", spell_shandianfengbao: "闪电风暴", spell_shandianfengbao_info: "对所有敌方随从造成1~2点伤害。", spell_yaoshu: "妖术", spell_yaoshu_info: "将一个随从变成一只青蛙。", spell_yexinglanghun: "野性狼魂", spell_yexinglanghun_info: "召唤两个幽灵狼。", spell_shixue: "嗜血", spell_shixue_info: "所有友方随从摸两张牌。", spell_chazhuangshandian: "叉状闪电", spell_chazhuangshandian_info: "对两个随机敌方随从各造成1点雷电伤害。", stone_qingwa: "青蛙", stone_youlinglang: "幽灵狼", stone_jingxiang: "镜像", stone_jingxiang_info: "锁定技,你跳过摸牌阶段。", shaman_qingwa: "青蛙", shaman_qingwa_info: "锁定技,你跳过摸牌阶段。", stone_xiaojingling: "小精灵", spell_laojiuhuoba: "老旧火把", spell_laojiuhuoba_info: "造成1点伤害,将一张炽热火把置入你的牌库。", spell_chirehuoba: "炽热火把", spell_chirehuoba_info: "造成2点火焰伤害。", spell_canying: "残影", spell_canying_info: "复制你的所有随从,并将其置入你的手牌。", spell_yanbaoshu: "炎爆术", spell_yanbaoshu_info: "造成4点火焰伤害(若目标为主将,伤害不能超过目标的当前体力值)。", spell_jingxiang: "镜像", spell_jingxiang_info: "召唤两个具有嘲讽且摸牌阶段不摸牌的随从。", spell_aoshufeidan: "奥术飞弹", spell_aoshufeidan_info: "造成3点伤害,随从分配到所有敌方随从上。", spell_hanbingpingzhang: "寒冰屏障", mage_hanbingpingzhang: "寒冰屏障", mage_hanbingpingzhang_info: "体力值不能降到2以内。", spell_hanbingpingzhang_info: "令一名角色的体力值不能降到2以内,直到你的下一回合开始。", spell_hanbingjian: "寒冰箭", spell_hanbingjian_info: "对一个随从造成2点伤害,然后将其翻面。", spell_lieyanfengbao: "烈焰风暴", spell_lieyanfengbao_info: "对所有敌方随从造成2点伤害。", spell_baofengxue: "暴风雪", spell_baofengxue_info: "对所有敌方随从造成1点伤害,然后将其翻面。", spell_aoshuzhihui: "奥术智慧", spell_aoshuzhihui_info: "从牌库中获得两张牌。", spell_bianxingshu: "变形术", spell_bianxingshu_info: "将一个随从变成一只绵羊。", spell_huoqiushu: "火球术", spell_huoqiushu_info: "造成3点火焰伤害(若目标为主将,伤害不能超过目标的当前体力值)。", stone_mianyang: "绵羊", mage_mianyang: "绵羊", mage_mianyang_info: "锁定技,你不能使用杀。", stone_beijunmushi: "北郡牧师", stone_guangyaozhizi: "光耀之子", stone_longmianjiaoguan: "龙眠教官", stone_linghunjisi: "灵魂祭司", stone_guanliyuan: "管理员", stone_heianjiaotu: "黑暗教徒", stone_shengdianzhishi: "圣殿执事", stone_suoxiaojishi: "缩小技师", stone_anyingzisi: "暗影子嗣", stone_guangmingquan: "光明泉", stone_muguangchulong: "暮光雏龙", stone_shenshengyongshi: "神圣勇士", priest_puzhao: "普照", priest_puzhao_info: "你出场时,己方主将可令一名其他友方随从增加2点体力和体力上限。", priest_suoxiao: "缩小", priest_suoxiao_info: "你出场时,己方主将可令一名其他随从减少2点体力上限(不能小于1)。", priest_shengshui: "圣水", priest_shengshui_info: "你跳过摸牌阶段;在你的准备阶段,令一名随机友方角色回复2点体力。", priest_muguang: "暮光", priest_muguang_info: "你出场时,若主将手牌中有随从牌,则增加1点体力和体力上限。", priest_shixin: "蚀心", priest_shixin_info: "每当己方主将使用一次职业技能,对双方主将各造成1点伤害。", priest_shengliao: "圣疗", priest_shengliao_info: "每当一名随从回复体力,己方主将从牌库中获得一张牌。", priest_guangyao: "光耀", priest_guangyao_info: "每当你的体力值发生改变,摸一张牌。", priest_xundao: "训导", priest_xundao_info: "你出场时,若己方主将手牌中有随从牌,则摸一张牌并获得嘲讽。", priest_hunwu: "魂舞", priest_hunwu_info: "己方主将的职业技能及法术的治疗效果改为令目标失去等量体力。", priest_faxian: "发现", priest_faxian_info: "你出场时,己方主将从三张随机随从牌中选择一张加入手牌。", priest_zhufu: "献身", priest_zhufu_info: "你死亡时,令一名随机友方随从增加1点体力和体力上限。", stone_daomufeizei: "盗墓匪贼", stone_haidao: "海盗", stone_haidaotoumu: "海盗头目", stone_cike: "刺客", stone_tegong: "特工", stone_qiezei: "窃贼", stone_heitieairen: "黑铁矮人", stone_duyanhaidao: "独眼海盗", stone_gangtiewushi: "刚铁武师", stone_lifaji: "理发机", stone_shihualong: "石化龙", stone_xiushuihaidao: "锈水海盗", stone_zousishangfan: "走私商贩", rogue_duxing: "独行", rogue_duxing_info: "每当敌方主将召唤一名随从,便获得潜行。", rogue_shoudao: "授道", rogue_shoudao_info: "在己方主将的结束阶段,令一名随机友方随从增加1点体力和体力上限并摸一张牌。", rogue_lifa: "理发", rogue_lifa_info: "为己方主将装备一把武器,若已有武器,改为对敌方主将造成1点伤害。", rogue_fusheng: "复生", rogue_fusheng_info: "你出场时,体力值和体力上限变为X,X为场上体力最高的随从的体力值。", rogue_jielue: "劫掠", rogue_jielue_info: "每当己方主将装备一把武器牌,摸两张牌。", rogue_jiaoyi: "交易", rogue_jiaoyi_info: "你出场时,己方主将可以弃置一张装备牌令你摸三张牌。", rogue_touqie: "偷窃", rogue_touqie_info: "每当你造成一次伤害,己方主将从牌库中获得一张牌。", rogue_xunbao: "寻宝", rogue_xunbao_info: "你死亡时,将一张伺机行发置于己方主将的手牌。", rogue_cisha: "刺杀", rogue_cisha_info: "每当你对一名随从造成伤害,受伤害随从立即死亡。", rogue_touxi: "偷袭", rogue_touxi_info: "你出场时,己方主将可弃置一张装备区内的牌并对一名敌方角色造成1点伤害。", rogue_qiancang: "潜藏", rogue_qiancang_info: "你出场时,对所有未受伤害的敌方随从造成1点伤害。", rogue_zhaomu: "结伙", rogue_zhaomu_info: "你出场时,召唤一个海盗。", stone_zhihuiguan: "指挥官", stone_jiangong: "监工", stone_yuanhou: "猿猴", stone_chidunshinv: "持盾侍女", stone_zhujiashi: "铸甲师", stone_kuangzhanshi: "狂战士", stone_heiyaoyaoshou: "黑曜妖兽", stone_honglongyongshi: "红龙勇士", stone_peilianshi: "陪练师", stone_jingyingweishi: "精英卫士", stone_shengjiachong: "圣甲虫", stone_mengmaren: "猛犸人", stone_zhifuzhe: "掷斧者", warrior_heiyao: "黑曜", warrior_heiyao_info: "在己方主将的结束阶段,召唤一只圣甲虫。", warrior_peilian: "陪练", warrior_peilian_info: "你出场时,己方主将可令一名其他随从获得嘲讽。", warrior_fenyong: "奋勇", warrior_fenyong_info: "你出场时,若己方主将手牌中有随从牌,则获得冲锋。", warrior_chuanci: "穿刺", warrior_chuanci_info: "每当你对一名敌方随从造成伤害,对另一名随机敌方随从造成等量的伤害。", warrior_zhifu: "掷斧", warrior_zhifu_info: "每当你受到一次伤害,对敌方主将造成1点伤害。", warrior_tongling: "统领", warrior_tongling_info: "每当你召唤一个初始手牌数不大于2的随从,令其获得冲锋。", warrior_baoluan: "暴乱", warrior_baoluan_info: "每当一名随从受到一次伤害,摸一张牌。", warrior_jiangong: "监工", warrior_jiangong_info: "你出场时,己方主将可对一名随从造成1点伤害,然后令该随从摸两张牌。", warrior_zhujia: "铸甲", warrior_zhujia_info: "每当你受到一次伤害,己方主将获得1点护甲。", warrior_tidun: "提盾", warrior_tidun_info: "你出场时,己方主将获得2点护甲。", stone_lieyanxiaogui: "烈焰小鬼", stone_xiaoguishouling: "小鬼首领", stone_kongjuzhanma: "恐惧战马", stone_morishouwei: "末日守卫", stone_xukongxingzhe: "虚空行者", stone_diyuhuo: "地狱火", stone_diyuhuox: "地狱火", stone_xiaogui: "小鬼", stone_heishitanfan: "黑市摊贩", stone_zhaohuanzhe: "召唤者", stone_meimo: "魅魔", stone_tongkunvwang: "痛苦女王", stone_xukongkongmo: "虚空恐魔", stone_fukongmoyan: "浮空魔眼", warlock_anyu: "暗语", warlock_anyu_info: "你出场时,己方主将从三张随机的行动值消耗为1的牌中选择一张加入手牌。", warlock_zhaohuan: "召唤", warlock_zhaohuan_info: "你死亡时,将手牌中的一张随机随从牌置入战场。", warlock_huanmeng: "幻梦", warlock_huanmeng_info: "你出场时,己方主将随机弃置一张手牌。", warlock_tongku: "痛苦", warlock_tongku_info: "每当你造成一次伤害,令己方主将回复1点体力。", warlock_tunshi: "吞噬", warlock_tunshi_info: "你出场时,己方主将须令一名其他友方随从死亡,然后你获得其全部的手牌和体力值。", warlock_shijie: "视界", warlock_shijie_info: "每当己方主将受到一次伤害,你增加1点体力和体力上限并摸一张牌。", warlock_nonghuo: "弄火", warlock_nonghuo_info: "你出场时,对己方主将造成1点火焰伤害。", warlock_zhaogui: "召鬼", warlock_zhaogui_info: "每当你受到一次伤害,召唤一个小鬼。", warlock_yongsheng: "永生", warlock_yongsheng_info: "你死亡后,召唤一匹恐惧战马。", warlock_yuhuo: "狱火", warlock_yuhuo_info: "你出场时,对所有其他随从造成1点伤害。", warlock_zaihuo: "灾祸", warlock_zaihuo_info: "你出场时,随机弃置主将的两张手牌。", stone_hudunren: "护盾人", stone_junxuguan: "军需官", stone_yurenqishi: "鱼人骑士", stone_chidunweishi: "持盾卫士", stone_liewangshouwei: "列王守卫", stone_longwangpeiou: "龙王配偶", stone_baoweizhe: "保卫者", stone_guiqishi: "龟骑士", stone_shenmiqishou: "神秘骑手", stone_shixiangweishi: "石像卫士", stone_xuefanzhanshi: "血帆战士", stone_xunmashi: "训马师", paladin_baowei: "保卫", paladin_baowei_info: "你出场时,己方主将可令一名其他随从获得1点护甲。", paladin_tuxi: "吐息", paladin_tuxi_info: "你出场时,己方主将进行一次判定,若为红色,则回复1点体力。", paladin_miying: "秘影", paladin_miying_info: "你出场时,依次将牌堆中的所有不重名的判定牌置入敌方主将的判定区。", paladin_huashi: "化石", paladin_huashi_info: "你出场时,己方主将可将一名其他随从的体力值及体力上限变为2。", paladin_jinghua: "净化", paladin_jinghua_info: "你出场时,对所有手牌数大于1的随从造成2点伤害。", paladin_moma: "秣马", paladin_moma2: "秣马", paladin_moma_info: "所有友方新兵摸牌阶段摸牌数+1。", paladin_zhaohuan: "召唤", paladin_zhaohuan2: "召唤", paladin_zhaohuan_info: "你出场后,你的主将在使用下一张随从牌时获得两点行动值。", paladin_shouwei: "守卫", paladin_shouwei_info: "你出场时,你的主将回复2点体力值。", paladin_chidun: "持盾", paladin_chidun_info: "你出场时,己方主将可以弃置对方一名随从的所有牌。", paladin_buji: "补给", paladin_buji_info: "你出场时,所有友方新兵增加1点体力和体力上限并摸两张牌。", paladin_hudun: "护盾", paladin_hudun_info: "你出场时,获得1点护甲值。", paladin_zhaochao: "招潮", paladin_zhaochao_info: "每当你的主将使用一次英雄技能,便摸两张牌。", stone_shifazhe: "嗜法者", stone_wushixuetu: "巫师学徒", stone_shuiyuansu: "水元素", stone_falifulong: "法力浮龙", stone_yingxiongzhihun: "英雄之魂", stone_huoyao: "火妖", stone_aoshushi: "奥术师", stone_faqishi: "法骑士", stone_fuhuokaijia: "复活铠甲", stone_kaodalalong: "考达拉龙", stone_yanshushi: "炎术士", stone_xulingwushi: "虚灵巫师", mage_aoshu: "奥术", mage_aoshu_info: "你出场时,将一张奥术智慧置入主将的手牌。", mage_jili: "激励", mage_jili_info: "每当主将使用一次职业技能,摸一张牌。", mage_gushou: "固守", mage_gushou_info: "每当己方主将受到多于1伤害时,防止其余伤害。", mage_yufa: "驭法", mage_yufa_info: "每当己方主将使用一次职业技能,令其获得1点行动值。", mage_yanshu: "炎术", mage_yanshu_info: "你出场时,造成X点火焰伤害,随机分配到敌方随从上,X为己方主将装备区内装备牌的数量。", mage_pingxu: "冯虚", mage_pingxu_info: "你出场时,己方主将从三张随机法术牌中选择一张加入手牌。", mage_shifa: "嗜法", mage_shifa_info: "你出场时,将一张随机法术牌置入双方主将的手牌。", mage_minghuo: "冥火", mage_minghuo_info: "你的主将的职业技能造成的伤害+1。", mage_tunfa: "吞法", mage_tunfa_info: "每当己方主将使用一张法术牌,摸一张牌。", mage_lieyan: "烈焰", mage_lieyan_info: "每当己方主将使用一张法术牌,对一名随机敌方角色造成1点火焰伤害。", mage_zhufa: "助法", mage_zhufa_info: "每当己方主将使用一张法术牌,令其获得1点行动值。", mage_bingdong: "冰冻", mage_bingdong_info: "每当你对一个随从造成伤害,该随从将武将牌翻至背面。", stone_caoyuanshi: "草原狮", stone_leiouke: "雷欧克", stone_misha: "米莎", stone_huofu: "霍弗", stone_jiewangzhu: "结网蛛", stone_xunshoushi: "驯兽师", stone_senlinlang: "森林狼", stone_tujiu: "秃鹫", stone_muyangren: "牧羊人", stone_jujishou: "狙击手", stone_damoshatuo: "大漠沙驼", stone_huangjialeixiang: "皇家雷象", hunter_jiewang: "结网", hunter_jiewang_info: "你死亡时,己方主将获得一张随机野兽牌。", hunter_xunshou: "驯兽", hunter_xunshou_info: "你出场时,己方主将可选择一名其他友方随从令其增加1点体力和体力上限,摸两张牌并获得嘲讽。", hunter_nuhou: "怒吼", hunter_nuhou_info: "当你死亡时,对所有敌方角色造成1点伤害。", hunter_zhanhuo: "战火", hunter_zhanhuo2: "战火", hunter_zhanhuo_info: "其他友方随从摸牌阶段的摸牌数+1。", hunter_qunxi: "群袭", hunter_qunxi_info: "你出场时,所有友方随从摸一张牌。", hunter_mishi: "觅食", hunter_mishi_info: "每当己方主将召唤一个随从,摸一张牌。", hunter_dusha: "渡沙", hunter_dusha_info: "你出场时,令双方主将各随机使用一张牌库中的1费随从牌(不计入行动值消耗)。", hunter_chuanlin: "穿林", hunter_chuanlin_info: "你出场时,己方主将展示牌库中的一张随机随从牌并获得之。", hunter_muyang: "牧羊", hunter_muyang_info: "你出场时,随机召唤一个行动值消耗为X的随从,X为其他友方随从数。", hunter_juji: "狙击", hunter_juji_info: "你的职业技能可以指定随从为目标。", stone_baoqishi: "豹骑士", stone_conglinshouwei: "从林守卫", stone_baohuzhishu: "保护之树", stone_kuangyedoushi: "狂野斗士", stone_liebao: "猎豹", stone_zongxiong: "棕熊", stone_renyaqishi: "刃牙骑士", stone_conglinxiaoshou: "丛林枭兽", stone_huangyeqishi: "荒野骑士", stone_xunmenglong: "迅猛龙", stone_lindishuyao: "林地树妖", stone_huoshanxiemu: "火山邪木", druid_renya: "刃牙", druid_renya_info: "你出场时,己方主将可以选择一项:令你摸一张牌并将武将牌翻至正面,或令你增加1点体力上限并获得技能潜行。", druid_yuehuo: "月火", druid_yuehuo_info: "所有锦囊牌造成的伤害+1。", druid_qicheng: "骑乘", druid_qicheng_info: "你死亡时,随机召唤一个行动消耗为1的随从。", druid_chicheng: "驰骋", druid_chicheng_info: "你出场时,己方主将获得X点行动值,X为其他友方随从数。", druid_yeyou: "夜游", druid_yeyou_info: "双方主将各从牌库中获得一张牌。", druid_juhuo: "举火", druid_juhuo_info: "己方主将回合内,每有一名随从死亡,令己方主将获得1点行动值。", stone_chongfeng: "冲锋", stone_chongfeng_info: "你出场时,立即将武将牌翻至正面。", druid_nuhuo: "怒火", druid_nuhuo_info: "每当己方主将使用一次职业技能,便对一名随机敌人造成1点伤害。", druid_chengzhang: "成长", druid_chengzhang2: "成长", druid_chengzhang_info: "你出场时,己方主将获得1点行动值;你死亡时,己方主将需弃置一张手牌。", druid_huwei: "护卫", druid_huwei_info: "你出场时,己方主将可以选择一项:对一名随从造成1点伤害,或弃置一名随从的所有牌并将其体力上限改为2。", stone_fachao: "法潮图腾", stone_tutengyongshi: "图腾勇士", stone_huoshe: "火舌图腾", stone_huoyuansu: "火元素", stone_tuyuansu: "土元素", stone_wujiyuansu: "无羁元素", stone_xuejuren: "穴居人", stone_huoli: "活力图腾", stone_tutengshi: "图腾师", stone_shachuisaman: "砂槌萨满", stone_huoyanweishi: "火焰卫士", stone_wanshiyuansu: "顽石元素", stone_shalinxingzhe: "砂鳞行者", shaman_anhun: "暗魂", shaman_anhun_info: "每当一名友方随从死亡,令主将从牌库中获得一张牌。", shaman_zoushi: "走石", shaman_zoushi_info: "每当己方主将使用一张随从牌,对一名随机敌方角色造成1点伤害。", shaman_zhuhuo: "逐火", shaman_zhuhuo_info: "你出场时,摸1~3张牌。", shaman_peiyu: "培育", shaman_peiyu_info: "你出场时,增加X点体力和体力上限,X为友方图腾数。", shaman_huoli: "活力", shaman_huoli_info: "己方主将出牌阶段开始时,你令其获得1点行动值。", shaman_xueju: "穴居", shaman_xueju_info: "每当己主将使用一张随从牌,摸一张牌。", shaman_huoxi: "火袭", shaman_huoxi_info: "你出场时,己方主将可以对对方一名随从造成2点火焰伤害。", shaman_fachao: "法潮", shaman_fachao_info: "己方主将在其每个回合结束阶从牌库中获得一张牌并回复1点体力。", shaman_huoshe: "火舌", shaman_huoshe_info: "其他友方随从造成的伤害始终+1。", shaman_jili: "激励", shaman_jili_info: "己方主将的结束阶段,所有友方图腾摸一张牌。", shaman_tuteng: "图腾", shaman_tuteng_info: "你跳过摸牌阶段。", shaman_fali: "空气", shaman_fali_info: "已方主将使用的法术牌伤害+1。", shaman_zhiliao: "治疗", shaman_zhiliao_info: "在你的结束阶段,令所有友方随从回复1点体力。", shaman_zhuore: "灼热", shaman_zhuore_info: "已方主将的结束阶段,对一名随机敌方随从造成1点伤害。", _shaman_skill: "图腾", _shaman_skill_info: "召唤一个随机图腾。", _mage_skill: "火冲", _mage_skill_info: "对一名随从造成1点火焰伤害。", _priest_skill: "治疗", _priest_skill_info: "回复1点体力。", _priest_skillx: "心刺", _priest_skillx_info: "造成1点伤害。", _warrior_skill: "战甲", _warrior_skill_info: "获得1点护甲(不能超过3点)。", _warlock_skill: "分流", _warlock_skill_info: "从牌库中获得两张牌。", _warlock_skillx: "炼狱", _warlock_skillx_info: "召唤一个地狱火。", _rogue_skill: "出鞘", _rogue_skill_info: "装备一把武器和一个随机非武器装备。", _paladin_skill: "动员", _paladin_skill_info: "召唤一名士兵。", _hunter_skill: "射击", _hunter_skill_info: "对敌方主将造成1点伤害。", _druid_skill: "猛击", _druid_skill_info: "视为使用一张不计入出杀次数的杀。", stone_tuteng1: "石爪图腾", stone_tuteng2: "灼热图腾", stone_tuteng3: "空气图腾", stone_tuteng4: "治疗图腾", stone_xinbing: "新兵", stone_zhongshi: "中士", stone_zhongshi1: "叫嚣", stone_zhongshi1_info: "你出场时,己方主将可以弃置对方一名随从的所有牌。", stone_zhucangzhe: "伫藏者", stone_zhucangzhe1: "伫藏", stone_zhucangzhe1_info: "你出场时,己方主将可以令己方一名其他角色摸一张牌。", stone_huoqiangshou: "火枪手", stone_huoqiangshou1: "火枪", stone_huoqiangshou1_info: "你出场时,己方主将可以对对方一名随从造成1点伤害。", stone_lansaizhanshi: "蓝腮战士", stone_kutongsiseng: "苦痛侍僧", stone_kutongsiseng1: "苦痛", stone_kutongsiseng2: "苦痛", stone_kutongsiseng1_info: "你出场时,己方主将于本结束阶段摸一张牌。", stone_yuanguanying: "远古暗影", stone_yuanguanying1: "暗影", stone_yuanguanying1_info: "你出场时,己方主将可视为对一名敌方角色使用一张杀。", stone_dijieshicong: "低阶侍从", stone_dijieshicong1: "持枪", stone_dijieshicong1_info: "你出场时,敌方主将随机弃置一张装备牌。", stone_yaosaishouwei: "要塞守卫", stone_yaosaishouwei1: "守卫", stone_yaosaishouwei1_info: "你出场时,己方主将本回合手牌上限+2。", stone_famingjia: "发明家", stone_famingjia1: "发明", stone_famingjia1_info: "你出场时,己方主将摸两张牌。", stone_chilundashi: "齿轮大师", stone_chilundashi1: "齿轮", stone_chilundashi2: "齿轮", stone_chilundashi1_info: "你出场后的第一个摸牌阶段摸牌数+1。", stone_hanguangzhizhe: "寒光智者", stone_hanguangzhizhe1: "寒光", stone_hanguangzhizhe1_info: "你出场时,所有其他随从各摸一张牌。", stone_aihaozhihun: "哀嚎之魂", stone_aihaozhihun1: "哀嚎", stone_aihaozhihun1_info: "你出场时,敌方随从弃置所有牌。", stone_fennuxiaoji: "愤怒小鸡", stone_fennuxiaoji1: "暴怒", stone_fennuxiaoji1_info: "准备阶段,若你没有手牌,你摸两张牌。", stone_juxingchanchu: "巨型蟾蜍", stone_juxingchanchu1: "毒液", stone_juxingchanchu1_info: "你死亡时,己方主将可令一名敌方随从失去1点体力。", stone_shishigui: "食尸鬼", stone_shishigui1: "食尸", stone_shishigui1_info: "你死亡后,场上所有其他随从失去1点体力。", stone_wuyi: "巫医", stone_langren: "狼人", stone_qianxing: "潜行", stone_qianxing_info: "你出场时,获得潜行直到下一回合开始。", stone_mingguangjisi: "明光祭司", stone_nianqingjisi: "年轻祭司", stone_zhufu: "祝福", stone_zhufu_info: "己方主将的结束阶段,你令一名随机的受伤友方随从回复1点体力。", stone_aomishouwei: "奥秘守卫", stone_yanjingshe: "眼镜蛇", stone_yanjingshe1: "毒噬", stone_yanjingshe1_info: "你出场时,若敌方随从数不少于己方,则随机杀死一名随从。", stone_zhiyuzhe: "治愈者", stone_zhiyu: "治愈", stone_zhiyu_info: "你出场时,令所有友方随从回复1点体力。", stone_mafengzhuru: "麻风侏儒", stone_mafengzhuru1: "麻风", stone_mafengzhuru1_info: "杀死你的随从失去1点体力。", stone_fatiaozhuru: "发条侏儒", stone_fatiaozhuru1: "发条", stone_fatiaozhuru1_info: "结束阶段,若你没有手牌,你摸两张牌。", stonesha: "进攻", stonesha_info: "锁定技,你的装备牌均视为杀。", stoneshan: "格挡", stoneshan_info: "锁定技,你的随从和法术牌均视为闪。", stonecharacter: "随从", spell_shengerpingdeng: "生而平等", spell_shengerpingdeng_info: "将所有随从体力上限降为1。", spell_jingshenkongzhi: "精神控制", spell_jingshenkongzhi_info: "将一名敌方随从吸收为己方。", spell_anyingkuangluan: "暗影狂乱", spell_anyingkuangluan_info: "将一名手牌数不超过1的敌方随从吸收为己方,并令其于下个回合结束后死亡。", spell_anyingkuangluan_die: "暗影狂乱", spell_anyingkuangluan_die_info: "下个回合结束后死亡。", spell_binghuan: "冰环", spell_binghuan_info: "将场上所有随从翻面。", spell_morizaihuo: "末日灾祸", spell_morizaihuo_info: "令场上所有随从立即死亡,回复2点体力。", spell_zhiliaozhichu: "治疗之触", spell_zhiliaozhichu_info: "令目标随从恢复所有体力值并获得嘲讽。", lschaofeng: "嘲讽", lschaofeng_info: "同阵营的无嘲讽角色不以能成为杀的目标。", spell_wangzhezhufu: "王者祝福", spell_wangzhezhufu_info: "令一名随从增加2点体力和体力上限并摸两张牌。", spell_diyulieyan: "地狱烈焰", spell_diyulieyan_info: "所有角色失去1点体力。", spell_chenmo: "沉默", spell_chenmo_info: "弃置一名随从的所有牌,并令其体力上限减至2。", spell_zhiliaoshui: "治疗水", spell_zhiliaoshui_info: "出牌阶段对自己使用,恢复2点体力值;或于濒死阶段对一名角色使用,令目标恢复1点体力。", spell_yanmie: "极恶之咒", spell_yanmie_info: "交换你与敌方主将的装备区,并摸若干张牌直到你的手牌数与敌方主将相等。", spell_xiaoshi: "消失", spell_xiaoshi_info: "令敌方主将将所有装备区内的牌收入手牌,并弃置其若干张手牌,直到其手牌数与你相等。", stonecard: "法术", mode_stone_card_config: "炉石模式", mode_stone_character_config: "炉石模式", }, help: { 炉石模式: '
构筑
" + '
职业技能
" + '
怒气值
" + '
战斗