ACE3/addons/movement/functions/fnc_climb.sqf
2015-05-28 21:59:04 +02:00

46 lines
1.2 KiB
Plaintext

/*
* Author: commy2
* Make the player climb over short walls.
*
* Arguments:
* 0: The Unit (usually the player) <OBJECT>
*
* Return Value:
* Nothing
*
* Example:
* [player] call ace_movement_fnc_climb
*
* Public: No
*/
#include "script_component.hpp"
private "_unit";
_unit = _this select 0;
if !([_unit] call FUNC(canClimb)) exitWith {
[localize LSTRING(CanNotClimb)] call EFUNC(common,displayTextStructured);
};
if !(_unit getVariable [QGVAR(isClimbInit), false]) then {
_unit addEventHandler ["AnimChanged", {
if (local (_this select 0) && {_this select 1 == "ACE_Climb"}) then {
// abort climb animation
if !(_this call FUNC(canClimb)) then {
[_this select 0, "AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation);
};
};
}];
_unit addEventHandler ["AnimDone", {
if (local (_this select 0) && {_this select 1 == "ACE_Climb"}) then {_this call FUNC(handleClimb)};
}];
_unit setVariable [QGVAR(isClimbInit), true];
};
[_unit] call EFUNC(common,fixLoweredRifleAnimation);
[_unit, "AmovPercMstpSnonWnonDnon", 0] call EFUNC(common,doAnimation);
[_unit, "ACE_Climb", 0] call EFUNC(common,doAnimation);