#include "stdafx.h"
#include "landscape.h"
#include "industry_map.h"
#include "station_map.h"
#include "command_func.h"
#include "news_func.h"
#include "town.h"
#include "company_func.h"
#include "variables.h"
#include "strings_func.h"
#include "date_func.h"
#include "functions.h"
#include "vehicle_func.h"
#include "sound_func.h"
#include "effectvehicle_func.h"
#include "roadveh.h"
#include "ai/ai.hpp"
#include "table/strings.h"
#include "table/sprites.h"
Go to the source code of this file.
Typedefs | |
typedef void | DisasterVehicleTickProc (Vehicle *v) |
typedef void | DisasterInitProc () |
Enumerations | |
enum | DisasterSubType { ST_ZEPPELINER, ST_ZEPPELINER_SHADOW, ST_SMALL_UFO, ST_SMALL_UFO_SHADOW, ST_AIRPLANE, ST_AIRPLANE_SHADOW, ST_HELICOPTER, ST_HELICOPTER_SHADOW, ST_HELICOPTER_ROTORS, ST_BIG_UFO, ST_BIG_UFO_SHADOW, ST_BIG_UFO_DESTROYER, ST_BIG_UFO_DESTROYER_SHADOW, ST_SMALL_SUBMARINE, ST_BIG_SUBMARINE } |
Functions | |
static void | DisasterClearSquare (TileIndex tile) |
static void | DisasterVehicleUpdateImage (Vehicle *v) |
static void | InitializeDisasterVehicle (Vehicle *v, int x, int y, byte z, Direction direction, byte subtype) |
Initialize a disaster vehicle. | |
static void | SetDisasterVehiclePos (Vehicle *v, int x, int y, byte z) |
static void | DisasterTick_Zeppeliner (Vehicle *v) |
Zeppeliner handling, v->current_order.dest states: 0: Zeppeliner initialization has found a small airport, go there and crash 1: Create crash and animate falling down for extra dramatic effect 2: Create more smoke and leave debris on ground 2: Clear the runway after some time and remove crashed zeppeliner If not airport was found, only state 0 is reached until zeppeliner leaves map. | |
static void | DisasterTick_Ufo (Vehicle *v) |
(Small) Ufo handling, v->current_order.dest states: 0: Fly around to the middle of the map, then randomly, after a while target a road vehicle 1: Home in on a road vehicle and crash it >:) If not road vehicle was found, only state 0 is used and Ufo disappears after a while | |
static void | DestructIndustry (Industry *i) |
static void | DisasterTick_Airplane (Vehicle *v) |
Airplane handling, v->current_order.dest states: 0: Fly towards the targetted oil refinery 1: If within 15 tiles, fire away rockets and destroy industry 2: Refinery explosions 3: Fly out of the map If the industry was removed in the meantime just fly to the end of the map. | |
static void | DisasterTick_Helicopter (Vehicle *v) |
Helicopter handling, v->current_order.dest states: 0: Fly towards the targetted factory 1: If within 15 tiles, fire away rockets and destroy industry 2: Factory explosions 3: Fly out of the map. | |
static void | DisasterTick_Helicopter_Rotors (Vehicle *v) |
Helicopter rotor blades; keep these spinning. | |
static void | DisasterTick_Big_Ufo (Vehicle *v) |
(Big) Ufo handling, v->current_order.dest states: 0: Fly around to the middle of the map, then randomly for a while and home in on a piece of rail 1: Land there and breakdown all trains in a radius of 12 tiles; and now we wait. | |
static void | DisasterTick_Big_Ufo_Destroyer (Vehicle *v) |
Skyranger destroying (Big) Ufo handling, v->current_order.dest states: 0: Home in on landed Ufo and shoot it down. | |
static void | DisasterTick_Submarine (Vehicle *v) |
Submarine, v->current_order.dest states: Unused, just float around aimlessly and pop up at different places, turning around. | |
static void | DisasterTick_NULL (Vehicle *v) |
static void | Disaster_Zeppeliner_Init () |
Zeppeliner which crashes on a small airport if one found, otherwise crashes on a random tile. | |
static void | Disaster_Small_Ufo_Init () |
Ufo which flies around aimlessly from the middle of the map a bit until it locates a road vehicle which it targets and then destroys. | |
static void | Disaster_Airplane_Init () |
static void | Disaster_Helicopter_Init () |
Combat helicopter that destroys a factory. | |
static void | Disaster_Big_Ufo_Init () |
static void | Disaster_Submarine_Init (DisasterSubType subtype) |
static void | Disaster_Small_Submarine_Init () |
static void | Disaster_Big_Submarine_Init () |
static void | Disaster_CoalMine_Init () |
Coal mine catastrophe, destroys a stretch of 30 tiles of land in a certain direction. | |
static void | DoDisaster () |
static void | ResetDisasterDelay () |
void | DisasterDailyLoop () |
void | StartupDisasters () |
void | ReleaseDisastersTargetingIndustry (IndustryID i) |
Marks all disasters targeting this industry in such a way they won't call GetIndustry(v->dest_tile) on invalid industry anymore. | |
Variables | |
static const SpriteID | _disaster_images_1 [] = {SPR_BLIMP, SPR_BLIMP, SPR_BLIMP, SPR_BLIMP, SPR_BLIMP, SPR_BLIMP, SPR_BLIMP, SPR_BLIMP} |
static const SpriteID | _disaster_images_2 [] = {SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT} |
static const SpriteID | _disaster_images_3 [] = {SPR_F_15, SPR_F_15, SPR_F_15, SPR_F_15, SPR_F_15, SPR_F_15, SPR_F_15, SPR_F_15} |
static const SpriteID | _disaster_images_4 [] = {SPR_SUB_SMALL_NE, SPR_SUB_SMALL_NE, SPR_SUB_SMALL_SE, SPR_SUB_SMALL_SE, SPR_SUB_SMALL_SW, SPR_SUB_SMALL_SW, SPR_SUB_SMALL_NW, SPR_SUB_SMALL_NW} |
static const SpriteID | _disaster_images_5 [] = {SPR_SUB_LARGE_NE, SPR_SUB_LARGE_NE, SPR_SUB_LARGE_SE, SPR_SUB_LARGE_SE, SPR_SUB_LARGE_SW, SPR_SUB_LARGE_SW, SPR_SUB_LARGE_NW, SPR_SUB_LARGE_NW} |
static const SpriteID | _disaster_images_6 [] = {SPR_UFO_HARVESTER, SPR_UFO_HARVESTER, SPR_UFO_HARVESTER, SPR_UFO_HARVESTER, SPR_UFO_HARVESTER, SPR_UFO_HARVESTER, SPR_UFO_HARVESTER, SPR_UFO_HARVESTER} |
static const SpriteID | _disaster_images_7 [] = {SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER} |
static const SpriteID | _disaster_images_8 [] = {SPR_AH_64A, SPR_AH_64A, SPR_AH_64A, SPR_AH_64A, SPR_AH_64A, SPR_AH_64A, SPR_AH_64A, SPR_AH_64A} |
static const SpriteID | _disaster_images_9 [] = {SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1} |
static const SpriteID *const | _disaster_images [] |
static DisasterVehicleTickProc *const | _disastervehicle_tick_procs [] |
static DisasterInitProc *const | _disaster_initprocs [] |
struct { | |
Year min | |
Year max | |
} | _dis_years [] |
The general flow of control for the disaster vehicles is as follows:
Definition in file disaster_cmd.cpp.
static void DisasterTick_Big_Ufo | ( | Vehicle * | v | ) | [static] |
(Big) Ufo handling, v->current_order.dest states: 0: Fly around to the middle of the map, then randomly for a while and home in on a piece of rail 1: Land there and breakdown all trains in a radius of 12 tiles; and now we wait.
.. because as soon as the Ufo lands, a fighter jet, a Skyranger, is called to clear up the mess
Definition at line 549 of file disaster_cmd.cpp.
References AddNewsItem(), Delta(), DIR_SW, GetNewVehiclePos(), GetTileOwner(), InitializeDisasterVehicle(), IsPlainRailTile(), IsTileType(), IsValidTile(), MP_RAILWAY, NS_ACCIDENT_TILE, RandomTile, TILE_MASK, TILE_SIZE, TileX(), TileY(), GetNewVehiclePosResult::x, and GetNewVehiclePosResult::y.
static void InitializeDisasterVehicle | ( | Vehicle * | v, | |
int | x, | |||
int | y, | |||
byte | z, | |||
Direction | direction, | |||
byte | subtype | |||
) | [static] |
Initialize a disaster vehicle.
These vehicles are of type VEH_DISASTER, are unclickable and owned by nobody
Definition at line 123 of file disaster_cmd.cpp.
References INVALID_DIR, MarkSingleVehicleDirty(), OWNER_NONE, and VehicleMove().
Referenced by Disaster_Helicopter_Init(), Disaster_Small_Ufo_Init(), Disaster_Zeppeliner_Init(), and DisasterTick_Big_Ufo().
void ReleaseDisastersTargetingIndustry | ( | IndustryID | i | ) |
Marks all disasters targeting this industry in such a way they won't call GetIndustry(v->dest_tile) on invalid industry anymore.
i | deleted industry |
Definition at line 1020 of file disaster_cmd.cpp.
const SpriteID* const _disaster_images[] [static] |
Initial value:
{ _disaster_images_1, _disaster_images_1, _disaster_images_2, _disaster_images_2, _disaster_images_3, _disaster_images_3, _disaster_images_8, _disaster_images_8, _disaster_images_9, _disaster_images_6, _disaster_images_6, _disaster_images_7, _disaster_images_7, _disaster_images_4, _disaster_images_5, }
Definition at line 104 of file disaster_cmd.cpp.
DisasterInitProc* const _disaster_initprocs[] [static] |
Initial value:
{ Disaster_Zeppeliner_Init, Disaster_Small_Ufo_Init, Disaster_Airplane_Init, Disaster_Helicopter_Init, Disaster_Big_Ufo_Init, Disaster_Small_Submarine_Init, Disaster_Big_Submarine_Init, Disaster_CoalMine_Init, }
Definition at line 954 of file disaster_cmd.cpp.
DisasterVehicleTickProc* const _disastervehicle_tick_procs[] [static] |
Initial value:
{ DisasterTick_Zeppeliner, DisasterTick_NULL, DisasterTick_Ufo, DisasterTick_NULL, DisasterTick_Airplane, DisasterTick_NULL, DisasterTick_Helicopter, DisasterTick_NULL, DisasterTick_Helicopter_Rotors, DisasterTick_Big_Ufo, DisasterTick_NULL, DisasterTick_Big_Ufo_Destroyer, DisasterTick_NULL, DisasterTick_Submarine, DisasterTick_Submarine, }
Definition at line 727 of file disaster_cmd.cpp.