lazuli-api
Version:
Add some useful instances for Minecraft Bedrock Edition
87 lines (84 loc) • 1.92 kB
text/typescript
import { Entity, Player, RawMessage } from "@minecraft/server";
/**
* Define a boss skill.
* @beta
*/
export class BossSkill {
constructor(
/**
* Id of the boss skill.
*/
public id: string,
/**
* Cooldown of the boss skill.
*/
public cooldownTime: number,
/**
* The radius within which entity can be effected by the skill.
*/
public radius: number,
/**
* The effect of the skill.
*/
public effect: SkillEffect,
/**
* Message when the skill unleash.
*/
public message?: string | RawMessage
) {}
/**
* Unleash the skill to an entity.
* @param entity
* @param boss
*/
unleash(entity: Entity, boss?: Entity) {
const EFFECT = this.effect;
if (entity instanceof Player) {
if (this.message) entity.sendMessage(this.message);
if (EFFECT.exp) entity.addExperience(EFFECT.exp);
if (EFFECT.level) entity.addLevels(EFFECT.level);
}
if (EFFECT.damage) entity.applyDamage(EFFECT.damage);
if (EFFECT.event) {
EFFECT.event(entity, boss);
}
}
/**
* Unleash the skill to entities.
* @param entity
*/
/**
* Unleash the skill to entities.
* @param entity
*/
unleashArray(entiies: Entity[], boss?: Entity) {
for (const [index, entity] of entiies.entries()) {
if (index === 0) {
this.unleash(entity, boss);
} else {
this.unleash(entity);
}
}
}
}
/**
* Unleash effect of boss skill.
*/
export interface SkillEffect {
/**
* The trigger effect when skill unleash.
*/
event?: (entity: Entity, boss?: Entity) => void;
/**
* Add exp when skill unleash.
*/
exp?: number;
/**
* Add level when skill unleash.
*/
level?: number;
/**
* Apply damage when skill unleash.
*/
damage?: number;
}