From 307c27892d91dfead68f7cb85ec4eefa89c5d10d Mon Sep 17 00:00:00 2001 From: bjarni Date: Sun, 30 Jan 2005 14:52:04 +0000 Subject: [PATCH] (svn r1730) - Fix: Ships and Aircrafts have to be build in depots owned by _current_player (hacked client protection) now all 4 types of vehicles have to be build in depots. Note: there is a wordaround for AI players since the AI handle aircraft building in a weird way --- aircraft_cmd.c | 5 +++++ ship_cmd.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/aircraft_cmd.c b/aircraft_cmd.c index e1a4863290..f832b27765 100644 --- a/aircraft_cmd.c +++ b/aircraft_cmd.c @@ -163,6 +163,11 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2) if (!IsEngineBuildable(p1, VEH_Aircraft)) return CMD_ERROR; + // Workaround: TODO: make AI players try to build planes in a hangar instead of just an airport tile. + if (!IsAircraftHangarTile((TileIndex)tile) && IS_HUMAN_PLAYER(_current_player)) return CMD_ERROR; + + if (_map_owner[tile] != _current_player) return CMD_ERROR; + SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES); value = EstimateAircraftCost(p1); diff --git a/ship_cmd.c b/ship_cmd.c index c7330b9d25..c85377187a 100644 --- a/ship_cmd.c +++ b/ship_cmd.c @@ -841,6 +841,10 @@ int32 CmdBuildShip(int x, int y, uint32 flags, uint32 p1, uint32 p2) if (!IsEngineBuildable(p1, VEH_Ship)) return CMD_ERROR; + if (!IsShipDepotTile((TileIndex)tile)) return CMD_ERROR; + + if (_map_owner[tile] != _current_player) return CMD_ERROR; + SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES); value = EstimateShipCost(p1);