Browse Source

Merge pull request #53 from 501st-Aux-Mod-Team/add-force-walk-weapon-script

Add force walk weapon script
Erliens 4 years ago
parent
commit
2bffe0af69

+ 3 - 1
addons - Copy/RD501_Main/XEH_postinit.sqf

@@ -6,4 +6,6 @@
 	sleep 0.5;
 	call compile preprocessFileLineNumbers 'macro_mod_script_path\jumppack\jumppack_effects.sqf';
 };
-RD501_DRONE_BATTERY = "lightsaberG_swing";
+RD501_DRONE_BATTERY = "lightsaberG_swing";
+RD501_FORCE_WALK_WEAPONS = [macro_quote(macro_new_weapon_nofam(Z1000))];
+["weapon", macro_fnc_name(heavyWeaponHandlePlayerWeaponChanged)] call CBA_fnc_addPlayerEventHandler;

+ 3 - 1
addons - Copy/RD501_Main/XEH_preInit.sqf

@@ -87,4 +87,6 @@ macro_prep_xeh(medical_notification\add_med_notification.sqf,add_med_notificatio
 //R-2 Recon Drone
 macro_prep_xeh(infantry_uav\fnc_getRefuelMagazine.sqf,getRefuelMagazine)
 macro_prep_xeh(infantry_uav\fnc_refuelUAVDrone.sqf,refuelUAVDrone)
-macro_prep_xeh(infantry_uav\fnc_canRefuel.sqf,canRefuel)
+macro_prep_xeh(infantry_uav\fnc_canRefuel.sqf,canRefuel)
+
+macro_prep_xeh(heavy_weapon\fnc_heavyWeaponHandlePlayerWeaponChanged.sqf,heavyWeaponHandlePlayerWeaponChanged)

+ 35 - 0
addons - Copy/RD501_Main/functions/heavy_weapon/fnc_heavyWeaponHandlePlayerWeaponChanged.sqf

@@ -0,0 +1,35 @@
+params ["_unit", "_weapon"];
+diag_log "Handling Weapon Swap";
+if(_weapon == "" && !isForcedWalk _unit) exitWith { diag_log "No Weapon"; };
+
+private _fn_unForceWalk = {
+	params["_target"];
+	diag_log "Unforce Walk";
+	_target setVariable ["RD501_FORCE_WALK", false];
+	_target forceWalk false;
+};
+
+private _forceWalk = _unit getVariable ["RD501_FORCE_WALK", false];
+
+if(_weapon == "" && _forceWalk) exitWith {
+	_unit call _fn_unForceWalk;
+};
+
+private _fn_forceWalk = {
+	params["_target"];
+	diag_log "Force Walk";
+	_target setVariable ["RD501_FORCE_WALK", true];
+	_target forceWalk true;
+};
+
+if(_weapon in RD501_FORCE_WALK_WEAPONS ) exitWith 
+{
+	if(!isForcedWalk _unit) then{
+		_unit call _fn_forceWalk;
+	};
+};
+
+if(_forceWalk) exitWith
+{
+	_unit call _fn_unForceWalk;
+};