1 #include "sv_bloodloss.qh"
3 float autocvar_g_bloodloss;
4 REGISTER_MUTATOR(bloodloss, autocvar_g_bloodloss);
6 .float bloodloss_timer;
8 MUTATOR_HOOKFUNCTION(bloodloss, PlayerPreThink)
10 entity player = M_ARGV(0, entity);
13 return; // during intermission, the player's health changes to strange values for the engine, let's not cause damage during this phase!
16 if(GetResource(player, RES_HEALTH) <= autocvar_g_bloodloss && !IS_DEAD(player))
18 PHYS_INPUT_BUTTON_CROUCH(player) = true;
20 if(time >= player.bloodloss_timer)
23 vehicles_exit(player.vehicle, VHEF_RELEASE);
24 if(player.event_damage)
25 player.event_damage(player, player, player, 1, DEATH_ROT.m_id, DMG_NOWEP, player.origin, '0 0 0');
26 player.bloodloss_timer = time + 0.5 + random() * 0.5;
31 MUTATOR_HOOKFUNCTION(bloodloss, PlayerJump)
33 entity player = M_ARGV(0, entity);
35 if(GetResource(player, RES_HEALTH) <= autocvar_g_bloodloss)
39 MUTATOR_HOOKFUNCTION(bloodloss, BuildMutatorsString)
41 M_ARGV(0, string) = strcat(M_ARGV(0, string), ":bloodloss");
44 MUTATOR_HOOKFUNCTION(bloodloss, BuildMutatorsPrettyString)
46 M_ARGV(0, string) = strcat(M_ARGV(0, string), ", Blood loss");