mirror of https://github.com/OpenTTD/OpenTTD
v->tile for aircrafts is always zero when in the air. Only when it starts its landing (or take-off) patterns it becomes a sane value. So instead, base the news on the last x/y coordinates of the plane.pull/8834/head
parent
65f558d6df
commit
68e92d215a
|
@ -1328,19 +1328,22 @@ static void CrashAirplane(Aircraft *v)
|
||||||
v->Next()->cargo.Truncate();
|
v->Next()->cargo.Truncate();
|
||||||
const Station *st = GetTargetAirportIfValid(v);
|
const Station *st = GetTargetAirportIfValid(v);
|
||||||
StringID newsitem;
|
StringID newsitem;
|
||||||
|
TileIndex vt;
|
||||||
if (st == nullptr) {
|
if (st == nullptr) {
|
||||||
newsitem = STR_NEWS_PLANE_CRASH_OUT_OF_FUEL;
|
newsitem = STR_NEWS_PLANE_CRASH_OUT_OF_FUEL;
|
||||||
|
vt = TileVirtXY(v->x_pos, v->y_pos);
|
||||||
} else {
|
} else {
|
||||||
SetDParam(1, st->index);
|
SetDParam(1, st->index);
|
||||||
newsitem = STR_NEWS_AIRCRAFT_CRASH;
|
newsitem = STR_NEWS_AIRCRAFT_CRASH;
|
||||||
|
vt = v->tile;
|
||||||
}
|
}
|
||||||
|
|
||||||
AI::NewEvent(v->owner, new ScriptEventVehicleCrashed(v->index, v->tile, st == nullptr ? ScriptEventVehicleCrashed::CRASH_AIRCRAFT_NO_AIRPORT : ScriptEventVehicleCrashed::CRASH_PLANE_LANDING));
|
AI::NewEvent(v->owner, new ScriptEventVehicleCrashed(v->index, vt, st == nullptr ? ScriptEventVehicleCrashed::CRASH_AIRCRAFT_NO_AIRPORT : ScriptEventVehicleCrashed::CRASH_PLANE_LANDING));
|
||||||
Game::NewEvent(new ScriptEventVehicleCrashed(v->index, v->tile, st == nullptr ? ScriptEventVehicleCrashed::CRASH_AIRCRAFT_NO_AIRPORT : ScriptEventVehicleCrashed::CRASH_PLANE_LANDING));
|
Game::NewEvent(new ScriptEventVehicleCrashed(v->index, vt, st == nullptr ? ScriptEventVehicleCrashed::CRASH_AIRCRAFT_NO_AIRPORT : ScriptEventVehicleCrashed::CRASH_PLANE_LANDING));
|
||||||
|
|
||||||
AddTileNewsItem(newsitem, NT_ACCIDENT, v->tile, nullptr, st != nullptr ? st->index : INVALID_STATION);
|
AddTileNewsItem(newsitem, NT_ACCIDENT, vt, nullptr, st != nullptr ? st->index : INVALID_STATION);
|
||||||
|
|
||||||
ModifyStationRatingAround(v->tile, v->owner, -160, 30);
|
ModifyStationRatingAround(vt, v->owner, -160, 30);
|
||||||
if (_settings_client.sound.disaster) SndPlayVehicleFx(SND_12_EXPLOSION, v);
|
if (_settings_client.sound.disaster) SndPlayVehicleFx(SND_12_EXPLOSION, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue