(svn r21949) -Change: randomize the vehicle a small UFO targets, do not use the one with lowest index

This commit is contained in:
smatz 2011-02-02 23:06:38 +00:00
parent a4bf3be864
commit f3e550e9bd
1 changed files with 18 additions and 7 deletions

View File

@ -307,17 +307,28 @@ static bool DisasterTick_Ufo(DisasterVehicle *v)
}
v->current_order.SetDestination(1);
uint n = 0; // Total number of targetable road vehicles.
RoadVehicle *u;
FOR_ALL_ROADVEHICLES(u) {
if (u->IsFrontEngine()) {
v->dest_tile = u->index;
v->age = 0;
return true;
}
if (u->IsFrontEngine()) n++;
}
delete v;
return false;
if (n == 0) {
/* If there are no targetable road vehicles, destroy the UFO. */
delete v;
return false;
}
n = RandomRange(n); // Choose one of them.
FOR_ALL_ROADVEHICLES(u) {
/* Find (n+1)-th road vehicle. */
if (u->IsFrontEngine() && (n-- == 0)) break;
}
/* Target it. */
v->dest_tile = u->index;
v->age = 0;
return true;
} else {
/* Target a vehicle */
RoadVehicle *u = RoadVehicle::Get(v->dest_tile);