dcs.task module

This module holds all Tasks that are possible to specifiy in dcs.

There are 2 type of tasks, a MainTask and a Task action.
  • MainTasks are the flight groups main objective like CAS, CAP, SEAD, ...
  • Task actions on the otherhand are specific tasks within a MainTask, these cover things like AttackGroup, Orbit, Follow, Escort, ...

Also options and commands are task actions.

class dcs.task.Modulation

Bases: enum.Enum

Enum for VHF frequency bands

AM = None

AM frequency band

FM = None

FM frequency band

class dcs.task.Task(_id)

Bases: object

Base class for task actions.

classmethod create_from_dict(d)
dict()
class dcs.task.ControlledTask(task: dcs.task.Task=None)

Bases: dcs.task.Task

A ControlledTask is a task action with start and stop conditions.

ControlledTask is a wrapper around a normal task action that has special methods to add start/stop conditions.

Parameters:task – to wrap
Id = 'ControlledTask'
start_after_time(time: int)

Start the wrapped task after time seconds.

Parameters:time – start after x seconds.
start_if_user_flag(user_flag, value: bool)

Start the wrapped task if user_flag has value.

Parameters:
  • user_flag – id of the userflag
  • value – bool value of the flag
start_probability(probability: int)

Chance that the wrapped task will actually start.

Parameters:probability – start chance in %
start_if_lua_predicate(lua_predicate: str)

Start wrapped task if lua condition is true.

Parameters:lua_predicate – lua condition as string
stop_after_time(time: int)

Stop the wrapped task after time seconds.

Parameters:time – start after x seconds.
stop_if_user_flag(user_flag, value: bool)

Stop the wrapped task if user_flag has value.

Parameters:
  • user_flag – id of the userflag
  • value – bool value of the flag
stop_if_lua_predicate(lua_predicate: str)

Stop wrapped task if lua condition is true.

Parameters:lua_predicate – lua condition as string
stop_after_duration(duration: int)

Stop task after duration seconds.

Parameters:duration – in seconds
class dcs.task.WeaponType

Bases: enum.Enum

class dcs.task.TargetType

Bases: type

id = None
class dcs.task.Targets

Bases: object

class All

Bases: object

id = 'All'
class Air

Bases: object

id = 'Air'
class Planes

Bases: object

id = 'Planes'
class Fighters

Bases: object

id = 'Fighters'
class Targets.All.Air.Planes.Bombers

Bases: object

id = 'Bombers'
class Targets.All.Air.Helicopters

Bases: object

id = 'Helicopters'
class Targets.All.GroundUnits

Bases: object

id = 'Ground Units'
class Infantry

Bases: object

id = 'Infantry'
class Targets.All.GroundUnits.Fortifications

Bases: object

id = 'Fortifications'
class Targets.All.GroundUnits.GroundVehicles

Bases: object

id = 'Ground vehicles'
class ArmoredVehicles

Bases: object

id = 'Armored vehicles'
class Tanks

Bases: object

id = 'Tanks'
class Targets.All.GroundUnits.GroundVehicles.ArmoredVehicles.IFV

Bases: object

id = 'IFV'
class Targets.All.GroundUnits.GroundVehicles.ArmoredVehicles.APC

Bases: object

id = 'APC'
class Targets.All.GroundUnits.GroundVehicles.Artillery

Bases: object

id = 'Artillery'
class Targets.All.GroundUnits.GroundVehicles.UnarmedVehicles

Bases: object

id = 'Unarmed vehicles'
class Targets.All.GroundUnits.AirDefence

Bases: object

id = 'Air Defence'
class AAA

Bases: object

id = 'AAA'
class SAMRelated

Bases: object

id = 'SAM related'
class SRSAM

Bases: object

id = 'SR SAM'
class Targets.All.GroundUnits.AirDefence.AAA.SAMRelated.MRSAM

Bases: object

