commit b20025670bd607c20c5291b1144737f562dd0b60 Author: Miao_Spring <539943419@qq.com> Date: Tue Oct 10 00:12:51 2023 +0800 hello miao diff --git a/Prettier Fixer.py b/Prettier Fixer.py new file mode 100644 index 0000000..f64cf56 --- /dev/null +++ b/Prettier Fixer.py @@ -0,0 +1,83 @@ +# 导入os模块,用于操作文件和目录 +import os +from time import sleep +# 定义一个函数,接受一个文件名作为参数,返回修改后的内容 + +def modify_file(filename): + # 打开文件,以只读模式 + with open(filename, 'r', encoding='UTF-8') as f: + # 读取文件的所有行,存入一个列表 + lines = f.readlines() + # 创建一个空列表,用于存储修改后的行 + new_lines = [] + num = 0 + # 遍历每一行 + for line in lines: + if '"step 0";' in line: + line = line.replace('"step 0";', '"step 0"') + num+=1 + if '("step 1");' in line: + line = line.replace('("step 1");', '"step 1"') + num+=1 + if '("step 2");' in line: + line = line.replace('("step 2");', '"step 2"') + num+=1 + if '("step 3");' in line: + line = line.replace('("step 3");', '"step 3"') + num+=1 + if '("step 4");' in line: + line = line.replace('("step 4");', '"step 4"') + num+=1 + if '("step 5");' in line: + line = line.replace('("step 5");', '"step 5"') + num+=1 + if '("step 6");' in line: + line = line.replace('("step 6");', '"step 6"') + num+=1 + if '("step 7");' in line: + line = line.replace('("step 7");', '"step 7"') + num+=1 + if '("step 8");' in line: + line = line.replace('("step 8");', '"step 8"') + num+=1 + if '("step 9");' in line: + line = line.replace('("step 9");', '"step 9"') + num+=1 + if '("step 10");' in line: + line = line.replace('("step 10");', '"step 10"') + num+=1 + print(line) + # 将修改后的行添加到新列表中 + new_lines.append(line) + # 返回新列表中的所有行,用换行符连接 + print("Successfully fixed " + str(num) +" code errors") + return ''.join(new_lines) + +# 获取当前目录下的所有文件和子目录 +flag = False +files = os.listdir('.') +# 遍历每一个文件或子目录 +for file in files: + # 如果是文件,并且文件名是extension.js + if os.path.isfile(file) and file == 'extension.js': + # 调用函数,传入文件名,得到修改后的内容 + content = modify_file(file) + # 打开文件,以写入模式,覆盖原内容 + with open(file, 'w', encoding='UTF-8') as f: + # 写入修改后的内容 + f.write(content) + flag = True + if os.path.isfile(file) and file == 'game.js': + # 调用函数,传入文件名,得到修改后的内容 + content = modify_file(file) + # 打开文件,以写入模式,覆盖原内容 + with open(file, 'w', encoding='UTF-8') as f: + # 写入修改后的内容 + f.write(content) + flag = True + +if flag: + pass +else: + print('ERROR') +sleep(3) diff --git a/extension.js b/extension.js new file mode 100644 index 0000000..f4f5ba5 --- /dev/null +++ b/extension.js @@ -0,0 +1,7606 @@ +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) return; + game.log(player, "恢复了判定区"); + player.storage._disableJudge = false; + // player.markSkill('_disableJudge'); + "step 1" + game.broadcastAll(function (player, card) { + player.$enableJudge(); + }, player); + }; + lib.element.content.disableJudge = function () { + "step 0" + if (player.storage._disableJudge == true) return; + "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); + }; + + //获得限伤 + 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) + 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, + 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._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)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点体力,弃置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" + }, + priority: -5, + content: function () { + trigger.nature = null; + } + }, + rerang: { + sub: true, + forced: true, + direct: true, + unique: true, + charlotte: true, + trigger: { + source: "damageBegin1" + }, + 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, false, false].randomGet(); + }; + if (r) { + player.loseHp(); + } + if (r) { + player.chooseToDiscard(true); + } + 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 */ + 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,[],["hiddenSkill"]], + "zioy_guanghan":["female","wu","2/9",["zioy_nongying","zioy_chanjuan"],["des:2023中秋"]], + }, + 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":"广寒", + }, + }, + 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(); + 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) { + return event.num > player.storage.hxcx_x; + }, + priority:13, + forced:true, + charlotte:true, + unique:true, + init:function (player) { + var p = player; + p.storage.hxcx_x = 0; + p.storage.hxcx_count1 = 0; + p.storage.hxcx_count2 = 0; + p.storage.yzyw_count1 = 0; + p.gainShenqi = function (num) { + if (num > 999) num = 999; + 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.gainShenqi(num1); + trigger.num = player.storage.hxcx_x; + 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"], + 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; + } + 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); + }, + 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, + }, + }, + "_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); + }, + group:["zioy_yuezhuiyunwei_0","zioy_yuezhuiyunwei_501","zioy_yuezhuiyunwei_502","zioy_yuezhuiyunwei_1","zioy_yuezhuiyunwei_6","zioy_yuezhuiyunwei_eq"], + 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&¤t.storage.zioy_xumie&¤t.storage.zioy_xumie > 0; + }); + }, + content:function(){ + trigger.directHit.addArray(game.filterPlayer(current=>{ + return current!=player&¤t.storage.zioy_xumie&¤t.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 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":0, + }, + }, + "_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_anyuningfeng":{ + "_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() + } + } + } + }, + "_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, + }, + }, + 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点的部分转化为“蜃气”,触发此效果超过X+1次后令X翻倍(若X=0则令X加1)并重置计数(获得此技能时令X=0)
②当你死亡时,若你体力值不小于0则改为失去所有体力,否则:若你体力上限不为场上唯一最多,你复活,获得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_anyuningfeng":"黯喻凝风", + "zioy_anyuningfeng_info":"", + "zioy_nongying":"弄影", + "zioy_nongying_info":"起舞弄清影,何似在人间。
①你的【闪】均视为【杀】,当你需要使用或打出【闪】时,你可以视为打出一张【闪】。
②每当你使用〖弄影①〗或将【闪】视为【杀】使用或打出时,若你已受伤,你失去1点体力上限并恢复1点体力,否则你获得1点体力上限并失去1点体力。", + "zioy_chanjuan":"婵娟", + "zioy_chanjuan_info":"但愿人长久,千里共婵娟。
当你回复体力时,你可令任意名已受伤的其他角色回复等量体力。", + }, + }, + intro:"??????????????????????????", + author:"喵喵", + diskURL:"", + forumURL:"", + version:"23.08.13.01.39", +},files:{"character":["zioy_gaiying.jpg","test.jpg","zioy_senjianmeng.jpg","zioy_xixuegui.jpg","zioy_shuijinxiezi.jpg","zioy_zhigaotian.jpg","zioy_renturtle.jpg","zioy_yinlong.jpg","zioy_heibai.jpg","zioy_yilong.jpg","zioy_huajian.jpg","zioy_shenxianxiang.jpg","zioy_sose.jpg","zioy_pqsj.jpg","zioy_dreamaker.jpg","zioy_drugdoctor.jpg","zioy_peiki.jpg","zioy_xielingyun.jpg","zioy_nianshou.jpg","zioy_jinu.jpg","zioy_diana.jpg","zioy_lanchesite.jpg","zioy_badun.jpg","zioy_xiaozhenhe.jpg","zioy_xingjun.jpg","zioy_osiris.jpg","zioy_titan.jpg","zioy_yenglish.jpg","zioy_alps.jpg","zioy_nemesis.jpg","zioy_bailu.jpg","zioy_xukongchong.jpg","zioy_muxi.jpg","zioy_kailuer.jpg","zioy_morana.jpg","zioy_nike.jpg","zioy_b7chuhaoji.jpg","zioy_guanghan.jpg"],"card":["zioy_yueguang.jpg"],"skill":[]}}}) \ No newline at end of file diff --git a/test.jpg b/test.jpg new file mode 100644 index 0000000..b334ce8 Binary files /dev/null and b/test.jpg differ diff --git a/zioy_alps.jpg b/zioy_alps.jpg new file mode 100644 index 0000000..911307b Binary files /dev/null and b/zioy_alps.jpg differ diff --git a/zioy_b7chuhaoji.jpg b/zioy_b7chuhaoji.jpg new file mode 100644 index 0000000..4226144 Binary files /dev/null and b/zioy_b7chuhaoji.jpg differ diff --git a/zioy_badun.jpg b/zioy_badun.jpg new file mode 100644 index 0000000..30406fb Binary files /dev/null and b/zioy_badun.jpg differ diff --git a/zioy_bailu.jpg b/zioy_bailu.jpg new file mode 100644 index 0000000..c7f69b4 Binary files /dev/null and b/zioy_bailu.jpg differ diff --git a/zioy_diana.jpg b/zioy_diana.jpg new file mode 100644 index 0000000..753760a Binary files /dev/null and b/zioy_diana.jpg differ diff --git a/zioy_dreamaker.jpg b/zioy_dreamaker.jpg new file mode 100644 index 0000000..7985608 Binary files /dev/null and b/zioy_dreamaker.jpg differ diff --git a/zioy_drugdoctor.jpg b/zioy_drugdoctor.jpg new file mode 100644 index 0000000..df42e68 Binary files /dev/null and b/zioy_drugdoctor.jpg differ diff --git a/zioy_gaiying.jpg b/zioy_gaiying.jpg new file mode 100644 index 0000000..191eef6 Binary files /dev/null and b/zioy_gaiying.jpg differ diff --git a/zioy_guanghan.jpg b/zioy_guanghan.jpg new file mode 100644 index 0000000..535a59c Binary files /dev/null and b/zioy_guanghan.jpg differ diff --git a/zioy_heibai.jpg b/zioy_heibai.jpg new file mode 100644 index 0000000..ef5d922 Binary files /dev/null and b/zioy_heibai.jpg differ diff --git a/zioy_huajian.jpg b/zioy_huajian.jpg new file mode 100644 index 0000000..bcfb0a3 Binary files /dev/null and b/zioy_huajian.jpg differ diff --git a/zioy_jinu.jpg b/zioy_jinu.jpg new file mode 100644 index 0000000..4b9f279 Binary files /dev/null and b/zioy_jinu.jpg differ diff --git a/zioy_kailuer.jpg b/zioy_kailuer.jpg new file mode 100644 index 0000000..63eee8a Binary files /dev/null and b/zioy_kailuer.jpg differ diff --git a/zioy_lanchesite.jpg b/zioy_lanchesite.jpg new file mode 100644 index 0000000..7dc1aed Binary files /dev/null and b/zioy_lanchesite.jpg differ diff --git a/zioy_morana.jpg b/zioy_morana.jpg new file mode 100644 index 0000000..98397ae Binary files /dev/null and b/zioy_morana.jpg differ diff --git a/zioy_muxi.jpg b/zioy_muxi.jpg new file mode 100644 index 0000000..9ecc693 Binary files /dev/null and b/zioy_muxi.jpg differ diff --git a/zioy_nemesis.jpg b/zioy_nemesis.jpg new file mode 100644 index 0000000..fef2d89 Binary files /dev/null and b/zioy_nemesis.jpg differ diff --git a/zioy_nianshou.jpg b/zioy_nianshou.jpg new file mode 100644 index 0000000..aa7e2bc Binary files /dev/null and b/zioy_nianshou.jpg differ diff --git a/zioy_nike.jpg b/zioy_nike.jpg new file mode 100644 index 0000000..65e6ecf Binary files /dev/null and b/zioy_nike.jpg differ diff --git a/zioy_osiris.jpg b/zioy_osiris.jpg new file mode 100644 index 0000000..0676a8e Binary files /dev/null and b/zioy_osiris.jpg differ diff --git a/zioy_peiki.jpg b/zioy_peiki.jpg new file mode 100644 index 0000000..95a7788 Binary files /dev/null and b/zioy_peiki.jpg differ diff --git a/zioy_pqsj.jpg b/zioy_pqsj.jpg new file mode 100644 index 0000000..0757b4d Binary files /dev/null and b/zioy_pqsj.jpg differ diff --git a/zioy_renturtle.jpg b/zioy_renturtle.jpg new file mode 100644 index 0000000..37b708a Binary files /dev/null and b/zioy_renturtle.jpg differ diff --git a/zioy_senjianmeng.jpg b/zioy_senjianmeng.jpg new file mode 100644 index 0000000..d65eb1a Binary files /dev/null and b/zioy_senjianmeng.jpg differ diff --git a/zioy_shenxianxiang.jpg b/zioy_shenxianxiang.jpg new file mode 100644 index 0000000..e9df9b7 Binary files /dev/null and b/zioy_shenxianxiang.jpg differ diff --git a/zioy_shuijinxiezi.jpg b/zioy_shuijinxiezi.jpg new file mode 100644 index 0000000..2e430cc Binary files /dev/null and b/zioy_shuijinxiezi.jpg differ diff --git a/zioy_sose.jpg b/zioy_sose.jpg new file mode 100644 index 0000000..066a539 Binary files /dev/null and b/zioy_sose.jpg differ diff --git a/zioy_test.jpg b/zioy_test.jpg new file mode 100644 index 0000000..b334ce8 Binary files /dev/null and b/zioy_test.jpg differ diff --git a/zioy_titan.jpg b/zioy_titan.jpg new file mode 100644 index 0000000..0aa7529 Binary files /dev/null and b/zioy_titan.jpg differ diff --git a/zioy_xiaozhenhe.jpg b/zioy_xiaozhenhe.jpg new file mode 100644 index 0000000..61ed027 Binary files /dev/null and b/zioy_xiaozhenhe.jpg differ diff --git a/zioy_xielingyun.jpg b/zioy_xielingyun.jpg new file mode 100644 index 0000000..ff8f82f Binary files /dev/null and b/zioy_xielingyun.jpg differ diff --git a/zioy_xingjun.jpg b/zioy_xingjun.jpg new file mode 100644 index 0000000..a6a30f9 Binary files /dev/null and b/zioy_xingjun.jpg differ diff --git a/zioy_xixuegui.jpg b/zioy_xixuegui.jpg new file mode 100644 index 0000000..ee26ebf Binary files /dev/null and b/zioy_xixuegui.jpg differ diff --git a/zioy_xukongchong.jpg b/zioy_xukongchong.jpg new file mode 100644 index 0000000..ccc8aeb Binary files /dev/null and b/zioy_xukongchong.jpg differ diff --git a/zioy_yenglish.jpg b/zioy_yenglish.jpg new file mode 100644 index 0000000..0d14faa Binary files /dev/null and b/zioy_yenglish.jpg differ diff --git a/zioy_yilong.jpg b/zioy_yilong.jpg new file mode 100644 index 0000000..cec7b5d Binary files /dev/null and b/zioy_yilong.jpg differ diff --git a/zioy_yinlong.jpg b/zioy_yinlong.jpg new file mode 100644 index 0000000..cf05eb3 Binary files /dev/null and b/zioy_yinlong.jpg differ diff --git a/zioy_yueguang.jpg b/zioy_yueguang.jpg new file mode 100644 index 0000000..2c1bc2b Binary files /dev/null and b/zioy_yueguang.jpg differ diff --git a/zioy_zhigaotian.jpg b/zioy_zhigaotian.jpg new file mode 100644 index 0000000..febc7ee Binary files /dev/null and b/zioy_zhigaotian.jpg differ diff --git a/zioy_zuiqiangdi_1.jpg b/zioy_zuiqiangdi_1.jpg new file mode 100644 index 0000000..3145385 Binary files /dev/null and b/zioy_zuiqiangdi_1.jpg differ diff --git a/zioy_zuiqiangdi_2.jpg b/zioy_zuiqiangdi_2.jpg new file mode 100644 index 0000000..bb1d36e Binary files /dev/null and b/zioy_zuiqiangdi_2.jpg differ