From 30e1a7c140e47cdc3b22947e9aac0fd17cf60b9b Mon Sep 17 00:00:00 2001 From: Yamagi Burmeister Date: Tue, 11 Oct 2011 07:31:44 +0000 Subject: [PATCH] Fix the crash resulting in too much debris or gib. --- src/g_misc.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/g_misc.c b/src/g_misc.c index 16da224..9e13179 100644 --- a/src/g_misc.c +++ b/src/g_misc.c @@ -21,6 +21,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "header/local.h" +int gibsthisframe = 0; +int lastgibframe = 0; /*QUAKED func_group (0 0 0) ? Used to group brushes together just for editor convenience. @@ -140,6 +142,19 @@ void ThrowGib (edict_t *self, char *gibname, int damage, int type) vec3_t size; float vscale; + if (level.framenum > lastgibframe) + { + gibsthisframe = 0; + lastgibframe = level.framenum; + } + + gibsthisframe++; + + if (gibsthisframe > 20) + { + return; + } + gib = G_Spawn(); VectorScale (self->size, 0.5, size); @@ -283,6 +298,19 @@ void ThrowDebris (edict_t *self, char *modelname, float speed, vec3_t origin) edict_t *chunk; vec3_t v; + if (level.framenum > lastgibframe) + { + gibsthisframe = 0; + lastgibframe = level.framenum; + } + + gibsthisframe++; + + if (gibsthisframe > 20) + { + return; + } + chunk = G_Spawn(); VectorCopy (origin, chunk->s.origin); gi.setmodel (chunk, modelname);