id = 'MR SAM'
class Targets.All.GroundUnits.AirDefence.AAA.SAMRelated.LRSAM

Bases: object

id = 'LR SAM'
class Targets.All.Naval

Bases: object

id = 'Naval'
class Ships

Bases: object

id = 'Ships'
class ArmedShips

Bases: object

id = 'Armed ships'
class HeavyArmedShips

Bases: object

id = 'Heavy armed ships'
class AircraftCarriers

Bases: object

id = 'Aircraft Carriers'
class Targets.All.Naval.Ships.ArmedShips.HeavyArmedShips.Cruisers

Bases: object

id = 'Cruisers'
class Targets.All.Naval.Ships.ArmedShips.HeavyArmedShips.Destroyers

Bases: object

id = 'Destroyers'
class Targets.All.Naval.Ships.ArmedShips.HeavyArmedShips.Frigates

Bases: object

id = 'Frigates'
class Targets.All.Naval.Ships.ArmedShips.HeavyArmedShips.Corvettes

Bases: object

id = 'Corvettes'
class Targets.All.Naval.Ships.ArmedShips.LightArmedShips

Bases: object

id = 'Light armed ships'
class Targets.All.Naval.Ships.UnarmedShips

Bases: object

id = 'Unarmed ships'
class Targets.All.Naval.Submarines

Bases: object

id = 'Submarines'
class dcs.task.NoTask

Bases: dcs.task.Task

Id = 'NoTask'
class dcs.task.AttackGroup(group_id=0, weapon_type: dcs.task.WeaponType=<WeaponType.Auto: 1073741822>)

Bases: dcs.task.Task

Attack group task action

Parameters:
  • group_id – group id to attack
  • weapon_typeWeaponType to use for the attack
Id = 'AttackGroup'
class dcs.task.AttackUnit(unit_id=0, attack_limit: typing.Union=None, weapon_type: dcs.task.WeaponType=<WeaponType.Auto: 1073741822>, group_attack=False)

Bases: dcs.task.Task

Attack unit task action

Parameters:
  • unit_id – unit id to attack
  • attack_limit – how much attack runs
  • weapon_typeWeaponType to use for the attack
  • group_attack – indicate if the unit must be attacked by all aircrafts in the group.
Id = 'AttackUnit'
class dcs.task.AttackMapObject(position: dcs.mapping.Point=Point(0, 0), attack_limit: typing.Union=None, weapon_type: dcs.task.WeaponType=<WeaponType.Auto: 1073741822>, group_attack=False)

Bases: dcs.task.Task

Id = 'AttackMapObject'
class dcs.task.AntishipStrikeTaskAction

Bases: dcs.task.Task

Id = 'EngageTargets'
Key = 'AntiShip'
dict()
class dcs.task.CASTaskAction

Bases: dcs.task.Task

Id = 'EngageTargets'
Key = 'CAS'
dict()
class dcs.task.SEADTaskAction

Bases: dcs.task.Task

Id = 'EngageTargets'
Key = 'SEAD'
dict()
class dcs.task.CAPTaskAction

Bases: dcs.task.Task

Id = 'EngageTargets'
Key = 'CAP'
dict()
class dcs.task.FighterSweepTaskAction

Bases: dcs.task.Task

Id = 'EngageTargets'
Key = 'FighterSweep'
dict()
class dcs.task.EscortTaskAction(group_id=None, engagement_max_dist=60000, lastwpt=None, targets: typing.List=None, position: typing.Dict=None)

Bases: dcs.task.Task

Id = 'Escort'
class dcs.task.Expend

Bases: enum.Enum

class dcs.task.Bombing(position: dcs.mapping.Point=Point(0, 0), weapon_type: dcs.task.WeaponType=<WeaponType.Auto: 1073741822>, expend: dcs.task.Expend=<Expend.Auto: 'Auto'>, attack_qty=1, group_attack=False, direction: typing.Union=None, altitude: typing.Union=None)

Bases: dcs.task.Task

