1 void GibDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
6 sound (self, CHAN_PROJECTILE, "misc/gib_splat01.wav", VOL_BASE, ATTN_NORM);
8 sound (self, CHAN_PROJECTILE, "misc/gib_splat02.wav", VOL_BASE, ATTN_NORM);
10 sound (self, CHAN_PROJECTILE, "misc/gib_splat03.wav", VOL_BASE, ATTN_NORM);
12 sound (self, CHAN_PROJECTILE, "misc/gib_splat04.wav", VOL_BASE, ATTN_NORM);
15 pointparticles(particleeffectnum("blood"), self.origin + '0 0 1', '0 0 30', 10);
16 self.health = self.health - damage;
17 if (self.health <= -1000)
19 self.event_damage = SUB_Null;
20 SUB_VanishOrRemove (self);
27 if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
29 SUB_VanishOrRemove(self);
32 GibDamage (other, other, 1000, 0, self.origin, '0 0 0');
38 float Gib_customizeentityforclient()
40 if(self.classname == "player") // the eye
46 if(self.gibrandom > other.cvar_cl_nogibs)
47 self.model = self.mdl;
52 else // other gibs - don't even need to send them
53 return (self.gibrandom > other.cvar_cl_nogibs);
56 // changes by LordHavoc on 03/30/04
57 // TossGib now takes a gib entity so it can be used for tossing heads
58 // gib.velocity now uses randomvec() instead of a bunch of manual random calls
59 // merged Gib() into PlayerGib()
60 void TossGib (entity gib, string mdlname, vector org, vector v, float destroyontouch)
65 gib.deadflag = DEAD_DEAD;
68 // don't set his classname to something else or it'll screw up a lot of stuff
69 if(gib.classname != "player")
70 gib.classname = "gib";
71 gib.iscreature = FALSE; // not a creature, because lava sounds on gibs are annoying
72 gib.movetype = MOVETYPE_BOUNCE;
73 gib.solid = SOLID_CORPSE;
76 gib.gibrandom = random(); // used for customize function to reduce gibs
77 gib.customizeentityforclient = Gib_customizeentityforclient;
78 gib.effects = EF_LOWPRECISION; // use less bandwidth
81 setmodel (gib, mdlname); // precision set above
82 gib.gibmodelindex = gib.modelindex;
83 setsize (gib, '-8 -8 -8', '8 8 8');
87 gib.takedamage = DAMAGE_YES;
88 gib.damageforcescale = 3.5;
89 gib.event_damage = GibDamage;
90 if (destroyontouch == 1)
93 gib.velocity = v + randomvec();
94 gib.avelocity = randomvec() * vlen(gib.velocity);
95 gib.oldvelocity = gib.velocity;
97 SUB_SetFade (gib, time + 12 + random () * 4, 1);