diff --git a/Changelogs/0.4.0.0.txt b/Changelogs/0.4.0.0.txt index f55b254b..b300eaf1 100644 --- a/Changelogs/0.4.0.0.txt +++ b/Changelogs/0.4.0.0.txt @@ -1 +1,2 @@ -TBA +[New] Dynamic sub menu for inventory item interaction and crafting options when you double click in item in your inventory. +[Changed] Group menu and requests are now on the self action menu. diff --git a/Server_Install_Pack/@epochhive/addons/epoch_server.pbo b/Server_Install_Pack/@epochhive/addons/epoch_server.pbo index c279f3dc..980e107a 100644 Binary files a/Server_Install_Pack/@epochhive/addons/epoch_server.pbo and b/Server_Install_Pack/@epochhive/addons/epoch_server.pbo differ diff --git a/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo b/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo index 67cdce88..cabd894a 100644 Binary files a/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo and b/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo differ diff --git a/Server_Install_Pack/@epochhive/addons/epoch_server_settings.pbo b/Server_Install_Pack/@epochhive/addons/epoch_server_settings.pbo index d24d7998..c8164079 100644 Binary files a/Server_Install_Pack/@epochhive/addons/epoch_server_settings.pbo and b/Server_Install_Pack/@epochhive/addons/epoch_server_settings.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Altis.pbo b/Server_Install_Pack/mpmissions/epoch.Altis.pbo index a51ac4f1..9a8cd509 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Altis.pbo and b/Server_Install_Pack/mpmissions/epoch.Altis.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Australia.pbo b/Server_Install_Pack/mpmissions/epoch.Australia.pbo index 97dab966..8b4d2b98 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Australia.pbo and b/Server_Install_Pack/mpmissions/epoch.Australia.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo index 76e87196..51616518 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo and b/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo b/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo index 177fa0fb..3295a140 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo and b/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo b/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo index 2caa6806..99994894 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo and b/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo b/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo index 5059c090..bebb0d5d 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo and b/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo b/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo index 50ea9173..e59e2d35 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo and b/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Esseker.pbo b/Server_Install_Pack/mpmissions/epoch.Esseker.pbo index 7558c965..1740d983 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Esseker.pbo and b/Server_Install_Pack/mpmissions/epoch.Esseker.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo index 187fb13d..fca980d3 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo and b/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Napf.pbo b/Server_Install_Pack/mpmissions/epoch.Napf.pbo index ca07e228..8c609cff 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Napf.pbo and b/Server_Install_Pack/mpmissions/epoch.Napf.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Porto.pbo b/Server_Install_Pack/mpmissions/epoch.Porto.pbo index c665b671..270c15b2 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Porto.pbo and b/Server_Install_Pack/mpmissions/epoch.Porto.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo b/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo index bdca7e09..47c31284 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo and b/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Sara.pbo b/Server_Install_Pack/mpmissions/epoch.Sara.pbo index 65e16778..2813c95e 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Sara.pbo and b/Server_Install_Pack/mpmissions/epoch.Sara.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo b/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo index 8e2486af..cc0dea7d 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo and b/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo b/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo index 21c1896c..a2573813 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo and b/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo b/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo index eb888e38..8e3e6eb4 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo and b/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Stratis.pbo b/Server_Install_Pack/mpmissions/epoch.Stratis.pbo index 34754be6..49e411a9 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Stratis.pbo and b/Server_Install_Pack/mpmissions/epoch.Stratis.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Takistan.pbo b/Server_Install_Pack/mpmissions/epoch.Takistan.pbo index 66d8bc24..95a3b60a 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Takistan.pbo and b/Server_Install_Pack/mpmissions/epoch.Takistan.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo b/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo index 5acd4a31..6d2bad09 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo and b/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.VR.pbo b/Server_Install_Pack/mpmissions/epoch.VR.pbo index 748dfddd..95ef4684 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.VR.pbo and b/Server_Install_Pack/mpmissions/epoch.VR.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo index 4ec3d29d..2d1dbe39 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo and b/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo b/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo index 89b9d037..1467b32c 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo and b/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo differ diff --git a/Server_Install_Pack/mpmissions/epoch.utes.pbo b/Server_Install_Pack/mpmissions/epoch.utes.pbo index 5a59cfb8..59483701 100644 Binary files a/Server_Install_Pack/mpmissions/epoch.utes.pbo and b/Server_Install_Pack/mpmissions/epoch.utes.pbo differ diff --git a/Sources/epoch_code/compile/inventory/EPOCH_initUI.sqf b/Sources/epoch_code/compile/inventory/EPOCH_initUI.sqf index 17ca3f5e..157f624a 100644 --- a/Sources/epoch_code/compile/inventory/EPOCH_initUI.sqf +++ b/Sources/epoch_code/compile/inventory/EPOCH_initUI.sqf @@ -24,7 +24,7 @@ NOHTING */ //[[[cog import generate_private_arrays ]]] -private ["_bar","_bar_compare","_color","_colorCompare","_display"]; +private ["_bar","_bar_compare","_color","_colorCompare","_container","_display","_existing_bar","_height","_pos","_remoteContainer","_small_height"]; //[[[end]]] disableSerialization; @@ -34,29 +34,81 @@ EPOCH_lastContainer = _this select 1; waitUntil {!isNull findDisplay 602}; _display = (findDisplay 602); -(_display displayCtrl -13) ctrlEnable false; +// init custom sub menu handler +{ + _container = _display displayCtrl _x; + _container ctrlAddEventHandler ["LBDblClick","_this call EPOCH_itemInteractClick"]; +} forEach [619,633,638]; +// armor stats init +{ + _remoteContainer = _display displayCtrl _x; + _remoteContainer ctrlAddEventHandler ["LBDrag","_this call EPOCH_selectInventoryItem; _this call EPOCH_refeshUI"]; + _remoteContainer ctrlAddEventHandler ["LBSelChanged","_this call EPOCH_selectInventoryItem; _this call EPOCH_refeshUI"]; +} forEach [632,640]; _color = [0.6,0.6,0.6,1]; _colorCompare = [0.4,0.6,1,0.4]; -_bar = _display displayCtrl 7304; +// UniformLoad +_bar = _display ctrlCreate ["RscCustomProgress", 7304]; uiNameSpace setVariable ["RscCustomProgressUniform", _bar]; _bar ctrlSetTextColor _color; -_bar = _display displayCtrl 7305; +_existing_bar = _display displayCtrl 6304; +_pos = ctrlPosition _existing_bar; +_height = (_pos select 3) / 2; +_existing_bar ctrlSetPosition [_pos select 0,(_pos select 1)+_height,_pos select 2,_height]; +_existing_bar ctrlCommit 0; +_bar ctrlSetPosition [_pos select 0,_pos select 1,_pos select 2,_height]; +_bar ctrlCommit 0; + +// VestLoad +_bar = _display ctrlCreate ["RscCustomProgress", 7305]; uiNameSpace setVariable ["RscCustomProgressVest", _bar]; _bar ctrlSetTextColor _color; -_bar = _display displayCtrl 7240; +_existing_bar = _display displayCtrl 6305; +_pos = ctrlPosition _existing_bar; +_height = (_pos select 3) / 2; +_small_height = _height; +_existing_bar ctrlSetPosition [_pos select 0,(_pos select 1)+_height,_pos select 2,_height]; +_existing_bar ctrlCommit 0; +_bar ctrlSetPosition [_pos select 0,_pos select 1,_pos select 2,_height]; +_bar ctrlCommit 0; + +// SlotHeadgear +_bar = _display ctrlCreate ["RscCustomProgress", 7240]; uiNameSpace setVariable ["RscCustomProgressHeadgear", _bar]; _bar ctrlSetTextColor _color; -_bar = _display displayCtrl 7308; +_existing_bar = _display displayCtrl 6240; +_pos = ctrlPosition _existing_bar; +_height = _pos select 3; + +_bar ctrlSetPosition [_pos select 0,(_pos select 1)+_height,_pos select 2,_small_height]; +_bar ctrlCommit 0; + +// TotalLoad; +_existing_bar = _display displayCtrl 6308; +_pos = ctrlPosition _existing_bar; +_height = (_pos select 3) / 2; + +_existing_bar ctrlSetPosition [_pos select 0,(_pos select 1)+_height,_pos select 2,_height]; +_existing_bar ctrlCommit 0; + +// TotalLoad compare; +_bar = _display ctrlCreate ["RscTotalArmorProgress", 7308]; _bar ctrlSetTextColor _color; -_bar_compare = _display displayCtrl 7309; +_bar ctrlSetPosition [_pos select 0,_pos select 1,_pos select 2,_height]; +_bar ctrlCommit 0; + +_bar_compare = _display ctrlCreate ["RscCustomProgress", 7309]; _bar_compare ctrlSetTextColor _colorCompare; +_bar_compare ctrlSetPosition [_pos select 0,_pos select 1,_pos select 2,_height]; +_bar_compare ctrlCommit 0; + uiNameSpace setVariable ["RscCustomProgressTotal", [_bar,_bar_compare]]; 0 call EPOCH_refeshUI; diff --git a/Sources/epoch_code/compile/inventory/EPOCH_itemInteractClick.sqf b/Sources/epoch_code/compile/inventory/EPOCH_itemInteractClick.sqf index b1607732..332a86a4 100644 --- a/Sources/epoch_code/compile/inventory/EPOCH_itemInteractClick.sqf +++ b/Sources/epoch_code/compile/inventory/EPOCH_itemInteractClick.sqf @@ -1,20 +1,18 @@ /* - Author: Aaron Clark - EpochMod.com - - Contributors: Raimonds Virtoss - - Description: - Epoch Item Interact - - Licence: - Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike - - Github: - https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/inventory/EPOCH_itemInteractClick.sqf + Dynamic inventory sub menu + By Aaron Clark - Epoch Mod */ //[[[cog import generate_private_arrays ]]] -private ["_buttonTXT","_cfgItemInteractions","_config","_data","_display","_interactOption","_magCount","_type","_useBtn"]; +private ["_activeControl","_bg","_btn_arr","_buffer","_buttonTXT","_button_gen","_button_texts","_cfgItemInteractions","_config","_control","_data","_display","_interactOption","_magCount","_pos","_start_idc","_type","_y2d"]; //[[[end]]] +_button_texts = []; + +_activeControl = uiNamespace getVariable ["EPOCH_active_button_control", controlNull]; +if (!isNull _activeControl) then { + _activeControl ctrlShow false; + ctrlDelete _activeControl; +}; + _this call EPOCH_selectInventoryItem; _data = EPOCH_InteractedItem select 1; @@ -35,32 +33,72 @@ if (isClass (_config)) then { _magCount = getNumber (_config >> "count"); }; -_display = (findDisplay 602); -_useBtn = _display displayCtrl -13; - if (_buttonTXT != "") then { - _useBtn ctrlSetText _buttonTXT; - _useBtn ctrlEnable true; + _button_texts pushBack [_buttonTXT]; } else { if (_magCount > 1) then { - _useBtn ctrlEnable true; - _useBtn ctrlSetText "REPACK"; + _button_texts pushBack ["REPACK"]; } else { - _useBtn ctrlSetText "EXAMINE"; - _useBtn ctrlEnable false; + _button_texts pushBack ["EXAMINE"]; }; }; -_useBtn = _display displayCtrl -14; -_useBtn ctrlEnable true; - _config = 'CfgCrafting' call EPOCH_returnConfig; if (isClass (_config >> _data)) then { - _useBtn ctrlSetTextColor [0,1,0,1]; - EPOCH_CraftingItem = EPOCH_InteractedItem select 0; + EPOCH_CraftingItem = EPOCH_InteractedItem select 0; + _button_texts pushBack ["CRAFT","EPOCH_CraftingItem call EPOCH_crafting_load;"]; } else { - _useBtn ctrlSetTextColor [1,0,0,1]; - EPOCH_CraftingItem = ""; + EPOCH_CraftingItem = ""; }; -true +if !(_button_texts isEqualTo []) then { + _display = ctrlParent (_this select 0); + _pos = getMousePosition; + + _control = _display ctrlCreate ["RscControlsGroupNoScrollbars", 5678910]; + uiNamespace setVariable ["EPOCH_active_button_control", _control]; + + _control ctrlSetPosition [(_pos select 0)-0.03,(_pos select 1)-0.03,1,1]; + _control ctrlCommit 0; + + _bg = _display ctrlCreate ["RscButtonTextOnly", 12349,_control]; + _bg ctrlSetPosition [0,0,1,1]; + _bg ctrlCommit 0; + _bg ctrlAddEventHandler ["MouseEnter",{ + _activeControl = uiNamespace getVariable ["EPOCH_active_button_control", controlNull]; + if !(isNull _activeControl) then { + _activeControl ctrlShow false; + }; + }]; + + _buffer = _display ctrlCreate ["RscButtonTextOnly", 12345,_control]; + _buffer ctrlSetPosition [0.02,0.02,0.25,0.0625 + (0.0625 * (count _button_texts))]; + _buffer ctrlAddEventHandler ["ButtonClick",{ + _activeControl = uiNamespace getVariable ["EPOCH_active_button_control", controlNull]; + if !(isNull _activeControl) then { + _activeControl ctrlShow false; + }; + }]; + + _buffer ctrlCommit 0; + + _y2d = 0.06; + _btn_arr = []; + _start_idc = 12346; + { + _x params [["_btn_text","EXAMINE"],["_btn_code","call EPOCH_consumeItem;"]]; + _button_gen = _display ctrlCreate ["RscButtonMenu", _start_idc,_control]; + _start_idc = _start_idc + 1; + _button_gen ctrlSetPosition [0.06,_y2d,0.20,0.06]; + _button_gen ctrlSetText _btn_text; + _button_gen ctrlCommit 0; + _button_gen ctrlSetEventHandler ["ButtonClick",_btn_code + "(uiNamespace getVariable [""EPOCH_active_button_control"", controlNull]) ctrlShow false;"]; + _y2d = _y2d + 0.0625; + _btn_arr pushBack _button_gen; + } forEach _button_texts; + + reverse _btn_arr; + uiNamespace setVariable ["EPOCH_active_controls", ([_control,_bg,_buffer] + _btn_arr) ]; + // uiNamespace setVariable ["EPOCH_active_buttons", _btn_arr ]; + {ctrlSetFocus _x} forEach (uiNamespace getVariable ["EPOCH_active_controls", []]); +}; diff --git a/Sources/epoch_config/Configs/CfgActionMenu/CfgActionMenu_self.hpp b/Sources/epoch_config/Configs/CfgActionMenu/CfgActionMenu_self.hpp index 2dab56eb..b401f520 100644 --- a/Sources/epoch_config/Configs/CfgActionMenu/CfgActionMenu_self.hpp +++ b/Sources/epoch_config/Configs/CfgActionMenu/CfgActionMenu_self.hpp @@ -34,3 +34,17 @@ class player_inspect icon = "x\addons\a3_epoch_code\Data\UI\buttons\player_inspect.paa"; tooltip = "Examine"; }; +class player_group_menu +{ + condition = "true"; + action = "call EPOCH_Inventory_Group;"; + icon = "x\addons\a3_epoch_code\Data\UI\buttons\group_menu_ca.paa"; + tooltip = "Group Menu"; +}; +class player_group_requests +{ + condition = "!(Epoch_invited_GroupUIDs isEqualTo[])"; + action = "call EPOCH_Inventory_iGroup;"; + icon = "x\addons\a3_epoch_code\Data\UI\buttons\group_requests_ca.paa"; + tooltip = "Group Requests"; +}; diff --git a/Sources/epoch_config/Configs/CfgClientFunctions.hpp b/Sources/epoch_config/Configs/CfgClientFunctions.hpp index fd127e9d..d6721cc3 100644 --- a/Sources/epoch_config/Configs/CfgClientFunctions.hpp +++ b/Sources/epoch_config/Configs/CfgClientFunctions.hpp @@ -285,279 +285,3 @@ class CfgClientFunctions }; /*[[[end]]]*/ - - -class CfgClientFunctions -{ - version = 1; - class A3E - { - tag = "EPOCH"; - file = "epoch_code\compile"; - - class generic { - file = "epoch_code\compile"; - class localCleanup {}; - class unitSpawnIncrease {}; - class unitSpawnDecrease {}; - class QuickTakeAll {}; - class QuickTakeLoad {}; - class effectCrypto {}; - class handleServerMessage {}; - class updateLoadingScreen {}; - class EnterBuilding {}; - class lootTrash {}; - class debugMonitor {}; - class interact {}; - class chopWood {}; - class fish {}; - class mineRocks {}; - class UnisexCheck {}; - class PutHandler {}; - class niteLight {}; - class LootIT {}; - class supportCopter {}; - class consumeItem {}; - class unitSpawn {}; - class onEachFrame {}; - class callSapperMigration {}; - class zombieSpawn {}; - class makeMarker {}; - class removeMarker {}; - }; - - class building - { - class maintainIT {}; - class lockCheck {}; - class countdown {}; - class fnc_SelectTargetBuild {}; - class isBuildAllowed {}; - class simulSwap {}; - class staticMove {}; - class upgradeBUILD {}; - class removeBUILD {}; - class changeWallState {}; - class checkBuild {}; - }; - - class traders - { - class startInteract {}; - class startInteractNPC {}; - class npcTraderAdd {}; - class npcTraderAdd2 {}; - class npcTraderAdd3 {}; - class startNPCTraderMenu {}; - class NPCTraderMenuFilter {}; - class startNpcTrade {}; - class tradeFilter {}; - class takeCrypto {}; - class startBankTransfer {}; - }; - - class interface_event_handlers - { - class KeyDown {}; - class KeyUp {}; - class onChar {}; - }; - class event_handlers - { - class getInMan {}; - class getOutMan {}; - }; - class setup - { - class masterLoop {}; - class clientInit {}; - class clientRespawn {}; - class clientRevive {}; - class client_rejectPlayer {}; - class clientKeyMap {}; - }; - - class p2p_trading - { - class startTRADEREQ {}; - class startTrade {}; - class tradeRequest {}; - class TradeLoop {}; - class makep2pTrade {}; - }; - class functions - { - class worldObjectType {}; - class returnConfig {}; - class colorRange {}; - class convertTemp {}; - class fnc_playerDeath {}; - class fnc_playerFired {}; - class fnc_isInsideBuilding {}; - class fnc_Weather {}; - class fnc_findSafePos {}; - class fnc_addItemOverflow {}; - class pushCustomVar {}; - class itemData {}; - class itemPicture {}; - class itemDisplayName {}; - class SortArrayByDistance {}; - class fnc_findRandomPosBehind {}; - class fnc_stringLeft {}; - class fnc_findSapperStalkLocation {}; - class fnc_dirToFuzzy {}; - class fnc_cursorTarget {}; - class fnc_triggerAntagonist {}; - class fnc_playerDeathDetonate {}; - class fnc_playerDeathMorph {}; - class fnc_playerSetVariable {}; - class fnc_playerAttachToAntagonist {}; - class fnc_dynamicFSM {}; - class fnc_vectorDivide {}; - class giveAttributes {}; - class fnc_spawnEffects {}; - class fnc_arrayStringToBool {}; - }; - class environment - { - class client_earthQuake {}; - class client_loadAnimalBrain {}; - class client_bitePlayer {}; - }; - class vehicles - { - class client_repairVehicle {}; - class client_lockVehicle {}; - class client_fillVehicle {}; - class client_gearVehicle {}; - }; - class missions - { - class mission_accept {}; - class mission_cage_sapper {}; - class mission_returnObj {}; - }; - class inventory { - class selectInventoryItem {}; - class itemInteractClick {}; - class itemInteractDblClick {}; - class uniformArmorCalc {}; - class gearArmorCalc {}; - class factorArmor {}; - class maxArmorInit {}; - class initUI {}; - class refeshUI {}; - }; - class messaging { - file = "epoch_code\gui\scripts\messaging"; - class message {}; - class message_old1 {}; - class message_old2 {}; - }; - class looting { - class spawnLoot {}; - }; - class gui { - file = "epoch_code\gui\scripts"; - class onPause {}; - class showStats {}; - class 3DctrlPitchYaw {}; - class 3DctrlSpin {}; - class 3DctrlYaw {}; - class InterruptConfig {}; - class InterruptConfigActions {}; - class getIDC {}; - class guiObjHP {}; - class secureStorageHandler {}; - class genderSelection {}; - class getColorScheme {}; - class dragControl {}; - }; - - class config { - file = "epoch_code\gui\scripts\config"; - class config_keymap {}; - }; - - class dynamenu { - file = "epoch_code\gui\scripts\dynamenu"; - class dynamicMenu {}; - class dynamicMenuPopulate {}; - class dynamicMenuCleanup {}; - }; - - class dynamicHUD { - file = "epoch_code\gui\scripts\dynamicHUD"; - class dynamicHUD_adjust {}; - class dynamicHUD_loadSave {}; - class dynamicHUD_start {}; - class getHUDCtrl {}; - }; - - class gui_craft { - file = "epoch_code\gui\scripts\craftingv2"; - class crafting_animate {}; - class crafting_ctrl_collector {}; - class crafting_dev_toggle {}; - class crafting_getConfig {}; - class crafting_checkGear {}; - class crafting_checkNearby {}; - class crafting_checkResources {}; - class crafting_craft {}; - class crafting_progress {}; - class crafting_load {}; - class crafting_unload {}; - class crafting_LB_click {}; - class crafting_LB_defaults {}; - class crafting_LB_doubleClick {}; - class crafting_colorScheme {}; - }; - class group { - file = "epoch_code\gui\scripts\group"; - class Group_invitePlayer {}; - class Group_BtnMod {}; - class Group_BtnInvite {}; - class Group_onLoad {}; - class Group_List {}; - class Group_Combo {}; - class Group_BtnLeave {}; - class Group_BtnKick {}; - class cGroup_groupText {}; - class cGroup_onLoad {}; - class cGroup_BtnCreate {}; - class iGroup_acceptInvite {}; - class iGroup_onLoad {}; - class iGroup_refresh {}; - class Group_update {}; - }; - - class gui_inventory { - file = "epoch_code\gui\scripts\inventory"; - class Inventory_Group {}; - class Inventory_iGroup {}; - }; - - class gui_missions { - file = "epoch_code\gui\scripts\missions"; - class mission_refresh {}; - class mission_description {}; - }; - class gui_postProcessing { - file = "epoch_code\gui\scripts\post_process"; - class postprocessCreate {}; - class postprocessAdjust {}; - class postprocessDestroy {}; - class setDrunk {}; - class setRadiation {}; - }; - class worldToScreen { - file = "epoch_code\gui\scripts\worldToScreen"; - class gui3DCooldown {}; - class gui3DCooldownEH {}; - class gui3DWorldPos {}; - class gui3DWorldPosEH {}; - class gui3DModelPos {}; - class gui3DModelPosEH {}; - }; - }; -}; diff --git a/Sources/epoch_config/Configs/CfgEpochClient.hpp b/Sources/epoch_config/Configs/CfgEpochClient.hpp index 950bea95..aae22188 100644 --- a/Sources/epoch_config/Configs/CfgEpochClient.hpp +++ b/Sources/epoch_config/Configs/CfgEpochClient.hpp @@ -12,217 +12,71 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_config/Configs/CfgEpochClient.hpp */ /*[[[cog from arma_config_tools import *; json_to_arma()]]]*/ -/*[[[end]]]*/ class CfgEpochClient { - epochVersion = "0.4.0.0"; - sapperRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = 1% - 55% if soiled (+ 2% if in city) chance to spawn sapper - droneRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = // 2% chance (+ 4% chance if in city) (1% - 2% Half if using silencer) to spawn drone if shot fired - buildingNearbyMilitary = 0; //1 to allow building nearby Military buildings - buildingNearbyMilitaryRange = 300; //Define radius of blocked area - buildingNearbyMilitaryClasses[] = {"Cargo_Tower_base_F","Cargo_HQ_base_F","Cargo_Patrol_base_F","Cargo_House_base_F"}; - restrictedLocations[] = {"NameCityCapital"}; - restrictedLocationsRange = 300; - buildingRequireJammer = 0; // 1 = to allow building without a jammer - buildingCountLimit = 200; // how many objects can be built within range of a jammer - buildingJammerRange = 75; // jammer range in meters - JammerPerGroup = 1; // Max Jammer count per Group - minJammerDistance = 650; // min distance to next Jammer - maxBuildingHeigh = 33; // Max heigh, building is allowed - buildingCountLeader = 125; // Building count limit if Player has no group - buildingCountPerMember = 5; // Additional building counts per group member - storagecountLeader = 10; // Storage count limit if Player has no group - storagecountPerMember = 5; // Additional Storage counts per group member - maxdoors = 8; // Max allowed doors per Group - maxgates = 5; // Max allowed Gates per Group - disableRemoteSensors = true; // disableRemoteSensors true - EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."}; - deathMorphClass[] = {"Epoch_Sapper_F","Epoch_SapperB_F","I_UAV_01_F","Epoch_Cloak_F"};//Random selection of these classes when player morphs after death. Currently available: Epoch_Cloak_F, Epoch_SapperB_F, Epoch_Sapper_F, I_UAV_01_F - niteLight[] = {1, 1.88, 22};//Set ambient lighting at night: {1 = enabled/0 = disabled, Brightness of light,Height of light}. Default (Low Ambient): {1.88,22} | Twilight: {7.2,88} | Distant: {12.8,142} - ryanZombiesEnabled = true; // enabled by default, false to disable - antagonistSpawnIndex[] = { - {"Epoch_Cloak_F", 1}, // {"type", limit} - {"GreatWhite_F", 2}, - {"Epoch_Sapper_F",2}, - {"Epoch_SapperB_F",1}, - {"I_UAV_01_F",2}, - {"PHANTOM",1}, - {"B_Heli_Transport_01_F",1}, - {"EPOCH_RyanZombie_1",12} - }; - customVarsDefaults[] = { - // EPOCH_player + varName, default value, {max,min,warn-high,crit-high,warn-low,crit-low} - {"Temp",98.6,{106.7,95,102,105,96,95}}, - {"Hunger",5000,{5000,0,5001,5001,1250,0}}, - {"Thirst",2500,{2500,0,2501,2501,625,0}}, - {"AliveTime",0,{-2,0}}, - {"Energy",0,{2500,0}}, - {"Wet",0,{100,0,35,55,-1,-1}}, - {"Soiled",0,{100,0,35,55,-1,-1}}, - {"Immunity",0,{100,0}}, - {"Toxicity",0,{100,0,35,55,-1,-1}}, - {"Stamina",100,{"EPOCH_playerStaminaMax",0}}, - {"Crypto",0,{250000,0}}, - {"HitPoints",{0,0,0,0},{1,0,0.5,1,-1,-1}}, - {"BloodP",100,{190,0,120,140,70,50}}, - {"SpawnArray",{},{}}, - {"Karma",0,{50000,-50000}}, - {"Alcohol",0,{100,0,35,55,-1,-1}}, - {"Radiation",0,{100,0,35,55,-1,-1}}, - {"Nuisance",0,{100,0}}, - {"MissionArray",{},{}} - }; - - // HUD configs - hudConfigs[] = { - /* - { - { - "AnyVarName", - "getMissionNamespaceVariable", - "defaultValue", - { - { - "VarName1", - "getMissionNamespaceVariable", - "defaultValue" - }, - ">=", - 0.7 - }, - {5000,0,5001,5001,1250,0} - }, - "topRight", - "x\addons\a3_epoch_code\Data\UI\bleeding_ca.paa" - }, - { - { - "Thirst", - "", - "", - { - {"Hunger","getPlayerVariable"},">=",1000 - }, - {2500,0,2501,2501,625,0} - }, - "topRight", - "x\addons\a3_epoch_code\Data\UI\hunger_ca.paa", - - }, - */ - { - {"BloodP","","",{"getPlayerDamage",">=",0.7}}, - "topRight", - "x\addons\a3_epoch_code\Data\UI\bleeding_ca.paa", - {"forceUpdate"} - }, - { - {"Oxygen","getPlayerOxygenRemaining","",{},{1,0,2,2,1,0.55}}, - "topRight", - "x\addons\a3_epoch_code\Data\UI\oxygen_ca.paa" - }, - { - "Hunger", - "topRight", - "x\addons\a3_epoch_code\Data\UI\hunger_ca.paa", - {"forceBloodRise"} - }, - { - "Thirst", - "topRight", - "x\addons\a3_epoch_code\Data\UI\thirst_ca.paa", - {"forceBloodRise"} - }, - { - "Temp", - "topRight", - { - "x\addons\a3_epoch_code\Data\UI\hot_ca.paa", - "x\addons\a3_epoch_code\Data\UI\cold_ca.paa" - }, - {"forceFatigue"} - }, - { "Toxicity", - "topRight", - "x\addons\a3_epoch_code\Data\UI\hazzard_ca.paa" - }, - { - "Wet", - "topRight", - "x\addons\a3_epoch_code\Data\UI\wet_ca.paa" - }, - { - "Alcohol", - "topRight", - "x\addons\a3_epoch_code\Data\UI\drunk_ca.paa" - }, - { - "Soiled", - "topRight", - "x\addons\a3_epoch_code\Data\UI\soiled_ca.paa" - }, - { - "Radiation", - "topRight", - "x\addons\a3_epoch_code\Data\UI\rads_ca.paa" - }, - { - {"HitPoints","getPlayerHitPointDamage","HitLegs"}, - "topRight", - "x\addons\a3_epoch_code\Data\UI\broken_ca.paa" - } - }; - - // controls max group limit and cost - group_upgrade_lvl[] = {4,"1000",6,"1500",8,"2000",10,"2500",12,"3000",14,"3500",16,"4000",32,"8000",64,"16000"}; - - // Event handler code - displayAddEventHandler[] = {"keyDown","keyUp"}; - keyDown = "(_this call EPOCH_KeyDown)"; - keyUp = "(_this call EPOCH_KeyUp)"; - addEventHandler[] = {"Respawn","Put","Take","InventoryClosed","InventoryOpened","Fired","Killed","HandleRating","GetInMan","GetOutMan"}; - Respawn = "(_this select 0) call EPOCH_clientRespawn"; - Put = "(_this select 1) call EPOCH_interact;_this call EPOCH_PutHandler"; - Take = "(_this select 1) call EPOCH_interact;_this call EPOCH_UnisexCheck"; - Fired = "_this call EPOCH_fnc_playerFired;"; - InventoryClosed = "if !(EPOCH_arr_interactedObjs isEqualTo[]) then {[EPOCH_arr_interactedObjs] remoteExec['EPOCH_server_save_vehicles', 2]; EPOCH_arr_interactedObjs = [];};"; - InventoryOpened = "_this spawn EPOCH_initUI;_container = _this select 1;_lockedNear = false;if (_container isKindOf 'GroundWeaponHolder' || _container isKindOf 'WeaponHolderSimulated') then {{if (locked _x in [2, 3] ||_x getVariable['EPOCH_Locked', false]) exitWith {_lockedNear = true}} forEach (player nearSupplies 10);};if (locked _container in [2, 3] || _container getVariable['EPOCH_Locked', false] || _lockedNear) then {[] spawn {disableSerialization;waitUntil {!isNull findDisplay 602};_display = findDisplay 602;_ctrl_cargo = _display displayCtrl 6401;_ctrl_ground = _display displayCtrl 6321;_ctrl_cargo ctrlEnable false;ctrlSetFocus _ctrl_ground;ctrlActivate _ctrl_ground;};};"; - Killed = "_this call EPOCH_fnc_playerDeath;"; - HandleRating = "EPOCH_playerKarma = EPOCH_playerKarma + (_this select 1);0"; - HandleDamage = ""; - HandleHeal = ""; - Dammaged = ""; - Hit = ""; - HitPart = ""; - GetInMan = "_this call EPOCH_getInMan"; - GetOutMan = "_this call EPOCH_getOutMan;"; - - // suppress these units from spawning near Jammer or Traders - nonJammerAI[] = {"B_Heli_Transport_01_F","PHANTOM","EPOCH_Sapper_F","Epoch_SapperB_F","I_UAV_01_F","EPOCH_RyanZombie_1"}; - nonTraderAI[] = {"B_Heli_Transport_01_F","PHANTOM","EPOCH_Sapper_F","Epoch_SapperB_F","I_UAV_01_F","Epoch_Cloak_F","GreatWhite_F","EPOCH_RyanZombie_1"}; - nonTraderAIRange = 50; - - // Fishing loots - fishLoots[] = {"ItemTuna","ItemSeaBass","ItemSeaBass","ItemSeaBass","ItemTrout","ItemTrout","ItemTrout","ItemTrout","ItemTrout","ItemTrout"}; - - // Animal spawn table - animalAiTables[] = {"Sheep_random_EPOCH", "Sheep_random_EPOCH", "Goat_random_EPOCH", "Goat_random_EPOCH", "Goat_random_EPOCH", {"Cock_random_EPOCH", "Hen_random_EPOCH"}, {"Cock_random_EPOCH", "Hen_random_EPOCH"}, "Rabbit_EPOCH", "Rabbit_EPOCH", "Rabbit_EPOCH", "Snake_random_EPOCH", "Snake2_random_EPOCH", {"Fin_random_EPOCH", "Alsatian_Random_EPOCH"}}; - - // Player specific configs - playerDeathScreen = "TapOut"; - playerKilledScreen = "TapOut2"; - playerDisableRevenge = 0; // 0 = invoke playerKilledScreen when killed by another player, 1 = disable. - playerRevengeMinAliveTime = 900; // time in seconds player must be alive before Revenge option is available. - - // banking - bankTransferTime[] = {0.0006,1.2,0.06}; // {time per crypto,max wait time,min wait time} - - // include configs + epochVersion = "0.4.0.0"; + sapperRngChance = 100; + droneRngChance = 100; + buildingNearbyMilitary = 0; + buildingNearbyMilitaryRange = 300; + buildingNearbyMilitaryClasses[] = {"Cargo_Tower_base_F","Cargo_HQ_base_F","Cargo_Patrol_base_F","Cargo_House_base_F"}; + restrictedLocations[] = {"NameCityCapital"}; + restrictedLocationsRange = 300; + buildingRequireJammer = 0; + buildingCountLimit = 200; + buildingJammerRange = 75; + JammerPerGroup = 1; + minJammerDistance = 650; + maxBuildingHeigh = 33; + buildingCountLeader = 125; + buildingCountPerMember = 5; + storagecountLeader = 10; + storagecountPerMember = 5; + maxdoors = 8; + maxgates = 5; + disableRemoteSensors = True; + EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."}; + deathMorphClass[] = {"Epoch_Sapper_F","Epoch_SapperB_F","I_UAV_01_F","Epoch_Cloak_F"}; + niteLight[] = {1,1.88,22}; + ryanZombiesEnabled = True; + antagonistSpawnIndex[] = {{"Epoch_Cloak_F",1},{"GreatWhite_F",2},{"Epoch_Sapper_F",2},{"Epoch_SapperB_F",1},{"I_UAV_01_F",2},{"PHANTOM",1},{"B_Heli_Transport_01_F",1},{"EPOCH_RyanZombie_1",12}}; + customVarsDefaults[] = {{"Temp",98.6,{106.7,95,102,105,96,95}},{"Hunger",5000,{5000,0,5001,5001,1250,0}},{"Thirst",2500,{2500,0,2501,2501,625,0}},{"AliveTime",0,{-2,0}},{"Energy",0,{2500,0}},{"Wet",0,{100,0,35,55,-1,-1}},{"Soiled",0,{100,0,35,55,-1,-1}},{"Immunity",0,{100,0}},{"Toxicity",0,{100,0,35,55,-1,-1}},{"Stamina",100,{"EPOCH_playerStaminaMax",0}},{"Crypto",0,{250000,0}},{"HitPoints",{0,0,0,0},{1,0,0.5,1,-1,-1}},{"BloodP",100,{190,0,120,140,70,50}},{"SpawnArray",{},{}},{"Karma",0,{50000,-50000}},{"Alcohol",0,{100,0,35,55,-1,-1}},{"Radiation",0,{100,0,35,55,-1,-1}},{"Nuisance",0,{100,0}},{"MissionArray",{},{}}}; + hudConfigs[] = {{{"BloodP","","",{"getPlayerDamage",">=",0.7}},"topRight","x\addons\a3_epoch_code\Data\UI\bleeding_ca.paa",{"forceUpdate"}},{{"Oxygen","getPlayerOxygenRemaining","",{},{1,0,2,2,1,0.55}},"topRight","x\addons\a3_epoch_code\Data\UI\oxygen_ca.paa"},{"Hunger","topRight","x\addons\a3_epoch_code\Data\UI\hunger_ca.paa",{"forceBloodRise"}},{"Thirst","topRight","x\addons\a3_epoch_code\Data\UI\thirst_ca.paa",{"forceBloodRise"}},{"Temp","topRight",{"x\addons\a3_epoch_code\Data\UI\hot_ca.paa","x\addons\a3_epoch_code\Data\UI\cold_ca.paa"},{"forceFatigue"}},{"Toxicity","topRight","x\addons\a3_epoch_code\Data\UI\hazzard_ca.paa"},{"Wet","topRight","x\addons\a3_epoch_code\Data\UI\wet_ca.paa"},{"Alcohol","topRight","x\addons\a3_epoch_code\Data\UI\drunk_ca.paa"},{"Soiled","topRight","x\addons\a3_epoch_code\Data\UI\soiled_ca.paa"},{"Radiation","topRight","x\addons\a3_epoch_code\Data\UI\rads_ca.paa"},{{"HitPoints","getPlayerHitPointDamage","HitLegs"},"topRight","x\addons\a3_epoch_code\Data\UI\broken_ca.paa"}}; + group_upgrade_lvl[] = {4,"1000",6,"1500",8,"2000",10,"2500",12,"3000",14,"3500",16,"4000",32,"8000",64,"16000"}; + displayAddEventHandler[] = {"keyDown","keyUp"}; + keyDown = "(_this call EPOCH_KeyDown)"; + keyUp = "(_this call EPOCH_KeyUp)"; + addEventHandler[] = {"Respawn","Put","Take","InventoryClosed","InventoryOpened","Fired","Killed","HandleRating","GetInMan","GetOutMan"}; + Respawn = "(_this select 0) call EPOCH_clientRespawn"; + Put = "(_this select 1) call EPOCH_interact;_this call EPOCH_PutHandler"; + Take = "(_this select 1) call EPOCH_interact;_this call EPOCH_UnisexCheck"; + Fired = "_this call EPOCH_fnc_playerFired;"; + InventoryClosed = "if !(EPOCH_arr_interactedObjs isEqualTo[]) then {[EPOCH_arr_interactedObjs] remoteExec['EPOCH_server_save_vehicles', 2]; EPOCH_arr_interactedObjs = [];};"; + InventoryOpened = "setMousePosition[0.5, 0.5]; call EPOCH_showStats;_this spawn EPOCH_initUI;_container = _this select 1;_lockedNear = false;if (_container isKindOf 'GroundWeaponHolder' || _container isKindOf 'WeaponHolderSimulated') then {{if (locked _x in [2, 3] ||_x getVariable['EPOCH_Locked', false]) exitWith {_lockedNear = true}} forEach (player nearSupplies 10);};if (locked _container in [2, 3] || _container getVariable['EPOCH_Locked', false] || _lockedNear) then {[] spawn {disableSerialization;waitUntil {!isNull findDisplay 602};_display = findDisplay 602;_ctrl_cargo = _display displayCtrl 6401;_ctrl_ground = _display displayCtrl 6321;_ctrl_cargo ctrlEnable false;ctrlSetFocus _ctrl_ground;ctrlActivate _ctrl_ground;};};"; + Killed = "_this call EPOCH_fnc_playerDeath;"; + HandleRating = "EPOCH_playerKarma = EPOCH_playerKarma + (_this select 1);0"; + HandleDamage = ""; + HandleHeal = ""; + Dammaged = ""; + Hit = ""; + HitPart = ""; + GetInMan = "_this call EPOCH_getInMan"; + GetOutMan = "_this call EPOCH_getOutMan;"; + nonJammerAI[] = {"B_Heli_Transport_01_F","PHANTOM","EPOCH_Sapper_F","Epoch_SapperB_F","I_UAV_01_F","EPOCH_RyanZombie_1"}; + nonTraderAI[] = {"B_Heli_Transport_01_F","PHANTOM","EPOCH_Sapper_F","Epoch_SapperB_F","I_UAV_01_F","Epoch_Cloak_F","GreatWhite_F","EPOCH_RyanZombie_1"}; + nonTraderAIRange = 50; + fishLoots[] = {"ItemTuna","ItemSeaBass","ItemSeaBass","ItemSeaBass","ItemTrout","ItemTrout","ItemTrout","ItemTrout","ItemTrout","ItemTrout"}; + animalAiTables[] = {"Sheep_random_EPOCH","Sheep_random_EPOCH","Goat_random_EPOCH","Goat_random_EPOCH","Goat_random_EPOCH",{"Cock_random_EPOCH","Hen_random_EPOCH"},{"Cock_random_EPOCH","Hen_random_EPOCH"},"Rabbit_EPOCH","Rabbit_EPOCH","Rabbit_EPOCH","Snake_random_EPOCH","Snake2_random_EPOCH",{"Fin_random_EPOCH","Alsatian_Random_EPOCH"}}; + playerDeathScreen = "TapOut"; + playerKilledScreen = "TapOut2"; + playerDisableRevenge = 0; + playerRevengeMinAliveTime = 900; + bankTransferTime[] = {0.0006,1.2,0.06}; #include "CfgEpochClient\Altis.hpp" #include "CfgEpochClient\australia.hpp" #include "CfgEpochClient\Bornholm.hpp" #include "CfgEpochClient\Chernarus_Summer.hpp" - #include "CfgEpochClient\Chernarus.hpp" + #include "CfgEpochClient\Chernarus.hpp" #include "CfgEpochClient\Esseker.hpp" #include "CfgEpochClient\ProvingGrounds_PMC.hpp" #include "CfgEpochClient\Sara_dbe1.hpp" @@ -230,72 +84,73 @@ class CfgEpochClient #include "CfgEpochClient\SaraLite.hpp" #include "CfgEpochClient\Stratis.hpp" #include "CfgEpochClient\takistan.hpp" - #include "CfgEpochClient\utes.hpp" - #include "CfgEpochClient\vr.hpp" + #include "CfgEpochClient\utes.hpp" + #include "CfgEpochClient\vr.hpp" #include "CfgEpochClient\Zargabad.hpp" - #include "CfgEpochClient\Tanoa.hpp" - #include "CfgEpochClient\WorldInteractions.hpp" + #include "CfgEpochClient\Tanoa.hpp" + #include "CfgEpochClient\WorldInteractions.hpp" }; class CfgEpochSapper { - detonateDistMax = 8; //Random distance between 3m and this number at which sapper detonates. Min value = 4 - groanTrig = 16; //Percentage chance of a groan. Min value = 4 - sRange = 300; //Distance from target over which sapper will dispose. Range within which sapper code will be aware of targets. Distance up to which sapper will attempt to find a spot to hide in. Min Value = 150. - smellDist = 24; //Distance up to which sapper can smell. Used to decide if sapper can see target when deciding to charge and influences target selection. Is influenced by wind direction. Min Value = 8. - reflexSpeed = 0.25; //Sapper brain will pause for this time when checking for new stimulus during each thought process. Lower number equals a more reactive sapper. (Guide Min 0.25 - Max 2.5). - nestChance = 2; //Every time a sapper spawns apply this percentage chance that sapper will create a nest. - hideLevel = 72; //(Emotion) Sapper fear increases by several factors, higher number of armed player(s) in area / being shot at. Set fear level (out of 100) at which he will go into a 'hide / evade mode'.. temporarily. - chargeLevel = 52; //(Emotion) Sapper anger increases by smelling / sensing players, being shot at / hit, too many players on his turf. Set level (Out of 100) at which he is triggered to charge on the current target. + detonateDistMax = 8; + groanTrig = 16; + sRange = 300; + smellDist = 24; + reflexSpeed = 0.25; + nestChance = 2; + hideLevel = 72; + chargeLevel = 52; }; class CfgEpochUAV { - UAVMinDist = 48; //Minimum distance to choose next position when roaming. Min Value = 8. - UAVMaxDist = 180; //Maximum distance to choose next position when roaming. Min Value = 42 / Max Value = 400. - UAVHeight = 100; //Set height when roaming, slight randomness is applied to this value. UAV will choose own height when locked onto target. Min Value = 42 / Max Value = 280. UAV can still spot targets from height ! + UAVMinDist = 48; + UAVMaxDist = 180; + UAVHeight = 100; }; class CfgEpochUAVSupport { - unitTypes[] = {"I_Soldier_EPOCH", "I_Soldier2_EPOCH", "I_Soldier3_EPOCH"};//Selects from randomly - maxUnitNum = 2; //Maximum number of units spawned when UAV spots target. - minAISkill = 0.2; //Minumum AI Skill. Skills are chosen randomly between this minimum overall AI skill value and the following max AI skill values, for each of the next skills: - maxAimingAccuracy = 0.7; - maxAimingShake = 0.9; - maxAimingSpeed = 0.6; - maxEndurance = 0.4; - maxSpotDistance = 0.4; - maxSpotTime = 0.3; - maxCourage = 0.3; - maxReloadSpeed = 0.5; - maxCommanding = 0.4; - maxGeneral = 0.4; + unitTypes[] = {"I_Soldier_EPOCH","I_Soldier2_EPOCH","I_Soldier3_EPOCH"}; + maxUnitNum = 2; + minAISkill = 0.2; + maxAimingAccuracy = 0.7; + maxAimingShake = 0.9; + maxAimingSpeed = 0.6; + maxEndurance = 0.4; + maxSpotDistance = 0.4; + maxSpotTime = 0.3; + maxCourage = 0.3; + maxReloadSpeed = 0.5; + maxCommanding = 0.4; + maxGeneral = 0.4; }; class CfgEpochAirDrop { - AirDropFreq = 1200; //AirDropChance, to decide if Air drop occurs, will only be checked once per AirDropFreq time period, for each player. Min value = 120. - AirDropChance = 6; //Percentage chance of air drop, for current player. Checked every AirDropFreq and upon antagonists spawn trigger. -1 To disable. + AirDropFreq = 1200; + AirDropChance = 6; }; class CfgEpochCloak { - cRange = 300; //Distance, from target, at which Cloak will dispose. Cloak is also aware of players within this range. (Min: 60 / Max: 600) - cAggression = 75; //Percentage chance of attack, currently a psychological attack (Cultist spooky voice). (Min: 1 / Max: 100) - attackFrequency = 120; //One attack only per this period. (Min: 120) - attackDistance = 38; // Distance, from target, up to which Cloak will attack. Lower for less vocals. (Min: 16) - targetChangeFrequency = 42; //Cloak will only attempt to change target once per this period. Make Higher to stick to first target player. (Min: 42) - teleportChance = 66; //Chance for cloak to teleport. (Min: 1) - hoverFrequency = 1280; //Cloak has new hover attack. When player is above cloak, and at a distance, cloak will float to player and teleport attack. Only perform one of these moves per this period. (Min: 240) + cRange = 300; + cAggression = 75; + attackFrequency = 120; + attackDistance = 38; + targetChangeFrequency = 42; + teleportChance = 66; + hoverFrequency = 1280; }; class CfgEpochRyanZombie { - zeds[] = {"EPOCH_RyanZombie_1","EPOCH_RyanZombie_2","EPOCH_RyanZombie_3","EPOCH_RyanZombie_4","EPOCH_RyanZombie_5"}; - attackDist = 1.6; //Attack Distance. - range = 45; //Range at which to dispose old zombies and spawn new ones within. - // maxNumber = 12; //Maximum number of zombies within range, - disposeRange = 800; // distance before zombie is disposed - smell[] = {38,0.42}; //Distance in metres up to which the zombie can smell a target. | Skill (0 - 1). 0 - Disable - sight[] = {28,0.72}; //Zombie sight distance | Skill (0 - 1). - hearing[] = {108,0.68}; //Zombie hearing distance / Skill. Max FiredNear EH Limit ? - memory[] = {480,0.8}; //Memory time. / Weighting. WIP - Not Used - reflexSpeed = 0.25; //Zombie brain will pause for this time when checking for new stimulus during each thought process. Lower number equals a more reactive zombie. (Guide Min 0.25 - Max 2.5). - moans[] = {"ryanzombiesmoan1","ryanzombiesmoan2","ryanzombiesmoan3","ryanzombiesmoan4"}; - screams[] = {"ryanzombiesscream1", "ryanzombiesscream2", "ryanzombiesscream3", "ryanzombiesscream4", "ryanzombiesscream5", "ryanzombiesscream6", "ryanzombiesscream7", "ryanzombiesscream8", "ryanzombiesscream9"}; + zeds[] = {"EPOCH_RyanZombie_1","EPOCH_RyanZombie_2","EPOCH_RyanZombie_3","EPOCH_RyanZombie_4","EPOCH_RyanZombie_5"}; + attackDist = 1.6; + range = 45; + disposeRange = 800; + smell[] = {38,0.42}; + sight[] = {28,0.72}; + hearing[] = {108,0.68}; + memory[] = {480,0.8}; + reflexSpeed = 0.25; + moans[] = {"ryanzombiesmoan1","ryanzombiesmoan2","ryanzombiesmoan3","ryanzombiesmoan4"}; + screams[] = {"ryanzombiesscream1","ryanzombiesscream2","ryanzombiesscream3","ryanzombiesscream4","ryanzombiesscream5","ryanzombiesscream6","ryanzombiesscream7","ryanzombiesscream8","ryanzombiesscream9"}; }; + +/*[[[end]]]*/ diff --git a/Sources/epoch_config/Configs/CfgEpochClient.json b/Sources/epoch_config/Configs/CfgEpochClient.json index 64bfe053..29405e5a 100644 --- a/Sources/epoch_config/Configs/CfgEpochClient.json +++ b/Sources/epoch_config/Configs/CfgEpochClient.json @@ -413,7 +413,7 @@ "Take": "(_this select 1) call EPOCH_interact;_this call EPOCH_UnisexCheck", "Fired": "_this call EPOCH_fnc_playerFired;", "InventoryClosed": "if !(EPOCH_arr_interactedObjs isEqualTo[]) then {[EPOCH_arr_interactedObjs] remoteExec['EPOCH_server_save_vehicles', 2]; EPOCH_arr_interactedObjs = [];};", - "InventoryOpened": "_this spawn EPOCH_initUI;_container = _this select 1;_lockedNear = false;if (_container isKindOf 'GroundWeaponHolder' || _container isKindOf 'WeaponHolderSimulated') then {{if (locked _x in [2, 3] ||_x getVariable['EPOCH_Locked', false]) exitWith {_lockedNear = true}} forEach (player nearSupplies 10);};if (locked _container in [2, 3] || _container getVariable['EPOCH_Locked', false] || _lockedNear) then {[] spawn {disableSerialization;waitUntil {!isNull findDisplay 602};_display = findDisplay 602;_ctrl_cargo = _display displayCtrl 6401;_ctrl_ground = _display displayCtrl 6321;_ctrl_cargo ctrlEnable false;ctrlSetFocus _ctrl_ground;ctrlActivate _ctrl_ground;};};", + "InventoryOpened": "setMousePosition[0.5, 0.5]; call EPOCH_showStats;_this spawn EPOCH_initUI;_container = _this select 1;_lockedNear = false;if (_container isKindOf 'GroundWeaponHolder' || _container isKindOf 'WeaponHolderSimulated') then {{if (locked _x in [2, 3] ||_x getVariable['EPOCH_Locked', false]) exitWith {_lockedNear = true}} forEach (player nearSupplies 10);};if (locked _container in [2, 3] || _container getVariable['EPOCH_Locked', false] || _lockedNear) then {[] spawn {disableSerialization;waitUntil {!isNull findDisplay 602};_display = findDisplay 602;_ctrl_cargo = _display displayCtrl 6401;_ctrl_ground = _display displayCtrl 6321;_ctrl_cargo ctrlEnable false;ctrlSetFocus _ctrl_ground;ctrlActivate _ctrl_ground;};};", "Killed": "_this call EPOCH_fnc_playerDeath;", "HandleRating": "EPOCH_playerKarma = EPOCH_playerKarma + (_this select 1);0", "HandleDamage": "", diff --git a/Sources/epoch_config/build.hpp b/Sources/epoch_config/build.hpp index f684186c..09ccf1bb 100644 --- a/Sources/epoch_config/build.hpp +++ b/Sources/epoch_config/build.hpp @@ -1 +1 @@ -build=606; +build=619; diff --git a/Sources/epoch_server/build.hpp b/Sources/epoch_server/build.hpp index f684186c..09ccf1bb 100644 --- a/Sources/epoch_server/build.hpp +++ b/Sources/epoch_server/build.hpp @@ -1 +1 @@ -build=606; +build=619; diff --git a/Sources/epoch_server/treeView.txt b/Sources/epoch_server/treeView.txt index 5e7df6a0..b97d5a1b 100644 Binary files a/Sources/epoch_server/treeView.txt and b/Sources/epoch_server/treeView.txt differ diff --git a/Sources/epoch_server_core/build.hpp b/Sources/epoch_server_core/build.hpp index f684186c..09ccf1bb 100644 --- a/Sources/epoch_server_core/build.hpp +++ b/Sources/epoch_server_core/build.hpp @@ -1 +1 @@ -build=606; +build=619; diff --git a/Sources/epoch_server_core/treeView.txt b/Sources/epoch_server_core/treeView.txt index 28c8b757..6055f48b 100644 Binary files a/Sources/epoch_server_core/treeView.txt and b/Sources/epoch_server_core/treeView.txt differ diff --git a/Sources/epoch_server_settings/build.hpp b/Sources/epoch_server_settings/build.hpp index f684186c..09ccf1bb 100644 --- a/Sources/epoch_server_settings/build.hpp +++ b/Sources/epoch_server_settings/build.hpp @@ -1 +1 @@ -build=606; +build=619; diff --git a/Sources/epoch_server_settings/treeView.txt b/Sources/epoch_server_settings/treeView.txt index 302204a0..76a931a6 100644 Binary files a/Sources/epoch_server_settings/treeView.txt and b/Sources/epoch_server_settings/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Altis/treeView.txt b/Sources/mpmissions/epoch.Altis/treeView.txt index 11cab50c..20057c92 100644 Binary files a/Sources/mpmissions/epoch.Altis/treeView.txt and b/Sources/mpmissions/epoch.Altis/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Australia/treeView.txt b/Sources/mpmissions/epoch.Australia/treeView.txt index 72955528..22fdeb73 100644 Binary files a/Sources/mpmissions/epoch.Australia/treeView.txt and b/Sources/mpmissions/epoch.Australia/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Bootcamp_ACR/treeView.txt b/Sources/mpmissions/epoch.Bootcamp_ACR/treeView.txt index ac96f1a5..5ba1d9e3 100644 Binary files a/Sources/mpmissions/epoch.Bootcamp_ACR/treeView.txt and b/Sources/mpmissions/epoch.Bootcamp_ACR/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Bornholm/treeView.txt b/Sources/mpmissions/epoch.Bornholm/treeView.txt index 07eb6f8b..d6529fb2 100644 Binary files a/Sources/mpmissions/epoch.Bornholm/treeView.txt and b/Sources/mpmissions/epoch.Bornholm/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Chernarus/treeView.txt b/Sources/mpmissions/epoch.Chernarus/treeView.txt index 8c2f75f8..b10bf09e 100644 Binary files a/Sources/mpmissions/epoch.Chernarus/treeView.txt and b/Sources/mpmissions/epoch.Chernarus/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Chernarus_Summer/treeView.txt b/Sources/mpmissions/epoch.Chernarus_Summer/treeView.txt index dcca9701..b1d7ea97 100644 Binary files a/Sources/mpmissions/epoch.Chernarus_Summer/treeView.txt and b/Sources/mpmissions/epoch.Chernarus_Summer/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Desert_E/treeView.txt b/Sources/mpmissions/epoch.Desert_E/treeView.txt index cdb88bab..ecb7bf61 100644 Binary files a/Sources/mpmissions/epoch.Desert_E/treeView.txt and b/Sources/mpmissions/epoch.Desert_E/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Esseker/treeView.txt b/Sources/mpmissions/epoch.Esseker/treeView.txt index 54cc7a25..faedd3ef 100644 Binary files a/Sources/mpmissions/epoch.Esseker/treeView.txt and b/Sources/mpmissions/epoch.Esseker/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Mountains_ACR/treeView.txt b/Sources/mpmissions/epoch.Mountains_ACR/treeView.txt index 9ce5ba25..6741b647 100644 Binary files a/Sources/mpmissions/epoch.Mountains_ACR/treeView.txt and b/Sources/mpmissions/epoch.Mountains_ACR/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Napf/treeView.txt b/Sources/mpmissions/epoch.Napf/treeView.txt index aa0823f9..1b2cbce3 100644 Binary files a/Sources/mpmissions/epoch.Napf/treeView.txt and b/Sources/mpmissions/epoch.Napf/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Porto/treeView.txt b/Sources/mpmissions/epoch.Porto/treeView.txt index 04883d7f..466df21f 100644 Binary files a/Sources/mpmissions/epoch.Porto/treeView.txt and b/Sources/mpmissions/epoch.Porto/treeView.txt differ diff --git a/Sources/mpmissions/epoch.ProvingGrounds_PMC/treeView.txt b/Sources/mpmissions/epoch.ProvingGrounds_PMC/treeView.txt index 46d7603a..c8594c8f 100644 Binary files a/Sources/mpmissions/epoch.ProvingGrounds_PMC/treeView.txt and b/Sources/mpmissions/epoch.ProvingGrounds_PMC/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Sara/treeView.txt b/Sources/mpmissions/epoch.Sara/treeView.txt index 4a5620d6..b7219193 100644 Binary files a/Sources/mpmissions/epoch.Sara/treeView.txt and b/Sources/mpmissions/epoch.Sara/treeView.txt differ diff --git a/Sources/mpmissions/epoch.SaraLite/treeView.txt b/Sources/mpmissions/epoch.SaraLite/treeView.txt index 36e51ace..56284128 100644 Binary files a/Sources/mpmissions/epoch.SaraLite/treeView.txt and b/Sources/mpmissions/epoch.SaraLite/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Sara_dbe1/treeView.txt b/Sources/mpmissions/epoch.Sara_dbe1/treeView.txt index d365857c..111a0625 100644 Binary files a/Sources/mpmissions/epoch.Sara_dbe1/treeView.txt and b/Sources/mpmissions/epoch.Sara_dbe1/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Shapur_BAF/treeView.txt b/Sources/mpmissions/epoch.Shapur_BAF/treeView.txt index 77fb9d41..072fac6a 100644 Binary files a/Sources/mpmissions/epoch.Shapur_BAF/treeView.txt and b/Sources/mpmissions/epoch.Shapur_BAF/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Stratis/treeView.txt b/Sources/mpmissions/epoch.Stratis/treeView.txt index 25c89f56..a9810597 100644 Binary files a/Sources/mpmissions/epoch.Stratis/treeView.txt and b/Sources/mpmissions/epoch.Stratis/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Takistan/treeView.txt b/Sources/mpmissions/epoch.Takistan/treeView.txt index acff7f79..b784217f 100644 Binary files a/Sources/mpmissions/epoch.Takistan/treeView.txt and b/Sources/mpmissions/epoch.Takistan/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Tanoa/treeView.txt b/Sources/mpmissions/epoch.Tanoa/treeView.txt index c62f4a76..0c32da90 100644 Binary files a/Sources/mpmissions/epoch.Tanoa/treeView.txt and b/Sources/mpmissions/epoch.Tanoa/treeView.txt differ diff --git a/Sources/mpmissions/epoch.VR/treeView.txt b/Sources/mpmissions/epoch.VR/treeView.txt index a4596f62..eaa3c628 100644 Binary files a/Sources/mpmissions/epoch.VR/treeView.txt and b/Sources/mpmissions/epoch.VR/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Woodland_ACR/treeView.txt b/Sources/mpmissions/epoch.Woodland_ACR/treeView.txt index c3d92b17..90183202 100644 Binary files a/Sources/mpmissions/epoch.Woodland_ACR/treeView.txt and b/Sources/mpmissions/epoch.Woodland_ACR/treeView.txt differ diff --git a/Sources/mpmissions/epoch.Zargabad/treeView.txt b/Sources/mpmissions/epoch.Zargabad/treeView.txt index d5629536..52073453 100644 Binary files a/Sources/mpmissions/epoch.Zargabad/treeView.txt and b/Sources/mpmissions/epoch.Zargabad/treeView.txt differ diff --git a/Sources/mpmissions/epoch.utes/treeView.txt b/Sources/mpmissions/epoch.utes/treeView.txt index 276b53e2..874d621e 100644 Binary files a/Sources/mpmissions/epoch.utes/treeView.txt and b/Sources/mpmissions/epoch.utes/treeView.txt differ diff --git a/build.txt b/build.txt index 1df7045f..bb73f9c0 100644 --- a/build.txt +++ b/build.txt @@ -1 +1 @@ -606 +619