From 05ab1bbe99750faafc7dec9b55db9c2cf3e272a3 Mon Sep 17 00:00:00 2001
From: johnb432 <58661205+johnb432@users.noreply.github.com>
Date: Sat, 20 Jul 2024 08:26:53 +0200
Subject: [PATCH] Dragging - Fix dragging/carrying failing for items in ViV
 (#10128)

* Unload ViV before dragging/carrying

* Update addons/dragging/functions/fnc_carryObject.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Use lazy eval to check if item was unloaded

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
---
 addons/dragging/functions/fnc_carryObject.sqf | 6 ++++++
 addons/dragging/functions/fnc_dragObject.sqf  | 6 ++++++
 2 files changed, 12 insertions(+)

diff --git a/addons/dragging/functions/fnc_carryObject.sqf b/addons/dragging/functions/fnc_carryObject.sqf
index 4d5ac8b61b..a6b38c4ea5 100644
--- a/addons/dragging/functions/fnc_carryObject.sqf
+++ b/addons/dragging/functions/fnc_carryObject.sqf
@@ -19,6 +19,12 @@
 params ["_unit", "_target"];
 TRACE_2("params",_unit,_target);
 
+// If in ViV cargo, unload it first
+// Warn user if it failed to unload (shouldn't happen)
+if (!isNull isVehicleCargo _target && {!(objNull setVehicleCargo _target)}) then {
+    WARNING_1("ViV Unload Failed %1",_target);
+};
+
 // Get attachTo offset and direction
 private _position = _target getVariable [QGVAR(carryPosition), [0, 0, 0]];
 private _direction = _target getVariable [QGVAR(carryDirection), 0];
diff --git a/addons/dragging/functions/fnc_dragObject.sqf b/addons/dragging/functions/fnc_dragObject.sqf
index 5116f440b3..6420ff56df 100644
--- a/addons/dragging/functions/fnc_dragObject.sqf
+++ b/addons/dragging/functions/fnc_dragObject.sqf
@@ -19,6 +19,12 @@
 params ["_unit", "_target"];
 TRACE_2("params",_unit,_target);
 
+// If in ViV cargo, unload it first
+// Warn user if it failed to unload (shouldn't happen)
+if (!isNull isVehicleCargo _target && {!(objNull setVehicleCargo _target)}) then {
+    WARNING_1("ViV Unload Failed %1",_target);
+};
+
 // Get attachTo offset and direction.
 private _position = _target getVariable [QGVAR(dragPosition), [0, 0, 0]];
 private _direction = _target getVariable [QGVAR(dragDirection), 0];