Introduction[]
While Eden Editor Workspace behaves like a normal scenario and it's possible to modify entities using existing commands (e.g., setPos), such changes would be invisible for the editor and not saved to the scenario file.
Instead, 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.
When 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. Using commands setPos or setOvercast would seemingly achieve the same, but without permanent effect - the changes wouldn't be visible next time the scenario is loaded.
Scripting[]
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.
! | Attributes are available only within the Eden Editor workspace. You cannot access them in scenario preview or exported scenario! |
Setting Entity Attributes[]
To set an attribute, you need to know it's property and value type. Tables below will help you with that - look at the last two columns, labeled Development. For example to set player as invincible, we'll use Enable Damage attribute. You can see its class is allowDamage (corresponding with allowDamage command; most attributes are named this way) and its value type is Bool. This is how the expression will look like:
player set3DENAttribute ["allowDamage",false];
You can also check for the attribute state:
_isInvincible = player get3DENAttribute "allowDamage";
Managing History[]
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. To prevent this, you can collect multiple changes together by wrapping them inside collect3DENHistory command:
collect3DENHistory { { _x set3DENAttribute ["allowDamage",false]; } forEach (all3DENEntities select 0); };
Alternatively, you can use more set3DENAttributes command which is able to modify multiple entities at once already.
Setting Object Type[]
Objects have also special attribute ItemType, which defines which object class will represent them (i.e., a soldier, a car, a house, etc.). It 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:
player set3DENObjectType "B_Soldier_F";
Setting Scenario Attributes[]
Attributes[]
Object[]
Info | Development | |||
---|---|---|---|---|
Name | Category | Description | Property | Type |
Type | Type | Object type. Can be changed only to another type of the same side,
e.g., you can change BLUFOR Car to BLUFOR Helicopter, but not to OPFOR Car or a Prop. |
ItemClass | String |
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 |
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 |
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 |
Rotation | Transformation | Local rotation in degrees. X is pitch, Y is roll and Z is yaw. | rotation | Number |
Placement Radius | Transformation | Placement radius in meters. The entity will start at a random position within the radius. | placementRadius | Number |
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 | Bool |
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 | Bool |
Role Description | Control | Multiplayer role description visible in the multiplayer lobby. When undefined, the object type name will be used by default. | description | String |
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.
Available options:
|
lock | Number |
Skill | States | General AI skill. The attribute does not allow for decreasing it below 20%, because AI behavior would be too simplified. | skill | Number |
Health / Armor | States | Object health / armor. When close to 0%, the object will be destroyed. | Health | Number |
Fuel | States | Vehicle fuel. | fuel | Number |
Ammunition | States | General vehicle ammo state. | ammo | Number |
Rank | States | Character rank. When a group leader is killed, the subordinate with the highest rank will take over.
Available options:
|
rank | String |
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 | Bool |
Enable Simulation | Special States | Enable simulation. When disabled, the object will freeze and ignore any input or collisions. | enableSimulation | Bool |
Enable Damage | Special States | Set if the object can receive any damage. When a vehicle is invincible, its crew can still be killed. | allowDamage | Bool |
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 | Bool |
Name | Identity | Character name, by default automatically generated based on faction. | unitName | String |
Face | Identity | Character face. | face | String |
Voice | Identity | Radio voice used in group communication (e.g., target reporting). | speaker | String |
Voice Pitch | Identity | Voice pitch. Higher number means higher voice. | pitch | Number |
Probability of Presence | Presence | Probability of presence evaluated at the scenario start. When it fails, the object is not created at all. | presence | Number |
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 |
Equipment Storage | Equipment Storage | Contents of inventory storage available in ammo boxes and vehicles. | ammoBox | String |
Composition[]
Info | Development | |||
---|---|---|---|---|
Name | Category | Description | Property | Type |
Callsign | State | Group callsign as displayed in the radio chat log. | groupID | String |
Combat Mode | State | Controls how and when the group will choose to engage enemy targets.
Available options:
|
combatMode | String |
Behavior | State | Behavior pattern of the group.
Available options:
|
behaviour | String |
Formation | State | Default group formation. Based on the combat mode, group members may ignore the formation in 'Combat' and 'Stealth' modes.
Available options:
|
formation | String |
SpeedMode | State | Default travel speed of the group. In Combat and Stealth behavior modes, group members will try to prioritize this setting.
Available options:
|
speedMode | String |
Trigger[]
Info | Development | |||
---|---|---|---|---|
Name | Category | Description | Property | Type |
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 |
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 |
Shape | Transformation | Area shape.
Available options:
|
IsRectangle | Bool |
Size | Transformation | Area size in meters. | size2 | Array |
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 |
Rotation | Transformation | Local rotation in degrees. X is pitch, Y is roll and Z is yaw. | rotation | Number |
Type | Activation | Trigger type, determines special behavior upon activation.
Available options:
|
TriggerType | String |
Activation | Activation | What or who can activate the trigger. Some options further depend on 'Activation Condition'.
Available options:
|
ActivationBy | String |
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.
Available options:
|
activationByOwner | String |
Activation Condition | Activation | Condition of the 'Activation' attribute.
Available options:
|
activationType | String |
Repeatable | Activation | Repetition rules. When enabled, the trigger can be activated again once deactivated. | repeatable | Bool |
Condition | Expression | Repeatedly calculated condition, must return boolean expression. When true, the trigger will be activated.
Passed variables are:
|
condition | String |
On Activation | Expression | Expression executed once the trigger is activated.
Passed variables are:
|
onActivation | String |
On Deactivation | Expression | Expression executed once the trigger is deactivated.
Passed variables are:
|
onDeactivation | String |
Timer Type | Timer | Type of activation timer.
Available options:
|
interuptable | Bool |
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] |
Effect Condition | Effects | Condition for effects to be played, must return boolean expression. | effectCondition | String |
Sound | Effects | Sound played upon activation. | sound | String |
Voice | Effects | Sound spoken by the first unit which activated the trigger. | voice | String |
Environment | Effects | Environment sounds played upon activation. | soundEnvironment | String |
SFX | Effects | Sound effect played by the trigger upon activation. Repeats as long as the trigger is active. | soundTrigger | String |
Music | Effects | Music played upon activation. Replaces previously playing music track. | music | String |
UI Overlay | Effects | User interface overlay shown upon activation. | title | String |
Waypoint[]
Info | Development | |||
---|---|---|---|---|
Name | Category | Description | Property | Type |
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.
Some waypoints have special attributes, which are only available the next time you access the attribute window. |
itemClass | String |
Description | Init | Text visible for the player next to the waypoint icon in the scene. | description | String |
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 | |
Identified | Init | System name of the waypoint, used for identification in scripts. | name | String |
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 |
Placement Radius | Transformation | Placement radius in meters. The entity will start at a random position within the radius. | placementRadius | Number |
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 |
Combat Mode | State | Controls how and when the group will choose to engage enemy targets.
Available options:
|
combatMode | String |
Behavior | State | Behavior pattern of the group.
Available options:
|
behaviour | String |
Formation | State | Default group formation. Based on the combat mode, group members may ignore the formation in 'Combat' and 'Stealth' modes.
Available options:
|
formation | String |
SpeedMode | State | Default travel speed of the group. In Combat and Stealth behavior modes, group members will try to prioritize this setting.
Available options:
|
speedMode | String |
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.
Passed variables are:
|
condition | String |
On Activation | Expression | Expression called when the waypoint is completed.
Passed variables are:
|
onActivation | String |
Script | Expression | Script executed when 'SCRIPTED' waypoint type is selected. The waypoint will be completed once the script is finished. | script | String |
Map Visibility | Visibility | Make the waypoint visible for the player on the map. | show2D | Bool |
Scene Visibility | Visibility | Make the waypoint visible for the player in the scene. | show3D | Bool |
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] |
Effect Condition | Effects | Condition for effects to be played, must return boolean expression. | effectCondition | String |
Sound | Effects | Sound played upon activation. | sound | String |
Voice | Effects | Sound spoken by the first unit which activated the trigger. | voice | String |
Environment | Effects | Environment sounds played upon activation. | soundEnvironment | String |
Music | Effects | Music played upon activation. Replaces previously playing music track. | music | String |
UI Overlay | Effects | User interface overlay shown upon activation. | title | String |
System[]
Info | Development | |||
---|---|---|---|---|
Name | Category | Description | Property | Type |
Type | Type | Object class. | itemClass | String |
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 |
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 |
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 |
Rotation | Transformation | Local rotation in degrees. X is pitch, Y is roll and Z is yaw. | rotation | Number |
Placement Radius | Transformation | Placement radius in meters. The entity will start at a random position within the radius. | placementRadius | Number |
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 | Bool |
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 | Bool |
Role Description | Control | Multiplayer role description visible in the multiplayer lobby. When undefined, the object type name will be used by default. | description | String |
Probability of Presence | Presence | Probability of presence evaluated at the scenario start. When it fails, the object is not created at all. | presence | Number |
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 |
Marker[]
Info | Development | |||
---|---|---|---|---|
Name | Category | Description | Property | Type |
Type | Type | Icon texture. | itemClass | String |
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. | name | String |
Text | Init | Text displayed right from the marker. | text | String |
Size | Transformation | Area size in meters. | size2 | Array |
Position | Transformation | World coordinates in meters. X goes from West to East and Y from South to North. | position | Position3D |
Rotation | Transformation | Local rotation in degrees. X is pitch, Y is roll and Z is yaw. | rotation | Number |
Shape | Style | Area shape.
Available options:
|
markerType | String |
Brush | Style | Area fill texture. | brush | String |
Color | Style | Marker color. 'Default' is based on the selected marker type. | baseColor | Array |
Alpha | Style | Transparency. When the icon marker has a shadow, it will be visible behind the transparent icon. | alpha | Number |
Scenario[]
General[]
Info | Development | |||
---|---|---|---|---|
Name | Category | Description | Property | Type |
Title | Presentation | Scenario name. Appears in the scenarios menu, multiplayer lobby and loading screens. Use @STR_ prefix to link to localization keys. | IntelBriefingName | String |
Author | Presentation | Scenario author. Appears in the scenarios menu and in loading screens. | Author | String |
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 |
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 |
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 |
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 |
Picture | Loading Screen | Path to the picture visible in the loading screens before and during the scenario. | LoadScreen | String |
Text | Loading Screen | Short text visible in loading screens before and during the scenario. Use @STR_ prefix to link to localization keys. | OnLoadMission | String |
Show Briefing | States | When disabled, the scenario will start automatically after the loading, without showing the briefing. Valid only for singleplayer scenarios. | Briefing | Bool |
Show Debriefing | States | When disabled, the debriefing screen will not be shown when the scenario is completed. | Debriefing | Bool |
Enable Saving | States | When disabled, the 'SAVE' option in the pause menu will be disabled and scripted autosaves will not do anything. | Saving | Bool |
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 | Bool |
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 | Bool |
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 | Bool |
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 | Bool |
Show HUD | States | When disabled, on-screen information such as weapon information or the command menu will be hidden. | ShowHUD | Bool |
Show UAV Feed | States | When disabled, the UAV feed will not be available in the scene after pressing the 'AV Camera' key. | ShowUAVFeed | Bool |
Advanced Flight Model | States | When enabled, all player controlled helicopters will use the advanced flight model. | ForceRotorLibSimulation | Bool |
Debug Console | States | Determines debug console availability
Available options:
|
EnableDebugConsole | Number |
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 |
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 |
Required Keys Limit | Unlock | The number of required keys to be active for the mission to be unlocked. | KeysLimit | Number |
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] |
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 | Bool |
Environment[]
Info | Development | |||
---|---|---|---|---|
Name | Category | Description | Property | Type |
Date | Date | Starting date. | IntelDate | Array in format [year, month, day] |
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 |
Time of Changes | Weather Forecast | Delay until all forecasted weather values take effect. | IntelTimeOfChanges | Number |
Overcast Start | Overcast | Initial cloud cover. Unless set manually, this value also affects rain, lightning, waves, wind and gusts values. | IntelWeatherStart | Number |
Overcast Forecast | Overcast | Forecasted cloud cover. | IntelWeatherForecast | Number |
Fog Start | Fog | Initial fog. Strength affects not only how far player can see, but also limits the sight of AI entities. | IntelFogStart | Number |
Fog Forecast | Fog | Forecasted fog. | IntelFogForecast | Number |
Manual Override | Rain | Enables manual settings in this category. When disabled, the engine will calculate the values automatically. | IntelRainIsForced | Bool |
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 |
Rain Forecast | Rain | Forecasted rain strength. | IntelRainForecast | Number |
Manual Override | Lightnings | Enables manual settings in this category. When disabled, the engine will calculate the values automatically. | IntelLightningIsForced | Bool |
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 |
Lightnings Forecast | Lightnings | Forecasted frequency of lightning. | IntelLightningForecast | Number |
Manual Override | Waves | Enables manual settings in this category. When disabled, the engine will calculate the values automatically. | IntelWavesIsForced | Bool |
Waves Start | Waves | Initial waves size. Applied independently of cloud cover settings. | IntelWavesStart | Number |
Waves Forecast | Waves | Forecasted waves size. | IntelWavesForecast | Number |
Manual Override | Wind | Enables manual settings in this category. When disabled, the engine will calculate the values automatically. | IntelWindIsForced | Bool |
Wind Start | Wind | Initial wind strength. Together with wind direction, it influences how clouds, smoke, vegetation or flags are moving. | IntelWindStart | Number |
Wind Forecast | Wind | Forecasted wind strength. | IntelWindForecast | Number |
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 |
Gusts Forecast | Wind | Forecasted gusts value. | IntelWindGustForecast | Number |
Direction Start | Wind | Initial wind direction. | IntelWindDirectionStart | Number |
Direction Forecast | Wind | Forecasted wind direction. | IntelWindDirectionForecast | Number |
Multiplayer[]
Info | Development | |||
---|---|---|---|---|
Name | Category | Description | Property | Type |
Game Type | Type | Scenario type shown in the server browser and in the loading screen. | GameType | String |
Min Players | Type | Minimum number of required players. | MinPlayers | Number |
Max Players | Type | Minimum number of allowed players. | MaxPlayers | Number |
Summary | Lobby | Short summary shown in the scenario lobby. | IntelOverviewText | Text |
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.
When AI is disabled, a new character is created for each connecting player. Server host can disable AI even when it is allowed by default. |
DisabledAI | Bool |
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 | Bool |
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.
Available options:
|
Respawn | Number |
Rulesets | Respawn | Specific respawn rulesets based on currently selected 'Respawn'. | RespawnTemplates | Array |
Respawn Delay | Respawn | Time in seconds after which players respawn. | RespawnDelay | Number |
Vehicle Respawn Delay | Respawn | Time in seconds after which vehicles respawn. | RespawnVehicleDelay | Number |
Show Scoreboard | Respawn | When enabled, the scoreboard is shown while waiting for respawn. May be subdued by some respawn rulesets. | RespawnDialog | Bool |
Allow Manual Respawn | Respawn | When enabled, players will have the option to manually respawn in the pause menu. | RespawnButton | Bool |
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 | Bool |
Allow AI Score | Respawn | When enabled, the score of playable characters controlled by AI will appear on the scoreboard. | AIKills | Bool |
Garbage Collection[]
Info | Development | |||
---|---|---|---|---|
Name | Category | Description | Property | Type |
Mode | Character Corpses | Garbage collecting mode.
Available options:
|
CorpseManagerMode | Number |
Limit | Character Corpses | Maximum allowed number of dead bodies in the scenario. | CorpseLimit | Number |
Min Delay | Character Corpses | Time in seconds before a dead body is removed when the number of dead bodies exceeds the 'Limit'. | CorpseRemovalMinTime | Number |
Max Delay | Character Corpses | Time in seconds before a dead body is removed when the number of dead bodies is below or equals the 'Limit'. | CorpseRemovalMaxTime | Number |
Mode | Vehicle Wrecks | Garbage collecting mode.
Available options:
|
WreckManagerMode | Number |
Limit | Vehicle Wrecks | Maximum allowed number of dead bodies in the scenario. | WreckLimit | Number |
Min Delay | Vehicle Wrecks | Time in seconds before a dead body is removed when the number of dead bodies exceeds the 'Limit'. | WreckRemovalMinTime | Number |
Max Delay | Vehicle Wrecks | Time in seconds before a dead body is removed when the number of dead bodies is below or equals the 'Limit'. | WreckRemovalMaxTime | Number |