]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/mutators/mutator/bloodloss/bloodloss.qc
a335bf1cc409a1f57e85b17b164bc504f34a958c
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mutators / mutator / bloodloss / bloodloss.qc
1 #ifdef IMPLEMENTATION
2 REGISTER_MUTATOR(bloodloss, cvar("g_bloodloss"));
3
4 .float bloodloss_timer;
5
6 MUTATOR_HOOKFUNCTION(bloodloss, PlayerPreThink)
7 {
8         entity player = M_ARGV(0, entity);
9
10         if(IS_PLAYER(player))
11         if(player.health <= autocvar_g_bloodloss && !IS_DEAD(player))
12         {
13                 PHYS_INPUT_BUTTON_CROUCH(player) = true;
14
15                 if(time >= player.bloodloss_timer)
16                 {
17                         if(player.vehicle)
18                                 vehicles_exit(player.vehicle, VHEF_RELEASE);
19                         if(player.event_damage)
20                                 player.event_damage(player, player, player, 1, DEATH_ROT.m_id, player.origin, '0 0 0');
21                         player.bloodloss_timer = time + 0.5 + random() * 0.5;
22                 }
23         }
24 }
25
26 MUTATOR_HOOKFUNCTION(bloodloss, PlayerJump)
27 {
28         entity player = M_ARGV(0, entity);
29
30         if(player.health <= autocvar_g_bloodloss)
31                 return true;
32 }
33
34 MUTATOR_HOOKFUNCTION(bloodloss, BuildMutatorsString)
35 {
36         M_ARGV(0, string) = strcat(M_ARGV(0, string), ":bloodloss");
37 }
38
39 MUTATOR_HOOKFUNCTION(bloodloss, BuildMutatorsPrettyString)
40 {
41         M_ARGV(0, string) = strcat(M_ARGV(0, string), ", Blood loss");
42 }
43 #endif