Id = 'Bombing'
class dcs.task.BombingRunway(airport_id: int=0, weapon_type: dcs.task.WeaponType=<WeaponType.Auto: 1073741822>, expend: dcs.task.Expend=<Expend.Auto: 'Auto'>, attack_qty=1, group_attack=False, direction: typing.Union=None, altitude: typing.Union=None)

Bases: dcs.task.Task

Id = 'BombingRunway'
class dcs.task.EngageTargets(max_distance=None, targets: typing.List=None)

Bases: dcs.task.Task

Id = 'EngageTargets'
class dcs.task.EngageTargetsInZone(position: dcs.mapping.Point=Point(0, 0), radius=5000, targets: typing.List=None)

Bases: dcs.task.Task

Id = 'EngageTargetsInZone'
class dcs.task.EngageGroup(group_id=0, visible=False)

Bases: dcs.task.Task

Id = 'EngageGroup'
class dcs.task.EngageUnit(unit_id=0, visible=False)

Bases: dcs.task.Task

Id = 'EngageUnit'
class dcs.task.FireAtPoint(position: dcs.mapping.Point=Point(0, 0), rounds=None, radius=0)

Bases: dcs.task.Task

Id = 'FireAtPoint'
class dcs.task.Hold

Bases: dcs.task.Task

Unit will hold current position

Id = 'Hold'
class dcs.task.AWACSTaskAction

Bases: dcs.task.Task

Id = 'AWACS'
class dcs.task.RefuelingTaskAction

Bases: dcs.task.Task

Assigns the aircraft group to refuel at the nearest tanker aircraft.

Id = 'Refueling'
class dcs.task.Tanker

Bases: dcs.task.Task

Assigns the aircraft to act as an Airborne tanker.

Id = 'Tanker'
class dcs.task.OrbitAction(altitude=4000, speed=600, pattern: dcs.task.OrbitPattern=<OrbitPattern.RaceTrack: 'Race-Track'>)

Bases: dcs.task.Task

Id = 'Orbit'
class OrbitPattern

Bases: enum.Enum

class dcs.task.Follow(groupid=None, position: dcs.mapping.Point=Point(-200, 0), altitude_difference=-200, last_wpt=None)

Bases: dcs.task.Task

Id = 'Follow'
class dcs.task.Aerobatics

Bases: dcs.task.Task

Id = 'Aerobatics'
class dcs.task.Designation

Bases: enum.Enum

class dcs.task.FAC(callsign: int=1, designation: dcs.task.Designation=<Designation.Auto: 'Auto'>, frequency: int=30, modulation: dcs.task.Modulation=<Modulation.FM: 1>, number: int=1)

Bases: dcs.task.Task

Id = 'FAC'
class dcs.task.FACEngageGroup(group_id: int=0, visible=False, weapon_type: dcs.task.WeaponType=<WeaponType.Auto: 1073741822>, priority: int=0, callsign: int=1, designation: dcs.task.Designation=<Designation.Auto: 'Auto'>, frequency: int=30, modulation: dcs.task.Modulation=<Modulation.FM: 1>, datalink=True, number: int=1)

Bases: dcs.task.Task

Id = 'FAC_EngageGroup'
class dcs.task.Land(position: dcs.mapping.Point=Point(0, 0), duration: int=None)

Bases: dcs.task.Task

Helicopter landing task.

If added to a helicopter group, the group will land at the given coordinates for the given duration.

Parameters:
  • positiondcs.mapping.Point where to land
  • duration – how long the helicopter should stay on ground in seconds.
Id = 'Land'
class dcs.task.Embarking(position: dcs.mapping.Point=Point(0, 0), groupids: typing.List=None, distribution: typing.Dict=None, duration: int=None)

Bases: dcs.task.Task

Pickup task for helicopters.

Helicopter group will land at the given coordinates and will pickup the given groups.

