From dccd3adb9bfc0d17f8b078e0e43b0da5315a89ed Mon Sep 17 00:00:00 2001 From: truelight Date: Thu, 16 Dec 2004 11:36:00 +0000 Subject: (svn r1128) -Fix: [Network] Going bankrupt of human-players was corrupted in networkgames --- economy.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'economy.c') diff --git a/economy.c b/economy.c index fb42abe0d..78b564eb5 100644 --- a/economy.c +++ b/economy.c @@ -397,22 +397,29 @@ static void PlayersCheckBankrupt(Player *p) p->bankrupt_asked = 255; p->bankrupt_timeout = 0x456; } else { - // If we are the server, make sure it is clear that his player is no - // longer with us! #ifdef ENABLE_NETWORK if (IS_HUMAN_PLAYER(owner) && _network_server) { + // If we are the server, make sure it is clear that his player is no + // longer with us! NetworkClientInfo *ci; - ci = NetworkFindClientInfoFromIndex(_network_own_client_index); - ci->client_playas = (byte)(OWNER_SPECTATOR + 1); - // Send the new info to all the clients - NetworkUpdateClientInfo(_network_own_client_index); + ClientState *cs; + /* Find all clients that were in control of this company */ + FOR_ALL_CLIENTS(cs) { + ci = DEREF_CLIENT_INFO(cs); + if ((ci->client_playas-1) == owner) { + ci->client_playas = OWNER_SPECTATOR; + // Send the new info to all the clients + NetworkUpdateClientInfo(_network_own_client_index); + } + } } -#endif /* ENABLE_NETWORK */ // Make sure the player no longer controls the company if (IS_HUMAN_PLAYER(owner) && owner == _local_player) { // Switch the player to spectator.. _local_player = OWNER_SPECTATOR; } +#endif /* ENABLE_NETWORK */ + // Convert everything the player owns to NO_OWNER p->money64 = p->player_money = 100000000; ChangeOwnershipOfPlayerItems(owner, 0xFF); // 255 is no owner -- cgit v1.2.3-54-g00ecf