summaryrefslogtreecommitdiff
path: root/players.c
diff options
context:
space:
mode:
authortruelight <truelight@openttd.org>2004-12-16 11:36:57 +0000
committertruelight <truelight@openttd.org>2004-12-16 11:36:57 +0000
commit74a149127dbcb4b6c62c7b5adcbb4cba54ddaeb8 (patch)
tree1bbe6a65fbab389221996b854b42c5fd5a0d12a9 /players.c
parentdccd3adb9bfc0d17f8b078e0e43b0da5315a89ed (diff)
downloadopenttd-74a149127dbcb4b6c62c7b5adcbb4cba54ddaeb8.tar.xz
(svn r1129) -Add: [Network] Added 'reset_company <company-id>'. If a company is
empty (no clients logged on to it), a server can delete a company via this command in the console.
Diffstat (limited to 'players.c')
-rw-r--r--players.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/players.c b/players.c
index 2bddbecee..377001ff3 100644
--- a/players.c
+++ b/players.c
@@ -629,7 +629,7 @@ static void DeletePlayerStuff(int pi)
// functionality.
// 0 - make new player
// 1 - make new AI player
-// 2 - delete player (p1 >> 8) & 0xFF
+// 2 - delete player (p2)
// 3 - join player (p1 >> 8) & 0xFF with (p1 >> 16) & 0xFF
int32 CmdPlayerCtrl(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
@@ -686,9 +686,23 @@ int32 CmdPlayerCtrl(int x, int y, uint32 flags, uint32 p1, uint32 p2)
DoStartupNewPlayer(true);
break;
case 2: // delete player
- pi = (byte)(p1 >> 8);
- ChangeOwnershipOfPlayerItems(pi, 255);
- DeletePlayerStuff(pi);
+ p = DEREF_PLAYER(p2);
+
+ /* Only allow removal of HUMAN companies */
+ if (IS_HUMAN_PLAYER(p2)) {
+ /* Delete any open window of the company */
+ DeletePlayerWindows(p2);
+
+ /* Show the bankrupt news */
+ SetDParam(0, p->name_1);
+ SetDParam(1, p->name_2);
+ AddNewsItem( (StringID)(p2 + 16*3), NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
+
+ /* Remove the company */
+ ChangeOwnershipOfPlayerItems(p2, 255);
+ p->money64 = p->player_money = 100000000;
+ p->is_active = false;
+ }
break;
case 3: // join player