Parameters:
  • positiondcs.mapping.Point where to land and pickup
  • groupids – list of groups to pickup
  • distribution – dictionary with heli unit to groups to pickup mapping {heliunit: [grp1, grp2], ..}
  • duration – how long the helicopter should stay on ground and wait in seconds.
Id = 'Embarking'
class dcs.task.EmbarkToTransport(position: dcs.mapping.Point=Point(0, 0), zone_radius=200, concrete_unitid=None)

Bases: dcs.task.Task

Task for ground units that will get picked up by a helicopter

Parameters:
  • positiondcs.mapping.Point where to wait to get picked up.
  • zone_radius – radius around the point where the group will embark.
  • concrete_unitid – if specified the group will embark to exaclty this unit.
Id = 'EmbarkToTransport'
class dcs.task.DisembarkFromTransport(position: dcs.mapping.Point=Point(0, 0), zone_radius=200)

Bases: dcs.task.Task

Task for ground units that will disembark a transport helicopter

Parameters:
  • positiondcs.mapping.Point where the group will disembark
  • zone_radius – radius around the point where the group will disembark.
Id = 'DisembarkFromTransport'
class dcs.task.CargoTransportation(groupid=None, zoneid=None)

Bases: dcs.task.Task

Task for Cargo transportation.

Parameters:
  • groupid – cargo group id
  • zoneid – zone id to transport to??
Id = 'CargoTransportation'
class dcs.task.WrappedAction

Bases: dcs.task.Task

Id = 'WrappedAction'
class dcs.task.EPLRS(group_id=1)

Bases: dcs.task.WrappedAction

Key = 'EPLRS'
eplrs
class dcs.task.ActivateBeaconCommand(channel=10, modechannel='X', callsign='TKR', bearing=True)

Bases: dcs.task.WrappedAction

Key = 'ActivateBeacon'
static calc_tacan_frequency(mode_channel, channel, aa=True)
class dcs.task.RunScript(script: str='')

Bases: dcs.task.WrappedAction

Runs a given script string

Parameters:script – to be executed
Key = 'Script'
class dcs.task.RunScriptFile(resourcekey: str='')

Bases: dcs.task.WrappedAction

Runs a script attached to the mission

Parameters:resourcekey – resource key to the script file, see dcs.mission.MapResource
Key = 'ScriptFile'
class dcs.task.TransmitMessage(soundfile_reskey: typing.Union=None, subtitle_resstring: typing.Union=None, loop=False, subtitle_duration=5)

Bases: dcs.task.WrappedAction

Transmits a given sound file over the current radio channel.

Parameters:
  • soundfile_reskey – resource key to the sound file to transmit, see dcs.mission.MapResource
  • subtitle_resstring – string resource key to subtitle displayed, see dcs.mission.Mission.translation
  • loop – True or False if the sound file should be looped.
  • subtitle_duration – how long the subtitle should be displayed in seconds.
Key = 'TransmitMessage'
class dcs.task.StopTransmission

Bases: dcs.task.WrappedAction

Stops any dcs.task.TransmitMessage task currently ongoing.

Key = 'StopTransmission'
class dcs.task.SetFrequencyCommand(frequency=133, modulation: dcs.task.Modulation=<Modulation.AM: 0>)

Bases: dcs.task.WrappedAction

Set the groups radio frequency.

Parameters:
Key = 'SetFrequency'
class dcs.task.SwitchWaypoint(from_waypoint=1, to_waypoint=2)

Bases: dcs.task.WrappedAction

Switch to a different waypoint.

Parameters:
  • from_waypoint – from which waypoint to switch.??
  • to_waypoint – new current waypoint
Key = 'SwitchWaypoint'
class dcs.task.SetInvisibleCommand(value=True)

Bases: dcs.task.WrappedAction

Key = 'SetInvisible'
class dcs.task.SetImmortalCommand(value=True)

Bases: dcs.task.WrappedAction

Key = 'SetImmortal'
class dcs.task.MainTask

