feat(intercept): add random delay to enemy intercept

This commit is contained in:
Wrycu 2019-06-25 22:21:12 -07:00
parent 49de53f1c9
commit 72d3863f8a
No known key found for this signature in database
GPG Key ID: BDB10F9DDF6AF8D0

View File

@ -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"