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