mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-04 21:33:51 +00:00
(svn r14746) -Fix: don't let any disaster vehicle (Helicopter or Airplane) target invalid industry
This commit is contained in:
parent
1721222080
commit
73ca72922c
@ -1063,6 +1063,22 @@ void StartupDisasters()
|
||||
ResetDisasterDelay();
|
||||
}
|
||||
|
||||
/** Marks all disasters targeting this industry in such a way
|
||||
* they won't call GetIndustry(v->dest_tile) on invalid industry anymore.
|
||||
* @param i deleted industry
|
||||
*/
|
||||
void ReleaseDisastersTargetingIndustry(IndustryID i)
|
||||
{
|
||||
Vehicle *v;
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
/* primary disaster vehicles that have chosen target */
|
||||
if (v->type == VEH_DISASTER && (v->subtype == ST_Airplane || v->subtype == ST_Helicopter)) {
|
||||
/* if it has chosen target, and it is this industry (yes, dest_tile is IndustryID here), set order to "leaving map peacefully" */
|
||||
if (v->current_order.GetDestination() > 0 && v->dest_tile == i) v->current_order.SetDestination(3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DisasterVehicle::UpdateDeltaXY(Direction direction)
|
||||
{
|
||||
this->x_offs = -1;
|
||||
|
@ -238,6 +238,8 @@ const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx); ///< Array of ind
|
||||
void ResetIndustries();
|
||||
void PlantRandomFarmField(const Industry *i);
|
||||
|
||||
void ReleaseDisastersTargetingIndustry(IndustryID);
|
||||
|
||||
/* writable arrays of specs */
|
||||
extern IndustrySpec _industry_specs[NUM_INDUSTRYTYPES];
|
||||
extern IndustryTileSpec _industry_tile_specs[NUM_INDUSTRYTILES];
|
||||
|
@ -166,6 +166,9 @@ Industry::~Industry()
|
||||
} END_TILE_LOOP(tile_cur, 42, 42, this->xy - TileDiff(21, 21))
|
||||
}
|
||||
|
||||
/* don't let any disaster vehicle target invalid industry */
|
||||
ReleaseDisastersTargetingIndustry(this->index);
|
||||
|
||||
DecIndustryTypeCount(this->type);
|
||||
|
||||
DeleteSubsidyWithIndustry(this->index);
|
||||
|
Loading…
Reference in New Issue
Block a user