self.pauseregen_finished = 0;
self.damageforcescale = 0;
self.death_time = 0;
+ self.respawn_flags = 0;
self.respawn_time = 0;
self.stat_respawn_time = 0;
self.alpha = 0;
}
self.damageforcescale = 2;
self.death_time = 0;
+ self.respawn_flags = 0;
self.respawn_time = 0;
self.stat_respawn_time = 0;
self.scale = 0;
}
else
{
- float button_pressed, respawn_flags;
+ float button_pressed;
if(frametime)
player_anim();
button_pressed = (self.BUTTON_ATCK || self.BUTTON_JUMP || self.BUTTON_ATCK2 || self.BUTTON_HOOK || self.BUTTON_USE);
- respawn_flags = MUTATOR_CALLHOOK(GetRespawnFlags);
- if(g_lms || g_cts || autocvar_g_forced_respawn)
- respawn_flags = respawn_flags | RESPAWN_FORCE;
-
if (self.deadflag == DEAD_DYING)
{
- if(respawn_flags & RESPAWN_FORCE)
+ if(self.respawn_flags & RESPAWN_FORCE)
self.deadflag = DEAD_RESPAWNING;
else if(!button_pressed)
self.deadflag = DEAD_DEAD;
ShowRespawnCountdown();
- if(respawn_flags & RESPAWN_SILENT)
+ if(self.respawn_flags & RESPAWN_SILENT)
self.stat_respawn_time = 0;
else
self.stat_respawn_time = self.respawn_time;
self.respawn_time = ceil((time + sdelay) / waves) * waves;
else
self.respawn_time = time + sdelay;
- self.stat_respawn_time = self.respawn_time;
if((sdelay + waves >= 5.0) && (self.respawn_time - time > 1.75))
self.respawn_countdown = 10; // first number to count down from is 10
else
self.respawn_countdown = -1; // do not count down
+
+ if(g_lms || g_cts || autocvar_g_forced_respawn)
+ self.respawn_flags = self.respawn_flags | RESPAWN_FORCE;
+
self.death_time = time;
if (random() < 0.5)
animdecide_setstate(self, self.anim_state | ANIMSTATE_DEAD1, TRUE);
//.float cnt2;
.float play_time;
+.float respawn_flags;
.float respawn_time;
.float death_time;
.float fade_time;
MUTATOR_HOOKABLE(ClientDisconnect);
// called when a player disconnects
-MUTATOR_HOOKABLE(GetRespawnFlags);
- // returns respawn flags
-
MUTATOR_HOOKABLE(PlayerDies);
// called when a player dies to e.g. remove stuff he was carrying.
// INPUT:
return 1;
}
-MUTATOR_HOOKFUNCTION(arena_GetRespawnFlags)
-{
- // put dead players in the spawn queue
- if(arena_roundbased)
- return (RESPAWN_FORCE | RESPAWN_SILENT);
- return RESPAWN_SILENT;
-}
-
MUTATOR_HOOKFUNCTION(arena_ForbidPlayerScore_Clear)
{
return 1;
MUTATOR_HOOKFUNCTION(arena_PlayerDies)
{
+ // put dead players in the spawn queue
+ if(arena_roundbased)
+ self.respawn_flags = (RESPAWN_FORCE | RESPAWN_SILENT);
+ else
+ self.respawn_flags = RESPAWN_SILENT;
Spawnqueue_Unmark(self);
return 1;
}
MUTATOR_HOOK(PutClientInServer, arena_PutClientInServer, CBC_ORDER_ANY);
MUTATOR_HOOK(ClientConnect, arena_ClientConnect, CBC_ORDER_ANY);
MUTATOR_HOOK(PlayerSpawn, arena_PlayerSpawn, CBC_ORDER_ANY);
- MUTATOR_HOOK(GetRespawnFlags, arena_GetRespawnFlags, CBC_ORDER_ANY);
MUTATOR_HOOK(ForbidPlayerScore_Clear, arena_ForbidPlayerScore_Clear, CBC_ORDER_ANY);
MUTATOR_HOOK(GiveFragsForKill, arena_GiveFragsForKill, CBC_ORDER_ANY);
MUTATOR_HOOK(PlayerDies, arena_PlayerDies, CBC_ORDER_ANY);
return 1;
}
-MUTATOR_HOOKFUNCTION(ca_GetRespawnFlags)
+MUTATOR_HOOKFUNCTION(ca_PlayerDies)
{
if(!allowed_to_spawn)
- return RESPAWN_SILENT;
- return 0;
+ self.respawn_flags = RESPAWN_SILENT;
+ return 1;
}
MUTATOR_HOOKFUNCTION(ca_ForbidPlayerScore_Clear)
MUTATOR_HOOK(reset_map_global, ca_reset_map_global, CBC_ORDER_ANY);
MUTATOR_HOOK(reset_map_players, ca_reset_map_players, CBC_ORDER_ANY);
MUTATOR_HOOK(GetTeamCount, ca_GetTeamCount, CBC_ORDER_EXCLUSIVE);
- MUTATOR_HOOK(GetRespawnFlags, ca_GetRespawnFlags, CBC_ORDER_ANY);
+ MUTATOR_HOOK(PlayerDies, ca_PlayerDies, CBC_ORDER_ANY);
MUTATOR_HOOK(ForbidPlayerScore_Clear, ca_ForbidPlayerScore_Clear, CBC_ORDER_ANY);
MUTATOR_HOOK(ForbidThrowCurrentWeapon, ca_ForbidThrowCurrentWeapon, CBC_ORDER_ANY);
MUTATOR_HOOK(GiveFragsForKill, ca_GiveFragsForKill, CBC_ORDER_FIRST);