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 {