this.fire_endtime = -1;
this.revive_progress = 0;
this.revival_time = 0;
+
this.air_finished = time + 12;
+ this.waterlevel = WATERLEVEL_NONE;
+ this.watertype = CONTENT_EMPTY;
entity spawnevent = new_pure(spawnevent);
spawnevent.owner = this;
setorigin(this, spot.origin + '0 0 1' * (1 - this.mins.z - 24));
// don't reset back to last position, even if new position is stuck in solid
this.oldorigin = this.origin;
- this.lastteleporttime = time; // prevent insane speeds due to changing origin
if(this.conveyor)
IL_REMOVE(g_conveyed, this);
this.conveyor = NULL; // prevent conveyors at the previous location from moving a freshly spawned player
}
if (!teamplay && this.team_forced > 0) this.team_forced = 0;
- {
- int id = this.playerid;
- this.playerid = 0; // silent
- JoinBestTeam(this, false); // if the team number is valid, keep it
- this.playerid = id;
- }
+ int playerid_save = this.playerid;
+ this.playerid = 0; // silent
+ JoinBestTeam(this, false); // if the team number is valid, keep it
+ this.playerid = playerid_save;
if (autocvar_sv_spectate || autocvar_g_campaign || this.team_forced < 0) {
TRANSMUTE(Observer, this);
void DrownPlayer(entity this)
{
- if(IS_DEAD(this))
+ if(IS_DEAD(this) || game_stopped || time < game_starttime)
return;
if (this.waterlevel != WATERLEVEL_SUBMERGED || this.vehicle)
}
if (IS_PLAYER(this)) {
+ if(this.death_time == time && IS_DEAD(this))
+ {
+ this.maxs.z = 5;
+ setsize(this, this.mins, this.maxs);
+ }
DrownPlayer(this);
UpdateChatBubble(this);
if (CS(this).impulse) ImpulseCommands(this);