mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
99 lines
2.8 KiB
Plaintext
99 lines
2.8 KiB
Plaintext
#include "script_component.hpp"
|
|
/*
|
|
* Author: mharis001, Glowbal, PabstMirror, drofseh
|
|
* Cool a weapon with an item and consume the item being used to cool it.
|
|
*
|
|
* Arguments:
|
|
* 0: Target <OBJECT>
|
|
* 1: Player <OBJECT>
|
|
* 2: Item <STRING>
|
|
*
|
|
* Return Value:
|
|
* None
|
|
*
|
|
* Example:
|
|
* [ACE_player, ACE_player, "ACE_WaterBottle"] call ace_overheating_fnc_coolWeaponWithItem
|
|
*
|
|
* Public: No
|
|
*/
|
|
|
|
params ["_target", "_unit", "_item"];
|
|
|
|
private _config = configFile >> "CfgWeapons" >> _item;
|
|
|
|
// Get values
|
|
private _weapon = currentWeapon _target;
|
|
private _tempVarName = format [QGVAR(%1_temp), _weapon];
|
|
private _temperature = _target getVariable [_tempVarName, 0];
|
|
private _replacementItem = getText (_config >> QEXGVAR(field_rations,replacementItem));
|
|
private _liquidAmount = getNumber (_config >> QEXGVAR(field_rations,thirstQuenched));
|
|
private _consumeText = format [LLSTRING(CoolingWeaponWithItem), getText (configFile >> "CfgWeapons" >> _weapon >> "displayName"), getText (_config >> "displayName")];
|
|
|
|
/* // to be added when licence compatible audio can be found or recorded
|
|
private _pouringSound = QPATHTO_R(sounds\sizzling_short.ogg);
|
|
|
|
if (_temperature < 100) then {
|
|
if (_liquidAmount > 5) then {
|
|
_pouringSound = QPATHTO_R(sounds\pouring_long.ogg);
|
|
} else {
|
|
_pouringSound = QPATHTO_R(sounds\pouring_short.ogg);
|
|
};
|
|
} else {
|
|
if (_liquidAmount > 5) then {
|
|
_pouringSound = QPATHTO_R(sounds\sizzling_long.ogg);
|
|
};
|
|
};
|
|
|
|
playSound3D [_pouringSound, _target, false, AGLToASL (_target modelToWorld (_target selectionPosition "RightHand")), 5, 1, 10];
|
|
*/
|
|
|
|
private _fnc_onSuccess = {
|
|
params ["_args"];
|
|
_args params ["_target", "_unit", "_item", "_weapon", "_tempVarName", "_temperature", "_replacementItem", "_liquidAmount"];
|
|
TRACE_1("Cool weapon with item successful",_args);
|
|
|
|
// remove the item
|
|
_unit removeItem _item;
|
|
|
|
// Add replacement item if needed
|
|
if (_replacementItem != "") then {
|
|
[_unit, _replacementItem] call EFUNC(common,addToInventory);
|
|
};
|
|
|
|
// cool the weapon
|
|
private _barrelMass = _weapon call FUNC(getBarrelMass);
|
|
_temperature = [_temperature, _barrelMass, _liquidAmount * 10] call FUNC(calculateCooling);
|
|
[_target, _tempVarName, _temperature, TEMP_TOLERANCE] call EFUNC(common,setApproximateVariablePublic);
|
|
};
|
|
|
|
/*
|
|
private _fnc_onFailure = {
|
|
params ["_args","_elapsedTime"];
|
|
_args params ["_target", "_unit"];
|
|
};
|
|
*/
|
|
|
|
private _fnc_condition = {
|
|
params ["_args"];
|
|
_args params ["", "_unit", "_item"];
|
|
_item in (_unit call EFUNC(common,uniqueItems))
|
|
};
|
|
|
|
[
|
|
_liquidAmount,
|
|
[
|
|
_target,
|
|
_unit,
|
|
_item,
|
|
_weapon,
|
|
_tempVarName,
|
|
_temperature,
|
|
_replacementItem,
|
|
_liquidAmount
|
|
],
|
|
_fnc_onSuccess,
|
|
{}, //_fnc_onFailure,
|
|
_consumeText,
|
|
_fnc_condition
|
|
] call EFUNC(common,progressBar);
|