Shark bbox fix and added inuse check after entity thinking

This commit is contained in:
BjossiAlfreds 2021-04-18 01:27:18 +00:00
parent 46362a3bb4
commit d1ddda04ea
2 changed files with 19 additions and 2 deletions

View file

@ -893,6 +893,12 @@ SV_Physics_Toss(edict_t *ent)
/* regular thinking */
SV_RunThink(ent);
/* entities are very often freed during thinking */
if (!ent->inuse)
{
return;
}
/* if not a team captain, so movement will be handled elsewhere */
if (ent->flags & FL_TEAMSLAVE)
{

View file

@ -329,13 +329,24 @@ flipper_pain(edict_t *self, edict_t *other /* unused */, float kick, int damage)
void
flipper_dead(edict_t *self)
{
vec3_t p;
trace_t tr;
if (!self)
{
return;
}
VectorSet(self->mins, -16, -16, -24);
VectorSet(self->maxs, 16, 16, -8);
/* original dead bbox was wrong - and make sure the bbox adjustment stays in solidity */
p[0] = self->s.origin[0];
p[1] = self->s.origin[1];
p[2] = self->s.origin[2] - 8;
tr = gi.trace(self->s.origin, self->mins, self->maxs, p, self, self->clipmask);
self->mins[2] = tr.endpos[2] - self->s.origin[2];
self->movetype = MOVETYPE_TOSS;
self->svflags |= SVF_DEADMONSTER;
self->nextthink = 0;