From ca3171a33a155563346f71e32d1d072a9447407f Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Sat, 19 Mar 2016 16:17:26 +0100 Subject: [PATCH 01/85] Initial commit dogtags --- addons/dogtags/CfgEventHandlers.hpp | 15 + addons/dogtags/CfgVehicles.hpp | 43 + addons/dogtags/CfgWeapons.hpp | 16 + addons/dogtags/Dogtag.hpp | 50 + addons/dogtags/README.md | 11 + addons/dogtags/XEH_PREP.hpp | 10 + addons/dogtags/XEH_postInit.sqf | 6 + addons/dogtags/XEH_preInit.sqf | 7 + addons/dogtags/XEH_preStart.sqf | 3 + addons/dogtags/config.cpp | 18 + addons/dogtags/data/dogtag.paa | Bin 0 -> 11081 bytes .../functions/fnc_addDogtagActions.sqf | 40 + .../dogtags/functions/fnc_addDogtagItem.sqf | 23 + .../dogtags/functions/fnc_canCheckDogtag.sqf | 20 + .../dogtags/functions/fnc_canTakeDogtag.sqf | 20 + addons/dogtags/functions/fnc_checkDogtag.sqf | 23 + .../dogtags/functions/fnc_checkDogtagItem.sqf | 19 + .../dogtags/functions/fnc_getDogtagItem.sqf | 40 + .../dogtags/functions/fnc_sendDogtagData.sqf | 30 + addons/dogtags/functions/fnc_showDogtag.sqf | 27 + addons/dogtags/functions/fnc_takeDogtag.sqf | 24 + addons/dogtags/functions/script_component.hpp | 1 + addons/dogtags/script_component.hpp | 1029 +++++++++++++++++ addons/dogtags/stringtable.xml | 89 ++ 24 files changed, 1564 insertions(+) create mode 100644 addons/dogtags/CfgEventHandlers.hpp create mode 100644 addons/dogtags/CfgVehicles.hpp create mode 100644 addons/dogtags/CfgWeapons.hpp create mode 100644 addons/dogtags/Dogtag.hpp create mode 100644 addons/dogtags/README.md create mode 100644 addons/dogtags/XEH_PREP.hpp create mode 100644 addons/dogtags/XEH_postInit.sqf create mode 100644 addons/dogtags/XEH_preInit.sqf create mode 100644 addons/dogtags/XEH_preStart.sqf create mode 100644 addons/dogtags/config.cpp create mode 100644 addons/dogtags/data/dogtag.paa create mode 100644 addons/dogtags/functions/fnc_addDogtagActions.sqf create mode 100644 addons/dogtags/functions/fnc_addDogtagItem.sqf create mode 100644 addons/dogtags/functions/fnc_canCheckDogtag.sqf create mode 100644 addons/dogtags/functions/fnc_canTakeDogtag.sqf create mode 100644 addons/dogtags/functions/fnc_checkDogtag.sqf create mode 100644 addons/dogtags/functions/fnc_checkDogtagItem.sqf create mode 100644 addons/dogtags/functions/fnc_getDogtagItem.sqf create mode 100644 addons/dogtags/functions/fnc_sendDogtagData.sqf create mode 100644 addons/dogtags/functions/fnc_showDogtag.sqf create mode 100644 addons/dogtags/functions/fnc_takeDogtag.sqf create mode 100644 addons/dogtags/functions/script_component.hpp create mode 100644 addons/dogtags/script_component.hpp create mode 100644 addons/dogtags/stringtable.xml diff --git a/addons/dogtags/CfgEventHandlers.hpp b/addons/dogtags/CfgEventHandlers.hpp new file mode 100644 index 0000000000..e90bed419e --- /dev/null +++ b/addons/dogtags/CfgEventHandlers.hpp @@ -0,0 +1,15 @@ +class Extended_PreStart_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preStart)); + }; +}; +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; +class Extended_PostInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_postInit)); + }; +}; diff --git a/addons/dogtags/CfgVehicles.hpp b/addons/dogtags/CfgVehicles.hpp new file mode 100644 index 0000000000..8e9204c4ca --- /dev/null +++ b/addons/dogtags/CfgVehicles.hpp @@ -0,0 +1,43 @@ +class CfgVehicles { + class Man; + class CAManBase: Man { + class ACE_Actions { + class ACE_MainActions { + class ACE_Dogtag { + displayName = CSTRING(itemName); + condition = ""; + statement = ""; + showDisabled = 0; + priority = 3; + icon = ""; //@todo + class ACE_CheckDogtag { + displayName = CSTRING(checkDogtag); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canCheckDogtag)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(checkDogtag)); + showDisabled = 0; + priority = 3; + icon = ""; //@todo + }; + class ACE_TakeDogtag { + displayName = CSTRING(takeDogtag); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canTakeDogtag)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(takeDogtag)); + showDisabled = 0; + priority = 3; + icon = ""; //@todo + }; + }; + }; + }; + class ACE_SelfActions { + class ACE_Equipment { + class ACE_CheckDogtags { + displayName = CSTRING(checkItem); + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addDogtagActions)); + }; + }; + }; + }; +}; diff --git a/addons/dogtags/CfgWeapons.hpp b/addons/dogtags/CfgWeapons.hpp new file mode 100644 index 0000000000..b1e6e780f9 --- /dev/null +++ b/addons/dogtags/CfgWeapons.hpp @@ -0,0 +1,16 @@ +class CfgWeapons { + class ACE_ItemCore; + class InventoryItem_Base_F; + + class ACE_dogtag: ACE_ItemCore { + author = ECSTRING(common,ACETeam); + scope = 0; + displayName = CSTRING(itemName); + model = "\A3\weapons_F\ammo\mag_univ.p3d"; //@todo? + //picture = QUOTE(PATHTOF(images\picture.paa)); @todo + class ItemInfo: InventoryItem_Base_F { + mass = 0; //too small to for 1 ? + }; + }; + ACE_DOGTAGS(ACE_dogtag) +}; diff --git a/addons/dogtags/Dogtag.hpp b/addons/dogtags/Dogtag.hpp new file mode 100644 index 0000000000..9ab7fe8fd7 --- /dev/null +++ b/addons/dogtags/Dogtag.hpp @@ -0,0 +1,50 @@ +class RscPicture; +class RscStructuredText; + +class RscTitles { + class GVAR(tag) { + idd = -1; + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(tag)),_this select 0)]); + onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(tag)),nil)]); + movingEnable = false; + duration = 5; + fadeIn = 0.2; + fadeOut = 0.2; + + class controls { + class background: RscPicture { + idc = 1000; + text = QUOTE(PATHTOF(data\dogtag.paa)); + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {1, 1, 1, 1}; + colorBackground[] = {0, 0, 0, 0}; + x = ((safezoneX + safezoneW) - (10 * (((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 * (((safezoneW / safezoneH) min 1.2) / 40)); + y = safeZoneY + 0.175 * safezoneH; + w = (8 * (((safezoneW / safezoneH) min 1.2) / 40)); + h = (4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)); + font = "EtelkaMonospacePro"; + }; + class nickname: RscStructuredText { + idc = 1001; + text = ""; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {1, 1, 1, 1}; + colorBackground[] = {0, 0, 0, 0}; + x = ((safezoneX + safezoneW) - (8.4 * (((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 * (((safezoneW / safezoneH) min 1.2) / 40)); + y = safeZoneY + 0.2 * safezoneH; + w = (5.9 * (((safezoneW / safezoneH) min 1.2) / 40)); + h = (4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)); + font = "EtelkaMonospacePro"; + class Attributes { + font = "EtelkaMonospacePro"; + color = "#FFFFFF"; + align = "center"; + valign = "middle"; + shadow = 1; + shadowColor = "#3f4345"; + size = "0.85"; + }; + }; + }; + }; +}; diff --git a/addons/dogtags/README.md b/addons/dogtags/README.md new file mode 100644 index 0000000000..1c52679ee7 --- /dev/null +++ b/addons/dogtags/README.md @@ -0,0 +1,11 @@ +ace_dogtags +========== + +Adds options to check and take dog tag from dead units + + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [SzwedzikPL](https://github.com/SzwedzikPL) diff --git a/addons/dogtags/XEH_PREP.hpp b/addons/dogtags/XEH_PREP.hpp new file mode 100644 index 0000000000..023cc5e733 --- /dev/null +++ b/addons/dogtags/XEH_PREP.hpp @@ -0,0 +1,10 @@ +PREP(addDogtagActions); +PREP(addDogtagItem); +PREP(canCheckDogtag); +PREP(canTakeDogtag); +PREP(checkDogtag); +PREP(checkDogtagItem); +PREP(getDogtagItem); +PREP(sendDogtagData); +PREP(showDogtag); +PREP(takeDogtag); diff --git a/addons/dogtags/XEH_postInit.sqf b/addons/dogtags/XEH_postInit.sqf new file mode 100644 index 0000000000..2d7b1dd49c --- /dev/null +++ b/addons/dogtags/XEH_postInit.sqf @@ -0,0 +1,6 @@ +#include "script_component.hpp" + +[QGVAR(showDogtag), DFUNC(showDogtag)] call EFUNC(common,addEventHandler); +[QGVAR(sendDogtagData), DFUNC(sendDogtagData)] call EFUNC(common,addEventHandler); +[QGVAR(getDogtagItem), DFUNC(getDogtagItem)] call EFUNC(common,addEventHandler); +[QGVAR(addDogtagItem), DFUNC(addDogtagItem)] call EFUNC(common,addEventHandler); diff --git a/addons/dogtags/XEH_preInit.sqf b/addons/dogtags/XEH_preInit.sqf new file mode 100644 index 0000000000..a7feade1c3 --- /dev/null +++ b/addons/dogtags/XEH_preInit.sqf @@ -0,0 +1,7 @@ +#include "script_component.hpp" + +ADDON = false; + +#include "XEH_PREP.hpp" + +ADDON = true; diff --git a/addons/dogtags/XEH_preStart.sqf b/addons/dogtags/XEH_preStart.sqf new file mode 100644 index 0000000000..022888575e --- /dev/null +++ b/addons/dogtags/XEH_preStart.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +#include "XEH_PREP.hpp" diff --git a/addons/dogtags/config.cpp b/addons/dogtags/config.cpp new file mode 100644 index 0000000000..de66b2a087 --- /dev/null +++ b/addons/dogtags/config.cpp @@ -0,0 +1,18 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {"SzwedzikPL"}; + authorUrl = "https://github.com/SzwedzikPL/"; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" +#include "CfgWeapons.hpp" +#include "CfgVehicles.hpp" +#include "Dogtag.hpp" diff --git a/addons/dogtags/data/dogtag.paa b/addons/dogtags/data/dogtag.paa new file mode 100644 index 0000000000000000000000000000000000000000..b66bf83e53f95f9afd8402583e8703ffa4d3308b GIT binary patch literal 11081 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 + * 1: Player + * + * Return Value: + * Children actions + * + * Public: No + */ +#include "script_component.hpp" + +params ["_target", "_player"]; + +//Get all dogtags and their ids +private _unitDogtags = []; +private _unitDogtagIDs = []; +{ + private _id = getNumber (configFile >> "CfgWeapons" >> _x >> QGVAR(tagID)); + if(_id > 0) then { + _unitDogtags pushback _x; + _unitDogtagIDs pushback _id; + }; +} forEach items _player; + +//Create action children for all dogtags +private _actions = []; +{ + private _tagID = _unitDogtagIDs select _forEachIndex; + private _displayName = format ["%1 #%2", getText (configFile >> "CfgWeapons" >> _x >> "displayName"), _tagID]; + private _picture = getText (configFile >> "CfgWeapons" >> _x >> "picture"); + + private _action = [_x, _displayName, _picture, {_this call FUNC(checkDogtagItem)}, {true}, {}, _x] call EFUNC(interact_menu,createAction); + _actions pushBack [_action, [], _player]; +} forEach _unitDogtags; + +_actions diff --git a/addons/dogtags/functions/fnc_addDogtagItem.sqf b/addons/dogtags/functions/fnc_addDogtagItem.sqf new file mode 100644 index 0000000000..35095ea087 --- /dev/null +++ b/addons/dogtags/functions/fnc_addDogtagItem.sqf @@ -0,0 +1,23 @@ +/* + * Author: SzwedzikPl + * Adds dogtag item to unit (triggered by server) + * + * Arguments: + * 0: Item class + * 1: Nickname on dogtag + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +params ["_item", "_nickname"]; + +if(_item == "") exitWith {}; + +[ace_player, _item] call CBA_fnc_addItem; + +private _displayText = format [localize LSTRING(takeDogtagSuccess), _nickname]; +[_displayText] call EFUNC(common,displayText); diff --git a/addons/dogtags/functions/fnc_canCheckDogtag.sqf b/addons/dogtags/functions/fnc_canCheckDogtag.sqf new file mode 100644 index 0000000000..5d86ae3850 --- /dev/null +++ b/addons/dogtags/functions/fnc_canCheckDogtag.sqf @@ -0,0 +1,20 @@ +/* + * Author: SzwedzikPl + * Checks if dogtag can be checked. + * + * Arguments: + * 0: Player + * 1: Target + * + * Return Value: + * True if dogtag can be checked + * + * Public: No + */ +#include "script_component.hpp" + +params ["_player", "_target"]; + +if(isNull _target) exitWith {false}; + +!alive _target diff --git a/addons/dogtags/functions/fnc_canTakeDogtag.sqf b/addons/dogtags/functions/fnc_canTakeDogtag.sqf new file mode 100644 index 0000000000..f017f75c54 --- /dev/null +++ b/addons/dogtags/functions/fnc_canTakeDogtag.sqf @@ -0,0 +1,20 @@ +/* + * Author: SzwedzikPl + * Checks if dogtag can be taken. + * + * Arguments: + * 0: Player + * 1: Target + * + * Return Value: + * True if dogtag can be taken + * + * Public: No + */ +#include "script_component.hpp" + +params ["_player", "_target"]; + +if(isNull _target) exitWith {false}; + +!alive _target diff --git a/addons/dogtags/functions/fnc_checkDogtag.sqf b/addons/dogtags/functions/fnc_checkDogtag.sqf new file mode 100644 index 0000000000..93dab639ad --- /dev/null +++ b/addons/dogtags/functions/fnc_checkDogtag.sqf @@ -0,0 +1,23 @@ +/* + * Author: SzwedzikPl + * Checks unit dogtag + * + * Arguments: + * 0: Player + * 1: Target + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +params ["_player", "_target"]; + +if(_target getVariable [QGVAR(dogtagTaken), false]) then { + [localize LSTRING(noDogtag)] call EFUNC(common,displayText); +} else { + private _nickname = [_target, false, true] call EFUNC(common,getName); + [QGVAR(showDogtag), [_nickname]] call EFUNC(common,localEvent); +}; diff --git a/addons/dogtags/functions/fnc_checkDogtagItem.sqf b/addons/dogtags/functions/fnc_checkDogtagItem.sqf new file mode 100644 index 0000000000..c67fd7d799 --- /dev/null +++ b/addons/dogtags/functions/fnc_checkDogtagItem.sqf @@ -0,0 +1,19 @@ +/* + * Author: SzwedzikPl + * Check dogtag self menu action + * + * Arguments: + * 0: Player + * 1: Target + * 2: Item class + * + * Return Value: + * Mone + * + * Public: No + */ +#include "script_component.hpp" + +params ["_player", "_target", "_item"]; + +[QGVAR(sendDogtagData), [_player, _item]] call EFUNC(common,serverEvent); diff --git a/addons/dogtags/functions/fnc_getDogtagItem.sqf b/addons/dogtags/functions/fnc_getDogtagItem.sqf new file mode 100644 index 0000000000..ce0a49a8bb --- /dev/null +++ b/addons/dogtags/functions/fnc_getDogtagItem.sqf @@ -0,0 +1,40 @@ +/* + * Author: SzwedzikPl + * Server: creates new dogtag item and send it to client + * + * Arguments: + * 0: Player + * 1: Target + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +if(!isServer) exitWith {}; + +params ["_target", "_unit"]; +TRACE_2("getDogtagItem",_target,_unit); + +private _allDogtags = missionNameSpace getVariable [QGVAR(allDogtags), []]; +private _allDogtagNicknames = missionNameSpace getVariable [QGVAR(allDogtagNicknames), []]; + +private _nextID = count _allDogtags + 1; + +if(_nextID > 999) exitWith {}; + +private _nickname = [_unit, false, true] call EFUNC(common,getName); +private _item = format ["ACE_dogtag_%1", _nextID]; +_allDogtags pushBack _item; +_allDogtagNicknames pushBack _nickname; + +missionNameSpace setVariable [QGVAR(allDogtags), _allDogtags]; +missionNameSpace setVariable [QGVAR(allDogtagNicknames), _allDogtagNicknames]; + +if(isMultiplayer) then { + [QGVAR(addDogtagItem), [_target], [_item]] call EFUNC(common,targetEvent); +} else { + [QGVAR(addDogtagItem), [_item, _nickname]] call EFUNC(common,localEvent); +}; diff --git a/addons/dogtags/functions/fnc_sendDogtagData.sqf b/addons/dogtags/functions/fnc_sendDogtagData.sqf new file mode 100644 index 0000000000..4294844c31 --- /dev/null +++ b/addons/dogtags/functions/fnc_sendDogtagData.sqf @@ -0,0 +1,30 @@ +/* + * Author: SzwedzikPl + * Server: returns to client nickname on given dogtag + * + * Arguments: + * 0: Player + * 1: Target + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +if(!isServer) exitWith {}; + +params ["_target", "_item"]; +TRACE_2("sendDogtagData",_target,_item); + +private _allDogtags = missionNameSpace getVariable [QGVAR(allDogtags), []]; +private _allDogtagNicknames = missionNameSpace getVariable [QGVAR(allDogtagNicknames), []]; + +private _nickname = ""; +private _index = _allDogtags find _item; +if(_index >= 0) then { + _nickname = _allDogtagNicknames select _index; +}; + +[QGVAR(showDogtag), [_target], [_nickname]] call EFUNC(common,targetEvent); diff --git a/addons/dogtags/functions/fnc_showDogtag.sqf b/addons/dogtags/functions/fnc_showDogtag.sqf new file mode 100644 index 0000000000..667aeb2593 --- /dev/null +++ b/addons/dogtags/functions/fnc_showDogtag.sqf @@ -0,0 +1,27 @@ +/* + * Author: SzwedzikPL + * Shows dogtag + * + * Arguments: + * 0: Nickname + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +disableSerialization; + +params ["_nickname"]; + +if(!hasInterface || {_nickname == ""}) exitWith {}; + +(QGVAR(tag) call BIS_fnc_rscLayer) cutRsc [QGVAR(tag), "PLAIN", 1, true]; + +private _display = uiNamespace getvariable [QGVAR(tag), displayNull]; +if(isNull _display) exitWith {}; + +private _control = _display displayCtrl 1001; +_control ctrlSetText _nickname; diff --git a/addons/dogtags/functions/fnc_takeDogtag.sqf b/addons/dogtags/functions/fnc_takeDogtag.sqf new file mode 100644 index 0000000000..2d4e352f24 --- /dev/null +++ b/addons/dogtags/functions/fnc_takeDogtag.sqf @@ -0,0 +1,24 @@ +/* + * Author: SzwedzikPl + * If dogtag is not already taken triggers event on server + * If dogtag already taken displays info about it + * + * Arguments: + * 0: Player + * 1: Target + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +params ["_player", "_target"]; + +if(_target getVariable [QGVAR(dogtagTaken), false]) then { + [localize LSTRING(dogtagAlreadyTaken)] call EFUNC(common,displayText); +} else { + _target setVariable [QGVAR(dogtagTaken), true, true]; + [QGVAR(getDogtagItem), [_player, _target]] call EFUNC(common,serverEvent); +}; diff --git a/addons/dogtags/functions/script_component.hpp b/addons/dogtags/functions/script_component.hpp new file mode 100644 index 0000000000..583e76df33 --- /dev/null +++ b/addons/dogtags/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\dogtags\script_component.hpp" diff --git a/addons/dogtags/script_component.hpp b/addons/dogtags/script_component.hpp new file mode 100644 index 0000000000..6f1e5d776a --- /dev/null +++ b/addons/dogtags/script_component.hpp @@ -0,0 +1,1029 @@ +#define COMPONENT dogtags +#include "\z\ace\addons\main\script_mod.hpp" + +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE +// #define CBA_DEBUG_SYNCHRONOUS +// #define ENABLE_PERFORMANCE_COUNTERS + +#ifdef DEBUG_ENABLED_DOGTAGS + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_DOGTAGS + #define DEBUG_SETTINGS DEBUG_SETTINGS_DOGTAGS +#endif + +#include "\z\ace\addons\main\script_macros.hpp" + +#define ACE_DOGTAG_CLASS(DOGTAGBASE,DOGTAGID) \ + class DOGTAGBASE##_##DOGTAGID : DOGTAGBASE { \ + author = ECSTRING(common,ACETeam); \ + scope = 1; \ + scopeArsenal = 0; \ + scopeCurator = 0; \ + descriptionShort = QUOTE(DOGTAGID); \ + GVAR(tagID) = DOGTAGID; \ + }; + +#define ACE_DOGTAGS(DOGTAGBASE) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,1) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,2) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,3) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,4) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,5) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,6) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,7) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,8) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,9) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,10) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,11) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,12) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,13) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,14) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,15) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,16) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,17) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,18) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,19) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,20) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,21) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,22) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,23) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,24) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,25) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,26) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,27) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,28) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,29) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,30) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,31) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,32) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,33) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,34) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,35) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,36) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,37) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,38) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,39) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,40) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,41) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,42) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,43) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,44) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,45) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,46) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,47) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,48) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,49) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,50) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,51) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,52) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,53) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,54) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,55) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,56) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,57) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,58) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,59) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,60) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,61) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,62) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,63) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,64) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,65) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,66) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,67) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,68) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,69) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,70) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,71) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,72) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,73) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,74) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,75) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,76) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,77) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,78) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,79) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,80) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,81) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,82) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,83) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,84) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,85) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,86) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,87) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,88) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,89) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,90) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,91) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,92) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,93) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,94) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,95) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,96) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,97) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,98) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,99) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,100) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,101) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,102) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,103) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,104) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,105) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,106) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,107) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,108) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,109) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,110) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,111) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,112) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,113) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,114) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,115) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,116) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,117) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,118) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,119) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,120) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,121) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,122) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,123) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,124) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,125) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,126) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,127) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,128) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,129) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,130) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,131) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,132) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,133) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,134) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,135) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,136) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,137) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,138) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,139) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,140) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,141) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,142) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,143) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,144) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,145) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,146) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,147) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,148) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,149) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,150) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,151) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,152) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,153) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,154) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,155) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,156) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,157) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,158) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,159) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,160) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,161) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,162) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,163) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,164) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,165) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,166) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,167) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,168) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,169) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,170) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,171) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,172) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,173) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,174) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,175) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,176) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,177) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,178) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,179) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,180) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,181) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,182) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,183) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,184) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,185) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,186) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,187) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,188) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,189) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,190) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,191) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,192) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,193) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,194) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,195) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,196) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,197) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,198) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,199) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,200) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,201) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,202) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,203) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,204) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,205) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,206) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,207) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,208) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,209) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,210) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,211) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,212) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,213) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,214) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,215) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,216) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,217) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,218) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,219) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,220) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,221) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,222) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,223) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,224) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,225) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,226) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,227) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,228) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,229) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,230) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,231) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,232) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,233) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,234) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,235) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,236) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,237) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,238) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,239) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,240) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,241) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,242) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,243) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,244) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,245) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,246) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,247) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,248) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,249) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,250) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,251) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,252) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,253) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,254) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,255) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,256) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,257) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,258) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,259) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,260) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,261) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,262) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,263) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,264) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,265) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,266) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,267) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,268) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,269) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,270) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,271) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,272) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,273) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,274) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,275) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,276) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,277) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,278) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,279) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,280) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,281) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,282) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,283) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,284) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,285) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,286) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,287) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,288) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,289) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,290) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,291) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,292) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,293) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,294) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,295) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,296) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,297) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,298) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,299) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,300) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,301) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,302) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,303) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,304) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,305) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,306) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,307) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,308) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,309) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,310) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,311) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,312) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,313) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,314) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,315) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,316) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,317) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,318) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,319) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,320) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,321) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,322) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,323) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,324) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,325) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,326) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,327) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,328) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,329) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,330) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,331) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,332) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,333) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,334) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,335) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,336) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,337) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,338) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,339) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,340) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,341) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,342) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,343) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,344) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,345) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,346) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,347) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,348) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,349) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,350) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,351) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,352) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,353) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,354) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,355) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,356) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,357) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,358) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,359) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,360) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,361) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,362) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,363) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,364) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,365) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,366) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,367) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,368) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,369) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,370) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,371) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,372) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,373) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,374) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,375) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,376) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,377) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,378) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,379) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,380) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,381) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,382) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,383) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,384) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,385) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,386) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,387) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,388) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,389) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,390) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,391) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,392) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,393) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,394) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,395) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,396) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,397) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,398) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,399) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,400) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,401) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,402) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,403) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,404) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,405) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,406) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,407) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,408) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,409) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,410) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,411) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,412) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,413) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,414) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,415) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,416) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,417) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,418) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,419) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,420) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,421) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,422) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,423) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,424) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,425) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,426) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,427) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,428) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,429) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,430) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,431) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,432) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,433) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,434) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,435) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,436) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,437) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,438) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,439) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,440) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,441) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,442) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,443) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,444) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,445) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,446) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,447) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,448) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,449) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,450) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,451) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,452) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,453) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,454) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,455) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,456) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,457) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,458) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,459) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,460) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,461) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,462) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,463) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,464) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,465) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,466) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,467) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,468) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,469) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,470) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,471) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,472) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,473) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,474) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,475) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,476) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,477) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,478) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,479) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,480) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,481) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,482) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,483) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,484) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,485) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,486) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,487) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,488) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,489) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,490) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,491) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,492) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,493) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,494) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,495) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,496) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,497) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,498) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,499) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,500) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,501) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,502) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,503) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,504) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,505) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,506) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,507) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,508) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,509) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,510) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,511) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,512) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,513) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,514) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,515) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,516) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,517) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,518) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,519) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,520) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,521) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,522) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,523) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,524) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,525) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,526) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,527) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,528) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,529) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,530) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,531) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,532) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,533) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,534) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,535) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,536) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,537) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,538) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,539) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,540) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,541) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,542) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,543) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,544) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,545) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,546) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,547) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,548) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,549) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,550) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,551) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,552) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,553) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,554) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,555) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,556) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,557) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,558) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,559) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,560) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,561) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,562) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,563) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,564) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,565) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,566) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,567) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,568) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,569) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,570) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,571) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,572) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,573) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,574) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,575) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,576) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,577) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,578) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,579) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,580) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,581) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,582) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,583) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,584) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,585) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,586) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,587) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,588) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,589) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,590) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,591) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,592) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,593) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,594) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,595) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,596) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,597) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,598) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,599) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,600) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,601) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,602) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,603) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,604) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,605) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,606) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,607) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,608) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,609) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,610) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,611) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,612) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,613) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,614) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,615) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,616) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,617) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,618) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,619) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,620) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,621) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,622) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,623) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,624) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,625) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,626) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,627) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,628) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,629) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,630) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,631) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,632) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,633) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,634) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,635) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,636) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,637) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,638) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,639) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,640) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,641) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,642) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,643) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,644) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,645) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,646) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,647) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,648) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,649) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,650) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,651) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,652) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,653) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,654) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,655) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,656) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,657) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,658) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,659) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,660) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,661) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,662) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,663) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,664) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,665) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,666) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,667) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,668) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,669) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,670) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,671) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,672) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,673) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,674) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,675) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,676) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,677) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,678) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,679) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,680) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,681) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,682) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,683) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,684) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,685) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,686) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,687) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,688) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,689) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,690) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,691) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,692) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,693) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,694) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,695) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,696) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,697) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,698) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,699) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,700) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,701) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,702) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,703) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,704) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,705) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,706) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,707) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,708) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,709) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,710) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,711) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,712) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,713) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,714) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,715) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,716) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,717) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,718) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,719) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,720) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,721) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,722) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,723) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,724) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,725) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,726) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,727) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,728) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,729) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,730) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,731) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,732) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,733) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,734) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,735) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,736) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,737) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,738) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,739) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,740) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,741) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,742) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,743) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,744) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,745) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,746) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,747) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,748) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,749) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,750) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,751) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,752) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,753) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,754) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,755) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,756) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,757) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,758) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,759) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,760) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,761) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,762) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,763) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,764) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,765) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,766) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,767) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,768) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,769) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,770) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,771) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,772) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,773) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,774) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,775) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,776) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,777) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,778) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,779) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,780) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,781) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,782) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,783) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,784) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,785) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,786) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,787) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,788) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,789) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,790) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,791) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,792) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,793) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,794) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,795) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,796) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,797) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,798) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,799) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,800) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,801) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,802) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,803) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,804) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,805) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,806) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,807) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,808) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,809) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,810) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,811) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,812) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,813) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,814) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,815) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,816) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,817) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,818) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,819) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,820) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,821) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,822) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,823) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,824) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,825) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,826) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,827) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,828) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,829) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,830) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,831) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,832) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,833) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,834) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,835) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,836) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,837) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,838) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,839) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,840) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,841) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,842) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,843) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,844) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,845) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,846) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,847) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,848) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,849) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,850) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,851) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,852) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,853) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,854) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,855) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,856) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,857) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,858) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,859) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,860) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,861) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,862) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,863) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,864) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,865) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,866) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,867) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,868) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,869) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,870) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,871) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,872) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,873) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,874) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,875) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,876) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,877) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,878) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,879) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,880) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,881) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,882) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,883) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,884) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,885) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,886) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,887) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,888) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,889) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,890) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,891) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,892) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,893) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,894) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,895) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,896) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,897) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,898) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,899) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,900) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,901) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,902) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,903) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,904) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,905) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,906) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,907) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,908) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,909) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,910) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,911) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,912) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,913) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,914) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,915) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,916) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,917) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,918) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,919) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,920) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,921) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,922) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,923) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,924) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,925) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,926) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,927) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,928) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,929) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,930) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,931) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,932) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,933) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,934) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,935) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,936) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,937) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,938) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,939) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,940) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,941) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,942) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,943) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,944) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,945) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,946) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,947) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,948) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,949) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,950) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,951) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,952) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,953) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,954) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,955) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,956) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,957) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,958) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,959) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,960) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,961) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,962) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,963) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,964) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,965) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,966) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,967) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,968) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,969) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,970) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,971) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,972) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,973) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,974) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,975) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,976) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,977) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,978) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,979) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,980) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,981) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,982) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,983) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,984) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,985) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,986) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,987) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,988) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,989) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,990) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,991) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,992) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,993) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,994) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,995) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,996) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,997) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,998) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,999) \ + ACE_DOGTAG_CLASS(DOGTAGBASE,1000) diff --git a/addons/dogtags/stringtable.xml b/addons/dogtags/stringtable.xml new file mode 100644 index 0000000000..60bbdf508e --- /dev/null +++ b/addons/dogtags/stringtable.xml @@ -0,0 +1,89 @@ + + + + + Dog Tag + + + + Nieśmiertelnik + + + + + + + + Check Dog Tag + + + + Sprawdź nieśmiertelnik + + + + + + + + Check + + + + Sprawdź + + + + + + + + Take + + + + Zabierz + + + + + + + + Dogtag taken from %1... + + + + Zabrałeś nieśmiertelnik %1... + + + + + + + + I can't seem to find his dogtag! + + + + Brak nieśmiertelnika + + + + + + + + Somebody else has already taken the dogtag... + + + + Ktoś już zabrał ten nieśmiertelnik... + + + + + + + + \ No newline at end of file From 1cdecf75da42bc64cd21c981058297da91b7ad9f Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Sat, 19 Mar 2016 18:12:18 +0100 Subject: [PATCH 02/85] double dogtag support, fix addDogtagItem event in mp, unconscious units support, little cleanup --- addons/dogtags/Dogtag.hpp | 32 ++++++++-- addons/dogtags/README.md | 2 +- addons/dogtags/data/dogtag.paa | Bin 11081 -> 0 bytes addons/dogtags/data/dogtagDouble.paa | Bin 0 -> 22016 bytes addons/dogtags/data/dogtagSingle.paa | Bin 0 -> 22016 bytes .../functions/fnc_addDogtagActions.sqf | 8 +-- .../dogtags/functions/fnc_addDogtagItem.sqf | 4 +- .../dogtags/functions/fnc_canCheckDogtag.sqf | 6 +- .../dogtags/functions/fnc_canTakeDogtag.sqf | 6 +- addons/dogtags/functions/fnc_checkDogtag.sqf | 11 ++-- .../dogtags/functions/fnc_checkDogtagItem.sqf | 2 +- .../dogtags/functions/fnc_getDogtagItem.sqf | 14 ++-- .../dogtags/functions/fnc_sendDogtagData.sqf | 4 +- addons/dogtags/functions/fnc_showDogtag.sqf | 11 ++-- addons/dogtags/functions/fnc_takeDogtag.sqf | 4 +- addons/dogtags/stringtable.xml | 60 ------------------ 16 files changed, 63 insertions(+), 101 deletions(-) delete mode 100644 addons/dogtags/data/dogtag.paa create mode 100644 addons/dogtags/data/dogtagDouble.paa create mode 100644 addons/dogtags/data/dogtagSingle.paa diff --git a/addons/dogtags/Dogtag.hpp b/addons/dogtags/Dogtag.hpp index 9ab7fe8fd7..aa4480a7f8 100644 --- a/addons/dogtags/Dogtag.hpp +++ b/addons/dogtags/Dogtag.hpp @@ -2,7 +2,7 @@ class RscPicture; class RscStructuredText; class RscTitles { - class GVAR(tag) { + class GVAR(singleTag) { idd = -1; onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(tag)),_this select 0)]); onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(tag)),nil)]); @@ -14,14 +14,14 @@ class RscTitles { class controls { class background: RscPicture { idc = 1000; - text = QUOTE(PATHTOF(data\dogtag.paa)); + text = QUOTE(PATHTOF(data\dogtagSingle.paa)); sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; x = ((safezoneX + safezoneW) - (10 * (((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 * (((safezoneW / safezoneH) min 1.2) / 40)); y = safeZoneY + 0.175 * safezoneH; w = (8 * (((safezoneW / safezoneH) min 1.2) / 40)); - h = (4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)); + h = (8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)); font = "EtelkaMonospacePro"; }; class nickname: RscStructuredText { @@ -31,9 +31,9 @@ class RscTitles { colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; x = ((safezoneX + safezoneW) - (8.4 * (((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 * (((safezoneW / safezoneH) min 1.2) / 40)); - y = safeZoneY + 0.2 * safezoneH; + y = safeZoneY + 0.25 * safezoneH; w = (5.9 * (((safezoneW / safezoneH) min 1.2) / 40)); - h = (4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)); + h = (3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)); font = "EtelkaMonospacePro"; class Attributes { font = "EtelkaMonospacePro"; @@ -47,4 +47,26 @@ class RscTitles { }; }; }; + class GVAR(doubleTag): GVAR(singleTag) { + idd = -1; + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(tag)),_this select 0)]); + onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(tag)),nil)]); + + class controls: controls { + class background: background { + text = QUOTE(PATHTOF(data\dogtagDouble.paa)); + }; + class nickname: nickname { + class Attributes: Attributes { + font = "EtelkaMonospacePro"; + color = "#FFFFFF"; + align = "center"; + valign = "middle"; + shadow = 1; + shadowColor = "#3f4345"; + size = "0.85"; + }; + }; + }; + }; }; diff --git a/addons/dogtags/README.md b/addons/dogtags/README.md index 1c52679ee7..e3bf6caf73 100644 --- a/addons/dogtags/README.md +++ b/addons/dogtags/README.md @@ -1,7 +1,7 @@ ace_dogtags ========== -Adds options to check and take dog tag from dead units +Adds options to check and take dog tag from dead or unconscious units ## Maintainers diff --git a/addons/dogtags/data/dogtag.paa b/addons/dogtags/data/dogtag.paa deleted file mode 100644 index b66bf83e53f95f9afd8402583e8703ffa4d3308b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11081 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 CWi|@{ literal 0 HcmV?d00001 diff --git a/addons/dogtags/functions/fnc_addDogtagActions.sqf b/addons/dogtags/functions/fnc_addDogtagActions.sqf index bd4fb4ff06..ffc45532e9 100644 --- a/addons/dogtags/functions/fnc_addDogtagActions.sqf +++ b/addons/dogtags/functions/fnc_addDogtagActions.sqf @@ -1,5 +1,5 @@ /* - * Author: SzwedzikPl + * Author: SzwedzikPL * Creates one action per dogtag. * * Arguments: @@ -20,9 +20,9 @@ private _unitDogtags = []; private _unitDogtagIDs = []; { private _id = getNumber (configFile >> "CfgWeapons" >> _x >> QGVAR(tagID)); - if(_id > 0) then { - _unitDogtags pushback _x; - _unitDogtagIDs pushback _id; + if (_id > 0) then { + _unitDogtags pushBack _x; + _unitDogtagIDs pushBack _id; }; } forEach items _player; diff --git a/addons/dogtags/functions/fnc_addDogtagItem.sqf b/addons/dogtags/functions/fnc_addDogtagItem.sqf index 35095ea087..8349a7d62e 100644 --- a/addons/dogtags/functions/fnc_addDogtagItem.sqf +++ b/addons/dogtags/functions/fnc_addDogtagItem.sqf @@ -1,5 +1,5 @@ /* - * Author: SzwedzikPl + * Author: SzwedzikPL * Adds dogtag item to unit (triggered by server) * * Arguments: @@ -15,7 +15,7 @@ params ["_item", "_nickname"]; -if(_item == "") exitWith {}; +if (_item == "") exitWith {}; [ace_player, _item] call CBA_fnc_addItem; diff --git a/addons/dogtags/functions/fnc_canCheckDogtag.sqf b/addons/dogtags/functions/fnc_canCheckDogtag.sqf index 5d86ae3850..2c46fe30e6 100644 --- a/addons/dogtags/functions/fnc_canCheckDogtag.sqf +++ b/addons/dogtags/functions/fnc_canCheckDogtag.sqf @@ -1,5 +1,5 @@ /* - * Author: SzwedzikPl + * Author: SzwedzikPL * Checks if dogtag can be checked. * * Arguments: @@ -15,6 +15,6 @@ params ["_player", "_target"]; -if(isNull _target) exitWith {false}; +if (isNull _target) exitWith {false}; -!alive _target +!alive _target || _target getVariable ["ACE_isUnconscious", false] diff --git a/addons/dogtags/functions/fnc_canTakeDogtag.sqf b/addons/dogtags/functions/fnc_canTakeDogtag.sqf index f017f75c54..8414e35c31 100644 --- a/addons/dogtags/functions/fnc_canTakeDogtag.sqf +++ b/addons/dogtags/functions/fnc_canTakeDogtag.sqf @@ -1,5 +1,5 @@ /* - * Author: SzwedzikPl + * Author: SzwedzikPL * Checks if dogtag can be taken. * * Arguments: @@ -15,6 +15,6 @@ params ["_player", "_target"]; -if(isNull _target) exitWith {false}; +if (isNull _target) exitWith {false}; -!alive _target +!alive _target || _target getVariable ["ACE_isUnconscious", false] diff --git a/addons/dogtags/functions/fnc_checkDogtag.sqf b/addons/dogtags/functions/fnc_checkDogtag.sqf index 93dab639ad..bfd78e263c 100644 --- a/addons/dogtags/functions/fnc_checkDogtag.sqf +++ b/addons/dogtags/functions/fnc_checkDogtag.sqf @@ -1,5 +1,5 @@ /* - * Author: SzwedzikPl + * Author: SzwedzikPL * Checks unit dogtag * * Arguments: @@ -15,9 +15,6 @@ params ["_player", "_target"]; -if(_target getVariable [QGVAR(dogtagTaken), false]) then { - [localize LSTRING(noDogtag)] call EFUNC(common,displayText); -} else { - private _nickname = [_target, false, true] call EFUNC(common,getName); - [QGVAR(showDogtag), [_nickname]] call EFUNC(common,localEvent); -}; +private _doubleTags = !(_target getVariable [QGVAR(dogtagTaken), false]); +private _nickname = [_target, false, true] call EFUNC(common,getName); +[QGVAR(showDogtag), [_nickname, _doubleTags]] call EFUNC(common,localEvent); diff --git a/addons/dogtags/functions/fnc_checkDogtagItem.sqf b/addons/dogtags/functions/fnc_checkDogtagItem.sqf index c67fd7d799..786874dc65 100644 --- a/addons/dogtags/functions/fnc_checkDogtagItem.sqf +++ b/addons/dogtags/functions/fnc_checkDogtagItem.sqf @@ -1,5 +1,5 @@ /* - * Author: SzwedzikPl + * Author: SzwedzikPL * Check dogtag self menu action * * Arguments: diff --git a/addons/dogtags/functions/fnc_getDogtagItem.sqf b/addons/dogtags/functions/fnc_getDogtagItem.sqf index ce0a49a8bb..30e0584f7b 100644 --- a/addons/dogtags/functions/fnc_getDogtagItem.sqf +++ b/addons/dogtags/functions/fnc_getDogtagItem.sqf @@ -1,5 +1,5 @@ /* - * Author: SzwedzikPl + * Author: SzwedzikPL * Server: creates new dogtag item and send it to client * * Arguments: @@ -18,23 +18,23 @@ if(!isServer) exitWith {}; params ["_target", "_unit"]; TRACE_2("getDogtagItem",_target,_unit); -private _allDogtags = missionNameSpace getVariable [QGVAR(allDogtags), []]; -private _allDogtagNicknames = missionNameSpace getVariable [QGVAR(allDogtagNicknames), []]; +private _allDogtags = missionNamespace getVariable [QGVAR(allDogtags), []]; +private _allDogtagNicknames = missionNamespace getVariable [QGVAR(allDogtagNicknames), []]; private _nextID = count _allDogtags + 1; -if(_nextID > 999) exitWith {}; +if (_nextID > 999) exitWith {}; private _nickname = [_unit, false, true] call EFUNC(common,getName); private _item = format ["ACE_dogtag_%1", _nextID]; _allDogtags pushBack _item; _allDogtagNicknames pushBack _nickname; -missionNameSpace setVariable [QGVAR(allDogtags), _allDogtags]; -missionNameSpace setVariable [QGVAR(allDogtagNicknames), _allDogtagNicknames]; +missionNamespace setVariable [QGVAR(allDogtags), _allDogtags]; +missionNamespace setVariable [QGVAR(allDogtagNicknames), _allDogtagNicknames]; if(isMultiplayer) then { - [QGVAR(addDogtagItem), [_target], [_item]] call EFUNC(common,targetEvent); + [QGVAR(addDogtagItem), [_target], [_item, _nickname]] call EFUNC(common,targetEvent); } else { [QGVAR(addDogtagItem), [_item, _nickname]] call EFUNC(common,localEvent); }; diff --git a/addons/dogtags/functions/fnc_sendDogtagData.sqf b/addons/dogtags/functions/fnc_sendDogtagData.sqf index 4294844c31..9cb2efdd5d 100644 --- a/addons/dogtags/functions/fnc_sendDogtagData.sqf +++ b/addons/dogtags/functions/fnc_sendDogtagData.sqf @@ -1,5 +1,5 @@ /* - * Author: SzwedzikPl + * Author: SzwedzikPL * Server: returns to client nickname on given dogtag * * Arguments: @@ -23,7 +23,7 @@ private _allDogtagNicknames = missionNameSpace getVariable [QGVAR(allDogtagNickn private _nickname = ""; private _index = _allDogtags find _item; -if(_index >= 0) then { +if (_index >= 0) then { _nickname = _allDogtagNicknames select _index; }; diff --git a/addons/dogtags/functions/fnc_showDogtag.sqf b/addons/dogtags/functions/fnc_showDogtag.sqf index 667aeb2593..1c79728840 100644 --- a/addons/dogtags/functions/fnc_showDogtag.sqf +++ b/addons/dogtags/functions/fnc_showDogtag.sqf @@ -14,12 +14,15 @@ disableSerialization; -params ["_nickname"]; +params ["_nickname", ["_doubleTags", false, [false]]]; -if(!hasInterface || {_nickname == ""}) exitWith {}; - -(QGVAR(tag) call BIS_fnc_rscLayer) cutRsc [QGVAR(tag), "PLAIN", 1, true]; +if (!hasInterface || {_nickname == ""}) exitWith {}; +if (_doubleTags) then { + (QGVAR(tag) call BIS_fnc_rscLayer) cutRsc [QGVAR(doubleTag), "PLAIN", 1, true]; +} else { + (QGVAR(tag) call BIS_fnc_rscLayer) cutRsc [QGVAR(singleTag), "PLAIN", 1, true]; +}; private _display = uiNamespace getvariable [QGVAR(tag), displayNull]; if(isNull _display) exitWith {}; diff --git a/addons/dogtags/functions/fnc_takeDogtag.sqf b/addons/dogtags/functions/fnc_takeDogtag.sqf index 2d4e352f24..25a5b33389 100644 --- a/addons/dogtags/functions/fnc_takeDogtag.sqf +++ b/addons/dogtags/functions/fnc_takeDogtag.sqf @@ -1,5 +1,5 @@ /* - * Author: SzwedzikPl + * Author: SzwedzikPL * If dogtag is not already taken triggers event on server * If dogtag already taken displays info about it * @@ -16,7 +16,7 @@ params ["_player", "_target"]; -if(_target getVariable [QGVAR(dogtagTaken), false]) then { +if (_target getVariable [QGVAR(dogtagTaken), false]) then { [localize LSTRING(dogtagAlreadyTaken)] call EFUNC(common,displayText); } else { _target setVariable [QGVAR(dogtagTaken), true, true]; diff --git a/addons/dogtags/stringtable.xml b/addons/dogtags/stringtable.xml index 60bbdf508e..3e946c5ec0 100644 --- a/addons/dogtags/stringtable.xml +++ b/addons/dogtags/stringtable.xml @@ -3,87 +3,27 @@ Dog Tag - - - Nieśmiertelnik - - - - - Check Dog Tag - - - Sprawdź nieśmiertelnik - - - - - Check - - - Sprawdź - - - - - Take - - - Zabierz - - - - - Dogtag taken from %1... - - - Zabrałeś nieśmiertelnik %1... - - - - - - - - I can't seem to find his dogtag! - - - - Brak nieśmiertelnika - - - - - Somebody else has already taken the dogtag... - - - Ktoś już zabrał ten nieśmiertelnik... - - - - - \ No newline at end of file From 174e69c3a565ff69709b07e12bd4dbfee39e5336 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Wed, 23 Mar 2016 17:33:08 +0100 Subject: [PATCH 03/85] move dogtag macros to CfgWeapons --- addons/dogtags/CfgWeapons.hpp | 1011 +++++++++++++++++++++++++- addons/dogtags/script_component.hpp | 1012 --------------------------- 2 files changed, 1010 insertions(+), 1013 deletions(-) diff --git a/addons/dogtags/CfgWeapons.hpp b/addons/dogtags/CfgWeapons.hpp index b1e6e780f9..4ef8e9b7ec 100644 --- a/addons/dogtags/CfgWeapons.hpp +++ b/addons/dogtags/CfgWeapons.hpp @@ -1,3 +1,13 @@ +#define ACE_DOGTAG_ITEM(DOGTAGBASE,DOGTAGID) \ + class DOGTAGBASE##_##DOGTAGID : DOGTAGBASE { \ + author = ECSTRING(common,ACETeam); \ + scope = 1; \ + scopeArsenal = 0; \ + scopeCurator = 0; \ + descriptionShort = QUOTE(DOGTAGID); \ + GVAR(tagID) = DOGTAGID; \ + } + class CfgWeapons { class ACE_ItemCore; class InventoryItem_Base_F; @@ -12,5 +22,1004 @@ class CfgWeapons { mass = 0; //too small to for 1 ? }; }; - ACE_DOGTAGS(ACE_dogtag) + ACE_DOGTAG_ITEM(ACE_dogtag,1); + ACE_DOGTAG_ITEM(ACE_dogtag,2); + ACE_DOGTAG_ITEM(ACE_dogtag,3); + ACE_DOGTAG_ITEM(ACE_dogtag,4); + ACE_DOGTAG_ITEM(ACE_dogtag,5); + ACE_DOGTAG_ITEM(ACE_dogtag,6); + ACE_DOGTAG_ITEM(ACE_dogtag,7); + ACE_DOGTAG_ITEM(ACE_dogtag,8); + ACE_DOGTAG_ITEM(ACE_dogtag,9); + ACE_DOGTAG_ITEM(ACE_dogtag,10); + ACE_DOGTAG_ITEM(ACE_dogtag,11); + ACE_DOGTAG_ITEM(ACE_dogtag,12); + ACE_DOGTAG_ITEM(ACE_dogtag,13); + ACE_DOGTAG_ITEM(ACE_dogtag,14); + ACE_DOGTAG_ITEM(ACE_dogtag,15); + ACE_DOGTAG_ITEM(ACE_dogtag,16); + ACE_DOGTAG_ITEM(ACE_dogtag,17); + ACE_DOGTAG_ITEM(ACE_dogtag,18); + ACE_DOGTAG_ITEM(ACE_dogtag,19); + ACE_DOGTAG_ITEM(ACE_dogtag,20); + ACE_DOGTAG_ITEM(ACE_dogtag,21); + ACE_DOGTAG_ITEM(ACE_dogtag,22); + ACE_DOGTAG_ITEM(ACE_dogtag,23); + ACE_DOGTAG_ITEM(ACE_dogtag,24); + ACE_DOGTAG_ITEM(ACE_dogtag,25); + ACE_DOGTAG_ITEM(ACE_dogtag,26); + ACE_DOGTAG_ITEM(ACE_dogtag,27); + ACE_DOGTAG_ITEM(ACE_dogtag,28); + ACE_DOGTAG_ITEM(ACE_dogtag,29); + ACE_DOGTAG_ITEM(ACE_dogtag,30); + ACE_DOGTAG_ITEM(ACE_dogtag,31); + ACE_DOGTAG_ITEM(ACE_dogtag,32); + ACE_DOGTAG_ITEM(ACE_dogtag,33); + ACE_DOGTAG_ITEM(ACE_dogtag,34); + ACE_DOGTAG_ITEM(ACE_dogtag,35); + ACE_DOGTAG_ITEM(ACE_dogtag,36); + ACE_DOGTAG_ITEM(ACE_dogtag,37); + ACE_DOGTAG_ITEM(ACE_dogtag,38); + ACE_DOGTAG_ITEM(ACE_dogtag,39); + ACE_DOGTAG_ITEM(ACE_dogtag,40); + ACE_DOGTAG_ITEM(ACE_dogtag,41); + ACE_DOGTAG_ITEM(ACE_dogtag,42); + ACE_DOGTAG_ITEM(ACE_dogtag,43); + ACE_DOGTAG_ITEM(ACE_dogtag,44); + ACE_DOGTAG_ITEM(ACE_dogtag,45); + ACE_DOGTAG_ITEM(ACE_dogtag,46); + ACE_DOGTAG_ITEM(ACE_dogtag,47); + ACE_DOGTAG_ITEM(ACE_dogtag,48); + ACE_DOGTAG_ITEM(ACE_dogtag,49); + ACE_DOGTAG_ITEM(ACE_dogtag,50); + ACE_DOGTAG_ITEM(ACE_dogtag,51); + ACE_DOGTAG_ITEM(ACE_dogtag,52); + ACE_DOGTAG_ITEM(ACE_dogtag,53); + ACE_DOGTAG_ITEM(ACE_dogtag,54); + ACE_DOGTAG_ITEM(ACE_dogtag,55); + ACE_DOGTAG_ITEM(ACE_dogtag,56); + ACE_DOGTAG_ITEM(ACE_dogtag,57); + ACE_DOGTAG_ITEM(ACE_dogtag,58); + ACE_DOGTAG_ITEM(ACE_dogtag,59); + ACE_DOGTAG_ITEM(ACE_dogtag,60); + ACE_DOGTAG_ITEM(ACE_dogtag,61); + ACE_DOGTAG_ITEM(ACE_dogtag,62); + ACE_DOGTAG_ITEM(ACE_dogtag,63); + ACE_DOGTAG_ITEM(ACE_dogtag,64); + ACE_DOGTAG_ITEM(ACE_dogtag,65); + ACE_DOGTAG_ITEM(ACE_dogtag,66); + ACE_DOGTAG_ITEM(ACE_dogtag,67); + ACE_DOGTAG_ITEM(ACE_dogtag,68); + ACE_DOGTAG_ITEM(ACE_dogtag,69); + ACE_DOGTAG_ITEM(ACE_dogtag,70); + ACE_DOGTAG_ITEM(ACE_dogtag,71); + ACE_DOGTAG_ITEM(ACE_dogtag,72); + ACE_DOGTAG_ITEM(ACE_dogtag,73); + ACE_DOGTAG_ITEM(ACE_dogtag,74); + ACE_DOGTAG_ITEM(ACE_dogtag,75); + ACE_DOGTAG_ITEM(ACE_dogtag,76); + ACE_DOGTAG_ITEM(ACE_dogtag,77); + ACE_DOGTAG_ITEM(ACE_dogtag,78); + ACE_DOGTAG_ITEM(ACE_dogtag,79); + ACE_DOGTAG_ITEM(ACE_dogtag,80); + ACE_DOGTAG_ITEM(ACE_dogtag,81); + ACE_DOGTAG_ITEM(ACE_dogtag,82); + ACE_DOGTAG_ITEM(ACE_dogtag,83); + ACE_DOGTAG_ITEM(ACE_dogtag,84); + ACE_DOGTAG_ITEM(ACE_dogtag,85); + ACE_DOGTAG_ITEM(ACE_dogtag,86); + ACE_DOGTAG_ITEM(ACE_dogtag,87); + ACE_DOGTAG_ITEM(ACE_dogtag,88); + ACE_DOGTAG_ITEM(ACE_dogtag,89); + ACE_DOGTAG_ITEM(ACE_dogtag,90); + ACE_DOGTAG_ITEM(ACE_dogtag,91); + ACE_DOGTAG_ITEM(ACE_dogtag,92); + ACE_DOGTAG_ITEM(ACE_dogtag,93); + ACE_DOGTAG_ITEM(ACE_dogtag,94); + ACE_DOGTAG_ITEM(ACE_dogtag,95); + ACE_DOGTAG_ITEM(ACE_dogtag,96); + ACE_DOGTAG_ITEM(ACE_dogtag,97); + ACE_DOGTAG_ITEM(ACE_dogtag,98); + ACE_DOGTAG_ITEM(ACE_dogtag,99); + ACE_DOGTAG_ITEM(ACE_dogtag,100); + ACE_DOGTAG_ITEM(ACE_dogtag,101); + ACE_DOGTAG_ITEM(ACE_dogtag,102); + ACE_DOGTAG_ITEM(ACE_dogtag,103); + ACE_DOGTAG_ITEM(ACE_dogtag,104); + ACE_DOGTAG_ITEM(ACE_dogtag,105); + ACE_DOGTAG_ITEM(ACE_dogtag,106); + ACE_DOGTAG_ITEM(ACE_dogtag,107); + ACE_DOGTAG_ITEM(ACE_dogtag,108); + ACE_DOGTAG_ITEM(ACE_dogtag,109); + ACE_DOGTAG_ITEM(ACE_dogtag,110); + ACE_DOGTAG_ITEM(ACE_dogtag,111); + ACE_DOGTAG_ITEM(ACE_dogtag,112); + ACE_DOGTAG_ITEM(ACE_dogtag,113); + ACE_DOGTAG_ITEM(ACE_dogtag,114); + ACE_DOGTAG_ITEM(ACE_dogtag,115); + ACE_DOGTAG_ITEM(ACE_dogtag,116); + ACE_DOGTAG_ITEM(ACE_dogtag,117); + ACE_DOGTAG_ITEM(ACE_dogtag,118); + ACE_DOGTAG_ITEM(ACE_dogtag,119); + ACE_DOGTAG_ITEM(ACE_dogtag,120); + ACE_DOGTAG_ITEM(ACE_dogtag,121); + ACE_DOGTAG_ITEM(ACE_dogtag,122); + ACE_DOGTAG_ITEM(ACE_dogtag,123); + ACE_DOGTAG_ITEM(ACE_dogtag,124); + ACE_DOGTAG_ITEM(ACE_dogtag,125); + ACE_DOGTAG_ITEM(ACE_dogtag,126); + ACE_DOGTAG_ITEM(ACE_dogtag,127); + ACE_DOGTAG_ITEM(ACE_dogtag,128); + ACE_DOGTAG_ITEM(ACE_dogtag,129); + ACE_DOGTAG_ITEM(ACE_dogtag,130); + ACE_DOGTAG_ITEM(ACE_dogtag,131); + ACE_DOGTAG_ITEM(ACE_dogtag,132); + ACE_DOGTAG_ITEM(ACE_dogtag,133); + ACE_DOGTAG_ITEM(ACE_dogtag,134); + ACE_DOGTAG_ITEM(ACE_dogtag,135); + ACE_DOGTAG_ITEM(ACE_dogtag,136); + ACE_DOGTAG_ITEM(ACE_dogtag,137); + ACE_DOGTAG_ITEM(ACE_dogtag,138); + ACE_DOGTAG_ITEM(ACE_dogtag,139); + ACE_DOGTAG_ITEM(ACE_dogtag,140); + ACE_DOGTAG_ITEM(ACE_dogtag,141); + ACE_DOGTAG_ITEM(ACE_dogtag,142); + ACE_DOGTAG_ITEM(ACE_dogtag,143); + ACE_DOGTAG_ITEM(ACE_dogtag,144); + ACE_DOGTAG_ITEM(ACE_dogtag,145); + ACE_DOGTAG_ITEM(ACE_dogtag,146); + ACE_DOGTAG_ITEM(ACE_dogtag,147); + ACE_DOGTAG_ITEM(ACE_dogtag,148); + ACE_DOGTAG_ITEM(ACE_dogtag,149); + ACE_DOGTAG_ITEM(ACE_dogtag,150); + ACE_DOGTAG_ITEM(ACE_dogtag,151); + ACE_DOGTAG_ITEM(ACE_dogtag,152); + ACE_DOGTAG_ITEM(ACE_dogtag,153); + ACE_DOGTAG_ITEM(ACE_dogtag,154); + ACE_DOGTAG_ITEM(ACE_dogtag,155); + ACE_DOGTAG_ITEM(ACE_dogtag,156); + ACE_DOGTAG_ITEM(ACE_dogtag,157); + ACE_DOGTAG_ITEM(ACE_dogtag,158); + ACE_DOGTAG_ITEM(ACE_dogtag,159); + ACE_DOGTAG_ITEM(ACE_dogtag,160); + ACE_DOGTAG_ITEM(ACE_dogtag,161); + ACE_DOGTAG_ITEM(ACE_dogtag,162); + ACE_DOGTAG_ITEM(ACE_dogtag,163); + ACE_DOGTAG_ITEM(ACE_dogtag,164); + ACE_DOGTAG_ITEM(ACE_dogtag,165); + ACE_DOGTAG_ITEM(ACE_dogtag,166); + ACE_DOGTAG_ITEM(ACE_dogtag,167); + ACE_DOGTAG_ITEM(ACE_dogtag,168); + ACE_DOGTAG_ITEM(ACE_dogtag,169); + ACE_DOGTAG_ITEM(ACE_dogtag,170); + ACE_DOGTAG_ITEM(ACE_dogtag,171); + ACE_DOGTAG_ITEM(ACE_dogtag,172); + ACE_DOGTAG_ITEM(ACE_dogtag,173); + ACE_DOGTAG_ITEM(ACE_dogtag,174); + ACE_DOGTAG_ITEM(ACE_dogtag,175); + ACE_DOGTAG_ITEM(ACE_dogtag,176); + ACE_DOGTAG_ITEM(ACE_dogtag,177); + ACE_DOGTAG_ITEM(ACE_dogtag,178); + ACE_DOGTAG_ITEM(ACE_dogtag,179); + ACE_DOGTAG_ITEM(ACE_dogtag,180); + ACE_DOGTAG_ITEM(ACE_dogtag,181); + ACE_DOGTAG_ITEM(ACE_dogtag,182); + ACE_DOGTAG_ITEM(ACE_dogtag,183); + ACE_DOGTAG_ITEM(ACE_dogtag,184); + ACE_DOGTAG_ITEM(ACE_dogtag,185); + ACE_DOGTAG_ITEM(ACE_dogtag,186); + ACE_DOGTAG_ITEM(ACE_dogtag,187); + ACE_DOGTAG_ITEM(ACE_dogtag,188); + ACE_DOGTAG_ITEM(ACE_dogtag,189); + ACE_DOGTAG_ITEM(ACE_dogtag,190); + ACE_DOGTAG_ITEM(ACE_dogtag,191); + ACE_DOGTAG_ITEM(ACE_dogtag,192); + ACE_DOGTAG_ITEM(ACE_dogtag,193); + ACE_DOGTAG_ITEM(ACE_dogtag,194); + ACE_DOGTAG_ITEM(ACE_dogtag,195); + ACE_DOGTAG_ITEM(ACE_dogtag,196); + ACE_DOGTAG_ITEM(ACE_dogtag,197); + ACE_DOGTAG_ITEM(ACE_dogtag,198); + ACE_DOGTAG_ITEM(ACE_dogtag,199); + ACE_DOGTAG_ITEM(ACE_dogtag,200); + ACE_DOGTAG_ITEM(ACE_dogtag,201); + ACE_DOGTAG_ITEM(ACE_dogtag,202); + ACE_DOGTAG_ITEM(ACE_dogtag,203); + ACE_DOGTAG_ITEM(ACE_dogtag,204); + ACE_DOGTAG_ITEM(ACE_dogtag,205); + ACE_DOGTAG_ITEM(ACE_dogtag,206); + ACE_DOGTAG_ITEM(ACE_dogtag,207); + ACE_DOGTAG_ITEM(ACE_dogtag,208); + ACE_DOGTAG_ITEM(ACE_dogtag,209); + ACE_DOGTAG_ITEM(ACE_dogtag,210); + ACE_DOGTAG_ITEM(ACE_dogtag,211); + ACE_DOGTAG_ITEM(ACE_dogtag,212); + ACE_DOGTAG_ITEM(ACE_dogtag,213); + ACE_DOGTAG_ITEM(ACE_dogtag,214); + ACE_DOGTAG_ITEM(ACE_dogtag,215); + ACE_DOGTAG_ITEM(ACE_dogtag,216); + ACE_DOGTAG_ITEM(ACE_dogtag,217); + ACE_DOGTAG_ITEM(ACE_dogtag,218); + ACE_DOGTAG_ITEM(ACE_dogtag,219); + ACE_DOGTAG_ITEM(ACE_dogtag,220); + ACE_DOGTAG_ITEM(ACE_dogtag,221); + ACE_DOGTAG_ITEM(ACE_dogtag,222); + ACE_DOGTAG_ITEM(ACE_dogtag,223); + ACE_DOGTAG_ITEM(ACE_dogtag,224); + ACE_DOGTAG_ITEM(ACE_dogtag,225); + ACE_DOGTAG_ITEM(ACE_dogtag,226); + ACE_DOGTAG_ITEM(ACE_dogtag,227); + ACE_DOGTAG_ITEM(ACE_dogtag,228); + ACE_DOGTAG_ITEM(ACE_dogtag,229); + ACE_DOGTAG_ITEM(ACE_dogtag,230); + ACE_DOGTAG_ITEM(ACE_dogtag,231); + ACE_DOGTAG_ITEM(ACE_dogtag,232); + ACE_DOGTAG_ITEM(ACE_dogtag,233); + ACE_DOGTAG_ITEM(ACE_dogtag,234); + ACE_DOGTAG_ITEM(ACE_dogtag,235); + ACE_DOGTAG_ITEM(ACE_dogtag,236); + ACE_DOGTAG_ITEM(ACE_dogtag,237); + ACE_DOGTAG_ITEM(ACE_dogtag,238); + ACE_DOGTAG_ITEM(ACE_dogtag,239); + ACE_DOGTAG_ITEM(ACE_dogtag,240); + ACE_DOGTAG_ITEM(ACE_dogtag,241); + ACE_DOGTAG_ITEM(ACE_dogtag,242); + ACE_DOGTAG_ITEM(ACE_dogtag,243); + ACE_DOGTAG_ITEM(ACE_dogtag,244); + ACE_DOGTAG_ITEM(ACE_dogtag,245); + ACE_DOGTAG_ITEM(ACE_dogtag,246); + ACE_DOGTAG_ITEM(ACE_dogtag,247); + ACE_DOGTAG_ITEM(ACE_dogtag,248); + ACE_DOGTAG_ITEM(ACE_dogtag,249); + ACE_DOGTAG_ITEM(ACE_dogtag,250); + ACE_DOGTAG_ITEM(ACE_dogtag,251); + ACE_DOGTAG_ITEM(ACE_dogtag,252); + ACE_DOGTAG_ITEM(ACE_dogtag,253); + ACE_DOGTAG_ITEM(ACE_dogtag,254); + ACE_DOGTAG_ITEM(ACE_dogtag,255); + ACE_DOGTAG_ITEM(ACE_dogtag,256); + ACE_DOGTAG_ITEM(ACE_dogtag,257); + ACE_DOGTAG_ITEM(ACE_dogtag,258); + ACE_DOGTAG_ITEM(ACE_dogtag,259); + ACE_DOGTAG_ITEM(ACE_dogtag,260); + ACE_DOGTAG_ITEM(ACE_dogtag,261); + ACE_DOGTAG_ITEM(ACE_dogtag,262); + ACE_DOGTAG_ITEM(ACE_dogtag,263); + ACE_DOGTAG_ITEM(ACE_dogtag,264); + ACE_DOGTAG_ITEM(ACE_dogtag,265); + ACE_DOGTAG_ITEM(ACE_dogtag,266); + ACE_DOGTAG_ITEM(ACE_dogtag,267); + ACE_DOGTAG_ITEM(ACE_dogtag,268); + ACE_DOGTAG_ITEM(ACE_dogtag,269); + ACE_DOGTAG_ITEM(ACE_dogtag,270); + ACE_DOGTAG_ITEM(ACE_dogtag,271); + ACE_DOGTAG_ITEM(ACE_dogtag,272); + ACE_DOGTAG_ITEM(ACE_dogtag,273); + ACE_DOGTAG_ITEM(ACE_dogtag,274); + ACE_DOGTAG_ITEM(ACE_dogtag,275); + ACE_DOGTAG_ITEM(ACE_dogtag,276); + ACE_DOGTAG_ITEM(ACE_dogtag,277); + ACE_DOGTAG_ITEM(ACE_dogtag,278); + ACE_DOGTAG_ITEM(ACE_dogtag,279); + ACE_DOGTAG_ITEM(ACE_dogtag,280); + ACE_DOGTAG_ITEM(ACE_dogtag,281); + ACE_DOGTAG_ITEM(ACE_dogtag,282); + ACE_DOGTAG_ITEM(ACE_dogtag,283); + ACE_DOGTAG_ITEM(ACE_dogtag,284); + ACE_DOGTAG_ITEM(ACE_dogtag,285); + ACE_DOGTAG_ITEM(ACE_dogtag,286); + ACE_DOGTAG_ITEM(ACE_dogtag,287); + ACE_DOGTAG_ITEM(ACE_dogtag,288); + ACE_DOGTAG_ITEM(ACE_dogtag,289); + ACE_DOGTAG_ITEM(ACE_dogtag,290); + ACE_DOGTAG_ITEM(ACE_dogtag,291); + ACE_DOGTAG_ITEM(ACE_dogtag,292); + ACE_DOGTAG_ITEM(ACE_dogtag,293); + ACE_DOGTAG_ITEM(ACE_dogtag,294); + ACE_DOGTAG_ITEM(ACE_dogtag,295); + ACE_DOGTAG_ITEM(ACE_dogtag,296); + ACE_DOGTAG_ITEM(ACE_dogtag,297); + ACE_DOGTAG_ITEM(ACE_dogtag,298); + ACE_DOGTAG_ITEM(ACE_dogtag,299); + ACE_DOGTAG_ITEM(ACE_dogtag,300); + ACE_DOGTAG_ITEM(ACE_dogtag,301); + ACE_DOGTAG_ITEM(ACE_dogtag,302); + ACE_DOGTAG_ITEM(ACE_dogtag,303); + ACE_DOGTAG_ITEM(ACE_dogtag,304); + ACE_DOGTAG_ITEM(ACE_dogtag,305); + ACE_DOGTAG_ITEM(ACE_dogtag,306); + ACE_DOGTAG_ITEM(ACE_dogtag,307); + ACE_DOGTAG_ITEM(ACE_dogtag,308); + ACE_DOGTAG_ITEM(ACE_dogtag,309); + ACE_DOGTAG_ITEM(ACE_dogtag,310); + ACE_DOGTAG_ITEM(ACE_dogtag,311); + ACE_DOGTAG_ITEM(ACE_dogtag,312); + ACE_DOGTAG_ITEM(ACE_dogtag,313); + ACE_DOGTAG_ITEM(ACE_dogtag,314); + ACE_DOGTAG_ITEM(ACE_dogtag,315); + ACE_DOGTAG_ITEM(ACE_dogtag,316); + ACE_DOGTAG_ITEM(ACE_dogtag,317); + ACE_DOGTAG_ITEM(ACE_dogtag,318); + ACE_DOGTAG_ITEM(ACE_dogtag,319); + ACE_DOGTAG_ITEM(ACE_dogtag,320); + ACE_DOGTAG_ITEM(ACE_dogtag,321); + ACE_DOGTAG_ITEM(ACE_dogtag,322); + ACE_DOGTAG_ITEM(ACE_dogtag,323); + ACE_DOGTAG_ITEM(ACE_dogtag,324); + ACE_DOGTAG_ITEM(ACE_dogtag,325); + ACE_DOGTAG_ITEM(ACE_dogtag,326); + ACE_DOGTAG_ITEM(ACE_dogtag,327); + ACE_DOGTAG_ITEM(ACE_dogtag,328); + ACE_DOGTAG_ITEM(ACE_dogtag,329); + ACE_DOGTAG_ITEM(ACE_dogtag,330); + ACE_DOGTAG_ITEM(ACE_dogtag,331); + ACE_DOGTAG_ITEM(ACE_dogtag,332); + ACE_DOGTAG_ITEM(ACE_dogtag,333); + ACE_DOGTAG_ITEM(ACE_dogtag,334); + ACE_DOGTAG_ITEM(ACE_dogtag,335); + ACE_DOGTAG_ITEM(ACE_dogtag,336); + ACE_DOGTAG_ITEM(ACE_dogtag,337); + ACE_DOGTAG_ITEM(ACE_dogtag,338); + ACE_DOGTAG_ITEM(ACE_dogtag,339); + ACE_DOGTAG_ITEM(ACE_dogtag,340); + ACE_DOGTAG_ITEM(ACE_dogtag,341); + ACE_DOGTAG_ITEM(ACE_dogtag,342); + ACE_DOGTAG_ITEM(ACE_dogtag,343); + ACE_DOGTAG_ITEM(ACE_dogtag,344); + ACE_DOGTAG_ITEM(ACE_dogtag,345); + ACE_DOGTAG_ITEM(ACE_dogtag,346); + ACE_DOGTAG_ITEM(ACE_dogtag,347); + ACE_DOGTAG_ITEM(ACE_dogtag,348); + ACE_DOGTAG_ITEM(ACE_dogtag,349); + ACE_DOGTAG_ITEM(ACE_dogtag,350); + ACE_DOGTAG_ITEM(ACE_dogtag,351); + ACE_DOGTAG_ITEM(ACE_dogtag,352); + ACE_DOGTAG_ITEM(ACE_dogtag,353); + ACE_DOGTAG_ITEM(ACE_dogtag,354); + ACE_DOGTAG_ITEM(ACE_dogtag,355); + ACE_DOGTAG_ITEM(ACE_dogtag,356); + ACE_DOGTAG_ITEM(ACE_dogtag,357); + ACE_DOGTAG_ITEM(ACE_dogtag,358); + ACE_DOGTAG_ITEM(ACE_dogtag,359); + ACE_DOGTAG_ITEM(ACE_dogtag,360); + ACE_DOGTAG_ITEM(ACE_dogtag,361); + ACE_DOGTAG_ITEM(ACE_dogtag,362); + ACE_DOGTAG_ITEM(ACE_dogtag,363); + ACE_DOGTAG_ITEM(ACE_dogtag,364); + ACE_DOGTAG_ITEM(ACE_dogtag,365); + ACE_DOGTAG_ITEM(ACE_dogtag,366); + ACE_DOGTAG_ITEM(ACE_dogtag,367); + ACE_DOGTAG_ITEM(ACE_dogtag,368); + ACE_DOGTAG_ITEM(ACE_dogtag,369); + ACE_DOGTAG_ITEM(ACE_dogtag,370); + ACE_DOGTAG_ITEM(ACE_dogtag,371); + ACE_DOGTAG_ITEM(ACE_dogtag,372); + ACE_DOGTAG_ITEM(ACE_dogtag,373); + ACE_DOGTAG_ITEM(ACE_dogtag,374); + ACE_DOGTAG_ITEM(ACE_dogtag,375); + ACE_DOGTAG_ITEM(ACE_dogtag,376); + ACE_DOGTAG_ITEM(ACE_dogtag,377); + ACE_DOGTAG_ITEM(ACE_dogtag,378); + ACE_DOGTAG_ITEM(ACE_dogtag,379); + ACE_DOGTAG_ITEM(ACE_dogtag,380); + ACE_DOGTAG_ITEM(ACE_dogtag,381); + ACE_DOGTAG_ITEM(ACE_dogtag,382); + ACE_DOGTAG_ITEM(ACE_dogtag,383); + ACE_DOGTAG_ITEM(ACE_dogtag,384); + ACE_DOGTAG_ITEM(ACE_dogtag,385); + ACE_DOGTAG_ITEM(ACE_dogtag,386); + ACE_DOGTAG_ITEM(ACE_dogtag,387); + ACE_DOGTAG_ITEM(ACE_dogtag,388); + ACE_DOGTAG_ITEM(ACE_dogtag,389); + ACE_DOGTAG_ITEM(ACE_dogtag,390); + ACE_DOGTAG_ITEM(ACE_dogtag,391); + ACE_DOGTAG_ITEM(ACE_dogtag,392); + ACE_DOGTAG_ITEM(ACE_dogtag,393); + ACE_DOGTAG_ITEM(ACE_dogtag,394); + ACE_DOGTAG_ITEM(ACE_dogtag,395); + ACE_DOGTAG_ITEM(ACE_dogtag,396); + ACE_DOGTAG_ITEM(ACE_dogtag,397); + ACE_DOGTAG_ITEM(ACE_dogtag,398); + ACE_DOGTAG_ITEM(ACE_dogtag,399); + ACE_DOGTAG_ITEM(ACE_dogtag,400); + ACE_DOGTAG_ITEM(ACE_dogtag,401); + ACE_DOGTAG_ITEM(ACE_dogtag,402); + ACE_DOGTAG_ITEM(ACE_dogtag,403); + ACE_DOGTAG_ITEM(ACE_dogtag,404); + ACE_DOGTAG_ITEM(ACE_dogtag,405); + ACE_DOGTAG_ITEM(ACE_dogtag,406); + ACE_DOGTAG_ITEM(ACE_dogtag,407); + ACE_DOGTAG_ITEM(ACE_dogtag,408); + ACE_DOGTAG_ITEM(ACE_dogtag,409); + ACE_DOGTAG_ITEM(ACE_dogtag,410); + ACE_DOGTAG_ITEM(ACE_dogtag,411); + ACE_DOGTAG_ITEM(ACE_dogtag,412); + ACE_DOGTAG_ITEM(ACE_dogtag,413); + ACE_DOGTAG_ITEM(ACE_dogtag,414); + ACE_DOGTAG_ITEM(ACE_dogtag,415); + ACE_DOGTAG_ITEM(ACE_dogtag,416); + ACE_DOGTAG_ITEM(ACE_dogtag,417); + ACE_DOGTAG_ITEM(ACE_dogtag,418); + ACE_DOGTAG_ITEM(ACE_dogtag,419); + ACE_DOGTAG_ITEM(ACE_dogtag,420); + ACE_DOGTAG_ITEM(ACE_dogtag,421); + ACE_DOGTAG_ITEM(ACE_dogtag,422); + ACE_DOGTAG_ITEM(ACE_dogtag,423); + ACE_DOGTAG_ITEM(ACE_dogtag,424); + ACE_DOGTAG_ITEM(ACE_dogtag,425); + ACE_DOGTAG_ITEM(ACE_dogtag,426); + ACE_DOGTAG_ITEM(ACE_dogtag,427); + ACE_DOGTAG_ITEM(ACE_dogtag,428); + ACE_DOGTAG_ITEM(ACE_dogtag,429); + ACE_DOGTAG_ITEM(ACE_dogtag,430); + ACE_DOGTAG_ITEM(ACE_dogtag,431); + ACE_DOGTAG_ITEM(ACE_dogtag,432); + ACE_DOGTAG_ITEM(ACE_dogtag,433); + ACE_DOGTAG_ITEM(ACE_dogtag,434); + ACE_DOGTAG_ITEM(ACE_dogtag,435); + ACE_DOGTAG_ITEM(ACE_dogtag,436); + ACE_DOGTAG_ITEM(ACE_dogtag,437); + ACE_DOGTAG_ITEM(ACE_dogtag,438); + ACE_DOGTAG_ITEM(ACE_dogtag,439); + ACE_DOGTAG_ITEM(ACE_dogtag,440); + ACE_DOGTAG_ITEM(ACE_dogtag,441); + ACE_DOGTAG_ITEM(ACE_dogtag,442); + ACE_DOGTAG_ITEM(ACE_dogtag,443); + ACE_DOGTAG_ITEM(ACE_dogtag,444); + ACE_DOGTAG_ITEM(ACE_dogtag,445); + ACE_DOGTAG_ITEM(ACE_dogtag,446); + ACE_DOGTAG_ITEM(ACE_dogtag,447); + ACE_DOGTAG_ITEM(ACE_dogtag,448); + ACE_DOGTAG_ITEM(ACE_dogtag,449); + ACE_DOGTAG_ITEM(ACE_dogtag,450); + ACE_DOGTAG_ITEM(ACE_dogtag,451); + ACE_DOGTAG_ITEM(ACE_dogtag,452); + ACE_DOGTAG_ITEM(ACE_dogtag,453); + ACE_DOGTAG_ITEM(ACE_dogtag,454); + ACE_DOGTAG_ITEM(ACE_dogtag,455); + ACE_DOGTAG_ITEM(ACE_dogtag,456); + ACE_DOGTAG_ITEM(ACE_dogtag,457); + ACE_DOGTAG_ITEM(ACE_dogtag,458); + ACE_DOGTAG_ITEM(ACE_dogtag,459); + ACE_DOGTAG_ITEM(ACE_dogtag,460); + ACE_DOGTAG_ITEM(ACE_dogtag,461); + ACE_DOGTAG_ITEM(ACE_dogtag,462); + ACE_DOGTAG_ITEM(ACE_dogtag,463); + ACE_DOGTAG_ITEM(ACE_dogtag,464); + ACE_DOGTAG_ITEM(ACE_dogtag,465); + ACE_DOGTAG_ITEM(ACE_dogtag,466); + ACE_DOGTAG_ITEM(ACE_dogtag,467); + ACE_DOGTAG_ITEM(ACE_dogtag,468); + ACE_DOGTAG_ITEM(ACE_dogtag,469); + ACE_DOGTAG_ITEM(ACE_dogtag,470); + ACE_DOGTAG_ITEM(ACE_dogtag,471); + ACE_DOGTAG_ITEM(ACE_dogtag,472); + ACE_DOGTAG_ITEM(ACE_dogtag,473); + ACE_DOGTAG_ITEM(ACE_dogtag,474); + ACE_DOGTAG_ITEM(ACE_dogtag,475); + ACE_DOGTAG_ITEM(ACE_dogtag,476); + ACE_DOGTAG_ITEM(ACE_dogtag,477); + ACE_DOGTAG_ITEM(ACE_dogtag,478); + ACE_DOGTAG_ITEM(ACE_dogtag,479); + ACE_DOGTAG_ITEM(ACE_dogtag,480); + ACE_DOGTAG_ITEM(ACE_dogtag,481); + ACE_DOGTAG_ITEM(ACE_dogtag,482); + ACE_DOGTAG_ITEM(ACE_dogtag,483); + ACE_DOGTAG_ITEM(ACE_dogtag,484); + ACE_DOGTAG_ITEM(ACE_dogtag,485); + ACE_DOGTAG_ITEM(ACE_dogtag,486); + ACE_DOGTAG_ITEM(ACE_dogtag,487); + ACE_DOGTAG_ITEM(ACE_dogtag,488); + ACE_DOGTAG_ITEM(ACE_dogtag,489); + ACE_DOGTAG_ITEM(ACE_dogtag,490); + ACE_DOGTAG_ITEM(ACE_dogtag,491); + ACE_DOGTAG_ITEM(ACE_dogtag,492); + ACE_DOGTAG_ITEM(ACE_dogtag,493); + ACE_DOGTAG_ITEM(ACE_dogtag,494); + ACE_DOGTAG_ITEM(ACE_dogtag,495); + ACE_DOGTAG_ITEM(ACE_dogtag,496); + ACE_DOGTAG_ITEM(ACE_dogtag,497); + ACE_DOGTAG_ITEM(ACE_dogtag,498); + ACE_DOGTAG_ITEM(ACE_dogtag,499); + ACE_DOGTAG_ITEM(ACE_dogtag,500); + ACE_DOGTAG_ITEM(ACE_dogtag,501); + ACE_DOGTAG_ITEM(ACE_dogtag,502); + ACE_DOGTAG_ITEM(ACE_dogtag,503); + ACE_DOGTAG_ITEM(ACE_dogtag,504); + ACE_DOGTAG_ITEM(ACE_dogtag,505); + ACE_DOGTAG_ITEM(ACE_dogtag,506); + ACE_DOGTAG_ITEM(ACE_dogtag,507); + ACE_DOGTAG_ITEM(ACE_dogtag,508); + ACE_DOGTAG_ITEM(ACE_dogtag,509); + ACE_DOGTAG_ITEM(ACE_dogtag,510); + ACE_DOGTAG_ITEM(ACE_dogtag,511); + ACE_DOGTAG_ITEM(ACE_dogtag,512); + ACE_DOGTAG_ITEM(ACE_dogtag,513); + ACE_DOGTAG_ITEM(ACE_dogtag,514); + ACE_DOGTAG_ITEM(ACE_dogtag,515); + ACE_DOGTAG_ITEM(ACE_dogtag,516); + ACE_DOGTAG_ITEM(ACE_dogtag,517); + ACE_DOGTAG_ITEM(ACE_dogtag,518); + ACE_DOGTAG_ITEM(ACE_dogtag,519); + ACE_DOGTAG_ITEM(ACE_dogtag,520); + ACE_DOGTAG_ITEM(ACE_dogtag,521); + ACE_DOGTAG_ITEM(ACE_dogtag,522); + ACE_DOGTAG_ITEM(ACE_dogtag,523); + ACE_DOGTAG_ITEM(ACE_dogtag,524); + ACE_DOGTAG_ITEM(ACE_dogtag,525); + ACE_DOGTAG_ITEM(ACE_dogtag,526); + ACE_DOGTAG_ITEM(ACE_dogtag,527); + ACE_DOGTAG_ITEM(ACE_dogtag,528); + ACE_DOGTAG_ITEM(ACE_dogtag,529); + ACE_DOGTAG_ITEM(ACE_dogtag,530); + ACE_DOGTAG_ITEM(ACE_dogtag,531); + ACE_DOGTAG_ITEM(ACE_dogtag,532); + ACE_DOGTAG_ITEM(ACE_dogtag,533); + ACE_DOGTAG_ITEM(ACE_dogtag,534); + ACE_DOGTAG_ITEM(ACE_dogtag,535); + ACE_DOGTAG_ITEM(ACE_dogtag,536); + ACE_DOGTAG_ITEM(ACE_dogtag,537); + ACE_DOGTAG_ITEM(ACE_dogtag,538); + ACE_DOGTAG_ITEM(ACE_dogtag,539); + ACE_DOGTAG_ITEM(ACE_dogtag,540); + ACE_DOGTAG_ITEM(ACE_dogtag,541); + ACE_DOGTAG_ITEM(ACE_dogtag,542); + ACE_DOGTAG_ITEM(ACE_dogtag,543); + ACE_DOGTAG_ITEM(ACE_dogtag,544); + ACE_DOGTAG_ITEM(ACE_dogtag,545); + ACE_DOGTAG_ITEM(ACE_dogtag,546); + ACE_DOGTAG_ITEM(ACE_dogtag,547); + ACE_DOGTAG_ITEM(ACE_dogtag,548); + ACE_DOGTAG_ITEM(ACE_dogtag,549); + ACE_DOGTAG_ITEM(ACE_dogtag,550); + ACE_DOGTAG_ITEM(ACE_dogtag,551); + ACE_DOGTAG_ITEM(ACE_dogtag,552); + ACE_DOGTAG_ITEM(ACE_dogtag,553); + ACE_DOGTAG_ITEM(ACE_dogtag,554); + ACE_DOGTAG_ITEM(ACE_dogtag,555); + ACE_DOGTAG_ITEM(ACE_dogtag,556); + ACE_DOGTAG_ITEM(ACE_dogtag,557); + ACE_DOGTAG_ITEM(ACE_dogtag,558); + ACE_DOGTAG_ITEM(ACE_dogtag,559); + ACE_DOGTAG_ITEM(ACE_dogtag,560); + ACE_DOGTAG_ITEM(ACE_dogtag,561); + ACE_DOGTAG_ITEM(ACE_dogtag,562); + ACE_DOGTAG_ITEM(ACE_dogtag,563); + ACE_DOGTAG_ITEM(ACE_dogtag,564); + ACE_DOGTAG_ITEM(ACE_dogtag,565); + ACE_DOGTAG_ITEM(ACE_dogtag,566); + ACE_DOGTAG_ITEM(ACE_dogtag,567); + ACE_DOGTAG_ITEM(ACE_dogtag,568); + ACE_DOGTAG_ITEM(ACE_dogtag,569); + ACE_DOGTAG_ITEM(ACE_dogtag,570); + ACE_DOGTAG_ITEM(ACE_dogtag,571); + ACE_DOGTAG_ITEM(ACE_dogtag,572); + ACE_DOGTAG_ITEM(ACE_dogtag,573); + ACE_DOGTAG_ITEM(ACE_dogtag,574); + ACE_DOGTAG_ITEM(ACE_dogtag,575); + ACE_DOGTAG_ITEM(ACE_dogtag,576); + ACE_DOGTAG_ITEM(ACE_dogtag,577); + ACE_DOGTAG_ITEM(ACE_dogtag,578); + ACE_DOGTAG_ITEM(ACE_dogtag,579); + ACE_DOGTAG_ITEM(ACE_dogtag,580); + ACE_DOGTAG_ITEM(ACE_dogtag,581); + ACE_DOGTAG_ITEM(ACE_dogtag,582); + ACE_DOGTAG_ITEM(ACE_dogtag,583); + ACE_DOGTAG_ITEM(ACE_dogtag,584); + ACE_DOGTAG_ITEM(ACE_dogtag,585); + ACE_DOGTAG_ITEM(ACE_dogtag,586); + ACE_DOGTAG_ITEM(ACE_dogtag,587); + ACE_DOGTAG_ITEM(ACE_dogtag,588); + ACE_DOGTAG_ITEM(ACE_dogtag,589); + ACE_DOGTAG_ITEM(ACE_dogtag,590); + ACE_DOGTAG_ITEM(ACE_dogtag,591); + ACE_DOGTAG_ITEM(ACE_dogtag,592); + ACE_DOGTAG_ITEM(ACE_dogtag,593); + ACE_DOGTAG_ITEM(ACE_dogtag,594); + ACE_DOGTAG_ITEM(ACE_dogtag,595); + ACE_DOGTAG_ITEM(ACE_dogtag,596); + ACE_DOGTAG_ITEM(ACE_dogtag,597); + ACE_DOGTAG_ITEM(ACE_dogtag,598); + ACE_DOGTAG_ITEM(ACE_dogtag,599); + ACE_DOGTAG_ITEM(ACE_dogtag,600); + ACE_DOGTAG_ITEM(ACE_dogtag,601); + ACE_DOGTAG_ITEM(ACE_dogtag,602); + ACE_DOGTAG_ITEM(ACE_dogtag,603); + ACE_DOGTAG_ITEM(ACE_dogtag,604); + ACE_DOGTAG_ITEM(ACE_dogtag,605); + ACE_DOGTAG_ITEM(ACE_dogtag,606); + ACE_DOGTAG_ITEM(ACE_dogtag,607); + ACE_DOGTAG_ITEM(ACE_dogtag,608); + ACE_DOGTAG_ITEM(ACE_dogtag,609); + ACE_DOGTAG_ITEM(ACE_dogtag,610); + ACE_DOGTAG_ITEM(ACE_dogtag,611); + ACE_DOGTAG_ITEM(ACE_dogtag,612); + ACE_DOGTAG_ITEM(ACE_dogtag,613); + ACE_DOGTAG_ITEM(ACE_dogtag,614); + ACE_DOGTAG_ITEM(ACE_dogtag,615); + ACE_DOGTAG_ITEM(ACE_dogtag,616); + ACE_DOGTAG_ITEM(ACE_dogtag,617); + ACE_DOGTAG_ITEM(ACE_dogtag,618); + ACE_DOGTAG_ITEM(ACE_dogtag,619); + ACE_DOGTAG_ITEM(ACE_dogtag,620); + ACE_DOGTAG_ITEM(ACE_dogtag,621); + ACE_DOGTAG_ITEM(ACE_dogtag,622); + ACE_DOGTAG_ITEM(ACE_dogtag,623); + ACE_DOGTAG_ITEM(ACE_dogtag,624); + ACE_DOGTAG_ITEM(ACE_dogtag,625); + ACE_DOGTAG_ITEM(ACE_dogtag,626); + ACE_DOGTAG_ITEM(ACE_dogtag,627); + ACE_DOGTAG_ITEM(ACE_dogtag,628); + ACE_DOGTAG_ITEM(ACE_dogtag,629); + ACE_DOGTAG_ITEM(ACE_dogtag,630); + ACE_DOGTAG_ITEM(ACE_dogtag,631); + ACE_DOGTAG_ITEM(ACE_dogtag,632); + ACE_DOGTAG_ITEM(ACE_dogtag,633); + ACE_DOGTAG_ITEM(ACE_dogtag,634); + ACE_DOGTAG_ITEM(ACE_dogtag,635); + ACE_DOGTAG_ITEM(ACE_dogtag,636); + ACE_DOGTAG_ITEM(ACE_dogtag,637); + ACE_DOGTAG_ITEM(ACE_dogtag,638); + ACE_DOGTAG_ITEM(ACE_dogtag,639); + ACE_DOGTAG_ITEM(ACE_dogtag,640); + ACE_DOGTAG_ITEM(ACE_dogtag,641); + ACE_DOGTAG_ITEM(ACE_dogtag,642); + ACE_DOGTAG_ITEM(ACE_dogtag,643); + ACE_DOGTAG_ITEM(ACE_dogtag,644); + ACE_DOGTAG_ITEM(ACE_dogtag,645); + ACE_DOGTAG_ITEM(ACE_dogtag,646); + ACE_DOGTAG_ITEM(ACE_dogtag,647); + ACE_DOGTAG_ITEM(ACE_dogtag,648); + ACE_DOGTAG_ITEM(ACE_dogtag,649); + ACE_DOGTAG_ITEM(ACE_dogtag,650); + ACE_DOGTAG_ITEM(ACE_dogtag,651); + ACE_DOGTAG_ITEM(ACE_dogtag,652); + ACE_DOGTAG_ITEM(ACE_dogtag,653); + ACE_DOGTAG_ITEM(ACE_dogtag,654); + ACE_DOGTAG_ITEM(ACE_dogtag,655); + ACE_DOGTAG_ITEM(ACE_dogtag,656); + ACE_DOGTAG_ITEM(ACE_dogtag,657); + ACE_DOGTAG_ITEM(ACE_dogtag,658); + ACE_DOGTAG_ITEM(ACE_dogtag,659); + ACE_DOGTAG_ITEM(ACE_dogtag,660); + ACE_DOGTAG_ITEM(ACE_dogtag,661); + ACE_DOGTAG_ITEM(ACE_dogtag,662); + ACE_DOGTAG_ITEM(ACE_dogtag,663); + ACE_DOGTAG_ITEM(ACE_dogtag,664); + ACE_DOGTAG_ITEM(ACE_dogtag,665); + ACE_DOGTAG_ITEM(ACE_dogtag,666); + ACE_DOGTAG_ITEM(ACE_dogtag,667); + ACE_DOGTAG_ITEM(ACE_dogtag,668); + ACE_DOGTAG_ITEM(ACE_dogtag,669); + ACE_DOGTAG_ITEM(ACE_dogtag,670); + ACE_DOGTAG_ITEM(ACE_dogtag,671); + ACE_DOGTAG_ITEM(ACE_dogtag,672); + ACE_DOGTAG_ITEM(ACE_dogtag,673); + ACE_DOGTAG_ITEM(ACE_dogtag,674); + ACE_DOGTAG_ITEM(ACE_dogtag,675); + ACE_DOGTAG_ITEM(ACE_dogtag,676); + ACE_DOGTAG_ITEM(ACE_dogtag,677); + ACE_DOGTAG_ITEM(ACE_dogtag,678); + ACE_DOGTAG_ITEM(ACE_dogtag,679); + ACE_DOGTAG_ITEM(ACE_dogtag,680); + ACE_DOGTAG_ITEM(ACE_dogtag,681); + ACE_DOGTAG_ITEM(ACE_dogtag,682); + ACE_DOGTAG_ITEM(ACE_dogtag,683); + ACE_DOGTAG_ITEM(ACE_dogtag,684); + ACE_DOGTAG_ITEM(ACE_dogtag,685); + ACE_DOGTAG_ITEM(ACE_dogtag,686); + ACE_DOGTAG_ITEM(ACE_dogtag,687); + ACE_DOGTAG_ITEM(ACE_dogtag,688); + ACE_DOGTAG_ITEM(ACE_dogtag,689); + ACE_DOGTAG_ITEM(ACE_dogtag,690); + ACE_DOGTAG_ITEM(ACE_dogtag,691); + ACE_DOGTAG_ITEM(ACE_dogtag,692); + ACE_DOGTAG_ITEM(ACE_dogtag,693); + ACE_DOGTAG_ITEM(ACE_dogtag,694); + ACE_DOGTAG_ITEM(ACE_dogtag,695); + ACE_DOGTAG_ITEM(ACE_dogtag,696); + ACE_DOGTAG_ITEM(ACE_dogtag,697); + ACE_DOGTAG_ITEM(ACE_dogtag,698); + ACE_DOGTAG_ITEM(ACE_dogtag,699); + ACE_DOGTAG_ITEM(ACE_dogtag,700); + ACE_DOGTAG_ITEM(ACE_dogtag,701); + ACE_DOGTAG_ITEM(ACE_dogtag,702); + ACE_DOGTAG_ITEM(ACE_dogtag,703); + ACE_DOGTAG_ITEM(ACE_dogtag,704); + ACE_DOGTAG_ITEM(ACE_dogtag,705); + ACE_DOGTAG_ITEM(ACE_dogtag,706); + ACE_DOGTAG_ITEM(ACE_dogtag,707); + ACE_DOGTAG_ITEM(ACE_dogtag,708); + ACE_DOGTAG_ITEM(ACE_dogtag,709); + ACE_DOGTAG_ITEM(ACE_dogtag,710); + ACE_DOGTAG_ITEM(ACE_dogtag,711); + ACE_DOGTAG_ITEM(ACE_dogtag,712); + ACE_DOGTAG_ITEM(ACE_dogtag,713); + ACE_DOGTAG_ITEM(ACE_dogtag,714); + ACE_DOGTAG_ITEM(ACE_dogtag,715); + ACE_DOGTAG_ITEM(ACE_dogtag,716); + ACE_DOGTAG_ITEM(ACE_dogtag,717); + ACE_DOGTAG_ITEM(ACE_dogtag,718); + ACE_DOGTAG_ITEM(ACE_dogtag,719); + ACE_DOGTAG_ITEM(ACE_dogtag,720); + ACE_DOGTAG_ITEM(ACE_dogtag,721); + ACE_DOGTAG_ITEM(ACE_dogtag,722); + ACE_DOGTAG_ITEM(ACE_dogtag,723); + ACE_DOGTAG_ITEM(ACE_dogtag,724); + ACE_DOGTAG_ITEM(ACE_dogtag,725); + ACE_DOGTAG_ITEM(ACE_dogtag,726); + ACE_DOGTAG_ITEM(ACE_dogtag,727); + ACE_DOGTAG_ITEM(ACE_dogtag,728); + ACE_DOGTAG_ITEM(ACE_dogtag,729); + ACE_DOGTAG_ITEM(ACE_dogtag,730); + ACE_DOGTAG_ITEM(ACE_dogtag,731); + ACE_DOGTAG_ITEM(ACE_dogtag,732); + ACE_DOGTAG_ITEM(ACE_dogtag,733); + ACE_DOGTAG_ITEM(ACE_dogtag,734); + ACE_DOGTAG_ITEM(ACE_dogtag,735); + ACE_DOGTAG_ITEM(ACE_dogtag,736); + ACE_DOGTAG_ITEM(ACE_dogtag,737); + ACE_DOGTAG_ITEM(ACE_dogtag,738); + ACE_DOGTAG_ITEM(ACE_dogtag,739); + ACE_DOGTAG_ITEM(ACE_dogtag,740); + ACE_DOGTAG_ITEM(ACE_dogtag,741); + ACE_DOGTAG_ITEM(ACE_dogtag,742); + ACE_DOGTAG_ITEM(ACE_dogtag,743); + ACE_DOGTAG_ITEM(ACE_dogtag,744); + ACE_DOGTAG_ITEM(ACE_dogtag,745); + ACE_DOGTAG_ITEM(ACE_dogtag,746); + ACE_DOGTAG_ITEM(ACE_dogtag,747); + ACE_DOGTAG_ITEM(ACE_dogtag,748); + ACE_DOGTAG_ITEM(ACE_dogtag,749); + ACE_DOGTAG_ITEM(ACE_dogtag,750); + ACE_DOGTAG_ITEM(ACE_dogtag,751); + ACE_DOGTAG_ITEM(ACE_dogtag,752); + ACE_DOGTAG_ITEM(ACE_dogtag,753); + ACE_DOGTAG_ITEM(ACE_dogtag,754); + ACE_DOGTAG_ITEM(ACE_dogtag,755); + ACE_DOGTAG_ITEM(ACE_dogtag,756); + ACE_DOGTAG_ITEM(ACE_dogtag,757); + ACE_DOGTAG_ITEM(ACE_dogtag,758); + ACE_DOGTAG_ITEM(ACE_dogtag,759); + ACE_DOGTAG_ITEM(ACE_dogtag,760); + ACE_DOGTAG_ITEM(ACE_dogtag,761); + ACE_DOGTAG_ITEM(ACE_dogtag,762); + ACE_DOGTAG_ITEM(ACE_dogtag,763); + ACE_DOGTAG_ITEM(ACE_dogtag,764); + ACE_DOGTAG_ITEM(ACE_dogtag,765); + ACE_DOGTAG_ITEM(ACE_dogtag,766); + ACE_DOGTAG_ITEM(ACE_dogtag,767); + ACE_DOGTAG_ITEM(ACE_dogtag,768); + ACE_DOGTAG_ITEM(ACE_dogtag,769); + ACE_DOGTAG_ITEM(ACE_dogtag,770); + ACE_DOGTAG_ITEM(ACE_dogtag,771); + ACE_DOGTAG_ITEM(ACE_dogtag,772); + ACE_DOGTAG_ITEM(ACE_dogtag,773); + ACE_DOGTAG_ITEM(ACE_dogtag,774); + ACE_DOGTAG_ITEM(ACE_dogtag,775); + ACE_DOGTAG_ITEM(ACE_dogtag,776); + ACE_DOGTAG_ITEM(ACE_dogtag,777); + ACE_DOGTAG_ITEM(ACE_dogtag,778); + ACE_DOGTAG_ITEM(ACE_dogtag,779); + ACE_DOGTAG_ITEM(ACE_dogtag,780); + ACE_DOGTAG_ITEM(ACE_dogtag,781); + ACE_DOGTAG_ITEM(ACE_dogtag,782); + ACE_DOGTAG_ITEM(ACE_dogtag,783); + ACE_DOGTAG_ITEM(ACE_dogtag,784); + ACE_DOGTAG_ITEM(ACE_dogtag,785); + ACE_DOGTAG_ITEM(ACE_dogtag,786); + ACE_DOGTAG_ITEM(ACE_dogtag,787); + ACE_DOGTAG_ITEM(ACE_dogtag,788); + ACE_DOGTAG_ITEM(ACE_dogtag,789); + ACE_DOGTAG_ITEM(ACE_dogtag,790); + ACE_DOGTAG_ITEM(ACE_dogtag,791); + ACE_DOGTAG_ITEM(ACE_dogtag,792); + ACE_DOGTAG_ITEM(ACE_dogtag,793); + ACE_DOGTAG_ITEM(ACE_dogtag,794); + ACE_DOGTAG_ITEM(ACE_dogtag,795); + ACE_DOGTAG_ITEM(ACE_dogtag,796); + ACE_DOGTAG_ITEM(ACE_dogtag,797); + ACE_DOGTAG_ITEM(ACE_dogtag,798); + ACE_DOGTAG_ITEM(ACE_dogtag,799); + ACE_DOGTAG_ITEM(ACE_dogtag,800); + ACE_DOGTAG_ITEM(ACE_dogtag,801); + ACE_DOGTAG_ITEM(ACE_dogtag,802); + ACE_DOGTAG_ITEM(ACE_dogtag,803); + ACE_DOGTAG_ITEM(ACE_dogtag,804); + ACE_DOGTAG_ITEM(ACE_dogtag,805); + ACE_DOGTAG_ITEM(ACE_dogtag,806); + ACE_DOGTAG_ITEM(ACE_dogtag,807); + ACE_DOGTAG_ITEM(ACE_dogtag,808); + ACE_DOGTAG_ITEM(ACE_dogtag,809); + ACE_DOGTAG_ITEM(ACE_dogtag,810); + ACE_DOGTAG_ITEM(ACE_dogtag,811); + ACE_DOGTAG_ITEM(ACE_dogtag,812); + ACE_DOGTAG_ITEM(ACE_dogtag,813); + ACE_DOGTAG_ITEM(ACE_dogtag,814); + ACE_DOGTAG_ITEM(ACE_dogtag,815); + ACE_DOGTAG_ITEM(ACE_dogtag,816); + ACE_DOGTAG_ITEM(ACE_dogtag,817); + ACE_DOGTAG_ITEM(ACE_dogtag,818); + ACE_DOGTAG_ITEM(ACE_dogtag,819); + ACE_DOGTAG_ITEM(ACE_dogtag,820); + ACE_DOGTAG_ITEM(ACE_dogtag,821); + ACE_DOGTAG_ITEM(ACE_dogtag,822); + ACE_DOGTAG_ITEM(ACE_dogtag,823); + ACE_DOGTAG_ITEM(ACE_dogtag,824); + ACE_DOGTAG_ITEM(ACE_dogtag,825); + ACE_DOGTAG_ITEM(ACE_dogtag,826); + ACE_DOGTAG_ITEM(ACE_dogtag,827); + ACE_DOGTAG_ITEM(ACE_dogtag,828); + ACE_DOGTAG_ITEM(ACE_dogtag,829); + ACE_DOGTAG_ITEM(ACE_dogtag,830); + ACE_DOGTAG_ITEM(ACE_dogtag,831); + ACE_DOGTAG_ITEM(ACE_dogtag,832); + ACE_DOGTAG_ITEM(ACE_dogtag,833); + ACE_DOGTAG_ITEM(ACE_dogtag,834); + ACE_DOGTAG_ITEM(ACE_dogtag,835); + ACE_DOGTAG_ITEM(ACE_dogtag,836); + ACE_DOGTAG_ITEM(ACE_dogtag,837); + ACE_DOGTAG_ITEM(ACE_dogtag,838); + ACE_DOGTAG_ITEM(ACE_dogtag,839); + ACE_DOGTAG_ITEM(ACE_dogtag,840); + ACE_DOGTAG_ITEM(ACE_dogtag,841); + ACE_DOGTAG_ITEM(ACE_dogtag,842); + ACE_DOGTAG_ITEM(ACE_dogtag,843); + ACE_DOGTAG_ITEM(ACE_dogtag,844); + ACE_DOGTAG_ITEM(ACE_dogtag,845); + ACE_DOGTAG_ITEM(ACE_dogtag,846); + ACE_DOGTAG_ITEM(ACE_dogtag,847); + ACE_DOGTAG_ITEM(ACE_dogtag,848); + ACE_DOGTAG_ITEM(ACE_dogtag,849); + ACE_DOGTAG_ITEM(ACE_dogtag,850); + ACE_DOGTAG_ITEM(ACE_dogtag,851); + ACE_DOGTAG_ITEM(ACE_dogtag,852); + ACE_DOGTAG_ITEM(ACE_dogtag,853); + ACE_DOGTAG_ITEM(ACE_dogtag,854); + ACE_DOGTAG_ITEM(ACE_dogtag,855); + ACE_DOGTAG_ITEM(ACE_dogtag,856); + ACE_DOGTAG_ITEM(ACE_dogtag,857); + ACE_DOGTAG_ITEM(ACE_dogtag,858); + ACE_DOGTAG_ITEM(ACE_dogtag,859); + ACE_DOGTAG_ITEM(ACE_dogtag,860); + ACE_DOGTAG_ITEM(ACE_dogtag,861); + ACE_DOGTAG_ITEM(ACE_dogtag,862); + ACE_DOGTAG_ITEM(ACE_dogtag,863); + ACE_DOGTAG_ITEM(ACE_dogtag,864); + ACE_DOGTAG_ITEM(ACE_dogtag,865); + ACE_DOGTAG_ITEM(ACE_dogtag,866); + ACE_DOGTAG_ITEM(ACE_dogtag,867); + ACE_DOGTAG_ITEM(ACE_dogtag,868); + ACE_DOGTAG_ITEM(ACE_dogtag,869); + ACE_DOGTAG_ITEM(ACE_dogtag,870); + ACE_DOGTAG_ITEM(ACE_dogtag,871); + ACE_DOGTAG_ITEM(ACE_dogtag,872); + ACE_DOGTAG_ITEM(ACE_dogtag,873); + ACE_DOGTAG_ITEM(ACE_dogtag,874); + ACE_DOGTAG_ITEM(ACE_dogtag,875); + ACE_DOGTAG_ITEM(ACE_dogtag,876); + ACE_DOGTAG_ITEM(ACE_dogtag,877); + ACE_DOGTAG_ITEM(ACE_dogtag,878); + ACE_DOGTAG_ITEM(ACE_dogtag,879); + ACE_DOGTAG_ITEM(ACE_dogtag,880); + ACE_DOGTAG_ITEM(ACE_dogtag,881); + ACE_DOGTAG_ITEM(ACE_dogtag,882); + ACE_DOGTAG_ITEM(ACE_dogtag,883); + ACE_DOGTAG_ITEM(ACE_dogtag,884); + ACE_DOGTAG_ITEM(ACE_dogtag,885); + ACE_DOGTAG_ITEM(ACE_dogtag,886); + ACE_DOGTAG_ITEM(ACE_dogtag,887); + ACE_DOGTAG_ITEM(ACE_dogtag,888); + ACE_DOGTAG_ITEM(ACE_dogtag,889); + ACE_DOGTAG_ITEM(ACE_dogtag,890); + ACE_DOGTAG_ITEM(ACE_dogtag,891); + ACE_DOGTAG_ITEM(ACE_dogtag,892); + ACE_DOGTAG_ITEM(ACE_dogtag,893); + ACE_DOGTAG_ITEM(ACE_dogtag,894); + ACE_DOGTAG_ITEM(ACE_dogtag,895); + ACE_DOGTAG_ITEM(ACE_dogtag,896); + ACE_DOGTAG_ITEM(ACE_dogtag,897); + ACE_DOGTAG_ITEM(ACE_dogtag,898); + ACE_DOGTAG_ITEM(ACE_dogtag,899); + ACE_DOGTAG_ITEM(ACE_dogtag,900); + ACE_DOGTAG_ITEM(ACE_dogtag,901); + ACE_DOGTAG_ITEM(ACE_dogtag,902); + ACE_DOGTAG_ITEM(ACE_dogtag,903); + ACE_DOGTAG_ITEM(ACE_dogtag,904); + ACE_DOGTAG_ITEM(ACE_dogtag,905); + ACE_DOGTAG_ITEM(ACE_dogtag,906); + ACE_DOGTAG_ITEM(ACE_dogtag,907); + ACE_DOGTAG_ITEM(ACE_dogtag,908); + ACE_DOGTAG_ITEM(ACE_dogtag,909); + ACE_DOGTAG_ITEM(ACE_dogtag,910); + ACE_DOGTAG_ITEM(ACE_dogtag,911); + ACE_DOGTAG_ITEM(ACE_dogtag,912); + ACE_DOGTAG_ITEM(ACE_dogtag,913); + ACE_DOGTAG_ITEM(ACE_dogtag,914); + ACE_DOGTAG_ITEM(ACE_dogtag,915); + ACE_DOGTAG_ITEM(ACE_dogtag,916); + ACE_DOGTAG_ITEM(ACE_dogtag,917); + ACE_DOGTAG_ITEM(ACE_dogtag,918); + ACE_DOGTAG_ITEM(ACE_dogtag,919); + ACE_DOGTAG_ITEM(ACE_dogtag,920); + ACE_DOGTAG_ITEM(ACE_dogtag,921); + ACE_DOGTAG_ITEM(ACE_dogtag,922); + ACE_DOGTAG_ITEM(ACE_dogtag,923); + ACE_DOGTAG_ITEM(ACE_dogtag,924); + ACE_DOGTAG_ITEM(ACE_dogtag,925); + ACE_DOGTAG_ITEM(ACE_dogtag,926); + ACE_DOGTAG_ITEM(ACE_dogtag,927); + ACE_DOGTAG_ITEM(ACE_dogtag,928); + ACE_DOGTAG_ITEM(ACE_dogtag,929); + ACE_DOGTAG_ITEM(ACE_dogtag,930); + ACE_DOGTAG_ITEM(ACE_dogtag,931); + ACE_DOGTAG_ITEM(ACE_dogtag,932); + ACE_DOGTAG_ITEM(ACE_dogtag,933); + ACE_DOGTAG_ITEM(ACE_dogtag,934); + ACE_DOGTAG_ITEM(ACE_dogtag,935); + ACE_DOGTAG_ITEM(ACE_dogtag,936); + ACE_DOGTAG_ITEM(ACE_dogtag,937); + ACE_DOGTAG_ITEM(ACE_dogtag,938); + ACE_DOGTAG_ITEM(ACE_dogtag,939); + ACE_DOGTAG_ITEM(ACE_dogtag,940); + ACE_DOGTAG_ITEM(ACE_dogtag,941); + ACE_DOGTAG_ITEM(ACE_dogtag,942); + ACE_DOGTAG_ITEM(ACE_dogtag,943); + ACE_DOGTAG_ITEM(ACE_dogtag,944); + ACE_DOGTAG_ITEM(ACE_dogtag,945); + ACE_DOGTAG_ITEM(ACE_dogtag,946); + ACE_DOGTAG_ITEM(ACE_dogtag,947); + ACE_DOGTAG_ITEM(ACE_dogtag,948); + ACE_DOGTAG_ITEM(ACE_dogtag,949); + ACE_DOGTAG_ITEM(ACE_dogtag,950); + ACE_DOGTAG_ITEM(ACE_dogtag,951); + ACE_DOGTAG_ITEM(ACE_dogtag,952); + ACE_DOGTAG_ITEM(ACE_dogtag,953); + ACE_DOGTAG_ITEM(ACE_dogtag,954); + ACE_DOGTAG_ITEM(ACE_dogtag,955); + ACE_DOGTAG_ITEM(ACE_dogtag,956); + ACE_DOGTAG_ITEM(ACE_dogtag,957); + ACE_DOGTAG_ITEM(ACE_dogtag,958); + ACE_DOGTAG_ITEM(ACE_dogtag,959); + ACE_DOGTAG_ITEM(ACE_dogtag,960); + ACE_DOGTAG_ITEM(ACE_dogtag,961); + ACE_DOGTAG_ITEM(ACE_dogtag,962); + ACE_DOGTAG_ITEM(ACE_dogtag,963); + ACE_DOGTAG_ITEM(ACE_dogtag,964); + ACE_DOGTAG_ITEM(ACE_dogtag,965); + ACE_DOGTAG_ITEM(ACE_dogtag,966); + ACE_DOGTAG_ITEM(ACE_dogtag,967); + ACE_DOGTAG_ITEM(ACE_dogtag,968); + ACE_DOGTAG_ITEM(ACE_dogtag,969); + ACE_DOGTAG_ITEM(ACE_dogtag,970); + ACE_DOGTAG_ITEM(ACE_dogtag,971); + ACE_DOGTAG_ITEM(ACE_dogtag,972); + ACE_DOGTAG_ITEM(ACE_dogtag,973); + ACE_DOGTAG_ITEM(ACE_dogtag,974); + ACE_DOGTAG_ITEM(ACE_dogtag,975); + ACE_DOGTAG_ITEM(ACE_dogtag,976); + ACE_DOGTAG_ITEM(ACE_dogtag,977); + ACE_DOGTAG_ITEM(ACE_dogtag,978); + ACE_DOGTAG_ITEM(ACE_dogtag,979); + ACE_DOGTAG_ITEM(ACE_dogtag,980); + ACE_DOGTAG_ITEM(ACE_dogtag,981); + ACE_DOGTAG_ITEM(ACE_dogtag,982); + ACE_DOGTAG_ITEM(ACE_dogtag,983); + ACE_DOGTAG_ITEM(ACE_dogtag,984); + ACE_DOGTAG_ITEM(ACE_dogtag,985); + ACE_DOGTAG_ITEM(ACE_dogtag,986); + ACE_DOGTAG_ITEM(ACE_dogtag,987); + ACE_DOGTAG_ITEM(ACE_dogtag,988); + ACE_DOGTAG_ITEM(ACE_dogtag,989); + ACE_DOGTAG_ITEM(ACE_dogtag,990); + ACE_DOGTAG_ITEM(ACE_dogtag,991); + ACE_DOGTAG_ITEM(ACE_dogtag,992); + ACE_DOGTAG_ITEM(ACE_dogtag,993); + ACE_DOGTAG_ITEM(ACE_dogtag,994); + ACE_DOGTAG_ITEM(ACE_dogtag,995); + ACE_DOGTAG_ITEM(ACE_dogtag,996); + ACE_DOGTAG_ITEM(ACE_dogtag,997); + ACE_DOGTAG_ITEM(ACE_dogtag,998); + ACE_DOGTAG_ITEM(ACE_dogtag,999); + ACE_DOGTAG_ITEM(ACE_dogtag,1000); }; diff --git a/addons/dogtags/script_component.hpp b/addons/dogtags/script_component.hpp index 6f1e5d776a..980222c8da 100644 --- a/addons/dogtags/script_component.hpp +++ b/addons/dogtags/script_component.hpp @@ -15,1015 +15,3 @@ #endif #include "\z\ace\addons\main\script_macros.hpp" - -#define ACE_DOGTAG_CLASS(DOGTAGBASE,DOGTAGID) \ - class DOGTAGBASE##_##DOGTAGID : DOGTAGBASE { \ - author = ECSTRING(common,ACETeam); \ - scope = 1; \ - scopeArsenal = 0; \ - scopeCurator = 0; \ - descriptionShort = QUOTE(DOGTAGID); \ - GVAR(tagID) = DOGTAGID; \ - }; - -#define ACE_DOGTAGS(DOGTAGBASE) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,1) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,2) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,3) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,4) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,5) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,6) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,7) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,8) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,9) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,10) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,11) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,12) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,13) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,14) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,15) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,16) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,17) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,18) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,19) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,20) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,21) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,22) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,23) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,24) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,25) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,26) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,27) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,28) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,29) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,30) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,31) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,32) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,33) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,34) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,35) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,36) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,37) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,38) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,39) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,40) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,41) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,42) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,43) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,44) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,45) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,46) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,47) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,48) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,49) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,50) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,51) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,52) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,53) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,54) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,55) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,56) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,57) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,58) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,59) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,60) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,61) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,62) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,63) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,64) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,65) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,66) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,67) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,68) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,69) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,70) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,71) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,72) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,73) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,74) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,75) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,76) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,77) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,78) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,79) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,80) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,81) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,82) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,83) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,84) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,85) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,86) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,87) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,88) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,89) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,90) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,91) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,92) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,93) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,94) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,95) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,96) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,97) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,98) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,99) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,100) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,101) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,102) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,103) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,104) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,105) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,106) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,107) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,108) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,109) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,110) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,111) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,112) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,113) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,114) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,115) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,116) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,117) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,118) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,119) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,120) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,121) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,122) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,123) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,124) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,125) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,126) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,127) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,128) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,129) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,130) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,131) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,132) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,133) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,134) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,135) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,136) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,137) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,138) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,139) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,140) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,141) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,142) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,143) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,144) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,145) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,146) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,147) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,148) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,149) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,150) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,151) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,152) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,153) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,154) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,155) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,156) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,157) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,158) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,159) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,160) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,161) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,162) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,163) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,164) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,165) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,166) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,167) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,168) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,169) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,170) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,171) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,172) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,173) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,174) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,175) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,176) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,177) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,178) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,179) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,180) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,181) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,182) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,183) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,184) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,185) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,186) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,187) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,188) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,189) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,190) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,191) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,192) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,193) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,194) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,195) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,196) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,197) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,198) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,199) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,200) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,201) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,202) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,203) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,204) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,205) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,206) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,207) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,208) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,209) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,210) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,211) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,212) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,213) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,214) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,215) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,216) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,217) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,218) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,219) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,220) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,221) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,222) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,223) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,224) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,225) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,226) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,227) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,228) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,229) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,230) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,231) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,232) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,233) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,234) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,235) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,236) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,237) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,238) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,239) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,240) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,241) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,242) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,243) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,244) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,245) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,246) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,247) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,248) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,249) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,250) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,251) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,252) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,253) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,254) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,255) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,256) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,257) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,258) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,259) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,260) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,261) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,262) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,263) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,264) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,265) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,266) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,267) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,268) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,269) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,270) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,271) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,272) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,273) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,274) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,275) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,276) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,277) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,278) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,279) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,280) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,281) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,282) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,283) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,284) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,285) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,286) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,287) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,288) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,289) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,290) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,291) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,292) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,293) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,294) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,295) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,296) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,297) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,298) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,299) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,300) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,301) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,302) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,303) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,304) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,305) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,306) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,307) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,308) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,309) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,310) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,311) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,312) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,313) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,314) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,315) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,316) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,317) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,318) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,319) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,320) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,321) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,322) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,323) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,324) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,325) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,326) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,327) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,328) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,329) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,330) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,331) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,332) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,333) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,334) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,335) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,336) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,337) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,338) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,339) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,340) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,341) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,342) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,343) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,344) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,345) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,346) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,347) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,348) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,349) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,350) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,351) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,352) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,353) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,354) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,355) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,356) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,357) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,358) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,359) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,360) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,361) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,362) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,363) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,364) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,365) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,366) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,367) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,368) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,369) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,370) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,371) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,372) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,373) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,374) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,375) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,376) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,377) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,378) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,379) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,380) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,381) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,382) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,383) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,384) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,385) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,386) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,387) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,388) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,389) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,390) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,391) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,392) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,393) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,394) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,395) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,396) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,397) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,398) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,399) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,400) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,401) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,402) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,403) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,404) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,405) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,406) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,407) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,408) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,409) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,410) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,411) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,412) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,413) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,414) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,415) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,416) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,417) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,418) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,419) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,420) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,421) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,422) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,423) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,424) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,425) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,426) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,427) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,428) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,429) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,430) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,431) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,432) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,433) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,434) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,435) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,436) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,437) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,438) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,439) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,440) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,441) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,442) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,443) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,444) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,445) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,446) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,447) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,448) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,449) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,450) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,451) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,452) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,453) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,454) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,455) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,456) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,457) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,458) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,459) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,460) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,461) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,462) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,463) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,464) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,465) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,466) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,467) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,468) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,469) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,470) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,471) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,472) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,473) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,474) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,475) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,476) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,477) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,478) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,479) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,480) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,481) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,482) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,483) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,484) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,485) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,486) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,487) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,488) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,489) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,490) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,491) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,492) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,493) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,494) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,495) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,496) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,497) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,498) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,499) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,500) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,501) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,502) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,503) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,504) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,505) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,506) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,507) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,508) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,509) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,510) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,511) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,512) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,513) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,514) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,515) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,516) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,517) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,518) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,519) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,520) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,521) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,522) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,523) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,524) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,525) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,526) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,527) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,528) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,529) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,530) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,531) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,532) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,533) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,534) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,535) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,536) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,537) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,538) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,539) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,540) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,541) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,542) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,543) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,544) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,545) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,546) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,547) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,548) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,549) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,550) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,551) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,552) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,553) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,554) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,555) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,556) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,557) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,558) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,559) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,560) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,561) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,562) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,563) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,564) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,565) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,566) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,567) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,568) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,569) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,570) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,571) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,572) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,573) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,574) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,575) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,576) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,577) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,578) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,579) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,580) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,581) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,582) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,583) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,584) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,585) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,586) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,587) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,588) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,589) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,590) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,591) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,592) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,593) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,594) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,595) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,596) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,597) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,598) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,599) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,600) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,601) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,602) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,603) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,604) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,605) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,606) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,607) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,608) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,609) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,610) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,611) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,612) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,613) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,614) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,615) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,616) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,617) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,618) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,619) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,620) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,621) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,622) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,623) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,624) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,625) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,626) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,627) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,628) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,629) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,630) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,631) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,632) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,633) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,634) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,635) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,636) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,637) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,638) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,639) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,640) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,641) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,642) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,643) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,644) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,645) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,646) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,647) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,648) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,649) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,650) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,651) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,652) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,653) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,654) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,655) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,656) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,657) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,658) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,659) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,660) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,661) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,662) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,663) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,664) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,665) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,666) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,667) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,668) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,669) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,670) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,671) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,672) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,673) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,674) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,675) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,676) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,677) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,678) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,679) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,680) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,681) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,682) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,683) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,684) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,685) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,686) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,687) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,688) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,689) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,690) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,691) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,692) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,693) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,694) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,695) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,696) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,697) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,698) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,699) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,700) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,701) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,702) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,703) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,704) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,705) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,706) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,707) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,708) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,709) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,710) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,711) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,712) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,713) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,714) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,715) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,716) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,717) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,718) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,719) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,720) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,721) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,722) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,723) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,724) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,725) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,726) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,727) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,728) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,729) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,730) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,731) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,732) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,733) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,734) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,735) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,736) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,737) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,738) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,739) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,740) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,741) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,742) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,743) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,744) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,745) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,746) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,747) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,748) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,749) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,750) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,751) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,752) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,753) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,754) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,755) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,756) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,757) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,758) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,759) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,760) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,761) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,762) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,763) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,764) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,765) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,766) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,767) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,768) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,769) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,770) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,771) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,772) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,773) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,774) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,775) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,776) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,777) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,778) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,779) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,780) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,781) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,782) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,783) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,784) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,785) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,786) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,787) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,788) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,789) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,790) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,791) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,792) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,793) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,794) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,795) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,796) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,797) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,798) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,799) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,800) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,801) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,802) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,803) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,804) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,805) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,806) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,807) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,808) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,809) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,810) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,811) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,812) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,813) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,814) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,815) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,816) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,817) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,818) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,819) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,820) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,821) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,822) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,823) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,824) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,825) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,826) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,827) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,828) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,829) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,830) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,831) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,832) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,833) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,834) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,835) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,836) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,837) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,838) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,839) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,840) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,841) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,842) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,843) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,844) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,845) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,846) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,847) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,848) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,849) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,850) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,851) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,852) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,853) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,854) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,855) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,856) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,857) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,858) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,859) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,860) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,861) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,862) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,863) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,864) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,865) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,866) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,867) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,868) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,869) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,870) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,871) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,872) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,873) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,874) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,875) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,876) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,877) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,878) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,879) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,880) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,881) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,882) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,883) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,884) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,885) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,886) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,887) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,888) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,889) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,890) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,891) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,892) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,893) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,894) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,895) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,896) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,897) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,898) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,899) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,900) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,901) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,902) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,903) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,904) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,905) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,906) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,907) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,908) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,909) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,910) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,911) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,912) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,913) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,914) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,915) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,916) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,917) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,918) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,919) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,920) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,921) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,922) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,923) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,924) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,925) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,926) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,927) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,928) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,929) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,930) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,931) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,932) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,933) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,934) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,935) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,936) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,937) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,938) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,939) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,940) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,941) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,942) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,943) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,944) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,945) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,946) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,947) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,948) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,949) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,950) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,951) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,952) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,953) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,954) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,955) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,956) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,957) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,958) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,959) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,960) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,961) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,962) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,963) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,964) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,965) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,966) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,967) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,968) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,969) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,970) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,971) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,972) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,973) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,974) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,975) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,976) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,977) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,978) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,979) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,980) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,981) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,982) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,983) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,984) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,985) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,986) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,987) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,988) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,989) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,990) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,991) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,992) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,993) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,994) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,995) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,996) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,997) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,998) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,999) \ - ACE_DOGTAG_CLASS(DOGTAGBASE,1000) From 9d4bd0f8ddeed52a13f57f116bab2c5f84e8cd41 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Thu, 2 Jun 2016 00:59:15 +0200 Subject: [PATCH 04/85] Added custom dogtag model and images --- addons/dogtags/CfgWeapons.hpp | 2 +- addons/dogtags/data/ace_dogtag.p3d | Bin 0 -> 6458 bytes addons/dogtags/data/dogtag.rvmat | 82 +++++++++++++++++++++++++++ addons/dogtags/data/dogtagDouble.paa | Bin 22016 -> 37366 bytes addons/dogtags/data/dogtagSingle.paa | Bin 22016 -> 35107 bytes addons/dogtags/data/dogtag_ca.paa | Bin 0 -> 45953 bytes addons/dogtags/data/dogtag_nohq.paa | Bin 0 -> 40195 bytes addons/dogtags/data/model.cfg | 16 ++++++ 8 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 addons/dogtags/data/ace_dogtag.p3d create mode 100644 addons/dogtags/data/dogtag.rvmat create mode 100644 addons/dogtags/data/dogtag_ca.paa create mode 100644 addons/dogtags/data/dogtag_nohq.paa create mode 100644 addons/dogtags/data/model.cfg diff --git a/addons/dogtags/CfgWeapons.hpp b/addons/dogtags/CfgWeapons.hpp index 4ef8e9b7ec..5c4e3eca80 100644 --- a/addons/dogtags/CfgWeapons.hpp +++ b/addons/dogtags/CfgWeapons.hpp @@ -16,7 +16,7 @@ class CfgWeapons { author = ECSTRING(common,ACETeam); scope = 0; displayName = CSTRING(itemName); - model = "\A3\weapons_F\ammo\mag_univ.p3d"; //@todo? + model = QUOTE(PATHTOF(data\ace_dogtag.p3d)); //@todo? //picture = QUOTE(PATHTOF(images\picture.paa)); @todo class ItemInfo: InventoryItem_Base_F { mass = 0; //too small to for 1 ? diff --git a/addons/dogtags/data/ace_dogtag.p3d b/addons/dogtags/data/ace_dogtag.p3d new file mode 100644 index 0000000000000000000000000000000000000000..442a4b462287dc5345ab93e117004879c058ee20 GIT binary patch literal 6458 zcmchbU5Hgx6vy{uHKmhUnpWocakURK`t^Ypz zp7q~roxS$jvts$mMKv|X$e&r&uxQ2oA_2(f<+=|n?fd-$<-XQkeMi>Reg^(@;EVF; z{+IikJuVEMESux=%4V&5-d_Jnx#Rtr5gzgR(egVVEi0RK?)mPS{pCNu`?Wu8clgjh zua}n$wnfj6{xlH0An!UqWG_hA3ljE%guNhPFG$!6;`W%|=#Jw2aL8V{7;ao(V)I*f zcy3@kU*>o2?HLhfem@^w8e!)5Vc(SnVcXFBKDfLlQ2&U%AYm^^*b5T&g19~LR}g=n z*bfr+gSh=KkBu*lyLzhO+O-20D(MFfp6q>N>AStggcmC5*T&bE&K{cD$e2pH{I)Un zo?-RkW9_tusZB^2LoY2{L>tLN7Q%M)!W@COHR+l(tV=*08KXbmb zS8Y|&2Ts@bZth-UV^K-}dRaa@?uS20%)OE>G0kdBC5~B*qr^9>@x{lL{IC5DnM? z$HG}+@RH}b;&@D?;~$C9T3O)leU@{BPioF=s1 zlfYizQlN!5>aY|#Z{QjFO!F$CalDCVqrs+0@YHH~3mRjv>S^39>R9l_4ML+XM?mic zhn<4|sunG(pSv(?_K4YUauY=x2fVmfa5;C6sN=yQ_~RUEvZWA2K6gB%2?7cefZ;DW z)7+iES5&AP^NP^AQY~5p2#=WXbk2nP@&phn#`NXP#eI1^Y3s@GvQTg zgeC7C0%*%zb5LmR&O>{$eeP(ZCR+-$Fi~&qd@EVLBhRXvVsWi_tC(jwOtpBf1a)h* zyoK3mF|%wu(=9$CG*??18H*ilt0rzKc#BVdhBf2%L^ht87Q4-d&FKM)-5zPx#4QC{ zq|OI1VzBoPMNO;4u1vIQ z;+6s}yt4!|-aF7*3ih<1y$o30>XdKmIn4TR3tG#;o)$q|0c@^X5Zf2Fw$^0YUMh6& zXen;$+LjmBV6EmNtYuSl8ujbm z9}9;ToaY(sIsQE6>mNNB89fk1<9wkJjni7&9SyWF8Irnr=s5L{`oa4}=cR{x^^0Gr z(Ta@b=TAgQei2VSnrLC9b~PT#OXscsg3)pM+`mWPt1>Df{5a(q&BMP}cPXC;qj^M$ kPsjN<={WtJj??#Rzt2!LnU-zEl^Yjt-qMxvA7GgO7i9cL=>Px# literal 0 HcmV?d00001 diff --git a/addons/dogtags/data/dogtag.rvmat b/addons/dogtags/data/dogtag.rvmat new file mode 100644 index 0000000000..503e31b68f --- /dev/null +++ b/addons/dogtags/data/dogtag.rvmat @@ -0,0 +1,82 @@ +class StageTI { + texture = "a3\data_f\default_glass_ti_ca.paa"; +}; +ambient[] = {1,1,1,1}; +diffuse[] = {1,1,1,1}; +forcedDiffuse[] = {0,0,0,0}; +emmisive[] = {0,0,0,1}; +specular[] = {0.3,0.3,0.3,1}; +specularPower = 50; +PixelShaderID = "Super"; +VertexShaderID = "Super"; +class Stage1 { + texture = "z\ace\addons\dogtags\data\dogtag_nohq.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; +class Stage2 { + texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; +class Stage3 { + texture = "#(argb,8,8,3)color(0,0,0,0,MC)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; +class Stage4 { + texture = "#(argb,8,8,3)color(1,1,1,1,AS)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; +class Stage5 { + texture = "#(argb,8,8,3)color(0,0.6,1,1,SMDI)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; +class Stage6 { + texture = "#(ai,32,128,1)fresnel(0.85,0.36)"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; +class Stage7 { + useWorldEnvMap = "true"; + texture = "a3\data_f\env_interier_car_ca.paa"; + uvSource = "tex"; + class uvTransform { + aside[] = {1,0,0}; + up[] = {0,1,0}; + dir[] = {0,0,1}; + pos[] = {0,0,0}; + }; +}; diff --git a/addons/dogtags/data/dogtagDouble.paa b/addons/dogtags/data/dogtagDouble.paa index 69c927d9796d7962d47bdfa11974d39c429bfaa7..d325b8c55c154926350aad35909d084c08514419 100644 GIT binary patch literal 37366 zcmeFadt6lI{y(~&83yDs7f{klWo7_p%^EIR;-x*zkhZ(*GPN858)gW1-<=YI5Qea3 z79##iKq(uw43I1mhlX)WAmLm{zqu<*_BR476bN^TP(lGR!J1j;v$Prgoqx`GefRgg z&Uu|z^NNNy&sxt~>vO+6>ygJi_SnN4RzJ4!VLuGR-ha0y^A=8dcnymg_^|k~ho5?s z#Rz^_{OqHTu1$j9i{WR762lB6hLu)eSo!N1cHj*R`xbuwZ+>=RX!K857$*Mx_#d%< z^Vbb9(JX{LaUkl6FlV*>8=@+04=4?p9{L;yAwBXW`((3SaK!!IG1rhe`LicuU4SGi4%nHYPDD+!L;H~?V zy{txnc{*z&u2y1OiQ!hB`y<$Q4He{^!uj~}KI z+_Sj)`^f%&-s1;j66g0G-JTe@)R3j|?@k@jasPS9o_#Rwr5?f2$Fp#yfHU`lmWP)e zy@FxUTEvO|x%itOb!eU=E!)k#{9@ZYZ2U6frp;iUZ+>xXciH_uLJX%i*^@S9=Y2`Y zRf3*o!*-865gQfs)-!U0phKY&Xe>f*u_sxkh6iaB_A;7yT#0e5dDF?0mA<3ozx8!dr&8k(Vr8X;3%A;#?)GwpwqOz zG+9?LFl*<@1(&SuPEm6729{)RtP%wfF)9J(*uh!6tg2tPJ?1ApcbO^5b`>Ekze|fA z-%4f~e~A52$bIpNU$wnjqTfOJ?ESTLU4EVeIyA2OY+>1AeF^OaGtmx{z7+V(7 zpa54I@(;NNB+r&H#;b2dRUwI#;9L^wU;K@+ZPx|(5Ad)4Sarp*U4F#zed>7$xk7)T zeL5W*U5y>NsBvzeS;8|4QqS{WG4q@Bp2QXBrJu@%Wk!DLd0kd517=6}{jfg9F`v;W z4D;*d24apb(*xQ$Ki?9QDA4HhG#UjQW!R3z7%&c@#E^)zV|XIAL&E&2!EBa!f;4r! zZ@xqA4eX%tXv+&Y#hFt*o%C1W5E>YBIoR*m*bBLCv_a4HFqF*TrwO^rsXAP@_ZVTv zUgTe!B7lm;1Fbl&5`Jw;n@tclghr-qr&;;!G?fgFT_PCl!uT*Ny`3h;X>B0L2=u{) zQ>`qw+TzMah(zI7k`ZV=;&I4m9;mA6Z2FjuaAFPSdYOYWUKJ96hI3Q8*(ncHIED*b zaU~}tx1w;kJbn>fNe3`9>h+pGCmE7W`e#or=&jn7R3aWV3Ku!aBJ_Ox%JXC-FC0bK zTAu�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 PI1%qn(`pCa`q}$Wmof3b literal 22016 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 C6dZB@ literal 22016 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 CWi|@{ diff --git a/addons/dogtags/data/dogtag_ca.paa b/addons/dogtags/data/dogtag_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..ccd77607f3c21dc129f5dd7c6175440fba87d9f1 GIT binary patch literal 45953 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 literal 0 HcmV?d00001 diff --git a/addons/dogtags/data/model.cfg b/addons/dogtags/data/model.cfg new file mode 100644 index 0000000000..cb919c9950 --- /dev/null +++ b/addons/dogtags/data/model.cfg @@ -0,0 +1,16 @@ +class CfgSkeletons { + class Default { + isDiscrete = 1; + skeletonInherit = ""; + skeletonBones[] = {}; + }; +}; + +class CfgModels { + class Default { + sectionsInherit = ""; + sections[] = {""}; + skeletonName = "Default"; + }; + class ace_dogtag: Default {}; +}; From 5dbe99b7404354e04b6efb1522248ef2300dc3e2 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 7 Jun 2016 20:40:26 +0200 Subject: [PATCH 05/85] Adjusted single and double dogtag renders --- addons/dogtags/data/dogtagDouble.paa | Bin 37366 -> 38198 bytes addons/dogtags/data/dogtagSingle.paa | Bin 35107 -> 35491 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/addons/dogtags/data/dogtagDouble.paa b/addons/dogtags/data/dogtagDouble.paa index d325b8c55c154926350aad35909d084c08514419..8bc7c29ef3300bc4b560ac45b5204d78538381d8 100644 GIT binary patch literal 38198 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 OXHr+}>U4qC`1}`{o?Qe0 literal 37366 zcmeFadt6lI{y(~&83yDs7f{klWo7_p%^EIR;-x*zkhZ(*GPN858)gW1-<=YI5Qea3 z79##iKq(uw43I1mhlX)WAmLm{zqu<*_BR476bN^TP(lGR!J1j;v$Prgoqx`GefRgg z&Uu|z^NNNy&sxt~>vO+6>ygJi_SnN4RzJ4!VLuGR-ha0y^A=8dcnymg_^|k~ho5?s z#Rz^_{OqHTu1$j9i{WR762lB6hLu)eSo!N1cHj*R`xbuwZ+>=RX!K857$*Mx_#d%< z^Vbb9(JX{LaUkl6FlV*>8=@+04=4?p9{L;yAwBXW`((3SaK!!IG1rhe`LicuU4SGi4%nHYPDD+!L;H~?V zy{txnc{*z&u2y1OiQ!hB`y<$Q4He{^!uj~}KI z+_Sj)`^f%&-s1;j66g0G-JTe@)R3j|?@k@jasPS9o_#Rwr5?f2$Fp#yfHU`lmWP)e zy@FxUTEvO|x%itOb!eU=E!)k#{9@ZYZ2U6frp;iUZ+>xXciH_uLJX%i*^@S9=Y2`Y zRf3*o!*-865gQfs)-!U0phKY&Xe>f*u_sxkh6iaB_A;7yT#0e5dDF?0mA<3ozx8!dr&8k(Vr8X;3%A;#?)GwpwqOz zG+9?LFl*<@1(&SuPEm6729{)RtP%wfF)9J(*uh!6tg2tPJ?1ApcbO^5b`>Ekze|fA z-%4f~e~A52$bIpNU$wnjqTfOJ?ESTLU4EVeIyA2OY+>1AeF^OaGtmx{z7+V(7 zpa54I@(;NNB+r&H#;b2dRUwI#;9L^wU;K@+ZPx|(5Ad)4Sarp*U4F#zed>7$xk7)T zeL5W*U5y>NsBvzeS;8|4QqS{WG4q@Bp2QXBrJu@%Wk!DLd0kd517=6}{jfg9F`v;W z4D;*d24apb(*xQ$Ki?9QDA4HhG#UjQW!R3z7%&c@#E^)zV|XIAL&E&2!EBa!f;4r! zZ@xqA4eX%tXv+&Y#hFt*o%C1W5E>YBIoR*m*bBLCv_a4HFqF*TrwO^rsXAP@_ZVTv zUgTe!B7lm;1Fbl&5`Jw;n@tclghr-qr&;;!G?fgFT_PCl!uT*Ny`3h;X>B0L2=u{) zQ>`qw+TzMah(zI7k`ZV=;&I4m9;mA6Z2FjuaAFPSdYOYWUKJ96hI3Q8*(ncHIED*b zaU~}tx1w;kJbn>fNe3`9>h+pGCmE7W`e#or=&jn7R3aWV3Ku!aBJ_Ox%JXC-FC0bK zTAu�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 PI1%qn(`pCa`q}$Wmof3b diff --git a/addons/dogtags/data/dogtagSingle.paa b/addons/dogtags/data/dogtagSingle.paa index ecc9745379c832d9465764d2713b582ccb75184c..c85457d9032bc31651ab315d9ef31c811a7e73e3 100644 GIT binary patch literal 35491 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�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 literal 35107 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 C6dZB@ From 38b98802de969ddd0ec702f26697e2694b96f5f7 Mon Sep 17 00:00:00 2001 From: voiper Date: Tue, 7 Jun 2016 17:22:48 -0700 Subject: [PATCH 06/85] Add grenade, chemlight, and handflare priming sounds. Remove default clinking sounds. --- addons/grenades/CfgAmmo.hpp | 11 +++++++++++ .../grenades/functions/fnc_throwGrenade.sqf | 19 ++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/addons/grenades/CfgAmmo.hpp b/addons/grenades/CfgAmmo.hpp index a5971044f9..d296972539 100644 --- a/addons/grenades/CfgAmmo.hpp +++ b/addons/grenades/CfgAmmo.hpp @@ -1,5 +1,16 @@ class CfgAmmo { + class Default; + class Grenade: Default { + soundImpactSoft1[] = {"",1,1,1}; + soundImpactSoft2[] = {"",1,1,1}; + soundImpactSoft3[] = {"",1,1,1}; + soundImpactSoft4[] = {"",1,1,1}; + soundImpactSoft5[] = {"",1,1,1}; + soundImpactSoft6[] = {"",1,1,1}; + soundImpactSoft7[] = {"",1,1,1}; + }; + class FlareCore; class FlareBase: FlareCore { intensity = 20000; diff --git a/addons/grenades/functions/fnc_throwGrenade.sqf b/addons/grenades/functions/fnc_throwGrenade.sqf index e603dd8743..e60b987387 100644 --- a/addons/grenades/functions/fnc_throwGrenade.sqf +++ b/addons/grenades/functions/fnc_throwGrenade.sqf @@ -27,8 +27,25 @@ if (isNull _projectile) then { private _config = configFile >> "CfgAmmo" >> _ammo; -// handle special grenades +// handle special grenades and sounds if (local _unit) then { + // handle priming sound, if not IR grenade + if (_ammo isKindOf "GrenadeHand") then { + private _posASLProjectile = getPosASL _projectile; + + switch (true) do { + case (_ammo isKindOf "Chemlight_base"): { + playSound3D ["A3\sounds_f\weapons\Other\dry4.wss", objNull, false, _posASLProjectile, 3, 2, 10] + }; + case (_ammo isKindOf "ACE_G_Handflare_White"): { + playSound3D ["A3\sounds_f\weapons\smokeshell\smoke_1.wss", objNull, false, _posASLProjectile, 0.4, 1, 10] + }; + default { + playSound3D ["A3\sounds_f\weapons\grenades\Grenade_PullPin.wss", objNull, false, _posASLProjectile, 1.5, 1, 10] + }; + }; + }; + if (getNumber (_config >> QGVAR(flashbang)) == 1) then { private _fuzeTime = getNumber (_config >> "explosionTime"); From 5313672e4c6a9f8496b00e320f08b123658dbf86 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Thu, 9 Jun 2016 17:10:46 +0200 Subject: [PATCH 07/85] dogtag picture --- addons/dogtags/CfgWeapons.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/dogtags/CfgWeapons.hpp b/addons/dogtags/CfgWeapons.hpp index 5c4e3eca80..4e37db74db 100644 --- a/addons/dogtags/CfgWeapons.hpp +++ b/addons/dogtags/CfgWeapons.hpp @@ -16,8 +16,8 @@ class CfgWeapons { author = ECSTRING(common,ACETeam); scope = 0; displayName = CSTRING(itemName); - model = QUOTE(PATHTOF(data\ace_dogtag.p3d)); //@todo? - //picture = QUOTE(PATHTOF(images\picture.paa)); @todo + model = QUOTE(PATHTOF(data\ace_dogtag.p3d)); + picture = QUOTE(PATHTOF(data\dogtagSingle.paa)); class ItemInfo: InventoryItem_Base_F { mass = 0; //too small to for 1 ? }; From 0e247bdb0035e3bff6a7fea0db40163579dcab26 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Sat, 11 Jun 2016 22:13:39 +0200 Subject: [PATCH 08/85] CBA events --- addons/dogtags/XEH_postInit.sqf | 8 ++++---- addons/dogtags/functions/fnc_checkDogtag.sqf | 2 +- addons/dogtags/functions/fnc_checkDogtagItem.sqf | 2 +- addons/dogtags/functions/fnc_getDogtagItem.sqf | 4 ++-- addons/dogtags/functions/fnc_sendDogtagData.sqf | 2 +- addons/dogtags/functions/fnc_takeDogtag.sqf | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/addons/dogtags/XEH_postInit.sqf b/addons/dogtags/XEH_postInit.sqf index 2d7b1dd49c..96a6a3180c 100644 --- a/addons/dogtags/XEH_postInit.sqf +++ b/addons/dogtags/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -[QGVAR(showDogtag), DFUNC(showDogtag)] call EFUNC(common,addEventHandler); -[QGVAR(sendDogtagData), DFUNC(sendDogtagData)] call EFUNC(common,addEventHandler); -[QGVAR(getDogtagItem), DFUNC(getDogtagItem)] call EFUNC(common,addEventHandler); -[QGVAR(addDogtagItem), DFUNC(addDogtagItem)] call EFUNC(common,addEventHandler); +[QGVAR(showDogtag), DFUNC(showDogtag)] call CBA_fnc_addEventHandler; +[QGVAR(sendDogtagData), DFUNC(sendDogtagData)] call CBA_fnc_addEventHandler; +[QGVAR(getDogtagItem), DFUNC(getDogtagItem)] call CBA_fnc_addEventHandler; +[QGVAR(addDogtagItem), DFUNC(addDogtagItem)] call CBA_fnc_addEventHandler; diff --git a/addons/dogtags/functions/fnc_checkDogtag.sqf b/addons/dogtags/functions/fnc_checkDogtag.sqf index bfd78e263c..4c606265f6 100644 --- a/addons/dogtags/functions/fnc_checkDogtag.sqf +++ b/addons/dogtags/functions/fnc_checkDogtag.sqf @@ -17,4 +17,4 @@ params ["_player", "_target"]; private _doubleTags = !(_target getVariable [QGVAR(dogtagTaken), false]); private _nickname = [_target, false, true] call EFUNC(common,getName); -[QGVAR(showDogtag), [_nickname, _doubleTags]] call EFUNC(common,localEvent); +[QGVAR(showDogtag), [_nickname, _doubleTags]] call CBA_fnc_localEvent; diff --git a/addons/dogtags/functions/fnc_checkDogtagItem.sqf b/addons/dogtags/functions/fnc_checkDogtagItem.sqf index 786874dc65..930532a0d9 100644 --- a/addons/dogtags/functions/fnc_checkDogtagItem.sqf +++ b/addons/dogtags/functions/fnc_checkDogtagItem.sqf @@ -16,4 +16,4 @@ params ["_player", "_target", "_item"]; -[QGVAR(sendDogtagData), [_player, _item]] call EFUNC(common,serverEvent); +[QGVAR(sendDogtagData), [_player, _item]] call CBA_fnc_serverEvent; diff --git a/addons/dogtags/functions/fnc_getDogtagItem.sqf b/addons/dogtags/functions/fnc_getDogtagItem.sqf index 30e0584f7b..db12dd258a 100644 --- a/addons/dogtags/functions/fnc_getDogtagItem.sqf +++ b/addons/dogtags/functions/fnc_getDogtagItem.sqf @@ -34,7 +34,7 @@ missionNamespace setVariable [QGVAR(allDogtags), _allDogtags]; missionNamespace setVariable [QGVAR(allDogtagNicknames), _allDogtagNicknames]; if(isMultiplayer) then { - [QGVAR(addDogtagItem), [_target], [_item, _nickname]] call EFUNC(common,targetEvent); + [QGVAR(addDogtagItem), [_item, _nickname], [_target]] call CBA_fnc_targetEvent; } else { - [QGVAR(addDogtagItem), [_item, _nickname]] call EFUNC(common,localEvent); + [QGVAR(addDogtagItem), [_item, _nickname]] call CBA_fnc_localEvent; }; diff --git a/addons/dogtags/functions/fnc_sendDogtagData.sqf b/addons/dogtags/functions/fnc_sendDogtagData.sqf index 9cb2efdd5d..d84c325c5a 100644 --- a/addons/dogtags/functions/fnc_sendDogtagData.sqf +++ b/addons/dogtags/functions/fnc_sendDogtagData.sqf @@ -27,4 +27,4 @@ if (_index >= 0) then { _nickname = _allDogtagNicknames select _index; }; -[QGVAR(showDogtag), [_target], [_nickname]] call EFUNC(common,targetEvent); +[QGVAR(showDogtag), [_nickname], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/dogtags/functions/fnc_takeDogtag.sqf b/addons/dogtags/functions/fnc_takeDogtag.sqf index 25a5b33389..585f89b697 100644 --- a/addons/dogtags/functions/fnc_takeDogtag.sqf +++ b/addons/dogtags/functions/fnc_takeDogtag.sqf @@ -20,5 +20,5 @@ if (_target getVariable [QGVAR(dogtagTaken), false]) then { [localize LSTRING(dogtagAlreadyTaken)] call EFUNC(common,displayText); } else { _target setVariable [QGVAR(dogtagTaken), true, true]; - [QGVAR(getDogtagItem), [_player, _target]] call EFUNC(common,serverEvent); + [QGVAR(getDogtagItem), [_player, _target]] call CBA_fnc_serverEvent; }; From c0e412211e800be54b673d2fee79e54bc1744079 Mon Sep 17 00:00:00 2001 From: voiper Date: Mon, 13 Jun 2016 18:07:46 -0700 Subject: [PATCH 09/85] More realistic chemlight impact sounds. --- addons/grenades/CfgAmmo.hpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/addons/grenades/CfgAmmo.hpp b/addons/grenades/CfgAmmo.hpp index d296972539..12f9b54c20 100644 --- a/addons/grenades/CfgAmmo.hpp +++ b/addons/grenades/CfgAmmo.hpp @@ -108,4 +108,23 @@ class CfgAmmo { effectsSmoke = "ACE_M84FlashbangEffect"; whistleDist = 0; }; + + class Chemlight_base: SmokeShell { + soundImpactHard1[] = {"A3\sounds_f\characters\footsteps\concrete_run_1",1,1.8,65}; + soundImpactHard2[] = {"A3\sounds_f\characters\footsteps\concrete_run_1",1,1.9,65}; + soundImpactHard3[] = {"A3\sounds_f\characters\footsteps\concrete_run_1",1,1.6,65}; + soundImpactHard4[] = {"A3\sounds_f\characters\footsteps\concrete_run_1",1,2,65}; + soundImpactHard5[] = {"A3\sounds_f\characters\footsteps\concrete_run_1",1,1.5,65}; + soundImpactHard6[] = {"A3\sounds_f\characters\footsteps\concrete_run_1",1,1.7,65}; + soundImpactHard7[] = {"A3\sounds_f\characters\footsteps\concrete_run_1",1,2.1,65}; + soundImpactIron1[] = {"A3\sounds_f\characters\footsteps\concrete_run_1",1,2.1,95}; + soundImpactIron2[] = {"A3\sounds_f\characters\footsteps\steel_run_4",1,1.75,95}; + soundImpactIron3[] = {"A3\sounds_f\characters\footsteps\steel_run_4",1,1.6,95}; + soundImpactIron4[] = {"A3\sounds_f\characters\footsteps\steel_run_2",1,2,95}; + soundImpactIron5[] = {"A3\sounds_f\characters\footsteps\steel_run_2",1,2.1,95}; + soundImpactWoodExt1[] = {"A3\sounds_f\characters\footsteps\wood_run_ext_1",1,1.1,75}; + soundImpactWoodExt2[] = {"A3\sounds_f\characters\footsteps\wood_run_ext_1",1,1.15,75}; + soundImpactWoodExt3[] = {"A3\sounds_f\characters\footsteps\wood_run_ext_2",1,1.1,75}; + soundImpactWoodExt4[] = {"A3\sounds_f\characters\footsteps\wood_run_ext_2",1,1.15,75}; + }; }; From 3070b2ac6eeb87cb7545fc2c6e97fa1155fa1441 Mon Sep 17 00:00:00 2001 From: voiper Date: Wed, 15 Jun 2016 18:16:28 -0700 Subject: [PATCH 10/85] Sounds are sourced from configs. Used impactGroundSoft[] as shortcut. --- addons/grenades/CfgAmmo.hpp | 11 ++++------ .../grenades/functions/fnc_throwGrenade.sqf | 20 +++++-------------- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/addons/grenades/CfgAmmo.hpp b/addons/grenades/CfgAmmo.hpp index 12f9b54c20..74f0677c3c 100644 --- a/addons/grenades/CfgAmmo.hpp +++ b/addons/grenades/CfgAmmo.hpp @@ -2,13 +2,8 @@ class CfgAmmo { class Default; class Grenade: Default { - soundImpactSoft1[] = {"",1,1,1}; - soundImpactSoft2[] = {"",1,1,1}; - soundImpactSoft3[] = {"",1,1,1}; - soundImpactSoft4[] = {"",1,1,1}; - soundImpactSoft5[] = {"",1,1,1}; - soundImpactSoft6[] = {"",1,1,1}; - soundImpactSoft7[] = {"",1,1,1}; + GVAR(pullPinSound)[] = {"A3\sounds_f\weapons\grenades\Grenade_PullPin.wss", 1.5, 1, 10}; + impactGroundSoft[] = {}; }; class FlareCore; @@ -62,6 +57,7 @@ class CfgAmmo { class ACE_G_Handflare_White: SmokeShell { GVAR(flare) = 1; GVAR(color)[] = {0.5,0.5,0.5,0.5}; + GVAR(pullPinSound)[] = {"A3\sounds_f\weapons\smokeshell\smoke_1.wss", 0.4, 1, 10}; model = "\A3\weapons_f\ammo\flare_white"; dangerRadiusHit = -1; suppressionRadiusHit = -1; @@ -110,6 +106,7 @@ class CfgAmmo { }; class Chemlight_base: SmokeShell { + GVAR(pullPinSound)[] = {"A3\sounds_f\weapons\Other\dry4.wss", 3, 2, 10}; soundImpactHard1[] = {"A3\sounds_f\characters\footsteps\concrete_run_1",1,1.8,65}; soundImpactHard2[] = {"A3\sounds_f\characters\footsteps\concrete_run_1",1,1.9,65}; soundImpactHard3[] = {"A3\sounds_f\characters\footsteps\concrete_run_1",1,1.6,65}; diff --git a/addons/grenades/functions/fnc_throwGrenade.sqf b/addons/grenades/functions/fnc_throwGrenade.sqf index e60b987387..a54a8400ad 100644 --- a/addons/grenades/functions/fnc_throwGrenade.sqf +++ b/addons/grenades/functions/fnc_throwGrenade.sqf @@ -29,21 +29,11 @@ private _config = configFile >> "CfgAmmo" >> _ammo; // handle special grenades and sounds if (local _unit) then { - // handle priming sound, if not IR grenade - if (_ammo isKindOf "GrenadeHand") then { - private _posASLProjectile = getPosASL _projectile; - - switch (true) do { - case (_ammo isKindOf "Chemlight_base"): { - playSound3D ["A3\sounds_f\weapons\Other\dry4.wss", objNull, false, _posASLProjectile, 3, 2, 10] - }; - case (_ammo isKindOf "ACE_G_Handflare_White"): { - playSound3D ["A3\sounds_f\weapons\smokeshell\smoke_1.wss", objNull, false, _posASLProjectile, 0.4, 1, 10] - }; - default { - playSound3D ["A3\sounds_f\weapons\grenades\Grenade_PullPin.wss", objNull, false, _posASLProjectile, 1.5, 1, 10] - }; - }; + // handle priming sound, if present + private _soundConfig = getArray (configFile >> "CfgAmmo" >> _ammo >> QGVAR(pullPinSound)); + if (count _soundConfig > 0) then { + _soundConfig params ["_file", "_volume", "_pitch", "_distance"]; + playSound3D [_file, objNull, false, getPosASL _projectile, _volume, _pitch, _distance]; }; if (getNumber (_config >> QGVAR(flashbang)) == 1) then { From f28f90b6245bf4d8579d9b0a642b6c182d0a05cb Mon Sep 17 00:00:00 2001 From: voiper Date: Thu, 16 Jun 2016 12:21:40 -0700 Subject: [PATCH 11/85] Use isEqualTo. --- addons/grenades/functions/fnc_throwGrenade.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/grenades/functions/fnc_throwGrenade.sqf b/addons/grenades/functions/fnc_throwGrenade.sqf index a54a8400ad..1ea14f9d73 100644 --- a/addons/grenades/functions/fnc_throwGrenade.sqf +++ b/addons/grenades/functions/fnc_throwGrenade.sqf @@ -31,7 +31,7 @@ private _config = configFile >> "CfgAmmo" >> _ammo; if (local _unit) then { // handle priming sound, if present private _soundConfig = getArray (configFile >> "CfgAmmo" >> _ammo >> QGVAR(pullPinSound)); - if (count _soundConfig > 0) then { + if !(_soundConfig isEqualTo []) then { _soundConfig params ["_file", "_volume", "_pitch", "_distance"]; playSound3D [_file, objNull, false, getPosASL _projectile, _volume, _pitch, _distance]; }; From deb9e0d75cd4e9c1b4915e160df30e6476c11668 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Wed, 8 Jun 2016 20:35:33 +0200 Subject: [PATCH 12/85] Added custom smoke particles --- addons/particles/$PBOPREFIX$ | 1 + addons/particles/CfgAmmo.hpp | 61 +++++++++++++ addons/particles/CfgCloudlets.hpp | 125 ++++++++++++++++++++++++++ addons/particles/Effects.hpp | 65 ++++++++++++++ addons/particles/config.cpp | 18 ++++ addons/particles/data/smoke.p3d | Bin 0 -> 390 bytes addons/particles/data/smoke_ca.paa | Bin 0 -> 44611 bytes addons/particles/script_component.hpp | 17 ++++ 8 files changed, 287 insertions(+) create mode 100644 addons/particles/$PBOPREFIX$ create mode 100644 addons/particles/CfgAmmo.hpp create mode 100644 addons/particles/CfgCloudlets.hpp create mode 100644 addons/particles/Effects.hpp create mode 100644 addons/particles/config.cpp create mode 100644 addons/particles/data/smoke.p3d create mode 100644 addons/particles/data/smoke_ca.paa create mode 100644 addons/particles/script_component.hpp diff --git a/addons/particles/$PBOPREFIX$ b/addons/particles/$PBOPREFIX$ new file mode 100644 index 0000000000..b93724589d --- /dev/null +++ b/addons/particles/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\particles diff --git a/addons/particles/CfgAmmo.hpp b/addons/particles/CfgAmmo.hpp new file mode 100644 index 0000000000..68a6ebfda1 --- /dev/null +++ b/addons/particles/CfgAmmo.hpp @@ -0,0 +1,61 @@ +class CfgAmmo { + class GrenadeHand; + + // - Smoke hand grenades -------------------------------------------------- + class SmokeShell: GrenadeHand { + smokeColor[] = {1, 1, 1, 1}; + }; + class SmokeShellRed: SmokeShell { + smokeColor[] = {0.9528, 0.0438, 0.0410, 1}; + }; + class SmokeShellGreen: SmokeShell { + smokeColor[] = {0.0328, 0.1626, 0.1023, 1}; + }; + class SmokeShellYellow: SmokeShell { + smokeColor[] = {0.9610, 0.4505, 0.0109, 1}; + }; + class SmokeShellPurple: SmokeShell { + smokeColor[] = {0.4622, 0.0578, 0.3154, 1}; + }; + class SmokeShellBlue: SmokeShell { + smokeColor[] = {0.0355, 0.1863, 1.0000, 1}; + }; + class SmokeShellOrange: SmokeShell { + smokeColor[] = {0.9132, 0.1763, 0.0070, 1}; + }; + + // - 40mm smoke grenades -------------------------------------------------- + class G_40mm_Smoke: SmokeShell { + smokeColor[] = {1, 1, 1, 1}; + }; + class G_40mm_SmokeRed: G_40mm_Smoke { + smokeColor[] = {0.9528, 0.0438, 0.0410, 1}; + }; + class G_40mm_SmokeGreen: G_40mm_Smoke { + smokeColor[] = {0.0328, 0.1626, 0.1023, 1}; + }; + class G_40mm_SmokeYellow: G_40mm_Smoke { + smokeColor[] = {0.9610, 0.4505, 0.0109, 1}; + }; + class G_40mm_SmokePurple: G_40mm_Smoke { + smokeColor[] = {0.4622, 0.0578, 0.3154, 1}; + }; + class G_40mm_SmokeBlue: G_40mm_Smoke { + smokeColor[] = {0.0355, 0.1863, 1.0000, 1}; + }; + class G_40mm_SmokeOrange: G_40mm_Smoke { + smokeColor[] = {0.9132, 0.1763, 0.0070, 1}; + }; + + // - Artillery smoke submunition ------------------------------------------ + class SmokeShellArty: SmokeShell { + explosionTime = 0; + effectsSmoke = "ACE_ArtillerySmoke"; + }; + + // - 120mm/155mm artillery smoke ------------------------------------------ + class SubmunitionBase; + class Smoke_120mm_AMOS_White: SubmunitionBase { + submunitionConeAngle = 10; + }; +}; diff --git a/addons/particles/CfgCloudlets.hpp b/addons/particles/CfgCloudlets.hpp new file mode 100644 index 0000000000..769ab3ff14 --- /dev/null +++ b/addons/particles/CfgCloudlets.hpp @@ -0,0 +1,125 @@ +class CfgCloudlets { + class Default; + + // - Surface smoke -------------------------------------------------------- + class ACE_SmokeBaseLarge: Default { + colorCoef[] = {"colorR", "colorG", "colorB", "colorA"}; + sizeCoef = 1; + position[] = {0, 0, 0}; + interval = 0.05; + circleRadius = 0; + circleVelocity[] = {0, 0, 0}; + particleShape = QUOTE(PATHTOF(data\smoke.p3d)); + particleFSNtieth = 1; + particleFSIndex = 0; + particleFSFrameCount = 1; + particleFSLoop = 0; + angleVar = 0.1; + animationName = ""; + particleType = "Billboard"; + timerPeriod = 1; + lifeTime = 30; + lifeTimeVar = 2; + animationSpeed[] = {1}; + animationSpeedCoef = 1; + randomDirectionPeriod = 1; + randomDirectionPeriodVar = 0; + randomDirectionIntensity = 0.2; + randomDirectionIntensityVar = 0; + destroyOnWaterSurface = 1; + destroyOnWaterSurfaceOffset = -0.6; + positionVar[] = {0, 0, 0}; + moveVelocityVar[] = {0.25, 0.25, 0.25}; + colorVar[] = {0, 0, 0, 0}; + color[] = { + {0.5, 0.5, 0.5, 1}, + {0.5, 0.5, 0.5, 0.7}, + {0.5, 0.5, 0.5, 0.5}, + {0.5, 0.5, 0.5, 0.5}, + {0.5, 0.5, 0.5, 0.1}, + {0.5, 0.5, 0.5, 0} + }; + size[] = {0.05, 7, 15, 20}; + sizeVar = 0.5; + weight = 1.2777; + moveVelocity[] = {0, 0, 0}; + rotationVelocity = 0; + rotationVelocityVar = 20; + volume = 1; + rubbing = 0.1; + onTimerScript = ""; + beforeDestroyScript = ""; + blockAIVisibility = 1; + }; + class ACE_SmokeBaseSmall: ACE_SmokeBaseLarge { + size[] = {0.05, 5, 7.5, 10}; + }; + + // - Artillery smoke ------------------------------------------------------ + class ACE_SmokeBaseArtilleryLarge: ACE_SmokeBaseLarge { + lifeTime = 45; + }; + class ACE_SmokeBaseArtillerySmall: ACE_SmokeBaseSmall { + lifeTime = 45; + }; + + // - Smoke on water surface ----------------------------------------------- + class ACE_SmokeAfterWater: ACE_SmokeBaseLarge { + interval = 0.05; + size[] = {0.05, 2, 5}; + sizeVar = 1; + lifeTime = 10; + color[] = { + {0.5, 0.5, 0.5, 0.07}, + {0.5, 0.5, 0.5, 0} + }; + moveVelocityVar[] = {0, 0, 0}; + colorCoef[] = {1, 1, 1, 1}; + }; + class ACE_SmokeAfterWaterRed: ACE_SmokeAfterWater { + colorCoef[] = {0.9528, 0.0438, 0.0410, 1}; + }; + class ACE_SmokeAfterWaterGreen: ACE_SmokeAfterWater { + colorCoef[] = {0.0328, 0.1626, 0.1023, 1}; + }; + class ACE_SmokeAfterWaterYellow: ACE_SmokeAfterWater { + colorCoef[] = {0.9610, 0.4505, 0.0109, 1}; + }; + class ACE_SmokeAfterWaterPurple: ACE_SmokeAfterWater { + colorCoef[] = {0.4622, 0.0578, 0.3154, 1}; + }; + class ACE_SmokeAfterWaterBlue: ACE_SmokeAfterWater { + colorCoef[] = {0.0355, 0.1863, 1.0000, 1}; + }; + class ACE_SmokeAfterWaterOrange: ACE_SmokeAfterWater { + colorCoef[] = {0.9132, 0.1763, 0.0070, 1}; + }; + class SmokeShellWhiteUW; + class SmokeShellWhite2UW: SmokeShellWhiteUW { + postEffects = "ACE_SmokeAfterWater"; + }; + class SmokeShellRedUW; + class SmokeShellRed2UW: SmokeShellRedUW { + postEffects = "ACE_SmokeAfterWaterRed"; + }; + class SmokeShellGreenUW; + class SmokeShellGreen2UW: SmokeShellGreenUW { + postEffects = "ACE_SmokeAfterWaterGreen"; + }; + class SmokeShellYellowUW; + class SmokeShellYellow2UW: SmokeShellYellowUW { + postEffects = "ACE_SmokeAfterWaterYellow"; + }; + class SmokeShellPurpleUW; + class SmokeShellPurple2UW: SmokeShellPurpleUW { + postEffects = "ACE_SmokeAfterWaterPurple"; + }; + class SmokeShellBlueUW; + class SmokeShellBlue2UW: SmokeShellBlueUW { + postEffects = "ACE_SmokeAfterWaterBlue"; + }; + class SmokeShellOrangeUW; + class SmokeShellOrange2UW: SmokeShellOrangeUW { + postEffects = "ACE_SmokeAfterWaterOrange"; + }; +}; diff --git a/addons/particles/Effects.hpp b/addons/particles/Effects.hpp new file mode 100644 index 0000000000..153416f063 --- /dev/null +++ b/addons/particles/Effects.hpp @@ -0,0 +1,65 @@ +class SmokeShellWhiteEffect { + class SmokeShell { + type = "ACE_SmokeBaseLarge"; + }; + class SmokeShell2 { + type = "ACE_SmokeBaseSmall"; + }; +}; + +class ACE_ArtillerySmoke { + class SmokeShell { + type = "ACE_SmokeBaseArtilleryLarge"; + simulation = "particles"; + position[] = {0, 0, 0}; + intensity = 1; + interval = 1; + }; + class SmokeShell2 { + type = "ACE_SmokeBaseArtillerySmall"; + simulation = "particles"; + position[] = {0, 0, 0}; + intensity = 1; + interval = 1; + }; +}; + +class ACE_SmokeAfterWater { + class SmokeAfterWater { + type = "ACE_SmokeAfterWater"; + simulation = "particles"; + position[] = {0, 0, 0}; + intensity = 1; + interval = 1; + }; +}; +class ACE_SmokeAfterWaterRed: ACE_SmokeAfterWater { + class SmokeAfterWater: SmokeAfterWater { + type = "ACE_SmokeAfterWaterRed"; + }; +}; +class ACE_SmokeAfterWaterGreen: ACE_SmokeAfterWater { + class SmokeAfterWater: SmokeAfterWater { + type = "ACE_SmokeAfterWaterGreen"; + }; +}; +class ACE_SmokeAfterWaterYellow: ACE_SmokeAfterWater { + class SmokeAfterWater: SmokeAfterWater { + type = "ACE_SmokeAfterWaterYellow"; + }; +}; +class ACE_SmokeAfterWaterPurple: ACE_SmokeAfterWater { + class SmokeAfterWater: SmokeAfterWater { + type = "ACE_SmokeAfterWaterPurple"; + }; +}; +class ACE_SmokeAfterWaterOrange: ACE_SmokeAfterWater { + class SmokeAfterWater: SmokeAfterWater { + type = "ACE_SmokeAfterWaterOrange"; + }; +}; +class ACE_SmokeAfterWaterBlue: ACE_SmokeAfterWater { + class SmokeAfterWater: SmokeAfterWater { + type = "ACE_SmokeAfterWaterBlue"; + }; +}; diff --git a/addons/particles/config.cpp b/addons/particles/config.cpp new file mode 100644 index 0000000000..c7f5828046 --- /dev/null +++ b/addons/particles/config.cpp @@ -0,0 +1,18 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author = ECSTRING(common,ACETeam); + authors[] = {""}; + url = ECSTRING(main,URL); + VERSION_CONFIG; + }; +}; + +#include "CfgAmmo.hpp" +#include "CfgCloudlets.hpp" +#include "Effects.hpp" diff --git a/addons/particles/data/smoke.p3d b/addons/particles/data/smoke.p3d new file mode 100644 index 0000000000000000000000000000000000000000..c1617a0e33ed0b9f8a3d0c9d34d55b646534a4e0 GIT binary patch literal 390 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

-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

-7F{N_Ux=*hf&`{ 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 Ju@^L4{{xDV1$+Pi literal 0 HcmV?d00001 diff --git a/addons/particles/script_component.hpp b/addons/particles/script_component.hpp new file mode 100644 index 0000000000..3afc7af7e3 --- /dev/null +++ b/addons/particles/script_component.hpp @@ -0,0 +1,17 @@ +#define COMPONENT particles +#include "\z\ace\addons\main\script_mod.hpp" + +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE +// #define CBA_DEBUG_SYNCHRONOUS +// #define ENABLE_PERFORMANCE_COUNTERS + +#ifdef DEBUG_ENABLED_PARTICLES + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_PARTICLES + #define DEBUG_SETTINGS DEBUG_SETTINGS_PARTICLES +#endif + +#include "\z\ace\addons\main\script_macros.hpp" From 58c061553c6c69addd4270283b630e4db15d480b Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sun, 19 Jun 2016 23:46:41 +0200 Subject: [PATCH 13/85] Added readme and author --- addons/particles/README.md | 10 ++++++++++ addons/particles/config.cpp | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 addons/particles/README.md diff --git a/addons/particles/README.md b/addons/particles/README.md new file mode 100644 index 0000000000..5f03b880b2 --- /dev/null +++ b/addons/particles/README.md @@ -0,0 +1,10 @@ +ace_particles +========== + +Changes smoke particles from smoke hand grenades, 40mm grenades and artillery shells to be more realistic and useful. + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [BaerMitUmlaut](https://github.com/BaerMitUmlaut) diff --git a/addons/particles/config.cpp b/addons/particles/config.cpp index c7f5828046..ad1747529c 100644 --- a/addons/particles/config.cpp +++ b/addons/particles/config.cpp @@ -7,7 +7,7 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); - authors[] = {""}; + authors[] = {"BaerMitUmlaut"}; url = ECSTRING(main,URL); VERSION_CONFIG; }; From f0e4e5d2e88e1d91fb2d165341c4a0c5be18065f Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sun, 19 Jun 2016 23:48:23 +0200 Subject: [PATCH 14/85] Tweaked particles, added macros, tweaked burn times --- addons/particles/CfgAmmo.hpp | 38 ++++++++---- addons/particles/CfgCloudlets.hpp | 87 ++++++++++++--------------- addons/particles/Effects.hpp | 62 +++++++++---------- addons/particles/script_component.hpp | 40 ++++++++++++ 4 files changed, 135 insertions(+), 92 deletions(-) diff --git a/addons/particles/CfgAmmo.hpp b/addons/particles/CfgAmmo.hpp index 68a6ebfda1..6065a0b818 100644 --- a/addons/particles/CfgAmmo.hpp +++ b/addons/particles/CfgAmmo.hpp @@ -4,47 +4,61 @@ class CfgAmmo { // - Smoke hand grenades -------------------------------------------------- class SmokeShell: GrenadeHand { smokeColor[] = {1, 1, 1, 1}; + timeToLive = 90; }; class SmokeShellRed: SmokeShell { - smokeColor[] = {0.9528, 0.0438, 0.0410, 1}; + smokeColor[] = SMOKE_COLOR_RED; + timeToLive = 60; }; class SmokeShellGreen: SmokeShell { - smokeColor[] = {0.0328, 0.1626, 0.1023, 1}; + smokeColor[] = SMOKE_COLOR_GREEN; + timeToLive = 60; }; class SmokeShellYellow: SmokeShell { - smokeColor[] = {0.9610, 0.4505, 0.0109, 1}; + smokeColor[] = SMOKE_COLOR_YELLOW; + timeToLive = 60; }; class SmokeShellPurple: SmokeShell { - smokeColor[] = {0.4622, 0.0578, 0.3154, 1}; + smokeColor[] = SMOKE_COLOR_PURPLE; + timeToLive = 60; }; class SmokeShellBlue: SmokeShell { - smokeColor[] = {0.0355, 0.1863, 1.0000, 1}; + smokeColor[] = SMOKE_COLOR_BLUE; + timeToLive = 60; }; class SmokeShellOrange: SmokeShell { - smokeColor[] = {0.9132, 0.1763, 0.0070, 1}; + smokeColor[] = SMOKE_COLOR_ORANGE; + timeToLive = 60; }; // - 40mm smoke grenades -------------------------------------------------- class G_40mm_Smoke: SmokeShell { smokeColor[] = {1, 1, 1, 1}; + timeToLive = 40; }; class G_40mm_SmokeRed: G_40mm_Smoke { - smokeColor[] = {0.9528, 0.0438, 0.0410, 1}; + smokeColor[] = SMOKE_COLOR_RED; + timeToLive = 40; }; class G_40mm_SmokeGreen: G_40mm_Smoke { - smokeColor[] = {0.0328, 0.1626, 0.1023, 1}; + smokeColor[] = SMOKE_COLOR_GREEN; + timeToLive = 40; }; class G_40mm_SmokeYellow: G_40mm_Smoke { - smokeColor[] = {0.9610, 0.4505, 0.0109, 1}; + smokeColor[] = SMOKE_COLOR_YELLOW; + timeToLive = 40; }; class G_40mm_SmokePurple: G_40mm_Smoke { - smokeColor[] = {0.4622, 0.0578, 0.3154, 1}; + smokeColor[] = SMOKE_COLOR_PURPLE; + timeToLive = 40; }; class G_40mm_SmokeBlue: G_40mm_Smoke { - smokeColor[] = {0.0355, 0.1863, 1.0000, 1}; + smokeColor[] = SMOKE_COLOR_BLUE; + timeToLive = 40; }; class G_40mm_SmokeOrange: G_40mm_Smoke { - smokeColor[] = {0.9132, 0.1763, 0.0070, 1}; + smokeColor[] = SMOKE_COLOR_ORANGE; + timeToLive = 40; }; // - Artillery smoke submunition ------------------------------------------ diff --git a/addons/particles/CfgCloudlets.hpp b/addons/particles/CfgCloudlets.hpp index 769ab3ff14..955acecb95 100644 --- a/addons/particles/CfgCloudlets.hpp +++ b/addons/particles/CfgCloudlets.hpp @@ -1,7 +1,7 @@ class CfgCloudlets { class Default; - // - Surface smoke -------------------------------------------------------- + // - Smoke hand grenades -------------------------------------------------- class ACE_SmokeBaseLarge: Default { colorCoef[] = {"colorR", "colorG", "colorB", "colorA"}; sizeCoef = 1; @@ -29,7 +29,6 @@ class CfgCloudlets { destroyOnWaterSurface = 1; destroyOnWaterSurfaceOffset = -0.6; positionVar[] = {0, 0, 0}; - moveVelocityVar[] = {0.25, 0.25, 0.25}; colorVar[] = {0, 0, 0, 0}; color[] = { {0.5, 0.5, 0.5, 1}, @@ -39,10 +38,11 @@ class CfgCloudlets { {0.5, 0.5, 0.5, 0.1}, {0.5, 0.5, 0.5, 0} }; - size[] = {0.05, 7, 15, 20}; + size[] = {0.05, 4, 12, 16}; sizeVar = 0.5; weight = 1.2777; moveVelocity[] = {0, 0, 0}; + moveVelocityVar[] = {0.25, 0.25, 0.25}; rotationVelocity = 0; rotationVelocityVar = 20; volume = 1; @@ -51,11 +51,23 @@ class CfgCloudlets { beforeDestroyScript = ""; blockAIVisibility = 1; }; + class ACE_SmokeBaseMedium: ACE_SmokeBaseLarge { + size[] = {0.05, 3, 9, 12}; + moveVelocityVar[] = {0.20, 0.20, 0.20}; + }; class ACE_SmokeBaseSmall: ACE_SmokeBaseLarge { - size[] = {0.05, 5, 7.5, 10}; + size[] = {0.05, 2, 6, 8}; + moveVelocityVar[] = {0.15, 0.15, 0.15}; }; - // - Artillery smoke ------------------------------------------------------ + // - 40mm smoke grenades -------------------------------------------------- + class ACE_SmokeBase40mm: ACE_SmokeBaseLarge { + lifeTime = 15; + size[] = {0.05, 2.5, 7.5, 10}; + moveVelocityVar[] = {0.10, 0.10, 0.10}; + }; + + // - Artillery smoke submunition ------------------------------------------ class ACE_SmokeBaseArtilleryLarge: ACE_SmokeBaseLarge { lifeTime = 45; }; @@ -64,62 +76,41 @@ class CfgCloudlets { }; // - Smoke on water surface ----------------------------------------------- - class ACE_SmokeAfterWater: ACE_SmokeBaseLarge { + class ACE_SmokeAfterWaterWhite: ACE_SmokeBaseLarge { interval = 0.05; - size[] = {0.05, 2, 5}; + size[] = {0.05, 2, 6}; sizeVar = 1; lifeTime = 10; color[] = { - {0.5, 0.5, 0.5, 0.07}, + {0.5, 0.5, 0.5, 0.1}, {0.5, 0.5, 0.5, 0} }; moveVelocityVar[] = {0, 0, 0}; colorCoef[] = {1, 1, 1, 1}; }; - class ACE_SmokeAfterWaterRed: ACE_SmokeAfterWater { - colorCoef[] = {0.9528, 0.0438, 0.0410, 1}; + class ACE_SmokeAfterWaterRed: ACE_SmokeAfterWaterWhite { + colorCoef[] = SMOKE_COLOR_RED; }; - class ACE_SmokeAfterWaterGreen: ACE_SmokeAfterWater { - colorCoef[] = {0.0328, 0.1626, 0.1023, 1}; + class ACE_SmokeAfterWaterGreen: ACE_SmokeAfterWaterWhite { + colorCoef[] = SMOKE_COLOR_GREEN; }; - class ACE_SmokeAfterWaterYellow: ACE_SmokeAfterWater { - colorCoef[] = {0.9610, 0.4505, 0.0109, 1}; + class ACE_SmokeAfterWaterYellow: ACE_SmokeAfterWaterWhite { + colorCoef[] = SMOKE_COLOR_YELLOW; }; - class ACE_SmokeAfterWaterPurple: ACE_SmokeAfterWater { - colorCoef[] = {0.4622, 0.0578, 0.3154, 1}; + class ACE_SmokeAfterWaterPurple: ACE_SmokeAfterWaterWhite { + colorCoef[] = SMOKE_COLOR_PURPLE; }; - class ACE_SmokeAfterWaterBlue: ACE_SmokeAfterWater { - colorCoef[] = {0.0355, 0.1863, 1.0000, 1}; + class ACE_SmokeAfterWaterBlue: ACE_SmokeAfterWaterWhite { + colorCoef[] = SMOKE_COLOR_BLUE; }; - class ACE_SmokeAfterWaterOrange: ACE_SmokeAfterWater { - colorCoef[] = {0.9132, 0.1763, 0.0070, 1}; - }; - class SmokeShellWhiteUW; - class SmokeShellWhite2UW: SmokeShellWhiteUW { - postEffects = "ACE_SmokeAfterWater"; - }; - class SmokeShellRedUW; - class SmokeShellRed2UW: SmokeShellRedUW { - postEffects = "ACE_SmokeAfterWaterRed"; - }; - class SmokeShellGreenUW; - class SmokeShellGreen2UW: SmokeShellGreenUW { - postEffects = "ACE_SmokeAfterWaterGreen"; - }; - class SmokeShellYellowUW; - class SmokeShellYellow2UW: SmokeShellYellowUW { - postEffects = "ACE_SmokeAfterWaterYellow"; - }; - class SmokeShellPurpleUW; - class SmokeShellPurple2UW: SmokeShellPurpleUW { - postEffects = "ACE_SmokeAfterWaterPurple"; - }; - class SmokeShellBlueUW; - class SmokeShellBlue2UW: SmokeShellBlueUW { - postEffects = "ACE_SmokeAfterWaterBlue"; - }; - class SmokeShellOrangeUW; - class SmokeShellOrange2UW: SmokeShellOrangeUW { - postEffects = "ACE_SmokeAfterWaterOrange"; + class ACE_SmokeAfterWaterOrange: ACE_SmokeAfterWaterWhite { + colorCoef[] = SMOKE_COLOR_ORANGE; }; + CLOUDLET_UNDERWATER(White); + CLOUDLET_UNDERWATER(Red); + CLOUDLET_UNDERWATER(Green); + CLOUDLET_UNDERWATER(Yellow); + CLOUDLET_UNDERWATER(Purple); + CLOUDLET_UNDERWATER(Orange); + CLOUDLET_UNDERWATER(Blue); }; diff --git a/addons/particles/Effects.hpp b/addons/particles/Effects.hpp index 153416f063..0a208cdae6 100644 --- a/addons/particles/Effects.hpp +++ b/addons/particles/Effects.hpp @@ -1,3 +1,4 @@ +// - Smoke hand grenades ------------------------------------------------------ class SmokeShellWhiteEffect { class SmokeShell { type = "ACE_SmokeBaseLarge"; @@ -6,7 +7,27 @@ class SmokeShellWhiteEffect { type = "ACE_SmokeBaseSmall"; }; }; +EFFECT_HANDGRENADE(Red); +EFFECT_HANDGRENADE(Green); +EFFECT_HANDGRENADE(Yellow); +EFFECT_HANDGRENADE(Purple); +EFFECT_HANDGRENADE(Orange); +EFFECT_HANDGRENADE(Blue); +// - 40mm smoke grenades ------------------------------------------------------ +class ACE_40mmSmokeShellWhiteEffect: SmokeShellWhiteEffect { + class SmokeShell: SmokeShell { + type = "ACE_SmokeBase40mm"; + }; +}; +EFFECT_40MM(Red); +EFFECT_40MM(Green); +EFFECT_40MM(Yellow); +EFFECT_40MM(Purple); +EFFECT_40MM(Orange); +EFFECT_40MM(Blue); + +// - 120mm/155mm artillery smoke ---------------------------------------------- class ACE_ArtillerySmoke { class SmokeShell { type = "ACE_SmokeBaseArtilleryLarge"; @@ -24,42 +45,19 @@ class ACE_ArtillerySmoke { }; }; -class ACE_SmokeAfterWater { +// - Smoke on water surface --------------------------------------------------- +class ACE_SmokeAfterWaterWhite { class SmokeAfterWater { - type = "ACE_SmokeAfterWater"; + type = "ACE_SmokeAfterWaterWhite"; simulation = "particles"; position[] = {0, 0, 0}; intensity = 1; interval = 1; }; }; -class ACE_SmokeAfterWaterRed: ACE_SmokeAfterWater { - class SmokeAfterWater: SmokeAfterWater { - type = "ACE_SmokeAfterWaterRed"; - }; -}; -class ACE_SmokeAfterWaterGreen: ACE_SmokeAfterWater { - class SmokeAfterWater: SmokeAfterWater { - type = "ACE_SmokeAfterWaterGreen"; - }; -}; -class ACE_SmokeAfterWaterYellow: ACE_SmokeAfterWater { - class SmokeAfterWater: SmokeAfterWater { - type = "ACE_SmokeAfterWaterYellow"; - }; -}; -class ACE_SmokeAfterWaterPurple: ACE_SmokeAfterWater { - class SmokeAfterWater: SmokeAfterWater { - type = "ACE_SmokeAfterWaterPurple"; - }; -}; -class ACE_SmokeAfterWaterOrange: ACE_SmokeAfterWater { - class SmokeAfterWater: SmokeAfterWater { - type = "ACE_SmokeAfterWaterOrange"; - }; -}; -class ACE_SmokeAfterWaterBlue: ACE_SmokeAfterWater { - class SmokeAfterWater: SmokeAfterWater { - type = "ACE_SmokeAfterWaterBlue"; - }; -}; +EFFECT_AFTER_WATER(Red); +EFFECT_AFTER_WATER(Green); +EFFECT_AFTER_WATER(Yellow); +EFFECT_AFTER_WATER(Purple); +EFFECT_AFTER_WATER(Orange); +EFFECT_AFTER_WATER(Blue); diff --git a/addons/particles/script_component.hpp b/addons/particles/script_component.hpp index 3afc7af7e3..f3d4bbd853 100644 --- a/addons/particles/script_component.hpp +++ b/addons/particles/script_component.hpp @@ -15,3 +15,43 @@ #endif #include "\z\ace\addons\main\script_macros.hpp" + +#define SMOKE_COLOR_RED {0.9528, 0.0438, 0.0410, 0.8} +#define SMOKE_COLOR_GREEN {0.0328, 0.1626, 0.1023, 0.8} +#define SMOKE_COLOR_YELLOW {0.9610, 0.4505, 0.0109, 0.8} +#define SMOKE_COLOR_PURPLE {0.4622, 0.0578, 0.3154, 0.8} +#define SMOKE_COLOR_BLUE {0.0355, 0.1863, 1.0000, 0.8} +#define SMOKE_COLOR_ORANGE {0.9132, 0.1763, 0.0070, 0.8} + +#define EFFECT_HANDGRENADE(color) class SmokeShell##color##Effect: SmokeShellWhiteEffect { \ + class SmokeShell: SmokeShell { \ + type = "ACE_SmokeBaseMedium"; \ + }; \ +} +#define EFFECT_40MM(color) class ACE_40mmSmokeShell##color##Effect: ACE_40mmSmokeShellWhiteEffect { \ + class SmokeShellUW { \ + simulation = "particles"; \ + type = QUOTE(SmokeShell##color##UW); \ + position[] = {0, 0, 0}; \ + intensity = 1; \ + interval = 1; \ + }; \ + class SmokeShell2UW { \ + simulation = "particles"; \ + type = QUOTE(SmokeShell##color##2UW); \ + position[] = {0, 0, 0}; \ + intensity = 1; \ + interval = 1; \ + }; \ +} +#define MERGE(var1,var2) var1##var2 +#define EFFECT_AFTER_WATER(color) class ACE_SmokeAfterWater##color##: ACE_SmokeAfterWaterWhite { \ + class SmokeAfterWater: SmokeAfterWater { \ + type = QUOTE(MERGE(ACE_SmokeAfterWater,color)); \ + }; \ +} + +#define CLOUDLET_UNDERWATER(color) class SmokeShell##color##UW; \ +class SmokeShell##color##2UW: SmokeShell##color##UW { \ + postEffects = QUOTE(MERGE(ACE_SmokeAfterWater,color)); \ +} From e58d829927159c145e39fac84b2645badd763866 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Mon, 20 Jun 2016 14:54:16 -0300 Subject: [PATCH 15/85] Restyle the dog tag text. --- addons/dogtags/Dogtag.hpp | 22 ++++++++++----------- addons/dogtags/functions/fnc_showDogtag.sqf | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/addons/dogtags/Dogtag.hpp b/addons/dogtags/Dogtag.hpp index aa4480a7f8..af6785d0ba 100644 --- a/addons/dogtags/Dogtag.hpp +++ b/addons/dogtags/Dogtag.hpp @@ -34,15 +34,15 @@ class RscTitles { y = safeZoneY + 0.25 * safezoneH; w = (5.9 * (((safezoneW / safezoneH) min 1.2) / 40)); h = (3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)); - font = "EtelkaMonospacePro"; + font = "RobotoCondensed"; class Attributes { - font = "EtelkaMonospacePro"; - color = "#FFFFFF"; - align = "center"; + font = "RobotoCondensed"; + color = "#EEEEEE"; + align = "left"; valign = "middle"; - shadow = 1; + shadow = 2; shadowColor = "#3f4345"; - size = "0.85"; + size = "0.80"; }; }; }; @@ -58,13 +58,13 @@ class RscTitles { }; class nickname: nickname { class Attributes: Attributes { - font = "EtelkaMonospacePro"; - color = "#FFFFFF"; - align = "center"; + font = "RobotoCondensed"; + color = "#EEEEEE"; + align = "left"; valign = "middle"; - shadow = 1; + shadow = 2; shadowColor = "#3f4345"; - size = "0.85"; + size = "0.80"; }; }; }; diff --git a/addons/dogtags/functions/fnc_showDogtag.sqf b/addons/dogtags/functions/fnc_showDogtag.sqf index 1c79728840..f1f28d25b8 100644 --- a/addons/dogtags/functions/fnc_showDogtag.sqf +++ b/addons/dogtags/functions/fnc_showDogtag.sqf @@ -27,4 +27,4 @@ private _display = uiNamespace getvariable [QGVAR(tag), displayNull]; if(isNull _display) exitWith {}; private _control = _display displayCtrl 1001; -_control ctrlSetText _nickname; +_control ctrlSetStructuredText parseText format ["%1
%2
%3", toUpper _nickName, "135-13-9001", "O POS"]; From 0d30bf1de8825fd296f549ddf67fd5550c0f6aa8 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Mon, 20 Jun 2016 15:51:36 -0300 Subject: [PATCH 16/85] - Add random service number and bloodtypes to all units. - Leave up to CBA to decide if events should be local or remote - Imp --- addons/dogtags/XEH_PREP.hpp | 1 + .../dogtags/functions/fnc_addDogtagItem.sqf | 7 ++-- addons/dogtags/functions/fnc_checkDogtag.sqf | 5 +-- .../dogtags/functions/fnc_getDogtagData.sqf | 32 +++++++++++++++++++ .../dogtags/functions/fnc_getDogtagItem.sqf | 18 ++++------- .../dogtags/functions/fnc_sendDogtagData.sqf | 10 +++--- addons/dogtags/functions/fnc_showDogtag.sqf | 10 +++--- 7 files changed, 58 insertions(+), 25 deletions(-) create mode 100644 addons/dogtags/functions/fnc_getDogtagData.sqf diff --git a/addons/dogtags/XEH_PREP.hpp b/addons/dogtags/XEH_PREP.hpp index 023cc5e733..4c54b69cf1 100644 --- a/addons/dogtags/XEH_PREP.hpp +++ b/addons/dogtags/XEH_PREP.hpp @@ -4,6 +4,7 @@ PREP(canCheckDogtag); PREP(canTakeDogtag); PREP(checkDogtag); PREP(checkDogtagItem); +PREP(getDogtagData); PREP(getDogtagItem); PREP(sendDogtagData); PREP(showDogtag); diff --git a/addons/dogtags/functions/fnc_addDogtagItem.sqf b/addons/dogtags/functions/fnc_addDogtagItem.sqf index 8349a7d62e..f4890782b0 100644 --- a/addons/dogtags/functions/fnc_addDogtagItem.sqf +++ b/addons/dogtags/functions/fnc_addDogtagItem.sqf @@ -4,7 +4,7 @@ * * Arguments: * 0: Item class - * 1: Nickname on dogtag + * 1: Dogtag data * * Return Value: * None @@ -13,11 +13,12 @@ */ #include "script_component.hpp" -params ["_item", "_nickname"]; +params ["_item", "_dogtagData"]; if (_item == "") exitWith {}; [ace_player, _item] call CBA_fnc_addItem; -private _displayText = format [localize LSTRING(takeDogtagSuccess), _nickname]; +_dogtagData params ["_nickName"]; +private _displayText = format [localize LSTRING(takeDogtagSuccess), _nickName]; [_displayText] call EFUNC(common,displayText); diff --git a/addons/dogtags/functions/fnc_checkDogtag.sqf b/addons/dogtags/functions/fnc_checkDogtag.sqf index 4c606265f6..a247d24312 100644 --- a/addons/dogtags/functions/fnc_checkDogtag.sqf +++ b/addons/dogtags/functions/fnc_checkDogtag.sqf @@ -16,5 +16,6 @@ params ["_player", "_target"]; private _doubleTags = !(_target getVariable [QGVAR(dogtagTaken), false]); -private _nickname = [_target, false, true] call EFUNC(common,getName); -[QGVAR(showDogtag), [_nickname, _doubleTags]] call CBA_fnc_localEvent; +private _dogTagData = [_target] call FUNC(getDogTagData); + +[QGVAR(showDogtag), [_dogTagData, _doubleTags]] call CBA_fnc_localEvent; diff --git a/addons/dogtags/functions/fnc_getDogtagData.sqf b/addons/dogtags/functions/fnc_getDogtagData.sqf new file mode 100644 index 0000000000..bcb4cc05a2 --- /dev/null +++ b/addons/dogtags/functions/fnc_getDogtagData.sqf @@ -0,0 +1,32 @@ +/* + * Author: esteldunedain + * Get unit dogtag data + * + * Arguments: + * 0: Target + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +params ["_target"]; + +// Check if the data was already created +private _dogTagData = _target getVariable QGVAR(dogtagData); +if (!isNil "_dogTagData") exitWith {_dogTagData}; + +// Create dog tag data once for the unit: nickname, code (eg. 135-13-900) and blood type +private _dogTagData = [ + [_target, false, true] call EFUNC(common,getName), + str(floor random 9) + str(floor random 9) + str(floor random 9) + "-" + + str(floor random 9) + str(floor random 9) + "-" + + str(floor random 9) + str(floor random 9) + str(floor random 9), + selectRandom ["O POS", "O NEG", "A POS", "A NEG", "B POS", "B NEG", + "AB POS", "AB NEG"] +]; +// Store it +_target setVariable [QGVAR(dogtagData), _dogTagData, true]; +_dogTagData diff --git a/addons/dogtags/functions/fnc_getDogtagItem.sqf b/addons/dogtags/functions/fnc_getDogtagItem.sqf index db12dd258a..cdcb8eab6f 100644 --- a/addons/dogtags/functions/fnc_getDogtagItem.sqf +++ b/addons/dogtags/functions/fnc_getDogtagItem.sqf @@ -15,26 +15,22 @@ if(!isServer) exitWith {}; -params ["_target", "_unit"]; -TRACE_2("getDogtagItem",_target,_unit); +params ["_player", "_target"]; +TRACE_2("getDogtagItem",_player,_target); private _allDogtags = missionNamespace getVariable [QGVAR(allDogtags), []]; -private _allDogtagNicknames = missionNamespace getVariable [QGVAR(allDogtagNicknames), []]; +private _allDogtagDatas = missionNamespace getVariable [QGVAR(allDogtagDatas), []]; private _nextID = count _allDogtags + 1; if (_nextID > 999) exitWith {}; -private _nickname = [_unit, false, true] call EFUNC(common,getName); +private _dogTagData = [_target] call FUNC(getDogTagData); private _item = format ["ACE_dogtag_%1", _nextID]; _allDogtags pushBack _item; -_allDogtagNicknames pushBack _nickname; +_allDogtagDatas pushBack _dogTagData; missionNamespace setVariable [QGVAR(allDogtags), _allDogtags]; -missionNamespace setVariable [QGVAR(allDogtagNicknames), _allDogtagNicknames]; +missionNamespace setVariable [QGVAR(allDogtagDatas), _allDogtagDatas]; -if(isMultiplayer) then { - [QGVAR(addDogtagItem), [_item, _nickname], [_target]] call CBA_fnc_targetEvent; -} else { - [QGVAR(addDogtagItem), [_item, _nickname]] call CBA_fnc_localEvent; -}; +[QGVAR(addDogtagItem), [_item, _dogTagData], [_player]] call CBA_fnc_targetEvent; diff --git a/addons/dogtags/functions/fnc_sendDogtagData.sqf b/addons/dogtags/functions/fnc_sendDogtagData.sqf index d84c325c5a..cadb343796 100644 --- a/addons/dogtags/functions/fnc_sendDogtagData.sqf +++ b/addons/dogtags/functions/fnc_sendDogtagData.sqf @@ -1,6 +1,6 @@ /* * Author: SzwedzikPL - * Server: returns to client nickname on given dogtag + * Server: returns to client data on given dogtag * * Arguments: * 0: Player @@ -19,12 +19,12 @@ params ["_target", "_item"]; TRACE_2("sendDogtagData",_target,_item); private _allDogtags = missionNameSpace getVariable [QGVAR(allDogtags), []]; -private _allDogtagNicknames = missionNameSpace getVariable [QGVAR(allDogtagNicknames), []]; +private _allDogtagDatas = missionNameSpace getVariable [QGVAR(allDogtagDatas), []]; -private _nickname = ""; +private _dogtagData = []; private _index = _allDogtags find _item; if (_index >= 0) then { - _nickname = _allDogtagNicknames select _index; + _dogtagData = _allDogtagDatas select _index; }; -[QGVAR(showDogtag), [_nickname], [_target]] call CBA_fnc_targetEvent; +[QGVAR(showDogtag), [_dogtagData], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/dogtags/functions/fnc_showDogtag.sqf b/addons/dogtags/functions/fnc_showDogtag.sqf index f1f28d25b8..119a2de773 100644 --- a/addons/dogtags/functions/fnc_showDogtag.sqf +++ b/addons/dogtags/functions/fnc_showDogtag.sqf @@ -3,7 +3,8 @@ * Shows dogtag * * Arguments: - * 0: Nickname + * 0: Dog tag data + * 1: Display as double tag * * Return Value: * None @@ -14,9 +15,9 @@ disableSerialization; -params ["_nickname", ["_doubleTags", false, [false]]]; +params ["_dogtagData", ["_doubleTags", false, [false]]]; -if (!hasInterface || {_nickname == ""}) exitWith {}; +if (!hasInterface || {_dogtagData isEqualTo []}) exitWith {}; if (_doubleTags) then { (QGVAR(tag) call BIS_fnc_rscLayer) cutRsc [QGVAR(doubleTag), "PLAIN", 1, true]; @@ -27,4 +28,5 @@ private _display = uiNamespace getvariable [QGVAR(tag), displayNull]; if(isNull _display) exitWith {}; private _control = _display displayCtrl 1001; -_control ctrlSetStructuredText parseText format ["%1
%2
%3", toUpper _nickName, "135-13-9001", "O POS"]; +_dogtagData params ["_nickName", "_code", "_bloodType"]; +_control ctrlSetStructuredText parseText format ["%1
%2
%3", toUpper _nickName, _code, _bloodType]; From 6df82aad55e4cc6f2acff3f9b3d2d2a44ec8e2ef Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Mon, 20 Jun 2016 16:12:40 -0300 Subject: [PATCH 17/85] I can't believe it happened to me. --- addons/dogtags/functions/fnc_getDogtagData.sqf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/dogtags/functions/fnc_getDogtagData.sqf b/addons/dogtags/functions/fnc_getDogtagData.sqf index bcb4cc05a2..68cc4a2bc4 100644 --- a/addons/dogtags/functions/fnc_getDogtagData.sqf +++ b/addons/dogtags/functions/fnc_getDogtagData.sqf @@ -20,12 +20,12 @@ if (!isNil "_dogTagData") exitWith {_dogTagData}; // Create dog tag data once for the unit: nickname, code (eg. 135-13-900) and blood type private _dogTagData = [ - [_target, false, true] call EFUNC(common,getName), - str(floor random 9) + str(floor random 9) + str(floor random 9) + "-" + - str(floor random 9) + str(floor random 9) + "-" + - str(floor random 9) + str(floor random 9) + str(floor random 9), - selectRandom ["O POS", "O NEG", "A POS", "A NEG", "B POS", "B NEG", - "AB POS", "AB NEG"] + [_target, false, true] call EFUNC(common,getName), + str(floor random 9) + str(floor random 9) + str(floor random 9) + "-" + + str(floor random 9) + str(floor random 9) + "-" + + str(floor random 9) + str(floor random 9) + str(floor random 9), + selectRandom ["O POS", "O NEG", "A POS", "A NEG", "B POS", "B NEG", + "AB POS", "AB NEG"] ]; // Store it _target setVariable [QGVAR(dogtagData), _dogTagData, true]; From 88cf6aad980684362cee4c75a2b9b3821fedb598 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Mon, 20 Jun 2016 16:45:34 -0300 Subject: [PATCH 18/85] Attempt on making blood type and service number unique for players --- .../dogtags/functions/fnc_getDogtagData.sqf | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/addons/dogtags/functions/fnc_getDogtagData.sqf b/addons/dogtags/functions/fnc_getDogtagData.sqf index 68cc4a2bc4..5d813b2046 100644 --- a/addons/dogtags/functions/fnc_getDogtagData.sqf +++ b/addons/dogtags/functions/fnc_getDogtagData.sqf @@ -19,13 +19,24 @@ private _dogTagData = _target getVariable QGVAR(dogtagData); if (!isNil "_dogTagData") exitWith {_dogTagData}; // Create dog tag data once for the unit: nickname, code (eg. 135-13-900) and blood type +private ["_bloodTypeIndex", "_code"]; +//hint getplayeruid _target; +if ((typename getplayeruid _target) == "SCALAR") then { + _bloodTypeIndex = (getplayeruid _target) mod 8; + _code = (str getplayeruid _target) select [0, 3] + "-" + + (str getplayeruid _target) select [3, 2] + "-" + + (str getplayeruid _target) select [5, 3]; +} else { + _bloodTypeIndex = floor random 8; + _code = str(floor random 9) + str(floor random 9) + str(floor random 9) + "-" + + str(floor random 9) + str(floor random 9) + "-" + + str(floor random 9) + str(floor random 9) + str(floor random 9); +}; private _dogTagData = [ [_target, false, true] call EFUNC(common,getName), - str(floor random 9) + str(floor random 9) + str(floor random 9) + "-" + - str(floor random 9) + str(floor random 9) + "-" + - str(floor random 9) + str(floor random 9) + str(floor random 9), - selectRandom ["O POS", "O NEG", "A POS", "A NEG", "B POS", "B NEG", - "AB POS", "AB NEG"] + _code, + ["O POS", "O NEG", "A POS", "A NEG", "B POS", "B NEG", + "AB POS", "AB NEG"] select _bloodTypeIndex ]; // Store it _target setVariable [QGVAR(dogtagData), _dogTagData, true]; From c88313221f2329e06e9d6d444d2c183d880f4884 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 20 Jun 2016 21:50:00 +0200 Subject: [PATCH 19/85] add function to report a blood type which is fixed to the units name --- addons/dogtags/XEH_PREP.hpp | 1 + addons/dogtags/functions/fnc_bloodType.sqf | 24 +++++++++++++++++++ .../dogtags/functions/fnc_getDogtagData.sqf | 7 +++--- 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 addons/dogtags/functions/fnc_bloodType.sqf diff --git a/addons/dogtags/XEH_PREP.hpp b/addons/dogtags/XEH_PREP.hpp index 4c54b69cf1..370396e1a3 100644 --- a/addons/dogtags/XEH_PREP.hpp +++ b/addons/dogtags/XEH_PREP.hpp @@ -1,5 +1,6 @@ PREP(addDogtagActions); PREP(addDogtagItem); +PREP(bloodType); PREP(canCheckDogtag); PREP(canTakeDogtag); PREP(checkDogtag); diff --git a/addons/dogtags/functions/fnc_bloodType.sqf b/addons/dogtags/functions/fnc_bloodType.sqf new file mode 100644 index 0000000000..2111e16ccf --- /dev/null +++ b/addons/dogtags/functions/fnc_bloodType.sqf @@ -0,0 +1,24 @@ +/* + * Author: commy2 + * Reports a blood type depending on the units name. + * + * Arguments: + * 0: Name of a unit + * + * Return Value: + * A random blood type + * + * Public: No + */ +#include "script_component.hpp" + +#define BLOOD_TYPES ["O POS", "O NEG", "A POS", "A NEG", "B POS", "B NEG", "AB POS", "AB NEG"] + +params ["_name"]; + +private _num = 0; +private _count = {_num = _num + _x} count toArray _name; + +_num = _num + _count; + +BLOOD_TYPES select (_num % count BLOOD_TYPES) diff --git a/addons/dogtags/functions/fnc_getDogtagData.sqf b/addons/dogtags/functions/fnc_getDogtagData.sqf index 68cc4a2bc4..5a709ab427 100644 --- a/addons/dogtags/functions/fnc_getDogtagData.sqf +++ b/addons/dogtags/functions/fnc_getDogtagData.sqf @@ -19,13 +19,14 @@ private _dogTagData = _target getVariable QGVAR(dogtagData); if (!isNil "_dogTagData") exitWith {_dogTagData}; // Create dog tag data once for the unit: nickname, code (eg. 135-13-900) and blood type +private _targetName = [_target, false, true] call EFUNC(common,getName); + private _dogTagData = [ - [_target, false, true] call EFUNC(common,getName), + _targetName, str(floor random 9) + str(floor random 9) + str(floor random 9) + "-" + str(floor random 9) + str(floor random 9) + "-" + str(floor random 9) + str(floor random 9) + str(floor random 9), - selectRandom ["O POS", "O NEG", "A POS", "A NEG", "B POS", "B NEG", - "AB POS", "AB NEG"] + _targetName call FUNC(bloodType) ]; // Store it _target setVariable [QGVAR(dogtagData), _dogTagData, true]; From c47898a624b5dd60738df27f35b8aaab99ba34ac Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Mon, 20 Jun 2016 17:04:30 -0300 Subject: [PATCH 20/85] Parse the first portion of the uid --- addons/dogtags/functions/fnc_getDogtagData.sqf | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/addons/dogtags/functions/fnc_getDogtagData.sqf b/addons/dogtags/functions/fnc_getDogtagData.sqf index 5d813b2046..78083ebdc7 100644 --- a/addons/dogtags/functions/fnc_getDogtagData.sqf +++ b/addons/dogtags/functions/fnc_getDogtagData.sqf @@ -20,12 +20,11 @@ if (!isNil "_dogTagData") exitWith {_dogTagData}; // Create dog tag data once for the unit: nickname, code (eg. 135-13-900) and blood type private ["_bloodTypeIndex", "_code"]; -//hint getplayeruid _target; -if ((typename getplayeruid _target) == "SCALAR") then { - _bloodTypeIndex = (getplayeruid _target) mod 8; - _code = (str getplayeruid _target) select [0, 3] + "-" + - (str getplayeruid _target) select [3, 2] + "-" + - (str getplayeruid _target) select [5, 3]; +if !(getplayeruid _target in ["", "_SP_AI_", "_SP_PLAYER_"]) then { + _bloodTypeIndex = (parseNumber ((getPlayerUID _target) select [0, 5])) mod 8; + _code = (getplayeruid _target) select [0, 3] + "-" + + (getplayeruid _target) select [3, 2] + "-" + + (getplayeruid _target) select [5, 3]; } else { _bloodTypeIndex = floor random 8; _code = str(floor random 9) + str(floor random 9) + str(floor random 9) + "-" + From 578477eae6c20a6caf29f44f6c63358fb6096fbe Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 20 Jun 2016 15:12:23 -0500 Subject: [PATCH 21/85] Fix issue with dogtag respawn/setVariable Store object instead of bool to indicate when dogtags have been taken When object respawns, the the old object reference won't apply (defacto reset) --- addons/dogtags/functions/fnc_canCheckDogtag.sqf | 2 +- addons/dogtags/functions/fnc_canTakeDogtag.sqf | 2 +- addons/dogtags/functions/fnc_checkDogtag.sqf | 2 +- addons/dogtags/functions/fnc_getDogtagItem.sqf | 2 +- addons/dogtags/functions/fnc_takeDogtag.sqf | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/dogtags/functions/fnc_canCheckDogtag.sqf b/addons/dogtags/functions/fnc_canCheckDogtag.sqf index 2c46fe30e6..a05629c72f 100644 --- a/addons/dogtags/functions/fnc_canCheckDogtag.sqf +++ b/addons/dogtags/functions/fnc_canCheckDogtag.sqf @@ -17,4 +17,4 @@ params ["_player", "_target"]; if (isNull _target) exitWith {false}; -!alive _target || _target getVariable ["ACE_isUnconscious", false] +(!alive _target) || {_target getVariable ["ACE_isUnconscious", false]} diff --git a/addons/dogtags/functions/fnc_canTakeDogtag.sqf b/addons/dogtags/functions/fnc_canTakeDogtag.sqf index 8414e35c31..b8279144bb 100644 --- a/addons/dogtags/functions/fnc_canTakeDogtag.sqf +++ b/addons/dogtags/functions/fnc_canTakeDogtag.sqf @@ -17,4 +17,4 @@ params ["_player", "_target"]; if (isNull _target) exitWith {false}; -!alive _target || _target getVariable ["ACE_isUnconscious", false] +(!alive _target) || {_target getVariable ["ACE_isUnconscious", false]} diff --git a/addons/dogtags/functions/fnc_checkDogtag.sqf b/addons/dogtags/functions/fnc_checkDogtag.sqf index a247d24312..6345871f02 100644 --- a/addons/dogtags/functions/fnc_checkDogtag.sqf +++ b/addons/dogtags/functions/fnc_checkDogtag.sqf @@ -15,7 +15,7 @@ params ["_player", "_target"]; -private _doubleTags = !(_target getVariable [QGVAR(dogtagTaken), false]); +private _doubleTags = (_target getVariable [QGVAR(dogtagTaken), objNull]) != _target; private _dogTagData = [_target] call FUNC(getDogTagData); [QGVAR(showDogtag), [_dogTagData, _doubleTags]] call CBA_fnc_localEvent; diff --git a/addons/dogtags/functions/fnc_getDogtagItem.sqf b/addons/dogtags/functions/fnc_getDogtagItem.sqf index cdcb8eab6f..aee57b31e3 100644 --- a/addons/dogtags/functions/fnc_getDogtagItem.sqf +++ b/addons/dogtags/functions/fnc_getDogtagItem.sqf @@ -23,7 +23,7 @@ private _allDogtagDatas = missionNamespace getVariable [QGVAR(allDogtagDatas), [ private _nextID = count _allDogtags + 1; -if (_nextID > 999) exitWith {}; +if (_nextID > 999) exitWith {ACE_LOGERROR("Ran out of IDs");}; private _dogTagData = [_target] call FUNC(getDogTagData); private _item = format ["ACE_dogtag_%1", _nextID]; diff --git a/addons/dogtags/functions/fnc_takeDogtag.sqf b/addons/dogtags/functions/fnc_takeDogtag.sqf index 585f89b697..e8c93a985d 100644 --- a/addons/dogtags/functions/fnc_takeDogtag.sqf +++ b/addons/dogtags/functions/fnc_takeDogtag.sqf @@ -16,9 +16,9 @@ params ["_player", "_target"]; -if (_target getVariable [QGVAR(dogtagTaken), false]) then { +if ((_target getVariable [QGVAR(dogtagTaken), objNull]) == _target) then { [localize LSTRING(dogtagAlreadyTaken)] call EFUNC(common,displayText); } else { - _target setVariable [QGVAR(dogtagTaken), true, true]; + _target setVariable [QGVAR(dogtagTaken), _target, true]; [QGVAR(getDogtagItem), [_player, _target]] call CBA_fnc_serverEvent; }; From 7e3e101508d536144c3e484f19bf39d028a9249b Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Mon, 20 Jun 2016 17:37:37 -0300 Subject: [PATCH 22/85] Nah, they don't --- addons/dogtags/functions/fnc_getDogtagData.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/dogtags/functions/fnc_getDogtagData.sqf b/addons/dogtags/functions/fnc_getDogtagData.sqf index 5a709ab427..9e9fd6b387 100644 --- a/addons/dogtags/functions/fnc_getDogtagData.sqf +++ b/addons/dogtags/functions/fnc_getDogtagData.sqf @@ -23,9 +23,9 @@ private _targetName = [_target, false, true] call EFUNC(common,getName); private _dogTagData = [ _targetName, - str(floor random 9) + str(floor random 9) + str(floor random 9) + "-" + - str(floor random 9) + str(floor random 9) + "-" + - str(floor random 9) + str(floor random 9) + str(floor random 9), + str(floor random 10) + str(floor random 10) + str(floor random 10) + "-" + + str(floor random 10) + str(floor random 10) + "-" + + str(floor random 10) + str(floor random 10) + str(floor random 10), _targetName call FUNC(bloodType) ]; // Store it From 7f39748ff08f4c39c218f697449f82ee963a684a Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Mon, 20 Jun 2016 17:42:21 -0300 Subject: [PATCH 23/85] Tidy up text position to properly acommodate two line names --- addons/dogtags/Dogtag.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/dogtags/Dogtag.hpp b/addons/dogtags/Dogtag.hpp index af6785d0ba..937432d2a8 100644 --- a/addons/dogtags/Dogtag.hpp +++ b/addons/dogtags/Dogtag.hpp @@ -31,7 +31,7 @@ class RscTitles { colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; x = ((safezoneX + safezoneW) - (8.4 * (((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 * (((safezoneW / safezoneH) min 1.2) / 40)); - y = safeZoneY + 0.25 * safezoneH; + y = safeZoneY + 0.24 * safezoneH; w = (5.9 * (((safezoneW / safezoneH) min 1.2) / 40)); h = (3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)); font = "RobotoCondensed"; From 3972504d4a6f8b67e6e7aeec01516715867b1764 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 21 Jun 2016 12:13:32 -0500 Subject: [PATCH 24/85] Add dogtag actions to body bags --- addons/dogtags/CfgVehicles.hpp | 6 +-- addons/dogtags/XEH_postInit.sqf | 39 ++++++++++++++++++ addons/dogtags/data/dogtag_icon_ca.paa | Bin 0 -> 25558 bytes .../functions/fnc_serverRemoveBody.sqf | 2 +- 4 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 addons/dogtags/data/dogtag_icon_ca.paa diff --git a/addons/dogtags/CfgVehicles.hpp b/addons/dogtags/CfgVehicles.hpp index 8e9204c4ca..9757ac1c53 100644 --- a/addons/dogtags/CfgVehicles.hpp +++ b/addons/dogtags/CfgVehicles.hpp @@ -9,14 +9,14 @@ class CfgVehicles { statement = ""; showDisabled = 0; priority = 3; - icon = ""; //@todo + icon = QPATHTOF(data\dogtag_icon_ca.paa); class ACE_CheckDogtag { displayName = CSTRING(checkDogtag); condition = QUOTE([ARR_2(_player,_target)] call FUNC(canCheckDogtag)); statement = QUOTE([ARR_2(_player,_target)] call FUNC(checkDogtag)); showDisabled = 0; priority = 3; - icon = ""; //@todo + icon = QPATHTOF(data\dogtag_icon_ca.paa); }; class ACE_TakeDogtag { displayName = CSTRING(takeDogtag); @@ -24,7 +24,7 @@ class CfgVehicles { statement = QUOTE([ARR_2(_player,_target)] call FUNC(takeDogtag)); showDisabled = 0; priority = 3; - icon = ""; //@todo + icon = QPATHTOF(data\dogtag_icon_ca.paa); }; }; }; diff --git a/addons/dogtags/XEH_postInit.sqf b/addons/dogtags/XEH_postInit.sqf index 96a6a3180c..729ae7eb04 100644 --- a/addons/dogtags/XEH_postInit.sqf +++ b/addons/dogtags/XEH_postInit.sqf @@ -4,3 +4,42 @@ [QGVAR(sendDogtagData), DFUNC(sendDogtagData)] call CBA_fnc_addEventHandler; [QGVAR(getDogtagItem), DFUNC(getDogtagItem)] call CBA_fnc_addEventHandler; [QGVAR(addDogtagItem), DFUNC(addDogtagItem)] call CBA_fnc_addEventHandler; + + +//Add actions and event handlers only if ace_medical is loaded +// - Adding actions via config would create a dependency +if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then { + if (hasInterface) then { + + private _checkTagAction = [ + "ACE_CheckDogtag", + format ["%1: %2", localize LSTRING(itemName), localize LSTRING(checkDogtag)], + QPATHTOF(data\dogtag_icon_ca.paa), + {[_player,_target] call FUNC(checkDogtag)}, + {!isNil {_target getVariable QGVAR(dogtagData)}} + ] call ace_interact_menu_fnc_createAction; + ["ACE_bodyBagObject", 0, ["ACE_MainActions"], _checkTagAction] call EFUNC(interact_menu,addActionToClass); + + private _takeTagAction = [ + "ACE_TakeDogtag", + format ["%1: %2", localize LSTRING(itemName), localize LSTRING(takeDogtag)], + QPATHTOF(data\dogtag_icon_ca.paa), + {[_player,_target] call FUNC(takeDogtag)}, + {(!isNil {_target getVariable QGVAR(dogtagData)}) && {((_target getVariable [QGVAR(dogtagTaken), objNull]) != _target)}} + ] call ace_interact_menu_fnc_createAction; + ["ACE_bodyBagObject", 0, ["ACE_MainActions"], _takeTagAction] call EFUNC(interact_menu,addActionToClass); + }; + if (isServer) then { + ["ace_placedInBodyBag", { + params ["_target", "_bodyBag"]; + TRACE_2("ace_placedInBodyBag eh",_target,_bodyBag); + + private _dogTagData = [_target] call FUNC(getDogtagData); + _bodyBag setVariable [QGVAR(dogtagData), _dogTagData, true]; + + if ((_target getVariable [QGVAR(dogtagTaken), objNull]) == _target) then { + _bodyBag setVariable [QGVAR(dogtagTaken), _bodyBag, true]; + }; + }] call CBA_fnc_addEventHandler; + }; +}; diff --git a/addons/dogtags/data/dogtag_icon_ca.paa b/addons/dogtags/data/dogtag_icon_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..4799db17ec2d850d8b92c660cad7243947f82c70 GIT binary patch literal 25558 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 0) then { +if ((count GVAR(bodiesToDelete)) == 1) then { [] call FUNC(bodyCleanupLoop); }; From ebcf1687a7fd3eb342ef64d9e065614b2b592fe9 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Tue, 21 Jun 2016 18:42:15 +0100 Subject: [PATCH 25/85] Generate SSN of unit from their name Similar to how we're handling blood types, uses the unit's name to generate a valid three/two/four format SSN. For names less than 9 characters long this will currently generate a unique SSN only up to the length of the name and append valid digits as necessary. --- addons/dogtags/XEH_PREP.hpp | 1 + .../dogtags/functions/fnc_getDogtagData.sqf | 4 +--- addons/dogtags/functions/fnc_ssn.sqf | 23 +++++++++++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 addons/dogtags/functions/fnc_ssn.sqf diff --git a/addons/dogtags/XEH_PREP.hpp b/addons/dogtags/XEH_PREP.hpp index 370396e1a3..33e42ba191 100644 --- a/addons/dogtags/XEH_PREP.hpp +++ b/addons/dogtags/XEH_PREP.hpp @@ -9,4 +9,5 @@ PREP(getDogtagData); PREP(getDogtagItem); PREP(sendDogtagData); PREP(showDogtag); +PREP(ssn); PREP(takeDogtag); diff --git a/addons/dogtags/functions/fnc_getDogtagData.sqf b/addons/dogtags/functions/fnc_getDogtagData.sqf index 9e9fd6b387..485e09789e 100644 --- a/addons/dogtags/functions/fnc_getDogtagData.sqf +++ b/addons/dogtags/functions/fnc_getDogtagData.sqf @@ -23,9 +23,7 @@ private _targetName = [_target, false, true] call EFUNC(common,getName); private _dogTagData = [ _targetName, - str(floor random 10) + str(floor random 10) + str(floor random 10) + "-" + - str(floor random 10) + str(floor random 10) + "-" + - str(floor random 10) + str(floor random 10) + str(floor random 10), + _targetName call FUNC(ssn), _targetName call FUNC(bloodType) ]; // Store it diff --git a/addons/dogtags/functions/fnc_ssn.sqf b/addons/dogtags/functions/fnc_ssn.sqf new file mode 100644 index 0000000000..62f5745a40 --- /dev/null +++ b/addons/dogtags/functions/fnc_ssn.sqf @@ -0,0 +1,23 @@ +/* + * Author: SilentSpike + * Reports a social security number generated from the units name. + * + * Arguments: + * 0: Name of a unit + * + * Return Value: + * A random social security number + * + * Public: No + */ +#include "script_component.hpp" + +params ["_name"]; + +private _nums = ((toArray _name) select [0,9]) apply { _x % 10 }; + +while {count _nums < 9} do { + _nums pushBack (floor random 10); +}; + +([_nums select [0,3],_nums select [3,2], _nums select [5,4]] apply { _x joinString "" }) joinString "-" From 6d8121b5446276eab904279dcae0f3ecb0cd3fac Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Tue, 21 Jun 2016 20:35:23 +0100 Subject: [PATCH 26/85] Improve unit name SSN generation Names shorter than the required 9 characters are now reused until we have 9 characters - making for fully unique generation. To keep things distributed as pleasantly as possible they're itterated over with a step of two - alternating between odd and even indexes every full loop. Similarly, the slice of string used for names longer than 9 characters is now offset based on the length of the name. --- addons/dogtags/functions/fnc_ssn.sqf | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/addons/dogtags/functions/fnc_ssn.sqf b/addons/dogtags/functions/fnc_ssn.sqf index 62f5745a40..adf5d1c6f8 100644 --- a/addons/dogtags/functions/fnc_ssn.sqf +++ b/addons/dogtags/functions/fnc_ssn.sqf @@ -6,18 +6,26 @@ * 0: Name of a unit * * Return Value: - * A random social security number + * A random three/two/four format social security number * * Public: No */ #include "script_component.hpp" params ["_name"]; +private _length = count _name; +private _chars = toArray _name; -private _nums = ((toArray _name) select [0,9]) apply { _x % 10 }; - -while {count _nums < 9} do { - _nums pushBack (floor random 10); +// For short names, reuse characters +if (_length < 9) then { + // Iterates every second character, swapping odd/even with each loop + for [{_i = 0},{_i < 2*(9 - _length)},{_i = _i + 2}] do { + _chars pushBack (_chars select floor((_i + (_i/_length % 2)) % _length)); + }; }; +// Offset array slice for long names to make generation more unique +private _slice = [0, _length % 9] select (_length > 9); +private _nums = (_chars select [_slice, 9]) apply { _x % 10 }; + ([_nums select [0,3],_nums select [3,2], _nums select [5,4]] apply { _x joinString "" }) joinString "-" From 5108ffe20c1256aea63d99bff0c1eae6a89f7699 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 25 Jun 2016 19:16:26 -0500 Subject: [PATCH 27/85] Add goggles setting for level of effects Can chose between none, tint/colorCC/ and full dust/dirt/rain/rotorwash --- addons/goggles/ACE_Settings.hpp | 12 +- addons/goggles/CfgEventHandlers.hpp | 8 - addons/goggles/XEH_postInit.sqf | 225 ++++++++++-------- .../functions/fnc_applyGlassesEffect.sqf | 14 +- .../goggles/functions/fnc_externalCamera.sqf | 2 +- addons/goggles/functions/fnc_handleKilled.sqf | 19 +- .../functions/fnc_removeGlassesEffect.sqf | 8 +- addons/goggles/stringtable.xml | 9 + 8 files changed, 160 insertions(+), 137 deletions(-) diff --git a/addons/goggles/ACE_Settings.hpp b/addons/goggles/ACE_Settings.hpp index a78c2866e0..659a10b4e3 100644 --- a/addons/goggles/ACE_Settings.hpp +++ b/addons/goggles/ACE_Settings.hpp @@ -1,11 +1,11 @@ class ACE_Settings { - /*class GVAR(enable) { // @todo - value = 0; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(enable); - };*/ + class GVAR(effects) { + displayName = CSTRING(effects_displayName); + typeName = "SCALAR"; + value = 2; + values[] = {ECSTRING(common,Disabled), CSTRING(effects_tintOnly), CSTRING(enabled_tintAndEffects)}; + }; class GVAR(showInThirdPerson) { value = 0; typeName = "BOOL"; diff --git a/addons/goggles/CfgEventHandlers.hpp b/addons/goggles/CfgEventHandlers.hpp index 578b4ebebb..99cbf2f8ad 100644 --- a/addons/goggles/CfgEventHandlers.hpp +++ b/addons/goggles/CfgEventHandlers.hpp @@ -24,11 +24,3 @@ class Extended_Killed_EventHandlers { }; }; }; - -class Extended_Explosion_EventHandlers { - class CAManBase { - class ADDON { - clientExplosion = QUOTE(if (local (_this select 0)) then {_this call FUNC(handleExplosion)}); - }; - }; -}; diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index ea610afff0..b7b5de9e1b 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -3,6 +3,7 @@ if (!hasInterface) exitWith {}; ["ACE3 Common", QGVAR(wipeGlasses), localize LSTRING(WipeGlasses), { + if (GVAR(effects) != 2) exitWith {false}; //Can only wipe if full effects setting is set if (!(GETVAR(ace_player,ACE_isUnconscious,false))) exitWith { call FUNC(clearGlasses); true @@ -12,126 +13,142 @@ if (!hasInterface) exitWith {}; {false}, [20, [true, true, false]], false] call CBA_fnc_addKeybind; -// make sure to stack effect layers in correct order -GVAR(GogglesEffectsLayer) = QGVAR(GogglesEffectsLayer) call BIS_fnc_RSCLayer; -GVAR(GogglesLayer) = QGVAR(GogglesLayer) call BIS_fnc_RSCLayer; -if (isNil QGVAR(UsePP)) then { - GVAR(UsePP) = true; -}; +["ace_settingsInitialized", { + TRACE_2("ace_settingsInitialized eh",GVAR(effects),GVAR(showInThirdPerson)); -// init pp effects -GVAR(PostProcess) = ppEffectCreate ["ColorCorrections", 1995]; -GVAR(PostProcessEyes) = ppEffectCreate ["ColorCorrections", 1992]; -GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [1, 1, 1, 0]]; -GVAR(PostProcessEyes) ppEffectCommit 0; -GVAR(PostProcessEyes) ppEffectEnable false; + if (GVAR(effects) == 0) exitWith {}; -GVAR(EffectsActive) = false; + // ---Add the TINT Effect--- + + // make sure to stack effect layers in correct order + GVAR(GogglesEffectsLayer) = QGVAR(GogglesEffectsLayer) call BIS_fnc_RSCLayer; + GVAR(GogglesLayer) = QGVAR(GogglesLayer) call BIS_fnc_RSCLayer; -SETGLASSES(ace_player,GLASSESDEFAULT); - -GVAR(FrameEvent) = [false, [false, 20]]; -GVAR(PostProcessEyes_Enabled) = false; -GVAR(DustHandler) = -1; -GVAR(RainDrops) = objNull; -GVAR(RainActive) = false; -GVAR(RainLastLevel) = 0; -GVAR(surfaceCache) = ""; -GVAR(surfaceCacheIsDust) = false; - -// init GlassesChanged eventhandler -GVAR(OldGlasses) = ""; - -["loadout", { - params ["_unit"]; - - private _currentGlasses = goggles _unit; - - if (GVAR(OldGlasses) != _currentGlasses) then { - ["ace_glassesChanged", [_unit, _currentGlasses]] call CBA_fnc_localEvent; - GVAR(OldGlasses) = _currentGlasses; + if (isNil QGVAR(UsePP)) then { + GVAR(UsePP) = true; }; -}] call CBA_fnc_addPlayerEventHandler; -// add glasses eventhandlers -["ace_glassesChanged", { - params ["_unit", "_glasses"]; + // init GlassesChanged eventhandler + GVAR(OldGlasses) = ""; + ["loadout", { + params ["_unit"]; - SETGLASSES(_unit,GLASSESDEFAULT); + private _currentGlasses = goggles _unit; - if (call FUNC(ExternalCamera)) exitWith {call FUNC(RemoveGlassesEffect)}; + if (GVAR(OldGlasses) != _currentGlasses) then { + ["ace_glassesChanged", [_unit, _currentGlasses]] call CBA_fnc_localEvent; + GVAR(OldGlasses) = _currentGlasses; + }; + }] call CBA_fnc_addPlayerEventHandler; - if ([_unit] call FUNC(isGogglesVisible)) then { - _glasses call FUNC(applyGlassesEffect); - } else { - call FUNC(removeGlassesEffect); + + // init pp effects + GVAR(PostProcess) = ppEffectCreate ["ColorCorrections", 1995]; + GVAR(EffectsActive) = false; + + // check goggles + private _fnc_checkGoggles = { + params ["_unit"]; + + if (GVAR(EffectsActive)) then { + if (call FUNC(externalCamera) || {!([_unit] call FUNC(isGogglesVisible))}) then { + call FUNC(removeGlassesEffect); + }; + } else { + if (!(call FUNC(externalCamera)) && {[_unit] call FUNC(isGogglesVisible)}) then { + [goggles _unit] call FUNC(applyGlassesEffect); + }; + }; }; -}] call CBA_fnc_addEventHandler; -["ace_glassesCracked", { - params ["_unit"]; + ["cameraView", _fnc_checkGoggles] call CBA_fnc_addPlayerEventHandler; + ["ace_activeCameraChanged", _fnc_checkGoggles] call CBA_fnc_addEventHandler; - _unit setVariable ["ACE_EyesDamaged", true]; - GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0.5, 0.5, 0.5, 0.5], [1, 1, 1, 0]]; - GVAR(PostProcessEyes) ppEffectCommit 0; - GVAR(PostProcessEyes) ppEffectEnable true; + // add glasses eventhandlers + ["ace_glassesChanged", { + params ["_unit", "_glasses"]; - [{ - GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [1, 1, 1, 1], [1, 1, 1, 0]]; - GVAR(PostProcessEyes) ppEffectCommit 5; + SETGLASSES(_unit,GLASSESDEFAULT); - [{ - params ["_unit"]; + if (call FUNC(ExternalCamera)) exitWith {call FUNC(RemoveGlassesEffect)}; - GVAR(PostProcessEyes) ppEffectEnable false; - - _unit setVariable ["ACE_EyesDamaged", false]; - - }, _this, 5] call CBA_fnc_waitAndExecute; - - }, _unit, 25] call CBA_fnc_waitAndExecute; - -}] call CBA_fnc_addEventHandler; - -// check goggles -private _fnc_checkGoggles = { - params ["_unit"]; - - if (GVAR(EffectsActive)) then { - if (call FUNC(externalCamera) || {!([_unit] call FUNC(isGogglesVisible))}) then { + if ([_unit] call FUNC(isGogglesVisible)) then { + _glasses call FUNC(applyGlassesEffect); + } else { call FUNC(removeGlassesEffect); }; - } else { - if (!(call FUNC(externalCamera)) && {[_unit] call FUNC(isGogglesVisible)}) then { - [goggles _unit] call FUNC(applyGlassesEffect); - }; + }] call CBA_fnc_addEventHandler; + + + // // ---Add the Dust/Dirt/Rain Effects--- + if (GVAR(effects) == 2) then { + + // Register fire event handler + ["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; + + //Add Explosion XEH + ["CAManBase", "explosion", FUNC(handleExplosion)] call CBA_fnc_addClassEventHandler; + + GVAR(PostProcessEyes) = ppEffectCreate ["ColorCorrections", 1992]; + GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [1, 1, 1, 0]]; + GVAR(PostProcessEyes) ppEffectCommit 0; + GVAR(PostProcessEyes) ppEffectEnable false; + GVAR(PostProcessEyes_Enabled) = false; + + GVAR(FrameEvent) = [false, [false, 20]]; + GVAR(DustHandler) = -1; + GVAR(RainDrops) = objNull; + GVAR(RainActive) = false; + GVAR(RainLastLevel) = 0; + GVAR(surfaceCache) = ""; + GVAR(surfaceCacheIsDust) = false; + + ["ace_glassesCracked", { + params ["_unit"]; + + _unit setVariable ["ACE_EyesDamaged", true]; + + GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0.5, 0.5, 0.5, 0.5], [1, 1, 1, 0]]; + GVAR(PostProcessEyes) ppEffectCommit 0; + GVAR(PostProcessEyes) ppEffectEnable true; + + [{ + GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [1, 1, 1, 1], [1, 1, 1, 0]]; + GVAR(PostProcessEyes) ppEffectCommit 5; + + [{ + params ["_unit"]; + + GVAR(PostProcessEyes) ppEffectEnable false; + + _unit setVariable ["ACE_EyesDamaged", false]; + + }, _this, 5] call CBA_fnc_waitAndExecute; + + }, _unit, 25] call CBA_fnc_waitAndExecute; + + }] call CBA_fnc_addEventHandler; + + // goggles effects main PFH + [{ + BEGIN_COUNTER(goggles); + + // rain + call FUNC(applyRainEffect); + + // auto remove effects under water + if (GVAR(EffectsActive) && {underwater ACE_player} && {[goggles ACE_player] call FUNC(isDivingGoggles)}) then { + call FUNC(removeRainEffect); + call FUNC(removeDirtEffect); + call FUNC(removeDustEffect); + }; + + // rotor wash effect + call FUNC(applyRotorWashEffect); + + END_COUNTER(goggles); + }, 0.5, []] call CBA_fnc_addPerFrameHandler; }; -}; - -["cameraView", _fnc_checkGoggles] call CBA_fnc_addPlayerEventHandler; -["ace_activeCameraChanged", _fnc_checkGoggles] call CBA_fnc_addEventHandler; - -// goggles effects main PFH -[{ - BEGIN_COUNTER(goggles); - - // rain - call FUNC(applyRainEffect); - - // auto remove effects under water - if (GVAR(EffectsActive) && {underwater ACE_player} && {[goggles ACE_player] call FUNC(isDivingGoggles)}) then { - call FUNC(removeRainEffect); - call FUNC(removeDirtEffect); - call FUNC(removeDustEffect); - }; - - // rotor wash effect - call FUNC(applyRotorWashEffect); - - END_COUNTER(goggles); -}, 0.5, []] call CBA_fnc_addPerFrameHandler; - -// Register fire event handler -["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; +}] call CBA_fnc_addEventHandler; diff --git a/addons/goggles/functions/fnc_applyGlassesEffect.sqf b/addons/goggles/functions/fnc_applyGlassesEffect.sqf index 7be010ef9c..71a5b3b84c 100644 --- a/addons/goggles/functions/fnc_applyGlassesEffect.sqf +++ b/addons/goggles/functions/fnc_applyGlassesEffect.sqf @@ -46,13 +46,15 @@ if (_imagePath != "") then { (GLASSDISPLAY displayCtrl 10650) ctrlSetText _imagePath; }; -if (GETDIRT) then { - call FUNC(applyDirtEffect); -}; +if (GVAR(effects) == 2) then { + if (GETDIRT) then { + call FUNC(applyDirtEffect); + }; -if (GETDUSTT(DACTIVE)) then { - SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)-1,0,2)); - call FUNC(applyDustEffect); + if (GETDUSTT(DACTIVE)) then { + SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)-1,0,2)); + call FUNC(applyDustEffect); + }; }; GVAR(EffectsActive) = true; diff --git a/addons/goggles/functions/fnc_externalCamera.sqf b/addons/goggles/functions/fnc_externalCamera.sqf index 06c6cec407..9e7eed3efe 100644 --- a/addons/goggles/functions/fnc_externalCamera.sqf +++ b/addons/goggles/functions/fnc_externalCamera.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" // Handle the ThreeDen Editor Camera -if ((!isNil {is3DEN}) && {is3DEN}) exitWith {true}; +if (is3DEN) exitWith {true}; if (GVAR(showInThirdPerson)) then { cameraView in ["GROUP"] || EFUNC(common,isFeatureCameraActive) diff --git a/addons/goggles/functions/fnc_handleKilled.sqf b/addons/goggles/functions/fnc_handleKilled.sqf index e8e207c478..b9af2e075b 100644 --- a/addons/goggles/functions/fnc_handleKilled.sqf +++ b/addons/goggles/functions/fnc_handleKilled.sqf @@ -15,20 +15,21 @@ params ["_unit"]; if (_unit != ACE_player) exitWith {true}; - -GVAR(PostProcessEyes) ppEffectEnable false; - -SETGLASSES(_unit,GLASSESDEFAULT); +if (GVAR(effects) == 0) exitWith {true}; call FUNC(removeGlassesEffect); -GVAR(EffectsActive) = false; +if (GVAR(effects) == 2) then { + GVAR(PostProcessEyes) ppEffectEnable false; -_unit setVariable ["ACE_EyesDamaged", false]; + SETGLASSES(_unit,GLASSESDEFAULT); -if (GVAR(DustHandler) != -1) then { - [GVAR(DustHandler)] call CBA_fnc_removePerFrameHandler; + _unit setVariable ["ACE_EyesDamaged", false]; + + if (GVAR(DustHandler) != -1) then { + [GVAR(DustHandler)] call CBA_fnc_removePerFrameHandler; + }; + GVAR(DustHandler) = -1; }; -GVAR(DustHandler) = -1; true diff --git a/addons/goggles/functions/fnc_removeGlassesEffect.sqf b/addons/goggles/functions/fnc_removeGlassesEffect.sqf index 658daf1d32..c27d8684e8 100644 --- a/addons/goggles/functions/fnc_removeGlassesEffect.sqf +++ b/addons/goggles/functions/fnc_removeGlassesEffect.sqf @@ -22,6 +22,8 @@ if (!isNull (GLASSDISPLAY)) then { GLASSDISPLAY closeDisplay 0; }; -call FUNC(removeDirtEffect); -call FUNC(removeRainEffect); -call FUNC(removeDustEffect); +if (GVAR(effects) == 2) then { + call FUNC(removeDirtEffect); + call FUNC(removeRainEffect); + call FUNC(removeDustEffect); +}; diff --git a/addons/goggles/stringtable.xml b/addons/goggles/stringtable.xml index ce337760d7..31dd10dbf1 100644 --- a/addons/goggles/stringtable.xml +++ b/addons/goggles/stringtable.xml @@ -25,5 +25,14 @@ Limpar Óculos Pulisci gli occhiali + + Goggle Effects + + + Tint + + + Tint + Effects + \ No newline at end of file From 898217a533d62bcdc7265ccd1fc469481de353b2 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 28 Jun 2016 19:22:02 +0200 Subject: [PATCH 28/85] Fixed popping and stray particles --- addons/particles/CfgCloudlets.hpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/addons/particles/CfgCloudlets.hpp b/addons/particles/CfgCloudlets.hpp index 955acecb95..395bed35ab 100644 --- a/addons/particles/CfgCloudlets.hpp +++ b/addons/particles/CfgCloudlets.hpp @@ -19,15 +19,15 @@ class CfgCloudlets { particleType = "Billboard"; timerPeriod = 1; lifeTime = 30; - lifeTimeVar = 2; + lifeTimeVar = 1; animationSpeed[] = {1}; animationSpeedCoef = 1; randomDirectionPeriod = 1; randomDirectionPeriodVar = 0; - randomDirectionIntensity = 0.2; + randomDirectionIntensity = 0.08; randomDirectionIntensityVar = 0; destroyOnWaterSurface = 1; - destroyOnWaterSurfaceOffset = -0.6; + destroyOnWaterSurfaceOffset = -8; positionVar[] = {0, 0, 0}; colorVar[] = {0, 0, 0, 0}; color[] = { @@ -40,9 +40,9 @@ class CfgCloudlets { }; size[] = {0.05, 4, 12, 16}; sizeVar = 0.5; - weight = 1.2777; + weight = 1.275; moveVelocity[] = {0, 0, 0}; - moveVelocityVar[] = {0.25, 0.25, 0.25}; + moveVelocityVar[] = {0.1, 0.1, 0.1}; rotationVelocity = 0; rotationVelocityVar = 20; volume = 1; @@ -52,19 +52,19 @@ class CfgCloudlets { blockAIVisibility = 1; }; class ACE_SmokeBaseMedium: ACE_SmokeBaseLarge { + destroyOnWaterSurfaceOffset = -6; size[] = {0.05, 3, 9, 12}; - moveVelocityVar[] = {0.20, 0.20, 0.20}; }; class ACE_SmokeBaseSmall: ACE_SmokeBaseLarge { + destroyOnWaterSurfaceOffset = -4; size[] = {0.05, 2, 6, 8}; - moveVelocityVar[] = {0.15, 0.15, 0.15}; }; // - 40mm smoke grenades -------------------------------------------------- class ACE_SmokeBase40mm: ACE_SmokeBaseLarge { + destroyOnWaterSurfaceOffset = -5; lifeTime = 15; size[] = {0.05, 2.5, 7.5, 10}; - moveVelocityVar[] = {0.10, 0.10, 0.10}; }; // - Artillery smoke submunition ------------------------------------------ @@ -78,6 +78,7 @@ class CfgCloudlets { // - Smoke on water surface ----------------------------------------------- class ACE_SmokeAfterWaterWhite: ACE_SmokeBaseLarge { interval = 0.05; + destroyOnWaterSurfaceOffset = -3; size[] = {0.05, 2, 6}; sizeVar = 1; lifeTime = 10; From 96efbaef53babf7338f2af01072b8e31f927f616 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 1 Jul 2016 16:28:44 -0500 Subject: [PATCH 29/85] Add Drag/Drop Keybind --- addons/dragging/XEH_postInit.sqf | 27 +++++++++++++++++++++++++++ addons/dragging/stringtable.xml | 12 ++++++++++++ 2 files changed, 39 insertions(+) diff --git a/addons/dragging/XEH_postInit.sqf b/addons/dragging/XEH_postInit.sqf index 6b2fd02dde..0d8e7757eb 100644 --- a/addons/dragging/XEH_postInit.sqf +++ b/addons/dragging/XEH_postInit.sqf @@ -28,3 +28,30 @@ if (isNil "ACE_maxWeightCarry") then { ["ace_unconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; //@todo Captivity? + +//Add Keybind: +["ACE3 Common", QGVAR(drag), (localize LSTRING(DragKeybind)), +{ + if (!alive ACE_player) exitWith {false}; + if !([ACE_player, objNull, ["isNotDragging", "isNotCarrying"]] call EFUNC(common,canInteractWith)) exitWith {false}; + + // If we are drag/carrying something right now then just drop it: + if (ACE_player getVariable [QGVAR(isDragging), false]) exitWith { + [ACE_player, ACE_player getVariable [QGVAR(draggedObject), objNull]] call FUNC(dropObject); + false + }; + if (ACE_player getVariable [QGVAR(isCarrying), false]) exitWith { + [ACE_player, ACE_player getVariable [QGVAR(carriedObject), objNull]] call FUNC(dropObject_carry); + false + }; + + private _cursor = cursorObject; + if ((isNull _cursor) || {(_cursor distance ACE_player) > 2.6}) exitWith {false}; + if (!([ACE_player, _cursor] call FUNC(canDrag))) exitWith {false}; + + [ACE_player, _cursor] call FUNC(startDrag); + false +}, +{false}, +[-1, [false, false, false]]] call CBA_fnc_addKeybind; // UNBOUND + diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml index b0334f3ca2..646678e43d 100644 --- a/addons/dragging/stringtable.xml +++ b/addons/dragging/stringtable.xml @@ -25,6 +25,18 @@ Lascia Elengedés + + Drag/Release Object + Тащить/Отпустить Объекты + Arrastrar/Soltar Objeto + Ciągnij/Puść Obiekt + Táhnout/Položit Objekt + Trainer/Lâcher Objets + Ziehen/Loslassen Objekt + Arrastar/Soltar Objeto + Trascina/Lascia Oggetto + Húzás/Elengedés Objektum + Item too heavy Gegenstand ist zu schwer From d15330d24555d1651ea1e7d7ebebdcca43010283 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 1 Jul 2016 23:14:20 -0500 Subject: [PATCH 30/85] Fix cargo event name - spare parts not being added --- addons/repair/config.cpp | 2 +- addons/repair/functions/fnc_addSpareParts.sqf | 2 +- addons/zeus/config.cpp | 2 +- addons/zeus/functions/fnc_moduleAddSpareTrack.sqf | 2 +- addons/zeus/functions/fnc_moduleAddSpareWheel.sqf | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/repair/config.cpp b/addons/repair/config.cpp index dab412eb93..71a990ea73 100644 --- a/addons/repair/config.cpp +++ b/addons/repair/config.cpp @@ -25,5 +25,5 @@ class ACE_newEvents { setWheelHitPointDamage = QGVAR(setWheelHitPointDamage); setVehicleHitPointDamage = QGVAR(setVehicleHitPointDamage); setVehicleDamage = QGVAR(setVehicleDamage); - AddCargoByClass = "ace_addCargoByClass"; + AddCargoByClass = "ace_addCargo"; }; diff --git a/addons/repair/functions/fnc_addSpareParts.sqf b/addons/repair/functions/fnc_addSpareParts.sqf index 2d133da3c1..971abb571a 100644 --- a/addons/repair/functions/fnc_addSpareParts.sqf +++ b/addons/repair/functions/fnc_addSpareParts.sqf @@ -33,4 +33,4 @@ if (!EGVAR(common,settingsInitFinished)) exitWith { if (!_force && !GVAR(addSpareParts)) exitWith {}; // Load -["ace_addCargoByClass", [_part, _vehicle, _amount]] call CBA_fnc_localEvent; +["ace_addCargo", [_part, _vehicle, _amount]] call CBA_fnc_localEvent; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 3ec87b637c..4c9a831fd0 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -58,5 +58,5 @@ class ACE_newEvents { zeusUnitAssigned = QGVAR(zeusUnitAssigned); SetSurrendered = QEGVAR(captives,setSurrendered); SetHandcuffed = QEGVAR(captives,setHandcuffed); - AddCargoByClass = "ace_addCargoByClass"; + AddCargoByClass = "ace_addCargo"; }; diff --git a/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf b/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf index 492914eb1c..2926fafcf9 100644 --- a/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf +++ b/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf @@ -32,7 +32,7 @@ if !(["ace_cargo"] call EFUNC(common,isModLoaded) && ["ace_repair"] call EFUNC(c if (getNumber (configFile >> "CfgVehicles" >> "ACE_Track" >> QEGVAR(cargo,size)) > [_mouseOverUnit] call EFUNC(cargo,getCargoSpaceLeft)) then { [LSTRING(OnlyEnoughCargoSpace)] call EFUNC(common,displayTextStructured); } else { - ["ace_addCargoByClass", ["ACE_Track", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent; + ["ace_addCargo", ["ACE_Track", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent; }; }; }; diff --git a/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf b/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf index 105acb2b83..2c051c94b6 100644 --- a/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf +++ b/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf @@ -32,7 +32,7 @@ if !(["ace_cargo"] call EFUNC(common,isModLoaded) && ["ace_repair"] call EFUNC(c if (getNumber (configFile >> "CfgVehicles" >> "ACE_Wheel" >> QEGVAR(cargo,size)) > [_mouseOverUnit] call EFUNC(cargo,getCargoSpaceLeft)) then { [LSTRING(OnlyEnoughCargoSpace)] call EFUNC(common,displayTextStructured); } else { - ["ace_addCargoByClass", ["ACE_Wheel", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent; + ["ace_addCargo", ["ACE_Wheel", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent; }; }; }; From bbc708e3e02f48d8bb173fcc7e255e37abed45a8 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 2 Jul 2016 22:46:36 -0500 Subject: [PATCH 31/85] Less aggressive overlap detection Ensure the 2d screen pos distance is significant. --- addons/interact_menu/functions/fnc_renderActionPoints.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/interact_menu/functions/fnc_renderActionPoints.sqf b/addons/interact_menu/functions/fnc_renderActionPoints.sqf index e30ee55c10..017d3e539b 100644 --- a/addons/interact_menu/functions/fnc_renderActionPoints.sqf +++ b/addons/interact_menu/functions/fnc_renderActionPoints.sqf @@ -159,7 +159,7 @@ if (count GVAR(collectedActionPoints) > 1) then { private _delta = vectorNormalized ((GVAR(collectedActionPoints) select _i select 1) vectorDiff (GVAR(collectedActionPoints) select _j select 1)); // If _i is inside a cone with 20º half angle with origin on _j - if (_delta select 2 > 0.94) exitWith { + if ((_delta select 2 > 0.94) && {((GVAR(collectedActionPoints) select _i select 1) distance2d (GVAR(collectedActionPoints) select _j select 1)) < 0.1}) exitWith { GVAR(collectedActionPoints) deleteAt _i; }; }; From 5ad1f752ca5da178447d55cb0ca7e22dcbdd66f3 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 3 Jul 2016 12:58:40 -0500 Subject: [PATCH 32/85] Fix overheating spare barrels - Remove ACE_SpareBarrel from CfgWeapons as it is now a magazine - Don't call updateTemperature in displayTemp, as unit may not be local - Fix targetEvent error --- addons/overheating/CfgWeapons.hpp | 11 ----------- .../functions/fnc_displayTemperature.sqf | 14 +++++++++----- .../functions/fnc_loadCoolestSpareBarrel.sqf | 2 +- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/addons/overheating/CfgWeapons.hpp b/addons/overheating/CfgWeapons.hpp index 12cfe6e498..c7a83eec6e 100644 --- a/addons/overheating/CfgWeapons.hpp +++ b/addons/overheating/CfgWeapons.hpp @@ -2,17 +2,6 @@ class CfgWeapons { class ACE_ItemCore; class InventoryItem_Base_F; - class ACE_SpareBarrel: ACE_ItemCore { - displayname = CSTRING(SpareBarrelName); - descriptionshort = CSTRING(SpareBarrelDescription); - //model = ""; - picture = QPATHTOF(UI\spare_barrel_ca.paa); - scope = 2; - class ItemInfo: InventoryItem_Base_F { - mass = 30; - }; - }; - class RifleCore; class Rifle: RifleCore { //Mean Rounds Between Stoppages (this will be scaled based on the barrel temp) diff --git a/addons/overheating/functions/fnc_displayTemperature.sqf b/addons/overheating/functions/fnc_displayTemperature.sqf index b2b8d2b4c0..e829b61f57 100644 --- a/addons/overheating/functions/fnc_displayTemperature.sqf +++ b/addons/overheating/functions/fnc_displayTemperature.sqf @@ -3,7 +3,7 @@ * Displays the weapon temperature * * Arguments: - * 0: Player + * 0: Unit * 1: Weapon * * Return Values: @@ -16,11 +16,13 @@ */ #include "script_component.hpp" -params ["_player", "_weapon"]; -TRACE_2("params",_player,_weapon); +params ["_unit", "_weapon"]; +TRACE_2("params",_unit,_weapon); + +// Get unit's weapon's temperature: +private _tempVarName = format [QGVAR(%1_temp), _weapon]; +private _temperature = _unit getVariable [_tempVarName, 0]; -// Calculate cool down of weapon since last shot -private _temperature = [_player, _weapon, 0] call FUNC(updateTemperature); private _scaledTemperature = (_temperature / 1000) min 1; private _color = [ @@ -41,6 +43,8 @@ for "_a" from (_count + 1) to 12 do { _string = _string + "|"; }; +TRACE_3("",_temperature,_color,_string); + _text = composeText [_text, [_string, [0.5, 0.5, 0.5]] call EFUNC(common,stringToColoredText)]; private _picture = getText (configFile >> "CfgWeapons" >> _weapon >> "picture"); diff --git a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf index d6a9ccfe37..5f0b3ae3a9 100644 --- a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf +++ b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf @@ -50,4 +50,4 @@ _gunner setVariable [format [QGVAR(%1_temp), _weapon], _coolestTemp, true]; [GVAR(storedSpareBarrels), _coolestMag, [_weaponTemp, CBA_missionTime, _barrelMass]] call CBA_fnc_hashSet; // Send an event so the machines of the assistant and gunner can show the hint -[QGVAR(showWeaponTemperature), _gunner], [_gunner, _weapon], [_assistant] call CBA_fnc_targetEvent; +[QGVAR(showWeaponTemperature), [_gunner, _weapon], [_assistant, _gunner]] call CBA_fnc_targetEvent; From 0a5a4d2d33adb69e6c50ab2ea44406d3a517e304 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 3 Jul 2016 20:42:43 +0200 Subject: [PATCH 33/85] Fix German word order / capitalization --- addons/dragging/stringtable.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml index 646678e43d..94757299cc 100644 --- a/addons/dragging/stringtable.xml +++ b/addons/dragging/stringtable.xml @@ -32,7 +32,7 @@ Ciągnij/Puść Obiekt Táhnout/Položit Objekt Trainer/Lâcher Objets - Ziehen/Loslassen Objekt + Objekt ziehen/loslassen Arrastar/Soltar Objeto Trascina/Lascia Oggetto Húzás/Elengedés Objektum From ea140f63a5fcbda49eaf9cb4bc65e6f1db6a093e Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 3 Jul 2016 15:17:00 -0500 Subject: [PATCH 34/85] Refuel - Simplify Actions, Fix Van_01 config --- addons/refuel/CfgVehicles.hpp | 30 +++++++++++++++--------------- addons/refuel/XEH_postInit.sqf | 13 +++++++++++++ 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/addons/refuel/CfgVehicles.hpp b/addons/refuel/CfgVehicles.hpp index 6774140cc7..c8af4268c4 100644 --- a/addons/refuel/CfgVehicles.hpp +++ b/addons/refuel/CfgVehicles.hpp @@ -52,21 +52,13 @@ #define MACRO_CONNECT_ACTIONS \ class ACE_Actions { \ class ACE_MainActions { \ - class GVAR(Refuel) { \ - displayName = CSTRING(Refuel); \ + class GVAR(Refuel_Connect) { \ + displayName = CSTRING(Connect); \ distance = REFUEL_ACTION_DISTANCE; \ - condition = "true"; \ - statement = ""; \ - showDisabled = 0; \ - priority = 2; \ + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canConnectNozzle)); \ + statement = QUOTE([ARR_2(_player,_target)] call DFUNC(connectNozzle)); \ icon = QPATHTOF(ui\icon_refuel_interact.paa); \ - class GVAR(Connect) { \ - displayName = CSTRING(Connect); \ - condition = QUOTE([ARR_2(_player,_target)] call FUNC(canConnectNozzle)); \ - statement = QUOTE([ARR_2(_player,_target)] call DFUNC(connectNozzle)); \ - exceptions[] = {"isNotInside"}; \ - icon = QPATHTOF(ui\icon_refuel_interact.paa); \ - }; \ + exceptions[] = {"isNotInside"}; \ }; \ }; \ }; @@ -76,6 +68,7 @@ class ACE_MainActions { \ displayName = CSTRING(Refuel); \ distance = REFUEL_ACTION_DISTANCE; \ + position = "[0,-0.025,0.125]"; \ condition = "true"; \ statement = ""; \ showDisabled = 0; \ @@ -318,13 +311,20 @@ class CfgVehicles { GVAR(fuelCapacity) = 80; }; - class Van_01_fuel_base_F: Van_01_base_F { + class Van_01_fuel_base_F: Van_01_base_F {}; + class C_Van_01_fuel_F: Van_01_fuel_base_F { transportFuel = 0; //1k MACRO_REFUEL_ACTIONS GVAR(hooks)[] = {{0.38,-3.17,-.7},{-0.41,-3.17,-.7}}; GVAR(fuelCargo) = 2000; }; - + class I_G_Van_01_fuel_F: Van_01_fuel_base_F { + transportFuel = 0; //1k + MACRO_REFUEL_ACTIONS + GVAR(hooks)[] = {{0.38,-3.17,-.7},{-0.41,-3.17,-.7}}; + GVAR(fuelCargo) = 2000; + }; + class Tank_F: Tank { GVAR(fuelCapacity) = 1200; }; diff --git a/addons/refuel/XEH_postInit.sqf b/addons/refuel/XEH_postInit.sqf index 8c28464287..89a1f3dc45 100644 --- a/addons/refuel/XEH_postInit.sqf +++ b/addons/refuel/XEH_postInit.sqf @@ -9,3 +9,16 @@ if (isServer) then { [QGVAR(resetLocal), { _this call FUNC(resetLocal); }] call CBA_fnc_addEventHandler; + + +#ifdef DEBUG_MODE_FULL +diag_log text format ["[ACE-refuel] Showing CfgVehicles with vanilla transportFuel"]; +private _fuelTrucks = configProperties [configFile >> "CfgVehicles", "(isClass _x) && {(getNumber (_x >> 'transportFuel')) > 0}", true]; +{ + if ((configName _x) isKindOf "Car") then { + diag_log text format ["Car [%1] needs config [fuel: %2]", configName _x, getNumber (_x >> 'transportFuel')]; + } else { + diag_log text format ["Non-car? [%1] needs config [fuel: %2]", configName _x, getNumber (_x >> 'transportFuel')]; + }; +} forEach _fuelTrucks; +#endif From e40415b6284689250c6a8898e7d8e57f4b3c0544 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 4 Jul 2016 01:17:30 -0500 Subject: [PATCH 35/85] Add #undef for PREP w/ DISABLE_COMPILE_CACHE --- addons/main/script_macros.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index c7997dee28..05db6cd146 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -84,6 +84,7 @@ #define TYPE_BACKPACK 901 #ifdef DISABLE_COMPILE_CACHE + #undef PREP #define PREP(fncName) DFUNC(fncName) = compile preprocessFileLineNumbers QPATHTOF(functions\DOUBLES(fnc,fncName).sqf) #else #undef PREP From 8a572ace410b57de7570cf7d0ce8604581b73216 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 4 Jul 2016 15:31:25 -0500 Subject: [PATCH 36/85] Make ace news fit apex menu style --- addons/optionsmenu/gui/aceMenuIcon_ca.paa | Bin 0 -> 22016 bytes addons/optionsmenu/gui/define.hpp | 5 + addons/optionsmenu/gui/pauseMenu.hpp | 122 ++++++++++++-------- addons/optionsmenu/init_loadMainMenuBox.sqf | 19 +-- 4 files changed, 90 insertions(+), 56 deletions(-) create mode 100644 addons/optionsmenu/gui/aceMenuIcon_ca.paa diff --git a/addons/optionsmenu/gui/aceMenuIcon_ca.paa b/addons/optionsmenu/gui/aceMenuIcon_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..0e3c1853e2a8ce34303cb0b6d79a887fbd154ab1 GIT binary patch literal 22016 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 literal 0 HcmV?d00001 diff --git a/addons/optionsmenu/gui/define.hpp b/addons/optionsmenu/gui/define.hpp index c2b1faf9cf..9620bdd7e6 100644 --- a/addons/optionsmenu/gui/define.hpp +++ b/addons/optionsmenu/gui/define.hpp @@ -12,6 +12,11 @@ class RscHTML; class RscText; +class RscControlsGroupNoHScrollbars; +class RscPicture; +class RscButtonMenu; + + #ifndef ACE_DEFINE_H #define ACE_DEFINE_H diff --git a/addons/optionsmenu/gui/pauseMenu.hpp b/addons/optionsmenu/gui/pauseMenu.hpp index 34f368df4a..e3a283d2c7 100644 --- a/addons/optionsmenu/gui/pauseMenu.hpp +++ b/addons/optionsmenu/gui/pauseMenu.hpp @@ -108,62 +108,90 @@ class RscDisplayMain: RscStandardDisplay { idc = 80085; }; - class ACE_news: RscControlsGroupNoScrollbars { - idc = 80086; - x = "safezoneX + safezoneW - (16 *(((safezoneW / safezoneH) min 1.2) / 40))"; - y = "safezoneY + (18.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))"; - w = "15 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "4.95 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - class controls { - class ACE_NewsTitle: RscText { - text = CSTRING(aceNews); - colorBackground[] = {(162/255),(28/255),(28/255),0.8}; - idc = -1; - x = "0 * (((safezoneW / safezoneH) min 1.2) / 40)"; - y = "0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - w = "15 *(((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - }; - class ACE_VersionInfo: RscText { - idc = 68; - x = "0 * (((safezoneW / safezoneH) min 1.2) / 40)"; - y = "1.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - w = "15 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - colorBackground[] = {0,0,0,0.5}; - }; - class ACE_NewsBackground: RscText { - idc = -1; - x = "0 * (((safezoneW / safezoneH) min 1.2) / 40)"; - y = "2.2 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - w = "15 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "5.75 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - colorBackground[] = {0,0,0,0.5}; - }; - class ACE_NewsText: RscHTML { - idc = 69; - x = "0.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; - y = "2.2 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - w = "14 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "2.75 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + class ACE_news_apex: RscControlsGroupNoHScrollbars { + idc = 80090; + x = "safezoneX + safezoneW - 10 * (pixelW * pixelGrid * 2) - (4 * pixelH)"; + y = "safezoneY + safezoneH - (3 * 2 + 1) * (pixelH * pixelGrid * 2) - 3 * (4 * pixelH)"; + w = "10 * (pixelW * pixelGrid * 2)"; + h = "2 * (pixelH * pixelGrid * 2)"; + class Controls { + class Background: RscPicture { + idc = 80091; + text = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\gradientMods_ca.paa"; + colorText[] = {0,0,0,0.75}; + x = "(10 - 4 * 2) * (pixelW * pixelGrid * 2)"; + y = 0; + w = "4 * 2 * (pixelW * pixelGrid * 2)"; + h = "2 * (pixelH * pixelGrid * 2)"; + angle = 180; + }; + class BackgroundIcon: RscPicture { + idc = 80092; + text = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\backgroundModsIcon_ca.paa"; + colorText[] = {0,0,0,0.75}; + x = "(10 - 2 * 2) * (pixelW * pixelGrid * 2)"; + y = 0; + w = "2 * 2 * (pixelW * pixelGrid * 2)"; + h = "2 * (pixelH * pixelGrid * 2)"; + angle = 180; + }; + class Icon: RscPicture { + idc = 80093; + text = QPATHTOF(gui\aceMenuIcon_ca.paa); + colorText[] = {1,1,1,0.5}; + x = "(10 - 2) * (pixelW * pixelGrid * 2)"; + y = 0; + w = "2 * (pixelW * pixelGrid * 2)"; + h = "2 * (pixelH * pixelGrid * 2)"; + }; + class CurrentVersionInfo: RscText { + idc = 80094; + style = 1; + text = ""; + sizeEx = "(pixelH * pixelGrid * 1.5)"; + font = "RobotoCondensedLight"; + shadow = 1; + colorBackground[] = {0,0,0,0}; + x = 0; + y = 0; + w = "(10 - 1.25 * 2) * (pixelW * pixelGrid * 2)"; + h = "2 * (pixelH * pixelGrid * 1)"; + onLoad = "(_this select 0) ctrlenable false;"; + }; + class HTTPVersionInfo: RscHTML { + idc = 80095; shadow = 0; class H1 { - font = "RobotoCondensed"; + sizeEx = "(pixelH * pixelGrid * 1.5)"; + font = "RobotoCondensedLight"; fontBold = "RobotoCondensedLight"; - sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; + align = "right"; }; class H2: H1 { - sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)"; - font = "RobotoCondensedLight"; + sizeEx = "(pixelH * pixelGrid * 1.5)"; }; class P: H1 { - sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - fontBold = "RobotoCondensedLight"; + sizeEx = "(pixelH * pixelGrid * 1.5)"; }; - colorBold[] = {0.6,0.6,0.6,1}; - colorLink[] = {"(profilenamespace getVariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getVariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getVariable ['GUI_BCG_RGB_B',0.5])",1}; - colorLinkActive[] = {"(profilenamespace getVariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getVariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getVariable ['GUI_BCG_RGB_B',0.5])",1}; + x = 0; + y = "2 * (pixelH * pixelGrid * 1)"; + w = "(10 - 1.25 * 2) * (pixelW * pixelGrid * 2)"; + h = "2 * (pixelH * pixelGrid * 1)"; + onLoad = "(_this select 0) ctrlenable false;"; + }; + class Button: RscButtonMenu { + idc = 80096; + colorBackground[] = {0,0,0,0}; + colorBackgroundFocused[] = {0,0,0,0}; + colorBackground2[] = {0,0,0,0}; + x = 0; + y = 0; + w = "10 * (pixelW * pixelGrid * 2)"; + h = "2 * (pixelH * pixelGrid * 2)"; + + tooltip = "Download latest and report issues:"; + url = "https://github.com/acemod/ACE3"; }; }; }; diff --git a/addons/optionsmenu/init_loadMainMenuBox.sqf b/addons/optionsmenu/init_loadMainMenuBox.sqf index 9c556e5128..a9b8f5a02a 100644 --- a/addons/optionsmenu/init_loadMainMenuBox.sqf +++ b/addons/optionsmenu/init_loadMainMenuBox.sqf @@ -15,17 +15,18 @@ */ #include "script_component.hpp" -if (missionNamespace getVariable [QGVAR(newsLoaded), false]) exitWith {}; -GVAR(newsLoaded) = true; - //Need to load from profileNamespace because ace_settings might not be init if world = empty if (profileNamespace getVariable [QGVAR(showNewsOnMainMenu), true]) then { - ((_this select 0) displayCtrl 80086) ctrlShow true; + ((_this select 0) displayCtrl 80090) ctrlShow true; - private ["_version"]; - _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr"); - ((_this select 0) displayCtrl 68) ctrlSetText format ["Installed Version: %1", _version]; - ((_this select 0) displayCtrl 69) htmlLoad "http://ace3mod.com/version.html"; + private _ace3VersionStr = (getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr")) select [0,5]; + ((_this select 0) displayCtrl 80094) ctrlSetText format ["Version: %1", _ace3VersionStr]; + ((_this select 0) displayCtrl 80095) htmlLoad "http://ace3mod.com/version.html"; } else { - ((_this select 0) displayCtrl 80086) ctrlShow false; + ((_this select 0) displayCtrl 80090) ctrlShow false; }; + +/* +Note: switch version.html to simpler format and right align +

Latest: {{site.ace.version.major}}.{{site.ace.version.minor}}.{{site.ace.version.patch}}

+*/ From e26eda3ac20bbc3e1cb46f4d28de0966e708842d Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Mon, 4 Jul 2016 19:04:58 -0300 Subject: [PATCH 37/85] - Optimize getDetectedObject - Cache detected mines for 0.15 s - Call detectorLoop every 0.05 s instead of 0.01s - Compile a dictionary of detectable classnames from config at start - Switch to playSound3d for global effect - Remove dummy - Change config entries to support playSound3d - Cache getDetectorConfig for better interaction menu performance - Change sound to mono wss - Close #4049 --- addons/minedetector/ACE_detector.hpp | 6 +-- addons/minedetector/CfgSounds.hpp | 22 --------- addons/minedetector/CfgVehicles.hpp | 4 -- addons/minedetector/XEH_clientInit.sqf | 33 +++++++------ addons/minedetector/XEH_preInit.sqf | 3 -- addons/minedetector/config.cpp | 1 - .../functions/fnc_detectorLoop.sqf | 44 ++++++++++-------- .../functions/fnc_getDetectedObject.sqf | 35 +++++--------- .../functions/fnc_getDetectorConfig.sqf | 27 ++++++----- .../functions/fnc_playDetectorSound.sqf | 22 +++------ addons/minedetector/script_component.hpp | 2 + addons/minedetector/sounds/metal_detector.wss | Bin 0 -> 56474 bytes 12 files changed, 81 insertions(+), 118 deletions(-) delete mode 100644 addons/minedetector/CfgSounds.hpp create mode 100644 addons/minedetector/sounds/metal_detector.wss diff --git a/addons/minedetector/ACE_detector.hpp b/addons/minedetector/ACE_detector.hpp index b6effc2436..f575ab9cd7 100644 --- a/addons/minedetector/ACE_detector.hpp +++ b/addons/minedetector/ACE_detector.hpp @@ -1,10 +1,10 @@ class ACE_detector { - class detectableObjects { - }; class detectors { class ACE_VMM3 { radius = 2.5; - sounds[] = {"ace_detector_1", "ace_detector_2", "ace_detector_3", "ace_detector_4"}; + name = "ace_detector_1"; + sound = QUOTE(PATHTO_R(sounds\metal_detector.wss)); + pitchs[] = {1, 0.9, 0.8, 0.7}; }; class ACE_VMH3: ACE_VMM3 { }; diff --git a/addons/minedetector/CfgSounds.hpp b/addons/minedetector/CfgSounds.hpp deleted file mode 100644 index 544bf94379..0000000000 --- a/addons/minedetector/CfgSounds.hpp +++ /dev/null @@ -1,22 +0,0 @@ -class CfgSounds { - class ace_detector_1 { - name = "ace_detector_1"; - sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wav)), "db+1", 1}; - titles[] = {}; - }; - class ace_detector_2 { - name = "ace_detector_2"; - sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wav)), "db+1", 0.9}; - titles[] = {}; - }; - class ace_detector_3 { - name = "ace_detector_3"; - sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wav)), "db+1", 0.8}; - titles[] = {}; - }; - class ace_detector_4 { - name = "ace_detector_4"; - sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wav)), "db+1", 0.7}; - titles[] = {}; - }; -}; diff --git a/addons/minedetector/CfgVehicles.hpp b/addons/minedetector/CfgVehicles.hpp index c486a049e3..1f770df675 100644 --- a/addons/minedetector/CfgVehicles.hpp +++ b/addons/minedetector/CfgVehicles.hpp @@ -15,8 +15,6 @@ class CfgVehicles { displayName = CSTRING(ActivateDetector); condition = QUOTE(call FUNC(canActivateDetector)); statement = QUOTE(call FUNC(activateDetector)); - showDisabled = 0; - priority = 0.1; icon = QPATHTOF(ui\icon_mineDetectorOn.paa); exceptions[] = {}; }; @@ -24,8 +22,6 @@ class CfgVehicles { displayName = CSTRING(DeactivateDetector); condition = QUOTE(call FUNC(canDeactivateDetector)); statement = QUOTE(call FUNC(deactivateDetector)); - showDisabled = 0; - priority = 0.1; icon = QPATHTOF(ui\icon_mineDetectorOff.paa); exceptions[] = {}; }; diff --git a/addons/minedetector/XEH_clientInit.sqf b/addons/minedetector/XEH_clientInit.sqf index 83aca7467a..ca660ad51d 100644 --- a/addons/minedetector/XEH_clientInit.sqf +++ b/addons/minedetector/XEH_clientInit.sqf @@ -1,27 +1,30 @@ #include "script_component.hpp" +// Create a dictionary to store detector configs +GVAR(detectorConfigs) = call CBA_fnc_createNamespace; + +// Create a dictionary of detectable classnames +GVAR(detectableClasses) = call CBA_fnc_createNamespace; +{ + if ((getNumber (_x >> QGVAR(detectable))) == 1) then { + GVAR(detectableClasses) setVariable [configName _x, true]; + }; +} forEach (configProperties [configFile >> "CfgVehicles", "isClass _x", true]); +{ + if ((getNumber (_x >> QGVAR(detectable))) == 1) then { + GVAR(detectableClasses) setVariable [configName _x, true]; + }; +} forEach (configProperties [configFile >> "CfgAmmo", "isClass _x", true]); + [QGVAR(detectorEnabled), { params ["_unit", "_type"]; private _config = [_type] call FUNC(getDetectorConfig); - private _helperObject = "ACE_LogicDummy" createVehicleLocal (getPos _unit); - _unit setVariable [QGVAR(helperLogic), _helperObject]; - - [FUNC(detectorLoop), 0.01, [_unit, _type, _config, CBA_missionTime, _helperObject]] call CBA_fnc_addPerFrameHandler; + [FUNC(detectorLoop), 0.05, [_unit, _type, _config, CBA_missionTime - 0.25]] call CBA_fnc_addPerFrameHandler; }] call CBA_fnc_addEventHandler; -[QGVAR(detectorDisabled), { - params ["_unit", "_type"]; - private _helperObject = _unit getVariable [QGVAR(helperLogic), objNull]; - if !(isNull _helperObject) then { - deleteVehicle _helperObject; - }; -}] call CBA_fnc_addEventHandler; - - - -//Shows detector and mine posistions in 3d when debug is on +// Shows detector and mine posistions in 3d when debug is on #ifdef DEBUG_MODE_FULL GVAR(debugDetector) = []; addMissionEventHandler ["Draw3D", { diff --git a/addons/minedetector/XEH_preInit.sqf b/addons/minedetector/XEH_preInit.sqf index 9529c201c5..a7feade1c3 100644 --- a/addons/minedetector/XEH_preInit.sqf +++ b/addons/minedetector/XEH_preInit.sqf @@ -4,7 +4,4 @@ ADDON = false; #include "XEH_PREP.hpp" -// TODO load from config instead of hardcoded in sqf -GVAR(ALL_DETECTABLE_TYPES) = ["ACE_Explosive_Object", "ACE_Explosive_Helper", "ACE_Explosives_Place", "ModuleMine_F", "TimeBombCore", "MineBase", "DirectionalBombBase", "BoundingMineBase", "PipeBombBase"]; - ADDON = true; diff --git a/addons/minedetector/config.cpp b/addons/minedetector/config.cpp index 9926d08f8c..9b3fbf2581 100644 --- a/addons/minedetector/config.cpp +++ b/addons/minedetector/config.cpp @@ -18,5 +18,4 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "CfgAmmo.hpp" #include "CfgVehicles.hpp" -#include "CfgSounds.hpp" #include "ACE_detector.hpp" diff --git a/addons/minedetector/functions/fnc_detectorLoop.sqf b/addons/minedetector/functions/fnc_detectorLoop.sqf index 4a708147e2..4217a0b4de 100644 --- a/addons/minedetector/functions/fnc_detectorLoop.sqf +++ b/addons/minedetector/functions/fnc_detectorLoop.sqf @@ -32,24 +32,28 @@ if !([_unit, _type] call FUNC(isDetectorEnabled)) exitWith { [_idPFH] call CBA_fnc_removePerFrameHandler; }; -if (ACE_player == _unit && {currentWeapon _unit == _type}) then { - private _detected = [_unit, _detectorConfig] call FUNC(getDetectedObject); - _detected params ["_hasDetected", "_object", "_distance"]; - private _distanceTiming = switch (true) do { - case (_distance >= 2): {1}; - case (_distance >= 1.25): {0.85}; - case (_distance >= 0.75): {0.7}; - default {0.5}; - }; - if (_hasDetected && {(CBA_missionTime - _lastPlayed > _distanceTiming)}) then { - _args set [3, CBA_missionTime]; - _detectorConfig params ["_type", "_radius", "_detectableTypes", "_sounds"]; - private _sound = switch (true) do { - case (_distance >= 2): {_sounds select 3}; - case (_distance >= 1.25): {_sounds select 2}; - case (_distance >= 0.5): {_sounds select 1}; - default {_sounds select 0}; - }; - [_unit, _sound, true] call FUNC(playDetectorSound); - }; +if (ACE_player != _unit || {currentWeapon _unit != _type}) exitWith {}; + +private _detected = [[_unit, _detectorConfig], FUNC(getDetectedObject), _unit, QGVAR(detectedObjects), 0.15] call EFUNC(common,cachedCall); +_detected params ["_hasDetected", "", "_distance"]; + +if (!_hasDetected) exitWith {}; + +private _distanceTiming = switch (true) do { + case (_distance >= 2): {1}; + case (_distance >= 1.25): {0.85}; + case (_distance >= 0.75): {0.7}; + default {0.5}; }; + +if (CBA_missionTime - _lastPlayed < _distanceTiming) exitWith {}; + +_args set [3, CBA_missionTime]; +_detectorConfig params ["", "", "_sound", "_pitchs"]; +private _pitch = switch (true) do { + case (_distance >= 2): {_pitchs select 3}; + case (_distance >= 1.25): {_pitchs select 2}; + case (_distance >= 0.5): {_pitchs select 1}; + default {_pitchs select 0}; +}; +[_unit, _sound, _pitch] call FUNC(playDetectorSound); diff --git a/addons/minedetector/functions/fnc_getDetectedObject.sqf b/addons/minedetector/functions/fnc_getDetectedObject.sqf index 79c20964ca..6e6081ed58 100644 --- a/addons/minedetector/functions/fnc_getDetectedObject.sqf +++ b/addons/minedetector/functions/fnc_getDetectedObject.sqf @@ -1,6 +1,6 @@ /* * Author: Glowbal - * Enables the mine detector + * Get the distance to the nearest detectable object * * Arguments: * 0: Unit @@ -15,16 +15,13 @@ * Public: No */ -#define __DR 1.3 - #include "script_component.hpp" params ["_unit", "_detectorConfig"]; -_detectorConfig params ["_type", "_radius", "_detectableTypes", "_sounds"]; +_detectorConfig params ["", "_radius"]; private _worldPosition = _unit modelToWorld (_unit selectionPosition "granat"); private _direction = _unit weaponDirection "Put"; - private _detectorPointAGL = _worldPosition vectorAdd (_direction vectorMultiply __DR); private _nearestObjects = nearestObjects [_detectorPointAGL, [], _radius]; @@ -38,27 +35,19 @@ private _mine = objNull; private _distance = -1; { - private _object = _x; + private _objectType = typeOf _x; - if ({_object isKindOf _x} count _detectableTypes > 0) then { - //Try all unprepared mines in range and use first detectable one: - if ((getNumber (configFile >> "CfgVehicles" >> (typeOf _x) >> QGVAR(detectable))) == 1) exitWith { - _isDetectable = true; - _mine = _x; - _distance = _detectorPointAGL distance _x; - }; - //Try all prepared mines in range and use first detectable one: - if ((getNumber (configFile >> "CfgAmmo" >> (typeOf _x) >> QGVAR(detectable))) == 1) exitWith { - _isDetectable = true; - _mine = _x; - _distance = _detectorPointAGL distance _x; - }; + _isDetectable = GVAR(detectableClasses) getVariable _objectType; + if (isNil "_isDetectable") then { + _isDetectable = false; }; - if (!isNull _mine) exitWith {}; - + // If a nun-null object was detected exit the search + if (_isDetectable && {!isNull _x}) exitWith { + _distance = _detectorPointAGL distance _x; + _mine = _x; + TRACE_3("return", _isDetectable, _mine, _distance); + }; } forEach _nearestObjects; -TRACE_3("return",_isDetectable,_mine,_distance); - [_isDetectable, _mine, _distance]; diff --git a/addons/minedetector/functions/fnc_getDetectorConfig.sqf b/addons/minedetector/functions/fnc_getDetectorConfig.sqf index 87b9d0a88a..17b609cd77 100644 --- a/addons/minedetector/functions/fnc_getDetectorConfig.sqf +++ b/addons/minedetector/functions/fnc_getDetectorConfig.sqf @@ -1,6 +1,6 @@ /* * Author: Glowbal - * Get the mine detector configuration from the config file + * Get the mine detector configuration from the cache or config file * * Arguments: * 0: Detector class name @@ -18,14 +18,19 @@ params ["_detectorType"]; -private _config = (configFile >> "ACE_detector" >> "detectors" >> _detectorType); -if (isClass _config) then { - [ - _detectorType, - getNumber (_config >> "radius"), - GVAR(ALL_DETECTABLE_TYPES), // TODO read from config and use this as a back up value instead - getArray (_config >> "sounds") - ]; -} else { - []; +private _detectorConfig = GVAR(detectorConfigs) getVariable _detectorType; +if (isNil "_detectorConfig") then { + private _cfgEntry = (configFile >> "ACE_detector" >> "detectors" >> _detectorType); + if (isClass _cfgEntry) then { + _detectorConfig = [ + _detectorType, + getNumber (_cfgEntry >> "radius"), + getText (_cfgEntry >> "sound"), + getArray (_cfgEntry >> "pitchs") + ]; + } else { + _detectorConfig = []; + }; + GVAR(detectorConfigs) setVariable [_detectorType, _detectorConfig]; }; +_detectorConfig diff --git a/addons/minedetector/functions/fnc_playDetectorSound.sqf b/addons/minedetector/functions/fnc_playDetectorSound.sqf index 4da6b5f45c..1fff29531c 100644 --- a/addons/minedetector/functions/fnc_playDetectorSound.sqf +++ b/addons/minedetector/functions/fnc_playDetectorSound.sqf @@ -4,20 +4,21 @@ * * Arguments: * 0: Unit - * 1: Sound class name + * 1: Sound file name + * 2: Sound pitch * * Return Value: * None * * Example: - * [player, "ace_buzz_1"] call ace_minedetector_fnc_playDetectorSound + * [player, "ace_buzz_1", 1] call ace_minedetector_fnc_playDetectorSound * * Public: No */ #include "script_component.hpp" -params ["_unit", "_detectorSound"]; +params ["_unit", "_sound", "_pitch"]; if (isNull _unit) exitWith { ACE_LOGERROR_1("unit does not exist [%1]",_unit); @@ -26,17 +27,6 @@ if (!alive _unit) exitWith { ACE_LOGERROR_1("unit is not alive [%1]",_unit); }; -private _helperObject = _unit getVariable [QGVAR(helperLogic), objNull]; -if (!isNull _helperObject) then { - deleteVehicle _helperObject; -}; -_helperObject = "ACE_LogicDummy" createVehicleLocal (getPos _unit); +private _posASL = AGLtoASL (_unit modelToWorld (_unit selectionPosition "granat")); -if !(isNull _helperObject) then { - _helperObject attachTo [_unit,[0,0,-3],""]; - _unit setVariable [QGVAR(helperLogic), _helperObject]; - - [_helperObject, _unit] say3D _detectorSound; -} else { - ACE_LOGERROR_1("helper does not exist [%1]",_helperObject); -}; +playSound3D [_sound, objNull, false, _posASL, 5, _pitch, 15]; diff --git a/addons/minedetector/script_component.hpp b/addons/minedetector/script_component.hpp index 935825a31c..f6a1d05dfc 100644 --- a/addons/minedetector/script_component.hpp +++ b/addons/minedetector/script_component.hpp @@ -16,3 +16,5 @@ #endif #include "\z\ace\addons\main\script_macros.hpp" + +#define __DR 1.3 diff --git a/addons/minedetector/sounds/metal_detector.wss b/addons/minedetector/sounds/metal_detector.wss new file mode 100644 index 0000000000000000000000000000000000000000..9f62569c10ce01da38b823fdc8a6fdcb475e3e83 GIT binary patch literal 56474 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�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 Q-$|)K>#nT|Q7-rY0Aq-bZ2$lO literal 0 HcmV?d00001 From 30532983a1f8e37a25894b4a702858080706c29e Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Mon, 4 Jul 2016 19:32:40 -0300 Subject: [PATCH 38/85] Improve the positioning of the detector point --- addons/minedetector/functions/fnc_getDetectedObject.sqf | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/minedetector/functions/fnc_getDetectedObject.sqf b/addons/minedetector/functions/fnc_getDetectedObject.sqf index 6e6081ed58..0b6faa6168 100644 --- a/addons/minedetector/functions/fnc_getDetectedObject.sqf +++ b/addons/minedetector/functions/fnc_getDetectedObject.sqf @@ -21,8 +21,12 @@ params ["_unit", "_detectorConfig"]; _detectorConfig params ["", "_radius"]; private _worldPosition = _unit modelToWorld (_unit selectionPosition "granat"); -private _direction = _unit weaponDirection "Put"; -private _detectorPointAGL = _worldPosition vectorAdd (_direction vectorMultiply __DR); +private _ref = (_unit weaponDirection currentWeapon _unit) call EFUNC(common,createOrthonormalReference); +_ref params ["_v1", "_v2", "_v3"]; +private _detectorPointAGL = _worldPosition vectorAdd + (_v1 vectorMultiply ( 0.9 * __DR)) vectorAdd + (_v2 vectorMultiply (-0.2 * __DR)) vectorAdd + (_v3 vectorMultiply ( 0.4 * __DR)); private _nearestObjects = nearestObjects [_detectorPointAGL, [], _radius]; From 6c732bf7897495a3b69804e3fe17d8e31ac193af Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 5 Jul 2016 00:22:47 -0500 Subject: [PATCH 39/85] Fix action name, put actions on base class --- addons/refuel/CfgVehicles.hpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/addons/refuel/CfgVehicles.hpp b/addons/refuel/CfgVehicles.hpp index c8af4268c4..dd7499a69a 100644 --- a/addons/refuel/CfgVehicles.hpp +++ b/addons/refuel/CfgVehicles.hpp @@ -52,7 +52,7 @@ #define MACRO_CONNECT_ACTIONS \ class ACE_Actions { \ class ACE_MainActions { \ - class GVAR(Refuel_Connect) { \ + class GVAR(Connect) { \ displayName = CSTRING(Connect); \ distance = REFUEL_ACTION_DISTANCE; \ condition = QUOTE([ARR_2(_player,_target)] call FUNC(canConnectNozzle)); \ @@ -311,18 +311,16 @@ class CfgVehicles { GVAR(fuelCapacity) = 80; }; - class Van_01_fuel_base_F: Van_01_base_F {}; - class C_Van_01_fuel_F: Van_01_fuel_base_F { - transportFuel = 0; //1k + class Van_01_fuel_base_F: Van_01_base_F { MACRO_REFUEL_ACTIONS GVAR(hooks)[] = {{0.38,-3.17,-.7},{-0.41,-3.17,-.7}}; GVAR(fuelCargo) = 2000; }; + class C_Van_01_fuel_F: Van_01_fuel_base_F { + transportFuel = 0; //1k + }; class I_G_Van_01_fuel_F: Van_01_fuel_base_F { transportFuel = 0; //1k - MACRO_REFUEL_ACTIONS - GVAR(hooks)[] = {{0.38,-3.17,-.7},{-0.41,-3.17,-.7}}; - GVAR(fuelCargo) = 2000; }; class Tank_F: Tank { From bd2a06386181d0a88443a1db80f37d50facbb4d1 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 5 Jul 2016 23:01:25 +0200 Subject: [PATCH 40/85] Fix pboProject false/true becoming 0/1 in UI config, Default ammoCount to off (#4041) --- addons/fcs/ACE_UI.hpp | 2 +- addons/reload/ACE_UI.hpp | 2 +- addons/ui/ACE_Settings.hpp | 2 +- addons/ui/CfgVehicles.hpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/fcs/ACE_UI.hpp b/addons/fcs/ACE_UI.hpp index ca35779f36..9423e49656 100644 --- a/addons/fcs/ACE_UI.hpp +++ b/addons/fcs/ACE_UI.hpp @@ -1,7 +1,7 @@ class ACE_UI { class gunnerZeroing { class conditions { - ADDON = "false"; + ADDON = "(false)"; }; }; }; diff --git a/addons/reload/ACE_UI.hpp b/addons/reload/ACE_UI.hpp index 6dae3e5147..8164d04b17 100644 --- a/addons/reload/ACE_UI.hpp +++ b/addons/reload/ACE_UI.hpp @@ -1,7 +1,7 @@ class ACE_UI { class ammoCount { class conditions { - ADDON = "false"; + ADDON = "(false)"; }; }; }; diff --git a/addons/ui/ACE_Settings.hpp b/addons/ui/ACE_Settings.hpp index e6c3e5e496..c02d5be2b6 100644 --- a/addons/ui/ACE_Settings.hpp +++ b/addons/ui/ACE_Settings.hpp @@ -83,7 +83,7 @@ class ACE_Settings { displayName = CSTRING(AmmoCount); description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; - value = 1; + value = 0; isClientSettable = 1; }; class GVAR(magCount) { diff --git a/addons/ui/CfgVehicles.hpp b/addons/ui/CfgVehicles.hpp index 0b1cc9b2a9..563cf22ce1 100644 --- a/addons/ui/CfgVehicles.hpp +++ b/addons/ui/CfgVehicles.hpp @@ -73,7 +73,7 @@ class CfgVehicles { displayName = CSTRING(AmmoCount); description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; - defaultValue = 1; + defaultValue = 0; }; class magCount { displayName = CSTRING(MagCount); From 022e7747b121e968cd103b996163999d5a2549c2 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 5 Jul 2016 20:58:32 -0500 Subject: [PATCH 41/85] Fix no attack profile on static titan launcher (#4023) --- addons/javelin/functions/fnc_cycleFireMode.sqf | 6 +++--- addons/javelin/functions/fnc_onOpticDraw.sqf | 2 +- addons/javelin/functions/fnc_onOpticLoad.sqf | 6 ++++-- addons/javelin/functions/fnc_showFireMode.sqf | 6 +++--- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/addons/javelin/functions/fnc_cycleFireMode.sqf b/addons/javelin/functions/fnc_cycleFireMode.sqf index d14c0cdee5..50609b3468 100644 --- a/addons/javelin/functions/fnc_cycleFireMode.sqf +++ b/addons/javelin/functions/fnc_cycleFireMode.sqf @@ -2,12 +2,12 @@ #include "script_component.hpp" TRACE_1("enter", _this); -private["_player", "_currentFireMode"]; +private _currentShooter = if (ACE_player call CBA_fnc_canUseWeapon) then {ACE_player} else {vehicle ACE_player}; +private _currentFireMode = _currentShooter getVariable["ace_missileguidance_attackProfile", "JAV_TOP"]; -_currentFireMode = ACE_player getVariable["ace_missileguidance_attackProfile", "JAV_TOP"]; if(_currentFireMode == "JAV_DIR") then { _currentFireMode = "JAV_TOP"; } else { _currentFireMode = "JAV_DIR"; }; -ACE_player setVariable["ace_missileguidance_attackProfile", _currentFireMode, false]; +_currentShooter setVariable["ace_missileguidance_attackProfile", _currentFireMode, false]; diff --git a/addons/javelin/functions/fnc_onOpticDraw.sqf b/addons/javelin/functions/fnc_onOpticDraw.sqf index 20606dc4dd..7d1bf64b33 100644 --- a/addons/javelin/functions/fnc_onOpticDraw.sqf +++ b/addons/javelin/functions/fnc_onOpticDraw.sqf @@ -11,7 +11,7 @@ private["_firedEH", "_fov", "_lastTick", "_lockTime", "_maxX", "_maxY", "_minX", private["_offsetX", "_offsetY", "_pos", "_randomLockInterval", "_randomPosWithinBounds", "_range"]; private["_runTime", "_soundTime", "_targetArray", "_zamerny", "_currentShooter"]; -_currentShooter = (vehicle ACE_player); +_currentShooter = if (ACE_player call CBA_fnc_canUseWeapon) then {ACE_player} else {vehicle ACE_player}; #define __OffsetX ((ctrlPosition __JavelinIGUITargetingLineV) select 0) - 0.5 #define __OffsetY ((ctrlPosition __JavelinIGUITargetingLineH) select 1) - 0.5 diff --git a/addons/javelin/functions/fnc_onOpticLoad.sqf b/addons/javelin/functions/fnc_onOpticLoad.sqf index b75f391112..5148ca983f 100644 --- a/addons/javelin/functions/fnc_onOpticLoad.sqf +++ b/addons/javelin/functions/fnc_onOpticLoad.sqf @@ -2,13 +2,15 @@ #include "script_component.hpp" TRACE_1("enter", _this); -#define __LOCKONTIMERANDOM 2 // Deviation in lock on time +#define __LOCKONTIMERANDOM 1 // Deviation in lock on time if((count _this) > 0) then { uiNameSpace setVariable ['ACE_RscOptics_javelin',_this select 0]; }; -ACE_player setVariable ["ace_missileguidance_target",nil, false]; +private _currentShooter = if (ACE_player call CBA_fnc_canUseWeapon) then {ACE_player} else {vehicle ACE_player}; +TRACE_2("shooter",_currentShooter,typeOf _currentShooter); +_currentShooter setVariable ["ace_missileguidance_target", nil, false]; __JavelinIGUISeek ctrlSetTextColor __ColorGray; __JavelinIGUINFOV ctrlSetTextColor __ColorGray; diff --git a/addons/javelin/functions/fnc_showFireMode.sqf b/addons/javelin/functions/fnc_showFireMode.sqf index 5b4f8d7814..95dd038b92 100644 --- a/addons/javelin/functions/fnc_showFireMode.sqf +++ b/addons/javelin/functions/fnc_showFireMode.sqf @@ -2,13 +2,13 @@ #include "script_component.hpp" TRACE_1("enter", _this); -private["_player", "_currentFireMode"]; +private _currentShooter = if (ACE_player call CBA_fnc_canUseWeapon) then {ACE_player} else {vehicle ACE_player}; +private _currentFireMode = _currentShooter getVariable ["ace_missileguidance_attackProfile", "JAV_TOP"]; -_currentFireMode = ACE_player getVariable["ace_missileguidance_attackProfile", "JAV_TOP"]; if(_currentFireMode == "JAV_TOP") then { __JavelinIGUITop ctrlSetTextColor __ColorGreen; __JavelinIGUIDir ctrlSetTextColor __ColorGray; } else { __JavelinIGUITop ctrlSetTextColor __ColorGray; __JavelinIGUIDir ctrlSetTextColor __ColorGreen; -}; \ No newline at end of file +}; From 450b8dfedb61f6110beea3bffdc20941d98859fc Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 6 Jul 2016 00:54:51 -0500 Subject: [PATCH 42/85] Fix order of revive loop Fix #4035 Revive loop was killing heartrate before it exited --- addons/medical/functions/fnc_reviveStateLoop.sqf | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/medical/functions/fnc_reviveStateLoop.sqf b/addons/medical/functions/fnc_reviveStateLoop.sqf index bfc55ae6d8..5dcaad09c4 100644 --- a/addons/medical/functions/fnc_reviveStateLoop.sqf +++ b/addons/medical/functions/fnc_reviveStateLoop.sqf @@ -21,13 +21,6 @@ if (!local _unit) exitWith {}; private _startTime = _unit getVariable [QGVAR(reviveStartTime), 0]; -// Remove heartbeat -if (GVAR(level) >= 2) then { - if (_unit getVariable [QGVAR(heartRate), 60] > 0) then { - _unit setVariable [QGVAR(heartRate), 0]; - }; -}; - // If we are in revive state in a blown up vehicle, try to unload so that people can access the body if ((alive _unit) && {(vehicle _unit) != _unit} && {!alive (vehicle _unit)}) then { TRACE_2("Unloading", _unit, vehicle _unit); @@ -52,5 +45,12 @@ if !(_unit getVariable [QGVAR(inReviveState), false]) exitwith { _unit setVariable [QGVAR(reviveStartTime), nil]; }; +// Remove heartbeat +if (GVAR(level) >= 2) then { + if (_unit getVariable [QGVAR(heartRate), 60] > 0) then { + _unit setVariable [QGVAR(heartRate), 0]; + }; +}; + // Schedule the loop to be executed again 1 sec later [DFUNC(reviveStateLoop), [_unit], 1] call CBA_fnc_waitAndExecute; From 5362a809111efdf0ebfdecbb421540907cd0cb3e Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 6 Jul 2016 16:55:54 -0500 Subject: [PATCH 43/85] Tweak spotting scope anims / mem points --- addons/spottingscope/CfgVehicles.hpp | 8 ++++---- .../spottingscope/data/ace_spottingscope.p3d | Bin 4040306 -> 4040306 bytes 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/spottingscope/CfgVehicles.hpp b/addons/spottingscope/CfgVehicles.hpp index f86b9d16c7..84ce5f177f 100644 --- a/addons/spottingscope/CfgVehicles.hpp +++ b/addons/spottingscope/CfgVehicles.hpp @@ -70,8 +70,8 @@ class CfgVehicles { model = QPATHTOF(data\ace_spottingscope.p3d); mapSize = 0.5; transportSoldier = 0; - getInAction = "GetInLow"; - getOutAction = "GetOutLow"; + getInAction = "PlayerProne"; + getOutAction = "PlayerProne"; editorSubcategory = "EdSubcat_Turrets"; class Turrets: Turrets { @@ -115,8 +115,8 @@ class CfgVehicles { gunnerOutOpticsShowCursor = 0; gunnerOpticsShowCursor = 0; gunnerAction = "ACE_SpottingScope"; - gunnerGetInAction = "GetInLow"; - gunnerGetOutAction = "GetOutLow"; + gunnerGetInAction = "PlayerProne"; + gunnerGetOutAction = "PlayerProne"; gunnerForceOptics = 0; ejectDeadGunner = 0; turretInfoType = QGVAR(RscUnitInfo); diff --git a/addons/spottingscope/data/ace_spottingscope.p3d b/addons/spottingscope/data/ace_spottingscope.p3d index 0afe9952cfba14efb304cb825c197ad409531a5e..969d0b37f51582e600fb5f12bf3ba7fecedfa141 100644 GIT binary patch delta 162 zcmWl|#|?sD0Dw_Y!Hx|JiV8ODy(>#N#Gkl@hwq4I7BO)Nr@_Rt`jQvCK63DTLncI+ z2ns4uV#G<1Bt;sH3|VsIDWFrNM41W(Rce^jY0$*NrbU|$U3xh588BqTmm>Yjf!ZB3CRA%yRE?pu}qaXOk|K?QN`@>sG<5P5C{m(K1%oOz>NIH5!lX@yE Date: Wed, 6 Jul 2016 21:31:06 -0300 Subject: [PATCH 44/85] Add function to allow using playSound3D on CfgSounds classes --- addons/common/XEH_PREP.hpp | 1 + .../functions/fnc_playConfigSound3D.sqf | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 addons/common/functions/fnc_playConfigSound3D.sqf diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp index 4f56dd4d86..a66f12615f 100644 --- a/addons/common/XEH_PREP.hpp +++ b/addons/common/XEH_PREP.hpp @@ -127,6 +127,7 @@ PREP(numberToString); PREP(onAnswerRequest); PREP(owned); PREP(parseList); +PREP(playConfigSound3D); PREP(player); PREP(playerSide); PREP(positionToASL); diff --git a/addons/common/functions/fnc_playConfigSound3D.sqf b/addons/common/functions/fnc_playConfigSound3D.sqf new file mode 100644 index 0000000000..6253f75fb4 --- /dev/null +++ b/addons/common/functions/fnc_playConfigSound3D.sqf @@ -0,0 +1,35 @@ +/* + * Author: esteldunedain + * Plays a sound defined in CfgSounds using playSound3D, with global effect + * + * Arguments: + * 0: Sound class + * 1: Position ASL + * 2: Volume + * 3: Distance + * + * Return Value: + * None + * + * Public: Yes + */ +#define DEBUG_MODE_FULL +#include "script_component.hpp" + +params ["_soundClass", "_posASL", "_volume", "_distance"]; + +private _cfgSound = configFile >> "CfgSounds" >> _soundClass; + +if (!isClass _cfgSound) exitWith { + ACE_LOGERROR_1("CfgSounds class [%1] does not exist", _soundClass); +}; + +private _args = getArray (_cfgSound >> "sound"); +TRACE_1("playConfigSound3D args", _args); +private _pitch = (_args select 2); +// Strip the first \ from the filename +private _fileName = _args select 0; +_fileName = _fileName select [1, count _fileName - 1]; +TRACE_1("playConfigSound3D filename", _fileName); + +playSound3D [_fileName, objNull, false, _posASL, _volume, _pitch, _distance]; From f73b6b1aad85c2d21a700e0700344e4262c097b9 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Wed, 6 Jul 2016 22:14:26 -0300 Subject: [PATCH 45/85] - Restore the config of detector sounds through CfgSounds - Add the possibility of switching between headphones or speaker - Move detector actions to their own submenu --- addons/minedetector/ACE_detector.hpp | 4 +- addons/minedetector/CfgSounds.hpp | 22 +++++++++ addons/minedetector/CfgVehicles.hpp | 45 ++++++++++++++----- addons/minedetector/XEH_PREP.hpp | 3 ++ addons/minedetector/config.cpp | 1 + .../functions/fnc_canActivateDetector.sqf | 3 +- .../functions/fnc_canConnectHeadphones.sqf | 20 +++++++++ .../functions/fnc_canDeactivateDetector.sqf | 3 +- .../functions/fnc_canDisconnectHeadphones.sqf | 20 +++++++++ .../functions/fnc_connectHeadphones.sqf | 27 +++++++++++ .../functions/fnc_detectorLoop.sqf | 15 ++++--- .../functions/fnc_getDetectorConfig.sqf | 3 +- .../functions/fnc_playDetectorSound.sqf | 14 +++--- addons/minedetector/stringtable.xml | 24 ++++++++-- 14 files changed, 168 insertions(+), 36 deletions(-) create mode 100644 addons/minedetector/CfgSounds.hpp create mode 100644 addons/minedetector/functions/fnc_canConnectHeadphones.sqf create mode 100644 addons/minedetector/functions/fnc_canDisconnectHeadphones.sqf create mode 100644 addons/minedetector/functions/fnc_connectHeadphones.sqf diff --git a/addons/minedetector/ACE_detector.hpp b/addons/minedetector/ACE_detector.hpp index f575ab9cd7..ee00836eda 100644 --- a/addons/minedetector/ACE_detector.hpp +++ b/addons/minedetector/ACE_detector.hpp @@ -2,9 +2,7 @@ class ACE_detector { class detectors { class ACE_VMM3 { radius = 2.5; - name = "ace_detector_1"; - sound = QUOTE(PATHTO_R(sounds\metal_detector.wss)); - pitchs[] = {1, 0.9, 0.8, 0.7}; + sounds[] = {"ace_detector_1", "ace_detector_2", "ace_detector_3", "ace_detector_4"}; }; class ACE_VMH3: ACE_VMM3 { }; diff --git a/addons/minedetector/CfgSounds.hpp b/addons/minedetector/CfgSounds.hpp new file mode 100644 index 0000000000..fb83988da0 --- /dev/null +++ b/addons/minedetector/CfgSounds.hpp @@ -0,0 +1,22 @@ +class CfgSounds { + class ace_detector_1 { + name = "ace_detector_1"; + sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+1", 1}; + titles[] = {}; + }; + class ace_detector_2 { + name = "ace_detector_2"; + sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+1", 0.9}; + titles[] = {}; + }; + class ace_detector_3 { + name = "ace_detector_3"; + sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+1", 0.8}; + titles[] = {}; + }; + class ace_detector_4 { + name = "ace_detector_4"; + sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+1", 0.7}; + titles[] = {}; + }; +}; diff --git a/addons/minedetector/CfgVehicles.hpp b/addons/minedetector/CfgVehicles.hpp index 1f770df675..6185471d49 100644 --- a/addons/minedetector/CfgVehicles.hpp +++ b/addons/minedetector/CfgVehicles.hpp @@ -11,19 +11,40 @@ class CfgVehicles { class CAManBase: Man { class ACE_SelfActions { class ACE_Equipment { - class GVAR(activate) { - displayName = CSTRING(ActivateDetector); - condition = QUOTE(call FUNC(canActivateDetector)); - statement = QUOTE(call FUNC(activateDetector)); - icon = QPATHTOF(ui\icon_mineDetectorOn.paa); - exceptions[] = {}; - }; - class GVAR(deactivate) { - displayName = CSTRING(DeactivateDetector); - condition = QUOTE(call FUNC(canDeactivateDetector)); - statement = QUOTE(call FUNC(deactivateDetector)); - icon = QPATHTOF(ui\icon_mineDetectorOff.paa); + class GVAR(metalDetector) { + displayName = CSTRING(MetalDetector); + condition = QUOTE([ACE_player] call FUNC(hasDetector)); + statement = ""; + icon = "" //TODO exceptions[] = {}; + class GVAR(activate) { + displayName = CSTRING(ActivateDetector); + condition = QUOTE(call FUNC(canActivateDetector)); + statement = QUOTE(call FUNC(activateDetector)); + icon = QPATHTOF(ui\icon_mineDetectorOn.paa); + exceptions[] = {}; + }; + class GVAR(deactivate) { + displayName = CSTRING(DeactivateDetector); + condition = QUOTE(call FUNC(canDeactivateDetector)); + statement = QUOTE(call FUNC(deactivateDetector)); + icon = QPATHTOF(ui\icon_mineDetectorOff.paa); + exceptions[] = {}; + }; + class GVAR(connectHeadphones) { + displayName = CSTRING(ConnectHeadphones); + condition = QUOTE(call FUNC(canConnectHeadphones)); + statement = QUOTE([ARR_2(ACE_player, true)] call FUNC(connectHeadphones)); + icon = "" //TODO + exceptions[] = {}; + }; + class GVAR(disconnectHeadphones) { + displayName = CSTRING(DisconnectHeadphones); + condition = QUOTE(call FUNC(canDisconnectHeadphones)); + statement = QUOTE([ARR_2(ACE_player, false)] call FUNC(connectHeadphones)); + icon = "" //TODO + exceptions[] = {}; + }; }; }; }; diff --git a/addons/minedetector/XEH_PREP.hpp b/addons/minedetector/XEH_PREP.hpp index 9fdb771723..e3d9316bf5 100644 --- a/addons/minedetector/XEH_PREP.hpp +++ b/addons/minedetector/XEH_PREP.hpp @@ -1,6 +1,9 @@ PREP(canActivateDetector); +PREP(canConnectHeadphones); PREP(canDeactivateDetector); +PREP(canDisconnectHeadphones); +PREP(connectHeadphones); PREP(activateDetector); PREP(deactivateDetector); PREP(hasDetector); diff --git a/addons/minedetector/config.cpp b/addons/minedetector/config.cpp index 9b3fbf2581..9926d08f8c 100644 --- a/addons/minedetector/config.cpp +++ b/addons/minedetector/config.cpp @@ -18,4 +18,5 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "CfgAmmo.hpp" #include "CfgVehicles.hpp" +#include "CfgSounds.hpp" #include "ACE_detector.hpp" diff --git a/addons/minedetector/functions/fnc_canActivateDetector.sqf b/addons/minedetector/functions/fnc_canActivateDetector.sqf index 7caf22d95c..93089df063 100644 --- a/addons/minedetector/functions/fnc_canActivateDetector.sqf +++ b/addons/minedetector/functions/fnc_canActivateDetector.sqf @@ -16,4 +16,5 @@ #include "script_component.hpp" -([ACE_player] call FUNC(hasDetector)) && !([ACE_player, currentWeapon ACE_player] call FUNC(isDetectorEnabled)); +([ACE_player] call FUNC(hasDetector)) && +!([ACE_player, currentWeapon ACE_player] call FUNC(isDetectorEnabled)); diff --git a/addons/minedetector/functions/fnc_canConnectHeadphones.sqf b/addons/minedetector/functions/fnc_canConnectHeadphones.sqf new file mode 100644 index 0000000000..dfaf9699d8 --- /dev/null +++ b/addons/minedetector/functions/fnc_canConnectHeadphones.sqf @@ -0,0 +1,20 @@ +/* + * Author: esteldunedain + * Check if headphones can be connected to the mine detector + * + * Arguments: + * None + * + * Return Value: + * Can be connected + * + * Example: + * [] call ace_minedetector_fnc_canConnectHeadphones + * + * Public: No + */ + +#include "script_component.hpp" + +!(ACE_player getVariable [QGVAR(isUsingHeadphones), false]) && +{[ACE_player] call FUNC(hasDetector)}; diff --git a/addons/minedetector/functions/fnc_canDeactivateDetector.sqf b/addons/minedetector/functions/fnc_canDeactivateDetector.sqf index 3423d0685c..e308ba3789 100644 --- a/addons/minedetector/functions/fnc_canDeactivateDetector.sqf +++ b/addons/minedetector/functions/fnc_canDeactivateDetector.sqf @@ -16,4 +16,5 @@ #include "script_component.hpp" -([ACE_player] call FUNC(hasDetector)) && {[ACE_player, currentWeapon ACE_player] call FUNC(isDetectorEnabled)}; +([ACE_player] call FUNC(hasDetector)) && +{[ACE_player, currentWeapon ACE_player] call FUNC(isDetectorEnabled)}; diff --git a/addons/minedetector/functions/fnc_canDisconnectHeadphones.sqf b/addons/minedetector/functions/fnc_canDisconnectHeadphones.sqf new file mode 100644 index 0000000000..f58fe6617d --- /dev/null +++ b/addons/minedetector/functions/fnc_canDisconnectHeadphones.sqf @@ -0,0 +1,20 @@ +/* + * Author: esteldunedain + * Check if headphones can be disconnected from the mine detector + * + * Arguments: + * None + * + * Return Value: + * Can be disconnected + * + * Example: + * [] call ace_minedetector_fnc_canDisconnectHeadphones + * + * Public: No + */ + +#include "script_component.hpp" + +(ACE_player getVariable [QGVAR(isUsingHeadphones), false]) && +{[ACE_player] call FUNC(hasDetector)}; diff --git a/addons/minedetector/functions/fnc_connectHeadphones.sqf b/addons/minedetector/functions/fnc_connectHeadphones.sqf new file mode 100644 index 0000000000..2a715a66a0 --- /dev/null +++ b/addons/minedetector/functions/fnc_connectHeadphones.sqf @@ -0,0 +1,27 @@ +/* + * Author: esteldunedain + * Connect/disconnect headphones to the mine detector + * + * Arguments: + * 0: Unit + * 1: Connect? + * + * Return Value: + * None + * + * Example: + * [_unit, true] call ace_minedetector_fnc_connectHeadphones + * + * Public: No + */ + +#include "script_component.hpp" + +params ["_unit", "_state"]; +_unit setVariable [QGVAR(isUsingHeadphones), _state]; + +if (_state) then { + [localize LSTRING(HeadphonesConnected)] call EFUNC(common,displayTextStructured); +} else { + [localize LSTRING(HeadphonesDisconnected)] call EFUNC(common,displayTextStructured); +}; diff --git a/addons/minedetector/functions/fnc_detectorLoop.sqf b/addons/minedetector/functions/fnc_detectorLoop.sqf index 4217a0b4de..dd7c1f0884 100644 --- a/addons/minedetector/functions/fnc_detectorLoop.sqf +++ b/addons/minedetector/functions/fnc_detectorLoop.sqf @@ -49,11 +49,12 @@ private _distanceTiming = switch (true) do { if (CBA_missionTime - _lastPlayed < _distanceTiming) exitWith {}; _args set [3, CBA_missionTime]; -_detectorConfig params ["", "", "_sound", "_pitchs"]; -private _pitch = switch (true) do { - case (_distance >= 2): {_pitchs select 3}; - case (_distance >= 1.25): {_pitchs select 2}; - case (_distance >= 0.5): {_pitchs select 1}; - default {_pitchs select 0}; +_detectorConfig params ["", "", "_soundClasses"]; +private _soundClass = switch (true) do { + case (_distance >= 2): {_soundClasses select 3}; + case (_distance >= 1.25): {_soundClasses select 2}; + case (_distance >= 0.5): {_soundClasses select 1}; + default {_soundClasses select 0}; }; -[_unit, _sound, _pitch] call FUNC(playDetectorSound); + +[_unit, _soundClass] call FUNC(playDetectorSound); diff --git a/addons/minedetector/functions/fnc_getDetectorConfig.sqf b/addons/minedetector/functions/fnc_getDetectorConfig.sqf index 17b609cd77..ccafa83edd 100644 --- a/addons/minedetector/functions/fnc_getDetectorConfig.sqf +++ b/addons/minedetector/functions/fnc_getDetectorConfig.sqf @@ -25,8 +25,7 @@ if (isNil "_detectorConfig") then { _detectorConfig = [ _detectorType, getNumber (_cfgEntry >> "radius"), - getText (_cfgEntry >> "sound"), - getArray (_cfgEntry >> "pitchs") + getArray (_cfgEntry >> "sounds") ]; } else { _detectorConfig = []; diff --git a/addons/minedetector/functions/fnc_playDetectorSound.sqf b/addons/minedetector/functions/fnc_playDetectorSound.sqf index 1fff29531c..033737d812 100644 --- a/addons/minedetector/functions/fnc_playDetectorSound.sqf +++ b/addons/minedetector/functions/fnc_playDetectorSound.sqf @@ -4,8 +4,7 @@ * * Arguments: * 0: Unit - * 1: Sound file name - * 2: Sound pitch + * 1: Sound class * * Return Value: * None @@ -18,7 +17,7 @@ #include "script_component.hpp" -params ["_unit", "_sound", "_pitch"]; +params ["_unit", "_soundClass"]; if (isNull _unit) exitWith { ACE_LOGERROR_1("unit does not exist [%1]",_unit); @@ -27,6 +26,9 @@ if (!alive _unit) exitWith { ACE_LOGERROR_1("unit is not alive [%1]",_unit); }; -private _posASL = AGLtoASL (_unit modelToWorld (_unit selectionPosition "granat")); - -playSound3D [_sound, objNull, false, _posASL, 5, _pitch, 15]; +if (_unit getVariable [QGVAR(isUsingHeadphones), false]) then { + _unit say2D _soundClass; +} else { + private _posASL = AGLtoASL (_unit modelToWorld (_unit selectionPosition "granat")); + [_soundClass, _posASL, 5, 15] call EFUNC(common,playConfigSound3D); +}; diff --git a/addons/minedetector/stringtable.xml b/addons/minedetector/stringtable.xml index e78c34dab8..34ff8674fe 100644 --- a/addons/minedetector/stringtable.xml +++ b/addons/minedetector/stringtable.xml @@ -5,13 +5,29 @@ Metal detector Détecteur de métaux + + Metal detector + Détecteur de métaux + - Activate Detector - Activer le détecteur + Activate + Activer - Deactivate Detector - Désactiver le détecteur + Deactivate + Désactiver + + + Connect Headphones + + + Disconnect Headphones + + + Headphones Connected + + + Headphones Disconnected \ No newline at end of file From ce0da11aedc54fce3914b656d652d19589909234 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Wed, 6 Jul 2016 22:23:34 -0300 Subject: [PATCH 46/85] Clip sound duration to below 0.5 s to avoid it stacking into itself when using say --- addons/minedetector/sounds/metal_detector.wav | Bin 122958 -> 43322 bytes addons/minedetector/sounds/metal_detector.wss | Bin 56474 -> 7220 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/addons/minedetector/sounds/metal_detector.wav b/addons/minedetector/sounds/metal_detector.wav index 0e4076725f0809d0a805c7e31b16a40262e2856b..59f3b43ebef2d0f54e73ddc90fc228cbf67a53ff 100644 GIT binary patch literal 43322 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 T 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 literal 122958 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 SuOO9p@Aon(20-?{#Qy`n?Wzs{ literal 56474 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�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 Q-$|)K>#nT|Q7-rY0Aq-bZ2$lO From 893866ff39c9bd138e12222f3eb613eab9d11e0f Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Wed, 6 Jul 2016 22:38:03 -0300 Subject: [PATCH 47/85] Remove >> signs from interaction menu --- addons/attach/stringtable.xml | 18 +++++++++--------- addons/repair/stringtable.xml | 20 ++++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml index 462e3d725c..1ab8d61dc5 100644 --- a/addons/attach/stringtable.xml +++ b/addons/attach/stringtable.xml @@ -2,15 +2,15 @@ - Attach item >> - Gegenstand befestigen >> - Acoplar objeto >> - Przyczep >> - Attacher l'objet >> - Připnout >> - Fixar item >> - Attacca l'oggetto >> - Tárgy hozzácsatolása >> + Attach item + Gegenstand befestigen + Acoplar objeto + Przyczep + Attacher l'objet + Připnout + Fixar item + Attacca l'oggetto + Tárgy hozzácsatolása Прикрепить предмет diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 7f82d9c881..d5b52b1b68 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -248,16 +248,16 @@ Ajouter des pièces de rechage aux véhicules ? (à besoin du système de cargaison) - Repair >> - Reparieren >> - Reparación >> - Réparer >> - Napraw >> - Opravit >> - Reparar >> - Ripara >> - Szerelés >> - Ремонт >> + Repair + Reparieren + Reparación + Réparer + Napraw + Opravit + Reparar + Ripara + Szerelés + Ремонт Display text on repair From e39017e27a9e03254b520da05b5824a81b9e6b7f Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 7 Jul 2016 09:10:14 +0200 Subject: [PATCH 48/85] add reload mut ex as canInteractWith condition --- addons/common/XEH_postInit.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index e7a43e68d2..efc8694ec2 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -381,7 +381,7 @@ GVAR(OldIsCamera) = false; ////////////////////////////////////////////////// ["isNotDead", { - params ["_unit", "_target"]; + params ["_unit"]; alive _unit }] call FUNC(addCanInteractWithCondition); @@ -399,6 +399,7 @@ GVAR(OldIsCamera) = false; }] call FUNC(addCanInteractWithCondition); ["isNotInZeus", {isNull curatorCamera}] call FUNC(addCanInteractWithCondition); +["isNotReloading", {!GVAR(isReloading)}] call FUNC(addCanInteractWithCondition); ////////////////////////////////////////////////// // Set up PlayerJIP eventhandler From bf7fde0d658b7b85afb0f109720675c0f4f22f44 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 7 Jul 2016 09:44:29 +0200 Subject: [PATCH 49/85] enable gunbag for all non-machinegun primary weapons --- addons/gunbag/CfgWeapons.hpp | 41 -------------------- addons/gunbag/XEH_PREP.hpp | 1 + addons/gunbag/config.cpp | 1 - addons/gunbag/functions/fnc_canInteract.sqf | 5 ++- addons/gunbag/functions/fnc_isMachineGun.sqf | 29 ++++++++++++++ 5 files changed, 33 insertions(+), 44 deletions(-) delete mode 100644 addons/gunbag/CfgWeapons.hpp create mode 100644 addons/gunbag/functions/fnc_isMachineGun.sqf diff --git a/addons/gunbag/CfgWeapons.hpp b/addons/gunbag/CfgWeapons.hpp deleted file mode 100644 index 31ffb64c79..0000000000 --- a/addons/gunbag/CfgWeapons.hpp +++ /dev/null @@ -1,41 +0,0 @@ -class CfgWeapons { - class Rifle_Long_Base_F; - - /* Long Rifles */ - - class GM6_base_F: Rifle_Long_Base_F { - GVAR(allowGunbag) = 1; - }; - - class LRR_base_F: Rifle_Long_Base_F { - GVAR(allowGunbag) = 1; - }; - - class DMR_06_base_F: Rifle_Long_Base_F { - GVAR(allowGunbag) = 1; - }; - - class DMR_05_base_F: Rifle_Long_Base_F { - GVAR(allowGunbag) = 1; - }; - - class DMR_04_base_F: Rifle_Long_Base_F { - GVAR(allowGunbag) = 1; - }; - - class DMR_03_base_F: Rifle_Long_Base_F { - GVAR(allowGunbag) = 1; - }; - - class DMR_02_base_F: Rifle_Long_Base_F { - GVAR(allowGunbag) = 1; - }; - - class DMR_01_base_F: Rifle_Long_Base_F { - GVAR(allowGunbag) = 1; - }; - - class EBR_base_F: Rifle_Long_Base_F { - GVAR(allowGunbag) = 1; - }; -}; diff --git a/addons/gunbag/XEH_PREP.hpp b/addons/gunbag/XEH_PREP.hpp index df84b594bf..d76682f986 100644 --- a/addons/gunbag/XEH_PREP.hpp +++ b/addons/gunbag/XEH_PREP.hpp @@ -7,3 +7,4 @@ PREP(status); PREP(canInteract); PREP(calculateMass); PREP(hasGunbag); +PREP(isMachineGun); diff --git a/addons/gunbag/config.cpp b/addons/gunbag/config.cpp index 87fcd84f1c..6efaceb5d6 100644 --- a/addons/gunbag/config.cpp +++ b/addons/gunbag/config.cpp @@ -16,4 +16,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" -#include "CfgWeapons.hpp" diff --git a/addons/gunbag/functions/fnc_canInteract.sqf b/addons/gunbag/functions/fnc_canInteract.sqf index b24533f632..1ec9e38583 100644 --- a/addons/gunbag/functions/fnc_canInteract.sqf +++ b/addons/gunbag/functions/fnc_canInteract.sqf @@ -20,12 +20,13 @@ params ["_unit", "_target"]; private _result = -1; private _gunbag = backpackContainer _target; +private _weapon = primaryWeapon _unit; -if ((_gunbag getVariable [QGVAR(gunbagWeapon), []]) isEqualTo [] && {primaryWeapon _unit != ""} && {getNumber (configFile >> "CfgWeapons" >> primaryWeapon _unit >> QGVAR(allowGunbag)) == 1}) then { +if ((_gunbag getVariable [QGVAR(gunbagWeapon), []]) isEqualTo [] && {_weapon != ""} && {!(_weapon call FUNC(isMachineGun))}) then { _result = 0; }; -if (!((_gunbag getVariable [QGVAR(gunbagWeapon), []]) isEqualTo []) && {primaryWeapon _unit == ""}) then { +if (!((_gunbag getVariable [QGVAR(gunbagWeapon), []]) isEqualTo []) && {_weapon == ""}) then { _result = 1; }; diff --git a/addons/gunbag/functions/fnc_isMachineGun.sqf b/addons/gunbag/functions/fnc_isMachineGun.sqf new file mode 100644 index 0000000000..a6191c1cca --- /dev/null +++ b/addons/gunbag/functions/fnc_isMachineGun.sqf @@ -0,0 +1,29 @@ +/* + * Author: commy2 + * Reports true if a weapon is a machine gun. + * + * Arguments: + * 0: Weapon class name + * + * Return Value: + * Is machine gun + * + * Example: + * (currentWeapon player) call ace_gunbag_fnc_isMachineGun + * + * Public: No + */ +#include "script_component.hpp" + +params ["_weapon"]; + +private _config = _weapon call CBA_fnc_getItemConfig; + +// definition of a machine gun by BIS_fnc_itemType +private _cursor = getText (_config >> "cursor"); + +if (toLower _cursor in ["", "emptycursor"]) then { + _cursor = getText (_config >> "cursorAim"); +}; + +_cursor == "MG" From 2a84865302d68db53dd3f7c272994cdb891d6a7d Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 7 Jul 2016 15:47:37 +0200 Subject: [PATCH 50/85] add event handler for reload mutex --- addons/common/XEH_postInit.sqf | 49 ++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index efc8694ec2..14fe990905 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -399,8 +399,57 @@ GVAR(OldIsCamera) = false; }] call FUNC(addCanInteractWithCondition); ["isNotInZeus", {isNull curatorCamera}] call FUNC(addCanInteractWithCondition); + +////////////////////////////////////////////////// +// Set up reload mutex +////////////////////////////////////////////////// + +GVAR(isReloading) = false; + ["isNotReloading", {!GVAR(isReloading)}] call FUNC(addCanInteractWithCondition); +#define AK_OFFSET_SHIFT_LEFT 704643072 +#define AK_OFFSET_CTRL_LEFT 486539264 +#define AK_OFFSET_ALT_LEFT 939524096 +#define AK_OFFSET_SHIFT_RIGHT 905969664 +#define AK_OFFSET_CTRL_RIGHT -1660944384 +#define AK_OFFSET_ALT_RIGHT -1207959552 + +["keyDown", { + params ["", "_key"]; + + if ({(_x - _key) in [ + 0, + AK_OFFSET_SHIFT_LEFT, AK_OFFSET_SHIFT_RIGHT, + AK_OFFSET_CTRL_LEFT, AK_OFFSET_CTRL_RIGHT, + AK_OFFSET_ALT_LEFT, AK_OFFSET_ALT_RIGHT + ]} count actionKeys "ReloadMagazine" > 0 && {alive ACE_player}) then { + private _weapon = currentWeapon ACE_player; + + if (_weapon != "") then { + GVAR(isReloading) = true; + + private _gesture = getText (configfile >> "CfgWeapons" >> _weapon >> "reloadAction"); + private _isLauncher = _weapon isKindOf ["Launcher", configFile >> "CfgWeapons"]; + private _config = ["CfgGesturesMale", "CfgMovesMaleSdr"] select _isLauncher; + private _duration = getNumber (configfile >> _config >> "States" >> _gesture >> "speed"); + + if (_duration != 0) then { + _duration = if (_duration < 0) then { abs _duration } else { 1 / _duration }; + } else { + _duration = 3; + }; + + TRACE_2("Reloading, blocking gestures",_weapon,_duration); + [{ + GVAR(isReloading) = false; + }, [], _duration] call CBA_fnc_waitAndExecute; + }; + }; + + false +}] call CBA_fnc_addDisplayHandler; + ////////////////////////////////////////////////// // Set up PlayerJIP eventhandler ////////////////////////////////////////////////// From 7a25c53dd36234a8e5aa929355174aa2cc515601 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Thu, 7 Jul 2016 10:51:34 -0300 Subject: [PATCH 51/85] Switch say2D to playSound --- addons/minedetector/config.cpp | 2 +- addons/minedetector/functions/fnc_playDetectorSound.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/minedetector/config.cpp b/addons/minedetector/config.cpp index 9926d08f8c..7a48e0e2a0 100644 --- a/addons/minedetector/config.cpp +++ b/addons/minedetector/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_explosives"}; author = ECSTRING(common,ACETeam); - authors[] = {"Grey", "Glowbal", "Rocko"}; + authors[] = {"Grey", "Glowbal", "Rocko", "esteldunedain"}; url = ECSTRING(main,URL); VERSION_CONFIG; }; diff --git a/addons/minedetector/functions/fnc_playDetectorSound.sqf b/addons/minedetector/functions/fnc_playDetectorSound.sqf index 033737d812..33431ef88d 100644 --- a/addons/minedetector/functions/fnc_playDetectorSound.sqf +++ b/addons/minedetector/functions/fnc_playDetectorSound.sqf @@ -27,7 +27,7 @@ if (!alive _unit) exitWith { }; if (_unit getVariable [QGVAR(isUsingHeadphones), false]) then { - _unit say2D _soundClass; + playSound _soundClass; } else { private _posASL = AGLtoASL (_unit modelToWorld (_unit selectionPosition "granat")); [_soundClass, _posASL, 5, 15] call EFUNC(common,playConfigSound3D); From 244bdb093d7f83a907131f13175d7df2b55c8620 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Thu, 7 Jul 2016 11:17:09 -0300 Subject: [PATCH 52/85] Add clicks when activating/deactivating the detector --- addons/minedetector/functions/fnc_disableDetector.sqf | 4 ++++ addons/minedetector/functions/fnc_enableDetector.sqf | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/addons/minedetector/functions/fnc_disableDetector.sqf b/addons/minedetector/functions/fnc_disableDetector.sqf index a4e755e6c3..b48c6a2cd0 100644 --- a/addons/minedetector/functions/fnc_disableDetector.sqf +++ b/addons/minedetector/functions/fnc_disableDetector.sqf @@ -21,4 +21,8 @@ params ["_unit", "_detectorType"]; _unit setVariable [format[QGVAR(enable_%1), _detectorType], false]; +if (_unit == ACE_player) then { + playSound "ACE_Sound_Click"; +}; + [QGVAR(detectorDisabled), [_unit, _detectorType]] call CBA_fnc_localEvent; diff --git a/addons/minedetector/functions/fnc_enableDetector.sqf b/addons/minedetector/functions/fnc_enableDetector.sqf index e8440a730b..9211becddf 100644 --- a/addons/minedetector/functions/fnc_enableDetector.sqf +++ b/addons/minedetector/functions/fnc_enableDetector.sqf @@ -21,4 +21,8 @@ params ["_unit", "_detectorType"]; _unit setVariable [format[QGVAR(enable_%1), _detectorType], true]; +if (_unit == ACE_player) then { + playSound "ACE_Sound_Click"; +}; + [QGVAR(detectorEnabled), [_unit, _detectorType]] call CBA_fnc_localEvent; From 6160fe076d9e12d2af7b3d525dacd8f1bd89e790 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Thu, 7 Jul 2016 11:17:57 -0300 Subject: [PATCH 53/85] Add an event when a mine is detected to allow hooking into missions --- addons/minedetector/functions/fnc_detectorLoop.sqf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/minedetector/functions/fnc_detectorLoop.sqf b/addons/minedetector/functions/fnc_detectorLoop.sqf index dd7c1f0884..7eb376a130 100644 --- a/addons/minedetector/functions/fnc_detectorLoop.sqf +++ b/addons/minedetector/functions/fnc_detectorLoop.sqf @@ -35,10 +35,13 @@ if !([_unit, _type] call FUNC(isDetectorEnabled)) exitWith { if (ACE_player != _unit || {currentWeapon _unit != _type}) exitWith {}; private _detected = [[_unit, _detectorConfig], FUNC(getDetectedObject), _unit, QGVAR(detectedObjects), 0.15] call EFUNC(common,cachedCall); -_detected params ["_hasDetected", "", "_distance"]; +_detected params ["_hasDetected", "_mine", "_distance"]; if (!_hasDetected) exitWith {}; +// Launch a local event stating which mine was detected for mission purposes +[QGVAR(mineDetected), [_unit, _mine, _distance]] call CBA_fnc_localEvent; + private _distanceTiming = switch (true) do { case (_distance >= 2): {1}; case (_distance >= 1.25): {0.85}; From 6569de533221ebe42f40fa828ce08e9a7c9585ef Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 7 Jul 2016 16:35:07 +0200 Subject: [PATCH 54/85] add event handler for reload mutex --- addons/common/XEH_postInit.sqf | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 14fe990905..8dfa29a795 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -408,22 +408,8 @@ GVAR(isReloading) = false; ["isNotReloading", {!GVAR(isReloading)}] call FUNC(addCanInteractWithCondition); -#define AK_OFFSET_SHIFT_LEFT 704643072 -#define AK_OFFSET_CTRL_LEFT 486539264 -#define AK_OFFSET_ALT_LEFT 939524096 -#define AK_OFFSET_SHIFT_RIGHT 905969664 -#define AK_OFFSET_CTRL_RIGHT -1660944384 -#define AK_OFFSET_ALT_RIGHT -1207959552 - ["keyDown", { - params ["", "_key"]; - - if ({(_x - _key) in [ - 0, - AK_OFFSET_SHIFT_LEFT, AK_OFFSET_SHIFT_RIGHT, - AK_OFFSET_CTRL_LEFT, AK_OFFSET_CTRL_RIGHT, - AK_OFFSET_ALT_LEFT, AK_OFFSET_ALT_RIGHT - ]} count actionKeys "ReloadMagazine" > 0 && {alive ACE_player}) then { + if ((_this select 1) in actionKeys "ReloadMagazine" && {alive ACE_player}) then { private _weapon = currentWeapon ACE_player; if (_weapon != "") then { From be17b72cada5a20460708741ed87f9c4d96a22f3 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 7 Jul 2016 16:38:24 +0200 Subject: [PATCH 55/85] remove old 'gestures' reload mutex --- addons/gestures/CfgEventHandlers.hpp | 6 ---- addons/gestures/CfgVehicles.hpp | 2 +- addons/gestures/XEH_missionDisplayLoad.sqf | 32 -------------------- addons/gestures/XEH_postInit.sqf | 3 -- addons/gestures/functions/fnc_playSignal.sqf | 2 +- 5 files changed, 2 insertions(+), 43 deletions(-) delete mode 100644 addons/gestures/XEH_missionDisplayLoad.sqf diff --git a/addons/gestures/CfgEventHandlers.hpp b/addons/gestures/CfgEventHandlers.hpp index 83a4cf763c..becf395052 100644 --- a/addons/gestures/CfgEventHandlers.hpp +++ b/addons/gestures/CfgEventHandlers.hpp @@ -16,9 +16,3 @@ class Extended_PostInit_EventHandlers { init = QUOTE(call COMPILE_FILE(XEH_postInit)); }; }; - -class Extended_DisplayLoad_EventHandlers { - class RscDisplayMission { - ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad)); - }; -}; diff --git a/addons/gestures/CfgVehicles.hpp b/addons/gestures/CfgVehicles.hpp index 2c099bcc45..d91c6df95e 100644 --- a/addons/gestures/CfgVehicles.hpp +++ b/addons/gestures/CfgVehicles.hpp @@ -5,7 +5,7 @@ class CfgVehicles { class ACE_SelfActions { class ADDON { displayName = CSTRING(Gestures); - condition = QUOTE((canStand _target) && GVAR(ReloadMutex) && {GVAR(showOnInteractionMenu) == 2}); + condition = QUOTE((canStand _target) && {GVAR(showOnInteractionMenu) == 2}); statement = ""; showDisabled = 1; priority = 3.5; diff --git a/addons/gestures/XEH_missionDisplayLoad.sqf b/addons/gestures/XEH_missionDisplayLoad.sqf deleted file mode 100644 index 856f361d3a..0000000000 --- a/addons/gestures/XEH_missionDisplayLoad.sqf +++ /dev/null @@ -1,32 +0,0 @@ -#include "script_component.hpp" - -disableSerialization; - -params ["_display"]; - -_display displayAddEventHandler ["KeyDown", { - if ((_this select 1) in actionKeys "ReloadMagazine") then { - if (isNull ACE_player || {!alive ACE_player}) exitWith {false}; - - private _weapon = currentWeapon ACE_player; - - if (_weapon != "") then { - GVAR(ReloadMutex) = false; - - private _gesture = getText (configfile >> "CfgWeapons" >> _weapon >> "reloadAction"); - private _isLauncher = _weapon isKindOf ["Launcher", configFile >> "CfgWeapons"]; - private _config = ["CfgGesturesMale", "CfgMovesMaleSdr"] select _isLauncher; - private _duration = getNumber (configfile >> _config >> "States" >> _gesture >> "speed"); - - if (_duration != 0) then { - _duration = if (_duration < 0) then { abs _duration } else { 1 / _duration }; - } else { - _duration = 3; - }; - - TRACE_2("Reloading, blocking gestures",_weapon,_duration); - [{GVAR(ReloadMutex) = true;}, [], _duration] call CBA_fnc_waitAndExecute; - }; - }; - false -}]; diff --git a/addons/gestures/XEH_postInit.sqf b/addons/gestures/XEH_postInit.sqf index 6d9e057e29..b68df0a592 100644 --- a/addons/gestures/XEH_postInit.sqf +++ b/addons/gestures/XEH_postInit.sqf @@ -2,9 +2,6 @@ if (!hasInterface) exitWith {}; -// reload mutex, you can't play signal while reloading -GVAR(ReloadMutex) = true; - // Add keybinds { _x params ["_currentName", "_key", ["_vanillaKey", false] ]; diff --git a/addons/gestures/functions/fnc_playSignal.sqf b/addons/gestures/functions/fnc_playSignal.sqf index 8f20c690ef..56c3bceb01 100644 --- a/addons/gestures/functions/fnc_playSignal.sqf +++ b/addons/gestures/functions/fnc_playSignal.sqf @@ -17,7 +17,7 @@ TRACE_1("params",_this); -if (!GVAR(ReloadMutex)) exitWith {false}; +if (EGVAR(common,isReloading)) exitWith {false}; if (GVAR(showOnInteractionMenu) == 0) exitWith {false}; if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; From 2a36fec793ce6e9cc066bc44fa9dc3c0ec2efabe Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Thu, 7 Jul 2016 12:38:53 -0300 Subject: [PATCH 56/85] Make the detector AI compatible --- addons/minedetector/CfgEventHandlers.hpp | 2 +- .../{XEH_clientInit.sqf => XEH_postInit.sqf} | 9 ++------- addons/minedetector/functions/fnc_detectorLoop.sqf | 11 ++++++++++- addons/minedetector/functions/fnc_disableDetector.sqf | 8 ++++++-- addons/minedetector/functions/fnc_enableDetector.sqf | 9 ++++++++- .../minedetector/functions/fnc_playDetectorSound.sqf | 2 +- 6 files changed, 28 insertions(+), 13 deletions(-) rename addons/minedetector/{XEH_clientInit.sqf => XEH_postInit.sqf} (86%) diff --git a/addons/minedetector/CfgEventHandlers.hpp b/addons/minedetector/CfgEventHandlers.hpp index 3daad1425a..f19d0e18ec 100644 --- a/addons/minedetector/CfgEventHandlers.hpp +++ b/addons/minedetector/CfgEventHandlers.hpp @@ -5,6 +5,6 @@ class Extended_PreInit_EventHandlers { }; class Extended_PostInit_EventHandlers { class ADDON { - clientInit = QUOTE( call COMPILE_FILE(XEH_clientInit) ); + init = QUOTE( call COMPILE_FILE(XEH_postInit) ); }; }; diff --git a/addons/minedetector/XEH_clientInit.sqf b/addons/minedetector/XEH_postInit.sqf similarity index 86% rename from addons/minedetector/XEH_clientInit.sqf rename to addons/minedetector/XEH_postInit.sqf index ca660ad51d..4b842e3488 100644 --- a/addons/minedetector/XEH_clientInit.sqf +++ b/addons/minedetector/XEH_postInit.sqf @@ -16,13 +16,8 @@ GVAR(detectableClasses) = call CBA_fnc_createNamespace; }; } forEach (configProperties [configFile >> "CfgAmmo", "isClass _x", true]); - -[QGVAR(detectorEnabled), { - params ["_unit", "_type"]; - private _config = [_type] call FUNC(getDetectorConfig); - - [FUNC(detectorLoop), 0.05, [_unit, _type, _config, CBA_missionTime - 0.25]] call CBA_fnc_addPerFrameHandler; -}] call CBA_fnc_addEventHandler; +[QGVAR(enableDetector), FUNC(enableDetector)] call CBA_fnc_addEventHandler; +[QGVAR(disableDetector), FUNC(disableDetector)] call CBA_fnc_addEventHandler; // Shows detector and mine posistions in 3d when debug is on #ifdef DEBUG_MODE_FULL diff --git a/addons/minedetector/functions/fnc_detectorLoop.sqf b/addons/minedetector/functions/fnc_detectorLoop.sqf index 7eb376a130..e5fd4d5bd3 100644 --- a/addons/minedetector/functions/fnc_detectorLoop.sqf +++ b/addons/minedetector/functions/fnc_detectorLoop.sqf @@ -17,6 +17,12 @@ params ["_args", "_idPFH"]; _args params ["_unit", "_type", "_detectorConfig", "_lastPlayed"]; +// If locality switched just turn off the detector +if !(local _unit) exitWith { + [QGVAR(disableDetector), [_unit, _type], _unit] call CBA_fnc_targetEvent; + [_idPFH] call CBA_fnc_removePerFrameHandler; +}; + if !([_unit, _type] call FUNC(hasDetector)) exitWith { // disable detector type [_unit, _type] call FUNC(disableDetector); @@ -32,7 +38,10 @@ if !([_unit, _type] call FUNC(isDetectorEnabled)) exitWith { [_idPFH] call CBA_fnc_removePerFrameHandler; }; -if (ACE_player != _unit || {currentWeapon _unit != _type}) exitWith {}; +if (currentWeapon _unit != _type) exitWith { + [_unit, _type] call FUNC(disableDetector); + [_idPFH] call CBA_fnc_removePerFrameHandler; +}; private _detected = [[_unit, _detectorConfig], FUNC(getDetectedObject), _unit, QGVAR(detectedObjects), 0.15] call EFUNC(common,cachedCall); _detected params ["_hasDetected", "_mine", "_distance"]; diff --git a/addons/minedetector/functions/fnc_disableDetector.sqf b/addons/minedetector/functions/fnc_disableDetector.sqf index b48c6a2cd0..e2fbb55798 100644 --- a/addons/minedetector/functions/fnc_disableDetector.sqf +++ b/addons/minedetector/functions/fnc_disableDetector.sqf @@ -19,9 +19,13 @@ params ["_unit", "_detectorType"]; -_unit setVariable [format[QGVAR(enable_%1), _detectorType], false]; +if !(local _unit) then { + [QGVAR(disableDetector), [_unit, _detectorType], _unit] call CBA_fnc_targetEvent; +}; -if (_unit == ACE_player) then { +_unit setVariable [format[QGVAR(enable_%1), _detectorType], false, true]; + +if (_unit == ACE_player && {alive _unit}) then { playSound "ACE_Sound_Click"; }; diff --git a/addons/minedetector/functions/fnc_enableDetector.sqf b/addons/minedetector/functions/fnc_enableDetector.sqf index 9211becddf..8ed31433d1 100644 --- a/addons/minedetector/functions/fnc_enableDetector.sqf +++ b/addons/minedetector/functions/fnc_enableDetector.sqf @@ -19,10 +19,17 @@ params ["_unit", "_detectorType"]; -_unit setVariable [format[QGVAR(enable_%1), _detectorType], true]; +if !(local _unit) then { + [QGVAR(enableDetector), [_unit, _detectorType], _unit] call CBA_fnc_targetEvent; +}; + +_unit setVariable [format[QGVAR(enable_%1), _detectorType], true, true]; if (_unit == ACE_player) then { playSound "ACE_Sound_Click"; }; [QGVAR(detectorEnabled), [_unit, _detectorType]] call CBA_fnc_localEvent; + +private _config = [_detectorType] call FUNC(getDetectorConfig); +[FUNC(detectorLoop), 0.05, [_unit, _detectorType, _config, CBA_missionTime - 0.25]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/minedetector/functions/fnc_playDetectorSound.sqf b/addons/minedetector/functions/fnc_playDetectorSound.sqf index 33431ef88d..e54bc48260 100644 --- a/addons/minedetector/functions/fnc_playDetectorSound.sqf +++ b/addons/minedetector/functions/fnc_playDetectorSound.sqf @@ -26,7 +26,7 @@ if (!alive _unit) exitWith { ACE_LOGERROR_1("unit is not alive [%1]",_unit); }; -if (_unit getVariable [QGVAR(isUsingHeadphones), false]) then { +if (_unit getVariable [QGVAR(isUsingHeadphones), false] && {_unit == ACE_player}) then { playSound _soundClass; } else { private _posASL = AGLtoASL (_unit modelToWorld (_unit selectionPosition "granat")); From 0220b5760982c9eea236b6f03fb9e639a50e4433 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 7 Jul 2016 20:16:03 +0200 Subject: [PATCH 57/85] Remove redundant getMagazineIndex compatibility function --- addons/overheating/XEH_preInit.sqf | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/addons/overheating/XEH_preInit.sqf b/addons/overheating/XEH_preInit.sqf index cdd1fa78dd..a7feade1c3 100644 --- a/addons/overheating/XEH_preInit.sqf +++ b/addons/overheating/XEH_preInit.sqf @@ -4,16 +4,4 @@ ADDON = false; #include "XEH_PREP.hpp" -if (isNil "CBA_fnc_getMagazineIndex") then { - CBA_fnc_getMagazineIndex = { - params [["_unit", objNull, [objNull]], ["_magazine", "", [""]]]; - - private _displayName = getText (configFile >> "CfgMagazines" >> _magazine >> "displayName"); - - if (_displayName isEqualTo "") exitWith {[]}; - - (magazinesDetail _unit select {_x find _displayName == 0}) apply {_x = _x splitString "[:]"; _x select (count _x - 1)}; - }; -}; - ADDON = true; From 071201ea46c7480af66cd7d9102f9b265797c299 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Thu, 7 Jul 2016 19:03:14 -0300 Subject: [PATCH 58/85] Remove the pistol cursor from the mine detector --- addons/minedetector/CfgWeapons.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/minedetector/CfgWeapons.hpp b/addons/minedetector/CfgWeapons.hpp index 8495aaf32e..fddc3c2868 100644 --- a/addons/minedetector/CfgWeapons.hpp +++ b/addons/minedetector/CfgWeapons.hpp @@ -14,6 +14,8 @@ class CfgWeapons { picture = QUOTE(PATHTOF(data\equip\w_vmm3_ca.paa)); magazines[] = { }; modes[] = { "Single" }; + cursor = "EmptyCursor"; + cursorAim = "EmptyCursor"; class Single: Mode_SemiAuto { displayName = ""; sounds[] = {}; From c55c0d5666b0f83c8e511033dd24f0ba1c8fc54e Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 8 Jul 2016 15:12:47 +0200 Subject: [PATCH 59/85] only use one waitUntilAndExecute at any time for reload mutex --- addons/common/XEH_postInit.sqf | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 8dfa29a795..32588189cb 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -413,8 +413,6 @@ GVAR(isReloading) = false; private _weapon = currentWeapon ACE_player; if (_weapon != "") then { - GVAR(isReloading) = true; - private _gesture = getText (configfile >> "CfgWeapons" >> _weapon >> "reloadAction"); private _isLauncher = _weapon isKindOf ["Launcher", configFile >> "CfgWeapons"]; private _config = ["CfgGesturesMale", "CfgMovesMaleSdr"] select _isLauncher; @@ -427,9 +425,17 @@ GVAR(isReloading) = false; }; TRACE_2("Reloading, blocking gestures",_weapon,_duration); - [{ - GVAR(isReloading) = false; - }, [], _duration] call CBA_fnc_waitAndExecute; + GVAR(reloadingETA) = CBA_missionTime + _duration; + + if (!GVAR(isReloading)) then { + GVAR(isReloading) = true; + + [{ + CBA_missionTime > GVAR(reloadingETA) + },{ + GVAR(isReloading) = false; + }] call CBA_fnc_waitUntilAndExecute; + }; }; }; From 1185375c907a7d25a0e973729442fb353058f79c Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 8 Jul 2016 20:00:12 +0200 Subject: [PATCH 60/85] Add Korean and Japanese strings to tracker --- addons/main/stringtable.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml index 4648225f9f..225d61a51d 100644 --- a/addons/main/stringtable.xml +++ b/addons/main/stringtable.xml @@ -22,6 +22,8 @@ http://ace3mod.com/ http://ace3mod.com/ http://ace3mod.com/ + http://ace3mod.com/ + http://ace3mod.com/ From 0a46a83e02a7fd9af1bd6ecc626c3d9f8c3f006f Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sat, 9 Jul 2016 18:14:08 +0200 Subject: [PATCH 61/85] Realistic names for APEX content (#4055) * Added realistic names for APEX content * Fix strings * Lowercase Polish colors --- addons/realisticnames/CfgVehicles.hpp | 35 +++ addons/realisticnames/CfgWeapons.hpp | 107 +++++++ addons/realisticnames/stringtable.xml | 422 +++++++++++++++++++++++++- 3 files changed, 563 insertions(+), 1 deletion(-) diff --git a/addons/realisticnames/CfgVehicles.hpp b/addons/realisticnames/CfgVehicles.hpp index db42e693bf..6f3cc8b32e 100644 --- a/addons/realisticnames/CfgVehicles.hpp +++ b/addons/realisticnames/CfgVehicles.hpp @@ -644,4 +644,39 @@ class CfgVehicles { class Item_acc_flashlight: Item_Base_F { displayName="UTG Defender 126"; }; + + // APEX/Tanoa + + // Jeep Wrangler + class Offroad_02_unarmed_base_F; + class C_Offroad_02_unarmed_F: Offroad_02_unarmed_base_F { + displayName = CSTRING(C_Offroad_02_unarmed); + }; + class C_Offroad_02_unarmed_F_black: C_Offroad_02_unarmed_F { + displayName = CSTRING(C_Offroad_02_unarmed_black); + }; + class C_Offroad_02_unarmed_F_blue: C_Offroad_02_unarmed_F { + displayName = CSTRING(C_Offroad_02_unarmed_blue); + }; + class C_Offroad_02_unarmed_F_green: C_Offroad_02_unarmed_F { + displayName = CSTRING(C_Offroad_02_unarmed_green); + }; + class C_Offroad_02_unarmed_F_orange: C_Offroad_02_unarmed_F { + displayName = CSTRING(C_Offroad_02_unarmed_orange); + }; + + // Cessna + class Plane_Civil_01_base_F; + class C_Plane_Civil_01_F: Plane_Civil_01_base_F { + displayName = CSTRING(C_Plane_Civil_01); + }; + class C_Plane_Civil_01_racing_F: Plane_Civil_01_base_F { + displayName = CSTRING(C_Plane_Civil_01_racing); + }; + + // Burraq + class UAV_04_base_F; + class O_T_UAV_04_CAS_F: UAV_04_base_F { + displayName = CSTRING(O_T_UAV_04_CAS); + }; }; diff --git a/addons/realisticnames/CfgWeapons.hpp b/addons/realisticnames/CfgWeapons.hpp index 645b6a8984..2654dc0df7 100644 --- a/addons/realisticnames/CfgWeapons.hpp +++ b/addons/realisticnames/CfgWeapons.hpp @@ -578,4 +578,111 @@ class CfgWeapons { class acc_flashlight: ItemCore { displayName = "UTG Defender 126"; }; + + // APEX/Tanoa + + // QBZ-95 and variants + class arifle_CTAR_base_F; + class arifle_CTAR_blk_F: arifle_CTAR_base_F { + displayName = CSTRING(arifle_CTAR_blk); + }; + class arifle_CTAR_GL_base_F; + class arifle_CTAR_GL_blk_F: arifle_CTAR_GL_base_F { + displayName = CSTRING(arifle_CTAR_GL_blk); + }; + class arifle_CTARS_base_F; + class arifle_CTARS_blk_F: arifle_CTARS_base_F { + displayName = CSTRING(arifle_CTARS_blk); + }; + + // QBU-88 + class DMR_07_base_F; + class srifle_DMR_07_blk_F: DMR_07_base_F { + displayName = CSTRING(srifle_DMR_07_blk); + }; + class srifle_DMR_07_ghex_F: DMR_07_base_F { + displayName = CSTRING(srifle_DMR_07_ghex); + }; + class srifle_DMR_07_hex_F: DMR_07_base_F { + displayName = CSTRING(srifle_DMR_07_hex); + }; + + // GM6 + class srifle_GM6_ghex_F: srifle_GM6_F { + displayName = CSTRING(srifle_GM6_ghex); + }; + + // M249 + class LMG_03_base_F; + class LMG_03_F: LMG_03_base_F { + displayName = CSTRING(LMG_03); + }; + + // Intervention + class srifle_LRR_tna_F: srifle_LRR_camo_F { + displayName = CSTRING(srifle_LRR_tna); + }; + + // MP5 + class SMG_05_base_F; + class SMG_05_F: SMG_05_base_F { + displayName = CSTRING(SMG_05); + }; + + // HK416 and variants + class arifle_SPAR_01_base_F; + class arifle_SPAR_01_blk_F: arifle_SPAR_01_base_F { + displayName = CSTRING(arifle_SPAR_01_blk); + }; + class arifle_SPAR_01_khk_F: arifle_SPAR_01_base_F { + displayName = CSTRING(arifle_SPAR_01_khk); + }; + class arifle_SPAR_01_snd_F: arifle_SPAR_01_base_F { + displayName = CSTRING(arifle_SPAR_01_snd); + }; + class arifle_SPAR_01_GL_base_F; + class arifle_SPAR_01_GL_blk_F: arifle_SPAR_01_GL_base_F { + displayName = CSTRING(arifle_SPAR_01_GL_blk); + }; + class arifle_SPAR_01_GL_khk_F: arifle_SPAR_01_GL_base_F { + displayName = CSTRING(arifle_SPAR_01_GL_khk); + }; + class arifle_SPAR_01_GL_snd_F: arifle_SPAR_01_GL_base_F { + displayName = CSTRING(arifle_SPAR_01_GL_snd); + }; + class arifle_SPAR_02_base_F; + class arifle_SPAR_02_blk_F: arifle_SPAR_02_base_F { + displayName = CSTRING(arifle_SPAR_02_blk); + }; + class arifle_SPAR_02_khk_F: arifle_SPAR_02_base_F { + displayName = CSTRING(arifle_SPAR_02_khk); + }; + class arifle_SPAR_02_snd_F: arifle_SPAR_02_base_F { + displayName = CSTRING(arifle_SPAR_02_snd); + }; + class arifle_SPAR_03_base_F; + class arifle_SPAR_03_blk_F: arifle_SPAR_03_base_F { + displayName = CSTRING(arifle_SPAR_03_blk); + }; + class arifle_SPAR_03_khk_F: arifle_SPAR_03_base_F { + displayName = CSTRING(arifle_SPAR_03_khk); + }; + class arifle_SPAR_03_snd_F: arifle_SPAR_03_base_F { + displayName = CSTRING(arifle_SPAR_03_snd); + }; + + // RPG-32 + class launch_RPG32_ghex_F: launch_RPG32_F { + displayName = CSTRING(launch_RPG32_ghex); + }; + + // P99 + class hgun_P07_khk_F: hgun_P07_F { + displayName = CSTRING(hgun_P07_khk); + }; + + // Makarov + class hgun_Pistol_01_F: Pistol_Base_F { + displayName = CSTRING(hgun_Pistol_01); + }; }; diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml index b9f6c85b93..6fca714871 100644 --- a/addons/realisticnames/stringtable.xml +++ b/addons/realisticnames/stringtable.xml @@ -1920,5 +1920,425 @@ LWMMG (Homok) LWMMG (Deserto) + + Jeep Wrangler + Jeep Wrangler + Jeep Wrangler + Jeep Wrangler + Jeep Wrangler + Jeep Wrangler + Jeep Wrangler + Jeep Wrangler + Jeep Wrangler + Jeep Wrangler + + + Jeep Wrangler (Black) + Jeep Wrangler (Černá) + Jeep Wrangler (Noir) + Jeep Wrangler (Negro) + Jeep Wrangler (Чёрный) + Jeep Wrangler (czarny) + Jeep Wrangler (Schwarz) + Jeep Wrangler (Nero) + Jeep Wrangler (Fekete) + Jeep Wrangler (Preto) + + + Jeep Wrangler (Blue) + Jeep Wrangler (Blau) + Jeep Wrangler (Azul) + Jeep Wrangler (niebieski) + Jeep Wrangler (Modrý) + Jeep Wrangler (Bleue) + Jeep Wrangler (Синий) + Jeep Wrangler (Azul) + Jeep Wrangler (Kék) + Jeep Wrangler (Blu) + + + Jeep Wrangler (Green) + Jeep Wrangler (Grün) + Jeep Wrangler (Verde) + Jeep Wrangler (zielony) + Jeep Wrangler (Zelený) + Jeep Wrangler (Verte) + Jeep Wrangler (Зелёный) + Jeep Wrangler (Verde) + Jeep Wrangler (Zöld) + Jeep Wrangler (Verde) + + + Jeep Wrangler (Orange) + Jeep Wrangler (Orange) + Jeep Wrangler (Naranja) + Jeep Wrangler (pomarańczowy) + Jeep Wrangler (Oranžový) + Jeep Wrangler (Orange) + Jeep Wrangler (Оранжевый) + Jeep Wrangler (Laranja) + Jeep Wrangler (Narancssárga) + Jeep Wrangler (Arancione) + + + Jeep Wrangler (Red) + Jeep Wrangler (Rot) + Jeep Wrangler (Rojo) + Jeep Wrangler (czerwony) + Jeep Wrangler (Červený) + Jeep Wrangler (Rouge) + Jeep Wrangler (Красный) + Jeep Wrangler (Vermelha) + Jeep Wrangler (Piros) + Jeep Wrangler (Rosso) + + + Jeep Wrangler (White) + Jeep Wrangler (Weiß) + Jeep Wrangler (Blanco) + Jeep Wrangler (biały) + Jeep Wrangler (Bílý) + Jeep Wrangler (Blanche) + Jeep Wrangler (Белый) + Jeep Wrangler (Branca) + Jeep Wrangler (Fehér) + Jeep Wrangler (Bianco) + + + Cessna TTx + Cessna TTx + Cessna TTx + Cessna TTx + Cessna TTx + Cessna TTx + Cessna TTx + Cessna TTx + Cessna TTx + Cessna TTx + + + Cessna TTx (Racing) + Cessna TTx (Racing) + Cessna TTx (Racing) + Cessna TTx (Racing) + Cessna TTx (Racing) + Cessna TTx (Racing) + Cessna TTx (Racing) + Cessna TTx (Racing) + Cessna TTx (Racing) + Cessna TTx (Racing) + + + Burraq UCAV + Burraq UCAV + Burraq UCAV + Burraq UCAV + Burraq UCAV + Burraq UCAV + Burraq UCAV + Burraq UCAV + Burraq UCAV + Burraq UCAV + + + QBZ-95-1 (Black) + QBZ-95-1 (Černá) + QBZ-95-1 (Noir) + QBZ-95-1 (Negro) + QBZ-95-1 (Чёрный) + QBZ-95-1 (czarny) + QBZ-95-1 (Schwarz) + QBZ-95-1 (Nero) + QBZ-95-1 (Fekete) + QBZ-95-1 (Preto) + + + QBZ-95-1 GL (Black) + QBZ-95-1 GL (Černá) + QBZ-95-1 GL (Noir) + QBZ-95-1 GL (Negro) + QBZ-95-1 GL (Чёрный) + QBZ-95-1 GL (czarny) + QBZ-95-1 GL (Schwarz) + QBZ-95-1 GL (Nero) + QBZ-95-1 GL (Fekete) + QBZ-95-1 GL (Preto) + + + QBZ-95-1 LSW (Black) + QBZ-95-1 LSW (Černá) + QBZ-95-1 LSW (Noir) + QBZ-95-1 LSW (Negro) + QBZ-95-1 LSW (Чёрный) + QBZ-95-1 LSW (czarny) + QBZ-95-1 LSW (Schwarz) + QBZ-95-1 LSW (Nero) + QBZ-95-1 LSW (Fekete) + QBZ-95-1 LSW (Preto) + + + QBU-88 (Black) + QBU-88 (Černá) + QBU-88 (Noir) + QBU-88 (Negro) + QBU-88 (Чёрный) + QBU-88 (czarny) + QBU-88 (Schwarz) + QBU-88 (Nero) + QBU-88 (Fekete) + QBU-88 (Preto) + + + QBU-88 (Green Hex) + QBU-88 (Hex Grün) + QBU-88 (Hex Verde) + QBU-88 (zielony hex) + QBU-88 (Zelený Hex) + QBU-88 (Hex Verte) + QBU-88 (Зелёный Hex) + QBU-88 (Verde Hex) + QBU-88 (Zöld Hex) + QBU-88 (Hex Verde) + + + QBU-88 (Hex) + QBU-88 (Hex) + QBU-88 (Hex) + QBU-88 (hex) + QBU-88 (Hex) + QBU-88 (Hex) + QBU-88 (Hex) + QBU-88 (Hex) + QBU-88 (Hex) + QBU-88 (Hex) + + + GM6 Lynx (Green Hex) + GM6 Lynx (Hex Grün) + GM6 Lynx (Hex Verde) + GM6 Lynx (Zielony hex) + GM6 Lynx (Zelený Hex) + GM6 Lynx (Hex Verte) + GM6 Lynx (Зелёный Hex) + GM6 Lynx (Verde Hex) + GM6 Lynx (Zöld Hex) + GM6 Lynx (Hex Verde) + + + M249 SPW + M249 SPW + M249 SPW + M249 SPW + M249 SPW + M249 SPW + M249 SPW + M249 SPW + M249 SPW + M249 SPW + + + M200 Intervention (Tropic) + M200 Intervention (Tropisch) + M200 Intervention (Obratník) + M200 Intervention (zwrotnik) + M200 Intervention (Tropique) + M200 Intervention (Tropikus) + M200 Intervention (Trópico) + M200 Intervention (тропик) + M200 Intervention (Trópico) + M200 Intervention (Tropico) + + + MP5K + MP5K + MP5K + MP5K + MP5K + MP5K + MP5K + MP5K + MP5K + MP5K + + + HK416A5 10" (Black) + HK416A5 10" (Černá) + HK416A5 10" (Noir) + HK416A5 10" (Negro) + HK416A5 10" (Чёрный) + HK416A5 10" (czarny) + HK416A5 10" (Schwarz) + HK416A5 10" (Nero) + HK416A5 10" (Fekete) + HK416A5 10" (Preto) + + + HK416A5 10" (Khaki) + HK416A5 10" (Khaki) + HK416A5 10" (Kaki) + HK416A5 10" (Caqui) + HK416A5 10" (Хаки) + HK416A5 10" (khaki) + HK416A5 10" (Khaki) + HK416A5 10" (Khaki) + HK416A5 10" (Khaki) + HK416A5 10" (Caqui) + + + HK416A5 10" (Sand) + HK416A5 10" (Písková) + HK416A5 10" (Beige) + HK416A5 10" (Arena) + HK416A5 10" (Песочный) + HK416A5 10" (Sand) + HK416A5 10" (piaskowy) + HK416A5 10" (Sabbia) + HK416A5 10" (Homok) + HK416A5 10" (Deserto) + + + HK416A5 10" GL (Black) + HK416A5 10" GL (Černá) + HK416A5 10" GL (Noir) + HK416A5 10" GL (Negro) + HK416A5 10" GL (Чёрный) + HK416A5 10" GL (czarny) + HK416A5 10" GL (Schwarz) + HK416A5 10" GL (Nero) + HK416A5 10" GL (Fekete) + HK416A5 10" GL (Preto) + + + HK416A5 10" GL (Khaki) + HK416A5 10" GL (Khaki) + HK416A5 10" GL (Kaki) + HK416A5 10" GL (Caqui) + HK416A5 10" GL (Хаки) + HK416A5 10" GL (khaki) + HK416A5 10" GL (Khaki) + HK416A5 10" GL (Khaki) + HK416A5 10" GL (Khaki) + HK416A5 10" GL (Caqui) + + + HK416A5 10" GL (Sand) + HK416A5 10" GL (Písková) + HK416A5 10" GL (Beige) + HK416A5 10" GL (Arena) + HK416A5 10" GL (Песочный) + HK416A5 10" GL (Sand) + HK416A5 10" GL (piaskowy) + HK416A5 10" GL (Sabbia) + HK416A5 10" GL (Homok) + HK416A5 10" GL (Deserto) + + + HK416A5 14.5" (Black) + HK416A5 14.5" (Černá) + HK416A5 14.5" (Noir) + HK416A5 14.5" (Negro) + HK416A5 14.5" (Чёрный) + HK416A5 14.5" (czarny) + HK416A5 14.5" (Schwarz) + HK416A5 14.5" (Nero) + HK416A5 14.5" (Fekete) + HK416A5 14.5" (Preto) + + + HK416A5 14.5" (Khaki) + HK416A5 14.5" (Khaki) + HK416A5 14.5" (Kaki) + HK416A5 14.5" (Caqui) + HK416A5 14.5" (Хаки) + HK416A5 14.5" (khaki) + HK416A5 14.5" (Khaki) + HK416A5 14.5" (Khaki) + HK416A5 14.5" (Khaki) + HK416A5 14.5" (Caqui) + + + HK416A5 14.5" (Sand) + HK416A5 14.5" (Písková) + HK416A5 14.5" (Beige) + HK416A5 14.5" (Arena) + HK416A5 14.5" (Песочный) + HK416A5 14.5" (Sand) + HK416A5 14.5" (piaskowy) + HK416A5 14.5" (Sabbia) + HK416A5 14.5" (Homok) + HK416A5 14.5" (Deserto) + + + HK417A2 20" (Black) + HK417A2 20" (Černá) + HK417A2 20" (Noir) + HK417A2 20" (Negro) + HK417A2 20" (Чёрный) + HK417A2 20" (czarny) + HK417A2 20" (Schwarz) + HK417A2 20" (Nero) + HK417A2 20" (Fekete) + HK417A2 20" (Preto) + + + HK417A2 20" (Khaki) + HK417A2 20" (Khaki) + HK417A2 20" (Kaki) + HK417A2 20" (Caqui) + HK417A2 20" (Хаки) + HK417A2 20" (khaki) + HK417A2 20" (Khaki) + HK417A2 20" (Khaki) + HK417A2 20" (Khaki) + HK417A2 20" (Caqui) + + + HK417A2 20" (Sand) + HK417A2 20" (Písková) + HK417A2 20" (Beige) + HK417A2 20" (Arena) + HK417A2 20" (Песочный) + HK417A2 20" (Sand) + HK417A2 20" (piaskowy) + HK417A2 20" (Sabbia) + HK417A2 20" (Homok) + HK417A2 20" (Deserto) + + + RPG-32 (Green Hex) + RPG-32 (Hex Grün) + RPG-32 (Hex Verde) + RPG-32 (zielony hex) + RPG-32 (Zelený Hex) + RPG-32 (Hex Verte) + RPG-32 (Зелёный Hex) + RPG-32 (Verde Hex) + RPG-32 (Zöld Hex) + RPG-32 (Hex Verde) + + + P99 (Khaki) + P99 (Khaki) + P99 (Kaki) + P99 (Caqui) + P99 (Хаки) + P99 (khaki) + P99 (Khaki) + P99 (Khaki) + P99 (Khaki) + P99 (Caqui) + + + Makarov PM + Makarov PM + Makarov PM + Makarowa PM + Makarov PM + Makarov PM + Макарова ПМ + Makarov PM + Makarov PM + Makarov PM + - \ No newline at end of file + From 3ac1525a3d45932f86e5780f2b622730403c9837 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 9 Jul 2016 12:11:58 -0500 Subject: [PATCH 62/85] Add base icon --- addons/minedetector/CfgVehicles.hpp | 6 +++--- addons/minedetector/ui/icon_mineDetector.paa | Bin 0 -> 28320 bytes 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 addons/minedetector/ui/icon_mineDetector.paa diff --git a/addons/minedetector/CfgVehicles.hpp b/addons/minedetector/CfgVehicles.hpp index 6185471d49..14273b108c 100644 --- a/addons/minedetector/CfgVehicles.hpp +++ b/addons/minedetector/CfgVehicles.hpp @@ -15,7 +15,7 @@ class CfgVehicles { displayName = CSTRING(MetalDetector); condition = QUOTE([ACE_player] call FUNC(hasDetector)); statement = ""; - icon = "" //TODO + icon = QPATHTOF(ui\icon_mineDetector.paa); exceptions[] = {}; class GVAR(activate) { displayName = CSTRING(ActivateDetector); @@ -35,14 +35,14 @@ class CfgVehicles { displayName = CSTRING(ConnectHeadphones); condition = QUOTE(call FUNC(canConnectHeadphones)); statement = QUOTE([ARR_2(ACE_player, true)] call FUNC(connectHeadphones)); - icon = "" //TODO + icon = ""; //TODO exceptions[] = {}; }; class GVAR(disconnectHeadphones) { displayName = CSTRING(DisconnectHeadphones); condition = QUOTE(call FUNC(canDisconnectHeadphones)); statement = QUOTE([ARR_2(ACE_player, false)] call FUNC(connectHeadphones)); - icon = "" //TODO + icon = ""; //TODO exceptions[] = {}; }; }; diff --git a/addons/minedetector/ui/icon_mineDetector.paa b/addons/minedetector/ui/icon_mineDetector.paa new file mode 100644 index 0000000000000000000000000000000000000000..e335fc6a8fa209a4c22c6bfbaa4ee68abefc3443 GIT binary patch literal 28320 zcmeHQ4_Fgdw!e2~!vACfXbCEk2s(*?!KzUqB#2#0RQ^=En$?Pk+M)vDKhzpXgs#ul zB0;TURYd7-T}4#1>AD7p($}Z93fh*nMXOa*R1}bZ0+YbTd(zdCIk0RX70t9z*%YsW>gm_ZkdUmZ7j0*fK~!{VtE zCd7oJdjt9-_6C6Z9RR}?05B>U0A&gQS?JF{d94L-y9juIlYkiqfDF+CV6_tP9D!z& zzh)C*g?K)E@0bl+yh&_UkFJBP2FjA<`NB=DWU4PZhSsZNM%9#SoMRiIUz$ >6Y^a5n388I5(7}h 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 literal 0 HcmV?d00001 From 165bd4b3f8e6263faa2883be17e7b6c965861054 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 9 Jul 2016 20:00:53 -0300 Subject: [PATCH 63/85] Make volume consistent --- addons/minedetector/CfgSounds.hpp | 8 ++++---- addons/minedetector/functions/fnc_playDetectorSound.sqf | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/minedetector/CfgSounds.hpp b/addons/minedetector/CfgSounds.hpp index fb83988da0..2f9ce91da1 100644 --- a/addons/minedetector/CfgSounds.hpp +++ b/addons/minedetector/CfgSounds.hpp @@ -1,22 +1,22 @@ class CfgSounds { class ace_detector_1 { name = "ace_detector_1"; - sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+1", 1}; + sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+3", 1}; titles[] = {}; }; class ace_detector_2 { name = "ace_detector_2"; - sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+1", 0.9}; + sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+3", 0.9}; titles[] = {}; }; class ace_detector_3 { name = "ace_detector_3"; - sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+1", 0.8}; + sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+3", 0.8}; titles[] = {}; }; class ace_detector_4 { name = "ace_detector_4"; - sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+1", 0.7}; + sound[] = {QUOTE(PATHTOF(sounds\metal_detector.wss)), "db+3", 0.7}; titles[] = {}; }; }; diff --git a/addons/minedetector/functions/fnc_playDetectorSound.sqf b/addons/minedetector/functions/fnc_playDetectorSound.sqf index e54bc48260..dc57532b8c 100644 --- a/addons/minedetector/functions/fnc_playDetectorSound.sqf +++ b/addons/minedetector/functions/fnc_playDetectorSound.sqf @@ -30,5 +30,5 @@ if (_unit getVariable [QGVAR(isUsingHeadphones), false] && {_unit == ACE_player} playSound _soundClass; } else { private _posASL = AGLtoASL (_unit modelToWorld (_unit selectionPosition "granat")); - [_soundClass, _posASL, 5, 15] call EFUNC(common,playConfigSound3D); + [_soundClass, _posASL, 3, 15] call EFUNC(common,playConfigSound3D); }; From 721bc205ef58793cbc0c6920f35dfbf79a905079 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 10 Jul 2016 13:49:06 -0500 Subject: [PATCH 64/85] Allow defusing naval mines Fix #4074 - Workaround for naval mines not working with deactivate - Add "isNotSwimming" exception to defuse progress bar --- addons/explosives/functions/fnc_defuseExplosive.sqf | 9 ++++++++- addons/explosives/functions/fnc_startDefuse.sqf | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/addons/explosives/functions/fnc_defuseExplosive.sqf b/addons/explosives/functions/fnc_defuseExplosive.sqf index b98b992f8e..97c1f59a1d 100644 --- a/addons/explosives/functions/fnc_defuseExplosive.sqf +++ b/addons/explosives/functions/fnc_defuseExplosive.sqf @@ -25,5 +25,12 @@ if (GVAR(ExplodeOnDefuse) && {(random 1.0) < (getNumber (ConfigFile >> "CfgAmmo" [QGVAR(explodeOnDefuse), [_explosive, _unit]] call CBA_fnc_globalEvent; }; -_unit action ["Deactivate", _unit, _explosive]; [QGVAR(defuse), [_explosive, _unit]] call CBA_fnc_globalEvent; + +if (!(_explosive isKindOf "UnderwaterMine_Range_Ammo")) then { + _unit action ["Deactivate", _unit, _explosive]; +} else { + // Underwater naval mines don't seem to respond to the deactivate action + // For now, lets just delete them + deleteVehicle _explosive; +}; diff --git a/addons/explosives/functions/fnc_startDefuse.sqf b/addons/explosives/functions/fnc_startDefuse.sqf index 8e3f071661..dd991de4ff 100644 --- a/addons/explosives/functions/fnc_startDefuse.sqf +++ b/addons/explosives/functions/fnc_startDefuse.sqf @@ -63,6 +63,6 @@ if (ACE_player != _unit) then { _isEOD = [_unit] call EFUNC(Common,isEOD); _defuseTime = [_isEOD, _target] call _fnc_DefuseTime; if (_isEOD || {!GVAR(RequireSpecialist)}) then { - [_defuseTime, [_unit,_target], {(_this select 0) call FUNC(defuseExplosive)}, {}, (localize LSTRING(DefusingExplosive))] call EFUNC(common,progressBar); + [_defuseTime, [_unit,_target], {(_this select 0) call FUNC(defuseExplosive)}, {}, (localize LSTRING(DefusingExplosive)), {true}, ["isNotSwimming"]] call EFUNC(common,progressBar); }; }; From 74da7916103249b42fb4ce23a1e43482a8dd34e8 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 10 Jul 2016 17:29:19 -0500 Subject: [PATCH 65/85] Proper fix for naval mines --- addons/explosives/functions/fnc_canDefuse.sqf | 13 +++++++------ addons/explosives/functions/fnc_defuseExplosive.sqf | 9 +-------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/addons/explosives/functions/fnc_canDefuse.sqf b/addons/explosives/functions/fnc_canDefuse.sqf index e69ac41dac..be114bf072 100644 --- a/addons/explosives/functions/fnc_canDefuse.sqf +++ b/addons/explosives/functions/fnc_canDefuse.sqf @@ -4,7 +4,7 @@ * * Arguments: * 0: Unit - * 0: Target + * 0: Target (ACE_DefuseObject) * * Return Value: * Able to defuse @@ -19,15 +19,16 @@ params ["_unit", "_target"]; TRACE_2("params",_unit,_target); -private ["_isSpecialist"]; - -if (isNull(_target getVariable [QGVAR(Explosive),objNull])) exitWith { +private _explosive = _target getVariable [QGVAR(Explosive), objNull]; +if (isNull _explosive) exitWith { deleteVehicle _target; false }; if (vehicle _unit != _unit || {!("ACE_DefusalKit" in (items _unit))}) exitWith {false}; -_isSpecialist = [_unit] call EFUNC(Common,isEOD); -if (GVAR(RequireSpecialist) && {!_isSpecialist}) exitWith {false}; +if (GVAR(RequireSpecialist) && {!([_unit] call EFUNC(Common,isEOD))}) exitWith {false}; + +//Handle the naval mines (which doens't get turned into items when defused): +if ((_explosive isKindOf "UnderwaterMine_Range_Ammo") && {!mineActive _explosive}) exitWith {false}; true diff --git a/addons/explosives/functions/fnc_defuseExplosive.sqf b/addons/explosives/functions/fnc_defuseExplosive.sqf index 97c1f59a1d..b98b992f8e 100644 --- a/addons/explosives/functions/fnc_defuseExplosive.sqf +++ b/addons/explosives/functions/fnc_defuseExplosive.sqf @@ -25,12 +25,5 @@ if (GVAR(ExplodeOnDefuse) && {(random 1.0) < (getNumber (ConfigFile >> "CfgAmmo" [QGVAR(explodeOnDefuse), [_explosive, _unit]] call CBA_fnc_globalEvent; }; +_unit action ["Deactivate", _unit, _explosive]; [QGVAR(defuse), [_explosive, _unit]] call CBA_fnc_globalEvent; - -if (!(_explosive isKindOf "UnderwaterMine_Range_Ammo")) then { - _unit action ["Deactivate", _unit, _explosive]; -} else { - // Underwater naval mines don't seem to respond to the deactivate action - // For now, lets just delete them - deleteVehicle _explosive; -}; From 9b85bc3e294590708871a33b90669daa6087ff3d Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 11 Jul 2016 11:15:36 +0200 Subject: [PATCH 66/85] v3.6.1 --- README.md | 2 +- addons/main/script_mod.hpp | 2 +- docs/README_DE.md | 2 +- docs/README_PL.md | 2 +- mod.cpp | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 99c739980c..a3b34a2c3b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

- ACE3 Version + ACE3 Version ACE3 Issues diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index dcf84348a5..b7e8bbf49a 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -5,7 +5,7 @@ #define MAJOR 3 #define MINOR 6 -#define PATCHLVL 0 +#define PATCHLVL 1 #define BUILD 0 #define VERSION MAJOR.MINOR.PATCHLVL.BUILD diff --git a/docs/README_DE.md b/docs/README_DE.md index f7985229ae..82db0f1063 100644 --- a/docs/README_DE.md +++ b/docs/README_DE.md @@ -4,7 +4,7 @@

- ACE3 Version + ACE3 Version ACE3 Fehlermeldungen diff --git a/docs/README_PL.md b/docs/README_PL.md index 0122aa9c78..9033dc453b 100644 --- a/docs/README_PL.md +++ b/docs/README_PL.md @@ -3,7 +3,7 @@

- ACE3 Wersja + ACE3 Wersja ACE3 Zagadnienia diff --git a/mod.cpp b/mod.cpp index 7cf6e85aa6..7e70a36f84 100644 --- a/mod.cpp +++ b/mod.cpp @@ -1,8 +1,8 @@ -name = "Advanced Combat Environment 3.6.0"; +name = "Advanced Combat Environment 3.6.1"; picture = "logo_ace3_ca.paa"; actionName = "GitHub"; action = "https://github.com/acemod/ACE3"; -description = "ACE3 - Version 3.6.0"; +description = "ACE3 - Version 3.6.1"; logo = "logo_ace3_ca.paa"; logoOver = "logo_ace3_ca.paa"; tooltip = "ACE3"; From 25a3405d1f7288ef81f562b7a0b50ed7f848b306 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 11 Jul 2016 11:46:31 +0200 Subject: [PATCH 67/85] required addons apex, close #4020 --- addons/main/config.cpp | 308 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 305 insertions(+), 3 deletions(-) diff --git a/addons/main/config.cpp b/addons/main/config.cpp index 9aebb11e36..5d485b6fd9 100644 --- a/addons/main/config.cpp +++ b/addons/main/config.cpp @@ -8,7 +8,8 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = { // Vanilla - "3den", + "a3_3den", + "a3_3den_language", "a3_air_f", "a3_air_f_beta", "a3_air_f_beta_heli_attack_01", @@ -17,10 +18,21 @@ class CfgPatches { "a3_air_f_beta_heli_transport_02", "a3_air_f_beta_parachute_01", "a3_air_f_beta_parachute_02", + "a3_air_f_epb", "a3_air_f_epb_heli_light_03", + "a3_air_f_epc", "a3_air_f_epc_plane_cas_01", "a3_air_f_epc_plane_cas_02", "a3_air_f_epc_plane_fighter_03", + "a3_air_f_exp", + "a3_air_f_exp_heli_light_01", + "a3_air_f_exp_heli_transport_01", + "a3_air_f_exp_plane_civil_01", + "a3_air_f_exp_uav_03", + "a3_air_f_exp_uav_04", + "a3_air_f_exp_vtol_01", + "a3_air_f_exp_vtol_02", + "a3_air_f_gamma", "a3_air_f_gamma_plane_fighter_03", "a3_air_f_gamma_uav_01", "a3_air_f_gamma_uav_02", @@ -38,6 +50,11 @@ class CfgPatches { "a3_air_f_heli_light_02", "a3_animals_f", "a3_animals_f_animconfig", + "a3_animals_f_beta", + "a3_animals_f_beta_chicken", + "a3_animals_f_beta_dog", + "a3_animals_f_beta_goat", + "a3_animals_f_beta_sheep", "a3_animals_f_chicken", "a3_animals_f_dog", "a3_animals_f_fishes", @@ -49,42 +66,75 @@ class CfgPatches { "a3_animals_f_snakes", "a3_animals_f_turtle", "a3_anims_f", + "a3_anims_f_bootcamp", "a3_anims_f_config_sdr", + "a3_anims_f_config_sdr_weaponswitching", + "a3_anims_f_data", "a3_anims_f_epa", "a3_anims_f_epc", + "a3_anims_f_exp", "a3_anims_f_exp_a", + "a3_anims_f_exp_revive", "a3_anims_f_heli", "a3_anims_f_kart", + "a3_anims_f_mark", "a3_anims_f_mark_deployment", "a3_armor_f", "a3_armor_f_amv", "a3_armor_f_apc_wheeled_03", "a3_armor_f_beta", + "a3_armor_f_beta_apc_tracked_01", "a3_armor_f_beta_apc_tracked_02", + "a3_armor_f_beta_apc_wheeled_01", + "a3_armor_f_beta_apc_wheeled_02", + "a3_armor_f_epb", "a3_armor_f_epb_apc_tracked_03", "a3_armor_f_epb_mbt_03", + "a3_armor_f_epc", "a3_armor_f_epc_mbt_01", + "a3_armor_f_exp", + "a3_armor_f_exp_apc_tracked_02", + "a3_armor_f_exp_apc_wheeled_02", + "a3_armor_f_exp_mbt_02", + "a3_armor_f_gamma", + "a3_armor_f_gamma_apc_wheeled_03", + "a3_armor_f_gamma_mbt_01", + "a3_armor_f_gamma_mbt_02", "a3_armor_f_marid", "a3_armor_f_panther", "a3_armor_f_slammer", "a3_armor_f_t100k", "a3_baseconfig_f", "a3_boat_f", + "a3_boat_f_beta", "a3_boat_f_beta_boat_armed_01", "a3_boat_f_beta_boat_transport_01", + "a3_boat_f_beta_sdv_01", "a3_boat_f_boat_armed_01", "a3_boat_f_boat_transport_01", "a3_boat_f_civilian_boat", + "a3_boat_f_epc", + "a3_boat_f_epc_submarine_01", "a3_boat_f_epc_submarine_01_f", + "a3_boat_f_exp", + "a3_boat_f_exp_boat_transport_01", + "a3_boat_f_exp_boat_transport_02", + "a3_boat_f_exp_scooter_transport_01", + "a3_boat_f_gamma", + "a3_boat_f_gamma_boat_civil_01", + "a3_boat_f_gamma_boat_civil_04", "a3_boat_f_gamma_boat_transport_01", + "a3_boat_f_heli", "a3_boat_f_heli_boat_armed_01", "a3_boat_f_heli_sdv_01", "a3_boat_f_sdv_01", "a3_boat_f_trawler", "a3_cargoposes_f", + "a3_cargoposes_f_exp", "a3_cargoposes_f_heli", "a3_characters_f", "a3_characters_f_beta", + "a3_characters_f_beta_indep", "a3_characters_f_blufor", "a3_characters_f_bootcamp", "a3_characters_f_bootcamp_common", @@ -94,6 +144,10 @@ class CfgPatches { "a3_characters_f_epb", "a3_characters_f_epb_heads", "a3_characters_f_epc", + "a3_characters_f_exp", + "a3_characters_f_exp_civil", + "a3_characters_f_exp_headgear", + "a3_characters_f_exp_vests", "a3_characters_f_gamma", "a3_characters_f_heads", "a3_characters_f_indep", @@ -110,22 +164,54 @@ class CfgPatches { "a3_data_f_curator_misc", "a3_data_f_curator_respawn", "a3_data_f_curator_virtual", + "a3_data_f_exp", "a3_data_f_exp_a", "a3_data_f_exp_a_virtual", "a3_data_f_exp_b", + "a3_data_f_exp_particleeffects", "a3_data_f_heli", "a3_data_f_hook", "a3_data_f_kart", "a3_data_f_kart_particleeffects", "a3_data_f_mark", "a3_data_f_particleeffects", + "a3_drones_f", + "a3_drones_f_air_f_gamma_uav_01", + "a3_drones_f_air_f_gamma_uav_02", + "a3_drones_f_characters_f_gamma", + "a3_drones_f_soft_f_gamma_ugv_01", + "a3_drones_f_weapons_f_gamma_ammoboxes", + "a3_drones_f_weapons_f_gamma_items", + "a3_dubbing_f", + "a3_dubbing_f_beta", + "a3_dubbing_f_bootcamp", + "a3_dubbing_f_epa", + "a3_dubbing_f_epb", + "a3_dubbing_f_epc", + "a3_dubbing_f_exp", + "a3_dubbing_f_gamma", + "a3_dubbing_f_heli", + "a3_dubbing_f_mark", + "a3_dubbing_f_mp_mark", "a3_dubbing_radio_f", + "a3_dubbing_radio_f_data_eng", + "a3_dubbing_radio_f_data_engb", + "a3_dubbing_radio_f_data_gre", + "a3_dubbing_radio_f_data_per", + "a3_dubbing_radio_f_data_vr", + "a3_dubbing_radio_f_exp", + "a3_dubbing_radio_f_exp_data_chi", + "a3_dubbing_radio_f_exp_data_engfre", + "a3_dubbing_radio_f_exp_data_fre", "a3_editor_f", + "a3_editorpreviews_f", + "a3_editorpreviews_f_exp", "a3_functions_f", "a3_functions_f_bootcamp", "a3_functions_f_curator", "a3_functions_f_epa", "a3_functions_f_epc", + "a3_functions_f_exp", "a3_functions_f_exp_a", "a3_functions_f_heli", "a3_functions_f_mark", @@ -137,7 +223,9 @@ class CfgPatches { "a3_language_f_epa", "a3_language_f_epb", "a3_language_f_epc", + "a3_language_f_exp", "a3_language_f_exp_a", + "a3_language_f_exp_b", "a3_language_f_gamma", "a3_language_f_heli", "a3_language_f_kart", @@ -145,32 +233,69 @@ class CfgPatches { "a3_language_f_mp_mark", "a3_languagemissions_f", "a3_languagemissions_f_beta", + "a3_languagemissions_f_bootcamp", + "a3_languagemissions_f_epa", + "a3_languagemissions_f_epb", + "a3_languagemissions_f_epc", + "a3_languagemissions_f_exp", + "a3_languagemissions_f_exp_a", "a3_languagemissions_f_gamma", + "a3_languagemissions_f_heli", "a3_languagemissions_f_kart", + "a3_languagemissions_f_mark", "a3_languagemissions_f_mp_mark", "a3_map_altis", + "a3_map_altis_data", + "a3_map_altis_data_layers", "a3_map_altis_scenes", + "a3_map_altis_scenes_f", "a3_map_data", "a3_map_stratis", + "a3_map_stratis_data", + "a3_map_stratis_data_layers", "a3_map_stratis_scenes", + "a3_map_stratis_scenes_f", + "a3_map_vr", "a3_map_vr_scenes", + "a3_map_vr_scenes_f", "a3_misc_f", "a3_misc_f_helpers", "a3_missions_f", "a3_missions_f_beta", + "a3_missions_f_beta_data", + "a3_missions_f_beta_video", "a3_missions_f_bootcamp", + "a3_missions_f_bootcamp_data", + "a3_missions_f_bootcamp_video", "a3_missions_f_curator", + "a3_missions_f_data", "a3_missions_f_epa", + "a3_missions_f_epa_data", + "a3_missions_f_epa_video", "a3_missions_f_epb", "a3_missions_f_epc", + "a3_missions_f_exp", "a3_missions_f_exp_a", + "a3_missions_f_exp_a_data", + "a3_missions_f_exp_data", + "a3_missions_f_exp_video", "a3_missions_f_gamma", + "a3_missions_f_gamma_data", + "a3_missions_f_gamma_video", "a3_missions_f_heli", + "a3_missions_f_heli_data", + "a3_missions_f_heli_video", "a3_missions_f_kart", + "a3_missions_f_kart_data", "a3_missions_f_mark", + "a3_missions_f_mark_data", + "a3_missions_f_mark_video", "a3_missions_f_mp_mark", + "a3_missions_f_mp_mark_data", + "a3_missions_f_video", "a3_modules_f", "a3_modules_f_beta", + "a3_modules_f_beta_data", "a3_modules_f_beta_firingdrills", "a3_modules_f_bootcamp", "a3_modules_f_bootcamp_misc", @@ -191,18 +316,22 @@ class CfgPatches { "a3_modules_f_curator_ordnance", "a3_modules_f_curator_respawn", "a3_modules_f_curator_smokeshells", + "a3_modules_f_data", "a3_modules_f_dyno", "a3_modules_f_effects", "a3_modules_f_epb", "a3_modules_f_epb_misc", "a3_modules_f_events", + "a3_modules_f_exp", "a3_modules_f_exp_a", "a3_modules_f_groupmodifiers", "a3_modules_f_hc", "a3_modules_f_heli", + "a3_modules_f_heli_misc", "a3_modules_f_heli_spawnai", "a3_modules_f_intel", "a3_modules_f_kart", + "a3_modules_f_kart_data", "a3_modules_f_kart_timetrials", "a3_modules_f_livefeed", "a3_modules_f_mark", @@ -211,6 +340,7 @@ class CfgPatches { "a3_modules_f_marta", "a3_modules_f_misc", "a3_modules_f_mp_mark", + "a3_modules_f_mp_mark_objectives", "a3_modules_f_multiplayer", "a3_modules_f_objectmodifiers", "a3_modules_f_sites", @@ -220,65 +350,143 @@ class CfgPatches { "a3_modules_f_uav", "a3_music_f", "a3_music_f_bootcamp", + "a3_music_f_bootcamp_music", "a3_music_f_epa", + "a3_music_f_epa_music", "a3_music_f_epb", + "a3_music_f_epb_music", "a3_music_f_epc", + "a3_music_f_epc_music", + "a3_music_f_exp", + "a3_music_f_exp_music", "a3_music_f_heli", + "a3_music_f_heli_music", "a3_music_f_mark", + "a3_music_f_mark_music", + "a3_music_f_music", + "a3_plants_f", "a3_plants_f_bush", + "a3_props_f_exp", "a3_props_f_exp_a", "a3_props_f_exp_a_military", "a3_props_f_exp_a_military_equipment", + "a3_props_f_exp_civilian", + "a3_props_f_exp_civilian_garbage", + "a3_props_f_exp_commercial", + "a3_props_f_exp_commercial_market", + "a3_props_f_exp_industrial", + "a3_props_f_exp_industrial_heavyequipment", + "a3_props_f_exp_infrastructure", + "a3_props_f_exp_infrastructure_railways", + "a3_props_f_exp_infrastructure_traffic", + "a3_props_f_exp_military", + "a3_props_f_exp_military_camps", + "a3_props_f_exp_military_oldplanewrecks", + "a3_props_f_exp_naval", + "a3_props_f_exp_naval_boats", "a3_roads_f", "a3_rocks_f", + "a3_rocks_f_blunt", + "a3_rocks_f_sharp", + "a3_rocks_f_water", "a3_signs_f", "a3_signs_f_ad", + "a3_signs_f_signs_ad", "a3_soft_f", + "a3_soft_f_beta", + "a3_soft_f_beta_mrap_03", "a3_soft_f_beta_quadbike", + "a3_soft_f_beta_quadbike_01", + "a3_soft_f_beta_truck_01", + "a3_soft_f_beta_truck_02", + "a3_soft_f_bootcamp", "a3_soft_f_bootcamp_offroad_01", "a3_soft_f_bootcamp_quadbike", + "a3_soft_f_bootcamp_quadbike_01", "a3_soft_f_bootcamp_truck", + "a3_soft_f_bootcamp_van_01", "a3_soft_f_car", "a3_soft_f_crusher_ugv", + "a3_soft_f_epc", "a3_soft_f_epc_truck_03", + "a3_soft_f_exp", + "a3_soft_f_exp_lsv_01", + "a3_soft_f_exp_lsv_02", + "a3_soft_f_exp_mrap_02", + "a3_soft_f_exp_offroad_01", + "a3_soft_f_exp_offroad_02", + "a3_soft_f_exp_quadbike_01", + "a3_soft_f_exp_truck_03", + "a3_soft_f_exp_ugv_01", + "a3_soft_f_exp_van_01", + "a3_soft_f_gamma", + "a3_soft_f_gamma_hatchback_01", "a3_soft_f_gamma_hemtt", "a3_soft_f_gamma_offroad", + "a3_soft_f_gamma_offroad_01", "a3_soft_f_gamma_quadbike", + "a3_soft_f_gamma_quadbike_01", + "a3_soft_f_gamma_suv_01", + "a3_soft_f_gamma_truck_01", + "a3_soft_f_gamma_truck_02", "a3_soft_f_gamma_truckheavy", + "a3_soft_f_gamma_van_01", + "a3_soft_f_heli", "a3_soft_f_heli_car", "a3_soft_f_heli_crusher_ugv", + "a3_soft_f_heli_hatchback_01", "a3_soft_f_heli_mrap_01", "a3_soft_f_heli_mrap_02", "a3_soft_f_heli_mrap_03", "a3_soft_f_heli_quadbike", + "a3_soft_f_heli_quadbike_01", "a3_soft_f_heli_suv", + "a3_soft_f_heli_suv_01", "a3_soft_f_heli_truck", + "a3_soft_f_heli_ugv_01", + "a3_soft_f_heli_van_01", "a3_soft_f_hemtt", + "a3_soft_f_kart", "a3_soft_f_kart_kart_01", "a3_soft_f_mrap_01", "a3_soft_f_mrap_02", "a3_soft_f_mrap_03", "a3_soft_f_offroad_01", "a3_soft_f_quadbike", + "a3_soft_f_quadbike_01", "a3_soft_f_suv", "a3_soft_f_truck", "a3_soft_f_truckheavy", "a3_sounds_f", + "a3_sounds_f_arsenal", "a3_sounds_f_bootcamp", + "a3_sounds_f_characters", + "a3_sounds_f_environment", "a3_sounds_f_epb", "a3_sounds_f_epc", + "a3_sounds_f_exp", "a3_sounds_f_exp_a", + "a3_sounds_f_heli", + "a3_sounds_f_kart", "a3_sounds_f_mark", + "a3_sounds_f_sfx", + "a3_sounds_f_vehicles", "a3_static_f", + "a3_static_f_aa_01", + "a3_static_f_at_01", + "a3_static_f_beta", "a3_static_f_beta_mortar_01", + "a3_static_f_exp", "a3_static_f_gamma", "a3_static_f_gamma_aa", "a3_static_f_gamma_at", "a3_static_f_gamma_mortar_01", + "a3_static_f_mark", "a3_static_f_mark_designator_01", "a3_static_f_mark_designator_02", "a3_static_f_mortar_01", "a3_structures_f", + "a3_structures_f_bootcamp", "a3_structures_f_bootcamp_civ_camping", "a3_structures_f_bootcamp_civ_sportsgrounds", "a3_structures_f_bootcamp_ind_cargo", @@ -312,6 +520,7 @@ class CfgPatches { "a3_structures_f_civ_sportsgrounds", "a3_structures_f_civ_statues", "a3_structures_f_civ_tourism", + "a3_structures_f_data", "a3_structures_f_dominants", "a3_structures_f_dominants_amphitheater", "a3_structures_f_dominants_castle", @@ -319,6 +528,7 @@ class CfgPatches { "a3_structures_f_dominants_hospital", "a3_structures_f_dominants_lighthouse", "a3_structures_f_dominants_wip", + "a3_structures_f_epa", "a3_structures_f_epa_civ_camping", "a3_structures_f_epa_civ_constructions", "a3_structures_f_epa_items_electronics", @@ -328,6 +538,7 @@ class CfgPatches { "a3_structures_f_epa_items_vessels", "a3_structures_f_epa_mil_scrapyard", "a3_structures_f_epa_walls", + "a3_structures_f_epb", "a3_structures_f_epb_civ_accessories", "a3_structures_f_epb_civ_camping", "a3_structures_f_epb_civ_dead", @@ -340,6 +551,7 @@ class CfgPatches { "a3_structures_f_epb_items_military", "a3_structures_f_epb_items_vessels", "a3_structures_f_epb_naval_fishing", + "a3_structures_f_epc", "a3_structures_f_epc_civ_accessories", "a3_structures_f_epc_civ_camping", "a3_structures_f_epc_civ_garbage", @@ -357,6 +569,7 @@ class CfgPatches { "a3_structures_f_exp_a_vr_blocks", "a3_structures_f_exp_a_vr_helpers", "a3_structures_f_furniture", + "a3_structures_f_heli", "a3_structures_f_heli_civ_accessories", "a3_structures_f_heli_civ_constructions", "a3_structures_f_heli_civ_garbage", @@ -410,6 +623,7 @@ class CfgPatches { "a3_structures_f_items_cans", "a3_structures_f_items_documents", "a3_structures_f_items_electronics", + "a3_structures_f_items_food", "a3_structures_f_items_gadgets", "a3_structures_f_items_luggage", "a3_structures_f_items_medical", @@ -418,9 +632,11 @@ class CfgPatches { "a3_structures_f_items_tools", "a3_structures_f_items_valuables", "a3_structures_f_items_vessels", + "a3_structures_f_kart", "a3_structures_f_kart_civ_sportsgrounds", "a3_structures_f_kart_mil_flags", "a3_structures_f_kart_signs_companies", + "a3_structures_f_mark", "a3_structures_f_mark_items_military", "a3_structures_f_mark_items_sport", "a3_structures_f_mark_mil_flags", @@ -454,6 +670,8 @@ class CfgPatches { "a3_structures_f_training_invisibletarget", "a3_structures_f_walls", "a3_structures_f_wrecks", + "a3_supplies_f_exp", + "a3_supplies_f_exp_ammoboxes", "a3_supplies_f_heli", "a3_supplies_f_heli_bladders", "a3_supplies_f_heli_cargonets", @@ -465,6 +683,8 @@ class CfgPatches { "a3_ui_f", "a3_ui_f_bootcamp", "a3_ui_f_curator", + "a3_ui_f_data", + "a3_ui_f_exp", "a3_ui_f_exp_a", "a3_ui_f_heli", "a3_ui_f_kart", @@ -479,13 +699,18 @@ class CfgPatches { "a3_weapons_f_beta_acc", "a3_weapons_f_beta_ammoboxes", "a3_weapons_f_beta_ebr", + "a3_weapons_f_beta_longrangerifles_ebr", + "a3_weapons_f_beta_longrangerifles_gm6", + "a3_weapons_f_beta_longrangerifles_m320", "a3_weapons_f_beta_rifles_khaybar", "a3_weapons_f_beta_rifles_mx", "a3_weapons_f_beta_rifles_trg20", "a3_weapons_f_bootcamp", "a3_weapons_f_bootcamp_ammoboxes", "a3_weapons_f_bootcamp_longrangerifles_gm6", + "a3_weapons_f_bootcamp_longrangerifles_gm6_camo", "a3_weapons_f_bootcamp_longrangerifles_m320", + "a3_weapons_f_bootcamp_longrangerifles_m320_camo", "a3_weapons_f_csat", "a3_weapons_f_dummyweapons", "a3_weapons_f_ebr", @@ -500,15 +725,35 @@ class CfgPatches { "a3_weapons_f_epb_acc", "a3_weapons_f_epb_ammoboxes", "a3_weapons_f_epb_longrangerifles_gm3", + "a3_weapons_f_epb_longrangerifles_gm6", "a3_weapons_f_epb_longrangerifles_m320", "a3_weapons_f_epb_rifles_mx_black", "a3_weapons_f_epc", + "a3_weapons_f_exp", + "a3_weapons_f_exp_launchers_rpg32", + "a3_weapons_f_exp_launchers_rpg7", + "a3_weapons_f_exp_launchers_titan", + "a3_weapons_f_exp_longrangerifles_dmr_07", + "a3_weapons_f_exp_machineguns_lmg_03", + "a3_weapons_f_exp_pistols_pistol_01", + "a3_weapons_f_exp_rifles_ak12", + "a3_weapons_f_exp_rifles_akm", + "a3_weapons_f_exp_rifles_aks", + "a3_weapons_f_exp_rifles_arx", + "a3_weapons_f_exp_rifles_ctar", + "a3_weapons_f_exp_rifles_ctars", + "a3_weapons_f_exp_rifles_spar_01", + "a3_weapons_f_exp_rifles_spar_02", + "a3_weapons_f_exp_rifles_spar_03", + "a3_weapons_f_exp_smgs_smg_05", "a3_weapons_f_explosives", "a3_weapons_f_fia", "a3_weapons_f_gamma", "a3_weapons_f_gamma_acc", "a3_weapons_f_gamma_ammoboxes", "a3_weapons_f_gamma_items", + "a3_weapons_f_gamma_longrangerifles_ebr", + "a3_weapons_f_gamma_rifles_mx", "a3_weapons_f_headgear", "a3_weapons_f_itemholders", "a3_weapons_f_items", @@ -516,7 +761,10 @@ class CfgPatches { "a3_weapons_f_kart_pistols_pistol_signal_f", "a3_weapons_f_launchers_law", "a3_weapons_f_launchers_nlaw", + "a3_weapons_f_launchers_rpg32", "a3_weapons_f_launchers_titan", + "a3_weapons_f_longrangerifles_dmr_01", + "a3_weapons_f_longrangerifles_ebr", "a3_weapons_f_longrangerifles_gm6", "a3_weapons_f_longrangerifles_m320", "a3_weapons_f_machineguns_m200", @@ -530,6 +778,7 @@ class CfgPatches { "a3_weapons_f_mark_longrangerifles_dmr_04", "a3_weapons_f_mark_longrangerifles_dmr_05", "a3_weapons_f_mark_longrangerifles_dmr_06", + "a3_weapons_f_mark_longrangerifles_ebr", "a3_weapons_f_mark_longrangerifles_gm6", "a3_weapons_f_mark_longrangerifles_gm6_camo", "a3_weapons_f_mark_longrangerifles_m320", @@ -553,19 +802,72 @@ class CfgPatches { "a3_weapons_f_rifles_khaybar", "a3_weapons_f_rifles_mk20", "a3_weapons_f_rifles_mx", + "a3_weapons_f_rifles_mx_black", "a3_weapons_f_rifles_sdar", "a3_weapons_f_rifles_smg_02", "a3_weapons_f_rifles_trg20", "a3_weapons_f_rifles_vector", + "a3_weapons_f_smgs_pdw2000", + "a3_weapons_f_smgs_smg_01", + "a3_weapons_f_smgs_smg_02", "a3_weapons_f_uniforms", "a3_weapons_f_vests", + "curatoronly_air_f_beta_heli_attack_01", + "curatoronly_air_f_beta_heli_attack_02", + "curatoronly_air_f_gamma_uav_01", + "curatoronly_armor_f_amv", + "curatoronly_armor_f_beta_apc_tracked_02", + "curatoronly_armor_f_marid", + "curatoronly_armor_f_panther", + "curatoronly_armor_f_slammer", + "curatoronly_armor_f_t100k", + "curatoronly_boat_f_boat_armed_01", + "curatoronly_characters_f_blufor", + "curatoronly_characters_f_common", + "curatoronly_characters_f_opfor", + "curatoronly_modules_f_curator_animals", + "curatoronly_modules_f_curator_chemlights", + "curatoronly_modules_f_curator_effects", + "curatoronly_modules_f_curator_environment", + "curatoronly_modules_f_curator_flares", + "curatoronly_modules_f_curator_lightning", + "curatoronly_modules_f_curator_mines", + "curatoronly_modules_f_curator_objectives", + "curatoronly_modules_f_curator_ordnance", + "curatoronly_modules_f_curator_smokeshells", + "curatoronly_signs_f", + "curatoronly_soft_f_crusher_ugv", + "curatoronly_soft_f_mrap_01", + "curatoronly_soft_f_mrap_02", + "curatoronly_soft_f_quadbike", + "curatoronly_static_f_gamma", + "curatoronly_static_f_mortar_01", + "curatoronly_structures_f_civ_ancient", + "curatoronly_structures_f_civ_camping", + "curatoronly_structures_f_civ_garbage", + "curatoronly_structures_f_epa_civ_constructions", + "curatoronly_structures_f_epb_civ_dead", + "curatoronly_structures_f_ind_cargo", + "curatoronly_structures_f_ind_crane", + "curatoronly_structures_f_ind_reservoirtank", + "curatoronly_structures_f_ind_transmitter_tower", + "curatoronly_structures_f_items_vessels", + "curatoronly_structures_f_mil_bagbunker", + "curatoronly_structures_f_mil_bagfence", + "curatoronly_structures_f_mil_cargo", + "curatoronly_structures_f_mil_fortification", + "curatoronly_structures_f_mil_radar", + "curatoronly_structures_f_mil_shelters", + "curatoronly_structures_f_research", + "curatoronly_structures_f_walls", + "curatoronly_structures_f_wrecks", "a3data", + "3den", "map_vr", + // CBA - "extended_eventhandlers", "cba_ui", "cba_xeh", - "cba_xeh_a3", "cba_jr" }; author = ECSTRING(common,ACETeam); From 35a6636ca33aad2474f64ad68eb853bec52c1155 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 11 Jul 2016 12:08:12 +0200 Subject: [PATCH 68/85] Add ACE javelin as required addon dependency --- optionals/compat_rhs_usf3/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optionals/compat_rhs_usf3/config.cpp b/optionals/compat_rhs_usf3/config.cpp index f4f5a19665..36cb9aee00 100644 --- a/optionals/compat_rhs_usf3/config.cpp +++ b/optionals/compat_rhs_usf3/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"rhsusf_c_weapons", "rhsusf_c_troops", "rhsusf_c_m1a1", "rhsusf_c_m1a2", "RHS_US_A2_AirImport", "rhsusf_c_m109", "rhsusf_c_hmmwv", "rhsusf_c_rg33", "rhsusf_c_fmtv", "rhsusf_c_m113", "RHS_US_A2Port_Armor"}; + requiredAddons[] = {"ace_javelin", "rhsusf_c_weapons", "rhsusf_c_troops", "rhsusf_c_m1a1", "rhsusf_c_m1a2", "RHS_US_A2_AirImport", "rhsusf_c_m109", "rhsusf_c_hmmwv", "rhsusf_c_rg33", "rhsusf_c_fmtv", "rhsusf_c_m113", "RHS_US_A2Port_Armor"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut"}; url = ECSTRING(main,URL); From d0c30577afd62b8f125711a4c1700b495af32cee Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 11 Jul 2016 19:18:40 +0200 Subject: [PATCH 69/85] Remove usage of setUnconscious --- addons/medical/functions/fnc_setUnconscious.sqf | 1 - addons/medical/functions/fnc_unconsciousPFH.sqf | 1 - 2 files changed, 2 deletions(-) diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf index 41c02dd553..0572eeba15 100644 --- a/addons/medical/functions/fnc_setUnconscious.sqf +++ b/addons/medical/functions/fnc_setUnconscious.sqf @@ -43,7 +43,6 @@ if (!local _unit) exitWith { }; _unit setVariable ["ACE_isUnconscious", true, true]; -_unit setUnconscious true; if (_unit == ACE_player) then { if (visibleMap) then {openMap false}; diff --git a/addons/medical/functions/fnc_unconsciousPFH.sqf b/addons/medical/functions/fnc_unconsciousPFH.sqf index edf2e871fd..37d54a2ad6 100644 --- a/addons/medical/functions/fnc_unconsciousPFH.sqf +++ b/addons/medical/functions/fnc_unconsciousPFH.sqf @@ -36,7 +36,6 @@ if (!alive _unit) exitWith { [_unit, "setCaptive", "ace_unconscious", false] call EFUNC(common,statusEffect_set); [_unit, false] call EFUNC(common,disableAI); //_unit setUnitPos _originalPos; - _unit setUnconscious false; [_unit, "isUnconscious"] call EFUNC(common,unmuteUnit); ["ace_unconscious", [_unit, false]] call CBA_fnc_globalEvent; From 0869cf96bd0f2f089b06a94977c00502740bba65 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 11 Jul 2016 19:27:40 +0200 Subject: [PATCH 70/85] required arma3 version 1.62. closes #4081 --- addons/main/script_mod.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index b7e8bbf49a..2a2927010d 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -12,7 +12,7 @@ #define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD // MINIMAL required version for the Mod. Components can specify others.. -#define REQUIRED_VERSION 1.60 +#define REQUIRED_VERSION 1.62 #define REQUIRED_CBA_VERSION {2,4,1} #ifdef COMPONENT_BEAUTIFIED From 845dca9ea529888e3cfddb36e809a88396f6aa07 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 12 Jul 2016 16:13:53 +0200 Subject: [PATCH 71/85] Add description and example to blur screen function --- addons/common/functions/fnc_blurScreen.sqf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_blurScreen.sqf b/addons/common/functions/fnc_blurScreen.sqf index 2c6a17cbe3..4a6c0d3cb4 100644 --- a/addons/common/functions/fnc_blurScreen.sqf +++ b/addons/common/functions/fnc_blurScreen.sqf @@ -1,13 +1,17 @@ /* * Author: Glowbal + * Blurs screen. * * Arguments: * 0: ID - * 1: Show? + * 1: Show? * * Return Value: * None * + * Example: + * [5, true] call ace_common_fnc_blurScreen + * * Public: Yes */ #include "script_component.hpp" From 8a4514f8e74cd99a7f6ed6e0c21bd20b520fdb69 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 12 Jul 2016 16:16:01 +0200 Subject: [PATCH 72/85] use a function to do gestures --- addons/common/XEH_PREP.hpp | 1 + addons/common/XEH_postInit.sqf | 4 ++-- addons/common/functions/fnc_doGesture.sqf | 24 +++++++++++++++++++ addons/dragging/functions/fnc_dropObject.sqf | 2 +- addons/dragging/functions/fnc_startDrag.sqf | 4 +++- .../functions/fnc_placeExplosive.sqf | 2 +- .../functions/fnc_setupExplosive.sqf | 2 +- .../explosives/functions/fnc_startDefuse.sqf | 4 ++-- addons/finger/functions/fnc_keyPress.sqf | 2 +- addons/gestures/CfgVehicles.hpp | 12 +++++----- addons/gestures/functions/fnc_playSignal.sqf | 3 +-- addons/goggles/functions/fnc_clearGlasses.sqf | 2 +- addons/interaction/functions/fnc_getDown.sqf | 2 +- .../functions/fnc_passMagazine.sqf | 2 +- addons/interaction/functions/fnc_sendAway.sqf | 2 +- .../interaction/functions/fnc_tapShoulder.sqf | 2 +- .../functions/fnc_checkTemperature.sqf | 2 +- addons/overheating/functions/fnc_clearJam.sqf | 2 +- .../overheating/functions/fnc_swapBarrel.sqf | 2 +- .../functions/fnc_swapBarrelCallback.sqf | 2 +- addons/parachute/functions/fnc_doLanding.sqf | 18 +++++++++----- addons/reload/functions/fnc_checkAmmo.sqf | 2 +- .../reload/functions/fnc_startLinkingBelt.sqf | 2 +- .../sandbag/functions/fnc_deployConfirm.sqf | 2 +- addons/sandbag/functions/fnc_pickup.sqf | 2 +- addons/tagging/functions/fnc_tag.sqf | 2 +- 26 files changed, 69 insertions(+), 37 deletions(-) create mode 100644 addons/common/functions/fnc_doGesture.sqf diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp index a66f12615f..ad11cfb447 100644 --- a/addons/common/XEH_PREP.hpp +++ b/addons/common/XEH_PREP.hpp @@ -32,6 +32,7 @@ PREP(displayText); PREP(displayTextPicture); PREP(displayTextStructured); PREP(doAnimation); +PREP(doGesture); PREP(dropBackpack); PREP(endRadioTransmission); PREP(eraseCache); diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 32588189cb..2c50bf70cd 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -118,6 +118,8 @@ if (isServer) then { [QGVAR(setVelocity), {(_this select 0) setVelocity (_this select 1)}] call CBA_fnc_addEventHandler; [QGVAR(playMove), {(_this select 0) playMove (_this select 1)}] call CBA_fnc_addEventHandler; [QGVAR(playMoveNow), {(_this select 0) playMoveNow (_this select 1)}] call CBA_fnc_addEventHandler; +[QGVAR(playAction), {(_this select 0) playAction (_this select 1)}] call CBA_fnc_addEventHandler; +[QGVAR(playActionNow), {(_this select 0) playActionNow (_this select 1)}] call CBA_fnc_addEventHandler; [QGVAR(switchMove), {(_this select 0) switchMove (_this select 1)}] call CBA_fnc_addEventHandler; [QGVAR(setVectorDirAndUp), {(_this select 0) setVectorDirAndUp (_this select 1)}] call CBA_fnc_addEventHandler; [QGVAR(setVanillaHitPointDamage), {(_this select 0) setHitPointDamage (_this select 1)}] call CBA_fnc_addEventHandler; @@ -406,8 +408,6 @@ GVAR(OldIsCamera) = false; GVAR(isReloading) = false; -["isNotReloading", {!GVAR(isReloading)}] call FUNC(addCanInteractWithCondition); - ["keyDown", { if ((_this select 1) in actionKeys "ReloadMagazine" && {alive ACE_player}) then { private _weapon = currentWeapon ACE_player; diff --git a/addons/common/functions/fnc_doGesture.sqf b/addons/common/functions/fnc_doGesture.sqf new file mode 100644 index 0000000000..cee117a85b --- /dev/null +++ b/addons/common/functions/fnc_doGesture.sqf @@ -0,0 +1,24 @@ +/* + * Author: commy2 + * Play a gesture. + * + * Arguments: + * 0: Unit + * 1: Animation + * + * Return Value: + * None + * + * Example: + * [player, "gestureGo"] call ace_common_fnc_doGesture + * + * Public: No + */ +#include "script_component.hpp" + +params ["_unit", "_animation"]; +TRACE_4("params",_unit,_animation); + +if (!GVAR(isReloading)) then { + [QGVAR(playActionNow), [_unit, _animation], _unit] call CBA_fnc_targetEvent; +}; diff --git a/addons/dragging/functions/fnc_dropObject.sqf b/addons/dragging/functions/fnc_dropObject.sqf index c70bf90c38..f060c8d088 100644 --- a/addons/dragging/functions/fnc_dropObject.sqf +++ b/addons/dragging/functions/fnc_dropObject.sqf @@ -26,7 +26,7 @@ private _inBuilding = [_unit] call FUNC(isObjectOnObject); if !(_unit getVariable ["ACE_isUnconscious", false]) then { // play release animation - _unit playAction "released"; + [_unit, "released"] call EFUNC(common,doGesture); }; // prevent collision damage diff --git a/addons/dragging/functions/fnc_startDrag.sqf b/addons/dragging/functions/fnc_startDrag.sqf index 5ddaa0ede4..8601c628e7 100644 --- a/addons/dragging/functions/fnc_startDrag.sqf +++ b/addons/dragging/functions/fnc_startDrag.sqf @@ -39,7 +39,9 @@ _unit selectWeapon primaryWeapon _unit; [_unit, _target, true] call EFUNC(common,claim); // can't play action that depends on weapon if it was added the same frame -[{_this playActionNow "grabDrag";}, _unit] call CBA_fnc_execNextFrame; +[{ + [_this, "grabDrag"] call EFUNC(common,doGesture); +}, _unit] call CBA_fnc_execNextFrame; // move a bit closer and adjust direction when trying to pick up a person if (_target isKindOf "CAManBase") then { diff --git a/addons/explosives/functions/fnc_placeExplosive.sqf b/addons/explosives/functions/fnc_placeExplosive.sqf index 455b768b97..4a3e06df4b 100644 --- a/addons/explosives/functions/fnc_placeExplosive.sqf +++ b/addons/explosives/functions/fnc_placeExplosive.sqf @@ -27,7 +27,7 @@ TRACE_7("params",_unit,_pos,_dir,_magazineClass,_triggerConfig,_triggerSpecificV private ["_ammo", "_explosive", "_attachedTo", "_magazineTrigger", "_pitch", "_digDistance", "_canDigDown", "_soundEnviron", "_surfaceType"]; -_unit playActionNow "PutDown"; +[_unit, "PutDown"] call EFUNC(common,doGesture); _attachedTo = objNull; if (!isNull _setupPlaceholderObject) then { diff --git a/addons/explosives/functions/fnc_setupExplosive.sqf b/addons/explosives/functions/fnc_setupExplosive.sqf index 6dd1094c6a..0897836eb3 100644 --- a/addons/explosives/functions/fnc_setupExplosive.sqf +++ b/addons/explosives/functions/fnc_setupExplosive.sqf @@ -185,7 +185,7 @@ GVAR(TweakedAngle) = 0; _expSetupVehicle setVariable [QGVAR(Direction), _placeAngle, true]; _unit removeMagazine _magClassname; - _unit playActionNow "PutDown"; + [_unit, "PutDown"] call EFUNC(common,doGesture); _unit setVariable [QGVAR(PlantingExplosive), true]; [{_this setVariable [QGVAR(PlantingExplosive), false]}, _unit, 1.5] call CBA_fnc_waitAndExecute; diff --git a/addons/explosives/functions/fnc_startDefuse.sqf b/addons/explosives/functions/fnc_startDefuse.sqf index dd991de4ff..99d68a5734 100644 --- a/addons/explosives/functions/fnc_startDefuse.sqf +++ b/addons/explosives/functions/fnc_startDefuse.sqf @@ -46,7 +46,7 @@ if (ACE_player != _unit) then { if (isPlayer _unit) then { [QGVAR(startDefuse), [_unit, _target], _unit] call CBA_fnc_targetEvent; } else { - _unit playActionNow _actionToPlay; + [_unit, _actionToPlay] call EFUNC(common,doGesture); _unit disableAI "MOVE"; _unit disableAI "TARGET"; _defuseTime = [[_unit] call EFUNC(Common,isEOD), _target] call _fnc_DefuseTime; @@ -59,7 +59,7 @@ if (ACE_player != _unit) then { }, [_unit, _target], _defuseTime] call CBA_fnc_waitAndExecute; }; } else { - _unit playActionNow _actionToPlay; + [_unit, _actionToPlay] call EFUNC(common,doGesture); _isEOD = [_unit] call EFUNC(Common,isEOD); _defuseTime = [_isEOD, _target] call _fnc_DefuseTime; if (_isEOD || {!GVAR(RequireSpecialist)}) then { diff --git a/addons/finger/functions/fnc_keyPress.sqf b/addons/finger/functions/fnc_keyPress.sqf index ec2d7722ad..b9231fb17b 100644 --- a/addons/finger/functions/fnc_keyPress.sqf +++ b/addons/finger/functions/fnc_keyPress.sqf @@ -60,6 +60,6 @@ TRACE_1("sending finger to",_sendFingerToPlayers); [QGVAR(fingered), [ACE_player, _fingerPosASL, _originASL vectorDistance _fingerPosASL], _sendFingerToPlayers] call CBA_fnc_targetEvent; -ACE_player playActionNow "GestureGo"; +[ACE_player, "GestureGo"] call EFUNC(common,doGesture); true diff --git a/addons/gestures/CfgVehicles.hpp b/addons/gestures/CfgVehicles.hpp index d91c6df95e..6eb3990446 100644 --- a/addons/gestures/CfgVehicles.hpp +++ b/addons/gestures/CfgVehicles.hpp @@ -14,42 +14,42 @@ class CfgVehicles { class GVAR(Advance) { displayName = CSTRING(Advance); condition = QUOTE(true); - statement = QUOTE(_target playActionNow 'gestureAdvance';); + statement = QUOTE([ARR_2(_target,'gestureAdvance')] call EFUNC(common,doGesture);); showDisabled = 1; priority = 1.9; }; class GVAR(Go) { displayName = CSTRING(Go); condition = QUOTE(true); - statement = QUOTE(_target playActionNow ([ARR_2('gestureGo','gestureGoB')] select floor random 2);); + statement = QUOTE([ARR_2(_target,selectRandom [ARR_2('gestureGo','gestureGoB')])] call EFUNC(common,doGesture);); showDisabled = 1; priority = 1.8; }; class GVAR(Follow) { displayName = CSTRING(Follow); condition = QUOTE(true); - statement = QUOTE(_target playActionNow 'gestureFollow';); + statement = QUOTE([ARR_2(_target,'gestureFollow')] call EFUNC(common,doGesture);); showDisabled = 1; priority = 1.7; }; class GVAR(Up) { displayName = CSTRING(Up); condition = QUOTE(true); - statement = QUOTE(_target playActionNow 'gestureUp';); + statement = QUOTE([ARR_2(_target,'gestureUp')] call EFUNC(common,doGesture);); showDisabled = 1; priority = 1.5; }; class GVAR(CeaseFire) { displayName = CSTRING(CeaseFire); condition = QUOTE(true); - statement = QUOTE(_target playActionNow 'gestureCeaseFire';); + statement = QUOTE([ARR_2(_target,'gestureCeaseFire')] call EFUNC(common,doGesture);); showDisabled = 1; priority = 1.3; }; class GVAR(Stop) { displayName = CSTRING(Stop); condition = QUOTE(true); - statement = QUOTE(_target playActionNow 'gestureFreeze';); // BI animation - is actualls "stop" in all stances but prone + statement = QUOTE([ARR_2(_target,'gestureFreeze')] call EFUNC(common,doGesture);); // BI animation - is actualls "stop" in all stances but prone showDisabled = 1; priority = 1.2; }; diff --git a/addons/gestures/functions/fnc_playSignal.sqf b/addons/gestures/functions/fnc_playSignal.sqf index 56c3bceb01..273db82da1 100644 --- a/addons/gestures/functions/fnc_playSignal.sqf +++ b/addons/gestures/functions/fnc_playSignal.sqf @@ -17,7 +17,6 @@ TRACE_1("params",_this); -if (EGVAR(common,isReloading)) exitWith {false}; if (GVAR(showOnInteractionMenu) == 0) exitWith {false}; if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -34,5 +33,5 @@ private _gesture = if ((_this select [0,2]) == "BI") then { }; TRACE_1("playing gesture",_gesture); -ACE_player playAction _gesture; +[ACE_player, _gesture] call EFUNC(common,doGesture); true diff --git a/addons/goggles/functions/fnc_clearGlasses.sqf b/addons/goggles/functions/fnc_clearGlasses.sqf index f1622c8680..b01960527a 100644 --- a/addons/goggles/functions/fnc_clearGlasses.sqf +++ b/addons/goggles/functions/fnc_clearGlasses.sqf @@ -27,7 +27,7 @@ _effects set [BROKEN, _broken]; SETGLASSES(_unit,_effects); if ((stance _unit != "PRONE") && {primaryWeapon _unit != ""} && {currentWeapon _unit == primaryWeapon _unit}) then { - _unit playActionNow "gestureWipeFace"; + [_unit, "gestureWipeFace"] call EFUNC(common,doGesture); }; [{ diff --git a/addons/interaction/functions/fnc_getDown.sqf b/addons/interaction/functions/fnc_getDown.sqf index af0a9da38c..53a846e1c3 100644 --- a/addons/interaction/functions/fnc_getDown.sqf +++ b/addons/interaction/functions/fnc_getDown.sqf @@ -20,7 +20,7 @@ params ["_unit", "_target"]; -_unit playActionNow "GestureGo"; +[_unit, "GestureGo"] call EFUNC(common,doGesture); private "_chance"; _chance = [0.5, 0.8] select (count weapons _unit > 0); diff --git a/addons/interaction/functions/fnc_passMagazine.sqf b/addons/interaction/functions/fnc_passMagazine.sqf index 5016215c39..15a193cd26 100644 --- a/addons/interaction/functions/fnc_passMagazine.sqf +++ b/addons/interaction/functions/fnc_passMagazine.sqf @@ -45,7 +45,7 @@ _player removeMagazines _magToPassClassName; }; } foreach _filteredMags; -_player playActionNow "PutDown"; +[_player, "PutDown"] call EFUNC(common,doGesture); _target addMagazine [_magToPassClassName, _magToPassAmmoCount]; diff --git a/addons/interaction/functions/fnc_sendAway.sqf b/addons/interaction/functions/fnc_sendAway.sqf index c200587f2b..abd4ec50aa 100644 --- a/addons/interaction/functions/fnc_sendAway.sqf +++ b/addons/interaction/functions/fnc_sendAway.sqf @@ -20,7 +20,7 @@ params ["_unit"]; -_unit playActionNow "GestureGo"; +[_unit, "GestureGo"] call EFUNC(common,doGesture); private "_chance"; _chance = [0.5, 0.8] select (count weapons _unit > 0); diff --git a/addons/interaction/functions/fnc_tapShoulder.sqf b/addons/interaction/functions/fnc_tapShoulder.sqf index d6621d2c07..3926503746 100644 --- a/addons/interaction/functions/fnc_tapShoulder.sqf +++ b/addons/interaction/functions/fnc_tapShoulder.sqf @@ -23,6 +23,6 @@ if (_unit == ACE_player) then { addCamShake [4, 0.5, 5]; }; -_unit playActionNow "PutDown"; +[_unit, "PutDown"] call EFUNC(common,doGesture); [QGVAR(tapShoulder), [_target, _shoulderNum], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/overheating/functions/fnc_checkTemperature.sqf b/addons/overheating/functions/fnc_checkTemperature.sqf index 0fb600f83a..c58d14a29d 100644 --- a/addons/overheating/functions/fnc_checkTemperature.sqf +++ b/addons/overheating/functions/fnc_checkTemperature.sqf @@ -28,7 +28,7 @@ if (_assistant isEqualTo _gunner) then { _action = "Gear"; }; }; -_assistant playActionNow _action; +[_assistant, _action] call EFUNC(common,doGesture); // Waits a sec before displaying the temperature [FUNC(displayTemperature), [_gunner, _weapon], 1.0] call CBA_fnc_waitAndExecute; diff --git a/addons/overheating/functions/fnc_clearJam.sqf b/addons/overheating/functions/fnc_clearJam.sqf index 7011385c02..52fdee41a7 100644 --- a/addons/overheating/functions/fnc_clearJam.sqf +++ b/addons/overheating/functions/fnc_clearJam.sqf @@ -32,7 +32,7 @@ if (_weapon in _jammedWeapons) then { _clearJamAction = getText (configFile >> "CfgWeapons" >> _weapon >> "reloadAction"); }; - _unit playActionNow _clearJamAction; + [_unit, _clearJamAction] call EFUNC(common,doGesture); if (_weapon == primaryWeapon _unit) then { playSound QGVAR(fixing_rifle); } else { diff --git a/addons/overheating/functions/fnc_swapBarrel.sqf b/addons/overheating/functions/fnc_swapBarrel.sqf index b904936403..3ad49df7d7 100644 --- a/addons/overheating/functions/fnc_swapBarrel.sqf +++ b/addons/overheating/functions/fnc_swapBarrel.sqf @@ -26,7 +26,7 @@ if (stance _gunner != "PRONE") then { }; // Barrel dismount gesture -_gunner playActionNow QGVAR(GestureDismountMuzzle); +[_gunner, QGVAR(GestureDismountMuzzle)] call EFUNC(common,doGesture); playSound "ACE_BarrelSwap"; private _duration = 3.0; diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index b2d559d1e2..0e4326cfea 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -23,7 +23,7 @@ TRACE_3("params",_assistant,_gunner,_weapon); if (_assistant isEqualTo _gunner) then { // Barrel mount gesture - _gunner playAction QGVAR(GestureMountMuzzle); + [_gunner, QGVAR(GestureMountMuzzle)] call EFUNC(common,doGesture); playSound "ACE_BarrelSwap"; }; diff --git a/addons/parachute/functions/fnc_doLanding.sqf b/addons/parachute/functions/fnc_doLanding.sqf index 213bf10887..a0c71b5dbb 100644 --- a/addons/parachute/functions/fnc_doLanding.sqf +++ b/addons/parachute/functions/fnc_doLanding.sqf @@ -14,14 +14,20 @@ * Public: No */ #include "script_component.hpp" -private["_unit"]; -_unit = _this select 0; + +params ["_unit"]; + GVAR(PFH) = false; + [_unit, "AmovPercMevaSrasWrflDf_AmovPknlMstpSrasWrflDnon", 2] call EFUNC(common,doAnimation); + _unit setVariable [QGVAR(chuteIsCut), false, true]; + [{ - if (CBA_missionTime >= ((_this select 0) select 0) + 1) then { - ((_this select 0) select 1) playActionNow "Crouch"; - [(_this select 1)] call CALLSTACK(CBA_fnc_removePerFrameHandler); + (_this select 0) params ["_time", "_unit"]; + + if (CBA_missionTime > _time + 1) then { + [_unit, "Crouch"] call EFUNC(common,doGesture); + [_this select 1] call CALLSTACK(CBA_fnc_removePerFrameHandler); }; -}, 1, [CBA_missionTime,_unit]] call CALLSTACK(CBA_fnc_addPerFrameHandler); +}, 1, [CBA_missionTime, _unit]] call CALLSTACK(CBA_fnc_addPerFrameHandler); diff --git a/addons/reload/functions/fnc_checkAmmo.sqf b/addons/reload/functions/fnc_checkAmmo.sqf index 49a1f0728d..8d2289ac8c 100644 --- a/addons/reload/functions/fnc_checkAmmo.sqf +++ b/addons/reload/functions/fnc_checkAmmo.sqf @@ -31,7 +31,7 @@ if (count _this > 1) then { }; if (_unit == _target) then { - _unit playActionNow "Gear"; + [_unit, "Gear"] call EFUNC(common,doGesture); }; [FUNC(displayAmmo), [_target], 1, 0.1] call CBA_fnc_waitAndExecute; diff --git a/addons/reload/functions/fnc_startLinkingBelt.sqf b/addons/reload/functions/fnc_startLinkingBelt.sqf index 1590abbfab..a1cc73635d 100644 --- a/addons/reload/functions/fnc_startLinkingBelt.sqf +++ b/addons/reload/functions/fnc_startLinkingBelt.sqf @@ -57,7 +57,7 @@ private _onFailure = { _player addMagazine _magazine; }; -_player playActionNow "PutDown"; +[_player, "PutDown"] call EFUNC(common,doGesture); // Remove the magazine with maximum remaining ammo [_player, _magazineType, _maxAmmo] call EFUNC(common,removeSpecificMagazine); diff --git a/addons/sandbag/functions/fnc_deployConfirm.sqf b/addons/sandbag/functions/fnc_deployConfirm.sqf index c37e0ed0d9..47b74533a1 100644 --- a/addons/sandbag/functions/fnc_deployConfirm.sqf +++ b/addons/sandbag/functions/fnc_deployConfirm.sqf @@ -53,6 +53,6 @@ call EFUNC(interaction,hideMouseHint); [_unit, "DefaultAction", _unit getVariable [QGVAR(Deploy), -1]] call EFUNC(common,removeActionEventHandler); // play animation -_unit playActionNow "PutDown"; +[_unit, "PutDown"] call EFUNC(common,doGesture); _unit setVariable [QGVAR(isDeploying), false, true]; diff --git a/addons/sandbag/functions/fnc_pickup.sqf b/addons/sandbag/functions/fnc_pickup.sqf index fd4560fdec..f7eaca9b72 100644 --- a/addons/sandbag/functions/fnc_pickup.sqf +++ b/addons/sandbag/functions/fnc_pickup.sqf @@ -18,7 +18,7 @@ params ["_unit", "_sandbag"]; -_unit playActionNow "PutDown"; +[_unit, "PutDown"] call EFUNC(common,doGesture); _unit setVariable [QGVAR(isUsingSandbag), true]; diff --git a/addons/tagging/functions/fnc_tag.sqf b/addons/tagging/functions/fnc_tag.sqf index 165441f80e..e39b6eed22 100644 --- a/addons/tagging/functions/fnc_tag.sqf +++ b/addons/tagging/functions/fnc_tag.sqf @@ -105,7 +105,7 @@ if ( !([ 0.5*TAG_SIZE, 0.5*TAG_SIZE] call _fnc_isOk) || private _vectorDirAndUp = [_surfaceNormal vectorMultiply -1, _v3]; // Everything ok, make the unit create the tag -_unit playActionNow "PutDown"; +[_unit, "PutDown"] call EFUNC(common,doGesture); [{ params ["", "", "", "", "_unit"]; From a0aea441b49ca2837d00b41b250305b87dba07d8 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 11 Jul 2016 21:53:02 -0500 Subject: [PATCH 73/85] Fix reload mutex with binocs or mounted Fix #4088 --- addons/common/XEH_postInit.sqf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 2c50bf70cd..d9c90f14f8 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -410,10 +410,13 @@ GVAR(isReloading) = false; ["keyDown", { if ((_this select 1) in actionKeys "ReloadMagazine" && {alive ACE_player}) then { + //Ignore mounted (except ffv) + if (!(player call CBA_fnc_canUseWeapon)) exitWith {}; private _weapon = currentWeapon ACE_player; if (_weapon != "") then { private _gesture = getText (configfile >> "CfgWeapons" >> _weapon >> "reloadAction"); + if (_gesture == "") exitWith {}; //Ignore weapons with no reload gesture (binoculars) private _isLauncher = _weapon isKindOf ["Launcher", configFile >> "CfgWeapons"]; private _config = ["CfgGesturesMale", "CfgMovesMaleSdr"] select _isLauncher; private _duration = getNumber (configfile >> _config >> "States" >> _gesture >> "speed"); From ce72bfd07a93135746812d344951cb72f427742b Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 12 Jul 2016 16:28:36 +0200 Subject: [PATCH 74/85] replace tabs with spaces --- addons/dragging/functions/fnc_startDrag.sqf | 2 +- addons/parachute/functions/fnc_doLanding.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/dragging/functions/fnc_startDrag.sqf b/addons/dragging/functions/fnc_startDrag.sqf index 8601c628e7..cf08074d94 100644 --- a/addons/dragging/functions/fnc_startDrag.sqf +++ b/addons/dragging/functions/fnc_startDrag.sqf @@ -40,7 +40,7 @@ _unit selectWeapon primaryWeapon _unit; // can't play action that depends on weapon if it was added the same frame [{ - [_this, "grabDrag"] call EFUNC(common,doGesture); + [_this, "grabDrag"] call EFUNC(common,doGesture); }, _unit] call CBA_fnc_execNextFrame; // move a bit closer and adjust direction when trying to pick up a person diff --git a/addons/parachute/functions/fnc_doLanding.sqf b/addons/parachute/functions/fnc_doLanding.sqf index a0c71b5dbb..b80bc44d00 100644 --- a/addons/parachute/functions/fnc_doLanding.sqf +++ b/addons/parachute/functions/fnc_doLanding.sqf @@ -24,7 +24,7 @@ GVAR(PFH) = false; _unit setVariable [QGVAR(chuteIsCut), false, true]; [{ - (_this select 0) params ["_time", "_unit"]; + (_this select 0) params ["_time", "_unit"]; if (CBA_missionTime > _time + 1) then { [_unit, "Crouch"] call EFUNC(common,doGesture); From 0281bc8f3da0e721e8be2c754eaf32dcf599e17d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 Jul 2016 02:32:18 -0500 Subject: [PATCH 75/85] Fix 3den attribute layout for 1.62 --- addons/medical/CfgEden.hpp | 6 +++--- addons/repair/CfgEden.hpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/medical/CfgEden.hpp b/addons/medical/CfgEden.hpp index a9b4594b66..e4d034a413 100644 --- a/addons/medical/CfgEden.hpp +++ b/addons/medical/CfgEden.hpp @@ -16,9 +16,9 @@ class Cfg3DEN { class Value: ctrlToolbox { idc = 100; style = "0x02"; - x = "48 * (pixelW * pixelGrid * 0.25)"; - w = "82 * (pixelW * pixelGrid * 0.25)"; - h = "5 * (pixelH * pixelGrid * 0.25)"; + x = "48 * (pixelW * pixelGrid * 0.50)"; + w = "82 * (pixelW * pixelGrid * 0.50)"; + h = "5 * (pixelH * pixelGrid * 0.50)"; rows = 1; columns = 4; strings[] = {"$STR_3DEN_Attributes_Lock_Default_text", CSTRING(AssignMedicRoles_role_none), CSTRING(AssignMedicRoles_role_medic), CSTRING(AssignMedicRoles_role_doctorShort)}; diff --git a/addons/repair/CfgEden.hpp b/addons/repair/CfgEden.hpp index ca315d68ec..eb7933fee4 100644 --- a/addons/repair/CfgEden.hpp +++ b/addons/repair/CfgEden.hpp @@ -16,9 +16,9 @@ class Cfg3DEN { class Value: ctrlToolbox { idc = 100; style = "0x02"; - x = "48 * (pixelW * pixelGrid * 0.25)"; - w = "82 * (pixelW * pixelGrid * 0.25)"; - h = "5 * (pixelH * pixelGrid * 0.25)"; + x = "48 * (pixelW * pixelGrid * 0.50)"; + w = "82 * (pixelW * pixelGrid * 0.50)"; + h = "5 * (pixelH * pixelGrid * 0.50)"; rows = 1; columns = 4; strings[] = {"$STR_3DEN_Attributes_Lock_Default_text", CSTRING(AssignEngineerRole_role_none), CSTRING(AssignEngineerRole_role_engineer), CSTRING(AssignEngineerRole_role_specialist)}; From 981dc874a4c0d79bcf7a92e5da4f8ada0036072b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 Jul 2016 13:17:29 -0500 Subject: [PATCH 76/85] Add missing vanilla magazines to LMG_Minigun Fix #4098 Missing: "500Rnd_65x39_Belt" "500Rnd_65x39_Belt_Tracer_Red_Splash" "500Rnd_65x39_Belt_Tracer_Green_Splash" "500Rnd_65x39_Belt_Tracer_Yellow_Splash" --- addons/vehicles/CfgWeapons.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/vehicles/CfgWeapons.hpp b/addons/vehicles/CfgWeapons.hpp index 6c0953eb76..c4d28c3e31 100644 --- a/addons/vehicles/CfgWeapons.hpp +++ b/addons/vehicles/CfgWeapons.hpp @@ -27,7 +27,7 @@ class CfgWeapons { }; class LMG_Minigun: LMG_RCWS { - magazines[] = {"1000Rnd_65x39_Belt","1000Rnd_65x39_Belt_Green","1000Rnd_65x39_Belt_Tracer_Green","1000Rnd_65x39_Belt_Tracer_Red","1000Rnd_65x39_Belt_Tracer_Yellow","1000Rnd_65x39_Belt_Yellow","2000Rnd_65x39_Belt","2000Rnd_65x39_Belt_Green","2000Rnd_65x39_Belt_Tracer_Green","2000Rnd_65x39_Belt_Tracer_Green_Splash","2000Rnd_65x39_Belt_Tracer_Red","2000Rnd_65x39_Belt_Tracer_Yellow","2000Rnd_65x39_Belt_Tracer_Yellow_Splash","2000Rnd_65x39_Belt_Yellow","2000Rnd_762x51_Belt_T_Green","2000Rnd_762x51_Belt_T_Red","2000Rnd_762x51_Belt_T_Yellow","200Rnd_65x39_Belt","200Rnd_65x39_Belt_Tracer_Green","200Rnd_65x39_Belt_Tracer_Red","200Rnd_65x39_Belt_Tracer_Yellow","5000Rnd_762x51_Belt","5000Rnd_762x51_Yellow_Belt"}; + magazines[] = {"1000Rnd_65x39_Belt","1000Rnd_65x39_Belt_Green","1000Rnd_65x39_Belt_Tracer_Green","1000Rnd_65x39_Belt_Tracer_Red","1000Rnd_65x39_Belt_Tracer_Yellow","1000Rnd_65x39_Belt_Yellow","2000Rnd_65x39_Belt","2000Rnd_65x39_Belt_Green","2000Rnd_65x39_Belt_Tracer_Green","2000Rnd_65x39_Belt_Tracer_Green_Splash","2000Rnd_65x39_Belt_Tracer_Red","2000Rnd_65x39_Belt_Tracer_Yellow","2000Rnd_65x39_Belt_Tracer_Yellow_Splash","2000Rnd_65x39_Belt_Yellow","2000Rnd_762x51_Belt_T_Green","2000Rnd_762x51_Belt_T_Red","2000Rnd_762x51_Belt_T_Yellow","200Rnd_65x39_Belt","200Rnd_65x39_Belt_Tracer_Green","200Rnd_65x39_Belt_Tracer_Red","200Rnd_65x39_Belt_Tracer_Yellow","5000Rnd_762x51_Belt","5000Rnd_762x51_Yellow_Belt","500Rnd_65x39_Belt","500Rnd_65x39_Belt_Tracer_Red_Splash","500Rnd_65x39_Belt_Tracer_Green_Splash","500Rnd_65x39_Belt_Tracer_Yellow_Splash"}; }; class HMG_127: LMG_RCWS { From 404d5b49b4acca5436b4b2584ad80f779f0eea01 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 13 Jul 2016 10:40:28 +0200 Subject: [PATCH 77/85] add function to read vanilla keybinds --- addons/common/XEH_PREP.hpp | 1 + .../fnc_actionKeysNamesConverted.sqf | 110 ++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 addons/common/functions/fnc_actionKeysNamesConverted.sqf diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp index ad11cfb447..0649dcefea 100644 --- a/addons/common/XEH_PREP.hpp +++ b/addons/common/XEH_PREP.hpp @@ -1,4 +1,5 @@ +PREP(actionKeysNamesConverted); PREP(addCanInteractWithCondition); PREP(addLineToDebugDraw); PREP(addSetting); diff --git a/addons/common/functions/fnc_actionKeysNamesConverted.sqf b/addons/common/functions/fnc_actionKeysNamesConverted.sqf new file mode 100644 index 0000000000..d60df89bfb --- /dev/null +++ b/addons/common/functions/fnc_actionKeysNamesConverted.sqf @@ -0,0 +1,110 @@ +/* + * Author: commy2 + * Reports same as actionKeysNames(Array) but in a format processable by "keyDown". + * + * Arguments: + * 0: Action name + * + * Return Value: + * Keybinds, format: [DIK, _shift, _ctrl, _alt] + * + * Example: + * "ReloadMagazine" call ace_common_fnc_actionKeysNamesConverted + * + * Public: No + */ +#include "script_component.hpp" + +#define LAST_DIK 250 +#define PLACEHOLDER_PLUS "" + +#define LKEYNAME_LSHIFT localize "STR_DIK_LSHIFT" +#define LKEYNAME_RSHIFT localize "STR_DIK_RSHIFT" +#define LKEYNAME_LCONTROL localize "STR_DIK_LCONTROL" +#define LKEYNAME_RCONTROL localize "STR_DIK_RCONTROL" +#define LKEYNAME_LALT localize "STR_DIK_LMENU" +#define LKEYNAME_RALT localize "STR_DIK_RMENU" + +// stored in ui namespace to force it to be recreated every game start +// this way we make it work in savegames after a language change +private _keyTable = uiNamespace getVariable QGVAR(keyNameTable); + +if (isNil "_keyTable") then { + _keyTable = []; + uiNamespace setVariable [QGVAR(keyNameTable), _keyTable]; + + for "_i" from 0 to LAST_DIK do { + private _keyName = keyName _i; + + // keys are reported as nested strings for god knows why + _keyName = _keyName select [1, count _keyName - 2]; + + _keyTable pushBack _keyName; + }; +}; + +private _keyCache = uiNamespace getVariable [QGVAR(keyNameCache), locationNull]; + +if (isNull _keyCache) then { + _keyCache = call CBA_fnc_createNamespace; + uiNamespace setVariable [QGVAR(keyNameCache), _keyCache]; +}; + +params [["_action", "", [""]]]; + +private _keybinds = actionKeysNamesArray _action apply { + private _keyName = _x; + private _keybind = _keyCache getVariable _keyName; + + if (isNil "_keybind") then { + private _key = -1; + private _shift = false; + private _ctrl = false; + private _alt = false; + + // copy, keep original varname for cache + private _keyImage = _keyName; + + // handle "+" being a key and the seperator - as first character + if ((_keyImage select [0,1]) isEqualTo "+") then { + _keyImage = PLACEHOLDER_PLUS + (_keyImage select [1]); + }; + + // - and as character seperated by "+" + _keyImage = [_keyImage, "++", "+" + PLACEHOLDER_PLUS] call CBA_fnc_replace; + + // get single keys (also revert back non-seperator "+" keys) + _keyImage = _keyImage splitString "+" apply { + [_x, "+"] select (_x isEqualTo PLACEHOLDER_PLUS); + }; + + // parse single keys + { + switch (true) do { + case (_x in [LKEYNAME_LSHIFT, LKEYNAME_RSHIFT]): { + _shift = true; + }; + case (_x in [LKEYNAME_LCONTROL, LKEYNAME_RCONTROL]): { + _ctrl = true; + }; + case (_x in [LKEYNAME_LALT, LKEYNAME_RALT]): { + _alt = true; + }; + default { + // @todo handle double keys? ("C+R") + // currently only reports last key + // not usable by keyDown by default + _key = _keyTable find _x; + }; + }; + } forEach _keyImage; + + // cache + _keybind = [_key, _shift, _ctrl, _alt]; + _keyCache setVariable [_keyName, _keybind]; + }; + + _keybind +}; + +_keybinds From cc76ac482a6083f4c0282920d4928fb114c64d88 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 13 Jul 2016 11:00:31 +0200 Subject: [PATCH 78/85] add priority parameter to doGesture --- addons/common/functions/fnc_doGesture.sqf | 6 +++--- addons/overheating/XEH_postInit.sqf | 7 ++----- addons/overheating/functions/fnc_clearJam.sqf | 2 +- addons/reload/XEH_postInit.sqf | 7 ++----- addons/reload/functions/fnc_checkAmmo.sqf | 2 +- 5 files changed, 9 insertions(+), 15 deletions(-) diff --git a/addons/common/functions/fnc_doGesture.sqf b/addons/common/functions/fnc_doGesture.sqf index cee117a85b..9805beffc7 100644 --- a/addons/common/functions/fnc_doGesture.sqf +++ b/addons/common/functions/fnc_doGesture.sqf @@ -16,9 +16,9 @@ */ #include "script_component.hpp" -params ["_unit", "_animation"]; -TRACE_4("params",_unit,_animation); +params ["_unit", "_animation", ["_priority", 0]]; +TRACE_3("params",_unit,_animation,_priority); -if (!GVAR(isReloading)) then { +if (!GVAR(isReloading) || {_priority > 0}) then { [QGVAR(playActionNow), [_unit, _animation], _unit] call CBA_fnc_targetEvent; }; diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index bc3dfad795..34390cbe20 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -3,8 +3,7 @@ if (hasInterface) then { // Add keybinds - ["ACE3 Weapons", QGVAR(unjamWeapon), localize LSTRING(UnjamWeapon), - { + ["ACE3 Weapons", QGVAR(unjamWeapon), localize LSTRING(UnjamWeapon), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific @@ -14,9 +13,7 @@ if (hasInterface) then { // Statement [ACE_player, currentMuzzle ACE_player, false] call FUNC(clearJam); true - }, - {false}, - [19, [true, false, false]], false] call CBA_fnc_addKeybind; //SHIFT + R Key + }, {false}, [19, [true, false, false]], false] call CBA_fnc_addKeybind; //SHIFT + R Key }; ["ace_settingsInitialized", { diff --git a/addons/overheating/functions/fnc_clearJam.sqf b/addons/overheating/functions/fnc_clearJam.sqf index 52fdee41a7..4dcdaa0caf 100644 --- a/addons/overheating/functions/fnc_clearJam.sqf +++ b/addons/overheating/functions/fnc_clearJam.sqf @@ -32,7 +32,7 @@ if (_weapon in _jammedWeapons) then { _clearJamAction = getText (configFile >> "CfgWeapons" >> _weapon >> "reloadAction"); }; - [_unit, _clearJamAction] call EFUNC(common,doGesture); + [_unit, _clearJamAction, 1] call EFUNC(common,doGesture); if (_weapon == primaryWeapon _unit) then { playSound QGVAR(fixing_rifle); } else { diff --git a/addons/reload/XEH_postInit.sqf b/addons/reload/XEH_postInit.sqf index b4579a96ee..7a5e17464c 100644 --- a/addons/reload/XEH_postInit.sqf +++ b/addons/reload/XEH_postInit.sqf @@ -4,8 +4,7 @@ if (!hasInterface) exitWith {}; // Add keybinds -["ACE3 Weapons", QGVAR(checkAmmo), localize LSTRING(checkAmmo), -{ +["ACE3 Weapons", QGVAR(checkAmmo), localize LSTRING(checkAmmo), { // Conditions: canInteract if !([ACE_player, vehicle ACE_player, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific @@ -14,9 +13,7 @@ if (!hasInterface) exitWith {}; // Statement [ACE_player] call FUNC(checkAmmo); true -}, -{false}, -[19, [false, true, false]], false] call CBA_fnc_addKeybind; +}, {false}, [19, [false, true, false]], false] call CBA_fnc_addKeybind; [QGVAR(syncAmmo), { //To propagate the setAmmo change, do it on all clients diff --git a/addons/reload/functions/fnc_checkAmmo.sqf b/addons/reload/functions/fnc_checkAmmo.sqf index 8d2289ac8c..baa0754f80 100644 --- a/addons/reload/functions/fnc_checkAmmo.sqf +++ b/addons/reload/functions/fnc_checkAmmo.sqf @@ -31,7 +31,7 @@ if (count _this > 1) then { }; if (_unit == _target) then { - [_unit, "Gear"] call EFUNC(common,doGesture); + [_unit, "Gear", 1] call EFUNC(common,doGesture); }; [FUNC(displayAmmo), [_target], 1, 0.1] call CBA_fnc_waitAndExecute; From 13e182a7a9a721aa9026df68d393df52d0da45b4 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 13 Jul 2016 13:49:05 -0500 Subject: [PATCH 79/85] Fix MainMenu Ace_Options Placement to top left Stick ace_options button placement to top left so it doesn't interfere with apex singleplayer menu --- addons/optionsmenu/gui/pauseMenu.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/optionsmenu/gui/pauseMenu.hpp b/addons/optionsmenu/gui/pauseMenu.hpp index e3a283d2c7..75177fa3b6 100644 --- a/addons/optionsmenu/gui/pauseMenu.hpp +++ b/addons/optionsmenu/gui/pauseMenu.hpp @@ -104,7 +104,8 @@ class RscDisplayMain: RscStandardDisplay { class controls { class ACE_Open_settingsMenu_Btn : ACE_Open_SettingsMenu_BtnBase { action = "if (missionName != '') then {createDialog 'ACE_settingsMenu';};"; - y = "4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + safezoneY"; + x = "safezoneX"; + y = "safezoneY"; idc = 80085; }; From 40d460b1b6f13ef375e1c9f77dc2e48d7d82b1c8 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Thu, 14 Jul 2016 03:32:30 +0200 Subject: [PATCH 80/85] Fixed MicroDAGR trailing zero --- addons/microdagr/functions/fnc_updateDisplay.sqf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/microdagr/functions/fnc_updateDisplay.sqf b/addons/microdagr/functions/fnc_updateDisplay.sqf index 7ba92e55ef..b13abbec06 100644 --- a/addons/microdagr/functions/fnc_updateDisplay.sqf +++ b/addons/microdagr/functions/fnc_updateDisplay.sqf @@ -1,4 +1,4 @@ -/* +/* * Author: PabstMirror * Updates the display (several times a second) called from the pfeh * @@ -49,7 +49,7 @@ case (APP_MODE_INFODISPLAY): { _compassAngleText = if (GVAR(settingUseMils)) then { [(floor ((6400 / 360) * (([ACE_player] call CBA_fnc_headDir) select 0))), 4, 0] call CBA_fnc_formatNumber; } else { - ([(floor (([ACE_player] call CBA_fnc_headDir) select 0)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 + ([([ACE_player] call CBA_fnc_headDir) select 0, 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 }; (_display displayCtrl IDC_MODEDISPLAY_HEADINGNUM) ctrlSetText _compassAngleText; @@ -89,7 +89,7 @@ case (APP_MODE_INFODISPLAY): { _bearingText = if (GVAR(settingUseMils)) then { [(floor ((6400 / 360) * (_bearing))), 4, 0] call CBA_fnc_formatNumber; } else { - ([(floor (_bearing)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 + ([_bearing, 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 }; _2dDistanceKm = ((getPosASL ACE_player) distance2D _targetPosLocationASL) / 1000; _rangeText = format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)]; @@ -109,7 +109,7 @@ case (APP_MODE_COMPASS): { _compassAngleText = if (GVAR(settingUseMils)) then { [(floor ((6400 / 360) * (([ACE_player] call CBA_fnc_headDir) select 0))), 4, 0] call CBA_fnc_formatNumber; } else { - ([(floor (([ACE_player] call CBA_fnc_headDir) select 0)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 + ([([ACE_player] call CBA_fnc_headDir) select 0, 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 }; (_display displayCtrl IDC_MODECOMPASS_HEADING) ctrlSetText _compassAngleText; @@ -145,7 +145,7 @@ case (APP_MODE_COMPASS): { _bearingText = if (GVAR(settingUseMils)) then { [(floor ((6400 / 360) * (_bearing))), 4, 0] call CBA_fnc_formatNumber; } else { - ([(floor (_bearing)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 + ([_bearing, 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 }; _2dDistanceKm = ((getPosASL ACE_player) distance2D _targetPosLocationASL) / 1000; _rangeText = format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)]; From 21f13297622e3d56aa53653b9dfe68afb1dec994 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 5 Jul 2016 10:26:50 +0200 Subject: [PATCH 81/85] Added keybind to cut ropes --- addons/fastroping/XEH_postInit.sqf | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/addons/fastroping/XEH_postInit.sqf b/addons/fastroping/XEH_postInit.sqf index 752ac2f756..2752e2dcde 100644 --- a/addons/fastroping/XEH_postInit.sqf +++ b/addons/fastroping/XEH_postInit.sqf @@ -7,3 +7,12 @@ [QGVAR(startFastRope), { [FUNC(fastRopeServerPFH), 0, _this] call CBA_fnc_addPerFrameHandler; }] call CBA_fnc_addEventHandler; + +["ACE3 Vehicles", QGVAR(cutRopes), localize LSTRING(Interaction_cutRopes), { + if ([vehicle ACE_player] call FUNC(canCutRopes)) then { + [vehicle ACE_player] call FUNC(cutRopes); + true + } else { + false + }; +}, {false}] call CBA_fnc_addKeybind; From 2f2c4b91a11968455ae30a76d0c4ba7e1c67e5ab Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 14 Jul 2016 14:51:46 +0200 Subject: [PATCH 82/85] 3.6.2 --- README.md | 2 +- addons/main/script_mod.hpp | 2 +- docs/README_DE.md | 2 +- docs/README_PL.md | 2 +- mod.cpp | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a3b34a2c3b..4af32fd2a2 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

- ACE3 Version + ACE3 Version ACE3 Issues diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 2a2927010d..56add6aead 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -5,7 +5,7 @@ #define MAJOR 3 #define MINOR 6 -#define PATCHLVL 1 +#define PATCHLVL 2 #define BUILD 0 #define VERSION MAJOR.MINOR.PATCHLVL.BUILD diff --git a/docs/README_DE.md b/docs/README_DE.md index 82db0f1063..9e1bcec8ab 100644 --- a/docs/README_DE.md +++ b/docs/README_DE.md @@ -4,7 +4,7 @@

- ACE3 Version + ACE3 Version ACE3 Fehlermeldungen diff --git a/docs/README_PL.md b/docs/README_PL.md index 9033dc453b..703613142e 100644 --- a/docs/README_PL.md +++ b/docs/README_PL.md @@ -3,7 +3,7 @@

- ACE3 Wersja + ACE3 Wersja ACE3 Zagadnienia diff --git a/mod.cpp b/mod.cpp index 7e70a36f84..146b821534 100644 --- a/mod.cpp +++ b/mod.cpp @@ -1,8 +1,8 @@ -name = "Advanced Combat Environment 3.6.1"; +name = "Advanced Combat Environment 3.6.2"; picture = "logo_ace3_ca.paa"; actionName = "GitHub"; action = "https://github.com/acemod/ACE3"; -description = "ACE3 - Version 3.6.1"; +description = "ACE3 - Version 3.6.2"; logo = "logo_ace3_ca.paa"; logoOver = "logo_ace3_ca.paa"; tooltip = "ACE3"; From 43c1c89cc12a8eef5efae85d1a22cb7eeb6c24c6 Mon Sep 17 00:00:00 2001 From: ColdEvul Date: Thu, 14 Jul 2016 03:34:06 +0200 Subject: [PATCH 83/85] Made new APEX crates draggable --- addons/dragging/CfgVehicles.hpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp index ba4ff87186..3f5dbce327 100644 --- a/addons/dragging/CfgVehicles.hpp +++ b/addons/dragging/CfgVehicles.hpp @@ -69,6 +69,33 @@ class CfgVehicles { GVAR(canCarry) = 1; GVAR(canDrag) = 1; }; + class Box_Syndicate_Ammo_F: ReammoBox_F { + GVAR(canCarry) = 1; + GVAR(canDrag) = 1; + }; + class Box_IED_Exp_F: ReammoBox_F { + GVAR(canCarry) = 1; + GVAR(canDrag) = 1; + }; + class Box_Syndicate_Wps_F: ReammoBox_F { + GVAR(canCarry) = 1; + GVAR(canDrag) = 1; + }; + class Box_Syndicate_WpsLaunch_F: ReammoBox_F { + GVAR(canCarry) = 1; + GVAR(canDrag) = 1; + }; + + class Box_NATO_Equip_F: ReammoBox_F { + GVAR(canCarry) = 1; + GVAR(carryDirection) = 270; + GVAR(canDrag) = 1; + }; + class Box_NATO_Uniforms_F: ReammoBox_F { + GVAR(canCarry) = 1; + GVAR(carryDirection) = 270; + GVAR(canDrag) = 1; + }; // Remove Larger crate dragging support. // Would be better to allow some sort of joint push/drag functionality From 492f075ac87d3c19e34416b4b2fcf62dad442492 Mon Sep 17 00:00:00 2001 From: ColdEvul Date: Thu, 14 Jul 2016 02:09:17 +0200 Subject: [PATCH 84/85] Added fixed name for `Weapon_SMG_05_F` (MP5K) for EDEN item. --- addons/realisticnames/CfgVehicles.hpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/realisticnames/CfgVehicles.hpp b/addons/realisticnames/CfgVehicles.hpp index 6f3cc8b32e..f53465b08f 100644 --- a/addons/realisticnames/CfgVehicles.hpp +++ b/addons/realisticnames/CfgVehicles.hpp @@ -513,7 +513,11 @@ class CfgVehicles { class Weapon_SMG_02_F: Weapon_Base_F { displayName = CSTRING(SMG_02_Name); }; - + + class Weapon_SMG_05_F: Weapon_Base_F { + displayName = CSTRING(SMG_05); + }; + class Weapon_hgun_PDW2000_F: Weapon_Base_F { displayName = CSTRING(hgun_PDW2000_Name); }; From 1213c08e4b3470b76600c5e4948eb69ca6f2d6d0 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 14 Jul 2016 13:06:45 -0500 Subject: [PATCH 85/85] Fix cached call events --- addons/interact_menu/functions/fnc_renderBaseMenu.sqf | 2 +- addons/medical/functions/fnc_canTreatCached.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf index 852c2b332f..363f7100f9 100644 --- a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf @@ -68,7 +68,7 @@ private _uid = format [QGVAR(ATCache_%1), _actionName]; private _activeActionTree = [ [_object, _baseActionNode, [], _distanceToBasePoint], DFUNC(collectActiveActionTree), - _object, _uid, 1.0, "interactMenuClosed" + _object, _uid, 1.0, "ace_interactMenuClosed" ] call EFUNC(common,cachedCall); END_COUNTER(fnc_collectActiveActionTree) diff --git a/addons/medical/functions/fnc_canTreatCached.sqf b/addons/medical/functions/fnc_canTreatCached.sqf index 273da7dc4b..76d4897b74 100644 --- a/addons/medical/functions/fnc_canTreatCached.sqf +++ b/addons/medical/functions/fnc_canTreatCached.sqf @@ -20,4 +20,4 @@ params ["", "_target", "_selection", "_classname"]; // parameters, function, namespace, uid -[_this, DFUNC(canTreat), _target, format [QGVAR(canTreat_%1_%2), _selection, _classname], MAX_DURATION_CACHE, "clearConditionCaches"] call EFUNC(common,cachedCall); +[_this, DFUNC(canTreat), _target, format [QGVAR(canTreat_%1_%2), _selection, _classname], MAX_DURATION_CACHE, QEGVAR(interact_menu,clearConditionCaches)] call EFUNC(common,cachedCall);