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()) {
|
||||
/* Find (n+1)-th road vehicle. */
|
||||
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. */
|
||||
v->dest_tile = u->index;
|
||||
v->age = 0;
|
||||
|
|
|
@ -501,7 +501,15 @@ void AfterLoadVehicles(bool part_of_load)
|
|||
auto *dv = DisasterVehicle::From(v);
|
||||
if (dv->subtype == ST_SMALL_UFO && dv->state != 0) {
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue