forge/arma/server/addons/task/functions/fnc_defuseModule.sqf
Jacob Schmidt 9d789440e0 Enhance documentation and functionality across various server addons
- Updated README.md files for extension, garage, locker, main, organization, phone, store, and task addons to provide clearer overviews, dependencies, main components, and usage notes.
- Improved task module documentation to clarify timer semantics and server task flows, ensuring accurate usage of time limits.
- Adjusted default values for task time limits and IED timers to enforce positive countdown requirements.
- Added new CAD addon for dispatch coordination, including its overview, dependencies, main components, and event handling.
2026-04-18 11:55:19 -05:00

71 lines
2.3 KiB
Plaintext

#include "..\script_component.hpp"
/*
* Author: IDSolutions
* Initializes the defuse module
*
* Arguments:
* 0: Logic <OBJECT> - The logic object
* 1: Units <ARRAY> - The array of units
* 2: Activated <BOOL> - 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;