]> icculus.org git repositories - divverent/nexuiz.git/blob - qcsrc/gamec/g_violence.c
Added water drowning
[divverent/nexuiz.git] / qcsrc / gamec / g_violence.c
1 void GibDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
2 {
3         te_blood (self.origin + '0 0 1', '0 0 30', damage);
4
5         float r;
6         r = random ();
7         if (r < 0.60)
8                         sound (self, CHAN_IMPACT, "misc/gib_splat01.wav", 1, ATTN_NORM);
9         else if (r < 0.65)
10                         sound (self, CHAN_IMPACT, "misc/gib_splat02.wav", 1, ATTN_NORM);
11         else if (r < 0.70)
12                         sound (self, CHAN_IMPACT, "misc/gib_splat03.wav", 1, ATTN_NORM);
13         else if (r < 0.75)
14                         sound (self, CHAN_IMPACT, "misc/gib_splat04.wav", 1, ATTN_NORM);
15
16         self.health = self.health - damage;
17         if (self.health <= -300)
18         {
19                 self.event_damage = nullfunction;
20                 SUB_VanishOrRemove (self);
21         }
22 }
23
24 // changes by LordHavoc on 03/30/04
25 // TossGib now takes a gib entity so it can be used for tossing heads
26 // gib.velocity now uses randomvec() instead of a bunch of manual random calls
27 // merged Gib() into PlayerGib()
28 void TossGib (entity gib, string mdlname, vector org, vector v)
29 {
30         if (gib == world)
31         {
32                 gib = spawn ();
33                 gib.norespawn = TRUE;
34         }
35         gib.classname = "gib";
36         gib.movetype = MOVETYPE_BOUNCE;
37         gib.solid = SOLID_CORPSE;
38
39         setmodel (gib, mdlname);
40         setsize (gib, '-8 -8 -8', '8 8 8');
41         setorigin (gib, org);
42
43         gib.health = -1;
44         gib.takedamage = DAMAGE_YES;
45         gib.damageforcescale = 3.5;
46         gib.event_damage = GibDamage;
47
48         gib.velocity = v + randomvec() * 450;
49         gib.avelocity = randomvec() * 300;
50
51         SUB_SetFade (gib, time + 12 + random () * 4);
52 }