{"name":"Eden Editor: Setting Attributes","title":"Eden Editor: Setting Attributes","type":"topic","url":"https://community.bistudio.com/wiki/Eden_Editor:_Setting_Attributes","revid":364857,"updated":"2024-06-25T09:35:04Z","aliases":[],"markdown":"While Eden Editor Workspace behaves like a normal scenario and it is possible to modify entities using existing commands (e.g., setPosATL), such changes would be invisible for the editor and not saved to the scenario file.\n\nInstead, the editor is using attributes to store all entity and scenario settings. Most commonly, the scenario designer can edit them using Attributes window available after double-clicking on an entity. Some are also edited directly, like position when dragging entities around.\n\nWhen an attribute is changed, the functionality attached to it is also performed. Setting *position* attribute of an object will move it to the given position, and adjusting `IntelWeatherStart` attribute will change the weather.\nUsing setPosATL or setOvercast commands would seemingly achieve the same, but without permanent effect - the changes would not be visible next time the scenario is loaded.\n\n### Scripting\n\nA scenario designer is not the only one who can modify attributes. Scripted systems can access them as well, giving you an ability to write some automated systems.\n\n> [!IMPORTANT]\n> Attributes are available only within the Eden Editor workspace. They cannot be accessed in scenario preview or exported scenario.\n\n#### Setting Entity Attributes\n\nTo set an attribute, you need to know it is *property* and value *type*. Tables below will help you with that - look at the last two columns, labeled **Development**.\nFor example to set player as invincible, we'll use **Enable Damage** attribute.\nYou can see its class is `allowDamage` (corresponding with allowDamage command; most attributes are named this way) and its value type is Boolean. This is how the expression will look like:\n\n```sqf\nplayer set3DENAttribute [\"allowDamage\", false];\n```\n\nYou can also check for the attribute state:\n\n```sqf\n_isInvincible = player get3DENAttribute \"allowDamage\";\n```\n\n#### Managing History\n\nWhen setting attributes, each command execution would create a new history entry. When doing a batch change, the user would have to press undo for each entity modified, which would be uncomfortable.\nTo prevent this, you can collect multiple changes together by wrapping them inside collect3DENHistory command:\n\n```sqf\ncollect3DENHistory {\n    {\n        _x set3DENAttribute [\"allowDamage\",false];\n    } forEach (all3DENEntities select 0);\n};\n```\n\nAlternatively, you can use more set3DENAttributes command which is able to modify multiple entities at once already.\n\n#### Setting Object Type\n\nObjects also have the *ItemType* special attribute, which defines which object class will represent them (i.e., a soldier, a car, a house, etc.).\nIt cannot be changed as a normal attribute, because it requires replacing the old model with the new one. There's a special command to handle this:\n\n```sqf\nplayer set3DENObjectType \"B_Soldier_F\";\n```\n\n#### Setting Scenario Attributes\n\nScenario attributes can be set with the following commands.\n\n- set3DENMissionAttributes\n- set3DENMissionAttribute\n\nTo return a specific scenario attribute value use get3DENMissionAttribute.\n\n##### Sections & Properties\n\nUse the following sections to return the scenario attribute values.\n\n| Display Name | Section (Class Name) |\n|---|---|\n| Environment | `Intel` |\n| Multiplayer | `Multiplayer` |\n| Performance | `GarbageCollection` |\n| Preferences | `Preferences` |\n\nThe `property` can be retrieved from the tables below.\n\n### Attributes\n\n#### Object\n\n| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Type** | Type | Object type. Can be changed only to another type of the same side,<br>e.g., you can change BLUFOR Car to BLUFOR Helicopter, but not to OPFOR Car or a Prop. | `ItemClass` | String |\n| **Variable Name** | Init | Unique system name. Can contain only letters, numbers and underscore. The name is not case sensitive, so 'someName' and 'SOMENAME' are treated as the same variables. | `Name` | String |\n| **Init** | Init | Expression called upon at start. In multiplayer, it is called on every machine and for each player who joins in the progress. The variable 'this' refers to the affected object. | `Init` | String |\n| N/A | Pylons Settings |  | `Pylons` |  |\n| **Position** | Transformation | World coordinates in meters. X goes from West to East, Y from South to North and Z is height above terrain. | `position` | Position3D |\n| **Rotation** | Transformation | Local rotation in degrees. X is pitch, Y is roll and Z is yaw. | `rotation` | Number |\n| **Size** | Transformation | Area size in meters. | `size3` | Array |\n| **Shape** | Transformation | Area shape.<br>Available options:<br>- **Ellipse**<br>- **Rectangle** | `IsRectangle` | Boolean |\n| **Placement Radius** | Transformation | Placement radius in meters. The entity will start at a random position within the radius. | `placementRadius` | Number |\n| **Player** | Control | Player in singleplayer. When enabled, the character will also be available in multiplayer and team switch ('Playable' status cannot be disabled individually in such case). | `ControlSP` | Boolean |\n| **Playable** | Control | When enabled, the character will appear as a slot in the multiplayer scenario lobby and in the list of roles available for team switch. | `ControlMP` | Boolean |\n| **Role Description** | Control | Multiplayer role description visible in the multiplayer lobby. When undefined, the object type name will be used by default. | `description` | String |\n| **Lock** | States | Vehicle lock. When locked, characters outside of the vehicle will be unable to get in and those already inside will be forbidden from leaving.<br>Available options:<br>- **Unlocked** - Anyone can get in<br>- **Default** - Group leaders and anyone who was ordered in by their group leader can get in<br>- **Locked** - No one can get in<br>- **Locked for players** - Anyone except for players can get in | `lock` | Number |\n| **Skill** | States | General AI skill. The attribute does not allow for decreasing it below 20%, because AI behavior would be too simplified. | `skill` | Number |\n| **Health / Armor** | States | Object health / armor. When close to 0%, the object will be destroyed. | `Health` | Number |\n| **Fuel** | States | Vehicle fuel. | `fuel` | Number |\n| **Ammunition** | States | General vehicle ammo state. | `ammo` | Number |\n| **Rank** | States | Character rank. When a group leader is killed, the subordinate with the highest rank will take over.<br>Available options:<br>- **Private**<br>- **Corporal**<br>- **Sergeant**<br>- **Lieutenant**<br>- **Captain**<br>- **Major**<br>- **Colonel** | `rank` | String |\n| **Stance** | States | Available options:<br>- **Default Stance**<br>- **Lie Down**<br>- **Crouch**<br>- **Stand Up** | `unitPos` |  |\n| **Enable Dynamic Simulation** | Special States | Entity simulation is enabled only if the player or an enemy unit is nearby.<br>Note: Does not work on simple objects and it overwrites basic simulation settings. | `dynamicSimulation` | Boolean |\n| **Wake-Up Dynamic Simulation** | Special States | Controls unit capability to activate dynamically simulated entities. | `addToDynSimGrid` | Number |\n| **Enable Simulation** | Special States | When disabled, the object will freeze and ignore any input or collisions.<br>Note: This option does not have any effect on dynamically simulated objects. | `enableSimulation` | Boolean |\n| **Simple Object** | Special States | When enabled, the object will behave like a map object (e.g. rocks or trees), which significantly saves performance. This option is available only for objects where it leads to improved performance.<br>Warning: If set, the setting is enforced at the start of the scenario and is irreversible during its runtime! | `objectIsSimple` | Boolean |\n| **Show Model** | Special States | Show model and collisions. Even when disabled, the object will be simulated normally (e.g., soldiers will still be able to move and shoot). | `hideObject` | Boolean |\n| **Enable Damage** | Special States | Set if the object can receive any damage. When a vehicle is invincible, its crew can still be killed. | `allowDamage` | Boolean |\n| **Enable Stamina** | Special States | Set whether the character should become tired when moving or not. When disabled for player, the stamina bar will be hidden completely. | `enableStamina` | Boolean |\n| **Revive Enabled** | Special States | Enable revive for this unit. | `EnableRevive` | Boolean |\n| **Doors States** | Special States | Set closed, locked or opened state for terrain object doors.<br>LMB - cycle between states<br>RMB - close door (reset to default state)<br>LMB + Alt - open door<br>LMB + Shift - lock door<br>LMB + Ctrl - close door | `DoorStates` |  |\n| **Local Only** | Special States | When enabled, the object will exist as a local instance on every client. It will not be synchronized over the network. Use this primarily for static (decorative) objects in order to optimize large-scale scenarios. | `isLocalOnly` | Boolean |\n| **Name** | Identity | Character name, by default automatically generated based on faction. | `unitName` | String |\n| **Face** | Identity | Character face. | `face` | String |\n| **Call Sign** | Identity | Call sign used in radio protocol (e.g., leader will order 'Kerry, fall back' instead of generic '2, fall back'). It does not affect character's actual name; consider changing it as well so they match together.<br>Available options:<br>- **No Call Sign**<br>- **Miller**<br>- **Reynolds**<br>- **Armstrong**<br>- **Nichols**<br>- **Tanny**<br>- **Frost**<br>- **Lacey**<br>- **Larkin**<br>- **Kerry**<br>- **Jackson**<br>- **McKendrick**<br>- **Levine**<br>- **James**<br>- **McKay**<br>- **Hardy**<br>- **Northgate**<br>- **Adams**<br>- **Bennett**<br>- **Campbell**<br>- **Dixon**<br>- **Everett**<br>- **Franklin**<br>- **Givens**<br>- **Hawkins**<br>- **Lopez**<br>- **Martinez**<br>- **OConnor**<br>- **Ryan**<br>- **Patterson**<br>- **Sykes**<br>- **Taylor**<br>- **Walker**<br>- **Amin**<br>- **Masood**<br>- **Fahim**<br>- **Habibi**<br>- **Kushan**<br>- **Jawadi**<br>- **Nazari**<br>- **Siddiqi**<br>- **Takhtar**<br>- **Wardak**<br>- **Yousuf**<br>- **Anthis**<br>- **Costa**<br>- **Dimitirou**<br>- **Elias**<br>- **Gekas**<br>- **Kouris**<br>- **Leventis**<br>- **Markos**<br>- **Nikas**<br>- **Nicolo**<br>- **Panas**<br>- **Petros**<br>- **Rosi**<br>- **Samaras**<br>- **Stavrou**<br>- **Ghost**<br>- **Stranger**<br>- **Fox**<br>- **Snake**<br>- **Razer**<br>- **Jester**<br>- **Nomad**<br>- **Viper**<br>- **Korneedler** | `NameSound` | String |\n| **Voice** | Identity | Radio voice used in group communication (e.g., target reporting). | `speaker` | String |\n| **Voice Pitch** | Identity | Voice pitch. Higher number means higher voice. | `pitch` | Number |\n| **Insignia** | Identity | Left shoulder insignia. Right shoulder insignia is reserved for a squad logo and cannot be changed by the scenario. | `unitInsignia` | String |\n| **Probability of Presence** | Presence | Probability of presence evaluated at the scenario start. When it fails, the object is not created at all. | `presence` | Number |\n| **Condition of Presence** | Presence | Condition of presence evaluated at the scenario start, must return boolean expression. When false, the object is not created at all. | `presenceCondition` | String |\n| **Equipment Storage** | Equipment Storage |  | `ammoBox` | String |\n| **Data Link Send** | Electronics & Sensors | Vehicle will broadcast targets tracked by its sensors to any other unit on the same side with Data Link enabled. | `ReportRemoteTargets` | Boolean |\n| **Data Link Receive** | Electronics & Sensors | Vehicle will receive targeting and positional data from any other broadcasting vehicle on the same side. | `ReceiveRemoteTargets` | Boolean |\n| **Data Link Position** | Electronics & Sensors | Vehicle will broadcast its own position to any other unit on the same side with Data Link enabled. | `ReportOwnPosition` | Boolean |\n| **Emission Control** | Electronics & Sensors | Radar EMCON rules for the AI<br>Available options:<br>- **Default** - AI will use the Radar when in Aware or Combat behavior.<br>- **Active** - AI will keep the Radar active and emitting at all times<br>- **Off** - AI will keep Radar silent at all times | `RadarUsageAI` | String |\n\n#### Composition\n\nApart from pre-defined groups and compositions, you can save and share your own custom compositions.\n\nThe following things will be saved with the composition:\n\n- Attribute values (inventory, simulation, simple object, etc.)\n- Layer structure (i.e. one can place comments in their own sub-layer for easy removal)\n- Layer visibility and transformation\n- Connections\n\nSince Arma 3 v2.06, custom Eden Editor compositions are also available in Zeus.\n\n### Saving Compositions\n\nTo save a composition, select the entities in the scene, click **right mouse button** on one of them and pick the **Save Custom Composition** option (or use the button in the Asset Browser).\n\nA window will be opened where you can set a title, author and category for your composition.\n\nIn the list on the left, you can either choose to create a new composition, or overwite one of the existing ones. This way, you can edit already created compositions.\nTo edit a composition's attributes, **double-click** on it, or select it and click on the **Edit** button (or use the button in the Asset Browser). It will open a window where you can change the title, author and category again.\n\nIn order to delete a composition permanently, select it in list and then use the button.\n\n### Placing Compositions\n\nYou can find compositions in **Compositions > Custom**.\nPlace it just like any other entity - either select it and then click in the scene on desired position, or drag it from the list to the scene.\n\n> [!IMPORTANT]\n> Vertical mode defines how the composition will be placed.\n>\n> - **Terrain Level** - composition will be snapped to the surface underneath. Please note that objects which are placed on another objects may no longer be positioned precisely.\n> - **Sea Level** - the composition will be placed exactly as it was saved, ignoring surface slope. This option may work better for complex compositions, especially when manually lowering the entities after placing.\n\nIf you need to correct the position or rotation of a placed composition it is recommended to use the Translation Widget and Rotation Widget.\nThis way, relative position and orientation of all entities in the composition will be preserved.\n\nIf you do not want each composition to be placed in its own layer turn off `Automatic Composition Layering` which can be found in `Settings... -> Preferences... -> Misc`.\n\n### Publishing Compositions\n\nYou can also publish your compositions to [Steam Workshop](https://steamcommunity.com/workshop/browse/?appid=107410). Do so by selecting the saved composition in the Asset Browser, and then using the button there.\n\nA publishing window will be opened where you can enter a name, description, visibility setting, image, and various tags. After agreeing with the Workshop license, you are free to publish the composition and share the link with others.\n\n#### Creating a Screenshot\n\nIn order for your composition to be found easier in the Steam Workshop you should add a meaningful screenshot. It is very easy to do so:\n\n- Place your composition\n- Move the Eden Editor camera so that only the composition is visible\n- Press the Backspace button to hide the Eden Editor interface\n- Press F12 (or the key you have assigned for screenshots in your steam application)\n- Select your screenshot in the publish composition UI by pressing the **Browse...** button, navigate to **Steam screenshots** and select the previously taken screenshot\n\n### Republishing Compositions\n\nUpdating a composition that was already published is effectively the same as the first time. Select the composition and use .\nIn the publishing window, select your already published composition on the left. Consider entering relevant change notes and publish.\n\n### Unpublishing Compositions\n\nIn order to unpublish a composition from within Eden Editor, open the publishing window by selecting any saved composition and using the button.\nNow select the published composition in the list on the left and press **DELETE**.\n\n### Subscribing to Compositions\n\nYou can easily find all published compositions made by yourself and others by selecting the **Steam subscribed content** entry in the Asset Browser, and then pressing the button.\nThis will open a Steam overlay with the [Workshop](https://steamcommunity.com/workshop/browse/?appid=107410) opened and compositions filtered.\nSoon after subscribing to any number of composition items there, the game should download these in the background. Large compositions may take a brief while to download and appear.\nThey will then be listed in the Asset Browser, ready for regular placement. Note that certain compositions require placement using a specific vertical mode to work correctly (see above).\n\n### Unsubscribing from Compositions\n\nTo unsubscribe from a Workshop composition from within Eden Editor, select it in the Asset Browser and press the button.\nNote that you should look for compositions listed under **Steam subscribed content**, otherwise you may accidentally delete a local composition instead.\n\n### Local Files\n\nCompositions are saved in the *Compositions* folder in your Profile directory.\n\nThey can be shared freely - if you pack a composition folder into a *.zip file and make it available for download, people who place the unpacked composition to their *Compositions* folder will have it available as well.\n\n### Modding Compositions (Arma 3 v2.10)\n\nIt is possible for mods to add their own compositions.\nThe mod needs to register them in config (see the Example below) for them to be loaded and displayed in groups tabs in Eden and Zeus.\n\n> [!NOTE]\n> Init scripts and all other composition features are supported.\n\nModded Compositions can be used as replacement for `CfgGroups` and the arsenal can be used in compositions, thus removing the need to make custom hidden unit classes with custom loadouts in order to construct a group.\nNote that placement-wise, compositions are slightly less efficient than using `CfgGroups`.\n\n#### Example\n\n```cpp\nclass CfgEditorCategories\n{\n    class EdCat_NATO // CfgGroups NATO\n    {\n        displayName = \"$STR_A3_CfgGroups_West_BLU_F0\";\n    };\n};\n\nclass CfgEditorSubcategories\n{\n    class EdSubcat_Armored // CfgGroups Armored\n    {\n        displayName = \"$STR_A3_CfgGroups_West_BLU_F_Armored0\";\n    };\n};\n\nclass Cfg3DEN\n{\n    class Compositions\n    {\n        class ModTag_MyComposition1 // one class per composition\n        {\n            path = \"edenCompositionTestmod\\compositionTank\";    // pbo path to a folder containing header.sqe/composition.sqe files\n            side = 0;                                            // 0 opfor, 1 blufor, 2 indfor, 3 civ, 8 Empty/Props\n            editorCategory = \"EdCat_NATO\";                        // link to CfgEditorCategories\n            editorSubcategory = \"EdSubcat_Armored\";                // link to CfgEditorSubcategories\n            displayName = \"$STR_Composition_Armored01\";\n            icon = \"\\A3\\ui_f\\data\\map\\markers\\nato\\b_inf.paa\";    // left side icon in groups list\n            useSideColorOnIcon = 1;                                // 1 == icon is always colored in faction color\n        };\n    };\n};\n```\n\n### Automating Composition Creation\n\nIt's possible to automate the creation of compositions. This is extremly helpful for maintaining a large number of compositions.\n\n> [!WARNING]\n> Always make a backup of your composition folder before running this script. It will overwrite existing compositions!\n\n```sqf\n0 spawn\n{\n    private _compositionLayers = [];\n\n    // Get all layers that follow a naming scheme\n    all3DENEntities # 6 apply\n    {\n        private _name = _x get3DENAttribute \"name\" select 0;\n        if (\"SPE_Comp_\" in _name) then\n        {\n            _compositionLayers pushBack [_name, _x];\n        };\n    };\n\n    // Loop though all layers\n    {\n        _x params [\"_name\", \"_ID\"];\n\n        // Get the entities\n        private _entities = get3DENLayerEntities _ID;\n\n        // Select the entities so do3DENAction works\n        set3DENSelected _entities;\n\n        // Open the create composition dialog\n        do3DENAction \"CreateCustomComposition\";\n\n        // Make sure it's open\n        waitUntil { !(isNull findDisplay 317) };\n\n        // Set the layer name as composition name in the dialog\n        findDisplay 317 displayCtrl 95 ctrlSetText _name;\n\n        // Close the dialog by activating the OK button\n        ctrlActivate (findDisplay 317 displayCtrl 1);\n\n        // Add a small delay\n        sleep 0.1;\n    } forEach _compositionLayers;\n};\n```\n\n#### Trigger\n\n| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Variable Name** | Init | Unique system name. Can contain only letters, numbers and underscore. The name is not case sensitive, so 'someName' and 'SOMENAME' are treated as the same variables. | `name` | String |\n| **Text** | Init | Trigger description. Players can see it in the radio menu when its activation is set to 'Radio'. Also visible in tooltip when hovering over the trigger in the editor. | `text` | String |\n| **Position** | Transformation | World coordinates in meters. X goes from West to East, Y from South to North and Z is height above terrain. | `position` | Position3D |\n| **Rotation** | Transformation | Local rotation in degrees. X is pitch, Y is roll and Z is yaw. | `rotation` | Number |\n| **Size** | Transformation | Area size in meters in format [a, b, c]. | `size3` | Array |\n| **Shape** | Transformation | Area shape.<br>Available options:<br>- **Ellipse**<br>- **Rectangle** | `IsRectangle` | Boolean |\n| **Type** | Activation | Trigger type, determines special behavior upon activation.<br>Available options:<br>- **None** - No other effects except of those defined by 'On Activation' expression.<br>- **Guarded by BLUFOR**/**OPFOR**/**Independent** - The trigger position becomes a point to be guarded by the given side. Groups with a 'Guard' waypoint will protect all guard points in the scenario, prioritizing them by the distance and order in which they were placed (the first placed is the most important).<br>- **Skip Waypoint** - Meant to work with a waypoint linked to the trigger using the 'Set Waypoint Activation' connection. Once activated, the trigger will force the waypoint to skip. Particularly useful for 'Hold' or 'Guard' waypoint types, which do not complete automatically.<br>- **End #1**/**#2**/**#3**/**#4**/**#5**/**#6** - Complete the scenario successfully.<br>- **Lose** - Fail the scenario. | `TriggerType` | String |\n| **Activation** | Activation | What or who can activate the trigger. Some options further depend on 'Activation Condition'.<br>Available options:<br>- **None** - No default activation, only a custom condition expression can activate the trigger.<br>- **Any Player** - Activated when any player of the given side satisfies the 'Activation Condition'.<br>- **Anybody** - Activated when any object satisfies the 'Activation Condition'.<br>- **BLUFOR**/**OPFOR**/**Independent**/**Civilian Game Logic** - Activated when any object of the given side satisfies the 'Activation Condition'.<br>- **Seized by BLUFOR**/**OPFOR**/**Independent** - Activated when the given side is in control of the area. Strength matters, which means one tank can be in control of an area while ten enemy infantrymen are still present.<br>- **Radio Alpha**/**Bravo**/**Charlie**/**Delta**/**Echo**/**Foxtrot**/**Golf**/**Hotel**/**India**/**Juliet** - Activated by a player using a radio command (accessible for the player by pressing 0-0 on a standard keyboard). The trigger's 'Text' will be used as the command title. | `ActivationBy` | String |\n| **Activation** | Activation | What or who can activate the trigger. Some options further depend on 'Activation Type'. The available options are specific to the connected trigger owner.<br>Available options:<br>- **Owner Only** - Activated when the connected trigger owner (or its vehicle, if the owner is a crew member) satisfies the 'Activation Condition'.<br>- **Whole Group** - Activated when all the owner's group members satisfy the 'Activation Condition'.<br>- **Group Leader** - Activated when leader of the owner's group satisfies the 'Activation Condition'.<br>- **Any Group Member** - Activated when anyone from the owner's group satisfies the 'Activation Condition'. | `activationByOwner` | String |\n| **Activation Type** | Activation | Condition of the 'Activation' attribute.<br>Available options:<br>- **Present** - Activated when objects are in the area.<br>- **Not Present** - Activated when objects are not in the area.<br>- **Detected by BLUFOR**/**OPFOR**/**Independent**/**Civilian** - Activated when objects are in the area and are discovered by the given side. | `activationType` | String |\n| **Repeatable** | Activation | Repetition rules. When enabled, the trigger can be activated again once deactivated. | `repeatable` | Boolean |\n| **Server Only** | Activation | When enabled, the trigger will only be created and evaluated on the server. | `isServerOnly` | Boolean |\n| **Condition** | Expression | Repeatedly calculated condition, must return boolean expression. When true, the trigger will be activated.<br>Passed variables are:<br>- this - boolean value of activation condition<br>- thisList - list of all objects in trigger area, based on 'Activation'<br>- thisTrigger - trigger object | `condition` | String |\n| **Interval** | Expression | How frequently the trigger condition is evaluated in seconds. | `triggerInterval` | Number |\n| **On Activation** | Expression | Expression executed once the trigger is activated.<br>Passed variables are:<br>- thisList - list of all objects in trigger area, based on 'Activation'<br>- thisTrigger - trigger object | `onActivation` | String |\n| **On Deactivation** | Expression | Expression executed once the trigger is deactivated.<br>> [!NOTE]<br>> This only concerns **Repeatable** triggers.<br>Passed variables are:<br>- thisTrigger - trigger object | `onDeactivation` | String |\n| **Timer Type** | Timer | Type of activation timer.<br>Available options:<br>- **Countdown** - Once the conditions are met, the trigger will activate after the specified amount of time has elapsed.<br>- **Timeout** - The trigger's conditions must be satisfied for the specified duration for the trigger to be activated. | `interuptable` | Boolean |\n| **Timer Values** | Timer | Timer values in seconds, selected randomly in a range from Min to Max, gravitating towards Mid. | `timeout` | Array in format [min, mid, max] |\n| **Effect Condition** | Effects | Condition for effects to be played, must return boolean expression. | `effectCondition` | String |\n| **Sound** | Effects | Sound played upon activation. | `sound` | String |\n| **Voice** | Effects | Sound spoken by the first unit which activated the trigger. | `voice` | String |\n| **Environment** | Effects | Environment sounds played upon activation. | `soundEnvironment` | String |\n| **SFX** | Effects | Sound effect played by the trigger upon activation. Repeats as long as the repeatable trigger is active or forever for non-repeatable triggers. | `soundTrigger` | String |\n| **Music** | Effects | Music played upon activation. Replaces previously playing music track. | `music` | String |\n| **UI Overlay** | Effects | User interface overlay shown upon activation. | `title` | String |\n\n#### Waypoint\n\n| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Type** | Type | Waypoint type defines what the group will do when the waypoint becomes active, and the condition when it becomes completed. Applies mainly to AI-led groups, as players will not be prompted to perform any specific actions, even though the waypoint completion condition is the same.<br>Some waypoints have special attributes, which are only available the next time you access the attribute window. | `itemClass` | String |\n| **Description** | Init | Text visible for the player next to the waypoint icon in the scene. | `description` | String |\n| **Order** | Init | Order in which waypoints follow. When changing order, the waypoint will take position of the selected one, pushing all other further down. | `order` |  |\n| **Identified** | Init | System name of the waypoint, used for identification in scripts. | `name` | String |\n| **Position** | Transformation | World coordinates in meters. X goes from West to East, Y from South to North and Z is height above terrain. | `position` | Position3D |\n| **Placement Radius** | Transformation | Placement radius in meters. The entity will start at a random position within the radius. | `placementRadius` | Number |\n| **Completion Radius** | Transformation | Distance in meters in which a group member has to be in order for the waypoint to be considered completed. | `completionRadius` | Number |\n| **Combat Mode** | State | Controls how and when the group will choose to engage enemy targets.<br>Available options:<br>- **Unchanged** - No change compared to the previous state.<br>- **Forced Hold Fire** - The group will never fire under any circumstances.<br>- **Do Not Fire Unless Fired Upon, Keep Formation** - Group members will hold fire unless directly threatened.<br>- **Do Not Fire Unless Fired Upon** - Group members will move into positions from which they can shoot at the enemy, but will hold fire unless directly threatened.<br>- **Open Fire, Keep Formation** - Default combat mode. Group members will fire upon any target in range, while staying in formation. The group leader may order individual members to engage specific targets.<br>- **Open Fire** - Group members will fire at any suitable target in range, leaving the formation to find a suitable shooting position. | `combatMode` | String |\n| **Behavior** | State | Behavior pattern of the group.<br>Available options:<br>- **Unchanged** - No change compared to the previous state.<br>- **Careless** - The same as 'Safe', except that it will not be switched automatically after spotting a threat. Use with caution, player may perceive AIs in this behavior as defective.<br>- **Safe** - Non-combat behavior. Characters have weapons lowered. Vehicles follow roads and use lights. They automatically switch to 'Aware' upon spotting a threat.<br>- **Aware** - Default behavior. Characters are in ready position. Vehicles prefer roads, do not use lights and their passengers will disembark to counter threats.<br>- **Combat** - Firefight behavior. Characters break formation and take cover. Vehicles ignore roads and do not use lights.<br>- **Stealth** - Characters break formation and move cautiously, preferring cover and going prone. Vehicles prefer roads, but do not use lights. | `behaviour` | String |\n| **Formation** | State | Default group formation. Based on the combat mode, group members may ignore the formation in 'Combat' and 'Stealth' modes.<br>Available options:<br>- **Unchanged**<br>- **Wedge**<br>- **Vee**<br>- **Line**<br>- **Column**<br>- **File**<br>- **Staggered Col.**<br>- **Echelon L.**<br>- **Echelon R.**<br>- **Diamond** | `formation` | String |\n| **SpeedMode** | State | Default travel speed of the group. In Combat and Stealth behavior modes, group members will try to prioritize this setting.<br>Available options:<br>- **Unchanged**<br>- **Limited**<br>- **Normal**<br>- **Full** | `speedMode` | String |\n| **Condition** | Expression | Repeatedly calculated condition, must return boolean expression. When the waypoint type conditions are met and this expression returns true, the waypoint is completed.<br>Passed variables are:<br>- this - group leader<br>- thisList - array with all group members | `condition` | String |\n| **On Activation** | Expression | Expression called when the waypoint is completed.<br>Passed variables are:<br>- this - group leader<br>- thisList - array with all group members | `onActivation` | String |\n| **Script** | Expression | Script executed when 'SCRIPTED' waypoint type is selected. The waypoint will be completed once the script is finished. | `script` | String |\n| **Map Visibility** | Visibility | Make the waypoint visible for the player on the map. | `show2D` | Boolean |\n| **Scene Visibility** | Visibility | Make the waypoint visible for the player in the scene. | `show3D` | Boolean |\n| **Timer Values** | Timer | Time in seconds passed between when the waypoint would be considered complete and when it actually completes. Selected randomly in a range from Min to Max, gravitating towards Mid. | `timeout` | Array in format [min, mid, max] |\n| **Effect Condition** | Effects | Condition for effects to be played, must return boolean expression. | `effectCondition` | String |\n| **Sound** | Effects | Sound played upon activation. | `sound` | String |\n| **Voice** | Effects | Sound spoken by the first unit which activated the trigger. | `voice` | String |\n| **Environment** | Effects | Environment sounds played upon activation. | `soundEnvironment` | String |\n| **Music** | Effects | Music played upon activation. Replaces previously playing music track. | `music` | String |\n| **UI Overlay** | Effects | User interface overlay shown upon activation. | `title` | String |\n\n#### System\n\n| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Type** | Type |  | `itemClass` | String |\n| **Variable Name** | Init | Unique system name. Can contain only letters, numbers and underscore. The name is not case sensitive, so 'someName' and 'SOMENAME' are treated as the same variables. | `Name` | String |\n| **Init** | Init | Expression called upon at start. In multiplayer, it is called on every machine and for each player who joins in the progress. The variable 'this' refers to the affected object. | `Init` | String |\n| **Position** | Transformation | World coordinates in meters. X goes from West to East, Y from South to North and Z is height above terrain. | `position` | Position3D |\n| **Rotation** | Transformation | Local rotation in degrees. X is pitch, Y is roll and Z is yaw. | `rotation` | Array |\n| **Size** | Transformation | Area size in meters. | `size2` | Array |\n| **Size** | Transformation | Area size in meters. | `size3` | Array |\n| **Shape** | Transformation | Area shape.<br>Available options:<br>- **Ellipse**<br>- **Rectangle** | `IsRectangle` | Boolean |\n| **Placement Radius** | Transformation | Placement radius in meters. The entity will start at a random position within the radius. | `placementRadius` | Number |\n| **Player** | Control | Player in singleplayer. When enabled, the character will also be available in multiplayer and team switch ('Playable' status cannot be disabled individually in such case). | `ControlSP` | Boolean |\n| **Playable** | Control | When enabled, the character will appear as a slot in the multiplayer scenario lobby and in the list of roles available for team switch. | `ControlMP` | Boolean |\n| **Role Description** | Control | Multiplayer role description visible in the multiplayer lobby. When undefined, the object type name will be used by default. | `description` | String |\n| **Probability of Presence** | Presence | Probability of presence evaluated at the scenario start. When it fails, the object is not created at all. | `presence` | Number |\n| **Condition of Presence** | Presence | Condition of presence evaluated at the scenario start, must return boolean expression. When false, the object is not created at all. | `presenceCondition` | String |\n\n#### Marker\n\n| Info |  |  | Development |  |  |\n|---|---|---|---|---|---|\n| Name | Category | Description | Property | Type | Correspondence |\n| **Type** | Type | Icon texture. | `itemClass` | String | markerType |\n| **Variable Name** | Init | Unique system name. Can contain any characters. The name is not case sensitive, so 'someName' and 'SOMENAME' are treated as the same variables. | `markerName` | String | createMarker |\n| **Text** | Init | Text displayed right from the marker. | `text` | String | markerText |\n| **Position** | Transformation | World coordinates in meters. X goes from West to East and Y from South to North. | `position` | Position3D | markerPos |\n| **Size** | Transformation | Marker A and B size. | `size2` | Array | markerSize |\n| **Rotation** | Transformation | Rotation in degrees. | `rotation` | Number | markerDir |\n| **Shape** | Style | Marker shape. The marker has to be created as shape marker, for this use \"\" empty string as class name with create3DENEntity, this will create rectangular marker.<br>Available options:<br>- 0 - rectangle<br>- 1 - ellipse | `markerType` | Number | markerShape |\n| **Brush** | Style | Area fill texture. | `brush` | String | markerBrush |\n| **Color** | Style | Marker color. 'Default' is based on the selected marker type. Since Arma 3 v2.22 custom color format is supported as well. See setMarkerColor. | `baseColor` | Array | markerColor |\n| **Alpha** | Style | Transparency. When the icon marker has a shadow, it will be visible behind the transparent icon. | `alpha` | Number | markerAlpha |\n\n#### Scenario\n\n##### General\n\n| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Title** | Presentation | Scenario name. Appears in the scenarios menu, multiplayer lobby and loading screens. Use @STR_ prefix to link to localization keys. | `IntelBriefingName` | String |\n| **Author** | Presentation | Scenario author. Appears in the scenarios menu and in loading screens. | `Author` | String |\n| **Picture** | Overview | Path to overview picture visible in the scenarios menu. When no loading screen picture is defined, this will be used in loading screen instead. | `OverviewPicture` | String |\n| **Text** | Overview | Short overview text visible in the scenarios menu. When no loading screen text is defined, this will be used in loading screens instead. Use @STR_ prefix to link to localization keys. | `OverviewText` | String |\n| **DLC** | Overview | When set, the overview image will be overlaid with a DLC frame indicating the scenario belongs to the DLC. | `AppId` | Number |\n| **Require DLC** | Overview | Sets if the DLC is required. When checked, the player will not be able to play the scenario if the DLC is not owned. | `AssetType` | String |\n| **Picture** | Overview (Locked) | Path to the overview picture visible in the scenarios menu. When no loading screen picture is defined, this will be used in the loading screen instead. | `OverviewPictureLocked` | String |\n| **Text** | Overview (Locked) | Short overview text visible in the scenarios menu when the scenario is locked (see 'Unlock' category for more details). Use @STR_ prefix to link to localization keys. | `OverviewTextLocked` | String |\n| **Picture** | Loading Screen | Path to the picture visible in the loading screens before and during the scenario. | `LoadScreen` | String |\n| **Text** | Loading Screen | Short text visible in loading screens before and during the scenario. Use @STR_ prefix to link to localization keys. | `OnLoadMission` | String |\n| **Show Briefing** | States | When disabled, the scenario will start automatically after the loading, without showing the briefing. Valid only for singleplayer scenarios. | `Briefing` | Boolean |\n| **Show Debriefing** | States | When disabled, the debriefing screen will not be shown when the scenario is completed. | `Debriefing` | Boolean |\n| **Enable Saving** | States | When disabled, the 'SAVE' option in the pause menu will be disabled and scripted autosaves will not do anything. | `Saving` | Boolean |\n| **Show Map** | States | When disabled, a black screen is shown instead of the map. Tasks, notes and other information will remain accessible. Can also be achieved by removing the map from the player's inventory. | `ShowMap` | Boolean |\n| **Show Compass** | States | When disabled, the compass will not be available either on the map, or in the scene after pressing the 'Compass' key. Can also be achieved by removing the compass from the player's inventory. | `ShowCompass` | Boolean |\n| **Show Watch** | States | When disabled, the watch will not be available in the scene after pressing the 'Watch' key. Can also be achieved by removing the watch from the player's inventory. | `ShowWatch` | Boolean |\n| **Show GPS** | States | When disabled, the GPS minimap will not be available in the scene after pressing the 'GPS' key. Can also be achieved by removing the GPS from the player's inventory. | `ShowGPS` | Boolean |\n| **Show HUD** | States | When disabled, on-screen information such as weapon information or the command menu will be hidden. | `ShowHUD` | Boolean |\n| **Show UAV Feed** | States | When disabled, the UAV feed will not be available in the scene after pressing the 'AV Camera' key. | `ShowUAVFeed` | Boolean |\n| **Advanced Flight Model** | States | When enabled, all player controlled helicopters will use the advanced flight model. | `ForceRotorLibSimulation` | Boolean |\n| **Debug Console** | States | Determines debug console availability<br>Available options:<br>- **Available only in editor**<br>- **Available for the host or logged-in admin**<br>- **Available for everyone** | `EnableDebugConsole` | Number |\n| **Unlocked Keys** | Unlock | Keys needed to mark the scenario as completed in the scenarios menu. Can be multiple words divided by a semicolon. Key can be activated using 'activateKey' scripting command. Does not affect the multiplayer and campaign scenarios, and the scenarios downloaded from Steam. | `DoneKeys` | Array |\n| **Required Keys** | Unlock | Keys required for mission to be available for playing from the scenarios menu. Can be multiple words divided by a semicolon. Does not affect the multiplayer and campaign scenarios. | `Keys` | Array |\n| **Required Keys Limit** | Unlock | The number of required keys to be active for the mission to be unlocked. | `KeysLimit` | Number |\n| **Init** | Init | Expression called upon at start. In multiplayer, it is called on every machine and for each player who joins in the progress. The variable 'this' refers to the affected object.<br>> [!WARNING]<br>> Despite the tooltip saying that 'this' refers to the affected object, it does not. There are no arguments passed to this attribute!<br>This attribute behaves similar to the init.sqf. | `Init` | String |\n| **Independents Allegiance** | Misc | Sets who the Independent side will be friendly to. The value is shared across all scenario phases. | `IntelIndepAllegiance` | Array in format [west:Number,east:Number] |\n| **Binarize the Scenario File** | Misc | When true, the *.sqm file will be binarized. The process saves loading time, but makes the file uneditable in a text editor. | `SaveBinarized` | Boolean |\n\n##### Environment\n\n| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Date** | Date | Starting date. | `IntelDate` | Array in format [year, month, day] |\n| **Time** | Date | Starting time of the day. Please note that the sunrise and sunset times are influenced by the date (e.g., days are shorter in winter) and the longitude and latitude of the terrain. | `IntelTime` | Number |\n| **Time of Changes** | Weather Forecast | Delay until all forecasted weather values take effect. | `IntelTimeOfChanges` | Number |\n| **Overcast Start** | Overcast | Initial cloud cover. Unless set manually, this value also affects rain, lightning, waves, wind and gusts values. | `IntelWeatherStart` | Number |\n| **Overcast Forecast** | Overcast | Forecasted cloud cover. | `IntelWeatherForecast` | Number |\n| **Fog Start** | Fog | Initial fog. Strength affects not only how far player can see, but also limits the sight of AI entities. | `IntelFogStart` | Number |\n| **Fog Forecast** | Fog | Forecasted fog. | `IntelFogForecast` | Number |\n| **Manual Override** | Rain | Enables manual settings in this category. When disabled, the engine will calculate the values automatically. | `IntelRainIsForced` | Boolean |\n| **Rain Start** | Rain | Initial rain strength. Applied only when the cloud cover is already bad, i.e., a high value is ignored when the weather is sunny. | `IntelRainStart` | Number |\n| **Rain Forecast** | Rain | Forecasted rain strength. | `IntelRainForecast` | Number |\n| **Manual Override** | Lightnings | Enables manual settings in this category. When disabled, the engine will calculate the values automatically. | `IntelLightningIsForced` | Boolean |\n| **Lightnings Start** | Lightnings | Initial frequency of lightning. Applied only when the cloud cover is already bad, i.e., a high value is ignored when the weather is sunny. | `IntelLightningStart` | Number |\n| **Lightnings Forecast** | Lightnings | Forecasted frequency of lightning. | `IntelLightningForecast` | Number |\n| **Manual Override** | Waves | Enables manual settings in this category. When disabled, the engine will calculate the values automatically. | `IntelWavesIsForced` | Boolean |\n| **Waves Start** | Waves | Initial waves size. Applied independently of cloud cover settings. | `IntelWavesStart` | Number |\n| **Waves Forecast** | Waves | Forecasted waves size. | `IntelWavesForecast` | Number |\n| **Manual Override** | Wind | Enables manual settings in this category. When disabled, the engine will calculate the values automatically. | `IntelWindIsForced` | Boolean |\n| **Wind Start** | Wind | Initial wind strength. Together with wind direction, it influences how clouds, smoke, vegetation or flags are moving. | `IntelWindStart` | Number |\n| **Wind Forecast** | Wind | Forecasted wind strength. | `IntelWindForecast` | Number |\n| **Gusts Start** | Wind | Initial gusts strength. Gusts are randomly changing wind direction. The worse the cloud cover, the stronger and more frequent the changes. | `IntelWindGustStart` | Number |\n| **Gusts Forecast** | Wind | Forecasted gusts value. | `IntelWindGustForecast` | Number |\n| **Direction Start** | Wind | Initial wind direction. | `IntelWindDirectionStart` | Number |\n| **Direction Forecast** | Wind | Forecasted wind direction. | `IntelWindDirectionForecast` | Number |\n\n##### Multiplayer\n\n| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Game Type** | Type | Scenario type shown in the server browser and in the loading screen. | `GameType` | String |\n| **Min Players** | Type | Minimum number of required players. | `MinPlayers` | Number |\n| **Max Players** | Type | Minimum number of allowed players. | `MaxPlayers` | Number |\n| **Summary** | Lobby | Short summary shown in the scenario lobby. | `IntelOverviewText` | Structured Text |\n| **Enable AI** | Lobby | When AI is enabled, all playable characters are created at the scenario start, controlled by AI. Upon joining, a player takes control of an existing character.<br>When AI is disabled, a new character is created for each connecting player.<br>Server host can disable AI even when it is allowed by default. | `DisabledAI` | Boolean |\n| **Auto Assign Slots** | Lobby | When enabled, arriving players will be first assigned to the side with the lowest number of players. Valid only for scenarios with multiple playable sides involved. | `JoinUnassigned` | Boolean |\n| **Respawn** | Respawn | Character respawn type. Defines what happens to players and playable characters after they die in multiplayer scenarios. Has no effect in singleplayer scenarios.<br>Available options:<br>- **Disabled** - No respawn.<br>- **Respawn on Custom Position** - Respawn on a position defined by the marker with a specific prefix in the name. When multiple ones are available, a random one is selected.<br>- respawn - position available for all sides<br>- respawn_west - BLUFOR respawn<br>- respawn_east - OPFOR respawn<br>- respawn_guerrila - Independent respawn<br>- respawn_civilian - Civilian respawn<br>Because these are prefixes, anything can follow them, e.g., respawn_1, respawn_west_base, etc.<br>- **Respawn on Position of Death** - Respawn where killed, even if the dead body moved.<br>- **Switch to Group Member** - Take control of the next available group member. When none are left, 'Switch to Spectator' respawn is used instead.<br>- **Switch to Side Member** - Pick a character on the same side to take control of. When none are left, 'Switch to Spectator' respawn is used instead.<br>- **Switch to Spectator** - Spectate the scenario without being directly involved. | `Respawn` | Number |\n| **Rulesets** | Respawn | Specific respawn rulesets based on currently selected 'Respawn'. | `RespawnTemplates` | Array |\n| **Respawn Delay** | Respawn | Time in seconds after which players respawn. | `RespawnDelay` | Number |\n| **Vehicle Respawn Delay** | Respawn | Time in seconds after which vehicles respawn. | `RespawnVehicleDelay` | Number |\n| **Show Scoreboard** | Respawn | When enabled, the scoreboard is shown while waiting for respawn. May be subdued by some respawn rulesets. | `RespawnDialog` | Boolean |\n| **Allow Manual Respawn** | Respawn | When enabled, players will have the option to manually respawn in the pause menu. | `RespawnButton` | Boolean |\n| **Enable Team Switch** | Respawn | When enabled, players will be able to manually switch to any other playable character in the scenario not controlled by another player. | `EnableTeamSwitch` | Boolean |\n| **Allow AI Score** | Respawn | When enabled, the score of playable characters controlled by AI will appear on the scoreboard. | `AIKills` | Boolean |\n| **Shared Objectives** | Tasks | Sets if tasks assigned to friendlies are visualized to player and who can assign/unassign tasks.<br>Available options:<br>- **Disabled** - Tasks assigned by friendlies are not marked.<br>- **Enabled** - Tasks assigned by friendlies are marked to player.<br>- **Enabled with Task Propagation** - Tasks assigned by friendlies are marked to player, but only group leaders can assign and unassign tasks. Task assignment changes are automatically propagated to subordinates. | `SharedObjectives` | String |\n| **Revive Mode** | Revive | Controls who can be incapacitated and who can revive others.<br>Available options:<br>- **Disabled** - Revive is completely disabled. All players will die immediately.<br>- **Enabled for all players** - Revive is enabled for all players.<br>- **Controlled by player Attributes** - Only players with Revive enabled in their Attributes are effected. | `ReviveMode` | String |\n| **Required Trait** | Revive | Controls the specialty required to revive others.<br>Available options:<br>- **None** - Anyone can revive.<br>- **Medic** - Only players with the 'Medic' trait can revive. | `ReviveRequiredTrait` | String |\n| **Required Items** | Revive | Controls the item required to revive others.<br>Available options:<br>- **None** - No special item is required in order to revive.<br>- **Medikit** - The 'Medikit' item is required in order to revive.<br>- **First Aid Kit / Medikit** - 'Medikit' or 'First Aid Kit' items are required in order to revive. | `ReviveRequiredItems` | String |\n| **Revive Duration** | Revive | Controls the time it takes to revive someone. | `ReviveDelay` | String |\n| **Medic Speed Multiplier** | Revive | Controls how much faster a medic revives someone. | `ReviveMedicSpeedMultiplier` | String |\n| **Force Respawn Duration** | Revive | Controls how long it takes to force respawn while incapacitated. | `ReviveForceRespawnDelay` | String |\n| **Incapacitation Mode** | Revive | Controls the level of simulation involved in triggering incapacitation.<br>Available options:<br>- **Basic** - Players will always enter the incapacitated state.<br>- **Advanced** - Extensive wounds will kill players instantly. | `ReviveUnconsciousStateMode` | String |\n| **Bleed Out Duration** | Revive | Controls how long it takes an incapacitated unit to bleed out. | `ReviveBleedOutDelay` | String |\n\n##### Garbage Collection\n\n| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Minimum distance** | Garbage Collection | The minimum distance from any player. Set the value to 0 to remove the min. distance. | `MinPlayerDistance` | Number |\n| **Character Corpses** | Garbage Collection |  | `AttributeSystemSubcategory` |  |\n| **Mode** | Garbage Collection | Garbage collecting mode.<br>Available options:<br>- **None**<br>- **All scenario objects**<br>- **Only objects that can respawn**<br>- **Only objects that cannot respawn** | `CorpseManagerMode` | Number |\n| **Limit** | Garbage Collection | Maximum allowed number of dead bodies in the scenario. | `CorpseLimit` | Number |\n| **Min Delay** | Garbage Collection | Time in seconds before a dead body is removed when the number of dead bodies exceeds the 'Limit'. | `CorpseRemovalMinTime` | Number |\n| **Max Delay** | Garbage Collection | Time in seconds before a dead body is removed when the number of dead bodies is below or equals the 'Limit'. | `CorpseRemovalMaxTime` | Number |\n| **Vehicle Wrecks** | Garbage Collection |  | `AttributeSystemSubcategory` |  |\n| **Mode** | Garbage Collection | Garbage collecting mode.<br>Available options:<br>- **None**<br>- **All scenario objects**<br>- **Only objects that can respawn**<br>- **Only objects that cannot respawn** | `WreckManagerMode` | Number |\n| **Limit** | Garbage Collection | Maximum allowed number of dead bodies in the scenario. | `WreckLimit` | Number |\n| **Min Delay** | Garbage Collection | Time in seconds before a dead body is removed when the number of dead bodies exceeds the 'Limit'. | `WreckRemovalMinTime` | Number |\n| **Max Delay** | Garbage Collection | Time in seconds before a dead body is removed when the number of dead bodies is below or equals the 'Limit'. | `WreckRemovalMaxTime` | Number |\n| **Enable Dynamic Simulation** | Dynamic Simulation | Turns on the 'Dynamic Simulation' system. Only entities and groups with the 'Dynamic Simulation' will be affected. | `DynSimEnabled` |  |\n| **Characters** | Dynamic Simulation |  | `DynSimDistGroup` |  |\n| **Manned Vehicles** | Dynamic Simulation |  | `DynSimDistVehicle` |  |\n| **Props** | Dynamic Simulation |  | `DynSimDistProp` |  |\n| **Empty Vehicles** | Dynamic Simulation |  | `DynSimDistEmptyVehicle` |  |\n| **Is Moving** | Dynamic Simulation | Multiplies activation distance of non-static entity by set value. | `DynSimMovingCoef` |  |\n| **Limit by View Distance** | Dynamic Simulation | Limits all activation distances to player's object view distance. Dynamically simulated entities beyond the object view distance will be disabled. | `DynSimSaturateByObjDist` |  |\n\n#### Comment\n\n| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Title** | Init | Text displayed above the comment icon. | `Name` | String |\n| **Tooltip** | Init | Text displayed as a tooltip when hovering over the comment icon. | `Description` | String |\n| **Position** | Init | World coordinates in meters. X goes from West to East, Y from South to North and Z is height above sea level. | `position` | Position3D |\n| **Rotation** | Init | Local rotation in degrees. X is pitch, Y is roll and Z is yaw. | `rotation` | Number |","sections":[{"heading":null,"level":1,"markdown":"While Eden Editor Workspace behaves like a normal scenario and it is possible to modify entities using existing commands (e.g., setPosATL), such changes would be invisible for the editor and not saved to the scenario file.\n\nInstead, the editor is using attributes to store all entity and scenario settings. Most commonly, the scenario designer can edit them using Attributes window available after double-clicking on an entity. Some are also edited directly, like position when dragging entities around.\n\nWhen an attribute is changed, the functionality attached to it is also performed. Setting *position* attribute of an object will move it to the given position, and adjusting `IntelWeatherStart` attribute will change the weather.\nUsing setPosATL or setOvercast commands would seemingly achieve the same, but without permanent effect - the changes would not be visible next time the scenario is loaded."},{"heading":"Scripting","level":3,"markdown":"A scenario designer is not the only one who can modify attributes. Scripted systems can access them as well, giving you an ability to write some automated systems.\n\n> [!IMPORTANT]\n> Attributes are available only within the Eden Editor workspace. They cannot be accessed in scenario preview or exported scenario."},{"heading":"Setting Entity Attributes","level":4,"markdown":"To set an attribute, you need to know it is *property* and value *type*. Tables below will help you with that - look at the last two columns, labeled **Development**.\nFor example to set player as invincible, we'll use **Enable Damage** attribute.\nYou can see its class is `allowDamage` (corresponding with allowDamage command; most attributes are named this way) and its value type is Boolean. This is how the expression will look like:\n\n```sqf\nplayer set3DENAttribute [\"allowDamage\", false];\n```\n\nYou can also check for the attribute state:\n\n```sqf\n_isInvincible = player get3DENAttribute \"allowDamage\";\n```"},{"heading":"Managing History","level":4,"markdown":"When setting attributes, each command execution would create a new history entry. When doing a batch change, the user would have to press undo for each entity modified, which would be uncomfortable.\nTo prevent this, you can collect multiple changes together by wrapping them inside collect3DENHistory command:\n\n```sqf\ncollect3DENHistory {\n    {\n        _x set3DENAttribute [\"allowDamage\",false];\n    } forEach (all3DENEntities select 0);\n};\n```\n\nAlternatively, you can use more set3DENAttributes command which is able to modify multiple entities at once already."},{"heading":"Setting Object Type","level":4,"markdown":"Objects also have the *ItemType* special attribute, which defines which object class will represent them (i.e., a soldier, a car, a house, etc.).\nIt cannot be changed as a normal attribute, because it requires replacing the old model with the new one. There's a special command to handle this:\n\n```sqf\nplayer set3DENObjectType \"B_Soldier_F\";\n```"},{"heading":"Setting Scenario Attributes","level":4,"markdown":"Scenario attributes can be set with the following commands.\n\n- set3DENMissionAttributes\n- set3DENMissionAttribute\n\nTo return a specific scenario attribute value use get3DENMissionAttribute."},{"heading":"Sections & Properties","level":5,"markdown":"Use the following sections to return the scenario attribute values.\n\n| Display Name | Section (Class Name) |\n|---|---|\n| Environment | `Intel` |\n| Multiplayer | `Multiplayer` |\n| Performance | `GarbageCollection` |\n| Preferences | `Preferences` |\n\nThe `property` can be retrieved from the tables below."},{"heading":"Attributes","level":3,"markdown":""},{"heading":"Object","level":4,"markdown":"| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Type** | Type | Object type. Can be changed only to another type of the same side,<br>e.g., you can change BLUFOR Car to BLUFOR Helicopter, but not to OPFOR Car or a Prop. | `ItemClass` | String |\n| **Variable Name** | Init | Unique system name. Can contain only letters, numbers and underscore. The name is not case sensitive, so 'someName' and 'SOMENAME' are treated as the same variables. | `Name` | String |\n| **Init** | Init | Expression called upon at start. In multiplayer, it is called on every machine and for each player who joins in the progress. The variable 'this' refers to the affected object. | `Init` | String |\n| N/A | Pylons Settings |  | `Pylons` |  |\n| **Position** | Transformation | World coordinates in meters. X goes from West to East, Y from South to North and Z is height above terrain. | `position` | Position3D |\n| **Rotation** | Transformation | Local rotation in degrees. X is pitch, Y is roll and Z is yaw. | `rotation` | Number |\n| **Size** | Transformation | Area size in meters. | `size3` | Array |\n| **Shape** | Transformation | Area shape.<br>Available options:<br>- **Ellipse**<br>- **Rectangle** | `IsRectangle` | Boolean |\n| **Placement Radius** | Transformation | Placement radius in meters. The entity will start at a random position within the radius. | `placementRadius` | Number |\n| **Player** | Control | Player in singleplayer. When enabled, the character will also be available in multiplayer and team switch ('Playable' status cannot be disabled individually in such case). | `ControlSP` | Boolean |\n| **Playable** | Control | When enabled, the character will appear as a slot in the multiplayer scenario lobby and in the list of roles available for team switch. | `ControlMP` | Boolean |\n| **Role Description** | Control | Multiplayer role description visible in the multiplayer lobby. When undefined, the object type name will be used by default. | `description` | String |\n| **Lock** | States | Vehicle lock. When locked, characters outside of the vehicle will be unable to get in and those already inside will be forbidden from leaving.<br>Available options:<br>- **Unlocked** - Anyone can get in<br>- **Default** - Group leaders and anyone who was ordered in by their group leader can get in<br>- **Locked** - No one can get in<br>- **Locked for players** - Anyone except for players can get in | `lock` | Number |\n| **Skill** | States | General AI skill. The attribute does not allow for decreasing it below 20%, because AI behavior would be too simplified. | `skill` | Number |\n| **Health / Armor** | States | Object health / armor. When close to 0%, the object will be destroyed. | `Health` | Number |\n| **Fuel** | States | Vehicle fuel. | `fuel` | Number |\n| **Ammunition** | States | General vehicle ammo state. | `ammo` | Number |\n| **Rank** | States | Character rank. When a group leader is killed, the subordinate with the highest rank will take over.<br>Available options:<br>- **Private**<br>- **Corporal**<br>- **Sergeant**<br>- **Lieutenant**<br>- **Captain**<br>- **Major**<br>- **Colonel** | `rank` | String |\n| **Stance** | States | Available options:<br>- **Default Stance**<br>- **Lie Down**<br>- **Crouch**<br>- **Stand Up** | `unitPos` |  |\n| **Enable Dynamic Simulation** | Special States | Entity simulation is enabled only if the player or an enemy unit is nearby.<br>Note: Does not work on simple objects and it overwrites basic simulation settings. | `dynamicSimulation` | Boolean |\n| **Wake-Up Dynamic Simulation** | Special States | Controls unit capability to activate dynamically simulated entities. | `addToDynSimGrid` | Number |\n| **Enable Simulation** | Special States | When disabled, the object will freeze and ignore any input or collisions.<br>Note: This option does not have any effect on dynamically simulated objects. | `enableSimulation` | Boolean |\n| **Simple Object** | Special States | When enabled, the object will behave like a map object (e.g. rocks or trees), which significantly saves performance. This option is available only for objects where it leads to improved performance.<br>Warning: If set, the setting is enforced at the start of the scenario and is irreversible during its runtime! | `objectIsSimple` | Boolean |\n| **Show Model** | Special States | Show model and collisions. Even when disabled, the object will be simulated normally (e.g., soldiers will still be able to move and shoot). | `hideObject` | Boolean |\n| **Enable Damage** | Special States | Set if the object can receive any damage. When a vehicle is invincible, its crew can still be killed. | `allowDamage` | Boolean |\n| **Enable Stamina** | Special States | Set whether the character should become tired when moving or not. When disabled for player, the stamina bar will be hidden completely. | `enableStamina` | Boolean |\n| **Revive Enabled** | Special States | Enable revive for this unit. | `EnableRevive` | Boolean |\n| **Doors States** | Special States | Set closed, locked or opened state for terrain object doors.<br>LMB - cycle between states<br>RMB - close door (reset to default state)<br>LMB + Alt - open door<br>LMB + Shift - lock door<br>LMB + Ctrl - close door | `DoorStates` |  |\n| **Local Only** | Special States | When enabled, the object will exist as a local instance on every client. It will not be synchronized over the network. Use this primarily for static (decorative) objects in order to optimize large-scale scenarios. | `isLocalOnly` | Boolean |\n| **Name** | Identity | Character name, by default automatically generated based on faction. | `unitName` | String |\n| **Face** | Identity | Character face. | `face` | String |\n| **Call Sign** | Identity | Call sign used in radio protocol (e.g., leader will order 'Kerry, fall back' instead of generic '2, fall back'). It does not affect character's actual name; consider changing it as well so they match together.<br>Available options:<br>- **No Call Sign**<br>- **Miller**<br>- **Reynolds**<br>- **Armstrong**<br>- **Nichols**<br>- **Tanny**<br>- **Frost**<br>- **Lacey**<br>- **Larkin**<br>- **Kerry**<br>- **Jackson**<br>- **McKendrick**<br>- **Levine**<br>- **James**<br>- **McKay**<br>- **Hardy**<br>- **Northgate**<br>- **Adams**<br>- **Bennett**<br>- **Campbell**<br>- **Dixon**<br>- **Everett**<br>- **Franklin**<br>- **Givens**<br>- **Hawkins**<br>- **Lopez**<br>- **Martinez**<br>- **OConnor**<br>- **Ryan**<br>- **Patterson**<br>- **Sykes**<br>- **Taylor**<br>- **Walker**<br>- **Amin**<br>- **Masood**<br>- **Fahim**<br>- **Habibi**<br>- **Kushan**<br>- **Jawadi**<br>- **Nazari**<br>- **Siddiqi**<br>- **Takhtar**<br>- **Wardak**<br>- **Yousuf**<br>- **Anthis**<br>- **Costa**<br>- **Dimitirou**<br>- **Elias**<br>- **Gekas**<br>- **Kouris**<br>- **Leventis**<br>- **Markos**<br>- **Nikas**<br>- **Nicolo**<br>- **Panas**<br>- **Petros**<br>- **Rosi**<br>- **Samaras**<br>- **Stavrou**<br>- **Ghost**<br>- **Stranger**<br>- **Fox**<br>- **Snake**<br>- **Razer**<br>- **Jester**<br>- **Nomad**<br>- **Viper**<br>- **Korneedler** | `NameSound` | String |\n| **Voice** | Identity | Radio voice used in group communication (e.g., target reporting). | `speaker` | String |\n| **Voice Pitch** | Identity | Voice pitch. Higher number means higher voice. | `pitch` | Number |\n| **Insignia** | Identity | Left shoulder insignia. Right shoulder insignia is reserved for a squad logo and cannot be changed by the scenario. | `unitInsignia` | String |\n| **Probability of Presence** | Presence | Probability of presence evaluated at the scenario start. When it fails, the object is not created at all. | `presence` | Number |\n| **Condition of Presence** | Presence | Condition of presence evaluated at the scenario start, must return boolean expression. When false, the object is not created at all. | `presenceCondition` | String |\n| **Equipment Storage** | Equipment Storage |  | `ammoBox` | String |\n| **Data Link Send** | Electronics & Sensors | Vehicle will broadcast targets tracked by its sensors to any other unit on the same side with Data Link enabled. | `ReportRemoteTargets` | Boolean |\n| **Data Link Receive** | Electronics & Sensors | Vehicle will receive targeting and positional data from any other broadcasting vehicle on the same side. | `ReceiveRemoteTargets` | Boolean |\n| **Data Link Position** | Electronics & Sensors | Vehicle will broadcast its own position to any other unit on the same side with Data Link enabled. | `ReportOwnPosition` | Boolean |\n| **Emission Control** | Electronics & Sensors | Radar EMCON rules for the AI<br>Available options:<br>- **Default** - AI will use the Radar when in Aware or Combat behavior.<br>- **Active** - AI will keep the Radar active and emitting at all times<br>- **Off** - AI will keep Radar silent at all times | `RadarUsageAI` | String |"},{"heading":"Composition","level":4,"markdown":"Apart from pre-defined groups and compositions, you can save and share your own custom compositions.\n\nThe following things will be saved with the composition:\n\n- Attribute values (inventory, simulation, simple object, etc.)\n- Layer structure (i.e. one can place comments in their own sub-layer for easy removal)\n- Layer visibility and transformation\n- Connections\n\nSince Arma 3 v2.06, custom Eden Editor compositions are also available in Zeus."},{"heading":"Saving Compositions","level":3,"markdown":"To save a composition, select the entities in the scene, click **right mouse button** on one of them and pick the **Save Custom Composition** option (or use the button in the Asset Browser).\n\nA window will be opened where you can set a title, author and category for your composition.\n\nIn the list on the left, you can either choose to create a new composition, or overwite one of the existing ones. This way, you can edit already created compositions.\nTo edit a composition's attributes, **double-click** on it, or select it and click on the **Edit** button (or use the button in the Asset Browser). It will open a window where you can change the title, author and category again.\n\nIn order to delete a composition permanently, select it in list and then use the button."},{"heading":"Placing Compositions","level":3,"markdown":"You can find compositions in **Compositions > Custom**.\nPlace it just like any other entity - either select it and then click in the scene on desired position, or drag it from the list to the scene.\n\n> [!IMPORTANT]\n> Vertical mode defines how the composition will be placed.\n>\n> - **Terrain Level** - composition will be snapped to the surface underneath. Please note that objects which are placed on another objects may no longer be positioned precisely.\n> - **Sea Level** - the composition will be placed exactly as it was saved, ignoring surface slope. This option may work better for complex compositions, especially when manually lowering the entities after placing.\n\nIf you need to correct the position or rotation of a placed composition it is recommended to use the Translation Widget and Rotation Widget.\nThis way, relative position and orientation of all entities in the composition will be preserved.\n\nIf you do not want each composition to be placed in its own layer turn off `Automatic Composition Layering` which can be found in `Settings... -> Preferences... -> Misc`."},{"heading":"Publishing Compositions","level":3,"markdown":"You can also publish your compositions to [Steam Workshop](https://steamcommunity.com/workshop/browse/?appid=107410). Do so by selecting the saved composition in the Asset Browser, and then using the button there.\n\nA publishing window will be opened where you can enter a name, description, visibility setting, image, and various tags. After agreeing with the Workshop license, you are free to publish the composition and share the link with others."},{"heading":"Creating a Screenshot","level":4,"markdown":"In order for your composition to be found easier in the Steam Workshop you should add a meaningful screenshot. It is very easy to do so:\n\n- Place your composition\n- Move the Eden Editor camera so that only the composition is visible\n- Press the Backspace button to hide the Eden Editor interface\n- Press F12 (or the key you have assigned for screenshots in your steam application)\n- Select your screenshot in the publish composition UI by pressing the **Browse...** button, navigate to **Steam screenshots** and select the previously taken screenshot"},{"heading":"Republishing Compositions","level":3,"markdown":"Updating a composition that was already published is effectively the same as the first time. Select the composition and use .\nIn the publishing window, select your already published composition on the left. Consider entering relevant change notes and publish."},{"heading":"Unpublishing Compositions","level":3,"markdown":"In order to unpublish a composition from within Eden Editor, open the publishing window by selecting any saved composition and using the button.\nNow select the published composition in the list on the left and press **DELETE**."},{"heading":"Subscribing to Compositions","level":3,"markdown":"You can easily find all published compositions made by yourself and others by selecting the **Steam subscribed content** entry in the Asset Browser, and then pressing the button.\nThis will open a Steam overlay with the [Workshop](https://steamcommunity.com/workshop/browse/?appid=107410) opened and compositions filtered.\nSoon after subscribing to any number of composition items there, the game should download these in the background. Large compositions may take a brief while to download and appear.\nThey will then be listed in the Asset Browser, ready for regular placement. Note that certain compositions require placement using a specific vertical mode to work correctly (see above)."},{"heading":"Unsubscribing from Compositions","level":3,"markdown":"To unsubscribe from a Workshop composition from within Eden Editor, select it in the Asset Browser and press the button.\nNote that you should look for compositions listed under **Steam subscribed content**, otherwise you may accidentally delete a local composition instead."},{"heading":"Local Files","level":3,"markdown":"Compositions are saved in the *Compositions* folder in your Profile directory.\n\nThey can be shared freely - if you pack a composition folder into a *.zip file and make it available for download, people who place the unpacked composition to their *Compositions* folder will have it available as well."},{"heading":"Modding Compositions (Arma 3 v2.10)","level":3,"markdown":"It is possible for mods to add their own compositions.\nThe mod needs to register them in config (see the Example below) for them to be loaded and displayed in groups tabs in Eden and Zeus.\n\n> [!NOTE]\n> Init scripts and all other composition features are supported.\n\nModded Compositions can be used as replacement for `CfgGroups` and the arsenal can be used in compositions, thus removing the need to make custom hidden unit classes with custom loadouts in order to construct a group.\nNote that placement-wise, compositions are slightly less efficient than using `CfgGroups`."},{"heading":"Example","level":4,"markdown":"```cpp\nclass CfgEditorCategories\n{\n    class EdCat_NATO // CfgGroups NATO\n    {\n        displayName = \"$STR_A3_CfgGroups_West_BLU_F0\";\n    };\n};\n\nclass CfgEditorSubcategories\n{\n    class EdSubcat_Armored // CfgGroups Armored\n    {\n        displayName = \"$STR_A3_CfgGroups_West_BLU_F_Armored0\";\n    };\n};\n\nclass Cfg3DEN\n{\n    class Compositions\n    {\n        class ModTag_MyComposition1 // one class per composition\n        {\n            path = \"edenCompositionTestmod\\compositionTank\";    // pbo path to a folder containing header.sqe/composition.sqe files\n            side = 0;                                            // 0 opfor, 1 blufor, 2 indfor, 3 civ, 8 Empty/Props\n            editorCategory = \"EdCat_NATO\";                        // link to CfgEditorCategories\n            editorSubcategory = \"EdSubcat_Armored\";                // link to CfgEditorSubcategories\n            displayName = \"$STR_Composition_Armored01\";\n            icon = \"\\A3\\ui_f\\data\\map\\markers\\nato\\b_inf.paa\";    // left side icon in groups list\n            useSideColorOnIcon = 1;                                // 1 == icon is always colored in faction color\n        };\n    };\n};\n```"},{"heading":"Automating Composition Creation","level":3,"markdown":"It's possible to automate the creation of compositions. This is extremly helpful for maintaining a large number of compositions.\n\n> [!WARNING]\n> Always make a backup of your composition folder before running this script. It will overwrite existing compositions!\n\n```sqf\n0 spawn\n{\n    private _compositionLayers = [];\n\n    // Get all layers that follow a naming scheme\n    all3DENEntities # 6 apply\n    {\n        private _name = _x get3DENAttribute \"name\" select 0;\n        if (\"SPE_Comp_\" in _name) then\n        {\n            _compositionLayers pushBack [_name, _x];\n        };\n    };\n\n    // Loop though all layers\n    {\n        _x params [\"_name\", \"_ID\"];\n\n        // Get the entities\n        private _entities = get3DENLayerEntities _ID;\n\n        // Select the entities so do3DENAction works\n        set3DENSelected _entities;\n\n        // Open the create composition dialog\n        do3DENAction \"CreateCustomComposition\";\n\n        // Make sure it's open\n        waitUntil { !(isNull findDisplay 317) };\n\n        // Set the layer name as composition name in the dialog\n        findDisplay 317 displayCtrl 95 ctrlSetText _name;\n\n        // Close the dialog by activating the OK button\n        ctrlActivate (findDisplay 317 displayCtrl 1);\n\n        // Add a small delay\n        sleep 0.1;\n    } forEach _compositionLayers;\n};\n```"},{"heading":"Trigger","level":4,"markdown":"| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Variable Name** | Init | Unique system name. Can contain only letters, numbers and underscore. The name is not case sensitive, so 'someName' and 'SOMENAME' are treated as the same variables. | `name` | String |\n| **Text** | Init | Trigger description. Players can see it in the radio menu when its activation is set to 'Radio'. Also visible in tooltip when hovering over the trigger in the editor. | `text` | String |\n| **Position** | Transformation | World coordinates in meters. X goes from West to East, Y from South to North and Z is height above terrain. | `position` | Position3D |\n| **Rotation** | Transformation | Local rotation in degrees. X is pitch, Y is roll and Z is yaw. | `rotation` | Number |\n| **Size** | Transformation | Area size in meters in format [a, b, c]. | `size3` | Array |\n| **Shape** | Transformation | Area shape.<br>Available options:<br>- **Ellipse**<br>- **Rectangle** | `IsRectangle` | Boolean |\n| **Type** | Activation | Trigger type, determines special behavior upon activation.<br>Available options:<br>- **None** - No other effects except of those defined by 'On Activation' expression.<br>- **Guarded by BLUFOR**/**OPFOR**/**Independent** - The trigger position becomes a point to be guarded by the given side. Groups with a 'Guard' waypoint will protect all guard points in the scenario, prioritizing them by the distance and order in which they were placed (the first placed is the most important).<br>- **Skip Waypoint** - Meant to work with a waypoint linked to the trigger using the 'Set Waypoint Activation' connection. Once activated, the trigger will force the waypoint to skip. Particularly useful for 'Hold' or 'Guard' waypoint types, which do not complete automatically.<br>- **End #1**/**#2**/**#3**/**#4**/**#5**/**#6** - Complete the scenario successfully.<br>- **Lose** - Fail the scenario. | `TriggerType` | String |\n| **Activation** | Activation | What or who can activate the trigger. Some options further depend on 'Activation Condition'.<br>Available options:<br>- **None** - No default activation, only a custom condition expression can activate the trigger.<br>- **Any Player** - Activated when any player of the given side satisfies the 'Activation Condition'.<br>- **Anybody** - Activated when any object satisfies the 'Activation Condition'.<br>- **BLUFOR**/**OPFOR**/**Independent**/**Civilian Game Logic** - Activated when any object of the given side satisfies the 'Activation Condition'.<br>- **Seized by BLUFOR**/**OPFOR**/**Independent** - Activated when the given side is in control of the area. Strength matters, which means one tank can be in control of an area while ten enemy infantrymen are still present.<br>- **Radio Alpha**/**Bravo**/**Charlie**/**Delta**/**Echo**/**Foxtrot**/**Golf**/**Hotel**/**India**/**Juliet** - Activated by a player using a radio command (accessible for the player by pressing 0-0 on a standard keyboard). The trigger's 'Text' will be used as the command title. | `ActivationBy` | String |\n| **Activation** | Activation | What or who can activate the trigger. Some options further depend on 'Activation Type'. The available options are specific to the connected trigger owner.<br>Available options:<br>- **Owner Only** - Activated when the connected trigger owner (or its vehicle, if the owner is a crew member) satisfies the 'Activation Condition'.<br>- **Whole Group** - Activated when all the owner's group members satisfy the 'Activation Condition'.<br>- **Group Leader** - Activated when leader of the owner's group satisfies the 'Activation Condition'.<br>- **Any Group Member** - Activated when anyone from the owner's group satisfies the 'Activation Condition'. | `activationByOwner` | String |\n| **Activation Type** | Activation | Condition of the 'Activation' attribute.<br>Available options:<br>- **Present** - Activated when objects are in the area.<br>- **Not Present** - Activated when objects are not in the area.<br>- **Detected by BLUFOR**/**OPFOR**/**Independent**/**Civilian** - Activated when objects are in the area and are discovered by the given side. | `activationType` | String |\n| **Repeatable** | Activation | Repetition rules. When enabled, the trigger can be activated again once deactivated. | `repeatable` | Boolean |\n| **Server Only** | Activation | When enabled, the trigger will only be created and evaluated on the server. | `isServerOnly` | Boolean |\n| **Condition** | Expression | Repeatedly calculated condition, must return boolean expression. When true, the trigger will be activated.<br>Passed variables are:<br>- this - boolean value of activation condition<br>- thisList - list of all objects in trigger area, based on 'Activation'<br>- thisTrigger - trigger object | `condition` | String |\n| **Interval** | Expression | How frequently the trigger condition is evaluated in seconds. | `triggerInterval` | Number |\n| **On Activation** | Expression | Expression executed once the trigger is activated.<br>Passed variables are:<br>- thisList - list of all objects in trigger area, based on 'Activation'<br>- thisTrigger - trigger object | `onActivation` | String |\n| **On Deactivation** | Expression | Expression executed once the trigger is deactivated.<br>> [!NOTE]<br>> This only concerns **Repeatable** triggers.<br>Passed variables are:<br>- thisTrigger - trigger object | `onDeactivation` | String |\n| **Timer Type** | Timer | Type of activation timer.<br>Available options:<br>- **Countdown** - Once the conditions are met, the trigger will activate after the specified amount of time has elapsed.<br>- **Timeout** - The trigger's conditions must be satisfied for the specified duration for the trigger to be activated. | `interuptable` | Boolean |\n| **Timer Values** | Timer | Timer values in seconds, selected randomly in a range from Min to Max, gravitating towards Mid. | `timeout` | Array in format [min, mid, max] |\n| **Effect Condition** | Effects | Condition for effects to be played, must return boolean expression. | `effectCondition` | String |\n| **Sound** | Effects | Sound played upon activation. | `sound` | String |\n| **Voice** | Effects | Sound spoken by the first unit which activated the trigger. | `voice` | String |\n| **Environment** | Effects | Environment sounds played upon activation. | `soundEnvironment` | String |\n| **SFX** | Effects | Sound effect played by the trigger upon activation. Repeats as long as the repeatable trigger is active or forever for non-repeatable triggers. | `soundTrigger` | String |\n| **Music** | Effects | Music played upon activation. Replaces previously playing music track. | `music` | String |\n| **UI Overlay** | Effects | User interface overlay shown upon activation. | `title` | String |"},{"heading":"Waypoint","level":4,"markdown":"| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Type** | Type | Waypoint type defines what the group will do when the waypoint becomes active, and the condition when it becomes completed. Applies mainly to AI-led groups, as players will not be prompted to perform any specific actions, even though the waypoint completion condition is the same.<br>Some waypoints have special attributes, which are only available the next time you access the attribute window. | `itemClass` | String |\n| **Description** | Init | Text visible for the player next to the waypoint icon in the scene. | `description` | String |\n| **Order** | Init | Order in which waypoints follow. When changing order, the waypoint will take position of the selected one, pushing all other further down. | `order` |  |\n| **Identified** | Init | System name of the waypoint, used for identification in scripts. | `name` | String |\n| **Position** | Transformation | World coordinates in meters. X goes from West to East, Y from South to North and Z is height above terrain. | `position` | Position3D |\n| **Placement Radius** | Transformation | Placement radius in meters. The entity will start at a random position within the radius. | `placementRadius` | Number |\n| **Completion Radius** | Transformation | Distance in meters in which a group member has to be in order for the waypoint to be considered completed. | `completionRadius` | Number |\n| **Combat Mode** | State | Controls how and when the group will choose to engage enemy targets.<br>Available options:<br>- **Unchanged** - No change compared to the previous state.<br>- **Forced Hold Fire** - The group will never fire under any circumstances.<br>- **Do Not Fire Unless Fired Upon, Keep Formation** - Group members will hold fire unless directly threatened.<br>- **Do Not Fire Unless Fired Upon** - Group members will move into positions from which they can shoot at the enemy, but will hold fire unless directly threatened.<br>- **Open Fire, Keep Formation** - Default combat mode. Group members will fire upon any target in range, while staying in formation. The group leader may order individual members to engage specific targets.<br>- **Open Fire** - Group members will fire at any suitable target in range, leaving the formation to find a suitable shooting position. | `combatMode` | String |\n| **Behavior** | State | Behavior pattern of the group.<br>Available options:<br>- **Unchanged** - No change compared to the previous state.<br>- **Careless** - The same as 'Safe', except that it will not be switched automatically after spotting a threat. Use with caution, player may perceive AIs in this behavior as defective.<br>- **Safe** - Non-combat behavior. Characters have weapons lowered. Vehicles follow roads and use lights. They automatically switch to 'Aware' upon spotting a threat.<br>- **Aware** - Default behavior. Characters are in ready position. Vehicles prefer roads, do not use lights and their passengers will disembark to counter threats.<br>- **Combat** - Firefight behavior. Characters break formation and take cover. Vehicles ignore roads and do not use lights.<br>- **Stealth** - Characters break formation and move cautiously, preferring cover and going prone. Vehicles prefer roads, but do not use lights. | `behaviour` | String |\n| **Formation** | State | Default group formation. Based on the combat mode, group members may ignore the formation in 'Combat' and 'Stealth' modes.<br>Available options:<br>- **Unchanged**<br>- **Wedge**<br>- **Vee**<br>- **Line**<br>- **Column**<br>- **File**<br>- **Staggered Col.**<br>- **Echelon L.**<br>- **Echelon R.**<br>- **Diamond** | `formation` | String |\n| **SpeedMode** | State | Default travel speed of the group. In Combat and Stealth behavior modes, group members will try to prioritize this setting.<br>Available options:<br>- **Unchanged**<br>- **Limited**<br>- **Normal**<br>- **Full** | `speedMode` | String |\n| **Condition** | Expression | Repeatedly calculated condition, must return boolean expression. When the waypoint type conditions are met and this expression returns true, the waypoint is completed.<br>Passed variables are:<br>- this - group leader<br>- thisList - array with all group members | `condition` | String |\n| **On Activation** | Expression | Expression called when the waypoint is completed.<br>Passed variables are:<br>- this - group leader<br>- thisList - array with all group members | `onActivation` | String |\n| **Script** | Expression | Script executed when 'SCRIPTED' waypoint type is selected. The waypoint will be completed once the script is finished. | `script` | String |\n| **Map Visibility** | Visibility | Make the waypoint visible for the player on the map. | `show2D` | Boolean |\n| **Scene Visibility** | Visibility | Make the waypoint visible for the player in the scene. | `show3D` | Boolean |\n| **Timer Values** | Timer | Time in seconds passed between when the waypoint would be considered complete and when it actually completes. Selected randomly in a range from Min to Max, gravitating towards Mid. | `timeout` | Array in format [min, mid, max] |\n| **Effect Condition** | Effects | Condition for effects to be played, must return boolean expression. | `effectCondition` | String |\n| **Sound** | Effects | Sound played upon activation. | `sound` | String |\n| **Voice** | Effects | Sound spoken by the first unit which activated the trigger. | `voice` | String |\n| **Environment** | Effects | Environment sounds played upon activation. | `soundEnvironment` | String |\n| **Music** | Effects | Music played upon activation. Replaces previously playing music track. | `music` | String |\n| **UI Overlay** | Effects | User interface overlay shown upon activation. | `title` | String |"},{"heading":"System","level":4,"markdown":"| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Type** | Type |  | `itemClass` | String |\n| **Variable Name** | Init | Unique system name. Can contain only letters, numbers and underscore. The name is not case sensitive, so 'someName' and 'SOMENAME' are treated as the same variables. | `Name` | String |\n| **Init** | Init | Expression called upon at start. In multiplayer, it is called on every machine and for each player who joins in the progress. The variable 'this' refers to the affected object. | `Init` | String |\n| **Position** | Transformation | World coordinates in meters. X goes from West to East, Y from South to North and Z is height above terrain. | `position` | Position3D |\n| **Rotation** | Transformation | Local rotation in degrees. X is pitch, Y is roll and Z is yaw. | `rotation` | Array |\n| **Size** | Transformation | Area size in meters. | `size2` | Array |\n| **Size** | Transformation | Area size in meters. | `size3` | Array |\n| **Shape** | Transformation | Area shape.<br>Available options:<br>- **Ellipse**<br>- **Rectangle** | `IsRectangle` | Boolean |\n| **Placement Radius** | Transformation | Placement radius in meters. The entity will start at a random position within the radius. | `placementRadius` | Number |\n| **Player** | Control | Player in singleplayer. When enabled, the character will also be available in multiplayer and team switch ('Playable' status cannot be disabled individually in such case). | `ControlSP` | Boolean |\n| **Playable** | Control | When enabled, the character will appear as a slot in the multiplayer scenario lobby and in the list of roles available for team switch. | `ControlMP` | Boolean |\n| **Role Description** | Control | Multiplayer role description visible in the multiplayer lobby. When undefined, the object type name will be used by default. | `description` | String |\n| **Probability of Presence** | Presence | Probability of presence evaluated at the scenario start. When it fails, the object is not created at all. | `presence` | Number |\n| **Condition of Presence** | Presence | Condition of presence evaluated at the scenario start, must return boolean expression. When false, the object is not created at all. | `presenceCondition` | String |"},{"heading":"Marker","level":4,"markdown":"| Info |  |  | Development |  |  |\n|---|---|---|---|---|---|\n| Name | Category | Description | Property | Type | Correspondence |\n| **Type** | Type | Icon texture. | `itemClass` | String | markerType |\n| **Variable Name** | Init | Unique system name. Can contain any characters. The name is not case sensitive, so 'someName' and 'SOMENAME' are treated as the same variables. | `markerName` | String | createMarker |\n| **Text** | Init | Text displayed right from the marker. | `text` | String | markerText |\n| **Position** | Transformation | World coordinates in meters. X goes from West to East and Y from South to North. | `position` | Position3D | markerPos |\n| **Size** | Transformation | Marker A and B size. | `size2` | Array | markerSize |\n| **Rotation** | Transformation | Rotation in degrees. | `rotation` | Number | markerDir |\n| **Shape** | Style | Marker shape. The marker has to be created as shape marker, for this use \"\" empty string as class name with create3DENEntity, this will create rectangular marker.<br>Available options:<br>- 0 - rectangle<br>- 1 - ellipse | `markerType` | Number | markerShape |\n| **Brush** | Style | Area fill texture. | `brush` | String | markerBrush |\n| **Color** | Style | Marker color. 'Default' is based on the selected marker type. Since Arma 3 v2.22 custom color format is supported as well. See setMarkerColor. | `baseColor` | Array | markerColor |\n| **Alpha** | Style | Transparency. When the icon marker has a shadow, it will be visible behind the transparent icon. | `alpha` | Number | markerAlpha |"},{"heading":"Scenario","level":4,"markdown":""},{"heading":"General","level":5,"markdown":"| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Title** | Presentation | Scenario name. Appears in the scenarios menu, multiplayer lobby and loading screens. Use @STR_ prefix to link to localization keys. | `IntelBriefingName` | String |\n| **Author** | Presentation | Scenario author. Appears in the scenarios menu and in loading screens. | `Author` | String |\n| **Picture** | Overview | Path to overview picture visible in the scenarios menu. When no loading screen picture is defined, this will be used in loading screen instead. | `OverviewPicture` | String |\n| **Text** | Overview | Short overview text visible in the scenarios menu. When no loading screen text is defined, this will be used in loading screens instead. Use @STR_ prefix to link to localization keys. | `OverviewText` | String |\n| **DLC** | Overview | When set, the overview image will be overlaid with a DLC frame indicating the scenario belongs to the DLC. | `AppId` | Number |\n| **Require DLC** | Overview | Sets if the DLC is required. When checked, the player will not be able to play the scenario if the DLC is not owned. | `AssetType` | String |\n| **Picture** | Overview (Locked) | Path to the overview picture visible in the scenarios menu. When no loading screen picture is defined, this will be used in the loading screen instead. | `OverviewPictureLocked` | String |\n| **Text** | Overview (Locked) | Short overview text visible in the scenarios menu when the scenario is locked (see 'Unlock' category for more details). Use @STR_ prefix to link to localization keys. | `OverviewTextLocked` | String |\n| **Picture** | Loading Screen | Path to the picture visible in the loading screens before and during the scenario. | `LoadScreen` | String |\n| **Text** | Loading Screen | Short text visible in loading screens before and during the scenario. Use @STR_ prefix to link to localization keys. | `OnLoadMission` | String |\n| **Show Briefing** | States | When disabled, the scenario will start automatically after the loading, without showing the briefing. Valid only for singleplayer scenarios. | `Briefing` | Boolean |\n| **Show Debriefing** | States | When disabled, the debriefing screen will not be shown when the scenario is completed. | `Debriefing` | Boolean |\n| **Enable Saving** | States | When disabled, the 'SAVE' option in the pause menu will be disabled and scripted autosaves will not do anything. | `Saving` | Boolean |\n| **Show Map** | States | When disabled, a black screen is shown instead of the map. Tasks, notes and other information will remain accessible. Can also be achieved by removing the map from the player's inventory. | `ShowMap` | Boolean |\n| **Show Compass** | States | When disabled, the compass will not be available either on the map, or in the scene after pressing the 'Compass' key. Can also be achieved by removing the compass from the player's inventory. | `ShowCompass` | Boolean |\n| **Show Watch** | States | When disabled, the watch will not be available in the scene after pressing the 'Watch' key. Can also be achieved by removing the watch from the player's inventory. | `ShowWatch` | Boolean |\n| **Show GPS** | States | When disabled, the GPS minimap will not be available in the scene after pressing the 'GPS' key. Can also be achieved by removing the GPS from the player's inventory. | `ShowGPS` | Boolean |\n| **Show HUD** | States | When disabled, on-screen information such as weapon information or the command menu will be hidden. | `ShowHUD` | Boolean |\n| **Show UAV Feed** | States | When disabled, the UAV feed will not be available in the scene after pressing the 'AV Camera' key. | `ShowUAVFeed` | Boolean |\n| **Advanced Flight Model** | States | When enabled, all player controlled helicopters will use the advanced flight model. | `ForceRotorLibSimulation` | Boolean |\n| **Debug Console** | States | Determines debug console availability<br>Available options:<br>- **Available only in editor**<br>- **Available for the host or logged-in admin**<br>- **Available for everyone** | `EnableDebugConsole` | Number |\n| **Unlocked Keys** | Unlock | Keys needed to mark the scenario as completed in the scenarios menu. Can be multiple words divided by a semicolon. Key can be activated using 'activateKey' scripting command. Does not affect the multiplayer and campaign scenarios, and the scenarios downloaded from Steam. | `DoneKeys` | Array |\n| **Required Keys** | Unlock | Keys required for mission to be available for playing from the scenarios menu. Can be multiple words divided by a semicolon. Does not affect the multiplayer and campaign scenarios. | `Keys` | Array |\n| **Required Keys Limit** | Unlock | The number of required keys to be active for the mission to be unlocked. | `KeysLimit` | Number |\n| **Init** | Init | Expression called upon at start. In multiplayer, it is called on every machine and for each player who joins in the progress. The variable 'this' refers to the affected object.<br>> [!WARNING]<br>> Despite the tooltip saying that 'this' refers to the affected object, it does not. There are no arguments passed to this attribute!<br>This attribute behaves similar to the init.sqf. | `Init` | String |\n| **Independents Allegiance** | Misc | Sets who the Independent side will be friendly to. The value is shared across all scenario phases. | `IntelIndepAllegiance` | Array in format [west:Number,east:Number] |\n| **Binarize the Scenario File** | Misc | When true, the *.sqm file will be binarized. The process saves loading time, but makes the file uneditable in a text editor. | `SaveBinarized` | Boolean |"},{"heading":"Environment","level":5,"markdown":"| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Date** | Date | Starting date. | `IntelDate` | Array in format [year, month, day] |\n| **Time** | Date | Starting time of the day. Please note that the sunrise and sunset times are influenced by the date (e.g., days are shorter in winter) and the longitude and latitude of the terrain. | `IntelTime` | Number |\n| **Time of Changes** | Weather Forecast | Delay until all forecasted weather values take effect. | `IntelTimeOfChanges` | Number |\n| **Overcast Start** | Overcast | Initial cloud cover. Unless set manually, this value also affects rain, lightning, waves, wind and gusts values. | `IntelWeatherStart` | Number |\n| **Overcast Forecast** | Overcast | Forecasted cloud cover. | `IntelWeatherForecast` | Number |\n| **Fog Start** | Fog | Initial fog. Strength affects not only how far player can see, but also limits the sight of AI entities. | `IntelFogStart` | Number |\n| **Fog Forecast** | Fog | Forecasted fog. | `IntelFogForecast` | Number |\n| **Manual Override** | Rain | Enables manual settings in this category. When disabled, the engine will calculate the values automatically. | `IntelRainIsForced` | Boolean |\n| **Rain Start** | Rain | Initial rain strength. Applied only when the cloud cover is already bad, i.e., a high value is ignored when the weather is sunny. | `IntelRainStart` | Number |\n| **Rain Forecast** | Rain | Forecasted rain strength. | `IntelRainForecast` | Number |\n| **Manual Override** | Lightnings | Enables manual settings in this category. When disabled, the engine will calculate the values automatically. | `IntelLightningIsForced` | Boolean |\n| **Lightnings Start** | Lightnings | Initial frequency of lightning. Applied only when the cloud cover is already bad, i.e., a high value is ignored when the weather is sunny. | `IntelLightningStart` | Number |\n| **Lightnings Forecast** | Lightnings | Forecasted frequency of lightning. | `IntelLightningForecast` | Number |\n| **Manual Override** | Waves | Enables manual settings in this category. When disabled, the engine will calculate the values automatically. | `IntelWavesIsForced` | Boolean |\n| **Waves Start** | Waves | Initial waves size. Applied independently of cloud cover settings. | `IntelWavesStart` | Number |\n| **Waves Forecast** | Waves | Forecasted waves size. | `IntelWavesForecast` | Number |\n| **Manual Override** | Wind | Enables manual settings in this category. When disabled, the engine will calculate the values automatically. | `IntelWindIsForced` | Boolean |\n| **Wind Start** | Wind | Initial wind strength. Together with wind direction, it influences how clouds, smoke, vegetation or flags are moving. | `IntelWindStart` | Number |\n| **Wind Forecast** | Wind | Forecasted wind strength. | `IntelWindForecast` | Number |\n| **Gusts Start** | Wind | Initial gusts strength. Gusts are randomly changing wind direction. The worse the cloud cover, the stronger and more frequent the changes. | `IntelWindGustStart` | Number |\n| **Gusts Forecast** | Wind | Forecasted gusts value. | `IntelWindGustForecast` | Number |\n| **Direction Start** | Wind | Initial wind direction. | `IntelWindDirectionStart` | Number |\n| **Direction Forecast** | Wind | Forecasted wind direction. | `IntelWindDirectionForecast` | Number |"},{"heading":"Multiplayer","level":5,"markdown":"| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Game Type** | Type | Scenario type shown in the server browser and in the loading screen. | `GameType` | String |\n| **Min Players** | Type | Minimum number of required players. | `MinPlayers` | Number |\n| **Max Players** | Type | Minimum number of allowed players. | `MaxPlayers` | Number |\n| **Summary** | Lobby | Short summary shown in the scenario lobby. | `IntelOverviewText` | Structured Text |\n| **Enable AI** | Lobby | When AI is enabled, all playable characters are created at the scenario start, controlled by AI. Upon joining, a player takes control of an existing character.<br>When AI is disabled, a new character is created for each connecting player.<br>Server host can disable AI even when it is allowed by default. | `DisabledAI` | Boolean |\n| **Auto Assign Slots** | Lobby | When enabled, arriving players will be first assigned to the side with the lowest number of players. Valid only for scenarios with multiple playable sides involved. | `JoinUnassigned` | Boolean |\n| **Respawn** | Respawn | Character respawn type. Defines what happens to players and playable characters after they die in multiplayer scenarios. Has no effect in singleplayer scenarios.<br>Available options:<br>- **Disabled** - No respawn.<br>- **Respawn on Custom Position** - Respawn on a position defined by the marker with a specific prefix in the name. When multiple ones are available, a random one is selected.<br>- respawn - position available for all sides<br>- respawn_west - BLUFOR respawn<br>- respawn_east - OPFOR respawn<br>- respawn_guerrila - Independent respawn<br>- respawn_civilian - Civilian respawn<br>Because these are prefixes, anything can follow them, e.g., respawn_1, respawn_west_base, etc.<br>- **Respawn on Position of Death** - Respawn where killed, even if the dead body moved.<br>- **Switch to Group Member** - Take control of the next available group member. When none are left, 'Switch to Spectator' respawn is used instead.<br>- **Switch to Side Member** - Pick a character on the same side to take control of. When none are left, 'Switch to Spectator' respawn is used instead.<br>- **Switch to Spectator** - Spectate the scenario without being directly involved. | `Respawn` | Number |\n| **Rulesets** | Respawn | Specific respawn rulesets based on currently selected 'Respawn'. | `RespawnTemplates` | Array |\n| **Respawn Delay** | Respawn | Time in seconds after which players respawn. | `RespawnDelay` | Number |\n| **Vehicle Respawn Delay** | Respawn | Time in seconds after which vehicles respawn. | `RespawnVehicleDelay` | Number |\n| **Show Scoreboard** | Respawn | When enabled, the scoreboard is shown while waiting for respawn. May be subdued by some respawn rulesets. | `RespawnDialog` | Boolean |\n| **Allow Manual Respawn** | Respawn | When enabled, players will have the option to manually respawn in the pause menu. | `RespawnButton` | Boolean |\n| **Enable Team Switch** | Respawn | When enabled, players will be able to manually switch to any other playable character in the scenario not controlled by another player. | `EnableTeamSwitch` | Boolean |\n| **Allow AI Score** | Respawn | When enabled, the score of playable characters controlled by AI will appear on the scoreboard. | `AIKills` | Boolean |\n| **Shared Objectives** | Tasks | Sets if tasks assigned to friendlies are visualized to player and who can assign/unassign tasks.<br>Available options:<br>- **Disabled** - Tasks assigned by friendlies are not marked.<br>- **Enabled** - Tasks assigned by friendlies are marked to player.<br>- **Enabled with Task Propagation** - Tasks assigned by friendlies are marked to player, but only group leaders can assign and unassign tasks. Task assignment changes are automatically propagated to subordinates. | `SharedObjectives` | String |\n| **Revive Mode** | Revive | Controls who can be incapacitated and who can revive others.<br>Available options:<br>- **Disabled** - Revive is completely disabled. All players will die immediately.<br>- **Enabled for all players** - Revive is enabled for all players.<br>- **Controlled by player Attributes** - Only players with Revive enabled in their Attributes are effected. | `ReviveMode` | String |\n| **Required Trait** | Revive | Controls the specialty required to revive others.<br>Available options:<br>- **None** - Anyone can revive.<br>- **Medic** - Only players with the 'Medic' trait can revive. | `ReviveRequiredTrait` | String |\n| **Required Items** | Revive | Controls the item required to revive others.<br>Available options:<br>- **None** - No special item is required in order to revive.<br>- **Medikit** - The 'Medikit' item is required in order to revive.<br>- **First Aid Kit / Medikit** - 'Medikit' or 'First Aid Kit' items are required in order to revive. | `ReviveRequiredItems` | String |\n| **Revive Duration** | Revive | Controls the time it takes to revive someone. | `ReviveDelay` | String |\n| **Medic Speed Multiplier** | Revive | Controls how much faster a medic revives someone. | `ReviveMedicSpeedMultiplier` | String |\n| **Force Respawn Duration** | Revive | Controls how long it takes to force respawn while incapacitated. | `ReviveForceRespawnDelay` | String |\n| **Incapacitation Mode** | Revive | Controls the level of simulation involved in triggering incapacitation.<br>Available options:<br>- **Basic** - Players will always enter the incapacitated state.<br>- **Advanced** - Extensive wounds will kill players instantly. | `ReviveUnconsciousStateMode` | String |\n| **Bleed Out Duration** | Revive | Controls how long it takes an incapacitated unit to bleed out. | `ReviveBleedOutDelay` | String |"},{"heading":"Garbage Collection","level":5,"markdown":"| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Minimum distance** | Garbage Collection | The minimum distance from any player. Set the value to 0 to remove the min. distance. | `MinPlayerDistance` | Number |\n| **Character Corpses** | Garbage Collection |  | `AttributeSystemSubcategory` |  |\n| **Mode** | Garbage Collection | Garbage collecting mode.<br>Available options:<br>- **None**<br>- **All scenario objects**<br>- **Only objects that can respawn**<br>- **Only objects that cannot respawn** | `CorpseManagerMode` | Number |\n| **Limit** | Garbage Collection | Maximum allowed number of dead bodies in the scenario. | `CorpseLimit` | Number |\n| **Min Delay** | Garbage Collection | Time in seconds before a dead body is removed when the number of dead bodies exceeds the 'Limit'. | `CorpseRemovalMinTime` | Number |\n| **Max Delay** | Garbage Collection | Time in seconds before a dead body is removed when the number of dead bodies is below or equals the 'Limit'. | `CorpseRemovalMaxTime` | Number |\n| **Vehicle Wrecks** | Garbage Collection |  | `AttributeSystemSubcategory` |  |\n| **Mode** | Garbage Collection | Garbage collecting mode.<br>Available options:<br>- **None**<br>- **All scenario objects**<br>- **Only objects that can respawn**<br>- **Only objects that cannot respawn** | `WreckManagerMode` | Number |\n| **Limit** | Garbage Collection | Maximum allowed number of dead bodies in the scenario. | `WreckLimit` | Number |\n| **Min Delay** | Garbage Collection | Time in seconds before a dead body is removed when the number of dead bodies exceeds the 'Limit'. | `WreckRemovalMinTime` | Number |\n| **Max Delay** | Garbage Collection | Time in seconds before a dead body is removed when the number of dead bodies is below or equals the 'Limit'. | `WreckRemovalMaxTime` | Number |\n| **Enable Dynamic Simulation** | Dynamic Simulation | Turns on the 'Dynamic Simulation' system. Only entities and groups with the 'Dynamic Simulation' will be affected. | `DynSimEnabled` |  |\n| **Characters** | Dynamic Simulation |  | `DynSimDistGroup` |  |\n| **Manned Vehicles** | Dynamic Simulation |  | `DynSimDistVehicle` |  |\n| **Props** | Dynamic Simulation |  | `DynSimDistProp` |  |\n| **Empty Vehicles** | Dynamic Simulation |  | `DynSimDistEmptyVehicle` |  |\n| **Is Moving** | Dynamic Simulation | Multiplies activation distance of non-static entity by set value. | `DynSimMovingCoef` |  |\n| **Limit by View Distance** | Dynamic Simulation | Limits all activation distances to player's object view distance. Dynamically simulated entities beyond the object view distance will be disabled. | `DynSimSaturateByObjDist` |  |"},{"heading":"Comment","level":4,"markdown":"| Info |  |  | Development |  |\n|---|---|---|---|---|\n| Name | Category | Description | Property | Type |\n| **Title** | Init | Text displayed above the comment icon. | `Name` | String |\n| **Tooltip** | Init | Text displayed as a tooltip when hovering over the comment icon. | `Description` | String |\n| **Position** | Init | World coordinates in meters. X goes from West to East, Y from South to North and Z is height above sea level. | `position` | Position3D |\n| **Rotation** | Init | Local rotation in degrees. X is pitch, Y is roll and Z is yaw. | `rotation` | Number |"}],"categories":["Eden Editor: Asset Types","Eden Editor: Editing","Eden Editor: Modding"],"groups":["Mission Editing"]}