From cf9b0955ada56de141b34a0e98adca93c696348f Mon Sep 17 00:00:00 2001 From: Miao_Spring <539943419@qq.com> Date: Sun, 14 Jul 2024 11:18:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BAmiaotool=E6=B7=BB=E5=8A=A0skillFactory?= =?UTF-8?q?=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=9C=A8game.import=E4=B8=AD?= =?UTF-8?q?=E5=8C=85=E8=A3=B9skill=EF=BC=8C=E5=AF=B9=E5=85=B6=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E4=B8=80=E5=AE=9A=E7=9A=84=E9=A2=84=E5=A4=84=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E5=85=B6=E6=94=AF=E6=8C=81=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E5=A6=82=E8=87=AA=E5=8A=A8=E5=AF=BC=E5=85=A5=E5=AD=90=E6=8A=80?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E8=87=AA=E5=8A=A8=E8=AE=BE=E7=BD=AE=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E5=90=8D=E7=AD=89=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extension.js | 180 +++++++++++++++++++++++++++++++-------------------- miaoTool.js | 47 ++++++++++++-- 2 files changed, 153 insertions(+), 74 deletions(-) diff --git a/extension.js b/extension.js index f5c0212..ca86f73 100644 --- a/extension.js +++ b/extension.js @@ -1,7 +1,8 @@ import content from "./content.js"; import _miaoTool from "./miaoTool.js"; +import {skillFactory} from "./miaoTool.js"; game.import("extension", function (lib, game, ui, get, ai, _status) { - const miaoTool = _miaoTool(lib, game, ui, get, ai, _status) + const mtool = _miaoTool(lib, game, ui, get, ai, _status) return { name: "喵喵喵喵", content:content(lib, game, ui, get, ai, _status), @@ -155,7 +156,7 @@ game.import("extension", function (lib, game, ui, get, ai, _status) { }, list: [] }, - skill: { + skill: skillFactory({ skill: { "zioy_xixue": { enable: "phaseUse", @@ -3716,8 +3717,6 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; 'step 1' var c = result.control if(c == 1){ - // player.addBuffImmune("all",2) - // player.discardPlayerCard(player.next,'hej',[0,999]) player.next.damage(1) }else if(c == 2){ player.removeBuffImmune("all",'id=testtest') @@ -3728,64 +3727,34 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; }else if(c == 5){ player.changeHujia(999) } - // 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: { + group: ['yingzi'], + subSkill:{ + test:{ + + } + }, + autoSubSkill: { "t1": { trigger: { - player: "damageBegin3" + global: "phaseBegin" }, - frequent: false, + frequent: true, filter: function (event, player) { - return false; + return true; }, content: function () { - // trigger.cancel(); - // player.say("test"); - // trigger.num /= 10 + player.draw() }, sub: true, "_priority": 0 } }, - group: ["zioy_t_t1"], + autoTranslate:{ + name:'测试技能', + info:'测试自动导入翻译' + }, "_priority": 0 }, "zioy_shuohui": { @@ -5972,15 +5941,6 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; }, "_priority": 0 }, - "zioy_lanzhiyuane": { - "_priority": 0 - }, - "zioy_liuzhenxiongxiang": { - "_priority": 0 - }, - "zioy_yinhuxiaowu": { - "_priority": 0 - }, "zioy_leimingqiangu": { trigger: { player: ["damageBegin"] @@ -8549,7 +8509,98 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; trigger.getParent().effectCount+=num; player.removeMark('zioy_minchao'); }, - } + }, + "zioy_lanzhiyuane": { + autoTranslate:{ + "name": "滥蛭垣厄", + "info":"锁定技,你使用【杀】造成的伤害+X(X为log2(目标角色当前体力)且向下取整),若造成伤害后目标角色体力值不小于其最大体力值*0.5则你弃置2张牌并弃置其至多2张牌,否则倒置其下次回复体力效果并令此技能本轮游戏无法再对其发动。", + }, + trigger:{ + source:'damageBegin1' + }, + filter(event,player){ + if(event.player.hasSkill('zioy_lanzhiyuane_block')){ + return false + } + return event?.card?.name==='sha' + }, + forced:true, + locked:true, + content:async function(event,trigger,player){ + const num = Math.floor(Math.log2(trigger.player.hp)) + trigger.num += num + }, + _priority:115615684, + subSkill:{ + targetRecover:{ + trigger:{ + player:'recoverBefore' + }, + direct:true, + mark:true, + marktext:'蛭', + intro:{ + name:'滥蛭垣厄', + mark:()=>'回复体力改为失去体力' + }, + content:async function(event,trigger,player){ + const num = trigger.num + trigger.cancel() + trigger.player.loseHp(num) + trigger.player.removeSkill('zioy_lanzhiyuane_targetRecover') + }, + _priority:115615684, + }, + block:{ + trigger:{ + global:'roundStart' + }, + content:async function (event,trigger,player){ + player.removeSkill('zioy_lanzhiyuane_block') + }, + _priority:115615684, + } + }, + autoSubSkill:{ + damageEnd:{ + trigger:{ + source:'damageEnd' + }, + forced:true, + locked:true, + filter(event,player){ + if(event.player.hasSkill('zioy_lanzhiyuane_block')){ + return false + } + return event?.card?.name==='sha' + }, + content:async function(event,trigger,player){ + let target = trigger.player + if(target.hp >= target.maxHp/2){ + player.chooseToDiscard(2,'he',true) + player.discardPlayerCard('hej',trigger.player,[1,2],false) + }else{ + trigger.player.addSkill('zioy_lanzhiyuane_targetRecover') + trigger.player.removeSkill('zioy_lanzhiyuane_block') + + } + }, + _priority:115615684, + } + }, + }, + "zioy_liuzhenxiongxiang": { + autoTranslate:{ + "name": "流鸩汹飨", + "info":"", + }, + }, + "zioy_yinhuxiaowu": { + autoTranslate:{ + "name": "饮蛊销污", + "info":"", + }, + }, }, translate: { "zioy_xixue": "汲血", @@ -8776,8 +8827,6 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; "zioy_huangyi": "煌熠", "zioy_huangyi_info": "锁定技,你即将造成伤害时,未觉醒状态下你令此伤害-1并回复1点体力,然后你可以移动受伤角色区域内至多2张牌,觉醒状态下若目标角色强化锁定则解除锁定,然后倒置目标角色强化,令伤害+X(X为你以此法倒置的强化项数之和)", - "zioy_t": "测试", - "zioy_t_info": "测试技能", "zioy_t1": "测试", "zioy_t1_info": "sadadwadwaedaw", "zioy_shuohui": "朔回", @@ -8837,13 +8886,6 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; "起舞弄清影,何似在人间。
①你手牌中的【闪】均视为【杀】,当你需要使用或打出【闪】时,你可以视为打出一张【闪】。
②每当你发动〖弄影①〗或将【闪】视为【杀】使用或打出时,若你已受伤,你失去1点体力上限并恢复1点体力,否则你获得1点体力上限并失去1点体力。", "zioy_chanjuan": "婵娟", "zioy_chanjuan_info": "但愿人长久,千里共婵娟。
你回复体力后,可令任意名已受伤的其他角色回复等量体力。", - "zioy_lanzhiyuane": "滥蛭垣厄", - "zioy_lanzhiyuane_info": - "锁定技,你的【杀】造成的伤害+X(X为log2(目标角色当前体力)且向下取整),若造成伤害后目标角色体力值不小于最大体力值*0.5则弃置其2张牌,否则倒置其下次回复体力效果并令此技能无法再对其发动。", - "zioy_liuzhenxiongxiang": "流鸩汹飨", - "zioy_liuzhenxiongxiang_info": "", - "zioy_yinhuxiaowu": "饮蛊销污", - "zioy_yinhuxiaowu_info": "测试是否有更新", "zioy_leimingqiangu": "雷鸣千古", "zioy_leimingqiangu_info": '①记你的体力上限+你拥有的“雷殊”数量为你的"尾数",若你的"尾数"小于9,每次使用进攻类型的牌或即将受到伤害时你获得1点体力上限并回复1点体力值。
②你即将受到的伤害不超过尾数/3(向下取整),你受到时伤害获得尾数*5枚“鸣雷”标记,当“鸣雷”标记数量达到200枚时你移去200枚“鸣雷”标记并回复1点体力值,若尾数达到9则使你下一次造成伤害后对受伤角色造成1点不会触发此技能③效果的雷属性伤害。
③当你尾数达到9时,你为伤害来源的任何伤害数值+2,你造成任何伤害后获得伤害值*尾数*3点“鸣雷”标记。
④每个回合开始阶段将你超过9的体力上限部分与全部护甲转换为体力。
⑤你的摸牌阶段摸牌数基数为你的尾数/1.5(向下取整)。', @@ -8925,7 +8967,7 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; zioy_kuangyong:'狂涌', zioy_kuangyong_info:'当你使用基本牌或普通锦囊牌指定一名角色为唯一目标时,你可以结算X次以下效果:你有50%概率令此牌额外结算一次。然后弃置1枚“涌”(X为你“涌”标记的数量)。', } - }, + }), intro: "??????????????????????????
拒绝规范描述", author: "喵喵", diskURL: "", diff --git a/miaoTool.js b/miaoTool.js index 1128c5b..f6c4fbb 100644 --- a/miaoTool.js +++ b/miaoTool.js @@ -1,11 +1,48 @@ +// 用于在game.import中包裹skill,对其进行一定的预处理,使其支持一些如自动导入子技能,自动设置技能名等的功能 +export function skillFactory(skill) { + for (let skill_name in skill.skill) { + const skill_content = skill.skill[skill_name]; + // 自动导入在autoSubSkill下的子技能 + if (skill_content.autoSubSkill) { + skill_content.subSkill = skill_content.subSkill ?? {}; + skill_content.group = skill_content.group ?? []; + for (let autoSubSkillName in skill_content.autoSubSkill) { + skill_content.subSkill[autoSubSkillName] = skill_content.autoSubSkill[autoSubSkillName]; + skill_content.group.push(`${skill_name}_${autoSubSkillName}`); + } + } + // 自动根据autoTranslate设置技能的translate相关内容 + if (skill_content.autoTranslate) { + skill.translate[`${skill_name}`] = skill_content.autoTranslate.name ?? "未发现name"; + skill.translate[`${skill_name}_info`] = skill_content.autoTranslate.info ?? "未发现info"; + } + } + return skill; +} + export default (lib, game, ui, get, ai, _status) => { return { - test: "test123", isAsyncFunction(func) { - return func.constructor.name === 'AsyncFunction'; - }, - watch: function (obj, key, callback) { - + return func.constructor.name === "AsyncFunction"; }, + watch: function (obj, key, callback) {}, + game: {}, + player: {}, + // 提供一些便捷的math功能 + math: { + randInt: function (num) { + num = num ?? 1000000000; + if (num === -1) { + num = -1000000000; + } else if (num === 1) { + num = 1000000000; + } + let _n = Math.ceil(Math.random() * num); + if (num < 0) { + _n *= -1; + } + return _n; + } + } }; };