diff options
author | frosch <frosch@openttd.org> | 2009-02-05 17:38:47 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2009-02-05 17:38:47 +0000 |
commit | cb049e4e5816446f7d23fcee43764cb3994780d5 (patch) | |
tree | 1a013cfc1d70f310a734feab5c052ba4c88d45ea /src/disaster_cmd.cpp | |
parent | 7f198507f724a20bc2c1257ad385a1fa4983a08e (diff) | |
download | openttd-cb049e4e5816446f7d23fcee43764cb3994780d5.tar.xz |
(svn r15359) -Add [NoAI]: AIEventVehicleCrashed::CRASH_RV_UFO, AIEventDisasterZeppelinerCrashed and AIEventDisasterZeppelinerCleared as aliens accepted NoAIs as competing life-form.
Diffstat (limited to 'src/disaster_cmd.cpp')
-rw-r--r-- | src/disaster_cmd.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/disaster_cmd.cpp b/src/disaster_cmd.cpp index 709e73c71..5205aa076 100644 --- a/src/disaster_cmd.cpp +++ b/src/disaster_cmd.cpp @@ -33,6 +33,7 @@ #include "sound_func.h" #include "effectvehicle_func.h" #include "roadveh.h" +#include "ai/ai.hpp" #include "table/strings.h" #include "table/sprites.h" @@ -215,8 +216,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v) if (IsValidTile(tile) && IsTileType(tile, MP_STATION) && - IsAirport(tile) && - IsHumanCompany(GetTileOwner(tile))) { + IsAirport(tile)) { v->current_order.SetDestination(1); v->age = 0; @@ -225,6 +225,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v) NS_ACCIDENT_VEHICLE, v->index, 0); + AI::NewEvent(GetTileOwner(tile), new AIEventDisasterZeppelinerCrashed(GetStationIndex(tile))); } } @@ -239,10 +240,10 @@ static void DisasterTick_Zeppeliner(Vehicle *v) if (IsValidTile(tile) && IsTileType(tile, MP_STATION) && - IsAirport(tile) && - IsHumanCompany(GetTileOwner(tile))) { + IsAirport(tile)) { st = GetStationByTile(tile); CLRBITS(st->airport_flags, RUNWAY_IN_block); + AI::NewEvent(GetTileOwner(tile), new AIEventDisasterZeppelinerCleared(st->index)); } SetDisasterVehiclePos(v, v->x_pos, v->y_pos, v->z_pos); @@ -280,8 +281,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v) tile = v->tile; if (IsValidTile(tile) && IsTileType(tile, MP_STATION) && - IsAirport(tile) && - IsHumanCompany(GetTileOwner(tile))) { + IsAirport(tile)) { st = GetStationByTile(tile); SETBITS(st->airport_flags, RUNWAY_IN_block); } @@ -318,7 +318,7 @@ static void DisasterTick_Ufo(Vehicle *v) v->current_order.SetDestination(1); FOR_ALL_VEHICLES(u) { - if (u->type == VEH_ROAD && IsRoadVehFront(u) && IsHumanCompany(u->owner)) { + if (u->type == VEH_ROAD && IsRoadVehFront(u)) { v->dest_tile = u->index; v->age = 0; return; @@ -358,6 +358,8 @@ static void DisasterTick_Ufo(Vehicle *v) u->index, 0); + AI::NewEvent(u->owner, new AIEventVehicleCrashed(u->index, u->tile, AIEventVehicleCrashed::CRASH_RV_UFO)); + for (Vehicle *w = u; w != NULL; w = w->Next()) { w->vehstatus |= VS_CRASHED; MarkSingleVehicleDirty(w); @@ -756,9 +758,7 @@ static void Disaster_Zeppeliner_Init() int x = TileX(Random()) * TILE_SIZE + TILE_SIZE / 2; FOR_ALL_STATIONS(st) { - if (st->airport_tile != INVALID_TILE && - st->airport_type <= 1 && - IsHumanCompany(st->owner)) { + if (st->airport_tile != INVALID_TILE && (st->airport_type == AT_SMALL || st->airport_type == AT_LARGE)) { x = (TileX(st->airport_tile) + 2) * TILE_SIZE; break; } |