if (vote_called) { VoteCount(false); }
ReadyCount();
}
+ entcs_update_players(this);
}
entity spot = SelectSpawnPoint(this, true);
=============
*/
.entity chatbubbleentity;
+void player_powerups_remove_all(entity this);
+
void ClientDisconnect(entity this)
{
assert(IS_CLIENT(this), return);
ReadyCount();
if (vote_called && IS_REAL_CLIENT(this)) VoteCount(false);
+ player_powerups_remove_all(this); // stop powerup sound
+
ONREMOVE(this);
}
{
if (this.items & (ITEM_Strength.m_itemid | ITEM_Shield.m_itemid | IT_SUPERWEAPON))
{
- if (time > game_starttime + 1)
+ // don't play the poweroff sound when the game restarts or the player disconnects
+ if (time > game_starttime + 1 && IS_CLIENT(this))
sound(this, CH_INFO, SND_POWEROFF, VOL_BASE, ATTEN_NORM);
stopsound(this, CH_TRIGGER_SINGLE); // get rid of the pickup sound
this.items &= ~ITEM_Strength.m_itemid;
void GetPressedKeys(entity this)
{
MUTATOR_CALLHOOK(GetPressedKeys, this);
+ if (game_stopped)
+ {
+ CS(this).pressedkeys = 0;
+ STAT(PRESSED_KEYS, this) = 0;
+ return;
+ }
+
+ // NOTE: GetPressedKeys and PM_dodging_GetPressedKeys use similar code
int keys = STAT(PRESSED_KEYS, this);
keys = BITSET(keys, KEY_FORWARD, CS(this).movement.x > 0);
keys = BITSET(keys, KEY_BACKWARD, CS(this).movement.x < 0);
}
target_voicescript_next(this);
-
- // WEAPONTODO: Move into weaponsystem somehow
- // if a player goes unarmed after holding a loaded weapon, empty his clip size and remove the crosshair ammo ring
- for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
- {
- .entity weaponentity = weaponentities[slot];
- if(this.(weaponentity).m_weapon == WEP_Null)
- this.(weaponentity).clip_load = this.(weaponentity).clip_size = 0;
- }
}
void DrownPlayer(entity this)
DrownPlayer(this);
UpdateChatBubble(this);
if (CS(this).impulse) ImpulseCommands(this);
+ GetPressedKeys(this);
if (game_stopped)
{
CSQCMODEL_AUTOUPDATE(this);
return;
}
- GetPressedKeys(this);
}
else if (IS_OBSERVER(this) && STAT(PRESSED_KEYS, this))
{