Interaction - Add Flip and Push actions to Quad Bike, Kart and Static Weapons (#6019)

* Add Flip and Push actions to Quad Bike

* Add actions to karts and static weapons

* Move magic number to macro

* Ditch here is

* Move condition to function
This commit is contained in:
Dystopian 2018-02-26 21:23:47 +03:00 committed by PabstMirror
parent a2804f6097
commit 3feafc449f
5 changed files with 78 additions and 1 deletions

View File

@ -368,6 +368,40 @@ class CfgVehicles {
};
};
class Car_F: Car{};
class Quadbike_01_base_F: Car_F {
class ACE_Actions: ACE_Actions {
class ACE_MainActions: ACE_MainActions {
class GVAR(flip) {
displayName = CSTRING(Flip);
condition = QUOTE(call DFUNC(canFlip));
statement = QUOTE([ARR_3(QQGVAR(flip),_target,_target)] call CBA_fnc_targetEvent);
};
class GVAR(push) {
displayName = CSTRING(Push);
condition = QUOTE(_target call FUNC(canPush));
statement = QUOTE(call FUNC(push));
};
};
};
};
class Kart_01_Base_F: Car_F {
class ACE_Actions: ACE_Actions {
class ACE_MainActions: ACE_MainActions {
class GVAR(flip) {
displayName = CSTRING(Flip);
condition = QUOTE(call DFUNC(canFlip));
statement = QUOTE([ARR_3(QQGVAR(flip),_target,_target)] call CBA_fnc_targetEvent);
};
class GVAR(push) {
displayName = CSTRING(Push);
condition = QUOTE(_target call FUNC(canPush));
statement = QUOTE(call FUNC(push));
};
};
};
};
class Tank: LandVehicle {
class ACE_Actions {
class ACE_MainActions {
@ -545,6 +579,11 @@ class CfgVehicles {
exceptions[] = {"isNotSwimming"};
insertChildren = QUOTE(_this call DFUNC(addPassengersActions));
};
class GVAR(flip) {
displayName = CSTRING(Flip);
condition = QUOTE(call DFUNC(canFlip));
statement = QUOTE([ARR_3(QQGVAR(flip),_target,_target)] call CBA_fnc_targetEvent);
};
};
};

View File

@ -42,4 +42,5 @@ PREP(openDoor);
PREP(canPush);
PREP(push);
PREP(canFlip);
PREP(switchLamp);

View File

@ -28,6 +28,14 @@ ACE_Modifier = 0;
{_lamp setHit [_x select 0, (_x select 1) max _disabledLampDMG];nil} count _hitPointsDamage;
}] call CBA_fnc_addEventHandler;
[QGVAR(flip), {
params ["_vehicle"];
private _position = getPosATL _vehicle;
_vehicle setVectorUp surfaceNormal _position;
_vehicle setPosATL _position;
}] call CBA_fnc_addEventHandler;
[QGVAR(setCollisionLight), {
(_this select 0) setCollisionLight (_this select 1);
}] call CBA_fnc_addEventHandler;

View File

@ -0,0 +1,25 @@
/*
* Author: Dystopian
* Checks if vehicle can be flipped.
*
* Arguments:
* 0: Vehicle <OBJECT>
*
* Return Value:
* Can Flip <BOOL>
*
* Example:
* [cursorObject] call ace_interaction_fnc_canFlip
*
* Public: No
*/
#include "script_component.hpp"
params ["_vehicle"];
// most suitable mass for all vanilla, CUP and RHS statics ATM (ZU-23 suits, D-30 and M119 don't suit)
#define FLIP_MAX_STATICWEAPON_MASS 2000
1 < (vectorUp _vehicle) vectorDistance (surfaceNormal getPosATL _vehicle)
&& {0 == {alive _x} count crew _vehicle || {isAutonomous _vehicle}}
&& {getMass _vehicle <= FLIP_MAX_STATICWEAPON_MASS}

View File

@ -832,7 +832,7 @@
<Polish>Pchnij</Polish>
<Czech>Tlačit</Czech>
<Hungarian>Tolás</Hungarian>
<Russian>Толкать</Russian>
<Russian>Толкнуть</Russian>
<Portuguese>Empurrar</Portuguese>
<Italian>Spingere</Italian>
<Japanese>押す</Japanese>
@ -840,6 +840,10 @@
<Chinesesimp></Chinesesimp>
<Chinese></Chinese>
</Key>
<Key ID="STR_ACE_Interaction_Flip">
<English>Flip</English>
<Russian>Перевернуть</Russian>
</Key>
<Key ID="STR_ACE_Interaction_Interact">
<English>Interact</English>
<French>Interagir</French>