mirror of https://github.com/OpenTTD/OpenTTD
Change: Small UFOs no longer target a vehicle which is already a target.
parent
b1c9a0f628
commit
d112a7f089
|
@ -348,6 +348,11 @@ static bool DisasterTick_Ufo(DisasterVehicle *v)
|
||||||
for (RoadVehicle *u : RoadVehicle::Iterate()) {
|
for (RoadVehicle *u : RoadVehicle::Iterate()) {
|
||||||
/* Find (n+1)-th road vehicle. */
|
/* Find (n+1)-th road vehicle. */
|
||||||
if (u->IsFrontEngine() && (n-- == 0)) {
|
if (u->IsFrontEngine() && (n-- == 0)) {
|
||||||
|
if (u->crashed_ctr != 0 || u->disaster_vehicle != INVALID_VEHICLE) {
|
||||||
|
/* Targetted vehicle is crashed or already a target, destroy the UFO. */
|
||||||
|
delete v;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
/* Target it. */
|
/* Target it. */
|
||||||
v->dest_tile = u->index;
|
v->dest_tile = u->index;
|
||||||
v->age = 0;
|
v->age = 0;
|
||||||
|
|
|
@ -501,7 +501,15 @@ void AfterLoadVehicles(bool part_of_load)
|
||||||
auto *dv = DisasterVehicle::From(v);
|
auto *dv = DisasterVehicle::From(v);
|
||||||
if (dv->subtype == ST_SMALL_UFO && dv->state != 0) {
|
if (dv->subtype == ST_SMALL_UFO && dv->state != 0) {
|
||||||
RoadVehicle *u = RoadVehicle::GetIfValid(v->dest_tile.base());
|
RoadVehicle *u = RoadVehicle::GetIfValid(v->dest_tile.base());
|
||||||
if (u != nullptr && u->IsFrontEngine()) u->disaster_vehicle = dv->index;
|
if (u != nullptr && u->IsFrontEngine()) {
|
||||||
|
/* Delete UFO targetting a vehicle which is already a target. */
|
||||||
|
if (u->disaster_vehicle != INVALID_VEHICLE) {
|
||||||
|
delete v;
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
u->disaster_vehicle = dv->index;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue