diff --git a/@ExileServer/addons/a3_dms/config.sqf b/@ExileServer/addons/a3_dms/config.sqf index ed948bc..b7a7bd4 100644 --- a/@ExileServer/addons/a3_dms/config.sqf +++ b/@ExileServer/addons/a3_dms/config.sqf @@ -52,11 +52,11 @@ DMS_DEBUG = false; //Mission notification settings DMS_PlayerNotificationTypes = [ // Notification types. Supported values are: ["dynamicTextRequest", "standardHintRequest", "systemChatRequest"] - //"dynamicTextRequest", <--- Won't work in Exile v0.9.19 + //"dynamicTextRequest", <--- Text formatting makes this weird... "standardHintRequest" //"systemChatRequest" ]; - DMS_dynamicText_Size = "0.65"; // Dynamic Text size for "dynamicTextRequest" notification type. + DMS_dynamicText_Size = 0.65; // Dynamic Text size for "dynamicTextRequest" notification type. DMS_dynamicText_Color = "#FFCC00"; // Dynamic Text color for "dynamicTextRequest" notification type. DMS_MissionTypes = [ // List of missions with spawn chances. If they add up to 100%, they represent the percentage chance each one will spawn diff --git a/@ExileServer/addons/a3_dms/scripts/fn_OnKilled.sqf b/@ExileServer/addons/a3_dms/scripts/fn_OnKilled.sqf index 2ea30bc..3951f93 100644 --- a/@ExileServer/addons/a3_dms/scripts/fn_OnKilled.sqf +++ b/@ExileServer/addons/a3_dms/scripts/fn_OnKilled.sqf @@ -30,16 +30,24 @@ _type = _this select 2; _launcher = secondaryWeapon _unit; _playerObj = objNull; -// Remove gear according to configs -if (DMS_clear_AI_body && {(random 100) <= DMS_clear_AI_body_chance}) then +// Some of the previously used functions work with non-local argument. Some don't. BIS is annoying +_removeAll = { - removeAllWeapons _unit; - removeAllAssignedItems _unit; + {_this removeWeaponGlobal _x;} forEach (weapons _this); + {_this unlinkItem _x;} forEach (assignedItems _this); + {_this removeItem _x;} forEach (items _this); + removeAllItemsWithMagazines _unit; removeHeadgear _unit; removeUniform _unit; removeVest _unit; - removeBackpack _unit; + removeBackpackGlobal _unit; +}; + +// Remove gear according to configs +if (DMS_clear_AI_body && {(random 100) <= DMS_clear_AI_body_chance}) then +{ + _unit call _removeAll; }; if(DMS_ai_remove_launchers && {_launcher != ""}) then @@ -50,7 +58,7 @@ if(DMS_ai_remove_launchers && {_launcher != ""}) then { if(_x == _rockets) then { - _unit removeMagazine _x; + _unit removeMagazineGlobal _x; }; } forEach magazines _unit; }; @@ -112,13 +120,7 @@ if (isPlayer _player) then // Remove gear from roadkills if configured to do so if (DMS_remove_roadkill && {(random 100) <= DMS_remove_roadkill_chance}) then { - removeAllWeapons _unit; - removeAllAssignedItems _unit; - removeAllItemsWithMagazines _unit; - removeHeadgear _unit; - removeUniform _unit; - removeVest _unit; - removeBackpack _unit; + _unit call _removeAll; }; };}; diff --git a/@ExileServer/addons/a3_dms/scripts/fn_SetAILocality.sqf b/@ExileServer/addons/a3_dms/scripts/fn_SetAILocality.sqf index a829c12..df3a459 100644 --- a/@ExileServer/addons/a3_dms/scripts/fn_SetAILocality.sqf +++ b/@ExileServer/addons/a3_dms/scripts/fn_SetAILocality.sqf @@ -45,7 +45,8 @@ _client = objNull; }; } forEach allPlayers; -if (!isNull _client) then{ +if (!isNull _client) then +{ ExileServerOwnershipSwapQueue pushBack [_AI,_client]; if (DMS_DEBUG) then { diff --git a/@ExileServer/addons/a3_dms/scripts/fn_SpawnAIGroup.sqf b/@ExileServer/addons/a3_dms/scripts/fn_SpawnAIGroup.sqf index c1d2abb..1f0d489 100644 --- a/@ExileServer/addons/a3_dms/scripts/fn_SpawnAIGroup.sqf +++ b/@ExileServer/addons/a3_dms/scripts/fn_SpawnAIGroup.sqf @@ -73,7 +73,8 @@ if(_pos_z == 0) then _group = createGroup (missionNamespace getVariable [format ["DMS_%1Side",_side],EAST]); -for "_i" from 1 to _count do { +for "_i" from 1 to _count do +{ _unit = [_group,[_pos_x,_pos_y,_pos_z],_class,_difficulty,_side,"Soldier"] call DMS_fnc_SpawnAISoldier; }; @@ -87,14 +88,15 @@ if ((!isNil "_launcher") || {DMS_ai_use_launchers && {(random 100) <= DMS_ai_use _launcher = ((missionNamespace getVariable [format ["DMS_AI_wep_launchers_%1",_launcher],["launch_NLAW_F"]]) call BIS_fnc_selectRandom); - removeBackpack _unit; + removeBackpackGlobal _unit; _unit addBackpack "B_Carryall_mcamo"; + _rocket = _launcher call DMS_fnc_selectMagazine; - [_unit, _launcher, DMS_AI_launcher_ammo_count] call BIS_fnc_addWeapon; + [_unit, _launcher, DMS_AI_launcher_ammo_count,_rocket] call BIS_fnc_addWeapon; if(DMS_DEBUG) then { - diag_log format["DMS_DEBUG SpawnAIGroup :: Giving %1 a %2 launcher.",_unit,_launcher]; + diag_log format["DMS_DEBUG SpawnAIGroup :: Giving %1 a %2 launcher with %3 %4 rockets",_unit,_launcher,DMS_AI_launcher_ammo_count,_rocket]; }; }; diff --git a/Pre-Packed PBO/a3_dms.pbo b/Pre-Packed PBO/a3_dms.pbo index 4886b57..6bc1ad4 100644 Binary files a/Pre-Packed PBO/a3_dms.pbo and b/Pre-Packed PBO/a3_dms.pbo differ diff --git a/README.md b/README.md index ba6d4ed..25cfc34 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,11 @@ if (!hasInterface && !isServer) then ## Changelog: +#### September 13, 2015 (11:45 PM CST-America): +* Updated parameter type for "DMS_dynamicText_Size", as well as commented out description for "dynamicTextRequest". Will try to work on functionality for it soon. +* Improved cleaning of AI units. There may still be issues, specifically with launchers. If there are, please let me know, and test it. The more info I have, the quicker it can be fixed :) + + #### September 13, 2015 (1:00 AM CST-America): * New config value: ```DMS_AI_WP_Radius_base``` . Tiny waypoint radius for "base defence". * New mission: "mercbase". Known issue: Stuff gets messed up when the mission spawns on a steep slope. Blame BIS for breaking "BIS_fnc_findSafePos" :P