+
+#include "mutator.qh"
+
+REGISTER_MUTATOR(bloodloss, cvar("g_bloodloss"));
+
.float bloodloss_timer;
-MUTATOR_HOOKFUNCTION(bloodloss_PlayerThink)
-{
+MUTATOR_HOOKFUNCTION(bloodloss, PlayerPreThink)
+{SELFPARAM();
if(IS_PLAYER(self))
if(self.health <= autocvar_g_bloodloss && self.deadflag == DEAD_NO)
{
- self.BUTTON_CROUCH = TRUE;
+ self.BUTTON_CROUCH = true;
if(time >= self.bloodloss_timer)
{
- self.event_damage(self, self, 1, DEATH_ROT, self.origin, '0 0 0');
+ if(self.vehicle)
+ vehicles_exit(VHEF_RELEASE);
+ if(self.event_damage)
+ self.event_damage(self, self, 1, DEATH_ROT.m_id, self.origin, '0 0 0');
self.bloodloss_timer = time + 0.5 + random() * 0.5;
}
}
- return FALSE;
+ return false;
}
-MUTATOR_HOOKFUNCTION(bloodloss_PlayerJump)
-{
+MUTATOR_HOOKFUNCTION(bloodloss, PlayerJump)
+{SELFPARAM();
if(self.health <= autocvar_g_bloodloss)
- return TRUE;
+ return true;
- return FALSE;
+ return false;
}
-MUTATOR_HOOKFUNCTION(bloodloss_BuildMutatorsString)
+MUTATOR_HOOKFUNCTION(bloodloss, BuildMutatorsString)
{
ret_string = strcat(ret_string, ":bloodloss");
- return FALSE;
+ return false;
}
-MUTATOR_HOOKFUNCTION(bloodloss_BuildMutatorsPrettyString)
+MUTATOR_HOOKFUNCTION(bloodloss, BuildMutatorsPrettyString)
{
ret_string = strcat(ret_string, ", Blood loss");
- return FALSE;
-}
-
-MUTATOR_DEFINITION(mutator_bloodloss)
-{
- MUTATOR_HOOK(PlayerPreThink, bloodloss_PlayerThink, CBC_ORDER_ANY);
- MUTATOR_HOOK(PlayerJump, bloodloss_PlayerJump, CBC_ORDER_ANY);
- MUTATOR_HOOK(BuildMutatorsString, bloodloss_BuildMutatorsString, CBC_ORDER_ANY);
- MUTATOR_HOOK(BuildMutatorsPrettyString, bloodloss_BuildMutatorsPrettyString, CBC_ORDER_ANY);
-
- return FALSE;
+ return false;
}