1
0
Fork 0

Change: Small UFOs no longer target a vehicle which is already a target.

pull/12064/head
Peter Nelson 2024-02-11 18:35:05 +00:00
parent b1c9a0f628
commit d112a7f089
No known key found for this signature in database
GPG Key ID: 8EF8F0A467DF75ED
2 changed files with 14 additions and 1 deletions

View File

@ -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;

View File

@ -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;
}