#include "..\script_component.hpp" /* * Author: IDSolutions * Initializes the defuse module * * Arguments: * 0: Logic - The logic object * 1: Units - The array of units * 2: Activated - Whether the module is activated * * Return Value: * None * * Example: * [logicObject, [unit1, unit2], true] call forge_server_task_fnc_defuseModule; * * Public: No */ params [["_logic", objNull, [objNull]], ["_units", [], [[]]], ["_activated", true, [true]]]; if !(_activated) exitWith {}; private _taskID = _logic getVariable ["TaskID", ""]; if (_taskID isEqualTo "") exitWith { ["ERROR", "Defuse module: no task ID configured."] call EFUNC(common,log); }; private _syncedModules = synchronizedObjects _logic; private _iedModule = (_syncedModules select { typeOf _x isEqualTo "FORGE_Module_Explosives" }) param [0, objNull]; private _protectedModule = (_syncedModules select { typeOf _x isEqualTo "FORGE_Module_Protected" }) param [0, objNull]; private _iedEntities = if (!isNull _iedModule) then { synchronizedObjects _iedModule } else { [] }; private _protectedEntities = if (!isNull _protectedModule) then { synchronizedObjects _protectedModule } else { [] }; ["INFO", format [ "Defuse Module: TaskID: %1, IEDs: %2, Protected: %3, IED timer: %4s", _taskID, count _iedEntities, count _protectedEntities, _logic getVariable ["TimeLimit", 300] ]] call EFUNC(common,log); private _taskPos = if (_iedEntities isNotEqualTo []) then { getPosATL (_iedEntities select 0) } else { getPosATL _logic }; [ "defuse", _taskID, _taskPos, format ["Defuse: %1", _taskID], "Locate and defuse all explosive devices before they detonate.", createHashMapFromArray [ ["ieds", _iedEntities], ["protected", _protectedEntities] ], createHashMapFromArray [ ["limitFail", _logic getVariable ["LimitFail", -1]], ["limitSuccess", _logic getVariable ["LimitSuccess", -1]], ["funds", _logic getVariable ["CompanyFunds", 0]], ["ratingFail", _logic getVariable ["RatingFail", 0]], ["ratingSuccess", _logic getVariable ["RatingSuccess", 0]], ["endSuccess", _logic getVariable ["EndSuccess", false]], ["endFail", _logic getVariable ["EndFail", false]], ["iedTimer", _logic getVariable ["TimeLimit", 300]] ] ] call FUNC(startTask); deleteVehicle _logic;