this.fade_time = 0;
this.pain_frame = 0;
this.pain_finished = 0;
- this.strength_finished = 0;
- this.invincible_finished = 0;
- this.superweapons_finished = 0;
+ STAT(STRENGTH_FINISHED, this) = 0;
+ STAT(INVINCIBLE_FINISHED, this) = 0;
+ STAT(SUPERWEAPONS_FINISHED, this) = 0;
this.air_finished = 0;
//this.dphitcontentsmask = 0;
this.dphitcontentsmask = DPCONTENTS_SOLID;
PS(this).dual_weapons = '0 0 0';
- this.superweapons_finished = (STAT(WEAPONS, this) & WEPSET_SUPERWEAPONS) ? time + autocvar_g_balance_superweapons_time : 0;
+ STAT(SUPERWEAPONS_FINISHED, this) = (STAT(WEAPONS, this) & WEPSET_SUPERWEAPONS) ? time + autocvar_g_balance_superweapons_time : 0;
this.items = start_items;
this.punchangle = '0 0 0';
this.punchvector = '0 0 0';
- this.strength_finished = 0;
- this.invincible_finished = 0;
+ STAT(STRENGTH_FINISHED, this) = 0;
+ STAT(INVINCIBLE_FINISHED, this) = 0;
this.fire_endtime = -1;
STAT(REVIVE_PROGRESS, this) = 0;
this.revival_time = 0;
modifications = substring(modifications, 2, strlen(modifications) - 2);
string versionmessage = GetClientVersionMessage(this);
- string s = strcat(versionmessage, "^8\n^8\nmatch type is ^1", gamemode_name, "^8\n");
+ string s = strcat(versionmessage, "^8\n^8\nhost is ^9", autocvar_hostname, "^8\n");
+
+ s = strcat(s, "^8\nmatch type is ^1", gamemode_name, "^8\n");
if(modifications != "")
s = strcat(s, "^8\nactive modifications: ^3", modifications, "^8\n");
{
if (this.items & ITEM_Strength.m_itemid)
{
- play_countdown(this, this.strength_finished, SND_POWEROFF);
+ play_countdown(this, STAT(STRENGTH_FINISHED, this), SND_POWEROFF);
this.effects = this.effects | (EF_BLUE | EF_ADDITIVE | EF_FULLBRIGHT);
- if (time > this.strength_finished)
+ if (time > STAT(STRENGTH_FINISHED, this))
{
this.items = this.items - (this.items & ITEM_Strength.m_itemid);
//Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_POWERDOWN_STRENGTH, this.netname);
}
else
{
- if (time < this.strength_finished)
+ if (time < STAT(STRENGTH_FINISHED, this))
{
this.items = this.items | ITEM_Strength.m_itemid;
if(!g_cts)
}
if (this.items & ITEM_Shield.m_itemid)
{
- play_countdown(this, this.invincible_finished, SND_POWEROFF);
+ play_countdown(this, STAT(INVINCIBLE_FINISHED, this), SND_POWEROFF);
this.effects = this.effects | (EF_RED | EF_ADDITIVE | EF_FULLBRIGHT);
- if (time > this.invincible_finished)
+ if (time > STAT(INVINCIBLE_FINISHED, this))
{
this.items = this.items - (this.items & ITEM_Shield.m_itemid);
//Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_POWERDOWN_SHIELD, this.netname);
}
else
{
- if (time < this.invincible_finished)
+ if (time < STAT(INVINCIBLE_FINISHED, this))
{
this.items = this.items | ITEM_Shield.m_itemid;
if(!g_cts)
{
if (!(STAT(WEAPONS, this) & WEPSET_SUPERWEAPONS))
{
- this.superweapons_finished = 0;
+ STAT(SUPERWEAPONS_FINISHED, this) = 0;
this.items = this.items - (this.items & IT_SUPERWEAPON);
//Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_SUPERWEAPON_LOST, this.netname);
Send_Notification(NOTIF_ONE, this, MSG_CENTER, CENTER_SUPERWEAPON_LOST);
}
else
{
- play_countdown(this, this.superweapons_finished, SND_POWEROFF);
- if (time > this.superweapons_finished)
+ play_countdown(this, STAT(SUPERWEAPONS_FINISHED, this), SND_POWEROFF);
+ if (time > STAT(SUPERWEAPONS_FINISHED, this))
{
this.items = this.items - (this.items & IT_SUPERWEAPON);
STAT(WEAPONS, this) &= ~WEPSET_SUPERWEAPONS;
}
else if(STAT(WEAPONS, this) & WEPSET_SUPERWEAPONS)
{
- if (time < this.superweapons_finished || (this.items & IT_UNLIMITED_SUPERWEAPONS))
+ if (time < STAT(SUPERWEAPONS_FINISHED, this) || (this.items & IT_UNLIMITED_SUPERWEAPONS))
{
this.items = this.items | IT_SUPERWEAPON;
if(!(this.items & IT_UNLIMITED_SUPERWEAPONS))
}
else
{
- this.superweapons_finished = 0;
+ STAT(SUPERWEAPONS_FINISHED, this) = 0;
STAT(WEAPONS, this) &= ~WEPSET_SUPERWEAPONS;
}
}
else
{
- this.superweapons_finished = 0;
+ STAT(SUPERWEAPONS_FINISHED, this) = 0;
}
}
this.items = spectatee.items;
STAT(LAST_PICKUP, this) = STAT(LAST_PICKUP, spectatee);
STAT(HIT_TIME, this) = STAT(HIT_TIME, spectatee);
- this.strength_finished = spectatee.strength_finished;
- this.invincible_finished = spectatee.invincible_finished;
- this.superweapons_finished = spectatee.superweapons_finished;
+ STAT(STRENGTH_FINISHED, this) = STAT(STRENGTH_FINISHED, spectatee);
+ STAT(INVINCIBLE_FINISHED, this) = STAT(INVINCIBLE_FINISHED, spectatee);
+ STAT(SUPERWEAPONS_FINISHED, this) = STAT(SUPERWEAPONS_FINISHED, spectatee);
this.air_finished = spectatee.air_finished;
STAT(PRESSED_KEYS, this) = STAT(PRESSED_KEYS, spectatee);
STAT(WEAPONS, this) = STAT(WEAPONS, spectatee);
else if(currentlyPlaying < player_limit)
free_slots = min(maxclients - totalClients, player_limit - currentlyPlaying);
- static float join_prevent_msg_time = 0;
- if(this && ignore && !free_slots && time > join_prevent_msg_time)
+ static float msg_time = 0;
+ if(this && !this.caplayer && ignore && !free_slots && time > msg_time)
{
Send_Notification(NOTIF_ONE_ONLY, this, MSG_CENTER, CENTER_JOIN_PREVENT);
- join_prevent_msg_time = time + 3;
+ msg_time = time + 0.5;
}
return free_slots;
void DrownPlayer(entity this)
{
- if(IS_DEAD(this) || game_stopped || time < game_starttime)
+ if(IS_DEAD(this) || game_stopped || time < game_starttime || this.vehicle
+ || STAT(FROZEN, this) || this.watertype != CONTENT_WATER)
+ {
+ this.air_finished = 0;
return;
+ }
- if (this.waterlevel != WATERLEVEL_SUBMERGED || this.vehicle)
+ if (this.waterlevel != WATERLEVEL_SUBMERGED)
{
if(this.air_finished && this.air_finished < time)
PlayerSound(this, playersound_gasp, CH_PLAYER, VOL_BASE, VOICETYPE_PLAYERSOUND);