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