From 969f0e26c7cfd37e29a9d0a5d2162fffb909b227 Mon Sep 17 00:00:00 2001 From: MetalStormGhost Date: Mon, 22 Jan 2024 21:14:13 +0200 Subject: [PATCH] Pretense zone radius (radii) for FOBs with FARPs will now be dynamically adjusted. Increased the size of Pretense zones at Damascus, Khalkhalah and Krasnodar-Pashkovsky (which are quite spread out) so the zone would encompass the entire airfield. --- game/pretense/pretensetriggergenerator.py | 36 +++++++++++++++++++---- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/game/pretense/pretensetriggergenerator.py b/game/pretense/pretensetriggergenerator.py index 740c17c6..0f33f68a 100644 --- a/game/pretense/pretensetriggergenerator.py +++ b/game/pretense/pretensetriggergenerator.py @@ -24,6 +24,8 @@ from dcs.condition import ( ) from dcs.mission import Mission from dcs.task import Option +from dcs.terrain.caucasus.airports import Krasnodar_Pashkovsky +from dcs.terrain.syria.airports import Damascus, Khalkhalah from dcs.translation import String from dcs.triggers import Event, TriggerCondition, TriggerOnce from dcs.unit import Skill @@ -53,6 +55,7 @@ TRIGGER_RADIUS_CLEAR_SCENERY = 1000 TRIGGER_RADIUS_PRETENSE_TGO = 500 TRIGGER_RADIUS_PRETENSE_SUPPLY = 500 TRIGGER_RADIUS_PRETENSE_HELI = 1000 +TRIGGER_RADIUS_PRETENSE_HELI_BUFFER = 500 TRIGGER_RADIUS_PRETENSE_CARRIER = 50000 TRIGGER_RUNWAY_LENGTH_PRETENSE = 2500 TRIGGER_RUNWAY_WIDTH_PRETENSE = 400 @@ -224,19 +227,42 @@ class PretenseTriggerGenerator: """ for cp in self.game.theater.controlpoints: if cp.is_fleet: - trigger_radius = TRIGGER_RADIUS_PRETENSE_CARRIER + trigger_radius = float(TRIGGER_RADIUS_PRETENSE_CARRIER) + elif isinstance(cp, Fob) and cp.has_helipads: + trigger_radius = TRIGGER_RADIUS_PRETENSE_HELI + for helipad in list( + cp.helipads + cp.helipads_quad + cp.helipads_invisible + ): + if cp.position.distance_to_point(helipad) > trigger_radius: + trigger_radius = cp.position.distance_to_point(helipad) + for ground_spawn, ground_spawn_wp in list( + cp.ground_spawns + cp.ground_spawns_roadbase + ): + if cp.position.distance_to_point(ground_spawn) > trigger_radius: + trigger_radius = cp.position.distance_to_point(ground_spawn) + trigger_radius += TRIGGER_RADIUS_PRETENSE_HELI_BUFFER else: - trigger_radius = TRIGGER_RADIUS_CAPTURE + if cp.dcs_airport is not None and ( + isinstance(cp.dcs_airport, Damascus) + or isinstance(cp.dcs_airport, Khalkhalah) + or isinstance(cp.dcs_airport, Krasnodar_Pashkovsky) + ): + trigger_radius = int(TRIGGER_RADIUS_CAPTURE * 1.8) + else: + trigger_radius = TRIGGER_RADIUS_CAPTURE + cp_name = "".join( + [i for i in cp.name if i.isalnum() or i.isspace() or i == "-"] + ) if not isinstance(cp, OffMapSpawn): zone_color = {1: 0.0, 2: 0.0, 3: 0.0, 4: 0.15} self.mission.triggers.add_triggerzone( cp.position, radius=trigger_radius, hidden=False, - name=cp.name, + name=cp_name, color=zone_color, ) - cp_name_trimmed = "".join([i for i in cp.name.lower() if i.isalnum()]) + cp_name_trimmed = "".join([i for i in cp.name.lower() if i.isalpha()]) tgo_num = 0 for tgo in cp.ground_objects: if cp.is_fleet or tgo.sea_object: @@ -285,7 +311,7 @@ class PretenseTriggerGenerator: if cp_airport is None: continue cp_name_trimmed = "".join( - [i for i in cp_airport.name.lower() if i.isalnum()] + [i for i in cp_airport.name.lower() if i.isalpha()] ) zone_color = {1: 0.0, 2: 1.0, 3: 0.5, 4: 0.15} if cp_airport is None: