diff --git a/src/g_spawn.c b/src/g_spawn.c index d99351f..78c17cb 100644 --- a/src/g_spawn.c +++ b/src/g_spawn.c @@ -120,6 +120,7 @@ void SP_monster_mutant(edict_t *self); void SP_monster_supertank(edict_t *self); void SP_monster_boss2(edict_t *self); void SP_monster_jorg(edict_t *self); +void SP_monster_makron(edict_t *self); void SP_monster_boss3_stand(edict_t *self); void SP_monster_commander_body(edict_t *self); @@ -265,6 +266,7 @@ spawn_t spawns[] = { {"monster_supertank", SP_monster_supertank}, {"monster_boss2", SP_monster_boss2}, {"monster_boss3_stand", SP_monster_boss3_stand}, + {"monster_makron", SP_monster_makron}, {"monster_jorg", SP_monster_jorg}, {"monster_commander_body", SP_monster_commander_body}, {"monster_soldier_hypergun", SP_monster_soldier_hypergun}, diff --git a/src/monster/boss3/boss32.c b/src/monster/boss3/boss32.c index a9af41d..ba25d8f 100644 --- a/src/monster/boss3/boss32.c +++ b/src/monster/boss3/boss32.c @@ -803,15 +803,18 @@ makron_torso_think(edict_t *self) return; } - if (++self->s.frame < 365) + if (self->owner && self->owner->inuse && self->owner->deadflag != DEAD_DEAD) { - self->nextthink = level.time + FRAMETIME; + G_FreeEdict(self); + return; } - else + + if (++self->s.frame >= FRAME_death320) { - self->s.frame = 346; - self->nextthink = level.time + FRAMETIME; + self->s.frame = FRAME_death301; } + + self->nextthink = level.time + FRAMETIME; } void @@ -826,7 +829,7 @@ makron_torso(edict_t *ent) ent->solid = SOLID_NOT; VectorSet(ent->mins, -8, -8, 0); VectorSet(ent->maxs, 8, 8, 8); - ent->s.frame = 346; + ent->s.frame = FRAME_death301; ent->s.modelindex = gi.modelindex("models/monsters/boss3/rider/tris.md2"); ent->think = makron_torso_think; ent->nextthink = level.time + 2 * FRAMETIME; @@ -902,6 +905,7 @@ makron_die(edict_t *self, edict_t *inflictor /* unused */, edict_t *attacker /* VectorCopy(self->s.origin, tempent->s.origin); VectorCopy(self->s.angles, tempent->s.angles); tempent->s.origin[1] -= 84; + tempent->owner = self; makron_torso(tempent); self->monsterinfo.currentmove = &makron_move_death2; @@ -1125,6 +1129,7 @@ MakronToss(edict_t *self) edict_t *ent; ent = G_Spawn(); + ent->classname = "monster_makron"; ent->nextthink = level.time + 0.8; ent->think = MakronSpawn; ent->target = self->target;