Blowout / Emission
A blowout, also known as an emission, is a map-wide event. All players experience it at the same time and it is almost fully synchronized across clients. A massive surge of psy energy is released, announced by harsh winds, thunderstorms, orange waves in the sky, and ultimately a wave-like energy burst that kills anyone not in shelter.
Blowout Stages
A blowout consists of five distinct stages.
Stage 0
This stage represents normal gameplay. Either no blowout is currently happening or one has just concluded. Nothing unusual is occurring, which is why this stage is referred to as stage zero.
Stage 1
This is the warm-up stage, marking the beginning of a blowout. Environmental sounds fade, the world becomes eerily quiet, and is eventually followed by a groan and what sounds like an explosion in the air.
This stage lasts 60 seconds.
Stage 2
This is the holding stage, intended to give players time to reach a safe location. The duration of this stage is defined by the mission maker, Zeus, or the script that initiated the blowout.
During this stage, strong winds shake the trees, lightning bolts strike frequently, psy lines form across the horizon, and a constant background rumble can be heard.
Stage 3
This stage lasts 30 seconds and is the final warning before the blowout fully strikes. Winds become extreme, lightning intensifies, and psy effects grow stronger. During this stage, the first psy wave appears. It does not kill or knock players unconscious, but serves as a clear warning that time is running out.
If you are not in a safe location by this point, you are in serious danger.
Stage 4
This is the lethal stage where the deadly psy wave arrives. If the player is not in cover, they will first be thrown to the ground shortly before the wave hits. When the wave strikes, it kills instantly with no way to survive unless the player is in shelter.
There are additional options available for mission makers, which are described below.
Starting a Blowout
Zeus
The most common way to start a blowout is through the Zeus interface. To use this method, the mod ZEN must be enabled for the blowout module to appear in the Zeus modules tab.
3DEN Module
A dedicated module is available in the 3DEN Editor for starting a blowout. Be aware that the blowout will activate immediately unless the module is synchronized to a trigger.
By syncing the module to a trigger, activation can be delayed until the trigger conditions are met.
Scripting
A coordinator function exists for controlling blowouts via script. This function is server-only and will not work if called on a non-server machine.
Function name:diwako_anomalies_main_fnc_blowoutCoordinator
Parameters:
| Index | Name | Description | Default |
|---|---|---|---|
| 1 | _time | Time until the deadly psy wave hits. Must be at least 102 or it will abort | 400 |
| 2 | _direction | Direction the wave approaches, in bearing degrees | 0 |
| 3 | _useSirens | Whether sirens should be audible | true |
| 4 | _onlyPlayers | If false, AI are also affected. May impact performance with many AI | true |
| 5 | _isLethal | Whether the final wave is lethal | true |
| 6 | _environmentParticleEffects | Enables wind-blown leaves, dust, and similar effects | true |
| 6 | _psyWave | Show a wave of psy energy go over the whole terrain | true |
There is also a CBA server event named diwako_anomalies_main_startBlowout. It forwards its parameters directly to the coordinator function, allowing you to avoid dealing with locality.
Example:
["diwako_anomalies_main_startBlowout", [_time, _direction, _useSirens, _onlyPlayers, _isLethal, _environmentParticleEffects, _psyWave]] call CBA_fnc_serverEvent;
How Is a Player Safe From a Blowout?
By default, when the psy wave hits, a check is performed to determine whether the affected unit is safe. There are two mechanisms used to determine safety.
The Automatic Way
A basic check determines whether a unit is indoors using Arma’s vanilla insideBuilding command, which was introduced in Arma 3 version 2.12.
This command can be unreliable, as it depends on buildings being properly configured. As a result, some modded buildings may not be recognized as indoor spaces by the engine.
In Arma terms, being indoors is determined using sound shaders. If you have played Arma for a while, you may have noticed that gunfire sounds more echo-like when fired inside buildings. Properly configured buildings apply an indoor sound shader to units inside them.
The insideBuilding command checks for this shader to determine whether a unit is indoors. This approach is fast and efficient, as the engine already applies these shaders internally.
Additional ray casts are used to verify that a roof is present above the unit, preventing edge cases such as standing in a doorway from being considered safe.
The downside of this method is that not all buildings are considered safe. Relying solely on ray casts would be expensive and error-prone. For example, standing under a tree might be considered safe, random props could interfere with checks, large warehouses might fail due to distant walls, or broken roof windows could expose the player.
The Mission Maker Way
The Functions and Variables section documents variables that mission makers can use to define custom safe areas.
The primary variable for this purpose is blowout_safe. When set on an object or unit, it marks that location as safe from blowouts.
This variable can be set using Zeus, triggers, or global events to designate safe zones anywhere on the map.
Example using a trigger:
Condition:
this && (player in thisList)
Activation:
player setVariable ["blowout_safe", true];
Deactivation:
player setVariable ["blowout_safe", false];
Blowout system
The mod includes a system that can periodically trigger blowouts/emissions. This system is intended for long-running missions or scenarios where no Zeus is present.
After a blowout has concluded, the system enters a waiting phase before initiating the next event. Mission makers can configure both a minimum and a maximum delay for this waiting period. The next blowout will be triggered at a random time between these two values.
Usage
3DEN
In the 3DEN editor, a module named “Blowout System” is available. This module provides the same configuration options as the standard one-time blowout module, with the addition of two parameters that define the minimum and maximum delay (in minutes) between consecutive blowouts.
Scripting
The blowout system can also be started via script. This is useful for missions that do not want to rely on a hard dependency to the mod itself.
This function must be executed on the server. It will not run on clients.
Function name:diwako_anomalies_main_fnc_blowoutCoordinator
Parameters:
| Index | Name | Description | Default |
|---|---|---|---|
| 1 | _minimalDelay | Minimum delay before the next blowout, in minutes | 10 |
| 2 | _maximumDelay | Maximum delay before the next blowout, in minutes | 60 |
| 3 | _condition | Code block or string. Return true to allow blowouts, false to prevent them | {true} |
| 4 | _blowoutTime | Time until the deadly psy wave hits. Must be at least 102 or it will abort | 400 |
| 5 | _direction | Direction the wave approaches, in bearing degrees | 0 |
| 6 | _useSirens | Whether sirens should be audible | true |
| 7 | _onlyPlayers | If false, AI are also affected. May impact performance with many AI | true |
| 8 | _isLethal | Whether the final wave is lethal | true |
| 9 | _environmentParticleEffects | Enables wind-blown leaves, dust, and similar effects | true |
| 10 | _psyWave | Show a wave of psy energy go over the whole terrain | true |
Example:
if (isServer) then {
private _minimalDelay = 10;
private _maximumDelay = 60;
private _condition = {true};
private _blowoutTime = 400;
private _direction = random 360;
private _useSirens = true;
private _onlyPlayers = true;
private _isLethal = true;
private _environmentParticleEffects = true;
private _psyWave = true;
[
_minimalDelay,
_maximumDelay,
_condition,
_blowoutTime,
_direction,
_useSirens,
_onlyPlayers,
_isLethal,
_environmentParticleEffects,
_psyWave
] call diwako_anomalies_main_fnc_blowoutCoordinator;
};