mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
feat(intercept): add random delay to enemy intercept
This commit is contained in:
parent
49de53f1c9
commit
72d3863f8a
@ -42,29 +42,34 @@ class TriggersGenerator:
|
|||||||
self.game = game
|
self.game = game
|
||||||
|
|
||||||
def _gen_activation_trigger(self, radius: int, player_cp: ControlPoint, player_coalition: str, enemy_coalition: str):
|
def _gen_activation_trigger(self, radius: int, player_cp: ControlPoint, player_coalition: str, enemy_coalition: str):
|
||||||
|
conflict_distance = player_cp.position.distance_to_point(self.conflict.position)
|
||||||
|
minimum_radius = max(conflict_distance - TRIGGER_MIN_DISTANCE_FROM_START, TRIGGER_RADIUS_MINIMUM)
|
||||||
|
if minimum_radius < 0:
|
||||||
|
minimum_radius = 0
|
||||||
|
radius = min(minimum_radius, radius)
|
||||||
|
activation_trigger_zone = self.mission.triggers.add_triggerzone(
|
||||||
|
self.conflict.position,
|
||||||
|
radius,
|
||||||
|
name="Activation zone",
|
||||||
|
)
|
||||||
|
activation_trigger = TriggerOnce(Event.NoEvent, "Activation trigger")
|
||||||
|
activation_trigger.add_condition(PartOfCoalitionInZone(player_coalition, activation_trigger_zone.id))
|
||||||
|
activation_trigger.add_condition(FlagIsTrue())
|
||||||
activate_by_trigger = []
|
activate_by_trigger = []
|
||||||
|
flag_id = 2
|
||||||
for coalition_name, coalition in self.mission.coalition.items():
|
for coalition_name, coalition in self.mission.coalition.items():
|
||||||
for country in coalition.countries.values():
|
for country in coalition.countries.values():
|
||||||
if coalition_name == enemy_coalition:
|
if coalition_name == enemy_coalition:
|
||||||
for plane_group in country.plane_group + country.helicopter_group:
|
for plane_group in country.plane_group + country.helicopter_group:
|
||||||
plane_group.late_activation = True
|
plane_group.late_activation = True
|
||||||
activate_by_trigger.append(plane_group)
|
#activate_by_trigger.append(plane_group)
|
||||||
|
self.delayed_trigger(plane_group, flag_id)
|
||||||
|
flag_id += 1
|
||||||
|
|
||||||
for vehicle_group in country.vehicle_group:
|
for vehicle_group in country.vehicle_group:
|
||||||
vehicle_group.late_activation = True
|
vehicle_group.late_activation = True
|
||||||
activate_by_trigger.append(vehicle_group)
|
activate_by_trigger.append(vehicle_group)
|
||||||
|
|
||||||
conflict_distance = player_cp.position.distance_to_point(self.conflict.position)
|
|
||||||
minimum_radius = max(conflict_distance - TRIGGER_MIN_DISTANCE_FROM_START, TRIGGER_RADIUS_MINIMUM)
|
|
||||||
if minimum_radius < 0:
|
|
||||||
minimum_radius = 0
|
|
||||||
|
|
||||||
radius = min(minimum_radius, radius)
|
|
||||||
|
|
||||||
activation_trigger_zone = self.mission.triggers.add_triggerzone(self.conflict.position, radius, name="Activation zone")
|
|
||||||
activation_trigger = TriggerOnce(Event.NoEvent, "Activation trigger")
|
|
||||||
activation_trigger.add_condition(PartOfCoalitionInZone(player_coalition, activation_trigger_zone.id))
|
|
||||||
activation_trigger.add_condition(FlagIsTrue())
|
|
||||||
for group in activate_by_trigger:
|
for group in activate_by_trigger:
|
||||||
activation_trigger.add_action(ActivateGroup(group.id))
|
activation_trigger.add_action(ActivateGroup(group.id))
|
||||||
|
|
||||||
@ -143,6 +148,22 @@ class TriggersGenerator:
|
|||||||
for vehicle_group in country.vehicle_group:
|
for vehicle_group in country.vehicle_group:
|
||||||
vehicle_group.set_skill(Skill(skill_level[1]))
|
vehicle_group.set_skill(Skill(skill_level[1]))
|
||||||
|
|
||||||
|
def delayed_trigger(self, group, flag_id):
|
||||||
|
trigger_one = TriggerOnce(Event.NoEvent, "Activation trigger")
|
||||||
|
trigger_one.add_action(SetFlagValue(flag_id, random.randint(0, 1200)))
|
||||||
|
|
||||||
|
trigger_two = TriggerCondition()
|
||||||
|
trigger_two.add_condition(TimeSinceFlag(flag_id, seconds=1))
|
||||||
|
trigger_two.add_action(DecreaseFlag(flag_id, 1))
|
||||||
|
|
||||||
|
trigger_three = TriggerOnce()
|
||||||
|
trigger_three.add_condition(FlagEquals(flag_id, 1))
|
||||||
|
trigger_three.add_action(ActivateGroup(group.id))
|
||||||
|
|
||||||
|
self.mission.triggerrules.triggers.append(trigger_one)
|
||||||
|
self.mission.triggerrules.triggers.append(trigger_two)
|
||||||
|
self.mission.triggerrules.triggers.append(trigger_three)
|
||||||
|
|
||||||
def generate(self, player_cp: ControlPoint, is_quick: bool, activation_trigger_radius: int, awacs_enabled: bool):
|
def generate(self, player_cp: ControlPoint, is_quick: bool, activation_trigger_radius: int, awacs_enabled: bool):
|
||||||
player_coalition = self.game.player == "USA" and "blue" or "red"
|
player_coalition = self.game.player == "USA" and "blue" or "red"
|
||||||
enemy_coalition = player_coalition == "blue" and "red" or "blue"
|
enemy_coalition = player_coalition == "blue" and "red" or "blue"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user