diff options
Diffstat (limited to 'sigencore/Arena.cpp')
| -rw-r--r-- | sigencore/Arena.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sigencore/Arena.cpp b/sigencore/Arena.cpp index b2acaf51..bcdfceba 100644 --- a/sigencore/Arena.cpp +++ b/sigencore/Arena.cpp @@ -138,7 +138,7 @@ Sigscript::SigmodWrapper* Sigencore::Arena::sigmod() const bool Sigencore::Arena::addClient(Client* client, const int team) { - if ((team < 0) || ((m_state == Setup) && qobject_cast<Player*>(client) && (teamMembers(Fighters).size() < m_sigmod->rules()->maxPlayers()))) + if (((team < 0) || ((m_state == Setup) && qobject_cast<Player*>(client) && (teamMembers(Fighters).size() < m_sigmod->rules()->maxPlayers()))) && client->enterArena(this)) { m_teams[client] = team; emit(clientAdded(client, team)); @@ -160,6 +160,8 @@ void Sigencore::Arena::removeClient(Client* client) player->giveMoney(net); m_spoils.remove(player); } + if (player && (0 <= m_teams[player])) + player->exitArena(); const int team = m_teams[client]; m_teams.remove(client); emit(clientRemoved(client, team)); |
