From c8e45f2a2271bf36b745d6ef51826c625702dbd6 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Mon, 5 Feb 2024 15:45:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=89=B9=E6=AE=8A=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/_server/table/comment.js | 213 ++++++++++++++---------- public/_server/table/plugins.comment.js | 22 ++- public/libs/core.js | 3 +- public/project/enemys.js | 4 +- public/project/plugins.js | 203 ++++++++++++++-------- src/game/enemy/special.ts | 198 +--------------------- src/types/enemy.d.ts | 8 +- 7 files changed, 292 insertions(+), 359 deletions(-) diff --git a/public/_server/table/comment.js b/public/_server/table/comment.js index de26e99..37a5ba6 100644 --- a/public/_server/table/comment.js +++ b/public/_server/table/comment.js @@ -191,109 +191,107 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_leaf": true, "_type": "popCheckboxSet", "_checkboxSet": function () { + var array = Mota.require('var', 'enemySpecials'); + var b = [], + c = []; + for (var index = 0; index < array.length; index++) { + b.push(index) + var name = array[index].name; + if (name instanceof Function) name = name({}); + c.push(name + "(" + index + ")") + } return { - "prefix": [], - "key": [] + "prefix": c, + "key": b } }, "_data": "特殊属性" }, - "crit": { - "_leaf": true, - "_type": "textarea", - "_docs": "致命一击", - "_data": "致命一击" - }, - "charge": { - "_leaf": true, - "_type": "textarea", - "_docs": "勇气冲锋", - "_data": "勇气冲锋" - }, - "courage": { - "_leaf": true, - "_type": "textarea", - "_docs": "勇气之刃", - "_data": "勇气之刃" - }, - "together": { - "_leaf": true, - "_type": "textarea", - "_docs": "抱团", - "_data": "抱团" - }, - "hungry": { - "_leaf": true, - "_type": "textarea", - "_docs": "饥渴", - "_data": "饥渴" - }, - "ice": { - "_leaf": true, - "_type": "textarea", - "_docs": "霜冻", - "_data": "霜冻" - }, - "iceHalo": { - "_leaf": true, - "_type": "textarea", - "_docs": "冰封光环", - "_data": "冰封光环" - }, - "night": { - "_leaf": true, - "_type": "textarea", - "_docs": "永夜", - "_data": "永夜" - }, - "day": { - "_leaf": true, - "_type": "textarea", - "_docs": "极昼", - "_data": "极昼" - }, - "melt": { - "_leaf": true, - "_type": "textarea", - "_docs": "融化", - "_data": "融化" - }, - "iceCore": { - "_leaf": true, - "_type": "textarea", - "_docs": "冰封之核", - "_data": "冰封之核" - }, - "fireCore": { - "_leaf": true, - "_type": "textarea", - "_docs": "火焰之核", - "_data": "火焰之核" - }, - "paleShield": { - "_leaf": true, - "_type": "textarea", - "_docs": "苍蓝刻", - "_data": "苍蓝刻" - }, "value": { "_leaf": true, "_type": "textarea", "_docs": "特殊属性数值", - "_data": "特殊属性的数值\n如:领域/阻激/激光怪的伤害值;吸血怪的吸血比例;光环怪增加生命的比例" + "_data": "特殊属性的数值\n如:领域/阻激/激光怪的伤害值;光环怪增加生命的比例" + }, + "zone": { + "_leaf": true, + "_type": "textarea", + "_docs": "领域伤害", + "_data": "领域怪的伤害值" + }, + "repulse": { + "_leaf": true, + "_type": "textarea", + "_docs": "阻击伤害", + "_data": "阻击怪的伤害值" + }, + "laser": { + "_leaf": true, + "_type": "textarea", + "_docs": "激光伤害", + "_data": "激光怪的伤害值" + }, + "breakArmor": { + "_leaf": true, + "_type": "textarea", + "_docs": "破甲比例", + "_data": "破甲百分比" + }, + "counterAttack": { + "_leaf": true, + "_type": "textarea", + "_docs": "反击比例", + "_data": "反击百分比" + }, + "vampire": { + "_leaf": true, + "_type": "textarea", + "_docs": "吸血比例", + "_data": "吸血怪的吸血百分比" + }, + "hpBuff": { + "_leaf": true, + "_type": "textarea", + "_docs": "光环加血", + "_data": "光环怪增加生命的比例" + }, + "atkBuff": { + "_leaf": true, + "_type": "textarea", + "_docs": "光环加攻", + "_data": "光环怪增加攻击的比例" + }, + "defBuff": { + "_leaf": true, + "_type": "textarea", + "_docs": "光环加防", + "_data": "光环怪增加防御的比例" }, "zoneSquare": { "_leaf": true, "_type": "checkbox", "_docs": "九宫格", - "_data": "领域、阻击、光环或捕捉怪是否九宫格" + "_data": "领域、阻击或捕捉怪是否九宫格" + }, + "haloSquare": { + "_leaf": true, + "_type": "checkbox", + "_docs": "九宫格", + "_data": "光环怪是否九宫格" }, "range": { "_leaf": true, "_type": "textarea", "_range": "(thiseval==~~thiseval && thiseval>0)||thiseval==null", "_docs": "领域范围", - "_data": "领域或光环的范围;领域不加默认为1,光环不加则为全图效果" + "_data": "领域的范围;不加默认为1" + }, + "haloRange": { + "_leaf": true, + "_type": "textarea", + "_range": "(thiseval==~~thiseval && thiseval>0)||thiseval==null", + "_docs": "光环范围", + "_data": "光环的范围;不加为全图效果" }, "notBomb": { "_leaf": true, @@ -308,25 +306,38 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_docs": "连击数", "_data": "多连击的连击数,净化怪的净化倍率" }, + "purify": { + "_leaf": true, + "_type": "textarea", + "_range": "(thiseval==~~thiseval && thiseval>0)||thiseval==null", + "_docs": "净化倍率", + "_data": "净化百分比" + }, "add": { "_leaf": true, "_type": "checkbox", "_docs": "吸血加到自身", - "_data": "吸血后是否加到自身;光环是否叠加" + "_data": "吸血后是否加到自身" + }, + "haloAdd": { + "_leaf": true, + "_type": "checkbox", + "_docs": "光环是否叠加", + "_data": "光环是否叠加" }, "atkValue": { "_leaf": true, "_type": "textarea", "_range": "thiseval==~~thiseval||thiseval==null", "_docs": "退化扣攻", - "_data": "退化时勇士下降的攻击力点数;光环怪增加攻击的比例;反击的比例" + "_data": "退化时勇士下降的攻击力点数" }, "defValue": { "_leaf": true, "_type": "textarea", "_range": "thiseval==~~thiseval||thiseval==null", "_docs": "退化扣防", - "_data": "退化时勇士下降的防御力点数;光环怪增加防御的比例;破甲的比例" + "_data": "退化时勇士下降的防御力点数" }, "damage": { "_leaf": true, @@ -335,12 +346,32 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_docs": "固伤", "_data": "战前扣血的点数" }, - "beforeBattle": { + "specialHalo": { "_leaf": true, - "_type": "event", - "_event": "beforeBattle", - "_docs": "战前事件", - "_data": "和该怪物战斗前触发的事件列表" + "_type": "popCheckboxSet", + "_checkboxSet": function () { + var array = Mota.require('var', 'enemySpecials'); + var b = [], + c = []; + for (var index = 0; index < array.length; index++) { + b.push(index) + var name = array[index].name; + if (name instanceof Function) name = name({}); + c.push(name + "(" + index + ")") + } + return { + "prefix": c, + "key": b + } + }, + "_docs": "特殊光环", + "_data": "特殊光环增加的特殊属性列表,对于属性的数值也在该怪物属性中填写" + }, + "specialMultiply": { + "_leaf": true, + "_type": "checkbox", + "_docs": "特殊数值关系", + "_data": "特殊属性的数值在不同怪物的光环加成下是相乘还是相加关系。对于非数值属性,不会进行任何处理" }, "afterBattle": { "_leaf": true, diff --git a/public/_server/table/plugins.comment.js b/public/_server/table/plugins.comment.js index 960b1cc..9df2c7e 100644 --- a/public/_server/table/plugins.comment.js +++ b/public/_server/table/plugins.comment.js @@ -9,11 +9,29 @@ var plugins_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_type": "object", "_data": function (key) { var obj = { - "init": { + "fiveLayer": { "_leaf": true, "_type": "textarea", "_range": "typeof(thiseval)=='string'", - "_data": "双击查看插件详情" + "_data": "五图层插件" + }, + "uiRewrite": { + "_leaf": true, + "_type": "textarea", + "_range": "typeof(thiseval)=='string'", + "_data": "ui复写" + }, + "special": { + "_leaf": true, + "_type": "textarea", + "_range": "typeof(thiseval)=='string'", + "_data": "怪物特殊属性" + }, + "battle": { + "_leaf": true, + "_type": "textarea", + "_range": "typeof(thiseval)=='string'", + "_data": "战斗" }, } if (obj[key]) return obj[key]; diff --git a/public/libs/core.js b/public/libs/core.js index a76b384..3096aa9 100644 --- a/public/libs/core.js +++ b/public/libs/core.js @@ -327,7 +327,8 @@ core.prototype._loadPluginAsync = async function () { try { value.call(plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1); } catch (e) { - throw new Error(`Plugin '${key}' init fail. Error info: ${e}`); + console.error(`Plugin '${key}' init fail. `); + throw e; } } }; diff --git a/public/project/enemys.js b/public/project/enemys.js index eb693bb..a1964c1 100644 --- a/public/project/enemys.js +++ b/public/project/enemys.js @@ -16,7 +16,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = "bluePriest": {"name":"初级法师","hp":100,"atk":120,"def":0,"money":3,"exp":0,"point":1,"special":[9]}, "redPriest": {"name":"高级法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "brownWizard": {"name":"初级巫师","hp":100,"atk":120,"def":0,"money":16,"exp":0,"point":0,"special":[15],"value":100,"range":2}, - "redWizard": {"name":"高级巫师","hp":1000,"atk":1200,"def":0,"money":160,"exp":0,"point":0,"special":[15],"value":200,"zoneSquare":true}, + "redWizard": {"name":"高级巫师","hp":1000,"atk":1200,"def":0,"money":160,"exp":0,"point":0,"special":[15,28],"value":200,"zoneSquare":true,"specialHalo":[6,16],"n":9,"haloRange":2,"haloSquare":true}, "swordsman": {"name":"双手剑士","hp":100,"atk":120,"def":0,"money":6,"exp":0,"point":0,"special":[4]}, "soldier": {"name":"冥战士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "yellowKnight": {"name":"金骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, @@ -73,7 +73,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = "yellowKing": {"name":"黄衣魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "greenKing": {"name":"青衣武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "redKing": {"name":"红衣魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "blueKing": {"name":"白衣武士","hp":100,"atk":120,"def":0,"money":17,"exp":0,"point":0,"special":[16]}, + "blueKing": {"name":"白衣武士","hp":100,"atk":120,"def":0,"money":17,"exp":0,"point":0,"special":[]}, "keiskeiFairy": {"name":"铃兰花妖","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "tulipFairy": {"name":"郁金香花妖","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "purpleBowman": {"name":"高级弓兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, diff --git a/public/project/plugins.js b/public/project/plugins.js index 6f63fe0..9cd2730 100644 --- a/public/project/plugins.js +++ b/public/project/plugins.js @@ -301,8 +301,15 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { special: function () { // 这个插件负责定义怪物属性 const specials = Mota.require('var', 'enemySpecials'); + /** + * @param {string | ((enemy: Enemy) => string)} func + * @param {Enemy} enemy + */ + const fromFunc = (func, enemy) => { + return typeof func === 'string' ? func : func(enemy); + }; // 怪物特殊属性包含四个信息 - // code: 索引,必须与该属性在数组内的索引一致 + // code: 索引,必须与该属性在数组内的索引一致,实际判断的时候也是根据索引判断,不会根据code判断 // name: 特殊属性名称,可以是一个函数,接受 enemy 作为参数,返回字符串 // desc: 特殊属性说明,也可以是一个函数,接受 enemy 作为参数,返回字符串 // color: 特殊属性颜色,会在怪物手册中显示出来 @@ -315,14 +322,13 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { }, { code: 1, - name: '致命一击', - desc: enemy => - `怪物每5回合触发一次强力攻击,造成${enemy.crit}%的伤害`, + name: '先攻', + desc: `怪物首先攻击`, color: '#fc3' }, { code: 2, - name: '恶毒', + name: '魔攻', desc: '怪物攻击无视勇士的防御', color: '#bbb0ff' }, @@ -346,160 +352,226 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { }, { code: 6, - name: enemy => `${enemy.n}连击`, + name: enemy => `${enemy.n ?? 4}连击`, desc: enemy => `怪物每回合攻击${enemy.n}次`, color: '#fe7' }, { code: 7, - name: '饥渴', + name: '破甲', desc: enemy => - `战斗前,怪物降低勇士${enemy.hungry}%的攻击,并加在自己身上`, + `战斗前,怪物附加角色防御的${Math.floor( + 100 * (enemy.breakArmor || core.values.breakArmor) + )}%作为伤害"`, color: '#b67' }, { code: 8, - name: '抱团', + name: '反击', desc: enemy => - `怪物周围5×5范围内每有一个拥有该属性的怪物,自身攻防就增加${enemy.together}%(线性叠加)`, + `战斗时,怪物每回合附加角色攻击的${Math.floor( + 100 * (enemy.counterAttack || core.values.counterAttack) + )}%作为伤害,无视角色防御`, color: '#fa4' }, { code: 9, - name: '绝对防御', - desc: '怪物的奇特护甲可以让勇士的额外攻击失效,攻击变为基础攻击+额外攻击', + name: '净化', + desc: enemy => + `战斗前,怪物附加角色护盾的${ + enemy.purify || core.values.purify + }倍作为伤害`, color: '#80eed6' }, { code: 10, - name: '勇气之刃', - desc: enemy => `怪物第一回合造成${enemy.courage}%的伤害`, + name: '模仿', + desc: `怪物的攻防和角色攻防相等`, color: '#b0c0dd' }, { code: 11, - name: '勇气冲锋', - desc: enemy => - `怪物首先攻击,造成${enemy.charge}%的伤害,并眩晕勇士5回合`, + name: '吸血', + desc: enemy => { + const vampire = enemy.vampire || 0; + const hp = Mota.require('fn', 'getHeroStatusOn')('hp'); + return ( + `战斗前,怪物首先吸取角色的${Math.floor( + 100 * vampire + )}%生命(约${Math.floor(hp * vampire)}点)作为伤害` + + (enemy.add ? ',并把伤害数值加到自身生命上' : '') + ); + }, color: '#ff00d2' }, { code: 12, - name: '追猎', - desc: '当勇士移动到该怪物的水平或竖直方向上时,怪物向勇士移动一格', + name: '中毒', + desc: `战斗后,角色陷入中毒状态,每一步损失生命${core.data.values.poisonDamage}点`, color: '#9e8' }, { code: 13, - name: '魔攻', - desc: '怪物攻击无视勇士的防御', + name: '衰弱', + desc: + `战斗后,角色陷入衰弱状态,攻防暂时下降` + + (core.data.values.weakValue >= 1 + ? core.data.values.weakValue + '点' + : parseInt(core.data.values.weakValue * 100) + '%'), color: '#bbb0ff' }, { code: 14, - name: '智慧之源', - desc: '困难难度下(简单难度没有效果),战斗后,怪物会吸取勇士30%的智慧(勇士智慧向下取整至整十)加在本层的拥有该属性的怪物攻击上', + name: '诅咒', + desc: '战斗后,角色陷入诅咒状态,战斗无法获得金币和经验', color: '#bbeef0' }, { code: 15, - name: '突刺', + name: '领域', desc: enemy => - `勇士走到怪物怪物周围四格时,怪物对勇士造成${core.formatBigNumber( - Math.max((enemy.value || 0) - getHeroStatusOn('def')) - )}点伤害`, + '经过怪物周围' + + (enemy.zoneSquare ? '九宫格' : '十字') + + '范围内' + + (enemy.range || 1) + + '格时自动减生命' + + (enemy.zone || 0) + + '点', color: '#c677dd' }, { code: 16, - name: '空', - desc: '空', + name: '夹击', + desc: '经过两只相同的怪物中间,角色生命值变成一半', color: '#fff' }, { code: 17, - name: '先攻', - desc: '战斗时,怪物首先攻击', + name: '仇恨', + desc: `战斗前,怪物附加之前积累的仇恨值作为伤害;战斗后,释放一半的仇恨值。(每杀死一个怪物获得${ + core.data.values.hatred || 0 + }点仇恨值)`, color: '#b0b666' }, { code: 18, name: '阻击', desc: enemy => - `经过怪物十字范围内时怪物后退一格,同时对勇士造成${enemy.value}点伤害`, + '经过怪物周围' + + (enemy.zoneSquare ? '九宫格' : '十字') + + '时自动减生命' + + (enemy.repulse || 0) + + '点,同时怪物后退一格', color: '#8888e6' }, { code: 19, - name: '电摇嘲讽', - desc: - '当勇士移动到怪物同行或同列时,勇士会直接冲向怪物,撞碎路上的所有地形和门,拾取路上的道具,与路上的怪物战斗' + - ',最后与该怪物战斗', - color: '#ff6666' + name: '自爆', + desc: '战斗后角色的生命值变成1', + color: '#f66' }, { code: 20, - name: '霜冻', - desc: enemy => - `怪物寒冷的攻击使勇士动作变慢,勇士每回合对怪物造成的伤害减少${enemy.ice}%。装备杰克的衣服后可以免疫。`, - color: 'cyan' + name: '无敌', + desc: `角色无法打败怪物,除非拥有十字架`, + color: '#aaa' }, { code: 21, - name: '冰封光环', + name: '退化', desc: enemy => - `寒气逼人,使勇士对该怪物周围7*7范围内的怪物伤害减少${enemy.iceHalo}%(线性叠加)`, + '战斗后角色永久下降' + + enemy.atkValue + + '点攻击和' + + enemy.defValue + + '点防御', color: 'cyan' }, { code: 22, - name: '永夜', + name: '固伤', desc: enemy => - `战斗后,减少勇士${enemy.night}点攻防,增加本层所有怪物${enemy.night}点攻防,仅在本层有效`, + '战斗前,怪物对角色造成' + + enemy.damage + + '点固定伤害,未开启负伤时无视角色护盾。', color: '#d8a' }, { code: 23, - name: '极昼', - desc: enemy => - `战斗后,减少本层所有怪物${enemy.day}点攻防,增加勇士${enemy.day}点攻防,仅在本层有效`, + name: '重生', + desc: '怪物被击败后,角色转换楼层则怪物将再次出现', color: '#ffd' }, { code: 24, - name: '射击', - desc: function () { - return '经过怪物同行或同列的可视范围内时受到一次普通攻击的伤害'; - }, + name: '激光', + desc: enemy => + '经过怪物同行或同列时自动减生命' + enemy.laser + '点', color: '#dda0dd' }, { code: 25, - name: '融化', + name: '光环', desc: enemy => - `战斗后该怪物会融化,在怪物位置产生一个3*3的范围光环,光环内怪物的攻防增加${enemy.melt}%`, + (enemy.range != null + ? (enemy.haloSquare ? '该怪物九宫格' : '该怪物十字') + + enemy.haloRange + + '格范围内' + : '同楼层所有') + + '怪物生命提升' + + (enemy.hpBuff || 0) + + '%,攻击提升' + + (enemy.atkBuff || 0) + + '%,防御提升' + + (enemy.defBuff || 0) + + '%,' + + (enemy.haloAdd ? '可叠加' : '不可叠加'), color: '#e6e099' }, { code: 26, - name: '冰封之核', - desc: enemy => - `怪物拥有逼人的寒气,使周围5*5范围内的怪物防御增加${enemy.iceCore}%`, - color: '#70ffd1' + name: '支援', + desc: '当周围一圈的怪物受到攻击时将上前支援,并组成小队战斗。', + color: '#77c0b6' }, { code: 27, - name: '火焰之核', + name: '捕捉', desc: enemy => - `怪物拥有灼热的火焰,使周围5*5范围内的怪物攻击增加${enemy.fireCore}%`, - color: '#ff6f0a' + '当走到怪物周围' + + (enemy.zoneSquare ? '九宫格' : '十字') + + '时会强制进行战斗。', + color: '#c0ddbb' }, { code: 28, - name: '苍蓝刻', - desc: enemy => - `怪物使用苍蓝之灵的力量,使自身受到的伤害减少${enemy.paleShield}%`, - color: '#ff6f0a' + name: '特殊光环', + desc: enemy => { + let content = ''; + enemy.specialHalo?.forEach((v, i) => { + content += + ' '.repeat(8) + + `${i + 1}. ${fromFunc( + specials[v].name, + enemy + )}: ${fromFunc( + specials[v].desc, + enemy + )}
`; + }); + return ( + `怪物周围${enemy.haloSquare ? '九宫格' : '十字'}${ + enemy.haloRange + }格范围内所有怪物获得以下特殊属性,` + + `特殊属性数值间为${ + enemy.specialMultiply ? '相乘' : '相加' + }关系:
` + + content + ); + }, + color: '#ff0' } ); }, @@ -691,6 +763,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { if (this.progress !== 2) return; this.progress = 3; if (!this.floorId) return; + const { has } = Mota.Plugin.require('utils_g'); if (!has(this.x) || !has(this.y)) return; const col = this.col ?? core.status.maps[this.floorId].enemy; if (!col) return; diff --git a/src/game/enemy/special.ts b/src/game/enemy/special.ts index 1001c4a..ff93e12 100644 --- a/src/game/enemy/special.ts +++ b/src/game/enemy/special.ts @@ -1,5 +1,3 @@ -import { getHeroStatusOn } from '@/game/hero'; - export interface SpecialDeclaration { code: number; name: string | ((enemy: Enemy) => string); @@ -7,198 +5,4 @@ export interface SpecialDeclaration { color: string; } -export const specials: SpecialDeclaration[] = [ - { - code: 0, - name: '空', - desc: '空', - color: '#fff' - }, - { - code: 1, - name: '致命一击', - desc: enemy => `怪物每5回合触发一次强力攻击,造成${enemy.crit}%的伤害`, - color: '#fc3' - }, - { - code: 2, - name: '恶毒', - desc: '怪物攻击无视勇士的防御', - color: '#bbb0ff' - }, - { - code: 3, - name: '坚固', - desc: '怪物防御不小于勇士攻击-1', - color: '#c0b088' - }, - { - code: 4, - name: '2连击', - desc: '怪物每回合攻击2次', - color: '#fe7' - }, - { - code: 5, - name: '3连击', - desc: '怪物每回合攻击3次', - color: '#fe7' - }, - { - code: 6, - name: enemy => `${enemy.n}连击`, - desc: enemy => `怪物每回合攻击${enemy.n}次`, - color: '#fe7' - }, - { - code: 7, - name: '饥渴', - desc: enemy => - `战斗前,怪物降低勇士${enemy.hungry}%的攻击,并加在自己身上`, - color: '#b67' - }, - { - code: 8, - name: '抱团', - desc: enemy => - `怪物周围5×5范围内每有一个拥有该属性的怪物,自身攻防就增加${enemy.together}%(线性叠加)`, - color: '#fa4' - }, - { - code: 9, - name: '绝对防御', - desc: '怪物的奇特护甲可以让勇士的额外攻击失效,攻击变为基础攻击+额外攻击', - color: '#80eed6' - }, - { - code: 10, - name: '勇气之刃', - desc: enemy => `怪物第一回合造成${enemy.courage}%的伤害`, - color: '#b0c0dd' - }, - { - code: 11, - name: '勇气冲锋', - desc: enemy => - `怪物首先攻击,造成${enemy.charge}%的伤害,并眩晕勇士5回合`, - color: '#ff00d2' - }, - { - code: 12, - name: '追猎', - desc: '当勇士移动到该怪物的水平或竖直方向上时,怪物向勇士移动一格', - color: '#9e8' - }, - { - code: 13, - name: '魔攻', - desc: '怪物攻击无视勇士的防御', - color: '#bbb0ff' - }, - { - code: 14, - name: '智慧之源', - desc: '困难难度下(简单难度没有效果),战斗后,怪物会吸取勇士30%的智慧(勇士智慧向下取整至整十)加在本层的拥有该属性的怪物攻击上', - color: '#bbeef0' - }, - { - code: 15, - name: '突刺', - desc: enemy => - `勇士走到怪物怪物周围四格时,怪物对勇士造成${core.formatBigNumber( - Math.max((enemy.value || 0) - getHeroStatusOn('def')) - )}点伤害`, - color: '#c677dd' - }, - { - code: 16, - name: '空', - desc: '空', - color: '#fff' - }, - { - code: 17, - name: '先攻', - desc: '战斗时,怪物首先攻击', - color: '#b0b666' - }, - { - code: 18, - name: '阻击', - desc: enemy => - `经过怪物十字范围内时怪物后退一格,同时对勇士造成${enemy.value}点伤害`, - color: '#8888e6' - }, - { - code: 19, - name: '电摇嘲讽', - desc: - '当勇士移动到怪物同行或同列时,勇士会直接冲向怪物,撞碎路上的所有地形和门,拾取路上的道具,与路上的怪物战斗' + - ',最后与该怪物战斗', - color: '#ff6666' - }, - { - code: 20, - name: '霜冻', - desc: enemy => - `怪物寒冷的攻击使勇士动作变慢,勇士每回合对怪物造成的伤害减少${enemy.ice}%。装备杰克的衣服后可以免疫。`, - color: 'cyan' - }, - { - code: 21, - name: '冰封光环', - desc: enemy => - `寒气逼人,使勇士对该怪物周围7*7范围内的怪物伤害减少${enemy.iceHalo}%(线性叠加)`, - color: 'cyan' - }, - { - code: 22, - name: '永夜', - desc: enemy => - `战斗后,减少勇士${enemy.night}点攻防,增加本层所有怪物${enemy.night}点攻防,仅在本层有效`, - color: '#d8a' - }, - { - code: 23, - name: '极昼', - desc: enemy => - `战斗后,减少本层所有怪物${enemy.day}点攻防,增加勇士${enemy.day}点攻防,仅在本层有效`, - color: '#ffd' - }, - { - code: 24, - name: '射击', - desc: function () { - return '经过怪物同行或同列的可视范围内时受到一次普通攻击的伤害'; - }, - color: '#dda0dd' - }, - { - code: 25, - name: '融化', - desc: enemy => - `战斗后该怪物会融化,在怪物位置产生一个3*3的范围光环,光环内怪物的攻防增加${enemy.melt}%`, - color: '#e6e099' - }, - { - code: 26, - name: '冰封之核', - desc: enemy => - `怪物拥有逼人的寒气,使周围5*5范围内的怪物防御增加${enemy.iceCore}%`, - color: '#70ffd1' - }, - { - code: 27, - name: '火焰之核', - desc: enemy => - `怪物拥有灼热的火焰,使周围5*5范围内的怪物攻击增加${enemy.fireCore}%`, - color: '#ff6f0a' - }, - { - code: 28, - name: '苍蓝刻', - desc: enemy => - `怪物使用苍蓝之灵的力量,使自身受到的伤害减少${enemy.paleShield}%`, - color: '#ff6f0a' - } -]; +export const specials: SpecialDeclaration[] = []; diff --git a/src/types/enemy.d.ts b/src/types/enemy.d.ts index ed71c57..5a61f7c 100644 --- a/src/types/enemy.d.ts +++ b/src/types/enemy.d.ts @@ -36,7 +36,8 @@ type BooleanEnemyProperty = | 'haloSquare' | 'notBomb' | 'add' - | 'haloAdd'; + | 'haloAdd' + | 'specialAdd'; type DetailedEnemy = { specialText: string[]; @@ -114,6 +115,11 @@ interface EnemySpecialBase { * 怪物特殊属性 */ special: number[]; + + /** + * 特殊属性光环 + */ + specialHalo?: number[]; } interface EnemyInfoBase extends EnemySpecialBase {