Module Wrapper.Storage
+Wrapper - Warehouse storage of DCS airbases.
+ + + +Main Features:
+ +-
+
- Convenient access to DCS API functions +
+ +
Example Missions:
+ +Demo missions can be found on github.
+ ++ +
Author: funkyfranky
+ ++ +
Global(s)
Global STORAGE |
+
+ The capitalist cannot store labour-power in warehouses after he has bought it, as he may do with the raw material. -- Karl Marx + ++ + The STORAGE Concept+ +The STORAGE class offers an easy-to-use wrapper interface to all DCS API functions of DCS warehouses. + |
+
The capitalist cannot store labour-power in warehouses after he has bought it, as he may do with the raw material. -- Karl Marx
+ ++ +
The STORAGE Concept
+ +The STORAGE class offers an easy-to-use wrapper interface to all DCS API functions of DCS warehouses.
+ + +We named the class STORAGE, because the name WAREHOUSE is already taken by another MOOSE class.
+ +This class allows you to add and remove items to a DCS warehouse, such as aircraft, liquids, weapons and other equipment.
+ +Constructor
+ +A DCS warehouse is associated with an airbase. Therefore, a STORAGE instance is automatically created, once an airbase is registered and added to the MOOSE database.
You can get the STORAGE object from the
-- Create a STORAGE instance of the Batumi warehouse
+local storage=STORAGE:FindByName("Batumi")
+
+
+An other way to get the STORAGE object is to retrieve it from the AIRBASE function AIRBASE:GetStorage()
-- Get storage instance of Batumi airbase
+local Batumi=AIRBASE:FindByName("Batumi")
+local storage=Batumi:GetStorage()
+
+
+Aircraft, Weapons and Equipment
+ +Adding Items
+ +To add aircraft, weapons and/or othe equipment, you can use the STORAGE.AddItem() function
+ +storage:AddItem("A-10C", 3)
+storage:AddItem("weapons.missiles.AIM_120C", 10)
+
+
+This will add three A-10Cs and ten AIM-120C missiles to the warehouse inventory.
+ +Setting Items
+ +You can also explicitly set, how many items are in the inventory with the STORAGE.SetItem() function.
+ +Removing Items
+ +Items can be removed from the inventory with the STORAGE.RemoveItem() function.
+ +Getting Amount
+ +The number of items currently in the inventory can be obtained with the STORAGE.GetItemAmount() function
+ +local N=storage:GetItemAmount("A-10C")
+env.info(string.format("We currently have %d A-10Cs available", N))
+
+
+Liquids
+ +Liquids can be added and removed by slightly different functions as described below. Currently there are four types of liquids
+ +-
+
- Jet fuel
STORAGE.Liquid.JETFUEL
+ - Aircraft gasoline
STORAGE.Liquid.GASOLINE
+ - MW 50
STORAGE.Liquid.MW50
+ - Diesel
STORAGE.Liquid.DIESEL
+
Adding Liquids
+ +To add a certain type of liquid, you can use the STORAGE.AddItem(Type, Amount) function
+ +storage:AddLiquid(STORAGE.Liquid.JETFUEL, 10000)
+storage:AddLiquid(STORAGE.Liquid.DIESEL, 20000)
+
+
+This will add 10,000 kg of jet fuel and 20,000 kg of diesel to the inventory.
+ +Setting Liquids
+ +You can also explicitly set the amount of liquid with the STORAGE.SetLiquid(Type, Amount) function.
+ +Removing Liquids
+ +Liquids can be removed with STORAGE.RemoveLiquid(Type, Amount) function.
+ +Getting Amount
+ +The current amount of a certain liquid can be obtained with the STORAGE.GetLiquidAmount(Type) function
+ +local N=storage:GetLiquidAmount(STORAGE.Liquid.DIESEL)
+env.info(string.format("We currently have %d kg of Diesel available", N))
+
+
+
+Inventory
+ +The current inventory of the warehouse can be obtained with the STORAGE.GetInventory() function. This returns three tables with the aircraft, liquids and weapons:
+ +local aircraft, liquids, weapons=storage:GetInventory()
+
+UTILS.PrintTableToLog(aircraft)
+UTILS.PrintTableToLog(liquids)
+UTILS.PrintTableToLog(weapons)
+
+
+Weapons Helper Enumerater
+ +The currently available weapon items are available in the ENUMS.Storage.weapons, e.g. ENUMS.Storage.weapons.bombs.Mk_82Y.
Persistence
+ +The contents of the storage can be saved to and read from disk. For this to function, io and lfs need to be desanitized in MissionScripting.lua.
Save once
+ +To save once, e.g. this is sufficient:
+ + -- Filenames created are the Filename given amended by "_Liquids", "_Aircraft" and "_Weapons" followed by a ".csv". Only Storage NOT set to unlimited will be saved.
+ local Path = "C:\\Users\\UserName\\Saved Games\\DCS\\Missions\\"
+ local Filename = "Batumi"
+ storage:SaveToFile(Path,Filename)
+
+
+Autosave
+ + storage:StartAutoSave(Path,Filename,300,true) -- save every 300 secs/5 mins starting in 5 mins, load the existing storage - if any - first if the last parameter is **not** `false`.
+
+
+Stop Autosave
+ + storage:StopAutoSave() -- stop the scheduler.
+
+
+Load back with e.g.
+ + -- Filenames searched for the Filename given amended by "_Liquids", "_Aircraft" and "_Weapons" followed by a ".csv". Only Storage NOT set to unlimited will be loaded.
+ local Path = "C:\\Users\\UserName\\Saved Games\\DCS\\Missions\\"
+ local Filename = "Batumi"
+ storage:LoadFromFile(Path,Filename)
+
+
+
+
+Type(s)
| Fields and Methods inherited from STORAGE | +Description | +
|---|---|
| + |
+ Adds the amount of a given type of aircraft, liquid, weapon currently present the warehouse. + |
+
| + |
+ Adds the passed amount of a given item to the warehouse. + |
+
| + |
+ Adds the passed amount of a given liquid to the warehouse. + |
+
| + |
+ Name of the class. + |
+
| + |
+ Airbases only - Find a STORAGE in the _DATABASE using the name associated airbase. + |
+
| + |
+ Try to find the #STORAGE object of one of the many "H"-Helipads in Syria. + |
+
| + |
+ Gets the amount of a given type of aircraft, liquid, weapon currently present the warehouse. + |
+
| + |
+ Returns a full itemized list of everything currently in a warehouse. + |
+
| + |
+ Gets the amount of a given item currently present the warehouse. + |
+
| + |
+ Gets the amount of a given liquid currently present the warehouse. + |
+
| + |
+ Returns the name of the liquid from its numeric type. + |
+
| + |
+ Returns whether a given type of aircraft, liquid, weapon is set to be limited. + |
+
| + |
+ Returns whether aircraft are limited. + |
+
| + |
+ Returns whether liquids are limited. + |
+
| + |
+ Returns whether weapons and equipment are limited. + |
+
| + |
+ Returns whether a given type of aircraft, liquid, weapon is set to be unlimited. + |
+
| + |
+ Returns whether aircraft are unlimited. + |
+
| + |
+ Returns whether liquids are unlimited. + |
+
| + |
+ Returns whether weapons and equipment are unlimited. + |
+
| + | + + | +
| + | + + | +
| + |
+ Load the contents of a STORAGE from files. + |
+
| + |
+ Create a new STORAGE object from the DCS airbase object. + |
+
| + |
+ Create a new STORAGE object from a Wrapper.DynamicCargo#DYNAMICCARGO object. + |
+
| + |
+ Create a new STORAGE object from an DCS static cargo object. + |
+
| + |
+ Removes the amount of a given type of aircraft, liquid, weapon from the warehouse. + |
+
| + |
+ Removes the amount of the passed item from the warehouse. + |
+
| + |
+ Removes the amount of the given liquid type from the warehouse. + |
+
| + |
+ Save the contents of a STORAGE to files in CSV format. + |
+
| + |
+ The TIMER for autosave. + |
+
| + |
+ Sets the amount of a given type of aircraft, liquid, weapon currently present the warehouse. + |
+
| + |
+ Sets the specified amount of a given item to the warehouse. + |
+
| + |
+ Sets the specified amount of a given liquid to the warehouse. + |
+
| + |
+ Set verbosity level. + |
+
| + |
+ Start a STORAGE autosave process. + |
+
| + |
+ Stop a running STORAGE autosave process. + |
+
| + | + + | +
| + |
+ The DCS airbase object. + |
+
| + |
+ Class id string for output to DCS log file. + |
+
| + |
+ Verbosity level. + |
+
| + |
+ STORAGE class version. + |
+
| + |
+ The DCS warehouse object. + |
+
| Fields and Methods inherited from BASE | +Description | +
|---|---|
| + |
+ The ID number of the class. + |
+
| + |
+ The name of the class. + |
+
| + |
+ The name of the class concatenated with the ID number of the class. + |
+
| + |
+ Clear the state of an object. + |
+
STORAGE:CreateEventBirth(EventTime, Initiator, IniUnitName, place, subplace) |
+
+ Creation of a Birth Event. + |
+
STORAGE:CreateEventCrash(EventTime, Initiator, IniObjectCategory) |
+
+ Creation of a Crash Event. + |
+
STORAGE:CreateEventDead(EventTime, Initiator, IniObjectCategory) |
+
+ Creation of a Dead Event. + |
+
| + |
+ Creation of a S_EVENT_DYNAMIC_CARGO_LOADED event. + |
+
| + |
+ Creation of a S_EVENT_DYNAMIC_CARGO_REMOVED event. + |
+
| + |
+ Creation of a S_EVENT_DYNAMIC_CARGO_UNLOADED event. + |
+
| + |
+ Creation of a S_EVENT_NEW_DYNAMIC_CARGO event. + |
+
| + |
+ Creation of a |
+
| + |
+ Creation of a Remove Unit Event. + |
+
| + |
+ Creation of a Takeoff Event. + |
+
| + |
+ Creation of a Crash Event. + |
+
| + |
+ Log an exception which will be traced always. + |
+
| + |
+ Returns the event dispatcher + |
+
| + |
+ Remove all subscribed events + |
+
| + |
+ Trace a function call. + |
+
| + |
+ Trace a function call level 2. + |
+
| + |
+ Trace a function call level 3. + |
+
| + |
+ Get the ClassID of the class instance. + |
+
| + |
+ Get the ClassName of the class instance. + |
+
| + |
+ Get the ClassName + ClassID of the class instance. + |
+
| + |
+ Get the Class Core.Event processing Priority. + |
+
| + |
+ This is the worker method to retrieve the Parent class. + |
+
| + |
+ Get all of the properties of an object in a table. + |
+
| + |
+ Get one property of an object by the key. + |
+
| + |
+ Get a Value given a Key from the Object. + |
+
| + |
+ Subscribe to a DCS Event. + |
+
| + |
+ Log an information which will be traced always. + |
+
| + |
+ This is the worker method to inherit from a parent class. + |
+
| + |
+ This is the worker method to check if an object is an (sub)instance of a class. + |
+
| + |
+ Enquires if tracing is on (for the class). + |
+
| + |
+ BASE constructor. + |
+
| + |
+ Occurs when an Event for an object is triggered. + |
+
| + |
+ BDA. + |
+
| + |
+ Occurs when a ground unit captures either an airbase or a farp. + |
+
| + |
+ Occurs when any object is spawned into the mission. + |
+
| + |
+ Occurs when any aircraft crashes into the ground and is completely destroyed. + |
+
| + |
+ Occurs when an object is dead. + |
+
| + |
+ Unknown precisely what creates this event, likely tied into newer damage model. + |
+
| + |
+ Discard chair after ejection. + |
+
| + |
+ Occurs when a player loads a dynamic cargo object with the F8 ground crew menu into a helo. + |
+
| + |
+ Occurs when a dynamic cargo crate is removed. + |
+
| + |
+ Occurs when a player unloads a dynamic cargo object with the F8 ground crew menu from a helo. + |
+
| + |
+ Occurs when a pilot ejects from an aircraft +Have a look at the class Core.Event#EVENT as these are just the prototypes. + |
+
| + |
+ Occurs when any aircraft shuts down its engines. + |
+
| + |
+ Occurs when any aircraft starts its engines. + |
+
| + |
+ Occurs whenever an object is hit by a weapon. + |
+
| + |
+ Occurs when any system fails on a human controlled aircraft. + |
+
| + |
+ Occurs on the death of a unit. + |
+
| + |
+ Occurs when an aircraft lands at an airbase, farp or ship +Have a look at the class Core.Event#EVENT as these are just the prototypes. + |
+
| + |
+ Occurs shortly after the landing animation of an ejected pilot touching the ground and standing up. + |
+
| + |
+ Landing quality mark. + |
+
| + |
+ Occurs when a new mark was added. + |
+
| + |
+ Occurs when a mark text was changed. + |
+
| + |
+ Occurs when a mark was removed. + |
+
| + |
+ Occurs when a mission ends +Have a look at the class Core.Event#EVENT as these are just the prototypes. + |
+
| + |
+ Occurs when a mission starts +Have a look at the class Core.Event#EVENT as these are just the prototypes. + |
+
| + |
+ Occurs when a player creates a dynamic cargo object from the F8 ground crew menu. + |
+
| + |
+ Weapon add. + |
+
| + |
+ Occurs when the pilot of an aircraft is killed. + |
+
| + |
+ Occurs when a player enters a slot and takes control of an aircraft. + |
+
| + |
+ Occurs when any player assumes direct control of a unit. + |
+
| + |
+ Occurs when any player relieves control of a unit to the AI. + |
+
| + |
+ Occurs when an aircraft connects with a tanker and begins taking on fuel. + |
+
| + |
+ Occurs when an aircraft is finished taking fuel. + |
+
| + |
+ Occurs when any modification to the "Score" as seen on the debrief menu would occur. + |
+
| + |
+ Occurs when any unit stops firing its weapon. + |
+
| + |
+ Occurs when any unit begins firing a weapon that has a high rate of fire. + |
+
| + |
+ Occurs whenever any unit in a mission fires a weapon. + |
+
| + |
+ Occurs when an aircraft takes off from an airbase, farp, or ship. + |
+
| + |
+ Trigger zone. + |
+
| + |
+ Occurs when the game thinks an object is destroyed. + |
+
| + | + + | +
| + |
+ Schedule a new time event. + |
+
STORAGE:ScheduleRepeat(Start, Repeat, RandomizeFactor, Stop, SchedulerFunction, ...) |
+
+ Schedule a new time event. + |
+
| + |
+ Stops the Schedule. + |
+
| + |
+ The scheduler object. + |
+
| + |
+ Set the Class Core.Event processing Priority. + |
+
| + |
+ Set one property of an object. + |
+
| + |
+ Set a state or property of the Object given a Key and a Value. + |
+
| + |
+ Trace a function logic level 1. + |
+
| + |
+ Trace a function logic level 2. + |
+
| + |
+ Trace a function logic level 3. + |
+
| + |
+ Trace all methods in MOOSE + |
+
| + |
+ Set tracing for a class + |
+
| + |
+ Set tracing for a specific method of class + |
+
| + |
+ Set trace level + |
+
| + |
+ Set trace off. + |
+
| + |
+ Set trace on. + |
+
| + |
+ Set trace on or off +Note that when trace is off, no BASE.Debug statement is performed, increasing performance! +When Moose is loaded statically, (as one file), tracing is switched off by default. + |
+
| + |
+ UnSubscribe to a DCS event. + |
+
| + | + + | +
STORAGE:_F(Arguments, DebugInfoCurrentParam, DebugInfoFromParam) |
+
+ Trace a function call. + |
+
| + |
+ (Internal) Serialize arguments + |
+
STORAGE:_T(Arguments, DebugInfoCurrentParam, DebugInfoFromParam) |
+
+ Trace a function logic. + |
+
| + | + + | +
| + |
+ The main event handling function... + |
+
| Fields and Methods inherited from STORAGE.Liquid | +Description | +
|---|---|
| + |
+ Diesel (3). + |
+
| + |
+ Aviation gasoline (1). + |
+
| + |
+ Jet fuel (0). + |
+
| + |
+ MW50 (2). + |
+
| Fields and Methods inherited from STORAGE.LiquidName | +Description | +
|---|---|
| + |
+ "diesel". + |
+
| + |
+ "gasoline". + |
+
| + |
+ "jet_fuel". + |
+
| + |
+ "methanol_mixture". + |
+
| Fields and Methods inherited from STORAGE.Type | +Description | +
|---|---|
| + |
+ aircraft. + |
+
| + |
+ liquids. Also see #list<#STORAGE.Liquid> for types of liquids. + |
+
| + |
+ weapons. + |
+
STORAGE class.
+ +Field(s)
+Name of the class.
+ +Class id string for output to DCS log file.
+ +Verbosity level.
+ +STORAGE class version.
+ +Function(s)
+Adds the amount of a given type of aircraft, liquid, weapon currently present the warehouse.
+ +Defined in:
+STORAGE
+Parameters:
++ #number + Type +
+Type of liquid or name of aircraft, weapon or equipment.
+ ++ #number + Amount +
+Amount of given type to add. Liquids in kg.
+ +Return value:
+self
+ +Adds the passed amount of a given item to the warehouse.
+ +Defined in:
+STORAGE
+Parameters:
++ #string + Name +
+Name of the item to add.
+ ++ #number + Amount +
+Amount of items to add.
+ +Return value:
+self
+ +Adds the passed amount of a given liquid to the warehouse.
+ +Defined in:
+STORAGE
+Parameters:
++ #number + Type +
+Type of liquid.
+ ++ #number + Amount +
+Amount of liquid to add.
+ +Return value:
+self
+ +Airbases only - Find a STORAGE in the _DATABASE using the name associated airbase.
+ +Defined in:
+STORAGE
+Parameter:
++ #string + AirbaseName +
+The Airbase Name.
+ +Return value:
+self
+ +Try to find the #STORAGE object of one of the many "H"-Helipads in Syria.
+ + +You need to put a (small, round) zone on top of it, because the name is not unique(!).
+ +Defined in:
+STORAGE
+Parameter:
++ #string + ZoneName +
+The name of the zone where to find the helipad.
+ +Return value:
+self or nil if not found.
+ +Gets the amount of a given type of aircraft, liquid, weapon currently present the warehouse.
+ +Defined in:
+STORAGE
+Parameter:
++ #number + Type +
+Type of liquid or name of aircraft, weapon or equipment.
+ +Return value:
+#number:
+Amount of given type. Liquids in kg.
+ +Returns a full itemized list of everything currently in a warehouse.
+ + +If a category is set to unlimited then the table will be returned empty.
+ +Defined in:
+STORAGE
+Parameter:
++ #string + Item +
+Name of item as #string or type of liquid as #number.
+ +Return values:
+#table:
+Table of aircraft. Table is emtpy {} if number of aircraft is set to be unlimited.
#table:
+Table of liquids. Table is emtpy {} if number of liquids is set to be unlimited.
#table:
+Table of weapons and other equipment. Table is emtpy {} if number of liquids is set to be unlimited.
Gets the amount of a given item currently present the warehouse.
+ +Defined in:
+STORAGE
+Parameter:
++ #string + Name +
+Name of the item.
+ +Return value:
+#number:
+Amount of items.
+ +Gets the amount of a given liquid currently present the warehouse.
+ +Defined in:
+STORAGE
+Parameter:
++ #number + Type +
+Type of liquid.
+ +Return value:
+#number:
+Amount of liquid in kg.
+ +Returns the name of the liquid from its numeric type.
+ +Defined in:
+STORAGE
+Parameter:
++ #number + Type +
+Type of liquid.
+ +Return value:
+#string:
+Name of the liquid.
+ +Returns whether a given type of aircraft, liquid, weapon is set to be limited.
+ +Defined in:
+STORAGE
+Parameter:
++ #number + Type +
+Type of liquid or name of aircraft, weapon or equipment.
+ +Return value:
+#boolean:
+If true the given type is limited or false otherwise.
Returns whether aircraft are limited.
+ +Defined in:
+STORAGE
+Return value:
+#boolean:
+If true aircraft are limited or false otherwise.
Returns whether liquids are limited.
+ +Defined in:
+STORAGE
+Return value:
+#boolean:
+If true liquids are limited or false otherwise.
Returns whether weapons and equipment are limited.
+ +Defined in:
+STORAGE
+Return value:
+#boolean:
+If true liquids are limited or false otherwise.
Returns whether a given type of aircraft, liquid, weapon is set to be unlimited.
+ +Defined in:
+STORAGE
+Parameter:
++ #string + Type +
+Name of aircraft, weapon or equipment or type of liquid (as #number).
Return value:
+#boolean:
+If true the given type is unlimited or false otherwise.
Returns whether aircraft are unlimited.
+ +Defined in:
+STORAGE
+Return value:
+#boolean:
+If true aircraft are unlimited or false otherwise.
Returns whether liquids are unlimited.
+ +Defined in:
+STORAGE
+Return value:
+#boolean:
+If true liquids are unlimited or false otherwise.
Returns whether weapons and equipment are unlimited.
+ +Defined in:
+STORAGE
+Return value:
+#boolean:
+If true weapons and equipment are unlimited or false otherwise.
Load the contents of a STORAGE from files.
+ + +Filenames searched for are the Filename given amended by "Liquids", "Aircraft" and "_Weapons" followed by a ".csv". Requires io and lfs to be desanitized to be working.
+ +Defined in:
+STORAGE
+Parameters:
++ #string + Path +
+The path to use. Use double backslashes \\ on Windows filesystems.
+ ++ #string + Filename +
+The name of the file.
+ +Return value:
+self
+ +Create a new STORAGE object from the DCS airbase object.
+ +Defined in:
+STORAGE
+Parameter:
++ #string + AirbaseName +
+Name of the airbase.
+ +Return value:
+self
+ +Create a new STORAGE object from a Wrapper.DynamicCargo#DYNAMICCARGO object.
+ +Defined in:
+STORAGE
+Parameter:
++ #string + DynamicCargoName +
+Unit name of the dynamic cargo.
+ +Return value:
+self
+ +Create a new STORAGE object from an DCS static cargo object.
+ +Defined in:
+STORAGE
+Parameter:
++ #string + StaticCargoName +
+Unit name of the static.
+ +Return value:
+self
+ +Removes the amount of a given type of aircraft, liquid, weapon from the warehouse.
+ +Defined in:
+STORAGE
+Parameters:
++ #number + Type +
+Type of liquid or name of aircraft, weapon or equipment.
+ ++ #number + Amount +
+Amount of given type to remove. Liquids in kg.
+ +Return value:
+self
+ +Removes the amount of the passed item from the warehouse.
+ +Defined in:
+STORAGE
+Parameters:
++ #string + Name +
+Name of the item.
+ ++ #number + Amount +
+Amount of items.
+ +Return value:
+self
+ +Removes the amount of the given liquid type from the warehouse.
+ +Defined in:
+STORAGE
+Parameters:
++ #number + Type +
+Type of liquid.
+ ++ #number + Amount +
+Amount of liquid in kg to be removed.
+ +Return value:
+self
+ +Save the contents of a STORAGE to files in CSV format.
+ + +Filenames created are the Filename given amended by "Liquids", "Aircraft" and "_Weapons" followed by a ".csv". Requires io and lfs to be desanitized to be working.
+ +Defined in:
+STORAGE
+Parameters:
++ #string + Path +
+The path to use. Use double backslashes \\ on Windows filesystems.
+ ++ #string + Filename +
+The base name of the files. Existing files will be overwritten.
+ +Return value:
+self
+ +Sets the amount of a given type of aircraft, liquid, weapon currently present the warehouse.
+ +Defined in:
+STORAGE
+Parameters:
++ #number + Type +
+Type of liquid or name of aircraft, weapon or equipment.
+ ++ #number + Amount +
+of given type. Liquids in kg.
+ +Return value:
+self
+ +Sets the specified amount of a given item to the warehouse.
+ +Defined in:
+STORAGE
+Parameters:
++ #string + Name +
+Name of the item.
+ ++ #number + Amount +
+Amount of items.
+ +Return value:
+self
+ +Sets the specified amount of a given liquid to the warehouse.
+ +Defined in:
+STORAGE
+Parameters:
++ #number + Type +
+Type of liquid.
+ ++ #number + Amount +
+Amount of liquid.
+ +Return value:
+self
+ +Set verbosity level.
+ +Defined in:
+STORAGE
+Parameter:
++ #number + VerbosityLevel +
+Level of output (higher=more). Default 0.
+ +Return value:
+self
+ +Start a STORAGE autosave process.
+ +Defined in:
+STORAGE
+Parameters:
++ #string + Path +
+The path to use. Use double backslashes \\ on Windows filesystems.
+ ++ #string + Filename +
+The name of the file.
+ ++ #number + Interval +
+The interval, start after this many seconds and repeat every interval seconds. Defaults to 300.
+ ++ #boolean + LoadOnce +
+If LoadOnce is true or nil, we try to load saved storage first.
+ +Return value:
+self
+ +Stop a running STORAGE autosave process.
+ +Field(s)
+Name of the class.
+ +Class id string for output to DCS log file.
+ +Verbosity level.
+ +STORAGE class version.
+ +Function(s)
+Clear the state of an object.
+ +Defined in:
+ +Parameters:
++ Object +
+The object that holds the Value set by the Key.
+ ++ StateName +
+The key that is should be cleared.
+ +Creation of a Birth Event.
+ +Defined in:
+ +Parameters:
++ DCS#Time + EventTime +
+The time stamp of the event.
+ ++ DCS#Object + Initiator +
+The initiating object of the event.
+ ++ #string + IniUnitName +
+The initiating unit name.
+ ++ place +
++ subplace +
+Creation of a Crash Event.
+ +Defined in:
+ +Parameters:
++ DCS#Time + EventTime +
+The time stamp of the event.
+ ++ DCS#Object + Initiator +
+The initiating object of the event.
+ ++ IniObjectCategory +
+Creation of a Dead Event.
+ +Defined in:
+ +Parameters:
++ DCS#Time + EventTime +
+The time stamp of the event.
+ ++ DCS#Object + Initiator +
+The initiating object of the event.
+ ++ IniObjectCategory +
+Creation of a S_EVENT_DYNAMIC_CARGO_LOADED event.
+ +Defined in:
+ +Parameter:
++ Wrapper.DynamicCargo#DYNAMICCARGO + DynamicCargo +
+the dynamic cargo object
+ +Creation of a S_EVENT_DYNAMIC_CARGO_REMOVED event.
+ +Defined in:
+ +Parameter:
++ Wrapper.DynamicCargo#DYNAMICCARGO + DynamicCargo +
+the dynamic cargo object
+ +Creation of a S_EVENT_DYNAMIC_CARGO_UNLOADED event.
+ +Defined in:
+ +Parameter:
++ Wrapper.DynamicCargo#DYNAMICCARGO + DynamicCargo +
+the dynamic cargo object
+ +Creation of a S_EVENT_NEW_DYNAMIC_CARGO event.
+ +Defined in:
+ +Parameter:
++ Wrapper.DynamicCargo#DYNAMICCARGO + DynamicCargo +
+the dynamic cargo object
+ +Creation of a S_EVENT_PLAYER_ENTER_AIRCRAFT event.
Defined in:
+ +Parameter:
++ Wrapper.Unit#UNIT + PlayerUnit +
+The aircraft unit the player entered.
+ +Creation of a Remove Unit Event.
+ +Defined in:
+ +Parameters:
++ DCS#Time + EventTime +
+The time stamp of the event.
+ ++ DCS#Object + Initiator +
+The initiating object of the event.
+ +Creation of a Takeoff Event.
+ +Defined in:
+ +Parameters:
++ DCS#Time + EventTime +
+The time stamp of the event.
+ ++ DCS#Object + Initiator +
+The initiating object of the event.
+ +Creation of a Crash Event.
+ +Defined in:
+ +Parameters:
++ DCS#Time + EventTime +
+The time stamp of the event.
+ ++ DCS#Object + Initiator +
+The initiating object of the event.
+ +Log an exception which will be traced always.
+ + +Can be anywhere within the function logic.
+ +Defined in:
+ +Parameter:
++ Arguments +
+A #table or any field.
+ +Returns the event dispatcher
+ +Remove all subscribed events
+ +Trace a function call.
+ + +Must be at the beginning of the function logic.
+ +Defined in:
+ +Parameter:
++ Arguments +
+A #table or any field.
+ +Trace a function call level 2.
+ + +Must be at the beginning of the function logic.
+ +Defined in:
+ +Parameter:
++ Arguments +
+A #table or any field.
+ +Trace a function call level 3.
+ + +Must be at the beginning of the function logic.
+ +Defined in:
+ +Parameter:
++ Arguments +
+A #table or any field.
+ +Get the ClassID of the class instance.
+ +Defined in:
+ +Return value:
+#string:
+The ClassID of the class instance.
+ +Get the ClassName of the class instance.
+ +Defined in:
+ +Return value:
+#string:
+The ClassName of the class instance.
+ +Get the ClassName + ClassID of the class instance.
+ + +The ClassName + ClassID is formatted as '%s#%09d'.
+ +Defined in:
+ +Return value:
+#string:
+The ClassName + ClassID of the class instance.
+ +Get the Class Core.Event processing Priority.
+ + +The Event processing Priority is a number from 1 to 10, +reflecting the order of the classes subscribed to the Event to be processed.
+ +This is the worker method to retrieve the Parent class.
+ + +Note that the Parent class must be passed to call the parent class method.
+ +self:GetParent(self):ParentMethod()
+
+
+
+
+
+Get all of the properties of an object in a table.
+ +Defined in:
+ +Return value:
+#table:
+of values, indexed by keys.
+ +Get one property of an object by the key.
+ +Defined in:
+ +Parameter:
++ Key +
+The key that is used as a reference of the value. Note that the key can be a #string, but it can also be any other type!
+ +Return value:
+Value The value that is stored. Note that the value can be a #string, but it can also be any other type! Nil if not found.
+ +Get a Value given a Key from the Object.
+ + +Note that if the Object is destroyed, set to nil, or garbage collected, then the Values and Keys will also be gone.
+ +Defined in:
+ +Parameters:
++ Object +
+The object that holds the Value set by the Key.
+ ++ Key +
+The key that is used to retrieve the value. Note that the key can be a #string, but it can also be any other type!
+ +Return value:
+The Value retrieved or nil if the Key was not found and thus the Value could not be retrieved.
+ +Subscribe to a DCS Event.
+ +Defined in:
+ +Parameters:
++ Core.Event#EVENTS + EventID +
+Event ID.
+ ++ #function + EventFunction +
+(optional) The function to be called when the event occurs for the unit.
+ +Return value:
+Log an information which will be traced always.
+ + +Can be anywhere within the function logic.
+ +Defined in:
+ +Parameter:
++ Arguments +
+A #table or any field.
+ +This is the worker method to inherit from a parent class.
+ +Defined in:
+ +Parameters:
++ Child +
+is the Child class that inherits.
+ ++ #BASE + Parent +
+is the Parent class that the Child inherits from.
+ +Return value:
+Child
+ +This is the worker method to check if an object is an (sub)instance of a class.
+ + + +Examples:
+ +-
+
ZONE:New( 'some zone' ):IsInstanceOf( ZONE ) will return true
+ ZONE:New( 'some zone' ):IsInstanceOf( 'ZONE' ) will return true
+ ZONE:New( 'some zone' ):IsInstanceOf( 'zone' ) will return true
+ ZONE:New( 'some zone' ):IsInstanceOf( 'BASE' ) will return true
+ ZONE:New( 'some zone' ):IsInstanceOf( 'GROUP' ) will return false
+
Defined in:
+ +Parameter:
++ ClassName +
+is the name of the class or the class itself to run the check against
+ +Return value:
+#boolean:
+Enquires if tracing is on (for the class).
+ +BASE constructor.
+ + + +This is an example how to use the BASE:New() constructor in a new class definition when inheriting from BASE.
+ +function EVENT:New()
+ local self = BASE:Inherit( self, BASE:New() ) -- #EVENT
+ return self
+end
+
+
+
+Occurs when an Event for an object is triggered.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that triggered the event.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +BDA.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when a ground unit captures either an airbase or a farp.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that captured the base +place: The airbase that was captured, can be a FARP or Airbase. When calling place:getCoalition() the faction will already be the new owning faction.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when any object is spawned into the mission.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that was spawned
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when any aircraft crashes into the ground and is completely destroyed.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that has crashed
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when an object is dead.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that is dead.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Unknown precisely what creates this event, likely tied into newer damage model.
+ + +Will update this page when new information become available.
+ +-
+
- initiator: The unit that had the failure. +
Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Discard chair after ejection.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when a player loads a dynamic cargo object with the F8 ground crew menu into a helo.
+ + +* NOTE * this is a workarounf for DCS not creating these events as of Aug 2024.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when a dynamic cargo crate is removed.
+ + +* NOTE * this is a workarounf for DCS not creating these events as of Aug 2024.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when a player unloads a dynamic cargo object with the F8 ground crew menu from a helo.
+ + +* NOTE * this is a workarounf for DCS not creating these events as of Aug 2024.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when a pilot ejects from an aircraft +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ + +initiator : The unit that has ejected
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when any aircraft shuts down its engines.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that is stopping its engines.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when any aircraft starts its engines.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that is starting its engines.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs whenever an object is hit by a weapon.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit object the fired the weapon +weapon: Weapon object that hit the target +target: The Object that was hit.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when any system fails on a human controlled aircraft.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that had the failure
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs on the death of a unit.
+ + +Contains more and different information. Similar to unit_lost it will occur for aircraft before the aircraft crash event occurs. +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ +-
+
- initiator: The unit that killed the target +
- target: Target Object +
- weapon: Weapon Object +
Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when an aircraft lands at an airbase, farp or ship +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ + +initiator : The unit that has landed +place: Object that the unit landed on. Can be an Airbase Object, FARP, or Ships
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs shortly after the landing animation of an ejected pilot touching the ground and standing up.
+ + +Event does not occur if the pilot lands in the water and sub combs to Davey Jones Locker. +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ +-
+
- initiator: Static object representing the ejected pilot. Place : Aircraft that the pilot ejected from. +
- place: may not return as a valid object if the aircraft has crashed into the ground and no longer exists. +
- subplace: is always 0 for unknown reasons. +
Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Landing quality mark.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when a new mark was added.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +MarkID: ID of the mark.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when a mark text was changed.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +MarkID: ID of the mark.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when a mark was removed.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +MarkID: ID of the mark.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when a mission ends +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when a mission starts +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when a player creates a dynamic cargo object from the F8 ground crew menu.
+ + +* NOTE * this is a workarounf for DCS not creating these events as of Aug 2024.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Weapon add.
+ + +Fires when entering a mission per pylon with the name of the weapon (double pylons not counted, infinite wep reload not counted. +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when the pilot of an aircraft is killed.
+ + +Can occur either if the player is alive and crashes or if a weapon kills the pilot without completely destroying the plane. +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that the pilot has died in.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when a player enters a slot and takes control of an aircraft.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +NOTE: This is a workaround of a long standing DCS bug with the PLAYER_ENTER_UNIT event. +initiator : The unit that is being taken control of.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when any player assumes direct control of a unit.
+ + +Note - not Mulitplayer safe. Use PlayerEnterAircraft. +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that is being taken control of.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when any player relieves control of a unit to the AI.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that the player left.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when an aircraft connects with a tanker and begins taking on fuel.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that is receiving fuel.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when an aircraft is finished taking fuel.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that was receiving fuel.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when any modification to the "Score" as seen on the debrief menu would occur.
+ + +There is no information on what values the score was changed to. Event is likely similar to player_comment in this regard. +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when any unit stops firing its weapon.
+ + +Event will always correspond with a shooting start event. +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that was doing the shooting.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when any unit begins firing a weapon that has a high rate of fire.
+ + +Most common with aircraft cannons (GAU-8), autocannons, and machine guns. +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that is doing the shooting. +target: The unit that is being targeted.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs whenever any unit in a mission fires a weapon.
+ + +But not any machine gun or autocannon based weapon, those are handled by EVENT.ShootingStart. +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when an aircraft takes off from an airbase, farp, or ship.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes. +initiator : The unit that tookoff +place: Object from where the AI took-off from. Can be an Airbase Object, FARP, or Ships
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Trigger zone.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Occurs when the game thinks an object is destroyed.
+ + +Have a look at the class Core.Event#EVENT as these are just the prototypes.
+ +-
+
- initiator: The unit that is was destroyed. +
Defined in:
+ +Parameter:
++ Core.Event#EVENTDATA + EventData +
+The EventData structure.
+ +Schedule a new time event.
+ + +Note that the schedule will only take place if the scheduler is started. Even for a single schedule event, the scheduler needs to be started also.
+ +Defined in:
+ +Parameters:
++ #number + Start +
+Specifies the amount of seconds that will be waited before the scheduling is started, and the event function is called.
+ ++ #function + SchedulerFunction +
+The event function to be called when a timer event occurs. The event function needs to accept the parameters specified in SchedulerArguments.
+ ++ ... +
+Optional arguments that can be given as part of scheduler. The arguments need to be given as a table { param1, param 2, ... }.
+ +Return value:
+#string:
+The Schedule ID of the planned schedule.
+ +Schedule a new time event.
+ + +Note that the schedule will only take place if the scheduler is started. Even for a single schedule event, the scheduler needs to be started also.
+ +Defined in:
+ +Parameters:
++ #number + Start +
+Specifies the amount of seconds that will be waited before the scheduling is started, and the event function is called.
+ ++ #number + Repeat +
+Specifies the interval in seconds when the scheduler will call the event function.
+ ++ #number + RandomizeFactor +
+Specifies a randomization factor between 0 and 1 to randomize the Repeat.
+ ++ #number + Stop +
+Specifies the amount of seconds when the scheduler will be stopped.
+ ++ #function + SchedulerFunction +
+The event function to be called when a timer event occurs. The event function needs to accept the parameters specified in SchedulerArguments.
+ ++ #table + ... +
+Optional arguments that can be given as part of scheduler. The arguments need to be given as a table { param1, param 2, ... }.
+ +Return value:
+#string:
+The Schedule ID of the planned schedule.
+ +Stops the Schedule.
+ +Defined in:
+ +Parameter:
++ #string + SchedulerID +
+(Optional) Scheduler ID to be stopped. If nil, all pending schedules are stopped.
+ +Set the Class Core.Event processing Priority.
+ + +The Event processing Priority is a number from 1 to 10, +reflecting the order of the classes subscribed to the Event to be processed.
+ +Defined in:
+ +Parameter:
++ #number + EventPriority +
+The Core.Event processing Priority.
+ +Return value:
+self
+ +Set one property of an object.
+ +Defined in:
+ +Parameters:
++ Key +
+The key that is used as a reference of the value. Note that the key can be a #string, but it can also be any other type!
+ ++ Value +
+The value that is stored. Note that the value can be a #string, but it can also be any other type!
+ +Set a state or property of the Object given a Key and a Value.
+ + +Note that if the Object is destroyed, set to nil, or garbage collected, then the Values and Keys will also be gone.
+ +Defined in:
+ +Parameters:
++ Object +
+The object that will hold the Value set by the Key.
+ ++ Key +
+The key that is used as a reference of the value. Note that the key can be a #string, but it can also be any other type!
+ ++ Value +
+The value to is stored in the object.
+ +Return value:
+The Value set.
+ +Trace a function logic level 1.
+ + +Can be anywhere within the function logic.
+ +Defined in:
+ +Parameter:
++ Arguments +
+A #table or any field.
+ +Trace a function logic level 2.
+ + +Can be anywhere within the function logic.
+ +Defined in:
+ +Parameter:
++ Arguments +
+A #table or any field.
+ +Trace a function logic level 3.
+ + +Can be anywhere within the function logic.
+ +Defined in:
+ +Parameter:
++ Arguments +
+A #table or any field.
+ +Trace all methods in MOOSE
+ +Defined in:
+ +Parameter:
++ #boolean + TraceAll +
+true = trace all methods in MOOSE.
+ +Set tracing for a class
+ +Set tracing for a specific method of class
+ +Defined in:
+ +Parameters:
++ #string + Class +
+Class name.
+ ++ #string + Method +
+Method.
+ +Set trace level
+ +Set trace off.
+ +Set trace on.
+ +Set trace on or off +Note that when trace is off, no BASE.Debug statement is performed, increasing performance! +When Moose is loaded statically, (as one file), tracing is switched off by default.
+ + +So tracing must be switched on manually in your mission if you are using Moose statically. +When moose is loading dynamically (for moose class development), tracing is switched on by default.
+ +Defined in:
+ +Parameter:
++ #boolean + TraceOnOff +
+Switch the tracing on or off.
+ +Usage:
+
+ -- Switch the tracing On
+ BASE:TraceOnOff( true )
+
+ -- Switch the tracing Off
+ BASE:TraceOnOff( false )
+
+
+UnSubscribe to a DCS event.
+ +Defined in:
+ +Parameter:
++ Core.Event#EVENTS + EventID +
+Event ID.
+ +Return value:
+Trace a function call.
+ + +This function is private.
+ +Defined in:
+ +Parameters:
++ Arguments +
+A #table or any field.
+ ++ DebugInfoCurrentParam +
++ DebugInfoFromParam +
+(Internal) Serialize arguments
+ +Defined in:
+ +Parameter:
++ #table + Arguments +
+Return value:
+#string:
+Text
+ +Trace a function logic.
+ +Defined in:
+ +Parameters:
++ Arguments +
+A #table or any field.
+ ++ DebugInfoCurrentParam +
++ DebugInfoFromParam +
+The main event handling function...
+ + +This function captures all events generated for the class.
+ +Liquid types.
+ +Field(s)
+Diesel (3).
+ +Aviation gasoline (1).
+ +Jet fuel (0).
+ +MW50 (2).
+ +Function(s)
+Liquid Names for the static cargo resource table.
+ +Field(s)
+"diesel".
+ +"gasoline".
+ +"jet_fuel".
+ +"methanol_mixture".
+ +Function(s)
+Storage types.
+ +Field(s)
+aircraft.
+ +liquids. Also see #list<#STORAGE.Liquid> for types of liquids.
+ +weapons.
+ +
+
+