equal
deleted
inserted
replaced
15 #include "industry.h" |
15 #include "industry.h" |
16 #include "player.h" |
16 #include "player.h" |
17 #include "airport_movement.h" |
17 #include "airport_movement.h" |
18 #include "sound.h" |
18 #include "sound.h" |
19 #include "variables.h" |
19 #include "variables.h" |
|
20 #include "table/sprites.h" |
20 |
21 |
21 static void DisasterClearSquare(TileIndex tile) |
22 static void DisasterClearSquare(TileIndex tile) |
22 { |
23 { |
23 if (!EnsureNoVehicle(tile)) |
24 if (!EnsureNoVehicle(tile)) |
24 return; |
25 return; |
221 SetDisasterVehiclePos(v, x, y, z); |
222 SetDisasterVehiclePos(v, x, y, z); |
222 |
223 |
223 if (++v->age == 1) { |
224 if (++v->age == 1) { |
224 CreateEffectVehicleRel(v, 0, 7, 8, EV_EXPLOSION_LARGE); |
225 CreateEffectVehicleRel(v, 0, 7, 8, EV_EXPLOSION_LARGE); |
225 SndPlayVehicleFx(SND_12_EXPLOSION, v); |
226 SndPlayVehicleFx(SND_12_EXPLOSION, v); |
226 v->u.disaster.image_override = 0xF42; |
227 v->u.disaster.image_override = SPR_BLIMP_CRASHING; |
227 } else if (v->age == 70) { |
228 } else if (v->age == 70) { |
228 v->u.disaster.image_override = 0xF43; |
229 v->u.disaster.image_override = SPR_BLIMP_CRASHED; |
229 } else if (v->age <= 300) { |
230 } else if (v->age <= 300) { |
230 if (!(v->tick_counter&7)) { |
231 if (!(v->tick_counter&7)) { |
231 uint32 r = Random(); |
232 uint32 r = Random(); |
232 |
233 |
233 CreateEffectVehicleRel(v, |
234 CreateEffectVehicleRel(v, |
259 GetNewVehiclePosResult gp; |
260 GetNewVehiclePosResult gp; |
260 Vehicle *u; |
261 Vehicle *u; |
261 uint dist; |
262 uint dist; |
262 byte z; |
263 byte z; |
263 |
264 |
264 v->u.disaster.image_override = (++v->tick_counter & 8) ? 0xF45 : 0xF44; |
265 v->u.disaster.image_override = (++v->tick_counter & 8) ? SPR_UFO_SMALL_SCOUT_DARKER : SPR_UFO_SMALL_SCOUT; |
265 |
266 |
266 if (v->current_order.station == 0) { |
267 if (v->current_order.station == 0) { |
267 // fly around randomly |
268 // fly around randomly |
268 int x = TileX(v->dest_tile) * 16; |
269 int x = TileX(v->dest_tile) * 16; |
269 int y = TileY(v->dest_tile) * 16; |
270 int y = TileY(v->dest_tile) * 16; |
349 { |
350 { |
350 GetNewVehiclePosResult gp; |
351 GetNewVehiclePosResult gp; |
351 |
352 |
352 v->tick_counter++; |
353 v->tick_counter++; |
353 v->u.disaster.image_override = |
354 v->u.disaster.image_override = |
354 (v->current_order.station == 1 && v->tick_counter&4) ? 0xF4F : 0; |
355 (v->current_order.station == 1 && v->tick_counter&4) ? SPR_F_15_FIRING : 0; |
355 |
356 |
356 GetNewVehiclePos(v, &gp); |
357 GetNewVehiclePos(v, &gp); |
357 SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos); |
358 SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos); |
358 |
359 |
359 if (gp.x < -160) { |
360 if (gp.x < -160) { |
420 { |
421 { |
421 GetNewVehiclePosResult gp; |
422 GetNewVehiclePosResult gp; |
422 |
423 |
423 v->tick_counter++; |
424 v->tick_counter++; |
424 v->u.disaster.image_override = |
425 v->u.disaster.image_override = |
425 (v->current_order.station == 1 && v->tick_counter&4) ? 0xF53 : 0; |
426 (v->current_order.station == 1 && v->tick_counter&4) ? SPR_AH_64A_FIRING : 0; |
426 |
427 |
427 GetNewVehiclePos(v, &gp); |
428 GetNewVehiclePos(v, &gp); |
428 SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos); |
429 SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos); |
429 |
430 |
430 if (gp.x > (int)MapSizeX() * 16 + 9*16 - 1) { |
431 if (gp.x > (int)MapSizeX() * 16 + 9*16 - 1) { |
490 static void DisasterTick_3b(Vehicle *v) |
491 static void DisasterTick_3b(Vehicle *v) |
491 { |
492 { |
492 if (++v->tick_counter & 1) |
493 if (++v->tick_counter & 1) |
493 return; |
494 return; |
494 |
495 |
495 if (++v->cur_image == 0xF40 + 1) |
496 if (++v->cur_image > SPR_ROTOR_MOVING_3) v->cur_image = SPR_ROTOR_MOVING_1; |
496 v->cur_image = 0xF3E; |
|
497 |
497 |
498 VehiclePositionChanged(v); |
498 VehiclePositionChanged(v); |
499 BeginVehicleMove(v); |
499 BeginVehicleMove(v); |
500 EndVehicleMove(v); |
500 EndVehicleMove(v); |
501 } |
501 } |