Bases: object

name = None
sub_tasks = []
perform_task = []
map = {'Pinpoint Strike': <class 'dcs.task.PinpointStrike'>, 'Reconnaissance': <class 'dcs.task.Reconnaissance'>, 'Escort': <class 'dcs.task.Escort'>, 'Refueling': <class 'dcs.task.Refueling'>, 'Nothing': <class 'dcs.task.Nothing'>, 'Antiship Strike': <class 'dcs.task.AntishipStrike'>, 'SEAD': <class 'dcs.task.SEAD'>, 'AWACS': <class 'dcs.task.AWACS'>, 'Transport': <class 'dcs.task.Transport'>, 'CAP': <class 'dcs.task.CAP'>, 'CAS': <class 'dcs.task.CAS'>, 'Intercept': <class 'dcs.task.Intercept'>, 'Ground Attack': <class 'dcs.task.RunwayAttack'>, 'AFAC': <class 'dcs.task.AFAC'>, 'Fighter Sweep': <class 'dcs.task.FighterSweep'>}
class dcs.task.Nothing

Bases: dcs.task.MainTask

id = 15
name = 'Nothing'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.Aerobatics'>]
class dcs.task.AFAC

Bases: dcs.task.MainTask

id = 16
name = 'AFAC'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.AttackGroup'>, <class 'dcs.task.AttackUnit'>, <class 'dcs.task.Bombing'>, <class 'dcs.task.AttackMapObject'>]
class dcs.task.AWACS

Bases: dcs.task.MainTask

id = 14
name = 'AWACS'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.RefuelingTaskAction'>]
perform_task = [<class 'dcs.task.AWACSTaskAction'>]
class dcs.task.AntishipStrike

Bases: dcs.task.MainTask

id = 30
name = 'Antiship Strike'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.AttackGroup'>, <class 'dcs.task.AttackUnit'>]
perform_task = [<class 'dcs.task.AntishipStrikeTaskAction'>]
class dcs.task.CAS

Bases: dcs.task.MainTask

id = 31
name = 'CAS'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.AttackGroup'>, <class 'dcs.task.AttackUnit'>, <class 'dcs.task.Aerobatics'>, <class 'dcs.task.RefuelingTaskAction'>]
perform_task = [<class 'dcs.task.CASTaskAction'>]
class EnrouteTasks

Bases: object

class EngageGroup(group_id=0, visible=False)

Bases: dcs.task.Task

Id = 'EngageGroup'
class CAS.EnrouteTasks.EngageTargetsInZone(position: dcs.mapping.Point=Point(0, 0), radius=5000, targets: typing.List=None)

Bases: dcs.task.Task

Id = 'EngageTargetsInZone'
class CAS.EnrouteTasks.EngageUnit(unit_id=0, visible=False)

Bases: dcs.task.Task

Id = 'EngageUnit'
class dcs.task.CAP

Bases: dcs.task.MainTask

id = 11
name = 'CAP'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.Aerobatics'>]
perform_task = [<class 'dcs.task.CAPTaskAction'>]
class EnrouteTasks

Bases: object

class EngageTargets(max_distance=None, targets: typing.List=None)

Bases: dcs.task.Task

Id = 'EngageTargets'
class CAP.EnrouteTasks.EngageTargetsInZone(position: dcs.mapping.Point=Point(0, 0), radius=5000, targets: typing.List=None)

Bases: dcs.task.Task

Id = 'EngageTargetsInZone'
class CAP.EnrouteTasks.EngageGroup(group_id=0, visible=False)

Bases: dcs.task.Task

Id = 'EngageGroup'
class CAP.EnrouteTasks.EngageUnit(unit_id=0, visible=False)

Bases: dcs.task.Task

Id = 'EngageUnit'
class dcs.task.Escort

Bases: dcs.task.MainTask

id = 18
name = 'Escort'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.EscortTaskAction'>]
perform_task = [<class 'dcs.task.EscortTaskAction'>]
class dcs.task.FighterSweep

