mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
711e1fc026
* Fix Magazine Repack underwater - fix #5513 Also prevent common goKneeling function underwater * Fix loading patients underwater - fix #5515 * Fix load object underwater * Fix take nozzle on jerry can underwater * Fix refuel underwater conditions further * Use isTouchingGround, Make refuel semi-compatible reports false if head is out of the water, we want true even if we are not diving * Less interact exceptions duplication * Use animationState to determine if unit is swimming, create common function and use it instead of isTouchingGround * Fix condition * Support dragging underwater No carrying due to animation timing issues and other misc things * Allow Medical Legs SelfActions underwater * Fix fixPosition function underwater (use getPosATL instead of getPos) * Fix fixPosition's slope adjustment for non-gravity objects, Do the same for objects without simulation as well
62 lines
1.8 KiB
Plaintext
62 lines
1.8 KiB
Plaintext
/*
|
|
* Author: gpgpgpgp, edited by commy2, PabstMirror
|
|
* Starts cutting down a fence
|
|
*
|
|
* Arguments:
|
|
* 0: Unit <OBJECT>
|
|
* 1: Fence <OBJECT>
|
|
*
|
|
* Return Value:
|
|
* None
|
|
*
|
|
* Example:
|
|
* [player, berlinWall] call ace_logistics_wirecutter_fnc_cutDownFence
|
|
*
|
|
* Public: No
|
|
*/
|
|
#include "script_component.hpp"
|
|
|
|
params ["_unit", "_fenceObject"];
|
|
TRACE_2("params",_unit,_fenceObject);
|
|
|
|
private ["_timeToCut", "_progressCheck", "_onCompletion", "_onFail"];
|
|
|
|
if (_unit != ACE_player) exitWith {};
|
|
|
|
_timeToCut = if ([_unit] call EFUNC(common,isEngineer)) then {7.5} else {11};
|
|
|
|
if !(_unit call EFUNC(common,isSwimming)) then {
|
|
[_unit, "AinvPknlMstpSnonWnonDr_medic5", 0] call EFUNC(common,doAnimation);
|
|
};
|
|
|
|
_onCompletion = {
|
|
TRACE_1("_onCompletion",_this);
|
|
(_this select 0) params ["_fenceObject", "", "_unit"];
|
|
_fenceObject setdamage 1;
|
|
if !(_unit call EFUNC(common,isSwimming)) then {
|
|
[_unit, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation);
|
|
};
|
|
};
|
|
|
|
_onFail = {
|
|
TRACE_1("_onFail", _this);
|
|
(_this select 0) params ["", "", "_unit"];
|
|
if !(_unit call EFUNC(common,isSwimming)) then {
|
|
[_unit, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation);
|
|
};
|
|
};
|
|
|
|
_progressCheck = {
|
|
params ["_args", "_passedTime"];
|
|
_args params ["_fenceObject", "_lastSoundEffectTime", "_unit"];
|
|
|
|
if (_passedTime > (_lastSoundEffectTime + SOUND_CLIP_TIME_SPACEING)) then {
|
|
playSound3D [QUOTE(PATHTO_R(sound\wirecut.ogg)), objNull, false, (getPosASL _unit), 3, 1, 10];
|
|
_args set [1, _passedTime];
|
|
};
|
|
|
|
((!isNull _fenceObject) && {(damage _fenceObject) < 1} && {("ACE_wirecutter" in (items _unit))})
|
|
};
|
|
|
|
[_timeToCut, [_fenceObject,0,_unit], _onCompletion, _onFail, localize LSTRING(CuttingFence), _progressCheck, ["isNotSwimming"]] call EFUNC(common,progressBar);
|