1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- params[["_ammo", ""], ["_position", [0,0,0]], ["_direction", 0]];
- diag_log format["[RD501][Fired Deployable][Deploy Server] Deploying Squad Shield for %1 at %2", _ammo, _position];
- private _config = configFile >> "CfgAmmo" >> _ammo;
- if!(isClass _config) exitWith {
- diag_log format["[RD501][Fired Deployable][Deploy Server] Unable to find class '%1' in CfgAmmo", _ammo];
- };
- private _isValid = getNumber (_config >> "rd501_fired_deployable") == 1;
- private _deployable = getText (_config >> "rd501_fired_deployable_object");
- private _timeToLive = getNumber (_config >> "rd501_fired_deployable_timeToLive");
- if(!_isValid) exitWith {
- diag_log format["[RD501][Fired Deployable][Deploy Server] Requested throw type '%1' is does not contain rd501_fired_deployable=1", _ammo];
- };
- if(isNil "_deployable" || _deployable isEqualTo "") exitWith {
- diag_log format["[RD501][Fired Deployable][Deploy Server] Failed to find rd501_fired_deployable_object defined in ammo type %1", _ammo];
- };
- _config = configFile >> "CfgVehicles" >> _deployable;
- private _setInvincible = 0;
- if(isNumber(_config >> "rd501_fired_deployable_ignoreDamage")) then {
- _setInvincible = getNumber (_config >> "rd501_fired_deployable_ignoreDamage");
- };
- private _hasLoopSound = isText (_config >> "rd501_fired_deployable_loopSound");
- private _loopSound = getText (_config >> "rd501_fired_deployable_loopSound");
- private _loopDuration = getNumber (_config >> "rd501_fired_deployable_loopDuration");
- private _hasEndSound = isText (_config >> "rd501_fired_deployable_endSound");
- private _endSound = getText (_config >> "rd501_fired_deployable_endSound");
- private _endDuration = getNumber (_config >> "rd501_fired_deployable_endDuration");
- private _soundDistance = getNumber (_config >> "rd501_fired_deployable_soundDistance");
- private _deployed = createVehicle [_deployable, _position, [], 0, "CAN_COLLIDE"];
- _deployed setPosATL _position;
- _deployed setDir _direction;
- if(_setInvincible == 1) then {
- _deployed allowDamage false;
- };
- if(_timeToLive > 0) then {
- [
- {
- params["_deployable"];
- deleteVehicle _deployable;
- },
- [_deployed],
- _timeToLive
- ] call CBA_fnc_waitAndExecute;
- if(_hasEndSound && _endSound != "") then {
- [
- {
- params["_deployed", "_endSound", "_endDuration", "_distance"];
- ["rd501_fired_deployable_soundEnd", [_deployed, _endSound, _endDuration, _distance]] call CBA_fnc_globalEvent;
- },
- [_deployed, _endSound, _endDuration, _soundDistance],
- (_timeToLive - _endDuration)
- ] call CBA_fnc_waitAndExecute;
- };
- };
- if(!_hasLoopSound || _loopSound == "") exitWith {
- diag_log format["Decided not to play sound for: Loop Sound: '%1', Loop Sound: '%2'", _loopSound, _hasLoopSound];
- };
- ["rd501_fired_deployable_soundLoop", [_deployed, _loopSound, _loopDuration, _timeToLive, _soundDistance]] call CBA_fnc_globalEvent;
|