mirror of
https://github.com/yquake2/rogue.git
synced 2024-11-26 22:21:11 +00:00
Merge branch 'master' into pvs
This commit is contained in:
commit
704cc0178a
3 changed files with 30 additions and 6 deletions
|
@ -1205,6 +1205,7 @@ G_RunEntity(edict_t *ent)
|
||||||
{
|
{
|
||||||
trace_t trace;
|
trace_t trace;
|
||||||
vec3_t previous_origin;
|
vec3_t previous_origin;
|
||||||
|
qboolean saved_origin;
|
||||||
|
|
||||||
if (!ent)
|
if (!ent)
|
||||||
{
|
{
|
||||||
|
@ -1214,6 +1215,11 @@ G_RunEntity(edict_t *ent)
|
||||||
if (ent->movetype == MOVETYPE_STEP)
|
if (ent->movetype == MOVETYPE_STEP)
|
||||||
{
|
{
|
||||||
VectorCopy(ent->s.origin, previous_origin);
|
VectorCopy(ent->s.origin, previous_origin);
|
||||||
|
saved_origin = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
saved_origin = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ent->prethink)
|
if (ent->prethink)
|
||||||
|
@ -1249,7 +1255,7 @@ G_RunEntity(edict_t *ent)
|
||||||
gi.error("SV_Physics: bad movetype %i", (int)ent->movetype);
|
gi.error("SV_Physics: bad movetype %i", (int)ent->movetype);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ent->movetype == MOVETYPE_STEP)
|
if (saved_origin)
|
||||||
{
|
{
|
||||||
/* if we moved, check and fix origin if needed */
|
/* if we moved, check and fix origin if needed */
|
||||||
if (!VectorCompare(ent->s.origin, previous_origin))
|
if (!VectorCompare(ent->s.origin, previous_origin))
|
||||||
|
|
|
@ -127,6 +127,7 @@ void SP_monster_mutant(edict_t *self);
|
||||||
void SP_monster_supertank(edict_t *self);
|
void SP_monster_supertank(edict_t *self);
|
||||||
void SP_monster_boss2(edict_t *self);
|
void SP_monster_boss2(edict_t *self);
|
||||||
void SP_monster_jorg(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_boss3_stand(edict_t *self);
|
||||||
|
|
||||||
void SP_monster_commander_body(edict_t *self);
|
void SP_monster_commander_body(edict_t *self);
|
||||||
|
@ -284,6 +285,7 @@ spawn_t spawns[] = {
|
||||||
{"monster_supertank", SP_monster_supertank},
|
{"monster_supertank", SP_monster_supertank},
|
||||||
{"monster_boss2", SP_monster_boss2},
|
{"monster_boss2", SP_monster_boss2},
|
||||||
{"monster_boss3_stand", SP_monster_boss3_stand},
|
{"monster_boss3_stand", SP_monster_boss3_stand},
|
||||||
|
{"monster_makron", SP_monster_makron},
|
||||||
{"monster_jorg", SP_monster_jorg},
|
{"monster_jorg", SP_monster_jorg},
|
||||||
|
|
||||||
{"monster_commander_body", SP_monster_commander_body},
|
{"monster_commander_body", SP_monster_commander_body},
|
||||||
|
|
|
@ -799,15 +799,29 @@ makron_torso_think(edict_t *self)
|
||||||
return;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self->owner && (self->owner->monsterinfo.aiflags & AI_RESURRECTING))
|
||||||
|
{
|
||||||
|
self->s.effects |= EF_COLOR_SHELL;
|
||||||
|
self->s.renderfx |= RF_SHELL_RED;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self->s.frame = 346;
|
self->s.effects &= ~EF_COLOR_SHELL;
|
||||||
self->nextthink = level.time + FRAMETIME;
|
self->s.renderfx &= ~RF_SHELL_RED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (++self->s.frame >= FRAME_death320)
|
||||||
|
{
|
||||||
|
self->s.frame = FRAME_death301;
|
||||||
|
}
|
||||||
|
|
||||||
|
self->nextthink = level.time + FRAMETIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -822,7 +836,7 @@ makron_torso(edict_t *ent)
|
||||||
ent->solid = SOLID_NOT;
|
ent->solid = SOLID_NOT;
|
||||||
VectorSet(ent->mins, -8, -8, 0);
|
VectorSet(ent->mins, -8, -8, 0);
|
||||||
VectorSet(ent->maxs, 8, 8, 8);
|
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->s.modelindex = gi.modelindex("models/monsters/boss3/rider/tris.md2");
|
||||||
ent->think = makron_torso_think;
|
ent->think = makron_torso_think;
|
||||||
ent->nextthink = level.time + 2 * FRAMETIME;
|
ent->nextthink = level.time + 2 * FRAMETIME;
|
||||||
|
@ -895,6 +909,7 @@ makron_die(edict_t *self, edict_t *inflictor /* update */, edict_t *attacker /*
|
||||||
VectorCopy(self->s.origin, tempent->s.origin);
|
VectorCopy(self->s.origin, tempent->s.origin);
|
||||||
VectorCopy(self->s.angles, tempent->s.angles);
|
VectorCopy(self->s.angles, tempent->s.angles);
|
||||||
tempent->s.origin[1] -= 84;
|
tempent->s.origin[1] -= 84;
|
||||||
|
tempent->owner = self;
|
||||||
makron_torso(tempent);
|
makron_torso(tempent);
|
||||||
|
|
||||||
self->monsterinfo.currentmove = &makron_move_death2;
|
self->monsterinfo.currentmove = &makron_move_death2;
|
||||||
|
@ -1122,6 +1137,7 @@ MakronToss(edict_t *self)
|
||||||
}
|
}
|
||||||
|
|
||||||
ent = G_Spawn();
|
ent = G_Spawn();
|
||||||
|
ent->classname = "monster_makron";
|
||||||
ent->nextthink = level.time + 0.8;
|
ent->nextthink = level.time + 0.8;
|
||||||
ent->think = MakronSpawn;
|
ent->think = MakronSpawn;
|
||||||
ent->target = self->target;
|
ent->target = self->target;
|
||||||
|
|
Loading…
Reference in a new issue