|
@@ -230,13 +230,13 @@ static void DisasterTick_Zeppeliner(Vehi
|
|
|
IsHumanPlayer(GetTileOwner(tile))) {
|
|
|
v->current_order.dest = 1;
|
|
|
v->age = 0;
|
|
|
|
|
|
SetDParam(0, GetStationIndex(tile));
|
|
|
AddNewsItem(STR_B000_ZEPPELIN_DISASTER_AT,
|
|
|
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ACCIDENT, 0),
|
|
|
NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_VEHICLE, NT_ACCIDENT, 0),
|
|
|
v->index,
|
|
|
0);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (v->y_pos >= ((int)MapSizeY() + 9) * TILE_SIZE - 1) DeleteDisasterVeh(v);
|
|
@@ -260,13 +260,13 @@ static void DisasterTick_Zeppeliner(Vehi
|
|
|
DeleteDisasterVeh(v);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
x = v->x_pos;
|
|
|
y = v->y_pos;
|
|
|
z = GetSlopeZ(x,y);
|
|
|
z = GetSlopeZ(x, y);
|
|
|
if (z < v->z_pos) z = v->z_pos - 1;
|
|
|
SetDisasterVehiclePos(v, x, y, z);
|
|
|
|
|
|
if (++v->age == 1) {
|
|
|
CreateEffectVehicleRel(v, 0, 7, 8, EV_EXPLOSION_LARGE);
|
|
|
SndPlayVehicleFx(SND_12_EXPLOSION, v);
|
|
@@ -356,20 +356,20 @@ static void DisasterTick_Ufo(Vehicle *v)
|
|
|
GetNewVehiclePosResult gp = GetNewVehiclePos(v);
|
|
|
|
|
|
z = v->z_pos;
|
|
|
if (dist <= TILE_SIZE && z > u->z_pos) z--;
|
|
|
SetDisasterVehiclePos(v, gp.x, gp.y, z);
|
|
|
|
|
|
if (z <= u->z_pos && (u->vehstatus & VS_HIDDEN)==0) {
|
|
|
if (z <= u->z_pos && (u->vehstatus & VS_HIDDEN) == 0) {
|
|
|
v->age++;
|
|
|
if (u->u.road.crashed_ctr == 0) {
|
|
|
u->u.road.crashed_ctr++;
|
|
|
u->vehstatus |= VS_CRASHED;
|
|
|
|
|
|
AddNewsItem(STR_B001_ROAD_VEHICLE_DESTROYED,
|
|
|
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ACCIDENT, 0),
|
|
|
NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_VEHICLE, NT_ACCIDENT, 0),
|
|
|
u->index,
|
|
|
0);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* Destroy? */
|
|
@@ -438,13 +438,13 @@ static void DisasterTick_Airplane(Vehicl
|
|
|
v->age = 0;
|
|
|
|
|
|
i = GetIndustry(v->dest_tile);
|
|
|
DestructIndustry(i);
|
|
|
|
|
|
SetDParam(0, i->town->index);
|
|
|
AddNewsItem(STR_B002_OIL_REFINERY_EXPLOSION, NEWS_FLAGS(NM_THIN,NF_VIEWPORT|NF_TILE,NT_ACCIDENT,0), i->xy, 0);
|
|
|
AddNewsItem(STR_B002_OIL_REFINERY_EXPLOSION, NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, NT_ACCIDENT, 0), i->xy, 0);
|
|
|
SndPlayTileFx(SND_12_EXPLOSION, i->xy);
|
|
|
}
|
|
|
} else if (v->current_order.dest == 0) {
|
|
|
int x, y;
|
|
|
TileIndex tile;
|
|
|
uint ind;
|
|
@@ -511,13 +511,13 @@ static void DisasterTick_Helicopter(Vehi
|
|
|
v->age = 0;
|
|
|
|
|
|
i = GetIndustry(v->dest_tile);
|
|
|
DestructIndustry(i);
|
|
|
|
|
|
SetDParam(0, i->town->index);
|
|
|
AddNewsItem(STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS, NEWS_FLAGS(NM_THIN,NF_VIEWPORT|NF_TILE,NT_ACCIDENT,0), i->xy, 0);
|
|
|
AddNewsItem(STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS, NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, NT_ACCIDENT, 0), i->xy, 0);
|
|
|
SndPlayTileFx(SND_12_EXPLOSION, i->xy);
|
|
|
}
|
|
|
} else if (v->current_order.dest == 0) {
|
|
|
int x, y;
|
|
|
TileIndex tile;
|
|
|
uint ind;
|
|
@@ -597,13 +597,13 @@ static void DisasterTick_Big_Ufo(Vehicle
|
|
|
}
|
|
|
}
|
|
|
|
|
|
t = ClosestTownFromTile(v->dest_tile, (uint)-1);
|
|
|
SetDParam(0, t->index);
|
|
|
AddNewsItem(STR_B004_UFO_LANDS_NEAR,
|
|
|
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_TILE, NT_ACCIDENT, 0),
|
|
|
NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, NT_ACCIDENT, 0),
|
|
|
v->tile,
|
|
|
0);
|
|
|
|
|
|
u = ForceAllocateSpecialVehicle();
|
|
|
if (u == NULL) {
|
|
|
DeleteDisasterVeh(v);
|
|
@@ -948,13 +948,13 @@ static void Disaster_Small_Submarine_Ini
|
|
|
|
|
|
|
|
|
/* Curious submarine #2, just floats around */
|
|
|
static void Disaster_Big_Submarine_Init()
|
|
|
{
|
|
|
Vehicle *v = ForceAllocateSpecialVehicle();
|
|
|
int x,y;
|
|
|
int x, y;
|
|
|
Direction dir;
|
|
|
uint32 r;
|
|
|
|
|
|
if (v == NULL) return;
|
|
|
|
|
|
r = Random();
|
|
@@ -983,13 +983,13 @@ static void Disaster_CoalMine_Init()
|
|
|
const Industry *i;
|
|
|
|
|
|
FOR_ALL_INDUSTRIES(i) {
|
|
|
if ((GetIndustrySpec(i->type)->behaviour & INDUSTRYBEH_CAN_SUBSIDENCE) && --index < 0) {
|
|
|
SetDParam(0, i->town->index);
|
|
|
AddNewsItem(STR_B005_COAL_MINE_SUBSIDENCE_LEAVES,
|
|
|
NEWS_FLAGS(NM_THIN,NF_VIEWPORT|NF_TILE,NT_ACCIDENT,0), i->xy + TileDiffXY(1, 1), 0);
|
|
|
NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, NT_ACCIDENT, 0), i->xy + TileDiffXY(1, 1), 0);
|
|
|
|
|
|
{
|
|
|
TileIndex tile = i->xy;
|
|
|
TileIndexDiff step = TileOffsByDiagDir(GB(Random(), 0, 2));
|
|
|
uint n;
|
|
|
|