feat: 特殊属性定义

This commit is contained in:
unanmed 2024-02-05 15:45:19 +08:00
parent 637bf96d4e
commit c8e45f2a22
7 changed files with 292 additions and 359 deletions

View File

@ -191,109 +191,107 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_leaf": true, "_leaf": true,
"_type": "popCheckboxSet", "_type": "popCheckboxSet",
"_checkboxSet": function () { "_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 { return {
"prefix": [], "prefix": c,
"key": [] "key": b
} }
}, },
"_data": "特殊属性" "_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": { "value": {
"_leaf": true, "_leaf": true,
"_type": "textarea", "_type": "textarea",
"_docs": "特殊属性数值", "_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": { "zoneSquare": {
"_leaf": true, "_leaf": true,
"_type": "checkbox", "_type": "checkbox",
"_docs": "九宫格", "_docs": "九宫格",
"_data": "领域、阻击、光环或捕捉怪是否九宫格" "_data": "领域、阻击或捕捉怪是否九宫格"
},
"haloSquare": {
"_leaf": true,
"_type": "checkbox",
"_docs": "九宫格",
"_data": "光环怪是否九宫格"
}, },
"range": { "range": {
"_leaf": true, "_leaf": true,
"_type": "textarea", "_type": "textarea",
"_range": "(thiseval==~~thiseval && thiseval>0)||thiseval==null", "_range": "(thiseval==~~thiseval && thiseval>0)||thiseval==null",
"_docs": "领域范围", "_docs": "领域范围",
"_data": "领域或光环的范围领域不加默认为1光环不加则为全图效果" "_data": "领域的范围不加默认为1"
},
"haloRange": {
"_leaf": true,
"_type": "textarea",
"_range": "(thiseval==~~thiseval && thiseval>0)||thiseval==null",
"_docs": "光环范围",
"_data": "光环的范围;不加为全图效果"
}, },
"notBomb": { "notBomb": {
"_leaf": true, "_leaf": true,
@ -308,25 +306,38 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_docs": "连击数", "_docs": "连击数",
"_data": "多连击的连击数,净化怪的净化倍率" "_data": "多连击的连击数,净化怪的净化倍率"
}, },
"purify": {
"_leaf": true,
"_type": "textarea",
"_range": "(thiseval==~~thiseval && thiseval>0)||thiseval==null",
"_docs": "净化倍率",
"_data": "净化百分比"
},
"add": { "add": {
"_leaf": true, "_leaf": true,
"_type": "checkbox", "_type": "checkbox",
"_docs": "吸血加到自身", "_docs": "吸血加到自身",
"_data": "吸血后是否加到自身;光环是否叠加" "_data": "吸血后是否加到自身"
},
"haloAdd": {
"_leaf": true,
"_type": "checkbox",
"_docs": "光环是否叠加",
"_data": "光环是否叠加"
}, },
"atkValue": { "atkValue": {
"_leaf": true, "_leaf": true,
"_type": "textarea", "_type": "textarea",
"_range": "thiseval==~~thiseval||thiseval==null", "_range": "thiseval==~~thiseval||thiseval==null",
"_docs": "退化扣攻", "_docs": "退化扣攻",
"_data": "退化时勇士下降的攻击力点数;光环怪增加攻击的比例;反击的比例" "_data": "退化时勇士下降的攻击力点数"
}, },
"defValue": { "defValue": {
"_leaf": true, "_leaf": true,
"_type": "textarea", "_type": "textarea",
"_range": "thiseval==~~thiseval||thiseval==null", "_range": "thiseval==~~thiseval||thiseval==null",
"_docs": "退化扣防", "_docs": "退化扣防",
"_data": "退化时勇士下降的防御力点数;光环怪增加防御的比例;破甲的比例" "_data": "退化时勇士下降的防御力点数"
}, },
"damage": { "damage": {
"_leaf": true, "_leaf": true,
@ -335,12 +346,32 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_docs": "固伤", "_docs": "固伤",
"_data": "战前扣血的点数" "_data": "战前扣血的点数"
}, },
"beforeBattle": { "specialHalo": {
"_leaf": true, "_leaf": true,
"_type": "event", "_type": "popCheckboxSet",
"_event": "beforeBattle", "_checkboxSet": function () {
"_docs": "战前事件", var array = Mota.require('var', 'enemySpecials');
"_data": "和该怪物战斗前触发的事件列表" 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": { "afterBattle": {
"_leaf": true, "_leaf": true,

View File

@ -9,11 +9,29 @@ var plugins_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_type": "object", "_type": "object",
"_data": function (key) { "_data": function (key) {
var obj = { var obj = {
"init": { "fiveLayer": {
"_leaf": true, "_leaf": true,
"_type": "textarea", "_type": "textarea",
"_range": "typeof(thiseval)=='string'", "_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]; if (obj[key]) return obj[key];

View File

@ -327,7 +327,8 @@ core.prototype._loadPluginAsync = async function () {
try { try {
value.call(plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1); value.call(plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1);
} catch (e) { } catch (e) {
throw new Error(`Plugin '${key}' init fail. Error info: ${e}`); console.error(`Plugin '${key}' init fail. `);
throw e;
} }
} }
}; };

View File

@ -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]}, "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":[]}, "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}, "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]}, "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":[]}, "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":[]}, "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":[]}, "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":[]}, "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":[]}, "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":[]}, "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":[]}, "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":[]}, "purpleBowman": {"name":"高级弓兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},

View File

@ -301,8 +301,15 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
special: function () { special: function () {
// 这个插件负责定义怪物属性 // 这个插件负责定义怪物属性
const specials = Mota.require('var', 'enemySpecials'); 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 作为参数,返回字符串 // name: 特殊属性名称,可以是一个函数,接受 enemy 作为参数,返回字符串
// desc: 特殊属性说明,也可以是一个函数,接受 enemy 作为参数,返回字符串 // desc: 特殊属性说明,也可以是一个函数,接受 enemy 作为参数,返回字符串
// color: 特殊属性颜色,会在怪物手册中显示出来 // color: 特殊属性颜色,会在怪物手册中显示出来
@ -315,14 +322,13 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
}, },
{ {
code: 1, code: 1,
name: '致命一击', name: '先攻',
desc: enemy => desc: `怪物首先攻击`,
`怪物每5回合触发一次强力攻击造成${enemy.crit}%的伤害`,
color: '#fc3' color: '#fc3'
}, },
{ {
code: 2, code: 2,
name: '恶毒', name: '魔攻',
desc: '怪物攻击无视勇士的防御', desc: '怪物攻击无视勇士的防御',
color: '#bbb0ff' color: '#bbb0ff'
}, },
@ -346,160 +352,226 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
}, },
{ {
code: 6, code: 6,
name: enemy => `${enemy.n}连击`, name: enemy => `${enemy.n ?? 4}连击`,
desc: enemy => `怪物每回合攻击${enemy.n}`, desc: enemy => `怪物每回合攻击${enemy.n}`,
color: '#fe7' color: '#fe7'
}, },
{ {
code: 7, code: 7,
name: '饥渴', name: '破甲',
desc: enemy => desc: enemy =>
`战斗前,怪物降低勇士${enemy.hungry}%的攻击,并加在自己身上`, `战斗前,怪物附加角色防御的${Math.floor(
100 * (enemy.breakArmor || core.values.breakArmor)
)}%作为伤害"`,
color: '#b67' color: '#b67'
}, },
{ {
code: 8, code: 8,
name: '抱团', name: '反击',
desc: enemy => desc: enemy =>
`怪物周围5×5范围内每有一个拥有该属性的怪物自身攻防就增加${enemy.together}%(线性叠加)`, `战斗时,怪物每回合附加角色攻击的${Math.floor(
100 * (enemy.counterAttack || core.values.counterAttack)
)}%作为伤害无视角色防御`,
color: '#fa4' color: '#fa4'
}, },
{ {
code: 9, code: 9,
name: '绝对防御', name: '净化',
desc: '怪物的奇特护甲可以让勇士的额外攻击失效,攻击变为基础攻击+额外攻击', desc: enemy =>
`战斗前,怪物附加角色护盾的${
enemy.purify || core.values.purify
}倍作为伤害`,
color: '#80eed6' color: '#80eed6'
}, },
{ {
code: 10, code: 10,
name: '勇气之刃', name: '模仿',
desc: enemy => `怪物第一回合造成${enemy.courage}%的伤害`, desc: `怪物的攻防和角色攻防相等`,
color: '#b0c0dd' color: '#b0c0dd'
}, },
{ {
code: 11, code: 11,
name: '勇气冲锋', name: '吸血',
desc: enemy => desc: enemy => {
`怪物首先攻击,造成${enemy.charge}%的伤害并眩晕勇士5回合`, 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' color: '#ff00d2'
}, },
{ {
code: 12, code: 12,
name: '追猎', name: '中毒',
desc: '当勇士移动到该怪物的水平或竖直方向上时,怪物向勇士移动一格', desc: `战斗后,角色陷入中毒状态,每一步损失生命${core.data.values.poisonDamage}`,
color: '#9e8' color: '#9e8'
}, },
{ {
code: 13, code: 13,
name: '魔攻', name: '衰弱',
desc: '怪物攻击无视勇士的防御', desc:
`战斗后,角色陷入衰弱状态,攻防暂时下降` +
(core.data.values.weakValue >= 1
? core.data.values.weakValue + '点'
: parseInt(core.data.values.weakValue * 100) + '%'),
color: '#bbb0ff' color: '#bbb0ff'
}, },
{ {
code: 14, code: 14,
name: '智慧之源', name: '诅咒',
desc: '困难难度下简单难度没有效果战斗后怪物会吸取勇士30%的智慧(勇士智慧向下取整至整十)加在本层的拥有该属性的怪物攻击上', desc: '战斗后,角色陷入诅咒状态,战斗无法获得金币和经验',
color: '#bbeef0' color: '#bbeef0'
}, },
{ {
code: 15, code: 15,
name: '突刺', name: '领域',
desc: enemy => desc: enemy =>
`勇士走到怪物怪物周围四格时,怪物对勇士造成${core.formatBigNumber( '经过怪物周围' +
Math.max((enemy.value || 0) - getHeroStatusOn('def')) (enemy.zoneSquare ? '九宫格' : '十字') +
)}点伤害`, '范围内' +
(enemy.range || 1) +
'格时自动减生命' +
(enemy.zone || 0) +
'点',
color: '#c677dd' color: '#c677dd'
}, },
{ {
code: 16, code: 16,
name: '', name: '夹击',
desc: '', desc: '经过两只相同的怪物中间,角色生命值变成一半',
color: '#fff' color: '#fff'
}, },
{ {
code: 17, code: 17,
name: '先攻', name: '仇恨',
desc: '战斗时,怪物首先攻击', desc: `战斗前,怪物附加之前积累的仇恨值作为伤害;战斗后,释放一半的仇恨值。(每杀死一个怪物获得${
core.data.values.hatred || 0
}点仇恨值`,
color: '#b0b666' color: '#b0b666'
}, },
{ {
code: 18, code: 18,
name: '阻击', name: '阻击',
desc: enemy => desc: enemy =>
`经过怪物十字范围内时怪物后退一格,同时对勇士造成${enemy.value}点伤害`, '经过怪物周围' +
(enemy.zoneSquare ? '九宫格' : '十字') +
'时自动减生命' +
(enemy.repulse || 0) +
'点,同时怪物后退一格',
color: '#8888e6' color: '#8888e6'
}, },
{ {
code: 19, code: 19,
name: '电摇嘲讽', name: '自爆',
desc: desc: '战斗后角色的生命值变成1',
'当勇士移动到怪物同行或同列时,勇士会直接冲向怪物,撞碎路上的所有地形和门,拾取路上的道具,与路上的怪物战斗' + color: '#f66'
',最后与该怪物战斗',
color: '#ff6666'
}, },
{ {
code: 20, code: 20,
name: '霜冻', name: '无敌',
desc: enemy => desc: `角色无法打败怪物,除非拥有十字架`,
`怪物寒冷的攻击使勇士动作变慢,勇士每回合对怪物造成的伤害减少${enemy.ice}%。装备杰克的衣服后可以免疫。`, color: '#aaa'
color: 'cyan'
}, },
{ {
code: 21, code: 21,
name: '冰封光环', name: '退化',
desc: enemy => desc: enemy =>
`寒气逼人使勇士对该怪物周围7*7范围内的怪物伤害减少${enemy.iceHalo}%(线性叠加)`, '战斗后角色永久下降' +
enemy.atkValue +
'点攻击和' +
enemy.defValue +
'点防御',
color: 'cyan' color: 'cyan'
}, },
{ {
code: 22, code: 22,
name: '永夜', name: '固伤',
desc: enemy => desc: enemy =>
`战斗后,减少勇士${enemy.night}点攻防,增加本层所有怪物${enemy.night}点攻防,仅在本层有效`, '战斗前,怪物对角色造成' +
enemy.damage +
'点固定伤害,未开启负伤时无视角色护盾。',
color: '#d8a' color: '#d8a'
}, },
{ {
code: 23, code: 23,
name: '极昼', name: '重生',
desc: enemy => desc: '怪物被击败后,角色转换楼层则怪物将再次出现',
`战斗后,减少本层所有怪物${enemy.day}点攻防,增加勇士${enemy.day}点攻防,仅在本层有效`,
color: '#ffd' color: '#ffd'
}, },
{ {
code: 24, code: 24,
name: '射击', name: '激光',
desc: function () { desc: enemy =>
return '经过怪物同行或同列的可视范围内时受到一次普通攻击的伤害'; '经过怪物同行或同列时自动减生命' + enemy.laser + '点',
},
color: '#dda0dd' color: '#dda0dd'
}, },
{ {
code: 25, code: 25,
name: '融化', name: '光环',
desc: enemy => 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' color: '#e6e099'
}, },
{ {
code: 26, code: 26,
name: '冰封之核', name: '支援',
desc: enemy => desc: '当周围一圈的怪物受到攻击时将上前支援,并组成小队战斗。',
`怪物拥有逼人的寒气使周围5*5范围内的怪物防御增加${enemy.iceCore}%`, color: '#77c0b6'
color: '#70ffd1'
}, },
{ {
code: 27, code: 27,
name: '火焰之核', name: '捕捉',
desc: enemy => desc: enemy =>
`怪物拥有灼热的火焰使周围5*5范围内的怪物攻击增加${enemy.fireCore}%`, '当走到怪物周围' +
color: '#ff6f0a' (enemy.zoneSquare ? '九宫格' : '十字') +
'时会强制进行战斗。',
color: '#c0ddbb'
}, },
{ {
code: 28, code: 28,
name: '苍蓝刻', name: '特殊光环',
desc: enemy => desc: enemy => {
`怪物使用苍蓝之灵的力量,使自身受到的伤害减少${enemy.paleShield}%`, let content = '';
color: '#ff6f0a' enemy.specialHalo?.forEach((v, i) => {
content +=
'&nbsp;'.repeat(8) +
`${i + 1}. <span style="color: ${
specials[v].color
}">${fromFunc(
specials[v].name,
enemy
)}</span>: ${fromFunc(
specials[v].desc,
enemy
)}<br />`;
});
return (
`怪物周围${enemy.haloSquare ? '九宫格' : '十字'}${
enemy.haloRange
}格范围内所有怪物获得以下特殊属性` +
`特殊属性数值间为${
enemy.specialMultiply ? '相乘' : '相加'
}关系:<br />` +
content
);
},
color: '#ff0'
} }
); );
}, },
@ -691,6 +763,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
if (this.progress !== 2) return; if (this.progress !== 2) return;
this.progress = 3; this.progress = 3;
if (!this.floorId) return; if (!this.floorId) return;
const { has } = Mota.Plugin.require('utils_g');
if (!has(this.x) || !has(this.y)) return; if (!has(this.x) || !has(this.y)) return;
const col = this.col ?? core.status.maps[this.floorId].enemy; const col = this.col ?? core.status.maps[this.floorId].enemy;
if (!col) return; if (!col) return;

View File

@ -1,5 +1,3 @@
import { getHeroStatusOn } from '@/game/hero';
export interface SpecialDeclaration { export interface SpecialDeclaration {
code: number; code: number;
name: string | ((enemy: Enemy) => string); name: string | ((enemy: Enemy) => string);
@ -7,198 +5,4 @@ export interface SpecialDeclaration {
color: string; color: string;
} }
export const specials: SpecialDeclaration[] = [ 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'
}
];

View File

@ -36,7 +36,8 @@ type BooleanEnemyProperty =
| 'haloSquare' | 'haloSquare'
| 'notBomb' | 'notBomb'
| 'add' | 'add'
| 'haloAdd'; | 'haloAdd'
| 'specialAdd';
type DetailedEnemy<I extends EnemyIds = EnemyIds> = { type DetailedEnemy<I extends EnemyIds = EnemyIds> = {
specialText: string[]; specialText: string[];
@ -114,6 +115,11 @@ interface EnemySpecialBase {
* *
*/ */
special: number[]; special: number[];
/**
*
*/
specialHalo?: number[];
} }
interface EnemyInfoBase extends EnemySpecialBase { interface EnemyInfoBase extends EnemySpecialBase {