31 lines
793 B
JavaScript
31 lines
793 B
JavaScript
|
|
|
||
|
|
class entity_barrel_t extends entity_t {
|
||
|
|
_init() {
|
||
|
|
this._model = model_barrel;
|
||
|
|
this._texture = 21;
|
||
|
|
this._pitch = Math.PI/2;
|
||
|
|
this._health = 10;
|
||
|
|
this.s = vec3(8, 32, 8);
|
||
|
|
|
||
|
|
game_entities_enemies.push(this);
|
||
|
|
}
|
||
|
|
|
||
|
|
_kill() {
|
||
|
|
// Deal some damage to nearby entities
|
||
|
|
for (let entity of game_entities_enemies) {
|
||
|
|
let dist = vec3_dist(this.p, entity.p);
|
||
|
|
if (entity !== this && dist < 256) {
|
||
|
|
entity._receive_damage(this, scale(dist, 0, 256, 60, 0));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
super._kill();
|
||
|
|
this._play_sound(sfx_grenade_explode);
|
||
|
|
for (let m of model_gib_pieces) {
|
||
|
|
this._spawn_particles(2, 600, m, 21, 1);
|
||
|
|
}
|
||
|
|
game_spawn(entity_light_t, vec3_add(this.p, vec3(0,16,0)), 250, 0x08f)._die_at = game_time + 0.2;
|
||
|
|
game_entities_enemies = game_entities_enemies.filter(e => e != this);
|
||
|
|
}
|
||
|
|
}
|