HumanBreak/docs/api/class/damage-enemy.md
2024-03-01 19:52:30 +08:00

287 lines
5.1 KiB
Markdown

# 类 DamageEnemy
游戏进程类,渲染进程也可以使用
- 实例成员
- [`id`](#id)
- [`x`](#x)
- [`y`](#y)
- [`floorId`](#floorid)
- [`enemy`](#enemy)
- [`col`](#col)
- [`info`](#info)
- [`providedHalo`](#providedhalo)
- 实例方法
- 构造器[`constructor`](#constructor)
- [`reset`](#reset)
- [`calAttribute`](#calattribute)
- [`getRealInfo`](#getrealinfo)
- [`getHaloSpecials`](#gethalospecials)
- [`preProvideHalo`](#preprovidehalo)
- [`provideHalo`](#providehalo)
- [`injectHalo`](#injecthalo)
- [`calDamage`](#caldamage)
- [`calMapDamage`](#calmapdamage)
- [`setMapDamage`](#setmapdamage)
- [`calCritical`](#calcritical)
- [`calDefDamage`](#caldefdamage)
- [`getSeckillAtk`](#getseckillatk)
## id
```ts
declare var id: string
```
- 成员说明
怪物的 id
## x
```ts
declare var x: number | undefined
```
## y
```ts
declare var y: number | undefined
```
## floorId
```ts
declare var floorId: string
```
## enemy
```ts
declare var enemy: Enemy
```
- 成员说明
怪物的原始信息,即在造塔界面中填写的信息,不可修改
## col
```ts
declare var col: EnemyCollection | undefined
```
- 成员说明
该怪物所属的怪物集合,也可以是 `undefined`,表示不属于任何集合
## info
```ts
declare var info: EnemyInfo
```
- 成员说明
描述了这个怪物在计算真实属性后的属性,经过光环等加成
## providedHalo
```ts
declare var providedHalo: Set<number>
```
- 成员说明
存储了这个怪物所有已经施加过的光环
## constructor()
```ts
interface DamageEnemy {
new(
enemy: Enemy,
x?: number,
y?: number,
floorId?: string,
col?: EnemyCollection
): DamageEnemy
}
```
## reset()
```ts
declare function reset(): void
```
- 方法说明
重设怪物信息,恢复至原始信息,计算怪物真实属性第零步
## calAttribute()
```ts
declare function calAttribute(): void
```
- 方法说明
计算怪物在不计光环下的属性,在 inject 光环之前,预平衡光环之后执行,计算怪物属性第二步
## getRealInfo()
```ts
declare function getRealInfo(): void
```
- 方法说明
计算怪物的真实属性,在 inject 光环后执行,计算怪物属性的第四步,也是最后一步
## getHaloSpecials()
```ts
declare function getHaloSpecials(): number[]
```
- 方法说明
获取到所有还未施加过的光环属性
## preProvideHalo()
```ts
declare function preProvideHalo(): void
```
- 方法说明
光环预提供,用于平衡所有怪的光环属性,避免出现不同情况下光环效果不一致的现象,计算怪物属性的第一步
## provideHalo()
```ts
declare function provideHalo(): void
```
- 方法说明
向其他怪物提供光环,计算怪物属性的第三步
## injectHalo()
```ts
declare function injectHalo(halo: HaloFn, enemy: EnemyInfo): void
```
- 方法说明
接受来自其他怪物的光环,参考[光环处理](../../guide/battle.md#光环处理)
## calDamage()
```ts
declare function calDamage(hero: Partial<HeroStatus> = core.status.hero): { damage: number }
```
- 参数说明
- `hero`: 允许部分指定勇士信息,从而达到不修改勇士属性的情况下传入不同勇士信息的效果
- 方法说明
计算怪物伤害
## calMapDamage()
```ts
declare function calMapDamage(
damage: Record<string, MapDamage> = {},
hero: Partial<HeroStatus> = getHeroStatusOn(Damage.realStatus)
): Record<string, MapDamage>
```
- 参数说明
- `damage`: 地图伤害存入的对象
- `hero`: 部分指定勇士的真实属性,即经过 buff 等加成的属性
- 方法说明
计算地图伤害
## setMapDamage()
```ts
declare function setMapDamage(
damage: Record<string, MapDamage>,
loc: string,
dam: number,
type?: string
): void
```
## calCritical()
```ts
declare function calCritical(
num: number = 1,
hero: Partial<HeroStatus> = core.status.hero
): CriticalDamageDelta[]
```
- 参数说明
- `num`: 计算前多少个临界
- 方法说明
计算怪物的临界,使用二分法
- 接口 `CriticalDamageDelta`
```ts
interface CriticalDamageDelta {
/** 跟最小伤害值的减伤 */
delta: number;
damage: number;
info: { damage: number };
/** 勇士的攻击增量 */
atkDelta: number;
}
```
- `damage`: 伤害大小
## calDefDamage()
```ts
declare function calDefDamage(
num: number = 1,
hero: Partial<HeroStatus> = core.status.hero
): DamageDelta
```
- 参数说明
- `num`: 要加多少防御
- 方法说明
计算 n 防减伤
- 接口 `DamageDelta`
为接口 [`CriticalDamageDelta`](#calcritical) 去掉 `atkDelta` 属性
## getSeckillAtk()
```ts
declare function getSeckillAtk(): number
```
- 方法说明
计算在一回合内击杀怪物所需要的攻击力,用于临界计算