game.import("extension", function (lib, game, ui, get, ai, _status) { return { name: "喵喵喵喵", content: function (config, pack) { /*---------------------------------------------------------------以下为杂项---------------------------------------------------------------*/ get.is.xuemai = function (skill) { var info = lib.skill[skill]; if (typeof info.xuemai == "function") return info.xuemai(skill); if (info.xuemai == false) return false; if (info.trigger && info.forced) return true; if (info.mod) return true; if (info.xuemai) return true; return false; }; game.changeRoundNumber = function () { /*接受输入num,游戏轮数+=num */ //event.trigger("changeRoundNumberBegin"); var num = 1, source = _status.event.player, is_skip = false; for (var i = 0; i < arguments.length; i++) { if (typeof arguments[i] == "number") { num = arguments[i]; } else if (arguments[i] == "skip") { is_skip = true; } else if (get.itemtype(arguments[i]) == "player" || arguments[i] == null) { source = arguments[i]; } } if (is_skip) { game.roundNumber += num; } else { while (num > 0) { num--; game.roundNumber++; game.updateRoundNumber(); _status.event.trigger("roundStart"); } } game.updateRoundNumber(); //event.trigger("changeRoundNumberEnd"); }; // 重写废除判定区相关 lib.element.content.enableJudge = function () { "step 0" if (!player.storage._disableJudge || player.storage._disableJudge == false) event.finish(); // 多次废除恢复判断 if (!player.storage._disableJudge_layer) { player.storage._disableJudge_layer = 0; } player.storage._disableJudge_layer--; if (player.storage._disableJudge_layer < 0) { player.storage._disableJudge_layer = 0; event.finish(); } if (player.storage._disableJudge_layer > 0) event.finish(); "step 1" game.log(player, "恢复了判定区"); player.storage._disableJudge = false; // player.markSkill('_disableJudge'); "step 2" game.broadcastAll(function (player, card) { player.$enableJudge(); }, player); }; lib.element.content.disableJudge = function () { "step 0" // if (player.storage._disableJudge == true) return; // 多次废除恢复判断 if (!player.storage._disableJudge_layer) { player.storage._disableJudge_layer = 0; } player.storage._disableJudge_layer++; if (player.storage._disableJudge_layer > 1) { event.finish(); } "step 1" game.log(player, "废除了判定区"); var js = player.getCards("j"); if (js.length) player.discard(js); player.storage._disableJudge = true; //player.markSkill('_disableJudge'); "step 2" game.broadcastAll(function (player, card) { player.$disableJudge(); }, player); }; //并不是很好的写法 game.addPlayer = (position, character, character2) => { if (position < 0 || position > game.players.length + game.dead.length || position == undefined) position = Math.ceil(Math.random() * (game.players.length + game.dead.length)); const players = game.players.concat(game.dead); ui.arena.setNumber(players.length + 1); players.forEach(value => { if (parseInt(value.dataset.position) >= position) value.dataset.position = parseInt(value.dataset.position) + 1; }); const player = ui.create.player(ui.arena).animate("start"); if (character) player.init(character, character2); // //技能修复 // var skills=lib.character[character][3]; // if(character2)skills.concat(lib.character[character2][3]) // for(var i of skills){ // game.log(i) // player.removeSkill(i) // player.addSkill(i); // } // 属性 player.storage.enhancementArray = { attack: 0, //攻击力 defend: 0, //防御力 miss: 0, //闪避率 hit: 0, //命中率 strike: 0, //暴击率,目前没用 draw: 0, //摸牌,目前没用 locked: false, locked_end: -1, locked_type: null }; game.players.push(player); player.playerid = get.id(); game.playerMap[player.playerid] = player; // game.log(game.playerMap) // for(var i in game.playerMap){ // game.log(i) // } // game.playerMap.push(player); player.dataset.position = position; game.arrangePlayers(); return player; }; // //多位主公死亡情况 // lib.skill._miao_zhu_dying = { // } //更换武将头像 lib.element.player.changeAvatarMiao = function (imgFrom, imgTo) { path = this.node.avatar.style.backgroundImage.split(imgFrom)[0]; this.node.avatar.style.backgroundImage = path + imgTo + '")'; }; //获得限伤 lib.element.player.addDamageLimiter = function () { if (!this.storage._damageLimiter_Miao) { this.storage._damageLimiter_Miao = []; } var id = _status.event.name, num = 1, source = _status.event.player, nolog = false; for (var i = 0; i < arguments.length; i++) { if (arguments[i] == "nolog") { nolog = true; } else if (typeof arguments[i] == "number") { num = arguments[i]; } else if (get.itemtype(arguments[i]) == "player" || arguments[i] == null) { source = arguments[i]; } else if (typeof arguments[i] == "string") { id = arguments[i]; } } this.removeDamageLimiter(id,"noUnmark"); var Limiter = {}; Limiter.id = id; Limiter.num = num; Limiter.source = source; this.storage._damageLimiter_Miao.push(Limiter); this.markSkill("_DamageLimiter"); }; //移除限伤 lib.element.player.removeDamageLimiter = function () { if (!this.storage._damageLimiter_Miao) { this.storage._damageLimiter_Miao = []; } var id = _status.event.name, noUnmark = false, nolog = false; for (var i = 0; i < arguments.length; i++) { if (arguments[i] == "nolog") { nolog = true; } else if (arguments[i] == "noUnmark") { noUnmark = true; } else if (typeof arguments[i] == "string") { id = arguments[i]; } } for (var i = 0; i < this.storage._damageLimiter_Miao.length; i += 1) { if (this.storage._damageLimiter_Miao[i].id == id) { this.storage._damageLimiter_Miao.splice(i, 1); } } if (this.storage._damageLimiter_Miao.length == 0 && noUnmark == false) this.unmarkSkill("_DamageLimiter"); }; lib.skill["_DamageLimiter"] = { trigger: { player: ["damageBegin3"] }, filter: function (event, player) { if (!player.storage._damageLimiter_Miao) return false; var min = Infinity; for (var i = 0; i < player.storage._damageLimiter_Miao.length; ++i) { limiter = player.storage._damageLimiter_Miao[i]; if (player.storage._damageLimiter_Miao[i].num < min) min = player.storage._damageLimiter_Miao[i].num; } return event.num > min; }, priority: -705831, forced: true, charlotte: true, unique: true, mark: true, marktext: "限伤", intro: { name: "最大伤害限制", mark: function (dialog, storage, player) { var min = Infinity; for (var i = 0; i < player.storage._damageLimiter_Miao.length; ++i) { limiter = player.storage._damageLimiter_Miao[i]; if (player.storage._damageLimiter_Miao[i].num < min) min = player.storage._damageLimiter_Miao[i].num; } return "你受到的所有伤害不超过" + min + "点"; } }, content: function () { var min = Infinity; for (var i = 0; i < player.storage._damageLimiter_Miao.length; ++i) { limiter = player.storage._damageLimiter_Miao[i]; if (player.storage._damageLimiter_Miao[i].num < min) min = player.storage._damageLimiter_Miao[i].num; } if (trigger.num > min) trigger.num = min; game.log(player, "触发了限伤"); _status.event.trigger("damageLimit"); } }; //获得缓伤,即百分比减伤 lib.element.player.addDamageMitigationer = function () { if (!this.storage._damageMitigationer_Miao) { this.storage._damageMitigationer_Miao = []; } var id = _status.event.name, num = 1, source = _status.event.player, nolog = false; for (var i = 0; i < arguments.length; i++) { if (arguments[i] == "nolog") { nolog = true; } else if (typeof arguments[i] == "number") { num = arguments[i]; } else if (get.itemtype(arguments[i]) == "player" || arguments[i] == null) { source = arguments[i]; } else if (typeof arguments[i] == "string") { id = arguments[i]; } } this.removeDamageMitigationer(id); var Limiter = {}; Limiter.id = id; Limiter.num = num; Limiter.source = source; this.storage._damageMitigationer_Miao.push(Limiter); this.markSkill("_DamageMitigationer"); }; lib.element.player.removeDamageMitigationer = function () { if (!this.storage._damageMitigationer_Miao) { this.storage._damageMitigationer_Miao = []; } var id = _status.event.name, nolog = false; for (var i = 0; i < arguments.length; i++) { if (arguments[i] == "nolog") { nolog = true; } else if (typeof arguments[i] == "string") { id = arguments[i]; } } for (var i = 0; i < this.storage._damageMitigationer_Miao.length; i += 1) { if (this.storage._damageMitigationer_Miao[i].id == id) { this.storage._damageMitigationer_Miao.splice(i, 1); } } if (this.storage._damageMitigationer_Miao.length == 0) this.unmarkSkill("_DamageMitigationer"); }; lib.skill["_DamageMitigationer"] = { trigger: { player: ["damageBegin4"] }, filter: function (event, player) { if (!player.hp_float) { player.hp_float = 0; //储存浮点位的hp } if (!player.storage._damageMitigationer_Miao || player.storage._damageMitigationer_Miao.length == 0) return false; return true; }, priority: -Infinity, //保证优先级最低 forced: true, charlotte: true, unique: true, mark: true, marktext: "减伤", intro: { name: "伤害减免", mark: function (dialog, storage, player) { var min = Infinity; for (var i = 0; i < player.storage._damageMitigationer_Miao.length; ++i) { limiter = player.storage._damageMitigationer_Miao[i]; if (player.storage._damageMitigationer_Miao[i].num < min) min = player.storage._damageMitigationer_Miao[i].num; } return "你受到的所有伤害减少" + (100 - min * 100).toString() + "%"; } }, content: function () { "step 0" var min = 1; for (var i = 0; i < player.storage._damageMitigationer_Miao.length; ++i) { limiter = player.storage._damageMitigationer_Miao[i]; if (player.storage._damageMitigationer_Miao[i].num < min) min = player.storage._damageMitigationer_Miao[i].num; } n1 = trigger.num; n2 = parseFloat((n1 * min + 0.00001).toFixed(4)); // nint = parseInt(n2) // game.log(n2,nint,n2-nint) // nfloathp = parseFloat(n2 - nint) // player.hp_float = player.hp_float + parseFloat(nfloathp) // trigger.num = parseInt(n2) // if(parseFloat(nfloathp) != 0){ // trigger.num += 1 // } // game.log(player.hp_float >= 1) // flag=false // if(player.hp_float == 0 && n2 > 0){ // // if(player.hujia > 0){ // // player.changeHujia(-1) // // } // // else{ // // player.hp-=1 // // } // trigger.num += 1 // } player.hp_float -= n2; // game.log(player.hp_float) trigger.num = 0; // if(flag){ // trigger.num += 1 // } while (player.hp_float < 0) { player.hp_float += 1; trigger.num += 1; } // if(player.hp_float == 0){ // // if(player.hujia > 0){ // // player.changeHujia(1) // // } // // else{ // // player.hp+=1 // // } // trigger.num -= 1 // } // game.log(player.hp_float,'sss',trigger.num) game.log(player, "触发了减伤,实际受到" + n2 + "点伤害"); if (n2 < 1) { if (player.hujia != 0) { player.changeHujia(-trigger.num); } else player.hp -= trigger.num; if (trigger.source) { player.$damage(trigger.source); } else { player.$damage(); } player.update(); trigger.num = 0; } _status.event.trigger("damageMitigation"); "step 1" if (player.hp <= 0 && player.hp_float <= 0) { player.nodying = false; // game.log(player.hp,player.hp_float); player.dying(); } } }; //濒死阶段0.xhp处理 lib.skill["_DyingWithFloatHp"] = { trigger: { player: ["dying"] }, direct: true, unique: true, // forceunique:true, filter: function (event, player) { if (!player.hp_float) { player.hp_float = 0; //储存浮点位的hp } return player.hp == 0 && player.hp_float > 0; }, init: function (player) { if (!player.hp_float) { player.hp_float = 0; //储存浮点位的hp } }, content: function () { // game.log(player.hp,player.hp_float) trigger.cancel(); for (var i = 0; i < _status.dying.length; ++i) { if (_status.dying[i] == player) { _status.dying.splice(i, 1); } } // trigger.nodying = true } }; //回满血0.xhp处理 lib.skill["_RecoverWithFloatHp"] = { trigger: { player: ["recoverEnd"] }, direct: true, unique: true, forceunique: true, filter: function (event, player) { if (!player.hp_float) { player.hp_float = 0; //储存浮点位的hp } return player.hp == player.maxHp; }, init: function (player) { if (!player.hp_float) { player.hp_float = 0; //储存浮点位的hp } }, content: function () { player.hp_float = 0; } }; lib.skill["zioy_lockHp"] = { trigger: { player: ["damageBegin", "loseHpBegin"] }, direct: true, unique: true, forceunique: true, filter: function (event, player) { return true; }, mark: true, marktext: "锁血", intro: { name: "锁血" }, init: function (player) {}, content: function () { trigger.cancel(); } }; /*-----------------------------------------------------------以下部分为全局状态相关----------------------------------------------------------- */ game.globalStatus = { name: null, /*全局状态名称,string or null*/ timing_type: null, /*全局状态计时类型,轮:'round'or回合:"phase"or null */ locked_timing_type: null, /*全局状态锁定计时类型,轮:'round'or回合:"phase"or null */ source: null, /*全局状态来源,player or null*/ end: 0, /*全局状态结束时间,int */ locked_end: -1, /*锁定结束时间,int */ storage: { remove_timing_locked: true }, /*存放全局状态需要的数据,object */ isLocked: function () { /*返回全局状态是否锁定 */ if (this.locked_timing_type == "round") return this.locked_end > game.roundNumber; else return this.locked_end > 0; }, translation: function () { /*返回全局状态的中文字符名称 */ return get.status(this).translation; } }; game.changeGlobalStatus = function () { /*改变场上状态,example:game.changeGlobalStatus(5,3,"xiyu",ture,"phase") 表示强制转换为细雨天气5回合并锁定3回合,来源默认为event.player*/ if (!game.hasGlobalStatusButton) { game.hasGlobalStatusButton = true; ui.globalStatusButton = ui.create.system("喵喵", null, true); ui.globalStatusButton.style.display = "hidden"; lib.setPopped(ui.globalStatusButton, ui.click.globalStatusButton, 170); if (get.is.phoneLayout()) { ui.globalStatus = ui.create.div(".touchinfo.right", ui.window); } else { ui.globalStatus = ui.create.div(ui.gameinfo); } } var status = null, timing_type = null, locked_timing_type = null, num = -1, locked_num = -1, source = _status.event.player, forced = false, Overridable = false, nolog = false; //最后不game.log(xxxxx) for (var i = 0; i < arguments.length; i++) { if (arguments[i] == "nolog") { nolog = true; } else if (arguments[i] == "round" || arguments[i] == "phase") { if (timing_type == null) timing_type = arguments[i]; else locked_timing_type = arguments[i]; } else if (typeof arguments[i] == "boolean") { forced = arguments[i]; } else if (typeof arguments[i] == "number") { if (num == -1) num = arguments[i]; else if (locked_num == -1) locked_num = arguments[i]; } else if (get.itemtype(arguments[i]) == "player" || arguments[i] == null) { source = arguments[i]; } else if (typeof arguments[i] == "string") { status = arguments[i]; } } if (timing_type == null) timing_type = "round"; if (locked_timing_type == null) locked_timing_type = timing_type; _status.event.trigger("changeGlobalStatusBegin"); /*以上处理输入信息 */ if (get.status(status) == null) status = null; var skill = get.status(status).skill; if (num <= -1) { num = 1; } if (locked_num <= -1) { locked_num = 0; } if (locked_num > num) { locked_num = num; } if (forced) { Overridable = true; } else if ( (get.status(status).type == get.status(game.globalStatus).type || get.status(null).type == get.status(game.globalStatus).type) && !game.globalStatus.isLocked() ) { Overridable = true; } var str = ""; var str1 = lib.globalStatusTypeTranslation[get.status(game.globalStatus).type]; /*全局状态类型中文字符 */ var str2 = "轮", str4 = str2; var flag1 = true; if (timing_type == "phase") str2 = "回合"; if (locked_timing_type == "phase") str4 = "回合"; //event.trigger("changeGlobalStatus"); if (Overridable) { if (game.globalStatus && game.globalStatus.name != null) { if (game.globalStatus.name != status) { /*若当前全局状态与待召唤全局状态不一致则删除上一全局状态 */ game.removeGlobalSkillMiao(get.status(game.globalStatus).skill); } else { /*若当前全局状态与待召唤全局状态一致则跳过添加全局状态 */ flag1 = false; } } if (flag1) { game.addGlobalSkillMiao(skill); // game.addGlobalSkill("globalStatusRemover"); // game.addGlobalSkill("globalStatusRemover1"); } game.globalStatus.name = status; game.globalStatus.end = game.roundNumber + num; game.globalStatus.locked_end = game.roundNumber + locked_num; game.globalStatus.source = source; game.globalStatus.timing_type = timing_type; game.globalStatus.locked_timing_type = locked_timing_type; game.globalStatus.storage.remove_timing_locked = true; //防止当前回合更改 if (timing_type == "phase") { game.globalStatus.end = num; } if (locked_timing_type == "phase") { game.globalStatus.locked_end = locked_num; } // if(_status.event.getParent()['triggername'] == 'phaseBegin' && timing_type == 'phase'){ // /*回合开始阶段修正 */ // game.globalStatus.end += 1; // } // if(_status.event.getParent()['triggername'] == 'phaseBegin' && locked_timing_type == 'phase'){ // /*回合开始阶段修正 */ // game.globalStatus.locked_end += 1; // } if (!(status == null && locked_num <= 0)) { /*更新str1全局状态类型中文字符 */ str1 = lib.globalStatusTypeTranslation[get.status(game.globalStatus).type]; } str += "召唤场上" + str1 + "为:" + get.status(status).translation + ",持续" + num + "" + str2; if (locked_num == num) { str = "锁定场上" + str1 + "为:" + get.status(status).translation + ",持续" + locked_num + "" + str4; } else if (locked_num > 0) { str += "并锁定" + locked_num + "" + str4; } if (status == null && locked_num <= 0) { str = "清除了场上" + str1; } if (forced) str = "强制" + str; if (!nolog) game.log(source, str); ui.updateGlobalStatus(); } else { str += "召唤" + lib.globalStatusTypeTranslation[get.status(status).type] + "失败"; if (!nolog) game.log(source, str); } /*以上更改全局状态并输出 */ _status.event.trigger("changeGlobalStatus_End"); }; game.changeGlobalStatusEnd = function () { /*改变场上状态持续时间*/ if (game.globalStatus.name == null) { return; } var num = 0, // timing_type = game.globalStatus.timing_type, locked_num = 0, source = _status.event.player, nolog = false; //最后不game.log(xxxxx) for (var i = 0; i < arguments.length; i++) { if (arguments[i] == "nolog") { nolog = true; } else if (arguments[i] == "round" || arguments[i] == "phase") { timing_type = arguments[i]; } else if (typeof arguments[i] == "number") { if (num == 0) num = arguments[i]; else if (locked_num == 0) locked_num = arguments[i]; } else if (get.itemtype(arguments[i]) == "player" || arguments[i] == null) { source = arguments[i]; } } if (num == 0 && locked_num == 0) return; var str = "", str1 = "", str2 = ""; if (num > 0) { str1 = "延长"; } else { str1 = "减少"; num = -num; } if (locked_num > 0) { str2 = "延长"; } else { str2 = "减少"; locked_num = -locked_num; } if (num != 0) { str = str + str1 + '' + get.status(game.globalStatus).translation + ":" + num + ""; if (game.globalStatus.timing_type == "round") str = str + "轮"; else str = str + "回合"; } if (locked_num != 0) { if (str != "") str = str + ","; str = str + str2 + '锁定' + locked_num + ""; if (game.globalStatus.locked_timing_type == "round") str = str + "轮"; else str = str + "回合"; } game.log(source, str); /*处理锁定时间大于持续时间 */ if (game.globalStatus.timing_type == game.globalStatus.locked_timing_type) { if (game.globalStatus.locked_end + locked_num > game.globalStatus.end + num) { locked_num = game.globalStatus.end + num - game.globalStatus.locked_end; } } /*处理锁定时间小于0 */ if (game.globalStatus.locked_timing_type == "round") { if (game.globalStatus.locked_end + locked_num <= game.roundNumber) { locked_num = -game.globalStatus.locked_end + 1; } } else { if (game.globalStatus.locked_end + locked_num <= 0) { locked_num = -game.globalStatus.locked_end; } } game.globalStatus.end = game.globalStatus.end + num; game.globalStatus.locked_end = game.globalStatus.locked_end + locked_num; game.globalStatus.source = source; game.globalStatus.storage.remove_timing_locked = true; //防止当前回合更改 // game.globalStatus.timing_type = timing_type; /*处理剩余时间小于0 */ if (game.globalStatus.timing_type == "round") { if (game.globalStatus.end <= game.roundNumber) { game.clearGlobalStatus(true, "nolog"); } } else { if (game.globalStatus.end <= 0) { game.clearGlobalStatus(true, "nolog"); } } }; game.clearGlobalStatus = function () { /*强制或状态非锁定则清除场上状态 */ var force = false, source = _status.event.player, nolog = false, str1 = "清除" + lib.globalStatusTypeTranslation[get.status(game.globalStatus).type]; for (var i = 0; i < arguments.length; i++) { if (arguments[i] == true) { force = true; } else if (get.itemtype(arguments[i]) == "player" || arguments[i] == null) { source = arguments[i]; } else if (arguments[i] == "nolog") { nolog = true; } } //event.trigger("clearGlobalStatusBegin"); //event.trigger("clearGlobalStatus"); if (force || !game.globalStatus.isLocked() || game.globalStatus.name == null) { if (force) { str1 = "强制" + str1; } game.changeGlobalStatus("nolog", true, null); // game.removeGlobalSkill("globalStatusRemover"); // game.removeGlobalSkill("globalStatusRemover1"); ui.updateGlobalStatus(); if (!nolog) game.log(source, str1 + "成功"); } else { if (!nolog) game.log(source, str1 + "失败"); } //event.trigger("clearGlobalStatusEnd"); }; game.addGlobalSkillMiao = function (skill) { /*添加globalSkill的同时处理skill的init和groupM*/ if (!lib.skill[skill]) return; game.addGlobalSkill(skill); /*处理skill的init */ if (lib.skill[skill].init && typeof lib.skill[skill].init == "function") { let p = _status.event.player; do { lib.skill[skill].init(p); p = p.next; } while (p != _status.event.player); } /*直接使用group会出错,这里使用groupM */ if (lib.skill[skill].groupM) { if (typeof lib.skill[skill].groupM == "string") { game.log("hello"); game.addGlobalSkillMiao(lib.skill[skill].groupM); } else { for (let i in lib.skill[skill].groupM) { game.addGlobalSkillMiao(i); } } } }; game.removeGlobalSkillMiao = function (skill) { /*添加globalSkill的同时处理skill的onremove和groupM*/ if (!lib.skill[skill]) return; game.removeGlobalSkill(skill); /*处理skill的onremove */ if (lib.skill[skill].onremove && typeof lib.skill[skill].onremove == "function") { let p = _status.event.player; do { lib.skill[skill].onremove(p); p = p.next; } while (p != _status.event.player); } /*直接使用group会出错,这里使用groupM */ if (lib.skill[skill].groupM) { if (typeof lib.skill[skill].groupM == "string") { game.removeGlobalSkillMiao(lib.skill[skill].groupM); } else { for (let i in lib.skill[skill].groupM) { game.removeGlobalSkillMiao(i); } } } }; // game.hasGlobalStatus = function () { // /*返回目前是否拥有状态,没啥用 */ // if (!game.globalStatus || game.globalStatus == null || game.globalStatus.name == null) return false; // return true; // }; get.status = function (status) { /*如果输入一个object或string,返回lib.globalStatus中key对应的内容,否则返回lib.globalStatus[null] */ var s = status; if (typeof status == "object" && status != null) { return get.status(s.name); } if (lib.globalStatus[status]) { return lib.globalStatus[status]; } return lib.globalStatus[null]; }; ui.updateGlobalStatus = function () { /*时钟边上的全局状态显示 */ if (game.globalStatus.name != null) { ui.globalStatus.innerHTML = lib.globalStatusTypeTranslation[get.status(game.globalStatus).type] + ":" + get.status(game.globalStatus).translation; } else { ui.globalStatus.innerHTML = "当前无天气/环境"; } if (get.is.phoneLayout()) ui.globalStatus.innerHTML = "
" + ui.globalStatus.innerHTML; }; ui.click.globalStatusButton = function () { /*喵喵按钮 */ var uiintro = ui.create.dialog("hidden"); uiintro.listen(function (e) { e.stopPropagation(); }); var num; if (game.online) { num = _status.cardPileNum || 0; } else { num = ui.cardPile.childNodes.length; } if (game.globalStatus.name == null) { uiintro.add("当前无天气/环境"); } else { uiintro.add( '
>>>当前' + lib.globalStatusTypeTranslation[get.status(game.globalStatus).type] + "为<<<

" + get.status(game.globalStatus).translation // +"
" ); var str = "", str2 = "轮", num1 = game.globalStatus.end - game.roundNumber, num2 = game.globalStatus.locked_end - game.roundNumber; if (game.globalStatus.timing_type == "phase") { str2 = "回合"; num1 = game.globalStatus.end; } str = '

--->剩余:' + num1 + str2 + "
"; if (game.globalStatus.locked_timing_type == "phase") { str2 = "回合"; num2 = game.globalStatus.locked_end; } if (game.globalStatus.isLocked()) { str += "--->锁定:" + num2 + str2 + "

"; } else { str += "--->未被锁定

"; } str += '

--->效果:' + get.status(game.globalStatus).intro + "

"; uiintro.add(str); } return uiintro; }; lib.globalStatusTypeTranslation = { /*储存全局状态类型对应的中文字符 */ "weather": "天气", "environment": "环境", null: "状态" }; lib.globalStatus = { /*存储所有全局状态信息 */ /*以下为天气 */ "rerang": { translation: "热浪", skill: "zioy_status_rerang", type: "weather", intro: "火属性伤害+1。" }, "xiyu": { translation: "细雨", skill: "zioy_status_xiyu", type: "weather", intro: "火属性伤害将被视为无属性伤害。" }, "chunfeng": { translation: "台风", skill: "zioy_status_taifeng", type: "weather", intro: "角色受伤时,概率将其随机一张牌移动至下家的对应位置。" }, "shuguang": { translation: "曙光", skill: "zioy_status_shuguang", type: "weather", intro: "回合结束阶段清除当前角色的所有异常状态。" }, "shenlou": { translation: "海市蜃楼", skill: "zioy_status_shenlou", type: "weather", intro: "回合结束阶段令当前回合角色执行[失去1点体力,将牌弃置至X张(X为体力值,至少弃置1张),获得“睡眠”异常]中随机任意项。" }, /*以下为环境 */ "mizhang": { translation: "迷嶂", skill: "zioy_status_mizhang", type: "environment", intro: "所有角色进攻距离-1。" }, "hexu": { translation: "云归鹤墟", skill: "zioy_status_hexu", type: "environment", intro: "还没想出来。" }, "huoshan": { translation: "风林火山", skill: "zioy_status_huoshan", type: "environment", intro: "回复体力时令回复体力值减半(向下取整)。" }, /*以下为其他状态 */ null: { translation: "无", skill: null, type: null, intro: "目前场上无任何状态。" }, "test": { translation: "测试", skill: null, type: null, intro: "测试。" } }; lib.skill["zioy_status"] = { /*储存全局状态对应技能 */ subSkill: { example: { trigger: { global: "phaseEnd" }, sub: true, forced: true, direct: true, unique: true, charlotte: true, filter: function (event, player) { return true; }, init: function (player) {}, onremove: function (player) {}, content: function () {}, mod: {}, groupM: "zioy_status_example1" }, xiyu: { sub: true, forced: true, direct: true, unique: true, charlotte: true, trigger: { source: "damageBegin1" }, filter: function (event) { return event.hasNature("fire"); }, priority: -5, content: function () { trigger.nature = null; } }, rerang: { sub: true, forced: true, direct: true, unique: true, charlotte: true, trigger: { source: "damageBegin1" }, filter: function (event) { return event.hasNature("fire"); }, priority: -5, content: function () { trigger.num += 1; } }, mizhang: { sub: true, forced: true, direct: true, unique: true, charlotte: true, mod: { globalFrom: function (from, to, distance) { return distance + 1; } } }, shuguang: { sub: true, forced: true, direct: true, unique: true, charlotte: true, trigger: { player: "phaseEnd" }, priority: -2523, content: function () { player.removeBuff("all"); } }, shenlou: { trigger: { player: "phaseEnd" }, sub: true, forced: true, direct: true, unique: true, charlotte: true, filter: function (event, player) { return !player.storage.shenlou_noLoseHp; }, init: function (player) {}, onremove: function (player) {}, content: function () { var r = function () { return [true, false].randomGet(); }; if (r()) { player.loseHp(); } if (r()) { var n = player.countCards() - player.hp; if (player.countCards() > 0 && n <= 0) n = 1; player.chooseToDiscard(true, n); } if (r()) { player.addBuff("shuimian", null); } }, mod: {} }, huoshan: { trigger: { player: "recoverBegin" }, sub: true, forced: true, direct: true, unique: true, charlotte: true, filter: function (event, player) { return !player.storage.huoshan_no; }, init: function (player) {}, onremove: function (player) {}, content: function () { trigger.num = parseInt(trigger.num / 2); }, mod: {}, "_priority": 685 }, test: { sub: true, forced: true, direct: true, unique: true, charlotte: true, mod: {} } } }; lib.skill["_globalStatusRemover"] = { /*轮类型全局状态倒计时 */ trigger: { global: "roundStart" }, filter: function (card, player, target) { if (game.globalStatus.storage.remove_timing_locked == true) return false; if (game.globalStatus.timing_type != "round") return false; return game.globalStatus.end <= game.roundNumber; }, direct: true, charlotte: true, unique: true, content: function () { if (game.globalStatus.timing_type == "round" && game.globalStatus.end <= game.roundNumber) { game.clearGlobalStatus(true, "nolog", null); ui.updateGlobalStatus(); } } //group:"globalStatusRemover1", }; lib.skill["_globalStatusRemover1"] = { /*回合类型全局状态倒计时 */ trigger: { player: "phaseBegin" }, direct: true, charlotte: true, unique: true, filter: function (event, player) { if (game.globalStatus.storage.remove_timing_locked == true) return false; return true; if (game.globalStatus.locked_timing_type == "phase") game.globalStatus.locked_end--; if (game.globalStatus.timing_type != "phase") return false; game.globalStatus.end--; return game.globalStatus.end <= 0; }, content: function () { if (game.globalStatus.locked_timing_type == "phase") game.globalStatus.locked_end--; // game.log(123) if (game.globalStatus.timing_type == "phase") { if (game.globalStatus.storage.remove_timing_locked == true) return; game.globalStatus.end--; game.globalStatus.storage.remove_timing_locked = true; // game.log(game.globalStatus.end); if (game.globalStatus.end <= 0) { game.clearGlobalStatus(true, "nolog", null); ui.updateGlobalStatus(); } } } }; lib.skill["_globalStatusRemover2"] = { /*回合类型全局状态倒计时 */ trigger: { player: "phaseEnd" }, direct: true, charlotte: true, unique: true, filter: function (event, player) { return true; }, content: function () { // game.log(666); game.globalStatus.storage.remove_timing_locked = false; } }; /*---------------------------------------------------------------以下部分为异常相关---------------------------------------------------------------*/ lib.element.player.addBuff = function () { /*添加异常状态 */ var buff = null, num = 1, //暂时没用,异常状态的持续时间应由异常状态本身决定 force = false, //暂时没用 source = _status.event.player; //暂时没用 for (var i = 0; i < arguments.length; i++) { if (typeof arguments[i] == "number") { num = arguments[i]; } else if (get.itemtype(arguments[i]) == "player" || arguments[i] == null) { source = arguments[i]; } else if (typeof arguments[i] == "string") { buff = arguments[i]; } else if (arguments[i] == true) { force = true; } } if (buff == null || !lib.buffMiao[buff]) { game.log("buff not found_1"); return; } if (!this.storage.buffArray) { this.storage.buffArray = []; } if (!this.storage.immuneBuffArray) { //Translated by deepl this.storage.immuneBuffArray = []; } var skill = lib.buffMiao[buff].skill; for (let i = 0; i < this.storage.immuneBuffArray.length; i++) { if (force == true) break; //若免疫此buff则return if (lib.buffMiao[this.storage.immuneBuffArray[i]] == lib.buffMiao[buff]) { game.log(this, "免疫" + lib.buffMiao[buff].translation + "异常"); return; } } for (let i = 0; i < this.storage.buffArray.length; i++) { //若有相同buff则return if (lib.buffMiao[this.storage.buffArray[i]] == lib.buffMiao[buff]) { return; } //移除已有同类型Buff if (lib.buffMiao[this.storage.buffArray[i]].type == lib.buffMiao[buff].type) { this.removeBuff(this.storage.buffArray[i]); } } this.addSkill(skill); this.storage.buffArray.push(buff); var strf = ""; if (force) strf = "强制"; if (source != null) { game.log(source, "令", this, strf, "获得" + lib.buffMiao[buff].translation + "异常"); } else { game.log(this, strf, "获得了" + lib.buffMiao[buff].translation + "异常"); } }; lib.element.player.removeBuff = function () { /*移去异常状态 */ var buff = null, all = false, force = false, //暂时没用 source = _status.event.player; //暂时没用 for (var i = 0; i < arguments.length; i++) { if (typeof arguments[i] == "number") { num = arguments[i]; } else if (arguments[i] == "all" || arguments[i] == "All") { all = true; } else if (get.itemtype(arguments[i]) == "player" || arguments[i] == null) { source = arguments[i]; } else if (typeof arguments[i] == "string") { buff = arguments[i]; } else if (arguments[i] == true) { force = true; } } if (all) { for (let i in lib.buffMiao) { this.removeBuff(i); } return; } if (buff == null || !lib.buffMiao[buff]) { game.log("buff not found_2"); return; } if (!this.storage.buffArray) { this.storage.buffArray = []; } var skill = lib.buffMiao[buff].skill; for (let i = 0; i < this.storage.buffArray.length; i++) { if (this.storage.buffArray[i] == buff) { this.removeSkill(skill); this.storage.buffArray.splice(i, 1); game.log(this, "移除了" + lib.buffMiao[buff].translation + "异常"); break; } } }; lib.element.player.addBuffImmune = function () { /*添加异常免疫 */ if (!this.storage.buffArray) { this.storage.buffArray = []; } if (!this.storage.immuneBuffArray) { //Translated by deepl this.storage.immuneBuffArray = []; } if (!this.storage.immuneBuffRemover) { //Translated by deepl this.storage.immuneBuffRemover = {}; } var buff = [], num = Infinity, type = "round", id = _status.event.name, // 区分不同来源的异常免疫 clear = false, //添加免疫时移除已有但免疫的异常 all = false; //免疫所有异常 for (var i = 0; i < arguments.length; i++) { if (arguments[i] == "all" || arguments[i] == "All") { all = true; } else if (arguments[i] == "phase") { type = "phase"; } else if (arguments[i] == "round") { type = "round"; } else if (arguments[i] == true) { clear = true; } else if (typeof arguments[i] == "number") { num = arguments[i]; } else if (typeof arguments[i] == "object") { for (var j = 0; j < arguments[i].length; j++) { buff.push(arguments[i][j]); } } else if (typeof arguments[i] == "string") { buff.push(arguments[i]); } } if (all == true) { for (let i in lib.buffMiao) { this.addBuffImmune(i, clear, num, type); } return; } var flag = true; for (var i = 0; i < buff.length; i++) { b = buff[i]; flag = true; if (b == null || !lib.buffMiao[b]) { game.log("buff not found_3", b); return; } if (clear == true) { for (let i = 0; i < this.storage.buffArray.length; i++) { if (lib.buffMiao[this.storage.buffArray[i]] == lib.buffMiao[b]) { this.removeBuff(b); break; } } } //若已免疫此buff则continue for (let i = 0; i < this.storage.immuneBuffArray.length; i++) { if (lib.buffMiao[this.storage.immuneBuffArray[i]] == lib.buffMiao[b]) { var n = this.storage.immuneBuffArray[i]; if (this.storage.immuneBuffRemover[b].type != type || this.storage.immuneBuffRemover[b].num >= num) { flag = false; break; } } } if (flag == false) continue; if (!this.storage.immuneBuffArray.includes(b)) this.storage.immuneBuffArray.push(b); this.storage.immuneBuffRemover[b] = {}; this.storage.immuneBuffRemover[b].num = num; this.storage.immuneBuffRemover[b].type = type; this.storage.immuneBuffRemover[b].id = id; if (_status.event.getParent()["triggername"] == "phaseBegin" && type == "phase") { /*回合开始阶段修正 */ this.storage.immuneBuffRemover[b].num += 1; } var str = "获得" + lib.buffMiao[b].translation + "免疫"; if (num != Infinity) { str = str + '' + num; if (type == "round") { str = str + "轮"; } else { str = str + "回合"; } } game.log(this, str); this.markSkill("zioy_buff_mianyi"); } }; lib.element.player.removeBuffImmune = function () { /*移除异常免疫 */ if (!this.storage.buffArray) { this.storage.buffArray = []; } if (!this.storage.immuneBuffArray) { //Translated by deepl this.storage.immuneBuffArray = []; } if (!this.storage.immuneBuffRemover) { //Translated by deepl this.storage.immuneBuffRemover = {}; } var buff = [], source = null; for (var i = 0; i < arguments.length; i++) { if (arguments[i] == "all" || arguments[i] == "All") { for (let i in lib.buffMiao) { this.removeBuffImmune(i); } return; } else if (typeof arguments[i] == "object") { for (var j = 0; j < arguments[i].length; j++) { buff.push(arguments[i][j]); } } else if (get.itemtype(arguments[i]) == "player" || arguments[i] == null) { source = arguments[i]; } else if (typeof arguments[i] == "string") { buff.push(arguments[i]); } else if (arguments[i] == true) { force = true; } } var flag = true; for (var i = 0; i < buff.length; i++) { b = buff[i]; flag = true; if (b == null || !lib.buffMiao[b]) { game.log("buff not found_4"); return; } //若未免疫此buff则continue for (let i = 0; i < this.storage.immuneBuffArray.length; i++) { if (lib.buffMiao[this.storage.immuneBuffArray[i]] == lib.buffMiao[b]) { flag = false; break; } } if (flag == true) continue; for (var i = 0; i < this.storage.immuneBuffArray.length; i++) { if (this.storage.immuneBuffArray[i] == b) this.storage.immuneBuffArray.splice(i, 1); } game.log(this, "失去" + lib.buffMiao[b].translation + "免疫"); } if (this.storage.immuneBuffArray.length == 0) this.unmarkSkill("zioy_buff_mianyi"); }; lib.skill._miao_removeBuffImmune1 = { /*轮次类型计数移除异常免疫 */ trigger: { global: "roundStart" }, filter: function (card, player, target) { return player.storage.immuneBuffRemover; }, direct: true, charlotte: true, unique: true, content: function () { for (var i in player.storage.immuneBuffRemover) { if (player.storage.immuneBuffRemover[i].type == "round") { player.storage.immuneBuffRemover[i].num -= 1; if (player.storage.immuneBuffRemover[i].num == 0) { flag = true; player.removeBuffImmune(i); } } } } }; lib.skill._miao_removeBuffImmune2 = { /*回合类型计数移除异常免疫 */ trigger: { global: "phaseBegin" }, direct: true, charlotte: true, unique: true, filter: function (event, player) { return player.storage.immuneBuffRemover; }, content: function () { for (var i in player.storage.immuneBuffRemover) { if (player.storage.immuneBuffRemover[i].type == "phase") { player.storage.immuneBuffRemover[i].num -= 1; if (player.storage.immuneBuffRemover[i].num == 0) { player.removeBuffImmune(i); } } } } }; lib.buffMiao = { /*存储所有异常状态信息 */ "shuimian": { translation: "睡眠", skill: "zioy_buff_shuimian", type: "control", intro: "始终跳过出牌阶段,每轮游戏开始时有25*n%概率移除此状态,受到伤害时立即移除此状态。(n为异常状态已持续轮数)" }, "bingdong": { translation: "冰冻", skill: "zioy_buff_bingdong", type: "control", intro: "跳过判定阶段,摸牌阶段,出牌阶段与弃牌阶段,受到的所有伤害-1,回合开始阶段有15*n%概率移除此状态。受到火属性伤害时立即移除此状态。(n为异常状态已持续轮数)" }, "ranshao": { translation: "燃烧", skill: "zioy_status_ranshao", type: "damage", intro: "balabala" } }; lib.skill["zioy_buff"] = { /*储存异常状态对应技能,如写正常技能一般即可 */ subSkill: { mianyi: { mark: true, marktext: "免疫", intro: { name: "免疫以下异常状态", mark: function (dialog, storage, player) { var flag = 0, str = ""; for (var i = 0; i < player.storage.immuneBuffArray.length; i++) { a = player.storage.immuneBuffArray[i]; if (player.storage.immuneBuffRemover[a].num != Infinity) { buff_name = lib.buffMiao[a].translation + ":" + player.storage.immuneBuffRemover[a].num; } else { buff_name = lib.buffMiao[a].translation + ":∞"; } if (player.storage.immuneBuffRemover[a].type == "round") { buff_name = buff_name + "轮"; } else { buff_name = buff_name + "回合"; } if (flag % 2 == 0 && flag != 0) str += "
"; else { if (flag != 0) str += ","; } flag++; str += buff_name; } return str; } } }, shuimian: { mark: true, marktext: "睡眠", init: function (player) { player.storage.shuimian_count = 0; }, trigger: { player: "phaseUseBegin" }, priority: 3014745327, direct: true, filter: function () { return true; }, content: function () { trigger.cancel(null, null, "notrigger"); }, group: ["zioy_buff_shuimian_awake1", "zioy_buff_shuimian_awake2"], intro: { name: "睡眠", mark: function (dialog, storage, player) { n = player.storage.shuimian_count + 1; return "始终跳过出牌阶段,下轮游戏开始时有" + 25 * n + "%概率移除此状态,受到伤害后立即移除此状态。"; } } }, shuimian_awake1: { trigger: { player: "damageEnd" }, priority: -301745327, direct: true, filter: function () { return true; }, content: function () { player.removeBuff("shuimian"); } }, shuimian_awake2: { trigger: { global: "roundStart" }, priority: -3456301727, direct: true, filter: function () { return true; }, content: function () { player.storage.shuimian_count++; if (player.storage.shuimian_count * 0.25 > Math.random()) player.removeBuff("shuimian"); } } } }; /*---------------------------------------------------------------以下部分为强化相关---------------------------------------------------------------*/ lib.element.player.changeEnhancement = function () { /*获得/失去强化 */ var enhancements = [], num = 1, source = _status.event.player, forced = false, strlog = "", flag = false; // nolog = false; //最后不game.log(xxxxx) for (var i = 0; i < arguments.length; i++) { if (arguments[i] == "nolog") { nolog = true; } else if (arguments[i] == "all") { enhancements = ["attack", "miss", "defend", "hit", "strike"]; } else if (typeof arguments[i] == "boolean") { forced = arguments[i]; } else if (typeof arguments[i] == "number") { num = arguments[i]; } else if (get.itemtype(arguments[i]) == "player" || arguments[i] == null) { source = arguments[i]; } else if (typeof arguments[i] == "string") { enhancements.push(arguments[i]); } else if (typeof arguments[i] == "object") { for (var j = 0; j < arguments[i].length; j++) { enhancements.push(arguments[i][j]); } } } if (num == 0) { return; } if (this.storage.enhancementArray["locked"] == true && forced == false) { game.log(this, "的强化已锁定"); return; } if (num > 0) { strlog = "获得了" + num + '级'; } else if (num < 0) { strlog = "失去了" + -num + '级'; } for (var i = 0; i < enhancements.length; ++i) { var e = enhancements[i]; if (this.storage.enhancementArray[e] || this.storage.enhancementArray[e] == 0) { this.storage.enhancementArray[e] += num; let s; switch (e) { case "attack": s = "攻击"; break; case "defend": s = "防御"; break; case "miss": s = "闪避"; break; case "hit": s = "命中"; break; case "strike": s = "暴击"; break; case "draw": s = "摸牌"; break; } if (flag) s = ',' + s; flag = true; if (this.storage.enhancementArray[e] > 6) { this.storage.enhancementArray[e] = 6; } if (this.storage.enhancementArray[e] < -6) { this.storage.enhancementArray[e] = -6; } this.storage["miao_enhancement_mark_" + e] = this.storage.enhancementArray[e]; this.storage["miao_enhancement_mark_" + e + "1"] = this.storage.enhancementArray[e]; // if (this.storage.enhancementArray[e] > 0) { // this.markSkill("miao_enhancement_mark_" + e + "1"); // } else if (this.storage.enhancementArray[e] == 0) { // this.unmarkSkill("miao_enhancement_mark_" + e); // this.unmarkSkill("miao_enhancement_mark_" + e + "1"); // } else if (this.storage.enhancementArray[e] < 0) { // this.markSkill("miao_enhancement_mark_" + e); // } strlog = strlog + s; } } strlog = strlog + "强化"; game.log(this, strlog); flag = true; for (var i in this.storage.enhancementArray) { if (!["attack", "miss", "defend", "hit", "strike"].includes(i)) continue; if (this.storage.enhancementArray[i] != 0) { flag = false; this.markSkill("miao_enhancement_mark_mark"); break; } } if (flag) this.unmarkSkill("miao_enhancement_mark_mark"); }; lib.element.player.lockEnhancement = function () { /*锁定强化 */ var num = -1, //锁定回合数 source = _status.event.player, forced = false, type = "round", strlog = ""; for (var i = 0; i < arguments.length; i++) { if (arguments[i] == "nolog") { nolog = true; } else if (typeof arguments[i] == "boolean") { forced = arguments[i]; } else if (typeof arguments[i] == "number") { num = arguments[i]; } else if (get.itemtype(arguments[i]) == "player" || arguments[i] == null) { source = arguments[i]; } else if (typeof arguments[i] == "string") { type = arguments[i]; } } if (num < 0 || (type == this.storage.enhancementArray["locked_type"] && num < this.storage.enhancementArray["locked_end"])) { return; } this.storage.enhancementArray["locked"] = true; this.storage.enhancementArray["locked_end"] = num; // game.log(_status.event.getParent().name); // for(var i in _status.event.getParent()){ // game.log(i,':',_status.event.getParent()[i]); // } if (_status.event.getParent()["triggername"] == "phaseBegin" && type == "phase") { /*回合开始阶段修正 */ this.storage.enhancementArray["locked_end"] += 1; } this.storage.enhancementArray["locked_type"] = type; this.markSkill("miao_enhancement_mark_locked"); strlog = strlog + "已锁定强化"; this.addSkill("miao_enhancement_locked"); this.addSkill("miao_enhancement_locked2"); strlog = strlog + num + ""; if (type == "round") { strlog = strlog + "轮"; } else { strlog = strlog + "回合"; } game.log(this, strlog); }; lib.element.player.unlockEnhancement = function () { /*解锁强化 */ var source = _status.event.player, forced = false, strlog = ""; for (var i = 0; i < arguments.length; i++) { if (arguments[i] == "nolog") { nolog = true; } else if (typeof arguments[i] == "boolean") { forced = arguments[i]; } else if (get.itemtype(arguments[i]) == "player" || arguments[i] == null) { source = arguments[i]; } } if (this.storage.enhancementArray["locked"] == false) { return; } // if (num > 0) { // strlog = "获得了" + num + '级'; // } else if (num < 0) { // strlog = "失去了" + -num + '级'; // } this.storage.enhancementArray["locked"] = false; this.storage.enhancementArray["locked_end"] = -1; this.storage.enhancementArray["locked_type"] = null; this.unmarkSkill("miao_enhancement_mark_locked"); this.removeSkill("miao_enhancement_locked"); this.removeSkill("miao_enhancement_locked2"); strlog = strlog + "已解锁强化"; game.log(this, strlog); }; lib.element.player.clearEnhancement = function () { /*清空强化 */ var nolog = null, source = _status.event.player, forced = false; for (var i = 0; i < arguments.length; i++) { if (arguments[i] == "nolog") { nolog = "nolog"; } else if (typeof arguments[i] == "boolean") { forced = arguments[i]; } else if (get.itemtype(arguments[i]) == "player" || arguments[i] == null) { source = arguments[i]; } } if (this.storage.enhancementArray["locked"] == true && !forced) { game.log(this, "已锁定强化"); return; } c = ["attack", "miss", "defend", "hit", "strike"]; for (var l = 0; l < c.length; ++l) { i = c[l]; if (nolog != null) this.changeEnhancement(i, -this.storage.enhancementArray[i], source, forced, nolog); this.changeEnhancement(i, -this.storage.enhancementArray[i], source, forced); } }; lib.skill._miao_enhancement_init = { /*游戏开始时设置player.storage.enhancementArray */ // addplayer时会出错,需要注意 unique: true, trigger: { global: "phaseBefore", player: ["enterGame", "showCharacterAfter"] }, priority: 70582140, forced: true, locked: true, direct: true, filter: function (event, player) { return event.name != "phase" || game.phaseNumber == 0 || !player.storage.enhancementArray; }, content: function () { player.storage.enhancementArray = { attack: 0, //攻击力 defend: 0, //防御力 miss: 0, //闪避率 hit: 0, //命中率 strike: 0, //暴击率,目前没用 draw: 0, //摸牌,目前没用 locked: false, locked_end: -1, locked_type: null }; } }; lib.skill._miao_enhancement_attack = { /*根据攻击与防御强化进行伤害修正 */ trigger: { source: "damageBegin1" }, priority: -70582140, forced: true, filter: function (card, player, target) { return true; }, direct: true, charlotte: true, unique: true, content: function () { var numDamage = trigger.num, numAtk = player.storage.enhancementArray["attack"], numDfd = trigger.player.storage.enhancementArray["defend"]; var dmm = numAtk - numDfd; //Damage modifier multiplier // game.log(player,trigger.player,dmm); if (dmm > 0) { numDamage *= 0.5 * dmm + 1; numDamage = parseInt(numDamage); } else if (dmm < 0) { numDamage *= 1 / (-dmm * 0.5 + 1); numDamage = Math.ceil(numDamage); } trigger.num = numDamage; } }; lib.skill._miao_enhancement_miss = { /*根据命中与闪避强化判定是否闪避 */ trigger: { player: ["chooseToRespondBegin", "chooseToUseBegin"] }, filter: function (event, player) { if (event.responded) return false; if (event.miss_skill_miaomiao) return false; if (!event.filterCard || !event.filterCard({ name: "shan" }, player, event)) return false; if (event.name == "chooseToRespond" && !lib.filter.cardRespondable({ name: "shan" }, player, event)) return false; return true; }, priority: 70582140, forced: true, direct: true, charlotte: true, unique: true, content: function () { event.miss_skill_miaomiao = true; var numMis = player.storage.enhancementArray["miss"], numHit = trigger.player.storage.enhancementArray["hit"]; var num = numMis - numHit; if (num <= 0) return; else { num = 0.05 * num; } if (num > Math.random()) { trigger.untrigger(); trigger.set("responded", true); trigger.result = { bool: true, card: { name: "shan", isCard: false } }; } } }; lib.skill._miao_enhancement_strike = { /*根据攻击与防御强化进行伤害修正 */ trigger: { source: "damageBegin1" }, priority: -70582140, forced: true, filter: function (card, player, target) { return true; }, direct: true, charlotte: true, unique: true, content: function () { var numDamage = trigger.num, num = player.storage.enhancementArray["strike"]; if (num * 0.05 > Math.random()) { trigger.num *= 2; game.log(player, "暴击了"); } } }; lib.skill._miao_enhancement_locked = { /*轮次类型计数移除强化锁定 */ trigger: { global: "roundStart" }, filter: function (card, player, target) { return true; }, direct: true, charlotte: true, unique: true, content: function () { if (!player.storage.enhancementArray || player.storage.enhancementArray.locked_type != "round") { return; } player.storage.enhancementArray.locked_end -= 1; if (player.storage.enhancementArray.locked_end == 0) { player.unlockEnhancement(); } } }; lib.skill._miao_enhancement_locked2 = { /*回合类型计数移除强化锁定 */ trigger: { global: "phaseBegin" }, direct: true, charlotte: true, unique: true, filter: function (event, player) { return true; }, content: function () { if (!player.storage.enhancementArray || player.storage.enhancementArray.locked_type != "phase") { return; } player.storage.enhancementArray.locked_end -= 1; if (player.storage.enhancementArray.locked_end == 0) { player.unlockEnhancement(); } } }; lib.skill.miao_enhancement_mark = { /*强化的mark,指示用,CPU is cheap,memory is cheap,life is beautiful */ subSkill: { mark: { mark: true, marktext: "强化", intro: { name: "强化等级", mark: function (dialog, storage, player) { var str = "", count = 0; for (var i in player.storage.enhancementArray) { if (!["attack", "miss", "defend", "hit", "strike"].includes(i) || player.storage.enhancementArray[i] == 0) continue; var e = i; var s = ""; count++; if (count != 1 && (count - 1) % 3 == 0) { str = str + "
"; } else if (count != 1) { str = str + ","; } switch (e) { case "attack": s = "攻击"; break; case "defend": s = "防御"; break; case "miss": s = "闪避"; break; case "hit": s = "命中"; break; case "strike": s = "暴击"; break; case "draw": s = "摸牌"; break; } if (player.storage.enhancementArray[i] > 0) { s = s + "+"; } s = s + player.storage.enhancementArray[i]; str = str + s; } return str; } } }, attack: { mark: true, marktext: "攻击", intro: { name: "攻击" } }, defend: { mark: true, marktext: "防御", intro: { name: "防御" } }, miss: { mark: true, marktext: "闪避", intro: { name: "闪避" } }, hit: { mark: true, marktext: "命中", intro: { name: "命中" } }, strike: { mark: true, marktext: "暴击", intro: { name: "暴击" } }, draw: { mark: true, marktext: "摸牌", intro: { name: "摸牌" } }, attack1: { mark: true, marktext: "攻击+", intro: { name: "攻击" } }, defend1: { mark: true, marktext: "防御+", intro: { name: "防御" } }, miss1: { mark: true, marktext: "闪避+", intro: { name: "闪避" } }, hit1: { mark: true, marktext: "命中+", intro: { name: "命中" } }, strike1: { mark: true, marktext: "暴击+", intro: { name: "暴击" } }, draw1: { mark: true, marktext: "摸牌+", intro: { name: "摸牌" } }, locked: { mark: true, marktext: "锁强", intro: { name: "已锁定强化等级", mark: function (dialog, storage, player) { var str; if (player.storage.enhancementArray["locked_type"] == "round") str = " 轮"; else { str = " 回合"; } return "剩余 " + player.storage.enhancementArray["locked_end"] + str; } } } } }; /*---------------------------------------------------------------以下部分为武将势力相关---------------------------------------------------------------*/ game.AddGroupNatureMiao = function (name, translation, mapping) { /*设定势力的函数,from活动武将 */ if (!mapping || !Array.isArray(mapping) || mapping.length != 3) mapping = [199, 21, 133]; gradient = [mapping, mapping]; var y = "(" + mapping[0] + "," + mapping[1] + "," + mapping[2]; var y1 = y + ",1)", y2 = y + ")"; var s = document.createElement("style"); var l; //omg l = ".player .identity[data-color='miao_" + name + "'],"; l += "div[data-nature='miao_" + name + "'],"; l += "span[data-nature='miao_" + name + "'] {text-shadow: black 0 0 1px,rgba" + y1 + " 0 0 2px,rgba" + y1 + " 0 0 5px,rgba" + y1 + " 0 0 10px,rgba" + y1 + " 0 0 10px}"; l += "div[data-nature='miao_" + name + "m'],"; l += "span[data-nature='miao_" + name + "m'] {text-shadow: black 0 0 1px,rgba" + y1 + " 0 0 2px,rgba" + y1 + " 0 0 5px,rgba" + y1 + " 0 0 5px,rgba" + y1 + " 0 0 5px,black 0 0 1px;}"; l += "div[data-nature='miao_" + name + "mm'],"; l += "span[data-nature='miao_" + name + "mm'] {text-shadow: black 0 0 1px,rgba" + y1 + " 0 0 2px,rgba" + y1 + " 0 0 2px,rgba" + y1 + " 0 0 2px,rgba" + y1 + " 0 0 2px,black 0 0 1px;}"; s.innerHTML = l; document.head.appendChild(s); if (gradient && Array.isArray(gradient) && Array.isArray(gradient[0]) && gradient[0].length == 3) { var str = "", st2 = []; for (var i = 0; i < gradient.length; i++) { str += ",rgb(" + gradient[i][0] + "," + gradient[i][1] + "," + gradient[i][2] + ")"; if (i < 2) st2[i] = "rgb(" + gradient[i][0] + "," + gradient[i][1] + "," + gradient[i][2] + ")"; } var tenUi = document.createElement("style"); tenUi.innerHTML = ".player>.camp-zone[data-camp='" + name + "']>.camp-back {background: linear-gradient(to bottom" + str + ");}"; tenUi.innerHTML += ".player>.camp-zone[data-camp='" + name + "']>.camp-name {text-shadow: 0 0 5px " + st2[0] + ", 0 0 10px " + st2[1] + ";}"; document.head.appendChild(tenUi); } //lib.group.push(n); lib.translate[name] = translation; lib.groupnature[name] = "miao_" + name; }; game.AddGroupNatureMiao("daqin", "秦", [255, 165, 0]); }, precontent: function () {}, help: {}, config: {}, package: { character: { character: { "zioy_xixuegui": ["male", "qun", 4, ["zioy_xixue"], []], "zioy_yilong": ["female", "qun", "2/2/2", ["zioy_shiyi"], []], "zioy_shuijinxiezi": ["male", "qun", 3, ["zioy_jinjia", "zioy_jinsui"], []], "zioy_dreamaker": ["female", "jin", 3, ["zioy_chenmeng", "zioy_xiaoxiang"], []], "zioy_drugdoctor": ["male", "qun", 4, ["zioy_heiyi"], []], "zioy_zhigaotian": ["female", "shen", 3, ["zioy_eye", "zioy_damie"], ["hiddenSkill"]], "zioy_huajian": ["female", "jin", "3/7/4", ["zioy_huashou", "zioy_longyue"], []], "zioy_renturtle": ["male", "wei", "1/1/10", ["zioy_jike"], []], "zioy_shenxianxiang": ["female", "shu", "3/4/2", ["zioy_happyNewYear"], ["des:新春特典"]], "zioy_yinlong": ["male", "wu", 4, ["zioy_qianlong", "zioy_jianlong", "zioy_kanglong2"], ["des:新春特典"]], "zioy_peiki": ["male", "shu", 3, ["zioy_yixiang", "zioy_chuixing", "zioy_yuyan"], ["des:新春特典"]], "zioy_xielingyun": ["female", "daqin", "3/5", ["zioy_zhijin", "zioy_xuanzhuan"], []], "zioy_heibai": ["male", "qun", 4, ["zioy_leiye1", "zioy_mosha", "zioy_shuangsha", "zioy_lieying"], ["des:新春特典"]], "zioy_sose": ["male", "wei", "1/1/7", ["zioy_wrjzc", "zioy_zsyhj"], ["des:新春特典"]], "zioy_pqsj": ["none", "qun", 1, ["zioy_weixiang"], []], "zioy_nianshou": ["none", "shu", 1, ["zioy_fansheng", "zioy_nianxi"], ["des:新春特典"]], "zioy_jinu": ["none", "qun", 3, ["zioy_jifou"], []], "zioy_xiaozhenhe": ["male", "wei", 3, ["zioy_liubo", "zioy_shuiyue"], []], "zioy_gaiying": [null, null, "3/3/2", ["zioy_moying", "zioy_yingdun", "zioy_jianying"], ["hiddenSkill"]], "zioy_diana": ["female", "wei", 4, ["zioy_yuexiang", "zioy_douzhuan"], ["forbidai"]], "zioy_senjianmeng": ["female", "jin", "2/9/3", ["zioy_xiantong", "zioy_xiane"], []], "zioy_yenglish": ["male", "wei", "4/6", ["zioy_wuya", "zioy_sheji", "zioy_puai"], []], "zioy_xingjun": ["male", "qun", 5, ["zioy_xingchi"], []], "zioy_titan": ["male", "wu", "4/4/4", ["zioy_cangzhen"], []], "zioy_alps": ["female", "jin", 5, ["zioy_shangqin", "zioy_hanshou"], ["hiddenSkill"]], "zioy_xukongchong": ["female", "jin", 5, ["zioy_longzi", "zioy_yingyuan"], ["hiddenSkill"]], "zioy_muxi": ["female", "jin", "-3/3", ["zioy_shuohui"], []], "zioy_kailuer": ["female", "qun", 4, ["zioy_hey", "zioy_ya", "zioy_ha"], []], "zioy_nike": ["none", "shen", 5, ["zioy_cuiyi", "zioy_shihong", "zioy_huangyi", "zioy_shulin"], []], "zioy_bailu": ["female", "shen", 2, ["zioy_hexuchongxiang", "zioy_yuezhuiyunwei"], ["forbidai"]], test: ["male", "", 3, ["zioy_t"], []], "zioy_lanchesite": ["none", "shu", "4/4/1", ["zioy_yujin", "zioy_xumie"], []], "zioy_b7chuhaoji": ["female", "qun", 3, ["zioy_v07yuxie", "zioy_f42chongzai"], []], "zioy_badun": ["male", "qun", "8/8/8", ["zioy_yuemai"], []], "zioy_nemesis": ["female", "wu", "4/7", ["zioy_pinghuqiuyue", "zioy_yurangzhijian", "zioy_liechenyuyou_water"], []], "zioy_osiris": ["male", "shu", 4, ["zioy_zhuxingwuchang", "zioy_zhufashengmie", "zioy_yongyeqingxiao", "zioy_liechenyuyou_fire"], []], "zioy_morana": ["female", "jin", 6, ["zioy_lanzhiyuane", "zioy_liuzhenxiongxiang", "zioy_yinhuxiaowu"], ["hiddenSkill"]], "zioy_guanghan": ["female", "wu", "2/9", ["zioy_nongying", "zioy_chanjuan"], ["des:2023中秋"]], "zioy_xuanhu": ["male", "wei", 1, ["zioy_leimingqiangu", "zioy_zhoumingchuanxuan"], []], "zioy_xiyueying": ["double", "shen", 4, ["zioy_riyuexingkong"], []], "zioy_purangsigai": ["none", "wu", 4, ["zioy_jisuishengjin"], ["des:plus黄盖"]] }, translate: { "zioy_xixuegui": "弗拉基米尔", "zioy_yilong": "岩龙", "zioy_shuijinxiezi": "斯卡纳", "zioy_dreamaker": "长野原神乐", "zioy_drugdoctor": "摆渡人", "zioy_zhigaotian": "至高天", "zioy_huajian": "今春花见", "zioy_renturtle": "忍龟", "zioy_shenxianxiang": "神仙香", "zioy_yinlong": "胤龙", "zioy_peiki": "派琦", "zioy_xielingyun": "谢灵运", "zioy_heibai": "除夕", "zioy_sose": "SO-SE", "zioy_pqsj": "皮丘什金", "zioy_nianshou": "年", "zioy_jinu": "祭奴", "zioy_xiaozhenhe": "肖郑鹤", "zioy_gaiying": "该隐", "zioy_diana": "黛安娜", "zioy_senjianmeng": "森见梦", "zioy_yenglish": "英格力士", "zioy_xingjun": "行钧", "zioy_titan": "泰坦", "zioy_alps": "阿尔卑斯", "zioy_xukongchong": "虚空虫王", "zioy_muxi": "暮曦", "zioy_kailuer": "凯璐儿", "zioy_nike": "籁寂", "zioy_bailu": "白鹭", test: "测试狗狗", "zioy_lanchesite": "兰彻斯特", "zioy_b7chuhaoji": "B7初号机", "zioy_badun": "巴顿", "zioy_nemesis": "涅默汐斯", "zioy_osiris": "奥曦里斯", "zioy_morana": "莫洛娜", "zioy_guanghan": "广寒", "zioy_xuanhu": "翾狐", "zioy_xiyueying": "曦月吟", "zioy_purangsigai": "普琅斯盖" } }, card: { card: { "zioy_yueguang": { type: "equip", subtype: "equip1", distance: { attackFrom: -1 }, vanish: true, skills: [], enable: true, selectTarget: -1, filterTarget: function (card, player, target) { return target == player; }, modTarget: true, allowMultiple: false, content: function () { if (cards.length && get.position(cards[0], true) == "o") target.equip(cards[0]); }, toself: true, fullimage: true } }, translate: { "zioy_yueguang": "月光", "zioy_yueguang_info": "这把武器没有除攻击范围外的其他增益" }, list: [] }, skill: { skill: { "zioy_xixue": { enable: "phaseUse", usable: 1, check: function () { return true; }, filterCard: true, filterTarget: function (card, player, target) { if (game.roundNumber >= player.storage.lastRoundNum + 2) return true; //if(target.storage.last == 3) return false; return player.storage.last != target && player != target; }, content: function () { player.storage.last = target; player.storage.lastRoundNum = game.roundNumber; target.loseHp(); player.recover(); player.update(); }, ai: { order: 9, result: { target: function (player, target) { return target.hp - target.maxHp - 1; return get.damageEffect(target, player); }, player: 1 }, threaten: 2 }, "_priority": 0 }, "zioy_shiyi": { mod: { globalTo: function (from, to, distance) { return distance + to.hujia; }, globalFrom: function (from, to, distance) { return distance - from.hujia; }, maxHandcardBase: function (player, num) { return player.hujia + num; } }, trigger: { source: "damageBegin1" }, filter: function (event, player) { return true; }, forced: true, content: function () { player.changeHujia(1); //player.update(); }, ai: { damageBonus: true }, "_priority": 0 }, "zioy_jinjia": { trigger: { global: "roundStart" }, filter: function (card, player, target) { //if(target.storage.last == 3) return false; return !player.hujia; }, direct: true, content: function () { player.changeHujia(1); }, "_priority": 0 }, "zioy_jinsui": { enable: "phaseUse", check: function () { return true; }, filter: function (card, player, target) { //if(target.storage.last == 3) return false; return player.hujia; }, filterTarget: function (card, player, target) { //if(target.storage.last == 3) return false; return player != target && player != target; }, content: function () { target.storage.jss = player; target.addTempSkill("zioy_jinsui2"); player.hujia = 0; player.update(); }, "_priority": 0 }, "zioy_jinsui2": { trigger: { player: "damageEnd" }, direct: true, content: function () { /*target.storage.jss.recover(); target.storage.jss.draw(); target.storage.jss.changeHujia(1); */ player.turnOver(); }, "_priority": 0 }, "zioy_chenmeng": { trigger: { global: "damageEnd" }, marktext: "尘", intro: { name: "尘梦", content: "mark", onunmark: true }, init: function (player) { player.storage.cmnum = 0; }, forced: true, filter: function (event, player) { return event.source && !event.source.hasSkill("zioy_chenmeng1") && event.source != player; }, content: function () { player.gainMaxHp(); trigger.source.loseMaxHp(); player.storage.cmnum++; trigger.source.storage.chenmengsource = player; trigger.source.addSkill("zioy_chenmeng1"); trigger.source.addMark("zioy_chenmeng"); }, "_priority": 0 }, "zioy_chenmeng1": { trigger: { player: "damageEnd" }, filter: function (event, player) { return event.source == player.storage.chenmengsource; }, content: function () { player.gainMaxHp(); player.storage.chenmengsource.loseMaxHp(); player.storage.chenmengsource.recover(); player.loseHp(); player.storage.chenmengsource.cmnum--; player.removeSkill(event.name); player.removeMark("zioy_chenmeng"); player.storage.chenmengsource.gainPlayerCard(true, player, "h"); }, "_priority": 0 }, "zioy_eye": { trigger: { source: "damageBefore" }, forced: true, charlotte: true, filter: function (event, player) { return event.player != player; }, content: function () { trigger.cancel(); trigger.player.hp -= trigger.num; trigger.player.maxHp -= trigger.num; trigger.player.update(); if (trigger.player.hp <= 0) trigger.player.dying(); player.line(trigger.player, "red"); }, "_priority": 0 }, "zioy_damie": { trigger: { global: "roundStart" }, filter: function (event, player) { return game.dead.length > 0; }, forced: true, check: function (trigger) { return trigger.hasSkill("test_control1"); }, content: function () { "step 0" player .chooseTarget(1, true, "抹除一名角色的体力", function (card, player, target) { return target != player; }) .set("ai", function (target) { var player = _status.event.player; return -1; }); "step 1" target = result.targets[0]; target.hp = 0; target.maxHp = 0; target.update(); }, ai: { order: 8, result: { target: function (player, target) { if (ui.selected.targets.length == 0) { return -3; } else { return get.effect(target, { name: "juedou" }, ui.selected.targets[0], target); } } }, expose: 0.4, threaten: 3 }, "_priority": 0 }, "zioy_heiyi": { trigger: { target: "shaBefore" }, priority: 15, filter: function (event, player) { return true; }, direct: true, derivation: ["zioy_duyi"], content: function () { /*player.draw(); if(trigger.player == player)trigger.target.addSkill('zioy_duyi'); else */ trigger.player.addSkill("zioy_duyi"); }, ai: { "maixie_defend": true, expose: 0.4 }, "_priority": 1500 }, "zioy_duyi": { trigger: { player: "phaseBegin" }, logTarget: "player", filter: function () { return true; }, direct: true, content: function () { if (player.hp != 1) player.loseHp(); else player.loseMaxHp(); }, "_priority": 0 }, "zioy_eji": { "_priority": 0 }, "zioy_huashou": { trigger: { player: "phaseBegin" }, logTarget: "player", filter: function () { return true; }, direct: true, intro: { name: "花狩", content: "mark", onunmark: true }, content: function () { //player.draw(); var targets = game.players; var ts1 = []; var ts2 = []; //var p = player.identity; //if(p == 'zhu') p = 'zhong'; for (var i = 0; i < targets.length; ++i) { //if(targets[i].identity == p) return false; if (get.distance(player, targets[i], "attack") <= 1 && get.attitude(player, targets[i]) <= 0) { ts2.push(targets[i]); } if (get.attitude(player, targets[i]) <= 0 /*|| get.attitude(targets[i],player)<=0*/) { ts1.push(targets[i]); } } var target = ts1.randomGet(); //if(ts2.length > 0) target = ts2.randomGet(); player.logSkill(event.name, target); var arr = target.getCards("hej"); //player.draw(); var n = arr.length; var cards = []; while (n) { var i = Math.floor(Math.random() * n--); cards.push(arr.splice(i, 1)[0]); } var l = cards.length; while (l % 3 != 0) l--; var sum = l / 3; while (sum > 0) { cards.splice(0, 1); sum--; l--; } player.line(target, "red"); target.addToExpansion(cards, "giveAuto", target).gaintag.add("zioy_huashou2"); target.addTempSkill("zioy_huashou2"); target.storage.huashouSource = player; }, "_priority": 0 }, "zioy_huashou2": { trigger: { global: "phaseEnd" }, group: ["zioy_huashou3"], forced: true, content: function () { var cards = player.getExpansions("zioy_huashou2"); if (cards.length) player.gain(cards, "draw"); player.removeSkill("zioy_huashou2"); }, ai: { effect: { target: function (card, player, target, current) { if (card.name == "sha") { return [1, -2]; } } } }, intro: { mark: function (dialog, storage, player) { var cards = player.getExpansions("zioy_huashou2"); if (player.isUnderControl(true) || player.storage.huashouSource.isUnderControl(true)) dialog.addAuto(cards); else return "共有" + get.cnNumber(cards.length) + "张牌"; }, markcount: "expansion" }, "_priority": 0 }, "zioy_huashou3": { trigger: { player: "damageEnd" }, filter: function (event, player) { return event.source == player.storage.huashouSource; }, forced: true, content: function () { "step 0" player.storage.huashouSource.addMark("zioy_longyue"); if (player.storage.huashouSource.countMark("zioy_longyue") % 4 == 0) player.storage.huashouSource.gainMaxHp(); var cards = player.getExpansions("zioy_huashou2"); if (cards.length) player.storage.huashouSource.gain(cards, "draw"); player.removeSkill("zioy_huashou2"); "step 1" var num = player.maxHp - player.hp; player.damage(num, player.storage.huashouSource); if (parseInt(num / 2) > player.maxHp - player.hp) { player.changeHujia(1 - player.hujia); } player.storage.huashouSource.recover(parseInt(num / 2)); }, "_priority": 0 }, "zioy_longyue": { trigger: { player: "phaseUseBefore" }, group: ["zioy_longyue2", "zioy_longyue3"], mod: { maxHandcardBase: function (player, num) { var n = player.countMark("zioy_longyue"); if (n % 2 == 1) n--; return num + n / 2; }, attackFrom: function (from, to, distance) { if (from.countMark("zioy_longyue") > 0 && from.getEquip("zioy_yueguang")) return distance - 1; } }, mark: true, intro: { content: function (storage, player) { var info = lib.skill.zioy_longyue.getInfo(player); return ( '
已获得提升:
月光的攻击范围:' + info[0] + "
手牌上限:" + info[1] + "
摸牌阶段摸牌数:" + info[2] + "
体力上限:" + info[3] + "
" ); } }, getInfo: function (player) { if (!player.countMark("zioy_longyue")) return [0, 0, 0, 0]; var info = [0, 0, 0, 0]; if (player.countMark("zioy_longyue") > 0) info[0] = 1; var n = player.countMark("zioy_longyue"); info[1] = parseInt(n / 2); info[2] = parseInt(n / 3); info[3] = parseInt(n / 4); return info; }, filter: function (event, player) { if (player.getEquip("zioy_yueguang")) return false; /*for(var card of event.cards2){ if(card == player.storage.yueguang) return true; } return false;*/ return true; }, init: function (player) { //player.addMark('zioy_longyue'); //player.removeMark('zioy_longyue'); //player.draw(); //player.storage.yueguang = game.createCard('zioy_yueguang','spade',14); //player.equip(player.storage.yueguang); }, forced: true, content: function () { //trigger.cancel(); if(!player.storage.yueguang){ player.storage.yueguang = game.createCard("zioy_yueguang", "spade", 14); } player.chooseUseTarget(player.storage.yueguang, true, "nopopup"); //player.equip(player.storage.yueguang); }, "_priority": 0 }, "zioy_longyue2": { trigger: { global: "phaseBefore", player: "enterGame" }, direct: true, unique: true, filter: function (event, player) { return event.name != "phase" || game.phaseNumber == 0; }, forceunique: true, content: function () { player.addMark("zioy_longyue"); player.removeMark("zioy_longyue"); player.draw(); player.storage.yueguang = game.createCard("zioy_yueguang", "spade", 14); //player.equip(player.storage.yueguang); }, "_priority": 0 }, "zioy_jike": { trigger: { player: "damageAfter" }, direct: true, filter: function (event, player) { return event.source && event.num > 0 && event.source != player; }, content: function () { "step 0" trigger.source.damage(trigger.num); }, ai: { "maixie_defend": true, effect: { target: function (card, player, target) { if (player.hasSkillTag("jueqing", false, target)) return [1, -1.5]; if (!target.hasFriend()) return; if (get.tag(card, "damage")) return [1, 0, 0, -0.7]; } } }, "_priority": 0 }, "zioy_longyue3": { trigger: { player: "phaseDrawBegin2" }, forced: true, preHidden: true, filter: function (event, player) { return !event.numFixed; }, content: function () { var n = player.countMark("zioy_longyue"); while (n % 3 != 0) n--; n /= 3; trigger.num = trigger.num + n; }, "_priority": 0 }, "zioy_happyNewYear": { forced: true, locked: true, trigger: { player: "loseEnd" }, group: ["zioy_qunyou2"], mark: true, marktext: "春", intro: { name: "春", content: "mark", onunmark: true }, filter: function (event, player) { return true; }, content: function () { player.addMark("zioy_happyNewYear"); var n = player.countMark("zioy_happyNewYear"); if (n % 2 == 0) player.draw(); //else if(player.countCards('h') > 0)player.chooseToDiscard(); }, ai: { threaten: 2.023 }, "_priority": 0 }, "zioy_qunyou2": { audio: "ext:无源之流:2", shaRelated: true, trigger: { player: "useCard" }, direct: true, filter: function (event, player) { if (game.roundNumber > player.storage.qunyou_lastround) { player.storage.qunyou_num = 4; if (player.countMark("zioy_qunyou2") > 4) player.removeMark("zioy_qunyou2", player.countMark("zioy_qunyou2") - 4); player.storage.qunyou_lastround = game.roundNumber; } return event.card.name == "sha" && player.countMark("zioy_happyNewYear") >= player.storage.qunyou_num && event.player.isPhaseUsing(); }, mark: true, marktext: "逡游", intro: { name: "逡游", content: "X值目前为#", onunmark: true }, init: function (player) { player.addMark("zioy_qunyou2", 4); player.storage.qunyou_lastround = -1; player.storage.qunyou_num = 4; }, content: function () { trigger.addCount = false; trigger.player.getStat().card.sha--; player.removeMark("zioy_happyNewYear", player.storage.qunyou_num); var n = player.countMark("zioy_happyNewYear"); if (n % 2 == 0) player.draw(); //else player.chooseToDiscard(); player.storage.qunyou_num += 2; player.addMark("zioy_qunyou2", 2); }, ai: { expose: 0.2 }, "_priority": 0 }, "zioy_qianlong": { trigger: { player: ["useCardEnd", "respond"] }, filter: function (event, player) { return player.countCards("hej") > 0 && player.hujia == 0 && event.card && (event.card.name == "shan" || event.card.name == "sha"); }, priority: -1, forced: false, content: function () { player.chooseToDiscard("hej", true, "弃置一张牌").set("ai", function (card) { return 7 - get.value(card); }); player.draw(); player.changeHujia(1); }, ai: { threaten: 2 }, "_priority": -100 }, "zioy_jianlong": { enable: "phaseUse", filter: function (event, player) { return player.hujia > 0; }, check: 2023, derivation: ["zioy_feilong", "zioy_kanglong"], content: function () { "step 0" player.draw(); player.changeHujia(-1); player.addSkill("zioy_jianlong4"); player.removeSkill("zioy_jianlong"); }, ai: { result: { player: 1 }, order: 2.5 }, "_priority": 0 }, "zioy_feilong": { mod: { playerEnabled: function (card, player, target) { if (player.storage.aimOfFeilong.isAlive() && card.name == "sha" && player.storage.aimOfFeilong != target) return false; }, targetInRange: function (card, player, target) { if (card.name == "sha") return true; } }, trigger: { player: "useCard" }, forced: true, filter: function (event, player, trigger) { return event.card && event.card.name == "sha"; }, content: function () { player.draw(); trigger.directHit.addArray(game.players); player.removeSkill(event.name); player.addSkill("zioy_kanglong"); player.addSkill("zioy_jianlong"); }, "_priority": 0 }, "zioy_kanglong": { unique: true, enable: "phaseUse", limited: true, filterTarget: function (card, player, target) { return target != player; }, content: function () { "step 0" player.draw(); target.addTempSkill("zioy_kanglong2"); var n = player.hp - target.hp; if (n < 0) n = -n; if (n == 0) n = 1; target.damage(n); }, ai: { order: 1, fireAttack: true, result: { target: function (player, target) { if (target.hasSkillTag("nofire")) return 0; if (lib.config.mode == "versus") return -1; if (player.hasUnknown()) return 0; return get.damageEffect(target, player); } } }, mark: true, intro: { content: "limited" }, init: function (player, skill) { player.storage[skill] = false; }, skillAnimation: true, "_priority": 0 }, "zioy_jianlong2": { trigger: { source: "damageSource" }, filter: function (event, player) { return event.card && event.card.name == "sha"; }, priority: 2023, forced: true, locked: false, content: function () { player.draw(); player.addSkill("zioy_feilong"); player.storage.aimOfFeilong = trigger.player; }, "_priority": 202300 }, "zioy_jianlong4": { mod: { targetInRange: function (card, player, target, now) { if (card.name == "sha") return true; } }, group: ["zioy_jianlong2", "wushuang1"], trigger: { player: "useCardEnd" }, forced: true, filter: function (event, player, trigger) { return event.card && event.card.name == "sha"; }, content: function () { //trigger.directHit.addArray(game.players); player.removeSkill(event.name); player.removeSkill("zioy_jianlong2"); if (!player.hasSkill("zioy_feilong")) player.addSkill("zioy_jianlong"); }, ai: { threaten: 3 }, "_priority": 0 }, "zioy_kanglong2": { trigger: { player: "damageEnd" }, forced: true, popup: false, charlotte: true, filter: function (event, player) { return true; }, content: function () { if (trigger.source != null) trigger.source.awakenSkill("zioy_kanglong"); player.removeSkill("zioy_kanglong2"); }, "_priority": 0 }, "zioy_yixiang": { group: ["zioy_yixiang2"], trigger: { source: "damageBegin1" }, forced: true, content: function () { trigger.nature = "fire"; }, "_priority": 0 }, "zioy_yixiang2": { trigger: { player: "damageBegin3" }, filter: function (event, player) { if (event.nature != "fire") return false; return true; }, forced: true, content: function () { trigger.num--; }, "_priority": 0 }, "zioy_yuyan": { group: ["feiying", "mashu"], init: function (player) { player.disableEquip("equip3"); player.disableEquip("equip4"); }, "_priority": 0 }, "zioy_chuixing": { init: function (player) { player.storage.yynum = [1]; }, trigger: { player: "useCardEnd" }, filter: function (event, player) { if (event.getParent().name == "zioy_chuixing") return false; if (event.card.name != "sha" && event.card.name != "huosha" && event.card.name != "leisha") return false; return true; }, mark: true, marktext: "吹星", intro: { name: "吹星", content: "你已累计使用#张【杀】", onunmark: true }, priority: 1, forced: true, content: function () { "step 0" player.addMark("zioy_chuixing", 1); var i = 0; player.storage.yynum[0]++; //while(i < player.storage.yynum.length){ if (player.storage.yynum[i] % (2 + i) == 0) { player.chooseUseTarget({ name: "sha", nature: "fire" }, false, false, "nodistance"); if (i + 1 == player.storage.yynum.length) { player.storage.yynum.push(0); } player.storage.yynum[i + 1]++; //player.say('i = ' + i + '::' + player.storage.yynum[i]); } i++; //} }, ai: { threaten: 2 }, "_priority": 100 }, "zioy_zhijin": { forced: true, priority: 15, trigger: { player: "gainAfter" }, filter: function (event, player) { return player.storage.lockflag == false; }, init: function (player) { player.storage.lockflag = false; }, content: function () { "step 0" player.storage.lockflag = true; "step 1" var num = trigger.cards.length; var sum = 0; var res = []; var n = 0; var bools = [false]; for (var i = num; i-- > 0; ) bools.push(true); //player.damage(); while (bools.randomGet()) { sum++; //player.gain(ui.cardPile[0],'gain2').type = 'zioy_zhijin'; bools.push(false); n++; //res.push(ui.cardPile.splice(Math.floor(Math.random()*ui.cardPile.length), 1)[0]); } player.draw(sum); //player.gain(res).type = 'zioy_zhijin'; "step 2" player.storage.lockflag = false; }, "_priority": 1500 }, "zioy_xuanzhuan": { enable: "phaseUse", filter: function (event, player) { return true; }, check: 2023, usable: 1, content: function () { "step 0" event.current = player; event.cp = []; event.ps = []; "step 1" if (!event.current.countCards("h")) event.goto(3); else event.current.chooseCard("将一张牌置于" + get.translation(player) + "的武将牌上", "h", true).set("ai", function (card) { var evt = _status.event.getParent(); if (get.attitude(_status.event.player, evt.player) > 2) { if (card.name == "jiu") return 120; if (card.name == "tao") return 110; } return 100 - get.value(card); }); "step 2" if (result.bool && result.cards && result.cards.length) { player.addToExpansion(result.cards, "giveAuto", player).gaintag.add("zioy_xuanzhuan"); event.ps.push(event.current); if ([true, false, false].randomGet()) event.ps.push(player); event.cp.push(result.cards); } "step 3" event.current = event.current.next; if (event.current != player) event.goto(1); "step 4" //player.damage(); var cards = player.getExpansions("zioy_xuanzhuan"); for (var i = cards.length; i-- > 0; ) { var p = event.ps.randomGet(); p.gain(cards[i], "draw"); } }, ai: { result: { player: 1 }, order: 2.5 }, "_priority": 0 }, "zioy_leiye1": { trigger: { source: "damageEnd" }, group: ["zioy_leiye2"], forced: function () { return true; }, charlotte: true, filter: function () { return true; }, marktext: "墨", intro: { name: "墨", content: "mark", onunmark: true }, content: function () { player.addMark(event.name); }, "_priority": 0 }, "zioy_leiye2": { marktext: "霜", intro: { name: "霜", content: "mark", onunmark: true }, trigger: { player: ["damageEnd", "recoverAfter"] }, forced: true, charlotte: true, filter: function () { return true; }, content: function () { player.addMark("zioy_leiye2"); }, "_priority": 0 }, "zioy_mosha": { enable: "phaseUse", skillAnimation: true, animationColor: "thunder", juexingji: true, unique: true, filter: function (event, player) { //return true; return player.countMark("zioy_leiye1") > 2; }, filterTarget: function (card, player, target) { return target != player; }, forced: true, content: function () { "step 0" player.awakenSkill("zioy_mosha"); player.awakenSkill("zioy_shuangsha"); player.awakenSkill("zioy_leiye1"); player.awakenSkill("zioy_leiye2"); player.removeMark("zioy_leiye1", player.countMark("zioy_leiye1")); player.removeMark("zioy_leiye2", player.countMark("zioy_leiye2")); target.damage(3); player.loseMaxHp(); player.node.name.innerHTML /*= player.name = player.name1 = player.name2*/ = "墨玄飱阳"; player.changeGroup("shen"); player.update(); "step 1" player.storage.ly = 2; }, ai: { order: 9, result: { target: function (player, target) { return target.hp - target.maxHp - 1; return get.damageEffect(target, player); }, player: 1 }, threaten: 2 }, "_priority": 0 }, "zioy_shuangsha": { enable: "phaseUse", skillAnimation: true, animationColor: "thunder", juexingji: true, unique: true, filter: function (event, player) { return player.countMark("zioy_leiye2") > 2; }, filterTarget: function (card, player, target) { return target != player; }, forced: true, content: function () { "step 0" player.awakenSkill("zioy_mosha"); player.awakenSkill("zioy_shuangsha"); player.awakenSkill("zioy_leiye1"); player.awakenSkill("zioy_leiye2"); player.removeMark("zioy_leiye1", player.countMark("zioy_leiye1")); player.removeMark("zioy_leiye2", player.countMark("zioy_leiye2")); player.awakenSkill("zioy_leiye2"); player.removeMark("zioy_leiye1", player.countMark("zioy_leiye1")); player.removeMark("zioy_leiye2", player.countMark("zioy_leiye2")); target.damage(1); player.recover(1); player.gainMaxHp(1); player.node.name.innerHTML /*= player.name = player.name1 = player.name2*/ = "霜华染月"; player.changeGroup("shen"); player.update(); "step 1" player.storage.ly = 3; }, ai: { order: 9, result: { target: function (player, target) { return target.hp - target.maxHp - 1; return get.damageEffect(target, player); }, player: 1 }, threaten: 2 }, "_priority": 0 }, "zioy_lieying": { trigger: { source: "damageBegin" }, group: ["zioy_lieying1"], forced: true, filter: function (event, player, trigger) { return true; }, mod: { selectTarget: function (card, player, range) { if (card.name == "sha" && range[1] != -1 && player.storage.ly == 3) range[1] += 1; } }, init: function (player) { player.storage.ly = 1; }, content: function () { player.draw(); if (player.storage.ly == 2) trigger.num++; if (player.storage.ly == 3) { var n = player.maxHp - player.hp; if (n % 2 == 1) n--; //n /= 2; player.recover(n / 2); } }, "_priority": 0 }, "zioy_lieying1": { trigger: { player: "useCard" }, forced: true, filter: function (event, player, trigger) { return player.storage.ly == 2 && event.card && event.card.name == "sha"; }, content: function () { //trigger.target.addTempSkill('qinggang2'); //trigger.target.storage.qinggang2.add(trigger.card); //trigger.target.markSkill('qinggang2'); trigger.directHit.addArray(game.players); }, "_priority": 0 }, "zioy_wrjzc": { trigger: { player: "phaseBegin" }, filter: function (event, player) { return game.hasPlayer(function (current) { return current != player && current.countCards("h"); }); }, direct: true, locked: true, content: function () { var target = game .filterPlayer(function (target) { return player != target && target.countCards("h"); }) .randomGet(); var cards = target.getCards("h"); player.logSkill(event.name, target); var content = [get.translation(target) + "的手牌", cards]; game.log(player, "观看了", target, "的手牌"); player.chooseControl("ok").set("dialog", content); }, "_priority": 0 }, "zioy_zsyhj": { trigger: { player: "damageBegin3" }, group: ["zioy_zsyhjn"], locked: true, forced: true, filter: function (event, player) { return event.num > 0; }, mod: { maxHandcardBase: function (player, num) { return player.hujia; } }, init: function (player) { player.storage.zsyhj1 = player.storage.zsyhj2 = false; }, content: function () { if (event.nature) { if (player.storage.zsyhj1) { trigger.cancel(); player.storage.zsyhj1 = false; } else if (!player.storage.zsyhj2) player.storage.zsyhj1 = true; } else { if (player.storage.zsyhj2) { trigger.cancel(); player.storage.zsyhj2 = false; } else if (!player.storage.zsyhj1) player.storage.zsyhj2 = true; } }, mark: true, marktext: "护甲", intro: { mark: function (dialog, storage, player) { if (player.storage.zsyhj1) { return "防止受到属性伤害"; } if (player.storage.zsyhj2) { return "防止受到无属性伤害"; } return "未拥有护盾"; }, markcount: "expansion" }, "_priority": 0 }, "zioy_weixiang": { trigger: { global: "phaseBefore", player: "enterGame" }, forced: true, filter: function (event) { return game.players.length > 1 && (event.name != "phase" || game.phaseNumber == 0); }, content: function () { "step 0" player .chooseTarget("请选择【伪像】的目标", lib.translate.zioyweixiang__info, true, function (card, player, target) { return target != player && (!player.storage.xianfu2 || !player.storage.xianfu2.contains(target)); }) .set("ai", function (target) { var att = get.attitude(_status.event.player, target); if (att > 0) return att + 1; if (att == 0) return Math.random(); return att; }).animate = false; "step 1" if (result.bool) { var target = result.targets[0]; player.reinit(player.name, target.name); player.hp = target.hp; player.maxHp = target.maxHp; player.hujia = target.hujia; player.update(); } }, "_priority": 0 }, "zioy_zsyhjn": { trigger: { global: "phaseBefore" }, forced: true, filter: function (event, player) { return player.maxHp > 1; }, content: function () { var n = player.maxHp - 1; player.maxHp = 1; player.hujia += n; player.update(); }, "_priority": 0 }, "zioy_fansheng": { trigger: { player: "die" }, filter: function (event, player) { return event.source && event.source.isIn(); }, forced: true, forceDie: true, logTarget: "source", skillAnimation: true, animationColor: "gray", content: function () { var a = trigger.source; a.addSkill("zioy_nianzhong"); a.storage.orimaxHp = a.maxHp; a.loseMaxHp(a.maxHp - 1); a.storage.zioy_nianzhong = player; a.disableEquip("equip3"); //a.disableEquip('equip4'); //a.disableEquip('equip1'); a.disableEquip("equip2"); a.disableEquip("equip5"); }, ai: { threaten: function (player, target) { if (target.hp == 1) return 0.2; return 1.5; }, effect: { target: function (card, player, target, current) { if (!target.hasFriend()) return; if (target.hp <= 1 && get.tag(card, "damage")) return [1, 0, 0, -2]; } } }, "_priority": 0 }, "zioy_nianzhong": { trigger: { player: "die" }, filter: function (event, player) { return true; }, forced: true, forceDie: true, skillAnimation: true, animationColor: "gray", content: function () { player.storage.zioy_nianzhong.revive(); player.storage.zioy_nianzhong.gainMaxHp(player.storage.orimaxHp); player.storage.zioy_nianzhong.draw(player.storage.orimaxHp); player.storage.zioy_nianzhong.recover(player.storage.orimaxHp); game.swapSeat(player, player.storage.zioy_nianzhong); var target = player; var list = []; if (lib.character[target.name]) list.addArray(lib.character[target.name][3]); if (lib.character[target.name1]) list.addArray(lib.character[target.name1][3]); if (lib.character[target.name2]) list.addArray(lib.character[target.name2][3]); player.storage.zioy_nianzhong.addSkill(list); player.storage.zioy_nianzhong.insertPhase(); var a = player.storage.zioy_nianzhong; var n = a.storage.nianxi_num; a.addSkill("zioy_nianxi"); a.storage.nianxi_num = n; a.addMark("zioy_nianxi", 1); a.removeMark("zioy_nianxi", Infinity); }, ai: { effect: { target: function (card, player, target, current) { if (get.tag(card, "damage")) return 200000; } } }, "_priority": 0 }, "zioy_jifou": { trigger: { global: "roundStart" }, filter: function (event, player) { return true; }, forced: true, content: function () { "step 0" player .chooseTarget(get.prompt2(event.name), function (card, player, target) { return player != target; }) .set("ai", function (target) { var num = get.attitude(_status.event.player, target); if (num > 0) { if (target.hp == 1) { num += 2; } if (target.hp < target.maxHp) { num += 2; } } return num; }) .set("sourcex", trigger.source); "step 1" if (result.bool) { var n = 3; target = result.targets[0]; target.gainMaxHp(n); target.recover(n + target.maxHp - target.hp); target.draw(n); target.addSkill("zioy_jifou2"); if (player.identity == "zhu") { player.identity = target.identity; target.identity = "zhu"; player.update(); target.showIdentity(); player.showIdentity(); target.update(); game.zhu = target; } player.loseHp(Infinity); player.die(); } }, ai: { order: 8, result: { target: function (player, target) { if (ui.selected.targets.length == 0) { return -3; } else { return get.effect(target, { name: "juedou" }, ui.selected.targets[0], target); } } }, expose: 0.4, threaten: 3 }, mark: true, intro: { content: "limited" }, init: function (player, skill) { player.storage[skill] = false; }, "_priority": 0 }, "zioy_jifou2": { trigger: { player: "phaseDrawBegin2" }, priority: -1, forced: true, filter: function (event, player) { return !event.numFixed; }, content: function () { trigger.num = trigger.num + 3; }, ai: { threaten: 1.5 }, mod: { maxHandcardBase: function (player, num) { return num + 3; } }, "_priority": -100 }, "zioy_liubo": { trigger: { global: ["loseAfter"] }, group: ["zioy_liubo2"], filter: function (event, player) { //return true; //if(player.storage.liuboflag == false) return false; for (var i = 0; i < event.cards2.length; i++) { if (get.position(event.cards2[0], true) == "d") { return true; } } return false; }, init: function (player) { player.storage.liuboflag = false; player.storage.liubocard = null; player.storage.liubosum = 0; }, direct: true, content: function () { for (var i = 0; i < trigger.cards2.length; i++) { player.storage.liubocard = trigger.cards2[i]; player.storage.liuboflag = true; } }, mark: true, intro: { mark: function (dialog, storage, player) { if (player.storage.liuboflag == false) return "未记录"; if (player.isUnderControl(true)) dialog.addAuto(player.storage.liubocard); else return "已记录"; }, markcount: "expansion" }, "_priority": 0 }, "zioy_liubo2": { trigger: { player: "useCard2" }, direct: true, filter: function (event, player) { if (player.storage.liubocard == null) return false; var type = get.type(event.card); return type == "basic" || type == "trick"; }, content: function () { "step 0" var goon = false; var info = get.info(trigger.card); if (trigger.targets && !info.multitarget) { var players = game.filterPlayer(); for (var i = 0; i < players.length; i++) { if (lib.filter.targetEnabled2(trigger.card, player, players[i]) && !trigger.targets.contains(players[i])) { goon = true; break; } } } if (goon) { player .chooseTarget(event.name + ":是否额外指定一名" + get.translation(trigger.card) + "的目标?", function (card, player, target) { var trigger = _status.event; if (trigger.targets.contains(target)) return false; return lib.filter.targetEnabled2(trigger.card, _status.event.player, target); }) .set("ai", function (target) { var trigger = _status.event.getTrigger(); var player = _status.event.player; return get.effect(target, trigger.card, player, player); }) .set("targets", trigger.targets) .set("card", trigger.card); } else { if (!info.multitarget && trigger.targets && trigger.targets.length > 1) { event.finish(); } } "step 1" if (result.bool) { if (!event.isMine()) game.delayx(); event.target = result.targets[0]; } else { event.finish(); } "step 2" if (event.target) { player.gain(player.storage.liubocard); player.storage.liubocard = null; player.storage.liuboflag = false; player.storage.liubosum++; player.logSkill("zioy_liubo2", event.target); trigger.targets.add(event.target); } event.finish(); }, "_priority": 0 }, "zioy_shuiyue": { trigger: { player: "phaseJieshuBegin" }, frequent: false, filter: function (event, player) { return player.storage.liubosum > 0; }, content: function () { if (player.storage.liubosum > 0) player.draw(player.storage.liubosum); var n = 0; while (n * 1.5 <= player.storage.liubosum) n++; player.storage.liubosum = n - 1; }, check: function (event, player) { return player.storage.liubosum > 3; }, mark: true, intro: { mark: function (dialog, storage, player) { return "已记录" + player.storage.liubosum + "次〖流波〗"; }, markcount: "expansion" }, "_priority": 0 }, "zioy_moying": { enable: "phaseUse", usable: 1, check: function () { return true; }, discard: false, line: true, position: "h", init: function (player) { player.storage.shadowl = []; }, filter: function (event, player) { return player.countCards("h", { color: "black" }) > 0; }, filterCard: function (card) { return get.color(card) == "black"; }, filterTarget: function (card, player, target) { if (target == player) return false; return !target.hasSkill("zioy_moying2"); //return !player.storage.shadowl.contains(target); }, content: function () { if (player.storage.shadowl.length > 1) { var p = player.storage.shadowl[0]; p.removeSkill("zioy_moying2"); player.storage.shadowl.shift(); } player.storage.shadowl.push(target); target.addToExpansion(cards, "giveAuto", target).gaintag.add("zioy_moying"); target.addSkill("zioy_moying2"); target.storage.shadow_source = player; target.storage.shadow_card = cards; //target.loseHp(); }, ai: { order: 9, result: { target: function (player, target) { return target.hp - target.maxHp - 1; return get.damageEffect(target, player); }, player: 1 }, threaten: 2 }, "_priority": 0 }, "zioy_yingdun": { audio: "ext:无源之流:2", audioname: ["re_daqiao", "daxiaoqiao"], trigger: { target: "useCardToTarget" }, direct: true, preHidden: true, filter: function (event, player) { //if(event.card.name!='sha') return false; if (player.storage.shadowl.length == 0) return false; return game.hasPlayer(function (current) { //var evt=_status.event.getTrigger(); return ( current != event.player && //current!=trigger.source&& player.storage.shadowl.contains(current) && current.storage.shadow_flag && !event.targets.contains(current) ); }); }, content: function () { "step 0" player .chooseTarget("请选择【影遁】的目标", lib.translate.zioy_yingdun_info, false, function (card, player, target) { var evt = _status.event.getTrigger(); //return !evt.targets.contains(target) return ( target != event.player && !evt.targets.contains(target) && target != trigger.source && //trigger.targets.contains(target)&& player.storage.shadowl.contains(target) && target.storage.shadow_flag ); /*&&lib.filter.targetEnabled(event.card,event.player,target);*/ }) .set("ai", function (target) { return [1, -1].randomGet(); }); "step 1" if (result.bool) { var target = result.targets[0]; target.storage.shadow_flag = false; game.swapSeat(player, target); player.logSkill(event.name, target); //player.discard(result.cards); var evt = trigger.getParent(); evt.triggeredTargets2.remove(player); evt.targets.remove(player); evt.targets.push(target); } }, "_priority": 0 }, "zioy_moying2": { mark: true, intro: { mark: function (dialog, storage, player) { dialog.addAuto(player.storage.shadow_card); //else return '已记录'; }, markcount: "expansion" }, group: ["zioy_moying3"], init: function (player) { player.storage.shadow_flag = true; //player.addMark('zioy_moying2'); }, onremove: function (player) { player.storage.shadow_source.gain(player.storage.shadow_card); //player.removeMark('zioy_moying2'); }, trigger: { global: "useCard" }, filter: function (event, player) { /*var flag = false; for(var card of event.cards){ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; }*/ return ( event.targets && event.targets.length == 1 && //flag&& event.targets[0] != player && event.targets[0] != player.storage.shadow_source && event.targets[0].isAlive() && event.player == player.storage.shadow_source && //get.type(event.cards[0].name) == 'basic'&& //get.type(event.cards[0].name) == 'trick'&& //lib.filter.targetInRange(card,this,target)&& //player.canUse(event.cards,event.targets[0])&& true ); }, direct: true, content: function () { player.useCard(trigger.cards, trigger.targets[0]); //game.delay(0.5); }, "_priority": 0 }, "zioy_jianying": { trigger: { player: "showCharacterAfter" }, forced: true, hiddenSkill: true, filter: function (event, player) { return true; }, content: function () { "step 0" player .chooseTarget("请选择【末影】的目标", lib.translate.zioy_jianying_info, false, function (card, player, target) { if (target == player) return false; return !target.hasSkill("zioy_moying2"); }) .set("ai", function (target) { return 1; }); "step 1" if (result.bool) { var target = result.targets[0]; if (player.storage.shadowl.length > 1) { var p = player.storage.shadowl[0]; p.removeSkill("zioy_moying2"); player.storage.shadowl.shift(); } var cards = game.createCard("sha", "spade", Infinity); player.storage.shadowl.push(target); target.addToExpansion(cards, "giveAuto", target).gaintag.add("zioy_moying"); target.addSkill("zioy_moying2"); target.storage.shadow_source = player; target.storage.shadow_card = cards; } }, "_priority": 0 }, "zioy_moying3": { trigger: { player: "die" }, filter: function (event, player) { return true; }, direct: true, forceDie: true, content: function () { var p = player.storage.shadow_source; if (p.storage.shadowl[0] == player) p.storage.shadowl.shift(); else p.storage.shadowl.pop(); }, "_priority": 0 }, "zioy_yuexiang": { trigger: { player: "phaseDrawBegin2" }, group: ["zioy_yuexiang2"], direct: true, filter: function (event, player) { return !event.numFixed; }, priority: 3, init: function (player) { player.storage.yuexiang_num = [0, 1, 2, 3].randomGet(); player.storage.yuexiang_list = ["🌓", "🌕", "🌘", "🌑"]; player.storage.yuexiang_list2 = ["上弦", "满月", "下弦", "新月"]; }, content: function () { var n = 0; var index = 1; if (player.storage.douzhuan_flag) index = 2; if (player.storage.yuexiang_num == 1) n = 2 * index; else if (player.storage.yuexiang_num == 3) n = 0 * index; else n = index; trigger.num += n; }, ai: { threaten: 1.3 }, mark: true, intro: { mark: function (dialog, storage, player) { return player.storage.yuexiang_list2[player.storage.yuexiang_num]; }, markcount: "expansion" }, "_priority": 300 }, "zioy_yuexiang2": { trigger: { global: "roundStart" }, filter: function (event, player) { return true; }, direct: true, content: function () { player.storage.yuexiang_num++; player.storage.yuexiang_num %= 4; if (player.storage.yuexiang_num == 1) { var p = null; if (player.hasSkill("zioy_xingdou")) { p = player; } if (player.next.hasSkill("zioy_xingdou")) { p = player.next; } if (player.previous.hasSkill("zioy_xingdou")) { p = player.previous; } if (p != null) { player.gain(p.getExpansions("zioy_xingdou")); player.storage.douzhuan_flag = true; } } }, "_priority": 0 }, "zioy_douzhuan": { trigger: { global: "phaseBefore", player: "enterGame" }, direct: true, unique: true, group: ["zioy_douzhuan2"], filter: function (event, player) { return event.name != "phase" || game.phaseNumber == 0; }, init: function (player) { player.storage.douzhuan_flag = false; }, priority: 1, forceunique: true, content: function () { "step 0" var targets = game.players; var target = targets.randomGet(); var cards = get.cards(7); target.addToExpansion(cards, "draw").gaintag.add("zioy_xingdou"); target.addSkill("zioy_xingdou"); target.storage.zioy_xingdou_lastround = game.phaseNumber; "step 1" if (player.storage.yuexiang_num == 1) { var p = null; if (player.hasSkill("zioy_xingdou")) { p = player; } if (player.next.hasSkill("zioy_xingdou")) { p = player.next; } if (player.previous.hasSkill("zioy_xingdou")) { p = player.previous; } if (p != null) { player.gain(p.getExpansions("zioy_xingdou")); player.storage.douzhuan_flag = true; } } }, mod: { maxHandcardBase: function (player, num) { var n = 0; if (player.storage.douzhuan_flag) n = 7; return num + n; } }, "_priority": 100 }, "zioy_xingdou": { mark: true, intro: { mark: function (dialog, storage, player) { var content = player.getExpansions("zioy_xingdou"); if (content && content.length) { dialog.addAuto(content); } else { return "群星暗淡"; } }, markcount: "expansion" }, priority: 2, trigger: { global: "roundStart" }, filter: function (event, player) { return player.storage.zioy_xingdou_lastround < game.phaseNumber; }, onremove: function (player) { //player.removeSkill("zioy_xingdou"); }, direct: true, content: function () { "step 0" var target = player.next; var cards = player.getExpansions("zioy_xingdou"); if (cards.length > 0) { target.addToExpansion(cards, "draw").gaintag.add("zioy_xingdou"); target.addSkill("zioy_xingdou"); target.storage.zioy_xingdou_lastround = game.phaseNumber; } player.removeSkill("zioy_xingdou"); delete player.storage.zioy_xingdou_lastround; }, "_priority": 200 }, "zioy_shengyue": { "_priority": 0 }, "zioy_xiaoxiang": { trigger: { global: "roundStart" }, limited: true, unique: true, filter: function (event, player) { return player.storage.cmnum > 0; }, selectTarget: -1, content: function () { var target = player.next; player.awakenSkill(event.name); while (target != player) { player.storage.cmnum--; target.removeSkill("zioy_chenmeng1"); target.removeMark("zioy_chenmeng"); target.turnOver(); //player.gainMaxHp(); player.recover(); player.update(); target = target.next; } }, check: function (event, player) { return player.storage.cmnum > 3 || player.hp < 3; }, mark: true, intro: { content: "limited" }, skillAnimation: true, init: function (player, skill) { player.storage[skill] = false; }, "_priority": 0 }, "zioy_douzhuan2": { trigger: { global: "die" }, preHidden: true, filter: function (event) { return event.player.hasSkill("zioy_xingdou"); }, direct: true, content: function () { "step 0" player.gain(trigger.player.getExpansions("zioy_xingdou")); player.storage.douzhuan_flag = true; }, "_priority": 0 }, "zioy_nianxi": { audio: "ext:无源之流:2", enable: "phaseUse", usable: 1, filter: function (event, player) { return player.countCards("he", { color: "red" }) > 0; }, filterTarget: function (card, player, target) { if (player == target) return false; return player.inRange(target); }, init: function (player) { player.storage.nianxi_num = 0; }, content: function () { "step 0" player.addSkill("zioy_nianxi2"); player.storage.nianxi_flag = false; "step 1" player.useCard({ name: "sha", isCard: false }, target, false); "step 2" player.removeSkill("zioy_nianxi2"); if (player.storage.nianxi_flag == false) { player.storage.nianxi_num++; player.damage((number = player.storage.nianxi_num), (player = target)); //player.addMark(event.name); } }, mark: true, intro: { mark: function (dialog, storage, player) { return "已记录" + player.storage.nianxi_num + "次〖年袭〗"; } }, filterCard: function (card) { return get.color(card) != "red"; }, selectCard: function () { return 1; }, position: "he", check: function (card) { return 1000; }, ai: { damage: true, order: 8, result: { player: function (player, target) { if (ui.selected.cards.length) return 0; if (player.hp >= target.hp) return -0.9; if (player.hp <= 2) return -10; return -2; }, target: function (player, target) { if (!ui.selected.cards.length) { if (player.hp < 2) return 0; if (player.hp == 2 && target.hp >= 2) return 0; if (target.hp > player.hp) return 0; } return get.damageEffect(target, player); } }, threaten: 1.3 }, "_priority": 0 }, "zioy_nianxi2": { trigger: { source: "damageBegin1" }, forced: true, content: function () { player.storage.nianxi_flag = true; }, "_priority": 0 }, "zioy_xiantong": { trigger: { player: "phaseDrawEnd", global: "roundStart" }, filter: function (event, player) { var cards = player.getExpansions("zioy_xiantong"); return ( player.countCards(function (card) { return get.type(card) != "equip"; }) > 0 && cards.length < player.maxHp ); }, group: ["zioy_xiantong2"], direct: true, content: function () { "step 0" player.chooseCard("h", false, "你可以选择一张非装备牌并将其置于武将牌上,称为“瞳”", function (card) { return get.type(card) != "equip"; }); "step 1" if (result.bool) { //player.markAuto("zioy_xiantong",result.cards); player.addToExpansion(result.cards, "giveAuto", player).gaintag.add("zioy_xiantong"); } }, mark: true, marktext: "瞳", intro: { mark: function (dialog, storage, player) { var cards = player.getExpansions("zioy_xiantong"); if (cards.length == 0) return "共有" + get.cnNumber(cards.length) + "张牌"; if (player.isUnderControl(true) || player.storage.huashouSource.isUnderControl(true)) dialog.addAuto(cards); else return "共有" + get.cnNumber(cards.length) + "张牌"; }, markcount: "expansion" }, "_priority": 0 }, "zioy_xiane": { priority: 2, skillAnimation: true, animationColor: "thunder", trigger: { player: "phaseEnd" }, filter: function (event, player) { var cards = player.getExpansions("zioy_xiantong"); return cards.length > 2; }, content: function () { "step 0" event.cs = player.getExpansions("zioy_xiantong"); if (event.cs.length == 0) event.finish(); "step 1" var c = event.cs[0]; var ts = game.players; var target = player; do { target = ts.randomGet(); } while (target == player); player.gain(c); target.damage(2, "thunder"); player.line(target, "red"); event.goto(0); }, "_priority": 200 }, "zioy_xiantong2": { priority: 1, skillAnimation: true, animationColor: "thunder", trigger: { player: "phaseEnd" }, direct: true, filter: function (event, player) { var cards = player.getExpansions("zioy_xiantong"); return cards.length > 0; }, content: function () { "step 0" event.index = 0; "step 1" event.cs = player.getExpansions("zioy_xiantong"); if (event.cs.length == event.index) event.finish(); "step 2" var c = event.cs[event.index]; event.index += 1; var ts = game.players; var target = player; do { target = ts.randomGet(); } while (target == player); player.useCard({ name: c.name, isCard: false }, target, true); //.animate=false; player.line(target, "red"); event.goto(1); }, "_priority": 100 }, "zioy_wuya": { enable: "phaseUse", usable: 1, filter: function (event, player) { return player.maxHp > 1 || player.storage.puai_flag; }, filterTarget: function (card, player, target) { if (player == target) return false; return !target.hasSkill("zioy_wuya2"); }, init: function (player) { player.storage.nianxi_num = 0; }, group: ["zioy_wuya4", "zioy_wuya3"], content: function () { "step 0" //target.addMark('zioy_wuya'); target.addSkill("zioy_wuya2"); if (player.storage.puai_flag == false) player.loseMaxHp(); else player.gainMaxHp(); target.storage.wuya_count = 1; }, mark: true, marktext: "黑血", intro: { name: "黑血", mark: function (dialog, storage, player) { return null; } }, filterCard: function (card) { return get.color(card) != "red"; }, selectCard: function () { return 0; }, position: "h", check: function (card) { return 1000; }, "_priority": 0 }, "zioy_sheji": { trigger: { player: "useCardToTarget" }, filter: function (event, player) { return event.card.name == "sha" && player.countMark("zioy_wuya") > 0; }, content: function () { "step 0" player.removeMark("zioy_wuya"); ts = trigger.targets; for (var i = 0; i < ts.length; ++i) { ts[i].loseHp(); player.recover(); } "step 1" trigger.targets.remove(trigger.targets); trigger.getParent().triggeredTargets2.remove(trigger.targets); trigger.untrigger(); }, "_priority": 0 }, "zioy_puai": { enable: "phaseUse", skillAnimation: true, animationColor: "thunder", juexingji: true, unique: true, filter: function (event, player) { return player.countMark("zioy_wuya") > 0 && player.maxHp > 1; }, init: function (player) { player.storage.puai_flag = false; }, content: function () { "step 0" var choices = []; for (var i = 1; i <= player.countMark("zioy_wuya") && i < player.maxHp; ++i) { choices.push(i); } player.chooseControl(choices).set("prompt", "请选择移去的“黑血”数量"); "step 1" player.storage.puai_round = result.control; player.loseMaxHp(result.control); player.removeMark("zioy_wuya", result.control); player.addSkill("zioy_puai2"); player.awakenSkill(event.name); }, "_priority": 0 }, "zioy_wuya2": { init: function (player, skill) { player.addSkillBlocker(skill); }, onremove: function (player, skill) { player.removeSkillBlocker(skill); }, charlotte: true, skillBlocker: function (skill, player) { return !lib.skill[skill].charlotte && !get.is.locked(skill, player); }, mark: true, marktext: "鸦", intro: { content: function (storage, player, skill) { var list = player.getSkills(null, false, false).filter(function (i) { return lib.skill.fengyin.skillBlocker(i, player); }); if (list.length) return "失效技能:" + get.translation(list); return "无失效技能"; } }, ai: { effect: { target: function (card, player, target) { if (get.tag(card, "damage")) { if (player.hasSkillTag("jueqing", false, target)) return [1, -2]; if (!target.hasFriend()) return; var num = 1; if (get.attitude(player, target) > 0) { if (player.needsToDiscard()) { num = 0.7; } else { num = 0.5; } } if (target.hp >= 4) return [1, num * 2]; if (target.hp == 3) return [1, num * 1.5]; if (target.hp == 2) return [1, num * 0.5]; } } } }, "_priority": 0 }, "zioy_wuya3": { trigger: { global: "damageBefore" }, filter: function (event, player) { return event.player.hasSkill("zioy_wuya2"); }, forced: true, content: function () { "step 0" if (player.storage.puai_flag == false) { event.goto(3); } "step 1" var choices = ["是", "否"]; player .chooseControl(choices) .set("prompt", "雾鸦:请选择一项") .set("prompt2", "是否移去“鸦”并防止" + get.translation(trigger.player) + "受到伤害"); "step 2" if (result.control == "否") event.finish(); "step 3" trigger.cancel(); trigger.player.removeSkill("zioy_wuya2"); }, "_priority": 0 }, "zioy_wuya4": { trigger: { global: "phaseBegin" }, filter: function (event, player) { return event.player.hasSkill("zioy_wuya2") && !player.hasSkill("zioy_wuya2"); }, direct: true, content: function () { "step 0" "step 1"; if (player.storage.puai_flag == false) player .chooseTarget( "请选择【雾鸦】的目标", function (card, player, target) { return !target.hasSkill("zioy_wuya2"); }, true ) .set("ai", function (target) { return [-1, 1].randomGet(); }); else player .chooseTarget( "请选择【雾鸦】的目标", function (card, player, target) { return !target.hasSkill("zioy_wuya2"); }, false ) .set("ai", function (target) { return [-1, 1].randomGet(); }); "step 2" if (result.bool) { var target = result.targets[0]; trigger.player.loseHp(); trigger.player.line(target, "red"); game.log("雾鸦转移至", target); trigger.player.removeSkill("zioy_wuya2"); if (target != player) { target.addSkill("zioy_wuya2"); target.storage.wuya_count = trigger.player.storage.wuya_count + 1; } else { var num = trigger.player.storage.wuya_count; player.recover(num); player.addMark("zioy_wuya", num); //var card=get.cardPile(function(card){ // return get.color(card)=='black'; //}); //if(card) player.gain(card,'gain2'); } game.delayx(); } }, "_priority": 0 }, "zioy_puai2": { priority: 2, trigger: { global: "roundStart" }, filter: function (event, player) { return true; }, group: ["zioy_puai3"], direct: true, onremove: function (player) { player.storage.puai_flag = false; }, content: function () { player.storage.puai_flag = true; if (player.storage.puai_round == 0) { player.removeSkill(event.name); } player.storage.puai_round--; }, mod: { globalTo: function (from, to, distance) { if (to.storage.puai_flag) return Infinity; }, globalFrom: function (from, to, distance) { if (to.storage.puai_flag) return distance - 9999; } }, mark: true, marktext: "瀑霭", intro: { content: function (storage, player, skill) { return "剩余" + player.storage.puai_round + "回合"; } }, "_priority": 200 }, "zioy_puai3": { priority: 2.5, trigger: { target: "useCardToTarget" }, forced: true, filter: function (event, player) { return get.tag(event.card, "damage") && player.storage.puai_flag == true; }, content: function () { trigger.targets.remove(player); trigger.getParent().triggeredTargets2.remove(player); trigger.untrigger(); }, "_priority": 250 }, "zioy_xingchi": { group: ["zioy_xingchi2", "zioy_xingchi3"], trigger: { player: ["useCard", "respond"] }, filter: function (event, player) { return event.card && (event.card.name == "shan" || event.card.name == "sha"); }, priority: 1.23, forced: true, locked: true, content: function () { player.addMark("zioy_xingchi"); }, mark: true, marktext: "正觉", intro: { name: "正觉", mark: function (dialog, storage, player) { return "唯佛一人智慧为阿耨多罗三藐三菩提"; } }, "_priority": 123 }, "zioy_xingchi2": { trigger: { player: "damageBegin" }, filter: function (event, player) { return player.countMark("zioy_xingchi") > 2; }, direct: true, content: function () { "step 0" player.removeMark("zioy_xingchi", 3); trigger.num--; }, "_priority": 0 }, "zioy_xingchi3": { trigger: { source: "damageBegin" }, priority: -3, filter: function (event, player) { return player.countMark("zioy_xingchi") > 2; }, direct: true, content: function () { "step 0" player.removeMark("zioy_xingchi", 3); trigger.num++; }, "_priority": -300 }, "zioy_cangzhen": { trigger: { source: "damageBegin1" }, priority: 1, group: ["zioy_cangzhen2"], filter: function (event) { return !event.player.storage.cangzhen_round || event.player.storage.cangzhen_round - 5 > game.roundNumber; }, forced: true, content: function () { trigger.num += 1; trigger.player.turnOver(); trigger.player.storage.cangzhen_round = game.roundNumber; }, ai: { damageBonus: true }, "_priority": 100 }, "zioy_cangzhen2": { trigger: { source: "damageEnd" }, forced: true, filter: function (event, player, trigger) { return [false].randomGet(); }, content: function () { trigger.player.turnOver(); }, "_priority": 0 }, "zioy_shangqin": { audio: "ext:无源之流:2", trigger: { global: "die" }, group: ["zioy_shangqin2", "zioy_shangqin3"], direct: true, locked: true, preHidden: false, filter: function (event, player) { return !event.player.isAlive() && event.player != player; }, init: function (player) { player.storage.alps_bugs = []; }, content: function () { "step 0" event.p = trigger.player; if (!player.storage.alps_bugs.contains(event.p)) { event.goto(1); } else { event.togain = trigger.player.getCards("he"); player.gain(event.togain, trigger.player, "giveAuto", "bySelf"); event.finish(); } "step 1" player.line(p, "red"); var p = event.p; var name, name1, name2; player.storage.alps_bugs.push(p); name = p.name; name1 = p.name1; name2 = p.name2; p.revive(); event.p.clearSkills(); p.reinit(p.name, "zioy_xukongchong"); //p.setAvatar(p.name1,'xioy_xukongchong1'); //p.avatar2.setBackground('xioy_xukongchong1','character'); p.node.name.innerHTML = "虚空虫"; p.name = name; p.name1 = name1; p.name2 = name2; p._trueMe = player; p.storage.alps = player; p.changeGroup("jin"); if (player.identity == "zhu") { p.identity = "zhong"; } else { p.identity = player.identity; } game.addGlobalSkill("autoswap"); if (p == game.me) { game.notMe = true; if (!_status.auto) ui.click.auto(); } p.maxHp = p.hp = 2; "step 2" event.p.clearSkills(); event.p.draw(2); player.draw(2); player.gainMaxHp(); "step 3" var n = 0; var n1 = player.maxHp - player.hp - 1; while (n * 2 < n1) n++; player.recover(n); }, ai: { threaten: function (player, target) { return target.storage.alps_bugs.length - 1; } }, "_priority": 0 }, "zioy_hanshou": { trigger: { global: "roundStart" }, skillAnimation: true, animationColor: "thunder", unique: true, direct: false, filter: function (event, player) { for (var i = 0; i < player.storage.alps_bugs.length; i++) { var p = player.storage.alps_bugs[i]; if (!p.isAlive()) { return true; } } return false; }, check: function (event, player) { var n = 0; for (var i = 0; i < player.storage.alps_bugs.length; i++) { var p = player.storage.alps_bugs[i]; if (!p.isAlive()) { n++; } } return n > 2; }, content: function () { "step 0" player.awakenSkill(event.name); event.num = 0; event.l = player.storage.alps_bugs; for (var i = 0; i < event.l.length; i++) { var p = event.l[i]; if (!p.isAlive()) { player.line(p, "red"); p.revive(); p.recover(999); p.hp = p.maxHp; event.num++; } } "step 1" player.loseMaxHp(event.num); for (var i = 0; i < event.l.length; i++) { var p = event.l[i]; player.line(p, "red"); p.draw(event.num); } }, "_priority": 0 }, "zioy_shangqin2": { trigger: { global: "useCard" }, forced: true, filter: function (event, player) { return false && event.card && get.tag(event.card, "damage") && event.player.storage.alps; }, content: function () { trigger.customArgs.default.customSource = player; }, "_priority": 0 }, "zioy_shangqin3": { trigger: { global: "die" }, filter: function (event) { return false && event.player.countCards("he") > 0 && event.player.storage.alps; }, content: function () { "step 0" event.togain = trigger.player.getCards("he"); player.gain(event.togain, trigger.player, "giveAuto", "bySelf"); }, "_priority": 0 }, "zioy_longzi": { "_priority": 0 }, "zioy_yingyuan": { trigger: { global: "phaseJieshuBegin" }, frequent: true, filter: function (event, player) { return event.player != player && !player.isTurnedOver(); }, content: function () { player.turnOver(); }, init: function (player) { player.storage.yy_player == null; player.storage.yingyuan_lastround = -1; }, subSkill: { "yy1": { trigger: { global: "phaseEnd" }, forced: false, filter: function (event, player) { if (player.storage.yingyuan_lastround == game.roundNumber) return false; return event.player != player && player.isTurnedOver() && event.player.maxHp != event.player.hp; }, content: function () { "step 0" if (player.next != trigger.player) game.swapSeat(player, player.next); "step 1" if (player.next != trigger.player) event.goto(0); "step 2" player.turnOver(); "step 3" player.insertPhase(); player.storage.yy_player = trigger.player; player.storage.yingyuan_lastround = game.roundNumber; }, sub: true, "_priority": 0 }, "yy2": { trigger: { player: "damageBefore" }, filter: function (event, player) { return player.isTurnedOver(); }, forced: true, content: function () { trigger.num -= 1; }, sub: true, ai: { effect: { target: function (card, player, target) { if (!target.isTurnedOver() || player.hasSkillTag("jueqing", false, target)) return; var num = get.tag(card, "damage"); if (num) { if (num > 1) return 0.5; return 0; } } } }, "_priority": 0 } }, group: ["zioy_yingyuan_yy1", "zioy_yingyuan_yy2"], "_priority": 0 }, "zioy_hey": { derivation: ["zioy_guangmang"], trigger: { player: ["phaseBegin", "phaseEnd"] }, logTarget: "player", filter: function () { return true; }, direct: true, init: function (player) { player.storage.hey_lastp = null; player.storage.hey_lastr = -999; player.addSkill("zioy_guangmang"); }, content: function () { "step 0" if (player.storage.hey_lastr < game.roundNumber) { player.storage.hey_lastp = null; player.storage.hey_lastr = game.roundNumber; } var choices = ["红色", "黑色"]; player.chooseControl(choices).set("prompt", "请选择一种颜色"); "step 1" event.color = "red"; if (result.control == "黑色") event.color = "black"; player .chooseTarget( "请选择观看一名角色的手牌", function (card, player, target) { return target != player.storage.hey_lastp; }, true ) .set("ai", function (target) { return [-1, 1].randomGet(); }); "step 2" event.target = result.targets[0]; player.storage.hey_lastp = event.target; player.viewHandcards(event.target); var hs = event.target.getCards("h", { color: event.color }); var l = event.target.getCards("h").length - hs.length; event.flag = true; if (hs.length < l) event.flag = false; "step 3" var target = event.target; if (event.flag == true) { player.draw(); event.target.draw(); } else { target = player; player.chooseToDiscard(true); event.target.chooseToDiscard(true); } if (target.hasSkill("zioy_guangmang")) { target.removeSkill("zioy_guangmang"); } else { target.addSkill("zioy_guangmang"); } }, "_priority": 0 }, "zioy_ya": { derivation: ["zioy_guangmang"], trigger: { player: "damageBegin" }, filter: function (event, player) { if (player.hasSkill("zioy_guangmang")) return false; var targets = game.players; var ts1 = []; for (var i = 0; i < targets.length; ++i) { if (targets[i].hasSkill("zioy_guangmang")) { ts1.push(targets[i]); } } if (ts1.length > 0) return true; return false; }, direct: true, content: function () { "step 0" player .chooseTarget( "是否将一名角色的光芒移动至己方区域内并防止此次伤害", function (card, player, target) { return target.hasSkill("zioy_guangmang"); }, false ) .set("ai", function (target) { return 1; }); "step 1" if (result.bool) { event.from = result.targets[0]; event.from.removeSkill("zioy_guangmang"); player.addSkill("zioy_guangmang"); trigger.cancel(); } else event.finish(); }, "_priority": 0 }, "zioy_ha": { derivation: ["zioy_guangmang"], trigger: { source: "damageAfter" }, forced: true, filter: function (event, player, trigger) { var targets = game.players; var ts1 = []; for (var i = 0; i < targets.length; ++i) { if (targets[i].hasSkill("zioy_guangmang")) { ts1.push(targets[i]); } } if (ts1.length > 0) return true; return false; }, content: function () { "step 0" player .chooseTarget( "请选择转出光芒的角色", function (card, player, target) { return target.hasSkill("zioy_guangmang"); }, false ) .set("ai", function (player, target) { if (target == player) return 2; return [-1, 1].randomGet(); }); "step 1" if (result.bool) { event.from = result.targets[0]; player .chooseTarget( "请选择转入光芒的角色", function (card, player, target) { return !target.hasSkill("zioy_guangmang"); }, false ) .set("ai", function (target) { return 1; }); } else event.finish(); "step 2" if (result.bool) { event.to = result.targets[0]; event.from.removeSkill("zioy_guangmang"); event.to.addSkill("zioy_guangmang"); } }, "_priority": 0 }, "zioy_guangmang": { mark: true, marktext: "光芒", intro: { markcount: "expansion" }, trigger: { player: "damageEnd" }, direct: true, filter: function (event, player) { return event.num > 0; }, content: function () { "step 0" var targets = game.players; var ts1 = []; for (var i = 0; i < targets.length; ++i) { if (targets[i].hasSkill(event.name) && targets[i] != player) { ts1.push(targets[i]); } } if (ts1.length > 0) event.target = ts1.randomGet(); else event.finish(); "step 1" player.removeSkill(event.name); "step 2" target.damage(trigger.num); }, mod: { globalTo: function (from, to, distance) { if (!from.hasSkill("zioy_guangmang")) return Infinity; }, globalFrom: function (from, to, distance) { //if(!to.hasSkill("zioy_guangmang")) return Infinity; } }, "_priority": 0 }, "zioy_shihong": { trigger: { player: "phaseDrawBegin2" }, forced: true, locked: true, filter: function (event, player) { return true || !event.numFixed; }, content: function () { "step 0" var num = game.players.length; if (player.storage.shulin_juexing == true) { game.changeGlobalStatus("shuguang", num, "phase"); event.finish(); } else { num = Math.ceil(num / 2); var choices = []; for (var i = 0; i <= num; ++i) { choices.push(i); } player .chooseControl(choices) .set("prompt", "请选择本回合额外摸牌数") .set("ai", function () { var num = game.players.length; num = Math.ceil(num / 2); var choices = 0; for (var i = 0; i <= num; ++i) { choices = i; } if (choices < 2) choices = 2; return choices - 2; }); } "step 1" var num = game.players.length; num = Math.ceil(num / 2); trigger.num += result.control; event.num = num - result.control; if (event.num > 0) player .chooseTarget( "弃置一名角色" + event.num + "张的牌", function (card, player, target) { return true; }, true ) .set("ai", function (target) { var att = get.attitude(_status.event.player, target); return -att; }); else { event.finish(); } "step 2" if (result.bool) { var target = result.targets[0]; player.discardPlayerCard(target, "hej", true, event.num); } else { event.finish(); } }, ai: { threaten: 1.3 }, "_priority": 0 }, "zioy_cuiyi": { trigger: { player: ["phaseBegin"] }, logTarget: "player", filter: function () { return true; }, forced: true, locked: true, init: function (player) { // player.unmarkSkill('zioy_cuiyi'); }, mark: false, intro: { markcount: "expansion" }, content: function () { "step 0" var p = player; var num = game.players.length; if (!player.storage.shulin_juexing) player.storage.shulin_juexing = false; if (player.storage.shulin_juexing == true) { var p1 = p; do { if (p1.countMark("zioy_cuiyi") > 0) p1.lockEnhancement(num, "phase"); p1 = p1.next; } while (p1 != p); } else { player .chooseTarget( "请选择一名角色并将其“皠翊”拥有状态取反", function (card, player, target) { return true; }, false ) .set("ai", function (target) { var att = get.attitude(_status.event.player, target); if (target == player && !player.hasMark("zioy_cuiyi")) att = 100; // if(!player.storage.shulin_countphase && att < 0){ // att = -att/2; // } // num = 0 ; // c = ["strike","attack", "defend", "miss", "hit"]; // for(var i = 0;i < c.length;++i){ // num += Math.abs(trigger.player.storage.enhancementArray[c[i]]); // } var index = 2; if (target.hasMark("zioy_cuiyi")) index = -1; return index * att; }); } "step 1" if (player.storage.shulin_juexing == false && result.bool) { var target = result.targets[0]; if (target.countMark("zioy_cuiyi") == 0) { target.addMark("zioy_cuiyi"); } else { target.removeMark("zioy_cuiyi"); } } "step 2" var p = player; if (player.storage.shulin_juexing == false) { var p1 = p; do { if (p1.countMark("zioy_cuiyi") > 0) { c = ["strike", "attack", "defend", "miss", "hit"]; p1.changeEnhancement(c[(2 * game.roundNumber - 1) % 5], c[(2 * game.roundNumber) % 5], 1); } p1 = p1.next; } while (p1 != p); } }, "_priority": 0 }, "zioy_shulin": { trigger: { player: ["phaseUseBegin"] }, filter: function (event, player) { return true; }, init: function (player) { player.storage.shulin_juexing = false; }, check: function (event, player) { return player.hp * 2 < player.maxHp; }, skillAnimation: true, animationColor: "thunder", content: function () { if (player.storage.shulin_juexing == false) { player.storage.shulin_juexing = true; player.storage.shulin_countphase = 1; player.storage.shulin_name = player.node.name.innerHTML; player.node.name.innerHTML = "觉醒" + player.node.name.innerHTML; player.recover(player.maxHp - player.hp); } else { n = player.storage.shulin_countphase - (player.maxHp - player.hp); if (n < 0) player.recover(player.storage.shulin_countphase); else { player.recover(player.maxHp - player.hp); player.draw(n); } player.storage.shulin_juexing = false; player.node.name.innerHTML = player.storage.shulin_name; player.awakenSkill("zioy_shulin"); } }, group: ["zioy_shulin_count"], subSkill: { count: { trigger: { player: ["phaseBegin"] }, priority: 546546, filter: function (event, player) { return player.storage.shulin_juexing; }, direct: true, content: function () { player.storage.shulin_countphase++; }, sub: true, "_priority": 54654600 } }, "_priority": 0 }, "zioy_huangyi": { trigger: { source: "damageBegin1" }, priority: 0, forced: true, locked: true, filter: function (card, player, target) { return player.storage.huangyi_locked == false; }, init: function (player) { player.storage.huangyi_locked = false; }, content: function () { "step 0" if (player.storage.shulin_juexing == false) { player.recover(); trigger.num -= 1; event.finish(); } else { player.storage.huangyi_locked = true; if (trigger.player.storage.enhancementArray["locked"] == true) { trigger.player.unlockEnhancement(); } } "step 1" target = trigger.player; num = 0; c = ["strike", "attack", "defend", "miss", "hit"]; for (var i = 0; i < c.length; ++i) { if (Math.abs(trigger.player.storage.enhancementArray[c[i]]) != 0) num++; trigger.player.changeEnhancement(c[i], -2 * trigger.player.storage.enhancementArray[c[i]]); } trigger.num += num; // trigger.player.damage(trigger.num, trigger.nature); "step 2" player.storage.huangyi_locked = false; // trigger.cancel(); }, "_priority": 0 }, "zioy_t": { enable: "phaseUse", frequent: false, filter: function (event, player) { return true; }, content: function () { player.addDamageMitigationer(0.25, "zioy_t"); if ([true, false].randomGet()) { player.removeDamageMitigationer("zioy_t"); } // player.addMark("zioy_t",0.5) // game.log(player.countMark('zioy_t')) // game.changeGlobalStatus("test", 2, false) // game.changeGlobalStatus(["xiyu", "rerang"].randomGet(), 5, 4, "phase"); // if([false,true].randomGet()) // player.addDamageLimiter(1,'test123456') // else{ // player.removeDamageLimiter('test123456') // } // for(var i in _status.event){ // game.log(i," ==> ",_status.event[i]) // } // game.log(_status.event.name) // game.changeGlobalStatusEnd(-1, -999); // // game.changeGlobalStatus("mizhang", 2, 1, true) // // game.clearGlobalStatus(false) // // game.clearGlobalStatus(true) // // game.changeGlobalStatus("mizhang", 2, 1) // // player.addBuffImmune(["shuimian", "ranshao"]); // player.addBuffImmune("all", true); // if ([true, false].randomGet()) player.removeBuffImmune("all"); // player.addBuff(["shuimian", "bingdong"].randomGet(), [null, player].randomGet(), [true, false].randomGet()); // // player.removeBuff('all'); // num = 6; // if (player.storage.enhancementArray["miss"] != 0) num = -6; // player.changeEnhancement("all", num); // player.lockEnhancement(1, "round"); // player.addSkill('jiang'); // var p = player.next; // while(p != player){ // game.log(p,p.storage.enhancementArray['miss']); // p = p.next; // } }, init: function (player) {}, subSkill: { "t1": { trigger: { player: "damageBegin3" }, frequent: false, filter: function (event, player) { return false; }, content: function () { // trigger.cancel(); // player.say("test"); // trigger.num /= 10 }, sub: true, "_priority": 0 } }, group: ["zioy_t_t1"], "_priority": 0 }, "zioy_shuohui": { trigger: { player: ["dieBefore", "dying"] }, direct: true, unique: true, forceunique: true, filter: function (event, player) { return player.hp < player.maxHp; }, init: function (player) { player.storage.shuohui_locked = false; }, logTarget: "player", content: function () { trigger.cancel(); for (var i = 0; i < _status.dying.length; ++i) { if (_status.dying[i] == player) { _status.dying.splice(i, 1); } } }, group: ["zioy_shuohui_damageBegin", "zioy_shuohui_recoverBegin", "zioy_shuohui_phase", "zioy_shuohui_phaseJieshu"], mod: { maxHandcard: function (player, num) { return player.maxHp - player.hp; } }, subSkill: { damageBegin: { trigger: { player: ["loseHpBegin", "damageBegin1"] }, priority: 43, direct: true, unique: true, forceunique: true, filter: function (event, player) { return player.storage.shuohui_locked == false; }, logTarget: "player", content: function () { "step 0" player.storage.shuohui_locked = true; "step 1" trigger.cancel(); if (trigger.source != null) player.recover(trigger.num, trigger.source, trigger.cards, trigger.card); "step 2" player.storage.shuohui_locked = false; "step 3" event.forceDie = true; if ((_status.dying.contains(player) && player.isAlive()) || player.hp < player.maxHp) { event.finish(); return; } _status.dying.unshift(player); game.broadcast(function (list) { _status.dying = list; }, _status.dying); event.trigger("dying"); game.log(player, "濒死"); "step 4" delete event.filterStop; if (player.hp < player.maxHp || event.nodying) { _status.dying.remove(player); game.broadcast(function (list) { _status.dying = list; }, _status.dying); event.finish(); } else if (!event.skipTao) { var next = game.createEvent("_save"); var start = false; var starts = [_status.currentPhase, event.source, event.player, game.me, game.players[0]]; for (var i = 0; i < starts.length; i++) { if (get.itemtype(starts[i]) == "player") { start = starts[i]; break; } } next.player = start; next._trigger = event; next.triggername = "_save"; next.forceDie = true; next.setContent(function () { "step 0" event.dying = trigger.player; if (!event.acted) event.acted = []; "step 1" if (trigger.player.isDead()) { event.finish(); return; } event.acted.push(player); if ( lib.config.tao_enemy && event.dying.side != player.side && lib.config.mode != "identity" && lib.config.mode != "guozhan" && !event.dying.hasSkillTag("revertsave") ) { event._result = { bool: false }; } else if (player.canSave(event.dying)) { player.chooseToUse({ filterCard: function (card, player, event) { event = event || _status.event; return lib.filter.cardSavable(card, player, event.dying); }, dyingPlayer: trigger.player, filterTarget: function (card, player, target) { if (target != _status.event.dying) return false; if (!card) return false; var info = get.info(card); if (!info.singleCard || ui.selected.targets.length == 0) { var mod = game.checkMod(card, player, target, "unchanged", "playerEnabled", player); if (mod == false) return false; var mod = game.checkMod(card, player, target, "unchanged", "targetEnabled", target); if (mod != "unchanged") return mod; } return true; }, prompt: function (event) { var handTip = event.handTip; var player = event.player; var target = event.dyingPlayer; if (player != target) { handTip.appendText(get.translation(target), "player"); handTip.appendText("濒死,需要"); handTip.appendText(1, "number"); handTip.appendText("个桃,是否对其使用桃?"); } else { handTip.appendText("你当前体力值为"); handTip.appendText(target.hp, "number"); handTip.appendText(",需要"); handTip.appendText(1, "number"); handTip.appendText("个桃,是否出桃?"); } return ""; }, ai1: function (card) { if (typeof card == "string") { var info = get.info(card); if (info.ai && info.ai.order) { if (typeof info.ai.order == "number") { return info.ai.order; } else if (typeof info.ai.order == "function") { return info.ai.order(); } } } return 1; }, ai2: get.effect_use, type: "dying", targetRequired: true, dying: event.dying }); } else { event._result = { bool: false }; } "step 2" if (result.bool) { var player = trigger.player; player.hp--; if (player.hp >= player.maxHp && !trigger.nodying && !player.nodying && player.isAlive() && !player.isOut() && !player.removed) event.goto(0); else trigger.untrigger(); } else { for (var i = 0; i < 20; i++) { if (event.acted.contains(event.player.next)) { break; } else { event.player = event.player.next; if (!event.player.isOut()) { event.goto(1); break; } } } } }); } "step 5" _status.dying.remove(player); game.broadcast(function (list) { _status.dying = list; }, _status.dying); if (player.hp >= player.maxHp && !event.nodying && !player.nodying) player.die(event.reason); }, sub: true, "_priority": 4300 }, recoverBegin: { trigger: { player: ["recoverBegin"] }, direct: true, unique: true, forceunique: true, filter: function (event, player) { return player.storage.shuohui_locked == false; }, logTarget: "player", content: function () { "step 0" player.storage.shuohui_locked = true; "step 1" trigger.cancel(); if (trigger.source != null) { player.loseHp(trigger.num, trigger.source, trigger.cards, trigger.card); } // player.hp -=trigger.num; "step 2" player.storage.shuohui_locked = false; // game.log(player.hp); }, sub: true, "_priority": 0 }, phase: { trigger: { player: "phaseBegin" }, direct: true, content: function () { var next = player.phaseDiscard(); event.next.remove(next); trigger.next.push(next); var next = player.phaseUse(); event.next.remove(next); trigger.next.push(next); var next = player.phaseDraw(); event.next.remove(next); trigger.next.push(next); var next = player.phaseJudge(); event.next.remove(next); trigger.next.push(next); var next = player.phaseJieshu(); event.next.remove(next); trigger.next.push(next); }, sub: true, "_priority": 0 }, phaseJieshu: { trigger: { player: "phaseJieshu" }, direct: true, content: function () { var evt = _status.event.getParent("phase"); if (evt) { game.resetSkills(); _status.event = evt; _status.event.finish(); _status.event.untrigger(true); } }, sub: true, "_priority": 0 } }, "_priority": 0 }, "zioy_hexuchongxiang": { trigger: { player: ["loseHpBegin", "damageBegin3"] }, filter: function (event, player) { //防止一个时机重复触发 if (player.storage.hxcx_x1 < player.storage.hxcx_x && player.storage.hxcx_x1_flag) { player.storage.hxcx_x1++; player.storage.hxcx_x1_flag = false; } // game.log(player.storage.hxcx_x1, player.storage.hxcx_x,event.getParent().name) if (event.num > player.storage.hxcx_x) { return true; } else { return false; } }, priority: 13, forced: true, charlotte: true, unique: true, init: function (player) { var p = player; p.storage.hxcx_x = 0; p.storage.hxcx_x1 = -1; // 回合内满足1时机次数 p.storage.hxcx_x1_flag = true; // 修时机重复触发的bug p.storage.hxcx_count1 = 0; // 效果1触发次数 p.storage.hxcx_count2 = 0; // 复活次数 p.storage.yzyw_count1 = 0; // 月坠计数 p.gainShenqi = function (num) { if (num > 999) num = 999; if (num < 0) return; var p = this; var mark = "zioy_hexuchongxiang_mark"; var mark_count = p.countMark(mark); var num_gain = 0; var num_hp = 0; var num_hx = 0; while (num > 0) { num--; if (mark_count + num_gain + 1 <= p.maxHp) { num_gain++; } else if (p.hp + num_hp + 1 <= p.maxHp) { num_hp++; } else { num_hx++; } } // game.log(num_gain,num_hp,num_hx); if (num_gain > 0) p.addMark(mark, num_gain); if (num_hp > 0) p.recover(num_hp); // if(p.countMark(mark) > 0)p.markSkill(mark); if (num_hx > 0) { if (game.globalStatus.name != "shenlou") { game.changeGlobalStatus("shenlou", num_hx, "phase"); } else { game.changeGlobalStatusEnd(num_hx); } } _status.event.trigger("shenqi"); }; p.loseShenqi = function (num) { if (num > 999) num = 999; var p = this; var mark = "zioy_hexuchongxiang_mark"; var mark_count = p.countMark(mark); var num_lose = num; p.removeMark(mark, num_lose); _status.event.trigger("shenqi"); }; }, content: function () { player.storage.hxcx_count1++; var num1 = trigger.num - player.storage.hxcx_x + player.storage.hxcx_x1; player.gainShenqi(num1); trigger.num = player.storage.hxcx_x - player.storage.hxcx_x1; if (player.storage.hxcx_count1 > player.storage.hxcx_x + 1) { player.storage.hxcx_x *= 2; if (player.storage.hxcx_x == 0) player.storage.hxcx_x++; player.storage.hxcx_count1 = 0; } }, group: [ "zioy_hexuchongxiang_revive", "zioy_hexuchongxiang_damage", "zioy_hexuchongxiang_loseMaxHpEnd", "zioy_hexuchongxiang_phaseEnd", "zioy_hexuchongxiang_useCardAfter" ], subSkill: { mark: { mark: false, marktext: "蜃气", intro: { name: "蜃气" }, sub: true, "_priority": 0 }, revive: { trigger: { player: "dieBefore" }, forced: true, unique: true, forceunique: true, skillAnimation: true, animationColor: "thunder", filter: function (event, player) { var flag = false; var p = player.next; while (p != player) { if (p.maxHp >= player.maxHp) { flag = true; break; } p = p.next; } if (player.storage.hxcx_count2 < 2) { flag = true; } // if(flag == false && player.hp <= 0 && game.globalStatus.name == "shenlou"){ // } return player.hp > 0 || flag; }, logTarget: "player", content: function () { "step 0" if (player.hp > 0) { trigger.cancel(); for (var i = 0; i < _status.dying.length; ++i) { if (_status.dying[i] == player) { _status.dying.splice(i, 1); } } player.loseHp(player.hp); event.finish(); } "step 1" trigger.cancel(); player.storage.hxcx_count2++; player.gainMaxHp(player.storage.hxcx_count2 + 1); var num_mark = player.countMark("zioy_hexuchongxiang_mark"); player.removeMark("zioy_hexuchongxiang_mark", num_mark); player.changeHujia(num_mark); player.draw(num_mark); player.storage.hxcx_x = player.storage.hxcx_count2 - 1; player.storage.hxcx_count1 = 0; if (player.storage.yzyw_eq_flag) player.storage.yzyw_eq_flag = true; "step 2" player.recover(player.maxHp - player.hp); "step 3" if (player.hp < 0) { player.hp = player.maxHp; player.update(); } }, sub: true, "_priority": 0 }, damage: { trigger: { player: ["loseHpBegin", "damageBegin2", "phaseDrawBegin2"], source: ["damageBegin2"] }, filter: function (event, player) { return player.storage.hxcx_count2 > 0; }, priority: -301727, forced: true, charlotte: true, unique: true, direct: true, content: function () { trigger.num = parseInt(trigger.num * (player.storage.hxcx_count2 * 0.80001 + 1 + player.storage.yzyw_count1 * 0.2001)); }, sub: true, "_priority": -30172700 }, loseMaxHpEnd: { trigger: { player: ["loseMaxHpEnd"] }, filter: function (event, player) { return player.countMark("zioy_hexuchongxiang_mark") > player.maxHp; }, priority: -301727, forced: true, charlotte: true, unique: true, direct: true, content: function () { player.loseShenqi(player.countMark("zioy_hexuchongxiang_mark") - player.maxHp); }, sub: true, "_priority": -30172700 }, phaseEnd: { trigger: { player: ["phaseEnd"] }, filter: function (event, player) { return true; }, priority: -30174563, charlotte: true, unique: true, direct: true, content: function () { player.storage.hxcx_x1_flag = true; player.storage.hxcx_x1 = -1; }, sub: true, "_priority": -301712300 }, useCardAfter: { trigger: { global: ["useCardAfter", "damageEnd"], player: ["loseHpBegin", "damageBegin3"] }, filter: function (event, player) { return true; }, priority: -301754154563, charlotte: true, unique: true, direct: true, content: function () { player.storage.hxcx_x1_flag = true; }, sub: true, "_priority": -30171230236 } }, "_priority": 1300 }, "zioy_yuezhuiyunwei": { enable: "phaseUse", usable: 1, filter: function (event, player) { return player.countMark("zioy_hexuchongxiang_mark") > 0; }, init: function (player) { player.addBuffImmune("shuimian", Infinity); player.storage.shenlou_noLoseHp = true; if (!player.storage.yzyw_count1) player.storage.yzyw_count1 = 0; player.storage.yzyw_eq_flag = true; }, content: function () { "step 0" num = player.countMark("zioy_hexuchongxiang_mark"); event.num = num; player.loseShenqi(num); if (game.globalStatus.name != "shenlou") { game.changeGlobalStatus("shenlou", num, "phase"); } else { game.changeGlobalStatusEnd(num); } c = ["attack", "miss", "defend", "hit", "strike"]; for (var i = 0; i < c.length; ++i) { if (player.storage.enhancementArray[c[i]] > 0) continue; player.changeEnhancement(c[i], -2 * player.storage.enhancementArray[c[i]]); } player.removeBuff("all"); player .chooseTarget( "令一名角色获得" + event.num + "点护甲", function (card, player, target) { return true; }, true ) .set("ai", function (target) { var att = get.attitude(_status.event.player, target); return att; }); "step 1" var target = result.targets[0]; target.changeHujia(event.num); player .chooseTarget( "令一名角色恢复" + event.num + "点体力", function (card, player, target) { return true; }, true ) .set("ai", function (target) { var att = get.attitude(_status.event.player, target); return att; }); "step 2" var target = result.targets[0]; target.recover(event.num); player .chooseTarget( "令一名角色摸" + event.num + "张牌", function (card, player, target) { return true; }, true ) .set("ai", function (target) { var att = get.attitude(_status.event.player, target); return att; }); "step 3" var target = result.targets[0]; target.draw(event.num); }, group: [ "zioy_yuezhuiyunwei_0", "zioy_yuezhuiyunwei_501", "zioy_yuezhuiyunwei_502", "zioy_yuezhuiyunwei_1", "zioy_yuezhuiyunwei_6", "zioy_yuezhuiyunwei_eq" ], ai: { order: 1, result: { player: function (player) { if (player.countMark("zioy_hexuchongxiang_mark") == player.maxHp) return 999; x = player.storage.enhancementArray["attack"]; if (x > -1) { return -10; } return 120; } } }, subSkill: { "0": { trigger: { global: ["phaseBegin"] }, filter: function (event, player) { return player.countMark("zioy_hexuchongxiang_mark") <= 0.5 * player.maxHp; }, direct: true, priority: 4544684, content: function () { player.changeEnhancement("attack", "defend", -1); }, sub: true, "_priority": 454468400 }, "1": { trigger: { target: "useCardToTargeted" }, filter: function (event, player) { return player.countMark("zioy_hexuchongxiang_mark") > 0.25 * player.maxHp; }, direct: true, priority: 45411284, content: function () { target = trigger.player; c = target.getCards("hej"); for (let i = 0; i < c.length; ++i) { if (c[i].name == trigger.card.name) { target.discard(c[i]); break; } } }, sub: true, "_priority": 4541128400 }, "6": { trigger: { source: "damageEnd" }, filter: function (event, player) { return event.num > 1 && player.countMark("zioy_hexuchongxiang_mark") > 6; }, direct: true, priority: 4584184, content: function () { player.loseMaxHp(1); trigger.player.gainMaxHp(1); player.storage.yzyw_count1++; }, sub: true, "_priority": 458418400 }, "501": { trigger: { global: ["shenqi", "roundStart"] }, filter: function (event, player) { return true; }, direct: true, priority: 44684, content: function () { if (player.countMark("zioy_hexuchongxiang_mark") <= 0.5 * player.maxHp) { if (!player.storage._disableJudge) player.disableJudge(); for (let i in lib.buffMiao) { if (i != "shuimian") player.addBuffImmune(i, Infinity); } } else { if (player.storage._disableJudge) player.enableJudge(); for (let i in lib.buffMiao) { if (i != "shuimian") player.removeBuffImmune(i, Infinity); } } }, sub: true, "_priority": 4468400 }, "502": { trigger: { player: "turnOverBefore" }, priority: 21220, direct: true, filter: function (event, player) { return !player.isTurnedOver() && player.countMark("zioy_hexuchongxiang_mark") <= 0.5 * player.maxHp; }, content: function () { trigger.cancel(); game.log(player, "取消了翻面"); }, sub: true, "_priority": 2122000 }, eq: { trigger: { player: "useCardToTargeted" }, filter: function (event, player) { return player.countMark("zioy_hexuchongxiang_mark") == player.maxHp && player.storage.yzyw_eq_flag == true; }, direct: true, priority: 4521284, content: function () { target = trigger.target; var num = Math.abs(player.maxHp - target.maxHp); var limit = player.storage.hxcx_count2; if (num > limit) num = limit; if (num != 0) { if (player.maxHp < target.maxHp) { player.gainMaxHp(num); target.loseMaxHp(num); } else if (player.maxHp > target.maxHp) { player.loseMaxHp(num); target.gainMaxHp(num); } } num = Math.abs(player.hp - target.hp); if (num > limit) num = limit; if (num != 0) { if (player.hp < target.hp) { player.recover(num); target.loseHp(num); } else if (player.hp > target.hp) { player.loseHp(num); target.recover(num); } } player.storage.yzyw_eq_flag = false; }, sub: true, "_priority": 452128400 } }, "_priority": 0 }, "zioy_pianhongxiusao": { "_priority": 0 }, "zioy_hanbosuliu": { "_priority": 0 }, "zioy_zhumingxiangan": { "_priority": 0 }, "zioy_yujin": { mark: false, marktext: "烬", intro: { name: "烬" }, init: function (player) { player.addMark("zioy_yujin", 5); player.addDamageLimiter(1, "zioy_yujin"); player.storage.zioy_yujin_gainhujia = 0; player.storage.zioy_yujin_hujia = player.hujia > 0; }, trigger: { player: "damageLimit" }, forced: true, filter: function (event, player) { return player.countMark("zioy_yujin") > 0; }, content: function () { player.removeMark("zioy_yujin", 2); player.storage.zioy_yujin_gainhujia++; if (player.countMark("zioy_yujin") <= 0) { player.removeDamageLimiter("zioy_yujin"); } }, group: ["zioy_yujin_gainHujia", "zioy_yujin_hujiaBroken", "zioy_yujin_damageEnd", "zioy_yujin_loseHp"], subSkill: { loseHp: { trigger: { player: "loseHpBegin" }, forced: true, filter: function (event, player) { return player.countMark("zioy_yujin") > 0; }, content: function () { trigger.num = 0; player.removeMark("zioy_yujin", 2); player.storage.zioy_yujin_gainhujia++; if (player.countMark("zioy_yujin") <= 0) { player.removeDamageLimiter("zioy_yujin"); } }, sub: true, "_priority": 0 }, gainHujia: { trigger: { player: "changeHujiaEnd" }, filter: function (event, player) { return player.hujia > 0; }, direct: true, content: function () { player.storage.zioy_yujin_hujia = true; }, sub: true, "_priority": 0 }, hujiaBroken: { trigger: { player: "damageEnd" }, forced: true, filter: function (event, player) { return player.storage.zioy_yujin_hujia && player.hujia == 0; }, priority: 212241231350, content: function () { player.storage.zioy_yujin_hujia = false; player.recover(); if (trigger.source != null) { player.discardPlayerCard(trigger.source, "hej", false, "visible", [1, 2]); trigger.source.damage(1, "fire"); } }, sub: true, "_priority": 21224123135000 }, damageEnd: { trigger: { player: "damageEnd" }, forced: true, priority: -212240, filter: function (event, player) { return player.storage.zioy_yujin_gainhujia && player.storage.zioy_yujin_gainhujia > 0; }, content: function () { player.changeHujia(1); player.storage.zioy_yujin_gainhujia--; }, sub: true, "_priority": -21224000 } }, "_priority": 0 }, "zioy_xumie": { trigger: { source: "damageEnd" }, forced: true, filter: function (event, player) { // return event.getParent(2).name!='zioy_xumie'; return player.storage.zioy_xumie_flag; }, init: function (player) { player.storage.zioy_xumie_flag = true; }, content: function () { "step 0" player.storage.zioy_xumie_flag = false; "step 1" if (!trigger.player.storage.zioy_xumie) { trigger.player.storage.zioy_xumie = 0; } trigger.player.storage.zioy_xumie++; if (trigger.player.storage.zioy_xumie > 1) { player.discardPlayerCard(trigger.player, "hej", false, "visible", [1, 2]); } if (trigger.player.storage.zioy_xumie > 2) { trigger.player.addSkill("zioy_xumie_1"); } if (trigger.player.storage.zioy_xumie > 3) { trigger.player.damage(1); } if (trigger.player.storage.zioy_xumie > 4) { player.addMark("zioy_yujin", 1); player.addDamageLimiter(1, "zioy_yujin"); } "step 2" player.storage.zioy_xumie_flag = true; }, mod: { inRange: function (from, to) { if (to.storage.zioy_xumie && to.storage.zioy_xumie > 0) return true; } }, group: ["zioy_xumie_0"], subSkill: { "0": { trigger: { player: "useCard" }, direct: true, filter: function (event, player) { return ( event.card.name == "sha" && game.hasPlayer(current => { return current != player && current.storage.zioy_xumie && current.storage.zioy_xumie > 0; }) ); }, content: function () { trigger.directHit.addArray( game.filterPlayer(current => { return current != player && current.storage.zioy_xumie && current.storage.zioy_xumie > 0; }) ); }, sub: true, "_priority": 0 }, "1": { trigger: { source: "damageBegin1" }, forced: true, filter: function (event, player) { return true; }, priority: 32.01, content: function () { trigger.num -= 1; player.removeSkill("zioy_xumie_1"); }, sub: true, "_priority": 3201 } }, "_priority": 0 }, "zioy_v07yuxie": { trigger: { global: "phaseBefore", player: "enterGame" }, forced: true, filter: function (event, player) { return event.name != "phase" || game.phaseNumber == 0; }, mark: true, marktext: "驭械", intro: { name: "驭械", mark: function (dialog, storage, player) { if (player.countCards("h") < player.hp) return "当前处于冷却状态"; return "当前处于暴走状态"; } }, init: function (player) { player.unmarkSkill("zioy_v07yuxie"); }, content: function () { player.changeHujia(4); player.addSkill("zioy_v07yuxie_yuxie"); }, group: ["zioy_v07yuxie_exitYuxie"], subSkill: { exitYuxie: { trigger: { player: ["damageEnd", "changeHujiaEnd"] }, direct: true, filter: function (event, player) { return player.hasSkill("zioy_v07yuxie_yuxie") && player.hujia == 0; }, priority: 22, content: function () { player.removeSkill("zioy_v07yuxie_yuxie"); }, sub: true, "_priority": 2200 }, yuxie: { init: function (player) { player.markSkill("zioy_v07yuxie"); player.removeDamageLimiter(1, "zioy_v07yuxie_yuxie"); c = ["strike", "attack", "defend", "miss", "hit"]; for (var i = 0; i < c.length; ++i) { player.changeEnhancement(c[i], -1 * player.storage.enhancementArray[c[i]]); } player.removeBuff("all"); var cards = player.getCards("j"); if (cards.length) { player.gain(cards); } game.log(player, "已进入驭械状态"); }, onremove: function (player) { player.unmarkSkill("zioy_v07yuxie"); player.addDamageLimiter(1, "zioy_v07yuxie_yuxie"); c = ["strike", "attack", "defend", "miss", "hit"]; for (var i = 0; i < c.length; ++i) { player.changeEnhancement(c[i], -1 * player.storage.enhancementArray[c[i]]); } player.removeBuff("all"); var cards = player.getCards("j"); if (cards.length) { player.gain(cards); } game.log(player, "已退出驭械状态"); }, mod: { globalFrom: function (from, to, current) { if (from.hp <= from.countCards("h")) return current - 2; }, cardUsable: function (card, player) { if (player.hp <= player.countCards("h")) return true; }, maxHandcard: function (player, num) { return num + player.hujia; } }, group: [ "zioy_v07yuxie_yuxie1", "zioy_v07yuxie_yuxie2", "zioy_v07yuxie_yuxie3", "zioy_v07yuxie_yuxie4", "zioy_v07yuxie_yuxie5", "zioy_v07yuxie_yuxie6", "zioy_v07yuxie_yuxie7" ], sub: true, "_priority": 0 }, "yuxie1": { trigger: { player: "useCard" }, direct: true, filter: function (event, player) { if (player.countCards("h") < player.hp) return false; return ( event.card.name == "sha" && game.hasPlayer(current => { return current != player; }) ); }, content: function () { trigger.directHit.addArray( game.filterPlayer(current => { return current != player; }) ); }, sub: true, "_priority": 0 }, "yuxie2": { trigger: { player: "useCardToPlayer" }, forced: true, filter: function (event, player) { if (player.countCards("h") >= player.hp) return false; if (get.type2(event.card) != "trick") return false; return player != event.target; //event.targets.some(i=>i!=player); }, content: function () { player.discardPlayerCard(trigger.target, "hej", false, [1, 2]); }, sub: true, "_priority": 0 }, "yuxie3": { trigger: { player: "damageBegin1" }, direct: true, filter: function (event, player) { if (player.countCards("h") >= player.hp) return false; return event.num > 1; }, priority: 0.4547, content: function () { trigger.num--; player.recover(); }, sub: true, "_priority": 45.47 }, "yuxie4": { trigger: { player: "useCard" }, forced: true, priority: 0.4457, filter: function (event, player) { if (player.countCards("he") == 0) return false; if (player.countCards("h") < player.hp) return false; // if(event.card.name=='sha') return true; return true; }, autodelay: true, content: function () { player.chooseToDiscard(true, "hej"); }, sub: true, "_priority": 44.57 }, "yuxie5": { trigger: { player: "useCardEnd" }, forced: true, filter: function (event, player) { if (player.countCards("h") >= player.hp) return false; for (var i = 0; i < player.storage.zioy_yuxie5_cards.length; i++) { for (var c of event.cards) { if (player.storage.zioy_yuxie5_cards[i] == c) { return false; } } } return event.cards && player.storage.zioy_yuxie5_flag && get.type(event.card) != "equip"; }, init: function (player) { player.storage.zioy_yuxie5_flag = true; player.storage.zioy_yuxie5_cards = []; }, content: function () { player.gain(trigger.cards); for (var c of trigger.cards) { player.storage.zioy_yuxie5_cards.push(c); } player.storage.zioy_yuxie5_flag = false; }, sub: true, "_priority": 0 }, "yuxie6": { trigger: { global: "phaseEnd" }, direct: true, filter: function (event, player) { return true; }, priority: 0.6854, autodelay: true, content: function () { player.storage.zioy_yuxie5_flag = true; player.storage.zioy_yuxie5_cards = []; }, sub: true, "_priority": 68.54 }, "yuxie7": { trigger: { player: "gainEnd" }, direct: true, filter: function (event, player) { return player.countCards("h") > player.hp; }, autodelay: true, content: function () { player.storage.zioy_yuxie5_flag = true; }, sub: true, "_priority": 0 } }, "_priority": 0 }, "zioy_f42chongzai": { enable: "phaseUse", usable: 1, filter: function (event, player) { return player.hasSkill("zioy_v07yuxie_yuxie"); }, check: function (event, player) { return player.countCards("h") < player.hp; }, init: function (player) { player.storage.zioy_f42chongzai_hp = 0; player.storage.zioy_f42chongzai_hujia = 0; }, content: function () { "step 0" event.i = 0; "step 1" game.players[event.i].damage(1, "nosource", "nocard"); player.line(game.players[event.i]); event.i++; "step 2" if (event.i < game.players.length) { event.goto(1); } else { player.draw(3); if (player.hp == player.maxHp) { player.hp -= 1; player.storage.zioy_f42chongzai_hp += 1; } if (player.hujia && player.hujia > 0) { player.changeHujia(-1); player.storage.zioy_f42chongzai_hujia += 1; } } }, ai: { order: 1, result: { player: 2.5 } }, group: ["zioy_f42chongzai_1"], subSkill: { "1": { enable: "phaseUse", usable: 1, filter: function (event, player) { // return true; return !player.hasSkill("zioy_v07yuxie_yuxie"); }, filterCard: function (card) { var suit = get.suit(card); for (var i = 0; i < ui.selected.cards.length; i++) { if (get.suit(ui.selected.cards[i]) == suit) return false; } return true; }, complexCard: true, selectCard: [2, 4], check: function (card, player) { return true; }, mark: false, marktext: "能量", intro: { name: "能量" }, content: function () { "step 0" var num = cards.length; if (num < 4) { player.addMark("zioy_f42chongzai_1", num - 1); } else { player.addMark("zioy_f42chongzai_1", num); } if (player.hp > 1) { player.addMark("zioy_f42chongzai_1", player.hp - 1); player.hp = 1; } player.addSkill("zioy_f42chongzai_2"); "step 1" if (player.storage.zioy_f42chongzai_hp > 0) { player.recover(player.storage.zioy_f42chongzai_hp); player.storage.zioy_f42chongzai_hp = 0; } }, ai: { order: 1, result: { player: 1 } }, sub: true, "_priority": 0 }, "2": { trigger: { global: "phaseEnd" }, direct: true, priority: 3254, filter: function (event, player) { return player.countMark("zioy_f42chongzai_1") < player.maxHp; }, content: function () { player.addMark("zioy_f42chongzai_1", 1); }, group: ["zioy_f42chongzai_3"], sub: true, "_priority": 325400 }, "3": { trigger: { global: "phaseEnd" }, forced: true, skillAnimation: true, animationColor: "thunder", unique: true, priority: 3278, filter: function (event, player) { return player.countMark("zioy_f42chongzai_1") >= player.maxHp; }, autodelay: true, content: function () { num = player.countMark("zioy_f42chongzai_1"); player.removeMark("zioy_f42chongzai_1", num); num += player.storage.zioy_f42chongzai_hujia; player.changeHujia(num); player.storage.zioy_f42chongzai_hujia = 0; if (num > player.maxHp) { player.gainMaxHp(1); } player.removeSkill("zioy_f42chongzai_2"); player.addSkill("zioy_v07yuxie_yuxie"); }, sub: true, "_priority": 327800 } }, "_priority": 0 }, "zioy_yuemai": { trigger: { source: "damageEnd" }, locked: true, forced: true, filter: function (event, player) { return get.status(game.globalStatus.name).type != "environment"; }, content: function () { "step 0" game.changeGlobalStatus("mizhang", 8); "step 1" if (game.globalStatus.name == "mizhang") { player.changeHujia(2); } }, mod: { globalFrom: function (from, to, distance) { if (game.globalStatus.name == "mizhang") return distance - 1; } }, group: ["zioy_yuemai_jianshang"], subSkill: { jianshang: { trigger: { global: "changeGlobalStatus_End" }, direct: true, filter: function () { return true; }, content: function () { if (game.globalStatus.name == "mizhang") { player.addDamageMitigationer(0.5, "zioy_yuemai_jianshang"); } else { player.removeDamageMitigationer("zioy_yuemai_jianshang"); } }, sub: true, "_priority": 0 } }, "_priority": 0 }, "zioy_liechenyuyou_water": { init: function (player) { player.storage.kami_protect = "water"; }, forced: true, unique: true, charlotte: true, locked: true, priority: 52345, trigger: { player: "phaseDrawBegin" }, content: function () { trigger.num += 2; }, group: ["zioy_liechenyuyou_water_draw1", "zioy_liechenyuyou_water_damage"], subSkill: { "draw1": { forced: true, unique: true, charlotte: true, locked: true, priority: 52345, trigger: { player: ["phaseEnd", "roundStart"] }, content: function () { player.draw(1); }, sub: true, "_priority": 5234500 }, damage: { forced: true, unique: true, charlotte: true, locked: true, priority: 52345, trigger: { source: "damageBegin1" }, filter: function (event, player) { if (event.player.group == "shen") return false; return !event.player.storage.kami_protect || event.player.storage.kami_protect == "fire"; }, content: function () { trigger.num += 1; }, sub: true, "_priority": 5234500 } }, "_priority": 5234500 }, "zioy_pinghuqiuyue": { init: function (player) { player.addDamageLimiter(2, "zioy_pinghuqiuyue"); player.storage.pinghuqiuyue_targetHasHujia = false; }, onremove: function (player) { player.removeDamageLimiter("zioy_pinghuqiuyue"); }, trigger: { player: "loseHpEnd" }, mod: { maxHandcardBase: function (player, num) { num -= 4; if (num < 3) num = 3; return num; } }, forced: true, direct: true, priority: 52345, mark: true, marktext: "怒气", intro: { name: "怒气" }, content: function () { player.addTempSkill("zioy_pinghuqiuyue_noLoseHp", "roundStart"); player.zioy_get_nuqi = function () { return this.countMark("zioy_pinghuqiuyue"); }; }, group: [ "zioy_pinghuqiuyue_damage2hujia", "zioy_pinghuqiuyue_damageEndS", "zioy_pinghuqiuyue_damageEndP", "zioy_pinghuqiuyue_damageLimit", "zioy_pinghuqiuyue_phaseEnd", "zioy_pinghuqiuyue_dyingBegin" ], subSkill: { noLoseHp: { trigger: { player: "loseHpBegin" }, forced: true, direct: true, priority: 52345, content: function () { trigger.cancel(); }, sub: true, "_priority": 5234500 }, "damage2hujia": { trigger: { source: "damageBegin1" }, forced: true, priority: 523245, filter: function (event, player) { return event.player && event.player.hujia > 0; }, content: function () { trigger.num += 1; player.storage.pinghuqiuyue_targetHasHujia = true; }, sub: true, "_priority": 52324500 }, damageEndS: { trigger: { source: "damageEnd" }, forced: true, priority: 52345, filter: function (event, player) { return true; }, content: function () { if (player.storage.pinghuqiuyue_targetHasHujia) { player.storage.pinghuqiuyue_targetHasHujia = false; if (trigger.player.hujia == 0) { player.addMark("zioy_pinghuqiuyue", 7); } } player.addMark("zioy_pinghuqiuyue", trigger.num); }, sub: true, "_priority": 5234500 }, damageEndP: { trigger: { player: "damageEnd" }, forced: true, priority: 524345, filter: function (event, player) { return true; }, content: function () { player.addMark("zioy_pinghuqiuyue", trigger.num); }, sub: true, "_priority": 52434500 }, dyingBegin: { trigger: { source: "dyingBegin" }, forced: true, priority: 524545, filter: function (event, player) { return true; }, content: function () { player.addMark("zioy_pinghuqiuyue", 7); }, sub: true, "_priority": 52454500 }, phaseEnd: { trigger: { player: "phaseEnd" }, forced: true, priority: 523415, filter: function (event, player) { return player.countMark("zioy_pinghuqiuyue") > 0; }, content: function () { player.removeMark("zioy_pinghuqiuyue", 1); }, sub: true, "_priority": 52341500 }, damageLimit: { trigger: { player: "damageLimit" }, forced: true, priority: 5415, content: function () { player.addMark("zioy_pinghuqiuyue", 7); }, sub: true, "_priority": 541500 } }, "_priority": 5234500 }, "zioy_yurangzhijian": { enable: "phaseUse", usable: 1, unique: true, init: function (player) { player.storage.yurangzhijian_nuqi = 0.0; player.storage.yurangzhijian_count = 0; }, content: function () { nuqi = player.countMark("zioy_pinghuqiuyue"); player.removeMark("zioy_pinghuqiuyue", nuqi); m = 0; if (player.hasSkill("zioy_yurangzhijian_chengsheng")) { m = player.countMark("zioy_yurangzhijian_chengsheng"); if (m < 4) { m = m - 1; } else { m = 3; } player.removeMark("zioy_yurangzhijian_chengsheng", m); } game.changeGlobalStatus("xiyu", 5, "round"); player.addBuffImmune("all", 5, "round"); x = player.storage.yurangzhijian_count; y = parseInt(0 - x + parseInt(nuqi / 3) + m); if (y > 0) { player.recover(y); } else if (y < 0) { if (player.hasSkill("zioy_yurangzhijian_chengsheng")) { player.chooseToDiscard("h", Math.min(player.countCards("h"), -y), true); } else { player.chooseToDiscard("he", Math.min(player.countCards("he"), -y), true); } } if (player.hasSkill("zioy_yurangzhijian_chengsheng")) { player.addSkill("zioy_yurangzhijian_damage"); } if (player.storage.yurangzhijian_nuqi + nuqi >= 10 && !player.hasSkill("zioy_yurangzhijian_chengsheng")) { player.addSkill("zioy_yurangzhijian_chengsheng"); player.addMark("zioy_yurangzhijian_chengsheng", 1); } player.storage.yurangzhijian_nuqi += nuqi / 3; player.storage.yurangzhijian_count += 1.5; }, ai: { order: 1, result: { player: function (player) { x = player.storage.yurangzhijian_count; n = player.countMark("zioy_pinghuqiuyue"); m = player.countMark("zioy_yurangzhijian_chengsheng"); y = parseInt(0 - x + n / 3 + m); if (player.storage.yurangzhijian_nuqi + n >= 10 && !player.hasSkill("zioy_yurangzhijian_chengsheng")) { return 100; } if (player.hp < 3 && y > 0) { return 100; } return Math.min(y, player.maxHp - player.hp) - 1; } } }, subSkill: { damage: { trigger: { player: "damageBegin" }, forced: true, priority: 54145, content: function () { trigger.num = 0; player.removeSkill("zioy_yurangzhijian_damage"); }, sub: true, "_priority": 5414500 }, chengsheng: { mark: true, marktext: "盛怒", charlotte: true, unique: true, direct: true, intro: { name: "盛怒" }, init: function (player) { game.log(player, "已进入盛怒"); }, trigger: { player: "useCard" }, filter: function (event, player) { return event.card && get.tag(event.card, "damage"); }, content: function () { if (player.countMark("zioy_yurangzhijian_chengsheng") < 7) { player.addMark("zioy_yurangzhijian_chengsheng", 1); } }, mod: { cardUsable: function (card, player, num) { if (card.name == "sha") return num + parseInt(player.countMark("zioy_yurangzhijian_chengsheng") * 0.43); }, canBeDiscarded: function (card) { if (get.position(card) == "e") return false; } }, group: ["zioy_yurangzhijian_wushuang", "zioy_yurangzhijian_damageEnd", "zioy_yurangzhijian_damageBegin"], sub: true, "_priority": 0 }, wushuang: { trigger: { player: "useCardToPlayered" }, forced: true, filter: function (event, player) { return event.card.name == "sha" && !event.getParent().directHit.contains(event.target); }, logTarget: "target", content: function () { var id = trigger.target.playerid; var map = trigger.getParent().customArgs; if (!map[id]) map[id] = {}; if (typeof map[id].shanRequired == "number") { n = parseInt(player.countMark("zioy_yurangzhijian_chengsheng") / 2.3); if (n == 0) { n = 1; } map[id].shanRequired += n; } else { map[id].shanRequired = 2; } }, ai: { "directHit_ai": true, skillTagFilter: function (player, tag, arg) { if (arg.card.name != "sha" || arg.target.countCards("h", "shan") > parseInt(player.countMark("zioy_yurangzhijian_chengsheng") / 2.3)) return false; } }, sub: true, "_priority": 0 }, damageEnd: { trigger: { source: "damageEnd" }, forced: true, priority: 5243145, filter: function (event, player) { return true; }, content: function () { player.recover(parseInt(trigger.num * 0.05 * player.countMark("zioy_yurangzhijian_chengsheng"))); if (parseInt(trigger.num * 0.15 * player.countMark("zioy_yurangzhijian_chengsheng")) > 0) player.discardPlayerCard( trigger.player, "hej", true, Math.min(trigger.player.countCards("hej"), parseInt(trigger.num * 0.15 * player.countMark("zioy_yurangzhijian_chengsheng"))) ); }, sub: true, "_priority": 524314500 }, damageBegin: { trigger: { source: "damageBegin1" }, direct: true, priority: 5045, filter: function (event, player) { return true; }, content: function () { trigger.num += parseInt(0.58 * player.countMark("zioy_yurangzhijian_chengsheng")); }, sub: true, "_priority": 504500 } }, "_priority": 0 }, "zioy_liechenyuyou_fire": { init: function (player) { player.storage.kami_protect = "fire"; }, forced: true, unique: true, charlotte: true, locked: true, priority: 52345, trigger: { player: "phaseDrawBegin" }, content: function () { trigger.num += 2; }, group: ["zioy_liechenyuyou_fire_draw1", "zioy_liechenyuyou_fire_damage"], subSkill: { "draw1": { forced: true, unique: true, charlotte: true, locked: true, priority: 52345, trigger: { player: ["phaseEnd", "roundStart"] }, content: function () { player.draw(1); }, sub: true, "_priority": 5234500 }, damage: { forced: true, unique: true, charlotte: true, locked: true, priority: 52345, trigger: { source: "damageBegin1" }, filter: function (event, player) { if (event.player.group == "shen") return false; return !event.player.storage.kami_protect || event.player.storage.kami_protect == "wood"; }, content: function () { trigger.num += 1; }, sub: true, "_priority": 5234500 } }, "_priority": 5234500 }, "zioy_zhuxingwuchang": { filter: function (event, player) { return player.countMark("zioy_yongyeqingxiao") == 0; }, direct: true, locked: true, trigger: { source: "damageEnd" }, content: function () { "step 0" player.loseHp(1); "step 1" if (game.globalStatus.name != "huoshan") { player.recover(2); } else { player.recover(4); } "step 2" if (game.roundNumber % 2 == 1) { game.changeGlobalStatus("rerang", 2); } else { game.changeGlobalStatus("huoshan", 2); } }, group: ["zioy_zhuxingwuchang_damageBegin", "zioy_zhuxingwuchang_damageEnd", "zioy_zhuxingwuchang_useCard"], subSkill: { damageBegin: { filter: function (event, player) { return get.status(game.globalStatus.name).type == "weather"; }, direct: true, locked: true, trigger: { player: ["useCardToBefore"] }, content: function () { trigger.card.nature = "fire"; }, "_priority": 165463463456, sub: true }, useCard: { trigger: { player: "useCard" }, direct: true, locked: true, filter: function (event, player) { return get.status(game.globalStatus.name).type == "environment"; }, content: function () { trigger.directHit.addArray(game.filterPlayer()); }, sub: true, "_priority": 0 }, damageEnd: { filter: function (event, player) { return get.status(game.globalStatus.name).type == "weather"; }, direct: true, locked: true, trigger: { source: "damageEnd" }, content: function () { "step 0" if (trigger.player.countCards("hej") > 0) player.discardPlayerCard(trigger.player, "hej", true, 1); }, sub: true, "_priority": 123 } }, "_priority": 16 }, "zioy_zhufashengmie": { trigger: { player: "dieBefore" }, forced: true, unique: true, forceunique: true, skillAnimation: true, animationColor: "thunder", filter: function (event, player) { return true; }, content: function () { "step 0" player.awakenSkill("zioy_zhufashengmie"); trigger.cancel(); "step 1" player.hp = player.maxHp; "step 2" player.addTempSkill("zioy_lockHp", { player: "phaseUseEnd" }); "step 3" player.update(); }, "_priority": 0 }, "zioy_yongyeqingxiao": { init: function (player) { player.addMark("zioy_yongyeqingxiao", 5); // player.storage.huoshan_no = true; }, usable: null, mark: false, marktext: "无瞋", intro: { name: "无瞋", mark: function () { return "复有三法,谓三善根:一者不贪,二者不恚,三者不痴。"; } }, enable: "phaseUse", filter: function (event, player) { return player.countMark("zioy_yongyeqingxiao") > 0 && player.countMark("zioy_yongyeqingxiao") != 5; }, content: function () { var n = player.countMark("zioy_yongyeqingxiao"); n = 5 - n; player.addMark("zioy_yongyeqingxiao", n); player.draw(parseInt(n * 1.25 + 0.01)); if (parseInt(n / 1.5 + 0.01) > 0 && !player.hasSkill("zioy_yongyeqingxiao_recoverMark")) { player.recover(parseInt(n / 2 + 0.01)); player.addTempSkill("zioy_yongyeqingxiao_recoverMark"); } player.addBuffImmune("all", n); if (game.roundNumber % 2 == 1) { game.changeGlobalStatus("rerang", n); } else { game.changeGlobalStatus("huoshan", n); } }, mod: { globalFrom: function (from, to, distance) { if (from.countMark("zioy_yongyeqingxiao") == 0) return distance - 1; }, cardUsable: function (card, player, num) { // if(player.countMark("zioy_yongyeqingxiao") == 0) // if(card.name=='sha') return num+1; } }, ai: { order: 1, result: { player: function (player) { var n = player.countMark("zioy_yongyeqingxiao"); n = 5 - n; return 5 * (n - 2); } } }, group: ["zioy_yongyeqingxiao_useCard"], subSkill: { useCard: { trigger: { player: "useCardEnd" }, filter: function (event, player) { return player.countMark("zioy_yongyeqingxiao") > 0; }, direct: true, content: function () { "step 0" player.removeMark("zioy_yongyeqingxiao"); if (player.countCards("he") > 0) { player.chooseToDiscard("he", 1, true); } "step 1" if (player.countMark("zioy_yongyeqingxiao") == 0) { player.disableJudge(); player.addBuffImmune("all", Infinity); } }, sub: true, "_priority": 0 }, recoverMark: { sub: true, "_priority": 0 } }, "_priority": 0 }, "zioy_nongying": { trigger: { player: ["chooseToRespondBegin", "chooseToUseBegin"] }, filter: function (event, player) { if (event.responded) return false; if (!event.filterCard({ name: "shan" }, player, event)) return false; return true; }, content: function () { trigger.untrigger(); // game.log(trigger) trigger.responded = true; trigger.result = { bool: true, card: { name: "shan" } }; if (player.hp < player.maxHp) { player.recover(); player.loseMaxHp(); } else { player.loseHp(); player.gainMaxHp(); } }, mod: { cardname: function (card) { if (card.name == "shan") return "sha"; } }, group: ["zioy_nongying_2"], subSkill: { "2": { trigger: { player: ["useCard", "respond"] }, filter: function (event, player) { if (event.card.name != "sha") return false; for (var c of event.cards) { if (c.name == "shan") return true; } return false; }, forced: true, content: function () { if (player.hp < player.maxHp) { player.recover(); player.loseMaxHp(); } else { player.loseHp(); player.gainMaxHp(); } }, sub: true, "_priority": 0 } }, "_priority": 0 }, "zioy_chanjuan": { trigger: { player: "recoverEnd" }, filter: function (event, player) { return event && event.num > 0; }, direct: true, content: function () { "step 0" player .chooseTarget( "令任意名其他角色恢复" + trigger.num + "点体力", function (card, player, target) { return target.hp < target.maxHp && target != player; }, [ 1, game.countPlayer(function (target) { return target.hp < target.maxHp; }) ], false ) .set("ai", function (target) { var att = get.attitude(_status.event.player, target); return att; }); "step 1" if (result.bool) { for (var p of result.targets) { p.recover(trigger.num); } } }, "_priority": 0 }, "zioy_lanzhiyuane": { "_priority": 0 }, "zioy_liuzhenxiongxiang": { "_priority": 0 }, "zioy_yinhuxiaowu": { "_priority": 0 }, "zioy_leimingqiangu": { trigger: { player: ["damageBegin"] }, filter: function (event, player) { return true; }, init: function (player) { player.getTailCount = function () { return this.maxHp + this.countMark("zioy_zhoumingchuanxuan"); }; player.addDamageLimiter(parseInt(player.getTailCount() / 3), "zioy_leimingqiangu"); }, mark: true, marktext: "鸣雷", intro: { name: "鸣雷" }, forced: true, content: function () { "step 0" if (player.getTailCount() < 9) player.gainMaxHp(); "step 1" if (player.getTailCount() < 9) player.recover(); "step 2" if (player.getTailCount() < 9) player.addDamageLimiter(parseInt(player.getTailCount() / 3), "zioy_leimingqiangu"); "step 3" player.addMark("zioy_leimingqiangu", player.getTailCount() * 5); event.trigger("addMark_zioy_leimingqiangu"); }, group: ["zioy_leimingqiangu_useCard", "zioy_leimingqiangu_addMark", "zioy_leimingqiangu_phaseDraw", "zioy_leimingqiangu_source","zioy_leimingqiangu_updateDamageLimiter"], subSkill: { useCard: { trigger: { player: ["useCard"] }, filter: function (event, player) { return player.getTailCount() < 9 && event.card && get.tag(event.card, "damage"); }, forced: true, content: function () { "step 0" player.gainMaxHp(); "step 1" player.recover(); "step 2" player.addDamageLimiter(parseInt(player.getTailCount() / 2+0.01), "zioy_leimingqiangu"); }, sub: true, "_priority": 0 }, addMark: { trigger: { player: ["addMark_zioy_leimingqiangu"] }, filter: function (event, player) { return player.countMark("zioy_leimingqiangu") >= 200; }, forced: true, content: function () { "step 0" player.removeMark("zioy_leimingqiangu", 200); player.recover(); if (player.getTailCount() >= 9) player.storage.leimingqiangu_count++; "step 1" if (player.countMark("zioy_leimingqiangu") >= 200) { event.goto(0); } }, sub: true, "_priority": 0 }, updateDamageLimiter:{ trigger:{ player:["loseAfter","changeHp","gainMaxHpAfter","loseMaxHpAfter"], }, direct:true, filter:function(){ return true; }, content:function(){ player.addDamageLimiter(parseInt(player.getTailCount() / 2+0.01), "zioy_leimingqiangu"); } }, phaseDraw: { trigger: { player: "phaseDrawBegin" }, forced: true, filter: function (event, player) { return !event.numFixed; }, content: function () { trigger.num = parseInt(player.getTailCount() / 1.5 + 0.001); }, ai: { threaten: 1.3 }, sub: true, "_priority": 0 }, source: { trigger: { source: ["damageEnd"] }, filter: function (event, player) { return player.storage.leimingqiangu_source; }, init: function (player) { player.storage.leimingqiangu_source = true; player.storage.leimingqiangu_count = 0; }, forced: true, content: function () { "step 0" player.storage.leimingqiangu_source = false; "step 1" if (player.storage.leimingqiangu_count > 0) { trigger.player.damage(1, "thunder"); player.storage.leimingqiangu_count--; } "step 2" player.storage.leimingqiangu_source = true; player.addMark("zioy_leimingqiangu", trigger.num * 3 * player.getTailCount()); event.trigger("addMark_zioy_leimingqiangu"); }, sub: true, "_priority": 0 }, loseMaxHpEnd: { trigger: { player: ["addMark_zioy_leimingqiangu"] }, filter: function (event, player) { return true; }, direct: true, content: function () { if (player.getTailCount() >= 9) player.storage.leimingqiangu_count++; }, sub: true, "_priority": 156 } }, "_priority": 0 }, "zioy_zhoumingchuanxuan": { mod: { selectTarget: function (card, player, range) { if (player.hasSkill("zioy_leimingqiangu") && !["delay"].contains(get.type(card)) && range[1] != -1) range[1] += parseInt(player.getTailCount() / 3); }, attackFrom: function (from, to, distance) { if (from.hasSkill("zioy_leimingqiangu")) return distance - parseInt(from.getTailCount() / 3); } }, trigger: { player: "useCardToTarget" }, forced: true, mark: true, marktext: "雷殊", intro: { name: "雷殊" }, logTarget: "target", filter: function (event, player) { return event.target && event.target != player && event.targets.length == 1 && player.maxHp > 1; }, content: function () { player.loseMaxHp(1); player.addMark("zioy_zhoumingchuanxuan"); }, group: ["zioy_zhoumingchuanxuan_phaseUse"], subSkill: { phaseUse: { enable: "phaseUse", usable: 1, skillAnimation: true, animationColor: "thunder", filter: function (event, player) { return player.countMark("zioy_zhoumingchuanxuan") > 1; }, content: function () { "step 0" event.num = parseInt(player.countMark("zioy_zhoumingchuanxuan") / 1.5); player.removeMark("zioy_zhoumingchuanxuan", player.countMark("zioy_zhoumingchuanxuan")); player .chooseTarget( "对至多" + event.num + "名其他角色造成" + event.num + "点伤害", function (card, player, target) { return target != player; }, [1, event.num], true ) .set("ai", function (target) { var att = get.attitude(_status.event.player, target); return -att; }); "step 1" if (result.bool) { for (var p of result.targets) { p.damage(event.num, "thunder"); } } }, ai: { order: 1, result: { player: function (player) { var n = player.countMark("zioy_zhoumingchuanxuan"); return 3; } } }, sub: true, "_priority": 0 } }, "_priority": 0 }, "zioy_riyuexingkong": { trigger: { global: "phaseBefore", player: "enterGame" }, forced: true, direct: true, derivation: "", filter: function (event, player) { // return true; return event.name != "phase" || game.phaseNumber == 0; }, mod: { inRange: function (from, to) { if (!from.storage._miao_twins || !from.storage._miao_twins.isIn() || from.storage.zioy_riyuexingkong_inRange_flag === false) return; // 防止堆栈溢出 from.storage._miao_twins.storage.zioy_riyuexingkong_inRange_flag = false; if (from.storage._miao_twins.inRange(to)) { return true; } from.storage._miao_twins.storage.zioy_riyuexingkong_inRange_flag = true; } }, content: function () { "step 0" game.addGlobalSkill("autoswap"); // player.node.avatar.style.backgroundImage = path + 'zioy_xiyueying1.jpg")' player.changeAvatarMiao("zioy_xiyueying.jpg", "zioy_xiyueying1.jpg"); player.node.name.innerHTML = "耀阳"; player.sex = "male"; var p = game.addPlayer(player.dataset.position + 1, player.name); //fix bug.... for (var s of player.getSkills()) { // p.removeSkill("zioy_riyuexingkong") // p.addSkill("zioy_riyuexingkong") p.removeSkill(s); p.addSkill(s); } p.changeAvatarMiao("zioy_xiyueying.jpg", "zioy_xiyueying2.jpg"); p.node.name.innerHTML = "辉月"; p.maxHp = player.maxHp; p.hp = player.hp; p.hujia = player.hujia; p.directgain(get.cards(4)); p._trueMe = player; p.sex = "female"; p.identity = player.identity; p.setIdentity(); p.identityShown = true; p.storage._miao_twins = player; player.storage._miao_twins = p; // player.removeSkill(event.name); // p.removeSkill(event.name) // for(var p1 of game.players){ // game.log(p1.sex,typeof p1.sex) // game.log(p1.identity) // } // game.log(p1.sex,typeof p1.sex) }, group: ["zioy_riyuexingkong_die", "zioy_riyuexingkong_return", "zioy_riyuexingkong_win"], subSkill: { die: { trigger: { player: "dieBefore" }, filter: function (event, player) { // game.log(player.storage._miao_twins.hp > 0&& player.storage._miao_twins.isIn()&&event.getParent().name!='giveup'&&player.maxHp>0) return !player.storage._miao_twins.storage.zioy_riyuexingkong_die; }, forced: true, direct: true, priority: -1561565189, content: function () { // 休整 if (player.storage._miao_twins.hp > 0 && player.storage._miao_twins.isIn() && event.getParent().name != "giveup" && player.maxHp > 0) { // trigger.cancel() trigger.setContent(function () { event.forceDie = true; // event.forceDie=true; if (source) { game.log(player, "被", source, "杀害"); if (source.stat[source.stat.length - 1].kill == undefined) { source.stat[source.stat.length - 1].kill = 1; } else { source.stat[source.stat.length - 1].kill++; } } else { game.log(player, "阵亡"); } // if(player.isIn()&&(false&&(!_status.mbmowang_return||!_status.mbmowang_return[player.playerid]))){ event.reserveOut = true; game.log(player, "进入了修整状态"); game.log(player, "移出了游戏"); // } // else event.finish(); if (!game.countPlayer()) game.over(); else if (player.hp != 0) { player.changeHp(0 - player.hp, false).forceDie = true; } game.broadcastAll(function (player) { if (player.isLinked()) { if (get.is.linked2(player)) { player.classList.toggle("linked2"); } else { player.classList.toggle("linked"); } } if (player.isTurnedOver()) { player.classList.toggle("turnedover"); } }, player); game.addVideo("link", player, player.isLinked()); game.addVideo("turnOver", player, player.classList.contains("turnedover")); // game.broadcastAll(function(player){ player.classList.add("out"); // }); player.$dieAfter(); player.classList.remove("fullskin2"); player.node.avatar2.classList.add("hidden"); // player.node.framebg.dataset.auto='silver'; // player.node.framebg.dataset.decoration='silver'; }); trigger.includeOut = true; } // 死透了 else { // game.broadcastAll(function(player){ player.storage._miao_twins.classList.remove("out"); // }); player.storage._miao_twins.storage.zioy_riyuexingkong_die = true; player.storage.zioy_riyuexingkong_die = true; if (game.me == player.storage._miao_twins) player.die(); player.storage._miao_twins.die(); } }, ai: { threaten: 0.6, effect: { target: function (card, player, target) { if (get.attitude(player, target) >= 0) return 0; if (get.tag(card, "damage")) { if (target.hp - target.storage._miao_twins.hp == 0) return 10; return 15 * (target.hp - target.storage._miao_twins.hp); } } } }, sub: true, "_priority": -156156518900 }, return: { trigger: { player: "phaseBefore" }, forced: true, charlotte: true, silent: true, forceDie: true, forceOut: true, filter: function (event, player) { return event.player.isOut(); }, content: function () { "step 0" game.broadcastAll(function (player) { player.classList.remove("out"); }, trigger.player); game.log(trigger.player, "移回了游戏"); trigger.player.recover(trigger.player.maxHp - trigger.player.hp); "step 1" event.trigger("restEnd"); }, sub: true, popup: false, "_priority": 1 }, win: { trigger: { global: "phaseBefore" }, filter: function (event, player) { var flag = false; for (var p of game.players) { if (p != player && p != player.storage._miao_twins) { flag = true; break; } } return !flag; }, content: function () { game.over(player == game.me || player.storage._miao_twins == game.me || winners.contains(game.me)); }, sub: true, "_priority": 0 } }, "_priority": 0 }, "zioy_jisuishengjin": { enable: "phaseUse", // usable: Infinity, filter: function(){ return true; }, init:function(player){ player.storage.jisuishengjin_ai = 'nb1' }, content:function(){ player.damage(1); }, ai: { order:99, result: { player: function (player) { if(!player.storage.jisuishengjin_ai || player.storage.jisuishengjin_ai == 'nb'){ if(player.countCards('h','tao')+player.countCards('h','jiu') > 0)return 9999; if(player.hp<3) return -1; return 9999; }else if(true){ return -1 }else{ } } } }, group:['zioy_jisuishengjin_draw'], subSkill:{ draw:{ trigger:{ player:'damageEnd' }, filter:function(){ return true }, frequent:true, content:function(){ 'step 0' event.num = trigger.num; 'step 1' event.cards=get.cards(8); player.chooseCardButton('获得至多4张牌',[0,4],event.cards,true).ai=function(button){ if(button.link == 'tao' && button.link == 'jiu'){ return 99; }else{ return get.useful(button.link); } }; 'step 2' if(result.bool){ var cards1 = [] for(var i=0;i=0;i--){ ui.cardPile.insertBefore(event.cards[i],ui.cardPile.firstChild); } event.num--; if(event.num > 0)event.goto(1) } } } } }, translate: { "zioy_xixue": "汲血", "zioy_xixue_info": "出牌阶段,你可以弃置一张牌并选择一名非上一回合以此法选择角色,你偷取其一点体力值。", "zioy_shiyi": "石翼", "zioy_shiyi_info": "锁定技
①:当你造成伤害时,你获得一点护甲。
②:你的与其他角色的距离-X,其他角色与你的距离+X,你的手牌上限+X(X为你的护甲值)", "zioy_jinjia": "晶甲", "zioy_jinjia_info": "锁定技,一轮游戏开始时,若你没有护甲,你获得两点护甲。", "zioy_jinsui": "晶髓", "zioy_jinsui_info": "出牌阶段,你可以消耗你所有的护甲并选择一名角色,直到你的回合结束,若该角色受到伤害,该角色翻面。", "zioy_jinsui2": "晶髓", "zioy_jinsui2_info": "若你受到伤害,你翻面。", "zioy_chenmeng": "尘梦", "zioy_chenmeng_info": "锁定技,其他角色造成伤害时,你令其失去一点体力上限并获得〖尘〗标记,然后你获得一点体力上限。你对拥有〖尘〗标记的角色造成伤害时,你移除其〖尘〗标记,恢复其以此法失去的体力上限,然后其失去一点体力,你获得其一张手牌,回复1点体力并失去以此法获得的体力上限。", "zioy_chenmeng1": "尘梦", "zioy_chenmeng1_info": "当你受到由〖长野原神乐〗造成的伤害时,你回复一点体力上限并失去一点体力,其失去一点体力上限,回复一点体力并获得你一张牌。", "zioy_eye": "厄夜", "zioy_eye_info": "锁定技,你即将对其他角色造成的伤害改为抹除体力。", "zioy_damie": "大灭", "zioy_damie_info": "一轮游戏开始时,若场上已有角色死亡,则你可以抹除一名角色的所有体力,你以此法无法使该角色死亡。", "zioy_heiyi": "黑疫", "zioy_heiyi_info": "锁定技,当你成为【杀】的目标时,此【杀】的来源获得技能〖黑死〗。", "zioy_duyi": "黑死", "zioy_duyi_info": "锁定技,回合开始时,你失去一点体力,若你体力值为1,则改为失去一点体力上限。", "zioy_eji": "恶剂", "zioy_eji_info": "限定技,出牌阶段,你可以获得3点体力与体力上限,摸3张牌,接下来的每个回合开始阶段,你失去一点体力上限直到你的体力上限等于1。", "zioy_huashou": "花狩", "zioy_huashou_info": "锁定技,你的回合开始阶段,你随机标记一名敌人并将其区域内随机2/3数量的牌(向上取整)置于其武将牌上。若你回合内对被标记者造成伤害,你移除其标记,对其造成X点伤害,回复X/2(向下取整)点体力,若X/2大于你已损失体力则将你的护甲置为1,然后获得其以此法置于武将牌上的所有牌。若回合结束时其未受到伤害,其获得其武将牌上的所有牌。(X为受伤角色已损失体力)", "zioy_huashou2": "花狩", "zioy_huashou2_info": "若你本回合未受到伤害,回合结束时获得被〖花狩〗置于武将牌上的牌。", "zioy_huashou3": "花狩", "zioy_huashou3_info": "", "zioy_longyue": "胧月", "zioy_longyue_info": "游戏开始时,你摸一张牌并创建一张【月光】,你的出牌阶段开始时,你装备你游戏开始时创建的【月光】。你对被〖花狩〗标记的角色造成伤害会提升你的基础属性: 第一次造成伤害时:你装备的【月光】提供的攻击范围+1,每2次造成伤害:你的手牌上限+1,每3次造成伤害:你的摸牌阶段摸牌数+1,每4次造成伤害:你的体力上限+1。", "zioy_longyue2": "胧月", "zioy_longyue2_info": "", "zioy_jike": "棘壳", "zioy_jike_info": "锁定技,当你受到伤害时,若伤害来源不为你,你对其造成等额的伤害。", "zioy_longyue3": "胧月", "zioy_longyue3_info": "摸牌", "zioy_happyNewYear": "逡游", "zioy_happyNewYear_info": '锁定技,当你失去牌时,你获得一个"春"标记。当你的"春"标记数量发生变化时,若标记数量为偶数,你摸一张牌。当你于你的回合内使用【杀】指定目标时,若你的"春"标记数量大于等于X,你需弃置X个"春"标记,并使你此次使用的【杀】不计入出牌阶段使用次数(X在你的出牌阶段第一次使用牌时被赋值为4,且每次使用此技能令【杀】不计入次数时+2)。', "zioy_qunyou2": "逡游", "zioy_qunyou2_info": "春节快乐,于2023.1.21,8:37。", "zioy_qianlong": "潜龙", "zioy_qianlong_info": "当你使用或打出一张【杀】或【闪】时,若你区域内有牌,你可以弃置一张牌,然后你摸一张牌并获得一点护甲", "zioy_jianlong": "见龙", "zioy_jianlong_info": "出牌阶段,若你护甲值大于0,你可以摸一张牌并移去一点护甲。若此做,你的下一张【杀】无视距离且若此【杀】造成伤害,你将此技能替换为〖飞龙〗。", "zioy_feilong": "飞龙", "zioy_feilong_info": "锁定技,除非该角色死亡,你的【杀】只能对你上一次使用【杀】造成伤害的角色使用。你的下一张【杀】无距离限制且无法被响应。若你使用【杀】对一名角色造成伤害,你失去【飞龙】并获得【亢龙】,【见龙】,然后你摸一张牌。", "zioy_kanglong": "亢龙", "zioy_kanglong_info": "限定技,出牌阶段,你可以选择一名角色,你摸一张牌,并对该角色造成X点伤害,若该角色因〖亢龙〗死亡,则你的〖亢龙〗视为未使用(X为你当前体力值与该角色当前体力值的差值且至少为1)", "zioy_jianlong2": "见龙", "zioy_jianlong2_info": "你的杀无视距离", "zioy_jianlong4": "见龙", "zioy_jianlong4_info": "你的下一张【杀】无视距离。", "zioy_kanglong2": "亢龙", "zioy_kanglong2_info": "", "zioy_yixiang": "燚祥", "zioy_yixiang_info": "你造成的伤害均视为火属性,你受到的火属性伤害-1。", "zioy_yixiang2": "燚祥", "zioy_yixiang2_info": "", "zioy_yuyan": "驭煙", "zioy_yuyan_info": "锁定技,你废除你的坐骑栏,你与其他角色的距离-1,其他角色与你的距离+1。", "zioy_chuixing": "吹星", "zioy_chuixing_info": "你每使用两张【杀】,就可以视为使用一张无实体牌且无视距离的【火杀】,你初始视为使用过一张【杀】。", "zioy_zhijin": "掷金", "zioy_zhijin_info": "当你不因〖掷金〗而获得牌时,你随机摸一定数量的牌,该数量与你本次摸牌数成正相关且可能等于零。", "zioy_xuanzhuan": "璇转", "zioy_xuanzhuan_info": "出牌阶段限一次,你可以令场上所有有手牌的角色将一张手牌置于你的武将牌上,然后对于你武将牌上的每张牌,你令随机一名刚才有将牌置入你的武将牌上的角色获得之,你有更大的概率获得。", "zioy_leiye1": "累业", "zioy_leiye1_info": '当你造成伤害时,你获得一个"墨"标记,当你受到伤害或回复体力时,你获得一个"霜"标记。', "zioy_leiye2": "累业", "zioy_leiye2_info": "霜", "zioy_mosha": "霜杀墨染雪", "zioy_mosha_info": '觉醒技,与〖墨残霜伴樱〗共用次数。出牌阶段,若你的"墨"标记达到3,你可以选择一名角色,然后你失去一点体力上限并对其造成3点伤害。', "zioy_shuangsha": "墨残霜伴樱", "zioy_shuangsha_info": '觉醒技,与〖霜杀墨染雪〗共用次数。出牌阶段,若你的"霜"标记达到3,你可以获得一点体力上限,回复2点体力并选择一名角色,你对其造成一点伤害。', "zioy_lieying": "裂影", "zioy_lieying_info": "当你造成伤害时,你可以摸一张牌。若你使用过〖霜杀墨染雪〗,你的【杀】不可被响应且你造成的伤害+1。若你使用过〖墨残霜伴樱〗,你的【杀】可以额外指定一个目标,当你造成伤害时,你回复X点体力值(X为你已损失体力值/2,向下取整)", "zioy_lieying1": "裂影", "zioy_lieying1_info": "", "zioy_wrjzc": "无人机侦查", "zioy_wrjzc_info": "回合开始阶段,你观看随机一名角色的手牌。", "zioy_zsyhj": "自适应护甲", "zioy_zsyhj_info": "锁定技,你的手牌上限等于你的护甲,每个回合开始阶段,你大于1的体力上限会被转化为护甲。当你受到一次属性伤害,你免疫下一次属性伤害。当你受到一次无属性伤害,你免疫下一次无属性伤害。两种免疫效果不能同时存在。", "zioy_weixiang": "伪像", "zioy_weixiang_info": "游戏开始时,你选择一名角色,然后你将你的武将牌替换成你选择角色的武将牌,同时修改自己的体力,体力上限,护甲与其一致。", "zioy_zsyhjn": "护甲", "zioy_zsyhjn_info": "抵消下一次受到的属性伤害", "zioy_fansheng": "反生", "zioy_fansheng_info": "锁定技,你死亡时,杀死你的角色获得〖年种〗标记并将体力上限减少至1,然后你废除其防具栏,+1马栏,宝物栏。若拥有你给予的〖年种〗标记的角色死亡,你复活并令你回复X点体力,增加X点体力上限,摸X张牌,然后你与其交换座位并进行一个额外的回合(X为〖年种〗标记的角色原有的体力上限)", "zioy_nianzhong": "年种", "zioy_nianzhong_info": "锁定技,你死亡时,'年'复活并与你交换座位并额外进行一个回合。", "zioy_jifou": "祭否", "zioy_jifou_info": "一轮游戏开始时,你可以选择一名角色,你使该角色摸牌阶段摸牌数+2,体力上限+3,回复体力至体力上限,并摸5张牌。然后你死亡。", "zioy_jifou2": "祭否", "zioy_jifou2_info": "你已获得赐福", "zioy_liubo": "流波", "zioy_liubo_info": "你记录最后一张因弃置进入弃牌堆的牌。当你使用牌指定一名角色为目标时,你可以为此牌额外指定一名目标,并获得〖流波〗记录的牌。", "zioy_liubo2": "流波", "zioy_liubo2_info": "使用牌", "zioy_shuiyue": "水月", "zioy_shuiyue_info": "回合结束阶段,你可以摸X张牌,然后将X/1.5且向下取整(X为你本局游戏中发动〖流波〗的次数)", "zioy_moying": "末影", "zioy_moying_info": '出牌阶段限一次,你可以将一张黑色牌置于一名角色的武将牌上,称为"末影",当你使用牌指定一名其他角色为唯一目标时,拥有"末影"且不为目标的角色视为对目标使用一张与你使用牌相同的牌。场上至多同时存在2个由你产生的"末影",当"末影"超出限制时,你获得已存在最早产生的"末影"。', "zioy_yingdun": "影遁", "zioy_yingdun_info": '当你成为一名角色使用牌的目标时,你可以选择一名不为此牌目标且拥有"末影"的角色,你将此牌目标转移为该角色并与其交换座位,每个"末影"限一次,重新赋予"末影"可刷新限制。', "zioy_moying2": "末影", "zioy_moying2_info": "当该影使用牌指定一名其他角色为唯一目标时,若该目标是你的合法目标,你视为对其使用一张与该影使用牌相同的牌。", "zioy_jianying": "渐影", "zioy_jianying_info": '隐匿技,当你亮出武将牌时,你可以将一张无限点数的黑桃【杀】加入游戏并当作"末影"置于一名其他角色的武将牌上。', "zioy_moying3": "末影", "zioy_moying3_info": "死", "zioy_yuexiang": "月相", "zioy_yuexiang_info": "获得此技能时,你随机获得一个月相,每轮开始时月相会按规律进行变化,摸牌阶段,你的摸牌数根据月相增加0~2张。", "zioy_yuexiang2": "月相", "zioy_yuexiang2_info": "一轮开始时", "zioy_douzhuan": "斗转", "zioy_douzhuan_info": "游戏开始时,你随机指定一名角色并将7张牌置于其武将牌上,称为“星斗”。每轮游戏开始时,星斗将转移至拥有者下家。当“星斗”拥有者死亡或一轮游戏开始时你为满月且与“星斗”拥有者的座位相邻时,你获得“星斗”中的所有牌,使你月相的额外摸牌效果翻倍并使你的手牌上限+7。", "zioy_xingdou": "星斗", "zioy_xingdou_info": "闲云潭影日悠悠,物转星移几度秋", "zioy_shengyue": "神月", "zioy_shengyue_info": '限定技,出牌阶段,若"星斗"不位于你的区域内,你可以与你的下家交换座位并重复此流程直到你的上家区域内拥有"星斗"。', "zioy_xiaoxiang": "消香", "zioy_xiaoxiang_info": "限定技,一轮游戏开始时,对每个拥有〖尘〗的角色,你移去其的〖尘〗,令其翻面并令你回复一点体力。", "zioy_douzhuan2": "斗转", "zioy_douzhuan2_info": "死了", "zioy_nianxi": "年袭", "zioy_nianxi_info": "出牌阶段,你可以弃置一张非红色牌,视为打出一张【杀】,若此杀未造成伤害,你受到由目标角色对你造成的X点伤害(X为你因此技能受到伤害的次数+1)", "zioy_nianxi2": "年袭", "zioy_nianxi2_info": "", "zioy_xiantong": "显瞳", "zioy_xiantong_info": "一轮游戏开始或你的摸牌阶段结束时,你可以将一张非装备牌置于你的武将牌上,称为“瞳”。你拥有的“瞳”的数量不能超过你的体力上限。你的回合结束阶段,对于你的每张“瞳”,你视为对随机一名其他角色使用一张虚拟的同名牌。", "zioy_xiane": "显厄", "zioy_xiane_info": "回合结束阶段,若你的“瞳”达到3张,你可以依次获得你的所有“瞳”,你每以此法获得一张“瞳”,随机一名其他角色受到由你造成的2点雷电伤害。", "zioy_xiantong2": "显瞳", "zioy_xiantong2_info": "结束阶段", "zioy_wuya": "雾鸦", "zioy_wuya_info": "出牌阶段,你可以失去一点体力上限并选择一名角色,你令其获得“鸦”标记。拥有“鸦”标记的角色所有技能失效。拥有“鸦”标记的角色即将受到伤害时,防止此伤害并移去“鸦”标记。拥有“鸦”标记的角色的回合开始阶段,你需将此标记转移给一名未拥有“鸦”的角色。你以此法转移“鸦”标记时,原被标记者失去一点体力。若你以此法将“鸦”标记转移到自己区域内,你失去“鸦”标记,回复X点体力,并获得X点“黑血”标记(X为此“鸦”标记转移的次数+1)", "zioy_sheji": "摄脊", "zioy_sheji_info": "当你使用【杀】指定一名角色为目标时,你可以失去一点“黑血”,然后令【杀】失效,你偷取目标角色一点体力值。", "zioy_puai": "瀑霭", "zioy_puai_info": "限定技,回合结束阶段,你可以移去任意点“黑血”并失去等量体力上限,然后从下轮游戏开始,持续X轮,获得以下效果:
①.“鸦”不被强制要求抵挡伤害
②.“鸦”不被强制要求移动
③.发动〖雾鸦〗时失去体力上限改为获得体力上限。
④.你与其他角色的距离为负无穷大,其他角色与你的距离为无穷大,防止你成为伤害类卡牌的目标。", "zioy_wuya2": "雾鸦", "zioy_wuya2_info": "", "zioy_wuya3": "雾鸦", "zioy_wuya3_info": "", "zioy_wuya4": "雾鸦", "zioy_wuya4_info": "", "zioy_puai2": "瀑霭", "zioy_puai2_info": "", "zioy_puai3": "瀑霭", "zioy_puai3_info": "", "zioy_xingchi": "行持", "zioy_xingchi_info": "锁定技,当你使用或打出一张【杀】或【闪】时,你获得1点“正觉”。
当你即将造成/受到伤害时,你移去3点“正觉”并令此伤害+1/-1。", "zioy_xingchi2": "行持", "zioy_xingchi2_info": "", "zioy_xingchi3": "行持", "zioy_xingchi3_info": "", "zioy_cangzhen": "沧震", "zioy_cangzhen_info": "锁定技,每名角色限一次,你对一名角色造成伤害前,你令其翻面且此伤害+1。", "zioy_cangzhen2": "沧震", "zioy_cangzhen2_info": "", "zioy_shangqin": "上觐", "zioy_shangqin_info": "锁定技,①当有其他非“虚空虫”角色死亡后,你可令其复活并将武将牌替换为“虚空虫”,其体力上限与体力值为2,身份与你同阵营,操控者为你。然后你获得一点体力上限并回复一半已损失体力(向上取整)
②“虚空虫”死亡后,你获得其所有牌。", "zioy_hanshou": "颔首", "zioy_hanshou_info": "限定技,一轮游戏开始时,你可以令所有已死亡的“虚空虫”满体力复活,然后你失去X点体力上限并令所有“虚空虫”摸X张牌(X为以此法复活的“虚空虫”数量)", "zioy_shangqin2": "上觐", "zioy_shangqin2_info": "", "zioy_shangqin3": "上觐", "zioy_shangqin3_info": "", "zioy_longzi": "溶紫", "zioy_longzi_info": "", "zioy_yingyuan": "隐渊", "zioy_yingyuan_info": "①其他角色的回合结束阶段开始时,若你的武将牌为正面朝上,你可以将你的武将牌翻面。
②每轮游戏限一次,已受伤角色的回合结束阶段,若你武将牌翻面,你可以重复和你的下家交换位置直到你成为此受伤角色的上家,然后你将武将牌翻面并立即执行一个额外的回合
③若你武将牌背面向上,你即将受到的伤害-1。", "zioy_hey": "嘿!", "zioy_hey_info": "每名角色每轮限一次,回合开始与结束阶段,你选择一种颜色并观看一名角色的手牌,若其手牌中你选择颜色数量占优/不占优,你与其各摸/弃置一张牌并令其/你“光芒”标记拥有状态取反。获得此技能时你获得“光芒”。", "zioy_ya": "呀!", "zioy_ya_info": "你即将受到伤害时,若你没有“光芒”,你可以将一枚“光芒”移动至你的区域内并防止此次伤害。", "zioy_ha": "哈!", "zioy_ha_info": "你造成伤害后,你可以移动一枚“光芒”标记。", "zioy_guangmang": "光芒", "zioy_guangmang_info": "锁定技,①受到伤害结算后,若场上存在其他拥有“光芒”的角色,你移去“光芒”并对其中随机一名角色造成等于本次伤害值的伤害。
②无“光芒”角色与你的距离为无穷大。", "zioy_shihong": "拾虹", "zioy_shihong_info": "锁定技,摸牌阶段,未觉醒状态下你可以额外摸0~Y张牌,并弃置一名角色X张牌,觉醒状态下召唤曙光天气N回合(N为当前存活角色数,Y为N/2且向上取整,X为Y-本回合以此法额外摸牌的数量)", "zioy_cuiyi": "皠翊", "zioy_cuiyi_info": "回合开始阶段,未觉醒状态下令一名角色“皠翊”标记拥有状态取反,然后根据游戏轮数强化拥有“皠翊”标记的角色2项属性1级。觉醒状态下锁定所有拥有“皠翊”标记的角色强化N回合(N为当前存活角色数)", "zioy_shulin": "倏翷", "zioy_shulin_info": "觉醒技,每局游戏限2次。出牌阶段开始时,你可以回复所有已损失体力并进入觉醒状态。再次使用此技能时回复X点体力并将多出的回复值转化为摸牌数,然后你退出觉醒状态(X为觉醒状态持续时间)", "zioy_huangyi": "煌熠", "zioy_huangyi_info": "锁定技,你即将造成伤害时,未觉醒状态下你令伤害-1并回复1点体力,觉醒状态下若目标角色强化锁定则解除锁定,然后倒置目标角色强化,令伤害+X(X为你以此法倒置的强化项数之和)", "zioy_t": "测试", "zioy_t_info": "测试技能", "zioy_t1": "测试", "zioy_t1_info": "sadadwadwaedaw", "zioy_shuohui": "朔回", "zioy_shuohui_info": "锁定技
①防止你在已损失体力时死亡,你在未损失体力时进入濒死状态。
②你不以此法失去体力与受到伤害均改为回复体力,不以此法回复体力均改为失去体力。
③除开始阶段与结束阶段,你的回合阶段执行顺序与正常顺序相反。
④你的手牌上限等于你已损失体力。", "zioy_hexuchongxiang": "鹤墟重香", "zioy_hexuchongxiang_info": "清香更何用,犹发去年枝。
①将你即将受到伤害/流失体力时伤害/流失值超过X-N点的部分转化为“蜃气”,触发此效果超过X+1次后令X翻倍(若X=0则令X加1)并重置计数(获得此技能时令X=0,N为本回合满足〖鹤墟重香①〗的时机次数-1且不超过X)
②当你死亡时,若你体力值大于0则改为失去所有体力,否则:若你体力上限不为场上唯一最多或于体力值不大于0时发动〖鹤墟重香①〗次数小于2,你复活,获得N+1点体力上限,回复所有体力,移去所有“蜃气”并获得等量护盾,摸等量的牌,令X等于N-1,重置①效果计数,令你本局游戏摸牌阶段摸牌数,造成/受到伤害,失去体力的数值永久增加80%(向下取整)(N为〖鹤墟重香②〗发动的次数)
③你的“蜃气”数量不会超过你体力上限,获得“蜃气”时根据你是否受伤将多余的“蜃气”转换为体力值或“海市蜃楼”天气回合数。", "zioy_hexuchongxiang_mark": "鹤墟重香③", "zioy_hexuchongxiang_revive": "鹤墟重香②", "zioy_yuezhuiyunwei": "月坠云微", "zioy_yuezhuiyunwei_info": "梦回芳草思依依,天远雁声稀。
①根据当前“蜃气”的数量执行下列效果:
不大于50%体力上限:一名角色的回合开始阶段你失去1级防御,攻击强化,你的判定区视为被废除,你免疫任何异常状态,你的武将牌始终正面向上。
大于25%体力上限:当你成为其他角色使用牌的目标时,其弃置一张与此牌同名的手牌(没有则不弃)
大于6:当你造成超过1点伤害后,你失去1点体力上限并令其获得1点体力上限,令你本局游戏摸牌阶段摸牌数,造成/受到伤害,失去体力的数值永久增加20%(与〖鹤墟重香〗同乘区)。
等于体力上限:每局游戏限一次,发动〖鹤墟重香②〗或〖月坠云微②〗时重置计数。当你使用牌对指定一名角色为唯一目标时,你与其交换体力与体力上限。以此法交换的体力和体力上限不超过X点(X为你发动〖鹤墟重香③〗的次数)
②每回合限1次,出牌阶段,若你有“蜃气”,你可以主动发动此技能:你失去所有“蜃气”,倒置负面强化并清除所有异常状态,召唤等量回合的“海市蜃楼”天气,令一名角色获得等量护盾,令一名角色回复等量体力,令一名角色摸等量牌(X=你的体力上限/2且向下取整)
③你永久免疫“睡眠”异常,永久免疫“海市蜃楼”的任何效果。", "zioy_zhumingxiangan": "烛明香暗", "zioy_zhumingxiangan_info": "凭阑半日独无言,依旧竹声新月似当年。
①若你", "zioy_hanbosuliu": "寒波泝流", "zioy_hanbosuliu_info": "琼窗春断双蛾皱,回首边头。", "zioy_pianhongxiusao": "片红休埽", "zioy_pianhongxiusao_info": "啼莺散,馀花乱,寂寞画堂深院。", "zioy_yujin": "余烬", "zioy_yujin_info": "①获得此技能时你获得5点“烬”,若你有“烬”,限制你受到的伤害不超过1点且防止你失去体力。每次触发限伤或防止失去体力时你失去2点“烬”并在下次受到伤害后获得1点护甲。
②你的护甲被击破时,你恢复1点体力,弃置伤害来源至多2张牌并令其受到由你造成的1点火属性伤害。", "zioy_xumie": "虚灭", "zioy_xumie_info": "当你造成伤害时,根据你对该受伤角色造成伤害的次数追加以下效果:
大于0次:其始终在你攻击范围内且不能响应你使用的【杀】。
大于1次:你弃置其至多2张牌。
大于2次:其下一次造成的伤害-1。
大于3次:你对其追加1点伤害,此伤害无法触发〖虚灭〗。
大于4次:你获得1点“烬”", "zioy_v07yuxie": "V07-驭械", "zioy_v07yuxie_info": "①游戏开始时你获得4点护甲并进入“驭械”状态,当你的护甲被击破时你退出“驭械”状态。
②“驭械”状态为你提供以下增益:
1.你的手牌上限+X(X为你的护甲值)。

·>当你手牌数不小于体力值时,你为暴走状态,获得以下增益:
1.你的进攻距离+2。
2.你的【杀】无法被响应。
3.你使用牌没有次数限制。
4.你使用牌时需额外弃置1张牌。

·>当你手牌数小于体力值时,你为冷却状态,获得以下增益:
1.你使用锦囊牌指定角色为目标时,你可以弃置目标角色至多2张牌。
2.你使用非装备牌结算完成后,你收回此牌。每回合限1次,获得手牌时若手牌数大于体力值则重置此计数。每张牌每回合限1次。
3.你即将受到超过1点的伤害时令此伤害值-1并恢复你1点体力。

③非“驭械”状态下限制你受到的伤害不超过1点。
④进入或退出“驭械”状态时清除自身任何强化与异常状态并获得判定区内的所有牌。", "zioy_f42chongzai": "F42-重载", "zioy_f42chongzai_info": "出牌阶段各限1次:
①若你为“驭械”状态,你令所有角色受到1点无来源伤害,然后你摸3张牌,然后若你未损失体力则储存1点体力,若你拥有护甲则储存1点护甲。
②若你不为“驭械”状态,你可以弃置至少2张花色各不同的手牌,根据你弃置的手牌数执行以下效果:
不为4张:你获得等同于弃置手牌数-1枚“能量”标记。
4张:你获得4枚“能量”标记。
然后将当前体力值超过1的部分转化为等量“能量”标记,之后释放你储存的体力值。使用此技能后的每个的回合结束阶段,根据你的“能量”标记数量,执行以下效果:
小于体力上限:你获得1枚“能量”标记。
不小于体力上限:你弃置所有“能量”标记,获得等量护甲并释放储存的护甲,进入“驭械”状态,若你以此法获得的护甲值大于你的体力上限,你获得1点体力上限。", "zioy_yuemai": "岳衇", "zioy_yuemai_info": "锁定技,①你造成伤害后,若场上没有环境,则尝试召唤“迷嶂”环境8轮,召唤成功则获得2点护甲。
②“迷嶂”环境中你进攻距离+1,“迷嶂”环境下你获得50%免伤。", "zioy_liechenyuyou_water": "列辰御佑", "zioy_liechenyuyou_water_info": "血脉技,免疫失效。
①令你获得“泷之神佑”。
②你的摸牌阶段摸牌数+2,结束阶段与一轮游戏开始时你摸1张牌.
③你使用【杀】对非神势力非拥有“神佑”或拥有“燚之神佑”的角色造成的伤害+1。", "zioy_pinghuqiuyue": "平湖秋月", "zioy_pinghuqiuyue_info": "①限制你受到的伤害最大为2点。
②当你流失体力后,防止你于本轮游戏流失体力。
③你的手牌上限-4且不小于3。
④你对拥有护甲的角色造成的伤害+1。
⑤触发限伤效果/击破一名角色护甲/令一名角色进入濒死状态时获得7点怒气,受到/造成伤害时获得等额怒气。
⑥你的回合结束阶段,你失去1点怒气。", "zioy_yurangzhijian": "与浪之间", "zioy_yurangzhijian_info": "出牌阶段限一次,依次结算以下效果:
①消耗你所有“怒气”,减少你至多3层“盛怒”层数(最多减少至1层)。
②召唤5轮“细雨”天气,获得5回合全异常免疫。
③令Y=M-1.5X+N/3(向下取整),若Y大于零则回复Y点体力,否则弃置-Y张牌(X为本局游戏〖与浪之间〗累计使用次数,N为本次消耗怒气值,M为本次消耗“盛怒”层数)。
④若累计记录消耗怒气数+N达到10点则进入盛怒状态并获得1点“盛怒”层数,此效果一局游戏限1次。
⑤盛怒状态下使你下一次受到的伤害基础值等于0。
⑥记录N/3点消耗怒气数。
盛怒状态:盛怒状态最多达到7层,盛怒状态中每次使用伤害类型牌时获得1层“盛怒”层数,盛怒状态为你提供以下增益:
>①你出牌阶段可以多使用X*0.43(向下取整)张【杀】
>②你使用【杀】时对方需多使用X*0.43(向下取整且至少为1)张【闪】
>③你的【杀】造成的伤害+X*0.58(向下取整)
>④造成伤害时你回复0.05*X*伤害值(向下取整)点伤害值并弃置受伤角色0.15*X*伤害值(向下取整)张牌。
>⑤你装备区的牌无法被弃置。", "zioy_liechenyuyou_fire": "列辰御佑", "zioy_liechenyuyou_fire_info": "血脉技,免疫失效。
①令你获得“燚之神佑”。
②你的摸牌阶段摸牌数+2,结束阶段与一轮游戏开始时你摸1张牌.
③你使用【杀】对非神势力非拥有“神佑”或拥有“苏之神佑”的角色造成的伤害+1。", "zioy_zhuxingwuchang": "诸行无常", "zioy_zhuxingwuchang_info": "锁定技,若场上为天气,你使用的牌视为火属性且造成伤害后弃置受伤角色1张牌;若场上为环境,你的牌不可被响应;若你没有“无瞋”:造成伤害后你失去1点体力然后恢复2点体力,“风林火山”环境下提升至4点,若当前为奇数轮则召唤2轮“热浪”天气,否则召唤2轮“风林火山”环境。。", "zioy_zhufashengmie": "诸法生灭", "zioy_zhufashengmie_info": "一局游戏限一次,你死亡时,取消之,然后你令你的体力值等于体力上限并锁定体力直到你的下个出牌阶段结束。", "zioy_yongyeqingxiao": "永夜清宵", "zioy_yongyeqingxiao_info": "①获得此技能时你获得5个“无瞋”标记。若你有“无瞋”,你使用牌结算后需弃置1张牌(没有则不弃)并失去1个“无瞋”。
②出牌阶段,若你有“无瞋”标记且不为5个,你可以将“无瞋”补至5个,记补充数量为X,你摸X*1.25(向下取整)张牌,回复X/2(向下取整)点体力(回复体力效果每回合限1次),获得X轮异常免疫,若当前为奇数轮则召唤X轮“热浪”天气,否则召唤X轮“风林火山”环境。
③若你没有“无瞋”,你废弃你的判定区,永久获得全异常免疫,攻击距离+1。", "zioy_nongying": "弄影", "zioy_nongying_info": "起舞弄清影,何似在人间。
①你手牌中的【闪】均视为【杀】,当你需要使用或打出【闪】时,你可以视为打出一张【闪】。
②每当你发动〖弄影①〗或将【闪】视为【杀】使用或打出时,若你已受伤,你失去1点体力上限并恢复1点体力,否则你获得1点体力上限并失去1点体力。", "zioy_chanjuan": "婵娟", "zioy_chanjuan_info": "但愿人长久,千里共婵娟。
你回复体力后,可令任意名已受伤的其他角色回复等量体力。", "zioy_lanzhiyuane": "滥蛭垣厄", "zioy_lanzhiyuane_info": "锁定技,你的【杀】造成的伤害+X(X为log2(目标角色当前体力)且向下取整),若造成伤害后目标角色体力值不小于最大体力值*0.5则弃置其2张牌,否则倒置其下次回复体力效果并令此技能无法再对其发动。", "zioy_liuzhenxiongxiang": "流鸩汹飨", "zioy_liuzhenxiongxiang_info": "", "zioy_yinhuxiaowu": "饮蛊销污", "zioy_yinhuxiaowu_info": "测试是否有更新", "zioy_leimingqiangu": "雷鸣千古", "zioy_leimingqiangu_info": '①记你的体力上限+你拥有的“雷殊”数量为你的"尾数",若你的"尾数"小于9,每次使用进攻类型的牌或即将受到伤害时你获得1点体力上限并回复1点体力值。
②你即将受到的伤害不超过尾数/3(向下取整),你受到时伤害获得尾数*5枚“鸣雷”标记,当“鸣雷”标记数量达到200枚时你移去200枚“鸣雷”标记并回复1点体力值,若尾数达到9则使你下一次造成伤害后对受伤角色造成1点不会触发此技能③效果的雷属性伤害。
③当你尾数达到9时,你造成的任何伤害后获得伤害值*尾数*3点“鸣雷”标记。
④每个回合开始阶段将你超过9的体力上限部分与全部护甲转换为体力。
⑤你的摸牌阶段摸牌数基数为你的尾数/1.5(向下取整)。', "zioy_zhoumingchuanxuan": "骤明穿玄", "zioy_zhoumingchuanxuan_info": "①你的攻击距离+X,使用牌(延时锦囊除外)可多指定X名角色为目标(X为你的尾数/3且向下取整)
②若你使用牌指定唯一其他角色为目标且你的体力上限大于1,你失去1点体力上限并获得1枚“雷殊”标记,然后清除场上非天气的全局状态
③若你有至少2枚“雷殊”,你可以主动发动此技能并移去所有“雷殊”并选择X名其他角色,你对其造成X点雷属性伤害(X为你移去“雷殊”的数量/1.5且向下取整)", "zioy_riyuexingkong": "日月行空", "zioy_riyuexingkong_info": "你加入游戏时不加入本角色,改为加入“耀阳”与“辉月”。“耀阳”与“辉月”共享攻击距离,若其中一名角色即将死亡且另一名角色未处于休整状态,你令其休整至下一轮游戏开始时,否则令“耀阳”与“辉月”死亡。", "zioy_jisuishengjin": "击髓生津", "zioy_jisuishengjin_info": "
①出牌阶段,你可以对自己造成1点伤害。
②当你受到1点伤害时,你可以观看牌堆顶上的8张牌并获得其中至多四张牌,将剩余的牌按原顺序放回牌堆顶。" } }, intro: "??????????????????????????
拒绝规范描述", author: "喵喵", diskURL: "", forumURL: "", version: "23.08.13.01.39" }, files: { "character": [ "zioy_gaiying.jpg", "test.jpg", "zioy_xixuegui.jpg", "zioy_shuijinxiezi.jpg", "zioy_zhigaotian.jpg", "zioy_renturtle.jpg", "zioy_yinlong.jpg", "zioy_heibai.jpg", "zioy_senjianmeng.jpg", "zioy_xuanhu.jpg", "zioy_yilong.jpg", "zioy_dreamaker.jpg", "zioy_drugdoctor.jpg", "zioy_huajian.jpg", "zioy_shenxianxiang.jpg", "zioy_peiki.jpg", "zioy_xielingyun.jpg", "zioy_sose.jpg", "zioy_pqsj.jpg", "zioy_nianshou.jpg", "zioy_jinu.jpg", "zioy_diana.jpg", "zioy_xiaozhenhe.jpg", "zioy_lanchesite.jpg", "zioy_badun.jpg", "zioy_guanghan.jpg", "zioy_xingjun.jpg", "zioy_xiyueying.jpg", "zioy_osiris.jpg", "zioy_titan.jpg", "zioy_yenglish.jpg", "zioy_alps.jpg", "zioy_nemesis.jpg", "zioy_bailu.jpg", "zioy_xukongchong.jpg", "zioy_nike.jpg", "zioy_muxi.jpg", "zioy_b7chuhaoji.jpg", "zioy_morana.jpg", "zioy_kailuer.jpg", "zioy_purangsigai.jpg" ], "card": ["zioy_yueguang.jpg"], "skill": [], "audio": [] } }; });