Bases: dcs.task.MainTask

id = 19
name = 'Fighter Sweep'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.Aerobatics'>]
perform_task = [<class 'dcs.task.FighterSweepTaskAction'>]
class dcs.task.GroundAttack

Bases: dcs.task.MainTask

id = 32
name = 'Ground Attack'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.Bombing'>, <class 'dcs.task.AttackMapObject'>, <class 'dcs.task.Aerobatics'>]
class dcs.task.Intercept

Bases: dcs.task.MainTask

id = 10
name = 'Intercept'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.AttackGroup'>, <class 'dcs.task.AttackUnit'>, <class 'dcs.task.Aerobatics'>]
class dcs.task.PinpointStrike

Bases: dcs.task.MainTask

id = 33
name = 'Pinpoint Strike'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.Bombing'>, <class 'dcs.task.AttackMapObject'>]
class dcs.task.Reconnaissance

Bases: dcs.task.MainTask

id = 17
name = 'Reconnaissance'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.Aerobatics'>]
perform_task = []
class dcs.task.Refueling

Bases: dcs.task.MainTask

id = 13
name = 'Refueling'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>]
perform_task = [<class 'dcs.task.Tanker'>]
class dcs.task.RunwayAttack

Bases: dcs.task.MainTask

id = 34
name = 'Ground Attack'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.Bombing'>, <class 'dcs.task.BombingRunway'>, <class 'dcs.task.AttackMapObject'>]
perform_task = []
class dcs.task.SEAD

Bases: dcs.task.MainTask

id = 29
name = 'SEAD'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.AttackGroup'>, <class 'dcs.task.AttackUnit'>, <class 'dcs.task.EscortTaskAction'>]
perform_task = [<class 'dcs.task.SEADTaskAction'>]
class dcs.task.Transport

Bases: dcs.task.MainTask

id = 35
name = 'Transport'
sub_tasks = [<class 'dcs.task.OrbitAction'>, <class 'dcs.task.Follow'>, <class 'dcs.task.Aerobatics'>]
perform_task = []
class dcs.task.Option(value=None)

Bases: dcs.task.Task

Id = 'WrappedAction'
Key = None
class dcs.task.OptROE(value=0)

Bases: dcs.task.Option

Sets the groups rules of engagement. Ultimately defines whether or not the AI group is allowed to attack. This option can override all other tasking. With the 1.5 patch two of the values have different names in the mission editor. However the behavior is still exactly the same as before, its just labeled slightly different. The scripting engine still uses the previous values.

Key = 0
class Values

Bases: object

WeaponFree = 0

AI will engage any enemy group it detects. Target prioritization is based based on the threat of the target.

OpenFireWeaponFree = 1

AI will engage any enemy group it detects, but will prioritize targets specified in the groups tasking.

OpenFire = 2

AI will engage only targets specified in its taskings.

ReturnFire = 3

AI will only engage threats that shoot first.

WeaponHold = 4

AI will hold fire under all circumstances.

class dcs.task.OptReactOnThreat(value=0)

Bases: dcs.task.Option

Defines the allowable action for an airborne group to take in response to a threat. This option can have an effect on other tasking.

Key = 1
class Values

Bases: object

NoReaction = 0

No defensive actions will take place to counter threats

PassiveDefense = 1

AI will use jammers and other countermeasures in an attempt to defeat the threat. AI will not attempt a maneuver to defeat a threat.

EvadeFire = 2

AI will react by performing defensive maneuvers against incoming threats, AI will also use passive defense.

ByPassAndEscape = 3

AI will attempt to avoid enemy threat zones all together. This includes attempting to fly above or around threats.

AllowAbortMission = 4

If a threat is deemed severe enough the AI will abort its mission and return to base.

class dcs.task.OptDisparseUnderFire(value=None)

Bases: dcs.task.Option

Key = 8