@@ -372,7 +372,7 @@ class MatchBaseCoordinates: public std::unary_function<const Base *, bool>
372372 */
373373void AlienMission::ufoReachedWaypoint (Ufo &ufo, Game &engine, const Globe &globe)
374374{
375- const Mod &rules = *engine.getMod ();
375+ const Mod &mod = *engine.getMod ();
376376 SavedGame &game = *engine.getSavedGame ();
377377 const size_t curWaypoint = ufo.getTrajectoryPoint ();
378378 const size_t nextWaypoint = curWaypoint + 1 ;
@@ -392,7 +392,7 @@ void AlienMission::ufoReachedWaypoint(Ufo &ufo, Game &engine, const Globe &globe
392392 }
393393 ufo.setAltitude (trajectory.getAltitude (nextWaypoint));
394394 ufo.setTrajectoryPoint (nextWaypoint);
395- const RuleRegion ®ionRules = *rules .getRegion (_region);
395+ const RuleRegion ®ionRules = *mod .getRegion (_region);
396396 std::pair<double , double > pos = getWaypoint (trajectory, nextWaypoint, globe, regionRules);
397397
398398 Waypoint *wp = new Waypoint ();
@@ -418,8 +418,16 @@ void AlienMission::ufoReachedWaypoint(Ufo &ufo, Game &engine, const Globe &globe
418418 ufo.setStatus (Ufo::DESTROYED );
419419
420420 MissionArea area = regionRules.getMissionZones ().at (trajectory.getZone (curWaypoint)).areas .at (_missionSiteZone);
421- Texture *texture = rules.getGlobe ()->getTexture (area.texture );
422- AlienDeployment *deployment = rules.getDeployment (texture->getRandomDeployment ());
421+ Texture *texture = mod.getGlobe ()->getTexture (area.texture );
422+ AlienDeployment *deployment;
423+ if (mod.getDeployment (_rule.getSiteType ()))
424+ {
425+ deployment = mod.getDeployment (_rule.getSiteType ());
426+ }
427+ else
428+ {
429+ deployment = mod.getDeployment (texture->getRandomDeployment ());
430+ }
423431 MissionSite *missionSite = spawnMissionSite (game, deployment, area);
424432 if (missionSite)
425433 {
0 commit comments