Files
MissionTemplate/framework/emp/functions/fn_playLocalEffects.sqf
2024-02-09 21:37:59 -08:00

102 lines
4.3 KiB
Plaintext

#include "..\script_component.hpp"
// Executed on all machines with an interface
// This plays the effects of the EMP itself going off
if (!hasInterface) exitWith {};
params [["_origin", [], [[]]]];
if (count _origin isEqualTo 0) exitWith {};
private _e_static3 = "#particlesource" createVehicleLocal (ASLToAGL _origin);
_e_static3 setParticleCircle [0, [0, 0, 0]];
_e_static3 setParticleRandom [0.2, [0,0,0], [0.175, 0.175, 0.175], 0.25, 0.15, [0, 0, 0, 1], 1, 0];
_e_static3 setParticleParams [["\A3\data_f\blesk1", 1, 0, 1], "", "SpaceObject", 1, 0.75, [0, 0, 1], [0, 0, 0], 0, 10, 7.9,0, [0, 0.2], [[1, 1, 0.1, 1], [1, 1, 1, 1]], [0.01], 1, 0, "", "", objNull,0,false,-1,[[100,100,100,1],[1,1,1,1]]];
_e_static3 setDropInterval 0.15;
private _ripple2 = "#particlesource" createVehicleLocal (ASLToAGL _origin);
_ripple2 setParticleCircle [0,[0,0,0]];
_ripple2 setParticleRandom [0.1,[0,0,0],[0,0,0],25,1,[0,0,0,0.1],0,0];
_ripple2 setParticleParams [["\A3\data_f\ParticleEffects\Universal\Refract.p3d",1,0,1], "", "Billboard", 1, 1, [0, 0, 1], [0, 0, 0],0,10,7.9,0, [5,0], [[1, 1, 1, 1], [1, 1, 1, 1]], [0.05], 1, 0, "", "", objNull];
_ripple2 setDropInterval 0.05;
private _light_emp = "#lightpoint" createVehiclelocal (ASLToAGL _origin);
// _light_emp lightAttachObject [objNull, [0,0,0.5]];
_light_emp setLightAmbient [0.1,0.1,1];
_light_emp setLightColor [0.1,0.1,1];
_light_emp setLightBrightness 0;
_light_emp setLightUseFlare true;
_light_emp setLightFlareSize 1;
_light_emp setLightFlareMaxDistance 2500;
_light_emp setLightDayLight true;
_light_emp setLightAttenuation [5,1,1,1,5,1000];
_brit = 0;
// local only, last param
playSound3D [QGVAR(sound_electric_explsion_impact_large), nil, false, _origin, 1, 1, 3500, 0, true];
[_light_emp, _brit, _ripple2] spawn {
params ["_light_emp", "_brit", "_ripple2"];
while {_brit < 6.5} do {
// takes ~1.73 seconds to reach full brightness
_light_emp setLightBrightness _brit;
_brit = _brit+0.02; //timing for next stage
sleep 0.01;
};
deleteVehicle _ripple2;
};
[{
params ["_origin", "_light_emp"];
private _e_static2 = "#particlesource" createVehicleLocal (ASLToAGL _origin);
_e_static2 setParticleCircle [0, [0, 0, 0]];
_e_static2 setParticleRandom [0.2, [0,0,0], [0, 0, 0], 0.25, 1.05, [0, 0, 0, 1], 1, 0];
_e_static2 setParticleParams [["\A3\data_f\blesk1", 1, 0, 1], "", "SpaceObject", 1, 0.75, [0, 0, 0], [0, 0, 1], 0, 10, 7.9,0, [0,0.5], [[1, 1, 0.1, 1], [1, 1, 1, 1]], [0.08], 1, 0, "", "", objNull,0,false,-1,[[100,100,100,1],[0,0,1,0.01]]];
_e_static2 setDropInterval 0.05;
private _wave = "#particlesource" createVehicleLocal (ASLToAGL _origin);
_wave setParticleCircle [0,[0,0,0]];
_wave setParticleRandom [0,[0,0,0],[0,0,0],10,0.25,[0,0,0,0.1],0,0];
_wave setParticleParams [["\A3\data_f\kouleSvetlo",1,0,1], "", "Billboard", 1, 3, [0, 0, 1], [0, 0, 0],0,10,7.9,0, [0,75], [[0,0,1,1],[0,0,0.25,0]], [0.01], 1, 0, "", "", objNull,0,false,-1,[[0,0,3,0.75],[0,0,1,0.01]]];
_wave setDropInterval 30;
private _ripple = "#particlesource" createVehicleLocal (ASLToAGL _origin);
_ripple setParticleCircle [0,[0,0,0]];
_ripple setParticleRandom [0,[0,0,0],[0,0,0],0,0.25,[0,0,0,0.1],0,0];
_ripple setParticleParams [["\A3\data_f\ParticleEffects\Universal\Refract.p3d",1,0,1], "", "Billboard", 1, 1.5, [0, 0, 1], [0, 0, 0],0,10,7.9,0, [0,500], [[1, 1, 1, 1], [1, 1, 1, 1]], [0.05], 1, 0, "", "", objNull];
_ripple setDropInterval 10;
[{deleteVehicle _this}, _ripple, GVAR(maxBrightDelay) + 0.65] call CBA_fnc_waitAndExecute;
[{
params [
["_toDelete", [], [[]]],
["_toProcess", [], [[]]]
];
{
deleteVehicle _x;
} forEach _toDelete;
_toProcess spawn {
params ["_brit", "_light_emp", "_wave"];
while {_brit > 0} do {
_light_emp setLightBrightness _brit;
_brit = _brit-2;
sleep 0.01;
};
deleteVehicle _light_emp;
deleteVehicle _wave;
};
}, [[_e_static2, _e_static3], [6.5, _light_emp, _wave]], GVAR(maxBrightDelay) + 0.85] call CBA_fnc_waitAndExecute;
}, [_origin, _light_emp], GVAR(maxBrightDelay)] call CBA_fnc_waitAndExecute;
[{
params ["_origin"];
_echosound = selectRandom [QGVAR(sound_ecou),QGVAR(sound_echo3)];
// local only, last param
playSound3d [_echosound, nil, false, _origin, 1, 1, 4000, 0, true];
}, [_origin], GVAR(maxBrightDelay) + 0.65 + 2] call CBA_fnc_waitAndExecute;