From 50d9fa423012e641643e4e811529716e92d5c0cf Mon Sep 17 00:00:00 2001 From: Brett Date: Fri, 2 Nov 2018 11:36:20 -0600 Subject: [PATCH] Zeus - Group Side Module: preserve group id and assigned team (#6569) * Group Side - preserve group id and assigned team * use findIf instead of breakOut --- addons/zeus/functions/fnc_moduleGroupSide.sqf | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/addons/zeus/functions/fnc_moduleGroupSide.sqf b/addons/zeus/functions/fnc_moduleGroupSide.sqf index 397320f0ee..087838ed30 100644 --- a/addons/zeus/functions/fnc_moduleGroupSide.sqf +++ b/addons/zeus/functions/fnc_moduleGroupSide.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" /* - * Author: SilentSpike + * Author: SilentSpike, Brett * Zeus module function to change side of a group on dialog confirmation * * Arguments: @@ -25,20 +25,30 @@ if (_side == _newSide) exitWith {}; private _oldGroup = group _unit; private _newGroup = createGroup _newSide; +// Preserve groupid from the previous group if doesn't already exist +if ((allGroups findIf {side _x isEqualTo _newSide && {(groupId _oldGroup) isEqualTo (groupId _newGroup)}}) == -1) then { + _newGroup setGroupIdGlobal [groupId _oldGroup]; +}; + // Pretty hacky, will replace units return group with this new group if unconcious if (GETVAR(_unit,ACE_isUnconscious,false) && {GETMVAR(EGVAR(medical,moveUnitsFromGroupOnUnconscious),false)}) then { - private _previousGroupsList = _unit getVariable [QEGVAR(common,previousGroupSwitchTo), []]; + private _previousGroupsList = _unit getVariable [QEGVAR(common,previousGroupSwitchTo), []]; - { - if ("ACE_isUnconscious" == (_x select 2)) exitWith { - _x set [0,_newGroup]; - _x set [1,_newSide]; - _previousGroupsList set [_forEachIndex, _x]; - }; - } forEach _previousGroupsList; + { + if ("ACE_isUnconscious" == (_x select 2)) exitWith { + _x set [0,_newGroup]; + _x set [1,_newSide]; + _previousGroupsList set [_forEachIndex, _x]; + }; + } forEach _previousGroupsList; - _unit setVariable [QEGVAR(common,previousGroupSwitchTo), _previousGroupsList, true]; + _unit setVariable [QEGVAR(common,previousGroupSwitchTo), _previousGroupsList, true]; } else { - (units _unit) joinSilent _newGroup; + // Preserve assignedTeam for each unit + { + private _team = assignedTeam _x; + [_x] joinSilent _newGroup; + _x assignTeam _team; + } forEach units _unit; deleteGroup _oldGroup; };