mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Using late activation trigger. Planned flight will not spawn if their home base has been captured or is contested.
This commit is contained in:
parent
08c2972cf9
commit
5adb25a695
@ -1,8 +1,9 @@
|
|||||||
import logging
|
from dcs.action import ActivateGroup
|
||||||
|
from dcs.condition import TimeAfter, CoalitionHasAirdrome
|
||||||
from dcs.helicopters import UH_1H
|
from dcs.helicopters import UH_1H
|
||||||
|
from dcs.terrain.terrain import NoParkingSlotError
|
||||||
|
from dcs.triggers import TriggerOnce, Event
|
||||||
|
|
||||||
from game import db
|
|
||||||
from game.settings import Settings
|
from game.settings import Settings
|
||||||
from gen.flights.ai_flight_planner import FlightPlanner
|
from gen.flights.ai_flight_planner import FlightPlanner
|
||||||
from gen.flights.flight import Flight, FlightType
|
from gen.flights.flight import Flight, FlightType
|
||||||
@ -10,12 +11,6 @@ from .conflictgen import *
|
|||||||
from .naming import *
|
from .naming import *
|
||||||
from .triggergen import TRIGGER_WAYPOINT_OFFSET
|
from .triggergen import TRIGGER_WAYPOINT_OFFSET
|
||||||
|
|
||||||
from dcs.mission import *
|
|
||||||
from dcs.unitgroup import *
|
|
||||||
from dcs.unittype import *
|
|
||||||
from dcs.task import *
|
|
||||||
from dcs.terrain.terrain import NoParkingSlotError, RunwayOccupiedError
|
|
||||||
|
|
||||||
SPREAD_DISTANCE_FACTOR = 1, 2
|
SPREAD_DISTANCE_FACTOR = 1, 2
|
||||||
ESCORT_ENGAGEMENT_MAX_DIST = 100000
|
ESCORT_ENGAGEMENT_MAX_DIST = 100000
|
||||||
WORKAROUND_WAYP_DIST = 1000
|
WORKAROUND_WAYP_DIST = 1000
|
||||||
@ -312,26 +307,31 @@ class AircraftConflictGenerator:
|
|||||||
group = self.generate_planned_flight(cp, country, flight)
|
group = self.generate_planned_flight(cp, country, flight)
|
||||||
self.setup_group_as_intercept_flight(group, flight)
|
self.setup_group_as_intercept_flight(group, flight)
|
||||||
self._setup_custom_payload(flight, group)
|
self._setup_custom_payload(flight, group)
|
||||||
|
self.setup_group_activation_trigger(flight, group)
|
||||||
|
|
||||||
for flight in flight_planner.cap_flights:
|
for flight in flight_planner.cap_flights:
|
||||||
group = self.generate_planned_flight(cp, country, flight)
|
group = self.generate_planned_flight(cp, country, flight)
|
||||||
self.setup_group_as_cap_flight(group, flight)
|
self.setup_group_as_cap_flight(group, flight)
|
||||||
self._setup_custom_payload(flight, group)
|
self._setup_custom_payload(flight, group)
|
||||||
|
self.setup_group_activation_trigger(flight, group)
|
||||||
|
|
||||||
for flight in flight_planner.cas_flights:
|
for flight in flight_planner.cas_flights:
|
||||||
group = self.generate_planned_flight(cp, country, flight)
|
group = self.generate_planned_flight(cp, country, flight)
|
||||||
self.setup_group_as_cas_flight(group, flight)
|
self.setup_group_as_cas_flight(group, flight)
|
||||||
self._setup_custom_payload(flight, group)
|
self._setup_custom_payload(flight, group)
|
||||||
|
self.setup_group_activation_trigger(flight, group)
|
||||||
|
|
||||||
for flight in flight_planner.sead_flights:
|
for flight in flight_planner.sead_flights:
|
||||||
group = self.generate_planned_flight(cp, country, flight)
|
group = self.generate_planned_flight(cp, country, flight)
|
||||||
self.setup_group_as_sead_flight(group, flight)
|
self.setup_group_as_sead_flight(group, flight)
|
||||||
self._setup_custom_payload(flight, group)
|
self._setup_custom_payload(flight, group)
|
||||||
|
self.setup_group_activation_trigger(flight, group)
|
||||||
|
|
||||||
for flight in flight_planner.strike_flights:
|
for flight in flight_planner.strike_flights:
|
||||||
group = self.generate_planned_flight(cp, country, flight)
|
group = self.generate_planned_flight(cp, country, flight)
|
||||||
self.setup_group_as_strike_flight(group, flight)
|
self.setup_group_as_strike_flight(group, flight)
|
||||||
self._setup_custom_payload(flight, group)
|
self._setup_custom_payload(flight, group)
|
||||||
|
self.setup_group_activation_trigger(flight, group)
|
||||||
|
|
||||||
for flight in flight_planner.custom_flights:
|
for flight in flight_planner.custom_flights:
|
||||||
group = self.generate_planned_flight(cp, country, flight)
|
group = self.generate_planned_flight(cp, country, flight)
|
||||||
@ -350,6 +350,23 @@ class AircraftConflictGenerator:
|
|||||||
else:
|
else:
|
||||||
self.setup_group_as_cap_flight(group, flight)
|
self.setup_group_as_cap_flight(group, flight)
|
||||||
self._setup_custom_payload(flight, group)
|
self._setup_custom_payload(flight, group)
|
||||||
|
self.setup_group_activation_trigger(flight, group)
|
||||||
|
|
||||||
|
def setup_group_activation_trigger(self, flight, group):
|
||||||
|
if flight.scheduled_in > 0:
|
||||||
|
group.late_activation = True
|
||||||
|
activation_trigger = TriggerOnce(Event.NoEvent, "LiberationActivationTriggerForGroup" + str(group.id))
|
||||||
|
activation_trigger.add_condition(TimeAfter(seconds=flight.scheduled_in*60))
|
||||||
|
|
||||||
|
if(flight.from_cp.cptype == ControlPointType.AIRBASE):
|
||||||
|
if not flight.from_cp.captured:
|
||||||
|
activation_trigger.add_condition(CoalitionHasAirdrome(1, flight.from_cp.id))
|
||||||
|
else:
|
||||||
|
activation_trigger.add_condition(CoalitionHasAirdrome(2, flight.from_cp.id))
|
||||||
|
|
||||||
|
|
||||||
|
activation_trigger.add_action(ActivateGroup(group.id))
|
||||||
|
self.m.triggerrules.triggers.append(activation_trigger)
|
||||||
|
|
||||||
def generate_planned_flight(self, cp, country, flight:Flight):
|
def generate_planned_flight(self, cp, country, flight:Flight):
|
||||||
try:
|
try:
|
||||||
@ -397,7 +414,6 @@ class AircraftConflictGenerator:
|
|||||||
client_count=0,
|
client_count=0,
|
||||||
at=cp.position)
|
at=cp.position)
|
||||||
group.points[0].alt = 1500
|
group.points[0].alt = 1500
|
||||||
group.points[0].ETA = flight.scheduled_in * 60
|
|
||||||
|
|
||||||
return group
|
return group
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user