From fe46a7b397cf75027e2248ae1ab08d220453f467 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Sun, 12 Oct 2025 15:51:40 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=A0=B7=E6=9D=BF=E6=80=AA=E7=89=A9?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages-user/data-state/src/enemy/special.ts | 213 ++++++------------ 1 file changed, 70 insertions(+), 143 deletions(-) diff --git a/packages-user/data-state/src/enemy/special.ts b/packages-user/data-state/src/enemy/special.ts index eef583e..44fba16 100644 --- a/packages-user/data-state/src/enemy/special.ts +++ b/packages-user/data-state/src/enemy/special.ts @@ -8,13 +8,6 @@ export interface SpecialDeclaration { color: string; } -const fromFunc = ( - func: string | ((enemy: UserEnemyInfo) => string), - enemy: UserEnemyInfo -) => { - return typeof func === 'string' ? func : func(enemy); -}; - export const specials: SpecialDeclaration[] = [ { code: 0, @@ -25,64 +18,64 @@ export const specials: SpecialDeclaration[] = [ { code: 1, name: '先攻', - desc: `怪物首先攻击`, + desc: `怪物首先攻击。`, color: '#fc3' }, { code: 2, name: '魔攻', - desc: '怪物攻击无视勇士的防御', + desc: '怪物攻击无视勇士的防御。', color: '#bbb0ff' }, { code: 3, name: '坚固', - desc: '怪物防御不小于勇士攻击-1', + desc: '怪物防御不小于勇士攻击-1。', color: '#c0b088' }, { code: 4, name: '2连击', - desc: '怪物每回合攻击2次', + desc: '怪物每回合攻击2次。', color: '#fe7' }, { code: 5, name: '3连击', - desc: '怪物每回合攻击3次', + desc: '怪物每回合攻击3次。', color: '#fe7' }, { code: 6, name: enemy => `${enemy.n ?? 4}连击`, - desc: enemy => `怪物每回合攻击${enemy.n}次`, + desc: enemy => `怪物每回合攻击${enemy.n}次。`, color: '#fe7' }, { code: 7, name: '破甲', desc: enemy => - `战斗前,附加角色防御的${enemy.breakArmor ?? core.values.breakArmor}%作为伤害`, + `战斗前,附加角色防御的${enemy.breakArmor ?? core.values.breakArmor}%作为伤害。`, color: '#fe7' }, { code: 8, name: '反击', desc: enemy => - `战斗时,怪物每回合附加角色攻击的${enemy.counterAttack ?? core.values.counterAttack}%作为伤害,无视角色防御`, + `战斗时,怪物每回合附加角色攻击的${enemy.counterAttack ?? core.values.counterAttack}%作为伤害,无视角色防御。`, color: '#fa4' }, { code: 9, name: '净化', desc: enemy => - `战斗前,怪物附加角色护盾的${enemy.purify ?? core.values.purify}倍作为伤害`, + `战斗前,怪物附加角色护盾的${enemy.purify ?? core.values.purify}倍作为伤害。`, color: '#80eed6' }, { code: 10, name: '模仿', - desc: `怪物的攻防与勇士相同`, + desc: `怪物的攻防与勇士相同。`, color: '#b0c0dd' }, { @@ -93,7 +86,7 @@ export const specials: SpecialDeclaration[] = [ return ( `战斗前,怪物首先吸取角色的${vampire}%生命` + `(约${Math.floor((vampire / 100) * getHeroStatusOn('hp'))}点)作为伤害` + - (enemy.add ? `,并把伤害数值加到自身生命上` : ``) + (enemy.add ? `,并把伤害数值加到自身生命上。` : `。`) ); }, color: '#ff00d2' @@ -102,194 +95,128 @@ export const specials: SpecialDeclaration[] = [ code: 12, name: '中毒', desc: () => - `战斗后,角色陷入中毒状态,每一步损失生命${core.values.poisonDamage}点`, + `战斗后,角色陷入中毒状态,每一步损失生命${core.values.poisonDamage}点。`, color: '#9e8' }, { code: 13, name: '衰弱', - desc: '怪物攻击无视勇士的防御', + desc: '怪物攻击无视勇士的防御。', color: '#f0bbcc' }, { code: 14, name: '诅咒', - desc: '战斗后,角色陷入诅咒状态,战斗无法获得金币和经验', + desc: '战斗后,角色陷入诅咒状态,战斗无法获得金币和经验。', color: '#bbeef0' }, { code: 15, name: '领域', desc: enemy => - `经过怪物周围${enemy.zoneSquare ? '九宫格' : '十字'}范围内${enemy.range}格时自动减生命${enemy.zone}点`, + `经过怪物周围${enemy.zoneSquare ? '九宫格' : '十字'}范围内${enemy.range}格时自动减生命${enemy.zone}点。`, color: '#c677dd' }, { code: 16, - name: '空', - desc: '空', - color: '#fff' + name: '夹击', + desc: '经过两只相同的怪物中间,角色生命值变成一半。', + color: '#b9e' }, { code: 17, - name: '先攻', - desc: '战斗时,怪物首先攻击', + name: '仇恨', + desc: `战斗前,怪物附加之前积累的仇恨值作为伤害;战斗后,释放一半的仇恨值。(每杀死一个怪物获得${core.values.hatred}点仇恨值)。`, color: '#b0b666' }, { code: 18, name: '阻击', desc: enemy => - `经过怪物十字范围内时怪物后退一格,同时对勇士造成${enemy.value}点伤害`, + `经过怪物十字范围内时怪物后退一格,同时对勇士造成${enemy.repulse}点伤害。`, color: '#8888e6' }, { code: 19, - name: '电摇嘲讽', - desc: - '当勇士移动到怪物同行或同列时,勇士会直接冲向怪物,撞碎路上的所有地形和门,拾取路上的道具,与路上的怪物战斗' + - ',最后与该怪物战斗', + name: '自爆', + desc: '战斗后角色的生命值变成1。', color: '#ff6666' }, { 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 ?? 0}点攻击和${enemy.defValue ?? 0}点防御。`, color: 'cyan' }, { code: 22, - name: '永夜', + name: '固伤', desc: enemy => - `战斗后,减少勇士${enemy.night}点攻防,增加本层所有怪物${enemy.night}点攻防,仅在本层有效`, - color: '#d8a' + `战斗前,怪物对角色造成${enemy.damage ?? 0}点固定伤害,未开启负伤时无视角色护盾。`, + color: '#f97' }, { code: 23, - name: '极昼', - desc: enemy => - `战斗后,减少本层所有怪物${enemy.day}点攻防,增加勇士${enemy.day}点攻防,仅在本层有效`, - color: '#ffd' + name: '重生', + desc: `怪物被击败后,角色转换楼层则怪物将再次出现。`, + color: '#dda0dd' }, { code: 24, - name: '射击', - desc: function () { - return '经过怪物同行或同列的可视范围内时受到一次普通攻击的伤害'; - }, + name: '激光', + desc: enemy => `经过怪物同行或同列时自动减生命${enemy.laser ?? 0}点。`, color: '#dda0dd' }, { code: 25, - name: '融化', - desc: enemy => - `战斗后该怪物会融化,在怪物位置产生一个3*3的范围光环,光环内怪物的攻防增加${enemy.melt}%`, + name: '光环', + desc: enemy => { + let str = ''; + if (enemy.haloRange) { + if (enemy.haloSquare) { + str += '对于该怪物九宫格'; + } else { + str += '对于该怪物十字'; + } + str += `${enemy.haloRange ?? 1}格范围内所有怪物`; + } else { + str += `同楼层所有怪物`; + } + if (enemy.hpBuff) { + str += `,生命提升${enemy.hpBuff}%`; + } + if (enemy.atkBuff) { + str += `,攻击提升${enemy.hpBuff}%`; + } + if (enemy.defBuff) { + str += `,防御提升${enemy.defBuff}%`; + } + if (enemy.haloAdd) { + str += `,线性叠加。`; + } else { + str += `,不可叠加。`; + } + return str; + }, color: '#e6e099' }, { code: 26, - name: '冰封之核', - desc: enemy => - `怪物拥有逼人的寒气,使周围5*5范围内的怪物防御增加${enemy.iceCore}%`, - color: '#70ffd1' + name: '支援', + desc: `当周围一圈的怪物受到攻击时将上前支援,并组成小队战斗。`, + color: '#77c0b6' }, { code: 27, - name: '火焰之核', - desc: enemy => - `怪物拥有灼热的火焰,使周围5*5范围内的怪物攻击增加${enemy.fireCore}%`, + name: '捕捉', + desc: `当走到怪物十字范围内时会进行强制战斗。`, color: '#ff6f0a' - }, - { - code: 28, - name: '苍蓝刻', - desc: enemy => - `怪物使用苍蓝之灵的力量,使自身受到的伤害减少${enemy.paleShield}%`, - color: '#ff6f0a' - }, - { - code: 29, - 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.haloRange}格范围内所有怪物获得以下特殊属性(包括自身),` + - `特殊属性数值间为${ - enemy.specialMultiply ? '相乘' : '相加' - }关系:
` + - content - ); - }, - color: '#F721F7' - }, - { - code: 30, - name: '乾坤挪移', - desc: enemy => { - const [dx, dy] = enemy.translation!; - let str = `此怪物在场时,所有光环`; - if (dx !== 0) { - str += `向${dx < 0 ? '左' : '右'}平移${Math.abs(dx)}格,`; - } - if (dy !== 0) { - str += `向${dy < 0 ? '上' : '下'}平移${Math.abs(dy)}格,`; - } - str += `不同怪物间为加算叠加`; - return str; - }, - color: '#FDCD0B' - }, - { - code: 31, - name: '再生光环', - desc: enemy => - `怪物周围7*7范围内的所有怪物(包括自身)生命值提高${enemy.hpHalo}%`, - color: '#85FF99' - }, - { - code: 32, - name: '同化', - desc: enemy => - `怪物会获得自身周围方形${enemy.assimilateRange}格范围内怪物的特殊属性(光环类属性除外),` + - `特殊属性数值间为${enemy.specialMultiply ? '乘算' : '加算'}关系`, - color: '#ffd366' - }, - { - code: 33, - name: '战争号角', - desc: enemy => { - const [hp, atk, def] = enemy.horn ?? []; - let str = '地图上每存在一个怪物(包括自身),自身'; - if (hp) str += `生命值增加${hp}%,`; - if (atk) str += `攻击增加${atk}%,`; - if (def) str += `防御增加${def}%,`; - str += '线性叠加。该怪物会在右上角以黄色字体显示当前地图有多少怪物'; - return str; - }, - color: '#fff866' - }, - { - code: 34, - name: '赏金', - desc: `怪物没有任何能力,也没有任何战利品,也无法让勇士恢复生命值,战斗伤害恒为0`, - color: '#faff33' } ];