From 5a775176ef56fecce6e64966d615b20301f51c76 Mon Sep 17 00:00:00 2001 From: Thomas Kooi Date: Tue, 13 Jan 2015 18:05:05 +0100 Subject: [PATCH 001/211] Port from Basic Ballistics wind deflection --- .../sys_ballistics/basicBallistics/CfgAmmo.h | 0 .../basicBallistics/CfgEventHandlers.hpp | 17 + .../basicBallistics/CfgFunctions.h | 11 - .../basicBallistics/CfgMagazines.h | 15 - .../basicBallistics/CfgVehicles.h | 16 +- .../basicBallistics/CfgWeapons.h | 18 - .../Combat_Space_Enhancement.h | 34 - .../cse/sys_ballistics/basicBallistics/GUI.h | 2 - .../basicBallistics/XEH_postInit.sqf | 20 + .../basicBallistics/XEH_preInit.sqf | 14 + .../sys_ballistics/basicBallistics/config.cpp | 28 +- .../data/icon_weather_meter.paa | Bin 5625 -> 0 bytes .../data/pocket_weather_meter_day_green.paa | Bin 112769 -> 0 bytes .../data/pocket_weather_meter_night_green.paa | Bin 113523 -> 0 bytes .../basicBallistics/data/weatherMeter.paa | Bin 49194 -> 0 bytes .../functions/fn_handleFired_DEFLECT.sqf | 102 --- .../fn_onWeatherMeterOpened_DEFLECT.sqf | 26 - ...fn_weatherMeterOpenWeatherView_DEFLECT.sqf | 28 - .../fn_weatherMeterOpenWindView_DEFLECT.sqf | 29 - .../basicBallistics/functions/fnc_handleFired | 98 +++ .../functions/fnc_initalizeModule.sqf | 19 + .../functions/script_component.hpp | 12 + .../basicBallistics/gui/define.hpp | 797 ------------------ .../basicBallistics/gui/weather_meter.hpp | 101 --- .../init_sys_winddeflection.sqf | 53 -- .../sys_ballistics/basicBallistics/readme.txt | 10 - .../basicBallistics/script_component.hpp | 12 + .../basicBallistics/stringtable.xml | 14 +- 28 files changed, 217 insertions(+), 1259 deletions(-) delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/CfgAmmo.h create mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/CfgEventHandlers.hpp delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/CfgFunctions.h delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/CfgMagazines.h delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/CfgWeapons.h delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/Combat_Space_Enhancement.h delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/GUI.h create mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/XEH_postInit.sqf create mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/XEH_preInit.sqf delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/data/icon_weather_meter.paa delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/data/pocket_weather_meter_day_green.paa delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/data/pocket_weather_meter_night_green.paa delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/data/weatherMeter.paa delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fn_handleFired_DEFLECT.sqf delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fn_onWeatherMeterOpened_DEFLECT.sqf delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fn_weatherMeterOpenWeatherView_DEFLECT.sqf delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fn_weatherMeterOpenWindView_DEFLECT.sqf create mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fnc_handleFired create mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fnc_initalizeModule.sqf create mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/functions/script_component.hpp delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/gui/define.hpp delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/gui/weather_meter.hpp delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/init_sys_winddeflection.sqf delete mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/readme.txt create mode 100644 TO_MERGE/cse/sys_ballistics/basicBallistics/script_component.hpp diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgAmmo.h b/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgAmmo.h deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgEventHandlers.hpp b/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgEventHandlers.hpp new file mode 100644 index 0000000000..3ac8dec532 --- /dev/null +++ b/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgEventHandlers.hpp @@ -0,0 +1,17 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE( call compile preprocessFileLineNumbers PATHTOF(XEH_preInit.sqf) ); + }; +}; + +class Extended_PostInit_EventHandlers { + class ADDON { + init = QUOTE( call compile preprocessFileLineNumbers PATHTOF(XEH_postInit.sqf) ); + }; +}; + +class Extended_Fired_Eventhandlers { + class ADDON { + fired = QUOTE( call FUNC(handleFired) ); + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgFunctions.h b/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgFunctions.h deleted file mode 100644 index 463b661da6..0000000000 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgFunctions.h +++ /dev/null @@ -1,11 +0,0 @@ -class CfgFunctions { - class CSE { - class WindDeflection { - file = "cse\cse_sys_ballistics\basicBallistics\functions"; - class handleFired_DEFLECT { recompile = 1; }; - class onWeatherMeterOpened_DEFLECT { recompile = 1; }; - class weatherMeterOpenWindView_DEFLECT { recompile = 1; }; - class weatherMeterOpenWeatherView_DEFLECT { recompile = 1; }; - }; - }; -}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgMagazines.h b/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgMagazines.h deleted file mode 100644 index fbfb6f9372..0000000000 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgMagazines.h +++ /dev/null @@ -1,15 +0,0 @@ -class CfgMagazines { - class Default; - class CA_magazine: Default{}; - class cse_weather_meter: CA_magazine { - scope = 2; - value = 1; - count = 1; - type = 16; - displayName = "Weather Meter (GREEN)"; - picture = "\cse\cse_sys_ballistics\basicBallistics\data\pocket_weather_meter_day_green.paa"; - descriptionShort = "Provides information about weather and wind"; - descriptionUse = "Provides information about humidity, wind speed, direction and strenght."; - mass = 5; - }; -}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgVehicles.h b/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgVehicles.h index 568af426ef..ba404a397a 100644 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgVehicles.h +++ b/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgVehicles.h @@ -4,12 +4,12 @@ class CfgVehicles { class ArgumentsBaseUnits { }; }; - class cse_sys_winddeflection: Module_F { + class GVAR(Module): Module_F { scope = 2; - displayName = "Basic Ballistics [CSE]"; - icon = "\cse\cse_main\data\cse_rifle_module.paa"; - category = "cseModules"; - function = "cse_fnc_initalizeModule_F"; + displayName = "Basic Ballistics [ACE]"; + icon = "\cse\cse_main\data\cse_rifle_module.paa"; // TODO find a new module icon + category = "cseModules"; // TODO find a new module category + function = FUNC(enableModule); functionPriority = 1; isGlobal = 1; isTriggerActivated = 0; @@ -20,12 +20,6 @@ class CfgVehicles { typeName = "BOOL"; defaultValue = 0; }; - class allowNonLocal { - displayName = "Non Local"; - description = "Should the module be enabled for non local units"; - typeName = "BOOL"; - defaultValue = 0; - }; }; }; }; diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgWeapons.h b/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgWeapons.h deleted file mode 100644 index 7950800aba..0000000000 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgWeapons.h +++ /dev/null @@ -1,18 +0,0 @@ -class CfgWeapons { - class Default; - class cse_weather_meter: Default { - author = "Combat Space Enhancement"; - scope = 2; - displayName = "Weather Meter"; - picture = "\cse\cse_sys_ballistics\basicBallistics\data\weatherMeter.paa"; - descriptionShort = "Provides information about weather and wind"; - descriptionUse = "Provides information about humidity, wind speed, direction and strenght."; - model = "\A3\weapons_F\ammo\mag_univ.p3d"; - simulation = "Weapon"; - class ItemInfo - { - mass = 10; - }; - }; - -}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/Combat_Space_Enhancement.h b/TO_MERGE/cse/sys_ballistics/basicBallistics/Combat_Space_Enhancement.h deleted file mode 100644 index 05dbf8b31d..0000000000 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/Combat_Space_Enhancement.h +++ /dev/null @@ -1,34 +0,0 @@ -#define MENU_KEYBINDING 1 -#define ACTION_KEYBINDING 2 -#define CLIENT_SETTING 3 - -class Combat_Space_Enhancement { - class cfgModules { - class cse_sys_winddeflection { - init = "call compile preprocessFile 'cse\cse_sys_ballistics\basicBallistics\init_sys_winddeflection.sqf';"; - name = "Wind Deflection"; - class EventHandlers { - class CAManBase { - fired = "_this call cse_fnc_handleFired_DEFLECT; false"; - }; - }; - class Configurations { - class check_wind_direction { - type = ACTION_KEYBINDING; - title = "Check Wind Direction"; - description = "Displays a hint with the current wind direction and speed."; - value[] = {0,0,0,0}; - onPressed = "[] call cse_fnc_checkWindDir_WIND;"; - }; - class open_weather_meter { - type = ACTION_KEYBINDING; - title = "Open the Weather Meter"; - description = "When you have the weather meter in your inventory, pressing this key will open the menu, showing you the current weather information."; - value[] = {0,0,0,0}; - onPressed = "if (([player,'cse_weather_meter'] call cse_fnc_hasMagazine)) then { createDialog 'cse_weather_meter'; }; "; - idd = 65423; - }; - }; - }; - }; -}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/GUI.h b/TO_MERGE/cse/sys_ballistics/basicBallistics/GUI.h deleted file mode 100644 index e27240144e..0000000000 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/GUI.h +++ /dev/null @@ -1,2 +0,0 @@ -#include "gui\define.hpp" -#include "gui\weather_meter.hpp" \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/XEH_postInit.sqf b/TO_MERGE/cse/sys_ballistics/basicBallistics/XEH_postInit.sqf new file mode 100644 index 0000000000..8c134d22d8 --- /dev/null +++ b/TO_MERGE/cse/sys_ballistics/basicBallistics/XEH_postInit.sqf @@ -0,0 +1,20 @@ +/** + * XEH_postInit.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#include "script_component.hpp" + +if (isnil QGVAR(EnableForAI)) then { + GVAR(EnableForAI) = false; +}; + +GVAR(bulletDatabase) = []; +GVAR(bulletDatabaseLastFrame) = []; +GVAR(bulletDatabaseOccupiedIndices) = []; +GVAR(bulletDatabaseFreeIndices) = []; diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/XEH_preInit.sqf b/TO_MERGE/cse/sys_ballistics/basicBallistics/XEH_preInit.sqf new file mode 100644 index 0000000000..05a606fbc2 --- /dev/null +++ b/TO_MERGE/cse/sys_ballistics/basicBallistics/XEH_preInit.sqf @@ -0,0 +1,14 @@ +/** + * XEH_preInit.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#include "script_component.hpp" + +PREP(handleFired); +PREP(initalizeModule); diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/config.cpp b/TO_MERGE/cse/sys_ballistics/basicBallistics/config.cpp index 583105bed7..e7bfcc0382 100644 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/config.cpp +++ b/TO_MERGE/cse/sys_ballistics/basicBallistics/config.cpp @@ -1,26 +1,24 @@ +#include "script_component.hpp" + class CfgPatches { - class cse_sys_winddeflection { + class ADDON { units[] = {}; weapons[] = {}; - requiredVersion = 1.0; - requiredAddons[] = {"cse_f_eh","cse_main"}; - versionDesc = "CSE Wind Deflection"; - version = "0.10.0_rc"; - author[] = {"Combat Space Enhancement"}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ACE_main"}; + versionDesc = "ACE Wind Deflection"; + version = VERSION; + author[] = {$STR_ACE_Core_ACETeam}; authorUrl = "http://csemod.com"; }; }; -class cse_sys_winddeflection { +class ADDON { class PreloadAddons { - class cse_sys_winddeflection { - list[] = {"cse_sys_winddeflection"}; + class ADDON { + list[] = {QUOTE(ADDON)}; }; }; }; -#include "CfgAmmo.h" -#include "CfgVehicles.h" -#include "CfgMagazines.h" -#include "CfgFunctions.h" -#include "Combat_Space_Enhancement.h" -#include "GUI.h" \ No newline at end of file + +#include "CfgVehicles.h" \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/data/icon_weather_meter.paa b/TO_MERGE/cse/sys_ballistics/basicBallistics/data/icon_weather_meter.paa deleted file mode 100644 index bc2395644d1e021b7ec7892aafb26ecbfb6c1c40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5625 zcmdT|eN0nV6hDu(3PVP9Fmw!Chi+=z@B=%S&GuEN2-8@wuhV5JADc2G_?0-7AQe&f zh1D6OsEFu{6SE9Ot8*I>oQT8tHIZsn#wcJADS|>9fxB~Wc|e$djI0_sdGEEqcTVrQ zzjN-p=e$ZuNQg!^IYh6K06;}Wg^J0qjjQwLJ2stn zV&I2gRHv#6YBMP2f#ZbZ7>}cgEFQXWoz~UUb@h0Ww;Pu5+wTU&TF~&W zp0BIN8=sk5b5>RJrjrlH&HIb&ZE8mPDAZSfM^b%85N~rLkPLr7f?hfKYWZD^7l1?} zuW^);8}bQGJqILA@j4F@Ui>|^>dCS(M`eAd73m>c4rO|CVNffbJPMun=S}&9KJ8Q} zRy`WCwtRa%LlWHS{LE?!m{2{jf|~*ldV}JgE(ACkJw*QEti}0v8~0NFb8P@aGBYzf z_>NA2ABEx$9DERWN90Y^Vo@GL0DX>PE*O7l)!USL6ZkM^|y8x6eaK& zC$k(4uuz_Edc8gnV9U_Z?}jqof*^Fo{(+&97ToeheWA5^z1qHBO^7YQ59N9D>8`)7 z{Ehc=CR%a=U|<1&PN#!yfaF8nVD%;J2L$0?*tm_>|8$9{FRZtJm0?fIAmnnd;D4kJ zH^0_$In7@t?th>BLYH)G0mWHZ((~>kcF=lI@|%FcWqD?wPOQ3$s;$AEZT1qQl{BdB zyi9{WA7>K6Pyxvl<#*1HDb1#f?< zNAVd;f_LPH{=uFP2@kN`T3fENH>jQCF`FKJ5!b)Se-w6tqYgcea`Kabs_1y4QvC(v zufvvRSy6WSQf)lrkJwjR*OF9ya>XgpzGMG$-s#cgadKVx$6fMk9As=_`3IQ{1{e2j zoJr(jz9la&^*CKY)a~m5%1YM^k<*R=2SfYb#(znAtF80;pSFn@347m3!yOM+MIFg* zS&Zx`Kg@TQA^Vuu@J^U)r>}Z+UpRdOKTh;E{&3iCBz7aVcmV72^45u~R+e%(p(!it zk%*t%wIz6rNp08XHvPG$@LGJesHgTxN3zx?kkDPpj>OHCv1m9t!ZKkq{7Kb0jgV5$WgeJdh*f@t` zodF=3mHA}0jSGSvSGrRa`0=#y+tls;y5fOp%J^|Bqju2or6@$MaIcaDUlGTu9lLqo zF#juS2}#7plY?1h$KNs^Zn02%ElSt%x{D2amC@zOc&uwq|GQ4F65nd@4nX2%^X|^C zHBj$e2Y9&3KN$Fzta$9jWv~Hdzyf5>X&FDaEH}Mu0AlPM*)qd*Wvw^1n7>Xn&&IY( z8xaxFUA|rI4MZ6osEj^PifqrFlS;$xXHNv;UGaVufZh!tY_Z7;$u4{iFr>Os z##A%K5fT4C{!k1r(142Z*EHzwuCVER#QYO2ALF^%ht?UEkA?ML-Z5hcTor#q6((P~ zC{XktRwgW4*|G(_QHC&&%v?6tXryb~zZCHaSLa`ASQ+17iemYeN{0zMYSDFMyv1@C z+rp8c&u&EQ9c7_KW8XdymSg^JWjkLZF#he^h5{#tmMlj2wf%XM(Z2#YdWVSuuhh&6 z7t&%fcTQrov74=e8T%)GI&KIHE6?-H7%vJupEhi8<$}LkYi;?|p5sQ0$acgwpHEs` zLNU+BM&i$yDDe8U-^0&^Db{K0Q>gu6^zQ(5@`&BnnEyrp!T+3^w-;`#Tr!zHHXN79 z4ROR={5|Q{Ji1Bn{4}09$BP0_>fasQ@n1K9$Kd|M8Mkk#Tik38hVRM=Fdv$6i(=eN zK0W~+JG35K2j=3isNXQ<)Sf#x(*n#Cqdr1{J1WLAdS{=Sg28b&($Sj+1qVj?2YT|C AX#fBK diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/data/pocket_weather_meter_day_green.paa b/TO_MERGE/cse/sys_ballistics/basicBallistics/data/pocket_weather_meter_day_green.paa deleted file mode 100644 index ed990f53cb6a7754b113b5334918a8175d657245..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112769 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 DU%ayO diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/data/pocket_weather_meter_night_green.paa b/TO_MERGE/cse/sys_ballistics/basicBallistics/data/pocket_weather_meter_night_green.paa deleted file mode 100644 index c13719e9bb20fb1801a2139ebd8de1b02d9f4cbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113523 zcmeFZ`Cn6K8b16y=OmDXL_(CZlXJ3|b50VMso<6k+)-PKL=Zy~z_wPb(80D;P8OD0 z+d8!~BWTp8L7)`?{|CdJqfCmKBsPTDG=81OQl6=d1bcae2Y&$;Se^O+H>$uxjb#V~D;c zAFo-u^j-(LA4Fe6rvP|W2|@Ss5WIB+f_LAAAo?BzOW&V-_5bg!1&G$20xCfK@0FLq z|Ghi86#u8|@DK(DS1EuK0D}!wEb&9JEDrB;v5*RbyH-KygjjbRPTAmsv<=p6u7oB3 z-vZkrxucf7Banx;_uYXQ4^z#)+*_VoVo8_50`TRvgR9JD$^!9?wF~q50AmL~)kvkV zGY(~KB9TjBuoBEZI07guSnh_x5D)LE6iWWzNT$TqBc*%CnvFJ)N*Llf|K4oka`9!g z8F^!4R*bBy;Oay>V>I1tU z2OjiOAAglT=6I@h3LX~#;Ne?)g+fDwSf95ytMq^G{;^G+t>61~Di6QdH}T{S^wGtj z(_m3!i8Tw%{j^0bF4}3RaXJT+jCRn64Kab-J}^W_a+lSXLnEI%`9uR%!}xO_s#PS7 zK)}c08%^@Wb$BliX|2ufG*X;e8?qa=W6$pP!5%{d>)Bl?<|!Wgs|&(*w~OTc`?dY_&1HesuUP}aK4tWau_0-+odM9`hOq#eh9M6K6P4PFqJ%jE{lv- z!eAHeSMOfT*ejW~ME6)ykO`>GSR>8lLPJf^O&!bH(V)OxG@iY@*5DhN$w3sHWwlI% z*tFAsrxzHlAWFs2XH1wj$S@WFrEMcJ%I|n~w}@~~cqkiS+Qcwuh&cYaCmHYV77SLb zXCEGLQXzmR*6f^q<_r^puU6xW?(gIH(P^On&>{6{gw>Z?7`(wm-U0i+510TD-FDO2t~|pxHQiRrTl{ zFmIW`mo0Tc#-fH#H(ahj-*s_&pN!&iD<{HK&;e_A?r5Orfjzfik1Xh){2kz@ExGPn z<4&UmFq|7(v0KJoqXQ16P3oTL9!D2B+-kA`^!dOxv{_##-wX_uF(DkDIU_tvMRGUR z%94A!3}MmEy%SC*uEqvUb^wx`w4dD30M&<$EFeb-lZ`CvG}}l|kP=|p>PBOnSZ`%) zg{nv03kzEew#2m6K5OxRuk>S|`t5xa&L?^JC(>S#N_HATnfR6JEVC3)tOb*`U9K23 z`qft|L^xUoY-8<-3eITFK@mo4;Zye+-nD6cm4|28)!o<17%O~;|CrNF#dCMmR_1gw7LCnL2C)%T5z2B485ClSAp)n} z?^#m1{FykMZ{4%(zsvcDV?_UAcVDX5V6kf=?=>G_EE)KT3TM0d7>a+=kejx7jR}VKGmZn|f;WMr~opYl#F}-WkqYN( z-6Ngu$-*;owd^nl6Av|DWT$5)NPQ-BCsD>OqRYYn;6I?N-2SrAyA{hA=?2}4NBbXc zb&W`u)uvm)84PGf@?Y@XTwZzWi}h(|$4@pwH$Ky)IYtNqmxc0vP{zUOp(>*fj4&ZU zMuR=T!$A!fLnU<7$=HD46)EA#kDl_ef@l>>uSt?7Q5G?5JJouP4y%hu-r=FGKvpR@ z>7aKHq^)Y{9!M<$Pd7Ye=Kvxal;&nv{r90 z`H6W;{=29pk*aZ>$>;y`vffnj(}qwQJW-LQXRLmyYXas;y)GuIE-!P^Q8!v?qu+C- znn4*`v~##gih)kXrfxx%O}&z2ZKTx^pnREK8s4>$^266=qaU7X^1#M2)INZC5$*58 z0KPsx_Ui2Q5G0SeAfE7N;ZVbZRbqS&M!ePE?3N4DNndQ!QmkhzbO$rk{(hB|=5uSc z{#YMIvAG@?215*&yAGlx0OVM}$%NDzOAJ*7xV(1MiL&}Zy(K2VjkSh7KcRxV0&TM4 zCT(bc^31}kyZ8ZNLU^#@@2;-r9hgcJ(qKn;`EaY|gda9ioJeES^*B)`fkB2-mjeSY zGFHwE80|}UG`J0OmPMiSzxy>poN5x!veO*!3z*)-7C`q9o=2l~t{rr`4L;&uC`JyN zcg)iSs!EGB|6ONOMBTf{6jqm#e!IAt;@vWm-3H4B^-ss)a8ojldtCzC9msAeg zQQh_MeNv1Hs5jQqMm9qFeO|Ybuk55lHjQN;`RIBtezg1>YkE*gg@)Q4HR~Ws9w}N}Q`pWMLU1}-bqjFgy#QS}8MesK zuManc={WY|9+3$4MTGzldq}Pmel@ytIu+8eH}SHextEe}vT6<2QGW}2i|^;Bxu9rc zgDVeS1scCD=cpTA-n8V$RBTqlSvS4^2FYo~>y~r^PjK!9)(9lL@{_hVin@E9vIMZ= zPr4N?I%C^*1Z9%GpyCM|Ya4SJ8-ZdJAy60=1C6hhk!E$F=kPp}r2v*Sw&2jH2>Fa5${~I36T6IqAx2KAE_y~E~cCd@G>_eq=d&yv)v>Ih4%7ggc*Go(m zJ9eU?F9|cUYG`h)UyD-Lw`ZK@=IS^b<5%koQFh?NO&`o}{1R30`H#Vb7yX}BT~Xj! zfr(l22*fXvTxDWn%|i30=@<|q(^jdWu`O}E#YB0kl0rDD$8Z@xuG5H&4^_)&>8ThDanUQzYl2Khunn!aEQqZk!Y>mU4o1KefRM@dj8~2tJ z{uYiOBI?CO38LM4inWQQZ4Z>R>ree2HSp~vrnq~1326-^QBkx}rDnVRba|QCx);^P zJ>u29oiyje#f3xecckcT^|%81w6^(w5=}|kx_BMtK(YFPJZXc^ZM|BgiQ5`D6gAAm zUaoMVU|rE#_A?PRR!>E2lW+<(lI-CojcvcvyuhX&Nuv1N9+Lf*gdCj+o%w!u~~tiLZ~6o0=mjjIr@OKE%uC1797_X1;6Pt z8tnx?B^gbqsRtUFyJoi^2O5_3DKti$~+PH}9uHFQ7fM zq$p1@P>{Wz32hHqzDX^zew4EzVM8f zGlYP+tKm?$3^R|q-k0ZB$BpdCA^>9L`kPBX+4_n2M8(-T({Tj+xh(v0g)=Y7JGr03 zv9*S9#&Ufq##rr6nkA-BCW;y!YM@a^fLiPRZj()Yt!yTjYv9!k8EUD#}3AMstUo0L_X5S-}w}%`L)DH8g_mZljOrl&2xmP!|upPqcH843lPt_okB}FDxxCl>HWnUmel>u=RhctSN`)q2mibtD85PJlQQ>0j)}2=>7O-kx zS`r=Fr}4YM5Q@okOEt}9`Nj}5&AC`$vZy^HL4O~`X5m^g=r#k!56a98s#>kH4+AEW zd#FLW21DHgyVfLhqc)O*`e4rv1d4DO+btswpg)Pr+MFYTfU1~avVi-b$L!MxW-CCv z1Zvp}b1k5fY%p>_7cT5YPj}~AK!9%qz!WALQN}pkK`K(cvGzU%w;)Oc&4Z>;HRi?i z0{_=heW(+_p-tT1_?U1@*wHXj3e$ri^^!cX2mx`;_U~XiWicXHF`%G$?_oI(Yud|P zhWN@a{>v`^Xd~J!9{$PUQOcI9FC?v=2E-FxW%EMnz&pu!P>BVt+VH|_=z3CunKb7n z{oXTrI*t(P17mXYbie;UrgC1SeEdfKmiU+^;(h}`yWk+@%YL2o7vNqhl!cI(*F}ZX zPPzDX(LBaZ45Fa=5vF1|+jNu=VOyt>+pD#{?4^Cy*_9cS4FG>_cBi{936*e@U45cL ziW-IQ4rbzWQJ=RVQaH#nzT6*-zHC~N+{&<>dTX2CWb^tbNfT`eYAoL{eBc!6V>@XJ zp|N_dN*9$ewxieLlz96x1zwZT)Y**+09BKq9UrIo1BPTg;3=boqlq;PZC!kdjBk)3 zaE8Gv6@WL}fXqqr*ohPo~`hm~Z9t6dDQb{V;J4?n0+qV0idgqzq1 z#2C1+{ zrisv49~~jKmoOnh%YQdC!%w(kj8DYS7O}<}Y%y{U$;R5U@*(NtKknkydcHZG?B8$s zk82(N7C&&P$(ImFn8jCaB%@wO5KDs_`pCzhDJ}gkuR_-zrhhlmxDTUpI(Y1;CiZw9#wNZ&Du%3C+IDwLIixhM1rh2iC9E<1}xZZ$gFTT2r_Og(Q;O+k*%Nsxv%NIp_M?7GTW2v}C;G@Gnh2$8u4jljt5gGPV^ z1q)EMz^})iSHi@VZ4aqh;oyM_+u$xvWcLhrcb}!$?3C8F?y?bveT{s=+f5`+wjRgg z64WPfta~KT5!;)rRTVtQB*TNh#6!uN_#{77ZDQ-lmWOC|NJK^rAgPbxMC7kA+G<#qa_lK?h~eN2whC_?&<_gxbYaI|EAe(o zT0%W@sXynuoeQYI21vdBl7p*K4H)Vjn8E6}qbf9&mMQ_dl^(r3)%7eq{@u+8O0*pf zAI$%_s-zU96@GF4V4qovN_9$Mev-@(Q?uulICx(hemQ8edA^xD12v$TjP%YP9$vZH zdcK2~kDlDai&t%3Qt0}!?=Z#XpoAQ#ca<@mnzSy^Gl98ggsv@icyPF)%*^gZ1@H9= z4cp8_(}Im>3|2Utys+RM=?vbMw9v1c>L59!>zbdAhEFy5X>L9CQR~SD zVSY$mnus-A8~1;UwmZWOv5*P17_91V{sIX(E`GWeu+G7iSC-51fav^BH3ORK+lrTl zizmn(3uN`1zfbR$l{yoI6^ZBFaQ7;CVmZ=MadVpr7cJy;3cOf?E83;P(i-iFf9taI zE)X}5e@9!U!;1t`Dx(`V)?QGg#VHoYR@90}K>M@lno8Wsu)qyR5Uc~eBo|JYNUI0; zj@X}HbYE(zbm3)@EP0P^1!fqZ1Ay4+T%YsvKkKq8Q~#FIZ0{n2`^2+`g(%lwbzXJs zLU&h!B<&xr9Bi!a)t;J{WeQ>H={6-;>As10zd)R**eJd)ik1dmEO5FR_5f-QNquFF z6ra#WMjlMcW1@@K)(2@$lGU8xVgim<{h%?V0l3pu-+E-?i0@p0vu|uzXiiG^f;2tn zRSmpWC`01RA9gSPZClJgR=68!8lESQqg}DQW)Yb$K2?RvuO_f z{zD#qQE@3{{kj!(U?UxOpPObg0e91E5^XI-k3 z3$c%M4{moPzfn2%cd6_2p0DvzC;oHBW_C7;r(nS2#M6%xPj& z!iDsvY2F|JhY_vE-twKjZS-6yEn6SY$e8AagO?0!5Hl>}be-xJto9bG?|^5PDj)a%T-)))+K~UWb_Z z%W^87_}c7sQ>8}x{bl7|1S$0GPNfJe1Nhqd0mZD+r}$418bVsiVv*7Tym~7!xLAP2 zB}EcqvJNCg)T2ozKJqEa&4FX@T4r!iw5)a!UE(@p;Qoy=ux+-&Xz^gftxq55Qi>dp zSMm-dWgzre|J7Z3Dy}xvY9jkmZ}~s0T9}ahm+bO?Vb3qv`pK>h-J;c76Bd-OZJ(?u z4NHm&>Rm?mF{GJXsbIqD6+S-B_`-+GzmdOpt7z7bEh&1@jGOHC!$uinwMXZN+%}6n zzy}-MMw>k@px-)W4yh*x9(ztT$!EeK3OOYpl}vy-1_d4Ok=46b{Io@OYal+6_AQ3T zj>yWVxVA#9)R_sEy9VH&bYrHiyfS5J{L882Cl4NPH?RN>q%TWZ2Oz5d5<%ekwDF}s z$4`Fh`T@T)RV0BJv4T|-sTLs59I$gA3cP0^eZE{tIMQ0wEy{$LNScmjVpvUjvqYdn zMKkQ6HN9#NOgSofo~5y^i>sBXE_#aZ6`_vnuQ}gSQ>_Fr)tS&>8QT@tAh<{WCcTLZ zy#QmVkObF|d1vZ_6q}gRvICPEqmD9{m*%c&SyY9ZWy@<_zdxlf_3q+76mBNtcNQ;B zfe#ewZA3=i)EN5H=r*mO@Jp9K{=@#rWCqt_vwwmPAt*t5DK-@q{GrBg-eLS+z0_p+3icXh2%v`e`Qg1k%(B}NOhdKnhChH{ zLhG=Rb-Q7cKy#g6^XE{GLU-BVVN}ZDNO)##&eLu}jL&#-TuR#Qi5-g21O&y!FMc!e z`&AYchhzW}TGIQIphPq)&ox(mam7obf%J4aa5!Q=kBw?=4=l|s1945QF;)Q92J_AH>lGkXB+XWhItrEyNTsEBVG$ zVMO@XW&jF{m~I@!#-b-sTyFThyU4dI;mvpFypD3rP;)H(s~7T2eovBYF6&8gWW(xU z%u8DWsKU+_Ba|NiSa_zh8{usE1pVlf30;4E&s71m_euFeCi~BcyD2Mp%7yW=M_ZD6SE7zhMSzhn-zF z#wSCt_RBY}BcO)!)`u%LozS6zdaXf6B4m^{B4n#pvH07o7Slx~R5YB(9n>di3A&)rmjpeVT{jHw0w!-4d(Nx_(d z;Ii^rJ7KqgWckl0>u&YmfBtV9nk8LNraGn9r`xKskizYSOxySAQhbueBeE&gzfeAT z@574Gp&+C~`w=$OguF7>?^o#W{{AigoWQA%WDe*{ikQi@J{MNcS@j)kZ$G{SRUd4> za`i)N=%{^vx|t5zHSzZk^`K(XWn?`h$HVIK-E-*>0TNC%{i6p7IAH`*`|GaIZ96kT ztiCuB*M;UGfb`nzH2ud_wB;o@ztq`|CW`u^Muhg&`;B}~mvK_G_CRm>H**=*j#zsS zWAfWa1VS28>->wZjT4C>^-NCfnqWc`hyt8@@A`T}7_f3Ysr_J+JN%0v*zLZv*P2)! zcN9w>eo>*Z?H#iy@RCAZ<`>0+Ea8^0gf7Ykgs^y{7L6kV0&UbW^3nr~CulacK6$D)0;0He6kc_V_DVhxAM{#xC-DJf6$NB2u zU1)H4IX1-sCW@cqxDLUz zbun4~#XAS7sQtCsB}&nvTv4IkAz?yaBL?>VEbeQ>2ZtJ6FE02E*UDr>8j2vgf9+W* z%S6M{wvSAqtcp-OXzvo z5Iip`{BfG28e2m5X?3(8pFUf@20<5t6-)Fm1RA*Q;+V* zlp_*)OxmI(*`P1=*GQfi6;F+2C}F$sx4p3yFY78?i9ojI{z0d_w0}$1-}ti&^8na> z*V^?7V?u{;vhJduJ%-SH+icW4GlLYvI#e+&EceDxStLmN{xa#;V3`WGEmH*{)`CgW zw&~c{vK_;dq5Z4vySFgk6R8HaL;PV$i{yiQAG(i&*p3E=L}3cso6y&?rOyRpD1kFp zvUBwc3jImelYDq)&w{fEUEaRV%i5Nt#Jt6Z@b8zCLg%Tf5`*vaQz@+#eW=mJasrBj zhkMWfMislmu!!Z6{}}p;;M6=fa!kX`5)H2ALUPLCRyhCd+P{;PkN3FeG9O%wWTik?UUE} z$Lh2L>0c&6IiX~1xhP2seZe0Qr_qNF;IXu!UB0uDQc;WYg(QgxpUZX-X%ThxdwVP6 z@-#d{9-JkTToN5X^@V+dQxM5k@FK|{TSoe#t4W?%LOMLj(t-RfS#R-Y#})(dWNKPv z&Vmxr=yjw&s#v>XN4+r&W1>f)VlK@EGZsBl>67B@Mpxi&r?H~T!_ zGnQ}g8}nu)X*O(q7vB6ZX{%1~w@>uB^wNj4t~?#NcK6_;$+tM34BJtU3?YDF0i0Cs z9Y<|Tn6T^U5-s5f>Z40rbm>H{%`w|0Z^Fv!>%9$nO9&yyT`J8Z8#Bd=J1ReqEAaN@ z7ceM6TOaa>MG$7xUqW`#c;MGBli72cKp;ja4cvL|CZR?ESRYtft-R@~B!z>cCqHE? z(Y%=95@uM`h*6|XehO^=#4auoX?EhdJ-4?keA{;xl>rQ5N#Bf3w-MQBpu3$(0T{{K zk?lr?x6a0-in$bp)Md=wTVt;kEEDP-zKIf2;%~4^MK?lk(r1h7-FjuS;W3Mm_6V7F%Q(K5c)_%93 zMoQRZC!EE3P>}o{4>D`0@tF6eIl{wer%%CeuVM#)IQ3R<&iNw`H$CFgk;SE@?b7kJ z&vAT*i^nUb$sq;^1A>An763##lIia0N&E5bobyll&ZVLLxVCJ~dQ`!sq8Xcyr6b6v zUSS(>-2x&^CNmcP`q-8q`fIW-Aesy*|+j))6HtFNQ2t&w@J#wkPc4CFQ+Qq}5auz|L&4!d70!(>rWEcOXaMRwqrbQyo z8+7LU`$XOKe(m`k4d+avS;0k|IVEVoY8Cp_L5fSlF3x|!RjlFgv}Y$RcsU0d7xAupuctl1QU$2PNdz%%123F%7phRXf`kl zZO`aXWBChA*e<1`O&>i=8@U_;#*ub9oAoHM0l$RpGDg%AmcYVxKMEE3gwD%Y!E}-v z1-Nu5zzuZdoWFO2h;%p*qd(VQcSpWVtRv@7QxYNxF&BZnG>b!l-`K^U4)BS$P?z)E zTZf(uNfEJBS)c<@=;B+HNlC~C1VO^mq6_Kmsi~=V4~^{-KB?nMHVi18YfH;bkxrf` zrUU|k4ZnEIyL|uASUTXN2(J(b(8gi4k_>(001DNO6Ls-VdW9C{oFtJPKw{bdLL^Ha zd&_q&nfvmihF2v}q0hVf-O=mZ?Yav)8s3@1SRPOXpM{Q=q+|pLYN3Aa3ogd$C^m*1 ziYpZ>j_0L;F?a(e-$=e^L-MmF70V|>vW-{YR$=z`!8BkOCDt@6Us31NArD+ut3c9O zhceOO*G8ZJYEM7vS}6{9vT(SU8b)2~u{wci`v5rVi_;vBBNA{ReNDv|bUgR9+0r!3 z=<^&h+H$T`nBv)2s>%7y(CGJsXPT`6o{)spzw-qG$SW`l-Qy8@4aegU1SS*cv-JGL z(pNO>Um!mq-?|mU9FF8a9no4hxXIhjE+_E9SraF})v!9KC)=|aww$;xWS4g{4 z-S-LA2>f3lCEtmewghQ$ec^!77aSpABz9TQ@bt?m7`8N}W(M*8I~w1T^HXs(1_4SJ zH7rnmAW`B2hpHu|_f!QF41OSaEMqhgCIb1d8sVdd7WTVy2C>5Qe?#p*hu}t}lceJg z1L5INpfkgv`LIRVpX8r!Ka(;?lObQ6INY>A6pTUqx$)_&7p_?x1k_|e<*>Zodkp0p z8d~B~g`SB_Ipa#$TsEq)Ic^E^rd0$a4z!r{HpkgHlL4)_I*>2VbNu*0b@La?NxRLU zP^60rx8j&N;t9rR%eTnLF+CAUAG#2i++)=AUA``ib_lDtR)IZlU#>&wvROHoj@XNK z%BRA^hkAOH$qq{;kFcpXUx{Pe4)vJWy-+4YYPjBx5w9)^As(l%%j%!x#>gDZs?R!5MME(Ksj!}ap2kq4l=a-KRrUkvChig|9 zjfDHu!3PpP-(#wAjyRK2^=vR{+QHLB56gPT<(Cl1n?Up0JLK^qT$zqA{nm5B&2IzT z=bF$_ax|V649$qztCd?cKauH_RecuL4jHzo!QD>9N@ZrN?w;X(t-p4c%Jb03O`a$V zc_zz&=*^#xRGxn;$1Plvh{}>7TyWz|-Ie?;3pdujU=a~Y1UPU-vqDUBKVjQTQeP-F z#$yiTOlej*?v<^6a_%(M5R%k-`SbN!o1>&+GIpDI^}i~Gn-GjqHgye+R)+1+SS@_I z$ibqFjCq-e$52DQ=aH>Y#llJbwF_nJG6-T0uW%cNj*E&4BvlRnPN!_j8hSy<&OT-0 zvSDJ4UcuNpt~HTQkVe$B>_jrB_Tk?uMZqv8Z7U0S%r=g`Lwn$QQKaKcWIu;wi=)!Pc7|q;8FZTVl!Q9t}?gH^> zIJwPxE#Q=d3`}9&*`3#G9Cfh0h=OsJ$sh$7u`OO3AOIEK)iw)yI@+BUe zg;>)rnbHgwZ%HlKbVtiBg6+re{c+k+SqmBJV7R43T}X{w5809_kf>6&YS=~CwJpPM zRcZo@KWf@oCg9itJ*P*etas-8zU zYLO`UMM)H&`FlkA)E2Y4Wyu|gRqwk_8 zCH^(vgCO%27Lp z^o}%C`H{8k>P!werv~!bj!aOdu`K2xlM-AjJ9zlep%=f4`p&+Cn6EZ$FP<4$v-C^y z$SW&OrXcOCiE}cSbrufl$VaC#mVRQUg&<}J2p!o?qJE~ofc%gG_pOLthaxl!K^_Ub zkUrR#4jtQ(J#l+UI%c_)f>mtVIR)>I#^LGRi6UP&3SvR{>8XI1XWl*9D@=3P=+Sn36Rn;ffOXHx5qeq+a)9h_zzdH$hyC%P`Mm%inNLRx{E(Yxhg~e5Z1?u zr=s>2WkG=N_D+aik$jlE=RZ}Fvv|-k%fJnYueLtB-e@$^6gwSY$ogDfT(AG^avf5( zE-bH|(8)y<8_aAqENWKJ++n2UrnY~%HXVnX9jb!DJJSF@<5RDZ6DTy zKWDYHmad&lwhH7mGOocg_T<`-)}e+{sT9xW)B)d~-Tj70;NA_D=Sy**>iGm!(@%xf zDUMEf=%>wF&^&4YpqHAg(H>LCZel0ly+JI6=5U-rkaL6=P<4nBDO{Aapy5|MkkWPa zDr%`n!}Q+x>?J0u^Z!HIhQgR~a(yby7|+D+Lgrjw)<3kiw@VJhA!pKAwkAJ&_(a_m zG)j3`1HjGWsZR6NX~8l~M{b=8lo*~SrWc`kElyZi!WJT?+Z>-w=xk5aG9roU*k6*r z&j{`zmlGNDbsF;BcMX=4qD?!EI~k_OfJ_?C?5^F3UM=TgbXa+l=lo^d_N59vj*}pU812SQZw{xEdxNl8p+U-C$f;b>Q2Ns=4=G#kW z!_>k1ADQl3c`>CRxRxkl1KgcSGwJ>rHt^IBe@sY3mcQsvz`LGoTP#c5|M2+&l)fOA z4)=ev=Csr_>0W6nMdl-leO==>Rv@1QmOS2H^NMQ?`RGcWX1q@L6+vA2>6F-CVP89v zXzXvg%8L!$J(-Jk;!sL+Gvy~LcJC=KCT=7Ayo*0yT=~>*Bw;n%sVbbCnyQ4Y>SeVX zQjYG^Bgkq;^c>=Nx+qpjK2dy)vM7--mXMg7l=+B`Uz460yALbfz5BB}I&O{lfubtO z_@A?EjAd3z7$nW(;!}@;uNZ3%Oiw^!Cu)QkA_Z{*@t5Ir*)hwtYxx!-GsY?Q<>wph z$B|rU=gzO*s;8MyhL-=Thl+3b``uzu9vw-|F;BrwW(s-fG{{a9A@02}t>C5iTrlC1 zv$#_}HnuCz2j{HTj$Pi^Fkycwh`;!(Am!3w^f{; zmr{66|BEi*W!mO0Ery8*>}6tNWH=6~GmmYT^)W0_Y@Sm2oUr_WZq>haS6iQ3)ZE;B zbaI=tC}q?P14|*=w{Cqqcuy?c^aywCTei9cLbXpGoba!IP^+;7Gy%`qiJzy&WSY*Q)z?)2fgRT$&b09$PbQ=3LUDIsw&AC z8j5xzckYXVTIPY(l6MriKV=AmqtdGLU*Y9A2Bb@yANIr1sR^dSKPX}IiO=?Clq!|2 z(XNJRM)m|Nz{bXn8z~k6*`ppl`7K_)ND{x!9cnnI!y%9`(dWEg1dzOFo*>rer7|He zIleTQBkxf)A6IMa-l9#vO(tqunx`23LVG(EOm~;Zry|9m$K z$*;+cIv+V$Se&rHd}3T4_+sI`RgB=!PvtU4XGfYTMIDLN6JppS|E6fU>npvEwdp)4~s;STBCa0gTQsMi?kP|UZ+Vh+c_vHUG}9@`>(y7J!0 z$jD79;yISS?z^OU2u*CPMRN%+Bd8TpXk`qwyGK%>y3~Pa4nlcoxb!=o=th1itOxma!Q`05 zbqA>|7XxEnx7%Q`iACfjd zbvWrPdn8Zj*?rTKn4|)9yjnzN09yv@hn8Q^(E0R+8#Nc@&t@*-j)GYkyAx!>r|U%- zAm((wHo9~ln+YGF=TAdCN-v@cx6d}tG^c^9ns}_wjJ%vL^sUY~8k}i}XQZDHNkk)_ zq3$PsP0j*>?1xQXmU_Ceq%A`K>frKEBzL@e*kH+m@_bb z%{TR~u3NDLe6_4O>sN@&7f&Q^kyT5at4p2Ic46!+oOy6ZSY-oKlM<-ZcFOnU z6Dr3t+ENS;HC>u-;_S#Q#j=|>Q-XR&t%h85Pr}#zr2lf=LU|(2WzSNAAQL^El$>nf zXP&COf30-DMThHZ$tS9$jKv}Q>g;Frj|?8kIscCDe1od++S;{Bv@6yWHvid(2A)~5 z^$x&6#LPV!-d^EA=gUkQ%lo8%z5R@;b?S8?i3|ncci#< z9~uLpLBdWc+r7X7%xLN{5bx}a(Q)P zJ(gGEg^Bt?Ilk`OJjyS*KuGaE+Oo0olGE@W09O_-$~gMI3vDW~+1l5aJifF>^O5z( z+7!n*GCcQd4fn3(MBNXcu76eOMAi=m*+~KR%mk|8h(60?RDw3K#-B2%r~C;|&X#B= zk!!}HtfG+~^a{LZ_sUwcfQB}rTYFA74f)Cpp{1fX8&(tzUGu9QOGGP*w$FBSjT)Bf zKAfKsEJQ{FS7XkYaBEp|_Spl<_9PHfiV|XTSfr*3In_#nScPwbsi z4#8==cYi@yX6+Sl^iBv@{K);7<|xjLy^&e?rhNCb;FXM{Kbpw-vp{YTL$>{=8)hOQ zgbK+sCg*=A`~iiSVPh$dPcnj%gjquK-v1ohdv>PI5}d3A3;jc<7o<3zcL2(thJ3A| zXlCmZ<>hD7uqe~^l7Kl<{}kV)vGj{;X3w1ln_F8axdRWR^Fjf|j)t>e?b$8&?c)D~ z+QeHMOl*h^ppdeOq~%XY3(Ro%?-%5H_TOkic~1Ap^<%1|f9E7RG=bf`5|_^7pbhOc z(Bc40yfBUmprA0+JpWR9dV)o`$%xz* zbV#C_y~jtCEy^)8Y?;i{zvBR64$vs$G?U8xQvleBG}Cv4mHiZdfMu zItuHMkgx|5Z(jEy{Gn<--=2;YUb;Y_wBIhS-C49#(bF47(1VP0hQo;5VYRz^c3z_` zi5g@EJ&0cAf{BHVUL@LQYb@VGp{%TQQj^<0`$D>RsQcPsu>5=7z5mvgWEDu(mX_92 zzMKLwg4~ltnFWORWq>FPx5Gek2 zCe!iPLU8csP@U*h)9)5z7*2BnqJ72n_4Q0-vp$cp1j)7|s&^%#KKqR%`^`jEGbn;! z(`0ZL#MMt1x&^Tq`EmW|+$U-!3wiZd1t1}{(DSd&djuH#WNdV5Y=M}nsiD*6>h;D@ zz_G&=&$+gVVT&bmbP0)1Tt&?9ZN(mBDseqid0b4hnD06!otiX*n~V#-^1#@q!nl9e zv^gp;6=`qw-wEpR@o}SIAL<-pxZf#qbMLxqT#)WPDcy6@*ft3zI`YH0L`K0A>oY!X z(u-CmWP_LvFZnM2rD=;g)@A=%dKexVTy@h2lSyAE@Y z8HJ<`q<^5Wl(M(z4d#NTLFJq za{r^0We-k(@5i^fDPbci(bF82HE_JAyC)rA^g1R>GWd6(J)U651%stK{NByoVpjyZW}qT5(qXIR0SD0F)|_IT9gfr%P== z4PKj#%sU}1@&pS!aj##U+>(vKJ5xJSp4>8q3{?5&xY4Oq9{61uSduWiaO#<<3G(*+ zXhlBxrvDGVLcI zP!anB6NxUXUBIa|yyuJqB=mz7`(9h|g2;>>KacdK$X$zQ@l-RCea@m2I}oQr5mX=k zv1ikX1B8*ZH6J{T0oB}T*b58t_6UY}`hBH)g(qoV-Guszl(Jx`AH|{k?vQ{DH#O?u zq%M?sG#;SY7g=GQ&`H^~%WCgh1QOx_E%!I^DppH+y;BgN(1qKoMS+ZI zG1ajz$Kki9btF1_v4==z<0-(V`HsDcBH(PRe&3X&(o32saa*_- zSrjvy$2F5bca#vhFBjmonYg z44fkqi6fxV{U#b$qzt?_v+o-!;yBq<`Q;%Bwf&-<-Qyl7#V6v5I&^B~y#dnJAxj2I z#m1jI__KCSZEU-sREYKM`4OG8O+2fdnn&mmATKL7*$95b#^>UCzqw-CzB{QoQ-dV@ zL*DJIeQ-266C8x)e-`ez?jYY~qm%lnU!nR~(q1`{DnZ`E?PD8XDSA#-ZRA>}hnk6G z8(2S{F-PK-s-|WiYgzn61|aaK`1A73RTZ>U%!DYM=Y76yAL`i4*vY2ig@`||)^VMv zrlNB&%WLiS-d-cS1sxUK1n<6?kbFyU`LLodzA7*O-^Lm)S@ln2_}k^P<7$SX*s1bU zO}pQId(M{={Z+5@qw{0QSDyduGec;aD&|1@gk~(sEEkz!=H*=6XcwypnG3`P6ZJDRC%|vGy^Mj z_bUiD{KB|O?uHGYAQ{6y|My1HTGffj&^-G&7kGbKhOc!)%q3Txt?rPb#Y1zkOLYq$dL2o5K zYD5n6DoNM4FsWLpr*nZx(|5iFCM-A{;J-z~z}cRxywr9BSEI3PTwl}q^+d|A$*xK? z_FAzZ$sAX2M$#S?nuUl5!)PSwB5Y<)4;|?}Q9)YjCH2R^ieGfAT6FKs(Xt5jA{8)5 z%;MD>Q4ATz#H-&f1oG09x3`J&>#o#q*g!g5$jbscAWbJF&9i(%axs#tO8|D^RzMh0 zn{>K=&5f)7qSNvy1rQLcU4!FNlvJ|QW1n1)U#{cmotxLZhKLKIH#*+lnT}!83^jh? z&0qAP-@%=S7Tj==s^FhB>|&&dewn1Pd4(}u$c`p`Vv<1vSfUIOo&uIsii1GISGf`F zvUHF_Y}@!YbOI79kTh<*YOvg|xv;om+cpE6j$&A)RG6*lSo0fQWaN_IqXL1hhCcL| zs3p;esS_j(G66@ts}UJA*)sG`NP2mO9VSEHE3soMs+1{6d_$+sVG@pMc!(om&F6GV zk^N-d>e9&r^xfCSQCvbflOD6_Y{74_vB3+Yy6`vC$#^hz5c6vOqB>glU`Ao`fA9?7 zYe%U_!XyFlc!bR?!eohvh>Y~16L2Agjter@n3r^PCKmqsmhb$F{J^iSsYipd8T*vd zO}bEx>Rt1?C&jtgz@5b?&jo(ysu>+yvm)uC@{N86NP7IO{4Li}t$cp-{iupl)?JLM zRc$t#=doX-19-*d<>epUR<&gF14=_-zKq@NL(M^n#pZE>f)O70Uca_lH{6tOlFLOR z#;U>4kGy0kNXR)gGKmH|(9H4xR-K)mo=*9}lA`kVDGvO^5&inNQ?hjA`Rt=d2L>p6 zwwUZ8cKX!#LIlMpEol)aIYa-^(jRT1KPct0BVhueQVPpHqkcwUU^=- zlM2nl7t;V&SQ#!I9bOT5bV?45nwTiji-06|CA07%Qm^@|r!@Xk!6AdCLbM%eh%R)( z95onHGMIyW&|NL>X{6X3P24l$M46OJY_x*wFJ=)R zNKl_vO{joUTyx=`t@mdfL$kcanFVj67QTy}4IkU;f1C;>q~MBfnQUHMeYpa$wq+X2 z0R&bKHS_Qz5}ihETw=7|3?$>mpW`ak7ZmYk|vqWadH%}f-w{{k3BlU+53sAPR zXrGWgmQtX)EjJ*N@|SFp2oQ`FLvG@jK19s30(zzu{TG8!MIh&;vu6#K&sC15%)%_@ zm*QP1tJX;0nS+yMYu2pae|zj(jpc1jM6O2c-txBc!5A_>t8ISurGmW^sT7Bk(f#cT zjEbisvlSahW0L7w+x{{^cf5&EB;S`gp!M$FPYM^GdicDm;DZ>sy*X_(>*%(4)*@M1 zX=OYyv2gViL?d&l+TTy<8KHc{{p1Ov*Gc&@aMF5W97O`9X>hd6UFhuQdfzXp;>eshk)1;Yx+W$Px(b zq2maCqNrAD4V0Vws5=vZxO&0&y7-o206d#TDPNsku|7=rt_y5Dwm%ukwrt5#_oTf|K(sYxy0y!sbNph03Y-K%JT0pe8 zAQH;bCM^~1P*i5>f^D`gpeT&a2&1DQ0R&4rr8){Tqe&BrqvAM@-m$_3gbr?{ct>11 zKsn3*IrZK@zaMRyw8=T&@_z5~JkL9^YDx8WE;zmP>VHiAOPZSR-D(nEt)oV8IpkKb z3dk>-)d|HCI6VY+>a~qa<}Y^<9YcB3=0`s-784Ub{gf#Rq6{XUP20Y<;^SwZ)ps<+ z7YqFpK3;mqe`$Do=%hgi8-+iX2#-;bi1SjOD@L2Qzqa5tvwweeiT{s%Y#R1+xu~aF z$2JTjD!*sbCX>`yUHco7)X~9EkNq2Yb3nr%gnGo0^;5CXkt{FYm{hnDfztS@ zh8+UrRvWnC-ld~mSK&36GK3W5ySlR5Um2Bdd|Ue!6{=_d+j}F+dN!ZD!>mY)XJwqd z*>!Q2V_(rRPM-SNcbqTGJiB z=)ba$e`U+2ZtkI*PsB5ti#jhZ(*b^TNZVS{kh*fsyb5N+@I%FQ`SY?9E+(vTuS|Q* zJ?Y=tq;H!aNupq8Uy8K2r`pCRa4x3xB3mB3{E7>c_tC*ce# z#`*t+5L-A0AH7%%Yj^H^^O_WwPQU6ued>`rldG!>*p5w)S*^~{rMBm9p=k@&mrbRkM$YqTy)(RDM#FU)3fRqNegI9Y^-EcfhvVou%gJTEHYIG8d{Q zzV`w*@`oOl>B*<>cz9sZ2t$^6o^np|-?+Ol;h+r70%j@tT8=F-5 zoZ%{2Ln{oO!Gn@ZFi|Y12Y3C3o9pT~TE$HT4-Pz5L+yJn{u~prAF+AYY&S zRbG3?)g{S;?iKpu7ovsQ#GNPrR9!q*;>)M*X`Fni#LuoQG~D04h4V)rtK+U^yocb8 zP!_qJ&^FnnNW6R_0f@P4)sQiew$NPS`by6xqX>g^Rc7iSc?TBvlStl1PvUu_ra4UTaA5bxu#Xfsocv(^07q2;Gfe{2kb zA68=U|96P@?~b@`0^~uTl-|W~;7k}B9M+{VTSoG~*~rp261V#XiZ)H6T@{Zh z-{(+mzx3Q7%S_R)eLwP!vm-#_^5VP3bIGOtv!|xUhGNunGIwToUlI4~hVMmVT=NP$ zP_)pcEIOM#>#wvTo%(3LM{))WbYuW{sHQZ)HcdAHpW!4ke~^kQ8)Ocm8LIQ}Vh%BI z!dID6#@MUU`v4#By17HQdU1tOG!&!^u!EKfDSsa{+4&a?zPG4V3o4LR;U`rTNBQKH z`9sn}UjnV4?jck&?l6my!)H00!|k6+lilaK4&kHqw@?{X4}98!fN{2?kF2B<Z7qwX=$30o>X* zUwP%ohbZ$r??3&<3M_>;3K_%o>)%f#GpOe*>&<+>b54o3XT|b+Wa@{7WsdqMTe24x z05-w{iW7x_P0V%A54UX39y?m0pD`i6YF<}i|pPya1{-4>~*CvK!-P?6Z7({RmZN%~#7)X?uWu^Y#J@!e<7h(0^@*HKBvOIV5*s>m&0bFVes zcFTHHlyS!_0@-0zkd(CWFKj-tj#EY7By27N4B$m}>kKS#l~n_K}x9JU{5$f;+|I=b?K-?%r|lE=(4mA@{S)|gGgY)wUij*onJBy!3GI7Qf+mpp8d7&v zXwpoMEi_k1O}hd~rg!GSRedL?Ght26GD{auW>@t^EPT*eQBi94{UW<_$MDb)FC(-y z`5y2!Q<<5WX|shggYT}K&=GagU04opzDd3*QJfELoT~c2Q)PDR!I<(U;wfv9)#ptr z;o9;DouRL!XLG_s)Y`R6pP6lEM)DJCWgf5sLiO|OlPA^1e%+V8^*r|<-v=-rgiDy~;pPcsG zs9FJLj()bCq?Lk0pfZ_4t_;oF%CQEEXP_h??HYx)&<)DiPr}_Mkrq>spUkKldt&n0 z*Xz#iw4l0iPmR&xDNNF75-%2o0$2wh%)zOZh;Y%j=(pGDPGemqUMyD5MW{2+0b{+II?$adCo%rh# zXTzm7fxD%Ws(^Xd_QK*(0|l!fYcm;udGR>akjkY_3+UbM*$&dw;!T0UGxdWPuxO4Y z>ZD$nGTT_dBrMsXEOYP=P0feR_Tb6Fh1-J{6idLHnPrMz2`a-&ir!XkoOu0#vzf(q=L(kfsk!IkX?ronx@RMFu;#^>cC>gM&_qrqbg z?_2Ft;BFUT<4;y;C?$6GKxVoQF874jZ@jkWzk`x<^`s76%^el)TS~?2)Xw5{I$ro2 zRSF0u@3RyUE?cd)WI&hGK1_v|+cQK#s#E-kZr6jcJV=|d4{`;{Y_voyhd3+%J)+9q9 zZ2L=Y;`fCEg`X_23L&PcQL9Zit60GjNBx*Q*WpU*s#Cgw{+#*3X}tO4*#p0COyJJE z2Im`@rL&EJhew{C(N8I{`671@6|Dd5L-da)mX-zsA6|JT*R?)r+KLket`%-}TECw8 zE+BP)W6)OU;+Sb^OK;rrk>S$-$d5B}lNh2hS!C+#(Y(sP-p`5ka6y<-xnW*Lfu?=_ z_1iP4!NJ9g*(^!VoV$eb15@lj|MeP@tgB67zDlJThC(u^0;!UyGwY?XcIji})>}*9 z6;!z0%-gl4^czy*?MYbDEANo9b08vDQ!}wxqVDF7dO6or&`b|4zi;{281NQy=Hluc z*DI(HXsXgUqamZ^qe7yjHk>`&BG@vfxyZLg$JyI+=#0swI6EnG*9QTWe61L!3b)xbxR7HjBx(jDG90f9|gJ#nTw)m6YI>l>cnk6)%JLR98kwPUpHb z3TIZhB<`H~$@QY+Gvs9B#|x7!86^O+;e@gJe#1KNp*~tTszqWA#{r!8Et^+SiOKYMM{n?@u12qITD_*_{*D&-yTM<5X^Td_PfsED=3aX(3Jz#&vd&6k)TY>RI&O=bD1O z*`ZqvVhFBve*SDTm z*AK_;IGZKLTUKz=@!n{2!PS0&Pk;uAs5NHI?1&S+0PqRVi5+4)CnKhv8^S$y%`a;>zUOzHk;xQ zZ_=0nzf}s`e|-!Ts>7XWaL8Ow`z6E&ogeX9EhZq98Ey-OLSf!FjT)0%TY1SjTSvQI zpW@1yC+j;0em*h;6(BF`?|9fC2Tz}7Geu`wNy#r;e%7%ZT#--M&z1jhzBj3(M_+qQ z)KI_O`CS_?P;}nG|Jr$ZArv8lFDr8&$hZkf@Z_}pv)76L{!U)C;#IsJ?FS zy-XX-%j&yz6mx#fejUu5JXHYLNuN}7`Pc(5-O^ti_2euZP>Qn8G1Rf#G-6db*WK!Y z;s8M4#NUzl$n5nmXU09;EM`=6)OlL$VZp4-P^cJ_T8c&uKDZyt1U0 z&>w@(a+prdAI^C+NlIh{QPE4MnS)@8mGwiZ4eQl=M-04%=!DW>ZASe3&Ex_Snk&J1 z(Iw#O^S(6H#@1J(AoT0BY-AVDPXu5$s)yQ&YZD*yYTz0ahJIa;)LuSZR})bk1xfJ- zE&Y3ky3PH2zgdUnJk4O=foOVf!Oi3!>Q;6s(3#myk#nL#rFWIi&v6a0IwjcpgjATg zMv~8b&^CB`Qc_9Dg-f#^{NmVy-!wH_cpcIn!ZGTfyT5D0YHA?#Pp|yA+wb>FOtMo{ zIsKzuw^aL-taW3LK3IJ0{{bK@3s zI+bRde{oVG2EEtEtf5T(4gd*rI@)Q*>Km#%&;uuuouSmn<8W_6O~X2h+SiOM3zcbn z`3zhq;MO*|LWnj(OnPSNv3k^S&R+NA&RE3B>q1YII*O6y0?leJiUa#}&;kgiY->4C z*fGUZZ-V7>O$IE5>zD5Tt}rwP%Jsv!iD^khflScLBy4p~0S%mW!2rPT`RqI8`=D~& z`D9d?)4zK~`lQ4=*j5dxxo`?ysceeVrCgvU+^U)8(M(15{Bah34zeFIwdi`@K#|S8`aml=%e<3H(`it1nb6x40qq7RB$>^8`)qc`2hj7|Jjn$`AKt!~Hb-yM z9ELv7rd8)BLJJ0*GJ~*`I=%B%8!x)3SiGl?SH01v%+Ye7)%b|kWKjl!!62`Y;o(-4 z>VXzL4bLl^p$qhhJJnfVBznQMIeiTnf#FUwKfa;8207Fk;I0ILAH7_slw@z6bKx@l z!dw4UxcN^sf9Ay(Ujr(cJ{9|M_o~``qC!`1-)k$VByW~R|3cli^8v%!d{@;d=Q~Bx zKhV=#rnluyn9W?<^)AovmL^?G|)i+9v(26yQGPwCv`=!5_d}-jdfmdq= z9m&|}+I0FDuQ<~n6yqZ}Bm^%qpQlVhF$|S8x|i;ZfbD{cUtkSV<3VrT&YR}gV!?r|hC_|6>l`jh0PxFXvJOL#QnnQZ} z*wG(%FDn*73)P#zN+v8mq2|C{z96?Qr-kW~2jp z*qgycempd04b+E2yn}sV6T;^?g(S*3LTRPg;R@M|HpN3v@4PSjkM}YNUR_I?vxP#VQUu{)PI!#w%>(~& z-rW9DZ+7Lw6}1%^ML!)&e`)XcOa8XAjCNIh02#%CsoAS@53_B6`6b?^zPk3>9l5SQ zQH@_9+@wQJ>i*{2nt7i#s>kw3y0v*pV|O?_F|-X*yiJV(CjVODPujx72h>KeHF=># z)y+7UOX!j3FTY;5c9X0;`0y8iW*>-DiSO^6jl9F7v-tS=t;-jC7KiF}Oy>u?Dl#!4 z&8r!dRG4Ru+0r1oClX>I)_&KIDS&V6es#^KQo3n*whd)Ne1<2#F0=`|}Jf z7rp1G^WZ1KU(y?Vdy44Fr(eP3c$KuS=a5$`6ZdL<-2Knp9Zz-kl*xMG2ZPT^Obur( zUGHeQdLxr3>GEFNf!@ zY~`X)QoZ+lQJ`bmy-nHVG*uH+WQlsR&^2#a{=|-J8@AVS*{;(fRU9pWUTz=BF`;hz z=tEz80+Qc`4fXZx6ROBWc2&o&Qe!kFY3rJIm;d`akRm@%I<$Q2@ zW-{upT;rW|W*Wm5f&YhT*(K`D(S*PKClyMpnFgJHV|jYHso#0`c1}`kIER?rgKqD# zW#elzo9g%Q{R;>&2@ViDn;IbuQI6f;d|&mlk5RMq5r~n3H57aJWMSxWYQognvn}x< zpzVNNNU*t1;+4lN!s1m(Jyt*)@pqe%Q+s-+_jAVfyy`|i*@7WPft(&(xe31VO6qc7 z?7XM6+2MI=4`qV0Yxw?Dy|!7M!R>N+6$EJ1O)eJ>2<84rSWx ztes39S~H@GhEmIG#`{Z*T7u`AntM?jHi%QRuhJ26t}yXp>TuSVn;vdRb*}`AJ@OnKTr^GfE1jUdjDzUp2WWyV$KNi_Dh;s+s`wx zQ-tuZXY8W6pR{<8Qkk7YB!log3iw$FWxWdm=nBE!Y$w$*3dn2PVz2lUZjDoB9f{y{ znnLyV9vx&=qvjxiF`eebI z9PE358@N{IRIRGnY!O{`qaLHP!N7GQmu7UHI#4ix6oo`R-1GtW)EApee9{DW#pL-A z+Ii!FvrD_aOfAi%&5%X#jP^yWkhrzj$s;J;LKF8~wa*C4+!V-S&gWIVymWh^>!OD) zeY=ntQa*b~Jh}pS`kKu~$D*(16${5FR!-WV*S;IFVg5Z#x!I@pP&OQx<85TG2W>Rs4k%UyH}P?OeJvn20|Injab|^{qGCNb#PD>zot(6Z1mo!@g!TbOJ3_OcNLJmK05c;;wu*OudwHr-LTzzrbjQq)P z8#2whgoVdk9;0|$d`eGWFS|rw&z-ddNlkF1Ac@)9gwc1l z&sjBO2H%J-U`mbl#XX$AuHNitd$5!}SkXX{3X`a&wkMl;aSov4uT0-;iLyw&y2Iw^ zVybzd06jQ>g=x9#LFH0z$OAI<;O&MVJjueO<9nXuKo6fqsPE-tl3^XUw5#yRIoSg* ze*SGq@cxZm+jdj*(AURy*y^a;vr-xfGH(AfA$>>bZcSnPTyJ4YaOt~0Ag)E@99uAJ z>qvcZk^xDn=WfR?p>dRNYvld&mvGU0d4Yis_%51(2&6DnZ;rMFsgc%zQ6xE}iH|x1 zSKXy1zkUN3HFJ-%^=JdJE}8Kh1-f9;XExsHJlO`F{`0k0sjg8;viJ{wUQiNB#~ulV zyB7#5<|i?^@(*Je)_Me3u(milGI>9Bn6<*AhoSnd=$+7yQ;qBOz7njvBfu$z&{S`6aU;TAu2!5m|sjGbB9Zg8AqpOi>zk=!0;c-bW?p!S`9<@R<{Ga_I+Mcrnylix<4Wzg zNh5dNNqGOegXWmCIe49r&B&=XjZ0J)oxmziH;*?}u-Tm`;!CVBg^d z?MI++xv1(p$nfHcHJ(!yyyQ)@h&1bjSPq5@Yk7u~%{)3-kmM?-0@nsI)$}9=D{OK8 z(0lYVB&!SCpD(vbIiqs}xtBZHdMDe{ca&W#uueyVGG=xFy&3-6p6+o0DybcDQ1HCB;+}236!2P^TA&nZt2Z_N8s&K+#1BxLh`a2i!Yf{ZuCTS z<%tpBJZfYN=)@EuBlpA<#9LO!-T**zhbf52o#(|Ysx&j5Mupm@-v55wzW}B{=#-D5 zHg{wm<>h+Mh)t zt)ZH@#iYq19LWCBZK<(7};^t^B^4cA6 z_$NKRGb=qfHe{6QmljL)tyZPJJT}OSzj7bq3$k2~viJB|z95;QEjXVyiuJm=?Tl>o zGYVF>Te1321a0#B-UzgbxL8BPDou7{V0hj^x?8NUxYAGr5}udZ6q}+MReCH6?N;8l zinPto#M!&znvp;aFQyPk!`A+M`5%jVmWjD+ zm>&5`r#ZTsQ|bd_C^NV^R$mq^@qJn#__N5L9KLoiid<#FoW1d$*r0Bq%fPs%{bQDaf)$OV~Svpt?MWnliSNX3s&}s1+My zsMB^7pEJ@O##gszvnB50dnL9_tS?A8Ue!|`+tnU$wEX+rWwS7IZ^gmPQlHIQzH&LNnwLpVk0HAB2` z6UFz%M(wy;AIy$8VDo>`W9$EKzOO7+IcSquRYt$3%+HOg&IHbIn?z(h3}U0;vx+&T zPF56M@o{5>wTh0JqGX8&kS4a;&j(CVXHjAg)xE(3ppAa8A{|M3N>$@!4@bu@48`|J z9iODi@NkRmYkMSRe8e2S{$jDdtbgB7hqZrSaLnRs=VC68HRkGLO}>k4XOv}o1j1%Z znoGL8(B#jZV^+!YZ!>TR1CwRNELV27aDTZ_uBM8QrtR?Gk zjNVpMS=O7D1%lZ3G9#+d4g2#Og6l4`H0j#X6SqB?TGCtL%Jk#k{a?rg_RWf?km8;o=XzIF64ydn?v$(vTug0FD+$BAx0|C$D*@R59e$M z(|txUoYb?kdb>Livi1**M65Vd%A>4K)3K;;)Z)CE@Nt{WYE|Q(YLh2DqIP$Z+;e^0 zOgpK;;|qTH8Mc0M3bvqFw)$vWtd3ZNe$qW=>1V=YCb71HsCxPFLYsX4ANDIevd za2Cc$46QgQuMD?GgrORXge?9wUaM3oAsl--C$TfVERd@nR zMvYoXH>BaIcm$2)u%XA$n#mBGI>w$8{cN4ERlR{sNE+w&^B`!f9|S z1Wci8*0_l;KZ<0tdYzu1k+v8Q?D=j!{$FnI2!gv$5bN3oYliTCM0?aMy1k&Y#&mlV z3i|~j3SDv~iRe;JfCPXMsEsIdF-_lN76=zL;F5Le$0vtbvNW24%-_}$`}ermX=GRx z_NPK)(Cv4UfIDV}CQx_Fpkxx7HRi5uE%A7Nzj{scMQ0KDB`@wp;nWEcsDumj`lF`C zyOK`T)R>~HmXmU~Ihyq-v3N~F7DN;yVPXS=&J%OP*puCb3+ME?uVL$uJ}h0*YqRI{ zVBn*bED2%HC)@R7R(VRuW9iQf15HqYiN`8sp(WJ;gm!AD zLzB_-gef0@HBnFX{<Pv*b>wO2O1S(-q020IbxpI1gaQ zp&E zFDNP2!7Icl&IC5>c!A=gW$Lq7MoPB7b%^)nxrjO1!K5@QatIf?j_PxJ!!~IhPReyL zo4iizw#6p)vJ-_amgu6K&KTk<#20P-wFKR&Qo61EDWMvRSW96E_wqqB2#X=s@2765 zMk!ggLuT)(3HSxa?IEv4aG(vGoxB3f_-3{mH^55zbyiRh+YNJnuABR0{Wt5_=AZ9m z*1_7z=2+eZA2HkImpPfeMs$?xU(8#dHKYy>o5aebx$hddKKHQE@!ZuI7jNwIhOJUd zAF$p3xyWY!bkHo%KD4|pX6BuoVta4@EL94jVPle1ed0Jh3%xve5c;lzSS}a|9prEfNWQ?u5Y>?Lt z%0|be+qZi#b>`?QL(&syQ8d!&Wk`?PCRUlnM*6FH*i>dgj~+To1c;ZSjy+*4*jEFT zg1FY8;2n#_dodOfRtsw?P&0y*;*MB^63Xq?f>1jDv<;X!8W*<#A^*q zK}$FvK{L5m*I1)%e(x&wgXk0%TL@iNf4(z8bfVT$&+ZkyY}`Rk6j&Vx-T3@-^asOmp?p;_bjb4%&LPSVYpan zcwX%H?Bi)Q@DGG3>hKRJXy|FQNY0Dw6j={TMjV(4LXJa61L(VJUiFurmh=OxEb9y2 zHMA~((4rXfQ$uWlgSv6vp91E2-l>?MTFIu$nt!wfH13AkKGL7Ie7Q_L{!xHxs6x2C zWg9zDq(9HvB2$yT0W8nhpZ4uKAH|x5wEpzwg)(Jp-jkJ&Uu<1ATPC`$JsNl^b0xhI z>tya+^&0Hp`jI;&{aiqePFA)<2jVQ!G?|$Ln|Y`HXxc?%bh75g`4a`6P4)jmu8KO! zY=Z1Ham+OueaU#`Z)+YUb28PVesHQbosV)O3`GlwN^uEQl9x6 z&OWLvL$d=$5sclo&;*Ue$z*P$a3yP8CyZhmuH=h?|7I>OpDi$&w?4BrF6>CPs(+PV zy5j^6#AVMGnB(-J>Hnj7fT$gHOOpXecha7@r~uN;muwrE0PlmM9!T3(i8o!jqK3U@ zUpIb;@54G%0KSjoetzXemK#^Fe1L(MM5qI=t%4z+Pt{(dC0;1PwQe8fgN}jY5WL3- zv}X>gZ#ojJ_gdoAuTDHNTcCZXRH?q8Izk#v=_rpwxM0$!P>!8Kb&CYqMM6zTNygt1 zDm6WH71w_9I7Ac}eCm#qOZ|L|-a?WrcCs&H4jiiu-YaI2@?2fD%IF}!-I+xIjk1Ug zHFr|pDc)zG!p}}Rg%P%vC+2(FQ<+;jg5cBAARe-rFwwp`L*WIa%#`8_(a2#+TH^+aa} zdS)0=e9(N_^|o6vNx4|Hd@-&1QFsM(E z#VEex+Y*v6jK9W8!FrUDW{kgBiVv)qry7EBbfH=DHo|H-i_Jg33fo(Of9emnOU@?N zfV(kD`i0}K7E5{K3*?0^KY1bCCrde-#x8^?Q}*#Vk)}^Thc0(^g6Ur261) z5Oig4eG@xL(bxa)J>uz?apAJFb2`>k@K(#u_lu{=^P=9S`mGoRi==O4)#vc<6fVjl zDy;f==FcCvT#9$G6IADM{8_wk9+O7ZBTqX0|DM?;>ARB7tx}9q@D+B7E-A|X-t)oE5zq;~vw;83WOTsjoS-9$Tc&RLGLun3CLh9s8}Fv(Yovy*wR+)& z9@wL-Vq0OjaG5hDeFP~A_<8J2xMkKO>kmBTePS1a3ui7N>DZKq-gtrFS4ZsRi9L-& z@Ts~zRPD-)f3P*ugu^QRw@&%f&+D~K(RVeqfRD(&qV8Gs{r6*EDthzw!|D$Y{T%Ud z|2zKy6z*{qb&hguT^H4ztq&6q{=I5f(i< zSh5b6OdQda;1d-UT3l5cI(!+8<*Dii;pPm`P_y(vfdz@ltSqhKhE)v1qf++6l`tWs zK4OcJ%W$#dsrcbLn@nzWSiKvjq7962$*O z{8tlbUVD^MMZDnFCm~OPrE2cF+-dcbOAGA8Qk!zO)6G7wx@ycckzwso4RA%5+HweH z0SgSqc?S}FNDp+6LFC+b<>5>06HbD#(uU)3TMLQA6_ZcHEm=YL4%%Y*$XW(tdUTdt z<9-myID!B;BGmiu+vI&Nf?&}>dbC!7Y$}|Oyl=NHNV-V`r{!BbjZDyy$WvGi z@eB*Ts*N`!HMkHYtG=iwGbkw{SaOEr}W#R+A>i~AueWd`xa+fxK8RumLiD&1Ck)Fw@k)H@x6)f4h(2J%Nn(4~|b zX_H4xK0?3Wsr4ylMF4!*PsL6CoP%8QK*)og^Yy%BD&RK7e)HE_%H*7RsqH-ov?69D z-@y66Xr+KdhNHfY>YE!QCxdBPH;8cLYfF@RSwk%5063ki)zCP<8=XjNJgt`CyiD6s z_SR@V`!96ojIIqxL)QqRrQ{YK3nh3-QPp{pw|MSGFM6OD>YMQ&;yW*Fi`|VKoGRmkvis}wJre8%iqj&vYI~83J;eS& z(g%TuHHn%ewfQ#*C5#Rp@?5V*(^>}kSW1V*t}V@Y)hxWtX4|!k@YDL(T^%rO-GZIs z@nhWV(0(&7i%E|SntfV&>vVJhHT!sG%XH|GYixeL#~P@%mCqGkQE&PR690bPN;pM| zUJgJXa2Ip9C5c)7YrLM#AfixEZRv~0p~5rK)zk{5VXzvvE>~HN)@TPWtnv0{m6roHbBsNK zz1|AJ4t)H`aJSic3&Xhx(UaQ|_>0Sx0`5jbgX+;HqxQ6HfVD0~ORJ~PlGxGm)_tU;`cX+== zj*g5>47F=YtG;ActgKPHMgp91`0(s#zV9-nD18=*I#?W=)o1kUzj_(=2zG366r)nU z!`tIOxdZ0tmwOJ)Xt+nEbH08MJq7<>kw00XB5SvR^15<`&7aRN=+B2Ga?HWI`yK_1 zk)m+EbH2y9iuqSzW-tWMN>K&A;BpRAs4EAPzbL48A$g-e0a=-392ffHz-yNE^Ujr3S} zbxqhUW=@pRAVeCsVQ1hHP;t03eJ(N^OZ`$C5J3s-VT4#rVNZ`qA{s7skF4U2z&W{> z|wtKditw94M%UooBG{4M80LVxCRhju}9z2&8E6RSV6P*LqgrH*feT{1x z9vU7-g8u}LVX$4DM~_w*tFDE=Ncx_+aC1_SR&~Kgey2`R%u%HO^jnJi zJr(F@iE7lKF{-EU+Oh2(w^@1Pt{sQ%$Ti$EhzUsAwCm6eg(yaWO?rLLeKXdrsxit9 zA9WcVE8X=xNV@JCY=bn+b#OCi#q&g`1|hxuA4tG4Xhtq-DDnPxHHx{KX*<@>NR!|R!jafIBUGM$ zlS2KY>)=Vp=)fAMP=S%ubPW7VaDHk9^S=PS+YaASU21+z8msQr= zN=^3aMXWCFg?fV}?gca77~P|}Ysb`?;8Eq7`}Mn2O!qXw#gy`pIatQ~C<+~mu*zk< zrfM3Tb;fl^?LBncg;S?4VEc^U)wy|>JOcHkUr=I^>R{HH5ctmNaB0y$xHQ0W^vdwq>nKHlA39?duQ z-PDYBCr1CoR8D*xI0432y2_{{Zpx)~5vx7iWR`=kOxL`c&{x`%kgoyP zco&S3L#Pkj1^H1aZKhX&Vlf;hoQk9H0aQy29= zd*!P6GQP48-r#85Ck5hn6E*XTy#uzSMbW8-4!S+ zB>su~HifsfM6V;6&=`vDCarDo;px(_zgx2YyPkHgB{Nwo>cyTQ+ zjT$*cfbxe=J{)9=1+3Fr?1kHD+V^Q=BS#$qtuqvf3i zqY4l>^W2hRj4kAAsch=;8eYm9vjn`T2B-Vh16#F4O;Jy?Q(9e8=rntaok%Q%klD%h z(%b6h_1T;(fDvYp9*)c5j802`if5$E&yJV^nQ(MPm*6@+C1H9aw0 zUpvbL*pB@s$DL^H%5abGFU4f;qr4Yt9^s=Cs8hS1|C1%KK~mIPK8w@^BhKOe{3#4C z_e9(9@Gu{I``Wc(v+oh?s9Fe8st8YTtB%f&=FW&BgC803B6kLX5s0GG9FQ~uyb)qKn)s^T4dBFF>wULG~D8(xNasT z@|ON0Z5J;#`J5}XmLS_5!by_KDX!Kqyg&dVWwRsWiRD=HNh6&gW^WGR$P3f}avEeU zM^O`Qz*eyNGRo|#X{o$6cHS&n;I5TIVPh`3*@@%PE}2YRx@5x6h!2j8MEIzks!tGN z?VnP!$`lNB=#c-fs(NotfN_^vC5H_ShS1mSD6lpw>62}TdD<#FdMy^kp@5<4(Dxy0 zQ@`g1EQ`8mLfx`5U&vd19XZ{-+0+Suyoy2*WxnrbT}tQm$XHOPab49V4gC3V%L_Q9 zNfALIkv-{W!Z3c>^9EYdm=TO$B%&Z3xu6c8#ZKf53qtJg@RK^AaSUEWsl%hs5d#yK zRvr4X7^7I6N!lL8A}1-M7Q2SF#Wi$9vIaQ1$L6T&QEU=BX!EmuyaP>iZ9rS}79_a@ z%xXG}pl8hFXE)e@xz~1~P9eG=nc^AZed&I$$Jjrxq#A|&-S?Xz=_y%QPOzFme)_7C zLfM-_18VVbfScpg-Rxu`HOdp5hnYl6jE5`gAWVu+XaD1*QqYbhOa z{*x#Iyo(Lk5^H}(pR^#@kdBmxkG09J;gA&?LQvIBM>_^{P}|r%TLjQGH zfxx3#;ht<+WO%%|74x~?3?{=DPqy4UfeE|K;_>X`r#vQs%wV$R|1dwWqQK|=v%HS<#07~d@JQKBU zYk(o})tT(}8@+h5oOT&y%_Ki%!JKFcl0wObIKV?Ov&eGJO8TiDKAP;leift7m&e#X zOMhig+$vO30Ba6f9k*&NR!3$}Y=P{e(=Gmn;WDM&JBEB86$U;h(Ks)BhC`NUJHk;6pg&VK zOLwGm@*VrTtqvDYbY7QM9kmZg{R{`o^JTH!Y1Y8t7&h-rCDLt)?}?~@MCVx03ygMn zo=BD0oncELHyp9{>*XLuC)d@FIe`Mx@hRN}sg%A(M_2y-0~AgI$04|kgkV!Ml$KZU z(GxK6q5aU@To9eaBGIi&K7M9~`em^${luB>{oR1%GLSPjII5fy!aim_q-!-Avrmu1 z8UC$9An;Cm`r^F(R;>-4ivR^zGd2Yb$?&bk%oU`BZk?fAq|=X<`B@8Y8he!j0KD58 zV8_PB7spHtKO+sMo2555_^z9Umjb^DE7s^9Y8V+-HpNHPNnKVa8Ey+>HAtM|kyS3o z8@|^mgec(xz(-(k-o|QLEurU~>pS3%e=0n|AiPjZf)G$R%sv(cKXBm8CkJyAXN=-O z#9ie(+EJKZlXJ)mz4=vmiBp$am$~2F_I2V3E%->t|@vm=0JN;{pvOKzMJ> z`WcyX5=N=`zU&igYCImGVAv+XMSZjG|FQS(Z&B6j`}jJ{FwDR(14s^{vep33%$nhp zf}(Q*&yY#VaB^T!v@|?WYMHD#fLL0(t(}$?3R)WCHtpS(+BE~Cre)_{k`{R?kJL`h z$kUoxpL^Wz&*vZb{`%#*y5Nd~>vdSK*Yn)Z{oHrD0X(>8rxbH$fBOUnx|R|T?{VFY z9c>C9?jT^wjzW2s*+2#k4i4f>pfr?S?v6(vft|0ZqPx_ocB%Tg;Hb#3exuIGTN#v? zaI2(tMbgi3ID8k~|F61fFG8anAoK?FA+2RD_6&*B7K(_A8Xh3LncXwAFpx zx**U1;xEI`&d)XlwPT#}6kHjnw)8R9E7rMd&`QC*CYdUcZWbuSo#u@h-B1j-eEtGZO z1&uV=k|mU=r}_X=;3HDKQkfZiGKCU(_D*d_zAz%oKSU!V4hKFGt?pEA9GY??Ih|fe zkzQSs&Q_Mz0hI7PfJ(^z{frI>g^rl4kq0NU0X{;#?+ly$gj&|J);AEFitkhRGr(g7 z7c`H^ZJb4rpT4JSYN&?Ep^dLIHQ8i{X3 z;2vk{ONA#)U>q=burQoF<)Fnf+>4-<4b}JQg`c#ZIS#P6 zCpaPJ7?k2lhb&>O%7I&zNT7aE5XRmj2O_}`L5y`1ifuB~ddLAofS6Px!$90_+Mx?a zJyyJpTm`aCS6?K4g{0UekF;YzFI?smN%Wl3FbKg!~re)pc&D1PeexMHvdn>sQ6 zsflE?Pw(x0e$AC^F}1h%eUq&YHmoL(Z~y*$RGSxt)Cob){rOmfgG@)Xcpy~G`O&}F z?%_PI`bq&h4$@O#H=%dvJ#$d_GM_SpPF+nVP9>ZB43=}Ph?xe_ou%OR8ZA$81?HXJ zp^lZVvAyMrR&+iw3eSxzgvmWJ5_k6@y&`C6dT;Cb%iwlv^GDxBBD8 z1+&U=7W|KuXUCbz_P*zRgh?32Spmi(vQOES>%q=s-Ard@KqBI_gc5&WjL9O|lkG{} zc^^U=5eyo5TOyf(axuXo={;A$^~i};hR}J4hn+L<()h#axnSXK-?MyIZ3(FyZ?>}m zuMuEOZ|``drhfbVDLEQWz0zb7Y_3qyUZ=N>`-Q$5k%u{h zt$b~6cEq!{ zFf+GYMi1q^WfYH!XDe`Si%)|uMuciG3xlD^_iIcX(1aMu%oDhQ;_Z__2zWa00g&H&0TLHO9lm9fpidB!s zA4=}c6d$l(y@;0Ep}S|%fb_iH<5~rU#?+@kqGm9<(`UzvzYs(RPN0s?0h75NnzHq< zK|xH5pv~uTlk32Gb^E&7)kBVKXSxtx2UAF*<(*q53kCLE(+h?y+Z#L)jeMgo)2bEE zGIGDfjOwwn6J7~fW*iSDmk>RjJh zt@Wg9C1S8nQ((k^!T(HR&||Px|Dth94VG#N8ya6>@YmPUck#*&TfaQHFx`RRl+xE< zV4%%k8;!e`JYG$+$bA&`SmH$u>9wRwC#W?Y;NM4H+h!joCu#BuHTS3i)=9|AE@GJe@7W*7Zg%qvNdG*N3pu!LUN# zws#TjHP7obgsbY&#|zxWb*rwtPw#yOqc(V+*`14`2%(2Fn57<(T?bD>1XL|)_J9sd zd%L)P%b?GmL-!|1LwK?>mF#M>*R& z79Lz#M<`x81(^o$kKtqv%~o=tq` zVm#TpO4q|&9`Bk_;kgYjX4fjUs(JqLbRIU{K;3;;lI+a=LGA;h?YHG32I_fgVS|Ql zKEEKvz60#5(TRsX>{C<38|2ytx5)K8pIFr7v+INr()B0;Ib9WKp$dx0WCx4>f%Gsu zILG(8yb+UWZO!pc&VLv!wP3;{ZWS&Gs( zPyIAh9n~@)ah^e`uXP?b`0uofjg57jP(<$9b?_h) z6Pd@BdkOEvWhZU9Pjck2eCw^mAN%66%gRk+3-T2vIy7-wvfau4DkoW~w1$J4mfDxI|z<3p*Of!8Gj zi#g$i`wMpz9sv^&da;75N(`biq(%hsKgnhYr!IJq^}H4s#NvHKUNpquG#*ABHI!A( zG4;A{-$tF%CC@|$d?*rNrjl7*EE8+8+EWK4W@lquCY1QQ{} zyH!Cuaeurx;)4eFEAv_2PY&L?^(P9{TRdOx2b!OJ#XF9FKpSd@G5rJH<9!$vLw=8* z6v8$P!UmmPzUNW(nB%OhGx%RiUUOmJ!ISyI59;TL^XdwsSL@aJItEhh(-V9&>wYXx zFGy&LmD8v`$MKsbO#XEVdUifOsx0nB*@S4 z=t;P94&Aknvcg%i0suQ|A!n;{^YZ-;E1zdI=MP&` z-r0%B!oCA9PWdW$DBR&1Jf|H_P1K>=fWXkQVk2Nzige^&@}VgnKs@LZIrduFnjjwRhI@Yjj(I+exHG8;v#hl-7y#%RKFN0 z??oOF+eU&Nq@*pNig1c(#^82b&F-;RxUgHt0vKq-uc6@J zsKt{G`=ZH(RN|c8KMdjRAlJi0^aOpU(!-1xX|n3Y1p^dYjNn%$GYP3(gci^&Kz9x8 zJ4ZfREMf6i4-Y9id@#}-gaSz~J*|N>glMc{u+_?^ScQxX{t~p_Nl**wIL|SZpv}!p zHZM=`rNKrRZZ0Yxr?t%6i^gEi{Ob@Z2s8nYNPGlRoE`d@(A?8VeTO*z12Cj0ixeTp zdYsZCr)cP@Q?$lU`~V7knyBV-5eqW}=*82R_xAxXr|hmqiz<_5z->cF)KT^T8)5)q z6Hv8xh?&TBEpFiXQHOdWIl^1Hfe6)U-EsqRBP*~zD5lz9XL8Lcxne3P3wUU<6t*2; zra9J4R}$Sd$+W(qufh5@-j zIVxSpsw25sIVK?q!R`c&&Nn%-J=BIGkj)sQUt;wW?P8}7Knm$|G6gmR>dTs_qInA& za8<3(2zd7*hx%E)Ir!fgYa${qo89I07=#IAx}mYo1U*~$5%1At2hFFYwWw((H@881 zQ%c^K5`*Y5qw=E_!aRc6WG2uq%x1ZFD_HCF%2K^~cS5i*K2%qREO@upyeQtXK9BR` zGMpGN`dyh`E%Z~E=l!<(L#2dNo0-WGT%7Qpn}lo$8GoqUr#Fvu4h}oyt~6R->*~^l zYFoYk5?xz>zdHJ2jG^jGXv*|HJF78U%^p51Z_V;1i=r1Z@~`-!US9|9f}&3n3hQbS z!S!)|r$ez16bo$^%*Y6X*)!zOX|2Jk8CbJ59yJF4S%(=J3KMN6dQwEkI6rB^SAf{Y z36u-CdIf-P{V;OmYP=nn0D-#+nVW{c0jY?zcb{hBd0)KmxWO$SNTH^lBk)rn14Wn! zbp{6n>bmX@a(rR@A+){)sE@LFq}i#7ho+0ndc3OyJ|-hn;*ohbA>$>F71W{cB$=#^ z#(p|lfSMlxz!ZmhwR&t&%O8Y>?ay3mO5yp(_5Pt`8XK(C_uPIvm-T)W(*<<@&>M)! zhwIs%woDJg)C8)H>f?k}@rTZ$#ChoS0(P~#&%s%n2tscj#((Wd0A~DJ6#<)42vA#z zw+fJ|&Clcsk351Vw>j^CR~dG2y&n-i2a^Aqp&n>S(|QzXI~>@EQ54NOV*mn3K8>fO zdEQK$1aTwRd$9{)$}s=%9C59~d)ClnU(^sWz8(?jt)|(7_)F<%p_a9QH_;zNSs}LXG!9O3YYcyDk zcB(m{F2R0Eo#ty#Xx3({qo}}M;J__ss6i}dC8Fu(z<@f6JR3%gf7TU|Ou0|o9K^FE zOgz7zs8A<0pSx=^BcAr%O(^u<#t$+B9hVyx? zTIOrX2-pVnDC~%ppfRb}5-{;;sVZKOKzi2VWE_tlz3T(KuZr$2i38@ zH`I*;3k`xm2ul%2Ag5*+dfhQR#Ta`=Y>+d<{d%?0{>A-iU50pN8u151+3b7w?l)NN z#jQ96cw|*%!-nY_I03|aB)(iL7?UCUKm@pT!I_l{)q&L1VQ~MXK_JkwQ;mPX#| zZRnMJyK5IN*=B0;gB6Xwq4p;7k9`>&QdckCr)<&n?7FrgRz;Roppo}6o`wNb+6U7N z=J^~?C-`if*{=21)JPGZ%ee`dokC9d*-2*xKI7EszLNj$1U#~mnj@m#@#@`t;nj@L z?A}cNl`M1lSn~t?KC&0>^tdiKPE8)Z_4o!*KLdfm!TeC_^O=Fv=d*j5;td?XgO2#H zcL6M~>+AsF22fPTzn0D&TsxND=AF0uM4(+ey^eY;rx?c|_^g8;vx)d(Fs&L#_ibJiml_j1;e#jQqj z3{H{&c!XGUF+9%A7?^kdyGz9+sV0~@*H2Lt;#(+^Ikydg&4=6aj(C2|6r^yVh5a3s+?(H25!7!8fK*Q$8fxkSz zImgYcHiUh~%_h&ht4(TY@B{weK*tf*J?$QzLC(j8OR$o~5G2hT1R7+IU-O3V$f6K= zd`R#DV3wx6>MhVDRp`w@t@|txS-Z|V`Cy>eXqL15e4V$xWP>4_PX(i}gBWk_Lh5pt zAV9qGGXMJT_zoZdk_U&NEYxxC%5Ci7ClPy$Jf2eYYMm2B#t(Iz}WKYS4 z={A3AeDh&1SY~0-tC195=w$r=Z}51by}w!oDfR0AlVqQD!GQ?&BNkmxArv62Y+|TzENaegUh8)`x^o0(UY^VF|k3d%})` z99DahA(JxoKB@rx3pgNT@=g^2KzO17&$&}O?Sj#>F6;s*|1nGX2s= z@+vSZVislwMG-Ka?s~_2QW0?f`oA+H;&>eZsPI47?Gva+i!U%xhBNfo3g+4)gw08X zj}~x3N)26z8{c{HMHQX2Ws8n4CntY8xqu7tdo)qLA-sr^^N`>W^#bw)m4!NaW)HI$ zrKIG&g9d@Ak?l2lhIQ>V`3o_VJw0SsWWAB0ncsXc#13GvcyUFe_-4t5UVP(T$A4T0GBlK*fSwkEj9*I^D9#e|G0>r|R=7LbvfYBS4w{|ds`Tjzm47ES6mJ$&8 zu*KU8NCS9&(5sd%_;f+R^e;2EaJ-GR*qmJ0R$6WFpF)S?mb{J7w8KU418d!8z!Bqf z3~AZCAKSaI7C|`PBwNG-T|AHW8)FEfK~@$l8T26xnykaSL^vyG1-QNh&zvSjW+e9R zgb=wdvSi{&UspK7I6#9*C2i~(8KIbsBzz{f6scsUFfwwvoX5UYO!N$N`V3;lFH9p! zelN#2znlxSVHhsd7BHqCaFf}n995>Dii@cPqwg;^T)8E~5N=W@+&2q2euw#(s@I)rY z8RSpkkq#k*#)BOYL~Y2iKeM+9t{X-RgCU>r_8^Hm`A!602ShGZlABS2GSzb0Vcxljo6_E-uDp` zjkoBP%ftWz_K#K&dMh)n0pmN~G&fF#Dyk5nnJjETEIJhlL1Z{RQdvEI`*Jk`^MP-rwuw(Gh=20_Y`9G~Hqijlu&i#p!aV)RF0JcmKt zY0brcHicvg|3m|?ZJTP~i3J)80pDeC_MY9dJU5gk!ovL__1nR-YRt!N!j~5^-!)lA zcHm51@L312w;HPU-42)D{{Vj#Y9bvddkx+C>)24rv-39^+|3`y7xYKc`IOB{VC2n? zBaQgQ^6v;2KApo#cOvGQfMDvP_8@LDZ03WE0%Ml2804;83_L2~Hit_x_(>+84mm~^ zS%v-Bin*LQjoh<*ZZvlOrDRf(8&4>P()EoSo{OhuIB1iH-Cu^|%m@u93G;}+L>~SW zDi(5kop#DN-$K1Pb?N}PY+TPspGO}~yilklZZmh?BbKn{w5l``JBEOz%#1M>pck?p z^26`l(!SI~6MyuQ|IspGvj2>Su06-dtmO3KZ7L~N23tsHy{a!VxuL3pLEWq&%a~6> zGPY(!pTQlw*U^xTagEu z=)4$%m^!0@G}@T&+Mwf%9LRH=0AUsTGrAnPlI+>sZ8wu3E1)E)vB2~{{2m4#<|r6+ znQ2G~Rg_gWGDNglt{q#L=Kyf=5S@9@;D20et*1cDP=y9H6N9@LOzVM=3x2cAz~g$) z>cZ%F%LjN=J#3mj{C*zpl}qD<6m3*BQHFn6BPFe`dq^K+2s119ft95>HU@7hEBWyI zMa4{Gqb_6{!UhVQ2L5smk}F7sqR>6gO1@p-Of(=XEuuh@#NWMKfVY^M-+x8|f3Iq7 zfUPt1T)o!Be2LZ`L_V-jr8N?tB*MjsF=R3Zp*ixL>Tv4u;%%aoc`Q;yQ9*EhZZz<$ zIxfJMGeio{YeSYkJgMC-JULfe5>Rsz;isLQup;i@Qm7#!3 zFr-KC4j(a2AhW_YATjRCue(By^6Lgvs-(V&rK(R_2jOjeOu7JBX7M> zK+!Qew3#krrbcQD*;@W1#O95qnD!o<=GeoKO*Hh3ycL-LGiS3PW*^HBmpt4#jKEq9!IhVhJxWq&)&ElV zi^HiECKgsy!IwdKX8mKy7=;NWp2Rf*LB&J{l0VPr_hXoHucJvIvW+jO^?4$M%&g14#@T?b7Z<|3! z`IadFuO2a*Eer31-%Da9x8SDih46@DpFIeH0M_fJ$vDpDCWyA7hcA8j{emm#a0oo} z)$0>_$(wD2f%n2RgT%23_VNw_u~6NEW;8viBpMEGRX%%NDHjTtsfmd#xKm76G12zF z(>e#w1<{_GSVDS!t;2Eg@>5Hv5mCRS)@BsdIGm4wcGkXK1d2z}tVdyHluPW1vDY}#HM;aiPh`HZP&_?CSp{#3h?&gj!y$!|Av!pL?=ch+*&xvMJ1 z2_wAmw0xJrKNocr{H9yR0I+eEtBG0mQG8S7T4T5!E~=QchlF-!C;{JvAD>!!>#wE1 zsB0Q_k;GAKIY_P3F*uvfqP4mg{nre!N_dLNwh-U3D{Wt@iSLL>3Af|o59yNhV(LUg zgdX*oHnc2+093*#1+}tsxi5IGu2Xz>ME^l$|9|GhwnsKIK|uF{xD)e72O&}ZF^RqY zC$%LB<-R8%3FhHG z{FjHz1sxrqSGSR=hnxStc^lc186Xt-0+DB-8uLTslYy9Xh}U&J@(YZK_nf9@I zA*TI39rD)ik4YD%M+OA0P$s5u=()Ssgk#HYj*{()1)E$uY$Bu|pfbLXB1xJ3q!AFnftz4fzZao$=*5{iR$xGQv{($f)3 zk>!<77D8`ncI1^L$)ARs&79ZOQC4B}Q=~d6DT(X70FN)DpN=ooVuoXRS9~BkQ*TDN zriLE_fg0r|wa#7||LNQDKDBcBPu@^Jyy9lgCx~gqv+x^G7VxKL;Zq#_S^m6~?j`+} zJc3x81o!N7V!Qb1vI~iLr}n<{!Fk9^Z>J3E9D5^db@+|wde0`u zD&|))_52f0=z1)}FDnTz{K*Nt@KxeC&Nd=kfoFD;GdD^%b0Xnze2SF|)ZB8z9+ z;_+5I#>=a2ZHx?h){}>zwo1UGD8tA350UBVqX1Bo$^3IhKTFP@g`Okmdzy#0IU|&c zita3^aLd7QYt1 zUzYY1GTZ(B^K12<9BC0}zLmJ`%%{ftp;T(leu8-G|+n`N0B#s%`K z`?b4zzHr+c6+;hiO*5GIO6IINlC1secyBJlg*}lSzSA93$pDm3DD03Hm`QEGb%g1% zwtQUBR-p@wTpzea8LhDnqsbk+-xQ7w5L|C8NcowTIA}}qsXa~J3Urlx^|)JjaTP(z zt~NzINchg385$PvebKz6|Mxj7X*h8cL_N|~h9a(f#;$lrE+JAMMKpXq$&n!v*P>_4 z8xz0wXl~cO@9Xq#=E9U$sC_1nIwF~fMh;XE{fyTAE?V|q;tB+2STovFC|{q}(z42E zV=2~UG!LoSHIQj8(olu|l1w*yJk3+)jlk#VQ)>ROen|5hpuBa4-+*tC^w7??0ym7v zm9d1afr-$0LKCceWGK=(To~=(&@dh__9!3*Y_XQOZ-!%!Xi|v<>Y>E%D8VRumiq=Y zQhO}fvHGh}=-$yO&U3Y^Xv+T0&Ghxo)EHl9aoLEYo8W}Er2kLjjFDxLk!B66hzG~|3hEo_l$whw>xyxBy|uCd{LJbpAZgb2XN9p`2n4-dXl$ zEjedKdJi-IH`dRP`H%Mx(fS#x$LGkn#J?n4mUE-^sG)0b-#L9x!qEc9>v+(Y2+o8m z0l*pJ(F^D$uwvFN7S;j(5SM1op(@T2p{{C!+tP$_h|#d{Q^3wV#6;4R2o;q=RG>*A zcSQb&X14E)W-PHtGn6Pvw7YSs*?JtEcQf5FE|U;Lc6h`auaWw=Pu|J}+sUToAEu@k zpHeO^qof^oi-&f@->>G*mo;~Mt~0%)S z25R5j5AD9u2x=qAvB0D>*F|VOCjj{Ejr3L!S-^rJcib`t!t4PJ=&<%CjiK3hRWm8r z!ld%>DgmZ26a7^xUV3^o3ja|)^u`4y_yD5-BC$pLx+*mBEsLf$AgJ)qOfD>0@fw-y zoXvh5BJU1n+$c*Ry^8)!h+cN~mJV}O*w!pbZ*OTkj$G-1CJ}f-m;tlm7$?x%(m+v@v|TfJMm{^sWFDzKx~)Sg`#yYQ zx51M;;-AxoP-3b=x!74icDRhEfXy1__M7;>sIK0!*taWbYDZmv+_KBDYc`QCCHcDA6b%b{7kw& z8uo@dEnKwKJlxkz27aqs>LHaA(@{7g7*SOsC5Bm?M~b4%JJQ_~U#g+I*rQD!uoi8e zi&V@eTB7JbAtg^m)%BlnuDndbDAoBjtg4Cc<|CpY9OIYPkQ({$Z1=zS$I-0^YRJks z`ipwLkMub{IvF5;O|fr-%J%82J>=)hd&u8z1jx@$lOg^zSvjv?&&&9$n}?GxrVp%X zg4Em%t!Jwj?HI&Wx9lnoq*Gd9vh!j%=AYlzkmr@M&(Ely?(|Coi3;WDI-2}gmOt>Y|p3EOj zHOA67`mJlF%3AV25B6S*eR{_>a%&CHQF4^$$Nu4wX$C<(<~e9G6{A9P5FJ(KNQ(;jF` z7bd@3>{69?a3S)kZ7+a#M7}#=TM_^Rf*2N1&Gt5J$=DepAFf#}8J_#~e;JuqV_q0j}$?3$qq4OTXLzB9#8NIdB! z9o0TO*Kv<3&+Mt$00WBW3lK${4xci!b{0t5nV=Ks|Eb zT~Xfy$BHVXZRCBZwGz%e0lgowO!tzU68>lbF>tWM+UX<}Q8&fE@gL`Q^>uW`xJzm0 z5XJ6!e=j3WbPc@pefLHvfy$>YueQ`Fh%W0ZbvJnp1yS3F);kr-Z*bavalGw|lGa7_ z;-EE8Z%%MEJ30uxnF8pV>8R-70_t=2h}P@+s3EK5I(PhUY#_JJ5Kzavca-U;5c{+q zog)%gt?yCYn7HlEM$Q}4%qetyDpvGZ^`hFo3_Y(x^=(V0?t@epq9ICt`Ek8lnc-|A z8{elMZ+nJ_NmK9_3w>u|e42CJOH#_)#TmSG{6XqU&zMX3-Tc$h54Gy&47d*N6t9wJ zmGDtx%{do_pei%90qUj5tN9%EnVfyd#r*JK%Zb$D0rACNB>yAcu+_$Vu{jp*+*{mr z2h!f_o^c8;d&eUdYf(O^3)Uv?xn4`UGgrSf=6gPg9szOP!H24%=SjvzAw!(rl776& zxe@_`IT7=b;iy2H15K@4?mUvGbF=?(ukq>6j`CPtKqrg zZKLL*8Ae6#t}fq_5u>*ex_Y_6pMu4FcGeVUTWVW<^xq`|O_Pfo^JzkKk#D`5kE^QZ*aLGN{t1Xnr6-ca<{OditN(6Rh(3F zS8r9rAt{DN`>aP4jcyiV#A^C-_4VuTX9^^L4}W46O6wj#eWbg|!Gau6^WE3i`Jsvp z;4lUp=K|4R9|)B?BY8u$h5VEtMqP2PRU`|&>zW43DDHJ1-LUPsQ&Flpc~#yhAw#kR zy|Qngnyw48DyJ*EvMzGaOb@6Ic-?&&>oE(@H%uuS_S_Rcab^{HGDA*r789lHuR~Hu z`x?9D^AGZKV&+~p^3N4#Qo%;zII*9 zl>eMZ>_Caw`=_{W`Cu6lRYyr*=vlL;$>dh6SZ`rjsU1V-tm>S!TDK!f7s#4c(ZEJO zuQO+(<99*vtHxf{FlNHWLu-0-c^3vsMBr*15b)04bda3;poqcosJ79|$S=uvkr zuUQl6)bKbA{v7bt?ncf$oPP@&z{ND`ctYFr2(*knFrtCZ6~UPk$U(;dTFaTe4wNt` zdiN~C=zx$f1-rivBBqbS*#p4^xjqc@B+Lq3OZ@ir_1+p?i8G!cm;5wO$-dvM>~9Z! zvTpfb53OU@>B7=$bK06Q8N+%Wd8Y(W>`!3$;OXoIq$z#rE3d;;j!-+ip^szS`Nr6%0M`)Iie_ zjf=8J`*51d*~KX^(bEuJMO#*!2iS3Gld!+_XBfP9y2A2>4YhcYaHdZ?LvA`Lk%sgylzLLX{O0dJcplPV0M`%o&HH>xk&|P+=k~JPA#e z(mIB?9Z>COd#jR?*6P+-rF)t_&aG+X?u&e+VsRVC;B5?zlp8!MW2We6UV1xh@Ze37Vz1*ilk*?W&IpyyzIfU7PSwc6!Erm zqoOpj30kbk5}N}RhL)*VB$A}d;azH>NP=+)bGpN}{)O+tGce;jDa(B96bN=F4$W>1r9{!{Mq zIaafTAjzcexf8k@Qno-`(rUG2h_|BJmPjvXc52||`wx&wRb$MAvgwj|&nDhUT?eD@ zq%BEX1Ql7YX$HZNTBDge+DuR)@$QSQ(^ko@&6%err4EPc@+64mezVpptVD-#JxU5fZWOa4*v z_w9?sDWNprO-3M+zp3uEDtnQH4kv+?8=ZrW4#2J+s3~ZyCOZglA^znA20fw;G7HE@AoMYS?LVJ zBo@%3Kt^%xULh5ckU}z^Eatc_{~N5uG<=MIqiV##zm`tup4-2&>|^!Qd#1D!q*YL{pZy&^zQRdW%=<9}WC(TscTxS-ni68Kq0H)VWCc_SXZOuh-_ZVJ zv&?P^o!KM^?P6xFvhg4HtPs5Mlr+$jZZI4mk4Kztuer{~?z8g!0ul9@8kU@XS z3C0&ePBzfV9N=UUH*Go#tHxf}KT2z4@4J6^WC8(fe)d>TPTXS2bsCLvr6nh68t$R7 zx9H?pGMdnjGc*2>gg7H!2RSr05up9dIkU^H{%obOulunH`AcuMsFx~yJ~fl?R|!(k zV+5&6{o|`Q?cR_}UA86~zQldRm$NBhlMq`^KU@4{@$-6kEJi z2E9Xr7ap=e(4dpV;);MfY*yf5F+ZeI)X;FGQVle95Cm9lvFnxxbH+*Zmo~YR59;11 zbv{A`Up#RlsJ)(BMC@Ue*UAk1QW$2adPrk9_9HrI15pFyezQW?^Yu_uT42o;0W>eP zsFhZ}v;WcWy6aP>U5L8YG$ncR4Nsujl4kF7ZMEq^uL!n~~QeW|P* zHIuC&)q|{m0(tb}#kG1tRdb8hx6J&kX$7J3*_B6+Een6ONz7dQi-unzf_4guJ%ZI` z*lqhw?rf@n&z{OhgaxgH*Q;-(_>j{pTR7{YcrVo}d_K^I<@vo+x~GFpYA{avH#@=V zI2`U>lFoK&L)o<6lbx1q3S_6jnM$?iO#M}ZG&YI-(3BTs&F<)T-9IS!bki?(0Nm7F0CNwd$M`z7ZuJ4RNYcy z+V8PXN2PzZTqh^j_=rlW!cNFuBxCqvvx=XOHtNkX0={kahc?ROo$aAhHsQM^vmtnm zqw#h3pAWG@3EHo63-rC&>z0#jz?PN~$c}aX3VKVO@39-VdqtebaC+S0tk9dIS?@oB z=zsRd(U8!Ap}0PvQW()<&)ags*1bXzF3wbVNb>o1oiKkYnQ53`O<4MCM_k2 z^_}NEvK@*rX_D*S|&WT^yWGQ+iSIG` zYbR;R2hPHL zA_h%DdYEp1;h*_SL(aXjS!pfm1(g+!x7se1H-($&}-CptlHSBtdogj-;`g=Uv@cj@qD(ivhp@;leC^3->uTGDN#7`+42l?7RXoa>1|%N^?y&-RvDCu2#b2dAsSwd7a1_?<^&sqr8{-ipt%5ZKo-NMXH^vxST>_K9h*2biF$tQUX=EN*94wN1y7FIzMqb2rcSig#@BM5?4dZqw%_ z*{jk$FU`esV3Jj4<`_@ zzffg@;J&3bPm=8y3!_icR5VHHc}avE09_}J?`5SK)wsg6o;PCv)DeV)X6u4J-%?TD z_UZI(l9<*b>b$(9KD{}gg4lc|6ps_0ofS)S<|o5V>C4ise^w7^r_Vol-AU5<$AnG8 z<~qsfqptLD_mY2nDT?3lB+L6qSwr0)d;#~FZqNoXf#+JlI@JD47>c<@Gs6 zev$5(DR0%H20|*|`Kfd)Yo3T)W67MBmNm^-G-ERSFd{Eyw?9v^i9#Qp?FS7Ny*Ga?StCC zmf@W0PK?WuNEjJEGY6ecJvrj<8G#pa(|dE~zxUeq=YAhAjm~nBnbYI9lm8qYE7MN2 z+P?m#Z2^EO<~HP^-ekx0k^)~@skhDFsiBl((SMx^DAsik-X!PAW7VS+ob^0f{>7j! zJn4ug_8OhJZ&yaizu`FfHP@o{#&gy+ewB038(;CVCb2MKM$I!H)RN!cP7j}07_X#3 zG^B)3q&g^%8Eg;zxar26()n|Vs-|63>a=gQW-Ys73sv3ROg8I9V3<-n5hd@l311@) zd&gNwOh`AA-r>v zLAyFYI!2rn^V$S=(e~22cl#N9%5(AW_+glA=c}|1fubgJeG4=sek{ z+>mabg=#qyjX0K9lg;W?1jm0@d#}6>H4AA`TS(`>FbY!nsmQ69-Rr$kx&KbV^0K+n z7mptOQV*2IoAc(*4!u7L&{76IIB)5x18SY{G#mQ9f&DXG=2-1JP}2{Z)FNjZ?o@_o z45_&I!pt9wh~H5DH9Ec24F0jAbOYYAz`Z9i?+W2LcmMk%`Uj^JAd>0P-I$}bEZw5> zk0+uH8@{fms2KUPzkYQsbZnWxwJx3=8ylMroiv__5HJ<3P$mZBB94ff*06h&b)@m# zr^Oqp@U3i|RkP=;o`#<^+w#pSs}%@NTF91%94D`w%?Z4eAd{v&veZ$hVZSJ)Pl67j zT)aX;mb$1Fr6k$CdeSIcB{v$8)qmT{gYRZma2 z5P8|>rQD8TYgS&Thj)r0ZO@JtwM0V1*n>XeHRAY7>C?YWKV_a5{cO|0lWB*wwvX354K&7Et}C%}s8}5Wo8ut6=>z z6AH;8>~A%a$8@HC(~85AKS_I8$?5i{{v0POEH$`2Q`m!zvxu&uuPiuWRc}A=xX2;MuOGt70;q>zQ`q&j% zXHqKu2?W@C{b#s~_b|{-Lf@RTk&%T}UCUik2dLNpVm>ZNwVFUgR*`RI8ReXCl-#&+ zeKQADDYZs39DzK#;syr1-jKJ8A)XTe1l{~}lTboD#6M;fRHHmh+{bK=PLcb7nBpOb z>S~2z-K(Xuqo!RK%eN7Px2I5A^$uuV>mtbhHog zrK9>1CQ;GrbV{RCfA@2KmUA=6W%8C^GA&`@~=h;y$1wUZ1>$p)r12vA9XuBlXKR=1nhSrddog_ z>kIq7+$X=G;!nNr?tcS>CSPf3Y0Q#z>mmieQbH-;Tvm++_*(hK*(jsouy=p5TAqfE zW4n!v8a3>7wD*D}n?4Tq7QZfho+R7Z&tEjQ9`W8OrS|vSNy&_(XE}0uRI@M6rn?`5 zna)Xe5-)jCpC$a&5>`rP;3!_;)SG7rQk?3_3xmC(Q|<0k?@c6#nNSQ8Vx)!Y1Bz&g zM1t2%a!GuuesuS|if3-q5`%vv+SS}6o7+fL!G-3~*N7M17(P$!LcEauTust}=;7Lx z53ZHVHt9o;J{vuj?8}pXk!H>PdwTp~Rc4OeC;#VRu@@oS<*Q92GOC&-k;=)`nO7k1 z+^eeFIvoBvFg}>tkfV=PaQ;*hF5;ZgcByXFDm|};G__2nlp_toi5*&Y4ta`~i}z)b z>7z!C0!5wr*R=!mgz3b$tZ3NkL*;wg&9+#PmlKK93EAr3WKUK$)l7*$*I0M%nJfPU zqS|&cd+}s8Mwyp4_2=-iu=5c_+*?g#bga>wQ&qDUuyCbUEh)6s87xeLvzdOe{*X-k zX4~^Vt-q1Iy`MTx9446+BTz2ifpc@9Gn{gHUfUfRltjAc-u$XpT#Ax$(t@gTe>gql ze5^K9=3q#_3PkJkgKVhb?bu&N@i}4Ti;CEr351WHKnu?EVVqO+05+!cg?V8M*8=jw{zak#n>M~AJ@LDwVt(}^{i(-&-d}IDbi{h z=KBR-8nvJV8!6865?9?4nfPUE5Q$)jc>x^!_D@i)DT_#ya2k8k4s6S@@B;p$3<wCY&R*gO~c}l;DcO{&17#U$f5l1%woX*Co1?H;gLEY zLT*;IzG|E|`o1SJmMOT4!2Mcvy7b*}*vL~Y{-ICu6ZF21-=BQ?;Y*p*S02!^_V=cjN;3j2UyY;AToW@z@VxhHcFHpaod!_GRt>!f4{SfO&`g z?*};6wuHqflub2!F}Bc9YQjjxVcB4rq6|11;mj=&IH_rRf$!pMdzsF1YbR&xl76+I zeV2L+XMdfhJgYkpt;7A%C1&XOwp z!?2U-M7Yn?3YmYY*2r!QlIHo2I@Z5M5705$?7}zuoQVDY?yP~*M-BPfR1Q|@#RUkr zL*fgp=(78tNVXj|+26@hFzWbVM1d}sJzQ{mfypE^MH=G!n$uLg&hP{@Ol%W3ZhlTa zhvKNY{9c*~Y6} z^Kf%@dxYWszJS>q)<>ndHQ`lkm~F8QqwOZD;DN! zxgfl}nP0SO(#?^op$1OAzGUvSbcvs`@1Px97-n(7*h!(65(BOBt<3F#(!?1#jGup) zEn0S4!L5mF%{ccps5E2PaR34sm!J-sV7_^EC)HEF%ye8VgI`DKv+$K}!f~u|4YIiC znCIDjY6Lcqf*B3jOFj&1NTIIWdm_52QJb)~N4K_I;BK#hHG& ze0EM+VN64EQi5K6t7VF~o(5XJoh zT&#now-vPLF9J(J?E?8A2Vu1oieyJPtw8~A6TbdrF=t?z3j{eTko^mehk+e9oawu- zk+))7j6pVR)hZ51a&Esvl>3x(gT?Zc{nEfOCj^n7Aqy2kEmk%uV0?u&HUse7SrG#R@OkuZC+-GMTT&Y8lW^ zYH15FbEbs>Ek`37Zs^PSz5*!y&W+KAMRB%D<_eO?1B)~Y@@R3vsE7dO)&> zq2HP{Mb)g}a$GJG|TTCx%KV)M^t06SE{gR$n_p~m6$ zI@2sZmZ*UWgq6n6e6kjLJwhJSfN(GA(^`VX_xa&Ti#R|zv`h>&eR;(pXd6_y@#c1D zp_0YN07IR=qo|fuHuPahi%m5mK|Oa3>}_y`FaCTZkbUfzPe$8?T4V@@v>A_hdxKxl z4}n0pN>JZw0O!(?Nti9xHK>F3ZCj1_DGfkDj6)aqX=oFo;0YmEM>UYp(){AsXat^P zbqq?8!6{qPJT6hH)Hsr^I>t4t;8o5gR553ZGjHTL1~rAieVyj611xgm)~o8E zmf)BMRj47BsXn{<8C_DdLIU6my#8yOij|tw`E`{#jJYE@#br^B;n8~m1TdVwR2gej zBR#OXR?WOww|TfNiXGpm?nL0_Y9Ly6=0pNy^oOhJ8&W2not#j8mNN`zu9oIfX~IOn z^vjMm__E}2n`-NA^@!q9jc^R#-WCNn=A5%-u{y`_u8&zzY(TSGX#qTf8c^qI0p7{E zk%?rAp-X2ERQQ}3Ym=x0nRuWK`BWF@;?;AFew>l7V{f&AUys>UhaicVjuK1UT=D^D z+XSs5Y#2MWK^|jFZq^$7jpeJO8`(C!MQ2hAT^ZWO`-%)tu{s;e4uU6NpF|aKiJ18G zsHT2rb7bMzpC<%gyXen>?wJ z-J>(40Mfd6BmSXg_|?^ZoM8bhemQ1}5uQc8u@xKf(4Yc!FyNc)>Dy8KviSpx7wj6eaO%Y>b zOUosDqMFpJfjFSfts#+ynW1)|85(jWt$+fz!Yk(>a6_tmX(oGHkmkV^HIWG)V#~oR z+jAogG!#F&n1gSN(sEH?A2g_j8)g_M5M9E$xf76!tOhnA>3~mEX_5AWng>Z^q|H}j zdRi&0=MrAitg1Q!HXY2tE|R^iA(|bTNJz9Hh)dQZB04tlks5Y&f;7e^3r`%19Oiup zG{rn(M)s10=)`>?T$8G`dRa*{N_` zwg=V>w*?{=CaiDyMPgQJZGkHZa?4Ldwgd*oipT=|l|YPBY+74C&FIg_;9#sicGX(C z2|#V;v;J7{5%ii!2z6IGSdSFr#z9@tcCIneII^A%w53HP2B!M=kG3UmEh>#pl<<*> z`)f3gnYqA905W@CWKths^%zvy7v!8RuZpSUBWz`|F$WIBDdV<14Uak7 zms3)|d9Gv$XA59vW@Tk^rV0M6y1#y&&&PWZlPh00gapW*dVj;r`WQ`zgLxH6;~7oA z5xeo|>mTnA`Qy-SZ#bB}d#0C}@4N@=53n}_Xb$){CGrSi_~ph0L95wYALC3?CG%WF z;@iJRZs`1(898v*(%DsOSO6F1g+wI{Dlgm0(BzBgq+IyP!4CwwQ+#S6GLqrgk*4E* zZo@!xT%jxP7qO%Yk0nxmJ7S-E zJjx(9OsAEjsf0OO7E8t>U)c$)c3qO~Zy=)w@O)KwvE)r!CE~EFV57$iN-$usk%3E; zUGLqb zyDF1Ku3S}L{ZoT(Nk;hp2N4Kh&tqA;YD0{mnpo?{kUEULFAj6IuUV3oNY*0Ht?B?v zw%Jr_8A9-VNjqAlDw`4IaJ*1EgVe%5?ZBT%@eG#CMK0K^I3_O#SV`oHO%-k!jxISA zWjl)efP`glHlkWda2-G&vuqBsiUz=kU`G)vudJ*@e64CdKp}BppBnV$)LON#6dD8% zpDCp!QrAHGF^}YeLqGrqpbZEniAnOX}OwqmpD2sX9!*jwKD~NETd49Cb2NQKiQ4|0+w9#Cm%r{6mQYzzM zau0}zO;!&j53tC4tdjTukSs5vG3~Aa`|CE^?Gg6KNdr=L5-wpWT6SRoc@F_Q$*M=T zGFecHxuoG!Qv0aK**OOy*RtCfE;(Swjym~vCObFA`MdIov|{Xc&$y1BdLet!h?gO5`y(at!jChB_B}L#CKi^A(73> z(`+Gj3ERoTCcUk9juR53w^Nh#Sb#~OVA)(2H z^9Xva~d8movPh|#k5f=(b|=3HH}=e)~1#1M6}wc zaRI1gEVEV{_-bS+sTn_D%>`tF;s)+}zcL^c6^ zN8=<4h9OfhwZi&IsI|m~BXv_jWRqN~iGj?+ni$id7@j=n3@brogl(K`N$PVUf{+^= zS*kkC4nPc?MEdUjkN^aaWtJMBtx?yvycyza9tr(v3Gjeh#+wGyO@RKJ}CJV8>QBYRsfQ^dzC4`y# zXs|`h^=0|W5T<2mt}#RbY>e>z32^z`K*IOAeLIOrh$*PO9Y)^*}5>>l2S+) zDCSO`&&UX4fFg=*N772A)!!Gx{M#6V>i8)yS8D5(G<@ae30yCYcoch&Va?|q%GGZt=+gWL^5IZ3p4fF z#y~~x41P{EJ|4{_4U&zIHL2=rk(OrT)m+XISW*pn(^&O@`D!}nSZ#Gg(pn9-UR5(@ z$H4K&i8T_bfVaSt`JUT+UeX%-whk~K&tf8)0LU}2%;ZELYy;j>7X$-xoG^_+&AMiZ zvK{~^^p=EY^vD1=;GZLQWe$Ofz_GDjQx0Gy}~(>PwKbr2x;0EHz8T6Pkg!+q665+7p>Vj>%) zI4D!rHVa%6f`%gv&s43I=%9qi{F3e31kHf`H?&K`qmZ_{oon!Aa&j`EXotoGDnr6r z^elN_sOl&OT-5%Av(mbV2F1Yre$AaGWYcKJSY9fX8;H3Y$p5M6EuT_xZ6XR{l}+2vM4rT0XqcII`DMD zLGyN?wK7upwh0bvgfaMFZdHAA6Ha>0mLq?;05wgbs|U{HX=R8HS&N;ABsQwFeoni8 zK?rHb!VObZNPqpf5P$PHZNp;*BLhU(YFa6WR@hbE0Z~PaQa<1`)eJgI(8GYRs9=!V z22eZ=Q*lbCo#pG())pL*6#dugU{T!VkjQ&f8rclBr(6F7+Mn`Yw1Rtd?HrkN_a0p!k!g4;eHM1eexoN6~yt{hU zfd*@Yu|NXh8rTpS;kGi*VzFh00{K0%!5>R&IFefFPo7v7A;ihXPtrAQi^$)K0Q!cP zw!(&C2po(2VGXi~rbk}P+$t@Owlj@1=2oJ20Dd|Oa~4pSO_{4p zx&_*0W7r-Bh^@_}uC7rBtXX9JP_ll8DkxzAP{VC`p-pKNHKY9MB<&S|b-*aKC=T%l z2^e$<|QR20=5IBfiCorBqqEZUN-Pi>%$J+x74h)NtXQByjhFbnxK&04$TVU1&X5(be) zV@i=SIQCLyuh|2{1thUU4O48Yp+ao4@FNmrV(o6x=dtpJm{40YqiPnKIUx||q!G{_7iavBcmKaPHbTq-bm>xQWw>9FEaKS zC0(Ozl2Z7a!ohEGfyVK~?AiE4im4nBc@fRi6^2$_!YiRh4HhhNCt%&3Q5_SsPMjRy zB)=U+nuH{+VS{mf7enkwRmT}p`mTdK_&n!}4CH~xk@{%D$XO&2f7j~JCgg=05bY7V zRZ8)3vG2Jy0i&51KCAU8D$u%Y5X)mm#nr!Ji)r5C)z}*Rx@^22J0uNkiS`L zSgT2>qWOtoks&bLQ*@Jt^;}bRI5*UGETU=P1xsjY_7~$JPJ@FZ6Z{NDF7c1roFA>7 zA%Fp3&aioDQH~Q=9m$DlNGp~|s=3m_Wb}WIbWvPk2W6cm51}0{vcqfgrPOY&jEXR-L4^nYRE2Bgd z8)qF!X2F^8fJZk z+_iDxI$Oe^as!+bVXG`Nmgnk{5h{qdtiVuvAqZfm0nPw;$!+-k(9A}xlA(=Fjfu98 zLi(FGaklB9wh0U}1J8kR;de+ZPVpoWUr?{pafTq~au>}hOQzalvv9mNUJKC8rbp%Z zQH_sAhS?s4@nibLKxt)ww&{b`qBw(~wZDE_sI39g?6H1p#@CHXXpc`g$%eoi#lQ?^ z9)qGU*#o=e_z>SU!o)x!qea^gG}7=p4ml&W$TJ2VeD(n8pK#VS#_$3@tGDH5nKDee zrq`@iDB_aTimx((lz5Zn_9(-nF$qD@1}3c0Xx25Z$kHYz9MB{!Z?1<1T$7Wp<8=wk zbqRkNYFMsqAkuRs3!xozMluPqHWzkrp0iC0k&fT=(9G;0Q&dx7ay^ICD~q%eAn!yQ zciKlg*oqFF;dgKqc_;ITPVng{ua8d9B-zfRTCi6|*`}A8l!%t$TtLRQSSOmUqcf_3 zFu7L&73?_XxXP6#<`uFELjqQ)uM4uyAyIQ!)3Tgu)NySNQHyAUr z5n#R{I!RrCqa}>_ACZ4JuR0=GtuTZImFd9Ph=jnt%wS+NFX*?^*9S=2TUTeA;36Hdf38ukFx*KUIlmKJhYQ=t3%?JSG9G#$6XX=NtWWPmk3Qmz>UdqkYE9!tKUM*~y4Q3H;dxx+9b+}GZIp7Rd+O_J*(lpwNPBn)tAotb)V})~Azoy90G>@Z zJ_7wB8tX{5@71Uzrp5%I#uj5gqJF`=fLi^NP4jYvI<2sDqPAEk%=OXiiB8C5{0ONA z5ZJ{N(inRtO|jdS*oaJ;31oD`^1dVy|51chA;yU&RnOMa{=A4J8Az_08*M1j8o!wk zn)r1oR_OV1uHl=0tFuUFNFOusIL32ucx_mQg?5Wf>o~c%=qXb}P{)PH($ELr$JbwNT)nC?(8fsSzCT~yhS8K&<(riUF9wo}69GhwFfmO`#(`2l z9IB=#`OK&YAko^=J_tMZX^b`mYYpFp8=g>;-HiDVi-p24foTDRHn6=_VAPSu2Z9lM z`_5QRVz!xsS+yq8wj74W4Ks;S5sEQ!mz*Fg0AW7dqSr^3es=t%iqLGt$R{S1=$cgY z{?83En3luiF{(AjzqYUsIDA^m{YjMJyS`;@5(b_C4psEZJH`Z!zn$ud5w&c9L$$Os z(!fbsk~JHO&;tl<$~_k@!?LFW^xr;nDVftA)kFd$Xmj6v4$?=5!;)xYoHe?c$pk$412!Klhs-|ANCZGQ ztmh7zu6+Eee- zz1PG2dCtHBr$x~QJnQzHsM4VD%IJn5ZRwCP2XI4ZB0HO1YM2NU*L?NRKhM-QJS4Tm zQU8lE35$m&EcETXYYp5McLy9l%n}n$4jA9Ut8kgwyZnv9h0|Y;+rBp1enL71=7_=s zt;6)i*e#RT#YyZ9+jE2Vtd;4K^`&>-2`q@ZuU(t(8R@2A8h5O^#7gD*cSm zze;9FaBg_#{o82TD5Ps6kDvPSYKkyx(v;utYcK{>FP1fL8hjK84kPXWvKY+T zWspeNq)MiIc5uaooN-UC(p=#r+k$!ZE3+hrSCkuWlM;z_t!jxVKM7$PxNa! zqqUt`IFKQWV?J1wRAejhUAp*t;nKlf%Z|tTKitP`oyALv;aQrK(xnTaP-Eo)8cT+R zQ0?rKUz!q<9U$EXXXEK7DOeEG&$#x_fzrTZGkijna;2d#116z9TUPdwZi>HPnLOT4 zl_7kgv#Yxz6P4>GFD7+BME)k+wjerbYcoH_P&GWUS_xT?3>YV;1g*IVn{;#O@W!1a zy5U)D0jq~6R6~X#4SHE~)>7X}4lO{dt0lW@BMwg$Dq7b?Y>wu6gL2 zjO9jVPxgDY8vO`~<{?2fDw~;}!*gdR*?tI+ereoj%-Sfi%J>^s&yr{4A0L{KFR@nh zYu?Fb)c(?jBTOy-xh;puTYe&!vC3p4H~(G|cd+F3s0os;$xEAmceecf^bTuoVZXlH zRKo)PqRqM+2tFqBR%uwE^sBg1=6*Om1X%g(e#aWC0%cznJi`o}u~ixv*zdlPDkT5& z^Vdxv(&N(%{UpSi_SE@IrX%lEKP#W(VPkv-UIl)mnt%&1QaLqnUQFU-r3>Mt@dl*<or1z46d@A_4FuP({11ig}iCA_QlZB1s+_=X_tD_#Z6((aXPIkAHu!f6wDg0Q`l^wdHK13E2ZDG)mZ=u3F}_w+n_Tp2?d+i7rd0t z3-^5odX4d@&al3qUYQNcrt9h~S*$1)3H<#v#tWZecK=UN7Oh{p`xX`@z2oH{A1{yV zXn$6Qiyh2a-jZ*JtDlGV&3`gLk|#G)el9x0Spd;p_|>sNUjv}mCJ2!QA5YZFtI6D* z2Pqqbr4_dqw3*uc#2Tf7?rf7(duU)fDoIXcXRIw5_rJ7xaY2`DuU+^0-ob&Or&`t* zSerZd=>ClFslEk_ZB{g4%;XrMShbQQg(Yp|;<8AqSif(myvfQli!_UW;5EJWwC)b+ z*&oXWQhs~p_xghUBz!&Rmd~8!g_!}8_A$~^dzY0@uD4BF`OeISsV5&uJmKOmXOZW3 zWrxFO%=H04&gO?pTDFL^lFs+yXz;*Qt^l3mN8J2ZSR(TGATfqmP9d=+B)wjwl_;+! zyytntR|`0^uDHf-x=8s--(Rh)4v4$D%ec?@<{?mJxpP9CD*sYPNf6WwLbMaeYnUtF7t0)usp}_q7AWR_< zY0lD7UJLADkycnbO0rD3=>p`+*^CCib47P+0GpbX_yU4pE%tXt&IY&B=Oy>SdFDij zaEkUCAK%s%hcqMtFgN#ytjD2<#4S$%n+t4WtM#7q!lh=Mk5ULz9Gd7w{!#E(IPyF8<}HxR_%E`?t-jE|4Gk75Z zr`&#||DmEYYF4sFCXfut7_+2$1NfgtZ|uHU{7v6;z0%PJc#cL#D>QGppjK&&kiI4D zir8YM<*l)b@-oDz84H<9Kn3QJ~YsUzb6?WIdYrdrk&bzXhFY2w9Ifk-6xRop!U z4*Pbyct1sorSrEZt?pQ3|3qc`@TFS``K#aISmsV(pMs_LR16E6Q}0Liej!xlUfrF0 zuIO|K&p&zN&D|amOCTL=8?*Qut41xqeBgqON{d5Zd<(2h7sr4C?UV;S>Aq)G-xVa= zj=h&(E|lVa z`~}!{j!i<8VY_BnpFmaIr_)P50YF=wr6$$-`X3)}Inhp`!Okfx$HIuuwex=|t|gZM zGWeo#U}p*9`qI)q$odwYyZEZmss$D=U&Dt9pv$+e+?Yz~zI&u&K<^!VG zY{gR-C`4_*aes{eTW+~wi@C*>Ta~jMDpKPT`9bA>9?(Juchz6IlI+kOE}A?b4gVpQ zhiivkBkx6e?~i|R?$>HCJ``Y(Q27_9%?KFd15A9lg1HvsX*?<)JVkmUt^Av{Gd;JmV zzF%|!^Q_9=TJ)BjQ3M18&qdxGJg>0mW-VB-Z=a8T@3Iz??Vb9SkT)qy^RAciAoBl# z2d_ZtQvR9Bpp z8NgWw+;f|PNCQ>{e1+HlpmO*b=BugsN8~>eVo-VD9uJFBopf;BtM6{2HEJz+ULN45 zbnj>A`nUh|efN<-gzavQ;zScBxFZ*_4C5JvE_lVtF?BA*uR{mrfA|(wR`?6En(W(g%UFG zBxW;`%jyiL*>FF7+H0hk?l-bj_v{ZzE?U3LEBUH;JB=~Q@T^8)`JQp(7 z-`wKvZupG9i#SCo)9-J97pJ4=S8$ zAtAC@>(H3>Jx})U9nU&#;o4=f8N69cST)bZi`DHeH^cPxx1r-Qh^8b38|3Aln zu|HA)9#Y?Qaf3)xdk-Pr{Dnmb3>V8&E0mVH`ev-8E{;+CfX+t`y{@R(?3rH$NF|x^ z$T4?$K?QP!Tg}SR7gV+v@s_0(!v+Lft>n*5dk0s8=8&Wh20BOJcau-ycu7dDxGiWU z%Ek99Ec-(CSUvo7obN%nhf3f{y|MaBk_?Y=#ynB2&`C~t^z;l1cHS2-aqO>$)-iqav z|Fu}3y=kkptp{D(gYN7>d!DED=|tS9_&(?Ow064rjrm@(IwyXOSpIYT7R$x4XX5`u|J$FZPevUj^W&%!{9NJX|jH1Iu0OK>^YU3&N3hk#_M1>cX}5MK}Mt z?TyBtD|bDQ<0kid(^_J^+FT~m9OieEpGQ7S#e9Y^aNpmv{y#@wul%R`p9#1`{&$p= zYo!sm{J(}q4d!^BrwGvh0Ds-*Zq7q-6)oK zk0-DFgKPculsngxp8U!c%c;Ev{4$BO((-&9=+z>vu;}GDiFSX#75pUap7FB|PlI%q zm*eU9;NW19|44>@UGX3G(`)8`Yf;KI{AbZUR9cGt_xI=&^lqhB|2>NSwDNq4_`Cw= ztCB8$yGSp==)iPeCDMl}KLp;bKhXIGdXHG{Rm}6*BF)mr ze?k3w-cR`t_WySH4|(7{|9kd_9^N@%Z>8A3pU-#F5|Q5LqTTxV4UiYi08FRu_4&gs zUu>kat8hPw^w6)oO-Sgo9{Ltq?nPflxrVBT-S6*z0FPTe^s<)-02DlQ z&-!)KdhvM{ulF7=RC-+B{9mK?UjONO@IUeY^Cg(y=n%2L!cR=B-2r$;550XqWyOCB zJ?TXL>ZM-iRX^eX*xwre=l@;))A``dU+9Z&e?JOmO!v!T`F}pWa5dPUC)T$o|KGaq z`M<5l{9mK~d-K1S|JTp?Pe(~F|Np1?f9ATM|NDB(|82eV-)q0{+u%Re@9y*eR>*^2 zCjTvOVENx6uAkv2zBuesq468ne?I*`um5LKu5bOX=lNf2$+MLIWgQM!LnT{yp0p0eb~9QE;OD=X$gM_2hp~`#-gpgSohz(-}aR)MAzc z6RS7v*@eTORy%dzePD-c!F?$S)d?=DB~87Wu-ing73a{_li4rKf*< zG)UXw?qB%#YWOx!JU55_2mY_S+_|2bYj8mCS|42Jb2V;xLjCO!{q635CFBEvfEMqk z{+HL%D2KrIl;e3xvzw;li?e#u$fs3S>$Tn>FG`-Le$M*yIqv$>@e-hrx@kH-Ycalm ztMlLKuhT5xa`BJ)_Z<3aUlv6Hm1UiZHPeM9L**Azkj2=K%Ub(E|t zQr0)SzfZ@bM7O6+d|xX34X*5q?GkCK@1-9>_@h_*!2aJX|9>ibt z7W<3xKiARZ)}Lv)Q0pB}5w4w+l~E|(e;4?T&Q2C-Iv(08dG~rzxYeT7U&i$A=Ep-Q z2fOn`dJ^J?z@Bp=P1kQ39Ck%o0e3EEBJENb?8I^^UwFPPSfuItUJHdyq+=@=YHz%8uY3OQ-o8+K;zV1U zSl-KjSNyMN|No`@=P>{EEiG<-Iy0qu&0jkI6+QOTtG(na)xYPod)5P&K3)wG;1oBI zH+28ziSMA}jc@bBcPK4B8ibF!@2B=Eibo(mzXS4~CdU$KI$kO(ua*CPetvHMgH*uQi<@JHlcH1<UXe#${Iq@7cl^iSv;U@ATB$zN zDe{BbZ=K!M%^$jdij8gFBbFCbq*mmft97rZ)Sp|p+HMxhYcT(^fbS#H-TJ#*UiVxN zM($m!<(Ds*`*ZjAeBQa`O#4loVr&e4m?^7%2`fYa0i=`Fepgr>bj*1D_ z&`X{7d&-^9w|UE-aIMTs-cbIV7klJ`qGGB64eV$0=30~$kUg&uq*wy|0sVE2K zE}w$${R8nHz5I7Auh6glXZ;WMR4VV6iv3UVb>Ly|mfzqO0z$m?anL3Y4Qs8_fk1rz z07cUB+Q0qrV~ic%?$*CD;J+>Kxx2*sU35WV&5Bmz>G^C23)Bh=dah#eb_6LjJ z!DMvL$6rd{vK{R4(!a-m-z4p5n)v>??}PTT?>zWEOMurgN-U@2LDFJ&-%n}%ngBQd zd^D8()ZyRx9>U_UUs7LKvk1i_6rWdGzRV;PVB|WD|4#!xpLTmCzhLzbRTOWtd;jOP zU#Iw2d3v!werbR9y#FC+=h*JM`}f$#De`v74mbTe=velcn?4TXUJUs>Tl_wyz3)GM zGDU96TkXET=l6aoO{2q5y-M+W6yKIXw#cz5z#}o)_EY&l?H#2165s#dP6s#+u5e6V zQBLt7l?v@zvHhGSU#mA0w>=%JF`@A4V)^Zeze0Z%i?rAuKS#g38UACz!ES!dsDL<@ zNWADWwSCNRH~si#ja)E$?7xrW`O8G^E+1~$AM!wphyHutU*n2j3Kr`J?;l!!Kar;X zJ#F!RWYuM-)bNFUh}xU;?mM^1c=S)pj!$0*{%6eO|J(Wf_v%0C#K9Hiz}vdTh~4)# zp1(~1INyP#$ETuyh@^(U=^ffXo8lA}ir6W+Ec`&euENt)wn1c<)yhM*b-n(~{{Z?p)f zZt$Xi_h+Fh(2M5Fg{r=wo$;Z#pQH#?N<5mj5bQ(1@+ahjKTtf$DbNSanBYThbK!lS zA3?}W(74rkvH0D~zuxie8V$YkxpzMF%7b2c*eefv<)NzwdgWoSJnWT+z4Gv1Ef4j? z>{3R1#SrZQ7C*hyuy-2Lu|O{tKmW{lDBzrCzj*pCdO6dQ@^v^kc3rhjv!>oG(i>g( zXNWY5fBZAw|5rb+gBgo&3s*=M!e)XroK_smQJCu+&mfITP8DEur_77Ja=CfViM@}+ zqhS=LxxK5oU9)HJ;NxFi6go<#&B~M1NamcQ&kx=gi(`X1dFX`hi^8lU%;rC)e`;Zr zgjZnrq}jB-`KN12)&(gfW!0ei~8rs@6WwY(w+9Cvm~FyM+dYHIY0TlLa=GMYn5~nA%ScmIQ_|V_`mGs19=u@dQ*iu){BX_e z^z^RSGs*TLLP69dq$M(&33EgHf&7T?KeXRdF?^i|oj zZ#W93PFEnU(CrG04<`1?|Lb@8;_}lwkXDEZV5ETucTJ;dq?W=AiKxk6J*`~M-cidh z+`r;0q%nx=HzG8YKf5+*+{@B8l!nFQiQM03AksAXn!c}6S|)4gG1jc}dp}j93Ca<0 zv&6CZd!J$as;&wf3c@v~@8iRT7UYB=dWNgmuZ9=*&R4n~HXcoW($QM-miqpMv&$zU ztxx{6$HUGIKw6z|)A>~w_nsP??6^SF>PX{*gW0E_G#=YzAJU2Wfv7R}#o}MT#(a3A zk+y&NSCrpzxNhCCOZxP{mcy5}v<`UT1#=mW0gz_suVDy7P1RSMiQq@8fx_{rxOS=3FZ>gpFmApaN8FuVF4COkuGB)*G20$=k=B#aJ8B5I@1iS>0Ec6)InW6__b)EcdAXfYH}t%aVSZx! zIm?Fp7F>9x^J4M)*KPkpGlveHeH&(%KKzfKr+_xS(UwqJ=f#St&weYaR29gZR4#^J6% zXQ9BP+PpV@Pu+IzzWeTcv3)<~{}+d^g{=zz z$TdY=BQ*TPKSxjM(SGVy@ULt?UH|UAH_i=ekGU)MhhlU2SOI&KpQE)s%6rm3 zdA_2@`z!znqTlP5f7Hz)z^QAw`j>TecDFS7Ka_{v`cKdGUttN?nBm7Jw)Zf?03BT$ z-R-AgK}wk?OtstX(<`=6d$%LaqDU(&+v8-|t%V?!U;j<|PtWn+bNtdUsEZjH*u7#R;-d3I!br!i~s1zG?eqh-(v{udA4-J#_NO5s{{0r3$H3@}JZGj&hE(UKQ)dfuD3c zF4DBUl9s$ek#_Re?%_8bFT|1QhW&DuhsOtt_ajVG`;6E7=y-FcVfqgl{|dvTB^R%O zt(lyO@$POv2bh68ulmz4GAxho@}4w@u&8*ia+-Door??qiOW6T{%!5QJ9X&Lp@7zK z)yL`P*zSRCqi(x&10a^uFo;gCFzUJQ=WF?M^5@0!2j52+*6Zu`iS)`k^i5XUJdvhh z7ZR`cIlmX(=HCC%{T0m;?W)cH;d^r9ZG5nMJRfOCpBKc2V$dUU_n4zI|ENsp#+mTaef&Qtac8@15oHc7Vg884z1 z8TrR4zpO;bH+~8_E&n)mi*}%k-lO*KDf69fnHWlZSqtcnyyH7iZUsH?95$8x?s2|P zLYDF|M}!Y)n)O2{CwV+CU+!|dESQJ>q8rZci^bn~Q}^in_1fS2Jy#F(_V<71cw>nk zb|Y~V|I5UN_`zQ~Y$gXe#cHtl{6;JbnDu2MeYdN8wn+cd_xHSC4sULX{xNV7jxq1Q zV58Z)!`Fw($9_KQEt??R-BGfkV6&pSx_|4-TLXovhYyvk)#MS99D!rc_lAP!)KXb|aM&umZ`a`C8?Y?n*zoW6 z&!123o&Uz({BblJ5_YXJAui^o{IMUAmy!L_XfjryyJ;wQ_Ql?*U>Ooub z{HQ%Yg=VtzBuYyp7Ixx}UZdMGQcZMXIaSNd zCpWm4Z6%_caDTD*efmCpeir`Ed9nCS+u@=-%aquDs`fbhzxxguj7WT!2R$F^Uc+{5*ce&0R*y4%NDLbYAw%1h$+6%`ZW1e`O8G-vV21lTTcSA;>FHmJULYk|ZZ%I~SQJOdlfU=e|K-@H{*2!J2ghH}?{hGt=<}-e zp7$@(N@o7?S&^n@Are1ODbh;I7h_evfwKRr?<+0a=bK3w?Dnn^L$_@;S=U7CYq{TZ z?(s*n^U3I~zp(w~Cn0?H<_~i5KisW0(`fJN*|Uqq?_b(NNPU2;&YSMk=Pea!I)9XH ze7yd#P4=S*u>0T6e^=`~^HD7<$R8xCos~R)%Q9h8JZPGGkV@3smkL#C(9UdgpnVUU zB9GGhQD2hD^EZ>*X>?ea7WJWMusz@Z@21ss<(G)H_=y@2LA_mg-hI0AoGXa+C(B4& zw|9vD1l-?N89d;~_Zt$7f7{iHVX2Vhr44B-w|_9BwUT;o6q4ARhdJ*r3!^mNKRbT~ z);w^Y4*OtSLh6vg2iuS!64sLscIk<2NzI`CK^j<-_Jl7J%V2M|^%g*yjEGy0^B4FpPDl zIIO}?w5GPS2sz^OJMjHEK!FpVr}goEo=!`7-nw<-^YD&HZI=xiCqD1|KI)&b!ZqxB zKHpigMr|fZH;T{eP+uka^U>W0(fHi~&fOJlzsNu^6H`zSM*k@bw6kSNZQMN)-2204 zTQHJIY|Hw(GB@FGYzYWoJB9uO^$59K|F@D-zux^Be*-@)JmTkX$hHkDzUjf|tA2il z_go{|LWy_27ama*?KIa`4ybua3Ma^mb}p_PAgkOWuB*gq73nqy(2}}~DzaO|8$6g6 zDI$)a-o;~C7kcwxK+spI|F-8&Sz@S-O1jdc8C*UhJ^zd+g;*I1_593F#A4Eub@0oL z@}7fbPCfR|`&;qK|LP)v*C!;L=y@Qs=TE|a`17)~ZJ}isdYb$<8P?=en211%@-EJE)JM@d|R$*l3^yK=w2nvSG9KvjiI%wu7^66cd z8qo0CWC4>;)S*yl)D*_Dofj&!UwyUT%+Yv9{g8$gkYY!@yRF+TT}6b6L$We7px%G_ z$|H&RQp4WqhAS>2rMX8`R^gxOJyWaj@2}Hg3O9<;P?kg$qn%mK!lrCZwn&xSTGW2O zUM_eBiJmn%FS_~flGFCzb-d^I!VO8vg}vN%BiaGd;tLhCj#24pTm3o->F()^A500ZRYS)@^Hnb(gCA6pubQt04ogq*fAV8 z1*WQ6T6{M)!ETY~^3c$?YBoM?i*an-=kj1%;cd3%QnS=y4opjIX8~Ye^r#DU8{@9e>u#-enczZr;*FjM z-dOYp;ZZ-h?QQ{?uQvmU4@Gjo~bTPw?UYe;ioim6t`@Y7)HWCg2G^_Xp* z%SW5$kmm3d{7K&XBpXIxTRDlaOgYms+zjqLZ1w4fEDn7zZtitlYDgmK4_#%}UWeOe z1%p<{B=KcT8Mrpu>2gcL<5-&|1xJvd;Tpj^LP(lpN8ql0AHMkrRqFf3xddIjS^MWDl<61`nvvE?ou@T>=i?w@sB(2)DrD& ziMO4~@~!DN@@sDCV7jm`IrEpEHCc=PEhOC!;rGA+vveaYf??iUbm*ay0W+Tg+SqL* zVgEA0ATNzd-m%3mEJCsJ>9AO0UC|2~A`i?wu|RU7Cm8)%9V#+U{=*0Ggk$_k2J6l9#ky{>hDo> zh2r6xpv9==;S%m#F(zJoVDLyisIk~ByP0zTVAV~H=jEI38NH;uC@a!5KUD~quWP~d4%1u)g7?K8Yq`{U*SbFuMG^1BPJZcVrmbO4- z;6;pr!68s7vGs+wbDVenjHSSp~Xd-v`%NKv$clEe`zN6;r&{~Q(iqvEmqJvO{?xz|f2M~K-*Kcy|n<|&2cJ?XOW z>w}q}*F8qc(|$5IvTr<_;v&gH=8jE$iC{|dEV?a-6QqIZ9HlnZetp-h7iRD8nL7Bk z*l%zYxNoW9+i*3peB{vw<4fZ5+B`|o5~P$2=O^-J$yJ2e*RZ2%B(%ZWt53je*nw?o zf?$PKR>%xvYgmu3$ECP{i380lUa|@L#EV;B>8*WOlAKQAyWu^e(p6mk@An>9z32<+ zOV2<;$?hA{`CogUd9x&e*upJj!d0iOKhZPegj0+zU+w+wo`6Ipb254A-)?kCUu+ag zBzlnxE3FPt2`pa!SoS}%6bZ@GQ>t|dxEXoo>xh(OqARIL*`uTNmt4ea+8Ns#*tZemW$w1w;46&sQy6x0Y(g~=i-q!^R7Lu0NKtIjNl3|Ke2X z-{5|7w&l&dDVqus+3=x+_O@nK%7tgeqbk|oY3_BRV!a`RjsAm@VqBH4_zq^AJn}nr z^vE5bf05;DxZsiS--q9w$HphC2$p+|{GlS~+Vm0|KdvIIz7rixG?Quh(GqsbR4s{o zTU$F5KXGv^RvEb0R^tu#UVY?S_0><0G*lWPIk+Z9-Zv$i;;SB&k>t0(UKOQl*-~RR zv(V<(lj#)6A;pw0B;ix(>fYy8S6vP`DJ|#HBu1`p6d!%?$CVa@gd11SI~*?Of1>IA zx*r!@CtXNZ^RC9=ubFlmz4>$rh4~uAEU9PR$Fpm4)~6@mH*o0u?5Mt3w}z5A5q%_@ zQds!2^aLHrUryIhvwjVvJLlhSh`xSc|27C(0A3QNJXgc=_o?rjRQ~XC-#fm+XT?EF zOY-v4it=#iElM&P86R$yQ*J z?LE=eF*mF?h|T~;Ub6!$`Bh}QMRH!ec%9`=BAH7&SGH_Tq5r38L z^Q}9P9q{$*jFmTu9L|;Uexq<~Z_?zfK)~z0he{47$jbix=!3$)FMDQ@N7YD)FubXE za42!&)yBt;KP!G-KQUjMQl74u+9&Omu5XP0wZZK~NtrDFw(OuvamRBbQA0diN=!lb z5;ZkX?NAvVt}BJ(`gzLXa&*u_xiTJ=f)tn))wsjVPowRt%aSDqAc zNSScWDSj;pv3za1j6#$)t^e@GpJzWfzoYgZNiI)gofoDYd)Q=mCDOv;#68bd7dppS+oeQ+gUmkkvwOKnES$6XoO+{da( zUrVQ?&o-Wu(LL&g|4gD397QR5sXzXj-TUhHT$#>~99L=XdkCDzI}P#vl9f(}3lYWA zQuaS7t~R{t@yFK->f{~u{knnOX=$HaddEKa-qgW6dEeQR98pgg9rx~@nC-ZCO+OuR z#+4jy(mInXry?q+SO4H&A3@~L{WaR>63Yo(J^AllS;FgCTmY{qbIVWW1QfkF4}WfO zx-LscY@Cai5)Z26Cg%@PvEM0v`uij`E-t8EGOnXXAmJ{!+EaUT_Jcn!@qTACZZnBn z5>rTCrBX9tCuyp6RbP1yl0SK*p|h*2gPI)H&lL3Xiw$jULv4+}y!NGjSxU@9{^_mh zIl5=E9eime%{`vWL98yHUE?RCdJS>N^ABQ*bXU!eO592NKbEdS;C@S5N<32q{`QC* z%89JCC+M0?OE)$rPdhq@|QV!2)vM=`B_agxEHCnF*QA#|+A9(WYbJqz)zV^J*JGn^PU5W!r zRdymBj>_Ewp7gII>22?|eB}!%4GS>(oov%Yl%>j7?vbHtgdQG9UgI;#X?uQ-$AlAd z8z1mtZ_4fGR=6oFG|E%o{^GKDc%x*npT-!;S$;{voZEJNp9Beaug8ej*Lf2R?+z)9 z_G zSjjk0V#^AA%`767mG{~>lp1t+qzTpf)6xjI_osC&P|Xnq1=MnfEYXtfp#PDY&C$eN zp9>qaJXnF0l7axfs6g@@CDzxx@%JKwM8yxSpv8|BTPRi8S>3_`w_Em2&jZ$SO!w@a zjH=|)E7^RN?5UO6G;7J3jMgZRM%1+#?uO_(a&u9{2tv7httE|1`I43%6>cQ+WUA}tL}E2USzNh*73?YLSt)*5 zNNjmjhOyZZQ1P6g*DR@v#ef_N2CgJWuc$4&PLn@1!RYV|SYFYjsrO(^%#GaDikDH& zh>S4CSO1g9mR9?Y3TQq)yis_=5P1`T^y}oMhJ9N1Zq|S9P@a}7DD2pkuwVnBC1Wvs zF>iE}7Q13eih_P!^~GT!_kZ^S;ImB^Bx+N5ilXpv&&K&Z_ho*u+RAN*!f|ok!!+!0Iz5~>Q6xJ>miEgY1Mo|0(gMA9Q^3A6xksS1;%mPGyZ zHonFj)~7T#qnzDP2;-ui?5GyUUPlQVcJ}K^J)Uy(CfZ31E`3Jx7Fk@Hf41kKP|NDqC=F7fbCc>7{G~xd z7FFTf-%CX_7QA;FJo3bQ9_Xfud)8z^Vl3rarQK{?UvmZ_*8YTsMDnzg^rj)DQ~3PO zM-VD6U$TDOf7eR-BWJItp_9Z~Mx#<`37058(y(Fc)(T>!M^ZlF8{E7dp$bSW4m+-= zxqQM{T9aK=c}>MQp(JG}SzJHm<>LNI>CQ?;wF_y|qlY)fzql-Ynv2kZ*AE<^7zmnN zRjpomk>oM)uqB&O19f&<>iN5>=!cQ{a-{`!;^gTb4OK2nZFHqop<`FWXYpAoZ_1Kk zQ`lhuSnz#`2W(z;q@htuKwRPEKm~67G1@cqnc}EuXL>Ucl0-99Df!Csa!*NC z@1#EIo8QTGvpgyI)Gs|#Q!8QvmL#%u;u(#}4ADPpjdB}YdBT;R|2YT0Qzq7E9bPQC z4!ov%Fhis8FnkObXoHC5WWQCz=qoh0O`baRuXzYfdhx{<+2{}T4?oPry*ug+zUu9= zSBO2IsaiiV_?N6-pY+(cc1xi0*DUT?)6i2lKQP<--R|83=BQI%pt6bj<1VCl=*#z~ z4*o?mXnh0>{89bFlsTSXA^7^|sIb|&h26vYEjq$wAZcakK$_evOjL2hQeJUA}V}u%P?rn9NaPeH{>O<^a)N zZ!ADk$E2V9+5t=4b8546aj{uLebcn1esvBID-ytBb39rTbZH_)$an zTdY!HY!&p%lPB};dDlMpXU(96N)YslXa4!?#tXkbc=oRiR_>)rsf7)<&EQZ5no7E2 zLA3r*cK8G^-|LEM3JVK$%?AEM?3HBn#71A@Y>-*+1nw}q>ZW^^IhwJ6*{vmFr&H0s z6i3Z)g5ldYoGF?@{w0Da;Z7$f8N}8ZDF@fM48A^_Aqu$4n1U#>v{G!}eDZ&%C=chA zOeWm!z$055a1Onlj_e;Qm>_+V-AnD$f@coc5@&CHqJHpw-?1yJCx%ZYcsE_Su~C5f zZz7TrSni(Gn$7nSi7hwpK$hrf(@DkTQZ(WcgnvBz${))5OnC8u)$q*E4-FiIg*i z)RbQRr3PL!`|K=m$*Fxc)(wwot{!8^G3Cj(D&=^ODR_ovGZulKMmnF!>@))w^l{&)qL|=>cQ%t>0d-;M9YsDgosyWAEfucEY~{`u^@)Vg)_^ zQ`Z584ScH6sKHkj5sKQFt6G0>QC&JxVzQ${ibL;aJP^zioWy+_de*G2l7PVw^=xH# z82Dz@q<8N!#J#$OlsvB2cB9EeL(jU*zuUMEcol8u@mxU<#OY95FlgpG??$=C5Vw4|?Un8UK-P#QyR?7GG;XPE4RB z&x<1^xsDT0M<@1WUocK;j%?fe2`%i+>OJL6n22f;0FMkI!n%lFp22R|;E2kSUhXmU zX3t+t=d3w&Xuu@wA)2)LO15fpQ+vuUYh+HrE0r~ADUyq0^hNOmL$S|br!d{rC;L}Q za2j!Oqa~65z`(|<%d5@3t|JXucFJRp=<`z>v76YB-=kmPDnN3@*V>Ha7PI*-BohxbmD%m&5HCS7@QA-$0AUWlNAl7%QZI1~AS4|wQ7;?oJeoV{ScM1jj^qHpR@n5q78l=0(IhobKI;Y~iug zf+62A-zkD7&&oGGJF$TNy2SIjHlwL^>gm+}%9{8xgJ74XofkhFJiPaWr~&xY2qot} ztv_A;NHI+-`wjd;AP_fhbolYadnO$W9;4It4R}Uwi$!pawoz#n>|s1XdEq^=4{Tam z4ph(P-R`wUzbnz8omMdQUjnM9OJWmapU_Q|RMV?T{A+V{+i9l6IRZ?`tOaxqYwUU z5VvB6YcoJZ3WYj4SOFgw@)W9 zyg?8l>=OyUBnz=6Xs@(!`En|mPtXirxDk~`p9M;$S=j*(RPJvEX==pZz*`C_LKTdQ7K#_d56LRMUI$<$!z}%~^&DD{} zBv-Y(nVX<#1X|lkE~!(4f3aabwy=qbtb-cb0!*qp4HLg+~T;9{2AcO@0=?Z3? zTZ-ne%o)tR{;TXX!fA*%XQc6n+HY9%amA04`o)r|r?|YYdzEl;lp#$h_ zZ~}!APzIhS2RltCUn2+=aIm2e>qP$esE%m#zLi4c0b~hOe^qeM#6>b729j6tdc#?YTSlC8bVDZL zam~}aOtrt1S0D7h^n~~&l8Z)+5kY}bl>Xy!-XgZLWi|qMdK%UVH3ChC4+X3mSuz82~&cbn?dS zm6rIuDn8wQZyOulnqEfeVEtJmW&fU4WFpre?N)3nnc8 z%M*dQPds$&mrCg?Xmw2bDz!O$g7_bryRI%PDeK7i@r!?b|HZqjPTuV~P1+-0*57#4 z5LuO((f6HPZiZn1I!x1f)d%J|sL^4tG_T*xyW~&rdaFV+{gn++<;a)Rxjmcua&}G$ z&QA^27#?o=<4M|HbDGDHD%|dJlkg$&Ce^2vD1!Hb%AWg6QYQJSB%WHx+%;(fFb;d= zFOBr9`M9Tce(Kzz6jy>t+S{ltq>NDALCs$~^lr+}?kR86;_1os;e%3K6t}0(YZ)*y zLJKZXHMKEO{gS$5EfK7RF^jH_P)M5`yO0sQ4-ZvusetsMz_X_-R9cC{DIjMbw>YWN@|cMyfk-(^v0)+Ab&|gEakb5^?|{COK6@bLmwnK5>1S`x z!1)`Ukk&l8>XxOiWp7M`W;gT+z7(d!s1qZ=a`oz4a_RVx+imhI4p$_TyNxPFoc0zy z`|Ks+V`zGLF{rXKVwY|tr-IQEHn>7>TD16nz1H}i{9$+n=YdUEVDuT+Q0q>1B( z^qi!B>8mRyvGxA+!ed4^Vd}k2lH^HWLRGj*e#id%>WbYV2|E6%1(Q)|HuR%`y$MK0 z8)CvyaI21v&Mr#DS3||JjCS4#j1DuMGFVgv8fm2R5h zqe@Kylub7oqArj0=Bt>hyN4%}-LsN^7xf)`Z|bpCc7)cgDqHzmKu=qK^K!gr!VkHg zd}UeXI!e;KwQ>!ALtn7KRNIOzW=^WYyVXo!s!Q3aDr8yd6St8xh1X^jMuWvYrszVp z<$_KgyH|T#Y>^@2jWdEiHKiFHzHj>@sWJ`4#5-&?dP zs3l#!fGh}Ol|^!04-%7IE_uf;7)x<)fmAUiT_`Yd({OwJk~-GWu%kW$6%wKL*G3Oa zY+k*%{--2$A@Tg%&t-lVfP!j*XQWE@k4ux#RJXhqj65d$ecj@^%0R#*kl0kWzE(#z zzF9|yo9RfE+U!eEB$KmW!Y>tqA^mo$VWZtqNFqeiwx)T$a61z3k-G|u`0 zm(u&r4-EmOu^6x4dVDs(d}ypgdPC!C*#kk1zs=yFW(}AfVApiC@?vuiEBVEdQWJkP z!=-m4i%##Vrbq|XCCzY9o!wL>U{pKuLZn<*w29%SL8x0;M4oJ8!c>adOB@}Brv0ZC zqtMrfCyH80rH+`xGFqa%hyWjQBV-9Ih@y)y`*NXXDK3L{IDm&lv?XE|^eKf0%R57? zN|J4DYX!!lI>_1 zMpDW~tx{tk)W%4ehb#PyK+(OvmG1dYbhu&w7O=j~W|3&N#SM-=LZ#SAhz#V`Qa2mX z#~Dsx@Ovc*Htnq)wBLJiE6Y3a3m_Xsh4tg2y(;K|`Uj;yIm-${dAANdZ4T!Fkn0kU zmRtRKp|06s7d26=?#hW*cMeb%VETPPtTrtig`pYQs7@AJqyufV<_uf8fHkT=IY(oO z=-a8R|6bu^SiD&6wsNraeNX2AY{Vn(sx8)DSE9}8m?vF>Ep4PGIo5Ox%n)58)Pp{~ z7Zx^L=B5<9{&xOkO1^VQC&Tw%Gz;F;rs=0lWQ9p8A6pIK%IGJ zH`qd1)kP-q`jM0-6cM1G<)ZXFb-NuAGaS?0Zfk@Rf#8$ub`$_2JVj+is1P+pn8pbXqkTcZ>Tt%k0!a7awykBYY*g)N;v2L?KtHW=2K4CcKaH&MQ{;p z%XOmL>R&UAEMW?}%R&%0`mi(*Kvt1*Tb=!^)MoKbg9(GFsrh@5T+v~XYC=+?#eo9@ z7AYpVyDTsnB_;xM`3Xd8w|dCSI>>)jnSG>c0tr#9nb&i66djkqBkEPaK4qX7Cf@fp zvBJ@m52XQC$gAw`q&gy0gy8}PUp`@rQ*9kEVnO?Bq>wd$Bs5^PqoCD?x@<6}#fX7A z+8!KY1nisGMm;6SX88(-Sx!YqUatZR8ak?Gg+?6h?tWqXy7xox=12pDtR*GT*Y*&! z64{z37jlwRnEp`Nh>i#zB@zlyD9CUx6Fcfdp#jDoU7wL((M?$di9#HQW^f6;*U%QL z!@Q;2EGUUZMW~IPjJI9VJgZE9vboF*Ib{nr@mU$oZwAXMnQ#`A))t0g{!fCk15MyI6 zAyS>xHDTIJzOD7zR%?9P^#KUfy%@DcT|k#H5yuff4tmXzH7)!#b3{R=xX$ay;OQA* zB{;fIx+Tf8f}Yab(Wy#gV|sO!m)-x+KnVQs+ho+W#Rj8qJ&|=P#Dvx%~W7})yW6bs%x%NugTYRcReUeCm*ZC^=E6@WXFhm8I1Ylz3ktC!I`D|da40iBdlWzi!;#nw-4@m#Jfov3 zfy~PtBeBN!Z&O^qqn`4`^*`@<>8#1#^mPO}eZA<*25T5WrTvF`YcG0eXDfcl7RGb@ zG8w&xH2LK-TevU+CPmv~b&wC#wc=s{XV0eH1LI$cPKf%Obhr`kKeTNjFmS8Bctdy3 z#07GwV^c^``)m_F@KY@?reX&OQzWK9H*(mDno&{ZF`QXWY+N+`L zC&t3-BP70RhH6AcZ)Qk(?AaT-8?XOwN*o`Jq!aO&!qj{Em2Z=hab+y%V57LQyv*d6 zz#P@MTzh*FFnlCJ-zO#g4X$+jTQdE8%YxFJ;}27h3kfqt{jCg# zQh_S5+ZQszY96!p>OWOZo&@c<=XYt)ouFHT-O1TRbO*eZyVJ^HA9)B~KFQe8ic0)C z{Cc=jlLx=7v{-d@?DIb7OnCWJhO5eEuU%$~plo;`tS_id#%)SYrFz!0E^}B zW>>3JI_&xmuV}5`%|?$u+?q?FfD?VS6Z#G!zPnN?cOhzus0Ux`%UXPkOOA>96o_LK zY6|Otc-u%B;`)IBR&*|@l5DnH9xp;JL};a;Pd`|A>pg^i82ex2kE5b~HzepacDTTA z@6?L{4?LSE>XkDj=Z^YY|7jyASaNzw#{PDOkt%+F4DfUCNnaG{=Q> zzkPT+inU7Drf zd<)u>vJ8g+t$~G!bD*?95E5tb_%+-yz(nw88BeyVb*F--dUO0`Y_BX7GW%qzfGOnO z3~~K{MUaohqrG`VPSoZjL`ut(;}>gyvKYpanyr!BE?J;;2tED=Pdq*>!HkzFV@a=$ zD7d*z!GfZj=Xs{eA(1)sy~nDSDykS9|XEMyWxWfliQ!1BRKin(@V z_TeZfJ<;6j{A)upnG+2#{tR;+4B2Kt79&*}4fQryjH(3&+b&+bXy)|90wz}MncR2y zLSAwqnHaFz<)hSuupE%O1<3Fwav{Tp{xxC_%gMueh}6j0NWKXp=Ul-&F5-Kj&~rMM z%gkSwFJxr2#%Ak;kPl6E0l}Ai>KV|HecwN{(~Cz`E8=)&i=QklnH@*la}~0Gjf|N1 z)qr3>$s6nEku>kg;=iNX9uUWtI_5| z9rL2{-2(#*mrt%^zHc`YQQ1DIu34z^BE%A8pliOl1Nslro*oi6&TVID-vDGEZEIx z(N3>4It-^B>&P%Km=+~*obv`pZ4>Blf3vFdN7+7iF`XUp~By?`~ED}md z7m|4UtUr((clsF+{htu0|_~10JiN3UxwV z7^Fxb48!_y0sb6!GA;6?AIA(z54pP9<%*59-3}b++&_=k<6wKpZ*pej?$grZ=wz#3 zZzNbprjao7nW>=G0kP|;v9vE;9<5@1M4Sm@hj0dHYoj>o27{I;a2Y_%cw}y`{KsYo zY*Uk}+s!&<{)<7AAOpeo=T=*M)Eg7ZJTbt2!wo(g9E_meF!-p*Y_4sFLji{h6e-v# zAM5_bZi(F`?7dw~e;N!he##Xz2htDJ_g5V$xdQgp`gsl;b+`xArZ9po(>|>R*#i1V zM`%pWj;BVwKmdC2u-83@pJoULU|C+4I}Y{BXqi@yGvkm)GN05c^D{$?1a7;-!XqjH z(5jt7b0W~%3T6Y@qi02{6Q=4%;J;8&lN}X#eupj62via>jMPy$>p@iwL5ex|#LAqw zs~lkcLf@P+Q}p$>R>};KbxuZDOz1RFsk4E;y?W>PW<-QjJW1!Z{#K|~`A4r?!akeN zKB^*FYuphX>pFCGm<1S$30{{N{xw%!^6RvKpDdw_gxq@1@hbL52f^F zqAlS5+j3K4gei)4)W21U%OG2Auf%S!bqKsrK-kf}8pUuD3H6lZwu-2W<&g(#i2}#^ zx*0zF7Q}QPsb)m&B8o`)8X}xS~xu( z8HpxZ0##k$0ALe-b7U$bBYo=8G0vmyq8}=}4})!NxDl#gf52-34;(vw5gHD)n}sPj zn+_J69pUY{6UYgpU^YHTd_n~^QD}f~3$2`p$!(Be_Jyb<4)iN_YKf-E#rz56kFb3d zs6{oEXT7`$rf&gJ^n+6js4|PphNjU|_!vN#2ubb$S zGvR(XizN=XgF}<>Y%~-EC(%oB)=q_TcsW+v_IHo%0HL;Z+Qi-wHll!u!zRCdG?3Il zQT!X@+wvFGHj{Tj*$Mr7B@didxnF{rar@wrl>CM$6Q0KZW5wrD(5DnN`-8(zYZFMm zSw_=0MuQegt$|O!*k&2xLs0N9=D$|^M}U8d=JI6 z(_?MWD)mAz2&dC|_N`#kaSODQfk+B5yG)&?@?>y?)ld?!W{^d%G!Gb+O^8nNF8lZDaZA*kWNV7GV(sOavNx0MDY$ zBnQ0#FT-UJ*-Wsy*yNk`R!Sk&kvPBvV1|`s;ti@6I02u| zYGv4I!^jBMnqoI~vCvF|Z1vlk&{O~q4i~haxV>aHQw}5tK!??a_-o4~mX86|O2CL7 zrRFPE+x-CXPw`A2NEBjTR!S*3xglJL(_jh-vTaJFxeyE`7<>mmVtfa)s;?EzszF8300R_ z))H>EI`=PRikUEJ;LhN6#f$cAZ%3cbPU1uUoBD}mx}DJ)0w9%;A;BHtvI z7WM1w4ELe`YoyWQ{CTrHn9dVdSsYV9vba-{tdi5~4KVR3=O~E4gMhQt7UsZg*nPVs z2QB$PHrU`jncyU;`M5)y>Uz^4#?rL1pbrl>cXU`ChXRkym4Jsa(!FPlhk$;p2GZMZ zD6t4$AZ-3mDoPA6If55&x!(SPfN@K%oQ5Niv$<&oJ9oim=Vm44z&QYqVvao{Q3JC| zVsw~>gM{uf&n6at5|J3{)Gm)v+Vog|D>=*xRRC494WdECgir06YT@D@I0WTgb)j5G zV(*Iifm$OCc@EQ&Lo1=)lpCZ*7#z0ROUgFdsZe75->a-*@0P z+!V;T5JdE`f|OXRHX-)v*pL>07UaL|ZZrF9`gJLGqTI|GQt=6iaZK&kfh>Dw_|W!= zP5qLc<@Z*q)hs7z$^17H>E44XG%pMwb1Imzns3q(t_6mO%R?n{hvaK>jdUOoh?;o< z=Bc3tW8qI@*mc$x+4f&S^)Odp5RW&2V3a!i5s&fkhR_C95HKP!sdWYoz^D&dBx-#f zG@dAPtsA1@k~%1yP?e%VW8(j@gF8F1Q2yA_Q$YMxmz0)4xHx2p8wX&T z^^hUz{q>P19HPDmV$6>n<}jk89~Bo@+xQH96P#IqJ|maqckI?^ zWe2BqQP`&+)lP4WN43ep_z8T1QgF0R8HX*05Jw6a(lq_81iQ@<13gRTu5l${QUpUFNaIxeGNc=gHw- zpBXsV+|~}pNMkxy4t%bN7ckL8Aox$ve#t!mLn-;9+s#HB5$o0_H0s@qy{QFa_bFAn z%K?V%mFrN@97UI!*Xd;F+{B=R@%hiwj$Q%490J6!E?2XAh94uWrTex$S+7+D0l5Y9 z!G1BaM%N6CNIC}Hk`<+h`YyBM#)h3hIND$ChU&z!bJ!L}c(lC@f+T{N`RZOxdt1=V zkz}6^!6=!T^QY$*bWlwEwdZ%~7Ca{uU2Hti1tUPN?*M&5(zKYzcqnLR z?x~}F)L3y6!0y1Pg@-bD>-r&jt)TMMa=pQevwukiCM(O%heNYXc-NAGsC6 z@t{Gd25&~t_KQ&2j%iP^I$41zKR=g~;7H2Qj(V$*pGw3doj_ErEvn2?0)&EW;MjwK zEPaTrZto%0DxmrmAHLFDLg4z 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 'CfgPatches' >> 'CBA_main')) then { - _bullet = _this select 6; // with CBA magazine and projectile are reverted -}; - -if ((CSE_WIND_DEFLECTION_ALLOW_NON_LOCAL_BB || local _unit) && (_bullet isKindOf "BulletBase")) then { - _weapon = _this select 1; - _ammo = _this select 4; - - _airFriction = getNumber(configFile >> "cfgAmmo" >> _ammo >> "airFriction"); - - _index = count cse_basicBallistics_bulletDatabase; - if (count cse_basicBallistics_bulletDatabaseFreeIndices > 0) then { - _index = cse_basicBallistics_bulletDatabaseFreeIndices select 0; - cse_basicBallistics_bulletDatabaseFreeIndices = cse_basicBallistics_bulletDatabaseFreeIndices - [_index]; - }; - - cse_basicBallistics_bulletDatabase set[_index, [_bullet, _airFriction, _index]]; - cse_basicBallistics_bulletDatabaseLastFrame set[_index, time]; - - cse_basicBallistics_bulletDatabaseOccupiedIndices pushBack _index; - - if (count cse_basicBallistics_bulletDatabaseOccupiedIndices == 1) then { - ["basicBallistics", "onEachFrame", { - private ["_bullet", "_airFriction", "_index", "_deltaT", "_bulletVelocity", "_bulletSpeed", "_trueVelocity", "_trueVelocity", "_dragRef", "_drag", "_accelRef", "_accel"]; - - { - _bullet = (cse_basicBallistics_bulletDatabase select _x) select 0; - _index = (cse_basicBallistics_bulletDatabase select _x) select 2; - if (!alive _bullet) then { - cse_basicBallistics_bulletDatabaseOccupiedIndices = cse_basicBallistics_bulletDatabaseOccupiedIndices - [_index]; - cse_basicBallistics_bulletDatabaseFreeIndices pushBack _index; - }; - } forEach cse_basicBallistics_bulletDatabaseOccupiedIndices; - - if (count cse_basicBallistics_bulletDatabaseOccupiedIndices == 0) exitWith { - /// Resetting all the variables. - cse_basicBallistics_bulletDatabase = []; - cse_basicBallistics_bulletDatabaseLastFrame = []; - cse_basicBallistics_bulletDatabaseOccupiedIndices = []; - cse_basicBallistics_bulletDatabaseFreeIndices = []; - ["basicBallistics", "onEachFrame"] call BIS_fnc_removeStackedEventHandler; - }; - - { - _bullet = (cse_basicBallistics_bulletDatabase select _x) select 0; - _airFriction = (cse_basicBallistics_bulletDatabase select _x) select 1; - _index = (cse_basicBallistics_bulletDatabase select _x) select 2; - - _deltaT = time - (cse_basicBallistics_bulletDatabaseLastFrame select _index); - cse_basicBallistics_bulletDatabaseLastFrame set[_index, time]; - - _bulletVelocity = velocity _bullet; - _bulletSpeed = vectorMagnitude _bulletVelocity; - - if (vectorMagnitude wind > 0) then { - _trueVelocity = _bulletVelocity vectorDiff wind; - _trueSpeed = vectorMagnitude _trueVelocity; - - _dragRef = _deltaT * _airFriction * _bulletSpeed * _bulletSpeed; - _accelRef = (vectorNormalized _bulletVelocity) vectorMultiply (_dragRef); - _bulletVelocity = _bulletVelocity vectorDiff _accelRef; - - _drag = _deltaT * _airFriction * _trueSpeed * _trueSpeed; - _accel = (vectorNormalized _trueVelocity) vectorMultiply (_drag); - _bulletVelocity = _bulletVelocity vectorAdd _accel; - }; - - _bullet setVelocity _bulletVelocity; - } forEach cse_basicBallistics_bulletDatabaseOccupiedIndices; - - }] call BIS_fnc_addStackedEventHandler; - }; -}; -true; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fn_onWeatherMeterOpened_DEFLECT.sqf b/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fn_onWeatherMeterOpened_DEFLECT.sqf deleted file mode 100644 index d27fa411e7..0000000000 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fn_onWeatherMeterOpened_DEFLECT.sqf +++ /dev/null @@ -1,26 +0,0 @@ -/** - * fn_onWeatherMeterOpened_DEFLECT.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ - -if (isnil "CSE_WEATHER_METER_CURRENT_SCREEN_DEFLECT") then { - CSE_WEATHER_METER_CURRENT_SCREEN_DEFLECT = "WIND_VIEW"; -}; -if (isnil "CSE_WEATHER_METER_IS_OPEN_DEFLECT") then { - CSE_WEATHER_METER_IS_OPEN_DEFLECT = false; -}; - -while { CSE_WEATHER_METER_IS_OPEN_DEFLECT } do { - switch (CSE_WEATHER_METER_CURRENT_SCREEN_DEFLECT) do { - case "WEATHER_VIEW": {[] call cse_fnc_weatherMeterOpenWeatherView_DEFLECT;}; - case "WIND_VIEW": { [] call cse_fnc_weatherMeterOpenWindView_DEFLECT;}; - default {}; - }; - uisleep 1; - -}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fn_weatherMeterOpenWeatherView_DEFLECT.sqf b/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fn_weatherMeterOpenWeatherView_DEFLECT.sqf deleted file mode 100644 index a8e25227bd..0000000000 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fn_weatherMeterOpenWeatherView_DEFLECT.sqf +++ /dev/null @@ -1,28 +0,0 @@ -/** - * fn_weatherMeterOpenWeatherView_DEFLECT.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ - -private ["_display","_backgroundCtrl","_categoryCtrl","_lineOneCtrl", "_lineTwoCtrl","_LineThreeCtrl", "_textLineOne","_textLineTwo"]; - -disableSerialization; -_display = uiNamespace getvariable "cse_weather_meter"; - -_backgroundCtrl = _display displayCtrl 1; -_categoryCtrl = _display displayCtrl 10; -_lineOneCtrl = _display displayCtrl 11; -_lineTwoCtrl = _display displayCtrl 12; -_LineThreeCtrl = _display displayCtrl 13; - -_categoryCtrl ctrlSetText (localize "STR_CSE_WEATHER_METER_WEATHER_CATEGORY"); - -_textLineOne = format [ localize "STR_CSE_WEATHER_METER_WEATHER_HUMIDITY", floor (humidity * 100)]; - -_lineOneCtrl ctrlSetText _textLineOne; -_lineTwoCtrl ctrlSetText ""; -_LineThreeCtrl ctrlSetText ""; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fn_weatherMeterOpenWindView_DEFLECT.sqf b/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fn_weatherMeterOpenWindView_DEFLECT.sqf deleted file mode 100644 index 82c8e96a65..0000000000 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fn_weatherMeterOpenWindView_DEFLECT.sqf +++ /dev/null @@ -1,29 +0,0 @@ -/** - * fn_weatherMeterOpenWindView_DEFLECT.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ - -private ["_display","_backgroundCtrl","_categoryCtrl","_lineOneCtrl", "_lineTwoCtrl","_LineThreeCtrl", "_textLineOne","_textLineTwo"]; - -disableSerialization; -_display = uiNamespace getvariable "cse_weather_meter"; - -_backgroundCtrl = _display displayCtrl 1; -_categoryCtrl = _display displayCtrl 10; -_lineOneCtrl = _display displayCtrl 11; -_lineTwoCtrl = _display displayCtrl 12; -_LineThreeCtrl = _display displayCtrl 13; - -_categoryCtrl ctrlSetText (localize "STR_CSE_WEATHER_METER_WIND_CATEGORY"); - -_textLineOne = format [ localize "STR_CSE_WEATHER_METER_WIND_SPEED", (wind distance [0,0,0])]; -_textLineTwo = format [ localize "STR_CSE_WEATHER_METER_WIND_DIRECTION", windDir]; - -_lineOneCtrl ctrlSetText _textLineOne; -_lineTwoCtrl ctrlSetText _textLineTwo; -_LineThreeCtrl ctrlSetText ""; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fnc_handleFired b/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fnc_handleFired new file mode 100644 index 0000000000..484799559e --- /dev/null +++ b/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fnc_handleFired @@ -0,0 +1,98 @@ +/** + * fnc HandleFired. + * Handles wind deflection for projectiles. + * Is expected to be triggered by the fired eventhandler from BI. + * + * Params: + * 1. unit: Object - Object the event handler is assigned to + * 2. weapon: String - Fired weapon + * 3. muzzle: String - Muzzle that was used + * 4. mode: String - Current mode of the fired weapon + * 5. ammo: String - Ammo used + * 6. magazine: String - magazine name which was used + * 7. projectile: Object - Object of the projectile that was shot (Arma 2: OA and onwards) + * + * Author: Glowbal, Ruthberg + * + */ + +#include "script_component.hpp" + +if (isNil QGVAR(EnableForAI)) exitWith {false}; // means that the module has not yet initalized + +private ["_unit", "_weapon", "_ammo", "_bullet", "_airFriction", "_index"]; +_unit = _this select 0; + +if (_unit distance ACE_player > 3000) exitWith {false}; // Large enough distance to not simulate any wind deflection. +if (!GVAR(EnableForAI) && !(isPlayer _unit)) exitWith {false}; +_bullet = _this select 6; + +if (_bullet isKindOf "BulletBase") then { + _weapon = _this select 1; + _ammo = _this select 4; + + _airFriction = getNumber(configFile >> "cfgAmmo" >> _ammo >> "airFriction"); + + _index = count GVAR(bulletDatabaseLastFrame); + if (count GVAR(bulletDatabaseLastFrameFreeIndices) > 0) then { + _index = GVAR(bulletDatabaseLastFrameFreeIndices) select 0; + GVAR(bulletDatabaseLastFrameFreeIndices) = GVAR(bulletDatabaseLastFrameFreeIndices) - [_index]; + }; + + GVAR(bulletDatabaseLastFrame) set[_index, [_bullet, _airFriction, _index]]; + GVAR(bulletDatabaseLastFrameLastFrame) set[_index, time]; + + GVAR(bulletDatabaseLastFrameOccupiedIndices) pushBack _index; + + if (count GVAR(bulletDatabaseLastFrameOccupiedIndices) == 1) then { + [{ + private ["_bullet", "_airFriction", "_index", "_deltaT", "_bulletVelocity", "_bulletSpeed", "_trueVelocity", "_trueVelocity", "_dragRef", "_drag", "_accelRef", "_accel"]; + + { + _bullet = (GVAR(bulletDatabaseLastFrame) select _x) select 0; + _index = (GVAR(bulletDatabaseLastFrame) select _x) select 2; + if (!alive _bullet) then { + GVAR(bulletDatabaseLastFrameOccupiedIndices) = GVAR(bulletDatabaseLastFrameOccupiedIndices) - [_index]; + GVAR(bulletDatabaseLastFrameFreeIndices) pushBack _index; + }; + } forEach GVAR(bulletDatabaseLastFrameOccupiedIndices); + + if (count GVAR(bulletDatabaseLastFrameOccupiedIndices) == 0) exitWith { + /// Resetting all the variables. + GVAR(bulletDatabaseLastFrame) = []; + GVAR(bulletDatabaseLastFrameLastFrame) = []; + GVAR(bulletDatabaseLastFrameOccupiedIndices) = []; + GVAR(bulletDatabaseLastFrameFreeIndices) = []; + [_this select 1] call cba_fnc_removePerFrameHandler; + }; + + { + _bullet = (GVAR(bulletDatabaseLastFrame) select _x) select 0; + _airFriction = (GVAR(bulletDatabaseLastFrame) select _x) select 1; + _index = (GVAR(bulletDatabaseLastFrame) select _x) select 2; + + _deltaT = time - (GVAR(bulletDatabaseLastFrameLastFrame) select _index); + GVAR(bulletDatabaseLastFrameLastFrame) set[_index, time]; + + _bulletVelocity = velocity _bullet; + _bulletSpeed = vectorMagnitude _bulletVelocity; + + if (vectorMagnitude wind > 0) then { + _trueVelocity = _bulletVelocity vectorDiff wind; + _trueSpeed = vectorMagnitude _trueVelocity; + + _dragRef = _deltaT * _airFriction * _bulletSpeed * _bulletSpeed; + _accelRef = (vectorNormalized _bulletVelocity) vectorMultiply (_dragRef); + _bulletVelocity = _bulletVelocity vectorDiff _accelRef; + + _drag = _deltaT * _airFriction * _trueSpeed * _trueSpeed; + _accel = (vectorNormalized _trueVelocity) vectorMultiply (_drag); + _bulletVelocity = _bulletVelocity vectorAdd _accel; + }; + + _bullet setVelocity _bulletVelocity; + }forEach GVAR(bulletDatabaseLastFrameOccupiedIndices); + }, 0, []] call cba_fnc_addPerFrameHandler; + }; +}; +true; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fnc_initalizeModule.sqf b/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fnc_initalizeModule.sqf new file mode 100644 index 0000000000..d0b9937a58 --- /dev/null +++ b/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fnc_initalizeModule.sqf @@ -0,0 +1,19 @@ +/** + * fnc_initalizeModule.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#include "script_component.hpp" + +if (!hasInterface) exitwith {}; // No need for this module on HC or dedicated server. + +private ["_logic"]; +_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; +if (!isNull _logic) then { + [_logic, QGVAR(EnableForAI), "forAI" ] call EFUNC(common,readBooleanParameterFromModule); +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/script_component.hpp b/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/script_component.hpp new file mode 100644 index 0000000000..278930e4e7 --- /dev/null +++ b/TO_MERGE/cse/sys_ballistics/basicBallistics/functions/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT windDeflection +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_WINDDEFLECTION + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_WINDDEFLECTION + #define DEBUG_SETTINGS DEBUG_SETTINGS_WINDDEFLECTION +#endif + +#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/gui/define.hpp b/TO_MERGE/cse/sys_ballistics/basicBallistics/gui/define.hpp deleted file mode 100644 index c521de470f..0000000000 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/gui/define.hpp +++ /dev/null @@ -1,797 +0,0 @@ - -#ifndef CSE_DEFINE_H -#define CSE_DEFINE_H -// define.hpp - -#define true 1 -#define false 0 - -#define CT_STATIC 0 -#define CT_BUTTON 1 -#define CT_EDIT 2 -#define CT_SLIDER 3 -#define CT_COMBO 4 -#define CT_LISTBOX 5 -#define CT_TOOLBOX 6 -#define CT_CHECKBOXES 7 -#define CT_PROGRESS 8 -#define CT_HTML 9 -#define CT_STATIC_SKEW 10 -#define CT_ACTIVETEXT 11 -#define CT_TREE 12 -#define CT_STRUCTURED_TEXT 13 -#define CT_CONTEXT_MENU 14 -#define CT_CONTROLS_GROUP 15 -#define CT_SHORTCUTBUTTON 16 -#define CT_XKEYDESC 40 -#define CT_XBUTTON 41 -#define CT_XLISTBOX 42 -#define CT_XSLIDER 43 -#define CT_XCOMBO 44 -#define CT_ANIMATED_TEXTURE 45 -#define CT_OBJECT 80 -#define CT_OBJECT_ZOOM 81 -#define CT_OBJECT_CONTAINER 82 -#define CT_OBJECT_CONT_ANIM 83 -#define CT_LINEBREAK 98 -#define CT_ANIMATED_USER 99 -#define CT_MAP 100 -#define CT_MAP_MAIN 101 -#define CT_LISTNBOX 102 - -// Static styles -#define ST_POS 0x0F -#define ST_HPOS 0x03 -#define ST_VPOS 0x0C -#define ST_LEFT 0x00 -#define ST_RIGHT 0x01 -#define ST_CENTER 0x02 -#define ST_DOWN 0x04 -#define ST_UP 0x08 -#define ST_VCENTER 0x0c - -#define ST_TYPE 0xF0 -#define ST_SINGLE 0 -#define ST_MULTI 16 -#define ST_TITLE_BAR 32 -#define ST_PICTURE 48 -#define ST_FRAME 64 -#define ST_BACKGROUND 80 -#define ST_GROUP_BOX 96 -#define ST_GROUP_BOX2 112 -#define ST_HUD_BACKGROUND 128 -#define ST_TILE_PICTURE 144 -#define ST_WITH_RECT 160 -#define ST_LINE 176 - -#define ST_SHADOW 0x100 -#define ST_NO_RECT 0x200 // this style works for CT_STATIC in conjunction with ST_MULTI -#define ST_KEEP_ASPECT_RATIO 0x800 - -#define ST_TITLE ST_TITLE_BAR + ST_CENTER - -// Slider styles -#define SL_DIR 0x400 -#define SL_VERT 0 -#define SL_HORZ 0x400 - -#define SL_TEXTURES 0x10 - -// Listbox styles -#define LB_TEXTURES 0x10 -#define LB_MULTI 0x20 -#define FontCSE "PuristaMedium" - -class cse_gui_backgroundBase { - type = CT_STATIC; - idc = -1; - style = ST_PICTURE; - colorBackground[] = {0,0,0,0}; - colorText[] = {1, 1, 1, 1}; - font = FontCSE; - text = ""; - sizeEx = 0.032; -}; -class cse_gui_editBase -{ - access = 0; - type = 2; - x = 0; - y = 0; - h = 0.04; - w = 0.2; - colorBackground[] = - { - 0, - 0, - 0, - 1 - }; - colorText[] = - { - 0.95, - 0.95, - 0.95, - 1 - }; - colorSelection[] = - { - "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", - "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", - "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", - 1 - }; - autocomplete = ""; - text = ""; - size = 0.2; - style = "0x00 + 0x40"; - font = "PuristaMedium"; - shadow = 2; - sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - colorDisabled[] = - { - 1, - 1, - 1, - 0.25 - }; -}; - - - -class cse_gui_buttonBase { - idc = -1; - type = 16; - style = ST_LEFT; - text = ""; - action = ""; - x = 0.0; - y = 0.0; - w = 0.25; - h = 0.04; - size = 0.03921; - sizeEx = 0.03921; - color[] = {1.0, 1.0, 1.0, 1}; - color2[] = {1.0, 1.0, 1.0, 1}; - /*colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.5])"}; - colorbackground2[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.4}; - colorDisabled[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.25}; - colorFocused[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])", 0.8}; - colorBackgroundFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.8}; - */ - - colorBackground[] = {1,1,1,0.95}; - colorbackground2[] = {1,1,1,0.95}; - colorDisabled[] = {1,1,1,0.6}; - colorFocused[] = {1,1,1,1}; - colorBackgroundFocused[] = {1,1,1,1}; - periodFocus = 1.2; - periodOver = 0.8; - default = false; - class HitZone { - left = 0.00; - top = 0.00; - right = 0.00; - bottom = 0.00; - }; - - class ShortcutPos { - left = 0.00; - top = 0.00; - w = 0.00; - h = 0.00; - }; - - class TextPos { - left = 0.002; - top = 0.0004; - right = 0.0; - bottom = 0.00; - }; - textureNoShortcut = ""; - animTextureNormal = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; - animTextureDisabled = "cse\cse_gui\data\buttonDisabled_gradient.paa"; - animTextureOver = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; - animTextureFocused = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; - animTexturePressed = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; - animTextureDefault = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; - period = 0.5; - font = FontCSE; - soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1}; - soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush",0.0,0}; - soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter",0.07,1}; - soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape",0.09,1}; - class Attributes { - font = FontCSE; - color = "#E5E5E5"; - align = "center"; - shadow = "true"; - }; - class AttributesImage { - font = FontCSE; - color = "#E5E5E5"; - align = "left"; - shadow = "true"; - }; -}; - -class cse_gui_RscProgress { - type = 8; - style = 0; - colorFrame[] = {1,1,1,0.7}; - colorBar[] = {1,1,1,0.7}; - texture = "#(argb,8,8,3)color(1,1,1,0.7)"; - x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "0.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; -}; - - -class cse_gui_staticBase { - idc = -1; - type = CT_STATIC; - x = 0.0; - y = 0.0; - w = 0.183825; - h = 0.104575; - style = ST_LEFT; - font = FontCSE; - sizeEx = 0.03921; - colorText[] = {0.95, 0.95, 0.95, 1.0}; - colorBackground[] = {0, 0, 0, 0}; - text = ""; -}; - -class RscListBox; -class cse_gui_listBoxBase : RscListBox{ - type = CT_LISTBOX; - style = ST_MULTI; - font = FontCSE; - sizeEx = 0.03921; - color[] = {1, 1, 1, 1}; - colorText[] = {0.543, 0.5742, 0.4102, 1.0}; - colorScrollbar[] = {0.95, 0.95, 0.95, 1}; - colorSelect[] = {0.95, 0.95, 0.95, 1}; - colorSelect2[] = {0.95, 0.95, 0.95, 1}; - colorSelectBackground[] = {0, 0, 0, 1}; - colorSelectBackground2[] = {0.543, 0.5742, 0.4102, 1.0}; - colorDisabled[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.25}; - period = 1.2; - rowHeight = 0.03; - colorBackground[] = {0, 0, 0, 1}; - maxHistoryDelay = 1.0; - autoScrollSpeed = -1; - autoScrollDelay = 5; - autoScrollRewind = 0; - soundSelect[] = {"",0.1,1}; - soundExpand[] = {"",0.1,1}; - soundCollapse[] = {"",0.1,1}; - class ListScrollBar { - arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; - arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; - autoScrollDelay = 5; - autoScrollEnabled = 0; - autoScrollRewind = 0; - autoScrollSpeed = -1; - border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; - color[] = {1,1,1,0.6}; - colorActive[] = {1,1,1,1}; - colorDisabled[] = {1,1,1,0.3}; - height = 0; - scrollSpeed = 0.06; - shadow = 0; - thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; - width = 0; - }; - class ScrollBar { - color[] = {1, 1, 1, 0.6}; - colorActive[] = {1, 1, 1, 1}; - colorDisabled[] = {1, 1, 1, 0.3}; - thumb = ""; - arrowFull = ""; - arrowEmpty = ""; - border = ""; - }; -}; - - -class cse_gui_listNBox { - access = 0; - type = CT_LISTNBOX;// 102; - style =ST_MULTI; - w = 0.4; - h = 0.4; - font = FontCSE; - sizeEx = 0.031; - - autoScrollSpeed = -1; - autoScrollDelay = 5; - autoScrollRewind = 0; - arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; - arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; - columns[] = {0.0}; - color[] = {1, 1, 1, 1}; - - rowHeight = 0.03; - colorBackground[] = {0, 0, 0, 0.2}; - colorText[] = {1,1, 1, 1.0}; - colorScrollbar[] = {0.95, 0.95, 0.95, 1}; - colorSelect[] = {0.95, 0.95, 0.95, 1}; - colorSelect2[] = {0.95, 0.95, 0.95, 1}; - colorSelectBackground[] = {0, 0, 0, 0.0}; - colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.5}; - colorActive[] = {0,0,0,1}; - colorDisabled[] = {0,0,0,0.3}; - rows = 1; - - drawSideArrows = 0; - idcLeft = -1; - idcRight = -1; - maxHistoryDelay = 1; - soundSelect[] = {"", 0.1, 1}; - period = 1; - shadow = 2; - class ScrollBar { - arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; - arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; - border = "#(argb,8,8,3)color(1,1,1,1)"; - color[] = {1,1,1,0.6}; - colorActive[] = {1,1,1,1}; - colorDisabled[] = {1,1,1,0.3}; - thumb = "#(argb,8,8,3)color(1,1,1,1)"; - }; - class ListScrollBar { - arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; - arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; - autoScrollDelay = 5; - autoScrollEnabled = 0; - autoScrollRewind = 0; - autoScrollSpeed = -1; - border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; - color[] = {1,1,1,0.6}; - colorActive[] = {1,1,1,1}; - colorDisabled[] = {1,1,1,0.3}; - height = 0; - scrollSpeed = 0.06; - shadow = 0; - thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; - width = 0; - }; -}; - - -class RscCombo; -class cse_gui_comboBoxBase: RscCombo { - idc = -1; - type = 4; - style = "0x10 + 0x200"; - x = 0; - y = 0; - w = 0.3; - h = 0.035; - color[] = {0,0,0,0.6}; - colorActive[] = {1,0,0,1}; - colorBackground[] = {0,0,0,1}; - colorDisabled[] = {1,1,1,0.25}; - colorScrollbar[] = {1,0,0,1}; - colorSelect[] = {0,0,0,1}; - colorSelectBackground[] = {1,1,1,0.7}; - colorText[] = {1,1,1,1}; - - arrowEmpty = ""; - arrowFull = ""; - wholeHeight = 0.45; - font = FontCSE; - sizeEx = 0.031; - soundSelect[] = {"\A3\ui_f\data\sound\RscCombo\soundSelect",0.1,1}; - soundExpand[] = {"\A3\ui_f\data\sound\RscCombo\soundExpand",0.1,1}; - soundCollapse[] = {"\A3\ui_f\data\sound\RscCombo\soundCollapse",0.1,1}; - maxHistoryDelay = 1.0; - class ScrollBar - { - color[] = {0.3,0.3,0.3,0.6}; - colorActive[] = {0.3,0.3,0.3,1}; - colorDisabled[] = {0.3,0.3,0.3,0.3}; - thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; - arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; - arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; - border = ""; - }; - class ComboScrollBar { - arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; - arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; - autoScrollDelay = 5; - autoScrollEnabled = 0; - autoScrollRewind = 0; - autoScrollSpeed = -1; - border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; - color[] = {0.3,0.3,0.3,0.6}; - colorActive[] = {0.3,0.3,0.3,1}; - colorDisabled[] = {0.3,0.3,0.3,0.3}; - height = 0; - scrollSpeed = 0.06; - shadow = 0; - thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; - width = 0; - }; -}; - - - -class cse_gui_mapBase { - moveOnEdges = 1; - x = "SafeZoneXAbs"; - y = "SafeZoneY + 1.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - w = "SafeZoneWAbs"; - h = "SafeZoneH - 1.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - type = 100; // Use 100 to hide markers - style = 48; - shadow = 0; - - ptsPerSquareSea = 5; - ptsPerSquareTxt = 3; - ptsPerSquareCLn = 10; - ptsPerSquareExp = 10; - ptsPerSquareCost = 10; - ptsPerSquareFor = 9; - ptsPerSquareForEdge = 9; - ptsPerSquareRoad = 6; - ptsPerSquareObj = 9; - showCountourInterval = 0; - scaleMin = 0.001; - scaleMax = 1.0; - scaleDefault = 0.16; - maxSatelliteAlpha = 0.85; - alphaFadeStartScale = 0.35; - alphaFadeEndScale = 0.4; - colorBackground[] = {0.969,0.957,0.949,1.0}; - colorSea[] = {0.467,0.631,0.851,0.5}; - colorForest[] = {0.624,0.78,0.388,0.5}; - colorForestBorder[] = {0.0,0.0,0.0,0.0}; - colorRocks[] = {0.0,0.0,0.0,0.3}; - colorRocksBorder[] = {0.0,0.0,0.0,0.0}; - colorLevels[] = {0.286,0.177,0.094,0.5}; - colorMainCountlines[] = {0.572,0.354,0.188,0.5}; - colorCountlines[] = {0.572,0.354,0.188,0.25}; - colorMainCountlinesWater[] = {0.491,0.577,0.702,0.6}; - colorCountlinesWater[] = {0.491,0.577,0.702,0.3}; - colorPowerLines[] = {0.1,0.1,0.1,1.0}; - colorRailWay[] = {0.8,0.2,0.0,1.0}; - colorNames[] = {0.1,0.1,0.1,0.9}; - colorInactive[] = {1.0,1.0,1.0,0.5}; - colorOutside[] = {0.0,0.0,0.0,1.0}; - colorTracks[] = {0.84,0.76,0.65,0.15}; - colorTracksFill[] = {0.84,0.76,0.65,1.0}; - colorRoads[] = {0.7,0.7,0.7,1.0}; - colorRoadsFill[] = {1.0,1.0,1.0,1.0}; - colorMainRoads[] = {0.9,0.5,0.3,1.0}; - colorMainRoadsFill[] = {1.0,0.6,0.4,1.0}; - colorGrid[] = {0.1,0.1,0.1,0.6}; - colorGridMap[] = {0.1,0.1,0.1,0.6}; - colorText[] = {1, 1, 1, 0.85}; -font = "PuristaMedium"; -sizeEx = 0.0270000; -stickX[] = {0.20, {"Gamma", 1.00, 1.50} }; -stickY[] = {0.20, {"Gamma", 1.00, 1.50} }; -onMouseButtonClick = ""; -onMouseButtonDblClick = ""; - - fontLabel = "PuristaMedium"; - sizeExLabel = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; - fontGrid = "TahomaB"; - sizeExGrid = 0.02; - fontUnits = "TahomaB"; - sizeExUnits = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; - fontNames = "PuristaMedium"; - sizeExNames = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8) * 2"; - fontInfo = "PuristaMedium"; - sizeExInfo = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; - fontLevel = "TahomaB"; - sizeExLevel = 0.02; - text = "#(argb,8,8,3)color(1,1,1,1)"; - class ActiveMarker { - color[] = {0.30, 0.10, 0.90, 1.00}; - size = 50; - }; - class Legend - { - x = "SafeZoneX + ( ((safezoneW / safezoneH) min 1.2) / 40)"; - y = "SafeZoneY + safezoneH - 4.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "3.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - font = "PuristaMedium"; - sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; - colorBackground[] = {1,1,1,0.5}; - color[] = {0,0,0,1}; - }; - class Task - { - icon = "\A3\ui_f\data\map\mapcontrol\taskIcon_CA.paa"; - iconCreated = "\A3\ui_f\data\map\mapcontrol\taskIconCreated_CA.paa"; - iconCanceled = "\A3\ui_f\data\map\mapcontrol\taskIconCanceled_CA.paa"; - iconDone = "\A3\ui_f\data\map\mapcontrol\taskIconDone_CA.paa"; - iconFailed = "\A3\ui_f\data\map\mapcontrol\taskIconFailed_CA.paa"; - color[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])"}; - colorCreated[] = {1,1,1,1}; - colorCanceled[] = {0.7,0.7,0.7,1}; - colorDone[] = {0.7,1,0.3,1}; - colorFailed[] = {1,0.3,0.2,1}; - size = 27; - importance = 1; - coefMin = 1; - coefMax = 1; - }; - class Waypoint - { - icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa"; - color[] = {0,0,0,1}; - size = 20; - importance = "1.2 * 16 * 0.05"; - coefMin = 0.900000; - coefMax = 4; - }; - class WaypointCompleted - { - icon = "\A3\ui_f\data\map\mapcontrol\waypointCompleted_ca.paa"; - color[] = {0,0,0,1}; - size = 20; - importance = "1.2 * 16 * 0.05"; - coefMin = 0.900000; - coefMax = 4; - }; - class CustomMark - { - icon = "\A3\ui_f\data\map\mapcontrol\custommark_ca.paa"; - size = 24; - importance = 1; - coefMin = 1; - coefMax = 1; - color[] = {0,0,0,1}; - }; - class Command - { - icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa"; - size = 18; - importance = 1; - coefMin = 1; - coefMax = 1; - color[] = {1,1,1,1}; - }; - class Bush - { - icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa"; - color[] = {0.45,0.64,0.33,0.4}; - size = "14/2"; - importance = "0.2 * 14 * 0.05 * 0.05"; - coefMin = 0.25; - coefMax = 4; - }; - class Rock - { - icon = "\A3\ui_f\data\map\mapcontrol\rock_ca.paa"; - color[] = {0.1,0.1,0.1,0.8}; - size = 12; - importance = "0.5 * 12 * 0.05"; - coefMin = 0.25; - coefMax = 4; - }; - class SmallTree - { - icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa"; - color[] = {0.45,0.64,0.33,0.4}; - size = 12; - importance = "0.6 * 12 * 0.05"; - coefMin = 0.25; - coefMax = 4; - }; - class Tree - { - icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa"; - color[] = {0.45,0.64,0.33,0.4}; - size = 12; - importance = "0.9 * 16 * 0.05"; - coefMin = 0.25; - coefMax = 4; - }; - class busstop - { - icon = "\A3\ui_f\data\map\mapcontrol\busstop_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {1,1,1,1}; - }; - class fuelstation - { - icon = "\A3\ui_f\data\map\mapcontrol\fuelstation_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {1,1,1,1}; - }; - class hospital - { - icon = "\A3\ui_f\data\map\mapcontrol\hospital_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {1,1,1,1}; - }; - class church - { - icon = "\A3\ui_f\data\map\mapcontrol\church_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {1,1,1,1}; - }; - class lighthouse - { - icon = "\A3\ui_f\data\map\mapcontrol\lighthouse_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {1,1,1,1}; - }; - class power - { - icon = "\A3\ui_f\data\map\mapcontrol\power_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {1,1,1,1}; - }; - class powersolar - { - icon = "\A3\ui_f\data\map\mapcontrol\powersolar_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {1,1,1,1}; - }; - class powerwave - { - icon = "\A3\ui_f\data\map\mapcontrol\powerwave_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {1,1,1,1}; - }; - class powerwind - { - icon = "\A3\ui_f\data\map\mapcontrol\powerwind_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {1,1,1,1}; - }; - class quay - { - icon = "\A3\ui_f\data\map\mapcontrol\quay_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {1,1,1,1}; - }; - class shipwreck - { - icon = "\A3\ui_f\data\map\mapcontrol\shipwreck_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {1,1,1,1}; - }; - class transmitter - { - icon = "\A3\ui_f\data\map\mapcontrol\transmitter_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {1,1,1,1}; - }; - class watertower - { - icon = "\A3\ui_f\data\map\mapcontrol\watertower_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {1,1,1,1}; - }; - class Cross - { - icon = "\A3\ui_f\data\map\mapcontrol\Cross_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {0,0,0,1}; - }; - class Chapel - { - icon = "\A3\ui_f\data\map\mapcontrol\Chapel_CA.paa"; - size = 24; - importance = 1; - coefMin = 0.85; - coefMax = 1.0; - color[] = {0,0,0,1}; - }; - class Bunker - { - icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa"; - size = 14; - importance = "1.5 * 14 * 0.05"; - coefMin = 0.25; - coefMax = 4; - color[] = {0,0,0,1}; - }; - class Fortress - { - icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa"; - size = 16; - importance = "2 * 16 * 0.05"; - coefMin = 0.25; - coefMax = 4; - color[] = {0,0,0,1}; - }; - class Fountain - { - icon = "\A3\ui_f\data\map\mapcontrol\fountain_ca.paa"; - size = 11; - importance = "1 * 12 * 0.05"; - coefMin = 0.25; - coefMax = 4; - color[] = {0,0,0,1}; - }; - class Ruin - { - icon = "\A3\ui_f\data\map\mapcontrol\ruin_ca.paa"; - size = 16; - importance = "1.2 * 16 * 0.05"; - coefMin = 1; - coefMax = 4; - color[] = {0,0,0,1}; - }; - class Stack - { - icon = "\A3\ui_f\data\map\mapcontrol\stack_ca.paa"; - size = 20; - importance = "2 * 16 * 0.05"; - coefMin = 0.9; - coefMax = 4; - color[] = {0,0,0,1}; - }; - class Tourism - { - icon = "\A3\ui_f\data\map\mapcontrol\tourism_ca.paa"; - size = 16; - importance = "1 * 16 * 0.05"; - coefMin = 0.7; - coefMax = 4; - color[] = {0,0,0,1}; - }; - class ViewTower - { - icon = "\A3\ui_f\data\map\mapcontrol\viewtower_ca.paa"; - size = 16; - importance = "2.5 * 16 * 0.05"; - coefMin = 0.5; - coefMax = 4; - color[] = {0,0,0,1}; - }; -}; - -#endif \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/gui/weather_meter.hpp b/TO_MERGE/cse/sys_ballistics/basicBallistics/gui/weather_meter.hpp deleted file mode 100644 index fd9e979bcd..0000000000 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/gui/weather_meter.hpp +++ /dev/null @@ -1,101 +0,0 @@ -class cse_weather_meter { - idd = 65423; - movingEnable = 1; - onLoad = "uiNamespace setVariable ['cse_weather_meter', _this select 0];CSE_WEATHER_METER_IS_OPEN_DEFLECT = true; NUL = [] spawn cse_fnc_onWeatherMeterOpened_DEFLECT;"; - onUnload = "CSE_WEATHER_METER_IS_OPEN_DEFLECT = false; "; - - class controlsBackground { - class backgroundImg: cse_gui_backgroundBase{ - idc = 1; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - x = "0 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "15 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "30 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - text = "cse\cse_sys_ballistics\basicBallistics\data\pocket_weather_meter_day_green.paa"; - moving = 1; - }; - }; - - class controls { - class labelTextMenu : cse_gui_staticBase { - idc = 10; - x = "4.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "19 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "6.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; - text = "CATEGORY NAME"; - colorBackground[] = {0,0,0,0.0}; - colorText[] = {0.0, 0.0, 0.0, 1.0}; - style = ST_CENTER; - }; - class labelTextLineOne : labelTextMenu { - idc = 11; - x = "4.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "20 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "6.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "0.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.6)"; - text = ""; - style = ST_LEFT; - }; - class labelTextLineTwo : labelTextLineOne { - idc = 12; - y = "20.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - text = ""; - }; - class labelTextLineThree : labelTextLineOne { - idc = 13; - y = "21.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - text = ""; - }; - - - - class actionClose : cse_gui_buttonBase { - idc = 30; - text = ""; - x = "4.25 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "28.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "0.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "0.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureOver = "#(argb,8,8,3)color(1,1,1,0)"; - animTextureFocused = "#(argb,8,8,3)color(1,1,1,0)"; - animTexturePressed = "#(argb,8,8,3)color(1,1,1,0)"; - animTextureDefault = "#(argb,8,8,3)color(1,1,1,0)"; - color[] = {1, 1, 1, 1}; - color2[] = {0,0,0, 1}; - colorBackgroundFocused[] = {1,1,1,1}; - colorBackground[] = {1,1,1,1}; - colorbackground2[] = {1,1,1,1}; - colorDisabled[] = {0.5,0.5,0.5,0.8}; - colorFocused[] = {0,0,0,1}; - periodFocus = 1; - periodOver = 1; - action = "closedialog 0;"; - }; - - class actionButtonLeft : actionClose { - idc = 31; - text = ""; - x = "4.25 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "23 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "1.75 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - action = "[] call cse_fnc_weatherMeterOpenWindView_DEFLECT; CSE_WEATHER_METER_CURRENT_SCREEN_DEFLECT = 'WIND_VIEW';"; - }; - class actionButtonRight : actionButtonLeft { - idc = 32; - text = ""; - x = "9.25 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "23 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "1.75 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - action = "[] call cse_fnc_weatherMeterOpenWeatherView_DEFLECT; CSE_WEATHER_METER_CURRENT_SCREEN_DEFLECT = 'WEATHER_VIEW';"; - }; - - }; -}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/init_sys_winddeflection.sqf b/TO_MERGE/cse/sys_ballistics/basicBallistics/init_sys_winddeflection.sqf deleted file mode 100644 index 33db0953d7..0000000000 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/init_sys_winddeflection.sqf +++ /dev/null @@ -1,53 +0,0 @@ -CSE_WIND_DEFLECTION_EFFECT_AI_BB = false; -CSE_WIND_DEFLECTION_ALLOW_NON_LOCAL_BB = false; - -private ["_args"]; -_args = _this; - -{ - if (_x select 0 == "forAI") then { - CSE_WIND_DEFLECTION_EFFECT_AI_BB = _x select 1; - }; - if (_x select 0 == "allowNonLocal") then { - CSE_WIND_DEFLECTION_ALLOW_NON_LOCAL_BB = _x select 1; - }; - -}foreach _args; - -cse_basicBallistics_bulletDatabase = []; -cse_basicBallistics_bulletDatabaseLastFrame = []; -cse_basicBallistics_bulletDatabaseOccupiedIndices = []; -cse_basicBallistics_bulletDatabaseFreeIndices = []; - -if (hasInterface) then { - - cse_fnc_checkWindDir_WIND = { - private ["_windDir","_windSpeed"]; - - if (vehicle player == player && [player] call cse_fnc_canInteract) then { - if(windDir >= 340 && windDir <= 360 || windDir >= 0 && windDir <= 20) then {_windDir = "North";}; - if(windDir >= 20 && windDir <= 60) then {_windDir = "North East";}; - if(windDir >= 60 && windDir <= 110) then {_windDir = "East";}; - if(windDir >= 110 && windDir <= 160) then {_windDir = "South East";}; - if(windDir >= 160 && windDir <= 200) then {_windDir = "South";}; - if(windDir >= 200 && windDir <= 250) then {_windDir = "South West";}; - if(windDir >= 250 && windDir <= 290) then {_windDir = "West";}; - if(windDir >= 290 && windDir <= 340) then {_windDir = "North West";}; - hintSilent ("Wind Direction: "+ _windDir + "\nWind Strength: " + str floor(wind distance [0,0,0]) + "m/s"); - sleep 4; - hintSilent ""; - }; - }; - - //["check_wind_direction", (["check_wind_direction","action",[0,0,0,0]] call cse_fnc_getKeyBindingFromProfile_F), cse_fnc_checkWindDir_WIND] call cse_fnc_addKeyBindingForAction_F; - //["check_wind_direction","action","Check Wind Direction","Displays a hint with the current wind direction and speed."] call cse_fnc_settingsDefineDetails_F; - - //["open_weather_meter", (["open_weather_meter","menu",[0,0,0,0]] call cse_fnc_getKeyBindingFromProfile_F), {if (([player,'cse_weather_meter'] call cse_fnc_hasMagazine)) then { createDialog "cse_weather_meter"; }; }, 65423] call cse_fnc_addKeyBindingForMenu_F; - //["open_weather_meter","menu","Open the Weather Meter","When you have the weather meter in your inventory, pressing this key will open the menu, showing you the current weather information. "] call cse_fnc_settingsDefineDetails_F; - - waituntil{!isnil "cse_gui"}; - _entries = [ - ["Weather Meter", {([player,'cse_weather_meter'] call cse_fnc_hasMagazine)}, "cse\cse_sys_ballistics\basicBallistics\data\icon_weather_meter.paa", { closeDialog 0; createDialog "cse_weather_meter"; }, "Use Weather Meter"] - ]; - ["ActionMenu","equipment", _entries ] call cse_fnc_addMultipleEntriesToRadialCategory_F; -}; diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/readme.txt b/TO_MERGE/cse/sys_ballistics/basicBallistics/readme.txt deleted file mode 100644 index 6c46f48def..0000000000 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/readme.txt +++ /dev/null @@ -1,10 +0,0 @@ -Legacy Module for cse_sys_windDeflection. -by Glowbal. Modifications by Ruthberg. - -This module has been integrated into cse_sys_ballistics as part of the CSE project restructure. -The module will stay available to allow for backwards compatibilty. All functionality will remain the same as in previous CSE versions. - ------------- -Adjustments made: -- Improved ballistics calculation based upon Ruthberg's advancedBallistics code. -- Adjusted paths to direct to cse\cse_sys_ballistics\basicBallistics instead of cse\cse_sys_windDeflection. diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/script_component.hpp b/TO_MERGE/cse/sys_ballistics/basicBallistics/script_component.hpp new file mode 100644 index 0000000000..278930e4e7 --- /dev/null +++ b/TO_MERGE/cse/sys_ballistics/basicBallistics/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT windDeflection +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_WINDDEFLECTION + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_WINDDEFLECTION + #define DEBUG_SETTINGS DEBUG_SETTINGS_WINDDEFLECTION +#endif + +#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/stringtable.xml b/TO_MERGE/cse/sys_ballistics/basicBallistics/stringtable.xml index a834816ddb..409ebf7523 100644 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/stringtable.xml +++ b/TO_MERGE/cse/sys_ballistics/basicBallistics/stringtable.xml @@ -1,32 +1,32 @@  - - + + - + Wind Information Wind Information Informacje o wietrze Información del viento - + Direction: %1 Direction: %1 Kierunek: %1 Dirección: %1 - + Speed: %1 m/s Speed: %1 m/s Prędkość: %1 Velocidad: %1 m/s - + Weather Information Weather Information Informacje o pogodzie Información Meteorológica - + Humidity: %1% Humidity: %1% Wilgotność: %1 From 8f0c6f7a1fd4a012a5c2770d9baf06370eccca74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Sun, 25 Jan 2015 00:56:23 -0300 Subject: [PATCH 002/211] common: function for drawing debug lines --- addons/common/XEH_preInit.sqf | 2 + .../functions/fnc_addLineToDebugDraw.sqf | 48 +++++++++++++++++++ .../fnc_createOrthonormalReference.sqf | 21 ++++++++ 3 files changed, 71 insertions(+) create mode 100644 addons/common/functions/fnc_addLineToDebugDraw.sqf create mode 100644 addons/common/functions/fnc_createOrthonormalReference.sqf diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index f33b3c47fe..498321b857 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -6,6 +6,7 @@ PREP(addActionEventHandler); PREP(addActionMenuEventHandler); PREP(addCameraEventHandler); PREP(addCustomEventHandler); +PREP(addLineToDebugDraw); PREP(addMapMarkerCreatedEventHandler); PREP(addScrollWheelEventHandler); PREP(adminKick); @@ -24,6 +25,7 @@ PREP(closeDialogIfTargetMoves); PREP(codeToLetter); PREP(codeToString); PREP(convertKeyCode); +PREP(createOrthonormalReference); PREP(currentChannel); PREP(disableUserInput); PREP(displayText); diff --git a/addons/common/functions/fnc_addLineToDebugDraw.sqf b/addons/common/functions/fnc_addLineToDebugDraw.sqf new file mode 100644 index 0000000000..cfe45359c9 --- /dev/null +++ b/addons/common/functions/fnc_addLineToDebugDraw.sqf @@ -0,0 +1,48 @@ +/* + * Author: CAA-Picard + * + * Add line to draw on debug + * + * Argument: + * 0: Start point ASL (Array) + * 1: End point ASL (Array) + * 2: Color (Array) + * + * Return value: + * + */ +#include "script_component.hpp" + +if (isNil QGVAR(debugLines)) then { + GVAR(debugLines) = []; + GVAR(debugLinesIndex) = 0; +}; + +if (count GVAR(debugLines) < 100) then { + GVAR(debugLines) pushBack _this; + GVAR(debugLinesIndex) = 0; +} else { + GVAR(debugLines) set [GVAR(debugLinesIndex), _this]; + GVAR(debugLinesIndex) = (GVAR(debugLinesIndex) + 1) mod 100; +}; + +if (isNil QGVAR(debugDrawHandler)) then { + GVAR(debugDrawHandler) = addMissionEventHandler ["Draw3D", { + if (count GVAR(debugLines) == 0) exitWith { + removeMissionEventHandler GVAR(debugDrawHandler); + GVAR(debugDrawHandler) = nil; + }; + + { + _p0 = _x select 0; + if (!surfaceIsWater _p0) then { + _p0 = ASLtoATL _p0; + }; + _p1 = _x select 1; + if (!surfaceIsWater _p1) then { + _p1 = ASLtoATL _p1; + }; + drawLine3D [_p0, _p1, _x select 2]; + } forEach GVAR(debugLines); + }]; +}; \ No newline at end of file diff --git a/addons/common/functions/fnc_createOrthonormalReference.sqf b/addons/common/functions/fnc_createOrthonormalReference.sqf new file mode 100644 index 0000000000..a92464a7f3 --- /dev/null +++ b/addons/common/functions/fnc_createOrthonormalReference.sqf @@ -0,0 +1,21 @@ +/* + * Author: CAA-Picard + * + * Returns a orthonormal system of reference aligned with the supplied vector + * + * Argument: + * Vector to align the coordinate system with (Array) + * + * Return value: + * 0: v1 (Array) + * 1: v2 (Array) + * 2: v3 (Array) + */ +#include "script_component.hpp" + +private ["_v1","_v2","_v3"]; +_v1 = vectorNormalized _this; +_v2 = vectorNormalized (_v1 vectorCrossProduct [0,0,1]); +_v3 = _v2 vectorCrossProduct _v1; + +[_v1,_v2,_v3] From 8d1ee8c2c2989241ee39b886c04f09728bb79c14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Sun, 25 Jan 2015 00:59:20 -0300 Subject: [PATCH 003/211] backblast: overhaul - Replace firedNear by firedBIS XEH - Calculate the origin of the backblast and overpressure zones using the projectile position and direction - Handle all effects for each unit on their local machine - Posibility of drawing effect cone for debug - Simplified angle calculations --- addons/backblast/CfgEventHandlers.hpp | 14 ++- addons/backblast/XEH_postInit.sqf | 4 + addons/backblast/XEH_preInit.sqf | 6 +- .../functions/fnc_backblastDamage.sqf | 67 ++++++++++++++ .../functions/fnc_fireLauncherBackblast.sqf | 91 +++++++++++++++++++ .../functions/fnc_fireOverpressureZone.sqf | 65 +++++++++++++ .../backblast/functions/fnc_getDistance.sqf | 45 +++++---- .../functions/fnc_launcherBackblast.sqf | 72 --------------- .../functions/fnc_overpressureDamage.sqf | 65 +++++++++++++ .../functions/fnc_tankDangerZone.sqf | 54 ----------- 10 files changed, 334 insertions(+), 149 deletions(-) create mode 100644 addons/backblast/XEH_postInit.sqf create mode 100644 addons/backblast/functions/fnc_backblastDamage.sqf create mode 100644 addons/backblast/functions/fnc_fireLauncherBackblast.sqf create mode 100644 addons/backblast/functions/fnc_fireOverpressureZone.sqf delete mode 100644 addons/backblast/functions/fnc_launcherBackblast.sqf create mode 100644 addons/backblast/functions/fnc_overpressureDamage.sqf delete mode 100644 addons/backblast/functions/fnc_tankDangerZone.sqf diff --git a/addons/backblast/CfgEventHandlers.hpp b/addons/backblast/CfgEventHandlers.hpp index a336a5dd41..979a683aeb 100644 --- a/addons/backblast/CfgEventHandlers.hpp +++ b/addons/backblast/CfgEventHandlers.hpp @@ -5,13 +5,21 @@ class Extended_PreInit_EventHandlers { }; }; -class Extended_FiredNear_EventHandlers { +class Extended_PostInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_postInit) ); + }; +}; + +class Extended_FiredBIS_EventHandlers { class CAManBase { class GVAR(LauncherBackblast) { - FiredNear = QUOTE( if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 3 >> 'ACE_Backblast_Damage') > 0}) then {_this call FUNC(launcherBackblast)} ); + firedBIS = QUOTE( if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Backblast_Damage') > 0}) then {_this call FUNC(fireLauncherBackblast)} ); }; + }; + class AllVehicles { class GVAR(TankDangerZone) { - FiredNear = QUOTE( if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 3 >> 'ACE_DangerZone_Damage') > 0}) then {_this call FUNC(tankDangerZone)} ); + firedBIS = QUOTE( if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_DangerZone_Damage') > 0}) then {_this call FUNC(fireOverpressureZone)} ); }; }; }; diff --git a/addons/backblast/XEH_postInit.sqf b/addons/backblast/XEH_postInit.sqf new file mode 100644 index 0000000000..72ca42a012 --- /dev/null +++ b/addons/backblast/XEH_postInit.sqf @@ -0,0 +1,4 @@ +#include "script_component.hpp" + +["backblast", FUNC(backblastDamage)] call EFUNC(common,addEventHandler); +["overpressure", FUNC(overpressureDamage)] call EFUNC(common,addEventHandler); diff --git a/addons/backblast/XEH_preInit.sqf b/addons/backblast/XEH_preInit.sqf index 1becf28c05..1927bc850b 100644 --- a/addons/backblast/XEH_preInit.sqf +++ b/addons/backblast/XEH_preInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +PREP(backblastDamage); +PREP(fireLauncherBackblast); +PREP(fireOverpressureZone); PREP(getDistance); -PREP(launcherBackblast); -PREP(tankDangerZone); +PREP(overpressureDamage); diff --git a/addons/backblast/functions/fnc_backblastDamage.sqf b/addons/backblast/functions/fnc_backblastDamage.sqf new file mode 100644 index 0000000000..21d2e81736 --- /dev/null +++ b/addons/backblast/functions/fnc_backblastDamage.sqf @@ -0,0 +1,67 @@ +/* + * Author: Commy2 and CAA-Picard + * + * Calculate and apply backblast damage to potentially affected local units + * + * Argument: + * 0: Unit that fired (Object) + * 1: Pos ASL of the projectile (Array) + * 2: Direction of the projectile (Array) + * 3: Weapon fired (String) + * + * Return value: + * None + */ +#include "script_component.hpp" + +EXPLODE_4_PVT(_this,_firer,_posASL,_direction,_weapon); + +private ["_backblastAngle","_backblastRange","_backblastDamage"]; +_backblastAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Angle") / 2; +_backblastRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Range"); +_backblastDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Damage"); +TRACE_4("Parameters:",_backblastAngle,_backblastRange,_backblastDamage,_weapon); + +_pos = _posASL; +if (!surfaceIsWater _pos) then { + _pos = ASLtoATL _pos; +}; + +_affected = _pos nearEntities ["CAManBase", _backblastRange]; +{ + _unit = _x; + if (local _unit && _unit != _firer && vehicle _unit == _unit) then { + + _targetPositionASL = eyePos _unit; + _relativePosition = _targetPositionASL vectorDiff _posASL; + _axisDistance = _relativePosition vectorDotProduct _direction; + _distance = vectorMagnitude _relativePosition; + _angle = acos (_axisDistance / _distance); + + _line = [_posASL, _targetPositionASL, _firer, _unit]; + _line2 = [_posASL, _targetPositionASL]; + TRACE_4("Affected:",_unit,_axisDistance,_distance,_angle); + if (_angle < _backblastAngle && {_distance < _backblastRange} && {!lineIntersects _line} && {!terrainIntersectASL _line2}) then { + _alpha = sqrt (1 - _distance / _backblastRange); + _beta = sqrt (1 - _angle / _backblastAngle); + + _damage = 2 * _alpha * _beta * _backblastDamage; + + // If the target is the ACE_player + if (_unit == ACE_player) then {[_damage * 100] call BIS_fnc_bloodEffect}; + + // TODO: Sort this interaction with medical + if (isClass (configFile >> "CfgPatches" >> "ACE_Medical")) then { + [_unit, "HitBody", ([_unit, "", ((_unit getHitPointDamage "HitBody") + _damage), objNull, objNull] call EFUNC(medical,handleDamage))] call EFUNC(medical,setHitPointDamage); + _unit spawn { + sleep 0.5; + [_this, "", 0, objNull, objNull] call EFUNC(medical,handleDamage); + }; + } else { + _unit setDamage (damage _unit + _damage); + }; + }; + }; +} forEach _affected; + + diff --git a/addons/backblast/functions/fnc_fireLauncherBackblast.sqf b/addons/backblast/functions/fnc_fireLauncherBackblast.sqf new file mode 100644 index 0000000000..5970e7b9c2 --- /dev/null +++ b/addons/backblast/functions/fnc_fireLauncherBackblast.sqf @@ -0,0 +1,91 @@ +/* + * Author: Commy2 and CAA-Picard + * + * Handle fire of local launchers + * + * Argument: + * 0: Unit that fired (Object) + * 1: Weapon fired (String) + * 2: Muzzle (String) + * 3: Mode (String) + * 4: Ammo (String) + * 5: Magazine (String) + * 6: Projectile (Object) + * + * Return value: + * None + */ +//#define DEBUG_MODE_FULL +#include "script_component.hpp" + +EXPLODE_7_PVT(_this,_firer,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile); + +// Prevent AI from causing backblast damage +if !([_firer] call EFUNC(common,isPlayer)) exitWith {}; + +private ["_position","_direction","_distance","_alpha","_beta","_damage","_affected"]; +_position = getPosASL _projectile; +_direction = [0, 0, 0] vectorDiff (vectorDir _projectile); + +private ["_backblastAngle","_backblastRange","_backblastDamage"]; +_backblastAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Angle") / 2; +_backblastRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Range"); +_backblastDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Damage"); + + +// Damage to others +_affected = getPos _projectile nearEntities ["CAManBase", _backblastRange]; +// Let each client handle their own affected units +["backblast", _affected, [_firer,_position,_direction,_weapon]] call EFUNC(common,targetEvent); + + +// Damage to the firer +_distance = [_position, _direction, _backblastRange] call FUNC(getDistance); +TRACE_1("Distance", _distance); + +if (_distance < _backblastRange) then { + + _alpha = sqrt (1 - _distance / _backblastRange); + _beta = sqrt 0.5; + + _damage = 2 * _alpha * _beta * _backblastDamage; + [_damage * 100] call BIS_fnc_bloodEffect; + + // TODO: Sort this interaction with medical + if (isClass (configFile >> "CfgPatches" >> "ACE_Medical")) then { + [_firer, "HitBody", ([_firer, "", ((_firer getHitPointDamage "HitBody") + _damage), objNull, objNull] call EFUNC(medical,handleDamage))] call EFUNC(medical,setHitPointDamage); + } else { + _firer setDamage (damage _firer + _damage); + }; +}; + +// Draw debug lines +#ifdef DEBUG_MODE_FULL + [ _position, + _position vectorAdd (_direction vectorMultiply _backblastRange), + [1,1,0,1] + ] call EFUNC(common,addLineToDebugDraw); + + _ref = _direction call EFUNC(common,createOrthonormalReference); + [ _position, + _position vectorAdd (_direction vectorMultiply _backblastRange) vectorAdd ((_ref select 1) vectorMultiply _backblastRange * tan _backblastAngle), + [1,1,0,1] + ] call EFUNC(common,addLineToDebugDraw); + [ _position, + _position vectorAdd (_direction vectorMultiply _backblastRange) vectorDiff ((_ref select 1) vectorMultiply _backblastRange * tan _backblastAngle), + [1,1,0,1] + ] call EFUNC(common,addLineToDebugDraw); + [ _position, + _position vectorAdd (_direction vectorMultiply _backblastRange) vectorAdd ((_ref select 2) vectorMultiply _backblastRange * tan _backblastAngle), + [1,1,0,1] + ] call EFUNC(common,addLineToDebugDraw); + [ _position, + _position vectorAdd (_direction vectorMultiply _backblastRange) vectorDiff ((_ref select 2) vectorMultiply _backblastRange * tan _backblastAngle), + [1,1,0,1] + ] call EFUNC(common,addLineToDebugDraw); + + [ _position, + _position vectorAdd (_direction vectorMultiply (_distance min _backblastRange)), + [1,0,0,1] + ] call EFUNC(common,addLineToDebugDraw); +#endif \ No newline at end of file diff --git a/addons/backblast/functions/fnc_fireOverpressureZone.sqf b/addons/backblast/functions/fnc_fireOverpressureZone.sqf new file mode 100644 index 0000000000..c638f4ad82 --- /dev/null +++ b/addons/backblast/functions/fnc_fireOverpressureZone.sqf @@ -0,0 +1,65 @@ +/* + * Author: Commy2 and CAA-Picard + * + * Handle fire of local vehicle weapons creating overpressure zones + * + * Argument: + * 0: Unit that fired (Object) + * 1: Weapon fired (String) + * 2: Muzzle (String) + * 3: Mode (String) + * 4: Ammo (String) + * 5: Magazine (String) + * 6: Projectile (Object) + * + * Return value: + * None + *///#define DEBUG_MODE_FULL +#include "script_component.hpp" + +EXPLODE_7_PVT(_this,_firer,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile); + +// Prevent AI from causing backblast damage +if !([gunner _firer] call EFUNC(common,isPlayer)) exitWith {}; + +private ["_position","_direction","_distance","_alpha","_beta","_damage","_affected"]; +_position = getPosASL _projectile; +_direction = vectorDir _projectile; + +private ["_dangerZoneAngle","_dangerZoneRange","_dangerZoneDamage"]; +_dangerZoneAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Angle") / 2; +_dangerZoneRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Range"); +_dangerZoneDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Damage"); + + +// Damage to others +_affected = getPos _projectile nearEntities ["CAManBase", _dangerZoneRange]; +// Let each client handle their own affected units +["overpressure", _affected, [_firer,_position,_direction,_weapon]] call EFUNC(common,targetEvent); + +// Draw debug lines +#ifdef DEBUG_MODE_FULL + [ _position, + _position vectorAdd (_direction vectorMultiply _dangerZoneRange), + [1,0,0,1] + ] call EFUNC(common,addLineToDebugDraw); + + _ref = _direction call EFUNC(common,createOrthonormalReference); + [ _position, + _position vectorAdd (_direction vectorMultiply _dangerZoneRange) vectorAdd ((_ref select 1) vectorMultiply _dangerZoneRange * tan _dangerZoneAngle), + [1,1,0,1] + ] call EFUNC(common,addLineToDebugDraw); + [ _position, + _position vectorAdd (_direction vectorMultiply _dangerZoneRange) vectorDiff ((_ref select 1) vectorMultiply _dangerZoneRange * tan _dangerZoneAngle), + [1,1,0,1] + ] call EFUNC(common,addLineToDebugDraw); + [ _position, + _position vectorAdd (_direction vectorMultiply _dangerZoneRange) vectorAdd ((_ref select 2) vectorMultiply _dangerZoneRange * tan _dangerZoneAngle), + [1,1,0,1] + ] call EFUNC(common,addLineToDebugDraw); + [ _position, + _position vectorAdd (_direction vectorMultiply _dangerZoneRange) vectorDiff ((_ref select 2) vectorMultiply _dangerZoneRange * tan _dangerZoneAngle), + [1,1,0,1] + ] call EFUNC(common,addLineToDebugDraw); + +#endif \ No newline at end of file diff --git a/addons/backblast/functions/fnc_getDistance.sqf b/addons/backblast/functions/fnc_getDistance.sqf index 83b290e2b0..b6f61548c6 100644 --- a/addons/backblast/functions/fnc_getDistance.sqf +++ b/addons/backblast/functions/fnc_getDistance.sqf @@ -1,31 +1,40 @@ -// by commy2 +/* + * Author: Commy2 and CAA-Picard + * + * Calculate the distance to the first intersection of a line + * + * Argument: + * 0: Pos ASL of origin (Array) + * 1: Direction (Array) + * 2: Max distance to search (Number) + * + * Return value: + * Distance to intersection (+- 0.1 m) + */ #include "script_component.hpp" -private ["_position", "_direction", "_maxDistance", "_distance", "_iteration", "_laser", "_line"]; +private ["_distance", "_interval", "_line", "_line"]; -_position = + _this select 0; -_direction = + _this select 1; -_maxDistance = _this select 2; +EXPLODE_3_PVT(_this,_posASL,_direction,_maxDistance); _distance = _maxDistance; -_iteration = _distance; -_laser = []; -_line = [_position, _laser]; +_interval = _distance; +_line = [_posASL, []]; while { - _iteration > 0.1 + _interval > 0.1 } do { - _iteration = _iteration / 2; + _interval = _interval / 2; - _laser set [0, (_position select 0) - _distance * (_direction select 0)]; - _laser set [1, (_position select 1) - _distance * (_direction select 1)]; - _laser set [2, (_position select 2) - _distance * (_direction select 2)]; + _line set [1, _posASL vectorAdd (_direction vectorMultiply _distance)]; - _intersections = { - _x isKindOf "Static" || {_x isKindOf "AllVehicles"} - } count (lineIntersectsWith _line); + _intersections = { + _x isKindOf "Static" || {_x isKindOf "AllVehicles"} + } count (lineIntersectsWith _line); - _distance = _distance + ([1, -1] select (_intersections > 0)) * _iteration; + _distance = _distance + ([1, -1] select (_intersections > 0 || {terrainIntersectASL _line})) * _interval; + + if (_distance > _maxDistance) exitWith {_distance = 999}; }; -if (_distance > _maxDistance) then {999} else {_distance} +_distance diff --git a/addons/backblast/functions/fnc_launcherBackblast.sqf b/addons/backblast/functions/fnc_launcherBackblast.sqf deleted file mode 100644 index b2cde50c5d..0000000000 --- a/addons/backblast/functions/fnc_launcherBackblast.sqf +++ /dev/null @@ -1,72 +0,0 @@ -// by commy2 -#include "script_component.hpp" - -_unit = _this select 0; -_firer = _this select 1; -_distance = _this select 2; -_weapon = _this select 3; - -if (vehicle _unit != _unit || {!([_firer] call EFUNC(common,isPlayer))}) exitWith {}; - -_backblastAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Angle") / 2; -_backblastRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Range"); -_backblastDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Damage"); - -_position = eyePos _firer; -_direction = _firer weaponDirection currentWeapon _firer; - -if (_unit == _firer) then { - _distance = [_position, _direction, _backblastRange] call FUNC(getDistance); - hint format ["%1", _distance]; - if (_distance < _backblastRange) then { - _alpha = sqrt (1 - _distance / _backblastRange); - _beta = sqrt 0.5; - - _damage = 2 * _alpha * _beta * _backblastDamage; - [_damage * 100] call BIS_fnc_bloodEffect; - - // TODO: Sort this interaction with medical - if (isClass (configFile >> "CfgPatches" >> "ACE_Medical")) then { - [_unit, "HitBody", ([_unit, "", ((_unit getHitPointDamage "HitBody") + _damage), objNull, objNull] call EFUNC(medical,handleDamage))] call EFUNC(medical,setHitPointDamage); - } else { - _unit setDamage (damage _unit + _damage); - }; - - }; -} else { - _direction = [0, 0, 0] vectorDiff _direction; - - _azimuth = (_direction select 0) atan2 (_direction select 1); - _inclination = asin (_direction select 2); - - _relativePosition = eyePos _unit; - _relativeDirection = _relativePosition vectorDiff _position; - - _relativeAzimuth = (_relativeDirection select 0) atan2 (_relativeDirection select 1); - _relativeInclination = asin (_relativeDirection select 2); - - _angle = sqrt ((_relativeAzimuth - _azimuth) ^ 2 + (_relativeInclination - _inclination) ^ 2); - _distance = vectorMagnitude _relativeDirection; - - _line = [_position, _relativePosition]; - - if (_angle < _backblastAngle && {_distance < _backblastRange} && {!lineIntersects _line} && {!terrainIntersectASL _line}) then { - _alpha = sqrt (1 - _distance / _backblastRange); - _beta = sqrt (1 - _angle / _backblastAngle); - - _damage = 2 * _alpha * _beta * _backblastDamage; - if (_unit == ACE_player) then {[_damage * 100] call BIS_fnc_bloodEffect}; - - // TODO: Sort this interaction with medical - if (isClass (configFile >> "CfgPatches" >> "ACE_Medical")) then { - [_unit, "HitBody", ([_unit, "", ((_unit getHitPointDamage "HitBody") + _damage), objNull, objNull] call EFUNC(medical,handleDamage))] call EFUNC(medical,setHitPointDamage); - _unit spawn { - sleep 0.5; - [_this, "", 0, objNull, objNull] call EFUNC(medical,handleDamage); - }; - } else { - _unit setDamage (damage _unit + _damage); - }; - - }; -}; diff --git a/addons/backblast/functions/fnc_overpressureDamage.sqf b/addons/backblast/functions/fnc_overpressureDamage.sqf new file mode 100644 index 0000000000..5dd7447ce8 --- /dev/null +++ b/addons/backblast/functions/fnc_overpressureDamage.sqf @@ -0,0 +1,65 @@ +/* + * Author: Commy2 and CAA-Picard + * + * Calculate and apply overpressure damage to potentially affected local units + * + * Argument: + * 0: Unit that fired (Object) + * 1: Pos ASL of the projectile (Array) + * 2: Direction of the projectile (Array) + * 3: Weapon fired (String) + * + * Return value: + * None + */ +#include "script_component.hpp" + +EXPLODE_4_PVT(_this,_firer,_posASL,_direction,_weapon); + +private ["_dangerZoneAngle","_dangerZoneRange","_dangerZoneDamage"]; +_dangerZoneAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Angle") / 2; +_dangerZoneRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Range"); +_dangerZoneDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Damage"); +TRACE_4("Parameters:",_dangerZoneAngle,_dangerZoneRange,_dangerZoneDamage,_weapon); + +_pos = _posASL; +if (!surfaceIsWater _pos) then { + _pos = ASLtoATL _pos; +}; + +_affected = _pos nearEntities ["CAManBase", _dangerZoneRange]; +{ + _unit = _x; + if (local _unit && _unit != _firer && vehicle _unit == _unit) then { + + _targetPositionASL = eyePos _unit; + _relativePosition = _targetPositionASL vectorDiff _posASL; + _axisDistance = _relativePosition vectorDotProduct _direction; + _distance = vectorMagnitude _relativePosition; + _angle = acos (_axisDistance / _distance); + + _line = [_posASL, _targetPositionASL, _firer, _unit]; + _line2 = [_posASL, _targetPositionASL]; + TRACE_4("Affected:",_unit,_axisDistance,_distance,_angle); + if (_angle < _dangerZoneAngle && {_distance < _dangerZoneRange} && {!lineIntersects _line} && {!terrainIntersectASL _line2}) then { + _alpha = sqrt (1 - _distance / _dangerZoneRange); + _beta = sqrt (1 - _angle / _dangerZoneAngle); + + _damage = 2 * _alpha * _beta * _dangerZoneDamage; + + // If the target is the ACE_player + if (_unit == ACE_player) then {[_damage * 100] call BIS_fnc_bloodEffect}; + + // @todo: Sort this interaction with medical + if (isClass (configFile >> "CfgPatches" >> "ACE_Medical")) then { + [_unit, "HitBody", ([_unit, "", ((_unit getHitPointDamage "HitBody") + _damage), objNull, objNull] call EFUNC(medical,handleDamage))] call EFUNC(medical,setHitPointDamage); + _unit spawn { + sleep 0.5; + [_this, "", 0, objNull, objNull] call EFUNC(medical,handleDamage); + }; + } else { + _unit setDamage (damage _unit + _damage); + }; + }; + }; +} forEach _affected; diff --git a/addons/backblast/functions/fnc_tankDangerZone.sqf b/addons/backblast/functions/fnc_tankDangerZone.sqf deleted file mode 100644 index 0371ec9620..0000000000 --- a/addons/backblast/functions/fnc_tankDangerZone.sqf +++ /dev/null @@ -1,54 +0,0 @@ -// by commy2 -#include "script_component.hpp" - -#define BARREL_MUZZLE "usti hlavne" - -_unit = _this select 0; -_vehicle = vehicle (_this select 1); -_distance = _this select 2; -_weapon = _this select 3; - -if (vehicle _unit != _unit || {!([gunner _firer] call EFUNC(common,isPlayer))}) exitWith {}; - -_dangerZoneAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Angle") / 2; -_dangerZoneRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Range"); -_dangerZoneDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Damage"); - -_position = ATLToASL (_vehicle modelToWorld (_vehicle selectionPosition BARREL_MUZZLE)); -_direction = _vehicle weaponDirection _weapon; - -if (_unit != _vehicle) then { - _azimuth = (_direction select 0) atan2 (_direction select 1); - _inclination = asin (_direction select 2); - - _relativePosition = eyePos _unit; - _relativeDirection = _relativePosition vectorDiff _position; - - _relativeAzimuth = (_relativeDirection select 0) atan2 (_relativeDirection select 1); - _relativeInclination = asin (_relativeDirection select 2); - - _angle = sqrt ((_relativeAzimuth - _azimuth) ^ 2 + (_relativeInclination - _inclination) ^ 2); - _distance = vectorMagnitude _relativeDirection; - - _line = [_position, _relativePosition]; - - if (_angle < _dangerZoneAngle && {_distance < _dangerZoneRange} && {!lineIntersects (_line + [_vehicle])} && {!terrainIntersectASL _line}) then { - _alpha = sqrt (1 - _distance / _dangerZoneRange); - _beta = sqrt (1 - _angle / _dangerZoneAngle); - - _damage = 2 * _alpha * _beta * _dangerZoneDamage; - if (_unit == ACE_player) then {[_damage * 100] call BIS_fnc_bloodEffect}; - - // TODO: Sort this interaction with medical - if (isClass (configFile >> "CfgPatches" >> "ACE_Medical")) then { - [_unit, "HitBody", ([_unit, "", ((_unit getHitPointDamage "HitBody") + _damage), objNull, objNull] call EFUNC(medical,handleDamage))] call EFUNC(medical,setHitPointDamage); - _unit spawn { - sleep 0.5; - [_this, "", 0, objNull, objNull] call EFUNC(medical,handleDamage); - }; - } else { - _unit setDamage (damage _unit + _damage); - }; - - }; -}; From 05d209191cf60d82ac8581a50f0f2fda18079d3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Sun, 25 Jan 2015 01:05:19 -0300 Subject: [PATCH 004/211] common: fixed fnc_addLineToDebugDraw --- addons/common/functions/fnc_addLineToDebugDraw.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_addLineToDebugDraw.sqf b/addons/common/functions/fnc_addLineToDebugDraw.sqf index cfe45359c9..1c7d5d5cd1 100644 --- a/addons/common/functions/fnc_addLineToDebugDraw.sqf +++ b/addons/common/functions/fnc_addLineToDebugDraw.sqf @@ -29,7 +29,7 @@ if (count GVAR(debugLines) < 100) then { if (isNil QGVAR(debugDrawHandler)) then { GVAR(debugDrawHandler) = addMissionEventHandler ["Draw3D", { if (count GVAR(debugLines) == 0) exitWith { - removeMissionEventHandler GVAR(debugDrawHandler); + removeMissionEventHandler ["Draw3D", GVAR(debugDrawHandler)]; GVAR(debugDrawHandler) = nil; }; From 30cd9a7499eda9287e7ae4815f8a349dd6041206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Sun, 25 Jan 2015 01:16:44 -0300 Subject: [PATCH 005/211] me too --- addons/backblast/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/backblast/config.cpp b/addons/backblast/config.cpp index 88de936cf9..8c59163c54 100644 --- a/addons/backblast/config.cpp +++ b/addons/backblast/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2", "KoffeinFlummi"}; + author[] = {"commy2", "KoffeinFlummi", "CAA-Picard"}; authorUrl = "https://github.com/commy2/"; VERSION_CONFIG; }; From 39a4977efe45d1c150e9568d0283d178c96f3bb5 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 27 Jan 2015 22:42:45 -0600 Subject: [PATCH 006/211] Port: Wirecutting from AGM by gpgpgpgp, edited by commy2 Doesn't really work as well as I'd like (some fences are uncuttable) --- .../functions/fnc_addToTooltip.sqf | 2 +- addons/logistics_wirecutter/$PBOPREFIX$ | 1 + .../logistics_wirecutter/CfgEventHandlers.hpp | 6 ++ addons/logistics_wirecutter/CfgSounds.hpp | 12 +++ addons/logistics_wirecutter/CfgVehicles.hpp | 98 ++++++++++++++++++ addons/logistics_wirecutter/XEH_preInit.sqf | 9 ++ addons/logistics_wirecutter/config.cpp | 17 +++ .../functions/fnc_cutDownFence.sqf | 24 +++++ .../functions/fnc_cutDownFenceAbort.sqf | 4 + .../functions/fnc_cutDownFenceCallback.sqf | 7 ++ .../functions/script_component.hpp | 1 + .../logistics_wirecutter/script_component.hpp | 12 +++ .../logistics_wirecutter/sound/wire_cut.ogg | Bin 0 -> 53392 bytes .../sound/wire_cut_long.ogg | Bin 0 -> 110622 bytes addons/logistics_wirecutter/stringtable.xml | 54 ++++++++++ .../logistics_wirecutter/ui/wirecutter_ca.paa | Bin 0 -> 22016 bytes 16 files changed, 246 insertions(+), 1 deletion(-) create mode 100644 addons/logistics_wirecutter/$PBOPREFIX$ create mode 100644 addons/logistics_wirecutter/CfgEventHandlers.hpp create mode 100644 addons/logistics_wirecutter/CfgSounds.hpp create mode 100644 addons/logistics_wirecutter/CfgVehicles.hpp create mode 100644 addons/logistics_wirecutter/XEH_preInit.sqf create mode 100644 addons/logistics_wirecutter/config.cpp create mode 100644 addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf create mode 100644 addons/logistics_wirecutter/functions/fnc_cutDownFenceAbort.sqf create mode 100644 addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf create mode 100644 addons/logistics_wirecutter/functions/script_component.hpp create mode 100644 addons/logistics_wirecutter/script_component.hpp create mode 100644 addons/logistics_wirecutter/sound/wire_cut.ogg create mode 100644 addons/logistics_wirecutter/sound/wire_cut_long.ogg create mode 100644 addons/logistics_wirecutter/stringtable.xml create mode 100644 addons/logistics_wirecutter/ui/wirecutter_ca.paa diff --git a/addons/interaction/functions/fnc_addToTooltip.sqf b/addons/interaction/functions/fnc_addToTooltip.sqf index 894223b68e..9f5595a9bc 100644 --- a/addons/interaction/functions/fnc_addToTooltip.sqf +++ b/addons/interaction/functions/fnc_addToTooltip.sqf @@ -2,4 +2,4 @@ #include "script_component.hpp" -QGVAR(CurrentTooltip) pushBack (_this select 0); +GVAR(CurrentTooltip) pushBack (_this select 0); diff --git a/addons/logistics_wirecutter/$PBOPREFIX$ b/addons/logistics_wirecutter/$PBOPREFIX$ new file mode 100644 index 0000000000..91d50071d3 --- /dev/null +++ b/addons/logistics_wirecutter/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\logistics_wirecutter \ No newline at end of file diff --git a/addons/logistics_wirecutter/CfgEventHandlers.hpp b/addons/logistics_wirecutter/CfgEventHandlers.hpp new file mode 100644 index 0000000000..f0a9f14d91 --- /dev/null +++ b/addons/logistics_wirecutter/CfgEventHandlers.hpp @@ -0,0 +1,6 @@ + +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; diff --git a/addons/logistics_wirecutter/CfgSounds.hpp b/addons/logistics_wirecutter/CfgSounds.hpp new file mode 100644 index 0000000000..9958190ec1 --- /dev/null +++ b/addons/logistics_wirecutter/CfgSounds.hpp @@ -0,0 +1,12 @@ +class CfgSounds { + class ACE_Wirecutter_sound { + name = "ACE_wirecutter_sound"; + sound[] = {QUOTE(PATHTOF(sound\wire_cut.ogg)), "db-0", 1}; + titles[] = {}; + }; + class ACE_Wirecutter_sound_long { + name = "ACE_wirecutter_sound_long"; + sound[] = {QUOTE(PATHTOF(sound\wire_cut_long.ogg)), "db-0", 1}; + titles[] = {}; + }; +}; diff --git a/addons/logistics_wirecutter/CfgVehicles.hpp b/addons/logistics_wirecutter/CfgVehicles.hpp new file mode 100644 index 0000000000..41c47c70b8 --- /dev/null +++ b/addons/logistics_wirecutter/CfgVehicles.hpp @@ -0,0 +1,98 @@ +#define MACRO_CUTWIRE \ + class ACE_Wirecutter_cut { \ + displayName = "$STR_ACE_CutFence"; \ + distance = 4; \ + condition = QUOTE('ToolKit' in items _player && {alive _target}); \ + statement = QUOTE([ARR_2(5, _target)] call FUNC(cutDownFence)); \ + showDisabled = 1; \ + priority = 2.1; \ + icon = QUOTE(PATHTOF(ui\wirecutter_ca.paa)); \ + }; + +#define MACRO_CUTWIRE_LONG \ + class ACE_Wirecutter_cut { \ + displayName = "$STR_ACE_CutFence"; \ + distance = 4; \ + condition = QUOTE('ToolKit' in items _player && {alive _target}); \ + statement = QUOTE([ARR_2(5, _target)] call FUNC(cutDownFence)); \ + showDisabled = 1; \ + priority = 2.1; \ + icon = QUOTE(PATHTOF(ui\wirecutter_ca.paa)); \ + }; + +class CfgVehicles { + + class Wall_F; + class Land_Net_Fence_4m_F: Wall_F { + class ACE_Actions { + MACRO_CUTWIRE + }; + }; + class Land_Net_Fence_8m_F: Wall_F { + class ACE_Actions { + MACRO_CUTWIRE_LONG + }; + }; + class Land_Net_FenceD_8m_F: Wall_F { + class ACE_Actions { + MACRO_CUTWIRE + }; + }; + class Land_New_WiredFence_5m_F: Wall_F { + class ACE_Actions { + MACRO_CUTWIRE + }; + }; + class Land_New_WiredFence_10m_Dam_F: Wall_F { + class ACE_Actions { + MACRO_CUTWIRE + }; + }; + class Land_New_WiredFence_10m_F: Wall_F { + class ACE_Actions { + MACRO_CUTWIRE_LONG + }; + }; + class Land_Pipe_fence_4m_F: Wall_F { + class ACE_Actions { + MACRO_CUTWIRE + }; + }; + class Land_Pipe_fence_4mNoLC_F: Wall_F { + class ACE_Actions { + MACRO_CUTWIRE + }; + }; + class Land_SportGround_fence_F: Wall_F { + class ACE_Actions { + MACRO_CUTWIRE + }; + }; + class Land_Wired_Fence_4m_F: Wall_F { + class ACE_Actions { + MACRO_CUTWIRE + }; + }; + class Land_Wired_Fence_4mD_F: Wall_F { + class ACE_Actions { + MACRO_CUTWIRE + }; + }; + class Land_Wired_Fence_8m_F: Wall_F { + class ACE_Actions { + MACRO_CUTWIRE_LONG + }; + }; + class Land_Wired_Fence_8mD_F: Wall_F { + class ACE_Actions { + MACRO_CUTWIRE + }; + }; + + class NonStrategic; + class Land_Razorwire_F: NonStrategic { + class ACE_Actions { + MACRO_CUTWIRE + }; + }; +}; diff --git a/addons/logistics_wirecutter/XEH_preInit.sqf b/addons/logistics_wirecutter/XEH_preInit.sqf new file mode 100644 index 0000000000..facd43451e --- /dev/null +++ b/addons/logistics_wirecutter/XEH_preInit.sqf @@ -0,0 +1,9 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(cutDownFence); +PREP(cutDownFenceAbort); +PREP(cutDownFenceCallback); + +ADDON = true; diff --git a/addons/logistics_wirecutter/config.cpp b/addons/logistics_wirecutter/config.cpp new file mode 100644 index 0000000000..2cc1227a7d --- /dev/null +++ b/addons/logistics_wirecutter/config.cpp @@ -0,0 +1,17 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {"gpgpgpgp"}; + authorUrl = ""; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" +#include "CfgVehicles.hpp" +#include "CfgSounds.hpp" diff --git a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf new file mode 100644 index 0000000000..092b6348b0 --- /dev/null +++ b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf @@ -0,0 +1,24 @@ +// by gpgpgpgp, edited by commy2 +#include "script_component.hpp" + +PARAMS_2(_timeToCut,_fenceObject); + +// if (cadetMode) then { + // { + // [ACE_player, "{_this groupChat localize 'STR_ACE_CuttingFenceChat'}", _x] call ACE_Core_fnc_execRemoteFnc; + // } forEach units group ACE_player; +// }; + +if !([ACE_player] call EFUNC(common,isEngineer)) then { + _timeToCut = _timeToCut + 5; +}; + +[ACE_player, "AinvPknlMstpSnonWnonDr_medic5", 0] call EFUNC(common,doAnimation); + +if (_timeToCut > 4.5) then { + playSound "ACE_wirecutter_sound_long"; +} else { + playSound "ACE_wirecutter_sound"; +}; + +[_timeToCut, [_fenceObject], {(_this select 0) call FUNC(cutDownFenceCallback)}, {(_this select 0) call FUNC(cutDownFenceAbort)}, localize "STR_ACE_CuttingFence"] call EFUNC(common,progressBar); diff --git a/addons/logistics_wirecutter/functions/fnc_cutDownFenceAbort.sqf b/addons/logistics_wirecutter/functions/fnc_cutDownFenceAbort.sqf new file mode 100644 index 0000000000..d17038af7c --- /dev/null +++ b/addons/logistics_wirecutter/functions/fnc_cutDownFenceAbort.sqf @@ -0,0 +1,4 @@ +// by commy2 +#include "script_component.hpp" + +[ACE_player, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation); diff --git a/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf b/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf new file mode 100644 index 0000000000..edcdee5a5d --- /dev/null +++ b/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf @@ -0,0 +1,7 @@ +#include "script_component.hpp" + +PARAMS_1(_fenceObject); + +_fenceObject setdamage 1; +[localize "STR_ACE_FenceCut"] call EFUNC(common,displayTextStructured); +[ACE_player, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation); diff --git a/addons/logistics_wirecutter/functions/script_component.hpp b/addons/logistics_wirecutter/functions/script_component.hpp new file mode 100644 index 0000000000..4a5c48048c --- /dev/null +++ b/addons/logistics_wirecutter/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\logistics_wirecutter\script_component.hpp" \ No newline at end of file diff --git a/addons/logistics_wirecutter/script_component.hpp b/addons/logistics_wirecutter/script_component.hpp new file mode 100644 index 0000000000..6dae60dfd2 --- /dev/null +++ b/addons/logistics_wirecutter/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT logistics_wirecutter +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_LOGISTICS_WIRECUTTER + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_LOGISTICS_WIRECUTTER + #define DEBUG_SETTINGS DEBUG_SETTINGS_LOGISTICS_WIRECUTTER +#endif + +#include "\z\ace\addons\main\script_macros.hpp" diff --git a/addons/logistics_wirecutter/sound/wire_cut.ogg b/addons/logistics_wirecutter/sound/wire_cut.ogg new file mode 100644 index 0000000000000000000000000000000000000000..246b15432c10199815bda1b19957c1d04d06485f GIT binary patch literal 53392 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 literal 0 HcmV?d00001 diff --git a/addons/logistics_wirecutter/stringtable.xml b/addons/logistics_wirecutter/stringtable.xml new file mode 100644 index 0000000000..b9ec851a81 --- /dev/null +++ b/addons/logistics_wirecutter/stringtable.xml @@ -0,0 +1,54 @@ + + + + + + Cut Fence + Zaun schneiden + Cortar alambrado + Przetnij płot + Přestřihnout plot + Cisailler Clôture + Cortar Cerca + Taglia + Drótkerítés átvágása + Вырезать забор + + + Cutting Fences / Wires ... + Zaun / Draht schneiden ... + Cortando alambrado / cables ... + Przecinanie płotu / drutów ... + Přestřihnout plot / dráty ... + Cisaille l'obstacle ... + Cortando Cerca / Arame ... + Sto tagliando ... + Drótok elvágása ... + Вырезаем забор / провода ... + + + Cutting Fences! + Schneide Zaun! + Cortando alambrado! + Przecinanie płotu! + Stříhání plotu! + Cisaillage! + Cortando Cerca! + La sto tagliando! + Átvágom a drótkerítést! + Вырезаем забор! + + + Fence cut + Zaun geschnitten + Alambrado cortado + Płot przecięty + Plot přestřižen + Clôture cisaillée + Cerca cortada + Fatto! + Drótkerítés átvágva + Забор вырезан + + + \ No newline at end of file diff --git a/addons/logistics_wirecutter/ui/wirecutter_ca.paa b/addons/logistics_wirecutter/ui/wirecutter_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..8cd216538506c4a259e8059716ba2b3eaf758d92 GIT binary patch literal 22016 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 literal 0 HcmV?d00001 From 0647a80aade30b03ceb1bd6c2fe7855979b12030 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 28 Jan 2015 03:22:39 -0600 Subject: [PATCH 007/211] Wirecutter - Self->Equipment Action --- addons/logistics_wirecutter/CfgVehicles.hpp | 111 +++--------------- addons/logistics_wirecutter/CfgWeapons.hpp | 16 +++ addons/logistics_wirecutter/XEH_preInit.sqf | 3 + addons/logistics_wirecutter/config.cpp | 1 + .../functions/fnc_canCutFence.sqf | 4 + .../functions/fnc_cutDownFence.sqf | 11 +- .../functions/fnc_getNearestFence.sqf | 13 ++ .../functions/fnc_isFence.sqf | 24 ++++ addons/logistics_wirecutter/stringtable.xml | 26 ++-- .../ui/item_wirecutter_ca.paa | Bin 0 -> 82069 bytes 10 files changed, 93 insertions(+), 116 deletions(-) create mode 100644 addons/logistics_wirecutter/CfgWeapons.hpp create mode 100644 addons/logistics_wirecutter/functions/fnc_canCutFence.sqf create mode 100644 addons/logistics_wirecutter/functions/fnc_getNearestFence.sqf create mode 100644 addons/logistics_wirecutter/functions/fnc_isFence.sqf create mode 100644 addons/logistics_wirecutter/ui/item_wirecutter_ca.paa diff --git a/addons/logistics_wirecutter/CfgVehicles.hpp b/addons/logistics_wirecutter/CfgVehicles.hpp index 41c47c70b8..8a16d1b828 100644 --- a/addons/logistics_wirecutter/CfgVehicles.hpp +++ b/addons/logistics_wirecutter/CfgVehicles.hpp @@ -1,98 +1,19 @@ -#define MACRO_CUTWIRE \ - class ACE_Wirecutter_cut { \ - displayName = "$STR_ACE_CutFence"; \ - distance = 4; \ - condition = QUOTE('ToolKit' in items _player && {alive _target}); \ - statement = QUOTE([ARR_2(5, _target)] call FUNC(cutDownFence)); \ - showDisabled = 1; \ - priority = 2.1; \ - icon = QUOTE(PATHTOF(ui\wirecutter_ca.paa)); \ - }; - -#define MACRO_CUTWIRE_LONG \ - class ACE_Wirecutter_cut { \ - displayName = "$STR_ACE_CutFence"; \ - distance = 4; \ - condition = QUOTE('ToolKit' in items _player && {alive _target}); \ - statement = QUOTE([ARR_2(5, _target)] call FUNC(cutDownFence)); \ - showDisabled = 1; \ - priority = 2.1; \ - icon = QUOTE(PATHTOF(ui\wirecutter_ca.paa)); \ - }; - class CfgVehicles { - - class Wall_F; - class Land_Net_Fence_4m_F: Wall_F { - class ACE_Actions { - MACRO_CUTWIRE + class Man; + class CAManBase: Man { + class ACE_SelfActions { + class ACE_Equipment { + class GVAR(CutFence) { + displayName = "$STR_ACE_logistics_wirecutter_CutFence"; + condition = QUOTE([_player] call FUNC(canCutFence)); + statement = QUOTE([_player] call FUNC(cutDownFence)); + exceptions[] = {}; + showDisabled = 1; + priority = 0; + icon = PATHTOF(UI\wirecutter_ca.paa); + hotkey = "C"; + }; + }; }; }; - class Land_Net_Fence_8m_F: Wall_F { - class ACE_Actions { - MACRO_CUTWIRE_LONG - }; - }; - class Land_Net_FenceD_8m_F: Wall_F { - class ACE_Actions { - MACRO_CUTWIRE - }; - }; - class Land_New_WiredFence_5m_F: Wall_F { - class ACE_Actions { - MACRO_CUTWIRE - }; - }; - class Land_New_WiredFence_10m_Dam_F: Wall_F { - class ACE_Actions { - MACRO_CUTWIRE - }; - }; - class Land_New_WiredFence_10m_F: Wall_F { - class ACE_Actions { - MACRO_CUTWIRE_LONG - }; - }; - class Land_Pipe_fence_4m_F: Wall_F { - class ACE_Actions { - MACRO_CUTWIRE - }; - }; - class Land_Pipe_fence_4mNoLC_F: Wall_F { - class ACE_Actions { - MACRO_CUTWIRE - }; - }; - class Land_SportGround_fence_F: Wall_F { - class ACE_Actions { - MACRO_CUTWIRE - }; - }; - class Land_Wired_Fence_4m_F: Wall_F { - class ACE_Actions { - MACRO_CUTWIRE - }; - }; - class Land_Wired_Fence_4mD_F: Wall_F { - class ACE_Actions { - MACRO_CUTWIRE - }; - }; - class Land_Wired_Fence_8m_F: Wall_F { - class ACE_Actions { - MACRO_CUTWIRE_LONG - }; - }; - class Land_Wired_Fence_8mD_F: Wall_F { - class ACE_Actions { - MACRO_CUTWIRE - }; - }; - - class NonStrategic; - class Land_Razorwire_F: NonStrategic { - class ACE_Actions { - MACRO_CUTWIRE - }; - }; -}; +}; \ No newline at end of file diff --git a/addons/logistics_wirecutter/CfgWeapons.hpp b/addons/logistics_wirecutter/CfgWeapons.hpp new file mode 100644 index 0000000000..f2d35337a2 --- /dev/null +++ b/addons/logistics_wirecutter/CfgWeapons.hpp @@ -0,0 +1,16 @@ +class CfgWeapons { + class InventoryItem_Base_F; + class ACE_ItemCore; + + class ACE_wirecutter: ACE_ItemCore { + author = "$STR_ACE_Core_ACETeam"; + displayName = "$STR_ACE_logistics_wirecutter_wirecutterName"; + descriptionShort = "$STR_ACE_logistics_wirecutter_wirecutterDescription"; + model = "\A3\weapons_F\ammo\mag_univ.p3d"; + picture = QUOTE(PATHTOF(ui\item_wirecutter_ca.paa)); + scope = 2; + class ItemInfo: InventoryItem_Base_F { + mass = 100; + }; + }; +}; diff --git a/addons/logistics_wirecutter/XEH_preInit.sqf b/addons/logistics_wirecutter/XEH_preInit.sqf index facd43451e..7588a109e6 100644 --- a/addons/logistics_wirecutter/XEH_preInit.sqf +++ b/addons/logistics_wirecutter/XEH_preInit.sqf @@ -2,8 +2,11 @@ ADDON = false; +PREP(canCutFence); PREP(cutDownFence); PREP(cutDownFenceAbort); PREP(cutDownFenceCallback); +PREP(getNearestFence); +PREP(isFence); ADDON = true; diff --git a/addons/logistics_wirecutter/config.cpp b/addons/logistics_wirecutter/config.cpp index 2cc1227a7d..9a48b83e46 100644 --- a/addons/logistics_wirecutter/config.cpp +++ b/addons/logistics_wirecutter/config.cpp @@ -15,3 +15,4 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgSounds.hpp" +#include "CfgWeapons.hpp" diff --git a/addons/logistics_wirecutter/functions/fnc_canCutFence.sqf b/addons/logistics_wirecutter/functions/fnc_canCutFence.sqf new file mode 100644 index 0000000000..e5edf14c34 --- /dev/null +++ b/addons/logistics_wirecutter/functions/fnc_canCutFence.sqf @@ -0,0 +1,4 @@ +#include "script_component.hpp" +PARAMS_1(_unit); + +("ACE_wirecutter" in (items _unit)) && {!(isNull ([_unit] call FUNC(getNearestFence)))} diff --git a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf index 092b6348b0..ea5f2590eb 100644 --- a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf +++ b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf @@ -1,14 +1,13 @@ // by gpgpgpgp, edited by commy2 #include "script_component.hpp" -PARAMS_2(_timeToCut,_fenceObject); +PARAMS_1(_unit); +if (_unit != ACE_player) exitWith {}; -// if (cadetMode) then { - // { - // [ACE_player, "{_this groupChat localize 'STR_ACE_CuttingFenceChat'}", _x] call ACE_Core_fnc_execRemoteFnc; - // } forEach units group ACE_player; -// }; +_fenceObject = [ACE_player] call FUNC(getNearestFence); +if (isNull _fenceObject) exitWith {}; +_timeToCut = 5; if !([ACE_player] call EFUNC(common,isEngineer)) then { _timeToCut = _timeToCut + 5; }; diff --git a/addons/logistics_wirecutter/functions/fnc_getNearestFence.sqf b/addons/logistics_wirecutter/functions/fnc_getNearestFence.sqf new file mode 100644 index 0000000000..b8ba8898cd --- /dev/null +++ b/addons/logistics_wirecutter/functions/fnc_getNearestFence.sqf @@ -0,0 +1,13 @@ +#include "script_component.hpp" + +private "_nearestFence"; +PARAMS_1(_unit); + +_nearestFence = objNull; +{ + if ((isNull _nearestFence) && {[_x] call FUNC(isFence)}) then { + _nearestFence = _x; + }; +} forEach nearestObjects [_unit, [], 5]; + +_nearestFence diff --git a/addons/logistics_wirecutter/functions/fnc_isFence.sqf b/addons/logistics_wirecutter/functions/fnc_isFence.sqf new file mode 100644 index 0000000000..178e0c0f39 --- /dev/null +++ b/addons/logistics_wirecutter/functions/fnc_isFence.sqf @@ -0,0 +1,24 @@ +#include "script_component.hpp" + +#define FENCE_A3_TYPENAMES ["Land_Net_Fence_4m_F", "Land_Net_Fence_8m_F", "Land_Net_FenceD_8m_F", "Land_New_WiredFence_5m_F", "Land_New_WiredFence_10m_Dam_F", "Land_New_WiredFence_10m_F", "Land_Pipe_fence_4m_F", "Land_Pipe_fence_4mNoLC_F", "Land_SportGround_fence_F", "Land_Wired_Fence_4m_F", "Land_Wired_Fence_4mD_F", "Land_Wired_Fence_8m_F", "Land_Wired_Fence_8mD_F", "Land_Razorwire_F"] +#define FENCE_A3_P3DS ["mil_wiredfence_f"] + + +private ["_typeOf", "_returnValue"]; +PARAMS_1(_object); + +_typeOf = typeOf _object; +_returnValue = false; + +if (_typeOf != "") then { + systemChat format ["checking %1", _typeOf]; + _returnValue = _typeOf in FENCE_A3_TYPENAMES; +} else { + _typeOf = str _object; + { + if ((_typeOf find _x) != -1) then { + _returnValue = true; + }; + } forEach FENCE_A3_P3DS; +}; +_returnValue diff --git a/addons/logistics_wirecutter/stringtable.xml b/addons/logistics_wirecutter/stringtable.xml index b9ec851a81..cf6e96c1aa 100644 --- a/addons/logistics_wirecutter/stringtable.xml +++ b/addons/logistics_wirecutter/stringtable.xml @@ -2,7 +2,15 @@ - + + Wirecutter + Drahtschneider + Wirecutter + + + Wirecutter + + Cut Fence Zaun schneiden Cortar alambrado @@ -14,7 +22,7 @@ Drótkerítés átvágása Вырезать забор - + Cutting Fences / Wires ... Zaun / Draht schneiden ... Cortando alambrado / cables ... @@ -26,19 +34,7 @@ Drótok elvágása ... Вырезаем забор / провода ... - - Cutting Fences! - Schneide Zaun! - Cortando alambrado! - Przecinanie płotu! - Stříhání plotu! - Cisaillage! - Cortando Cerca! - La sto tagliando! - Átvágom a drótkerítést! - Вырезаем забор! - - + Fence cut Zaun geschnitten Alambrado cortado diff --git a/addons/logistics_wirecutter/ui/item_wirecutter_ca.paa b/addons/logistics_wirecutter/ui/item_wirecutter_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..768b061359c96f92a2f0c7cd9cb9f174ffcf3938 GIT binary patch literal 82069 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 literal 0 HcmV?d00001 From 2def603a5856f99919d7567aa3af15bdf464b510 Mon Sep 17 00:00:00 2001 From: Thomas Kooi Date: Wed, 28 Jan 2015 17:36:47 +0100 Subject: [PATCH 008/211] Finalized port of basic ballistics --- .../winddeflection}/CfgEventHandlers.hpp | 2 +- .../winddeflection}/CfgVehicles.h | 4 ++-- .../winddeflection}/XEH_postInit.sqf | 0 .../winddeflection}/XEH_preInit.sqf | 0 .../winddeflection}/config.cpp | 4 ++-- addons/winddeflection/data/module_icon.paa | Bin 0 -> 5625 bytes .../winddeflection/functions/fnc_handleFired.sqf | 6 ++++-- .../functions/fnc_initalizeModule.sqf | 0 .../functions/script_component.hpp | 0 .../winddeflection}/script_component.hpp | 2 +- .../winddeflection}/stringtable.xml | 0 11 files changed, 10 insertions(+), 8 deletions(-) rename {TO_MERGE/cse/sys_ballistics/basicBallistics => addons/winddeflection}/CfgEventHandlers.hpp (95%) rename {TO_MERGE/cse/sys_ballistics/basicBallistics => addons/winddeflection}/CfgVehicles.h (76%) rename {TO_MERGE/cse/sys_ballistics/basicBallistics => addons/winddeflection}/XEH_postInit.sqf (100%) rename {TO_MERGE/cse/sys_ballistics/basicBallistics => addons/winddeflection}/XEH_preInit.sqf (100%) rename {TO_MERGE/cse/sys_ballistics/basicBallistics => addons/winddeflection}/config.cpp (74%) create mode 100644 addons/winddeflection/data/module_icon.paa rename TO_MERGE/cse/sys_ballistics/basicBallistics/functions/fnc_handleFired => addons/winddeflection/functions/fnc_handleFired.sqf (96%) rename {TO_MERGE/cse/sys_ballistics/basicBallistics => addons/winddeflection}/functions/fnc_initalizeModule.sqf (100%) rename {TO_MERGE/cse/sys_ballistics/basicBallistics => addons/winddeflection}/functions/script_component.hpp (100%) rename {TO_MERGE/cse/sys_ballistics/basicBallistics => addons/winddeflection}/script_component.hpp (72%) rename {TO_MERGE/cse/sys_ballistics/basicBallistics => addons/winddeflection}/stringtable.xml (100%) diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgEventHandlers.hpp b/addons/winddeflection/CfgEventHandlers.hpp similarity index 95% rename from TO_MERGE/cse/sys_ballistics/basicBallistics/CfgEventHandlers.hpp rename to addons/winddeflection/CfgEventHandlers.hpp index 3ac8dec532..6cf7856ba5 100644 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgEventHandlers.hpp +++ b/addons/winddeflection/CfgEventHandlers.hpp @@ -11,7 +11,7 @@ class Extended_PostInit_EventHandlers { }; class Extended_Fired_Eventhandlers { - class ADDON { + class CaManBase { fired = QUOTE( call FUNC(handleFired) ); }; }; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgVehicles.h b/addons/winddeflection/CfgVehicles.h similarity index 76% rename from TO_MERGE/cse/sys_ballistics/basicBallistics/CfgVehicles.h rename to addons/winddeflection/CfgVehicles.h index ba404a397a..52e2809f42 100644 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/CfgVehicles.h +++ b/addons/winddeflection/CfgVehicles.h @@ -7,8 +7,8 @@ class CfgVehicles { class GVAR(Module): Module_F { scope = 2; displayName = "Basic Ballistics [ACE]"; - icon = "\cse\cse_main\data\cse_rifle_module.paa"; // TODO find a new module icon - category = "cseModules"; // TODO find a new module category + icon = QUOTE(PATHTOF(data\module_icon.paa)); + category = "ACE"; function = FUNC(enableModule); functionPriority = 1; isGlobal = 1; diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/XEH_postInit.sqf b/addons/winddeflection/XEH_postInit.sqf similarity index 100% rename from TO_MERGE/cse/sys_ballistics/basicBallistics/XEH_postInit.sqf rename to addons/winddeflection/XEH_postInit.sqf diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/XEH_preInit.sqf b/addons/winddeflection/XEH_preInit.sqf similarity index 100% rename from TO_MERGE/cse/sys_ballistics/basicBallistics/XEH_preInit.sqf rename to addons/winddeflection/XEH_preInit.sqf diff --git a/TO_MERGE/cse/sys_ballistics/basicBallistics/config.cpp b/addons/winddeflection/config.cpp similarity index 74% rename from TO_MERGE/cse/sys_ballistics/basicBallistics/config.cpp rename to addons/winddeflection/config.cpp index e7bfcc0382..4e7ed3d2ec 100644 --- a/TO_MERGE/cse/sys_ballistics/basicBallistics/config.cpp +++ b/addons/winddeflection/config.cpp @@ -5,10 +5,10 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ACE_main"}; + requiredAddons[] = {"ACE_common"}; versionDesc = "ACE Wind Deflection"; version = VERSION; - author[] = {$STR_ACE_Core_ACETeam}; + author[] = {$STR_ACE_Core_ACETeam, "Glowbal", "Ruthberg"}; authorUrl = "http://csemod.com"; }; }; diff --git a/addons/winddeflection/data/module_icon.paa b/addons/winddeflection/data/module_icon.paa new file mode 100644 index 0000000000000000000000000000000000000000..f3867137367eeb8ff88a187941586b8b6370f7de GIT binary patch literal 5625 zcmds5e^3O zu}9TXpXwMw`4vUr3dhva>dW~0fQGkb^&fBWdBZ-WizG=}N`I^0ddN2IV*9gso(H^w zu8L_553IxZHHBL>e)2uH7bSTokN)W}$N2LcDI91=W!XSunj7(U@&eAo5cB=sa92|) z(_fNgC345i%~miO&U1DJXj=N7PK!Y2`=?zas)Nn*yr7uh1h}AUO2^|02P*uG8C;No zWk4uWCWV*1GPk^&cvPdi82T*mZsI_atKGkXG@_#v@1tjT+wyv84%)8C5At$F}74 zN%sB{dcZ#h>P{nt-mvAF&-+L8ZmaVKgfPzQ`cHakFxA*^$hp}6UG)$@0dOA}xF)*= zl=p^NzLWloe7ca&sy}wc&+K(pYv_dEa?QQ5=csNUlca1M?!Wd)j`I^X5BcY1l6S%K z$Pt!r5@bnExOLezv)A<-V_vy6;0I;jHRMfdv8E2acP5PU*f{R0hx|n+J~rkT%CnFz z8XtCrX5)wB&A+P%rPABX8X_!)d;|4OlLz8)+3~QD-$HuLmFN|NrW8=2)MR&QLzm_goaWz)wLq`7r z3<`$;XkL7h5#G;v{ke!P{}1|&h4xsI9wVziy>bTfE9*~45z0#^Q}K#><7#R)`HcQc zmY3a+SUQJY{{WLC8st;#Hzp{g2m^m>OH+BbEo?LFk$#u`L-V(jQHT%zCSg53=$@#HoTy|mQGu^2V4dz$TxT0Khrzg!5+^te60V4A0cNq*k9u>G;RyokU;(* zPxd(UAMt-@G)Bvgd~n_>2v3;Da>i)uEuH4cZa?&2#hCuE{{kHwb38!60Q&=;#*fBm zPY6lxtnl}=X!(PP%YVNBxuOv}GF@!MBbY<6jX{009@OkZcqOwBBn`S=MEPNGZBWVP z+pDbu={bGadV2A^zFq`8`h#j+KO!k{BlWZS0MuQ!Kd(sH|HI8`Buy(6nr=YA(Ofq^ z+#B@66w9n*C(bAePbzDz&T9|;LT@voqAF`^%DZZQ46z7puw*i^^-T?zwDogcgMkOo zY^1^UPW&<_RmTH=bAJ=}!?BC(?+?>lj~3PtSTd=M$v^;{k3u)7OutXmX%o2Nz^(z_-+z6LBZ{U8+qoNOv1^TfBP9;+9sMR@H z=46(~wk7crr0sJBEQ};LH@r_`PYmg86~`;e1D~b$*8I@B-mqOpk2UVG4v!7-vw_9? zB=45x@R3X=FW@I#!m{?1sLwEc;n*+i8F&?X&fZj9Kfmir18_rUxSjRSNZDF!v;cKdjLLdAwhB+`L2?KY=4;^LT~-@(JC4=anUcAL@c54Ssjh zZ+rJ%r;%m}_;=M1jUNVG_ze6B4jx_k)3EzaD0y(lTglafg z7(lV**SD&XUvqz#v4LVFt#55^Ncf)f6f*;O(tcbI9~^WuNCC2I!&p($H<0EyyFK}; znsxrEgTH3;BH?pKVEyq1$oXhCQQQz%^XUgqmHq{3QMB7P1Ybh>X{7CTj@$AR^}s{A zT3B6Ddh#-l=%)$bpajT+o42Ms%F+ZJZbdm{ovlXj@kmJtywy;+uY}1DF{-2l)zdq# zA7C^b&J{USHCs)vyIe(9Vb!i9wXY1cWu&4QkbFpb-LYR?DKo*RDD+02Y^ys~)phVd oHPS@l_^-T?{%p*b3z!)|5h)5 Date: Wed, 28 Jan 2015 17:38:33 +0100 Subject: [PATCH 009/211] Added readme file --- addons/winddeflection/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 addons/winddeflection/README.md diff --git a/addons/winddeflection/README.md b/addons/winddeflection/README.md new file mode 100644 index 0000000000..c2908a6f85 --- /dev/null +++ b/addons/winddeflection/README.md @@ -0,0 +1,11 @@ +ace_winddeflection +=============== + +Wind deflection for projectiles/bullets. + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [Glowbal](https://github.com/Glowbal) +- [Ruthberg] (http://github.com/Ulteq) \ No newline at end of file From b092ecf28042abfd5982d800e6af284b4151fef6 Mon Sep 17 00:00:00 2001 From: Thomas Kooi Date: Wed, 28 Jan 2015 17:48:36 +0100 Subject: [PATCH 010/211] Replaced wind by ACE_wind --- addons/winddeflection/functions/fnc_handleFired.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/winddeflection/functions/fnc_handleFired.sqf b/addons/winddeflection/functions/fnc_handleFired.sqf index 7a87bbac2d..5b90619fae 100644 --- a/addons/winddeflection/functions/fnc_handleFired.sqf +++ b/addons/winddeflection/functions/fnc_handleFired.sqf @@ -77,8 +77,8 @@ if (_bullet isKindOf "BulletBase") then { _bulletVelocity = velocity _bullet; _bulletSpeed = vectorMagnitude _bulletVelocity; - if (vectorMagnitude wind > 0) then { - _trueVelocity = _bulletVelocity vectorDiff wind; + if (vectorMagnitude ACE_wind > 0) then { + _trueVelocity = _bulletVelocity vectorDiff ACE_wind; _trueSpeed = vectorMagnitude _trueVelocity; _dragRef = _deltaT * _airFriction * _bulletSpeed * _bulletSpeed; From 8014da14073cf65f5075b79deda96de1dbdbc533 Mon Sep 17 00:00:00 2001 From: Thomas Kooi Date: Wed, 28 Jan 2015 17:48:49 +0100 Subject: [PATCH 011/211] Added ACE_weather dependency --- addons/winddeflection/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index 4e7ed3d2ec..843b74514e 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ACE_common"}; + requiredAddons[] = {"ACE_common", "ACE_weather"}; versionDesc = "ACE Wind Deflection"; version = VERSION; author[] = {$STR_ACE_Core_ACETeam, "Glowbal", "Ruthberg"}; From 44997e1d4a3f8405ad3f16ddb1347f9978c263d1 Mon Sep 17 00:00:00 2001 From: Thomas Kooi Date: Wed, 28 Jan 2015 17:58:28 +0100 Subject: [PATCH 012/211] Removed bullet database concept --- addons/winddeflection/XEH_postInit.sqf | 5 -- .../functions/fnc_handleFired.sqf | 81 ++++++------------- 2 files changed, 26 insertions(+), 60 deletions(-) diff --git a/addons/winddeflection/XEH_postInit.sqf b/addons/winddeflection/XEH_postInit.sqf index 8c134d22d8..9c3a4bc41f 100644 --- a/addons/winddeflection/XEH_postInit.sqf +++ b/addons/winddeflection/XEH_postInit.sqf @@ -13,8 +13,3 @@ if (isnil QGVAR(EnableForAI)) then { GVAR(EnableForAI) = false; }; - -GVAR(bulletDatabase) = []; -GVAR(bulletDatabaseLastFrame) = []; -GVAR(bulletDatabaseOccupiedIndices) = []; -GVAR(bulletDatabaseFreeIndices) = []; diff --git a/addons/winddeflection/functions/fnc_handleFired.sqf b/addons/winddeflection/functions/fnc_handleFired.sqf index 5b90619fae..223c81f09d 100644 --- a/addons/winddeflection/functions/fnc_handleFired.sqf +++ b/addons/winddeflection/functions/fnc_handleFired.sqf @@ -33,68 +33,39 @@ if (_bullet isKindOf "BulletBase") then { _airFriction = getNumber(configFile >> "cfgAmmo" >> _ammo >> "airFriction"); - _index = count GVAR(bulletDatabaseLastFrame); - if (count GVAR(bulletDatabaseLastFrameFreeIndices) > 0) then { - _index = GVAR(bulletDatabaseLastFrameFreeIndices) select 0; - GVAR(bulletDatabaseLastFrameFreeIndices) = GVAR(bulletDatabaseLastFrameFreeIndices) - [_index]; - }; + [{ + private ["_bullet", "_airFriction", "_args", "_deltaT", "_bulletVelocity", "_bulletSpeed", "_trueVelocity", "_trueVelocity", "_dragRef", "_drag", "_accelRef", "_accel"]; - GVAR(bulletDatabaseLastFrame) set[_index, [_bullet, _airFriction, _index]]; - GVAR(bulletDatabaseLastFrameLastFrame) set[_index, time]; + _args = _this select 0; + _bullet = _args select 0; + _airFriction = _args select 1; + _time = _args select 2; - GVAR(bulletDatabaseLastFrameOccupiedIndices) pushBack _index; + if (!alive _bullet) exitwith { + [_this select 1] call cba_fnc_removePerFrameHandler; + }; - if (count GVAR(bulletDatabaseLastFrameOccupiedIndices) == 1) then { - [{ - private ["_bullet", "_airFriction", "_index", "_deltaT", "_bulletVelocity", "_bulletSpeed", "_trueVelocity", "_trueVelocity", "_dragRef", "_drag", "_accelRef", "_accel"]; + _deltaT = time - _time; + _args set[2, time]; - { - _bullet = (GVAR(bulletDatabaseLastFrame) select _x) select 0; - _index = (GVAR(bulletDatabaseLastFrame) select _x) select 2; - if (!alive _bullet) then { - GVAR(bulletDatabaseLastFrameOccupiedIndices) = GVAR(bulletDatabaseLastFrameOccupiedIndices) - [_index]; - GVAR(bulletDatabaseLastFrameFreeIndices) pushBack _index; - }; - } forEach GVAR(bulletDatabaseLastFrameOccupiedIndices); + _bulletVelocity = velocity _bullet; + _bulletSpeed = vectorMagnitude _bulletVelocity; - if (count GVAR(bulletDatabaseLastFrameOccupiedIndices) == 0) exitWith { - /// Resetting all the variables. - GVAR(bulletDatabaseLastFrame) = []; - GVAR(bulletDatabaseLastFrameLastFrame) = []; - GVAR(bulletDatabaseLastFrameOccupiedIndices) = []; - GVAR(bulletDatabaseLastFrameFreeIndices) = []; - [_this select 1] call cba_fnc_removePerFrameHandler; - }; + if (vectorMagnitude ACE_wind > 0) then { + _trueVelocity = _bulletVelocity vectorDiff ACE_wind; + _trueSpeed = vectorMagnitude _trueVelocity; - { - _bullet = (GVAR(bulletDatabaseLastFrame) select _x) select 0; - _airFriction = (GVAR(bulletDatabaseLastFrame) select _x) select 1; - _index = (GVAR(bulletDatabaseLastFrame) select _x) select 2; + _dragRef = _deltaT * _airFriction * _bulletSpeed * _bulletSpeed; + _accelRef = (vectorNormalized _bulletVelocity) vectorMultiply (_dragRef); + _bulletVelocity = _bulletVelocity vectorDiff _accelRef; - _deltaT = time - (GVAR(bulletDatabaseLastFrameLastFrame) select _index); - GVAR(bulletDatabaseLastFrameLastFrame) set[_index, time]; + _drag = _deltaT * _airFriction * _trueSpeed * _trueSpeed; + _accel = (vectorNormalized _trueVelocity) vectorMultiply (_drag); + _bulletVelocity = _bulletVelocity vectorAdd _accel; + }; + _bullet setVelocity _bulletVelocity; + // TODO expand with advanced ballistics functionality. - _bulletVelocity = velocity _bullet; - _bulletSpeed = vectorMagnitude _bulletVelocity; - - if (vectorMagnitude ACE_wind > 0) then { - _trueVelocity = _bulletVelocity vectorDiff ACE_wind; - _trueSpeed = vectorMagnitude _trueVelocity; - - _dragRef = _deltaT * _airFriction * _bulletSpeed * _bulletSpeed; - _accelRef = (vectorNormalized _bulletVelocity) vectorMultiply (_dragRef); - _bulletVelocity = _bulletVelocity vectorDiff _accelRef; - - _drag = _deltaT * _airFriction * _trueSpeed * _trueSpeed; - _accel = (vectorNormalized _trueVelocity) vectorMultiply (_drag); - _bulletVelocity = _bulletVelocity vectorAdd _accel; - }; - - // TODO expand with advanced ballistics functionality. - - _bullet setVelocity _bulletVelocity; - }forEach GVAR(bulletDatabaseLastFrameOccupiedIndices); - }, 0, []] call CBA_fnc_addPerFrameHandler; - }; + }, 0, [_bullet, _airFriction, time]] call CBA_fnc_addPerFrameHandler; }; true; \ No newline at end of file From 2e05e5ac3979bf9a3ac4c7d54331cfd2185d8038 Mon Sep 17 00:00:00 2001 From: Thomas Kooi Date: Wed, 28 Jan 2015 18:02:49 +0100 Subject: [PATCH 013/211] Replaced isPlayer by EFUNC(common,isPlayer) --- addons/winddeflection/functions/fnc_handleFired.sqf | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/winddeflection/functions/fnc_handleFired.sqf b/addons/winddeflection/functions/fnc_handleFired.sqf index 223c81f09d..8c0713c50b 100644 --- a/addons/winddeflection/functions/fnc_handleFired.sqf +++ b/addons/winddeflection/functions/fnc_handleFired.sqf @@ -18,13 +18,11 @@ #include "script_component.hpp" -if (isNil QGVAR(EnableForAI)) exitWith {false}; // means that the module has not yet initialized - private ["_unit", "_weapon", "_ammo", "_bullet", "_airFriction", "_index"]; _unit = _this select 0; if (_unit distance ACE_player > 3000) exitWith {false}; // Large enough distance to not simulate any wind deflection. -if (!GVAR(EnableForAI) && !(isPlayer _unit)) exitWith {false}; +if (!GVAR(EnableForAI) && !([_unit] call EFUNC(common,isPlayer))) exitWith {false}; _bullet = _this select 6; if (_bullet isKindOf "BulletBase") then { From 794379c7748b5bbf2d245fbcabccbfa44ae8bc10 Mon Sep 17 00:00:00 2001 From: Thomas Kooi Date: Wed, 28 Jan 2015 18:51:27 +0100 Subject: [PATCH 014/211] Fixed incorrect classname CfgAddons --- addons/winddeflection/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index 843b74514e..6e1bdbc379 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -13,7 +13,7 @@ class CfgPatches { }; }; -class ADDON { +class CfgAddons { class PreloadAddons { class ADDON { list[] = {QUOTE(ADDON)}; From d62595e76dec74405b696479f7da9be5c384f686 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 28 Jan 2015 11:51:42 -0600 Subject: [PATCH 015/211] Added some AIA fences --- .../functions/fnc_isFence.sqf | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/addons/logistics_wirecutter/functions/fnc_isFence.sqf b/addons/logistics_wirecutter/functions/fnc_isFence.sqf index 178e0c0f39..e319ea82f3 100644 --- a/addons/logistics_wirecutter/functions/fnc_isFence.sqf +++ b/addons/logistics_wirecutter/functions/fnc_isFence.sqf @@ -1,7 +1,11 @@ #include "script_component.hpp" -#define FENCE_A3_TYPENAMES ["Land_Net_Fence_4m_F", "Land_Net_Fence_8m_F", "Land_Net_FenceD_8m_F", "Land_New_WiredFence_5m_F", "Land_New_WiredFence_10m_Dam_F", "Land_New_WiredFence_10m_F", "Land_Pipe_fence_4m_F", "Land_Pipe_fence_4mNoLC_F", "Land_SportGround_fence_F", "Land_Wired_Fence_4m_F", "Land_Wired_Fence_4mD_F", "Land_Wired_Fence_8m_F", "Land_Wired_Fence_8mD_F", "Land_Razorwire_F"] -#define FENCE_A3_P3DS ["mil_wiredfence_f"] +//find is case sensitive, so keep everything lowercase +#define FENCE_A3_TYPENAMES ["land_net_fence_4m_f", "land_net_fence_8m_f", "land_net_fenced_8m_f", "land_new_wiredfence_5m_f", "land_new_wiredfence_10m_dam_f", "land_new_wiredfence_10m_f", "land_pipe_fence_4m_f", "land_pipe_fence_4mnolc_f", "land_sportground_fence_f", "land_wired_fence_4m_f", "land_wired_fence_4md_f", "land_wired_fence_8m_f", "land_wired_fence_8md_f", "land_razorwire_f"] +#define FENCE_A3_P3DS ["mil_wiredfence_f.p3d"] + +#define FENCE_AIA_TYPENAMES [] +#define FENCE_AIA_P3DS ["wall_indfnc_3.p3d", "wall_indfnc_9.p3d", "wall_indfnc_corner.p3d", "pletivo_wired.p3d", "wall_fen1_5.p3d"] private ["_typeOf", "_returnValue"]; @@ -11,14 +15,14 @@ _typeOf = typeOf _object; _returnValue = false; if (_typeOf != "") then { - systemChat format ["checking %1", _typeOf]; - _returnValue = _typeOf in FENCE_A3_TYPENAMES; + _returnValue = _typeOf in (FENCE_A3_TYPENAMES + FENCE_AIA_TYPENAMES); } else { - _typeOf = str _object; + _typeOf = toLower (str _object); //something like "123201: wall_indfnc_9.p3d" { if ((_typeOf find _x) != -1) then { _returnValue = true; }; - } forEach FENCE_A3_P3DS; + } forEach (FENCE_A3_P3DS + FENCE_AIA_P3DS); }; + _returnValue From bb473f95f05271c657e6e6bca16b44f38087a67b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 28 Jan 2015 12:01:40 -0600 Subject: [PATCH 016/211] Func Headers --- .../functions/fnc_canCutFence.sqf | 14 ++++++++++++++ .../functions/fnc_getNearestFence.sqf | 12 ++++++++++++ .../logistics_wirecutter/functions/fnc_isFence.sqf | 14 +++++++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/addons/logistics_wirecutter/functions/fnc_canCutFence.sqf b/addons/logistics_wirecutter/functions/fnc_canCutFence.sqf index e5edf14c34..f57a970d58 100644 --- a/addons/logistics_wirecutter/functions/fnc_canCutFence.sqf +++ b/addons/logistics_wirecutter/functions/fnc_canCutFence.sqf @@ -1,3 +1,17 @@ +/* fnc_canCutFence.sqf +* +* Author: PabstMirror +* +* Condition check if player is able to cut a fence. +* Checks for "ACE_wirecutter" item and if there is a nearby fence. +* +* Argument: +* 0: OBJECT - Unit to check condition for (player) +* +* Return value: +* BOOL +*/ + #include "script_component.hpp" PARAMS_1(_unit); diff --git a/addons/logistics_wirecutter/functions/fnc_getNearestFence.sqf b/addons/logistics_wirecutter/functions/fnc_getNearestFence.sqf index b8ba8898cd..5004315fcd 100644 --- a/addons/logistics_wirecutter/functions/fnc_getNearestFence.sqf +++ b/addons/logistics_wirecutter/functions/fnc_getNearestFence.sqf @@ -1,3 +1,15 @@ +/* fnc_getNearestFence.sqf +* +* Author: PabstMirror +* +* Gets nearest fence within 5 meters to the unit. +* +* Argument: +* 0: OBJECT - Unit to search for fence objects arround +* +* Return value: +* OBJECT - Nearest object that is a fence, objNull if none found. +*/ #include "script_component.hpp" private "_nearestFence"; diff --git a/addons/logistics_wirecutter/functions/fnc_isFence.sqf b/addons/logistics_wirecutter/functions/fnc_isFence.sqf index e319ea82f3..379b151b8f 100644 --- a/addons/logistics_wirecutter/functions/fnc_isFence.sqf +++ b/addons/logistics_wirecutter/functions/fnc_isFence.sqf @@ -1,3 +1,16 @@ +/* fnc_isFence.sqf +* +* Author: PabstMirror +* +* Checks if object is a fence. Should work on any fence type, even (typeof == ""). +* Call is fairly expensive because of all of the string checking. +* +* Argument: +* 0: OBJECT - Ojbect to test +* +* Return value: +* BOOL +*/ #include "script_component.hpp" //find is case sensitive, so keep everything lowercase @@ -7,7 +20,6 @@ #define FENCE_AIA_TYPENAMES [] #define FENCE_AIA_P3DS ["wall_indfnc_3.p3d", "wall_indfnc_9.p3d", "wall_indfnc_corner.p3d", "pletivo_wired.p3d", "wall_fen1_5.p3d"] - private ["_typeOf", "_returnValue"]; PARAMS_1(_object); From 719e308f9bbb4131f3cfc12835fb2a0bd8a3f1eb Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 28 Jan 2015 12:04:30 -0600 Subject: [PATCH 017/211] readme --- addons/logistics_wirecutter/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 addons/logistics_wirecutter/README.md diff --git a/addons/logistics_wirecutter/README.md b/addons/logistics_wirecutter/README.md new file mode 100644 index 0000000000..e0bef0bed6 --- /dev/null +++ b/addons/logistics_wirecutter/README.md @@ -0,0 +1,11 @@ +ace_logistics_wirecutter +=========== + +Adds an item `ACE_wirecutter` that allows cutting of fences in A3 and AiA maps. + + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [PabstMirror](https://github.com/PabstMirror) From 54ab834e5c84f0988ffc751dc61d895bbe0f99fe Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 28 Jan 2015 12:54:14 -0600 Subject: [PATCH 018/211] Fix stringtable --- addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf | 2 +- .../logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf index ea5f2590eb..0a42d5d56b 100644 --- a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf +++ b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf @@ -20,4 +20,4 @@ if (_timeToCut > 4.5) then { playSound "ACE_wirecutter_sound"; }; -[_timeToCut, [_fenceObject], {(_this select 0) call FUNC(cutDownFenceCallback)}, {(_this select 0) call FUNC(cutDownFenceAbort)}, localize "STR_ACE_CuttingFence"] call EFUNC(common,progressBar); +[_timeToCut, [_fenceObject], {(_this select 0) call FUNC(cutDownFenceCallback)}, {(_this select 0) call FUNC(cutDownFenceAbort)}, localize "STR_ACE_logistics_wirecutter_CuttingFence"] call EFUNC(common,progressBar); diff --git a/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf b/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf index edcdee5a5d..57c0289461 100644 --- a/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf +++ b/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf @@ -3,5 +3,5 @@ PARAMS_1(_fenceObject); _fenceObject setdamage 1; -[localize "STR_ACE_FenceCut"] call EFUNC(common,displayTextStructured); +[localize "STR_ACE_logistics_wirecutter_FenceCut"] call EFUNC(common,displayTextStructured); [ACE_player, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation); From 4b1e40570ecc18ef852189649cfb433cc373cfc7 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 28 Jan 2015 14:29:43 -0600 Subject: [PATCH 019/211] Port AGM: Logistics-UAV refuel/recharage --- addons/logistics_uavbattery/$PBOPREFIX$ | 1 + .../logistics_uavbattery/CfgEventHandlers.hpp | 5 ++ addons/logistics_uavbattery/CfgVehicles.hpp | 27 ++++++ addons/logistics_uavbattery/CfgWeapons.hpp | 15 ++++ addons/logistics_uavbattery/README.md | 11 +++ addons/logistics_uavbattery/XEH_preInit.sqf | 8 ++ addons/logistics_uavbattery/config.cpp | 17 ++++ .../functions/fnc_canRefuelUAV.sqf | 19 +++++ .../functions/fnc_refuelUAV.sqf | 34 ++++++++ .../functions/script_component.hpp | 1 + .../models/ace_battery.p3d | Bin 0 -> 51378 bytes .../logistics_uavbattery/models/battery.rvmat | 79 ++++++++++++++++++ .../models/battery_co.paa | Bin 0 -> 212387 bytes .../models/battery_nohq.paa | Bin 0 -> 954486 bytes .../models/battery_smdi.paa | Bin 0 -> 482264 bytes .../models/default_as.paa | Bin 0 -> 149 bytes .../logistics_uavbattery/script_component.hpp | 12 +++ addons/logistics_uavbattery/stringtable.xml | 78 +++++++++++++++++ .../logistics_uavbattery/ui/UAV_battery.paa | Bin 0 -> 5625 bytes 19 files changed, 307 insertions(+) create mode 100644 addons/logistics_uavbattery/$PBOPREFIX$ create mode 100644 addons/logistics_uavbattery/CfgEventHandlers.hpp create mode 100644 addons/logistics_uavbattery/CfgVehicles.hpp create mode 100644 addons/logistics_uavbattery/CfgWeapons.hpp create mode 100644 addons/logistics_uavbattery/README.md create mode 100644 addons/logistics_uavbattery/XEH_preInit.sqf create mode 100644 addons/logistics_uavbattery/config.cpp create mode 100644 addons/logistics_uavbattery/functions/fnc_canRefuelUAV.sqf create mode 100644 addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf create mode 100644 addons/logistics_uavbattery/functions/script_component.hpp create mode 100644 addons/logistics_uavbattery/models/ace_battery.p3d create mode 100644 addons/logistics_uavbattery/models/battery.rvmat create mode 100644 addons/logistics_uavbattery/models/battery_co.paa create mode 100644 addons/logistics_uavbattery/models/battery_nohq.paa create mode 100644 addons/logistics_uavbattery/models/battery_smdi.paa create mode 100644 addons/logistics_uavbattery/models/default_as.paa create mode 100644 addons/logistics_uavbattery/script_component.hpp create mode 100644 addons/logistics_uavbattery/stringtable.xml create mode 100644 addons/logistics_uavbattery/ui/UAV_battery.paa diff --git a/addons/logistics_uavbattery/$PBOPREFIX$ b/addons/logistics_uavbattery/$PBOPREFIX$ new file mode 100644 index 0000000000..f1db4e78f0 --- /dev/null +++ b/addons/logistics_uavbattery/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\logistics_uavbattery \ No newline at end of file diff --git a/addons/logistics_uavbattery/CfgEventHandlers.hpp b/addons/logistics_uavbattery/CfgEventHandlers.hpp new file mode 100644 index 0000000000..b928bc2de6 --- /dev/null +++ b/addons/logistics_uavbattery/CfgEventHandlers.hpp @@ -0,0 +1,5 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; diff --git a/addons/logistics_uavbattery/CfgVehicles.hpp b/addons/logistics_uavbattery/CfgVehicles.hpp new file mode 100644 index 0000000000..933079071a --- /dev/null +++ b/addons/logistics_uavbattery/CfgVehicles.hpp @@ -0,0 +1,27 @@ +class CfgVehicles { + class Helicopter_Base_F; + class UAV_01_base_F: Helicopter_Base_F { + class ACE_Actions { + class GVAR(RefuelUAV) { + displayName = "$STR_ACE_logistics_uavbattery_Recharge"; + distance = 4; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRefuelUAV)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(refuelUAV)); + showDisabled = 0; \ + priority = 1.245; \ + icon = QUOTE(PATHTOF(ui\UAV_battery.paa)); + }; + }; + }; + + // Misc box content + class Box_NATO_Support_F; + class ACE_Box_Misc: Box_NATO_Support_F { + class TransportItems { + class _xx_ACE_UAVBattery { + count = 6; + name = "ACE_UAVBattery"; + }; + }; + }; +}; diff --git a/addons/logistics_uavbattery/CfgWeapons.hpp b/addons/logistics_uavbattery/CfgWeapons.hpp new file mode 100644 index 0000000000..e84e053347 --- /dev/null +++ b/addons/logistics_uavbattery/CfgWeapons.hpp @@ -0,0 +1,15 @@ +class CfgWeapons { + class InventoryItem_Base_F; + class ACE_ItemCore; + + class ACE_UAVBattery: ACE_ItemCore { + scope = 2; + displayName = "$STR_ACE_logistics_uavbattery_Battery_Name"; + descriptionShort = "$STR_ACE_logistics_uavbattery_Battery_Description"; + model = QUOTE(PATHTOF(models\ace_battery.p3d)); + picture = QUOTE(PATHTOF(ui\UAV_battery.paa)); + class ItemInfo: InventoryItem_Base_F { + mass = 20; + }; + }; +}; diff --git a/addons/logistics_uavbattery/README.md b/addons/logistics_uavbattery/README.md new file mode 100644 index 0000000000..472b67365d --- /dev/null +++ b/addons/logistics_uavbattery/README.md @@ -0,0 +1,11 @@ +ace_logistics_uavbattery +=========== + +Adds an item `ACE_wirecutter` that allows cutting of fences in A3 and AiA maps. + + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [PabstMirror](https://github.com/PabstMirror) diff --git a/addons/logistics_uavbattery/XEH_preInit.sqf b/addons/logistics_uavbattery/XEH_preInit.sqf new file mode 100644 index 0000000000..f41b2c4ce8 --- /dev/null +++ b/addons/logistics_uavbattery/XEH_preInit.sqf @@ -0,0 +1,8 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(canRefuelUAV); +PREP(refuelUAV); + +ADDON = true; diff --git a/addons/logistics_uavbattery/config.cpp b/addons/logistics_uavbattery/config.cpp new file mode 100644 index 0000000000..2438bc59fa --- /dev/null +++ b/addons/logistics_uavbattery/config.cpp @@ -0,0 +1,17 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {"ACE_UAVBattery"}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {"marc_book"}; + authorUrl = ""; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" +#include "CfgVehicles.hpp" +#include "CfgWeapons.hpp" diff --git a/addons/logistics_uavbattery/functions/fnc_canRefuelUAV.sqf b/addons/logistics_uavbattery/functions/fnc_canRefuelUAV.sqf new file mode 100644 index 0000000000..4256ddabf9 --- /dev/null +++ b/addons/logistics_uavbattery/functions/fnc_canRefuelUAV.sqf @@ -0,0 +1,19 @@ +/* fnc_refuel.sqf +* +* Author: marc_book (modified by PabstMirror) +* +* Tests if unit can refuel the target UAV +* +* Argument: +* 0: OBJECT - Player unit +* 1: OBJECT - UAV to test +* +* Return value: +* BOOL +*/ + +#include "script_component.hpp" + +PARAMS_2(_caller,_target); + +("ACE_UAVBattery" in (items _caller)) && {(fuel _target) < 1} && {(speed _target) < 1} && {!(isEngineOn _target)} && {(_target distance _caller) <= 4} diff --git a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf new file mode 100644 index 0000000000..7783846beb --- /dev/null +++ b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf @@ -0,0 +1,34 @@ +/* fnc_refuel.sqf +* +* Author: marc_book (modified by PabstMirror) +* +* Starts refueling/recharging the 'Dartar' UAVs +* +* Argument: +* 0: OBJECT - Player unit +* 1: OBJECT - UAV +* +* Return value: +* NOTHING +*/ + +#include "script_component.hpp" + +PARAMS_2(_caller,_target); + +if (!(_this call FUNC(canRefuelUAV))) exitWith {}; + +_onFinish = { + EXPLODE_2_PVT((_this select 0),_caller,_target); + _target setFuel 1; + _caller removeItem "ACE_UAVBattery"; +}; + +_onFailure = { + EXPLODE_2_PVT((_this select 0),_caller,_target); + [_caller, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation); +}; + +[_caller, "AinvPknlMstpSnonWnonDr_medic5", 0] call EFUNC(common,doAnimation); + +[10, [_caller, _target], _onFinish, _onFailure, (localize "STR_ACE_logistics_uavbattery_Battery_Recharge"), {(_this select 0) call FUNC(canRefuelUAV)}] call EFUNC(common,progressBar); diff --git a/addons/logistics_uavbattery/functions/script_component.hpp b/addons/logistics_uavbattery/functions/script_component.hpp new file mode 100644 index 0000000000..56cb8114f5 --- /dev/null +++ b/addons/logistics_uavbattery/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\logistics_uavbattery\script_component.hpp" \ No newline at end of file diff --git a/addons/logistics_uavbattery/models/ace_battery.p3d b/addons/logistics_uavbattery/models/ace_battery.p3d new file mode 100644 index 0000000000000000000000000000000000000000..bf756d62cb7345dd339378e93619cb473ecd9870 GIT binary patch literal 51378 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 literal 0 HcmV?d00001 diff --git a/addons/logistics_uavbattery/models/battery.rvmat b/addons/logistics_uavbattery/models/battery.rvmat new file mode 100644 index 0000000000..36329ac896 --- /dev/null +++ b/addons/logistics_uavbattery/models/battery.rvmat @@ -0,0 +1,79 @@ +ambient[]={1,1,1,1}; +diffuse[]={1,1,1,1}; +forcedDiffuse[]={0,0,0,0}; +emmisive[]={0,0,0,1}; +specular[]={0.01,0.01,0.01,1}; //amount of glossiness - the higher the number, the higher the glossiness +specularPower=500; //area of glossiness - the higher the number, the smaller the area +PixelShaderID="Super"; +VertexShaderID="Super"; + +class Stage1 { + texture="z\ace\addons\logistics_uavbattery\models\battery_nohq.paa"; + uvSource="tex"; + class uvTransform { + aside[]={1,0,0}; + up[]={0,1,0}; + dir[]={0,0,0}; + 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,0}; + 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,0}; + pos[]={0,0,0}; + }; +}; +class Stage4 { + texture="z\ace\addons\logistics_uavbattery\models\default_as.paa"; + uvSource="tex"; + class uvTransform { + aside[]={1,0,0}; + up[]={0,1,0}; + dir[]={0,0,1}; + pos[]={0,0,1}; + }; +}; +class Stage5 { + texture="z\ace\addons\logistics_uavbattery\models\battery_smdi.paa"; + uvSource="tex"; + class uvTransform { + aside[]={1,0,0}; + up[]={0,1,0}; + dir[]={0,0,0}; + pos[]={0,0,0}; + }; +}; +class Stage6 { + texture="#(ai,64,64,1)fresnel(4.7,1.2)"; + uvSource="tex"; + class uvTransform { + aside[]={1,0,0}; + up[]={0,1,0}; + dir[]={0,0,1}; + pos[]={0,0,0}; + }; +}; +class Stage7 { + texture="a3\data_f\env_land_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/logistics_uavbattery/models/battery_co.paa b/addons/logistics_uavbattery/models/battery_co.paa new file mode 100644 index 0000000000000000000000000000000000000000..14abfa75b09be2066d192b8c537dcf126264c1b6 GIT binary patch literal 212387 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ε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�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 rGMe62PtZESTBW0Kb(&wNeu(^v7 z%{|meGtPs1-^Cz$;!{=0)DuN=5_7t}axhGjV8z^cnXNm?-&SY-gw8nZ|3w25 z?6O@*(b|EH?`Yp9E4%f_L`_OOGBJ^S8`4Ko2dV1Z@bS)-33unw;*}};j{=<{BJ*)Wj1t-!MBczq(Ecp#oHwUaMe{0!T@<7Cw#liAlTC}bv_Tor$6_=r zHEKG3pnViEcUcfy<4n0O+_d=&d>!BI@LeB%_f+6!{oJB44F^iO;&$aOP41{V)Nvma zO?0o*NaFoXFIEWMzECc<`cIm>dQmC9$Wmk9Re7t2*5E9hM=veg(~Z?t8Al2Z>=HHD z4Yq|WZ5%A!-#{n$Fe7bLtHhvNG+3^qr#MM;Bba73Wue%1fl+WV?ZJ^J#UwUeo=SX6 z5P|E>xj5n(J{>6$+RqyDZzUL+wRW*`YYcCa*=Fp*{L{5{`KKiR_xQe>pr&j-=YOiA zQ*itiat1~f5@2Co!K_!KQORC{?!8jn(;t}$}a5MVG`QT~ON$7!19N^-|^rl>xK@z(~ zoEk~MTAD8|drI@p!J0cdD(<+)K@>((cxx~v1Fo?1DUj|OtK}cLKt#%cntu=GMb^PD2qwm1Vqg-)dRvFl`<#i)P^nan4 z2y^L9a_~zPQKU#qigrUX{pl63OnH4M+zOzXNAsdIFo_zsYn1=v*fx-FCyMOGkpkuJ zo+=ca^Z=n;GV~k-%sD%BYhuZK%lV|#ZVAA z?@V1rPy7kfGS`XFF{Z>2Y?EcdhE~hg&{@YT={1axf#nP2-CRje5o2kMq62%FoL;+i zB;$~R$>~Yk+M2?x8XV8&5#BpfpUkEVcsTv?sC z;2u6b^xs~UI?q6etg&V$z{TEgDz&$H8^c%7p;N)1Mv#Y3^T9`P2nv5-Wf9ieils z+4SL)$2%z@u-+rIOep@7@=uN5cU<;yDxO&rGH3;+hJ>W;WYl@IWc z=6QRwtaFB6=!PtsWG}L!+FGf=9n?884%4&zGHR7OtlRgf8>LPz@yxxa0GV)HJh1RP z1sblqzS0v_U;@~t5fa%&^$h8%co*3+JZY?yDIJ2IaB?7lYNfFTyQDg(rCAJD(rc+k zhqiE}^f=hGG_G$53@U8Wkoia&?4!E{wnR5|-KUTW1QjW|(1?b*5;cIGAGm?j&cQ0! zf!6yf=-Jb!f^ku7+@iO@rvdgRaBywoBmKCMInbI;7<|?S?%or)`B~E}du`JuoGu{H z36UnmO-_ix`4tow6j|CpX;NNb+AD(ChhR{i`_bC+gfsu9ZyO(TCtLh6Gu`7((nLw8>@I#eNNmNv$#6UK97Vh}R%8(s=KCzBt3v((i z9`QF2^5uA)=6^qVrC3;z`e+%CVd%vA#6c-B03}i-iU5}fpIC?r0Jy>(m^;v`QSwlo zw^uS}U4;=r@RS3x=E@(lzA(UJ@w_S$NQ+f~f| z_6fz4{7{64rb@dXom`)qq-F+^wHhL}`R}RSjyl%hhPi3$18h*&({1ZqNB1+=`0!|J z@*z#Y#LUl_rY9jd00u6oZ`2*p#J09c3%j5}O9k|f?$kD~lk_(N?u}B5InPCsNYpvF zce-*l{7RjC7q{@ZC>XW1p-!ofa^S75Fm&DS(0vNqn)w=?pDRvC@w2d)@}a9>5gM+? zg(#(mMMSJLP8fyyIb?H*Hl(GTXcpo7ASw-eXUrg!CK~X@P_?e55b*5x>{Ui&EPhpP zkRRvLi73DVH6v={2xeqBK9dLItE#)ks&%v4v+BiU19uR?3?i)7V+ zrs1u?|MLQ`^Nr+pG@Wf`MkjXOS!Nf$-y1ybwjKgmdX&)tjFI^nG5Ct1%7;k&%(rF9 z@<6Be=G=G_2?25r7^WSj!*DK@tm3*k4cBBe3SO4O9UUvXq)zw`>hX_K6xs}kWEcs* z5-H!0r6J(AD3quD6rPt~t0!vC=7KZI+nT6u=P65CVnZG?Py? z%WkHxAAoUxFbqw~FvQYa+r%;z%C(Z+b&uX?+|ga*z&Oj3(oB(wzqm|{0X<;jB^`)C zV*%CepJz&LYHlNiILB&$Z?VbxuYp%czXIl%a=)l%JM^J0plsePAV=IoA5Eh4dV+wM z(gCp14K9_7Yq9-=@&vAM-hRI)<~$?enXeMtQ>g~DlFIE(O~)GjcoMa2XlDP&nus*% zs#ET&^FBoOJaz8$sYB`NC=u#mjtP(~{M*}~KIC4+%n>N(YHNeaW~jE>(cSxb0isgn zD--phM4hkF+_Q&OR4GF;W=1lfVX{Xd|6>@@_`k3Ob`e~rzrp?QNE??~r?$?-){|9H40hRGy9QXSQb$}Bx#9jPpy}q^ z&~)otXWrL2s(p%NuS^%n**OQLS%7VYHALSioPddvs(ZrcBr{Ab4MM!CHI2Z@3{Y** z!g@cF$~6$_sabRh1Rd|iGb`z8grK|5REZfZUZwe=WD7xoqILRru{vUOF(u$q1$OE* zH8!^QRxX+v;3dhK7MnU__6`icxo*k#_vw^}rnb@7Bs{ zYjzNC=x6YB6C3+3b4HV;N(lVJw@=80QgCnHf5a?{IcmK~hJKGe5||ndBk1Y>BY0XQ zT}=9-l6XZloTKs8sap;CbIBbrI~>^PlxyqfWn;Q1Wjke_>_fqQOlyL|t8ZWw9#CWi0FWnm`P8qy&AptTA7QZP-jX^Lc*A zD^kn=0tg4l=F$F}?#_EU>|2cKuUkr%D;06*b(T+mEHvnT_*yooRJsat&CKwD?}A~l z1$gW|nwqWAiP0Ag4Lr6k9fAW90Pk&{S2~}&+fa`OUNIINmzb`(X@sKWWN-pr${ajO}60 zKU$1e!#Zog5W)URFp<=rP|m!Df`&nh!_SwEx#q&gR2u{)QqYx#u>^Wubt1kdbIIL# z)+#K!eCMroA)0(gqgk`e_btL3E^>}VILHjjWOtt~^L=4mw?0KwkN2^J19zCkx~vaN ztkZ0w8W5KBu&X-^UX74qZVkYfnN6yPJNI3&3Q6SB8tgBTigR`tY|AC>K#4j~@}D`X z9*8;O2u6+nRM%;!(7@^TnCRuDQ2JI@junj^&sNTu;_8a0{?)K$`ko}C|!fp zLiwlA7(>#59vyk00ohhU!aqd6c=f$L%Pk0pV&8-LpklX{JO9f!a3a|F9|>v4uhj8m*mfHVOW-=dadd797^sB(uakl-U7{4WvRc57B zPH%w%yz|ytYljcVJ+3P+84!U9evpC|l*sIgP0eKh*(v)k$qPK#235=4^EjyZg@nYX+HKL)qllN zyHoEwbBgnt%rQASwCCwPIwuNN5iDEQ$>m>>dQidARgRsU7R`l|P#>Yka$`dYHL~$D%aSFk<8B zdYKOgA#_cQoCKRv72H>$ZY}+i;zV9YQ#yD-wlhxv>r6jbhAzXC@LgoKJLkTOAP3S2 zsQ=h z=iq!v1|0DA%fMpfx%% zFR$101({y*583lBq^h+#toU_pf&@;n@JQUiA5+Ru}n5|M3S8-Q!E(CA&b;V}hB2Urr@tHt) z$Rm2W=IEHz%GvV!EtZDUJ{hLGwp^#q;E}M{ah)?Z$R&S;_nhfW5>jhh8_eA{Wj~so zgpgKrXq`A2*D@j8KL~dE#i2US*%@X6(0^+fAmqWsU18De#D(__*mxLrIc>%bn6YWD zQg$WALg-ZV&Ov>0Bui4zai5(E5gK27u@?_+y!-X0_*J1$@+#14+u{TlntJBiRjZ8a zJ_vJ+d`n^2X#HSB5AKDTp;LulO@ zMqs8KB2Z>5f3&S}^Mu@L1vajp1vaDqAK>6S$To(asoSsTIA&_koF!fZ@=v^Ti6ty< zoM!zPLJ;bU*b3?v8LS^B^q-daJtGBM;~W;0%NxP|_&jMY5(4Xi*ePqqP8h=#3?lC% zSzBPY4mKPR5DtuqgQ%Gh$d>55Sg&5bgFuv`^oH*b8-Z%jagnIAOdIHnRq;m8$iVf( zaNXfIyvd5@C>{e>lSKad2a#f*|r9;;nVAIJ7MQ|@%_u!3HWy4uHDN=~!{$&O7WG!9UZnS+?8~p0CAtOR?K+Oi z^3@0uaBSF++@ohmFh$M6rgbJ}6eiwD?a@s$d!5S9wL`0n?2PD&z;ztNUQf|;8UqSW zb~CivKo54mJXj>~Obh)hX)HmV!o+x6G=t6XS)_%&*ya$PUd1r=#n=#;d4^#KEA=jl zL+*$(eFhLKr|?t;^dpZ7giiW~5npOBQ}k!jgREGC%PB5gk0PEx!!4( z*08_x@7dYNjvC*8EzDKSogd9dr=|D6wl9rwN5$7?po45;ecyU-qKaiL(l^QIKWn|O zll9tAkeW4X?KRn~_#5<=UjI*tSv-U_-4RZkIX3l9SR6Hs7U6*p1OXphY=&GS>RS2M zP*{3e-wcdHHnj~V-FNh(v)D7})>GaM(OXPwZe$EY8*6hxVPVDy8?khDY-i2XNA<~c zF@m_f#TvZPadb?k-i1WC1K)DdW2o@a7!(7;rqE5)Y}5NY^9yBPL5)2%k(>$bRDIq4 zYjz1^b>H5lcXghJiSjiNu1%;jVjF}x>XIvIj&cMLvpqM1XZB8PyIppgiRkxKcdVn& z@alIkCD=W2zV0{#n^;WU_e8{paPRdba)12)*sy#VmMejKNOR&;h>gTHB9$A$;`ie9 z{Tr=a_};$0cqK&mt#c8Oprj>)*xNkb_(PZgGH~+IF&c4?T4zhXWhP)C+akA-AQx;No2a<0g}Mrl-jZ-mwzkxnKk>|V(O=dVuer)R z?b|sZuUe_gEKiP)lg6o7@9oFsR#qdHWF7%RtFp_X-rMHWkfhPN9W*qse7!i;^U&a_ zU&gYFe3KC-6Cp|6G`6-zyZ>KT)X78b@;ovut%cx{UkDu@d>$a&O@Pw-7qBiP|zeBx;< zRNUuB^1g*sQSaYC**T+dA&88O4Ow#@V&J`NT+#$HH%v*DlYvZLv8^lWPGe(Q4sllE^K=BKug`} zJE)iA=68-tv%+;&^ThEJ(R=#ujP}u;%3ta{$1wL}0ps4i2JLY*3Hg+oFhHZ^QVJ}W zYaV6r;3#z9(yy@E=pY(Lwc@8JdAM*mSn;P`Z@fvz*-fwWc*orqr+hW!B@BK*>Nx4m z5##$T5d4q>{kh~bg5DxlLUY+KiZ9_(tKQTDF948Sv%u&ay~CQh@s#&~HFZZAmvCLt z250ANDA)XVkft7;StrH@UI$`Ylg8%zD;Y`)IXLK(gc_UT9(7nD{EN4yL{PUUP*37@h#`85rYY%|+ zO}rTmhs=6cdfut_cq_zywsShuXoUXAtKDlGbRdW(I&B7W8X7H#;_ptIzI5U&D(usZfV@yf>~Z43YofZ7sS4Xb-(987;XBIlfIuUJ9{Rk)6dVt(xxrr%wIU; z%B&0n8uOQAXB?5=N%TQC*qr+h=ZOAan}`lfLTJ2=;uUv1ANJqo*+xbYH^{tB&6UkF7 z8&X>0vw$4idC9EDrM`){%c8d>`pgKRo0qc|<&`uSvPdx44=&2gfTm+sr z8_}e%?L02rgz56l85I;nRBE{tUrm&>?2n#FQ$ zk@j3YD_sIQ&rRU=bf%{2@Z>5@h!gKMeA|McADdm$ZyCe;caa)0K9ASf=rsd3@bcyH zU9lOgoQ)vH_grR!=5`spDDcMrghI&5 z29Vo6x^p942}t(B?`tZ$$3w6&TUu+}oj3S-9g)r}8;8_&I1EeXbZAMray^R#tS5Iu=EybKIzsu<6^1hC3I1fmID-Fsh; zM}Z*z-)Oags|ODV^)B_XGq6JsHvSuhR3{H20PIWB8vES|1Lg%~S;zRe@%?RutUQ+s z&o=t$8*3k(Je7EU$Fa-s=&hRA;vEfb(>4jsS`rsZ=nWjX`1VOx`y>45XSu^$DpgB1L45QWI#2yWV42wDM|CmLs^tfPpwShGa8T((uy~{?Rdm5h@i%#OH zYXMi;h)xJ2yPWx@3^c^%5K4w1xgY@}yeo>&1~OAgK(<5UjR3Gp)6kj!VCE7>NAhnv z8;Zi@^wWrwMCfuZ) zD=irfi~Hl?ujmj!ti7Kk^sZEWSiVQk+M?UBceXo~ZtSZwoB~ON0M{QNJz4fhN2 zxegJ?bP&kn(jq-I--xutZUK+X`w@mUz4sI+H)$a6Q%6h-HQRjMoY@usmte8eCv07J z9WLaj?tglCY{HtpmSE|heFq^9zNGsfNo(qQ%4BKgEVhPE5JH|GCY0|?SX;;tUZ#&o zufxRl`4A};o6|cWj?N#1up-#@%{FW79nf1u3d2cdFCO?2vKnGfXrzxAqh&c0ZhUWw zpnPt?TEelpEcGNrXbPnK^7~_PWTGv0M?|T^-W}38)d%tP?R=P^v6Qsa)o|l;c~?V! z_I&J1uCBZ0Z0>(L3a`lP>Yry3?z%hu@W> z%S@hq)MxTTU@!hN5BrpG+o`>Ysgu8#*i=EC`HncL8*(I@td?1F$)%bDY+rH}cP zfxy!nxTF(UsTv?K5*AR{m>;<^lP|QWx4PugD=7gF)pe)#`yPn!b5oBqE@gkW&aAA% z1GleE#s0#AE1NN=_C#!foS+e3#Qe(uJGF5fHx`_+S{VDjrpLP;(1*hgcN$lg*;6;` z#k9-!oL;BiWIX*LdU$yJ7t*(IwU^A_1o7&j4}b)8|Gn~_2qS%~G4zCinm7<ygUNFl-JC9XS>cZ8M86m(t5tmQ&o$e=fnkc z+=oE6%ybPeq~8(1sd+skuSLRYy`8#8x|hTAy9qr`?KgE_f*`$HSh%*gvWD)xBPlmB!ZLW{-+Fs%Dnhrar|g|4NwdwnS~Zxbq6mmp>&wIMl4P^D zg;9;R&V}J{WA~@uM|E~zhd|8rR+D(+Z%KI5{A7;A|GaZVN(-iMje67mhe20n&)vN% zu7Oa+PU*;A$N^+*%2P8&KXcO8&hQQ(v8hZ-VB}E*rg@7QTZSKgY-iMg>PdmApSs@^ z7W8wJ(5zRd^KD`=_4jF~zqSSf$-^+kflPSF$7A{A2p2NX&7sil4$BPg|B{qf5`?km zPeRxhUG3e*HoMKvsEtw*O~(rp$vwx9pK*CTyfdE2jwN3n85wudZJ78Dcs9m&X35|b zO;}iJiuLkT!1IgRcZoXi&rY!o1P2EN{*VnRd(6A8yu3^a1$PT97 zVC>R*o%B5LzOefFgX`X}VRCBNaNGxrI@3@_#PH5Po5{wZBJoeSmlg1aE{2hsIprm4 zM|_V?XB!*^Lv#8FK-c6$)pFurkj0W71|i>kbNpK{z#-Sxg&h#1=pMzBIKzh3DRC2L zNzD$+FT;(}H4j!P;@gI^_keHSfc!?(W2ptYwm>l}823MG(dp(!-!l%qPuJNB(UDzQ zFw*>^|BK{Hts{j5v%R-h@yEel0g5GrHDQMe^Ezj9tZ1+qZ}5%-aCGFNOKe3KCbM9D z=>EHa#{rs`x>F|}s*T;KZ){uIe*n?jD)6uu;;mz%v%d=p4x;UAvzCxB(GW*K>JigO(42Vq0+LmH|`Z zq+MA@&5W%L*`v({?WcNHFr40FqmT4oj$&vwdA3}B5F{kmI&*&nOVlgq#7Jw>sa9b~ zvfaHvdKWwxZ_1Nn@eU&FQm(}deL(q2eJLaog~<_DrfcHjh`~Gu0E^Sm-DHXg$5zy| zbX9Ty{4EOoj6Hm>9G}}2uo{D4=v(fWSHrd~-JL8L*iWSSdK0=0O1bCtoNn5Cdn^(} z`CwZu@tDPu%4^jBv8NA)!X7|>5-O!)?#S^(bC+5XN z?+7jv%6ay?jO}dC`L?d&@vep5AKs_#!*iQiyaf&kwffRj6Fp)sonpPpY74Y8ZXb=40%~t3c-Z?2J`H*&rd=9rPe9GgqBA zJ=8DX4c@)Kf{;c2N+;x+h31s3cg6Jj`V!6Zi3?8eOu?fkUI+L@+(JFBJW=}| z#RVQ&-)?LCu8>y&zwR2mo)s9^l`l5`J3wd@y}twa-D*#5>P$8@rg6DnFr1Yb2zAah z<;SXHePP_Yh-k1-yg6nfMK|@ft56A;etFN-vs z-50i-2)&}>)H>>?D@mHQc<0-oPQR`HYw;Dl^AlL+9)bPd6X2{hEf#R&H)wXG>sYLP z95=nh*nCYIFd^7!DeuxnY~JPi={<45A~*68vBV~C6krL8jfQdY=)f9AGPBX&0?^}V zfmBMcFFnqJF(R0g3rQXkE9A?(-o#$h+__TE+o*3q%@m*Y=0r2SVVbr`&@;{6&&(o{ zd?2DHL>4H#Y#M}&x%&t?aD`_bZW4eXJzVS2B|Z!DI%i`?p*5LknN;&md4nb#+dwG4 zVz0PaCFo3-0HGy;6VM)>{>aw(+m?cnYqqd}jx%Vk7sz?BwS49eEDIsH|Fh{!BUS^E zJ*AL-;`Ej9;p7JlIERZ)pC7o$JELV$D|P3T(I%=9-Pt;l^&gqQ1JGk6pC8Y+#)k+V zg5_d~_buXtwQDr~pHPiZQ*wY$iJ{ zB=Lr4dA`2*{g1=Y%&{aRpNf!HYA@QFEfngt=nEiMScAa!?GMqO=KQIN3nDJ95vH4~ zloR;i_Ys~1-$$cV$mXpLJ1kstCcbl|&>n4}OTAz&LEtL*OQ0~)W4VpGz~SY~NHK`+ zuK|E_3gK|+8NstAXm6dIu%*r51pgR9jNytmyFaED)mI}6se<8K!n)opmkdEous#1ZPF zV8^Ti$^FDTxcIBH>(gZRg46gZR=?4yK8NOyCdZwL#jy7ir?{wt-l`BOmqXk`=087< z%f`?zrqd=u{h&oD$u%-y7jhq2v)Y=LU@PFnOrM2e6DuHXzIK4&cHRx@g2s#hh}@oJ zGU>l#%)k!x>*IfeqagUgW?jDM8B zVRg3j8(>rk#v>sDGOQ}#R<3~p_m3>zIUgF0=zj<5A^yW9yKMSsajnf+3$nj3qA7U}0r@9aL&E(YM;J1J z2#f%ymdl8sj9>vHaw*B5t>0gNEGzsHKsho~0+q3X6j0%R&6Q{YMJ5Bqg)T%R1Be6A zfZ-qtR{9t!RA|BVCWMu$R2d;@NEz}NGkVakkP^7r@pLK6xr`b`fAyHd63wJld z0aOm0&iY&l1ED?R*|DyuiJBIzOiyKmWFzDqE2t|~#Cgiq=_xE5L@m4?96rv179dzK zRFu_1K3YRn$2D-kmE}r85TulCEyzk!vLeiLq)B6;+GUi0mo1`~5WS~LoDN2AMs0{8 z5%_%u=+RtrN3j4?;GX2A$@qc@)1nqjHUiaH#2R&WX+b?}-d~d~9KGb%gmO6VFll*L z91VxnrbMX<-7-Lj%3w5y50DYkujf7GF)bs_$s!fW+n`?~^W~h7Tq_Wfd6JgPp`=uk zSC$YRrQk0?I3c%$i6o|OhVurjPwZh>;0ZC@mfQ;?d=8iH>T|#XO zOr89t=;MHCqL4N*;aqErG=ooBA>c<#rm%3nk^!5k+0Qoi7FuKMBAwuGDb4+;n`dT4`D@8btKh9C{yGaVN$-DcMNQ0j8-qM@8j|-F~kIFy|a)^jCY9Q!xxzfTpyrpcQ zt?PX11}-z0EOhyieC4N|l8#Nz5G)L-mQdlCM(6O?C&il72~M{tRspE0cpVHcDq8(B zI7N2kW`xz6u7k;C$y}uX*Z|e;FqSBrsa4X_$=JzAYSzho9T!R$ z!vg;alB8#-4|^MR%9IqwDKnDAK%&TX^UB|2gJ*Il`P4rP8B&0Tp**aY!Oru_ z9h4^8pf;yw3C*T5qHvSm!l+BcZkIyl9%oaZ5UGdQ)Dp6#OQ$DTCp}ZW%ac^Dmu5tg z20d`ROjV>3R=-uQM+=4V6J%`ah(j?sI*LMM23~ihqECa?2hYR2T3nu65|O4bX+xM# z&*6l?cPA!c6_89V;ZpncVE7=_sTz_AF|Zhkqs$f3Ps| z`hJUr;M-#5Oxh9_l9kCtlL?F$^v!PEPC1jiNKR0WD4Poh84F3~W|C?my$&W43m8jt zY#yV&k(n%9nh?tgnxJp-8e9EZRaxy{QWRgZEah@r#P6+Kh)n%U8*l@~WOO>7X;xZNdR@_-(f?r4d7{QHnFVXkJzgp0 zgS|Vy6D@$G=&7^z>SPPnGr~#Rk_(eWm4fC(Bhx=#D0G<34=PW z1^j>kR&aHp49}@2T<%56MTh%FB?yxrL2xQF;6Tuj`VT?U zRoILsB0f~;O0Uy%cCpQ`X^lp_eY=|T6(k$q%ve%B#?b*vMy1*joC^UcWOS9oc$3|G z6XWu>NATPt*3of$>lG|#v)JR1YV@h68K<(CNL9hIYAM)u0yX(bm+HnA++vCSn#?tj zPXBU!?g=jSNHz^v2D_;V9_~Iqh4L8Eskx$0oasT}WA^2%g^;`wND{$Y7~YJ>oP;wt zpNDR6BMNYRfi(6usZM9^4!x>ZE)pFk-lg1{{tZ;#%I(-I3w{hDGSq;bEl|bpbR;(N zS4Ju|T(f(VLs@M1wof*9-b8XP7(#oyEwWLA*df$ToR@@MFqdus@AA}35*=3Fu;;Bn zsjrKu&!=iFN-db9KFZ3ku$;LuUmd?(R0GfHuvSJuSdP5YfW)#A;!h*gxd5`V-#lHd z_AmXh?5nI@9SBV3yVBqAd~;wHn3>gEi0Cp$ZW~|p2j6{N$uyuWoatM6HhGy7U{+&N zb9p`Zw9k?(>DvY`_wOP^O9~}Yo4Eu%nd~CfS{ecQ!v*koH%s&`DH>K{as^>gw05bV zvn6i{ks7;rw=_d%r#DH{c%({v8auOge@*f7jp=Hr2)ld*AgQ|taxd^0c0cZ&vl+hh z(tOF18|hB8*I+znQLisQ)#}YY_W-Iz5c-_&azN|P78OB8Dmfmb5KwRCgEGnw95>9C%L;#6jt|+#s3u9VcN@LDVC&d!aEEx(pu@S^t`jkfRpb!a}Oe5o$CFFbx zlGC(lO(B>}Fmq$p;x;T1z?;a2V<58t=3ZdPve@S65q=ThOk;v4YFj$Z*YK zmsF~AnI7Tr!8H>TXN!rIVl*OFau`{k4L;OUz4^MEX&PVtRvVmX`8j zCG~{4G*|6TNPF9}fL5`)0#^C>^ki#kD zXbO?rQ%E+2j1x3s?lL0u>{U|+{nG55)G*$XDjJ#FSu!>zEhvZ!yjZZ(uv#e>5smxY zi$^@3CriIcuhI1ljUx9wV=gwyW}Yx*&@ykXw?Z@;7K85kKM`IqrNzZSMc~Qi#c8b zA)CoHa0fX3kMpgmeXKQSzJ#am5#SK95aP394d%Z#>+GtAlHN&KQv2B^>bKDnd*E@B z%i+xY{B2)Ii3J^#>7pV;)4TW2qmya8sTg6mEN-IC_4aP`BpxaB^%bFk55Sd!Kn=FI z$@kBGDh?rKBwf>w_-x;7YLsKvIYa$)%A(uT%uqXu)Ab zq(2sNe~icosn6F_=ZaQf1NM!*N7MS?aI#2yZ7s%b3Lw3EX}BR)b}Ka%sJ5(ZZ|}Av ziR(gtT`V(cZhS$VDa)1k4v$F<7=j+^cpmmxZ04!1e~gPSd+hV`joxh4D@`bhP}Ew#NO|wt z(t{lRyl9L6Dz~>2iE6a&b4N~{>doCt#k>1@{lR_@;=dF3AoHUYw6-iXI<)1}=;Ef{ z-mM?dB`Dr**z59^7m{U5w+vNi2epR1r&=JOq$tyu@?~PXLRFW}byqg4p4VvpMs-l zB!iHNLvp$Pa5cK=p6$^pZ^&2C-j=IoTJnDcdb2naefuaBEi}`T?&Jig@z$J|aJU)i zE}k&mYjKHtWS$Q*Veu!lbMo3Ii|k&} z2l!7{ayd@|oJ9-jtp_o;Enb#Q#&e`zGy%uHP-siO#WG}iFQ7BJ)|@PiNE~nX$CJ@0 zWm%|J(>Le->u!agZu!S34c}Ptjxf?0*zo_IU$vMRoR%4(qaSG z<%_iOl71s)82J7mtwBnhg`ZAQ=e|kjgM-1z^fzhY^`9?)lb-mTu8E_E{tRP@S(ze@ zrm6jiWQ^C!+3MA^GRb%(Ttm-5{BUC2uHHui17FD84Q&tUI|N%=SyCtM4Ij%% zrOcYU|7;%G>E`%LdXiLH=;wpQ`LmNy+1q^AG6YWV$-D}%aPYMd#uMI>3wHktq&;UQ z?aC2c>LF9r;j7fmYA^<*dq+O_%0I-Q|9YnEw@E)jl)XEWS|a5BYD@)&O){E+;eI8TD`Yi_RrGA@2WcxDDOQ)P4kt{%1||) z=@KSjN6be5Ogu1^^+Ef;xaqAIychbb(AkgsO7MN&H_Cl4&&pUj+q7kLY00Q(XmoMY z;RlL)&OP_QAl}=1#Lsn=4|HAqVFik+D^{rL6hHXxM%TlC%N*J&^tlJ<+JG+9UuDfc za($$?x3Xx~V7#|?3k-xb_^IAh5lR>vixxNiLQ&KJwLq(VZ_U74FT_fE{l(3m*8_Eh zK7biDYtYhF-=x2$X>Zk0Kawmd{`&LsGQ9X}Z&A{N(i)T`oldo!#x!~-Ic!{@Ry#6( zi3kywJE)viDTnbj2w||%9VkQcJdApHyYG*HG4PMV%6cgo!aFwcxc^lqmE%DcZqNNj z*Wx~DPYoirL`Q@marfKe_sy}Musz-^C-Hc5gcVi!5jG-Kkq+a(a&-}BS^!+U`)xd6 z(Gh7QMxr5fuMWCd(%`>z`zO=X98if5@-(V@;G*osxR8n03q5nsBe3J$Z zjtd9(QV(kvH*Fd6jM8hdmuE+RL<|4ETt=p9L!OOrIlqu9-}MBxq8b>tq`iL-Dw?ew z))D$M%zxAW_>nOm)SyN4;Z5ONJKP(uLF67~D zAr@q9pX@Ig@>J1CNpE{`*<^a&0n}G9nYPilT9WoYYAIDV_yQbZ{<@?BjU815=aP4C zyT9}hW%JK+L`%Ke{)$Tau~lyxzM&o&Tu2^E#|*=PqW=Dh1<(l^QH$G*w(mW1KsC!f zP7=;G4p;wXht7}a_>>{@w`v5L63lkF^-{qu#z|iTE7%H0c_3fQz7T6`Sjuw_^%>=S zs){4x*x7ol>(tiu8|<_{Fm|Z`=_7fY@w48)$t2XrDIJT)=8&GJ$%Zb0A;cd^6XXzg zKAJC(UI}r;WI7<*QZ=w5ZiB;-cssp6`Jf<-K&Us_aikR^8f5 zQAmG)`p%1L=q$CxlOq~#{z9Tx(KS#bV-2&PoP*7nT^4-ma-rZWeR7V)JtyF8$BU-< z9}}#`7C*Sa0U8Y&MhaBG$B@sh}Pp7?VWdEaQ@y?z47?535Qx8D8|9SqV86aSjlL~+GWpBC0M-cw?H$!(q&1S%Ecd|8Z@lb_EE-wcn&qNz#bF`yk%YGlD5ii_})T>F+1SHH7?L zJ|7)V-N83gyNKxjHB)Ep(az?^&jb*uGiC{~v>LmTcY`IlEprk+WLkS$b$O<9g!Dol)#4ZaAYm~rn<`jkHJh<4e1X^5a6yn`VlF52dbE_ayrGp^ib zSOmPrg|1esfyx?0cLaPp#FgllE%hG~x$1)F6QJ>6>8qSct8xRX*OzNySwm6&EFfA& z0zIV*S6>|3^nm~FUaQ*bMUZwAGGtYkdirL&Dd|%;9-VEAnL}9K_u>&TN2NSyly=ZJ z6Gmiq?&f`S)vlH(R1wH}xY}(?acQ}MppfDZ=OCl~D=te^BNl#qx*V(5NKYM-BHoH+ zo$whCs&JvJZR%~a#kN5Cu!b(}-{;*)H5=hVTmAD;(V7g}uu7;5jpx4poPejUeD$>@oj@kVSkrf%goJv8_sJuwpkL-*HnhfM*cy@Ay$-#{);rh z`11K?`73~tr*eQP`(H+R$e#X!U?hgXf{$@E|LaJ9s^_HwWCjGWMSM5L$OK$TJ2D7upP4f;|23sc6S^8_M;=rV5c#E4vK|}QueK+>5dZQ&p ztneK7-(2ibE!4wUju`Qu+v54JAKBaeU$-MQmili$<+;66sWzi(ml%YLLyA>&y}uIFsLPDjf@RcmAN3-2##{Sj z(G<@`n0on(x0D_4hwB2rh9{k#f%*%_gy>Ez+6juHl_=FOo+r~w9Ob)!NB)Ze&;=M79=&V-LfN6Z>ktheo{7y?DyL(n6czGHHWFc_C@_4jrnj zKCA}mYB(|V`uS>g^cy_Y!k3L(jz3k1PY#36PYJW~pF1fdb@QriW)d>hR5Q*vS2 z`?Fy4*|GnUVomA84k~O*{}R?HwW$~N_Ku%f7#BEz4byph;iMyVK|gIsH(wpZ+B*-~ z)tib(M^B%gOhdsMphqpr8$qP3y%(37h7+3+WGs%3Zm%e|#eZ|Ez2rUjxmBTFD!vZ! zSd>l~y>kwIeGsO*!%%+1qvAWcf{Om#s~Y0P!iXcflhzIl_6PLKSKExsEbfK$Z79q0 z5%@~{Xg<0Dny!~$+qa>u(5ltu5@iTdaKV*7-PilPLese-yb{%1mfY6B+WHRz4Sg#T zrD)|To7aL+McVaqkkC+Hv=L(;@N3&q#1I@V6pqF!m!e;9iBE6eYmIhOC9-y6gt`+e zEY-jnZqjNGrkfEI4p*vw%V_Z6l?hIr220=j^o>{tgr+{Yg|c;R+uL4jg~4!d?@xnt zF&(7CbkL6#aR27KRcV32&#A)#X%V~WPD^g~UTUVrYwg2wtw#D9oLY=djQ#RHEPP?B z*`guD^$XRm)I((I-=xbe&Q|>{qp#LnZ53m+)Rfqrgd_S)<~JPAkp3LgEH{D{l$v9A zC#GRGro~uGcwzJ@ZfSP!vgcdIlelqcy4hfl{!{#EAjCN7OuANJn@t(LG(j4!v1JcC zaoINBN>aNqY2MqZX&mYQH%q8zbGtcpWIlk|ph>xVprOA>57rODvYZDSp}3@a$#DlDN^ErK9&-1G@ztdQBpQGJ}h~ z+2U(f!|0+iampeylj(k+LqP&-mTn2?{aIQML!Im+XtYYDG1D*usUE%2+r6lca3est z`kZ>mvt8A}xQU9*BIC2#%WZ+M_X}BXX5}aQhit*--d0ShBGHQKn|7m;fQN;fS+&?jFV_MtSPwV|wjaBKQM&z1yy${)X zNNo0*9!lb{5}`DKAn2%f=dHfb;TCZ}YSAzjORoESOk6^j4ZPX!M+|mqafZM9dsZEG zD7)#a&|IOAb?2*LT%lCfl%BOSf-pDsjDR<87C7EX-#qQHvi!+bXKGSt&3AGz*8^pK zrBtM!?lH~t=faK#1P0rKDFGBuMIm#3iePc%hV<>JJOf}5XJHB`a-1C@9#5GgsU4Gq z8kF_CMFQYg!xjyjd>-PWYz=cGJnmbZJ=sDT;JGCW)jKA3Sfks~!NK651%!&e9k8c1 zZiiQnMibOZl4Lb*u_z7;6+jP3hYrym2$W7HJEO9Bx)C9aHR3aLW&Z*g@QuwES#z}! z2HJZ-gg>83v{0&j1(d<)$GyMl-SqJ{L6 zVcuc9&G24L)=qcYb046XZ^n!RuI*o)SF99NK%H3)7kDKcpvQutlE~SO#QUgkL2)%kh$N|)l>f= zZZ#&b!Nmr=%)c|_LF`cWGr5Gj)p-2^brAR87&5H6i7RXu2#xGzSu$ODB8ztdFd_Ol zL`57^ov|ve+30C84jItikUibP3eEmt1oyqk2(E_vV0GjU z`+y}=1H=bBzJ-s}lv{2A@m@X-{8jfZucxa{)9MX~v+VH)NqAdbD;t1@fEP%c+KQ49 zNJYw36Nx9nJYv@7yH@(Z3mg;#D7}Rgdd!l#?Ffdv87zWicuK_zSGBf|_-{OdB0mw) zvT|>>yd1DrS%0>WE93&mLj{{jkzwSH^ly=nya+@7ktpiXq@F}l2m@cD<|>$!C5?z` zQsK_U=Zko%MB}$-b<3>AFVO8f#(00g?|G7F#Gah9MGZs|yExzX_@BWd^2tP|3`csrxvv_sMn6W!3YU&eV^;^zOJ{2;k!5z3 z@-iVZw;Mtb*&C*xxt-A2RI~VaOU^_(@-oMf)D(!5NS<(Zd;+@2_o_*leENIfW#5fQ zACRZ(_0d@v^(cVPZT_}hDP!j}ZC#;oiFCKYhC~qBL>pZJH*+I6$`Y6{1P+&DCySOt z(PE)m(H%Q{JJcXNyoB-ww!PKb@$9gtGZ7pf8KJL5rCjbmgu5ybEHC#5e(HhMh5w))OqT!bOoq~$H#(K5BBw0y&s(Nz}zxRz9!kR2L@@nDUjjmEu9V;>0GhPOnn@;rT$bosI4P88uPO6pKeeRY zTl^AI8P^=P$l8BEV>lutVHRK(5eXfs(B||MELLV>fm?V4>v;Wnf6exkwXEVQ|8y@k zBQ`Z%fm+qKsUl0mQe-rx`E#_0Y9u>~`p}{Pq1aIB+}IeAnEj_CUccp0!flRM4!Ld8 zcW8@pp*go$HWwADK@{YQX2DPiUmm+?+BI&TV{&&8%9^>+r7gx~>h@{ekigVw0%342 zS|8^iezp^AD>X%$Ry|ucdK+3ecI>QpmsCnRqK%SHZx`P;Ak|Gu)=urV=Gs~vo$mpw zuGsUi-G{YKO14Py$^1m2%?$|v_mPIv8>gZDM7|z&>F(3^)L#JlfYdlZ&y=UEBXinKVtM#ib=`1pe*~H_~Rhk~Twg7`S)TLz_^_0h1gA zZU1u1P)fg?h$7MZ9YJm2aum9pXes(fn_X6B6vwi<9!+S}6R>?=X;J*x8}}P`U#Qf+ z?r+`V(==_ZHBY0P&@#t7BVDW=TKcl_uM4OgMs0yVcWslVthyv+dL28`x!j9fr69hi zYaS0g?af*nKJlp3LhWbUZu=Xv{Mz@hRKiPDS$tvYTro_OkR4Up!w-nXvr~&FoNnua z!XN{p&x}v*DmcZ>(}!l+aw6$SKSz?ThMYjQb=*v}s-2FQn{cT}UAQs~S#Z@Bp+$n@ zx1<}?oLXxoNdl^Hh#q)>Z59V%n?7<_3{3B_!ZN+%Exx${G%Ij-Jl^VFkpUzz4+vk3 zC%nrqk%1nDoBl1$Luq3%4y!@zg~PrAT*p9cGF|T1+Mj$of#lDDkiS-_3ZpLkF{WC%%89jkJht zw#7?Aj^F(sh;Go@53bR;o`2qk@P)2Cxeakov(APQjwoBnId?w&nm!ab3uy?iN*1pw znjvzPfRt-eRviNMa*UV0V@m5XGTev0hx61B_E`AbNRLO(J%335dejQId zAVa%%izr5{IRHo9^9&yJYLvaL$x?bguVy`3V!75TxZE2xL6>V8WBb~JyxaZY-?Ww5Cc7IW@exvJf@c~~<-x&BjBG_S~obW0a?hwN8&mWW}crT6VVwFUkO zA=Wp9(a^Xybk#-_+HoW=<*6DTwgoHDwziYL@GX(pA^m*86wOy}xR9^xHKBa$pZ0gg?vwFywY1m7NYus!lKD;{TVGg+ua0fZc2|0(I%E_e!ymv`Fe#8ofH0k zBTT=}1@qlvg#uFn4~79@#S|c?oer3SCcQG@wItRXLNO@^hq5_YM#FaP$HAay@*mp# zHRsEy2DtxO!!BzCxBbK=PIV6Qt%mr#>FFaJnb+9;{b&|-LZb6EL*Ri zQu0FHZRuC{*$^c1?GXn;{0ab?s9WofJaf8^?R2yaFfmV=XKCPmoBgV*kC%+%z#M}3~r|jD7ni_J*^2^u> zfc5rQk=wOa3Pumk^_qeyGf6a89=Jd6a}ucC7+S~Ge$vSyVO>3xPn5Xj$;+hB8Hox! zCHiEWC-3J4DSIKOv1``q98G^9xa!_cPh{6-ThNTIsef;kEC1cn8DdhbfiY0B(dF3r z#96nf{ar-CE=>^XK zZmPBVHJ>ei"Oc?Pt^GSp;hY}Cc>$tIDl#-y3VRw@u}&g6LA-Fx)hLhBT)QHgLG z>%CpG1nf=)VkT$6Y!r2NIGuP)H#0g@Q6?sS&Q0VXT)bZw*RYT3`8_RsZ!@o+lnnEJ zT$a~emRpU}bK+_VL&=JV|Im=LLKXUzUB?&Z@&IIVG~wW}i+z-R(w`>{Zmg?`ADG4g9B0qi%R$Z$@=MynUbHyAVT|y2 zX2C*IEQfM`-%Z)@Uc8|3L`y5p6iE`c&^k}*_kZ#SdcX)Nm=joZTeYrNTwVrgslr(m5 zA-Nwb6w0DnMwWNpN*iLMK7F&*UxTE=m#>Y%p8bKrtqMbY7kE{ev(A87IS%G#PDn^B zw6&TN-ulF0FbmBkwszeJm|Y)Gk(<{A!4Qm8p4gQU@Zfd3I1X7MAHkTI_voyftJ{tk zYp_bQB2wM<6mWgCI^|VuU2=;=$2}0x)^u~#QTRL(E%#n%;hi2&M|%gDqA*5d)QuQ{ zc!`?rn4?a%bYcD&?1LqCq0do@&4N=yS z_q0h+N2Af1)<$rGotT&$P#qbH#d%V%@L?5Mb%39!YMT<374$ldOhYq4&uPv{%{dQ5 z2INyQc+2^1mqlPfG|2E{I@e{m;yXJlbfi`$IiJZTYO?4M)UZ||lbMyUq?D8Xti8WZ zO1jUW6JH1d^uJeQh`&)a#7Gm03hl>NF4gRaYuWeeh(5687ty$4MDN;6Yoce#(g$A` z>NGCT^2S`*ZD}~5*hu+sVQqRhO#`_C#RuYlbO{GFR)5k1=1z@6rpAacG}P!`GB#i& z(r{s8i&#WUY%g~ewY%;c(45@kzR7~uq*XSX=&5dd-W$x8_bdS!@Z7UEV55m7h{zZ$ zFk0d6sK&|2!o)r(qjj-Gtvc0@Y|e%9iJ$eZm!-+=MkBc>)*FpIDoLP5wz(m^NJ`Bn zTj9y5c)j(@su7Q{23&r#TLQBZr)#`lSDkPBA`5C-s0R%9Wc(tSHA@;470KO{KDL~P zg|&f!JMI-d`+%YOA)mSVVc2jN9srKDB)}h(m5aQ9FM9M)%DtK&K9p8!=MRCxZuQz| zUSVzQW)9~YiEQ}f&_Jv$UNKA>6;Vy78);C;$Q5W7z_Gd36hj4c}CC zzU)0yqAXESjr>v{yAVw%>YN`8?asN846DG(I^Tw>32!@?t~g#lIu)Cb9y-Lelc-(s zo>qu30|RkkFczES(#Bk^12%A?keiB%OjZ4Fin!D5-*L#zY=hN?J<6A1o1jhv^Xgk8 z9qsM7waWe*7dvPmTW67n$sgTFbOib<9A@bPFk@te-WQDQP^j#vtPraqMVjyDEdstf z*q|ibu#f`*lS9Tpw$;foBZ!f5W+RYTm+NEA6IBo#ff}3|%*`YiWr>bnl@? zgLQfQ7p<4dx^N4-R|&?D5Ip^A6ewEFQ++Z?&kky~YdvmCbn8P){8c@_fONU3>p2`( z-w-jFj%%W^aJiPQOD`7U5Ri`cQ}w}pbF=Cn6CU(f>etgOnt$}%c8|w%^xRaR8fMuj zl#LrVY8~B0x{8Z;4h`O@ReS|=%z=8>p9X9`yhSo(fY^2&F zi4Pr`$Cq(GxJc(0^5=qazet%;R3!RLf*_QqWD{mFq3R>S^n zz7iput;k#!!KxBv$zR(6n{humF(E^vf2u}KXgrP7=tP5c1n1Ngh_*1)dtr1f&}fdP z=el#biZ;Ykj(JI>Yi2g`>}6PF;*%c?4P`^3QTuP~Ay0f!R!!;Hd#cYLGFC0-Xk4fI z-+Kg5Z0U|_?@+uCmg#BHvW$OK-EaZ z;I;+8FMA&_jsDEYrlNa}rhxoY$DV-|_RMK|BA4Sm?j5CbD!U&;TU+Btw9U4a8f2DM zjag!Y<@3$uwJS_TgRq6970O@@DxxdPvn4smBv=NvFPO6YT_jH<6JZVu zrv&e#tW}X5}UteovEU6HQC2cO0I){I$u%wl#3bkYql-c67t`b8nt@ z6bf$<2s$u6HsIOOFf>$4G@<*C?BA~=ZMCgeO(sh@MwigeEu@IN$fAjyP^leW3zELk82UJww;;QLNxK7D3TInume^n@DHl^KX{|xI!k6sO z;_6K_MJEur>gN6(!1)VPLF9M#?BnfhA?rmU{FZ^X!4d#uWwBB56+BU6utyPX=L>YM zCPw*C6PQZN@^*NsD(}VIhJZA-Pg0F+1V);+I=Wn!dWsUsCH*TId1-W|g{`d~{w7)M zD-w>G9l!DW=I6>PLQvOSF!Mc^n|0bUL{#jurA54~l@2{P8SM)gP~>E@uS(Vd!YbVvi@2PxK`bm!%o8 z$B}ejI}mA-eQ-oX|I-3zi&eFdQz9a$lE#p1be3~)bo5G<_aC9nhbp`qWmO|h5l?Ig zs&0z-wIP`Eh(|_8WqH(Wa0a&>*ANCh`6yfok3+31^KNmqtVQ9KRv;UV?E1t>4?xh3z zFqZ+Z{0o72;Lsd8r|UO7(;; zR3BFj%M#BM=Kov8U5iHxe(gM^S2Urqvo~%`3g{k9!vGipOW^!<4QiE5s|XkAv5O7@ zFxJ_*cGa9jCs@!nGynn?e6fKdU{Lo!MCmIw!6Ie?(^ z`8Y6N4&-8waAx~$lvx<`;Y|Eri!#t^_rA<9X4eQV&$GEeqRCJuBB6vui*r{Q+@jc> zDx9R(_NXvN6^uYA+y}Ny>QXP} z1fcw5g+ZCD22sw6l#aqtQjBI9VqFBubhO8izTgvf(b<@|J&OtTXG95J0U~ zOiTc5U*HT+_joEb-_WJC?y25LSKgrnQW1@yN0|v{5(S9KKVC87MNbcXXP2Sa-UT^z z6t7L)dkvZ@v@vRSj59ts=N}9h&B2n~S}E9DAvXJua7i4wY6$kk^R*1K$dmBler`N! z3_lM&Pp}2e@R>uwCu`8J;r$^Zy>gtE((?kznN17oke?oH_R%+NSE z7>iIpSDBfUIH1Uvv(^d=*eZmqd6--v8ZKkYf#6ddAe`}J9oYmU2m#Ma;xhL1) z$tN@BRH<>p-doSFur>+Zq+(s#a2UVnqBe|`l-d>!8vK*xkc_O0>^DKu9 zY)zte4mtW=61|Z`V%+t2Z$@NN+|5<4ddsEYN*@?^m57L&9tD$Y559!bLb~0gRx_g> z2w_FAOV2_pVmO*(o7WI)ogG<>MtwBZ!1K24YBZd%5T!&4e$}6Uf4;=LZ8sapZACD{zSD zSZ#1WvAyEtK}58(vOk=zSQ57j0hWyz>0+Wep0mF8d0tYi-Kx%0vio<>&KtF_Tt#K`Dj3 zhH)E>zIaXot}P)mZsD(}G#l~k+JLKTJ+}W zJdFrF_>ZpBn_jlxW5~-Oc{gL*w>|c74fkDaG&joKjC~htc&~UNFt0Vqv+a3e5ik+r ze~kFzu_NKOzV`Tz7jCqBPDuxZNEh{4Ecxej#lBsk9SkCn%MqCYpeN|9Il!khx08_RR^75UfBIdgibn1mEj1alV+;nn?(3fBS zCdh++bfZRR1VaWqED$Lj59iWcoi7ffaS5?Eg3veG-9rdoaxsk1APbzNNd$t2?ElHS zB!SW&Z-Q1)J9wloX1W}z@D{Zt!<7u66V7sJAf3GRa}d#x8W-XXPIEsk*tz29hESX) z%iOHcL0VD7I|i~B>S&||p|234@{|9F#`{Q=(6gfQ3%_)pTEKgh{V(Av(I@@@RPvWQ zT{Ye7Je{Uv6Ls0N)a+`abe{15;8=O*8!4U29f+nj!(Urquuy=>;`!91FLTe1fbB8v zVO}sP1b%8_osm!FMvX>by-U-@2qOu(KR)uB4nC<_&W8ERx;r8w0t_MYE zUN&-``DY)zq#UuAj}S4S6=gk*D9_>r8)4d10i4BE5jIto$wsdf$91b^!rbi8Aq zZ%0JL3!Hf9hAZDEL5V3EkN&0Djnex0g(+q%87V_X1+LW59!42YB+oyQji7W#A8ZPt zohWjbaY6~|er9w68gh+7@8(80(OoxV_EIm%R1uU;J3CxpmrGtkBU8EO0zE)n(pVHtpuOL@$rwwWqEBUKv*%LM1IpbMd!Y6T#)A<|6@R2s98+OYmgNy z9~8-Sx_|5krpWfy&$`Jr)Up1Omvo8R+yBroKa2>M;O3FtCWVHgxL7KJnj3G#rP}n0 z8`-0^ob9~<(hE}w)1iT4*SZ@To6YUr5BK2}(~j343xb8~2cro@^UUlVd5IPAi1_Ha zxNvMJl$X&Gy_zI0;Y3G;WKk{-Z(uZtps9|n;Q6cRTGsB79nMYE5=%5O6QfrwA*;~0 zh1C7&JjY*o3gi(GgyEcmkOq*G&sLiO0pS9q~?VceoxyN_DFMU^{3>JbB`B^uCF_ z265lu^jO$SO12l2UJsTh|8aIz)1atSe72+Pu5bbReub_KWJ%cy%w0tPDyq_kU^ z$-eny8P51(&%o%Zw~-E{pY#FKFcpaP7!67mZnga{QkH?{EYAYD^SJ?t^phTU?|bewCk67yO$}ak$HI3?{&{^~Cc@ z%XP%qk}LagA2Ekm1Fz!q1=DQ}&h%Q5>U@Ke*ZIe!}x0&1B2kA>lj(h_34v&mR zT+vJ0K)yQrAU)xBhMv7N1+6?-exUnO4pxUoG1s;gsrn{(-^<@n;dydqaJL-vklS5V6_$JRWZ+iyYn?-+BIn$8We_ijI=Mb3#z0;6jar z$FuzscQ%+o<3qqHBn;@YKW4^Yvu$^P;EK$bGR4x@jvN_ep9R>t8XcYJT|v4!UKREa z7Bn!2BoC12G`sBv@c!$;1UK~ejG}iL7*G)jRrj)NhsZ2IT;-%SbxE~0CS_`Ne38LZ zCMKGC#VAVU8G#;Y3(5;m#sLg4bKU@8A#E1|{4)ku1Of$RiT}#c{%?I2#eEk02T?f+ zq`Gbd8sL7Jr0q{qu6EL13puUo-mI?u9|}TMv_>;GE5OLr$R4c%E6Sg9@a!|E1NS4M zA~8-VG%m*>7cvp(&u*tZcoofNg>eOhmbu|u?bWmY0S>_4 zi8RvT9tE5H<7Z>XYU6vIo@eV7=p<7ZkI0Uteh4B)>qk(3+?Ph8uF6rJbEh+xt5q-S z@OWSfdfbITdzyCzR$*?^hu%x$%`%~0jdY&s3YL&rv3vXIsQeU>msfxA@n653$Jw73 z0DTJ$PPm_-*CHa%`fZMm5Pz#QyDblud=nhGwXO4d@YQ`@hv&n6B^kKMTyl6ey)1jq zJKd(J0Ayq!+ur2H}TN9S~GN@)=yZI?YKSq#~kgPUI7wYe+To>yKx{;X&qcDC~1 ziswZ50GLCFrP86nzCqA24<&zzlUvb4CcGYsMTEpgZ=WglqujJK~9@;FTh1X{vywryHG)&*1 z%X9xMzRX@k$;8@>H)>9Js!zTT$4(=;zRuACaS_lo~*cf=&Wv?1l*l;?J zp+HeR1guAM>=nOCa~KH8DMm+*SGP6!v)cm7?w_khREF>hsk9QEqRoZDJ~%m!%L}y# zMVW#E3?OQWW?l9|MxMW8Z(I(eY><|Z4_OE=JKa&F)5w(~uyQQvn@VlyI_+34I-+6c zJ75$zPX+H7EC+r}flULp3RH2H$^SB2iM*9W-fSktElQ*-1q5}o5|O8XPsbsj9DyzJ zup6leama`JIB*L9#q6`7jP!P|ZlCKeVD2w1oTK4?LgDv&X!?n#);+-$G(E>5*Ml4g z;=!yeSN2`ZOo$qSqOACwg`FhVfS&{+s<$KO!ouqInZoX&#-TcLvKb z@zr=)tvh~8Fe^O9*dFNUhNIQpdpf@|TTAq_r%0_Qw7Y#-ttzXl4z{EBin^jVi zs~Jq%G!Q|8%A~S8r$kN4^!AJw}YK;J3t#~&G0Pz_33?UV@E|{BEA8#58CxBT*IQUJn z!k!HQ9&X%-54Z?|K0bqn;2v>r9G7z7qGYzl8WN>7*af}w%vgp`h--zt6K95$-u342 z2Q*_&mxHC1Nl~Wi(MC(|nH2+DGo^^pwcJNZEy1sBug3a?X-K#DCv5t3d@{JZJzFNK zzHo(xN%U|U&Pv4z^#p(%7fJy%EE-Y3X_GU@-ZmOqfbb+QIG@E$IVYqJJKm3Cb&gOJ zkVS7pS5_*|LmgfNaG`MPS2Y(=INI>m9TcsVl^g)>3k+_&ADD7(;9f}1N8xGOW+uZ% z10g7ue2^1z7Nri*5F1t7I;&SU3QX}CK$dVF78a0z*(i}fgB_t3v54)X1_zXyY29yX zqNxx{V~xPpEfT~($$Ri-gq{^b0`sy+05b$dT2%+~)*KgtXW?Uo&1hiqvwUsPlip}# za7Ze6P-0M);wG}8^HGz1-9?yDzNFr9hBn!GUyZG$2AL8}p}C82b~qH$fDQ_ks6u;U z>{hbaXi!WE{ukxPxD1~CU!NhRqTmwL-4D)8ut*wx)fd1)#;lalW(Vi>L!=MDjx9Z~ zZ1a5rgvv{f*GbJSn#o_YGa8V>BfaoWX57p!$riy;g!St~T0ck__&C6E%5ut>JV#lY zt7wzrxfG4VaI@zrMwUOkUxgh|Q~9`2r_%B8wz~geRGp+HF{@E;e}~5Hf1xeTI&ch; zl@0qtOLhw;BOZ_yW4F{jH>mV7pATBi62Rqo{Y3$DXd9mRQRSVUt&-IO%*R!jr>3=tGy+P#nXieeWJ^wjGy7)V)&&m(Io?02fgbazp3RO zqexzG{C$zUwBIC6oaI|>4^~J2N|vFwa+zbWb9eDS=;Pq$&RDGP14w32{|A?fOuSha z9MmVr>Dmi_|sp+`uy2)qg;$UipDdeXH3n#6@iZ}@><-T0LVA5q%1AZL26Nc zzd@Tg(Rn93&Gu)m;!HfWfUa}vTF1@qathOjKM82z@w_e*dH)-d#Pg;^5I&QUi-%2Q zv#Xx3LjOu7t8gF?SQ2Ahd4AX|OtJ>oXSey(=WDb$UsLU+Rc$dJ{~7-bKnzbx2@l*K zMoqaZ+``TI4aI*iWOh|||1WeP@AH>)F9#_0 z?%ZCfPwD$#;8N{3>RLixSga#R*2biA6s2#zk78diDE=0I2eMrfN0JM`&{6!c7<6B%YO?BY}t>vaq@W}?IT683{trxfeoGY3-epuB-!Dr1G5rbd!?N?^ z&|Q6Fgwem)`ze1Y+s){}d_1vQ@BAGOiDTg-QEzqczbFJ(eu}HwMt$t+E>W36^gr$U zaq=(O-%tkF`gmj_4iDC9(#JBu`5o!1_HLUlezDv5Q&15$SwtG^k9pk~a;C_fA4rZ&^FDxjjW)Tfsk=;rbt2rn4sUY4heX^{E+NUX9PZH5ehZk>vq$tXD^sQQ z_^J4NnOiwtk!%;m)?nOL9INuV{USy0mt2D>>BMc9`K8m2#;~>eL`Eixnq>w3>md)6 zyCxU6J%y+2Mqgr$@JEprs2-iEHRoSN5^EEO zS)p7ZR8hl1EBD(t5NNu;wvhb>t2g#CmH4cBhb|zw%w>IausOedPH9oMafe*n{krG` zX2S+-#cq*vBxyx(1w!N#VErj+kHq?@c$Lf#wQ=}0RqrD?!JK|hm=HLAe7A|8mHds*(EK}*Iq{u7 zUFV&wwdEpt$;l1|8v5`X4A67IPEKSiGPC;BnJ8t7e-{5j2-Z()em;LLn?H$SgR(Tg zYJWSP)#DcHOkTu)!Y?#7v%XouByp)?67}qQqMhB6{5z$K922e#gdUaNehb_N@tKLB z{X0sYe_n}kGXp+lRK?CR2tmI#Dic#z;FQkSoB+8{^Y|?bvDg;mmI{p~R+gSBVL%V` z6dXIzd(o&La_n6nO|BVn_HN3Qi%_(@)b^ZSIYX*TXs2cKr4dkG&S_z%Oe&?iF*|mX zM^T&cgj}0A6uyn}o0aoueRiQ=Cc(Z5*XLTpTjICaqxL%`VK8;CIDY$3DqkuEtx4n)2V!l$_~Pz@~JjA z8Qhq99cSd?op*!#8zk8-6eZ?qqVippy?1bwbA+Zoz$zZ_GbNa-C z?B{B4kCBi^whGsBRXgqu)Twuky)=f$AmHjmKOKz?`x74+B7pe;c~i3iE^+5Q{_I8= z6Ag>lrP;dxA3Xv6QEurb7ax#|u|IX1P3(CC>6J;SUjUpbM6SDjEklt;Y&k2}TI;7{ zrNLx+3*(iVz_^wH3rw}GGbX}Qf2P2oc0a8R-|nZ`JG;L0;gK>pH5wB6I_rO{s7h!; zi63gtKWq#ynK+YJSyd|+;@3iZuGI|x(`bDxA|4+*!?val`+#|cWh~?$Dzyu8x%gWF zCOU`xbn*AtNdwzBeWcRdGQ}fcE3AdY=hH`~hWE}98%QJf`&FG>dk#>r1B<{dP*!Op z`R}Sx)2OlF!%k$oQz)=>J(?vHBua$e`gBu)0N`u5=c6! zf~WBlw+8o_6Bn{~8gKt=eM)jxSMs>)>Hu~(YqUR*t|Mklion$8Zz?(n65(?M+1 zDa~3u)I+QL&uLAqcLRkKj>VJ7Sy6-aXFijJ)t=wq>D9qSB;G1a08L;eUAglOHa;FX zVFcNz>tD1XRRo4co+d^ zDs@@_jiBvztRCXRAJ$Go(F3u2c~%kcrlgR7QJh#)HS#3*J?hgPxJWwP27|I2tFqi? z3RCVVMPfaY;JYGWY+~r5=gz)0eX$};r}`TP7N=`)Xfo#eq4Piv8Jf>PzutW>zf|Ay zTgY4rKkBCw6JfD0YH$^1Ou+@Z+%7L(t=&s8IGYmg#38)HX=89a-Zp-1+`>1StiSMk zx>g1NjL~N|jnFGQL2JRyDt z2nX+0pS($Hy@|UF&7!C&@q#`*OURt56@C+MZCs=-yU{LS-DF{7bKy@KM=j5Li6wIJMt>B?t%Z8~D@aO<_>+h>uM>y_I9Ev1v6rH%XsJGF&X|?Q z@x(Pf;UVtUyM~RX$a*TO#R2p1E4BAA5_2*PhGwg9OLJ3HxB&vxnZ%<;`*zG^Ez%Q* z?Mo+>{O6}eFPl6|C@r+2oBW1E+I4x*hH&eJGVz%1+^q)U4gebZ&fchvV4yIqwLfx9pJ>u4>_%d9;+R@f4pw_g^iV(-;kn%P&{8Ou z;Oe`=2=I6I1#KWjz$oqob6g8| zn2PF~p8^bK4^{FK%)(~XD~^EqXK`^^8P;W$xIF?4eNbU+6co?(c(#mIBAtR32i<+^ z5*nr$>^q51HHzPu$bT7fH$f*5#Y4dmztKZaI1m|*(mr4~gluC43IKxU+nw{R@bWLY1sDR_+!WX!!16Na%#=@ki zo-b5T4_`lH0?*aNUkv1RURM23)#==ro?W0NEYo8A9M|nPgX`<8Em)psK0Gh1EZ7Q` zbPIwDYFi)A*Xc~`{rZ*%yjpgvUa?u%>icve&K<%fRneN79i5oT@d=~}SR$ki)bB1-Xa&kcanD+&o|tEL7i#}6Ylv2LZ?%bBkBOUwvaL=5 zdyH?)@5cTF^9}E?Hno(`S=5gT!l!zo0k^v-o=VNbnd;-G$N3>s@^?`S*{2V+A~n9f z+5m2S%%Iq(kJ+i%H3)E8L)Yb2U7M(Dy(@|%tW1ucZ_p-}0)X$E3Ioit9v>9m;T?M7 zb(my51XsRbQ1d46ER%11>&mh3bSCgzca z!KLIrbmI!5J+aQfTX6oPdgZ$m9(>i{$kRfKSD%nEhu1N{zwP}T0?ql4tC4!Qq&1^J z4Y|}gnpT~7RM^e`pi^qD%f%z}x`xMa`#h~N^rX}jTxPMqj_ceIoSs^f7ju@DBFM7|eM&dFQUQL8q4nZL;{ii*FO{_l zagb$SXFVEumpQ>@|B9O?ecZokgd3=lw`z$n$ZO8F*Kv<91DKPPle{LoT}QsE`F>C2 z!QpKkA&?2M*JKjpA6&n1(L{Wcg&^P-hlp-Sd@C!x_;G;o&v7Fl5mY(B^N0M|;CeBd zDxbJuCV!|p{#%;38}9z6S0j(kmTB<~i z;JrQoTBt4D(f}wAyb)ZnMWwkG)x{r(k7rDYJm4S)0`6HwH-JzvTks%1$-FiUyORKP zV^g_i`zWrw7|4MwwT`i&b$SQ~gi95sdZ1a!eWRTpoE;SJmh?yztL{>jnB z8?>brlLlbrj#L}T?$o@f-;$^?E4Hh}a|1r;WIoZg9JqB+R&xA3Uv{xEvA7O0(rou@ zV}p(49M`)dvcyT_UKO&()`6x>Ci1x@ZIEmVCR0xHXE#^dcw`Wl^1$64yKgt}kxGXTeI|Pp~-)k`Nk`xLqyzF`6BYks3FcAi0wh9F4OQTKJ z0eR{1qcC`~NzLgW;Z!y$=|J+hA3FHfI%1v(7n zyr64|z+5J)pd0P;X>OR-#;?6JmIFO3m-5KJ@NT{ER6<8x{Yl>3I!!H;%?S&xdeN1tcmVjZ~h2tT2AD9PM7F0{Gb!TIMrb ztp>$o^;REQud&ZN>k=kVc7i0)8#jQw;T5u2IkDTGpDiiI#EL=`oK`!z^;%|@(=tBM ziYJ%BM0PmEH3y_H^=`KC)|#I6ep7Id1*Yzyb3RB)g^@;qtqnBVEKNzw3Q^*rPFsa- z5WN8Eh?xrI)L~6{sjj_N^>3c%BiRy>Nu31_hh8yDmt8J3rCtY)Z^7^x{s4erE1^x- z-VRHLz+x{NWd+DpRsTvVaW6XYDa?lp(CF@pO)4Nl9oG3_z%)+AuKvd*ZB7R#c%Ux)1?>a*2&iQg7i|l1HH`AL$`hIK*2>k7ix$xFm_o8>BWq7C z^~>{jHUx~cIdoad&GiTL+zbfXYAy;G*(r7Ip)+99N$J@)OzBDne9BtRfaIK?k-c4{ zqI%#43WkA_`cQ8a zV<4KtZP#v@QdN+H`dL*!Ez+ene0Z&zy3?;Ux4gn=6I12+SY360b(H_NA=u1*tZ!Y5 z1ALhL1lI?>>hqrjOu^S{e2+vS%}+Dxm!ao>rOhn@h@(Lx5?qq{ei9q)S(a1wOTeVG zyMZs(HoyJT6jbgY%$ifTWD}{)yTNv{1rGQ3;lQBrnV$auG%zc;S&m+K0#Kq7E;Vg(VHo zL&{IDexcz&+sNBxh16aK_yUW60l7wDchsUvacBhm zU*m~b{Aqy)b@08ehFgunmN`l!&`6Y+6tiV;hN{~33p0a#4K57V#qNyCB*Sm8|BKQT z{LtbZ(|iU}rssMxyG_=&z@q8Jpcoy99}sZI-vU~F3s?i=iUM`-GRU;cYnzhc*=%tj zITdnA7K7@>q}XJz7EJG67P`uEGbk8j{0p*E_@D{eaxLUr;h+YBBT#Cw{>T>VJm11< zfE=`ju!v#s#B&Q^niYGKxy?5?aXssxgU_IG;nsD&2r_JdR~?cB8mtI3HBmERRLLa-iG8AUnEZo;p53Ec=oZEQm?}io_^Rz zi(s)h{WZrMa8r1i7bbM7Xw;Gu1A@d}Kt&A9!c<@4m?^k8F%?kKGXk*jAmAia3E0<# zS-7vNM}nHjupVDq7*K9*RT__Rv<6U{V|D^0EWQOu`n{)5kw7_Y)Q zp>e^Dd}lIG%59IIVL!9i;9$O;{t%J`6NQN?)+|SNEXAPTS%wP>F(XwQy8Cbytk~7| zLMmb#YF((%Udpi+`_BOj@j#?nihEO!OL1H^2kbh?9*c5|F*OtS^LKLu6Rp8AW+$X< z(z8f)6*i|Ft5Db$*4Qf2_ZS&JuAWPQsB%MWO~7Kkr)F5ll}IV5t1~C@AZ%0h5+@*m z(7bf>O9>wYkLY5=N3n{izGWdOZ>^Wj>1i3z6_)s=w253*qt)R)Jo#6DwjXLhpx#wE zVe&KtB*2M(&)`~-VSfXevcgg@9EP_TrRo$`^jc2H;NgR`PmW@DGK!Y>!=z<`^qf?RlS@~QZ<>mEO)LxZW-uwDEQ(^)`oq{G7u}dU# zVyLJoA!@J|z=x2jBOu!o{`}{v^N(lD!MhvWYa!A-DWj3Uo87Dghij{*UQr1{2LAiV z9w66&&H@A!CWsF5%BNtm#HN}P4Vf{EVuRULNActF&jjIgs48k<->jyfSBk$Dz^Pem zR3_5AgU3FQ$_lV$HCSuah%_GZQh?WYf1C`_s^b?aS6_h*ks-*M^BewbLqaRHdewSB zKgFVGfB~7kys&rKBznELi~-M!)UE58Dv?3BCM)h=2UJCX%f%9zxceT1qZF10@g8(I zr(-p=rR6VR3CRzFnK;@Jk`IX!u58mLJi5FKYpy=$9PmwY>*yl@Do z>)09SrA!?3;)t>4Vwn{3FWB1+sqX@~rNs^nykcG>88fVyGNl9ZT&&C}YN1Iise z?B6~^=(sjS1`LT4oZpWdNrz}Mu7+tK)B?8c(*cG$#cEAp>y$1I0<#ohV(Msk$Lt<}8V$!KrMQPjb;ad^evVcML3yd>(dsX*3 zD5MPhX}g!{_;&ll<2oWzg{(EZ?gpm11mV{MZnR&@wT0djl)# zf~lyrmnfcmL|_r^gxCw*Wc3l(tGl0If8cH!Xgjq7s|7z=0FJw{?`9Slrrsj9opV!ha)x&^+a zt?zi@KqDJ<>dg|2ndLfIrX1O!j;_>2{$iw!7W*bRB+&o=&R}BSzZ(8kV1Lm}!w}%p zH4wj4pFiefU&uZJ1?vyM0yW2sUaYp@P+9{m5W z@(pyA?Mpy}uV-Y%Cu##!axGowa%l~Tk<=P^vx+JD$O@m7&h|pJpq{62y<(Tay1^1W zle@qGD*tDHLX_P}H#L7PWyfQcc=gFZ93F;S4Q`6r-9t6~{Zf-_4|vObIB_wojYd`7 zf2s?;9kpbSgV<~-QBW6oL&)5MyUAKg=WZGwXy9unU!<^{5&5}w@SN<5xC(htCh0## z={S(&oA~u9aX@5No}d$JRiZR7;4b-%rsNQ1RJKI9OYt+@lL2i*@Kj_!FN`G$b;%jt zYHzkKeEphG*?YgRNU1p!t!}#)f|QOxgC-fNsO5g28H@S+$=!imKbYm@br(Smj|;P{ zvtoNGRdi+oWSYm*0?fqz|2s9f?qSTXqkbKkDc6(%%R}=L#eR=wZV5R&7~wDJgCK{r z{W0dAge5wGB*Vsl03K{n^_y`#y8&+?An%2xfMeBs9M>sl_@R}8K2zicvvvMkW6SR+ zlVv_gV9D+9?mbLp?Q`wxw&TH%Q3}EY@mw7g?);s%gI{*_Fck#fc9GvZ`Ngtj{s#Mb z%EI1Vb#dMGqhoc}h`eBA%*gMO=MN9@;%ZR6B{{r7^*(I##E*JKL!|UWVcev+DNMzo z53%p1bc*}+Y>SbER{s@MA>)d+ z_*iMSC9%K4D^ZCdP!9C9zt_byaWiq8{eSJf33wCNxi@}Bi)G8(0A3W3?6I&cd9)d0 z8wj!`Owtt6ge3@LBFP4lrjVu~A*2DcSwU4V7dugk&-loSR$IUeIEo<@Saa zvRq7VkYoe->eQrB8cLz|Nc!F}A-Bo&8rPuU{(I#)tJ14oB1?wNobZVr*$g{>NEXTH>q;% zgVa8Be_7RHvZPDaqH5mCR0oDa@dq#;n3tw!{sqLtxVN0xs#0{4rSyCa6@5|zCrrOL zo$HHl21QiLeNTaYHKA*iA38_Y48Sl@^fv~IDKS}V*Fi9^OQ4L}S!Idk4_NH{*f|I; z!9^?DXoc6vK?YPuax>vAJM;prPrAW;Bn%~ODApB=9g9l?1sBwc3P!8A3`IItlBMTf z4nbHIx3GrmQZ=s%aSAYMk$6r&n6;l~kUj>8UaU5VNJf`zVCYCdnV1wS^VvXDvyaix zyUuh6Ysi>$sd6H$ayc*iAq=elewirLWEYunN$X5Fl_bP%GSQ(aROO)_uQqZUsp7h@ zvG*V@sJQ~pfljcRgjP@N?CB{r$FdbfDtyD>6e*0WD72~+`?m|SoHI>Kx#fe%GlEjf z4Yl#PfThMrA%0OlHwihVvK(}`OcL6r^W4M57%ZxiA)WkA8p)hkDh)0;tJZ z0cJOy$xsv1O2H(Oyft$IRHR24s?zI_Nmk%A>2w%e6KS<#0*Q-5(`w{fRoR4+mtR*k zbhC`sy#kaZ@j09kz&xM16C%T^Hc;iX5e~hmkx|N5t)OxN-vi5qB6kp7OOfIGYtn>N z?LxWGsc&+#c{T->FAQ_ow0F(ky06|Cq3CS-X;Tj|N3%aj~h zd@Pj$!m70Kg3^9@`@Ndz1d;)7#;c`=e=P+|Mi+1r=h>dZaO|KixQdcCDh5HZtiEs| zjF;|w$5%?+WGjrhA=#8{o~|rCyM!0Y56Pggye`IT^&03^M>83YS@4 zD_yyjq{8=C9=Zt%JV4BSc6Ll3(UBl_EdsHj8#KnXklG*~3P*~4gEvJcIN}+dmXFF(+$O@)zgWv~{R3P@lw+G7F*-m6G^=5V9 zpWsFPcbCmwVjhc;!P_aH(H{h<`az7O1hmf8Nf~VY=^x~R3_)^rq<^~o*^DlLg=(Dj z)d8ay$3kxhCXZGt-Z7W=$Eq_%A81&-^Rzy?vTBurv>?f|$V;w!2>b1O|o}2tS*9FGSZ=9Lnj&3j|hLSqf+v`b?4{$xL19U#lTG zzB^o&UPqUAKAn)za!5u^Wgw+oyyE);1NSdFSN)0V@EJ()4N(A_hS5;I56`!hRCLPQ z5jAC(#s0v0*i%aqbgI_&6!glTu7t>ggG&ETghyl>tS8s^I4)!l=%R%oz)m0_@UFmn zP|Yb4t6?t>b=1o7z#6YHxF(S_4>4FxX^5y0+@Po#O58IzLXRLz zW{6alcHXFRvC7ymR6PgmxnD9QWTcb+&Z?oIl0)Vcz%^rI5b%Z<3^__${{@r-@vaq8 zaMBcXJxC7TLwAR?Tt^v53jkgYsWX-Zn#An_nP_M^E|>$jqr(1GH9;jMO>}iA5LoJAcY% zIvHtvuw>USx~bffU9V6yrRU;lP=kUNDXM7Q8oL0<3tJOUYqYkhz}A(6Q@Z&$(Eh1V zxgl1L_9za!c^&VFv743FMD}%82dlYJJimVnjtMRTWP|9?H1IqO{Zhj{0R8%Ax`)IC z#8CLnl2u1Y5;|vb)HoL=+8NM4F*w6uZK4xuIWEhslG9o)tTFAB53Rr+%N_*mi8HrD z7Uf)@4|rxrA&8b*+g2H-oOnKLaC!m{ZH+zznQxNLXmnBt#+!hRh)oaa!d{K-epUKk z$nww`nXrpYRa!`m=|kvDCs$m0NI`1dTUn-p7Kb1Krt?;v(+2C_Ze6_|PC<>%bvun0 zcK!^e#v6mxIm0PiOdB^9Byem7{$@6aH1D(e&v3Uooi$7N!U_{o$^J};#Kvl2gP4Yv! z#E7P1&dhFz2dyLH50r&|la^4hfIQl02yAQ-qC5U)>_lvAOdt6pnb?@AcYPQtJ^SnK z+{!tvK2qUfH33gnPW-vr^Fj854`q@=#iTxdu3|;~D?Jr7D5`-87iwA-#$s>;{wJxI zH|ks#5_)3e?yqhpKdd-}&gp{rsmBs`k{pudbl$3Mxt;B<2?Ar06`r-zKoscziq7(~ zLl@ZcvtAHNVlEUnMKTd`)HUBr zRSrF+wf$BfZUJm`b@;s!EH167AYhy49B%UZNVyxA>|78s`0oP;qAgQWB{(AbP$ruC z1{6nxK_?X0l+p5)4hDiN&I)vi3(BNY%2aw`;+~`$6+TiI*$L-a*CH19jt}+6*F+ZO zCjS5t^SPlVy1{Q`M=t>61Pu|{qOMJ3`HG!V@RAW^<;qzQd(?6pxC4tVKd<3_6Dt5q zo;rLuaOtc}+*4+Uy|X zn=^MakY$Rkh>@9ZP)toTgu=*M(_XNPX3j$r`C-uH&nPVaX7^l}?x|oxENNO>!!2Bf zP3vL81S3(NQ%Nl=QM3;2o}Qr%uZs!^=uwBboLnY+BK!G9(o0E^TCNN+e1?J17EHwOKIgA_6!o+NZV zKc)Dym#vkz$a1|V(r+j`+sr5F9eR08zG}V(5M(+#Yn&%E-0M&|^)gYh>j`5vOZHT- zD3t61Uz-bzIe`zsWoxEsSej>UJYSP|Kbx390}rYyn^Q?^(~EKw&hF$>q_5glr>Rj~ zl!ku{MJ?@G;AwMQOlAKsVKIMK@KiTj;Vo92xm8dTxDC#j&F_JwyL82Uq_+75E#udve~X2{1yd}iCI;mmDGABLKY#I zSUO=q18TWIA15#xj0e+Q9k8G+YsAT66rLpBM@UTR?C|(EY;5sUY z^3`%<^sa7AbWMmr}3bP zBz@6y8Y(>@q>a>dgL{7+@5Xy1C;<+5#C#!>Nr*zEehJqe!gkoSh>#nARY zSh@3ujNUO_BZZqQx#w+DaLLft(yDbntqD^{tP~8`!)R^#tWq5bcSqj^_mS!4#6YH0 zQ0PTzfv?WCufsEHj%jUrwY|lM=d7scE)C(Cd%!{pArlPu5S}x%K!IMYtooi$>naM> z`X`ih)|XVBpg}zS^1;Y@ zS{?qz;70Hz$Ru6cg%dZ+x4Z5GuJr@~ei}y4c`B5fyd>#7QAQN2{Szxzz6w!zwht=0 zwzJ^J{4k{RTU4%9xivw9hE&;mW8u;YdI?2GLzlB;q%&m*SE@6cK?%$u{uB`JsYG$; z7_e;D!t?Q^G7L-k{CCuto>0dON(f3<=(`o?w$Th^wCuc7I-PqGMxi)y*^5gK-A)Go zbRq*Y_jK9=+;C^Nuk!HyG{mS{x>SMa1)#q-nvDf6F;MK@5cf?OBFX@xvS%8Yo=7@SZm@3l~ zJ2;iIVJR-Vj|}(7Fz@r#Q3FY+0~ItGcb1=72z#LGNmc;{6;&A0VOVe|dxG#9$UvD0 z4mh3dY1^OOleo;_dQzDy_Z>`~s}G{=1-+?PCaHQ8mcg9YKwhDjXh5Uu7u5Psq!nzW zhEs=m?G_}oiqJ+?GN23@ov-SfJA8Uq3kX(K90R~{z1p;&Q3WD&8G5>=<+g4g91>NG zf%}d+TGx$wwy_Kd6Dus<3d=r-kkPX0R)Clx<94+T9~`5A!HW9#l)*V9S@|@8i`gr|_4V^O2~n|mpM2RzNdt)kfIX7lZeqZ zH%svxT(PS&VJda-ye=b@aV#As8syDjzkuz-RD#S-}AHH`4=4MpM~&GmI$M%{1w^y%63+L{C$o!iCA2 ziVt#0ZNfA=eLo7@(;uQ}UamBP@dLLp_3VECNe!`e6umc%UZI%c#Pg*jN_Q8=KQq8R77kLQu#t zfUuoICw`(#UZ#MA!zUPxIQ*Nf!LccD6&_P1`K&YXikmeCS7`_asS}jQkV2iYgFM0QIjc&1IISwTDv3KV7ros=#boUHt`g#21N~q z=zh#gYqLqI6#4JK-W|yRV&*yUxlzeGDPTY=^Ur7NBSAq;IICDSlscHv*{YJiCn4tC z4*@|{u=&J8sfwYB3S@vVqyvKCSt-ufttsGU*0xqB!HqtCZc3Fpm~Xh&O$vx+mCy4vtt*uX@Um(wBt`yx7J=t z4SHf*N3@D6hWkN{r-9EG$YNlQ;~wpKK}t%ioZkdRb8Mr-3bOpsFbPYRWexHR9wGSD zwEmkkE!B|UD;!d)I~D`OBztCrvw(&H@gs9y0QHMrN`qDWayK|q)I{l#J3O!Ciz`+wk%Xw9T|(2OkI=R zn#IM+M7O5ey$|ZFh*5iD5gl6;GmoSTndy9J9&pnTSj_Ksjm7$`_ zPO5?!Q@L*RsbcqrNES|*?j#W+tD_lOs*4DvQ_v<@ci$YeTH`OMO^?fj#81_c45JH7 zA-U&Ol`m(x%cU#7EdX^b+g)}TfLS4Q8P5r25=LLC@+mkPa(2DW^6^2!#Sk2>?YIHV zI66DVXgyDp6s?m(5v{3XsqnsZH$AwAU>QDCTD$`DWvt-q%(rY+1EvVzgWOTk^*p1_ zbbym_XZ%7Xwu(vomMkM4imy)IK>PHN-^%At?VLb@`#Qw!>sgS=UMTlIR1<$ADBx0B zvzh@RKxFw-h2=*envsB6eKa-@3gt!{AWkN}Km4ja2egl&0SFkILHT&qNI-@a%l7O1 zr_{k>-m13q(Qd8lxsWb?vR%;&K?z4G4R=fI9IQutlJ}nW`=zcth&ZeI3#jH8#I1ADEV*?2fqtAEwX}8kv>*HhcrDF zhV~`?qZ=pzrEw<(=BylbWFe)EOWHTUzU?Ze;ft)!`HI^4T4@L(mmtKb!G9M70ZpLU zax^#a_=WgAnn)#8+25!Q8wTG6jbA1jQdOMY3}!q@>+_Jr7;ZE~55ZQ*Rsu+jKKL~$ zHQOZD*o4tj2afd22M}zTXzo!ZC79w9$KH!=gtAFGlU|*{K^GNmegW*s^?|nphD3=k z`F$U(etJL2#OG89YXLV>7k;rJIG>~;Bqn?xFh8Ch5KI<)btGOyd|xBiL^hph@K@Pd zonHGUfP3Nq4lDC*Fr4Oi_f&ShO~$`1%dxy2e+ZXYZZlLszKK3~BTdWa{vnz@p=~K8 zyKxb=maOdWsIhl+Ydg{(0%lQ;@3&H^KD-te&0R>sX>8Yw>EjC(E2dF}KSV*{Xhv&V zkeR9h1mMo0^gZCme?TVQRR`LHHZqA;%$);5uC@p2X?E)(Io=FS5x4{iWI}8LoY5g= z#UX;$1g4EmKnQgq>_-Z8!x0&cgENbEA=ZK*90U^TFew#544h$*GOejV?+}130bmx{ zgoM#IW14z5#!>~s=?+9froAtMXbwx4Q1uB!B@hEqp00^wSWOnHJxHZ-G#!GC)Fz}> z2*`+((fdUZIa5%qvjaL*3q<6{QC&b3B18d^)Ep2|@cC>xBK;!qIoU25;CpY?2M`#6 zL>$UY2Bc;urUzj}9TDX=nFN8VR0M2tU!xj9>ow&<))V6@=ZsE?Spi_JZXrbNc_4J1 zhP*!!^fH0d=Aa1FIe*@axFBI6jjlq<#0e6LkkO7&#+D*jl!D!2DBFfuBtRhY3y@6< zL2)e*6eV$@7CB%`$1$SZkF|ucCWlB>nx32ZU4+;KP6Jco-!rI-6`F0hl+c zp0}VIZ8vD_Iix;NOc_k25n*@yXX!tXdPp4pIkBsFJ5<-kKe|(Vp8~CohLGsC2EV zOqY>7v#qD1)HEy-O%AP{(Nvj{TK?$!cAds<{016>d zT$o1tBzewZ)-MiVqwpF+tl;OAP9Ov@qx&MLJDsynufRrXA+oDXQ>YJgAU0}^l!w9- zrJ>P{9j0O3DvKAPS;0AuwWf@OB?(b;F+C%IU}G2Q;Gag5T-TD<%{0WPsND*R(%Zo| zosj^+{YZqo3m2M(SK|6t`}c~MuHW>yWl>%ppU6Lt= zcgc&tE0t32vTQ>9kj;*<{#FNydHh(Om&u+q4UZ+!%Wo}pA!*)bt3><`(dqBE3#3Jb zreXJ-wk7&B42c4#jE-8CZ4Btx8=I>bs36w^0^o@TdG6rjBuV#dh7u=`(a-~&o;9Y6 zZT87x3xay0xviEtNbVr>@|?9D6*N1Rv*_kpr@)0UsGw{bmK|+ZT0|1z-L)l6YOzzC zBUU$UGYt>)S>^~&+XR?c)l?GHjbRRd6&b3Z6R+uLg1g9}sNA2lk&QI2?aeZB7 z0o{l_Xmu9kEnK^H;RBD$hnFr{vb5)GXlPju)P^d?tS)&F%U1zfoyGFVGTZRcS$TPV z+npE^FI?zYDj%LVUm#GaG_7Mvt93infO<5LlN-dAE{sZsIz>V^daxsk{<2y!RksSw zz2(^Q)2^J-9IU#^R^TVFJ-vNU8(@hAHEv zOP6zo*#FkTPSfx!+uXJGRKa~Y%i`P0Ov4+Fzhs;12E1lBY|I=_f4@tr5)`RUJL~*^ zl-yjKRBc~2We{qSi!t|vXPbnAvE(zhJPF$P-0^QtD=R4}PcJsbt^TjUOpGNjMO-Cs z+jHZEFYYcDU-0`Z7FX^Jtj6IIcUq9EZFhmu50HobUIfA^WORs~E$vg@DiXgiO*}&o zERDp_(uTBzPG1D~dJe-*59c&xa!9G(g?u`$&S-`*Hw@`1<{3?ny_SR}VoI3hL36)1 zVlK2{P^#G&J9#po>vVtjo737!p|b&7xXfSTe%P8tOM8&Vi+bt`#Q?_H>8OTy~^8))=fPgX$Z{Pg_IhM4iNT|K#fi-rA$)3}RDLXSa+Ec~CN0!bAx~$rw zDecD#g{6g_5^k|m;uJ+Z3vHWVyL5FqV;$n%D%kgIyaZ#>Wn0obWw2nj^Cq`En?;W} zC+Dckw*7c4`RFviQD5DBi%np||xpK&+1PU3P zHyQkMW~U`&t-mT`-Z78`;Mh*b{I>@RHV7M+F7w`8+p(KPtaF;wc2Xs<4L{q5c`aU- zZJKa~N-TAy0*#QUsP;TuRuZ@ApwiCB2)oDi&^`ILBB(``w`3{$v*(Z5EbGX#r|gfg z&Nad{Yb=1giOBwNohg8;O^S;(jPmZ zS!S*B*K|Cr->z}qh%H>(>GdoSXjQiL4k+szltAaCf=8!qYb^9zmYMA$jnf=>{i1D} zGv6+;IDgY_#b7K>J-d%}zqMCeD6tU&u6$ZtZ4Bq=_~S%0SR~~SwK){aG?-fj5TcTt zr6CQryt*t@a&=&6X~7|wenH+#EY#Au7-=^5RO*}c?&dvv+=Tm5HK#Ixy4vcR163q4 z%5=>pRR)r^m%Rb_2u++CcpvDlo>J?@Y;72`72BLH0HYRX5L(jW9B`&PS{Ei8bA-=q zbKXum0LM)LXG?uX0;V!oB{@A^$rze*8BCS4aU?|C|#eM}$E>p`KA zKyRN&s?(B<{BjUmE<=W|c@6sme+-L6cJBp-q}T7=tBg0~nPX=Ccr{e0>i`8QEk#Os zqjNUEV2fDWUKbjPBZ!847imnnP{NYXLiatu0fT`>u8tO#71$;K6lS$!_R>+8_1UR$ z5}4}Zm5dP5J+ANq>dHmhhD=AgdIX@`BO#MsYtu_twL;%Ef>S_4aYlfv0As~ z0Ozm?Y!{UkGw_Nah#|I7H;xI5g!+4n%0Iw+kf3-=5q4m}F6?yOmJR~;nZ5YsBJ6?3 z3vUotrDxq%oR|A=tzyYHiq+mfG6-BV$AL;UePlJt$nHxTU1=^wX_x$ z@9(QhkTW#4Jg3{_^bb+P&Ua=aCNXI+kCbzYG$kSc1IsdDBA zFBRNt`@Nczh-}0777SZtn zyZ5y^WLqfGt@@Am-u-F7p4*C{xvo4>D@a#`#XsdQ=G0*bcNQbT{l|_RIWTZ+`4oa6 zOloC^l4vSWOxx~kbcRk!$4n&14S>{ z`_u0J)$?612J9QR_W*($=0{<1x*=dUFX<8JR!y{{Cv9KH=B-|6)wluNO&3FN_~-SA zPi%Uy2QCXia#@~J3kcNqT$N=5Jc4hD;l<8ni3x`ixvD_3ii10u;1zVobm2x}W z4y8@muJCfE8ox$qU$_T87IBhB=Q^S|UT!cE_M0eIUMl`DMnMVjhIFp9IUr%0oRAhQ z*>F5;hRWTT^|_a7p*n$7tKaQ3S0%KuLd@l;4u#x9S}i7W+11Fu8eY~1bu<#%G^Yjj zMYP2vP+N&?K_`PA=?kKiU{%vSm|Ec3ni45 z@fJ**Z`=zIzOmQ=mgFSZ#q>!lmjRiCm?wvnYwj7(q>hd@+u@Fqi%_x81$6`=)C!Qj zDIW!%rD@qbkK1X13g%?mc%T(H>MU+SOITv`%c`5d(`{>T{o+Ex!pyLJi^#W?SDU_` zxGBZWg?hv=S6M^4{6IXG^Y*}wfsqk+#{nC{jONPifNh(v)$etBvHU!}KB$aktFzx0 z2wu`w=AJxx(!hy{O33+GpS4;8XfTfaSc4z);G>QaJpq!7+h>Z*Xe3&P--Ktt>coj zwgnhEQe(Pu7F0jti_$E^gvpHq|8;!CCUl#3@2*x5du>qI^qyLqT;r4r?I}SlmW>$@ z8;IPS)hp0JRf4eA$x%R<3C{O2HHr;v0Fb|sG>H(K*e?h)XX6{In(x^Nz4Njjt9us1 zIwy2&+}PHp>5$ll^Zn&6VWy|RN4*M$EssYTTM&A8WNLVU(*}}WHjLb}Ov80t`OJis zne8qb8;#8ECa^S4#Vymp45W8VpqQ3)8#NoIHo4KU#EEjU>5GZe$>)x13oxa`i` zvKXNRQvBP(4aWsqD3@R&ppqR4jbEDzkaCV~GnJ2xZ#*3OkG|Ivqi6&Ufn45+8)wHwNz` z8ExdnQ08ICTu+-RG9XFm?HaNUl051o53ri_*D2DDlxlfi;t8pa>kz6S5r5`UrSlsI zgjyazo?-UCHS_4DNPgqVlRIp!Sbn7MqN_?<`1(cnVX4cbJ1`)ye9v7cNGqLNI_lVL z0w&5oJ<$+~qh)LSqUdVS(x-L+9!us2Og3$>`t=!X)CzjD6Ll;e$(||_w;yj8Sv^)* zOAdhNwC8l>Oc?0%NDd4<8$_p*fES-@6WJ^Y)D}k$q3mc_92Grx9EvtOmYj+dOi@PH z?(d7D_T$bx?4q?i3QKQBOrN!axrq?Fnnk|_W|2+)S%%Dy zW*!ygNU_2~)rRAjB5lbLw%viOS;6BQju*_s_Ug4#XBXBN>y=@`D@_2SY6(oDFLyWb%P&Nm9 zTR`hTWle-EHgl zKC=xF%R83rUi7$gmUMp~pu$RfFUpQy@FNEZ*Hs3aee+BkvIBJNq^ek( z4+?xuK;r#<%b?K1ejac9tY?_V8^1j2usv%-!dNVE>e;^O>01PZFf)T;o1M?<6*7j% z@jpeH?wK8)qe-l$o6GtFI-CMZMTD0oPbskXk_65+}NtmXo z&PQ$c>f|URIGyA~5Y>~(-7x^CWB!IjVLKqQE;|}SvZJ>JVTNtn9O&6TrD>%QS>NUQt+)s)sg+6>}zt!r7`dLNO7d>9ZZOxbNv6k#!Js%0A*7bXj_2lgDD+uJC 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 literal 0 HcmV?d00001 diff --git a/addons/logistics_uavbattery/models/battery_nohq.paa b/addons/logistics_uavbattery/models/battery_nohq.paa new file mode 100644 index 0000000000000000000000000000000000000000..11b7e6e14df115ed090148d557c9c2a7305fab95 GIT binary patch literal 954486 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

  • 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

    v-1I!(T6M}8GCeYV! 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�I&6mxD_k<)9h1KR= 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

    6-Zb6 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 Keid#WpZ@{a0SZq5 literal 0 HcmV?d00001 diff --git a/addons/logistics_uavbattery/models/battery_smdi.paa b/addons/logistics_uavbattery/models/battery_smdi.paa new file mode 100644 index 0000000000000000000000000000000000000000..85ea45371f5238d5c700f41f956c5a8550605182 GIT binary patch literal 482264 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

    ZbN~c~qPt8pQa#}Z> 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 MC_d+<5-SxYnKo)bfHsL9Epxi3JDGQk1_sn&V3 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%0Aldc+X(;xP!?uKg)@XEhiSd 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 z t%loec|(Zt8@X-)g*(hOr}3TUQVuI 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
    Qr zn?wXhZ}9hc;(_cKpOm7z%TnT`4#1L zy@CPiZ2(bPrAV0LaE&gn7_g(ThZ0GYz~OBotJzfu>E>_qH&xN{{n1}V$wAte>z!9B z7Oo7hRt`d|7Jq&t|$NHXZAbUM!&VLA+YTLfz=Y;O|_aJ$h&Z{B&v5eye z0eqvcV%@`g_KZDu&L4v#dQFzA6YZFp>?epX9?UO&O`_(W?f4&5&A_@5h{M7bO{sca z!5UU^OU}@aT?d*4v5x^w|8OH%{dysL9=ql^C0kmoRwq0A{nA|q;w}f_08?wSC z(KcidWOWcDtua5tIr_4ur&rtXM6wB$UZz`cB5fURcVS4(F{V!WlRGgd7 zQyuM)lzOV#@H-M-BNpyGSDEQ5b6SnN?$}ttn)RZyyFa3Z`{TpO@?TZT zO#H7<>-S{*(G}wd(0DXK=O{3}S~+JW8PBUW1qyhb`8y-YYe$L0(`H4}lhijq1pV4y zrz^;uU)BF;NQYbkYj4KUjuoyEsL`L;8~Nw!(8*|73@_WmC>W(k^q{d_t)WHAWIym`{?3Wg0yh&JkZTI1$ju+r3wDUUC3c=&-lMc|t_!DKn<-HkT$I=Jj z@NTH26-?48j-p>x>1&y!HkKcrI@|_i&Qpo1dZs=>!skUQ@*yqt<2}pys8lNJ5VZxqJK7{ZtlLxfpEEaMBbB$dIr1$?stM1E%vC)+MWb|PbnpmZu)Prb7 z(y7Gr?avC3;k0>w9lqG2zJ&~JClX)@z0ai#+8l3!s~D0=J#2vQ@G@v^$ZNZDj}hND zyi8-*1qM#(2MbJ^VcFf3Erx}_uVuCMRH)vh(s!I0#wBc-hPl$7%n#R?HEsCivrB(U zbp4~H(^g=iy1WaGrxR8~+c~M*n2H*IhbUd5f^09s2^f*A(E+avP$uztuh;;07y`1# z1v$R#fE9)P;&MXEut!*`YgBPl*b7ZxGG0(z2gZ#WXwhv^E&*`HpXmnc)h>&40A5^c zC5yaPa))~H(3l|^1gb+xFW}7WZTnnyoiHB!!5x2)TiZv^ka9*_ zVnAcONIwGOMQ@K0|`h*~NGQ5Et&OjNRMAL46 z9j&gMu=32b_LzsqnjcK=WU>2>UC`-T8=u# z33by3CEPhbYlq;T8EvZ)@M3?f3Z;lQIp$aXo-fLX zcXP~{S`9j;oaT#2@{TQV46n#bj3K+j2&{Xhrr$KBZF?P4E{uBh8@!dDVz$vVKl7t) zhU&qKs?A`(up}86Sxx6(6-b)0265LcI3=BP9ZV5RN?F8od+-+vsFxmF2&>V-@l4%XH+v7VIYe;&Vb2UYDarsMlO zVYB-vz&#hwC}?47*#v6-wyH^Uuxq;h8Iq=Uk5XQ{1{er$4kMQAIe4+rjnBKb$6ScO zad}xK6ADFoJ)XBMrdk-6T{oW*@97i9$63J5hXgRwndNF@>v6PF;xT z1w}=B5aUzTPr+5CHtLtqu9}(MFr!(Nn;=UQJ+2wk1s%dZCbJdzA?$&Y0MqQ|-qiGH zW`n$xg00SGjbbAn@~+yb^U>qUX7~RB8tc`Q=Qyme-A=}bo68u)EK=;IgxT(oZlSLA zx!Z-_N8NUAQZQk;3QXh`YLKl-W8sUFrk>?GXh9Nv~J!_ddCp-OT!}i$4>?) z3v#&l09Vm?u*eY1`|=>1Ia7_sTku6!HOd$CRP`e(*;^Xf_6p#xmh{y~CL{P<&q;B{ zHXr=|B)<@F8mXEhK!6$tf2SPe;ogQopk%+#gH>d`T`dU);X#YrYUK1`Sp0ne>>R% z!jUlXzE~tnCo-STc}UNZoP!_%x1K2$J?U_b(BX(SsYo^M;oU5?SpYXK4)YDE!M-GwKekL+iOT04PAi8hI|A*$6MeYYO_hToKAghYdcFb+fa24sc zouHWYCLOdPOPkV{)2^iolUuj%tjANrkp22-lbJ;QPWksB2g;Xi5_tPUCfAFK41dS| zZU^r-khFi^MS8BL+KLRBY>g$Nj?6TKC4E@V7QY&U~VA0GumT2P;$p@vHsOxFP8>T({%* z*a1ii>G!2#)>=tn{Mv=p1H#xJ__0yM?J@ROdRAV90{>qv2N8(#0I_Y@)~J38rDOmr zhpA;X1dgB2&Lh|G2~Uq_ZF5Q=(~d{kV#K8~#zB0Q8Q{qCUSqSvx7+}I8s-XORJc$3 z*ep9k4FCPzF`>f&VfZXo;m369(%~hxCH|NQiZ9`g6U%4)X&*j}a)=2*Kr!0k|uF_e?=K=O8tUz0K z4uyT$XZjDGuBg0K***G+4LQQZHU^12ZBMZCTc*-&C0m!zoc zf?TbmE&;Mbj%i6ANgo1wo^Gs5lnTmqXBPsv{}t@*_Hs64|JvqRF6iDygi?GR{nU0V z6X_4;XHydHUCC4=;llF5u!Z`kK)~BJbnlSB!A8X0*DC2rU)ccxG@DphS5Za3atXRd zHZA`$)M1~Pt1&<037Y4;e{t-cOc9)vmoh5oD}GM*a~S&1Z8Wtgc@YtgE$RZvEPP(cy_ z7b}6}cl;ASA29RW=RW7UzE?^=@i^?;aBAj#zjl^{@yS}yVA-#D9|R#LHYC6J9opWa z&Ojgy=O6#NC&ZI>iFa;R&;}UB$7+~w&ELXuD}~oW}{#GoxqkkuVxsj`(_V_5OHs}xD#njvc9SQ9SSW5?U+7vPQi-5~>ea_>S{5m~4lAnk8xulTXtti*%;R?H3M5(|oP3pMY5 zZ3c4Ph1RJI(w@)rvmnFHFLpmJ@+BNsJ7vQGn{{mIRBGyQMLH>2e|4Xh<#v>qw06}` zlwH*|-}eX2cBAbR%2j5OvrzOu7qd{&zl7?^_RZ8{x4d=EH-6{%hPgoZpzf@C#!C&Y zM8Z{*kL_{yt<_aWXXYXNm1)Uh=p_r*^6+6=0VDX8Why;>XTIcv^dBmvE)Dm!{kxdl zr|Iiyr7ndOmsBidMz6ND#^I+GTk?vsh>Fb9A20*9o$qyT%VTp2M|isZG38}QJ5pA_ z6E4k5+=}nrQSHaM@n#TUgpSHU(2+{nv^djLUW?y7lLL-un*~Hof>dLHCw7S$ItMcA z+JPu`x@z)zd`4OKC7!D69wjr*?k%gqmd)PfOvWljqD#kIc19;(x~teZVVd^{FU-QH z&D+X&qNst5Ji+!SojZ{$rQEO)o?F=iX28mF6SHewuY5OYAL-|Pmz6HmLRDV3cnLF5 zRVj^luV9T;;2(>hD%o8lYYrBGwjkE!IUHBon#ixI2|t~=fR~x)y+8{N#afviuADjk zyfFPfX266}J_`%>7p>hX70m-wNx_F9a~@w!7f@e2DFw!#
    $LvFf;)Aw@ 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
      3HydkYMc&XnJl5Q8TAJzJZ2QsSH)xl|aDQ`D2C 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򍜚M>*n%5Y&Aai^`_~?WzPqo$o5#Q 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

      cTtry;c+ zFC8_T5G=VW7KD}c#-sY@AC*Fnul>ZsOw@Fsan(iGxW9WEN+p=R1Gi{0GD^I65Z+s3 zv9pMYVi?e_y0m|6QMRW0|u!wb?K<->?P{CtXP4#>n~NnmTg)`Q4biSbN+;8 z_z}O^lMhd>nP{1>pfL3gbMC2M4sh!86_%a z0*?cgwdfEAr|af?zRfYurB&wq+(VG7;6*Fw#Gr3CwT{JMrK2Il;wM|gRP#n90L{&7 zRUEDoPq{sH-iH)i8}QUoF<->=GxPag)Tc)r9No@v7^F%~gQ`DvAR;$eE@Rh0! zbCx7Ngs-#NZVf8^tC|?CcYvb*N5f-MZ8+|T7A@45ED*?a7U=Nm0;oeFi^X;&1C8+4 z!{+$>GN8161Wd#rLY?(dP@rcuIbIG1{fX@sj8w4s5pU&bxLdGVHGg`05pIr*sW&f2 zYU)}ZIi!omp_J#8a2aI`N8Z<=V(L)mHhiaS=HK{Zo%>tVI~Q@SznB3A7pC7etjTHp zO@xy|LfgP~eD6>#YLr8#?{n`vddNl)%@cp3`2X@e2W9utrPuHF3tK@Rb+rS8G3S?~ z-U%??qxKCD-rq7A_02&Hk51+}itW7Yfi}_8F82-4#>U+HbDn*_UrA*@|HgzeLZF&} z7Inc-uA&^weXX?KfM;>X>CBx#BFAdb1Slc>?_Y00T>h8Cj1g{edV+63duk3Q7US9C zQ@1QEnh)MW4Hby4_Cf%}hb;34Rt(P6@zwDA{58mW3LaywAb1fTzEJx#01zP1vgI&& zDY&16AMJOU?*3FRW&k5-<~v1f+)WlKqC}kFV4CQoI4EVuvS$(fOM~!2V*s zDr16nTuiwQTJvJATw=6`LfqvFas$I+!aX4Hp#}$HY*uF&mHPh)MYzgxE`+ZRUf4w{ z!7{tNhuI;*%@FC&XHzW;X?#$BKI}TaLxlQ2tXNVOzo}Q{tx$4@5SAxT5-|m-WEU)Y zX21MWMUQ!`{L)IDcZb@WrnJxK^TFU)!OvqkUjxP$rOwEw`^4xO11R_14MJV2@xDS$ z7niFu-XzaB%e-$g=Nni6_uC_8jvR9YH3eFSt#|7T;c{k6v3n2bYv7)vNmW^jKjglNP^#xTo;;Ap zi%r8`b$l&C{5Fpao<;G`SnjUufgDEi$*SL+v_2%OPI&ZVI>g%f&p#MwpazAlDT0-( zysUK$2yc=_p$S)zlh5j|fFVTlEjT^U_m0lB4B^6SQGi}-g;M4TpZ&C2=G0BQ6q%;5 ze2x!0qBrBxE~eRa$fO%@p93A~968ryGZNE>RX+h}+R#?i`x=5D8G905n1+7peu(c; zS#mHRi+W*hLA{Yk^Y!6+r>k7cJ+|Irf*AcGtw{`sJjNYWXNg@R#+}x2Pr0Ym#-@{Z zb^56y+k-*IVS#AP$1Em(yhDn)yz}LYU&Eu=P&2s*D~C-g&GayIxC>w5#LCpZ{cuz( zY-;F=jgW=`UYk(`dor~pqj}iiBF<^gE00bhR$>E-!mbU6gOd!~xglaC6=GH9<7(j_ z9%#+mw4$UzWK)g#;&}Z*c!;rt6$s^d+>6ok1hu10r0j~aA-X-bljF$>3J8+{izO}R zg&sJrD&TUGE#M2330u5x$%zHdfe!wh8d|(A8Lfje=`>`}wX!o{fosBS)I>?1bji@S zqbdkA>BjG=Q&58iX_HK;lS%&t9rQBNk+h_ve}HX)wq)q?9jr({3syJQ*W;f6=M}jP zhZkm<^Hb)wmD1o z043dT+uD$j=i;ki#Pib`sLwK_aQemP?{WVN)je^0WKQfEEt~aH(jBT}B!@p~dlY}8F#m6%h^dwYr7BZ8oy8CeZ<$4XIgn8b{MD;Um7tf=R za?gBcy`Y1u6XHXy@2Z-Z%c=~IHRD?P{0qcOy;e!Po^Oe{-6pW2Xt?~;PrX(Jq_+hM z^=2Tsu6Y^@vLPbrDOmkuAPuhX2=ig+pKPsx0#v)B9VWmf-|adeE6u)TaX~A&_5OQk zQd(~2y#XtTM$dT_%v?(CHuS@F$01K6tDw`DBEo=z%~gK<4v;*D;pNb$qUf_JB-qZM zthaZcjyUZBY!vkTg?*QH7rr@A|1O$&vnujcS=9n$Q4c;7giqq5P;W6ZefTszT;u$w z+cOOexhaMQ%3ghD&O;FMm9a-AnTZT-Rl5{$UGPnnvkX3oD~l(Un7=_>_fCa_s8=7~ z#FIL$&rwF+FHA;l{~(>WU)cpD!Ro29Rc~K}9)d|#OCH9ztwe! zii~o(xZl*aG<8BJ7~0U$V!z$udy3@M;r)|r-x}bkJmErD2xYQ+;kA+&HEKUm{_Mxw=CG7utAfrNj#4*!FQv&!*L;D~_`RC%{mp|4{~+Fo(@dO?jQ&Gl?(LYa!jijxr0L-M;f;!qrSNq;m1`&aesvAba<0^3Ee zC9DH^cR3j0%}qzaG3x$p?YYEn3W(IkDxPBRy6kF+*I|d0r z=~(JMME~se{>(j5`@Cwp$fYG77pV-i8q%P(2`^%{CNGOTZW0^m!R7EZ5|={aOE#~H z+oDb=M{2v+E?q`~hVK&m<9Jb*(W2!hp_X?#X_-;&J2!eoQnSW3!akZ$<$gANs(}Mh ztk4^>mjV@atp8z$ivNnjg9>+@e;gyIGY(+JuUHi^fl=9?tpNURRz5)6@2xo=%~V<42Z2|MG?Wvl>U?oHV80(4k1TErwRb@(+PT7!SP$D?X{i zP$u6rIy8VecP#Qh2OlcRYGt!Vv_8KnD;?M5H9;4$qAPy_8Ze{>|U*B@$by$IjD%9{X zV$!d>0S{kA{^RKodHA->@QIwe1$pi-_mDH8Tvo_|2t8W!WgR!xR}_nUFA=B_7O~ws)K>yGk4Q!R)`Tp_&CSuE(!^;BA16Hj8r6?z%0d# zI$j~p=8N?Bl9Gc%ppE5|Qc*Um;HRNupjZEs{wmq!Pmu0?A())eD0IX1abw`YC9uR( zcTg5KZhG<;sI3n9_TgzWkSeCDQLhnM|95{bhzLFZudMX2x9k_0BnG)$^_l_{?kg~& z%mJ$5rtCq+j;4FES(9`(51>h&N9%KB=&nBY8R{Qj{VWnj0sVR1i<%E1zs@E*z{vWN z2Zp#2S7W-WQ-E~uubeDwxx3#f3p35nxrvXub$yGh7(v!Wf8Pc>@Dq(FHM9NxI8^_o z-zK7l{~>rtc;Xn+eF8T(9XL258yRtRf#X~`h`J?o!Zh-(y8+azN4hSxrhuWpcT~s| zCd#d^6qlj;%hP+GKu=L;&0iz3--C1Nvo>}KWB?((eA7RU$8gY?#p(Ti+3LrH-ZsiEJmo8yr!?WKvRu)*1g4>#eFd~vQcPo8CrC}a1h=F-c z5G=jlCt|kW)bLTnL2$Z~%*p3REl*W(-x8ohlkvbl+#==|h==WA9!eGHYg5`+^!Sd( z&x+}%NWT&*$88(xA7css)+Cukz+hIj6H|`+q9uO!1lBiPK5p*z@xJdkt6xF2IFvl^ zA873y--dwFe#NNveorR^v>C73UkPPLYq^-5Uvwe7H+a%5TV*+Q3I?KYd(Z(NU(avi z5>#|7_C}-Q$d+MWt%4ijmnqjEMP^2}xLo{4=y$R_q4&o2f=JRG7yz=ToezwGSDB>#kOq&! zDljPg`_?Uckf>`YmxX;?2i>LyBlW?-X8m+poh|u3^V{H0g@h`2=pKznPha9}6`$K++!hykBm4eN)U!63Jz#y^2`WJLkvEj*cROaRCoH{0`_UjvKpbq1Mpepf7`SO7~OsKPBMlY)w zm&z(lXzr16%)CA(5fxsmj;!YTWFP0PQ|a77>aL=6Y@1QLUEN`J}Fnb$%~<&&M;Fo z&eTIEH6UwPW#-~ayvcLB3AN2a^4#ocEe8o*ukf%NUWf7%3Wu#|Q+ux}!4!paPKv1i z&*-mEUn-KjD(xF!*yJmcRcDg3>rgP~+c8Bb6L`7*RagOppE^)6{3eH{hn_U9D-Noz?xYNjD-@gxYgnnJz-H{^Yd#h%bfI2)T3dJ`SIqj%v76MZy%+v^HcD_!w>cEK?A!?cSQsEbPd=qmJH9Mq>Ke|Jm zH54Mog$qZ^O7*UTgDjsYqG3wgELYb!{Dt{Z@V4D^G4~W|zK8UgZnnVvz4l_lWgsmY ze#KyuxTwl?~I!K#jQ|V?)6|?mRKp0g(%bL>B~j!SMq)3@;~SDD}y?-e0;_xjW=9nImM`K zmyummO+V%v#vPD<^RCh~-&yIjKdn*=-!cpa)m(S`RQ$`7Kb8?W6u$dKeBsgfV`=JC zZncK{5Yh#(@+dc!IhdzY3WO746A{s)O?Wygd4kHe$U8wCEz$)#b0m$jqpqU)4v#fF z2$Y$VTYTk9&W5;GFs>ePKkNMxyr0i?%Vu5aC+DFFKOt|27IlF2nXDf*y~93&t<1sm z2Oi0NqFltLk%yoe)7@+RCJ3=$Q_+3a@N;eEXL7+b{RoO5NN##Iz$0Qd&UQvAlCt+W zr6@D!;?X?WWg8M*>iIox#{N!}oN=>BDQ1w>|3=OCp?yU`BOIdwjpfkL_yeAkNi0Zo zPO?K*T3;}?!13jiER>q?!I4IknXx-`N4Cn!K6@&wGQp^?D;5wRdF)%+ta(>!jvM0T zRNA}K1qE*HdBuWyq4GyO{ewA7zN`8NFo^#R`ZR}k&S6o#-a73nYWlpz1Kkmi^-sQN zIGm#?sYA0?8FH0W@wq=C?V%*kI|-$nw{p+om1?a~GI;Ihlj4;{*;!6s7i#lgI z3ou*e=oMMwsFF=A9~&N4EQY95^LuJNpu~GMuz0y?9HhRW;A^KCE*ncT}Gkvdx938}!i44`{NM(Q~ zBhB&G(p+r@g&EU;*8YITGCq-KWclPuhyfP~#3mD0lWO=f#gdmF8+K34y&xYqD>y!3 zk19c_w0u-0`Q6@7?^770_@NeRM|{aFK+|!6xZX!!r!|}&6g^$a!e^FT>5+xy)roDW zScwHhG~qL3)!0*0ft0%hWlav`G}-S2VPoDps!Z}NA?xkWrz!E`FFIlj#+<&YEBO8H zhHg~Ehc@k%RqvK|7s{^Qo^%C%1e;&F2v>3$OAq?dq?tRP9hFtbikbX?PO2-=6b0|O z!=9$eV7MYsCCmOV@_2gpG)K>a0@?1o-=aT)<)XY;ickXTL5GMwA4Q<;&1*bHBulhn9sm05?}PIbZp-!2W8MIEI2M8ewXO7yERfu#0SztVOhe)$xrKo0G| zQ8viXC=(kNR(yb@@ZURJuvOmw*Sw%@EAqlN{=C9uywlta?cBp2%r)+sGn~QHD90fF z4ILTgl?eMYy~x~-EVM3MXx(1>&B)8YLck|0AQZ`@G&3K?Pn~{J32nR{bOE`yLQWp& z=|{nn@}5qVd0Ms-DqB8p95!n(J_x+M5Fn3EeJWdZ&t2q}U0q(gqX}MB{doad)iI>I zp{yTlwKhRBwVN>NIb1418Rtx!*)S9?o&Qz%GMcdkxg_nnqDTU2x5SX2v*o)g*{mPV zKB`0gs}iETN97+MvVYAWcfW(FYhteq{hS3KKpGF1nGZwZuYFby)zyluzVWb}kdws* z)So_Ek)x>(E&fq<4@H*c{W=LAq{SIsg&?eSvJS<6ovm+`T`op0K5y*AxTLhqBYb@I zJA4mpmE^m$jAeEsw@`(5^sr)V`1cz^TKgEDerEOEa4cHa33u zfwO4B8KkE7@K%~GQu*FSVb~CPss00Ea}WM_*U8f=u3V}AyqRI_F(CfIJc}KtX;H_# zD>C9}xQPr$`h)(H^yhV0W~vxplHJ@)4;HxPO5b~k$L)E9c@tx$k}S2Mi<0wHFSo-x zh)e-iDw*ej#x@KteLO)5VB92Vh|JJK^2wJWF(J-&e$@Bxv)osPPsrM1WpI!7n1AS_ zNBZNBEhNY=Ok$TZap*e#<2qZEe2Jm}vf0U3O(r<+GwtmynE6!=v5g&d`RlkU7?xVp zus#jih0H@*r|$n3q!l*a%xeU@zT`!?RQ?HdK|;pg9aHkb_Rg-GXwoLx^L&(F%0$l{ z@aEmyg|&jEsPiY;gRIAub7k4PksIp;xdQHO_xyD{4c^J+KU{)WOnq=H%Crb=J5j?H z#HBm+r$zESnw6o+2a|rlqm?(bXhIGwTdy`d^2}ZKr^FCbCSE%F_97tlQvb!n>mHwz z72gY=T`}6Ul}pXZuX5U@9ZK_jq_X0JcJQ&CgOiyY@y@<_3SPY17mg_a;&uke|DO$x z-Nj`0w#chUS@k__^)bWF5zL*X#1{LlRBO??Uvykv|NwJPgA9c*d5ZlDj-wzIH z657ev+_Ry%E$Hny;ngekY0VHY{=h<9ZuZUa-a!=QF83s(LmE3su_f5T#IhD~lBI%C zW&O(ytK4U~gW{_;8@_Pl(Cp}Yb#NDk0Uc!$Q@lBGRcCzjRlY{GP#t8n2GlgRuB%I# zF`noQYDf>wPI5@a5VNyD%vUE=W46tjq%=xgi^tZv0=CgAh@d=#NMvjnDi!%2G95y% ziAb5#?Vdy-70S6a`v*T!9)`G+SkN@Bt?{(S9SLRFW_OM=`n zO=d)$&NA4kaePwa)bi;E<^0WD0~0nU6qziq8i@{*59}?TAW>OF4e(vO_ZRt>5_{}NL zQCkqw4ulpk#NX10+H#O5dHv@=e3sZKtI9!6_D;X)D5OrvX7TM{nk+1=M6rC}4D|n0 zcM~90H&@Ed3c2;~0496jV4J+C9z8QHfbR`>mdQ{w?c`M>dN4*+qCE%_Bcq#8alXCr z1vFmj-!^+FxL?3^Wp*9{j(8g@u{{ z9y44<3aR!Zcy!rbEtXgen$+I2SVm&1ttxi#UME3V+(O1Hlo@SWW@1a5ps@0ZFf3UW_Q3O3c31#zVq zOh?@VfU-xK$aJbmV;>D-!z5prFW^G{r8Rh@(^;;wPt2qBLhLa4QUcU5{WDed-0+W_q@I0;GVcZ>La6BL*Zw6d_3~w>P~6ac5XQR99Xd&i-#-#`%TVLgKOo{W zf{uD5LPh`1l z)yEx0ZfM0j{BFAn{^y;Fw$I_%y6)lhv8~dX)HezC}=RJBc6qlt~-f0$ubvYixvMWBm6+DBm)tB?zRq9W_ba*8Q4cxUBR-3GZrPYyuT;M&QfagEP8d-h)-ud>KknQ z(yilSwHdMFd4Ln;AQm~6+ync`;K|S%vB+h)&NhOG+^*99JK%E$exKgEX6 zEa4$Xk~iXmD5lMKK$Wq>uYeNxaDiXso$glxh-;UXc`INI5t%ge=dcr6{&4O6v9n(6 zS7T#K2iJ*BClucpMXb`bOdq?(Q#IcR%@cp-+w8~BC^`Qgd^Z%dU zTiYI|pz^+QmdFiyXcTjJA^h?TR>|8I2DuKO1 zbzNYk24h~XihYw<0mUStJv5_s9^cKYl1W^Y_v*n6E~aCG*dQOTyb z69tlJ5n-f0cLpF=6;P~*L^)i2cb zcR@P$(X4%j))!}ujVw8i=X5u`?Pv`?LB#|6t1h8QsVQ~WWUGi`cvpc53tlXc&00Y` zNkpLuNm7XZNRea>RCf++LGnoJ3@D0nq@%X+$lRYc4YuTYqoEvp0&+?F+%~ej|D|G{j z2K9wa+dxcX|DULS)!hzgylX;K`EM-+66c#^@GlG2g=v8f_tLE{?d%RBmn5Z&-C}{j|X(7$y z7V^zIR0p^%QG}1Jo?)Sej$Qs1((des5+0u8VGQ{+{wG;-EK;Dmm<9fMGtdF^!ry;< z8{f`1zBjO0lVq0-*pgJ&P26ktBY6iUSrAPUzVFwAA)Qa)3w+xb-DK;O-uSzsf2%1x zJp{qaO+v44Y%-)^+=(~BC%mjXIo2_9XA#PMhGZ_J>y0MqjkiOr$ zU^L^8r!_VadE<*mr|{krx0Zt5XH5{4cptgq%?HpNTp&?>>0xVwT z9hJ;YC=x!W%a1-W>%DKtqKgJDe0%5o=!>NK2<7{bJt4nO3=paX*Z#j1yNIj=LMLAJHh zHy#mA^yguIZ(}1-gsYiNyLv;8`8>n_#$(2Wyok*;_T46J!cX=%dbHdC@$%TXs-dYl z(ITJbO}8Haqb2Xf?Jj;eN|LEeygbdrM^L^o8uKBD&5HlW(RBwjasK^02`Iw>9w?eH z!jk}oWz{+m2#U6~*3nj+fl&FW6$jO-s3dt1T1#~AvhptVsVEIln(2zRU>k(7yX%VG(YlPzZW71kdmNd&999a$O#_%IR#t&u9A>QZr zIV(F1~+>=@|3)AK*VKvJZ4t2(tN1&!9@Rxnv&Pj>(dMORO{WYhDdQm@K5tW`tf`r z6f7O~nByVO<(WFEp*N8x~t<)sqn$?#-pD^6tLG$xZ0#p7zruC~wjNOspTqvbZ^ORzT)<_>_(9 zA5(2Vvm;n6v{nK^VG8kU!ciVQN44*5==TfOUqVYR6uf~u^rbGkfcSi;PlC5-u^2Q) zhf^3TtqGAg&;KAO<Y**J6%-$I(O3?R$2~7xA(}sqp4@H*Sy5Oz5 z+(PA7u7^N^wpLhX*hO@fUupSJzMaIW8gg?*($#LOJ=QdM%S9tLKCDv9G9wKpo$1G_ zB9Tykh#qXW+FLzOTM}GwY3wapV9@vnX3}i?)5Xf5NZw)ns^|)~)Lata^~g&;V0^{; z=e|OS%dzr3@mdX4y(Cl9(Ary4D$*};mvx!DQCC;bxxU*b-s~*_ZS*U*LXx&!vx z=lf+mD27_+Su5ZDT99(NAyD!GITQngoVg0E%(BiU0r{!1Sn?0Vv@4zy^!o7(zIiUc z)#%Hj9=*2ud`qQ|eb~|ou_sJj2d2+76s)HAUnx1JEJ8+DCql44!qQM`Dha?|Gt%h=--q-sgG=|R=8B2ni4ZlNJUBn%Z9&GSJ1_he-h z?_mh1a=^ka=g{m%p*v0!OV6|tEBJ+sSFD+ayDy@Zr+8CF1eYesQUXwZY>Xm zx`#bF*leDy`r7Fkx^;?{9;(i*F)sX$`PBN*S%F*Qtn_~C z(>%)(8z9(1S)9vRTZdMzS0VdKLzq2E@}(fW-osdo(|a^Qh0~@UiE)(;zdR?&iAhC^ZHr{h@G5b1 zseswu=HCoZ%&gcG*?{*vo4;j0S<%QE(I?_~|Lq|I*FY}pq#f=V~GcSdF}R8P+$|#%`#|g-TB`InWvz0l%LzsXF_Y}utJZB zr?{6}ygX&ozaT1l(Y}DnhQNV|aa(0RZ2J7m!vP=m9O>uPXV-f-QI@HqYrvtj1eF%G z?<4HBCunZ<{Qasd>}o=K+_i+1rrH%$F?F~1G{q4l?DAmg|296$<|jW6%xRobRj5+D z^TjSc`eNx~SDbsWTaaq#1|}ooB7gJPJhLn|W%%F0joJ-4kxS-};_ z(jd_0tXbTlFzi=Th2qIR7DaHWMqn;n7+^8i3qv=_mFJLlnWs6%ZPg4q9^uoMXL6xJ zdz^fF7Pfb$IMJ~NoZN;^x_6v|bd^17Mr#M zETd1ahk}db?!iV{aj-g!TU|(B2iuUc0xGB50|(Duhpji5-c8tSLM5Ubv1A}gg|rFa z&RcHKq@VhGhf2lR^EHfhiR}FhfKdIt1EYBl#$Eo!2EweqCslPk_E!AH2 zhAzj1v?%l`=50&dRYr@caM+gzmc54fs`Y7UN+T>{bX;aVG@ zP7__KK-OP?<)`>Rs};EjBux!%oJl`7c|0MUN8_2$G_EA2;;K_9`yOc*l7=|tb;I=Y zW-Icv=x77yegHe-WyNA$04Kt4VYefIQ#_(au2OQ4fpNM;sfoaQgx)wDoStZf#dxDA zEW+PV{~q)WjkU+r&xm;wW!5&ZkdYG=`6m)=u=gy>>v2(zvaq7 zLYLgbveSSX{Gex|^*^fy8%rTCpj#;ZkGQR^|5)7>EFy6Iit6@RyJD4(gem-!?pQ#s zE<3uTdDBGhGfY@pc-lo_=4d#>w67wSk454{gGZ_gsu4w5Ms)>vwGE0gY&Axiz6Lpl zULIByuuUB+D-r6KFDx+``0k2gHJ?9u%}5|~-LDIdLB{g&L6xV-R<_88TM03R4XgeI za~RZ_i^xMO1IoihOHw7baud=pgImdp3w8N8JigauqS6MVuFSkmr2oFJ8E#=2iWhy; zk7U`N0CW}53L;4{)2g&noQNl>cepv9^Qn-k)E9w>4BS@pHS(Kzih(*r}S-OyH$2wEcWaOR;J6XK{9Jj<~HVM&iv6pL>n*C$T;(FRGA@hJWT%8$uP> z{2KW@TJ#K*6#*zGR_DGaG-Mtd8j+}k{Z)@e8{j>K>t;f{8Yh{dnPoa*n1BH&RW3Ax z)A5h6wwW=h2qZwMwGL;r>!a{Wk!q7^L#%2^)yQC0h0wDrMjhb&=rS=c2+W+-8sJ;` z$w+no{-9?5XjsVkz7*OIU8tFc$cq?h34@HTDWamC5qG z&M;zxPQ$!*_LVBfGb_;2D~+FRrmfn5oxR2jLL z^lvDG5};LG@2+sGzn#*vVffbBt26V8z_2WDew|NPYn=`%=aa6d5!mFKuqGYQ;{WR6 zaK+A8A3J25jeSmq4>Q;LpCPp^A%kjqJI=qR9?{^Py_xysg)HsF3wE%wApqNGFT*h&?HWCX~8`iLJO z&h*4p8;&TE6#mUjoJ#S14ZY`WYe#^8T6T2S6gLriR;w!wlqKFX zxC5~2LT~qOci56dD~U6g1-EBe<&N0QrTMYSCQ*f|)iSynlkqK%E{hKAO5OR4z&*b- zIQ@8s?gck{cA$KJNxZ(WBFGVCTG|Z8G}#&VdAS6^n2QSI9zciT9N7uUV(`;m8szU2 z8Lr=cUX5Gzd!q-e1rM4>zHt*-Sds!D^9%H^kqjr9;h8|Vj{5W1SZ=z!esvZG5u1xS z{)YHQ6pq4-Qd`hLrT<)qJ+$9;MoBgCS^-feqnN#Vtd|1b_joK}Jrl{X)g zNn$BnMSt^F5-9a3oNC?|Lry@#v_YJO!)M(Wy`ZYYQy*%%g{uP}$z*c&dGtghLm!p( z<>}ft$i(E8I-!V4Z|rPP;P9VmwF#4mp|N%>zFoInE0Dgq(lttjGeBQMku-2_7P!UsuCz3rBULLJ#?IyKf=3{yB0|AvY((pU!pS3I zJ6)&wJ=&;m6f1_ReLO$sG1gX){0V$PrfxNh&!aAX3 zOlEeTNXn5y=-*0vQ2Wg;r;}Sf_t1)tkbeA}mU#IKa6@{-IC8L;9$BTX6Qy!IFAV+w zDdNh~Ts3vc>xj^OhD5u=t-+TSr7=SH8)>W=MOiL6qLmT6>d#K*8AJT5mwNKu(aC#& z$4PgXS$y}=d_mS{Me3O3e@0q4hF+&g%mJTDXxjVw5&VlsT3miGQPZDfNH$|>nf{Y> z%!tal2YE$JUpoLzg#2V|%IZphdqsn8YKlt8f(y4gsrEem&dZp-etzs;$$v2apPr?m z+Ge1g?^271&v7SoZSFiV89JzcS%uYkicZGDrn)hU#;4BQ#lkxY|igeY$>z|={v3~H02X1kn;wY+u+NO7L#JXHwA%W)PaIt3Cbo*CCz0;R!Q zy{sbr8PwHbFOQWA^P`oDFcffK#Kc$C)d|gU<{)OI6YL@>Qyp=kFE>Yp&39N^cYCa{ zmTpIk*~|5QEbml!H-~>K#>4*?FQ*@=zxJ8T{RU^9PxyK^C>)VYRqxoV^dWb7H6WyGgy|2 zdXiMb;TWl>uP>8rM234AyNRzy^A4x1(@%X$e0>J?gW0h(WE@pJIYtB?v^hw-gsmpS zY7#;)dGB2>@O{Tj=WJjme5coO+p1AZW$6WSP^TTump$gIUcUmG-QED5q~gNG873}g zox=VayB?#HyW<1|<&S&H-FmOpE0W?IN%-Uuul-JO?H)2f(XkJ^MzdRwp2=OSIR11# zCYK{4E^xD<8zOD=O~M-!c?0VwqvI_L_lw}^9a@#lNGldAgekeAV0IixX;!&|iyP%6 zKbDBg)#a*>>P`$T5~Xx!7wD@ybR*>!(gnEA14i z{Q|rSS7rt^oBdTmL^_l`$8I+-H|=ygx(z`j!TcH+eDm_w3dR)DZ*oqhAmvmy^9|#1 zic<6rA$`ikG@Hwfl-0_soQ66!lD9FkFh!nDCrUnoNUp{flWfrohqk2vX|Gs)zDK}2 zvM|6AOSFWMTKr8aZ(@p7a>8>EV<0ZM;catxVTN*7aN8TtXlpZ^i_=L5ZL#MDf5CP~ z>7T|{d_>ISCJ$OYlF55|!%e?hncyGTXy$u5AQniLh15j{zL(7pbX9S2*=84*NM~Nk z%EjhM$iLs9upv!5MRkx2k?_3_Xo2c3Ti#N|gQ9ZAW0@VGd%V zm%dCbqx+o>4ugqDn>wj4)UC9r=Nman^?HoS$*y;h8Ih&2n1LV-5nC}c^JEuHYL^OS z3Ebi#f7G$C`BU_-d!kCtqJ4U>HGAbkH81jq)p{&Vd#gK!L77prW6u_%(EfT7)~`CF z9hH#41)sY&B3*<)w9&N|6G_>!n<`O{% z1}9M2RS2>DzJ#$Za>+Ms#OJWO3p4L^=3p{~Gm!r0IeW46bHro&!~Z}fFL zhNabqZCw``ycOj~xg%GD59;n&>{+wpB(M6xRi%fY`H5!uqdy|3oNNC)f^v4-6YesJ z0(PLUf3QI|^@S4}s_2uX&x4vQ-Er5jYX{0QwI>kUg{ukRHjSvv9!J=f%y>|ot+@OY zn;N^WLFe-Tn{931wKqM)350DQ56;F;v^{F&uLRMtJxYJnSyKz{j|7vA%el6zTnr{r zh`j?-m{^rdfs<4b>gWd8sbo`29$~-G`eRe!oMx_a2ivH*&8*{o(e{S^$~oSQt=Q%p ziAmn!)h4RCc!wL50=pkJwBbu2tq~tKzGFJX1-9WZ>hrx|M`R#PD#{Pva zSAKkmAgd{Z!jUy@DE)lwyzrVEu@&xK% z7BAe`(?_Sm+umcG=&$oaR){?vosX_1+r!j;Og2f1|USs$G!^ z+~PKU_hQW?3fEgnC=}Fdo&$S2_1aAk^G-f-i^fuISywAned_8fHdQzWeM&MiN%%=t z36_riZx2A+;uix))8VEYSCt2mSU2;vVo*cUkVZZ~>#j#lvBscVi5^Xe7iX02g-#^- zGFrTfxk!dqW&$c>UNBk3CUSupHXseP74sdzhi4pf{c0@eVdC^^xX!s+eWszr9lVui zHQxb}vtgN@BQV`itFIbXd*WOD-Oa-qd4kZono!mv0dw=XRBIae{ArRX6l{T6LiwWn zC`n>4|Ff28#Wli+Qj+B;f#`<_!p8!55iLuX4S-912GdSzUk)!)Z;4cT1x@ ze=&(hSCvS~3at!Wa3WS3Z)BLb@JCM{b{H$&`6A2v`2h&Ee-oBHm*#8tbQvgXZ1UO| z{W?MGyzH829>__b&+kxzV?@`pOXSXQyLJdOGb~|Md!S4p81k9D zwt>nKHGC|iicenA+`z7x=+@$==w@&Uf2V#`W1fY&c>XemzM=<%;{cu`dO1$u4wZ{bvX znf4kVOFl;)kb%j%5DS82$i`A$B@Ull*LTx~cddiSZfSN=)dj5&fy0;;xI8Sp369-!+-hnnAN4*>Je<_%0uAx_3kMGprnqt}d?m80M{l zm{dNA9pOp9vd74EyJyK3>~dG!lLoUz&_lAe!F_#&F&!2!AG%>B zGkGx)N;0F!K`GN5$4d%}xCG3-doyt_1MAO{>!$7~{fUIEm2Quc#D~tfXW3Wo3No)j zgz4!skbN%H^CR`AMaq-Ia`rGlhI{j8Ib!9XIn4hIZR3SaPIeDtpDE3aF)vZpD*uJi zfV%XaCaU7EMaC5#;u+)wNC!BT$L?02ZYI7$BM;!@%zDn84e-MI7-AnO$>xWitBZkB zfNw;(E`c0XhNlGzcwfMQu;-U!<$8bk%reb0v@%BM`XD%Gd1;I~Dl{ETKH+1ZYO$mh zy-IAELvN{b-+)ZMkG5Xs^UQpbDQy`>mR|L##nM&ZN3G~75kY??EvX*vu%Ren(v$BXlc2g}mYtlUIG3eFGa#<**?hGB?fS9A`}tK9 zmD8B2e2s~~xH5&?=t4192OSZ)#h%c%k??pw5%FkGJNa86)_DvK!Bq{6)O=mwIU(&* zro*=(-71V94m|))kt~;QSX4oK9m~5I{ODni-aC{XW_9X65X!&z468gPbbI8(3QJ={ zS2Dx09|kR9y=4USOiflEx9vI{$j1OZ0KP{Brd?L2Ggg(F&kTFC2H-hpsA~N?vL?Es z%wk-uK4y+kw!;-x9WhyjOrpc#7Acl63X?Cr(P?^X?>c8038bC#tw~^MYSwe$xQxge z21Niu*Y4n^A8XV@WNi52nxHRO?oa^JmG8m-3_^La-L>CPTq9sSQicifo-)_LgmBW< z!Z%G(lK<#_>{1`SH?Q&>ytE)|bZt%0)&n4>i~Pnyh8>>j25Z6!|3} z#m;sI?=qcXpwdZRrv=mUuIdvw`75NDMI{h)eAgv<9dca9D#hAC0_kMWI}@yMvn%x! zC$X+fhh0YWk*(h#vTU%J-PhwZAu|3HLCh&o+PNG8E4g_dM3Sj3JR7%K$~cUmRvg;h znMC%e_f%5ZgVE(C<71$2oGHu`IqRgCA2z)=aqV7MUVZhyDD4RL>^HQ4_Z2#7()}(7 zExJz?H*Nu=is>)M-2#fW4oVIWw-f%3ofs=`gVk-*zbaqmHtgAY%_a)ZeeUvb)8?SI zF5Cb546S)~<7Sa8FIsxj%{ags#*6S3C}+Z({nns&@Y++V>TCg=%5wNZLs;P`eSuK% zz1so2gYEpmR`WMJ?4Qq&5Kg3)SOv1H@Kamp>^f$P<+jx9XXqpXWg>jdE;0{_kr_PjpZaNN^=>P3uOd_$Zw?$K_H;Q*jSn=Nl zvnrZb7QoqRw1!6%^_?7~T7_nJ7}j|#JhuQU?cpX8DZ}}OopM7}43y)&coLpAj}Elx zXyD_tv{3f>f>%l*{Fn*`W7?_NAK*24trX4;)#cSWMf$z&^HQOBtNU0%aO44Zz9qpF z!g+L?gtI5BubRtZJ<^B0UV!2mYE2a9L{7m7OjebQO5#S;1!gX0R1bf>O|zDqFi`C; zbV@EZRoJukqT2GNA*lG%k54|Ns>Rpp z-omb}$kRgylwEz?N7%pM-OPbSa{UiAqshSP{ncO_@(@^Q-$b^`6$41W*JoDu3Fztd zNpgq*4(B$4|G9PWII^$HZsl9jw1fUG9D&8R1aINMk@dQxeM66CSJz-t=q&Z3{dN9? z-l?uJQSI64WQa7@*1tPJ(>e8VIQ%wC_azQLlamT(EAVTXg2mFyJCm`r=ri}?z)B8e z`F+E#;pTWH+&mQY_)YR9Ecq3=uP}2XB|>)Wj8VTolamYaj zGct?i)0@eP7^P=L^yjgZ{Sz`-J`ux{QCui%R75`&%kGRAn1zDeQdW&x9g$GMj)(}a z;EaOWqKJr(TwW2}P}Wb9Al2=~T~t~fdhgYhg)#*?#lj(EvHFL87}QZ;8Y9;eX#*st zNG3rW{0=>UcK6O$m5=ztH*Y4KbGlwg9ja5`+Zi+~(qW7+TD`ic0CfW2?#oE9$^H|NwLFDD>kQ-*BSP}vZ+n04qovSRVdb6n0VhY7f! zPq!xk1tmYwv4v`^K;G(-Lc(I7{s@~^EAl*4@vdVVJXo4Fdb|efAA?;>VT24&O-tnv zSurxzFh)Y`T^-z}N3}1tSU(F5+x_eg;ekp7a-j~~+yVd)AF|MSf1)I2zD+UY-h6>I zQS-WnVhK^9x(Y-%7RcL|ea`;FX|=8+2gUAgGKh7{3zMH~qv|E!^Hq~szhKi^`x&q- zdZVlQF&jXw+~rKCR05`*i+BI4JwV~pCi*zHc=ur+HKzCEulWauf7_vhsdQ=o!%=Xg zPn*}#Bi9rxrV720ruXp2#Jk($OaJtwg2vY6sVgpU)0>%=49sjek)*<8S^g^vRebLd z7hKvK5b2(Nf^d>?50|s?w8@Iazx96p1oJQihSFaXZfE&gY%M8&k_*)+y9P>2c}*WI z>&oZm1bf^UxP>L?N@T+zcwF26dr%`gjcV1VQZlMR%^zME1jI@}Oa!LK9eMUzAfE30 z__^$TWUq6)rW3{nuTlL{(TT&4$CT`$B7Q?Hr*nH1@n#}0M4cZX#j=a2?3nfiv;dj9 zuwlHzCj*;m8SW-3r}@-l4INeUpBh^m3N*X8O)Fa@3%Kda^BQ7R`1&4R`}1qh_A}@@3%%a>`W)33kDgacb76j3wdTZog0P>{ zE6La+K0e^Cnw^iW*7gtJ+9a;oy8%*e>ug_AUl>mMuJlul?ntEftucd3W0t7uV~Vv0 z**4eDq+J^8HP!SpXX((V&1x*3I-+wiy<=q^a4L6RF&8oO={cMQnnjUq7Y=`PxwD39 z`x?z(xpyUKSQw_aOg07CY#nz%SzUFxx|F2E!24Xd&PO>iqI?fDZF^j%zKGe^r{^`1 zahn`8RhW&clIpjS{)dYqskSMoK7aFM;zb>3r8sB@*!$tIWn1r`Bm7+h%OUqfbE?1O zM}C%I7WB)#M2)|lJ4O0SGJeI9w}=^?|B{D-Uqbr$o~i}|6zLMiMWApl=2S@-1VbLV zqw%L)(uOJDDO*F)ib4F?IXSbEp%92b;OnXQcb$;@y(ci(K}5{ zXCGhlifRw(UT_Fol~%bJyK>RNSY@lc|1F;t*m|J8<1`je-}OulLF-v_wN%?fw$gpK zrCxFR^JX~99toDp+l+@WRASYsa-S0Rw9>8oWDBg~yE0b)D(BdIW>QTZH4kS{#fdxo z&0N+=6ce9YM|P`A;*^=F&8eFPT?Q}DTK|-@?hN<(6VkQq^QWnTU2aTV7p7=I?6&;w zW96U7bhm51EDSx1>O~3TT)QhIEG&n>(=8@Oyg>{a19kft%fmoJ-H| zgvmtx%=Rlp=PsJcbpwCfVeOtt#GMy_l3a)Ce(#7Ofv=fNZbT#6*XYLwnN?1-M8anh zs&;)2ofV1(+A`t0!8jT6+y0UHgEYm!{5_0tuGSiE@zNtT+e!c6ZBBY}>^v^8Q7hw~^FwP^4}MX|&L-Z6WG(#U4ZyNJ2l1gP z;>Ar(W|6+;GyZ%|yx&W8D*Vmawd|CFb-1Pi2>}QxBIb+vNF1Qy? z+NvDn><^6`3defF+*Hoh$L>^mY)P1t-sP-)Q6Z>BciLo_le4lT#{flcG0s0NOB()YbZw+b z(i)zJ%>q;(pQL}PnO%64_;%380q3wDn4@g3`@8q0cynFv6KKevAuYEUd)XMKB z4VVPIu$})iK_k{Lv8%E4#r6_EZbUuW_3ZL);{DWV$L2ZgnTJ{q1V}qOlQ_!P?6*(v zzPPIxG(UshBS@|R1DUEJ6DJp;@(W{<$V`uWJfL#hc0vEqW0bk=XbM>}-rX$;fh+m_ zD0N8?+ZvN58;VMc)gMuh$M_X-i!bvyCurfL&hK&ZU+C!Lrt>65{c#7C^J+k~hgM%N z_!%>eht9}x^0&T^suWumdhE`O_XqmQlNY2-l(X0sDWe7!v{{l_@jRADv?MrHVWA|-Bc<1hFst&xnF)J1dKhoEmK(9fBk zTyE311A7=+Q81oR_)72o*Yy2EM`v@^RvmgSKACqgtsP_KyY8|EzTz)c|+Xii4l|!!6N3S**RlR3N)8`I$ z{XrKsKb(anaj5#yfd-v%l)6q?z>kp1 z*pcq4%@Tw%q!yy&q_JEq87GOyk_}!kkz$=dTJ*oK$wdFAEA-WibR<=se5(bNI;AI5 zU_Bb0`ECdmk&D)MJ>5@`^3FWvEwt(Si)(~!GP#FGYzH|@(SYe(xf zdK)?Cpu653YoR%@_B&MCpD3%>bApViYnau?lugPyJc^8c&+dn_;=2Eo{mxgdCa1Yo zS-O8CnY{m;_xoI?<8Lshl~CXH%9SUOPXs|^)EGwsCS$F=$FOvYB)63I5}WccEL^AZ#NHrm)pPkDuJV)59w8=q0xOW0nAb^lviasP}e=3G?}Zqq~1dpDTSaroSZ zRjXlf#9XYRdHMMBhY`E-0 zC2RQBomDcqx4PF@waGKlGlI1V+7N9z$y|wd;FH84_W;BnzThV^=4P}9iY@+hFmwpH zXyR7)*ZCc$3uZgZu=QMxv5A{A*W=zoJ9$f8IHl>iuRNRn^_cDiVLecb_`C%mc6)ih zx6e~EsdVrT!cs=w!mha}OaqoB4!Sqj_4knKjeb?RSenwJxG)P@|0 zru!S-tO@_E^1@=F%~3&BAN);!1dFG&Dk1l0?3%}^T+X&CugE}tznN6_V&XO6ZUF$c z9=>QG7f+n3gW*b`>v&FcX3$0|eR%U8hRQj>9=ilHPvy)lNfzI@m=R%<@L|+*di<&X z%KOBtTFu&Qqdnt&*(o$9dtQbtZeeUC9p7NrsF1B(#cDXFm!k};!wLyf&Mp&3a*#vb zeNV<2!ulXa*`Kq}vmrl=q?!l2SU|d)dZ~85F8d35dAGAec>u-APe+mvvt^Mo$i`YU@gAT^ z4L5IB5LRZhsBfJ<|9y@A9fc&>{0e%Sc{JCztt+q7#jNrL^8r z)vFr!^c9_Ut-ez7i8Mf^-zy)N&02>|@p*=JZcd{y_83-WyBdO;JXz(3F;9##7Arp_ zNOCL*i$5yxT)@f6DCxHDED5o~1Z)a9f87CIwo(CP z5Qyb2hK(_k;gKhPgiXL!#fN<5XwCp17xy5_o)&&((v04 zP4sLsvlTN%F4|LAR7KxrwAuY6a=%{0&3NG=FM3CiAAuaL`9DJZq<;uH|bX zP_(`I9euc~9tO<~pZs%{_UkyZ1iKSPcpavSgCFd#t2nj7d(9D&KB_JfyB?r7r%I_v ztFUlL1b0dK^}#;xk-(A;A^rZbkQ#1#|NL;+6_2fmO@-F?F;=6p2#J;%E)dq}DE5%{n+rT!qRst~wqcD2hUq64jmJi}4)SRAGBkfa>_r7Pir*eW*} z{unE&bH1BLSWSO0;4!Z+IgII;ruimp{v35k+b$YcJ3ph7)TR{G`Vo)0_|tb)_1HxJ zKx-=c?ezJOYI5&=GLg#(kUkdB`p1hWP-%A%6V5D!^@C5TAcAn|mYY=NDa4G(I|R$> z4JPX})m|HrLhqjdqi2&nhk0N516pMlKPA(TM8p74mcPG?%NjExI|ep-4>~n^dgNS9 zuWUvjzdT&=!9AgT>{z8o_90~L-g8XQ!^ps%;HmU0R60?6V=3FkR+`e>FplUt)OJEd zqN0j#SZsFHgsGnniP%m2nVw!rn1cB!LpAl@AVJE+BB69*hU6>N7$1-eewbBShou+f zx=O0)r|twlY!)JS{`?(7a<iM4^ey7 zrlYEU-*o~mFwFnLOtLAy669#JuY8g~)YEwjm;b@dxp(>igs?6?G0X6r6_7X0~aet$nQ*Ye>8de7hOYlM~qQ|Xe~pp^OS_k+hMPFw6OVB#at4>b{L7{+}fbq`3iRtj;) z<57fhWD#`ZvVT9kIHTTc3S=0EZy=oJjziq`Rhh=N;g1IH8jg4Y^pdi0(5JMb%l<{j zNSf31Msj)hlAl>%aGZsnc3swzIEO9)GZPHbd3}xdnJW2zWc;z8cR+<OoN3opjnmGTmNV$bcr}b{zhO3yP~s75Y%uc~s@ouA$P`R}GlWm&fi5ygcYw67kB9-N$V& ztSo~-y4_w0gOr!i?Yg=HFvi|8Z7G9U7>_J0BCM2B-#*jxj)L-fVa0@jlS2F3# zr;g|~jnpGPJzcV3j>>&zJ7$i@{OkdsFh|@?RhNj;Ve2(@Wojy5S{b8^^r+0YrBu_< zyarI{tb7QOHIvK0*ugC7p7Iux?^k;4^w@WG8ZMq!|AP_J_nF7%0iv8GRbaB{y+d6% ze0k*a89|YyJqIu^8?|4%P!~z|O@f5|aQ>G@LUF#AX8Q0dinWpbx%?r{Bix>f3a0AA7|$Cw*r3ENN2mrUoI zrWK}T(*g|yu~dw+@zMGTS)zrDWc4ulcRSo0M$?1bQhBs#*k(`2pp|v%N%UZyO{eUK zE%f0vwo5qtW9!8UI6R%ndCP^Mv2OkYgdpC?J+yQi53B+9m;?B(6vFrrK6&Tl4dt@>x!wT{iq zKDvKhW|L(AM8j32LU~G9ZqI#zlFwHrVbiDS7njr9McYqcsj2#62)A0Xum(`Kb(RAq zRD1lz-@0kP=c`QgzKJU6C0N~D;=yF|8pcGgDfBxqx1x4PP4+eSDs z=>YakwXMEEwYS}0t&`~Z^y2Nd1h4*Rtt(d@v~{#TaB2hb{^Nv=TYUQI@mg-q<@*do zBSsdK)kyq?=giU48u@g$7jP=8Z~S$IYKuhL4_8CW)@o}|PFwv6k0f*Iv^17%3jg5W z*3rEFF`h(C7g_HU87aBSC*qn2mWx!d>R>9XQV;esc-M{O`DOXb?_tTrg;zD^el*F= zwW<24%Y2M7Kfd8*f}Ep?H3bH^=A^Mmh~soKH{vvMWOl?7zUX2bmGjSK5v(xR){J{a zRaa|nf`GGR`}ULYJU_{ZTq9_GC>y!hsxH-%w+WOgh}-1 z^!Or}!K0oUX+!TjBIylW(pja(;qwRO#DLW1Wt~>CCa}67W6|e?#rQ&tt2;{CLx0EH z4OqqP{f8~e9#pZAi6UMN%$MBsh;0+|>8*D+|>VyHDZQRPQP^IX{-wErF z%N{U4x3_Hv=*n0E*(sxYH%b*lqvs34X^(Lw{cF+-kR#tlCz827st+EYqi=uXX@bXk zrn8V;nFc7@4ww2a`J>aoa2r2Iwi5N{#H;1k8X8rWwQ$oC(Tt;AE9u{Ey>-w*{}lW| zPZ#H(Bj3>Zo8OE^3ND~s67&aD#zRAkN^Sc*#>4o6&af1&%sIxm*0$EKzg zF(P$^LgRZ@JIXvf>m8fZO4PQP3ZD>}ufRRB!{e<}i}c~hy(Tvg#L>ky>MDbuDbY1p z5!T7m4@bq-aWOI;ViF6+5VoPNKvKwO;>w==Abr{PUURw$~cH!GLRRyOyd>ZcbAd(R=h2z(if?H{OIOCnM_OyTi<;n z5Rb98j#4FWw`a1~WCj$`lT-KBfz^$3^Nu8Qc$2MeXLzJy&4RfsmTR0K^ZhF2D5P_B zo(49Z=`hJX+%?6VR-^ksQccq^ec^U$HM>yGxr%-%)FV9` zvHV1Aks-tziG)Fit755i@9H6wFq2>8Qb-Q+!?t-k=m~pQ{++4N4Bo8Kl&b#C>*iKJ z6L&r1a^5&!pO9Pto$2ESKapzcF&IN@PM!k!@c28`+kt4i**gwMgt}8JvFVHdYDNMk zIqgu-+$g^Fqe9kY6(=_mFkpCi1ch#t4Z;M(nxO8rcotRuysp~=$yc_ zj=4z(*Z=&`w0OqY9%3N>Fj%=CB3Pq05O4QQ3)Nm=`12m7b1`2zeRv@+GF0e90pU2b%7@3%ik45L zH!$VL>H5tNpdDl0*?H%1@>KM2rs_LYOzsBYYho<`;(XhccvRVo9+aRwufxZ?IKZweAVseqk@vg*3L@g2%!0^k}MT zfSWN*?*&?LygvODJ>;6n2Q$Vlqm7%RFg@$bT-iEh_qZ=Jgt?`nK%~m!9?A zV^CD*l{^;o=&>tL|?81k8r(4VYv-1AUP6CY|I z?lleV4oQkv1?cLy{C&@TZejful%TfzLt{aV4oep`X`Tc&F6Yx*UfbWmDgRt^s)PiT z4%kCw=lafkw!g#fT<6NIEGi}J?S=L9`LjDO(2FkCmSSd-V?`KjAQ^HMoEM8aKf(G* zh-7xprit%BVXSGKv7uZL76G<9gc|Gx=PaCB`ACmh1R@5bdQ^q?g2a@>#lsu7Di!>H z7N%5;vO(UT?Y-m(K1uybGFNr}3J04j(bn(o4}*NBprPWG;^KFOy!2#KJrH`U(V{4|ij-vj)r>9EW_gdApxUYHhxKjf z;;@a0B)R_Qw~(wHCpt_2Ie>90$DtFeZ9U|J*UcUn+$S*2lHJk?mfi~lm1_oqC}!y< z@TKUl?A^%4#XJ3~s7JTPakKAcU1!%wPs&g;l*(eMq1T%25o zj$ggMiu9Xg0@)~E;A5kG&yS43%nHK`=&IXw5-I=YFfsR)&F&%mU+(cOnfLj|Wh^8z ze>eQnVG<)5K1vx5b5CihD4B&ydJ8K7gBS&fP&U8>my@7)r!GYtQ>W{#=>K@&r5f38 ze&zz9Or8~(u|PVlann4i@;5YamCsHx@|nI<@+Od76Oo`Ci#h~h+lZi22eBRFs8-(Ake7F#sF7|aH5YWA@feU@^T{A>LkD@QJ>sMe?9ewetd9HaP z&V1R3IK)*#3=+!Zt`p)>1n5no3nGXsILzYP2FfLB8dh-_t$ zKL$9GWq5FYQAH!9PC7^Zhk$OUFxJ&5{>FN9FK#4e>bow><}zzttra{(7uhx+LcIA7 z@)F`CVN(?zO0{aZMP&SiffWuMjA2{6!U`(;t$iDyu@@&>N}QDp##A!3*O{zVVDjW- zT2hi$^}d0D(aB9pCBrpj&?b>;lCD$ZzsWP!%v0g@TZ9(*f~0sDhdaD{J%B*D1bc>J z^_I&>YS*5AiM(s(jN~+Q2U^-lX2!Etf@14VJ$FB68rzPWYILu6aBcgkD9YuREz zXmuOh70AnjtiQ8M`Piv3*NE9y7SJ=)M{*$02_|ksq8H9z?8TX%(FZg2^KtSeq z=7nm4{Wg{SFpu#B#g{|(KK(F6`|_s_&8k6fp{Dqzr>ei?_Hk!bE5R}^Qz71=q(P^V zC273B1M!S&tD){XS?77eMoeMXeb9%N_ALRqY1X+8A>?M>&b;W5tsZ088sKw`QypB!HmK&>bU}XUTI#vYFbTA3_Y(` zZW-+zls-vvM}KO()ziKt(W7K8Tx%q!Z1%z4F}z`gQwf3gVM4%1RFV;E7k}5Ll+&8=S3TFqpQ`P^K)6tymG4U(q^~@cmmiQ_+lMJk6 zGL7l@U~DG7+8yn8x9p!~1znyF-D6}^}k4gTCnYG|yM_KQ{Iou{@a zn1ax|WYF(Fe$UC@oj(#HqUS%~CjGzdNJi#LjQiAn5GqwQPIC54A+X<1(hvVbs98lgN>(&jS+S?P_ph(NBTK!ueP$`(V8Ct8&KY zi1QL_m>Kt!V3g18BZ0Vgjg7wRs*Nl;T;WS|2+|86f97!a;G&NMQ%jWBR9w5aUtX=A{5R8iyGy$a?_x?P%v97YITwNE%AFzJ&mO$3=h_VH0W?2>21meL7QZ69f6k@ z=L=7gm@`5JG11{nVH)w#-J?#KFRRuiDagztHjC&^WL%QP=tGK=SXOQrLHInql}(1Q z^^1pv1Na!$hukAIa=W-Fvc}0e@}9| zHOuHk#OvJT1cq1X=%$I}`trI}0{1@H6R@l1Pt`oCdmr#{FBCa=`po7|g%1Cwexod_LDCBP(mViT z=tE%&`V`Z?3B)w4Jx5V|G8R{RcD&+e?6`8_8Y1NF=_=B%vLO$Fr=_yE(T50hy1omXpj0w!aW}#tX(^L`ozX zX9Vu?0_t{QL7~tsz{W8;cdLZ9UXCFDcJP)F#G@VE*ARK!?%apuAB;^MNLs z;oPHb9ySs?Y9h!dbMwww5qZ(|r@enS7vpLPVlY$^=2%X~iaJ=@$mJc-XLj?TtnmNa^tN|ylu5-w;ohg#T%l}|g^YT1Loe$S z@MNWVpCaOdT~bM8-1Gd4=iBuLe=V`_+F%eJ2gcIZ5qapz^Tq1ik)GLyG>@|z$nB>m z1t2Qv*0xim++sgPPPx}N57|_efw137Bu^wF`MSj$fv7plQFQ?lxJ2Glj#9{r@T#DG z^huxLETaF~rHe+=SXEbt+8>+XTiEZE>D{*DDKY4meGa6V^ZKNSr_58_B?+Av64m*c ze+Q&+Yld#!TZpJw*NrpCEyb?ct!~1u8@^_jOX7z+0_t}uy&EOzYr3P}&gW|jv9w`*r9#^g46Qc_CM_~=${1ddiTpL#XmYjAt{ibXk2rXtaSyh@b0ks;RT>J30 z_N8qf-VV;LeIW?N`6c$X!SU3?xRtAktX6UUGhbgpe3EaJP`59565*}hGYt( z8lc~?DjI5jU6_4`V;-c`^e4BTB?d0GIq?}0x$R59PGHBMM)F{XZZo1U4)g7jF-B%w z*S_fDFr(v(Ao?Rt%3*gPsq9eC!HlalS(7v48}!K+M}oa{?(tcqRD&M)O7Kko-0KenrxQH!=eOdKK}umArE^ zZjYw0kK(Z8_TmS4gIZi!pk`q&gmKNvK?&@ZB?4Y=twBrHU3z$om|0wN24}1n)Xx^l zkGIvDNQY_P3UX6Hty{BQkx52w&nrOgD9kJCd!Y2~8fYmdR{H_{Zh~QPCk&Szr%W$2 z0bM=hjcb2Z0EeQF%0c9=+C%q{RK>Q@ByL}fBF|9wlPiB?9#N6jERVJIHR0Mk%9Gjp1mRlzBSp@e+To$c-mlW z5A}W(;qUhL;xpdgW!jJE1&?UBUwIe0KyDV{aL?|$G(-h|N>hlqH^V0=opUB8^EmSd~+bFLG9{(i9tHlVLg_!bJOyV<^!Ec)`o9<>{*vSo0IfrW!F$?gO*msd&2w!k_EvbE6CW?;CQmi8g? zgLwUONIzV^YG+RIetL__wW?#;JQ}5 zy@+R|6+ZXi)3er4Aq{)GHrnymC=zhbIuS}EC=noVqFhox#?es>39QTgoxw=ZH2w#3rAOf{e0g= zg_@6bk9l+evNuk-ngGq)cI|F}eIL7IXSe+=A-_kQ0!&-6GKLg49DPp6@_Z_gq6T~V zf$lwy@M`jSa&MI$Zr{b;Zakx>%Mgdi36*{2D1I{bLX!Kj<|Ew+B&CP^aSZX|pA5Uj zZe!(EYy}nz3KClvGV(97eW3JmcMnTKL{-uNuQXuPOf6^!0Os z^xgQVlTdc{%tY!1Sj}VICCx(6V7Y%vj8lJ!=|AZkLIgDfV4Js&BJC+bwL_DK{;S@G zwWj}A20Vx*Ap6c~GPn@+sq|P2dA6DK;^il=p1p)@5Bnr=-^wbO`DB#!<%y6P(Yp`d z)-2HO4uFCj=u+b}P$bsLCszYS4(S9Cr_{=c;;ujm_EN}T`5fx9V)9tz8oB;-II z*sr6mh75dtdRxiEVGI-WPQUrL6=#t#0kH1Y+jKAR2LEPZ0jcV+yP$hjaB2`zM`0$% zmqi3?SkG^=hpElG_Cf-s_V#5_%E_Z5Ajfq|&n6H9R#rqoodwYHEajL>{!0<8V~?l5 zD}!}++miA)xO3VLfieD8;M%@3ahd|_Mo3y+cW08Da;Fr@u+*82jp{#`UPq^8J@U+^ zL7K1i|0zWKJ2{VCKK#$AAP0Vm?bv933lcQzFon15W4FB@e4LI^CNJH%UAFz}6 zHjM_mw23sHcNV+9&HIKJJ4Ihc?$VSbl9>m#CX(NrJ?X*oo?!*~+NJRGU)IyrKs3}d z^B`Hr(sgo(fU|uByCK~9)&||-Uk$gFE!a*&+E0a)L<)@|Ol>3>m@y^By^% zjTj}%7bGqW%_py2n{^6joyhNslzlEpoo@IUasI&g!~6gWDYc7uTg9KRWwVM3+Rowp zk=S!Rvz*vmtF4fk1g5LkU}7vDcKMpfRy1~UF@b$N?J7xp+4hS_-bdYagKb+ydZU5x zJ6lsFs}xYlHT+mj>vfph{`?H4SMqT2sd2K;QoqiCD)obIsT^kwJz=x5lXMuXPE5jY zpp!P32;XG)M);0`1?|g(93@ua&-c-+oeN=}yK;dYhRG*8D^dJJNbX(}6JdFQ;CuH` z>)DG)osKocFg*R(Ufg2k}m6t?L#s?RI4A)zN_tB2W~0|xg)XJ|LkrgM)(gshG2Hmwbec+hW6g- zCf8i5ijbO|JXJrpM8w zB^CDtmVf+%r;n1!h9!LriROh1`Mfa3OIJ){e=DS~h2h|jFf;gp{fz;9u9@M5=lH&f zn8P)J!$>q@W5%WU=1n&Gj^PjG_)aW=Cd#k`--&I0BXkPv^;j53l12w>p zYUvPW*}gW!+mP~84}dNmIZKf&9J`Z4-5`AA%_(FrU0W91GC@ElTdE_3kVwdNY`aeQ zT3-n{SIblPlEafPK0~&nu7j%u@iPS)>AMs}S47oDBg3ay;D($#1V7-~WxSkqw5W{a z#*wGxvHpFsB*yTvwXP8@ML`3SZh^xObTL1cQ=v>oN+_1c9a+9*MXkd$P!12L{k@1) z3_qT14fQP4FRvw(b@d(X;I+)d>sLW9GG4lBq=(e21}dGLX{Vg;3D#=WL*a2YavagD z0{oO3{wNvv?!B}sGl$1FhG{u;uVq*rG_?~WTD7z{)VDq#4&gG!jcEBb$TvwFj2-iG zA1Ba}1}q3;{0e733Oup1{iZ)=-;lgb@IakuV3X~CA1!P-_sVac|M$5z(k@QhuM$Zn z`*Ev$IJQ4`c*~E_TCaLEg7H&WOAtBX@^U-DIMM!ySO1@a0q1dqvX;K2-)sGr21Iev z&+bVn!|Y^;lAu*Yc({T{rE5TpHMc5#7UCVti>e_XD^I~fy`az52c(1lx@LgGYH(6E zncG<5$8LCO`tLEG;m)kHBS>gLH2yoFe+w>7WD@Uo^BL?0qS^m8n?)OFoq&tL?cGiz zV)T$VP)kgXjWZ#7%(dJ->hq&mlretw0^VLt)`zmmIY#B_D9%QUaq3v{xfNz2`7?2P%(RekJfe>=?|2FGtRf5N>olL|>v zz&*(|`k01eB?X~Ad0KcmXM0pmNT~@UjwrKDgI&3j#34#Y$m87J5v?iXZH7h5xhQc#_qG zkJ62(zXMcjhle}8$&)f%`|O!*c&pcIl_-PdBd(lCHV+xT{hp0G{dj?ngZUS8TbL<7 zc-#c>L}7%By`*{{jTAGm?jF}Y*eY%HmaqwiRO3bQ%Q5?<);>|<3!#ow^fd-47GYpl zyp2fx>|Q%NF9loO+X$?3%#=#S5UZZ>qh-5-ckrIIU01CC&=0oBSaL$|Qzdp`a5dg0 z|H4M0_~{V&J=$IJUA2h1lJX@i4@)e$^F(2l=Y@!xo5219=l_j$;3r&U4kK~^-Vp3x zAQUFX9!M9#Y}i<8m`e=uvw9J);nMSqh|5g)&TNkI2!@rnP z(oZt4P1IE?nX`NnaaN{R9)Ucva{)bhL1tPRuN#t+J^YGUVt&8mixTSxI!O#?P*}di z<_h(zzi93pUZ&P^TlYIDUS4tN;H#xxhh=5&duen@R?~3CEx7F|p+4nfdY#qWG|IBV zf!7yebt+fq|9<_oL9DALi#J4Q(`iE(WnotoUSKZDjRz^)eHZNtD;*TdDm$&?U71E$ zv^sA6Ef0JPjnG95Z@5~eD>QFbXTuv%p;%I!B;J>Uq+kXVI$(M*?XY;X1|b#eanLZM zu7|UT2wqwi;E9e6=bz{wU2>lT&_ zi-eWoBF%ezMQb|VL;!Z{m@;5YgqtVOMCU+F0hI3PAOyQ@K<2)((A-&qTb3oo6nIyfcD# zA^Gz)juQfRq9E}WG&W}_e%MZgsQVA=lPkAOjIGpXhf!|zLbQhMeL z9dad-U4Hh~!7Lqv+9_T_^2h3Vja&?FK)gIpNj_!1HhkJ;VbWl7 zaAjftq*5Hp;wu#X@bl-U$GX~sSZOzcr`1yM=)4ha7VrXsNiB6$62QvT>);lWp#!E- zfQxxt(&V{Mo72ogQo>YWY153_kF%sr)-E8$cIJt;IHFebz z_0X@ks8?axb(b~V?SYx(p{>guW-&~L9(cK4VtT(IGt}?#hfb@nk(R{wPhi7afA_u{ zk#yS(EuRuC6;&hASqdqMd>CO0%|+6B@)jlA z9lYbyy^>gRchdeOf;HOJf~Y0#BRwKh`onBC--bcvZ2&Y&L8N#kZL05J6)`L|`z4!| zXtKRP6yd`mx)_ z>ogFm`utJ17pV#6_Xnwy9cCihF!8-BkD4^~hg=bAzmg<<5XN|`?hY>V95?z})eGQ8 zgk9;(u`oO%T23qdV$GXVX4FYiKk$Ild$3-!R8qhZ7JHvsT^<*V4ZURKlg~`D(g1}I z+*Z599DvyXg#$s64F2{Qwu{Yi5r#mZ=YcK{7C8U|O||frUI7No6OkvjFhV^h)c5fh zu>Pgl1SucEU}Ob8^%9{zk9XI2+*C;ESuEFE_dJ@G+P%$|$dpjumN}-Vq8i?nVfNuz z8y!vh=p@3Dw?_?y@I6|MZrgC?l|o3I#A1@niu{o2|25Z15`CRb-0j08oVIbP9xpF% zETC}y1aql=6qewheD3yhM3g&@SY*6#A1R8#yyj!Dpe*+X1`KieSJM2pd>-gu50*NR zdo%Wl@b*K(=Wr$yZ~HtTbTOi1)R*qzJC=-kc@Rx`#14u>TkeA4O66;f6tR=S64MvcYpU9|_v zrekhN<*%B9g>Tq9tW&fFc-k0@I^VugNmE3@%-iyfngUR06{M>uzA?3y-LS6GQH8)OxuQ#F61$}(vMf%X3dV}& zkz^&O)QB~!vP`2nvozn?at%#zvwLB}fmSDW{WUnq)GL%k8^U-=aa?|XXp|kzjRDAW zoF|N*r`c&O3G!`w1Qw~>X^Y8{FKyn}w48IbxvEZL!fX!1zbTljq$m?sr*t=Nk`eEW zIAs~&QtyQm!MJI;%1x_=f7Y3IYtjkIAcTM0&BN6s{6F0oA{QIuiBQ(`V5gPC7z>{T zQHfnt7e_mWBB0p=9-w*)3Uv@a<3wc2mtIow?m{!L0r_&8kl3bE`mO3;g1@$!f^50& zQXn>Z$O9$EoV@Mln~d)jTPG3nu%vmM=@T3#GPtl4PSa8*!*Ss?Wp7wH%V8T6MF&cX zFw(B7=pb9))o4iB`7BzXXb_lg)M*hh)sbC}XMFCV;{>uFSnJ&k|H^zsITyArB$<@f zMlhWEDM(R^ZMqr!T*%W7w=X1F#=i+1q}6pDy_*PP%oZ1t&pxr?0|>!w@?_bzV68eX z4xbUXWgFD4rC679<3GTy@QuY;!`jNuB3?n|-?PXSp#iUu{O@e%C&0^4{U=8BfvsT* z5_?f}i##~d3N3^yt-5oBzrL^yx%t6m@pE9`By=ej6PV>Skd1d0^%WsbCCq&c_(ds)&z4*=^QTO`Y2cq%LLT$$34z4eh+D{>#OA?Ap;9wvL0F@8v?J% z;RwfPlc7FW>>eJ5d)!u-?A&CKZ(eJ-VLm)xXbiE9*lvGgKEM`cXBLN-pktht-vB~S z+a%sVn&R;ZW34BI@!!|Q)DfGr$uJ~r+UHH0Va{A`>HFOO;YCZ1JHt62!CC(|tlKTq z-xz&+xutK+!^6_QSxswBIEaw^$G~R4Xfb>TZ&@XA&%^R8z1;+(hg=DoD zb@Ijp;v4(AF?d5l!}m~A|KVb#o&5I5i$rA8%s!J%4*cbx)8v5kI%|qg?NDC7W>16F zI-Z*eAVxxsa7>{QTJmppkxT( zA&{5$m|A1%I{3e^zBkmj{yPO?PdirugTdslDjTXk4zH3V|N3M2>HnqU$v zT@cF5ODbUjf$x2#ZAhxup()U5MK&Qp8%HEP0lgW0vFiv}zQw4ofg#Lg4y3aU5sP+%%V-=HSEIZ`ENGkzJyi9jGDt-05@sRy6ijSy{EXP3 z9bm*ue-~`YAX|hO0&MU$!3%=f^QRo~l>1gaMN&oW z<{x3b%&D;8Gj1jy(jhar8dTnBQY^({LSMEh*GQA563jiGYiz+4E8`Y|q^9l0=ijUR zrrr|S>H^AY`cdZ_Tdj?%gZgbD&@Zy!SC5HM>gPf>(nPm*A@cUsJ`&XSw!e-bg&dpl zLR_tRmHY#{%u4yrhDzP^fI{R>!*=J7_>LIncVY-4%NZ;$B7V}ACx%SVl^%ie#MSM< zaZkgXU1w{AZYd_0_kIPKsoHIb+}P?j5pQ_1xbGCH>tKTtrWf-Jz1b{w$8i|NmNm-Z zGv4WRl_Tn(g|$qAnfF3=t=^JKNJ<8#cplNbD`pzDPlIjZl+W+?qpEe1!qQNm){#w4 zxFMrq*qFAuU^yhopIw9}Y?_i1%cSlQ(|5W|lfP3bHl&2r4^sskT+7L5a6x?K)4JVe z_pI0)p$IbITr9BA;0MEj;+6_|^+Hbmn!-qlnkVo`Nl9ug( zu&Fs{C)t;N<|y&b5$gdT74t?NxlB^@QY2SJ|FNE6RD?rw|3TM(;}MyaD&c~DaS-hK zc_!DL)R1yYQm`M|hz!wWQFWOIZ=2V2=pbIY8M|=#&kkrZebdcrBHTKEXu`aI{&*)i z=k+;Ukhd&6XZoE`T;2oVEp@L1fDUn-4!BG zWxaGs+;T&!C@jTuPed#2Rav~es1l~d&;W1(`(=rB7cCF)P)dDFOX z&q{v`Yr_beQli9M;oMlKCBF+BnpHAu=F48(^X( zLHc#>wc#zXSmTPx391oq3PV`Zw(FUAdE;dL4!n&&QdN$~w!YenxFF|upF|Y4pQZpY zobquOxz(0qCb-Erd+~-##40UP3ROv)2%qfo?yOLv)AGA zV02j8T2adM9M4XW?~d2scf?qHtcL!a&xx1>Ut2U?>QQ>bEelGGEK3BZL}Xmk#jBr& zxD!_odH9^mn5Z5GbDCJjH*NSo2wU(dH#XXIoVHrWH96ezRG`i2ib?niEXUOG-x6;K#UN%r^) z5V#YNIRPsl)c78R#8j4fJrQy{T1WO4R2M)nHE-b$Z2mCtIgqf30rWpEWN7eT-C5PR z-aXn?p{qdhX-~X$$h;Tp%B_1s1c}Fpk?pCs`Ke4GkW-~YB|=V9uv!6<$*OT1Ah%-o z08%A$%0(tVnHg9P;BCiw z-lMstzhmu=<;`SJzD_vK{39IE7Y&!(r3&?#anjigB>ccVbp^;e>$!bYeU-p;r)vtE zmC)Cfh=4kJ$}XNKN}L0U#nkNcdjPn2qgI9JD(QS3o)Plo7qG&3wszJg7N!hFV4S#WgeYAQ`0`~1m5sk@~9avJ&Zk8UR(^rP0#2U zMQmX(MR>+@TlO!qWBi znX?-1sRX=?yB6DB556rf?14%BkqoHjvrO|P5+DjMy6Ffj?K5UC31#l6`t#i>?z9Jz zaLz2Tah+pysuGNSeEEMxy5*q*SXDHPB457I`vsVghlt%Wi6-9JEK=0<2RC5%<0-a@ z)H97=sVulHTq!)lExYazyBG7e->`~OGPEK~g2h7o&*_I<-yaZ#r(BV9r~hhm#wdk0 z%a0PVtW>?1mvM)_PfM&HRaHe82}!gf&?6wi(qkzn_)0~%-iXx6|M!!;aTg=anCPmov@eW*UbIed<%rZvM}`N}FlKZwRzc4T#p`Yp z(uzl(+sHfzbA3_CCl>c^UWlYdhcf|$sg03RWGi&3fk{y6FOfpY{bgqp&X)xqb`z4uXekFLf6h<97HapbX-4!D&E02+u#aEl zWG4+3BxR993lD9@cMKTiSPV#o#@vU9^9A!4?&8!RQ->c)7P|ixgr#i+k##-Rox^i0 zUSW|dwFSiXqWm%J9lYm#H0ih!v83PY+3Q_-7sigMabLb-6Lz97s8C36(DbfHbnUIn zEAbh{o!ibK+q4%)<|4XJpFb6E_&Q@-1(K$pdksanvweO0aMVy2Ye(eR%O;AAg1umx zD^1$BFo8W|{h#edxZdV^W0EtRyC%Sp7S>QgcwE+Xwr(!t1N9WR)`kz0Qbnni#Rp2h zI%VBT6WkUhw`{hM!~bjKV{wf*UK*`Rq=}N*)xO{8&ETIN4Zq@Eb6|u5wkOtZd$>B6 zQ|8LC7ST<-B$tXQmy0+C=%cgWH?DAmbLG91FG17eyljt6UUsTkjPmF0Ig- zzXNx0tO}O4A2FMU@I=Q;Ba}=pGVFu*s5AFazBY@~9K|lZ2Y+uB%f2+7wdI8IKMz-| zRgZ#)y5Q59qb!AT%Wz6vhN(>6&7rGe<7NbYQYHH#E}^gyS=YR-J)U zZP5JsA6`DThB5}{X$4-DMTaNKgJL0G?*GWfhjEAiZW%8Ai6;tBmaZbV|A!j*k z6t87A^jpHM$RYoA)OaN&+ntdmvu);q9F$_KeFlNoQDb%`H!sTsPQBc`o90s4Dv4*d z&GNJyZmOYN>~0X3+{!ku5nH5hxOr|5%PKb978lIbB;V zkta+MLJ1jU%Ymt9o}mIn#Cv$uV?--z{tma%dp<$#L~IK! zw-P}GnJaPDqFVq&%ShSxeLG%$#eVQ{$aK*c2aqBiJ6XKpIxbkH3}H;idfv@kMKI3& z0&S0T?I6CU)~h2MkPKno=;IFvUz%Qk$og_sB;NMjo75Lbx~^*KzkqqE8TAh$ZN-ww zcshUJ&m!r#=aBid@t?yKObK@f?ot;tt(mQSCysxvz5{>h z!K%mfn~E?Iv_sv$8E%d=uT8bDsu6n@zq5R4A6F6&%g$a~ICq{?>>(T?Dm#Vph!f^J zqZ7v1EKN49Alqd82{!2U9!rQ#lsNTKwXvK^? z&JkJ1M?!OHsbI?n%R7r9G>rMm=Cy_pz2+eEORjdE&1NDfm-=V;EN{XUhzhaNgr(LL z9iJMZX`sOfrrrFl=8VT<3M5>jRIvLQEnDhIaEi!u{lyw?`Z4;vB!1f0Vnax{`6-;k zWckD+F^_?HHA3;BgytRE_7aQ*TkW?6@zUV@;miSeMp1s@c_br(jrT0X_FI*;NMXQ& zqx}Q~v(I72w>MW0o(G)bsNB1__V0^lIpv|3Rle+`Ay{8s){&4a?)^CH)60FYN`AP@ zol%SKjl)?5#rZBaE4#}SjR*mgeFeEwvGhnlxf065x%iI7nRXyN2dy+GMqw~5b@uvI_k@fN3>l$ws=(pv;-$a27TykarieHLZx@!MXVqRa{Wn$}z+YV$c ztML=56S3D5OVdGl`WE(mICkrPp9y)}_*!zy4|jmmmjCkVMtn!3<}xIcCoFk23Ez=l zb083(CfGk@P$e4wn@Caca$hGy0QWSTH|V`?eEJ3 z70OC$=F~Tr$m)#isqhlIQe)CeIA!`1;`pM-gcPSlT?5zKAy(gn;Nh>YKMA)USwTlz zT%$}IyiotHHg+|MP16gD$-oL-zS`gXH5~m5Y<*$FBjUvw|DW;l zgj^YL7UwivYR3_`_N@yMMJqc2VES9(rK{wUV#*(HNb7R-ivfx3YdD4!gO}kuq8$Y6 zr}>#}SCJtPiD`?Ukqy?(zW7<9)$u=@8BXm>djMCZ{%|`@1wN6Ebo(qdXSoMkv^w1!$(8jI6XkvDGL!Kei@pF+`!LzKBxxjTM|!Yub8t^ z9G_{PBQQL$tj;X?oMJQTB1<@?2w5Kmwmz_BN~;o#oR@9hWt2C?7#0bRjJ+6EYO-u4 zjL$2?iW}UkMNW??#72+rxAuvF9HsM(`%5Kr)o7^~oP8`SoM7x@0G!d;oJe)GBqhn| z*_;!~+U|jzaA}WR)z^NM98S=bJH%L?8R3pGg%r;W#TfsJ6w{Q<#i3Yzi7C?MaYs=R zHcxX{k~LhhJ!ru65s`;2eon(yW3ep^JL&K$Juq~WJYH3%E+!GvrCSagCEO1kk%mJi zt=Ho&(G2x?47*{-6hyjhu(kNPw-?FcupI%7D;4uG|8(s&g89YoA0V>{>ua~(CUeWH zstCrb&LRjjp2*j*wFwvEe3nCKQMl(4lgLh+k`Y`w7B;8_1M}36vG+@be-o_o-KLRC zZ`KC-X&DmDhTh}qZ!vrM1~K7pcU(urUb?CVD%vfRE^(OK>m=+3L9&8@2(2kEMV2K< zyp#I}vN+`2@&(P66WH~iWBc?8y9m5f+An|}S_Pep$*tN5R=gY+CftAy$=spD$9KPF-y@Y|?xow{z-`!1HxvgWZ;8$c!zS?E{TZsBi0SLMcfZ?1(U!MV{3E@9q}Ux>h6*^a&vElEY12$p~R~3QtnA)XtFH@+;ZT+kxRbw>&v%(S6Lxa zexrJik9l|7Y!aHhI<*r~-KPr%$({=6oBY5)#X^kQeR&In5*oUA2f^5IVKp@JxE4i0 zAI)CO`z`Tp)fgT5{o8<2B(LModydSB*irq-K27h@J3xm!Wq?M&1jU)NKnIGdeTl+i zs=gbRmMqXL9jQXR>Frs2QG7Z!I9L6S-LS-2)kd)14Nt{cmv_GuBAZ3u8iuzX>ev#( zBJVj<5J!VuxKx`(tQi{Ah_kA?=u3F|xOESPwIl?WFKFx@*QKU5=!D!n+d| z#;QtCip@D(l!eG2+i)lntUJ4`6~JHQ+dX)BoA)2+6yEOX+9!yY3+NdEx=42VHpfPs zzX;187lDBCaLs4;ZeqaO8@Ca;q16N!m({o49_VKn^j)i+5bGw$&rMtPV#5+~{H0K= z)EH%s602@Gp>5pL?qWA|gSSt3!fa1?;^VrD=Bs8ob)`aEq3$nSdPgJ$2Vwlt67E)I zxMshkBFJa@SY3em3z6}t1oJOY41|MfEt|<`(=34PDf&HmOliFkhR^hbhmEhOF&4bD zvMHz7Y*+fUM`%vpqb6D}%BRqT4xew1|Of6iExzN{03Q)0vP^C zy}bYI7G`@)e4xPqAIdN(TsBQ$oFO*`NVtz5do7WTQEn-;X96q*@l+LcXYd_oTMOf0 zV(E~!a0rI=dK#V|w(kSZjNNO3^f)W+c$y2(Cy%y;uvF7?4Twr%ukAz9o7bn-u^X1# z1NP$?$M`c7$$--@nnSLdx~D>fd+C)PZ+pD2SdC}ob@5S1d6Lc*L8!8q$k`2J^{-*? zWdEo-B4P512$C|I_f6OYi9>;LsaVI z%->1wb<%>=8Q33zU8{-V(N_axZ&LG)GJ*0mk1-k1ZMM-g-qzD=dyPz@E58hWjq($hf$FU1HBP4&4{Im z1b6x?8!_7aPf4IF+@#n2Xl9zt;q6Jf=N#Gt`+31XwckdYnQ2r6MusMTvj0+YibSc8Z`J%5d&!Pc+xp<}IT= zpt*ag=T6ZA()R6++4?*26?2b#Cmjb6+7eeN8Y!1#`enNQ^=KX-n^CN$P41CIuskRF`ot%s$Q79 zB5q3JV4nIvOm3U>AK~LN)gf6Lw(8Wiy+TUr_=(0FR#oXwl3Sm7s?^&tXHMNLAw8Ow z(uh2}`4w2O?6;jMRO6VAt~|}zK4UNWuDDx^HxMh+qk|u3?j8CGb1=JMm}EL1kym#; z>IvEYO2KJ3a#qzlvb5MI$o+QY#gqd?;FgC@&Eeb9kgLn=vvBYp*QniF6=Nga1gHG3 z>}m({crW-c)JYiS%+gpUDb*jEr=)!6uo#45#oB0(Qy*ilil7WmuYE)s-~5`)@=(p( z7QNU)LT-3)$P6ysRpWjNZ4IJ5L6U|xD+DU=6C%4 z)w&P^b93*x=RD8n5hQ$46W|fW_@41m~sF)qNO1w59_eNB2?IBIz9M+BXA&lzZfR}&+N}?)e~w3of!gW{fbn6 z(toM}`pKOnQjURyaOo0(8{+1~u0<~<9*??2gsOUmw&5**Va;(z)49c-&%YoCEQ0e0 zqw=P5dTzbPsG#_K{TnpM!bbY`;@x}qmb0|ze&8UVpq(A=JwUH9Fb#xLfo;6sR)@-q zD~ciY<3`6D{P_2>QBOA^ucxLtcxrp3N-NFryK1sSucoECOpIq3FzxP&W61Nt!9GY~ z{$iCcK{ZIcyg5DVw*3gcr(M|dx;HlHD*rr3H-JW6bgU;j&tcW2m;VDZ2zi4Q-r}&? z<*(~z63Igesd}8qAGEH=yN+NL37mCkY*Irt%*#Ucw;*sN$8kwIZ&FtYJ4G87zIhUF zy57I1Dfr}dNQTHBl9LCsUH}4m?%th7yvkAT&~rViL~S2)=e|FLw;aWi2A}9*V#y?# z8as@0T@=>nbg3R;$ei!;9hWgb-E;81dcG`xx4ZWqc4l`fFvekH#9aAG zmeMpazg?{SILGFunSM!dxXZkD0K$_a)rdB2VH}~yf6o%j7A~_k6X|E#8E#k)Hej(o z@g1*S$e8<^wv!KRibhG&M6td}{jD{`qkD*k^2o=OZOsWz`GZ1y^9jVKQ)D)CR4|{i za2?yp?aL7(Vg8S?A?FU@Bn>+lg(TinVE)7`bn-*5n$1Jv#FP$~>nvy^>(f|ngO8wd zD6ndpO~%Yf;5q!)5KVf1$n>zR2(zav1~#cMZ18e(14I-!~C&)ei$=P!{ti)xl}~_R-(q*ObrdgXEfHaK{3q!1p&{ zJGw0%s^Aje=;*~z0CrQSglLQ-=MA2EJ7LUea&!<8^%gI9LDKXrd~ZUHIGht!glVIy zCctpB!C`4a`` zxl>YDtm8!JIf@3S@~2U3xDWob>%eV1_1iyXk0B3XE8U2Qn^V!3&;%3^%B*!h=gRTbC)qE++W9GXybxLfqWlUOEsK|GRN9O zlAo)`KOU86kpzdB{pWIib<6{$$$z9*q{3DHg0xTF7T3tIYJ6bTCqpQoT(#al;_LY^ z5%E#p5Oj&9GzQvtQp{Z(h^?lX9gM>z=C)#k=D~r0t|jU*0|I5nQGFnLW>%!r3LA{l zy6#w~Kp0P$qHHu_*fu4N+9^q2#|#nXq_voLw!vGNmaJ0&e=J2W7IPldt-(- z3H}g$#q^&}M;Yjt6;F-7-Wv(te*{X8;h*}Zb3D8i%mMP*Ey!mGP2Xi}CaC$(%)^Ad z(l24r1T_Bo3uyS|P6+&hQ?<;N;!t^FdCvzL025cr615>5%5~Ozjv1NFbQo0Dj&Du6fJmH>oroq7}nIXn{ z0i&d^e;k24{@PK96ElNmuOZ|y*p`()g=(}ZRh&#O-|)3FuWDgz3=4YwoAH}1>(`0-Ji@mad4&X9uwPhBw!nw$ zY);ViQodNpnCAXEU(c`)BP{12Zq%!KjmFC@Gc;k$<;w-a&KCHQ4D{dc6G}fd5o?Ow z@V(`wA^{ziz@)=X+f}05o%VVFTX!;OT8K-m(x|r|dh2 zmKRi6$%l-x18+SZ^QsK*`WK7q_iB@G#}40nuoDfH7F80+-Nk#4VETKyfw9YpQEjz|3E8)a6}KTQOt1ZlP}N~W9kpA~*oJd3W&J%U zeH)&N|B&*OET2-b+AkxOrz~QDMdM7rco$w}58vX&>s0!&uP?4pL0K{1o{7pv_UnnH zRBd15l;khiR>$fgGZ`G(84nSh#lG+-yPHQIb4p_S2CSS`&eaFo2s)L${v;9lW$y~e zp!VNgqXn7R6X!D?=vvpXb%l7(B>gNo9(E7Yjop93*ORq4pe4bNJK2;#=KFfKa02HB z(b2)TnF#46YObR>&-gV%k8v}UB;gO*=-E4AQBA;=u?|Umc4wL2LpvpQd65FsE*r&H zhbx6Lb1yA3jOK@g(+>aQg-ts1a$Dyz5w}R~gS=}<3r*!q4A~LsbuQ%JBe(SRY5JNe zyySm2s@XqfQCXiLeX-X;NzzONT4c2^9r&=MH;|PoG`?etLa_{TiJXZdI?6rR!B>)$ z*%g!L>v=rDW|)9&&`qr&{gu{wCs(34;SzR2Ga|g#K}8tz=m@!+^tfzm7l(w~+l9+rV^`mOd41?!$SXiTC`2O6QiB3L&#shaS;#G;cB* z^MA}ef~r&06L?_-_9Wot7vS}NdHC^gI5kasax_Sf_YKw&bWZsQAT0;6x{33>(PYL3 zjN0i(Za1iu*tv_nQqJ6ERt2W{uNHV)7EqYlI6c4dvPs|amt!DA-3h!ExhW^GfNBLDx;UuSbc>?Xp_d>%KA#R-Z&E!@K73$uo2Z z+^}zU&hLC7>^u{sJwReEm)XD)hW^f&X>vgpRZG5dxXh-&4vMeJ4(bY{DkVqLwy;)vqTVI z6|!`AV{et_Agx9j}@F4 zY(>5L%Put5w zAl?(7?jtwvJp-5)Ge*~!@a3NDCnymeRALHa0{w<_0t2fn-Z4^T+;QXHkXYbAB&Ax zn|h5~6vDJc?!cD)s=2%kXH6T*s?8>oBsg!-IL<5#S>$jSHzMi{bI)p7?WT-iG5eez zGL@ivg0$!XDi?an5+{r|KJ~?PViy^ecC+1x5Wh1I8?-QwRT~8f$0>oi60*g4hOdQW zSVOKwH6>$>ucyaiTYJ0u%OTTLT4C~`M*_9c{Pd*!`$kw38V!@D@&&_&re4DRM(PhA zPpa9yj*JxPvZCaR`KGnvlSUs~^7mpT%O!(1H`FYYo-yt~{KRuM1yw>1wRcYA%fH1s ztk!~P^Jn>DLt)zcz2eUQ@{AEOvEdAF%5tOXtRUn{o?EE-jiKWqO^jXNGq~XRd$Y=UBm@J+CuY!dBJTgdugVLSnFCpkYL&t=!EH0288PsM313srNfCxKnh9SWHAN#MKlFl^cn^^l z3&E0BcL11K^iU?9L7oRiWr5oDkzE={c90KrSI}?k7h%Ox+yTb!_>c%X`9| zH~qM40sF}++k|_}J$O#{))CB_3_us%xBKzpjm}-%o&~iM2`6<0qkqEjI56vCKPQ!) z+5D6|(0q0d49}JCTqWWcV&C4UkD%Rsx4Jk)<3dL+?vYMh*h?_QjNu==YKf5FhZiPe zb&f-Gn{92pzfb58VN%f*4-ApQ0$8B zjWFaG2L=SjPiz8Ni`t9=T9)%&P5G`S%9v=6Hb3hSs5i6=EiGlGY7dJqJ3}i`g#@PV zYiAfS0HzsDbFW1DLf}ls3Tzg;n2Q247gU#p2e2j?{4r#6xx`8FG@}$)qI5cP9A$GD z-td{}biSD%%IN!Q4Wsypt7rwEiE3n&5puSeWRt@Vb(ce6EZJ#}TorI-rb8&d5O6hP zeWNfW*9xVy?iXY=Mw+6@ZNm(uo<1b#oDQ8X8{<2s>rZ1vV^lmV@Znrzgn=Cddz9fF z%;IWvixYVHosm4}GJz&_syMJ~i|HhVI#UCRPF3^W5qU0u>|>XIH$;>2=_;E`7U8sh z-iJAPx-x(Tm3zezOq`;+pDftFD-SA=$p%Fbl5x(Ph)|N<{}r#Z->62BC2jUjA#1j z^<5kfWnzCRG$Q8w2K7=p)>nP%cLnP`Pd0=g9B>bCu&?5#d^sLD?CBSzNBnw<(2DI- z337}#8z`v`JA{rDf3j+rh~I);K410`@}1QP2+?UKY7lRIM^ddN($AKwCbd}DFC05g zmJ&&Sbm-6FEfv_v@qfFNyHAQ(V-R+lIf)l;#)h5U>yh`liw=U>bixL*xS5m{Hb(9I z{IBrVtJ`+90Yy@cV^gGNE{mi4AZLyUx4 zkejWZWl)J-NiKn`r=6jlzUt9K&dCDzJaK72rUL3_3D=`DFe0hJ#=x}=tM-3*tibq` z5tTb0FK|c1?>{^5uU4&g0ax z;X1zT8+4xz3_BSZc7-3jw0^pwQl#+^>zrPJ-D7PwVf=UMarw>^-%%c6O9pERXEdgL zme_{Unsf_r!kcfo4%KpAg_z(<*|&F+=-h;}10P{%1$iC-pBa-cK-*c?8+U-yvxg0s zm!9C4)GHzst+}2@bQ-Xm!|q1pQFyBcq^YGo{RbfgNq6E*7Rsrp_aZ{g4=V0}Pi0I~ z$Tj8Gi2;_C-g%;r5x!Y*Gb%vx#182Y3vFKZ}%(e2c zM%CQ-Rw|P9v(f{x6erp^t@~;l#^WBzO*|zTaO|H5Kn!Ib|1W%dbK+o=UAm-UJ+O+c z5ujKJ!#-Kw1om=vp_e$2_m9rfJ5?`K)O-ztSH)L- zqF@u_J4$QdE5AiFKS81pDqfmJ@n?n7I=(Twk;KY$dvKNk1GUb{X@-4ilWQXs$Za}u zTrZR&p)?0VJ{%fjpSco6$(IrCRZ8W@1|(cZL`3M{-LRK08Xz*0pi2*VGU`;@h*vr>{4 z!0;YUo1TV#0^eI~-A~@~>}&{;W)bHY4-;DS#43ePb|@ zCube|0Vih2DL47kmTlKSws`b+NOlU)KelqZu42*s<#&BOutFptXQ3LT`PAlcH zZ-^B(Mx<~a5ybB_j@l4VRgFNYnDFgE_{$+kARpk}&+2e~t?)c3kmtH@GcKWVGaYH* z_-hruSXh#5x&2wQuSbR@LhYi1!p;i0T7gO_U=~}S4NA;?$9t#wf~4fl@g(<@Wrt6k5%9CxQD`}W?y#LBr3+t zjEF;V+GR6CM2Pxzo_g#~_Y8z!6HIr$3aa|R#lUi3{f9DAx-ODC-TB6MbYZKX_H$FQ zqsey^3udl_e6lcM_4G~#ZC;8VbF@R)uSTm2t!33lbE;=%N3(bzXz^$KefDHotk)Bs5^ zlF$)|-<*a;HmdF*>q~NgQ?l^qy0<#j#QIQ36R^LE#e4QYs(r-K&cT=yw*P>OHKP>o zs=$s6EJ{a1I$aH(jIdL8zG+8eMNn_k>Vy5kK$CJY@8hY|udiqhD-nC+_18``(df1i zyaYrq zINEZYu?Tw};{&3gn$6D%#NQ7TKk!*?cu;RbQwne1k)E8=I#+j~RP3~hLLRulzn=LK z#aIJZf7C|WYpix(Pb^O6obO-s+iB)koxWBqO_Zh!65VD%WUwOT3z1jzDK}0G&;_;# zDNA5ZxA~4Lnu=Uc6;Y;WfC!H;_FQp%RD{ayTrV^()cY5&p{YRjVhS({b2Aj)krG24 zZ^dU+IK?!J&2_7U+%*E#jUd?RkwU^X2wXYVaXyT>?;IJ>*X(wB3lbK=ioh1@!N@?n z1H+bBB6Z?`qP1{V6>2bMP*VqK!Os{zRcvwD1G^TP!xZAqq9AM!6g+d6mEqWLChvrh zyz-*R|_ zmEc5fUJOGds%H0xteFp?vaDah6A9vXQ-9`tlylmBnFujmNs&L0jbb=Iqj7PS=Tx0o z`0kV)%C(AK@E+WHIEYtS?FKvO;!S;fI91zfqrpLuh}jy4lhCNVYs+Cg-!@F)9`$)& zzk%ZJUK6a2MKCyJcylF6j&5Q*!)J_&12+luQd4OKKK*Y`8$n6RKlh3(zB>2?L1rYL ziXdbQUkn;JJqKPkDhS3s821n-Hd%Lt!0yviHcU{2Vf-_4zbL1lpl|QrvV|ZU9yFA} zflDFS+fuR5(6uFK{Mx($PDT|LscSlo{Ei>UBNFbtpS(gjYUsi!)l*+KJEKX%m#)N4 zIfg-@IbWEtQzTt$F6=k_%a3uy(Yg*id2xCpsVr&4Ho$7mxb%ktqvpFAmmwHTv^^6we_LA$yJ z)?TZ{VH*r$g}=v*7pw2O16nr@_L3ywViZn)f%34;<`fwsoPPe@YiYC4ovE)kv2<1B z*dcnzJk=JZdL$r+Xj8Ux2Y5t-oOz<)P&z`9+#yJOWrKHCRP2J5Vj%p>8B6`b-qTEO zH%G*eGXLx#gKe&~2o>896qs^`f|A~f{ZIx6&#Rqz_X+89tZ7xnOSCkow1v|e6_jt0 z%6OqU2iv;BDaqAyPay|37cYm};Z8ZX=Y!7%&*2`M>%?}_Qd-&!iTC3o+Q^);3@0HU zz;3=n@X@%szC;|3wmDOOyo+pox&|U1VQU8eS&if$()Y-UwO6eik0i&hafB)jJ6rax z6Go-~);o6rB>F{twHTOxPxW|JI^)peCG5^sdmt90{ruFf&(njtClJmGEc;w-JQ~0C zNe73QxM~~~LEO;n>;J{8N;>rh>5eJ9 z*NuE~O;Wc7gvxzozw-=d)9oxVC-tx~Zv%*!%tQTnNzafYif3F>F>&0_CkU9ZHyFI1 zL1$GIGM*ad(^+PiMyHKM5vKimy@WeK0B8<3q;i8|*^-AEV-o%`lGjJ_ck$gL`ZCkn zL5I*#-uaEt*&%SvwwlLUeMdd4Xg7WCa=AWl54=)o)#T+}Bn)NPaL46kz+Ca^EK6Gn z)SQfl6>Ehq4P{*EvTUc|NCGXYdLbE5xEs6N->(sI&qT)i3Jj|uO27e+UAw>+yK)vP zvE#XnfV`?N7E3g*Z8pmwJs|8{=wH=^?Dd*=Xqd@wr_AFW0{1p|p25R8ks7blp9~87 zTde#EZHu;8m?1KbdUg>ff|@&Wh)x1?+1&Ruv-Dz#YnTy+{3UZu_Dmjw)ziBMJKqIM ziRO<-bJX{f#?@Rzn7Dr!&zxgM6FIBfpNy^JWJF=9tgxzZS(tVPL|rcGr^I+>`meWB z$Th2bT;$$7^`4sVr}yrwuU1=x)yr2_DSx`$q`0+dO!V(|!4NJGbQ}#*{Swjj*_SIPs?S|5gOD zJM4)q?>@NWyZXQ(UTY`f!!UmRK_Ju0U2EEGT!hLeEGN<&4|tYXcsSl~xW=ioh$8?K2I}OkbF6{tw@` z3QU{n3zox5M$)-CsJIHe*h!1~j^=e18T-{b;q0lRCON&jhh2wmQZZ<^0z;(?!oR+N|VvO;0*Z z*Jvw@Op#k*>nB%jb#K76eVE%3epGW$b{!`=w+;PFB;9t04icg6>M8|1Il*x+Jay3o zdk2TuXR59x=&1irAL7Z6d*nC@lS{+p&oKpUx`Rd^bHCzxY`DubOby??G++`dhG#i2 z@)h~@`DIC@vmp)PVHlQBx2#RR6We+JZuZrY|8o#z-b>2$RLH` z*NPbgO3WJ2kpX4+3Zm19z4?Ux8JdBJzN>(a=aF)431V+A@4!=2*D{qvXvJzPltPxg zf<8hz1G8tx^T%L9-G zk^Q-8iWc#d;b(Q66wgHK*b37r>(^v(-HqE~7rGy$9qU@!D}juynqyXzSo#Tu5Q5w8 z%`6EuPYLBE7{gtNuMv;vgXY%JLa0Baf2tnxjHgAWn>Lq3-fu=$-_hE+fve-;n9$w~ zKmC1G}%+!)s)>@taB_Y2iP;FwsU$p?xH)`y3A_ z<&N{~2=YqQV-R1Q$%ws4B>nH^70?4I9M2$O$%Rp~bDe0EyXG{<1X1_eQzK775D2)%>0(FA?w*`8hGghN}QdOv=;W(Yid3YDISe~2-bT>xaYSfQ=? zFJs!w2@_!b&dR^hRQ>5S+{^>+eGlO>w_(tY$&=TaP zqvDhKGBc`gSFf>kZU`(qgY`G}4VcGR%sVU^Kk;$(b0kRD4KgCbRB}oGsdMlNspjd+ z#3;Adm9O#5xAD{J90JRhGI3BwRUj)jVD1N{LiI5R=|6b5*4LA_z~*0M>JX$&BL&c? z96VM#EP<9G78FK>xfUyWjZBqyJUYf5- zBL@(a_o^KW<*P7#(2d$~6xL4n;5}1UeW-!K!#w*kj>o-@lSlEEo0#og!;heuKm66T z`2(`-bcBf#VhLH|&*mgfavs)tu=+Lf z>1s9+&Q{Fjv%Ln5@748?0pw3J;8kUqZ>d|AB>Nw;1v47 z#`2~=9F{CA8R8%%yeXgDj&d{b^OJrOl<|pxyVH-iUkkgyrSwm$!NMgA)crVQlbCnZ zN2L$iAR=VHwpuKg7%Ym>O%lbv>IkS_by0>`Xau>Tr0J^RnWG!w(KGJgo{g}F8Sg0k zdAgH<+68>{sl(mx&+hCP)Ob;fAlAkxX;NUx%+lgw|DvsBfnCwg$)R07{CL9XVGCOQ z2u&VUvXP=0vAmu)r9}z#b%f!Hv7`ok#gnnCxni+%W?JljZn?O>;uia<>}Z1R+$4mN^{GJ&_UJj-GuB` zjpbK@jxpQqc3n@;j=tU{8~ud$lt z5Z1zq`?U!5q_yvVo9OlcBcz+K`Qqz8L#XaC8{ve_Bz*8Yl(RmUA?WUZ#CZ_?(AIQO zIaSx>yuhvc?ZgWOk;IrkJ50nA*cU&>kL9OtWqeTCCz^?z)J<3|OiL>r%5F$|)Sav6 zq@G8pjhj*;9>z=jE=Cy3&_t>hj=-i&K|@Dx>vio^&6NOddS)4XnB?(X)S; z8a9k=3s{;KPJUC&>r>TZO|cfeuP1Ah$dzD~C>9L`Je<%$dAMoXcT}cWuRkqLN^qg} zsLmY%%@lYnpYW~(;j8IQq53xmdn3hot5XFK*_|ii44UAg%MEoTTYRt$sTjT+$tre&c)k1 z?ZSk=tU+NW<*53nG13h1i^?|z>JCxE&f1{WOJNdU8(0`%+BgJd4R0MIFl|xN!BrFU zetaV4>U^=|Ywt;9$u8PKki6ri`nT<~$DPg40toM-jiw1`sbMCj=pX#Ma~8KGIlNkD z5?CE#4cpe?o?vY^UITaH|G9+mU&9+~{HoUqRtlf`I=n~o^l}RU*1MlhnO>pQUa{|! zE6U#KlPc3?c>ttQFZGUnn{PDoqX^trSPWB6f|zIcm2Ii~J`7?kE;PE>@G&GZyV5@c z=<0zvC&{6OYkR@iVA=@*OrI|8{F&nsR^1MX83;Sl+xMlWfPtHHQQ|hxs80}W{RwX^ z`pouFbqH(jS^EKEeG^^7$^6ah2R1>!yx1YawUwB=IeY^kyZQy()@MWQkKkR%l#0v2 zU1|7g-AUHJcxJdGng^^f>~8PHL3st%L@y{I&X1_l}#hHlSf_IOZt~g>;DPiSL1CiZtD(L)1ZIq1Q-#(ZRwaVn^%Tr z$m;cat?wA^ZE%F@!;D=^QwdHjjjTfAJ*5=|6}JrmglHhV!Xpd%NHbP zP4-NA2b@>3V^*4sGP2yA!}NB6~y<+EQD_OZh!yOTKuGoq3L*7)2qZDJxq~1;jEqYA7!Alb3|DNKPv6x2> z9v79O&ll>h67nyw>p}Zl6}xVX6>xe$o!QUH?0Tfv;8m5+83&nB*<>dlUr*XV(9g5Z z=JT9UJPY}K2ds)-$#2l?yD4+xRbjUr3XX>%#L`WKZYHj73VYfbxh|j^s%_%>t9P`9Eb~I8Ftzmu{NmEkTV|+N;hgf5A;S>27Ui=wCej7{e z3waEBSgOyy6-{nOfS$jFNe&+L0qVhr=}Ye+kK&`3agPtI_8pv_r!@^?JZ#C7VD5G_ zYVVQdFfYqFIS89f;>!`Zv`?QGspDur#WIK+o5CR;OA}Uh1u6_H@jHpw?j>HJ3mYq5 zLaIM{bd~5##j2|e2N8r4J@OsRZgJQ`v`ONGebj`SBPI`|Fkf*6W>kb|W#*gP6j;7c z^ScZQ)ApN9Nk>m`yCqNhd`G2Bg+neW3QQ6bMXVwyd0${kZd<*O`$Gm3|S11sttRm5X;7rvQ|5ldV0duqR+m!@8P4)>hw9-NlST z45`+FL@lCxM^_zWtS<6`^1(BS`g;*y9tL)sfdJOSD21O(XdJd#O5J90!Z%D{v4{a9 z5U9z?*@&UV?n(p1&ZO^}2+0BS4{dl31xeN3apbb%#}Nc`bWU6Z5&tb_Qsln@V0>R$ zT?$%Jp9B|~V_m0dACuND*ZlW_9Tj4zQul#FlTATI`+SoA&$bwt1!%0Hg zf)Q@V-vFOX-$6c1qd`Y3!@8?WzC&!MzMqIs!*<*B9%$EjH$Y`FcI`jONyR86Bj^K< z9pAz3&>;AMllj6N6;05IA#rvhZM6|AtR_8-^*12dntIglMw4{w3h*AkA1;)u0 z7$Ni8m^@-&JY6cwBiD^XE_ zt8?=Os+I7pn*G-t%sv*SX4C3#z07}>1{G@=x36caMx?J6$7f@ko^Y#9)^ zGG)G=>}@VvKv6(GKYj-M!xR~Av^);rT{tRItiR?vcFoJQd_yFxIR73W_t7U}#5<|i zsq5KhjxL~3>kJIy@ykT2t1u`1R=WsrN z;^YlpoSvrYU#rOUCInXX^fxE3;~6qcsd?`_SRI~iT^Eb8pB%o=@%a5n-8u4!<#sLJ zBe@j!4#Ca9&aD6AdvxGT@l0U+vGrc!tj)^a{2^5V_OhQ^2p{z80jD7sG5qxV9FODc znY(ap9<=qnol@4<&en%RGe(w_wl>vuMLha}PXIaNRa;%sB7#ZUA+=DD`$Off!Pucxz zL}vXBLieJ}6>EtQlu4EuTzx>929uMoru38j!aB2(E7S#t8 z&v5`#CwwO;Vn(l?JtUM$$sV`+A_Niy>Qp)}!&khOVfjMm$CJln2wkC$W%bL2XrL|6j@#7O%6$L zxpKlRyIJ8D#$Of7j|rXU;f3_RSOzP73Ufn{_~F~KJFG|)e_r6?4M7JOq&lsxK3f3$ zf3EhRhjr$6xT8YCJ`^ThQ&<}Uu)8!NO@dc&82?wyEnFf1p$+&)i>|rNjpIdMqSbpN}CqB~;tQpGaS(8P3SAAHN3)?DV*-Ry^Yz7IiY@FOBjk^!FMt z_r;4><$l;k)9em7#V&QQFQM=1WeEi8BK{P?Fja@yUnp5&oBUhqG5hu+FO;vZnS^J6 zFy+LoUGh?lCc*nU{@N{uQ^;V<4cBWl`lCX&Di}MKpY$bSc@V#HdIsXg`r^dF_cs;4 zjUDco)7JZT^>jkICfTpaaN8`OGDm{DB3)@sVmIAO2d7AfkWg`%gxO9W1Ei#IznU`Y z7luYKuljSaGc6$O8D^^Oy)5diOJk2jsLPSq-9fo6R>rMah#YSJrY23djSMWBu+ucb z<}zo4>nB8AoxluR=j8iGv=v-oL44G|$F z%wv&sfpTnIy-Af@G?ClD<`ah;uX!v>ZsEjZ^G7VmIbFX|0BdH;yApX73!aRYg z!98LaCrrHSwo*+xeVN)Mrq96j%UP+8P`dr=>q%h5%gjg816i}h#ucsz?o2*fR&Q_Q zJB2BUR)@&FCiB0E2P;s+18)Suh6dDx^M#`ZUv6 z>Hlg5r)Q8|M&K+hCO)bQS8Sg*VR@l^8?R+Q5l>;;qw3egN*ccPcUritDr$T^L}`&t zv2bUj9xCz7&+XMfbGR}|x)$$AHCUh-o_YGCg#>lwx zDbBMzockTd@?f!GW9reYT#pW~)`LEY-+%fLA>WNPWKzZ`_ac{B;uf~M16Oy_VB%Y7 z=;f=*;By?oT`A)7aBKrG)+m<_ z!5FHC7A7nnqC{@6b17nF=4vX0P&Pj^!EkCCA9x=oDy{w<^A)(vKOPjSFT#Ns_PsPz zIp)~9;G!8Y4eJDC#uA;_QdV8eotpud$hm(Ovlgg#iv{VwxZI}6;1BaL_{008bk+K@ zDD#J~8!_0bbyPh1YzXWMP8C)y$O}YY-W{enL~!}VCcK0-^?46oT+R&hQT)AEc0!h> zx#YrI59lVn#*-&vF&E3?!ogCiR!|5)rGJ#xd!jK(Z$RC!Nc_Maw;KnO&k^zhCIwYdZb+8L5=kQAM&Xk@-NiF2=s$luTF7cuFKCG5!9y$IQ(V2~Ty_ zuf$SP#!`AE_48$)W^#-1@(9oFBwN$d5uXT`Pj2Aq5D==DzkT8%A1QPF z+4;0fC|$`9-cTTrN5XR+6m#dppPJY%r240v9 zVwwsF!yMk1ks50+n2@i$K$Ef61e9HWP@QiH@pfZ?OC^N=5eH|Si;yeCnsf{L|9H!0 zGN}J(pL!hP7WFvj1~Ux{HUke@^RK=}^)7sY2^`8Y*N;}d^CJAJU+vRtIaGio&IL@wbuD}6>&1QS`>`cfb-L54$=OZ#Z zJTH6A=Mb*TLDvaNUtm4Pmxc8$B9TY$Pt!PINmx?StxYJi&)$Zo4%YsrBDgKsglcsV z8XZ$xOXk}S&Lbd>=H$q>iLl}9Y64n+o1G$`l~iBGTYRxL&k>bkwQa)tGc->tVQ0HF z@N@`xb5lia&{yhx)I`W)_wCmap*giL&ua$FQS!|^Q~j=us)<-IJJu!7!4!=LETEC9 zn%(w)h<&PoN2nHKTQrZQ$lvPH<8#k4qu4Jr?q2w27SLaH0Uf01-2|a z7xh+v^QEXi0_EsAO&nsvx-HOANlVBvs@&LV$%P)o8V;FF&^qI`(d3ruXO*0it4E){ zh8K=|j`-=saut!ZY+LvXiXcTZ&-!l~4I zG~ABJvq*=B-Nmw_tAwb6ehCFj*C17)(qUVvhb?H_k~Afr@e+HDex8H8rfMkA$&{&q zwzIiuMIk|+vE4XEgdXl^dLdW-?8HrYG9*=eVM{}vgMwyG=Hr8}4wF6%EGXI8qklp| z(wBSmrG)%ftoi7S^$5!y5BIifn55zKyZ%KUbBLr&MdB^oWADL>rBeVRt||F!J%Lh0 z`!xjl4)x;+Ugs0|;bW}AFckcu%tHET>%(y(Qy)hG`Dy*+0YY}TxevTMvmTZu5=krG zJM%l<`deGmZBB7@MIyIkMHdr7gnk?|cuX}N!$dJHU`uQGn@Bo(XT>=J{pvnVNuzlo z^Ynu-PN^$ASHVsB;y^_>dUq_lkX(`*cMfk|_IvCuQcxPoAyj&7B)HW?y~_vjlKDjM3xeM9SLAt4>&+j+QwZjV zTlgMn%#_w@_F&wErJwjc4E_So=$N9wpJ^UuAL6h&FiynOL?o1)Zc6*JVd8vyA-Sw- zJ*m2b9a{F;0>G25o6MB(6)h1D5BkCg+x4wg*krC(X2Eb0=fOG zUBO0RGhX{wJ=Zr`RGYBxT$gf@$2Zko1ikuqK04{x z_i69GNQ+cKNnDOuWa*Zh7o0FRQ=HEF4nNn$-K|l}r-uF+w zgA(b();rK(3i{)j~)wU^iKj@Pi811K)-Cj2-|c zbg=hXJabRSQxm6Z&CY5ir}bZ%i6~i12ncUb43K^kq)fo`*7{G%LMOe?s*$*73b!BEl*i<#^Qx`ulyr zg}A&Qc!3w39pDb{JKe`geiwVk=S&Qm$Vw?CT)iTe9h&Ti2KSNk)Z$<8lIut2nDLU6 zj&eYo3+%%n)%qBVT-Nx$Cg&8O`TzUdMGe6fVk?T3Ghh&v+f>_(B5xxrhZr;KJWY_l z;`lW(^7-Hsyf6a$sW?)MJRip~1X=LP-USchp5es;GTxotq$#P7BV@wu2^OC8DUbf! zdT=RuZbREq@~4$KjbwH0%iG~h>8IN+5QddlL#%!;nsL`F{wCbOBwRN zaiduE96P$bZ3!C3)7If0JD$JgV|ZWqtrnkac*Ikmy8XdI-apd_DtlgiIQeyR`;UHM z$9Pn(^UDPC%20I~Iko6~2l{lx{hCzAS4WU^%q`GX&%<_mRsXEOPEMGwkWa#%>l$j2 zf1<-iB=u)}`9Ank%~h4znr(x}IK+#bYG@Bg`**%1q}f=~quY^)LZ2#d?R=~;VK+yy zzHh?yS`F*j3BuTd#saZkvJp2ChD}&S?XyRkkDGqiOuMn&KiLnvTz08mKHX0X_Qb+5 zgA?(RD8i_R$iSDS6Up0`?9~L7(01tzA#T*%l1tt|HOIVELMe_+ zrh0~)bIcRO^M`a(0X~tQw0xM;rNKo@VlQ~Mx*GIS>yoiZ&@UWTKNzwkhXv~QG7D47Mx4#D0P|$;Za?YNHeZYZro8Cw@ z>8bC&A#49Q3f$xKSk99_nvnS4GzRE8Z=lBu%n)&1-fw7KamrY7wftBrL0*WN^8-Ft zxQ-`%yuP-&I_qs}EX{0>M}Bjj!t$APAbK6it+5Y~%b3z9cvZ1UdxCIo#!enNa#4}s z@HUe--;acYF{0v>nEbxxRt*t4RBi`X-MWDZM-KB7__^eG$vGQAUHGW~2ZF3RRvt#g zH)7VLlLc@Ml0IQhXc_}tCNi-({xt`H@|PJ-<_CKQn+Wa&tag7>FY@d&*$GHL zZXW;Oo+-|JSrbs_P-!r6XZlin4LlTiDnD1%DGxgz3 z1%BFKwznf}ESn%jPtJJ}hL5q>zMK){gT;vnc{Xf$yX_j}S5}-w zVm>xI&N5-wDr{%Tc|rYK5bKrwE;P9tFRtlVX1yMmq+RLJ;OMR`Z6()V_%&P;ZcQTZ zI|o1zAi~`ByA~mzOG{=GR8&Gjjp`JJp8Yckd8{?uC;9ck!*7{5?>*1?7LDpDjgxMH zfww*EXq?=Fd7EbMC%5RCdF1GsI|oVXJ&_%KKbq}9gi25E0$#zdreakYw(%MD51QnD zW+PV>_T2#+QvU5W@@)N_ctR0-$9oF7?3sES$0H>EK?NuI3ihV?Ssr3_AA3T`&RwJ* zX>yy1v1~|@R>E#0W_B0AV&Cw_Opt@zi~k|_)h5^F+5IfaDsc-M`{6HnbZWR0c9UdQzSsY7OC}xfJ zJ_M1d2A^95b@s;3kpy{A0l{g`7;O0AFog<-{xp-}zwIk0V9urODEoiRy$f_xW!67@ zPSQ(Auh?=?3Qc=LlO}0eT7*(cQ@jD{h&on4(*||C3@E5079q(KTQ9X>>)?wrkesKq zBZLH!4vbLJB&WiRVo~bryjX;!>6B4Q0tv#Dv`J3Rw}XGid3|TT?_J+o-&!B6#ltyy za&q=_-Ot{?{o6gTN9b07DM#~gry^TBll-3TSq=*E!V$bdQ*+#?AwSm#Gf=Xo@m5G@ z{I?LLIbMP&NUQVN8?E?-XWnnea>nikR?|TD0WaeFWmfF|dxM8UcSX6G_yg@eeG zTiFzBTk`!cuSVJ5TR` zh7A0HYt|ktsDBch3TNkaP2z4X!}p_>b8tS02oJ0O-0+o@# z17-xDd4DHrW`9#h`OaPUUCa>yiAPrXIGXy_XU8aXuVo+~Y`tggEy~-diEHC}obiWV zNc`{%d*lqInH{|J1%7qnp6htqRqq#6^}DG{54NUd$1X*9q*$Xpe%mR^NdZ~#$x`hU za-wEe1vWo>^*&hJ0`{R(ki+}?9iJ_u4=f)yj*y2^4xZKCOIq_v`%y~xV%v=7Uw?CI z2>cR~ECV#sX*R(ti*gN&7^zdxMWQQX=cpRPu6y&2 z&msTVF=JRn9{Gi-9zPiIZw3=(Mj*Wj5yzVRGwy76uJKduCmvvOn==blZuJ)hvtB;8 zobt%XM)zy)(IV%0e8xP$P24XvFI+4K)m>o~HBdG3 z-of0(bF-2+79mlbi&D;EGJMT3t`(E-baIZ#1VOw`khQhMt=X|qbhIUHzLwybg{_z7 zsDYF4Z|ALAQWy~$+sk5CqSiy}g4u8zQgsk86#~{aGc3q2wi7*C{v<9GYR!%fM0vz} zQuuK1Hr^!o@OS=QHnNu2_Z4XKv7xqAi(lh2@DV{73#6eAo`TLH*lf3@6gHTI0erPLPosS>l;A(t= zwZm`j-LlAsc)ZN!Kn~LN@ficB04!}1vikW&3v!ZRCCULi0?B~*#!E3adVmqOT9pM}>7e2Vq z&Opt5!Mzcjo%$b@I`Yz_hXT;Ky!5QZTk(W}y?WkRNzyzRVaPVGmrfrTHIihh<&+r_ z_F=nm5{cv2HsK_u)d8hAeLs1JZl0Z8=kSU;W?T6ejM%<+_Xquz_ z&&lwuvm>SO|3D;ag6{mhm+?QOCP@~(3(e1jW5&g#Ro@ECj#oAt;3q$|@;gy7!^Dj> zyh}{KzU;0vvhL9Xzow^hRm@zgm4+XQ2V)T^&INXThEgrwaT6JbmLSQzlq?HGP`?}8 zGfu0H`0&G{E+1Y(Y;9Msg10rK+lo-q6_)p5OL@!Ll)N1vb$mj&*g|B0Y)_Q_h zTuq2dXA-TV@6PcdHz_U&qQ?8l zh+h9bDqR=9igAFuu3o0uRq7a~7hDn=?B@MZ4VHLd54rI*o6_fZd;ll8yvhjgRpVCtyNq)k+m# zEr@(JVW}nJ#H2`OGCN4jgM|PULP4>&C1!?K2i0HK0@dBwukKgF?ZB{Eagcsr? zPV}F+3f1~f+S2exdzp(UxwX}&*7Css#N+pA`$%(#aJAM=Zm+xdBgAiWT&ur3lr`;q z>D%;u&7ARblJkc`c(Q$uABIVeu(gvO?6+e#C9{GCLw|O`4L#o&9(g>bGUlmolbMnm zV-*nnFx!+Lb}tNvT}q$eDVk)*oa9QLBrm00m&{74N$*{W_DFw9Q9mgRIe5a}$!roK zGw}v}xlsr%H3hB#lwUmtC-r;H zm3t9yB6iWJBm;`h#PYT|}GB?n4XSX**y{CR?Q4bLi$!y^$pM zs37>59GjF6K~OuaE(k{Em|`0B+U=**S^R$z`-7dG!?a5mPeqSlDu(f)*f7k(atM2~R>k#0Y_Dvt;INgYwv|k~q(YD!_!R z(B`b%SrQj=8ZVFa+~GM5d}*Y^v3?7@i9O^$2*uHB{tH?q+2h|5L`2h-GD=-SUa-a8 zF!8;`j=1(7k|6phkV*0R7p;ib6So@~GBV=d3AaQeJt0KgRn~{A50r%{pY&{Rh{~Ho zcAq$YNxPW$&PQ)voTEnM&W`RD`jg-|<&l$?(6Jz$bHt3<1rTjDQ>r0T4x`ln6g8>e zQ^fKW^_gCYCrvvmzTd|w7R~Z`%}7!s2qW+9V;+T@413w2PnLfx#}2{_0PM;bP&bNv zLn@9dF;0)Y?y2w*K8}Ogqh;hKA?uv6GS~euhZK2~WF`@2g(#-d6n004~ls*chY zhm}G_Ru*g?l6`K_=_L#o$8&tw0zju3ViumHS@#jlt&Z6#BpEt9LgiJFijIMM5fQp& zkGi@*U*M0@J+`=5Q|xbxQksIab4QJzkVA3DDE(kfkjkqj&oFL1y)14uB?r<=aJ-^- zT)iDuj>=NQR-gjMIS>gh_wb92d8W#+_vyyi;vq8vX{N@c-si*KMIfLQh*AqA)uP&Q zxq5nWUSWx|Na9RYs%6IG660joLSK5LT%G33Q>b$)@?^D7dLEQRH!nCqM_n&$0_yv~ zLH~N_Y2>%r5pk`?Z(KmOoV1J}LU!V9DmIU_TY5KZ8_D_=&(oZ|sHd z1m){D!;Td^h`aEcyuuNbWZUe~ca3K2e) zS$Z!Ze5Gz5{Cn*>Yc%jDLhrMQjC83^X^~0nlMI!zYaA4#Kd5WbIavz zraL<`-hN1v8giXh3!rBL|6Sa!t}(l2|vlzr_XG5i#ID00G1x0aoL!Vv~Lq`^0mX ziSL{3n#b0zg#Av#wt5u}1-`ITP@jopY9ay4;pB*92Q{Vwor25q+g(^&Gui=>1eXHW zz*=pn>L}BekflS`y|7$mSqlmLCpWW`o@b3xs-oeVdC(kN52|2wvd4j@Q_5bwijOiO z8`d)PDCH?5(@LWPP|Q@}YZyibx0gvM)8(SC1<@D-khmsL2 ze3MFI^MQ#o?Ddu!d9n9p9%9uk;gXrf&~m9Iu)hF|&z~)vwPkT@N z>##;nmqPXg> zOL>E550+;y*<>I@>Ukj2>ZTOfvd3kjCVi4)lQ>pMW|x`EOkY|BnSg2ADmunP#HA{N zQavkurxj9P@Cd7|;YvwtdF+TQKa4vEQR5KBBAGV{-L6}rNo->{V-TTO*eEA8u(~Nd z%VRH<&yx7Kxt>gkW}XlDQ^&nZ?fjDZ`Mx60QdvC#d$-r;^JoBdren{KWoBK8O1V^P zEUumh;uua4O*-NW@;N?8fBBuu9az;C8PXF0i#Y#R<^exGZm|$x8MZ{@6!UAxg;VNU zP&+zhjvX*SReM80SJ(zz?+m41h!^j3Bcv*nPN(vh1cJeWYH5K_nzg4C@k9m#bq%XkH|~Q0U2c zM4b038Mihaq5)@y=Z-c(${T5`+?lYy|8YlU5_BOU7Dn-Fk=`g}gq+<0K$X4Q z8*rIwdc@WDlA{LR6=)?!IW*+1JsBxsCBE1Nh37sX)^$ldsj*LdHXt&YOW)1;n3p&W z5HYFb#-+2>#R}hY#5N8!`obk_YFOdqNmvz(-+YCM@UjcW6dpq1UE+(M3x^fj`y{3r z01R6WN2n7rLW-2ZMKD}nuUQn!F^k&uqUP}S1$r$jC!X}=1DHDu2tx= zd?od%z>CRjU}0JE)GM8tvb>bo7ZuvflIrYII^V~Ys#6t1yhcuGl*;N0*g5JM%Gi@K zZpqFsFH^4iV*=Rt=G*NtD!;N*&`crC7BipXbb&2)lYSJOC$K4ZoaZSJ(PiP|r2U;e z3DYoPK6V!9*8^7LE9A><_RFvi?cKwapj4ODi3Rrl9+;-Vwb5;e?|uiM>P!5Qeb~h- zAHi>S_U|&Lkq()#91(^!#T2LFzWuy3w%mD0V#;F6^2+48R8FqX@FAtCmX$hdr9J|H z5v6%kD`K~@?W|;G=Aew#ge9K!Wz_=LG@sn_vci}pk4<*vj+JoJ5$luXrOP~%5=rb1 z{!MMw^a$_kGqHAJgtqSSHykaCrToxA(BXB!bhwf%taO5z_U*^&mZ6mLbTekU+}4B# zBNmV9K^=}TZ)*?`=W)0>jRW`AVuJuym&NDH1A_MqdGx(%tE{h9FsMvEPIuhzd>B5e5wXVRo@r0qzL>QQ6Ylxw= zg=DvXe;5Ac^Jmu}B5LoJ$Dak*&;~ICE{03gk9ZW4>Lrp{QiQxp%v;!(@; z3M6=H7&z`#nH*4WdMjDaqWYKF*n<@@RjF~l6HXvVgXHczbV#AqaJdNiD%7OZ1>ibv zeyo!Qyg`p2GCCHKRL|CRi1>@(5apat`l7beFb2=Fji+%9Z|fC0*4__86Jp*@qU7eb zRyEVW2N^fUhC*Q6k=wH>q4vSAx151uxP0a?-sCUTNytQ1hj z^*5y-2ZN*|j^AKv*5SKHw^_i3?6AmK30pR^dQ7e+;uD%ib{8Q^-p~V&HO+ww~QNcO9f-;7Q49Vcu=@RpGChPeR;Z zA>XTef-=r0{XO;uTGcui^IP{#7%NF(aP%0Ov@f!m(yR`bgn=XV2RCHsSkqnti_fNz zl~TV(hUAs|LA&q{nSYH)|I01RZ!hj$M5kNZDD@qXnciZT$23xPrefABjoc#jlG(AR zOJc9CYC%eMR)wk3SLK{7Q)hWMu#)=XL8W$q(jzUeSr0=2uL*}?4F8t%&5ONP&gBtQGfbJh&1wAsMs9HW4&;pTi0X8Um(s} z=qqz`y#>{;!=nCdKxWYA{?;OnJwZmFUw?REOeOageO~HKK}vla8&lE(!nsB*#n)5TMD<2i-y#v`~y+mV`wse)yS8g;&I0`lvQ0!XF1VHWg`^~uG zDz%l;+{0L{>e7Y-91u9HAV0Q854q#~E0Ez^0rlSQwOz%{RiK8e+Cvt~DIuknuC78) zExE<3ISu4dp)i~Z1bW>jl+v+og)u@73qM?rl3M_I!mc1DP2nLPb1)rNn9pISADB>SrN3+s9RSnu|<$%m--BF}auYC8Z<| zFT}CthtZq}97a{DcnJP|j)D=RX}Fr$z#oN^o9zb}l|u0E)^NRk0ALP6nHA-ibx5Zba-srv0TU`BHX>6}F zCgCwhFFrMgKF}FO>*XD{fa}@4_B`Gwx4S6cd~;a~J{olPQ>wQd7QhHm7P+LZ z?!WZBla|8jN?s_spmhS*e(K~=-lcI;w4j{Ta8l22Jc^-Lz;x(YWV$n~V3xAsu$-I9 za@_6gN;KQ^szRTFd~;1J!gKPLmZ;l@ay6`+En^kB;;^K8XZ(S%PpVx|roFQ$wm1H! z&le|HPR2AGdV#;Hdp9Q3kwj3nYccFUiq($PLG@DRqOV z5gBou#GeS;TGRlUi@py4Zv0vZqGh=!T3Zel=oWm|pfVH571;&!9hN%LMs!?Fdv}si9%aH zRZ~;bF7_QcX+DqjmwO>P^wW40Vzf54SuTPK~<}*;M{f5zj!Ot}y4vtKthSK%^R7d&zh!na+8>qj$Nw@fLe`kWvqlwI|C~gCN5; z%QbBVkGAdoxK#h2p*ZE)Ng|y#3{qWoDKDd>l>TZwEa=O^XSP`^_=Ayk7ziAs!^bGE zc0}-J%4s6U_Bir^jA*YD$Y4)xVZ}aqG}?fz{w)<)!S8(%|Iu=uL$}_`gOu5KlhiIz z6C%DS3{jrD$xAhbHHeVQ1XMLmUJG4c3m5)Nc$|sE@Kl#QjnaG_FbBbJ91XnRh*D(y zR!Zj%6G=GDUueL$yPv-Vp>VCC*pS%VkMe5DMyXggX*gflhj=5lEtK{I>9+6P4r9Rl z9>qaI_hHIyV_mant&AR~xTWbtCWX$NEtDH8$nnsOwP=RaV4%2f{JSmq4o(TN*CNuk zXGb@fwZZ^4`Ig@`Y`(H8UZ`1f`u5joqLXlu@rK7%#kFdN!% z`79>$0`ft(*rZ5@VG#Xbv;53&+hzx~!U}k>k z!f)}OlfAvpX(`*Mtc<@D(-B1dv~B79+h-EnF>#n(jS0vx;3Mib_Tg+M^cQN;M*)Ej zAB@5JIqP&(j1Gz-rN@ z%=#2Ne=ECz0f;_{z9;s4S1*SH?R=JHbunx7pMr ze}25FRaU4I*9z{2_5QW611a%uLIrIF})SvYXSe^ z&Jf2@`CA{WxkPFI3gFtT-@sIH1}t*z4BnIsKJT@LX>kW}|2&%iT0DtI)^8ZoNf!~7 zl00Hn&KgJp&O#8Eo~U~SW#1?2z;C}>CJqq0}^d~u6YO!_U{1BiDaEspib4_Kll!H^Z_ zw+nuS?`Rbqq?m#?m=sJ}R&LQq2BIw)%M@6eIo^!!-2!PKVXI$fyL?$+czQOW=e-u6 z9^ZGnClwxP?)Q@5VJ6KMhe%7LTKWrRtKxNRtwHzHoXm4Pf@yx_#afhZCeqY@fgR%8 z5rDsKt{V&)kCCM>*t_X3e{kYXN(2kmHu88*n*{OBN7^Xg8jfHnUsvgYEP%Ig93Xeq zmZ|fp*g;ZG2af5|{yJ&WKHTsBE`~)_k!JiIPx>3}hh**Q2UqH*b$V_E7;0riTTPCI z+0%LgL25c(z9s#3IHv2k#yVNGfb^Xn8v~0ce^oqudcznJPD-9_RFm9U|6Z~C`z?v2 z48LE;#9;>rF&ap0NES*;G+G0%zW@39GW|ipUi>((sZ{NNJ+X|Jd7KuEKs1MP@OmrW zdSnBj)866nMHD_v2|Do60G!2Q*T^jqWvNSS$KRBGR7#=7s}%%RSf(w);)8ULTHGKD z$#L1a$j4OmW0UN?QOBxyD9Y#aN$qVUr>R3SU#ew`P?9fL8LyhJ&L*8#u8tz2HBF|u zGdl*(f75@+#rWC*{Wc&xX5yP+&F(sCr(A`>q!Ef~eX?N-rMYWj0Gjy_xozi39{%QX zG_Ke2-Vo!>Yob?;Qz7xSiN0+ogJ*O&PEgKYlH*M2D9GKM7WfaaKMn*PZrxTGg@MpIwr;q$X&t5?7HBK@2-NI~|V-Mm5z z(lRcNQj5v*j=Ogw{{C+cP#zH(iC^2Le`)?t)MrZgKQ)^cRj} z_^uudp{)hv0|!U@Fg0mXM!7nbvH46FKTUqorb z!Wgxv$e)ysw;3x9cq7B@r0TZ>$y`iF4ZH+}lZ|KDfg~Y@rSLDC`%d6TAukTayx$uK znEo!yGeL?w=x3r-b)58HKcpAu&CT7-Yf3)M!$k3ZsqU3WdBh`?>PphG?{~jL8$(um zy?1`YRFR<^&XZ$}VK1&}M5wYl58Cj>mFh?JS(f+3)iq>idC$u*EWZia`FO3*Sc4vy zGl#)AXB+vWm|1c*;-^(3sq~{Zl8-$*Pch2K_6JnD6*-u z8WP5ejvH`!N0yM%P#uDDb%o|JLh!n{VRqP$7dQf(Nydtu`wKSy9pCn0gOy@tU$O;^ z%SfKTZ5Li@wM79KV3zLQR!?w(c4I1OjaUZg8M99h&FDC-R~AEpa zOBCqjUe~c+BS~sBjXw9EJ7w-v!;9%;K|bnhsG~Qv=_$?SWlRHw^=ASu%J@Lx@Y_HF zcBSc!WJE~s_#D5?37cR(h0eW9RliEQ-H}B=ywMN=Gth|>Mm*Gg5^S1F1DEZz;hIgH zryz%k^kytz*nZsXu!nIU2d;uOLlz4XxifFmQYrf# zeoCc2rQ8Q#uW0BRo)roF0ryntzZ4lFV7a0qJJBaA?f#!AB#ZwFw zyOZ4SKX_P|*D08TKdO@`<+7{3HfU9()xr3& z7ko-IF*pXc$bv-&SE)6mpt6hrtfs{eF+t`QVVdsob|^3OyR93$@iSVJ%V7L@#|0UI`zT9T87=qEdiaraJT z%q?aj`1!!WZhVWS)NPa%96cMNKRHn6dOGeU>Rg1mftbrWNnP<{1@&_usV7$&NsYZj zmX5z7vJ3Go=X$RpvV-?!0bAIXSwWDL_t!h_DxtfgVbeyTpcn6SFm^oBYyU21@ht-x z%ot40`@uz{?}#kSZBDKjI#1!XwreV^J*jfwWegB(tAJk3rkZkK24ZYs6LTzdwEOqnq2wjpv7_EC*Gxw40by)AHYNPVNO7~i@N>A*Ji19NJfrRe} z2kf|^llKz7<2IpGTyueg!`!RZO$?<9*#y(Uh#5O~lya^l4aCJ3RBbSj_)M7@gE`3- zVh&+(EB^!?X23Lt!EUs77n;=0?!_Zt2o}=f=tAa>qvs|}RW-yTCh-6v#ardoEtF+b<{9mREV5QsK=J4UiZC2oKO{oNs`%}|nc#NX&;`fP} zX#8RgrGAT)EtEn`lb{LEfl@N^H^*A-7&-nX7jo~Iu+rIfIBEMQZEwU=WYz~@s#Tu& zo{#Sr5h++;Hm750 zOu{p{HXaPL_UEy<%_bG&f~I+;SQRO3qZct@T-sFFNqI`i@1Ja2fIk-scA~T}ixKodze_gT76_{ZO+_0;*q~EgzQ;SQL>SM@F=1N)RCxYiW^R$ zq6{^EAxlmn2t4mlfT15u>V%W9-(uUUl~2B_054#f5H4-woxzSHUkNF+5n_SypQP_q zKzJb~5*U+6k+SM5h@Vs9C4J+=_5A|{LwmqwpWf2fgb_9TEfrfrK02z}0~n%p2iM6T z*4@M89+y8h+LUu%F&J&7;^OvmVl>QKO;PGaWV&fIUwi8+)oNMZ3li4`R)Ib|od{X~ zU=F(%Ia3QJo(?OWUzsMYP|Ugx;EI`N*kbJwFvE_8OY}BhxX8J;$Y_x*`aE3X-N-4c ze_e#W3WJ%W{tr5-_Cp=9LRtNK!J_8|)T&jgDM(gzB#b}olkLhGE-g?$Ncmim5Jz#3 zb}Q_ZW-o%IYl|7XSq(0a`#-pdVOp;5wgNe=Z|EX0MK(s>GJZ-f?ATI{errBg18UI{ zmkJIG@`M{U|Citp}U?+w9ORUpTf*qE3sc=*U%$KDC7r`&5SDR{YY^ zgD-<4YG=StVP#N%3C}sJ*XJ|~PH_SC4-H>0yhLdvcDV{Lt<0r#JeP|Tl;;UD)MPn= z2U@L1k?=xG2n(&Par~)25T%#jRwMSb0I2BP7L<(phwx;|eip1M8f$0HQ#`xdW;_QR zF2aZ`p33xCxm_3KcgE4O6Q7dg6%kT`0VAj8ZQr`!5ylLA<}lqheaFFdGT7ioWzcA}o>H zVX)e5F3RI0RY#chh`88#04%OTbN3-y&#iz|q-~bz6tna~aRjGzTV{$?j~tadwD*zr z1E*d`N!f*PylU(mJc_@xa&XA5TwnV&{YwV}+5fm+hh5HP0b)?W@_kCvcN(Sfi*n<~ zvT8;?^HWIEYL*)RpiqCf@=%5AdsL)7#r-i1EXi4YBBh$F(p?P4a!b^O#j$=#^*gfo zG`m9_f7j3|&VQchET@JRb_-p8s|XZU6dKMo}yJuSgdLZiTZPzC2U|Ir}kFBBQq(8 zAOG$g#XL_Kc9@P2q`z*wleAlZ?~bV|JhQn&0EU>S{-A=LIX2grx@sBN$S-8``X*-! z40C9*o~_UdB)SnWI`(r@c27ogViLLYNOo4!v@mzOb3#J%kiD3b^g1HOHKgD1j1^T_ z)<)=P?+;>q$UQFhm`K@hfQt~1Mf~>3+T~~!n8DS<@BE~(B28^&v$Qr47`Eoy1R4ullH8OK`dvhZH-vJ zfVrfe1gW!0LPUWv%jYWtkc>81y>rmKpN!;LOH%PP}<`$%*^oOcAfsXT47&D4u zJHQIAgH+L?WlEPVoSpHB1hIrq!rC>l(>2G_wJ+TS`I_V>hSY+ zO22W)o!bW|rSi7ru&`OTNK5=*gFK7OZG)tVHB)L+hvDjYeR7{{>)wji*J~` zf)DHI_sjYy{Pf5caJ1Y*s(MirX&LtY@0D5wA<#%?v| z&KV}j3##?k5h-Aa9inO$7=L0c?K8Ab{~! z$YUAaEMHOmXFdgz0CoVf6Np%)ae6^*nRm&UOg}vwo;zzC*nCqvva(ZZE2Zp7o6O4t z*FipvE7fa(?MN=P^r+)GPh=L+^8@oKZ9VxrOE8E+vJ?Zh^?Gb@!24sFR6O&0WkOnr zJQ^uv3_AO1d^{2w73-xR3EB|Q$Q*n zULV|tGR;FWikt5SmtDQqLh=}V%3ta)k4-Cc-sPD+bc|!moQyoCEE$q=jbc}kSE(st zeXN4M&cd$PSD&3M;+51#SPu{Uk@|u#Dl-P$?M)*255_F5P5UtF zVOmg9Var<-qqjR=&f!ny>~Zl>(FbP0Db0`K&zZ4nU}O(u$tb3{O7s<_?gspI%Pn-) zkvLUt2D(EVgYHY-eu`4RKw6^u)5=&@QT4p+jMwj9!M->st5JeSyuk}ZE$M~z2$jaB zDvYN}h92O?Sm9W9s%V9K3^3P80FD@xFG}U6J~=s2wIfxkUS4EeQo;(kGGmoIz64f~ z7cHMg7=}MfgkEZHDyP&tN!-g_K;(ebfIsFOZfd5)nz4B&9l%(i``} z&i4F?&K^WeP)drErrG~Qp{4CykYZZG?rI8uSV*K%DjUNwxm2wq${^JFu4vn#QBDJ^bCYNxcs?KzWIfK@`YND%Rn8nS)!Eh zjq@@dte8!mS(L`?zxpfyL>hM<#P8H_KqCL{>LxM87!bDLKNG9LXR_P9D~{t1YXC?P zL+;ID_c+*UJr9wh*33RdTm{;W@stFn9>G>S2 zq`MytE7?=wBKA{MqyDSRBaCI$FGLE{D67beOzpfygR(OVW_XL)B?ATS!=*>?Z#sI0 z@kX=YNtYu)F-z9IyAL1f1^3e&f4mjfo(K$3^dHl}9$sd)gONe$04F7~UzIuNyGo11 zc)!DK2P5M`YuxxQ>D%po4K1i*zM;vGRjhWy$cLOw^Z;;-ws66-G+PyAK3n5l4?!}= z-fa>1AR8kvzN(T*xTR4i9LLuN`FtW5@=vSFl&LZ!iV z4s2N%0?Wkla}b}*%^TnRJXIsIF4X?1K;x);_8xpJ)U}p=g@M>ZLIk#u_d`=*c5dmU zm%2knKKWwP{&sY?A#*x~f4Dw`sr-jZg))4{poGyoGFvpXPcW7FX|Igd9RXuhad@WcDUVBVLjqinR{{y=bW+^ z;^$t7mKAWd1JQ>H@;Y*<_8lT{|G!6$J^Jc*bgPx2mxqJeV+BCRW_X?coMR}o-*W9_ zPFKgeR`6~WkkzuC0no)kJ#$?jEOzE8t0m?2xsB4;Mvu!`2Km<@b87Xl!c&%=-1!n> zvolBuU>fFmyemeXYqw8P9L zHwD|jgvCa(7x2eR_##5xU*M}<|M=GcdAF~LzE3aRasV@<@m_jcpf|T~4y4(PZqpN& zWP(IYK>8hXj+C(L!`W$ftYFbp!>^`3sbj-3&%CL}ra{l>Zs&@ftCiIa^d!I`)lB#_ zvRHC4J2jl0L;QB7zK4@~#?VL}A~Gp>!SSa9O(! zUdZV}woXrO^P|G!EogC<#Y~}2n<^;QoUA*r0U`>YIi4V1e1gb%3sLbU_2_x)? zV%(*7MsvERGThrhR^hXOzAnjP07}r~kGJ8afxr;fcLsvFPj0mCGkxhGQv$Hy5GUyW zG7uE|4wH0?IKR9DC@5kY1)D#pSfl_{tAh2!Zl}eZFFSShyrLMZh(F4O0os|JRZCVt zDz%h5rzL=$?|Kz^^3vGqxp_H~nWQg1gN2%J13Z+Q7U~^P*WALB1_>&@BEn)PXYZky zKVRgwP@F!bMMfUkz=lRCx{W&`_GyTLvO?eLu0JtTc+z+qz04U0HY0EN52mBHrC%1K z1CG!D;+YY!%{4rZPl{|-GCL;KJ_8g{^BTPnN%0!0sTN=WaB^jNll0$0 z%5Ok$%1ou7S9sE9$3(@Z@z3RXVu&YLR7xoE2Dh1k_K(D&sVkIbtlie~2g>sisW?PT z1+MN79^FQ}2khefSKSv*=G=LYj~NortlR?MDD26l=3g4J=THxISxR&G(z36&MDVv7^#Fhp0-1U~g~GzcLchoU&i&kfM`M3mrUk3?YyeS&O!?qJVcz>dT5Zk{?^ zWO@N9Xh|5T^mb?XvW3Gl6>8EA*v;I6-C?QgnXp{Fpv1k1ZS=z7ss1t0!wS~;V(%+s z%jF5^X69Il>o%X#^&kMHP%KruLdLGA$wvZW-QTI)&iu?_92*smQNX$UK`W&()JQ?m z|B9R?q;C^fJ9Cel7xu%cwZ;nhy?iTzJpo{qAv)i}F3Z3K1x~z>--rsTzrGS0?Ugnm><13&y*5L-r28=&CgC9ek41M z_^3>~8uCF@`xLHhKxvj}S7ZwpKf`9H?_Pm!kLLrvM%yZL7I@!=Gv6?tQt&!guGs;n z#oJ>7iEA+nsEo^JTXXKT+l8K~q_h}}rw7gO%2mO0K)@USh{|ttM6QE#TyRDRmw=A?+S4mE*j=T}q*HAZV*J(dZl3E?zUiKhjPMb%4C@Fk(yc(nv4*+oT39-#0h^|gSL)p1JwBG5(zy#z z^PZiOyd+5dvV=S_DT?P9h%QuS?(fNIp2_uoPk9&Frt+k|OL(KJeFv5QUqWybsfx@_ z0Z#5My-J~ba6pES3+=X?J|!s=bnY(nHJtQns98VwIZ#XqJ%R~%WnCkM9Ha3uObUDu z^0U6v%H|f{at=W9?`*UTLx#^dR|*ntvRQ(%SXQx)0$W*~Pv)5>(KfJibP{Ks>rXm` zdOJA=tboeuWfiWwku*l0G&8 zdV5{Qt#FQmD*U$nS^#WJ5jv1F@;3n(R5is%Td0N=BhkdcfOlWY6ZD(aEjfmC@=_Vm zm)PcR4~49Bg_UE-1F--EjxupLTTMjV_^3z${*Z6>w9rl96OD&X7<0Rl(`_emdFAe% z^nb2b^yf!4Y6vY~;ypDpEy`m1Veg;Lk`UDwNhKUS0RkV31n!Eb15KDh_ zEh=ksbQHuVY|+Upr;G9WO>3^1`oL2-Xe$%vUkcKGaEv)3uuRSG1rH?qwq1a7_=0jm zki&bMu|T7XYxtCLH)(hHYN-6;?c2B01IIQ|-0%2=A?MD07PmW>2$G#0XR;Z=05dOuZ+XB-z&-~yei_iQ0Veuzty+`qRWNnV2?90;wIGgXkBAYVd{}~<_l?O z9>sJYD#Wp`R=$g~EDO(5)zuIx6u^j> zS$CRp-+xDdd1|yto^$7@|F%%h`6rt)2`aXU?7ALc3iH`18|reNq|Q0SsQ!5S42pSW zTX|=0*ME`yZ{z1&ds$i$=)pxya~q}o8>Fzd6yfqA+t4kAlX+{zn#)b0F3ML&wn6m6 z)1-ZPe-_@n|5^*Z$L|2Xta`v)&TDTuhXmhv;fPa2nh#sR*9;OlLw8A0YFF3aa+)=q zJD9V3%nV2l2qZfp%k3JY8HY)HHMeUI)4Cr9K%2^1mD}n6wTVswCgQAqO8`%?@Z<@; zDx!=KxWpo(4&uH8N6@?};nP?gfi+EK2we#0G#CD*vx{mN3&pkf7c^J|mPFjVGMx~j z>=VSe@onbGjb4 zSSP6Z>aBu>_)P0wAbWbFbv#hNa$s_kwrw2G4dD^`m+M{F_t%~QT_&c)XYS}g zzajW7^&iU6Q4=dU@MaC-(q}`bhNuKqsVbH z(D&oZTn{}x$mLRfLi0ZL7EQ{?yogKuG8RjzEVZ7@j_rL29%SyFc*9w#U00x5aQI3J z4A`TOe)lxkv!`ETHUf=+0sayq!1!E=ns-}M5@pAgGzfNv87QEFiPF*}+LkC~eVxKY z$-T_GQ9nI-_*mk4*ew(#SO}674k~edVs%wnq6{(PeTfo&q`M4CE)r!D*DcbBG*O?j z9yTYg?{DF4O_Y|jjvLSAT`@EzK0mQ7GLpD2;5nfFm1t&rVP7ef9H0+w)F(RjCF-58 zkwN_{(a#16cn|o!CvAcaPUVSd88PkstJzcmO)s!1;WB_UjJ{)Wr?V4`2Nr9-+bQBKTlk@{)_rIzn>i& zowyzTB;IqRoVd{*Ta|<=aed;1;fq8&ScuUZa`1@CiiBKtMxs@@oTy77PB|DVtE`Bvy|)=Pxx-<1D^z+gzo(I$5f zC*D6A={=YzdwYZD6Zg}qKh93PpD*k`-LrAZ+yRV>(;=}Q4@Ld0n{TWOd`n{82t|3r&)I)2e?smJ z8+_=0EBDQMiTUFDKl7zt=Nr6v|L5}kyZb-Y8=U|g%iuqce}XT9^(z!@X)U}Ve+7^C zkM<}7d2O~(JR$ds$DR8VWg$Q!6J<_o){S;)HVALb7uj3(tBLvx+rg|1Wru**cT@hG z?{%~M>3#n7_)f^nA)uvz_5v{2zgQoB{N7K`8=XM94X{r9{CP0WeD&U&_isEGP8*^B zGyi|;M_BKMcYqx5-UcE)QBooUkthXx(T)DJn9E>a2}Q@PgdtImbQjtZpSOw1;B%;V z!f>PP;0bO#=XhUt`c3(7{{GL)pWgppyti)bU&!;{>;3%uKfnIz_h6m%X;$34{^$M| zNq=0&)?5+X*ynofZss2SppGn4qS8G^&9=GEKK4jJ~y<8gg><- z?8gSTFwq{Htk0GFznA~N%lTu!asQbAH~aCXJU7e#Q|}++<;QCujHCblyr1TOC@O3g z-snfZAfdOwH7}tzgra7V^u~N>Jx1J+N0ceJvEP+d6t?A zTw5}=H|9y-73n|v|NpLEeD#C>i~Z}rzyHtW`S;f_f4si`@%(?5ztxh^kFG>J3!7lS zhjlE|a$_CmcPG{b*zbFleTlMH*mq-n;}zcL|7pJmJ*TX?^`HB{&my?7Z*aD_+|4JhB<>p^Ac z3gJ!pZ@%Zv_xSns&HFdYAIB~C-^a1$r*`}C^B>noRu`_j`Mv+=67(tV^w>@Lf0760 zd!g(`|K=H_AXj4jZf^N$UxfXP5Z;il!@=EX55x5c%#To1pc=Wce_YvOfq8Q!x?eOb zN|b%PE&q`Jr}rA281rh_AK#z-7yWg!|3)Y3Kmq*edpGa@yd0gV4~GYTeBS?@=l|~e zH|0;f=ZHX*ohVz=EyIbjiEl9cbGsB43WQ~`>{wl0y*DARuqm;1lRo*U3yiX_^F-zTv_r2O81i3&D7X|)ooeWaf_&J`jbKkh+RMYS~y& ziL6bNlr|;t-}F0YxEaSG3+#eazZ~7abME=M=bn4!&Um5tPil{iruR_2-@mP$`PHK) zmxYQ8rc1?KK7E7A{nLp(J%}7aO&;8k2L%5NLAR^2RD2sJMe1K%zHo{9-#Tx+N)Y18 z5}ejVfZ%ro#bHahwcuMIdV~Hv+ue7Sj_Xt(j7ES5_z(BY68;NK^-53WWEr0e2fdT! zS%#tVX@)JO@S)eucUhmIgEU@5JAFaGg`xgY!XKFX`}x3ADG&9D&xyOeu5f4mrV0WwU6^YRd|2?3hO8B=qHiy$Pu1%t!-^x zm7dDE3xxL&)7u=jln&rCWzK${wu7Lf1niHfY~FhFGo~LX{*~z7@+5}{CZo?G(4Ap-gADC&z_{HQxfyPappC6<7?Ap}|ef**Xv436i-&5(TSjm8Pw({RH*w1yL zpOHBoVtU>|K3|OBjdR!UU|x+%oaks8ox2f#jd`oqC;U_}$adA%)*9-myi^9gt;9F} zz0Gj>$6GwYFlk=MAN;DN)K#fd$o`j#6I=X@H=qw+rgFw`&OZ(F8E(%CqnYWe5rf+G zDZh{BtLvRqA5o5TKds%sy2tuRMA#ps7gCiopx4&+0r9o3^$we#oH) zX1RReV2J4&$`H@HQ89HI?~TXVzA_QRbm(L_-fbUH(p1(}|4xER{R8L;`&(fz*Q+rn z4o4U>or-}hu>!VkF0-E93cDgdHKlP zx;SPIe#C8e;~TqgV|^{1d(g)r{D>d5JCb6)CkI*ooys)Zv7$Ts`F(uxf%scYkD?#= zSH^gqMjM195C3kqBej2Gh~JBc<#-uj}IY z1iZ*n@spo=Sg*UcX;>Fn2OZIQf(?69>>q++`f?CuJAF6CFh9!nBfQ^){jAr&q$}sK z5h9N33v*mJXWKUM>*NP(q6IPmB|5=~we_bm|82)h!Iwjr$Pa>DtG{*UY4q zqxQiu6?`Es81Q-tDv>Uh&ks3X!9HOAh}VB2>cKi$&%ev>{Oa8D>{>p;tzXX<>l+6Z zId2KSs6WYVvvyi1cDNULG053oJ}mjCxTz-`I#%rmf30>ZZ@~VM7RNdWmX4abLi{GO zOT14_5BivI&-}|#S6++7zIedPH*{ZxzV#J9+Z27*^6vY$6q z;a}>_S-;ii6X>J2HzeC#zHmNU4nI~-;oC=^!hax7e(K~C^Pl%tmx|K=M+S92&40x_ zzQp`CI_Cn@2tdzxS41~8s@I2`84ANcz~$Tzocf?JT>F8%#-`QB>A$@EG-gNa(`Ail2Ip&Q-AHx9+_Ky7hwuDnQqEl3_ zDmvnV#o{~oqctiwB2P+C$8m;Wy{<-T^-uI>%YC!%JTTwep*~mN>-lx;q;GBA%YIZ} zy}r30DqOtl@yKztQ1-9pUmK2fJAB+_esz)K=XUx4#odsLUx&5hT>r`>{2tCnNECB@ zCi`uMdP8Tm{!b52!4Ga+|3~@`pQ@b?%V+N4;f?j1>93Yg`2W7yHG7c!)#7vHO3xjf z@h<;}_ac@R1b?<&fZxKpFIe!3*vHj4^Vty<5h~9p0(=49iA)oW?fwhf!JlwdgUXiv zIqV+!Pw_{LThG5ke`CI5v-!$-*22y3)b@K)+2tR3?(G!+!@fW9fe++!&R;dCyb{mC zzOk>xP0kA!D#?)`>Wj9SBAB#uVd^)bitkguoG?99Ki6SjrTD+Kwe{S6*gqb3ibgyK zBv@OP^-l|H$IEgpl=x)5EK5l7e^XNv`*ovnocYy79iE4b zt84i&;@ckGiTx7!q@Z)I91sDM^J-S+qvvluSclA*=6jN__@C@qg0RQ z=qm&bJ$jvBP!aT{fD+{mxNHbP=k>~Gr9~=x>QvUB&~+Z)sQTD1bzAohj$3WJO#M{D z$MMSv!$>fmV2bV5nqTo#*)SUC32Gjl*S9JJ>osrL3sjF+iW!g4bjFW6nta~9GkG-` zM7wS0^83U-!D$;hW}P_EQc?>zjpEq(Wg+1Sg;bbTDC8Vla$1tbcS%=AXj;wj3?EBg z^_haox=+LL_1@|U{NytG>d-wl;roKkbZoWHVAksHf|*ePGs??kk6Sur7>jKl(ixmqN8=Fj=rOG?8EUW(LF>kB@%{1 zpWG<9Kl{1B`uYaoLD=FQIZIIZH0YVakg*ik`?Lnq3!Y;6C>=E0)>Pk9`LyJuLt9F3 zzMjRr@Yqs&utVBWwH*7~?@rRVb3E?DvW+|vm4B8I;yo<UXTA0mD=_P8K*tcCO#fa)cb?XoPP ztZympF9=Uv9nrU}fJOA8mrRx5Ra_?`cozq-Am<>I2~(W41KAmAn2q=ClNN`_}n=Ry3mUn3sAj{dsQ!r zKG6%r8owszLFJL0^VqI^nCu_vs(1|c_+t2X?F;s92C{PfRL^HTk$qwGiNA$xoc)cd z4YB>*v7&j1|Nq^G?kanZ1F86`}rgi|k3usHGHJTORT8c#fu% z>b8LA*~eQ8Ni1L7Mod}*XDa&(VLPc@TfJEp*2N2ikDg||R|d2Lf!8Vo4RIOtFD5OB z9otdf;$;!@q*7 + + + + + Drone is full + Drohne ist voll + El VANT está lleno + L'UAV est chargé + Dron jest naładowany + A drón fel van töltve + Dron je nabitý + O VANT está cheio + Il drone è pieno + БПЛА заполнен + + + You need a UAV Battery + Du brauchst eine UAV-Batterie + Necesitas una batería para VANT + Pas de batterie UAV + Potrzebujesz baterii UAV + Szükséged van egy UAV akkumulátorra + Potřebuješ UAV-Baterii + Você precisa de uma Bateria para VANT + Hai bisogno di una Batteria UAV + Требуется аккумулятор БПЛА + + + Recharge + Aufladen + Recargar + Recharger + Naładuj + Feltöltés + Dobít + Recarregar + Ricarica + Подзарядить + + + UAV Battery + UAV-Batterie + Batería para VANT + Batterie UAV + Bateria UAV + UAV akkumulátor + UAV-Baterie + Bateria para VANT + Batteria UAV + Аккумулятор БПЛА + + + Used to refuel Carried UAV's + Verwendet zum Aufladen von tragbaren UAV's + Usada para reabastecer el VANT + Utilisée pour recharger l'UAV + Używana do naładowania UAV + Hordozható UAV-ok működéséhez való akkumulátor + Používané k dobíjení UAV + Usada para reabastecer VANT + Usata per ricaricare la Batteria dell'UAV + Используется для подзарядки БПЛА + + + Recharging ... + Aufladen ... + Recargando ... + Rechargement ... + Ładowanie ... + Akku feltöltése ... + Dobíjení ... + Recarregando ... + In ricarica ... + Подзаряжаем ... + + + \ No newline at end of file diff --git a/addons/logistics_uavbattery/ui/UAV_battery.paa b/addons/logistics_uavbattery/ui/UAV_battery.paa new file mode 100644 index 0000000000000000000000000000000000000000..5e6c0e1bf7742b568af7d36921fa1ccb9742fda4 GIT binary patch literal 5625 zcmeHLe@xrQ6@UIk4A}U)3B=cHT5J_ZBLj8ON|q?vY(ODE5{;vH$*DJIw`-jcR0lVSDZ>4H>%3ZO1AyFT%$#qm(& zcfaz?BEKwWBK|YXjQF%-6=c`R@t^Ti!Pm@xmRi_}%hOLsdHY>=@jO+AI5|hTMF72K zG9if5l~RLGNV@4R@qe^%nUErMcd44rqKys_zlrbvDgK}HkD>aUdZeAB9A<)K5$lny zMPOR*&jI+`!lKr4ZGfL8)1iKYKENCI2q7GMvYCq$1mEF#_d-9pC(4gbwSbhaH;MMB zuf{JlPXybd#okmj;pjqQ5N1U()_vmH*H~oS&uy7%n`2Ge{P3GdEng z$S+e5@W)n{i|NzNcXKY6tCisZ|67XpF??YV`86Cn$nc5Y0N?Pl^J<3Y2D>?U(=fpB zdF-!|_7*Tq?UR89W0=|#AZjhca(!_9kUnxPfE~$iny+0*K{lk zA1q>p)_mCz(w~n1X{tAbSC0kw9r;W7jdHiqfNVbHtNZquGfT1Z=-McTYxdJU-jmAk zx+6tOA@y=d{~HI>mCgcR+uB?*;~`TCtH&e|mufVsPTOPVg6Ch4)#h0A*TWN=^_6!& z`;^I3?P}(P{Bj4wqr6iItG}~`;UO~0r#ARPe0EO+IE}r)%K8hCpY8R>`8k)wLx3OU zTd;VD$g8yswSnRvh0My~wA>yjd>=Z@)^5 zaF!}EVk=Y!IDcPZ8bZ=3V&f6d*9p)^lwN!j%go-`%AKSp!bY!mTa z?B*p+vnK$Q9i)kX`Ps0crV72%XRxXhR;MV55%i|W&?aJp_n4hZOa%68=*fiK>)-H+T#N276#^pV5P7{C9exnfYJLr~i6Y3qbgXMewM!5RLi&wctCDQN zarlO9+)Dk$?qK?5>eJ!uS;-p=3oQYRkCZzMAE-_Pb$a16!*u@!Qlz-9D6iFgnnQjz z*hl%1RsP;)j#U2YDqzIPFwb_)IF+4q^BQrqsK20Kh+vt{RKNZ%Jv{>6&vDv#+uZq>uUFx5kp`0f#af@#lLhFi@BEgtT+ zN8P&EmP9S7?E9=?l90^f6(l z?C|x{5%f3eKRf?yf(Xp$1VgH8rU&hjUq)zB2GHFatV)^|gw)uV2uY}={#m577^XC2 z2|vq!!7nHs-=1WTmFBli;B=m6vp3H|QGt>;45;E1rt04t3n z!C&`k_VHJl8WGD}Lo+;>Q{5%c6Ow|39@tG?2(HlC0UoP#A^AeqeTshFE7yLE=T6k$ z-MjmZ3r0c=dXW9VX9{jBz2?`yhw~*7Vb|b@JLm=->hBSfTukL>-FKHXU!xLH{$!!> zvNyOGx!>5$<1Hst<{j_s<^|u~wd@$%@JUtD=o%d!(kKPnYi(E-=M@SYJev6?Dvrpt zDLz4n@ZdHy-P;?yra<(?h%>Xb~o%@L+gDkDbTK{uq2VM>bCSf+;We{AU3IMHkJ0zBt^FtM<{$Uj8Jt(L-J zD8~bqkXmDGOI6b0p`ihjhY+JC8Gp^r5qzD|$t?(i$MB~c+oD9>={uc8KmTq2m+?P3 zhc-6fv^Vp|qWr1G)neCU{p=?;J{*Uy9|;(ITb(6rJoZ19c2*ik0tR2UTg}$v@KGQ> zJWzn{YT~v_p)_C$hTSUxtiiC~Q6akoHvil69>jS2e8C4?eS`^OO)RWr{T*+O&f}$p zY}R`#EQO?7tkBA;1H8o$Rm9xnW@CUaw&(jYCf-?yCv#1NjBQl=1fT5T4ryzL1h?_n z{ye(_HvAJs&6U1LX0VzbBD37*xXm|A{eFRmE#}Ui%9>JVe31E)^wTQ6D;^V Hfwq4EBFnn& literal 0 HcmV?d00001 From 9a616a85fc857a3b82c81f916d168e0988baff7f Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 28 Jan 2015 14:38:04 -0600 Subject: [PATCH 020/211] VehicleSetFuel event setFuel says it needs to be local, so switching to event. Put event in common --- addons/common/XEH_postInit.sqf | 5 +++++ addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 542c4277cf..c6a0ce7b9f 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -134,3 +134,8 @@ GVAR(OldPlayerTurret) = [ACE_player] call FUNC(getTurretIndex); [QGVAR(StateArrested),false,true,QUOTE(ADDON)] call FUNC(defineVariable); [QGVAR(carriedBy),objNull,false,QUOTE(ADDON)] call FUNC(defineVariable); [QGVAR(carriedObj),objNull,false,QUOTE(ADDON)] call FUNC(defineVariable); + +["VehicleSetFuel", { +PARAMS_2(_vehicle,_fuelLevel); +_vehicle setFuel _fuelLevel; +}] call FUNC(addEventhandler); diff --git a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf index 7783846beb..9384044f00 100644 --- a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf +++ b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf @@ -20,8 +20,8 @@ if (!(_this call FUNC(canRefuelUAV))) exitWith {}; _onFinish = { EXPLODE_2_PVT((_this select 0),_caller,_target); - _target setFuel 1; _caller removeItem "ACE_UAVBattery"; + ["VehicleSetFuel", [_target], [_target, 1]] call EFUNC(common,targetEvent); //setFuel is local }; _onFailure = { From 3bb8775bd243809a41334089280b6df48c3aa421 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 28 Jan 2015 14:39:36 -0600 Subject: [PATCH 021/211] readme --- addons/logistics_uavbattery/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/logistics_uavbattery/README.md b/addons/logistics_uavbattery/README.md index 472b67365d..8c89913459 100644 --- a/addons/logistics_uavbattery/README.md +++ b/addons/logistics_uavbattery/README.md @@ -1,7 +1,7 @@ ace_logistics_uavbattery =========== -Adds an item `ACE_wirecutter` that allows cutting of fences in A3 and AiA maps. +Adds an item `ACE_UAVBattery` that allows refueling/recharging of the "Dartar" quadcopter UAVs. ## Maintainers From 3581ab480c50a6a73a3ae1813cdfc4ebdfe0c30f Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 29 Jan 2015 01:01:00 -0600 Subject: [PATCH 022/211] ace_interaction to required --- addons/logistics_uavbattery/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/logistics_uavbattery/config.cpp b/addons/logistics_uavbattery/config.cpp index 2438bc59fa..046a2665d0 100644 --- a/addons/logistics_uavbattery/config.cpp +++ b/addons/logistics_uavbattery/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {"ACE_UAVBattery"}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; + requiredAddons[] = {"ace_common", "ace_interaction"}; author[] = {"marc_book"}; authorUrl = ""; VERSION_CONFIG; From aabae5a3bc5505e352eb5c2ead07db3717e09b21 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 29 Jan 2015 01:01:58 -0600 Subject: [PATCH 023/211] ace_interaction to required --- addons/logistics_wirecutter/config.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/logistics_wirecutter/config.cpp b/addons/logistics_wirecutter/config.cpp index 9a48b83e46..7f292132fa 100644 --- a/addons/logistics_wirecutter/config.cpp +++ b/addons/logistics_wirecutter/config.cpp @@ -5,8 +5,8 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - author[] = {"gpgpgpgp"}; + requiredAddons[] = {"ace_common", "ace_interaction"}; + author[] = {"gpgpgpgp", "PabstMirror"}; authorUrl = ""; VERSION_CONFIG; }; From 9631154926f8895b823d2fe9b6a994a59da52722 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 29 Jan 2015 01:38:46 -0600 Subject: [PATCH 024/211] Set ADDON variable in XEH_preInit --- addons/attach/XEH_preInit.sqf | 6 +++++- addons/backblast/XEH_preInit.sqf | 4 ++++ addons/common/XEH_preInit.sqf | 3 ++- addons/disposable/XEH_preInit.sqf | 4 ++++ addons/explosives/XEH_preInit.sqf | 4 ++++ addons/gforces/XEH_preInit.sqf | 4 ++++ addons/goggles/XEH_preInit.sqf | 4 ++++ addons/grenades/XEH_preInit.sqf | 4 ++++ addons/gui/XEH_preInit.sqf | 2 +- addons/hearing/XEH_preInit.sqf | 4 ++++ addons/interact_menu/XEH_preInit.sqf | 2 +- addons/interaction/XEH_preInit.sqf | 6 +++--- addons/laserpointer/XEH_preInit.sqf | 4 ++++ addons/lockbackpacks/XEH_preInit.sqf | 4 ++++ addons/magazinerepack/XEH_preInit.sqf | 4 ++++ addons/map/XEH_preInit.sqf | 4 ++++ addons/markers/XEH_preInit.sqf | 4 ++++ addons/medical/XEH_preInit.sqf | 2 ++ addons/movement/XEH_preInit.sqf | 4 ++++ addons/nametags/XEH_preInit.sqf | 3 +++ addons/nightvision/XEH_preInit.sqf | 4 ++++ addons/overheating/XEH_preInit.sqf | 4 ++++ addons/recoil/XEH_preInit.sqf | 4 ++++ addons/reload/XEH_preInit.sqf | 4 ++++ addons/respawn/XEH_preInit.sqf | 4 ++++ addons/resting/XEH_preInit.sqf | 4 ++++ addons/safemode/XEH_preInit.sqf | 4 ++++ addons/scopes/XEH_preInit.sqf | 4 ++++ addons/vector/XEH_preInit.sqf | 4 ++++ addons/vehiclelock/XEH_preInit.sqf | 4 ++++ addons/vehicles/XEH_preInit.sqf | 4 ++++ addons/weaponselect/XEH_preInit.sqf | 4 ++++ 32 files changed, 117 insertions(+), 7 deletions(-) diff --git a/addons/attach/XEH_preInit.sqf b/addons/attach/XEH_preInit.sqf index bcbd7e543c..279ea4d4c7 100644 --- a/addons/attach/XEH_preInit.sqf +++ b/addons/attach/XEH_preInit.sqf @@ -1,7 +1,11 @@ #include "script_component.hpp" +ADDON = false; + PREP(attach); PREP(canAttach); PREP(canDetach); PREP(detach); -PREP(openAttachUI); \ No newline at end of file +PREP(openAttachUI); + +ADDON = true; diff --git a/addons/backblast/XEH_preInit.sqf b/addons/backblast/XEH_preInit.sqf index 1becf28c05..ec4edb75bc 100644 --- a/addons/backblast/XEH_preInit.sqf +++ b/addons/backblast/XEH_preInit.sqf @@ -1,5 +1,9 @@ #include "script_component.hpp" +ADDON = false; + PREP(getDistance); PREP(launcherBackblast); PREP(tankDangerZone); + +ADDON = true; diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 3cfb392784..1bd305fa02 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -1,6 +1,8 @@ // by commy2 #include "script_component.hpp" +ADDON = false; + // ACE Common Function PREP(addActionEventHandler); PREP(addActionMenuEventHandler); @@ -252,5 +254,4 @@ PREP(loadPersonLocal_F); PREP(unloadPerson_F); - ADDON = true; diff --git a/addons/disposable/XEH_preInit.sqf b/addons/disposable/XEH_preInit.sqf index 3f2c3a4f9a..26543c369a 100644 --- a/addons/disposable/XEH_preInit.sqf +++ b/addons/disposable/XEH_preInit.sqf @@ -1,6 +1,10 @@ #include "script_component.hpp" +ADDON = false; + PREP(aiDropWeaponCallback); PREP(replaceATWeapon); PREP(takeLoadedATWeapon); PREP(updateInventoryDisplay); + +ADDON = true; diff --git a/addons/explosives/XEH_preInit.sqf b/addons/explosives/XEH_preInit.sqf index 8ccfdb5aae..c55fb79a72 100644 --- a/addons/explosives/XEH_preInit.sqf +++ b/addons/explosives/XEH_preInit.sqf @@ -18,6 +18,8 @@ None */ #include "script_component.hpp" +ADDON = false; + PREP(addClacker); PREP(canDefuse); PREP(canDetonate); @@ -49,3 +51,5 @@ PREP(setPosition); PREP(startDefuse); PREP(startTimer); PREP(triggerType); + +ADDON = true; diff --git a/addons/gforces/XEH_preInit.sqf b/addons/gforces/XEH_preInit.sqf index ce10f592bb..1d249ff6a0 100644 --- a/addons/gforces/XEH_preInit.sqf +++ b/addons/gforces/XEH_preInit.sqf @@ -1,6 +1,10 @@ #include "script_component.hpp" +ADDON = false; + PREP(pfhUpdateGForces); GVAR(GForces) = []; GVAR(GForces_Index) = 0; + +ADDON = true; diff --git a/addons/goggles/XEH_preInit.sqf b/addons/goggles/XEH_preInit.sqf index c2878f3721..5b0d4da30f 100644 --- a/addons/goggles/XEH_preInit.sqf +++ b/addons/goggles/XEH_preInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +ADDON = false; + PREP(applyDirtEffect); PREP(applyDust); PREP(applyGlassesEffect); @@ -21,3 +23,5 @@ PREP(removeDirtEffect); PREP(removeDustEffect); PREP(removeGlassesEffect); PREP(removeRainEffect); + +ADDON = true; diff --git a/addons/grenades/XEH_preInit.sqf b/addons/grenades/XEH_preInit.sqf index e83aeaae6b..569cbfa8f6 100644 --- a/addons/grenades/XEH_preInit.sqf +++ b/addons/grenades/XEH_preInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +ADDON = false; + PREP(flashbangEffectStages); PREP(flashbangExplosionEH); PREP(flashbangThrownFuze); @@ -7,3 +9,5 @@ PREP(nextMode); PREP(throwGrenade); ["flashbangExplosion", { _this call DFUNC(flashbangExplosionEH) }] call EFUNC(common,addEventHandler); + +ADDON = true; diff --git a/addons/gui/XEH_preInit.sqf b/addons/gui/XEH_preInit.sqf index 9c2bcf0909..b5cc064d18 100644 --- a/addons/gui/XEH_preInit.sqf +++ b/addons/gui/XEH_preInit.sqf @@ -22,4 +22,4 @@ PREP(sendMessageTo); PREP(sendDisplayInformationTo); PREP(sendDisplayMessageTo); -ADDON = true; \ No newline at end of file +ADDON = true; diff --git a/addons/hearing/XEH_preInit.sqf b/addons/hearing/XEH_preInit.sqf index d160232c05..95d317b4b1 100644 --- a/addons/hearing/XEH_preInit.sqf +++ b/addons/hearing/XEH_preInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +ADDON = false; + PREP(addEarPlugs); PREP(earRinging); PREP(explosionNear); @@ -8,3 +10,5 @@ PREP(hasEarPlugsIn); PREP(putInEarPlugs); PREP(removeEarPlugs); PREP(updateVolume); + +ADDON = true; diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index 2c6d32d4de..42795d6c75 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -50,4 +50,4 @@ GVAR(objectActionsHash) = HASH_CREATE; GVAR(uidCounter) = 0; -ADDON = true; \ No newline at end of file +ADDON = true; diff --git a/addons/interaction/XEH_preInit.sqf b/addons/interaction/XEH_preInit.sqf index b09bcee71c..bcb8103ea2 100644 --- a/addons/interaction/XEH_preInit.sqf +++ b/addons/interaction/XEH_preInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +ADDON = false; + PREP(addInteraction); PREP(addInteractionSelf); PREP(addSelectableItem); @@ -45,6 +47,4 @@ PREP(sortOptionsByPriority); PREP(tapShoulder); PREP(updateTooltipPosition); - - - +ADDON = true; diff --git a/addons/laserpointer/XEH_preInit.sqf b/addons/laserpointer/XEH_preInit.sqf index 3a89535f2e..e7c74d3445 100644 --- a/addons/laserpointer/XEH_preInit.sqf +++ b/addons/laserpointer/XEH_preInit.sqf @@ -1,4 +1,8 @@ #include "script_component.hpp" +ADDON = false; + PREP(drawLaserpoint); PREP(onDraw); + +ADDON = true; diff --git a/addons/lockbackpacks/XEH_preInit.sqf b/addons/lockbackpacks/XEH_preInit.sqf index 77b8885da4..c474ff625a 100644 --- a/addons/lockbackpacks/XEH_preInit.sqf +++ b/addons/lockbackpacks/XEH_preInit.sqf @@ -1,5 +1,9 @@ #include "script_component.hpp" +ADDON = false; + PREP(getBackpackAssignedUnit); PREP(isBackpack); PREP(onOpenInventory); + +ADDON = true; diff --git a/addons/magazinerepack/XEH_preInit.sqf b/addons/magazinerepack/XEH_preInit.sqf index e811ff60c6..5caba1ffac 100644 --- a/addons/magazinerepack/XEH_preInit.sqf +++ b/addons/magazinerepack/XEH_preInit.sqf @@ -1,5 +1,9 @@ #include "script_component.hpp" +ADDON = false; + PREP(magazineRepack); PREP(magazineRepackCallback); PREP(openSelectMagazineUI); + +ADDON = true; diff --git a/addons/map/XEH_preInit.sqf b/addons/map/XEH_preInit.sqf index b13b0ca384..1ab43c7ca8 100644 --- a/addons/map/XEH_preInit.sqf +++ b/addons/map/XEH_preInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +ADDON = false; + PREP(addLineMarker); PREP(blueForceTrackingModule); PREP(blueForceTrackingUpdate); @@ -29,3 +31,5 @@ PREP(updateLineMarker); ["drawing_requestMarkers", FUNC(copyMapRemoteSend) ] call EFUNC(common,addEventHandler); ["drawing_sendbackMarkers", FUNC(copyMapReceiveMarkers) ] call EFUNC(common,addEventHandler); + +ADDON = true; diff --git a/addons/markers/XEH_preInit.sqf b/addons/markers/XEH_preInit.sqf index 6ac258ed2a..8e07056da4 100644 --- a/addons/markers/XEH_preInit.sqf +++ b/addons/markers/XEH_preInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +ADDON = false; + PREP(initInsertMarker); PREP(onLBSelChangedColor); PREP(onLBSelChangedShape); @@ -72,3 +74,5 @@ if (isNil QGVAR(MarkerColorsCache)) then { }; [QGVAR(sendMarkersJIP), FUNC(sendMarkersJIP)] call EFUNC(common,addEventHandler); + +ADDON = true; diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index 331edd5b21..57800cd5b7 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -10,6 +10,8 @@ #include "script_component.hpp" +ADDON = false; + PREP(actionCarryUnit); PREP(ActioncheckBloodPressure); PREP(ActionCheckBloodPressureLocal); diff --git a/addons/movement/XEH_preInit.sqf b/addons/movement/XEH_preInit.sqf index e4c6a2f056..3047be3518 100644 --- a/addons/movement/XEH_preInit.sqf +++ b/addons/movement/XEH_preInit.sqf @@ -1,6 +1,10 @@ #include "script_component.hpp" +ADDON = false; + PREP(getWeight); PREP(canClimb); PREP(climb); PREP(handleClimb); + +ADDON = true; diff --git a/addons/nametags/XEH_preInit.sqf b/addons/nametags/XEH_preInit.sqf index 14ecdc8a41..79258c5cec 100644 --- a/addons/nametags/XEH_preInit.sqf +++ b/addons/nametags/XEH_preInit.sqf @@ -1,5 +1,6 @@ #include "script_component.hpp" +ADDON = false; PREP(canShow); PREP(doShow); @@ -10,3 +11,5 @@ PREP(onMouseZChanged); PREP(setText); GVAR(ShowNamesTime) = -10; + +ADDON = true; diff --git a/addons/nightvision/XEH_preInit.sqf b/addons/nightvision/XEH_preInit.sqf index 98e19f31ad..9f59a01418 100644 --- a/addons/nightvision/XEH_preInit.sqf +++ b/addons/nightvision/XEH_preInit.sqf @@ -1,6 +1,10 @@ #include "script_component.hpp" +ADDON = false; + PREP(blending); PREP(decreaseNVGBrightness); PREP(increaseNVGBrightness); PREP(updatePPEffects); + +ADDON = true; diff --git a/addons/overheating/XEH_preInit.sqf b/addons/overheating/XEH_preInit.sqf index fb3c53040d..2bd256087b 100644 --- a/addons/overheating/XEH_preInit.sqf +++ b/addons/overheating/XEH_preInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +ADDON = false; + PREP(checkTemperature); PREP(clearJam); PREP(cooldown); @@ -8,3 +10,5 @@ PREP(jamWeapon); PREP(overheat); PREP(swapBarrel); PREP(swapBarrelCallback); + +ADDON = true; diff --git a/addons/recoil/XEH_preInit.sqf b/addons/recoil/XEH_preInit.sqf index 4d2bf8c538..2df8a83ebd 100644 --- a/addons/recoil/XEH_preInit.sqf +++ b/addons/recoil/XEH_preInit.sqf @@ -1,4 +1,8 @@ #include "script_component.hpp" +ADDON = false; + PREP(burstDispersion); PREP(camShake); + +ADDON = true; diff --git a/addons/reload/XEH_preInit.sqf b/addons/reload/XEH_preInit.sqf index 9a7373b2dc..b5c8e45d35 100644 --- a/addons/reload/XEH_preInit.sqf +++ b/addons/reload/XEH_preInit.sqf @@ -1,3 +1,7 @@ #include "script_component.hpp" +ADDON = false; + PREP(checkAmmo); + +ADDON = true; diff --git a/addons/respawn/XEH_preInit.sqf b/addons/respawn/XEH_preInit.sqf index 831aeaa423..f57e1f3714 100644 --- a/addons/respawn/XEH_preInit.sqf +++ b/addons/respawn/XEH_preInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +ADDON = false; + PREP(canMoveRallypoint); PREP(handleKilled); PREP(handleRespawn); @@ -13,3 +15,5 @@ PREP(removeDisconnectedPlayer); PREP(restoreGear); PREP(showFriendlyFireMessage); PREP(teleportToRallypoint); + +ADDON = true; diff --git a/addons/resting/XEH_preInit.sqf b/addons/resting/XEH_preInit.sqf index 5a91cc7868..6a2a2040b7 100644 --- a/addons/resting/XEH_preInit.sqf +++ b/addons/resting/XEH_preInit.sqf @@ -1,7 +1,11 @@ #include "script_component.hpp" +ADDON = false; + PREP(getIntersection); PREP(hasBipod); PREP(pfhCheckRest); PREP(restWeapon); PREP(unRestWeapon); + +ADDON = true; diff --git a/addons/safemode/XEH_preInit.sqf b/addons/safemode/XEH_preInit.sqf index bc80c4269d..6bedb35134 100644 --- a/addons/safemode/XEH_preInit.sqf +++ b/addons/safemode/XEH_preInit.sqf @@ -1,7 +1,11 @@ #include "script_component.hpp" +ADDON = false; + PREP(firstMode); PREP(lockSafety); PREP(playChangeFiremodeSound); PREP(setSafeModeVisual); PREP(unlockSafety); + +ADDON = true; diff --git a/addons/scopes/XEH_preInit.sqf b/addons/scopes/XEH_preInit.sqf index cc83dd6332..9dc7450c94 100644 --- a/addons/scopes/XEH_preInit.sqf +++ b/addons/scopes/XEH_preInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +ADDON = false; + PREP(adjustScope); PREP(canAdjustScope); PREP(firedEH); @@ -8,3 +10,5 @@ PREP(hideZeroing); PREP(inventoryCheck); GVAR(fadeScript) = scriptNull; + +ADDON = true; diff --git a/addons/vector/XEH_preInit.sqf b/addons/vector/XEH_preInit.sqf index 4ce39de4e9..a0a20d3315 100644 --- a/addons/vector/XEH_preInit.sqf +++ b/addons/vector/XEH_preInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +ADDON = false; + PREP(clearDisplay); PREP(convertToTexturesDegree); PREP(convertToTexturesDistance); @@ -37,3 +39,5 @@ GVAR(keyDownTimeDistance) = -1; GVAR(useMil) = false; GVAR(useFeet) = false; GVAR(modeReticle) = 0; + +ADDON = true; diff --git a/addons/vehiclelock/XEH_preInit.sqf b/addons/vehiclelock/XEH_preInit.sqf index 7040450597..80d1d6335f 100644 --- a/addons/vehiclelock/XEH_preInit.sqf +++ b/addons/vehiclelock/XEH_preInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +ADDON = false; + PREP(addKeyForVehicle); PREP(getVehicleSideKey); PREP(hasKeyForVehicle); @@ -12,3 +14,5 @@ PREP(setVehicleLockEH); //Add Event Handlers ["SetupCustomKey", {_this call FUNC(serverSetupCustomKeyEH)}] call EFUNC(common,addEventHandler); ["SetVehicleLock", {_this call FUNC(setVehicleLockEH)}] call EFUNC(common,addEventHandler); + +ADDON = true; diff --git a/addons/vehicles/XEH_preInit.sqf b/addons/vehicles/XEH_preInit.sqf index 85fc9fe8d2..7070aab075 100644 --- a/addons/vehicles/XEH_preInit.sqf +++ b/addons/vehicles/XEH_preInit.sqf @@ -1,4 +1,8 @@ #include "script_component.hpp" +ADDON = false; + PREP(speedLimiter); PREP(startEngine); + +ADDON = true; diff --git a/addons/weaponselect/XEH_preInit.sqf b/addons/weaponselect/XEH_preInit.sqf index ec81c4834e..0dfb72f353 100644 --- a/addons/weaponselect/XEH_preInit.sqf +++ b/addons/weaponselect/XEH_preInit.sqf @@ -1,5 +1,7 @@ #include "script_component.hpp" +ADDON = false; + PREP(countMagazinesForGrenadeMuzzle); PREP(displayGrenadeTypeAndNumber); PREP(findNextGrenadeMagazine); @@ -63,3 +65,5 @@ GVAR(AllMuzzles) = uiNamespace getVariable QGVAR(AllMuzzles); GVAR(FragMagazines) = uiNamespace getVariable QGVAR(FragMagazines); GVAR(NonFragMagazines) = uiNamespace getVariable QGVAR(NonFragMagazines); GVAR(AllMagazines) = uiNamespace getVariable QGVAR(AllMagazines); + +ADDON = true; From 27798fbe8f33848df8ccdfd598c188d4bbe4eecf Mon Sep 17 00:00:00 2001 From: Thomas Kooi Date: Thu, 29 Jan 2015 13:58:22 +0100 Subject: [PATCH 025/211] Minor optimizations Renamed from basic ballistics to wind deflection --- addons/winddeflection/CfgVehicles.h | 4 +++- addons/winddeflection/functions/fnc_handleFired.sqf | 11 +++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/addons/winddeflection/CfgVehicles.h b/addons/winddeflection/CfgVehicles.h index 52e2809f42..fe0e31bda5 100644 --- a/addons/winddeflection/CfgVehicles.h +++ b/addons/winddeflection/CfgVehicles.h @@ -1,4 +1,6 @@ class CfgVehicles { + + // TODO Stringtable usage class Logic; class Module_F: Logic { class ArgumentsBaseUnits { @@ -6,7 +8,7 @@ class CfgVehicles { }; class GVAR(Module): Module_F { scope = 2; - displayName = "Basic Ballistics [ACE]"; + displayName = "Wind Deflection [ACE]"; icon = QUOTE(PATHTOF(data\module_icon.paa)); category = "ACE"; function = FUNC(enableModule); diff --git a/addons/winddeflection/functions/fnc_handleFired.sqf b/addons/winddeflection/functions/fnc_handleFired.sqf index 8c0713c50b..19677287dc 100644 --- a/addons/winddeflection/functions/fnc_handleFired.sqf +++ b/addons/winddeflection/functions/fnc_handleFired.sqf @@ -26,11 +26,6 @@ if (!GVAR(EnableForAI) && !([_unit] call EFUNC(common,isPlayer))) exitWith {fals _bullet = _this select 6; if (_bullet isKindOf "BulletBase") then { - _weapon = _this select 1; - _ammo = _this select 4; - - _airFriction = getNumber(configFile >> "cfgAmmo" >> _ammo >> "airFriction"); - [{ private ["_bullet", "_airFriction", "_args", "_deltaT", "_bulletVelocity", "_bulletSpeed", "_trueVelocity", "_trueVelocity", "_dragRef", "_drag", "_accelRef", "_accel"]; @@ -57,13 +52,13 @@ if (_bullet isKindOf "BulletBase") then { _accelRef = (vectorNormalized _bulletVelocity) vectorMultiply (_dragRef); _bulletVelocity = _bulletVelocity vectorDiff _accelRef; - _drag = _deltaT * _airFriction * _trueSpeed * _trueSpeed; - _accel = (vectorNormalized _trueVelocity) vectorMultiply (_drag); + _drag = _deltaT * _airFriction * _trueSpeed; + _accel = _trueVelocity vectorMultiply (_drag); _bulletVelocity = _bulletVelocity vectorAdd _accel; }; _bullet setVelocity _bulletVelocity; // TODO expand with advanced ballistics functionality. - }, 0, [_bullet, _airFriction, time]] call CBA_fnc_addPerFrameHandler; + }, 0, [_bullet, getNumber(configFile >> "cfgAmmo" >> (_this select 4) >> "airFriction"), time]] call CBA_fnc_addPerFrameHandler; }; true; \ No newline at end of file From e5f02f8d63571bb34c79b05fcab01ca1c86d0a69 Mon Sep 17 00:00:00 2001 From: Giallustio Date: Fri, 30 Jan 2015 00:18:45 +0100 Subject: [PATCH 026/211] sys_cargo sys_cargo to merge --- TO_MERGE/ace/sys_cargo/$PBOPREFIX$ | 1 + TO_MERGE/ace/sys_cargo/ACE_readme.txt | 44 +++ TO_MERGE/ace/sys_cargo/CfgEventHandlers.hpp | 27 ++ TO_MERGE/ace/sys_cargo/CfgFunctions.hpp | 31 ++ TO_MERGE/ace/sys_cargo/CfgVehicles.hpp | 89 +++++ TO_MERGE/ace/sys_cargo/Defines.hpp | 318 ++++++++++++++++++ TO_MERGE/ace/sys_cargo/Dialog.hpp | 178 ++++++++++ TO_MERGE/ace/sys_cargo/XEH_postInit.sqf | 9 + TO_MERGE/ace/sys_cargo/XEH_preInit.sqf | 295 ++++++++++++++++ TO_MERGE/ace/sys_cargo/box/$PBOPREFIX$ | 1 + TO_MERGE/ace/sys_cargo/box/config.cpp | 12 + TO_MERGE/ace/sys_cargo/box/license.txt | 79 +++++ .../ace/sys_cargo/box/script_component.hpp | 14 + TO_MERGE/ace/sys_cargo/config.cpp | 21 ++ .../data/rsc/ace_ui_background_ca.paa | Bin 0 -> 22052 bytes TO_MERGE/ace/sys_cargo/fnc_canLoadCargo.sqf | 27 ++ TO_MERGE/ace/sys_cargo/fnc_carry.sqf | 153 +++++++++ TO_MERGE/ace/sys_cargo/fnc_carry2.sqf | 23 ++ TO_MERGE/ace/sys_cargo/fnc_drag.sqf | 106 ++++++ TO_MERGE/ace/sys_cargo/fnc_exec.sqf | 0 TO_MERGE/ace/sys_cargo/fnc_init.sqf | 22 ++ TO_MERGE/ace/sys_cargo/fnc_listCargo.sqf | 27 ++ TO_MERGE/ace/sys_cargo/fnc_load.sqf | 105 ++++++ TO_MERGE/ace/sys_cargo/fnc_loadCargo.sqf | 81 +++++ TO_MERGE/ace/sys_cargo/fnc_menuDef.sqf | 206 ++++++++++++ TO_MERGE/ace/sys_cargo/fnc_onload.sqf | 11 + TO_MERGE/ace/sys_cargo/fnc_push.sqf | 35 ++ TO_MERGE/ace/sys_cargo/fnc_unload.sqf | 85 +++++ TO_MERGE/ace/sys_cargo/fnc_unloadCargo.sqf | 46 +++ TO_MERGE/ace/sys_cargo/fnc_view.sqf | 65 ++++ TO_MERGE/ace/sys_cargo/license.txt | 79 +++++ TO_MERGE/ace/sys_cargo/script_component.hpp | 29 ++ TO_MERGE/ace/sys_cargo/slingload/$PBOPREFIX$ | 1 + .../sys_cargo/slingload/CfgEventhandlers.hpp | 6 + .../ace/sys_cargo/slingload/CfgMagazines.hpp | 27 ++ .../ace/sys_cargo/slingload/CfgVehicles.hpp | 101 ++++++ .../ace/sys_cargo/slingload/CfgWeapons.hpp | 11 + .../sys_cargo/slingload/XEH_preClientInit.sqf | 13 + .../ace/sys_cargo/slingload/XEH_preInit.sqf | 12 + .../ace/sys_cargo/slingload/ace_slingrope.p3d | Bin 0 -> 345408 bytes .../sys_cargo/slingload/ace_slingrope_L.p3d | Bin 0 -> 66920 bytes .../sys_cargo/slingload/ace_slingrope_M.p3d | Bin 0 -> 67716 bytes .../sys_cargo/slingload/ace_slingrope_P.p3d | Bin 0 -> 120969 bytes TO_MERGE/ace/sys_cargo/slingload/config.cpp | 37 ++ .../ace/sys_cargo/slingload/data/Anilla.paa | Bin 0 -> 14998 bytes .../sys_cargo/slingload/data/ace_rope_co.paa | Bin 0 -> 44681 bytes .../slingload/data/equip/m_rope_ca.paa | Bin 0 -> 43998 bytes .../ace/sys_cargo/slingload/data/metal8.paa | Bin 0 -> 13470 bytes .../ace/sys_cargo/slingload/data/soga.paa | Bin 0 -> 21977 bytes .../ace/sys_cargo/slingload/fnc_addAction.sqf | 14 + .../slingload/fnc_attachSlingRopeToCargo.sqf | 23 ++ .../fnc_attachSlingRopeToHelicopter.sqf | 116 +++++++ .../fnc_detachSlingRopeFromCargo.sqf | 8 + .../sys_cargo/slingload/fnc_hasropemag.sqf | 9 + .../ace/sys_cargo/slingload/fnc_menuDef.sqf | 117 +++++++ TO_MERGE/ace/sys_cargo/slingload/license.txt | 79 +++++ .../ace/sys_cargo/slingload/m_ace_rope.p3d | Bin 0 -> 59912 bytes TO_MERGE/ace/sys_cargo/slingload/process.sqf | 27 ++ .../sys_cargo/slingload/script_component.hpp | 15 + .../sys_cargo/slingload/ua_release_cargo.sqf | 78 +++++ TO_MERGE/ace/sys_cargo/ua_carry2.sqf | 192 +++++++++++ 61 files changed, 3105 insertions(+) create mode 100644 TO_MERGE/ace/sys_cargo/$PBOPREFIX$ create mode 100644 TO_MERGE/ace/sys_cargo/ACE_readme.txt create mode 100644 TO_MERGE/ace/sys_cargo/CfgEventHandlers.hpp create mode 100644 TO_MERGE/ace/sys_cargo/CfgFunctions.hpp create mode 100644 TO_MERGE/ace/sys_cargo/CfgVehicles.hpp create mode 100644 TO_MERGE/ace/sys_cargo/Defines.hpp create mode 100644 TO_MERGE/ace/sys_cargo/Dialog.hpp create mode 100644 TO_MERGE/ace/sys_cargo/XEH_postInit.sqf create mode 100644 TO_MERGE/ace/sys_cargo/XEH_preInit.sqf create mode 100644 TO_MERGE/ace/sys_cargo/box/$PBOPREFIX$ create mode 100644 TO_MERGE/ace/sys_cargo/box/config.cpp create mode 100644 TO_MERGE/ace/sys_cargo/box/license.txt create mode 100644 TO_MERGE/ace/sys_cargo/box/script_component.hpp create mode 100644 TO_MERGE/ace/sys_cargo/config.cpp create mode 100644 TO_MERGE/ace/sys_cargo/data/rsc/ace_ui_background_ca.paa create mode 100644 TO_MERGE/ace/sys_cargo/fnc_canLoadCargo.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_carry.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_carry2.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_drag.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_exec.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_init.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_listCargo.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_load.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_loadCargo.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_menuDef.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_onload.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_push.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_unload.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_unloadCargo.sqf create mode 100644 TO_MERGE/ace/sys_cargo/fnc_view.sqf create mode 100644 TO_MERGE/ace/sys_cargo/license.txt create mode 100644 TO_MERGE/ace/sys_cargo/script_component.hpp create mode 100644 TO_MERGE/ace/sys_cargo/slingload/$PBOPREFIX$ create mode 100644 TO_MERGE/ace/sys_cargo/slingload/CfgEventhandlers.hpp create mode 100644 TO_MERGE/ace/sys_cargo/slingload/CfgMagazines.hpp create mode 100644 TO_MERGE/ace/sys_cargo/slingload/CfgVehicles.hpp create mode 100644 TO_MERGE/ace/sys_cargo/slingload/CfgWeapons.hpp create mode 100644 TO_MERGE/ace/sys_cargo/slingload/XEH_preClientInit.sqf create mode 100644 TO_MERGE/ace/sys_cargo/slingload/XEH_preInit.sqf create mode 100644 TO_MERGE/ace/sys_cargo/slingload/ace_slingrope.p3d create mode 100644 TO_MERGE/ace/sys_cargo/slingload/ace_slingrope_L.p3d create mode 100644 TO_MERGE/ace/sys_cargo/slingload/ace_slingrope_M.p3d create mode 100644 TO_MERGE/ace/sys_cargo/slingload/ace_slingrope_P.p3d create mode 100644 TO_MERGE/ace/sys_cargo/slingload/config.cpp create mode 100644 TO_MERGE/ace/sys_cargo/slingload/data/Anilla.paa create mode 100644 TO_MERGE/ace/sys_cargo/slingload/data/ace_rope_co.paa create mode 100644 TO_MERGE/ace/sys_cargo/slingload/data/equip/m_rope_ca.paa create mode 100644 TO_MERGE/ace/sys_cargo/slingload/data/metal8.paa create mode 100644 TO_MERGE/ace/sys_cargo/slingload/data/soga.paa create mode 100644 TO_MERGE/ace/sys_cargo/slingload/fnc_addAction.sqf create mode 100644 TO_MERGE/ace/sys_cargo/slingload/fnc_attachSlingRopeToCargo.sqf create mode 100644 TO_MERGE/ace/sys_cargo/slingload/fnc_attachSlingRopeToHelicopter.sqf create mode 100644 TO_MERGE/ace/sys_cargo/slingload/fnc_detachSlingRopeFromCargo.sqf create mode 100644 TO_MERGE/ace/sys_cargo/slingload/fnc_hasropemag.sqf create mode 100644 TO_MERGE/ace/sys_cargo/slingload/fnc_menuDef.sqf create mode 100644 TO_MERGE/ace/sys_cargo/slingload/license.txt create mode 100644 TO_MERGE/ace/sys_cargo/slingload/m_ace_rope.p3d create mode 100644 TO_MERGE/ace/sys_cargo/slingload/process.sqf create mode 100644 TO_MERGE/ace/sys_cargo/slingload/script_component.hpp create mode 100644 TO_MERGE/ace/sys_cargo/slingload/ua_release_cargo.sqf create mode 100644 TO_MERGE/ace/sys_cargo/ua_carry2.sqf diff --git a/TO_MERGE/ace/sys_cargo/$PBOPREFIX$ b/TO_MERGE/ace/sys_cargo/$PBOPREFIX$ new file mode 100644 index 0000000000..b279a734a5 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\sys_cargo \ No newline at end of file diff --git a/TO_MERGE/ace/sys_cargo/ACE_readme.txt b/TO_MERGE/ace/sys_cargo/ACE_readme.txt new file mode 100644 index 0000000000..2308056ca7 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/ACE_readme.txt @@ -0,0 +1,44 @@ +///////////////////////////////////////////////////////////////////////////////// +# # +# ADVANCED COMBAT ENVIRONMENT FILE # +# # +///////////////////////////////////////////////////////////////////////////////// + + +#===========# +| Component | +#===========# + +ace_sys_crewserved + +#================# +| Main author(s) | +#================# + +rocko - Maintenance, Configs, Dialogs + +#=================# +| Contact details | +#=================# + +Mail: rocko@dev-heaven.net +Page: http://dev-heaven.net/projects/show/ace-mod2 + + + +///////////////////////////////////////////////////////////////////////////////// +# # +# ADVANCED COMBAT ENVIRONMENT FILE # +# # +///////////////////////////////////////////////////////////////////////////////// +// // +# Copyright 2009 A.C.E MOD, ALL RIGHTS RESERVED # +// // +// This product is licensed for personal use only. Commercial distribution // +// prohibited. Military use prohibited. Use prohibited if any component // +// of this distribution removed or modified without express written consent // +// of the developer. For further licensing details please refer to the // +// End User License Agreement provided within this PBO file. // +// Any questions or comments, please contact contact@acemod.net // +// // +///////////////////////////////////////////////////////////////////////////////// diff --git a/TO_MERGE/ace/sys_cargo/CfgEventHandlers.hpp b/TO_MERGE/ace/sys_cargo/CfgEventHandlers.hpp new file mode 100644 index 0000000000..fe968e32f4 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/CfgEventHandlers.hpp @@ -0,0 +1,27 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; +class Extended_PostInit_EventHandlers { + class ADDON { + clientInit = QUOTE(call COMPILE_FILE(XEH_postInit)); + }; +}; +class Extended_Killed_EventHandlers { + class AllVehicles { + class ADDON { + killed = QUOTE(_this call FUNC(clearCargo)); + exclude[] = {"Man"}; //Exclude Animals and Humans + }; + }; +}; + +class Extended_InitPost_EventHandlers { + class AllVehicles { + class ADDON { + Init = QUOTE(if (alive (_this select 0)) then {_this call FUNC(init)}); + exclude[] = {"Man"}; //Exclude Animals and Humans + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/ace/sys_cargo/CfgFunctions.hpp b/TO_MERGE/ace/sys_cargo/CfgFunctions.hpp new file mode 100644 index 0000000000..44de214529 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/CfgFunctions.hpp @@ -0,0 +1,31 @@ +// ----------------------------------------------------------------------------- +// Automatically generated by 'functions_config.rb' +// DO NOT MANUALLY EDIT THIS FILE! +// ----------------------------------------------------------------------------- + +class CfgFunctions { + class ACE { + class Cargo { + // ACE_fnc_canLoadCargo + class canLoadCargo { + description = "Checks if vehicle is able to load cargo"; + file = "\z\ace\Addons\sys_cargo\fnc_canLoadCargo.sqf"; + }; + // ACE_fnc_listCargo + class listCargo { + description = "Lists cargo of a vehicle."; + file = "\z\ace\Addons\sys_cargo\fnc_listCargo.sqf"; + }; + // ACE_fnc_loadCargo + class loadCargo { + description = "Load cargo into vehicles."; + file = "\z\ace\Addons\sys_cargo\fnc_loadCargo.sqf"; + }; + // ACE_fnc_unloadCargo + class unloadCargo { + description = "Unloads cargo from a vehicle."; + file = "\z\ace\Addons\sys_cargo\fnc_unloadCargo.sqf"; + }; + }; + }; +}; diff --git a/TO_MERGE/ace/sys_cargo/CfgVehicles.hpp b/TO_MERGE/ace/sys_cargo/CfgVehicles.hpp new file mode 100644 index 0000000000..df5c64a0de --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/CfgVehicles.hpp @@ -0,0 +1,89 @@ +class CfgVehicles { + // TODO: add more cases ? + class All; + class Land; + class Man: Land { ACE_NOCARGOLOAD; }; + class LandVehicle: Land { ACE_LOAD_ONLY; }; + class Tank: LandVehicle { ACE_GEAR_ONLY; }; // Tank must be also ACE_LOAD_ONLY, because some obvious APCs like Bradley are inherited from class Tank instead of Tracked_APC + // TODO: Add exceptions for real class Tank !! + //class T72_Base: Tank + //class ZSU_Base: Tank + //class M1A1: Tank + //class T34: Tank + //class MLRS: Tank + //class 2S6M_Tunguska: Tank + //class M113_Base: Tank { ACE_LOAD_ONLY; }; + //class M2A2_Base: Tank { ACE_LOAD_ONLY; }; + //class T55_Base: Tank + //class BAF_FV510_D: Tank { ACE_LOAD_ONLY; }; + + class Tracked_APC: Tank { ACE_LOAD_ONLY; }; + class Car: LandVehicle { ACE_LOAD_ONLY; }; + //class BIS_alice_emptydoor: Car { ACE_NOCARGOLOAD; }; // FU DOOR + class PaperCar: Car { ACE_NOCARGOLOAD; }; + class Wheeled_APC: Car { ACE_LOAD_ONLY; }; + class Motorcycle: Landvehicle { ACE_CARGO_ONLY; }; + class StaticWeapon: LandVehicle { ACE_CARGO_ONLY; }; + //class StaticCanon: StaticWeapon { ACE_NOCARGOLOAD; }; + class Air; + class Helicopter: Air { ACE_LOAD_ONLY; }; + class ParachuteBase: Helicopter { ACE_NOCARGOLOAD; }; + class Plane: Air { ACE_LOAD_ONLY; }; + class Ship; + class SmallShip: Ship { ACE_LOAD_ONLY; }; + class BigShip: Ship { ACE_LOAD_ONLY; }; + class Ship_F; + class Boat_F: Ship_F { ACE_LOAD_ONLY; }; + + class Rubber_duck_base_F: Boat_F { + ACE_CARGO_ONLY; + ACE_Weight = 260; + }; + class Boat_Armed_01_base_F: Boat_F { ACE_LOAD_ONLY; }; + class Static: All { ACE_NOCARGOLOAD; }; + class Strategic; + class ReammoBox: Strategic { ACE_CARGO_ONLY; }; + class Library_WeaponHolder: Strategic { ACE_NOCARGOLOAD; }; + class WeaponHolder: ReammoBox { ACE_NOCARGOLOAD; }; + class Thing: All { ACE_NOCARGOLOAD; }; + class Wreck: Thing { ACE_NOCARGOLOAD; }; + class ACE_Object: Thing { ACE_NOCARGOLOAD; }; + + // TODO: Move to another hpp file + class thingX: Thing { ACE_NOCARGOLOAD; }; + class RoadCone_F: thingX { ACE_CARGO_ONLY; ACE_Weight = 1; }; + class FloatingStructure_F; + class RoadCone_L_F: FloatingStructure_F { ACE_CARGO_ONLY; ACE_Weight = 1; }; + + + + class ReammoBox_F: thingX { ACE_CARGO_ONLY; }; + /*class FoldChair: Thing { + ACE_CARGO_ONLY; + ACE_Weight = 1; + class Useractions { + class Sit { + displayname = "Sit"; + radius = 2; + position = "Component1"; + onlyforPlayer = 1; + condition = "alive this"; + statement= "player setPosASL getPosASL this; player setDir ((getDir this)+90); player switchMove 'ACE_CoolSit'; player call ace_sys_cargo_fnc_standup"; + }; + }; + };*/ + + // TODO: Add more stuff, like RoadCones, BarbedWire, Other small items to be carried + // Stuff that is to be CARRIED: + /* + - Arty Shells - done + - Fuel Can - done + - RoadCone -done + - Signs (TODO: Need to specify which ones) + - Barbed wire (TODO: Need rolled model to be unrolles for sys_razorwire or so) + - Sparewheel for small cars + - Suitcase + - + - Anything that comes to mind then + */ +}; diff --git a/TO_MERGE/ace/sys_cargo/Defines.hpp b/TO_MERGE/ace/sys_cargo/Defines.hpp new file mode 100644 index 0000000000..dd7d2d1b98 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/Defines.hpp @@ -0,0 +1,318 @@ +#define CT_STATIC 0 +#define CT_BUTTON 1 +#define CT_EDIT 2 +#define CT_SLIDER 3 +#define CT_COMBO 4 +#define CT_LISTBOX 5 +#define CT_TOOLBOX 6 +#define CT_CHECKBOXES 7 +#define CT_PROGRESS 8 +#define CT_HTML 9 +#define CT_STATIC_SKEW 10 +#define CT_ACTIVETEXT 11 +#define CT_TREE 12 +#define CT_STRUCTURED_TEXT 13 +#define CT_CONTEXT_MENU 14 +#define CT_CONTROLS_GROUP 15 +#define CT_XKEYDESC 40 +#define CT_XBUTTON 41 +#define CT_XLISTBOX 42 +#define CT_XSLIDER 43 +#define CT_XCOMBO 44 +#define CT_ANIMATED_TEXTURE 45 +#define CT_OBJECT 80 +#define CT_OBJECT_ZOOM 81 +#define CT_OBJECT_CONTAINER 82 +#define CT_OBJECT_CONT_ANIM 83 +#define CT_LINEBREAK 98 +#define CT_USER 99 +#define CT_MAP 100 +#define CT_MAP_MAIN 101 +#define ST_POS 0x0F +#define ST_HPOS 0x03 +#define ST_VPOS 0x0C +#define ST_LEFT 0x00 +#define ST_RIGHT 0x01 +#define ST_CENTER 0x02 +#define ST_DOWN 0x04 +#define ST_UP 0x08 +#define ST_VCENTER 0x0c +#define ST_TYPE 0xF0 +#define ST_SINGLE 0 +#define ST_MULTI 16 +#define ST_TITLE_BAR 32 +#define ST_PICTURE 48 +#define ST_FRAME 64 +#define ST_BACKGROUND 80 +#define ST_GROUP_BOX 96 +#define ST_GROUP_BOX2 112 +#define ST_HUD_BACKGROUND 128 +#define ST_TILE_PICTURE 144 +#define ST_WITH_RECT 160 +#define ST_LINE 176 +#define ST_SHADOW 0x100 +#define ST_NO_RECT 0x200 +#define ST_KEEP_ASPECT_RATIO 0x800 +#define ST_TITLE ST_TITLE_BAR + ST_CENTER +#define SL_DIR 0x400 +#define SL_VERT 0 +#define SL_HORZ 0x400 +#define SL_TEXTURES 0x10 +#define LB_TEXTURES 0x10 +#define LB_MULTI 0x20 +#define FontM "PuristaMedium" +#define FontHTML "PuristaMedium" + + +class ACE_CARGO_RscBgFrame { + type=CT_STATIC; + idc=-1; + style=ST_FRAME; + colorBackground[]={0.4, 0.4, 0.4, 0.75}; + colorText[]={0, 0, 0, 1}; + font=FontM; + SizeEX=0.025; + text=""; +}; +class ACE_CARGO_RscBackground { + colorBackground[]={0.4, 0.4, 0.4, 0.75}; + text=""; + type=CT_STATIC; + idc=-1; + style=ST_LEFT; + colorText[]={1, 1, 1, 1}; + font=FontM; + sizeEx=0.04; +}; +class ACE_CARGO_RscPicture { + type=CT_STATIC; + idc=-1; + style=ST_PICTURE; + colorBackground[]={0, 0, 0, 0}; + colorText[]={1, 1, 1, 1}; + font=FontM; + sizeEx=0.02; + text=""; +}; +class ACE_CARGO_RscButton { + type=CT_BUTTON; + idc=-1; + style=ST_CENTER; + colorText[]={0, 0, 0, 1}; + font=FontHTML; + sizeEx=0.025; + soundPush[]={"", 0.2, 1}; + soundClick[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundClick",0.09,1}; + soundEscape[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundEscape",0.09,1}; + default=false; + text=""; + action=""; + colorActive[]={0, 0, 0, 0}; + colorDisabled[]={0, 0, 0, 0.1}; + colorBackground[]={0,0,0,0.3}; + colorBackgroundActive[]={0,0,0,0.4}; + colorBackgroundDisabled[]={0,0,0,0.3}; + colorFocused[]={0.84,1,0.55,1}; + colorShadow[]={1, 1, 1, 0.1}; + colorBorder[]={0, 0, 0, 0.1}; + offsetX=0; + offsetY=0; + offsetPressedX=0; + offsetPressedY=0; + borderSize=0; + soundEnter[]={"", 0.15, 1}; +}; +class ACE_CARGO_RscButton2:ACE_CARGO_RscButton { + x=-1.0; + y=-1.0; + idc=-1; + w=0.01; + h=0.01; + default=true; +}; +class ACE_CARGO_RscShortcutButton { + type = 16; + idc = -1; + style = 0; + default = 0; + w = 0.183825; + h = 0.104575; + color[] = {0.543,0.5742,0.4102,1}; + color2[] = {0.95,0.95,0.95,1}; + colorBackground[] = {1,1,1,1}; + colorbackground2[] = {1,1,1,0.4}; + colorDisabled[] = {1,1,1,0.25}; + periodFocus = 1.2; + periodOver = 0.8; + class HitZone { + left = 0.004; + top = 0.029; + right = 0.004; + bottom = 0.029; + }; + class ShortcutPos { + left = 0.0145; + top = 0.026; + w = 0.0392157; + h = 0.0522876; + }; + class TextPos { + left = 0.05; + top = 0.034; + right = 0.005; + bottom = 0.005; + }; + animTextureNormal = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\normal_ca.paa"; + animTextureDisabled = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\disabled_ca.paa"; + animTextureOver = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\over_ca.paa"; + animTextureFocused = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\focus_ca.paa"; + animTexturePressed = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\down_ca.paa"; + animTextureDefault = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\normal_ca.paa"; + period = 0.4; + font = "PuristaMedium"; + size = 0.03921; + sizeEx = 0.03921; + text = ""; + soundEnter[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundEnter",0.09,1}; + soundPush[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundPush",0.09,1}; + soundClick[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundClick",0.09,1}; + soundEscape[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundEscape",0.09,1}; + action = ""; + class Attributes { + font = "PuristaMedium"; + color = "#E5E5E5"; + align = "left"; + shadow = "true"; + }; + class AttributesImage { + font = "PuristaMedium"; + color = "#E5E5E5"; + align = "left"; + }; + textureNoShortcut = "#(argb,8,8,3)color(0,0,0,0)"; +}; +class ACE_CARGO_RscShortcutButtonMain: ACE_CARGO_RscShortcutButton { + type = 16; + idc = -1; + style = 0; + default = 0; + w = 0.313726; + h = 0.104575; + color[] = {0.543,0.5742,0.4102,1}; + colorDisabled[] = {1,1,1,0.25}; + colorFocused[] = {1, 1, 1, 0};//Check + colorBackgroundFocused[] = {1, 1, 1, 0};//Check + class HitZone { + left = 0; + top = 0; + right = 0; + bottom = 0; + }; + class ShortcutPos { + left = 0.0204; + top = 0.026; + w = 0.0392157; + h = 0.0522876; + }; + class TextPos { + left = 0.08; + top = 0.034; + right = 0.005; + bottom = 0.005; + }; + animTextureNormal = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\normal_ca.paa"; + animTextureDisabled = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\disabled_ca.paa"; + animTextureOver = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\over_ca.paa"; + animTextureFocused = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\focus_ca.paa"; + animTexturePressed = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\down_ca.paa"; + animTextureDefault = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\normal_ca.paa"; + period = 0.5; + font = "PuristaMedium"; + size = 0.03921; + sizeEx = 0.03921; + text = ""; + soundEnter[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundEnter",0.09,1}; + soundPush[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundPush",0.09,1}; + soundClick[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundClick",0.09,1}; + soundEscape[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundEscape",0.09,1}; + action = ""; + class Attributes { + font = "PuristaMedium"; + color = "#E5E5E5"; + align = "left"; + shadow = "false"; + }; + class AttributesImage { + font = "PuristaMedium"; + color = "#E5E5E5"; + align = "false"; + }; +}; +class ACE_CARGO_RscEdit { + type=CT_EDIT; + idc=-1; + style=ST_LEFT; + font=FontHTML; + sizeEx=0.02; + colorText[]={0, 0, 0, 1}; + colorSelection[]={0.5, 0.5, 0.5, 1}; + autocomplete=false; + text=""; +}; +class ACE_CARGO_RscLB_C { + style=ST_LEFT; + idc=-1; + colorSelect[]={0.4, 0.4, 0.4, 1}; + colorSelectBackground[]={0.2, 0.2, 0.2, 1}; + colorText[]={0.2, 0.2, 0.2, 1}; + colorBackground[]={0.4, 0.4, 0.4, 1}; + font=FontHTML; + sizeEx=0.025; + rowHeight=0.04; +}; +class ACE_CARGO_RscListBox:ACE_CARGO_RscLB_C { + soundSelect[]={"", 0.1, 1}; + type=CT_LISTBOX; +}; +class ACE_CARGO_RscCombo: ACE_CARGO_RscLB_C { + sizeEx=0.02; + type=CT_COMBO; + wholeHeight=0.3; + soundSelect[]={"", 0.15, 1}; + soundExpand[]={"", 0.15, 1}; + soundCollapse[]={"", 0.15, 1}; + maxHistoryDelay = 1; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + class ScrollBar { + color[] = {1,1,1,0.6}; + colorActive[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,0.3}; + thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; + }; + color[] ={0,0,0,0.6}; + colorActive[] ={0,0,0,1}; + colorDisabled[] ={0,0,0,0.3}; + colorSelectBackground[] ={0.543,0.5742,0.4102,1}; +}; +class ACE_CARGO_RscSliderH { + access=0; + type=CT_SLIDER; + idc=-1; + sizeEx=0.025; + style=1024; + color[]={0.2, 0.2, 0.2, 1}; + colorActive[]={1, 1, 1, 1}; +}; +class ACE_CARGO_RscSliderV { + access=0; + type=CT_SLIDER; + idc=-1; + sizeEx=0.025; + style=0; + color[]={0.2, 0.2, 0.2, 1}; + colorActive[]={1, 1, 1, 1}; +}; \ No newline at end of file diff --git a/TO_MERGE/ace/sys_cargo/Dialog.hpp b/TO_MERGE/ace/sys_cargo/Dialog.hpp new file mode 100644 index 0000000000..4cb6e7b39f --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/Dialog.hpp @@ -0,0 +1,178 @@ +/* ace_sys_cargo | (c) 2013 by rocko */ + +#include "Defines.hpp" + +#define __X SafeZoneX +#define __Y SafeZoneY +#define __W SafeZoneW +#define __H SafeZoneH + +#define UICOMBO 5 // LISTBOX + +class ACE_CARGOUIList { + w = 0.275; + h = 0.04; + colorSelect[] = {0.023529,0,0.0313725,1}; + colorText[] = {0.023529,0,0.0313725,1}; + colorBackground[] = {0.95,0.95,0.95,1}; + colorSelectBackground[] = {0.543,0.5742,0.4102,1}; + colorScrollbar[] = {0.023529,0,0.0313725,1}; + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + wholeHeight = 0.45; + color[] = {0,0,0,0.6}; + colorActive[] = {0,0,0,1}; + colorDisabled[] = {0,0,0,0.3}; + font = "PuristaMedium"; + sizeEx = 0.029; + soundSelect[] = {"",0.1,1}; + soundExpand[] = {"",0.1,1}; + soundCollapse[] = {"",0.1,1}; + maxHistoryDelay = 1; + class listScrollBar { + color[] = {1, 1, 1, 0.6}; + colorActive[] = {1, 1, 1, 1}; + colorDisabled[] = {1, 1, 1, 0.3}; + thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; + }; +}; + +class ACE_CARGOUIComboBox: ACE_CARGOUIList { + type = UICOMBO; + style = 0; + idc = -1; + sizeEx = 0.025; + wholeHeight = 0.3; +}; + +class ACE_CARGO_RscText { + type = CT_STATIC; + idc = -1; + style = ST_LEFT; + x = 0.0; + y = 0.0; + w = 0.3; + h = 0.03; + sizeEx = 0.023; + colorBackground[] = {0.5, 0.5, 0.5, 0.75}; + colorText[] = { 0, 0, 0, 1 }; + font = "PuristaMedium"; + text = ""; +}; + +class ACE_Cargo_List { + name="ACE_Cargo_List"; + idd=-1; + movingEnable=0; + objects[]={}; + onLoad = "uiNamespace setVariable ['ACE_Cargo_List', _this select 0];['back'] call ace_sys_cargo_fnc_onload"; + onUnload = "[ace_sys_cargo_vehicle,objnull,0,0] call ace_sys_cargo_fnc_cbusy;"; + class controlsBackground { + class BG: ACE_CARGO_RscText { + idc = -1; + type = 0; + style = 48; + x = 0.270792 * safezoneW + safezoneX; + y = 0.224911 * safezoneH + safezoneY; + w = 0.455752 * safezoneW; + h = 0.547272 * safezoneH; + colorText[] = {1, 1, 1, 1}; + colorBackground[] = {0,0,0,0}; + text = "z\ace\addons\sys_cargo\data\rsc\ace_ui_background_ca.paa"; + font = "PuristaMedium"; + sizeEx = 0.032; + }; + }; + class controls { + class Title: ACE_CARGO_RscText { + idc = 30; + x = 0.289755 * safezoneW + safezoneX; + y = 0.231139 * safezoneH + safezoneY; + w = 0.0458417 * safezoneW; + h = 0.0550178 * safezoneH; + sizeEx = 0.05; + colorBackground[] = {1, 1, 1, 0.0}; + colorText[] = {0.643, 0.5742, 0.4102, 1.0}; + text = ""; + }; + class Content: ACE_CARGOUIComboBox { + idc = 99; + text = ""; + x = 0.277061 * safezoneW + safezoneX; + y = 0.283526 * safezoneH + safezoneY; + w = 0.416083 * safezoneW; + h = 0.322891 * safezoneH; + colorSelect[] = {1, 1, 1, 1}; + colorText[] = {1, 1, 1, 1}; + colorBackground[] = {0.8,0.8,0.8,1}; + colorSelectBackground[] = {0, 0, 0, 1}; + colorScrollbar[] = {0.2, 0.2, 0.2, 1}; + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + wholeHeight = 0.45; + rowHeight = 0.06; + color[] = {0.8, 0.8, 0.8, 1}; + colorActive[] = {0,0,0,1}; + colorDisabled[] = {0,0,0,0.3}; + font = "PuristaMedium"; + sizeEx = 0.035; + soundSelect[] = {"",0.1,1}; + soundExpand[] = {"",0.1,1}; + soundCollapse[] = {"",0.1,1}; + maxHistoryDelay = 1; + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + + class listScrollBar { + color[] = {1, 1, 1, 0.6}; + colorActive[] = {1, 1, 1, 1}; + colorDisabled[] = {1, 1, 1, 0.3}; + thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; + }; + //onLBSelChanged = QUOTE([_this,'back'] call FUNC(lbselchanged)); + onLBSelChanged = "[_this,'back'] call ace_sys_cargo_fnc_lbselchanged"; + }; + + class Apply_B: ACE_CARGO_RscShortcutButtonMain { + idc=10; + x = 0.451603 * safezoneW + safezoneX; + y = 0.618615 * safezoneH + safezoneY; + w = 0.103494 * safezoneW; + h = 0.0451332 * safezoneH; + size = 0.02; + sizeEx = 0.02; + text = $STR_DIAG_ACE_CARGO_UNLOAD; + //action = QUOTE([GVAR(vehicle),'back'] call FUNC(unload)); + action = "[ace_sys_cargo_vehicle,'back'] call ace_sys_cargo_fnc_unload"; + }; + + class Quit_B: Apply_B { + idc = 20; + x = 0.566379 * safezoneW + safezoneX; + text = $STR_DIAG_ACE_CARGO_CANCEL; + action = "closeDialog 0;"; + }; + }; +}; + +class ACE_CargoFront_List: ACE_Cargo_List { + name="ACE_CargoFront_List"; + onLoad = "uiNamespace setVariable ['ACE_CargoFront_List', _this select 0];['front'] call ace_sys_cargo_fnc_onload"; + class controls: controls { + class Title: Title {}; + class Content: Content { + onLBSelChanged = "[_this,'front'] call ace_sys_cargo_fnc_lbselchanged"; + }; + class Apply_B: Apply_B { + action = "[ace_sys_cargo_vehicle,'front'] call ace_sys_cargo_fnc_unload"; + }; + class Quit_B: Quit_B {}; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/ace/sys_cargo/XEH_postInit.sqf b/TO_MERGE/ace/sys_cargo/XEH_postInit.sqf new file mode 100644 index 0000000000..ae0cc4c176 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/XEH_postInit.sqf @@ -0,0 +1,9 @@ +/* ace_sys_cargo | (c) 2010,2011 by rocko */ + +#include "script_component.hpp" + +ADDON = false; + +//["All", [ace_sys_interaction_key], 2, [QPATHTO_F(fnc_menuDef), "main"]] call CBA_ui_fnc_add; + +ADDON = true; \ No newline at end of file diff --git a/TO_MERGE/ace/sys_cargo/XEH_preInit.sqf b/TO_MERGE/ace/sys_cargo/XEH_preInit.sqf new file mode 100644 index 0000000000..6b5bef730b --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/XEH_preInit.sqf @@ -0,0 +1,295 @@ +/* ace_sys_cargo | (c) 2010,2011 by rocko */ + +//#define DEBUG_MODE_FULL +#include "script_component.hpp" +#include "\a3\editor_f\Data\Scripts\dikCodes.h" + +#define __CONF_MAGAZINES configFile >> "CfgMagazines" +#define __CONF_WEAPONS configFile >> "CfgWeapons" + +ADDON = false; + +if (!isDedicated) then { + ["All", [ace_sys_interaction_key], 2, [QPATHTO_F(fnc_menuDef), "main"]] call CBA_ui_fnc_add; +}; + +PREP(carry); +PREP(carry2); +PREP(drag); +PREP(push); +PREP(load); +PREP(loadCargo); // Workaround +PREP(unloadCargo); // Workaround +PREP(listCargo); // Workaround +PREP(unload); +PREP(onload); +PREP(view); + +PREP(init); + +[QGVAR(setvel), {(_this select 0) setVelocity (_this select 1)}] call ACE_fnc_addReceiverOnlyEventhandler; + +// TODO: Complete rewrite needed: +/* +Function should determine wether an object can be dragged or carried or carried in pairs +Push option ONLY for boat type vehicles (to drop them back into water) + +Carrying objects should be 0 - 30 kg (Carring above 20 kilo slows you down) +Dragging should be 30 - 80 kg +Carrying in pairs should be 80 - 180 kg + +An object that can be dragged should also be able to be carried in pairs + +Everything > 180 kg, needs to be loaded and transported by another vehicle or lifted by air + +*/ + +FUNC(determineCargo) = { +// TODO: Make easier.... +// Immobile: 0 +// Carry: 1 Light objects weight exceeds no more than 20 kg!!! +// Drag: 2 Heavy objects that could not be CARRIED, weight > 15 kg < 100kg +// Push: 3 Heavy objects that could not be CARRIED or DRAGGED, weight > 100 kg! +// Carry with 2 people: 4 Heavy objects (if _type is ((2 && > 80) || (3 && < 200) && _helper) but a second player (_helper) is close ~5 meters) + +// Rev. 2: +// Carry: 1 (0-30 kg) +// Drag: 2 (30-80kg) +// Carry 2 4 (80-145kg) +// Drag OR Carry 2 5 (30-145kg and because its cool) // One override comes from CSW direct, other entities should get a special config entry (e.g ammoboxes etc) + + private ["_weight","_volume","_canDrag","_canCarry","_canPush","_type"]; + + // Calculate volume of cargo to determine weight. + PARAMS_2(_target,_method); + _volume = 0; + _weight = 0; + _canDrag = false; + _canPush = false; + _canCarry = false; + if (getNumber (configFile >> "CfgVehicles" >> typeOf _target >> "ACE_canBeCargo") == 1) then { + _weight = [_target] call FUNC(weight); + + _canCarry = (_weight < __MAXCARRYWEIGHT); + _canDrag = (!_canCarry && {(_weight + __MAXCARRYWEIGHT) <= __MAXDRAGWEIGHT}); + + TRACE_2("DC",_volume,_weight); + switch (true) do { + // PUSH for Boats + case (_target isKindOf "Zodiac" || {_target isKindOf "PBX"}): { _canDrag = false; _canPush = true; _canCarry = false; }; + case (_target isKindOf "ACE_Stretcher"): { _canDrag = false; _canPush = false; _canCarry = false; }; + }; + // Check sys_crewserved override + if (getNumber(configFile >> "CfgVehicles" >> typeOf _target >> "ACE" >>"ACE_CREWSERVED" >> "canDrag") == 1) then { + _canDrag = true; _canPush = false; _canCarry = false; + }; + if (getNumber(configFile >> "CfgVehicles" >> typeOf _target >> "ACE" >>"ACE_CREWSERVED" >> "canCarry") == 1) then { + _canDrag = true; _canPush = false; _canCarry = true; + }; + // Check if a shot mortar + if (_target getVariable ["ace_sys_arty_shoton",false]) then { + _canDrag = false; _canCarry = false; + }; + }; + + if (_canCarry && {!_canDrag} && {!_canPush}) then { _type = 1; }; + if (!_canCarry && {_canDrag} && {!_canPush}) then { _type = 2; }; + if (_canPush && {!_canDrag} && {!_canCarry}) then { _type = 3; }; + if (!_canPush && {!_canDrag} && {!_canCarry}) then { _type = 0; }; + if (!_canCarry && {!_canDrag} && {!_canPush} && {_weight <= __MAXCARRYWEIGHTBY2}) then { _type = 4; }; + if (_canCarry && {_canDrag} && {!_canPush} && {_weight <= __MAXCARRYWEIGHTBY2}) then { _type = 5; }; + + + if (_method == "set") then { + _target setVariable [QGVAR(type),_type,true]; + }; + TRACE_1("DC Carrying method",_type); + _type +}; + +FUNC(clearCargo) = { + private ["_cargolist","_cargofrontlist"]; + PARAMS_1(_vehicle); + _cargolist = [_vehicle] call ACE_fnc_listCargo; + _cargofrontlist = _vehicle getVariable [QGVAR(content_front),[]]; + if (count _cargolist < 1 && {count _cargofrontlist < 1}) exitWith {}; + { + deleteVehicle _x; + } foreach _cargolist + _cargofrontlist; + // TODO: Determine explosives loaded? Create Secondaries for loaded shells, ammoboxes, ammocans etc + // Perhaps should be called from external with explosions, sys_destruction ... + _vehicle setVariable [QGVAR(content),[],true]; + _vehicle setVariable [QGVAR(content_front),[],true]; +}; + +FUNC(determineFrontCargo) = { + PARAMS_1(_vehicle); + private ["_frontLoadingCapability","_l1","_l2","_pl1","_pl2","_pos","_chksum","_max","_cur","_capacity_full"]; + _frontLoadingCapability = true; + if !((typeOf _vehicle) isKindOf "Car") exitWith { // Only on class Car for now... + [false,true,[0,0,0]] + }; + // TODO: Get class ACE value + // Find position between frontlights + _l1 = getText(configFile >> "CfgVehicles" >> typeOf _vehicle >> "Reflectors" >> "Left" >> "selection"); + _l2 = getText(configFile >> "CfgVehicles" >> typeOf _vehicle >> "Reflectors" >> "Right" >> "selection"); + _pl1 = _vehicle selectionPosition _l1; + _pl2 = _vehicle selectionPosition _l2; + _pos = [0,(_pl1 select 1)+0.1,(_pl2 select 2)-0.4]; + _chksum = (_pos select 0)+(_pos select 1)+(_pos select 2); + // TODO: Error if model not conform or has no lights + + // Return position to attach and bool value for 2 in 1 function + if (_chksum == 0.1) then { + _frontLoadingCapability = false; + }; + //_max = getNumber(configFile >> "CfgVehicles" >> typeOf _vehicle >> "ACE" >> "ACE_CARGO" >> "FrontLoadingCapacity"); + _max = 1; + _cur = _vehicle getVariable [QGVAR(content_front),[]]; + _cur = count _cur; + _capacity_free = if (_max - _cur == 0) then {false} else {true}; + [_frontLoadingCapability,_capacity_free,_pos] +}; + +FUNC(attachToFront) = { + PARAMS_2(_cargo,_vehicle); + private ["_currentFrontCargo","_pos"]; + _pos = (_vehicle call FUNC(determineFrontCargo)) select 2; + [_cargo,"set"] call FUNC(determineCargo); + ["","","",["stop",player getVariable QGVAR(carried_object)]] call FUNC(carry); + _cargo attachTo [_vehicle,_pos,""]; + _cargo setVariable [QGVAR(attached_front),true,true]; + _currentFrontCargo = _vehicle getVariable [QGVAR(content_front),[]]; + _currentFrontCargo set [count _currentFrontCargo,_cargo]; + _vehicle setVariable [QGVAR(content_front),_currentFrontCargo]; +}; + +FUNC(detachFront) = { + PARAMS_1(_cargo); + //private "_currentFrontCargo"; + detach _cargo; + _cargo setVariable [QGVAR(attached_front),false,true]; + //_currentFrontCargo = _vehicle getVariable [QGVAR(content_front),[]]; + //if (count _currentFrontCargo < 1) exitWith {}; + //_currentFrontCargo - [_cargo]; + //_vehicle setVariable [QGVAR(content_front),_currentFrontCargo]; +}; + +// TODO: Outsource funcs to external + +// Busy func +FUNC(busy) = { + PARAMS_2(_v,_s); + if (_s == 1) then { + _v setVariable [QGVAR(busy), true, true]; + } else { + _v setVariable [QGVAR(busy), false, true]; + }; +}; + +// Easy set/reset busy states +FUNC(cbusy) = { + PARAMS_4(_v,_c,_sv,_sc); + if (_sv == 1) then { [_v,1] call FUNC(busy); } else { [_v,0] call FUNC(busy); }; + if (_sc == 1) then { [_c,1] call FUNC(busy); } else { [_c,0] call FUNC(busy); }; +}; + +// Volume stuff +FUNC(volume) = { + PARAMS_1(_target); + _bbox = boundingBox _target; + _bc = abs((_bbox select 0) select 0) + abs((_bbox select 1) select 0); + _lc = abs((_bbox select 0) select 1) + abs((_bbox select 1) select 1); + _hc = abs((_bbox select 0) select 2) + abs((_bbox select 1) select 2); + _volume = (_lc * _bc * _hc); + TRACE_1("V Volume",_volume); + _volume; +}; + +// Weight stuff +FUNC(weight) = { + PARAMS_1(_cargo); + private ["_content_weight","_w1","_w2","_volume","_baseweight","_weight"]; + _content_weight = { + PARAMS_2(_items,_type); + private ["_cargo_weight","_item"]; + _cargo_weight = 0; + _item = _items select 0; + if (count _item > 0) then { + _count = _items select 1; + for "_i" from 0 to (count _item - 1) do { + _item_x = _item select _i; + _count_x = _count select _i; + _ItemWeight = switch _type do { + case "m": { 0.075 * getNumber(__CONF_MAGAZINES >> _item_x >> "mass") }; + default { 0.075* getNumber(__CONF_WEAPONS >> _item_x >> "mass") }; + }; + _ItemWeight = _ItemWeight * _count_x; + _cargo_weight = _cargo_weight + _ItemWeight; + }; + //_cargo_weight = _cargo_weight + _cargo_weight; + }; + _cargo_weight; + }; + _w1 = [getMagazineCargo _cargo, "m"] call _content_weight; + _w2 = [getWeaponCargo _cargo, "w"] call _content_weight; + #ifdef DEBUG_MODE_FULL + diag_log format["Weight of all weapons in box: %1",_w2]; + diag_log format["Weight of all magazines in box: %1",_w1]; + #endif + _volume = _cargo call FUNC(volume); + // Check if a weight value was defined and use this prior to calculated weight + _baseweight = if (isNumber(configFile >> "CfgVehicles" >> typeOf _cargo >> "mass")) then { + 0.075 * getNumber(configFile >> "CfgVehicles" >> typeOf _cargo >> "mass"); + } else { + (_volume * 0.5); + }; + TRACE_1("W Weight",_baseweight); + _weight = _baseweight + _w1 + _w2; + _weight; +}; + +GVAR(busy) = { + _this getVariable [QGVAR(busy), false] +}; +GVAR(BOXBusy) = { + PARAMS_2(_box,_busy); + _box setVariable [QGVAR(BOXBusy), _busy == 1, true]; +}; + +FUNC(dragkeydown) = { + // Eventhandler to stop "C" key press while dragging + PARAMS_5(_control,_dikCode,_shift,_ctrl,_alt); + _dikCode_check = actionKeys "TactToggle" + actionKeys "stand" + actionKeys "prone" + actionkeys "crouch" + actionkeys "moveup" + actionkeys "movedown"; //stop standing up while dragging + (_dikCode in _dikCode_check) +}; + +FUNC(lbselchanged) = { + private ["_disp", "_ctrl","_ui"]; + PARAMS_2(_data,_location); + _ui = if (_location == "back") then { "ACE_Cargo_List" } else { "ACE_CargoFront_List" }; + _disp = uiNamespace getVariable _ui; + _ctrl = _disp displayCtrl 10; + if ((_data select 1) != -1) then { + if (!(ctrlEnabled _ctrl) && !(player in crew GVAR(vehicle) || player getVariable [QGVAR(carrying),false])) then { + _ctrl ctrlEnable true; + _ctrl ctrlCommit 0; + }; + } else { + if (ctrlEnabled _ctrl) then { + _ctrl ctrlEnable false; + _ctrl ctrlCommit 0; + }; + }; +}; + +//FUNC(respawn) = { +// (findDisplay 46) displayRemoveEventHandler ["KeyDown", GVAR(drag_keyDownEHId)]; +//}; + +//FUNC(standup) = { +// PARAMS_1(_unit); +// _unit addAction ["Stand up", QPATHTO_F(fnc_exec), _unit, 0, false, true, "", "local _target"]; +//}; + +ADDON = true; diff --git a/TO_MERGE/ace/sys_cargo/box/$PBOPREFIX$ b/TO_MERGE/ace/sys_cargo/box/$PBOPREFIX$ new file mode 100644 index 0000000000..4f2ee63135 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/box/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\sys_cargo\box \ No newline at end of file diff --git a/TO_MERGE/ace/sys_cargo/box/config.cpp b/TO_MERGE/ace/sys_cargo/box/config.cpp new file mode 100644 index 0000000000..766b9ba034 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/box/config.cpp @@ -0,0 +1,12 @@ +#include "script_component.hpp" +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {QUOTE(MAIN_ADDON)}; + version = VERSION; + }; +}; + + diff --git a/TO_MERGE/ace/sys_cargo/box/license.txt b/TO_MERGE/ace/sys_cargo/box/license.txt new file mode 100644 index 0000000000..7113bf4340 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/box/license.txt @@ -0,0 +1,79 @@ +License (short) +=============== + +You are free: +- to Share to copy, distribute and transmit the work + +Under the following conditions: +- Attribution You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). +- Noncommercial You may not use this work for commercial purposes. +- No Derivative Works You may not alter, transform, or build upon this work. + +With the understanding that: + +Waiver Any of the above conditions can be waived if you get permission from the copyright holder. + +Public Domain Where the work or any of its elements is in the public domain under applicable law, that status is in no way affected by the license. + +Other Rights In no way are any of the following rights affected by the license: + - Your fair dealing or fair use rights, or other applicable copyright exceptions and limitations; + - The author's moral rights; + - Rights other persons may have either in the work itself or in how the work is used, such as publicity or privacy rights. + +Notice For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page. + + +Full license text +================= + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. + +1. Definitions + +"Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. +"Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. +"Distribute" means to make available to the public the original and copies of the Work through sale or other transfer of ownership. +"Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. +"Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. +"Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. +"You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. +"Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. +"Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. +2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: + +to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; and, +to Distribute and Publicly Perform the Work including as incorporated in Collections. +The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats, but otherwise you have no rights to make Adaptations. Subject to 8(f), all rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Section 4(d). + +4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: + +You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. +You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. +If You Distribute, or Publicly Perform the Work or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work. The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Collection, at a minimum such credit will appear, if a credit for all contributing authors of Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. +For the avoidance of doubt: + +Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; +Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License if Your exercise of such rights is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b) and otherwise waives the right to collect royalties through any statutory or compulsory licensing scheme; and, +Voluntary License Schemes. The Licensor reserves the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License that is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b). +Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + +This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. +Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. +8. Miscellaneous + +Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. +If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. +No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. +This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. +The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. diff --git a/TO_MERGE/ace/sys_cargo/box/script_component.hpp b/TO_MERGE/ace/sys_cargo/box/script_component.hpp new file mode 100644 index 0000000000..483522b490 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/box/script_component.hpp @@ -0,0 +1,14 @@ +#define COMPONENT sys_cargo_box +#define MAINCOMPONENT sys_cargo +#define SUBCOMPONENT box +#define ADDONS sys_cargo_box + +#ifdef MAINCOMPONENT + #ifdef SUBCOMPONENT + #define PATHTO_SYS(var1,var2,var3) \MAINPREFIX\##var1\SUBPREFIX\MAINCOMPONENT\SUBCOMPONENT\##var3.sqf + #define PATHTOF_SYS(var1,var2,var3) \MAINPREFIX\##var1\SUBPREFIX\MAINCOMPONENT\SUBCOMPONENT\##var3 + #define PATHTOF2_SYS(var1,var2,var3) MAINPREFIX\##var1\SUBPREFIX\MAINCOMPONENT\SUBCOMPONENT\##var3 + #endif +#endif +#include "\z\ace\addons\main\script_mod.hpp" +#include "\z\ace\addons\main\script_macros.hpp" diff --git a/TO_MERGE/ace/sys_cargo/config.cpp b/TO_MERGE/ace/sys_cargo/config.cpp new file mode 100644 index 0000000000..8c857cfd93 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/config.cpp @@ -0,0 +1,21 @@ +#include "script_component.hpp" + +#include "\z\ace\addons\main\script_config.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = { "ace_common", "ace_c_vehicle", "ace_c_weapon", "ace_sys_interaction" }; + version = VERSION; + author[] = {"Rocko"}; + }; +}; + +PRELOAD_ADDONS; + +#include "CfgVehicles.hpp" +#include "CfgEventHandlers.hpp" +#include "Dialog.hpp" +#include "CfgFunctions.hpp" diff --git a/TO_MERGE/ace/sys_cargo/data/rsc/ace_ui_background_ca.paa b/TO_MERGE/ace/sys_cargo/data/rsc/ace_ui_background_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..a2bf2a383efeb4a91be24c41bac4a261d0be8155 GIT binary patch literal 22052 zcmeI4v1$TA6h)sfArc5!rkpPbHmO9|C9vBV6g84IY0~El=3~;OOP4NxX6`H)E~x@m z;u+Y*(M9BN-a!`hV&C`e_P*b>DI!uzW!OKp4|TuSs{6iObag+{F}%K9uWt1CZ9bh{ zU%d|Jm*M<8pWfch>NT6LTQ<7pUB`zWe6AwCwh`Zt5tlnX`R`StL^M%!_Ql?51bhlS zoB;FTG?)*3zy~LQ4^D$V-~&E50eo;8^Z_66!3p4l)1VLdfDcXpADjk#zz2MA0{GxG z=mS3BgA>39r$Ha^0Uw+IJ~$2ffDicK1n|LW&_~10?13ut`6Tk1Zxo6o?|DWK1 zg*`m*fq9?@3Zqum!8|Yz%tM_9<{^s#J)j5lpw@sMWHF!z^x)Kbkn1> "CfgVehicles" >> typeOf _vehicle >> "ACE_canBeLoad") == 1) \ No newline at end of file diff --git a/TO_MERGE/ace/sys_cargo/fnc_carry.sqf b/TO_MERGE/ace/sys_cargo/fnc_carry.sqf new file mode 100644 index 0000000000..6aa145d305 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/fnc_carry.sqf @@ -0,0 +1,153 @@ +/* ace_sys_cargo | (c) 2010,2011 by rocko */ + +#include "script_component.hpp" + +#define CARRYOFFSET 0.5 + +private["_unit","_action","_box","_pos2","_dir","_modelPos","_params","_track"]; + +if (dialog) then { closeDialog 0; }; + +if (count _this < 2) then { + _params = ["","","",["start", _this select 0]]; +} else { + _params = _this; +}; + +// TODO: Check other interactions, entering a car while carrying something, ladders, dying + +//["","",_action,["stop",_box]] spawn FUNC(carry) + +_unit = player; +_action = (_params select 3) select 0; +_box = (_params select 3) select 1; // TODO: should be (_this select 0) + +switch _action do { + case "start": { + // Monitor Roadway LOD occlusion + _track = true; + + if (_unit getVariable [QGVAR(carrying),false] || {_unit getVariable [QGVAR(dragging),false]}) exitWith { + [localize "STR_ACE_CARGO_ERR_OCC",[1,0,0,1],true,0] spawn ace_fnc_visual; + }; + if (_box getVariable [QGVAR(busy),false]) exitWith { + [localize "STR_ACE_CARGO_ERR_OCC",[1,0,0,1],true,0] spawn ace_fnc_visual; + }; + if ((_unit distance _box) <= 2.5) then { + [objnull,_box,1,1] call FUNC(cbusy); + detach _box; + _safetyCarryOffset = _box getVariable [QGVAR(carryOffsetInc),0]; + _offset = 0.6 + _safetyCarryOffset; + _box attachTo [_unit,[0,_offset,1]]; // Obs: Boxes that have a roadway lod, cause player flying into air. Need to make sure box clips into player to avoid this OR move box that far away so that roadway lod makes no contact with player (0.4 = clipping, 0.7 = outbound) + _unit setVariable [QGVAR(carrying), true, false]; + _unit setVariable [QGVAR(carried_object),_box]; // TODO: Probably should be extended to all stuff we attachto player, so it becomes tracked + _box setDir (_dir - (getDir _unit)); + _unit selectWeapon (primaryWeapon _unit); + _unit switchMove "amovpercmstpslowwrfldnon"; //"amovpercmstpslowwrfldnon_player_idlesteady03"; + _weight = [_box] call FUNC(weight); + [_unit,_weight] call INC_MASS; // TODO: Get Weight + if (_weight > 13) then { + _unit forceWalk true; + }; + // TODO: Move to config properties to automatically decide what to do with special items + + + //Ruckcratechek + if (_box isKindOf "ACE_Rucksack_crate") then { + _box setVectorDirAndUp [[-0.0204803,-0.585819,0.810183],[0.00794978,-0.810423,-0.585792]]; + _track = false; + }; + //Artyshell + if (_box isKindOf "ACE_Arty_ShellHolder") then { + _box setVariable ["ACE_ARTY_OWNER", _unit, true]; + _unit setVariable ["ACE_ARTY_CARRY_SHELL", _box, false]; + _box attachTo [_unit,[0.2,0.5,1.15]]; + _track = false; + }; + + #define ACE_TEXT_RED(Text) ("" + ##Text + "") + + // TODO: Use displayName of carriedObject if it has one.... + _carry_action = _unit addAction[ACE_TEXT_RED((localize "STR_ACE_CARGO_CARRYRELASE")),QPATHTO_F(fnc_carry),["stop",_box],-100,false,false,"","_target == player"]; + _unit setVariable [QGVAR(carrying_action_index),_carry_action]; + //GVAR(drag_keyDownEHId) = (findDisplay 46) displayAddEventHandler ["KeyDown", "_this call ace_sys_cargo_fnc_dragkeydown"]; // Add "C" key down eventhandler + _fired_i = _unit addEventHandler ["fired", {(_this select 0) setVariable ["ace_sys_cargo_forcedrop",true]}]; + _getin_i = _unit addEventhandler ["getin",{(_this select 0) setVariable ["ace_sys_cargo_forcedrop",true];}]; + _unit setVariable [QGVAR(carryFEH),_fired_i]; + _unit setVariable [QGVAR(carryGIH),_getin_i]; + _unit setVariable [QGVAR(forcedrop),false]; + _box setVariable [QUOTE(GVARMAIN(attachedBy)), QUOTE(COMPONENT), true]; + }; + + // Service Loop + while { _unit getVariable QGVAR(carrying) } do { + _bugflyHeight1 = ((getposasl _box) select 2); //diag_log format ["h1: %1",_bugflyHeight1]; + sleep 0.25; + _bugflyHeight2 = ((getposasl _box) select 2); //diag_log format ["h2: %1",_bugflyHeight2]; + _animdrop = !(weaponLowered player); // ["aidlpercmstpsraswrfldnon_idlesteady04","aidlpercmstpsraswrfldnon_aiming01","aidlpercmstpsraswrfldnon_idlesteady02","aidlpercmstpsraswrfldnon_idlesteady03","aidlpercmstpsraswrfldnon_idlesteady01","aidlpercmstpsraswrfldnon_aiming02"]; + _standing = ((_unit call CBA_fnc_getUnitAnim) select 0) in ["stand"]; + _forcedrop = _unit getVariable [QGVAR(forcedrop),false]; + // DBG + //player sidechat format ["%1 %2 %3",_animdrop,_standing,_forcedrop]; + if (!_standing || {_animdrop} || {_forcedrop}) then { ["","",0,["stop",_box]] spawn FUNC(carry) }; + _bugflyRate = (_bugflyHeight2 - _bugflyHeight1) * 4; + //player globalchat format ["%1",_bugflyRate]; + if (_track && {speed _unit == 0} && {_bugflyRate > 10}) then { + _curBoxOffset = _box getVariable [QGVAR(carryOffsetInc),0]; + _newBoxOffset = _curBoxOffset + 0.2; + _box setVariable [QGVAR(carryOffsetInc),_newBoxOffset,true]; // Set new safety carrying offset to avoid further bugging + player setposATL [(getposATL player select 0), (getposATL player select 1), 0]; + ["","",0,["stop",_box]] spawn FUNC(carry); + }; + sleep 0.25; + }; + }; + case "stop": { + if (local _unit) then { localize "STR_ACE_CARGO_DROPPED" call ace_fnc_visual; }; + _box = (_this select 3) select 1; + + _bldg = [_unit,0.1] call ACE_fnc_inBuilding; + + _unit setVariable [QGVAR(carried_pos_end), getPosATL _unit, false]; + + + _posZ = if (_bldg) then { ((_unit modelToWorld [0,0,0]) select 2) - 0.05 } else { (getPosATL _unit) select 2 }; + _pos_end = _unit getVariable [QGVAR(carried_pos_end),(getPosATL _unit)]; + _pos_end set [0,(_pos_end select 0)+(sin (direction _unit) * 1.4)]; + _pos_end set [1,(_pos_end select 1)+(cos (direction _unit) * 1.4)]; + _pos_end set [2,_posZ]; + + detach _box; + _box setPosATL _pos_end; + + _unit setVariable [QGVAR(carried_pos_end), nil, false]; + _unit removeaction (_unit getVariable QGVAR(carrying_action_index)); + _unit setVariable [QGVAR(carrying), false, false]; + + [objnull,_box,0,0] call FUNC(cbusy); + + // Ruckcratecheck + if (_box isKindOf "ACE_Rucksack_crate") then { + _box setVectorDirAndUp [[-0.0204803,-0.585819,0.810183],[0.00794978,-0.810423,-0.585792]]; + }; + //Artyshell + if (_box isKindOf "ACE_Arty_ShellHolder") then { + _box setVariable ["ACE_ARTY_OWNER", nil, true]; + _unit setVariable ["ACE_ARTY_CARRY_SHELL", nil, false]; + }; + + _unit forceWalk false; + _weight = [_box] call FUNC(weight); + [_unit,0] call INC_MASS; // TODO: Get Weight + // Remove "C" key down eventhandler + //(findDisplay 46) displayRemoveEventHandler ["KeyDown", GVAR(drag_keyDownEHId)]; + _unit removeEventhandler ["fired",(_unit getVariable QGVAR(carryFEH))]; + _unit removeEventhandler ["getin",(_unit getVariable QGVAR(carryGIH))]; + _unit setVariable [QGVAR(carryFEH),-1]; + _unit setVariable [QGVAR(carryGIH),-1]; + _unit setVariable [QGVAR(forcedrop),false]; + _box setVariable [QUOTE(GVARMAIN(attachedBy)), "", true]; + }; +}; + +false diff --git a/TO_MERGE/ace/sys_cargo/fnc_carry2.sqf b/TO_MERGE/ace/sys_cargo/fnc_carry2.sqf new file mode 100644 index 0000000000..9550400c23 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/fnc_carry2.sqf @@ -0,0 +1,23 @@ +/* ace_sys_cargo | (c) 2010,2011 by rocko */ + +//#define DEBUG_MODE_FULL +#include "script_component.hpp" + +private "_var"; + +PARAMS_3(_component,_unit,_type); + +switch (_type) do { + case "CARRIER": { + if (_component getVariable [QGVAR(busy),false]) then { + [localize "STR_ACE_CARGO_ERR_OCC",[1,0,0,1],true,0] spawn ace_fnc_visual; + } else { + [_component,_unit,0,["front", "grab"]] execVM QPATHTO_C(ua_carry2.sqf); + }; + }; + case "HELPER": { + [_component,_unit,0,["back", "grab"]] execVM QPATHTO_C(ua_carry2.sqf); + }; +}; + +false diff --git a/TO_MERGE/ace/sys_cargo/fnc_drag.sqf b/TO_MERGE/ace/sys_cargo/fnc_drag.sqf new file mode 100644 index 0000000000..466df43c21 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/fnc_drag.sqf @@ -0,0 +1,106 @@ +/* ace_sys_cargo | (c) 2010,2011 by rocko */ + +#include "script_component.hpp" + +private["_unit","_action","_box","_pos2","_dir","_modelPos","_drag_action","_params","_modelPosZ"]; + +if (dialog) then { closeDialog 0; }; + +if (count _this < 2) then { + _params = ["","","",["start", _this select 0]]; +} else { + _params = _this; +}; + +_unit = player; +_action = (_params select 3) select 0; +_box = (_params select 3) select 1; // TODO: should be (_this select 0) +switch _action do { + case "start": { + if ({alive _x} count (crew _box) > 0) exitWith {}; + //if (_box call CBA_fnc_locked) exitWith {}; + if ((_unit distance _box) > 2.5) exitWith { [localize "STR_ACE_CARGO_ERR_NOWEP",[1,0,0,1],true,0] spawn ace_fnc_visual; }; + if (_unit getVariable [QGVAR(carrying),false] || {_unit getVariable [QGVAR(dragging),false]}) exitWith { + [localize "STR_ACE_CARGO_ERR_OCC",[1,0,0,1],true,0] spawn ace_fnc_visual; + }; + if (_box getVariable [QGVAR(busy),false]) exitWith { + [localize "STR_ACE_CARGO_ERR_OCC",[1,0,0,1],true,0] spawn ace_fnc_visual; + }; + if ((_unit distance _box) <= 2.5) then { + [objnull,_box,1,1] call FUNC(cbusy); + detach _box; + _unit playActionNow "grabDrag"; + _pos2 = getPosATL _box; + _dir = getDir _box; + _modelPos = _unit worldToModel _pos2; //is ATL format + if (_box isKindOf "StaticWeapon") then { + if (typeOf _box in ["ACE_M252","ACE_M224_1","ACE_2b14_82mm","ACE_120Tampella_Baseplate","ACE_120Tampella_Barrel"]) then { _modelPosZ = 0; } else { _modelPosZ = 0.8; }; + } else { _modelPosZ = 0; }; + + + + //_modelPosZ = if (typeOf _box in ["ACE_M252","ACE_M224_1","ACE_2b14_82mm"]) then { 0 }; // Argh!!1: TODO: Fix ACE mortar axis + _box attachTo [_unit,[_modelPos select 0,_modelPos select 1,_modelPosZ],""]; + _unit setVariable [QGVAR(dragging), true, false]; + _unit setVariable [QGVAR(dragged_object),_box]; // TODO: Probably should be extended to all stuff we attachto player, so it becomes tracked + _box setDir (_dir - (getDir _unit)); + //Ruckcratechek + if (_box isKindOf "ACE_Rucksack_crate") then { + _box setVectorDirAndUp [[-0.0204803,-0.585819,0.810183],[0.00794978,-0.810423,-0.585792]]; + }; + _box lock true; + #define ACE_TEXT_RED(Text) ("" + ##Text + "") + _drag_action = _unit addAction [ACE_TEXT_RED((localize "STR_ACE_CARGO_RELASE")),QPATHTO_F(fnc_drag),["stop",_box],-100,false,false,"","_target == player"]; + GVAR(drag_keyDownEHId) = (findDisplay 46) displayAddEventHandler ["KeyDown", "_this call ace_sys_cargo_fnc_dragkeydown"]; // Add "C" key down eventhandler + }; + + waitUntil { animationState _unit == "ACINPKNLMSTPSRASWRFLDNON" }; + + + _weight = ([_box] call FUNC(weight)) * sin 45; + [_unit,_weight] call INC_MASS; + + while { alive _unit && {_unit getVariable QGVAR(dragging)} } do { + sleep 0.5; + + if !(animationState _unit in ["acinpknlmstpsraswrfldnon","acinpknlmwlksraswrfldb"]) exitWith { + _unit setVariable [QGVAR(dragging), false, false]; + _unit setVariable [QGVAR(dragged_object),objNull]; + _unit switchMove "ACINPKNLMSTPSRASWRFLDNON"; + ["","",_drag_action,["stop",_box]] spawn FUNC(drag); + }; + }; + }; + case "stop": { + // Remove "C" key down eventhandler + (findDisplay 46) displayRemoveEventHandler ["KeyDown", GVAR(drag_keyDownEHId)]; + + // Dragging in building?? + _bldg = [_unit,0.1] call ACE_fnc_inBuilding; + + _box = (_this select 3) select 1; + _unit setVariable [QGVAR(dragged_pos_end), getPosATL _box, false]; + _box lock false; + _unit playAction "released"; + detach _box; + _posZ = if (_bldg) then { ((_unit modelToWorld [0,0,0]) select 2) - 0.05 } else { (getPosATL _unit) select 2 }; + _pos_end = _unit getVariable QGVAR(dragged_pos_end); + _box setPosATL [_pos_end select 0, _pos_end select 1, _posZ]; + _unit setVariable [QGVAR(dragged_pos_end), nil, false]; + _unit removeaction (_this select 2); + _unit setVariable [QGVAR(dragging), false, false]; + [objnull,_box,0,0] call FUNC(cbusy); + + // Ruckcratecheck + if (_box isKindOf "ACE_Rucksack_crate") then { + _box setVectorDirAndUp [[-0.0204803,-0.585819,0.810183],[0.00794978,-0.810423,-0.585792]]; + }; + if (_box isKindOf "StaticWeapon") then { + //_box setVariable ["ace_sys_crewserved_pitch",0,true]; + [_box] call ace_sys_crewserved_fnc_setPitch_stored; // Screwsup + }; + [_unit,0] call INC_MASS; + }; +}; + +false diff --git a/TO_MERGE/ace/sys_cargo/fnc_exec.sqf b/TO_MERGE/ace/sys_cargo/fnc_exec.sqf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/TO_MERGE/ace/sys_cargo/fnc_init.sqf b/TO_MERGE/ace/sys_cargo/fnc_init.sqf new file mode 100644 index 0000000000..b796199983 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/fnc_init.sqf @@ -0,0 +1,22 @@ +/* ace_sys_cargo | (c) 2014 by rocko */ +//#define DEBUG_MODE_FULL +#include "script_component.hpp" + +if (productVersion select 2 <= 110) exitWith {}; + +PARAMS_1(_vehicle); + +_m = getMass _vehicle; +_com = getCenterOfMass _vehicle; +_currentcontent = _vehicle getVariable [QGVAR(content), []]; +if (count _currentcontent > 0) then { + _vehicle setVariable [QGVAR(content), []]; + _error = format["You cannot bypass the loading function for (%1) - ",_vehicle]; TRACE_1("Content hack detected",""); + WARNING(_error); +}; + +_vehicle setVariable [QGVAR(mass),_m]; +_vehicle setVariable [QGVAR(comass),_com]; + +_vehicle setVariable [QGVAR(ready),true]; + diff --git a/TO_MERGE/ace/sys_cargo/fnc_listCargo.sqf b/TO_MERGE/ace/sys_cargo/fnc_listCargo.sqf new file mode 100644 index 0000000000..044638aa65 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/fnc_listCargo.sqf @@ -0,0 +1,27 @@ +/* +Function: ACE_fnc_listCargo + +Description: + Lists cargo of a vehicle. + +Parameters: + _vehicle - Vehicle to load cargo into. (Must exist) [Object] +Returns: + Array + +Example: + (begin example) + ["MyTruck"] call ACE_fnc_listCargo; + (end) + +Author: + rocko +*/ + +#include "script_component.hpp" + +PARAMS_1(_vehicle); + +_currentcargo = _vehicle getVariable [QGVAR(content), []]; +TRACE_1("",_currentcargo); +_currentcargo diff --git a/TO_MERGE/ace/sys_cargo/fnc_load.sqf b/TO_MERGE/ace/sys_cargo/fnc_load.sqf new file mode 100644 index 0000000000..33e7d0c5d2 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/fnc_load.sqf @@ -0,0 +1,105 @@ +/* ace_sys_cargo | (c) 2010,2011 by rocko */ +//#define DEBUG_MODE_FULL +#include "script_component.hpp" + +private["_unit","_action","_box","_pos2","_dir","_modelPos","_drag_action","_params","_process"]; + +if (dialog) then { closeDialog 0; }; + +PARAMS_2(_cargo,_vehicle); + +private "_dragnet"; +// Fix, when a player is dragging an object dragging doesn't stop, +_dragnet = player getVariable [QGVAR(dragging), false]; +if (_dragnet) exitWith { + (localize "STR_ACE_DRAGQUEENSTOP") spawn ace_fnc_visual; +}; +// Box is in process? +if (_cargo getVariable [QGVAR(busy),false]) exitWith { + [localize "STR_ACE_CARGO_ERR_OCC",[1,0,0,1],true,0] spawn ace_fnc_visual; +}; + +// Mexican hidden in a box? +if ({alive _x} count (crew _cargo) > 0) exitWith { (localize "STR_ACE_CARGO_ERR_MEXICO") spawn ace_fnc_visual; }; + +// Store each cargo element loaded into vehicle +_currentcontent = _vehicle getVariable [QGVAR(content), []]; +TRACE_1("Current content",_currentcontent); + +// Weight managment +// Max capacity and weight limits for the vehicle +_volume_vehicle = [_vehicle] call FUNC(volume); +_size_vehicle = sizeOf (typeOf _vehicle); +_weight_vehicle = floor (_volume_vehicle * _size_vehicle * 4); +_weight_vehicle_maxload = floor (_weight_vehicle / 5); +_weight_vehicle_current = 0; +if (count _currentcontent > 0) then { + { + private ["_w"]; + _w = [_x, 0] call FUNC(weight); + _weight_vehicle_current = _weight_vehicle_current + _w; + } foreach _currentcontent; +}; +TRACE_5("V S W Wmax Wcur",_volume_vehicle, _size_vehicle, _weight_vehicle, _weight_vehicle_maxload, _weight_vehicle_current); + +// Max capacity and weight limits for the cargo +_volume_cargo = [_cargo] call FUNC(volume); +_weight_cargo = [_cargo,0] call FUNC(weight); +TRACE_1("",_weight_cargo); + +_loading_allowed = ((_weight_vehicle_maxload - _weight_vehicle_current) >= _weight_cargo); + +TRACE_1("",_loading_allowed); +if !(_loading_allowed) exitWith { (localize "STR_ACE_CARGO_ERR_HEAVY") spawn ace_fnc_visual; }; + +//set busy state for vehicle +[_vehicle,_cargo,1,1] call FUNC(cbusy); + +if (local player) then { + #ifndef DEBUG_MODE_FULL + #define __DELAY ((50/145) * _weight_cargo) // 50 seconds to load a 145kg heavy object alone + _potHelper = (position player) nearEntities ["CaManBase",5] - [player]; + if (player in _potHelper) then { _potHelper = _potHelper - [player] }; + _time = if (count _potHelper > 0) then { __DELAY / 2 } else { __DELAY }; + + player setVariable ["ACE_PB_Result", 0]; + [_time,[localize "STR_ACE_CARGO_LOADING"],true,true] spawn ace_progressbar; + waitUntil { (player getVariable "ACE_PB_Result" != 0) }; + _process = (player getVariable "ACE_PB_Result" == 1); + player setVariable ["ACE_PB_Result", 0]; + #endif + #ifdef DEBUG_MODE_FULL + _process = true; + #endif +}; +if (!_process) exitWith { + // Reset busy state for vehicle + [_vehicle,_cargo,0,0] call FUNC(cbusy); +}; + +// Load +_newcontent = _currentcontent; +_newcontent set [count _newcontent,_cargo]; +TRACE_1("New content", _newcontent); + +_vehicle setVariable [QGVAR(content), _newcontent, true]; // Add cargo variables + +// Store loading position = unloading cargo will make the cargo appear at the same spot where it was when a player loaded it +// Relative to transporter +_cargo setVariable [QGVAR(Distance), (_cargo distance _vehicle), true]; + +// Hide _cargo +// Avoid cargo setPosing in water and accidentally killing it +_cargo_pos = getPosATL _cargo; +#ifndef DEBUG_MODE_FULL // TEST MODE TO CHECK WETHER LOADED OBJECTS ARE DELETED + detach _cargo; + //_cargo setPos [_cargo_pos select 0, _cargo_pos select 1, (_cargo_pos select 2) - 20]; + // Put stuff to [0,0,0] no matter what + _cargo setPos [0,0,0]; +#endif + +// SetVariable +[_cargo,"set"] call FUNC(determineCargo); // Using "set", so data is only stored over net if object is loaded only + +// Reset busy state for vehicle +[_vehicle,_cargo,0,0] call FUNC(cbusy); diff --git a/TO_MERGE/ace/sys_cargo/fnc_loadCargo.sqf b/TO_MERGE/ace/sys_cargo/fnc_loadCargo.sqf new file mode 100644 index 0000000000..dbc7eedc94 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/fnc_loadCargo.sqf @@ -0,0 +1,81 @@ +/* +Function: ACE_fnc_loadCargo + +Description: + Load cargo into vehicles. + +Parameters: + _cargo - Cargo object to load. (Must exist) [Array of one or more objects] + _vehicle - Vehicle to load cargo into. (Must exist) [Object] +Returns: + nothing + +Example: + (begin example) + [[myCrate1, myCrate2], myTruck] call ACE_fnc_loadCargo; + (end) + +Author: + rocko +*/ + +#include "script_component.hpp" + +PARAMS_2(_cargo,_vehicle); + +private "_error"; +{ + _preloading_allowed = true; + if (isNull _x) then { _error = format["Cargo (%1) does not exist",_x]; _preloading_allowed = false; TRACE_1("Cargo isNull",""); }; + if (isNil "_x") then { _error = format["Cargo (%1) does not exist",_x]; _preloading_allowed = false; TRACE_1("Cargo isNil",""); }; + if (isNull _vehicle) then { _error = format["Vehicle (%1) does not exist",_vehicle]; _preloading_allowed = false; TRACE_1("Vehicle isNull",""); }; + if (_x getVariable [QGVAR(busy),false]) then { _error = format["Cargo (%1) is busy",_x]; _preloading_allowed = false; TRACE_1("Cargo is busy",""); }; + if ({alive _x} count (crew _x) > 0) then { _error = format["Cargo (%1) has crew",_x]; _preloading_allowed = false; TRACE_1("Cargo is occupied",""); }; + + TRACE_1("Current cargo processed",_x); + _currentcontent = _vehicle getVariable [QGVAR(content), []]; TRACE_1("Current content",_currentcontent); + _volume_vehicle = [_vehicle] call FUNC(volume); + _size_vehicle = sizeOf (typeOf _vehicle); + _weight_vehicle = floor (_volume_vehicle * _size_vehicle * 4); + _weight_vehicle_maxload = floor (_weight_vehicle / 5); + _weight_vehicle_current = 0; + if (count _currentcontent > 0) then { + { + private ["_w"]; + _w = [_x] call FUNC(weight); + _weight_vehicle_current = _weight_vehicle_current + _w; + } foreach _currentcontent; + }; + TRACE_5("VSWWmaxWcur",_volume_vehicle, _size_vehicle, _weight_vehicle, _weight_vehicle_maxload, _weight_vehicle_current); + + _volume_cargo = [_x] call FUNC(volume); TRACE_1("",_volume_cargo); + _weight_cargo = [_x] call FUNC(weight); TRACE_1("",_weight_cargo); + _loading_allowed = ((_weight_vehicle_maxload - _weight_vehicle_current) >= _weight_cargo); TRACE_1("",_loading_allowed); + if (!_loading_allowed) then { _error = format["Weight/Volume of cargo (%1) exceeds allowed values for %2",_x,(typeOf _vehicle)]; }; + if (_loading_allowed && {_preloading_allowed}) then { + _newcontent = _currentcontent; + _newcontent set [count _newcontent,_x]; TRACE_1("New content", _newcontent); + _vehicle setVariable [QGVAR(content), _newcontent, true]; // Add cargo variables + _cargo_pos = getPosATL _x; + detach _x; + // TODO: Test enableSimulation = false; on loaded object + + //_x setPos [_cargo_pos select 0, _cargo_pos select 1, (_cargo_pos select 2) - 20]; TRACE_1("Setpos cargo item",(getPos _x)); + // Put stuff to [0,0,0] no matter what + _x setPos [0,0,0]; + + //_x spawn { // Check if cargo item is below surface + // private "_cargo_item"; + // _cargo_item = _this; + // sleep 5; + // if ((getPos _cargo_item select 2) > 0) then { + // TRACE_1("Item hiding below surface failed, setting to [0,0,0]",""); + // _cargo_item setPos [0,0,0]; // TODO: allowdamage false while on "hiding pos"?? + // }; + //}; + + [_x,"set"] call FUNC(determineCargo); + } else { + WARNING(_error); + }; +} foreach _cargo; \ No newline at end of file diff --git a/TO_MERGE/ace/sys_cargo/fnc_menuDef.sqf b/TO_MERGE/ace/sys_cargo/fnc_menuDef.sqf new file mode 100644 index 0000000000..be911d19f9 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/fnc_menuDef.sqf @@ -0,0 +1,206 @@ +//#define DEBUG_MODE_FULL +#include "script_component.hpp" +#include "\a3\editor_f\Data\Scripts\dikCodes.h" + +private ["_menuDef", "_target", "_params", "_menuName", "_menuRsc", "_menus"]; +private ["_vehicle", "_displayNameVehicle","_exit","_nearestVehicle"]; +private ["_canDrag","_canPush"]; +private ["_weight"]; + +PARAMS_2(_target,_params); + +_menuDef = []; + +if (typeOf _target == "Weaponholder") exitWith { closeDialog 0; _menuDef }; +// Needs to be fixed in CBA if possible, objects that inherit from any class used for interaction, but should not be able to interacted with, +// e.g class Weaponholder, which inherits from Reammobox! + +_menuName = ""; +_menuRsc = "popup"; + +if (typeName _params == typeName []) then { + if (count _params < 1) exitWith {diag_log format["Error: Invalid params: %1, %2", _this, __FILE__];}; + _menuName = _params select 0; + _menuRsc = if (count _params > 1) then {_params select 1} else {_menuRsc}; +} else { + _menuName = _params; +}; +//----------------------------------------------------------------------------- + +// TODO: Sort functions and scripts! +// Hacked +if (_target isKindOf "ACE_Arty_AimingStakes") exitWith {_menuDef}; + + +// Only allow loading of ammoboxes atm. Later extend to different vehicles (small) or objects +_loadthing = (getNumber (configFile >> "CfgVehicles" >> typeOf _target >> "ACE_canBeLoad") == 1); +_gearthing = (getNumber (configFile >> "CfgVehicles" >> typeOf _target >> "ACE_canGear") == 1); + +// Get exceptional vehicle that can only store gear parts (used in sys_eject - weaponcheck) +// This is used to allow players access the cargo space of non-sys_cargo vehicles! +if (_gearthing) then { + _loadthing = true; +}; + +_cargothing = getNumber (configFile >> "CfgVehicles" >> typeOf _target >> "ACE_canBeCargo") == 1; +_canBeCarried = getNumber (configFile >> "CfgVehicles" >> typeOf _target >> "ACE_canBeCarried") == 1; +_onSling = _target getVariable ["ace_sys_slingload_isLoaded",false]; +TRACE_5("",_target,_loadthing,_cargothing,_gearthing,_canBeCarried); + +if !(_loadthing || {_cargothing} || {_canBeCarried}) exitWith {_menuDef}; + +#define __TMW getNumber(configFile >> "CfgVehicles" >> typeOf _vehicle >> "transportMaxWeapons") +#define __TMM getNumber(configFile >> "CfgVehicles" >> typeOf _vehicle >> "transportMaxMagazines") + +GVAR(target) = _target; + +_displayNameCargo = getText (configFile >> "CfgVehicles" >> typeOf _target >> "displayNameShort"); +if (_displayNameCargo == "") then {_displayNameCargo = typeOf _target}; + +_nearestVehicle = objNull; +if (isNull _target) then {objNull} else { + _ar = nearestObjects [_target, ["Car", "Ship", "Air","Tank"], 8]; + _filter_ar = [_ar, {_x isKindOf "ACE_JerryCan"}] call BIS_fnc_conditionalSelect; + if (count _filter_ar > 0) then { + _ar = _ar - _filter_ar; + }; + if (count _ar > 0) then { _nearestVehicle = _ar select 0 }; +}; +_nearestVehicleDistance = _target distance _nearestVehicle; // Loading distance. Should normally be relatively small +_vehicle = if (!isNull _nearestVehicle && {_nearestVehicleDistance < (2 + (_nearestVehicle call BIS_fnc_boundingCircle)/2)}) then {_nearestVehicle} else {objNull}; + +GVAR(vehicle) = _vehicle; // Set the cargo vehicle to the target, unless a different vehicle was found near + +TRACE_2("TARGET & VEHICLE",_target,_vehicle); + +_vehicleAvailable = !isNull _vehicle && {alive _vehicle}; +if (_vehicleAvailable) then { + _displayNameVehicle = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName"); + if (_displayNameVehicle == "") then {_displayNameVehicle = typeOf _vehicle}; + TRACE_2("Found",GVAR(vehicle),_vehicleAvailable); + // Check if found vehicle has cargo capacity + if (getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "ACE_canBeLoad") != 1 || {(__TMW == 0 && {__TMM == 0})} || {_vehicle getVariable [QGVAR(busy),false]}) exitWith { + _vehicleAvailable = false; + TRACE_1("...Vehicle cannot transport anything",""); + TRACE_1("...Vehicle has no cargo space",""); + }; +}; + +// Check wether player isInFront of vehicle or behind it. + +_inFront = if !(isNull GVAR(vehicle)) then { [GVAR(vehicle),player,0.1] call ACE_fnc_inFront; } else { false }; +_currentCargo = _target getVariable [QGVAR(content),[]]; +_currentCargo_front = _target getVariable [QGVAR(content_front),[]]; +_type = [_target,"check"] call FUNC(determineCargo); + +private ["_canLoadFront","_frontLoadFree"]; +if (!isNull GVAR(vehicle)) then { + _frontLoading = GVAR(vehicle) call FUNC(determineFrontCargo); + _canLoadFront = _frontLoading select 0; + _frontLoadFree = _frontLoading select 1; +} else { + _canLoadFront = false; + _frontLoadFree = false; +}; +_isCarryingFrontLoadItem = false; +if (player getVariable [QGVAR(carrying),false]) then { + _frontCargoItem = player getVariable QGVAR(carried_object); + if (getNumber (configFile >> "CfgVehicles" >> typeOf _frontCargoItem >> "ACE_canLoadFront") == 1) then { + _isCarryingFrontLoadItem = true; + }; +}; + +// Carry in pairs stuff +// ---------------------------------- +_helperNear = false; +_helper = objNull; +if (_type in [4,5]) then { + _potHelper = (position player) nearEntities ["CaManBase",5] - [player]; + if (player in _potHelper) then { + _potHelper = _potHelper - [player]; + }; + if (count _potHelper > 0) then { + _isPlayer = false; + { + if (isplayer _x) exitWith { _helperNear = true; _helper = _x; }; /// ADD "!" to 'isplayer check' if TESTING in SP !!!!! + } foreach _potHelper; + }; +}; +// Check if component has a front carrier, so the HELP XX CARRYING option comes alive +_canBeCarriedInPairs = (isNil {_target getVariable [QGVAR(carrier_front), nil]}); + +// Check if component has a back carrier +_hasCarrierBack = (!isNil {_target getVariable [QGVAR(carrier_back), nil]}); +_hasCarrierFront = (!isNil {_target getVariable [QGVAR(carrier_front), nil]}); +// Check if component is busy, i.e about to become loaded into something +_nameCarrierFront = if (_hasCarrierFront) then { name (_target getVariable QGVAR(carrier_front)) } else { "" }; + +TRACE_4("",_canBeCarriedInPairs,_hasCarrierBack,_hasCarrierFront,_nameCarrierFront); + +GVAR(helper) = _helper; TRACE_1("",_helper); + +_menus = [ + [ + ["main", "", _menuRsc], + [ + [format [localize "STR_ACE_CARGO_CARRY",_displayNameCargo], // Carry alone + { [GVAR(target)] spawn FUNC(carry) }, + "", "", "", -1, + //1, ({alive _x} count (crew _target) == 0) && {alive _target} && {_cargothing} && {_type == 1} && {!(_target getVariable [QGVAR(attached_front),false])} && {!(player getVariable [QGVAR(carrying),false])}], + 1, _canBeCarried && {ACE_SELFINTERACTION_RESTRICTED} || {({alive _x} count (crew _target) == 0) && {alive _target} && {_cargothing} && {_type == 1} && {!(_target getVariable [QGVAR(attached_front),false])} && {!(player getVariable [QGVAR(carrying),false])} && {!_onSling} && {ACE_SELFINTERACTION_RESTRICTED}}], + + [format [localize "STR_ACE_CARGO_CARRY2",_displayNameCargo], // Carry in pairs + { [GVAR(target),player, "CARRIER"] spawn FUNC(carry2) }, + "", "", "", -1, + _helperNear, _canBeCarriedInPairs && {alive _target} && {!_hasCarrierFront} && {_cargothing} && {_type in [2,4,5]} && {!(_target getVariable [QGVAR(attached_front),false])} && {!(player getVariable [QGVAR(carrying),false])} && {!_onSling} && {ACE_SELFINTERACTION_RESTRICTED}], + + [format [localize "STR_ACE_CARGO_CARRY2_HELP",_nameCarrierFront], // Carry in pairs Help + { [GVAR(target),player, "HELPER"] spawn FUNC(carry2) }, + "", "", "", -1, + 1, _hasCarrierFront && {!_hasCarrierBack} && {alive _target} && {_cargothing} && {_type in [4,5]} && {!(_target getVariable [QGVAR(attached_front),false])} && {!(player getVariable [QGVAR(carrying),false])} && {ACE_SELFINTERACTION_RESTRICTED}], + + [localize "STR_ACE_CARGO_DRAG", // Drag + { [GVAR(target)] spawn FUNC(drag) }, + "", "", "", -1, + 1, ({alive _x} count (crew _target) == 0) && {alive _target} && {_cargothing} && {(player == vehicle player)} && {_type in [2,5]} && {!_onSling} && {ACE_SELFINTERACTION_RESTRICTED}], + + [format [localize "STR_ACE_CARGO_PUSH",_displayNameCargo], // Push + { [GVAR(target)] spawn FUNC(push) }, + "", "", "", -1, + 1, alive _target && {_cargothing} && {_type == 3} && {!_onSling} && {ACE_SELFINTERACTION_RESTRICTED}], + + [format[localize "STR_ACE_LOADCARGO", _displayNameVehicle], // Loading cargo is now only at the vehicles trunk! + {[GVAR(target),GVAR(vehicle)] spawn FUNC(load) }, + "", "", "", -1, + GVAR(vehicle) != GVAR(target) && {_type in [1,2,4,5]}, _vehicleAvailable && {_cargothing} && {alive _target} && {!_inFront} && {!(player getVariable [QGVAR(carrying),false])} && {!_onSling} && {ACE_SELFINTERACTION_RESTRICTED}], + + ["Attach in front", //TODO: localize // Attaching stuff on the front of the vehicle (looks kool but maybe useless) + {[(player getVariable QGVAR(carried_object)),GVAR(vehicle)] spawn FUNC(attachToFront) }, + "", "", "", -1, + GVAR(vehicle) != GVAR(target), _loadthing && {alive _target} && {_inFront} && {_canLoadFront} && {_isCarryingFrontLoadItem} && {_frontLoadFree} && {!_onSling} && {ACE_SELFINTERACTION_RESTRICTED}], + + [localize "STR_ACE_SHOWCARGO", // Cargo access is now only at the vehicles trunk! + { closeDialog 0; createDialog "ACE_Cargo_List" }, + "", "", "", -1, + count _currentCargo > 0, alive _target && {_loadthing} && {getPos _target select 2 < 2} && {!_inFront} && {ACE_SELFINTERACTION_RESTRICTED}], + + [localize "STR_ACE_SHOWCARGO", // Cargo access for items attached to vehicle front + { closeDialog 0; createDialog "ACE_CargoFront_List" }, + "", "", "", -1, + count _currentCargo_front > 0, alive _target && {_loadthing} && {getPos _target select 2 < 2} && {_inFront} && {ACE_SELFINTERACTION_RESTRICTED}] + ] + ] +]; + +//----------------------------------------------------------------------------- + +{ + if (_x select 0 select 0 == _menuName) exitWith {_menuDef = _x}; +} forEach _menus; + +if (count _menuDef == 0) then { + hintC format ["Error: Menu not found: %1\n%2\n%3", str _menuName, if (_menuName == "") then {_this} else {""}, __FILE__]; + diag_log format ["Error: Menu not found: %1, %2, %3", str _menuName, _this, __FILE__]; +}; + +_menuDef // return value diff --git a/TO_MERGE/ace/sys_cargo/fnc_onload.sqf b/TO_MERGE/ace/sys_cargo/fnc_onload.sqf new file mode 100644 index 0000000000..fc6179826f --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/fnc_onload.sqf @@ -0,0 +1,11 @@ +/* ace_sys_cargo | (c) 2010,2011 by rocko */ + +//#define DEBUG_MODE_FULL +#include "script_component.hpp" + +PARAMS_1(_location); + +TRACE_1("Dialog open ... list",_location); +[_location] call FUNC(view); + +false \ No newline at end of file diff --git a/TO_MERGE/ace/sys_cargo/fnc_push.sqf b/TO_MERGE/ace/sys_cargo/fnc_push.sqf new file mode 100644 index 0000000000..d4f2817473 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/fnc_push.sqf @@ -0,0 +1,35 @@ +/* ace_sys_cargo | (c) 2010,2011 by rocko */ + +//#define DEBUG_MODE_FULL +#include "script_component.hpp" + +PARAMS_1(_target); +_volume = [_target] call FUNC(volume); +_weight = [_target,_volume] call FUNC(weight); + +_push_direction = getDir player; + +_acceleration = 0.02 * _weight; + +_vel = velocity _target; +_pos = getPos _target; + +TRACE_5("",_volume,_weight,_push_direction,_acceleration,_vel); + +_new_vel = [(_vel select 0)+(sin _push_direction*_acceleration),(_vel select 1)+(cos _push_direction*_acceleration),_vel select 2]; +TRACE_1("",_new_vel); + +if (_target isKindOf "Static") then { + _new_pos = [(_pos select 0)+(sin _push_direction*(_acceleration/2)),(_pos select 1)+(cos _push_direction*(_acceleration/2)),_pos select 2]; + _target setPos _new_pos; + _target setPosATL _new_pos; +} else { + [QGVAR(setvel), [_target,_new_vel]] call ACE_fnc_receiverOnlyEvent; +}; +_target spawn { + _target = _this; + sleep 4; + [QGVAR(setvel), [_target,[0,0,0]]] call ACE_fnc_receiverOnlyEvent; + //_pos = getPos _target; + //_target setPos _pos; +}; diff --git a/TO_MERGE/ace/sys_cargo/fnc_unload.sqf b/TO_MERGE/ace/sys_cargo/fnc_unload.sqf new file mode 100644 index 0000000000..da12b7c5e7 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/fnc_unload.sqf @@ -0,0 +1,85 @@ +/* ace_sys_cargo | (c) 2010,2011 by rocko */ + +//#define DEBUG_MODE_FULL +#include "script_component.hpp" + +PARAMS_2(_vehicle,_location); + +private ["_disp", "_ctrl", "_index", "_currentcontent", "_vehicle", "_cargo", "_newcontent", "_hasPlaceholder", "_placeholder", "_pos","_ui","_dir"]; + +_ui = if (_location == "back") then {"ACE_Cargo_List"} else {"ACE_CargoFront_List"}; +_disp = uiNamespace getVariable _ui; +_ctrl = _disp displayCtrl 99; + +_index = lbCurSel _ctrl; +if (_index < 0) exitWith { if (dialog) then { closeDialog 0; }; }; +if (dialog) then {closeDialog 0}; + +// Remove cargo item +_currentcontent = if (_location == "back") then { _vehicle getVariable [QGVAR(content), []] } else { _vehicle getVariable [QGVAR(content_front), []] }; +if (isNil "_currentcontent") exitWith {}; +_cargo = _currentcontent select _index; TRACE_1("Unloading _cargo",_cargo); +if (_cargo in _currentcontent) then { + _newcontent = _currentcontent - [_cargo]; + if (_location == "back") then { + TRACE_1("Unloading cargo from trunk",""); + _vehicle setVariable [QGVAR(content), _newcontent, true]; // Add cargo variables + } else { + TRACE_1("Unloading cargo from front",""); + _vehicle setVariable [QGVAR(content_front), _newcontent, true]; // Add cargo variables + [_cargo] call FUNC(detachFront); + }; + if (count _newcontent < 1) then { + _hasPlaceholder = _vehicle getVariable [QGVAR(hasPlaceholder), false]; + if (_hasPlaceholder) then { + _vehicle setVariable [QGVAR(hasPlaceholder), false, true]; // Reset placeholder variable + _placeholder = _vehicle getVariable QGVAR(POB); + detach _placeholder; + deleteVehicle _placeholder; + }; + }; + _at_player = _cargo getVariable [QGVAR(atplayer),false]; + _distance = if (_at_player) then { 1.5 } else { _cargo getVariable [QGVAR(Distance),4]; }; + if (_location == "back") then { + _dir = if (_at_player) then { getDir player + 180 } else { getDir _vehicle - 180 + (random 20) - (random 20); }; + } else { + _dir = if (_at_player) then { getDir player + 180 } else { getDir _vehicle + (random 20) - (random 20); }; + }; + _posV = if (_at_player) then { getPosATL player; } else { getPosATL _vehicle; }; + _unloadPos = [(_posV select 0) + ((sin _dir) * _distance), (_posV select 1) + ((cos _dir) * _distance),_posV select 2]; + + // TODO: Move to config properties to automatically decide what to do with special items + // Ruckcrate check + if (_cargo isKindOf "ACE_Rucksack_crate") then { + _cargo setVectorDirAndUp [[-0.0204803,-0.585819,0.810183],[0.00794978,-0.810423,-0.585792]]; + _cargo_owner = _cargo getVariable "ACE_SYS_CARGO_OWNER"; + if (_cargo_owner == name player) then { + _backpack = toArray(typeOf _cargo); + for "_x" from ((count _backpack) - 6) to ((count _backpack) - 1) do { + _backpack set [_x, nil]; + }; + _backpack = toString(_backpack); + [_cargo,player,nil,_backpack] execVM "\z\ace\addons\sys_ruck\act_TakeRuck.sqf"; + }; + }; + + if (_cargo isKindOf "StaticWeapon") then { + _cargo setVariable ["ace_sys_crewserved_pitch",0,true]; + }; + + if ([_cargo,""] call FUNC(determineCargo) == 1) then { + if !(player getVariable [QGVAR(carrying),false]) then { + [_cargo] spawn FUNC(carry); + }; + }; + if (surfaceIsWater _unloadPos) then { + _unloadPos set [2, (getPosASL player select 2)]; + _cargo setposASL _unloadPos; + } else { + _cargo setpos _unloadPos; + }; + + player reveal _cargo; +}; + +[_vehicle,objnull,0,0] call FUNC(cbusy); diff --git a/TO_MERGE/ace/sys_cargo/fnc_unloadCargo.sqf b/TO_MERGE/ace/sys_cargo/fnc_unloadCargo.sqf new file mode 100644 index 0000000000..6924290b42 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/fnc_unloadCargo.sqf @@ -0,0 +1,46 @@ +/* +Function: ACE_fnc_unloadCargo + +Description: + Unloads cargo from a vehicle. + +Parameters: + _cargo - Cargo object to load. (Must exist) [Array of one or more objects] + _vehicle - Vehicle to load cargo into. (Must exist) [Object] +Returns: + nothing + +Example: + (begin example) + [[myCrate1, myCrate2], myTruck] call ACE_fnc_unloadCargo; + (end) + +Author: + rocko +*/ + +#include "script_component.hpp" + +PARAMS_2(_cargo,_vehicle); +private ["_index", "_currentcontent", "_vehicle", "_cargo", "_newcontent", "_hasPlaceholder", "_placeholder", "_pos"]; + +_currentcontent = _vehicle getVariable QGVAR(content); +if (isNil "_currentcontent") exitWith {}; +{ + if (_x in _currentcontent) then { + _newcontent = _currentcontent - [_x]; + _vehicle setVariable [QGVAR(content), _newcontent, true]; // Add cargo variables + + _dir = getDir _vehicle - 180 + (random 20) - (random 20); + _posV = getPosATL _vehicle; + _unloadPos = [(_posV select 0) + ((sin _dir) * 4), (_posV select 1) + ((cos _dir) * 4),_posV select 2]; + _x setpos _unloadPos; + if (_x isKindOf "ACE_Rucksack_crate") then { + _x setVectorDirAndUp [[-0.0204803,-0.585819,0.810183],[0.00794978,-0.810423,-0.585792]]; + }; + if (_x isKindOf "StaticWeapon") then { + _x setVariable ["ace_sys_crewserved_pitch",0,true]; + }; + }; +} foreach _cargo; +[_vehicle,objnull,0,0] call FUNC(cbusy); diff --git a/TO_MERGE/ace/sys_cargo/fnc_view.sqf b/TO_MERGE/ace/sys_cargo/fnc_view.sqf new file mode 100644 index 0000000000..b06a52cada --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/fnc_view.sqf @@ -0,0 +1,65 @@ +/* ace_sys_cargo | (c) 2010,2011 by rocko */ + +//#define DEBUG_MODE_FULL +#include "script_component.hpp" +private ["_disp", "_ctrl", "_currentcargo", "_item", "_typei", "_name", "_pic", "_dummy", "_weight", "_text", "_index","_ui"]; + +PARAMS_1(_location); + +// Prevent viewing of dialog if vehicle is already accessed by other player // TODO: Better not show in interaction menu +if (GVAR(target) getVariable [QGVAR(busy),false]) exitWith { + [] spawn { + sleep 0.1; + if (dialog) then { closeDialog 0 }; + [localize "STR_ACE_CARGO_ERR_OCC",[1,0,0,1],true,0] spawn ace_fnc_visual; + }; +}; + +_ui = if (_location == "back") then {"ACE_Cargo_List"} else {"ACE_CargoFront_List"}; +_disp = uiNamespace getVariable _ui; +_ctrl = _disp displayCtrl 99; +_tit = _disp displayCtrl 30; + +// Set vehicle busy to prevent multi unloading +[GVAR(target),objnull,1,1] call FUNC(cbusy); + +_currentcargo = if (_location == "back") then { GVAR(target) getVariable [QGVAR(content), []] } else { GVAR(target) getVariable [QGVAR(content_front), []] }; +lbClear _ctrl; + +if (count _currentcargo > 0) then { + _dn = getText(configFile >> "CfgVehicles" >> typeOf GVAR(target) >> "displayName"); + _tit ctrlSetText format[localize "STR_DIAG_ACE_CARGO_TITLE",_dn]; + for "_x" from 0 to (count _currentcargo) - 1 do { + _item = _currentcargo select _x; + _typei = typeOf _item; + _name = _item getVariable "ace_sys_cargo_name"; + if (isNil "_name") then { + _name = getText(configFile >> "CfgVehicles" >> _typei >> "displayName"); + }; + _pic = getText (configFile >> "cfgVehicles" >> _typei >> "icon"); + if (_pic == "" || {_pic == "iconThing"}) then { + _pic = "\ca\data\data\Unknown_object.paa"; + }; + _weight = [_item,1] call FUNC(weight); + // Disable low weight stuff + _text = if (_weight <= 5) then { + _name + } else { + format["%1 %2 kg", _name, round _weight] + }; + _index = _ctrl lbAdd _text; + _ctrl lbSetPicture [_index, _pic]; + }; + _ctrl lbSetCurSel 0; +}; + +if (player in crew GVAR(vehicle) || {count _currentcargo == 0} || {player getVariable [QGVAR(carrying),false]}) then { (_disp displayCtrl 10) ctrlEnable false; _disp displayCtrl 10 ctrlCommit 0; }; // Cannot unload from inside + +[] spawn { + while {dialog} do { + sleep 0.1; + }; + [GVAR(target),objnull,0,0] call FUNC(cbusy); +}; + + diff --git a/TO_MERGE/ace/sys_cargo/license.txt b/TO_MERGE/ace/sys_cargo/license.txt new file mode 100644 index 0000000000..7113bf4340 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/license.txt @@ -0,0 +1,79 @@ +License (short) +=============== + +You are free: +- to Share to copy, distribute and transmit the work + +Under the following conditions: +- Attribution You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). +- Noncommercial You may not use this work for commercial purposes. +- No Derivative Works You may not alter, transform, or build upon this work. + +With the understanding that: + +Waiver Any of the above conditions can be waived if you get permission from the copyright holder. + +Public Domain Where the work or any of its elements is in the public domain under applicable law, that status is in no way affected by the license. + +Other Rights In no way are any of the following rights affected by the license: + - Your fair dealing or fair use rights, or other applicable copyright exceptions and limitations; + - The author's moral rights; + - Rights other persons may have either in the work itself or in how the work is used, such as publicity or privacy rights. + +Notice For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page. + + +Full license text +================= + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. + +1. Definitions + +"Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. +"Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. +"Distribute" means to make available to the public the original and copies of the Work through sale or other transfer of ownership. +"Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. +"Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. +"Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. +"You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. +"Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. +"Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. +2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: + +to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; and, +to Distribute and Publicly Perform the Work including as incorporated in Collections. +The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats, but otherwise you have no rights to make Adaptations. Subject to 8(f), all rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Section 4(d). + +4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: + +You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. +You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. +If You Distribute, or Publicly Perform the Work or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work. The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Collection, at a minimum such credit will appear, if a credit for all contributing authors of Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. +For the avoidance of doubt: + +Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; +Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License if Your exercise of such rights is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b) and otherwise waives the right to collect royalties through any statutory or compulsory licensing scheme; and, +Voluntary License Schemes. The Licensor reserves the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License that is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b). +Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + +This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. +Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. +8. Miscellaneous + +Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. +If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. +No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. +This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. +The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. diff --git a/TO_MERGE/ace/sys_cargo/script_component.hpp b/TO_MERGE/ace/sys_cargo/script_component.hpp new file mode 100644 index 0000000000..8aabd2fc1f --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/script_component.hpp @@ -0,0 +1,29 @@ +#define COMPONENT sys_cargo +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_sys_cargo + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_sys_cargo + #define DEBUG_SETTINGS DEBUG_SETTINGS_sys_cargo +#endif + +#include "\z\ace\addons\main\script_macros.hpp" + +// #define JERRYCAN_M ACE_JerryCan_M_15 +#define JERRYCAN_W ACE_JerryCan_Dummy_15 +#define JERRYCAN_V ACE_JerryCan_15 + +#define SPARETYRE_W ACE_Spare_Tyre_Dummy +#define SPARETYRE_V ACE_Spare_Tyre + +#define __MAXCARRYVOLUME 0.7 +#define __MAXCARRYWEIGHT 30 //20 +#define __MAXCARRYWEIGHTBY2 145 //200 +#define __MAXDRAGVOLUME 1.5 +#define __MAXDRAGWEIGHT 80 //100 +#define __MAXPUSHVOLUME 3.2 +#define __MAXPUSHWEIGHT 120 +#define __MAXLOADVOLUME 1.7 //ccm +#define __MAXLOADWEIGHT 200 \ No newline at end of file diff --git a/TO_MERGE/ace/sys_cargo/slingload/$PBOPREFIX$ b/TO_MERGE/ace/sys_cargo/slingload/$PBOPREFIX$ new file mode 100644 index 0000000000..7a4828212a --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\sys_cargo\slingload \ No newline at end of file diff --git a/TO_MERGE/ace/sys_cargo/slingload/CfgEventhandlers.hpp b/TO_MERGE/ace/sys_cargo/slingload/CfgEventhandlers.hpp new file mode 100644 index 0000000000..d21e1e0f0f --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/CfgEventhandlers.hpp @@ -0,0 +1,6 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + clientInit = QUOTE(call COMPILE_FILE(XEH_preClientInit)); + }; +}; diff --git a/TO_MERGE/ace/sys_cargo/slingload/CfgMagazines.hpp b/TO_MERGE/ace/sys_cargo/slingload/CfgMagazines.hpp new file mode 100644 index 0000000000..84bd5f1ae2 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/CfgMagazines.hpp @@ -0,0 +1,27 @@ +#define __MASS 0.94 +class CfgMagazines { + class CA_Magazine; + class ACE_Rope_MRL: CA_Magazine { // Base + scope = 1; + displayName = $STR_DN_ACE_ROPE_MRL; + picture = QPATHTO_T(data\equip\m_rope_ca.paa); + model = QPATHTO_M(m_ace_rope.p3d); + type = "3 * 256"; + ammo = "FakeAmmo"; + count = 1; + initSpeed = 0; + maxLeadSpeed = 0; + nameSound = "mine"; + ACE_Weight = 2; // Diameter: 40 mm , Weight: 94 kg / 100 m + ACE_Size = 400; + ACE_NoPack = 1; // Not packable + ACE_SlingRope = 1; + descriptionShort = ""; + }; + class ACE_Rope_M5: ACE_Rope_MRL { + scope = 2; + displayName = $STR_DN_ACE_ROPE_M5; + ACE_Size = 64; + ACE_Weight = 14.3256; + }; +}; diff --git a/TO_MERGE/ace/sys_cargo/slingload/CfgVehicles.hpp b/TO_MERGE/ace/sys_cargo/slingload/CfgVehicles.hpp new file mode 100644 index 0000000000..9794e96d46 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/CfgVehicles.hpp @@ -0,0 +1,101 @@ +class CfgVehicles { + class Thing; + class ACE_Slingrope_L: Thing { + scope = 1; + animated = 0; + displayName = ""; + model=QPATHTO_M(ace_slingrope_L.p3d); + destructype = "Destructno"; + cost = 0; + armor = 999999; + ace_slingrope=1; + XEH_DISABLED; + }; + + class ACE_Slingrope_M: ACE_Slingrope_L { + model=QPATHTO_M(ace_slingrope_M.p3d); + ace_slingrope=1; + }; + + class ACE_Slingrope_P: ACE_Slingrope_L { + model=QPATHTO_M(ace_slingrope_P.p3d); + ace_slingrope=1; + }; + + class ACE_Slingrope: ACE_Slingrope_L { + model=QPATHTO_M(ace_slingrope.p3d); + ace_slingrope=1; + }; + + // GeoLifter points + // Max Load + // Vehicle Weight + // TODO: Correct values + class Air; + class Helicopter: Air { ACE_canLift = 0; }; + class Plane: Air { ACE_canLift = 0; }; + /*class UH60_Base; + class MH60S: UH60_Base { + ACE_canLift = 1; + ACE_GeoLifterAttachment[] = {{0,1.54,-5.1}}; + ACE_MaxLoad = 5886; + ACE_Weight = 5224; + }; + class UH60M_US_base_EP1; + class UH60M_EP1: UH60M_US_base_EP1 { + ACE_canLift = 1; + ACE_GeoLifterAttachment[] = {{0,1.25,-5.25}}; + ACE_MaxLoad = 5886; + ACE_Weight = 5224; + }; + class UH1_Base: Helicopter { + ACE_canLift = 1; + ACE_GeoLifterAttachment[] = {{0,-4.3,-4.9}}; + ACE_MaxLoad = 3000; + ACE_Weight = 5370; + }; + class UH1H_Base: Helicopter { + ACE_canLift = 1; + ACE_GeoLifterAttachment[] = {{0,1.2,-4.8}}; + ACE_MaxLoad = 3000; + ACE_Weight = 5370; + }; + class MV22: Plane { + ACE_canLift = 1; + ACE_GeoLifterAttachment[] = {{0,0,-5.9}}; + ACE_MaxLoad = 6800; + ACE_Weight = 15000; + }; + class Mi24_Base: Helicopter { + ACE_canLift = 1; + ACE_GeoLifterAttachment[] = {{-0.1,2.5,-5.2}}; + ACE_MaxLoad = 2600; + ACE_Weight = 11000; + }; + class Mi17_base: Helicopter { + ACE_canLift = 1; + ACE_GeoLifterAttachment[] = {{0,1.9,-5.5}}; + ACE_MaxLoad = 5900; + ACE_Weight = 7100; + }; + class CH47_base_EP1: Helicopter { + ACE_canLift = 1; + ACE_GeoLifterAttachment[] = {{0,0,-5.6}}; + ACE_MaxLoad = 10000; + ACE_Weight = 12000; + }; + class AH6_Base_EP1; + class MH6J_EP1: AH6_Base_EP1 { + ACE_canLift = 0; + ACE_GeoLifterAttachment[] = {{0,-0.8,0.5}}; + ACE_MaxLoad = 1000; + ACE_Weight = 3370; + }; + /// BAFF + class BAF_Merlin_HC3_D: Helicopter { + ACE_canLift = 1; + ACE_GeoLifterAttachment[] = {{0.2,2.5,-4.9}}; + ACE_MaxLoad = 6000; + ACE_Weight = 11000; + };*/ +}; diff --git a/TO_MERGE/ace/sys_cargo/slingload/CfgWeapons.hpp b/TO_MERGE/ace/sys_cargo/slingload/CfgWeapons.hpp new file mode 100644 index 0000000000..db6ec69286 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/CfgWeapons.hpp @@ -0,0 +1,11 @@ +class CfgWeapons { + class Default; + class Put: Default { + class ACE_Dummy_Utility; + class ace_sys_ravlifter: ACE_Dummy_Utility { + magazines[] = { + "ACE_Rope_MRL","ACE_Rope_M5" + }; + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/ace/sys_cargo/slingload/XEH_preClientInit.sqf b/TO_MERGE/ace/sys_cargo/slingload/XEH_preClientInit.sqf new file mode 100644 index 0000000000..6b9c90e91b --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/XEH_preClientInit.sqf @@ -0,0 +1,13 @@ +#include "script_component.hpp" + +ADDON = false; +LOG(MSG_INIT); + +PREP(addAction); + +[QGVAR(wh), {player reveal _this}] call CBA_fnc_addEventHandler; +[QGVAR(action), {_this call FUNC(addaction)}] call CBA_fnc_addEventhandler; + +[["LandVehicle","Air","Boat","Thing","StaticWeapon","Reammobox"], [ace_sys_interaction_key], 6, [QPATHTO_F(fnc_menuDef), "main"]] call CBA_ui_fnc_add; + +ADDON = true; diff --git a/TO_MERGE/ace/sys_cargo/slingload/XEH_preInit.sqf b/TO_MERGE/ace/sys_cargo/slingload/XEH_preInit.sqf new file mode 100644 index 0000000000..7c785f3063 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/XEH_preInit.sqf @@ -0,0 +1,12 @@ +#include "script_component.hpp" + +ADDON = false; +LOG(MSG_INIT); + +PREP(hasropemag); + +PREP(attachSlingRopeToHelicopter); +PREP(attachSlingRopeToCargo); +PREP(detachSlingRopeFromCargo); + +ADDON = true; diff --git a/TO_MERGE/ace/sys_cargo/slingload/ace_slingrope.p3d b/TO_MERGE/ace/sys_cargo/slingload/ace_slingrope.p3d new file mode 100644 index 0000000000000000000000000000000000000000..23aa8836d31f0ab34992682780263b0883a72d33 GIT binary patch literal 345408 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 pj7=nM)nV2xOIo$M@Ws#A5UPtp5? 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 literal 0 HcmV?d00001 diff --git a/TO_MERGE/ace/sys_cargo/slingload/ace_slingrope_M.p3d b/TO_MERGE/ace/sys_cargo/slingload/ace_slingrope_M.p3d new file mode 100644 index 0000000000000000000000000000000000000000..4e06c0a8030c6999b94f80f66dbc9bb6fc69a316 GIT binary patch literal 67716 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 ArvLx| literal 0 HcmV?d00001 diff --git a/TO_MERGE/ace/sys_cargo/slingload/ace_slingrope_P.p3d b/TO_MERGE/ace/sys_cargo/slingload/ace_slingrope_P.p3d new file mode 100644 index 0000000000000000000000000000000000000000..02334c7ea8613f9a39af0f7f65d7653e52b429e3 GIT binary patch literal 120969 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 z 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 literal 0 HcmV?d00001 diff --git a/TO_MERGE/ace/sys_cargo/slingload/data/equip/m_rope_ca.paa b/TO_MERGE/ace/sys_cargo/slingload/data/equip/m_rope_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..096a14cdfb8ea0dc1e975b1589cb1043b358b7c1 GIT binary patch literal 43998 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 T=t%2NtEILlUjO$04Hx~t^|v{F literal 0 HcmV?d00001 diff --git a/TO_MERGE/ace/sys_cargo/slingload/data/soga.paa b/TO_MERGE/ace/sys_cargo/slingload/data/soga.paa new file mode 100644 index 0000000000000000000000000000000000000000..1bbd1d5500c51aeec3fce727da7f72f9a251db9d GIT binary patch literal 21977 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 literal 0 HcmV?d00001 diff --git a/TO_MERGE/ace/sys_cargo/slingload/fnc_addAction.sqf b/TO_MERGE/ace/sys_cargo/slingload/fnc_addAction.sqf new file mode 100644 index 0000000000..0d7b49b926 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/fnc_addAction.sqf @@ -0,0 +1,14 @@ +#include "script_component.hpp" + +#define ACE_TEXT_RED(Text) ("" + ##Text + "") + +private ["_helicopter", "_currentAction"]; + +_helicopter = _this; +_currentAction = _helicopter getVariable [QGVAR(cutAction), -1]; + +// Prevent double action +if (_currentAction != -1) then { _helicopter removeAction _currentAction }; + +_action_cut = _helicopter addaction [ACE_TEXT_RED(localize "STR_UA_ACE_RELEASESLING"), QPATHTO_F(ua_release_cargo),_helicopter,99,true,true,"","(driver _target) in _target"]; // err, driver target should always be in target :P +_helicopter setVariable [QGVAR(cutAction), _action_cut]; diff --git a/TO_MERGE/ace/sys_cargo/slingload/fnc_attachSlingRopeToCargo.sqf b/TO_MERGE/ace/sys_cargo/slingload/fnc_attachSlingRopeToCargo.sqf new file mode 100644 index 0000000000..48d935d55c --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/fnc_attachSlingRopeToCargo.sqf @@ -0,0 +1,23 @@ +#include "script_component.hpp" + +PARAMS_1(_cargo); + +if (GVAR(disabled)) exitWith { + _cargo spawn { + private "_magHolder"; + sleep 2; + _magHolder = "WeaponHolder" createVehicle [0,0,0]; + _magholder addMagazineCargoGlobal ["ACE_Rope_M5", 1]; + [QGVAR(wh), _magHolder] call CBA_fnc_globalEvent; + _magHolder setPos [((position _this) select 0) + 2, ((position _this) select 1) + 2, 0]; + }; +}; + +player playmove "AinvPknlMstpSlayWrflDnon_medic"; +sleep 5; +player removeMagazine "ACE_Rope_M5"; +_cargo setVariable [QGVAR(hasSlingRope), true, true]; + +// TODO: Process + +// TODO: Visual attached sling rope to cargo, to indicate something is prepared. diff --git a/TO_MERGE/ace/sys_cargo/slingload/fnc_attachSlingRopeToHelicopter.sqf b/TO_MERGE/ace/sys_cargo/slingload/fnc_attachSlingRopeToHelicopter.sqf new file mode 100644 index 0000000000..42c77dbe43 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/fnc_attachSlingRopeToHelicopter.sqf @@ -0,0 +1,116 @@ +#include "script_component.hpp" + +PARAMS_2(_cargo,_helicopter); + +//TODO: Check if helicopter is already filled with cargo aka soldiers, if so, make sling rope break if speed > 50 +// Cargo becomes damaged and slingrope unuseable + +// TODO: Cargo limits +// TODO: Move to process.sqf ? +_crew = crew _helicopter; +_passengers = []; +{ + if ((assignedVehicleRole _x) select 0 == "CARGO") then { + _passengers set [count _passengers, _x]; + }; +} foreach _crew; +//_passenger_weight = 80 * count _passengers; + +private["_cable","_pp","_reduction","_rel","_slingrope_type"]; + +_bboxHelicopter = boundingBox _helicopter; +_bh = abs((_bboxHelicopter select 0) select 2) + (abs((_bboxHelicopter select 1) select 2) * 1.2); +_lh = abs((_bboxHelicopter select 0) select 0) + abs((_bboxHelicopter select 1) select 0); +_hh = abs((_bboxHelicopter select 0) select 1) + abs((_bboxHelicopter select 1) select 1); +_volumeH = _lh * _bh * _hh; + +_bboxCargo = boundingBox _cargo; +_bc = abs((_bboxCargo select 0) select 0) + abs((_bboxCargo select 1) select 0); +_lc = abs((_bboxCargo select 0) select 1) + abs((_bboxCargo select 1) select 1); +_hc = abs((_bboxCargo select 0) select 2) + abs((_bboxCargo select 1) select 2); +_volumeC = _lc * _bc * _hc; + +_tope = 16; +_abort = false; + +// Find the correct sling rope model +if (_volumeC > 0.001) then { + _rel = _volumeH / _volumeC; + if (_rel >= _tope) then { + _slingrope_type = switch (true) do { + case(_volumeC < 150): {1}; + case (_volumeC < 200): {2}; + default {2}; + }; + if (_rel < 20) then { + _slingrope_type = 1; + _volumeC = (_lc * 100) / _bc; + if (_volumeC > 100) then {_volumeC = _volumeC - 100}; + if (_volumeC > 20) then {_slingrope_type = 2}; + }; + } else { _slingrope_type = 2; }; +}; + +if (_abort) exitWith { + _msg1 = "An error occured with the slingload feature."; + hint _msg1; + #ifdef DEBUG_MODE_FULL + _msg2 = format ["H: %1 C: %2", typeOf _helicopter, typeOf _cargo]; + LOG(_msg1); LOG(_msg2); + #endif +}; + +// Execute the lift + +_Obx = 0; +_Oby = 0; +_Obz = 0; + +_dist = -(_helicopter distance _cargo); +_cargo attachTo [_helicopter, [0,0, _dist + 0]]; +_dir = direction _cargo - direction _helicopter; + +if ("Air" counttype [_cargo] > 0) then { _dir = 0; }; +if ("Ship" counttype [_cargo] > 0) then { _dir = 0; }; +if ("Landvehicle" counttype [_cargo] > 0) then { _dir = 0;_slingrope_type = 1; }; +if ("Motorcycle" counttype [_cargo] > 0) then { _slingrope_type = 1; }; + +_center = getArray(configFile >> "CfgVehicles" >> typeOf _helicopter >> "ACE_GeoLifterAttachment") select 0; +_cx = _center select 0; +_cy = _center select 1; +_cz = _center select 2; + +switch (_slingrope_type) do { + case 1: { + _cable = "ACE_Slingrope_L" createvehicle [0,0,0]; + _cable attachto [_helicopter, [_cx + 0.02,_cy - 0.1,_cz + 0.4]]; + _helicopter setvariable [QGVAR(slingrope), _cable,true]; + _pp = _cable selectionposition "Anclaje"; + _cargo attachto [_cable, [_pp select 0, _pp select 1, _pp select 2]]; + _cargo attachto [_cable, [_Obx+(_pp select 0), _Oby+(_pp select 1), _Obz+(_pp select 2)]]; + _cargo setdir _dir; _cargo setpos getpos _cargo; + _reduction = 1.0025; + }; + case 2: { + _cable = "ACE_Slingrope_M" createvehicle [0,0,0]; + _cable attachto [_helicopter, [_cx,_cy,_cz]]; + _helicopter setvariable [QGVAR(slingrope),_cable,true]; + _pp = _cable selectionposition "Anclaje"; + _cargo attachto [_cable, [_Obx+(_pp select 0), _Oby+(_pp select 1), _Obz+(_pp select 2) + 0.5]]; + _cargo setdir _dir; _cargo setpos getpos _cargo; + _reduction = 1.0050; + }; +}; + +// Set variables +_helicopter setVariable [QGVAR(isTransporting),true,true]; +_helicopter setVariable [QGVAR(cargoHeight),(_cargo modeltoworld [0,0,0]) select 2,true]; +_helicopter setVariable [QGVAR(cargo),_cargo,true]; + +// Visual for helicopter +localize "STR_UA_ACE_CARGOHELIHOOKED" spawn ace_fnc_visual; + +[_helicopter, _reduction, _cargo] spawn COMPILE_FILE(process); // Main process loop // TODO: Evaluate some more events for this + +// Add CUT action for driver of helicopter +[QGVAR(action), _helicopter] call CBA_fnc_globalEvent; diff --git a/TO_MERGE/ace/sys_cargo/slingload/fnc_detachSlingRopeFromCargo.sqf b/TO_MERGE/ace/sys_cargo/slingload/fnc_detachSlingRopeFromCargo.sqf new file mode 100644 index 0000000000..5605c01d48 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/fnc_detachSlingRopeFromCargo.sqf @@ -0,0 +1,8 @@ +#include "script_component.hpp" + +PARAMS_1(_cargo); + +player playmove "AinvPknlMstpSlayWrflDnon_medic"; +sleep 5; +player addMagazine "ACE_Rope_M5"; +_cargo setVariable [QGVAR(hasSlingRope), false, true]; diff --git a/TO_MERGE/ace/sys_cargo/slingload/fnc_hasropemag.sqf b/TO_MERGE/ace/sys_cargo/slingload/fnc_hasropemag.sqf new file mode 100644 index 0000000000..98a50e5ff5 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/fnc_hasropemag.sqf @@ -0,0 +1,9 @@ +private ["_r"]; + +#include "script_component.hpp" + +_r = ""; +{ + if (getNumber(configFile >> "CfgMagazines" >> _x >> "ACE_SlingRope") == 1) exitWith {_r = _x}; +} forEach magazines player; +_r \ No newline at end of file diff --git a/TO_MERGE/ace/sys_cargo/slingload/fnc_menuDef.sqf b/TO_MERGE/ace/sys_cargo/slingload/fnc_menuDef.sqf new file mode 100644 index 0000000000..521bfcc194 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/fnc_menuDef.sqf @@ -0,0 +1,117 @@ +//#define DEBUG_MODE_FULL +#include "script_component.hpp" +#include "\a3\editor_f\Data\Scripts\dikCodes.h" + +private ["_menuDef", "_target", "_params", "_menuName", "_menuRsc", "_menus"]; + +PARAMS_2(_target,_params); + +if (isNil "_target") exitWith {}; +if (isNull _target) exitWith {}; + +if (typeOf _target == "Weaponholder") exitWith { closeDialog 0 }; +// Needs to be fixed in CBA if possible, objects that inherit from any class used for interaction, but should not be able to interacted with, +// e.g class Weaponholder, which inherits from Reammobox! + +_menuName = ""; +_menuRsc = "popup"; + +if (typeName _params == typeName []) then { + if (count _params < 1) exitWith {diag_log format["Error: Invalid params: %1, %2", _this, __FILE__];}; + _menuName = _params select 0; + _menuRsc = if (count _params > 1) then {_params select 1} else {_menuRsc}; +} else { + _menuName = _params; +}; + +//----------------------------------------------------------------------------- +#define __ADD_SLING (localize "STR_UA_ACE_ATTACHROPECARGO") +#define __REM_SLING (localize "STR_UA_ACE_DETACHROPECARGO") +#define __ADD_SLING_HELI (localize "STR_UA_ACE_ATTACHROPECARGOHELI") + +_displayNameCargo = getText (configFile >> "CfgVehicles" >> typeOf _target >> "displayName"); +if (_displayNameCargo == "") then { _displayNameCargo = typeOf _target; }; + +if (_target isKindOf "StaticShip") then {_target = objNull}; // disable LHD, which is a "building"/"strategic"/"StaticShip" + +if (isNull _target) exitWith {}; + +_cargoHasSlingRope = _target getVariable [QGVAR(hasSlingRope), false]; +_cargoIsLoaded = _target getVariable [QGVAR(isLoaded), false]; +_cargoIsEmpty = ({alive _x} count crew _target == 0); +_cargoIsAttachedToSomethingElse = (_target getVariable ["ace_puller_attached",false]); // || _cargo getVariable ["",false]) // TODO: sys_maintenance_towing // TODO: set a more global var then system specific +_playerHasSlingRope = ("ACE_Rope_M5" in magazines player); + +_playerInCargo = vehicle player != player && {player in (vehicle _target)}; +TRACE_5("",_cargoHasSlingRope,_cargoIsLoaded,_cargoIsEmpty,_playerHasSlingRope,_playerInCargo); + +private["_helicopter"]; +_nearestHelicopter = if (isNull _target) then {objNull} else {nearestObject [_target, "Helicopter"]}; +_nearestHelicopterDist = _target distance _nearestHelicopter; +_helicopter = if (!(isNull _nearestHelicopter) && {isEngineOn _nearestHelicopter} && {_nearestHelicopterDist < 11}) then { _nearestHelicopter; } else { objNull; }; // If helicopter is flying and distance to cargo < minDist +// TODO: Might get fuzzy with the fucking LHD crap carrier + +_helicopterAvailable = (alive _helicopter && {!isNull _helicopter}); +TRACE_1("",_helicopterAvailable); + +_displayNameHelicopter = ""; +_helicopterCanLift = false; +_helicopterIsTransporting = true; // true, Failsafe #1 + +if (_helicopterAvailable) then { + _displayNameHelicopter = getText (configFile >> "CfgVehicles" >> typeOf _helicopter >> "displayName"); + if (_displayNameHelicopter == "") then { _displayNameHelicopter = typeOf _helicopter; }; + + _helicopterIsTransporting = _helicopter getVariable [QGVAR(isTransporting), false]; + _helicopterCanLift = (getNumber(configFile >> "CfgVehicles" >> typeOf _helicopter >> "ACE_canLift") == 1); + + TRACE_1("",_displayNameHelicopter); + TRACE_1("",_helicopterIsTransporting); + TRACE_1("",_helicopterCanLift); +}; + +_disable = _helicopter getVariable [QUOTE(ACE_Slingload_Rule),[]]; +if (typeOf _target in _disable) exitWith { + (localize "STR_DN_ACE_HOOKERBLOCKAGE") spawn ACE_fnc_visual; +}; + +_weight = getNumber(configFile >> "CfgVehicles" >> typeOf _helicopter >> "ACE_MaxLoad") > _target call ace_sys_cargo_fnc_weight; // TODO: Alternative mass and/or ACE_Weight + +GVAR(targets) = [_target,_helicopter]; + +// Attach sling rope to x +_menus = +[ + [ + ["main", _displayNameCargo, _menuRsc], + [ + // Attach sling rope to cargo + [__ADD_SLING, + { [(GVAR(targets) select 0)] spawn FUNC(attachSlingRopeToCargo) }, + "", "", "", DIK_N, 1, alive _target && {!_cargoHasSlingRope} && {_playerHasSlingRope} && {!_playerInCargo} && {ACE_SELFINTERACTION_RESTRICTED}], + // Detach sling rope from cargo + [__REM_SLING, + { [(GVAR(targets) select 0)] spawn FUNC(detachSlingRopeFromCargo) }, + "", "", "", DIK_N, 1, alive _target && {_cargoHasSlingRope} && {!_cargoIsLoaded} && {!_playerInCargo} && {ACE_SELFINTERACTION_RESTRICTED}], + // Attach sling rope to helicopter + [format[(__ADD_SLING_HELI+"%1"), (if (_nearestHelicopterDist < 15) then {format[" %1m", (round ((_target distance _nearestHelicopter)*10))/10]} else {""})], + { GVAR(targets) spawn FUNC(attachSlingRopeToHelicopter) }, + "", "", "", DIK_G, + _cargoIsEmpty && {!_cargoIsAttachedToSomethingElse} && {(_helicopterAvailable || {!isNull _nearestHelicopter})} && {!_helicopterIsTransporting} && {_helicopterCanLift} && {_weight}, + alive _target && {_cargoHasSlingRope} && {!_cargoIsLoaded} && {!_playerInCargo} && {ACE_SELFINTERACTION_RESTRICTED}] + ] + ] +]; + +//----------------------------------------------------------------------------- +_menuDef = []; +{ + if (_x select 0 select 0 == _menuName) exitWith {_menuDef = _x}; +} forEach _menus; + +if (count _menuDef == 0) then { + hintC format ["Error: Menu not found: %1\n%2\n%3", str _menuName, if (_menuName == "") then {_this} else {""}, __FILE__]; + diag_log format ["Error: Menu not found: %1, %2, %3", str _menuName, _params, __FILE__]; +}; + +_menuDef // return value diff --git a/TO_MERGE/ace/sys_cargo/slingload/license.txt b/TO_MERGE/ace/sys_cargo/slingload/license.txt new file mode 100644 index 0000000000..7113bf4340 --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/slingload/license.txt @@ -0,0 +1,79 @@ +License (short) +=============== + +You are free: +- to Share to copy, distribute and transmit the work + +Under the following conditions: +- Attribution You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). +- Noncommercial You may not use this work for commercial purposes. +- No Derivative Works You may not alter, transform, or build upon this work. + +With the understanding that: + +Waiver Any of the above conditions can be waived if you get permission from the copyright holder. + +Public Domain Where the work or any of its elements is in the public domain under applicable law, that status is in no way affected by the license. + +Other Rights In no way are any of the following rights affected by the license: + - Your fair dealing or fair use rights, or other applicable copyright exceptions and limitations; + - The author's moral rights; + - Rights other persons may have either in the work itself or in how the work is used, such as publicity or privacy rights. + +Notice For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page. + + +Full license text +================= + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. + +1. Definitions + +"Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. +"Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. +"Distribute" means to make available to the public the original and copies of the Work through sale or other transfer of ownership. +"Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. +"Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. +"Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. +"You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. +"Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. +"Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. +2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: + +to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; and, +to Distribute and Publicly Perform the Work including as incorporated in Collections. +The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats, but otherwise you have no rights to make Adaptations. Subject to 8(f), all rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Section 4(d). + +4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: + +You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. +You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. +If You Distribute, or Publicly Perform the Work or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work. The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Collection, at a minimum such credit will appear, if a credit for all contributing authors of Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. +For the avoidance of doubt: + +Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; +Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License if Your exercise of such rights is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b) and otherwise waives the right to collect royalties through any statutory or compulsory licensing scheme; and, +Voluntary License Schemes. The Licensor reserves the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License that is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b). +Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + +This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. +Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. +8. Miscellaneous + +Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. +If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. +No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. +This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. +The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. diff --git a/TO_MERGE/ace/sys_cargo/slingload/m_ace_rope.p3d b/TO_MERGE/ace/sys_cargo/slingload/m_ace_rope.p3d new file mode 100644 index 0000000000000000000000000000000000000000..61f471e1c68921354a9c95aa68be7dd9799fd3ac GIT binary patch literal 59912 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 + +// Sling rope is still attached to the cargo + +detach (_helicopter getVariable QGVAR(slingrope)); +detach _cargo; +deleteVehicle (_helicopter getVariable QGVAR(slingrope)); // Delete physical rope object + +_helicopter setVariable [QGVAR(slingrope), objnull]; + +_helicopter removeAction (_helicopter getvariable QGVAR(cutAction)); +_helicopter setVariable [QGVAR(cutAction), -1]; + +if ((getpos _cargo) select 2 < 2) then { + _altfinal = ((getposASL _cargo) select 2) - ((getpos _cargo) select 2); + _cargo setposASL [getpos _cargo select 0, getpos _cargo select 1, _altfinal]; +} else { + _vel = velocity _helicopter; + _retro = _vel select 2; + _altant = (getpos _cargo) select 2; + _cargo setvelocity [_vel select 0, _vel select 1, -1]; + _helicopter setvelocity [_vel select 0, _vel select 1, _retro]; + + _dam = 0.00; + _delay = 0.01; + + sleep 0.25; + + _static = (_cargo isKindOf "Static"); + if (!_static) then { + if ((getpos _cargo select 2) == _altant) then { + _static = true; + }; + }; + + _pos = getPos _cargo; + + // TODO: Possible cause for statics staying in the air? + while {(position _cargo select 2) > 0} do { + if (_dam < 1) then {_dam = _dam + _delay}; + if (_static) then {_cargo setpos [_pos select 0, _pos select 1, (getpos _cargo select 2) - 0.25]}; + sleep _delay; + }; + if (_static) then {_cargo setpos [_pos select 0, _pos select 1, 0]}; + _cargo setdamage (damage _cargo + _dam); +}; + +_cargo setVariable [QGVAR(isLoaded),false,true]; + +// Create slingrope next to cargo object +_cargo spawn { + private ["_magHolder"]; + sleep 2; + _magHolder = "WeaponHolder" createVehicle [0,0,0]; + _magholder addMagazineCargoGlobal ["ACE_Rope_M5", 1]; + [QGVAR(wh), _magHolder] call CBA_fnc_globalEvent; + _magHolder setPos [((position _this) select 0)+2, ((position _this) select 1)+2,0]; +}; +_cargo setVariable [QGVAR(hasSlingRope), false, true]; + +// Unlock +if (_cargo call CBA_fnc_locked) then { + _lockedBefore = _cargo getVariable [QGVAR(locked), false]; + if !(_lockedBefore) then { + [QGVAR(lock), [_cargo, false]] call CBA_fnc_globalEvent; + }; +}; diff --git a/TO_MERGE/ace/sys_cargo/ua_carry2.sqf b/TO_MERGE/ace/sys_cargo/ua_carry2.sqf new file mode 100644 index 0000000000..66e515dd6d --- /dev/null +++ b/TO_MERGE/ace/sys_cargo/ua_carry2.sqf @@ -0,0 +1,192 @@ +/* ace_sys_cargo | (c) 2010,2011 by rocko */ + +//#define DEBUG_MODE_FULL +#include "script_component.hpp" + +#define ACE_TEXT_RED(Text) ("" + ##Text + "") + +PARAMS_4(_component,_unit,_id,_ar); + +_position = _ar select 0; +_action = _ar select 1; +if (_component == _unit) then { + _component = _ar select 2; +}; + +TRACE_3("",_position,_action,_component); + +if (isNil QUOTE(FUNC(sease))) then { + FUNC(ease) = { + private "_unit"; + _unit action ["WeaponOnBack", _unit]; + }; +}; + +if (isNil QUOTE(FUNC(sdrop))) then { + FUNC(sdrop) = { + PARAMS_1(_component); + private ["_carrier_front","_carrier_back"]; + _carrier_front = _component getVariable QGVAR(carrier_front); + _carrier_front removeAction GVAR(drop_action); + _carrier_back = _component getVariable QGVAR(carrier_back); + detach _carrier_back; + detach _component; + _component setPosATL [getPos _component select 0, getPos _component select 1, 0]; + _carrier_front setVariable [QGVAR(monitoring),false,true]; + + _component setVariable [QGVAR(carrier_front), nil, true]; + _component setVariable [QGVAR(carrier_back), nil, true]; + TRACE_1("Dropping component",""); + _component setVelocity [0,0,0]; + + { + //_x setVariable ["ace_sys_stamina_mass",0,true]; // The function is bullshit - but why? + [_x,0] call INC_MASS; + _x removeEventhandler ["fired",(_x getVariable QGVAR(carryFEH))]; + _x removeEventhandler ["getin",(_x getVariable QGVAR(carryGIH))]; + _x setVariable [QGVAR(carryFEH),-1]; + _x setVariable [QGVAR(carryGIH),-1]; + _x setVariable [QGVAR(forcedrop),false]; + _x forceWalk false; + _x forceWalk false; + } foreach [_carrier_front,_carrier_back]; + [objnull,_component,0,0] call FUNC(cbusy); + }; +}; + +switch (toLower _action) do { + case "grab": { // GRAB ACTION + switch (toLower _position) do { + case "front": { + _unit setDir direction _component; // Front position is "driver" + _attachPos = if (count getArray(configFile >> "CfgVehicles" >> typeOf _component >> "attachPosFront") > 0) then { + getArray(configFile >> "CfgVehicles" >> typeOf _component >> "attachPosFront") + } else { [0,-0.5,0.5] }; + _component attachTo [_unit, _attachPos, ""]; // Attach component to front carrier + _component setVariable [QGVAR(carrier_front), _unit, true]; // SetVariable front carrier onto component + [objnull,_component,1,1] call FUNC(cbusy); + + // Add "drop" action, GLOBAL, since we handle player only + GVAR(drop_action) = _unit addAction [ + ACE_TEXT_RED((localize "STR_ACE_CARGO_CARRYRELASE")), + "\z\ace\addons\sys_cargo\ua_carry2.sqf", + ["", "drop",_component], + -1,false,true,"","" + ]; // 0 - target, 1 - caller, 2 - id , 3 - ar=[0 - "", 1 - action] + + if (local _unit) then { + _unit setVariable [QGVAR(monitoring), true]; + }; + //_unit call FUNC(ease); // Put weapon on back while carrying in pairs + + // Stamina Boost on taking knee + pushing loaded stretcher up + _weight = ([_component] call FUNC(weight))/2; + [_unit,_weight] call INC_MASS; + //_unit setVariable ["ace_sys_stamina_mass",_weight,false]; // TODO: Fix weight + _fired_i = _unit addEventHandler ["fired", {(_this select 0) setVariable ["ace_sys_cargo_forcedrop",true]}]; + _getin_i = _unit addEventhandler ["getin",{(_this select 0) setVariable ["ace_sys_cargo_forcedrop",true];}]; + _unit setVariable [QGVAR(carryFEH),_fired_i]; + _unit setVariable [QGVAR(carryGIH),_getin_i]; + _unit setVariable [QGVAR(forcedrop),false]; + }; + case "back": { // Back position is following + _attachPos = if (count getArray(configFile >> "CfgVehicles" >> typeOf _component >> "attachPosRear") > 0) then { + getArray(configFile >> "CfgVehicles" >> typeOf _component >> "attachPosRear") + } else { [0,-0.5,0.5] }; + _unit attachTo [(_component getVariable QGVAR(carrier_front)),_attachPos,""]; // Attach helper to the front carrier + _component setVariable [QGVAR(carrier_back), _unit, true]; // SetVariable back carrier to component + + // Stamina Boost on taking knee + pushing loaded stretcher up + _weight = ([_component] call FUNC(weight))/2; + [_unit,_weight] call INC_MASS; + //_unit setVariable ["ace_sys_stamina_mass",_weight,false]; + _fired_i = _unit addEventHandler ["fired", {(_this select 0) setVariable ["ace_sys_cargo_forcedrop",true]}]; + _getin_i = _unit addEventhandler ["getin",{(_this select 0) setVariable ["ace_sys_cargo_forcedrop",true];}]; + _unit setVariable [QGVAR(carryFEH),_fired_i]; + _unit setVariable [QGVAR(carryGIH),_getin_i]; + _unit setVariable [QGVAR(forcedrop),false]; + }; + }; + }; + case "drop": { // Drop action + _component call FUNC(sdrop); + }; +}; + +TRACE_1("",(_unit getVariable QGVAR(monitoring))); + +// Monitoring script for the front carrier +if (_position == "front") then { + _count = 0; + while { _unit getVariable QGVAR(monitoring) } do { // CALLED WHEN USING GRAB ONLY ! + + TRACE_1("While running",""); + + _carrier_front = _component getVariable QGVAR(carrier_front); + _carrier_back = _component getVariable QGVAR(carrier_back); + + // Check for front carrier, when there is no back carrier within 10 seconds, front carrier drops stretcher again + if (_count > 8 && {isNil "_carrier_back"}) then { + _component call FUNC(sdrop); + //_carrier_front removeAction GVAR(drop_action); + if (local _carrier_front) then { localize "STR_ACE_CARGO_DROPPED" call ace_fnc_visual; }; + TRACE_1("Dropping: No helper",""); + }; + + // Check if the front carrier entered a vehicle! TODO + + // While none of the carriers is dead or unconscious nothing happens + if !(alive _carrier_front) then { + _component call FUNC(sdrop); + TRACE_1("Frontcarrier dead",""); + }; + if !(alive _carrier_back) then { + _component call FUNC(sdrop); + TRACE_1("Backcarrier dead",""); + }; + + // Too fast + if ((velocity _carrier_front call ACE_fnc_magnitude) > 5.51) then { + _component call FUNC(sdrop); + if (local _carrier_front) then { localize "STR_ACE_CARGO_DROPPED" call ace_fnc_visual; }; + TRACE_1("Too fast",""); + }; + + // TODO: Carrier front and back are unconsciousnes (i.e back carriers is unconscious and would be dragged in stretcher) + // TODO: Wrong animation: Taking out Binocular, Raising weapon (combat ready), taking a knee, going prone + // Allow tacticool movement for carrying CSWs + _dropConditionAnim = if (_component isKindOf "StaticWeapon") then { ["stand","kneel"] } else { ["stand"] }; + if !(((_carrier_front call CBA_fnc_getUnitAnim) select 0) in _dropConditionAnim) then { + _component call FUNC(sdrop); + if (local _carrier_front) then { localize "STR_ACE_CARGO_DROPPED" call ace_fnc_visual; }; + TRACE_1("Wrong animation",""); + }; + if !(((_carrier_back call CBA_fnc_getUnitAnim) select 0) in _dropConditionAnim) then { + _component call FUNC(sdrop); + if (local _carrier_back) then { localize "STR_ACE_CARGO_DROPPED" call ace_fnc_visual; }; + TRACE_1("Wrong animation Backcarrier",""); + }; + + // TODO: Anything else not allowed, firing, entering vehicles, climbing up ladders + // Ladders + if ((animationState _carrier_front) in ["ladderrifleon","laddercivilon"]) then { + _component call FUNC(sdrop); + if (local _carrier_front) then { localize "STR_ACE_CARGO_DROPPED" call ace_fnc_visual; }; + TRACE_1("Wrong animation: LADDER",""); + }; + //_dropConditionAnim2 = (animationState _unit) in ["aidlpercmstpsraswrfldnon_idlesteady04","aidlpercmstpsraswrfldnon_aiming01","aidlpercmstpsraswrfldnon_idlesteady02","aidlpercmstpsraswrfldnon_idlesteady03","aidlpercmstpsraswrfldnon_idlesteady01","aidlpercmstpsraswrfldnon_aiming02"]; + //if ((animationState _carrier_front) in _dropConditionAnim2) then { + // _component call FUNC(sdrop); + // if (local _carrier_front) then { localize "STR_ACE_CARGO_DROPPED" call ace_fnc_visual; }; + //}; + //if ((animationState _carrier_back) in _dropConditionAnim2) then { + // _component call FUNC(sdrop); + // if (local _carrier_back) then { localize "STR_ACE_CARGO_DROPPED" call ace_fnc_visual; }; + //}; + + sleep 1; + INC(_count); + }; + _unit setVariable [QGVAR(monitoring),false]; + TRACE_1("Carrying aborted",""); +}; From 08763b6b9f57a9fb0c7e61e0f8bbe5c8fd0570dc Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 30 Jan 2015 14:32:21 -0600 Subject: [PATCH 027/211] Initial port of old pull Still some problem with interaction... --- addons/attach/CfgVehicles.hpp | 56 +++++++++-- addons/attach/XEH_preInit.sqf | 2 + addons/attach/functions/fnc_attach.sqf | 98 ++++++++++++-------- addons/attach/functions/fnc_canAttach.sqf | 8 +- addons/attach/functions/fnc_canDetach.sqf | 42 ++++++--- addons/attach/functions/fnc_detach.sqf | 47 +++++++--- addons/attach/functions/fnc_openAttachUI.sqf | 10 +- addons/attach/functions/fnc_placeApprove.sqf | 87 +++++++++++++++++ addons/attach/functions/fnc_placeCancel.sqf | 42 +++++++++ addons/attach/stringtable.xml | 22 +++++ 10 files changed, 335 insertions(+), 79 deletions(-) create mode 100644 addons/attach/functions/fnc_placeApprove.sqf create mode 100644 addons/attach/functions/fnc_placeCancel.sqf diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp index a8653b9e06..8a231d3679 100644 --- a/addons/attach/CfgVehicles.hpp +++ b/addons/attach/CfgVehicles.hpp @@ -1,17 +1,59 @@ #define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ - name = #ITEM; \ - count = COUNT; \ -}; + name = #ITEM; \ + count = COUNT; \ + }; + +#define MACRO_ATTACHTOVEHICLE \ + class ACE_Actions { \ + class GVAR(AttachVehicle) { \ + displayName = "$STR_ACE_Attach_AttachDetach"; \ + condition = QUOTE( [ARR_3(_player, _target, '')] call FUNC(canAttach) ); \ + statement = QUOTE( [ARR_2(_player, _target)] call FUNC(openAttachUI); ); \ + exceptions[] = {"ACE_Drag_isNotDragging"}; \ + showDisabled = 0; \ + priority = 0; \ + icon = PATHTOF(UI\attach_ca.paa); \ + hotkey = "T"; \ + }; \ + class GVAR(DetachVehicle) { \ + displayName = "$STR_ACE_Attach_Detach"; \ + condition = QUOTE( [ARR_2(_player, _target)] call FUNC(canDetach) ); \ + statement = QUOTE( [ARR_2(_player, _target)] call FUNC(detach) ); \ + exceptions[] = {"ACE_Drag_isNotDragging"}; \ + showDisabled = 0; \ + priority = 0; \ + icon = PATHTOF(UI\detach_ca.paa); \ + }; \ + }; class CfgVehicles { + class LandVehicle; + class Car: LandVehicle { + MACRO_ATTACHTOVEHICLE + }; + class Tank: LandVehicle { + MACRO_ATTACHTOVEHICLE + }; + class Air; + class Helicopter: Air { + MACRO_ATTACHTOVEHICLE + }; + class Plane: Air { + MACRO_ATTACHTOVEHICLE + }; + class Ship; + class Ship_F: Ship { + MACRO_ATTACHTOVEHICLE + }; + class Man; class CAManBase: Man { class ACE_SelfActions { class ACE_Equipment { class GVAR(Attach) { displayName = "$STR_ACE_Attach_AttachDetach"; - condition = QUOTE( [_player, ''] call FUNC(canAttach) ); - statement = QUOTE( [_player] call FUNC(openAttachUI); ); + condition = QUOTE( [ARR_3(_player, _player, '')] call FUNC(canAttach) ); + statement = QUOTE( [ARR_2(_player, _player)] call FUNC(openAttachUI); ); exceptions[] = {"ACE_Drag_isNotDragging"}; showDisabled = 0; priority = 5; @@ -20,8 +62,8 @@ class CfgVehicles { }; class GVAR(Detach) { displayName = "$STR_ACE_Attach_Detach"; - condition = QUOTE( [_player] call FUNC(canDetach) ); - statement = QUOTE( [_player] call FUNC(detach) ); + condition = QUOTE( [ARR_2(_player, _player)] call FUNC(canDetach) ); + statement = QUOTE( [ARR_2(_player, _player)] call FUNC(detach) ); exceptions[] = {"ACE_Drag_isNotDragging"}; showDisabled = 0; priority = 5; diff --git a/addons/attach/XEH_preInit.sqf b/addons/attach/XEH_preInit.sqf index 279ea4d4c7..63eb2e8438 100644 --- a/addons/attach/XEH_preInit.sqf +++ b/addons/attach/XEH_preInit.sqf @@ -7,5 +7,7 @@ PREP(canAttach); PREP(canDetach); PREP(detach); PREP(openAttachUI); +PREP(placeApprove); +PREP(placeCancel); ADDON = true; diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index ab920c6428..2619f8ac98 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -6,57 +6,79 @@ Author: eRazeri and CAA-Picard Attach an item to the unit Arguments: -0: unit -1: Item name +0: OBJECT - unit doing the attaching (player) +1: OBJECT - vehicle that it will be attached to (player or vehicle) +2: STRING - classname of attached item (from CfgMagazines or CfgWeapons) Return Value: none */ -private ["_unit", "_itemName", "_attachedItem"]; +PARAMS_3(_unit,_attachToVehicle,_itemName); -_unit = _this select 0; -_itemName = _this select 1; +//Sanity Check (_unit has item in inventory, not over attach limit) +if (!([_unit,_attachToVehicle,_itemName] call FUNC(canAttach))) exitWith {ERROR("Tried to attach, but check failed");}; -// Check if unit has an attached item -if (_unit getVariable [QGVAR(ItemName), ""] != "") exitWith {}; +_selfAttachPosition = [_unit, [-0.05,0,0.12], "rightshoulder"]; +_itemVehClass = ""; +_onAtachText = ""; -// Check if the unit still has the item -if !((_itemName in items _unit) or (_itemName in magazines _unit)) exitWith {}; - -// Attach item switch true do { - case (_itemName == "ACE_IR_Strobe_Item") : { - _attachedItem = "ACE_IR_Strobe_Effect" createVehicle [0,0,0]; - _attachedItem attachTo [_unit,[0,-0.11,0.16],"pilot"];//makes it attach to the head a bit better, shoulder is not good for visibility - eRazeri - [localize "STR_ACE_Attach_IrStrobe_Attached"] call EFUNC(common,displayTextStructured); +case (_itemName == "ACE_IR_Strobe_Item"): { + _itemVehClass = "ACE_IR_Strobe_Effect"; + _onAtachText = localize "STR_ACE_Attach_IrStrobe_Attached"; + _selfAttachPosition = [_unit,[0,-0.11,0.16],"pilot"]; //makes it attach to the head a bit better, shoulder is not good for visibility - eRazeri }; - case (_itemName == "B_IR_Grenade") : { - _attachedItem = "B_IRStrobe" createVehicle [0,0,0]; - _attachedItem attachTo [_unit,[-0.05,0,0.12],"rightshoulder"]; - [localize "STR_ACE_Attach_IrGrenade_Attached"] call EFUNC(common,displayTextStructured); +case (_itemName == "B_IR_Grenade"): { + _itemVehClass = "B_IRStrobe"; + _onAtachText = localize "STR_ACE_Attach_IrGrenade_Attached"; }; - case (_itemName == "O_IR_Grenade") : { - _attachedItem = "O_IRStrobe" createVehicle [0,0,0]; - _attachedItem attachTo [_unit,[-0.05,0,0.12],"rightshoulder"]; - [localize "STR_ACE_Attach_IrGrenade_Attached"] call EFUNC(common,displayTextStructured); +case (_itemName == "O_IR_Grenade"): { + _itemVehClass = "O_IRStrobe"; + _onAtachText = localize "STR_ACE_Attach_IrGrenade_Attached"; }; - case (_itemName == "I_IR_Grenade") : { - _attachedItem = "I_IRStrobe" createVehicle [0,0,0]; - _attachedItem attachTo [_unit,[-0.05,0,0.12],"rightshoulder"]; - [localize "STR_ACE_Attach_IrGrenade_Attached"] call EFUNC(common,displayTextStructured); +case (_itemName == "I_IR_Grenade"): { + _itemVehClass = "I_IRStrobe"; + _onAtachText = localize "STR_ACE_Attach_IrGrenade_Attached"; }; - case (_itemName == "Chemlight_blue" or {_itemName == "Chemlight_green"} or {_itemName == "Chemlight_red"} or {_itemName == "Chemlight_yellow"}) : { - _attachedItem = _itemName createVehicle [0,0,0]; - _attachedItem attachTo [_unit,[-0.05,0,0.12],"rightshoulder"]; - [localize "STR_ACE_Attach_Chemlight_Attached"] call EFUNC(common,displayTextStructured);; - }; - default { - if (true) exitWith {}; +case (_itemName == "Chemlight_blue" or {_itemName == "Chemlight_green"} or {_itemName == "Chemlight_red"} or {_itemName == "Chemlight_yellow"}): { + _itemVehClass = _itemName; + _onAtachText = localize "STR_ACE_Attach_Chemlight_Attached"; }; }; -// Remove item -_unit removeItem _itemName; -_unit setVariable [QGVAR(ItemName), _itemName, true]; -_unit setVariable [QGVAR(Item), _attachedItem, true]; +if (_itemVehClass == "") exitWith {ERROR("no _itemVehClass for Item");}; + +if (_unit == _attachToVehicle) then { //Self Attachment + _unit removeItem _itemName; // Remove item + _attachedItem = _itemVehClass createVehicle [0,0,0]; + _attachedItem attachTo _selfAttachPosition; + [_onAtachText] call EFUNC(common,displayTextStructured); + _attachToVehicle setVariable ["ACE_AttachedObjects", [_attachedItem], true]; + _attachToVehicle setVariable ["ACE_AttachedItemNames", [_itemName], true]; +} else { + GVAR(setupObject) = _itemVehClass createVehicleLocal [0,0,-10000]; + GVAR(setupObject) enableSimulationGlobal false; + GVAR(SetupPlacmentText) = _onAtachText; + GVAR(SetupPlacmentItem) = _itemName; + GVAR(SetupAttachVehicle) = _attachToVehicle; + GVAR(placer) = _unit; + [_unit, QGVAR(vehAttach), true] call EFUNC(common,setForceWalkStatus); + + [QGVAR(PlacementEachFrame),"OnEachFrame", { + private "_player"; + _player = ACE_player; + //Stop if player switch or player gets to far from vehicle + if ((GVAR(placer) != _player) || ((_player distance GVAR(SetupAttachVehicle)) > 9)) exitWith { + call FUNC(placeCancel); + }; + GVAR(pfeh_running) = true; + _pos = (ASLtoATL eyePos _player) vectorAdd (positionCameraToWorld [0,0,1] vectorDiff positionCameraToWorld [0,0,0]); + GVAR(setupObject) setPosATL _pos; + }] call BIS_fnc_addStackedEventHandler; + + //had to spawn the mouseHint, not sure why + [localize "STR_ACE_Attach_PlaceAction", localize "STR_ACE_Attach_CancelAction"] call EFUNC(interaction,showMouseHint); + _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {GVAR(pfeh_running) AND !isNull (GVAR(setupObject))}, {call FUNC(placeApprove);}] call EFUNC(common,AddActionEventHandler)]; + _unit setVariable [QGVAR(cancelActionEH), [_unit, "MenuBack", {GVAR(pfeh_running) AND !isNull (GVAR(setupObject))}, {call FUNC(placeCancel);}] call EFUNC(common,AddActionEventHandler)]; +}; diff --git a/addons/attach/functions/fnc_canAttach.sqf b/addons/attach/functions/fnc_canAttach.sqf index fe5191d7e2..264b627887 100644 --- a/addons/attach/functions/fnc_canAttach.sqf +++ b/addons/attach/functions/fnc_canAttach.sqf @@ -13,9 +13,9 @@ * Boolean (Bool) */ -private ["_unit", "_item"]; +PARAMS_3(_unit,_attachToVehicle,_item); -_unit = _this select 0; -_item = _this select 1; +_attachLimit = if (_unit == _attachToVehicle) then {1} else {10}; +_attachedObjects = _attachToVehicle getVariable ["ACE_AttachedObjects", []]; -canStand _unit && {_unit getVariable [QGVAR(ItemName), ""] == ""} && {_item in (magazines _unit + items _unit + [""])} +canStand _unit && {alive _attachToVehicle} && {(count _attachedObjects) < _attachLimit} && {_item in (magazines _unit + items _unit + [""])} diff --git a/addons/attach/functions/fnc_canDetach.sqf b/addons/attach/functions/fnc_canDetach.sqf index 3ddfc6c11e..273831a6fc 100644 --- a/addons/attach/functions/fnc_canDetach.sqf +++ b/addons/attach/functions/fnc_canDetach.sqf @@ -1,19 +1,35 @@ #include "script_component.hpp" /* - * Author: commy2 - * - * Check if a unit has an item attached and if it can remove that item. - * - * Argument: - * 0: Unit that wants to detach something (Object) - * - * Return value: - * Boolean (Bool) - */ +* Author: commy2 +* +* Check if a unit has an item attached and if it can remove that item. +* +* Argument: +* 0: Unit that wants to detach something (Object) +* +* Return value: +* Boolean (Bool) +*/ -private "_unit"; +private ["_attachedObjects", "_inRange", "_unitPos", "_objectPos"]; -_unit = _this select 0; +PARAMS_2(_unit,_attachToVehicle); -canStand _unit && {_unit getVariable [QGVAR(ItemName), ""] != ""} +_attachedObjects = _attachToVehicle getVariable ["ACE_AttachedObjects", []]; + +_inRange = false; +if (_unit == _attachToVehicle) then { + _inRange = (count _attachedObjects) > 0; +} else { + //Scan if unit is within range (using 2d distance) + _unitPos = getPos _unit; + _unitPos set [2,0]; + { + _objectPos = getPos _x; + _objectPos set [2, 0]; + if ((_objectPos distance _unitPos) < 2.4) exitWith {_inRange = true}; + } forEach _attachedObjects; +}; + +(canStand _unit) && _inRange && {alive _attachToVehicle} diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf index 3ecac44d62..d9ade6e4d0 100644 --- a/addons/attach/functions/fnc_detach.sqf +++ b/addons/attach/functions/fnc_detach.sqf @@ -12,14 +12,34 @@ Return Value: none */ -private ["_unit", "_itemName", "_count", "_attachedItem", "_fnc_detachDelay"]; +private ["_itemName", "_count", "_attachedItem", "_fnc_detachDelay"]; -_unit = _this select 0; -_itemName = _unit getVariable [QGVAR(ItemName), ""]; -_attachedItem = _unit getVariable [QGVAR(Item), objNull]; +PARAMS_2(_unit, _attachToVehicle); + +_attachedObjectsArray = _attachToVehicle getVariable ["ACE_AttachedObjects", []]; +_attachedItemsArray = _attachToVehicle getVariable ["ACE_AttachedItemNames", []]; + +_attachedObject = objNull; +_attachedIndex = -1; +_itemName = ""; + +//Find closest attached object +_minDistance = 1000; +_unitPos = getPos _unit; +_unitPos set [2,0]; +{ + _objectPos = getPos _x; + _objectPos set [2, 0]; + if ((_objectPos distance _unitPos) < _minDistance) then { + _minDistance = (_objectPos distance _unitPos); + _attachedObject = _x; + _itemName = _attachedItemsArray select _forEachIndex; + _attachedIndex = _forEachIndex; + }; +} forEach _attachedObjectsArray; // Check if unit has an attached item -if (_itemName == "") exitWith {}; +if ((isNull _attachedObject) || {_itemName == ""}) exitWith {ERROR("Could not find attached object")}; // Add item to inventory _count = (count items _unit) + (count magazines _unit); @@ -30,21 +50,23 @@ if ((count items _unit) + (count magazines _unit) <= _count) exitWith { if (_itemName == "B_IR_Grenade" or _itemName == "O_IR_Grenade" or _itemName == "I_IR_Grenade") then { // Hack for dealing with X_IR_Grenade effect not dissapearing on deleteVehicle - detach _attachedItem; - _attachedItem setPos [getPos _unit select 0, getPos _unit select 1, ((getPos _unit select 2) - 1000)]; + detach _attachedObject; + _attachedObject setPos [getPos _unit select 0, getPos _unit select 1, ((getPos _unit select 2) - 1000)]; // Delete attached item after 0.5 seconds _fnc_detachDelay = { deleteVehicle (_this select 0); }; - [_fnc_detachDelay, [_attachedItem], 0.5, 0] call EFUNC(common,waitAndExecute); + [_fnc_detachDelay, [_attachedObject], 0.5, 0] call EFUNC(common,waitAndExecute); } else { // Delete attached item - deleteVehicle _attachedItem; + deleteVehicle _attachedObject; }; // Reset unit variables -_unit setVariable [QGVAR(ItemName),"", true]; -_unit setVariable [QGVAR(Item),nil, true]; +_attachedObjectsArray deleteAt _attachedIndex; +_attachedItemsArray deleteAt _attachedIndex; +_attachToVehicle setVariable ["ACE_AttachedObjects", _attachedObjectsArray, true]; +_attachToVehicle setVariable ["ACE_AttachedItemNames", _attachedItemsArray, true]; // Display message switch true do { @@ -57,7 +79,4 @@ switch true do { case (_itemName == "Chemlight_blue" or {_itemName == "Chemlight_green"} or {_itemName == "Chemlight_red"} or {_itemName == "Chemlight_yellow"}) : { [localize "STR_ACE_Attach_Chemlight_Detached"] call EFUNC(common,displayTextStructured); }; - default { - if (true) exitWith {}; - }; }; diff --git a/addons/attach/functions/fnc_openAttachUI.sqf b/addons/attach/functions/fnc_openAttachUI.sqf index 97046fa80b..573e0ad27f 100644 --- a/addons/attach/functions/fnc_openAttachUI.sqf +++ b/addons/attach/functions/fnc_openAttachUI.sqf @@ -8,6 +8,7 @@ Parameters: 0: OBJECT - unit + 0: OBJECT - target Returns: Nothing @@ -15,8 +16,11 @@ Example: [player] call ACE_Attach_fnc_openAttachUI; */ -private ["_unit", "_actions", "_attachables", "_item"]; -_unit = _this select 0; +private ["_actions", "_attachables", "_item"]; + +PARAMS_2(_unit,_target); + +GVAR(attachTarget) = _target; _listed = []; _attachables = magazines _unit; _actions = [localize "STR_ACE_Attach_AttachDetach", localize "STR_ACE_Attach_Attach"] call EFUNC(interaction,prepareSelectMenu); @@ -53,7 +57,7 @@ _attachables = items _unit; [ _actions, { - [ACE_player, _this] call FUNC(attach); + [ACE_player, GVAR(attachTarget), _this] call FUNC(attach); call EFUNC(interaction,hideMenu); }, { diff --git a/addons/attach/functions/fnc_placeApprove.sqf b/addons/attach/functions/fnc_placeApprove.sqf new file mode 100644 index 0000000000..290812ae4a --- /dev/null +++ b/addons/attach/functions/fnc_placeApprove.sqf @@ -0,0 +1,87 @@ +/* + Name: FUNC(placeApprove) + Author(s): + Pabst Mirror (based on Explosive attach by Garth de Wet (LH)) + Description: + Approves placement of the lightObject, releases the placement object for it to settle in a location + Parameters: + Nothing + Returns: + Nothing + Example: + call FUNC(placeApprove); +*/ +#include "script_component.hpp" + +private ["_setupObject", "_setupClassname", "_itemClassname", "_placementText", "_attachToVehicle", "_player", "_position0", "_closeInRatio", "_offset", "_keepGoingCloser", "_pos0temp", "_position1", "_attachedObject", "_currentObjects", "_currentItemNames"]; + +if (GVAR(pfeh_running)) then { + [QGVAR(PlacementEachFrame),"OnEachFrame"] call BIS_fnc_removeStackedEventHandler; + GVAR(pfeh_running) = false; +}; + +_setupObject = GVAR(setupObject); +_setupClassname = typeOf _setupObject; +_itemClassname = GVAR(SetupPlacmentItem); +_placementText = GVAR(SetupPlacmentText); +_attachToVehicle = GVAR(SetupAttachVehicle); + +GVAR(SetupPlacmentItem) = ""; +GVAR(SetupPlacmentText) = ""; +GVAR(setupObject) = objNull; +GVAR(SetupAttachVehicle) = objNull; +[GVAR(placer), QGVAR(vehAttach), false] call EFUNC(common,setForceWalkStatus); +GVAR(placer) = objNull; + +_player = ACE_player; +[_player, "DefaultAction", _player getVariable [QGVAR(placeActionEH), -1]] call EFUNC(common,removeActionEventHandler); +[_player, "MenuBack", _player getVariable [QGVAR(cancelActionEH), -1]] call EFUNC(common,removeActionEventHandler); +call EFUNC(interaction,hideMouseHint); + +//A player can release the attachObject with it floating in mid-air. +//This will use lineIntersectsWith to scan towards the center of the vehicle to find a collision +//ArmA's collision detection is of couse terrible and often misses collisions (difference between what we see and collision LOD) +//So it does multiple scans at slighly different angles +//This is VERY computationaly intensive, but doesn't happen that often. + +_position0 = getPosAtl _setupObject; +_closeInRatio = 1; +_offset = _attachToVehicle worldToModel _position0; +_keepGoingCloser = true; +while {_keepGoingCloser} do { + _closeInRatio = _closeInRatio - 0.004; + if (_closeInRatio <= 0) exitWith {}; + { + _pos0temp = _position0 vectorAdd _x; + { + _position1 = [(_offset select 0) * _closeInRatio, (_offset select 1) * _closeInRatio, (_offset select 2)]; + _position1 = _attachToVehicle modelToWorld _position1; + _position1 = _position1 vectorAdd _x; + //Uncomment to see the lazor show, and see how the scanning works: + // drawLine3D [_pos0temp, _position1, [1,0,0,1]]; + if (_attachToVehicle in lineIntersectsWith [(ATLToASL _pos0temp), (ATLToASL _position1), player, _setupObject]) exitWith {_keepGoingCloser = false}; + } forEach [[0,0,0], [0,0,0.075], [0,0,-0.075], [0,0.075,0], [0,-0.075,0], [0.075,0,0], [-.075,0,0]]; + } forEach [[0,0,0], [0,0,0.075], [0,0,-0.075]]; +}; +//Move it out slightly, for visability sake (better to look a little funny than be embedded//sunk in the hull) +_closeInRatio = (_closeInRatio + 0.006) min 1; + +//Delete Local Placement Object +deleteVehicle _setupObject; + +//Create New 'real' Object +_attachedObject = _setupClassname createVehicle (getPos _player); +_attachedObject attachTo [_attachToVehicle, [(_offset select 0) * _closeInRatio, (_offset select 1) * _closeInRatio, (_offset select 2)]]; + +//Remove Item from inventory +_player removeItem _itemClassname; + +//Add Object to ACE_AttachedObjects and ACE_AttachedItemNames +_currentObjects = _attachToVehicle getVariable ["ACE_AttachedObjects", []]; +_currentObjects pushBack _attachedObject; +_attachToVehicle setVariable ["ACE_AttachedObjects", _currentObjects, true]; +_currentItemNames = _attachToVehicle getVariable ["ACE_AttachedItemNames", []]; +_currentItemNames pushBack _itemClassname; +_attachToVehicle setVariable ["ACE_AttachedItemNames", _currentItemNames, true]; + +[_placementText] call EFUNC(common,displayTextStructured); diff --git a/addons/attach/functions/fnc_placeCancel.sqf b/addons/attach/functions/fnc_placeCancel.sqf new file mode 100644 index 0000000000..ffa84b9d12 --- /dev/null +++ b/addons/attach/functions/fnc_placeCancel.sqf @@ -0,0 +1,42 @@ +/* + Name: FUNC(placeCancel) + + Author(s): + Pabst Mirror (based on Explosive attach by Garth de Wet (LH)) + + Description: + Cancels placement of the lightObject + + Parameters: + Nothing + + Returns: + Nothing + + Example: + call FUNC(placeCancel); +*/ +#include "script_component.hpp" + +if (GVAR(pfeh_running)) then { + [QGVAR(PlacementEachFrame),"OnEachFrame"] call BIS_fnc_removeStackedEventHandler; + GVAR(pfeh_running) = false; +}; +if (!isNull (GVAR(setupObject))) then { + deleteVehicle GVAR(setupObject); +}; +GVAR(SetupPlacmentItem) = ""; +GVAR(SetupPlacmentText) = ""; +GVAR(setupObject) = objNull; +GVAR(SetupAttachVehicle) = objNull; +if (isNil QGVAR(placer)) then { + ERROR("Nil placer?"); + GVAR(placer) = objNull; +}; + +[GVAR(placer), QGVAR(vehAttach), false] call EFUNC(common,setForceWalkStatus); +call EFUNC(interaction,hideMouseHint); +[GVAR(placer), "DefaultAction", GVAR(placer) getVariable [QGVAR(placeActionEH), -1]] call EFUNC(common,removeActionEventHandler); +[GVAR(placer), "MenuBack", GVAR(placer) getVariable [QGVAR(cancelActionEH), -1]] call EFUNC(common,removeActionEventHandler); + +GVAR(placer) = objNull; diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml index 877f26e623..ef26e0738d 100644 --- a/addons/attach/stringtable.xml +++ b/addons/attach/stringtable.xml @@ -146,5 +146,27 @@ Az infravörös jeladóval megjelölheted a helyzetedet úgy, hogy annak pulzáló fénye csak éjjellátó készülékkel látható. ИК строб позволяет сигнализировать свое местоположение через пульсирующий маяк, видимый только через ПНВ. + + Place + Platzieren + Colocar + Umieść + Placer + Položit + Colocar + Posiziona + Elhelyez + + + Cancel + Abbrechen + Cancelar + Anuluj + Annuler + Zrušit + Cancelar + Annulla + Mégse + \ No newline at end of file From e277b05afff3cd810054470dc9d20b04b88fd0de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Fri, 30 Jan 2015 18:56:45 -0300 Subject: [PATCH 028/211] ace_settings: first draft --- addons/common/CfgEventHandlers.hpp | 1 - addons/common/XEH_preInit.sqf | 8 +- addons/common/config.cpp | 10 ++- .../functions/fnc_loadSettingsOnServer.sqf | 74 ++++++++++++++++++ addons/common/functions/fnc_setSetting.sqf | 40 ++++++++++ .../functions/fnc_setSettingFromConfig.sqf | 76 +++++++++++++++++++ addons/common/scripts/readParameters.sqf | 55 -------------- addons/nametags/config.cpp | 42 +++++++--- 8 files changed, 235 insertions(+), 71 deletions(-) create mode 100644 addons/common/functions/fnc_loadSettingsOnServer.sqf create mode 100644 addons/common/functions/fnc_setSetting.sqf create mode 100644 addons/common/functions/fnc_setSettingFromConfig.sqf delete mode 100644 addons/common/scripts/readParameters.sqf diff --git a/addons/common/CfgEventHandlers.hpp b/addons/common/CfgEventHandlers.hpp index 7ea3b1e1f9..b9c5d7e4ce 100644 --- a/addons/common/CfgEventHandlers.hpp +++ b/addons/common/CfgEventHandlers.hpp @@ -2,7 +2,6 @@ class Extended_PreInit_EventHandlers { class ADDON { init = QUOTE(call COMPILE_FILE(XEH_preInit)); - serverInit = QUOTE(call COMPILE_FILE(scripts\readParameters)); disableModuload = true; }; }; diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 1bd305fa02..6cd1c4ce61 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -85,6 +85,7 @@ PREP(isInBuilding); PREP(isPlayer); PREP(isTurnedOut); PREP(letterToCode); +PREP(loadSettingsOnServer); PREP(map); PREP(moduleCheckPBOs); PREP(moduleLSDVehicles); @@ -115,6 +116,8 @@ PREP(setName); PREP(setParameter); PREP(setPitchBankYaw); PREP(setVariableJIP); +PREP(setSetting); +PREP(setSettingFromConfig); PREP(stringToColoredText); PREP(subString); PREP(toBin); @@ -163,6 +166,10 @@ PREP(hashListSet); PREP(hashListPush); +// Load settings +if (isServer) {} + call FUNC(loadSettingsOnServer); +}; ACE_player = player; @@ -183,7 +190,6 @@ if (hasInterface) then { }, 0, []] call cba_fnc_addPerFrameHandler; }; - PREP(stringCompare); PREP(string_removeWhiteSpace); PREP(isHC); diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 2be05e6b57..0189facd47 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -57,10 +57,16 @@ class ACE_canInteractConditions { }; }; -class ACE_Options { +class ACE_Settings { + class GVAR(forceAllSettings) { + value = 0; + typeName = "BOOL"; + }; class GVAR(enableNumberHotkeys) { + value = 1; + typeName = "BOOL"; + isClientSetable = 1; displayName = "$STR_ACE_Common_EnableNumberHotkeys"; - default = 1; }; }; diff --git a/addons/common/functions/fnc_loadSettingsOnServer.sqf b/addons/common/functions/fnc_loadSettingsOnServer.sqf new file mode 100644 index 0000000000..000d8f69cc --- /dev/null +++ b/addons/common/functions/fnc_loadSettingsOnServer.sqf @@ -0,0 +1,74 @@ +/* + * Author: CAA-Picard + * Load the parameters on the server. + * Config < Server UserConfig < Mission Config + * + * Arguments: + * None + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +GVAR(settingsList) = []; + +// Load settings from main config +_countOptions = count (configFile >> "ACE_Settings"); +for "_index" from 0 to (_countOptions - 1) do { + _optionEntry = (configFile >> "ACE_Settings") select _index; + + _name = configName _optionEntry; + _valueEntry = _optionEntry >> "value"; + _typeEntry = _optionEntry >> "typeName"; + + [_name, _valueEntry, _typeEntry] call FUNC(setSettingFromConfig); +}; +// Check if all settings should be forced +if (GVAR(forceAllSettings)) then { + { + if !(missionNamespace getVariable format ["%1_forced", _x]) then { + missionNamespace setVariable format ["%1_forced", _x, true]; + publicVariable format ["%1_forced", _name]; + }; + } forEach GVAR(settingsList); +}; + + +// Load settings from server userconfig +DFUNC(common,serverUserConfig) = compile preprocessFileLineNumbers "\userconfig\ACE\ACE_Settings.hpp"; +if !(isNil QFUNC(common,serverUserConfig)) then { + [] call FUNC(serverUserConfig); +}; +// Check if all settings should be forced +if (GVAR(forceAllSettings)) then { + { + if !(missionNamespace getVariable format ["%1_forced", _x]) then { + missionNamespace setVariable format ["%1_forced", _x, true]; + publicVariable format ["%1_forced", _name]; + }; + } forEach GVAR(settingsList); +}; + + +// Load settings from mission config +_countOptions = count (missionConfigFile >> "ACE_Settings"); +for "_index" from 0 to (_countOptions - 1) do { + _optionEntry = (missionConfigFile >> "ACE_Settings") select _index; + + _name = configName _optionEntry; + _valueEntry = _optionEntry >> "value"; + + [_name, _valueEntry] call FUNC(setSettingFromConfig); +}; +// Check if all settings should be forced +if (GVAR(forceAllSettings)) then { + { + if !(missionNamespace getVariable format ["%1_forced", _x]) then { + missionNamespace setVariable format ["%1_forced", _x, true]; + publicVariable format ["%1_forced", _name]; + }; + } forEach GVAR(settingsList); +}; \ No newline at end of file diff --git a/addons/common/functions/fnc_setSetting.sqf b/addons/common/functions/fnc_setSetting.sqf new file mode 100644 index 0000000000..5a570d618a --- /dev/null +++ b/addons/common/functions/fnc_setSetting.sqf @@ -0,0 +1,40 @@ +/* + * Author: CAA-Picard + * Set a setting if it was not previosuly forced. Force if neccesary. + * + * Arguments: + * 0: Setting name (String) + * 1: Value (Any) + * 2: Force it? (Bool) (Optional) + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +EXPLODE_2_PVT(_this,_name,_value); + +if !(isServer) exitWith {}; + +private ["force"]; +_force = false; +if (count _this > 2) then { + _force = _this select 2; +}; + +// Check if it's already forced and quit +if (missionNamespace getVariable [format ["%1_forced", _name], false]) exitWith {}; + +// Check if the variable is already defined +if (isNil _name) then { + // Add the variable to a list on the server + GVAR(settingsList) pushBack _name; +}; + +// Update the variable and publish it +missionNamespace setVariable [_name, _value]; +publicVariable _name; +missionNamespace setVariable [format ["%1_forced", _name], _force]; +publicVariable format ["%1_forced", _name]; diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf new file mode 100644 index 0000000000..8423a16bef --- /dev/null +++ b/addons/common/functions/fnc_setSettingFromConfig.sqf @@ -0,0 +1,76 @@ +/* + * Author: CAA-Picard + * Load a setting from config if it was not previosuly forced. Force if neccesary. + * + * Arguments: + * 0: Setting name (String) + * 1: Config entry (config entry) + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +EXPLODE_2_PVT(_this,_name,_optionEntry); + +_fnc_getValueWithType = { + EXPLODE_2_PVT(_this,_optionEntry,_typeName); + + _value = getNumber (_optionEntry >> "value"); + if (_typeName == "BOOL") exitWith { + _value = _value > 0; + }; + if (_typeName == "STRING") exitWith { + _value = getText (_optionEntry >> "value"); + }; + if (_typeName == "ARRAY") exitWith { + _value = getArray (_optionEntry >> "value"); + }; + _value +}; + +// Check if the variable is already defined +if (isNil _name) exitWith { + // That setting was not loaded yet + + //diag_log text format ["[ACE]: Mission setting '%1' doesn't exist", _name]; + + _typeEntry = _this select 2; + _typeName = getText _typeEntry; + + _value = [_optionEntry, _typeName] call _fnc_getValueWithType; + + // Init the variable and publish it + missionNamespace setVariable [_name, _value]; + publicVariable _name; + // Set the variable to not forced + missionNamespace setVariable [format ["%1_forced", _name], false]; + publicVariable format ["%1_forced", _name]; + + // Add the variable to a list on the server + GVAR(settingsList) pushBack _name; + +} else { + // The setting already exists. + + // Check if it's already forced and quit + if (missionNamespace getVariable format ["%1_forced", _name]) exitWith {}; + + // The setting is not forced, so update the value + + // Get the type from the existing variable + _typeName = typeName missionNamespace getVariable _name; + _value = [_optionEntry, _typeName] call _fnc_getValueWithType; + + // Update the variable and publish it + missionNamespace setVariable [_name, _value]; + publicVariable _name; + + // Check if it needs forcing + if (getNumber (_optionEntry >> "force") > 0) then { + missionNamespace setVariable [format ["%1_forced", _name], true]; + publicVariable format ["%1_forced", _name]; + }; +}; diff --git a/addons/common/scripts/readParameters.sqf b/addons/common/scripts/readParameters.sqf deleted file mode 100644 index 3b17ea7f1f..0000000000 --- a/addons/common/scripts/readParameters.sqf +++ /dev/null @@ -1,55 +0,0 @@ -// by CAA-Picard -#include "script_component.hpp" - -// Read ACE_Parameters from config and set them on the mission namespace -_config = configFile >> "ACE_Parameters_Numeric"; -_count = count _config; -for "_index" from 0 to (_count - 1) do { - _x = _config select _index; - - _name = configName _x; - _value = _x call bis_fnc_getcfgdata; - [_name, _value] call FUNC(setParameter); -}; - -_config = configFile >> "ACE_Parameters_Boolean"; -_count = count _config; -for "_index" from 0 to (_count - 1) do { - _x = _config select _index; - - _name = configName _x; - _value = _x call bis_fnc_getcfgdata; - [_name, _value > 0] call FUNC(setParameter); -}; - - -// Read ACE_Parameters from mission and set them on the mission namespace, replacing defaults if necesary -_config = missionConfigFile >> "ACE_Parameters"; -_count = count _config; -for "_index" from 0 to (_count - 1) do { - _x = _config select _index; - - _name = configName _x; - _value = _x call bis_fnc_getcfgdata; - [_name, _value] call FUNC(setParameter); -}; - -_config = missionConfigFile >> "ACE_Parameters_Numeric"; -_count = count _config; -for "_index" from 0 to (_count - 1) do { - _x = _config select _index; - - _name = configName _x; - _value = _x call bis_fnc_getcfgdata; - [_name, _value] call FUNC(setParameter); -}; - -_config = missionConfigFile >> "ACE_Parameters_Boolean"; -_count = count _config; -for "_index" from 0 to (_count - 1) do { - _x = _config select _index; - - _name = configName _x; - _value = _x call bis_fnc_getcfgdata; - [_name, _value > 0] call FUNC(setParameter); -}; diff --git a/addons/nametags/config.cpp b/addons/nametags/config.cpp index 1846cd616e..58440192c0 100644 --- a/addons/nametags/config.cpp +++ b/addons/nametags/config.cpp @@ -15,29 +15,47 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" -class ACE_Options { +class ACE_Settings { class GVAR(showPlayerNames) { + value = 1; + typeName = "SCALAR"; + isClientSetable = 1; displayName = "$STR_ACE_NameTags_ShowPlayerNames"; values[] = {"Disabled", "Enabled", "Only Cursor", "Only On Keypress", "Only Cursor and KeyPress"}; - default = 1; }; class GVAR(showPlayerRanks) { + value = 1; + typeName = "BOOL"; + isClientSetable = 1; displayName = "$STR_ACE_NameTags_ShowPlayerRanks"; - default = 1; }; class GVAR(showVehicleCrewInfo) { + value = 1; + typeName = "BOOL"; + isClientSetable = 1; displayName = "$STR_ACE_CrewInfo_ShowVehicleCrewInfo"; - default = 1; }; -}; -class ACE_Parameters_Numeric { - GVAR(PlayerNamesViewDistance) = 5; - GVAR(PlayerNamesMaxAlpha) = 0.8; - GVAR(CrewInfoVisibility) = 0; -}; -class ACE_Parameters_Boolean { - GVAR(ShowNamesForAI) = 0; + class GVAR(PlayerNamesViewDistance) { + value = 5; + typeName = "SCALAR"; + isClientSetable = 0; + }; + class GVAR(PlayerNamesMaxAlpha) { + value = 0.8; + typeName = "SCALAR"; + isClientSetable = 0; + }; + class GVAR(CrewInfoVisibility) { + value = 0; + typeName = "BOOL"; + isClientSetable = 0; + }; + class GVAR(ShowNamesForAI) { + value = 0; + typeName = "BOOL"; + isClientSetable = 0; + }; }; #include From 981978d043ca65f82c47b0670c499752f71c3d0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Fri, 30 Jan 2015 19:06:25 -0300 Subject: [PATCH 029/211] ACE_Settings: replace all ACE_Parameters --- addons/explosives/config.cpp | 12 +++++++--- addons/interaction/config.cpp | 7 ++++-- addons/magazinerepack/config.cpp | 12 +++++++--- addons/map/config.cpp | 24 +++++++++++++------ addons/respawn/config.cpp | 12 +++++++--- addons/switchunits/config.cpp | 40 +++++++++++++++++++++++--------- addons/vehiclelock/config.cpp | 7 ++++-- addons/weather/config.cpp | 8 ------- 8 files changed, 83 insertions(+), 39 deletions(-) diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp index 8bf463c9f4..e4a079f107 100644 --- a/addons/explosives/config.cpp +++ b/addons/explosives/config.cpp @@ -39,7 +39,13 @@ class CfgMineTriggers { }; }; -class ACE_Parameters_Boolean { - GVAR(RequireSpecialist) = 0; - GVAR(PunishNonSpecialists) = 1; +class ACE_Settings { + class GVAR(RequireSpecialist) { + value = 0; + typeName = "BOOL"; + }; + class GVAR(PunishNonSpecialists) { + value = 1; + typeName = "BOOL"; + }; }; diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index acb41d362f..38933ef506 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -33,8 +33,11 @@ class ACE_Options { }; }; -class ACE_Parameters_Boolean { - ACE_Interaction_EnableTeamManagement = 1; +class ACE_Settings { + class GVAR(EnableTeamManagement) { + value = 1; + typeName = "BOOL"; + }; }; class ACE_canInteractConditions { diff --git a/addons/magazinerepack/config.cpp b/addons/magazinerepack/config.cpp index 5f2c6edc7d..91a6f5abf5 100644 --- a/addons/magazinerepack/config.cpp +++ b/addons/magazinerepack/config.cpp @@ -15,7 +15,13 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" -class ACE_Parameters_Numeric { - GVAR(TimePerAmmo) = 1.5; - GVAR(TimePerMagazine) = 2.0; +class ACE_Settings { + class GVAR(TimePerAmmo) { + value = 1.5; + typeName = "SCALAR"; + }; + class GVAR(TimePerMagazine) { + value = 2.0; + typeName = "SCALAR"; + }; }; diff --git a/addons/map/config.cpp b/addons/map/config.cpp index c9980458db..36a6f85168 100644 --- a/addons/map/config.cpp +++ b/addons/map/config.cpp @@ -23,13 +23,23 @@ class RscButtonMenuCancel; class RscButtonMenu; class RscEdit; -class ACE_Parameters_Numeric { - GVAR(BFT_Interval) = 1; -}; -class ACE_Parameters_Boolean { - GVAR(EveryoneCanDrawOnBriefing) = 1; - GVAR(BFT_Enabled) = 0; - GVAR(BFT_HideAiGroups) = 0; +class ACE_Settings { + class GVAR(BFT_Interval) { + value = 1.0; + typeName = "SCALAR"; + }; + class GVAR(EveryoneCanDrawOnBriefing) { + value = 1; + typeName = "BOOL"; + }; + class GVAR(BFT_Enabled) { + value = 0; + typeName = "BOOL"; + }; + class GVAR(BFT_HideAiGroups) { + value = 0; + typeName = "BOOL"; + }; }; #include "MapGpsUI.hpp" diff --git a/addons/respawn/config.cpp b/addons/respawn/config.cpp index 0d914df949..19032df4f7 100644 --- a/addons/respawn/config.cpp +++ b/addons/respawn/config.cpp @@ -17,7 +17,13 @@ class CfgPatches { #include "CfgVehicleClasses.hpp" #include "CfgVehicles.hpp" -class ACE_Parameters_Boolean { - GVAR(SavePreDeathGear) = 0; - GVAR(RemoveDeadBodiesDisconnected) = 1; +class ACE_Settings { + class GVAR(SavePreDeathGear) { + value = 0; + typeName = "BOOL"; + }; + class GVAR(RemoveDeadBodiesDisconnected) { + value = 1; + typeName = "BOOL"; + }; }; diff --git a/addons/switchunits/config.cpp b/addons/switchunits/config.cpp index b89adb3a7a..09d3e05594 100644 --- a/addons/switchunits/config.cpp +++ b/addons/switchunits/config.cpp @@ -15,15 +15,33 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" -class ACE_Parameters_Numeric { - GVAR(SafeZoneRadius) = 100; -}; - -class ACE_Parameters_Boolean { - GVAR(EnableSwitchUnits) = 0; - GVAR(SwitchToWest) = 0; - GVAR(SwitchToEast) = 0; - GVAR(SwitchToIndependent) = 0; - GVAR(SwitchToCivilian) = 0; - GVAR(EnableSafeZone) = 1; +class ACE_Settings { + class GVAR(SafeZoneRadius) { + value = 100; + typeName = "SCALAR"; + }; + class GVAR(EnableSwitchUnits) { + value = 0; + typeName = "BOOL"; + }; + class GVAR(SwitchToWest) { + value = 0; + typeName = "BOOL"; + }; + class GVAR(SwitchToEast) { + value = 0; + typeName = "BOOL"; + }; + class GVAR(SwitchToIndependent) { + value = 0; + typeName = "BOOL"; + }; + class GVAR(SwitchToCivilian) { + value = 0; + typeName = "BOOL"; + }; + class GVAR(EnableSafeZone) { + value = 1; + typeName = "BOOL"; + }; }; diff --git a/addons/vehiclelock/config.cpp b/addons/vehiclelock/config.cpp index 83850a2bef..9031987315 100644 --- a/addons/vehiclelock/config.cpp +++ b/addons/vehiclelock/config.cpp @@ -12,8 +12,11 @@ class CfgPatches { }; }; -class ACE_Parameters_Numeric { - GVAR(DefaultLockpickStrength) = 10; +class ACE_Settings { + class GVAR(DefaultLockpickStrength) { + value = 10; + typeName = "SCALAR"; + }; }; #include "CfgEventHandlers.hpp" diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index dc3faecf5f..f59267690f 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -14,11 +14,3 @@ class CfgPatches { #include "CfgEventhandlers.hpp" #include "CfgWorlds.hpp" - -/*class ACE_Parameters_Numeric { - GVAR(XXXX) = 100; -}; - -class ACE_Parameters_Boolean { - GVAR(XXXX) = 0; -};*/ From 7519fefee9cee050665240ad0f8241220153b9fc Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 30 Jan 2015 16:11:16 -0600 Subject: [PATCH 030/211] Fix Interaction --- addons/attach/CfgVehicles.hpp | 13 +++++++------ addons/attach/functions/fnc_attach.sqf | 2 +- addons/attach/functions/fnc_detach.sqf | 5 +++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp index 8a231d3679..473b67fcc5 100644 --- a/addons/attach/CfgVehicles.hpp +++ b/addons/attach/CfgVehicles.hpp @@ -7,22 +7,23 @@ class ACE_Actions { \ class GVAR(AttachVehicle) { \ displayName = "$STR_ACE_Attach_AttachDetach"; \ - condition = QUOTE( [ARR_3(_player, _target, '')] call FUNC(canAttach) ); \ - statement = QUOTE( [ARR_2(_player, _target)] call FUNC(openAttachUI); ); \ + condition = QUOTE(([ARR_3(_player, _target, '')] call FUNC(canAttach))); \ + statement = QUOTE( [ARR_2(_player, _target)] call FUNC(openAttachUI);); \ exceptions[] = {"ACE_Drag_isNotDragging"}; \ showDisabled = 0; \ priority = 0; \ icon = PATHTOF(UI\attach_ca.paa); \ - hotkey = "T"; \ + distance = 4; \ }; \ class GVAR(DetachVehicle) { \ displayName = "$STR_ACE_Attach_Detach"; \ - condition = QUOTE( [ARR_2(_player, _target)] call FUNC(canDetach) ); \ + condition = QUOTE(([ARR_2(_player, _target)] call FUNC(canDetach))); \ statement = QUOTE( [ARR_2(_player, _target)] call FUNC(detach) ); \ exceptions[] = {"ACE_Drag_isNotDragging"}; \ showDisabled = 0; \ priority = 0; \ icon = PATHTOF(UI\detach_ca.paa); \ + distance = 4; \ }; \ }; @@ -52,7 +53,7 @@ class CfgVehicles { class ACE_Equipment { class GVAR(Attach) { displayName = "$STR_ACE_Attach_AttachDetach"; - condition = QUOTE( [ARR_3(_player, _player, '')] call FUNC(canAttach) ); + condition = QUOTE(([ARR_3(_player, _player, '')] call FUNC(canAttach))); statement = QUOTE( [ARR_2(_player, _player)] call FUNC(openAttachUI); ); exceptions[] = {"ACE_Drag_isNotDragging"}; showDisabled = 0; @@ -62,7 +63,7 @@ class CfgVehicles { }; class GVAR(Detach) { displayName = "$STR_ACE_Attach_Detach"; - condition = QUOTE( [ARR_2(_player, _player)] call FUNC(canDetach) ); + condition = QUOTE(([ARR_2(_player, _player)] call FUNC(canDetach))); statement = QUOTE( [ARR_2(_player, _player)] call FUNC(detach) ); exceptions[] = {"ACE_Drag_isNotDragging"}; showDisabled = 0; diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index 2619f8ac98..3b99462338 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -78,7 +78,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment }] call BIS_fnc_addStackedEventHandler; //had to spawn the mouseHint, not sure why - [localize "STR_ACE_Attach_PlaceAction", localize "STR_ACE_Attach_CancelAction"] call EFUNC(interaction,showMouseHint); + [localize "STR_ACE_Attach_PlaceAction", localize "STR_ACE_Attach_CancelAction"] spawn EFUNC(interaction,showMouseHint); _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {GVAR(pfeh_running) AND !isNull (GVAR(setupObject))}, {call FUNC(placeApprove);}] call EFUNC(common,AddActionEventHandler)]; _unit setVariable [QGVAR(cancelActionEH), [_unit, "MenuBack", {GVAR(pfeh_running) AND !isNull (GVAR(setupObject))}, {call FUNC(placeCancel);}] call EFUNC(common,AddActionEventHandler)]; }; diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf index d9ade6e4d0..7f982654b5 100644 --- a/addons/attach/functions/fnc_detach.sqf +++ b/addons/attach/functions/fnc_detach.sqf @@ -6,7 +6,8 @@ Author: eRazeri and CAA-Picard Detach an item from a unit Arguments: -unit +0: OBJECT - unit doing the attaching (player) +1: OBJECT - vehicle that it will be detached from (player or vehicle) Return Value: none @@ -14,7 +15,7 @@ none private ["_itemName", "_count", "_attachedItem", "_fnc_detachDelay"]; -PARAMS_2(_unit, _attachToVehicle); +PARAMS_2(_unit,_attachToVehicle); _attachedObjectsArray = _attachToVehicle getVariable ["ACE_AttachedObjects", []]; _attachedItemsArray = _attachToVehicle getVariable ["ACE_AttachedItemNames", []]; From 96b7c0d30c464b8d0a3a571e3362962a3683b7a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Fri, 30 Jan 2015 19:19:45 -0300 Subject: [PATCH 031/211] ACE_Settings: replace all ACE_Options --- addons/goggles/config.cpp | 22 +++++++------ .../goggles/functions/fnc_externalCamera.sqf | 2 +- addons/hearing/config.cpp | 12 ++++--- addons/hearing/functions/fnc_earRinging.sqf | 2 +- addons/interaction/XEH_clientInit.sqf | 4 +-- addons/interaction/config.cpp | 33 ++++++++++--------- .../interaction/functions/fnc_getActions2.sqf | 2 +- .../functions/fnc_initialiseInteraction.sqf | 2 +- addons/movement/config.cpp | 6 ++-- addons/movement/functions/fnc_getWeight.sqf | 2 +- 10 files changed, 48 insertions(+), 39 deletions(-) diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index f804be003e..eafe07fb27 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -3,13 +3,13 @@ #define COLOUR 8.0 class CfgPatches { class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - author[] = {"Garth 'L-H' de Wet"}; - authorUrl = "http://garth.snakebiteink.co.za/"; - VERSION_CONFIG; + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {"Garth 'L-H' de Wet"}; + authorUrl = "http://garth.snakebiteink.co.za/"; + VERSION_CONFIG; }; }; @@ -243,10 +243,12 @@ class SniperCloud { ACE_Goggles_BulletCount = 1; }; -class ACE_Options { +class ACE_Settings { class GVAR(showInThirdPerson) { - displayName = $STR_ACE_Goggles_ShowInThirdPerson; - default = 0; + value = 0; + typeName = "BOOL"; + isClientSetable = 1; + displayName = "$STR_ACE_Goggles_ShowInThirdPerson;" }; }; diff --git a/addons/goggles/functions/fnc_externalCamera.sqf b/addons/goggles/functions/fnc_externalCamera.sqf index 35b94171a6..91cc3f568c 100644 --- a/addons/goggles/functions/fnc_externalCamera.sqf +++ b/addons/goggles/functions/fnc_externalCamera.sqf @@ -19,5 +19,5 @@ #include "script_component.hpp" -if ((missionNameSpace getVariable [QGVAR(showInThirdPerson), 0]) == 1) exitWith { false }; +if (GVAR(showInThirdPerson)) exitWith { false }; (cameraView == "External") diff --git a/addons/hearing/config.cpp b/addons/hearing/config.cpp index 708146a89b..4499e647f6 100644 --- a/addons/hearing/config.cpp +++ b/addons/hearing/config.cpp @@ -22,9 +22,11 @@ class CfgPatches { #include "CfgAmmo.hpp" -class ACE_Options { - class GVAR(Hearing_DisableEarRinging) { - displayName = "$STR_ACE_Hearing_DisableEarRinging"; - default = 0; - }; +class ACE_Settings { + class GVAR(DisableEarRinging) { + default = 1; + typeName = "BOOL"; + isClientSetable = 1; + displayName = "$STR_ACE_Hearing_DisableEarRinging"; + }; }; \ No newline at end of file diff --git a/addons/hearing/functions/fnc_earRinging.sqf b/addons/hearing/functions/fnc_earRinging.sqf index 9279b6b954..b578dad979 100644 --- a/addons/hearing/functions/fnc_earRinging.sqf +++ b/addons/hearing/functions/fnc_earRinging.sqf @@ -25,7 +25,7 @@ GVAR(newStrength) = GVAR(newStrength) max _strength; if (missionNamespace getVariable [QGVAR(isEarRingingPlaying), false]) exitWith {}; -if (profileNamespace getVariable [QGVAR(DisableEarRinging), false]) exitWith {}; +if (QGVAR(DisableEarRinging)) exitWith {}; if (_strength > 0.75) exitWith { playSound "ACE_EarRinging_Heavy"; diff --git a/addons/interaction/XEH_clientInit.sqf b/addons/interaction/XEH_clientInit.sqf index bcc3f47def..a4474a5f3e 100644 --- a/addons/interaction/XEH_clientInit.sqf +++ b/addons/interaction/XEH_clientInit.sqf @@ -41,7 +41,7 @@ GVAR(isOpeningDoor) = false; _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", "ACE_Interaction_isNotEscorting", "ACE_Interaction_isNotSwimming"]; if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; // Conditions: specific - if !(!isNull (findDisplay 1713999) && {profileNamespace getVariable [QGVAR(AutoCloseMenu), 0] > 0}) exitWith {false}; + if !(!isNull (findDisplay 1713999) && {QGVAR(AutoCloseMenu)}) exitWith {false}; // Statement if (GVAR(MenuType) mod 2 == 0) then {call FUNC(onButtonUp)}; @@ -77,7 +77,7 @@ GVAR(isOpeningDoor) = false; _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", "ACE_Interaction_isNotEscorting", "ACE_Interaction_isNotSwimming"]; if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; // Conditions: specific - if !(!isNull (findDisplay 1713999) && {profileNamespace getVariable [QGVAR(AutoCloseMenu), 0] > 0}) exitWith {false}; + if !(!isNull (findDisplay 1713999) && {QGVAR(AutoCloseMenu)}) exitWith {false}; // Statement if (GVAR(MenuType) mod 2 == 1) then {call FUNC(onButtonUp)}; diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index 38933ef506..da62019d3a 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -18,22 +18,25 @@ class CfgPatches { #include -class ACE_Options { - class Interaction_FlowMenu { - displayName = "$STR_ACE_Interaction_FlowMenu"; - default = 0; - }; - class Interaction_AutoCloseMenu { - displayName = "$STR_ACE_Interaction_AutoCloseMenu"; - default = 0; - }; - class Interaction_AutoCenterCursor { - displayName = "$STR_ACE_Interaction_AutoCenterCursor"; - default = 1; - }; -}; - class ACE_Settings { + class GVAR(FlowMenu) { + value = 0; + typeName = "BOOL"; + isClientSetable = 1; + displayName = "$STR_ACE_Interaction_FlowMenu"; + }; + class GVAR(AutoCloseMenu) { + value = 0; + typeName = "BOOL"; + isClientSetable = 1; + displayName = "$STR_ACE_Interaction_AutoCloseMenu"; + }; + class GVAR(AutoCenterCursor) { + value = 1; + typeName = "BOOL"; + isClientSetable = 1; + displayName = "$STR_ACE_Interaction_AutoCenterCursor"; + }; class GVAR(EnableTeamManagement) { value = 1; typeName = "BOOL"; diff --git a/addons/interaction/functions/fnc_getActions2.sqf b/addons/interaction/functions/fnc_getActions2.sqf index ab64d8d390..0de4f7a534 100644 --- a/addons/interaction/functions/fnc_getActions2.sqf +++ b/addons/interaction/functions/fnc_getActions2.sqf @@ -66,7 +66,7 @@ _cacheIndices = _cache select 2; _statement = getText (_action >> "statement"); _statement = compile _statement; - if (profileNamespace getVariable ["ACE_Interaction_FlowMenu", false]) then { + if (GVAR(FlowMenu)) then { _statement = if (getText (_action >> "statement") == "" && {count _subMenu > 1}) then { compile format [QUOTE( call FUNC(hideMenu);if(%2 == 1)then{['%1'] call FUNC(openSubMenuSelf);}else{['%1'] call FUNC(openSubMenu);}; ), _subMenu select 0, _subMenu select 1]; } else { diff --git a/addons/interaction/functions/fnc_initialiseInteraction.sqf b/addons/interaction/functions/fnc_initialiseInteraction.sqf index 2637d28bf9..4d88eb4ea1 100644 --- a/addons/interaction/functions/fnc_initialiseInteraction.sqf +++ b/addons/interaction/functions/fnc_initialiseInteraction.sqf @@ -67,7 +67,7 @@ if (_this select 2) then { disableSerialization; _dlgInteractionDialog = uiNamespace getVariable QGVAR(Dialog); _ctrlInteractionDialog = _dlgInteractionDialog displayCtrl 3; - if (profileNamespace getVariable [QGVAR(AutoCenterCursor), true]) then {setMousePosition [0.5, 0.5]}; + if (GVAR(AutoCenterCursor)) then {setMousePosition [0.5, 0.5]}; if !(_subMenu) then { _ctrlInteractionDialog ctrlSetText ([_target] call EFUNC(common,getName)); } else { diff --git a/addons/movement/config.cpp b/addons/movement/config.cpp index e8661b748c..51ab97b80a 100644 --- a/addons/movement/config.cpp +++ b/addons/movement/config.cpp @@ -17,9 +17,11 @@ class CfgPatches { //#include "CfgInventoryGlobalVariable.hpp" #include "CfgMoves.hpp" -class ACE_Options { +class ACE_Settings { class GVAR(useImperial) { + value = 0; + typeName = "BOOL"; + isClientSetable = 1; displayName = "$STR_ACE_Movement_UseImperial"; - default = 0; }; }; diff --git a/addons/movement/functions/fnc_getWeight.sqf b/addons/movement/functions/fnc_getWeight.sqf index a52ed3cb12..254b706d56 100644 --- a/addons/movement/functions/fnc_getWeight.sqf +++ b/addons/movement/functions/fnc_getWeight.sqf @@ -7,7 +7,7 @@ _unit = _this select 0; _weight = loadAbs _unit * 0.1; -if (GETGVAR(useImperial, 0) == 1) then { +if (GVAR(useImperial)) then { _weight = format ["%1lb", (round (_weight * 100)) / 100]; } else { _weight = format ["%1kg", (round (_weight * FACTOR_POUND_TO_KILOGRAMM * 100)) / 100]; From 3f9d96abd39fdd9c56e90ed390afe8a87e9e2c64 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 31 Jan 2015 03:05:07 -0600 Subject: [PATCH 032/211] Placement rewrite --- addons/attach/functions/fnc_canAttach.sqf | 2 +- addons/attach/functions/fnc_canDetach.sqf | 2 +- addons/attach/functions/fnc_placeApprove.sqf | 87 ++++++++++++-------- 3 files changed, 55 insertions(+), 36 deletions(-) diff --git a/addons/attach/functions/fnc_canAttach.sqf b/addons/attach/functions/fnc_canAttach.sqf index 264b627887..9dc4229c64 100644 --- a/addons/attach/functions/fnc_canAttach.sqf +++ b/addons/attach/functions/fnc_canAttach.sqf @@ -18,4 +18,4 @@ PARAMS_3(_unit,_attachToVehicle,_item); _attachLimit = if (_unit == _attachToVehicle) then {1} else {10}; _attachedObjects = _attachToVehicle getVariable ["ACE_AttachedObjects", []]; -canStand _unit && {alive _attachToVehicle} && {(count _attachedObjects) < _attachLimit} && {_item in (magazines _unit + items _unit + [""])} +canStand _unit && {alive _attachToVehicle} && {(count _attachedObjects) < _attachLimit} && {_item in ((magazines _unit) + (items _unit) + [""])} diff --git a/addons/attach/functions/fnc_canDetach.sqf b/addons/attach/functions/fnc_canDetach.sqf index 273831a6fc..bba323d2e3 100644 --- a/addons/attach/functions/fnc_canDetach.sqf +++ b/addons/attach/functions/fnc_canDetach.sqf @@ -28,7 +28,7 @@ if (_unit == _attachToVehicle) then { { _objectPos = getPos _x; _objectPos set [2, 0]; - if ((_objectPos distance _unitPos) < 2.4) exitWith {_inRange = true}; + if ((_objectPos distance _unitPos) < 4) exitWith {_inRange = true}; } forEach _attachedObjects; }; diff --git a/addons/attach/functions/fnc_placeApprove.sqf b/addons/attach/functions/fnc_placeApprove.sqf index 290812ae4a..630158caa6 100644 --- a/addons/attach/functions/fnc_placeApprove.sqf +++ b/addons/attach/functions/fnc_placeApprove.sqf @@ -1,19 +1,20 @@ /* - Name: FUNC(placeApprove) - Author(s): - Pabst Mirror (based on Explosive attach by Garth de Wet (LH)) - Description: - Approves placement of the lightObject, releases the placement object for it to settle in a location - Parameters: - Nothing - Returns: - Nothing - Example: - call FUNC(placeApprove); +Name: FUNC(placeApprove) +Author(s): + Pabst Mirror (based on Explosive attach by Garth de Wet (LH)) +Description: + Approves placement of the lightObject, releases the placement object for it to settle in a location +Parameters: + Nothing +Returns: + Nothing +Example: + call FUNC(placeApprove); */ #include "script_component.hpp" -private ["_setupObject", "_setupClassname", "_itemClassname", "_placementText", "_attachToVehicle", "_player", "_position0", "_closeInRatio", "_offset", "_keepGoingCloser", "_pos0temp", "_position1", "_attachedObject", "_currentObjects", "_currentItemNames"]; +private ["_setupObject", "_setupClassname", "_itemClassname", "_placementText", "_attachToVehicle", "_placer", "_startingPosition", "_startingOffset", "_distanceFromCenter", "_closeInUnitVector", "_keepGoingCloser", "_closeInDistance", "_endPosTestOffset", "_endPosTest", "_startingPosShifted", "_startASL", "_endPosShifted", "_endASL", "_attachedObject", "_currentObjects", "_currentItemNames"]; + if (GVAR(pfeh_running)) then { [QGVAR(PlacementEachFrame),"OnEachFrame"] call BIS_fnc_removeStackedEventHandler; @@ -25,17 +26,17 @@ _setupClassname = typeOf _setupObject; _itemClassname = GVAR(SetupPlacmentItem); _placementText = GVAR(SetupPlacmentText); _attachToVehicle = GVAR(SetupAttachVehicle); +_placer = GVAR(placer); GVAR(SetupPlacmentItem) = ""; GVAR(SetupPlacmentText) = ""; GVAR(setupObject) = objNull; GVAR(SetupAttachVehicle) = objNull; -[GVAR(placer), QGVAR(vehAttach), false] call EFUNC(common,setForceWalkStatus); GVAR(placer) = objNull; -_player = ACE_player; -[_player, "DefaultAction", _player getVariable [QGVAR(placeActionEH), -1]] call EFUNC(common,removeActionEventHandler); -[_player, "MenuBack", _player getVariable [QGVAR(cancelActionEH), -1]] call EFUNC(common,removeActionEventHandler); +[_placer, QGVAR(vehAttach), false] call EFUNC(common,setForceWalkStatus); +[_placer, "DefaultAction", _placer getVariable [QGVAR(placeActionEH), -1]] call EFUNC(common,removeActionEventHandler); +[_placer, "MenuBack", _placer getVariable [QGVAR(cancelActionEH), -1]] call EFUNC(common,removeActionEventHandler); call EFUNC(interaction,hideMouseHint); //A player can release the attachObject with it floating in mid-air. @@ -44,37 +45,55 @@ call EFUNC(interaction,hideMouseHint); //So it does multiple scans at slighly different angles //This is VERY computationaly intensive, but doesn't happen that often. -_position0 = getPosAtl _setupObject; -_closeInRatio = 1; -_offset = _attachToVehicle worldToModel _position0; +_startingPosition = _setupObject modelToWorld [0,0,0]; +_startingOffset = _attachToVehicle worldToModel _startingPosition; + +_distanceFromCenter = vectorMagnitude _startingOffset; +_closeInUnitVector = vectorNormalized (_startingOffset vectorFromTo [0,0,0]); _keepGoingCloser = true; +_closeInDistance = 0; + while {_keepGoingCloser} do { - _closeInRatio = _closeInRatio - 0.004; - if (_closeInRatio <= 0) exitWith {}; + if (_closeInDistance >= _distanceFromCenter) exitWith {}; + + _closeInDistance = _closeInDistance + 0.01; //10mm + _endPosTestOffset = _startingOffset vectorAdd (_closeInUnitVector vectorMultiply _closeInDistance); + _endPosTestOffset set [2, (_startingOffset select 2)]; + _endPosTest = _attachToVehicle modelToWorld _endPosTestOffset; + { - _pos0temp = _position0 vectorAdd _x; + _startingPosShifted = _startingPosition vectorAdd _x; + _startASL = if (surfaceIsWater _startingPosShifted) then {_startingPosShifted} else {ATLtoASL _startingPosShifted}; { - _position1 = [(_offset select 0) * _closeInRatio, (_offset select 1) * _closeInRatio, (_offset select 2)]; - _position1 = _attachToVehicle modelToWorld _position1; - _position1 = _position1 vectorAdd _x; + _endPosShifted = _endPosTest vectorAdd _x; + _endASL = if (surfaceIsWater _startingPosShifted) then {_endPosShifted} else {ATLtoASL _endPosShifted}; + //Uncomment to see the lazor show, and see how the scanning works: - // drawLine3D [_pos0temp, _position1, [1,0,0,1]]; - if (_attachToVehicle in lineIntersectsWith [(ATLToASL _pos0temp), (ATLToASL _position1), player, _setupObject]) exitWith {_keepGoingCloser = false}; - } forEach [[0,0,0], [0,0,0.075], [0,0,-0.075], [0,0.075,0], [0,-0.075,0], [0.075,0,0], [-.075,0,0]]; - } forEach [[0,0,0], [0,0,0.075], [0,0,-0.075]]; + drawLine3D [_startingPosShifted, _endPosShifted, [1,0,0,1]]; + + if (_attachToVehicle in lineIntersectsWith [_startASL, _endASL, _placer, _setupObject]) exitWith {_keepGoingCloser = false}; + } forEach [[0,0,0.045], [0,0,-0.045], [0,0.045,0], [0,-0.045,0], [0.045,0,0], [-0.045,0,0]]; + } forEach [[0,0,0], [0,0,0.05], [0,0,-0.05]]; }; -//Move it out slightly, for visability sake (better to look a little funny than be embedded//sunk in the hull) -_closeInRatio = (_closeInRatio + 0.006) min 1; //Delete Local Placement Object deleteVehicle _setupObject; +//Checks +if (_closeInDistance >= _distanceFromCenter) exitWith {ERROR("no valid spot found")}; +if (!([_placer,_attachToVehicle,_itemClassname] call FUNC(canAttach))) exitWith {ERROR("canAttach failed")}; + +//Move it out slightly, for visability sake (better to look a little funny than be embedded//sunk in the hull) +_closeInDistance = (_closeInDistance - 0.0085); + //Create New 'real' Object -_attachedObject = _setupClassname createVehicle (getPos _player); -_attachedObject attachTo [_attachToVehicle, [(_offset select 0) * _closeInRatio, (_offset select 1) * _closeInRatio, (_offset select 2)]]; +_endPosTestOffset = _startingOffset vectorAdd (_closeInUnitVector vectorMultiply _closeInDistance); +_endPosTestOffset set [2, (_startingOffset select 2)]; +_attachedObject = _setupClassname createVehicle (getPos _placer); +_attachedObject attachTo [_attachToVehicle, _endPosTestOffset]; //Remove Item from inventory -_player removeItem _itemClassname; +_placer removeItem _itemClassname; //Add Object to ACE_AttachedObjects and ACE_AttachedItemNames _currentObjects = _attachToVehicle getVariable ["ACE_AttachedObjects", []]; From 8ceb2aabc1137aec9f9c08394cdcbca91b25e978 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 31 Jan 2015 11:43:58 -0600 Subject: [PATCH 033/211] Attach Stuff --- addons/attach/functions/fnc_attach.sqf | 7 ++++--- addons/attach/functions/fnc_openAttachUI.sqf | 2 +- addons/attach/functions/fnc_placeApprove.sqf | 8 +++++--- addons/attach/functions/fnc_placeCancel.sqf | 5 +---- addons/attach/stringtable.xml | 9 ++++++++- 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index 3b99462338..0c6302db71 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -69,7 +69,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment private "_player"; _player = ACE_player; //Stop if player switch or player gets to far from vehicle - if ((GVAR(placer) != _player) || ((_player distance GVAR(SetupAttachVehicle)) > 9)) exitWith { + if ((GVAR(placer) != _player) || {(_player distance GVAR(SetupAttachVehicle)) > 7}) exitWith { call FUNC(placeCancel); }; GVAR(pfeh_running) = true; @@ -77,8 +77,9 @@ if (_unit == _attachToVehicle) then { //Self Attachment GVAR(setupObject) setPosATL _pos; }] call BIS_fnc_addStackedEventHandler; - //had to spawn the mouseHint, not sure why - [localize "STR_ACE_Attach_PlaceAction", localize "STR_ACE_Attach_CancelAction"] spawn EFUNC(interaction,showMouseHint); + //had to delay the mouseHint, not sure why + [{[localize "STR_ACE_Attach_PlaceAction", localize "STR_ACE_Attach_CancelAction"] call EFUNC(interaction,showMouseHint)}, [], 0, 0] call EFUNC(common,waitAndExecute); + _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {GVAR(pfeh_running) AND !isNull (GVAR(setupObject))}, {call FUNC(placeApprove);}] call EFUNC(common,AddActionEventHandler)]; _unit setVariable [QGVAR(cancelActionEH), [_unit, "MenuBack", {GVAR(pfeh_running) AND !isNull (GVAR(setupObject))}, {call FUNC(placeCancel);}] call EFUNC(common,AddActionEventHandler)]; }; diff --git a/addons/attach/functions/fnc_openAttachUI.sqf b/addons/attach/functions/fnc_openAttachUI.sqf index 573e0ad27f..db1a5d1513 100644 --- a/addons/attach/functions/fnc_openAttachUI.sqf +++ b/addons/attach/functions/fnc_openAttachUI.sqf @@ -8,7 +8,7 @@ Parameters: 0: OBJECT - unit - 0: OBJECT - target + 1: OBJECT - target Returns: Nothing diff --git a/addons/attach/functions/fnc_placeApprove.sqf b/addons/attach/functions/fnc_placeApprove.sqf index 630158caa6..687ce472c5 100644 --- a/addons/attach/functions/fnc_placeApprove.sqf +++ b/addons/attach/functions/fnc_placeApprove.sqf @@ -56,7 +56,7 @@ _closeInDistance = 0; while {_keepGoingCloser} do { if (_closeInDistance >= _distanceFromCenter) exitWith {}; - _closeInDistance = _closeInDistance + 0.01; //10mm + _closeInDistance = _closeInDistance + 0.01; //10mm each step _endPosTestOffset = _startingOffset vectorAdd (_closeInUnitVector vectorMultiply _closeInDistance); _endPosTestOffset set [2, (_startingOffset select 2)]; _endPosTest = _attachToVehicle modelToWorld _endPosTestOffset; @@ -80,8 +80,10 @@ while {_keepGoingCloser} do { deleteVehicle _setupObject; //Checks -if (_closeInDistance >= _distanceFromCenter) exitWith {ERROR("no valid spot found")}; -if (!([_placer,_attachToVehicle,_itemClassname] call FUNC(canAttach))) exitWith {ERROR("canAttach failed")}; +if ((_closeInDistance >= _distanceFromCenter) || (!([_placer,_attachToVehicle,_itemClassname] call FUNC(canAttach)))) exitWith { + TRACE_2("no valid spot found",_closeInDistance,_distanceFromCenter); + [localize "STR_ACE_Attach_Failed"] call EFUNC(common,displayTextStructured); +}; //Move it out slightly, for visability sake (better to look a little funny than be embedded//sunk in the hull) _closeInDistance = (_closeInDistance - 0.0085); diff --git a/addons/attach/functions/fnc_placeCancel.sqf b/addons/attach/functions/fnc_placeCancel.sqf index ffa84b9d12..12577512e8 100644 --- a/addons/attach/functions/fnc_placeCancel.sqf +++ b/addons/attach/functions/fnc_placeCancel.sqf @@ -29,10 +29,7 @@ GVAR(SetupPlacmentItem) = ""; GVAR(SetupPlacmentText) = ""; GVAR(setupObject) = objNull; GVAR(SetupAttachVehicle) = objNull; -if (isNil QGVAR(placer)) then { - ERROR("Nil placer?"); - GVAR(placer) = objNull; -}; + [GVAR(placer), QGVAR(vehAttach), false] call EFUNC(common,setForceWalkStatus); call EFUNC(interaction,hideMouseHint); diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml index ef26e0738d..21577c55d3 100644 --- a/addons/attach/stringtable.xml +++ b/addons/attach/stringtable.xml @@ -1,5 +1,5 @@  - + @@ -168,5 +168,12 @@ Annulla Mégse + + Attach Failed + Échec du Attacher + Befestigen Fehlgeschlagen + Присоединить Ошибка + Error en Acoplar + \ No newline at end of file From 3f0b6650e00826a6057db1839c5f6aac3622fecd Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 1 Feb 2015 11:11:51 +0100 Subject: [PATCH 034/211] Added weapon resting & weapon jam sounds --- addons/overheating/CfgSounds.hpp | 20 ++++++++++++++++++ addons/overheating/functions/fnc_clearJam.sqf | 8 ++++++- .../overheating/sounds}/fixing_pistol.wav | Bin .../overheating/sounds}/fixing_rifle.wav | Bin .../overheating/sounds}/jamming_pistol.wav | Bin .../overheating/sounds}/jamming_rifle.wav | Bin addons/resting/CfgSounds.hpp | 14 ++++++++++++ addons/resting/config.cpp | 2 ++ addons/resting/functions/fnc_restWeapon.sqf | 4 ++++ addons/resting/functions/fnc_unRestWeapon.sqf | 2 ++ .../resting/sounds}/weaponrest_rest.wav | Bin .../resting/sounds}/weaponrest_unrest.wav | Bin 12 files changed, 49 insertions(+), 1 deletion(-) rename {TO_MERGE/cse/sys_weaponheat/sound => addons/overheating/sounds}/fixing_pistol.wav (100%) rename {TO_MERGE/cse/sys_weaponheat/sound => addons/overheating/sounds}/fixing_rifle.wav (100%) rename {TO_MERGE/cse/sys_weaponheat/sound => addons/overheating/sounds}/jamming_pistol.wav (100%) rename {TO_MERGE/cse/sys_weaponheat/sound => addons/overheating/sounds}/jamming_rifle.wav (100%) create mode 100644 addons/resting/CfgSounds.hpp rename {TO_MERGE/cse/sys_equipment/weaponresting/sound => addons/resting/sounds}/weaponrest_rest.wav (100%) rename {TO_MERGE/cse/sys_equipment/weaponresting/sound => addons/resting/sounds}/weaponrest_unrest.wav (100%) diff --git a/addons/overheating/CfgSounds.hpp b/addons/overheating/CfgSounds.hpp index fd3a5596bd..d230561c09 100644 --- a/addons/overheating/CfgSounds.hpp +++ b/addons/overheating/CfgSounds.hpp @@ -3,4 +3,24 @@ class CfgSounds { sound[] = {QUOTE(PATHTOF(sounds\barrelswap.ogg)),5,1,200}; titles[] = {}; }; + class GVAR(jamming_rifle) { + name=QGVAR(jamming_rifle); + sound[]={QUOTE(PATHTOF(sounds\jamming_rifle.wav)),1,1}; + titles[]={}; + }; + class GVAR(jamming_pistol) { + name=QGVAR(jamming_pistol); + sound[]={QUOTE(PATHTOF(sounds\jamming_pistol.wav)),1,1}; + titles[]={}; + }; + class GVAR(fixing_rifle) { + name=QGVAR(fixing_rifle); + sound[]={QUOTE(PATHTOF(sounds\fixing_rifle.wav)),1,1}; + titles[]={}; + }; + class GVAR(fixing_pistol) { + name= QGVAR(fixing_pistol); + sound[]={QUOTE(PATHTOF(sounds\fixing_pistol.wav)),1,1}; + titles[]={}; + }; }; diff --git a/addons/overheating/functions/fnc_clearJam.sqf b/addons/overheating/functions/fnc_clearJam.sqf index 829ab34811..2340c6c890 100644 --- a/addons/overheating/functions/fnc_clearJam.sqf +++ b/addons/overheating/functions/fnc_clearJam.sqf @@ -42,6 +42,12 @@ if (_weapon in _jammedWeapons) then { _unit playActionNow _clearJamAction; }; - + if (_weapon == primaryWeapon _unit) then { + playSound QGVAR(fixing_rifle); + } else { + if (_weapon == secondaryWeapon _unit) then { + playSound QGVAR(fixing_pistol); + }; + }; [localize "STR_ACE_Overheating_WeaponUnjammed"] call EFUNC(common,displayTextStructured); }; diff --git a/TO_MERGE/cse/sys_weaponheat/sound/fixing_pistol.wav b/addons/overheating/sounds/fixing_pistol.wav similarity index 100% rename from TO_MERGE/cse/sys_weaponheat/sound/fixing_pistol.wav rename to addons/overheating/sounds/fixing_pistol.wav diff --git a/TO_MERGE/cse/sys_weaponheat/sound/fixing_rifle.wav b/addons/overheating/sounds/fixing_rifle.wav similarity index 100% rename from TO_MERGE/cse/sys_weaponheat/sound/fixing_rifle.wav rename to addons/overheating/sounds/fixing_rifle.wav diff --git a/TO_MERGE/cse/sys_weaponheat/sound/jamming_pistol.wav b/addons/overheating/sounds/jamming_pistol.wav similarity index 100% rename from TO_MERGE/cse/sys_weaponheat/sound/jamming_pistol.wav rename to addons/overheating/sounds/jamming_pistol.wav diff --git a/TO_MERGE/cse/sys_weaponheat/sound/jamming_rifle.wav b/addons/overheating/sounds/jamming_rifle.wav similarity index 100% rename from TO_MERGE/cse/sys_weaponheat/sound/jamming_rifle.wav rename to addons/overheating/sounds/jamming_rifle.wav diff --git a/addons/resting/CfgSounds.hpp b/addons/resting/CfgSounds.hpp new file mode 100644 index 0000000000..b55d4d9ae8 --- /dev/null +++ b/addons/resting/CfgSounds.hpp @@ -0,0 +1,14 @@ +class CfgSounds { + class GVAR(rest) + { + name=QGVAR(rest); + sound[]={QUOTE(PATHTOF(sounds\weaponrest_rest.wav)),1,1}; + titles[]={}; + }; + class GVAR(unrest) + { + name=QGVAR(unrest); + sound[]={QUOTE(PATHTOF(sounds\weaponrest_unrest.wav)),1,1}; + titles[]={}; + }; +}; \ No newline at end of file diff --git a/addons/resting/config.cpp b/addons/resting/config.cpp index ac710c82a8..599c15d318 100644 --- a/addons/resting/config.cpp +++ b/addons/resting/config.cpp @@ -17,3 +17,5 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "CfgMoves.hpp" + +#include "CfgSounds.hpp" \ No newline at end of file diff --git a/addons/resting/functions/fnc_restWeapon.sqf b/addons/resting/functions/fnc_restWeapon.sqf index e22a1309f3..e66e13bc6f 100644 --- a/addons/resting/functions/fnc_restWeapon.sqf +++ b/addons/resting/functions/fnc_restWeapon.sqf @@ -14,6 +14,8 @@ EXPLODE_3_PVT(_this,_unit,_vehicle,_weapon); +systemChat format["restingWeapon %1", _this]; + if (_weapon != primaryWeapon _unit) exitWith {}; if (_unit getVariable ["ACE_weaponRested", false]) exitWith {_this call FUNC(unRestWeapon)}; @@ -33,6 +35,8 @@ if (true in _intersects) then { // REST THE WEAPON addCamShake CAMSHAKE; + playSound QGVAR(rest); + // playSound3D [QUOTE(PATHTOF(sounds\weaponrest_rest.wav)), _unit]; if ([_weapon] call FUNC(hasBipod) && {_intersects select 3}) then { _unit setVariable ["ACE_bipodDeployed", true]; diff --git a/addons/resting/functions/fnc_unRestWeapon.sqf b/addons/resting/functions/fnc_unRestWeapon.sqf index b182cd89e8..deeb4f6c52 100644 --- a/addons/resting/functions/fnc_unRestWeapon.sqf +++ b/addons/resting/functions/fnc_unRestWeapon.sqf @@ -43,6 +43,8 @@ if (_unit getVariable ["ACE_bipodDeployed", false]) then { _picture = getText (configFile >> "CfgWeapons" >> _weapon >> "picture"); [localize "STR_ACE_Resting_WeaponLifted", _picture] call EFUNC(common,displayTextPicture); }; +playSound QGVAR(unrest); +//playSound3D [QUOTE(PATHTOF(sounds\weaponrest_unrest.wav)), _unit]; _unit setVariable ["ACE_weaponRested", false]; _unit setVariable ["ACE_bipodDeployed", false]; diff --git a/TO_MERGE/cse/sys_equipment/weaponresting/sound/weaponrest_rest.wav b/addons/resting/sounds/weaponrest_rest.wav similarity index 100% rename from TO_MERGE/cse/sys_equipment/weaponresting/sound/weaponrest_rest.wav rename to addons/resting/sounds/weaponrest_rest.wav diff --git a/TO_MERGE/cse/sys_equipment/weaponresting/sound/weaponrest_unrest.wav b/addons/resting/sounds/weaponrest_unrest.wav similarity index 100% rename from TO_MERGE/cse/sys_equipment/weaponresting/sound/weaponrest_unrest.wav rename to addons/resting/sounds/weaponrest_unrest.wav From 96e0d0e758514eceb8210441b48c9e89ca07c618 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 1 Feb 2015 11:14:21 +0100 Subject: [PATCH 035/211] Removed rouge debug code & dead code --- addons/resting/functions/fnc_restWeapon.sqf | 3 --- addons/resting/functions/fnc_unRestWeapon.sqf | 1 - 2 files changed, 4 deletions(-) diff --git a/addons/resting/functions/fnc_restWeapon.sqf b/addons/resting/functions/fnc_restWeapon.sqf index e66e13bc6f..52b1932f62 100644 --- a/addons/resting/functions/fnc_restWeapon.sqf +++ b/addons/resting/functions/fnc_restWeapon.sqf @@ -14,8 +14,6 @@ EXPLODE_3_PVT(_this,_unit,_vehicle,_weapon); -systemChat format["restingWeapon %1", _this]; - if (_weapon != primaryWeapon _unit) exitWith {}; if (_unit getVariable ["ACE_weaponRested", false]) exitWith {_this call FUNC(unRestWeapon)}; @@ -36,7 +34,6 @@ if (true in _intersects) then { // REST THE WEAPON addCamShake CAMSHAKE; playSound QGVAR(rest); - // playSound3D [QUOTE(PATHTOF(sounds\weaponrest_rest.wav)), _unit]; if ([_weapon] call FUNC(hasBipod) && {_intersects select 3}) then { _unit setVariable ["ACE_bipodDeployed", true]; diff --git a/addons/resting/functions/fnc_unRestWeapon.sqf b/addons/resting/functions/fnc_unRestWeapon.sqf index deeb4f6c52..86caa31ac8 100644 --- a/addons/resting/functions/fnc_unRestWeapon.sqf +++ b/addons/resting/functions/fnc_unRestWeapon.sqf @@ -44,7 +44,6 @@ if (_unit getVariable ["ACE_bipodDeployed", false]) then { [localize "STR_ACE_Resting_WeaponLifted", _picture] call EFUNC(common,displayTextPicture); }; playSound QGVAR(unrest); -//playSound3D [QUOTE(PATHTOF(sounds\weaponrest_unrest.wav)), _unit]; _unit setVariable ["ACE_weaponRested", false]; _unit setVariable ["ACE_bipodDeployed", false]; From 0419b7cbe5f9c7797bab070fc98ac4e06af6e9fd Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 1 Feb 2015 11:17:15 +0100 Subject: [PATCH 036/211] Formatting --- addons/overheating/CfgSounds.hpp | 40 ++++++++++++++++---------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/addons/overheating/CfgSounds.hpp b/addons/overheating/CfgSounds.hpp index d230561c09..c32fc02abf 100644 --- a/addons/overheating/CfgSounds.hpp +++ b/addons/overheating/CfgSounds.hpp @@ -3,24 +3,24 @@ class CfgSounds { sound[] = {QUOTE(PATHTOF(sounds\barrelswap.ogg)),5,1,200}; titles[] = {}; }; - class GVAR(jamming_rifle) { - name=QGVAR(jamming_rifle); - sound[]={QUOTE(PATHTOF(sounds\jamming_rifle.wav)),1,1}; - titles[]={}; - }; - class GVAR(jamming_pistol) { - name=QGVAR(jamming_pistol); - sound[]={QUOTE(PATHTOF(sounds\jamming_pistol.wav)),1,1}; - titles[]={}; - }; - class GVAR(fixing_rifle) { - name=QGVAR(fixing_rifle); - sound[]={QUOTE(PATHTOF(sounds\fixing_rifle.wav)),1,1}; - titles[]={}; - }; - class GVAR(fixing_pistol) { - name= QGVAR(fixing_pistol); - sound[]={QUOTE(PATHTOF(sounds\fixing_pistol.wav)),1,1}; - titles[]={}; - }; + class GVAR(jamming_rifle) { + name=QGVAR(jamming_rifle); + sound[]={QUOTE(PATHTOF(sounds\jamming_rifle.wav)),1,1}; + titles[]={}; + }; + class GVAR(jamming_pistol) { + name=QGVAR(jamming_pistol); + sound[]={QUOTE(PATHTOF(sounds\jamming_pistol.wav)),1,1}; + titles[]={}; + }; + class GVAR(fixing_rifle) { + name=QGVAR(fixing_rifle); + sound[]={QUOTE(PATHTOF(sounds\fixing_rifle.wav)),1,1}; + titles[]={}; + }; + class GVAR(fixing_pistol) { + name= QGVAR(fixing_pistol); + sound[]={QUOTE(PATHTOF(sounds\fixing_pistol.wav)),1,1}; + titles[]={}; + }; }; From 42bc8eff1a83d4921644ad5096b95f4e8aa4e1a4 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 1 Feb 2015 11:56:54 -0600 Subject: [PATCH 037/211] wirecutter typenames to lowercase --- addons/logistics_wirecutter/functions/fnc_isFence.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/logistics_wirecutter/functions/fnc_isFence.sqf b/addons/logistics_wirecutter/functions/fnc_isFence.sqf index 379b151b8f..2c00cec92b 100644 --- a/addons/logistics_wirecutter/functions/fnc_isFence.sqf +++ b/addons/logistics_wirecutter/functions/fnc_isFence.sqf @@ -23,7 +23,7 @@ private ["_typeOf", "_returnValue"]; PARAMS_1(_object); -_typeOf = typeOf _object; +_typeOf = toLower (typeOf _object); _returnValue = false; if (_typeOf != "") then { From eafc9e659c98194e89aa1b40014fb647be81d6eb Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Sun, 1 Feb 2015 20:38:15 +0200 Subject: [PATCH 038/211] Fixed the headers of the explosives system to be the correct style. --- addons/explosives/XEH_postInit.sqf | 31 ++++++----- addons/explosives/XEH_preInit.sqf | 31 ++++++----- .../explosives/functions/fnc_addClacker.sqf | 37 +++++++------ addons/explosives/functions/fnc_canDefuse.sqf | 32 ++++++------ .../explosives/functions/fnc_canDetonate.sqf | 30 +++++------ .../functions/fnc_defuseExplosive.sqf | 32 ++++++------ .../functions/fnc_detonateExplosive.sqf | 52 ++++++++++--------- .../functions/fnc_getDetonators.sqf | 31 ++++++----- .../functions/fnc_getPlacedExplosives.sqf | 34 ++++++------ .../functions/fnc_handleScrollWheel.sqf | 31 ++++++----- .../functions/fnc_hasExplosives.sqf | 30 +++++------ .../functions/fnc_hasPlacedExplosives.sqf | 30 +++++------ addons/explosives/functions/fnc_module.sqf | 30 +++++------ .../functions/fnc_openDetonateUI.sqf | 32 ++++++------ .../explosives/functions/fnc_openPlaceUI.sqf | 30 +++++------ .../functions/fnc_openTimerSetUI.sqf | 30 +++++------ .../functions/fnc_openTransmitterUI.sqf | 30 +++++------ .../functions/fnc_openTriggerSelectionUI.sqf | 30 +++++------ .../functions/fnc_placeExplosive.sqf | 43 +++++++-------- .../functions/fnc_place_Approve.sqf | 32 ++++++------ .../explosives/functions/fnc_place_Cancel.sqf | 31 ++++++----- .../functions/fnc_selectTrigger.sqf | 32 ++++++------ .../explosives/functions/fnc_setPosition.sqf | 37 +++++++------ .../functions/fnc_setupExplosive.sqf | 37 +++++++------ .../explosives/functions/fnc_startDefuse.sqf | 32 ++++++------ .../explosives/functions/fnc_startTimer.sqf | 33 ++++++------ .../explosives/functions/fnc_triggerType.sqf | 31 ++++++----- 27 files changed, 443 insertions(+), 448 deletions(-) diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index fa775511ed..69a5643aad 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -1,20 +1,19 @@ /* - Name: XEH_postInit.sqf - - Author(s): - Garth de Wet (LH) - - Description: - Initialises explosive behaviour. - - Parameters: - None - - Returns: - None - - Example: - None +* XEH_postInit.sqf +* +* Author: Garth 'L-H' de Wet +* Initialises the player object for the explosive system. +* +* Arguments: +* None +* +* Return Value: +* None +* +* Example: +* None +* +* Public: No */ #include "script_component.hpp" if !(hasInterface) exitWith {}; diff --git a/addons/explosives/XEH_preInit.sqf b/addons/explosives/XEH_preInit.sqf index c55fb79a72..9b2db0a5b6 100644 --- a/addons/explosives/XEH_preInit.sqf +++ b/addons/explosives/XEH_preInit.sqf @@ -1,20 +1,19 @@ /* -Name: XEH_preInit.sqf - -Author(s): -Garth de Wet (LH) - -Description: -Prepares the functions - -Parameters: -None - -Returns: -None - -Example: -None +* XEH_preInit.sqf +* +* Author: Garth 'L-H' de Wet +* Initialises the explosives system +* +* Arguments: +* None +* +* Return Value: +* None +* +* Example: +* None +* +* Public: No */ #include "script_component.hpp" diff --git a/addons/explosives/functions/fnc_addClacker.sqf b/addons/explosives/functions/fnc_addClacker.sqf index c1f7b51c46..40ba6f58ae 100644 --- a/addons/explosives/functions/fnc_addClacker.sqf +++ b/addons/explosives/functions/fnc_addClacker.sqf @@ -1,23 +1,22 @@ /* - Name: ACE_Explosives_fnc_addClacker - - Author(s): - Garth de Wet (LH) - - Description: - Adds an explosive as a clacker item to the passed unit if the unit has a ACE_Clacker item. - - Parameters: - 0: OBJECT - unit - 1: OBJECT - Explosive - 2: STRING - Magazine - 3: ARRAY - Extra vars - - Returns: - Nothing - - Example: - [_unit, _explosive, "SatchelCharge_Remote_Mag", [ConfigFile >> "CfgACE_Triggers" >> "Command"]] call ACE_Explosives_fnc_AddClacker; +* fnc_addClacker.sqf +* +* Author: Garth 'L-H' de Wet +* Adds an explosive as a clacker item to the passed unit if the unit has the required item. +* +* Arguments: +* 0: Unit +* 1: Explosive +* 2: Magazine classname +* 3: Extra variables +* +* Return Value: +* None +* +* Example: +* [player, _explosive, "SatchelCharge_Remote_Mag", [ConfigFile >> "CfgACE_Triggers" >> "Command"]] call ACE_Explosives_fnc_addClacker; +* +* Public: Yes */ #include "script_component.hpp" private ["_unit", "_explosive", "_clacker", "_config", "_magazineClass", "_requiredItems", "_hasRequired"]; diff --git a/addons/explosives/functions/fnc_canDefuse.sqf b/addons/explosives/functions/fnc_canDefuse.sqf index c1bc4484cb..7c302e6e7a 100644 --- a/addons/explosives/functions/fnc_canDefuse.sqf +++ b/addons/explosives/functions/fnc_canDefuse.sqf @@ -1,19 +1,19 @@ /* - Name: ACE_Explosives_fnc_canDefuse - - Author: Garth de Wet (LH) - - Description: - Checks if a unit can defuse an explosive - - Parameters: - 0: OBJECT - unit - - Returns: - Nothing - - Example: - [player] call ACE_Explosives_fnc_CanDefuse; +* fnc_canDefuse.sqf +* +* Author: Garth 'L-H' de Wet +* Whether a unit can perform the defuse action +* +* Arguments: +* 0: Unit +* +* Return Value: +* Able to defuse +* +* Example: +* if ([player] call ACE_Explosives_fnc_canDefuse) then {hint "Can Defuse";}; +* +* Public: Yes */ #include "script_component.hpp" private "_unit"; @@ -24,7 +24,7 @@ _isSpecialist = [_unit] call EFUNC(Common,isEOD); if (GVAR(RequireSpecialist) && {!_isSpecialist}) exitWith {false}; _timeBombCore = nearestObject [_unit, "TimeBombCore"]; -_mineBase = nearestObject [_unit, "MineBase"]; +_mineBase = nearestObject [_unit, "MineBase"]; _distCore = _unit distance _timeBombCore; _distBase = _unit distance _mineBase; diff --git a/addons/explosives/functions/fnc_canDetonate.sqf b/addons/explosives/functions/fnc_canDetonate.sqf index 672dc4ca1a..7d81425c46 100644 --- a/addons/explosives/functions/fnc_canDetonate.sqf +++ b/addons/explosives/functions/fnc_canDetonate.sqf @@ -1,19 +1,19 @@ /* -Name: ACE_Explosives_fnc_canDetonate - -Author: Garth de Wet (LH) - -Description: -Checks if a unit can detonate an explosive - -Parameters: -0: OBJECT - unit - -Returns: -BOOLEAN - if the unit has explosives and detonators. - -Example: -[player] call ACE_Explosives_fnc_canDetonate; +* fnc_canDetonate.sqf +* +* Author: Garth 'L-H' de Wet +* Whether the unit is able to detonate explosives +* +* Arguments: +* 0: Unit +* +* Return Value: +* Able to detonate +* +* Example: +* if ([player] call ACE_Explosives_fnc_canDetonate) then { hint "Can Detonate"; }; +* +* Public: Yes */ #include "script_component.hpp" private "_unit"; diff --git a/addons/explosives/functions/fnc_defuseExplosive.sqf b/addons/explosives/functions/fnc_defuseExplosive.sqf index 243e6b44e0..09444009c0 100644 --- a/addons/explosives/functions/fnc_defuseExplosive.sqf +++ b/addons/explosives/functions/fnc_defuseExplosive.sqf @@ -1,20 +1,20 @@ /* - Name: ACE_Explosives_fnc_defuseExplosive - - Author: Garth de Wet (LH) - - Description: - Defuses an Explosive - - Parameters: - 0: OBJECT - unit - 1: OBJECT - Explosive - - Returns: - Nothing - - Example: - [player, ACE_Interaction_Target] call ACE_Explosives_fnc_defuseExplosive; +* fnc_defuseExplosive.sqf +* +* Author: Garth 'L-H' de Wet +* Causes the unit to defuse the passed explosive. +* +* Arguments: +* 0: Unit +* 1: Explosive +* +* Return Value: +* None +* +* Example: +* [player, ACE_Interaction_Target] call ACE_Explosives_fnc_defuseExplosive; +* +* Public: Yes */ #include "script_component.hpp" private ["_unit", "_explosive"]; diff --git a/addons/explosives/functions/fnc_detonateExplosive.sqf b/addons/explosives/functions/fnc_detonateExplosive.sqf index 9443be6bc1..5d0d71c800 100644 --- a/addons/explosives/functions/fnc_detonateExplosive.sqf +++ b/addons/explosives/functions/fnc_detonateExplosive.sqf @@ -1,25 +1,24 @@ /* - Name: ACE_Explosives_fnc_detonateExplosive - - Author(s): - Garth de Wet (LH) - - Description: - Detonates a remote Explosive. - - Parameters: - 0: OBJECT - Unit detonating explosive - 1: NUMBER - Max range (-1 to ignore) - 2: ARRAY - Explosive - 0: OBJECT - Explosive - 1: NUMBER - Fuse Time - - Returns: - Nothing - - Example: - // Clacker - [player, 100, [Explosive, 1]] call ACE_Explosives_fnc_detonateExplosive; +* fnc_detonateExplosive.sqf +* +* Author: Garth 'L-H' de Wet +* Causes the unit to defuse the passed explosive. +* +* Arguments: +* 0: Unit +* 1: Max range (-1 to ignore) +* 2: Explosive +* 0: Explosive +* 1: Fuse time +* +* Return Value: +* None +* +* Example: +* [player, 100, [Explosive, 1]] call ACE_Explosives_fnc_detonateExplosive; // has to be within range +* [player, -1, [Explosive, 1]] call ACE_Explosives_fnc_detonateExplosive; // range ignored. +* +* Public: Yes */ #include "script_component.hpp" private ["_item","_result", "_ignoreRange", "_unit", "_range"]; @@ -44,8 +43,11 @@ if (getNumber (ConfigFile >> "CfgAmmo" >> typeof (_item select 0) >> "TriggerWhe _exp setPosASL _pos; }; }; -_item spawn { - sleep (_this select 1); - (_this select 0) setDamage 1; -}; +[{ + _explosive = _this; + if (!isNull _explosive) then { + _explosive setDamage 1; + }; +}, _item select 0, _item select 1, 0] call EFUNC(common,waitAndExecute); + _result diff --git a/addons/explosives/functions/fnc_getDetonators.sqf b/addons/explosives/functions/fnc_getDetonators.sqf index 77549c0e3b..b5146e8249 100644 --- a/addons/explosives/functions/fnc_getDetonators.sqf +++ b/addons/explosives/functions/fnc_getDetonators.sqf @@ -1,20 +1,19 @@ /* - Name: ACE_Explosives_fnc_getDetonators - - Author(s): - Garth de Wet (LH) - - Description: - Gets all the detonators of a specific unit - - Parameters: - 0: OBJECT - Unit to get detonators of - - Returns: - ARRAY - Configs of all detonators. - - Example: - _detonators = [player] call ACE_Explosives_fnc_getDetonators; +* fnc_getDetonators.sqf +* +* Author: Garth 'L-H' de Wet +* Returns all the detonators of the unit +* +* Arguments: +* 0: Unit +* +* Return Value: +* Configs of all detonators +* +* Example: +* _detonators = [player] call ACE_Explosives_fnc_getDetonators; +* +* Public: Yes */ #include "script_component.hpp" private ["_unit", "_items", "_result", "_config"]; diff --git a/addons/explosives/functions/fnc_getPlacedExplosives.sqf b/addons/explosives/functions/fnc_getPlacedExplosives.sqf index 0343b76521..df449ac6af 100644 --- a/addons/explosives/functions/fnc_getPlacedExplosives.sqf +++ b/addons/explosives/functions/fnc_getPlacedExplosives.sqf @@ -1,21 +1,21 @@ /* - Name: ACE_Explosives_fnc_getPlacedExplosives - - Author: Garth de Wet (LH) - - Description: - Gets all placed explosives, whether Clacker based or not. - - Parameters: - 0: OBJECT - unit - 1: STRING - (OPTIONAL) Trigger classname for filter. - - Returns: - Array: Explosives. - - Example: - _allExplosives = [player] call ACE_Explosives_fnc_getPlacedExplosives; - _deadmanExplosives = [player, "DeadManSwitch"] call ACE_Explosives_fnc_getPlacedExplosives; +* fnc_getPlacedExplosives.sqf +* +* Author: Garth 'L-H' de Wet +* Gets all placed explosives by unit, optionally filtered by specific trigger type. +* +* Arguments: +* 0: Unit +* 1: Trigger classname - filter (optional) +* +* Return Value: +* Explosives +* +* Example: +* _allExplosives = [player] call ACE_Explosives_fnc_getPlacedExplosives; +* _deadmanExplosives = [player, "DeadManSwitch"] call ACE_Explosives_fnc_getPlacedExplosives; +* +* Public: Yes */ #include "script_component.hpp" private ["_unit", "_clackerList", "_adjustedList", "_list", "_filter"]; diff --git a/addons/explosives/functions/fnc_handleScrollWheel.sqf b/addons/explosives/functions/fnc_handleScrollWheel.sqf index ddc64010eb..b7de62c7a0 100644 --- a/addons/explosives/functions/fnc_handleScrollWheel.sqf +++ b/addons/explosives/functions/fnc_handleScrollWheel.sqf @@ -1,20 +1,19 @@ /* - Name: ACE_Explosives_fnc_HandleScrollWheel - - Author(s): - L-H - - Description: - Handles rotating of Explosives - - Parameters: - Number: Scroll amount - - Returns: - Boolean: Handled or not. - - Example: - 1.2 call ACE_Explosives_fnc_HandleScrollWheel; +* fnc_handleScrollWheel.sqf +* +* Author: Garth 'L-H' de Wet +* Handles rotating of Explosives +* +* Arguments: +* Amount scrolled +* +* Return Value: +* Handled +* +* Example: +* 1.2 call ACE_Explosives_fnc_HandleScrollWheel; +* +* Public: No */ #include "script_component.hpp" private ["_obj"]; diff --git a/addons/explosives/functions/fnc_hasExplosives.sqf b/addons/explosives/functions/fnc_hasExplosives.sqf index 79596b1b1e..cbcb3905c8 100644 --- a/addons/explosives/functions/fnc_hasExplosives.sqf +++ b/addons/explosives/functions/fnc_hasExplosives.sqf @@ -1,19 +1,19 @@ /* - Name: ACE_Explosives_fnc_hasExplosives - - Author: Garth de Wet (LH) - - Description: - Whether the passed unit has any explosives on them. - - Parameters: - 0: OBJECT - unit - - Returns: - BOOLEAN - True if the unit has explosives. - - Example: - _hasExplosives = [player] call ACE_Explosives_fnc_hasExplosives; +* fnc_hasExplosives.sqf +* +* Author: Garth 'L-H' de Wet +* Whether the passed unit has any explosives on them. +* +* Arguments: +* 0: Unit +* +* Return Value: +* The unit has explosives +* +* Example: +* _hasExplosives = [player] call ACE_Explosives_fnc_hasExplosives; +* +* Public: Yes */ #include "script_component.hpp" private ["_unit", "_result", "_magazines"]; diff --git a/addons/explosives/functions/fnc_hasPlacedExplosives.sqf b/addons/explosives/functions/fnc_hasPlacedExplosives.sqf index ad6f29a02e..dd25795296 100644 --- a/addons/explosives/functions/fnc_hasPlacedExplosives.sqf +++ b/addons/explosives/functions/fnc_hasPlacedExplosives.sqf @@ -1,19 +1,19 @@ /* - Name: ACE_Explosives_fnc_hasPlacedExplosives - - Author: Garth de Wet (LH) - - Description: - Whether the passed unit has placed any explosives or has a clacker that was used when explosives were placed. - - Parameters: - 0: OBJECT - unit - - Returns: - BOOLEAN - True if the unit has explosives. - - Example: - _hasPLacedExplosives = [player] call ACE_Explosives_fnc_hasPlacedExplosives; +* fnc_hasPlacedExplosives.sqf +* +* Author: Garth 'L-H' de Wet +* Whether the passed unit has placed any explosives or has a clacker that was used when explosives were placed. +* +* Arguments: +* 0: Unit +* +* Return Value: +* Configs of all detonators +* +* Example: +* _hasPlacedExplosives = [player] call ACE_Explosives_fnc_hasPlacedExplosives; +* +* Public: Yes */ #include "script_component.hpp" (count (_this call FUNC(getPlacedExplosives)) > 0) diff --git a/addons/explosives/functions/fnc_module.sqf b/addons/explosives/functions/fnc_module.sqf index 415b537266..77762dc08b 100644 --- a/addons/explosives/functions/fnc_module.sqf +++ b/addons/explosives/functions/fnc_module.sqf @@ -1,19 +1,19 @@ /* - Name: ACE_Explosives_fnc_module - - Author: Garth de Wet (LH) - - Description: - Initialises the explosives module - - Parameters: - Things - - Returns: - Nothing - - Example: - +* fnc_module.sqf +* +* Author: Garth 'L-H' de Wet +* Initialises the explosives module +* +* Arguments: +* Module things. +* +* Return Value: +* None +* +* Example: +* Called By BIS. +* +* Public: No */ #include "script_component.hpp" if !(isServer) exitWith {}; diff --git a/addons/explosives/functions/fnc_openDetonateUI.sqf b/addons/explosives/functions/fnc_openDetonateUI.sqf index 84a874f677..4e8b854a79 100644 --- a/addons/explosives/functions/fnc_openDetonateUI.sqf +++ b/addons/explosives/functions/fnc_openDetonateUI.sqf @@ -1,20 +1,20 @@ /* - Name: ACE_Explosives_fnc_openDetonateUI - - Author: Garth de Wet (LH) - - Description: - Opens the UI for explosive detonation selection - - Parameters: - 0: OBJECT - unit - 0: STRING - Classname of detonator - - Returns: - Nothing - - Example: - [player, "ACE_M26_Clacker"] call ACE_Explosives_fnc_openDetonateUI; +* fnc_openDetonateUI.sqf +* +* Author: Garth 'L-H' de Wet +* Opens the UI for explosive detonation selection +* +* Arguments: +* 0: Unit +* 1: Trigger classname +* +* Return Value: +* None +* +* Example: +* [player, "ACE_M26_Clacker"] call ACE_Explosives_fnc_openDetonateUI; +* +* Public: No */ #include "script_component.hpp" private ["_unit","_result", "_item"]; diff --git a/addons/explosives/functions/fnc_openPlaceUI.sqf b/addons/explosives/functions/fnc_openPlaceUI.sqf index af34f40236..791fe359d9 100644 --- a/addons/explosives/functions/fnc_openPlaceUI.sqf +++ b/addons/explosives/functions/fnc_openPlaceUI.sqf @@ -1,19 +1,19 @@ /* - Name: ACE_Explosives_fnc_openPlaceUI - - Author: Garth de Wet (LH) - - Description: - Opens the UI for explosive placement selection - - Parameters: - 0: OBJECT - unit - - Returns: - Nothing - - Example: - [player] call ACE_Explosives_fnc_openPlaceUI; +* fnc_openPlaceUI.sqf +* +* Author: Garth 'L-H' de Wet +* Opens the UI for explosive placement selection +* +* Arguments: +* 0: Unit +* +* Return Value: +* None +* +* Example: +* [player] call ACE_Explosives_fnc_openPlaceUI; +* +* Public: No */ #include "script_component.hpp" private ["_unit","_mags", "_item", "_index", "_actions"]; diff --git a/addons/explosives/functions/fnc_openTimerSetUI.sqf b/addons/explosives/functions/fnc_openTimerSetUI.sqf index e686fc7539..c2969b5497 100644 --- a/addons/explosives/functions/fnc_openTimerSetUI.sqf +++ b/addons/explosives/functions/fnc_openTimerSetUI.sqf @@ -1,19 +1,19 @@ /* - Name: ACE_Explosives_fnc_openTimerSetUI - - Author: Garth de Wet (LH) - - Description: - Opens the UI for timer setting of an explosive - - Parameters: - 0: String - Magazine - - Returns: - Nothing - - Example: - [player] call ACE_Explosives_fnc_openTimerSetUI; +* fnc_openTimerSetUI.sqf +* +* Author: Garth 'L-H' de Wet +* Opens the UI for timer setting of an explosive +* +* Arguments: +* 0: Magazine +* +* Return Value: +* None +* +* Example: +* ["SatchelCharge_Remote_Mag"] call ACE_Explosives_fnc_openTimerSetUI; +* +* Public: No */ #include "script_component.hpp" private ["_mag"]; diff --git a/addons/explosives/functions/fnc_openTransmitterUI.sqf b/addons/explosives/functions/fnc_openTransmitterUI.sqf index 2311b6eea9..ffef790d7c 100644 --- a/addons/explosives/functions/fnc_openTransmitterUI.sqf +++ b/addons/explosives/functions/fnc_openTransmitterUI.sqf @@ -1,19 +1,19 @@ /* - Name: ACE_Explosives_fnc_openTransmitterUI - - Author: Garth de Wet (LH) - - Description: - Opens the UI for selecting the transmitter - - Parameters: - 0: OBJECT - Unit - - Returns: - Nothing - - Example: - [player] call ACE_Explosives_fnc_openTransmitterUI; +* fnc_openTransmitterUI.sqf +* +* Author: Garth 'L-H' de Wet +* Opens the UI for selecting the transmitter +* +* Arguments: +* 0: Unit +* +* Return Value: +* Nothing +* +* Example: +* [player] call ACE_Explosives_fnc_openTransmitterUI; +* +* Public: No */ #include "script_component.hpp" private ["_items", "_unit", "_count", "_actions", "_config"]; diff --git a/addons/explosives/functions/fnc_openTriggerSelectionUI.sqf b/addons/explosives/functions/fnc_openTriggerSelectionUI.sqf index d51b0dc7f4..3c3d07bb7f 100644 --- a/addons/explosives/functions/fnc_openTriggerSelectionUI.sqf +++ b/addons/explosives/functions/fnc_openTriggerSelectionUI.sqf @@ -1,19 +1,19 @@ /* - Name: ACE_Explosives_fnc_openTriggerSelectionUI - - Author: Garth de Wet (LH) - - Description: - Opens the UI for explosive trigger selection - - Parameters: - 0: String - explosive magazine - - Returns: - Nothing - - Example: - [lbData [8866, lbCurSel 8866]] call ACE_Explosives_fnc_openTriggerSelectionUI; +* fnc_openTriggerSelectionUI.sqf +* +* Author: Garth 'L-H' de Wet +* Opens the UI for explosive trigger selection +* +* Arguments: +* 0: Explosive Magazine +* +* Return Value: +* None +* +* Example: +* [lbData [8866, lbCurSel 8866]] call ACE_Explosives_fnc_openTriggerSelectionUI; +* +* Public: No */ #include "script_component.hpp" private ["_magazine", "_hasRequiredItems","_triggerTypes", "_actions", "_detonators", "_required", "_magTriggers"]; diff --git a/addons/explosives/functions/fnc_placeExplosive.sqf b/addons/explosives/functions/fnc_placeExplosive.sqf index f2198c6d0a..dc6fbc7aec 100644 --- a/addons/explosives/functions/fnc_placeExplosive.sqf +++ b/addons/explosives/functions/fnc_placeExplosive.sqf @@ -1,25 +1,26 @@ /* - Name: ACE_Explosives_fnc_PlaceExplosive - - Author(s): - Garth de Wet (LH) - - Description: - Places an explosive at the requested position - - Parameters: - 0: OBJECT - unit - 1: POSITION - Position to place explosive - 2: NUMBER - Rotation - 3: STRING - Magazine class - 4: Config - Config of trigger - 5: ARRAY - variables required for the trigger type - - Returns: - OBJECT: Placed explosive - - Example: - _explosive = [player, player modelToWorld [0,0.5, 0.1], 134, "SatchelCharge_Remote_Mag", "Command", []] call ACE_Explosives_fnc_PlaceExplosive; +* fnc_placeExplosive.sqf +* +* Author: Garth 'L-H' de Wet +* Places an explosive at the requested position +* +* Arguments: +* 0: Unit +* 1: Position to place explosive +* 2: Rotation +* 3: Magazine class +* 4: Config of trigger +* 5: Variables required for the trigger type +* 6: Should direction be set +* +* Return Value: +* Placed explosive +* +* Example: +* _explosive = [player, player modelToWorld [0,0.5, 0.1], 134, +* "SatchelCharge_Remote_Mag", "Command", []] call ACE_Explosives_fnc_placeExplosive; +* +* Public: Yes */ #include "script_component.hpp" private ["_pos", "_dir", "_magazineClass", "_ammo", "_triggerSpecificVars", "_unit", "_triggerConfig", "_explosive"]; diff --git a/addons/explosives/functions/fnc_place_Approve.sqf b/addons/explosives/functions/fnc_place_Approve.sqf index c906aa777d..f771414f0b 100644 --- a/addons/explosives/functions/fnc_place_Approve.sqf +++ b/addons/explosives/functions/fnc_place_Approve.sqf @@ -1,20 +1,20 @@ /* - Name: ACE_Explosives_fnc_Place_Approve - - Author(s): - Garth de Wet (LH) - - Description: - Approves placement of the explosive, releases the placement object for it to settle in a location suitable for the explosive to be created. - - Parameters: - Nothing - - Returns: - Nothing - - Example: - call ACE_Explosives_fnc_Place_Approve; +* fnc_place_Approve.sqf +* +* Author: Garth 'L-H' de Wet +* Approves placement of the explosive, releases the placement object for it +* to settle in a location suitable for the explosive to be created. +* +* Arguments: +* None +* +* Return Value: +* None +* +* Example: +* call ACE_Explosives_fnc_place_Approve; +* +* Public: No */ #include "script_component.hpp" if (GVAR(pfeh_running)) then { diff --git a/addons/explosives/functions/fnc_place_Cancel.sqf b/addons/explosives/functions/fnc_place_Cancel.sqf index 3f56e35ff6..943af6c17b 100644 --- a/addons/explosives/functions/fnc_place_Cancel.sqf +++ b/addons/explosives/functions/fnc_place_Cancel.sqf @@ -1,20 +1,19 @@ /* - Name: ACE_Explosives_fnc_Place_Cancel - - Author(s): - Garth de Wet (LH) - - Description: - Cancels placement of the explosive - - Parameters: - Nothing - - Returns: - Nothing - - Example: - call ACE_Explosives_fnc_Place_Cancel; +* fnc_place_Cancel.sqf +* +* Author: Garth 'L-H' de Wet +* Cancels placement of the explosive +* +* Arguments: +* None +* +* Return Value: +* None +* +* Example: +* call ACE_Explosives_fnc_place_Cancel; +* +* Public: Yes */ #include "script_component.hpp" if (GVAR(pfeh_running)) then { diff --git a/addons/explosives/functions/fnc_selectTrigger.sqf b/addons/explosives/functions/fnc_selectTrigger.sqf index 0700fb5ad3..dcc2163191 100644 --- a/addons/explosives/functions/fnc_selectTrigger.sqf +++ b/addons/explosives/functions/fnc_selectTrigger.sqf @@ -1,20 +1,20 @@ /* - Name: ACE_Explosives_fnc_selectTrigger - - Author: Garth de Wet (LH) - - Description: - Selects a trigger for an explosive. - - Parameters: - 0: String - Magazine - 1: String - trigger index in ACE_triggers of magazine class - - Returns: - Nothing - - Example: - ["SatchelCharge_Remote_Mag","Timer"] call ACE_Explosives_fnc_selectTrigger; +* fnc_selectTrigger.sqf +* +* Author: Garth 'L-H' de Wet +* Selects a trigger for an explosive. +* +* Arguments: +* 0: Magazine +* 1: Trigger mode +* +* Return Value: +* None +* +* Example: +* ["SatchelCharge_Remote_Mag","Timer"] call ACE_Explosives_fnc_selectTrigger; +* +* Public: No */ #include "script_component.hpp" private ["_magazine","_trigger"]; diff --git a/addons/explosives/functions/fnc_setPosition.sqf b/addons/explosives/functions/fnc_setPosition.sqf index b195bf0562..2295066c15 100644 --- a/addons/explosives/functions/fnc_setPosition.sqf +++ b/addons/explosives/functions/fnc_setPosition.sqf @@ -1,26 +1,25 @@ /* - Name: ACE_Explosives_fnc_SetPos - - Author(s): - Garth de Wet (LH) - - Description: - Sets the Dir and pitch - - Parameters: - 0: OBJECT - Object - 1: NUMBER - Direction - 2: NUMBER - Pitch - - Returns: - Nothing - - Example: - [_explosive, 150, 90] call ACE_Explosives_fnc_SetPos; +* fnc_setPosition.sqf +* +* Author: Garth 'L-H' de Wet +* Sets the Dir and pitch of passed object +* +* Arguments: +* 0: Explosive +* 1: Direction +* 2: Pitch +* +* Return Value: +* None +* +* Example: +* [_explosive, 150, 90] call ACE_Explosives_fnc_SetPos; +* +* Public: Yes */ #include "script_component.hpp" private "_ex"; -_ex=_this select 0; +_ex = _this select 0; _ex setDir (_this select 1); if ((_this select 2) != 0) then { [_ex, _this select 2, 0] call CALLSTACK(BIS_fnc_setPitchBank); diff --git a/addons/explosives/functions/fnc_setupExplosive.sqf b/addons/explosives/functions/fnc_setupExplosive.sqf index 8221109838..04f1cc80a3 100644 --- a/addons/explosives/functions/fnc_setupExplosive.sqf +++ b/addons/explosives/functions/fnc_setupExplosive.sqf @@ -1,23 +1,22 @@ /* - Name: ACE_Explosives_fnc_SetupExplosive - - Author(s): - Garth de Wet (LH) - - Description: - Starts the setup process for the passed explosive. - - Parameters: - 0: OBJECT - Unit placing explosive. - 1: STRING - Classname of explosive to place. (CfgMagazine class) - 2: Config - Trigger Config - 3: NUMBER - (optional) timer - - Returns: - Nothing - - Example: - [player, "SatchelCharge_Remote_Mag", "Command"] call ACE_Explosives_fnc_SetupExplosive; +* fnc_setupExplosive.sqf +* +* Author: Garth 'L-H' de Wet +* Starts the setup process for the passed explosive. Player only. +* +* Arguments: +* 0: Unit +* 1: Classname of explosive to place. (CfgMagazine class) +* 2: Trigger Config +* 3: Timer (optional) +* +* Return Value: +* None +* +* Example: +* [player, "SatchelCharge_Remote_Mag", "Command"] call ACE_Explosives_fnc_SetupExplosive; +* +* Public: Yes */ #include "script_component.hpp" private ["_unit", "_class", "_config", "_timer"]; diff --git a/addons/explosives/functions/fnc_startDefuse.sqf b/addons/explosives/functions/fnc_startDefuse.sqf index 7213da531c..47c43605a2 100644 --- a/addons/explosives/functions/fnc_startDefuse.sqf +++ b/addons/explosives/functions/fnc_startDefuse.sqf @@ -1,20 +1,20 @@ /* - Name: ACE_Explosives_fnc_StartDefuse - - Author: Garth de Wet (LH) - - Description: - Starts defusing an explosive - - Parameters: - 0: OBJECT - Unit to defuse explosive - 1: OBJECT - Target explosive - - Returns: - Nothing - - Example: - [player, ACE_Interaction_Target] call ACE_Explosives_fnc_StartDefuse; +* fnc_startDefuse.sqf +* +* Author: Garth 'L-H' de Wet +* Starts defusing an explosive +* +* Arguments: +* 0: Unit +* 1: Target explosive +* +* Return Value: +* Nothing +* +* Example: +* [player, ACE_Interaction_Target] call ACE_Explosives_fnc_StartDefuse; +* +* Public: Yes */ #include "script_component.hpp" private ["_unit","_target"]; diff --git a/addons/explosives/functions/fnc_startTimer.sqf b/addons/explosives/functions/fnc_startTimer.sqf index e5c8bdee75..6317e0589e 100644 --- a/addons/explosives/functions/fnc_startTimer.sqf +++ b/addons/explosives/functions/fnc_startTimer.sqf @@ -1,19 +1,20 @@ /* - Author(s): - Garth de Wet (LH) - - Description: - Starts a timer for an explosive. - - Parameters: - 0: OBJECT - Explosive - 1: NUMBER - time till detonation - - Returns: - Nothing - - Example: - [_explosive, 10] call ACE_Explosives_fnc_startTimer; +* fnc_startTimer.sqf +* +* Author: Garth 'L-H' de Wet +* Starts a timer for an explosive. +* +* Arguments: +* 0: Explosive +* 1: Time till detonate +* +* Return Value: +* None +* +* Example: +* [_explosive, 10] call ACE_Explosives_fnc_startTimer; +* +* Public: Yes */ #include "script_component.hpp" @@ -24,4 +25,4 @@ EXPLODE_2_PVT(_this,_explosive,_delay); if (!isNull _explosive) then { [_explosive, -1, [_explosive, 0], true] call FUNC(detonateExplosive); }; -}, _explosive, _delay, 0] call EFUNC(common,waitAndExecute); \ No newline at end of file +}, _explosive, _delay, 0] call EFUNC(common,waitAndExecute); diff --git a/addons/explosives/functions/fnc_triggerType.sqf b/addons/explosives/functions/fnc_triggerType.sqf index dead725a7a..96d1e96faf 100644 --- a/addons/explosives/functions/fnc_triggerType.sqf +++ b/addons/explosives/functions/fnc_triggerType.sqf @@ -1,20 +1,19 @@ /* - Name: ACE_Explosives_fnc_TriggerType - - Author(s): - Garth de Wet (LH) - - Description: - Gets the types of triggers associated with the explosive - - Parameters: - 0: String - Explosive magazine - - Returns: - ARRAY - - Example: - _supports = ["SatchelCharge_Remote_Mag"] call ACE_Explosives_fnc_TriggerType; +* fnc_triggerType.sqf +* +* Author: Garth 'L-H' de Wet +* Gets the types of triggers associated with the explosive +* +* Arguments: +* 0: Explosive magazine +* +* Return Value: +* Supported triggers as CfgACE_Triggers config entries +* +* Example: +* _supports = ["SatchelCharge_Remote_Mag"] call ACE_Explosives_fnc_TriggerType +* +* Public: Yes */ #include "script_component.hpp" private "_result"; From 01ee35d6c56eb2f066b3ba4626141e68782f3bdc Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 1 Feb 2015 13:09:17 -0600 Subject: [PATCH 039/211] Geforces: Fix "Error Zero divisor" Adds some simple checks before dividing. Before dropping uniform or playing as a dog would throw script error. --- addons/gforces/functions/fnc_pfhUpdateGForces.sqf | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf index afee7579cd..f45d629760 100644 --- a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf +++ b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf @@ -60,7 +60,15 @@ if (count GVAR(GForces) > 0) then { _classCoef = ACE_player getVariable ["ACE_GForceCoef", getNumber (configFile >> "CfgVehicles" >> (typeOf ACE_player) >> "ACE_GForceCoef")]; -_suitCoef = getNumber (configFile >> "CfgWeapons" >> (uniform ACE_player) >> "ACE_GForceCoef"); +_suitCoef = if ((uniform ACE_player) != "") then { + getNumber (configFile >> "CfgWeapons" >> (uniform ACE_player) >> "ACE_GForceCoef") +} else { + 1 +}; + +//Fix "Error Zero divisor" +if (_classCoef == 0) then {_classCoef = 0.001}; +if (_suitCoef == 0) then {_suitCoef = 0.001}; _gBlackOut = MAXVIRTUALG / _classCoef + MAXVIRTUALG / _suitCoef - MAXVIRTUALG; _gRedOut = MINVIRTUALG / _classCoef; From 5958aab66feeecd1a7cc18806ee21aaaa5dcca18 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 1 Feb 2015 14:21:30 -0600 Subject: [PATCH 040/211] Update AUTHORS.txt --- AUTHORS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index 74d75babdd..024864a738 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -11,7 +11,7 @@ esteldunedain Felix Wiegand Garth "L-H" de Wet Jo David -PabstMirror +PabstMirror # CONTRIBUTORS 11RDP-LoupVert From fa002b4db6515792a77a91f64ef4a522e790d287 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 1 Feb 2015 14:56:19 -0600 Subject: [PATCH 041/211] Formating and Headers --- addons/attach/$PBOPREFIX$ | 2 +- addons/attach/CfgEventHandlers.hpp | 6 +- addons/attach/CfgMagazines.hpp | 16 +- addons/attach/CfgVehicles.hpp | 254 +++++++++---------- addons/attach/CfgWeapons.hpp | 24 +- addons/attach/README.md | 4 +- addons/attach/config.cpp | 18 +- addons/attach/functions/fnc_attach.sqf | 121 ++++----- addons/attach/functions/fnc_canAttach.sqf | 24 +- addons/attach/functions/fnc_canDetach.sqf | 46 ++-- addons/attach/functions/fnc_detach.sqf | 85 ++++--- addons/attach/functions/fnc_openAttachUI.sqf | 86 +++---- addons/attach/functions/fnc_placeApprove.sqf | 66 ++--- addons/attach/functions/fnc_placeCancel.sqf | 46 ++-- 14 files changed, 406 insertions(+), 392 deletions(-) diff --git a/addons/attach/$PBOPREFIX$ b/addons/attach/$PBOPREFIX$ index 1e4e48a4ca..71a2f40af8 100644 --- a/addons/attach/$PBOPREFIX$ +++ b/addons/attach/$PBOPREFIX$ @@ -1 +1 @@ -z\ace\Addons\laser \ No newline at end of file +z\ace\Addons\attach \ No newline at end of file diff --git a/addons/attach/CfgEventHandlers.hpp b/addons/attach/CfgEventHandlers.hpp index 5eca7fa129..4c2b8b16ca 100644 --- a/addons/attach/CfgEventHandlers.hpp +++ b/addons/attach/CfgEventHandlers.hpp @@ -1,5 +1,5 @@ class Extended_PreInit_EventHandlers { - class ADDON { - init = QUOTE( call COMPILE_FILE(XEH_preInit) ); - }; + class ADDON { + init = QUOTE( call COMPILE_FILE(XEH_preInit) ); + }; }; \ No newline at end of file diff --git a/addons/attach/CfgMagazines.hpp b/addons/attach/CfgMagazines.hpp index 293a075d70..282d36b964 100644 --- a/addons/attach/CfgMagazines.hpp +++ b/addons/attach/CfgMagazines.hpp @@ -1,10 +1,10 @@ class CfgMagazines { - class CA_Magazine; - class B_IR_Grenade: CA_Magazine { - ACE_Attachable = 1; - }; - class SmokeShell; - class Chemlight_green: SmokeShell { - ACE_Attachable = 1; - }; + class CA_Magazine; + class B_IR_Grenade: CA_Magazine { + ACE_Attachable = 1; + }; + class SmokeShell; + class Chemlight_green: SmokeShell { + ACE_Attachable = 1; + }; }; \ No newline at end of file diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp index 473b67fcc5..bc1f52988a 100644 --- a/addons/attach/CfgVehicles.hpp +++ b/addons/attach/CfgVehicles.hpp @@ -1,147 +1,147 @@ #define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ - name = #ITEM; \ - count = COUNT; \ - }; + name = #ITEM; \ + count = COUNT; \ + }; #define MACRO_ATTACHTOVEHICLE \ - class ACE_Actions { \ - class GVAR(AttachVehicle) { \ - displayName = "$STR_ACE_Attach_AttachDetach"; \ - condition = QUOTE(([ARR_3(_player, _target, '')] call FUNC(canAttach))); \ - statement = QUOTE( [ARR_2(_player, _target)] call FUNC(openAttachUI);); \ - exceptions[] = {"ACE_Drag_isNotDragging"}; \ - showDisabled = 0; \ - priority = 0; \ - icon = PATHTOF(UI\attach_ca.paa); \ - distance = 4; \ - }; \ - class GVAR(DetachVehicle) { \ - displayName = "$STR_ACE_Attach_Detach"; \ - condition = QUOTE(([ARR_2(_player, _target)] call FUNC(canDetach))); \ - statement = QUOTE( [ARR_2(_player, _target)] call FUNC(detach) ); \ - exceptions[] = {"ACE_Drag_isNotDragging"}; \ - showDisabled = 0; \ - priority = 0; \ - icon = PATHTOF(UI\detach_ca.paa); \ - distance = 4; \ - }; \ - }; + class ACE_Actions { \ + class GVAR(AttachVehicle) { \ + displayName = "$STR_ACE_Attach_AttachDetach"; \ + condition = QUOTE(([ARR_3(_player, _target, '')] call FUNC(canAttach))); \ + statement = QUOTE( [ARR_2(_player, _target)] call FUNC(openAttachUI);); \ + exceptions[] = {"ACE_Drag_isNotDragging"}; \ + showDisabled = 0; \ + priority = 0; \ + icon = PATHTOF(UI\attach_ca.paa); \ + distance = 4; \ + }; \ + class GVAR(DetachVehicle) { \ + displayName = "$STR_ACE_Attach_Detach"; \ + condition = QUOTE(([ARR_2(_player, _target)] call FUNC(canDetach))); \ + statement = QUOTE( [ARR_2(_player, _target)] call FUNC(detach) ); \ + exceptions[] = {"ACE_Drag_isNotDragging"}; \ + showDisabled = 0; \ + priority = 0; \ + icon = PATHTOF(UI\detach_ca.paa); \ + distance = 4; \ + }; \ + }; class CfgVehicles { - class LandVehicle; - class Car: LandVehicle { - MACRO_ATTACHTOVEHICLE - }; - class Tank: LandVehicle { - MACRO_ATTACHTOVEHICLE - }; - class Air; - class Helicopter: Air { - MACRO_ATTACHTOVEHICLE - }; - class Plane: Air { - MACRO_ATTACHTOVEHICLE - }; - class Ship; - class Ship_F: Ship { - MACRO_ATTACHTOVEHICLE - }; - - class Man; - class CAManBase: Man { - class ACE_SelfActions { - class ACE_Equipment { - class GVAR(Attach) { - displayName = "$STR_ACE_Attach_AttachDetach"; - condition = QUOTE(([ARR_3(_player, _player, '')] call FUNC(canAttach))); - statement = QUOTE( [ARR_2(_player, _player)] call FUNC(openAttachUI); ); - exceptions[] = {"ACE_Drag_isNotDragging"}; - showDisabled = 0; - priority = 5; - icon = PATHTOF(UI\attach_ca.paa); - hotkey = "T"; + class LandVehicle; + class Car: LandVehicle { + MACRO_ATTACHTOVEHICLE + }; + class Tank: LandVehicle { + MACRO_ATTACHTOVEHICLE + }; + class Air; + class Helicopter: Air { + MACRO_ATTACHTOVEHICLE + }; + class Plane: Air { + MACRO_ATTACHTOVEHICLE + }; + class Ship; + class Ship_F: Ship { + MACRO_ATTACHTOVEHICLE + }; + + class Man; + class CAManBase: Man { + class ACE_SelfActions { + class ACE_Equipment { + class GVAR(Attach) { + displayName = "$STR_ACE_Attach_AttachDetach"; + condition = QUOTE(([ARR_3(_player, _player, '')] call FUNC(canAttach))); + statement = QUOTE( [ARR_2(_player, _player)] call FUNC(openAttachUI); ); + exceptions[] = {"ACE_Drag_isNotDragging"}; + showDisabled = 0; + priority = 5; + icon = PATHTOF(UI\attach_ca.paa); + hotkey = "T"; + }; + class GVAR(Detach) { + displayName = "$STR_ACE_Attach_Detach"; + condition = QUOTE(([ARR_2(_player, _player)] call FUNC(canDetach))); + statement = QUOTE( [ARR_2(_player, _player)] call FUNC(detach) ); + exceptions[] = {"ACE_Drag_isNotDragging"}; + showDisabled = 0; + priority = 5; + icon = PATHTOF(UI\detach_ca.paa); + hotkey = "T"; + }; + }; }; - class GVAR(Detach) { - displayName = "$STR_ACE_Attach_Detach"; - condition = QUOTE(([ARR_2(_player, _player)] call FUNC(canDetach))); - statement = QUOTE( [ARR_2(_player, _player)] call FUNC(detach) ); - exceptions[] = {"ACE_Drag_isNotDragging"}; - showDisabled = 0; - priority = 5; - icon = PATHTOF(UI\detach_ca.paa); - hotkey = "T"; + }; + + class All; + class ACE_IR_Strobe_Effect: All { + scope = 1; + displayName = "IR Strobe"; + model = "\A3\Weapons_F\empty.p3d"; + simulation = "nvmarker"; + + class NVGMarker { + diffuse[] = {0,0,0}; + ambient[] = {0,0,0}; + brightness = 0.004; + name = "pozicni blik"; + drawLight = 1; + drawLightSize = 0.005; + drawLightCenterSize = 0.003; + activeLight = 0; + blinking=1; + dayLight = 0; + onlyInNvg = 1; + useFlare = 0; }; - }; + side = 7;//-1=NO_SIDE yellow box,3=CIV grey box,4=NEUTRAL yellow box,6=FRIENDLY green box,7=LOGIC no radar signature + accuracy = 1000; + cost = 0; + armor = 500; + threat[] = {0,0,0}; + nameSound = ""; + type = 0; + weapons[] = {}; + magazines[] = {}; + nvTarget = 1; + destrType = "DestructNo"; + brightness = 20; }; - }; - class All; - class ACE_IR_Strobe_Effect: All { - scope = 1; - displayName = "IR Strobe"; - model = "\A3\Weapons_F\empty.p3d"; - simulation = "nvmarker"; + class NATO_Box_Base; + class EAST_Box_Base; + class IND_Box_Base; + class FIA_Box_Base_F; - class NVGMarker { - diffuse[] = {0,0,0}; - ambient[] = {0,0,0}; - brightness = 0.004; - name = "pozicni blik"; - drawLight = 1; - drawLightSize = 0.005; - drawLightCenterSize = 0.003; - activeLight = 0; - blinking=1; - dayLight = 0; - onlyInNvg = 1; - useFlare = 0; + class Box_NATO_Support_F: NATO_Box_Base { + class TransportItems { + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + }; }; - side = 7;//-1=NO_SIDE yellow box,3=CIV grey box,4=NEUTRAL yellow box,6=FRIENDLY green box,7=LOGIC no radar signature - accuracy = 1000; - cost = 0; - armor = 500; - threat[] = {0,0,0}; - nameSound = ""; - type = 0; - weapons[] = {}; - magazines[] = {}; - nvTarget = 1; - destrType = "DestructNo"; - brightness = 20; - }; - class NATO_Box_Base; - class EAST_Box_Base; - class IND_Box_Base; - class FIA_Box_Base_F; - - class Box_NATO_Support_F: NATO_Box_Base { - class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + class Box_East_Support_F: EAST_Box_Base { + class TransportItems { + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + }; }; - }; - class Box_East_Support_F: EAST_Box_Base { - class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + class Box_IND_Support_F: IND_Box_Base { + class TransportItems { + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + }; }; - }; - class Box_IND_Support_F: IND_Box_Base { - class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + class Box_FIA_Support_F: FIA_Box_Base_F { + class TransportItems { + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + }; }; - }; - class Box_FIA_Support_F: FIA_Box_Base_F { - class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + class ACE_Box_Misc: Box_NATO_Support_F { + class TransportItems { + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + }; }; - }; - - class ACE_Box_Misc: Box_NATO_Support_F { - class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) - }; - }; }; \ No newline at end of file diff --git a/addons/attach/CfgWeapons.hpp b/addons/attach/CfgWeapons.hpp index 65ca397ec9..8174f67b38 100644 --- a/addons/attach/CfgWeapons.hpp +++ b/addons/attach/CfgWeapons.hpp @@ -1,16 +1,16 @@ class CfgWeapons { - class ACE_ItemCore; - class InventoryItem_Base_F; + class ACE_ItemCore; + class InventoryItem_Base_F; - class ACE_IR_Strobe_Item: ACE_ItemCore { - displayName = "$STR_ACE_IrStrobe_Name"; - descriptionShort = "$STR_ACE_IrStrobe_Description"; - model = "\A3\weapons_F\ammo\mag_univ.p3d"; - picture = PATHTOF(UI\irstrobe_item.paa); - scope = 2; - ACE_attachable = 1; - class ItemInfo: InventoryItem_Base_F { - mass = 1; + class ACE_IR_Strobe_Item: ACE_ItemCore { + displayName = "$STR_ACE_IrStrobe_Name"; + descriptionShort = "$STR_ACE_IrStrobe_Description"; + model = "\A3\weapons_F\ammo\mag_univ.p3d"; + picture = PATHTOF(UI\irstrobe_item.paa); + scope = 2; + ACE_attachable = 1; + class ItemInfo: InventoryItem_Base_F { + mass = 1; + }; }; - }; }; \ No newline at end of file diff --git a/addons/attach/README.md b/addons/attach/README.md index 7ac36f109d..5fb73d0645 100644 --- a/addons/attach/README.md +++ b/addons/attach/README.md @@ -1,7 +1,8 @@ ace_attach ========== -Introducing the ability to attach various throwables to yourself to mark your position and assist in IFF. +Introducing the ability to attach various throwables to yourself or vehicles, to mark your position and assist in IFF. +Adds item `ACE_IR_Strobe_Item`. ## Maintainers @@ -11,3 +12,4 @@ The people responsible for merging changes to this component or answering potent - [esteldunedain](https://github.com/esteldunedain) - [bux578](https://github.com/bux578) - [KoffeinFlummi](https://github.com/KoffeinFlummi) +- [PabstMirror](https://github.com/PabstMirror) diff --git a/addons/attach/config.cpp b/addons/attach/config.cpp index 4143f6eb44..9accc9f253 100644 --- a/addons/attach/config.cpp +++ b/addons/attach/config.cpp @@ -1,15 +1,15 @@ #include "script_component.hpp" class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {"ACE_IR_Strobe_Item"}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common", "ace_interaction"}; - author[] = {"KoffeinFlummi", "eRazeri", "CAA-Picard"}; - authorUrl = "https://github.com/KoffeinFlummi/"; - VERSION_CONFIG; - }; + class ADDON { + units[] = {}; + weapons[] = {"ACE_IR_Strobe_Item"}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common", "ace_interaction"}; + author[] = {"KoffeinFlummi", "eRazeri", "CAA-Picard"}; + authorUrl = "https://github.com/KoffeinFlummi/"; + VERSION_CONFIG; + }; }; #include "CfgEventHandlers.hpp" diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index 0c6302db71..9fd0cf7952 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -1,18 +1,21 @@ -#include "script_component.hpp" - /* -Author: eRazeri and CAA-Picard - -Attach an item to the unit - -Arguments: -0: OBJECT - unit doing the attaching (player) -1: OBJECT - vehicle that it will be attached to (player or vehicle) -2: STRING - classname of attached item (from CfgMagazines or CfgWeapons) - -Return Value: -none -*/ + * Author: eRazeri and CAA-Picard + * Attach an item to the unit + * + * Arguments: + * 0: unit doing the attach (player) + * 1: vehicle that it will be attached to (player or vehicle) + * 2: Name of the attachable item + * + * Return Value: + * Nothing + * + * Example: + * Nothing + * + * Public: No + */ +#include "script_component.hpp" PARAMS_3(_unit,_attachToVehicle,_itemName); @@ -25,61 +28,61 @@ _onAtachText = ""; switch true do { case (_itemName == "ACE_IR_Strobe_Item"): { - _itemVehClass = "ACE_IR_Strobe_Effect"; - _onAtachText = localize "STR_ACE_Attach_IrStrobe_Attached"; - _selfAttachPosition = [_unit,[0,-0.11,0.16],"pilot"]; //makes it attach to the head a bit better, shoulder is not good for visibility - eRazeri - }; + _itemVehClass = "ACE_IR_Strobe_Effect"; + _onAtachText = localize "STR_ACE_Attach_IrStrobe_Attached"; + _selfAttachPosition = [_unit,[0,-0.11,0.16],"pilot"]; //makes it attach to the head a bit better, shoulder is not good for visibility - eRazeri + }; case (_itemName == "B_IR_Grenade"): { - _itemVehClass = "B_IRStrobe"; - _onAtachText = localize "STR_ACE_Attach_IrGrenade_Attached"; - }; + _itemVehClass = "B_IRStrobe"; + _onAtachText = localize "STR_ACE_Attach_IrGrenade_Attached"; + }; case (_itemName == "O_IR_Grenade"): { - _itemVehClass = "O_IRStrobe"; - _onAtachText = localize "STR_ACE_Attach_IrGrenade_Attached"; - }; + _itemVehClass = "O_IRStrobe"; + _onAtachText = localize "STR_ACE_Attach_IrGrenade_Attached"; + }; case (_itemName == "I_IR_Grenade"): { - _itemVehClass = "I_IRStrobe"; - _onAtachText = localize "STR_ACE_Attach_IrGrenade_Attached"; - }; + _itemVehClass = "I_IRStrobe"; + _onAtachText = localize "STR_ACE_Attach_IrGrenade_Attached"; + }; case (_itemName == "Chemlight_blue" or {_itemName == "Chemlight_green"} or {_itemName == "Chemlight_red"} or {_itemName == "Chemlight_yellow"}): { - _itemVehClass = _itemName; - _onAtachText = localize "STR_ACE_Attach_Chemlight_Attached"; - }; + _itemVehClass = _itemName; + _onAtachText = localize "STR_ACE_Attach_Chemlight_Attached"; + }; }; if (_itemVehClass == "") exitWith {ERROR("no _itemVehClass for Item");}; if (_unit == _attachToVehicle) then { //Self Attachment - _unit removeItem _itemName; // Remove item - _attachedItem = _itemVehClass createVehicle [0,0,0]; - _attachedItem attachTo _selfAttachPosition; - [_onAtachText] call EFUNC(common,displayTextStructured); - _attachToVehicle setVariable ["ACE_AttachedObjects", [_attachedItem], true]; - _attachToVehicle setVariable ["ACE_AttachedItemNames", [_itemName], true]; + _unit removeItem _itemName; // Remove item + _attachedItem = _itemVehClass createVehicle [0,0,0]; + _attachedItem attachTo _selfAttachPosition; + [_onAtachText] call EFUNC(common,displayTextStructured); + _attachToVehicle setVariable ["ACE_AttachedObjects", [_attachedItem], true]; + _attachToVehicle setVariable ["ACE_AttachedItemNames", [_itemName], true]; } else { - GVAR(setupObject) = _itemVehClass createVehicleLocal [0,0,-10000]; - GVAR(setupObject) enableSimulationGlobal false; - GVAR(SetupPlacmentText) = _onAtachText; - GVAR(SetupPlacmentItem) = _itemName; - GVAR(SetupAttachVehicle) = _attachToVehicle; - GVAR(placer) = _unit; - [_unit, QGVAR(vehAttach), true] call EFUNC(common,setForceWalkStatus); + GVAR(setupObject) = _itemVehClass createVehicleLocal [0,0,-10000]; + GVAR(setupObject) enableSimulationGlobal false; + GVAR(SetupPlacmentText) = _onAtachText; + GVAR(SetupPlacmentItem) = _itemName; + GVAR(SetupAttachVehicle) = _attachToVehicle; + GVAR(placer) = _unit; + [_unit, QGVAR(vehAttach), true] call EFUNC(common,setForceWalkStatus); - [QGVAR(PlacementEachFrame),"OnEachFrame", { - private "_player"; - _player = ACE_player; - //Stop if player switch or player gets to far from vehicle - if ((GVAR(placer) != _player) || {(_player distance GVAR(SetupAttachVehicle)) > 7}) exitWith { - call FUNC(placeCancel); - }; - GVAR(pfeh_running) = true; - _pos = (ASLtoATL eyePos _player) vectorAdd (positionCameraToWorld [0,0,1] vectorDiff positionCameraToWorld [0,0,0]); - GVAR(setupObject) setPosATL _pos; - }] call BIS_fnc_addStackedEventHandler; + [QGVAR(PlacementEachFrame),"OnEachFrame", { + private "_player"; + _player = ACE_player; + //Stop if player switch or player gets to far from vehicle + if ((GVAR(placer) != _player) || {(_player distance GVAR(SetupAttachVehicle)) > 7}) exitWith { + call FUNC(placeCancel); + }; + GVAR(pfeh_running) = true; + _pos = (ASLtoATL eyePos _player) vectorAdd (positionCameraToWorld [0,0,1] vectorDiff positionCameraToWorld [0,0,0]); + GVAR(setupObject) setPosATL _pos; + }] call BIS_fnc_addStackedEventHandler; - //had to delay the mouseHint, not sure why - [{[localize "STR_ACE_Attach_PlaceAction", localize "STR_ACE_Attach_CancelAction"] call EFUNC(interaction,showMouseHint)}, [], 0, 0] call EFUNC(common,waitAndExecute); - - _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {GVAR(pfeh_running) AND !isNull (GVAR(setupObject))}, {call FUNC(placeApprove);}] call EFUNC(common,AddActionEventHandler)]; - _unit setVariable [QGVAR(cancelActionEH), [_unit, "MenuBack", {GVAR(pfeh_running) AND !isNull (GVAR(setupObject))}, {call FUNC(placeCancel);}] call EFUNC(common,AddActionEventHandler)]; + //had to delay the mouseHint, not sure why + [{[localize "STR_ACE_Attach_PlaceAction", localize "STR_ACE_Attach_CancelAction"] call EFUNC(interaction,showMouseHint)}, [], 0, 0] call EFUNC(common,waitAndExecute); + + _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {GVAR(pfeh_running) AND !isNull (GVAR(setupObject))}, {call FUNC(placeApprove);}] call EFUNC(common,AddActionEventHandler)]; + _unit setVariable [QGVAR(cancelActionEH), [_unit, "MenuBack", {GVAR(pfeh_running) AND !isNull (GVAR(setupObject))}, {call FUNC(placeCancel);}] call EFUNC(common,AddActionEventHandler)]; }; diff --git a/addons/attach/functions/fnc_canAttach.sqf b/addons/attach/functions/fnc_canAttach.sqf index 9dc4229c64..ac646ef700 100644 --- a/addons/attach/functions/fnc_canAttach.sqf +++ b/addons/attach/functions/fnc_canAttach.sqf @@ -1,17 +1,21 @@ -#include "script_component.hpp" - /* * Author: commy2 - * * Check if a unit can attach a specific item. - * - * Argument: - * 0: Unit that wants to attach the object (Object) - * 1: Name of the attachable item (String) - * - * Return value: - * Boolean (Bool) + * + * Arguments: + * 0: unit doing the attach (player) + * 1: vehicle that it will be attached to (player or vehicle) + * 2: Name of the attachable item + * + * Return Value: + * Boolean + * + * Example: + * Nothing + * + * Public: No */ +#include "script_component.hpp" PARAMS_3(_unit,_attachToVehicle,_item); diff --git a/addons/attach/functions/fnc_canDetach.sqf b/addons/attach/functions/fnc_canDetach.sqf index bba323d2e3..d099d2035e 100644 --- a/addons/attach/functions/fnc_canDetach.sqf +++ b/addons/attach/functions/fnc_canDetach.sqf @@ -1,16 +1,20 @@ -#include "script_component.hpp" - /* -* Author: commy2 -* -* Check if a unit has an item attached and if it can remove that item. -* -* Argument: -* 0: Unit that wants to detach something (Object) -* -* Return value: -* Boolean (Bool) -*/ + * Author: commy2 + * Check if a unit has an item attached and if it can remove that item. + * + * Arguments: + * 0: unit doing the detaching (player) + * 1: vehicle that it will be detached from (player or vehicle) + * + * Return Value: + * Boolean + * + * Example: + * Nothing + * + * Public: No + */ +#include "script_component.hpp" private ["_attachedObjects", "_inRange", "_unitPos", "_objectPos"]; @@ -20,16 +24,16 @@ _attachedObjects = _attachToVehicle getVariable ["ACE_AttachedObjects", []]; _inRange = false; if (_unit == _attachToVehicle) then { - _inRange = (count _attachedObjects) > 0; + _inRange = (count _attachedObjects) > 0; } else { - //Scan if unit is within range (using 2d distance) - _unitPos = getPos _unit; - _unitPos set [2,0]; - { - _objectPos = getPos _x; - _objectPos set [2, 0]; - if ((_objectPos distance _unitPos) < 4) exitWith {_inRange = true}; - } forEach _attachedObjects; + //Scan if unit is within range (using 2d distance) + _unitPos = getPos _unit; + _unitPos set [2,0]; + { + _objectPos = getPos _x; + _objectPos set [2, 0]; + if ((_objectPos distance _unitPos) < 4) exitWith {_inRange = true}; + } forEach _attachedObjects; }; (canStand _unit) && _inRange && {alive _attachToVehicle} diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf index 7f982654b5..b18cec09bd 100644 --- a/addons/attach/functions/fnc_detach.sqf +++ b/addons/attach/functions/fnc_detach.sqf @@ -1,17 +1,20 @@ -#include "script_component.hpp" - /* -Author: eRazeri and CAA-Picard - -Detach an item from a unit - -Arguments: -0: OBJECT - unit doing the attaching (player) -1: OBJECT - vehicle that it will be detached from (player or vehicle) - -Return Value: -none -*/ + * Author: eRazeri and CAA-Picard + * Detach an item from a unit + * + * Arguments: + * 0: unit doing the attaching (player) + * 1: vehicle that it will be detached from (player or vehicle) + * + * Return Value: + * Nothing + * + * Example: + * Nothing + * + * Public: No + */ +#include "script_component.hpp" private ["_itemName", "_count", "_attachedItem", "_fnc_detachDelay"]; @@ -29,14 +32,14 @@ _minDistance = 1000; _unitPos = getPos _unit; _unitPos set [2,0]; { - _objectPos = getPos _x; - _objectPos set [2, 0]; - if ((_objectPos distance _unitPos) < _minDistance) then { - _minDistance = (_objectPos distance _unitPos); - _attachedObject = _x; - _itemName = _attachedItemsArray select _forEachIndex; - _attachedIndex = _forEachIndex; - }; + _objectPos = getPos _x; + _objectPos set [2, 0]; + if ((_objectPos distance _unitPos) < _minDistance) then { + _minDistance = (_objectPos distance _unitPos); + _attachedObject = _x; + _itemName = _attachedItemsArray select _forEachIndex; + _attachedIndex = _forEachIndex; + }; } forEach _attachedObjectsArray; // Check if unit has an attached item @@ -46,21 +49,21 @@ if ((isNull _attachedObject) || {_itemName == ""}) exitWith {ERROR("Could not fi _count = (count items _unit) + (count magazines _unit); _unit addItem _itemName; if ((count items _unit) + (count magazines _unit) <= _count) exitWith { - [localize "STR_ACE_Attach_Inventory_Full"] call EFUNC(common,displayTextStructured); + [localize "STR_ACE_Attach_Inventory_Full"] call EFUNC(common,displayTextStructured); }; if (_itemName == "B_IR_Grenade" or _itemName == "O_IR_Grenade" or _itemName == "I_IR_Grenade") then { - // Hack for dealing with X_IR_Grenade effect not dissapearing on deleteVehicle - detach _attachedObject; - _attachedObject setPos [getPos _unit select 0, getPos _unit select 1, ((getPos _unit select 2) - 1000)]; - // Delete attached item after 0.5 seconds - _fnc_detachDelay = { - deleteVehicle (_this select 0); - }; - [_fnc_detachDelay, [_attachedObject], 0.5, 0] call EFUNC(common,waitAndExecute); + // Hack for dealing with X_IR_Grenade effect not dissapearing on deleteVehicle + detach _attachedObject; + _attachedObject setPos [getPos _unit select 0, getPos _unit select 1, ((getPos _unit select 2) - 1000)]; + // Delete attached item after 0.5 seconds + _fnc_detachDelay = { + deleteVehicle (_this select 0); + }; + [_fnc_detachDelay, [_attachedObject], 0.5, 0] call EFUNC(common,waitAndExecute); } else { - // Delete attached item - deleteVehicle _attachedObject; + // Delete attached item + deleteVehicle _attachedObject; }; // Reset unit variables @@ -71,13 +74,13 @@ _attachToVehicle setVariable ["ACE_AttachedItemNames", _attachedItemsArray, true // Display message switch true do { - case (_itemName == "ACE_IR_Strobe_Item") : { - [localize "STR_ACE_Attach_IrStrobe_Detached"] call EFUNC(common,displayTextStructured); - }; - case (_itemName == "B_IR_Grenade" or _itemName == "O_IR_Grenade" or _itemName == "I_IR_Grenade") : { - [localize "STR_ACE_Attach_IrGrenade_Detached"] call EFUNC(common,displayTextStructured); - }; - case (_itemName == "Chemlight_blue" or {_itemName == "Chemlight_green"} or {_itemName == "Chemlight_red"} or {_itemName == "Chemlight_yellow"}) : { - [localize "STR_ACE_Attach_Chemlight_Detached"] call EFUNC(common,displayTextStructured); - }; +case (_itemName == "ACE_IR_Strobe_Item") : { + [localize "STR_ACE_Attach_IrStrobe_Detached"] call EFUNC(common,displayTextStructured); + }; +case (_itemName == "B_IR_Grenade" or _itemName == "O_IR_Grenade" or _itemName == "I_IR_Grenade") : { + [localize "STR_ACE_Attach_IrGrenade_Detached"] call EFUNC(common,displayTextStructured); + }; +case (_itemName == "Chemlight_blue" or {_itemName == "Chemlight_green"} or {_itemName == "Chemlight_red"} or {_itemName == "Chemlight_yellow"}) : { + [localize "STR_ACE_Attach_Chemlight_Detached"] call EFUNC(common,displayTextStructured); + }; }; diff --git a/addons/attach/functions/fnc_openAttachUI.sqf b/addons/attach/functions/fnc_openAttachUI.sqf index db1a5d1513..6521e43fbe 100644 --- a/addons/attach/functions/fnc_openAttachUI.sqf +++ b/addons/attach/functions/fnc_openAttachUI.sqf @@ -1,21 +1,21 @@ +/* + * Author: Garth de Wet (LH) + * Opens the UI for attaching objects. + * + * Arguments: + * 0: unit + * 1: target + * + * Return Value: + * Nothing + * + * Example: + * Nothing + * + * Public: No + */ #include "script_component.hpp" -/* - Author: Garth de Wet (LH) - - Description: - Opens the UI for attaching objects. - - Parameters: - 0: OBJECT - unit - 1: OBJECT - target - - Returns: - Nothing - - Example: - [player] call ACE_Attach_fnc_openAttachUI; -*/ private ["_actions", "_attachables", "_item"]; PARAMS_2(_unit,_target); @@ -25,43 +25,43 @@ _listed = []; _attachables = magazines _unit; _actions = [localize "STR_ACE_Attach_AttachDetach", localize "STR_ACE_Attach_Attach"] call EFUNC(interaction,prepareSelectMenu); { - if !(_x in _listed) then { - _item = ConfigFile >> "CfgMagazines" >> _x; - if (getNumber (_item >> "ACE_Attachable") == 1) then { - _actions = [ - _actions, - getText(_item >> "displayName"), - getText(_item >> "picture"), - _x - ] call EFUNC(interaction,addSelectableItem); + if !(_x in _listed) then { + _item = ConfigFile >> "CfgMagazines" >> _x; + if (getNumber (_item >> "ACE_Attachable") == 1) then { + _actions = [ + _actions, + getText(_item >> "displayName"), + getText(_item >> "picture"), + _x + ] call EFUNC(interaction,addSelectableItem); + }; + _listed pushBack _x; }; - _listed pushBack _x; - }; } forEach _attachables; _attachables = items _unit; { - if !(_x in _listed) then { - _item = ConfigFile >> "CfgWeapons" >> _x; - if (getNumber (_item >> "ACE_Attachable") == 1) then { - _actions = [ - _actions, - getText(_item >> "displayName"), - getText(_item >> "picture"), - _x - ] call EFUNC(interaction,addSelectableItem); + if !(_x in _listed) then { + _item = ConfigFile >> "CfgWeapons" >> _x; + if (getNumber (_item >> "ACE_Attachable") == 1) then { + _actions = [ + _actions, + getText(_item >> "displayName"), + getText(_item >> "picture"), + _x + ] call EFUNC(interaction,addSelectableItem); + }; + _listed pushBack _x; }; - _listed pushBack _x; - }; } forEach _attachables; [ - _actions, - { +_actions, +{ [ACE_player, GVAR(attachTarget), _this] call FUNC(attach); call EFUNC(interaction,hideMenu); - }, - { +}, +{ call EFUNC(interaction,hideMenu); if !(profileNamespace getVariable [QEGVAR(interaction,AutoCloseMenu), false]) then {"Default" call EFUNC(interaction,openMenuSelf)}; - } +} ] call EFUNC(interaction,openSelectMenu); diff --git a/addons/attach/functions/fnc_placeApprove.sqf b/addons/attach/functions/fnc_placeApprove.sqf index 687ce472c5..ceb48de9b5 100644 --- a/addons/attach/functions/fnc_placeApprove.sqf +++ b/addons/attach/functions/fnc_placeApprove.sqf @@ -1,24 +1,26 @@ /* -Name: FUNC(placeApprove) -Author(s): - Pabst Mirror (based on Explosive attach by Garth de Wet (LH)) -Description: - Approves placement of the lightObject, releases the placement object for it to settle in a location -Parameters: - Nothing -Returns: - Nothing -Example: - call FUNC(placeApprove); -*/ + * Author: Pabst Mirror (based on Explosive attach by Garth de Wet (LH)) + * Approves placement of the lightObject, scans for an appropriate location and attaches + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * Nothing + * + * Public: No + */ #include "script_component.hpp" private ["_setupObject", "_setupClassname", "_itemClassname", "_placementText", "_attachToVehicle", "_placer", "_startingPosition", "_startingOffset", "_distanceFromCenter", "_closeInUnitVector", "_keepGoingCloser", "_closeInDistance", "_endPosTestOffset", "_endPosTest", "_startingPosShifted", "_startASL", "_endPosShifted", "_endASL", "_attachedObject", "_currentObjects", "_currentItemNames"]; if (GVAR(pfeh_running)) then { - [QGVAR(PlacementEachFrame),"OnEachFrame"] call BIS_fnc_removeStackedEventHandler; - GVAR(pfeh_running) = false; + [QGVAR(PlacementEachFrame),"OnEachFrame"] call BIS_fnc_removeStackedEventHandler; + GVAR(pfeh_running) = false; }; _setupObject = GVAR(setupObject); @@ -54,26 +56,26 @@ _keepGoingCloser = true; _closeInDistance = 0; while {_keepGoingCloser} do { - if (_closeInDistance >= _distanceFromCenter) exitWith {}; + if (_closeInDistance >= _distanceFromCenter) exitWith {}; - _closeInDistance = _closeInDistance + 0.01; //10mm each step - _endPosTestOffset = _startingOffset vectorAdd (_closeInUnitVector vectorMultiply _closeInDistance); - _endPosTestOffset set [2, (_startingOffset select 2)]; - _endPosTest = _attachToVehicle modelToWorld _endPosTestOffset; + _closeInDistance = _closeInDistance + 0.01; //10mm each step + _endPosTestOffset = _startingOffset vectorAdd (_closeInUnitVector vectorMultiply _closeInDistance); + _endPosTestOffset set [2, (_startingOffset select 2)]; + _endPosTest = _attachToVehicle modelToWorld _endPosTestOffset; - { - _startingPosShifted = _startingPosition vectorAdd _x; - _startASL = if (surfaceIsWater _startingPosShifted) then {_startingPosShifted} else {ATLtoASL _startingPosShifted}; { - _endPosShifted = _endPosTest vectorAdd _x; - _endASL = if (surfaceIsWater _startingPosShifted) then {_endPosShifted} else {ATLtoASL _endPosShifted}; - - //Uncomment to see the lazor show, and see how the scanning works: - drawLine3D [_startingPosShifted, _endPosShifted, [1,0,0,1]]; + _startingPosShifted = _startingPosition vectorAdd _x; + _startASL = if (surfaceIsWater _startingPosShifted) then {_startingPosShifted} else {ATLtoASL _startingPosShifted}; + { + _endPosShifted = _endPosTest vectorAdd _x; + _endASL = if (surfaceIsWater _startingPosShifted) then {_endPosShifted} else {ATLtoASL _endPosShifted}; - if (_attachToVehicle in lineIntersectsWith [_startASL, _endASL, _placer, _setupObject]) exitWith {_keepGoingCloser = false}; - } forEach [[0,0,0.045], [0,0,-0.045], [0,0.045,0], [0,-0.045,0], [0.045,0,0], [-0.045,0,0]]; - } forEach [[0,0,0], [0,0,0.05], [0,0,-0.05]]; + //Uncomment to see the lazor show, and see how the scanning works: + drawLine3D [_startingPosShifted, _endPosShifted, [1,0,0,1]]; + + if (_attachToVehicle in lineIntersectsWith [_startASL, _endASL, _placer, _setupObject]) exitWith {_keepGoingCloser = false}; + } forEach [[0,0,0.045], [0,0,-0.045], [0,0.045,0], [0,-0.045,0], [0.045,0,0], [-0.045,0,0]]; + } forEach [[0,0,0], [0,0,0.05], [0,0,-0.05]]; }; //Delete Local Placement Object @@ -81,8 +83,8 @@ deleteVehicle _setupObject; //Checks if ((_closeInDistance >= _distanceFromCenter) || (!([_placer,_attachToVehicle,_itemClassname] call FUNC(canAttach)))) exitWith { - TRACE_2("no valid spot found",_closeInDistance,_distanceFromCenter); - [localize "STR_ACE_Attach_Failed"] call EFUNC(common,displayTextStructured); + TRACE_2("no valid spot found",_closeInDistance,_distanceFromCenter); + [localize "STR_ACE_Attach_Failed"] call EFUNC(common,displayTextStructured); }; //Move it out slightly, for visability sake (better to look a little funny than be embedded//sunk in the hull) diff --git a/addons/attach/functions/fnc_placeCancel.sqf b/addons/attach/functions/fnc_placeCancel.sqf index 12577512e8..3abdf848ba 100644 --- a/addons/attach/functions/fnc_placeCancel.sqf +++ b/addons/attach/functions/fnc_placeCancel.sqf @@ -1,35 +1,27 @@ /* - Name: FUNC(placeCancel) - - Author(s): - Pabst Mirror (based on Explosive attach by Garth de Wet (LH)) - - Description: - Cancels placement of the lightObject - - Parameters: - Nothing - - Returns: - Nothing - - Example: - call FUNC(placeCancel); -*/ + * Author: Pabst Mirror (based on Explosive attach by Garth de Wet (LH)) + * Cancels placement of the lightObject + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * Nothing + * + * Public: No + */ #include "script_component.hpp" if (GVAR(pfeh_running)) then { - [QGVAR(PlacementEachFrame),"OnEachFrame"] call BIS_fnc_removeStackedEventHandler; - GVAR(pfeh_running) = false; + [QGVAR(PlacementEachFrame),"OnEachFrame"] call BIS_fnc_removeStackedEventHandler; + GVAR(pfeh_running) = false; }; if (!isNull (GVAR(setupObject))) then { - deleteVehicle GVAR(setupObject); + deleteVehicle GVAR(setupObject); }; -GVAR(SetupPlacmentItem) = ""; -GVAR(SetupPlacmentText) = ""; -GVAR(setupObject) = objNull; -GVAR(SetupAttachVehicle) = objNull; - [GVAR(placer), QGVAR(vehAttach), false] call EFUNC(common,setForceWalkStatus); call EFUNC(interaction,hideMouseHint); @@ -37,3 +29,7 @@ call EFUNC(interaction,hideMouseHint); [GVAR(placer), "MenuBack", GVAR(placer) getVariable [QGVAR(cancelActionEH), -1]] call EFUNC(common,removeActionEventHandler); GVAR(placer) = objNull; +GVAR(SetupPlacmentItem) = ""; +GVAR(SetupPlacmentText) = ""; +GVAR(setupObject) = objNull; +GVAR(SetupAttachVehicle) = objNull; From 2440e4fa69327c4069f8d8413f08554a77423735 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Mon, 2 Feb 2015 10:35:17 +0200 Subject: [PATCH 042/211] Fixed incorrect indenting with headers in explosives. --- addons/explosives/XEH_postInit.sqf | 30 ++++++------- addons/explosives/XEH_preInit.sqf | 30 ++++++------- .../explosives/functions/fnc_addClacker.sqf | 36 +++++++-------- addons/explosives/functions/fnc_canDefuse.sqf | 30 ++++++------- .../explosives/functions/fnc_canDetonate.sqf | 30 ++++++------- .../functions/fnc_defuseExplosive.sqf | 32 +++++++------- .../functions/fnc_detonateExplosive.sqf | 40 ++++++++--------- .../functions/fnc_getDetonators.sqf | 30 ++++++------- .../functions/fnc_getPlacedExplosives.sqf | 34 +++++++------- .../functions/fnc_handleScrollWheel.sqf | 30 ++++++------- .../functions/fnc_hasExplosives.sqf | 30 ++++++------- .../functions/fnc_hasPlacedExplosives.sqf | 30 ++++++------- addons/explosives/functions/fnc_module.sqf | 30 ++++++------- .../functions/fnc_openDetonateUI.sqf | 32 +++++++------- .../explosives/functions/fnc_openPlaceUI.sqf | 30 ++++++------- .../functions/fnc_openTimerSetUI.sqf | 30 ++++++------- .../functions/fnc_openTransmitterUI.sqf | 30 ++++++------- .../functions/fnc_openTriggerSelectionUI.sqf | 30 ++++++------- .../functions/fnc_placeExplosive.sqf | 44 +++++++++---------- .../functions/fnc_place_Approve.sqf | 32 +++++++------- .../explosives/functions/fnc_place_Cancel.sqf | 30 ++++++------- .../functions/fnc_selectTrigger.sqf | 32 +++++++------- .../explosives/functions/fnc_setPosition.sqf | 34 +++++++------- .../functions/fnc_setupExplosive.sqf | 36 +++++++-------- .../explosives/functions/fnc_startDefuse.sqf | 32 +++++++------- .../explosives/functions/fnc_startTimer.sqf | 32 +++++++------- .../explosives/functions/fnc_triggerType.sqf | 30 ++++++------- 27 files changed, 406 insertions(+), 460 deletions(-) diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index 69a5643aad..2ede878a37 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -1,20 +1,18 @@ /* -* XEH_postInit.sqf -* -* Author: Garth 'L-H' de Wet -* Initialises the player object for the explosive system. -* -* Arguments: -* None -* -* Return Value: -* None -* -* Example: -* None -* -* Public: No -*/ + * Author: Garth 'L-H' de Wet + * Initialises the player object for the explosive system. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * None + * + * Public: No + */ #include "script_component.hpp" if !(hasInterface) exitWith {}; GVAR(PlacedCount) = 0; diff --git a/addons/explosives/XEH_preInit.sqf b/addons/explosives/XEH_preInit.sqf index 9b2db0a5b6..801ded6615 100644 --- a/addons/explosives/XEH_preInit.sqf +++ b/addons/explosives/XEH_preInit.sqf @@ -1,20 +1,18 @@ /* -* XEH_preInit.sqf -* -* Author: Garth 'L-H' de Wet -* Initialises the explosives system -* -* Arguments: -* None -* -* Return Value: -* None -* -* Example: -* None -* -* Public: No -*/ + * Author: Garth 'L-H' de Wet + * Initialises the explosives system + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * None + * + * Public: No + */ #include "script_component.hpp" ADDON = false; diff --git a/addons/explosives/functions/fnc_addClacker.sqf b/addons/explosives/functions/fnc_addClacker.sqf index 40ba6f58ae..4746dc66f5 100644 --- a/addons/explosives/functions/fnc_addClacker.sqf +++ b/addons/explosives/functions/fnc_addClacker.sqf @@ -1,23 +1,21 @@ /* -* fnc_addClacker.sqf -* -* Author: Garth 'L-H' de Wet -* Adds an explosive as a clacker item to the passed unit if the unit has the required item. -* -* Arguments: -* 0: Unit -* 1: Explosive -* 2: Magazine classname -* 3: Extra variables -* -* Return Value: -* None -* -* Example: -* [player, _explosive, "SatchelCharge_Remote_Mag", [ConfigFile >> "CfgACE_Triggers" >> "Command"]] call ACE_Explosives_fnc_addClacker; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Adds an explosive as a clacker item to the passed unit if the unit has the required item. + * + * Arguments: + * 0: Unit + * 1: Explosive + * 2: Magazine classname + * 3: Extra variables + * + * Return Value: + * None + * + * Example: + * [player, _explosive, "SatchelCharge_Remote_Mag", [ConfigFile >> "CfgACE_Triggers" >> "Command"]] call ACE_Explosives_fnc_addClacker; + * + * Public: Yes + */ #include "script_component.hpp" private ["_unit", "_explosive", "_clacker", "_config", "_magazineClass", "_requiredItems", "_hasRequired"]; _unit = _this select 0; diff --git a/addons/explosives/functions/fnc_canDefuse.sqf b/addons/explosives/functions/fnc_canDefuse.sqf index 7c302e6e7a..566363c2ad 100644 --- a/addons/explosives/functions/fnc_canDefuse.sqf +++ b/addons/explosives/functions/fnc_canDefuse.sqf @@ -1,20 +1,18 @@ /* -* fnc_canDefuse.sqf -* -* Author: Garth 'L-H' de Wet -* Whether a unit can perform the defuse action -* -* Arguments: -* 0: Unit -* -* Return Value: -* Able to defuse -* -* Example: -* if ([player] call ACE_Explosives_fnc_canDefuse) then {hint "Can Defuse";}; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Whether a unit can perform the defuse action + * + * Arguments: + * 0: Unit + * + * Return Value: + * Able to defuse + * + * Example: + * if ([player] call ACE_Explosives_fnc_canDefuse) then {hint "Can Defuse";}; + * + * Public: Yes + */ #include "script_component.hpp" private "_unit"; _unit = _this select 0; diff --git a/addons/explosives/functions/fnc_canDetonate.sqf b/addons/explosives/functions/fnc_canDetonate.sqf index 7d81425c46..0b96f66f27 100644 --- a/addons/explosives/functions/fnc_canDetonate.sqf +++ b/addons/explosives/functions/fnc_canDetonate.sqf @@ -1,20 +1,18 @@ /* -* fnc_canDetonate.sqf -* -* Author: Garth 'L-H' de Wet -* Whether the unit is able to detonate explosives -* -* Arguments: -* 0: Unit -* -* Return Value: -* Able to detonate -* -* Example: -* if ([player] call ACE_Explosives_fnc_canDetonate) then { hint "Can Detonate"; }; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Whether the unit is able to detonate explosives + * + * Arguments: + * 0: Unit + * + * Return Value: + * Able to detonate + * + * Example: + * if ([player] call ACE_Explosives_fnc_canDetonate) then { hint "Can Detonate"; }; + * + * Public: Yes + */ #include "script_component.hpp" private "_unit"; _unit = _this select 0; diff --git a/addons/explosives/functions/fnc_defuseExplosive.sqf b/addons/explosives/functions/fnc_defuseExplosive.sqf index 09444009c0..5836c9e210 100644 --- a/addons/explosives/functions/fnc_defuseExplosive.sqf +++ b/addons/explosives/functions/fnc_defuseExplosive.sqf @@ -1,21 +1,19 @@ /* -* fnc_defuseExplosive.sqf -* -* Author: Garth 'L-H' de Wet -* Causes the unit to defuse the passed explosive. -* -* Arguments: -* 0: Unit -* 1: Explosive -* -* Return Value: -* None -* -* Example: -* [player, ACE_Interaction_Target] call ACE_Explosives_fnc_defuseExplosive; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Causes the unit to defuse the passed explosive. + * + * Arguments: + * 0: Unit + * 1: Explosive + * + * Return Value: + * None + * + * Example: + * [player, ACE_Interaction_Target] call ACE_Explosives_fnc_defuseExplosive; + * + * Public: Yes + */ #include "script_component.hpp" private ["_unit", "_explosive"]; _unit = _this select 0; diff --git a/addons/explosives/functions/fnc_detonateExplosive.sqf b/addons/explosives/functions/fnc_detonateExplosive.sqf index 5d0d71c800..f28ad14b62 100644 --- a/addons/explosives/functions/fnc_detonateExplosive.sqf +++ b/addons/explosives/functions/fnc_detonateExplosive.sqf @@ -1,25 +1,23 @@ /* -* fnc_detonateExplosive.sqf -* -* Author: Garth 'L-H' de Wet -* Causes the unit to defuse the passed explosive. -* -* Arguments: -* 0: Unit -* 1: Max range (-1 to ignore) -* 2: Explosive -* 0: Explosive -* 1: Fuse time -* -* Return Value: -* None -* -* Example: -* [player, 100, [Explosive, 1]] call ACE_Explosives_fnc_detonateExplosive; // has to be within range -* [player, -1, [Explosive, 1]] call ACE_Explosives_fnc_detonateExplosive; // range ignored. -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Causes the unit to defuse the passed explosive. + * + * Arguments: + * 0: Unit + * 1: Max range (-1 to ignore) + * 2: Explosive + * 0: Explosive + * 1: Fuse time + * + * Return Value: + * None + * + * Example: + * [player, 100, [Explosive, 1]] call ACE_Explosives_fnc_detonateExplosive; // has to be within range + * [player, -1, [Explosive, 1]] call ACE_Explosives_fnc_detonateExplosive; // range ignored. + * + * Public: Yes + */ #include "script_component.hpp" private ["_item","_result", "_ignoreRange", "_unit", "_range"]; _unit = _this select 0; diff --git a/addons/explosives/functions/fnc_getDetonators.sqf b/addons/explosives/functions/fnc_getDetonators.sqf index b5146e8249..83e0087acc 100644 --- a/addons/explosives/functions/fnc_getDetonators.sqf +++ b/addons/explosives/functions/fnc_getDetonators.sqf @@ -1,20 +1,18 @@ /* -* fnc_getDetonators.sqf -* -* Author: Garth 'L-H' de Wet -* Returns all the detonators of the unit -* -* Arguments: -* 0: Unit -* -* Return Value: -* Configs of all detonators -* -* Example: -* _detonators = [player] call ACE_Explosives_fnc_getDetonators; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Returns all the detonators of the unit + * + * Arguments: + * 0: Unit + * + * Return Value: + * Configs of all detonators + * + * Example: + * _detonators = [player] call ACE_Explosives_fnc_getDetonators; + * + * Public: Yes + */ #include "script_component.hpp" private ["_unit", "_items", "_result", "_config"]; _unit = _this select 0; diff --git a/addons/explosives/functions/fnc_getPlacedExplosives.sqf b/addons/explosives/functions/fnc_getPlacedExplosives.sqf index df449ac6af..4ebcdb8f0b 100644 --- a/addons/explosives/functions/fnc_getPlacedExplosives.sqf +++ b/addons/explosives/functions/fnc_getPlacedExplosives.sqf @@ -1,22 +1,20 @@ /* -* fnc_getPlacedExplosives.sqf -* -* Author: Garth 'L-H' de Wet -* Gets all placed explosives by unit, optionally filtered by specific trigger type. -* -* Arguments: -* 0: Unit -* 1: Trigger classname - filter (optional) -* -* Return Value: -* Explosives -* -* Example: -* _allExplosives = [player] call ACE_Explosives_fnc_getPlacedExplosives; -* _deadmanExplosives = [player, "DeadManSwitch"] call ACE_Explosives_fnc_getPlacedExplosives; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Gets all placed explosives by unit, optionally filtered by specific trigger type. + * + * Arguments: + * 0: Unit + * 1: Trigger classname - filter (optional) + * + * Return Value: + * Explosives + * + * Example: + * _allExplosives = [player] call ACE_Explosives_fnc_getPlacedExplosives; + * _deadmanExplosives = [player, "DeadManSwitch"] call ACE_Explosives_fnc_getPlacedExplosives; + * + * Public: Yes + */ #include "script_component.hpp" private ["_unit", "_clackerList", "_adjustedList", "_list", "_filter"]; _unit = _this select 0; diff --git a/addons/explosives/functions/fnc_handleScrollWheel.sqf b/addons/explosives/functions/fnc_handleScrollWheel.sqf index b7de62c7a0..8c842b8a05 100644 --- a/addons/explosives/functions/fnc_handleScrollWheel.sqf +++ b/addons/explosives/functions/fnc_handleScrollWheel.sqf @@ -1,20 +1,18 @@ /* -* fnc_handleScrollWheel.sqf -* -* Author: Garth 'L-H' de Wet -* Handles rotating of Explosives -* -* Arguments: -* Amount scrolled -* -* Return Value: -* Handled -* -* Example: -* 1.2 call ACE_Explosives_fnc_HandleScrollWheel; -* -* Public: No -*/ + * Author: Garth 'L-H' de Wet + * Handles rotating of Explosives + * + * Arguments: + * Amount scrolled + * + * Return Value: + * Handled + * + * Example: + * 1.2 call ACE_Explosives_fnc_HandleScrollWheel; + * + * Public: No + */ #include "script_component.hpp" private ["_obj"]; if (isNull(GVAR(Setup)) || {ACE_Modifier == 0} || !GVAR(pfeh_running)) exitWith {false}; diff --git a/addons/explosives/functions/fnc_hasExplosives.sqf b/addons/explosives/functions/fnc_hasExplosives.sqf index cbcb3905c8..ef1deef28a 100644 --- a/addons/explosives/functions/fnc_hasExplosives.sqf +++ b/addons/explosives/functions/fnc_hasExplosives.sqf @@ -1,20 +1,18 @@ /* -* fnc_hasExplosives.sqf -* -* Author: Garth 'L-H' de Wet -* Whether the passed unit has any explosives on them. -* -* Arguments: -* 0: Unit -* -* Return Value: -* The unit has explosives -* -* Example: -* _hasExplosives = [player] call ACE_Explosives_fnc_hasExplosives; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Whether the passed unit has any explosives on them. + * + * Arguments: + * 0: Unit + * + * Return Value: + * The unit has explosives + * + * Example: + * _hasExplosives = [player] call ACE_Explosives_fnc_hasExplosives; + * + * Public: Yes + */ #include "script_component.hpp" private ["_unit", "_result", "_magazines"]; _result = false; diff --git a/addons/explosives/functions/fnc_hasPlacedExplosives.sqf b/addons/explosives/functions/fnc_hasPlacedExplosives.sqf index dd25795296..4a6ccc9de8 100644 --- a/addons/explosives/functions/fnc_hasPlacedExplosives.sqf +++ b/addons/explosives/functions/fnc_hasPlacedExplosives.sqf @@ -1,19 +1,17 @@ /* -* fnc_hasPlacedExplosives.sqf -* -* Author: Garth 'L-H' de Wet -* Whether the passed unit has placed any explosives or has a clacker that was used when explosives were placed. -* -* Arguments: -* 0: Unit -* -* Return Value: -* Configs of all detonators -* -* Example: -* _hasPlacedExplosives = [player] call ACE_Explosives_fnc_hasPlacedExplosives; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Whether the passed unit has placed any explosives or has a clacker that was used when explosives were placed. + * + * Arguments: + * 0: Unit + * + * Return Value: + * Configs of all detonators + * + * Example: + * _hasPlacedExplosives = [player] call ACE_Explosives_fnc_hasPlacedExplosives; + * + * Public: Yes + */ #include "script_component.hpp" (count (_this call FUNC(getPlacedExplosives)) > 0) diff --git a/addons/explosives/functions/fnc_module.sqf b/addons/explosives/functions/fnc_module.sqf index 77762dc08b..1e1e9d3e62 100644 --- a/addons/explosives/functions/fnc_module.sqf +++ b/addons/explosives/functions/fnc_module.sqf @@ -1,20 +1,18 @@ /* -* fnc_module.sqf -* -* Author: Garth 'L-H' de Wet -* Initialises the explosives module -* -* Arguments: -* Module things. -* -* Return Value: -* None -* -* Example: -* Called By BIS. -* -* Public: No -*/ + * Author: Garth 'L-H' de Wet + * Initialises the explosives module + * + * Arguments: + * Module things. + * + * Return Value: + * None + * + * Example: + * Called By BIS. + * + * Public: No + */ #include "script_component.hpp" if !(isServer) exitWith {}; _logic = _this select 0; diff --git a/addons/explosives/functions/fnc_openDetonateUI.sqf b/addons/explosives/functions/fnc_openDetonateUI.sqf index 4e8b854a79..a14865bc20 100644 --- a/addons/explosives/functions/fnc_openDetonateUI.sqf +++ b/addons/explosives/functions/fnc_openDetonateUI.sqf @@ -1,21 +1,19 @@ /* -* fnc_openDetonateUI.sqf -* -* Author: Garth 'L-H' de Wet -* Opens the UI for explosive detonation selection -* -* Arguments: -* 0: Unit -* 1: Trigger classname -* -* Return Value: -* None -* -* Example: -* [player, "ACE_M26_Clacker"] call ACE_Explosives_fnc_openDetonateUI; -* -* Public: No -*/ + * Author: Garth 'L-H' de Wet + * Opens the UI for explosive detonation selection + * + * Arguments: + * 0: Unit + * 1: Trigger classname + * + * Return Value: + * None + * + * Example: + * [player, "ACE_M26_Clacker"] call ACE_Explosives_fnc_openDetonateUI; + * + * Public: No + */ #include "script_component.hpp" private ["_unit","_result", "_item"]; call EFUNC(interaction,hideMenu); diff --git a/addons/explosives/functions/fnc_openPlaceUI.sqf b/addons/explosives/functions/fnc_openPlaceUI.sqf index 791fe359d9..1bb78248d2 100644 --- a/addons/explosives/functions/fnc_openPlaceUI.sqf +++ b/addons/explosives/functions/fnc_openPlaceUI.sqf @@ -1,20 +1,18 @@ /* -* fnc_openPlaceUI.sqf -* -* Author: Garth 'L-H' de Wet -* Opens the UI for explosive placement selection -* -* Arguments: -* 0: Unit -* -* Return Value: -* None -* -* Example: -* [player] call ACE_Explosives_fnc_openPlaceUI; -* -* Public: No -*/ + * Author: Garth 'L-H' de Wet + * Opens the UI for explosive placement selection + * + * Arguments: + * 0: Unit + * + * Return Value: + * None + * + * Example: + * [player] call ACE_Explosives_fnc_openPlaceUI; + * + * Public: No + */ #include "script_component.hpp" private ["_unit","_mags", "_item", "_index", "_actions"]; _unit = _this select 0; diff --git a/addons/explosives/functions/fnc_openTimerSetUI.sqf b/addons/explosives/functions/fnc_openTimerSetUI.sqf index c2969b5497..d7f6ef30d8 100644 --- a/addons/explosives/functions/fnc_openTimerSetUI.sqf +++ b/addons/explosives/functions/fnc_openTimerSetUI.sqf @@ -1,20 +1,18 @@ /* -* fnc_openTimerSetUI.sqf -* -* Author: Garth 'L-H' de Wet -* Opens the UI for timer setting of an explosive -* -* Arguments: -* 0: Magazine -* -* Return Value: -* None -* -* Example: -* ["SatchelCharge_Remote_Mag"] call ACE_Explosives_fnc_openTimerSetUI; -* -* Public: No -*/ + * Author: Garth 'L-H' de Wet + * Opens the UI for timer setting of an explosive + * + * Arguments: + * 0: Magazine + * + * Return Value: + * None + * + * Example: + * ["SatchelCharge_Remote_Mag"] call ACE_Explosives_fnc_openTimerSetUI; + * + * Public: No + */ #include "script_component.hpp" private ["_mag"]; _mag = _this select 0; diff --git a/addons/explosives/functions/fnc_openTransmitterUI.sqf b/addons/explosives/functions/fnc_openTransmitterUI.sqf index ffef790d7c..b87673c214 100644 --- a/addons/explosives/functions/fnc_openTransmitterUI.sqf +++ b/addons/explosives/functions/fnc_openTransmitterUI.sqf @@ -1,20 +1,18 @@ /* -* fnc_openTransmitterUI.sqf -* -* Author: Garth 'L-H' de Wet -* Opens the UI for selecting the transmitter -* -* Arguments: -* 0: Unit -* -* Return Value: -* Nothing -* -* Example: -* [player] call ACE_Explosives_fnc_openTransmitterUI; -* -* Public: No -*/ + * Author: Garth 'L-H' de Wet + * Opens the UI for selecting the transmitter + * + * Arguments: + * 0: Unit + * + * Return Value: + * Nothing + * + * Example: + * [player] call ACE_Explosives_fnc_openTransmitterUI; + * + * Public: No + */ #include "script_component.hpp" private ["_items", "_unit", "_count", "_actions", "_config"]; _unit = _this select 0; diff --git a/addons/explosives/functions/fnc_openTriggerSelectionUI.sqf b/addons/explosives/functions/fnc_openTriggerSelectionUI.sqf index 3c3d07bb7f..011bda9bee 100644 --- a/addons/explosives/functions/fnc_openTriggerSelectionUI.sqf +++ b/addons/explosives/functions/fnc_openTriggerSelectionUI.sqf @@ -1,20 +1,18 @@ /* -* fnc_openTriggerSelectionUI.sqf -* -* Author: Garth 'L-H' de Wet -* Opens the UI for explosive trigger selection -* -* Arguments: -* 0: Explosive Magazine -* -* Return Value: -* None -* -* Example: -* [lbData [8866, lbCurSel 8866]] call ACE_Explosives_fnc_openTriggerSelectionUI; -* -* Public: No -*/ + * Author: Garth 'L-H' de Wet + * Opens the UI for explosive trigger selection + * + * Arguments: + * 0: Explosive Magazine + * + * Return Value: + * None + * + * Example: + * [lbData [8866, lbCurSel 8866]] call ACE_Explosives_fnc_openTriggerSelectionUI; + * + * Public: No + */ #include "script_component.hpp" private ["_magazine", "_hasRequiredItems","_triggerTypes", "_actions", "_detonators", "_required", "_magTriggers"]; _magazine = _this select 0; diff --git a/addons/explosives/functions/fnc_placeExplosive.sqf b/addons/explosives/functions/fnc_placeExplosive.sqf index dc6fbc7aec..1e1ac44bdf 100644 --- a/addons/explosives/functions/fnc_placeExplosive.sqf +++ b/addons/explosives/functions/fnc_placeExplosive.sqf @@ -1,27 +1,25 @@ /* -* fnc_placeExplosive.sqf -* -* Author: Garth 'L-H' de Wet -* Places an explosive at the requested position -* -* Arguments: -* 0: Unit -* 1: Position to place explosive -* 2: Rotation -* 3: Magazine class -* 4: Config of trigger -* 5: Variables required for the trigger type -* 6: Should direction be set -* -* Return Value: -* Placed explosive -* -* Example: -* _explosive = [player, player modelToWorld [0,0.5, 0.1], 134, -* "SatchelCharge_Remote_Mag", "Command", []] call ACE_Explosives_fnc_placeExplosive; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Places an explosive at the requested position + * + * Arguments: + * 0: Unit + * 1: Position to place explosive + * 2: Rotation + * 3: Magazine class + * 4: Config of trigger + * 5: Variables required for the trigger type + * 6: Should direction be set + * + * Return Value: + * Placed explosive + * + * Example: + * _explosive = [player, player modelToWorld [0,0.5, 0.1], 134, + * "SatchelCharge_Remote_Mag", "Command", []] call ACE_Explosives_fnc_placeExplosive; + * + * Public: Yes + */ #include "script_component.hpp" private ["_pos", "_dir", "_magazineClass", "_ammo", "_triggerSpecificVars", "_unit", "_triggerConfig", "_explosive"]; _unit = _this select 0; diff --git a/addons/explosives/functions/fnc_place_Approve.sqf b/addons/explosives/functions/fnc_place_Approve.sqf index f771414f0b..97528cb8f6 100644 --- a/addons/explosives/functions/fnc_place_Approve.sqf +++ b/addons/explosives/functions/fnc_place_Approve.sqf @@ -1,21 +1,19 @@ /* -* fnc_place_Approve.sqf -* -* Author: Garth 'L-H' de Wet -* Approves placement of the explosive, releases the placement object for it -* to settle in a location suitable for the explosive to be created. -* -* Arguments: -* None -* -* Return Value: -* None -* -* Example: -* call ACE_Explosives_fnc_place_Approve; -* -* Public: No -*/ + * Author: Garth 'L-H' de Wet + * Approves placement of the explosive, releases the placement object for it + * to settle in a location suitable for the explosive to be created. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ACE_Explosives_fnc_place_Approve; + * + * Public: No + */ #include "script_component.hpp" if (GVAR(pfeh_running)) then { [QGVAR(Placement),"OnEachFrame"] call CALLSTACK(BIS_fnc_removeStackedEventHandler); diff --git a/addons/explosives/functions/fnc_place_Cancel.sqf b/addons/explosives/functions/fnc_place_Cancel.sqf index 943af6c17b..c149d35584 100644 --- a/addons/explosives/functions/fnc_place_Cancel.sqf +++ b/addons/explosives/functions/fnc_place_Cancel.sqf @@ -1,20 +1,18 @@ /* -* fnc_place_Cancel.sqf -* -* Author: Garth 'L-H' de Wet -* Cancels placement of the explosive -* -* Arguments: -* None -* -* Return Value: -* None -* -* Example: -* call ACE_Explosives_fnc_place_Cancel; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Cancels placement of the explosive + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ACE_Explosives_fnc_place_Cancel; + * + * Public: Yes + */ #include "script_component.hpp" if (GVAR(pfeh_running)) then { [QGVAR(Placement),"OnEachFrame"] call CALLSTACK(BIS_fnc_removeStackedEventHandler); diff --git a/addons/explosives/functions/fnc_selectTrigger.sqf b/addons/explosives/functions/fnc_selectTrigger.sqf index dcc2163191..8c51fd2c9c 100644 --- a/addons/explosives/functions/fnc_selectTrigger.sqf +++ b/addons/explosives/functions/fnc_selectTrigger.sqf @@ -1,21 +1,19 @@ /* -* fnc_selectTrigger.sqf -* -* Author: Garth 'L-H' de Wet -* Selects a trigger for an explosive. -* -* Arguments: -* 0: Magazine -* 1: Trigger mode -* -* Return Value: -* None -* -* Example: -* ["SatchelCharge_Remote_Mag","Timer"] call ACE_Explosives_fnc_selectTrigger; -* -* Public: No -*/ + * Author: Garth 'L-H' de Wet + * Selects a trigger for an explosive. + * + * Arguments: + * 0: Magazine + * 1: Trigger mode + * + * Return Value: + * None + * + * Example: + * ["SatchelCharge_Remote_Mag","Timer"] call ACE_Explosives_fnc_selectTrigger; + * + * Public: No + */ #include "script_component.hpp" private ["_magazine","_trigger"]; closeDialog 0; diff --git a/addons/explosives/functions/fnc_setPosition.sqf b/addons/explosives/functions/fnc_setPosition.sqf index 2295066c15..2f61c522aa 100644 --- a/addons/explosives/functions/fnc_setPosition.sqf +++ b/addons/explosives/functions/fnc_setPosition.sqf @@ -1,22 +1,20 @@ /* -* fnc_setPosition.sqf -* -* Author: Garth 'L-H' de Wet -* Sets the Dir and pitch of passed object -* -* Arguments: -* 0: Explosive -* 1: Direction -* 2: Pitch -* -* Return Value: -* None -* -* Example: -* [_explosive, 150, 90] call ACE_Explosives_fnc_SetPos; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Sets the Dir and pitch of passed object + * + * Arguments: + * 0: Explosive + * 1: Direction + * 2: Pitch + * + * Return Value: + * None + * + * Example: + * [_explosive, 150, 90] call ACE_Explosives_fnc_SetPos; + * + * Public: Yes + */ #include "script_component.hpp" private "_ex"; _ex = _this select 0; diff --git a/addons/explosives/functions/fnc_setupExplosive.sqf b/addons/explosives/functions/fnc_setupExplosive.sqf index 04f1cc80a3..7f80ba7e63 100644 --- a/addons/explosives/functions/fnc_setupExplosive.sqf +++ b/addons/explosives/functions/fnc_setupExplosive.sqf @@ -1,23 +1,21 @@ /* -* fnc_setupExplosive.sqf -* -* Author: Garth 'L-H' de Wet -* Starts the setup process for the passed explosive. Player only. -* -* Arguments: -* 0: Unit -* 1: Classname of explosive to place. (CfgMagazine class) -* 2: Trigger Config -* 3: Timer (optional) -* -* Return Value: -* None -* -* Example: -* [player, "SatchelCharge_Remote_Mag", "Command"] call ACE_Explosives_fnc_SetupExplosive; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Starts the setup process for the passed explosive. Player only. + * + * Arguments: + * 0: Unit + * 1: Classname of explosive to place. (CfgMagazine class) + * 2: Trigger Config + * 3: Timer (optional) + * + * Return Value: + * None + * + * Example: + * [player, "SatchelCharge_Remote_Mag", "Command"] call ACE_Explosives_fnc_SetupExplosive; + * + * Public: Yes + */ #include "script_component.hpp" private ["_unit", "_class", "_config", "_timer"]; _unit = _this select 0; diff --git a/addons/explosives/functions/fnc_startDefuse.sqf b/addons/explosives/functions/fnc_startDefuse.sqf index 47c43605a2..35e5e682df 100644 --- a/addons/explosives/functions/fnc_startDefuse.sqf +++ b/addons/explosives/functions/fnc_startDefuse.sqf @@ -1,21 +1,19 @@ /* -* fnc_startDefuse.sqf -* -* Author: Garth 'L-H' de Wet -* Starts defusing an explosive -* -* Arguments: -* 0: Unit -* 1: Target explosive -* -* Return Value: -* Nothing -* -* Example: -* [player, ACE_Interaction_Target] call ACE_Explosives_fnc_StartDefuse; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Starts defusing an explosive + * + * Arguments: + * 0: Unit + * 1: Target explosive + * + * Return Value: + * Nothing + * + * Example: + * [player, ACE_Interaction_Target] call ACE_Explosives_fnc_StartDefuse; + * + * Public: Yes + */ #include "script_component.hpp" private ["_unit","_target"]; _unit = _this select 0; diff --git a/addons/explosives/functions/fnc_startTimer.sqf b/addons/explosives/functions/fnc_startTimer.sqf index 6317e0589e..f4b0876866 100644 --- a/addons/explosives/functions/fnc_startTimer.sqf +++ b/addons/explosives/functions/fnc_startTimer.sqf @@ -1,21 +1,19 @@ /* -* fnc_startTimer.sqf -* -* Author: Garth 'L-H' de Wet -* Starts a timer for an explosive. -* -* Arguments: -* 0: Explosive -* 1: Time till detonate -* -* Return Value: -* None -* -* Example: -* [_explosive, 10] call ACE_Explosives_fnc_startTimer; -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Starts a timer for an explosive. + * + * Arguments: + * 0: Explosive + * 1: Time till detonate + * + * Return Value: + * None + * + * Example: + * [_explosive, 10] call ACE_Explosives_fnc_startTimer; + * + * Public: Yes + */ #include "script_component.hpp" EXPLODE_2_PVT(_this,_explosive,_delay); diff --git a/addons/explosives/functions/fnc_triggerType.sqf b/addons/explosives/functions/fnc_triggerType.sqf index 96d1e96faf..4dba9a8d8e 100644 --- a/addons/explosives/functions/fnc_triggerType.sqf +++ b/addons/explosives/functions/fnc_triggerType.sqf @@ -1,20 +1,18 @@ /* -* fnc_triggerType.sqf -* -* Author: Garth 'L-H' de Wet -* Gets the types of triggers associated with the explosive -* -* Arguments: -* 0: Explosive magazine -* -* Return Value: -* Supported triggers as CfgACE_Triggers config entries -* -* Example: -* _supports = ["SatchelCharge_Remote_Mag"] call ACE_Explosives_fnc_TriggerType -* -* Public: Yes -*/ + * Author: Garth 'L-H' de Wet + * Gets the types of triggers associated with the explosive + * + * Arguments: + * 0: Explosive magazine + * + * Return Value: + * Supported triggers as CfgACE_Triggers config entries + * + * Example: + * _supports = ["SatchelCharge_Remote_Mag"] call ACE_Explosives_fnc_TriggerType + * + * Public: Yes + */ #include "script_component.hpp" private "_result"; _result = []; From 7acd7854b78f6c4473c4190d7e78ca542d35685f Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Mon, 2 Feb 2015 11:04:53 +0200 Subject: [PATCH 043/211] Updated headers of the goggles to be as required. --- addons/goggles/XEH_postInit.sqf | 35 ++++++++--------- addons/goggles/XEH_preInit.sqf | 15 ++++++++ .../goggles/functions/fnc_applyDirtEffect.sqf | 32 ++++++++-------- addons/goggles/functions/fnc_applyDust.sqf | 32 ++++++++-------- .../functions/fnc_applyGlassesEffect.sqf | 36 +++++++++--------- addons/goggles/functions/fnc_checkGoggles.sqf | 27 ++++++++----- addons/goggles/functions/fnc_clearGlasses.sqf | 32 ++++++++-------- addons/goggles/functions/fnc_dustHandler.sqf | 33 ++++++++-------- .../goggles/functions/fnc_externalCamera.sqf | 32 +++++++--------- .../functions/fnc_getExplosionIndex.sqf | 30 +++++++-------- .../goggles/functions/fnc_isDivingGoggles.sqf | 32 ++++++++-------- .../functions/fnc_isGogglesVisible.sqf | 36 +++++++++--------- .../goggles/functions/fnc_isInRotorWash.sqf | 38 +++++++++---------- addons/goggles/functions/fnc_onEachFrame.sqf | 32 ++++++++-------- addons/goggles/functions/fnc_rainEffect.sqf | 30 +++++++-------- .../functions/fnc_removeDirtEffect.sqf | 30 +++++++-------- .../functions/fnc_removeDustEffect.sqf | 30 +++++++-------- .../functions/fnc_removeGlassesEffect.sqf | 32 ++++++++-------- .../functions/fnc_removeRainEffect.sqf | 30 +++++++-------- 19 files changed, 292 insertions(+), 302 deletions(-) diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index 941b2d85ea..4c7160bdb3 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -1,18 +1,19 @@ /* - Name: XEH_postInit.sqf - - Author: Garth de Wet (LH) - - Description: - Sets up the glasses mod for usage. Initialises variables and event handlers. - Shouldn't be called by a user/modder ever. Done by the engine. - - Parameters: - Nothing - - Returns: - Nothing -*/ + * Author: Garth 'L-H' de Wet + * Sets up the glasses mod for usage. Initialises variables and event handlers. + * Shouldn't be called by a user/modder ever. Done by the engine. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * None + * + * Public: No + */ #include "script_component.hpp" if (!hasInterface) exitWith {}; @@ -57,7 +58,7 @@ player addEventHandler ["Explosion", { call FUNC(ApplyDirtEffect); if (GETBROKEN) exitWith {}; if (((_this select 1) call FUNC(GetExplosionIndex)) < getNumber(ConfigFile >> "CfgGlasses" >> GVAR(Current) >> "ACE_Resistance")) exitWith {}; - if !(ace_player call FUNC(isGogglesVisible)) exitWith {["GlassesCracked",[ace_player]] call EFUNC(common,localEvent);}; + if !([ace_player] call FUNC(isGogglesVisible)) exitWith {["GlassesCracked",[ace_player]] call EFUNC(common,localEvent);}; _effects = GETGLASSES(ace_player); _effects set [BROKEN, true]; SETGLASSES(ace_player,_effects); @@ -94,8 +95,8 @@ player AddEventHandler ["Put", {call FUNC(checkGlasses);}]; if (call FUNC(ExternalCamera)) exitWith {call FUNC(RemoveGlassesEffect)}; - if (ace_player call FUNC(isGogglesVisible)) then { - (_this select 0) call FUNC(applyGlassesEffect); + if ([ace_player] call FUNC(isGogglesVisible)) then { + [_this select 0] call FUNC(applyGlassesEffect); } else { call FUNC(removeGlassesEffect); }; diff --git a/addons/goggles/XEH_preInit.sqf b/addons/goggles/XEH_preInit.sqf index 5b0d4da30f..4eb7df91d1 100644 --- a/addons/goggles/XEH_preInit.sqf +++ b/addons/goggles/XEH_preInit.sqf @@ -1,3 +1,18 @@ +/* + * Author: Garth 'L-H' de Wet + * Initialises Goggles. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * None + * + * Public: No + */ #include "script_component.hpp" ADDON = false; diff --git a/addons/goggles/functions/fnc_applyDirtEffect.sqf b/addons/goggles/functions/fnc_applyDirtEffect.sqf index 0cf784a528..f12cf74f29 100644 --- a/addons/goggles/functions/fnc_applyDirtEffect.sqf +++ b/addons/goggles/functions/fnc_applyDirtEffect.sqf @@ -1,20 +1,18 @@ /* - ApplyDirtEffect - - Author: Garth de Wet (LH) - - Description: - Adds dirt effect to the glasses. - - Parameters: - Nothing - - Returns: - BOOLEAN - True if succeeded false if not - - Example: - call FUNC(ApplyDirtEffect); -*/ + * Author: Garth 'L-H' de Wet + * Adds dirt effect to the glasses. + * + * Arguments: + * None + * + * Return Value: + * Succeeded + * + * Example: + * _applied = call ace_goggles_fnc_ApplyDirtEffect; + * + * Public: Yes + */ #include "script_component.hpp" if (cameraOn != ace_player || {call FUNC(externalCamera)}) exitWith{false}; @@ -23,7 +21,7 @@ _effects = GETGLASSES(ace_player); _effects set [DIRT, true]; SETGLASSES(ace_player,_effects); -if (ace_player call FUNC(isGogglesVisible)) then{ +if ([ace_player] call FUNC(isGogglesVisible)) then{ _dirtImage = getText(ConfigFile >> "CfgGlasses" >> (goggles ace_player) >> "ACE_OverlayDirt"); if (_dirtImage != "") then { 100 cutRsc["RscACE_GogglesEffects", "PLAIN",0.1, false]; diff --git a/addons/goggles/functions/fnc_applyDust.sqf b/addons/goggles/functions/fnc_applyDust.sqf index 53e75ba274..311a993904 100644 --- a/addons/goggles/functions/fnc_applyDust.sqf +++ b/addons/goggles/functions/fnc_applyDust.sqf @@ -1,23 +1,21 @@ /* - Name: fnc_applyDust.sqf - - Author: Garth de Wet (LH) - - Description: - Applies dust to screen. - - Parameters: - Nothing - - Returns: - Nothing - - Example 1: - call FUNC(ApplyDust); -*/ + * Author: Garth 'L-H' de Wet + * Applies dust to screen. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_goggles_fnc_ApplyDust; + * + * Public: Yes + */ #include "script_component.hpp" if (call FUNC(ExternalCamera)) exitWith {}; -if (ace_player call FUNC(isGogglesVisible)) exitWith { +if ([ace_player] call FUNC(isGogglesVisible)) exitWith { 100 cutRsc["RscACE_GogglesEffects", "PLAIN",2,false]; (uiNamespace getVariable ["ACE_Goggles_DisplayEffects", displayNull] displayCtrl 10662) ctrlSetText format[getText(ConfigFile >> "CfgGlasses" >> GVAR(Current) >> "ACE_DustPath"), GETDUSTT(DAMOUNT)+1]; SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)+1,0,1)); diff --git a/addons/goggles/functions/fnc_applyGlassesEffect.sqf b/addons/goggles/functions/fnc_applyGlassesEffect.sqf index 496f73d4b0..1d69041d81 100644 --- a/addons/goggles/functions/fnc_applyGlassesEffect.sqf +++ b/addons/goggles/functions/fnc_applyGlassesEffect.sqf @@ -1,26 +1,24 @@ /* - Name: fnc_ApplyGlassesEffect.sqf - - Author: Garth de Wet (LH) - - Description: - Sets screen tint for glasses. - Sets screen overlay for glasses. (broken/fixed) - Sets dirt/rain overlay for glasses. - - Parameters: - 0: STRING - Glasses class name to be applied. - - Returns: - Nothing - - Example: - (goggles ace_player) call FUNC(ApplyGlassesEffect); -*/ + * Author: Garth 'L-H' de Wet + * Sets screen tint for glasses. + * Sets screen overlay for glasses. (broken/fixed) + * Sets dirt/rain overlay for glasses. + * + * Arguments: + * 0: Glasses classname to be applied + * + * Return Value: + * None + * + * Example: + * [goggles ace_player] call ace_goggles_fnc_ApplyGlassesEffect; + * + * Public: No + */ #include "script_component.hpp" private["_postProcessColour", "_postProcessTintAmount", "_glassesClassname", "_glassImagePath"]; -_glassesClassname = _this; +_glassesClassname = _this select 0; _postProcessColour = getArray(configFile >> "CfgGlasses" >> _glassesClassname >> "ACE_Color"); _postProcessTintAmount = getNumber(configFile >> "CfgGlasses" >> _glassesClassname >> "ACE_TintAmount"); diff --git a/addons/goggles/functions/fnc_checkGoggles.sqf b/addons/goggles/functions/fnc_checkGoggles.sqf index a00b7371d8..6d8f493c3e 100644 --- a/addons/goggles/functions/fnc_checkGoggles.sqf +++ b/addons/goggles/functions/fnc_checkGoggles.sqf @@ -1,10 +1,19 @@ /* - Author: Garth de Wet (LH) - - Description: - Performs rain checks and checks to see whether glasses effects have been applied or not. - Checks for external camera and removes effects. -*/ + * Author: Garth 'L-H' de Wet + * Performs rain checks and checks to see whether glasses effects have been applied or not. + * Checks for external camera and removes effects. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * None + * + * Public: No + */ #include "script_component.hpp" if (!alive ace_player) exitWith {}; if (true) then { @@ -15,7 +24,7 @@ if (true) then { }; }; call FUNC(checkGlasses); - if !(ace_player call FUNC(isGogglesVisible)) exitWith { + if !([ace_player] call FUNC(isGogglesVisible)) exitWith { if (GVAR(EffectsActive)) then { call FUNC(removeGlassesEffect); }; @@ -26,9 +35,9 @@ if (true) then { }; }; if !(GVAR(EffectsActive)) then { - (goggles ace_player) call FUNC(applyGlassesEffect); + [goggles ace_player] call FUNC(applyGlassesEffect); } else { - if ((goggles ace_player) call FUNC(isDivingGoggles) && {underwater ace_player}) then { + if ([goggles ace_player] call FUNC(isDivingGoggles) && {underwater ace_player}) then { call FUNC(removeRainEffect); call FUNC(removeDirtEffect); call FUNC(removeDustEffect); diff --git a/addons/goggles/functions/fnc_clearGlasses.sqf b/addons/goggles/functions/fnc_clearGlasses.sqf index 4072e7c68a..fb2e9bfa91 100644 --- a/addons/goggles/functions/fnc_clearGlasses.sqf +++ b/addons/goggles/functions/fnc_clearGlasses.sqf @@ -1,21 +1,19 @@ /* - Name: fnc_clearGlasses.sqf - - Author: Garth de Wet (LH) - - Description: - Clears all dirt, rain, dust from glasses. - Removes glasses effect (PP, overlay) and then puts it back. - - Parameters: - Nothing - - Returns: - Nothing - - Example: - call FUNC(ClearGlasses); -*/ + * Author: Garth 'L-H' de Wet + * Clears all dirt, rain, dust from glasses. + * Removes glasses effect (PP, overlay) and then puts it back. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_goggles_fnc_ClearGlasses; + * + * Public: Yes + */ #include "script_component.hpp" private "_broken"; diff --git a/addons/goggles/functions/fnc_dustHandler.sqf b/addons/goggles/functions/fnc_dustHandler.sqf index aae722d50f..979a4a1bf0 100644 --- a/addons/goggles/functions/fnc_dustHandler.sqf +++ b/addons/goggles/functions/fnc_dustHandler.sqf @@ -1,22 +1,19 @@ /* - fnc_DustHandler.sqf - - Author: Garth de Wet (LH) - - Description: - Determines whether to place dust on the goggles, based on calibre of weapon fired and other requirements. - - Parameters: - 0: Object - unit - eventhandler was attached to. (Used) - 1: String - weapon - Weapon fired (Used) - - Returns: - Nothing - - Example: - ace_player addEventHandler ["Fired", {[_this select 0, _this select 1] call FUNC(DustHandler;}]; - See http://community.bistudio.com/wiki/ArmA_3:_Event_Handlers#Fired -*/ + * Author: Garth 'L-H' de Wet + * Determines whether to place dust on the goggles, based on calibre of weapon fired and other requirements. + * + * Arguments: + * 0: Unit + * 1: Weapon + * + * Return Value: + * None + * + * Example: + *ace_player addEventHandler ["Fired", {[_this select 0, _this select 1] call ace_goggles_fnc_dustHandler;}]; + * + * Public: No + */ #include "script_component.hpp" private ["_bullets", "_position", "_surface", "_found", "_weapon", "_cloudType", "_unit"]; EXPLODE_2_PVT(_this,_unit,_weapon); diff --git a/addons/goggles/functions/fnc_externalCamera.sqf b/addons/goggles/functions/fnc_externalCamera.sqf index 35b94171a6..093e2c318e 100644 --- a/addons/goggles/functions/fnc_externalCamera.sqf +++ b/addons/goggles/functions/fnc_externalCamera.sqf @@ -1,22 +1,18 @@ /* - fnc_ExternalCamera.sqf - - Author: Garth de Wet (LH) - - Description: - Returns if the camera is external or not. - - Parameters: - Nothing - - Returns: - Boolean - whether the camera is in external view or not. - If the "showInThirdPerson" option is checked, this will always return false. - - Example: - call FUNC(ExternalCamera); -*/ - + * Author: Garth 'L-H' de Wet + * Returns if the camera is external or not. + * + * Arguments: + * None + * + * Return Value: + * Whether the camera is in external view or not. If the "showInThirdPerson" option is checked, this will always return false. + * + * Example: + * call ace_goggles_fnc_removeRainEffect; + * + * Public: Yes + */ #include "script_component.hpp" if ((missionNameSpace getVariable [QGVAR(showInThirdPerson), 0]) == 1) exitWith { false }; diff --git a/addons/goggles/functions/fnc_getExplosionIndex.sqf b/addons/goggles/functions/fnc_getExplosionIndex.sqf index 92d79f4992..5b81c63655 100644 --- a/addons/goggles/functions/fnc_getExplosionIndex.sqf +++ b/addons/goggles/functions/fnc_getExplosionIndex.sqf @@ -1,20 +1,18 @@ /* - fnc_getExplosionIndex.sqf - - Author: Garth de Wet (LH) - - Description: - Turns 0-1 damage into a rating system of 0-3 - - Parameters: - 0: NUMBER - The amount of damage - - Returns: - NUMBER (the rating) [0-3] - - Example: - _rating = 0.05 call FUNC(GetExplosionIndex); -*/ + * Author: Garth 'L-H' de Wet + * Turns 0-1 damage of explosion Event into a rating system of 0-3 + * + * Arguments: + * 0: The amount of damage + * + * Return Value: + * The rating [0-3] + * + * Example: + * _rating = 0.05 call ace_goggles_fnc_getExplosionIndex; + * + * Public: No + */ private ["_effectIndex"]; _effectIndex = switch true do { diff --git a/addons/goggles/functions/fnc_isDivingGoggles.sqf b/addons/goggles/functions/fnc_isDivingGoggles.sqf index d6b97fb80a..bcc6b0db5e 100644 --- a/addons/goggles/functions/fnc_isDivingGoggles.sqf +++ b/addons/goggles/functions/fnc_isDivingGoggles.sqf @@ -1,23 +1,21 @@ /* - fnc_isDivingGoggles.sqf - - Author: Garth de Wet (LH) - - Description: - Determines whether current goggles worn by passed unit is diving goggles or a variant of them. - - Parameters: - 0: String - Glasses classname - - Returns: - Boolean - whether diving goggles are worn - - Example: - (goggles ace_player) call FUNC(isDivingGoggles); -*/ + * Author: Garth 'L-H' de Wet + * Determines whether passed goggles is diving goggles or a variant of them. + * + * Arguments: + * 0: Glasses classname + * + * Return Value: + * Whether diving goggles are worn + * + * Example: + * [(goggles ace_player)] call ace_goggles_fnc_isDivingGoggles; + * + * Public: Yes + */ #include "script_component.hpp" private ["_result", "_glasses"]; -_glasses = _this; +_glasses = _this select 0; _result = _glasses == "G_Diving"; if (_result) exitWith {true}; _result = [configFile >> "CfgGlasses" >> _glasses, configFile >> "CfgGlasses" >> "G_Diving"] call CBA_fnc_inheritsFrom; diff --git a/addons/goggles/functions/fnc_isGogglesVisible.sqf b/addons/goggles/functions/fnc_isGogglesVisible.sqf index a663554b60..3d87499b90 100644 --- a/addons/goggles/functions/fnc_isGogglesVisible.sqf +++ b/addons/goggles/functions/fnc_isGogglesVisible.sqf @@ -1,23 +1,21 @@ /* - fnc_isGogglesVisible.sqf - - Author: Garth de Wet (LH) - - Description: - Determines if goggles are visible on passed unit (Also checks if unit is in vehicle and cameraView is set to GUNNER) - - Parameters: - 0: Object - unit to check for visible goggles - - Returns: - BOOL - Whether the goggles are visible or not. - - Example: - _visible = ace_player call FUNC(isGogglesVisible); -*/ + * Author: Garth 'L-H' de Wet + * Determines if goggles are visible on passed unit (Also checks if unit is in vehicle and cameraView is set to GUNNER) + * + * Arguments: + * 0: Unit + * + * Return Value: + * Whether goggles are visible + * + * Example: + * _visible = [ace_player] call ace_goggles_fnc_isGogglesVisible; + * + * Public: Yes + */ #include "script_component.hpp" private ["_currentGlasses", "_result", "_unit"]; -_unit = _this; +_unit = _this select 0; _currentGlasses = goggles _unit; _result = false; @@ -27,12 +25,12 @@ if ((vehicle _unit) != _unit) exitWith {(cameraView != "GUNNER")}; if (_currentGlasses != "") then { _position =(getPosASLW _unit); if (surfaceIsWater _position && {((_position select 2) < 0.25)}) exitWith { - _result = (_currentGlasses call FUNC(isDivingGoggles)); + _result = ([_currentGlasses] call FUNC(isDivingGoggles)); }; if (getNumber (ConfigFile >> "CfgGlasses" >> _currentGlasses >> "ACE_Resistance") == 0) exitWith { _result = false; }; - _result = !(_currentGlasses call FUNC(isDivingGoggles)); + _result = !([_currentGlasses] call FUNC(isDivingGoggles)); }; _result diff --git a/addons/goggles/functions/fnc_isInRotorWash.sqf b/addons/goggles/functions/fnc_isInRotorWash.sqf index f8bad1a10f..0d9e22f7da 100644 --- a/addons/goggles/functions/fnc_isInRotorWash.sqf +++ b/addons/goggles/functions/fnc_isInRotorWash.sqf @@ -1,24 +1,22 @@ /* - fnc_isInRotorWash.sqf - - Author: Garth de Wet (LH) - - Description: - Checks for nearby helicopters (within 15m) - - Parameters: - 0: Object - Unit - 1: NUMBER - (optional) Radius to check for helicopter Default: 15 - - Returns: - Array: - 0 - boolean - If in rotorwash - 1 - number - Amount of rotor wash. - - Example: - if (([ace_player, 10] call FUNC(isInRotorWash)) select 0) then { hint "Rotor wash"; }; - if (([ace_player] call FUNC(isInRotorWash)) select 0) then { hint "Rotor wash"; }; -*/ + * Author: Garth 'L-H' de Wet + * Checks for nearby running helicopters (within 15m) + * + * Arguments: + * 0: Unit + * 1: Radius to check for helicopter Default: 15 (optional) + * + * Return Value: + * : + * 0: In rotorwash + * 1: Amount of rotor wash. + * + * Example: + * if (([ace_player, 10] call ace_goggles_fnc_isInRotorWash) select 0) then { hint "Rotor wash"; }; + * if (([ace_player] call ace_goggles_fnc_isInRotorWash) select 0) then { hint "Rotor wash"; }; + * + * Public: Yes + */ #include "script_component.hpp" private ["_heli", "_unit", "_result", "_radius"]; _unit = _this select 0; diff --git a/addons/goggles/functions/fnc_onEachFrame.sqf b/addons/goggles/functions/fnc_onEachFrame.sqf index cd361e38cf..a3c65cac6b 100644 --- a/addons/goggles/functions/fnc_onEachFrame.sqf +++ b/addons/goggles/functions/fnc_onEachFrame.sqf @@ -1,20 +1,18 @@ /* - fnc_onEachFrame.sqf - - Author: Garth de Wet (LH) - - Description: - Runs every frame checking for helicopters. - - Parameters: - Nothing - - Returns: - Nothing - - Example: - ["ACE_Goggles_RotorWash", "OnEachFrame", "call FUNC(OnEachFrame);"] call BIS_fnc_addStackedEventHandler; -*/ + * Author: Garth 'L-H' de Wet + * Checks whether the player is in the downwash of a helicopter and handles applying effects of that. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * ["ACE_Goggles_RotorWash", "OnEachFrame", "call ace_goggles_fnc_OnEachFrame;"] call BIS_fnc_addStackedEventHandler; + * + * Public: No + */ #include "script_component.hpp" if (isNull(ace_player)) exitWith {}; GVAR(FrameEvent) set [0, !(GVAR(FrameEvent) select 0)]; @@ -44,7 +42,7 @@ if ((headgear ace_player) != "") then { _safe = (getNumber (ConfigFile >> "CfgWeapons" >> (headgear ace_player) >> "ACE_Protection") == 1); }; if !(_safe) then { - if !(ace_player call FUNC(isGogglesVisible)) exitWith{}; + if !([ace_player] call FUNC(isGogglesVisible)) exitWith{}; if (GETDUSTT(DAMOUNT) < 2) then { if (!GETDUSTT(DACTIVE)) then { SETDUST(DACTIVE,true); diff --git a/addons/goggles/functions/fnc_rainEffect.sqf b/addons/goggles/functions/fnc_rainEffect.sqf index 030e60c149..37ffbf64f6 100644 --- a/addons/goggles/functions/fnc_rainEffect.sqf +++ b/addons/goggles/functions/fnc_rainEffect.sqf @@ -1,20 +1,18 @@ /* - fnc_rainEffect.sqf - - Author: Garth de Wet (LH) - - Description: - - - Parameters: - Nothing - - Returns: - Nothing - - Example: - [] call FUNC(RainEffect); -*/ + * Author: Garth 'L-H' de Wet + * Handles rain effects being created on glasses. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_goggles_fnc_rainEffect; + * + * Public: No + */ #include "script_component.hpp" private ["_fnc_underCover"]; if (isNull(ace_player) || {!(alive ace_player)}) exitWith {}; diff --git a/addons/goggles/functions/fnc_removeDirtEffect.sqf b/addons/goggles/functions/fnc_removeDirtEffect.sqf index 5b58fad834..20812d6140 100644 --- a/addons/goggles/functions/fnc_removeDirtEffect.sqf +++ b/addons/goggles/functions/fnc_removeDirtEffect.sqf @@ -1,20 +1,18 @@ /* - fnc_removeDirtEffect.sqf - - Author: Garth de Wet (LH) - - Description: - Removes dirt from the glasses. - - Parameters: - Nothing - - Returns: - Nothing - - Example: - call FUNC(RemoveDirtEffect); -*/ + * Author: Garth 'L-H' de Wet + * Removes dirt from the glasses. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_goggles_fnc_removeDirtEffect; + * + * Public: Yes + */ #include "script_component.hpp" if (!isNull(GETUVAR(GVAR(DisplayEffects),displayNull))) then { (GETUVAR(GVAR(DisplayEffects),displayNull) displayCtrl 10660) ctrlSetText ""; diff --git a/addons/goggles/functions/fnc_removeDustEffect.sqf b/addons/goggles/functions/fnc_removeDustEffect.sqf index c937fe2bd1..7bd4be7c22 100644 --- a/addons/goggles/functions/fnc_removeDustEffect.sqf +++ b/addons/goggles/functions/fnc_removeDustEffect.sqf @@ -1,20 +1,18 @@ /* - fnc_removeDustEffect.sqf - - Author: Garth de Wet (LH) - - Description: - Removes dust from the glasses. - - Parameters: - Nothing - - Returns: - Nothing - - Example: - call FUNC(RemoveDustEffect); -*/ + * Author: Garth 'L-H' de Wet + * Removes dust from the glasses. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_goggles_fnc_removeDustEffect; + * + * Public: Yes + */ #include "script_component.hpp" if (!isNull(GETUVAR(GVAR(DisplayEffects),displayNull))) then { (GETUVAR(GVAR(DisplayEffects),displayNull) displayCtrl 10662) ctrlSetText ""; diff --git a/addons/goggles/functions/fnc_removeGlassesEffect.sqf b/addons/goggles/functions/fnc_removeGlassesEffect.sqf index dc7bbee45e..f409f3c16e 100644 --- a/addons/goggles/functions/fnc_removeGlassesEffect.sqf +++ b/addons/goggles/functions/fnc_removeGlassesEffect.sqf @@ -1,21 +1,19 @@ /* - RemoveGlassesEffect - - Author: Garth de Wet (LH) - - Description: - Removes the glasses effect from the screen, removes dirt effect, removes rain effect, - removes dust effect. Does not reset array (glasses will still be broken, dirty, ect.) - - Parameters: - Nothing - - Returns: - Nothing - - Example: - call FUNC(RemoveGlassesEffect); -*/ + * Author: Garth 'L-H' de Wet + * Removes the glasses effect from the screen, removes dirt effect, removes rain effect, + * removes dust effect. Does not reset array (glasses will still be broken, dirty, ect.) + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_goggles_fnc_removeGlassesEffect; + * + * Public: Yes + */ #include "script_component.hpp" GVAR(EffectsActive) = false; GVAR(PostProcess) ppEffectEnable false; diff --git a/addons/goggles/functions/fnc_removeRainEffect.sqf b/addons/goggles/functions/fnc_removeRainEffect.sqf index bcef82dc81..fbbf1b9b7b 100644 --- a/addons/goggles/functions/fnc_removeRainEffect.sqf +++ b/addons/goggles/functions/fnc_removeRainEffect.sqf @@ -1,20 +1,18 @@ /* - RemoveRainEffect - - Author: Garth de Wet (LH) - - Description: - Removes rain effects from the screen. Resets the rain array. - - Parameters: - Nothing - - Returns: - Nothing - - Example: - call FUNC(RemoveRainEffect); -*/ + * Author: Garth 'L-H' de Wet + * Removes rain effects from the screen. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_goggles_fnc_removeRainEffect; + * + * Public: Yes + */ #include "script_component.hpp" if (!isNull (GVAR(RainDrops))) then { deleteVehicle (GVAR(RainDrops)); From c96882dd0276a3674a2041ffb1b8393245140b4e Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Mon, 2 Feb 2015 11:42:14 +0200 Subject: [PATCH 044/211] Fixed incorrect header comment for explosives. --- addons/explosives/functions/fnc_detonateExplosive.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/explosives/functions/fnc_detonateExplosive.sqf b/addons/explosives/functions/fnc_detonateExplosive.sqf index f28ad14b62..697c8eeed7 100644 --- a/addons/explosives/functions/fnc_detonateExplosive.sqf +++ b/addons/explosives/functions/fnc_detonateExplosive.sqf @@ -1,6 +1,6 @@ /* * Author: Garth 'L-H' de Wet - * Causes the unit to defuse the passed explosive. + * Causes the unit to detonate the passed explosive. * * Arguments: * 0: Unit From 869e36eb5fc08a48975826107dfacc58cd4e3964 Mon Sep 17 00:00:00 2001 From: bux578 Date: Mon, 2 Feb 2015 19:22:07 +0100 Subject: [PATCH 045/211] added email address --- AUTHORS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index 024864a738..f62618e359 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -10,7 +10,7 @@ commy2 esteldunedain Felix Wiegand Garth "L-H" de Wet -Jo David +bux578 PabstMirror # CONTRIBUTORS From 03cef93ac72e4a6fb6c546c5ff6f880a560df439 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Mon, 2 Feb 2015 22:31:48 +0200 Subject: [PATCH 046/211] Initiated AGM_Parachute merge. --- .../Parachute => addons/parachute}/Gurtgeschirr.p3d | Bin .../Parachute => addons/parachute}/RscTitles.hpp | 0 .../Parachute => addons/parachute}/T10Schirm.p3d | Bin .../parachute}/UI/watch_altimeter.paa | Bin .../Parachute => addons/parachute}/clientInit.sqf | 0 .../agm/Parachute => addons/parachute}/config.cpp | 0 .../parachute}/functions/fn_doLanding.sqf | 0 .../parachute}/functions/fn_hideAltimeter.sqf | 0 .../parachute}/functions/fn_onEachFrame.sqf | 0 .../parachute}/functions/fn_showAltimeter.sqf | 0 .../Parachute => addons/parachute}/stringtable.xml | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename {TO_MERGE/agm/Parachute => addons/parachute}/Gurtgeschirr.p3d (100%) rename {TO_MERGE/agm/Parachute => addons/parachute}/RscTitles.hpp (100%) rename {TO_MERGE/agm/Parachute => addons/parachute}/T10Schirm.p3d (100%) rename {TO_MERGE/agm/Parachute => addons/parachute}/UI/watch_altimeter.paa (100%) rename {TO_MERGE/agm/Parachute => addons/parachute}/clientInit.sqf (100%) rename {TO_MERGE/agm/Parachute => addons/parachute}/config.cpp (100%) rename {TO_MERGE/agm/Parachute => addons/parachute}/functions/fn_doLanding.sqf (100%) rename {TO_MERGE/agm/Parachute => addons/parachute}/functions/fn_hideAltimeter.sqf (100%) rename {TO_MERGE/agm/Parachute => addons/parachute}/functions/fn_onEachFrame.sqf (100%) rename {TO_MERGE/agm/Parachute => addons/parachute}/functions/fn_showAltimeter.sqf (100%) rename {TO_MERGE/agm/Parachute => addons/parachute}/stringtable.xml (100%) diff --git a/TO_MERGE/agm/Parachute/Gurtgeschirr.p3d b/addons/parachute/Gurtgeschirr.p3d similarity index 100% rename from TO_MERGE/agm/Parachute/Gurtgeschirr.p3d rename to addons/parachute/Gurtgeschirr.p3d diff --git a/TO_MERGE/agm/Parachute/RscTitles.hpp b/addons/parachute/RscTitles.hpp similarity index 100% rename from TO_MERGE/agm/Parachute/RscTitles.hpp rename to addons/parachute/RscTitles.hpp diff --git a/TO_MERGE/agm/Parachute/T10Schirm.p3d b/addons/parachute/T10Schirm.p3d similarity index 100% rename from TO_MERGE/agm/Parachute/T10Schirm.p3d rename to addons/parachute/T10Schirm.p3d diff --git a/TO_MERGE/agm/Parachute/UI/watch_altimeter.paa b/addons/parachute/UI/watch_altimeter.paa similarity index 100% rename from TO_MERGE/agm/Parachute/UI/watch_altimeter.paa rename to addons/parachute/UI/watch_altimeter.paa diff --git a/TO_MERGE/agm/Parachute/clientInit.sqf b/addons/parachute/clientInit.sqf similarity index 100% rename from TO_MERGE/agm/Parachute/clientInit.sqf rename to addons/parachute/clientInit.sqf diff --git a/TO_MERGE/agm/Parachute/config.cpp b/addons/parachute/config.cpp similarity index 100% rename from TO_MERGE/agm/Parachute/config.cpp rename to addons/parachute/config.cpp diff --git a/TO_MERGE/agm/Parachute/functions/fn_doLanding.sqf b/addons/parachute/functions/fn_doLanding.sqf similarity index 100% rename from TO_MERGE/agm/Parachute/functions/fn_doLanding.sqf rename to addons/parachute/functions/fn_doLanding.sqf diff --git a/TO_MERGE/agm/Parachute/functions/fn_hideAltimeter.sqf b/addons/parachute/functions/fn_hideAltimeter.sqf similarity index 100% rename from TO_MERGE/agm/Parachute/functions/fn_hideAltimeter.sqf rename to addons/parachute/functions/fn_hideAltimeter.sqf diff --git a/TO_MERGE/agm/Parachute/functions/fn_onEachFrame.sqf b/addons/parachute/functions/fn_onEachFrame.sqf similarity index 100% rename from TO_MERGE/agm/Parachute/functions/fn_onEachFrame.sqf rename to addons/parachute/functions/fn_onEachFrame.sqf diff --git a/TO_MERGE/agm/Parachute/functions/fn_showAltimeter.sqf b/addons/parachute/functions/fn_showAltimeter.sqf similarity index 100% rename from TO_MERGE/agm/Parachute/functions/fn_showAltimeter.sqf rename to addons/parachute/functions/fn_showAltimeter.sqf diff --git a/TO_MERGE/agm/Parachute/stringtable.xml b/addons/parachute/stringtable.xml similarity index 100% rename from TO_MERGE/agm/Parachute/stringtable.xml rename to addons/parachute/stringtable.xml From 966cb6ffdfd6fe659fae0f9bb7c24e0210733f04 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Mon, 2 Feb 2015 22:52:08 +0200 Subject: [PATCH 047/211] Performed initial conversion from AGM to ACE. Added necessary boilerplate files. --- addons/parachute/$PBOPREFIX$ | 1 + addons/parachute/CfgEventHandlers.hpp | 10 +++ addons/parachute/README.md | 11 +++ addons/parachute/RscTitles.hpp | 8 +- addons/parachute/XEH_postInit.sqf | 30 +++++++ addons/parachute/XEH_preInit.sqf | 10 +++ addons/parachute/clientInit.sqf | 33 -------- addons/parachute/config.cpp | 81 ++++++------------- .../parachute/functions/fn_hideAltimeter.sqf | 18 ----- .../{fn_doLanding.sqf => fnc_doLanding.sqf} | 26 +++--- .../parachute/functions/fnc_hideAltimeter.sqf | 19 +++++ ...fn_onEachFrame.sqf => fnc_onEachFrame.sqf} | 23 +++--- ...howAltimeter.sqf => fnc_showAltimeter.sqf} | 27 ++++--- .../parachute/functions/script_component.hpp | 1 + addons/parachute/script_component.hpp | 12 +++ addons/parachute/stringtable.xml | 10 +-- 16 files changed, 169 insertions(+), 151 deletions(-) create mode 100644 addons/parachute/$PBOPREFIX$ create mode 100644 addons/parachute/CfgEventHandlers.hpp create mode 100644 addons/parachute/README.md create mode 100644 addons/parachute/XEH_postInit.sqf create mode 100644 addons/parachute/XEH_preInit.sqf delete mode 100644 addons/parachute/clientInit.sqf delete mode 100644 addons/parachute/functions/fn_hideAltimeter.sqf rename addons/parachute/functions/{fn_doLanding.sqf => fnc_doLanding.sqf} (52%) create mode 100644 addons/parachute/functions/fnc_hideAltimeter.sqf rename addons/parachute/functions/{fn_onEachFrame.sqf => fnc_onEachFrame.sqf} (63%) rename addons/parachute/functions/{fn_showAltimeter.sqf => fnc_showAltimeter.sqf} (69%) create mode 100644 addons/parachute/functions/script_component.hpp create mode 100644 addons/parachute/script_component.hpp diff --git a/addons/parachute/$PBOPREFIX$ b/addons/parachute/$PBOPREFIX$ new file mode 100644 index 0000000000..724d3e9c6d --- /dev/null +++ b/addons/parachute/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\parachute diff --git a/addons/parachute/CfgEventHandlers.hpp b/addons/parachute/CfgEventHandlers.hpp new file mode 100644 index 0000000000..8c7edda20f --- /dev/null +++ b/addons/parachute/CfgEventHandlers.hpp @@ -0,0 +1,10 @@ +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/parachute/README.md b/addons/parachute/README.md new file mode 100644 index 0000000000..fcf1a36333 --- /dev/null +++ b/addons/parachute/README.md @@ -0,0 +1,11 @@ +ace_parachute +=========== + +Improves parachutes and adds an altimeter. + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [CorruptedHeart](https://github.com/CorruptedHeart) +- [esteldunedain](https://github.com/esteldunedain) diff --git a/addons/parachute/RscTitles.hpp b/addons/parachute/RscTitles.hpp index ae90e0f472..d51bcad128 100644 --- a/addons/parachute/RscTitles.hpp +++ b/addons/parachute/RscTitles.hpp @@ -1,18 +1,18 @@ class RscText; class RscPicture; class RscTitles { - class AGM_Altimeter { + class ACE_Altimeter { idd = 9935; enableSimulation = 1; movingEnable = 0; fadeIn=0; fadeOut=1; duration = 10e10; - onLoad = "uiNamespace setVariable ['AGM_Altimeter', _this select 0];"; + onLoad = "uiNamespace setVariable ['ACE_Altimeter', _this select 0];"; class controls { class AltimeterImage: RscPicture { idc = 1200; - text = "AGM_Parachute\UI\watch_altimeter.paa"; + text = PATHTOF(UI\watch_altimeter.paa); x = 0.118437 * safezoneW + safezoneX; y = 0.621 * safezoneH + safezoneY; w = 0.20625 * safezoneW; @@ -48,4 +48,4 @@ class RscTitles { }; }; }; -}; \ No newline at end of file +}; diff --git a/addons/parachute/XEH_postInit.sqf b/addons/parachute/XEH_postInit.sqf new file mode 100644 index 0000000000..35df85aa7f --- /dev/null +++ b/addons/parachute/XEH_postInit.sqf @@ -0,0 +1,30 @@ +#include "script_component.hpp" +if (!hasInterface) exitWith {}; + +["ACE3", localize "STR_ACE_Parachute_showAltimeter", +{ + if (!('ACE_Altimeter' in assignedItems ace_player)) exitWith {false}; + if (isNull (missionNamespace getVariable ['ACE_Parachute_AltimeterFnc', scriptNull])) then { + [ace_player] call ACE_Parachute_fnc_showAltimeter + } else { + call ACE_Parachute_fnc_hideAltimeter + }; + true +}, [24, false, false, false], false, "keydown"] call CALLSTACK(cba_fnc_registerKeybind); + +[] spawn { + ACE_Parachuting_PFH = false; + while {true} do { + sleep 1; + // I believe this doesn't work for Zeus. + // vehicle _player + if (!ACE_Parachuting_PFH && {(vehicle ACE_player) isKindOf "ParachuteBase"}) then { + ACE_Parachuting_PFH = true; + ["ACE_ParachuteFix", "OnEachFrame", {call ACE_Parachute_fnc_onEachFrame;}] call BIS_fnc_addStackedEventHandler; + }; + }; +}; + +// don't show speed and height when in expert mode +["Parachute", {if (!cadetMode) then {_dlg = _this select 0; {(_dlg displayCtrl _x) ctrlShow false} forEach [121, 122, 1004, 1005, 1006, 1014];};}] call ACE_Core_fnc_addInfoDisplayEventHandler; //@todo addEventHandler infoDisplayChanged with select 1 == "Parachute" +["Soldier", {if (!cadetMode) then {_dlg = _this select 0; {_ctrl = (_dlg displayCtrl _x); _ctrl ctrlSetPosition [0,0,0,0]; _ctrl ctrlCommit 0;} forEach [380, 382]};}] call ACE_Core_fnc_addInfoDisplayEventHandler; //@todo addEventHandler infoDisplayChanged with select 1 == "Soldier" diff --git a/addons/parachute/XEH_preInit.sqf b/addons/parachute/XEH_preInit.sqf new file mode 100644 index 0000000000..ca247901e5 --- /dev/null +++ b/addons/parachute/XEH_preInit.sqf @@ -0,0 +1,10 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(doLanding); +PREP(hideAltimeter); +PREP(onEachFrame); +PREP(showAltimeter); + +ADDON = true; diff --git a/addons/parachute/clientInit.sqf b/addons/parachute/clientInit.sqf deleted file mode 100644 index 5cd18c3ea8..0000000000 --- a/addons/parachute/clientInit.sqf +++ /dev/null @@ -1,33 +0,0 @@ -/* - Name: AGM_Parachute_fnc_init - - Author: Garth de Wet (LH) - - Description: - Auto called by Arma. - Initialises the parachute system. - - Parameters: - - Returns: - Nothing - - Example: - call AGM_Parachute_fnc_init; -*/ -[] spawn { - AGM_Parachuting_PFH = false; - while {true} do { - sleep 1; - // I believe this doesn't work for Zeus. - // vehicle _player - if (!AGM_Parachuting_PFH && {(vehicle AGM_player) isKindOf "ParachuteBase"}) then { - AGM_Parachuting_PFH = true; - ["AGM_ParachuteFix", "OnEachFrame", {call AGM_Parachute_fnc_onEachFrame;}] call BIS_fnc_addStackedEventHandler; - }; - }; -}; - -// don't show speed and height when in expert mode -["Parachute", {if (!cadetMode) then {_dlg = _this select 0; {(_dlg displayCtrl _x) ctrlShow false} forEach [121, 122, 1004, 1005, 1006, 1014];};}] call AGM_Core_fnc_addInfoDisplayEventHandler; //@todo addEventHandler infoDisplayChanged with select 1 == "Parachute" -["Soldier", {if (!cadetMode) then {_dlg = _this select 0; {_ctrl = (_dlg displayCtrl _x); _ctrl ctrlSetPosition [0,0,0,0]; _ctrl ctrlCommit 0;} forEach [380, 382]};}] call AGM_Core_fnc_addInfoDisplayEventHandler; //@todo addEventHandler infoDisplayChanged with select 1 == "Soldier" diff --git a/addons/parachute/config.cpp b/addons/parachute/config.cpp index 78a3f42f75..924c8ccb2c 100644 --- a/addons/parachute/config.cpp +++ b/addons/parachute/config.cpp @@ -1,81 +1,52 @@ +#include "script_component.hpp" + class CfgPatches { - class AGM_Parachute { - units[] = {"AGM_NonSteerableParachute"}; - weapons[] = {"AGM_Altimeter"}; - requiredVersion = 0.60; - requiredAddons[] = {AGM_Core}; - version = "0.95"; - versionStr = "0.95"; - versionAr[] = {0,95,0}; + class ACE_Parachute { + units[] = {"ACE_NonSteerableParachute"}; + weapons[] = {"ACE_Altimeter"}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + VERSION_CONFIG; author[] = {"Garth 'LH' de Wet"}; + authorUrl = "http://garth.snakebiteink.co.za/"; }; }; -class CfgFunctions { - class AGM_Parachute { - class AGM_Parachute { - file = "\AGM_Parachute\functions"; - class onEachFrame; - class doLanding; - class hideAltimeter; - class showAltimeter; - }; - }; -}; - -class Extended_PostInit_EventHandlers { - class AGM_Parachute { - clientInit = "call compile preprocessFileLineNumbers '\AGM_Parachute\clientInit.sqf';"; - }; -}; - -class AGM_Core_Default_Keys { - class showAltimeterNew { - displayName = "$STR_AGM_Parachute_showAltimeter"; - condition = "'AGM_Altimeter' in assignedItems _player"; - statement = "if (isNull (missionNamespace getVariable ['AGM_Parachute_AltimeterFnc', scriptNull])) then {[_player] call AGM_Parachute_fnc_showAltimeter} else {call AGM_Parachute_fnc_hideAltimeter}"; - exceptions[] = {"AGM_Drag_isNotDragging", "AGM_Medical_canTreat", "AGM_Interaction_isNotEscorting"}; - key = 24; - shift = 0; - control = 0; - alt = 0; - }; -}; - +#include "CfgEventHandlers.hpp" #include "RscTitles.hpp" class CfgWeapons { class ItemWatch; - class AGM_Altimeter:ItemWatch { - author = "$STR_AGM_Core_AGMTeam"; - descriptionShort = "$STR_AGM_Parachute_AltimeterDescription"; - displayName = "$STR_AGM_Parachute_AltimeterDisplayName"; - picture = "\AGM_Parachute\UI\watch_altimeter.paa"; + class ACE_Altimeter:ItemWatch { + author = "$STR_ACE_Common_ACETeam"; + descriptionShort = "$STR_ACE_Parachute_AltimeterDescription"; + displayName = "$STR_ACE_Parachute_AltimeterDisplayName"; + picture = PATHTOF(UI\watch_altimeter.paa); }; }; class CfgVehicles { class Box_NATO_Support_F; - class AGM_Box_Misc: Box_NATO_Support_F { + class ACE_Box_Misc: Box_NATO_Support_F { class TransportItems { - class _xx_AGM_Altimeter { - name = "AGM_Altimeter"; + class _xx_ACE_Altimeter { + name = "ACE_Altimeter"; count = 6; }; }; class TransportBackpacks { - class _xx_AGM_NonSteerableParachute { - backpack = "AGM_NonSteerableParachute"; + class _xx_ACE_NonSteerableParachute { + backpack = "ACE_NonSteerableParachute"; count = 4; }; }; }; class B_Parachute; - class AGM_NonSteerableParachute: B_Parachute { - author = "$STR_AGM_Core_AGMTeam"; + class ACE_NonSteerableParachute: B_Parachute { + author = "$STR_ACE_Common_ACETeam"; scope = 2; - displayName = "$STR_AGM_Parachute_NonSteerableParachute"; + displayName = "$STR_ACE_Parachute_NonSteerableParachute"; //picture = "\A3\Characters_F\data\ui\icon_b_parachute_ca.paa"; // @todo //model = "\A3\Weapons_F\Ammoboxes\Bags\Backpack_Parachute"; // @todo backpackSimulation = "ParachuteNonSteerable"; //ParachuteSteerable @@ -84,7 +55,7 @@ class CfgVehicles { mass = 100; }; - class B_Soldier_05_f; class B_Pilot_F: B_Soldier_05_f {backpack = "AGM_NonSteerableParachute";}; - class I_Soldier_04_F; class I_pilot_F: I_Soldier_04_F {backpack = "AGM_NonSteerableParachute";}; - class O_helipilot_F; class O_Pilot_F: O_helipilot_F {backpack = "AGM_NonSteerableParachute";}; + class B_Soldier_05_f; class B_Pilot_F: B_Soldier_05_f {backpack = "ACE_NonSteerableParachute";}; + class I_Soldier_04_F; class I_pilot_F: I_Soldier_04_F {backpack = "ACE_NonSteerableParachute";}; + class O_helipilot_F; class O_Pilot_F: O_helipilot_F {backpack = "ACE_NonSteerableParachute";}; }; diff --git a/addons/parachute/functions/fn_hideAltimeter.sqf b/addons/parachute/functions/fn_hideAltimeter.sqf deleted file mode 100644 index 4144789613..0000000000 --- a/addons/parachute/functions/fn_hideAltimeter.sqf +++ /dev/null @@ -1,18 +0,0 @@ -/* - Name: AGM_Parachute_fnc_hideAltimeter - - Author: Garth de Wet (LH) - - Description: - Removes the altimeter from the screen. - - Parameters: - - Returns: - Nothing - - Example: - call AGM_Parachute_fnc_hideAltimeter -*/ -terminate AGM_Parachute_AltimeterFnc; -(["AGM_Altimeter"] call BIS_fnc_rscLayer) cutText ["","PLAIN",0,true]; diff --git a/addons/parachute/functions/fn_doLanding.sqf b/addons/parachute/functions/fnc_doLanding.sqf similarity index 52% rename from addons/parachute/functions/fn_doLanding.sqf rename to addons/parachute/functions/fnc_doLanding.sqf index a4d4cf9f81..24ce6b7a4e 100644 --- a/addons/parachute/functions/fn_doLanding.sqf +++ b/addons/parachute/functions/fnc_doLanding.sqf @@ -1,25 +1,27 @@ /* - Name: AGM_Parachute_fnc_doLanding - + Name: ACE_Parachute_fnc_doLanding + Author: Garth de Wet (LH) - + Description: Performs the landing animation fix - - Parameters: + + Parameters: 0: OBJECT - unit - + Returns: Nothing - + Example: - [player] call AGM_Parachute_fnc_doLanding; + [player] call ACE_Parachute_fnc_doLanding; */ +#include "script_component.hpp" +private ["_unit"]; _unit = _this select 0; -["AGM_ParachuteFix", "OnEachFrame"] call BIS_fnc_removeStackedEventHandler; -AGM_Parachuting_PFH = false; -[_unit, "AmovPercMevaSrasWrflDf_AmovPknlMstpSrasWrflDnon", 2] call AGM_Core_fnc_doAnimation; +["ACE_ParachuteFix", "OnEachFrame"] call BIS_fnc_removeStackedEventHandler; +ACE_Parachuting_PFH = false; +[_unit, "AmovPercMevaSrasWrflDf_AmovPknlMstpSrasWrflDnon", 2] call ACE_Core_fnc_doAnimation; [_unit] spawn { sleep 1; (_this select 0) playActionNow "Crouch"; -}; \ No newline at end of file +}; diff --git a/addons/parachute/functions/fnc_hideAltimeter.sqf b/addons/parachute/functions/fnc_hideAltimeter.sqf new file mode 100644 index 0000000000..bf2dbf87da --- /dev/null +++ b/addons/parachute/functions/fnc_hideAltimeter.sqf @@ -0,0 +1,19 @@ +/* + Name: ACE_Parachute_fnc_hideAltimeter + + Author: Garth de Wet (LH) + + Description: + Removes the altimeter from the screen. + + Parameters: + + Returns: + Nothing + + Example: + call ACE_Parachute_fnc_hideAltimeter +*/ +#include "script_component.hpp" +terminate ACE_Parachute_AltimeterFnc; +(["ACE_Altimeter"] call BIS_fnc_rscLayer) cutText ["","PLAIN",0,true]; diff --git a/addons/parachute/functions/fn_onEachFrame.sqf b/addons/parachute/functions/fnc_onEachFrame.sqf similarity index 63% rename from addons/parachute/functions/fn_onEachFrame.sqf rename to addons/parachute/functions/fnc_onEachFrame.sqf index 367396d8ac..ddb5c13f49 100644 --- a/addons/parachute/functions/fn_onEachFrame.sqf +++ b/addons/parachute/functions/fnc_onEachFrame.sqf @@ -1,23 +1,24 @@ /* - Name: AGM_Parachute_fnc_onEachFrame - + Name: ACE_Parachute_fnc_onEachFrame + Author: Garth de Wet (LH) - + Description: Checks if a unit can defuse an explosive - - Parameters: + + Parameters: 0: OBJECT - unit - + Returns: Nothing - + Example: - call AGM_Parachute_fnc_onEachFrame; + call ACE_Parachute_fnc_onEachFrame; */ +#include "script_component.hpp" private "_player"; -_player = AGM_player; -if (isNull _player) exitWith {["AGM_ParachuteFix", "OnEachFrame"] call BIS_fnc_removeStackedEventHandler;AGM_Parachuting_PFH = false;}; +_player = ACE_player; +if (isNull _player) exitWith {["ACE_ParachuteFix", "OnEachFrame"] call BIS_fnc_removeStackedEventHandler;ACE_Parachuting_PFH = false;}; if !((vehicle _player) isKindOf "ParachuteBase") exitWith {}; if (isTouchingGround _player) exitWith {}; @@ -27,5 +28,5 @@ _pos = getPosASL (Vehicle _player); if ((lineIntersects [_pos, _pos vectorAdd [0,0,-0.5], vehicle _player, _player]) || {((ASLtoATL _pos) select 2) < 0.75}) then { // I believe this will not work for Zeus units. deleteVehicle (vehicle _player); - [_player] call AGM_Parachute_fnc_doLanding; + [_player] call ACE_Parachute_fnc_doLanding; }; diff --git a/addons/parachute/functions/fn_showAltimeter.sqf b/addons/parachute/functions/fnc_showAltimeter.sqf similarity index 69% rename from addons/parachute/functions/fn_showAltimeter.sqf rename to addons/parachute/functions/fnc_showAltimeter.sqf index c7547335c0..f2b03b1538 100644 --- a/addons/parachute/functions/fn_showAltimeter.sqf +++ b/addons/parachute/functions/fnc_showAltimeter.sqf @@ -1,26 +1,27 @@ /* - Name: AGM_Parachute_fnc_showAltimeter - + Name: ACE_Parachute_fnc_showAltimeter + Author: Garth de Wet (LH) - + Description: Displays the altimeter on screen. - - Parameters: + + Parameters: 0: OBJECT - unit to track for the altimeter - + Returns: Nothing - + Example: - [player] call AGM_Parachute_fnc_showAltimeter + [player] call ACE_Parachute_fnc_showAltimeter */ +#include "script_component.hpp" private ["_unit"]; _unit = _this select 0; -(["AGM_Altimeter"] call BIS_fnc_rscLayer) cutRsc ["AGM_Altimeter", "PLAIN",0,true]; -if (isNull (uiNamespace getVariable ["AGM_Altimeter", displayNull])) exitWith {}; +(["ACE_Altimeter"] call BIS_fnc_rscLayer) cutRsc ["ACE_Altimeter", "PLAIN",0,true]; +if (isNull (uiNamespace getVariable ["ACE_Altimeter", displayNull])) exitWith {}; -AGM_Parachute_AltimeterFnc = [uiNamespace getVariable ["AGM_Altimeter", displayNull], _unit] spawn { +ACE_Parachute_AltimeterFnc = [uiNamespace getVariable ["ACE_Altimeter", displayNull], _unit] spawn { private ["_height", "_hour", "_minute", "_descentRate"]; _unit = _this select 1; _height = floor ((getPosASL _unit) select 2); @@ -36,7 +37,7 @@ AGM_Parachute_AltimeterFnc = [uiNamespace getVariable ["AGM_Altimeter", displayN _curTime = time; _prevTime = _curTime; while {true} do { - _TimeText ctrlSetText (format ["%1:%2",[_hour, 2] call AGM_Core_fnc_numberToDigitsString,[_minute, 2] call AGM_Core_fnc_numberToDigitsString]); + _TimeText ctrlSetText (format ["%1:%2",[_hour, 2] call ACE_Core_fnc_numberToDigitsString,[_minute, 2] call ACE_Core_fnc_numberToDigitsString]); _HeightText ctrlSetText (format ["%1", floor(_height)]); _DecendRate ctrlSetText (format ["%1", _descentRate max 0]); sleep 0.2; @@ -47,6 +48,6 @@ AGM_Parachute_AltimeterFnc = [uiNamespace getVariable ["AGM_Altimeter", displayN _prevTime = _curTime; // close altimeter, @todo _unit can change due to team switch, zeus! - if !("AGM_Altimeter" in assignedItems _unit) exitWith {call AGM_Parachute_fnc_hideAltimeter}; + if !("ACE_Altimeter" in assignedItems _unit) exitWith {call ACE_Parachute_fnc_hideAltimeter}; }; }; diff --git a/addons/parachute/functions/script_component.hpp b/addons/parachute/functions/script_component.hpp new file mode 100644 index 0000000000..29f2e63e07 --- /dev/null +++ b/addons/parachute/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\parachute\script_component.hpp" diff --git a/addons/parachute/script_component.hpp b/addons/parachute/script_component.hpp new file mode 100644 index 0000000000..0b0493b202 --- /dev/null +++ b/addons/parachute/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT parachute +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_PARACHUTE + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_PARACHUTE + #define DEBUG_SETTINGS DEBUG_SETTINGS_PARACHUTE +#endif + +#include "\z\ace\addons\main\script_macros.hpp" diff --git a/addons/parachute/stringtable.xml b/addons/parachute/stringtable.xml index f1542b1db8..f97b389eeb 100644 --- a/addons/parachute/stringtable.xml +++ b/addons/parachute/stringtable.xml @@ -1,8 +1,8 @@  - + - + Altimeter Altimètre Höhenmesser @@ -12,7 +12,7 @@ Magasságmérő Высотомер - + Altimeter Watch Montre altimètre Höhenmesser @@ -22,7 +22,7 @@ Magasságmérő Часы с высотомером - + Used to show height, descent rate and the time. Affiche la hauteur, le taux de descente et l'heure. Zeigt Höhe, Fallgeschwindigkeit und Uhrzeit. @@ -32,7 +32,7 @@ Mutatja a magasságot, zuhanás sebességét és az időt. Используется для определения высоты, скорости снижения и времени. - + Non-Steerable Parachute Ungelenkter Fallschirm Paracaídas no dirigible From aca1c0c6cf72a7672d536a23dbff2157b8978413 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Mon, 2 Feb 2015 23:58:24 +0200 Subject: [PATCH 048/211] Converted to use CBA PFH's and MACROs. --- addons/parachute/XEH_postInit.sqf | 28 +++++------ addons/parachute/functions/fnc_doLanding.sqf | 15 +++--- .../parachute/functions/fnc_hideAltimeter.sqf | 2 +- .../parachute/functions/fnc_onEachFrame.sqf | 13 +++-- .../parachute/functions/fnc_showAltimeter.sqf | 49 +++++++++---------- 5 files changed, 51 insertions(+), 56 deletions(-) diff --git a/addons/parachute/XEH_postInit.sqf b/addons/parachute/XEH_postInit.sqf index 35df85aa7f..694d8b2c6e 100644 --- a/addons/parachute/XEH_postInit.sqf +++ b/addons/parachute/XEH_postInit.sqf @@ -4,27 +4,23 @@ if (!hasInterface) exitWith {}; ["ACE3", localize "STR_ACE_Parachute_showAltimeter", { if (!('ACE_Altimeter' in assignedItems ace_player)) exitWith {false}; - if (isNull (missionNamespace getVariable ['ACE_Parachute_AltimeterFnc', scriptNull])) then { - [ace_player] call ACE_Parachute_fnc_showAltimeter + if (!(missionNamespace getVariable [QGVAR(AltimeterActive), false])) then { + [ace_player] call FUNC(showAltimeter); } else { - call ACE_Parachute_fnc_hideAltimeter + call FUNC(hideAltimeter); }; true }, [24, false, false, false], false, "keydown"] call CALLSTACK(cba_fnc_registerKeybind); -[] spawn { - ACE_Parachuting_PFH = false; - while {true} do { - sleep 1; - // I believe this doesn't work for Zeus. - // vehicle _player - if (!ACE_Parachuting_PFH && {(vehicle ACE_player) isKindOf "ParachuteBase"}) then { - ACE_Parachuting_PFH = true; - ["ACE_ParachuteFix", "OnEachFrame", {call ACE_Parachute_fnc_onEachFrame;}] call BIS_fnc_addStackedEventHandler; - }; +GVAR(PFH) = false; + +[{ + if (!GVAR(PFH) && {(vehicle ACE_player) isKindOf "ParachuteBase"}) then { + GVAR(PFH) = true; + [FUNC(onEachFrame), 0.1, []] call CALLSTACK(cba_fnc_addPerFrameHandler); }; -}; +}, 1, []] call CALLSTACK(cba_fnc_addPerFrameHandler); // don't show speed and height when in expert mode -["Parachute", {if (!cadetMode) then {_dlg = _this select 0; {(_dlg displayCtrl _x) ctrlShow false} forEach [121, 122, 1004, 1005, 1006, 1014];};}] call ACE_Core_fnc_addInfoDisplayEventHandler; //@todo addEventHandler infoDisplayChanged with select 1 == "Parachute" -["Soldier", {if (!cadetMode) then {_dlg = _this select 0; {_ctrl = (_dlg displayCtrl _x); _ctrl ctrlSetPosition [0,0,0,0]; _ctrl ctrlCommit 0;} forEach [380, 382]};}] call ACE_Core_fnc_addInfoDisplayEventHandler; //@todo addEventHandler infoDisplayChanged with select 1 == "Soldier" +["Parachute", {if (!cadetMode) then {_dlg = _this select 0; {(_dlg displayCtrl _x) ctrlShow false} forEach [121, 122, 1004, 1005, 1006, 1014];};}] call EFUNC(common,addInfoDisplayEventHandler); //@todo addEventHandler infoDisplayChanged with select 1 == "Parachute" +["Soldier", {if (!cadetMode) then {_dlg = _this select 0; {_ctrl = (_dlg displayCtrl _x); _ctrl ctrlSetPosition [0,0,0,0]; _ctrl ctrlCommit 0;} forEach [380, 382]};}] call EFUNC(common,addInfoDisplayEventHandler); //@todo addEventHandler infoDisplayChanged with select 1 == "Soldier" diff --git a/addons/parachute/functions/fnc_doLanding.sqf b/addons/parachute/functions/fnc_doLanding.sqf index 24ce6b7a4e..b2bbb97e13 100644 --- a/addons/parachute/functions/fnc_doLanding.sqf +++ b/addons/parachute/functions/fnc_doLanding.sqf @@ -18,10 +18,11 @@ #include "script_component.hpp" private ["_unit"]; _unit = _this select 0; -["ACE_ParachuteFix", "OnEachFrame"] call BIS_fnc_removeStackedEventHandler; -ACE_Parachuting_PFH = false; -[_unit, "AmovPercMevaSrasWrflDf_AmovPknlMstpSrasWrflDnon", 2] call ACE_Core_fnc_doAnimation; -[_unit] spawn { - sleep 1; - (_this select 0) playActionNow "Crouch"; -}; +GVAR(PFH) = false; +[_unit, "AmovPercMevaSrasWrflDf_AmovPknlMstpSrasWrflDnon", 2] call EFUNC(common,doAnimation); +[{ + if (diag_tickTime >= ((_this select 0) select 0) + 1) then { + ((_this select 0) select 1) playActionNow "Crouch"; + [(_this select 1)] call CALLSTACK(cba_fnc_removePerFrameHandler); + }; +}, 1, [diag_tickTime,_unit]] call CALLSTACK(cba_fnc_addPerFrameHandler); diff --git a/addons/parachute/functions/fnc_hideAltimeter.sqf b/addons/parachute/functions/fnc_hideAltimeter.sqf index bf2dbf87da..cd3b562484 100644 --- a/addons/parachute/functions/fnc_hideAltimeter.sqf +++ b/addons/parachute/functions/fnc_hideAltimeter.sqf @@ -15,5 +15,5 @@ call ACE_Parachute_fnc_hideAltimeter */ #include "script_component.hpp" -terminate ACE_Parachute_AltimeterFnc; +GVAR(AltimeterActive) = false; (["ACE_Altimeter"] call BIS_fnc_rscLayer) cutText ["","PLAIN",0,true]; diff --git a/addons/parachute/functions/fnc_onEachFrame.sqf b/addons/parachute/functions/fnc_onEachFrame.sqf index ddb5c13f49..0235c43182 100644 --- a/addons/parachute/functions/fnc_onEachFrame.sqf +++ b/addons/parachute/functions/fnc_onEachFrame.sqf @@ -18,15 +18,18 @@ #include "script_component.hpp" private "_player"; _player = ACE_player; -if (isNull _player) exitWith {["ACE_ParachuteFix", "OnEachFrame"] call BIS_fnc_removeStackedEventHandler;ACE_Parachuting_PFH = false;}; +if (!GVAR(PFH)) exitWith {[(_this select 1)] call CALLSTACK(cba_fnc_removePerFrameHandler);}; +if (isNull _player) exitWith {[(_this select 1)] call CALLSTACK(cba_fnc_removePerFrameHandler);GVAR(PFH) = false;}; if !((vehicle _player) isKindOf "ParachuteBase") exitWith {}; -if (isTouchingGround _player) exitWith {}; +if (isTouchingGround _player) exitWith {[(_this select 1)] call CALLSTACK(cba_fnc_removePerFrameHandler);GVAR(PFH) = false;}; -private ["_pos", "_intersects"]; -_pos = getPosASL (Vehicle _player); +private ["_pos"]; +_pos = getPosASL (vehicle _player); if ((lineIntersects [_pos, _pos vectorAdd [0,0,-0.5], vehicle _player, _player]) || {((ASLtoATL _pos) select 2) < 0.75}) then { + [(_this select 1)] call CALLSTACK(cba_fnc_removePerFrameHandler); + GVAR(PFH) = false; // I believe this will not work for Zeus units. deleteVehicle (vehicle _player); - [_player] call ACE_Parachute_fnc_doLanding; + [_player] call FUNC(doLanding); }; diff --git a/addons/parachute/functions/fnc_showAltimeter.sqf b/addons/parachute/functions/fnc_showAltimeter.sqf index f2b03b1538..2a3cab2752 100644 --- a/addons/parachute/functions/fnc_showAltimeter.sqf +++ b/addons/parachute/functions/fnc_showAltimeter.sqf @@ -21,33 +21,28 @@ _unit = _this select 0; (["ACE_Altimeter"] call BIS_fnc_rscLayer) cutRsc ["ACE_Altimeter", "PLAIN",0,true]; if (isNull (uiNamespace getVariable ["ACE_Altimeter", displayNull])) exitWith {}; -ACE_Parachute_AltimeterFnc = [uiNamespace getVariable ["ACE_Altimeter", displayNull], _unit] spawn { - private ["_height", "_hour", "_minute", "_descentRate"]; - _unit = _this select 1; - _height = floor ((getPosASL _unit) select 2); - _oldHeight = _height; - _descentRate = 0; +GVAR(AltimeterActive) = true; +[{ + if (!GVAR(AltimeterActive)) exitWith {[_this select 1] call CALLSTACK(cba_fnc_removePerFrameEventHandler);}; + disableSerialization; + EXPLODE_4_PVT(_this select 0,_display,_unit,_oldHeight,_prevTime); + if !("ACE_Altimeter" in assignedItems _unit) exitWith {[_this select 1] call CALLSTACK(cba_fnc_removePerFrameEventHandler);call FUNC(hideAltimeter);}; + + private ["_height", "_hour", "_minute", "_descentRate","_HeightText", "_DecendRate", "_TimeText", "_curTime"]; + _HeightText = _display displayCtrl 1100; + _DecendRate = _display displayCtrl 1000; + _TimeText = _display displayCtrl 1001; _hour = floor daytime; _minute = floor ((daytime - _hour) * 60); - disableSerialization; - private ["_HeightText", "_DecendRate", "_TimeText", "_prevTime", "_curTime"]; - _HeightText = (_this select 0) displayCtrl 1100; - _DecendRate = (_this select 0) displayCtrl 1000; - _TimeText = (_this select 0) displayCtrl 1001; - _curTime = time; - _prevTime = _curTime; - while {true} do { - _TimeText ctrlSetText (format ["%1:%2",[_hour, 2] call ACE_Core_fnc_numberToDigitsString,[_minute, 2] call ACE_Core_fnc_numberToDigitsString]); - _HeightText ctrlSetText (format ["%1", floor(_height)]); - _DecendRate ctrlSetText (format ["%1", _descentRate max 0]); - sleep 0.2; - _height = (getPosASL _unit) select 2; - _curTime = time; - _descentRate = floor ((_oldHeight - _height) / (_curTime - _prevTime)); - _oldHeight = _height; - _prevTime = _curTime; - // close altimeter, @todo _unit can change due to team switch, zeus! - if !("ACE_Altimeter" in assignedItems _unit) exitWith {call ACE_Parachute_fnc_hideAltimeter}; - }; -}; + _height = (getPosASL _unit) select 2; + _curTime = time; + _descentRate = floor ((_oldHeight - _height) / (_curTime - _prevTime)); + + _TimeText ctrlSetText (format ["%1:%2",[_hour, 2] call EFUNC(common,numberToDigitsString),[_minute, 2] call EFUNC(common,numberToDigitsString)]); + _HeightText ctrlSetText (format ["%1", floor(_height)]); + _DecendRate ctrlSetText (format ["%1", _descentRate max 0]); + + (_this select 0) set [2, _height]; + (_this select 0) set [3, _curTime]; +}, 0.2, [uiNamespace getVariable ["ACE_Altimeter", displayNull], _unit,floor ((getPosASL _unit) select 2), time]] call CALLSTACK(cba_fnc_addPerFrameEventHandler); From 9e1cd9a1944e7f8e60ac8580047d807d7ca53769 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Tue, 3 Feb 2015 00:05:03 +0200 Subject: [PATCH 049/211] Fixed headers to be more consistent with ACE. --- addons/parachute/XEH_postInit.sqf | 15 ++++++++++ addons/parachute/XEH_preInit.sqf | 15 ++++++++++ addons/parachute/functions/fnc_doLanding.sqf | 30 +++++++++---------- .../parachute/functions/fnc_hideAltimeter.sqf | 29 +++++++++--------- .../parachute/functions/fnc_onEachFrame.sqf | 30 +++++++++---------- .../parachute/functions/fnc_showAltimeter.sqf | 30 +++++++++---------- 6 files changed, 86 insertions(+), 63 deletions(-) diff --git a/addons/parachute/XEH_postInit.sqf b/addons/parachute/XEH_postInit.sqf index 694d8b2c6e..4ce50e8631 100644 --- a/addons/parachute/XEH_postInit.sqf +++ b/addons/parachute/XEH_postInit.sqf @@ -1,3 +1,18 @@ +/* + * Author: Garth 'L-H' de Wet + * Initialises the parachute system. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * None + * + * Public: No + */ #include "script_component.hpp" if (!hasInterface) exitWith {}; diff --git a/addons/parachute/XEH_preInit.sqf b/addons/parachute/XEH_preInit.sqf index ca247901e5..91c24606c6 100644 --- a/addons/parachute/XEH_preInit.sqf +++ b/addons/parachute/XEH_preInit.sqf @@ -1,3 +1,18 @@ +/* + * Author: Garth 'L-H' de Wet + * Initialises the parachute system. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * None + * + * Public: No + */ #include "script_component.hpp" ADDON = false; diff --git a/addons/parachute/functions/fnc_doLanding.sqf b/addons/parachute/functions/fnc_doLanding.sqf index b2bbb97e13..e8a6efb3f5 100644 --- a/addons/parachute/functions/fnc_doLanding.sqf +++ b/addons/parachute/functions/fnc_doLanding.sqf @@ -1,20 +1,18 @@ /* - Name: ACE_Parachute_fnc_doLanding - - Author: Garth de Wet (LH) - - Description: - Performs the landing animation fix - - Parameters: - 0: OBJECT - unit - - Returns: - Nothing - - Example: - [player] call ACE_Parachute_fnc_doLanding; -*/ + * Author: Garth 'L-H' de Wet + * Performs the landing animation fix + * + * Arguments: + * 0: unit + * + * Return Value: + * None + * + * Example: + * [player] call ACE_Parachute_fnc_doLanding; + * + * Public: No + */ #include "script_component.hpp" private ["_unit"]; _unit = _this select 0; diff --git a/addons/parachute/functions/fnc_hideAltimeter.sqf b/addons/parachute/functions/fnc_hideAltimeter.sqf index cd3b562484..dd7d29fce4 100644 --- a/addons/parachute/functions/fnc_hideAltimeter.sqf +++ b/addons/parachute/functions/fnc_hideAltimeter.sqf @@ -1,19 +1,18 @@ /* - Name: ACE_Parachute_fnc_hideAltimeter - - Author: Garth de Wet (LH) - - Description: - Removes the altimeter from the screen. - - Parameters: - - Returns: - Nothing - - Example: - call ACE_Parachute_fnc_hideAltimeter -*/ + * Author: Garth 'L-H' de Wet + * Removes the altimeter from the screen. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ACE_Parachute_fnc_hideAltimeter + * + * Public: No + */ #include "script_component.hpp" GVAR(AltimeterActive) = false; (["ACE_Altimeter"] call BIS_fnc_rscLayer) cutText ["","PLAIN",0,true]; diff --git a/addons/parachute/functions/fnc_onEachFrame.sqf b/addons/parachute/functions/fnc_onEachFrame.sqf index 0235c43182..64c802f9b6 100644 --- a/addons/parachute/functions/fnc_onEachFrame.sqf +++ b/addons/parachute/functions/fnc_onEachFrame.sqf @@ -1,20 +1,18 @@ /* - Name: ACE_Parachute_fnc_onEachFrame - - Author: Garth de Wet (LH) - - Description: - Checks if a unit can defuse an explosive - - Parameters: - 0: OBJECT - unit - - Returns: - Nothing - - Example: - call ACE_Parachute_fnc_onEachFrame; -*/ + * Author: Garth 'L-H' de Wet + * Checks whether the unit should preform landing. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ACE_Parachute_fnc_onEachFrame; + * + * Public: No + */ #include "script_component.hpp" private "_player"; _player = ACE_player; diff --git a/addons/parachute/functions/fnc_showAltimeter.sqf b/addons/parachute/functions/fnc_showAltimeter.sqf index 2a3cab2752..1b3edc26f5 100644 --- a/addons/parachute/functions/fnc_showAltimeter.sqf +++ b/addons/parachute/functions/fnc_showAltimeter.sqf @@ -1,20 +1,18 @@ /* - Name: ACE_Parachute_fnc_showAltimeter - - Author: Garth de Wet (LH) - - Description: - Displays the altimeter on screen. - - Parameters: - 0: OBJECT - unit to track for the altimeter - - Returns: - Nothing - - Example: - [player] call ACE_Parachute_fnc_showAltimeter -*/ + * Author: Garth 'L-H' de Wet + * Displays the altimeter on screen. + * + * Arguments: + * 0: unit + * + * Return Value: + * None + * + * Example: + * [player] call ACE_Parachute_fnc_showAltimeter + * + * Public: Yes + */ #include "script_component.hpp" private ["_unit"]; _unit = _this select 0; From d339b9567dcf7554e768d2a776be93613f9c1936 Mon Sep 17 00:00:00 2001 From: bux578 Date: Mon, 2 Feb 2015 23:28:27 +0100 Subject: [PATCH 050/211] add header & PFH WIP --- addons/switchunits/CfgEventHandlers.hpp | 6 +- .../{XEH_postInit.sqf => XEH_clientInit.sqf} | 31 ++-- .../functions/fnc_addMapFunction.sqf | 30 ++-- .../functions/fnc_handleMapClick.sqf | 52 +++--- .../switchunits/functions/fnc_initPlayer.sqf | 30 ++-- .../switchunits/functions/fnc_isValidAi.sqf | 30 ++-- .../switchunits/functions/fnc_markAiOnMap.sqf | 103 ++++++------ addons/switchunits/functions/fnc_module.sqf | 32 ++-- .../functions/fnc_nearestPlayers.sqf | 30 ++-- .../switchunits/functions/fnc_switchBack.sqf | 56 ++++--- .../switchunits/functions/fnc_switchUnit.sqf | 150 ++++++++++-------- 11 files changed, 288 insertions(+), 262 deletions(-) rename addons/switchunits/{XEH_postInit.sqf => XEH_clientInit.sqf} (56%) diff --git a/addons/switchunits/CfgEventHandlers.hpp b/addons/switchunits/CfgEventHandlers.hpp index 47dcd984d1..38f9883743 100644 --- a/addons/switchunits/CfgEventHandlers.hpp +++ b/addons/switchunits/CfgEventHandlers.hpp @@ -5,7 +5,7 @@ class Extended_PreInit_EventHandlers { }; class Extended_PostInit_EventHandlers { - class ADDON { - postInit = QUOTE(call COMPILE_FILE(XEH_postInit) ); - }; + class ADDON { + clientInit = QUOTE( call COMPILE_FILE(XEH_clientInit) ); + }; }; diff --git a/addons/switchunits/XEH_postInit.sqf b/addons/switchunits/XEH_clientInit.sqf similarity index 56% rename from addons/switchunits/XEH_postInit.sqf rename to addons/switchunits/XEH_clientInit.sqf index 3ce84ef838..cf6873c14b 100644 --- a/addons/switchunits/XEH_postInit.sqf +++ b/addons/switchunits/XEH_clientInit.sqf @@ -1,17 +1,22 @@ /* - Author(s): - bux578 -*/ + * Author: bux578 + * Initializes the SwitchUnits pbo. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * None + * + * Public: No + */ #include "script_component.hpp" -//0 spawn { - -private ["_sides"]; - -//waitUntil {sleep 0.5; AGM_SwitchUnits_EnableSwitchUnits}; - -//_side = [west, east, independent, civilian] select AGM_SwitchUnits_SwitchUnitsAllowedForSide; +private "_sides"; _sides = []; @@ -20,8 +25,8 @@ if(GVAR(SwitchToEast)) then {_sides pushBack east}; if(GVAR(SwitchToIndependent)) then {_sides pushBack independent}; if(GVAR(SwitchToCivilian)) then {_sides pushBack civilian}; +hint "TEST"; + if (player getVariable ["ACE_CanSwitchUnits", false]) then { -[player, _sides] call FUNC(initPlayer); + [player, _sides] call FUNC(initPlayer); }; - -//}; diff --git a/addons/switchunits/functions/fnc_addMapFunction.sqf b/addons/switchunits/functions/fnc_addMapFunction.sqf index 1c4e158d80..62a7c42a22 100644 --- a/addons/switchunits/functions/fnc_addMapFunction.sqf +++ b/addons/switchunits/functions/fnc_addMapFunction.sqf @@ -1,19 +1,19 @@ /* - Name: ACE_SwitchUnits_fnc_addMapFunction - - Author(s): - bux578 - - Description: - Adds a mapClick Eventhandler - - Parameters: - 0: OBJECT - unit - 1: ARRAY - sides - - Returns: - VOID -*/ + * Author: bux578 + * Adds a mapClick Eventhandler + * + * Arguments: + * 0: unit + * 1: sides > + * + * Return Value: + * None + * + * Example: + * [_unit, _sides] call FUNC(addMapFunction) + * + * Public: No + */ #include "script_component.hpp" diff --git a/addons/switchunits/functions/fnc_handleMapClick.sqf b/addons/switchunits/functions/fnc_handleMapClick.sqf index bce28963da..3033071984 100644 --- a/addons/switchunits/functions/fnc_handleMapClick.sqf +++ b/addons/switchunits/functions/fnc_handleMapClick.sqf @@ -1,45 +1,41 @@ /* - Name: ACE_SwitchUnits_fnc_handleMapClick - - Author(s): - bux578 - - Description: - Finds the clicked unit - - Parameters: - 0: OBJECT - MapClickEventHandlerArgs - 0: OBJECT - unit // useless - 1: ARRAY - sides - - Returns: - VOID -*/ + * Author: bux578 + * Switches to a unit close to a clicked map position + * + * Arguments: + * 0: unit + * 1: sides > + * + * Return Value: + * None + * + * Example: + * [_unit, _sides] call FUNC(handleMapClick) + * + * Public: No + */ #include "script_component.hpp" private ["_sides", "_pos", "_sideNearest"]; -// that's wrong -//_currentPlayerUnit = (_this select 0) select 0; - _sides = (_this select 0) select 1; _pos = _this select 1; _sideNearest = []; { - if ([_x] call FUNC(isValidAi) && (side group _x in _sides)) then { - _sideNearest pushBack _x; - }; + if ([_x] call FUNC(isValidAi) && (side group _x in _sides)) then { + _sideNearest pushBack _x; + }; } forEach (nearestObjects [_pos, ["Man"], 20]); if (count _sideNearest > 0) then { - private ["_switchUnit"]; - - _switchUnit = _sideNearest select 0; - [ACE_player, _switchUnit] call FUNC(switchUnit); - - openMap false; + private ["_switchUnit"]; + + _switchUnit = _sideNearest select 0; + [ACE_player, _switchUnit] call FUNC(switchUnit); + + openMap false; }; diff --git a/addons/switchunits/functions/fnc_initPlayer.sqf b/addons/switchunits/functions/fnc_initPlayer.sqf index 81e4fc259f..f904a460c2 100644 --- a/addons/switchunits/functions/fnc_initPlayer.sqf +++ b/addons/switchunits/functions/fnc_initPlayer.sqf @@ -1,19 +1,19 @@ /* - Name: ACE_SwitchUnits_fnc_initPlayer - - Author(s): - bux578 - - Description: - Initializes the player - - Parameters: - 0: OBJECT - player - 1: ARRAY - Array containing selected sides - - Returns: - VOID -*/ + * Author: bux578 + * Initializes the player + * + * Arguments: + * 0: player + * 1: sides > + * + * Return Value: + * None + * + * Example: + * [_player, _sides] call FUNC(initPlayer) + * + * Public: No + */ #include "script_component.hpp" diff --git a/addons/switchunits/functions/fnc_isValidAi.sqf b/addons/switchunits/functions/fnc_isValidAi.sqf index 5beb59d430..61c2401da9 100644 --- a/addons/switchunits/functions/fnc_isValidAi.sqf +++ b/addons/switchunits/functions/fnc_isValidAi.sqf @@ -1,22 +1,22 @@ /* - Name: ACE_SwitchUnits_fnc_isValidAi - - Author(s): - bux578 - - Description: - Checks if AI is a valid target for switching - - Parameters: - 0: OBJECT - unit - - Returns: - VOID -*/ + * Author: bux578 + * Checks if AI is a valid target for switching. + * + * Arguments: + * 0: unit + * + * Return Value: + * Boolean + * + * Example: + * [_unit] call FUNC(isValidAi) + * + * Public: Yes + */ #include "script_component.hpp" -private ["_unit"]; +private "_unit"; _unit = _this select 0; diff --git a/addons/switchunits/functions/fnc_markAiOnMap.sqf b/addons/switchunits/functions/fnc_markAiOnMap.sqf index e54673c1a5..c07199dc31 100644 --- a/addons/switchunits/functions/fnc_markAiOnMap.sqf +++ b/addons/switchunits/functions/fnc_markAiOnMap.sqf @@ -1,69 +1,68 @@ /* - Name: ACE_SwitchUnits_fnc_markAiOnMap - - Author(s): - bux578 - - Description: - Creates markers for AI units for given sides - Marks players in a different color - - Parameters: - 0: OBJECT - side - - Returns: - VOID -*/ + * Author: bux578 + * Creates markers for AI units for given sides. + * Marks players in a different colour. + * + * Arguments: + * 0: side + * + * Return Value: + * None + * + * Example: + * [west, east] call FUNC(markAiOnMap) + * + * Public: No + */ #include "script_component.hpp" -private ["_sidesToShow"]; +private "_sidesToShow"; _sidesToShow = _this select 0; -_sidesToShow spawn { +GVAR(AllMarkerNames) = []; - private ["_sides", "_allMarkerNames"]; - _sides = _this; - _allMarkerNames = []; +DFUNC(pfhMarkAiOnMap) = { + private ["_args", "_sides"]; + _args = _this select 0; + _sides = _args select 0; - while { true } do { - sleep 1.5; + // delete markers + { + deleteMarkerLocal _x; + } forEach GVAR(AllMarkerNames); - // delete markers + if (alive ACE_player && {GVAR(OriginalUnit) getVariable ["ACE_CanSwitchUnits", false]}) then { + + // create markers { - deleteMarkerLocal _x; - } forEach _allMarkerNames; + if (([_x] call FUNC(isValidAi) && (side group _x in _sides)) || (_x getVariable [QGVAR(IsPlayerControlled), false])) then { + private ["_markerName", "_marker", "_markerColor"]; - if (alive ACE_player && {GVAR(OriginalUnit) getVariable ["ACE_CanSwitchUnits", false]}) then { + //_markerName = format ["%1", [_x] call EFUNC(common,getName)]; + _markerName = str _x; - // create markers - { - if (([_x] call FUNC(isValidAi) && (side group _x in _sides)) || (_x getVariable [QGVAR(IsPlayerControlled), false])) then { - private ["_markerName", "_marker", "_markerColor"]; + _marker = createMarkerLocal [_markerName, position _x]; + _markerName setMarkerTypeLocal "mil_triangle"; + _markerName setMarkerShapeLocal "ICON"; + _markerName setMarkerSizeLocal [0.5,0.7]; + _markerName setMarkerDirLocal getDir _x; - //_markerName = format ["%1", [_x] call EFUNC(common,getName)]; - _markerName = str _x; + // commy's one liner magic + _markerColor = format ["Color%1", side group _x]; - _marker = createMarkerLocal [_markerName, position _x]; - _markerName setMarkerTypeLocal "mil_triangle"; - _markerName setMarkerShapeLocal "ICON"; - _markerName setMarkerSizeLocal [0.5,0.7]; - _markerName setMarkerDirLocal getDir _x; - - // commy's one liner magic - _markerColor = format ["Color%1", side group _x]; - - if ((_x getVariable [QGVAR(IsPlayerControlled), false])) then { - _markerName setMarkerColorLocal "ColorOrange"; - _markerName setMarkerTextLocal (_x getVariable [QGVAR(PlayerControlledName), ""]); - } else { - _markerName setMarkerColorLocal _markerColor; - _markerName setMarkerTextLocal (getText (configFile >> "CfgVehicles" >> typeOf _x >> "displayName")); - }; - - _allMarkerNames pushBack _markerName; + if ((_x getVariable [QGVAR(IsPlayerControlled), false])) then { + _markerName setMarkerColorLocal "ColorOrange"; + _markerName setMarkerTextLocal (_x getVariable [QGVAR(PlayerControlledName), ""]); + } else { + _markerName setMarkerColorLocal _markerColor; + _markerName setMarkerTextLocal (getText (configFile >> "CfgVehicles" >> typeOf _x >> "displayName")); }; - } forEach allUnits; - }; + + GVAR(AllMarkerNames) pushBack _markerName; + }; + } forEach allUnits; }; }; + +[FUNC(pfhMarkAiOnMap), 1, _sidesToShow] call CBA_fnc_addPerFrameHandler; diff --git a/addons/switchunits/functions/fnc_module.sqf b/addons/switchunits/functions/fnc_module.sqf index c4f5c378c2..9444cb5f61 100644 --- a/addons/switchunits/functions/fnc_module.sqf +++ b/addons/switchunits/functions/fnc_module.sqf @@ -1,20 +1,20 @@ /* - Name: ACE_SwitchUnits_fnc_module - - Author(s): - bux578 - - Description: - Initializes the SwitchUnits module - - Parameters: - 0: OBJECT - module logic - 1: ARRAY - list of affected units - 2: BOOLEAN - isActivated - - Returns: - BOOLEAN (Good practice to include one) -*/ + * Author: bux578 + * Initializes the SwitchUnits module + * + * Arguments: + * 0: module logic + * 1: list of affected units > + * 2: isActivated + * + * Return Value: + * None + * + * Example: + * None + * + * Public: No + */ #include "script_component.hpp" diff --git a/addons/switchunits/functions/fnc_nearestPlayers.sqf b/addons/switchunits/functions/fnc_nearestPlayers.sqf index 217e1b90e4..b79c54054f 100644 --- a/addons/switchunits/functions/fnc_nearestPlayers.sqf +++ b/addons/switchunits/functions/fnc_nearestPlayers.sqf @@ -1,19 +1,19 @@ /* - Name: ACE_SwitchUnits_fnc_nearestPlayers - - Author(s): - bux578 - - Description: - Returns an array of alive players in a given radius around a given location - - Parameters: - 0: POSTION - Center position - 1: NUMBER - Radius - - Returns: - ARRAY - Player units -*/ + * Author: bux578 + * Returns an array of alive players in a given radius around a given location + * + * Arguments: + * 0: Center position + * 1: Radius + * + * Return Value: + * Player units > + * + * Example: + * [_pos, 100] call FUNC(nearestPlayers) + * + * Public: Yes + */ #include "script_component.hpp" diff --git a/addons/switchunits/functions/fnc_switchBack.sqf b/addons/switchunits/functions/fnc_switchBack.sqf index 6bdc2c8bac..d54713bbe4 100644 --- a/addons/switchunits/functions/fnc_switchBack.sqf +++ b/addons/switchunits/functions/fnc_switchBack.sqf @@ -1,31 +1,41 @@ /* - Name: ACE_SwitchUnits_fnc_switchBack - - Author(s): - bux578 - - Description: - Switches back to the original player unit - This method needs to be "spawn"ed - - Parameters: - 0: OBJECT - original player unit - 1: OBJECT - respawned unit - - Returns: - VOID -*/ + * Author: bux578 + * Switches back to the original player unit + * + * Arguments: + * 0: Original player unit + * 1: Respawned unit + * + * Return Value: + * None + * + * Example: + * [_origPlayer, _respPlayer] call FUNC(switchBack) + * + * Public: Yes + */ #include "script_component.hpp" -private ["_originalPlayerUnit", "_currentUnit"]; -_originalPlayerUnit = _this select 0; -_currentUnit = _this select 1; +private ["_origPlayerUnit"]; -[_originalPlayerUnit] joinSilent GVAR(OriginalGroup); +_origPlayerUnit = _this select 0; +[_origPlayerUnit] joinSilent GVAR(OriginalGroup); -waitUntil {local _originalPlayerUnit}; +DFUNC(pfhSwitchBack) = { + + private ["_args", "_originalPlayerUnit", "_currentUnit"]; + + _args = _this select 0; + + _originalPlayerUnit = _args select 0; + _currentUnit = _args select 1; -selectPlayer _originalPlayerUnit; + if (local _originalPlayerUnit) exitWith { + selectPlayer _originalPlayerUnit; + deleteVehicle _currentUnit; + [(_this select 1)] call cba_fnc_removePerFrameHandler; + }; +}; -deleteVehicle _currentUnit; +[FUNC(pfhSwitchBack), 0.2, _this] call CBA_fnc_addPerFrameHandler; diff --git a/addons/switchunits/functions/fnc_switchUnit.sqf b/addons/switchunits/functions/fnc_switchUnit.sqf index efe3cef901..d5a4f39a4a 100644 --- a/addons/switchunits/functions/fnc_switchUnit.sqf +++ b/addons/switchunits/functions/fnc_switchUnit.sqf @@ -1,81 +1,97 @@ /* - Name: ACE_SwitchUnits_fnc_switchUnit - - Author(s): - bux578 - - Description: - Selects the new given player unit - - Parameters: - 0: OBJECT - the unit to switch to - - Returns: - VOID -*/ + * Author: bux578 + * Switches to the new given player unit + * + * Arguments: + * 0: current unit + * 1: the unit to switch to + * + * Return Value: + * None + * + * Example: + * [_unit] call FUNC(switchUnit) + * + * Public: Yes + */ + #include "script_component.hpp" -private ["_newUnit"]; +private ["_unit", "_allNearestPlayers", "_oldUnit", "_leave"]; -_newUnit = _this select 1; +_unit = _this select 1; // don't switch to original player units -if (!([_newUnit] call FUNC(isValidAi))) exitWith {}; +if (!([_unit] call FUNC(isValidAi))) exitWith {}; + +// exit var +_leave = false; + +if (GVAR(EnableSafeZone)) then { -_newUnit spawn { - private ["_unit", "_allNearestPlayers", "_oldUnit", "_respawnEhId", "_oldOwner", "_leave"]; - - _unit = _this; - - _leave = false; - - if (GVAR(EnableSafeZone)) then { - _allNearestPlayers = [position _unit, GVAR(SafeZoneRadius)] call FUNC(nearestPlayers); _nearestEnemyPlayers = [_allNearestPlayers, {((side GVAR(OriginalGroup)) getFriend (side _this) < 0.6) && !(_this getVariable [QGVAR(IsPlayerControlled), false])}] call EFUNC(common,filter); if (count _nearestEnemyPlayers > 0) exitWith { - _leave = true; + _leave = true; }; - }; - - // exitWith doesn't exit past the "if(EnableSafeZone)" block - if (_leave) exitWith { - [localize "STR_ACE_SwitchUnits_TooCloseToEnemy"] call EFUNC(common,displayTextStructured); - }; - - // should switch locality - // This doesn't work anymore, because one's now able to switch to units from a different side - //[_unit] joinSilent group player; - [[_unit, player], QUOTE({(_this select 0) setVariable [ARR_3(QUOTE(QGVAR(OriginalOwner)), owner (_this select 0), true)]; (_this select 0) setOwner owner (_this select 1)}), 1] call EFUNC(common,execRemoteFnc); - - _oldUnit = player; - waitUntil {sleep 0.2; local _unit}; - - _oldUnit setVariable [QGVAR(IsPlayerControlled), false, true]; - _oldUnit setVariable [QGVAR(PlayerControlledName), "", true]; - - _respawnEhId = _unit getVariable [QGVAR(RespawnEhId), -1]; - if (_respawnEhId != -1) then { - _oldUnit removeEventHandler ["Respawn", _respawnEhId]; - }; - - selectPlayer _unit; - - _unit setVariable [QGVAR(IsPlayerControlled), true, true]; - _unit setVariable [QGVAR(PlayerControlledName), GVAR(OriginalName), true]; - - _respawnEhId = _unit addEventHandler ["Respawn", { - [GVAR(OriginalUnit), _this select 0] spawn FUNC(switchBack); - }]; - _unit setVariable [QGVAR(RespawnEhId), _respawnEhId, true]; - - // set owner back to original owner - _oldOwner = _oldUnit getVariable[QGVAR(OriginalOwner), -1]; - if (_oldOwner > -1) then { - [[_oldUnit, _oldOwner], QUOTE({(_this select 0) setOwner (_this select 1)}), 1] call EFUNC(common,execRemoteFnc); - }; - - [localize "STR_ACE_SwitchUnits_SwitchedUnit"] call EFUNC(common,displayTextStructured); + }; + +// exitWith doesn't exit past the "if(EnableSafeZone)" block +if (_leave) exitWith { + [localize "STR_ACE_SwitchUnits_TooCloseToEnemy"] call EFUNC(common,displayTextStructured); +}; + +// should switch locality +// This doesn't work anymore, because one's now able to switch to units from a different side +//[_unit] joinSilent group player; +[[_unit, player], QUOTE({(_this select 0) setVariable [ARR_3(QUOTE(QGVAR(OriginalOwner)), owner (_this select 0), true)]; (_this select 0) setOwner owner (_this select 1)}), 1] call EFUNC(common,execRemoteFnc); + +_oldUnit = player; + + + +DFUNC(pfhSwitchUnit) = { + + private ["_args", "_unit", "_oldUnit", "_respawnEhId", "_oldOwner"]; + _args = _this select 0; + + _unit = _args select 0; + _oldUnit = _args select 1; + + if (local _unit) exitWith { + + _oldUnit setVariable [QGVAR(IsPlayerControlled), false, true]; + _oldUnit setVariable [QGVAR(PlayerControlledName), "", true]; + + _respawnEhId = _unit getVariable [QGVAR(RespawnEhId), -1]; + if (_respawnEhId != -1) then { + _oldUnit removeEventHandler ["Respawn", _respawnEhId]; + }; + + selectPlayer _unit; + + _unit setVariable [QGVAR(IsPlayerControlled), true, true]; + _unit setVariable [QGVAR(PlayerControlledName), GVAR(OriginalName), true]; + + _respawnEhId = _unit addEventHandler ["Respawn", { + [GVAR(OriginalUnit), _this select 0] call FUNC(switchBack); + }]; + _unit setVariable [QGVAR(RespawnEhId), _respawnEhId, true]; + + // set owner back to original owner + _oldOwner = _oldUnit getVariable[QGVAR(OriginalOwner), -1]; + if (_oldOwner > -1) then { + [[_oldUnit, _oldOwner], QUOTE({(_this select 0) setOwner (_this select 1)}), 1] call EFUNC(common,execRemoteFnc); + }; + + [localize "STR_ACE_SwitchUnits_SwitchedUnit"] call EFUNC(common,displayTextStructured); + + [(_this select 1)] call cba_fnc_removePerFrameHandler; + + }; +}; + +[FUNC(pfhSwitchBack), 0.2, [_unit, _oldUnit]] call cba_fnc_addPerFrameHandler; From 0600a72147c81671d534e2028b2cb72d9ea3288f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Mon, 2 Feb 2015 21:13:31 -0300 Subject: [PATCH 051/211] Fixes --- addons/common/XEH_preInit.sqf | 3 +- .../functions/fnc_loadSettingsOnServer.sqf | 43 ++++++++----------- .../functions/fnc_setSettingFromConfig.sqf | 29 +++++++------ addons/hearing/functions/fnc_earRinging.sqf | 2 +- 4 files changed, 36 insertions(+), 41 deletions(-) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 6cd1c4ce61..a7b48d7192 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -165,9 +165,8 @@ PREP(hashListSelect); PREP(hashListSet); PREP(hashListPush); - // Load settings -if (isServer) {} +if (isServer) then { call FUNC(loadSettingsOnServer); }; diff --git a/addons/common/functions/fnc_loadSettingsOnServer.sqf b/addons/common/functions/fnc_loadSettingsOnServer.sqf index 000d8f69cc..e9d87ad742 100644 --- a/addons/common/functions/fnc_loadSettingsOnServer.sqf +++ b/addons/common/functions/fnc_loadSettingsOnServer.sqf @@ -20,11 +20,7 @@ _countOptions = count (configFile >> "ACE_Settings"); for "_index" from 0 to (_countOptions - 1) do { _optionEntry = (configFile >> "ACE_Settings") select _index; - _name = configName _optionEntry; - _valueEntry = _optionEntry >> "value"; - _typeEntry = _optionEntry >> "typeName"; - - [_name, _valueEntry, _typeEntry] call FUNC(setSettingFromConfig); + [_optionEntry] call FUNC(setSettingFromConfig); }; // Check if all settings should be forced if (GVAR(forceAllSettings)) then { @@ -36,32 +32,29 @@ if (GVAR(forceAllSettings)) then { } forEach GVAR(settingsList); }; - -// Load settings from server userconfig -DFUNC(common,serverUserConfig) = compile preprocessFileLineNumbers "\userconfig\ACE\ACE_Settings.hpp"; -if !(isNil QFUNC(common,serverUserConfig)) then { - [] call FUNC(serverUserConfig); +// Load settings from server userconfig only if the ACE_ServerSettings is loaded +if (isClass (configFile >> "CfgPatches" >> "ACE_ServerSettings")) then { + DFUNC(serverUserConfig) = compile preprocessFileLineNumbers "\userconfig\ACE\ACE_Settings.hpp"; + if !(isNil DFUNC(serverUserConfig)) then { + [] call FUNC(serverUserConfig); + }; + // Check if all settings should be forced + if (GVAR(forceAllSettings)) then { + { + if !(missionNamespace getVariable format ["%1_forced", _x]) then { + missionNamespace setVariable format ["%1_forced", _x, true]; + publicVariable format ["%1_forced", _name]; + }; + } forEach GVAR(settingsList); + }; }; -// Check if all settings should be forced -if (GVAR(forceAllSettings)) then { - { - if !(missionNamespace getVariable format ["%1_forced", _x]) then { - missionNamespace setVariable format ["%1_forced", _x, true]; - publicVariable format ["%1_forced", _name]; - }; - } forEach GVAR(settingsList); -}; - // Load settings from mission config _countOptions = count (missionConfigFile >> "ACE_Settings"); for "_index" from 0 to (_countOptions - 1) do { _optionEntry = (missionConfigFile >> "ACE_Settings") select _index; - _name = configName _optionEntry; - _valueEntry = _optionEntry >> "value"; - - [_name, _valueEntry] call FUNC(setSettingFromConfig); + [_optionEntry] call FUNC(setSettingFromConfig); }; // Check if all settings should be forced if (GVAR(forceAllSettings)) then { @@ -71,4 +64,4 @@ if (GVAR(forceAllSettings)) then { publicVariable format ["%1_forced", _name]; }; } forEach GVAR(settingsList); -}; \ No newline at end of file +}; diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf index 8423a16bef..89967c357c 100644 --- a/addons/common/functions/fnc_setSettingFromConfig.sqf +++ b/addons/common/functions/fnc_setSettingFromConfig.sqf @@ -3,9 +3,8 @@ * Load a setting from config if it was not previosuly forced. Force if neccesary. * * Arguments: - * 0: Setting name (String) - * 1: Config entry (config entry) - * + * 0: Config entry (config entry) + * * Return Value: * None * @@ -13,33 +12,35 @@ */ #include "script_component.hpp" -EXPLODE_2_PVT(_this,_name,_optionEntry); +EXPLODE_1_PVT(_this,_optionEntry); _fnc_getValueWithType = { EXPLODE_2_PVT(_this,_optionEntry,_typeName); _value = getNumber (_optionEntry >> "value"); + diag_log text format ["%1 %2: %3", configName _optionEntry, _typeName, _value]; if (_typeName == "BOOL") exitWith { - _value = _value > 0; + _value > 0 }; if (_typeName == "STRING") exitWith { - _value = getText (_optionEntry >> "value"); + getText (_optionEntry >> "value") }; if (_typeName == "ARRAY") exitWith { - _value = getArray (_optionEntry >> "value"); + getArray (_optionEntry >> "value") }; _value }; +_name = configName _optionEntry; + // Check if the variable is already defined -if (isNil _name) exitWith { +if (isNil _name) then { // That setting was not loaded yet - //diag_log text format ["[ACE]: Mission setting '%1' doesn't exist", _name]; - - _typeEntry = _this select 2; - _typeName = getText _typeEntry; + // Get type from config + _typeName = getText (_optionEntry >> "typeName"); + // Read entry and cast it to the correct type _value = [_optionEntry, _typeName] call _fnc_getValueWithType; // Init the variable and publish it @@ -61,7 +62,9 @@ if (isNil _name) exitWith { // The setting is not forced, so update the value // Get the type from the existing variable - _typeName = typeName missionNamespace getVariable _name; + _typeName = typeName (missionNamespace getVariable _name); + + // Read entry and cast it to the correct type _value = [_optionEntry, _typeName] call _fnc_getValueWithType; // Update the variable and publish it diff --git a/addons/hearing/functions/fnc_earRinging.sqf b/addons/hearing/functions/fnc_earRinging.sqf index b578dad979..4581a6fdd9 100644 --- a/addons/hearing/functions/fnc_earRinging.sqf +++ b/addons/hearing/functions/fnc_earRinging.sqf @@ -25,7 +25,7 @@ GVAR(newStrength) = GVAR(newStrength) max _strength; if (missionNamespace getVariable [QGVAR(isEarRingingPlaying), false]) exitWith {}; -if (QGVAR(DisableEarRinging)) exitWith {}; +if (GVAR(DisableEarRinging)) exitWith {}; if (_strength > 0.75) exitWith { playSound "ACE_EarRinging_Heavy"; From 37199f2ba29b1697810eb908456c272caab71d3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Mon, 2 Feb 2015 21:14:16 -0300 Subject: [PATCH 052/211] Load client setable settings from profile --- addons/common/XEH_postInit.sqf | 3 ++ .../functions/fnc_loadSettingsFromProfile.sqf | 48 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 addons/common/functions/fnc_loadSettingsFromProfile.sqf diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 542c4277cf..df48d076f2 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -1,6 +1,9 @@ // ACE - Common #include "script_component.hpp" +// Load settings from profile +call FUNC(loadSettingsFromProfile); + // hack to get PFH to work in briefing [QGVAR(onBriefingPFH), "onEachFrame", { if (time > 0) exitWith { diff --git a/addons/common/functions/fnc_loadSettingsFromProfile.sqf b/addons/common/functions/fnc_loadSettingsFromProfile.sqf new file mode 100644 index 0000000000..a77af66309 --- /dev/null +++ b/addons/common/functions/fnc_loadSettingsFromProfile.sqf @@ -0,0 +1,48 @@ +/* + * Author: CAA-Picard + * Load the user setable setting from the user profile. + * Config < Server UserConfig < Mission Config < Client settings + * + * Arguments: + * None + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +_fnc_setSettingFromProfile = { + EXPLODE_1_PVT(_this,_optionEntry); + + _name = configName _optionEntry; + _valueEntry = _optionEntry >> "value"; + _isClientSetable = getNumber (_optionEntry >> "isClientSetable"); + + if (_isClientSetable > 0) then { + if !(missionNamespace getVariable format ["%1_forced", _name, false]) then { + _profileValue = profileNamespace getvariable _name; + if !(isNil _profileValue) then { + if (typeName _profileValue == typeName (missionNamespace getvariable _name)) then { + missionNamespace setvariable [_name, _profileValue]; + }; + }; + }; + }; +}; + +// Iterate through settings from main config +_countOptions = count (configFile >> "ACE_Settings"); +for "_index" from 0 to (_countOptions - 1) do { + _optionEntry = (configFile >> "ACE_Settings") select _index; + [_optionEntry] call _fnc_setSettingFromProfile; + +}; + +// Iterate through settings from mission config +_countOptions = count (missionConfigFile >> "ACE_Settings"); +for "_index" from 0 to (_countOptions - 1) do { + _optionEntry = (missionConfigFile >> "ACE_Settings") select _index; + [_optionEntry] call _fnc_setSettingFromProfile; +}; From 38655980956b905f31efe7c0feee27b9d58323d1 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 2 Feb 2015 19:48:33 -0600 Subject: [PATCH 053/211] AGM_Captives --- .../captives}/UI/agm_cabletie_x_ca.paa | Bin .../Captives => addons/captives}/UI/captive_ca.paa | Bin .../Captives => addons/captives}/UI/handcuff_ca.paa | Bin .../Captives => addons/captives}/agm_cabletie.p3d | Bin .../agm/Captives => addons/captives}/clientInit.sqf | 0 .../agm/Captives => addons/captives}/config.cpp | 0 .../captives}/functions/fn_canFriskPerson.sqf | 0 .../captives}/functions/fn_canLoadCaptive.sqf | 0 .../captives}/functions/fn_canUnloadCaptive.sqf | 0 .../captives}/functions/fn_escortCaptive.sqf | 0 .../captives}/functions/fn_handleGetOut.sqf | 0 .../captives}/functions/fn_handleKnockedOut.sqf | 0 .../captives}/functions/fn_handlePlayerChanged.sqf | 0 .../captives}/functions/fn_handleWokeUp.sqf | 0 .../captives}/functions/fn_initPost.sqf | 0 .../captives}/functions/fn_initUnit.sqf | 0 .../captives}/functions/fn_loadCaptive.sqf | 0 .../captives}/functions/fn_openFriskMenu.sqf | 0 .../captives}/functions/fn_setCaptive.sqf | 0 .../captives}/functions/fn_surrender.sqf | 0 .../captives}/functions/fn_unloadCaptive.sqf | 0 .../Captives => addons/captives}/stringtable.xml | 0 22 files changed, 0 insertions(+), 0 deletions(-) rename {TO_MERGE/agm/Captives => addons/captives}/UI/agm_cabletie_x_ca.paa (100%) rename {TO_MERGE/agm/Captives => addons/captives}/UI/captive_ca.paa (100%) rename {TO_MERGE/agm/Captives => addons/captives}/UI/handcuff_ca.paa (100%) rename {TO_MERGE/agm/Captives => addons/captives}/agm_cabletie.p3d (100%) rename {TO_MERGE/agm/Captives => addons/captives}/clientInit.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/config.cpp (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_canFriskPerson.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_canLoadCaptive.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_canUnloadCaptive.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_escortCaptive.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_handleGetOut.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_handleKnockedOut.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_handlePlayerChanged.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_handleWokeUp.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_initPost.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_initUnit.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_loadCaptive.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_openFriskMenu.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_setCaptive.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_surrender.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/functions/fn_unloadCaptive.sqf (100%) rename {TO_MERGE/agm/Captives => addons/captives}/stringtable.xml (100%) diff --git a/TO_MERGE/agm/Captives/UI/agm_cabletie_x_ca.paa b/addons/captives/UI/agm_cabletie_x_ca.paa similarity index 100% rename from TO_MERGE/agm/Captives/UI/agm_cabletie_x_ca.paa rename to addons/captives/UI/agm_cabletie_x_ca.paa diff --git a/TO_MERGE/agm/Captives/UI/captive_ca.paa b/addons/captives/UI/captive_ca.paa similarity index 100% rename from TO_MERGE/agm/Captives/UI/captive_ca.paa rename to addons/captives/UI/captive_ca.paa diff --git a/TO_MERGE/agm/Captives/UI/handcuff_ca.paa b/addons/captives/UI/handcuff_ca.paa similarity index 100% rename from TO_MERGE/agm/Captives/UI/handcuff_ca.paa rename to addons/captives/UI/handcuff_ca.paa diff --git a/TO_MERGE/agm/Captives/agm_cabletie.p3d b/addons/captives/agm_cabletie.p3d similarity index 100% rename from TO_MERGE/agm/Captives/agm_cabletie.p3d rename to addons/captives/agm_cabletie.p3d diff --git a/TO_MERGE/agm/Captives/clientInit.sqf b/addons/captives/clientInit.sqf similarity index 100% rename from TO_MERGE/agm/Captives/clientInit.sqf rename to addons/captives/clientInit.sqf diff --git a/TO_MERGE/agm/Captives/config.cpp b/addons/captives/config.cpp similarity index 100% rename from TO_MERGE/agm/Captives/config.cpp rename to addons/captives/config.cpp diff --git a/TO_MERGE/agm/Captives/functions/fn_canFriskPerson.sqf b/addons/captives/functions/fn_canFriskPerson.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_canFriskPerson.sqf rename to addons/captives/functions/fn_canFriskPerson.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_canLoadCaptive.sqf b/addons/captives/functions/fn_canLoadCaptive.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_canLoadCaptive.sqf rename to addons/captives/functions/fn_canLoadCaptive.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_canUnloadCaptive.sqf b/addons/captives/functions/fn_canUnloadCaptive.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_canUnloadCaptive.sqf rename to addons/captives/functions/fn_canUnloadCaptive.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_escortCaptive.sqf b/addons/captives/functions/fn_escortCaptive.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_escortCaptive.sqf rename to addons/captives/functions/fn_escortCaptive.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_handleGetOut.sqf b/addons/captives/functions/fn_handleGetOut.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_handleGetOut.sqf rename to addons/captives/functions/fn_handleGetOut.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_handleKnockedOut.sqf b/addons/captives/functions/fn_handleKnockedOut.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_handleKnockedOut.sqf rename to addons/captives/functions/fn_handleKnockedOut.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_handlePlayerChanged.sqf b/addons/captives/functions/fn_handlePlayerChanged.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_handlePlayerChanged.sqf rename to addons/captives/functions/fn_handlePlayerChanged.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_handleWokeUp.sqf b/addons/captives/functions/fn_handleWokeUp.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_handleWokeUp.sqf rename to addons/captives/functions/fn_handleWokeUp.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_initPost.sqf b/addons/captives/functions/fn_initPost.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_initPost.sqf rename to addons/captives/functions/fn_initPost.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_initUnit.sqf b/addons/captives/functions/fn_initUnit.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_initUnit.sqf rename to addons/captives/functions/fn_initUnit.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_loadCaptive.sqf b/addons/captives/functions/fn_loadCaptive.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_loadCaptive.sqf rename to addons/captives/functions/fn_loadCaptive.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_openFriskMenu.sqf b/addons/captives/functions/fn_openFriskMenu.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_openFriskMenu.sqf rename to addons/captives/functions/fn_openFriskMenu.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_setCaptive.sqf b/addons/captives/functions/fn_setCaptive.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_setCaptive.sqf rename to addons/captives/functions/fn_setCaptive.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_surrender.sqf b/addons/captives/functions/fn_surrender.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_surrender.sqf rename to addons/captives/functions/fn_surrender.sqf diff --git a/TO_MERGE/agm/Captives/functions/fn_unloadCaptive.sqf b/addons/captives/functions/fn_unloadCaptive.sqf similarity index 100% rename from TO_MERGE/agm/Captives/functions/fn_unloadCaptive.sqf rename to addons/captives/functions/fn_unloadCaptive.sqf diff --git a/TO_MERGE/agm/Captives/stringtable.xml b/addons/captives/stringtable.xml similarity index 100% rename from TO_MERGE/agm/Captives/stringtable.xml rename to addons/captives/stringtable.xml From 982f3b230ad0a2a9d1ccf6c6f3a7f798f87729c8 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 2 Feb 2015 20:04:50 -0600 Subject: [PATCH 054/211] Captives First Pass --- addons/captives/$PBOPREFIX$ | 1 + addons/captives/CfgEventHandlers.hpp | 57 +++ addons/captives/CfgMoves.hpp | 90 +++++ addons/captives/CfgVehicles.hpp | 157 ++++++++ addons/captives/CfgWeapons.hpp | 15 + ..._cabletie_x_ca.paa => ace_cabletie_ca.paa} | Bin addons/captives/XEH_postInitClient.sqf | 3 + addons/captives/XEH_preInit.sqf | 22 + addons/captives/agm_cabletie.p3d | Bin 49251 -> 0 bytes addons/captives/clientInit.sqf | 3 - addons/captives/config.cpp | 381 ++---------------- .../captives/functions/fn_canFriskPerson.sqf | 21 - .../captives/functions/fn_canLoadCaptive.sqf | 35 -- .../functions/fn_canUnloadCaptive.sqf | 23 -- .../captives/functions/fn_escortCaptive.sqf | 43 -- addons/captives/functions/fn_handleGetOut.sqf | 14 - .../functions/fn_handlePlayerChanged.sqf | 12 - addons/captives/functions/fn_handleWokeUp.sqf | 10 - addons/captives/functions/fn_initPost.sqf | 11 - addons/captives/functions/fn_initUnit.sqf | 12 - addons/captives/functions/fn_setCaptive.sqf | 57 --- .../captives/functions/fn_unloadCaptive.sqf | 31 -- .../captives/functions/fnc_canFriskPerson.sqf | 23 ++ .../captives/functions/fnc_canLoadCaptive.sqf | 38 ++ .../functions/fnc_canUnloadCaptive.sqf | 28 ++ .../captives/functions/fnc_escortCaptive.sqf | 55 +++ .../captives/functions/fnc_handleGetOut.sqf | 29 ++ ...nockedOut.sqf => fnc_handleKnockedOut.sqf} | 0 .../functions/fnc_handlePlayerChanged.sqf | 25 ++ .../captives/functions/fnc_handleWokeUp.sqf | 23 ++ addons/captives/functions/fnc_initPost.sqf | 24 ++ addons/captives/functions/fnc_initUnit.sqf | 29 ++ ...fn_loadCaptive.sqf => fnc_loadCaptive.sqf} | 33 +- ...penFriskMenu.sqf => fnc_openFriskMenu.sqf} | 44 +- addons/captives/functions/fnc_setCaptive.sqf | 59 +++ .../{fn_surrender.sqf => fnc_surrender.sqf} | 43 +- .../captives/functions/fnc_unloadCaptive.sqf | 35 ++ .../captives/functions/script_component.hpp | 1 + addons/captives/models/ace_cabletie.p3d | Bin 0 -> 52371 bytes addons/captives/models/ace_default.rvmat | 79 ++++ addons/captives/script_component.hpp | 12 + addons/captives/stringtable.xml | 24 +- 42 files changed, 907 insertions(+), 695 deletions(-) create mode 100644 addons/captives/$PBOPREFIX$ create mode 100644 addons/captives/CfgEventHandlers.hpp create mode 100644 addons/captives/CfgMoves.hpp create mode 100644 addons/captives/CfgVehicles.hpp create mode 100644 addons/captives/CfgWeapons.hpp rename addons/captives/UI/{agm_cabletie_x_ca.paa => ace_cabletie_ca.paa} (100%) create mode 100644 addons/captives/XEH_postInitClient.sqf create mode 100644 addons/captives/XEH_preInit.sqf delete mode 100644 addons/captives/agm_cabletie.p3d delete mode 100644 addons/captives/clientInit.sqf delete mode 100644 addons/captives/functions/fn_canFriskPerson.sqf delete mode 100644 addons/captives/functions/fn_canLoadCaptive.sqf delete mode 100644 addons/captives/functions/fn_canUnloadCaptive.sqf delete mode 100644 addons/captives/functions/fn_escortCaptive.sqf delete mode 100644 addons/captives/functions/fn_handleGetOut.sqf delete mode 100644 addons/captives/functions/fn_handlePlayerChanged.sqf delete mode 100644 addons/captives/functions/fn_handleWokeUp.sqf delete mode 100644 addons/captives/functions/fn_initPost.sqf delete mode 100644 addons/captives/functions/fn_initUnit.sqf delete mode 100644 addons/captives/functions/fn_setCaptive.sqf delete mode 100644 addons/captives/functions/fn_unloadCaptive.sqf create mode 100644 addons/captives/functions/fnc_canFriskPerson.sqf create mode 100644 addons/captives/functions/fnc_canLoadCaptive.sqf create mode 100644 addons/captives/functions/fnc_canUnloadCaptive.sqf create mode 100644 addons/captives/functions/fnc_escortCaptive.sqf create mode 100644 addons/captives/functions/fnc_handleGetOut.sqf rename addons/captives/functions/{fn_handleKnockedOut.sqf => fnc_handleKnockedOut.sqf} (100%) create mode 100644 addons/captives/functions/fnc_handlePlayerChanged.sqf create mode 100644 addons/captives/functions/fnc_handleWokeUp.sqf create mode 100644 addons/captives/functions/fnc_initPost.sqf create mode 100644 addons/captives/functions/fnc_initUnit.sqf rename addons/captives/functions/{fn_loadCaptive.sqf => fnc_loadCaptive.sqf} (52%) rename addons/captives/functions/{fn_openFriskMenu.sqf => fnc_openFriskMenu.sqf} (54%) create mode 100644 addons/captives/functions/fnc_setCaptive.sqf rename addons/captives/functions/{fn_surrender.sqf => fnc_surrender.sqf} (53%) create mode 100644 addons/captives/functions/fnc_unloadCaptive.sqf create mode 100644 addons/captives/functions/script_component.hpp create mode 100644 addons/captives/models/ace_cabletie.p3d create mode 100644 addons/captives/models/ace_default.rvmat create mode 100644 addons/captives/script_component.hpp diff --git a/addons/captives/$PBOPREFIX$ b/addons/captives/$PBOPREFIX$ new file mode 100644 index 0000000000..aac16576c4 --- /dev/null +++ b/addons/captives/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\captives \ No newline at end of file diff --git a/addons/captives/CfgEventHandlers.hpp b/addons/captives/CfgEventHandlers.hpp new file mode 100644 index 0000000000..eb08f7e865 --- /dev/null +++ b/addons/captives/CfgEventHandlers.hpp @@ -0,0 +1,57 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; + +class Extended_PostInit_EventHandlers { + class ADDON { + clientInit = QUOTE(call COMPILE_FILE(XEH_postInitClient)); + }; +}; + +//release escorted captive when entering a vehicle +class Extended_GetIn_EventHandlers { + class All { + class GVAR(AutoDetachCaptive) { + getIn = "if (local (_this select 2) && {(_this select 2) getVariable ['ACE_isEscorting', false]}) then {(_this select 2) setVariable ['ACE_isEscorting', false, true]}"; + }; + }; +}; + +//reset captive animation after leaving vehicle +class Extended_GetOut_EventHandlers { + class All { + class GVAR(AutoDetachCaptive) { + getOut = "if (local (_this select 2) && {(_this select 2) getVariable ['ACE_isCaptive', false]}) then {_this call ACE_Captives_fnc_handleGetOut}"; + }; + }; +}; + +//reset captivity and escorting status when getting killed +class Extended_Killed_EventHandlers { + class CAManBase { + class GVAR(AutoDetachCaptive) { + killed = "if ((_this select 0) getVariable ['ACE_isCaptive', false]) then {(_this select 0) setVariable ['ACE_isCaptive', false, true]}; if ((_this select 0) getVariable ['ACE_isEscorting', false]) then {(_this select 0) setVariable ['ACE_isEscorting', false, true]};"; + }; + }; +}; + +//handle captive and unconsciousness state +class Extended_Init_EventHandlers { + class CAManBase { + class GVAR(AutoDetachCaptive) { + init = "_this call ACE_Captives_fnc_initUnit"; + }; + }; +}; + +//mission start +class Extended_InitPost_EventHandlers { + class CAManBase { + class GVAR(InitPost) { + init = "if (local (_this select 0)) then {_this call ACE_Captives_fnc_initPost};"; + }; + }; +}; + diff --git a/addons/captives/CfgMoves.hpp b/addons/captives/CfgMoves.hpp new file mode 100644 index 0000000000..da43b21aae --- /dev/null +++ b/addons/captives/CfgMoves.hpp @@ -0,0 +1,90 @@ +class CfgMovesBasic { + class Actions { + class CivilStandActions; + class ACE_CivilStandCaptiveActions: CivilStandActions { + turnL = ""; + turnR = ""; + stop = "ACE_AmovPercMstpScapWnonDnon"; + StopRelaxed = "ACE_AmovPercMstpScapWnonDnon"; + default = "ACE_AmovPercMstpScapWnonDnon"; + getOver = ""; + throwPrepare = ""; + throwGrenade[] = {"","Gesture"}; + }; + }; +}; + +class CfgMovesMaleSdr: CfgMovesBasic { + class StandBase; + class States { + class AmovPercMstpSnonWnonDnon: StandBase { + ConnectTo[] += {"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1}; + }; + + class CutSceneAnimationBase; + class ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon: CutSceneAnimationBase { + actions = "ACE_CivilStandCaptiveActions"; + file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\AmovPercMstpSnonWnonDnon_EaseIn"; + speed = 1; + looped = 0; + interpolationRestart = 2; + ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon",0.1}; + InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; + }; + + class ACE_AmovPercMstpScapWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon { + file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\AmovPercMstpSnonWnonDnon_Ease"; + speed = 0; + ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; + InterpolateTo[] = {"Unconscious",0.01}; + looped = 1; + }; + + class ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon { + actions = "CivilStandActions"; + file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\amovpercmstpsnonwnondnon_easeout"; + ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1}; + InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1}; + }; + }; +}; + +/* +player playMove "ACE_AmovPercMstpScapWnonDnon"; +player switchMove "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon"; +*/ + +/*class CfgMovesBasic; +class CfgMovesMaleSdr: CfgMovesBasic { + class States { + class CutSceneAnimationBase; + class AmovPercMstpSnonWnonDnon_EaseIn: CutSceneAnimationBase { + head = "headDefault"; + static = 1; + disableWeapons = 0; + forceAim = 0; + InterpolateTo[] = {"AmovPercMstpSnonWnonDnon_EaseOut",0.02,"Unconscious",0.1}; + }; + class AmovPercMstpSnonWnonDnon_Ease: AmovPercMstpSnonWnonDnon_EaseIn { + looped = 1; + InterpolateTo[] = {"Unconscious",0.1}; + }; + class AmovPercMstpSnonWnonDnon_EaseOut: AmovPercMstpSnonWnonDnon_EaseIn { + InterpolateTo[] = {"AmovPercMstpSnonWnonDnon_EaseIn",0.02,"Unconscious",0.1}; + }; + + class AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon: CutSceneAnimationBase { + InterpolateTo[] = {"Unconscious",0.01,"AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; + }; + + class AmovPercMstpSsurWnonDnon: AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon { + looped = 1; + InterpolateTo[] = {"Unconscious",0.01}; + }; + + class AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon: AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon { + InterpolateTo[] = {"Unconscious",0.01,"AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon",0.1}; + }; + }; +};*/ + diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp new file mode 100644 index 0000000000..3036ccf196 --- /dev/null +++ b/addons/captives/CfgVehicles.hpp @@ -0,0 +1,157 @@ +class CfgVehicles { + class Man; + class CAManBase: Man { + class ACE_Actions { + class ACE_SetCaptive { + displayName = "$STR_ACE_Captives_SetCaptive"; + distance = 4; + condition = "'ACE_CableTie' in items _player && {alive _target} && {!(_target getVariable ['ACE_isCaptive', false])}"; + statement = "player removeItem 'ACE_CableTie'; [_target, true] call ACE_Captives_fnc_setCaptive"; + showDisabled = 0; + priority = 2.4; + icon = "\ACE_Captives\UI\handcuff_ca.paa"; + hotkey = "C"; + }; + class ACE_ReleaseCaptive { + displayName = "$STR_ACE_Captives_ReleaseCaptive"; + distance = 4; + condition = "_target getVariable ['ACE_isCaptive', false] && {isNull (attachedTo _target)}"; + statement = "[_target, false] call ACE_Captives_fnc_setCaptive"; + exceptions[] = {"ACE_Interaction_isNotEscorting"}; + showDisabled = 0; + priority = 2.4; + icon = "\ACE_Captives\UI\handcuff_ca.paa"; + hotkey = "R"; + }; + class ACE_EscortCaptive { + displayName = "$STR_ACE_Captives_EscortCaptive"; + distance = 4; + condition = "_target getVariable ['ACE_isCaptive', false] && {isNull (attachedTo _target)} && {alive _target} && {!(_target getVariable ['ACE_isUnconscious', false])}"; + statement = "[_target, true] call ACE_Captives_fnc_escortCaptive"; + exceptions[] = {"ACE_Interaction_isNotEscorting"}; + showDisabled = 0; + icon = "\ACE_Captives\UI\captive_ca.paa"; + priority = 2.3; + hotkey = "E"; + }; + class ACE_StopEscorting { + displayName = "$STR_ACE_Captives_StopEscorting"; + distance = 4; + condition = "_target getVariable ['ACE_isCaptive', false] && {_target in attachedObjects _player}"; + statement = "[_target, false] call ACE_Captives_fnc_escortCaptive"; + exceptions[] = {"ACE_Interaction_isNotEscorting"}; + showDisabled = 0; + icon = "\ACE_Captives\UI\captive_ca.paa"; + priority = 2.3; + hotkey = "E"; + }; + class ACE_LoadCaptive { + displayName = "$STR_ACE_Captives_LoadCaptive"; + distance = 4; + condition = "[_player, _target, objNull] call ACE_Captives_fnc_canLoadCaptive"; + statement = "[_player, _target, objNull] call ACE_Captives_fnc_loadCaptive"; + exceptions[] = {"ACE_Interaction_isNotEscorting"}; + showDisabled = 0; + icon = "\ACE_Captives\UI\captive_ca.paa"; + priority = 2.2; + hotkey = "L"; + }; + class ACE_FriskPerson { + displayName = "$STR_ACE_Captives_FriskPerson"; + distance = 2; + condition = "[_player, _target] call ACE_Captives_fnc_canFriskPerson"; + statement = "[_player, _target] call ACE_Captives_fnc_openFriskMenu"; + showDisabled = 0; + //icon = ""; //@todo + priority = 3; + hotkey = "F"; + }; + }; + + class ACE_SelfActions { + class ACE_StopEscortingSelf { + displayName = "$STR_ACE_Captives_StopEscorting"; + condition = "(_player getVariable ['ACE_escortedUnit', objNull]) getVariable ['ACE_isCaptive', false] && {(_player getVariable ['ACE_escortedUnit', objNull]) in attachedObjects _player}"; + statement = "[_player getVariable ['ACE_escortedUnit', objNull], false] call ACE_Captives_fnc_escortCaptive;"; + exceptions[] = {"ACE_Interaction_isNotEscorting"}; + showDisabled = 0; + priority = 2.3; + hotkey = "C"; + }; + /*class ACE_LoadCaptiveSelf { + displayName = "$STR_ACE_Captives_LoadCaptive"; + condition = "[_player, objNull, objNull] call ACE_Captives_fnc_canLoadCaptiveIntoVehicle"; + statement = "[_player, objNull, objNull] call ACE_Captives_fnc_loadCaptiveIntoVehicle"; + exceptions[] = {"ACE_Interaction_isNotEscorting"}; + showDisabled = 0; + priority = 2.2; + hotkey = "K"; + };*/ + }; + }; + + #define MACRO_LOADUNLOADCAPTIVE \ + class ACE_Actions { \ + class ACE_LoadCaptive { \ + displayName = "$STR_ACE_Captives_LoadCaptive"; \ + distance = 4; \ + condition = "[_player, objNull, _target] call ACE_Captives_fnc_canLoadCaptive"; \ + statement = "[_player, objNull, _target] call ACE_Captives_fnc_loadCaptive"; \ + exceptions[] = {"ACE_Interaction_isNotEscorting"}; \ + showDisabled = 0; \ + priority = 1.2; \ + hotkey = "L"; \ + }; \ + class ACE_UnloadCaptive { \ + displayName = "$STR_ACE_Captives_UnloadCaptive"; \ + distance = 4; \ + condition = "[_player, _target] call ACE_Captives_fnc_canUnloadCaptive"; \ + statement = "[_player, _target] call ACE_Captives_fnc_unloadCaptive"; \ + showDisabled = 0; \ + priority = 1.2; \ + hotkey = "C"; \ + }; \ + }; + + class LandVehicle; + class Car: LandVehicle { + MACRO_LOADUNLOADCAPTIVE + }; + class Tank: LandVehicle { + MACRO_LOADUNLOADCAPTIVE + }; + + class Air; + class Helicopter: Air { + MACRO_LOADUNLOADCAPTIVE + }; + class Plane: Air { + MACRO_LOADUNLOADCAPTIVE + }; + + class Ship; + class Ship_F: Ship { + MACRO_LOADUNLOADCAPTIVE + }; + + class StaticWeapon: LandVehicle { + MACRO_LOADUNLOADCAPTIVE + }; + + class StaticMortar; + class Mortar_01_base_F: StaticMortar { + MACRO_LOADUNLOADCAPTIVE + }; + + #define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ + name = #ITEM; \ + count = COUNT; \ + }; + + class Box_NATO_Support_F; + class ACE_Box_Misc: Box_NATO_Support_F { + class TransportItems { + MACRO_ADDITEM(ACE_CableTie,12) + }; + }; +}; diff --git a/addons/captives/CfgWeapons.hpp b/addons/captives/CfgWeapons.hpp new file mode 100644 index 0000000000..3005a2fa5c --- /dev/null +++ b/addons/captives/CfgWeapons.hpp @@ -0,0 +1,15 @@ +class CfgWeapons { + class ACE_ItemCore; + class InventoryItem_Base_F; + + class ACE_CableTie: ACE_ItemCore { + displayName = "$STR_ACE_Captives_CableTie"; + descriptionShort = "$STR_ACE_Captives_CableTieDescription"; + model = QUOTE(PATHTOF(models\ace_cabletie.p3d)); + picture = QUOTE(PATHTOF(UI\ace_cabletie_ca.paa)); + scope = 2; + class ItemInfo: InventoryItem_Base_F { + mass = 1; + }; + }; +}; diff --git a/addons/captives/UI/agm_cabletie_x_ca.paa b/addons/captives/UI/ace_cabletie_ca.paa similarity index 100% rename from addons/captives/UI/agm_cabletie_x_ca.paa rename to addons/captives/UI/ace_cabletie_ca.paa diff --git a/addons/captives/XEH_postInitClient.sqf b/addons/captives/XEH_postInitClient.sqf new file mode 100644 index 0000000000..a08c5d4239 --- /dev/null +++ b/addons/captives/XEH_postInitClient.sqf @@ -0,0 +1,3 @@ +// by commy2 + +[missionNamespace, "playerChanged", {_this call ACE_Captives_fnc_handlePlayerChanged}] call ACE_Core_fnc_addCustomEventhandler; diff --git a/addons/captives/XEH_preInit.sqf b/addons/captives/XEH_preInit.sqf new file mode 100644 index 0000000000..5e6f35bc48 --- /dev/null +++ b/addons/captives/XEH_preInit.sqf @@ -0,0 +1,22 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(empty); +PREP(canFriskPerson); +PREP(canLoadCaptive); +PREP(canUnloadCaptive); +PREP(escortCaptive); +PREP(handleGetOut); +PREP(handleKnockedOut); +PREP(handlePlayerChanged); +PREP(handleWokeUp); +PREP(initPost); +PREP(initUnit); +PREP(loadCaptive); +PREP(openFriskMenu); +PREP(setCaptive); +PREP(surrender); +PREP(unloadCaptive); + +ADDON = true; diff --git a/addons/captives/agm_cabletie.p3d b/addons/captives/agm_cabletie.p3d deleted file mode 100644 index e0804b8c5ff7324feead360c873d5bd44fec4f6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49251 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 uksC3-KC1Zz{{J8SkOke44;t5%V(5 0} diff --git a/addons/captives/functions/fn_canUnloadCaptive.sqf b/addons/captives/functions/fn_canUnloadCaptive.sqf deleted file mode 100644 index 8c52bac0b0..0000000000 --- a/addons/captives/functions/fn_canUnloadCaptive.sqf +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Author: commy2 - * - * Check if the unit can unload a captive from the vehicle. - * - * Argument: - * 0: Unit that wants to unload a captive (Object) - * 1: Vehicle to unload a captive from. (Object) - * - * Return value: - * Boolean (Bool) - */ - -private ["_unit", "_vehicle", "_cargo"]; - -_unit = _this select 0; -_vehicle = _this select 1; - -_cargo = crew _vehicle; // Can also unload from driver, gunner, commander, turret positions. They shouldn't be there anyway. - -_cargo = [_cargo, {_this getVariable ["AGM_isCaptive", false]}] call AGM_Core_fnc_filter; - -count _cargo > 0 diff --git a/addons/captives/functions/fn_escortCaptive.sqf b/addons/captives/functions/fn_escortCaptive.sqf deleted file mode 100644 index 55244cf2f8..0000000000 --- a/addons/captives/functions/fn_escortCaptive.sqf +++ /dev/null @@ -1,43 +0,0 @@ -//author : Nic547 -//Attaches a Captive to the player - -private ["_unit", "_state"]; - -_unit = _this select 0; -_state = _this select 1; - -if !("AGM_Handcuffed" in ([_unit] call AGM_Core_fnc_getCaptivityStatus)) exitWith { - [localize "STR_AGM_Captives_NoCaptive"] call AGM_Core_fnc_displayTextStructured; -}; - -if (_state) then { - if (player getVariable ["AGM_isEscorting", false]) exitWith {}; - - [player, _unit] call AGM_Core_fnc_claim; - player setVariable ["AGM_isEscorting", true, true]; - - _unit attachTo [player, [0, 1, 0]]; - - player setVariable ["AGM_escortedUnit", _unit, true]; - _actionID = player addAction [format ["%1", localize "STR_AGM_Captives_StopEscorting"], "[player getVariable ['AGM_escortedUnit', objNull], false] call AGM_Captives_fnc_escortCaptive;", nil, 20, false, true, "", "!isNull (player getVariable ['AGM_escortedUnit', objNull])"]; - - [_unit, _actionID] spawn { - _unit = _this select 0; - _actionID = _this select 1; - - while {player getVariable ["AGM_isEscorting", false]} do { - sleep 0.2; - - if (!alive _unit || {!alive player} || {!canStand _unit} || {!canStand player} || {_unit getVariable ["AGM_isUnconscious", false]} || {player getVariable ["AGM_isUnconscious", false]} || {!isNull (attachedTo player)}) then { - player setVariable ["AGM_isEscorting", false, true]; - }; - }; - [objNull, _unit] call AGM_Core_fnc_claim; - - detach _unit; - player removeAction _actionID; - }; -} else { - player setVariable ["AGM_isEscorting", false, true]; - player setVariable ["AGM_escortedUnit", objNull, true]; -}; diff --git a/addons/captives/functions/fn_handleGetOut.sqf b/addons/captives/functions/fn_handleGetOut.sqf deleted file mode 100644 index 0cb88b0a8e..0000000000 --- a/addons/captives/functions/fn_handleGetOut.sqf +++ /dev/null @@ -1,14 +0,0 @@ -// by commy2 - -private ["_vehicle", "_unit", "_cargoIndex"]; - -_vehicle = _this select 0; -_unit = _this select 2; - -_cargoIndex = _unit getVariable ["AGM_Captives_CargoIndex", -1]; - -if (_cargoIndex != -1) exitWith { - _unit moveInCargo [_vehicle, _cargoIndex]; -}; - -[_unit, 'AGM_AmovPercMstpScapWnonDnon', 2] call AGM_Core_fnc_doAnimation; diff --git a/addons/captives/functions/fn_handlePlayerChanged.sqf b/addons/captives/functions/fn_handlePlayerChanged.sqf deleted file mode 100644 index 5bece824f9..0000000000 --- a/addons/captives/functions/fn_handlePlayerChanged.sqf +++ /dev/null @@ -1,12 +0,0 @@ -// by commy2 - -private ["_unit", "_oldUnit"]; - -_unit = _this select 0; -_oldUnit = _this select 1; - -if (_unit getVariable ["AGM_isCaptive", false]) then { - showHUD false; -} else { - showHUD true; -}; diff --git a/addons/captives/functions/fn_handleWokeUp.sqf b/addons/captives/functions/fn_handleWokeUp.sqf deleted file mode 100644 index facbf9b31f..0000000000 --- a/addons/captives/functions/fn_handleWokeUp.sqf +++ /dev/null @@ -1,10 +0,0 @@ -// by commy2 - -private "_unit"; - -_unit = _this select 0; - -if (_unit getVariable ["AGM_isCaptive", false] && {vehicle _unit == _unit}) then { - [_unit] call AGM_Core_fnc_fixLoweredRifleAnimation; - [_unit, "AGM_AmovPercMstpScapWnonDnon", 0] call AGM_Core_fnc_doAnimation; -}; diff --git a/addons/captives/functions/fn_initPost.sqf b/addons/captives/functions/fn_initPost.sqf deleted file mode 100644 index 73c9674f7a..0000000000 --- a/addons/captives/functions/fn_initPost.sqf +++ /dev/null @@ -1,11 +0,0 @@ -// by commy2 - -private "_unit"; - -_unit = _this select 0; - -// reset status on mission start -if (_unit getVariable ["AGM_isCaptive", false]) then { - _unit setVariable ["AGM_isCaptive", false]; - [_unit, true] call AGM_Captives_fnc_setCaptive; -}; diff --git a/addons/captives/functions/fn_initUnit.sqf b/addons/captives/functions/fn_initUnit.sqf deleted file mode 100644 index 76d4671b7f..0000000000 --- a/addons/captives/functions/fn_initUnit.sqf +++ /dev/null @@ -1,12 +0,0 @@ -// by commy2 - -[_this select 0, "knockedOut", { - if (local (_this select 0)) then {_this call AGM_Captives_fnc_handleKnockedOut}; -}] call AGM_Core_fnc_addCustomEventhandler; - -[_this select 0, "wokeUp", { - if (local (_this select 0)) then {_this call AGM_Captives_fnc_handleWokeUp}; -}] call AGM_Core_fnc_addCustomEventhandler; - -// prevent players from throwing grenades -[_this select 0, "Throw", {(_this select 1) getVariable ["AGM_isCaptive", false]}, {}] call AGM_Core_fnc_addActionEventhandler; diff --git a/addons/captives/functions/fn_setCaptive.sqf b/addons/captives/functions/fn_setCaptive.sqf deleted file mode 100644 index a2e4ed7e3e..0000000000 --- a/addons/captives/functions/fn_setCaptive.sqf +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Author: Nic547, commy2 - * - * Makes a civilian unable to move. - * - * Argument: - * 0: Unit (Object) - * 1: True to take captive, false to release captive (Object) - * - * Return value: - * Nothing - */ - -private ["_unit", "_state"]; - -_unit = _this select 0; -_state = _this select 1; - -if (!local _unit) exitWith {[[_unit, _state, true], _fnc_scriptName, _unit] call AGM_Core_fnc_execRemoteFnc}; - -if (_state) then { - if (_unit getVariable ["AGM_isCaptive", false]) exitWith {}; - - _unit setVariable ["AGM_isCaptive", true, true]; - - // fix anim on mission start (should work on dedicated servers) - _unit spawn { - [_this, "AGM_Handcuffed", true] call AGM_Core_fnc_setCaptivityStatus; - - if (_this getVariable ["AGM_isCaptive", false] && {vehicle _this == _this}) then { - [_this] call AGM_Core_fnc_fixLoweredRifleAnimation; - [_this, "AGM_AmovPercMstpScapWnonDnon", 0] spawn AGM_Core_fnc_doAnimation; - }; - }; - - _unit setVariable ["AGM_Captives_CargoIndex", vehicle _unit getCargoIndex _unit, true]; - - if (_unit == AGM_player) then { - showHUD false; - }; -} else { - if !(_unit getVariable ["AGM_isCaptive", false]) exitWith {}; - - _unit setVariable ["AGM_isCaptive", false, true]; - [_unit, "AGM_Handcuffed", false] call AGM_Core_fnc_setCaptivityStatus; - if (vehicle _unit == _unit) then { - [_unit, "AGM_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon", 2] call AGM_Core_fnc_doAnimation; - }; - - if (_unit getVariable ["AGM_Captives_CargoIndex", -1] != -1) then { - _unit setVariable ["AGM_Captives_CargoIndex", -1, true]; - }; - - if (_unit == AGM_player) then { - showHUD true; - }; -}; diff --git a/addons/captives/functions/fn_unloadCaptive.sqf b/addons/captives/functions/fn_unloadCaptive.sqf deleted file mode 100644 index e7849f1c0e..0000000000 --- a/addons/captives/functions/fn_unloadCaptive.sqf +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Author: commy2 - * - * Unit unloads a captive from a vehicle. - * - * Argument: - * 0: Unit that wants to unload a captive (Object) - * 1: Vehicle to unload a captive from. (Object) - * - * Return value: - * Nothing - */ - -private ["_unit", "_vehicle", "_cargo", "_target"]; - -_unit = _this select 0; -_vehicle = _this select 1; - -_cargo = crew _vehicle; // Can also unload from driver, gunner, commander, turret positions. They shouldn't be there anyway. - -_cargo = [_cargo, {_this getVariable ["AGM_isCaptive", false]}] call AGM_Core_fnc_filter; - -if (count _cargo > 0) then { - _target = _cargo select 0; - - _target setVariable ["AGM_Captives_CargoIndex", -1, true]; - - moveOut _target; - [_target, "AGM_AmovPercMstpScapWnonDnon", 2] call AGM_Core_fnc_doAnimation; - [_target, "{unassignVehicle _this}", _target] call AGM_Core_fnc_execRemoteFnc; -}; diff --git a/addons/captives/functions/fnc_canFriskPerson.sqf b/addons/captives/functions/fnc_canFriskPerson.sqf new file mode 100644 index 0000000000..62d5a06742 --- /dev/null +++ b/addons/captives/functions/fnc_canFriskPerson.sqf @@ -0,0 +1,23 @@ +/* + * Author: bux578 + * Checks the conditions for being able to frisk a unit + * + * Arguments: + * 0: caller (player) + * 1: target + * + * Return Value: + * The return value + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_unit,_target); + +_target getVariable ["ACE_isCaptive", false] +|| {_target getVariable ["ACE_isSearchable", false]} +|| {_target getVariable ["ACE_isUnconscious", false]} diff --git a/addons/captives/functions/fnc_canLoadCaptive.sqf b/addons/captives/functions/fnc_canLoadCaptive.sqf new file mode 100644 index 0000000000..b8021e602f --- /dev/null +++ b/addons/captives/functions/fnc_canLoadCaptive.sqf @@ -0,0 +1,38 @@ +/* + * Author: commy2 + * Check if the unit can load the target object into a vehicle. + * + * Arguments: + * 0: Unit that wants to load a captive + * 1: A captive. ObjNull for the first escorted captive + * 2: Vehicle to load the captive into. ObjNull for the nearest vehicle + * + * Return Value: + * The return value + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +private ["_objects"]; + +PARAMS_3(_unit,_target,_vehicle); + +if (isNull _target) then { + _objects = attachedObjects _unit; + _objects = [_objects, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); + _target = _objects select 0; +}; + +if (isNull _vehicle) then { + _objects = nearestObjects [_unit, ["Car", "Tank", "Helicopter", "Plane", "Ship_F"], 10]; + _vehicle = _objects select 0; +}; + +_unit getVariable ["ACE_isEscorting", false] +&& {!isNil "_target"} +&& {!isNil "_vehicle"} +&& {_vehicle emptyPositions "cargo" > 0} diff --git a/addons/captives/functions/fnc_canUnloadCaptive.sqf b/addons/captives/functions/fnc_canUnloadCaptive.sqf new file mode 100644 index 0000000000..b714ebc8ae --- /dev/null +++ b/addons/captives/functions/fnc_canUnloadCaptive.sqf @@ -0,0 +1,28 @@ +/* + * Author: commy2 + * Check if the unit can unload a captive from the vehicle. + * + * Arguments: + * 0: Unit that wants to unload a captive + * 1: A captive. ObjNull for the first escorted captive + * 2: Vehicle to unload a captive from + * + * Return Value: + * The return value + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +private ["_cargo"]; + +PARAMS_2(_unit,_vehicle); + +_cargo = crew _vehicle; // Can also unload from driver, gunner, commander, turret positions. They shouldn't be there anyway. + +_cargo = [_cargo, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); + +count _cargo > 0 diff --git a/addons/captives/functions/fnc_escortCaptive.sqf b/addons/captives/functions/fnc_escortCaptive.sqf new file mode 100644 index 0000000000..c3030a9d33 --- /dev/null +++ b/addons/captives/functions/fnc_escortCaptive.sqf @@ -0,0 +1,55 @@ +/* + * Author: Nic547 + * Attaches a Captive to the player + * + * Arguments: + * 0: _unit + * 1: _state + * + * Return Value: + * The return value + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_unit,_state); + +if !("ACE_Handcuffed" in ([_unit] call ACE_Core_fnc_getCaptivityStatus)) exitWith { + [localize "STR_ACE_Captives_NoCaptive"] call EFUNC(common,displayTextStructured); +}; + +if (_state) then { + if (player getVariable ["ACE_isEscorting", false]) exitWith {}; + + [player, _unit] call EFUNC(common,claim); + player setVariable ["ACE_isEscorting", true, true]; + + _unit attachTo [player, [0, 1, 0]]; + + player setVariable ["ACE_escortedUnit", _unit, true]; + _actionID = player addAction [format ["%1", localize "STR_ACE_Captives_StopEscorting"], "[player getVariable ['ACE_escortedUnit', objNull], false] call ACE_Captives_fnc_escortCaptive;", nil, 20, false, true, "", "!isNull (player getVariable ['ACE_escortedUnit', objNull])"]; + + [_unit, _actionID] spawn { + _unit = _this select 0; + _actionID = _this select 1; + + while {player getVariable ["ACE_isEscorting", false]} do { + sleep 0.2; + + if (!alive _unit || {!alive player} || {!canStand _unit} || {!canStand player} || {_unit getVariable ["ACE_isUnconscious", false]} || {player getVariable ["ACE_isUnconscious", false]} || {!isNull (attachedTo player)}) then { + player setVariable ["ACE_isEscorting", false, true]; + }; + }; + [objNull, _unit] call EFUNC(common,claim); + + detach _unit; + player removeAction _actionID; + }; +} else { + player setVariable ["ACE_isEscorting", false, true]; + player setVariable ["ACE_escortedUnit", objNull, true]; +}; diff --git a/addons/captives/functions/fnc_handleGetOut.sqf b/addons/captives/functions/fnc_handleGetOut.sqf new file mode 100644 index 0000000000..7cc1fd6f5c --- /dev/null +++ b/addons/captives/functions/fnc_handleGetOut.sqf @@ -0,0 +1,29 @@ +/* + * Author: commy2 + * X + * + * Arguments: + * 0: _vehicle + * 1: _unit + * + * Return Value: + * The return value + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_vehicle,_unit); + +private ["_cargoIndex"]; + +_cargoIndex = _unit getVariable ["ACE_Captives_CargoIndex", -1]; + +if (_cargoIndex != -1) exitWith { + _unit moveInCargo [_vehicle, _cargoIndex]; +}; + +[_unit, 'ACE_AmovPercMstpScapWnonDnon', 2] call EFUNC(common,doAnimation); diff --git a/addons/captives/functions/fn_handleKnockedOut.sqf b/addons/captives/functions/fnc_handleKnockedOut.sqf similarity index 100% rename from addons/captives/functions/fn_handleKnockedOut.sqf rename to addons/captives/functions/fnc_handleKnockedOut.sqf diff --git a/addons/captives/functions/fnc_handlePlayerChanged.sqf b/addons/captives/functions/fnc_handlePlayerChanged.sqf new file mode 100644 index 0000000000..fea03cfe16 --- /dev/null +++ b/addons/captives/functions/fnc_handlePlayerChanged.sqf @@ -0,0 +1,25 @@ +/* + * Author: commy2 + * TODO + * + * Arguments: + * 0: _unit + * 1: _oldUnit + * + * Return Value: + * The return value + * + * Example: + * TODO + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_unit,_oldUnit); + +if (_unit getVariable ["ACE_isCaptive", false]) then { + showHUD false; +} else { + showHUD true; +}; diff --git a/addons/captives/functions/fnc_handleWokeUp.sqf b/addons/captives/functions/fnc_handleWokeUp.sqf new file mode 100644 index 0000000000..cbcd2a07ae --- /dev/null +++ b/addons/captives/functions/fnc_handleWokeUp.sqf @@ -0,0 +1,23 @@ +/* + * Author: commy2 + * TODO + * + * Arguments: + * 0: _unit + * + * Return Value: + * The return value + * + * Example: + * TODO + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_1(_unit); + +if (_unit getVariable ["ACE_isCaptive", false] && {vehicle _unit == _unit}) then { + [_unit] call EFUNC(common,fixLoweredRifleAnimation); + [_unit, "ACE_AmovPercMstpScapWnonDnon", 0] call EFUNC(common,doAnimation); +}; diff --git a/addons/captives/functions/fnc_initPost.sqf b/addons/captives/functions/fnc_initPost.sqf new file mode 100644 index 0000000000..5c116be417 --- /dev/null +++ b/addons/captives/functions/fnc_initPost.sqf @@ -0,0 +1,24 @@ +/* + * Author: commy2 + * TODO + * + * Arguments: + * 0: _unit + * + * Return Value: + * The return value + * + * Example: + * TODO + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_1(_unit); + +// reset status on mission start +if (_unit getVariable ["ACE_isCaptive", false]) then { + _unit setVariable ["ACE_isCaptive", false]; + [_unit, true] call ACE_Captives_fnc_setCaptive; +}; diff --git a/addons/captives/functions/fnc_initUnit.sqf b/addons/captives/functions/fnc_initUnit.sqf new file mode 100644 index 0000000000..13777dca1d --- /dev/null +++ b/addons/captives/functions/fnc_initUnit.sqf @@ -0,0 +1,29 @@ +/* + * Author: commy2 + * TODO + * + * Arguments: + * 0: _unit + * + * Return Value: + * The return value + * + * Example: + * TODO + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_1(_unit); + +[_unit, "knockedOut", { + if (local (_this select 0)) then {_this call ACE_Captives_fnc_handleKnockedOut}; +}] call ACE_Core_fnc_addCustomEventhandler; + +[_unit, "wokeUp", { + if (local (_this select 0)) then {_this call ACE_Captives_fnc_handleWokeUp}; +}] call ACE_Core_fnc_addCustomEventhandler; + +// prevent players from throwing grenades +[_unit, "Throw", {(_this select 1) getVariable ["ACE_isCaptive", false]}, {}] call ACE_Core_fnc_addActionEventhandler; diff --git a/addons/captives/functions/fn_loadCaptive.sqf b/addons/captives/functions/fnc_loadCaptive.sqf similarity index 52% rename from addons/captives/functions/fn_loadCaptive.sqf rename to addons/captives/functions/fnc_loadCaptive.sqf index 12bcb35f9b..255581a593 100644 --- a/addons/captives/functions/fn_loadCaptive.sqf +++ b/addons/captives/functions/fnc_loadCaptive.sqf @@ -1,26 +1,27 @@ /* * Author: commy2 - * * Unit loads the target object into a vehicle. - * - * Argument: - * 0: Unit that wants to load a captive (Object) - * 1: A captive. ObjNull for the first escorted captive (Object) - * 2: Vehicle to load the captive into. ObjNull for the nearest vehicle (Object) - * - * Return value: + * + * Arguments: + * 0: Unit that wants to load a captive + * 1: A captive. ObjNull for the first escorted captive + * 2: Vehicle to load the captive into. ObjNull for the nearest vehicle + * + * Return Value: * Nothing + * + * Example: + * TODO + * + * Public: No */ +#include "script_component.hpp" -private ["_unit", "_target", "_vehicle", "_objects"]; - -_unit = _this select 0; -_target = _this select 1; -_vehicle = _this select 2; +PARAMS_1(_unit,_target,_vehicle); if (isNull _target) then { _objects = attachedObjects _unit; - _objects = [_objects, {_this getVariable ["AGM_isCaptive", false]}] call AGM_Core_fnc_filter; + _objects = [_objects, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); _target = _objects select 0; }; @@ -30,6 +31,6 @@ if (isNull _vehicle) then { }; if (!isNil "_target" && {!isNil "_vehicle"}) then { - _unit setVariable ["AGM_isEscorting", false]; - [[_target, _vehicle], "{(_this select 0) moveInCargo (_this select 1); (_this select 0) assignAsCargo (_this select 1); (_this select 0) setVariable ['AGM_Captives_CargoIndex', (_this select 1) getCargoIndex (_this select 0), true];}", _target] call AGM_Core_fnc_execRemoteFnc; + _unit setVariable ["ACE_isEscorting", false]; + [[_target, _vehicle], "{(_this select 0) moveInCargo (_this select 1); (_this select 0) assignAsCargo (_this select 1); (_this select 0) setVariable ['ACE_Captives_CargoIndex', (_this select 1) getCargoIndex (_this select 0), true];}", _target] call ACE_Core_fnc_execRemoteFnc; }; diff --git a/addons/captives/functions/fn_openFriskMenu.sqf b/addons/captives/functions/fnc_openFriskMenu.sqf similarity index 54% rename from addons/captives/functions/fn_openFriskMenu.sqf rename to addons/captives/functions/fnc_openFriskMenu.sqf index c7f60ba2e6..42dda4ab66 100644 --- a/addons/captives/functions/fn_openFriskMenu.sqf +++ b/addons/captives/functions/fnc_openFriskMenu.sqf @@ -1,33 +1,33 @@ /* - Name: AGM_Captives_fnc_openFriskMenu - - Author: bux578 - - Description: - Open the select menu with the "personal" items of a frisked unit - It only shows "handgunWeapon", "uniformItems", "vestItems", "backpackItems" and "assignedItems" because every other item is visible on the character - - Parameters: - 0: Object - player unit - 1: Object - unit + * Author: bux578 + * Open the select menu with the "personal" items of a frisked unit. It only shows "handgunWeapon", "uniformItems", "vestItems", "backpackItems" and "assignedItems" because every other item is visible on the character + * + * Arguments: + * 0: player unit + * 1: unit + * + * Return Value: + * Nothing + * + * Example: + * TODO + * + * Public: No + */ +#include "script_component.hpp" - Returns: - Nothing -*/ +private ["_weapon", "_listedItemClasses", "_actions", "_allGear"]; -private ["_player", "_unit", "_weapon", "_listedItemClasses", "_actions", "_allGear"]; - -_player = _this select 0; -_unit = _this select 1; +PARAMS_2(_player,_unit); _weapon = currentWeapon _player; if (_weapon == primaryWeapon _player && {_weapon != ""}) then { - [_player, "AmovPercMstpSlowWrflDnon", 0] call AGM_Core_fnc_doAnimation; + [_player, "AmovPercMstpSlowWrflDnon", 0] call EFUNC(common,doAnimation); }; _listedItemClasses = []; -_actions = [localize "STR_AGM_Captives_FriskMenuHeader", localize "STR_AGM_Captives_CancelSelection"] call AGM_Interaction_fnc_prepareSelectMenu; +_actions = [localize "STR_ACE_Captives_FriskMenuHeader", localize "STR_ACE_Captives_CancelSelection"] call ACE_Interaction_fnc_prepareSelectMenu; _allGear = []; @@ -59,12 +59,12 @@ if (count (assignedItems _unit) > 0) then { if (isNil "_item" || str _item == "") then { //str _item ? _item = configFile >> "CfgWeapons" >> _x; }; - _actions = [_actions, getText(_item >> "displayName"), getText(_item >> "picture"), _x] call AGM_Interaction_fnc_addSelectableItem; + _actions = [_actions, getText(_item >> "displayName"), getText(_item >> "picture"), _x] call ACE_Interaction_fnc_addSelectableItem; _listedItemClasses pushBack _x; }; } forEach (_allGear); -[_actions, {call AGM_Interaction_fnc_hideMenu;}, {call AGM_Interaction_fnc_hideMenu;}] call AGM_Interaction_fnc_openSelectMenu; +[_actions, {call ACE_Interaction_fnc_hideMenu;}, {call ACE_Interaction_fnc_hideMenu;}] call ACE_Interaction_fnc_openSelectMenu; // don't need an "Ok" Button ctrlShow [8860, false]; diff --git a/addons/captives/functions/fnc_setCaptive.sqf b/addons/captives/functions/fnc_setCaptive.sqf new file mode 100644 index 0000000000..38ce997a88 --- /dev/null +++ b/addons/captives/functions/fnc_setCaptive.sqf @@ -0,0 +1,59 @@ +/* + * Author: Nic547, commy2 + * Makes a civilian unable to move. + * + * Arguments: + * 0: Unit + * 1: True to take captive, false to release captive + * + * Return Value: + * Nothing + * + * Example: + * TODO + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_unit,_state); + +if (!local _unit) exitWith {[[_unit, _state, true], _fnc_scriptName, _unit] call ACE_Core_fnc_execRemoteFnc}; + +if (_state) then { + if (_unit getVariable ["ACE_isCaptive", false]) exitWith {}; + + _unit setVariable ["ACE_isCaptive", true, true]; + + // fix anim on mission start (should work on dedicated servers) + _unit spawn { + [_this, "ACE_Handcuffed", true] call ACE_Core_fnc_setCaptivityStatus; + + if (_this getVariable ["ACE_isCaptive", false] && {vehicle _this == _this}) then { + [_this] call EFUNC(common,fixLoweredRifleAnimation); + [_this, "ACE_AmovPercMstpScapWnonDnon", 0] spawn EFUNC(common,doAnimation); + }; + }; + + _unit setVariable ["ACE_Captives_CargoIndex", vehicle _unit getCargoIndex _unit, true]; + + if (_unit == ACE_player) then { + showHUD false; + }; +} else { + if !(_unit getVariable ["ACE_isCaptive", false]) exitWith {}; + + _unit setVariable ["ACE_isCaptive", false, true]; + [_unit, "ACE_Handcuffed", false] call ACE_Core_fnc_setCaptivityStatus; + if (vehicle _unit == _unit) then { + [_unit, "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); + }; + + if (_unit getVariable ["ACE_Captives_CargoIndex", -1] != -1) then { + _unit setVariable ["ACE_Captives_CargoIndex", -1, true]; + }; + + if (_unit == ACE_player) then { + showHUD true; + }; +}; diff --git a/addons/captives/functions/fn_surrender.sqf b/addons/captives/functions/fnc_surrender.sqf similarity index 53% rename from addons/captives/functions/fn_surrender.sqf rename to addons/captives/functions/fnc_surrender.sqf index 9ba1dbcfc2..b308775040 100644 --- a/addons/captives/functions/fn_surrender.sqf +++ b/addons/captives/functions/fnc_surrender.sqf @@ -1,17 +1,30 @@ -// by commy2 +/* + * Author: commy2 + * TODO + * + * Arguments: + * 0: Unit + * 1: State + * + * Return Value: + * Nothing + * + * Example: + * TODO + * + * Public: No + */ +#include "script_component.hpp" -private ["_unit", "_state"]; +PARAMS_2(_unit,_state); -_unit = _this select 0; -_state = _this select 1; - -if (!local _unit) exitWith {[_this, _fnc_scriptName, _unit] call AGM_Core_fnc_execRemoteFnc}; +if (!local _unit) exitWith {[_this, _fnc_scriptName, _unit] call ACE_Core_fnc_execRemoteFnc}; if (_state) then { - if (_unit getVariable ["AGM_isSurrender", false]) exitWith {}; + if (_unit getVariable ["ACE_isSurrender", false]) exitWith {}; - _unit setVariable ["AGM_isSurrender", true, true]; - [_unit, "AGM_Surrendered", true] call AGM_Core_fnc_setCaptivityStatus; + _unit setVariable ["ACE_isSurrender", true, true]; + [_unit, "ACE_Surrendered", true] call ACE_Core_fnc_setCaptivityStatus; _unit spawn { // fix for lowered rifle animation glitch @@ -19,29 +32,29 @@ if (_state) then { _this playMove "amovpercmstpsraswrfldnon"; }; - while {_this getVariable ["AGM_isSurrender", false]} do { + while {_this getVariable ["ACE_isSurrender", false]} do { sleep 0.001; //sleep in UI if (isPlayer _this) then {showHUD false}; - if (!alive _this || {_this getVariable ["AGM_isUnconscious", false]}) then { - _this setVariable ["AGM_isSurrender", false, true]; + if (!alive _this || {_this getVariable ["ACE_isUnconscious", false]}) then { + _this setVariable ["ACE_isSurrender", false, true]; } else { _this playMove "amovpercmstpsnonwnondnon_amovpercmstpssurwnondnon"; }; }; - if !(_this getVariable ["AGM_isUnconscious", false]) then { + if !(_this getVariable ["ACE_isUnconscious", false]) then { _this playMoveNow "AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon"; } else { _this playMoveNow "unconscious"; }; - [_this, "AGM_Surrendered", false] call AGM_Core_fnc_setCaptivityStatus; + [_this, "ACE_Surrendered", false] call ACE_Core_fnc_setCaptivityStatus; if (isPlayer _this) then {showHUD true}; }; } else { - _unit setVariable ["AGM_isSurrender", false, true]; + _unit setVariable ["ACE_isSurrender", false, true]; }; /* diff --git a/addons/captives/functions/fnc_unloadCaptive.sqf b/addons/captives/functions/fnc_unloadCaptive.sqf new file mode 100644 index 0000000000..01e1d48e74 --- /dev/null +++ b/addons/captives/functions/fnc_unloadCaptive.sqf @@ -0,0 +1,35 @@ +/* + * Author: commy2 + * Unit unloads a captive from a vehicle. + * + * Arguments: + * 0: Unit that wants to unload a captive + * 1: Vehicle to unload a captive from. + * + * Return Value: + * Nothing + * + * Example: + * TODO + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_unit,_vehicle); + +private ["_cargo", "_target"]; + +_cargo = crew _vehicle; // Can also unload from driver, gunner, commander, turret positions. They shouldn't be there anyway. + +_cargo = [_cargo, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); + +if (count _cargo > 0) then { + _target = _cargo select 0; + + _target setVariable ["ACE_Captives_CargoIndex", -1, true]; + + moveOut _target; + [_target, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); + [_target, "{unassignVehicle _this}", _target] call ACE_Core_fnc_execRemoteFnc; +}; diff --git a/addons/captives/functions/script_component.hpp b/addons/captives/functions/script_component.hpp new file mode 100644 index 0000000000..3cc9111162 --- /dev/null +++ b/addons/captives/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\blank\script_component.hpp" \ No newline at end of file diff --git a/addons/captives/models/ace_cabletie.p3d b/addons/captives/models/ace_cabletie.p3d new file mode 100644 index 0000000000000000000000000000000000000000..72a6facd2bd7aa35487f2e4bd7e05b9f3bc495e7 GIT binary patch literal 52371 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 bTsemCs7wqv23_F!zwdwHYxv5Hf?fX)mwKPg literal 0 HcmV?d00001 diff --git a/addons/captives/models/ace_default.rvmat b/addons/captives/models/ace_default.rvmat new file mode 100644 index 0000000000..c7a241ca38 --- /dev/null +++ b/addons/captives/models/ace_default.rvmat @@ -0,0 +1,79 @@ +ambient[]={1,1,1,1}; +diffuse[]={1,1,1,1}; +forcedDiffuse[]={0,0,0,0}; +emmisive[]={0,0,0,1}; +specular[]={0.01,0.01,0.01,1}; //amount of glossiness - the higher the number, the higher the glossiness +specularPower=500; //area of glossiness - the higher the number, the smaller the area +PixelShaderID="Super"; +VertexShaderID="Super"; + +class Stage1 { + texture="#(rgb,1,1,1)color(0.5,0.5,1,1)"; + uvSource="tex"; + class uvTransform { + aside[]={1,0,0}; + up[]={0,1,0}; + dir[]={0,0,0}; + 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,0}; + 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,0}; + 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,1}; + }; +}; +class Stage5 { + texture="#(rgb,1,1,1)color(0.2,0.2,1,1)"; + uvSource="tex"; + class uvTransform { + aside[]={1,0,0}; + up[]={0,1,0}; + dir[]={0,0,0}; + pos[]={0,0,0}; + }; +}; +class Stage6 { + texture="#(ai,64,64,1)fresnel(4.7,1.2)"; + uvSource="tex"; + class uvTransform { + aside[]={1,0,0}; + up[]={0,1,0}; + dir[]={0,0,1}; + pos[]={0,0,0}; + }; +}; +class Stage7 { + texture="a3\data_f\env_land_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/captives/script_component.hpp b/addons/captives/script_component.hpp new file mode 100644 index 0000000000..e68eb19d2f --- /dev/null +++ b/addons/captives/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT captives +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_CAPTIVES + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_CAPTIVES + #define DEBUG_SETTINGS DEBUG_SETTINGS_CAPTIVES +#endif + +#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 060f89d9ec..eaf63b2d41 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -1,8 +1,8 @@  - + - + Take Prisoner Gefangen nehmen Tomar prisionero @@ -14,7 +14,7 @@ Foglyul ejtés Взять в плен - + Free Prisoner Gefangenen freilassen Liberar prisionero @@ -26,7 +26,7 @@ Fogoly szabadon elengedése Освободить пленника - + Escort Prisoner Gefangenen eskortieren Escoltar prisionero @@ -38,7 +38,7 @@ Fogoly kísérése Конвоировать пленника - + Release Prisoner Gefangenen loslassen Soltar prisionero @@ -50,7 +50,7 @@ Fogoly elengedése Прекратить конвоирование - + You need to take him as prisoner first! Du must ihn zuerst gefangen nehmen. Necesitas hacerle prisionero primero! @@ -62,7 +62,7 @@ Először foglyul kell ejtened! Вы должны сначала взять его в плен! - + Load Captive Gefangenen einladen Cargar prisionero @@ -72,7 +72,7 @@ Fogoly berakása Загрузить пленного - + Unload Captive Gefangenen ausladen Descargar prisionero @@ -82,7 +82,7 @@ Fogoly kivevése Выгрузить пленного - + Cable Tie Kabelbinder Opaska zaciskowa @@ -94,7 +94,7 @@ Gyorskötöző Кабельная стяжка - + Cable ties that allow you to restrain prisoners. Kabelbinder ermöglichen es, Gefangene zu fesseln. Opaska zaciskowa pozwala na skrępowanie dłoni u więźnia. @@ -106,7 +106,7 @@ Gyorskötöző emberek fogjulejtéséhez. Кабельные стяжки позволяют связывать пленников. - + Inventory of frisked person Inventar der durchsuchten Person Inventaire de la fouille @@ -116,7 +116,7 @@ Ekwipunek rewidowanej osoby Инвентарь обысканных лиц - + Frisk person Person durchsuchen Fouiller From b38bd016f59b556fd7cb7ee4bebe03de1ba5b029 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 2 Feb 2015 20:15:45 -0600 Subject: [PATCH 055/211] Semicolon and bad p3d data paths P3d's had bad \data\ folder, Models not actually used anywhere, but pboProject complains --- .../laser_selfdesignate/CfgEventhandlers.hpp | 2 +- addons/medical/equipment/Atropin-pen_used.p3d | Bin 48068 -> 49308 bytes addons/medical/equipment/Bandage-Pack.p3d | Bin 9251 -> 9366 bytes addons/medical/equipment/Bandage-elastic.p3d | Bin 7221 -> 7396 bytes 4 files changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/laser_selfdesignate/CfgEventhandlers.hpp b/addons/laser_selfdesignate/CfgEventhandlers.hpp index 27cc988813..74deb4bcf6 100644 --- a/addons/laser_selfdesignate/CfgEventhandlers.hpp +++ b/addons/laser_selfdesignate/CfgEventhandlers.hpp @@ -15,7 +15,7 @@ class Extended_GetIn_EventHandlers { class ADDON { getIn = QUOTE(call FUNC(onGetin)); }; - } + }; }; class Extended_GetOut_EventHandlers { diff --git a/addons/medical/equipment/Atropin-pen_used.p3d b/addons/medical/equipment/Atropin-pen_used.p3d index 85c123f9af14539aae8120df67d6ef1f32363d53..8d72c3f8dc25cc1a8e7cfe7453af3b0e765d9e62 100644 GIT binary patch delta 3133 zcmYk*TS${(9LI66mo6kiL?YrPWT}~%Ei*G)wLEl~W@cu!Oy@k5hisZznyqDKW>)Kc zJVZzgkuF4Jlz1UwL!=7{86sVXgotz@5+Y&{5?%DX`n~+{{XP7rY-7Izx*u=yelaLT z1vLdCG<>`GZYbP9<}P5INC`t3*}#L1#~;HniH-m~sfy@}$lsWT?nZq_gha~XNmhjx zDc>wb;!fipJYFMeqfnNJvb`wtL|(KkzG&RY+K2r&;#3TZk4W5)GDyT2WpNvE!*Brm zZem+3ikk>Lh|)y-)nSXnjpaD(D-Hoa30pkMG?9H6WkQEB0XIeyFfkngh6rOKN*@t+ z6y?2yX2J>0gvFL)Kr^5nN2n)Oh{_Xk=0AZGb~7H&5IHAN{DdV5WsEqUEQ==@H)2z; z?PUKp9zw9XCGOF^Mh&J`kZrDDQ}nVw6`pmWpwsu>_Mf zqV@*L5>a*&Wu7pfQ-r-#e&>CqxRX_eH{W!a(^O$8$8W?}j#**_Fi6DQlEr-sHw=~7 zcN5!gqqvDc2TGHKR;P-9D*3T&RXDL+g?U9aV7#Y@g=+jMwmYcPM0O3zgbw3f+!?)# ziK!MCB8>M?`iQXmve>Fr(R2U*=hEtMLaW2uE%iV%pglmSCsv5c208OL;Dr4l9?$4- zb*aMY#DB`~#LV&t7$dwLib!(FcODn+#6HHGej=g~#Y60Pg3?ZGZIZ>&gc|`*v2P$& z2}d(#3q;W~lpi|GEx0k+f=T*w;45KnMHwdIUZ4!<2x`NPo;FO>mp~^G^a`bwP+p@r zb6p-d4OLKd&Ujih$$KkM+gRFT+$@0Pa%v#3s>m+(6kVd#?Y TTwS;m{C53K$fuUKrd|I4gCaB9 delta 1937 zcmXZabxhQ87{~F67_-HkXM!k-2{u?DieezxsHi_1ED+-m6)>^yYXbI+*)d~w>+G66 z=bSaWb@or*pTA!BexBPs@Vm=Q&VK5f+m552=7d)XbKld-vWM4yomsEDRb+NscJZbQ zg}R%&-qBg_=~Ri?4H;3Hz9z$c=qs{)75b8FTa~^b+xS{$moN82tFb#PTUMt}%N8~0 zlQO6#eOxxHMIV(-YSV{hpdWouHuAU38h>s#sKaibtXG%bBkR*@E2?Sv-Ue_i;DNLio;$wq$0cM=N@PEEG!5lLcDSb7a0Y^emYt%rbFd+|S*X z-E^6=9X(aLx2IF3TL(HBUE$;;`9~&oWd2JgM$kWO`$cm4dnB{5o$#wn=uCf>@m=VT za#UCPy&Tbvek+G{r(esM9`sAwh$wEqh+;OVCq9z{deKj$)ti1S`$p4`WON_;q3qR{ zejuaz(f4eFENO_8I+8vj8;_z7$$&WefURddxA(_0t3Mj|%DM@b@kn%- z{R#Zs{l~E1C2NnRcgULK=xwt4czTQUb<&$`JrcRSF_Bs23AkQ*C;k8X9A;w@x4kB^ zUn46_qF2dslj#+*OfsD*9Vv9Wty`+oTu*nH%v3(R#1wXmWwELBLRn-Q?UIG3)AMD) z8T4G4eB@sH!^k^{Ynl^x9sQbw4b}f#Afi! UpJ(u%ftmO;%Obn`ED!Yh2Yd52O8@`> diff --git a/addons/medical/equipment/Bandage-Pack.p3d b/addons/medical/equipment/Bandage-Pack.p3d index 441af289c90fe1ddabfa5420801e38e0765c6789..00a288a57d34c8eb7f89e923911a13293501bddc 100644 GIT binary patch delta 303 zcmZ4NG0k(s6K0l_#FE6x7ulpH|7A{ral|H4z-6Q+m#`vnJ|c7S*x)jC z5X}qud74YZ3(j&T($F delta 196 zcmbQ{x!7aF6XwYuStTbkv7`WL(a8-g8DKseD~K;SxdTksg4sQ6DU${H6eo+Z$AI}0 z*kO8DCJS*u)K7uZVw@2E3?R+O1<^l;3nI3FTVS#tcL>;w1>6uZB_0U91WK#%Lij6y av>+cyKgew?lh^P;#3!(`Y&POg5d{D!phw35 diff --git a/addons/medical/equipment/Bandage-elastic.p3d b/addons/medical/equipment/Bandage-elastic.p3d index c5a84c09f6bd63f346d30b603581dcf125df1db9..d7ab5a79e0e41cd9e702a8ae4ad0dead5deda146 100644 GIT binary patch delta 431 zcmdmL@x*e&aaNX;#FE6xaYAyFpRmS5IQ!V7CdaTP!#K4thScN`cBp8cfZXIO>`3Z; zIG{4?IFQu4aKcTIntTA6W5WfNna72s-h>-T{RU)?4i8kOj|WM;3NMoS1;`v3KB!C` zACh_zekAo1kU2a8P?1VsIh4*|PoDfpKz8z5_IR*-76(Ya2F%Xkgs6QB zrSrHT{P$40fE&X92&Id7ApABlfytskEX?Z+Hm8IaBK{Rhm+?XP-=TB`KZO4iN>>Sh z+yrq$jUYtsFO;qmg7E)C=>}m4pHT!tgY2Fp5)8JNSrjBDI=MkK9ZIuIW)*{}1Iuk@ I7JtYJ0AG-Do&W#< From 67f78427226895a01fcaa8c1f6e4253a5600308c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 00:43:23 -0300 Subject: [PATCH 056/211] ACE_Settings: store settings data on a list --- addons/common/XEH_preInit.sqf | 1 + .../common/functions/fnc_getSettingData.sqf | 29 ++++++++++++ .../functions/fnc_loadSettingsFromProfile.sqf | 39 ++++++---------- .../functions/fnc_loadSettingsOnServer.sqf | 28 ++++++------ .../functions/fnc_setSettingFromConfig.sqf | 45 ++++++++++++++----- 5 files changed, 92 insertions(+), 50 deletions(-) create mode 100644 addons/common/functions/fnc_getSettingData.sqf diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index a7b48d7192..1b724625ab 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -55,6 +55,7 @@ PREP(getMarkerType); PREP(getName); PREP(getNumberFromMissionSQM); PREP(getPitchBankYaw); +PREP(getSettingData); PREP(getStringFromMissionSQM); PREP(getTargetAzimuthAndInclination); PREP(getTargetDistance); diff --git a/addons/common/functions/fnc_getSettingData.sqf b/addons/common/functions/fnc_getSettingData.sqf new file mode 100644 index 0000000000..f8572c5f42 --- /dev/null +++ b/addons/common/functions/fnc_getSettingData.sqf @@ -0,0 +1,29 @@ +/* + * Author: CAA-Picard + * Returns the metadata of a setting if it exists + * + * Arguments: + * 0: Name of the setting (String) + * + * Return Value: + * Setting Data (Array) + * 0: _name + * 1: _typeName + * 2: _isClientSetable + * 3: _localizedName + * 4: _localizedDescription + * 5: _possibleValues + * 6: _isForced + * + * Public: No + */ +#include "script_component.hpp" + +EXPLODE_1_PVT(_this,_name); + +_value = objNull; +{ + if ((_x select 0) == _name) exitWith {_value = _x}; +} forEach GVAR(settings); + +_value diff --git a/addons/common/functions/fnc_loadSettingsFromProfile.sqf b/addons/common/functions/fnc_loadSettingsFromProfile.sqf index a77af66309..9d077359ce 100644 --- a/addons/common/functions/fnc_loadSettingsFromProfile.sqf +++ b/addons/common/functions/fnc_loadSettingsFromProfile.sqf @@ -1,6 +1,6 @@ /* * Author: CAA-Picard - * Load the user setable setting from the user profile. + * Load the user setable settings from the user profile. * Config < Server UserConfig < Mission Config < Client settings * * Arguments: @@ -13,36 +13,25 @@ */ #include "script_component.hpp" -_fnc_setSettingFromProfile = { - EXPLODE_1_PVT(_this,_optionEntry); +// Iterate through settings +{ + _name = _x select 0; + _isClientSetable = _x select 2; + _isForced = _x select 6; - _name = configName _optionEntry; - _valueEntry = _optionEntry >> "value"; - _isClientSetable = getNumber (_optionEntry >> "isClientSetable"); - - if (_isClientSetable > 0) then { - if !(missionNamespace getVariable format ["%1_forced", _name, false]) then { + // If setting is user setable + if (_isClientSetable) then { + // If setting is not forced + if !(_isForced) then { _profileValue = profileNamespace getvariable _name; + // If the setting is stored on the profile if !(isNil _profileValue) then { + // If the profile variable has the correct type if (typeName _profileValue == typeName (missionNamespace getvariable _name)) then { + // Load the setting from the profile missionNamespace setvariable [_name, _profileValue]; }; }; }; }; -}; - -// Iterate through settings from main config -_countOptions = count (configFile >> "ACE_Settings"); -for "_index" from 0 to (_countOptions - 1) do { - _optionEntry = (configFile >> "ACE_Settings") select _index; - [_optionEntry] call _fnc_setSettingFromProfile; - -}; - -// Iterate through settings from mission config -_countOptions = count (missionConfigFile >> "ACE_Settings"); -for "_index" from 0 to (_countOptions - 1) do { - _optionEntry = (missionConfigFile >> "ACE_Settings") select _index; - [_optionEntry] call _fnc_setSettingFromProfile; -}; +} forEach GVAR(settings); diff --git a/addons/common/functions/fnc_loadSettingsOnServer.sqf b/addons/common/functions/fnc_loadSettingsOnServer.sqf index e9d87ad742..20a7e1c40f 100644 --- a/addons/common/functions/fnc_loadSettingsOnServer.sqf +++ b/addons/common/functions/fnc_loadSettingsOnServer.sqf @@ -13,7 +13,7 @@ */ #include "script_component.hpp" -GVAR(settingsList) = []; +GVAR(settings) = []; // Load settings from main config _countOptions = count (configFile >> "ACE_Settings"); @@ -25,15 +25,13 @@ for "_index" from 0 to (_countOptions - 1) do { // Check if all settings should be forced if (GVAR(forceAllSettings)) then { { - if !(missionNamespace getVariable format ["%1_forced", _x]) then { - missionNamespace setVariable format ["%1_forced", _x, true]; - publicVariable format ["%1_forced", _name]; - }; - } forEach GVAR(settingsList); + _x set [6, true]; + } forEach GVAR(settings); }; +// @todo // Load settings from server userconfig only if the ACE_ServerSettings is loaded -if (isClass (configFile >> "CfgPatches" >> "ACE_ServerSettings")) then { +/*if (isClass (configFile >> "CfgPatches" >> "ACE_ServerSettings")) then { DFUNC(serverUserConfig) = compile preprocessFileLineNumbers "\userconfig\ACE\ACE_Settings.hpp"; if !(isNil DFUNC(serverUserConfig)) then { [] call FUNC(serverUserConfig); @@ -47,7 +45,7 @@ if (isClass (configFile >> "CfgPatches" >> "ACE_ServerSettings")) then { }; } forEach GVAR(settingsList); }; -}; +};*/ // Load settings from mission config _countOptions = count (missionConfigFile >> "ACE_Settings"); @@ -59,9 +57,13 @@ for "_index" from 0 to (_countOptions - 1) do { // Check if all settings should be forced if (GVAR(forceAllSettings)) then { { - if !(missionNamespace getVariable format ["%1_forced", _x]) then { - missionNamespace setVariable format ["%1_forced", _x, true]; - publicVariable format ["%1_forced", _name]; - }; - } forEach GVAR(settingsList); + _x set [6, true]; + } forEach GVAR(settings); }; + +// Publish all settings data +publicVariable QGVAR(settings); +// Publish all setting values +{ + publicVariable (_x select 0); +} forEach GVAR(settings); diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf index 89967c357c..a6b46f45c4 100644 --- a/addons/common/functions/fnc_setSettingFromConfig.sqf +++ b/addons/common/functions/fnc_setSettingFromConfig.sqf @@ -28,6 +28,9 @@ _fnc_getValueWithType = { if (_typeName == "ARRAY") exitWith { getArray (_optionEntry >> "value") }; + if (_typeName == "COLOR") exitWith { + getArray (_optionEntry >> "value") + }; _value }; @@ -39,41 +42,59 @@ if (isNil _name) then { // Get type from config _typeName = getText (_optionEntry >> "typeName"); + if (_typeName == "") then { + _typeName = "SCALAR"; + }; // Read entry and cast it to the correct type _value = [_optionEntry, _typeName] call _fnc_getValueWithType; // Init the variable and publish it missionNamespace setVariable [_name, _value]; - publicVariable _name; - // Set the variable to not forced - missionNamespace setVariable [format ["%1_forced", _name], false]; - publicVariable format ["%1_forced", _name]; - // Add the variable to a list on the server - GVAR(settingsList) pushBack _name; + // Add the setting to a list on the server + // Set the variable to not forced + /*_settingData = [ + _name, + _typeName, + _isClientSetable, + _localizedName, + _localizedDescription, + _possibleValues, + _isForced + ];*/ + _settingData = [ + _name, + _typeName, + (getNumber (_optionEntry >> "isClientSetable")) > 0, + getText (_optionEntry >> "displayName"), + getText (_optionEntry >> "description"), + getArray (_optionEntry >> "values"), + getNumber (_optionEntry >> "force") > 0 + ]; + + GVAR(settings) pushBack _settingData; } else { // The setting already exists. // Check if it's already forced and quit - if (missionNamespace getVariable format ["%1_forced", _name]) exitWith {}; + _settingData = [_name] call FUNC(getSettingData); + if (_settingData select 6) exitWith {}; // The setting is not forced, so update the value // Get the type from the existing variable - _typeName = typeName (missionNamespace getVariable _name); + _typeName = _settingData select 1; // Read entry and cast it to the correct type _value = [_optionEntry, _typeName] call _fnc_getValueWithType; // Update the variable and publish it missionNamespace setVariable [_name, _value]; - publicVariable _name; - // Check if it needs forcing + // Force the setting if requested if (getNumber (_optionEntry >> "force") > 0) then { - missionNamespace setVariable [format ["%1_forced", _name], true]; - publicVariable format ["%1_forced", _name]; + _settingData set [6, true]; }; }; From 354b2616779df2a42bfa8f9284c1ac278858f024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 00:43:53 -0300 Subject: [PATCH 057/211] ACE_Settings: added sample setting entry for documentation --- addons/common/config.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 0189facd47..84052cbdfb 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -58,6 +58,32 @@ class ACE_canInteractConditions { }; class ACE_Settings { + /* + *class GVAR(sampleSetting) { + * Value + * value = 1; + * + * Type (SCALAR, BOOL, STRING, ARRAY, COLOR) + * typeName = "SCALAR"; + * + * Force the setting? + * force = 0; + * + * Does it appear on the options menu? + * isClientSetable = 1; + * + * The following settings only apply when isClientSetable == 1 + * Stringtable entry with the setting name + * displayName = "$STR_ACE_Common_SettingName"; + * + * Stringtable entry with the setting description + * description = "$STR_ACE_Common_SettingDescription"; + * + * Stringtable entries that describe the options + * Only applies if typeName == "SCALAR"; + * values[] = {"Disabled", "Enabled", "Only Cursor", "Only On Keypress", "Only Cursor and KeyPress"}; + *}; + */ class GVAR(forceAllSettings) { value = 0; typeName = "BOOL"; From 173169bc3d6b1aba5176c48deee2c15b943daadd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 00:44:06 -0300 Subject: [PATCH 058/211] Fix in goggles --- addons/goggles/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index eafe07fb27..dcc9c6ed0e 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -248,7 +248,7 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSetable = 1; - displayName = "$STR_ACE_Goggles_ShowInThirdPerson;" + displayName = "$STR_ACE_Goggles_ShowInThirdPerson"; }; }; From 91cfb40e6f5b25918daa33fb7c76beac8e2f7a79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 00:44:34 -0300 Subject: [PATCH 059/211] ACE_Settings: updated optionsmenu to use the the new system --- addons/optionsmenu/CfgEventHandlers.hpp | 6 --- addons/optionsmenu/XEH_postInit.sqf | 4 -- addons/optionsmenu/XEH_preInit.sqf | 5 --- .../functions/fnc_addClientSideColor.sqf | 19 ---------- .../functions/fnc_addClientSideOptions.sqf | 19 ---------- .../functions/fnc_addFromConfig.sqf | 38 ------------------- .../functions/fnc_loadFromProfile.sqf | 36 ------------------ .../functions/fnc_onSettingsMenuOpen.sqf | 21 ++++++++++ .../functions/fnc_saveToProfile.sqf | 37 ------------------ .../fnc_settingsMenuUpdateKeyView.sqf | 22 +++++++---- .../functions/fnc_settingsMenuUpdateList.sqf | 19 +++++++--- .../functions/fnc_updateSetting.sqf | 20 +++++++--- 12 files changed, 64 insertions(+), 182 deletions(-) delete mode 100644 addons/optionsmenu/XEH_postInit.sqf delete mode 100644 addons/optionsmenu/functions/fnc_addClientSideColor.sqf delete mode 100644 addons/optionsmenu/functions/fnc_addClientSideOptions.sqf delete mode 100644 addons/optionsmenu/functions/fnc_addFromConfig.sqf delete mode 100644 addons/optionsmenu/functions/fnc_loadFromProfile.sqf delete mode 100644 addons/optionsmenu/functions/fnc_saveToProfile.sqf diff --git a/addons/optionsmenu/CfgEventHandlers.hpp b/addons/optionsmenu/CfgEventHandlers.hpp index 88bfdf4e6b..b97829836e 100644 --- a/addons/optionsmenu/CfgEventHandlers.hpp +++ b/addons/optionsmenu/CfgEventHandlers.hpp @@ -3,9 +3,3 @@ class Extended_PreInit_EventHandlers { init = QUOTE(call COMPILE_FILE(XEH_preInit)); }; }; - -class Extended_PostInit_EventHandlers { - class ADDON { - init = QUOTE(call COMPILE_FILE(XEH_postInit)); - }; -}; diff --git a/addons/optionsmenu/XEH_postInit.sqf b/addons/optionsmenu/XEH_postInit.sqf deleted file mode 100644 index c0b61d87de..0000000000 --- a/addons/optionsmenu/XEH_postInit.sqf +++ /dev/null @@ -1,4 +0,0 @@ -#include "script_component.hpp" - -//Add Settings from configFile -[] call FUNC(addFromConfig); diff --git a/addons/optionsmenu/XEH_preInit.sqf b/addons/optionsmenu/XEH_preInit.sqf index 97df9410e6..83a50bce65 100644 --- a/addons/optionsmenu/XEH_preInit.sqf +++ b/addons/optionsmenu/XEH_preInit.sqf @@ -2,16 +2,11 @@ ADDON = false; -PREP(addClientSideColor); -PREP(addClientSideOptions); -PREP(addFromConfig); -PREP(loadFromProfile); PREP(onListBoxSettingsChanged); PREP(onListBoxShowSelectionChanged); PREP(onSettingsMenuOpen); PREP(onSliderPosChanged); PREP(resetSettings); -PREP(saveToProfile); PREP(settingsMenuUpdateKeyView); PREP(settingsMenuUpdateList); PREP(updateSetting); diff --git a/addons/optionsmenu/functions/fnc_addClientSideColor.sqf b/addons/optionsmenu/functions/fnc_addClientSideColor.sqf deleted file mode 100644 index ca0473cb89..0000000000 --- a/addons/optionsmenu/functions/fnc_addClientSideColor.sqf +++ /dev/null @@ -1,19 +0,0 @@ -/** - * fnc_addClientSideColor.sqf - * @Descr: N/A - * @Author: PabstMirror - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ -#include "script_component.hpp" - -private ["_currentValue"]; -PARAMS_4(_name,_localizedName,_localizedDescription,_defaultValue); - -GVAR(clientSideColors) pushBack [_name, _localizedName, _localizedDescription, [], _defaultValue]; - -//Get the current setting from profile (or default) and set it: -_currentValue = [MENU_TAB_COLORS, _name, _defaultValue] call FUNC(loadFromProfile); -[MENU_TAB_COLORS, _name, _currentValue] call FUNC(updateSetting); diff --git a/addons/optionsmenu/functions/fnc_addClientSideOptions.sqf b/addons/optionsmenu/functions/fnc_addClientSideOptions.sqf deleted file mode 100644 index 4ad9584410..0000000000 --- a/addons/optionsmenu/functions/fnc_addClientSideOptions.sqf +++ /dev/null @@ -1,19 +0,0 @@ -/** - * fnc_addClientSideOptions.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ -#include "script_component.hpp" - -private ["_currentValue"]; -PARAMS_5(_name,_localizedName,_localizedDescription,_possibleValues,_defaultValue); - -GVAR(clientSideOptions) pushBack [_name, _localizedName, _localizedDescription, _possibleValues, -1, _defaultValue]; - -//Get the current setting from profile (or default) and set it: -_currentValue = [MENU_TAB_OPTIONS, _name, _defaultValue] call FUNC(loadFromProfile); -[MENU_TAB_OPTIONS, _name, _currentValue] call FUNC(updateSetting); diff --git a/addons/optionsmenu/functions/fnc_addFromConfig.sqf b/addons/optionsmenu/functions/fnc_addFromConfig.sqf deleted file mode 100644 index 226b5dee73..0000000000 --- a/addons/optionsmenu/functions/fnc_addFromConfig.sqf +++ /dev/null @@ -1,38 +0,0 @@ -/** -* fnc_addFromConfig.sqf -* @Descr: N/A -* @Author: PabstMirror -* -* @Arguments: [] -* @Return: -* @PublicAPI: false -*/ -#include "script_component.hpp" - -if (isClass (configFile >> "ACE_Options")) then { - _countOptions = count (configFile >> "ACE_Options"); - for "_index" from 0 to (_countOptions - 1) do { - _optionEntry = (configFile >> "ACE_Options") select _index; - _name = configName _optionEntry; - _displayName = getText (_optionEntry >> "displayName"); - _description = getText (_optionEntry >> "description"); - _default = getNumber (_optionEntry >> "default"); - _choices = getArray (_optionEntry >> "values"); - if ((count _choices) == 0) then { - _choices = [(localize "STR_ACE_OptionsMenu_Disabled"), (localize "STR_ACE_OptionsMenu_Enabled")]; - }; - [_name, _displayName, _description, _choices, _default] call FUNC(addClientSideOptions); - }; -}; - -if (isClass (configFile >> "ACE_Colors")) then { - _countOptions = count (configFile >> "ACE_Colors"); - for "_index" from 0 to (_countOptions - 1) do { - _optionEntry = (configFile >> "ACE_Colors") select _index; - _name = configName _optionEntry; - _displayName = getText (_optionEntry >> "displayName"); - _description = getText (_optionEntry >> "description"); - _default = getArray (_optionEntry >> "default"); - [_name, _displayName, _description, _default] call FUNC(addClientSideColor); - }; -}; diff --git a/addons/optionsmenu/functions/fnc_loadFromProfile.sqf b/addons/optionsmenu/functions/fnc_loadFromProfile.sqf deleted file mode 100644 index 21819f1add..0000000000 --- a/addons/optionsmenu/functions/fnc_loadFromProfile.sqf +++ /dev/null @@ -1,36 +0,0 @@ -/** -* fnc_loadFromProfile.sqf -* @Descr: N/A -* @Author: Glowbal -* -* @Arguments: [] -* @Return: -* @PublicAPI: false -*/ -#include "script_component.hpp" - -private ["_typeString", "_settingValue", "_badData"]; -PARAMS_3(_type,_name,_default); - -_typeString = ""; -switch (_type) do { -case (MENU_TAB_OPTIONS): {_typeString = "option";}; -case (MENU_TAB_COLORS): {_typeString = "color";}; -}; - -_settingValue = profileNamespace getvariable [(format ["ace_%1_%2", _typeString, _name]), _default]; - -_badData = isNil "_settingValue"; -if (!_badData) then { - switch (_type) do { - case (MENU_TAB_OPTIONS): {_badData = ((typeName _settingValue) != (typeName 0));}; - case (MENU_TAB_COLORS): {_badData = (((typeName _settingValue) != (typeName [])) || {(count _settingValue) != 4});}; - }; -}; -if (_badData) then { - _settingValue = _default; - systemChat format ["Bad Data in profile [ace_%1_%2] using default", _typeString, _name]; - ERROR("Bad Value in profile"); -}; - -_settingValue diff --git a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf index 11f5a3ef64..d0b104135d 100644 --- a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf +++ b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf @@ -9,5 +9,26 @@ */ #include "script_component.hpp" +// Filter only user setable setting +GVAR(clientSideOptions) = []; +GVAR(clientSideColors) = []; +{ + // If the setting is user setable + if (_x select 2) then { + // Append the current value to the setting metadata + _setting = + _x; + _setting pushBack (missionNamespace getVariable (_x select 0)); + + // Categorize the setting according to types + // @todo: allow the user to modify other types of parameters? + if ((_x select 1) == "SCALAR" || (_x select 1) == "BOOL") then { + GVAR(clientSideOptions) pushBack _setting; + }; + if ((_x select 1) == "COLOR") then { + GVAR(clientSideColors) pushBack _setting; + }; + }; +} forEach EGVAR(common,settings); + //Delay a frame [{ [MENU_TAB_OPTIONS] call FUNC(onListBoxShowSelectionChanged) }, []] call EFUNC(common,execNextFrame); diff --git a/addons/optionsmenu/functions/fnc_saveToProfile.sqf b/addons/optionsmenu/functions/fnc_saveToProfile.sqf deleted file mode 100644 index 30db652186..0000000000 --- a/addons/optionsmenu/functions/fnc_saveToProfile.sqf +++ /dev/null @@ -1,37 +0,0 @@ -/** -* fnc_saveToProfile.sqf -* @Descr: Save the clientside option to the profile. -* @Author: Glowbal -* -* @Arguments: [name STRING (Name of setting)] -* @Return: BOOL True if saved. -* @PublicAPI: false -*/ -#include "script_component.hpp" - -private ["_nameSelected", "_saved"]; -PARAMS_2(_type,_name); - -_saved = false; -switch (_type) do { -case (MENU_TAB_OPTIONS): { - { - _nameSelected = _x select 0; - if (_nameSelected == _name) exitwith { - profileNamespace setvariable [(format ["ace_option_%1", _name]), (_x select 4)]; - _saved = true; - }; - }foreach GVAR(clientSideOptions); - }; -case (MENU_TAB_COLORS): { - { - _nameSelected = _x select 0; - if (_nameSelected == _name) exitwith { - profileNamespace setvariable [(format ["ace_color_%1", _name]), (_x select 3)]; - _saved = true; - }; - }foreach GVAR(clientSideColors); - }; -}; - -_saved diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf index 09242bcb8c..23b9ed9523 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf @@ -33,8 +33,8 @@ if (count _collection > 0) then { _setting = _collection select _settingIndex; _entryName = _setting select 0; - _localizedName = _setting select 1; - _localizedDescription = _setting select 2; + _localizedName = _setting select 3; + _localizedDescription = _setting select 4; if (_localizedName == "") then {_localizedName = _entryName;}; (_settingsMenu displayCtrl 250) ctrlSetText _localizedName; @@ -43,15 +43,23 @@ if (count _collection > 0) then { switch (GVAR(optionMenu_openTab)) do { case (MENU_TAB_OPTIONS): { - _possibleValues = _setting select 3; - _settingsValue = _setting select 4; - lbClear 400; - { lbAdd [400, _x]; } foreach _possibleValues; + _possibleValues = _setting select 5; + _settingsValue = _setting select 7; + // Created disable/enable options for bools + if ((_setting select 1) == "BOOL") then { + lbClear 400; + lbAdd [400, (localize "STR_ACE_OptionsMenu_Disabled")]; + lbAdd [400, (localize "STR_ACE_OptionsMenu_Enabled")]; + _settingsValue = [0, 1] select _settingsValue; + } else { + lbClear 400; + { lbAdd [400, _x]; } foreach _possibleValues; + }; (_settingsMenu displayCtrl 400) lbSetCurSel _settingsValue; }; case (MENU_TAB_COLORS): { - _currentColor = _setting select 3; + _currentColor = _setting select 7; { sliderSetPosition [_x, (255 * (_currentColor select _forEachIndex))]; } forEach [410, 411, 412, 413]; diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf index ff825a2141..78b5113203 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf @@ -21,21 +21,30 @@ lbclear _ctrlList; switch (GVAR(optionMenu_openTab)) do { case (MENU_TAB_OPTIONS): { { - _settingsText = ((_x select 3) select (_x select 4)); - _ctrlList lbadd (_x select 1); + _ctrlList lbadd (_x select 3); + + _settingsValue = _x select 7; + + // Created disable/enable options for bools + _settingsText = if ((_x select 1) == "BOOL") then { + [(localize "STR_ACE_OptionsMenu_Disabled"), (localize "STR_ACE_OptionsMenu_Enabled")] select _settingsValue; + } else { + (_x select 5) select _settingsValue; + }; + _ctrlList lbadd (_settingsText); }foreach GVAR(clientSideOptions); }; case (MENU_TAB_COLORS): { { - _color = +(_x select 3); + _color = +(_x select 7); { _color set [_forEachIndex, ((round (_x * 100))/100)]; } forEach _color; _settingsColor = str _color; - _ctrlList lbadd (_x select 1); + _ctrlList lbadd (_x select 3); _ctrlList lbadd (_settingsColor); - _ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 3)]; + _ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 7)]; }foreach GVAR(clientSideColors); }; }; diff --git a/addons/optionsmenu/functions/fnc_updateSetting.sqf b/addons/optionsmenu/functions/fnc_updateSetting.sqf index 403a09cdb2..270d39f540 100644 --- a/addons/optionsmenu/functions/fnc_updateSetting.sqf +++ b/addons/optionsmenu/functions/fnc_updateSetting.sqf @@ -17,25 +17,33 @@ _changed = false; switch (_type) do { case (MENU_TAB_OPTIONS): { { - if (((_x select 0) == _name) && {!((_x select 4) isEqualTo _newValue)}) then { - _changed = true; - _x set [4, _newValue]; + if ((_x select 0) == _name) then { + + if ((_x select 1) == "BOOL") then { + _newValue = [false, true] select _newValue; + }; + + if !((_x select 7) isEqualTo _newValue) then { + _changed = true; + _x set [7, _newValue]; + } ; + }; } foreach GVAR(clientSideOptions); }; case (MENU_TAB_COLORS): { { - if (((_x select 0) == _name) && {!((_x select 3) isEqualTo _newValue)}) then { + if (((_x select 0) == _name) && {!((_x select 7) isEqualTo _newValue)}) then { _changed = true; - _x set [3, _newValue]; + _x set [7, _newValue]; }; } foreach GVAR(clientSideColors); }; }; if (_changed) then { + profileNamespace setvariable [_name, _newValue]; missionNameSpace setVariable [_name, _newValue]; - [_type, _name] call FUNC(saveToProfile); ["SettingChanged", [_name, _newValue]] call EFUNC(common,localEvent); TRACE_2("Variable Updated",_name,_newValue); }; From 857b45453a126f045fc01babeb8c207a51ba3371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 01:03:26 -0300 Subject: [PATCH 060/211] ACE_Settings: fix option to reset user setable settings to default --- addons/common/functions/fnc_getSettingData.sqf | 1 + addons/common/functions/fnc_setSettingFromConfig.sqf | 6 ++++-- addons/optionsmenu/functions/fnc_resetSettings.sqf | 4 ++-- .../functions/fnc_settingsMenuUpdateKeyView.sqf | 4 ++-- .../functions/fnc_settingsMenuUpdateList.sqf | 6 +++--- addons/optionsmenu/functions/fnc_updateSetting.sqf | 10 +++++----- 6 files changed, 17 insertions(+), 14 deletions(-) diff --git a/addons/common/functions/fnc_getSettingData.sqf b/addons/common/functions/fnc_getSettingData.sqf index f8572c5f42..5b0c1c96ea 100644 --- a/addons/common/functions/fnc_getSettingData.sqf +++ b/addons/common/functions/fnc_getSettingData.sqf @@ -14,6 +14,7 @@ * 4: _localizedDescription * 5: _possibleValues * 6: _isForced + * 7: _defaultValue * * Public: No */ diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf index a6b46f45c4..f87249786f 100644 --- a/addons/common/functions/fnc_setSettingFromConfig.sqf +++ b/addons/common/functions/fnc_setSettingFromConfig.sqf @@ -61,7 +61,8 @@ if (isNil _name) then { _localizedName, _localizedDescription, _possibleValues, - _isForced + _isForced, + _defaultValue ];*/ _settingData = [ _name, @@ -70,7 +71,8 @@ if (isNil _name) then { getText (_optionEntry >> "displayName"), getText (_optionEntry >> "description"), getArray (_optionEntry >> "values"), - getNumber (_optionEntry >> "force") > 0 + getNumber (_optionEntry >> "force") > 0, + _value ]; GVAR(settings) pushBack _settingData; diff --git a/addons/optionsmenu/functions/fnc_resetSettings.sqf b/addons/optionsmenu/functions/fnc_resetSettings.sqf index bdc5c7662a..dd4b951ef5 100644 --- a/addons/optionsmenu/functions/fnc_resetSettings.sqf +++ b/addons/optionsmenu/functions/fnc_resetSettings.sqf @@ -13,13 +13,13 @@ private ["_name", "_default", "_lastSelected"]; { _name = _x select 0; - _default = _x select 5; + _default = _x select 7; [MENU_TAB_OPTIONS, _name, _default] call FUNC(updateSetting); } forEach GVAR(clientSideOptions); { _name = _x select 0; - _default = _x select 4; + _default = _x select 7; [MENU_TAB_COLORS, _name, _default] call FUNC(updateSetting); } forEach GVAR(clientSideColors); diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf index 23b9ed9523..c271ecd176 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf @@ -44,7 +44,7 @@ if (count _collection > 0) then { switch (GVAR(optionMenu_openTab)) do { case (MENU_TAB_OPTIONS): { _possibleValues = _setting select 5; - _settingsValue = _setting select 7; + _settingsValue = _setting select 8; // Created disable/enable options for bools if ((_setting select 1) == "BOOL") then { @@ -59,7 +59,7 @@ if (count _collection > 0) then { (_settingsMenu displayCtrl 400) lbSetCurSel _settingsValue; }; case (MENU_TAB_COLORS): { - _currentColor = _setting select 7; + _currentColor = _setting select 8; { sliderSetPosition [_x, (255 * (_currentColor select _forEachIndex))]; } forEach [410, 411, 412, 413]; diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf index 78b5113203..73a6d3de3b 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf @@ -23,7 +23,7 @@ case (MENU_TAB_OPTIONS): { { _ctrlList lbadd (_x select 3); - _settingsValue = _x select 7; + _settingsValue = _x select 8; // Created disable/enable options for bools _settingsText = if ((_x select 1) == "BOOL") then { @@ -37,14 +37,14 @@ case (MENU_TAB_OPTIONS): { }; case (MENU_TAB_COLORS): { { - _color = +(_x select 7); + _color = +(_x select 8); { _color set [_forEachIndex, ((round (_x * 100))/100)]; } forEach _color; _settingsColor = str _color; _ctrlList lbadd (_x select 3); _ctrlList lbadd (_settingsColor); - _ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 7)]; + _ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 8)]; }foreach GVAR(clientSideColors); }; }; diff --git a/addons/optionsmenu/functions/fnc_updateSetting.sqf b/addons/optionsmenu/functions/fnc_updateSetting.sqf index 270d39f540..4691ff8e67 100644 --- a/addons/optionsmenu/functions/fnc_updateSetting.sqf +++ b/addons/optionsmenu/functions/fnc_updateSetting.sqf @@ -23,9 +23,9 @@ case (MENU_TAB_OPTIONS): { _newValue = [false, true] select _newValue; }; - if !((_x select 7) isEqualTo _newValue) then { + if !((_x select 8) isEqualTo _newValue) then { _changed = true; - _x set [7, _newValue]; + _x set [8, _newValue]; } ; }; @@ -33,16 +33,16 @@ case (MENU_TAB_OPTIONS): { }; case (MENU_TAB_COLORS): { { - if (((_x select 0) == _name) && {!((_x select 7) isEqualTo _newValue)}) then { + if (((_x select 0) == _name) && {!((_x select 8) isEqualTo _newValue)}) then { _changed = true; - _x set [7, _newValue]; + _x set [8, _newValue]; }; } foreach GVAR(clientSideColors); }; }; if (_changed) then { - profileNamespace setvariable [_name, _newValue]; + profileNamespace setVariable [_name, _newValue]; missionNameSpace setVariable [_name, _newValue]; ["SettingChanged", [_name, _newValue]] call EFUNC(common,localEvent); TRACE_2("Variable Updated",_name,_newValue); From 2c0d2013d47e9716bd02be857190b76519af56d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 01:45:04 -0300 Subject: [PATCH 061/211] ACE_Settings: Added a function to change settings on runtime (e.g. for modules) --- addons/common/XEH_postInit.sqf | 14 ++++++ addons/common/functions/fnc_setSetting.sqf | 46 +++++++++++++------ .../functions/fnc_setSettingFromConfig.sqf | 4 +- .../functions/fnc_updateSetting.sqf | 4 +- 4 files changed, 49 insertions(+), 19 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 70826b7f11..5abdfbc597 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -4,6 +4,20 @@ // Load settings from profile call FUNC(loadSettingsFromProfile); +// Listens for global "SettingChanged" events, to update the force status locally +["SettingChanged", { + + PARAMS_2(_name,_value); + if !(count _this > 2) exitWith {}; + + _force = _this select 2; + if (_force) then { + _settingData = [_name] call FUNC(getSettingData); + if (isNull _settingData) exitWith {}; + _settingData set [6,_force]; + }; +}] call FUNC(addEventhandler); + // hack to get PFH to work in briefing [QGVAR(onBriefingPFH), "onEachFrame", { if (time > 0) exitWith { diff --git a/addons/common/functions/fnc_setSetting.sqf b/addons/common/functions/fnc_setSetting.sqf index 5a570d618a..3fd273adca 100644 --- a/addons/common/functions/fnc_setSetting.sqf +++ b/addons/common/functions/fnc_setSetting.sqf @@ -1,11 +1,14 @@ /* * Author: CAA-Picard - * Set a setting if it was not previosuly forced. Force if neccesary. + * Change the value of an existing setting if it was not previously forced. Force if neccesary. + * If executed on clients it has local effect. + * If executed on server it can have global effect if the last parameter is set to true. * * Arguments: * 0: Setting name (String) * 1: Value (Any) * 2: Force it? (Bool) (Optional) + * 3: Broadcast the change to all clients (Bool) (Optional) * * Return Value: * None @@ -16,25 +19,40 @@ EXPLODE_2_PVT(_this,_name,_value); -if !(isServer) exitWith {}; - private ["force"]; _force = false; if (count _this > 2) then { _force = _this select 2; }; -// Check if it's already forced and quit -if (missionNamespace getVariable [format ["%1_forced", _name], false]) exitWith {}; +_settingData = [_name] call FUNC(getSettingData); -// Check if the variable is already defined -if (isNil _name) then { - // Add the variable to a list on the server - GVAR(settingsList) pushBack _name; -}; +// Exit if the setting does not exist +if (isNull _settingData) exitWith {}; -// Update the variable and publish it +// Exit if the setting is already forced +if (_settingData select 6) exitWith {}; + +// Exit if the type is not right +if (typeName _value != typeName (missionNamespace getVariable _name)) exitWith {}; + +// Force it if it was required +_settingData set [6, _force]; + +// Exit if the value didn't change +if (_value isEqualTo (missionNamespace getVariable _name)) exitWith {}; + +// Update the variable +TRACE_2("Variable Updated",_name,_value); missionNamespace setVariable [_name, _value]; -publicVariable _name; -missionNamespace setVariable [format ["%1_forced", _name], _force]; -publicVariable format ["%1_forced", _name]; + +if (isServer && {count _this > 3} && {_this select 3}) then { + // Publicize the new value + publicVariable _name; + + // Raise event globally, this publicizes eventual changes in _force status so clients can update it locally + ["SettingChanged", [_name, _value, _force]] call FUNC(globalEvent); +} else { + // Raise event locally + ["SettingChanged", [_name, _value, _force]] call FUNC(localEvent); +}; diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf index f87249786f..6054942485 100644 --- a/addons/common/functions/fnc_setSettingFromConfig.sqf +++ b/addons/common/functions/fnc_setSettingFromConfig.sqf @@ -49,7 +49,7 @@ if (isNil _name) then { // Read entry and cast it to the correct type _value = [_optionEntry, _typeName] call _fnc_getValueWithType; - // Init the variable and publish it + // Init the variable missionNamespace setVariable [_name, _value]; // Add the setting to a list on the server @@ -92,7 +92,7 @@ if (isNil _name) then { // Read entry and cast it to the correct type _value = [_optionEntry, _typeName] call _fnc_getValueWithType; - // Update the variable and publish it + // Update the variable missionNamespace setVariable [_name, _value]; // Force the setting if requested diff --git a/addons/optionsmenu/functions/fnc_updateSetting.sqf b/addons/optionsmenu/functions/fnc_updateSetting.sqf index 4691ff8e67..e4a9917f25 100644 --- a/addons/optionsmenu/functions/fnc_updateSetting.sqf +++ b/addons/optionsmenu/functions/fnc_updateSetting.sqf @@ -43,7 +43,5 @@ case (MENU_TAB_COLORS): { if (_changed) then { profileNamespace setVariable [_name, _newValue]; - missionNameSpace setVariable [_name, _newValue]; - ["SettingChanged", [_name, _newValue]] call EFUNC(common,localEvent); - TRACE_2("Variable Updated",_name,_newValue); + [_name, _newValue] call EFUNC(common,setSetting); }; From 658f30b9a2f28b871216754f3bdffe2337b730b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 02:37:13 -0300 Subject: [PATCH 062/211] ACE_Settings: various fixes --- addons/common/XEH_postInit.sqf | 2 +- addons/common/functions/fnc_getSettingData.sqf | 3 ++- addons/common/functions/fnc_setSetting.sqf | 10 ++++++---- .../optionsmenu/functions/fnc_onSettingsMenuOpen.sqf | 4 ++-- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 5abdfbc597..a645d48293 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -13,7 +13,7 @@ call FUNC(loadSettingsFromProfile); _force = _this select 2; if (_force) then { _settingData = [_name] call FUNC(getSettingData); - if (isNull _settingData) exitWith {}; + if (count _settingData == 0) exitWith {}; _settingData set [6,_force]; }; }] call FUNC(addEventhandler); diff --git a/addons/common/functions/fnc_getSettingData.sqf b/addons/common/functions/fnc_getSettingData.sqf index 5b0c1c96ea..3dd2582860 100644 --- a/addons/common/functions/fnc_getSettingData.sqf +++ b/addons/common/functions/fnc_getSettingData.sqf @@ -22,7 +22,8 @@ EXPLODE_1_PVT(_this,_name); -_value = objNull; +private ["_value"]; +_value = []; { if ((_x select 0) == _name) exitWith {_value = _x}; } forEach GVAR(settings); diff --git a/addons/common/functions/fnc_setSetting.sqf b/addons/common/functions/fnc_setSetting.sqf index 3fd273adca..8c9e6853a9 100644 --- a/addons/common/functions/fnc_setSetting.sqf +++ b/addons/common/functions/fnc_setSetting.sqf @@ -17,9 +17,11 @@ */ #include "script_component.hpp" -EXPLODE_2_PVT(_this,_name,_value); +private ["_name","_value"]; +_name = _this select 0; +_value = _this select 1; -private ["force"]; +private ["_force"]; _force = false; if (count _this > 2) then { _force = _this select 2; @@ -28,13 +30,13 @@ if (count _this > 2) then { _settingData = [_name] call FUNC(getSettingData); // Exit if the setting does not exist -if (isNull _settingData) exitWith {}; +if (count _settingData == 0) exitWith {}; // Exit if the setting is already forced if (_settingData select 6) exitWith {}; // Exit if the type is not right -if (typeName _value != typeName (missionNamespace getVariable _name)) exitWith {}; +if ((typeName _value) != typeName (missionNamespace getVariable _name)) exitWith {}; // Force it if it was required _settingData set [6, _force]; diff --git a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf index d0b104135d..e3137f8ca9 100644 --- a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf +++ b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf @@ -13,8 +13,8 @@ GVAR(clientSideOptions) = []; GVAR(clientSideColors) = []; { - // If the setting is user setable - if (_x select 2) then { + // If the setting is user setable and not forced + if ((_x select 2) && !(_x select 6)) then { // Append the current value to the setting metadata _setting = + _x; _setting pushBack (missionNamespace getVariable (_x select 0)); From 051ad008060636c8b135df975445ba29b59d1d44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 02:37:38 -0300 Subject: [PATCH 063/211] ACE_Settings: added function to add settings at runtime --- addons/common/XEH_preInit.sqf | 1 + addons/common/functions/fnc_addSetting.sqf | 40 ++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 addons/common/functions/fnc_addSetting.sqf diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 1b724625ab..a967c5f222 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -11,6 +11,7 @@ PREP(addCustomEventHandler); PREP(addLineToDebugDraw); PREP(addMapMarkerCreatedEventHandler); PREP(addScrollWheelEventHandler); +PREP(addSetting); PREP(adminKick); PREP(ambientBrightness); PREP(applyForceWalkStatus); diff --git a/addons/common/functions/fnc_addSetting.sqf b/addons/common/functions/fnc_addSetting.sqf new file mode 100644 index 0000000000..866b7fb35b --- /dev/null +++ b/addons/common/functions/fnc_addSetting.sqf @@ -0,0 +1,40 @@ +/* + * Author: CAA-Picard + * Adds a new setting at runtime, with all it's metadata. + * If has only local effects. + * + * Arguments: + * 0: _name (String) + * 1: _typeName (String) + * 2: _isClientSetable (Bool) + * 3: _localizedName (String) + * 4: _localizedDescription (String) + * 5: _possibleValues (Array) + * 6: _isForced (Bool) + * 7: _defaultValue (Any) + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +EXPLODE_8_PVT(_this,_name,_typeName,_isClientSetable,_localizedName,_localizedDescription,_possibleValues,_isForced,_value); + +_settingData = [_name] call FUNC(getSettingData); + +// Exit if the setting already exists +if (count _settingData > 0) exitWith {}; + +// Update the variable +TRACE_2("Setting added",_name,_value); + +// Init the variable +missionNamespace setVariable [_name, _value]; + +// Add the setting data +GVAR(settings) pushBack _this; + +// Raise event locally +["SettingChanged", [_name, _value]] call FUNC(localEvent); From 66045b8d5198fe0d9eb854bfeab68802c0fa6f38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 02:51:41 -0300 Subject: [PATCH 064/211] ACE_Settings: setSettings tab to space, casting --- addons/common/functions/fnc_setSetting.sqf | 26 +++++++++++++++------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/addons/common/functions/fnc_setSetting.sqf b/addons/common/functions/fnc_setSetting.sqf index 8c9e6853a9..ec83cd8c31 100644 --- a/addons/common/functions/fnc_setSetting.sqf +++ b/addons/common/functions/fnc_setSetting.sqf @@ -35,8 +35,18 @@ if (count _settingData == 0) exitWith {}; // Exit if the setting is already forced if (_settingData select 6) exitWith {}; -// Exit if the type is not right -if ((typeName _value) != typeName (missionNamespace getVariable _name)) exitWith {}; +// If the type is not equal, try to cast it +if ((typeName _value) != (_settingData select 1)) then { + _failed = True; + if ((_settingData select 1) == "BOOL" and (typeName _value) == "SCALAR") exitWith { + _value = _value > 0; + _failed = false; + }; + if ((_settingData select 1) == "COLOR" and (typeName _value) == "ARRAY") exitWith { + _failed = false; + }; +}; +if (_failed) exitWith {}; // Force it if it was required _settingData set [6, _force]; @@ -49,12 +59,12 @@ TRACE_2("Variable Updated",_name,_value); missionNamespace setVariable [_name, _value]; if (isServer && {count _this > 3} && {_this select 3}) then { - // Publicize the new value - publicVariable _name; + // Publicize the new value + publicVariable _name; - // Raise event globally, this publicizes eventual changes in _force status so clients can update it locally - ["SettingChanged", [_name, _value, _force]] call FUNC(globalEvent); + // Raise event globally, this publicizes eventual changes in _force status so clients can update it locally + ["SettingChanged", [_name, _value, _force]] call FUNC(globalEvent); } else { - // Raise event locally - ["SettingChanged", [_name, _value, _force]] call FUNC(localEvent); + // Raise event locally + ["SettingChanged", [_name, _value, _force]] call FUNC(localEvent); }; From 92d21af8c602348e397816d292d8daa5311bda5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 02:52:07 -0300 Subject: [PATCH 065/211] ACE_Settings: function for updating settings from modules --- addons/common/XEH_preInit.sqf | 3 +- .../fnc_readBooleanParameterFromModule.sqf | 28 --------------- .../fnc_readNumericParameterFromModule.sqf | 34 ------------------- .../functions/fnc_readSettingFromModule.sqf | 27 +++++++++++++++ 4 files changed, 28 insertions(+), 64 deletions(-) delete mode 100644 addons/common/functions/fnc_readBooleanParameterFromModule.sqf delete mode 100644 addons/common/functions/fnc_readNumericParameterFromModule.sqf create mode 100644 addons/common/functions/fnc_readSettingFromModule.sqf diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index a967c5f222..b2f5ef209d 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -100,8 +100,7 @@ PREP(player); PREP(playerSide); PREP(progressBar); PREP(queueAnimation); -PREP(readBooleanParameterFromModule); -PREP(readNumericParameterFromModule); +PREP(readSettingFromModule); PREP(removeActionEventHandler); PREP(removeActionMenuEventHandler); PREP(removeCameraEventHandler); diff --git a/addons/common/functions/fnc_readBooleanParameterFromModule.sqf b/addons/common/functions/fnc_readBooleanParameterFromModule.sqf deleted file mode 100644 index 9ee2faa001..0000000000 --- a/addons/common/functions/fnc_readBooleanParameterFromModule.sqf +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Author: CAA-Picard - * - * Reads a boolean value from a module, sets de ACE_Parameter. Logs if parameters are missing in the module. - * - * Arguments: - * 0: Module (Object) - * 1: ACE_Parameter name (string) - * 2: Module parameter name (string) - * - * Return Value: - * None - */ -#include "script_component.hpp" - - private ["_logic", "_parameterName", "_moduleParameterName"]; - -_logic = _this select 0; -_parameterName = _this select 1; -_moduleParameterName = _this select 2; - -// Check if the parameter is defined in the module -if (isNil {_logic getVariable _moduleParameterName}) exitWith { - diag_log text format["[ACE]: Warning in %1 module: %2 parameter is missing. Probably an obsolete version of the module is used in the mission.", typeOf _logic, _moduleParameterName]; -}; - -// Set the parameter -[_parameterName , if (_logic getVariable _moduleParameterName) then {1} else {0}] call FUNC(setParameter); diff --git a/addons/common/functions/fnc_readNumericParameterFromModule.sqf b/addons/common/functions/fnc_readNumericParameterFromModule.sqf deleted file mode 100644 index a9c35f5b46..0000000000 --- a/addons/common/functions/fnc_readNumericParameterFromModule.sqf +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Author: CAA-Picard - * - * Reads a numeric value from a module, sets de ACE_Parameter. Logs if parameters are missing in the module. - * - * Arguments: - * 0: Module (Object) - * 1: ACE_Parameter name (string) - * 2: Module parameter name (string) - * - * Return Value: - * None - */ -#include "script_component.hpp" - - private ["_logic", "_parameterName", "_moduleParameterName", "_value"]; - -_logic = _this select 0; -_parameterName = _this select 1; -_moduleParameterName = _this select 2; - -// Check if the parameter is defined in the module -if (isNil {_logic getVariable _moduleParameterName}) exitWith { - diag_log text format["[ACE]: Warning in %1 module: %2 parameter is missing. Probably an obsolete version of the module is used in the mission.", typeOf _logic, _moduleParameterName] -}; - -// Check if the value is defined as string for backward compatibility -_value = _logic getVariable _moduleParameterName; -if (typeName _value == "STRING") then { - _value = parseNumber _value; -}; - -// Set the parameter -[_parameterName, _value] call FUNC(setParameter); diff --git a/addons/common/functions/fnc_readSettingFromModule.sqf b/addons/common/functions/fnc_readSettingFromModule.sqf new file mode 100644 index 0000000000..0f3ab447b1 --- /dev/null +++ b/addons/common/functions/fnc_readSettingFromModule.sqf @@ -0,0 +1,27 @@ +/* + * Author: CAA-Picard + * + * Reads a setting value from a module, set it and force it. Logs if the setting is missing from the module. + * Must be called on the server, effect is global. + * + * Arguments: + * 0: Module (Object) + * 1: ACE_Parameter name (string) + * 2: Module parameter name (string) + * + * Return Value: + * None + */ +#include "script_component.hpp" + +if !(isServer) exitWith {}; + +EXPLODE_3_PVT(_this,_logic,_settingName,_moduleVariable); + +// Check if the parameter is defined in the module +if (isNil {_logic getVariable _moduleVariable}) exitWith { + diag_log text format["[ACE]: Warning in %1 module: %2 setting is missing. Probably an obsolete version of the module is used in the mission.", typeOf _logic, _moduleVariable]; +}; + +// Set the setting globally and force it +[_settingName, _logic getVariable _moduleVariable, true, true] call FUNC(setSetting); From 74d0ae95ff45c6ac672390df26448e455348bb2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 02:53:02 -0300 Subject: [PATCH 066/211] Change ACE_Settings from modules --- addons/explosives/functions/fnc_module.sqf | 4 ++-- .../functions/fnc_moduleInteraction.sqf | 2 +- .../functions/fnc_blueForceTrackingModule.sqf | 4 ++-- .../functions/fnc_moduleBasicRevive.sqf | 6 ++--- .../nametags/functions/fnc_moduleNameTags.sqf | 6 ++--- addons/respawn/functions/fnc_module.sqf | 12 +++++----- addons/switchunits/functions/fnc_module.sqf | 22 +++++++++---------- .../vehiclelock/functions/fnc_moduleInit.sqf | 2 +- .../functions/fnc_initalizeModule.sqf | 2 +- 9 files changed, 30 insertions(+), 30 deletions(-) diff --git a/addons/explosives/functions/fnc_module.sqf b/addons/explosives/functions/fnc_module.sqf index 415b537266..4784b7684e 100644 --- a/addons/explosives/functions/fnc_module.sqf +++ b/addons/explosives/functions/fnc_module.sqf @@ -22,7 +22,7 @@ _activated = _this select 2; if !(_activated) exitWith {}; -[_logic, QGVAR(RequireSpecialist), "RequireSpecialist" ] call EFUNC(Common,readBooleanParameterFromModule); -[_logic, QGVAR(PunishNonSpecialists), "PunishNonSpecialists" ] call EFUNC(Common,readBooleanParameterFromModule); +[_logic, QGVAR(RequireSpecialist), "RequireSpecialist" ] call EFUNC(Common,readSettingFromModule); +[_logic, QGVAR(PunishNonSpecialists), "PunishNonSpecialists" ] call EFUNC(Common,readSettingFromModule); diag_log text "[ACE]: Explosive Module Initialized."; diff --git a/addons/interaction/functions/fnc_moduleInteraction.sqf b/addons/interaction/functions/fnc_moduleInteraction.sqf index 78fd6e2acc..37b7bacba5 100644 --- a/addons/interaction/functions/fnc_moduleInteraction.sqf +++ b/addons/interaction/functions/fnc_moduleInteraction.sqf @@ -16,6 +16,6 @@ _activated = _this select 2; if !(_activated) exitWith {}; -[_logic, QGVAR(EnableTeamManagement), "EnableTeamManagement"] call EFUNC(common,readBooleanParameterFromModule); +[_logic, QGVAR(EnableTeamManagement), "EnableTeamManagement"] call EFUNC(common,readSettingFromModule); diag_log text "[ACE]: Interaction Module Initialized."; diff --git a/addons/map/functions/fnc_blueForceTrackingModule.sqf b/addons/map/functions/fnc_blueForceTrackingModule.sqf index 3951473026..cecfd348d2 100644 --- a/addons/map/functions/fnc_blueForceTrackingModule.sqf +++ b/addons/map/functions/fnc_blueForceTrackingModule.sqf @@ -21,8 +21,8 @@ _activated = _this select 2; if !(_activated) exitWith {}; GVAR(BFT_Enabled) = true; -[_logic, QGVAR(BFT_Interval), "Interval"] call EFUNC(common,readNumericParameterFromModule); -[_logic, QGVAR(BFT_HideAiGroups), "HideAiGroups"] call EFUNC(common,readBooleanParameterFromModule); +[_logic, QGVAR(BFT_Interval), "Interval"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(BFT_HideAiGroups), "HideAiGroups"] call EFUNC(common,readSettingFromModule); diag_log text "[ACE]: Blue Force Tracking Module initialized."; TRACE_2("[ACE]: Blue Force Tracking Module initialized.",GVAR(BFT_Interval), GVAR(BFT_HideAiGroups)); diff --git a/addons/medical/functions/fnc_moduleBasicRevive.sqf b/addons/medical/functions/fnc_moduleBasicRevive.sqf index 6d8bfa2e6c..b02d873313 100644 --- a/addons/medical/functions/fnc_moduleBasicRevive.sqf +++ b/addons/medical/functions/fnc_moduleBasicRevive.sqf @@ -15,9 +15,9 @@ _logic = _this select 0; GVAR(Module) = true; -[_logic, QGVAR(ENABLE_REVIVE_F), "enableFor" ] call EFUNC(common,readNumericParameterFromModule); -[_logic, QGVAR(REVIVE_TIMER_MAX_F), "timer" ] call EFUNC(common,readNumericParameterFromModule); -[_logic, QGVAR(REVIVE_NUMBER_MAX_F), "amountOf" ] call EFUNC(common,readNumericParameterFromModule); +[_logic, QGVAR(ENABLE_REVIVE_F), "enableFor" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(REVIVE_TIMER_MAX_F), "timer" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(REVIVE_NUMBER_MAX_F), "amountOf" ] call EFUNC(common,readSettingFromModule); [ {(((_this select 0) getvariable[QGVAR(ENABLE_REVIVE_SETDEAD_F),0]) > 0)} diff --git a/addons/nametags/functions/fnc_moduleNameTags.sqf b/addons/nametags/functions/fnc_moduleNameTags.sqf index b701a2db8c..83087fc4ff 100644 --- a/addons/nametags/functions/fnc_moduleNameTags.sqf +++ b/addons/nametags/functions/fnc_moduleNameTags.sqf @@ -22,8 +22,8 @@ if !(_activated) exitWith {}; GVAR(Module) = true; -[_logic, QGVAR(PlayerNamesViewDistance), "PlayerNamesViewDistance" ] call EFUNC(common,readNumericParameterFromModule); -[_logic, QGVAR(ShowNamesForAI), "ShowNamesForAI" ] call EFUNC(common,readBooleanParameterFromModule); -[_logic, QGVAR(CrewInfoVisibility), "Visibility" ] call EFUNC(common,readNumericParameterFromModule); +[_logic, QGVAR(PlayerNamesViewDistance), "PlayerNamesViewDistance" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(ShowNamesForAI), "ShowNamesForAI" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(CrewInfoVisibility), "Visibility" ] call EFUNC(common,readSettingFromModule); diag_log text "[ACE]: NameTags Module Initialized."; diff --git a/addons/respawn/functions/fnc_module.sqf b/addons/respawn/functions/fnc_module.sqf index 0a996d0acc..5ba52fd40e 100644 --- a/addons/respawn/functions/fnc_module.sqf +++ b/addons/respawn/functions/fnc_module.sqf @@ -1,17 +1,17 @@ /* Name: ACE_Respawn_fnc_module - + Author(s): KoffeinFlummi, bux578, CAA-Picard, commy2 - + Description: initializes the respawn module - + Parameters: 0: OBJECT - logic 1: ARRAY - synced units 2: BOOLEAN - activated - + Returns: VOID */ @@ -27,8 +27,8 @@ if !(_activated) exitWith {}; GVAR(Module) = true; -[_logic, QGVAR(SavePreDeathGear), "SavePreDeathGear"] call EFUNC(common,readBooleanParameterFromModule); -[_logic, QGVAR(RemoveDeadBodiesDisconnected), "RemoveDeadBodiesDisconnected"] call EFUNC(common,readBooleanParameterFromModule); +[_logic, QGVAR(SavePreDeathGear), "SavePreDeathGear"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(RemoveDeadBodiesDisconnected), "RemoveDeadBodiesDisconnected"] call EFUNC(common,readSettingFromModule); if (isServer) then { if (GVAR(RemoveDeadBodiesDisconnected)) then { diff --git a/addons/switchunits/functions/fnc_module.sqf b/addons/switchunits/functions/fnc_module.sqf index c4f5c378c2..9a50e5c435 100644 --- a/addons/switchunits/functions/fnc_module.sqf +++ b/addons/switchunits/functions/fnc_module.sqf @@ -1,17 +1,17 @@ /* Name: ACE_SwitchUnits_fnc_module - + Author(s): bux578 - + Description: Initializes the SwitchUnits module - + Parameters: 0: OBJECT - module logic 1: ARRAY - list of affected units 2: BOOLEAN - isActivated - + Returns: BOOLEAN (Good practice to include one) */ @@ -29,12 +29,12 @@ GVAR(Module) = true; [QGVAR(EnableSwitchUnits), true] call EFUNC(common,setParameter); -[_logic, QGVAR(SwitchToWest), "SwitchToWest"] call EFUNC(common,readBooleanParameterFromModule); -[_logic, QGVAR(SwitchToEast), "SwitchToEast"] call EFUNC(common,readBooleanParameterFromModule); -[_logic, QGVAR(SwitchToIndependent), "SwitchToIndependent"] call EFUNC(common,readBooleanParameterFromModule); -[_logic, QGVAR(SwitchToCivilian), "SwitchToCivilian"] call EFUNC(common,readBooleanParameterFromModule); - -[_logic, QGVAR(EnableSafeZone), "EnableSafeZone"] call EFUNC(common,readBooleanParameterFromModule); -[_logic, QGVAR(SafeZoneRadius), "SafeZoneRadius"] call EFUNC(common,readNumericParameterFromModule); +[_logic, QGVAR(SwitchToWest), "SwitchToWest"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(SwitchToEast), "SwitchToEast"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(SwitchToIndependent), "SwitchToIndependent"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(SwitchToCivilian), "SwitchToCivilian"] call EFUNC(common,readSettingFromModule); + +[_logic, QGVAR(EnableSafeZone), "EnableSafeZone"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(SafeZoneRadius), "SafeZoneRadius"] call EFUNC(common,readSettingFromModule); diag_log text "[ACE]: SwitchUnits Module Initialized."; diff --git a/addons/vehiclelock/functions/fnc_moduleInit.sqf b/addons/vehiclelock/functions/fnc_moduleInit.sqf index b0ae230724..a344185ab0 100644 --- a/addons/vehiclelock/functions/fnc_moduleInit.sqf +++ b/addons/vehiclelock/functions/fnc_moduleInit.sqf @@ -29,7 +29,7 @@ _sideKeysAssignment = _logic getVariable["SideKeysAssignment", 0]; _setLockState = _logic getVariable["SetLockState", 0]; if (isServer) then { - [_logic, QGVAR(DefaultLockpickStrength), "LockpickStrength"] call EFUNC(common,readNumericParameterFromModule); + [_logic, QGVAR(DefaultLockpickStrength), "LockpickStrength"] call EFUNC(common,readSettingFromModule); }; //Run at mission start (anyone besides JIPs) diff --git a/addons/winddeflection/functions/fnc_initalizeModule.sqf b/addons/winddeflection/functions/fnc_initalizeModule.sqf index d0b9937a58..8bd2a2f1bc 100644 --- a/addons/winddeflection/functions/fnc_initalizeModule.sqf +++ b/addons/winddeflection/functions/fnc_initalizeModule.sqf @@ -15,5 +15,5 @@ if (!hasInterface) exitwith {}; // No need for this module on HC or dedicated se private ["_logic"]; _logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; if (!isNull _logic) then { - [_logic, QGVAR(EnableForAI), "forAI" ] call EFUNC(common,readBooleanParameterFromModule); + [_logic, QGVAR(EnableForAI), "forAI" ] call EFUNC(common,readSettingFromModule); }; \ No newline at end of file From 4156143ecfd5f5c8aa6f983838052a4ee3a76455 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 3 Feb 2015 00:42:34 -0600 Subject: [PATCH 067/211] Captives Progress --- addons/captives/CfgEventHandlers.hpp | 2 +- addons/captives/CfgVehicles.hpp | 46 +++++++++---------- addons/captives/XEH_preInit.sqf | 3 +- addons/captives/config.cpp | 3 ++ .../captives/functions/fnc_handleGetOut.sqf | 11 +++-- addons/captives/functions/fnc_loadCaptive.sqf | 6 +-- .../captives/functions/fnc_unloadCaptive.sqf | 10 ++-- .../captives/functions/script_component.hpp | 2 +- 8 files changed, 45 insertions(+), 38 deletions(-) diff --git a/addons/captives/CfgEventHandlers.hpp b/addons/captives/CfgEventHandlers.hpp index eb08f7e865..b8c182d1f6 100644 --- a/addons/captives/CfgEventHandlers.hpp +++ b/addons/captives/CfgEventHandlers.hpp @@ -23,7 +23,7 @@ class Extended_GetIn_EventHandlers { class Extended_GetOut_EventHandlers { class All { class GVAR(AutoDetachCaptive) { - getOut = "if (local (_this select 2) && {(_this select 2) getVariable ['ACE_isCaptive', false]}) then {_this call ACE_Captives_fnc_handleGetOut}"; + getOut = QUOTE(_this call FUNC(handleGetOut)); }; }; }; diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index 3036ccf196..8758788b2a 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -5,62 +5,62 @@ class CfgVehicles { class ACE_SetCaptive { displayName = "$STR_ACE_Captives_SetCaptive"; distance = 4; - condition = "'ACE_CableTie' in items _player && {alive _target} && {!(_target getVariable ['ACE_isCaptive', false])}"; - statement = "player removeItem 'ACE_CableTie'; [_target, true] call ACE_Captives_fnc_setCaptive"; + condition = QUOTE(('ACE_CableTie' in (items _player)) && {alive _target} && {!(_target getVariable ['ACE_isCaptive', false])}); + statement = QUOTE(_player removeItem 'ACE_CableTie'; [ARR_2(_target, true)] call FUNC(setCaptive);); showDisabled = 0; priority = 2.4; - icon = "\ACE_Captives\UI\handcuff_ca.paa"; + icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); hotkey = "C"; }; class ACE_ReleaseCaptive { displayName = "$STR_ACE_Captives_ReleaseCaptive"; distance = 4; - condition = "_target getVariable ['ACE_isCaptive', false] && {isNull (attachedTo _target)}"; - statement = "[_target, false] call ACE_Captives_fnc_setCaptive"; + condition = QUOTE(_target getVariable ['ACE_isCaptive', false] && {isNull (attachedTo _target)}); + statement = QUOTE([ARR_2(_target, false)] call FUNC(setCaptive)); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; priority = 2.4; - icon = "\ACE_Captives\UI\handcuff_ca.paa"; + icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); hotkey = "R"; }; class ACE_EscortCaptive { displayName = "$STR_ACE_Captives_EscortCaptive"; distance = 4; - condition = "_target getVariable ['ACE_isCaptive', false] && {isNull (attachedTo _target)} && {alive _target} && {!(_target getVariable ['ACE_isUnconscious', false])}"; - statement = "[_target, true] call ACE_Captives_fnc_escortCaptive"; + condition = QUOTE((_target getVariable ['ACE_isCaptive', false]) && {isNull (attachedTo _target)} && {alive _target} && {!(_target getVariable ['ACE_isUnconscious', false])}); + statement = QUOTE([ARR_2(_target, true)] call FUNC(escortCaptive)); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; - icon = "\ACE_Captives\UI\captive_ca.paa"; + icon = QUOTE(PATHTOF(UI\captive_ca.paa)); priority = 2.3; hotkey = "E"; }; class ACE_StopEscorting { displayName = "$STR_ACE_Captives_StopEscorting"; distance = 4; - condition = "_target getVariable ['ACE_isCaptive', false] && {_target in attachedObjects _player}"; - statement = "[_target, false] call ACE_Captives_fnc_escortCaptive"; + condition = QUOTE((_target getVariable ['ACE_isCaptive', false]) && {_target in (attachedObjects _player)}); + statement = QUOTE([ARR_2(_target, false)] call FUNC(escortCaptive)); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; - icon = "\ACE_Captives\UI\captive_ca.paa"; + icon = QUOTE(PATHTOF(UI\captive_ca.paa)); priority = 2.3; hotkey = "E"; }; class ACE_LoadCaptive { displayName = "$STR_ACE_Captives_LoadCaptive"; distance = 4; - condition = "[_player, _target, objNull] call ACE_Captives_fnc_canLoadCaptive"; - statement = "[_player, _target, objNull] call ACE_Captives_fnc_loadCaptive"; + condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive)); + statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(loadCaptive)); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; - icon = "\ACE_Captives\UI\captive_ca.paa"; + icon = QUOTE(PATHTOF(UI\captive_ca.paa)); priority = 2.2; hotkey = "L"; }; class ACE_FriskPerson { displayName = "$STR_ACE_Captives_FriskPerson"; distance = 2; - condition = "[_player, _target] call ACE_Captives_fnc_canFriskPerson"; - statement = "[_player, _target] call ACE_Captives_fnc_openFriskMenu"; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canFriskPerson)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(openFriskMenu)); showDisabled = 0; //icon = ""; //@todo priority = 3; @@ -71,8 +71,8 @@ class CfgVehicles { class ACE_SelfActions { class ACE_StopEscortingSelf { displayName = "$STR_ACE_Captives_StopEscorting"; - condition = "(_player getVariable ['ACE_escortedUnit', objNull]) getVariable ['ACE_isCaptive', false] && {(_player getVariable ['ACE_escortedUnit', objNull]) in attachedObjects _player}"; - statement = "[_player getVariable ['ACE_escortedUnit', objNull], false] call ACE_Captives_fnc_escortCaptive;"; + condition = QUOTE(((_player getVariable ['ACE_escortedUnit', objNull]) getVariable ['ACE_isCaptive', false]) && {(_player getVariable ['ACE_escortedUnit', objNull]) in attachedObjects _player}); + statement = QUOTE([ARR_2((_player getVariable ['ACE_escortedUnit', objNull]), false)] call FUNC(_escortCaptive);); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; priority = 2.3; @@ -95,8 +95,8 @@ class CfgVehicles { class ACE_LoadCaptive { \ displayName = "$STR_ACE_Captives_LoadCaptive"; \ distance = 4; \ - condition = "[_player, objNull, _target] call ACE_Captives_fnc_canLoadCaptive"; \ - statement = "[_player, objNull, _target] call ACE_Captives_fnc_loadCaptive"; \ + condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \ + statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(loadCaptive)); \ exceptions[] = {"ACE_Interaction_isNotEscorting"}; \ showDisabled = 0; \ priority = 1.2; \ @@ -105,8 +105,8 @@ class CfgVehicles { class ACE_UnloadCaptive { \ displayName = "$STR_ACE_Captives_UnloadCaptive"; \ distance = 4; \ - condition = "[_player, _target] call ACE_Captives_fnc_canUnloadCaptive"; \ - statement = "[_player, _target] call ACE_Captives_fnc_unloadCaptive"; \ + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive)); \ + statement = QUOTE([ARR_2(_player, _target)] call FUNC(unloadCaptive)); \ showDisabled = 0; \ priority = 1.2; \ hotkey = "C"; \ diff --git a/addons/captives/XEH_preInit.sqf b/addons/captives/XEH_preInit.sqf index 5e6f35bc48..7f83ce4fad 100644 --- a/addons/captives/XEH_preInit.sqf +++ b/addons/captives/XEH_preInit.sqf @@ -1,8 +1,7 @@ #include "script_component.hpp" ADDON = false; - -PREP(empty); + PREP(canFriskPerson); PREP(canLoadCaptive); PREP(canUnloadCaptive); diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index 7aaa310183..7e5c3382bb 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -13,6 +13,9 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" +#include "CfgMoves.hpp" +#include "CfgVehicles.hpp" +#include "CfgWeapons.hpp" class ACE_Core_canInteractConditions { diff --git a/addons/captives/functions/fnc_handleGetOut.sqf b/addons/captives/functions/fnc_handleGetOut.sqf index 7cc1fd6f5c..f734fa0177 100644 --- a/addons/captives/functions/fnc_handleGetOut.sqf +++ b/addons/captives/functions/fnc_handleGetOut.sqf @@ -1,9 +1,10 @@ /* * Author: commy2 - * X + * Handles when a captive unit gets out of a vehicle. * * Arguments: * 0: _vehicle + * 2: dunno * 1: _unit * * Return Value: @@ -16,14 +17,18 @@ */ #include "script_component.hpp" -PARAMS_2(_vehicle,_unit); +PARAMS_3(_vehicle,_dontcare,_unit); + +if (!local _unit) exitWith {}; +if (!(_unit getVariable ["ACE_isCaptive", false])) exitWith {}; private ["_cargoIndex"]; _cargoIndex = _unit getVariable ["ACE_Captives_CargoIndex", -1]; +//If captive was not "unloaded", then move them back into the vehicle. if (_cargoIndex != -1) exitWith { _unit moveInCargo [_vehicle, _cargoIndex]; }; -[_unit, 'ACE_AmovPercMstpScapWnonDnon', 2] call EFUNC(common,doAnimation); +[_unit, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); diff --git a/addons/captives/functions/fnc_loadCaptive.sqf b/addons/captives/functions/fnc_loadCaptive.sqf index 255581a593..f2b1a9a0c1 100644 --- a/addons/captives/functions/fnc_loadCaptive.sqf +++ b/addons/captives/functions/fnc_loadCaptive.sqf @@ -20,9 +20,9 @@ PARAMS_1(_unit,_target,_vehicle); if (isNull _target) then { - _objects = attachedObjects _unit; - _objects = [_objects, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); - _target = _objects select 0; + // _objects = attachedObjects _unit; + // _objects = [_objects, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); + // _target = _objects select 0; }; if (isNull _vehicle) then { diff --git a/addons/captives/functions/fnc_unloadCaptive.sqf b/addons/captives/functions/fnc_unloadCaptive.sqf index 01e1d48e74..e6eb4b24a5 100644 --- a/addons/captives/functions/fnc_unloadCaptive.sqf +++ b/addons/captives/functions/fnc_unloadCaptive.sqf @@ -25,11 +25,11 @@ _cargo = crew _vehicle; // Can also unload from driver, gunner, commander, turr _cargo = [_cargo, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); if (count _cargo > 0) then { - _target = _cargo select 0; + _target = _cargo select 0; - _target setVariable ["ACE_Captives_CargoIndex", -1, true]; + _target setVariable ["ACE_Captives_CargoIndex", -1, true]; - moveOut _target; - [_target, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); - [_target, "{unassignVehicle _this}", _target] call ACE_Core_fnc_execRemoteFnc; + moveOut _target; + [_target, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); + [_target, "{unassignVehicle _this}", _target] call ACE_Core_fnc_execRemoteFnc; }; diff --git a/addons/captives/functions/script_component.hpp b/addons/captives/functions/script_component.hpp index 3cc9111162..e91d5c843b 100644 --- a/addons/captives/functions/script_component.hpp +++ b/addons/captives/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\blank\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\captives\script_component.hpp" \ No newline at end of file From c08494cc431d70053bdd069e1f3c2709ab604861 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Tue, 3 Feb 2015 11:50:11 +0200 Subject: [PATCH 068/211] Made use of time instead of diag_ticktime, to take care of time acceleration and so forth. --- addons/parachute/functions/fnc_doLanding.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/parachute/functions/fnc_doLanding.sqf b/addons/parachute/functions/fnc_doLanding.sqf index e8a6efb3f5..134ab8a3ea 100644 --- a/addons/parachute/functions/fnc_doLanding.sqf +++ b/addons/parachute/functions/fnc_doLanding.sqf @@ -19,8 +19,8 @@ _unit = _this select 0; GVAR(PFH) = false; [_unit, "AmovPercMevaSrasWrflDf_AmovPknlMstpSrasWrflDnon", 2] call EFUNC(common,doAnimation); [{ - if (diag_tickTime >= ((_this select 0) select 0) + 1) then { + if (time >= ((_this select 0) select 0) + 1) then { ((_this select 0) select 1) playActionNow "Crouch"; [(_this select 1)] call CALLSTACK(cba_fnc_removePerFrameHandler); }; -}, 1, [diag_tickTime,_unit]] call CALLSTACK(cba_fnc_addPerFrameHandler); +}, 1, [time,_unit]] call CALLSTACK(cba_fnc_addPerFrameHandler); From b4d1d6b23044994009cf3e587fec9bb4a838fdc6 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Tue, 3 Feb 2015 11:50:33 +0200 Subject: [PATCH 069/211] Removed the PFH when the player vehicle is no longer a parachute. --- addons/parachute/functions/fnc_onEachFrame.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/parachute/functions/fnc_onEachFrame.sqf b/addons/parachute/functions/fnc_onEachFrame.sqf index 64c802f9b6..be9f0e000c 100644 --- a/addons/parachute/functions/fnc_onEachFrame.sqf +++ b/addons/parachute/functions/fnc_onEachFrame.sqf @@ -18,7 +18,7 @@ private "_player"; _player = ACE_player; if (!GVAR(PFH)) exitWith {[(_this select 1)] call CALLSTACK(cba_fnc_removePerFrameHandler);}; if (isNull _player) exitWith {[(_this select 1)] call CALLSTACK(cba_fnc_removePerFrameHandler);GVAR(PFH) = false;}; -if !((vehicle _player) isKindOf "ParachuteBase") exitWith {}; +if !((vehicle _player) isKindOf "ParachuteBase") exitWith {[(_this select 1)] call CALLSTACK(cba_fnc_removePerFrameHandler);GVAR(PFH) = false;}; if (isTouchingGround _player) exitWith {[(_this select 1)] call CALLSTACK(cba_fnc_removePerFrameHandler);GVAR(PFH) = false;}; private ["_pos"]; From 9c20706c83e637e677ab495387474a7a9a615096 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Tue, 3 Feb 2015 11:51:16 +0200 Subject: [PATCH 070/211] Added a event handler for player vehicle changing. As well as covered the canInteract in key handler. --- addons/parachute/XEH_postInit.sqf | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/parachute/XEH_postInit.sqf b/addons/parachute/XEH_postInit.sqf index 4ce50e8631..a15e125edd 100644 --- a/addons/parachute/XEH_postInit.sqf +++ b/addons/parachute/XEH_postInit.sqf @@ -18,6 +18,9 @@ if (!hasInterface) exitWith {}; ["ACE3", localize "STR_ACE_Parachute_showAltimeter", { + // Conditions: canInteract + _exceptions = [QEGVAR(interaction,isNotEscorting)]; + if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; if (!('ACE_Altimeter' in assignedItems ace_player)) exitWith {false}; if (!(missionNamespace getVariable [QGVAR(AltimeterActive), false])) then { [ace_player] call FUNC(showAltimeter); @@ -28,13 +31,12 @@ if (!hasInterface) exitWith {}; }, [24, false, false, false], false, "keydown"] call CALLSTACK(cba_fnc_registerKeybind); GVAR(PFH) = false; - -[{ +["playerVehicleChanged",{ if (!GVAR(PFH) && {(vehicle ACE_player) isKindOf "ParachuteBase"}) then { GVAR(PFH) = true; [FUNC(onEachFrame), 0.1, []] call CALLSTACK(cba_fnc_addPerFrameHandler); }; -}, 1, []] call CALLSTACK(cba_fnc_addPerFrameHandler); +}] call EFUNC(common,addEventHandler); // don't show speed and height when in expert mode ["Parachute", {if (!cadetMode) then {_dlg = _this select 0; {(_dlg displayCtrl _x) ctrlShow false} forEach [121, 122, 1004, 1005, 1006, 1014];};}] call EFUNC(common,addInfoDisplayEventHandler); //@todo addEventHandler infoDisplayChanged with select 1 == "Parachute" From 4185299efdc22639d287500bb856192da57d6061 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 3 Feb 2015 19:38:49 +0100 Subject: [PATCH 071/211] rename agm burst mode to ace burst mode (ai) --- addons/ai/CfgWeapons.hpp | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/addons/ai/CfgWeapons.hpp b/addons/ai/CfgWeapons.hpp index 55b2ac55ea..22e8f703fc 100644 --- a/addons/ai/CfgWeapons.hpp +++ b/addons/ai/CfgWeapons.hpp @@ -28,7 +28,7 @@ class CfgWeapons { class arifle_MX_Base_F: Rifle_Base_F { aiDispersionCoefY = 18.0; aiDispersionCoefX = 12.0; - modes[] += {"AGM_Burst_far"}; + modes[] += {"ACE_Burst_far"}; class Single: Mode_SemiAuto { minRange = 120; // 2; @@ -43,7 +43,7 @@ class CfgWeapons { burst = "3 + round random 5"; //3; }; - class AGM_Burst_far: fullauto_medium { + class ACE_Burst_far: fullauto_medium { aiRateOfFire = 2.0; aiRateOfFireDistance = 500; minRange = 400; @@ -86,7 +86,7 @@ class CfgWeapons { burst = "3 + round random 5"; //3; }; - class AGM_Burst_far: fullauto_medium { + class ACE_Burst_far: fullauto_medium { aiRateOfFire = 2.0; aiRateOfFireDistance = 400; minRange = 300; @@ -146,8 +146,8 @@ class CfgWeapons { aiDispersionCoefY = 24.0; aiDispersionCoefX = 21.0; // Shit is still broken - //modes[] += {"AGM_Burst_far"}; - modes[] = {"Single","manual","close","short","medium","far_optic1","far_optic2","AGM_Burst_far"}; + //modes[] += {"ACE_Burst_far"}; + modes[] = {"Single","manual","close","short","medium","far_optic1","far_optic2","ACE_Burst_far"}; class Single: Mode_SemiAuto { minRange = 120; // 2; @@ -155,7 +155,7 @@ class CfgWeapons { class close; class medium; - class AGM_Burst_far: medium { + class ACE_Burst_far: medium { aiRateOfFire = 6.0; aiRateOfFireDistance = 900; minRange = 500; @@ -182,7 +182,7 @@ class CfgWeapons { class arifle_Katiba_Base_F: Rifle_Base_F { aiDispersionCoefY = 18.0; aiDispersionCoefX = 12.0; - modes[] += {"AGM_Burst_far"}; + modes[] += {"ACE_Burst_far"}; class Single: Mode_SemiAuto { minRange = 120; // 2; @@ -197,7 +197,7 @@ class CfgWeapons { burst = "3 + round random 5"; //3; }; - class AGM_Burst_far: fullauto_medium { + class ACE_Burst_far: fullauto_medium { aiRateOfFire = 2.0; aiRateOfFireDistance = 500; minRange = 400; @@ -242,7 +242,7 @@ class CfgWeapons { burst = "3 + round random 5"; //3; }; - class AGM_Burst_far: fullauto_medium { + class ACE_Burst_far: fullauto_medium { aiRateOfFire = 2.0; aiRateOfFireDistance = 400; minRange = 300; @@ -270,7 +270,7 @@ class CfgWeapons { class mk20_base_F: Rifle_Base_F { aiDispersionCoefY = 18.0; aiDispersionCoefX = 12.0; - modes[] += {"AGM_Burst_far"}; + modes[] += {"ACE_Burst_far"}; class Single: Mode_SemiAuto { minRange = 120; // 2; @@ -289,7 +289,7 @@ class CfgWeapons { burst = "3 + round random 5"; // 3; }; - class AGM_Burst_far: fullauto_medium { + class ACE_Burst_far: fullauto_medium { aiRateOfFire = 2.0; aiRateOfFireDistance = 500; minRange = 400; @@ -343,7 +343,7 @@ class CfgWeapons { burst = "3 + round random 5"; //3; }; - class AGM_Burst_far: fullauto_medium { + class ACE_Burst_far: fullauto_medium { aiRateOfFire = 2.0; aiRateOfFireDistance = 400; minRange = 300; @@ -360,7 +360,7 @@ class CfgWeapons { class Tavor_base_F: Rifle_Base_F { aiDispersionCoefY = 18.0; aiDispersionCoefX = 12.0; - modes[] += {"AGM_Burst_far"}; + modes[] += {"ACE_Burst_far"}; class Single: Mode_SemiAuto { minRange = 120; //2; @@ -380,7 +380,7 @@ class CfgWeapons { burst = "3 + round random 5"; // 3; }; - class AGM_Burst_far: fullauto_medium { + class ACE_Burst_far: fullauto_medium { aiRateOfFire = 2.0; aiRateOfFireDistance = 400; minRange = 300; @@ -428,7 +428,7 @@ class CfgWeapons { burst = "3 + round random 5"; // 3; }; - class AGM_Burst_far: fullauto_medium { + class ACE_Burst_far: fullauto_medium { aiRateOfFire = 2.0; aiRateOfFireDistance = 400; minRange = 300; @@ -517,10 +517,10 @@ class CfgWeapons { class LMG_Mk200_F: Rifle_Long_Base_F { aiDispersionCoefY = 24.0; aiDispersionCoefX = 21.0; - modes[] += {"AGM_Burst_far"}; + modes[] += {"ACE_Burst_far"}; class medium; - class AGM_Burst_far: medium { + class ACE_Burst_far: medium { aiRateOfFire = 6.0; aiRateOfFireDistance = 900; minRange = 500; @@ -546,7 +546,7 @@ class CfgWeapons { class LMG_Zafir_F: Rifle_Long_Base_F { aiDispersionCoefY = 23.0; aiDispersionCoefX = 19.0; - modes[] += {"AGM_Burst_far"}; + modes[] += {"ACE_Burst_far"}; class Single: Mode_SemiAuto { minRange = 120; // 2; @@ -554,7 +554,7 @@ class CfgWeapons { class close; class medium; - class AGM_Burst_far: medium { + class ACE_Burst_far: medium { aiRateOfFire = 6.0; aiRateOfFireDistance = 900; minRange = 500; From b119d5246b502746f63ca782b19feab29439c8cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 15:46:33 -0300 Subject: [PATCH 072/211] fix in setsettings --- addons/common/functions/fnc_setSetting.sqf | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/addons/common/functions/fnc_setSetting.sqf b/addons/common/functions/fnc_setSetting.sqf index ec83cd8c31..5b6f7945b5 100644 --- a/addons/common/functions/fnc_setSetting.sqf +++ b/addons/common/functions/fnc_setSetting.sqf @@ -36,13 +36,22 @@ if (count _settingData == 0) exitWith {}; if (_settingData select 6) exitWith {}; // If the type is not equal, try to cast it +_failed = false; if ((typeName _value) != (_settingData select 1)) then { - _failed = True; - if ((_settingData select 1) == "BOOL" and (typeName _value) == "SCALAR") exitWith { - _value = _value > 0; - _failed = false; + _failed = true; + diag_log (typeName _value); + if ((_settingData select 1) == "BOOL" and (typeName _value) == "SCALAR") then { + // If value is not 0 or 1 consider it invalid and don't set anything + if (_value == 0) then { + _value = false; + _failed = false; + }; + if (_value == 1) then { + _value = true; + _failed = false; + }; }; - if ((_settingData select 1) == "COLOR" and (typeName _value) == "ARRAY") exitWith { + if ((_settingData select 1) == "COLOR" and (typeName _value) == "ARRAY") then { _failed = false; }; }; From 146e87f02e0db3d8993c41b02f05dc204b418cf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 15:47:17 -0300 Subject: [PATCH 073/211] nametags: slightly changed module options to use the new ACE_Settings --- addons/nametags/CfgVehicles.hpp | 50 ++++++++++--------- addons/nametags/config.cpp | 18 +++---- addons/nametags/functions/fnc_canShow.sqf | 15 ++---- .../nametags/functions/fnc_moduleNameTags.sqf | 2 +- addons/nametags/stringtable.xml | 7 +-- 5 files changed, 44 insertions(+), 48 deletions(-) diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index 444622f0ed..e3c4227834 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -15,40 +15,44 @@ class CfgVehicles { typeName = "NUMBER"; defaultValue = 5; }; - class ShowNamesForAI { + class showNamesForAI { displayName = "Show name tags for AI?"; - description = "Show the name and rank tags for friendly AI units? Default: No"; - typeName = "BOOL"; - class values { - class Yes { - name = "Yes"; - value = 1; - }; - class No { - default = 1; - name = "No"; - value = 0; - }; - }; - }; - class Visibility { - displayName = "Visibility of crew info"; - description = "Forces visibility of vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force"; - typeName = "INT"; + description = "Show the name and rank tags for friendly AI units? Default: Do not force"; + typeName = "NUMBER"; class values { class DoNotForce { default = 1; name = "Do Not Force"; + value = -1; + }; + class ForceHide { + name = "Force Hide"; + value = 0; + }; + class ForceShow { + name = "Force show"; + value = 1; + }; + }; + }; + class showVehicleCrewInfo { + displayName = "Show crew info?"; + description = "Show vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force"; + typeName = "NUMBER"; + class values { + class DoNotForce { + default = 1; + name = "Do Not Force"; + value = -1; + }; + class ForceHide { + name = "Force Hide"; value = 0; }; class ForceShow { name = "Force Show"; value = 1; }; - class ForceHide { - name = "Force Hide"; - value = -1; - }; }; }; }; diff --git a/addons/nametags/config.cpp b/addons/nametags/config.cpp index 58440192c0..aa55dd2aad 100644 --- a/addons/nametags/config.cpp +++ b/addons/nametags/config.cpp @@ -33,7 +33,13 @@ class ACE_Settings { value = 1; typeName = "BOOL"; isClientSetable = 1; - displayName = "$STR_ACE_CrewInfo_ShowVehicleCrewInfo"; + displayName = "$STR_ACE_NameTags_ShowVehicleCrewInfo"; + }; + class GVAR(showNamesForAI) { + value = 0; + typeName = "BOOL"; + isClientSetable = 1; + displayName = "$STR_ACE_NameTags_ShowNamesForAI"; }; class GVAR(PlayerNamesViewDistance) { @@ -46,16 +52,6 @@ class ACE_Settings { typeName = "SCALAR"; isClientSetable = 0; }; - class GVAR(CrewInfoVisibility) { - value = 0; - typeName = "BOOL"; - isClientSetable = 0; - }; - class GVAR(ShowNamesForAI) { - value = 0; - typeName = "BOOL"; - isClientSetable = 0; - }; }; #include diff --git a/addons/nametags/functions/fnc_canShow.sqf b/addons/nametags/functions/fnc_canShow.sqf index 8b61352def..0e187fee0f 100644 --- a/addons/nametags/functions/fnc_canShow.sqf +++ b/addons/nametags/functions/fnc_canShow.sqf @@ -1,12 +1,12 @@ /* Author: aeroson - + Description: Might be called several times a second - - Parameters: + + Parameters: None - + Returns: true if CrewInfo can be shown, false otherwise */ @@ -17,11 +17,6 @@ private["_player"]; _player = ACE_player; -// AGM_NameTags_ShowVehicleCrewInfo: -1 force NO, 0 doesnt care, 1 force YES - vehicle _player != _player && -{ - (GVAR(CrewInfoVisibility) == 1) || - (GVAR(CrewInfoVisibility) != -1 && GVAR(showVehicleCrewInfo)) -} && +{GVAR(ShowCrewInfo)} && {!(vehicle _player isKindOf "ParachuteBase")}; diff --git a/addons/nametags/functions/fnc_moduleNameTags.sqf b/addons/nametags/functions/fnc_moduleNameTags.sqf index 83087fc4ff..24b30e5d6b 100644 --- a/addons/nametags/functions/fnc_moduleNameTags.sqf +++ b/addons/nametags/functions/fnc_moduleNameTags.sqf @@ -24,6 +24,6 @@ GVAR(Module) = true; [_logic, QGVAR(PlayerNamesViewDistance), "PlayerNamesViewDistance" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(ShowNamesForAI), "ShowNamesForAI" ] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(CrewInfoVisibility), "Visibility" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(showVehicleCrewInfo), "showVehicleCrewInfo" ] call EFUNC(common,readSettingFromModule); diag_log text "[ACE]: NameTags Module Initialized."; diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 7d085b9d44..9cd99adaef 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -58,9 +58,7 @@ Játékosok rendfokozatának mutatása (névcímke szükséges) Показать звания игроков (требует имен игроков) - - - + Show vehicle crew info Zeige Fahrzeugbesatzung Mostrar tripulantes @@ -68,5 +66,8 @@ Zobrazit info o posádce vozidla Показать экипаж + + Show name tags for AI units + From 903c41308c5023662036b7181117091cd48dc7db Mon Sep 17 00:00:00 2001 From: bux578 Date: Tue, 3 Feb 2015 20:33:15 +0100 Subject: [PATCH 074/211] works in singleplayer --- addons/switchunits/XEH_clientInit.sqf | 2 -- addons/switchunits/functions/fnc_initPlayer.sqf | 3 ++- addons/switchunits/functions/fnc_markAiOnMap.sqf | 3 ++- addons/switchunits/functions/fnc_switchUnit.sqf | 5 +++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/addons/switchunits/XEH_clientInit.sqf b/addons/switchunits/XEH_clientInit.sqf index cf6873c14b..dbc239d119 100644 --- a/addons/switchunits/XEH_clientInit.sqf +++ b/addons/switchunits/XEH_clientInit.sqf @@ -25,8 +25,6 @@ if(GVAR(SwitchToEast)) then {_sides pushBack east}; if(GVAR(SwitchToIndependent)) then {_sides pushBack independent}; if(GVAR(SwitchToCivilian)) then {_sides pushBack civilian}; -hint "TEST"; - if (player getVariable ["ACE_CanSwitchUnits", false]) then { [player, _sides] call FUNC(initPlayer); }; diff --git a/addons/switchunits/functions/fnc_initPlayer.sqf b/addons/switchunits/functions/fnc_initPlayer.sqf index f904a460c2..c4e2d19747 100644 --- a/addons/switchunits/functions/fnc_initPlayer.sqf +++ b/addons/switchunits/functions/fnc_initPlayer.sqf @@ -30,7 +30,8 @@ if (vehicle _playerUnit == _playerUnit) then { _playerUnit allowDamage false; GVAR(OriginalUnit) = _playerUnit; - GVAR(OriginalName) = [_playerUnit] call EFUNC(common,getName); + //GVAR(OriginalName) = [_playerUnit] call EFUNC(common,getName); + GVAR(OriginalName) = name _playerUnit; GVAR(OriginalGroup) = group _playerUnit; // remove all starting gear of a player diff --git a/addons/switchunits/functions/fnc_markAiOnMap.sqf b/addons/switchunits/functions/fnc_markAiOnMap.sqf index c07199dc31..ce7b575398 100644 --- a/addons/switchunits/functions/fnc_markAiOnMap.sqf +++ b/addons/switchunits/functions/fnc_markAiOnMap.sqf @@ -27,6 +27,7 @@ DFUNC(pfhMarkAiOnMap) = { _args = _this select 0; _sides = _args select 0; + // delete markers { deleteMarkerLocal _x; @@ -65,4 +66,4 @@ DFUNC(pfhMarkAiOnMap) = { }; }; -[FUNC(pfhMarkAiOnMap), 1, _sidesToShow] call CBA_fnc_addPerFrameHandler; +[FUNC(pfhMarkAiOnMap), 1.5, [_sidesToShow]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/switchunits/functions/fnc_switchUnit.sqf b/addons/switchunits/functions/fnc_switchUnit.sqf index d5a4f39a4a..abd053ffae 100644 --- a/addons/switchunits/functions/fnc_switchUnit.sqf +++ b/addons/switchunits/functions/fnc_switchUnit.sqf @@ -52,7 +52,6 @@ if (_leave) exitWith { _oldUnit = player; - DFUNC(pfhSwitchUnit) = { private ["_args", "_unit", "_oldUnit", "_respawnEhId", "_oldOwner"]; @@ -61,6 +60,8 @@ DFUNC(pfhSwitchUnit) = { _unit = _args select 0; _oldUnit = _args select 1; + + if (local _unit) exitWith { _oldUnit setVariable [QGVAR(IsPlayerControlled), false, true]; @@ -94,4 +95,4 @@ DFUNC(pfhSwitchUnit) = { }; }; -[FUNC(pfhSwitchBack), 0.2, [_unit, _oldUnit]] call cba_fnc_addPerFrameHandler; +[FUNC(pfhSwitchUnit), 0.2, [_unit, _oldUnit]] call cba_fnc_addPerFrameHandler; From 5f44af2341442b8b0aa85574bf2ebf83042d5c43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 16:47:23 -0300 Subject: [PATCH 075/211] Missing prep --- addons/common/XEH_preInit.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index b2f5ef209d..90a774ddfe 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -87,6 +87,7 @@ PREP(isInBuilding); PREP(isPlayer); PREP(isTurnedOut); PREP(letterToCode); +PREP(loadSettingsFromProfile); PREP(loadSettingsOnServer); PREP(map); PREP(moduleCheckPBOs); From e57a135750f455638350ea0336505e258d4020fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 16:49:40 -0300 Subject: [PATCH 076/211] Missing prep --- addons/common/XEH_preInit.sqf | 1 + addons/common/functions/fnc_loadSettingsFromProfile.sqf | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index b2f5ef209d..90a774ddfe 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -87,6 +87,7 @@ PREP(isInBuilding); PREP(isPlayer); PREP(isTurnedOut); PREP(letterToCode); +PREP(loadSettingsFromProfile); PREP(loadSettingsOnServer); PREP(map); PREP(moduleCheckPBOs); diff --git a/addons/common/functions/fnc_loadSettingsFromProfile.sqf b/addons/common/functions/fnc_loadSettingsFromProfile.sqf index 9d077359ce..1e8e9001aa 100644 --- a/addons/common/functions/fnc_loadSettingsFromProfile.sqf +++ b/addons/common/functions/fnc_loadSettingsFromProfile.sqf @@ -25,7 +25,7 @@ if !(_isForced) then { _profileValue = profileNamespace getvariable _name; // If the setting is stored on the profile - if !(isNil _profileValue) then { + if !(isNil "_profileValue") then { // If the profile variable has the correct type if (typeName _profileValue == typeName (missionNamespace getvariable _name)) then { // Load the setting from the profile From d65a740b7ad85a45d5093981279008499925cb80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 3 Feb 2015 17:47:25 -0300 Subject: [PATCH 077/211] WindDeflection using ace_settings --- addons/winddeflection/CfgEventHandlers.hpp | 6 --- addons/winddeflection/CfgVehicles.h | 43 ++++++++----------- addons/winddeflection/XEH_postInit.sqf | 15 ------- addons/winddeflection/config.cpp | 27 +++++++----- .../functions/fnc_initalizeModule.sqf | 2 +- 5 files changed, 36 insertions(+), 57 deletions(-) delete mode 100644 addons/winddeflection/XEH_postInit.sqf diff --git a/addons/winddeflection/CfgEventHandlers.hpp b/addons/winddeflection/CfgEventHandlers.hpp index 6cf7856ba5..4961d7dbc7 100644 --- a/addons/winddeflection/CfgEventHandlers.hpp +++ b/addons/winddeflection/CfgEventHandlers.hpp @@ -4,12 +4,6 @@ class Extended_PreInit_EventHandlers { }; }; -class Extended_PostInit_EventHandlers { - class ADDON { - init = QUOTE( call compile preprocessFileLineNumbers PATHTOF(XEH_postInit.sqf) ); - }; -}; - class Extended_Fired_Eventhandlers { class CaManBase { fired = QUOTE( call FUNC(handleFired) ); diff --git a/addons/winddeflection/CfgVehicles.h b/addons/winddeflection/CfgVehicles.h index fe0e31bda5..e84727b94e 100644 --- a/addons/winddeflection/CfgVehicles.h +++ b/addons/winddeflection/CfgVehicles.h @@ -1,27 +1,20 @@ class CfgVehicles { - - // TODO Stringtable usage - class Logic; - class Module_F: Logic { - class ArgumentsBaseUnits { - }; - }; - class GVAR(Module): Module_F { - scope = 2; - displayName = "Wind Deflection [ACE]"; - icon = QUOTE(PATHTOF(data\module_icon.paa)); - category = "ACE"; - function = FUNC(enableModule); - functionPriority = 1; - isGlobal = 1; - isTriggerActivated = 0; - class Arguments { - class forAI { - displayName = "Enable for AI"; - description = "Should the module be enabled for AI"; - typeName = "BOOL"; - defaultValue = 0; - }; - }; - }; + class Module_F; + class GVAR(Module): Module_F { + author = "$STR_ACE_Common_ACETeam"; + category = "ACE"; + displayName = "Wind Deflection"; + function = FUNC(enableModule); + scope = 2; + isGlobal = 1; + icon = QUOTE(PATHTOF(data\module_icon.paa)); + class Arguments { + class EnableForAI { + displayName = "Enable for AI"; + description = "Should the module be enabled for AI"; + typeName = "BOOL"; + defaultValue = 0; + }; + }; + }; }; diff --git a/addons/winddeflection/XEH_postInit.sqf b/addons/winddeflection/XEH_postInit.sqf deleted file mode 100644 index 9c3a4bc41f..0000000000 --- a/addons/winddeflection/XEH_postInit.sqf +++ /dev/null @@ -1,15 +0,0 @@ -/** - * XEH_postInit.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ - -#include "script_component.hpp" - -if (isnil QGVAR(EnableForAI)) then { - GVAR(EnableForAI) = false; -}; diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index 6e1bdbc379..f71ef251cd 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -1,16 +1,16 @@ #include "script_component.hpp" class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ACE_common", "ACE_weather"}; - versionDesc = "ACE Wind Deflection"; - version = VERSION; - author[] = {$STR_ACE_Core_ACETeam, "Glowbal", "Ruthberg"}; - authorUrl = "http://csemod.com"; - }; + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ACE_common", "ACE_weather"}; + versionDesc = "ACE Wind Deflection"; + version = VERSION; + author[] = {$STR_ACE_Core_ACETeam, "Glowbal", "Ruthberg"}; + authorUrl = "http://csemod.com"; + }; }; class CfgAddons { @@ -21,4 +21,11 @@ class CfgAddons { }; }; +class ACE_Settings { + class GVAR(EnableForAI) { + value = 0; + typeName = "BOOL"; + isClientSetable = 0; + }; +}; #include "CfgVehicles.h" \ No newline at end of file diff --git a/addons/winddeflection/functions/fnc_initalizeModule.sqf b/addons/winddeflection/functions/fnc_initalizeModule.sqf index 8bd2a2f1bc..2833ecc54c 100644 --- a/addons/winddeflection/functions/fnc_initalizeModule.sqf +++ b/addons/winddeflection/functions/fnc_initalizeModule.sqf @@ -15,5 +15,5 @@ if (!hasInterface) exitwith {}; // No need for this module on HC or dedicated se private ["_logic"]; _logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; if (!isNull _logic) then { - [_logic, QGVAR(EnableForAI), "forAI" ] call EFUNC(common,readSettingFromModule); + [_logic, QGVAR(EnableForAI), "EnableForAI" ] call EFUNC(common,readSettingFromModule); }; \ No newline at end of file From 509bfefff10d0547df6a6c64afc094c96aa1bb73 Mon Sep 17 00:00:00 2001 From: bux578 Date: Tue, 3 Feb 2015 21:47:48 +0100 Subject: [PATCH 078/211] fixed SwitchUnits needed to wait in initPlayer --- addons/switchunits/XEH_clientInit.sqf | 29 +++++++++----- .../switchunits/functions/fnc_initPlayer.sqf | 38 +++++++++---------- .../switchunits/functions/fnc_markAiOnMap.sqf | 6 ++- addons/switchunits/functions/fnc_module.sqf | 4 +- 4 files changed, 44 insertions(+), 33 deletions(-) diff --git a/addons/switchunits/XEH_clientInit.sqf b/addons/switchunits/XEH_clientInit.sqf index dbc239d119..3075d67941 100644 --- a/addons/switchunits/XEH_clientInit.sqf +++ b/addons/switchunits/XEH_clientInit.sqf @@ -16,15 +16,24 @@ #include "script_component.hpp" -private "_sides"; +DFUNC(pfhClientInit) = { + + if (GVAR(EnableSwitchUnits)) exitWith { + + private ["_sides"]; + _sides = []; + + if(GVAR(SwitchToWest)) then {_sides pushBack west;}; + if(GVAR(SwitchToEast)) then {_sides pushBack east;}; + if(GVAR(SwitchToIndependent)) then {_sides pushBack independent;}; + if(GVAR(SwitchToCivilian)) then {_sides pushBack civilian;}; -_sides = []; - -if(GVAR(SwitchToWest)) then {_sides pushBack west}; -if(GVAR(SwitchToEast)) then {_sides pushBack east}; -if(GVAR(SwitchToIndependent)) then {_sides pushBack independent}; -if(GVAR(SwitchToCivilian)) then {_sides pushBack civilian}; - -if (player getVariable ["ACE_CanSwitchUnits", false]) then { - [player, _sides] call FUNC(initPlayer); + if (player getVariable ["ACE_CanSwitchUnits", false]) then { + [player, _sides] call FUNC(initPlayer); + }; + + [(_this select 1)] call cba_fnc_removePerFrameHandler; + }; }; + +[FUNC(pfhClientInit), 0.5, []] call cba_fnc_addPerFrameHandler; diff --git a/addons/switchunits/functions/fnc_initPlayer.sqf b/addons/switchunits/functions/fnc_initPlayer.sqf index c4e2d19747..9c71f8cefc 100644 --- a/addons/switchunits/functions/fnc_initPlayer.sqf +++ b/addons/switchunits/functions/fnc_initPlayer.sqf @@ -24,28 +24,28 @@ _sides = _this select 1; if (vehicle _playerUnit == _playerUnit) then { - [_sides] call FUNC(markAiOnMap); + [_sides] call FUNC(markAiOnMap); - _playerUnit setVariable [QGVAR(IsPlayerUnit), true]; - _playerUnit allowDamage false; + _playerUnit setVariable [QGVAR(IsPlayerUnit), true]; + _playerUnit allowDamage false; - GVAR(OriginalUnit) = _playerUnit; - //GVAR(OriginalName) = [_playerUnit] call EFUNC(common,getName); - GVAR(OriginalName) = name _playerUnit; - GVAR(OriginalGroup) = group _playerUnit; + GVAR(OriginalUnit) = _playerUnit; + //GVAR(OriginalName) = [_playerUnit] call EFUNC(common,getName); + GVAR(OriginalName) = name _playerUnit; + GVAR(OriginalGroup) = group _playerUnit; - // remove all starting gear of a player - removeAllWeapons _playerUnit; - removeGoggles _playerUnit; - removeHeadgear _playerUnit; - removeVest _playerUnit; - removeAllAssignedItems _playerUnit; - clearAllItemsFromBackpack _playerUnit; - removeBackpack _playerUnit; - _playerUnit linkItem "ItemMap"; - removeUniform _playerUnit; + // remove all starting gear of a player + removeAllWeapons _playerUnit; + removeGoggles _playerUnit; + removeHeadgear _playerUnit; + removeVest _playerUnit; + removeAllAssignedItems _playerUnit; + clearAllItemsFromBackpack _playerUnit; + removeBackpack _playerUnit; + _playerUnit linkItem "ItemMap"; + removeUniform _playerUnit; - [_playerUnit, "ACE_SwitchUnits", true] call EFUNC(common,setForceWalkStatus); + [_playerUnit, "ACE_SwitchUnits", true] call EFUNC(common,setForceWalkStatus); - [_playerUnit, _sides] call FUNC(addMapFunction); + [_playerUnit, _sides] call FUNC(addMapFunction); }; diff --git a/addons/switchunits/functions/fnc_markAiOnMap.sqf b/addons/switchunits/functions/fnc_markAiOnMap.sqf index ce7b575398..ed94c31b0b 100644 --- a/addons/switchunits/functions/fnc_markAiOnMap.sqf +++ b/addons/switchunits/functions/fnc_markAiOnMap.sqf @@ -10,7 +10,7 @@ * None * * Example: - * [west, east] call FUNC(markAiOnMap) + * [[west, east]] call FUNC(markAiOnMap) * * Public: No */ @@ -34,11 +34,13 @@ DFUNC(pfhMarkAiOnMap) = { } forEach GVAR(AllMarkerNames); if (alive ACE_player && {GVAR(OriginalUnit) getVariable ["ACE_CanSwitchUnits", false]}) then { - + // create markers { if (([_x] call FUNC(isValidAi) && (side group _x in _sides)) || (_x getVariable [QGVAR(IsPlayerControlled), false])) then { private ["_markerName", "_marker", "_markerColor"]; + + hint format ["marker. %1", time]; //_markerName = format ["%1", [_x] call EFUNC(common,getName)]; _markerName = str _x; diff --git a/addons/switchunits/functions/fnc_module.sqf b/addons/switchunits/functions/fnc_module.sqf index 9444cb5f61..0a06f737a5 100644 --- a/addons/switchunits/functions/fnc_module.sqf +++ b/addons/switchunits/functions/fnc_module.sqf @@ -27,8 +27,6 @@ if !(_activated) exitWith {}; GVAR(Module) = true; -[QGVAR(EnableSwitchUnits), true] call EFUNC(common,setParameter); - [_logic, QGVAR(SwitchToWest), "SwitchToWest"] call EFUNC(common,readBooleanParameterFromModule); [_logic, QGVAR(SwitchToEast), "SwitchToEast"] call EFUNC(common,readBooleanParameterFromModule); [_logic, QGVAR(SwitchToIndependent), "SwitchToIndependent"] call EFUNC(common,readBooleanParameterFromModule); @@ -37,4 +35,6 @@ GVAR(Module) = true; [_logic, QGVAR(EnableSafeZone), "EnableSafeZone"] call EFUNC(common,readBooleanParameterFromModule); [_logic, QGVAR(SafeZoneRadius), "SafeZoneRadius"] call EFUNC(common,readNumericParameterFromModule); +[QGVAR(EnableSwitchUnits), true] call EFUNC(common,setParameter); + diag_log text "[ACE]: SwitchUnits Module Initialized."; From 47d5befd120f16b8282f8853e0ea14a2730b2f4c Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 3 Feb 2015 23:03:43 +0100 Subject: [PATCH 079/211] fcs per turrets --- addons/fcs/CfgAmmo.hpp | 32 ++ addons/fcs/CfgMagazines.hpp | 34 ++ addons/fcs/CfgOptics.hpp | 13 +- addons/fcs/CfgVehicles.hpp | 516 +++++++++++++++++++++++ addons/fcs/CfgWeapons.hpp | 24 ++ addons/fcs/XEH_clientInit.sqf | 74 +--- addons/fcs/config.cpp | 330 +-------------- addons/fcs/functions/fnc_adjustRange.sqf | 4 +- addons/fcs/functions/fnc_canResetFCS.sqf | 2 +- addons/fcs/functions/fnc_canUseFCS.sqf | 2 +- addons/fcs/functions/fnc_keyUp.sqf | 34 +- addons/fcs/functions/fnc_reset.sqf | 2 +- addons/fcs/functions/fnc_vehicleInit.sqf | 36 +- addons/fcs/initKeybinds.sqf | 73 ++++ 14 files changed, 746 insertions(+), 430 deletions(-) create mode 100644 addons/fcs/CfgAmmo.hpp create mode 100644 addons/fcs/CfgMagazines.hpp create mode 100644 addons/fcs/CfgVehicles.hpp create mode 100644 addons/fcs/CfgWeapons.hpp create mode 100644 addons/fcs/initKeybinds.sqf diff --git a/addons/fcs/CfgAmmo.hpp b/addons/fcs/CfgAmmo.hpp new file mode 100644 index 0000000000..25d02399d5 --- /dev/null +++ b/addons/fcs/CfgAmmo.hpp @@ -0,0 +1,32 @@ + +class CfgAmmo { + class B_35mm_AA; + class ACE_B_35mm_ABM: B_35mm_AA { + GVAR(Airburst) = 1; + deflecting = 0; + }; + + class B_35mm_AA_Tracer_Red; + class ACE_B_35mm_ABM_Tracer_Red: B_35mm_AA_Tracer_Red { + GVAR(Airburst) = 1; + deflecting = 0; + }; + + class B_35mm_AA_Tracer_Green; + class ACE_B_35mm_ABM_Tracer_Green: B_35mm_AA_Tracer_Green { + GVAR(Airburst) = 1; + deflecting = 0; + }; + + class B_35mm_AA_Tracer_Yellow; + class ACE_B_35mm_ABM_Tracer_Yellow: B_35mm_AA_Tracer_Yellow { + GVAR(Airburst) = 1; + deflecting = 0; + }; + + class ACE_B_35mm_ABM_Helper: B_35mm_AA { + indirectHitRange = 6; + simulation = "shotRocket"; + timeToLive = 0; + }; +}; diff --git a/addons/fcs/CfgMagazines.hpp b/addons/fcs/CfgMagazines.hpp new file mode 100644 index 0000000000..dc48e21411 --- /dev/null +++ b/addons/fcs/CfgMagazines.hpp @@ -0,0 +1,34 @@ + +class CfgMagazines { + class 680Rnd_35mm_AA_shells; + class ACE_120Rnd_35mm_ABM_shells: 680Rnd_35mm_AA_shells { + ammo = "ACE_B_35mm_ABM"; + count = 120; + displayName = "35mm ABM Shells"; + displayNameShort = "35mm ABM"; + }; + + class 680Rnd_35mm_AA_shells_Tracer_Red; + class ACE_120Rnd_35mm_ABM_shells_Tracer_Red: 680Rnd_35mm_AA_shells_Tracer_Red { + ammo = "ACE_B_35mm_ABM_Tracer_Red"; + count = 120; + displayName = "35mm ABM Shells"; + displayNameShort = "35mm ABM-T"; + }; + + class 680Rnd_35mm_AA_shells_Tracer_Green; + class ACE_120Rnd_35mm_ABM_shells_Tracer_Green: 680Rnd_35mm_AA_shells_Tracer_Green { + ammo = "ACE_B_35mm_ABM_Tracer_Green"; + count = 120; + displayName = "35mm ABM Shells"; + displayNameShort = "35mm ABM-T"; + }; + + class 680Rnd_35mm_AA_shells_Tracer_Yellow; + class ACE_120Rnd_35mm_ABM_shells_Tracer_Yellow: 680Rnd_35mm_AA_shells_Tracer_Yellow { + ammo = "ACE_B_35mm_ABM_Tracer_Yellow"; + count = 120; + displayName = "35mm ABM Shells"; + displayNameShort = "35mm ABM-T"; + }; +}; diff --git a/addons/fcs/CfgOptics.hpp b/addons/fcs/CfgOptics.hpp index 01b997b0ee..3c17e760f0 100644 --- a/addons/fcs/CfgOptics.hpp +++ b/addons/fcs/CfgOptics.hpp @@ -1,3 +1,4 @@ + #define MACRO_RANGEFINDER \ class CA_Distance; \ class ACE_CA_Distance: CA_Distance { \ @@ -17,12 +18,12 @@ class RscInGameUI { class RscUnitInfo; class RscUnitInfo_AH64D_gunner { onLoad = ""; - controls[] = {"CA_Distance", "ACE_CA_Distance"}; + controls[] = {"CA_Distance","ACE_CA_Distance"}; MACRO_RANGEFINDER }; class RscWeaponRangeFinder { onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - controls[] = {"CA_Distance", "ACE_CA_Distance"}; + controls[] = {"CA_Distance","ACE_CA_Distance"}; MACRO_RANGEFINDER }; @@ -56,17 +57,17 @@ class RscInGameUI { }; class RscWeaponRangeFinderAbramsCom { onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - controls[] = {"CA_Distance", "ACE_CA_Distance"}; + controls[] = {"CA_Distance","ACE_CA_Distance"}; MACRO_RANGEFINDER }; class RscWeaponRangeFinderAbramsGun { onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - controls[] = {"CA_Distance", "ACE_CA_Distance"}; + controls[] = {"CA_Distance","ACE_CA_Distance"}; MACRO_RANGEFINDER }; class RscWeaponRangeFinderStrykerMGSGun { onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - controls[] = {"CA_Distance", "ACE_CA_Distance"}; + controls[] = {"CA_Distance","ACE_CA_Distance"}; MACRO_RANGEFINDER }; class RscOptics_crows: RscUnitInfo { @@ -88,7 +89,7 @@ class RscInGameUI { class RscWeaponRangeZeroing: RscUnitInfo { onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - controls[] = {"CA_Zeroing", "CA_DistanceText", "CA_Distance", "ACE_CA_Distance", "ACE_Rangehelper"}; + controls[] = {"CA_Zeroing", "CA_DistanceText", "CA_Distance","ACE_CA_Distance", "ACE_Rangehelper"}; MACRO_RANGEFINDER }; class RscOptics_sos: RscUnitInfo { diff --git a/addons/fcs/CfgVehicles.hpp b/addons/fcs/CfgVehicles.hpp new file mode 100644 index 0000000000..10e1f0797d --- /dev/null +++ b/addons/fcs/CfgVehicles.hpp @@ -0,0 +1,516 @@ + +class CfgVehicles { + class All { + class Turrets; + }; + + class AllVehicles: All { + class NewTurret { + GVAR(Enabled) = 0; + GVAR(MinDistance) = 200; + GVAR(MaxDistance) = 9990; + GVAR(DistanceInterval) = 5; + class Turrets; + }; + class CargoTurret; + }; + + // LAND VEHICLES + class Land: AllVehicles {}; + + class LandVehicle: Land { + class CommanderOptics; + }; + + class Car: LandVehicle { + class ACE_SelfActions { + class ResetFCS { + displayName = $STR_ACE_FCS_ResetFCS; + enableInside = 1; + condition = QUOTE(call FUNC(canResetFCS)); + statement = QUOTE([vehicle _player] call FUNC(reset);); + showDisabled = 0; + priority = 1; + icon = ""; + }; + }; + }; + + class Tank: LandVehicle { + class ACE_SelfActions { + class ResetFCS { + displayName = $STR_ACE_FCS_ResetFCS; + enableInside = 1; + condition = QUOTE(call FUNC(canResetFCS)); + statement = QUOTE([vehicle _player] call FUNC(reset);); + showDisabled = 0; + priority = 1; + icon = ""; + }; + }; + class Turrets { + class MainTurret: NewTurret { + GVAR(Enabled) = 1; // all tracked vehicles get one by default + class Turrets { + class CommanderOptics; + }; + }; + }; + }; + + class Tank_F: Tank { + class Turrets { + class MainTurret: NewTurret { + GVAR(Enabled) = 1; // all tracked vehicles get one by default + class Turrets { + class CommanderOptics;//: CommanderOptics {}; + }; + }; + }; + }; + + class Car_F: Car { + class Turrets { + class MainTurret; + }; + }; + + class Wheeled_APC_F: Car_F { + class Turrets { + class MainTurret: NewTurret { + class Turrets { + class CommanderOptics;//: CommanderOptics {}; + }; + }; + }; + }; + + class MRAP_01_base_F: Car_F {}; + + class MRAP_01_gmg_base_F: MRAP_01_base_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret {}; + };*/ + }; + + class MRAP_01_hmg_base_F: MRAP_01_gmg_base_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret {}; + };*/ + }; + + class B_MRAP_01_F: MRAP_01_base_F { + class Turrets; + }; + + class MRAP_02_base_F: Car_F {}; + + class MRAP_02_hmg_base_F: MRAP_02_base_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret {}; + };*/ + }; + + class MRAP_02_gmg_base_F: MRAP_02_hmg_base_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret {}; + };*/ + }; + + class O_MRAP_02_F: MRAP_02_base_F { + class Turrets; + }; + + class MRAP_03_base_F: Car_F { + /*class Turrets: Turrets { + class CommanderTurret: MainTurret {}; + };*/ + }; + + class MRAP_03_hmg_base_F: MRAP_03_base_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret {}; + class CommanderTurret: CommanderTurret {}; + };*/ + }; + + class MRAP_03_gmg_base_F: MRAP_03_hmg_base_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret {}; + class CommanderTurret: CommanderTurret {}; + };*/ + }; + + class Offroad_01_base_F: Car_F {}; + + class Offroad_01_armed_base_F: Offroad_01_base_F { + /*class Turrets: Turrets { + class M2_Turret: MainTurret {}; + };*/ + }; + + class APC_Wheeled_01_base_F: Wheeled_APC_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret { + class Turrets: Turrets { + class CommanderOptics: CommanderOptics {}; + }; + }; + };*/ + }; + + class B_APC_Wheeled_01_base_F: APC_Wheeled_01_base_F {}; + + class B_APC_Wheeled_01_cannon_F: B_APC_Wheeled_01_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + GVAR(Enabled) = 1; + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; + }; + + class APC_Wheeled_02_base_F: Wheeled_APC_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret { + class Turrets; + }; + + class CommanderOptics: CommanderOptics {}; + };*/ + }; + + class APC_Wheeled_03_base_F: Wheeled_APC_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + GVAR(Enabled) = 1; + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + + /*class Turrets: Turrets { + class CommanderOptics: CommanderOptics {}; + };*/ + }; + }; + }; + + class I_APC_Wheeled_03_base_F: APC_Wheeled_03_base_F {}; + + class I_APC_Wheeled_03_cannon_F: I_APC_Wheeled_03_base_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret {}; + };*/ + }; + + class APC_Tracked_01_base_F: Tank_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret { + class Turrets; + }; + };*/ + }; + + class B_APC_Tracked_01_base_F: APC_Tracked_01_base_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret {}; + };*/ + }; + + class B_APC_Tracked_01_rcws_F: B_APC_Tracked_01_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + GVAR(Enabled) = 0; + }; + class CommanderOptics: CommanderOptics {}; + }; + }; + + class B_APC_Tracked_01_CRV_F: B_APC_Tracked_01_base_F { + //GVAR(Enabled) = 0; @todo + }; + + class B_APC_Tracked_01_AA_F: B_APC_Tracked_01_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + magazines[] += {"ACE_120Rnd_35mm_ABM_shells_Tracer_Red"}; + + /*class Turrets: Turrets { + class CommanderOptics: CommanderOptics {}; + };*/ + }; + }; + }; + + class APC_Tracked_02_base_F: Tank_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret { + class Turrets: Turrets { + class CommanderOptics: CommanderOptics {}; + }; + }; + };*/ + }; + + class O_APC_Tracked_02_base_F: APC_Tracked_02_base_F {}; + + class O_APC_Tracked_02_cannon_F: O_APC_Tracked_02_base_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret {}; + };*/ + }; + + class O_APC_Tracked_02_AA_F: O_APC_Tracked_02_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + magazines[] += {"ACE_120Rnd_35mm_ABM_shells_Tracer_Green"}; + + /*class Turrets: Turrets { + class CommanderOptics: CommanderOptics {}; + };*/ + }; + }; + }; + + class APC_Tracked_03_base_F: Tank_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + + /*class Turrets: Turrets { + class CommanderOptics: CommanderOptics {}; + };*/ + }; + }; + }; + + class MBT_01_base_F: Tank_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + + /*class Turrets: Turrets { + class CommanderOptics: CommanderOptics {}; + };*/ + }; + }; + }; + + class B_MBT_01_base_F: MBT_01_base_F {}; + + class B_MBT_01_cannon_F: B_MBT_01_base_F {}; + + class MBT_01_arty_base_F: MBT_01_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + GVAR(Enabled) = 0; + + /*class Turrets: Turrets { + class CommanderOptics: CommanderOptics {}; + };*/ + }; + }; + }; + + class MBT_01_mlrs_base_F: MBT_01_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + GVAR(Enabled) = 0; + //class Turrets; + }; + }; + }; + + class MBT_02_base_F: Tank_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + + /*class Turrets: Turrets { + class CommanderOptics: CommanderOptics {}; + };*/ + }; + }; + }; + + class MBT_02_arty_base_F: MBT_02_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + GVAR(Enabled) = 0; + + /*class Turrets: Turrets { + class CommanderOptics: CommanderOptics {}; + };*/ + }; + }; + }; + + class MBT_03_base_F: Tank_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + + /*class Turrets: Turrets { + class CommanderOptics: CommanderOptics {}; + };*/ + }; + }; + }; + + class B_MBT_01_TUSK_F: B_MBT_01_cannon_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + + class Turrets: Turrets { + class CommanderOptics: CommanderOptics { + GVAR(Enabled) = 1; + }; + }; + }; + }; + }; + + // SHIPS + /*class Ship: AllVehicles { + class Turrets { + class MainTurret; + }; + }; + + class Ship_F: Ship {}; + + class Boat_F: Ship_F {}; + + class Boat_Armed_01_base_F: Boat_F { + class Turrets: Turrets { + class FrontTurret; + class RearTurret: FrontTurret {}; + }; + };*/ + + /*class Boat_Armed_01_minigun_base_F: Boat_Armed_01_base_F { + class Turrets: Turrets { + class FrontTurret: FrontTurret {}; + class RearTurret: RearTurret {}; + }; + };*/ + + // AIR VEHICLES + class Air: AllVehicles {}; + + class Helicopter: Air { + class Turrets { + class MainTurret; + }; + }; + + class Plane: Air {}; + + class Helicopter_Base_F: Helicopter { + class Turrets: Turrets { + class CopilotTurret; + }; + }; + + class Helicopter_Base_H: Helicopter_Base_F { + class Turrets: Turrets { + class CopilotTurret; + }; + }; + + class Heli_Light_01_base_F: Helicopter_Base_H { + /*class Turrets: Turrets { + class CopilotTurret: CopilotTurret {}; + };*/ + }; + + class B_Heli_Light_01_F: Heli_Light_01_base_F { + /*class Turrets: Turrets { + class CopilotTurret: CopilotTurret {}; + };*/ + }; + + class Heli_Light_01_armed_base_F: Heli_Light_01_base_F { + /*class Turrets: Turrets { + class CopilotTurret: CopilotTurret {}; + };*/ + }; + + class Heli_Light_02_base_F: Helicopter_Base_H { + /*class Turrets: Turrets { + class CopilotTurret: CopilotTurret {}; + };*/ + }; + + class Plane_Base_F: Plane { + class Turrets { + class CopilotTurret; + }; + }; + + class Heli_Attack_01_base_F: Helicopter_Base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + GVAR(Enabled) = 1; + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; + }; + + class Heli_Attack_02_base_F: Helicopter_Base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + GVAR(Enabled) = 1; + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; + }; + + class Heli_Transport_01_base_F: Helicopter_Base_H { + /*class Turrets: Turrets { + class CopilotTurret: CopilotTurret {}; + class MainTurret: MainTurret {}; + class RightDoorGun: MainTurret {}; + };*/ + }; + + class Heli_Transport_02_base_F: Helicopter_Base_H { + /*class Turrets: Turrets { + class CopilotTurret: CopilotTurret {}; + };*/ + }; + + class I_Heli_light_03_base_F: Helicopter_Base_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret {}; + };*/ + }; + + class I_Heli_light_03_F: I_Heli_light_03_base_F { + /*class Turrets: Turrets { + class MainTurret: MainTurret {}; + };*/ + }; + + class Plane_CAS_01_base_F: Plane_Base_F { + class Turrets; + }; + + class Plane_CAS_02_base_F: Plane_Base_F { + class Turrets; + }; + + class Plane_Fighter_03_base_F: Plane_Base_F { + class Turrets; + }; +}; diff --git a/addons/fcs/CfgWeapons.hpp b/addons/fcs/CfgWeapons.hpp new file mode 100644 index 0000000000..ec72bc6f44 --- /dev/null +++ b/addons/fcs/CfgWeapons.hpp @@ -0,0 +1,24 @@ + +class CfgWeapons { + // disable locking, so it doesn't interfere with our system + class CannonCore; + class cannon_120mm: CannonCore { + canLock = 0; + ballisticsComputer = 0; + }; + class autocannon_Base_F: CannonCore { + canLock = 0; + ballisticsComputer = 0; + }; + class autocannon_35mm: CannonCore { + canLock = 0; + ballisticsComputer = 0; + magazines[] += {"ACE_120Rnd_35mm_ABM_shells","ACE_120Rnd_35mm_ABM_shells_Tracer_Red","ACE_120Rnd_35mm_ABM_shells_Tracer_Green","ACE_120Rnd_35mm_ABM_shells_Tracer_Yellow"}; + }; + + // fix mrco having an invisible rangefinder + class ItemCore; + class optic_MRCO: ItemCore { + weaponInfoType = "RscWeaponZeroing"; + }; +}; diff --git a/addons/fcs/XEH_clientInit.sqf b/addons/fcs/XEH_clientInit.sqf index 66720ae44a..918548e71e 100644 --- a/addons/fcs/XEH_clientInit.sqf +++ b/addons/fcs/XEH_clientInit.sqf @@ -4,76 +4,4 @@ GVAR(enabled) = True; GVAR(time) = 0; GVAR(position) = [0,0,0]; -// Add keybinds -["ACE3", - localize "STR_ACE_FCS_LaseTarget", - { - // Conditions: canInteract - _exceptions = []; - if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; - // Conditions: specific - if !(!GVAR(enabled) && {call FUNC(canUseRangefinder) || FUNC(canUseFCS)}) exitWith {false}; - - // Statement - [vehicle ACE_player] call FUNC(keyDown); - // Return false so it doesn't block the rest weapon action - false - }, - [15, [false, false, false]], - false, - "keydown" -] call cba_fnc_registerKeybind; - -["ACE3", - localize "STR_ACE_FCS_LaseTarget", - { - // Conditions: canInteract - _exceptions = []; - if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; - // Conditions: specific - if !(GVAR(enabled) && FUNC(canUseFCS)) exitWith {false}; - - // Statement - [vehicle ACE_player] call FUNC(keyUp); - false - }, - [15, [false, false, false]], - false, - "keyup" -] call cba_fnc_registerKeybind; - -["ACE3", - localize "STR_ACE_FCS_AdjustRangeUp", - { - // Conditions: canInteract - _exceptions = []; - if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; - // Conditions: specific - if !(call FUNC(canUseRangefinder) || FUNC(canUseFCS)) exitWith {false}; - - // Statement - [vehicle ACE_player, 50] call FUNC(adjustRange); - true - }, - [201, [false, false, false]], - false, - "keydown" -] call cba_fnc_registerKeybind; - -["ACE3", - localize "STR_ACE_FCS_AdjustRangeDown", - { - // Conditions: canInteract - _exceptions = []; - if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; - // Conditions: specific - if !(call FUNC(canUseRangefinder) || FUNC(canUseFCS)) exitWith {false}; - - // Statement - [vehicle ACE_player, -50] call FUNC(adjustRange); - true - }, - [209, [false, false, false]], - false, - "keydown" -] call cba_fnc_registerKeybind; +#include "initKeybinds.sqf" diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index e1e8ac8901..3c7303d68b 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -14,329 +14,9 @@ class CfgPatches { #include "CfgEventHandlers.hpp" -class CfgVehicles { - class All { - class Turrets; - }; +#include "CfgAmmo.hpp" +#include "CfgMagazines.hpp" +#include "CfgVehicles.hpp" +#include "CfgWeapons.hpp" - class AllVehicles: All { - GVAR(Enabled) = 0; - GVAR(MinDistance) = 200; - GVAR(MaxDistance) = 9990; - GVAR(DistanceInterval) = 5; - class NewTurret { - class Turrets; - }; - class CargoTurret; - }; - - class Land: AllVehicles {}; - - class LandVehicle: Land { - class CommanderOptics; - }; - - // WHEELED - class Car: LandVehicle { - class ACE_SelfActions { - class ResetFCS { - displayName = $STR_ACE_FCS_ResetFCS; - enableInside = 1; - condition = QUOTE(call FUNC(canResetFCS)); - statement = QUOTE([vehicle _player] call FUNC(reset);); - showDisabled = 0; - priority = 1; - icon = ""; - }; - }; - }; - - class Car_F: Car { - class Turrets { - class MainTurret; - }; - }; - - class Wheeled_APC_F: Car_F { - class Turrets { - class MainTurret: NewTurret { - class Turrets { - class CommanderOptics; - }; - }; - }; - }; - - class APC_Wheeled_01_base_F: Wheeled_APC_F {}; - class B_APC_Wheeled_01_base_F: APC_Wheeled_01_base_F {}; - class B_APC_Wheeled_01_cannon_F: B_APC_Wheeled_01_base_F { - GVAR(Enabled) = 1; - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - }; - }; - }; - - class APC_Wheeled_03_base_F: Wheeled_APC_F { - GVAR(Enabled) = 1; - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - }; - }; - }; - - // TRACKED - class Tank: LandVehicle { - GVAR(Enabled) = 1; // all tracked vehicles get one by default - class ACE_SelfActions { - class ResetFCS { - displayName = $STR_ACE_FCS_ResetFCS; - enableInside = 1; - condition = QUOTE(call FUNC(canResetFCS)); - statement = QUOTE([vehicle _player] call FUNC(reset);); - showDisabled = 0; - priority = 1; - icon = ""; - }; - }; - class Turrets { - class MainTurret: NewTurret { - class Turrets { - class CommanderOptics; - }; - }; - }; - }; - - class Tank_F: Tank { - class Turrets { - class MainTurret: NewTurret { - class Turrets { - class CommanderOptics; - }; - }; - }; - }; - - class MBT_01_base_F: Tank_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - }; - }; - }; - - class B_MBT_01_base_F: MBT_01_base_F {}; - class B_MBT_01_cannon_F: B_MBT_01_base_F {}; - class B_MBT_01_TUSK_F: B_MBT_01_cannon_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - }; - }; - }; - class MBT_01_arty_base_F: MBT_01_base_F { - GVAR(Enabled) = 0; - }; - class MBT_01_mlrs_base_F: MBT_01_base_F { - GVAR(Enabled) = 0; - }; - - class MBT_02_base_F: Tank_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - }; - }; - }; - class MBT_02_arty_base_F: MBT_02_base_F { - GVAR(Enabled) = 0; - }; - - class MBT_03_base_F: Tank_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - }; - }; - }; - - class APC_Tracked_01_base_F: Tank_F {}; - class B_APC_Tracked_01_base_F: APC_Tracked_01_base_F {}; - class B_APC_Tracked_01_rcws_F: B_APC_Tracked_01_base_F { - GVAR(Enabled) = 0; - }; - class B_APC_Tracked_01_CRV_F: B_APC_Tracked_01_base_F { - GVAR(Enabled) = 0; - }; - class B_APC_Tracked_01_AA_F: B_APC_Tracked_01_base_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - magazines[] += {"ACE_120Rnd_35mm_ABM_shells_Tracer_Red"}; - }; - }; - }; - - class APC_Tracked_02_base_F: Tank_F {}; - class O_APC_Tracked_02_base_F: APC_Tracked_02_base_F {}; - class O_APC_Tracked_02_AA_F: O_APC_Tracked_02_base_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - magazines[] += {"ACE_120Rnd_35mm_ABM_shells_Tracer_Green"}; - }; - }; - }; - - class APC_Tracked_03_base_F: Tank_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - }; - }; - }; - - // HELICOPTERS - class Air: AllVehicles {}; - - class Helicopter: Air { - class ACE_SelfActions { - class ResetFCS { - displayName = $STR_ACE_FCS_ResetFCS; - enableInside = 1; - condition = QUOTE(call FUNC(canResetFCS)); - statement = QUOTE([vehicle _player] call FUNC(reset);); - showDisabled = 0; - priority = 1; - icon = ""; - }; - }; - class Turrets { - class MainTurret; - }; - }; - - class Helicopter_Base_F: Helicopter { - class Turrets: Turrets { - class CopilotTurret; - }; - }; - - class Heli_Attack_01_base_F: Helicopter_Base_F { - GVAR(Enabled) = 1; - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - }; - }; - }; - - class Heli_Attack_02_base_F: Helicopter_Base_F { - GVAR(Enabled) = 1; - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - }; - }; - }; -}; - -class CfgWeapons { - // disable locking, so it doesn't interfere with our system - class CannonCore; - class cannon_120mm: CannonCore { - canLock = 0; - ballisticsComputer = 0; - }; - class autocannon_Base_F: CannonCore { - canLock = 0; - ballisticsComputer = 0; - }; - class autocannon_35mm: CannonCore { - canLock = 0; - ballisticsComputer = 0; - magazines[] += {"ACE_120Rnd_35mm_ABM_shells","ACE_120Rnd_35mm_ABM_shells_Tracer_Red","ACE_120Rnd_35mm_ABM_shells_Tracer_Green","ACE_120Rnd_35mm_ABM_shells_Tracer_Yellow"}; - }; - - // fix mrco having an invisible rangefinder - class ItemCore; - class optic_MRCO: ItemCore { - weaponInfoType = "RscWeaponZeroing"; - }; -}; - -class CfgMagazines { - class 680Rnd_35mm_AA_shells; - class 680Rnd_35mm_AA_shells_Tracer_Red; - class 680Rnd_35mm_AA_shells_Tracer_Green; - class 680Rnd_35mm_AA_shells_Tracer_Yellow; - - class ACE_120Rnd_35mm_ABM_shells: 680Rnd_35mm_AA_shells { - ammo = "ACE_B_35mm_ABM"; - count = 120; - displayName = "35mm ABM Shells"; - displayNameShort = "35mm ABM"; - }; - class ACE_120Rnd_35mm_ABM_shells_Tracer_Red: 680Rnd_35mm_AA_shells_Tracer_Red { - ammo = "ACE_B_35mm_ABM_Tracer_Red"; - count = 120; - displayName = "35mm ABM Shells"; - displayNameShort = "35mm ABM-T"; - }; - class ACE_120Rnd_35mm_ABM_shells_Tracer_Green: 680Rnd_35mm_AA_shells_Tracer_Green { - ammo = "ACE_B_35mm_ABM_Tracer_Green"; - count = 120; - displayName = "35mm ABM Shells"; - displayNameShort = "35mm ABM-T"; - }; - class ACE_120Rnd_35mm_ABM_shells_Tracer_Yellow: 680Rnd_35mm_AA_shells_Tracer_Yellow { - ammo = "ACE_B_35mm_ABM_Tracer_Yellow"; - count = 120; - displayName = "35mm ABM Shells"; - displayNameShort = "35mm ABM-T"; - }; -}; - -class CfgAmmo { - class B_35mm_AA; - class B_35mm_AA_Tracer_Red; - class B_35mm_AA_Tracer_Green; - class B_35mm_AA_Tracer_Yellow; - - class ACE_B_35mm_ABM: B_35mm_AA { - GVAR(Airburst) = 1; - deflecting = 0; - }; - class ACE_B_35mm_ABM_Tracer_Red: B_35mm_AA_Tracer_Red { - GVAR(Airburst) = 1; - deflecting = 0; - }; - class ACE_B_35mm_ABM_Tracer_Green: B_35mm_AA_Tracer_Green { - GVAR(Airburst) = 1; - deflecting = 0; - }; - class ACE_B_35mm_ABM_Tracer_Yellow: B_35mm_AA_Tracer_Yellow { - GVAR(Airburst) = 1; - deflecting = 0; - }; - - class ACE_B_35mm_ABM_Helper: B_35mm_AA { - indirectHitRange = 6; - simulation = "shotRocket"; - timeToLive = 0; - }; -}; - -#include +#include "CfgOptics.hpp" diff --git a/addons/fcs/functions/fnc_adjustRange.sqf b/addons/fcs/functions/fnc_adjustRange.sqf index 1620c53375..165ac63a11 100644 --- a/addons/fcs/functions/fnc_adjustRange.sqf +++ b/addons/fcs/functions/fnc_adjustRange.sqf @@ -18,8 +18,8 @@ private ["_vehicle", "_delta", "_min", "_max", "_distance"]; _vehicle = _this select 0; _delta = _this select 1; -_min = getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> QGVAR(MinDistance)); -_max = getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> QGVAR(MaxDistance)); +_min = getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(MinDistance)); +_max = getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(MaxDistance)); _distance = _vehicle getVariable [QGVAR(Distance), _min]; _distance = _distance + _delta; diff --git a/addons/fcs/functions/fnc_canResetFCS.sqf b/addons/fcs/functions/fnc_canResetFCS.sqf index 8760503cdb..8ace62a0ef 100644 --- a/addons/fcs/functions/fnc_canResetFCS.sqf +++ b/addons/fcs/functions/fnc_canResetFCS.sqf @@ -13,4 +13,4 @@ #include "script_component.hpp" ACE_player == gunner vehicle ACE_player -&& (count ((vehicle ACE_player) getVariable [QGVAR(Magazines), []]) > 1) +&& {count ((vehicle ACE_player) getVariable [QGVAR(Magazines), []]) > 1} diff --git a/addons/fcs/functions/fnc_canUseFCS.sqf b/addons/fcs/functions/fnc_canUseFCS.sqf index ef4a3f2814..a80d9599dd 100644 --- a/addons/fcs/functions/fnc_canUseFCS.sqf +++ b/addons/fcs/functions/fnc_canUseFCS.sqf @@ -13,5 +13,5 @@ #include "script_component.hpp" ACE_player == gunner vehicle ACE_player -&& {getNumber (configFile >> "CfgVehicles" >> typeOf (vehicle ACE_player) >> QGVAR(Enabled)) == 1} +&& {getNumber (configFile >> "CfgVehicles" >> typeOf vehicle ACE_player >> QGVAR(Enabled)) == 1} && {cameraView == "GUNNER"} diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index c95460e65b..31ba7ba01b 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -12,7 +12,7 @@ #include "script_component.hpp" -private ["_ammoType", "_viewDiff", "_posArrival", "_airFriction", "_timeToLive", "_maxElev", "_vehicle", "_posTarget", "_distance", "_simulationStep", "_posX", "_velocityMagnitude", "_magazines", "_movingAzimuth", "_FCSElevation", "_velocityX", "_velocityY", "_weaponDirection", "_velocityTarget", "_FCSAzimuth", "_FCSMagazines", "_dirArrival", "_i", "_magazineType", "_angleTarget", "_offset", "_timeToTarget", "_initSpeed"]; +private ["_vehicle", "_distance", "_magazines"]; _vehicle = _this select 0; _distance = call FUNC(getRange); @@ -21,12 +21,14 @@ _magazines = magazines _vehicle; if (_distance == 0) then { _distance = [ - getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(DistanceInterval)), + getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(DistanceInterval)), // @todo turret getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(MaxDistance)), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(MinDistance)) ] call EFUNC(common,getTargetDistance); // maximum distance: 5000m, 5m precision }; +private ["_weaponDirection", "_angleTarget"]; + _weaponDirection = _vehicle weaponDirection currentWeapon _vehicle; _angleTarget = asin (_weaponDirection select 2); @@ -38,6 +40,8 @@ if (!(isNil QGVAR(backgroundCalculation)) and {!(scriptDone GVAR(backgroundCalcu terminate GVAR(backgroundCalculation); }; +private "_movingAzimuth"; + // MOVING TARGETS _movingAzimuth = 0; if (time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then { @@ -53,8 +57,10 @@ if (time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then { ((_posTarget select 2) - (GVAR(position) select 2)) / (time - GVAR(time)) ]; + private ["_magazineType", "_ammoType", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep"]; + // estimate time to target - _magazineType = currentMagazine _vehicle; + _magazineType = currentMagazine _vehicle; // @todo turret magazine _ammoType = getText (configFile >> "CfgMagazines" >> _magazineType >> "ammo"); _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineType >> "initSpeed"); _airFriction = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "airFriction"); @@ -62,10 +68,13 @@ if (time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then { _simulationStep = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "simulationStep"); if (_simulationStep != 0) then { + private ["_posX", "_velocityX", "_velocityY", "_timeToTarget"]; + _posX = 0; _velocityX = _initSpeed; _velocityY = 0; _timeToTarget = 0; + for "_i" from 1 to ((floor (_timeToLive / _simulationStep)) + 1) do { _posX = _posX + _velocityX * _simulationStep; if (_posX >= _distance) exitWith { // bullet passed the target @@ -76,12 +85,15 @@ if (time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then { _velocityY = _velocityY + _velocityY * _velocityMagnitude * _airFriction * _simulationStep - 9.81 * _simulationStep; }; + private ["_posArrival", "_dirArrival"]; + // calculate offsets _posArrival = [ (_posTarget select 0) + (_velocityTarget select 0) * _timeToTarget, (_posTarget select 1) + (_velocityTarget select 1) * _timeToTarget, (_posTarget select 2) + (_velocityTarget select 2) * _timeToTarget ]; + _dirArrival = [ ((_posArrival select 0) - (getPos _vehicle select 0)) / (_posArrival distance (getPos _vehicle)), ((_posArrival select 1) - (getPos _vehicle select 1)) / (_posArrival distance (getPos _vehicle)), @@ -96,9 +108,12 @@ if (time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then { GVAR(enabled) = false; GVAR(time) = -1; +private ["_viewDiff", "_FCSAzimuth", "_FCSMagazines", "_FCSElevation"]; + // CALCULATE AZIMUTH CORRECTION _viewDiff = _vehicle getVariable QGVAR(ViewDiff); _FCSAzimuth = _movingAzimuth; + if (_viewDiff != 0) then { _FCSAzimuth = (atan (_distance / _viewDiff) - (abs _viewDiff / _viewDiff) * 90) + _movingAzimuth; }; @@ -108,11 +123,16 @@ _FCSMagazines = []; _FCSElevation = []; { - _ammoType = getText (configFile >> "CfgMagazines" >> _x >> "ammo"); + private "_ammoType"; + + _ammoType = getText (configFile >> "CfgMagazines" >> _x >> "ammo"); + if !(getText (configFile >> "CfgAmmo" >> _ammoType >> "simulation") == "shotMissile") then { - _maxElev = getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "Turrets" >> "MainTurret" >> "maxElev"); - _initSpeed = getNumber (configFile >> "CfgMagazines" >> _x >> "initSpeed"); - _airFriction = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "airFriction"); + private ["_maxElev", "_initSpeed", "_airFriction", "_offset"]; + + _maxElev = getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "Turrets" >> "MainTurret" >> "maxElev"); // @todo turret + _initSpeed = getNumber (configFile >> "CfgMagazines" >> _x >> "initSpeed"); + _airFriction = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "airFriction"); _offset = "ace_fcs" callExtension format ["%1,%2,%3,%4", _initSpeed, _airFriction, _angleTarget, _distance]; _offset = parseNumber _offset; diff --git a/addons/fcs/functions/fnc_reset.sqf b/addons/fcs/functions/fnc_reset.sqf index f49c4c9589..9001a31c48 100644 --- a/addons/fcs/functions/fnc_reset.sqf +++ b/addons/fcs/functions/fnc_reset.sqf @@ -12,7 +12,7 @@ #include "script_component.hpp" -private ["_vehicle"]; +private "_vehicle"; _vehicle = _this select 0; diff --git a/addons/fcs/functions/fnc_vehicleInit.sqf b/addons/fcs/functions/fnc_vehicleInit.sqf index 5872b1757f..95f3d3f01b 100644 --- a/addons/fcs/functions/fnc_vehicleInit.sqf +++ b/addons/fcs/functions/fnc_vehicleInit.sqf @@ -12,25 +12,33 @@ #include "script_component.hpp" -private ["_gunBeg", "_gunnerView", "_gunBegPos", "_gunnerViewPos", "_viewDiff"]; +private "_vehicle"; -if (getNumber (configFile >> "CfgVehicles" >> (typeOf (_this select 0)) >> QGVAR(Enabled)) == 1) then { - (_this select 0) addEventHandler ["Fired", {_this call FUNC(firedEH)}]; +_vehicle = _this select 0; - (_this select 0) setVariable [QGVAR(Distance), 0, true]; - (_this select 0) setVariable [QGVAR(Magazines), [], true]; - (_this select 0) setVariable [QGVAR(Elevation), [], true]; - (_this select 0) setVariable [QGVAR(Azimuth), 0, true]; +if (getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(Enabled)) == 1) then { // @todo for all turrets + _vehicle addEventHandler ["Fired", {_this call FUNC(firedEH)}]; + + _vehicle setVariable [QGVAR(Distance), 0, true]; + _vehicle setVariable [QGVAR(Magazines), [], true]; + _vehicle setVariable [QGVAR(Elevation), [], true]; + _vehicle setVariable [QGVAR(Azimuth), 0, true]; // calculate offset between gunner camera and muzzle position - if !((_this select 0) isKindOf "Air") then { - _gunBeg = getText (configFile >> "CfgVehicles" >> (typeOf (_this select 0)) >> "Turrets" >> "MainTurret" >> "gunBeg"); - _gunnerView = getText (configFile >> "CfgVehicles" >> (typeOf (_this select 0)) >> "Turrets" >> "MainTurret" >> "memoryPointGunnerOptics"); - _gunBegPos = ((_this select 0) selectionPosition _gunBeg) select 0; - _gunnerViewPos = ((_this select 0) selectionPosition _gunnerView) select 0; + if !(_vehicle isKindOf "Air") then { + private ["_turretConfig", "_gunBeg", "_gunnerView", "_gunBegPos", "_gunnerViewPos", "_viewDiff"]; + + _turretConfig = configFile >> "CfgVehicles" >> typeOf _vehicle >> "Turrets" >> "MainTurret"; + + _gunBeg = getText (_turretConfig >> "gunBeg"); // @todo player turret path + _gunnerView = getText (_turretConfig >> "memoryPointGunnerOptics"); // @todo player turret path + + _gunBegPos = (_vehicle selectionPosition _gunBeg) select 0; + _gunnerViewPos = (_vehicle selectionPosition _gunnerView) select 0; _viewDiff = _gunBegPos - _gunnerViewPos; - (_this select 0) setVariable [QGVAR(ViewDiff), _viewDiff, true]; + + _vehicle setVariable [QGVAR(ViewDiff), _viewDiff, true]; } else { - (_this select 0) setVariable [QGVAR(ViewDiff), 0, true]; + _vehicle setVariable [QGVAR(ViewDiff), 0, true]; }; }; diff --git a/addons/fcs/initKeybinds.sqf b/addons/fcs/initKeybinds.sqf new file mode 100644 index 0000000000..c47669c1ab --- /dev/null +++ b/addons/fcs/initKeybinds.sqf @@ -0,0 +1,73 @@ + +["ACE3", + localize "STR_ACE_FCS_LaseTarget", + { + // Conditions: canInteract + _exceptions = []; + if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; + // Conditions: specific + if !(!GVAR(enabled) && {call FUNC(canUseRangefinder) || FUNC(canUseFCS)}) exitWith {false}; + + // Statement + [vehicle ACE_player] call FUNC(keyDown); + // Return false so it doesn't block the rest weapon action + false + }, + [15, [false, false, false]], + false, + "keydown" +] call cba_fnc_registerKeybind; + +["ACE3", + localize "STR_ACE_FCS_LaseTarget", + { + // Conditions: canInteract + _exceptions = []; + if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; + // Conditions: specific + if !(GVAR(enabled) && FUNC(canUseFCS)) exitWith {false}; + + // Statement + [vehicle ACE_player] call FUNC(keyUp); + false + }, + [15, [false, false, false]], + false, + "keyup" +] call cba_fnc_registerKeybind; + +["ACE3", + localize "STR_ACE_FCS_AdjustRangeUp", + { + // Conditions: canInteract + _exceptions = []; + if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; + // Conditions: specific + if !(call FUNC(canUseRangefinder) || FUNC(canUseFCS)) exitWith {false}; + + // Statement + [vehicle ACE_player, 50] call FUNC(adjustRange); + true + }, + [201, [false, false, false]], + false, + "keydown" +] call cba_fnc_registerKeybind; + +["ACE3", + localize "STR_ACE_FCS_AdjustRangeDown", + { + // Conditions: canInteract + _exceptions = []; + if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; + // Conditions: specific + if !(call FUNC(canUseRangefinder) || FUNC(canUseFCS)) exitWith {false}; + + // Statement + [vehicle ACE_player, -50] call FUNC(adjustRange); + true + }, + [209, [false, false, false]], + false, + "keydown" +] call cba_fnc_registerKeybind; From 357927902dd893bc5361b7845087aaccbe00d79d Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Wed, 4 Feb 2015 02:14:55 +0200 Subject: [PATCH 080/211] Fixed incorrect variable getting in openPlaceUI function. --- addons/explosives/functions/fnc_openPlaceUI.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/explosives/functions/fnc_openPlaceUI.sqf b/addons/explosives/functions/fnc_openPlaceUI.sqf index 1bb78248d2..5ad79381b1 100644 --- a/addons/explosives/functions/fnc_openPlaceUI.sqf +++ b/addons/explosives/functions/fnc_openPlaceUI.sqf @@ -51,7 +51,7 @@ _actions = [localize "STR_ACE_Explosives_PlaceMenu", localize "STR_ACE_Explosive }, { call EFUNC(interaction,hideMenu); - if !(profileNamespace getVariable [EGVAR(interaction,AutoCloseMenu), false]) then { + if !(profileNamespace getVariable [QUOTE(EGVAR(interaction,AutoCloseMenu)), false]) then { "ACE_Explosives" call EFUNC(interaction,openMenuSelf); }; } From f2ef53168bc25801dfaca7e19221b05be67d6635 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Wed, 4 Feb 2015 02:15:31 +0200 Subject: [PATCH 081/211] Added the cellphone as a item. --- addons/explosives/CfgWeapons.hpp | 14 ++++++++++++++ addons/explosives/Data/UI/Cellphone_UI.paa | Bin 0 -> 34032 bytes addons/explosives/config.cpp | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 addons/explosives/Data/UI/Cellphone_UI.paa diff --git a/addons/explosives/CfgWeapons.hpp b/addons/explosives/CfgWeapons.hpp index e239ed8841..fd142019e8 100644 --- a/addons/explosives/CfgWeapons.hpp +++ b/addons/explosives/CfgWeapons.hpp @@ -47,6 +47,20 @@ class CfgWeapons { ACE_Range = 100; ACE_Detonator = 1; + class ItemInfo: ACE_ExplosiveItem { + mass = 2; + uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d"; + }; + }; + class ACE_Cellphone: ACE_ItemCore { + scope = 2; + displayName = $STR_ACE_Explosives_cellphone_displayName; + descriptionShort = $STR_ACE_Explosives_cellphone_description; + picture = PATHTOF(Data\UI\Cellphone_UI.paa); + model = "\A3\weapons_F\ammo\mag_univ.p3d"; + ACE_Range = 15000; + ACE_Detonator = 1; + class ItemInfo: ACE_ExplosiveItem { mass = 2; uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d"; diff --git a/addons/explosives/Data/UI/Cellphone_UI.paa b/addons/explosives/Data/UI/Cellphone_UI.paa new file mode 100644 index 0000000000000000000000000000000000000000..38360ee4da26acbb2eb7a66449043e60a5049491 GIT binary patch literal 34032 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%0A&PpcZ=TY-uM>c!6a8ZU25}nEh-SZ$XM1!r4In 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 literal 0 HcmV?d00001 diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp index 8bf463c9f4..5f2264c620 100644 --- a/addons/explosives/config.cpp +++ b/addons/explosives/config.cpp @@ -3,7 +3,7 @@ class CfgPatches { class ADDON { units[] = {}; - weapons[] = {"ACE_Clacker", "ACE_DefusalKit", "ACE_M26_Clacker", "ACE_DeadManSwitch"}; + weapons[] = {"ACE_Clacker", "ACE_DefusalKit", "ACE_M26_Clacker", "ACE_DeadManSwitch", "ACE_Cellphone"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common", "ace_interaction"}; author[] = {"Garth 'L-H' de Wet"}; From 749d068d2df21efe4df9b9236a1177aacb1cae41 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Wed, 4 Feb 2015 02:16:47 +0200 Subject: [PATCH 082/211] Added IED handling (for the player and support for AI). Can dial an IED and it will ring before exploding. --- addons/explosives/CfgACE_Triggers.hpp | 6 + addons/explosives/CfgMagazines.hpp | 29 +++ addons/explosives/CfgVehicles.hpp | 33 +++ .../explosives/Data/Audio/Cellphone_Ring.wss | Bin 0 -> 87338 bytes addons/explosives/Data/Audio/DialTone.wss | Bin 0 -> 88158 bytes .../Data/UI/Cellphone_Background.paa | Bin 0 -> 258205 bytes addons/explosives/ExplosivesUI.hpp | 226 +++++++++++++++++- addons/explosives/XEH_postInit.sqf | 1 + addons/explosives/XEH_preInit.sqf | 6 + .../functions/fnc_addCellphoneIED.sqf | 47 ++++ .../functions/fnc_addToSpeedDial.sqf | 37 +++ addons/explosives/functions/fnc_dialPhone.sqf | 68 ++++++ .../functions/fnc_getSpeedDialExplosive.sqf | 28 +++ .../functions/fnc_removeFromSpeedDial.sqf | 26 ++ .../explosives/functions/fnc_setSpeedDial.sqf | 28 +++ 15 files changed, 529 insertions(+), 6 deletions(-) create mode 100644 addons/explosives/Data/Audio/Cellphone_Ring.wss create mode 100644 addons/explosives/Data/Audio/DialTone.wss create mode 100644 addons/explosives/Data/UI/Cellphone_Background.paa create mode 100644 addons/explosives/functions/fnc_addCellphoneIED.sqf create mode 100644 addons/explosives/functions/fnc_addToSpeedDial.sqf create mode 100644 addons/explosives/functions/fnc_dialPhone.sqf create mode 100644 addons/explosives/functions/fnc_getSpeedDialExplosive.sqf create mode 100644 addons/explosives/functions/fnc_removeFromSpeedDial.sqf create mode 100644 addons/explosives/functions/fnc_setSpeedDial.sqf diff --git a/addons/explosives/CfgACE_Triggers.hpp b/addons/explosives/CfgACE_Triggers.hpp index 1b686d6092..789786bb4f 100644 --- a/addons/explosives/CfgACE_Triggers.hpp +++ b/addons/explosives/CfgACE_Triggers.hpp @@ -24,6 +24,12 @@ class CfgACE_Triggers { picture = PATHTOF(Data\UI\DeadmanSwitch.paa); requires[] = {"ACE_DeadManSwitch"}; }; + class Cellphone:Command { + displayName = $STR_ACE_Explosives_cellphone_displayName; + picture = PATHTOF(Data\UI\Cellphone_UI.paa); + onPlace = QUOTE(_this call FUNC(addCellphoneIED);false); + requires[] = {"ACE_Cellphone"}; + }; class PressurePlate { displayName = $STR_ACE_Explosives_PressurePlate; picture = PATHTOF(Data\UI\PressurePlate.paa); diff --git a/addons/explosives/CfgMagazines.hpp b/addons/explosives/CfgMagazines.hpp index 7cc1c8a8bd..51c85e607f 100644 --- a/addons/explosives/CfgMagazines.hpp +++ b/addons/explosives/CfgMagazines.hpp @@ -95,4 +95,33 @@ class CfgMagazines { }; }; }; + + class IEDUrbanBig_Remote_Mag: DemoCharge_Remote_Mag { + ACE_SetupObject = "ACE_Explosives_Place_IEDUrbanBig"; + class ACE_Triggers { + SupportedTriggers[] = {"Command","DeadmanSwitch", "Cellphone"}; + class Command { + FuseTime = 0.5; + }; + class DeadmanSwitch:Command{}; + class Cellphone:Command{}; + }; + }; + class IEDLandBig_Remote_Mag: IEDUrbanBig_Remote_Mag{ + ACE_SetupObject = "ACE_Explosives_Place_IEDLandBig"; + }; + class IEDUrbanSmall_Remote_Mag: DemoCharge_Remote_Mag { + ACE_SetupObject = "ACE_Explosives_Place_IEDUrbanSmall"; + class ACE_Triggers { + SupportedTriggers[] = {"Command","DeadmanSwitch", "Cellphone"}; + class Command { + FuseTime = 0.5; + }; + class DeadmanSwitch:Command{}; + class Cellphone:Command{}; + }; + }; + class IEDLandSmall_Remote_Mag: IEDUrbanSmall_Remote_Mag { + ACE_SetupObject = "ACE_Explosives_Place_IEDLandSmall"; + }; }; diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index 73477ddce5..983bc0972a 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -49,6 +49,15 @@ class CfgVehicles { priority = 0.8; hotkey = "F"; }; + class ACE_Cellphone { + displayName = $STR_ACE_Explosives_cellphone_displayName; + condition = "('ACE_Cellphone' in (items ace_player))"; + statement = "closeDialog 0;createDialog 'Rsc_ACE_PhoneInterface';"; + exceptions[] = {"ACE_Interaction_isNotSwimming"}; + showDisabled = 0; + icon = PATHTOF(Data\UI\Cellphone_UI.paa); + priority = 0.8; + }; }; }; }; @@ -105,6 +114,27 @@ class CfgVehicles { model = "\A3\Weapons_F\Explosives\mine_SLAM_directional"; }; + // IEDs + class ACE_Explosives_Place_IEDUrbanBig:ACE_Explosives_Place { + displayName = "IED Urban Big"; + model = "\A3\Weapons_F\Explosives\IED_urban_big"; + }; + + class ACE_Explosives_Place_IEDLandBig:ACE_Explosives_Place { + displayName = "IED Land Big"; + model = "\A3\Weapons_F\Explosives\IED_land_big"; + }; + + class ACE_Explosives_Place_IEDUrbanSmall:ACE_Explosives_Place { + displayName = "IED Urban Small"; + model = "\A3\Weapons_F\Explosives\IED_urban_small"; + }; + + class ACE_Explosives_Place_IEDLandSmall:ACE_Explosives_Place { + displayName = "IED Land Small"; + model = "\A3\Weapons_F\Explosives\IED_land_small"; + }; + class NATO_Box_Base; class EAST_Box_Base; class IND_Box_Base; @@ -133,6 +163,7 @@ class CfgVehicles { MACRO_ADDITEM(ACE_M26_Clacker,6) MACRO_ADDITEM(ACE_DefusalKit,12) MACRO_ADDITEM(ACE_Deadmanswitch,2) + MACRO_ADDITEM(ACE_Cellphone,3) }; }; @@ -142,6 +173,7 @@ class CfgVehicles { MACRO_ADDITEM(ACE_M26_Clacker,2) MACRO_ADDITEM(ACE_DefusalKit,2) MACRO_ADDITEM(ACE_Deadmanswitch,1) + MACRO_ADDITEM(ACE_Cellphone,2) }; }; @@ -151,6 +183,7 @@ class CfgVehicles { MACRO_ADDITEM(ACE_M26_Clacker,6) MACRO_ADDITEM(ACE_DefusalKit,12) MACRO_ADDITEM(ACE_Deadmanswitch,6) + MACRO_ADDITEM(ACE_Cellphone,10) }; }; diff --git a/addons/explosives/Data/Audio/Cellphone_Ring.wss b/addons/explosives/Data/Audio/Cellphone_Ring.wss new file mode 100644 index 0000000000000000000000000000000000000000..bafdf7596a9ca9e26d14a5daba6935887f79b505 GIT binary patch literal 87338 zcmeI5`F~SY-p7*`x}>ypUnpIZwnG&dq`MO(q;QA8;Wpr|wAS{z|?oY4W1Di)t{ zPzM;P&Ipe$#|@=L6lYw}BG6XIP0}?@+oT)a(sZLVOdk7kd?_SB@-E&5Tb}2t2`a5H|8GUgLUz5zph-QTEE|Ji?FR7k@dtYk7q>gE{r5|C)dnz_VIJa&j_z4 zo)KLo`aAL6@kl%)`a9R7^%Or%@iQVL$=&gDm-2Hb&%J<~`v!hSc;$tW!YbisG=Jsk zNV=Y6FVT^B?)Y~KE01>_e(rQe^l6e^m&?tatP;;1_Q(_W(LAlfARlj?}RZLXg?c`seBV&SbQtf%;z zWY>A_dAvWZ+WBl7+vJA~?pyqAcI>7K`X={R~TlJ&$R=kH|lrWM|wbmhrA8SkZY z3oj_gO6I3!Kcwcw z-yiDq>Kr@V6JkBlu*2xkKUinzmPnY`kCsK~4rZ^*7?Bq(NeB#>`E;nd^S0(&>zdfh z?1xR0Lxr*o`CZvV%s%xmN?T$?WU+6q%ijOnwolBnrg8mN)2_C0S6cW9)ssxC_Qqw2 zsZYn{hI}k7zx;Lg_Evd=pV6OvtiGc6KCg(l(kz88CHrjp9rBlB`T|a0eRELKS!Ow1 zdx+g)@NG^SeS1-bqC5L%#!szN$`b=4mixGzLw!HkBFy_to%-aO8#-1_=SAAn%a{^v zdFI}f!%HKAH%N*{&6f-<@78~2xRHIO;Y|OL1^w}VRHx`pX_)l)li!R!CfhN+)3LH6 z%92yNnY9>px2zwl3d&C{((Y$UvW})bnlKaQSn%!mRBw>2q%qXgs(016JKwl=Yjj9v z7o*ZDGP@P0W9>l;+?z&byRupW>(?5dXHPa72Ks%DCFX0QbvJANsTxXpC#uLlWopO3 zp7vLpzN<-NpD_Ac-yU}cpGdQ6*D%s7-?Ss~{h>#^U%C>|`?%HB@R6}o-(K5tsd+YU zN%As3U1fG@MuEb*lJRDCF58}37srO&<8{ZFqNk#@s3F%lrEjaN>`9ZR zE=|me*FBgm%lL=f8MAlMW7lGa9_^gAxNA?b3d1@}z{s-!lk)enEzF(jmzBkd2O?U1 zN++J~4{LkaeAZ;wpD}H0kDg*8)~5f3IjJ4XtV@x`9Sfe3L|tCp9oK5BHyh&E(fXhI zUhtO2%haj5AU#odM!C*u^?)^6Yww^XFKXP8w;angj}bBZhO{m#0QQ`}RW;_{K=Tq4Ci zh!l6Ys~ss$VfZ^+Xl_P|+ne-1nn0ZwQrsb=xGKM5PH{O%abZYtjhx~hRt6!({m3hB z0x7O^PH|i6jNMXRaR;*R;}n<3EAIB@f;tO3h7{)-T89*OH&R@Qx>{*Xj6{mdL5h2Z zSKK3}-ECJ~%J6d46O5Hp+%`^eWk_+)v?lY4JJWlwS9sjJbBfy&(~A`M7E)X}QrtnL zxP>Cc`69(7CoYOuffP5)DeiSs2U6Vfj+>C;29V-jM~Ztbr4%XdS4eS}@G44+& z#@&`2hGN`>xfpjdyVRIJ7vr$vHt;bnX8aYTxcM<|l2_c?xfs{pd=bSstT-IwUPCc1 zkc)9xan-!yaE!x>Gh4spW1Nap+=}=IxEO~O_hrL&;{b|rSaDh|#!k8$^MF-|@geOQrus;7SM>c6#W+8txM5L@^Bz2k zV%$qyj5{NWan&fsokub5?S&hhzwdj@W@_AE8qy!HS=qVmYH(Co#+}SSc0lG?#o<`l z;&S)?(W36XtvedjrXJ%!(;mm|3nSywG8;89Sv_gv2^S)I{9d2FY3NYbf3;NB-&^xQ zeNVg6`9a{Nq}XLT^_Gke6r-`V!F#+b<_W<}>l)P|l?x%S6q;3?ntGTB{s0?)$^lDZi*?%-__%N%M^k1mW9+`zZTOdE(1?wNKC20)-$aadN`NCvovv!;=^g3PDHW--*xc`1B;4 z-Gmbvr4WQykW-%cgiB9k;*%q#I@NPzgPukSDH4bQ9VwiJ2`!;#H%xUXEuk~QXCm>L zozf@Dl*rtLlMW#UrN!F869daHdw1n(B&%2Ac z3OP9n*POqX=($x)Hs~{=E01?FUC;UKi_RUdJl=KUy+ohUe6m5gAGs#pA^&OD5w0RU zcY#+>{v-aKc+XSr=gE}FP9_vWINb{j1ehmf3-k>J%oFcA`c9_Wq;CegN+cq9(q>Qo zgZC$SGYIcGu{H@)0_I6rqCm8Oc>?nU<_XLbm?tn#V4lD{$yWwop1?eTc>?nU<_XLb zn5V!efq7y&D&{J{Jb`(7G9~gg1bm*9PlC_W(-De!ujiKw>aeAbQ1E%;@1*2SOMQvL zS4H||P4J3~N77yA=>#TU83b23Fi&8fz&wF@0`mms3Ct6iCw5kY&l7x};PV8ZC-^+E z`$)(k#eP5Vd4kVV$e#t~3Ct6iCuK^+FHJZVrBA>-fq4=>Dfszm-U0QWi=FCZF9GwU zStL|PLWK&*ZHL@;$ZZ$${vfvq)bk{He^Ad8>UlyBBcbOGt#(VZjD`BWo-RIIMV8ct zC9DQ~p5XKJ+#$d`X~Y1t%f-F_JROXrMg-)xU*F-K<4uPqe`2NumtqRFK<_z2Y_<_&je(xSnLFQ{{PzOFw@OhR-D*SA&B0Kmz!RHA+&+P+y+QH}fg10mte4gO*1fM7PJV#?| zgZFr!c7o3ne4gO*#3x7GX9|3tw3|%71ALy~^P~I#y2SMFR5#=2=+3%dmlsY6Rv9%oCXBX#G!pz&w9Q zT@eq=6PPD3Phg&Q2l3Sa^91Gz%oFq8TM|fhR!nt(d6N3Qxa%?GwgdA7=83Z&K1Y=b z@S6eqx{cKe-ff7p^@+E+iX+3g`oZVd^0 z-aKHQz&wF@0`tsqlD`>*xQT07tU>So#VtjpXtsP?}<*`=9ffO!s#6kXcg0?ZSb=TOq&s3QNADPW$!Jb`)cnBM6C z=2_X3CI#jR%oCWWaCXB~2YMJmZaerq#l4|vJ~A**V4lD{fq4S+r1c!I`<>J-rZr*m z`5Xb-k&5_xapea*^4!9U32o{`-A;`|wK_R8+Fu6D)1Q5;zM}U&uZXzPEQKy5`)v9h z@|R=!0#09jb5PP*W;tDZh}~iU=2@9tngPu7aU0vX#$?t1xhA^v(X07UdonICo3&46 zGAZdxix(ev1M_^uw7cz!3z#P`&$w1wy~Pm60`mms3Cwd+-&P0Ab4$ht3SgeVJb`)Q zTtc^-)Z&ABo{-z_*&7;|C)D$#x!Axwfq4S+1m<~bT@!nm{jh0rs8E(6zbku)*{A+R zX-kZVEcVTH+53On_KA7cG_K!j+SNAhN((=sdXj17GHsuZ%MJNhT7LQK?(MDe20tS( zPpftfBhB(nI}%U2NC)&jZgn+$WbD+p*S1`0p3Pg5yv$Dr%yXmjxjtZ?uAy~Ead#ud zm8h$g*2GApxE!RoXL!W{^NiBntof%3m?tpLFP;9Ozg8}0fO!J*1m+pLOs59siQNdm zJb`%v^Tf6Ih>H*Ed3yGpfqI_Q%|*DMkiARl5cWAL__~gA{VDYAfMoB|y+nLpbR^F6 z#T6h)o-h8&aD9gw=-Uo`+r^bXuiqhJ4>lf2_a}LSg`kSW`3X_sRKxx?u1~$5zX(+UMC) zLq&7$<>P^SQ&if|n5ry$+PQ?1@B<5hd5)p448S~-k>Y-g9SHJvZys^aDefy?aRnM+ zo->lD%d5J9c>?of(%(;hEBbR8Fi&8fz&tBahXr7sxGOg>Phg(FJV`A+>Twlw74Uh2 z&l7x}xZ(#P*wDiW>Um-^OsX71Zaerqfq6b`K5Me;&zLs0M^7;kYt#S2oYanG)}=_} zjs;@^vzj9?W>KcCOr5G5((FnfOZJTc=DEY@&~K?Tc1tBp>_^KYbO*BU%NUUtElCUv znE7<5y7Tttf;tNe%oBfQ0Oq-^KdkK`PH`2cO}ygvGhb=1WY!|Zea0ycn5Wqa%oCWW zqNk#@s3Fe?%oCU=Fwb1nQ5TpeCR)Hefq4S+EJ%pv+;OBUx6nnJ`sl#t8N&D4CVoHs z{;c48ZIgEh>19Jbu5>*GevaLS^GOl$B}Ru=%7lsvxsAkaNU9);eTjl^Hka>@LmZ6Q zVN2&h^~UqMkdn$GUKL@mDb6n!r4x!@=i?_dIcf9Ql)=U8b^i1kDRFwcV2ZQA|JzO18ZTN7r( z91H$EKG_>&D`^Zfwdh?nlCC$dQD-$UPhg&fW{V@x@3o|(nn0aY^MLA5QdCs6U-6{F zE^lAaw6i9R{l*B)^OOddCos>RcBS)!z)MNMJb`%v^Tcccn5WQ(f-n&3b;Pu!pQGY5 z-xG5cOiM7;AzVf1a*j{9ICGhtaLGv04-1o`0@T|AQyp?m&tAs(nk0i2=S@>qgGmuR zU(;-8N?@2dszWIR?T+P0Rc7=sI^=oP>e;m($5l6MWgYa!o=%zDE>dk>`ge*x zY7rysa^4UPI14&x!)mTwM^#5;xr!`CbrTuR#udx03nk%t9t^r*8)H)IuT_K`H4j#x+7UK`bv!=tVcpI%jyHzA~$X_e~Iey@uy~_j0Qh$PYt7weZEI|(a4SDig z;|{*?T79GvSP9R7sjl&kx}pivxyFk1}q^`T_s|bU-;v)97SWifKT8NM_2>yVFA8TH1##I zm9hAi<^J?2c6IWE6V0%3SPH9f$&z0}AL)mQfVJ zncU|hPbYbT5!nU}(b-vWhZXu9sFV?(B;Vwmg6C!Q<c-_QWA;&IptZZH-6HH(85wklHKKqOoi8`a<7rhI{M-MV7tN|&zSLYBf_ z_=SCnAW@+xXbgZ8BZ+5FV-7imnD!9s)Hg_HmhzFY7saMFd6F@Zgmx}6&sFA-6FlT7 zwUKO2)N1T${lrrI04Ep$ZfF2**2WF7vZAL}qit3T_47d)U_ zAimo~A4WJT8(!ATjW4i;3g#kD@Blw$1M$W=5Jop*N3B9zItWDv)Vj;N9wHUqQGc;U z*~FagGNNZ!TwoWRz-J&!2Y{c*=wt%0z_&yyD}uesgJpDbNYLMKO=E~2i&{?)K(w}Y z>EkLZY3*_J&fv>=&9B&lugM|U$x(OF)T8St=&M%P40q`^@D9iE0s1?94D)%?FJl8* z5{dj~96$J$$kFbU-ju!wX?P8+k)Rn1zG;t!4`DU22o{VZui;<10OB0)!a(%(kTY&w zt2nw~Vuskk3be;E@*4<~X|zjJe9;|N(Vb%rW64bXkY&gz+P8@^f`R5Se5ecr71q%) zyu+`cp#3ub>ge(gvtgL#D=@$Z+T*e!cEd0%SFTf~O_{6Rq?6$#y3oa=74q>dufzn= zotgkE@g`$9k6$#Z)Qha$*|is82SmTaTAHu<-CeY2rvif5f)CWMj3e*zml#t2kr}n$ z(eB+bp4BuD;|cA0v6k6naoscE5%ra_TJZ%FMv;^7E$_6pgOK(f{ADd7RpVSc1+C9y zDLh1nfi&_Vbr#NmFPfpDlbp9?=YfS}GHllBi#PEB_%l*1mccRt&r!4RBxlL0WKviP z+Qf>38?41BB3J#5k9n{bGE^Q6A{S`95o?ZG0VA-R3`M3!vU-$!tg%O>XLaQgzGq!n z&5j9+HS1_U)X`-txI277exM@)LynTi&|B*&KGH};W{Ys(l04C|+yAmCD?0e1(Z*bI zKh*||zz{9ekIHr|k;8J1>PbBWBVvaicHv|gcI4ziuyORB#0s*oLDwTo5y^CldYu3S zwPxaX@(HVnosgzA79QeTEXA+tEA+!M zY~nl!=?FBYiYg;GgYWSL^_3U_VX#LUT`pQNyS6Hd1@!~bnk~I{17qhRjFX`6Gl_7w3pU;LoT4+vR~JJ zgxU+kv0OV@k;)8mBwC^k*l7k-R>5SA8%AnY)3^sKaxkbXGVD5) z$LeeCP?1XXup$=VZ~V?tbkl6mT}DtN@ju5EMVMxjTtl6L{kj7{5*C3BEOlJ3U@Q+} z9G%&pVIeZ{FnD5xK8Pnrtf>FU3wWFJS{u+s?L=EVs(FM+)$1Ctfw8O#BV9#z>XPyf zu4{!rE_oddI7Xf$$084ev6%T_3s=yaEC;_h!}>6c7`-HC=z)QiiuUUu1p8P~>nTSZv5h@k!MY;z@xF&V$!W@Ntsh`U&DW9i$oLfvg3Py2MNQOgx6`ZW;5Gq4pD+1Y8XCtGM%fyay_ zigZ_`y9^i)R&@00GwLz8s}J-lE!x2rMVTmLpUZmqQF}A|P9|^@iRgkfEay0TMQp>v zZC&`{SB-5Lz!{{|Whgex(cVk1Cn^{9S^!MYJsU`1Ez2G8!4vw9{Hqz5bJ#;3Vl|k}YwROGkdLq*323aixXC-U z2yJ*es-ngV^8Y^~i2{uzw6{wHXg@?BuDKZ`SOa|>D6>n^tEDhmb2MwhbhxH{1g|yg zIPOBQm%%pnTzJsoIR|6l7`owEdUVhSKaFD0gtuT00^qLxg=KhHGZQ@to(C!9VGH?H zwIk1>zdnf#;)p(o(d^7T#Ws$CHCW*TDky(h$I%BXVpxP${01prY33w)$(;26J-V_J zXkZf-QU$>k&apNl<#d+}uvQJQ6HS;2a*SlBNpzs4Rw?Yok1(Enf``at&!|0zdsj9g zLxKa$(>*epA`gbaXG5wHdlMcGO?XEgav+L#@GjnF45)%39z$c+f|p!TqJDb_KVTBb zC>px+pq3DMx|8G#x*`w%Xt$xUjLl?0q_SJ%eh~MDh(S7aGCMXCMd(eelfe{M{LCw5 z0VAk9coqqGO!Et`@iJLZZDyYK)z}4NosAw{YoiO1sNB%#q%JXreJ8sbSc4AOha_0Q z5!j5sv6HBF?04BQV+|`2lUlLZi*N+K=#>C;LKD!^JqD80LXd+~stXaM{?@Tz!@Vf* zWG{vs?Jigg+*ld5@xDWFR(}wi*xFs5tgOHJ>)y4p#yFnSJVDmdtWRFS7C55T!yRJY z)-~6q3ms(|$Iu*`$ZBL4-8qA*_PU-T2gJ~uItG)`oOLy-!5KTjQhQ&GL3ChE7>*}2 z8_3(PSK4PH3ofB4Y`{(s)9BDEAROU1wzBUBGcpZ`f}855I-no9g)w*y4*$Q`@s#qF zXeKiugE&VrYhbIcL$3i3V24_W96X6uuoa!TzJ_LuL4sy`^``E6xXz(hX5c0K!FTkM zlIlaO_y+jvq!Ry+EDi)x?5h@3@l{%puL~F-AQ5Xu+ut=i{ zB+y;)(<^>@?}YkH%yJI2@E-PQzS2AfBQ*o*Z+NR$*zucIBp3+}%)?^k9Gt~&^``oP z@$i`3N+eTPsb{=%a723v)>S0*KBi_fG(>{tF(k0A=0~&uQN14DVfB*k7hTDCpvi9} z>TU;AsLgUfq-eZ>Hscj(<(=MN)vQO(09~|(WB3gwdvxhf4Wtqf^{j?3d4-43Tca3V z^(H@BuCLLfF!bY4eegol{vZ>EQKM?f;UIO44zcUNzSfp71 zT@@cjFk45uxA(N$z(c~SM>k7AE0B`>oIz#RXbtr?CI&0m#m94P*ab>3hEBp zz!<$7qx(s&dT9kg3)LE)b(bd*f;Y)8;6kqmn>ng1Q;T^Iqgd19fAIsp+Hq>VQ^ui# zR%~)RcNow~qY~fY9neE_d_txGD>zO}qCJ&|>I&ML9k7-vgEsINzv;Rfn@9smwOVI` zk$Mvin2isx4b1QiOvEc#Lx0U@-t;ab#}!#H;mMks-?1C-V<%OSJqc&EV#?4i%UDOT z)C`~%k=+TO0%BFN92{U}y}RYvWdSTF^7I}h(S zAPYb0t_=jx9tE*LYZsZ% zK7$e3W1$J2;!Y%1QlYU4%@~V!;WScNP4Pu4dchkcd3JGzvvg6c#44~BNkjoWKqE(X zXTL){;6ZRzcB2_H(Tzxlso1A6!&Oi;#9mf~)vjIZXpSZtz*uuFBYCCSMsp-~a2<;L zr4gi&O-yLE(oRJL*&=vM|SWRX9oSBHCRK|pobv`YL*2dGKq2m*_ziiXDDi#<%kc?!&mLl zbPs}Vnyu-I93COZ(FbFhUQqyj9_Xr>f#1XnI%(!0N02L2AEI8bZ?lr4cZ3tf3s3xp z7x4?M#Vgb}d<1K?hsHjT(0!=hfg?&lL8}}d)~j#WieA{r`YKQLe$78V8`$F6>5UjY@K;gZZFC)^t<^UK4Yy&kTHwHFyWS$&xVB(Yp{4+Ig2ROE?(`Vsv!~fs!x>7nmLFtJVGTUN~rk6n%bd0&|E=|MQ4p> zJ|hOZ*{#45Jfzu9S%trO&#G9Dmb~Xl#lt@A(i~3=X$E2ht00|hik9fZbyLRjP*#JP zb}mE$t2tPKB)o;*PLkcI6ps9)tVc)ICrZhE@I&hxY{nk$ukfRF3!7o0R%#uAR%pmE zq`(@GgpI@?(FtN8i7oJ&>dAZ7VjqJiSb?Y_8|WC7hb*nf*v1_n_S1T|6zSR(DCVrg z-dOXEA`2Q=&j`3kcSLn0Us8+k4Y}IEGq}WSG{XxH_9_R^7;W$wuQfAZF+NlzHRiF& z(I1mnc@Rx%3wauC(2BZFRtA40fhAc7|B_umO|K}xPtKCP6kRd}k%Dya163aA!fUJ} z5?Ptdp#6$gMvV*nuK5TFs0SFjJ;$$wZx%)S< zwL^xZpso`2jw>sGp2iWr(u@H^wNA1E^^_gE<_9V}zEh--Kn;M+Tno_pLG4il!2l$b zF|3UTVY#w^v+5Ia0^TORn2T>!2K}jKZ>&)nih#0?xBxxRt~i5d*ra#xkft%pD{LX3 zpgpUQ71Vli3DJgc&`EP6(G0FcDMvL9kpw$cE4)MP<&HUCCbAVBDjrCpi{@|ckg^Jz z@SC+^JAD9GNx(%tMD&u2xz?gl0q=MPLS%Zlh6dOGrg)Bez%lT^>u9W*2Q;vl-`v5{ zY=?cyF|^T+juq5Humaz)I|W;X2jiq+0w|K0#Skpu1_mq{f25+H_d)J4Tz$hU z=tn)rBD~Ey*w1WYOSy~nM7x)~Cj&AANoda9Cv4I&cw6f#HlQEbimqC{PxKH+tPBct zv)Z9J`b9e7?lK11+6{8GsZG{}Q*Z_e8b6xH6l-!nY=#A3%Y3p1XVtHYwR+82)<8o? z)pq0!_@K66XHUTzOGQu@LTF4pgA!E=?7+gY1LYOiQCGnnHiNKU`_hV!KeaQ#^Y}v1 zWOuJwQIRLZfe~H;HT1$OoTcle9xlzm zlU$*lJBTqFYgs`*@ddky23EuWAguQukp~)jJxo1}T+PLd$7|#y(BwQ%G7grIm9%?A zB8Xrqyw&{2en(EoJSv{GYcuj zwC4yjv^ypS=*1WfyA)~7YmTmvoUIW6*LhG$G=4Qo@dNzVYav(-miU#uIiLFmBh{O; znq}Z1>~ie*$Pq*?m}-@PDbz*vEm}}-@f&p!Z8Z|%mAkA%2A~S^9@Y|9=nG4b%`E(- z=Rg!q@hbKZTgpE?#W}t5t;p*=2W7V-hPB2b4^5H4d}d*zvWwVKwrU(`-C%E|_sGx? z-w_#%L>KS@4SGACn%VSQBYIy6ThLpdnx)}C7BE_S23Vk-4F147`e`KxyI~7hzz6VD zzi4OeuuWrvjIKUGBk~Ayl_%s}jS#R!Ydi+8K%Krp`yFJExyj4;h&!1)96b(Qi0)RX zF?bOFX>9T-J8VEhq7C*kPp>c&4SY))ufb?o%oE$tMB|FTNK>zCt|TwvH<$!gWCko_ z6fzu)#79InI|7wY4uh+TAfwrXv8O_UV+}Z|>*HZ8!mnV-2v%3N@_7cX9%+V0HzEgb zq5*ydC**234fbe^_OP9IoTZE5H8VgRIcToeDI%*G!JsL&Y z(J;nZoC{X_+jrFhtFKb7}EV8X)1a6vp!39*9t>cwJdY3~rrl;3vhbgd{O3oc6 z-f1pI0@iDfjcjmWRkT5SbOL3VqA>$<*n&13(Om=M7!8JC$_TV3_b^lSMxtg@wF{P! z8FV*sd9rxFN<~hUqOg8&ggM;rhA~jJ*>YAk%3cchp~y27mn=J(BfX70OoXp?AHgR<(NNdGYxsuD1Q!{r z5rB8lK;swuK!=RW-ca{D)Ijit2kLcZfiND?SW!K-B4eAzxpoI|$+17?9Q8salEbKu zLaSIob&L5I)r9=R=?S#b(fjS1#~1o z;00_Y$FMWRTVRK5#X%VaTH5z$48sLS)>i~MqIN2Wkwflb4b@k#n`lfBbGqBq=!U`g z7;Et?8AnI54~L_SV+}H^Rxa&9^coB2@jUbOj;D4V%3QifzSXV~f}a?tb(+t*;#JL? zLWtgexfXV;gbzvQ1hVS{=j0-Y{d0@a_0Kp z$dp7Gt0PDAgmRj3j_Ob3=xmrv=5}xxoxzfLM!MDn-TfkuoCObwG^!ha$C=@qY_S|Cvl+pLUWr- z*Z)kyADkCuWQ2Yz9SKOoZuI0hv4!5mHoO8OIIDFQzo?&B3A@l#GbMPz9^Ka{f*)cMU*_>63_1cK;CaF_;$BTT%%AiX(M5bX!iG45}>ovacwfYxd5Wm<0i}_9_ z8J1(3vzV`Wu&paQ;va0#7^fT4dW#pqU%zFk%qExdxlVdlJcd^IL^%d-?5}vDquPzF zS|hl!f&Lufd&{tZY)33$DTt#BqjhJ5To|tTj1|ERuW>Dhd;&joT{475JgA}@Poj*R z${LKN*C0AM3mY^SsvNCCa0}0}4s64_;0X)(Ca(SmBaR_iE3bC08Um$BSo}|B z*B(nFNxNsg4o)S7XJ`k5uovx=lbY}JJ8xi(X0U)N4Myk(ThNXSru$LWB!la|L8f%g zp$bu%$g!-!)k09@6NBKY(c$O}U<5v91te&EfCl$y;0Snl$vYwgi$NNG=w1MQIErLu zX-?xEc2EtuOT{&HjW*>mm~bTozKE4%||sK(e&jA_KcS$wTI6wR?hb2of~ z_izH%qp2e@kqvT+E;H~JxDqGuR(VNIUf zAIHcAyhEl&9rIWb&*53+C$ETNGASBhm--uv&`jfpdDJwR#CR-HCgTbGq3a+4#Ni50 zG-OxDrwX(O07I%T_{%RD!w;xAya)gJ1PZ-4pU_ZlIUEkrZf-u@*1uH4@KwY~@&S`&6 zKMzy6AEta{b-b%ljz4uJkk)u2OY&WBvKf6h8ZlSL5o5|2bY&fl5S58Nn(dUg=#E_W zaoShlU+p}IGkk_@IHJ)`gz!xe*3q%7k7vj|WOI%yC*cWQHy(yr%+efyOpOcHfLVBk z(bPfmv$98XG|{4Yhjo}qCSdQt{#D1TM0|_RSdMmh8=N!>;EGmLcCUOkhYlMbfq~wY zLY_t|9)-8cMa|MgJ>4)Y!{;zf?VyWbHLZHOyC9EfPfkC>+8SSItoNw({scOJ@gKCf9)+n^n8bhYR zYDb?6XZ4#w8ozj#SRh|It_z@nG91LnIA8t;*+qC-OCA5Ks#3&YlEOlBlsP-t} z#{X!5_gIDP@PzyhGl+F?<1dWG4@g5QqqLhtB686HK2kxbi0oU?K=&+2P%q*?9%~NOYy=LB(4I)E0p3D8{EKFqAIUn%fZf@(|LYVg00)RNw4z2TWAt-diZHW?8d#)OvkH+-wn8_q zVykTQ#J9YMHOe}onwp9XT>%Zy2{e^m$^q;p0}w45%i6zaAFoW-n1kuyjE%603|Oh^7AT9t9kfUht^zt@kxtdGahiz`Izcwqz5K}2yN zk2q{*J>?H_L4=4S-)WBE2oVYch$!tq$g0XJ@+8c|H`;^feS5qJ-|-RrAU4q#Mj(q% zwBaGmz+7(y6S#*r(T=>A z9e#m`W+`lOR9!6PomN;p$ZW=8HI*BWaJ9f;pVlP$06uX@R>G@va%wRs=osY{@re}d zgE8tqn93R)SKs3qq6~fckDi*tu#B9cxtMpLk4L#PL$(7Yo7`2?{{u?DrWGG9Q+3!a z&_{6}R6mu>-i+^C!$ougeYE6<>d1R^(QJULMhw=?Rq6r=) z4%A~{qY{aC{+An_EX;t7n*GQHP_$*?za_ZvWZ-hdsdlp&Yr(zOS>Tb4O=R=XafLopJVM_K)qe>_6BS$k^`o zOP$9$x7i=H|6-3fuQBg5pE3i@VELJAj+AGe{crmqbCCJ4xj?9zY!;ZC%n!^-(7d?Im_+^9B1$_SN4iU z?Ah}3r~Rbe*L===O?186bTh}9Q_X+PW#(Gb$DC-+HjC`urmN{<-fR9M+LoEOTGv}m zW|FnoT4UXAeQ$kg-E0lATr6j6x>aH>wWb*5=6~i7W|KMIinB7!B6F;DqcvQ{{9)Fa z-K=5OE_qDhE( zv-z?dxkE<1Epi^Ud<2WD=5}j}^`iB+^_=yV^}Fai+_G5-#u3r+4bko{>o;q)wcL8k zNU+vhKDM`whph!hw2^ORna$P?E5c~9wpeGaTx*DNR2T~X<0K|}8VAH1tF4!SkzeJ5vz7=Ib1MxHUv z2$hl78h*x7W3;i(m~NY6J0xR&F&;M-7$=Q8j4Q?;Mz#@YdtX+1Rq~IovCTHmNH=aW znv7y&xv{}mZ{!<&Y%PYHE!uXgt=ZUQ`$F`1*tXXA-uTDZF8Y6I++aK-5$++M?C)lr zvl_)43yj;0>*U=XMxaFcowDNh)(qn-Ik!?W+H51ixKrj;8s8d^3Bp^gU#xob2FZXU zMaH*+)nV%$Yp(UI^`!XXA@Np<_+p^3znq}N-8)DpQd|;io{Ef5L z*YX{WSkWrY8X-C8y!E;fZj877k$d;o3xXBGgTJjk) zV~=<{UOaV+5o|nRR2%z^0k$*70^1DRc-wYcf^DWP*4D>1+Lmam6`a2lUMw+Qlb`!! z^nD_Cmb|x&N91|g@U>MM@5q0gtq{E}SuM#JZcH|g$~rd*p7$GXi^Wq#O1V*EY?Ap~ zM91TzLzxvKF;ZncAeqK9 zSYrMSiF{YF|5?dQ30Aq;%j#_{vPN11t#&ijO17HiXqNSu(O=HYGXAo@vFmG{d9&%J`q>&95IdZT!`r}3z;q1bv{ z)_Gm><2%-WR;9I5Di8VvNZlSUempC2^^QdICW)Y5kF}Aj}<9MjS)+?i+`tEURHxS-O3YBjgmFKm5e)C^1wdh1;OV}W1#W6HD2ZiTT#|| z)7y%$KC>1}79V0}+qc@2?L*Bu=8NWd^O*gjz1qG+a+PV%H51KB$kPrb?ClOEN~Qm1eCo>a1vEp7Dd^o+X0qjk3ll>pscpRpvU8@{M)Mde8b; zGT}e+U#dnKXRK0@`LSG!Yqj=UEfPIDWTi#os};s<;mcr&>Pyxz$)=6g^~OH&T86B> z$GXY*(mG-NZv8BC(uXL`IdAE-rT%I=1ZRVN-X?Ts!FwFi;!+;a0v>zxC$NW~XU4o6Ua0ip8RdueC(#&Ew*Q zr^S2DBH!0YGun(7Wt}@EhP{jlwo{_hAnDZtrN(#|Db_ber|D@ew6#cF_LotWf=Mr9 zgW&$1RGeq6Gs5Z5&6DOK^PKs;*+*>u!CWc${3vyHwYgRB+F<5M-7YadG4}~pN2DJZ zD5%esh*~HNcv#SV%ZPM-hX{HKC@00xUn%J~K82*QJ z6(5=FWp0c4nQ-C(scLUoPLiLSWz7P!LfG=H`Ljg%QMn)G<<}8f5-uS+A$WX`aOScJXV0c(cHI z+VGYUWW1*&hpd%u#6@all=#6{YILkr@dHvJKNe4x30FUs-1vlWKTfpRA^p6YL{EoR zBYX*vz2OL{Da+;44^t#RY?CVZfyBt0(p@D<`FZWvZEKf7iaz zo^NlqSJ~%FW&K)qP`m6i%?f*n z`KIKAD5(XHm|w|^Z|qN-6C@LiGo8%g<`w%f`(O5S`%MzldG=HGy|OFXW$$jTx8GvV zuzxRmyz%xR`<-HWknH$c>;bZW+h#5{=Ls@jnD?0V67#*Sz2-Xe2FYYa(ly*8`viZ9 z;V`MoF2bA`VfW(_3j-w1@RT06QaYu4si5yz$EEvPDpfK> zxI0_=#v@Ye%7xz_3vQDwQ#gOKyi1U}JX+*GDHU~vRO9th9}^||##?=4-RlI~5Xr7T z3BoPH>YvQ(tX{(2My>Kd%uym z-6!47QRzTEq;p>;{p<=E^PW*Bxn+T^*!G@nz3pDxm$s*E`>i752iZLgGQO6awOsPu z647Rk@GRC^A-*q?+~qEjx7R4M&2sK^KI*c;?GcZL?s+}pdOh4HxL;KNumLX&*gl}B z|MtF5_5Qu5clS43-*nn(zH>FNb(NWKzn=1{?{;o*%aP0XwD0R&W8CSy*kzL2R`&&-US6%eJ^Qx} zY8dQGbv(x%9t&~e;o9A--|tdcRg?1)6uKd?SggoxzoR$7<+7d&7wnFD!-|C zyku@DB3aF6TW+xPZLIhVRG{b+W2{<}qs z%hvDfe=zRw+~dbibU*Fi;MUat!mP{g?IoQt#tqI(U9Wm9>G@6X`}?I2{9y2N!(2zr z8uPvP^FFbYF8Yp}^1j~z|96A_2)#Sv_o!~MTjQGIy%RGM!;{t~?M@muy(8(Rq_c_X z3CrVuh^dQwD6Bas$G_*)1(QaM|6uf8!~Pst+hr8zm)jjn{ z%H@Qm-)s`iJo?J+N6LLfmy+qLl;Lp7WGr~)tLCW!|@jr z$`S`9#U{liO;7wZ@vVg7_{ZYc#NHh9Q)KT5*HHJsb$&IIei{GSXushD2bK5xs8^k* zyZgt^H(2wp{@MCMOVqhl4Ug2Fu6^$4&4=TwmK3{RoFDHFHVg9(d z(M}`!40&{bcc1P(?{&9zJ7m4kkRCse|hd(+2gZzWOSzAk{+49CoME>Rod%m_obak>ya@cvovd0PGeqX;l`4m%X=Pp zsp_r6e;&Kx2F#ua5a`#JM3C27KMezvuJro19b3(N_yDue~s)>AQwI>z3C(RAV06 zP&snn;nLTN6AA9DnS`lk@A#&P{BY)%xqz zbhD51P`6jRck9)w--JPnhINjZJZ6&jjXtA&_fLJue`C-;Aq`H|I2DHDo-Q zb~1U!-goyb-aTOV(Ooa^8nt`E?u)x0+cSLc=H%v-dFfS|n{q1h-zs{u^jJm1fq?20 zHAS^ebrlW6nyXv>Z5`6_z8UQFmg@-5dA;`byK_+R&;ujpjv3)y>~qKDplL$`8-i~R zGb5glo)h~@T+f8&gq?|tk}f6foxXI&>KV7s96oc=j6bFuNhjm&v9qH0MHGhi48G{^ z4mSBl$2Zh)2lWg`RI7tsiyjkO)s>>w_WS5nkuQY(9Q;DSO@0qdp6AnV-2EeG4Ba{Kt-h0cEbZRm_PEnfEBosF*2yjR zH>K2HSGTP8znWf$hg8iwU@uQD{js=D;fcI=bE2{~W-Lm}NvTNQwl`q!kiCt2&hL3f zYR}}o=l1@U(ktzyjK0~Q<>nM@Egn#Ix}vG_wdxB;e>}PT^pUfVG*7+cbLFoF2*hHi}=qI@)NHS zYkrvi&5T=SPM`Vmj72l1PnR5*&=?mVJ2bjHVs=a%kwDwtJo;tv42w4_9Jn}A3Zgu zVP4a}EnC~NJ4PC1-9p@Zc?I{~*uQM>2g9x%wPEbb<9AIwG5Kr1>VWv*y`k?$6h?)J zHBGVA@pTD<6PF~do<4WRi5atJ?wVOQqtA@blJ+F*j{74fH)?UjkPaVqk|=$B#}!v0zE|=5vIqBnS+(!Tr?shd#SI&perWltHTdc%Gs)=-m(?Db zJva3EYrtbeGKS}jdVTE1@ke|t-#ey$JMCD&;Nab%ff2o<{*0axYsDobOiyf2d@|{P zWVh+ly{6xunP=#GGq5GxF4|<1I(#RNr;*#r@Zpzh5%DXi@&8-0ylQB@f@T zdspr5`dvMC{kdz#?q_y?wWnM1u9WA~$7RjWS)HF*)KJ=UUysU?L&Y_Z*5=i{*YIXj z--|D_z0>iX^{;ce+bPeFdWH9k9Q5f>|B)Y$$@2D@7&v+N)ENQwfwqvh!#;@^9DONf zU0iPbo`ioBFC=|E{p$2LW=xz>HGSB0*Q7y-o8!&cf1*E){5x!8@HYW#{8mk_@Hsi| z>ZlioT{F~ zw1$AUf+mJ8jaV2pD`r{TnE1o-2NP_G2NKsLzM1%6V$Z~P6Ko0H(p73s>g2{<2thY(7^*s`yB1L+v7WzZ*2?g`>xEq^v?NpjSJ2!IJxrJ9Y;nU zdhx)}im=it#iI)!&bu#XdDf2^z0)(LuYNt*+B;`&%bsO>y!UL|W9|u0zCOh*ZGZY5 zS>1B4&2KCWEFD`-*52A zVV{hu8yh|0`bm2xJNpgwzYwrII5%`;#9xt3(Qip#-5S3-;YdPQ;=_rD6FTC*ik}(Z z5tkDCaZG7cMnqj$a7c5&EAliUrhJ(4a`Nir=l8DP z+dKKG;(#}L z@ACZ8ZMO3~%jg)}7I*Q<=5c5Hoen-xc(m&9h^nUjCFMzF#U&pV)fH^YTbJ`n*7F&! zr-!F~D!uiqDYH^0rc@?pB!80Xk=mSkTl&`-ZrP)APvs{S7njymtgrl{`qQJ!Pb8n7 z*67k))^bbRn2z4&mrmEYKiYkc*Vew12QD4*-iSeCuJsO>nC|<>l*Q9F1-u#bQ0VjF zuSO-rq{TiF|55z9gntw6OMEnON8&lz{R~O^A#riy%?WSDt&K4w8^a%#&g~=rVN>V( zKI-$+*rZV_hItN3@0;hfu>04pK2Ck?C$3aqy77Wr(+v$1Pj^4j=lHH84<6cF8M1#( zxo7FtqNxRo^X%ETW=+prkTEc$Fuge~B{d**Wa@>K>XaU7&!j&fvGaRg-@=08q2+=5 zgDW3DbneJM$2Xr`cBWsW_XVHJ)7m$6R$I=_fo?V3uXwri9Xv2`=uabV8{_9a&}ZwU ztCJJ`eEi1--Wa?ubY{3)WLVUe=-IJ*;)3D>5{+wEw=9RHg z>S&+5z6EQF{7a3B^8ItFypBA5ytVF9{nm4p7jC+|y1lbA%UIoQwfpWKANO9=|LMU^ z!?uqy#$|bL^qDvL{;Bs*^9TqZ*>u#I(m;i7k$ckAFMKyUk@G^c10VIjH06Owk>f+gxQu8YoYw!(-lu!4cCYAmm+eM-%aw;N z1-2Y%iaPu5>5>z-9`mZXXpGGf= zaf+>r9UJEy_i)_ZapU7w#{Lj9KH5JrEA01>yubggC8ad&*vHeHgIqbxsjDBvt z@9uH4`+{x}#@`*s+itzI&i_r5}`xDQd{?n|DJ_ z|LmtSAINwyBR*qAx|!BLeQo-&^mQ47GS_AOoO39*DL=X>rFdf5`HDW3-4E3sx#zgk zsm*7uYb(YH!YC8V05}h}?UFv>UuRVQd4@eu_cX-OED`O9gzh~lNU%x5a{PO+X zf@XyD4l4-%GqNKxA^L;Zq?qqwzK{DmZe-l1*t(e1=&Yz`Bd!g*CZvB*q<`krTHl|1 zMvOl_X8Xv2!?q60={u&^V9zJqs+=D&e(!wd$|IK^J3sf_&GpTvuBlyg^rOSKS8dzh zucD^(<>C(uzs*0ByD9s8W^l%J>Gi2oQfpHNr1VG$ODRnml7NzwID>!ZS>;v#Fh zm-0&L&h*bSd*pcK?I`G9yrndv;)VmhRSzCcJ9^WJ5vSj2c)97RmP?nNuX>q2PVFwX z?nis3_PJ%iqQUjU{6{Sr>p8yACu36Zl-8-{v>O8Z1P6v(4(%PWB%)VTUgYCZN1|3n z9f}Hwni(}ODm1b^A}su1=!M|-17G!DJ2l$3WWwcf(W487T^&^4Z(FaIJwJC_+^w(i zUFWsQcPm|PN6{@%VFl^uslYgW~U z)a5oj(Nx^Bt@Zn>51AoOH7+S0Cwiv$xn@Aj;KX6qkGytFw0GTv(Z0qM-u+Y^ux zR1{JX79DYKWN?&M^c&HqqN8G7jVX;?7jtvWozdN*Cqy0zuM8~;?h`m{+KeeTOgcIK ziLqNoE*REtU`gNQz5eoC2F123ZBjTAm>chsLbN@l(fZZo@wo=xv4W#Z%pl7octvAcAj%u6J@@n(4#uv_npSt&W zNljsO{=ujBH`__IWF)2+r_GXV9h}-NwKnxw>Jw=nrUzz@ z%^sLLI)7u~&XNbpzu$M=!C$K1Iht|ejnlWD{i%8F#j~yHS06C%abD=U&BNKNqR;99 zHw>vCc4XwwV}A5r<8yh^&M8Z$c?MPlRfKE^{W)TI)MwGXW46X@j6D=N+V&+Ca85tN67#0NX z-reHWeDm4Wr^lWA>1gxe*h3MO3-*0cwxi_BqR7I}@;h^PWX>BVz zOmm~tWtSeFcX<``T{|#t=wl;_M%Ryff5Ll{KAJMj?=R_gRs}s0(h+(k{PW11s8i9K zVy=rVkIjm`9NQLak9{t-CMG22zo@~H3&MX2@eLjl5b1a0VB-> zbMEa68!q=~kG7Ap9qd-@{!I_(-nISS8I(Wt@CeT_uXvC3IWVcmlx}|W{eKEv6TCU} z43{8+m7VS?Hs|=>doRDktAJvBA4_ zbkXpS2LIRp(caNLPPnBy7g<|6^4qpt{G{2|n0e;9Q{J@`r1tz<yFIAjJMK5(>>GM=Ge6H>n762)cX3|nz0$jdAH23Y zv*x4P*>wXOqR#zrzVXtyE8d;=8ZUNx-2KHKt-XHjchjKPhxQoxz?gB~e@%F3(uOHN z`>pX`8+ahNDfH*?8zZMiB}Q+EnHl>{?1s4O;%CR-C0$NH+*7gD(aBMT5x!w@p^ZUJ z{vS@Q@?Gk)YnfF8S`udyeljbU@D`pASDc zs&H)8_yrTaCNG+L{j|;g-v-_u(iD0k{8(gS^n{q@vEH%sW4pz@8FwIVX56Q-iLpnb z=SHuId@cNi(9yv!1`L??;pDv&w~n7X)@4-8uyKQy_j{$+R?k?sDbB8zd9|T+T}%Jw zN6wBo6MbrK?Yg72)q|?W9eA=LuI!8AvxT;Tr}Kv7e3<=5R*%ewGn>-KWh_pwO!H1Z zpLTtEd;0v$H?z!~U-LgMe6VC)*`xcyDsMlu_Q>92PoE4wv-)hG=9HFUt^KdgHZRy# zyWHk+p~vsN`}hBF&@IEtMxGzj;QfhQH`qKiXWFj;p9d9$7-4sW2SoOd{xxQGY^P*{ z>2Yi0`p5ke8x?a?^zx|Y2s5lE^tO=pz$g66rk?Q4^jYA&Vf4A-KMpSLAJpfio;P~D z;PQc!i#4U=`L+ueN1xx-_)>k#sV{1Mj)oo{T9t6%m5ThbNhQ}8eOqutUQmvE_RdU~ z%=767(h8+-8`VEbP z&Od$erPjUe@7V)wfi7RW7xfs?C$s-UgZm7-GO}gNt>bfj?)QDp@94DQfi*$RAs>d# ziMTuRYE((|M=?IJ@5Zi-Es6a-c5m#+n84_Y=!(dvBmNFc2<;524tRRnt|<#9HH_ad zcK)cT!wLs__kGx_TlW&V4pM6-b?j;NyXf2e&)G-LG@YDW`^?cfhX+)JR$kcWS23V$ zPw|4nUHJ?1!gK%4-kCKbD<|`K#yy!IWbMrSGHZX9cg`odALp$p2rv4y#8!UyzRCl0 z4xKx^_1KJ)57ZrPnA!Ye%hRo6u1>PAGMrtuxZmozwRdIz=s^>QO&;~l*em0YPW;}t zZR*)+-v{&z{xdW!{PoCg(d%M*#l^+r@&9Um zug*I7Mo(n;y_RC?KRE^xtr&$i7j*(HSvI;||NU-n@hvvNQcBaZKXKgtYhv<5FUl zMc)^BeRz9FUeK_BA$|*d6DKSm+d87hkmdoq`Yi5w$m2J+mz~_riuRGMH(#96oX|L~ zeoEbwCzc#_Khj$DUge>E2g+BJzFc&D;p6$w=Pu6qUNZLkS-)rgma!_MBIDc4#hE>` zg0i2qJBr{6V`zw_zq9Xxu=u;9US`;Y8>+|%FvYv;GE zshxkc-F)eEb5P@=GcKooJ8stWJnUEXe-xc%R2y3thH-ay50DV|WM%?&clXkky4$V0 zySw++{nibVnRtkikOX&kclge?_|e6$u30l@pS|Drc{el@&zP3AQRk+;2JTZ>NtG8! z4U$O7eQ^~w9uuP9(J*W!b_eSgUzL89|D&o?Kh;UIzGQb6$BE=kv#JI((LcOX@QEy?eJ z7SBkzGfXwCJ2?)#pUHytu#$h2dxO27xtX?_T$Z#d@m<`QXm$AIV5$EapVb~wuHzjY zY;i*;db2xCt*4s8>nBxrm+MRHiazHZwivUM3}P_JoyxqfER=i8`XxEy9Dp#LM4iz( zP~R4zy=XD^OseXx(KO z?KI%p=P}0zAK(#uC$uHhp8{9>J+WAKN4Tb3+x=m$83RTDnNtKv8WAZ zC61N$$>Npj%sblKS>KIo%}qJ-{N|$3WzChdYr7i!TAMq(dW#3%S}(JYaxQoK>owhP zbkOV26fh^a#hprUCo~Y}P^{>V%=N4hoL0^$9trva1tM$V<46wDfG`EuksXL9@*J+< zXY%5?;cOYRghrz9iQf1!-1eBi5d|Ur0XW~s9^YL&9cS6D8j9_^&_!x{-E_WwboHl- zmnCMLqaOje-RfwV`|6IACFh0-8NJVr!6iAsebA}ufeN{Vw8BdvH@==@VU1*H zs9xl!NkNG};v%B+!;?c+1x)rS@aS@RX};ZHs-acRD_d36mnX7t z%_)XYx{Dea=yWD4vSlLa8cCB_A{K~GV>7XMtQy;fea1ABaZ-1=QSn4&rMab@n03~8 z!?Z2OH{Z5cQueqiwQhP-Q|nLA>u3hg+eA9davA2~?$hUA8nhs6b)+T6I(}B-U!YT+ zqtIxLbO!4edp36z|0nbSzKtA1rUSn*0KAzvWIECSFNGWUYkAwjoRC8wMV(B#P1uo; z5@(2v32zME=6~ILi~DWoN_%IUFM~_^_IHhI9cX%8&#W#hCj$@bdEOe!nCuw_n!ZI7 zt8P>tQ7o42k$OvP#GA2L48hzmSL`jeMjR&TmRys;igcwgbGr6|erEPmvtw>Xen!!n zvi~Y=YxguTTT0tEcQ5KUS~=PWIHkKKdVTXX2i*y^i;RmIh*KpjBzz%0qiAUk%meJ_ zoRPc%{wz2hZb4E(wN?t&B}>51aiHx?6^urDpgM@g597qL;^|G~C?Y;FKJHtTFl=eC zZGhaH?LO%A&2F*Pv_9Kzal22;iiVN3Pbve-MisxvXXXk`$BmP-K5DHsovK9TVfj^Q zn?x+G#};5#7z;fudLyb4IfIHV$Hqy7U@o;*HD<2Y#%8%>hgqa~hl|=uhga>Z(=^H3 z_H@4PJ2kl9dXN1DXSO@+{lw2R=xJzLgfMz<+}8vVA%i%H@{>A@{*85zvw`OU{eWwc zr2-o0ary)$g5k+sf{g+@!DeJRoD7+GuQ-oczZi?D67t)m;|YVYr=mQ>7tk8U2UPp#%wE+`WgO~`+o^Vc-e*r0dNE!DJSDwSl#bJ>5=R>={u z2wRKkQ6JO+m56N6JLqA|Q%aSd1ghHvwVh6v6=%AZqswnE{#w4K`dEEU)2}wiuJyeR zgQ(3N2Z4*kZn47qniT@Dp6C=p~PcQBwRWL-phba7k~P;_<^3&_W)Pv~S;97oQ*#6JqBA%6vtV17H0yft}W@`mK$ z$?HMoo&x{mr}DBmHtZ}$EU0e3h|BObIJcN7!0{Okbe&5cX)b;a!8Ue-%{}&=oh_k_ z)wS7GQRThGlES-rY)eOWzF~%bq}ErBSKU`wWNtE%q(?kMya$^O?w&MMgMLBRVo{PF z$y{lTT&FUqVc_>%&Nf@#<&7wmm29rKR=u^pv5DU?wFA_zGrHtCZa-K`HN(uLuf|r*Jf= zZuZ=JtnuLe%pi|VTAA1s7a83g#tdrmo$uM>0y)OmMh)ru3c5o(X0}8%2Gpr4FPD8O zaVoUV8!(^Bb~0?!aWrQ#Ym_mHM_^KLmAn9bjsYExt`f}#6}w*eQ*;1bF2+lPjm5 z^z)P-#2t8Ad~3|4$ez&CK`;Fldu?|c<0QAu8#>cBxocP3(Wce){xwdOeWk?W2l=ye zmYdcaX6x;Bvov+8#Y#^(MfO_~Dt?UZLl>Z%MB_!fMDs)<5e<#Peu_^>Co5j5JTwP& zmaMDa&JRAFZ8?_D7Wgc`|Nbbt=8+e-@2fgp}ffKm__mRczV)vl9KYB zcAK$`Rm?8u&f+hEw!u`S4!J833x)(G$Tk64@C#l9>3BHq5_Tc;9Nj{7CR-(qNKD2F zqx-^(f{p&4yd6CTog3_bSo;hrda61ST5*l#wU4X#<;0Q&g_rUs1BYIo^-EW#aaC)T zIdTE$L*I(?u*KM9aSib19-wa6GAtQ;E}ktJkT%IpO0HU=y_MBzd}BVEi{wu(9n~(5o=1HA{kww?MI4Tfi_^uoB&3}{QWwsb6W_4+kGy|%Q%3OJ@ zY@rm9?vZqguVKrvDOffdD~83FB^v2w<-*KX^>rNwXgUwge{=5^yep=Z=T>>tH#Hq> zTiZ3E@9bct-A@$z@4{5z6xCvnBkM`$#63` zblNVo`lr9N`%pWph1{sFb*nBauP+HIa?XEm;hO9W$8?x>i~6GKy<&{KL0Tx8CJB*T z5vPj>#9zf;lD(1#lKIkj*<^XK(wNBsnp=D}WESLx6>cmsRz%fE8~U5e+B3V^{idNq zw&NYYx)40`L2X+Wnjbztni3bEFp_Yam_%uzE@!kbg=}}Ay`%gCPy_6QyhjEFJCaAF zd`w{v+neG#%yyV}@>%2`hyXaZ^9+=FfuzPu;xl7BBhy0l0n2^2d7g3ccKpZo@z9CB zLtWA~W7AEbB0i`%Rr>PxjVH8(O{Ro(J)GPQ&z(TF>+Dzslj5jlgi z(+U*pk>XCtUs<&BY^IG?tk)STOhq~83$B+;24CBT23gC@j_W;(2ME@4?Oj1%o#Hjo zj}aIbayUFWYDTPEyno_8;3u3UU!dNlFJ+!)@8T}!`@m}vmS9Zs(-bsi^)QEF=ZDQq zxs*&u?nd^&hxx0yM%H%53F>MR1+T!ZkNFxQ3b75`=u_me)a9u|g6;63>wO2h{%g}U zeXsYaK`PXMtnAO9o?B#kl>N+L06JoWdQi1fIYD8R6-zy&FC|WrG2&a|8nFfNt_P$n znL?hTtWw?6Y|!Bi!KQl4%6w|kpVAwZ*J{HXD_bsid;^;380$s$NzT1)Y_HFL;=upY zRMF8pVngEjiP=D<(ox9t04AL+=LGYn@N*yxK7zyu(gd#rsmUFJQo+LH>&SQL9iPVA z&TeEJrClXYCTbFSxQQ{2k!M3+2kL!`JTJJebhNe84h`#H)ScZv*u15oyk>gk&axfF zR|}wANAoD-b$y9;l6tl3he9bkBKaiViFsi+(QH6heif|%b?qkFk7i*Vl0ULPibmC3 z&0bxgfojrPhVs0N50q`H+E{m}>1rFX3+>GsNVWcA4?Dkf>+!7iB?MZ6k?>>Dqj8#q ze*Aw#DS0CGUwS=r5@!oc}lz+HqaEiY- zn0x$OVjQ$K!-lr>-Ro*=Yi#PNn_4|sz6@w?8}fY38;$*XPn||RCi4*J+gQ>haFhZ%+p1iYUCv_)JaJqP?NZ*{h2s{Xs7IlIo%lXto3Q`wfP5p|E7T-!1` zSM-VoDApBrfzDgp+`W2z&jj8N(SzP#O&l5@fIpUGPdZFFPkYLk!7{Ngauq-e@rSp= z4sZ{wgK>xyPJ&-R=lKF&59cx)V*1ciDQ(1d{9YU!yD{>5s5r3Qcd1v4o6+g2{U+<1 z1Nt6O$CB2ojjURas#z7Uif0xq$?Z1XFfPl=(YC8cX7(u}{AHHs`W8+s87SvhzpHC#{LvcKN$G7JVA@pJ ziJj`)dEO5GU4bs4mm=Op?*xwA5Bxhoi|(RLW>8ppYzCLZYv5DhR8X%SkZ*_&n6h03 zxrhdM+bj5G+zA{9)(QF)>Q?gEB;UkwxQWp-!>0xR^&9CO@80F~(l*t~YapY0RmZs2 zg^dYy!PUOy{L*EGF?q)<<=Ga)Ui}Dd8qf`#lq2LPrC%h);)UXGVD4E1Sc8o~*Xc&1 z#op4>vZab|s#f(QkhK_-z234T?|sqnvWZm>>t;9Gcd)xw_Jt0W+uV1U;j+O)=zY7}(XW`VPFk7o-#hgTuvL0xl9UX?s6nVmcUZqlEK4lakh z_~*H$?32uIjE~er(lS6E9gX2eP7E;zSbSD^RJbg2P}_6?e-YQUvCXb&a(zrqZN-{W zdC~2B?_6*5X`^RWjm}DIrT(c}rrfHil~qc&0cB^4_!4H1Jwhj-87M4v5HFOxmaSBf zGXu4m`rF1>^Z48u1<#5V5cF#8NA+`6sp6!}Lz*W>u`)381c=DOtc*Becg7>(dC_llo_MA7x;#}?2K>cz zgWi;vLocW-K2^T7+P|LPoY-#Y3hM70I&OR1QRw>I)6Oq7&=gV#?$QIX>*I;|SAa#_ zP2tcC^!>~=>s^md_+be>yZ~oG18B$M&^Luj=(5n;FWTUSaFPb)ElHhLP|nz zY;@F3;E){m!+ZI=g@a{F&xW%4_H=J;Kho^pK&`2)*kAghXhFfO+*@W!wlM3NZk?tq zvs7uPu$JM#4f+V%f$l{2iw=plg1Kjor~!~VpTxnEak6mb-OM)4ZhfQii`kINDM%@% zmX}vC>yRc%+oUefKE>c38_eO0O9>!FJNyO$+e3=NoudDVBP59N%ZMQq3Ft*XGB2=k zTxY%k@6eV z@Al0}VJEXXH{j9B?3&VMYVv3Zt+B1(m%_z@f@L{jrc;I%U5ln6^PVb8L6A2~E&zJ( zEIJ3Ji|mCw;Q!7St`%B|1Sp_HB=h9Ql{3@@+QV5_voWCY{#(=x9G~wsGaKGFe{8qv zj_aE^bl0}a!R#XTKz-nVu3*pbX;GwD=XgtEN)klEQwFK8=|`B+oLQXXzyaO_RY9}h z2$%;cUc_;a6gOb8NN8XM3i4!CqBUBT^DD!A|z>Y_8o^Ww|AtZzA5o-Y?xF)y@6rB|0 zID82D&GX|PV4r1b>9eUQ$u+4V;dGodswC`Jkk0SE_XGDj=VXW7Ht67-zKCvzc6{@M z`hn`i3Ww6_LQ|f%1evflem~^aWZ`u;`8OzYKFmsE{x05VA!5q77KB z_`LM2{JYXmP0&5d+Mj*g@-uII(eF~<%KJ4@4cnVFZMv?gzJ|dQHrpNUyAVCrdAs_z z1)9QoBR|Kq;Vve6CH*1RlJlrL7#mnQ;QagrwA(5u2RaB(g~q@O;G2*)WCu8q4?qtk zFkR_0s5{6{z*Jg>+Z^K*c`tN&V1jRf=MPtn<40RRE6@Is-PCq&v%3C!_3sMTvi_p1 z{HHlAli9FIKL#kgdes$0ikv1rCO(Pr#T!Ak%nMrts`YgA0{RQB#a2j;OEI}w>8kG2 z+|VyIyvb(et}K{Wl3T8;uBsbqoX}d{F{5W!f3lUxw%4)5HPmy3@A9A);AiiTz85zm z0V4cNnoa&gMd^tw4Lga8p($_x_|`(;Y49C*Bs?8n1I^^;a*uGPu*>PLz)!Fz zK1WXgVKg_vnx@?r{ zUuqAj&#S5xH2G4gL_8Lo4Cd@ZLI>dr;dWt~unkPwXR*gvk;E)_SLFalVQiLrwx=Z{ zH?LrMNmhA$O?!P)Gp+qpS9f3E;47PGhq*4JJ$k%r{T~Ng!oEfkV%hPjiOqx;q=l3- zvY@7In#9Ovjv04?TovhmjNVnJKs@#Kx%Svl2 z-qlWOJk)x;b9zt7K!Md`yAO`eu05UyK`Lf{2rhyfJu>b>!e9K0Bq6DlETT@QCox0V zlR3A!BX}Qp4E{}i89xtFLYZ(atc1=%L;N&;J9i!@lvPQ0rH&<);K#%(V`fECL&pU2 zeIh*hU^bN7j-oDV7wiEV$x;e2r`a3mtMd;!JY=#*X7W1 zI22h6Zl0saDI^iu47xZ0WY3?+JI=1f0WjU*JEyIn~)?7&DfWI zGQH>TsPyUSK^cfJ0+77t#LK14@;>Eez#?ulY%=}K8Ch__NoO=-{}2^#nc&iZ!HvCwl7 zTcTIRtw<=wrxAtZ9O^^*U#5l?!inO=@be*S7>38dyWz?3JLoP{&7a99@ai~A+4Gsh z=u*lz(ltV5d_#;NGBxyfpuyL}YroqrCp-JS)=vfw_4IU1Y~9d!vvxyOXIVgrUtv|Q z!o0<}S3g=Cte&a*M=?n@NwO6SK?{ZT84ofdGU7Az>95i^W#E7Ue-!$6lUSr&{ozm>DTUUdG+~v-u)}$s{T}kEna=3(1V3iwhdS$5A z1!xVKVx>y{T3RO-V%O1!qF&($;p6m&8NuKU-2;8-Ulb8fkdBvMRUXUSs9C9dnN@FG zYPQSUSvaLMyfUX|enWG!qWxmGs!uZX*7lU6pW7!-XJ2K&gplXqf1_$++v79v&y&`X zo>CUk#xS0-mU8giI=(lA0Z(ogd=-8Hx5KMoGoWA{_;}tl&Ry0S#v$59@{J@j{%HL4 zSSa#ys4_6lZNxszW)k}} zr=I%}cs@M9hw0%wcsSAo&p=25DfF3N&U? zo~v9dogD1ML;U{5-EZ38HFwnafDB1WsZCKtzR^;deaUcAe_u;h7phJw{>bKoIlBde zu!$f69Dxpr#-VS~duT8=Q@l*#EVEU-Rzhk6=tLc}lP&Ri?nQq~bE|6WqMQD0o7u_k zn=m-r`i%Vn=b7$(UbFpj0{;ow7v2#yIyMoPg6~UeA|0TIq8(BWP2qQP{kTV&JLsL1@1%sJ35m9Gl;{g#`9WEJBCk(w{?6m< zM_IcJobNu@A!)H|JYI{dx>V*`VlMcY``zrGU7wYppP=2Zu2bz(dMh@_B7g(@SggbD zVgI7}SU7eX#bZU-8cDg-Pf@JAt3I#$Xs9ub&N1Zo6}gx1sQO;}w&{CodgsL6F@t}t zJ?&Y}o888FW&6T`dqULVYoaE^3gZLuB?N?YmHe2xi%wxKV=d%#a;Nd9Ld&2X@B{cg zJPnZ{Q33^00TTh~=D}OU@nc=2pQFIUtBHO%uV|a_h9E2d>E0D?0_UgpkoDPt%{_%3 z^(}(Ns@nHeFUp-tor?VOH|EGpw+-|3HJZ`t`zncIgnXZrAn_9ahceK0fF9R?+BQn~ zRJc_11m%hENr&XiR9uaxKGSf-bS~#+{?y{k1opx4!R)?|m?E-FnDQ=~U=; z#%qJ$$H4edQba`b@VJQyjriHbdE`z?0Nn)Gu>Ux=ye$4`xEtP!u)!pkgjgY7hzy*g zPRIy!kPn=VtltbjkSF_{6qPswXB}-0yAV9y|GqcPeT_5Cez^7W0aH&!hrZdiky`t^ z(omLIGOqA#o=Z-pDZ*HxFVgDNw&47<%a%wX$yV`8Y%7+8&O>*L&Y~pjmuNjUM)F6> z0SS_yYD~AtFg2TLd6l=M@V}D&a!vJu`ti-r+b4I&^cN3JwwvgraXsug)}_3i=YnCHx(;z$F9Mc}b2z3lJ_`LPFna@PcMC3 zbR>^!F=VG1#^|4EG?|xG<3UbgtMrGs4x0*S_-dhzh$q@9S}bZ4{Q(s3CCLNXW5t2Y z=U^^PF?yM|=RPc8lyEBgs#nzeHH+JHogAQ2wOEg`Pj>EcJLt{xKNB<%dMjd4^w-#J z@&0(vr1_-H6e0~~w6K_*e(p9t4mt@sPa>>H{?c_TC+Xq+F*>!@3dlbc=DkfE=-Yg0R^<-dlen%R|S%GkxR1^qc&%_76; ztaI9nYPo8mA`xt$ST1>pMPWD4=b~+*o1$gtB(wolVUxrj(olK1;)NsUjHyy9Lrh8oS*&NUioD?pIN{$^9KNr6;$$?Z( zoZc#a%`??aFIPW(u~xS1GPv@aBY(h0(+g!^%> z(Z|9=LuLi=eM&rTx!!Q>wT-p<-ao9Tv0dH#uzqIEi;733wS`CXQOnotn}$<514zs+ zRw`vZ60`Uwra&#CwW3SH-$JwSm~fFON#uz-V$a0mr8DK(AdR^}r_ajFo@2rC{(!rO zQ7NzKs5doB+FQY{2J4|&HhPCAz@LBTJv(4=uo!G>SR8AN--fp)rjUcEG7Mz?E?t69^YZrq=+YH>&yLfs0jo9N+xnV)UOa0@$ z*SjBczGUxZ^KEcM@0w0YtFaNQ-BIPSbu2gPUD&grZa-J=8SdrIv+Sa* zZx7UWKW|TI+0$^orVCKxABzYDp1BF;8%AcF?hTK~ARB~H9N&FByj%m@? z;7095Pl)#eGR!3Dkku-iGilm%{R;zP`fB+nPf<9$^lrtXniKVe=Ex3pw@v?=p*oxM z4!d18c^vS;{GSK=hwY2R#caW?PBam$Np0lGG$nl*(~q6V`M_=C)$m)PI(RxV7oiF| zktv815(yuJR`N@@dpS>7iHz&iBP0jHk%Y#WxG1l%e*@k8yu7}+Qk;Z#|5(i)INO7D z%xtAJN$Z-cWfh@i+X_?ir-D5v+l|z$er>pBL}tArP%e`;Nunex#6jXP@eiyEgT+Fi zAHI<+lg(AE%Uq&9sV&UfYZRDOIV(Y}zFfAj>QC*D#)Yj*J9B%s49v5dX*b-t*3HX% zC!lygglZ!kV?1!|L?Iy$XjERbcKRk}H)}lSEcYpIFaIo<--PgKL?(C*w5nTzFu_h_ zJG>rx&THfxVWrb=QiDmS2*UVfu~#FfhpY`+?fc2|i7V!~+V0KJoc`ACfR0fu-x?G( z&Xvo{x{LbqZ{(~nkH{X%QtCfwCuo8)J(S<&>!l_MOOhtOAU2_T^gd8{r(;jCiIR)b zLvoFBraE4GM(=D~2S}=zf`5wB%C}d~u0PTIw{1mNLf@9bWYAaNbN=AI$eZl13pyI= z961<0Gj1^c6yAy0OgcbWL7Tv+XRZah!BZXtN#XU#AQB_^yq9<1vv>FjO&r>VHkx%z1N-jZ{L z$@%MZwwv}C*Jb?x+}=EuOpzp?|mEqWds!d8nj#dQ*%Y`g+dC92c4 zBK=F_2XjHrn1UC@v&tK*uGh6TMzl3|p6q=%Xl=94p~U&PyR*-b->{&UA&q#{{cS|1PGoWHb^*74ZL`foaM{{+GWZU z;%B@~f@2&bsw2!lc%lDxpi)^oJK5{44i41xK%MtniyEnQ<|_9JeaY^^#d%LGkF!r2 z9J7vSW5K?LnZUu?E*p}JkfZ{d>K*n8yNSh$M~Z_at&)4PhYE`7fVx2&kkxB=X_}Qo z%jXrlmnBuj)J<;c1*(ChXA7v+JiA|xRF_8g4ll0X{eW>Hk0Xks?Qnew-vPfNsfwTHr8bHk<<-5;?pdxIGMTcFf!=b~f`My^`{g)JK?8c>Y`w+m|H=`nxOXCSgIs>Nw!JhA$2|7I4OAfrqQ> zpaa1+d#I`}pqth%Y)-GQt(I0yDm53a$@j}i1`7NG{XOk-HKe*OKO$WL&de#0C}Rsh zWK0GsqLuKfaI0uGs>H%2`(!5+`Ko619bI#lt;s288n{cdO6OJXuZ0_w%}?5$x>xqS z9z1QMaaiJ#;coP1`%ej~4NV8z4cy|35+@~nAZ?@UpjFb1;CbG2J@`NPhaeqf3&+Ca z;C?UzmGTeq@A8P;zwD390Qx$Lg*b+AGvQI(`{>6JX`!uw@qTZ-dflcutL@`$OoQus zjh#>19GmXdTdMNQHkC9LEX_S)<{F3T2Q(b@ZPj1J58%f^;wJQ#2+i0hjLqmuCuP)S zI1B9nDY^|K12Q>CL0847rCPhJea7FWeYsBy0!luVf2-bB-_;~+o6)tqcjh41W`%>J ziyYL09scH^bzx&7)1&#IT7M_3BjU*Ilxo@)MjdMuyN?sZD+II81AY;I21JJ@g4~~s zAI!(`$~gHWN4t7f=ZOgQD1SNrLpCJWn}A4Qr?C z=Yrd3WbWi5ZRw7R1+~2mlonQpQ+IA3GBn2)b|kyr^hog;=D#H9P3Ws|X3YCIC_#fy zAigKxr+%TQGWWAKaf-R!JU(;>`Uw?7Y)}tA!COGjqlU^LYsifoz!}C$We};+QMrDqAvJPj+&HiY4oBylG zrfi_qwBFH!HP+wkXMlvyZ?6u&f}oROzax*w_~Mo%81RdT(Lg~Y(9bb& ztQxkIi{~q$V?g~VN7f5kkSu{hFdNKqVTcLP6W_Rej*&^Ezofh(4#)T79>#o#coT9b zAkt^Phm}jDL!ix@0ebJK&I7IGO&jYZ)g=`_O4T6$8p-nh2hlj;ACQiV2U*#_=qS)z$HlBXV_A}HR=4oYc~C*lf_kn|s=s8pdvcDbDVTvl%TacaS8ve=lvdqi7R=B-%LB-sfaSip&+3mvar2dCP zt89Ndu5)em2=*!UUl4pHbV0O|CINJ)53bkxJ5fcP9QemCnh+@wMQKezXUdh$-Qyz%beZq^R1c&e)jI~ zn%BOv<#MC8)~4!5S!4-XFfZ52Tmp6*oYt1AU#dd9i%6173#6!jDH4#LU7;6E@?^lVC6_=;{6}SN45QBbUsZ%Rk2VfU=<-P&YIe z>fzV(CUYOM` zn1iH5YL>StTQe_cRr(9YbTgWpSpb*VRmiK?)L#P{d}(JvuPx9)O!k+Y``wOtZ3hXt zzaeONTy$P+KTenMk+7Jw18fW01-1nhu-9|v@$z}T;3?{$RA?tefNJ=8yt%xs+{f%v z<}~^_Y6rTHmI~y}RQWWYQr1k6da&#v-->{!&J#nxJBw_?@?oIpaDynXmPb~>4 z?8!|vw;5+-ebatWp9ADk0Z9AdB;T;n*f{iGu$>M9#Op*rSpF-*p~JD;;uPt2`BP=O zdVts##k zZpM2h%!_*+vUf=PcoN-JlQ4bC5Z>v400CTj><*PMQTy5C;}uIZ(UlkGxSHrFxV3UL(=n$ci?N0JW{Nu&v};MQV+2Luqq= zyL;D~zAZyPZFV|XyX3pC^KSLe2s#JyvYTVg@tg5f;ukUiljt3EA3*h6*l)R0`1Vi+ zq(BaUq*5@LeOv@x@E5>XBYX?jisQr5ffGa_T_LQDKN~}jdK{_+y<3?l-))BT6#FLY zlY?HpTRM-n{%PD(yROPocDVRwfjqa~d?b6P;Q$~j-8IFkPKA>kFP$fe2HiCa^TkwX z2*}1+i!X_d;_Dze&rw=3b2Svbweb^3|H||46*J3Sfcr~rdfOJ(^|seIkYOERZ*7ePl%+&6-X{K4%=yT>p*?|8zt>))+{Ze9wV!LF8kpC6t@CB8f79Z+ zplU+Jg3{SV7QpK4HBZbo04}*s^E6YXG|H#S{H5+7pB)1DmJet+ssm}}P)v)3O72J( z$X_XfGcT$6I)B5e?E992yv;?Or45xYYj-pfTEBHX?pZXj&$`O~K1eLh@|OE@1G7VJ zh0~&ZVyEJI5|Y8@mJ4KWYB7z#tYf8d^xP@XR6fc-0&j+$U^VQ4jDka9I&^@yoomOQ z#W+H1A`d4vB?iU6jM)^~9jXp8`{j65yUler+CQ<@4Gi?0?pV|6)^xb;zv`J4D@q3n z=j08yVA=BxWAz_3e=j!FXtrs;)b$9QpJmp1I~~~Ea>b+1%L4NAuR{|e2corc zM-o=zCnp^xO`=|>Cor>FQ#cYZ`3U&qKz{5CUkd)E@e%$--bwBZ&Ks77@t77&`9K`N z&q_EM+Z@>*N(c(@o9a~q(s3*7ZEfJ8`F-|XhuRJ`S?VTMOUrkc{489R_rhXr$}{Ba zrP}wJuc~v33G#Lc73d#_P=9on=zu6uG+p!>Wd6cX1~yyVE_n$Of1Ro}^*o)Y;Yc>s zl9Ja4s`d2>r<&q=T#LH>b@##kaaI@XjyXlTJ@ecJ?$V~<|I-uUvC+6ui8?|A(M(6rNua_6eBXierrm<%MwYru@rH%nv%{*=?Aag>Bm!a?G5@_yPp#v71n{=?}2 zy+J0=#Cyu$$bZP6%zp?rxukKobFQ;4F*ea$C?iQ13EvYOabYpnB36Xn3RL0T84cWkN-hHbKAtxKOrk+;NO08}?>BqfG|!zb*?o)jQinU%kL9!RaW8Ekj%@v&$DbYiy zCr}j4n2%(lv_Pg%w5uSElYYQ3-*hi$3`odLEla4fuGQ54ZF$qq>ER8itQ_ojgUrP& zFOuK>z*`}Iftx)%)+>Hd;x@ts;ulH;9c4tbZn9;Ze|S|qJwFP10`~*T;2I!YhM<>F zE86=wb@rLu~@%KaDK)16GUITl;SK!gmH{LiN#@WCk zf@)nz9wK_;gW^+Tx+1(nO#xGUhj~(6${bb!1%7gWZntL#x#eQR<63FunlgSdQm{W) zXkMAU*`U(z(GIGmDoD9s@sIqT%te+d9U;Drb%NBAS;R!6!50@Hejq85B`AAT2Q*Xk zka4f6DaXI?N6Fuc+?p8;XIn;g-0t=tSZ{UKZj94K*B72R-_rrhgV%-Sf-PGM;t62C za5^cK;!N90Z)a4p4slL!8T_Zv1mKR`fvu4$GupL3q)J`v;>Uj@z$nG}vjevh?}f15ZV=`C@H>;rUz zDXc;E6z+UpDj>sZfSNNAehOa%OmYh}3{c6_c{bb^>|>x8{YwcU*Mcou596w$io>P` z&+@2*Mg`YZ3t z&C*rU)lwZc0^1EL!+!Jt`WIb}xk&B;jW<%IQd_i#vKC~!TZBN<__5%#7{^n`oBfk0iB|mQz0gH@lC;=hSgS!Q1JD zo4`f@S3x{TFs?`5z-OTE{5md+GmW(xs5(KEc(C>8FYaATenbn{)9}rQ>{;)!)`0}J zI8ErE+Via=yA^AagUu7iD~3u-i;m=1=8((^u=&VGSE>YK?{Fy4;0@BTEid3{_vKU)Maf?Nw)N@38@n zb*`PYbCKJ9kSN;_I1y~txe_Idy%O(>ZzALn5lR{@l)+{V2Od@gpUQ_J2e6T<5fVct zhy;D(=kQSONRE^>z-Xpjqy&+=2|kIVaZjSLh!df=1Dkw_fP1|LXb_Th%D^|UUpTn+ zVq;D1t*Qg%NJ($O;yfDg=gEdMdQ9t~z6*4!XYwmDf^;v)m&S_!VDABC5H7w5HZ>GU zPDx+MQk8Qv*_yYyR0G(hXxX24w2%(SFkX$NeqS@WJ-+)zU+G|z%`bmX?i;1+~Yk+{QV5(n%>{T?j3v&{`$J{|5`W?*Jp^65jk9w*0 zrGBR|+fIq&$vS?h5WaIepUWnp8ZvSN3| zd*L0D9+1vc3^W@?1M@CxC+9lP#IFH-OA<_iSHkgtqk6{|@$$LfIAht1nH%YEsK>}Z zlP=>o#YKF1)uhJ^9k`7?efB*%SJT#yqDK?vX$7hx-P2PTwYqzUKo^DV%cSa zj9q#w{Uq(A%wnaRqEW_^o&$-cZ(=`?jj>?fK#T7HJ7^Y5C15XiwaQs@PbbMr&yKUW zgH0OGO3qY7*Q~Ao)cmQ{p>tK=$iZ#aZ2M^-6BFcp%Kz|`}T9}f0~^}!^B1ibmx0u8JK>h%o1Ge|NAvDwUSnuPM2IDs%GVNTq- zs2kz@;7Y#}KGQu$xmdSo~J3mfv?T8 z_DI9nme>y4p49%aL+@-h0jhrz*eJTs|G%JlVLKz!W287Y{K2IEQ~jT*LG-Q6Oy)KA zOF;6*@OMHIpntrBe*j7H^eDs)iPRX|4>rN-v~z&(AaTNlL6b(;CCLR zOUcdyc5|(h2cPsF?wru}r?IK_N%fA3ZKa__^YhbkKABzu<$$j12P}xa@}B&xY?5@R zWT`|V9wF%v?~*K+R7!`-Cd$0!E{Z9tznR|JIr=ukRnv}~zPx~B&NDHEaFqCne26Ln`}!xaezX0#THbGH z9M~c_8%zmKNH|gk2>;Q*jiZ4bg2TaL!2p2kkTG7I5z_$9DooGzS$z7b_gYGigwqI$2EXc(Cjm?yS8DS2J-qo&)srn#%l zp?hqfhus~ATIabyrMl`D9`qqJ6TCX4I7`A1oDzJmJ4v^I)$pBx1tKB_3FkiK-r%iC zElS0vO#s*HcF;!IK-JlVu-IPAOxg}gCow-+i8~J&h5sUaLhrzAQ0KYY?S|79`=0)b z-Ge&5v`lOKRHv!hS6*GxT3DRlnL8rqUiKCJeeFqgwX#>9A^RYy72Of7M)|@?!VZB& z;49oBT!31DLX$4pE2YRK%0%@jod7;fn7J5SyoXD7Rbp$m!MoJ8y|Qa;-&s2!$2ON5 zk940k{(m5)uqEPVv^*{yyAa36PfF1ejo?0dN#`^2*%8P)b_jPPZ!%0cQK>Idccl8I zMuG-^9r+5bejCOMYAE>)L4;R<+hAnOi-`3h1py;`-8^G~_S$IY({JBBvi(Q%xQ6Ju zH&y!bA*DHm2lEHRj%1yF1tiM&%71c4V5I&M{f8bAh6tYtsKC{E%I69O3N!+N&|dUb zd{lZ?o~+WS6Lq7&mF#9-P~cZQvCOUdVcn)i|F$O`w}BJXXWs|pi4u?PJ~@6VLF`a` zI`l1*p3zm!*k3f3`6v1FP2`)i$J`vcWW#E91MGuJlvWl{5D5qQUa z22J!XcoD}^pU}oIwlj%rEN3?-i?bZLfHWW*km<;2PCRD~JDzof!G!c;3Tc1JSp1O0 zu=x7ulM%eolE4#w*S-4OMmk@HGTx27zaSHXG`*;gs8LlEmCh-;T(H$l&DmxM(3#c$ zl*#fs@QD_HCu|@;5;`ulf4BVI^B4Dz{O{7gu~|C)D&cg|P{~;!SS(>%xwZEiq|MJbPj!Fd#2W#O)QjNhe-Cq889Rl;W3@60XbULUNeCeY{}h`O=M`Na?hvvnV5e`rJH=J+ z#I;xVukCr1XQ5R)cl~a-H0cqyjB{M3rf!mS+cj>dvuHHd* zL5?I>Z%+km7w-p4!uXLVW9G$g!R}9zCZ8sX$#1F8={uRnS?Abh&QxS7Z!dQQw~70e zyOM{8)I|sE7q_x)*w2|C=scR4{EWCM`FP@t1WnAr$aSHQ0_}ZUJr21ZaO|)h()XvU zy)C7Axs_YiB; zePuwi&I<30(#G-=VsWeS`6(GB6NOGMU~FIoa<+pD@f7zWuYku+U6X1H$)%*!5Z*TK zdW6n-$YL_X=DGDXxH3#wtICuujO<@ckQw& zcDW81k3RX1xvPw04Q{#ywNUj`5hSmX+>-ndpF>Zg{=fwI1I#cB{97m(BV2|igJ=AV zydPNBM|G1xqZ*PY0(NbD#e^DJy+gAQ+y*Cl*W0YcxH#vypQl%}yr##ABdUp|BH{DgxBcpH%Ejz{%$wpL8T2+ZG%_h>bbJ@~V$!OVV&Y^9gN9@5VlCrj zBEPv8cw16iQ=QUor=3ZA4_+Njs%NSN{yIALf6S9~4D||W5#c}lpF|{nd-U4y{@`Q& z+q`eN?{mJ6`D>Hk>)WMid(+Hp=!Ltdr+i)M8?6nSW z{;w^$YjdvwGBF37kGZ>h*Z3_6`Wu=a5gbj6`iCN1kdPZvFwWd>ya+1dZ}l4GaK!*1q)q`+LoE7UuvpNVGQa{v&8RU>JRplQn3M*@=d|dmm!KGzuyF>SpJ|pb2 zU4Z>O#OJ;L`rz?l+am*GbK(Tp;Yl^gu|z!i6p&87Gq13hadseL?o{3naEq@>eVIBp z^*nC?FO>U@bAo-1xq-fm8V8w+{^XP-4{Q#w#+QZN4tnjE?d9u^bI!z^wTFUVK(;@w@zo2nGfijn1{aPkwXOJGJ-mK=l|J5q z#*mzFYV@Dj#)LdvQt~jubP|^$rW~X1XFg`VVBh74I8Mk%ct+8lSI2mdLHwnIN@0*U*JJkeKx|Csx z2Ur++?@ULsj~TvcW7Mvy4{}e?;IE4?C{vgxcp(T8DEWg0V+6VIw;Bvykl`YlL?i8% zzf&=_+w`-Ia?_jqpP+&`RH8K}tPKtH);nDndj9qAw&ysNyN>pX^@|DI9{Mwa8hs>g z2lgipmwXsl0MV2K@XmhEoXkGVxr?N8^^nKhmHG_Skk!0c-c;^) z@1%ta4Q11+57eD$oYtD(@up{4|1Ud?liIb;BO11)6J zX*gvJDArEQ2o@El0C!{>qC=c{X}ra}a;}Q&&rL?gacWsUOm~KvmP5i2M?wn;BmPo! zC9uXv`UiV|cAM>d6oc4~?p@h+9C}EatbVn3D*MXjmmDf|1YV`u*rk7~y{De4+$EnV z)rnV%?xWs76txKU2<{4op{c@6LIv#O+JS+Fk#)&!R6S}`ciq4;)tNU~7L|y~1_Mb$ z)W~gJ*wNL!wSOrPD|1~9o>P6t2bw~1!{=4ZUI~a^@gnqyvfK za=ARnU?m`@ILFz(>~6+D`h7|&xZM`wC5g}Dt7BGyKkRT&7VLeNcx-c7fN8U->ABbW zqjg8q*?LX&fr`k|gGK8L8qJ?gAHiKYOtVAfr*xE`mW~sbqT_{;kkU@!lld5aPF5H{ z7ATyEU>0aQ^Cdm9vC4&-=Q`Ky#W_37i3PMGc4=irOATth)_fD%NH+F`+FCG~&h>6v zz0UbM1?B}K;Ul8LV$WmG;hy2MQ{E9-(6BO))=huFyv+IuIqk>DNzkpi;0I|$6kK2K zPK3yr#lkQb(T7oQk>(IK<3)*+-QFbI228edw8v~p$wEaNsXYwUlAS}u65CTGCymAS$7-T{ z!kM7#GTFi_p6y)R=GXiHaxtXJS7iakPb}GawV>=w&`;40Rqs~50anmt z`2G9^@AyCgfgc3Fq1joQfA#+wvVdtV7$Fowrdca(myc4N(gk(hcfc{;wajC`k4*qE_*!Uc#J=buar}hgxOGVZDZ5CO#D$b)^!q?j zKLbRkPn<2tCd7=;K=+%b+o9)=*L4vn zwo5Tv9i=YYL5V->cQ23>S{2b5t&8izE==MjrxNaiE94?oP77h~X8CX~aLPG9!M78G z7&uI1I%f#Sz;b83V%X6IR3~x`;TFC&F*M;`jCbVd(7S=TzDvCpyX|sv!~C+*_l$#` zc4cEq{jKWr73*OOe5zo$c{MO>OLZ|?y84jPQ!!ckU0jZ)Ko_Hh@6WH!x(vke2)-QV z9i_k(ohxb=&z9*GvFZm$u|>l=AZmf0mY%k@>y>rxxHwq&<+dc15xF+EQ6+(vs9 z`c4hRghocxMxBE#%SqPfh!?1JHzb~=+<*>uJugpRJCR`9svi%9^mzt z7q$R@0yUo3AJT4B-&dZJzm%RA7oje~67WuBW=Z}H{Kx;B0StkTy;#=N$V3^D2WwKLm+c3!yf7 zSkiyk53yUKuo33qO95p*0*_a&7^ma*P5lKuzMc6k+Q!PdA=PinXO^riEX~^w3HrOb zznToyUFa@slW@h6=s`ge{{`%>m|5=NJ0N74vW@}etws*{jt3!OTf zWO|+V(lV{&bGc7-Nu7VAOY6;!)E=76Jj_F9f}6^V>GvyeO-N?AKI%toNkU%Y9sG-w zl^bLg zl74ZEC{XkUrJxIhiJ*$q!%00wxE+0gBI4=Ncwkok1i!&6L#uI1?uPvHg;gc*E8bVH zw%RtoY~=$3`jl-wM(6y+UF!A2uO~1z)HlL5IymlILLrWZA4qsidPn&{b7d@J=CLlY z1)NdfOb+51VJqhgG~UxZGo08cN5}rhGB9q@mI9})GkHYPFsx_X-KY;?`-4{djRs!- z31IT>@6YP?>sZ>--!Qn2QY|dEEp-JK#c1;$NNHcuH)!N4e;}xzmKlNVHc505O^463 zT6kJe&7UHy6H3slq8E~MnVVv$YK&&Nj+MP6r`f#SvcA~6d}(!Vouct*t7oUCXQ@pO z=C{)t*O{JTp8)|ggQLPmMoMB9#eYZ~pL7vgSwE0pQm@dTFbM2F;Devft>m3dRi#c# zTc4JZrb^wHdV|-%H3OY{HtQ1OFYOOmL1ZS+!;Mea8vQb2V`z9_o6lTNzN^@AgZhp}FXgx9;!Tb~aM5dVnqp-VoNz|TBypH%5c*Kq1ZlZ!AlWAH zC-HajUkM(gm&AF}1&ToR741sHo*bh&)N;MJrhHPhef_OQVao!T-v;+L+l>TDYQD#G zpGg6Sf_uWeqg-N#COF|PLZ9(0qMEdf@{?A{FhGhChx|k8A$ySrtqP;l{-iO}+@P7r zhf74TY%J>ny_5Q!w16-XADO6(ON!18zZ1O9zuimiw%7R}+&<5G|8=ft%Wqn5#nwhv z?JmDsa-ncyezN&e&e7~Ly&t^j4A72elAeV$$x+xW+!N&T=Rm?V5;pW#`MrW2XsGy% zR3%@eI-^}@cx((XZz&i6Z@FQWhMKch@8+*<-JQpJx7rqgzvYeFEiba){y=j`P56hX z%g`%H#|^+or~Dx3NfW3<(5+9hirIS;a!1$mEgLT0I6XW;tHvlGt5Ssi6SKl z2y>DL;d0|&01==(>Cf%t*%BvtCAGy3aEKMP0_~B zdQ|J7nW~zmK&27VOtA~PM<^B!1?P^Lj};scctT%9y>O&hDRGctln2!FUp^mimaM5v}t&Z^PNP#QuO&t?OH8Ub6(Ghnx)0k21yfCXB~bS$GX zV8~_v|Geey8fOh=n=QLQAbv0F|%7aSB6`}c8bNR+h!&==G&1^)MUUg$D3tN%6_WDaS}ol#?_XL%=k% zNNhe^0`G2HM8>f}=5yAv_p(+oztG)i*T^EmlH`2c1nlOxv(d{VYC$N1nx7Pu6?4lYs^8SjXv}FTXwU5q z?4M}Y4C+o9^s69#7XlZAaKdLq#l>mc ztsfdg>+e*rt>`M*U$`c}$TZt{Q$Gz_@#aGp)al5gVcr*wHV9&vF9PgGMrj_5ikwUs#vntX>ET{5m9=OM_kg2so#U*=4LR zOgqLPDuJ?=)RRoctFcod=Yxr)hPDI@1?^y|YXH3E*7eQqGPXrG-LrnHSyTD9%u;;J zawc!RDaLqEzZ_vLv9an{t+eq}%d?L9?$P~B`?roRt}8w7fD?XO@cppbNF+8T z!J7CHe;}oq@RT&1hJ~$MCuA725NGZgI1jL}F`db)2d3Z)t_?Q~apz<**U&e^=ed?L z03vxC$*34nYfrw}gel!RT#tv1qdRF*qxQ;DT?~cI&IMSAw#0 z$1=Bgad~;w>blR3}uRne0lO! z!X7e}s-jghUNR5EZlM!?H)~+2bm){4kl{iKeX0{+Awst!nxe^^^N z!;m7Nx18lhgU;Iq%!d6ygU{ubA_q7Ob~?NkaFj{Jo5`t=psxhh*22){KzqMh&zWwI zoi5wk*`)Sp+WlL~th;LctDcvsi}Ng=`2%wW#sb3y&~_ZuVahA=l`^Shf_S3nFX)LU zpe16xaH?>-utAuMV#TW^EZH!{Jyo-2A*6h2OhfZm7D`K8E1%cQvi@pX*~aOb+B?Sf zC58jPoe=L~;I)nm%?U4ydLK(j7@pV+Oly1MRkAm=3UU{#SlMhP=K^w+I~n}Qxx5{z zWvQni16%=Q#81dAwt~5Wwu`cl6qE8GX(@JgTv^oHus^|D{N>)x9%g5u!xFnSeY?Bf zz{^Knf1~DcWe$9vy@mhf6U^y3LIXy>Qu_z?ra5wh^pE72_>!m@U4hO*3Fu8>wy;{r zKu3#2qVJL|&?q@T?XTtNFJwoUF67l%s*6vT|EYRXH@k5N?C78LEVGHh1UdVY^m3Sgy7HI^fggTDCi1m!+%#J}w$Zg2cU*fugqc@V50eh_H zoGI*+%=vW4a+5w2B9pN=H`w}cBCVmgpap)m-Z$OeIDLUm*7okk_Ppk44NK~3t9&cA zm2N6pP;lLxWMXBb`ghtN>gCEW^4HS4l31}7U5MriX9)`g3c*v*;6qSHQIxnw@(27N zg(?s2CU9E6$Qf*&S)eJJT$Wn3q&Bu;Sc`YZs_svH7wz6Syl@V47kIh*wFkI|+zHo4 z*~S*ee@~1~E`c5Ja=3SVpuZ!8ox@4zdh-mtE^r;(;vIpcf;(>wH-fthW`hgNo$$`C zBBc|i;h!f)#&ctuBho|11qytBdj4^}=#&Img=xJzI=$PLG!=qlC%&SwK99c@xDAK-iv?|hKH&k;Jc*q=TKPw9&}#Lr z#^0twPf7^PRBCYnd7l4Jftazv8QrztVhzK>OoBuaI?4-;I-VrIm)&&Cj&KXB1K6&nSx33OZ*+58M7_Y5-NaRuUlSv zw=ie2gT&Ua?@L!idrI?nE3S5FWo((Eh*dx_8;zcZlUj_1pt=n`OF82AB03r-JOO@# z-+UJA6?XIO1)BxugcpD@%#}=%3Kip23N=Bu!EiRm*}SgcT~TJ4OV!ibjSbJ6zqC`k z3;TlY0vvw1>;itvJO8u6xbQJi)BZp8r%3Wmi6Ewv2UEY$f*8)gpTHs**fSPz6TtQA z%6rEh$lZo0Ifp^hDS}teTgrG+S_(Po1XdC^EBe3iy5QabmCr(tH|_yWukC*HH*}|W zL_o*vyxI#@vhvX-(S`gxPHvbn+0dcsS7j^p@>Z!tyhJntT`rUew1P!~M4;zA7PfLhDFMWA@)_zQdM~4vnZlmRnaSzqJmVOUeB>P{@`2z#I?Iu; zMJzt^2`C47Z<5VPm~_N$7rj3FN&>{ejbZUo+}Ps@ z!MI-FxBMauCk4{f^e4=>tO=Y@WE&zvmUBOFk8`ca6(j>04m#BYjxBpUvz~N^$NW2JI(W)>kG$nJ7NFZ?n&)KTkZe@`d$^gVt(-~=xCm7`fY5} zhv_;rm8wU|HHuMkt@Na1uw*DCFdm}&gd>Gt1n&fOf0gH zX6`N6Q@jf_5NTaeUQudGs)=Xe;hBoL=QfO~Ypvo|tScQ~bhuzg-euFjY^#2e?y!cb z%1~^Q(IiL2QKHRgrf@6J(uTHw-<*Ws!teXJ+8Ix!YMFvW&gNlK#bqHkpm zW|gx?AOa*CPJwjb3uk~2sS2a){_ zdCAb;ftwe@2}9(dy6*yK zWj2tu2ypi}bNN6UKgV(hH)0Ico=hjG@v9QQ#8YA}L==Xc2|#>Dcz$tR4lQyy{Y~BE zj?2Ip?yRq`X|Ft9zOqCONgu0;Yc%V1k#oh1P-!zYD_*I)xHK+Vo z$!hSzAA(HtYD0lGSi@A}6y4G$NwWACngP`0VxSBs2|vJ2ZYAm`S|d6uo+qu7MJn&9 zhw0`R&Kes`m-22{E*5VrZ>XA6=iZpx?BDUGdt`rs-3!NG&^PVsdm1KDB>XN=I2Xjn zC6*?=0fM@gTm`DmBIW^h9p@k~-@_n6SXkuvnC0;=fFszFyoG23Zqd#3 z3dSK84RQ(#!5`}VKMy>-c_u;z>mK(8@(mnfC!qPpK$TFuNVO@K@l$|=))aj);$q14 zfIB`zJg_eN9roCq?v`{OY;9>ASKmdyM9A`v3p&yeY3sN*H)f$8DeRiQa9{bvPNhB-#ZKwg%M>%(tL`AQr^!P5HZ-M*zH z4DjwX;Np@kgh0|iNC1=RH=xDz7n_2N0ETTB_dXAo8jwIo^@yQ>UL|_sJ;k0I(*y8+|PN3`-caGhc<+diY|#=op1qn1)TjS zh?(Ra)O311!;{_0+0R|do1gk8H9hTH8e;%5;BQ(^T3lKW5CSG4p6ut0NwisHKf)gT zm_$~*I+_NgI@^GKK36@eToyw|re}Xh_u+O~b4Y`8-G?ec`J~eB!Yc*qp-Jw3HcdYt zUOt7&KKTlnn{=H-D;_7JiwyAIk)k)yYiNonTr3i2N!{c$C0otYUeX^mF3U~JA5$1# zs;sD~wzZybB7*aFA*D)uP4pK(&OGnHH7sC z2M1WaA9);d`R?%8me`ljrEc5YoM)Y1yRs^%d`QVY*#8o8ji4e1>bY7QbqQ?fqofBU zSaAuu0cD}rz&jxazX2XSDN@1jXM(Iqo}}8TIjkF=eJ|&fnOv~CD5XqMd9-$OgHMZ3 z$M|kjpUQ5P!)E6Kw|iaze&T@h!C~S1qPE5^Nmz;#<1+{}QUTeWHkrPIIf(s)BLY(0 zL#{V>26r!a6?C;110(egXA@BOtc<7hPn3@&Pr?j*W#WAxp%sFPI4rQ%_pfKG>vP!1 zEw-uaS=iasS`4RKbM@GY(9-0h39uoVk#jq{TR&I(ULB^oFSnCp8<$3-9a|;TNKI#qLT_B~~SkN=YYvCGDdQqL(r*u=cPUAc-}Nb02byB*Y)7 z;q2kuV$)dbnCs~-v|*GMVogdGaNRD%Uy9iuSsL0FMDr(mpK!Nv;Q-&>+upyZY?*u2I8afLrMAxLZ;dH~Q z)@T;%tol{P38uGsGYe;woCR)WcKzn2*KMwylX^zlR%0Svf}kCO;@=X454#vq5PdUl z1vU>iEV(~LLChj=qyD7dV6xaNI2hPspMdY04J5NQ+@ahDhz8yX8KAkjLOXLJNu1J` zWRqx(3yppj{x|qNczNG@+;ctZ_{cuLKe*==P;56e2GzG$f2i16`W1)(-_3bOp`lQ> zM%$svQf!cGq+29BaThuhtrT_&tnfmZEPN`g5@w>?MQ0>-GEYUEYOiL2{zi6`X)gLTY0ROl%yO|-U-GM%1Q3@G92|m%P=(cdL z5N-g)=f1}l7e9xkwtISwo&U9+X!>ext#zzCT{gIwY4HW!AV0faKS1|Elc&0?oT@k= z<4Zcli$&fdqG&g|1YEs~(CO$CbcE=dc#5P`Izhov?En(m1;bQOMWg?egn$vRmNr%=w1cWw-GvUzy8D;liq

      ^*r4RY<=DJnI_HV6Kkq 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 literal 0 HcmV?d00001 diff --git a/addons/explosives/Data/UI/Cellphone_Background.paa b/addons/explosives/Data/UI/Cellphone_Background.paa new file mode 100644 index 0000000000000000000000000000000000000000..9cafe97af830d77d6d80293fba5ea24bd9483562 GIT binary patch literal 258205 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%0A#z#y(9ncxELCU~_D#0Z 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 z zNKfu6fDmxk={EP_tgK8hO?-j!?M&rnze|Gqlrx*Lk9}d^d&vrfR`E?G|n%K8CX?K9X*f>+l>*9+uL|M9(MW8 zR>t~L21vS1`~XI&p;GX3smnekXm0Rk)Ha=%VjoX~7FU{as9XRrG|%h3wzE0J&!v*B zr&i$cPf6LtC`8y1pBJG~+y{mSJQ@S!tl^(8Xq>K2JElXQ&`RaK$x;TS?Q5l*ib_ta zyRi(GKLgQw_7e@yKZs&p3ivshB#>pPT zF59qdl(9S$?<$&Fu)MwV02cU_;j*B-&pt2k7j^KsUN3rc7^OEh+7}9IP{a2@ds<0~ zYa&a8McCH1oRWM}?uaJOAzlbSrTwhCOZfM(lV8X2QD$c&Yx!DDHX@^|fYkG? z5qPk!$AIE($?1hkPMLCQ+!aA6RU=lm?P3)hXiGF{;pL#cO}HrYlq=LEH~Wjbf?AGp zw*e<7>azA>F!?5sHy(tYm-BZXG&_k2=nJepO;c>^$#pU zP-KC*vLcIhjlYT!CsPyG)*V0kz=Kc5X19dIaazDGTK5`wH}y3^sUc} zP+*6Q_UecVB>x3!(o`oTNp)ajO3G<4tGr zRFFs249q}vOaaV!@^9AJvJ6;Tmh zBz=dzbpi>r$LJK^YWA(uGGJO))0aML`VmW_r6iwG z{4AcPzdzT@WQqY7lM47^#&k@%Q=-23jfu&bPynG~FS@=&$tv_F2M0HS)s%{kq=jcK zYu%>lr)c*B!*VJ=3v9NFZ_oeX+o)SdeeHaFf%{}(hKHXEUgjs^ zf#4nN)+`-2msrC($4`S)>Q`-nF(%fz@0jM>dkM*mVbjl&d}5{M3&ybl(vu#qW_9%d z!ctN-vWQ6yOwPVJ_uOCZ8BS)R>BMt>A|e5M<$n;sc(IJos77(6w7rxE0HydhZQbQ! zqlh3QX;zJ(nB7beZ1nRWTiCgWHLYxP%rgDE#GvreHdmRBnhwLHo2(tQufw9Gs&1U3 zpsW&O5Tn`&74!^hC$=8ru!^cyl_#&lu~Jj~G2^T}0g1Mrnp>C;gJi^Kefh$fXxun; zlCU#3MV6#tVQ*NwMta7y2gkK@(+Dqo@>WScMxvql1k<$gyNJ#*f0V1UKG6jTA~ln?ZNbT!`Ei`gQk4 zY(jl7G6>)37b=~(1GGX(HgcTxue)CuhWTV^@{eZ5 z7CLpaq~#~RA5m=rO7-Sc3~7Loejp&i7d3z*P~@{*pP<ULQgVU#k%q8qugmbI_y>mbA=ES5*L59n`SSkY|#XN0c*x zaR#;dh*ExUfZ0l$^(q}bhlmg&&1svfOL%f-b6uryL!aHwTq>;l$L%~OcvC-k<6Y$P zyD=jCN$)@xXG~Swe`a3v5v!`cEi$v)vRG%7k9w#Y!~-cXNK=eZ^6+4d(H|9ghj_k@)SaMww4r7m%Zjeu+$XcY*SD%tjy>GBitw;8O5)p6Z=ZPp zH@<8H~0U)n54xYx$36qOk%CC2W~7sL2Mf76Mz6xyCluLP0W-6rp|b zUIeY|yzPQIuyj3be=;jOfw6dt!;>z?9ldh+4RBPD=UW+!qvuv^@X7Y9jXbpV7XQQ! zW#NA%d;dS0-aH_xy8j-Zdk16_VMxQF6fQ3J&P7DZy@46w$r3dc9YK~El1dU46iI~H z1ad*tGPeqZFcLwatZ{)^P@mK!!Hh&%TNa+l7{$0f0(&j$Ib-54wG4Oqw4p}%#DsG`u0KdU-X~9RS7GD9?}OEG75bYH zacHZBH8PJ#-TALMn*kqTV_}LwKw{EOKF&~NK~yb(yq@7#T0!VpjU_hMor!o&0!aiL_HK}h*x8dvhl8}Ha$#O#97YhX5o{%3s{Wir zAq#heU63I#Qlbm;0{av@g^M_k+)t?~qDEf{f+J;&Nuq5hoIfw@%P0tX9sod$;sPq% z8HN+oWV8@RNWSE%$;dS*VxfqR-}Tn*0aO$~XzJ9>EWoC|7ePQzw8W{3x~Z(%Mr;#* z{W>;Ab#+6uc1J%n6aoXSysulXt%Wfe)c|i}TB-tZrv}IhUPVGid04NY#aP@Um)Ooj z%S@H_9RK&b{tp>jq;kyDKE@R2Es9JcbCC;6!EX%^1fmoV6|LIV0tD*s`n|Mz5%v5- z(UozmQ3b!rR)Z{rkw)PwRk6whiQ1ox{yD+%UmR!fgcUJO5{`@Ll|j;2G}HiHfNyQ( zj8Vt)8;=K1^CwnRgDa1Sa_T@$>L)juu=Czxp|NAvE(tu7_a?_Js_$ToBZ{M2Ez1fGu6l?-CVrhXRv6*jiOHQ1TmO@&k+0B>v9%eZ^JVTh zrF}Uni57DP+3RyT6=PFUXX>JcTfB)pKR8rC*L2(`)mOcQ_9~LGzx|K5Q{IG|hCP%T zv=YH&%KkP2iGT{9l%tRs=LKT5*eLMH>sC|-AZa8Dt!$W}-_xs368?^%d6dvmDp9`! zHAED>XME&U-oo<&h0podh8Y?8yl8>9(*?iJ3%w!}xgK1j*M!~k6fss5Re{3GlG*{4 zp3#WAJ-@ayvOoKCE_ucWp_jQTiuleQm5{sBit66D9z6-=%c%;*N;+&5N;z=72PL-o z;M%Ti2n6#vFSsR(Hci}5g@0O6iD+lRtZ+&)TgKP}n-gA&!j78wlbCwjE(t(iH{c$? z2b%sIlSaFOe@ev3(n=m=dZRJ}h{iWP4s2IP;I<9*-LZpX73i2>na!A;TqE3%XCdl% zA=;N(8B@?mQAB^Kjm%nK1>TS_zzvy$MS9)d7ikY>rrn#}UKI1vW@y4AiQrPfn zHJD{-xFCOxO~@MZ6%fw1OjjfWrVtOttQX}c)|N7kZK3%I=PIBigL4CR7! z09}j?%I~lut|KB>WHzxjY$F;z!TLvuAom?O%br#R4^_dDT0jAq%^Y&jn(3RNNd+i* z&s#jY;qmnjNK_|1uy{x~^WKbf&*T`!C>2hY=#ygaFk!E~?Ijzib!T+sl{ugby*8WD zRwxD;nZVav{GZ4Tw zJoF3#>L|eIN2hb_V~jN3HT};gS*&pvG4M2fn6=O`X*+1!t3Ht~%X0RDHvn?Zj|Z|J zm*MKXi`b^CEatEmffp3P*b*G5>LSPU13zKw7vaG{kTaGsJ5^hO^6Z z-7sLB5EhUCD1dnS^C~!3p=mF}9t7!mst9GnCP&8>R{cKF5fF&1B`=2-w|!lxYB+V^ z7h1X)00o)TUs(w$DStBOr14f8%lQj?u#MqC+3u1V0pC|@kzLmdO8+guk4s7`8O@TB z;=Gbh61y`Z)A6Xcu@46tL!7V7h{!3BAXRln)EnLW_6qHswdS`AJKArX!fVfW& z9;6+`E6YcmoiT=&Uj#&-^*Fr?JX@HxWuaX7P%AQh* z_RTe+2@vp0Aa;i0^8Bl6d0FDlR=41rqT;X63u!Re4+>or$}Ao^3VwhUa9PQV122Mb zL2j+B$1=Ad{jrU9gdVK+3c1y11X6~Gqvc$^$%x`UaVzfJ>YffPr4mDeandIb!DO~cDe06E+H zuzFX*-vWI_Fr?xhHoa2tj^ zkT5_%yZ3geGAaAFMyuJ z{-5Bx>tn0G1N2LgQxqgk-V ztE4*{k53@n5vpu4A;f}V<|bsZe7oKdBr&~Xa=A0m3vUeSP{RAfgo^?n-T`iOv2}Rx zB!e1!bnz?3bcp#2;(PW%P0Z<&>V2tlJxQx4kV{hk>y5fK;?(ByQ6aU}$ctL%W?n#Y zd3^=+LkKLZl<@3)l9Zdj?%P;&Ezle5{)!yzJ^6kx}I;5BQJFepzN~ z6RG`f99zo|+i{6per!LTTz~rg*D?)!*7=FjE%kr(C~fz?MR9XBt$j*s)|lh3@;SVk=ZqVn^@-XKeQyEV>N{+5q$i_M0$E-ydfI+~t|04n6T z(FcV>M%v}fal`E~D|uf-x$xZ0L|yYCUcw>vlC`59^kBbFp31;I;YT8y8oj2$r7+F$ z7i|o~0UKSs76DiXf#x3%#OQhg7>DnKz~hRC8G1s zSlTw*`N+*f)e4mZlRDiQa~5rE^?`}i;4Hu#P=ig>EN{lAB`Yoc8ySBEw&UKU_DXD> ze)8WWwo_!z-vLQUSk3;BY#&@S7n9b8Q+NY)HJ^|-OYMDnjK_@X9yBwoOm2~BQGz4JWNCATSY3DV(<4}- z^%15x?if)rW93SB$KKC_u5HI%idgQ%vClx4%kha^khx;em$=j#$eqakRKnw6unw%H z8Do^n*3l-hQatD!={`fIJ0S|h( z1)d_~|0=sD!NYCNIN6)>lrdgHw5%(ugg~W8j>c$kz`=5wt}g~@b-vFyzliAXF9bjrz&{b_?~bnRD}gtZzoljdWBM~g#RUhm3@6(eDyNJG zJmt1p`>hhqt@n}zg6QbDxc~Js%PM{3NyPh5Dpqj^4~}7Ft*4Jb0RNRU2_F(&5$ESI z#;H(&G1uL>!>Gp!PnTD@oxo_!?6sK<^XwPrtuOw%ht?#7h%Z)s2|}5))2TVbV|i@+ zCM*tx3Fk|~kKWGWrL&);x_M5Tf!CIh1x|0QTJ%#4!S$?ukCn>B#Gm^hVW7x zhm)*vx^ZBQWKs)ysO2yju8_D14Xo{3!qHu}i_Pe-5Y5btI6O0m+`*30Ma z(Z!AX_I(HRH7zyqXE_r-a|E@DXkZ*p?sF;oB?JD)S2stxFj8kgcUzmx+`S$Aydn0I zqw-igW1A!V@@CA+rvr@IS-7<+QTO&B9Bm_dRJ73#o&>F?yreSdYX@k`LTKAy!V|K5 z=gxu`Xl2M-Usn+Bn`Rw&{~kD~GV@Mdrk4oK+R52@SCt z@sZ0Amea&2UEBv4&EzefUhe42TMa9f&H~_7SIFXq?>oc(SIhnE;6CIpbY``=>g)f* zFtFz~mXKc`Yj*k7tBRw;PMoG}?-2j2=pVsyegT2awC3$W)xx!Fb+r0j{H5K|4Jh08 zkbgA28#)7Hv6sdDUi&&9Cn1J8d&A&ug@1X{7puk z;r?u8!YBS3?H+&lB;t-Zw*$07Gk09#(;y@64xSkoXykm(TUPvQC5jv~l@!$8l1oJI z2@V=4bvQu0SLW%F5!yupUn13b>lPG?o*(d#Xu^FdE)&9ZY_&xE1rIA7{?ZGZ z%S|u)kZ=cy-neER0~=kB_{n0Zc#|D*m%M~QFm$*0wR3YsyB3kY#H$YMPi%=B!hrj= z2QCv2*Vgzp_&6u@kG;g@*lS!Oz_p#2i&4&yhguUox)New{c}sVx#I{ka&qp_Qo}8wBM}ob&jZiUgk+@e?9|Uv+ z>XvpW&+}hJ0TpM)fPj1S9Y|Y&x}?93gWZqzsJu2u-hfS5%90r!QGk5@CIEz;k{O29 zRwzGGvKZ1Mm_aF7ck@AE7DlJxNH8%`*PI#S8eE!7{nvt7n-js#@?%)bq!qf=v`KuM z(#ciFzopf*)0a2Te!4m-1*3PTTjg6m1SC(ZKXy8t8JlR6JpNKet5r@}AI2*Bde5TZMk{pF`m!GV!q&x(#zbYGFEw-Mzn zcWqd!Ur&xMzLNXB#P)zxlpliXHz}wgHx`yw0#=YuB6ftPXEEAUN18@m^u(5Wm~+B| z$2lok*;pv@CmIj87+6QK@isoTk(8+|M{L@a1%s{9O!qcaF8N>-Hwr5?OiiAuUbwkvBmJrc=inornxY zVi>Dkl)+msmV##Vyhz!YYy>n$1eEbojiz$zC3B&H9uM z|5c=RaVifEqji@>>NT(Ba)Mjp=`UQJ<$`EzT4J+`A2q)3@PFe=@%85;tou0MOY2h; zlpuGA)S|FbH_$$z)E)3RiwS@I_d;|4@~kF6mO~hBo)Rujer{9g7-=YmEp37cZIIC= zrX)9~Vepl{feOFnureBI9|gwDtfRgSp9qikzo8bov5pK)zgVjCC1+~-DV^TYoz5@m zcQxF?j4SSCP9y9A>co-PyN;oY4cyv9$(9Qm(iv%_aHmACRAAS3+*OIY1bp<^OVA(> zg5WWvl?*k5TV#BgRg`D1O>$+_=ZHnADgVym_8-^w(j|M8mVkYuRuJksNq(0&T%5@=Y9qBdg)B~FDrRHuN|tMqJD>9Nm-2Sia4su*|Iq*%SJzdSz&&WM zy<_IJ`VSqN0lC&v;!w{&iF_ZGb`6fZDA39(E3q~2kJV3oXBH3{7yPbu%p^}n?TK!a z)PqByW&nsKtc+3c(T%f5y<~OV+U&C+ntD^Zk{-zxY{+Bu^HHckK8n%GCsVO@AXzn4 z(N01}^UEqqJ%zaU*nzp?heXGRA7K3Z>AK0i{^a(tmnhxDggz|uO(05Zs%uzXYHQXN zTDRk1b&4{rQ^_CusJRU7DKQ>HWsqRjfNAPamUo#8e_~8NGe%u5?vR*eeQ_gaF&5c- z8UGcL9V-#;oXAU|!IB`_B>Y?)`9(quG(mm^Qn01?nHJDBE{R#T8`ou$cxIkGjK<7z zU;M~;Zqh8%SfO4f3^7#Ka@|J=0TJ*dry}&$ojb4p=TqoYo?hSf)g=}8Kc$!V@kvk< zhe~|pa-Rr6X(EqI?_PaB7VENRo~Y+vw+%ed)@apkR|ET)xVj2pt;f zW}&q`TRD^@fxy^JOf2?SPn8?y+Cy zuxdHD0gZD6LN{limXu|)GB%x6Pbaw6Eh|w&j<9USn%+TCE{VnVF!L*vwk@+2D+6yk z?ai1ZX^l;S{G0RO&#rHH1RF4AaM}oIwIFmR{&>|@jl5X?hiG~3ZSCV2`}kNd7wTRY zKQfwq>0@2>HU2mbX0w5sDxe)UGahS>9AlaK{m_dN6CU_Q+2!u!v#(rn`O7d?5n0UpJsAe|uVMWerf z^vPp?)~o^hiZZ@M9P8@ef%n#H*ZQ7+{j@0We3_oVdXt66=jc1FO2+sSS0tu&h9{3X zcqY36A|H2<;;zZl6RjNU9sPKWu8EvB(WV6UJh*q zW{NTvF|^u))WhMEXz1L8Y?MzV_a&@gjsArCS_yKpkmwtd53yX(ue~k44b^_~k*fqr zO!%_-l-mT}I+6CfpgTB&4}7&5gg_ubefhQ7N}EQVNr1CVOG^hUn`bfwp?MJ=GEAmA z(;0OxsD*!x<^R$oaBUXF_vR+yj;q8T$~z~gVx%Q|u=NIQ^!L+85T9k$Ll{aH{AdSl zoF_sZ7Dorupm)9@mOm8+dxiw-|M1Jxz0}oG(r*drPe1(>;9JCxDCao*y>dlzxp;5s z)+TS42>AxSNe#4>;NKV-ZT3Xx3pbM{FEz@oZMtcqi&MY<9<4wq0J9J+hhmH;RouUf zci1orEArW!?qOG}j*`7pDbpF_UKFwPnRYyiIO4r{A-Dzvy6CqaXuCVFvc|bYkF@78 ztDCDm+AcAEjqac^DsBlcl6Ig%vhwEdzca=+v8+Ml0q6kDzt!MTWvBsCFwmm(6=3kz zMpoB2W+KSW#xaYrC;m&PI#hkVuC9ZTj)B(IQ0_iPx4b4}E!@q~R|G{(@@>UyQHpm* z!pj0xnx4qGS(MB3$i5gl+lBn#`xBD>IV!v}HA$jArzR--Eg-#b3+GceW5M3By(HF1 zJgS-SfO9v!XwsvWc1*IiQ=BTW%FbVrtxXrreb|F_K9iMAOJ^b#jlI-0T!jG1)20)y z+BB^0yO`}$X_KT*C5(^5dcqulDx2zSt^&5KARercBgd8yCF2=C*5aI7iUT5s26Jh+ zt3_g*4@|(lVDvw%?9bDs2@+cz0BEgaF6w^)@ho9eG&FOr5YRHA{DkX!Dk{(+=ZkXL z(r$@#5oNJjwa8;0!tD}e>p@hQBZ!aZy1Anvd7P7Y4Cx|ZN z1^G|uu)=2Xg*yU0K9(jFb2~!Y4R|xextmQHtVV_oGnMG7zZuKlgZHbBJ!fUkNxhge zI{{(I3qLcJH9xqCI3sx9DYLq7wLmWi$uSE8Jf`>ek58-95y6_&q2W!&iH5#53pko#G1ybsA#?!{iO&@+DE>mT2=6VVBr zfVAv+)bGBCd#2+C{IMhzp*Yww1{Y(a!~bf#NG=fXl~1qsc8);LIO41)lI=L3yyq!d zsIXrlziL{h4#o&B;Msw6D7(Rlww>3+O#+me#Dus7l(LD zmAjUc&8%8LG-`7|pqUq|zC{~f#cD`lR6+t{n#GCFJ1v$A?8Fe*mud$#dOPv-iqGf} z&HVq?g5utKkWyz8A-!$8!TJvh3#b<5sTE4Fh(;6hCHPe%SWj_>Jxn)ocbzkCT&nutbs* z2!2}EaAGTzt%kSQfC9`oe%QA`OiA0xa`}a_t4MX=2Q@b#fYR+9v^v`-_v1Zon97?@ zi!Oe2b?Q~x=z?*}sRN}I!-!d~i$uBKSXF%5{W!X`2SWc5E=m}z?lGZ#3^k@_UY;_f!Lbt#JN z$$dGjk)X^E%qgDx23X^6Vu5N{!x|?LZ%!G7G$A9p9JXv$rYm&B(zbjb!EVAWxt2y+ zTW_5LH!*aKJ0+Li0^Yzj=hM|Q%G(lEEBLzC;s?{OFhP(& zN*hasW6I}K7@b>2E>6CPRs{Gy2*Vj8<2^1!$T23y0b9!*MIA^+y|fkqbr%V%BCJ)x z=rdoibYn&Vgd|MW|T+)MilBEz1Sv!pj-m~cf-h9Z{a-oY09{X1;8_8n3gXIVI2O}c9)^f)tH5T z;ry&oJ$a zlhG2TQ-M-3s3g)Q`UvU8${miucn{ zm%~Ux~ztip&phDeFvSvYdcmzsFfgG2z!>4gFoltdXmOFdK-kP-evvT%VBh=j)i zt1@}GaQ^|)y|R@tk2nS2s)+Nm!5OWrV6@{8R{P}sr$z+{V-fLj8SaAjkZ66aGhx@LwHY`4JdpTBpkyvTT znh42|cOPaE%vrHsCF&+cZmd-WbR+1BLW;8 z<|zS(MZ&O2^el-qL=+h?#Ort`;e(qoE95Y5w>xM`PEE~Wj9-JZy)M?q0K-ostZ8YJ zc+uuvy^G&wE&jP@z#SNmt($=1w;)>Q>2#{FH(IOWKpOi3ia~NclIv^EukM*d1se=# zsj`L3!E1J##H-(~Oc>5)b!|_-GSjwglw;1Nz0SaR0KWQ~wU4~^u(Hu1(w|Vc&B18S zYu51~RyHTQ`zK%Gz-*O$TRB`ZZcv+zWO-$7nU-;k_J&*K7UD+H+9;NrWxXk(j0VPb zO88pGAwxRe*qc7*OO>86qxjdJd@?(Wl?D(T*Yb=Fm(Oj54BKzh%Ux2s)~3@^C%-&F zK}Z5^TkVtAFv8pJEBKC@*_NLqalCl5Se%!y?G!N5PbXyw_JP37_ga<6m7YkpOR%UuTk%^UN ziD~?UQ7)BMNm%%Hd>xh!*Cjhq0=;8^vH!Be%Vo6!aw1R(3hjw8;RAsaOZb4r9dlvQ zHDaL3U1EHYIPA`Z8=n=8_+FoYEu4kRL>D^aG8ki>&&BWs!aJw}ET+DGTDsatXxBP0 z_!!}HQ5)BGf>w(my>VquXZn$ujKec3YSr5yd~RR8I-9ZmOxenbnEDOx@wdotlRNA+ zJWl-f5RY~gD!XMWO$^441w-I1bWyeiMAv;wCK!=T6{AqtXC^EoPNe*|01udgufs7Yb<~R<47vpGIkQ+{6Hg;+v=t1 zEN8yg2yM=0DDU=0Cn{ERjIG2Xl36B+RFYcIx*(Cc53%dwjtKB$J^ ziwvqmUg}x2>?mWrivy|2f})O0)SThKmvGbIWV%_WW9-%Wl*{6dmse5GgZ?$?ZYHWv zBYu~tyL%GydXzak5k$<0{>ErZla+z)qA}|J*juqlos6RsV4$T`-9JEu&lb8dwpGH| zCgra~708K1jiVmL%~r!OEYU~|P+CoKwqYGB{gQapyd{U_Mq90qBrwBxRus^EI|g+Q zxhPfNna$5;Hx)7wohYT%?~~@WQ3tCTlYgBk_tRY$QGsL*QkJc@%xsA|PV5nG&BkP^ zp_J(E8|(ldFLxoLR42YAw@-MVFJjpC>K<12XKVj|V5#gUm`B{vH0Q7~!hFj?+n)Ie z1s-K*X=xT#ul5%f%-%0Cegk@0Yp0%{IuaX_V;nf|SYQl_S2zGr`7{&}3SA}gM3@S~ z64HCbrBFp5QUsB4JX8^+79>0aOT$b3ou`YL4I>`lPe62u(r+|WRa|O%$2A=Aj>n~;)?j=y}M_o8Qbi) zYDnMnYlkR@S$l)|{Z*dCT>e#JE^IgDQ>sDnop4BWaiKdL+l@-68RfL3GYi{F4d01K znSnq3(7W&;a=}?@#8LlURRZNbS$~z)SDylvl#$CbGS}lFF9RGEv+8ji>Jv-eYLmY_ z*(XB3T)~80U##K`)yHUi?i0%P1|=w?&C^AjU&~V^jXjBf|55VbwQVXeEd`rkZ7Nvs znbU%=zWuUk3a_?Rydia#@2fMR|5G$p*r3Cn=i{9357bFPj)BJUi4%-T|3Z|vDIo!6 zy4)|XsU>x~mNknsR5P8d#JH8REbF$a zc=%;!Cn)ERaDg5V5B)|#w7vqy?Wkl6BEXn4renwM<0#cZ3`*51qB5$QW$d%FD6{-L z76E_qX_!N#KU9KSF{ZDsf;N(VFb!GVV@10^hL~vGBp2TQ6xKEio- z%Q}5YDzlop{7h#y!gp2H<%tQtSgco)2P%@-I-K0X-gAs`I8YW)`Jz!`+ycAu3%jc7 zP)A#juc5UdR(c6fI)6jkMvL|DlLumJY!)CSNs7EmS|fcXj#Raj?u0nWsRJ%M(*&-x zno<$@_d(wb^UF(8bf{^&+YOa4r^8Ci=G-U>b@_HMy98!egm?bc(~RBql-A$X0w@|W__QNwI>c2rugU+Ja{91?T;s-rY7*zvUx^O3fHL}Elh1F;- zqKMvM$7R+evpT2o3zBVBs88gr_$jx{tqT4E4V8?-YOt&}2)=e7`;fAdTgaBeL;N<# znH+HoAMoPGxrVb2|4LU>`xb?WoTu+(Y-Xp_=)VGDUmWId!`qS*9wh2ce=LJEBos9w zDTF`VO>1&D{A+J^w|OyGM`@aczVi1dV+R@4aw6astLxbOLQ5NINS=Niu|K4WMQwb! zvIk3%B1)H0ZM4vqWg_)MKfTKNI@3}z?$%G^CcOS35x;yT@3ghi?hme)pTIrPt{Q_n zv)1S0*+YklfM|A}DrD6b^cuwGqwQaT{*t9AM(hw!v%*q&H{#s!UYorxkGsDPI#Lj* z4+#cEZLCk;l-9guojx%{?7x`bT*w6p+(V|XNQwfylbWBUw8R;6Q%x19E- zE{KRxfWS$>A4oo_HI5JO8}sK=WRL-NTcgWI4GK_q2u_pFiae6_m|Hr1UdTl0Q92tB zLKmx4r3hle<}C2?H|%zY!yvgXd4LN-7_AdFrFxQp_-reP(mFfGO3x8<2NUaA^^Zi) zv2ZA^Sk|Opp*12y!f|3lMuCO3sGjl`I};R0;=+Eg>o|X78(jWI_~~Ut?F$P)GQrR} zEbh+%H?HWttABt{Ilkwm1Nbuf`2MYF{V05i-R8J*P$1~qFlfMmWq3%p3EDLNXU^(q zvtxQOW(@BA*g8UCrcA6m1SEhPybA~xO+|WsfOu^jO;AsqP1LSrV30Oxf-e zk5jZO`O4@q8`a55qlldoJ$UBZofiO-CsNW9vbyfGE-U{PUf=e6VGSy4Wg4w^_(ZaO zRx~wHnF&jXJF5GCv)qFHS8IdtwhL=dPiBn;grW}wc%8?rR;)IM_%uXPXD>j>_v-zC zELg!1>yuZzveLZ3@M&pT05Jk}vdUB&uMoUAdF1l;fnkSfosU@CQ6kr0wtRg^e0_S4V3;g87_ml4Tri{_{zW>g)2bAVwy*5_( z5pdI;Cit;%$+{IQSN#8w?7tK9xn|Kwk+W?dm(bsou@awbp(wK9KvEYIUi_>`yzR$u zMtYY#*Yx`VbUOYp1M*VG#%7`GO#>V|hF{NFUo<$XaRtb;6#T8?gD&HKy#aKst>X{$ z9lnnVzlL)~wzOhDWMWH|@r=KlpWu%9My-`|6T?J!<*6v)LwnxAiy$C0<3c}*q zA0zvS)Hk7Q;OrQ5i%{6Bz;^p-WIW1<3xlGF421^*yvXCj(h66^-vIV&NXsSr$vX&r z#jG-xJ5bis0}*)M^XbppEDMiHb?siy;gs4RZyoCdcQ4=D191qQL);70!AZjBMgQEp z!V|u0B!GielyM~?duTV|KHNR@3mrzRfG~OO_tt9Gku*>YB9fo5;q)Ll=cHd`=|DXc zJ;#hz*-IVR4R;a?8i=CdUmjoxO(A`RAAo;6PW-6@a|0J`z`=5x@)a#TBo^q%!p}y) zGtS~~{q77;c3f6yvv%M$%I-W$<~N5o7M{Ew3ON*iNMNvL)P{SaW*RsHGrHgisY&rFQ5bP%Ny5iJV|SI z*HE06D?#UK7Ln$`awd!n7UP=78!IY#O#!R|KlSFAQDv6`F&|622-13_J!{WB@*SC!>Uh=`p6^a1g1b$kv z0E9)s9axzT?Xx{A^2Tu7dB`-q*t#hh&TKM5J#^;|ZCSMS(r-9P4P;i+(tNeVl(b(Y zN5oUz*@6&}dFw1R&HeI3bLad_oBSWEUY03$)5e?x*v#%}+L6L?NzZl`(%NY6e5bz% zjcGB4paJbxP{9ex_!Al5GWg5^Ru{QAUXjrOGhe4snP(`@ ztGkmAXpv1bf8zhUp{wU9Yf}+RB=yK5Dx%@emC<|w^;OB-Q7q1vPNC_B$4)@kxgfON z_JzBavNi!RsNj~eT3Op_nA1UF=FxFlI^9oSLNKK#U+1ZZxd$%?@cBY`Fb~q@{sgo1 zLLtK2n+NwF(1i^k8_8Q=Kw4K`2+NdIa3*3hZ?|#bu{u#GUSWV4NOdEV3!d!Nl+23N->O=~ipC_`%&L zC(tHAmPj8?2(HIHLL@M+8)mp*!(=g)1(~Q(&c`K_#GR|m{g53ZcTk=!EfQlhU>8@9 zT>_-68CCF|d3Z=fT!=w)6U9)U>ELr_Cn6|ME05V#k!XsE!L`{>c00+^V*yMN-w1B(N&&n(EpZD{Yflm>4s+biW$0rk!( zPu}{zzy2;vz{j>9p|Nw`L|JBfPIY4(Z%hLhQLv4At{_tr1`fM0>I{Ifc@Hgj80@PD z$Loa!C=AHt`v>pN;$0A?#Mf0qbw~HU;@W^j+Kl;yM@0_`d;vKn-n_jO328cnj@ymq z9KH)(lw7H}W06?AljRNI=1g#2oLcUk-C3$9d57UzhAS`{t*&}-VO)Wz!eEkh$mLtvmjYOHoQDgKJ;v%!`h~c z^?wpZOTCG|RkJ!?JB(ho6U4}ENpDiN0K!~#<{`hLr%+bzLPd4WKA%=g{g6K#x~^XS zHC2pdyYVwVIa^8FZp)BR>Ro3#$d#QlfJ)C^azZD5U7zcal$D%b9;&%c>E_YBM;TXq} zndPa`(5_n>DCLNyPudIk6S~lP??0^6LRi*o-)6Ofs%MZfZ_g}m3_{p`oCoMc-3WpB ziBzk>6Y0%KT^VHxnOes~E;?B|)ZiUnBbSc|Q6>cG%$4Ec5@R?Sr|T%#%%I=zjjr7B zVK^un;|bNkFnqyf)!+)LC;ACX4%>%8b`;AwGUEHrTF_7Z!COD(RXxlb33x95(mZ_z zAQOM#8AEk&WTBR`clf}hj$ziN1knG>0G$7i#-;>rteajBoy0N4=kX6?8$&$KSUSX; z>TYd%oa*7>fnlQ0Mo|NHZqLVkPC-pV7e$ACv60g01~xo{Fy$8)@xKugxz1oQmt9!+uywS<>6;cSCL2OC0&;v$>75 z@wEgInLM!m&HnGg5pG3gP zR5V~Elx*O^(QJSDA3hDE38iJ&%AXHyRaF^(j!*603+a)P5rO7^>)lVt;#n^BXa4<) zO(_sP;Y9-)^kh&e&oNJ4pt0j`NW03g=t((jBorGbzbTRvgr?B=fKME!a^1G` z-#dP1*IT#@Rmsj0wH>pAhLXT8#O$h}v%d1b(KwR%9{b!+qeVEaMzuW-RXLf@E(zJm zhs(-#+j!QJq~go0*Zmr_#9Oot60H6?7kZF)JBZZ1XZEtj5<=VEC1dTScIR&gP&^Pn z4r>AGbP!9cBJbcw@6k-ArB{3|j$gMFs9=Kwq|<_{t5-Al0l&<_SU3E2j&tcu9|GCH zlX8(Y(pVNeN*b)aM+E?5+!lCz0!ufMAc&aLkaP^7^^@Aepwx z0YF1Q+&r0(&1cnCNW8OZGf_}b7R5NW?~cMBI(<>NT{47mvZj5K(q0|Jv#EAPnS#m+ z5bKC3@o~2pjq`fS7*5pwbFhz)YGtFmj#B zZOfS$I&9f`3{$fmVRYDcdsNO_`en2>*jw#Gmah0jV$_q-KUkXU8MTTSxxD&QXa|ZK zO1x5oJ={+Gf=#DivFQ{7%K5whGH5?XU|(9@lx9~#a|cmg_+#P4ZF$gu8w+`z_F2ky zCVbOxg{uw+GhuJ;4>WaRn3Mqxi>{{_H^A63IJqLYD;F*2?ZqnE7!P}#_3rl+2E6x1GMc2zsO@MXervflwXRo@xfS}ujjl?O&SxUWE^8gV6{G?nm@7agW68M zBINF^#VUhf_P2?+4aX9OHNM2`o8ULBxU0a$myyMJRWBhI;NO1sbdZrFIQ7%Re6)&K z+dlcB|AF4S18-FGH>Lh>4a(m-;@>he&O>qx0Th2BA z%M~giqW*a{$ba3Jq-6?T!0i>lSc{yWLB%kljsR>Si+sA4Ha_&rPX;VO1DzUqW^q# z*7HaFXO^XVl*a#x<{2gBEZW+P9g?m$Jo5SZ~ZkpLaE5;mBVJol& zUbKfOuHUt?8!ZrJkVUf^^L5dMaYHCafV)ZV8W>X}AHxk6me#IsO7;4!G%1ZXjt9v; z+F`i}Kuvb*tbjJM;)Zc#bbZ&I3JH*nxHVecc>eC^==!gq-Tk!K3?;E(kcBl(dtr9h zNf_?yATUoD_B;YOH4*|o1+_i2-D5EfFps@tOjE!vJs;vl1DXsKHGJw8T>j`&-G8wJ ztFvG9$y!RRT?=o5{}I|9-o)pQ^7FC??HN+5u-u|7(@Q;O@c0D;x4^Y zR-xa;F9BwjCyhVt?WFf7&d&M-6j0yF%3)}zWB(}C*3O@vh<&HF@#W6Z`k_<&tNv{` z2OS^6Zruee68RHPD$l|icRaB@?`jQ?L~Ko-`xgIo+B0=8SgpMO1cq(5N0&P-CGPZO z&&I`Hzr;ym+lG!8n&nphZd|tY%*6pZ5`@Y#>=jDgKs;(Gy3Wch+4^;~X8bb>W7rNy z0oI=ViIN_xB}i9tJuwr29MQ3_(hFZly_gN29D1hwdnc?t5~GS#x7-MCgH+$|anZDT zq+cXAJTwY|FYRPTYsbkZoS2T=M`+tiKuv7K(N|x66=5FMV1VCqal^XrSP;M`Q9I22 zSt{6v=k{7b5c1KN5%H?1ZdSU0FrN&;RR||8zW8Y-Uit9fOQ7otrep=__YdNL55Eoz;{qyxJ{~4$H6Q1trULN-Rr^?_7P1HZgk> zA7(nW;Y3VP4z|s~O&zrddY&yS)md1&tepzE#p^zi-W)XY!@T;H&MOoc1?$kuM6OM7Hjrnhg)=0GoPEt>|LF-Aurem;LfeW>ufT1nmv6zGTG9hYK_- z&&h0;mE4AS6&Dq?7L`0gJi!UvKKod(+1nL#yG{Aq@<6z1a2kEkTb&Xci{>a(#d%7g zaqF|caIA3N-2IfLID2g;c+sl<{w9m>w%}z6y@Y+u;0-88w5*4AS^(Ar7bRcqbuC~y zRZ#U#c-M;a+TuAZ49{EgIS)>7GVE>Y=7rsA;cd;=CmSsx1B^OJEVL^9eW9EGyFy3X zV!=ENPIf%DVv?NuUTQMHlPAb2YOWU$MFjbARCfAVa2BC8Gl_};{_#E@>wIw#q?~+i z8cvEfPV>M*uk)*?73JI(-A-0oN-U3=u4ko5#J#+9_$|v;TF=vA&rVYgnO(=I@2KmE zYTnzPlhv6gNTlPTTU*+7G)Pzach7A`(^-r~XT?f2$dY<(4jW`VN^tRaW7#lyfZMxf zNmxUn`;xd07Feb0$$vud##tYToHPLA`6v3lOjageFO2jhK6s{l+11Y2kNrRymBetn z7g!{GU5`RX++Ziwf%>^gJhu1ZSuGk78R7N)>gW6o)5UI90v12IHVMt~G8__CSbLwp znuC>U9>N;cv<~N1+)z)Z`ukNLXUs<*&JlqjM#_81FK>1xrPG>szY=fDFLGXf2sKO( z1YTfC<15O`vzkxSn%BpQ^b3f3t`V11Mr_tW6-1|%dRNlY3ZJ|Wc2=V9^f)ahy(@YE zm9UsQxJGn>-hWh>yggLQnP~MA^kEO??SW#u8M$3aglxB3S(!cQtT{+}l+XkBT?8u=as&(quc&JVcBS*++5TgcQ_BjGVw} zUuw|8#)V?7&VCu@8C<_Wpi9#&31I#oqGNHY`k$@SR9u2VgO7R@w@t#8WPp{8#KY@t z@*iMBV0dZPTE->|#Qg8}bdf<(2t){)!8*jmMr z@1Ll}N`j2o?KPd?JJ`y<;Onu%jXcog6jXseG`1_ySO2h8c=w{%Zng4eeKU$74S?b!RMg*c~UxS6{e z5p4E!8LzXoVfC6D6bP26mZ$>gSRT%d!ileykNPVLi*ZvO{{NRTmGeKFm5vILH1~UN zu145j58Cq6q7(*9KTtOJrs_V)NaH=C_ayJTugGLh(YKz_ZeAEu2MZ=>`D1vA!EiEz}6P$J%65ny@+jPf8aZb zoNM4Yp&kNx&gMfpQ!(0ZWQq&KWJ+SdmQkQVoO?mw!Kgt~n7m4W`_Pb6Q%O6{9xNB- zHMEuW;Udo^hI_xB&Eg2ZIN81%n=6&W(X{O~pFDXxS5IrUFNYKyQDs)3ND3f+uk->I zC>TtDV0r_jQV7MmIGjuwVHcJT;p)r`Df4y`$cdreAG^FJxNKlmYDOj7qk40twCI_`Eo zHX}Pk5i+Kc4v*h>KpZ)~VO-8RwrYV`KdEajLG zM)Ued9*3(zp)(cH7Af$b<@aetZta7o~ ze*@=KBn*!V0a+v!M5M+jn_ahs=RX>`mp|fzQfar->h;cx;(v{P`O#aYtXa@}3J>hs zV!SQy8q^UYp7j=gH!%cyT%NdsgQ`<${EpW@Q8^tU-!V1;3BPiSlGX?|i1Y+8c+ixI zygTMNX5%+Jrp8BISp9BO-wyj97W=J0hfKv2NxuLvS&MRB6w!H;w=6$XEo!KjW6JcZ zc-zJl1`8RtZ-%NRJW1$C)BXb~S?Tyg@PAUTBx$4gRq*%Xr;I9hmq?Xle4XsUC#*D# zC@K@aVkcIp+G4iMpzWd`c-?8ug6c#R651Q6?v_mB$KjIR+EYA2zCw|Su7x1>4z7K{ z+Vn(0yQ3X9`PwxFV@pzTcRMt`f@MB=~CG6f#*CscHo|Ct5j)Fx9)2T@R!bQQGSQl%TYkaT(A=+#@zu!-hf= zu$lTvPub-LM4OQn#k6f6c7U(uc8+xt5~ohzgjCLEbSOGm7kbd79~07WoRf&Xr`pV{ zwseUVuFGm65wq{fwIE%^@L|8I{OVylMid$4s z(L zfa%uw%k~r$-FsAo?FF#A2~DcrtX8-&aL5T^IXO_ua_D5?;4b(GJ04uCrA?Ris>UdE zvuK;ZX;Jd8QC;jX1N|Q%aqf^M7!N+>ML!+pG6mWH3Iq?XBnqP_qN|qy-gz?mGj=Cr zQ}m=~{5cc$)Cl({IiupQMnuSUKku`*xeIDDyk|6&;N-8uthS(L<_73IJqW>vX}F#t z&wtp|o4gL@Dl8kz$>e~eOscfB~-cwfozrd*5TxdC0{ zSRqM37*(AH3dBe2wjjyYpfoRpsug1#L+Rv}Y{dLm5%c@3IoQh_i>$G+cOa3K$(8*d z(e}V)DrcR>LfgK8YjA20_gff}$H!a=ZGUS&B~=mjm>4KB<`G8~36OIjno+Hqrqzh@ z9=F~>O&aENG17h&^Uy4`4l7#}SZo`EN2Tiwtdpt)_Xh2 z-zP3+r(R>#0;0dAPR1Wg^Qk@H#`qJr+WN3Xulg$f)L1g|;{L*~-F$0U={7=@ZMggI z@qMaW&EN2n8#N~Wa-@FMKZp;Qcu_Nqg{k%%b#08DC>QO%o0*vS|FQJ#0ZrBY|L2^s zl$$WrV3@)|@mvs*(hwYMj;utj1Sbe%Bk5w2N+OD|u>od^nq9=wFbN}Zh?IsG92-ih zX^)zQm?)4wCW4Bo2*S4Wd!6U|>!0uf!a1MI`~7;qE}-{Q>-vW7Vd~I9hD|Ag;#z>GhbKnB z93O#LTls}y`OaVzYd^?7O{k+Ne-OfSA zM*6OjN#?cK=VNDByjL)duYIcb{`W>M)97^`dp+k5n2(w&rs?pL?#5BhQ{5MNTkt=i zMxS`^Q(7tfd#fKsx2)+i@;=)L7WNyYX2qK(46u?rz|@i=ao(c-uJ|Cv3&E7SX85KG z*4j)92V-j^*tjX)Niw@#J$L=cle@2OUHE>Y=$7#%u*=szJG}hyaH3JD3ZP~Z4?`Tv zFf4GRGLJQVv2tB)n9FpjoOjs8@$g&PY_$1f$~nyll%C% z5Zy<>B$sRNll_@b)3KNT+VyXcib4ZRB?_heuvoBCsY8nsy2YxjV$*wezHr}behcMrdxxKyoPobdH0&Z{~ht`%!bBzu18($8N^Kh%>iFMqsXGCHTme{+h8SXa>0 zD%puksUWWT9s>zf8E9@Jv-9953;^T7TNyiftCbuWxcd-Z24QyOvS;J04~jVVCu=w| z>%SV-ZqBVb5MnGuGuxEgHxJksD4&o12Cd&$GP3MEOs#oE2R`M_P+}SftE^06@b6mQ zPW_Q?0wvSUuq7+L4^Za+4(O8}br(P-rqbFid>C(vj~KFHwyAZeax}>w%;Ow?Q)!P) zLr$^%6M8R z2p!^JVqWGevvi;mO`v)b?u@Xo4vkw@X@c%(*9M>ok#u7)4#Ys%073Zz$CsMKSLKcA zE)0vWhRS6{!XQjJhzK}-uPaDLDpwr+(PqCBh@prjF2NUruvlRCacT4LusFq~&D#4| zg#u!0XT!~v_`F;iAUR2NMSDxSS=TVb9dC&Z&SucO{}5?LWG?Zkmef3UA_zfVLUgq_ zS%ZQ)9hs+T0erkeroP!&gQa;BM{qIiyIkuiR zq>@h`RQ``fv74{l!&_eoz~=_rVqjKr;_Z-exuj}6>}^YNYsN%4;W+CGQCjKpkxfM z($<+&LgW3(C@{yuNN+~q*_+}K(2!*Vgb_q$J&wO6ZuQo0q9=;~ANcT1rRd+hJN*&J zdbIF#eVE|{Ib&!|8NfXMQ`Oh02S}`8`#o zCZ^8Q3tNp>{UpJu|2x#b5R^$@Jv9n<@H-z@RfRe2MVxc@NXTSFfs0Zr;CE8w&C{}% zEJ5%n;_5GCwYDIzxM>Uukkpg~{XDX`|1QukLNl~}@FeT_nHF?TO*&&}r=6x^TBKmT}}uS8kh|_UuOgMG+s&tcf*%XHQg;ngx9= zydi{a>zL%l+tqE47P8jAX=U;J^jv&JSijBEXu?dLyX)c^!$?{PPMQ)7#hdy8t-Lj; z0f%Wkt*r0uM=x&>%@UIYr`>}WiZjodnAoX5(T*b2T20K_jI~YyFxCwN+w34+4tmm*uN#PzWa#~u0 zxwzQV(IX_qW>$!uMZ+M@ETBI^iZ?30SlX_AF}DV-86e3S3psQoISr-cjg<#*Ajp2qF5 z@8V4_WPA;>XfOzoH$G`gXN=xp7Sp7qx8|&P{9WtLoWU!c73YuFxUQph8{QV@CGQfsDwy1mfa9%K7E=NX? zK18@)c+~(%L`HzqQ+w!Ht%wMHnicr<&Yd_L$z_?3)6oZRC2JDcO|0XwbXk@qu}K#T zaRlfJ8fRrCZ+qT|ve^HCUvYL%u~_w{cEBmrnKHt!`GV$x*mRIJiJLl5Y`XaxJk!Ej zOrn@DV%?;)p%%?n-lb9=WeaDF+T}Gyb3?-^GO4ttqZYK~QL%%Q8AGny7n|p08uf-S z)X^UfeR}|p<~S_o6v=w>`Vf+J3{$imd8s!Y+12CrKWXzX9`(iM5hLFyz!vVO<8onb z?O28M-ZW=LsRwJ2;IwbaJr5uvp3KcPzJsk-J~$)u!u>49~k&E2E? z!hO8qIr4f-;|^YUA?=tcprSJq-u133MPLo&?*=qg=-t^5;ehAbvu@OyJ zzSUXBDZfpP`;ax53;Qb%u?lBkytc%n8;&Qm{dG&FowXM0z4x0j<{B$`p3BFwW=BYZsB}g%2j;_Wj{O zH4|H0rz;XJv9Y0ZVc$IIO@HFn$oQE9dPE1jo%|;ntL3yKW4^bEMdeL3g+*{K<%bFI zTMeeS0?80#tiN^zRU8D|d3bsM({L0n1C5b}5}@e8vg2RpWDkJ-CLBAzGQy#xo%V+S zZ^67>y?P06j}HIO7GCiJnK|gl=NyR;`vf-)ri#vx2#&7*jx&HWv$JCG2y2MI!y@`C z0qYY~X+pKog5@-swx{$bUqM1$=kTFE&frIzQa)Xy7sb1KIgs^?tTOg=WHlGN=zv_3 zM-ayuM}*syb%-6`V8>Al@=);x2!8D2((BA1+~`|1>39ti%&dA68(Id7`MApKEo`j) zAPqX?Mb4UuH<+qx+ap#rLoIhBc*A0nJvd`JphVs)2(mg~l%ezWCL?;}zT;a^9@ptF z=eEZApNR3*%j{438Drjgz2t9wfykttlxB3al)-|X%G7j~FMtIAm9*4zzXx8*P+t<< zkr12w^7UjBXGo#E(!Pv17G|AJo@p!Y5Y1h7E9(RvL5X|6F4ptbugRJpW^`bs9iIWS zlXpg6Y4HU^cUkdyQj%VjYvfI{xV7z^fkZKVEH3+* zc-Dn9+ys6}lTnWauuaK{Yf(`)Jjj2{SW^R=Qs+zH)}o@)wxr*M_AG2b-z9=)sRzz_ zmOMF>|%=k`09#REN4+4RnFw*zBpA*2xGWCye1hcG}N}D2q}sTfrtLHyK$Y z>Fzgk^BT@DOPk9o-=CDZH~sx;NOB98Sv0IwNt>1smSomQtVi~-jVmP9!{+Infg#5o z{N^^VkdX%)l}E&$dyQ+ALu}Id6<6{AB04~zSNPFbjR`+r`|N+*IeSZlofk~u)1t6- zQFJGUIP}BD$8UB1^@;J?zXc&Kd#V_Kh=Ho~8-%ilA(wr!!!9E;*6~jLW!k08M&~dy zXf5qBg?S^!xijy4;E9R>Ankw3B%KQuqD=C4wO@zq_X6#jGBALqa;3B`hf{YP39W*W z8?pf&!Q7ZQBwcihi)n#*CF`Kcd084e0CPCCEzd+0bR3a#N-GJACBhM7FdUnx497J@ zdWFRFQ(ohdcboFGo(n^hvY_g2w5B6~RFRU$-=B`uB(tu93#fTD=wLvhJQG=yoD2>3 zC`iMj@%fE@XXHis2%nuHr=}t&$P|4pwZff@}M;mg>;UVNBE6Ef3VAD*vozJl(8haa<##i5zORi{yTTF}3 z79E}5z&c(vwJzFF%rxdL*Z-|Cf!RJ@Ht;%?xG0~1A=qD3YE|+;1q*xIbBSA9phUOg zeA^J^s^slf;ZHrUXroenHXKC(JZ{7f)&67whBvE(0ev7Tn61w313h`>`?E)!*3_|u zUb{X4cj-MSKfQ-J@uJA>wX@Ze41{il0I|He$*_Wr8qDjiJ5sZD-#e#DtLG6=(p)2)?^IFcj@lKP7wS4Xj$_jM~Pa~W`Uxqn@UXqur z$p=%Waa4oWiIx-5tr=YdoCAZRoS_0;CvP{pkZj@@={6~I*o&QA@Vj}FoE_s0@#Z|q znAW?|Eqz#+mr2E)sgPbZU2-$_9=meK1VBoAOShv-4PjLsq(O^}rzRt>GF9f~kML;AC z2cH8ureMUdxE-$d%1o{%I4AuHxo>!JvTA-LBCZ*9BtRkV=evJ?`j8#uhjYS@DM|uqk zFXYgy!2E5Tta(B;Ocq@;dQ$b0-enkK4C%=R4a?hJ^XP>)d)3@DT6ndzPZJh5k-(ib zUMC?C`!1QC{#!BQ99!!*Gu4c|T)Fd8FSs;8=zatqb`y0P##dmAP~oQ|-IJW0;kI0| z&I!AGr~3!me_7yL^|kj>dFQ0Vf#xvIItdKgk2bfMEoL;hGwthdg8<>z{PqU@1AvTh zTOPG*HZom5 z#MpvXSNRp4&)}?Kl3BF3bXq-Y_!l-3%(NpY&0nKkB|0r{T}<9^4*tYBCQu2Lt9rUb z+-9lTgQ9DAL1^@eU}F6)0xtAXt1^P3F+$pE{OeggLFki2sO1a6zO(M-LgCI~- z=^e^6CS}vYZlOJ&Q-r?S{X-3B?F8}ot(ewOv1vN@=08}rxkT^)z{t7!zbiTmL4z94 z`MlTChYU{nQrZ>e^k5xS`Z?I*%CEq6K_gI{bv$iS)KNrOp zecBq$T3@4l*S*IHDmT^;BKgIa2!&Uj2H?}u zFPF%A(;qO_1pLmX&jO^)D(BuG80!aqL?&q(P?~_)9Q!oUpNPP+w^;W06G1Su+?thP zM&7&hKZ*Yh@ZY`-VznQ!-mO0mb#RXLRHimBCB;`_ZX(N8wIh0A;)(%ih8{vUyD4!p zS5txGQWYL?jBy+wr2iKDo|vIltLeF)82{SpymkX#J4t%IFF_n6Gp@usl=6a=zC|9@97%0V5U&eyO**0O9M`gEUP(q4a8Hzj@)DGNVh24%FTJ58-QsPVzIaC zQp7XvZgfTEo+8e0g33(Lt=6-S)#xQh-wJDIt!)?wo^^FE5oa%Fq6hNZ#{r&pS7Sgh zb0G}MPS1X2xcGzl+xilIzs4$-;D$2aygwiK2>jGGm`lHfVfOEi4MFAt?PaQ#$||Vg z(O`G~=k75cM$3DDJn)%_>eOlqt6|b6v7Xr~PROD_|LXOx>E&IdQOg#l_cx9h#v-G! z$Pl1+|5uO7BX2FFO)Ztnr(FM4vK9Lv6q0U!-GOfxdvn5%F zqy(vt;Z9@)>>GJk;qDIBQ50g@v!-tvXT6R-V^ROPpWvYfV6v+_9~ykAjC?yBY?jWz zX8Vt;m-|b&>8B>kPJ))gy2g9HC?$CqQ15#)6VE#=L=i@6M%VZ80$)&L!x6S1ovMBF z@ZtObNy(hqyALr|4?oojvZ4JO0CNOsxz9`%`9n#@bdZ#S_M--mJsTizDuS3%;}lWG z=KJ0Z#_C}k!KVz)mBnYB4KK%KAW{lj2}Yl9_z@MPV<2EUFC0x>3fV@TAEJN@#ah>s7E*dXI1c~?J7ZD|5>%w^ z{bTN=3~1qBsDusky|;?-wS(}{hNI~lQN2(R>r^VUzsf*>Y*qBp>WS&Tk4)0MX4P`UQv}9`KGx)7k_GeBu6&qO-Ily?XK6wUNI0sPz@{Cf^V(IYFW$ZP zpo_7N3M6im+yA@fD2|KDZQ}L46MJLe%<@d!3}p9AqLX!OKqA3!9D(+x2y&Kg5ElaT z7KEMJEmcqlu#$X;<{2m9q8|Hh}PzfEogMwUSJ5(cgZ{74)H(tB) z+=jbF|lWjB8TfsS(3qsO{J-@jrEG+mh@s zM+cR4@!R~RFs_Kx#R1J~+Jb1j{5*u;I95}qIfvXd=`w|F<2qyt$Tqf!u0#z z`AfXwdD6M~b~10(kSkc74%f$w6(%umv%kJ3bxB5NCo3pF;X+mCSx1gvabS(1o}3u<|Xrrs$}VnHyMJpdh$SkXt{&@MBDe+biUcgD#N&-CX|+W300R%{$4h zQCFbwbo<5yg%RPl4Z)C9;ob2Q;<`fo{^VD4tf{V9G$*Qh2AJtxhyj>q&K*es=Im z*WeKtCmh4;T~mhCh3DG)-KLU>saNyh4xhakVu4=sjv_87=!)f}VxbQE7TDlPHew#z-66)(GV@dzHx#$G=$Pn!lS zWW=LiyON!8vzd1(Yt5`tIYUq0-ntsLljN8V*ozB(mp9J|2TN)Csk1lpwu-O3zTVPv zfl*9%d)hch-MN4fYnqo&O^PWK0ht0ShLCsiEG*m`b6I0 zT0J+h%g!5ONO%eN@yfJ((-FpS+s}NP{N*C?DX*Mp)Ldsw(YduX#y>LH!qABvE{cw9 zndEJQwve;-$l|HV4DCX#sGYi;ylpQI*1VEtJ>?U7>7ifhX|3 z%_vmx13eSDU|}9(@~W@jOBaULm!bMem^bw@W14ZeK8&{Qfq8%7C$G^SFBzd+0~D}G z;DDQF`Pj`V3xVkUh72hvAw^%?>PT}FYkTc-x%}jJ;bp8tM=L_1_+E|EN>5(e-I^x$ zE{%;>QRFJ!eWo+kLbM0(b4Xpbc^}AwnB8SctTzUzB7Tf9gFQ)B%R*0pDjnWD^B8KPn?B`TsMC=evRq z*H3oppM*K}Q)QG&s|%2r6QLtgMoZ~P#^SPJ7>++Mnw2D_p1&KB2OOlt%s1g#_h8?@${8{L>1*I+z4y!{r^FP|A zQe`mqv7@#mgyDu5b7%Ug69tWcKSwXmN>U>T=hLUK zZWi_Fud4<@d3vSX0vy4^FMdSAnQE~Xt%+IB`G575KW9Blm2vK{!L$Y;;9=X;mtW>= z!I21jGE-RDY>YbzuNV5s$0T={sRt@PT(X3_nw<|o+6&aerCFJCSfRZ-(wl3{F4GT% z97HyOG}kSe`hKu<1ID&N_%7B-i=f(g|B_2XCHn|E4Gs{d0&Nd*2A!1+E)=A%p1NT z2ljQ1;0@*E;4=G2R7oZ=oHBSiYN@O&wTNzBD40l>mzSfEl-wL)!}0W-pCm}K<~&T{ z!Od8iHUvW#w|@&}CyWXDma~OE*(M`dh!B4Ts5Rv%oLF41tlR+lVw&5vD=FvmKg@R;JomyQhrL#HLxhV!O$)d~>;D86ZAEAD@hJt7H&Y@DV*f^W`NowIr z))o4DV#;mC=GoTn7EDfb+ym;dFK_8B5O{GJ%hmzex6OH4KO(9Lr_9Ho*q-L#u8bA9 zl&bw;*^1XO2)N5V7eDGcYa4qvQacSZ(Yukn%?DA{J@uhc3__K1tHRS}lc}8Yl>~JL zClpmxi?y&Joa_<~pX0$I4d1bH4sQzW+tm_O^xSrEpgo2cBa@B#a`P-s>q`~;`WSrb zHkRyR9GqXt#jKn}4Bs&7aAqX~R#ieqwbOPJTTvDt|Lx)L(OOD=Pqg;iozNFhNlN8` z2&^mZ7_IQ!geRYjZL1&Kb`^$UX~_%4@V*_+pj<%xqj2>4QNa!!8>?T7)+A+gB1;H=vT-5N&PX}(Mew4-eKYuz#h(o{lqI*|7_X_cxM7Y{~s+o z8+hdjef@IAC|^ViFJC!w5V&{>ZCFh@Yb=v_q2NaAaev9p{>IZm-7mPZ3K{Hnex z9OuPzs}?5X3kAv4?|~U)e8GoSR=k}HX%G=7agQ0u%jn{)p`_Z=(}#6d3C|hehvD2l z1ZDnW^QRbJ;3HMrl~veE2%0IE@sL$aL|sftkbq*J70HCMg>Sdi z`wZKDJq5rn@Fvd~jG(NrO*l@nM{8(&{)!%*zv^w&RhPDvTFz#$Mz2u$$s3UMTSHNX z6iFbF6@tRY)-Z-ZKPvUk5Nq8lH;5Qx%5DMP!($wEuA|cRGU(M+m#8?)pf? zeDvgnoOUg%*cnJv(8uQ0u!VsiZC)hc#+e4DO`HIbt?^R%us>%Au%~N!LJR%>l zndEGOF2B11Mp=@s=vG}Gp!GK-U6BK>)*V&Q_C1>luAPM(xppmtiiJH^oy~n)G;hP!i4Lk3VOyoZ~XW4OTB@ zVmlr3;z0~wZ0244K5tf-MaXW@YYx?Dsa_1qn*`|2aLbZMIMvAF)V6LM^q&rO!mEsi znxV1&er+YMbhCfuWQ@PA)sxEyN;&+j3u@cDExd@0J{@tim3LLW2k48~M^D{LRq4(i zWyQ3Vsa1?SONa(D7nBQGUhwF*z(Da7+`2nlpFM(B0&Qk+h>*XZY9jgOvVQamss{rN9CjF|9+#Ro$SOX@i=sf3cAYp? zM>lq0wj6|Bl%Oga(ckgpoS`im-ugXx-ID*K2#tSbivXeZ7xG3+f07uU7vZWr$y+U? zw!^Xy3*C9VlCfT=6~6%QIq*pW=Xi(O2LIT6));zGR;o3F8y)KHbHqFd2LQFo3{fKW zo@||W??aSNCuB3@)oxI>6fNGOf9Aaj&1(d0{3B_EU`pbZzdn38gEdsi%@ldZo&m!) zrIK%8lsCPSEIyK-OFMXI@aqSC?7T}jQsqlZzPOmPc|5KI$qQSJZATh~q~T#W@-5Dw z09ky*+aLYSKpHi2m+z{Sivd?~nn*5huC3c&%fUc)^U-WTDd|WYoRoC*dbb01&%lo( z3N6Pt$O<#BwrJMk+*B4UJ;^i%yd^U)q+^2tYs1B*wXoaF+cSb=!6rQMqx%R+a4AX` zSvF#w0l5y zatuI2oTf+WEs4B=pdCMlSrPG5{(+j0BmOM+YbwUSx>hn=9o!A_gjGVaF%`hi$*6gB z+(7$Y)_O~(`kqQ~rznb3JR>vn-upDnE*~+mRHWDICAWrL{!KZ4s#nR5%N>8<7}cdT z1H;-bd6&!Ysy4F*HExNBM!2zA$H__*;vzxVy%u^;DO#DSRTY)UXO&)S_qP>v+v@-C z0yD-=^A@e>pM2fb%|nQO{p`6OKKAeDy`ioHxZUF1JsG#!qIO5niQ#KSxZBiW2T5kk z3TFi4d;fN8S@8YjqJtNE?kYy>!=hF&42E6o! z9)IU8IDS6p#1s`)(iN3WMhvP6?@U?&b1jZ~SgS`EOP+Ptu!ny*(wEHLQVK^}d=gj#a#fnt5;_+rY-AZjn>^WEdDWAGxx7 zBcm7<*qq*iycwJKd$p;U=;P>tv}EZbzVn5tjHyJVJNpk^t4#S7D$Sfg&4 z{`2&ZV9eP3;*)caRtKF327~kD)BWPbLv2hL3>nTCqo6Y5d5}5(Jr9$43zW^2c@g## zRo!u1oS@l*^}KP zZN#PW5%CoQDoxYnX13< z0WOpY-2BjnVJ~w!b@!o?>ebfJ|hZRDBJ4TUm2)MFJ*wx953G5^Yg$vjq2siy3h&Okj2iPaIlC?(xe-J z<;VC@H?V#UFZ)5>sQJiWB@c{`(>iZ3))d(ZW0w4cah9lnS@WwNbl`8UwO|Ch!;kta zD~okyud0&?{7U=JsjW?y3@~=D)QckA^L2 zzv~RfTfX{XkMtMNqR2>9n#Y_*I8Q~B9k#*G0DLC@hzJT2qGc||G+2!n7KnN{xd6-{ zXh+mx8c{p?wk-Y#Wde~P07(rS2v4lMPxZ%d*f9TWGNGQ+b%liBR9&JGa3~hGRQ0lu zu^q^{6KU@YLuF4wdU{oF8O~b$C3hl|TPzi9tg%Z*;3PTmlRSP%BPj8#mr@_7TRaF{ z5^k9r)isnEuyCkkc0#qqTxpZiL&J( z3GJ3rygu+Wjboj#_w$s+6BjOgia+~>%=tI%FOdnlw!;)5ibRBn$?#(HFhM!n=m8c! zmn>8=<)xNKMD4ZeF=8)K!XyDTTJIEO`TG7>0Vt)rYJMG-R)(*4O?u zDw`dX>sZHIw6ZfiJOW%?51HZj#3dO^GX&!G;t8)4A@#5SUo!Ac_#C@-*FQ!BgLIv- zsM{{&3^cKZdPKcl-n?()#(k`#9%dBTOTcwNgSjm0c&q+8FYL(8M@rtRK=oKB>M)`W zLO-|Rhkl3g8=OGw%Mvgf`uzOIaDjSD*8J=!ka%lO;K{KnfmKBNH4Tu3y%C7j_^fQ` zCYFd3B!ZOh4(8)0?JWQgai_dF=#PFBkE)-@4<6qTc+*eGjboX{u?S!ZX|4a0F;1AG z?IXj4UEu0Ejm9L#urjbIhdgrpXC+1y9X()J z=r6{&^Mb78_#W=#*~1)%K4G^Y2K z!tv#1I@|a@)=_9!vdF?)O$(_V_Gz3gK4CyQ=S3_UYNI+v)6apHQ<`AXdlIbSIodw) zZoiUqG*Sumn>J7)Vfku9<^l8v#&ma-yKeaYb8m-&!YO{^4MX=~wli+}E!51Ywtn5; z`aTMayxkZb-1CbkBw=5&hFA4}9kuKi4fDOyrZtVo2LY<`@*fyWEB%U#hPGle()zYT z!cGwrO?_~%0Xq1Z|4By6Lu{b#rG7OTy4kx@*j*;@lN%bu0e51uQ6I(Ih8->kqlqFKzLN;m(>0b-73a!0MB^=G$5yBTrx5B2qOZuxCAUujU)x z?vb9H&sgW{gHrErVHJ1%N=~gni`wWhPv`Rm)V)n}q~Vzsb@zrXILc;03P=S9i_`#F z$=L{}ja6jIB^gmlbcVls?@w5~IHU92HH45JF}7{ZF$!V@V{zz1ol4BqO~~&^ZNGvr z77g`yvpY#L$j`abIAvWn=1((YBDJ?j!{F8Zyfe_wDUt%4$4q|&$pG*lvhnKmw|To_ z_&^$?xGE=JuJpaEQhyJ#ToPT&3xAf*YScTJWFgzlBzo3FSwbSnU)VJonc51;6p8=aNAru_->^ zOeMTDytr;)6`tC=;NGU9de`gwDm5zXp^Y-?`*%-siVqMSa%Zcn z4#NXPApkGdM|23_>`3v|gM@w;?;2Nl4}e?cE{R1Q*I;TzTt{gF^%}(ZcBRL%7S`~#-urkm z=Bo<1YB81IY8fno-NV-O8B8OwTrUxlt3|jm{*|qq{o@GwIYv z>zcB&@#s~{wOYmz7$~vVAfP3duG6m_yt$Z(eenPtXSiuX^Q;foZw!^NfS|QoXh#`q z9N9~|RydQu@g8rVzR<4)~4R;F3f z^-z%@A(HT58%Hk-EY2fpSeGKF%f~aA2b?JbslsM1Mg$5a@yz^yHS@fU?lZBCu|MfM zlo}J~cpFEYeeyI=sD8!bUULeUez5LYEX>j>L8HsZS+JsT_VaU zq;hWwP9n43xFVK|E$z~+;KN~5K-;U%DeF1IhjR7Og?XGJgPuIU8wOBIagU|-xX$t> zH^H@raVC1{h2Xm=8txzhfJ%y}tE&azC4=MeV$@`3u{ zKwdtp_z_J;ROm*`|AJ}z7rL*ocaG|hw}ivV+)4HpKt`bW0!X3HI!y(-tSReo8D5P# zl`gFo*U0iLO*d|3nM9wd8RTtGEWiLug8gl*uUnIg%&mPF;x*#)ZL{Pj^AXJuXIjrK zXhjcxEoaxe#}wntdPxk{)OQ^PoIGCWK#37>K>sUs z#37D*6sgplGaff!!=#>SD`uUl3$!hDG7csGkhqtJV*wT?M;LUiN>J{{(Wcl9!vSvv zLv&G-pzKd?T{oNjcNlt9OKdpPCmrn*k{ zR9n({Q`Akfg>%G_o=LGs*~ZWh15f*W3>VAOc0*M5srOrnkN0N_6vNW~5B zW*v$SG(~~6Gxpc#tK9r z&b^U51`oG{Oz9c zOreL*I-fcEwl2;Qf`tm1HlPTt$>PBoo+giSn(Lv8pVqRAj5%3s+{>s z9$PqZc#PcG!NFRFIuotwtK%GFWNDo}2o;{6N=eqdeg<}T#LZ`$(60H#H^CN#QM}`)u0o2U!ssXI zJo@0czxg3LkE+S#Ylg&bbXwI0Qu2&d5=b6I>AiWGj4;cJnn#QM>6R=pu*D`fmr_Z| z3mpTTbvKoG{lkA8FoPlOH=@w$Whh%g$t3DzRK?`Uz9doMb1`R*TGgp)3Mxj8T_4-F z8)1T|KfZLC*45n*aBk~!a*zeGTXG=h_wtneY^?7g_!5w$=npt$U4H(Ml2tqe`Nfc? z1KZtz-tmpK9a`QNlzkB(-wr=XQ%2`a#$hIR_10zK5&dlvvQK)7?lV~7i_Ugqxd!FE z;b4^6DW^8c63!EEv9^(Kyts&P=S|Q0TE7f%BgTZ10I&N-3#VZ3SST(TZia!p2l`e@@>@w|B-jOo4On(F!k3O9Xhi6v9JQR3bN>_Z}Lh*cny+={#mBK zTU>#g1kuV1D{NnZ0Vr4515X4YukHDbbm4S6HK|cv%Gu=DRm$lpr_Re~jtdqQS%y9j zUJ*!rzU@W@AVLC>g;FA<8t6cfsdO@94VIPItJ0CzQoP6CHcXXV4WY$Mj5gm|mrU^1 zP!K(mD+uvWp$lVN6^t>kURE+p<1z;z5Y@z5XSjW_Z9S(+hDL;@Lg|PW;5g3ju<_nl}1^uv}XAItc=2ytKQgil+Be9%4dvLi06%0Q5KT_M1^2+MNfF+c8 zB)rFxL2;J1vtfU$cx#_2KKBV=3S@++PL{$E7k)Ty@|T~7Cz_<`HaTNP#9n}vXbZIX zkGIbeYMuVYx9=qm^Znko2b^YLDhJ|X8K)2IH+Gjju?0{P)#k(u6)|l1`X9sFeu{0g zUYR#lLVy(%J{rjg#gIjl>6X`5W4(&?^)I=D-q#BcGZ&4sHB2|O&_ zv@S~^uiTNkGJ`RWyr&mZE~WT4kL*d@CnL+6KoOA$!lzl@-k?ZH6n9n~nffCOiEzV} zJ8Rx$6h6{19mp-**Yh457woP^`JIO>4^JLH)nd22Q)TrJRTjMKcv*b?h_ox>n55O< z4ZLvl-rYH+LPj z4-~_r_nuU)o|u;*j``o?iZ|i;+wB8?LsH`*nh<9;)^|e=J2AaAlyP#O%Hp5P*I9#9 z6XA$klL!*abAins7kWYBPbK|ra}s!?`*vB$x5NOdiQ?F58r_DUeS&v z51c#k0WV0ufp58Du3r=E=HGl{6Z+OUb^kI}AHSww=-lFLUP&lpx_jZFj!`2GO+U#zDOLJCZLqpY2Xq%38PLRc+t?aujEPisoaR zup8;*2rKq}|0--{sl?S!^2Uhth?>Ouude+Gc0fkiw}|N+{v&PM9EN~p(AVm6vebSj zPfyiBw{dvcc&yz83p8TZ&F8KlV(tW&2{|{epvUDY0?Z+il`?&LxfYouu(6eFboWHG zHn@^`c`$~!Mx{M;>8_zgGcCV>A_;O{F=RbM+LO98A+u=H3Dy;KAHy*6=SILcmr~(@ zB<9fxnTwd%oEg|kg?30~ro(@7sT$Pe1)M@f#*h*Tx}#}-CB_C38GaawVtL&d7j8t>k^KXycYG0TRRk)=Zv! zg}0|x_P})}jXIlXxcUesSc9x&QT?<~Ko7_bPrV9MCwNG9a-C^3o@=LHyuNPLO~w_N za>~t2ww+~tA$)kdY+(?whDtuQFA_Gp6RAU+&v3!GI;q3;AF3&0n>ZlZUTZjh;3ziz z_vEASy$tUPd{f6-zYlDlkh{{3=v+T&PP6;`}I9<(~CRE(d z1j3yQFEnZ?d~zoGsqCPOe(^}uJLUK9oa!Q1*A7#;YT|%eY}Y$83Of*Puo^_7OCLbM z#7Z=^E3&`}c6htpOO?{k`$yqLVCwO5lpX!98GusCpE?j!EAUa{u?XCPbKs9*KM;pM zb)$Yy^}Q4rq?#$M%M4HZI5yS?$5ODY>Gbf7Nl8B~YpeHev-gj8?8Y|u!eyE>_XVor zrK-t-FlyIg&KdNW1|?Uk4HN91``kH)04ZdCp`nXajHKhXf}i7h;jPW`Vq5AXz{PK1 zD3Fg#!`)~~V>X?`2c+?i`~PF<%>$yU*Z=Wz&M?X<4lX#D!olb)h=ipG4h#<3f?9@* zAPfx2txR%BBoSs4EEQb(bV19jK^TgIh}S|)XF;emO|%kF6G6Quf{LjK!pxlC>-78n zb-5%kGv~cL&+B*t)^Z2?)W=7PjP|T99_&F3ZMj%#k&HnzDjXD99H& zyQ7wd!QV#;rh8J72C!=o-cZpi*}U#k>gT~mRfSmWEOEgS$IY)P{UHd&`^jfN9pw0! z*K%d2ulfM547N-me`qSEP?x0Zm-(9}LPW7GfjGW9mNmL9=ek7L8jX5Rs0WBfo*>Lm z&?I9)jFbq|f?)RgXf`gY@*YJc-uZPYZ4r@JT*4n5}&q8h2 zT=MF^gkb$D7&!;Mx!&bZ+?yyN{@!yD6{~E{gE)NVXnW?-9`i#uAtI|G5-|U7(w8^g zPjonv(@<6uULdU~4aRg)q9QBQNDl%kpWMaaVY{5HFbJ3jvEc1@gqiM0M-wgnWRjr0x0V57je8=ORA@9{+j&C< z@clNA+O1nfhh9Vh8df9#2L+9}+pz}9n>ZBztDVD>d1HmvNA`+iG%!zYdp-vTI*LtFB0i$xssNg`SJ7T<48RTp2u9tc-s~ZyUso{ zw~F<%UV^Y-%%KQij#a^MnETM7Ln{qGw}OlS$hjNxkvBaSaXCL_E?Wj`HR&SVOLPbm z32JQ@m34hd5^loyJsNE*GRbz(cH6mBmw&T={?FMOa3!grAKKDm7U5s~c;z?-bL+%p ztxK^}MvFDu&Aa37@W$v3mmn2;)&FPO_Cd-bfYWkSYFI1lXqKJWlVJy6+@5)E_V#jdzo!vCc7=><H;7^Fe7Sj*_waB5P5*>*VB1Hm`iq zHBW0ixBw^e5IJ+&{$bvh+Ol~x*+`HxszOy_({UtQDi7ft#jr)1nzrcrtE+kAOYPb7 zQ9uB<=|0<=&sqZ^HwZ;p+HU>G;Bo=73Mt%*<~(~Ba`lolN#cetPI&W|Uw&bY2hVc2 zHYDC{^>v{ZFKS)YL9P`xfVJ?2x&djO#f^@9KO%jtXkvxzvjn6nxqN@$<~ve7L(1s7 zC9hPSjcP@Tk~`}CU!n+{?}X%W>6VCoAJ+BxlfB*oIb+w}%eag>`qTY4zOB~2a(TiT z*xe%Jg`qP!``_NM z0SOZ9#!dLVWmH#A4vui?vC_Ki>({TP@~+P9fZzj=t3^q*4P9EaTx@zO zcbvn_A?W&=0>=14UJDnB10t`bL~IWplPNz>Lq>@tcl>b=Y@;Q}Mp)|U>#I?(FqzoQUAc1Q5gRjWe!%IYjjYq}7x2V%PV(f_&S4%^*N4K{0$|mX zW*eE zCS0i$OYFR#*RIXULN{Kyg#|+IN0gI|dFR}~4Y;%Y4vU#~QNW-(lyRvLC5C^peu#Cr zk!K^8fP)c-@BBi0_`s|TUl|NpTUoms7d@UN#^UW_dwU{?=9h@XcGjYSrMKVdKhb^# zQir&`rF%n#z|bmykwt;p)brx~ICfuO`Z57+NWmWP0ZfRuJ!p?KqbVjo;85u)D6%C7 znQ=PC7`}I4FH~NB%{8s*lWa7sGBAc9eO~}cc!b)`2k&gf=94_LdY-O~L&pc> zMR3Z@38%N7{sm(l>L6EEHjXp6{hI21inT3US2aPpadMJ8ZeB_V7|&FF?eYkizQoH5 zzEy4A3VPO2TKRf(2%zdWX+`h^w>cxm$cQa6>kCbsGgigx!lYyOor$=99Z`2^lK%U* zfZ}KbslH)6BW{Zjd5Q+gM1%A_&U3zmVs*cw*X_$*v6ce|G@)tr1OLVmur;hn^i)+| z64fLLs)MmMyVwQj+u_3+5x$i;O-CX2SQp_3v9k4(GFlN$=I6}RK*VWt$^*jrYgAP6}>do<^6-TE4a2JUi4yh9O~#hUin|L#t8|kvAD%z+z#Tbk^1dB z%k55G+r;YUnS)~neOTl559z&}0y2*cq|)>olq>5kaCwWx^KcdnOyaGwJNn0O|u2fR1hL$w@7MWN)zz~Ka_ z-D4L_ybHa@-GTr8k2l(TmMv#&`TjOv-$j{?obq0EgnojXNlLv>&j|D4Vt!mmD~fq* z^V#%pFV5xM!b#_!;GDnwk}foI78jKejjj)Q~5!7RG?efNqVSFnyu>Omrbdf!@-$q3rian85VU1LFIGb z{QO0be-o;^#N%Kbmi%s4V8VhI9i6nr3R|c4^!*=m4kOe|npdymb8#RzY-Fa5fu{ku%HAip53{ z`DfewXaIcIhHoUwJl`@|d1YMRM__Cb1axu*#T5;hu1s$-F)@lExn$x;SIqv6<0UCA zwb}UuZ#gCTt&|JGTi2zLJ43g<1;}jgj!Kb>-B$mC*Q2xI;;u8-#)1f^_`-AUk3|m>wC|_suL%u*<8GggJvqat1AyZ<~*$TkT7Tf1#R*=8{>S8MD^EJ)uUd1 z-LGg_GJN_K>*>gA5l6dlOPwKY1LyEY$RKp{d-|Q2W>(;JKXkatc|{e;ZCL?C%B|jX$mI2X+)lRV54I$ML>bZ(;rcT!T8EJcjw$F26a$ zX!fmAnJ$D&xxQ;RZ@=?#4m_H#V%XYs0ER^ck7&DHy|{yk_3A5~MxrpUB0)r0^YxtC{9mB#C_{|Fe z2({>Xyk-s7`8UqMpmgEM6qm83fOjUg%O$>9x0f-N3DPgN_2s1O9fY}RIa$hi_yTka zqDJewhcXy_+%Z{U>JpIxwDb>IbHIgkICo7Ovri^@S*?8y2uyO?V_a>2$Ql<>+}HVo zqS4M%^L`%&QL)}>XQPxl6NPOiQ#}m>J!O}?X{_CeUw>5=e}!*VLrfBeK}n(i$u^(x zAkn#qK&MY_@x;J`060=%;vq^{^7zqx#`16J$+q0uo*w=V23Wl{Qy3j)_MgzRkPStg z!n}=e7rhWE8FiiL0Rvi^V(VQ-n2oqE#>$$m za;UZ;MLc}svrE?StxpSmn53v;5LQ9 zMMPv6ueb$$_mK5gHM-=v4Xf%xfu6KDJ9qQK#P!)b8B10G(Mj(9o`;X*>7@1jjMXtq zD{*!L!`dK^E2K7=tKs!2EJa8efSYI-oV~_{gn5Cn+Vq;3XcrfdL5ARV`kzr!1OHlw zn_tn~o>f~I-6YJlUgu7%VV#mI+CZ<`e$L`fg)K&}$LY&gX_f*;_cH~`HwJ+T^CJrL zV$W#}z%kLC!sp$O@Fs%?%w@bKkbHQ&Is?%rA0Ksy#A@Ru^DPV`RpMVHyBHhdr{r^dhFF6a!aI7qT&xZ14BzDZfpWk>vSu#&Q21!lw8IavRiU>A z!XeY%cxq_08`=02PtN35)L2-M$~Z?(mBm$%vC~c>3yo;gAdgeBN*2E`&}CEP~|M)a7d`j*2T^2&8AugrT-hKnuBZfOf9T!n7>t54p;I1yG*p`WQ)& zmj@OqA$ez8${N=VluZ`L{UwZZWlP2fu~%6|bg*$KuRe{@uYX4t|A{kJi*PT$=6wbY zuF$wNc${bSRKWQ0idU=sjRNLc@E@)&l z^<0ZHQYASMMbxwktnGyl6VSOoCr593LxlqNQUU8LIg+ks^^e^3l3XMco{1RaNOg?S zenr??8O0b`Q8Z@~y)q*MnyB=Cd=Vfcqod?=GAqHPqP)@$odZ$ZR0vzxprDFYURRDb z64Y#A>338Ul=gl__B#WC7!rYzw&pQ`Hk+ajM&);5iKyKAOAkhH_3da?mdYrB2t^P1 zljMh%y6nP2*8Zmu!@ejFE2O}u8mWlOvD_gcvk9nKQ z9ILtlI6?+rC1Ianr>LPcXJ~UW_>sV+@`Q8vYu;L(#|SA4q`V}>@Q&*b<(7& zcea^R7D1mD2pH*l8|&=Yp>j$JC}~}GXxaw*s8hV%H~IG;7;8X_oSL3|5=(GNfMk085}Zh;7oejkQ75|)l>_QH zTLZJtJ`k!+L_Gk5L{4RvPD(}vuZMXEVEZ>!y;~ltv4g%Lf?P*v7TwKni6Z zz!p0W;RrD_a2S1W&?9v%W8DOMkH;CqtZVjYm|If9P8aG-N~Pvm79~6yb{Mfr;^pdL z%nILAcSL(Ci#^edj_}0wW11}^H<-NRLj|g<@DQU2l%7v~jlQu3R5pbhxjDiMVw$G7 z)!FI4)S}^d?iANi>tM&~&X#`}(ir-+HjN<&sG~#$4QR@0tMaMfzx3$+OAzFrf_40(%UQ$Gt|WtTpZxyl~F!3G1dg z|N78({-tCm7Rs_}kM&{|;Bd9WmzC3o3)NUy3|1-y>%hQtfx=WX{q1Nv%6OD@O5I15 zt3R6HRyY}|FbCK_M@IGgH@>d*P}wTbb$r^JK5~##bo#}=Whe~dbTmHjbp8nV6K<5M zwa~N^zw$-FT+BLxwf;wnhcPu;D2p!)Jq1><8)iChCYV-~;m^B~o$4Q|aXPiuZDB#> zadePTzdav>^p*VXy6XepKpZ7OW?H!*ZRF9)fm9C8Cg&4>IzI-~2!c$wdqL;FaoI)m zf9u-;J^RT`!Ia8=>cS~e?qF7hbJP|f^Icw^wwT(pox*da@FehPwpPgOdW3~tBLu#@ zDU*x2)J_Y^Ww+lIuLYST&T;(;Y*WZ%+YW7HV{8MoBbU6DZ*cL>2kS}b3>0HuzuYs1 zV|Ar~Be(Zm#IYRTRT)Y#*4+O?Ktyss$h5}Qnq+KX0tuFqB%_vb2!8PmE3|@tqYTr; z`-xr+tmU#_+))H}6om5jnJ)86TpA#1eX`^}43P-hHd76rZ&S>oZM5*Yb^!e{SWpS+ z!@aX{qFYII>kT}T>Fq(t$(ektR4d7i5m*Npl8FPteNffh(8_mAI|A6^ML2AWJh$G& zRbM+Kyt1md7Jl1f{F)on&r~tG*?vVoeEr82#v%8MzqUbxVA#EWs({>9Hg^AiOKD|( za&i(Nlb^`t6+t+BKGQzz!6Zn2AOa3SM4Y^F0vQdXRL+^&9WZBbXo93sPF5720#_^~ zV}CHC8>tzI4Yb9*h7}^uM6BoZ^i)t+wKXQdXQ(Twh;&5c@XCLwUDb@!|6^L1(&`*$ z9A@d%#jMIsm^xV`lf0>_;a#X4CXp*t#g&}yHF;rBMLKJV3O3HV`T#sR)0_Bc>ZjRz zu;k#~+a-FLg=KlouL&I90-0gOS#x0HOB&>j)vqkL4mm%Sc&{#|o_EYAcc1;mDC##B z9DCWs3+}BksPm|R_~E`Cjf|r)pjooy@i8dpGNPh8Jr)OxYsy14VBQhLTB#3dE8B$y z)1i&9iwqz4);dp=^b6&Zg=#yxxDPdVsD#`gsty}&f3pA&iXd6sJ~CW+ZM(?+=p6Xi zDHivqPEhxFyVu^`!%U1e%&(|w8WRhcuHpMZ##s~Q)=VbsFF%Eb<|1gzvdoL$@W%4T z1)zF|V!*cI_w`K7O>b>(`K}+q*k0*9l1dG$>3b0Bu>1Oi`Us~9_by^Y(538O6W6R2 z*L$VI=n$w*!FN+!m@6>r3Hq=`*@>N0PKqWKh8h2rtldOzcRHz9avD4kV~D^^wGee9BsUe}wrzvf~tr*x!E3}r3J!OCS$p%eL+U(kkIc}DiK zTd?IB`DkY;;+lxu0))uiyeNy`xBJ3*#@cj5>+!>z?Tms%q-~lW5^7eLNqH|8Lho?8 zFRdLfhANnbU~`@`tyEp7MfmxDAb5AQ1P?@W>Oe zx^~-9Zt5{%ssR{+0J#kBTJzP`PXr$P9xk_F+-ugQT@04F- zKdHW5QzJ&ntQQJ#Ji~yZ*z+91t<-jOe$fl$MRU~om0YZ1TR??6~qQwEMXQPdLk);0@n4Km3HZ>(Y!6 zoO${csgBHVU@SgmU}R_S>@_voe61LsqsM=LN^O@dtd_!2l@X>_^)G#JCS8o79md>X=RqT&(Kfs)(@kNY<+)cisvw*Ij5A#UF9>)cuWzaMI!bWFP^F7fjT z)r7efZEF8eVG!f+12pEfxPK_r%2{5ZvXcMj-NPv-rKxd-|Lzx`ZtXlT7Da_uD)A%4 z4SKWMZmfnX2l9$^SN}rRQ6!hl*?1FTzk%dVC8P5XD4LwEPQtB8Tc%J6^E(|U#e*m; ztuJiOan3Q0TKxKqPuj(iQ0FjI&&DA2og~J!c3~D`T3I^}TfCaeYvQ%pn|kZmF&)+i zxmX$|i2kM9bM7aucQk-)F&E|~wPm-lQx?Ai-Q!COHDkzHuah@IjnoroIV2y(3x14a zh6Xv2bw}<`5G5E!-SN8pVmyW+e$8!vB1L*XadXt8%!&$LDcSCGh_TYOTK}RtBNGDw zZR-bYLIy$;3q`jriHX&XqZ6 zyfin-;pJU&RK~M~zP+68KLFYzV~?DIpp-Hv7GD428m$HG<38+n%h(& zQ8$32ei?0Fnf|GbwUXz2+pGF~IU|{9e1O8|*Qr|4a2?=umRs7n#145l?(b3SdoLn7 zdek{zNnO!lAi*>49AIMHkI;%*K!TeTg$?_!{e_|?(Did-x zbU^jt0VaCgXR}yH4Fslxi3z(zLnM93ZmnJOU9i*s1Syz_d28|(VU<^dL42d*9hgNb zX`%DucRyyKQ)?r@F6jcRXG(Bo^mb?i-9zP#g!! zPxr%3CQa%+|ILKduOn+ggpjKy6J3mc`~sOo>1ywXzzPH44-?YUg+kVGnR1`5)ehmd zO{NvOsGqNZ6@NDht?3R}fQcDmgp9h%fjn{ginm|$Q+0YbhPc#c5tJ4F?~$8j+X=ZsE6&m zeQ$6bUIMmW2)VWm#`1!H!XOlGre{z}%<%2?_^!v0Se3GPaZ#VfJZ5t(;2n`jK-XP zJqLj6eBysyU^NHe#`?4Kw?Q6pErTZ}7mKXthABO-|8wYeS3lgq8<$ls$KCYSLSvu$ z5EOC*+1humnpf;2?PeaeO%W^y0Fxbr;HKKf>PiAsfx!m+1+BJ5UChS5dxl%8#!Q&mE`Wh2p8w_X~`KaZTt(e+xH`kpnb*=AwGB2tfNNio%LFTr!^T+4>eD&3i7Jw z?4eoqP}cD;O)`~uL)Q(K{*>WEI9~j;v??4*5{V4+7S+s?yWlq^L-MNcr+rYHmJ@D1 zX`HnoJk@0!EEoRPPKPpKD1Rs#>-!s^vjXwv=WcHhx#Z_@1n(-pd6RW&cgdSaId0qt zb(U8ESCqa|_0FcujAuI55(HZ9k^)^ar!Y{dC0<4YADi6R1?*=U*2RH{t(b_UNMG4^ zCMvld>{G>6`JD7nUTF8*2mg%$>4uip`s8BWFpdnezFwQgUY7jhey!c#2dxnS3%Crk z`5fygq&_cAHo;h9m*mS9UmX-5&Yb#yxG|&Mnq1~YtmYu{ne_}XZPQrt@m`DskqFXP z^ggXlcM+^*Er_#xE4sR`vfkGnVy)_IZ(sR@22L>s$YH+Fbpa3GkO?){B%B&5a=_5k z4DvUXP|+HG1QZnNe&RIy5-hwSd3@SMEv9uOT(urvT)zrt#i7?Aelp>BJ2KP}#4A(H z?GKq4NIQ(lMyHvxsPSKtYb3qk%3mL>U=;5L#A}72LEf>KOhD8lXE_Cuk(hh@zkuc+ z&E{$j5uvtn)(rnK3|P`Yv5f??xLAeEl}3B8HM!7d{Xy^n8p!q@$m|8{ouMx1!fR5-G z8u=IChIXtp7crcy;x3>`ePd69ChE4S8XcRpwF1+e|U3Gg?^ zB(g;E8tqwATg6(oQwy{88!m*}Hx9dQ_|GvfpkoU=1=gy zkN4(LO~I^kY)e4~{*xf7um4b`?O`ngu-0@#+C1yHEq!@i2<=thp1~UDnG+s*Fk5+J zCLP`@R)R%ecRC(`nBgah`*9Cc8>*EEI`H}&_wN1->A(|KKcZGsMV{+2tmpO3Caht} z#q7ILl@D3F(rYpNLaj(mz{}{48di5=w_uWNR0}+-)Uv8{PKf-y^!-rb#W7U}FngRw zB~^XKX#xN4dynRI1odREo6HEw#j(<qd^rjgkQNrmrdC(6dDTvXFLiKM8jC1n>+VU=$XqY=iL@CpI-_r6*^L*g}uyn0V zWh&~#Fkf;`RncXJ>)A~zg6Ph_!CF?**8S*rE8*^S9_PyG<~F(N*Va(ZKDmC)HW_gj z)U-&An(TL3!+53lzV_D{h0!nm#reet83n@80?GdC!>4$`E5P~{qkGY>F_zr1-2M^{ z_j&#Oa~Mmb%=9Vr9^(SW;9H*_jO}C;kNldot1MvIhoW2#@4GqLP14mWtoJ{?eTH^U zW}^we1`3S-O%NGY1{v{~%nk!_)z*7HVZ=qvAiDj&ka4W#ktC}|^^(yVs@p_br(EA3 z>M#;ySegB!3SmGgJP-W7G%QUEmr^YCQx2u%yKOgb<6PH`2jp_)#3C>%;E(Ec=$~&? zBirljQf(dzICPaYhHyF;mvE2%Z_cucB{fKOmEs;m43F1^N~J zFE?oyZMS zQ5oLASc8vZ4opDTRvW(kd*N>kOv`8NyO7wa)q(|yWgkd>u}v&y0*}chUDpS3a_7P6 zIAW7mNeMoZdIYrOtu^!@>l&oT!;iZ^;)Dj(AWE6S%;E(3#;BJ?VS+iaI-*OAQ!b!v zeZOVOeV z$=EVwy5C51B|8BZGub!PiN=j^)ntKHHcL)KlQq4?wWvv^+3gTYfI~Z@>iZ)HZ}Gy| z%JZwU+h1dHA=DqKCCUG4+C1?0xi_8-JI-gzZ4mv_t}5AQj5khhE=Pkl1~FL9S2 z3grfPM-!~U1HDpU$r?%|Cs~IVmVQQFW*6(2kFSbKe4y+6kxbhc(~s83 zgYsHTJ+2Qmmfsdu zDpa`G@!bgtOzejx3BGCL$IoOeanhG{y{X~$8R4w!xBID{r;;H4fY{?R-%}hE`W6F<*o)G#2g@A7sza>*GY!!tdKOp0xDD39V+l+Gz zxB}YL6p#xZcpPF3qt?}qxbDiB;MRDJ%F1JB8<2@j>XVcHWOWO1b6-ozNM#jq5NWQx z)y+WdzHeZ477Ui-x}=)EuUc*!@Bh=%e$|p6|1?wFr?YGxb(lDS|M$%LNuH#7w6EzY zoZWop>vBcLK>R?VITiD_-*T1`Ygr}n{Wj_i9UmKnNNYzf2;8!D6val0Nc$h9)ivF% ztRZmircu70ZEWmV*}A-`tWA3~dnu96#t^?{knZqsA~AxlvzPf3?UcIqeGbGZGUyAL zsewFnXlpI6h$0PzZDk4ram?P^Ta0;FYChax0C zAv1WFyu1SoG+z@&CeOZ8&)b$xJ_~l;1W7XjLHoeJaH_i2 zyFu>Qz&JN0gZP@2HGwSh{G;@<&=~3&Erbl2p|Z3G#J^|kj10BM<#ePmy2^k?3HfJp z|2q(E-9&tml^dXi7h9eWBMd@a^PLzM49DN+TAQ$HOx#MW@?Q}0B#FyT0r%LBp5h&y zmzM{8?moe|r(5S*&gy=k7G`NQNL<|@@mYMUFmn~Ejp-mj&GwQtufDZx1>@Xfkdr~- zfO`>V^Hqy(5GG2BOq||5`L016*F*A+-=LBuu(*db1+IU%kkgZvv>^^kGW6Fw>%f}V z4M9qDFKV=e{I*q21!*zDH;E}Gp3{A1jNi*T{3O3bbgj9BuclDdTx&rSD3H{?U%1E+ zi~{_nzwbRrUr)LWdu2B>jkBcy)M@xEx4}8?)hZcjV0c9tuIO?bl#wxG-;`6w;=q2F zzR!uDXRsolwCxHX;4z;!4qPzu%JRItAqX|d;kIi03n~b9;BzlKM6&n9&Xksc0TePP zwP9-GYJcKezvdg4kDo%i6bg|YztsVq#KC@s6Hi4oF6{)>oH=to1dI0|Jp)I)?g?2K z8g-Iagpg+s+iviBVw6-;io~$!hB`*aijg1#eHAczjLX)Sk9H#ja$w2iftUs^x zVfHe(_L@I&n7Y=MkT3&gk+02`m+a77M(5=DmHRQWepQ-*QOtEqsy!I71pI7$NWE;1 zwV5RJtgz|~Hx7H4Nb=py6Iaj*x^hRno=8lfHuA5^nyNgd(Al}=Rvn6}SabzJsnYLC z&qV}XS(M3IJgMchsc{*)+%=SEbn!xz@E_saxyMns54^E=&vDgz!B|7va)^ULgPndl zm5SiY$|5mHIyR*aa%?q*RgIiw6m30B^H#Ty(|67w_f@fuYGBv86Yd!(8-nlLI>E#S z-%pjtpFi;DEo>aQgzy|W1?MU~_kAj4R4Dts9}zdQKX7NZ2RfEa7Kh;$E=F{*I52FRME&BW3v>>s=T%3AY8t;o(=fvgJ6A!*6A?-l3v{DT;&-F+nLAPRR*x zehIekkFBKy0TSJc|F;9mjvZe;@px82xI^n!o49S`#*K(Nu_M(WRg<5>8WKO&r6ZX{ zF$z*mR(9uzSa z3@OrFHTLEZK3Ol-c67uPeo!Pj`Z)RjOx}||n-T2h*Su%uSil1zvc_IYb#{4IH)wLY_6gF)uSwqRrA^`r9IzTgjcFJVtPD7P zehsU4s}7iBf+*8X8w#>Cr++b#*H3;t!uto1+*H18_cYc#3KOLCq zlMHbLk)8uE4_8%HHBEW37A2Kibs(aRbG%MFgCa(0B_L)>C7bE%yV{dk+qC8My!&OL zHq$T9{2Q~S|1KRtL+r7H)rYwI^pdPK=wq2=T0w!HiMi+vQ--W>XET-&;)FEu_@lp? zID2Qpt`nol({TSN(zZIRFpk_w8!v=;gnGYC|HcNrNz~Dwtjf%sfR>gZq=s*fzxSWx zSrcEz^N{I^umO;OeKAKq$9FFv0kA^;gGiNd-5}^CmcRf>(D2(Cn6<%FVrACF^%%oE zgROF24?IaN-%$~+8`l;=c1vyMK3|jxeyH^8zNyjBd4S#YDrBMU8CTZwhAzDmTU3wY z=um1V0nf2KIaxmg=il>SAzJ(8EyliV*3StV0YwrTfJ<4t&J+xL`LrjNExf({lnaEV z4bY0sU$s1wwMQqYqy!-bRhHH2zupF75zyoYA$b;S8IOOIK2%)6+sd2_>ujGu3#YUL z)BH_^Zh(ZdOr|b)F}a27KI2eG;?|>uS2CW8^wL-)T)uL|W&pYX-lRqYrbfW$@*>CN ziC<%h21yogDk|CtnOS+IgofoN1`f}xMZG^O#4x>i+|%S+H!!Z+RHRdW32%r z0>~iXZ?6H4I&|-L4W~c|`17>K2ShZ-oYZjx=;A%y4(ECsDSWzm)0oaGX!+bEH6 zy1Udz*=iGz*J&@*zxJK+2`CY-rmZ77qBj_X)VM3trtv3wMmk7<$EL z#&rP|m-@wzM@_Btrc*_b6XtBjq;lI&J@9JAHUDLgfzHfZQ}9o z3^dJf7*Y5{Y(m{r#47ubWUt}$LYePK-Bu0@AyY01dV5tqqgx5@>mAvPwHUNYS7tv* zrJG)XkB=lOU7L;-(S-rra-a!`P@^A=*k2pQ#Pt0wD~btez*zbd>2RA@Gz`&O*_b_R z=+~x&wql3CU%Rll5QE!j2q)4eUX0;mXRknIN#p}%NUF-_gE7IeLQ7#8BLnbf^-Qef z6c*W=L^5mX@M|Vj8$fM+B##@SO1D=82cg4wPR7(1W61a)^5}oA0oEl7)^@Q@OFjK_ znQ}K?WFwLrf`I#taeKP=Ohjg$h}>l2h5JY#;-hs}sjQ!T5z2NTLaheG86b;Sdf@7{&8|deLmq6UU2!REczs$8tzS-Y)*IEdA<9JX z%FmMZg|Hl^>T*0hkcdZsO|416@ggV9Dh~;7aiB1;yM}Uj+34 zf6hCa$p;@kK7lK5q^pC&j(fFgczA6u^y;H^%farK7b&A=VAM>1v5oQ>nZoLcRT=BM zafyt8B|$~E)}MUiH(Aq7O*@`Z2@H=DLwt7Hc}q4~w|(I}Ru?2GNpL)D%3^^Lmn007 zya5R18&KwArdhEug5Xa!TWG_hyh#0;_*u#W|BZEzg25B33R6Zcnn(o6A@lQ$UcP*A zITn1aD{%B^-lcq0uv92wb*n%EfQC?S#L!KNziz^L`LYgOn``mQ>qcI3*=`_VQf5N< zr7%x--;=WWv`!vOq=(JaYnTP z5P3Iz2cxe%E`u)n!rKWMB4MDQKtQe+7SleX(-$<@X42VeK?^$ZzI;w}H{<+qT>2|O ztl|i1OOBg7%*)f0H)Bd5n)>s2p6zYx4(1lMpd}9 zOpN3$+Ldvulhu29%Ouqq>wn-3i$07Vm3+v=+cV77O4ibw!Sqy2AmcvvYkvLYw+9)g zbgEX8)T8&08v#~!iE2yczrmo2fH?ikp+giZHrl=@rWS92AlzeO!Vis}COqjBoKrM^ zkxHXc`TvT1qv`m&vyW%Zwh5z0vz9UBqXJYpA_2#kotHX+Y`h^|+A>;q=umA8ObDo# zb*ZT6F)o)$PT5?rmkaja|NYO72{ON=Hh#}w*<9u3!{jYiYb^4>#IRi z?~}zl)DMHu_fb(qM?ny4@q;lQ)q!vb`CAztL@uf((ywU1l&*%{Lf)7#|HjZ3E8@}|c<6JM= zy8XyanApGgR+b3l3|Nn51DJRFs^w{Eu{%&)WGdb8D#U%J^=p3Za0U3)?#Z-nE-CPp z8N6eNEF^gF`t9z7J8Ce$qGBHAQ4WOp&LdD?TLLofAd}E>)sGOpFrzQ;m61>gf$+C8 z=jVuS5r#O6!lpi^#2hNP755;-QE4j)^*`;t3S=b9gk_Tyi0Gq_3|&*$P4vNn8b<`xEVWNX_X|J1NdcMBjxR72eK^ z??$W)X9eZOoDY2)gh7#QzPZ^9oXK5w;xMTyOcmt^Hz8(tFvXJ<<9i-ElQ9FEr)|9x z*tp-X=s@_8l8M>8N-G@cZ1gKdWSs#?l9iX@pmV>6VnjqL<`!j03025x6+H*DS2xKx!Bws z4=(0n5~%dHMjb+ZY0M&)q%2D1oxiH3z2H{_VjP$wlmUl}CMN`6bRtLT&p+n*lPwo% zA?$+zClr1(Am_z@t_KgdVKfNo>US^)KTW-nuo?;{oq{$-B)jk^h+`O!)EQx)ZyAfx zO7MH@vGyuJVkrjS=xgm06^|LwbdhwSKnL&&$jrqmM;{C4$BeBA1&ATwdKy%HGM#a} z<45hHaKOMx>co~@WU4J|$&tlBs~*&gwk$B!n!D6&WLYGGLGg539Qom3YGw10<77>v3y9*n4kp&lXeP;G}yMf{AbaAggJL9zbjU+t{U7xbnFr$WDk(Je-!7lhVM z)*g5+!9{$DU@DyQeP_*oveqeP-w#|4&=kG#&p&xkJ6a@77AJ&CYR&^%G>uSt#e@)b z#z!OHAdEs>rdaD#Is;$AG(Yk$(YlS|s@FY)%tpU8ynY1H_e0<{+2!gae*XVybYP*bZkWIb~*LcIFFsO-%w1CE4WYQ-h z6_NY{(hHp)?`K72T@$Ma#&|k8Hw8cdC5wNqcE+&I$>-%w4bPu&y6IG^v+pJ#>{%Oq zG3GaA$(n9Ct|4GS22-@b|BLy}N!HTB-0uvI2~^RP-h@74EL6>Y`{eOgJ0^js9AB|A zf6)K*WMr5fSg&WD8+M@R7(S1cgBajbElhhuCG-?S*hmWst?d}Ab864qk0DiTJ?#pjPGW)0#+_Jb(t_7IiBg&Jhw-O= z5S-AnQ}Uwd+XRd-<9nPBCNVKyJLHo0JKL`#tpUccvl>q1FjnF%+Wu+n50U<-3tBXP zk{x>e1zcdAX){<|fi_0J5Q|MheW9B=B?qVPr+L~_4w3!-r_+TW*ijY?-y$BV=U=@@smxrzCf4OLnfvt=5o+IoKJY+ z-1b9u&V)GaasPjSlrtjFGy|i>N+y8iq>S_viTl4x_BpLtCR6JxEV*Ax@w9f@uER+^83(Ve`r38*=B=Hz0hNg#1Pol>_aE zQ891?8mBo14;$_lkBqBIfwk<@{?-qHkOj5Kq>eqw{&BqKG@1C|!9!LtMLX~)qtkz* z+f+y+^jA}IdBsGs!4~$2cgV@WSQpe)#0$qTeU8%34;=1blv5UM^P+7D>UCg}$eZ)y zG+!k~;$($UBXfOXkN!){CjRHHk-_{Rh~9g!D4#8hH5d zxqSY+mUp~CPV*EgBwNU#lYf58DqeuEiT`c~=TP8jZhy^~%_(B2go&rjb=aJ=ZGrn9 z-sbl7bJXYIV70hBo1i9qPVSfiv_!* zIXLpuxJ+?@pL7Ji=+c&yh->&r&d~DiJl42p^g18Tav5pvzPi*ad4rrXBP-8^hcA=G zHBxB{@66M)wju8{>UPF@PH~w^cRTa}7GIwLP@8 zz>H<=R=`cK^sG@sfeRZ7s+x`6_e#|$Ux$DT@QA!Q`XLO}4chyus7+@e?8mvKkg?5J zv`HqB8Jo^wqF&ez&5$ync?MBZ#>BX72jfxV-jK^HgJ1m|YO~z`(>_lr&`xke*XLDp zt%7$2zK#xIf?vE{f94sZpRx*wJemBY{|2v^Lbg9P@8^XdZlAx0>I!Z>!81I@bRbX? z!1*&hjBsCoyuGsL5V-fjRAPDZo}FkJT_wYK5})8vrlju&>*SMua%wohYx(>$>Bt^I zI9ai(Zdwhf5HF&*OHw1e57+9{w0G2Mvp5gu`>B${1a`dFXkGe@6mKtHY26x& zgV7DadiN7{Rn!cNd!;vV-g)(U-kx{fTE^%ntfK8x%5q_65_b-IqQL1#rilrl#Yk4W z4mgJRF#{e0skr$Zm2pA5Wir|6tb2k?ZpWWmXqh$R$Ze}C>%_Ck{J^V61kW?#MNYms z;cm@$`2YX;R_H*(wNiWYsnEkJhCv~-2%O{pqv_4#nmD`n;miaCMZ{n&2CEPhXEG6~ zwiLlYFjTFnON$09gbbCoF1RC#I9UYuwTnw@RVWrkC}6dSLKc*#u2tJA;0AH28>m&nIY$0whth(z>pVC@#d>~3DhsFsZ$;YG#D zkc$;R=r)+B+&ePWXf2qC7MX!)qwJ%nmC5yl4S0LdTC_aZ|K8Krv+mlW&0qO?nZT#< zTfI&ea|7O4C;jX3#R+^(Pbul>l0(YBR*v8fm+=!R>D~w#HQ6~%#<(lXGi0#_5<6@7 zg{oVMamT0N6R$UXjQixnW4{B6@bDMiCye$8Cs=)26X;#SONwm?VNB|#rO3U?yV|5h z*h4;=7q+3ErCcGGrE%57wxW8TvG+(~fsO4RDb0oN0`2@A9%a`K`+}j6LfGdS8yRI1 z(L3a8J$NtY54QqdlzAOHUcZCk$=G`MTg3+E#a&+3B)5!)W$TOTWt2fbN#>kDwC#F| zIyi>#+j$Ig~~0Un?hGH+MPlm%GyEQLe}>Y)|*%cFHiUoRu!m>Y$VZ{KcyK zZ_o&ifj@G45`JgAv^JYeD9LNz2_G`?1@-Y>Bnkb<`E9L~RoPo7AvU}){mm$8VpCRx zgHgq_xYYqfsE@9VDA`c@1{ogSw^>NHAdsy#GP#U$Fp;|J(s{gRmN?LVZ&=y;vh3A73K3V~+@mOMJrdDPL&r%?eWCkM#PsPG zX6n;#?*R~jAHB7AEkgN@Z1)>jpOhmvYzmd+PKsz?Y!eiS<~+pBA`)-Sn91;C^{;i5 zYY4b9BRfi7Fv>4bqVL{oqK&dA2|eN~eQC=npDF1T_shyOm8i$O^9-onbLVRMq9lvr zK0s!qL~P!&Wdmhor-N(~XQX5GS!I4=Utb@Ls9E@alMzLu)B;;doSuVtNN}NvayYbJ z53KujcFr{_b^($$yEnDWrkufW`+5{rFVJ6JK&;W0Sq2l6IKkYgb?#ko7_XId8Uy0S z2#J`vIb9ki_GMQcn)cDh!OwlE1r&J2!}?xP2U8k|B?72K+UMmqL88}ZH5*(|K*xGu zO=0=bqq6dRvesPyrZ|L9F8^tgywO@y3+47N&ountmfQENlanG3x#7w%Y3_Sgl*Ykg zO>}{o+<*(#-tEHdGM4SG?>I)eW|YY+dBm8cLm%KoDOSQXPCu+0$ zD6^dVXW+>R!F23DZJB-I!T5|BJ)e#DrjdYv+U(|+(=P9?km_QvOzz!JPt;^7RHEP# z0}~Ss1a*~jlFUB3#9T~Smdh;YG@mA)Z)5BsC0{zIn9%uB^EJY|WBGZ;o?^~jNn3u@ zd)}Qakg4)`<7EhP1h(qN#^fW6JH&+T#f36i?2lSc+7fRHFYAP5y6CaYcFx=tKqxN+ zlC@n)lwmN0m2O7`6)XCCyWu6GX-^LFlGd)FU5}$|!G#)?M(Q20qzLUEMepBYoqi$cRHbACl%ZE`lY@7c?1P@s>vf?h2p z5W!Scwq)~`ZCkd`+z60lj5*oajN7D;1MvI=#Ibi*AI||}))@||-jwCHI+@rhIh{bg z6H8^LU%!7xNjdw1J)V6Hv4DfbV;p~G!n@bGN>XbgFD1WtiFIEvtgoCEg@+O3;V{AF zh!Dgc=0s#xK<@aKr{lytMZSeEWf*kKfex+6pC}M~Ag6lWigK0pAg? zk+becX3ShG!m6<7_3$juST8TgMOX@_BBym9jfBWgNmzXjRWm9TudI?=Vj+GtnbsB| z3y&$qaUK?U>P>OU0C8Lt4CI3g*fzNnaoXm@`%sl`k&NxJT<&blzo_MVVIe597qr_+ z+A4jhFhy2YK2q3*R#wVlCh#6e^-$(K>~V_;tG^ zSE+3o(8CN#|AgVP7#Z5P-0{7q$qXU*SY4i5)4!CPdm)J!B=NcGl9IbU85O$8Ho4La z{9*XroEC=rf;eM;eUstF5*a^tV40&Leks&cGtOEf_)+uQ*c9m7tqLj@pJ=K;-XGi{ zRhO4l)7I59*w5NC7gN@8$JnXCZEq+p-aqe9_x&w+degC>n)cN43$1(?^rizfFZa!B{Fuj1ehPfuKDQp4n7vs?OUwa zrE3tDU`MwfvK8W)_>vsCInFGiE&C+ouw6TG+Rsa~N0BKpRXecK3P!8%hCMZ))duH6 znwtqg@A?l#l;N+bY^2K7PPxZPI0;tRo65>2O*VzN^Xm>v-gwN86XB5m>JDmZmKrkN zc#Ax$%KTRM+_FW^n=WU5BzM_&NJvRo7^v?{S$=j4!bQxVNyItEd2kTFL?+xWaL<*4 zkRG*jy9F^O9#0bvj2s+0SU6j{hnZYY#5dIjdkl1BU+R2*6o1!2j<)SvQb2J@&^HCx zUN(1@{=<$d2SfLMdDoko)(gw#w~F5Aol_b6`*+{FLE(yGe_ha7O~v{H_YvPv zH8r8fCk{mAJffXrAyvNL*EiyWJ>WR`NNaD?#%VA1$P8(rw87n1_Y=Wa=wN1~EA3ho zAX*`44vy*Sp$}b_Tt#1cQue}lrcffbI#F3|wv{H%{e-wm-l|aFMgGA;1y+sv1 zZH&@`*s#q8Wv2(R@P62jj5CzDzQmQqaGu26rCsxJz}@!;QLe@;w(jsR*YIuIaDV+$ z$iM#YL2gg~M=uc4MpV2MCY@!3c7$*f z6v_$W@zSszdXQU(ioHh_7Zh&5hgCNJ5*6d?C*zVOCl!+!(*f&^7Xsh&N%Go}z$s?I zw~to0SB43un~k>DXsGmz5bsZ+HnO zY%eS7v`86HQjiyAQCYf9M$Ptb&=J>gYu9t+m{jfM_)(sV`@x8w!f zLHl{$Xb3p{{8=`*Zf{{(W-c&)0PgSgU|(?@9tNx$bq0ZXjv$Pp8{Wc-KR)W_ZyyE_ zIgyf6(>v_6Wu~dItUD3?!@#_^^2AYsx}@J;JHOH*To%>(Md+0xTJO}rPu@R%#X(;y zq#zzU%dYI{ZvGh@No?@?r_X7l>U+F}m8TxJd9df?^s`YSG7qeSWKvUpqiqCZN^^b$ z8^`wo;~Tn?uTi#D-=Bt(r5!j(Fo+7jZa$O?&j95(qI*f&Y(_P%(@_ZhjZ7Izmf0NJ zyFnw#aNL6^<(SMpx-+^jA+~9Y7Rh?-5bY8?s=du6zY6O5Uz(~_jA~%Tf_ZZ19Gv*( zBML=wK4eo4)3nW@JSK*l{^8KAU{n@Sao z>Yd514rIp!<_)_LvxBns(8^TtGZw*ACK>PTe|>#?!zfsZkeX4U<`E1Z+I{u4oclwX zyE=oFE7u{)x@-4f;1UX83ou6oaP668z-q^nY^Z!P6Kmz#(hz=JFHhuQi>FHn1A`m0 z)-?HA=TU_{^zC|+!ajI}-*LIK*93F3UL%ws30F{T#;^3^!x`Se-hku!f>Ltu1}D6k zE3a*{fWQ+~YcwyJSkXCkU*gn=xAuZVcV_hk6~l>$>+{u}j6H4C5QLI=9hMm58eDCrvpMrCKGE@0JwBlt7Zo15j% zUBn#qZ0wFjdptJ69&5ny!<0*3B8l&J`}uQt5s-V^7Nz$b&;y*3@4asa3lBBx>h6Uv zX`%_*M7_r=tB*QzM+2D9h;ns&q61k=E@ld19lDDRPZxCgg2z z6H3QA6u;W*o_pH@Y`3Prx=I_q+#!qp491hDHRY!*|Jmg2|Gu4r{Pet|jZ%7f>?m6= zznzWYY1jzK$!ppH9;>1^_=Sf-)q%BW)bp}R0n01y^qvrS%Owr2%s{_VP z)XGeo<7z>lzTuJLA&rduAd)fNSFs(8rI}1Vd%*yF`5!`aCgm5m42cg>H zs$rBt#H(yWmGF-RSNMJ>{2z~QAM))-=dn)1HSoMc_^t@@)78xR^Az%${z&$aZQl-X zg@C+xczXZ-;K7^znxWHET%4qqC8IZPd$JppP*7oFN});e+7_ZJb%owX>WgRCG;vSR zJY;W?!HGpU;#F?d-_5d@?3-wTM5gsz=Bs&i;NkhkTrjJ+yU(~l@`tBoWK7u((o!xlrIAx0pbja4R zdvD~xyG^_)LFAkca}yOIkDkHO+&1xI?vcFz4lpP>tdiO&{7+Spry=Ys{Rzf@@%j1x zvXrw?S{p~En9adywC%0OQ8TQRHSwhcEZCTT+G%TqpP!FN6rteXztRgQFzCh=FS#WG z-DTq`Z!`}q!Sd?>s0Fr`#XyQE$=i^^-~NK*`!t@%txV|Ivl+?}xm9p?&(*ko*-3?U0N90j-6R^g$XyX0re zIm2^D6up)g8wzn7+}MGp zdN5>&6`8ehacQ*CGZeCxv8N~NkbT&Zc!e<)m|g-1zQYo_PAEo2*|OO2l@WBTm$gF@ zUzDgzWK>@kc7Y_5x8cl4R25prSqYhT{zbWymc?AC?A?#y#t~c2oi7*qGG<8l7YbFH zZQ~}|<##BMm;fe|2(hA}J;`2x$Gp`zHFfs4_Rf-7He$ddUhdhf9^hH)iBr7qNw085 zWi~X=pkl^F0BGLqbEpFdmgt{qOk-ZeTYEP{32yd-(ZxRlsv>DuuWzBBim<|DO0qyo zF5#RQ9}mea4pMXVVUC+o{a$?p_SN4>>e4jZ{P44bq8|UQoRWU1tZbcM2tY%X^QNOi zB$_&PD*JzJ`_U>;Svt4zQgbr7+N(#89&&e3W+!^Wmm#sWVO}%@2o05sSL=0)0Q=5| zIyI+j#tg*gw%)i&S*F5uW!=cRaespQPioGNys(M3=Q|tD$zq}-C}$rSf!}E6(CZRt zSXNwuIV_I*bn?g8Vf=pw?ll@T09cLl9oueRHkhgyid269g;;rM72|<8gt*Z6KB`} zWwzZu`;p*veM_JEn&JDa?mC3i`EvU+W!ZhkHf}Z^*P|Zu;de_#M&dmOVE?q5eg#=C z)b#Poo5uh*Z#I5U8P$n<`%Hj@!xghvTKA=H#&cY6H)N(YdUy&Q za6-prWYLg;xhGm@(asM;lwT1YDStZ{=a+=-o&oFIfqd(CLAB1nQ#l>T2^-5butfU@ z59Jm!4pDcP0at{SX#CRxd34alK~~B=^ZlYBF*F|OFU8|zp`M;af{M9R^U#jUY8v+D zDdNCtcLQPPvgaA;m`w-4g8b?R`U}ozgkxiX%oJ+pL2OnLr_V)UWLxE$FU_kvsnrIE zES~*#d?^cyh=8L?C^$3S)o&PH&UTCpsP%@S!t?)Xr2YLOndJ#)>hs9n2*3$mfYLKp zofbEMP;2~m$P5$8X!nACds)w3;B~5giiubb5N0~7=uTOTge$zM%oA)SCYAOFU`;Ic zjMz)bYtt5iB3~*Fl@)E+QYPn$$Yk$Ln@*v)J%Q%L84M$;iRyWO6oV}c2raHpJ4$;2 z-ZR65%V}CFi}<;puDz?uJKJ76ezhc7A?T)d7|9=Q8!7j4_UF?q&bd2GM4BT?vqi6xR{H#;_L zWh@^^K0J;M@X1BK$P|uCCZ2abhGuG~N;Mjw1$1N6UpL52wcl)>Nr)EFF>gYl6MP?9 zn=61|vQD#&u;!7)e3c}(T#>{pvuA${B_45f^*Mnp9tLjc*GzJbA`G7c`$EnpYqj4hP}cv$<2yt1Z;M#+|(r z3)stsZcvD%_1$-AXB_KOzZ_%)De-F0EWsZ?4nm=S29)hTgjC2c3DcQ}6k}0ID(AM+ z{15A*3b3A7Nmx7N(O8-3+C1PSytCmIV{iSG1)xlmm9u2R8GDD!Dw`!whp)VwTqk3c zTQKNV`+C60$OH3i`-;Z#=y9hx5U^PSjpE|X>a??Iw90)*?kTr@+z(wi6Eo?3sj#3T zLM%fG(~YE05oAS}Y^A@Ttl5>1f>x;#WvZ|C9(2R)QHyZFnnKj-TnJmo%d=)USr5h>3*FPFxIdF6sS<~@lHdmic;M0dXE33qtk_*may$g$_Ve(;=C(oD7Vwc61pj z>lZWFAy44*4C-a2^?*Dn5ur2K4xE+O#m|AecGMX?9}z07$j@E8djuF~#$DKuodEJZ z0s%dz;v1|o(@))QBib&0=P`vT)LjnbSWLcO^pOxxRyzw%>68>Peno{S&4ktTV!hDM zyVtapGOA&fJu4}0rbk3ks5E;9S`+gMY2E`dHb*Aj1yw!={dfwgIoZpPVN}ECe$++r z8T;DK%A6n5?qo-Y>4fLZM=($S-VpP^uRO7D9o7|8j(3oj{+bbFTZ+hgdbz)lbZge zVh^@udU_*%C~gS?P{x#QKsH)norx8OQL48jE{!<&@U34N`w@FsIpqq&8Z_AFP(|6c z@Q!@L&0hyydzvswhgHG!ht|ml4YNyB&|2QxeZ=7G?;zi=?h{RL%lgxzeK~;cQgiDp^q6 zW$`!Z2ctskX{DdXJC2^w;CR6A%A@+y)D#i?f5=t*kwB3^9RwO*SyIyLCt8^zy^x>L z`V-9!ME}CROaSpYh_KF$WrQ$|4r{xv!GTNrk`<7BW?_Bk`-;La;cW~VK)=dl1X_9|t7T!jtYMMvirQ_vk+0FPIS6~L| z=|hT8ZW_n8$&Dwlq{pK;`V%k-wDs)A@bV_c%WkIu117}!hsAOqWEq5}UIwplY{U<^ zz>@wQLpgT~-s`FE3=P9Y6W`ZtI8EC>JRLPd?iyDw6@RJKmZO;>9!4Pm%Q9Z3lFiR* zqAf#Z#!!53%5fgkie|}=CAvYV4gE+i87;%QjFt_L5zP)WiDt=jKqQ1>C@cj*G0yRU zwSd?L{xb!iL~A~7gdj=I-DES~NVMmlnZsna8md4p4mvlf08N@eC*5(W3~o#2@kG+i zBpsvr%GeF1%^+lVjFU&^>(Lnci2u-#NF)#pFph42=6vL0P>EYEyk0BJ4|{Ie5b9U* z`~7k%=6<8he!F41TJF3J{l$S@F*USBj9(q@=;=p09|BN5q{(40_M9!ac^>)!5P&{; ziHbJ1J; zFe*$@vJtV8p!mjYxz`F|(!xhcV3N1u$QQK2e93dGcL}L+WHvX`76&LI5Eq9*Ztx_b zzCS`}IF0v|^s=bSxxDD3+@TuL#pFqW|JTSkgS`1qJ;3YlE1GfXxq&|*obk@SU7l-A#QtTHshMy>Fd)e$Wy~o?xzl_r!gjzD_!u}Fk7YZ=GOAw=z9hd z!L+ci@{T?p)}BN=k&wX8%zFwxHE~w1GSP;E$dE@!R}F4M71;wd$k^b8XicXjz^%z-V zg2F;vRkl$h>O!}h|C^*Py?{5#0b0@ON30!wH+eM?VW^%u|Jvh3jne&(fC~6bd(mx3 zr=8y+hoGAObtPj8zIkvDT0?*F^qd@s3iCZ*WS$ur(a1uLCB;sb^ns9$`%qlJxr8n# zW1JwFFSViT9!#7mfGon2MoiEqJwO}UnGDI~xEYf8@vco}L2>WMxS?d_x~+YK;9iB6 zpcfS#%b;YtL)2IRNr{GA=`F(F=0^-;gh|nmvE*CEGKN_4;^q**T5q;SW7Xzyta8a} zCWMBczyn5dGUgFw3;b=nR1_>X9J(ZlcZHReQiiXP!+wIut$zKGv72nw$c-XAC#RGq zUlWz&;&pL3qo^3oa8T3d-o6cLdSG2jSfd_M7XM1>0HoqM>_H|L$)kJWs0Mpzi!#)r z5*`oY9|_YrTp@DqGcb~N%G^Ul!HO8swBaVv)8t^eQKT)B#tlU+*b-qRK>T+OmJoI~ zZ5Z*FMBQ58z?uLKNDs#rnD4^D^e{9gv zyo2Ia2a>AWXv}*B)~W7xH&9k4jPkKzXtrm$A5|R^8>yLua1qt5Xj=o$+$1ChuzDAxfL=+x3 z8Y(i|D=X!^15uJV&cU8pW%JWnJ)0m`P9YOs*mpO}4LK>Ifqgw|R}cywSzf?}f1CaI zBiiyl)*QwzL{lguq4@G<`eXFjFj z0ahOC3QIi)&BoXrDJ&5j0*c%#ct?`(k%OF!R_8o7=hAMh7d)qN@Ol@&$DNJpRYn_# zUD8w6MF^^hyHAX^m1)5H95>oF6|VpI&p`7yAWmN`;j+)u&>R1@nSmDH5{U-#%I038 zUijI#%+*puHcQ(F`*S$I@q-#Fw+-+RO_0{EhPm#zon<}dAq51q_lUiv2`J;{X!5(w z^5{qSGKzJ-6YArOmSMl*k@1nbDy*cG<`nQd?Q$lWgva_>2qr!i>_E&UMg`A-Cx^jX zHZGkV>0OPzyU1MFhJR%r90Jyh!uyhHYNDF-x(w=u0`D@hBshe2_K=7_Y$|7HWLrNP zYlZiwrI&!v^Ltb<#fzDUVfC#(8X{BQQ$U|fDrEn4c{>MiN0rHDk$B( zSkIAmXf#A2_#Eq11@M;aBguP^+YJyaZ(?z&n=*d*B-zi4YkULmOG({Xb$b}T%!BZ^ zClaPgrvS^B#Mj<6LEfiW*wsc^KbkBkBO)tUyP%Y8X!#psPVnv%3d-6xMIxRbRUSog z)B5z~7G_*@J)PLcTxGbn&2{bKIDR?~d!;k~7EkQ!fFyu_g}EHz_0H^U%B5~WNGgn#_a z&4aCO=XazE{S!(=ss>2=+rBC>u{JgNW{9D(*5vuAm(ZeSmy^w;;KnaebWm!jWn(e z>Lzy=_!*WteqPSvLRj*9ONqC@3KtV+qqJza#ew1jWWJDh{2>m_phY;+Kkf_}v1nsFC!qcUz zf-s?(cX>`t_lh=`7*Y{XAU!!Qn1N9q9Sv{fN;%vUMv7ikfpeaho6{Z>uqtSh%rum5 zFQF}zM>4H;iOB*6_a;LhW*NJ&_z^fSwZqx#IZ0N^6&uESCfN%q=j>FkXwQ|!a+`dE zy7$Ke2(jn0%#FG+2x;^`Wzv2Jh_XDRk6#i`8%ihX<=U>ko@4)MBs|bhh#__jZ*P%X z7~IzHW@T+;jPQJ+EkQuxgXzW=#x5!>Helz~D&t}ax>{S!*oXp9OmYj#GksOOcMat> z`b@(LsUp=D&hW!iOGARhUti9c=(nG5oheriCe@G3w@=U<$-a4AbAqMRfGCY->qXdT_XMS~?caM~cl(lRQ`Q1(txUwj&EFgXDf98uDk|oG3$gvI z+7Uo0TYUR2otp9Z@x*iLoB4)oRfBFC`580*JM*lSx9Ry;uV`0L1j}o21TSy68f!3n5z*I+7r{if@BORuy(m zH~iyVgyGm3aB18f2Zm8GQHvz;_AKq>fU$3HVYj7f+o>4xvIMWV(GAyFotR8;E^K!L zZji*+)clL5$pbvus^!jC3`Y_bNgZD>oS4|(HG2f~UQJE)lx2;i_8OVME^s^&27);n zQ|5l!GLUs8wG`ty&`IhJXn9161rsG%?py^QT!Q2QKJd)QTo_f*meGN$q7`!GXr${{ zf(zt)%-NA4-oyZp+QCGHcQMA3ag4}Y&P{-jaHdeqC3Rk+6du%nZ#TxDAcTF4@;0sa z#%XJmE6;`4gTqQoC`)yqIIyO=15hcS@06$0_%KJ8+rW1b6!TNy7{STo?NLRHLpv6z@zgnQG=Yi zTlg>?ukW7(^)5B0kTS4gtYLn|bc%b|Up(~X(=(LvoNg+iQ8`=!2jPMy=gs~sfr75S zaH1xLQT6yWH6OEj8lHls%jWHeTlM)zxKI;7f7NK*V=gJ|VORDZ0~>pa#C(w093D0p zl3x)Kf1&Q2F?XHodcNyg=4O#7IYDS(e)m5LbS4m@7!D=d-byHOVliWrkK( z(auWzBnKd!$C2%m)Ajlp!thEyNiGX4rCdkf6|y<9A}hgREw2y58apYlwwlO_8Ej{a z+XTRP)t-LRx-qF*9V+b`iQ3X}d4NYXveJWxujd)g;>*m3&ZP5Nz z72v(gj6-cK?!&skI`K8fnE+xuVu1KA{RlX4K=#B2X8}U}tl{1!N*O7v>3au#G=PZ> zu(n`c3cbYs)%60x2hTutkNQo5x03l5k@nt#STq1nEypNje}6Tnoh*;JlkP`7m}Czc z%U@>i@ZDu{;46?wKSuR zQLXs?xEQiMHcVqm1;rD=B${82au1-F8tHok~I3Pt14sctCGHX z5l|}+6cbHPJ1EzIa{bhNcr~5c^UdZyrs-PR<~4kpG;iqNQ;}U3GO)A-$-o{kcEL(^fu0XXw&X?RhKa~$^QL?} zq8SzZSHm^aLy;&cDQOxGH`rmG8VM2Xp0Q7ot0+b%^&+3oUUU}AC9*9uA|e8~BS^uE zsv)fl3WK1(HqEm<^NEJ#x70Bz_Qck2f=+_zZ7NWyj#1pjo{cHF$gaPJVu^Q%7)1~6TRbvNwd=3IJ3S>6fE zdoOs%Gm85L)MAwj#KyPFbpgbV#x?D@q%2n&V2k$cc9|*uO9VSP38MQ=IF^knqH|1D z0OJnMSK(pb9#|Vq9QnnT!ng;$S&w*KWP}c>e~HRN_{Xgv#(!DA{n?x(!A*$*@R6Nu?~&5*kw7jehNT!|DJ2Z;O-><6srbn|EsXOAqGr8o zg+P+O7Uw+5#P;ApOr2vI^3u5ye1hS+2}G7@{w2nK@kAqZ==#9gRYY^!wT-AUD{Fkv z?8{Vp<696_G9HmQB_%UU@mr|7FBNtZV<*{|M7c#Fv)@bd0;x^(Co#CY8|K}?78r-y zKYo%t$4~XWH;J#VJ;H%u>%oDN5V_?al!F_&d0U`qA~f|&^t8n;MT5R>?Lz$3kd>3G z;2xpUEY_m@-2p;Ks4EV&;c55Wmib4*h>I0glQe2cFWMcuCtb=cju;fBZTvpmtwi z9Ha-PrfG~SVAxR{3IEG%hrwXGaHPPjcHKF%4+b1rgUAY!+jAiy$qB=L*lsL5|-Ic-maNo^sv~j0+@Q z=UBHez;>Uy{SpOSWOC~3oeUR8ygFTqDiPwC{s|Sc8@cpBEe$%kbGxMO#*t~!5Cs@2 zrs9=Vq8~iJu#t!K>ys2l86e4X+N)*@X0;beJAT7=>X)@pVH3F*0RB4Y*_SKPB)Bfx zX&2F|zlZoz`#YVje9%dHG8^u>rC!brKua*{P|a~XYZP!WWHJ6!SHde*T<=tJquXz=j~O`9=+bbU+A=Y_S<=oF^!pLxgKPOwGx@|C4c_0oEt=nb(#LM={PSTf7>EQ!0P;?TAWjpFVispNLz8 z_JJP>x5k7{tfrR8RApJ0a!{kUlA5~;=TH~1g}v9^cv-Ie2ItUy^Ti8BRlgzUE@fS@ zSZ3qyp=vq&^N1PEhyYcNlo?iK_Vhx}*;i)2$=%o|Ohn5c{d)%i5b3>!2aWxpT*ilo zXFNobjZ8U~oMxeH&lr=DFaAKT%m+80-P4F@6;cz{soW??9{0a=++g@2CypYFdC20` zz2gbJKB5tlhk_UCO%cq>daFg}Z$FvKoX%KCc(Q+U7ilrZ?>b>i^ZOHNZec12D4|K?p3=%M zSikOWWb4!(LP5w%%KDvF%B6WH9I2^-swZ##2|J_G7kN#TJAcP_-KyB~LO71qW%f*l z*Zr21B3H&j3>+Exka8RRxIXV?L2Fzbf)@J16y+lZ5%wL_3s3?EB{^=%ox%7gR1dp( zMiuucqMYJ>lGe^86SUfhdO#+i0=(o|2VJW*s$EQdWa zXSrxgra0q?rtrp(V4^?~`?v|rPF2$9%OU#KRS@0xQc{G%(o$S~UhdSB$*CaU3&=&v zb>kY!`u5AfJiXS{9~RLajk{=KKmKXT>&Bey?R>|e?l$4tHm@FMNS_Ef+Aw4wQ%5L3h}E)^0+rR6<@0w6al zxmPRng+cS6DsJ0&=O@MYd*hN(r zKbKqfks8+aC(oG1cClBeSZgZ;4%XzIrD(1{`wqeq4IYnOf9$j218QCmS9>x1vEC}5 zBInkipPJtBu!`Z<6E6ND{-}x6R4u=<2-;;r)5YwfT#LbcU4{I(m~j;nv!2j)fK&j1 zoXN#bhHhk$Z2{#}%MjbGaiks$XH4rFkcS*IVTw#OmVdJ!%+NqU@ji$H_x?At$58c5 z@1-8u6~7L;`I~PupC}yYUs0PY9zI*>O67Njglf>4}sAvv}+8%yU?j-m$)5}T&& zfS#YR=`KJ{ct!V;)I|GaqTcBg-BT&2Hn5Hx9;#LFtE$@ZgyiGP`MYInr^3F>poJhS zyPbDa+^oR5UABr5L1wAM96=^DB~(-}%1C0avlBa;)Fv0o>0b8C!c8Vr*v}y%c8qYM z6z_Um4&c7Y-yA@!?hXeXO6h!7O$yudZ7OFQJwRG=Mg zW0GJn=Owd`b(OUNQzbVg)cAQSEFnbVwmmzUnAH59XEFi5kqH-Fxo3oDqENBg#F&Q6 zYQ88}rbD{q=N5$AG004i=`UsWme8da5xH)qRTs&6In zKa8+{01JsqlzU0sZpzwtL>6nGd6%~A46(Z-v|s`BDQ6$9xKdAX|H8jUQ`=RdFa_Ba zp8~O5yjdb%RoV2Z!f2jm0x1T9$|;0m(?aaa^gJ7ZCTgJ+SjdsCI^^^1`(MLy#9xt` zmS4hW%Q0>zzqrFQFh|T)?gtIcUsdG*g{ol_^8ntQ{^HoSEh`y|j!bCV{d_%K!1HyG zEWd?HRM>m1l2(qx6QN3~*D`$MQeFq!A6*^cJ(CP!IF5Me`jls4hQf?zmFHrqcx{q) zI*w4X6t8c|r-QO)qd(~LkJ+u5d?upLzF zXMb<+Go+mY-Oj(R{poNJ1-t`mA0WxIz8!fF{S)=HQs`fa?}AUO6ef=Otxz}#pDs^? z6koRK5Vju8tfXt@JvlcckUaAxaK$8?t@R~CPvHp0?(0KwqXS{yQJ-=>kWtEr`Q7^C z4EKiM^{!5#`?0s4YJ}z2osdVsvJhMo-4p>vA3{YFwk12WP%eL-)?1=8x+?}o`U#oEE&D6qT-<3o~rpG5xwdD5t4Whhog(O z#IgLQJ6Js5$N6NKd6ap9L$A-q0(D zR8Roc4j8q2o&z2-VPdjUb{EYD{gR+oi$phNiW;3Rx)f{}%-tv>4Y`6-<5)_6N zn@>@;ev4PLp0RFN83dEb6}Mt9$(*3aKlU5%qHK+BqinEj1XwX0YF0aOH3<;3Y71aD_kN1|z&}rPp$(3d z&8TeeR+*}W`aM@u-m(O17LrV6>&b5zlWE=QUUKW&62E}v-JJ|CGr8|jF+l=^GRyS& zd)Ss@m|f1lpp~;^rs$^?Xq^T|P1rA#WH0^o9LhapOD5a1er26pISzUCNl0qsvWeI2 zrr#Mp>cWGKlyZ=Nt%0!hi5-P*;5my8iwe!yH>s&rjNN(DemTHATBd|$#rJdf7YdL= zWW}>1j7fj{v5*<%pBMEsSw$IoZbdRi=X_T^W0!SjbSX@_dleb91!!wP$3r>Sg$H4F zL)R8LmrrVT=~5n{JviMAn5TwJ;CDamgJq7gdLCToC;G?VDGlEzq)_L%j=H8XPEX97 zx=MteI*!~Ep0Gh$b{b=`;Tp5^T9jbRhsc~(=wtr9D7W-L*jLjuw*vV&q&lnERt%Ja ztv(_LyiuZ|x@KXQp%-r$RY>G|GnQQ9{PTx{8LkKM)7%@kF&L#ThiSka(CKo=zzBd1 zlhlRWRku$I{T9)nJ^EA)0O@jtqNXo zX;hE1K5(>+tA&rbKAQu@D=Vi2@gZArID(G^-ec@PmaiW{S;H=|RlM;9WsoeA#p>su z0|W|19FbH1vPxl!)}`So51xz_D|g2~4l`B6AuD4~?YvPPAnNib4BLozFk=U68?z|x zcwqcrtkw`9>aROUs)H-ipvfe$0lCB1m;~dcQq46RfDC|@4(B{vxBZEO;m_cmA9TWr zb}z2@-NTf1$5!3HL`%s_BV$=ce0%nc9)hxcpTKlFPW(qgK}bFl?ylMQ;`y(U@%ker zR_qa1`-SV+@0;k9cwt9W!A%4be&StWHp zluEys3;&~+JN+IqDEhP5#kiy52&S|R)2r#$$DdP5mw((KqPlA(@N6=L9gWUI_mJqG zQhXjm*y!%jaB0V}@8!NTP|#zi7397r{6k!?Di!#Fm+!;B(rm>aIC?FlRCp^NKEG7P za52Q(ZJjxcg(jAyAbZcUm-zbTFB=)vIAuOc@NjmF@&jDYGFTi>RJWBB#?u@j&Pb^F z`*<}7+Ap+N1QPh(wsaB`gtg1m&$~`4R3VLy?;zIW6?6{ey1$K`Z`Gpc93Y+~G&j-C zT2Y^hOyBgdm@ox(n15;K|Fw@=?J2umkoKGqP5gG~N8b(&ak3I+-~T(#JyQQUw%{HD zDF(3onl(EpcgoH(kN*+5xp}LQD5uw<6EK6BbUCAEPhZNC?b-EU@n*d~8w!ATQ2FQ1 z&A!cWTL}J59zLc19rhV==M9vbXTF990!OMfIg@`l4|EJ!kg!k=;jP^Dd^tA|1o-Uh zR+^JwkvKhb&SQqVMfl7N|B>PL5fOH{wb`X@E-Pip_55UYiN?)$IE4*YTXXDBf;7u< z^k@SEX$i+yl%sT|*Q0>T^iJ?I9Mnz4IrdB#3%j`65(gciRa7v*^rY_bb6k7^Jcc$8#48iT(KJ_o9H3yxPoC zmIMB^Da2`8{ddCq;9cvVpzF-!aZ)yrC7R`YjNFn7l>QXg3|#PAxHl2^TP31f#Hm92 z0f9gJ(}icB&rA_J#Kq%09gJ z$8-Ji@-tH~mv(%ULt8eg!TCLK^?JmakhX4vY&%2xCvbK0|4j{jzjyK_|r}c>H*JTY5z0 z4rHn!Rp;+Lvs*x%@T{yX&tzFWG=@p@5Erf-E6EF-mXgF+l!QB$ufW3R_;2vy&ygwL zkjb7^Rc_E2P*+{;mzOjAK$nB3V#2que1{9RWdi{HecH1viM9lYdw*QzckV3iC%`(mbMDl4LZx|?TYixw=hksps zlJ;L*r>55KK-w}LsL6=4u3n5YTQZgay6+K$HMZ-E3fAxU2N-^gcqB91>i05k&mU*e z%Aep@->6T~Fs8k|CYCBJ1;l7|tBOGg#pNKx3I4(JW9d+OuVT%euGhZ z5p(>G?P4tN5bwT#B+@dI=%^Wk=ge!dAxWWh5svC#7U) z!q?R>{{dXC`}qj{>u@|C;1OpevY&5MDEP6zx5FtaZ=bz0K>fw!40e!?$4MZ@R6c`S zpDq&9!mP+@+<0^MD}=f_qUFMB#_qkgWET}f_{i)j`(yS85kvowSxyrB=5}phxWPp0 zrFK1Rz7PNP1GU3%vM!uR;>WcMFZ`BWfwyNP4E0wN80QznihAv3yv=#X|G^YDMaC5o zCOvBacPT&hHD&c0&LUw36Jx5Rc0BRw*|TT{k-{wp-}GV(#LonW;e0S*ap<9b@OE9n zgZ(KYYfTP##}mDL*~ts*ptcRi!}qcJwzu3_2guhR5(X*s0z>92{F#Ld*)`S}J7tlG zyuRJMAiXRibW2@}$$9gj;o3-SvOm%!B#0tJSOkg=IfF*9K7(I%_5Q=_(n5X)It;q_ zCm1v=liB$hixw$V=Iys;z$4sa#pzK?NuQpSDQwI`^bK*Exr`|?DYA=Frs>v^>YWwO zj?>CCnd$Y4fKVKt0S(JrY(;bs!^dPEwNWn76xOq9X(JT-Iv?WY z`CAE$>1|OjhH}0AF0f#NH<_}91<5Oi+YWPJcvV&3Q-I3o2xp8{2dh!F3Rv;gh0BB( zCeziG_t0(!&C_3za~7%Q>RMn%$H?=V$WPJJ2Ye$lx+nim8$P@wv%Rm!Sa?llEK11o zP=GP=txS1`xPSj*5~I`+*2X6sXa<9tQZbZzXU%y`TkgtKD=SKsaxNP5s;Pf4#R49D z?({uRkTH^5qhP}6w-jwRo1MZqErgfpDNrjnag}Y_iR#McSOP@r{No2&n-=x;i2wZH z#XR9jo2wqW(PucrAF%G&PIK|>zb_m>Tny*{0$r_j(6A6gf6QtUD(RjE9td&VhIRYE z?UMn=7&&D+5TirHEk~<^iBXR7ygY~D_gkuKGN=1jLEYp6Gw#DSNv(_cV0k?ladxUH2K-fDHnO;U7-ju)63bp)wiNqR z41k)fM#n8sw{Xq;p6kZYGexp0H-UCS;*l~@vt(t-XgTK~)%Al+XcO&Xjk@z|<^d+i z6`{*0>#D6X)4Y0j8D*3l&h#p-w1&dOVrlQ19?9p`>O~2g))_)KdPZKlyfP_KmxdYJq=Sk8$C==};fTcdS6K6@m>q2)s^(M&uGteIMx%DJU>p2L z!jYNh)pG7Inb3K+2nzz(hbP=0+P{H`m6o1I2lJk;j#Q6m*|$g7$yuFmaD0QNC(fmu zK(XIWZUUs2=3h$^J6u`sGnT=`#p>P!V~`8))*Yv0Y8sJY6jb+Z*F>!KeP%PrR=b9Rsi1 zeWg=3;fL=ZI!|$|q_#hq@R~Qm2yOJmrvM&qC$vpOg&DI|*Gg1If%9mJbT)7bdreK% zUCR9$;p%qn2CQit9#_~Yr83Zbj%dB`x`eTK5})z@5vbDI@o)4pygc!Z)v*|A*>)WzdO4Pji#1$QO;E!lQTA{Z`;8aZ)Kwl6ItYt zn^uDO@i~UrmNw;M#^gM{_KMv3CC+$hchNn@mh0X|Th4}H#ty&yBis^u49O|RH!C^* z6RGxom)JY#X&`pxe0R-sv&TeF#m zzi&s8l~PUw#rhA8Ut`-&Mm4FjzKBx(&+E$ODH-k7m@vQEp|*TOn{I=MaO?_DiO>q8 zA%6Y4NQ7}-81Mda2Fa|OzBaPU8+^(BEZe(zfy`k3e2DS?G54kcQPu4m@cGTcJ`8Av zwg`jEIdg_ZEcbyy%%`N>&=F&RA*Wmz1ru@O%p62ZMFs28EK@{zOdK||P=i^>p2td4 z`&Wo*g4rU1fT;+=%$)Z+zTe-^Z(kt5nKQrTUa$MQvQE6`BU}9-(Lc1QTz=r{xUH#~ z)(zssTaL-ux*?2OE1BZVHAzqkG?I;%b9Z5M^8@*$^R;>U)JzmKp2=+GXh+`V%=}ao z1fPwx9!NzGWPYUGKxVCP2I*4P+}=BMe8T)l_YJkyVZ4$2PaE@$EYj589IB& z49e@RXWbmRdd-eWsPJYzT1Yn~$+6wb0UJcyI%U`yw7 znMIrU+uY_Bjo>m?EMu)C0Ma|ZMgliJ?e5M}lrPDgx9;6ywMAt8wRhm{wvwbX1M5ZS z)KmIXJtC2sVjJoSva}URUjIV$bIon-+bUf&mMk@w&#K( zH>tK^hZ@nWx8^*;NNJinDL}@AZT>z=#nEK{<3|>Fvki@ifn}iBOcJ7;Vq0)lQuWC+ zFiYsBx}{oY(OHSwFO@m1g(3)*LF3oHCl9%QIaVTxZGjbgGyVd$-|qn$eY z<g^gBI<97dd%*Ae z7=_!92d3Fre!*t|t=d0_8;PoDiWCVT6Ba%AL(Bv8`bE=O-MD7Y{{Tx1ZCa%A9!yPF zbB&T@x3@Q6L;=~=eK%NsNrlD8aKEVR3&`Da%|n*^l;q?C76c-Yhf`x7vGHdM)$V?C|rf(i5_IBevS*vk9{?p{7?K-*Huq);Eps^SG zf1(lakZ)Fjv$VlD_#SJ2lMFogA4~r9Pu?(92N&3WW$oJlFZJrzvN~(@x$U&$fI_89Uo!|X-@CvJ z`;tAOJxesg$b~C5vhFO>P?3$bc%BS;H!fkh<>YKLha^-*ZoGDA4$D)`(T6qK(WJhw z1#Dw4R!2TB%I{(3zv1W4zhhm@VB=#TUeli^mr^(Ovf6lZvbYDfCw%9{wlJ_xeEEiC z>W&kUK>DaW>pN(!76hAvG^VtRjWe1vc@PBv4Jk=#JiZs1`&dK)r)=BTfIbbzf5T5M z0K_Hu&YSYY%kX})rcU&aC;_p7WM{I=+s}ZY-?U=t(FZ*U1POjt=Qu(0?8Ch|evST) z=-3q(1i^Rz>>JlJ_jj=V+ndHXbra8P?K)W8yNGxx%4hf^caM8r&ZyzWW#yX*4HWCc zgDXv#Hv$D-%GMxLyxM&T$}IO%0$dE&D9=B3GOy4kG&AsjkaZ!+SwQ7Tu%s+liC();^cx59|4Cv?lg1-xFZ z-4HtCk=_OP&U0rb^}#qI67ESiG_&q6$+?TmgCJvnt2%+@HcFEJK7DFBEBsa`GE7^I zKfio-2c59*gS|t}jpztu`LvkeuV}0O;XzKyXwlL+NK$J0&|*uA4yDGDzP8p$tZvHZ zabM8!OI8`r#0vgu`|;2%+QFk+#6xn$rbCnbYjUZeClwB2_r7Jcc4=r6hs5f)widN} z3uXaYQ`fQy9TQNTAcb{9wrC3mjjRwE(|!(J0AqYB*9XwUunC7*4k(Td&KRDxjC!E> z7^RIDAed1^ZK-B?`cmIA+VQU-iR)#lKim2G%lp>YWUSQW2sn{^W!vLmQi z1hAbxT>!Qt16k5)B@T*NBBY6I7-^vTce5U z6CN6sFWhi~-^0cxr%@4OpW0EJOhSfFToP&dp)A8ZMkPc|PZ1*Be1RaZ;baVE*(5pXa+061z{;X= zo`2(aG%Q~tgPnN->(wQ9v+g#P&bXiz0kILm)tUXeDA$zKYYRoxnSJuZM`CHgz`1X- z+_S{mF!(@BNd5}50M1g7+1iQ-;h^y@zpt0kQpjl5@U3O28LPaD2d-g0>DwPt#zYGq z{lZ0zU4RQq9XTPN6>jMtJpygbNuzw29w3WXRJu1?V-hsFvuDF&AO?sAXt6^tW|Q7^ zoxg}8!WSM~Ph;(GrH87uOH~PPmcB{gLr=Myr>`#xQR^g0_t8Sz zoNiJ%GT)^W0z%dfN%}3r7$T)0#&q9%5uLh6nfZ*p3HZ-XZ-`!LMN<3i&xS)hha|K4 zGcbkn!wBj0&jO0+_@pl2zk3pHLTtM;SvgdqISqR#OP-Z9HP?+Eeb%<)jhM7UU1(PF z?r4~#I+gtgsXl*#S^x$#A}B{T+oW&qjeb$~hGLoSjT?i=pV)w;S4i0ARouTVWL`u7 zCmKyEz#Sf|jTqx8{A7%~(C39_q13%D_tV9Z*2Hoda_X;*`Nj=U5cHA-i-cU-GHqVy zjOP4HJf=B@NW%sOZsKo_ke~(8y=v~7I9+vhy)a2c@Oc**-G~r#a`V-81ArXC%3i>0 zx>dRfeF*H_7&nC`$AkMZh~Uyma`vqo_zVVoREu6TlP^C)`6}__A=GB#x%s~g*8Y%` zSx=Q|T$x=wFjsF%lKWj5`&pggt4@pB4s|+iZp)bvY2r(yR_B7M>$45uIibEue{i7~ET+<{rVTJ6kId3aUQ+IRm)R&~M6<>n}0!8M9S(E6Ja*&mubQ zm)2~I0!8)IRsD?iQ<))q>e+K$J!)=*B#Ct#HZ$C|5i{bO`@RL9ZN!#vXc@4=fpS}M z7N~@mA@;*Nt0%T*xkQuFq+njX# z(W(q-wSV9hz)CYw?@bzWF`1%BRn`5)h(@hO7z3(Ku1;!p#0HH1XXz&o!!kVPpl$N# zz_1Ja8)RYvoZ4)bYB1c zTp@s1`pjFbZgTr~?X32iB-yoS6Jp(=i0m{;1!&p39}8%peV}qLBpoFd#93>|-JKpZ z&c8@_Cmz-*0c+{z9dHa2y6eh7A(37oNnU^EmqTilvXUP1ne;w+O=ewcFZ7PAciWCL zb{%(|L=-lLu)0Oc=kC&uu*;E_X*1RCqeg%FkOc=;f(5<#Q!3KiPt!{voqkRAr3b?) z9d}Q&)^O`-RB0helssbLFVk3e5fP$0d&Csup{o_>sS#xGTNjEo&(8Vex>%P)qBFpH z@37n?(%mSvrIyPZYx>sak` zWYkWbpNJ>B-S7giSMvUs)F6GhkRDFxm*bJmXn!D0wCCF(m2mF(;6F4M5ZeD0NoMLC zfKwP>l!DijJEsC_!E@yuIDOgSODLqYrW=Si53IYwn4?ctp_)`>9Gcv6-TA5ElNkH^BMM!T@wM$6 zoOnmcYg0cK{(;4W@Qn9n4GV7=q;JNj41W}9pC##a1PV9DSakKW;l8~+X~UHFl zo@p8)$u^`cq#_nQJ#f@>-f*8wqwQH1<$EeFQ8Kqf=yA`Ic+!c~`((4;_{-bFd`jJx zo~|WAb1KgAQ8;0)P=hP7ptL*mBe57 zQW}0Z-yvb_;#B4JUmH<}r}%x>SO=995N4r7?vyia@A)C3%u zv^Yun*OIAyrw1_}K3S67o6#Jg=JzJGfw^<~x!J}iEp2>w)6gL^4Ee?k9Bc;;wx<;| z@}TD~`Xm*lLn7UgbU6Pp#n?~7(q-tO=ObV&oJWH38%cHd`LV8o=Jf*YSdTHAuT)=Y zQM!Ge^a-6f2V=?2o2eM99D_8Zr${V5<~QHmj>p&c8sV#VgIt1FTVyMgGlYgh?6>1d zBL+oz-~7KoghDS!Z2?RvLz+q!N3yOr9aU&e%8b)J8+*`>H2Pl6&}a}%r8Zx!WOWix zTaViAD_JqV)??GSh~Ah9Vn?Iz;{iX^L&&V8R%4Wt%2>}h`~vyFt`2Z%pxG*bBRylV zN9~cWP?{}*MB^p-u&|;YMt+MxvD_@uEVv?ZZ}=Ox#5W!GSH^8HPWQT?>a_|fs_G<5 zTgVj^w<5zI8}vrzj9wRQrM}pko-c7o+J$cC;Jb-#-{*8no#l29_i-*$VZdq*{zZN-;X>%70b|D{XoV<&d~z zb4}@lb`O>Qb1>G_XhXqP5_fElX#l(f|E>>`rYq@q>ZK9q9t(B&hriSZYb;cX($^$Z zA$F4tITXC016q+OH8F}&F8slon&6;p5W75IS*L+2o8iBQdIlYerx%u2?sXu~qBJS3+u{gs=hn42#xEVtDEW>NT97$omUOI2BjsCTl++l8DW#+)94hNb05Eqz>J) z(H1gV{>n!lA}Jb=1&j{zY5l(=*76ioCt7&Uc8a=;n*A!*329tzo~e4@GALCw3N@Y>wzUYy?cV!MQkChR`RtQ zrLFe{)QFR)hk{FL6AGoit8OfI6VfUCEm+CFM<0?8lM%@{{@8?U7TX4-w`dk!=6q^ov`|h+mS0%nS}cBs)ZQl=;3e zLjjjZ`Z5&B0pxdYrtkxeupRW$~P>z z^Av5K%nbdo;4@=e6fJR?K5J_-2&I&&KlY(IlPE}5ONpOUA{=OKdVuM%|J%zXRq}fM zpTW{<;9=VJSUkBc#cyi+`r|e)_z;5b5aGrbMPBklN|2H?w>8GP35Zaj@am0;z#oHD z;AZ1F(ECwjYO1FSq8LF2Oy=u_fpRaYN>)A}Uh7ADsVGy>D3ZEf2*3~(M#r7hY*SDm zN$nj3lK>@6X^+znVoHF>JCh;xV(hN;knEr^$@pG<_jW+~e7}ujJ%hypQe7*l$x~=z zGsCm4{(FbeQxF_RdGLPht&<+>2cKLH_FGsLL}ZG;PRD;OJUmz`1!ho)=uD55yx`V- zu#1mNv>iP>p(uVIAFJ0VPvm?fsCKW?+-2SP&Y#@RzL?N#pLg~2s(Vk;uW_$RNu^iQ zxA@?CX>a{B0ixgeI>jy_&w;t{8R+F#^;Ol z0-JeZ z_;({vO`BxhlE?;ObiL~ICGR#W+n+@6Uv2d)I|!l8G?%|)+h`}oJtDO6k;BC6ndnw} z`YgZo`DnjB{Z>!+VZrmNeBZJ50M9LQP%d3?Y(?^hRJG^DWMkWtN(Mtwq>7bfYJ`Bo zOmKMxN|J1;HBfANK^^=@FAGoA3mI!2Rh3fXMm!c47?gPZ0fiS-6O9JWC5e_ zQf$(u!e~z@@+%5@sR1qJ;x|*u1M!W65-1s+5DHM@=NTQ0W!M5`V5$)#05ZSMv~T00 zQ+e-*kCbKaeYiJB7MP@Q2_srhD{g$?xj5mN@zsTCRS_V+d4~*(pk}z0K0!AoF8Q#T+`(|;xXq;DPA96M6uGg}_6N%alR)a|De)bn4Mm!6 zjNDSBq4wYbhNGkkLv8s3AYYZ_ws~i#xc1(gb<0G=-d*S5W%2*}48{(z+#O_Syzyp_ z_^LT)u0?r>0!T8~VY&)DK+(!DXB)h3mvML9jYG8DPvN6W&Qe>3DKe+Ev;*jcD-pPF zla1BAG*C2#=ED4I&Fyii#{MFmm%q<#_6;(83;ym@e)2uz=53y)AgOipyrc-~UAIzJ zLCGQtga3q5>9Aq%y(iqa4}y~UVoLg=RNPO0NUL`iw1&G0z)c_!mogT=663~-UH#&& zn|HN$4q@#|QeIV+Eq;{ly73RxoKj+X&{-USW3=eNMf!h|-A3u-?g7T@Z=S9Exu_>b z#0Er}GCS+evi1oYZ+}1h0e|1Ma5DF5pkmCK ztC?ruiBGoTI1jeH&Nmr88{MZj!?GWN|Z7&oT$$MFFvV!t~ zU7~RhAt|w4;IyRHW5mcaYIe{|5>sPcEy@8D$^EPWIN;DeuM=s~?w~%2DZeGBRZIl` zucxYy!JS%VI8{|gJA$Ipr38Q!2;vTDMYrA=veFb3MpAz^3amYtd>pu!`z@#d>g^rjWZom+W-zjf~(~0cbycy?SkSjARilw>lUc^;zc#2I_JQ4y{C7+?{HNxs|_W&#z!4kw|AcXjP}Hqq!ZGX&0c`D%E_xWH+Xvn#n;(w zvYlW7J%g3*t1HD+OTiP2t%QIS%3E!JYI;^VUb`nQ!ml?oF~=E9ekg3erLjgXAB$qO z#Bj9e6pKAQG!VdO+F+3j`js=Y%^&E%C_c*bl?E2DiGZ{206drxg2B{5~+xxNyN zp+cKZV+TFrWA8_-5K>!L%h)3^sQA!pQ$tlr@%n3wXJn4bts-r0gHXMg(Orp|8f9H& zCA_CX<&Go?jlJt}`817nv|9>h)>l+niHS{W?W>e@>V~wucLV+`^?c)UU#T;LH6=M2 zv&-|5`~035?761&euM#V@`(H`dw5X6r&AQ|9x3lkIUcusd3HZM6;T+-7Nqi*)7O*E z{v`t}rzCYf(KTMuQy{xVGS)i}iA9E+1!^t?*P$q&{2cz@&#zj*B0fciAQVYt=#po(?BL>}0x8pJowU%X!soj`-_s14he@%SIwqRPSk{F>QUrjC~w z0)}26WG#^;m^0;ekegNBPJFVyK3t3mn1N~jqzu^->hEeNoUD)$d0(?}!lm z5B)N0&)Ydc0t)0T`}A;+Xt^BpCF!pd)@Aa9s67+6%G{6vPEUhoh{`q5d*C_Rq3a21 zljIeC+&aK;3OLG+_NFXGtB}k#X#y3r)mU5LE30b*iAmy>V8NVC{&P~aoh5md_XcOd z)Jm_Iw-=r*g{hcZ2Zdae=OuZU?$kXHKWan!bC?{Y$kl0s4PvJ-ukIl>GK8ExkOR9E zk~@GBQQ#`&BvT`bLNCB!mzavFzyqvHxdcQ-j*+|5w~$9(v~FEg)#U^X4#~{BO-C0P z1To0`Hh|d<6kR|-kp^ye6x*}}FR7{hMD2-Lr8Mjvj*>2JjPbxH;x7NasBFK6*Y9un zUgJ_8t}IJ!w5AAR5a2nc?(kp?lA5kOw8YEN>sa*=++1N z`{RQ@aaGWEja2g7xd0?QS7JKmO23sT!vyw2MX(o#cUViKT zQ!jiWXM7RJIy&-TP$Hze&9&Q4Vw5FZu%>G4N#yejrF!wNPo3B~Q}n-I>Yt#Ip(KH} z7_k8PNBJ(beL9%5gpN}Z))nNf0Q- z-;o1P3)kk+Q4pmMCZGP%W5NHNtCvgu7LJQheHvH64K3sm7K( zq#eO?;K0s*R(BhBWzzsgOI0~a+R)j-a9JQcFD+|92Vud@j!fFK;EFNy%&>aesX~k{ zC7ECwXT8deKrAvaKBHB`L-wehk`+m+$@6>`K4%5_A^5R4$yDvU2x_=n>ASo6^jn70 zrosFgJN?+_Y`y%u)z|^6PjT{_8v*hSmvDYl<%%e+lFZ|luMtg8v|-+cYi{IzbCd${ zmoix3D|v#A*(;G#2dgw%LNt8i64AEkItB;CPj}BLb&yoNxnbTdTC0ST<9~}FWD9C8q{Qgao0LGgD&wNoha_IVwLrohp78nRMH-Z|6EQ+;E%y~F5_s;%Ija<&y zjq+>tyUiOmfWF@C2arWSw_y|HP})^aBat#(AQtLAbE{koYv!2J7d~3Y*w;%+%qLFN z(biz)R+*i&@%7Wh!}-g(!tLURTlLk6pKx2UD_PpRQHgMz^k!zJihJ>VZaA8mN#uU# zU?YOKrMG@%xL8?1t*IlR!-ioKuL}UU5QHx4p6opXT>aw?}*F%oENII|9~=3iAm$HYiDpCR+$cD-PVY{!rd^)Yn*ExH5weFKWpzIol7Lv zm>estu&!?c?HqTy-dC1qGO4+JDn9Qv6Ulg$V^pg6d4;fElDd+6XRZiO7S7%ii0>(LM>ddQerlD6y0XEam3Sk^DoipcUUK5?uQ~j zdq2WnrN9`zq!WLC`$@^6&npD%VWrkf?@1f?1H4Q=?zia(sX9W4Y+S5d1<7r5V3&Dv$lgx zP`VHR7&$rlbHtA8I3a^44H{QceM>#<4QZ*DWs&LAzy6x#mVo@X6@V}?m(I?vK!WG5 z7^6C}dGltrop-kh{}}7?wA!ry*8q(zKHuZ{yT^T|KGJT)3X_G$b|VtZ6`7FZHuU$y zi>Rd`oblSig=(uZuU+jho;2$2uJ|2CZ(Mo-@hHB3pMj7^2)D6K*)3*W_X~Qg7jEG@ z26;))uJv2(Pz~;Yo?Pg}k5;ByBg{))Xp3}C_XLXj+PmNLo9G1^PJ6#( zo%5?EGnO@TRKiHoov?Q8F_dI&lmiIAwjkhtc`0GA~qXPp1z`%$hedE{d0`r|$7N=iH$1xZbE>S^tYSCanaz}ELchd>7$>)7#;vi(g z&}WWi$`=7;h1yEb&3)hkij~S#TepsmV)${{NfUym`J73hW<3}^yJ+-i?~jWR5=G#; zNzDCMB60WyusJLQ%^yhOp#>$X2Vq-2+%+pHENs#woKF(6H63!I&xfe^Wr@q-Rl@HZ z`A`3SfaY8Xkh%Jj6P;orRC|s>2%+pO#}kI+U2I_D?ce=)zAvUr_bYR*s4XdG$*bEXOai4avD)7)BoSLH&8rx0^n$E7 zK{8VnUloAJi(E{p1pY*aLb{E|^^;x68>31SP~QDqvQ*tX#-+9+cr^V|RfSIDbO7lf zt2HYr8s*G9-&?l+0meNWQ4e2mWSxdjJiGlYip|m*)9tE`?QB9w)lr7aPcM*|wy!J% zxP>CYalc;@Yl5oyV>XR;KI!=9`yTj@6B|-#=iJHXRqq{9!0z`sf_)(Y$4!Y85^14} z){d3snBM^>>u}mTwks`22n=)S_GMi-8Gqx;7jNX6qO_}@nkB_P7sR^;4hz@nPwj1L zLYv0oPgGN(xR`@=0nqFl=ekfyTcSdY()B&v3>Se^w#Vx#!$(}!hg%kzFg-t>vG+u} z$C1p2?ncoDcQgewvG#E!cF*nCSPV^lSY9Sp^GIxVEmBsB(AU~H@fx)+-;~3;=aFUW zR?TLtv9;#K8#TI=WA%D4B41Y7V@cIl7}>-N)xK6<0lVe=;xXcqRVv-y#)e|X{f$uy zLMul5B_7GYq3k7An?fuT@(<&fKqr90d*Kz$s9r*5#=9 z*ogt-f!C9mx|93wvqJ0&jLvI6AYsmE6Fx__n zpk%+5g-K&2vIJjWr4kq)5O^COr>lk79P>2)q!lvkNb~TD0V!mEj z3gsPD!t`$k8OM$JNCi?KzpZve+*fphnwlc=D_h2K5N@>~m_A;|I932V9&x*4iCEPR z+1j0F^PUALm68Ph&}W*GC%eEg}>&q-k7R28*9&ShpXR0i9LE+niz? z=1p1j7)IG?6JKFP1j*-|p4{BV-$+u5IAVOMVTD7H62|HXA$ha#a#qssd5h`So zYdVh7&gF~G%byvONZ~93Y|QghmBlnysnWf#zJH5N2*^%Ow*;qWe!9(ay$%$*q98z8 zS{k;%tJLL2V&20%ZR6!AC*SXoRmZrMAX2~pK2%E7o{|rZ>u*>$(Y)_CE>|gh48>jN z{v1<)kbq)9SDz^Q+pWNPVv-Lf92C0sYSm&8>?~Q!euqL8SXXmD7+6v?%u9U62HFRpZ_lF zcz3{mF^Xg#z`?ZiJ;78G)y%JC>|dztM~JO>+IR-~871aFPPG9=ri_URR%_o=Ig3s$ z)^HS=P&3tvZ9JYcpvI_)Yx?0u06RyJmXC~Sfc2HXw;eexDl%oPm$Cn1lung?rsnoa z=9tD8on$yv;r=4GSO5g^zzO+rQWt66 zeA~=uLyi1b{D9i=aFufKCBGx$GDjSZjKBwqxOWnPo=P{avLhJlIssST8-67ZAurEI zHYCt!K;@Y3VkD}N@`*CMA9wVNiX&96aDOQOkMDSnqLP!dkphIebv|)aaC@Ti&jVM} z$Ecm9EspfhAuNQ{a#qsn4V!4~O6bm;lTI8tQUQKZ7@Nfd<+S(Ne+pFck7cNidV+Ta z@1Hn{5tJY9o#%V)toI%=Ch5FgOLKY zr(MeVyPz-H2|iqF$Q2x@4&HJqvRJL1j+^n)VDb}&qg1+|Y#qp;$B~UKDx2_Q%32&j}Z^a-_FWzxZa%~dBg+oX|ymDSK*#*70BCB>Oa%k@q@VQN$nkYaEg4Ayq0q|pr(D1=_@5U=1G%i+S_t!m#^$-n zGNc5RKcGCoRlyT{^RRyh>)hPlz-YsfeOX#ObHxv}Dqp`3d1OxunA1ZL@m54k7E4QC zT~ulKhzkL$Y44owEkVlpyOAi*CvB~ZLDTYwm~6G>NUhSy7AI?5fBgOBXL!fD zC4V#A0~q{Gr>^~?NkCazWA7!+neHd7JtFk0VbP+~sVl3j5}&%`>Z$_Py_%fqX{^G$ zL6lc{x&|9MN>{jO(J$bekX|u$bhO`QwR`+GZ`oNK8YOtbkpO^3Mm1%R?Wu{cybVR( zo^?5Qo*J7-Pb~OK7pW!~;uiC?H~i&ezW3fVSkaA@pV~WrYjXA`D~@=MS*f-p&JPkK zrmdD0nw(2sm|+FYs=whgT_&S zd4^;!S*~`kmX;W5nUfU5{TF%munExnl`lR&`F!7rpbjR%FUJh46A5ppVPnhLgp*g! zQ6&C+k42=^btr2#|ibbEy4bvM5}|HAto|?!Wdi z!|lY1x;eL-ar%UC0YcVtwV*VqQ9Vz@o6|HZwLfPToWRHHl0O8EdFvVh`yN8BZx4K0 z{n0b+5&o6kMe^5mB*|zuIE0Z{hXJU?O@gR|4M4}Zgxh9ZKBKOGA~=sa4Jb%-m+hp z)9yIAa&2iIKhV()ySQo-qb*cT_}d(62`^Hk)?hYn7|^)Fvu)K3w*_0;c(Ngg)y)eq z71Iex`)Y#1SoFdk|Fl-4w?`8eD6Cd>p@=6ID+2~ zmR9Pc;wdkqqvme?OsUk1(z{)mzIqQGCJQhu%^*PFJbxl3SUJ$lIO95iZDJF8I#PlI z^#Tx_X;E5=^T(#jSi?Iiy-+oYrveN!HQ43Ow3#aG;)Rq9UoR6+oybr&1J}7DIrvp@ zY3Zn?Y6)OEfhNm~D1(noAGKi=O0StxmmXyPIQ2G20lSr%a;jNvSu!(|Q~_^A(lu(` z&?|YbMRvv4u&6=s9h;7^eBu)uU>lNrR1bLJ(P+rBpMwbBDpVw)+l7@b364o+_%Gg9 z{|8ReyDZlnB>2`(m@r0Bh#q_CXzo6FCM-NWLU1b;{}KMRWbD%0WBVOQrBrHY%=)Cq zqSX@VqSau>=?_!+Y z_sp{2(pS*dpStp7?V;2z+8h0YSt0ePf!Mv5XEycrz#!?URE$u#D8<^>;ka$6FcV@n zHM@{_kgmL4rZ;oTSu4f&h}Yr=v&PU0CI$Hq=41m8g)*E5^13Mlt^G^Y#-Y4T0`j=7 zJWPG+`)UK=81ij};7iSXv8o8!wWK2@6;V7guU)3)$wnLK_hc(g%+yqfu!yf?V3J@d zJ_Hix&Xm*v#!Brn$W{W6uUYV~C=|j!s88((k(^7Et0c20wW5|BHGiqcuwg|Ju%Asm+Xi@B8Arjhg zYKHdszdYK01@v3c)!wF#5tQ!!0opU?r}P3CaM{*>@}Ar+-OM<`OEq5Qo?Xgq3l}ZI zc&XfX>P(fRuSyEdsLz7?dVxK-q)}E(b!Zs7QohU7nWBc|jv8PzLvL4wOUyZI42`S= zpF9|AX>2%3TS*M(`>18kc2pLmUFMzUKie7Zyu8}{gQqZ?feRqyAD!>`kvBC4X^BJ&!*!WViEkL>c9UL;aHIuywpiu1-Ke@`FEgFOiZ64 zK?}h?&sdhRht-8aTZqOcPz9 z@W<_gh)Qq4N1o#4`HulIBeH6<;_bzXGh+&_mq1%mTF~)`YxJ63W$__=@JX%N`uOpC^~gX-ucQ zmh><6mrjU_1-+KR7x}MzjnPf}c8Uh_UQH`Qza|p3{R4ikrZJ4xz9v_!ykvI7>rfa{ zkltxkVnKUq)t9s#TG3qe+WF_)55*g$SnK*TrlU1abnxNkJr&|7P+OVp{Q8Hhu-Li7`sNUSbHh2^0}js-wp|t=xvDF zh61WvYC*u2zvCDkKkS~7EcoLZXk@yA?numaXA*2MpC|dWcqdIAJ}+h)osQ*x5lJcMyccJYL18ul)FsZlM*3XJM<9Nix-^zIka|4 zx}edHh!p1CK6fAFomXTgiF!}So;^&$t>R?aai4^Q74N&;-|(JHo=s9nCq!Nyp>POqfvbAuEiQ8Cl6;MX}#b$#|7gV=!+P>p0S#aj~9I7#C7XFPVFr z_cgM(tDUykXT@4p@Y=qmUcAnkNiW#10kF-qKnHJNMA z!Zg*@uEg*L85&S=P&9q{T45Rf%+hn5ws?cl`&&8aJO#KwH0VX^N;(#^!nn$N1GMY) zuDpApNr)QN&T*z5xe3FTGvFEripoDkIxI11N~%P-hu}b)vFVbC*7UYH`owow_j9*h zyk$RKSqECsaAW5UhF|#Yl!a=0riC9PM)Vyi%M)SvV#!N~;Ge(vf{^|ex$ko^NTiBB~N_$W$mFa1x(+lM&8+(EEC{~yvn9K>AY&; zHu*>O3WH20^HJ;OnisAGd;{eY5r&G>(y$&#a(&WGNiUN5P`QDH1|x>Q1JRb3tJ`99bvRQZ1|3Z>2Ay3MY- z(y=0VFJ|q_zZpIhljeKTG*Y$o8pyat*(WdCj{T5@S!9A@QMc*Y4 z=H{$Db)vRF+_pnMFGywWK=YSwT8VvWc=8u*|5=4OAag_Y?P|Q-~5;@E^zN#&)blHAA}f+J24$OSj-f^a#XaAerQ7!C$BNzGu2h>Kz2i&_$Loo zupd;eF{3u!qU}U}$!s=UA9yez9<4=-Y!qSvR)kIj8nTvWXER>EKZnN%vCbPCXl@v0 zG2*sjUl7{X>n74xhynZTS+fR{8`E>rd7m#&+h4X_*SUWl<&BLtL_Boo28Iqfz3TbX zZ%q?~tB%A%NFPd0*GHRtP?FKE0I-5ki%j(rx;`umH zG_@q!qr?QRQu>ZssZd0-s9k3#FG-&04p*Iyg|zX`Kv531Zh}ipb4h)8>`1ZXFE`j{Nl@;z&J_)(eU;0Wn4Q;%xf{7;!(bj z1x5vH;jvWx^81V~vD6G8AmMmYdTQrRR*2oU?R_vLNSCS=feHodotwCXvA(tfa*=x4 zqu33hA6U&8@i0W#!`15TM!K~<4rXD(tNEDFdlDGGZUoVaSODu%E zdGQIHvI4RSx3~X*HWszORmNE6iza76%IlAigtzr9pdF_!K~cJ`t%J6l>cV10(Ho)!c?i!5FOx zL@!pc*7u;p1Hz@};WTu2YtcK7C3UWzMtB^;ow$L{SV%<-SohL$ai%S4%_y6PkkJ#5 z72?{qvO}c7zy77$ke8rR(NtSr_W4yr(}E^vX$qibTgQb05o zFYHl!=iV=f5#}y;BFoVK7}_)%YB!+`&myM_%PCg^>SHTcJ<} z!U!iXNuuLDnhbszu1{#ufCh*E#cq{lw+mhym#1c%3kB66;vYDW%{pUUC@OB|3dp+m z*&Nmt%&`7p(--6bR$Z`aqv$nj-io6w|A|3hRL}*2N|d~kemQrNp=Bo(WY(sxOf0hw*LySpYt!}83V5!ZWDk0ZpX=A zSuU0oUS}nEr6&h^Y5NeBd#%K@Wcj)G#r0lV^@&Skjo5lbZOPiDGUWnZV8N}d*Af{{NoK0XjENHF{&~HXw!f|N#B%Tn0aIc@lMld`d<5$b@VyK%YSQ7Vw^ ztI3>mmgW>7?73f%*pzh(hIR9(8rs?V(_V$|8MP;Cmday`R>zYQnS6Et!@Xt!&7XU? zRAY!$$g3E;5<$4bi zf1!gMLOTDNw@LiH_paHfbLdwGJt*_kHh?H}<_}_{qtCjgj)g?JsD=*fop|eL6{9Ue zZld>og3{4w+YFL_kpRCy`Q{kWb)|&67?7jNSM?<-C4HmRrE!cJ~cZZ)o|DBSxo$^<1~(crG##Y(MSVn`^XF) zj|2?CC`7Sc&f*w|tr^p4LV_w}#cuBX(^U zs*Z$Ye^qsw6|#(dix_Q|v7r3isIaE^^vx3U;9vowm2gsiyzndwmie}3<6)eY@BcNA z)>N_k~1CXzpDwCz=}WJ2kq9 z$Ja6$?o>KX%gAw_@DsLodyGs#~S`QD_qO|#A9_udU`4ea-KrC zn!)?XpLs|=@r-(5G!b+>AJOMkhMk8wC;Mv@kS#PmJg5}TpMM`>n`GayZE@Iwtilj7 zBXD2M{9xf$ISN{^GHSJd0OJyV%zF;0*}SOG>60EMQb3zrD2@`8v1~NMW#g!K)zlmp zIYc(A!OjK4u5R3kgRLXGA5_9~h7kGP+sKlG1B*_Ba-!7OEA%{IxNsPH^^$B9I_5z) z4b;I}LV9d~<7>mosfJAOw8wT0{>}g;m4B`RDzqwij*|l&NbLXw?Cd%YC;v;InYEWo z%#7-rE#k!)H7ydc5tZ-Cp*bJ<4|%~W2M28pFcs1t%wIj*eL}QgLjN)_?1q!uRcU2# z*15?i==lGKq;C&ss_y?k=ZwjnG1L&U;GlHQ4j@vZLSsXG>Phm7PLSJ3$`rhyh$3t| z11%F#%+RbvNkefoFbg%@1+~X~w2-d`_^1hKC4mBJ2*S4Wd#zvpKm*y?=kmV3-mjOB z4{d#8-9l+x6&Ygnw zG=!FM(;brjVlRQ9erfM$cX=i}?iB1l{tEWnSe;H6+z;3!v67&w36JWONV~)fyEL{+ z>fZDr5Fo0maH!c2HJ)x9$!e}<6}}%=x*!pYq$+Yl+}&l4&Vgbn2A~xleOrBmU(hZ2 zQpYDIhT9|EQT0ec811>Z!B`*0+1DvBv!Hp8JY#*NFNawZ)^v^m}cAvn{6(p0jdawf9mL zpv}(wx6Tm4qMf?z3(P$9gWo^fa_|+4Q>3E%+@F>In7fDOJMah>B?n~kJ;hG)AB95XjVgmuHUO^oA>EiEB72-%;%*?@!ez3Ze{R^k3(6lde5Gbgzu z9g|P5>>mvgBJCH~(bEP){9%ecXg|z5ethiM7{)Gn8ZcWsW5#sM zpU$+n+SHB_#+sNQ7LJDD^Yk3x{TZH7zbRY!F{1)}~C8r6B z@UWUWLG6utq)zfES9)=7+?htsQ#MLmXI|+8{F_!zQGDIw9PDY^cfAz{{MVg3S&g5| z#)tWa&azTx=HNI{chmXRs_cB={KZG7?w{b4_#g(r7U0-lw`PJ7SW1=~Y!0lkaHffo zD`|N=@Ox#4`<$!qcyJI+FiF1vbm4MZXfRB=%-a4>t<5@>$=Eg{BkM^e^l$)zgd<2+ z7_&ka51J6NseM%fj0y}=opMSDD-Vzou`>Dk5XED&6|@FZrJ~O_ENo@$q6*r!&PA@6 zKIK8bQq9}0J(k8V1l4SCze6G&OAk~?e_r74JEnO7%1A(Q*{uaWLh&o!m_W0RXJcPL zZiYAMXdGy|TgTdoCEfzIB?t|q*8HJof7|c@XwxP}Lx}fQeki+hCq0FQk$f;~Q_+Q7 z++1^nEX;O|jBAK9J8g5EvBu1qJW02m?pEiS-uK3@-(y3*9eo~Vt0%XPcAA|hezkVa zZeSO$7}p}RK=qYedbhKev)12#4!q-ej1!ful~}PEg@!X&W3|X<``2M`;%r0RJ-m7V zs7TWkth^iRc$-6ctuE0Ozy_lB?*kB$h)5426Pv6KPNO7OJ?=XITUK0;8x;a4{BBY2 zRan?s@T+FGuz!~?9Wdjq3PqYaNBm-#EBE&F+>wA`)iJhSh+>yZz(YH zIjrq-)cvHIJL%~u=xxPc&@-CbE>YW#N2R1J^e2YJS5nyoyU-EM%D)%6CAfQX9B1i| zXkbnH5Z)ebJQ3ztH|<+Cu3`ZcDkaOu&Gp68r>ew+6> z{O`-;k*3pvv!0W@v=59{K9X;yLe5id&)&Hcd^H-#{7mILQ5Aa0MdR~sUF}*pUtjY6 ziE;&}Bu{>Qn9)d;MF#w&0FLiYAAKdVgw85(HcD zuuU>WL0J2fi02j33x`+d()J&wvx<`g#b|oN7+pW;7JKIo8}~|z*Cg?6*co|-_)5~M#OdCV zj1$1`xj4cTy3RP5f)hSpL6BI@AR_J68;xg^HyLnp?7B6aCv9uS#$ z@viI@^vwekCc^!;H+l$EFsmfim+L`%cp}6a+5VuDkxz12zpWv^ZC@J`C-qeeCiz#4 z{hO26Ao}%pymkB2QRv%^tnaOO;-98qRrB*}!mw57Xk42+ZQ8hTtSuTyg6S{3Fdd@6 zi(MI!JkDC37mHb7m7YHu9KzbUg#2dGse%6d#e3yVA+1^A%JRXiv0 zQj{zr;(Pc}6wJMuDK*Z|ay7{l?H1O?Vc;`lS40hVsIKM|6PLRHB3kE0lwnE>_ez~i zJ|6|9@9f8BBG2tH|K?99P@`LY(b0X~*|Exx*H>?40T}k#_^ImG@wgL9mlddlR`z+G(FR+RrHWt^EnrZp3OeB-{iDz1d%)^D6q^tc6C<;&Lya=}kD4}Ttgt%UZH${trtu(ij~cKe&UVoK z?Gb?5cv;ox3V2RZMB3|E=-c+?j`okrOuius?U51qx0W%%9zCorUhVBsizMGz?jtgUgR{&piT{uQGCK_H+N{Z|IHj)at8$Z5VK(rh0mVI8LXiu(Fz#5MjQd z=~kGq+c3HUtOb40LB4miM`mlrm8d;ut>tQWYV;Wts2z{56SJUpI7x8t##jn_VHkqRH4Vr%bDdYUz!WLh*DPOa3L_=VS zY$2>dn-zTE>|VH{{PEF^jQzDW0b6}5c9i(*Wj+JN-f5xHanVFNKQLApkgN+PTpdAa zd0L?&Q;0|#BTNK9^YB!Vy~`B7R}!7(^YfO=QNXQ>p^6CSlb(8~o|P~3qrT~CX3hK8 z`dkgGW8%0Q(yip$wFsutuLOwJi#*Xb4RZ-ko0G`Zong$9xd9hv5tJts$&FIcs5>Qd ziZ&=>IkU{=u%=C-nU>Akks?+R zKeozEV6~5zNY5w#3ZcAY(cbd;*$M$;AL8}fx?`56Z`jEyvo1$@xQ})KG9zLWJlwbp z=pErZg7N_JWX>EZ`A!HcxaXFk-azciUX>}*7vLiYTyPL&GBaVwAU~3UJt2vJ=(vLZ zPC=$ph8~&DvnMIcPGlbxvvRX2-*d5tp;xB$3iIhO^g&uc>&iJHpZwM%U?8!V7-{S5 z;3GZZXyY0>IQh>cQF>49RA(YQ>N3LcCM@{p)FS;6i}U97CUt#e5S%x$%;8I&5AD?k zI4}Fb7oD^PKB7cS6Hw$_z%`&6>e7;XT-H;R31{B`@*i+6*rHvww7gcsaiDD+BRwz4 zhoB;*<4JA;S#ta-ZG9_oIfn9X?4qseTX!IMvW1jtBGN(>=k-5G|5lURwKsPziNVxJ zQm|l`w9yM^kTytb22x_0oEH~@Hfr{9HVPNCQpF1OnM8|Cl+DTZCi7dulf zO%M_OA&RNG9-yX(_CP8s55tVUE~gGYOiETIGjYCaG7FS#tSJygG2OB(4?Ny2vO7lY zgacfTDF9?Apt(mDNAw1ezp1<)Fcz*iNh=}{c}rs*G0E|TFpkHgGDKKl0;1DDwnu3}#KvifhuWZqFtaEoLsTo{37M*i<%!Rb99?O5y5iZ8$99Fj%b#t12etmBpbVqdZTPjn`I%ri@ZS4^Z=MmJ9xo6}VBhM2pyVTy8iH6NuKk7hXHEXIB?>E*Zs&smSHO->x zAjWL~N0|edV7IcQ3E~TDaNd=~{+gUH1<_#ydzliuQy@zG$K14+%~0_ktj#lA0Suf* zj0J1W*OHsz8BXfRHiSCFfR0R7&#)6x>{!%6#HPfCZ9Bv4;(e^R+}g=Bq{fjm;kw_2IUP3Tk@#d-_>ZsYq3G!6W{P^R;PJWh3=hSU9t>Rn;Rr z&=*pC$1Ux2PSSetAWHNoFfQ_XeFAmCHnz&=C};0xru6QQ(^+A!SrM0qg0%0 zvY_VYBq#W6sPXLtY)gmHK-+2O43g--QFfx%;G}r|IWa=dT8Ig!#lH~P#wE1rO&t0T z+OeWG89TGz=(CQi{C5}rnsjCxmCsrF9B8;5A*&6) z-Eh9S<=)P_c+(SWkP#<{8}cQqcN^-eSyW-JYkB3-^N(IzF!SQR_79zetzc?f;GO_7*eR zFF1GgM&*FvRf}_{Pn9=}^wa{4376EI^+`U!XnV`4A04+@+qZb>2Tkk}T;G5H?r75a zie?XfWB}S`b)bGc%FHXBN&NqklNp=dPk*1Z=G;Gp7Y-RRAwdy%adOi+P+>;DxHbAS zVRM*LvbQfByF?a;`B>nfE>ZpYr9>rTYZqTD_T9+V_nmbH%%51-_Tg{*_COV+&-aVJ zL6)AqYe1!JsP7+>NtzWofP;XEMoc%yXAL+5~;S!N{HPNVeow2=7JudE! zNr)$0^#{JmxP8j|w%6hbuJKcy4%}6LYt!1N5J_BOoC5nab=z<6yz>rg^T9{GIBWKK z*u(hr4A7SJHlf!jHNSV5l?T(?BWi6}g@22t)l}<2tmcrMs^m2DD1S@THXK*VQhdwCm>y!M+IN;Y=}c7Fue z#K+Q$(ZND8l3>5t9~c@`jAPoOZE9D-ti%4QJqc=Xf+&6*S${p#+xb{W&+59c#L20d zOx)%uH9s`?K6qmML^mAucEyXXPsWMJ*(W}U1 zojJ~F4YIG=(2hS<--KTGiU#%0QTuI1xp<)XjS#bP8Y|xm(s7$chbVcTm*A4LYudRf z!qbhUWK6JBlbEo4`SJ~miMOs#p1*gp%fGd}3aA~s8hGEKOmsq=b+k=25!qWyFiI#c zY>CpGFWIr<{}Td@+}&$~vOBpw>LljLtN_Y+rqxy--2#m~T{3hebUrP`>B*c)Le=Q% zM|Q9pNkGDSJs~qGKy>4Am(|9f2I&hyondq@pEioW)4RKR%TQ#lX}WhI3&r@5xHP1{ z#C>%^S8^lvWnT7}A(_+SV<1u$rgy-u8}%%oe!X(8x1<(g6@jJig6TjL?(%VEZz>@S zvfAu&Em?qBs3dHZi3mtgA#&1<%iESo5&{_boc@cjkc+lmOz*5a}jES`d9DP#wn@#b4`pU2I%Zidh)S~osjOPt|q#5--681 za<7L;XW~MQwcWzg!@}brskg8}W?C@8JwDHQXIy;mPhUHFI(yQ~J8M1w7$_LU$9cKf z4U@##X&fWk<&8-xD!22OztdSo{HjFyEYIkm4h@wjRa-Pn?A289xn4%&1|Fz6iEXM8 zcncpX9rSFFL{#?xBzr?G6;xK(xthJ`M>jc#iptuNRRVE_Dq@Ydj_)-Zgb_2jqTK0!nl6pV`w3q_N6<;mG2%1}h zRaFE`%vfncYh)v%oA!OX+A}#592>rPl7o5=R&J*S+K}8Wv-qsZ^%$ZEfLn|P&^`q> z_$;WsC$k4Vz`w07a@t(CSbbqK3QOb2V^I!(@)t(ec!hDgp&$KTE@U-NE3fiHJi=@vV-X{^P!t-=qGxh-V)S*5 z4-S|Uy9;KE+S0N}Baz7+v?iR&U7G&O5>_*vG9(oic7wXik9;%Kmn!v_KXCQc*t!{o zxvAZCI0=M)X5X2#HcBT`WWgVuQTL$z<&DjXXv@Te1aVwO$L$Hl=SJL+k*qFsTDUj) zv=L4lxltyc=W^OumNZK$X+7WuB z!C5@&FE)+v&o~`X+9y*;^0#Lc>skA=a!G$rCf@1=1fz2j+9I%hrbRHD8~iS&^i=0M zTOb8B0!t9-KPN>cv%ch(~ZMN!+bmetm@2E_j&YHW-SefgVl z=Ot3wR6(+}D_8!rPplHSg%`n9H*;(}LC0~wRVve;VhT&*I%W*Zd-`safF3+cTCyjd zGwly3&AW&8v5)wr&YZ;1XiTLet{c6(v@nm6|0KS3H|5gZTlWC82&AnGb-MpJ*paLxAHlmN!Jc1vsjeUQurQ$Td`411{+i| zes*Do9+L?jjbOpXSJ-YPaoU*dJ(fZ`+Bm(yg=EdPA*pDo!ZGAuB05bwX4l_lwQ~zF zb)|0xEtWX_!OEx|JGS2AEXs2@?SxC<)(^TnbN%BN1H5oKW|#@u!uK1F#5CpD{pyAdMVA@J4!gj>l%dvs6vnVks54{UK+ub`2v^?>VU6Fc=4tTw zQ5vzJ#2|_PC6|wY-TyPN)w1$3nLE(ar9qNUFoM8R_7HK>xS$q93oyhWyAMa(~H#hsKPG2%od?8ac2}rN<>R) zRLRMp%bS|j3_BGrdSCX+p`va!ZtM0CEe+ElLG>?htJeZhYgB~9PzN6vaRAimZ8=839Xsw#q*pP8Bo#s!Cj=n1$HJ6vH4 zQ3SIrAZ$L%Xw4L9T-&EC@8hdUmuUsaI6dPYl!D6(2(#4mmGCa&iJkA$5i`zoviwUa zm#Q(+Vhb0K-Ysky+SFOdYTZu+=u23KG^NF*lB_P(pXL-1$+ua}e_^T$jH@j&jg~T( zCk0}N_f+}=iEDal5@V}%DX5uN)1C<-6kiN6rex`5kc@jjY6eIc5pGE1i)HdtA@Ys1 zJ;{hH0*#^Wkup1n>irw5F0R9_X6EQ*@{PE#f2?~4SZdL!WgW1FL*_A)t83w569S0# zH}B|+SjQx{gk>aL-*{Ny%#LVJP!?mpv?MD%StclQ4VZtw&;azpjS*h$-~1KzSxa3~ zDDX8~XufaQf!h&0L2W#H)8Vh*fH!+uIkKF!4btC5Q}oj0n^Re5%PoPVI9md8zdv4z z-p*QmL+L!3IjALIYfMRLHKQ2^3c0I^qmG7`5gSMTx?~BXlsztvNEh5B-icKxk3sl$ z@scPqH7#xNKby4WRzURB_E!`qX`0o@kQK`h9ylno{Fz^fx-sxqk)=%^JJ0W$?C;Nc z{Dm67=uO%1%5LPSK4h(o@?^~s>DWAV5r)Zv;5l~4QuG{P%m!Jg2N9+W9OyX&&@Oa^ z7NM6EAbw`fNhtjMWi+INMEi_M=}VT%0KKX?yR!OgPLcQNoe89V4h&6x9t11IuT@=+ zQjb)FzvMzh8xk2`@sgScF+^RPnzc`K3zMtW{z*hI>>vL8l_WTc_Qr4vF|J19uOCs% zH0dB%8CEw^tT{v$Vveh3H6~Em%r5NUIe8@6lhZT8DZeC$c*gV^1gYmF&WK$1dgQ)1U3ls~EC@7!eNg02&^Z1QT_bcxFT?s#DqYub<6#QGCZ zK8KTjm{hcUxSqAm1Qp1PPt}acL;U&!E|#D~M%FGVpx;dTs0gRQt+o~%cyH7EHGOxc zlg;)@QekGJC#NOcW%hv6($ZIZdYtuRo~o*@`#cziX!H||WWESDeT_Pl!|{7ex+RPP zP=D$9Y(xhMG@qBPt_GIJ7aSGdjoq88385HbYYZKvkv5cx}sZnrc2Q5IXpuGOC!Pg?;0M#PK_tCx<_t7 zUWy+nViYg5o4ucQxGxxV=0?1E*E&4rMl0_h4_50ME`c*GbQxDQIUv3L3@iT_ycz3} zH!0Y8*%+x@0j`ejH8kHaw1j8O?(@~;>6&O{;XVWTiLnMpsgh&YVXj@qA|xYYFuQ7fOWF9+}S$ z|Gkv8yL8h!byps%5ld&kOz6MFGZtQlT8>MB*FCD{z~^pXu(|~m`QcW{8?wB39qV9L z0GIp%uT}Rc8O;K5c-q6Hg*P{WRMooRN-?8N02|mktHsP{rLEpVLcqUBx8)Pw_$Kc5 z$u+k(l!u!RgFwb1S*NFj{^>r#*qZRTJ)fqdl^!V-&8S2zM|*Oiw0SzYG!uk)LgWSR z7G!$;;=ds?RM8!r1~Z#YpU=mEnfKE}elmT#+pByMtWe%$kE{;yoZvMe{~4e^GHqX?=npgZbij_qZ=(s^?cCSpM0$blkkqy zeSJv0hnqm&(}0fkoSthxBYx>!Q_Lt{1n9UneE2?N?s|%qzuO6oU_K~h@-SoW{WxIj zSK+(sgG%bx2Wt zbYpklgJf1IUO}gL_s(GBB$s`9y{Rx^ZSgt25qiS3g)11<9+zr^xx&pfCF1ZrhJ|Vd&|5j3sJ*c8FFmdhsaB5EwA<2#(TRP1^7z zDM>`kDRpZ1uCH9+2kqW}ya>B2V49wqzV7~vO8}njSMzy!&@qr~0lsPWtl8O49P?;b z3N*1@1E>?)GYA?N(6$3qw$|dX%aHk}T{$@lWG@@A^T%&r8e%oUAi6Fd_C&EUj5;3W zpIOA(bS{mr&;;c@gN2g#K4T}ZPUmb5ZtEUG=yP%LUBmVJa;;~iN53c;p5a@L8jz_~I$WF;mKizzoQ#7AF%gU1=@-_5e zQ>N3tY%SlfMm4MVM45l{)E6&qMu6IbD=f}U1N&o`v7_HTF5x_?K& ziTc*lyzY*=fce0EcP9C#n$?u(iU;nY9KB*5nAje51TEmK>v~E@nYbklv~58^={oCt zmjkr9VrY`-F!|(ql3%c^#xt03w<*QJ@jhLIPuE=^;e&l_T=f}R_rK*&Fnu-i(ir{u zSp>mpmXYeE?F*fF#pdX9;m##+k3IYm6JHq6d1^w3Q*WfT8Lm;zKm9=M>MS2-a*S3kk4BA zVUCZi4o0W!)g`pBh|ps~XPWrN!5^av?+)1!g&vc6%jA*#P?ia42o(w$s($3Y_PO&&9=>(I!TD9SdFV&*q!oQGkq@ziaS<3-&t zF~3Sne(PW@)%%RJVkZ?L6V6|+G`M^2!0}Jcgp_zIj8yL;T@k13np1b0kx#)WQ{~;D zm8Doza`%e6tMP;1Ih4L1j;%rhr0EcNXMMn?cJe_-mNn!0b*7h)hUC>RIUi|clLm05 zLnD2_7^=iuS`rh3f`SgSmVHBJTDvKgwXH?L=WJ6qV(*~vH18oKoe9*3QF?$R?6c-d zFV?5;^JX-Q>A&-+q==(O`Z2cE{bDZ|P5|#%tb97Ek!d2S#jlS%d?2&-CB~w$Sei92 zO(GfnU?<~Pu`3tCAq6Vca#$#Ro&$P{>4HycbhOz#rU#%^ejrE?JYtdSbq1puC28ph zQJ#F~i&H2YOK17!lSH;m(Y5WObJ$(Dm6DmsXbNfDSt`57`m56E8ipPxqg6h&W2o1^ zJ*5 zul%!|Q=Fje=|Z_@&x_P|nRgj&*f%sv6}s=IfoC3UG{1A0+mPrU!5CuVPL~74$2f6+ z@#UD4S0r3=-AXjxsN5(XPQjzXE19L#%d_b(quml1sELC_(yGDZ?21n7J4aI$m6Mozsvczi32;s%Kxn zgNZv@5n^fxxX^s;u~g3o>|W5Ck7i;6)*e-RL*wb(*HPe_S`MuBaN|@BCZB^&WeVrd zvyhj)_+h3lot19~cfpebpP+I*l^j$DssITINqWSXwNup}*o9HXK5?qr{XYu;GKfS# zHs3LF*LiFYRW<_S2p(CUe}d2z?by~FLS1yh?fi9b$bb{eQNj44lpK<=&C9*QuXDn>&Z4)W^z;w5P8ny3u0A`lH0Y%cFBej$05;pnY3uTp<@EdKPG@7b$}eGI z{stiXfDR7W+P`4r8LJsmuXj9XL4bF{kD6E1!J-WKFtxO_fO9Tcc$#n(N;7f~d{@f0 z8Nw9npMZ_pv)HAal%Fe8A(-2F;4H=#)S|Rxp0!N?_#>_22$XdtA8(U*4*s9O*c1EJ zC4<6AkSN!Kqi3_F4U+5x|Neg%ix)uU45>Q1E(S#`NX;c%j$+2!18Ou!f@MmdAEO{& zORLEkl>y!VpXSl#2$US+#Jh8MBn)z;a2;O{_C-S{PrbQs5-{H`*x^joMu6{~8W=@S z-pS|85;Hl~h+?}U7A$#LyJ^!dvghkQo>Tfq28;>?+s48AUUC9OCJnrtnxL^@k3sFGRDbJ|{2iZRmf}jo$u=1uxEP%5=GXVq8i5pqbXYR4 zk9O9hDc+#|!f-+DKTESKQ}s*$=3HJc6}@Az6kv`u{Wh7(*6L7p#7otsXBhdcbSafB z*L^>PoP^327rv~4HX&C2*UjSxom9`^Y3%Tw_reqsM;Tg#9CZN7ABY=MzdoRnnIa+1 zd+*$lOjZ}PD#2ShBD28$_zZP;Vs$9Ndj=lxwX*cre5qM)7{eW7rd0v8uSPXjavZFM ztYY(k^S}tY!VR36O7Y&=h7PT3^!NM5fAW>mew7awyO{>3VG&`jF zZ>Yv_!_#Y=a82FS#l$^omtH8*5l#mm!^sb!PW_{-v7@ky)kI)Y)=+zN2W+MK)FUP? zszv=sFg%gjdeIp;VsJFFazAy3TII=FNH*42e4Z#nU3l@h^NUJZ%e_VeFd>Z(Cb-PL zwxmXu>CO|ZW$fh`biIQ^5MEUip3%@=Pzjw76iVMoEsreiL2m6Qnv+<1B_|N0YJle@ z4|>XMl~Qs6Fs&~2`GZh|gr{vh8+?QVHoUX9;t8j@MxH(-q;m3i$nMx&6gJjt3zjj8 zNEBIx{dZCr^U71{b!2hwl?9xzKs%fRQUhtJH8n2a!bcw;4bUs4yE;z>6Eol)Z3}3- z`t>P7&?ckr1eaM$Kcf{b@BD_Q#?(ca?zxkx1Czbv-9Mi(fEj7~_vE5OQ}Ox(S6fa} zxqowj`1|(6*x@@jTUpKjp^m2gZ$G+#*U*7-{D^k5)llTP$tc$PTgDvB1N~9yJ40sa z)`c660)9^*Sc&I2a7}oNjz=9oW;)1fUZh=LcljZmlaG?T`fw1Z{V77Gol=Mr#?P5W zjAfF)#aDbWamf5%S`qIN3RM+;OeLczcQ)ofX}o}flr(-ZW&G&RKlL2{$%La%nGeQv zsMn<#oCR0ZOfSb|W;N?s%@WkKs*jfJ;1n4=G@>?&ZngKO?u$m#Z#Rm*)hn|M*axTz z5s~}ua5gL1dq49u2dtF+`09m-U_17)@-DtObLpRO6AU%3%JBsllxOVsj;x~I|J4pO z2j<=v;y+w`$%6T78PkxTK9WrC|2vtpts4^o?d_c(^Y#vnfE}<$cDz&)yf?xTw5dkN zXLVtmZ>*2-&MctJHJMsc;tKiUkqamIbn>@+R7;h zw){2BC<9V1`24`1Ar^xZyfAIK-XfZNa~ToGWI3=CuO{ zfE)?oXSM6*I*WE4jX4RNVhsR!>?ZW?Dgl;DX*rzlfM=nojmG$3);ZAZ9{a+?anm{8 z?@BG`K-BG0DvQvwwoJd~#pEpeXBnL4C9?mTwUe{mA>AIXnB*Xb&93QJdcc`eI%S1S zYJQ~zROKCo8H|Fo4ACg+>^Q;cLjMLQxH80g_`tyz7`~*vv0NLL#o9P#igfD%k!TGXyX)a;-=6aqFoPbT>ee@J ziDcuvuhAx&(==22jcP}#OvxoCE(CGV_j@Z{e@f0=?37iPYIY>Pe8@54Y@DQAvW<*B zXDxnPT1fe7L@}e#9Kj$PgWB}DCTzAo`!hw#d@n+{;$$f|x&I?6kcrbO4& zvLD5>@>hXUTe$G%KBqdzn(Qa7tx$&WDNFPaAdnE-&NJBDwDVfx^QAadPq-u|*4#f{eZU}7fv zICkZyReWBUt$}`S#q5iEsQr}8b_VFfyc}P$`LOuAa<|wZ`%njK`b#RB>p2LRWzgEp zQ4cimiT$oW7^-WKQUwb|7-F%%eBaSy607UY27u#$nq|c+d^eH^V*YHVS>^tEe^oCyGYgr)Osfn zL>ID}pHed-)Trh9HRmNWcCtQ1*(##SSeqElGFy6b0is(`U1Dp|lL47c>5>$!G|TiA zfd&0GFJZ|Wf$>qn#9OvVzu7ag1_~LuH|?fb4obC!reA zPRY47QqiIIFu2gQ(u-D#P%~PtUOM{_RSnQf!tPv&L{C6B$pi2vx7ZnK*3rAAh1T*7 z@S`c0{7TMS0kB;A#xI=AAvENo=xz4ijTH$;#Z|waj+>w4evQXPn@X)p?8-#^v4Lb0 z&g@|2djejcmgI(3OX>1?*&&J&z&7Dr<|Gu>4xyg8oO&z4Gr1onOS1Axl83KLbA=PM zE2xC&3SvXK_uG1R&mqq0(yanV(;I%GuaZ5w8B0TW8nVwxmJ`(+pEr91wJk9Sf=315 z(Kq5$7YUkV;NsjKCRrQLH0G6INX!Pq^14kj)p1y|(N{#Zrd%3Rp1mAf=&NzrNZx%i z@{qIbA}?CZ@ZB$w!uH!B!Oa^|Iv8zi3)qpLQ{)e2I6Mf|}>0 zZ>18FYpV^Mv#q16)^j@V5%jw@;OwxmkeRUMiq_=MiT#yB*NXn`HWjl}Z}4P!ENh#$ zs{ui$apZMIJ874c`h5h-+VRq0B}hBF+c_J|R3!N;Mh)*cN>^7z~Oi{|M>D){KT6#_YN~ z-IKKU92w=5>%O_$FN-_&P*SS0-U0CinfR=wkI~NXqHTxCrx!*rTNM;XQ_ZXNu;-z6 zHSEb8+ky~V1!tGcpluc8^85F*kAtzUpo1+^rFK8t7AJwkmEZ*%-hEaDsU?0H`ORBDk)4O}ZB+`?el;5=HGY;aUFrgr*oD-}hs zgc<;V7=Wk9KjvnTXbv6mBYq*>2oJ>GB2wrrGjdwD1>$^@uc%o`E=o_&LcAj7h3I(w zWP2oX{TcS4A0|20WxqJp#?v-+m|b!mrT1*k`tn1QLuOOs)*U?bY!e!nqQu0uP$=36 z;p@v$keC^wd`G3Pmhr14nq!=eh@3i)Z&N zx)NZ3Z;!_4x*{I2-#GoIxQbLF3#S`b(szn2t=XLp^faK zNsflAOQj_qIqsF9?49b6oV)2HpLr+Jei%^GU7RDx-=gN9=HKHK-rWyDEz;GS2)1kOVARXrZcA2LAG3yggoy+=7fcHZv04X%_5vhVG+sQnX)_b`@4yX-eUJy>rQ7_(nA zZTo?<^S-oZGMO-Yc_N2VTD5R!E>;{gh7r+9;#KQ_EB{z@rja0u5)(nqjzzCIW)Xb1 zO%Wv5@`rJ>Pr+So0OxW=`chW$+%pYozh8azwVbsbo@B51r)Bwld&-5d6jn})auZ&8 zW&6KboyWSg^iD<@-)=6ab@P^jqQQ%r6FYO}LPqP;=yjEL$aZ|l!k|4$BmsPrcBoY^ z40S;EP35#&rh^ACUR&|kV7o7M@kwveKAA(5-VeL5WXUh-oS@;mK_c}M`OJJdYJy1r z1uf9B$WYdFG(?^OF11!fMUUnuPo4|}i}zvx<)-ZSyGU76Q79BiFRpv<_7JPdLO=-# zy=Et1;X_%;j*=6cwK-0uWo*F+2yu*UJe6|kM;SuKc%692?D{Gu%=WPs5aS{CR!{@^ zg(2{yRpdfeA+E??24$4EytP_#29A{ep#bMTR;;RdQ`Xvg^QJSReVCN6{K5tp1}f?L zKo=@u644CsD*DGP6le!Ov6Hr6o9{vde`=EiZ^lSPP-*L;@(H5m{ThCXO-bh8&(7zp zj`pv3M)M=;o*;|8d-o33UpjlfH*iq4!vIwDA-$L9iVn2PVmGUuOoAzw!V;WNR4-r; zaua6HerJ<&6TH(V1WsV$I+xIP%{G!KXBFJTq>No6PV+hGu(2~a%}Mg+&DH_Vs@M!l zO)E9NY7XtFIBaDd{AVpv?VL>KN36HJ%-H(;wwA}kb_r4Lq0@sBRQ?w4e`A#96WUfn zB~1QmVMb z@xQwHx@;|4Hu{8-PxT|Tx*Rjmdf+rpNdU?52-r^z zu!7gE_B_Ayzv6`>g}2T!){L2#JZM`utN98go9(h`)4eHH_YxY_maz6l$&VX<_d-_z z%fEd6Uxd>{%xmZk;cVs5_sJ^d924WS5KTS=%<_59FlOpRhNPUF?#nWpm`Xf)bcfMb zG)om92F~X0sC|(f|ArxP0vIW1E5GJ{Z&7iE=y(fk+`^_cJCfr1+P^=YxdBl zqq4Y^&e(bIB)yr_g`DWJ-|Xt+hq~bk0}%yB zs|R81IoiSxs(^!%mT2l&MbXSlzT)^h8Dyd}QW!F`v6#uBwe}u7gOQq((4}r;+C_cE zk{4_0su^uSKU|^`6z!TapgIbdgLh;7C``V4D2R%A?-1>)jkx#Is+JMnNJA>tS!4X0 zJyGa+JK+E_l|2EX#+&`OP!e*C~`-uN10BHRGps_W-AR*P9`X;%1+FUPO9{DtApkZ^>tpOnsp_JQApisWC|xZsNPIFWZ` zSma-il7!>-jAK5*M6@jk+0ONYxW0ZD-_ObdqU$h#uEnFp`S77R?HC0J(QanFZ@?k> zVAnVY`V)_^{Q81(hy^$#6yf`XFgZ^iIivcX)4lvRlD0#B&7gJoyHV#n%<4y$$H0SA zX}oIaDu@MF+pIE8IPUtD{=W)j=;Noo+yal=O55g=*M@}6oDF(Dor^kvWKwTf;)vq`&Xw3D+=Y->YX zZWq#c-HiNET%nh##rM5?I?yNXSoe&v53W@k9YPCuCj5vgWVLM_D0qGN%eQ56AE{`5 z>`V~K9HNqf4Pj>d+h8*F`KMCOx^`$gk2Z@mUPL99?G(;&N?z|3gNa6GPeQe2#^T?~aDq_%WfO(U*S(qOUE!K}L7y`*umbN(F>`xW9#tTO)9e7__}$AmX?v z*olnCDpm;EXmktH*j%P=`;a!&C1Zf*`xP`j{#C$vc6CRkK)g$Xy;{(Zg2aD~v?-iy zFh%Ba%82D7RQQzKpmN>o z09u_CpiigL+6tDSHRnT~tv!QdxSQ;)ja$p%oVMONhj878{QAgDAxs&uyZ1QG``1U> zaM0D#tqu+oIp!)iDLG!p#Obd~FRBG$5QUPBFV1qoc;ST{kXVqSX|(R7%Fdd{ETJ{8 zLNFenqnI|{myC}NAP!Jbb;ia@&el&RXR1*$JWMW2R)Y*;fz)~}^1C~k!gg(jFdt1I zyQCB<4_f|dge@rCCiunoN#nALaYo+K*%)Mi0w;Rt7Kss(qUZ)#$}hU%v;9^Tf&Z882LlLixpjc^BIWG78vJd7ZT3l z-VbFRm`AuCxYeV!`pcl^lYaVe(saFgB`0q{wo(l8!zqG#kTKV{)0SDhiZhq5^0p45 zaFy{+UAWDUvzPBn|1?~_i+m8HLhLnH{iRw@gxkDX#V5e&y@tuB#+#gSPqMmm0yVq9 zEA5EaPmCgTrbW6{%69@nEGFMd81&>Yz&&-FQ4cOpO(|(Ob%^Jz;=Jc;Wu^hlA(l?X z^YF_fj+8Ol5EU)-Q`Y^U;E--@tUGRIO}+rQqc(q{$Rs4?5*!DT6m~=0H&8rDy5}6DpMxU0aJxB5tAdnA$*0QryAb!y69(wLP|NG5SQ#WfW2?4D9sAB?;;aq-F}IdGU*# z*DFsLYQd{IUt{V4#*Az?UzTwuspdy*4YN1nid?=Gsq_@*oiPb3ld=YJ?W^5vI^R6`M}*asX;B*3T!@7lfl@~7zy9fqTPp-%?LW38 zM?aPfKIcbZUxF?m!@w_N69fnUF1t{ zUG&U+Tyj6F8E1qPZKpr~JR02rm;cfnU$M_PKg6E@nas2|MEeA^)|8GUmZMlDo&8eh zsK6>jKc%_|i0FOceSJ@y_!7l4D)pz!D_6=Khf_gdHs0SN3CqiBW*kA^luJZ=KHnGA zEb$XjZrgrG=hJVtaPfQ{V;Tqef30jc{^BPf0JxVXNx)Vt#`)~dfE|L z(1^V(F#6)N$D?wWeLwpt=UBINDR2%@U%xErI6Iuhf-@>7(HnCoh`oF>(pbwtVT+^} zS(i-F9G>d}G^{tGH1F*H;T{KzFkZ6wPqaZeGBNhA-&h@(^L&n0=KIQOTV$r+kWB<0uoWQ{qsa8TY5xb1e1K@`FFYh3gS(@EbDNC&a#{9y>)yja zb8zNe`=rfAaxd7LI34x-SAZ^~@F7ch`fegSRUhTJc|{IUc#hZdgbWMiZYPPKU(#y$oST*&M3@##|C(5RwS@~;PMJXp>^QH8nQ zUsk_*CAj?T1w-dNk2;Cm(ObuG2a(nHR~YYm?#PgZ?wH%?{c$EZmT~?O;Q?V0Kh9Dk zBxu*Y)A0YNv+kDJ^Gqio;XV$XZvV9>-#8>QhkgCsfFv^rdJlm~-Qf2vo7|#A5rn(1 z-%4(!k4$K*az4rVXMyc@dldHCUlopxHN@lczt}koB5v_^#fKbGPu8nQ?kiLK{MRh9!so^0uV*!*TbABY@MpYo>-~$jgY_I-F3?s>JdToS5&rPO_j>qPO#M<)7(Kw0%AzXfV&l102g3|n8) zZHB;Xrzy_af5DEOe)hA5Ec}w^IU`Nk?_al0>UlYP5Db6TRNXgds7SRnmCc{xuM5N(tGJSixnM2@goLLq|w2mE| zAv15Siv!~_D%lT_>TN?fE$hz(2TMXmLudL6#omKIL(o4%ESDLtxPe0}m(PgcqBl-5 zRKg3|MM$r3zCp0japB(=iikJNq;d0zU7vBFO3ParLXuJN6!=2U~h#5{kPof=73kMZG1-d?_&N&3*j{erjC3kQ!7k)iLGm(aO>hqfx3tEHJX7sDY>0_aLe-L)3!W9pDQ-wW(~RlMi3HTtir=c%|wR7!OhD zU{tP*_Z~7&@UQjrGZ&bBaNmBL=y9`K4^D9+|8IMuWM=)5w-5|u#ZvF=QOi>ty$a8Q`g6IG1?`o0@%kA7GAs*! zM+ir9O&kU%q}IZ9e!5R#8w#6rn3qfutys}>zbx#|J_O3FjYbtO+#C3?G&E~h^Q5C8 zu1;c^wK?9oOQvt`iXMdBJy8=fo#ge&ICY5MD@-%^`iF)DVBTAy^#9H*RY_2-6KDd0 z@dK#Q1cb)O-aZtIiC1ED1-OAC}gu+94t1lBV*#S5|gS`B;($ZQ=GB9gZ>Qp1AOxq;~CX5pni2 za2hi%9Aedq^68jq`t%GR?r(mOFO~MD-gcN&Fi@Rn7y~P>)%y$H_Tjw7Io8#6o|IoabAs;p*PBrUlLo26*d;0yN z6BoNx=ZWDnM>Ie0EUYiw($e3M=>FvWK(Z!1TdF%UN?H1>UwaxZ6#hJIk~rB3LdmJ3 z82<66(TfT{^U>gG&e-Q5sTecnSh&nQp5qP^TS#-Cwbl%INy^Z-ghN?Y`hKDGK>ZuC zdU0hjG#C@dPdfVbydjZ~Xv}!;2fq8`SOhp9KfBlsp0##OwQdtF`gqj?GJeLPeHMvr z-hoVh#%Ru4QsB!)Vh;1Yqu1W{fMKU;W4n`PkmzU-pJJy{f)!h#ZS!gbaq}Dqi5O_xa z*TWi~S_J^YC7oumuLGwNr6!*qyRP zOl&uu{KPJBLbZkNv8UM zwa>49b*+HE3SVxP4DXNi-%3Nrdcl(Ta|wUn zONEhsHhmmqkE1Wls>e1y8EopRh+)reR-IFSU1CY6FEp`WU)+|`gzGn`=!D z+_yz$TU|BPY??UHR~Aw;(U}WC;u>A}OXwxTYuWzwgZsdHHM}`BER^SAp0nr|KmEBW zd-h1OLgS!X7ni1!WZpi{PiGOmy>M;5bU}94xcdXvO7$Jj`4j%m6Q%h()f0C;7r*Gl z!Mn=)=(|@luK4RrPM3FwRivnJ{UN?wsOuT>w+B8183^a)>=yf=pGX8f7fitCYW6 z1^s@}0(gdm-P1SS6_WZDQ0(07?j)00i~K%{zT#gCom)jrbRsNp!pvr$Bi;wJQ|WeLaq_=nE!AgsoP)W=*xQcAoT}~v{}7&4(<52n z;)9)k;PJlG#F!$(h?uqB+3-J(z0x_=$Ng&e zU=lcees5r)WGs;c6x9#HvG5z>S>ezHBHD(z5g(Pyq&UQ-XMh*;x?|D+tQFGtd=07^Kp-^E)M(UI*^7sz&>}8{T{`h&V{S7^&eOxVUv?+K z8P+(R_fb#26%k%Ut2|?sd)uWUDkwHjtDKvQZmrCae(geJ(D_&HJWpK^q!it&3YTIV^(Sxi=v7u_1NWru&_0u#WFr? z!{7J-z3qamOrpClP9&BO=4XNNeZXmec%!>3$lIy7*Emmd7hHQ^vtN{i_>K#oEc)O|B2*9yM0&m}o^a(;_Eg>%5Vm>S_w}-nb)rYk zMK71t=8J0eWm#m09=QD?TtRW7=%HsOqx`7Te}j`8m43?7#gfb)f>hJ`Y7mjm*V}2y z_wUw9YVUEa)VjyIySun2ZTVpG>4WHL`wZRyr`*A%FXcVpU%ODxKY#qVq&8`s=t4C3 zr_ON?Og{5Ps>Ig2!+Xo?)+_LYme@?f2`TlfH_G&HT;8CQ*q%?$+Ps4I*?ij$KR$}T zd{|oR>&NFuM!{e$5N3Cl%pEBh=N>R}mQTT^(h>#{+v0IfcgS4lNEWyz$88bWA_vZq zli8*3>>m?;q~%jIW1BUUU`Uc?PVfhaq-W*d53Qa=Ow z%6In0M8h2LmWTbqUa<3hQw+`CxB^mCgjJlAF1W?$dApvs%JlZ_@D*yU^ln%z%D!^d zCaV`s7{aApN`+tjv_)s7b>k!bLhcgv%&)}USBW%VE{T(c`Hp_G&S&%T1969)+=JYm zpUM*P!~H$wDd<|Mlq&tgriF;IlnU*&$Mid-)>m-PwJa_gIyOfFcVIm@rppjj{D^Djov2^f8*M{c zf8AuUe0sbJOron3e7IKh93}dUM~dh6$@tKk4{QBvr-Q=_F?}5sP*?klG_%DOZqiSm zJA77FdxyxQrVQ~S+(q|BZv7mDtMW+k37?ISBZ`!?V|PQ%>uWnAm)_~>7ZNIZr+H{U zq4@>dYwr>lrrm@7wRgfV*y~G+i1l2I`u#1CZnfA-r7$aUPCaAt37_Wo!G~h`#^Bag zB7@y7uYAV@b;n0;WBaA6F%j(EjxB> zb(VyrI4{j{d-P;!Eh^_w!_ z&B+r&z4)iUAr(@U+kPNk;8S|@-8mG9=Ue zSrm1~mP(HN{jGoP10BxCOq10Au{Xxk>Cv+>KHLnfZV{ocRT~iyY-0uNtW)D~Q(1oM zA=m`MrrvG`K_2PuKIU(I&w0Ci^Nx?4_?}%N-$@M!Zg}zd@kM^g@5SraSoOZ#{nmm} zf2f8(-sY4&Cyix@Uovstqz62vA*_68*p*L4f0vLD=g&XZ8{^?VI-FEgvd4z?Fi4cr zeLjqM&VO_I7h>4-w&PG(+oc+v`X;1C>mG)psB78Q9c1Y1_<>j%w3py5G!mlbveoqn zfi&&`^QWop0WerOFh$ZU3v>I7HzRCZ+$ND#Z_h-l%n1m?bz4w^%ij`UBRAE2&)?!9 z(}}>qZEOFkU1qHposY`G6z~w;vTMT|q=UQc=KDyG4cRVRWFZKwSHahlP=(9a*{Vpd zoZpn6LDrY2o{KLfCL159)D}N_XA5S+N%QKUFDi2 zQK2U-IBAv{rJh2}mY3qg1HXZ|Ii-s9>y==O`gj;eWt^uZRh-a>>M`mX8? zP((^qPJq$bxCi0~Y;6IxVItebN1@K;u8w_660%@ic(3RaeLOL@zqTdA->SxD+1}Cd zH8Ga#+y8GE^W#K5XO#o8T6fXnn#0hb^7wl#cJ5B^qr2y8QVB^;TXy}GICgQ5diE6Q zdh2Ut5X5r!ro|HFm>!kwF-1ILnyZ}5Gxk87wdtpyCDsFR8^wzFv*s2Vg4I49DGhlh z&L(=h`VXCWui}+CJ|ac3U&!5@xUO!R|9xHjPoKgPO_9fOQzOC`%5-CWxj)-m?)zk1 z_!7~Y(;M5|tl|k1l(LiI&Z4fA3!79Tqp`#%V$!C@(FfqBOJbj!*5>_yEg`Lw+_OY2 zPlk26$3SqqKRlr{DJ&gLh@=wf)-IBlTc!upo)vAEG;f#HP7(FZNAM0kcksZE{#HAf zkiVq%V9W9qWdyfADGM8W-q<&B)Y0_Ld|1pbaZ`yhV9rptAYb)LeAGpl9;%$qK3OcW z-UH_Eqm(Xx-C~HxzSSGeQeC;9{&cVsgU~~CwrvPf#BdRBJd4|8u_*It7uM3 zJ*Sg(;>kK&BpK!TF&X`+N?Q1%(vSsy`UU2cPY@x;FRU*91hz7)cLk>hW%^k&CS?TZ z{dOo-65Z@^+0$cjU{ve%yw68)yX5VZa_XJSIJx7rpS!oL4=$g)k7jrLa!4AoUYskh zJ1q0pm2jhi)U8!j#}^(q+fF?<`SbwdmCIuk%YC^eR!^(w58&fmd|&+L=t(IG;jS`+lz*PmQIoB#2U?w`P(L_ae@=*Jmni-k^y$a|*B&0rV z@z;gpHmLPZi_ISzf%1wo_L%`;@hZJaX8la0Y*l>)UFr%|lz+&bs93h$>R-FssYyQ2 zvjPHVk532i{tFnT`;NgFT>q^y3hrf=z-zr>Q~U%O{J&eGu32T)Vo{IT97Zl%r zJsKcG;0|M1*Lkogla52J^8B)LvAna)7%B@BO|Q(9)E(_nUG~^l0EGc?$xRXa#oQJM z{>Ad1M@&Bv=3OIqhx&@=6B$Kl|3&EUY~Ma4sfRan_bKh1b#%~kU+|ZY7Q~;P7xxep zmJ~~7a@>&L=QHMDrGk$S=ir+jj{!g1DvI}dLh(}#ZfqhJ*I(~Df z%sN>#*5(7(qse85=lX|aLEp32m<5&D1!0G!I(}+xw8-O74xO?C!9lkuLDgNQlbRN#GoWWoy`{&^CV z$wEbKPd@T@5+2#^**+lC-}z8-rX*_=_B@|ARa(gcQXCc+1oY!-_s?^l}OB@a3Kw?&4d5f83DV zQ@!H!`nV9Mty?E37k{A;+fw|_=tY6*s7$Hdwlv4v=~d-b*wr3wP%2Y#5O5AuZoLIGdS1UE)w!rvoVH}jbS2`5ico&4%+0c+@wtdv(-E)q4|~BV z-vim&Ga?jA_+XH5X-GXIA!QXX)3 zwI_%Mx4Jnwdztw?{G2CF>$mi)a+lOcct1QUVRWv-wZq6cdAoA_vyUg>2FLwYCwEt$ z1X0Aw1d(Nnr_(l0z5SRwzfI?v>3r1hg?kcjzs>LVrSYOLcc;KAr9W(At&a>G0mMrJLs56~)#m=I5T*WwlQSUrTeD+q@H~4-38PN!t7%Ib#I6`C;RP|3>T*`*pYj=`|#kBr`xzCZ-|^d5=I-;Fy_hf*B}a;lev4z z#<*ZaXR&g3Tlg019Gz3VtIGXpZ|^4WFvFTN&ZBnZ5 zqa(A8ftfB!-#bIOY1s5IV12of=Z6r;?*6l17m}+M&cJcFGPs_J<9Iv_;FsU=@BQ)n zco2Hv_xbSqd=N&%@9X2gpAV#WN|w+*8W}A{sa}QMS_#W@o4{+QBBhUZw=)}vUoIf@m#H)c_U(l+Qyu^ZBnj5>_eC@^-_jaUtA7t-Bgk^j7&<#&tq zpRXL`8Saf4Ghb;pmhg5CdV?HSu8_`OpyDd{_`Oa9_rWdDSf$eDUw6Rv9O^f(k>eDV zJpbUaYWLInD}0d&?ZY2tccZ-rY)eMQTY0~jgUd!ZZXBtnF^ZH$p6mGkXMBm_!h7T) zeL{aHKmTvz|BU|GCPHuZw>k@<@7C{=cQ@`Kb@SA5+-CSxrL|rIdiCq8#1u!WSIJdX zv>!Oc?pP(SLeC57Zm}ltuL2HKC;VU>6tG+D`M&deDGpKx#2WXOPo+3e9TaN}n7&QG zZm~6e##~3-UD4I;i1~Nypy)_12ddp-(|O)bv0H4CJZ`w(N74y4r3v-Lc#6pKyvpk9 z7Ta}idsg;`tIlt>wev%KFg$e2E6s!MpONt~`DAYlnIFsk)A>Zc3r&rij{dI0;n76k^aiptkLir;y$E!jV4lE(_J>k z5hov%vi>9K9p}mz&esI0d5e)@k{;jJ!0--WrOMtTlm}53Z!BY29i)y*HI5ZybwnJZDPV+ykc8}HD&1Q=8 zHH#t^<=>X{mm`(7qhYpBgRpxk{&{0U;Of0p#KJb&f@`d)N_@k9OsOOwzox_D~~&K?hOG)s!KXM6DhW2tU>hE{cJt3 zWK?K3ss`D5(W0%;Dq|{G|B~^rwW^7$2Im7GGA{_G=`C8UPs*reE!X&;!jLN{cFg?uei|AKS~|QRoSuOFLAh-CaylN! zdpG0!cS>!v*nY5B-@tzV=KlTrY5Oc0{`2p=^UhEK2dP)$5ind#ibOC}A8DZ_qeYu= zYLN9`1u$Zl+i3bFjE|@&y`5q*KBD6Hu=Rai-c$Z#W#`yr2Hu7^E{Udl>Bh`A8qc%(PptoRR%O^LjDCdPJ=?Yk`v-81v66j{(7R_kKS;|X zxbIL6ODFUX^QoFk(=YFiR7Wje7DsU;_@VVrJn_Wn&JW^Gzn6J(1Lo86<;x$v+3COM z6zJb<;SXW`haRGVw#Q4iN-mL%9!;?&W3f7I?WGeGd+J)W-}rB5^e4E(KFIo)jEBCI zy;7Q=;4D>K7sV$snzj81phPhl4^JDr+4~h*x7b8<9!t*%j74B62YTF?p06oaxI5%0 z>&MTPHSBu?|6RZIEG>_$AI6GTt&aHZZh_uGntZk0g5h(0e3S8DI&|&|#j{Hz)p5~F z5Tt#C!jbAE`RcSKCqni-m-+X7wv)*?eJb#bq>i-XW}N@GZ@6maZF~4bRXa3^YuB!& z?U|Y5KY#RSPqx2%>hd+w(a~(Y&&+{dbwD}e|A8~?U4z~9eKHdV-AOz8hs=Xpj? zg87qs89iIHPx^D*8AgwRx(oO6gM0O~yjzQn=q(?0SzWoWlC3`zaaZ@~ zqgpL}pUnRkybc`j`Lfb>(ri1b$l~AzeW3$|5}5?{MY(Nm>kZN6)^KnLeJ9jDzty`a~Uh(e2rUdp+h>E{}Bd( zKOk6Ec9@O7WX%q>(YS@JKgpo?)a|nEw0yGu+cWIF6#LXCYt$=N+)pu~e+hg_&U+!u z+M>68TB*VL5YI62uh-*dpucl)^_ttOSKSv+_|V%0evt5&SrukBp2&W&K8hcp`3XPi+f~BqNATg6*WRJ&$vA(Q zD{ye9>p9Y+;xji=oUZ}JlLUS>8S8(*-XrBSJrcOGyu6O$fx3Ln{r7+TF~!MP|HH$> z8x9SIS(~n(2N&YG+33HZsCvcg@G4L04ZGqOX#Lx(5F$~h(^33lUcP4Y=4`gUd+92* z^|w!&MAO&hEzKEf?i?fFnK^u{p6%yLb7tl&Uw(zH-()=0|17Mxg#LVAH=BQi{z=_? zOK5qPj7n|UpnO;oEXWL}iG(VaD=WEJ3DUNPTMl8_h*?yC({z8G{Aa}+(7h_zk@0YSW*V-%C| zp&zVa@00amz}mz13$i{aRS7J;LR+9YY!uGxg#LWJBQDU`p;$)CC+S(;-RBtAV0}== zoTfM*=gYD(p?&ij*Qm*QPSa=RB!jx|$YE>yOaqa!h~5f8AOPuCBrjw-a&rA>+{o7hw!-n1-4}DyCL0@apU_VxRsUH zq8)?p+1U45w4{6)!d0VJP`%UD-oJkU2s{(_2LZ~6aOtSXq3Y#FBiFT26dGx{Ga zT%(3R#II>BV05cnxiXQ__x-{a?c~W*rqJ}6c~AOBFI(PDvFoFM@$0XeF_z*yILqn} z5VQGxQPZvHHwyfj`+AL9Y4m031jpZix2szn@=w>jt5NdC8e0BE?RK@Y+o3!i%Hsuo z^r9AcNSNPWXvW6s_X_#n)qF0Gawz{@a=+w&^VIuhIi|0Uebzr{u)#pTPjvMh>0fP1 z)+}2V7e~_`wTWe zrmw%KEv>6${M2-v`}%hChen#8;A{3DnEZ&~{tU|u$8=@tKnBI`D6je1hJynBLOW;| z_V0_@FEoSJJzvsvf}@rvu=D#D8k1)J)v{wW{kY~`bymBb?H})|KgD`g!p=hk8w}ZO zzn|AAo$t8*Ppr?^#Nnak6=+sPe1PZHi05p7$B~fd-D8P-^jIZ&S_QnKXSd@D;n6t%@YwI8^fkO(!@uJ&T>k-Pa%2bar(yeq*}s z3k|R0?KD5=uRd(Q%EsGq;Gx0#L7GnJ-<3F+L~$P4gX1t;pER+b-iz}P!_kfV{2l2Z z-AL#!$VZ6${1-e+pB|A1@%&=-%|QQA-Xro}9xi#|O_t67@x=(3a0C4>Wh90h8fbrf zx%-lK4<3qF%AZ55bZ0sAnM$5x`py^BNV)OS4?L`e=C7cg0YQE6qzH1QDHOJLZ zJ7(n*`fut!#l{DrKhAUEwEXMzXY!CujnB?m2F73hTei4fMZo zud4$;gxRb%nN0rleM0|>bw8F;JUwUe`pO~UJWj?#?4Te&p01m|-cTmo-;(v9#{M&- zmpjty%DV*&`kz0)vV@jT)`P)hL7wZe9_xWVOIQyy$2A>gD_^Ji3H?9oI>6osKOl!V z=LY)2D-omruI5i~p#SyxA5F_^!F}m^JZm#Se*}x>`Op8!^v6iTg}pGI{+l@bvjQvr zk^6mLKR-WO-|@eqe|6PMdGLD4=>KA#w{A*U9g}~ol<&LO<@xQo^nEh_T`?gj4q9!} znCj|G6chTJ!%8uMM`}#y{mssGO(*pCZ5HmE$^1WfelS8v$9`bkfHV9^ zd1U@~b=j{vVykUvJ;j9ndcB>Em*ZF;RLXW0O}~ioaAsxiGZeq8?pB012=vcW|8Vb? zEy8*i-8g1Gh65W9^RWLr%EvEhbIJVwE;SGPe}V1qJnsT|`af^}`=Z%c4B46Czl;6D zn=RJ16f4p90QnjHzbed?!};|%T4Gz(!NSC@h6aiiIhQhAw`_l&;y}&l`2z!2SpTk8 zkBM->0HEnu?KMFN>q#-8|7{m-(^^(zzp@jK3rKyH#~F|z&PIL<5K z1_SzdWPGhw@4I)iVe@8+H#PStKz_Er{hI&tTE9sC-3K4Moo)c}hv&b4#LYl|mphtM ztc@ww_PQJCKfbs}0ng|^)Asq)FDqTSQjm8L`hWg;(`PgtZsQ|x++9ZTYV|_7|1^Q# z9_#be0YL$5zbEvSI_+TmKUvRzem~tz-zW4=&jJar_xE(r`!!yD#avS znZ8Cv@kQaQoO5qT@J|4=$~q;!1-@^6ixTiEsA&>{Qs(r@RmJH|8m7Y zlmGkg&i9el3;IYdJ&h^+m6Qwd?$hR}u^t4_bVC0(U8YSF@bvYs*9hlzLf?z3Lu@>d z^WwQO<2IV#W4-%or!iu79&`sb$bM$)6QTFS*J|Z7Kf(4CK_9_=^>K~eZf5I0p?_7p zvX$odKzcf1C$5i|X*N z2eU)N?tiQx^VBf^7xYi%|Npo2uQ{_Jd7wJ^+xKxfM#dwp@8#Xn`MADd{W-DznH;eg z(QB^v2k5WEbdRGL`W6v5??h7!{oWhs@3DS|W`@Zmtk+5)6W0@Tlzm+4fdA(oZ1{y(m9g)Yoq)}MVEqVI2H=@&Ht zzrumP!Vjyty+Z!unulUJgMcp*Y_vO+_fV|CDCnCXC*>RaSh@-N#T-}RfP0{;Vbs(5 zo76pWgVD~`^R_DK{3%oBvh^~pu~G{^R53LFOL>bTjK*%Z{#?>FDT3$Do%3)}pQ zlR_Dl#?kzjcN-PtI70C=dAT>>_i>+mLwe4QxI*I(eSf};zTXq$GG8ec?rVC8K0ha5 zqL1x}*QkMwg8qM`x@(rwXlC_E#`#2Pv@@KqxiNpG7UkpP^!t(OG4op;%ClrNDg3LZ zjiu=?=Cx>-EEn!CTA=?K-f)23r(S~o(%j(Ss)EDs#h*SnLjRkA|MU16#IH`dkGKNZ zy0xf?w#TP_X-;Ef^RpD!G`q!4o9i=y;^;=7dU=w-5Bb!$RV8$vVf<8E)lQS4Yuipz@RGWz<|e^t1zG*-oQV|AF3s0+TpC+X5n@csrI`|F`oTiCSk7!<<7H-!E7ofR zqmP%aiRjibyd(!0?tSU|OLGw8HK2=~N7vzgIm>R-(R6aZ+%wpHiDFOaHyDle?EABH z71|*_inWi>e`7-Md79q~`faJL6`xRS$w-R$&VKD0|24;jb7Oo@Xp`hkEe}29eCK=a zu%8-U|3}~Q&y)ZA4$lqxb%DRfpNAh`{LkYVK|=aHTM7N2ynS}*jr5Oh^wQzF`d<15 z95%(Kr|H=IzP&>pp)@(jI~sH4{pkiaKZ{IBa?bq?M&BY+Z;SyZ>$E(~er@}3oknVu zX^B+pRX!4$zN`6IjIvyqPxBfr+J1-p6YIwp6JZz4KT!8&p~@iO>Z&ywy+is=6ZWGn zA^rA_AhqrLeWCRInK>=mwCr3aAFyQf#*78&XnJ*3lY-YHI{oz?RF*E1tFUKM99;VC zL>|EsC|;7&t5CsSB8gx0>Jy6!NBso)KlG4BgDMR_B;U<&{=1D^^uix;KTYi2CXn^- z-(ae8ix)Sq-jV_GAExag=ULomGx-j}*nuAq?)Ty>(T!0FS!}&0`fw%OcsAeKs>&6T zR}&4iJaS)ZMD%xxZ|^|*o#)aiu4%)1>@Z$7HE&Gi5{3SrSfBP}2?hYoKTwqxZ*aiX zRZ;QWG$FmnWXV8zi8TMIwm^00I~T4|?4^s;;C#>cw}CpNqC+Cw?^IVM6WX!&m8BTp z+*mfAm8GBE8=iRLRazeGV-#`G2~qCde7_1Fj+D^5SkP{!~>^4$#dr}gp0FJyg) zD7n_c4;Apr(r5DS3wr0@XnPQEM2q7-JMTSKFO8VeA?yc3=iWtsh*^L5AgYVVHAJ9K z-Rx3>!+bi`maKX1*=P6D@@Hc`2p_Hk{=>7Ytw}MhJ&W-Jo0?(YD>gCyJGv44KbOna zd!PD1V1fUyu380oO;#%{Kh^ZSJna>ekzzPnR+p3s`h?MqYcvy_1$xhGEHbUsWwG^N zS^AXU+6G}f5&DZcLpUujxOB|?UoP0#3L6;Pt7ty|_?Y@|0^r&V*CQZgL;*ozJGbQMGJFG_WqZJJuxZ={9>M4 zY^wua2mbAO2fP&fy`iD2ivhc* z`wuBr60z0sK9`*L9QA{U{x=`o-$C2ktW8$eRCt&vCiUN+ta>YnmTyd>DCDodLb(1bS7{L0c*5#dYP9O%6$ z!g2gYs(Tg2dMj)HVs($gyl4L0@}D8^el*wvwlVYFM4V^Y5rmQ4-05Vdi4FmB{_CpxX&Z>KcN%!H!kmneW5vw z(I?*0R;7y*G+O@b(uEO;=lZdrkCeX#`dgc~m9hO}4eWzAn)pnb4r?)m zy}LY@VnYA0xuJ7)Z<63VnI|vdbVKIPNNG1O{g)?=+z0-9`X}FD4?^sJ3Ni-ok8)k(nS$2?ZWt&js27pSK$vMJ$89F zFvqd|{L4Z&?Drg_4_W_#S^lLti@=Wv=S44_G@_v-f${gtP`*Kr;;xrZ{1bfO!m;&$ z(6^h{GkO#I@0k7#ti6$Hw@2+Y_3Zn=v8jhHv+rN0|BNNc2t5Y+pZJZ?|FI-o24V<& zwfk4|-*n^r_tF^^#zDIe?Y~r$QO-N~>-e$|=Owik3v>5mfa6k zK%f3n_J^r79sU4fOQz;NB4D@JXmKuEer`?2mUM!!I{QSO^Pwut6OWTsdgk6bBUhw%p7Kyd}^Pa)r6{1TzR zWX_xg3l~3^c@p}52Yw^;e|mLeioMxl`*-xOT64qvkGB}*2r)j5w*S<*eC)4@;S_Ib z9;i!*ImP5719i6+r*VS)Mm6m5&NT@0e_c*b48$c?`u?uwK=ki4cHTzB?pP%phS2mj z@E1xk$L?FJtBi7`K`3vhiO3@aO!V1!+b<{R`!zWKDV0SNDE6s`qkXY2lmAp#eOYMY zeA)MQnv|twozJlSA=NayxWrg-ioQR)c;Bpwx8Hu7;>GGFMOawa+`mS``13b3|GCv8 z`au7F{l9VkzhUW71P4!G^JC~-P%PA=*nHU4e6Y~4WZqiZ9|Ltua||&%loUfgSXi=m zGe@zqbXY%*$xDaM5q)amzF|}It)&KoaNcUG+8*KIx_JwIf2RrZLbr}cic?LMm~o>S zze)JF6DO`ResB}U7sjtM%|ExXYgT7xxC8wy+LDvM{6f=}r9tZOr0;*Ec&F*|?s5nD zG`a72`@24to(z64cal8B?4*V1k z)LFD=IgXtdAg_z@RHLkRZGdX|a6sprBt&*8jQS|3LrY`~G~K{~i5nk$T*W{QrMW{|chd7ESxF zLIe4_;VQd7C;H8XF-F$kJ2Xl15(j>b*zcbe3-<$LzpoqmnaSS>wtP{`_TPMzpH$|{ z=nHE;d25$(D*ZmNqE$JS@oSJK%8P6+Y(I!pA5-vSecAd#_;V8{t)cIe{r{OghuQZc zv0i7Db=qlqU~IWUX%OrI0%LRK{GuaFAE(+ zF_Fiq95CeZ^8SPdmfo!WLQ!A#=36xXyhgJBD_Qvibv-dkWdO@xU6mv!-ur0&A`|TU z9Wdr6@~5-(Wu?;jJa1$Cg-<=`1^-s`{ee2%Uz@lC6qEI%-=V&#(0{f$U?uLah%lGt zC-T3GKfKNMFS7rK&Ye5M#Silz`~OMYug3h!|HD6%{-hp)_U}l&{#W?Xk^P^Pw|{>b zn_tyc%{Rz@;w~IhOq&+W`tMX*Pt1WAmKbP%_|z{}b8EkShT>(ghZ|G)AuBJ{^h}PU zK1q>j*nbMsCp&d6kl0hP{W%(O6&k{Y@q+sVxl8tDcAmujl7c(Z-AKQe3Vv-~&cMqQ zD@%=v6EJX~cvJJk>IsNRNbx+}U(MUSdNsue(;Lf`ovEi-3I86PbSGOMhVj_Zx6t&j z3jGnayN{iJlhx&lIiX>5oo*fB|46>rSXT#qe=`3ufUZA09{M}^`LDwAM@P>8JU=Uk z=&RFORsU-KU#&CBeWC>UUJc~+25}YJALlhT#dJE{$NJRwz$2b;Kih`=mE*ctenS6c z@DEA9_gZrx^y4Nlys7zMo*|rL=S3gfPetDEI3D0HX79+jC;gX-`$qgoq~#HNX6r8q z1AV=h3IFFDEPRjLSG>xNW#4P73RHjSP~RflAIco;S5qM$bWMz6`71Oo^EdAm^cRQM z|KPd7zu4ZJd>U82JfET=_93KhlA`WKmo_1W3}4|`Yz{H2_u z{R!`1iZn#S{9jEQ&f7(f>nHY8j_aiDC;PMGc|7%3=kZkNPxAd~jQ$ny*RcOVZ4A|`YH7N zBBH;hM4*D}>%%a1xZht^3jMUj{{Mo0GxT@z#r%g!2%&#k+FBj$kIV1};duX7f%9%U!aveFewt0G*<@VHJta$e)&h4Di4 zj~(?lFYj(rq~U-^^OO3$6(!hnVSkr*I>?9JaK2Y6eI54yMG;xN;GdYJw+@WmM$2=< z{l3yvd&m)IA5pXW&=j)%2L~^ByBd>!c>iBK>>p-i_aOa5-yHeNO@r+Xp4J9WoMV^f zIIjO+Vtsb>2R9FqiKCRk?EFOJc}l%N|KamEE@)^gmE?Th+QsmnN|UfZwBB`dg3RgPF=f@XI=U+K_;si}6^61tH6WDm#3I370B=EP(O3D3! zpzm{eH`(t;kE8F8FaBzGeNFj?0$zmuU$`%z^xyh27XM*=|KG;^@9AaqF9i7==#TlI z_{=l3y&)HH|2LtCt*^V9cW9QBaIQ3cS94VrWQ1%zZ>w6ZmW&bRPkYs}Qe{*qUgvQpgta89f~vsn z!wkU4dJFjkav9nBT(r|LgBC`R9zxf5-LzGS>fR)(Z58zC^@YgFw$UIA2Y0Sl=OU z!}(mPr~Q#Syg#?LQv6ch@c!IEF_FJJDKi-VMAp+Oda&Qu_j@9r<4nSSj{85%e*qKy z1DFFa`V;*vgTws{k>|S{Q8Ios5b+!mYxb7V@@MJ5Ul4K5_3youw<=<|`0LnPmn-ii z#b3ug3dk4U;Koqg8`C7e)Scc#apm>(U;Y&4KUhGXpZ=TJ{~KBmC2^Skmv>|RXZz<@ zg}5)lL)%C8>%;f)Y`zk#(_4}q(|_*R*iSLJZ#mj@>Q0J@eoab7JCm0X{h7bp53~Fv z{c_Akboj`8CHFVA7cF`LHz}fq-oidLl1}z_+u>YaM_k{0^=FF7`yITcm|{2NuV}6b zb;LE(yYF$tz7Ks{;D|l)4{mhCeHK?X-w8iiF*vB9=?93tAD%g3IR71t1pR|ze+%>f z)sJ8gIwuAFI==HCiFgato;s(N%{`n z@)X77zHDREU)X(lAnwb5t}#2%%Psa&>P8jKPu2%}-)-k9CiEK`c*_CzDD<0tWaELP z8>VA8T^}F4F~{T;#=gB2lk|@ccc(hyf!7Pn3_seWh`)FobQ>98y^1D9*TCUsipl$b zs7ZAg59RWj(|i^`IGo?N0P?J$1wrl;W_&RDG(dj7(BHdiLy83uNRgY5qFmP&Y=3@fxRg{}? zoVwoML71;ygZ3#D6Z%^Y53&9aME{rNhO+ra^zC2OrL%N$KC^FMz}6=>&@+R-!01cf zf2CuHeUH$S|1pzcLhsYJJPGUF=yZ+!q*IPRBhnoe5U$+M$wR`nsboBgJ`2zl2%7yAG zDA)PExs}#Bx)Jeq;+|ps+l>2t9LL#yLFV&)_X+->$@*)k>G+hsPx@c%JDBB&$8>iv z`B^^n_flI`6KFc2Pl0&wD8=MHVT!7QeV?Rzc7?J1mtf1imFzr1=(+#w;M4SdvR+@U zuVnXiJ&JP0)X$E*Pt&2zt(ay0;X@?T=W;}H=?gBHqCjQ*ehlYz&^NDsm%V8ujHFkzFm*@ zL0r$|^)1>a`5>?Aq^%OH+1G z9EkU&RxG#I-zVii?eIR4&q&P!H8dUCI&wpaAP?+~G0JCj;B(jCA5PCc$M^+;L*E}_ z{2VE7kdLpV`3csmQm0p8MBo{{bl6_KNH+T-f9LQRj7fb* z@t(7X)A2pj_m*zn>E!VDfDN$lvs_a*jNsw+P5aPq^+`iUZ5qEj zu;s&em~$X`uBR(+y&eXY;(3|i0jhTdkA$V>qF#P`7~?vFxFO+`y0-`}_Tc#uH8;qk+9Uu3JVMG{oB<& zq%2(XDbBQA8KCW{MA%7XltoN&1;RRRbhx%A7-6K@F_452RCbrJ{#c_40v4{h*Fa3d zcMJI=)oyAYY$q)rIF=tO|s}Qa!Nfm{{mbgt3T?iHWB5c`9!9s*xELqOh z!*zMvAhB)Aq6)-z8X!uH_YPv7s;{u&SGXX!24ZUxsG#pqq3SqZl;?W{lM zH72XITJ4H?&mv|b!shWj%(UQ^>>q9aSNwyIPfIv|cd^Bi;drevyVOf}1`n-&KlVnZcpHqDuLFYn6)_e$HQ=I zjOMfUPuCqMZo8Sc=0iI}&F7l(#nVeB}SA{l56D z!?qb(&1El>+gfO2E!)^DRIkRWe`cK#8sa*qH11KhLx%+rK z6N}G)+wGKrfexDPzTRVX8T7aX47cm)`YehsYMM1Lp7nex!rsfvyGm0fk z_8un0w?f?iKchcwFS=p)@x}k7KR)Y$S=)8DCYvFKrQh?Z_tvd_=J5w8Cj0vbAJk&q z9eLklePFD3Y&qj^Jl3zi!OhfvfMX3MM#z~*-oL0>4gTK|KYRmzuh8`&-W)c8=HG?( zBdYH5RXb_>p{D#lnE$lBBVQNX{OM{&+MfzBHMxeQ-y>#rTSOv;+n|=KyejPHP^(Zl z^7rGR_Nr6~=|pXd%r;scQJZkgf3Pr#V7A`Bl$V6_f`MUjZ4x{~cz-F}0CXiKrE{_R zOFm&gdE(kM=AY62JCjD*Kfd@zw-#xQy)mBq+9kC9#I2>#Sd~U`k?G6Ak|WWKAC7Je zRCn`NoM`&I#vK|Salt4iZU^D@g5jMoo8b9Zd};d3oC@vW;D<>RD^1}4`3~0q%2K!u zRBcSFy=1=bCLY%cQ>ILz^mLrt0`cd)SQHTZ$ zi(HO>qc|`E?Faq89B#ire`40@*#2g?b=r`c#I8w+*@kUVvOT~Ckj1$Tu=im3iEz$lX?SG@@aLxW^sLft?lk9^BWez_= z&i@$u;?ItGC=LpqL)2O?5Vt18?3R9yxGA%qx#JFsLoVcNl&UhukF~*Vol@C}GDp5g z=m++Kt=B&FB;Dpq(_xkbtY`VZEPNPPIbKMInzVB47>ZL%fip>+N6JT-AVtUN6DQt! z2R1{)Y9k!?&uIVu*WT3!MRi^Ar$~w)tD6bCn`!;nj!DM&73*M1Vlxn?Rb$lXW?ol; zE*m#>h#L@#k{}y)jZ{!6S_h0;lx-R+t}arhkTe<8NoS-}rkLt1OF{~a(TIx*j%7gD z<@I;oU-22|W=broS$NBgj;n~EgSMiTvJ+%B&7{>JJt}tt#!fuL+ z#&db)Hp3D7lnS#;upA~+881iLi{b;V1N?kc=I_lDUYN_*PugFM#`k!Af^8{2t->~m zmED$@$>(|b8MqOA*47cI_ygSL>d0+oZ1`XNEV;FA`ReX{{D0i?M$&Np@tKVOLGUMv z>iGrh7ib%o&q0JiXys2~!k~FM&2P{i_C9^Ve43%y$@#CN5tJ+pW&2;_HQo`7b1RZLI#q zyqlKRwvM2yP=(1hMMXs^U&rWgoBp5nTYnI3eggbs{gb52rP?r-T)(5B%5A{NLgn3%3EiSxNIDNwuX~H~#nwo0DeFJkI6+mzG7Y({FZh z`EU1UI)wTd59{B@7#{-`07kFJ{{PY8RxhI!xA~czpB8){hm1zt;}rhN{LR^qY&$)Q zf8i5fIx7e4vZb~CU%}U%bu-#(7J&au$5`+`PMQ>6Ah+R)_bLvr*}(R{HDkhm-%!0{DPX>3{sBYF`a|;{SsvRN9S>M$&l52MqbcoI z=;RIFf57@U%9fZ6tejwBedXnc87)?BEynV~=Lhk3C^pu}%D4M}wi=7SjfNgcD>^hng4&6gMH3_E!@yu;V|F-)}j3;AwAZg zby&Z%Fd-OCVPx}m?B(aT`nqll+}wFNg$=?@oYN%#jr&v>I)Y7_j8gW#Or(WQ?bFa$ zUrYvrX~shEFMt2H#)SW@Hj@7vkbmqkE&sH>*=)(s(JS+p+&Hg<=HfeH^pupLrS2R? zliTL??QRW!-Ilk{Px7*Ia=V*4SXIO5zbD_syCWTprgCY>oyKT#%bPZI@$8=va0WZU ztUGy4mH_hRL>V#vYckp-sc9vp)lz!%@az5k_4OLJB@b}Q=3k5K4=>A{O|bW#qTm0T z^``{m5A{YWqvxZ)LP$*`L;W{DQ>fv;$uc`s&S`RE6ND?^Md<<2dwoN1Y3Zs^Mo_vb zmz&REy~lJ}V&4yp@DsW=avMAI%*#Jl`yW?17V}^GK0AmgJ|1zEWuTKv(l;w^O?ugl z%2V*PeZ~9HA#}8eKkabbYOx72cn>>rGZJyGc#VpZMCy^Th#_vmZ&y zZ61AonSP!7%%Kv^5>}Uf|DRUI!z?5sx{i;`H;0Aryaj7CH*2pg0KM5F)0c3~o=4X< zQNNbVq}+_nB|~CCxdH#lKi_=+e;3P?j{4W;NUX+HSHvuw|A;lx>F$yCB#+gQjqM8JBYIOSRa&jeB!$Y(Ehy+sm!l;ZQ8VK8EgL) zpz&(W3ZzDd8i5}JNsVr^<-1vZ$_BPRE6WZ=@trj3?z!!LG82A#`{t1`NZ*CVkfuMxOrBqO?U{Budj zCLo(dRy)cbF#fDRp8bmaCFx@Jmzc0>ds9-p9&wP-q~_YWC&1_XV?a0Y)>t`BXbR&! z;;A`HV3vSo?qSU`Tk{$JquU3%R*F}6hrj<2=so-DI30`jduwc*Cbi1@?~CHJ+3xT~ zng53~i%zKhx+j8T9_=_A7AoV`CJi_R==~OR$}RAn3JOkN4GQL}BqGYq|jK>yy{vUE{`XNOZI) z#(j?ZHKc9EX;+x2ODKi63>-!zsl=((7OaK!!rK0JCmW{f>@^N)Fw`|IQ}xz}Mpipt zBYVC(xwp5skJX>*+OyJ!<1C|f+g?sdOHWTfSX~(T0yw!ettctpZ_g`9Dal%+)mA=s zY;wx2hzcTcxzvxO-Qqy*DS&LsNmT**^1bNj)!TD25ybY@{o2m>v(?#iy8HNTH?A_n z5%X!@iKkPPBn^_ZMo!B5(i%lu@)LN&RYG0H`deRD;*4*Pw=()}`D#b;iK4z4a}fmXcsFgT~Atc@gcphagkAK0tGDT#ga+-RhG`Sf5zNO&-7C&l gMB2{9LVDKWvjdM8h8x}C!U?sdfQ+_p9=YrM2ah^=4FCWD literal 0 HcmV?d00001 diff --git a/addons/explosives/ExplosivesUI.hpp b/addons/explosives/ExplosivesUI.hpp index c6c76e573c..769b3dc167 100644 --- a/addons/explosives/ExplosivesUI.hpp +++ b/addons/explosives/ExplosivesUI.hpp @@ -4,16 +4,49 @@ #define GUI_GRID_H (0.04) #define ST_CENTER 0x02 +#define X_OFFSET 0.25 class RscText; class RscButton; - -#define X_OFFSET 0.25 - class RscXSliderH; class IGUIBack; +class RscPicture; +class RscEdit; -class Rsc_ACE_Timer_Slider:RscXSliderH{ +class Rsc_ACE_CallScreen_Edit:RscEdit { + canModify = 1; + colorBackground[] = {0,0,0,1}; + colorText[] = {0,0,0,1}; + colorDisabled[] = {1,1,1,0.25}; + colorSelection[] = { + "(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 + }; + text = ""; + style = "0x00 + 0x40 + 0x200"; + shadow = 1; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) * 1)"; + x = 0.288594 * safezoneW + safezoneX; + w = 0.0825 * safezoneW; + h = 0.044 * safezoneH; +}; +class Rsc_ACE_HiddenButton:RscButton { + colorText[] = {0, 0, 0, 0}; + colorDisabled[] = {0, 0, 0, 0}; + colorBackground[] = {0, 0, 0, 0}; + colorBackgroundDisabled[] = {0, 0, 0, 0}; + colorBackgroundActive[] = {0, 0, 0, 0}; + colorFocused[] = {0, 0, 0, 0}; + colorShadow[] = {0, 0, 0, 0}; + colorBorder[] = {0, 0, 0, 0}; + w = 0.095589; + h = 0.039216; + shadow = 0; +}; + +class Rsc_ACE_Timer_Slider:RscXSliderH { x = 0.4; y = 0.2; w = 0.3; @@ -21,8 +54,7 @@ class Rsc_ACE_Timer_Slider:RscXSliderH{ colorBackground[] = {0,0,0,0.5}; }; -class RscACE_SelectTimeUI -{ +class RscACE_SelectTimeUI { idd = 8854; movingEnable = 0; class controls { @@ -72,3 +104,185 @@ class RscACE_SelectTimeUI }; }; }; + +class Rsc_ACE_NumKeyButton: Rsc_ACE_HiddenButton{}; +class Rsc_ACE_PhoneInterface { + idd = 8855; + movingEnable = 1; + onLoad = QUOTE(GVAR(IED_CurrentSpeedDial) = -1); + class controls { + class RscPicture_1200: RscPicture { + idc = 1200; + text = PATHTOF(Data\UI\Cellphone_Background.paa); + x = 0.231875 * safezoneW + safezoneX; + y = 0.104 * safezoneH + safezoneY; + w = 0.195937 * safezoneW; + h = 0.704 * safezoneH; + }; + class numkey_1: Rsc_ACE_NumKeyButton { + idc = 1600; + x = 0.278281 * safezoneW + safezoneX; + y = 0.533 * safezoneH + safezoneY; + w = 0.0309375 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "1"; + action = "ctrlSetText [1400,((ctrlText 1400) + '1')];"; + }; + class numkey_2: Rsc_ACE_NumKeyButton { + idc = 1601; + x = 0.314375 * safezoneW + safezoneX; + y = 0.533 * safezoneH + safezoneY; + w = 0.0309375 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "2"; + action = "ctrlSetText [1400,((ctrlText 1400) + '2')];"; + }; + class numkey_3: Rsc_ACE_NumKeyButton { + idc = 1602; + x = 0.350469 * safezoneW + safezoneX; + y = 0.533 * safezoneH + safezoneY; + w = 0.0309375 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "3"; + action = "ctrlSetText [1400,((ctrlText 1400) + '3')];"; + }; + class numkey_4: Rsc_ACE_NumKeyButton { + idc = 1603; + x = 0.278281 * safezoneW + safezoneX; + y = 0.577 * safezoneH + safezoneY; + w = 0.0309375 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "4"; + action = "ctrlSetText [1400,((ctrlText 1400) + '4')];"; + }; + class numkey_5: Rsc_ACE_NumKeyButton { + idc = 1604; + x = 0.314375 * safezoneW + safezoneX; + y = 0.577 * safezoneH + safezoneY; + w = 0.0309375 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "5"; + action = "ctrlSetText [1400,((ctrlText 1400) + '5')];"; + }; + class numkey_6: Rsc_ACE_NumKeyButton { + idc = 1605; + x = 0.350469 * safezoneW + safezoneX; + y = 0.577 * safezoneH + safezoneY; + w = 0.0309375 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "6"; + action = "ctrlSetText [1400,((ctrlText 1400) + '6')];"; + }; + class numkey_7: Rsc_ACE_NumKeyButton { + idc = 1606; + x = 0.278281 * safezoneW + safezoneX; + y = 0.621 * safezoneH + safezoneY; + w = 0.0309375 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "7"; + action = "ctrlSetText [1400,((ctrlText 1400) + '7')];"; + }; + class numkey_8: Rsc_ACE_NumKeyButton { + idc = 1607; + x = 0.314375 * safezoneW + safezoneX; + y = 0.621 * safezoneH + safezoneY; + w = 0.0309375 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "8"; + action = "ctrlSetText [1400,((ctrlText 1400) + '8')];"; + }; + class numkey_9: Rsc_ACE_NumKeyButton { + idc = 1608; + x = 0.350469 * safezoneW + safezoneX; + y = 0.621 * safezoneH + safezoneY; + w = 0.0309375 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "9"; + action = "ctrlSetText [1400,((ctrlText 1400) + '9')];"; + }; + class numkey_0: Rsc_ACE_NumKeyButton { + idc = 1609; + x = 0.314375 * safezoneW + safezoneX; + y = 0.676 * safezoneH + safezoneY; + w = 0.0309375 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "0"; + action = "ctrlSetText [1400,((ctrlText 1400) + '0')];"; + }; + class speedDialAdd: Rsc_ACE_NumKeyButton { + idc = 1610; + x = 0.278281 * safezoneW + safezoneX; + y = 0.676 * safezoneH + safezoneY; + w = 0.0309375 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "$STR_ACE_Explosives_Phone_AddToSpeedDial"; + action = QUOTE([ARR_2(ctrlText 1401,ctrlText 1400)] call FUNC(addToSpeedDial);); + }; + class clear: Rsc_ACE_HiddenButton { + idc = 1610; + x = 0.278281 * safezoneW + safezoneX; + y = 0.445 * safezoneH + safezoneY; + w = 0.020625 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "$STR_ACE_Explosives_Clear"; + action = QUOTE(ctrlSetText [ARR_2(1400,'')];[ctrlText 1401] call FUNC(removeFromSpeedDial);ctrlSetText [ARR_2(1401,'')];); + }; + class dial: Rsc_ACE_HiddenButton { + idc = 1611; + x = 0.309219 * safezoneW + safezoneX; + y = 0.445 * safezoneH + safezoneY; + w = 0.04125 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "$STR_ACE_Explosives_Phone_Dial"; + action = QUOTE([ARR_2(ace_player,ctrlText 1400)] call FUNC(dialPhone);); + }; + class up: Rsc_ACE_HiddenButton { + idc = 1612; + x = 0.360781 * safezoneW + safezoneX; + y = 0.445 * safezoneH + safezoneY; + w = 0.020625 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "$STR_ACE_Explosives_Phone_Up"; + action = QUOTE([true] call FUNC(setSpeedDial)); + }; + class down: Rsc_ACE_HiddenButton { + idc = 1613; + x = 0.345312 * safezoneW + safezoneX; + y = 0.485 * safezoneH + safezoneY; + w = 0.020625 * safezoneW; + h = 0.033 * safezoneH; + tooltip = "$STR_ACE_Explosives_Phone_Down"; + action = QUOTE([false] call FUNC(setSpeedDial)); + }; + class speedDial_Text: RscText { + idc = 1405; + y = 0.302 * safezoneH + safezoneY; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 22) * 1)"; + x = 0.288594 * safezoneW + safezoneX; + w = 0.0825 * safezoneW; + h = 0.044 * safezoneH; + text = "Name"; + }; + class speedDial_edit: Rsc_ACE_CallScreen_Edit { + idc = 1401; + y = 0.302 * safezoneH + safezoneY; + x = 0.318 * safezoneW + safezoneX; + w = 0.1; + }; + class numberEdit_Text: RscText { + idc = 1406; + y = 0.348 * safezoneH + safezoneY; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 22) * 1)"; + x = 0.288594 * safezoneW + safezoneX; + w = 0.0825 * safezoneW; + h = 0.044 * safezoneH; + text = "#"; + }; + class number_edit: Rsc_ACE_CallScreen_Edit { + canModify = 0; + idc = 1400; + y = 0.348 * safezoneH + safezoneY; + x = 0.3 * safezoneW + safezoneX; + }; + }; +}; diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index 2ede878a37..e3b40308c3 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -18,6 +18,7 @@ if !(hasInterface) exitWith {}; GVAR(PlacedCount) = 0; GVAR(Setup) = objNull; GVAR(pfeh_running) = false; +GVAR(CurrentSpeedDial) = 0; [{(_this select 0) call FUNC(handleScrollWheel);}] call EFUNC(Common,addScrollWheelEventHandler); player addEventHandler ["Killed", { diff --git a/addons/explosives/XEH_preInit.sqf b/addons/explosives/XEH_preInit.sqf index 801ded6615..d8f8dc1216 100644 --- a/addons/explosives/XEH_preInit.sqf +++ b/addons/explosives/XEH_preInit.sqf @@ -17,11 +17,14 @@ ADDON = false; +PREP(addCellphoneIED); PREP(addClacker); +PREP(addToSpeedDial); PREP(canDefuse); PREP(canDetonate); PREP(defuseExplosive); PREP(detonateExplosive); +PREP(dialPhone); PREP(handleScrollWheel); @@ -30,6 +33,7 @@ PREP(hasPlacedExplosives); PREP(getDetonators); PREP(getPlacedExplosives); +PREP(getSpeedDialExplosive); PREP(openDetonateUI); PREP(openPlaceUI); @@ -41,10 +45,12 @@ PREP(place_Approve); PREP(place_Cancel); PREP(placeExplosive); +PREP(removeFromSpeedDial); PREP(selectTrigger); PREP(setupExplosive); PREP(setPosition); +PREP(setSpeedDial); PREP(startDefuse); PREP(startTimer); PREP(triggerType); diff --git a/addons/explosives/functions/fnc_addCellphoneIED.sqf b/addons/explosives/functions/fnc_addCellphoneIED.sqf new file mode 100644 index 0000000000..0678f56f6b --- /dev/null +++ b/addons/explosives/functions/fnc_addCellphoneIED.sqf @@ -0,0 +1,47 @@ +/* + * Author: Garth 'L-H' de Wet + * Adds an IED to the cellphone list + * + * Arguments: + * 0: Unit + * 1: Explosive + * 2: Magazine classname + * 3: Extra variables + * + * Return Value: + * None + * + * Example: + * Handled by PlaceExplosive. + * + * Public: No + */ +#include "script_component.hpp" +EXPLODE_4_PVT(_this,_unit,_explosive,_magazineClass,_extra); +// Config is the last item in the list of passed in items. +_config = (_this select 3) select (count (_this select 3) - 1); + +_requiredItems = getArray(_config >> "requires"); +_hasRequired = true; +_detonators = [_unit] call FUNC(getDetonators); +{ + if !(_x in _detonators) exitWith{ + _hasRequired = false; + }; +} count _requiredItems; +private ["_code", "_count"]; +_code = str(round (random 9999)); +_count = 4 - count (toArray _code); +while {_count > 0} do { + _code = "0" + _code; + _count = _count - 1; +}; +if (isNil QGVAR(CellphoneIEDs)) then { + GVAR(CellphoneIEDs) = []; +}; +_count = GVAR(CellphoneIEDs) pushBack [_explosive,_code]; +_count = _count + 1; +publicVariable QGVAR(CellphoneIEDs); +_unit sideChat format ["IED %1 code: %2", _count,_code]; +if !(_hasRequired) exitWith {}; +[format ["IED %1", _count],_code] call FUNC(addToSpeedDial); diff --git a/addons/explosives/functions/fnc_addToSpeedDial.sqf b/addons/explosives/functions/fnc_addToSpeedDial.sqf new file mode 100644 index 0000000000..142996e4c3 --- /dev/null +++ b/addons/explosives/functions/fnc_addToSpeedDial.sqf @@ -0,0 +1,37 @@ +/* + * Author: Garth 'L-H' de Wet + * Sets the speed dial for the UI. + * + * Arguments: + * 0: Name of speed dial + * 1: Code to add to speed dial + * + * Return Value: + * None + * + * Example: + * ["My Speed Dial","2131"] call ACE_explosives_fnc_addToSpeedDial; + * + * Public: Yes + */ +#include "script_component.hpp" +private ["_speedDial", "_found"]; +_speedDial = ace_player getVariable [QGVAR(SpeedDial), []]; +_found = false; + +EXPLODE_2_PVT(_this,_name,_code); + +if ((_code) == "") ExitWith { + [_name] call FUNC(removeFromSpeedDial); +}; +{ + if ((_x select 0) == _name) exitWith { + _speedDial set [_foreachindex, _this]; + _found = true; + }; +} foreach _speedDial; +if (!_found) then { + _speedDial pushBack _this; +}; + +ace_player setVariable [QGVAR(SpeedDial), _speedDial]; diff --git a/addons/explosives/functions/fnc_dialPhone.sqf b/addons/explosives/functions/fnc_dialPhone.sqf new file mode 100644 index 0000000000..3bb2cc45e8 --- /dev/null +++ b/addons/explosives/functions/fnc_dialPhone.sqf @@ -0,0 +1,68 @@ +/* + * Author: Garth 'L-H' de Wet + * Dials the number passed and detonates the explosive. + * + * Arguments: + * 0: Unit to do dialing + * 1: Code to dial + * + * Return Value: + * None + * + * Example: + * [ace_player,"2131"] call ACE_explosives_fnc_dialPhone; + * + * Public: Yes + */ +#include "script_component.hpp" +private ["_arr", "_ran", "_i","_speedDial"]; +EXPLODE_2_PVT(_this,_unit,_code); +if (_unit getVariable [QGVAR(Dialing),false]) exitWith {}; +if !(alive _unit) exitWith {}; +_unit setVariable [QGVAR(Dialing), true, true]; + +_ran = (ceil(random 8)) + 1; +_arr = []; +for [{_i=0}, {_i<_ran}, {_i=_i+1}] do { + _arr = _arr + ['.','..','...','']; +}; +if (_unit == ace_player) then { + ctrlSetText [1400,"Calling"]; + [{ + EXPLODE_4_PVT(_this select 0,_unit,_i,_arr,_code); + if ((_i mod 4) == 0) then { + playSound3D [QUOTE(PATHTOF_R(Data\Audio\DialTone.wss)), objNull, false, (_unit ModelToWorld [0,0.2,2]), 15,1,2.5]; + }; + ctrlSetText [1400,format["Calling%1",_arr select (_i - 4)]]; + if (_i >= (count _arr + 2)) then { + [_this select 1] call CALLSTACK(cba_fnc_removePerFrameHandler); + private "_explosive"; + _explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); + if (!isNull (_explosive)) then { + [_unit, -1, [_explosive, 1]] call FUNC(detonateExplosive); + }; + _unit setVariable [QGVAR(Dialing), false, true]; + if (_unit == ace_player) then { + ctrlSetText [1400,"Call Ended!"]; + }; + }; + if (_i == (count _arr)) then { + private "_explosive"; + _explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); + if (!isNull (_explosive)) then { + playSound3D [QUOTE(PATHTOF_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosATL _explosive,3.16228,1,75]; + }; + }; + (_this select 0) set [1, _i + 1]; + }, 0.25, [_unit,4,_arr,_code]] call CALLSTACK(CBA_fnc_addPerFrameHandler); +} else { + private ["_explosive"]; + _explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); + if (!isNull (_explosive)) then { + [{ + playSound3D [QUOTE(PATHTOF_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosATL (_this select 1),3.16228,1,75]; + (_this select 0) setVariable [QGVAR(Dialing), false, true]; + }, [_unit,_explosive], 0.25 * (count _arr - 4), 0] call EFUNC(common,waitAndExecute); + [_explosive,0.25 * (count _arr - 1)] call FUNC(startTimer); + }; +}; diff --git a/addons/explosives/functions/fnc_getSpeedDialExplosive.sqf b/addons/explosives/functions/fnc_getSpeedDialExplosive.sqf new file mode 100644 index 0000000000..f5b3172c46 --- /dev/null +++ b/addons/explosives/functions/fnc_getSpeedDialExplosive.sqf @@ -0,0 +1,28 @@ +/* + * Author: Garth 'L-H' de Wet + * Gets the explosive object or objNull from the speed dial entry. + * + * Arguments: + * 0: Unit + * 1: Speed dial entry + * + * Return Value: + * Associated explosive (or ObjNull) + * + * Example: + * [ace_player, "2113"] call ace_explosives_fnc_getSpeedDialExplosive; + * + * Public: Yes + */ +#include "script_component.hpp" +EXPLODE_2_PVT(_this,_unit,_code); +private ["_explosive"]; +if (isNil QGVAR(CellphoneIEDs)) exitWith {objNull}; +_explosive = objNull; +{ + if ((_x select 1) == _code) exitWith { + _explosive = _x select 0; + }; + false +} count GVAR(CellphoneIEDs); +_explosive diff --git a/addons/explosives/functions/fnc_removeFromSpeedDial.sqf b/addons/explosives/functions/fnc_removeFromSpeedDial.sqf new file mode 100644 index 0000000000..c0a467e6f1 --- /dev/null +++ b/addons/explosives/functions/fnc_removeFromSpeedDial.sqf @@ -0,0 +1,26 @@ +/* + * Author: Garth 'L-H' de Wet + * Removes the specified speed dial from unit's speed dial. + * + * Arguments: + * 0: Speed dial name + * + * Return Value: + * None + * + * Example: + * ["IED 1"] call ACE_explosives_fnc_removeFromSpeedDial; + * + * Public: Yes + */ +#include "script_component.hpp" +private "_speedDial"; +_speedDial = ace_player getVariable [QGVAR(SpeedDial), []]; +if (count _speedDial == 0) exitWith {}; +{ + if ((_x select 0) == (_this select 0)) exitWith { + _speedDial set [_foreachIndex, "x"]; + _speedDial = _speedDial - ["x"]; + ace_player setVariable [QGVAR(SpeedDial),_speedDial]; + }; +} foreach _speedDial; diff --git a/addons/explosives/functions/fnc_setSpeedDial.sqf b/addons/explosives/functions/fnc_setSpeedDial.sqf new file mode 100644 index 0000000000..20a32a1224 --- /dev/null +++ b/addons/explosives/functions/fnc_setSpeedDial.sqf @@ -0,0 +1,28 @@ +/* + * Author: Garth 'L-H' de Wet + * Sets the speed dial for the UI. + * + * Arguments: + * 0: Whether to increase or decrease speed dial index + * + * Return Value: + * None + * + * Example: + * [true] call ACE_explosives_fnc_setSpeedDial; // increase + * [false] call ACE_explosives_fnc_setSpeedDial; // decrease + * + * Public: No + */ + #include "script_component.hpp" +private ["_speedDial", "_amount"]; +_speedDial = ace_player getVariable [QGVAR(SpeedDial), []]; +if (count _speedDial == 0) exitWith {}; +_amount = if((_this select 0))then{1}else{-1}; + +GVAR(CurrentSpeedDial) = GVAR(CurrentSpeedDial) + _amount; +GVAR(CurrentSpeedDial) = if(GVAR(CurrentSpeedDial) < 0)then{(count _speedDial)-1}else{GVAR(CurrentSpeedDial)}; +GVAR(CurrentSpeedDial) = if(GVAR(CurrentSpeedDial) >= (count _speedDial))then{0}else{GVAR(CurrentSpeedDial)}; + +ctrlSetText [1400,(_speedDial select GVAR(CurrentSpeedDial)) select 1]; +ctrlSetText [1401,(_speedDial select GVAR(CurrentSpeedDial)) select 0]; From 4d38e19f8cd7327c16c69c372e953a3e0419833a Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Wed, 4 Feb 2015 02:19:56 +0200 Subject: [PATCH 083/211] Should avoid potential conflicts of IED codes. --- .../explosives/functions/fnc_addCellphoneIED.sqf | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/addons/explosives/functions/fnc_addCellphoneIED.sqf b/addons/explosives/functions/fnc_addCellphoneIED.sqf index 0678f56f6b..b13473cf25 100644 --- a/addons/explosives/functions/fnc_addCellphoneIED.sqf +++ b/addons/explosives/functions/fnc_addCellphoneIED.sqf @@ -29,12 +29,16 @@ _detonators = [_unit] call FUNC(getDetonators); _hasRequired = false; }; } count _requiredItems; -private ["_code", "_count"]; -_code = str(round (random 9999)); -_count = 4 - count (toArray _code); -while {_count > 0} do { - _code = "0" + _code; - _count = _count - 1; +private ["_code", "_count", "_codeSet"]; +_codeSet = false; +while {!_codeSet} do { + _code = str(round (random 9999)); + _count = 4 - count (toArray _code); + while {_count > 0} do { + _code = "0" + _code; + _count = _count - 1; + }; + _codeSet = (isNull [objNull,_code] call FUNC(getSpeedDialExplosive)); }; if (isNil QGVAR(CellphoneIEDs)) then { GVAR(CellphoneIEDs) = []; From 49f0b79962b37bf554bba6d56c150387d4f755bb Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 4 Feb 2015 03:20:55 +0100 Subject: [PATCH 084/211] fcs for turrets --- addons/common/XEH_preInit.sqf | 1 + addons/common/functions/fnc_getGunner.sqf | 28 ++++++++++++++++ addons/fcs/CfgVehicles.hpp | 4 +-- addons/fcs/functions/fnc_adjustRange.sqf | 15 +++++---- addons/fcs/functions/fnc_canResetFCS.sqf | 3 +- addons/fcs/functions/fnc_canUseFCS.sqf | 3 +- addons/fcs/functions/fnc_firedEH.sqf | 36 ++++++++++++-------- addons/fcs/functions/fnc_keyDown.sqf | 6 ++-- addons/fcs/functions/fnc_keyUp.sqf | 26 ++++++++------- addons/fcs/functions/fnc_vehicleInit.sqf | 40 ++++++++++++----------- addons/fcs/initKeybinds.sqf | 8 ++--- 11 files changed, 108 insertions(+), 62 deletions(-) create mode 100644 addons/common/functions/fnc_getGunner.sqf diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 1bd305fa02..37ff2bab6c 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -48,6 +48,7 @@ PREP(getConfigGunner); PREP(getDefaultAnim); PREP(getDoorTurrets); PREP(getForceWalkStatus); +PREP(getGunner); PREP(getHitPoints); PREP(getHitPointsWithSelections); PREP(getInPosition); diff --git a/addons/common/functions/fnc_getGunner.sqf b/addons/common/functions/fnc_getGunner.sqf new file mode 100644 index 0000000000..2510c2ddc4 --- /dev/null +++ b/addons/common/functions/fnc_getGunner.sqf @@ -0,0 +1,28 @@ +/* + * Author: commy2 + * + * Get the gunner of a vehicle who uses the given weapon type. Requires every turret to have a different weapons. + * + * Argument: + * 0: The vehicle (Object) + * 1: weapon of the vehicle (String) + * + * Return value: + * The turret gunner with this weapon (Object) + */ + +private ["_vehicle", "_weapon"]; + +_vehicle = _this select 0; +_weapon = _this select 1; + +private "_gunner"; +_gunner = objNull; + +{ + if (_weapon in (_vehicle weaponsTurret _x)) exitWith { + _gunner = _vehicle turretUnit _x; + }; +} forEach allTurrets _vehicle; + +_gunner diff --git a/addons/fcs/CfgVehicles.hpp b/addons/fcs/CfgVehicles.hpp index 10e1f0797d..1e8e309b55 100644 --- a/addons/fcs/CfgVehicles.hpp +++ b/addons/fcs/CfgVehicles.hpp @@ -28,7 +28,7 @@ class CfgVehicles { displayName = $STR_ACE_FCS_ResetFCS; enableInside = 1; condition = QUOTE(call FUNC(canResetFCS)); - statement = QUOTE([vehicle _player] call FUNC(reset);); + statement = QUOTE([ARR_2(_vehicle,[_player] call DEFUNC(common,getTurretIndex))] call FUNC(reset);); showDisabled = 0; priority = 1; icon = ""; @@ -42,7 +42,7 @@ class CfgVehicles { displayName = $STR_ACE_FCS_ResetFCS; enableInside = 1; condition = QUOTE(call FUNC(canResetFCS)); - statement = QUOTE([vehicle _player] call FUNC(reset);); + statement = QUOTE([ARR_2(_vehicle,[_player] call DEFUNC(common,getTurretIndex))] call FUNC(reset);); showDisabled = 0; priority = 1; icon = ""; diff --git a/addons/fcs/functions/fnc_adjustRange.sqf b/addons/fcs/functions/fnc_adjustRange.sqf index 165ac63a11..4b7f4b6b88 100644 --- a/addons/fcs/functions/fnc_adjustRange.sqf +++ b/addons/fcs/functions/fnc_adjustRange.sqf @@ -13,17 +13,20 @@ #include "script_component.hpp" -private ["_vehicle", "_delta", "_min", "_max", "_distance"]; +private ["_vehicle", "_turret", "_delta", "_turretConfig", "_min", "_max", "_distance"]; _vehicle = _this select 0; -_delta = _this select 1; +_turret = _this select 1; +_delta = _this select 2; -_min = getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(MinDistance)); -_max = getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(MaxDistance)); -_distance = _vehicle getVariable [QGVAR(Distance), _min]; +_turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _turret] call EFUNC(common,getTurretConfigPath); + +_min = getNumber (_turretConfig >> QGVAR(MinDistance)); +_max = getNumber (_turretConfig >> QGVAR(MaxDistance)); +_distance = _vehicle getVariable [format ["%1_%2", QGVAR(Distance), _turret], _min]; _distance = _distance + _delta; _distance = _distance min _max; _distance = _distance max _min; -[_vehicle, 0, _distance] call FUNC(keyUp); +[_vehicle, _turret, _distance] call FUNC(keyUp); diff --git a/addons/fcs/functions/fnc_canResetFCS.sqf b/addons/fcs/functions/fnc_canResetFCS.sqf index 8ace62a0ef..81876b301b 100644 --- a/addons/fcs/functions/fnc_canResetFCS.sqf +++ b/addons/fcs/functions/fnc_canResetFCS.sqf @@ -12,5 +12,4 @@ #include "script_component.hpp" -ACE_player == gunner vehicle ACE_player -&& {count ((vehicle ACE_player) getVariable [QGVAR(Magazines), []]) > 1} +count ((vehicle ACE_player) getVariable [format ["%1_%2", QGVAR(Magazines), [vehicle ACE_player] call EFUNC(common,getTurretIndex)], []]) > 1 diff --git a/addons/fcs/functions/fnc_canUseFCS.sqf b/addons/fcs/functions/fnc_canUseFCS.sqf index a80d9599dd..854dcf5cec 100644 --- a/addons/fcs/functions/fnc_canUseFCS.sqf +++ b/addons/fcs/functions/fnc_canUseFCS.sqf @@ -12,6 +12,5 @@ #include "script_component.hpp" -ACE_player == gunner vehicle ACE_player -&& {getNumber (configFile >> "CfgVehicles" >> typeOf vehicle ACE_player >> QGVAR(Enabled)) == 1} +getNumber ([configFile >> "CfgVehicles" >> typeOf _vehicle, [_player] call EFUNC(common,getTurretIndex)] call EFUNC(common,getTurretConfigPath) >> QGVAR(Enabled)) == 1 && {cameraView == "GUNNER"} diff --git a/addons/fcs/functions/fnc_firedEH.sqf b/addons/fcs/functions/fnc_firedEH.sqf index e6fff694ca..a0b10795cf 100644 --- a/addons/fcs/functions/fnc_firedEH.sqf +++ b/addons/fcs/functions/fnc_firedEH.sqf @@ -12,38 +12,46 @@ #include "script_component.hpp" -private ["_unit", "_weaponType", "_ammoType", "_magazineType", "_round", "_FCSMagazines", "_FCSElevation", "_offset"]; +private ["_vehicle", "_weapon", "_ammo", "_magazine", "_projectile"]; -_unit = _this select 0; -_weaponType = _this select 1; -_ammoType = _this select 4; -_magazineType = _this select 5; -_round = _this select 6; +_vehicle = _this select 0; +_weapon = _this select 1; +_ammo = _this select 4; +_magazine = _this select 5; +_projectile = _this select 6; -_FCSMagazines = _unit getVariable QGVAR(Magazines); -_FCSElevation = _unit getVariable QGVAR(Elevation); +private ["_gunner", "_turret"]; -if (ACE_player != gunner _unit) exitWith {}; -if !(_magazineType in _FCSMagazines) exitWith {}; +_gunner = [_vehicle, _weapon] call EFUNC(common,getGunner); +_turret = [_gunner] call EFUNC(common,getTurretIndex); + +if (ACE_player != _gunner) exitWith {}; + +private ["_FCSMagazines", "_FCSElevation", "_offset"]; + +_FCSMagazines = _vehicle getVariable format ["%1_%2", QGVAR(Magazines), _turret]; +_FCSElevation = _vehicle getVariable format ["%1_%2", QGVAR(Elevation), _turret]; + +if !(_magazine in _FCSMagazines) exitWith {}; // GET ELEVATION OFFSET OF CURRENT MAGAZINE _offset = 0; { - if (_x == _magazineType) exitWith { + if (_x == _magazine) exitWith { _offset = _FCSElevation select _forEachIndex; }; } forEach _FCSMagazines; -[_round, (_unit getVariable QGVAR(Azimuth)), _offset, 0] call EFUNC(common,changeProjectileDirection); +[_projectile, (_vehicle getVariable format ["%1_%2", QGVAR(Azimuth), _turret]), _offset, 0] call EFUNC(common,changeProjectileDirection); // Air burst missile // may need to get rewritten -if (getNumber (configFile >> "CfgAmmo" >> _ammoType >> "ACE_Airburst") == 1) then { +if (getNumber (configFile >> "CfgAmmo" >> _ammo >> "ACE_Airburst") == 1) then { _this spawn { _vehicle = _this select 0; _projectile = _this select 6; - _distance = _vehicle getVariable [QGVAR(Distance), currentZeroing _vehicle]; + _distance = _vehicle getVariable [format ["%1_%2", QGVAR(Distance), _turret], currentZeroing _vehicle]; if (_distance < 50) exitWith {}; if (_distance > 1500) exitWith {}; diff --git a/addons/fcs/functions/fnc_keyDown.sqf b/addons/fcs/functions/fnc_keyDown.sqf index 086a11c03c..4cfcf7c57a 100644 --- a/addons/fcs/functions/fnc_keyDown.sqf +++ b/addons/fcs/functions/fnc_keyDown.sqf @@ -12,9 +12,11 @@ #include "script_component.hpp" -private ["_vehicle", "_distance", "_weaponDirection"]; +private ["_vehicle", "_turret", "_distance", "_weaponDirection"]; _vehicle = _this select 0; +_turret = _this select 1; + _distance = call FUNC(getRange); if !(call FUNC(canUseFCS)) exitWith {}; @@ -26,7 +28,7 @@ if (_distance == 0) then { _distance = [5, 5000, 0] call EFUNC(common,getTargetDistance); // maximum distance: 5000m, 5m precision }; -_weaponDirection = _vehicle weaponDirection currentWeapon _vehicle; +_weaponDirection = _vehicle weaponDirection (_vehicle currentWeaponTurret _turret); GVAR(Position) = [ (getPos _vehicle select 0) + _distance * (_weaponDirection select 0), diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 31ba7ba01b..78a622331f 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -12,18 +12,22 @@ #include "script_component.hpp" -private ["_vehicle", "_distance", "_magazines"]; +private ["_vehicle", "_turret", "_turretConfig", "_distance", "_magazines"]; _vehicle = _this select 0; +_turret = _this select 1; + +_turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _turret] call EFUNC(common,getTurretConfigPath); + _distance = call FUNC(getRange); _magazines = magazines _vehicle; if (_distance == 0) then { _distance = [ - getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(DistanceInterval)), // @todo turret - getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(MaxDistance)), - getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(MinDistance)) + getNumber (_turretConfig >> QGVAR(DistanceInterval)), + getNumber (_turretConfig >> QGVAR(MaxDistance)), + getNumber (_turretConfig >> QGVAR(MinDistance)) ] call EFUNC(common,getTargetDistance); // maximum distance: 5000m, 5m precision }; @@ -60,7 +64,7 @@ if (time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then { private ["_magazineType", "_ammoType", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep"]; // estimate time to target - _magazineType = currentMagazine _vehicle; // @todo turret magazine + _magazineType = _vehicle currentMagazineTurret _turret; _ammoType = getText (configFile >> "CfgMagazines" >> _magazineType >> "ammo"); _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineType >> "initSpeed"); _airFriction = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "airFriction"); @@ -111,7 +115,7 @@ GVAR(time) = -1; private ["_viewDiff", "_FCSAzimuth", "_FCSMagazines", "_FCSElevation"]; // CALCULATE AZIMUTH CORRECTION -_viewDiff = _vehicle getVariable QGVAR(ViewDiff); +_viewDiff = _vehicle getVariable format ["%1_%2", QGVAR(ViewDiff), _turret]; _FCSAzimuth = _movingAzimuth; if (_viewDiff != 0) then { @@ -130,7 +134,7 @@ _FCSElevation = []; if !(getText (configFile >> "CfgAmmo" >> _ammoType >> "simulation") == "shotMissile") then { private ["_maxElev", "_initSpeed", "_airFriction", "_offset"]; - _maxElev = getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "Turrets" >> "MainTurret" >> "maxElev"); // @todo turret + _maxElev = getNumber (_turretConfig >> "maxElev"); _initSpeed = getNumber (configFile >> "CfgMagazines" >> _x >> "initSpeed"); _airFriction = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "airFriction"); @@ -142,9 +146,9 @@ _FCSElevation = []; }; } forEach _magazines; -_vehicle setVariable [QGVAR(Distance), _distance, true]; -_vehicle setVariable [QGVAR(Magazines), _FCSMagazines, true]; -_vehicle setVariable [QGVAR(Elevation), _FCSElevation, true]; -_vehicle setVariable [QGVAR(Azimuth), _FCSAzimuth, true]; +_vehicle setVariable [format ["%1_%2", QGVAR(Distance), _turret], _distance, true]; +_vehicle setVariable [format ["%1_%2", QGVAR(Magazines), _turret], _FCSMagazines, true]; +_vehicle setVariable [format ["%1_%2", QGVAR(Elevation), _turret], _FCSElevation, true]; +_vehicle setVariable [format ["%1_%2", QGVAR(Azimuth), _turret], _FCSAzimuth, true]; [format ["%1: %2", localize "STR_ACE_FCS_ZeroedTo", _distance]] call EFUNC(common,displayTextStructured); diff --git a/addons/fcs/functions/fnc_vehicleInit.sqf b/addons/fcs/functions/fnc_vehicleInit.sqf index 95f3d3f01b..29de520f5d 100644 --- a/addons/fcs/functions/fnc_vehicleInit.sqf +++ b/addons/fcs/functions/fnc_vehicleInit.sqf @@ -16,29 +16,31 @@ private "_vehicle"; _vehicle = _this select 0; -if (getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(Enabled)) == 1) then { // @todo for all turrets - _vehicle addEventHandler ["Fired", {_this call FUNC(firedEH)}]; +{ + if (getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(Enabled)) == 1) then { // @todo for all turrets + _vehicle addEventHandler ["Fired", {_this call FUNC(firedEH)}]; - _vehicle setVariable [QGVAR(Distance), 0, true]; - _vehicle setVariable [QGVAR(Magazines), [], true]; - _vehicle setVariable [QGVAR(Elevation), [], true]; - _vehicle setVariable [QGVAR(Azimuth), 0, true]; + _vehicle setVariable [format ["%1_%2", QGVAR(Distance), _x], 0, true]; + _vehicle setVariable [format ["%1_%2", QGVAR(Magazines), _x], [], true]; + _vehicle setVariable [format ["%1_%2", QGVAR(Elevation), _x], [], true]; + _vehicle setVariable [format ["%1_%2", QGVAR(Azimuth), _x], 0, true]; - // calculate offset between gunner camera and muzzle position - if !(_vehicle isKindOf "Air") then { - private ["_turretConfig", "_gunBeg", "_gunnerView", "_gunBegPos", "_gunnerViewPos", "_viewDiff"]; + // calculate offset between gunner camera and muzzle position + if !(_vehicle isKindOf "Air") then { + private ["_turretConfig", "_gunBeg", "_gunnerView", "_gunBegPos", "_gunnerViewPos", "_viewDiff"]; - _turretConfig = configFile >> "CfgVehicles" >> typeOf _vehicle >> "Turrets" >> "MainTurret"; + _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _x] call EFUNC(common,getTurretConfigPath); - _gunBeg = getText (_turretConfig >> "gunBeg"); // @todo player turret path - _gunnerView = getText (_turretConfig >> "memoryPointGunnerOptics"); // @todo player turret path + _gunBeg = getText (_turretConfig >> "gunBeg"); // @todo player turret path + _gunnerView = getText (_turretConfig >> "memoryPointGunnerOptics"); // @todo player turret path - _gunBegPos = (_vehicle selectionPosition _gunBeg) select 0; - _gunnerViewPos = (_vehicle selectionPosition _gunnerView) select 0; - _viewDiff = _gunBegPos - _gunnerViewPos; + _gunBegPos = (_vehicle selectionPosition _gunBeg) select 0; + _gunnerViewPos = (_vehicle selectionPosition _gunnerView) select 0; + _viewDiff = _gunBegPos - _gunnerViewPos; - _vehicle setVariable [QGVAR(ViewDiff), _viewDiff, true]; - } else { - _vehicle setVariable [QGVAR(ViewDiff), 0, true]; + _vehicle setVariable [format ["%1_%2", QGVAR(ViewDiff), _x], _viewDiff, true]; + } else { + _vehicle setVariable [format ["%1_%2", QGVAR(ViewDiff), _x], 0, true]; + }; }; -}; +} forEach allTurrets _vehicle; diff --git a/addons/fcs/initKeybinds.sqf b/addons/fcs/initKeybinds.sqf index c47669c1ab..444891903b 100644 --- a/addons/fcs/initKeybinds.sqf +++ b/addons/fcs/initKeybinds.sqf @@ -9,7 +9,7 @@ if !(!GVAR(enabled) && {call FUNC(canUseRangefinder) || FUNC(canUseFCS)}) exitWith {false}; // Statement - [vehicle ACE_player] call FUNC(keyDown); + [vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex)] call FUNC(keyDown); // Return false so it doesn't block the rest weapon action false }, @@ -28,7 +28,7 @@ if !(GVAR(enabled) && FUNC(canUseFCS)) exitWith {false}; // Statement - [vehicle ACE_player] call FUNC(keyUp); + [vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex)] call FUNC(keyUp); false }, [15, [false, false, false]], @@ -46,7 +46,7 @@ if !(call FUNC(canUseRangefinder) || FUNC(canUseFCS)) exitWith {false}; // Statement - [vehicle ACE_player, 50] call FUNC(adjustRange); + [vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex), 50] call FUNC(adjustRange); true }, [201, [false, false, false]], @@ -64,7 +64,7 @@ if !(call FUNC(canUseRangefinder) || FUNC(canUseFCS)) exitWith {false}; // Statement - [vehicle ACE_player, -50] call FUNC(adjustRange); + [vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex), -50] call FUNC(adjustRange); true }, [209, [false, false, false]], From 4c727fbff593ff126c017ea3e948e2d91736cfd0 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 3 Feb 2015 23:13:44 -0600 Subject: [PATCH 085/211] remoteFncs -> events --- addons/captives/CfgVehicles.hpp | 286 +++++++++--------- addons/captives/XEH_postInitClient.sqf | 6 + addons/captives/functions/fnc_loadCaptive.sqf | 16 +- addons/captives/functions/fnc_setCaptive.sqf | 50 +-- .../captives/functions/fnc_unloadCaptive.sqf | 11 +- .../functions/fnc_vehicleCaptiveMoveIn.sqf | 28 ++ .../functions/fnc_vehicleCaptiveMoveOut.sqf | 24 ++ 7 files changed, 238 insertions(+), 183 deletions(-) create mode 100644 addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf create mode 100644 addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index 8758788b2a..dd4f6361d7 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -1,84 +1,84 @@ class CfgVehicles { - class Man; - class CAManBase: Man { - class ACE_Actions { - class ACE_SetCaptive { - displayName = "$STR_ACE_Captives_SetCaptive"; - distance = 4; - condition = QUOTE(('ACE_CableTie' in (items _player)) && {alive _target} && {!(_target getVariable ['ACE_isCaptive', false])}); - statement = QUOTE(_player removeItem 'ACE_CableTie'; [ARR_2(_target, true)] call FUNC(setCaptive);); - showDisabled = 0; - priority = 2.4; - icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); - hotkey = "C"; - }; - class ACE_ReleaseCaptive { - displayName = "$STR_ACE_Captives_ReleaseCaptive"; - distance = 4; - condition = QUOTE(_target getVariable ['ACE_isCaptive', false] && {isNull (attachedTo _target)}); - statement = QUOTE([ARR_2(_target, false)] call FUNC(setCaptive)); - exceptions[] = {"ACE_Interaction_isNotEscorting"}; - showDisabled = 0; - priority = 2.4; - icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); - hotkey = "R"; - }; - class ACE_EscortCaptive { - displayName = "$STR_ACE_Captives_EscortCaptive"; - distance = 4; - condition = QUOTE((_target getVariable ['ACE_isCaptive', false]) && {isNull (attachedTo _target)} && {alive _target} && {!(_target getVariable ['ACE_isUnconscious', false])}); - statement = QUOTE([ARR_2(_target, true)] call FUNC(escortCaptive)); - exceptions[] = {"ACE_Interaction_isNotEscorting"}; - showDisabled = 0; - icon = QUOTE(PATHTOF(UI\captive_ca.paa)); - priority = 2.3; - hotkey = "E"; - }; - class ACE_StopEscorting { - displayName = "$STR_ACE_Captives_StopEscorting"; - distance = 4; - condition = QUOTE((_target getVariable ['ACE_isCaptive', false]) && {_target in (attachedObjects _player)}); - statement = QUOTE([ARR_2(_target, false)] call FUNC(escortCaptive)); - exceptions[] = {"ACE_Interaction_isNotEscorting"}; - showDisabled = 0; - icon = QUOTE(PATHTOF(UI\captive_ca.paa)); - priority = 2.3; - hotkey = "E"; - }; - class ACE_LoadCaptive { - displayName = "$STR_ACE_Captives_LoadCaptive"; - distance = 4; - condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive)); - statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(loadCaptive)); - exceptions[] = {"ACE_Interaction_isNotEscorting"}; - showDisabled = 0; - icon = QUOTE(PATHTOF(UI\captive_ca.paa)); - priority = 2.2; - hotkey = "L"; - }; - class ACE_FriskPerson { - displayName = "$STR_ACE_Captives_FriskPerson"; - distance = 2; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canFriskPerson)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(openFriskMenu)); - showDisabled = 0; - //icon = ""; //@todo - priority = 3; - hotkey = "F"; - }; - }; + class Man; + class CAManBase: Man { + class ACE_Actions { + class ACE_SetCaptive { + displayName = "$STR_ACE_Captives_SetCaptive"; + distance = 4; + condition = QUOTE(('ACE_CableTie' in (items _player)) && {alive _target} && {!(_target getVariable ['ACE_isCaptive', false])}); + statement = QUOTE(_player removeItem 'ACE_CableTie'; [ARR_3(QGVAR(SetCaptive), [_target], [ARR_2(_target, true)])] call EFUNC(common,targetEvent);); + showDisabled = 0; + priority = 2.4; + icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); + hotkey = "C"; + }; + class ACE_ReleaseCaptive { + displayName = "$STR_ACE_Captives_ReleaseCaptive"; + distance = 4; + condition = QUOTE(_target getVariable ['ACE_isCaptive', false] && {isNull (attachedTo _target)}); + statement = QUOTE([ARR_2(_target, false)] call FUNC(setCaptive)); + exceptions[] = {"ACE_Interaction_isNotEscorting"}; + showDisabled = 0; + priority = 2.4; + icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); + hotkey = "R"; + }; + class ACE_EscortCaptive { + displayName = "$STR_ACE_Captives_EscortCaptive"; + distance = 4; + condition = QUOTE((_target getVariable ['ACE_isCaptive', false]) && {isNull (attachedTo _target)} && {alive _target} && {!(_target getVariable ['ACE_isUnconscious', false])}); + statement = QUOTE([ARR_2(_target, true)] call FUNC(escortCaptive)); + exceptions[] = {"ACE_Interaction_isNotEscorting"}; + showDisabled = 0; + icon = QUOTE(PATHTOF(UI\captive_ca.paa)); + priority = 2.3; + hotkey = "E"; + }; + class ACE_StopEscorting { + displayName = "$STR_ACE_Captives_StopEscorting"; + distance = 4; + condition = QUOTE((_target getVariable ['ACE_isCaptive', false]) && {_target in (attachedObjects _player)}); + statement = QUOTE([ARR_2(_target, false)] call FUNC(escortCaptive)); + exceptions[] = {"ACE_Interaction_isNotEscorting"}; + showDisabled = 0; + icon = QUOTE(PATHTOF(UI\captive_ca.paa)); + priority = 2.3; + hotkey = "E"; + }; + class ACE_LoadCaptive { + displayName = "$STR_ACE_Captives_LoadCaptive"; + distance = 4; + condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive)); + statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(loadCaptive)); + exceptions[] = {"ACE_Interaction_isNotEscorting"}; + showDisabled = 0; + icon = QUOTE(PATHTOF(UI\captive_ca.paa)); + priority = 2.2; + hotkey = "L"; + }; + class ACE_FriskPerson { + displayName = "$STR_ACE_Captives_FriskPerson"; + distance = 2; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canFriskPerson)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(openFriskMenu)); + showDisabled = 0; + //icon = ""; //@todo + priority = 3; + hotkey = "F"; + }; + }; - class ACE_SelfActions { - class ACE_StopEscortingSelf { - displayName = "$STR_ACE_Captives_StopEscorting"; - condition = QUOTE(((_player getVariable ['ACE_escortedUnit', objNull]) getVariable ['ACE_isCaptive', false]) && {(_player getVariable ['ACE_escortedUnit', objNull]) in attachedObjects _player}); - statement = QUOTE([ARR_2((_player getVariable ['ACE_escortedUnit', objNull]), false)] call FUNC(_escortCaptive);); - exceptions[] = {"ACE_Interaction_isNotEscorting"}; - showDisabled = 0; - priority = 2.3; - hotkey = "C"; - }; - /*class ACE_LoadCaptiveSelf { + class ACE_SelfActions { + class ACE_StopEscortingSelf { + displayName = "$STR_ACE_Captives_StopEscorting"; + condition = QUOTE(((_player getVariable ['ACE_escortedUnit', objNull]) getVariable ['ACE_isCaptive', false]) && {(_player getVariable ['ACE_escortedUnit', objNull]) in attachedObjects _player}); + statement = QUOTE([ARR_2((_player getVariable ['ACE_escortedUnit', objNull]), false)] call FUNC(_escortCaptive);); + exceptions[] = {"ACE_Interaction_isNotEscorting"}; + showDisabled = 0; + priority = 2.3; + hotkey = "C"; + }; + /*class ACE_LoadCaptiveSelf { displayName = "$STR_ACE_Captives_LoadCaptive"; condition = "[_player, objNull, objNull] call ACE_Captives_fnc_canLoadCaptiveIntoVehicle"; statement = "[_player, objNull, objNull] call ACE_Captives_fnc_loadCaptiveIntoVehicle"; @@ -86,72 +86,72 @@ class CfgVehicles { showDisabled = 0; priority = 2.2; hotkey = "K"; - };*/ - }; - }; - - #define MACRO_LOADUNLOADCAPTIVE \ - class ACE_Actions { \ - class ACE_LoadCaptive { \ - displayName = "$STR_ACE_Captives_LoadCaptive"; \ - distance = 4; \ - condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \ - statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(loadCaptive)); \ - exceptions[] = {"ACE_Interaction_isNotEscorting"}; \ - showDisabled = 0; \ - priority = 1.2; \ - hotkey = "L"; \ - }; \ - class ACE_UnloadCaptive { \ - displayName = "$STR_ACE_Captives_UnloadCaptive"; \ - distance = 4; \ - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive)); \ - statement = QUOTE([ARR_2(_player, _target)] call FUNC(unloadCaptive)); \ - showDisabled = 0; \ - priority = 1.2; \ - hotkey = "C"; \ - }; \ + };*/ + }; }; - class LandVehicle; - class Car: LandVehicle { - MACRO_LOADUNLOADCAPTIVE - }; - class Tank: LandVehicle { - MACRO_LOADUNLOADCAPTIVE - }; +#define MACRO_LOADUNLOADCAPTIVE \ + class ACE_Actions { \ + class ACE_LoadCaptive { \ + displayName = "$STR_ACE_Captives_LoadCaptive"; \ + distance = 4; \ + condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \ + statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(loadCaptive)); \ + exceptions[] = {"ACE_Interaction_isNotEscorting"}; \ + showDisabled = 0; \ + priority = 1.2; \ + hotkey = "L"; \ + }; \ + class ACE_UnloadCaptive { \ + displayName = "$STR_ACE_Captives_UnloadCaptive"; \ + distance = 4; \ + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive)); \ + statement = QUOTE([ARR_2(_player, _target)] call FUNC(unloadCaptive)); \ + showDisabled = 0; \ + priority = 1.2; \ + hotkey = "C"; \ + }; \ + }; - class Air; - class Helicopter: Air { - MACRO_LOADUNLOADCAPTIVE - }; - class Plane: Air { - MACRO_LOADUNLOADCAPTIVE - }; - - class Ship; - class Ship_F: Ship { - MACRO_LOADUNLOADCAPTIVE - }; - - class StaticWeapon: LandVehicle { - MACRO_LOADUNLOADCAPTIVE - }; - - class StaticMortar; - class Mortar_01_base_F: StaticMortar { - MACRO_LOADUNLOADCAPTIVE - }; - - #define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ - name = #ITEM; \ - count = COUNT; \ - }; - - class Box_NATO_Support_F; - class ACE_Box_Misc: Box_NATO_Support_F { - class TransportItems { - MACRO_ADDITEM(ACE_CableTie,12) + class LandVehicle; + class Car: LandVehicle { + MACRO_LOADUNLOADCAPTIVE + }; + class Tank: LandVehicle { + MACRO_LOADUNLOADCAPTIVE + }; + + class Air; + class Helicopter: Air { + MACRO_LOADUNLOADCAPTIVE + }; + class Plane: Air { + MACRO_LOADUNLOADCAPTIVE + }; + + class Ship; + class Ship_F: Ship { + MACRO_LOADUNLOADCAPTIVE + }; + + class StaticWeapon: LandVehicle { + MACRO_LOADUNLOADCAPTIVE + }; + + class StaticMortar; + class Mortar_01_base_F: StaticMortar { + MACRO_LOADUNLOADCAPTIVE + }; + +#define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ + name = #ITEM; \ + count = COUNT; \ + }; + + class Box_NATO_Support_F; + class ACE_Box_Misc: Box_NATO_Support_F { + class TransportItems { + MACRO_ADDITEM(ACE_CableTie,12) + }; }; - }; }; diff --git a/addons/captives/XEH_postInitClient.sqf b/addons/captives/XEH_postInitClient.sqf index a08c5d4239..a461b36aeb 100644 --- a/addons/captives/XEH_postInitClient.sqf +++ b/addons/captives/XEH_postInitClient.sqf @@ -1,3 +1,9 @@ // by commy2 [missionNamespace, "playerChanged", {_this call ACE_Captives_fnc_handlePlayerChanged}] call ACE_Core_fnc_addCustomEventhandler; + + + +[QGVAR(MoveIn), {_this call FUNC(vehicleCaptiveMoveIn)}] call EFUNC(common,addEventHandler); +[QGVAR(MoveOut), {_this call FUNC(vehicleCaptiveMoveOut)}] call EFUNC(common,addEventHandler); +[QGVAR(SetCaptive), {_this call FUNC(vehicleCaptiveMoveOut)}] call EFUNC(common,addEventHandler); diff --git a/addons/captives/functions/fnc_loadCaptive.sqf b/addons/captives/functions/fnc_loadCaptive.sqf index f2b1a9a0c1..2648255c3b 100644 --- a/addons/captives/functions/fnc_loadCaptive.sqf +++ b/addons/captives/functions/fnc_loadCaptive.sqf @@ -20,17 +20,17 @@ PARAMS_1(_unit,_target,_vehicle); if (isNull _target) then { - // _objects = attachedObjects _unit; - // _objects = [_objects, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); - // _target = _objects select 0; + _objects = attachedObjects _unit; + _objects = [_objects, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); + _target = _objects select 0; }; if (isNull _vehicle) then { - _objects = nearestObjects [_unit, ["Car_F", "Tank_F", "Helicopter_F", "Boat_F", "Plane_F"], 10]; - _vehicle = _objects select 0; + _objects = nearestObjects [_unit, ["Car_F", "Tank_F", "Helicopter_F", "Boat_F", "Plane_F"], 10]; + _vehicle = _objects select 0; }; -if (!isNil "_target" && {!isNil "_vehicle"}) then { - _unit setVariable ["ACE_isEscorting", false]; - [[_target, _vehicle], "{(_this select 0) moveInCargo (_this select 1); (_this select 0) assignAsCargo (_this select 1); (_this select 0) setVariable ['ACE_Captives_CargoIndex', (_this select 1) getCargoIndex (_this select 0), true];}", _target] call ACE_Core_fnc_execRemoteFnc; +if ((!isNil "_target") && {!isNil "_vehicle"}) then { + _unit setVariable ["ACE_isEscorting", false]; + [QGVAR(MoveIn), [_target], [_target, _vehicle]] call EFUNC(common,targetEvent); }; diff --git a/addons/captives/functions/fnc_setCaptive.sqf b/addons/captives/functions/fnc_setCaptive.sqf index 38ce997a88..b4c047dd1b 100644 --- a/addons/captives/functions/fnc_setCaptive.sqf +++ b/addons/captives/functions/fnc_setCaptive.sqf @@ -21,39 +21,39 @@ PARAMS_2(_unit,_state); if (!local _unit) exitWith {[[_unit, _state, true], _fnc_scriptName, _unit] call ACE_Core_fnc_execRemoteFnc}; if (_state) then { - if (_unit getVariable ["ACE_isCaptive", false]) exitWith {}; + if (_unit getVariable ["ACE_isCaptive", false]) exitWith {}; - _unit setVariable ["ACE_isCaptive", true, true]; + _unit setVariable ["ACE_isCaptive", true, true]; - // fix anim on mission start (should work on dedicated servers) - _unit spawn { - [_this, "ACE_Handcuffed", true] call ACE_Core_fnc_setCaptivityStatus; + // fix anim on mission start (should work on dedicated servers) + _unit spawn { + [_this, "ACE_Handcuffed", true] call ACE_Core_fnc_setCaptivityStatus; - if (_this getVariable ["ACE_isCaptive", false] && {vehicle _this == _this}) then { - [_this] call EFUNC(common,fixLoweredRifleAnimation); - [_this, "ACE_AmovPercMstpScapWnonDnon", 0] spawn EFUNC(common,doAnimation); + if (_this getVariable ["ACE_isCaptive", false] && {vehicle _this == _this}) then { + [_this] call EFUNC(common,fixLoweredRifleAnimation); + [_this, "ACE_AmovPercMstpScapWnonDnon", 0] spawn EFUNC(common,doAnimation); + }; }; - }; - _unit setVariable ["ACE_Captives_CargoIndex", vehicle _unit getCargoIndex _unit, true]; + _unit setVariable ["ACE_Captives_CargoIndex", vehicle _unit getCargoIndex _unit, true]; - if (_unit == ACE_player) then { - showHUD false; - }; + if (_unit == ACE_player) then { + showHUD false; + }; } else { - if !(_unit getVariable ["ACE_isCaptive", false]) exitWith {}; + if !(_unit getVariable ["ACE_isCaptive", false]) exitWith {}; - _unit setVariable ["ACE_isCaptive", false, true]; - [_unit, "ACE_Handcuffed", false] call ACE_Core_fnc_setCaptivityStatus; - if (vehicle _unit == _unit) then { - [_unit, "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); - }; + _unit setVariable ["ACE_isCaptive", false, true]; + [_unit, "ACE_Handcuffed", false] call ACE_Core_fnc_setCaptivityStatus; + if (vehicle _unit == _unit) then { + [_unit, "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); + }; - if (_unit getVariable ["ACE_Captives_CargoIndex", -1] != -1) then { - _unit setVariable ["ACE_Captives_CargoIndex", -1, true]; - }; + if (_unit getVariable ["ACE_Captives_CargoIndex", -1] != -1) then { + _unit setVariable ["ACE_Captives_CargoIndex", -1, true]; + }; - if (_unit == ACE_player) then { - showHUD true; - }; + if (_unit == ACE_player) then { + showHUD true; + }; }; diff --git a/addons/captives/functions/fnc_unloadCaptive.sqf b/addons/captives/functions/fnc_unloadCaptive.sqf index e6eb4b24a5..2ede9de480 100644 --- a/addons/captives/functions/fnc_unloadCaptive.sqf +++ b/addons/captives/functions/fnc_unloadCaptive.sqf @@ -24,12 +24,9 @@ _cargo = crew _vehicle; // Can also unload from driver, gunner, commander, turr _cargo = [_cargo, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); -if (count _cargo > 0) then { +if ((count _cargo) > 0) then { _target = _cargo select 0; - - _target setVariable ["ACE_Captives_CargoIndex", -1, true]; - - moveOut _target; - [_target, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); - [_target, "{unassignVehicle _this}", _target] call ACE_Core_fnc_execRemoteFnc; + [QGVAR(MoveOut), [_target], [_target]] call EFUNC(common,targetEvent); +} else { + ERROR("No captive to unload"); }; diff --git a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf new file mode 100644 index 0000000000..1eb1c2ef2b --- /dev/null +++ b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf @@ -0,0 +1,28 @@ +/* + * Author: PabstMirror + * Loads a captive into a vehicle + * + * Arguments: + * 0: The Captive + * 1: The Vehicle + * + * Return Value: + * Nothing + * + * Example: + * TODO + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_target,_vehicle); + +private ["_cargoIndex"]; + +_target moveInCargo _vehicle; +_target assignAsCargo _vehicle; +_cargoIndex = _vehicle getCargoIndex _target; +_target setVariable ["ACE_Captives_CargoIndex", _cargoIndex, true]; + +TRACE_3("moveinEH",_target,_vehicle,_cargoIndex); diff --git a/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf b/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf new file mode 100644 index 0000000000..0a10572909 --- /dev/null +++ b/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf @@ -0,0 +1,24 @@ +/* + * Author: PabstMirror + * Unloads a captive from a vehicle. + * + * Arguments: + * 0: Captive Unit being unloaded + * + * Return Value: + * Nothing + * + * Example: + * TODO + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_1(_unit); + +_unit setVariable ["ACE_Captives_CargoIndex", -1, true]; + +moveOut _unit; +[_unit, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); +unassignVehicle _unit; \ No newline at end of file From 24ab11a1e2740d724d6626c6ba7497dc780d72d5 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 3 Feb 2015 23:56:51 -0600 Subject: [PATCH 086/211] More work --- addons/captives/CfgMoves.hpp | 110 +++++++++--------- addons/captives/CfgVehicles.hpp | 16 +-- addons/captives/CfgWeapons.hpp | 22 ++-- addons/captives/README.md | 14 +++ addons/captives/XEH_postInitClient.sqf | 18 ++- addons/captives/XEH_preInit.sqf | 2 + .../functions/fnc_handlePlayerChanged.sqf | 4 +- .../captives/functions/fnc_handleWokeUp.sqf | 4 +- addons/captives/functions/fnc_initPost.sqf | 4 +- addons/captives/functions/fnc_initUnit.sqf | 9 +- addons/captives/functions/fnc_loadCaptive.sqf | 4 +- .../captives/functions/fnc_openFriskMenu.sqf | 28 ++--- addons/captives/functions/fnc_surrender.sqf | 62 +++++----- .../captives/functions/fnc_unloadCaptive.sqf | 2 +- .../functions/fnc_vehicleCaptiveMoveIn.sqf | 4 +- 15 files changed, 161 insertions(+), 142 deletions(-) create mode 100644 addons/captives/README.md diff --git a/addons/captives/CfgMoves.hpp b/addons/captives/CfgMoves.hpp index da43b21aae..ab379de6ae 100644 --- a/addons/captives/CfgMoves.hpp +++ b/addons/captives/CfgMoves.hpp @@ -1,90 +1,90 @@ class CfgMovesBasic { - class Actions { - class CivilStandActions; - class ACE_CivilStandCaptiveActions: CivilStandActions { - turnL = ""; - turnR = ""; - stop = "ACE_AmovPercMstpScapWnonDnon"; - StopRelaxed = "ACE_AmovPercMstpScapWnonDnon"; - default = "ACE_AmovPercMstpScapWnonDnon"; - getOver = ""; - throwPrepare = ""; - throwGrenade[] = {"","Gesture"}; + class Actions { + class CivilStandActions; + class ACE_CivilStandCaptiveActions: CivilStandActions { + turnL = ""; + turnR = ""; + stop = "ACE_AmovPercMstpScapWnonDnon"; + StopRelaxed = "ACE_AmovPercMstpScapWnonDnon"; + default = "ACE_AmovPercMstpScapWnonDnon"; + getOver = ""; + throwPrepare = ""; + throwGrenade[] = {"","Gesture"}; + }; }; - }; }; class CfgMovesMaleSdr: CfgMovesBasic { - class StandBase; - class States { - class AmovPercMstpSnonWnonDnon: StandBase { - ConnectTo[] += {"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1}; - }; + class StandBase; + class States { + class AmovPercMstpSnonWnonDnon: StandBase { + ConnectTo[] += {"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1}; + }; - class CutSceneAnimationBase; - class ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon: CutSceneAnimationBase { - actions = "ACE_CivilStandCaptiveActions"; - file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\AmovPercMstpSnonWnonDnon_EaseIn"; - speed = 1; - looped = 0; - interpolationRestart = 2; - ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon",0.1}; - InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; - }; + class CutSceneAnimationBase; + class ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon: CutSceneAnimationBase { + actions = "ACE_CivilStandCaptiveActions"; + file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\AmovPercMstpSnonWnonDnon_EaseIn"; + speed = 1; + looped = 0; + interpolationRestart = 2; + ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon",0.1}; + InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; + }; - class ACE_AmovPercMstpScapWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon { - file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\AmovPercMstpSnonWnonDnon_Ease"; - speed = 0; - ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; - InterpolateTo[] = {"Unconscious",0.01}; - looped = 1; - }; + class ACE_AmovPercMstpScapWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon { + file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\AmovPercMstpSnonWnonDnon_Ease"; + speed = 0; + ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; + InterpolateTo[] = {"Unconscious",0.01}; + looped = 1; + }; - class ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon { - actions = "CivilStandActions"; - file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\amovpercmstpsnonwnondnon_easeout"; - ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1}; - InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1}; + class ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon { + actions = "CivilStandActions"; + file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\amovpercmstpsnonwnondnon_easeout"; + ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1}; + InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1}; + }; }; - }; }; /* player playMove "ACE_AmovPercMstpScapWnonDnon"; player switchMove "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon"; -*/ + */ /*class CfgMovesBasic; class CfgMovesMaleSdr: CfgMovesBasic { - class States { +class States { class CutSceneAnimationBase; class AmovPercMstpSnonWnonDnon_EaseIn: CutSceneAnimationBase { - head = "headDefault"; - static = 1; - disableWeapons = 0; - forceAim = 0; - InterpolateTo[] = {"AmovPercMstpSnonWnonDnon_EaseOut",0.02,"Unconscious",0.1}; + head = "headDefault"; + static = 1; + disableWeapons = 0; + forceAim = 0; + InterpolateTo[] = {"AmovPercMstpSnonWnonDnon_EaseOut",0.02,"Unconscious",0.1}; }; class AmovPercMstpSnonWnonDnon_Ease: AmovPercMstpSnonWnonDnon_EaseIn { - looped = 1; - InterpolateTo[] = {"Unconscious",0.1}; + looped = 1; + InterpolateTo[] = {"Unconscious",0.1}; }; class AmovPercMstpSnonWnonDnon_EaseOut: AmovPercMstpSnonWnonDnon_EaseIn { - InterpolateTo[] = {"AmovPercMstpSnonWnonDnon_EaseIn",0.02,"Unconscious",0.1}; + InterpolateTo[] = {"AmovPercMstpSnonWnonDnon_EaseIn",0.02,"Unconscious",0.1}; }; class AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon: CutSceneAnimationBase { - InterpolateTo[] = {"Unconscious",0.01,"AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; + InterpolateTo[] = {"Unconscious",0.01,"AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; }; class AmovPercMstpSsurWnonDnon: AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon { - looped = 1; - InterpolateTo[] = {"Unconscious",0.01}; + looped = 1; + InterpolateTo[] = {"Unconscious",0.01}; }; class AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon: AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon { - InterpolateTo[] = {"Unconscious",0.01,"AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon",0.1}; + InterpolateTo[] = {"Unconscious",0.01,"AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon",0.1}; }; - }; +}; };*/ diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index dd4f6361d7..04b8d4569f 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -5,8 +5,8 @@ class CfgVehicles { class ACE_SetCaptive { displayName = "$STR_ACE_Captives_SetCaptive"; distance = 4; - condition = QUOTE(('ACE_CableTie' in (items _player)) && {alive _target} && {!(_target getVariable ['ACE_isCaptive', false])}); - statement = QUOTE(_player removeItem 'ACE_CableTie'; [ARR_3(QGVAR(SetCaptive), [_target], [ARR_2(_target, true)])] call EFUNC(common,targetEvent);); + condition = QUOTE(('ACE_CableTie' in (items _player)) && {alive _target} && {!(_target getVariable [ARR_2('ACE_isCaptive', false)])}); + statement = QUOTE(_player removeItem 'ACE_CableTie'; [ARR_3('SetCaptive', [_target], [ARR_2(_target, true)])] call EFUNC(common,targetEvent);); showDisabled = 0; priority = 2.4; icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); @@ -15,8 +15,8 @@ class CfgVehicles { class ACE_ReleaseCaptive { displayName = "$STR_ACE_Captives_ReleaseCaptive"; distance = 4; - condition = QUOTE(_target getVariable ['ACE_isCaptive', false] && {isNull (attachedTo _target)}); - statement = QUOTE([ARR_2(_target, false)] call FUNC(setCaptive)); + condition = QUOTE(_target getVariable [ARR_2('ACE_isCaptive', false)] && {isNull (attachedTo _target)}); + statement = QUOTE([ARR_3('SetCaptive', [_target], [ARR_2(_target, false)])] call EFUNC(common,targetEvent);); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; priority = 2.4; @@ -26,7 +26,7 @@ class CfgVehicles { class ACE_EscortCaptive { displayName = "$STR_ACE_Captives_EscortCaptive"; distance = 4; - condition = QUOTE((_target getVariable ['ACE_isCaptive', false]) && {isNull (attachedTo _target)} && {alive _target} && {!(_target getVariable ['ACE_isUnconscious', false])}); + condition = QUOTE((_target getVariable [ARR_2('ACE_isCaptive', false)]) && {isNull (attachedTo _target)} && {alive _target} && {!(_target getVariable [ARR_2('ACE_isUnconscious', false)])}); statement = QUOTE([ARR_2(_target, true)] call FUNC(escortCaptive)); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; @@ -37,7 +37,7 @@ class CfgVehicles { class ACE_StopEscorting { displayName = "$STR_ACE_Captives_StopEscorting"; distance = 4; - condition = QUOTE((_target getVariable ['ACE_isCaptive', false]) && {_target in (attachedObjects _player)}); + condition = QUOTE((_target getVariable [ARR_2('ACE_isCaptive', false)]) && {_target in (attachedObjects _player)}); statement = QUOTE([ARR_2(_target, false)] call FUNC(escortCaptive)); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; @@ -71,8 +71,8 @@ class CfgVehicles { class ACE_SelfActions { class ACE_StopEscortingSelf { displayName = "$STR_ACE_Captives_StopEscorting"; - condition = QUOTE(((_player getVariable ['ACE_escortedUnit', objNull]) getVariable ['ACE_isCaptive', false]) && {(_player getVariable ['ACE_escortedUnit', objNull]) in attachedObjects _player}); - statement = QUOTE([ARR_2((_player getVariable ['ACE_escortedUnit', objNull]), false)] call FUNC(_escortCaptive);); + condition = QUOTE(((_player getVariable [ARR_2('ACE_escortedUnit', objNull)]) getVariable ['ACE_isCaptive', false]) && {(_player getVariable [ARR_2('ACE_escortedUnit', objNull)]) in attachedObjects _player}); + statement = QUOTE([ARR_2((_player getVariable [ARR_2('ACE_escortedUnit', objNull)]), false)] call FUNC(_escortCaptive);); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; priority = 2.3; diff --git a/addons/captives/CfgWeapons.hpp b/addons/captives/CfgWeapons.hpp index 3005a2fa5c..be2149ca88 100644 --- a/addons/captives/CfgWeapons.hpp +++ b/addons/captives/CfgWeapons.hpp @@ -1,15 +1,15 @@ class CfgWeapons { - class ACE_ItemCore; - class InventoryItem_Base_F; + class ACE_ItemCore; + class InventoryItem_Base_F; - class ACE_CableTie: ACE_ItemCore { - displayName = "$STR_ACE_Captives_CableTie"; - descriptionShort = "$STR_ACE_Captives_CableTieDescription"; - model = QUOTE(PATHTOF(models\ace_cabletie.p3d)); - picture = QUOTE(PATHTOF(UI\ace_cabletie_ca.paa)); - scope = 2; - class ItemInfo: InventoryItem_Base_F { - mass = 1; + class ACE_CableTie: ACE_ItemCore { + displayName = "$STR_ACE_Captives_CableTie"; + descriptionShort = "$STR_ACE_Captives_CableTieDescription"; + model = QUOTE(PATHTOF(models\ace_cabletie.p3d)); + picture = QUOTE(PATHTOF(UI\ace_cabletie_ca.paa)); + scope = 2; + class ItemInfo: InventoryItem_Base_F { + mass = 1; + }; }; - }; }; diff --git a/addons/captives/README.md b/addons/captives/README.md new file mode 100644 index 0000000000..3938720f08 --- /dev/null +++ b/addons/captives/README.md @@ -0,0 +1,14 @@ +ace_captives +============ + +Allows taking people captive/handcuffed + +####Items: +`ACE_CableTie` - adds ability to take someone captive + + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [PabstMirror](https://github.com/PabstMirror) diff --git a/addons/captives/XEH_postInitClient.sqf b/addons/captives/XEH_postInitClient.sqf index a461b36aeb..ccec1d39d2 100644 --- a/addons/captives/XEH_postInitClient.sqf +++ b/addons/captives/XEH_postInitClient.sqf @@ -1,9 +1,19 @@ -// by commy2 +#include "script_component.hpp" [missionNamespace, "playerChanged", {_this call ACE_Captives_fnc_handlePlayerChanged}] call ACE_Core_fnc_addCustomEventhandler; -[QGVAR(MoveIn), {_this call FUNC(vehicleCaptiveMoveIn)}] call EFUNC(common,addEventHandler); -[QGVAR(MoveOut), {_this call FUNC(vehicleCaptiveMoveOut)}] call EFUNC(common,addEventHandler); -[QGVAR(SetCaptive), {_this call FUNC(vehicleCaptiveMoveOut)}] call EFUNC(common,addEventHandler); +["MoveInCaptive", {_this call FUNC(vehicleCaptiveMoveIn)}] call EFUNC(common,addEventHandler); +["MoveOutCaptive", {_this call FUNC(vehicleCaptiveMoveOut)}] call EFUNC(common,addEventHandler); +["SetCaptive", {_this call FUNC(vehicleCaptiveMoveOut)}] call EFUNC(common,addEventHandler); + +//TODO: Medical Integration Events??? + +// [_unit, "knockedOut", { + // if (local (_this select 0)) then {_this call ACE_Captives_fnc_handleKnockedOut}; +// }] call ACE_Core_fnc_addCustomEventhandler; + +// [_unit, "wokeUp", { + // if (local (_this select 0)) then {_this call ACE_Captives_fnc_handleWokeUp}; +// }] call ACE_Core_fnc_addCustomEventhandler; diff --git a/addons/captives/XEH_preInit.sqf b/addons/captives/XEH_preInit.sqf index 7f83ce4fad..505d57051e 100644 --- a/addons/captives/XEH_preInit.sqf +++ b/addons/captives/XEH_preInit.sqf @@ -17,5 +17,7 @@ PREP(openFriskMenu); PREP(setCaptive); PREP(surrender); PREP(unloadCaptive); +PREP(vehicleCaptiveMoveIn); +PREP(vehicleCaptiveMoveOut); ADDON = true; diff --git a/addons/captives/functions/fnc_handlePlayerChanged.sqf b/addons/captives/functions/fnc_handlePlayerChanged.sqf index fea03cfe16..f23e380dd3 100644 --- a/addons/captives/functions/fnc_handlePlayerChanged.sqf +++ b/addons/captives/functions/fnc_handlePlayerChanged.sqf @@ -19,7 +19,7 @@ PARAMS_2(_unit,_oldUnit); if (_unit getVariable ["ACE_isCaptive", false]) then { - showHUD false; + showHUD false; } else { - showHUD true; + showHUD true; }; diff --git a/addons/captives/functions/fnc_handleWokeUp.sqf b/addons/captives/functions/fnc_handleWokeUp.sqf index cbcd2a07ae..ea6a1bcb26 100644 --- a/addons/captives/functions/fnc_handleWokeUp.sqf +++ b/addons/captives/functions/fnc_handleWokeUp.sqf @@ -18,6 +18,6 @@ PARAMS_1(_unit); if (_unit getVariable ["ACE_isCaptive", false] && {vehicle _unit == _unit}) then { - [_unit] call EFUNC(common,fixLoweredRifleAnimation); - [_unit, "ACE_AmovPercMstpScapWnonDnon", 0] call EFUNC(common,doAnimation); + [_unit] call EFUNC(common,fixLoweredRifleAnimation); + [_unit, "ACE_AmovPercMstpScapWnonDnon", 0] call EFUNC(common,doAnimation); }; diff --git a/addons/captives/functions/fnc_initPost.sqf b/addons/captives/functions/fnc_initPost.sqf index 5c116be417..8e777a9717 100644 --- a/addons/captives/functions/fnc_initPost.sqf +++ b/addons/captives/functions/fnc_initPost.sqf @@ -19,6 +19,6 @@ PARAMS_1(_unit); // reset status on mission start if (_unit getVariable ["ACE_isCaptive", false]) then { - _unit setVariable ["ACE_isCaptive", false]; - [_unit, true] call ACE_Captives_fnc_setCaptive; + _unit setVariable ["ACE_isCaptive", false]; + [_unit, true] call ACE_Captives_fnc_setCaptive; }; diff --git a/addons/captives/functions/fnc_initUnit.sqf b/addons/captives/functions/fnc_initUnit.sqf index 13777dca1d..df9356ff2a 100644 --- a/addons/captives/functions/fnc_initUnit.sqf +++ b/addons/captives/functions/fnc_initUnit.sqf @@ -17,13 +17,6 @@ PARAMS_1(_unit); -[_unit, "knockedOut", { - if (local (_this select 0)) then {_this call ACE_Captives_fnc_handleKnockedOut}; -}] call ACE_Core_fnc_addCustomEventhandler; - -[_unit, "wokeUp", { - if (local (_this select 0)) then {_this call ACE_Captives_fnc_handleWokeUp}; -}] call ACE_Core_fnc_addCustomEventhandler; // prevent players from throwing grenades -[_unit, "Throw", {(_this select 1) getVariable ["ACE_isCaptive", false]}, {}] call ACE_Core_fnc_addActionEventhandler; +[_unit, "Throw", {(_this select 1) getVariable ["ACE_isCaptive", false]}, {}] call EFUNC(common,addActionEventhandler); diff --git a/addons/captives/functions/fnc_loadCaptive.sqf b/addons/captives/functions/fnc_loadCaptive.sqf index 2648255c3b..05f87a20c6 100644 --- a/addons/captives/functions/fnc_loadCaptive.sqf +++ b/addons/captives/functions/fnc_loadCaptive.sqf @@ -17,7 +17,7 @@ */ #include "script_component.hpp" -PARAMS_1(_unit,_target,_vehicle); +PARAMS_3(_unit,_target,_vehicle); if (isNull _target) then { _objects = attachedObjects _unit; @@ -32,5 +32,5 @@ if (isNull _vehicle) then { if ((!isNil "_target") && {!isNil "_vehicle"}) then { _unit setVariable ["ACE_isEscorting", false]; - [QGVAR(MoveIn), [_target], [_target, _vehicle]] call EFUNC(common,targetEvent); + ["MoveInCaptive", [_target], [_target, _vehicle]] call EFUNC(common,targetEvent); }; diff --git a/addons/captives/functions/fnc_openFriskMenu.sqf b/addons/captives/functions/fnc_openFriskMenu.sqf index 42dda4ab66..d69dbd045c 100644 --- a/addons/captives/functions/fnc_openFriskMenu.sqf +++ b/addons/captives/functions/fnc_openFriskMenu.sqf @@ -22,7 +22,7 @@ PARAMS_2(_player,_unit); _weapon = currentWeapon _player; if (_weapon == primaryWeapon _player && {_weapon != ""}) then { - [_player, "AmovPercMstpSlowWrflDnon", 0] call EFUNC(common,doAnimation); + [_player, "AmovPercMstpSlowWrflDnon", 0] call EFUNC(common,doAnimation); }; _listedItemClasses = []; @@ -32,19 +32,19 @@ _actions = [localize "STR_ACE_Captives_FriskMenuHeader", localize "STR_ACE_Capti _allGear = []; if ((handgunWeapon _unit) != "") then { - _allGear pushBack (handgunWeapon _unit); + _allGear pushBack (handgunWeapon _unit); }; if (count (uniformItems _unit) > 0) then { - _allGear = _allGear + (uniformItems _unit); + _allGear = _allGear + (uniformItems _unit); }; if (count (vestItems _unit) > 0) then { - _allGear = _allGear + (vestItems _unit); + _allGear = _allGear + (vestItems _unit); }; if (count (backpackItems _unit) > 0) then { - _allGear = _allGear + (backpackItems _unit); + _allGear = _allGear + (backpackItems _unit); }; if (count (assignedItems _unit) > 0) then { - _allGear = _allGear + (assignedItems _unit); + _allGear = _allGear + (assignedItems _unit); }; // Handgun @@ -53,15 +53,15 @@ if (count (assignedItems _unit) > 0) then { // Backpack Items // Assigned Items { - if (!(_x in _listedItemClasses)) then { - private "_item"; - _item = configFile >> "CfgMagazines" >> _x; - if (isNil "_item" || str _item == "") then { //str _item ? - _item = configFile >> "CfgWeapons" >> _x; + if (!(_x in _listedItemClasses)) then { + private "_item"; + _item = configFile >> "CfgMagazines" >> _x; + if (isNil "_item" || str _item == "") then { //str _item ? + _item = configFile >> "CfgWeapons" >> _x; + }; + _actions = [_actions, getText(_item >> "displayName"), getText(_item >> "picture"), _x] call ACE_Interaction_fnc_addSelectableItem; + _listedItemClasses pushBack _x; }; - _actions = [_actions, getText(_item >> "displayName"), getText(_item >> "picture"), _x] call ACE_Interaction_fnc_addSelectableItem; - _listedItemClasses pushBack _x; - }; } forEach (_allGear); [_actions, {call ACE_Interaction_fnc_hideMenu;}, {call ACE_Interaction_fnc_hideMenu;}] call ACE_Interaction_fnc_openSelectMenu; diff --git a/addons/captives/functions/fnc_surrender.sqf b/addons/captives/functions/fnc_surrender.sqf index b308775040..92f0ea416a 100644 --- a/addons/captives/functions/fnc_surrender.sqf +++ b/addons/captives/functions/fnc_surrender.sqf @@ -21,43 +21,43 @@ PARAMS_2(_unit,_state); if (!local _unit) exitWith {[_this, _fnc_scriptName, _unit] call ACE_Core_fnc_execRemoteFnc}; if (_state) then { - if (_unit getVariable ["ACE_isSurrender", false]) exitWith {}; + if (_unit getVariable ["ACE_isSurrender", false]) exitWith {}; - _unit setVariable ["ACE_isSurrender", true, true]; - [_unit, "ACE_Surrendered", true] call ACE_Core_fnc_setCaptivityStatus; + _unit setVariable ["ACE_isSurrender", true, true]; + [_unit, "ACE_Surrendered", true] call ACE_Core_fnc_setCaptivityStatus; - _unit spawn { - // fix for lowered rifle animation glitch - if (currentWeapon _this != "" && {currentWeapon _this == primaryWeapon _this} && {weaponLowered _this} && {stance _this == "STAND"}) then { - _this playMove "amovpercmstpsraswrfldnon"; + _unit spawn { + // fix for lowered rifle animation glitch + if (currentWeapon _this != "" && {currentWeapon _this == primaryWeapon _this} && {weaponLowered _this} && {stance _this == "STAND"}) then { + _this playMove "amovpercmstpsraswrfldnon"; + }; + + while {_this getVariable ["ACE_isSurrender", false]} do { + sleep 0.001; //sleep in UI + + if (isPlayer _this) then {showHUD false}; + + if (!alive _this || {_this getVariable ["ACE_isUnconscious", false]}) then { + _this setVariable ["ACE_isSurrender", false, true]; + } else { + _this playMove "amovpercmstpsnonwnondnon_amovpercmstpssurwnondnon"; + }; + }; + if !(_this getVariable ["ACE_isUnconscious", false]) then { + _this playMoveNow "AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon"; + } else { + _this playMoveNow "unconscious"; + }; + + [_this, "ACE_Surrendered", false] call ACE_Core_fnc_setCaptivityStatus; + + if (isPlayer _this) then {showHUD true}; }; - - while {_this getVariable ["ACE_isSurrender", false]} do { - sleep 0.001; //sleep in UI - - if (isPlayer _this) then {showHUD false}; - - if (!alive _this || {_this getVariable ["ACE_isUnconscious", false]}) then { - _this setVariable ["ACE_isSurrender", false, true]; - } else { - _this playMove "amovpercmstpsnonwnondnon_amovpercmstpssurwnondnon"; - }; - }; - if !(_this getVariable ["ACE_isUnconscious", false]) then { - _this playMoveNow "AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon"; - } else { - _this playMoveNow "unconscious"; - }; - - [_this, "ACE_Surrendered", false] call ACE_Core_fnc_setCaptivityStatus; - - if (isPlayer _this) then {showHUD true}; - }; } else { - _unit setVariable ["ACE_isSurrender", false, true]; + _unit setVariable ["ACE_isSurrender", false, true]; }; /* player playMove "AmovPercMstpSsurWnonDnon" player switchMove "AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon" -*/ + */ diff --git a/addons/captives/functions/fnc_unloadCaptive.sqf b/addons/captives/functions/fnc_unloadCaptive.sqf index 2ede9de480..057b825d12 100644 --- a/addons/captives/functions/fnc_unloadCaptive.sqf +++ b/addons/captives/functions/fnc_unloadCaptive.sqf @@ -26,7 +26,7 @@ _cargo = [_cargo, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(commo if ((count _cargo) > 0) then { _target = _cargo select 0; - [QGVAR(MoveOut), [_target], [_target]] call EFUNC(common,targetEvent); + ["MoveOutCaptive", [_target], [_target]] call EFUNC(common,targetEvent); } else { ERROR("No captive to unload"); }; diff --git a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf index 1eb1c2ef2b..fe4d0528c6 100644 --- a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf +++ b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf @@ -20,8 +20,8 @@ PARAMS_2(_target,_vehicle); private ["_cargoIndex"]; -_target moveInCargo _vehicle; -_target assignAsCargo _vehicle; +_target moveInCargo _vehicle; +_target assignAsCargo _vehicle; _cargoIndex = _vehicle getCargoIndex _target; _target setVariable ["ACE_Captives_CargoIndex", _cargoIndex, true]; From 11cd426b87162ad710e07d28566e69d24c0ef938 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 4 Feb 2015 00:35:51 -0600 Subject: [PATCH 087/211] Redo XEH --- addons/captives/CfgEventHandlers.hpp | 15 ++-------- addons/captives/XEH_preInit.sqf | 5 ++-- addons/captives/config.cpp | 10 +++---- addons/captives/functions/fnc_handleGetIn.sqf | 24 +++++++++++++++ .../captives/functions/fnc_handleGetOut.sqf | 18 ++++++------ .../captives/functions/fnc_handleKilled.sqf | 26 +++++++++++++++++ .../functions/fnc_handleUnitInitPost.sqf | 29 +++++++++++++++++++ addons/captives/functions/fnc_initPost.sqf | 24 --------------- addons/captives/functions/fnc_initUnit.sqf | 22 -------------- addons/captives/functions/fnc_loadCaptive.sqf | 2 +- 10 files changed, 100 insertions(+), 75 deletions(-) create mode 100644 addons/captives/functions/fnc_handleGetIn.sqf create mode 100644 addons/captives/functions/fnc_handleKilled.sqf create mode 100644 addons/captives/functions/fnc_handleUnitInitPost.sqf delete mode 100644 addons/captives/functions/fnc_initPost.sqf delete mode 100644 addons/captives/functions/fnc_initUnit.sqf diff --git a/addons/captives/CfgEventHandlers.hpp b/addons/captives/CfgEventHandlers.hpp index b8c182d1f6..07dbe45fb7 100644 --- a/addons/captives/CfgEventHandlers.hpp +++ b/addons/captives/CfgEventHandlers.hpp @@ -14,7 +14,7 @@ class Extended_PostInit_EventHandlers { class Extended_GetIn_EventHandlers { class All { class GVAR(AutoDetachCaptive) { - getIn = "if (local (_this select 2) && {(_this select 2) getVariable ['ACE_isEscorting', false]}) then {(_this select 2) setVariable ['ACE_isEscorting', false, true]}"; + getIn = QUOTE(_this call FUNC(handleGetIn)); }; }; }; @@ -32,16 +32,7 @@ class Extended_GetOut_EventHandlers { class Extended_Killed_EventHandlers { class CAManBase { class GVAR(AutoDetachCaptive) { - killed = "if ((_this select 0) getVariable ['ACE_isCaptive', false]) then {(_this select 0) setVariable ['ACE_isCaptive', false, true]}; if ((_this select 0) getVariable ['ACE_isEscorting', false]) then {(_this select 0) setVariable ['ACE_isEscorting', false, true]};"; - }; - }; -}; - -//handle captive and unconsciousness state -class Extended_Init_EventHandlers { - class CAManBase { - class GVAR(AutoDetachCaptive) { - init = "_this call ACE_Captives_fnc_initUnit"; + killed = QUOTE(_this call FUNC(handleKilled)); }; }; }; @@ -50,7 +41,7 @@ class Extended_Init_EventHandlers { class Extended_InitPost_EventHandlers { class CAManBase { class GVAR(InitPost) { - init = "if (local (_this select 0)) then {_this call ACE_Captives_fnc_initPost};"; + init = QUOTE(_this call FUNC(handleUnitInitPost)); }; }; }; diff --git a/addons/captives/XEH_preInit.sqf b/addons/captives/XEH_preInit.sqf index 505d57051e..5ff2379c0b 100644 --- a/addons/captives/XEH_preInit.sqf +++ b/addons/captives/XEH_preInit.sqf @@ -6,12 +6,13 @@ PREP(canFriskPerson); PREP(canLoadCaptive); PREP(canUnloadCaptive); PREP(escortCaptive); +PREP(handleGetIn); PREP(handleGetOut); +PREP(handleKilled); PREP(handleKnockedOut); PREP(handlePlayerChanged); PREP(handleWokeUp); -PREP(initPost); -PREP(initUnit); +PREP(handleUnitInitPost); PREP(loadCaptive); PREP(openFriskMenu); PREP(setCaptive); diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index 7e5c3382bb..7bef039e37 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -18,14 +18,14 @@ class CfgPatches { #include "CfgWeapons.hpp" -class ACE_Core_canInteractConditions { - class ACE_Interaction_isNotEscorting { - condition = "!(_player getVariable ['ACE_isEscorting', false])"; +class ACE_canInteractConditions { + class GVAR(isNotEscorting) { + condition = QUOTE(!(_player getVariable ['ACE_isEscorting', false])"; }; - class ACE_Interaction_isNotCaptive { + class GVAR(isNotCaptive) { condition = "!(_player getVariable ['ACE_isCaptive', false])"; }; - class ACE_Interaction_isNotSurrendering { + class GVAR(isNotSurrendering) { condition = "!(_player getVariable ['ACE_isSurrender', false])"; }; }; diff --git a/addons/captives/functions/fnc_handleGetIn.sqf b/addons/captives/functions/fnc_handleGetIn.sqf new file mode 100644 index 0000000000..dc0b5aa5af --- /dev/null +++ b/addons/captives/functions/fnc_handleGetIn.sqf @@ -0,0 +1,24 @@ +/* + * Author: commy2 + * Handles when a unit gets in to a vehicle. Release escorted captive when entering a vehicle + * + * Arguments: + * 0: _vehicle + * 2: dunno + * 1: _unit + * + * Return Value: + * The return value + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_3(_vehicle,_dontcare,_unit); + +if ((local _unit) && (_unit getVariable ["ACE_isEscorting", false])) then { + _unit setVariable ["ACE_isEscorting", false, true]; +}; diff --git a/addons/captives/functions/fnc_handleGetOut.sqf b/addons/captives/functions/fnc_handleGetOut.sqf index f734fa0177..82e6417eab 100644 --- a/addons/captives/functions/fnc_handleGetOut.sqf +++ b/addons/captives/functions/fnc_handleGetOut.sqf @@ -19,16 +19,16 @@ PARAMS_3(_vehicle,_dontcare,_unit); -if (!local _unit) exitWith {}; -if (!(_unit getVariable ["ACE_isCaptive", false])) exitWith {}; +if ((local _unit)&&(_unit getVariable ["ACE_isCaptive", false])) then { -private ["_cargoIndex"]; + private ["_cargoIndex"]; -_cargoIndex = _unit getVariable ["ACE_Captives_CargoIndex", -1]; + _cargoIndex = _unit getVariable ["ACE_Captives_CargoIndex", -1]; -//If captive was not "unloaded", then move them back into the vehicle. -if (_cargoIndex != -1) exitWith { - _unit moveInCargo [_vehicle, _cargoIndex]; -}; + //If captive was not "unloaded", then move them back into the vehicle. + if (_cargoIndex != -1) exitWith { + _unit moveInCargo [_vehicle, _cargoIndex]; + }; -[_unit, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); + [_unit, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); +}; \ No newline at end of file diff --git a/addons/captives/functions/fnc_handleKilled.sqf b/addons/captives/functions/fnc_handleKilled.sqf new file mode 100644 index 0000000000..2d476f662c --- /dev/null +++ b/addons/captives/functions/fnc_handleKilled.sqf @@ -0,0 +1,26 @@ +/* + * Author: PabstMirror + * Handles when a unit is kill. Reset captivity and escorting status when getting killed + * + * Arguments: + * 0: _oldUnit + * + * Return Value: + * None + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_1(_oldUnit); + +if (_oldUnit getVariable ["ACE_isCaptive", false]) then { + _oldUnit setVariable ["ACE_isCaptive", false, true]; +}; + +if (_oldUnit getVariable ["ACE_isEscorting", false]) then { + _oldUnit setVariable ["ACE_isEscorting", false, true] +}; diff --git a/addons/captives/functions/fnc_handleUnitInitPost.sqf b/addons/captives/functions/fnc_handleUnitInitPost.sqf new file mode 100644 index 0000000000..97362b1b96 --- /dev/null +++ b/addons/captives/functions/fnc_handleUnitInitPost.sqf @@ -0,0 +1,29 @@ +/* +* Author: commy2 +* handle captive and unconsciousness state and prevent grenades +* +* Arguments: +* 0: _unit +* +* Return Value: +* The return value +* +* Example: +* TODO +* +* Public: No +*/ +#include "script_component.hpp" + +PARAMS_1(_unit); + +// prevent players from throwing grenades +[_unit, "Throw", {(_this select 1) getVariable ["ACE_isCaptive", false]}, {}] call EFUNC(common,addActionEventhandler); + +if (local _unit) then { + // reset status on mission start + if (_unit getVariable ["ACE_isCaptive", false]) then { + _unit setVariable ["ACE_isCaptive", false]; + [_unit, true] call FUNC(setCaptive); + }; +}; diff --git a/addons/captives/functions/fnc_initPost.sqf b/addons/captives/functions/fnc_initPost.sqf deleted file mode 100644 index 8e777a9717..0000000000 --- a/addons/captives/functions/fnc_initPost.sqf +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Author: commy2 - * TODO - * - * Arguments: - * 0: _unit - * - * Return Value: - * The return value - * - * Example: - * TODO - * - * Public: No - */ -#include "script_component.hpp" - -PARAMS_1(_unit); - -// reset status on mission start -if (_unit getVariable ["ACE_isCaptive", false]) then { - _unit setVariable ["ACE_isCaptive", false]; - [_unit, true] call ACE_Captives_fnc_setCaptive; -}; diff --git a/addons/captives/functions/fnc_initUnit.sqf b/addons/captives/functions/fnc_initUnit.sqf deleted file mode 100644 index df9356ff2a..0000000000 --- a/addons/captives/functions/fnc_initUnit.sqf +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Author: commy2 - * TODO - * - * Arguments: - * 0: _unit - * - * Return Value: - * The return value - * - * Example: - * TODO - * - * Public: No - */ -#include "script_component.hpp" - -PARAMS_1(_unit); - - -// prevent players from throwing grenades -[_unit, "Throw", {(_this select 1) getVariable ["ACE_isCaptive", false]}, {}] call EFUNC(common,addActionEventhandler); diff --git a/addons/captives/functions/fnc_loadCaptive.sqf b/addons/captives/functions/fnc_loadCaptive.sqf index 05f87a20c6..680fee343c 100644 --- a/addons/captives/functions/fnc_loadCaptive.sqf +++ b/addons/captives/functions/fnc_loadCaptive.sqf @@ -31,6 +31,6 @@ if (isNull _vehicle) then { }; if ((!isNil "_target") && {!isNil "_vehicle"}) then { - _unit setVariable ["ACE_isEscorting", false]; + _unit setVariable ["ACE_isEscorting", false, true]; ["MoveInCaptive", [_target], [_target, _vehicle]] call EFUNC(common,targetEvent); }; From 435b3b8b867922ddc0c6ac5ee4d3700809e714ca Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 4 Feb 2015 13:16:19 -0600 Subject: [PATCH 088/211] Move Code out of CfgVehicles --- addons/captives/CfgVehicles.hpp | 20 +++---- addons/captives/XEH_preInit.sqf | 16 ++++-- addons/captives/config.cpp | 8 ++- .../functions/fnc_canEscortCaptive.sqf | 24 ++++++++ .../captives/functions/fnc_canFriskPerson.sqf | 2 +- .../captives/functions/fnc_canLoadCaptive.sqf | 4 +- .../functions/fnc_canReleaseCaptive.sqf | 23 ++++++++ .../functions/fnc_canStopEscorting.sqf | 41 ++++++++++++++ .../captives/functions/fnc_canTakeCaptive.sqf | 23 ++++++++ .../functions/fnc_canUnloadCaptive.sqf | 2 +- .../functions/fnc_doEscortCaptive.sqf | 56 +++++++++++++++++++ ...penFriskMenu.sqf => fnc_doFriskPerson.sqf} | 0 ..._loadCaptive.sqf => fnc_doLoadCaptive.sqf} | 4 +- .../functions/fnc_doReleaseCaptive.sqf | 21 +++++++ .../captives/functions/fnc_doTakeCaptive.sqf | 22 ++++++++ ...oadCaptive.sqf => fnc_doUnloadCaptive.sqf} | 2 +- .../captives/functions/fnc_escortCaptive.sqf | 55 ------------------ addons/captives/functions/fnc_handleGetIn.sqf | 4 +- .../captives/functions/fnc_handleGetOut.sqf | 2 +- .../captives/functions/fnc_handleKilled.sqf | 8 +-- .../functions/fnc_handlePlayerChanged.sqf | 2 +- .../functions/fnc_handleUnitInitPost.sqf | 6 +- .../captives/functions/fnc_handleWokeUp.sqf | 2 +- addons/captives/functions/fnc_setCaptive.sqf | 10 ++-- addons/captives/functions/fnc_surrender.sqf | 10 ++-- addons/interaction/config.cpp | 9 --- 26 files changed, 265 insertions(+), 111 deletions(-) create mode 100644 addons/captives/functions/fnc_canEscortCaptive.sqf create mode 100644 addons/captives/functions/fnc_canReleaseCaptive.sqf create mode 100644 addons/captives/functions/fnc_canStopEscorting.sqf create mode 100644 addons/captives/functions/fnc_canTakeCaptive.sqf create mode 100644 addons/captives/functions/fnc_doEscortCaptive.sqf rename addons/captives/functions/{fnc_openFriskMenu.sqf => fnc_doFriskPerson.sqf} (100%) rename addons/captives/functions/{fnc_loadCaptive.sqf => fnc_doLoadCaptive.sqf} (84%) create mode 100644 addons/captives/functions/fnc_doReleaseCaptive.sqf create mode 100644 addons/captives/functions/fnc_doTakeCaptive.sqf rename addons/captives/functions/{fnc_unloadCaptive.sqf => fnc_doUnloadCaptive.sqf} (87%) delete mode 100644 addons/captives/functions/fnc_escortCaptive.sqf diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index 04b8d4569f..059b07cfb8 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -5,8 +5,8 @@ class CfgVehicles { class ACE_SetCaptive { displayName = "$STR_ACE_Captives_SetCaptive"; distance = 4; - condition = QUOTE(('ACE_CableTie' in (items _player)) && {alive _target} && {!(_target getVariable [ARR_2('ACE_isCaptive', false)])}); - statement = QUOTE(_player removeItem 'ACE_CableTie'; [ARR_3('SetCaptive', [_target], [ARR_2(_target, true)])] call EFUNC(common,targetEvent);); + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canTakeCaptive)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doTakeCaptive)); showDisabled = 0; priority = 2.4; icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); @@ -15,8 +15,8 @@ class CfgVehicles { class ACE_ReleaseCaptive { displayName = "$STR_ACE_Captives_ReleaseCaptive"; distance = 4; - condition = QUOTE(_target getVariable [ARR_2('ACE_isCaptive', false)] && {isNull (attachedTo _target)}); - statement = QUOTE([ARR_3('SetCaptive', [_target], [ARR_2(_target, false)])] call EFUNC(common,targetEvent);); + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canReleaseCaptive)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doReleaseCaptive)); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; priority = 2.4; @@ -26,8 +26,8 @@ class CfgVehicles { class ACE_EscortCaptive { displayName = "$STR_ACE_Captives_EscortCaptive"; distance = 4; - condition = QUOTE((_target getVariable [ARR_2('ACE_isCaptive', false)]) && {isNull (attachedTo _target)} && {alive _target} && {!(_target getVariable [ARR_2('ACE_isUnconscious', false)])}); - statement = QUOTE([ARR_2(_target, true)] call FUNC(escortCaptive)); + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canEscortCaptive)); + statement = QUOTE([ARR_2(_target, true)] call FUNC(doEscortCaptive)); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; icon = QUOTE(PATHTOF(UI\captive_ca.paa)); @@ -37,8 +37,8 @@ class CfgVehicles { class ACE_StopEscorting { displayName = "$STR_ACE_Captives_StopEscorting"; distance = 4; - condition = QUOTE((_target getVariable [ARR_2('ACE_isCaptive', false)]) && {_target in (attachedObjects _player)}); - statement = QUOTE([ARR_2(_target, false)] call FUNC(escortCaptive)); + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting)); + statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive)); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; icon = QUOTE(PATHTOF(UI\captive_ca.paa)); @@ -71,8 +71,8 @@ class CfgVehicles { class ACE_SelfActions { class ACE_StopEscortingSelf { displayName = "$STR_ACE_Captives_StopEscorting"; - condition = QUOTE(((_player getVariable [ARR_2('ACE_escortedUnit', objNull)]) getVariable ['ACE_isCaptive', false]) && {(_player getVariable [ARR_2('ACE_escortedUnit', objNull)]) in attachedObjects _player}); - statement = QUOTE([ARR_2((_player getVariable [ARR_2('ACE_escortedUnit', objNull)]), false)] call FUNC(_escortCaptive);); + condition = QUOTE([ARR_2(_player, objNull)] call FUNC(canStopEscorting)); + statement = QUOTE([ARR_3(_player,objNull, false)] call FUNC(doEscortCaptive)); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; priority = 2.3; diff --git a/addons/captives/XEH_preInit.sqf b/addons/captives/XEH_preInit.sqf index 5ff2379c0b..b3de41ae69 100644 --- a/addons/captives/XEH_preInit.sqf +++ b/addons/captives/XEH_preInit.sqf @@ -2,22 +2,28 @@ ADDON = false; +PREP(canEscortCaptive); PREP(canFriskPerson); PREP(canLoadCaptive); +PREP(canReleaseCaptive); +PREP(canStopEscorting); +PREP(canTakeCaptive); PREP(canUnloadCaptive); -PREP(escortCaptive); +PREP(doEscortCaptive); +PREP(doFriskPerson); +PREP(doLoadCaptive); +PREP(doReleaseCaptive); +PREP(doTakeCaptive); +PREP(doUnloadCaptive); PREP(handleGetIn); PREP(handleGetOut); PREP(handleKilled); PREP(handleKnockedOut); PREP(handlePlayerChanged); -PREP(handleWokeUp); PREP(handleUnitInitPost); -PREP(loadCaptive); -PREP(openFriskMenu); +PREP(handleWokeUp); PREP(setCaptive); PREP(surrender); -PREP(unloadCaptive); PREP(vehicleCaptiveMoveIn); PREP(vehicleCaptiveMoveOut); diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index 7bef039e37..d7cb36371d 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -17,15 +17,17 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" +#define GVARFIX(var1) getVariable [ARR_2(QUOTE(GVAR(var1)), false)] + class ACE_canInteractConditions { class GVAR(isNotEscorting) { - condition = QUOTE(!(_player getVariable ['ACE_isEscorting', false])"; + condition = QUOTE(!(GETVAR(player,QGVAR(isEscorting),false))); }; class GVAR(isNotCaptive) { - condition = "!(_player getVariable ['ACE_isCaptive', false])"; + condition = QUOTE(!(GETVAR(player,QGVAR(isCaptive),false))); }; class GVAR(isNotSurrendering) { - condition = "!(_player getVariable ['ACE_isSurrender', false])"; + condition = QUOTE(!(GETVAR(player,QGVAR(isSurrender),false))); }; }; diff --git a/addons/captives/functions/fnc_canEscortCaptive.sqf b/addons/captives/functions/fnc_canEscortCaptive.sqf new file mode 100644 index 0000000000..40a3e0d560 --- /dev/null +++ b/addons/captives/functions/fnc_canEscortCaptive.sqf @@ -0,0 +1,24 @@ +/* + * Author: PabstMirror + * Tests if can escort target (attach) + * + * Arguments: + * 0: caller (player) + * 1: target + * + * Return Value: + * The return value + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_unit,_target); + +(_target getVariable [QGVAR(isCaptive), false]) && +{isNull (attachedTo _target)} && +{alive _target} && +{!(_target getVariable [QGVAR(ACE_isUnconscious), false])} diff --git a/addons/captives/functions/fnc_canFriskPerson.sqf b/addons/captives/functions/fnc_canFriskPerson.sqf index 62d5a06742..6ee44b2af5 100644 --- a/addons/captives/functions/fnc_canFriskPerson.sqf +++ b/addons/captives/functions/fnc_canFriskPerson.sqf @@ -18,6 +18,6 @@ PARAMS_2(_unit,_target); -_target getVariable ["ACE_isCaptive", false] +_target getVariable [QGVAR(isCaptive), false] || {_target getVariable ["ACE_isSearchable", false]} || {_target getVariable ["ACE_isUnconscious", false]} diff --git a/addons/captives/functions/fnc_canLoadCaptive.sqf b/addons/captives/functions/fnc_canLoadCaptive.sqf index b8021e602f..a05765b195 100644 --- a/addons/captives/functions/fnc_canLoadCaptive.sqf +++ b/addons/captives/functions/fnc_canLoadCaptive.sqf @@ -23,7 +23,7 @@ PARAMS_3(_unit,_target,_vehicle); if (isNull _target) then { _objects = attachedObjects _unit; - _objects = [_objects, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); + _objects = [_objects, {_this getVariable [QGVAR(isCaptive), false]}] call EFUNC(common,filter); _target = _objects select 0; }; @@ -32,7 +32,7 @@ if (isNull _vehicle) then { _vehicle = _objects select 0; }; -_unit getVariable ["ACE_isEscorting", false] +_unit getVariable [QGVAR(isEscorting), false] && {!isNil "_target"} && {!isNil "_vehicle"} && {_vehicle emptyPositions "cargo" > 0} diff --git a/addons/captives/functions/fnc_canReleaseCaptive.sqf b/addons/captives/functions/fnc_canReleaseCaptive.sqf new file mode 100644 index 0000000000..50b4c55310 --- /dev/null +++ b/addons/captives/functions/fnc_canReleaseCaptive.sqf @@ -0,0 +1,23 @@ +/* + * Author: PabstMirror + * Checks the conditions for being able to release a captive + * + * Arguments: + * 0: caller (player) + * 1: target + * + * Return Value: + * The return value + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_unit,_target); + +//Unit is captive and not being escorted +_target getVariable [QGVAR(isCaptive), false] && +{isNull (attachedTo _target)} diff --git a/addons/captives/functions/fnc_canStopEscorting.sqf b/addons/captives/functions/fnc_canStopEscorting.sqf new file mode 100644 index 0000000000..4f30e7a82a --- /dev/null +++ b/addons/captives/functions/fnc_canStopEscorting.sqf @@ -0,0 +1,41 @@ +/* + * Author: PabstMirror + * Tests if player can stop escorting + * + * Arguments: + * 0: caller (player) + * 1: target + * + * Return Value: + * The return value + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_1(_unit); +DEFAULT_PARAM(1,_target,objNull); + +private ["_isAttached"]; + + +if (isNull _target) then { + _target = _unit getVariable ["ACE_escortedUnit", objNull]; +}; + +if (isNull _target) exitWith { + ERROR("Null Target (no ACE_escortedUnit)"); + false +}; + +_isAttached = _target in (attachedObjects _unit); + +if (_isAttached && (!(_target getVariable [QGVAR(isCaptive), false]))) exitWith { + ERROR("Attached But Not Captive"); + false +}; + +_isAttached diff --git a/addons/captives/functions/fnc_canTakeCaptive.sqf b/addons/captives/functions/fnc_canTakeCaptive.sqf new file mode 100644 index 0000000000..f67f6110bf --- /dev/null +++ b/addons/captives/functions/fnc_canTakeCaptive.sqf @@ -0,0 +1,23 @@ +/* + * Author: PabstMirror + * Checks the conditions for being able to take a unit captive + * + * Arguments: + * 0: caller (player) + * 1: target + * + * Return Value: + * The return value + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_unit,_target); + +("ACE_CableTie" in (items _unit)) && +{alive _target} && +{!(_target getVariable [QGVAR(isCaptive), false])} diff --git a/addons/captives/functions/fnc_canUnloadCaptive.sqf b/addons/captives/functions/fnc_canUnloadCaptive.sqf index b714ebc8ae..1aef4602e1 100644 --- a/addons/captives/functions/fnc_canUnloadCaptive.sqf +++ b/addons/captives/functions/fnc_canUnloadCaptive.sqf @@ -23,6 +23,6 @@ PARAMS_2(_unit,_vehicle); _cargo = crew _vehicle; // Can also unload from driver, gunner, commander, turret positions. They shouldn't be there anyway. -_cargo = [_cargo, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); +_cargo = [_cargo, {_this getVariable [QGVAR(isCaptive), false]}] call EFUNC(common,filter); count _cargo > 0 diff --git a/addons/captives/functions/fnc_doEscortCaptive.sqf b/addons/captives/functions/fnc_doEscortCaptive.sqf new file mode 100644 index 0000000000..05dc912205 --- /dev/null +++ b/addons/captives/functions/fnc_doEscortCaptive.sqf @@ -0,0 +1,56 @@ +/* + * Author: Nic547 + * Attaches a Captive to the _unit + * + * Arguments: + * 0: _unit-Player + * 1: target + * 2: _state + * + * Return Value: + * The return value + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_3(_unit,_target,_state); + +if !("ACE_Handcuffed" in ([_target] call ACE_Core_fnc_getCaptivityStatus)) exitWith { + [localize "STR_ACE_Captives_NoCaptive"] call EFUNC(common,displayTextStructured); +}; + +if (_state) then { + if (_unit getVariable [QGVAR(isEscorting), false]) exitWith {}; + + [_unit, _target] call EFUNC(common,claim); + _unit setVariable [QGVAR(isEscorting), true, true]; + + _target attachTo [_unit, [0, 1, 0]]; + + _unit setVariable ["ACE_escortedUnit", _target, true]; + _actionID = _unit addAction [format ["%1", localize "STR_ACE_Captives_StopEscorting"], "[_unit getVariable ['ACE_escortedUnit', objNull], false] call ACE_Captives_fnc_escortCaptive;", nil, 20, false, true, "", "!isNull (_unit getVariable ['ACE_escortedUnit', objNull])"]; + + [_target, _actionID] spawn { + _target = _this select 0; + _actionID = _this select 1; + + while {_unit getVariable [QGVAR(isEscorting), false]} do { + sleep 0.2; + + if (!alive _target || {!alive _unit} || {!canStand _target} || {!canStand _unit} || {_target getVariable ["ACE_isUnconscious", false]} || {_unit getVariable ["ACE_isUnconscious", false]} || {!isNull (attachedTo _unit)}) then { + _unit setVariable [QGVAR(isEscorting), false, true]; + }; + }; + [objNull, _target] call EFUNC(common,claim); + + detach _target; + _unit removeAction _actionID; + }; +} else { + _unit setVariable [QGVAR(isEscorting), false, true]; + _unit setVariable ["ACE_escortedUnit", objNull, true]; +}; diff --git a/addons/captives/functions/fnc_openFriskMenu.sqf b/addons/captives/functions/fnc_doFriskPerson.sqf similarity index 100% rename from addons/captives/functions/fnc_openFriskMenu.sqf rename to addons/captives/functions/fnc_doFriskPerson.sqf diff --git a/addons/captives/functions/fnc_loadCaptive.sqf b/addons/captives/functions/fnc_doLoadCaptive.sqf similarity index 84% rename from addons/captives/functions/fnc_loadCaptive.sqf rename to addons/captives/functions/fnc_doLoadCaptive.sqf index 680fee343c..1ef650b4ee 100644 --- a/addons/captives/functions/fnc_loadCaptive.sqf +++ b/addons/captives/functions/fnc_doLoadCaptive.sqf @@ -21,7 +21,7 @@ PARAMS_3(_unit,_target,_vehicle); if (isNull _target) then { _objects = attachedObjects _unit; - _objects = [_objects, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); + _objects = [_objects, {_this getVariable [QGVAR(isCaptive), false]}] call EFUNC(common,filter); _target = _objects select 0; }; @@ -31,6 +31,6 @@ if (isNull _vehicle) then { }; if ((!isNil "_target") && {!isNil "_vehicle"}) then { - _unit setVariable ["ACE_isEscorting", false, true]; + _unit setVariable [QGVAR(isEscorting), false, true]; ["MoveInCaptive", [_target], [_target, _vehicle]] call EFUNC(common,targetEvent); }; diff --git a/addons/captives/functions/fnc_doReleaseCaptive.sqf b/addons/captives/functions/fnc_doReleaseCaptive.sqf new file mode 100644 index 0000000000..a807959565 --- /dev/null +++ b/addons/captives/functions/fnc_doReleaseCaptive.sqf @@ -0,0 +1,21 @@ +/* + * Author: PabstMirror + * Release a captive + * + * Arguments: + * 0: caller (player) + * 1: target + * + * Return Value: + * The return value + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_unit,_target); + +["SetCaptive", [_target], [_target, false]] call EFUNC(common,targetEvent); diff --git a/addons/captives/functions/fnc_doTakeCaptive.sqf b/addons/captives/functions/fnc_doTakeCaptive.sqf new file mode 100644 index 0000000000..8deb712d09 --- /dev/null +++ b/addons/captives/functions/fnc_doTakeCaptive.sqf @@ -0,0 +1,22 @@ +/* + * Author: PabstMirror + * Checks the conditions for being able to take a unit captive + * + * Arguments: + * 0: caller (player) + * 1: target + * + * Return Value: + * The return value + * + * Example: + * - + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_unit,_target); + +_unit removeItem 'ACE_CableTie'; +["SetCaptive", [_target], [_target, true]] call EFUNC(common,targetEvent); diff --git a/addons/captives/functions/fnc_unloadCaptive.sqf b/addons/captives/functions/fnc_doUnloadCaptive.sqf similarity index 87% rename from addons/captives/functions/fnc_unloadCaptive.sqf rename to addons/captives/functions/fnc_doUnloadCaptive.sqf index 057b825d12..1a6b6a2d0c 100644 --- a/addons/captives/functions/fnc_unloadCaptive.sqf +++ b/addons/captives/functions/fnc_doUnloadCaptive.sqf @@ -22,7 +22,7 @@ private ["_cargo", "_target"]; _cargo = crew _vehicle; // Can also unload from driver, gunner, commander, turret positions. They shouldn't be there anyway. -_cargo = [_cargo, {_this getVariable ["ACE_isCaptive", false]}] call EFUNC(common,filter); +_cargo = [_cargo, {_this getVariable [QGVAR(isCaptive), false]}] call EFUNC(common,filter); if ((count _cargo) > 0) then { _target = _cargo select 0; diff --git a/addons/captives/functions/fnc_escortCaptive.sqf b/addons/captives/functions/fnc_escortCaptive.sqf deleted file mode 100644 index c3030a9d33..0000000000 --- a/addons/captives/functions/fnc_escortCaptive.sqf +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Author: Nic547 - * Attaches a Captive to the player - * - * Arguments: - * 0: _unit - * 1: _state - * - * Return Value: - * The return value - * - * Example: - * - - * - * Public: No - */ -#include "script_component.hpp" - -PARAMS_2(_unit,_state); - -if !("ACE_Handcuffed" in ([_unit] call ACE_Core_fnc_getCaptivityStatus)) exitWith { - [localize "STR_ACE_Captives_NoCaptive"] call EFUNC(common,displayTextStructured); -}; - -if (_state) then { - if (player getVariable ["ACE_isEscorting", false]) exitWith {}; - - [player, _unit] call EFUNC(common,claim); - player setVariable ["ACE_isEscorting", true, true]; - - _unit attachTo [player, [0, 1, 0]]; - - player setVariable ["ACE_escortedUnit", _unit, true]; - _actionID = player addAction [format ["%1", localize "STR_ACE_Captives_StopEscorting"], "[player getVariable ['ACE_escortedUnit', objNull], false] call ACE_Captives_fnc_escortCaptive;", nil, 20, false, true, "", "!isNull (player getVariable ['ACE_escortedUnit', objNull])"]; - - [_unit, _actionID] spawn { - _unit = _this select 0; - _actionID = _this select 1; - - while {player getVariable ["ACE_isEscorting", false]} do { - sleep 0.2; - - if (!alive _unit || {!alive player} || {!canStand _unit} || {!canStand player} || {_unit getVariable ["ACE_isUnconscious", false]} || {player getVariable ["ACE_isUnconscious", false]} || {!isNull (attachedTo player)}) then { - player setVariable ["ACE_isEscorting", false, true]; - }; - }; - [objNull, _unit] call EFUNC(common,claim); - - detach _unit; - player removeAction _actionID; - }; -} else { - player setVariable ["ACE_isEscorting", false, true]; - player setVariable ["ACE_escortedUnit", objNull, true]; -}; diff --git a/addons/captives/functions/fnc_handleGetIn.sqf b/addons/captives/functions/fnc_handleGetIn.sqf index dc0b5aa5af..eb3a9ad8b1 100644 --- a/addons/captives/functions/fnc_handleGetIn.sqf +++ b/addons/captives/functions/fnc_handleGetIn.sqf @@ -19,6 +19,6 @@ PARAMS_3(_vehicle,_dontcare,_unit); -if ((local _unit) && (_unit getVariable ["ACE_isEscorting", false])) then { - _unit setVariable ["ACE_isEscorting", false, true]; +if ((local _unit) && (_unit getVariable [QGVAR(isEscorting), false])) then { + _unit setVariable [QGVAR(isEscorting), false, true]; }; diff --git a/addons/captives/functions/fnc_handleGetOut.sqf b/addons/captives/functions/fnc_handleGetOut.sqf index 82e6417eab..84c856ed39 100644 --- a/addons/captives/functions/fnc_handleGetOut.sqf +++ b/addons/captives/functions/fnc_handleGetOut.sqf @@ -19,7 +19,7 @@ PARAMS_3(_vehicle,_dontcare,_unit); -if ((local _unit)&&(_unit getVariable ["ACE_isCaptive", false])) then { +if ((local _unit)&&(_unit getVariable [QGVAR(isCaptive), false])) then { private ["_cargoIndex"]; diff --git a/addons/captives/functions/fnc_handleKilled.sqf b/addons/captives/functions/fnc_handleKilled.sqf index 2d476f662c..6e41fa801a 100644 --- a/addons/captives/functions/fnc_handleKilled.sqf +++ b/addons/captives/functions/fnc_handleKilled.sqf @@ -17,10 +17,10 @@ PARAMS_1(_oldUnit); -if (_oldUnit getVariable ["ACE_isCaptive", false]) then { - _oldUnit setVariable ["ACE_isCaptive", false, true]; +if (_oldUnit getVariable [QGVAR(isCaptive), false]) then { + _oldUnit setVariable [QGVAR(isCaptive), false, true]; }; -if (_oldUnit getVariable ["ACE_isEscorting", false]) then { - _oldUnit setVariable ["ACE_isEscorting", false, true] +if (_oldUnit getVariable [QGVAR(isEscorting), false]) then { + _oldUnit setVariable [QGVAR(isEscorting), false, true] }; diff --git a/addons/captives/functions/fnc_handlePlayerChanged.sqf b/addons/captives/functions/fnc_handlePlayerChanged.sqf index f23e380dd3..d7efa70a5f 100644 --- a/addons/captives/functions/fnc_handlePlayerChanged.sqf +++ b/addons/captives/functions/fnc_handlePlayerChanged.sqf @@ -18,7 +18,7 @@ PARAMS_2(_unit,_oldUnit); -if (_unit getVariable ["ACE_isCaptive", false]) then { +if (_unit getVariable [QGVAR(isCaptive), false]) then { showHUD false; } else { showHUD true; diff --git a/addons/captives/functions/fnc_handleUnitInitPost.sqf b/addons/captives/functions/fnc_handleUnitInitPost.sqf index 97362b1b96..a0e76c0a10 100644 --- a/addons/captives/functions/fnc_handleUnitInitPost.sqf +++ b/addons/captives/functions/fnc_handleUnitInitPost.sqf @@ -18,12 +18,12 @@ PARAMS_1(_unit); // prevent players from throwing grenades -[_unit, "Throw", {(_this select 1) getVariable ["ACE_isCaptive", false]}, {}] call EFUNC(common,addActionEventhandler); +[_unit, "Throw", {(_this select 1) getVariable [QGVAR(isCaptive), false]}, {}] call EFUNC(common,addActionEventhandler); if (local _unit) then { // reset status on mission start - if (_unit getVariable ["ACE_isCaptive", false]) then { - _unit setVariable ["ACE_isCaptive", false]; + if (_unit getVariable [QGVAR(isCaptive), false]) then { + _unit setVariable [QGVAR(isCaptive), false]; [_unit, true] call FUNC(setCaptive); }; }; diff --git a/addons/captives/functions/fnc_handleWokeUp.sqf b/addons/captives/functions/fnc_handleWokeUp.sqf index ea6a1bcb26..2973aa7f83 100644 --- a/addons/captives/functions/fnc_handleWokeUp.sqf +++ b/addons/captives/functions/fnc_handleWokeUp.sqf @@ -17,7 +17,7 @@ PARAMS_1(_unit); -if (_unit getVariable ["ACE_isCaptive", false] && {vehicle _unit == _unit}) then { +if (_unit getVariable [QGVAR(isCaptive), false] && {vehicle _unit == _unit}) then { [_unit] call EFUNC(common,fixLoweredRifleAnimation); [_unit, "ACE_AmovPercMstpScapWnonDnon", 0] call EFUNC(common,doAnimation); }; diff --git a/addons/captives/functions/fnc_setCaptive.sqf b/addons/captives/functions/fnc_setCaptive.sqf index b4c047dd1b..eca34b3bac 100644 --- a/addons/captives/functions/fnc_setCaptive.sqf +++ b/addons/captives/functions/fnc_setCaptive.sqf @@ -21,15 +21,15 @@ PARAMS_2(_unit,_state); if (!local _unit) exitWith {[[_unit, _state, true], _fnc_scriptName, _unit] call ACE_Core_fnc_execRemoteFnc}; if (_state) then { - if (_unit getVariable ["ACE_isCaptive", false]) exitWith {}; + if (_unit getVariable [QGVAR(isCaptive), false]) exitWith {}; - _unit setVariable ["ACE_isCaptive", true, true]; + _unit setVariable [QGVAR(isCaptive), true, true]; // fix anim on mission start (should work on dedicated servers) _unit spawn { [_this, "ACE_Handcuffed", true] call ACE_Core_fnc_setCaptivityStatus; - if (_this getVariable ["ACE_isCaptive", false] && {vehicle _this == _this}) then { + if (_this getVariable [QGVAR(isCaptive), false] && {vehicle _this == _this}) then { [_this] call EFUNC(common,fixLoweredRifleAnimation); [_this, "ACE_AmovPercMstpScapWnonDnon", 0] spawn EFUNC(common,doAnimation); }; @@ -41,9 +41,9 @@ if (_state) then { showHUD false; }; } else { - if !(_unit getVariable ["ACE_isCaptive", false]) exitWith {}; + if !(_unit getVariable [QGVAR(isCaptive), false]) exitWith {}; - _unit setVariable ["ACE_isCaptive", false, true]; + _unit setVariable [QGVAR(isCaptive), false, true]; [_unit, "ACE_Handcuffed", false] call ACE_Core_fnc_setCaptivityStatus; if (vehicle _unit == _unit) then { [_unit, "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); diff --git a/addons/captives/functions/fnc_surrender.sqf b/addons/captives/functions/fnc_surrender.sqf index 92f0ea416a..3d3b65ec49 100644 --- a/addons/captives/functions/fnc_surrender.sqf +++ b/addons/captives/functions/fnc_surrender.sqf @@ -21,9 +21,9 @@ PARAMS_2(_unit,_state); if (!local _unit) exitWith {[_this, _fnc_scriptName, _unit] call ACE_Core_fnc_execRemoteFnc}; if (_state) then { - if (_unit getVariable ["ACE_isSurrender", false]) exitWith {}; + if (_unit getVariable [QGVAR(isSurrender), false]) exitWith {}; - _unit setVariable ["ACE_isSurrender", true, true]; + _unit setVariable [QGVAR(isSurrender), true, true]; [_unit, "ACE_Surrendered", true] call ACE_Core_fnc_setCaptivityStatus; _unit spawn { @@ -32,13 +32,13 @@ if (_state) then { _this playMove "amovpercmstpsraswrfldnon"; }; - while {_this getVariable ["ACE_isSurrender", false]} do { + while {_this getVariable [QGVAR(isSurrender), false]} do { sleep 0.001; //sleep in UI if (isPlayer _this) then {showHUD false}; if (!alive _this || {_this getVariable ["ACE_isUnconscious", false]}) then { - _this setVariable ["ACE_isSurrender", false, true]; + _this setVariable [QGVAR(isSurrender), false, true]; } else { _this playMove "amovpercmstpsnonwnondnon_amovpercmstpssurwnondnon"; }; @@ -54,7 +54,7 @@ if (_state) then { if (isPlayer _this) then {showHUD true}; }; } else { - _unit setVariable ["ACE_isSurrender", false, true]; + _unit setVariable [QGVAR(isSurrender), false, true]; }; /* diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index acb41d362f..3b53855eef 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -38,15 +38,6 @@ class ACE_Parameters_Boolean { }; class ACE_canInteractConditions { - class GVAR(isNotEscorting) { - condition = QUOTE( !(ACE_player getVariable [ARR_2('ACE_isEscorting', false)]) ); - }; - class GVAR(isNotCaptive) { - condition = QUOTE( !(ACE_player getVariable [ARR_2('ACE_isCaptive', false)]) ); - }; - class GVAR(isNotSurrendering) { - condition = QUOTE( !(ACE_player getVariable [ARR_2('ACE_isSurrender', false)]) ); - }; class GVAR(isNotSwimming) { condition = QUOTE( !underwater ACE_player ); }; From 122a38a6aae70cdd5b978c028a5ca6486965b9a4 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 5 Feb 2015 16:39:45 -0600 Subject: [PATCH 089/211] More Refactoring --- addons/captives/CfgVehicles.hpp | 14 +++++----- addons/captives/XEH_postInitClient.sqf | 7 ++--- addons/captives/XEH_preInit.sqf | 12 ++++---- addons/captives/config.cpp | 6 ++-- ...eCaptive.sqf => fnc_canApplyHandcuffs.sqf} | 6 ++-- .../functions/fnc_canEscortCaptive.sqf | 2 +- .../captives/functions/fnc_canFriskPerson.sqf | 2 +- .../captives/functions/fnc_canLoadCaptive.sqf | 2 +- ...Captive.sqf => fnc_canRemoveHandcuffs.sqf} | 6 ++-- .../functions/fnc_canStopEscorting.sqf | 2 +- .../functions/fnc_canUnloadCaptive.sqf | 2 +- ...keCaptive.sqf => fnc_doApplyHandcuffs.sqf} | 6 ++-- .../functions/fnc_doEscortCaptive.sqf | 2 +- .../captives/functions/fnc_doLoadCaptive.sqf | 8 ++++-- ...eCaptive.sqf => fnc_doRemoveHandcuffs.sqf} | 2 +- .../functions/fnc_doUnloadCaptive.sqf | 2 +- .../captives/functions/fnc_handleGetOut.sqf | 7 ++--- .../captives/functions/fnc_handleKilled.sqf | 4 +-- .../functions/fnc_handlePlayerChanged.sqf | 2 +- .../functions/fnc_handleUnitInitPost.sqf | 10 +++---- .../captives/functions/fnc_handleWokeUp.sqf | 2 +- ...c_setCaptive.sqf => fnc_setHandcuffed.sqf} | 28 +++++++++++-------- addons/captives/functions/fnc_surrender.sqf | 4 +-- 23 files changed, 71 insertions(+), 67 deletions(-) rename addons/captives/functions/{fnc_canTakeCaptive.sqf => fnc_canApplyHandcuffs.sqf} (62%) rename addons/captives/functions/{fnc_canReleaseCaptive.sqf => fnc_canRemoveHandcuffs.sqf} (62%) rename addons/captives/functions/{fnc_doTakeCaptive.sqf => fnc_doApplyHandcuffs.sqf} (58%) rename addons/captives/functions/{fnc_doReleaseCaptive.sqf => fnc_doRemoveHandcuffs.sqf} (76%) rename addons/captives/functions/{fnc_setCaptive.sqf => fnc_setHandcuffed.sqf} (60%) diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index 059b07cfb8..b4a120bc22 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -2,21 +2,21 @@ class CfgVehicles { class Man; class CAManBase: Man { class ACE_Actions { - class ACE_SetCaptive { + class ACE_ApplyHandcuffs { displayName = "$STR_ACE_Captives_SetCaptive"; distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canTakeCaptive)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doTakeCaptive)); + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs)); showDisabled = 0; priority = 2.4; icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); hotkey = "C"; }; - class ACE_ReleaseCaptive { + class ACE_RemoveHandcuffs { displayName = "$STR_ACE_Captives_ReleaseCaptive"; distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canReleaseCaptive)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doReleaseCaptive)); + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs)); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; priority = 2.4; @@ -27,7 +27,7 @@ class CfgVehicles { displayName = "$STR_ACE_Captives_EscortCaptive"; distance = 4; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canEscortCaptive)); - statement = QUOTE([ARR_2(_target, true)] call FUNC(doEscortCaptive)); + statement = QUOTE([ARR_3(_target, _target, true)] call FUNC(doEscortCaptive)); exceptions[] = {"ACE_Interaction_isNotEscorting"}; showDisabled = 0; icon = QUOTE(PATHTOF(UI\captive_ca.paa)); diff --git a/addons/captives/XEH_postInitClient.sqf b/addons/captives/XEH_postInitClient.sqf index ccec1d39d2..b55c9eb10c 100644 --- a/addons/captives/XEH_postInitClient.sqf +++ b/addons/captives/XEH_postInitClient.sqf @@ -1,12 +1,9 @@ #include "script_component.hpp" -[missionNamespace, "playerChanged", {_this call ACE_Captives_fnc_handlePlayerChanged}] call ACE_Core_fnc_addCustomEventhandler; - - - +["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); ["MoveInCaptive", {_this call FUNC(vehicleCaptiveMoveIn)}] call EFUNC(common,addEventHandler); ["MoveOutCaptive", {_this call FUNC(vehicleCaptiveMoveOut)}] call EFUNC(common,addEventHandler); -["SetCaptive", {_this call FUNC(vehicleCaptiveMoveOut)}] call EFUNC(common,addEventHandler); +["SetHandcuffed", {_this call FUNC(setHandcuffed)}] call EFUNC(common,addEventHandler); //TODO: Medical Integration Events??? diff --git a/addons/captives/XEH_preInit.sqf b/addons/captives/XEH_preInit.sqf index b3de41ae69..e894cd1c31 100644 --- a/addons/captives/XEH_preInit.sqf +++ b/addons/captives/XEH_preInit.sqf @@ -1,19 +1,19 @@ #include "script_component.hpp" ADDON = false; - + +PREP(canApplyHandcuffs); PREP(canEscortCaptive); PREP(canFriskPerson); PREP(canLoadCaptive); -PREP(canReleaseCaptive); +PREP(canRemoveHandcuffs); PREP(canStopEscorting); -PREP(canTakeCaptive); PREP(canUnloadCaptive); +PREP(doApplyHandcuffs); PREP(doEscortCaptive); PREP(doFriskPerson); PREP(doLoadCaptive); -PREP(doReleaseCaptive); -PREP(doTakeCaptive); +PREP(doRemoveHandcuffs); PREP(doUnloadCaptive); PREP(handleGetIn); PREP(handleGetOut); @@ -22,7 +22,7 @@ PREP(handleKnockedOut); PREP(handlePlayerChanged); PREP(handleUnitInitPost); PREP(handleWokeUp); -PREP(setCaptive); +PREP(setHandcuffed); PREP(surrender); PREP(vehicleCaptiveMoveIn); PREP(vehicleCaptiveMoveOut); diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index d7cb36371d..bceeda3b2b 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -17,15 +17,13 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" -#define GVARFIX(var1) getVariable [ARR_2(QUOTE(GVAR(var1)), false)] - class ACE_canInteractConditions { class GVAR(isNotEscorting) { condition = QUOTE(!(GETVAR(player,QGVAR(isEscorting),false))); }; - class GVAR(isNotCaptive) { - condition = QUOTE(!(GETVAR(player,QGVAR(isCaptive),false))); + class GVAR(isNotHandcuffed) { + condition = QUOTE(!(GETVAR(player,QGVAR(isHandcuffed),false))); }; class GVAR(isNotSurrendering) { condition = QUOTE(!(GETVAR(player,QGVAR(isSurrender),false))); diff --git a/addons/captives/functions/fnc_canTakeCaptive.sqf b/addons/captives/functions/fnc_canApplyHandcuffs.sqf similarity index 62% rename from addons/captives/functions/fnc_canTakeCaptive.sqf rename to addons/captives/functions/fnc_canApplyHandcuffs.sqf index f67f6110bf..8a3d143e96 100644 --- a/addons/captives/functions/fnc_canTakeCaptive.sqf +++ b/addons/captives/functions/fnc_canApplyHandcuffs.sqf @@ -1,6 +1,6 @@ /* * Author: PabstMirror - * Checks the conditions for being able to take a unit captive + * Checks the conditions for being able to apply handcuffs * * Arguments: * 0: caller (player) @@ -18,6 +18,8 @@ PARAMS_2(_unit,_target); +//Player has cableTie, target is alive and not already handcuffed + ("ACE_CableTie" in (items _unit)) && {alive _target} && -{!(_target getVariable [QGVAR(isCaptive), false])} +{!(_target getVariable [QGVAR(isHandcuffed), false])} diff --git a/addons/captives/functions/fnc_canEscortCaptive.sqf b/addons/captives/functions/fnc_canEscortCaptive.sqf index 40a3e0d560..9bcb1d258a 100644 --- a/addons/captives/functions/fnc_canEscortCaptive.sqf +++ b/addons/captives/functions/fnc_canEscortCaptive.sqf @@ -18,7 +18,7 @@ PARAMS_2(_unit,_target); -(_target getVariable [QGVAR(isCaptive), false]) && +(_target getVariable [QGVAR(isHandcuffed), false]) && {isNull (attachedTo _target)} && {alive _target} && {!(_target getVariable [QGVAR(ACE_isUnconscious), false])} diff --git a/addons/captives/functions/fnc_canFriskPerson.sqf b/addons/captives/functions/fnc_canFriskPerson.sqf index 6ee44b2af5..9bbf5389c3 100644 --- a/addons/captives/functions/fnc_canFriskPerson.sqf +++ b/addons/captives/functions/fnc_canFriskPerson.sqf @@ -18,6 +18,6 @@ PARAMS_2(_unit,_target); -_target getVariable [QGVAR(isCaptive), false] +_target getVariable [QGVAR(isHandcuffed), false] || {_target getVariable ["ACE_isSearchable", false]} || {_target getVariable ["ACE_isUnconscious", false]} diff --git a/addons/captives/functions/fnc_canLoadCaptive.sqf b/addons/captives/functions/fnc_canLoadCaptive.sqf index a05765b195..3b1521e2be 100644 --- a/addons/captives/functions/fnc_canLoadCaptive.sqf +++ b/addons/captives/functions/fnc_canLoadCaptive.sqf @@ -23,7 +23,7 @@ PARAMS_3(_unit,_target,_vehicle); if (isNull _target) then { _objects = attachedObjects _unit; - _objects = [_objects, {_this getVariable [QGVAR(isCaptive), false]}] call EFUNC(common,filter); + _objects = [_objects, {_this getVariable [QGVAR(isHandcuffed), false]}] call EFUNC(common,filter); _target = _objects select 0; }; diff --git a/addons/captives/functions/fnc_canReleaseCaptive.sqf b/addons/captives/functions/fnc_canRemoveHandcuffs.sqf similarity index 62% rename from addons/captives/functions/fnc_canReleaseCaptive.sqf rename to addons/captives/functions/fnc_canRemoveHandcuffs.sqf index 50b4c55310..f36488fbf1 100644 --- a/addons/captives/functions/fnc_canReleaseCaptive.sqf +++ b/addons/captives/functions/fnc_canRemoveHandcuffs.sqf @@ -1,6 +1,6 @@ /* * Author: PabstMirror - * Checks the conditions for being able to release a captive + * Checks the conditions for being able to remove handcuffs * * Arguments: * 0: caller (player) @@ -18,6 +18,6 @@ PARAMS_2(_unit,_target); -//Unit is captive and not being escorted -_target getVariable [QGVAR(isCaptive), false] && +//Unit is handcuffed and not currently being escorted +_target getVariable [QGVAR(isHandcuffed), false] && {isNull (attachedTo _target)} diff --git a/addons/captives/functions/fnc_canStopEscorting.sqf b/addons/captives/functions/fnc_canStopEscorting.sqf index 4f30e7a82a..66cf12c9fc 100644 --- a/addons/captives/functions/fnc_canStopEscorting.sqf +++ b/addons/captives/functions/fnc_canStopEscorting.sqf @@ -33,7 +33,7 @@ if (isNull _target) exitWith { _isAttached = _target in (attachedObjects _unit); -if (_isAttached && (!(_target getVariable [QGVAR(isCaptive), false]))) exitWith { +if (_isAttached && (!(_target getVariable [QGVAR(isHandcuffed), false]))) exitWith { ERROR("Attached But Not Captive"); false }; diff --git a/addons/captives/functions/fnc_canUnloadCaptive.sqf b/addons/captives/functions/fnc_canUnloadCaptive.sqf index 1aef4602e1..3e014d72c7 100644 --- a/addons/captives/functions/fnc_canUnloadCaptive.sqf +++ b/addons/captives/functions/fnc_canUnloadCaptive.sqf @@ -23,6 +23,6 @@ PARAMS_2(_unit,_vehicle); _cargo = crew _vehicle; // Can also unload from driver, gunner, commander, turret positions. They shouldn't be there anyway. -_cargo = [_cargo, {_this getVariable [QGVAR(isCaptive), false]}] call EFUNC(common,filter); +_cargo = [_cargo, {_this getVariable [QGVAR(isHandcuffed), false]}] call EFUNC(common,filter); count _cargo > 0 diff --git a/addons/captives/functions/fnc_doTakeCaptive.sqf b/addons/captives/functions/fnc_doApplyHandcuffs.sqf similarity index 58% rename from addons/captives/functions/fnc_doTakeCaptive.sqf rename to addons/captives/functions/fnc_doApplyHandcuffs.sqf index 8deb712d09..9ae82916f7 100644 --- a/addons/captives/functions/fnc_doTakeCaptive.sqf +++ b/addons/captives/functions/fnc_doApplyHandcuffs.sqf @@ -1,6 +1,6 @@ /* * Author: PabstMirror - * Checks the conditions for being able to take a unit captive + * Checks the conditions for being able to apply handcuffs * * Arguments: * 0: caller (player) @@ -18,5 +18,5 @@ PARAMS_2(_unit,_target); -_unit removeItem 'ACE_CableTie'; -["SetCaptive", [_target], [_target, true]] call EFUNC(common,targetEvent); +_unit removeItem "ACE_CableTie"; +["SetHandcuffed", [_target], [_target, true]] call EFUNC(common,targetEvent); diff --git a/addons/captives/functions/fnc_doEscortCaptive.sqf b/addons/captives/functions/fnc_doEscortCaptive.sqf index 05dc912205..d782bd8c62 100644 --- a/addons/captives/functions/fnc_doEscortCaptive.sqf +++ b/addons/captives/functions/fnc_doEscortCaptive.sqf @@ -19,7 +19,7 @@ PARAMS_3(_unit,_target,_state); -if !("ACE_Handcuffed" in ([_target] call ACE_Core_fnc_getCaptivityStatus)) exitWith { +if !("ACE_Handcuffed" in ([_target] call EFUNC(common,getCaptivityStatus))) exitWith { [localize "STR_ACE_Captives_NoCaptive"] call EFUNC(common,displayTextStructured); }; diff --git a/addons/captives/functions/fnc_doLoadCaptive.sqf b/addons/captives/functions/fnc_doLoadCaptive.sqf index 1ef650b4ee..92d1adecf8 100644 --- a/addons/captives/functions/fnc_doLoadCaptive.sqf +++ b/addons/captives/functions/fnc_doLoadCaptive.sqf @@ -21,14 +21,16 @@ PARAMS_3(_unit,_target,_vehicle); if (isNull _target) then { _objects = attachedObjects _unit; - _objects = [_objects, {_this getVariable [QGVAR(isCaptive), false]}] call EFUNC(common,filter); - _target = _objects select 0; + _objects = [_objects, {_this getVariable [QGVAR(isHandcuffed), false]}] call EFUNC(common,filter); + if ((count _objects) > 0) then {_target = _objects select 0;}; }; +if (isNull _target) exitWith {}; if (isNull _vehicle) then { _objects = nearestObjects [_unit, ["Car_F", "Tank_F", "Helicopter_F", "Boat_F", "Plane_F"], 10]; - _vehicle = _objects select 0; + if ((count _objects) > 0) then {_vehicle = _objects select 0;}; }; +if (isNull _vehicle) exitWith {}; if ((!isNil "_target") && {!isNil "_vehicle"}) then { _unit setVariable [QGVAR(isEscorting), false, true]; diff --git a/addons/captives/functions/fnc_doReleaseCaptive.sqf b/addons/captives/functions/fnc_doRemoveHandcuffs.sqf similarity index 76% rename from addons/captives/functions/fnc_doReleaseCaptive.sqf rename to addons/captives/functions/fnc_doRemoveHandcuffs.sqf index a807959565..01ca4ef436 100644 --- a/addons/captives/functions/fnc_doReleaseCaptive.sqf +++ b/addons/captives/functions/fnc_doRemoveHandcuffs.sqf @@ -18,4 +18,4 @@ PARAMS_2(_unit,_target); -["SetCaptive", [_target], [_target, false]] call EFUNC(common,targetEvent); +["SetHandcuffed", [_target], [_target, false]] call EFUNC(common,targetEvent); diff --git a/addons/captives/functions/fnc_doUnloadCaptive.sqf b/addons/captives/functions/fnc_doUnloadCaptive.sqf index 1a6b6a2d0c..b4814fc564 100644 --- a/addons/captives/functions/fnc_doUnloadCaptive.sqf +++ b/addons/captives/functions/fnc_doUnloadCaptive.sqf @@ -22,7 +22,7 @@ private ["_cargo", "_target"]; _cargo = crew _vehicle; // Can also unload from driver, gunner, commander, turret positions. They shouldn't be there anyway. -_cargo = [_cargo, {_this getVariable [QGVAR(isCaptive), false]}] call EFUNC(common,filter); +_cargo = [_cargo, {_this getVariable [QGVAR(isHandcuffed), false]}] call EFUNC(common,filter); if ((count _cargo) > 0) then { _target = _cargo select 0; diff --git a/addons/captives/functions/fnc_handleGetOut.sqf b/addons/captives/functions/fnc_handleGetOut.sqf index 84c856ed39..00368532e7 100644 --- a/addons/captives/functions/fnc_handleGetOut.sqf +++ b/addons/captives/functions/fnc_handleGetOut.sqf @@ -19,12 +19,11 @@ PARAMS_3(_vehicle,_dontcare,_unit); -if ((local _unit)&&(_unit getVariable [QGVAR(isCaptive), false])) then { - +if ((local _unit) && {_unit getVariable [QGVAR(isHandcuffed), false]}) then { private ["_cargoIndex"]; - + _cargoIndex = _unit getVariable ["ACE_Captives_CargoIndex", -1]; - + //If captive was not "unloaded", then move them back into the vehicle. if (_cargoIndex != -1) exitWith { _unit moveInCargo [_vehicle, _cargoIndex]; diff --git a/addons/captives/functions/fnc_handleKilled.sqf b/addons/captives/functions/fnc_handleKilled.sqf index 6e41fa801a..5ac2935a2e 100644 --- a/addons/captives/functions/fnc_handleKilled.sqf +++ b/addons/captives/functions/fnc_handleKilled.sqf @@ -17,8 +17,8 @@ PARAMS_1(_oldUnit); -if (_oldUnit getVariable [QGVAR(isCaptive), false]) then { - _oldUnit setVariable [QGVAR(isCaptive), false, true]; +if (_oldUnit getVariable [QGVAR(isHandcuffed), false]) then { + _oldUnit setVariable [QGVAR(isHandcuffed), false, true]; }; if (_oldUnit getVariable [QGVAR(isEscorting), false]) then { diff --git a/addons/captives/functions/fnc_handlePlayerChanged.sqf b/addons/captives/functions/fnc_handlePlayerChanged.sqf index d7efa70a5f..c3e148d6c4 100644 --- a/addons/captives/functions/fnc_handlePlayerChanged.sqf +++ b/addons/captives/functions/fnc_handlePlayerChanged.sqf @@ -18,7 +18,7 @@ PARAMS_2(_unit,_oldUnit); -if (_unit getVariable [QGVAR(isCaptive), false]) then { +if (_unit getVariable [QGVAR(isHandcuffed), false]) then { showHUD false; } else { showHUD true; diff --git a/addons/captives/functions/fnc_handleUnitInitPost.sqf b/addons/captives/functions/fnc_handleUnitInitPost.sqf index a0e76c0a10..4450378129 100644 --- a/addons/captives/functions/fnc_handleUnitInitPost.sqf +++ b/addons/captives/functions/fnc_handleUnitInitPost.sqf @@ -17,13 +17,13 @@ PARAMS_1(_unit); -// prevent players from throwing grenades -[_unit, "Throw", {(_this select 1) getVariable [QGVAR(isCaptive), false]}, {}] call EFUNC(common,addActionEventhandler); +// prevent players from throwing grenades (added to all units) +[_unit, "Throw", {(_this select 1) getVariable [QGVAR(isHandcuffed), false]}, {}] call EFUNC(common,addActionEventhandler); if (local _unit) then { // reset status on mission start - if (_unit getVariable [QGVAR(isCaptive), false]) then { - _unit setVariable [QGVAR(isCaptive), false]; - [_unit, true] call FUNC(setCaptive); + if (_unit getVariable [QGVAR(isHandcuffed), false]) then { + _unit setVariable [QGVAR(isHandcuffed), false]; + [_unit, true] call FUNC(setHandcuffed); }; }; diff --git a/addons/captives/functions/fnc_handleWokeUp.sqf b/addons/captives/functions/fnc_handleWokeUp.sqf index 2973aa7f83..af59b5c56e 100644 --- a/addons/captives/functions/fnc_handleWokeUp.sqf +++ b/addons/captives/functions/fnc_handleWokeUp.sqf @@ -17,7 +17,7 @@ PARAMS_1(_unit); -if (_unit getVariable [QGVAR(isCaptive), false] && {vehicle _unit == _unit}) then { +if (_unit getVariable [QGVAR(isHandcuffed), false] && {vehicle _unit == _unit}) then { [_unit] call EFUNC(common,fixLoweredRifleAnimation); [_unit, "ACE_AmovPercMstpScapWnonDnon", 0] call EFUNC(common,doAnimation); }; diff --git a/addons/captives/functions/fnc_setCaptive.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf similarity index 60% rename from addons/captives/functions/fnc_setCaptive.sqf rename to addons/captives/functions/fnc_setHandcuffed.sqf index eca34b3bac..94967dfb20 100644 --- a/addons/captives/functions/fnc_setCaptive.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -1,6 +1,6 @@ /* * Author: Nic547, commy2 - * Makes a civilian unable to move. + * Handcuffs a unit * * Arguments: * 0: Unit @@ -18,18 +18,26 @@ PARAMS_2(_unit,_state); -if (!local _unit) exitWith {[[_unit, _state, true], _fnc_scriptName, _unit] call ACE_Core_fnc_execRemoteFnc}; +systemChat format ["set %1", _this]; + +if (!local _unit) exitWith { + ERROR("setHandcuffed unit not local"); +}; + +systemChat format ["set %1 %2 ", _state, (_unit getVariable [QGVAR(isHandcuffed), false])]; + +if (_state isEqualTo (_unit getVariable [QGVAR(isHandcuffed), false])) exitWith { + ERROR("new state equals current"); +}; if (_state) then { - if (_unit getVariable [QGVAR(isCaptive), false]) exitWith {}; - - _unit setVariable [QGVAR(isCaptive), true, true]; + _unit setVariable [QGVAR(isHandcuffed), true, true]; // fix anim on mission start (should work on dedicated servers) _unit spawn { - [_this, "ACE_Handcuffed", true] call ACE_Core_fnc_setCaptivityStatus; + [_this, QGVAR(Handcuffed), true] call EFUNC(common,setCaptivityStatus); - if (_this getVariable [QGVAR(isCaptive), false] && {vehicle _this == _this}) then { + if (_this getVariable [QGVAR(isHandcuffed), false] && {vehicle _this == _this}) then { [_this] call EFUNC(common,fixLoweredRifleAnimation); [_this, "ACE_AmovPercMstpScapWnonDnon", 0] spawn EFUNC(common,doAnimation); }; @@ -41,10 +49,8 @@ if (_state) then { showHUD false; }; } else { - if !(_unit getVariable [QGVAR(isCaptive), false]) exitWith {}; - - _unit setVariable [QGVAR(isCaptive), false, true]; - [_unit, "ACE_Handcuffed", false] call ACE_Core_fnc_setCaptivityStatus; + _unit setVariable [QGVAR(isHandcuffed), false, true]; + [_unit, "ACE_Handcuffed", false] call EFUNC(common,setCaptivityStatus); if (vehicle _unit == _unit) then { [_unit, "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); }; diff --git a/addons/captives/functions/fnc_surrender.sqf b/addons/captives/functions/fnc_surrender.sqf index 3d3b65ec49..69098c19a1 100644 --- a/addons/captives/functions/fnc_surrender.sqf +++ b/addons/captives/functions/fnc_surrender.sqf @@ -24,7 +24,7 @@ if (_state) then { if (_unit getVariable [QGVAR(isSurrender), false]) exitWith {}; _unit setVariable [QGVAR(isSurrender), true, true]; - [_unit, "ACE_Surrendered", true] call ACE_Core_fnc_setCaptivityStatus; + [_unit, "ACE_Surrendered", true] call EFUNC(common,setCaptivityStatus); _unit spawn { // fix for lowered rifle animation glitch @@ -49,7 +49,7 @@ if (_state) then { _this playMoveNow "unconscious"; }; - [_this, "ACE_Surrendered", false] call ACE_Core_fnc_setCaptivityStatus; + [_this, "ACE_Surrendered", false] call EFUNC(common,setCaptivityStatus); if (isPlayer _this) then {showHUD true}; }; From 82a8fc8ca315d21fee1ccf53a204ee093e976bc5 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 5 Feb 2015 23:11:28 -0600 Subject: [PATCH 090/211] exceptions --- addons/captives/CfgVehicles.hpp | 17 ++++--- .../functions/fnc_canEscortCaptive.sqf | 2 + .../functions/fnc_canStopEscorting.sqf | 2 +- .../functions/fnc_doEscortCaptive.sqf | 49 +++++++++---------- .../captives/functions/fnc_setHandcuffed.sqf | 5 +- addons/interaction/XEH_clientInit.sqf | 8 +-- 6 files changed, 41 insertions(+), 42 deletions(-) diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index b4a120bc22..8bd97b0b58 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -7,6 +7,7 @@ class CfgVehicles { distance = 4; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs)); statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs)); + exceptions[] = {}; showDisabled = 0; priority = 2.4; icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); @@ -17,7 +18,7 @@ class CfgVehicles { distance = 4; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs)); statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs)); - exceptions[] = {"ACE_Interaction_isNotEscorting"}; + exceptions[] = {}; showDisabled = 0; priority = 2.4; icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); @@ -27,8 +28,8 @@ class CfgVehicles { displayName = "$STR_ACE_Captives_EscortCaptive"; distance = 4; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canEscortCaptive)); - statement = QUOTE([ARR_3(_target, _target, true)] call FUNC(doEscortCaptive)); - exceptions[] = {"ACE_Interaction_isNotEscorting"}; + statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive)); + exceptions[] = {}; showDisabled = 0; icon = QUOTE(PATHTOF(UI\captive_ca.paa)); priority = 2.3; @@ -39,7 +40,7 @@ class CfgVehicles { distance = 4; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting)); statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive)); - exceptions[] = {"ACE_Interaction_isNotEscorting"}; + exceptions[] = {QGVAR(isNotEscorting)}; showDisabled = 0; icon = QUOTE(PATHTOF(UI\captive_ca.paa)); priority = 2.3; @@ -50,7 +51,7 @@ class CfgVehicles { distance = 4; condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive)); statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(loadCaptive)); - exceptions[] = {"ACE_Interaction_isNotEscorting"}; + exceptions[] = {QGVAR(isNotEscorting)}; showDisabled = 0; icon = QUOTE(PATHTOF(UI\captive_ca.paa)); priority = 2.2; @@ -73,7 +74,7 @@ class CfgVehicles { displayName = "$STR_ACE_Captives_StopEscorting"; condition = QUOTE([ARR_2(_player, objNull)] call FUNC(canStopEscorting)); statement = QUOTE([ARR_3(_player,objNull, false)] call FUNC(doEscortCaptive)); - exceptions[] = {"ACE_Interaction_isNotEscorting"}; + exceptions[] = {QGVAR(isNotEscorting)}; showDisabled = 0; priority = 2.3; hotkey = "C"; @@ -82,7 +83,7 @@ class CfgVehicles { displayName = "$STR_ACE_Captives_LoadCaptive"; condition = "[_player, objNull, objNull] call ACE_Captives_fnc_canLoadCaptiveIntoVehicle"; statement = "[_player, objNull, objNull] call ACE_Captives_fnc_loadCaptiveIntoVehicle"; - exceptions[] = {"ACE_Interaction_isNotEscorting"}; + exceptions[] = {QGVAR(isNotEscorting)}; showDisabled = 0; priority = 2.2; hotkey = "K"; @@ -97,7 +98,7 @@ class CfgVehicles { distance = 4; \ condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \ statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(loadCaptive)); \ - exceptions[] = {"ACE_Interaction_isNotEscorting"}; \ + exceptions[] = {QGVAR(isNotEscorting)}; \ showDisabled = 0; \ priority = 1.2; \ hotkey = "L"; \ diff --git a/addons/captives/functions/fnc_canEscortCaptive.sqf b/addons/captives/functions/fnc_canEscortCaptive.sqf index 9bcb1d258a..2d2fd5abe4 100644 --- a/addons/captives/functions/fnc_canEscortCaptive.sqf +++ b/addons/captives/functions/fnc_canEscortCaptive.sqf @@ -18,6 +18,8 @@ PARAMS_2(_unit,_target); +//Alive, handcuffed, not being escored, and not unconsious + (_target getVariable [QGVAR(isHandcuffed), false]) && {isNull (attachedTo _target)} && {alive _target} && diff --git a/addons/captives/functions/fnc_canStopEscorting.sqf b/addons/captives/functions/fnc_canStopEscorting.sqf index 66cf12c9fc..bb48244a25 100644 --- a/addons/captives/functions/fnc_canStopEscorting.sqf +++ b/addons/captives/functions/fnc_canStopEscorting.sqf @@ -23,7 +23,7 @@ private ["_isAttached"]; if (isNull _target) then { - _target = _unit getVariable ["ACE_escortedUnit", objNull]; + _target = _unit getVariable [QGVAR(escortedUnit), objNull]; }; if (isNull _target) exitWith { diff --git a/addons/captives/functions/fnc_doEscortCaptive.sqf b/addons/captives/functions/fnc_doEscortCaptive.sqf index d782bd8c62..72a0cd0c6c 100644 --- a/addons/captives/functions/fnc_doEscortCaptive.sqf +++ b/addons/captives/functions/fnc_doEscortCaptive.sqf @@ -19,38 +19,37 @@ PARAMS_3(_unit,_target,_state); -if !("ACE_Handcuffed" in ([_target] call EFUNC(common,getCaptivityStatus))) exitWith { - [localize "STR_ACE_Captives_NoCaptive"] call EFUNC(common,displayTextStructured); -}; - if (_state) then { - if (_unit getVariable [QGVAR(isEscorting), false]) exitWith {}; + if (_unit getVariable [QGVAR(isEscorting), false]) exitWith {}; - [_unit, _target] call EFUNC(common,claim); - _unit setVariable [QGVAR(isEscorting), true, true]; + [_unit, _target] call EFUNC(common,claim); + _unit setVariable [QGVAR(isEscorting), true, true]; - _target attachTo [_unit, [0, 1, 0]]; + _target attachTo [_unit, [0, 1, 0]]; - _unit setVariable ["ACE_escortedUnit", _target, true]; - _actionID = _unit addAction [format ["%1", localize "STR_ACE_Captives_StopEscorting"], "[_unit getVariable ['ACE_escortedUnit', objNull], false] call ACE_Captives_fnc_escortCaptive;", nil, 20, false, true, "", "!isNull (_unit getVariable ['ACE_escortedUnit', objNull])"]; + _unit setVariable [QGVAR(escortedUnit), _target, true]; - [_target, _actionID] spawn { - _target = _this select 0; - _actionID = _this select 1; + //Add Actionmenu to release captive + _actionID = _unit addAction [format ["%1", localize "STR_ACE_Captives_StopEscorting"], + {[(_this select 0), ((_this select 0) getVariable [QGVAR(escortedUnit), objNull]), false] call FUNC(doEscortCaptive);}, + nil, 20, false, true, "", QUOTE(!isNull (GETVAR(_target,QGVAR(escortedUnit),objNull)))]; - while {_unit getVariable [QGVAR(isEscorting), false]} do { - sleep 0.2; + [_unit, _target, _actionID] spawn { + PARAMS_3(_unit,_target,_actionID); - if (!alive _target || {!alive _unit} || {!canStand _target} || {!canStand _unit} || {_target getVariable ["ACE_isUnconscious", false]} || {_unit getVariable ["ACE_isUnconscious", false]} || {!isNull (attachedTo _unit)}) then { - _unit setVariable [QGVAR(isEscorting), false, true]; - }; + while {_unit getVariable [QGVAR(isEscorting), false]} do { + sleep 0.2; + + if (!alive _target || {!alive _unit} || {!canStand _target} || {!canStand _unit} || {_target getVariable ["ACE_isUnconscious", false]} || {_unit getVariable ["ACE_isUnconscious", false]} || {!isNull (attachedTo _unit)}) then { + _unit setVariable [QGVAR(isEscorting), false, true]; + }; + }; + [objNull, _target] call EFUNC(common,claim); + + detach _target; + _unit removeAction _actionID; }; - [objNull, _target] call EFUNC(common,claim); - - detach _target; - _unit removeAction _actionID; - }; } else { - _unit setVariable [QGVAR(isEscorting), false, true]; - _unit setVariable ["ACE_escortedUnit", objNull, true]; + _unit setVariable [QGVAR(isEscorting), false, true]; + _unit setVariable [QGVAR(escortedUnit), objNull, true]; }; diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index 94967dfb20..c28a26909f 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -18,14 +18,11 @@ PARAMS_2(_unit,_state); -systemChat format ["set %1", _this]; if (!local _unit) exitWith { ERROR("setHandcuffed unit not local"); }; -systemChat format ["set %1 %2 ", _state, (_unit getVariable [QGVAR(isHandcuffed), false])]; - if (_state isEqualTo (_unit getVariable [QGVAR(isHandcuffed), false])) exitWith { ERROR("new state equals current"); }; @@ -50,7 +47,7 @@ if (_state) then { }; } else { _unit setVariable [QGVAR(isHandcuffed), false, true]; - [_unit, "ACE_Handcuffed", false] call EFUNC(common,setCaptivityStatus); + [_unit, QGVAR(Handcuffed), true] call EFUNC(common,setCaptivityStatus); if (vehicle _unit == _unit) then { [_unit, "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); }; diff --git a/addons/interaction/XEH_clientInit.sqf b/addons/interaction/XEH_clientInit.sqf index bcc3f47def..71be601ac7 100644 --- a/addons/interaction/XEH_clientInit.sqf +++ b/addons/interaction/XEH_clientInit.sqf @@ -20,7 +20,7 @@ GVAR(isOpeningDoor) = false; localize "STR_ACE_Interaction_InteractionMenu", { // Conditions: canInteract - _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", "ACE_Interaction_isNotEscorting", "ACE_Interaction_isNotSwimming"]; + _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", QEGVAR(captives,isNotEscorting), "ACE_Interaction_isNotSwimming"]; if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; // Conditions: specific if !(isNull (findDisplay 1713999)) exitWith {false}; @@ -38,7 +38,7 @@ GVAR(isOpeningDoor) = false; localize "STR_ACE_Interaction_InteractionMenu", { // Conditions: canInteract - _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", "ACE_Interaction_isNotEscorting", "ACE_Interaction_isNotSwimming"]; + _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", QEGVAR(captives,isNotEscorting), "ACE_Interaction_isNotSwimming"]; if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; // Conditions: specific if !(!isNull (findDisplay 1713999) && {profileNamespace getVariable [QGVAR(AutoCloseMenu), 0] > 0}) exitWith {false}; @@ -56,7 +56,7 @@ GVAR(isOpeningDoor) = false; localize "STR_ACE_Interaction_InteractionMenuSelf", { // Conditions: canInteract - _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", "ACE_Interaction_isNotEscorting", "ACE_Interaction_isNotSwimming", "ACE_Common_notOnMap"]; + _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", QEGVAR(captives,isNotEscorting), "ACE_Interaction_isNotSwimming", "ACE_Common_notOnMap"]; if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; // Conditions: specific if !(isNull (findDisplay 1713999)) exitWith {false}; @@ -74,7 +74,7 @@ GVAR(isOpeningDoor) = false; localize "STR_ACE_Interaction_InteractionMenuSelf", { // Conditions: canInteract - _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", "ACE_Interaction_isNotEscorting", "ACE_Interaction_isNotSwimming"]; + _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", QEGVAR(captives,isNotEscorting), "ACE_Interaction_isNotSwimming"]; if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; // Conditions: specific if !(!isNull (findDisplay 1713999) && {profileNamespace getVariable [QGVAR(AutoCloseMenu), 0] > 0}) exitWith {false}; From 7a3029b9fdbdc5ac21cf546ccac5ea0130f9b17f Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 6 Feb 2015 03:38:27 -0600 Subject: [PATCH 091/211] replace spawns --- addons/captives/CfgEventHandlers.hpp | 2 +- addons/captives/CfgVehicles.hpp | 8 ++-- addons/captives/XEH_postInit.sqf | 32 +++++++++++++ addons/captives/XEH_postInitClient.sqf | 16 ------- .../functions/fnc_canApplyHandcuffs.sqf | 4 +- .../functions/fnc_canEscortCaptive.sqf | 6 +-- .../captives/functions/fnc_canLoadCaptive.sqf | 15 ++++--- .../functions/fnc_canRemoveHandcuffs.sqf | 2 +- .../functions/fnc_doApplyHandcuffs.sqf | 2 +- .../functions/fnc_doEscortCaptive.sqf | 22 +++++---- .../captives/functions/fnc_handleGetOut.sqf | 6 +-- .../captives/functions/fnc_handleKilled.sqf | 4 +- .../functions/fnc_handlePlayerChanged.sqf | 8 ++-- .../functions/fnc_handleUnitInitPost.sqf | 30 ++++++------- .../captives/functions/fnc_setHandcuffed.sqf | 23 +++++----- addons/captives/functions/fnc_surrender.sqf | 45 ++++++++----------- .../functions/fnc_vehicleCaptiveMoveIn.sqf | 2 +- .../functions/fnc_vehicleCaptiveMoveOut.sqf | 2 +- 18 files changed, 123 insertions(+), 106 deletions(-) create mode 100644 addons/captives/XEH_postInit.sqf delete mode 100644 addons/captives/XEH_postInitClient.sqf diff --git a/addons/captives/CfgEventHandlers.hpp b/addons/captives/CfgEventHandlers.hpp index 07dbe45fb7..722750f915 100644 --- a/addons/captives/CfgEventHandlers.hpp +++ b/addons/captives/CfgEventHandlers.hpp @@ -6,7 +6,7 @@ class Extended_PreInit_EventHandlers { class Extended_PostInit_EventHandlers { class ADDON { - clientInit = QUOTE(call COMPILE_FILE(XEH_postInitClient)); + init = QUOTE(call COMPILE_FILE(XEH_postInit)); }; }; diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index 8bd97b0b58..65d574fab0 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -50,7 +50,7 @@ class CfgVehicles { displayName = "$STR_ACE_Captives_LoadCaptive"; distance = 4; condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive)); - statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(loadCaptive)); + statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive)); exceptions[] = {QGVAR(isNotEscorting)}; showDisabled = 0; icon = QUOTE(PATHTOF(UI\captive_ca.paa)); @@ -61,7 +61,7 @@ class CfgVehicles { displayName = "$STR_ACE_Captives_FriskPerson"; distance = 2; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canFriskPerson)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(openFriskMenu)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doFriskPerson)); showDisabled = 0; //icon = ""; //@todo priority = 3; @@ -97,7 +97,7 @@ class CfgVehicles { displayName = "$STR_ACE_Captives_LoadCaptive"; \ distance = 4; \ condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \ - statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(loadCaptive)); \ + statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \ exceptions[] = {QGVAR(isNotEscorting)}; \ showDisabled = 0; \ priority = 1.2; \ @@ -107,7 +107,7 @@ class CfgVehicles { displayName = "$STR_ACE_Captives_UnloadCaptive"; \ distance = 4; \ condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive)); \ - statement = QUOTE([ARR_2(_player, _target)] call FUNC(unloadCaptive)); \ + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doUnloadCaptive)); \ showDisabled = 0; \ priority = 1.2; \ hotkey = "C"; \ diff --git a/addons/captives/XEH_postInit.sqf b/addons/captives/XEH_postInit.sqf new file mode 100644 index 0000000000..9d1a242d4d --- /dev/null +++ b/addons/captives/XEH_postInit.sqf @@ -0,0 +1,32 @@ +#include "script_component.hpp" + +["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); +["MoveInCaptive", {_this call FUNC(vehicleCaptiveMoveIn)}] call EFUNC(common,addEventHandler); +["MoveOutCaptive", {_this call FUNC(vehicleCaptiveMoveOut)}] call EFUNC(common,addEventHandler); +["SetHandcuffed", {_this call FUNC(setHandcuffed)}] call EFUNC(common,addEventHandler); + +//Handles when someone starts escorting and then disconnects, leaving the captive attached +//This is normaly handled by the PFEH in doEscortCaptive, but that won't be running if they DC +if (isServer) then { + addMissionEventHandler ["HandleDisconnect", { + PARAMS_1(_disconnectedPlayer); + _escortedUnit = _disconnectedPlayer getVariable [QGVAR(escortedUnit), objNull]; + if ((!isNull _escortedUnit) && {(attachedTo _escortedUnit) == _disconnectedPlayer}) then { + detach _escortedUnit; + systemChat "debug: DC detach"; + }; + if (_disconnectedPlayer getVariable [QGVAR(isEscorting), false]) then { + _disconnectedPlayer setVariable [QGVAR(isEscorting), false, true]; + }; + }]; +}; + +//TODO: Medical Integration Events??? + +// [_unit, "knockedOut", { +// if (local (_this select 0)) then {_this call ACE_Captives_fnc_handleKnockedOut}; +// }] call ACE_Core_fnc_addCustomEventhandler; + +// [_unit, "wokeUp", { +// if (local (_this select 0)) then {_this call ACE_Captives_fnc_handleWokeUp}; +// }] call ACE_Core_fnc_addCustomEventhandler; diff --git a/addons/captives/XEH_postInitClient.sqf b/addons/captives/XEH_postInitClient.sqf deleted file mode 100644 index b55c9eb10c..0000000000 --- a/addons/captives/XEH_postInitClient.sqf +++ /dev/null @@ -1,16 +0,0 @@ -#include "script_component.hpp" - -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); -["MoveInCaptive", {_this call FUNC(vehicleCaptiveMoveIn)}] call EFUNC(common,addEventHandler); -["MoveOutCaptive", {_this call FUNC(vehicleCaptiveMoveOut)}] call EFUNC(common,addEventHandler); -["SetHandcuffed", {_this call FUNC(setHandcuffed)}] call EFUNC(common,addEventHandler); - -//TODO: Medical Integration Events??? - -// [_unit, "knockedOut", { - // if (local (_this select 0)) then {_this call ACE_Captives_fnc_handleKnockedOut}; -// }] call ACE_Core_fnc_addCustomEventhandler; - -// [_unit, "wokeUp", { - // if (local (_this select 0)) then {_this call ACE_Captives_fnc_handleWokeUp}; -// }] call ACE_Core_fnc_addCustomEventhandler; diff --git a/addons/captives/functions/fnc_canApplyHandcuffs.sqf b/addons/captives/functions/fnc_canApplyHandcuffs.sqf index 8a3d143e96..8f503d8fd0 100644 --- a/addons/captives/functions/fnc_canApplyHandcuffs.sqf +++ b/addons/captives/functions/fnc_canApplyHandcuffs.sqf @@ -20,6 +20,6 @@ PARAMS_2(_unit,_target); //Player has cableTie, target is alive and not already handcuffed -("ACE_CableTie" in (items _unit)) && -{alive _target} && +("ACE_CableTie" in (items _unit)) && +{alive _target} && {!(_target getVariable [QGVAR(isHandcuffed), false])} diff --git a/addons/captives/functions/fnc_canEscortCaptive.sqf b/addons/captives/functions/fnc_canEscortCaptive.sqf index 2d2fd5abe4..3d026e3d54 100644 --- a/addons/captives/functions/fnc_canEscortCaptive.sqf +++ b/addons/captives/functions/fnc_canEscortCaptive.sqf @@ -20,7 +20,7 @@ PARAMS_2(_unit,_target); //Alive, handcuffed, not being escored, and not unconsious -(_target getVariable [QGVAR(isHandcuffed), false]) && -{isNull (attachedTo _target)} && -{alive _target} && +(_target getVariable [QGVAR(isHandcuffed), false]) && +{isNull (attachedTo _target)} && +{alive _target} && {!(_target getVariable [QGVAR(ACE_isUnconscious), false])} diff --git a/addons/captives/functions/fnc_canLoadCaptive.sqf b/addons/captives/functions/fnc_canLoadCaptive.sqf index 3b1521e2be..902ec36331 100644 --- a/addons/captives/functions/fnc_canLoadCaptive.sqf +++ b/addons/captives/functions/fnc_canLoadCaptive.sqf @@ -4,8 +4,8 @@ * * Arguments: * 0: Unit that wants to load a captive - * 1: A captive. ObjNull for the first escorted captive - * 2: Vehicle to load the captive into. ObjNull for the nearest vehicle + * 1: A captive. ObjNull for the first escorted captive (may be null) + * 2: Vehicle to load the captive into. ObjNull for the nearest vehicle (may be null) * * Return Value: * The return value @@ -24,15 +24,16 @@ PARAMS_3(_unit,_target,_vehicle); if (isNull _target) then { _objects = attachedObjects _unit; _objects = [_objects, {_this getVariable [QGVAR(isHandcuffed), false]}] call EFUNC(common,filter); - _target = _objects select 0; + if ((count _objects) > 0) then {_target = _objects select 0;}; }; if (isNull _vehicle) then { _objects = nearestObjects [_unit, ["Car", "Tank", "Helicopter", "Plane", "Ship_F"], 10]; - _vehicle = _objects select 0; + if ((count _objects) > 0) then {_vehicle = _objects select 0;}; }; -_unit getVariable [QGVAR(isEscorting), false] -&& {!isNil "_target"} -&& {!isNil "_vehicle"} +(!isNull _target) +&& {!isNull _vehicle} +&& {_unit getVariable [QGVAR(isEscorting), false]} +&& {_target getVariable [QGVAR(isHandcuffed), false]} && {_vehicle emptyPositions "cargo" > 0} diff --git a/addons/captives/functions/fnc_canRemoveHandcuffs.sqf b/addons/captives/functions/fnc_canRemoveHandcuffs.sqf index f36488fbf1..d36042b0ab 100644 --- a/addons/captives/functions/fnc_canRemoveHandcuffs.sqf +++ b/addons/captives/functions/fnc_canRemoveHandcuffs.sqf @@ -19,5 +19,5 @@ PARAMS_2(_unit,_target); //Unit is handcuffed and not currently being escorted -_target getVariable [QGVAR(isHandcuffed), false] && +_target getVariable [QGVAR(isHandcuffed), false] && {isNull (attachedTo _target)} diff --git a/addons/captives/functions/fnc_doApplyHandcuffs.sqf b/addons/captives/functions/fnc_doApplyHandcuffs.sqf index 9ae82916f7..6c44df3dc5 100644 --- a/addons/captives/functions/fnc_doApplyHandcuffs.sqf +++ b/addons/captives/functions/fnc_doApplyHandcuffs.sqf @@ -18,5 +18,5 @@ PARAMS_2(_unit,_target); -_unit removeItem "ACE_CableTie"; +_unit removeItem "ACE_CableTie"; ["SetHandcuffed", [_target], [_target, true]] call EFUNC(common,targetEvent); diff --git a/addons/captives/functions/fnc_doEscortCaptive.sqf b/addons/captives/functions/fnc_doEscortCaptive.sqf index 72a0cd0c6c..fbbcd09947 100644 --- a/addons/captives/functions/fnc_doEscortCaptive.sqf +++ b/addons/captives/functions/fnc_doEscortCaptive.sqf @@ -34,21 +34,25 @@ if (_state) then { {[(_this select 0), ((_this select 0) getVariable [QGVAR(escortedUnit), objNull]), false] call FUNC(doEscortCaptive);}, nil, 20, false, true, "", QUOTE(!isNull (GETVAR(_target,QGVAR(escortedUnit),objNull)))]; - [_unit, _target, _actionID] spawn { - PARAMS_3(_unit,_target,_actionID); - - while {_unit getVariable [QGVAR(isEscorting), false]} do { - sleep 0.2; - + private "_escortFnc"; + _escortFnc = { + EXPLODE_3_PVT((_this select 0),_unit,_target,_actionID); + if (_unit getVariable [QGVAR(isEscorting), false]) then { if (!alive _target || {!alive _unit} || {!canStand _target} || {!canStand _unit} || {_target getVariable ["ACE_isUnconscious", false]} || {_unit getVariable ["ACE_isUnconscious", false]} || {!isNull (attachedTo _unit)}) then { _unit setVariable [QGVAR(isEscorting), false, true]; }; }; - [objNull, _target] call EFUNC(common,claim); - detach _target; - _unit removeAction _actionID; + if (!(_unit getVariable [QGVAR(isEscorting), false])) then { + [(_this select 1)] call cba_fnc_removePerFrameHandler; + [objNull, _target] call EFUNC(common,claim); + detach _target; + _unit removeAction _actionID; + _unit setVariable [QGVAR(escortedUnit), objNull, true]; + }; }; + [_escortFnc, 0.2, [_unit, _target, _actionID]] call CBA_fnc_addPerFrameHandler; + } else { _unit setVariable [QGVAR(isEscorting), false, true]; _unit setVariable [QGVAR(escortedUnit), objNull, true]; diff --git a/addons/captives/functions/fnc_handleGetOut.sqf b/addons/captives/functions/fnc_handleGetOut.sqf index 00368532e7..b212377dd2 100644 --- a/addons/captives/functions/fnc_handleGetOut.sqf +++ b/addons/captives/functions/fnc_handleGetOut.sqf @@ -21,9 +21,9 @@ PARAMS_3(_vehicle,_dontcare,_unit); if ((local _unit) && {_unit getVariable [QGVAR(isHandcuffed), false]}) then { private ["_cargoIndex"]; - - _cargoIndex = _unit getVariable ["ACE_Captives_CargoIndex", -1]; - + + _cargoIndex = _unit getVariable [QGVAR(CargoIndex), -1]; + //If captive was not "unloaded", then move them back into the vehicle. if (_cargoIndex != -1) exitWith { _unit moveInCargo [_vehicle, _cargoIndex]; diff --git a/addons/captives/functions/fnc_handleKilled.sqf b/addons/captives/functions/fnc_handleKilled.sqf index 5ac2935a2e..219bd2eb60 100644 --- a/addons/captives/functions/fnc_handleKilled.sqf +++ b/addons/captives/functions/fnc_handleKilled.sqf @@ -1,6 +1,6 @@ /* * Author: PabstMirror - * Handles when a unit is kill. Reset captivity and escorting status when getting killed + * Handles when a unit is kill. Reset captivity and escorting status * * Arguments: * 0: _oldUnit @@ -22,5 +22,5 @@ if (_oldUnit getVariable [QGVAR(isHandcuffed), false]) then { }; if (_oldUnit getVariable [QGVAR(isEscorting), false]) then { - _oldUnit setVariable [QGVAR(isEscorting), false, true] + _oldUnit setVariable [QGVAR(isEscorting), false, true]; }; diff --git a/addons/captives/functions/fnc_handlePlayerChanged.sqf b/addons/captives/functions/fnc_handlePlayerChanged.sqf index c3e148d6c4..af6472c211 100644 --- a/addons/captives/functions/fnc_handlePlayerChanged.sqf +++ b/addons/captives/functions/fnc_handlePlayerChanged.sqf @@ -1,9 +1,9 @@ /* * Author: commy2 - * TODO + * Handles playerChanged. Resets "showHUD" based on handcuff status * * Arguments: - * 0: _unit + * 0: _newUnit * 1: _oldUnit * * Return Value: @@ -16,9 +16,9 @@ */ #include "script_component.hpp" -PARAMS_2(_unit,_oldUnit); +PARAMS_2(_newUnit,_oldUnit); -if (_unit getVariable [QGVAR(isHandcuffed), false]) then { +if (_newUnit getVariable [QGVAR(isHandcuffed), false]) then { showHUD false; } else { showHUD true; diff --git a/addons/captives/functions/fnc_handleUnitInitPost.sqf b/addons/captives/functions/fnc_handleUnitInitPost.sqf index 4450378129..d34eebeb4a 100644 --- a/addons/captives/functions/fnc_handleUnitInitPost.sqf +++ b/addons/captives/functions/fnc_handleUnitInitPost.sqf @@ -1,24 +1,24 @@ /* -* Author: commy2 -* handle captive and unconsciousness state and prevent grenades -* -* Arguments: -* 0: _unit -* -* Return Value: -* The return value -* -* Example: -* TODO -* -* Public: No -*/ + * Author: commy2 + * handle captive and unconsciousness state and prevent grenades + * + * Arguments: + * 0: _unit + * + * Return Value: + * The return value + * + * Example: + * TODO + * + * Public: No + */ #include "script_component.hpp" PARAMS_1(_unit); // prevent players from throwing grenades (added to all units) -[_unit, "Throw", {(_this select 1) getVariable [QGVAR(isHandcuffed), false]}, {}] call EFUNC(common,addActionEventhandler); +[_unit, "Throw", {(_this select 1) getVariable [QGVAR(isHandcuffed), false]}, {hint format ["%1 - debug throw prevented",time];}] call EFUNC(common,addActionEventhandler); if (local _unit) then { // reset status on mission start diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index c28a26909f..98a12168d3 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -29,31 +29,34 @@ if (_state isEqualTo (_unit getVariable [QGVAR(isHandcuffed), false])) exitWith if (_state) then { _unit setVariable [QGVAR(isHandcuffed), true, true]; + [_unit, QGVAR(Handcuffed), true] call EFUNC(common,setCaptivityStatus); // fix anim on mission start (should work on dedicated servers) - _unit spawn { - [_this, QGVAR(Handcuffed), true] call EFUNC(common,setCaptivityStatus); - if (_this getVariable [QGVAR(isHandcuffed), false] && {vehicle _this == _this}) then { - [_this] call EFUNC(common,fixLoweredRifleAnimation); - [_this, "ACE_AmovPercMstpScapWnonDnon", 0] spawn EFUNC(common,doAnimation); + _fixAnimationFnc = { + PARAMS_1(_unit); + if (_unit getVariable [QGVAR(isHandcuffed), false] && {vehicle _unit == _unit}) then { + [_unit] call EFUNC(common,fixLoweredRifleAnimation); + [_unit, "ACE_AmovPercMstpScapWnonDnon", 0] call EFUNC(common,doAnimation); }; }; - _unit setVariable ["ACE_Captives_CargoIndex", vehicle _unit getCargoIndex _unit, true]; + [_fixAnimationFnc, [_unit], 0.05, 0] call EFUNC(common,waitAndExecute); + + _unit setVariable [QGVAR(CargoIndex), ((vehicle _unit) getCargoIndex _unit), true]; if (_unit == ACE_player) then { showHUD false; }; } else { _unit setVariable [QGVAR(isHandcuffed), false, true]; - [_unit, QGVAR(Handcuffed), true] call EFUNC(common,setCaptivityStatus); - if (vehicle _unit == _unit) then { + [_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus); + if ((vehicle _unit) == _unit) then { [_unit, "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); }; - if (_unit getVariable ["ACE_Captives_CargoIndex", -1] != -1) then { - _unit setVariable ["ACE_Captives_CargoIndex", -1, true]; + if (_unit getVariable [QGVAR(CargoIndex), -1] != -1) then { + _unit setVariable [QGVAR(CargoIndex), -1, true]; }; if (_unit == ACE_player) then { diff --git a/addons/captives/functions/fnc_surrender.sqf b/addons/captives/functions/fnc_surrender.sqf index 69098c19a1..7c5adc08de 100644 --- a/addons/captives/functions/fnc_surrender.sqf +++ b/addons/captives/functions/fnc_surrender.sqf @@ -26,38 +26,31 @@ if (_state) then { _unit setVariable [QGVAR(isSurrender), true, true]; [_unit, "ACE_Surrendered", true] call EFUNC(common,setCaptivityStatus); - _unit spawn { - // fix for lowered rifle animation glitch - if (currentWeapon _this != "" && {currentWeapon _this == primaryWeapon _this} && {weaponLowered _this} && {stance _this == "STAND"}) then { - _this playMove "amovpercmstpsraswrfldnon"; - }; - while {_this getVariable [QGVAR(isSurrender), false]} do { - sleep 0.001; //sleep in UI - - if (isPlayer _this) then {showHUD false}; - - if (!alive _this || {_this getVariable ["ACE_isUnconscious", false]}) then { - _this setVariable [QGVAR(isSurrender), false, true]; + private "_surrenderFnc"; + _surrenderFnc = { + EXPLODE_1_PVT((_this select 0),_unit); + if (_unit getVariable [QGVAR(isSurrender), false]) then { + if ((!alive _unit) || {_unit getVariable ["ACE_isUnconscious", false]} || {_unit getVariable [QGVAR(isHandcuffed), false]}) then { + _unit setVariable [QGVAR(isSurrender), false, true]; } else { - _this playMove "amovpercmstpsnonwnondnon_amovpercmstpssurwnondnon"; + [_unit, "amovpercmstpsnonwnondnon_amovpercmstpssurwnondnon", 0] call EFUNC(common,doAnimation); }; }; - if !(_this getVariable ["ACE_isUnconscious", false]) then { - _this playMoveNow "AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon"; - } else { - _this playMoveNow "unconscious"; + + if (!(_unit getVariable [QGVAR(isSurrender), false])) then { + [(_this select 1)] call cba_fnc_removePerFrameHandler; + + if !(_unit getVariable ["ACE_isUnconscious", false]) then { + [_unit, "AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon", 1] call EFUNC(common,doAnimation); + } else { + [_unit, "unconscious", 1] call EFUNC(common,doAnimation); + }; + [_unit, "ACE_Surrendered", false] call EFUNC(common,setCaptivityStatus); + if (isPlayer _unit) then {showHUD true}; }; - - [_this, "ACE_Surrendered", false] call EFUNC(common,setCaptivityStatus); - - if (isPlayer _this) then {showHUD true}; }; + [_surrenderFnc, 0.0, [_unit]] call CBA_fnc_addPerFrameHandler; } else { _unit setVariable [QGVAR(isSurrender), false, true]; }; - -/* -player playMove "AmovPercMstpSsurWnonDnon" -player switchMove "AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon" - */ diff --git a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf index fe4d0528c6..dd3b6e6818 100644 --- a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf +++ b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf @@ -23,6 +23,6 @@ private ["_cargoIndex"]; _target moveInCargo _vehicle; _target assignAsCargo _vehicle; _cargoIndex = _vehicle getCargoIndex _target; -_target setVariable ["ACE_Captives_CargoIndex", _cargoIndex, true]; +_target setVariable [QGVAR(CargoIndex), _cargoIndex, true]; TRACE_3("moveinEH",_target,_vehicle,_cargoIndex); diff --git a/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf b/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf index 0a10572909..4210e8da15 100644 --- a/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf +++ b/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf @@ -17,7 +17,7 @@ PARAMS_1(_unit); -_unit setVariable ["ACE_Captives_CargoIndex", -1, true]; +_unit setVariable [QGVAR(CargoIndex), -1, true]; moveOut _unit; [_unit, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); From 98564fae683a212798f3c29542972cbefa40d20e Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 6 Feb 2015 15:54:26 -0600 Subject: [PATCH 092/211] Surrendering --- addons/captives/CfgMoves.hpp | 79 ++++++++----------- addons/captives/CfgVehicles.hpp | 25 +++--- addons/captives/XEH_preInit.sqf | 1 + addons/captives/config.cpp | 2 +- .../captives/functions/fnc_canSurrender.sqf | 22 ++++++ .../functions/fnc_handleUnitInitPost.sqf | 7 +- .../captives/functions/fnc_setHandcuffed.sqf | 1 - addons/captives/functions/fnc_surrender.sqf | 51 ++++++------ addons/captives/stringtable.xml | 12 ++- addons/interaction/XEH_clientInit.sqf | 4 +- 10 files changed, 121 insertions(+), 83 deletions(-) create mode 100644 addons/captives/functions/fnc_canSurrender.sqf diff --git a/addons/captives/CfgMoves.hpp b/addons/captives/CfgMoves.hpp index ab379de6ae..bb6b8669e0 100644 --- a/addons/captives/CfgMoves.hpp +++ b/addons/captives/CfgMoves.hpp @@ -1,7 +1,7 @@ class CfgMovesBasic { class Actions { class CivilStandActions; - class ACE_CivilStandCaptiveActions: CivilStandActions { + class ACE_CivilStandHandcuffedActions: CivilStandActions { turnL = ""; turnR = ""; stop = "ACE_AmovPercMstpScapWnonDnon"; @@ -11,6 +11,11 @@ class CfgMovesBasic { throwPrepare = ""; throwGrenade[] = {"","Gesture"}; }; + class ACE_CivilStandSurrenderActions: ACE_CivilStandHandcuffedActions { + stop = "ACE_AmovPercMstpScapWnonDnon"; + StopRelaxed = "ACE_AmovPercMstpScapWnonDnon"; + default = "ACE_AmovPercMstpScapWnonDnon"; + }; }; }; @@ -18,12 +23,14 @@ class CfgMovesMaleSdr: CfgMovesBasic { class StandBase; class States { class AmovPercMstpSnonWnonDnon: StandBase { - ConnectTo[] += {"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1}; + ConnectTo[] += {"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon",0.1}; }; class CutSceneAnimationBase; + + //Handcuffed Anims: class ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon: CutSceneAnimationBase { - actions = "ACE_CivilStandCaptiveActions"; + actions = "ACE_CivilStandHandcuffedActions"; file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\AmovPercMstpSnonWnonDnon_EaseIn"; speed = 1; looped = 0; @@ -31,7 +38,6 @@ class CfgMovesMaleSdr: CfgMovesBasic { ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon",0.1}; InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; }; - class ACE_AmovPercMstpScapWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon { file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\AmovPercMstpSnonWnonDnon_Ease"; speed = 0; @@ -39,52 +45,37 @@ class CfgMovesMaleSdr: CfgMovesBasic { InterpolateTo[] = {"Unconscious",0.01}; looped = 1; }; - class ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon { actions = "CivilStandActions"; file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\amovpercmstpsnonwnondnon_easeout"; ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1}; InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1}; }; + + //Surrender Anims: + class ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon: CutSceneAnimationBase { + actions = "ACE_CivilStandSurrenderActions"; + file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon"; + speed = 1; + looped = 0; + interpolationRestart = 2; + ConnectTo[] = {"ACE_AmovPercMstpSsurWnonDnon",0.1}; + InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; + }; + class ACE_AmovPercMstpSsurWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon { + file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\sur\non\AmovPercMstpSsurWnonDnon"; + speed = 0; + looped = 1; + ConnectTo[] = {"ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; + InterpolateTo[] = {"Unconscious",0.01}; + }; + class ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon { + speed = 0.4; //for gameplay reasons, slow this down + actions = "CivilStandActions"; + file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\sur\non\AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon"; + ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1}; + InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon",0.1}; + }; }; }; -/* -player playMove "ACE_AmovPercMstpScapWnonDnon"; -player switchMove "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon"; - */ - -/*class CfgMovesBasic; -class CfgMovesMaleSdr: CfgMovesBasic { -class States { - class CutSceneAnimationBase; - class AmovPercMstpSnonWnonDnon_EaseIn: CutSceneAnimationBase { - head = "headDefault"; - static = 1; - disableWeapons = 0; - forceAim = 0; - InterpolateTo[] = {"AmovPercMstpSnonWnonDnon_EaseOut",0.02,"Unconscious",0.1}; - }; - class AmovPercMstpSnonWnonDnon_Ease: AmovPercMstpSnonWnonDnon_EaseIn { - looped = 1; - InterpolateTo[] = {"Unconscious",0.1}; - }; - class AmovPercMstpSnonWnonDnon_EaseOut: AmovPercMstpSnonWnonDnon_EaseIn { - InterpolateTo[] = {"AmovPercMstpSnonWnonDnon_EaseIn",0.02,"Unconscious",0.1}; - }; - - class AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon: CutSceneAnimationBase { - InterpolateTo[] = {"Unconscious",0.01,"AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; - }; - - class AmovPercMstpSsurWnonDnon: AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon { - looped = 1; - InterpolateTo[] = {"Unconscious",0.01}; - }; - - class AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon: AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon { - InterpolateTo[] = {"Unconscious",0.01,"AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon",0.1}; - }; -}; -};*/ - diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index 65d574fab0..934e1215d2 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -78,16 +78,23 @@ class CfgVehicles { showDisabled = 0; priority = 2.3; hotkey = "C"; + }; + class ACE_StartSurrenderingSelf { + displayName = "$STR_ACE_Captives_StartSurrendering"; + condition = QUOTE([ARR_2(_player, true)] call FUNC(canSurrender)); + statement = QUOTE([ARR_2(_player, true)] call FUNC(surrender)); + exceptions[] = {}; + showDisabled = 0; + priority = 0; + }; + class ACE_StopSurrenderingSelf { + displayName = "$STR_ACE_Captives_StopSurrendering"; + condition = QUOTE([ARR_2(_player, false)] call FUNC(canSurrender)); + statement = QUOTE([ARR_2(_player, false)] call FUNC(surrender)); + exceptions[] = {QGVAR(isNotSurrendering)}; + showDisabled = 0; + priority = 0; }; - /*class ACE_LoadCaptiveSelf { - displayName = "$STR_ACE_Captives_LoadCaptive"; - condition = "[_player, objNull, objNull] call ACE_Captives_fnc_canLoadCaptiveIntoVehicle"; - statement = "[_player, objNull, objNull] call ACE_Captives_fnc_loadCaptiveIntoVehicle"; - exceptions[] = {QGVAR(isNotEscorting)}; - showDisabled = 0; - priority = 2.2; - hotkey = "K"; - };*/ }; }; diff --git a/addons/captives/XEH_preInit.sqf b/addons/captives/XEH_preInit.sqf index e894cd1c31..a98bf73443 100644 --- a/addons/captives/XEH_preInit.sqf +++ b/addons/captives/XEH_preInit.sqf @@ -8,6 +8,7 @@ PREP(canFriskPerson); PREP(canLoadCaptive); PREP(canRemoveHandcuffs); PREP(canStopEscorting); +PREP(canSurrender); PREP(canUnloadCaptive); PREP(doApplyHandcuffs); PREP(doEscortCaptive); diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index bceeda3b2b..c0a34e3222 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -26,6 +26,6 @@ class ACE_canInteractConditions { condition = QUOTE(!(GETVAR(player,QGVAR(isHandcuffed),false))); }; class GVAR(isNotSurrendering) { - condition = QUOTE(!(GETVAR(player,QGVAR(isSurrender),false))); + condition = QUOTE(!(GETVAR(player,QGVAR(isSurrendering),false))); }; }; diff --git a/addons/captives/functions/fnc_canSurrender.sqf b/addons/captives/functions/fnc_canSurrender.sqf new file mode 100644 index 0000000000..60dcd7c938 --- /dev/null +++ b/addons/captives/functions/fnc_canSurrender.sqf @@ -0,0 +1,22 @@ +/* + * Author: PabstMirror + * Checks the conditions for being able to surrender + * + * Arguments: + * 0: caller (player) + * 1: New Surrender State to test + * + * Return Value: + * The return value + * + * Example: + * [player, true] call ACE_captives_fnc_canSurrender; + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_unit,_newSurrenderState); + +//TODO: any other conditions?? +(!((_unit getVariable [QGVAR(isSurrendering), false]) isEqualTo _newSurrenderState)) diff --git a/addons/captives/functions/fnc_handleUnitInitPost.sqf b/addons/captives/functions/fnc_handleUnitInitPost.sqf index d34eebeb4a..635d7b0439 100644 --- a/addons/captives/functions/fnc_handleUnitInitPost.sqf +++ b/addons/captives/functions/fnc_handleUnitInitPost.sqf @@ -18,7 +18,7 @@ PARAMS_1(_unit); // prevent players from throwing grenades (added to all units) -[_unit, "Throw", {(_this select 1) getVariable [QGVAR(isHandcuffed), false]}, {hint format ["%1 - debug throw prevented",time];}] call EFUNC(common,addActionEventhandler); +[_unit, "Throw", {((_this select 1) getVariable [QGVAR(isHandcuffed), false]) || {(_this select 1) getVariable [QGVAR(isSurrendering), false]}}, {}] call EFUNC(common,addActionEventhandler); if (local _unit) then { // reset status on mission start @@ -26,4 +26,9 @@ if (local _unit) then { _unit setVariable [QGVAR(isHandcuffed), false]; [_unit, true] call FUNC(setHandcuffed); }; + + if (_unit getVariable [QGVAR(isSurrendering), false]) then { + _unit setVariable [QGVAR(isSurrendering), false]; + [_unit, true] call FUNC(surrender); + }; }; diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index 98a12168d3..1be72ca7c9 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -32,7 +32,6 @@ if (_state) then { [_unit, QGVAR(Handcuffed), true] call EFUNC(common,setCaptivityStatus); // fix anim on mission start (should work on dedicated servers) - _fixAnimationFnc = { PARAMS_1(_unit); if (_unit getVariable [QGVAR(isHandcuffed), false] && {vehicle _unit == _unit}) then { diff --git a/addons/captives/functions/fnc_surrender.sqf b/addons/captives/functions/fnc_surrender.sqf index 7c5adc08de..bb782d85da 100644 --- a/addons/captives/functions/fnc_surrender.sqf +++ b/addons/captives/functions/fnc_surrender.sqf @@ -1,6 +1,6 @@ /* - * Author: commy2 - * TODO + * Author: commy2 PabstMirror + * Lets a unit surrender * * Arguments: * 0: Unit @@ -18,39 +18,42 @@ PARAMS_2(_unit,_state); -if (!local _unit) exitWith {[_this, _fnc_scriptName, _unit] call ACE_Core_fnc_execRemoteFnc}; - if (_state) then { - if (_unit getVariable [QGVAR(isSurrender), false]) exitWith {}; - - _unit setVariable [QGVAR(isSurrender), true, true]; - [_unit, "ACE_Surrendered", true] call EFUNC(common,setCaptivityStatus); + if (_unit getVariable [QGVAR(isSurrendering), false]) exitWith {}; + _unit setVariable [QGVAR(isSurrendering), true, true]; + [_unit, QGVAR(Surrendered), true] call EFUNC(common,setCaptivityStatus); + [_unit, "ACE_AmovPercMstpSsurWnonDnon", 1] call EFUNC(common,doAnimation); private "_surrenderFnc"; _surrenderFnc = { EXPLODE_1_PVT((_this select 0),_unit); - if (_unit getVariable [QGVAR(isSurrender), false]) then { + + if (_unit getVariable [QGVAR(isSurrendering), false]) then { if ((!alive _unit) || {_unit getVariable ["ACE_isUnconscious", false]} || {_unit getVariable [QGVAR(isHandcuffed), false]}) then { - _unit setVariable [QGVAR(isSurrender), false, true]; - } else { - [_unit, "amovpercmstpsnonwnondnon_amovpercmstpssurwnondnon", 0] call EFUNC(common,doAnimation); + [_unit, false] call FUNC(surrender); + [(_this select 1)] call cba_fnc_removePerFrameHandler; }; - }; - - if (!(_unit getVariable [QGVAR(isSurrender), false])) then { + } else { [(_this select 1)] call cba_fnc_removePerFrameHandler; - - if !(_unit getVariable ["ACE_isUnconscious", false]) then { - [_unit, "AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon", 1] call EFUNC(common,doAnimation); - } else { - [_unit, "unconscious", 1] call EFUNC(common,doAnimation); - }; - [_unit, "ACE_Surrendered", false] call EFUNC(common,setCaptivityStatus); - if (isPlayer _unit) then {showHUD true}; }; }; [_surrenderFnc, 0.0, [_unit]] call CBA_fnc_addPerFrameHandler; } else { - _unit setVariable [QGVAR(isSurrender), false, true]; + _unit setVariable [QGVAR(isSurrendering), false, true]; + + if !(_unit getVariable ["ACE_isUnconscious", false]) then { + //Break out of hands up animation loop + //don't want to step on animations from medical (TODO: testing medical integration) + [_unit, "ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); + }; + + [_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus); + + if (_unit == ACE_player) then { + //only enable if not handcuffed + if (!(_unit getVariable [QGVAR(isHandcuffed), false])) then { + showHUD true; + }; + }; }; diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index eaf63b2d41..7d8096b3e6 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -1,5 +1,5 @@  - + @@ -71,6 +71,7 @@ Naložit zajatce Fogoly berakása Загрузить пленного + Embarcar Prisioneiro Unload Captive @@ -81,6 +82,7 @@ Vyložit zajatce Fogoly kivevése Выгрузить пленного + Desembarcar Prisioneiro Cable Tie @@ -115,6 +117,7 @@ Inventář prohledávané osoby Ekwipunek rewidowanej osoby Инвентарь обысканных лиц + Inventário da pessoa revistada Frisk person @@ -125,6 +128,13 @@ Rewiduj osobę Motozás Обыскать человека + Revistar + + + Surrender + + + Stop Surrendering \ No newline at end of file diff --git a/addons/interaction/XEH_clientInit.sqf b/addons/interaction/XEH_clientInit.sqf index 71be601ac7..1c314078a4 100644 --- a/addons/interaction/XEH_clientInit.sqf +++ b/addons/interaction/XEH_clientInit.sqf @@ -56,7 +56,7 @@ GVAR(isOpeningDoor) = false; localize "STR_ACE_Interaction_InteractionMenuSelf", { // Conditions: canInteract - _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", QEGVAR(captives,isNotEscorting), "ACE_Interaction_isNotSwimming", "ACE_Common_notOnMap"]; + _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", QEGVAR(captives,isNotEscorting), QEGVAR(captives,isNotSurrendering), "ACE_Interaction_isNotSwimming", "ACE_Common_notOnMap"]; if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; // Conditions: specific if !(isNull (findDisplay 1713999)) exitWith {false}; @@ -74,7 +74,7 @@ GVAR(isOpeningDoor) = false; localize "STR_ACE_Interaction_InteractionMenuSelf", { // Conditions: canInteract - _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", QEGVAR(captives,isNotEscorting), "ACE_Interaction_isNotSwimming"]; + _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", QEGVAR(captives,isNotEscorting), QEGVAR(captives,isNotSurrendering), "ACE_Interaction_isNotSwimming"]; if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; // Conditions: specific if !(!isNull (findDisplay 1713999) && {profileNamespace getVariable [QGVAR(AutoCloseMenu), 0] > 0}) exitWith {false}; From c117e9bf160e293239561946014e0b244928bcca Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 6 Feb 2015 17:03:56 -0600 Subject: [PATCH 093/211] Header Examples --- addons/captives/functions/fnc_canApplyHandcuffs.sqf | 2 +- addons/captives/functions/fnc_canEscortCaptive.sqf | 4 ++-- addons/captives/functions/fnc_canFriskPerson.sqf | 2 +- addons/captives/functions/fnc_canLoadCaptive.sqf | 2 +- addons/captives/functions/fnc_canRemoveHandcuffs.sqf | 2 +- addons/captives/functions/fnc_canStopEscorting.sqf | 3 +-- addons/captives/functions/fnc_canSurrender.sqf | 2 +- addons/captives/functions/fnc_canUnloadCaptive.sqf | 2 +- addons/captives/functions/fnc_doApplyHandcuffs.sqf | 2 +- addons/captives/functions/fnc_doEscortCaptive.sqf | 2 +- addons/captives/functions/fnc_doFriskPerson.sqf | 2 +- addons/captives/functions/fnc_doLoadCaptive.sqf | 2 +- addons/captives/functions/fnc_doRemoveHandcuffs.sqf | 7 +++---- addons/captives/functions/fnc_doUnloadCaptive.sqf | 2 +- addons/captives/functions/fnc_handleGetIn.sqf | 2 +- addons/captives/functions/fnc_handleGetOut.sqf | 4 ++-- addons/captives/functions/fnc_handleKilled.sqf | 6 +++++- .../captives/functions/fnc_handlePlayerChanged.sqf | 4 ++-- addons/captives/functions/fnc_handleUnitInitPost.sqf | 2 +- addons/captives/functions/fnc_handleWokeUp.sqf | 2 +- addons/captives/functions/fnc_setHandcuffed.sqf | 2 +- addons/captives/functions/fnc_surrender.sqf | 12 +++++++++--- .../captives/functions/fnc_vehicleCaptiveMoveIn.sqf | 4 +--- .../captives/functions/fnc_vehicleCaptiveMoveOut.sqf | 4 ++-- 24 files changed, 42 insertions(+), 36 deletions(-) diff --git a/addons/captives/functions/fnc_canApplyHandcuffs.sqf b/addons/captives/functions/fnc_canApplyHandcuffs.sqf index 8f503d8fd0..f69bb2544d 100644 --- a/addons/captives/functions/fnc_canApplyHandcuffs.sqf +++ b/addons/captives/functions/fnc_canApplyHandcuffs.sqf @@ -10,7 +10,7 @@ * The return value * * Example: - * - + * [player, bob] call ACE_captives_fnc_canApplyHandcuffs * * Public: No */ diff --git a/addons/captives/functions/fnc_canEscortCaptive.sqf b/addons/captives/functions/fnc_canEscortCaptive.sqf index 3d026e3d54..cbb098881f 100644 --- a/addons/captives/functions/fnc_canEscortCaptive.sqf +++ b/addons/captives/functions/fnc_canEscortCaptive.sqf @@ -4,13 +4,13 @@ * * Arguments: * 0: caller (player) - * 1: target + * 1: target * * Return Value: * The return value * * Example: - * - + * [player, bob] call ACE_captives_fnc_canEscortCaptive * * Public: No */ diff --git a/addons/captives/functions/fnc_canFriskPerson.sqf b/addons/captives/functions/fnc_canFriskPerson.sqf index 9bbf5389c3..28a9ee0134 100644 --- a/addons/captives/functions/fnc_canFriskPerson.sqf +++ b/addons/captives/functions/fnc_canFriskPerson.sqf @@ -10,7 +10,7 @@ * The return value * * Example: - * - + * [player, bob] call ACE_captives_fnc_canFriskPerson * * Public: No */ diff --git a/addons/captives/functions/fnc_canLoadCaptive.sqf b/addons/captives/functions/fnc_canLoadCaptive.sqf index 902ec36331..04b33ad42d 100644 --- a/addons/captives/functions/fnc_canLoadCaptive.sqf +++ b/addons/captives/functions/fnc_canLoadCaptive.sqf @@ -11,7 +11,7 @@ * The return value * * Example: - * - + * [player, bob] call ACE_captives_fnc_canLoadCaptive * * Public: No */ diff --git a/addons/captives/functions/fnc_canRemoveHandcuffs.sqf b/addons/captives/functions/fnc_canRemoveHandcuffs.sqf index d36042b0ab..4642cd90fd 100644 --- a/addons/captives/functions/fnc_canRemoveHandcuffs.sqf +++ b/addons/captives/functions/fnc_canRemoveHandcuffs.sqf @@ -10,7 +10,7 @@ * The return value * * Example: - * - + * [player, bob] call ACE_captives_fnc_canRemoveHandcuffs * * Public: No */ diff --git a/addons/captives/functions/fnc_canStopEscorting.sqf b/addons/captives/functions/fnc_canStopEscorting.sqf index bb48244a25..e6a5a0e568 100644 --- a/addons/captives/functions/fnc_canStopEscorting.sqf +++ b/addons/captives/functions/fnc_canStopEscorting.sqf @@ -10,7 +10,7 @@ * The return value * * Example: - * - + * [player, bob] call ACE_captives_fnc_canStopEscorting * * Public: No */ @@ -21,7 +21,6 @@ DEFAULT_PARAM(1,_target,objNull); private ["_isAttached"]; - if (isNull _target) then { _target = _unit getVariable [QGVAR(escortedUnit), objNull]; }; diff --git a/addons/captives/functions/fnc_canSurrender.sqf b/addons/captives/functions/fnc_canSurrender.sqf index 60dcd7c938..238087c62b 100644 --- a/addons/captives/functions/fnc_canSurrender.sqf +++ b/addons/captives/functions/fnc_canSurrender.sqf @@ -10,7 +10,7 @@ * The return value * * Example: - * [player, true] call ACE_captives_fnc_canSurrender; + * [Jean, true] call ACE_captives_fnc_canSurrender; * * Public: No */ diff --git a/addons/captives/functions/fnc_canUnloadCaptive.sqf b/addons/captives/functions/fnc_canUnloadCaptive.sqf index 3e014d72c7..a86bdae588 100644 --- a/addons/captives/functions/fnc_canUnloadCaptive.sqf +++ b/addons/captives/functions/fnc_canUnloadCaptive.sqf @@ -11,7 +11,7 @@ * The return value * * Example: - * - + * [player, bob, car1] call ACE_captives_fnc_canUnloadCaptive; * * Public: No */ diff --git a/addons/captives/functions/fnc_doApplyHandcuffs.sqf b/addons/captives/functions/fnc_doApplyHandcuffs.sqf index 6c44df3dc5..8abf8c836c 100644 --- a/addons/captives/functions/fnc_doApplyHandcuffs.sqf +++ b/addons/captives/functions/fnc_doApplyHandcuffs.sqf @@ -10,7 +10,7 @@ * The return value * * Example: - * - + * [player, bob] call ACE_captives_fnc_doApplyHandcuffs; * * Public: No */ diff --git a/addons/captives/functions/fnc_doEscortCaptive.sqf b/addons/captives/functions/fnc_doEscortCaptive.sqf index fbbcd09947..299aa81631 100644 --- a/addons/captives/functions/fnc_doEscortCaptive.sqf +++ b/addons/captives/functions/fnc_doEscortCaptive.sqf @@ -11,7 +11,7 @@ * The return value * * Example: - * - + * [player, bob, true] call ACE_captives_fnc_doEscorteCaptive; * * Public: No */ diff --git a/addons/captives/functions/fnc_doFriskPerson.sqf b/addons/captives/functions/fnc_doFriskPerson.sqf index d69dbd045c..14b18ffd0e 100644 --- a/addons/captives/functions/fnc_doFriskPerson.sqf +++ b/addons/captives/functions/fnc_doFriskPerson.sqf @@ -10,7 +10,7 @@ * Nothing * * Example: - * TODO + * [player, bob] call ACE_captives_fnc_doFristPerson; * * Public: No */ diff --git a/addons/captives/functions/fnc_doLoadCaptive.sqf b/addons/captives/functions/fnc_doLoadCaptive.sqf index 92d1adecf8..9fd65a130d 100644 --- a/addons/captives/functions/fnc_doLoadCaptive.sqf +++ b/addons/captives/functions/fnc_doLoadCaptive.sqf @@ -11,7 +11,7 @@ * Nothing * * Example: - * TODO + * [bob, tom, car] call ACE_captives_fnc_doLoadCaptive * * Public: No */ diff --git a/addons/captives/functions/fnc_doRemoveHandcuffs.sqf b/addons/captives/functions/fnc_doRemoveHandcuffs.sqf index 01ca4ef436..a69decf620 100644 --- a/addons/captives/functions/fnc_doRemoveHandcuffs.sqf +++ b/addons/captives/functions/fnc_doRemoveHandcuffs.sqf @@ -1,16 +1,15 @@ /* * Author: PabstMirror - * Release a captive + * Remove handcuffs from a target * * Arguments: - * 0: caller (player) - * 1: target + * 0: target * * Return Value: * The return value * * Example: - * - + * [bob, false] call ACE_captives_fnc_doRemoveHandcuffs * * Public: No */ diff --git a/addons/captives/functions/fnc_doUnloadCaptive.sqf b/addons/captives/functions/fnc_doUnloadCaptive.sqf index b4814fc564..b7fa57a7bb 100644 --- a/addons/captives/functions/fnc_doUnloadCaptive.sqf +++ b/addons/captives/functions/fnc_doUnloadCaptive.sqf @@ -10,7 +10,7 @@ * Nothing * * Example: - * TODO + * [bob, car] call ACE_captives_fnc_doUnloadCaptive * * Public: No */ diff --git a/addons/captives/functions/fnc_handleGetIn.sqf b/addons/captives/functions/fnc_handleGetIn.sqf index eb3a9ad8b1..54133e2362 100644 --- a/addons/captives/functions/fnc_handleGetIn.sqf +++ b/addons/captives/functions/fnc_handleGetIn.sqf @@ -11,7 +11,7 @@ * The return value * * Example: - * - + * [car2, x, player] call ACE_captives_fnc_handleGetIn * * Public: No */ diff --git a/addons/captives/functions/fnc_handleGetOut.sqf b/addons/captives/functions/fnc_handleGetOut.sqf index b212377dd2..4bf9a1fa19 100644 --- a/addons/captives/functions/fnc_handleGetOut.sqf +++ b/addons/captives/functions/fnc_handleGetOut.sqf @@ -11,7 +11,7 @@ * The return value * * Example: - * - + * [car2, x, player] call ACE_captives_fnc_handleGetOut * * Public: No */ @@ -30,4 +30,4 @@ if ((local _unit) && {_unit getVariable [QGVAR(isHandcuffed), false]}) then { }; [_unit, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); -}; \ No newline at end of file +}; diff --git a/addons/captives/functions/fnc_handleKilled.sqf b/addons/captives/functions/fnc_handleKilled.sqf index 219bd2eb60..9e9c5e1ac8 100644 --- a/addons/captives/functions/fnc_handleKilled.sqf +++ b/addons/captives/functions/fnc_handleKilled.sqf @@ -9,7 +9,7 @@ * None * * Example: - * - + * [bob1] call ACE_captives_fnc_handleKilled * * Public: No */ @@ -24,3 +24,7 @@ if (_oldUnit getVariable [QGVAR(isHandcuffed), false]) then { if (_oldUnit getVariable [QGVAR(isEscorting), false]) then { _oldUnit setVariable [QGVAR(isEscorting), false, true]; }; + +if (_oldUnit getVariable [QGVAR(isSurrendering), false]) then { + _oldUnit setVariable [QGVAR(isSurrendering), false, true]; +}; diff --git a/addons/captives/functions/fnc_handlePlayerChanged.sqf b/addons/captives/functions/fnc_handlePlayerChanged.sqf index af6472c211..9c4f02546f 100644 --- a/addons/captives/functions/fnc_handlePlayerChanged.sqf +++ b/addons/captives/functions/fnc_handlePlayerChanged.sqf @@ -10,7 +10,7 @@ * The return value * * Example: - * TODO + * [bob1, bob2] call ACE_captives_fnc_handlePlayerChange * * Public: No */ @@ -18,7 +18,7 @@ PARAMS_2(_newUnit,_oldUnit); -if (_newUnit getVariable [QGVAR(isHandcuffed), false]) then { +if ((_newUnit getVariable [QGVAR(isHandcuffed), false]) || {_unit getVariable [QGVAR(isSurrendering), false]}) then { showHUD false; } else { showHUD true; diff --git a/addons/captives/functions/fnc_handleUnitInitPost.sqf b/addons/captives/functions/fnc_handleUnitInitPost.sqf index 635d7b0439..1a5a8f2ecd 100644 --- a/addons/captives/functions/fnc_handleUnitInitPost.sqf +++ b/addons/captives/functions/fnc_handleUnitInitPost.sqf @@ -9,7 +9,7 @@ * The return value * * Example: - * TODO + * [bob] call ACE_captives_fnc_handleUnitInitPost * * Public: No */ diff --git a/addons/captives/functions/fnc_handleWokeUp.sqf b/addons/captives/functions/fnc_handleWokeUp.sqf index af59b5c56e..9bf2e1a2bc 100644 --- a/addons/captives/functions/fnc_handleWokeUp.sqf +++ b/addons/captives/functions/fnc_handleWokeUp.sqf @@ -9,7 +9,7 @@ * The return value * * Example: - * TODO + * [bob] call ACE_captives_fnc_handleWokeUp * * Public: No */ diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index 1be72ca7c9..cf03704a85 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -10,7 +10,7 @@ * Nothing * * Example: - * TODO + * [bob, true] call ACE_captives_fnc_setHandcuffed; * * Public: No */ diff --git a/addons/captives/functions/fnc_surrender.sqf b/addons/captives/functions/fnc_surrender.sqf index bb782d85da..8b9d870cd5 100644 --- a/addons/captives/functions/fnc_surrender.sqf +++ b/addons/captives/functions/fnc_surrender.sqf @@ -10,7 +10,7 @@ * Nothing * * Example: - * TODO + * [Pierre, true] call ACE_captives_fnc_surrender; * * Public: No */ @@ -19,12 +19,18 @@ PARAMS_2(_unit,_state); if (_state) then { - if (_unit getVariable [QGVAR(isSurrendering), false]) exitWith {}; + if (_unit getVariable [QGVAR(isSurrendering), false]) exitWith { + ERROR("Already Surrendering"); + }; _unit setVariable [QGVAR(isSurrendering), true, true]; [_unit, QGVAR(Surrendered), true] call EFUNC(common,setCaptivityStatus); [_unit, "ACE_AmovPercMstpSsurWnonDnon", 1] call EFUNC(common,doAnimation); + if (_unit == ACE_player) then { + showHUD false; + }; + private "_surrenderFnc"; _surrenderFnc = { EXPLODE_1_PVT((_this select 0),_unit); @@ -49,7 +55,7 @@ if (_state) then { }; [_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus); - + if (_unit == ACE_player) then { //only enable if not handcuffed if (!(_unit getVariable [QGVAR(isHandcuffed), false])) then { diff --git a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf index dd3b6e6818..626a0b34e4 100644 --- a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf +++ b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf @@ -10,7 +10,7 @@ * Nothing * * Example: - * TODO + * [bob, car1] call ACE_captives_fnc_vehicleCaptiveMoveIn; * * Public: No */ @@ -24,5 +24,3 @@ _target moveInCargo _vehicle; _target assignAsCargo _vehicle; _cargoIndex = _vehicle getCargoIndex _target; _target setVariable [QGVAR(CargoIndex), _cargoIndex, true]; - -TRACE_3("moveinEH",_target,_vehicle,_cargoIndex); diff --git a/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf b/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf index 4210e8da15..5ef6f01406 100644 --- a/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf +++ b/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf @@ -9,7 +9,7 @@ * Nothing * * Example: - * TODO + * [bob] call ACE_captives_fnc_vehicleCaptiveMoveOut; * * Public: No */ @@ -21,4 +21,4 @@ _unit setVariable [QGVAR(CargoIndex), -1, true]; moveOut _unit; [_unit, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); -unassignVehicle _unit; \ No newline at end of file +unassignVehicle _unit; From ed3f28ec6d1633a48ee3bc41a37f8497fb5719b6 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 6 Feb 2015 22:24:27 -0600 Subject: [PATCH 094/211] Minor Cleanup --- addons/captives/CfgMoves.hpp | 2 +- .../functions/fnc_canEscortCaptive.sqf | 4 +- .../captives/functions/fnc_canFriskPerson.sqf | 1 + .../captives/functions/fnc_setHandcuffed.sqf | 35 +++++++-------- addons/captives/functions/fnc_surrender.sqf | 45 ++++++++++++------- 5 files changed, 49 insertions(+), 38 deletions(-) diff --git a/addons/captives/CfgMoves.hpp b/addons/captives/CfgMoves.hpp index bb6b8669e0..288d153d7b 100644 --- a/addons/captives/CfgMoves.hpp +++ b/addons/captives/CfgMoves.hpp @@ -70,7 +70,7 @@ class CfgMovesMaleSdr: CfgMovesBasic { InterpolateTo[] = {"Unconscious",0.01}; }; class ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon { - speed = 0.4; //for gameplay reasons, slow this down + speed = 0.333; //for gameplay reasons, slow this down actions = "CivilStandActions"; file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\sur\non\AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon"; ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1}; diff --git a/addons/captives/functions/fnc_canEscortCaptive.sqf b/addons/captives/functions/fnc_canEscortCaptive.sqf index cbb098881f..85bd8bbd3e 100644 --- a/addons/captives/functions/fnc_canEscortCaptive.sqf +++ b/addons/captives/functions/fnc_canEscortCaptive.sqf @@ -18,9 +18,9 @@ PARAMS_2(_unit,_target); -//Alive, handcuffed, not being escored, and not unconsious +//Alive, handcuffed, not being escored, and not unconscious (_target getVariable [QGVAR(isHandcuffed), false]) && {isNull (attachedTo _target)} && {alive _target} && -{!(_target getVariable [QGVAR(ACE_isUnconscious), false])} +{!(_target getVariable ["ACE_isUnconscious", false])} diff --git a/addons/captives/functions/fnc_canFriskPerson.sqf b/addons/captives/functions/fnc_canFriskPerson.sqf index 28a9ee0134..5eecc453d4 100644 --- a/addons/captives/functions/fnc_canFriskPerson.sqf +++ b/addons/captives/functions/fnc_canFriskPerson.sqf @@ -19,5 +19,6 @@ PARAMS_2(_unit,_target); _target getVariable [QGVAR(isHandcuffed), false] +|| {_target getVariable [QGVAR(isSurrendering), false]} || {_target getVariable ["ACE_isSearchable", false]} || {_target getVariable ["ACE_isUnconscious", false]} diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index cf03704a85..912b00662f 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -1,6 +1,6 @@ /* * Author: Nic547, commy2 - * Handcuffs a unit + * Handcuffs a unit. * * Arguments: * 0: Unit @@ -18,39 +18,38 @@ PARAMS_2(_unit,_state); - -if (!local _unit) exitWith { - ERROR("setHandcuffed unit not local"); +// We only want this function to work on local machines +if (!local _unit) exitwith { + [_this, QUOTE(FUNC(setHandcuffed)), _unit] call EFUNC(common,execRemoteFnc); + TRACE_2("running setHandcuffed on remote unit",_unit,_state); }; -if (_state isEqualTo (_unit getVariable [QGVAR(isHandcuffed), false])) exitWith { - ERROR("new state equals current"); +if (_state isEqualTo (_unit getVariable [QGVAR(isHandcuffed), false])) then { + LOG("setHandcuffed: current state same as new"); }; if (_state) then { _unit setVariable [QGVAR(isHandcuffed), true, true]; [_unit, QGVAR(Handcuffed), true] call EFUNC(common,setCaptivityStatus); - - // fix anim on mission start (should work on dedicated servers) - _fixAnimationFnc = { - PARAMS_1(_unit); - if (_unit getVariable [QGVAR(isHandcuffed), false] && {vehicle _unit == _unit}) then { - [_unit] call EFUNC(common,fixLoweredRifleAnimation); - [_unit, "ACE_AmovPercMstpScapWnonDnon", 0] call EFUNC(common,doAnimation); - }; - }; - - [_fixAnimationFnc, [_unit], 0.05, 0] call EFUNC(common,waitAndExecute); - _unit setVariable [QGVAR(CargoIndex), ((vehicle _unit) getCargoIndex _unit), true]; if (_unit == ACE_player) then { showHUD false; }; + + // fix anim on mission start (should work on dedicated servers) + [{ + PARAMS_1(_unit); + if (_unit getVariable [QGVAR(isHandcuffed), false] && {vehicle _unit == _unit}) then { + [_unit] call EFUNC(common,fixLoweredRifleAnimation); + [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); + }; + }, [_unit], 0.01, 0] call EFUNC(common,waitAndExecute); } else { _unit setVariable [QGVAR(isHandcuffed), false, true]; [_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus); if ((vehicle _unit) == _unit) then { + //Break out of hands up animation loop (doAnimation handles Unconscious prioity) [_unit, "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); }; diff --git a/addons/captives/functions/fnc_surrender.sqf b/addons/captives/functions/fnc_surrender.sqf index 8b9d870cd5..1f0e232926 100644 --- a/addons/captives/functions/fnc_surrender.sqf +++ b/addons/captives/functions/fnc_surrender.sqf @@ -18,46 +18,57 @@ PARAMS_2(_unit,_state); -if (_state) then { - if (_unit getVariable [QGVAR(isSurrendering), false]) exitWith { - ERROR("Already Surrendering"); - }; +// We only want this function to work on local machines +if (!local _unit) exitwith { + [_this, QUOTE(FUNC(surrender)), _unit] call EFUNC(common,execRemoteFnc); + TRACE_2("running surrender on remote unit",_unit,_state); +}; +if ((_unit getVariable [QGVAR(isSurrendering), false]) isEqualTo _state) then { + LOG("Surrender: current state same as new"); +}; + +if (_state) then { _unit setVariable [QGVAR(isSurrendering), true, true]; [_unit, QGVAR(Surrendered), true] call EFUNC(common,setCaptivityStatus); - [_unit, "ACE_AmovPercMstpSsurWnonDnon", 1] call EFUNC(common,doAnimation); if (_unit == ACE_player) then { showHUD false; }; - private "_surrenderFnc"; - _surrenderFnc = { - EXPLODE_1_PVT((_this select 0),_unit); + // fix anim on mission start (should work on dedicated servers) + [{ + PARAMS_1(_unit); + if (_unit getVariable [QGVAR(isSurrendering), false] && {vehicle _unit == _unit}) then { + [_unit] call EFUNC(common,fixLoweredRifleAnimation); + [_unit, "ACE_AmovPercMstpSsurWnonDnon", 1] call EFUNC(common,doAnimation); + }; + }, [_unit], 0.01, 0] call EFUNC(common,waitAndExecute); + //PFEH - (TODO: move to event system?) + [{ + EXPLODE_1_PVT((_this select 0),_unit); if (_unit getVariable [QGVAR(isSurrendering), false]) then { + //If unit dies, gets knocked out, or is handcuffed then end surrender if ((!alive _unit) || {_unit getVariable ["ACE_isUnconscious", false]} || {_unit getVariable [QGVAR(isHandcuffed), false]}) then { [_unit, false] call FUNC(surrender); - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [(_this select 1)] call CBA_fnc_removePerFrameHandler; }; } else { [(_this select 1)] call cba_fnc_removePerFrameHandler; }; - }; - [_surrenderFnc, 0.0, [_unit]] call CBA_fnc_addPerFrameHandler; + }, 0.0, [_unit]] call CBA_fnc_addPerFrameHandler; } else { _unit setVariable [QGVAR(isSurrendering), false, true]; + [_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus); - if !(_unit getVariable ["ACE_isUnconscious", false]) then { - //Break out of hands up animation loop - //don't want to step on animations from medical (TODO: testing medical integration) + if ((vehicle _unit) == _unit) then { + //Break out of hands up animation loop (doAnimation handles Unconscious prioity) [_unit, "ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); }; - [_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus); - if (_unit == ACE_player) then { - //only enable if not handcuffed + //only re-enable HUD if not handcuffed if (!(_unit getVariable [QGVAR(isHandcuffed), false])) then { showHUD true; }; From fcf39a39164eeef998f71a1ee1582b937a32c515 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 6 Feb 2015 23:23:33 -0600 Subject: [PATCH 095/211] #118 Sound Effect from CSE --- .../captives/functions/fnc_doApplyHandcuffs.sqf | 3 +++ addons/captives/sounds/cable_tie_zipping.ogg | Bin 0 -> 17543 bytes 2 files changed, 3 insertions(+) create mode 100644 addons/captives/sounds/cable_tie_zipping.ogg diff --git a/addons/captives/functions/fnc_doApplyHandcuffs.sqf b/addons/captives/functions/fnc_doApplyHandcuffs.sqf index 8abf8c836c..0d15f503e8 100644 --- a/addons/captives/functions/fnc_doApplyHandcuffs.sqf +++ b/addons/captives/functions/fnc_doApplyHandcuffs.sqf @@ -19,4 +19,7 @@ PARAMS_2(_unit,_target); _unit removeItem "ACE_CableTie"; + +playSound3D [QUOTE(PATHTO_R(sounds\cable_tie_zipping.ogg)), objNull, false, (getPosASL _target), 1, 1, 10]; + ["SetHandcuffed", [_target], [_target, true]] call EFUNC(common,targetEvent); diff --git a/addons/captives/sounds/cable_tie_zipping.ogg b/addons/captives/sounds/cable_tie_zipping.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4f76037eb1cd1809e68c2d977e17aedcc759f18e GIT binary patch literal 17543 zcmeIZc{r5c`#Ap07-KM)VKCOl7#ds62uYTiF?PxxD$Ag($xf*TLt_mgNoC*nP$5nB zNC<@%ilR+Qd*b(~*XR9vzdzUay1t+5`hNfVUB5GD&T^mo-1j;6x$krC=gc$vj~=xH zpuj)jo|@9>tzr+-xdr#tt$`od>MTfnU!MZ;vqFpkr=fzJcC)>Ljv;8kwv{ z(!`N9bTrj8wZ@utiUJ_v4$K#k+fOm-7F%PhhT@VO0{R@!=8@-Qt z26=gh=z-ikL2hJ_8yOei%lJDE6o?V%;TII*#s~rX=mj3vP#4;Q`5psd5#Ax8;9&Gf zk|4-4DDXHqHb#K=U)<0wWU_B)P#}c+FEJ&Wp(6x9000wjiS1>MWjFu;$e^%xckao- zTi>3YjIA`moMdm67HUn#POxu+rIlM1k|&2jSSU`zOB4WL08y?GwbqJ?)($l8@(l2gn%1$CB7&s)=Yl}fG6m8(j#ZOzplx`eLW;&~eSf%+ZCLeW4X|CRii2M!zy z2=w{`+@k!K-rs5A0469Bz$_Cp+$23REJWBbfiPunKc&;!cwNrR_JX@-Btm-?LN@a9?7fAoRY{(8a#Oi(~nr z_sx*`Wq(W2!k2jJsvdwaiKPO;ehCi{&-Xz-Pt}YQ*w=Y1|5fEp3|LCazO=pdru|=f ze~5Pr0%* zD_MDnc;B#`szw({T@^Qvet(#DrKO8E0z7V zC~#46UKv!l#2@=e%nJdnqA-r{-xqF`Fp8EL|F<~$Q5sa{zxw<~nH>&91Ug>`e|$aR z@O1dxqf>K_(%i%oy`6LaBmSK_I1^yYoc@?&HY1fhP!PY5#`|}H|FImCV9Y?K^xaH? zMKi(bf$GR7js0sH<03|&y4Z;x9v2Ot5c9UvIy|B2J>lRz72!S8=6&$`Dd)CRbKm|g zJ_`SL%K^;>zbAdc^gk^p{e^bAyjd2(IZN@6g2vOVYPI%vj(X$Z?hs}q{_hI_ z0Gte@#nx6ru(4H}velfjRdcY{bNJtdsV&n21)Bo^;7QQaviKlmG_BB7*`)Phmd#5- zpR{ChVVq;AfT#xBEJcpNC#Oix71Sv&n3S|rk_fdA4Un^En+fQY+bY4;5TM>7fFcP% zZ~#IWh7v5ez;)aTW)r~38Zf-}w+2uiXmCDhP}X$+ssA5k1S>9$(XIFo6_C+>3zq%z91%T^h|&KMlYcr(|2JOXj6g=CBLDCLX9P0(zr^eR#(4jK8vmb`0H}5lLGUX^ zE0R-zGPNPVSpqc+XEvt6^l~24@R76>!8wa*2;{>j{vPjJ(x7|-8#Dxp5g8gn`EaXv z;=f#00Ot!f*}u-BNSNHM~Oa0Gz!Ts!w=bn$X@ zu}^;WP_XLo8r=qCW#{0Kv*44vlvGU2FR!jv1{sb1IiegK4*TT)18(1;JNggyVeukl)0sBb8_J71J3UKDPmg~y)lIK>#A322_{zsY$!^J*Z;;rW2aw_c|9wlr!xYgBfyW6(J z`Y7DvF(^b(N*qvRpa=)Ij&D_d0N8&V0F)a&!dd5wn>gS>2i-a^S!9F~=yMI?N>MaZ zrG$+CRDTH59t5EL>p+LfU%(Sgz>@G%?N;>4q3hS*i6QqxLQ~$JS4+4eS5DuQJ=*g4~bwC-uMDLVoCyLe{x1Y>`UtcVVIX z`@}qJTOZ+5(an7iT(yEv{YSWgJY8*oqA;!9WB$PTxzBNM zmw+&zfDd7yl6Y?E0=VReD%;dO;K0BKr=o0I+dtX^dV|(9rLxjg@~b}$TmGr9lJ~tm zTMeM6n*G4`Z9yp5OVhm!=>ZYHgcL3>CDkt)kt>y&~i!lUdpE_Ub%2w)d!fa^99o@VXqV zPJdoWo}Y4&=hig<6#!y0cwu~n910we#t}>*KmvE7AR13eg>o&tcmM}*h)fAQx(Q2A zwC6JF3j-Q&a597d2}vnmaq%&4CV%^lw-f{wK|`f*5pfWn?N3&FrLG*07YR!?m-+KN z$K(P)FOMKaq0==&rDbHd;pFi01O>(Ie~+DcIIs{*#RC?_8`J6=`OE1 z0N}vw8Vm>=0D=5*u>RB`|J;^P>i@I?Tel@!C)j1p7nc%2#D4|3Wp%RN9(~eYt-U&A ziVlUQsjH(;qwY1(qZrT(cNys#P^e~RG&35NZa}5zl8h(@x(2(+h7q$LqlJm zuD(-G*MO{VY+y(OyKYKu5;x^Hg*OE@#Wr!9{GT>?e}HA=CTbJD$pxlrn@|vE8^9;{ zub`j1{z28P9XRH$`eV+yD+~gv`hSG4IqUjA^-A#ifn&`k5tAXi2Uf<(@lDVA7Hg{`}FTwyU&}F`e!n3 zZf>5+%UcsL9-C`$`}S6sQWXq;hF%le(`3eZDroUye{rq-o^B|i&Mf9OTTG)QYX%wI+7Y0b1Ay+xt;gR34Mr{!>Mf@ zcgD^;SjD`98;&~Iu`r3*jd87x9Vj1#j5>~u(W=+j^?X?t6>Qc5gN8uoa%k1x5oTwNa{WJ1Eb$uGrDmM#;x|p@75?2(+CP#)lHN0d*(#JSM&I2rYjmA$x%mIf>z>9ljlgdu?Od|QYfV+!lnvIeda$!;h zrTyd{YA*}sqI3F{A)|3_RQo`=%)zK(AX&{BnqzJdkQ|}G`cya8V zwBD{OUt6!uMFp=QN)PWynb-;Gpi>Q}b}#J3-bS2w z`fGM)SE51B@K40u)!SW=Y=;Yn>f$duJ01>c6^wXQqhv=gltdcUy5oe0AU05hyhrb_ zv>Nr`#sn%2EwH-LzVf5#5GL@`#t0-p&Rc?;saC350<3ba8V;aE3%`%OO^7s-Cz#;# z+bv?PVYK7eCdpSMJ|k4-ndpu7{dr^1FO|*kFtXmUvZKo#d9u4Fc6~NrE|}kdvXX9A zo7nIcBRa(&O;LdW)x*ORq*jY7w%f+tfdKAP&Q}91huh+=)Q+|l2JZA9VqHwcOjp`8 z&l-DZXs8->D}2e)lIAqaQDt^lTtc@>hD_D>iV)8@TK|p3z7Qx z7#@lH&;kXC{jI!bosSyz+Xde77!(>akt(-`BpwkfAu7u~lM+$U@R)pXPcaQ@LQ`_4 zLm@zG^whHYvGG@@kL+Xmxee#)htBadK6n$_Ga)wB6E3J5Y36Rkwf5{c#+L_Xb1i0O+W&47x!YzPSagu6)lX=f z!#51Me^F`?RdcGUwk z%T$oO+xo0g{@$RN)BP`gesX1^#BbLAwGa`O!rliDyFOo?N3<35$@f!H>IPNC+n%JE z7tyhIIJFnFhU=Aazkq=Va{YKl#ARu)wpDQl@CiHq=LcL>!HWq+Lh*M-Ybq?E`em4DCzayLZmfIU*GGftbgo?^!+x8G zUryXtc~jPRqyv`0C30F6QeY$1KiL5ktfkJ9%Aax17Z^|^g~jRs&&%F*$;#5a^6BuH zpNs^TgiMsX+pV~Yl8P_CLP{?@)h@UupUel;IuE3tNO*14ene*18`1LJuWKCDMSSN) zcqWr2Z2Foh#j_G2SH`tc zV<&=A`aZ9Zb!hU-&f`0dz4H6r$Aq7+D@Uzkt~T)E$#^Q~7we5Tn=uUt_Lw5sJMoG|I2SLTM?yP-6o@x!3R=KntS&SBu_w(>{ za&aHBnD@PULD5eQP)rq$54z4(;4LmagKEC~H~S5&a|W>E%CW9asOsYCqF{|9gJ0KQ zBA5tiGP&worHw9EvCUb*`pR&tJB<@CSB`X#v?raI0rVzaP&5yw_x;J7z#+`` zzJPL?fjhaX$>oKQ7xH`iJgl*$q)$PsA5Y{;Q_6XauhqDJN_sfmJW-KOk7sB>n{&bW?fbjgd~G%7)uH*P*R8`PY~4>SB+zstOfHBn@h z4$X0$vqYHXY$~^!COX~lY&ABbC-qYxeDOrVZrsS1=IU2(9kKLy>v5dq9Y{3KD}L$B zgf*`v0~Gk{u(OX<&P3TQ?;=fy`!|7g(rWA_z%EV0rZp=vbaU=8t0>9c#1MslqnC@1 zUHzuE7RUqIRl|fr;HQsLy@xxPT$CrR{MtaltX`sA-B_cxWU?H!u+rOtUdH~kVaQFy zWZn;7kG>^1*F+XfQcj&ljDJ?>b2Y*&o{H3yPBMG>H~S65NJ`iUkL6d|#yb)v;nd~% z$_ab77Y`8E~G4xqm*7j4kkb1W@MxS2t zLGdCygp}iG47i~6{G)uKQtwD7ao^gn=EEzEJ03W_58pv~L8`0+_{Hpvc-l|R-%p}J zZhN8{D$Y}lU9zF>|_!fUPM}3`=KLWhLFzl;WFq{JJ07=s`jnTQn@m- z?TJibgWkJ32-fAHg<5iNw=oi9B&Ymc?*N%QHW*8FhgtB~PSd4LwHl056G!`{x`{7v zT-hE2a8~INm7a6~gxN?$+p}b3m?4erVB^{HUItC~7ODDhCcV0c|MD-1jA_13Z@u$x zh2t-d9(=g#<_>b+k0)<1+_pjvns|2sCn?-K8|`swai;G$`r3hC-%~`dKH=CyOP$3< z>y3w1M%pWnYr42bGUcMqt8uk-(;Zq7J&lee&2qWK!rL3JSMO^x=&5Tu$P%pwY&3N3 z^zWZ6MUBtVCQ7OLwe_QW%{@MQgdcrdWt^NU7ttgJ({yaeAEkTqjC-CNsi+Q&^O&0L zpG6)|%_GzNRCcyhS>=5bEZAe>GC=85gb#$pUS_@R5+cgmwvRQ2u*rOy|GT1Gd#+mVy)bXwn%i&$!d!lBZ(i+oRPk9ns)jxLC<3`R zSSw<_lASNhDIYex)Al%6pfm6i+T14Tdt0C}(MaJ1_&lL{UJW>rhEA*=a=s&jA{yfg z)>b}T`<8}k>+#V@HSQTJ*YAeD_+1Q9?`a7SQeca1Uw+(vU6`IC^4WlrOs(ZZ)Cm?T z&jQ_m$(5^nDyuKV1ivN;r#TgMA81fazp?1wa(KSx6nFw(P;I#^{?a+(F70u&%@uwU zp(_;Y0x1_mqE8g9n=EJK;R!>Jdf(1YUhAA&prBE<7=F*SpUxii-i!@Ms&Az5bl4&7 z@~39*6T#1gGHgw?xW@bv>`NV$8H7^f@k0xI7DcQbVm}NSb(czp;P=8!%4L z_g45lW58iXpUeh6i)qq87e=`0xIHA9P8*!>yRh@w?uAE1P$Sq^fgl9k`!Q7CwUhWH zEmF^XS=%o8R^-{g;Nw=bazSPNY z%C0+v!eJ$2+QXxFy%p;#l* z@3*;0aue|2VgnI6?VzqV{`dMQcO0U04d@IWfa&B}&)x8Z%2-x5Jj*9Iua`fG?!}5K zAmb3ZJsD$YSh9J9-p6ZfNE=j(;o_1aI*FRf+J%0e0Yu3ddqJS7u?F69Sz;*9`Tfr9 zQtnp&LMqxzB!02$y`CeM>TpkZmwoyNaT&h58+Q_xOV*bWoLp)oJOwPt!!f0V^DNdCL3z@+;ij6@AsJu zT%xG|!H15u0zIg_-SIp5BCrXOLEFDxcoG|l^NP=zmWkq_X*nhR27H#tXYGYa4oLed zpDEPYSQ*dOqulr-%nUZ&`@*oOaw>~YG@|2f#KIR=@3X|Y!|i8Bv{KZ6zBqr(!;7OA z(B_;yE`BwPU!LnU7l2S4X$77kbzSE_WfERoAEnVT$dsW@>Y zEDQzfvo^9$Q|(|ixz@A>csYAI%OhL;JY3|0B4EXEORU| z5&;7e3D8gB@*#5~X*Vi$26Z!c%JvV9v!(&Jl^-)7NIuQ4H)9;W^W@~}7A%HuJ~{a! ziuSWA^O}wLQ-kP(%saT_7{!L1@*Ljww<*aNeikO~8}JYcq2fNlkUtB%p>kmp5!V)) zc+n^n9#O(^M2d3XI@8iumS?^@bWc2mMC&}6w(c#$aFm=w70+s)}t0vD}o zK27)cX^C7269?cGk#g~mp0(BXzP~CiNnbrZ!6DX{=bG#dxT2GX+ip zUtQ8>B(pvGX1lu|SVJJa{mI3}z##LbDK>|y*pgrf;7_aHxM<~iVPs&{OfYyn{Dy$j zzm>lW037Bn)u@=xySsTuISW;Uuqc^STujU%Zfgq|MSAi`>x?K#T6B^j%9G+7$996i zlKpHN$St)HXkUvQQl9FQH1h4`t&N9HME`v=7X%zlDU-k)_sOpH`GVU|AZ)s!Ap*ei z0@l3_FK-3ljlt`AP7zBU0yS&%qA8IwNz0SXgQT^=uZnCD-gPun>Wt)D&BdekQggxb z+U+mkdSlgYH+8PsUl#Q|r7`~a^inSNQRM5v#q$n}$~TfJrr&ty8L-s)oV$iZ7>Y{V zbK;QDb}i72iJ@tZgae;FxtLYLKWCHGzS2xQMTtZVl5TV4e;xB?aR0)$Xl(8 zj;&$U02uc>EfVSFv(^ylGzWjQLrFgtgW*amHZ5`@iNL`tTrZkx2?+tjk=QyJ5DuCa z&yDyjaK!VV13hA(WO#n~Cbak!x@Y*@^Oeh%#qa3nbh`wUn}3AC+zRfV@bILfdP&S; zYT+1)h@@jac?%W2N^;I&SU-=~G{14%yZM9NlMOFuGE-EOhq5KJ=g zd@sZ>v4Ed^0k&uA^ID|N0g-E#0%?+HgVk5^Gbb-_k$p0aUYj14jc=Nm2e9s4G6nW^ zn|*KzoQF*5jKV;Cw9v)@hZlg>M=p#0qs-gY!aR*h+nm((xt`#-gzGtseX{4ynM6@R zKWC^%7_IBdDb(WWDRy+|kWY`$w31eh=->vB9VPOL)rt{)M;riuemgp4vIX$O(?uC3 zRu~i&6^!Fz(UD>-Z3JToKsmsu_Sn$pTyLhjzc_8vNkGg7{K%GtP_Vr~2KPeaO{0mb z_eF%CVz;BMl@1OMvCeNh_Ecb7L2Fy)&wxRk&uP^&N zJPO=tqNyz1CYM$SzlvXA;A7}sOjAvns3=(g4H1>%w?q0{JboyK#X6bdkrZ^X92z#; zsgap+A`pNu<2g25?mTFOz&r|3Vk`!WBhxW(4|fUn6OF^in~1mt)OM6itSD}8sxV}J zQIu<^gsO@?j!TB4FP89h&bgz!Wnt9|`bsYOhG0;VPc~A_sGcQ(C)%-^;cQ5}DcY)pI zJh4-=+Z#ko=NFV3<{t0cPP~e6orgqR%4bZ!kLc5A%1@7g0Va(~VoawdYy0=GnrS20 z!DJ7)YDP6504;7lUO7hR#L6)5Y%k;+iSbInF)N|K{KBbE_`6>o@8j>PJ}|y*tfBxd zuXU!`;lSW$3#Qj&xJeH)QFl`FmIirrsOxoE-OpBrOVT}3md$ofu)~LM(sF31L>#V{ zOr6B^@(~k@9%|*X^R%YfGH~TYwpxuMw6Y4ylxGn!wnUx7zFfK7xZ+Ir)#P4uJQB*e zjKm3c?#Jo;dLNHUP>c=V2sl2h&AbkyV9B`W@4v-D-3L$alZ<+1r+N7js)U{*@p6C$ z6vDck6i&g}+a|jtZ{~>Al#T))<7W@ZUw^=lE)u394xU|AbUV8fw!NVwf=!3n)I*is zYmH#34x%vYn)1T}j~^!HPsd&^cFJ#4r5;C#(pVIfj-MFP_xd`aWv z!R@ct3C@zg+tXWwC_WbIKI^@6q2sA1 ze@i$guetg5(>D$b6i{$8(q_MH>=o zr{Gpqw;^3oFFh3nA&%}JhXyRAp|u<%OT@{u;&HJ@5g4}$0bvJLBAhBZY2Sg3unQ~? zzj-X`X3l#W)n8&GA2Bx5;b^!C8FD;!ed?m{9Me>UO#&az0>gf?u`thgNcEz{w%807xasgNJS})1OF{2ZuRGbyoaE?JiitdXZA z^mKDTc2_td@<11y1kr9XpZOM`5j@Jk7KfO-yP48SpT^e@Q`_C$5AIhvadghBVDXNI$cfDBi5xh7u$xxIPJ~gh zkb~nutTfaEMTTj0<26LukES~x3B}*^_M>FneJ~-`-7g&CUYsFWU$d`u<4StI#QETP zR03QK!FeA!FGh@;zmfh$HTCXxsuU5lJtU819|FSbvRFrzwICNBU?C(-jBxU? z-^GyWe9fLbX?>F&)_^-6x0gVORSXii9TJ$}b6-J0^+ndshaMr&M+}@V6+x}fB8>V}^gigMHIe7kR zp<2CLOuC}c?=T5|4jRY^4LmNS?-qFOYtC@Gk*SV{jZ1h#1xdEM!dOw<;;NnVMdIn# zk^B-q`Pvd+kFo{}yFc@s?5h#@tl628#3WLA8|#M$yO92Zrq`{WSbLosM9V|q=;SUrnMIF*iE*7I&Bb{8F zYKpYVnaP1%{+e}pVvYfqn20t@G{2~&rlmE+8Yayo^&*3PL~tmi+{K~bQ?FxwrhhDL z?K`k7Ai?0BLjCS(V;ea+es|bT<~Ld|n#1%?Le}fA$JhH`KO1>&FST#dwgheMPQo&e z$SfMIj1@uE+sbd-LSqF`#tCEyic1M*^nM{}=yKqJTan^FuXJ}i@iY&hV)q{`q9|Vu!5UY>vp=eyODAT^(*_`(p9_k zZ)LfEhU-TwD2lR$mc`|fr2n_LDwcF_)|43=N{GKZuwcV#5MT|6+jonkkXCP0D>KrP zU2I5x;TTO!Ph8y8vHV0MSa8c;Xr)4`uoDr_!|Y*mXz8%rgknAvkQ-d;p))8*GVVqT zUobeOeJ|@pW|jV~v5!W-&p&U^Y)k_90w#jJ$%%Vu4bfN?WG2Tp8|8)1jU{DI#WkfS z+$QxdGY#&_ttNF2YomhpUUIIE4$+Mp(}v-jnU2ffocFg)kyW;7;BF)>g_OVy)lN7Z zD!vpWw0dm2D51B~OyjyYVle}d7~?o8*Gi-Z%C_{YxYV??^vtYuCLdi{e{*#bc*a)f zh{L{&ui8s>IVVX=EcfS)pyQ@6+4!ba9=x z4}YcKbtSqjRK{)`m1KGeGjHGj=?<(S7Q0*&+7Cfmj#GF-+N*3yn#)dKS#SM=4+Y-G6@dqa2-0m+fzSY}GMas|B+$!89^FJv^rP zn5_;L0aXcc(^`Qu)6I;ez?!zcY9)Xzp)3q(qvHotsj(&j}-Ia?+YXU3J^n}Dr z*ubD9K`6g;B5D^3+K6)MO?ATd!cizyBUEE!o4q|obrNGIM~@?sreXA30t)8`BVD7xjBqY*R;6^DpLP$0SEkLoZFPfyv7qOyb3`PD;Cc|#WpetR$7 z=h-+g62(97d0ds_rn#VoiqS~tjgiW`k+XgK(nrIc93^dne7N&wWeBwgUE$BhE4$8%FQfGZaW zL2}_Brs;Uq+uC(fo(wfS)DMb!O@v>(T;*v=gb>+KYlD2;Z?}x+&96VWdBFPVXttRT z^4z={g$2byt??(d-y_S`GvmB=JpZO>i-||zZ6JA$$X?(b#(J{5+QFXs9!1ZTF@$6> z5}^q8tYB~|5Zp9-%MQjz%`GEhrSAX{Fgc7Qz`&Lp+?VD~30k_~1rSyx0V#QDUYO@t z(r-S~LebP!Ec@AYI12+@D4M+;PF1>zXr$wqIB!=%8W=<)1^YkR^>Q3!E!b}(F#fLJI2IC^wzsO zHIa~12ePP%wfl@PO@5=oWHtPRef{s#$6i3M__Oy-ZK8W+_Un1w55hQ~B^*zPvMu`6 zLwsdmq<6CE?RZ($Gts?YKAY@PFff<;HL5V>yj1)C&cUIB76^J16VZ=KjO9*dxqs=j zmAke_a-+RuM*LD%$sP}P{;0ccVjXW1%9a8$x#hozCvn7Q08}dk8e9IJcXeCi54OA2 z0ERD>nX%8?f+D@24Qv!9{oW;EM!UVENYFK}RYho-XENmukl@_$iFulG3yWM8W4C{S zA&zh!zFvJb->S=dPCO1SyOTX{BU3NwPp@l&qf^NdWNW)xe6`~QMze9k-hZ;YtyoM8 zfMw!oii1anNX4)l$yT~F-z!3OslXz|48O0XEj5;EOFDX%&46&XBSTiQAOd zC%-0Z1}jhHu-@@t#X{CAwk;HoUie*vPrK5hYuc@RLcQavuuA#*_om-MKiZae&AtAb zroHg%3>Sw7ur@3=f#67#pT7mp{b(=XW+o9yd`*;j9F(t&S#VTn<*PivB|A70CK&Q@ z7s?=(a;!X*#J(E)owswBg3(h`*lbdZ$>bup?78jFtz`F`%`2h0W(v{re4ryVufD#+^P=xSS0;iNcFoh;>4+_^3g@r z+h>dGE!IU$ZeL(`MSN=09~Q&Yo09-G5y76{$7XDET^Wm9o4O*>7j z`aUAc_gQLC$k;q(?obiscI>))X;`N4!LtoLZ&9-Qqc0cQo;N`uc-`Xjw1OLF1jv&> zYo6a(xm-tBfNHHnpS6WW5AB@>om&$D=}V2n07ddx4y;WzdT!$U%1upg0?COlj-3P$ z@vx#gHLJZ>_UnCA{m#paa);1S)_ntuFYR6o4!banKJ6OXS!=T`$MxIJqqDLn4;&30 zJAC(DUqsf?qgr2QhF|Z*o9|EeGNU3OFuKNM_~-ESi|dQYc4EPJN!?>J7!q=MRr?lS zw_GyAf`xvZi-AM(NH0jnC{rn*Q%bJ*z4U#Vy29-k_8RL8-yLMcN4m6FW zy�SjMoGq{U*=H>$wT7pM|E}Q6wJt;Pv`V(-r+zBZ6`GE*GO(lP+7{X*!JN=o71I zLULM3kG9x(Fb6rT81qICnrIon&s|h!fFyF(#>slJ(xu0ID$*63fM>f98)^QQeROLP zR05@lH)&AN-Rc~I$;DYW8`y(GCQ;_c@GycUOes~OiN?f^n-b%D^7fdmeX-xp-}Oi) z8*q=cKG62SHPRZ&Cx!*V7zLM8ANK)R$#hXJZa!-aDdHXxfO~N>MkA>X8MM3T zlskT33y@kzEb|l_nTn@h-Nz*L1|D=cN^DwB)6IF6Tzh?>IhWsL_ejm&19zP2 zwZ?9bS!N!xvOK!&w|aV0-kVK|bZAg9q+pkZU-AFehbZ7##v3ESgTqqu}sw8 z&c3k>)QBQS)pvM5hdx_;ER6$DX(j$Vd1QQU^T8E|l6m^EiSy4J9bNG`;vZsh z$-K1Vlf^ejJ71hrT_D0Om#@^ITkAt^T(f&mS!C&M|I)g5_2LPQ9UM1{pvikCZCbAP z-s`pCcb{)CYQcI^MtA_8*nP)lPWidX35wi4p!>S*(wR)rgxz zBiGhh^|n~^KTdSY!{_?(ljufY9=(I7hX$UXX}J91>-hT4I-S|hZZ4HD7=bqPLP5Lo zlh5=Slh-N^dU6{t>}CzT&UBqTsURC^z8s-L;Db080zTbs&uo9X^Stuyx{j#NIk4ly zN{Wy^tcVSBf+CZ3j>DWGVw;9O&dE;3D5!?e!O)}gjy5EUDgTkTH@DjpRYu-E{=Cig zT*0Nc#bHO6M~0$3Bv(%=X$tjWGvHjTIOH{k)l|PCV?Q3nTwYO7jv1<&EQro#2MKDEcqIl6ojM~290Nf#z;ggcBZV8ZYFK;&bclg~cQZtg0b#(cR{n+u`Y^ z_eP|dZq);CX-7L4k~|Q{@_S zO^g@LvNc0c3ZFC<^6c47$#dC94_}{cGkr1{Ua)&fN>^b(5qr60|J^2DIn`I-DYe90<;ApPx0O&G$5+|nyy^n&-0+(pTZ+S#L*@JLS8z~iJr#of}} zX|T#|DF%F!yw(O{o5~LArt7$Gq&T7&mE|+PA};qHonowRYJ{(dXMm!F5s zeO?^>GrTkC_2Z{zLcU4;YsuQT>E9?whPJII5;$60l%^BgQ#DVYK0Ppy41%hwmtGEE*y+|4^W)RYVdb?A!Or(J z2O1(GBfp&i5l;ZuKmt0s(Z8b4d?T%XT_GD71aVEQcS2XcZfphFf%Wxu-PMha9h^0= d#sh*^?mYhW>(^dj^w+Nro)2IM9(xt|{{T~b6N~@= literal 0 HcmV?d00001 From 6d534e88466dfce5414f4522666600fe3fbdaadb Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 7 Feb 2015 15:20:51 -0600 Subject: [PATCH 096/211] #130 - Surrender Module Prototype --- addons/captives/CfgVehicles.hpp | 30 +++++++++++- addons/captives/XEH_preInit.sqf | 1 + addons/captives/config.cpp | 2 +- .../functions/fnc_handlePlayerChanged.sqf | 6 ++- .../functions/fnc_moduleSurrender.sqf | 46 +++++++++++++++++++ 5 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 addons/captives/functions/fnc_moduleSurrender.sqf diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index 934e1215d2..d292402bcf 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -78,7 +78,7 @@ class CfgVehicles { showDisabled = 0; priority = 2.3; hotkey = "C"; - }; + }; class ACE_StartSurrenderingSelf { displayName = "$STR_ACE_Captives_StartSurrendering"; condition = QUOTE([ARR_2(_player, true)] call FUNC(canSurrender)); @@ -86,7 +86,7 @@ class CfgVehicles { exceptions[] = {}; showDisabled = 0; priority = 0; - }; + }; class ACE_StopSurrenderingSelf { displayName = "$STR_ACE_Captives_StopSurrendering"; condition = QUOTE([ARR_2(_player, false)] call FUNC(canSurrender)); @@ -162,4 +162,30 @@ class CfgVehicles { MACRO_ADDITEM(ACE_CableTie,12) }; }; + + + class Logic; + class Module_F: Logic { + class ArgumentsBaseUnits {}; + class ModuleDescription {}; + }; + + class GVAR(ModuleSurrender): Module_F { + author = "$STR_ACE_Common_ACETeam"; + category = "ACE"; + displayName = "Make Unit Surrender"; + function = QUOTE(DFUNC(moduleSurrender)); + scope = 2; //show in editor + scopeCurator = 2; //show in zeus + curatorCost = 0; //??? + isGlobal = 1; //run global + isTriggerActivated = 1; //Wait for triggers + // icon = QUOTE(PATHTOF(ui\todo.paa)); + functionPriority = 0; + class Arguments {}; + class ModuleDescription: ModuleDescription { + description = "Sync a unit to make them surrender.
      Source: ace_captives"; + sync[] = {"AnyAI"}; + }; + }; }; diff --git a/addons/captives/XEH_preInit.sqf b/addons/captives/XEH_preInit.sqf index a98bf73443..75ee77e9bc 100644 --- a/addons/captives/XEH_preInit.sqf +++ b/addons/captives/XEH_preInit.sqf @@ -23,6 +23,7 @@ PREP(handleKnockedOut); PREP(handlePlayerChanged); PREP(handleUnitInitPost); PREP(handleWokeUp); +PREP(moduleSurrender); PREP(setHandcuffed); PREP(surrender); PREP(vehicleCaptiveMoveIn); diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index c0a34e3222..27b7c4ec60 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -2,7 +2,7 @@ class CfgPatches { class ADDON { - units[] = {}; + units[] = {QGVAR(ModuleSurrender)}; weapons[] = {"ACE_CableTie"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ACE_Interaction"}; diff --git a/addons/captives/functions/fnc_handlePlayerChanged.sqf b/addons/captives/functions/fnc_handlePlayerChanged.sqf index 9c4f02546f..13e284ef80 100644 --- a/addons/captives/functions/fnc_handlePlayerChanged.sqf +++ b/addons/captives/functions/fnc_handlePlayerChanged.sqf @@ -18,8 +18,10 @@ PARAMS_2(_newUnit,_oldUnit); -if ((_newUnit getVariable [QGVAR(isHandcuffed), false]) || {_unit getVariable [QGVAR(isSurrendering), false]}) then { - showHUD false; +if ((_newUnit getVariable [QGVAR(isHandcuffed), false]) || {_newUnit getVariable [QGVAR(isSurrendering), false]}) then { + TRACE_1("Player Change (showHUD false)",_newUnit); + showHUD false; } else { + TRACE_1("Player Change (showHUD true)",_newUnit); showHUD true; }; diff --git a/addons/captives/functions/fnc_moduleSurrender.sqf b/addons/captives/functions/fnc_moduleSurrender.sqf new file mode 100644 index 0000000000..5cbf43aacc --- /dev/null +++ b/addons/captives/functions/fnc_moduleSurrender.sqf @@ -0,0 +1,46 @@ +/* + * Author: PabstMirror + * Module Function to make a unit surrender (can be called from editor, or placed with zeus) + * + * Arguments: + * 0: The Module Logic Object + * 1: synced objects + * 2: Activated + * + * Return Value: + * Nothing + * + * Example: + * Called from module + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_3(_logic,_units,_activated); + +if (!_activated) exitWith {}; + +if (local _logic) then { + if ((!isnull curatorcamera) && {((count curatorMouseOver) == 2) && {(curatorMouseOver select 1) == _logic}}) then {//in zeus interface and we placed the module + _bisMouseOver = missionNamespace getVariable ["bis_fnc_curatorObjectPlaced_mouseOver", []];//bis caches the previous curatorMouseOver + if ((count _bisMouseOver) == 2) then {//check what mouse was over before the module was placed + _mouseOverObject = _bisMouseOver select 1; + if ((_mouseOverObject isKindOf "CAManBase") && {(vehicle _mouseOverObject) == _mouseOverObject}) then { + systemChat format ["Debug - module surrendering %1", (name _mouseOverObject)]; + [_mouseOverObject, true] call FUNC(surrender); + } else { + systemChat format ["Only use on dismounted inf"]; + }; + } else { + systemChat format ["Nothing under mouse"]; + }; + } else {//an editor module + { + systemChat format ["Debug - module surrendering %1", (name _x)]; + [_x, true] call FUNC(surrender); + } forEach _units; + }; + + deleteVehicle _logic; +}; From 3f6ffa6ac2eb4d425005afc75c7de260d1213f5a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 8 Feb 2015 13:48:53 -0600 Subject: [PATCH 097/211] Mag Repack - Keep Progress prototype Ideas from AGM and CSE Keeps Progress While Repacking if interrupted Added sounds from CSE --- addons/magazinerepack/CfgEventHandlers.hpp | 1 - addons/magazinerepack/CfgSounds.hpp | 15 +++ addons/magazinerepack/CfgVehicles.hpp | 29 +++-- addons/magazinerepack/README.md | 2 +- addons/magazinerepack/XEH_preInit.sqf | 5 +- addons/magazinerepack/config.cpp | 1 + .../functions/fnc_magazineRepack.sqf | 77 ------------- .../functions/fnc_magazineRepackCallback.sqf | 106 ------------------ .../functions/fnc_magazineRepackProgress.sqf | 70 ++++++++++++ .../functions/fnc_openSelectMagazineUI.sqf | 69 +++++++----- .../functions/fnc_simulateRepackEvents.sqf | 52 +++++++++ .../functions/fnc_startRepackingMagazine.sqf | 39 +++++++ addons/magazinerepack/script_component.hpp | 2 + .../sounds/magrepack_finished.wav | Bin 0 -> 152166 bytes .../sounds/magrepack_single.wav | Bin 0 -> 95466 bytes 15 files changed, 235 insertions(+), 233 deletions(-) create mode 100644 addons/magazinerepack/CfgSounds.hpp delete mode 100644 addons/magazinerepack/functions/fnc_magazineRepack.sqf delete mode 100644 addons/magazinerepack/functions/fnc_magazineRepackCallback.sqf create mode 100644 addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf create mode 100644 addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf create mode 100644 addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf create mode 100644 addons/magazinerepack/sounds/magrepack_finished.wav create mode 100644 addons/magazinerepack/sounds/magrepack_single.wav diff --git a/addons/magazinerepack/CfgEventHandlers.hpp b/addons/magazinerepack/CfgEventHandlers.hpp index f0a9f14d91..b928bc2de6 100644 --- a/addons/magazinerepack/CfgEventHandlers.hpp +++ b/addons/magazinerepack/CfgEventHandlers.hpp @@ -1,4 +1,3 @@ - class Extended_PreInit_EventHandlers { class ADDON { init = QUOTE(call COMPILE_FILE(XEH_preInit)); diff --git a/addons/magazinerepack/CfgSounds.hpp b/addons/magazinerepack/CfgSounds.hpp new file mode 100644 index 0000000000..bc1d0fe0ee --- /dev/null +++ b/addons/magazinerepack/CfgSounds.hpp @@ -0,0 +1,15 @@ +class CfgSounds +{ + class GVAR(soundMagazineFinished) + { + name = QGVAR(soundMagazineFinished); + sound[]={QUOTE(PATHTOF(sounds\magrepack_finished.wav)),1,1}; + titles[]={}; + }; + class GVAR(soundRoundFinished) + { + name = QGVAR(soundRoundFinished); + sound[] = {QUOTE(PATHTOF(sounds\magrepack_single.wav)),1,1}; + titles[] = {}; + }; +}; \ No newline at end of file diff --git a/addons/magazinerepack/CfgVehicles.hpp b/addons/magazinerepack/CfgVehicles.hpp index ecb732f8fd..acd1c76c3d 100644 --- a/addons/magazinerepack/CfgVehicles.hpp +++ b/addons/magazinerepack/CfgVehicles.hpp @@ -1,18 +1,17 @@ - class CfgVehicles { - class Man; - class CAManBase: Man { - class ACE_SelfActions { - class ACE_RepackMagazines { - displayName = "$STR_ACE_MagazineRepack_RepackMagazines"; - condition = QUOTE(true); - statement = QUOTE([_player] call FUNC(magazineRepack)); - showDisabled = 0; - priority = -2; - icon = PATHTOF(UI\repack_ca.paa); - hotkey = "R"; - enableInside = 1; - }; + class Man; + class CAManBase: Man { + class ACE_SelfActions { + class ACE_RepackMagazines { + displayName = "$STR_ACE_MagazineRepack_RepackMagazines"; + condition = QUOTE(true); + statement = QUOTE([_player] call FUNC(openSelectMagazineUI)); + showDisabled = 0; + priority = -2; + icon = QUOTE(PATHTOF(UI\repack_ca.paa)); + hotkey = "R"; + enableInside = 1; + }; + }; }; - }; }; diff --git a/addons/magazinerepack/README.md b/addons/magazinerepack/README.md index 49a3c9d531..28b7c3115a 100644 --- a/addons/magazinerepack/README.md +++ b/addons/magazinerepack/README.md @@ -3,10 +3,10 @@ ace_magazinerepack Adds the ability to consolidate multiple half-empty magazines. - ## Maintainers The people responsible for merging changes to this component or answering potential questions. - [commy2](https://github.com/commy2) - [esteldunedain](https://github.com/esteldunedain) +- [PabstMirror](https://github.com/PabstMirror) diff --git a/addons/magazinerepack/XEH_preInit.sqf b/addons/magazinerepack/XEH_preInit.sqf index 5caba1ffac..e2dfd721f3 100644 --- a/addons/magazinerepack/XEH_preInit.sqf +++ b/addons/magazinerepack/XEH_preInit.sqf @@ -2,8 +2,9 @@ ADDON = false; -PREP(magazineRepack); -PREP(magazineRepackCallback); +PREP(magazineRepackProgress); PREP(openSelectMagazineUI); +PREP(simulateRepackEvents); +PREP(startRepackingMagazine); ADDON = true; diff --git a/addons/magazinerepack/config.cpp b/addons/magazinerepack/config.cpp index 5f2c6edc7d..2df0d62bff 100644 --- a/addons/magazinerepack/config.cpp +++ b/addons/magazinerepack/config.cpp @@ -13,6 +13,7 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" +#include "CfgSounds.hpp" #include "CfgVehicles.hpp" class ACE_Parameters_Numeric { diff --git a/addons/magazinerepack/functions/fnc_magazineRepack.sqf b/addons/magazinerepack/functions/fnc_magazineRepack.sqf deleted file mode 100644 index 472b80e2bd..0000000000 --- a/addons/magazinerepack/functions/fnc_magazineRepack.sqf +++ /dev/null @@ -1,77 +0,0 @@ -// by commy2, esteldunedain -#include "script_component.hpp" - -private ["_unit", "_magazines", "_ammos", "_repackTime", "_magazine", "_ammo", "_count", "_index", "_i", "_j", "_ammoToTransfer", "_ammoAvailable", "_ammoNeeded"]; - -_unit = _this select 0; - -_magazines = []; -_ammos = []; -_repackTime = []; - -// get all mags and ammo count -{ - _magazine = _x select 0; - _ammo = _x select 1; - - _count = getNumber (configfile >> "CfgMagazines" >> _magazine >> "count"); - - if (_ammo != _count && {_count > 1}) then { // additional checks here - if !(_magazine in _magazines) then { - _index = count _magazines; - _magazines set [_index, _magazine]; - _ammos set [_index, [_ammo]]; - } else { - _index = _magazines find _magazine; - _ammos set [_index, (_ammos select _index) + [_ammo]]; - }; - }; -} forEach magazinesAmmoFull _unit; - -// Remove invalid magazines -{ - if (count _x < 2) then { - _magazines set [_forEachIndex, -1]; - _ammos set [_forEachIndex, [-1]]; - }; -} forEach _ammos; -_magazines = _magazines - [-1]; -_ammos = _ammos - [[-1]]; - -{ - // Calculate actual ammo to transfer during repack - _count = getNumber (configfile >> "CfgMagazines" >> (_magazines select _forEachIndex) >> "count"); - - // Sort Ascending - _list = _x call BIS_fnc_sortNum; - - ["MagazineRepack", _list] call EFUNC(common,log); - - _i = 0; - _j = count _x - 1; - _ammoToTransfer = 0; - _ammoAvailable = 0; - while {_i < _j} do { - _ammoNeeded = _count - (_list select _j); - _exit = false; - while {_i < _j && {!_exit}} do { - _ammoAvailable = _list select _i; - if (_ammoAvailable >= _ammoNeeded) then { - _list set [_i, _ammoAvailable - _ammoNeeded]; - _ammoToTransfer = _ammoToTransfer + _ammoNeeded; - _exit = true; - } else { - _ammoNeeded = _ammoNeeded - _ammoAvailable; - _ammoToTransfer = _ammoToTransfer + _ammoAvailable; - _i = _i + 1; - }; - }; - _j = _j - 1; - }; - - _repackTime set [_forEachIndex, _ammoToTransfer * GVAR(TimePerAmmo) + (count _x) * GVAR(TimePerMagazine)]; -} forEach _ammos; - -["MagazineRepack", [_magazines, _repackTime]] call EFUNC(common,log); - -[_unit, _magazines, _repackTime] call FUNC(openSelectMagazineUI); diff --git a/addons/magazinerepack/functions/fnc_magazineRepackCallback.sqf b/addons/magazinerepack/functions/fnc_magazineRepackCallback.sqf deleted file mode 100644 index f209806f9c..0000000000 --- a/addons/magazinerepack/functions/fnc_magazineRepackCallback.sqf +++ /dev/null @@ -1,106 +0,0 @@ -// by commy2 -#include "script_component.hpp" - -private ["_unit", "_magazine", "_ammo", "_ammoCount", "_fullMagazinesCount", "_restAmmo", "_isLoaded", "_weapon", "_reloadAction", "_text", "_picture"]; - -_unit = ACE_player; //_this select 0; -_magazine = _this select 1; - -// exit if the last magazine of this type was taken out of the backpack -if !(_magazine in magazines _unit) exitWith {}; - -// get current ammo count -_ammo = 0; -{ - if (_x select 0 == _magazine) then { - _ammo = _ammo + (_x select 1); - }; -} forEach magazinesAmmoFull _unit; - -// how many rounds fit in one mag -_ammoCount = getNumber (configFile >> "CfgMagazines" >> _magazine >> "count"); - -// calculate new vaules -_fullMagazinesCount = floor (_ammo / _ammoCount); -_restAmmo = _ammo - _fullMagazinesCount * _ammoCount; - -// remove old magazines -_unit removeMagazines _magazine; - -_isLoaded = false; -// reload rifle -if (_magazine in primaryWeaponMagazine _unit) then { - _weapon = primaryWeapon _unit; - - if (_fullMagazinesCount > 0) then { - _unit setAmmo [_weapon, _ammoCount]; - _fullMagazinesCount = _fullMagazinesCount - 1; - } else { - _unit setAmmo [_weapon, _restAmmo]; - _restAmmo = 0; - }; - - if (_weapon == currentWeapon _unit) then { - _reloadAction = getText (configFile >> "CfgWeapons" >> _weapon >> "reloadAction"); - _unit playActionNow _reloadAction; - }; - - _isLoaded = true; -}; - -// reload pistol -if (_magazine in handgunMagazine _unit) then { - _weapon = handgunWeapon _unit; - - if (_fullMagazinesCount > 0) then { - _unit setAmmo [_weapon, _ammoCount]; - _fullMagazinesCount = _fullMagazinesCount - 1; - } else { - _unit setAmmo [_weapon, _restAmmo]; - _restAmmo = 0; - }; - - if (_weapon == currentWeapon _unit) then { - _reloadAction = getText (configFile >> "CfgWeapons" >> _weapon >> "reloadAction"); - _unit playActionNow _reloadAction; - }; - - _isLoaded = true; -}; - -// reload rocket launcher (just in case ...) -if (_magazine in secondaryWeaponMagazine _unit) then { - _weapon = secondaryWeapon _unit; - - if (_fullMagazinesCount > 0) then { - _unit setAmmo [_weapon, _ammoCount]; - _fullMagazinesCount = _fullMagazinesCount - 1; - } else { - _unit setAmmo [_weapon, _restAmmo]; - _restAmmo = 0; - }; - - if (_weapon == currentWeapon _unit) then { - _reloadAction = getText (configFile >> "CfgWeapons" >> _weapon >> "reloadAction"); - _unit playActionNow _reloadAction; - }; - - _isLoaded = true; -}; - -// add new magazines -for "_a" from 1 to _fullMagazinesCount do { - _unit addMagazine _magazine; -}; - -if (_restAmmo > 0) then { - _unit addMagazine [_magazine, _restAmmo]; -}; - -// display text if successful -_text = format [localize "STR_ACE_MagazineRepack_RepackedMagazinesDetail", [_fullMagazinesCount, _fullMagazinesCount + 1] select _isLoaded, _restAmmo]; -_picture = getText (configFile >> "CfgMagazines" >> _magazine >> "picture"); - -_text = parseText format ["
      %2
      %3", _picture, localize "STR_ACE_MagazineRepack_RepackedMagazines", _text]; - -[_text] call EFUNC(common,displayTextStructured); diff --git a/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf b/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf new file mode 100644 index 0000000000..f965305eda --- /dev/null +++ b/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf @@ -0,0 +1,70 @@ +// by commy2, esteldunedain +#include "script_component.hpp" + +PARAMS_3(_args,_elapsedTime,_totalTime); +EXPLODE_3_PVT(_args,_magazineClassname,_lastAmmoCount,_simEvents); + +if ((count _simEvents) == 0) exitWith {ERROR("No Event"); false}; +EXPLODE_3_PVT((_simEvents select 0),_nextEventTime,_nextEventType,_nextEventMags); + + + +if (_nextEventTime > _elapsedTime) exitWith {true};//waiting on next event +systemChat format ["Event %1-%2-%3", _nextEventTime,_nextEventType,_nextEventMags]; + + +//Verify we aren't missing any ammo +_currentAmmoCount = []; +{ + EXPLODE_2_PVT(_x,_xClassname,_xCount); + if (_xClassname == _magazineClassname) then { + _currentAmmoCount pushBack _xCount; + }; +} forEach (magazinesAmmo ACE_player); //only inventory mags + +_addedMagazines = +_currentAmmoCount; +_missingAmmo = false; +{ + if (_x > 0) then { + _index = _addedMagazines find _x; + if (_index != -1) then { + _addedMagazines deleteAt _index; + } else { + _missingAmmo = true; + }; + }; +} forEach _lastAmmoCount; + +if (_missingAmmo) exitWith {false}; //something removed ammo that was being repacked +if ((count _addedMagazines) > 0) then { + TRACE_1("Added Magazine While Repacking",_addedMagazines); +}; + +_updateMagazinesOnPlayer = { + systemChat format ["Updating mags"]; + _newMagazineList = _addedMagazines + _nextEventMags; + ACE_player removeMagazines _magazineClassname; + { + if (_x > 0) then { + ACE_player addMagazine [_magazineClassname, _x]; + }; + } forEach _newMagazineList; + _args set [1, _nextEventMags]; +}; + + +if (_nextEventType == 0) then { + systemChat "reloading bullet"; + playSound QGVAR(soundMagazineFinished); + if (((count _simEvents) % 3) == 0) then { + call _updateMagazinesOnPlayer; + }; +} else { + systemChat "Moving to next mag"; + playSound QGVAR(soundRoundFinished); + call _updateMagazinesOnPlayer; +}; + +_simEvents deleteAt 0; //pop off the event + +true; diff --git a/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf b/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf index b1a31c266c..931a0149cf 100644 --- a/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf +++ b/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf @@ -1,40 +1,47 @@ -// by commy2 +// by commy2, esteldunedain #include "script_component.hpp" -private ["_unit", "_magazines", "_repackTime", "_listIDC", "_count", "_index", "_magazine", "_time", "_displayName", "_picture"]; +private ["_unit", "_magazines", "_ammos", "_repackTime", "_magazine", "_ammo", "_count", "_index", "_i", "_j", "_ammoToTransfer", "_ammoAvailable", "_ammoNeeded"]; -_unit = _this select 0; -_magazines = _this select 1; -_repackTime = _this select 2; +PARAMS_1(_unit); -_count = count _magazines; +_unitMagazines = []; +_unitMagCounts = []; + +// get all mags and ammo count +{ + _xClassname = _x select 0; + _xCount = _x select 1; + _fullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _xClassname >> "count"); + + if ((_xCount != _fullMagazineCount) && {_xCount > 1}) then {//for every partial magazine + _index = _unitMagazines find _xClassname; + if (_index == -1) then { + _unitMagazines pushBack _xClassname; + _unitMagCounts pushBack [_xCount]; + } else { + (_unitMagCounts select _index) pushBack _xCount; + }; + }; +} forEach magazinesAmmoFull _unit; _actions = [localize "STR_ACE_MagazineRepack_SelectMagazineMenu", localize "STR_ACE_MagazineRepack_SelectMagazine"] call EFUNC(interaction,prepareSelectMenu); -for "_index" from 0 to (_count - 1) do { - _magazine = _magazines select _index; - _time = _repackTime select _index; - _displayName = getText (configFile >> "CfgMagazines" >> _magazine >> "displayName"); - _picture = getText (configFile >> "CfgMagazines" >> _magazine >> "picture"); - _actions = [ - _actions, - _displayName, - _picture, - [str _unit, _magazine, _time] - ] call EFUNC(interaction,addSelectableItem); -}; + +systemChat format ["%1 - %2", _unitMagazines, _unitMagCounts]; + +{ + if ((count (_unitMagCounts select _forEachIndex)) >= 2) then {// Ignore invalid magazines types (need 2+ partial mags to do anything) + _displayName = getText (configFile >> "CfgMagazines" >> _x >> "displayName"); + _picture = getText (configFile >> "CfgMagazines" >> _x >> "picture"); + _actions = [_actions, _displayName, _picture, _x] call EFUNC(interaction,addSelectableItem); + }; +} forEach _unitMagazines; [ - _actions, - { - _data = _this; - call EFUNC(interaction,hideMenu); - if (isNil "_data") exitWith {}; - _data set [2, [_data select 2] call EFUNC(common,toNumber)]; - [(_data select 2), _data, {(_this select 0) call FUNC(magazineRepackCallback)}, {}, (localize "STR_ACE_MagazineRepack_RepackingMagazine")] call EFUNC(common,progressBar); - [ACE_player] call EFUNC(common,goKneeling); - }, - { - call EFUNC(interaction,hideMenu); - if !(profileNamespace getVariable [QGVAR(AutoCloseMenu), false]) then {"Default" call EFUNC(interaction,openMenuSelf)}; - } +_actions, +{ [ACE_player, _this] call FUNC(startRepackingMagazine); }, +{ + call EFUNC(interaction,hideMenu); + if !(profileNamespace getVariable [QGVAR(AutoCloseMenu), false]) then {"Default" call EFUNC(interaction,openMenuSelf)}; +} ] call EFUNC(interaction,openSelectMenu); diff --git a/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf b/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf new file mode 100644 index 0000000000..9df248bd6c --- /dev/null +++ b/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf @@ -0,0 +1,52 @@ +#include "script_component.hpp" + +private ["_fullMagazineCount", "_magazines", "_newMag", "_time", "_events", "_swapAmmo", "_ammoSwaped", "_lowIndex", "_highIndex", "_ammoToTransfer", "_ammoAvailable", "_ammoNeeded"]; + +PARAMS_2(_magazineClassname,_arrayOfAmmoCounts); + +// Calculate actual ammo to transfer during repack +_fullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _magazineClassname >> "count"); + +// Sort Ascending - Don't modify orginal +_arrayOfAmmoCounts = (+_arrayOfAmmoCounts) call BIS_fnc_sortNum; + +_newMag = { + _time = _time + GVAR(TimePerMagazine); + _events pushBack [_time, 1, +_arrayOfAmmoCounts]; +}; +_swapAmmo = { + for "_swapProgress" from 1 to _ammoSwaped do { + _time = _time + GVAR(TimePerAmmo); + _arrayOfAmmoCounts set [_lowIndex, ((_arrayOfAmmoCounts select _lowIndex) - 1)]; + _arrayOfAmmoCounts set [_highIndex, ((_arrayOfAmmoCounts select _highIndex) + 1)]; + _events pushBack [_time, 0, +_arrayOfAmmoCounts]; + }; +}; + +_lowIndex = 0; +_highIndex = (count _arrayOfAmmoCounts) - 1; +_ammoToTransfer = 0; +_ammoAvailable = 0; + +_time = 0; +_events = []; + +while {_lowIndex < _highIndex} do { + _ammoNeeded = _fullMagazineCount - (_arrayOfAmmoCounts select _highIndex); + _ammoAvailable = _arrayOfAmmoCounts select _lowIndex; + + if (_ammoAvailable == 0) then { + _lowIndex = _lowIndex + 1; + call _newMag; + } else { + if (_ammoNeeded == 0) then { + _highIndex = _highIndex - 1; + call _newMag; + } else { + _ammoSwaped = _ammoAvailable min _ammoNeeded; + call _swapAmmo; + }; + }; +}; + +_events diff --git a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf new file mode 100644 index 0000000000..8e5075e17e --- /dev/null +++ b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf @@ -0,0 +1,39 @@ +// by commy2, esteldunedain +#include "script_component.hpp" + +private ["_unit", "_magazines", "_ammos", "_repackTime", "_magazine", "_ammo", "_count", "_index", "_i", "_j", "_ammoToTransfer", "_ammoAvailable", "_ammoNeeded"]; + +PARAMS_2(_unit,_magazineClassname); +if (isNil "_magazineClassname" || {_magazineClassname == ""}) exitWith {ERROR("Bad Mag Classname");}; + +[_unit] call EFUNC(common,goKneeling); +call EFUNC(interaction,hideMenu); + +_startingAmmoCounts = []; +{ + EXPLODE_4_PVT(_x,_xClassname,_xCount,_xLoaded,_xType); + if (_xClassname == _magazineClassname) then { + if (_xLoaded) then { + //Try to Remove from weapon and add to inventory, otherwise ignore + if (_unit canAdd _magazineClassname) then { + switch (_xType) do { + case (1): {_unit removePrimaryWeaponItem _magazineClassname;}; + case (2): {_unit removeHandgunItem _magazineClassname;}; + case (4): {_unit removeSecondaryWeaponItem _magazineClassname;}; + default {ERROR("Loaded Location Invalid");}; + }; + _unit addMagazine [_magazineClassname, _xCount]; + _startingAmmoCounts pushBack _xCount; + }; + } else { + _startingAmmoCounts pushBack _xCount; + }; + }; +} forEach (magazinesAmmoFull _unit); + +if ((count _startingAmmoCounts) == 0) exitwith {ERROR("No Mags");}; + +_simEvents = [_magazineClassname, _startingAmmoCounts] call FUNC(simulateRepackEvents); +_totalTime = (_simEvents select ((count _simEvents) - 1) select 0); + +[_totalTime, [_magazineClassname, _startingAmmoCounts, _simEvents], {hint "done"}, {hint "fail"}, (localize "STR_ACE_MagazineRepack_RepackingMagazine"), {_this call FUNC(magazineRepackProgress)}] call EFUNC(common,progressBar); diff --git a/addons/magazinerepack/script_component.hpp b/addons/magazinerepack/script_component.hpp index 7b390f7126..15563f0fe8 100644 --- a/addons/magazinerepack/script_component.hpp +++ b/addons/magazinerepack/script_component.hpp @@ -1,3 +1,5 @@ +#define DEBUG_MODE_FULL + #define COMPONENT magazinerepack #include "\z\ace\addons\main\script_mod.hpp" diff --git a/addons/magazinerepack/sounds/magrepack_finished.wav b/addons/magazinerepack/sounds/magrepack_finished.wav new file mode 100644 index 0000000000000000000000000000000000000000..ab73615a558f3aa60f97dfa47d6bd0773e40f4b0 GIT binary patch literal 152166 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 literal 0 HcmV?d00001 diff --git a/addons/magazinerepack/sounds/magrepack_single.wav b/addons/magazinerepack/sounds/magrepack_single.wav new file mode 100644 index 0000000000000000000000000000000000000000..5d94e215fdf9894487afb000569c829a903484d8 GIT binary patch literal 95466 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 Date: Sun, 8 Feb 2015 18:29:49 -0300 Subject: [PATCH 098/211] ACE_Settings: do not load client settings on dedi servers or HC --- addons/common/XEH_postInit.sqf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index a645d48293..0767e42737 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -2,7 +2,9 @@ #include "script_component.hpp" // Load settings from profile -call FUNC(loadSettingsFromProfile); +if (hasInterface) then { + call FUNC(loadSettingsFromProfile); +}; // Listens for global "SettingChanged" events, to update the force status locally ["SettingChanged", { From 8a26fbc95716c50584bf8ab5dc6143f99949401c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Sun, 8 Feb 2015 18:36:00 -0300 Subject: [PATCH 099/211] ace_settings: remove debug stuff --- addons/common/functions/fnc_setSetting.sqf | 1 - addons/common/functions/fnc_setSettingFromConfig.sqf | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/common/functions/fnc_setSetting.sqf b/addons/common/functions/fnc_setSetting.sqf index 5b6f7945b5..ae4b1d6655 100644 --- a/addons/common/functions/fnc_setSetting.sqf +++ b/addons/common/functions/fnc_setSetting.sqf @@ -39,7 +39,6 @@ if (_settingData select 6) exitWith {}; _failed = false; if ((typeName _value) != (_settingData select 1)) then { _failed = true; - diag_log (typeName _value); if ((_settingData select 1) == "BOOL" and (typeName _value) == "SCALAR") then { // If value is not 0 or 1 consider it invalid and don't set anything if (_value == 0) then { diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf index 6054942485..4151f3e0e4 100644 --- a/addons/common/functions/fnc_setSettingFromConfig.sqf +++ b/addons/common/functions/fnc_setSettingFromConfig.sqf @@ -18,7 +18,7 @@ _fnc_getValueWithType = { EXPLODE_2_PVT(_this,_optionEntry,_typeName); _value = getNumber (_optionEntry >> "value"); - diag_log text format ["%1 %2: %3", configName _optionEntry, _typeName, _value]; + TRACE_3("_fnc_getValueWithType:", configName _optionEntry, _typeName, _value); if (_typeName == "BOOL") exitWith { _value > 0 }; From e770a74630ccde688abee32e8a47728a1b9b7bba Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 8 Feb 2015 16:36:58 -0600 Subject: [PATCH 100/211] Headers --- .../functions/fnc_magazineRepackProgress.sqf | 49 +++++++++++-------- .../functions/fnc_openSelectMagazineUI.sqf | 30 ++++++++---- .../functions/fnc_simulateRepackEvents.sqf | 43 ++++++++++------ .../functions/fnc_startRepackingMagazine.sqf | 34 ++++++++++--- 4 files changed, 106 insertions(+), 50 deletions(-) diff --git a/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf b/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf index f965305eda..3c829a8933 100644 --- a/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf +++ b/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf @@ -1,17 +1,31 @@ -// by commy2, esteldunedain +/* + * Author: PabstMirror (based on repack from commy2, esteldunedain, Ruthberg) + * Handles each frame durring the repack progressBar. + * On each event (repacked bullet or move to new mag) it plays a sound and syncs up the new magazines to the player. + * + * Arguments: + * 0: Arguments [classname,lastAmmoStatus,events] + * 1: Elapsed Time + * 2: Total Time Repacking Will Take + * + * Return Value: + * Keep going (on missing mags return false) + * + * Example: + * (args from progressBar) call ace_magazinerepack_fnc_magazineRepackProgress + * + * Public: No + */ #include "script_component.hpp" +private ["_currentAmmoCount", "_addedMagazines", "_missingAmmo", "_index", "_updateMagazinesOnPlayerFnc"]; + PARAMS_3(_args,_elapsedTime,_totalTime); EXPLODE_3_PVT(_args,_magazineClassname,_lastAmmoCount,_simEvents); - if ((count _simEvents) == 0) exitWith {ERROR("No Event"); false}; -EXPLODE_3_PVT((_simEvents select 0),_nextEventTime,_nextEventType,_nextEventMags); - - +EXPLODE_3_PVT((_simEvents select 0),_nextEventTime,_nextEventIsBullet,_nextEventMags); if (_nextEventTime > _elapsedTime) exitWith {true};//waiting on next event -systemChat format ["Event %1-%2-%3", _nextEventTime,_nextEventType,_nextEventMags]; - //Verify we aren't missing any ammo _currentAmmoCount = []; @@ -40,29 +54,24 @@ if ((count _addedMagazines) > 0) then { TRACE_1("Added Magazine While Repacking",_addedMagazines); }; -_updateMagazinesOnPlayer = { - systemChat format ["Updating mags"]; - _newMagazineList = _addedMagazines + _nextEventMags; - ACE_player removeMagazines _magazineClassname; +_updateMagazinesOnPlayerFnc = { + ACE_player removeMagazines _magazineClassname; //remove inventory magazines { if (_x > 0) then { ACE_player addMagazine [_magazineClassname, _x]; }; - } forEach _newMagazineList; - _args set [1, _nextEventMags]; + } forEach (_addedMagazines + _nextEventMags); + _args set [1, _nextEventMags]; //store the new magazine }; - -if (_nextEventType == 0) then { - systemChat "reloading bullet"; +if (_nextEventIsBullet) then { playSound QGVAR(soundMagazineFinished); - if (((count _simEvents) % 3) == 0) then { - call _updateMagazinesOnPlayer; + if ((((count _simEvents) % 3) == 0) || {(count _simEvents) == 1}) then { + call _updateMagazinesOnPlayerFnc; }; } else { - systemChat "Moving to next mag"; playSound QGVAR(soundRoundFinished); - call _updateMagazinesOnPlayer; + call _updateMagazinesOnPlayerFnc; }; _simEvents deleteAt 0; //pop off the event diff --git a/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf b/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf index 931a0149cf..9d99ad56b5 100644 --- a/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf +++ b/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf @@ -1,7 +1,22 @@ -// by commy2, esteldunedain +/* + * Author: PabstMirror (based on repack from commy2, esteldunedain, Ruthberg) + * Opens the selectMenu UI to chose which magazine to repack. + * Only shows classnames that have 2+ partial magazines + * + * Arguments: + * 0: Unit (player) + * + * Return Value: + * Nothing + * + * Example: + * [_player] call ace_magazinerepack_fnc_openSelectMagazineUI + * + * Public: No + */ #include "script_component.hpp" -private ["_unit", "_magazines", "_ammos", "_repackTime", "_magazine", "_ammo", "_count", "_index", "_i", "_j", "_ammoToTransfer", "_ammoAvailable", "_ammoNeeded"]; +private ["_unitMagazines", "_unitMagCounts", "_xFullMagazineCount", "_index", "_actions", "_displayName", "_picture"]; PARAMS_1(_unit); @@ -10,11 +25,10 @@ _unitMagCounts = []; // get all mags and ammo count { - _xClassname = _x select 0; - _xCount = _x select 1; - _fullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _xClassname >> "count"); + EXPLODE_2_PVT(_x,_xClassname,_xCount); + _xFullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _xClassname >> "count"); - if ((_xCount != _fullMagazineCount) && {_xCount > 1}) then {//for every partial magazine + if ((_xCount != _xFullMagazineCount) && {_xCount > 0}) then {//for every partial magazine _index = _unitMagazines find _xClassname; if (_index == -1) then { _unitMagazines pushBack _xClassname; @@ -27,8 +41,6 @@ _unitMagCounts = []; _actions = [localize "STR_ACE_MagazineRepack_SelectMagazineMenu", localize "STR_ACE_MagazineRepack_SelectMagazine"] call EFUNC(interaction,prepareSelectMenu); -systemChat format ["%1 - %2", _unitMagazines, _unitMagCounts]; - { if ((count (_unitMagCounts select _forEachIndex)) >= 2) then {// Ignore invalid magazines types (need 2+ partial mags to do anything) _displayName = getText (configFile >> "CfgMagazines" >> _x >> "displayName"); @@ -39,7 +51,7 @@ systemChat format ["%1 - %2", _unitMagazines, _unitMagCounts]; [ _actions, -{ [ACE_player, _this] call FUNC(startRepackingMagazine); }, +{ [_this] call FUNC(startRepackingMagazine); }, { call EFUNC(interaction,hideMenu); if !(profileNamespace getVariable [QGVAR(AutoCloseMenu), false]) then {"Default" call EFUNC(interaction,openMenuSelf)}; diff --git a/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf b/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf index 9df248bd6c..2b8b383a9a 100644 --- a/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf +++ b/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf @@ -1,25 +1,40 @@ +/* + * Author: PabstMirror + * Simulates repacking a set of magazines. + * Returns the timing and magazines counts at every stage. + * + * Arguments: + * 0: How many rounds in a full magazine + * 1: Array of rounds in magazines + * + * Return Value: + * Array in format [time, isBullet, array of ammo counts] + * + * Example: + * [5, [1,2,3,8]] call ace_magazinerepack_fnc_simulateRepackEvents = + * [[1.5,true,[0,2,3,9]],[3.5,false,[0,2,3,9]],[5,true,[0,1,3,10]],[7,false,[0,1,3,10]],[8.5,true,[0,0,4,10]],[10.5,false,[0,0,4,10]]] + * + * Public: No + */ #include "script_component.hpp" -private ["_fullMagazineCount", "_magazines", "_newMag", "_time", "_events", "_swapAmmo", "_ammoSwaped", "_lowIndex", "_highIndex", "_ammoToTransfer", "_ammoAvailable", "_ammoNeeded"]; +private ["_newMagFnc", "_time", "_events", "_swapAmmoFnc", "_ammoSwaped", "_lowIndex", "_highIndex", "_ammoToTransfer", "_ammoAvailable", "_ammoNeeded"]; -PARAMS_2(_magazineClassname,_arrayOfAmmoCounts); +PARAMS_2(_fullMagazineCount,_arrayOfAmmoCounts); -// Calculate actual ammo to transfer during repack -_fullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _magazineClassname >> "count"); - -// Sort Ascending - Don't modify orginal +// Sort Ascending - Don't modify original _arrayOfAmmoCounts = (+_arrayOfAmmoCounts) call BIS_fnc_sortNum; -_newMag = { +_newMagFnc = { _time = _time + GVAR(TimePerMagazine); - _events pushBack [_time, 1, +_arrayOfAmmoCounts]; + _events pushBack [_time, false, +_arrayOfAmmoCounts]; }; -_swapAmmo = { - for "_swapProgress" from 1 to _ammoSwaped do { +_swapAmmoFnc = { + for "_swapProgress" from 0 to (_ammoSwaped - 1) do { _time = _time + GVAR(TimePerAmmo); _arrayOfAmmoCounts set [_lowIndex, ((_arrayOfAmmoCounts select _lowIndex) - 1)]; _arrayOfAmmoCounts set [_highIndex, ((_arrayOfAmmoCounts select _highIndex) + 1)]; - _events pushBack [_time, 0, +_arrayOfAmmoCounts]; + _events pushBack [_time, true, +_arrayOfAmmoCounts]; }; }; @@ -37,14 +52,14 @@ while {_lowIndex < _highIndex} do { if (_ammoAvailable == 0) then { _lowIndex = _lowIndex + 1; - call _newMag; + call _newMagFnc; } else { if (_ammoNeeded == 0) then { _highIndex = _highIndex - 1; - call _newMag; + call _newMagFnc; } else { _ammoSwaped = _ammoAvailable min _ammoNeeded; - call _swapAmmo; + call _swapAmmoFnc; }; }; }; diff --git a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf index 8e5075e17e..c93a1bad59 100644 --- a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf +++ b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf @@ -1,18 +1,38 @@ -// by commy2, esteldunedain +/* + * Author: PabstMirror (based on repack from commy2, esteldunedain, Ruthberg) + * Starts repacking a specific magazine classname. + * Precalcs all the event timings and starts the progressBar. + * + * Arguments: + * 0: Magazine Classname + * + * Return Value: + * Nothing + * + * Example: + * ["30Rnd_65x39_caseless_mag"] call ace_magazinerepack_fnc_startRepackingMagazine + * + * Public: No + */ #include "script_component.hpp" -private ["_unit", "_magazines", "_ammos", "_repackTime", "_magazine", "_ammo", "_count", "_index", "_i", "_j", "_ammoToTransfer", "_ammoAvailable", "_ammoNeeded"]; +private ["_unit", "_fullMagazineCount", "_startingAmmoCounts", "_simEvents", "_totalTime"]; -PARAMS_2(_unit,_magazineClassname); +PARAMS_1(_magazineClassname); if (isNil "_magazineClassname" || {_magazineClassname == ""}) exitWith {ERROR("Bad Mag Classname");}; -[_unit] call EFUNC(common,goKneeling); +_unit = ACE_player; + +[ACE_player] call EFUNC(common,goKneeling); call EFUNC(interaction,hideMenu); +// Calculate actual ammo to transfer during repack +_fullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _magazineClassname >> "count"); + _startingAmmoCounts = []; { EXPLODE_4_PVT(_x,_xClassname,_xCount,_xLoaded,_xType); - if (_xClassname == _magazineClassname) then { + if ((_xClassname == _magazineClassname) && {(_xCount != _fullMagazineCount) && {_xCount > 0}}) then { if (_xLoaded) then { //Try to Remove from weapon and add to inventory, otherwise ignore if (_unit canAdd _magazineClassname) then { @@ -31,9 +51,9 @@ _startingAmmoCounts = []; }; } forEach (magazinesAmmoFull _unit); -if ((count _startingAmmoCounts) == 0) exitwith {ERROR("No Mags");}; +if ((count _startingAmmoCounts) < 2) exitwith {ERROR("Not Enough Mags to Repack");}; -_simEvents = [_magazineClassname, _startingAmmoCounts] call FUNC(simulateRepackEvents); +_simEvents = [_fullMagazineCount, _startingAmmoCounts] call FUNC(simulateRepackEvents); _totalTime = (_simEvents select ((count _simEvents) - 1) select 0); [_totalTime, [_magazineClassname, _startingAmmoCounts, _simEvents], {hint "done"}, {hint "fail"}, (localize "STR_ACE_MagazineRepack_RepackingMagazine"), {_this call FUNC(magazineRepackProgress)}] call EFUNC(common,progressBar); From 80778cf8dbd087cad269ff8e588dd201f8a6ba95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Sun, 8 Feb 2015 19:54:12 -0300 Subject: [PATCH 101/211] overheating: updated headers --- .../functions/fnc_checkTemperature.sqf | 11 +++++++---- addons/overheating/functions/fnc_clearJam.sqf | 15 ++++++++------- addons/overheating/functions/fnc_cooldown.sqf | 11 ++++++----- .../functions/fnc_displayTemperature.sqf | 6 +++--- addons/overheating/functions/fnc_jamWeapon.sqf | 7 ++++--- addons/overheating/functions/fnc_overheat.sqf | 16 +++++++++------- addons/overheating/functions/fnc_swapBarrel.sqf | 7 ++++--- .../functions/fnc_swapBarrelCallback.sqf | 7 ++++--- 8 files changed, 45 insertions(+), 35 deletions(-) diff --git a/addons/overheating/functions/fnc_checkTemperature.sqf b/addons/overheating/functions/fnc_checkTemperature.sqf index 92b6d1727e..02747b0129 100644 --- a/addons/overheating/functions/fnc_checkTemperature.sqf +++ b/addons/overheating/functions/fnc_checkTemperature.sqf @@ -1,15 +1,18 @@ /* * Author: Commy2 and CAA-Picard - * * Make the player check the temperature of his weapon * * Arguments: - * 0: _player - * 1: _weapon + * 0: Player + * 1: Weapon * - * Return Values: + * Return Value: * None * + * Example: + * None + * + * Public: No */ #include "\z\ace\addons\overheating\script_component.hpp" diff --git a/addons/overheating/functions/fnc_clearJam.sqf b/addons/overheating/functions/fnc_clearJam.sqf index 2340c6c890..76941d75ac 100644 --- a/addons/overheating/functions/fnc_clearJam.sqf +++ b/addons/overheating/functions/fnc_clearJam.sqf @@ -1,15 +1,16 @@ /* * Author: Commy2 + * Make the unit clear the jam from a weapon * - * Clears the jam from a weapon + * Arguments: + * 0: Player + * 1: Weapon + * 2: Skip anim? * - * Argument: - * 0: Last temperature (number) - * 1: Barrel mass (number) - * 2: Time (number) + * Return Value: + * None * - * Return value: - * New temperature (number) + * Public: No */ #include "\z\ace\addons\overheating\script_component.hpp" diff --git a/addons/overheating/functions/fnc_cooldown.sqf b/addons/overheating/functions/fnc_cooldown.sqf index 13d53c7327..718c77474f 100644 --- a/addons/overheating/functions/fnc_cooldown.sqf +++ b/addons/overheating/functions/fnc_cooldown.sqf @@ -1,15 +1,16 @@ /* * Author: CAA-Picard - * * Calculate cooling down of the weapon. * * Argument: - * 0: Last temperature (number) - * 1: Barrel mass (number) - * 2: Time (number) + * 0: Last temperature + * 1: Barrel mass + * 2: Time * * Return value: - * New temperature (number) + * New temperature + * + * Public: No */ #include "\z\ace\addons\overheating\script_component.hpp" diff --git a/addons/overheating/functions/fnc_displayTemperature.sqf b/addons/overheating/functions/fnc_displayTemperature.sqf index 130eec5f39..9af817f8fd 100644 --- a/addons/overheating/functions/fnc_displayTemperature.sqf +++ b/addons/overheating/functions/fnc_displayTemperature.sqf @@ -1,15 +1,15 @@ /* * Author: Commy2 and CAA-Picard - * * Displays the weapon temperature * * Arguments: - * 0: _player - * 1: _weapon + * 0: Player + * 1: Weapon * * Return Values: * None * + * Public: No */ #include "\z\ace\addons\overheating\script_component.hpp" diff --git a/addons/overheating/functions/fnc_jamWeapon.sqf b/addons/overheating/functions/fnc_jamWeapon.sqf index beb3a1925b..f11b72688c 100644 --- a/addons/overheating/functions/fnc_jamWeapon.sqf +++ b/addons/overheating/functions/fnc_jamWeapon.sqf @@ -1,14 +1,15 @@ /* * Author: Commy2, based on KK_fnc_playerWeaponMulfunction from KillzoneKid - * * Jam the weapon * * Argument: - * 0: unit - * 1: weapon + * 0: Unit + * 1: Weapon * * Return value: * None + * + * Public: No */ #include "\z\ace\addons\overheating\script_component.hpp" diff --git a/addons/overheating/functions/fnc_overheat.sqf b/addons/overheating/functions/fnc_overheat.sqf index 05a286cfa2..9f26d51869 100644 --- a/addons/overheating/functions/fnc_overheat.sqf +++ b/addons/overheating/functions/fnc_overheat.sqf @@ -1,17 +1,19 @@ /* * Author: Commy2 and CAA-Picard - * - * Heat up the weapon + * Handle weapon fire, heat up the weapon * * Argument: - * 0: unit - * 1: weapon - * 2: ammo - * 3: projectile - * 4: velocity + * 0: Unit + * 1: Weapon + * 3: Muzzle + * 4: Ammo + * 5: Magazine + * 6: Projectile * * Return value: * None + * + * Public: No */ #include "\z\ace\addons\overheating\script_component.hpp" diff --git a/addons/overheating/functions/fnc_swapBarrel.sqf b/addons/overheating/functions/fnc_swapBarrel.sqf index 6bacbe5049..2384fb470e 100644 --- a/addons/overheating/functions/fnc_swapBarrel.sqf +++ b/addons/overheating/functions/fnc_swapBarrel.sqf @@ -1,14 +1,15 @@ /* * Author: Commy2 - * * Make a unit start swapping it's barrel * * Argument: - * 0: unit - * 1: weapon + * 0: Unit + * 1: Weapon * * Return value: * None + * + * Public: No */ #include "\z\ace\addons\overheating\script_component.hpp" diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 88201dc9f4..e626bf2aea 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -1,14 +1,15 @@ /* * Author: Commy2 - * * Swap barrel callback * * Argument: - * 0: unit - * 1: weapon + * 0: Unit + * 1: Weapon * * Return value: * None + * + * Public: No */ #include "\z\ace\addons\overheating\script_component.hpp" From a2b1cf125996b97a3bb4b2f678ca61860143f090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Sun, 8 Feb 2015 19:58:41 -0300 Subject: [PATCH 102/211] g-forces: updated headers --- .../gforces/functions/fnc_pfhUpdateGForces.sqf | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf index f45d629760..839110fd2b 100644 --- a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf +++ b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf @@ -1,5 +1,17 @@ -// by KoffeinFlummi and CAA-Picard -#include "script_component.hpp" +/* + * Author: KoffeinFlummi and CAA-Picard + * Calculates average g-forces and triggers g-effects + * + * Argument: + * 0: Arguments + * 1: pfh_id + * + * Return value: + * None + * + * Public: No + */ + #include "script_component.hpp" EXPLODE_2_PVT(_this,_params,_pfhId); From da9fc39103fd2c7e172984bd2fde1b155a7107a2 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 8 Feb 2015 17:35:21 -0600 Subject: [PATCH 103/211] Headers and Finish Notice --- addons/magazinerepack/XEH_preInit.sqf | 1 + .../functions/fnc_magazineRepackFinish.sqf | 52 +++++++++++++++++++ .../functions/fnc_startRepackingMagazine.sqf | 9 +++- addons/magazinerepack/stringtable.xml | 11 +++- 4 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf diff --git a/addons/magazinerepack/XEH_preInit.sqf b/addons/magazinerepack/XEH_preInit.sqf index e2dfd721f3..7cd7107f54 100644 --- a/addons/magazinerepack/XEH_preInit.sqf +++ b/addons/magazinerepack/XEH_preInit.sqf @@ -2,6 +2,7 @@ ADDON = false; +PREP(magazineRepackFinish); PREP(magazineRepackProgress); PREP(openSelectMagazineUI); PREP(simulateRepackEvents); diff --git a/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf new file mode 100644 index 0000000000..50817bcfe7 --- /dev/null +++ b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf @@ -0,0 +1,52 @@ +/* + * Author: PabstMirror + * Simulates repacking a set of magazines. + * Returns the timing and magazines counts at every stage. + * + * Arguments: + * 0: Arguments [classname,lastAmmoStatus,events] + * 1: Elapsed Time + * 2: Total Time Repacking Will Take + * 3: Error Code + * + * Return Value: + * Nothing + * + * Example: + * (args from progressBar) call ace_magazinerepack_fnc_magazineRepackFinish + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_4(_args,_elapsedTime,_totalTime,_errorCode); +EXPLODE_2_PVT(_args,_magazineClassname,_lastAmmoCount); +_fullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _magazineClassname >> "count"); + +_structuredOutputText = + +if (_errorCode == 0) then { + format ["%1
      ", (localize "STR_ACE_MagazineRepack_RepackComplete")]; +} else { + format ["%1
      ", (localize "STR_ACE_MagazineRepack_RepackInterrupted")]; +}; + +_picture = getText (configFile >> "CfgMagazines" >> _magazineClassname >> "picture"); +_structuredOutputText = _structuredOutputText + format ["
      ", _picture]; + +_fullMags = 0; +_partialMags = 0; +{ + EXPLODE_2_PVT(_x,_xClassname,_xCount); + if ((_xClassname == _magazineClassname) && {_xCount > 0}) then { + if (_xCount == _fullMagazineCount) then { + _fullMags = _fullMags + 1; + } else { + _partialMags = _partialMags + 1; + }; + }; +} forEach (magazinesAmmoFull ACE_player); + +_structuredOutputText = _structuredOutputText + format [("" + (localize "STR_ACE_MagazineRepack_RepackedMagazinesCount") + ""), _fullMags, _partialMags]; + +[parseText _structuredOutputText] call EFUNC(common,displayTextStructured); diff --git a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf index c93a1bad59..d83cc649b0 100644 --- a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf +++ b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf @@ -56,4 +56,11 @@ if ((count _startingAmmoCounts) < 2) exitwith {ERROR("Not Enough Mags to Repack" _simEvents = [_fullMagazineCount, _startingAmmoCounts] call FUNC(simulateRepackEvents); _totalTime = (_simEvents select ((count _simEvents) - 1) select 0); -[_totalTime, [_magazineClassname, _startingAmmoCounts, _simEvents], {hint "done"}, {hint "fail"}, (localize "STR_ACE_MagazineRepack_RepackingMagazine"), {_this call FUNC(magazineRepackProgress)}] call EFUNC(common,progressBar); +[ +_totalTime, +[_magazineClassname, _startingAmmoCounts, _simEvents], +{_this call FUNC(magazineRepackFinish)}, +{_this call FUNC(magazineRepackFinish)}, +(localize "STR_ACE_MagazineRepack_RepackingMagazine"), +{_this call FUNC(magazineRepackProgress)} +] call EFUNC(common,progressBar); diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml index 5ea62e3a18..2e3d9500e0 100644 --- a/addons/magazinerepack/stringtable.xml +++ b/addons/magazinerepack/stringtable.xml @@ -1,5 +1,5 @@  - + @@ -74,5 +74,14 @@ %1 tejles tár és %2 extra lőszer. %1 полных магазина(ов) и %2 патрона(ов) + + Repacking Finished + + + Repacking Interrupted + + + %1 Full and %2 Partial + \ No newline at end of file From 24bd515814a35aa8d8d47e2d5d979b8858c51f53 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 8 Feb 2015 22:44:23 -0600 Subject: [PATCH 104/211] Commenting and some stringtables --- addons/magazinerepack/CfgSounds.hpp | 2 +- addons/magazinerepack/config.cpp | 2 +- .../magazinerepack/functions/fnc_magazineRepackFinish.sqf | 2 +- .../functions/fnc_magazineRepackProgress.sqf | 7 +++---- .../magazinerepack/functions/fnc_openSelectMagazineUI.sqf | 4 ++-- .../functions/fnc_startRepackingMagazine.sqf | 3 ++- addons/magazinerepack/script_component.hpp | 2 -- addons/magazinerepack/stringtable.xml | 6 ++++++ 8 files changed, 16 insertions(+), 12 deletions(-) diff --git a/addons/magazinerepack/CfgSounds.hpp b/addons/magazinerepack/CfgSounds.hpp index bc1d0fe0ee..15104d905d 100644 --- a/addons/magazinerepack/CfgSounds.hpp +++ b/addons/magazinerepack/CfgSounds.hpp @@ -12,4 +12,4 @@ class CfgSounds sound[] = {QUOTE(PATHTOF(sounds\magrepack_single.wav)),1,1}; titles[] = {}; }; -}; \ No newline at end of file +}; diff --git a/addons/magazinerepack/config.cpp b/addons/magazinerepack/config.cpp index 2df0d62bff..3a95c10643 100644 --- a/addons/magazinerepack/config.cpp +++ b/addons/magazinerepack/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common","ace_interaction"}; + requiredAddons[] = {"ace_interaction"}; author[] = {"commy2","CAA-Picard"}; authorUrl = "https://github.com/commy2/"; VERSION_CONFIG; diff --git a/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf index 50817bcfe7..038b7fb151 100644 --- a/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf +++ b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf @@ -1,5 +1,5 @@ /* - * Author: PabstMirror + * Author: PabstMirror (based on repack from commy2, esteldunedain, Ruthberg) * Simulates repacking a set of magazines. * Returns the timing and magazines counts at every stage. * diff --git a/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf b/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf index 3c829a8933..1d3b5ec6cf 100644 --- a/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf +++ b/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf @@ -36,6 +36,7 @@ _currentAmmoCount = []; }; } forEach (magazinesAmmo ACE_player); //only inventory mags +//Go through mags we currently have and check off the ones we should have _addedMagazines = +_currentAmmoCount; _missingAmmo = false; { @@ -49,10 +50,7 @@ _missingAmmo = false; }; } forEach _lastAmmoCount; -if (_missingAmmo) exitWith {false}; //something removed ammo that was being repacked -if ((count _addedMagazines) > 0) then { - TRACE_1("Added Magazine While Repacking",_addedMagazines); -}; +if (_missingAmmo) exitWith {false}; //something removed ammo that was being repacked (could be other players or scripts) _updateMagazinesOnPlayerFnc = { ACE_player removeMagazines _magazineClassname; //remove inventory magazines @@ -67,6 +65,7 @@ _updateMagazinesOnPlayerFnc = { if (_nextEventIsBullet) then { playSound QGVAR(soundMagazineFinished); if ((((count _simEvents) % 3) == 0) || {(count _simEvents) == 1}) then { + //For performance - only update mags every 3 bullets (or if it's the last event) call _updateMagazinesOnPlayerFnc; }; } else { diff --git a/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf b/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf index 9d99ad56b5..e96e84e9a1 100644 --- a/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf +++ b/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf @@ -37,7 +37,7 @@ _unitMagCounts = []; (_unitMagCounts select _index) pushBack _xCount; }; }; -} forEach magazinesAmmoFull _unit; +} forEach (magazinesAmmoFull _unit); _actions = [localize "STR_ACE_MagazineRepack_SelectMagazineMenu", localize "STR_ACE_MagazineRepack_SelectMagazine"] call EFUNC(interaction,prepareSelectMenu); @@ -53,7 +53,7 @@ _actions = [localize "STR_ACE_MagazineRepack_SelectMagazineMenu", localize "STR_ _actions, { [_this] call FUNC(startRepackingMagazine); }, { - call EFUNC(interaction,hideMenu); + call EFUNC(interaction,hideMenu); //ToDo: Self Interaction Integration if !(profileNamespace getVariable [QGVAR(AutoCloseMenu), false]) then {"Default" call EFUNC(interaction,openMenuSelf)}; } ] call EFUNC(interaction,openSelectMenu); diff --git a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf index d83cc649b0..06c0f0a137 100644 --- a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf +++ b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf @@ -1,6 +1,7 @@ /* * Author: PabstMirror (based on repack from commy2, esteldunedain, Ruthberg) * Starts repacking a specific magazine classname. + * If room in inventory, unload magazine from weapon to be repacked. * Precalcs all the event timings and starts the progressBar. * * Arguments: @@ -24,7 +25,7 @@ if (isNil "_magazineClassname" || {_magazineClassname == ""}) exitWith {ERROR("B _unit = ACE_player; [ACE_player] call EFUNC(common,goKneeling); -call EFUNC(interaction,hideMenu); +call EFUNC(interaction,hideMenu);//ToDo: Self Interaction Integration // Calculate actual ammo to transfer during repack _fullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _magazineClassname >> "count"); diff --git a/addons/magazinerepack/script_component.hpp b/addons/magazinerepack/script_component.hpp index 15563f0fe8..7b390f7126 100644 --- a/addons/magazinerepack/script_component.hpp +++ b/addons/magazinerepack/script_component.hpp @@ -1,5 +1,3 @@ -#define DEBUG_MODE_FULL - #define COMPONENT magazinerepack #include "\z\ace\addons\main\script_mod.hpp" diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml index 2e3d9500e0..937cfcbf9a 100644 --- a/addons/magazinerepack/stringtable.xml +++ b/addons/magazinerepack/stringtable.xml @@ -76,12 +76,18 @@ Repacking Finished + Wiederverpacken Fertig + Reembalaje Finalizado Repacking Interrupted + Umpacken Unterbrochen + Reempaque Interrupted %1 Full and %2 Partial + %1 Vollständigen und %2 Teilweisen + %1 Total y %2 Parcial \ No newline at end of file From f163e307c80f8f3866e9ffa3ecab7aef88dba580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Mon, 9 Feb 2015 22:59:43 -0300 Subject: [PATCH 105/211] ace_common: throttledPublicVariable function --- addons/common/XEH_preInit.sqf | 1 + .../functions/fnc_throttledPublicVariable.sqf | 49 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 addons/common/functions/fnc_throttledPublicVariable.sqf diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 94a0a490bf..9b8964df1b 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -127,6 +127,7 @@ PREP(toBin); PREP(toBitmask); PREP(toHex); PREP(toNumber); +PREP(throttledPublicVariable); PREP(unmuteUnit); PREP(waitAndExecute); diff --git a/addons/common/functions/fnc_throttledPublicVariable.sqf b/addons/common/functions/fnc_throttledPublicVariable.sqf new file mode 100644 index 0000000000..6953d39fb5 --- /dev/null +++ b/addons/common/functions/fnc_throttledPublicVariable.sqf @@ -0,0 +1,49 @@ +/* + * Author: CAA-Picard + * Schedules the publishment of an object variable to reduce network overhead + * + * Arguments: + * 0: Unit . + * 1: Variable name + * 2: Maximum delay + * + * Return Value: + * None + * + * Example: + * None + * + * Public: No + */ +#include "script_component.hpp" + +EXPLODE_3_PVT(_this,_unit,_varName,_maxDelay); + +// Create the publish scheduler PFH the first time +if (isNil QGVAR(publishSchedId)) then { + + GVAR(publishVarNames) = []; + GVAR(publishNextTime) = 1e7; + + GVAR(publishSchedId) = [{ + + if (diag_tickTime > GVAR(publishNextTime)) then { + { + EXPLODE_2_PVT(_x,_unit,_varName); + _unit setVariable [_varName, (_unit getVariable _varName), true]; + } forEach GVAR(publishVarNames); + + GVAR(publishVarNames) = []; + GVAR(publishNextTime) = 1e7; + }; + }, 0, []] call cba_fnc_addPerFrameHandler; +}; + +// If the variable is not on the list +if (GVAR(publishVarNames) find [_unit,_varName] == -1) exitWith { + GVAR(publishVarNames) pushBack [_unit,_varName]; + GVAR(publishNextTime) = GVAR(publishNextTime) min (diag_tickTime + _maxDelay); +}; + +// If the variable is on the list +GVAR(publishNextTime) = GVAR(publishNextTime) min (diag_tickTime + _maxDelay); \ No newline at end of file From eadcd8236649bfc4e73fdde5535a5ac102144ad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Mon, 9 Feb 2015 23:00:40 -0300 Subject: [PATCH 106/211] scopes: fixed errors, throttled sync of scope adjustment to all client and local calculation of deflections. --- addons/scopes/CfgEventHandlers.hpp | 2 +- addons/scopes/RscTitles.hpp | 2 +- addons/scopes/XEH_postInit.sqf | 2 ++ addons/scopes/XEH_preInit.sqf | 1 + addons/scopes/functions/fnc_adjustScope.sqf | 22 +++++++--------- .../scopes/functions/fnc_canAdjustScope.sqf | 7 ++--- addons/scopes/functions/fnc_firedEH.sqf | 14 ++++++---- .../scopes/functions/fnc_inventoryCheck.sqf | 9 ++++--- addons/scopes/functions/fnc_showZeroing.sqf | 26 +++++++++++++++++++ addons/scopes/scripts/script_component.hpp | 1 - addons/scopes/scripts/zeroingOnLoad.sqf | 20 -------------- 11 files changed, 59 insertions(+), 47 deletions(-) create mode 100644 addons/scopes/functions/fnc_showZeroing.sqf delete mode 100644 addons/scopes/scripts/script_component.hpp delete mode 100644 addons/scopes/scripts/zeroingOnLoad.sqf diff --git a/addons/scopes/CfgEventHandlers.hpp b/addons/scopes/CfgEventHandlers.hpp index 204f2e267e..286a08598d 100644 --- a/addons/scopes/CfgEventHandlers.hpp +++ b/addons/scopes/CfgEventHandlers.hpp @@ -13,7 +13,7 @@ class Extended_PostInit_EventHandlers { class Extended_Fired_EventHandlers { class CAManBase { class ADDON { - clientFired = QUOTE(if (_this select 0 == ACE_player) then { _this call FUNC(firedEH);};); + fired = QUOTE(_this call FUNC(firedEH);); }; }; }; diff --git a/addons/scopes/RscTitles.hpp b/addons/scopes/RscTitles.hpp index 79de7e8214..9da0a04a14 100644 --- a/addons/scopes/RscTitles.hpp +++ b/addons/scopes/RscTitles.hpp @@ -4,7 +4,7 @@ class RscTitles { movingEnable = 0; enableSimulation = 1; enableDisplay = 1; - onLoad = QUOTE(_this spawn compile preprocessFileLineNumbers QUOTE(QUOTE(PATHTOF(scripts\zeroingOnLoad.sqf))); uiNamespace setVariable [ARR_2('ACE_Scopes_Debug', _this)];); + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ZeroingDisplay)),_this select 0)];); duration = 1e+011; fadein = 0; fadeout = 0; diff --git a/addons/scopes/XEH_postInit.sqf b/addons/scopes/XEH_postInit.sqf index b7fd4bfc3a..30cc7d9384 100644 --- a/addons/scopes/XEH_postInit.sqf +++ b/addons/scopes/XEH_postInit.sqf @@ -15,6 +15,8 @@ if !(hasInterface) exitWith {}; while {True} do { waitUntil {[ACE_player, 0,0] call FUNC(canAdjustScope)}; _layer cutRsc [QGVAR(Zeroing), "PLAIN", 0, false]; + call FUNC(showZeroing); + sleep 3; _layer cutFadeOut 2; diff --git a/addons/scopes/XEH_preInit.sqf b/addons/scopes/XEH_preInit.sqf index 9dc7450c94..b0c4a50c1c 100644 --- a/addons/scopes/XEH_preInit.sqf +++ b/addons/scopes/XEH_preInit.sqf @@ -8,6 +8,7 @@ PREP(firedEH); PREP(getOptics); PREP(hideZeroing); PREP(inventoryCheck); +PREP(showZeroing); GVAR(fadeScript) = scriptNull; diff --git a/addons/scopes/functions/fnc_adjustScope.sqf b/addons/scopes/functions/fnc_adjustScope.sqf index 7db640590a..b50da5322b 100644 --- a/addons/scopes/functions/fnc_adjustScope.sqf +++ b/addons/scopes/functions/fnc_adjustScope.sqf @@ -12,7 +12,7 @@ */ #include "script_component.hpp" - + private ["_unit", "_weapons", "_zeroing", "_pitchbankyaw", "_pitch", "_bank", "_yaw", "_hint"]; _unit = _this select 0; @@ -23,15 +23,18 @@ _weapons = [ handgunWeapon _unit ]; -if (isNil QGVAR(Adjustment)) then { - GVAR(Adjustment) = [[0,0], [0,0], [0,0]]; +_adjustment = _unit getVariable QGVAR(Adjustment); +if (isNil "_adjustment") then { + _adjustment = [[0,0], [0,0], [0,0]]; }; -_zeroing = GVAR(Adjustment) select (_weapons find (currentWeapon _unit)); +_zeroing = _adjustment select (_weapons find (currentWeapon _unit)); _zeroing set [0, (round (((_zeroing select 0) + (_this select 1)) * 10)) / 10]; _zeroing set [1, (round (((_zeroing select 1) + (_this select 2)) * 10)) / 10]; -GVAR(Adjustment) set [_weapons find (currentWeapon _unit), _zeroing]; +_adjustment set [_weapons find (currentWeapon _unit), _zeroing]; +_unit setVariable [QGVAR(Adjustment), _adjustment]; +[_unit, QGVAR(Adjustment), 0.5] call EFUNC(common,throttledPublicVariable); playSound (["ACE_Scopes_Click_1", "ACE_Scopes_Click_2", "ACE_Scopes_Click_3"] select floor random 3); @@ -46,14 +49,6 @@ if (cameraView == "GUNNER") then { [_unit, _pitch, _bank, _yaw] call EFUNC(common,setPitchBankYaw) }; -_display = uiNamespace getVariable [QGVAR(ZeroingDisplay), displayNull]; -if !(isNull _display) then { - _vertical = _display displayCtrl 925002; - _horizontal = _display displayCtrl 925003; - _vertical ctrlSetText (str (_zeroing select 1)); - _horizontal ctrlSetText (str (_zeroing select 0)); -}; - if (!isNull (missionNamespace getVariable [QGVAR(fadeScript), scriptNull])) then { terminate GVAR(fadeScript); }; @@ -61,6 +56,7 @@ if (cameraView != "GUNNER") then { GVAR(fadeScript) = 0 spawn { _layer = [QGVAR(Zeroing)] call BIS_fnc_rscLayer; _layer cutRsc [QGVAR(Zeroing), "PLAIN", 0, false]; + call FUNC(showZeroing); sleep 3; _layer cutFadeOut 2; }; diff --git a/addons/scopes/functions/fnc_canAdjustScope.sqf b/addons/scopes/functions/fnc_canAdjustScope.sqf index 8aea2ff9e4..3bf4a74e21 100644 --- a/addons/scopes/functions/fnc_canAdjustScope.sqf +++ b/addons/scopes/functions/fnc_canAdjustScope.sqf @@ -25,15 +25,16 @@ _weapons = [ if !(currentWeapon _unit in _weapons) exitWith {false}; -if (isNil QGVAR(Adjustment)) then { - GVAR(Adjustment) = [[0,0], [0,0], [0,0]]; +_adjustment = _unit getVariable QGVAR(Adjustment); +if (isNil "_adjustment") then { + _adjustment = [[0,0], [0,0], [0,0]]; }; if (isNil QGVAR(Optics)) then { GVAR(Optics) = ["", "", ""]; }; -_zeroing = GVAR(Adjustment) select (_weapons find (currentWeapon _unit)); +_zeroing = _adjustment select (_weapons find (currentWeapon _unit)); _zeroX = (_zeroing select 0) + (_this select 1); _zeroY = (_zeroing select 1) + (_this select 2); diff --git a/addons/scopes/functions/fnc_firedEH.sqf b/addons/scopes/functions/fnc_firedEH.sqf index 4414f617d6..097a81fca6 100644 --- a/addons/scopes/functions/fnc_firedEH.sqf +++ b/addons/scopes/functions/fnc_firedEH.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi + * Author: KoffeinFlummi and CAA-Picard * * Adjusts the flight path of the bullet according to the zeroing * @@ -12,13 +12,17 @@ #include "script_component.hpp" -private ["_unit", "_weaponType", "_ammoType", "_magazineType", "_round", "_weapons", "_zeroing", "_direction", "_azimuth", "_altitude", "_velocity"]; +private ["_unit", "_weaponType", "_round", "_weapons", "_zeroing", "_adjustment"]; _unit = _this select 0; + +_adjustment = _unit getVariable QGVAR(Adjustment); +if (isNil "_adjustment") exitWith {}; + +if !([_unit] call EFUNC(common,isPlayer)) exitWith {}; + _weaponType = _this select 1; -_ammoType = _this select 4; _round = _this select 5; -_magazineType = _this select 6; _weapons = [ primaryWeapon _unit, @@ -27,7 +31,7 @@ _weapons = [ ]; if !(_weaponType in _weapons) exitWith {}; -_zeroing = GVAR(Adjustment) select (_weapons find _weaponType); +_zeroing = _adjustment select (_weapons find _weaponType); // convert zeroing from mils to degrees _zeroing = [_zeroing, {_this * 0.05625}] call EFUNC(common,map); diff --git a/addons/scopes/functions/fnc_inventoryCheck.sqf b/addons/scopes/functions/fnc_inventoryCheck.sqf index 23971098d6..1e1efa2c14 100644 --- a/addons/scopes/functions/fnc_inventoryCheck.sqf +++ b/addons/scopes/functions/fnc_inventoryCheck.sqf @@ -10,13 +10,16 @@ if (isNil QGVAR(Optics)) then { GVAR(Optics) = ["", "", ""]; }; -if (isNil QGVAR(Adjustment)) then { - GVAR(Adjustment) = [[0,0], [0,0], [0,0]]; +_adjustment = ACE_player getVariable QGVAR(Adjustment); +if (isNil "_adjustment") then { + ACE_player setVariable [QGVAR(Adjustment), [[0,0], [0,0], [0,0]]]; + [ACE_player, QGVAR(Adjustment), 0.5] call EFUNC(common,throttledPublicVariable); }; { if (_new select _forEachIndex != _x) then { - GVAR(Adjustment) set [_forEachIndex, [0,0]]; + _adjustment set [_forEachIndex, [0,0]]; + [ACE_player, QGVAR(Adjustment), 0.5] call EFUNC(common,throttledPublicVariable); }; } forEach GVAR(Optics); diff --git a/addons/scopes/functions/fnc_showZeroing.sqf b/addons/scopes/functions/fnc_showZeroing.sqf new file mode 100644 index 0000000000..76d4927ae9 --- /dev/null +++ b/addons/scopes/functions/fnc_showZeroing.sqf @@ -0,0 +1,26 @@ + +#include "script_component.hpp" + +disableSerialization; + +_display = uiNamespace getVariable [QGVAR(ZeroingDisplay), displayNull]; +if (isNull _display) exitWith {}; + +_weapons = [ + primaryWeapon ACE_player, + secondaryWeapon ACE_player, + handgunWeapon ACE_player +]; + +if !((currentWeapon ACE_player) in _weapons) exitWith {}; + +_adjustment = ACE_player getVariable QGVAR(Adjustment); +if (isNil "_adjustment") then { + _adjustment = [[0,0], [0,0], [0,0]]; +}; + +_zeroing = _adjustment select (_weapons find (currentWeapon ACE_player)); +_vertical = _display displayCtrl 925002; +_horizontal = _display displayCtrl 925003; +_vertical ctrlSetText (str (_zeroing select 1)); +_horizontal ctrlSetText (str (_zeroing select 0)); diff --git a/addons/scopes/scripts/script_component.hpp b/addons/scopes/scripts/script_component.hpp deleted file mode 100644 index acca51b4b5..0000000000 --- a/addons/scopes/scripts/script_component.hpp +++ /dev/null @@ -1 +0,0 @@ -#include "\z\ace\addons\scopes\script_component.hpp" diff --git a/addons/scopes/scripts/zeroingOnLoad.sqf b/addons/scopes/scripts/zeroingOnLoad.sqf deleted file mode 100644 index 591b5fc07b..0000000000 --- a/addons/scopes/scripts/zeroingOnLoad.sqf +++ /dev/null @@ -1,20 +0,0 @@ -#include "script_component.hpp" - -disableSerialization; - -_display = _this select 0; -uiNamespace setVariable [QGVAR(ZeroingDisplay, _display]; -_vertical = _display displayCtrl 925002; -_horizontal = _display displayCtrl 925003; - -_weapons = [ - primaryWeapon player, - secondaryWeapon player, - handgunWeapon player -]; - -if ((currentWeapon ACE_player) in _weapons) then { - _zeroing = GVAR(Adjustment) select (_weapons find (currentWeapon ACE_player)); - _horizontal ctrlSetText (str (_zeroing select 0)); - _vertical ctrlSetText (str (_zeroing select 1)); -}; From ff5c5a5bac845b1fe998891d1b1f0c2ff1bc30ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 10 Feb 2015 01:22:10 -0300 Subject: [PATCH 107/211] scopes: Code cleaned up, removed spawns, added standard headers. --- addons/common/XEH_postInit.sqf | 4 +- addons/scopes/CfgEventHandlers.hpp | 32 ----------- addons/scopes/XEH_postInit.sqf | 41 ++++++-------- addons/scopes/XEH_preInit.sqf | 2 +- addons/scopes/config.cpp | 4 +- addons/scopes/functions/fnc_adjustScope.sqf | 45 ++++++--------- .../scopes/functions/fnc_canAdjustScope.sqf | 30 +++++----- addons/scopes/functions/fnc_firedEH.sqf | 37 +++++++------ addons/scopes/functions/fnc_getOptics.sqf | 15 ++--- .../scopes/functions/fnc_getWeaponIndex.sqf | 23 ++++++++ addons/scopes/functions/fnc_hideZeroing.sqf | 27 --------- .../scopes/functions/fnc_inventoryCheck.sqf | 44 ++++++++++----- addons/scopes/functions/fnc_showZeroing.sqf | 55 +++++++++++++++---- 13 files changed, 178 insertions(+), 181 deletions(-) create mode 100644 addons/scopes/functions/fnc_getWeaponIndex.sqf delete mode 100644 addons/scopes/functions/fnc_hideZeroing.sqf diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 0767e42737..dbb665d446 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -82,7 +82,7 @@ enableCamShake true; }] call FUNC(addEventhandler); -GVAR(OldPlayerInventory) = ACE_player call FUNC(getAllGear); +GVAR(OldPlayerInventory) = [ACE_player] call FUNC(getAllGear); GVAR(OldPlayerVisionMode) = currentVisionMode ACE_player; GVAR(OldZeusDisplayIsOpen) = !(isNull findDisplay 312); GVAR(OldCameraView) = cameraView; @@ -93,7 +93,7 @@ GVAR(OldPlayerTurret) = [ACE_player] call FUNC(getTurretIndex); [{ // "playerInventoryChanged" event - _newPlayerInventory = ACE_player call FUNC(getAllGear); + _newPlayerInventory = [ACE_player] call FUNC(getAllGear); if !(_newPlayerInventory isEqualTo GVAR(OldPlayerInventory)) then { // Raise ACE event locally GVAR(OldPlayerInventory) = _newPlayerInventory; diff --git a/addons/scopes/CfgEventHandlers.hpp b/addons/scopes/CfgEventHandlers.hpp index 286a08598d..b3d70a2861 100644 --- a/addons/scopes/CfgEventHandlers.hpp +++ b/addons/scopes/CfgEventHandlers.hpp @@ -17,35 +17,3 @@ class Extended_Fired_EventHandlers { }; }; }; - -class Extended_Take_EventHandlers { - class CAManBase { - class ADDON { - clientTake = QUOTE(if (_this select 0 == ACE_player) then{ _this call FUNC(inventoryCheck);};); - }; - }; -}; - -class Extended_Put_EventHandlers { - class CAManBase { - class ADDON { - clientPut = QUOTE(if (_this select 0 == ACE_player) then {_this call FUNC(inventoryCheck);};); - }; - }; -}; - -class Extended_InitPost_EventHandlers { - class CAManBase { - class ADDON { - init = QUOTE(if (_this select 0 == call EFUNC(common,player)) then{ _this call FUNC(inventoryCheck);};); - }; - }; -}; - -class Extended_Respawn_EventHandlers { - class CAManBase { - class ADDON { - respawn = QUOTE(if (_this select 0 == call EFUNC(common,player)) then{ _this call FUNC(inventoryCheck);};); - }; - }; -}; diff --git a/addons/scopes/XEH_postInit.sqf b/addons/scopes/XEH_postInit.sqf index 30cc7d9384..8de7ff8af0 100644 --- a/addons/scopes/XEH_postInit.sqf +++ b/addons/scopes/XEH_postInit.sqf @@ -9,34 +9,27 @@ if !(hasInterface) exitWith {}; -// show overlay after changing weapon/optic -0 spawn { - _layer = [QGVAR(Zeroing)] call BIS_fnc_rscLayer; - while {True} do { - waitUntil {[ACE_player, 0,0] call FUNC(canAdjustScope)}; - _layer cutRsc [QGVAR(Zeroing), "PLAIN", 0, false]; - call FUNC(showZeroing); +// Check inventory when it changes +["playerInventoryChanged", { + [ACE_player] call FUNC(inventoryCheck); +}] call EFUNC(common,addEventhandler); - sleep 3; - _layer cutFadeOut 2; - _weapon = currentWeapon ACE_player; - _optics = [ACE_player] call FUNC(getOptics); - waitUntil {sleep 0.05; !(_optics isEqualTo ([ACE_player] call FUNC(getOptics))) or (currentWeapon ACE_player != _weapon)}; - }; -}; - -// instantly hide when scoping in -0 spawn { - _layer = [QGVAR(Zeroing)] call BIS_fnc_rscLayer; - while {True} do { - waitUntil {sleep 0.05; cameraView == "GUNNER"}; - if !(isNull GVAR(fadeScript)) then { - terminate GVAR(fadeScript); - }; +// Instantly hide knobs when scoping in +["cameraViewChanged", { + EXPLODE_2_PVT(_this,_player,_newCameraView); + if (_newCameraView == "GUNNER") then { + private "_layer"; + _layer = [QGVAR(Zeroing)] call BIS_fnc_rscLayer; _layer cutText ["", "PLAIN", 0]; + + + if !(isNil QGVAR(fadePFH)) then { + [GVAR(fadePFH)] call cba_fnc_removePerFrameHandler; + GVAR(fadePFH) = nil; + }; }; -}; +}] call EFUNC(common,addEventhandler); // Add keybinds diff --git a/addons/scopes/XEH_preInit.sqf b/addons/scopes/XEH_preInit.sqf index b0c4a50c1c..5dd7153263 100644 --- a/addons/scopes/XEH_preInit.sqf +++ b/addons/scopes/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP(adjustScope); PREP(canAdjustScope); PREP(firedEH); PREP(getOptics); -PREP(hideZeroing); +PREP(getWeaponIndex); PREP(inventoryCheck); PREP(showZeroing); diff --git a/addons/scopes/config.cpp b/addons/scopes/config.cpp index 9d2ddbeacb..50ff6528d0 100644 --- a/addons/scopes/config.cpp +++ b/addons/scopes/config.cpp @@ -5,8 +5,8 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = { "ace_main", "ace_common" }; - author[] = {"KoffeinFlummi"}; + requiredAddons[] = { "ace_common" }; + author[] = {"KoffeinFlummi", "CAA-Picard"}; authorUrl = "https://github.com/KoffeinFlummi"; VERSION_CONFIG; }; diff --git a/addons/scopes/functions/fnc_adjustScope.sqf b/addons/scopes/functions/fnc_adjustScope.sqf index b50da5322b..cf4d7e7146 100644 --- a/addons/scopes/functions/fnc_adjustScope.sqf +++ b/addons/scopes/functions/fnc_adjustScope.sqf @@ -1,45 +1,44 @@ /* * Author: KoffeinFlummi - * * Changes the adjustment for the current scope * - * Arguments: - * 0: Horizontal adjustment - * 1: Vertical adjustment + * Argument: + * 0: Unit + * 1: Horizontal adjustment + * 2: Vertical adjustment * - * Return Value: - * True + * Return value: + * True + * + * Public: No */ - #include "script_component.hpp" private ["_unit", "_weapons", "_zeroing", "_pitchbankyaw", "_pitch", "_bank", "_yaw", "_hint"]; _unit = _this select 0; -_weapons = [ - primaryWeapon _unit, - secondaryWeapon _unit, - handgunWeapon _unit -]; +_weaponIndex = [_unit, currentWeapon _unit] call FUNC(getWeaponIndex); _adjustment = _unit getVariable QGVAR(Adjustment); if (isNil "_adjustment") then { _adjustment = [[0,0], [0,0], [0,0]]; + _unit setVariable [QGVAR(Adjustment), _adjustment]; }; -_zeroing = _adjustment select (_weapons find (currentWeapon _unit)); +_zeroing = _adjustment select _weaponIndex; _zeroing set [0, (round (((_zeroing select 0) + (_this select 1)) * 10)) / 10]; _zeroing set [1, (round (((_zeroing select 1) + (_this select 2)) * 10)) / 10]; -_adjustment set [_weapons find (currentWeapon _unit), _zeroing]; -_unit setVariable [QGVAR(Adjustment), _adjustment]; +// Change the adjustment array +_adjustment set [_weaponIndex, _zeroing]; [_unit, QGVAR(Adjustment), 0.5] call EFUNC(common,throttledPublicVariable); playSound (["ACE_Scopes_Click_1", "ACE_Scopes_Click_2", "ACE_Scopes_Click_3"] select floor random 3); // slightly rotate the player if looking through optic if (cameraView == "GUNNER") then { + _pitchbankyaw = [_unit] call EFUNC(common,getPitchBankYaw); // these are not exact mil-to-degree conversions, but instead chosen // to minimize the effect of rounding errors @@ -47,19 +46,11 @@ if (cameraView == "GUNNER") then { _bank = _pitchbankyaw select 1; _yaw = (_pitchbankyaw select 2) + ((_this select 1) * -0.04); [_unit, _pitch, _bank, _yaw] call EFUNC(common,setPitchBankYaw) -}; -if (!isNull (missionNamespace getVariable [QGVAR(fadeScript), scriptNull])) then { - terminate GVAR(fadeScript); -}; -if (cameraView != "GUNNER") then { - GVAR(fadeScript) = 0 spawn { - _layer = [QGVAR(Zeroing)] call BIS_fnc_rscLayer; - _layer cutRsc [QGVAR(Zeroing), "PLAIN", 0, false]; - call FUNC(showZeroing); - sleep 3; - _layer cutFadeOut 2; - }; +} else { + + [] call FUNC(showZeroing); + }; true diff --git a/addons/scopes/functions/fnc_canAdjustScope.sqf b/addons/scopes/functions/fnc_canAdjustScope.sqf index 3bf4a74e21..75d5dd73a7 100644 --- a/addons/scopes/functions/fnc_canAdjustScope.sqf +++ b/addons/scopes/functions/fnc_canAdjustScope.sqf @@ -1,29 +1,25 @@ /* * Author: KoffeinFlummi - * * Checks if a player can adjust his optic in the given way. * - * Arguments: - * 0: Horizontal adjustment - * 1: Vertical adjustment + * Argument: + * 0: Unit + * 1: Horizontal adjustment + * 2: Vertical adjustment * - * Return Value: - * Can adjustment be done? (Bool) + * Return value: + * Can adjustment be done? + * + * Public: No */ - #include "script_component.hpp" -private ["_unit", "_weapons", "_zeroing", "_optic", "_maxHorizontal", "_maxVertical"]; +private ["_unit", "_weaponIndex", "_zeroing", "_optic", "_maxHorizontal", "_maxVertical"]; _unit = _this select 0; -_weapons = [ - primaryWeapon _unit, - secondaryWeapon _unit, - handgunWeapon _unit -]; - -if !(currentWeapon _unit in _weapons) exitWith {false}; +_weaponIndex = [_unit, currentWeapon _unit] call FUNC(getWeaponIndex); +if (_weaponIndex < 0) exitWith {false}; _adjustment = _unit getVariable QGVAR(Adjustment); if (isNil "_adjustment") then { @@ -34,11 +30,11 @@ if (isNil QGVAR(Optics)) then { GVAR(Optics) = ["", "", ""]; }; -_zeroing = _adjustment select (_weapons find (currentWeapon _unit)); +_zeroing = _adjustment select _weaponIndex; _zeroX = (_zeroing select 0) + (_this select 1); _zeroY = (_zeroing select 1) + (_this select 2); -_optic = GVAR(Optics) select (_weapons find (currentWeapon _unit)); +_optic = GVAR(Optics) select _weaponIndex; _maxHorizontal = getArray (configFile >> "CfgWeapons" >> _optic >> "ACE_ScopeAdjust_Horizontal"); _maxVertical = getArray (configFile >> "CfgWeapons" >> _optic >> "ACE_ScopeAdjust_Vertical"); if ((count _maxHorizontal < 2) or (count _maxVertical < 2)) exitWith {false}; diff --git a/addons/scopes/functions/fnc_firedEH.sqf b/addons/scopes/functions/fnc_firedEH.sqf index 097a81fca6..b6da3c7a9e 100644 --- a/addons/scopes/functions/fnc_firedEH.sqf +++ b/addons/scopes/functions/fnc_firedEH.sqf @@ -1,39 +1,42 @@ /* * Author: KoffeinFlummi and CAA-Picard - * * Adjusts the flight path of the bullet according to the zeroing * - * Arguments: - * Fired EH + * Argument: + * 0: Unit + * 1: Weapon + * 3: Muzzle + * 4: Magazine + * 5: Ammo + * 6: Projectile * - * Return Value: + * Return value: * None + * + * Public: No */ - #include "script_component.hpp" -private ["_unit", "_weaponType", "_round", "_weapons", "_zeroing", "_adjustment"]; +private ["_unit", "_adjustment", "_weapon", "_projectile", "_weaponIndex", "_zeroing", "_adjustment"]; _unit = _this select 0; +// Exit if the unit doesn't have any adjusment variable _adjustment = _unit getVariable QGVAR(Adjustment); if (isNil "_adjustment") exitWith {}; +// Exit if the unit isn't a player if !([_unit] call EFUNC(common,isPlayer)) exitWith {}; -_weaponType = _this select 1; -_round = _this select 5; +_weapon = _this select 1; +_projectile = _this select 5; -_weapons = [ - primaryWeapon _unit, - secondaryWeapon _unit, - handgunWeapon _unit -]; -if !(_weaponType in _weapons) exitWith {}; +_weaponIndex = [_unit, currentWeapon _unit] call FUNC(getWeaponIndex); +if (_weaponIndex < 0) exitWith {}; -_zeroing = _adjustment select (_weapons find _weaponType); +_zeroing = _adjustment select _weaponIndex; -// convert zeroing from mils to degrees +// Convert zeroing from mils to degrees _zeroing = [_zeroing, {_this * 0.05625}] call EFUNC(common,map); -[_round, _zeroing select 0, _zeroing select 1, 0] call EFUNC(common,changeProjectileDirection); +[_projectile, _zeroing select 0, _zeroing select 1, 0] call EFUNC(common,changeProjectileDirection); diff --git a/addons/scopes/functions/fnc_getOptics.sqf b/addons/scopes/functions/fnc_getOptics.sqf index 7ff2c7ea1d..289ed5e7bd 100644 --- a/addons/scopes/functions/fnc_getOptics.sqf +++ b/addons/scopes/functions/fnc_getOptics.sqf @@ -1,21 +1,22 @@ /* * Author: commy2 - * * Gets the optic classnames of all currently equipped weapons. * * Arguments: - * 0: Unit (Object) + * 0: Unit * * Return Value: - * [optic of primary, optic of secondary, optic of handgun] (Array) + * 0: Optic of primary + * 1: Optic of secondary + * 2: Optic of handgun + * + * Public: No */ - #include "script_component.hpp" -private ["_unit", "_array"]; - -_unit = _this select 0; +EXPLODE_1_PVT(_this,_unit); +private ["_array"]; _array = ["", "", ""]; if !(_unit isKindOf "CAManBase") exitWith {_array}; diff --git a/addons/scopes/functions/fnc_getWeaponIndex.sqf b/addons/scopes/functions/fnc_getWeaponIndex.sqf new file mode 100644 index 0000000000..05c1202795 --- /dev/null +++ b/addons/scopes/functions/fnc_getWeaponIndex.sqf @@ -0,0 +1,23 @@ +/* + * Author: commy2 + * Get the index of the weapon. + * 0 = primary, 1 = secondary, 2 = handgun, -1 = other + * + * Argument: + * 0: Unit + * 1: Weapon + * + * Return value: + * Weapon index + * + * Public: No + */ + #include "script_component.hpp" + + EXPLODE_2_PVT(_this,_unit,_weapon); + +[ + primaryWeapon _unit, + secondaryWeapon _unit, + handgunWeapon _unit +] find _weapon diff --git a/addons/scopes/functions/fnc_hideZeroing.sqf b/addons/scopes/functions/fnc_hideZeroing.sqf deleted file mode 100644 index b41fd1dab6..0000000000 --- a/addons/scopes/functions/fnc_hideZeroing.sqf +++ /dev/null @@ -1,27 +0,0 @@ -// by commy2 - -#include "script_component.hpp" - -private ["_state", "_ctrl"]; - -_state = _this select 0; - -disableSerialization; -_ctrl = (uiNamespace getVariable ['ACE_dlgWeaponZeroing', displayNull]) displayCtrl 168; - -if (_state) then { - _ctrl ctrlSetPosition [0,0,0,0]; -} else { - private "_config"; - - _config = configFile >> "RscInGameUI" >> "RscWeaponZeroing" >> "CA_Zeroing"; - - _ctrl ctrlSetPosition [ - getNumber (_config >> "x"), - getNumber (_config >> "y"), - getNumber (_config >> "w"), - getNumber (_config >> "h") - ]; -}; - -_ctrl ctrlCommit 0; diff --git a/addons/scopes/functions/fnc_inventoryCheck.sqf b/addons/scopes/functions/fnc_inventoryCheck.sqf index 1e1efa2c14..dba446912d 100644 --- a/addons/scopes/functions/fnc_inventoryCheck.sqf +++ b/addons/scopes/functions/fnc_inventoryCheck.sqf @@ -1,26 +1,42 @@ -// by KoffeinFlummi / commy2 - +/* + * Author: KoffeinFlummi and Commy2 + * Check if weapon optics changed and reset zeroing if needed + * + * Arguments: + * 0: Player + * + * Return Value: + * None + * + * Public: No + */ #include "script_component.hpp" -private "_new"; +EXPLODE_1_PVT(_this,_player); -_new = _this call FUNC(getOptics); +private ["_newOptics", "_adjustment"]; + +_adjustment = ACE_player getVariable QGVAR(Adjustment); +if (isNil "_adjustment") then { + _adjustment = [[0,0], [0,0], [0,0]]; + ACE_player setVariable [QGVAR(Adjustment), _adjustment]; + [ACE_player, QGVAR(Adjustment), 0.5] call EFUNC(common,throttledPublicVariable); +}; if (isNil QGVAR(Optics)) then { GVAR(Optics) = ["", "", ""]; }; - -_adjustment = ACE_player getVariable QGVAR(Adjustment); -if (isNil "_adjustment") then { - ACE_player setVariable [QGVAR(Adjustment), [[0,0], [0,0], [0,0]]]; - [ACE_player, QGVAR(Adjustment), 0.5] call EFUNC(common,throttledPublicVariable); -}; +_newOptics = [_player] call FUNC(getOptics); { - if (_new select _forEachIndex != _x) then { - _adjustment set [_forEachIndex, [0,0]]; - [ACE_player, QGVAR(Adjustment), 0.5] call EFUNC(common,throttledPublicVariable); + if (_newOptics select _forEachIndex != _x) then { + // The optic for this weapon changed, set adjustment to zero + if !((_adjustment select _foreachindex) isEqualTo [0,0]) then { + _adjustment set [_forEachIndex, [0,0]]; + [ACE_player, QGVAR(Adjustment), 0.5] call EFUNC(common,throttledPublicVariable); + }; }; } forEach GVAR(Optics); -GVAR(Optics) = _new; +_adjustment = ACE_player getVariable QGVAR(Adjustment); +GVAR(Optics) = _newOptics; diff --git a/addons/scopes/functions/fnc_showZeroing.sqf b/addons/scopes/functions/fnc_showZeroing.sqf index 76d4927ae9..3d729e81db 100644 --- a/addons/scopes/functions/fnc_showZeroing.sqf +++ b/addons/scopes/functions/fnc_showZeroing.sqf @@ -1,26 +1,59 @@ - +/* + * Author: KoffeinFlummi and CAA-Picard + * Display the adjustment knobs, update their value and fade them out later + * + * Arguments: + * None + * + * Return Value: + * None + * + * Public: No + */ #include "script_component.hpp" disableSerialization; -_display = uiNamespace getVariable [QGVAR(ZeroingDisplay), displayNull]; -if (isNull _display) exitWith {}; +private ["_weaponIndex","_adjustment","_layer","_display","_zeroing","_vertical","_horizontal"]; -_weapons = [ - primaryWeapon ACE_player, - secondaryWeapon ACE_player, - handgunWeapon ACE_player -]; - -if !((currentWeapon ACE_player) in _weapons) exitWith {}; +_weaponIndex = [ACE_player, currentWeapon ACE_player] call FUNC(getWeaponIndex); +if (_weaponIndex < 0) exitWith {}; _adjustment = ACE_player getVariable QGVAR(Adjustment); if (isNil "_adjustment") then { _adjustment = [[0,0], [0,0], [0,0]]; }; -_zeroing = _adjustment select (_weapons find (currentWeapon ACE_player)); +// Display the adjustment knobs +_layer = [QGVAR(Zeroing)] call BIS_fnc_rscLayer; +_layer cutRsc [QGVAR(Zeroing), "PLAIN", 0, false]; + +// Find the display +_display = uiNamespace getVariable [QGVAR(ZeroingDisplay), displayNull]; +if (isNull _display) exitWith {}; + +// Update values +_zeroing = _adjustment select _weaponIndex; _vertical = _display displayCtrl 925002; _horizontal = _display displayCtrl 925003; _vertical ctrlSetText (str (_zeroing select 1)); _horizontal ctrlSetText (str (_zeroing select 0)); + +// Set the time when to hide the knobs +GVAR(timeToHide) = diag_tickTime + 3.0; + +if !(isNil QGVAR(fadePFH)) exitWith {}; + +// Launch a PFH to wait and fade out the knobs +GVAR(fadePFH) = [{ + + if (diag_tickTime >= GVAR(timeToHide)) exitWith { + private "_layer"; + _layer = [QGVAR(Zeroing)] call BIS_fnc_rscLayer; + _layer cutFadeOut 2; + + GVAR(fadePFH) = nil; + [_this select 1] call cba_fnc_removePerFrameHandler; + }; + +}, 0.1, []] call CBA_fnc_addPerFrameHandler From b3f68467bb7d7f396623851897eb251484b47a34 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 9 Feb 2015 23:33:50 -0600 Subject: [PATCH 108/211] Wrong Actions in CfgMoves --- addons/captives/CfgMoves.hpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/captives/CfgMoves.hpp b/addons/captives/CfgMoves.hpp index 288d153d7b..6e67f3615b 100644 --- a/addons/captives/CfgMoves.hpp +++ b/addons/captives/CfgMoves.hpp @@ -7,14 +7,16 @@ class CfgMovesBasic { stop = "ACE_AmovPercMstpScapWnonDnon"; StopRelaxed = "ACE_AmovPercMstpScapWnonDnon"; default = "ACE_AmovPercMstpScapWnonDnon"; + PutDown = ""; getOver = ""; throwPrepare = ""; throwGrenade[] = {"","Gesture"}; }; class ACE_CivilStandSurrenderActions: ACE_CivilStandHandcuffedActions { - stop = "ACE_AmovPercMstpScapWnonDnon"; - StopRelaxed = "ACE_AmovPercMstpScapWnonDnon"; - default = "ACE_AmovPercMstpScapWnonDnon"; + stop = "ACE_AmovPercMstpSsurWnonDnon"; + StopRelaxed = "ACE_AmovPercMstpSsurWnonDnon"; + default = "ACE_AmovPercMstpSsurWnonDnon"; + PutDown = ""; }; }; }; From 3f8f08cc8b6dee07cefb15e42faf869f74b50eac Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 11 Feb 2015 14:51:21 +0100 Subject: [PATCH 109/211] no holding key with fcs --- addons/common/functions/fnc_getGunner.sqf | 2 +- addons/fcs/CfgEventHandlers.hpp | 4 +- addons/fcs/CfgVehicles.hpp | 4 +- addons/fcs/initKeybinds.sqf | 8 +++ addons/vector/XEH_postInit.sqf | 76 +-------------------- addons/vector/initKeybinds.sqf | 83 +++++++++++++++++++++++ 6 files changed, 97 insertions(+), 80 deletions(-) create mode 100644 addons/vector/initKeybinds.sqf diff --git a/addons/common/functions/fnc_getGunner.sqf b/addons/common/functions/fnc_getGunner.sqf index 2510c2ddc4..0c82066e4b 100644 --- a/addons/common/functions/fnc_getGunner.sqf +++ b/addons/common/functions/fnc_getGunner.sqf @@ -1,7 +1,7 @@ /* * Author: commy2 * - * Get the gunner of a vehicle who uses the given weapon type. Requires every turret to have a different weapons. + * Get the gunner of a vehicle who uses the given weapon type. Requires every turret to have a different weapon. * * Argument: * 0: The vehicle (Object) diff --git a/addons/fcs/CfgEventHandlers.hpp b/addons/fcs/CfgEventHandlers.hpp index 0d507b359d..28e1bd4a85 100644 --- a/addons/fcs/CfgEventHandlers.hpp +++ b/addons/fcs/CfgEventHandlers.hpp @@ -1,12 +1,12 @@ class Extended_PreInit_EventHandlers { class ADDON { - init = QUOTE(call COMPILE_FILE(XEH_preInit) ); + init = QUOTE(call COMPILE_FILE(XEH_preInit)); }; }; class Extended_PostInit_EventHandlers { class ADDON { - clientInit = QUOTE(call COMPILE_FILE(XEH_clientInit) ); + clientInit = QUOTE(call COMPILE_FILE(XEH_clientInit)); }; }; diff --git a/addons/fcs/CfgVehicles.hpp b/addons/fcs/CfgVehicles.hpp index 1e8e309b55..16902d9ee0 100644 --- a/addons/fcs/CfgVehicles.hpp +++ b/addons/fcs/CfgVehicles.hpp @@ -28,7 +28,7 @@ class CfgVehicles { displayName = $STR_ACE_FCS_ResetFCS; enableInside = 1; condition = QUOTE(call FUNC(canResetFCS)); - statement = QUOTE([ARR_2(_vehicle,[_player] call DEFUNC(common,getTurretIndex))] call FUNC(reset);); + statement = QUOTE([ARR_2(_vehicle,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset);); showDisabled = 0; priority = 1; icon = ""; @@ -42,7 +42,7 @@ class CfgVehicles { displayName = $STR_ACE_FCS_ResetFCS; enableInside = 1; condition = QUOTE(call FUNC(canResetFCS)); - statement = QUOTE([ARR_2(_vehicle,[_player] call DEFUNC(common,getTurretIndex))] call FUNC(reset);); + statement = QUOTE([ARR_2(_vehicle,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset);); showDisabled = 0; priority = 1; icon = ""; diff --git a/addons/fcs/initKeybinds.sqf b/addons/fcs/initKeybinds.sqf index 444891903b..bc3cf33bf5 100644 --- a/addons/fcs/initKeybinds.sqf +++ b/addons/fcs/initKeybinds.sqf @@ -1,3 +1,4 @@ +// by commy2 ["ACE3", localize "STR_ACE_FCS_LaseTarget", @@ -8,6 +9,10 @@ // Conditions: specific if !(!GVAR(enabled) && {call FUNC(canUseRangefinder) || FUNC(canUseFCS)}) exitWith {false}; + // prevent holding down + if (GETGVAR(isDownStateKey1,false)) exitWith {false}; + GVAR(isDownStateKey1) = true; + // Statement [vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex)] call FUNC(keyDown); // Return false so it doesn't block the rest weapon action @@ -21,6 +26,9 @@ ["ACE3", localize "STR_ACE_FCS_LaseTarget", { + // prevent holding down + GVAR(isDownStateKey1) = false; + // Conditions: canInteract _exceptions = []; if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; diff --git a/addons/vector/XEH_postInit.sqf b/addons/vector/XEH_postInit.sqf index 0a8f031347..8bbf7d7aa6 100644 --- a/addons/vector/XEH_postInit.sqf +++ b/addons/vector/XEH_postInit.sqf @@ -1,78 +1,4 @@ // by commy2 #include "script_component.hpp" -["ACE3", - localize "STR_ACE_Vector_AzimuthKey", - { - // Conditions: canInteract - _exceptions = []; - if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; - // Conditions: specific - if !(currentWeapon ACE_player == "ACE_Vector" && {ACE_player == cameraOn} && {cameraView == "GUNNER"} && {!(GETGVAR(isDownStateKeyAzimuth,false))}) exitWith {false}; - - GVAR(isDownStateKeyAzimuth) = true; - - // Statement - ["azimuth"] call FUNC(onKeyDown); - true - }, - [15, [false, false, false]], - false, - "keydown" -] call CBA_fnc_registerKeybind; - -["ACE3", - localize "STR_ACE_Vector_AzimuthKey", - { - GVAR(isDownStateKeyAzimuth) = false; - - // Conditions: canInteract - _exceptions = []; - if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; - - // Statement - ["azimuth"] call FUNC(onKeyUp); - true - }, - [15, [false, false, false]], - false, - "keyup" -] call CBA_fnc_registerKeybind; - -["ACE3", - localize "STR_ACE_Vector_DistanceKey", - { - // Conditions: canInteract - _exceptions = []; - if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; - // Conditions: specific - if !(currentWeapon ACE_player == "ACE_Vector" && {ACE_player == cameraOn} && {cameraView == "GUNNER"} && {!(GETGVAR(isDownStateKeyDistance,false))}) exitWith {false}; - - GVAR(isDownStateKeyDistance) = true; - - // Statement - ["distance"] call FUNC(onKeyDown); - true - }, - [19, [false, false, false]], - false, - "keydown" -] call CBA_fnc_registerKeybind; - -["ACE3", - localize "STR_ACE_Vector_DistanceKey", - { - GVAR(isDownStateKeyDistance) = false; - - // Conditions: canInteract - _exceptions = []; - if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; - - // Statement - ["distance"] call FUNC(onKeyUp); - true - }, - [19, [false, false, false]], - false, - "keyup" -] call CBA_fnc_registerKeybind; +#include "initKeybinds.sqf" diff --git a/addons/vector/initKeybinds.sqf b/addons/vector/initKeybinds.sqf new file mode 100644 index 0000000000..f81c280905 --- /dev/null +++ b/addons/vector/initKeybinds.sqf @@ -0,0 +1,83 @@ +// by commy2 + +["ACE3", + localize "STR_ACE_Vector_AzimuthKey", + { + // Conditions: canInteract + _exceptions = []; + if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; + // Conditions: specific + if !(currentWeapon ACE_player == "ACE_Vector" && {ACE_player == cameraOn} && {cameraView == "GUNNER"}) exitWith {false}; + + // prevent holding down + if (GETGVAR(isDownStateKey1,false)) exitWith {false}; + GVAR(isDownStateKey1) = true; + + // Statement + ["azimuth"] call FUNC(onKeyDown); + true + }, + [15, [false, false, false]], + false, + "keydown" +] call CBA_fnc_registerKeybind; + +["ACE3", + localize "STR_ACE_Vector_AzimuthKey", + { + // prevent holding down + GVAR(isDownStateKey1) = false; + + // Conditions: canInteract + _exceptions = []; + if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; + + // Statement + ["azimuth"] call FUNC(onKeyUp); + true + }, + [15, [false, false, false]], + false, + "keyup" +] call CBA_fnc_registerKeybind; + +["ACE3", + localize "STR_ACE_Vector_DistanceKey", + { + // Conditions: canInteract + _exceptions = []; + if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; + // Conditions: specific + if !(currentWeapon ACE_player == "ACE_Vector" && {ACE_player == cameraOn} && {cameraView == "GUNNER"}) exitWith {false}; + + // prevent holding down + if (GETGVAR(isDownStateKey2,false)) exitWith {false}; + GVAR(isDownStateKey2) = true; + + // Statement + ["distance"] call FUNC(onKeyDown); + true + }, + [19, [false, false, false]], + false, + "keydown" +] call CBA_fnc_registerKeybind; + +["ACE3", + localize "STR_ACE_Vector_DistanceKey", + { + // prevent holding down + GVAR(isDownStateKey2) = false; + + // Conditions: canInteract + _exceptions = []; + if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; + + // Statement + ["distance"] call FUNC(onKeyUp); + true + }, + [19, [false, false, false]], + false, + "keyup" +] call CBA_fnc_registerKeybind; From 7360277d09cfc09d90fb1d0f4b9f22d15ff0bf28 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 11 Feb 2015 15:29:42 +0100 Subject: [PATCH 110/211] fix error in canUseFCS --- addons/fcs/CfgEventHandlers.hpp | 22 +++++++++++++++++++++- addons/fcs/functions/fnc_canUseFCS.sqf | 2 +- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/addons/fcs/CfgEventHandlers.hpp b/addons/fcs/CfgEventHandlers.hpp index 28e1bd4a85..59956f2702 100644 --- a/addons/fcs/CfgEventHandlers.hpp +++ b/addons/fcs/CfgEventHandlers.hpp @@ -11,7 +11,27 @@ class Extended_PostInit_EventHandlers { }; class Extended_Init_EventHandlers { - class AllVehicles { + class Tank { + class ADDON { + clientInit = QUOTE(_this call FUNC(vehicleInit)); + }; + }; + class Car { + class ADDON { + clientInit = QUOTE(_this call FUNC(vehicleInit)); + }; + }; + class Helicopter { + class ADDON { + clientInit = QUOTE(_this call FUNC(vehicleInit)); + }; + }; + class Plane { + class ADDON { + clientInit = QUOTE(_this call FUNC(vehicleInit)); + }; + }; + class Ship_F { class ADDON { clientInit = QUOTE(_this call FUNC(vehicleInit)); }; diff --git a/addons/fcs/functions/fnc_canUseFCS.sqf b/addons/fcs/functions/fnc_canUseFCS.sqf index 854dcf5cec..cb4a1b608d 100644 --- a/addons/fcs/functions/fnc_canUseFCS.sqf +++ b/addons/fcs/functions/fnc_canUseFCS.sqf @@ -12,5 +12,5 @@ #include "script_component.hpp" -getNumber ([configFile >> "CfgVehicles" >> typeOf _vehicle, [_player] call EFUNC(common,getTurretIndex)] call EFUNC(common,getTurretConfigPath) >> QGVAR(Enabled)) == 1 +getNumber ([configFile >> "CfgVehicles" >> typeOf vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex)] call EFUNC(common,getTurretConfigPath) >> QGVAR(Enabled)) == 1 && {cameraView == "GUNNER"} From 3568d0d72e6f4dad4cb6afe0402fc8dedcd45a7f Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 11 Feb 2015 16:35:42 +0100 Subject: [PATCH 111/211] fix in fcs vehicleInit --- addons/fcs/CfgEventHandlers.hpp | 28 ++++++++++++++++++++++++ addons/fcs/functions/fnc_vehicleInit.sqf | 13 +++++------ 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/addons/fcs/CfgEventHandlers.hpp b/addons/fcs/CfgEventHandlers.hpp index 59956f2702..ff0812420a 100644 --- a/addons/fcs/CfgEventHandlers.hpp +++ b/addons/fcs/CfgEventHandlers.hpp @@ -37,3 +37,31 @@ class Extended_Init_EventHandlers { }; }; }; + +class Extended_FiredBIS_EventHandlers { + class Tank { + class ADDON { + clientInit = QUOTE(_this call FUNC(firedEH)); + }; + }; + class Car { + class ADDON { + clientInit = QUOTE(_this call FUNC(firedEH)); + }; + }; + class Helicopter { + class ADDON { + clientInit = QUOTE(_this call FUNC(firedEH)); + }; + }; + class Plane { + class ADDON { + clientInit = QUOTE(_this call FUNC(firedEH)); + }; + }; + class Ship_F { + class ADDON { + clientInit = QUOTE(_this call FUNC(firedEH)); + }; + }; +}; diff --git a/addons/fcs/functions/fnc_vehicleInit.sqf b/addons/fcs/functions/fnc_vehicleInit.sqf index 29de520f5d..fa808c7c27 100644 --- a/addons/fcs/functions/fnc_vehicleInit.sqf +++ b/addons/fcs/functions/fnc_vehicleInit.sqf @@ -17,9 +17,10 @@ private "_vehicle"; _vehicle = _this select 0; { - if (getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(Enabled)) == 1) then { // @todo for all turrets - _vehicle addEventHandler ["Fired", {_this call FUNC(firedEH)}]; + private "_turretConfig"; + _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _x] call EFUNC(common,getTurretConfigPath); + if (getNumber (_turretConfig >> QGVAR(Enabled)) == 1) then { _vehicle setVariable [format ["%1_%2", QGVAR(Distance), _x], 0, true]; _vehicle setVariable [format ["%1_%2", QGVAR(Magazines), _x], [], true]; _vehicle setVariable [format ["%1_%2", QGVAR(Elevation), _x], [], true]; @@ -27,12 +28,10 @@ _vehicle = _this select 0; // calculate offset between gunner camera and muzzle position if !(_vehicle isKindOf "Air") then { - private ["_turretConfig", "_gunBeg", "_gunnerView", "_gunBegPos", "_gunnerViewPos", "_viewDiff"]; + private ["_gunBeg", "_gunnerView", "_gunBegPos", "_gunnerViewPos", "_viewDiff"]; - _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _x] call EFUNC(common,getTurretConfigPath); - - _gunBeg = getText (_turretConfig >> "gunBeg"); // @todo player turret path - _gunnerView = getText (_turretConfig >> "memoryPointGunnerOptics"); // @todo player turret path + _gunBeg = getText (_turretConfig >> "gunBeg"); + _gunnerView = getText (_turretConfig >> "memoryPointGunnerOptics"); _gunBegPos = (_vehicle selectionPosition _gunBeg) select 0; _gunnerViewPos = (_vehicle selectionPosition _gunnerView) select 0; From 4695376f55f5b4164577dbf7fd887756411ed29e Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 11 Feb 2015 18:49:14 +0100 Subject: [PATCH 112/211] fix eventhandler name --- addons/fcs/CfgEventHandlers.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/fcs/CfgEventHandlers.hpp b/addons/fcs/CfgEventHandlers.hpp index ff0812420a..409267a8c8 100644 --- a/addons/fcs/CfgEventHandlers.hpp +++ b/addons/fcs/CfgEventHandlers.hpp @@ -41,27 +41,27 @@ class Extended_Init_EventHandlers { class Extended_FiredBIS_EventHandlers { class Tank { class ADDON { - clientInit = QUOTE(_this call FUNC(firedEH)); + firedBIS = QUOTE(_this call FUNC(firedEH)); }; }; class Car { class ADDON { - clientInit = QUOTE(_this call FUNC(firedEH)); + firedBIS = QUOTE(_this call FUNC(firedEH)); }; }; class Helicopter { class ADDON { - clientInit = QUOTE(_this call FUNC(firedEH)); + firedBIS = QUOTE(_this call FUNC(firedEH)); }; }; class Plane { class ADDON { - clientInit = QUOTE(_this call FUNC(firedEH)); + firedBIS = QUOTE(_this call FUNC(firedEH)); }; }; class Ship_F { class ADDON { - clientInit = QUOTE(_this call FUNC(firedEH)); + firedBIS = QUOTE(_this call FUNC(firedEH)); }; }; }; From 0d3e103de199989549d18a4598982a766b6de33b Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 11 Feb 2015 20:59:41 +0100 Subject: [PATCH 113/211] fcs work around for weaponDirection with commander turrets --- addons/fcs/functions/fnc_keyDown.sqf | 10 +++++++++- addons/fcs/functions/fnc_keyUp.sqf | 13 +++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/addons/fcs/functions/fnc_keyDown.sqf b/addons/fcs/functions/fnc_keyDown.sqf index 4cfcf7c57a..5a3febf6ea 100644 --- a/addons/fcs/functions/fnc_keyDown.sqf +++ b/addons/fcs/functions/fnc_keyDown.sqf @@ -28,7 +28,15 @@ if (_distance == 0) then { _distance = [5, 5000, 0] call EFUNC(common,getTargetDistance); // maximum distance: 5000m, 5m precision }; -_weaponDirection = _vehicle weaponDirection (_vehicle currentWeaponTurret _turret); +_weaponDirection = _vehicle weaponDirection (_vehicle currentWeaponTurret _turret); // @todo doesn't work for sub turrets + +if (_turret isEqualTo ([typeOf _vehicle] call EFUNC(common,getTurretCommander))) then { + _weaponDirection = eyeDirection _vehicle; +}; + +if (_weaponDirection isEqualTo [0,0,0]) then { // dummy value for non main turrets + _weaponDirection = [1,0,0]; +}; GVAR(Position) = [ (getPos _vehicle select 0) + _distance * (_weaponDirection select 0), diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 78a622331f..96e85714fd 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -21,7 +21,7 @@ _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _turret] call E _distance = call FUNC(getRange); -_magazines = magazines _vehicle; +_magazines = _vehicle magazinesTurret _turret; if (_distance == 0) then { _distance = [ @@ -33,7 +33,16 @@ if (_distance == 0) then { private ["_weaponDirection", "_angleTarget"]; -_weaponDirection = _vehicle weaponDirection currentWeapon _vehicle; +_weaponDirection = _vehicle weaponDirection (_vehicle currentWeaponTurret _turret); // @todo doesn't work for sub turrets + +if (_turret isEqualTo ([typeOf _vehicle] call EFUNC(common,getTurretCommander))) then { + _weaponDirection = eyeDirection _vehicle; +}; + +if (_weaponDirection isEqualTo [0,0,0]) then { // dummy value for non main turrets + _weaponDirection = [1,0,0]; +}; + _angleTarget = asin (_weaponDirection select 2); if (count _this > 2) then { From d18f470394d9ddfce5a15b861d83cda42a578d6f Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 11 Feb 2015 22:39:31 +0100 Subject: [PATCH 114/211] allow rangefinder while the fcs is active --- addons/fcs/XEH_clientInit.sqf | 2 +- addons/fcs/functions/fnc_keyDown.sqf | 2 +- addons/fcs/initKeybinds.sqf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/fcs/XEH_clientInit.sqf b/addons/fcs/XEH_clientInit.sqf index 918548e71e..17faa70f17 100644 --- a/addons/fcs/XEH_clientInit.sqf +++ b/addons/fcs/XEH_clientInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -GVAR(enabled) = True; +GVAR(enabled) = false; GVAR(time) = 0; GVAR(position) = [0,0,0]; diff --git a/addons/fcs/functions/fnc_keyDown.sqf b/addons/fcs/functions/fnc_keyDown.sqf index 5a3febf6ea..7699b82a20 100644 --- a/addons/fcs/functions/fnc_keyDown.sqf +++ b/addons/fcs/functions/fnc_keyDown.sqf @@ -19,7 +19,7 @@ _turret = _this select 1; _distance = call FUNC(getRange); -if !(call FUNC(canUseFCS)) exitWith {}; +if !(!GVAR(enabled) && FUNC(canUseFCS)) exitWith {}; GVAR(Enabled) = true; GVAR(Time) = time; diff --git a/addons/fcs/initKeybinds.sqf b/addons/fcs/initKeybinds.sqf index bc3cf33bf5..dd1a94b78e 100644 --- a/addons/fcs/initKeybinds.sqf +++ b/addons/fcs/initKeybinds.sqf @@ -7,7 +7,7 @@ _exceptions = []; if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; // Conditions: specific - if !(!GVAR(enabled) && {call FUNC(canUseRangefinder) || FUNC(canUseFCS)}) exitWith {false}; + if !((!GVAR(enabled) && FUNC(canUseFCS)) || FUNC(canUseRangefinder)) exitWith {false}; // prevent holding down if (GETGVAR(isDownStateKey1,false)) exitWith {false}; From 7545a6c3d88d8aa57b81fdc2a336a56dd6cbee5b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 11 Feb 2015 15:43:08 -0600 Subject: [PATCH 115/211] Code cleanup --- addons/magazinerepack/CfgSounds.hpp | 9 +++------ addons/magazinerepack/config.cpp | 12 +++++++++--- .../functions/fnc_magazineRepackProgress.sqf | 4 ++-- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/addons/magazinerepack/CfgSounds.hpp b/addons/magazinerepack/CfgSounds.hpp index 15104d905d..1390397e5e 100644 --- a/addons/magazinerepack/CfgSounds.hpp +++ b/addons/magazinerepack/CfgSounds.hpp @@ -1,13 +1,10 @@ -class CfgSounds -{ - class GVAR(soundMagazineFinished) - { +class CfgSounds { + class GVAR(soundMagazineFinished) { name = QGVAR(soundMagazineFinished); sound[]={QUOTE(PATHTOF(sounds\magrepack_finished.wav)),1,1}; titles[]={}; }; - class GVAR(soundRoundFinished) - { + class GVAR(soundRoundFinished) { name = QGVAR(soundRoundFinished); sound[] = {QUOTE(PATHTOF(sounds\magrepack_single.wav)),1,1}; titles[] = {}; diff --git a/addons/magazinerepack/config.cpp b/addons/magazinerepack/config.cpp index 3a95c10643..514a74350a 100644 --- a/addons/magazinerepack/config.cpp +++ b/addons/magazinerepack/config.cpp @@ -16,7 +16,13 @@ class CfgPatches { #include "CfgSounds.hpp" #include "CfgVehicles.hpp" -class ACE_Parameters_Numeric { - GVAR(TimePerAmmo) = 1.5; - GVAR(TimePerMagazine) = 2.0; +class ACE_Settings { + class GVAR(TimePerAmmo) { + value = 1.5; + typeName = "SCALAR"; + }; + class GVAR(TimePerMagazine) { + value = 2.0; + typeName = "SCALAR"; + }; }; diff --git a/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf b/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf index 1d3b5ec6cf..64ce05d12d 100644 --- a/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf +++ b/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf @@ -63,13 +63,13 @@ _updateMagazinesOnPlayerFnc = { }; if (_nextEventIsBullet) then { - playSound QGVAR(soundMagazineFinished); + playSound QGVAR(soundRoundFinished); if ((((count _simEvents) % 3) == 0) || {(count _simEvents) == 1}) then { //For performance - only update mags every 3 bullets (or if it's the last event) call _updateMagazinesOnPlayerFnc; }; } else { - playSound QGVAR(soundRoundFinished); + playSound QGVAR(soundMagazineFinished); call _updateMagazinesOnPlayerFnc; }; From 67b3442d17dda3bfbff7d27c2c9a9496228a746c Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 11 Feb 2015 23:49:41 +0100 Subject: [PATCH 116/211] getting the fcs to work in MP --- addons/fcs/CfgEventHandlers.hpp | 38 ++++++++++++++++++++++++---- addons/fcs/functions/fnc_firedEH.sqf | 2 +- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/addons/fcs/CfgEventHandlers.hpp b/addons/fcs/CfgEventHandlers.hpp index 409267a8c8..961a05b27d 100644 --- a/addons/fcs/CfgEventHandlers.hpp +++ b/addons/fcs/CfgEventHandlers.hpp @@ -13,27 +13,55 @@ class Extended_PostInit_EventHandlers { class Extended_Init_EventHandlers { class Tank { class ADDON { - clientInit = QUOTE(_this call FUNC(vehicleInit)); + serverInit = QUOTE(_this call FUNC(vehicleInit)); }; }; class Car { class ADDON { - clientInit = QUOTE(_this call FUNC(vehicleInit)); + serverInit = QUOTE(_this call FUNC(vehicleInit)); }; }; class Helicopter { class ADDON { - clientInit = QUOTE(_this call FUNC(vehicleInit)); + serverInit = QUOTE(_this call FUNC(vehicleInit)); }; }; class Plane { class ADDON { - clientInit = QUOTE(_this call FUNC(vehicleInit)); + serverInit = QUOTE(_this call FUNC(vehicleInit)); }; }; class Ship_F { class ADDON { - clientInit = QUOTE(_this call FUNC(vehicleInit)); + serverInit = QUOTE(_this call FUNC(vehicleInit)); + }; + }; +}; + +class Extended_Respawn_EventHandlers { + class Tank { + class ADDON { + respawn = QUOTE(_this call FUNC(vehicleInit)); + }; + }; + class Car { + class ADDON { + respawn = QUOTE(_this call FUNC(vehicleInit)); + }; + }; + class Helicopter { + class ADDON { + respawn = QUOTE(_this call FUNC(vehicleInit)); + }; + }; + class Plane { + class ADDON { + respawn = QUOTE(_this call FUNC(vehicleInit)); + }; + }; + class Ship_F { + class ADDON { + respawn = QUOTE(_this call FUNC(vehicleInit)); }; }; }; diff --git a/addons/fcs/functions/fnc_firedEH.sqf b/addons/fcs/functions/fnc_firedEH.sqf index a0b10795cf..22371a26f4 100644 --- a/addons/fcs/functions/fnc_firedEH.sqf +++ b/addons/fcs/functions/fnc_firedEH.sqf @@ -25,7 +25,7 @@ private ["_gunner", "_turret"]; _gunner = [_vehicle, _weapon] call EFUNC(common,getGunner); _turret = [_gunner] call EFUNC(common,getTurretIndex); -if (ACE_player != _gunner) exitWith {}; +//if (ACE_player != _gunner) exitWith {}; // global private ["_FCSMagazines", "_FCSElevation", "_offset"]; From ff0348a169a096a73a90d9ac52dbd9fed400dff4 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 12 Feb 2015 13:23:38 +0100 Subject: [PATCH 117/211] add common_fnc_setVariablePublic --- addons/common/XEH_preInit.sqf | 1 + .../functions/fnc_setVariablePublic.sqf | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 addons/common/functions/fnc_setVariablePublic.sqf diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 94a0a490bf..faf0362779 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -119,6 +119,7 @@ PREP(setName); PREP(setParameter); PREP(setPitchBankYaw); PREP(setVariableJIP); +PREP(setVariablePublic); PREP(setSetting); PREP(setSettingFromConfig); PREP(stringToColoredText); diff --git a/addons/common/functions/fnc_setVariablePublic.sqf b/addons/common/functions/fnc_setVariablePublic.sqf new file mode 100644 index 0000000000..cbdf0dc31d --- /dev/null +++ b/addons/common/functions/fnc_setVariablePublic.sqf @@ -0,0 +1,53 @@ +/* + * Author: commy2 + * + * Sets a public variable, but wait a certain amount of time to transfer the value over the network. Changing the value by calling this function again resets the windup timer. + * + * Argument: + * 0: Object the variable should be assigned to (Object) + * 1: Name of the variable (String) + * 2: Value of the variable (Any) + * 3: Windup time (Number, optional. Default: 1) + * + * Return value: + * Nothing. + */ +#include "script_component.hpp" + +private ["_object", "_varName", "_value", "_sync"]; + +_object = _this select 0; +_varName = _this select 1; +_value = _this select 2; +_sync = _this select 3; + +if (isNil "_sync") then { + _sync = 1; +}; + +// set value locally +_object setVariable [_varName, _value]; + +// "duh" +if (!isMultiplayer) exitWith {}; + +// generate stacked eventhandler id +private "_idName"; +_idName = format ["ACE_setVariablePublic_%1", _varName]; + +// when to push the value +private "_syncTime"; +_syncTime = diag_tickTime + _sync; + +// add eventhandler. should the value change, then overwrite the previous eventhandler +[_idName, "onEachFrame", { + // wait to sync the variable + if (diag_tickTime > _this select 3) then { + // set value public + (_this select 0) setVariable [_this select 1, _this select 2, true]; + + // remove eventhandler + [_this select 4, "onEachFrame"] call BIS_fnc_removeStackedEventHandler + }; +}, [_object, _varName, _value, _syncTime, _idName]] call BIS_fnc_addStackedEventHandler; +nil From b32849a68e5b05106a1a81da30bcb90b34b36840 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 12 Feb 2015 14:18:34 +0100 Subject: [PATCH 118/211] no left hand - weapon IK when swag walking (combat pace) --- addons/movement/CfgMoves.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/addons/movement/CfgMoves.hpp b/addons/movement/CfgMoves.hpp index 9d32d4e856..677ad3dc94 100644 --- a/addons/movement/CfgMoves.hpp +++ b/addons/movement/CfgMoves.hpp @@ -77,6 +77,15 @@ class CfgMovesMaleSdr: CfgMovesBasic { class AmovPercMwlkSlowWrflDr: AmovPercMwlkSlowWrflDf { leftHandIKCurve[] = {}; }; + class AmovPercMwlkSlowWrflDf_v1: AmovPercMwlkSlowWrflDf { + leftHandIKCurve[] = {}; + }; + class AidlPercMwlkSrasWrflDf: AmovPercMwlkSlowWrflDf { + leftHandIKCurve[] = {}; + }; + class AmovPercMtacSlowWrflDf: AmovPercMwlkSlowWrflDf { + leftHandIKCurve[] = {}; + }; // enable optics in prone left and right stance class AidlPpneMstpSrasWrflDnon_G0S; From a4815cb8acf3365e9b02dbea18db99df97fc2785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 12 Feb 2015 11:51:17 -0300 Subject: [PATCH 119/211] scopes: reduce control numbers --- addons/scopes/RscTitles.hpp | 6 +++--- addons/scopes/functions/fnc_showZeroing.sqf | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/scopes/RscTitles.hpp b/addons/scopes/RscTitles.hpp index 9da0a04a14..a9c43aedaf 100644 --- a/addons/scopes/RscTitles.hpp +++ b/addons/scopes/RscTitles.hpp @@ -13,7 +13,7 @@ class RscTitles { class RscText; class controls { class ACE_Scopes_Zeroing_BG : RscPicture { - idc = 925001; + idc = 11; type = 0; text = PATHTOF(UI\scopes_bg.paa); style = 48 + 0x800; @@ -30,7 +30,7 @@ class RscTitles { h = 0.3 * safezoneH; }; class ACE_Scopes_Zeroing_Vertical : RscText { - idc = 925002; + idc = 12; type = 0; style = 2; sizeEx = 0.04; @@ -47,7 +47,7 @@ class RscTitles { h = 0.025 * safezoneH; }; class ACE_Scopes_Zeroing_Horizontal : RscText { - idc = 925003; + idc = 13; type = 0; style = 0; sizeEx = 0.04; diff --git a/addons/scopes/functions/fnc_showZeroing.sqf b/addons/scopes/functions/fnc_showZeroing.sqf index 3d729e81db..f00ca5fedb 100644 --- a/addons/scopes/functions/fnc_showZeroing.sqf +++ b/addons/scopes/functions/fnc_showZeroing.sqf @@ -34,8 +34,8 @@ if (isNull _display) exitWith {}; // Update values _zeroing = _adjustment select _weaponIndex; -_vertical = _display displayCtrl 925002; -_horizontal = _display displayCtrl 925003; +_vertical = _display displayCtrl 12; +_horizontal = _display displayCtrl 13; _vertical ctrlSetText (str (_zeroing select 1)); _horizontal ctrlSetText (str (_zeroing select 0)); From 7c8840df565964291bbcc70937e6f4b2c2fce7c0 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 12 Feb 2015 15:56:57 +0100 Subject: [PATCH 120/211] transfer value even if it changed --- .../common/functions/fnc_setVariablePublic.sqf | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/addons/common/functions/fnc_setVariablePublic.sqf b/addons/common/functions/fnc_setVariablePublic.sqf index cbdf0dc31d..81093a2679 100644 --- a/addons/common/functions/fnc_setVariablePublic.sqf +++ b/addons/common/functions/fnc_setVariablePublic.sqf @@ -35,19 +35,25 @@ if (!isMultiplayer) exitWith {}; private "_idName"; _idName = format ["ACE_setVariablePublic_%1", _varName]; +// exit now if an eh for that variable already exists +private "_allIdNames"; +_allIdNames = [GETMVAR(BIS_stackedEventHandlers_onEachFrame,[]), {_this select 0}] call FUNC(map); + +if (_idName in _allIdNames) exitWith {}; + // when to push the value private "_syncTime"; _syncTime = diag_tickTime + _sync; -// add eventhandler. should the value change, then overwrite the previous eventhandler +// add eventhandler [_idName, "onEachFrame", { // wait to sync the variable - if (diag_tickTime > _this select 3) then { + if (diag_tickTime > _this select 2) then { // set value public - (_this select 0) setVariable [_this select 1, _this select 2, true]; + (_this select 0) setVariable [_this select 1, (_this select 0) getVariable (_this select 1), true]; // remove eventhandler - [_this select 4, "onEachFrame"] call BIS_fnc_removeStackedEventHandler + [_this select 3, "onEachFrame"] call BIS_fnc_removeStackedEventHandler }; -}, [_object, _varName, _value, _syncTime, _idName]] call BIS_fnc_addStackedEventHandler; +}, [_object, _varName, _syncTime, _idName]] call BIS_fnc_addStackedEventHandler; nil From a3dc1df109928918cbaa96f8bf60b5773a248859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 12 Feb 2015 11:57:55 -0300 Subject: [PATCH 121/211] scopes: moved getWeaponIndex to common --- addons/common/XEH_preInit.sqf | 1 + addons/{scopes => common}/functions/fnc_getWeaponIndex.sqf | 2 ++ addons/scopes/XEH_preInit.sqf | 1 - addons/scopes/functions/fnc_adjustScope.sqf | 2 +- addons/scopes/functions/fnc_canAdjustScope.sqf | 2 +- addons/scopes/functions/fnc_firedEH.sqf | 2 +- addons/scopes/functions/fnc_showZeroing.sqf | 2 +- 7 files changed, 7 insertions(+), 5 deletions(-) rename addons/{scopes => common}/functions/fnc_getWeaponIndex.sqf (92%) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 9b8964df1b..a186d2ddbe 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -75,6 +75,7 @@ PREP(getVehicleCargo); PREP(getVehicleCodriver); PREP(getVehicleCrew); PREP(getWeaponAzimuthAndInclination); +PREP(getWeaponIndex); PREP(getWeaponType); PREP(getWindDirection); PREP(goKneeling); diff --git a/addons/scopes/functions/fnc_getWeaponIndex.sqf b/addons/common/functions/fnc_getWeaponIndex.sqf similarity index 92% rename from addons/scopes/functions/fnc_getWeaponIndex.sqf rename to addons/common/functions/fnc_getWeaponIndex.sqf index 05c1202795..6cac6d244e 100644 --- a/addons/scopes/functions/fnc_getWeaponIndex.sqf +++ b/addons/common/functions/fnc_getWeaponIndex.sqf @@ -16,6 +16,8 @@ EXPLODE_2_PVT(_this,_unit,_weapon); +if (_weapon = "") exitWith {-1}; + [ primaryWeapon _unit, secondaryWeapon _unit, diff --git a/addons/scopes/XEH_preInit.sqf b/addons/scopes/XEH_preInit.sqf index 5dd7153263..e574cc72d4 100644 --- a/addons/scopes/XEH_preInit.sqf +++ b/addons/scopes/XEH_preInit.sqf @@ -6,7 +6,6 @@ PREP(adjustScope); PREP(canAdjustScope); PREP(firedEH); PREP(getOptics); -PREP(getWeaponIndex); PREP(inventoryCheck); PREP(showZeroing); diff --git a/addons/scopes/functions/fnc_adjustScope.sqf b/addons/scopes/functions/fnc_adjustScope.sqf index cf4d7e7146..031ff3a820 100644 --- a/addons/scopes/functions/fnc_adjustScope.sqf +++ b/addons/scopes/functions/fnc_adjustScope.sqf @@ -18,7 +18,7 @@ private ["_unit", "_weapons", "_zeroing", "_pitchbankyaw", "_pitch", "_bank", "_ _unit = _this select 0; -_weaponIndex = [_unit, currentWeapon _unit] call FUNC(getWeaponIndex); +_weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex); _adjustment = _unit getVariable QGVAR(Adjustment); if (isNil "_adjustment") then { diff --git a/addons/scopes/functions/fnc_canAdjustScope.sqf b/addons/scopes/functions/fnc_canAdjustScope.sqf index 75d5dd73a7..eda08dc0ee 100644 --- a/addons/scopes/functions/fnc_canAdjustScope.sqf +++ b/addons/scopes/functions/fnc_canAdjustScope.sqf @@ -18,7 +18,7 @@ private ["_unit", "_weaponIndex", "_zeroing", "_optic", "_maxHorizontal", "_maxV _unit = _this select 0; -_weaponIndex = [_unit, currentWeapon _unit] call FUNC(getWeaponIndex); +_weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex); if (_weaponIndex < 0) exitWith {false}; _adjustment = _unit getVariable QGVAR(Adjustment); diff --git a/addons/scopes/functions/fnc_firedEH.sqf b/addons/scopes/functions/fnc_firedEH.sqf index b6da3c7a9e..371d1e5f33 100644 --- a/addons/scopes/functions/fnc_firedEH.sqf +++ b/addons/scopes/functions/fnc_firedEH.sqf @@ -31,7 +31,7 @@ if !([_unit] call EFUNC(common,isPlayer)) exitWith {}; _weapon = _this select 1; _projectile = _this select 5; -_weaponIndex = [_unit, currentWeapon _unit] call FUNC(getWeaponIndex); +_weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex); if (_weaponIndex < 0) exitWith {}; _zeroing = _adjustment select _weaponIndex; diff --git a/addons/scopes/functions/fnc_showZeroing.sqf b/addons/scopes/functions/fnc_showZeroing.sqf index f00ca5fedb..836f69b2df 100644 --- a/addons/scopes/functions/fnc_showZeroing.sqf +++ b/addons/scopes/functions/fnc_showZeroing.sqf @@ -16,7 +16,7 @@ disableSerialization; private ["_weaponIndex","_adjustment","_layer","_display","_zeroing","_vertical","_horizontal"]; -_weaponIndex = [ACE_player, currentWeapon ACE_player] call FUNC(getWeaponIndex); +_weaponIndex = [ACE_player, currentWeapon ACE_player] call EFUNC(common,getWeaponIndex); if (_weaponIndex < 0) exitWith {}; _adjustment = ACE_player getVariable QGVAR(Adjustment); From 4a70d16f95aed2c3d67a2748fd4ffa3aac9453c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 12 Feb 2015 12:21:46 -0300 Subject: [PATCH 122/211] scopes: switch throttledPublicVariable by setVariablePublic --- addons/scopes/functions/fnc_adjustScope.sqf | 2 +- addons/scopes/functions/fnc_inventoryCheck.sqf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/scopes/functions/fnc_adjustScope.sqf b/addons/scopes/functions/fnc_adjustScope.sqf index 031ff3a820..6e71a391aa 100644 --- a/addons/scopes/functions/fnc_adjustScope.sqf +++ b/addons/scopes/functions/fnc_adjustScope.sqf @@ -32,7 +32,7 @@ _zeroing set [1, (round (((_zeroing select 1) + (_this select 2)) * 10)) / 10]; // Change the adjustment array _adjustment set [_weaponIndex, _zeroing]; -[_unit, QGVAR(Adjustment), 0.5] call EFUNC(common,throttledPublicVariable); +[_unit, QGVAR(Adjustment), _adjustment, 0.5] call EFUNC(common,setVariablePublic); playSound (["ACE_Scopes_Click_1", "ACE_Scopes_Click_2", "ACE_Scopes_Click_3"] select floor random 3); diff --git a/addons/scopes/functions/fnc_inventoryCheck.sqf b/addons/scopes/functions/fnc_inventoryCheck.sqf index dba446912d..c83112c8a6 100644 --- a/addons/scopes/functions/fnc_inventoryCheck.sqf +++ b/addons/scopes/functions/fnc_inventoryCheck.sqf @@ -20,7 +20,7 @@ _adjustment = ACE_player getVariable QGVAR(Adjustment); if (isNil "_adjustment") then { _adjustment = [[0,0], [0,0], [0,0]]; ACE_player setVariable [QGVAR(Adjustment), _adjustment]; - [ACE_player, QGVAR(Adjustment), 0.5] call EFUNC(common,throttledPublicVariable); + [ACE_player, QGVAR(Adjustment), _adjustment, 0.5] call EFUNC(common,setVariablePublic); }; if (isNil QGVAR(Optics)) then { @@ -33,7 +33,7 @@ _newOptics = [_player] call FUNC(getOptics); // The optic for this weapon changed, set adjustment to zero if !((_adjustment select _foreachindex) isEqualTo [0,0]) then { _adjustment set [_forEachIndex, [0,0]]; - [ACE_player, QGVAR(Adjustment), 0.5] call EFUNC(common,throttledPublicVariable); + [ACE_player, QGVAR(Adjustment), _adjustment, 0.5] call EFUNC(common,setVariablePublic); }; }; } forEach GVAR(Optics); From d0b0a0e066d00bda367db0e2193ddfa7010c6d39 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 12 Feb 2015 20:43:50 -0600 Subject: [PATCH 123/211] Missing = --- addons/common/functions/fnc_getWeaponIndex.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_getWeaponIndex.sqf b/addons/common/functions/fnc_getWeaponIndex.sqf index 6cac6d244e..f2b8bce9f2 100644 --- a/addons/common/functions/fnc_getWeaponIndex.sqf +++ b/addons/common/functions/fnc_getWeaponIndex.sqf @@ -16,7 +16,7 @@ EXPLODE_2_PVT(_this,_unit,_weapon); -if (_weapon = "") exitWith {-1}; +if (_weapon == "") exitWith {-1}; [ primaryWeapon _unit, From d4163223a95816efb4eda07604300fbf0d8b6c80 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 05:05:02 +0100 Subject: [PATCH 124/211] fcs in MP --- addons/fcs/functions/fnc_keyUp.sqf | 8 ++++---- addons/fcs/functions/fnc_reset.sqf | 8 ++++---- addons/fcs/functions/fnc_vehicleInit.sqf | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 96e85714fd..1e5878f0b5 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -155,9 +155,9 @@ _FCSElevation = []; }; } forEach _magazines; -_vehicle setVariable [format ["%1_%2", QGVAR(Distance), _turret], _distance, true]; -_vehicle setVariable [format ["%1_%2", QGVAR(Magazines), _turret], _FCSMagazines, true]; -_vehicle setVariable [format ["%1_%2", QGVAR(Elevation), _turret], _FCSElevation, true]; -_vehicle setVariable [format ["%1_%2", QGVAR(Azimuth), _turret], _FCSAzimuth, true]; +[_vehicle, format ["%1_%2", QGVAR(Distance), _turret], _distance] call EFUNC(common,setVariablePublic); +[_vehicle, format ["%1_%2", QGVAR(Magazines), _turret], _FCSMagazines] call EFUNC(common,setVariablePublic); +[_vehicle, format ["%1_%2", QGVAR(Elevation), _turret], _FCSElevation] call EFUNC(common,setVariablePublic); +[_vehicle, format ["%1_%2", QGVAR(Azimuth), _turret], _FCSAzimuth] call EFUNC(common,setVariablePublic); [format ["%1: %2", localize "STR_ACE_FCS_ZeroedTo", _distance]] call EFUNC(common,displayTextStructured); diff --git a/addons/fcs/functions/fnc_reset.sqf b/addons/fcs/functions/fnc_reset.sqf index 9001a31c48..f2b434ab34 100644 --- a/addons/fcs/functions/fnc_reset.sqf +++ b/addons/fcs/functions/fnc_reset.sqf @@ -16,9 +16,9 @@ private "_vehicle"; _vehicle = _this select 0; -_vehicle setVariable [QGVAR(Distance), 0, true]; -_vehicle setVariable [QGVAR(Magazines), [], true]; -_vehicle setVariable [QGVAR(Elevation), 0, true]; -_vehicle setVariable [QGVAR(Azimuth), 0, true]; +[_vehicle, QGVAR(Distance), 0] call EFUNC(common,setVariablePublic); +[_vehicle, QGVAR(Magazines), []] call EFUNC(common,setVariablePublic); +[_vehicle, QGVAR(Elevation), 0] call EFUNC(common,setVariablePublic); +[_vehicle, QGVAR(Azimuth), 0] call EFUNC(common,setVariablePublic); [localize "STR_ACE_FCS_HasBeenReset"] call EFUNC(common,displayTextStructured); diff --git a/addons/fcs/functions/fnc_vehicleInit.sqf b/addons/fcs/functions/fnc_vehicleInit.sqf index fa808c7c27..8ac23073f6 100644 --- a/addons/fcs/functions/fnc_vehicleInit.sqf +++ b/addons/fcs/functions/fnc_vehicleInit.sqf @@ -1,7 +1,7 @@ /* - * Author: KoffeinFlummi + * Author: KoffeinFlummi, commy2 * - * Checks if a vehicle is equipped with an FCS and if so, adds the fired event handler + * Checks if a vehicle is equipped with an FCS and if so, adds the fired event handler. Execute on server. * * Arguments: * 0: Vehicle From f83d83a82029add45d66dd2ba23611daa50df090 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 13 Feb 2015 22:09:29 -0600 Subject: [PATCH 125/211] Fix from AGM FFV-holster bug --- .../fnc_fixLoweredRifleAnimation.sqf | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/addons/common/functions/fnc_fixLoweredRifleAnimation.sqf b/addons/common/functions/fnc_fixLoweredRifleAnimation.sqf index 55bc6865b0..411fdd2eb3 100644 --- a/addons/common/functions/fnc_fixLoweredRifleAnimation.sqf +++ b/addons/common/functions/fnc_fixLoweredRifleAnimation.sqf @@ -1,10 +1,22 @@ -// by commy2 +/* + * Author: commy2 + * Fixes the lowered rifle animation + * + * Arguments: + * 0: Unit + * + * Return Value: + * Nothing + * + * Example: + * [_player] call ace_common_fnc_fixLoweredRifleAnimation + * + * Public: No + */ #include "script_component.hpp" -private "_unit"; +PARAMS_1(_unit); -_unit = _this select 0; - -if (currentWeapon _unit != "" && {currentWeapon _unit == primaryWeapon _unit} && {weaponLowered _unit} && {stance _unit == "STAND"}) then { +if (currentWeapon _unit != "" && {currentWeapon _unit == primaryWeapon _unit} && {weaponLowered _unit} && {stance _unit == "STAND"} && {(vehicle _unit) == _unit}) then { [_unit, "amovpercmstpsraswrfldnon", 0] call FUNC(doAnimation); }; From 60a7d1d1e6ff04302476f15efa4beb75d126177f Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 06:38:01 +0100 Subject: [PATCH 126/211] fix, fcs reset was broken --- addons/fcs/functions/fnc_canResetFCS.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/fcs/functions/fnc_canResetFCS.sqf b/addons/fcs/functions/fnc_canResetFCS.sqf index 81876b301b..488f1eebf4 100644 --- a/addons/fcs/functions/fnc_canResetFCS.sqf +++ b/addons/fcs/functions/fnc_canResetFCS.sqf @@ -12,4 +12,4 @@ #include "script_component.hpp" -count ((vehicle ACE_player) getVariable [format ["%1_%2", QGVAR(Magazines), [vehicle ACE_player] call EFUNC(common,getTurretIndex)], []]) > 1 +count ((vehicle ACE_player) getVariable [format ["%1_%2", QGVAR(Magazines), [ACE_player] call EFUNC(common,getTurretIndex)], []]) > 1 From fb3a610649132c30cc5837a3c90580fba060d1da Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 13 Feb 2015 23:09:52 -0600 Subject: [PATCH 127/211] Fix bad STR_ACE_Common_ACETeam --- addons/logistics_wirecutter/CfgWeapons.hpp | 2 +- addons/vehiclelock/CfgWeapons.hpp | 2 +- addons/winddeflection/config.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/logistics_wirecutter/CfgWeapons.hpp b/addons/logistics_wirecutter/CfgWeapons.hpp index f2d35337a2..76b1003f34 100644 --- a/addons/logistics_wirecutter/CfgWeapons.hpp +++ b/addons/logistics_wirecutter/CfgWeapons.hpp @@ -3,7 +3,7 @@ class CfgWeapons { class ACE_ItemCore; class ACE_wirecutter: ACE_ItemCore { - author = "$STR_ACE_Core_ACETeam"; + author = "$STR_ACE_Common_ACETeam"; displayName = "$STR_ACE_logistics_wirecutter_wirecutterName"; descriptionShort = "$STR_ACE_logistics_wirecutter_wirecutterDescription"; model = "\A3\weapons_F\ammo\mag_univ.p3d"; diff --git a/addons/vehiclelock/CfgWeapons.hpp b/addons/vehiclelock/CfgWeapons.hpp index c7df1116f8..157fb4bf60 100644 --- a/addons/vehiclelock/CfgWeapons.hpp +++ b/addons/vehiclelock/CfgWeapons.hpp @@ -3,7 +3,7 @@ class CfgWeapons { class ACE_ItemCore; class ACE_key_master: ACE_ItemCore { - author = "$STR_ACE_Core_ACETeam"; + author = "$STR_ACE_Common_ACETeam"; displayName = "Vehicle Key: Master"; descriptionShort = "$STR_ACE_Vehicle_Item_Master_Description"; model = "\A3\weapons_F\ammo\mag_univ.p3d"; diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index f71ef251cd..0e721846ad 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_common", "ACE_weather"}; versionDesc = "ACE Wind Deflection"; version = VERSION; - author[] = {$STR_ACE_Core_ACETeam, "Glowbal", "Ruthberg"}; + author[] = {$STR_ACE_Common_ACETeam, "Glowbal", "Ruthberg"}; authorUrl = "http://csemod.com"; }; }; From 1a611480538b0f4df11bcf6e1b863001d65b9aae Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 14 Feb 2015 00:39:01 -0600 Subject: [PATCH 128/211] Grenades Cleanup Shouldn't be any change to functionality Headers Formating simplifying (waitAndExecute) exceptions/canInteract for keybind --- addons/grenades/CfgAmmo.hpp | 168 +++++++++--------- addons/grenades/CfgEventHandlers.hpp | 20 +-- addons/grenades/CfgMagazines.hpp | 114 ++++++------ addons/grenades/CfgVehicles.hpp | 66 +++---- addons/grenades/CfgWeapons.hpp | 38 ++-- addons/grenades/XEH_postInit.sqf | 28 +++ addons/grenades/XEH_postInitClient.sqf | 13 -- addons/grenades/XEH_preInit.sqf | 3 - addons/grenades/config.cpp | 18 +- .../functions/fnc_flashbangEffectStages.sqf | 57 ------ .../functions/fnc_flashbangExplosionEH.sqf | 150 +++++++++------- .../functions/fnc_flashbangThrownFuze.sqf | 33 ++-- addons/grenades/functions/fnc_nextMode.sqf | 37 ++-- .../grenades/functions/fnc_throwGrenade.sqf | 85 +++++---- 14 files changed, 413 insertions(+), 417 deletions(-) create mode 100644 addons/grenades/XEH_postInit.sqf delete mode 100644 addons/grenades/XEH_postInitClient.sqf delete mode 100644 addons/grenades/functions/fnc_flashbangEffectStages.sqf diff --git a/addons/grenades/CfgAmmo.hpp b/addons/grenades/CfgAmmo.hpp index 7b0a24740d..0f86230784 100644 --- a/addons/grenades/CfgAmmo.hpp +++ b/addons/grenades/CfgAmmo.hpp @@ -1,89 +1,89 @@ class CfgAmmo { - class FlareCore; - class FlareBase: FlareCore { - intensity = 20000; - flareSize = 12; - }; - class F_40mm_White: FlareBase { - intensity = 40000; - flareSize = 12; - }; - class F_20mm_White: FlareBase { - intensity = 20000; - flareSize = 12; - }; - class F_Signal_Green: FlareBase { - intensity = 20000; - flareSize = 12; - }; - class Flare_82mm_AMOS_White: FlareCore { - intensity = 80000; - flareSize = 12; - }; + class FlareCore; + class FlareBase: FlareCore { + intensity = 20000; + flareSize = 12; + }; + class F_40mm_White: FlareBase { + intensity = 40000; + flareSize = 12; + }; + class F_20mm_White: FlareBase { + intensity = 20000; + flareSize = 12; + }; + class F_Signal_Green: FlareBase { + intensity = 20000; + flareSize = 12; + }; + class Flare_82mm_AMOS_White: FlareCore { + intensity = 80000; + flareSize = 12; + }; - class F_20mm_Red: F_20mm_White {}; - class F_20mm_Green: F_20mm_White {}; - class F_20mm_Yellow: F_20mm_White {}; + class F_20mm_Red: F_20mm_White {}; + class F_20mm_Green: F_20mm_White {}; + class F_20mm_Yellow: F_20mm_White {}; - class ACE_F_Hand_White: F_20mm_White { - grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; - soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; - SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; - SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; - SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; - SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; - timeToLive = 60; - }; - class ACE_F_Hand_Red: F_20mm_Red { - grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; - soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; - SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; - SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; - SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; - SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; - timeToLive = 60; - }; - class ACE_F_Hand_Green: F_20mm_Green { - grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; - soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; - SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; - SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; - SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; - SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; - timeToLive = 60; - }; - class ACE_F_Hand_Yellow: F_20mm_Yellow { - grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; - soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; - SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; - SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; - SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; - SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; - timeToLive = 60; - }; + class ACE_F_Hand_White: F_20mm_White { + grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; + grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; + soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; + SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; + SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; + SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; + SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; + SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; + timeToLive = 60; + }; + class ACE_F_Hand_Red: F_20mm_Red { + grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; + grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; + soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; + SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; + SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; + SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; + SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; + SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; + timeToLive = 60; + }; + class ACE_F_Hand_Green: F_20mm_Green { + grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; + grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; + soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; + SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; + SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; + SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; + SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; + SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; + timeToLive = 60; + }; + class ACE_F_Hand_Yellow: F_20mm_Yellow { + grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; + grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; + soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; + SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; + SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; + SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; + SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; + SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; + timeToLive = 60; + }; - class ACE_G_M84: F_20mm_Yellow { - useFlare = 0; - flareSize = 0; - intensity = 0; - grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; - soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; - SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; - SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; - SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; - SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; - timeToLive = 60; - fuseDistance = 2.3; - model = PATHTOF(models\ACE_m84_thrown.p3d); - }; + class ACE_G_M84: F_20mm_Yellow { + useFlare = 0; + flareSize = 0; + intensity = 0; + grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; + grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; + soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; + SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; + SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; + SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; + SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; + SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; + timeToLive = 60; + fuseDistance = 2.3; + model = PATHTOF(models\ACE_m84_thrown.p3d); + }; }; diff --git a/addons/grenades/CfgEventHandlers.hpp b/addons/grenades/CfgEventHandlers.hpp index 02f1ac5553..2587bdf86f 100644 --- a/addons/grenades/CfgEventHandlers.hpp +++ b/addons/grenades/CfgEventHandlers.hpp @@ -1,19 +1,19 @@ class Extended_PreInit_EventHandlers { - class ADDON { - init = QUOTE( call COMPILE_FILE(XEH_preInit) ); - }; + class ADDON { + init = QUOTE( call COMPILE_FILE(XEH_preInit) ); + }; }; class Extended_PostInit_EventHandlers { - class ADDON { - clientInit = QUOTE( call COMPILE_FILE(XEH_postInitClient) ); - }; + class ADDON { + init = QUOTE( call COMPILE_FILE(XEH_postInit) ); + }; }; class Extended_FiredBIS_EventHandlers { - class CAManBase { - class ADDON { - clientFiredBIS = QUOTE( _this call FUNC(throwGrenade) ); + class CAManBase { + class ADDON { + clientFiredBIS = QUOTE( _this call FUNC(throwGrenade) ); + }; }; - }; }; diff --git a/addons/grenades/CfgMagazines.hpp b/addons/grenades/CfgMagazines.hpp index 5775302d2c..33392f41ee 100644 --- a/addons/grenades/CfgMagazines.hpp +++ b/addons/grenades/CfgMagazines.hpp @@ -1,60 +1,60 @@ class CfgMagazines { - class HandGrenade; - class ACE_HandFlare_Base: HandGrenade { - value = 2; - nameSoundWeapon = "smokeshell"; - nameSound = "smokeshell"; - mass = 4; - initSpeed = 22; - }; - class ACE_HandFlare_White: ACE_HandFlare_Base { - ammo = "ACE_F_Hand_White"; - displayname = "$STR_ACE_Grenades_M127A1_White_Name"; - descriptionshort = "$STR_ACE_Grenades_M127A1_White_Description"; - displayNameShort = "$STR_ACE_Grenades_M127A1_White_NameShort"; - model = "\A3\weapons_f\ammo\flare_white"; - picture = "\A3\Weapons_F\Data\UI\gear_flare_white_ca.paa"; - }; - class ACE_HandFlare_Red: ACE_HandFlare_Base { - ammo = "ACE_F_Hand_Red"; - displayname = "$STR_ACE_Grenades_M127A1_Red_Name"; - descriptionshort = "$STR_ACE_Grenades_M127A1_Red_Description"; - displayNameShort = "$STR_ACE_Grenades_M127A1_Red_NameShort"; - model = "\A3\weapons_f\ammo\flare_red"; - picture = "\A3\Weapons_F\Data\UI\gear_flare_red_ca.paa"; - }; - class ACE_HandFlare_Green: ACE_HandFlare_Base { - ammo = "ACE_F_Hand_Green"; - displayname = "$STR_ACE_Grenades_M127A1_Green_Name"; - descriptionshort = "$STR_ACE_Grenades_M127A1_Green_Description"; - displayNameShort = "$STR_ACE_Grenades_M127A1_Green_NameShort"; - model = "\A3\weapons_f\ammo\flare_green"; - picture = "\A3\Weapons_F\Data\UI\gear_flare_green_ca.paa"; - }; - class ACE_HandFlare_Yellow: ACE_HandFlare_Base { - ammo = "ACE_F_Hand_Yellow"; - displayname = "$STR_ACE_Grenades_M127A1_Yellow_Name"; - descriptionshort = "$STR_ACE_Grenades_M127A1_Yellow_Description"; - displayNameShort = "$STR_ACE_Grenades_M127A1_Yellow_NameShort"; - model = "\A3\weapons_f\ammo\flare_yellow"; - picture = "\A3\Weapons_F\Data\UI\gear_flare_yellow_ca.paa"; - }; - class ACE_M84: HandGrenade { - ammo = "ACE_G_M84"; - displayname = "$STR_ACE_Grenades_M84_Name"; - descriptionshort = "$STR_ACE_Grenades_M84_Description"; - displayNameShort = "M84"; - model = PATHTOF(models\ACE_m84.p3d); - picture = PATHTOF(UI\ACE_m84_x_ca.paa); - }; + class HandGrenade; + class ACE_HandFlare_Base: HandGrenade { + value = 2; + nameSoundWeapon = "smokeshell"; + nameSound = "smokeshell"; + mass = 4; + initSpeed = 22; + }; + class ACE_HandFlare_White: ACE_HandFlare_Base { + ammo = "ACE_F_Hand_White"; + displayname = "$STR_ACE_Grenades_M127A1_White_Name"; + descriptionshort = "$STR_ACE_Grenades_M127A1_White_Description"; + displayNameShort = "$STR_ACE_Grenades_M127A1_White_NameShort"; + model = "\A3\weapons_f\ammo\flare_white"; + picture = "\A3\Weapons_F\Data\UI\gear_flare_white_ca.paa"; + }; + class ACE_HandFlare_Red: ACE_HandFlare_Base { + ammo = "ACE_F_Hand_Red"; + displayname = "$STR_ACE_Grenades_M127A1_Red_Name"; + descriptionshort = "$STR_ACE_Grenades_M127A1_Red_Description"; + displayNameShort = "$STR_ACE_Grenades_M127A1_Red_NameShort"; + model = "\A3\weapons_f\ammo\flare_red"; + picture = "\A3\Weapons_F\Data\UI\gear_flare_red_ca.paa"; + }; + class ACE_HandFlare_Green: ACE_HandFlare_Base { + ammo = "ACE_F_Hand_Green"; + displayname = "$STR_ACE_Grenades_M127A1_Green_Name"; + descriptionshort = "$STR_ACE_Grenades_M127A1_Green_Description"; + displayNameShort = "$STR_ACE_Grenades_M127A1_Green_NameShort"; + model = "\A3\weapons_f\ammo\flare_green"; + picture = "\A3\Weapons_F\Data\UI\gear_flare_green_ca.paa"; + }; + class ACE_HandFlare_Yellow: ACE_HandFlare_Base { + ammo = "ACE_F_Hand_Yellow"; + displayname = "$STR_ACE_Grenades_M127A1_Yellow_Name"; + descriptionshort = "$STR_ACE_Grenades_M127A1_Yellow_Description"; + displayNameShort = "$STR_ACE_Grenades_M127A1_Yellow_NameShort"; + model = "\A3\weapons_f\ammo\flare_yellow"; + picture = "\A3\Weapons_F\Data\UI\gear_flare_yellow_ca.paa"; + }; + class ACE_M84: HandGrenade { + ammo = "ACE_G_M84"; + displayname = "$STR_ACE_Grenades_M84_Name"; + descriptionshort = "$STR_ACE_Grenades_M84_Description"; + displayNameShort = "M84"; + model = PATHTOF(models\ACE_m84.p3d); + picture = PATHTOF(UI\ACE_m84_x_ca.paa); + }; - class 3Rnd_UGL_FlareGreen_F; - class 6Rnd_GreenSignal_F: 3Rnd_UGL_FlareGreen_F { - ammo = "F_40mm_Green"; - initSpeed = 120; - }; - class 6Rnd_RedSignal_F: 6Rnd_GreenSignal_F { - ammo = "F_40mm_Red"; - initSpeed = 120; - }; + class 3Rnd_UGL_FlareGreen_F; + class 6Rnd_GreenSignal_F: 3Rnd_UGL_FlareGreen_F { + ammo = "F_40mm_Green"; + initSpeed = 120; + }; + class 6Rnd_RedSignal_F: 6Rnd_GreenSignal_F { + ammo = "F_40mm_Red"; + initSpeed = 120; + }; }; diff --git a/addons/grenades/CfgVehicles.hpp b/addons/grenades/CfgVehicles.hpp index 9a0164e24f..d4ff039bf7 100644 --- a/addons/grenades/CfgVehicles.hpp +++ b/addons/grenades/CfgVehicles.hpp @@ -1,45 +1,45 @@ #define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ - name = #ITEM; \ - count = COUNT; \ - }; + name = #ITEM; \ + count = COUNT; \ + }; class CfgVehicles { - class NATO_Box_Base; - class EAST_Box_Base; - class IND_Box_Base; - class Box_NATO_Support_F; + class NATO_Box_Base; + class EAST_Box_Base; + class IND_Box_Base; + class Box_NATO_Support_F; - class Box_NATO_Grenades_F: NATO_Box_Base { - class TransportItems { - MACRO_ADDITEM(ACE_HandFlare_White,12) - MACRO_ADDITEM(ACE_HandFlare_Green,12) - MACRO_ADDITEM(ACE_M84,12) + class Box_NATO_Grenades_F: NATO_Box_Base { + class TransportItems { + MACRO_ADDITEM(ACE_HandFlare_White,12) + MACRO_ADDITEM(ACE_HandFlare_Green,12) + MACRO_ADDITEM(ACE_M84,12) + }; }; - }; - class Box_East_Grenades_F: EAST_Box_Base { - class TransportItems { - MACRO_ADDITEM(ACE_HandFlare_Yellow,12) - MACRO_ADDITEM(ACE_HandFlare_Red,12) - MACRO_ADDITEM(ACE_M84,12) + class Box_East_Grenades_F: EAST_Box_Base { + class TransportItems { + MACRO_ADDITEM(ACE_HandFlare_Yellow,12) + MACRO_ADDITEM(ACE_HandFlare_Red,12) + MACRO_ADDITEM(ACE_M84,12) + }; }; - }; - class Box_IND_Grenades_F: IND_Box_Base { - class TransportItems { - MACRO_ADDITEM(ACE_HandFlare_Yellow,12) - MACRO_ADDITEM(ACE_HandFlare_Green,12) - MACRO_ADDITEM(ACE_M84,12) + class Box_IND_Grenades_F: IND_Box_Base { + class TransportItems { + MACRO_ADDITEM(ACE_HandFlare_Yellow,12) + MACRO_ADDITEM(ACE_HandFlare_Green,12) + MACRO_ADDITEM(ACE_M84,12) + }; }; - }; - class ACE_Box_Misc: Box_NATO_Support_F { - class TransportItems { - MACRO_ADDITEM(ACE_HandFlare_White,12) - MACRO_ADDITEM(ACE_HandFlare_Red,12) - MACRO_ADDITEM(ACE_HandFlare_Green,12) - MACRO_ADDITEM(ACE_HandFlare_Yellow,12) - MACRO_ADDITEM(ACE_M84,12) + class ACE_Box_Misc: Box_NATO_Support_F { + class TransportItems { + MACRO_ADDITEM(ACE_HandFlare_White,12) + MACRO_ADDITEM(ACE_HandFlare_Red,12) + MACRO_ADDITEM(ACE_HandFlare_Green,12) + MACRO_ADDITEM(ACE_HandFlare_Yellow,12) + MACRO_ADDITEM(ACE_M84,12) + }; }; - }; }; diff --git a/addons/grenades/CfgWeapons.hpp b/addons/grenades/CfgWeapons.hpp index fa28ca4ef0..4edc6e6d12 100644 --- a/addons/grenades/CfgWeapons.hpp +++ b/addons/grenades/CfgWeapons.hpp @@ -1,23 +1,23 @@ class CfgWeapons { - class GrenadeLauncher; + class GrenadeLauncher; - class Throw: GrenadeLauncher { - muzzles[] += {"ACE_HandFlare_WhiteMuzzle", "ACE_HandFlare_RedMuzzle", "ACE_HandFlare_GreenMuzzle", "ACE_HandFlare_YellowMuzzle", "ACE_M84Muzzle"}; - class ThrowMuzzle; - class ACE_HandFlare_WhiteMuzzle: ThrowMuzzle { - magazines[] = {"ACE_HandFlare_White"}; + class Throw: GrenadeLauncher { + muzzles[] += {"ACE_HandFlare_WhiteMuzzle", "ACE_HandFlare_RedMuzzle", "ACE_HandFlare_GreenMuzzle", "ACE_HandFlare_YellowMuzzle", "ACE_M84Muzzle"}; + class ThrowMuzzle; + class ACE_HandFlare_WhiteMuzzle: ThrowMuzzle { + magazines[] = {"ACE_HandFlare_White"}; + }; + class ACE_HandFlare_RedMuzzle: ThrowMuzzle { + magazines[] = {"ACE_HandFlare_Red"}; + }; + class ACE_HandFlare_GreenMuzzle: ThrowMuzzle { + magazines[] = {"ACE_HandFlare_Green"}; + }; + class ACE_HandFlare_YellowMuzzle: ThrowMuzzle { + magazines[] = {"ACE_HandFlare_Yellow"}; + }; + class ACE_M84Muzzle: ThrowMuzzle { + magazines[] = {"ACE_M84"}; + }; }; - class ACE_HandFlare_RedMuzzle: ThrowMuzzle { - magazines[] = {"ACE_HandFlare_Red"}; - }; - class ACE_HandFlare_GreenMuzzle: ThrowMuzzle { - magazines[] = {"ACE_HandFlare_Green"}; - }; - class ACE_HandFlare_YellowMuzzle: ThrowMuzzle { - magazines[] = {"ACE_HandFlare_Yellow"}; - }; - class ACE_M84Muzzle: ThrowMuzzle { - magazines[] = {"ACE_M84"}; - }; - }; }; diff --git a/addons/grenades/XEH_postInit.sqf b/addons/grenades/XEH_postInit.sqf new file mode 100644 index 0000000000..0b6bb16ffb --- /dev/null +++ b/addons/grenades/XEH_postInit.sqf @@ -0,0 +1,28 @@ +// by commy2 + +#include "script_component.hpp" + +["flashbangExplosion", {_this call FUNC(flashbangExplosionEH)}] call EFUNC(common,addEventHandler); + +if !(hasInterface) exitWith {}; + +GVAR(flashbangPPEffectCC) = ppEffectCreate ["ColorCorrections", 4265]; +GVAR(flashbangPPEffectCC) ppEffectForceInNVG true; + +// Add keybinds +["ACE3", + localize "STR_ACE_Grenades_SwitchGrenadeMode", + { + // Conditions: canInteract + _exceptions = [QEGVAR(captives,isNotEscorting)]; + if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; + // Conditions: specific + if (!([ACE_player] call EFUNC(common,canUseWeapon))) exitWith {false}; + + // Statement + [] call FUNC(nextMode); + }, + [9, [false, false, false]], //8 key + false, + "keydown" +] call cba_fnc_registerKeybind; diff --git a/addons/grenades/XEH_postInitClient.sqf b/addons/grenades/XEH_postInitClient.sqf deleted file mode 100644 index 5f5b569050..0000000000 --- a/addons/grenades/XEH_postInitClient.sqf +++ /dev/null @@ -1,13 +0,0 @@ -// by commy2 - -#include "script_component.hpp" - -GVAR(flashbangPPEffectCC) = ppEffectCreate ["ColorCorrections", 4265]; -GVAR(flashbangPPEffectCC) ppEffectForceInNVG true; - -["ACE3", -localize "STR_ACE_Grenades_SwitchGrenadeMode", -{_this call FUNC(nextMode)}, -[9, [false, false, false]], //8 key -false, -"keydown"] call cba_fnc_registerKeybind; diff --git a/addons/grenades/XEH_preInit.sqf b/addons/grenades/XEH_preInit.sqf index 569cbfa8f6..0df2e235fd 100644 --- a/addons/grenades/XEH_preInit.sqf +++ b/addons/grenades/XEH_preInit.sqf @@ -2,12 +2,9 @@ ADDON = false; -PREP(flashbangEffectStages); PREP(flashbangExplosionEH); PREP(flashbangThrownFuze); PREP(nextMode); PREP(throwGrenade); -["flashbangExplosion", { _this call DFUNC(flashbangExplosionEH) }] call EFUNC(common,addEventHandler); - ADDON = true; diff --git a/addons/grenades/config.cpp b/addons/grenades/config.cpp index 74d1038ecc..c2a899d66c 100644 --- a/addons/grenades/config.cpp +++ b/addons/grenades/config.cpp @@ -1,15 +1,15 @@ #include "script_component.hpp" class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - author[] = {"commy2", "KoffeinFlummi"}; - authorUrl = "https://github.com/commy2/"; - VERSION_CONFIG; - }; + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {"commy2", "KoffeinFlummi"}; + authorUrl = "https://github.com/commy2/"; + VERSION_CONFIG; + }; }; #include "CfgEventHandlers.hpp" diff --git a/addons/grenades/functions/fnc_flashbangEffectStages.sqf b/addons/grenades/functions/fnc_flashbangEffectStages.sqf deleted file mode 100644 index c2ee7a6841..0000000000 --- a/addons/grenades/functions/fnc_flashbangEffectStages.sqf +++ /dev/null @@ -1,57 +0,0 @@ -/* -* Author: KoffeinFlummi, Pabst Mirror -* -* Handles the different stages of the flash bang effect recovery -* -* Arguments: -* ARRAY[ -* 0-ARRAY - PARAMS: -* 0: NUMBER - Stage, controls a case statement -* 1: NUMBER - Time To Wait Until -* 2: VARIES - Stage's Variable -* 1-NUMBER perFrame handle -* Return Value: -* None -*/ - -#include "script_component.hpp" - -private ["_stage", "_waitUntilTime"]; - -_stage = (_this select 0) select 0; -_waitUntilTime = (_this select 0) select 1; - -if (_waitUntilTime > time) exitWith {}; - -//remove frameEH -[(_this select 1)] call cba_fnc_removePerFrameHandler; - -switch (_stage) do { - case(EFFECT_STAGE_RESETAI): { - private "_unit"; - _unit = (_this select 0) select 2; - _unit enableAI "MOVE"; - _unit enableAI "ANIM"; - _unit enableAI "AUTOTARGET"; - _unit enableAI "TARGET"; - _unit enableAI "FSM"; - _unit setSkill (skill _unit * 50); - }; - case(EFFECT_STAGE_DELETELIGHT): { - private "_light"; - _light = (_this select 0) select 2; - deleteVehicle _light; - }; - case(EFFECT_STAGE_PARTIALRECOVERY): { - private "_strength"; - _strength = (_this select 0) select 2; - GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,0,[1,1,1,0],[0,0,0,1],[0,0,0,0]]; - GVAR(flashbangPPEffectCC) ppEffectCommit (10 * _strength); - }; - case(EFFECT_STAGE_FULLRECOVERY): { - GVAR(flashbangPPEffectCC) ppEffectEnable false; - }; - default { - TRACE_1("EffectStage Bad Stage", _stage); - }; -}; diff --git a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf index 1ef7ea1484..3868994bee 100644 --- a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf +++ b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf @@ -1,85 +1,109 @@ /* -* Author: KoffeinFlummi -* -* Creates the flashbang effect and knock out AI units. -* -* Arguments: -* 0: The grenade (Object) -* -* Return Value: -* None -*/ - + * Author: KoffeinFlummi + * Creates the flashbang effect and knock out AI units. + * + * Arguments: + * 0: The grenade + * + * Return Value: + * Nothing + * + * Example: + * [theGrenade] call ace_grenades_fnc_flashbangExplosionEH + * + * Public: No + */ #include "script_component.hpp" -private ["_grenade", "_affected", "_strength", "_posGrenade", "_posUnit", "_angleGrenade", "_angleView", "_angleDiff", "_light"]; +private ["_affected", "_strength", "_posGrenade", "_posUnit", "_angleGrenade", "_angleView", "_angleDiff", "_light"]; -_grenade = _this select 0; +PARAMS_1(_grenade); _affected = _grenade nearEntities ["CAManBase", 50]; { - if ((local _x) && {alive _x}) then { + if ((local _x) && {alive _x}) then { - _strength = 1 - ((_x distance _grenade) min 15) / 15; + _strength = 1 - ((_x distance _grenade) min 15) / 15; - if (_x != ACE_player) then { - //must be AI - _x disableAI "MOVE"; - _x disableAI "ANIM"; - _x disableAI "AUTOTARGET"; - _x disableAI "TARGET"; - _x disableAI "FSM"; - _x setSkill ((skill _x) / 50); + if (_x != ACE_player) then { + //must be AI + _x disableAI "MOVE"; + _x disableAI "ANIM"; + _x disableAI "AUTOTARGET"; + _x disableAI "TARGET"; + _x disableAI "FSM"; + _x setSkill ((skill _x) / 50); - [FUNC(flashbangEffectStages), 0, [EFFECT_STAGE_RESETAI, (time + (7 * _strength)), _x]] call CBA_fnc_addPerFrameHandler; - } else { - //Do effects for player - // is there line of sight to the grenade? - _posGrenade = getPosASL _grenade; - _posGrenade set [2, (_posGrenade select 2) + 0.2]; // compensate for grenade glitching into ground - if (lineIntersects [_posGrenade, getPosASL _x, _grenade, _x]) then { - _strength = _strength / 10; - }; + [{ + PARAMS_1(_unit); + _unit enableAI "MOVE"; + _unit enableAI "ANIM"; + _unit enableAI "AUTOTARGET"; + _unit enableAI "TARGET"; + _unit enableAI "FSM"; + _unit setSkill (skill _unit * 50); + }, [_x], (7 * _strength), 0.1] call EFUNC(common,waitAndExecute); //0.1 precision is fine for AI + } else { + //Do effects for player + // is there line of sight to the grenade? + _posGrenade = getPosASL _grenade; + _posGrenade set [2, (_posGrenade select 2) + 0.2]; // compensate for grenade glitching into ground + if (lineIntersects [_posGrenade, getPosASL _x, _grenade, _x]) then { + _strength = _strength / 10; + }; - // beeeeeeeeeeeeeeeeeeeeeeeeeeeeep - if (isClass (configFile >> "CfgPatches" >> "ACE_Hearing") and _strength > 0) then { - [_x, 0.5 + (_strength / 2)] call EFUNC(hearing,earRinging); - }; + // beeeeeeeeeeeeeeeeeeeeeeeeeeeeep + if (isClass (configFile >> "CfgPatches" >> "ACE_Hearing") and _strength > 0) then { + [_x, 0.5 + (_strength / 2)] call EFUNC(hearing,earRinging); + }; - // account for people looking away by slightly - // reducing the effect for visual effects. - _posUnit = getPos _x; - _posGrenade = getPos _grenade; - _angleGrenade = ((_posGrenade select 0) - (_posUnit select 0)) atan2 ((_posGrenade select 1) - (_posUnit select 1)); - _angleGrenade = (_angleGrenade + 360) % 360; + // account for people looking away by slightly + // reducing the effect for visual effects. + _posUnit = getPos _x; + _posGrenade = getPos _grenade; + _angleGrenade = ((_posGrenade select 0) - (_posUnit select 0)) atan2 ((_posGrenade select 1) - (_posUnit select 1)); + _angleGrenade = (_angleGrenade + 360) % 360; - _angleView = (eyeDirection player select 0) atan2 (eyeDirection player select 1); - _angleView = (_angleView + 360) % 360; + _angleView = (eyeDirection ACE_player select 0) atan2 (eyeDirection ACE_player select 1); + _angleView = (_angleView + 360) % 360; - _angleDiff = 180 - abs (abs (_angleGrenade - _angleView) - 180); - _angleDiff = ((_angleDiff - 45) max 0); + _angleDiff = 180 - abs (abs (_angleGrenade - _angleView) - 180); + _angleDiff = ((_angleDiff - 45) max 0); - _strength = _strength - _strength * (_angleDiff / 135); + _strength = _strength - _strength * (_angleDiff / 135); - // create flash to illuminate environment - _light = "#lightpoint" createVehicleLocal getPos _grenade; - _light setLightBrightness 200; - _light setLightAmbient [1,1,1]; - _light setLightColor [1,1,1]; - _light setLightDayLight true; + // create flash to illuminate environment + _light = "#lightpoint" createVehicleLocal (getPos _grenade); + _light setLightBrightness 200; + _light setLightAmbient [1,1,1]; + _light setLightColor [1,1,1]; + _light setLightDayLight true; - [FUNC(flashbangEffectStages), 0, [EFFECT_STAGE_DELETELIGHT, (time + (0.1)), _light]] call CBA_fnc_addPerFrameHandler; + //Delete the light after 0.1 seconds + [{ + PARAMS_1(_light); + deleteVehicle _light; + }, [_light], 0.1, 0] call EFUNC(common,waitAndExecute); - // blind player - if (_strength > 0.1) then { - GVAR(flashbangPPEffectCC) ppEffectEnable true; - GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,(0.8 + _strength) min 1,[1,1,1,0],[0,0,0,1],[0,0,0,0]]; - GVAR(flashbangPPEffectCC) ppEffectCommit 0.01; + // blind player + if (_strength > 0.1) then { + GVAR(flashbangPPEffectCC) ppEffectEnable true; + GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,(0.8 + _strength) min 1,[1,1,1,0],[0,0,0,1],[0,0,0,0]]; + GVAR(flashbangPPEffectCC) ppEffectCommit 0.01; - [FUNC(flashbangEffectStages), 0, [EFFECT_STAGE_PARTIALRECOVERY, (time + (7 * _strength)), _strength]] call CBA_fnc_addPerFrameHandler; - [FUNC(flashbangEffectStages), 0, [ EFFECT_STAGE_FULLRECOVERY, (time + (17 * _strength))]] call CBA_fnc_addPerFrameHandler; - }; + //PARTIALRECOVERY - start decreasing effect over time + [{ + PARAMS_1(_strength); + GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,0,[1,1,1,0],[0,0,0,1],[0,0,0,0]]; + GVAR(flashbangPPEffectCC) ppEffectCommit (10 * _strength); + }, [_strength], (7 * _strength), 0] call EFUNC(common,waitAndExecute); + + //FULLRECOVERY - end effect + [{ + GVAR(flashbangPPEffectCC) ppEffectEnable false; + }, [], (17 * _strength), 0] call EFUNC(common,waitAndExecute); + }; + }; }; - }; } forEach _affected; diff --git a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf index aec10301ab..a83c81e660 100644 --- a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf +++ b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf @@ -1,18 +1,25 @@ -//Waits for the grenade fuze to trigger and 'explode' - +/* + * Author: commy2 + * Waits for the flashbang grenade fuze to trigger and 'explode' + * + * Arguments: + * 0: projectile - Flashbang Grenade + * + * Return Value: + * Nothing + * + * Example: + * [theFlashbang] call ace_grenades_fnc_flashbangThrownFuze + * + * Public: No + */ #include "script_component.hpp" -_projectile = (_this select 0) select 0; -_waitUntilTime = (_this select 0) select 1; - -if (_waitUntilTime > time) exitWith {}; - -//remove frameEH -[(_this select 1)] call cba_fnc_removePerFrameHandler; +PARAMS_1(_projectile); if (alive _projectile) then { - playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400]; - - _affected = _projectile nearEntities ["CAManBase", 50]; - ["flashbangExplosion", _affected, [_projectile]] call EFUNC(common,targetEvent); + playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400]; + + _affected = _projectile nearEntities ["CAManBase", 50]; + ["flashbangExplosion", _affected, [_projectile]] call EFUNC(common,targetEvent); }; diff --git a/addons/grenades/functions/fnc_nextMode.sqf b/addons/grenades/functions/fnc_nextMode.sqf index da8392b6ab..7663e790f6 100644 --- a/addons/grenades/functions/fnc_nextMode.sqf +++ b/addons/grenades/functions/fnc_nextMode.sqf @@ -1,40 +1,41 @@ /* * Author: commy2 - * * Select the next throwing mode and display message. - * - * Argument: - * Nothing - * - * Return value: + * + * Arguments: * Nothing + * + * Return Value: + * Handeled + * + * Example: + * [] call ace_grenades_fnc_nextMode + * + * Public: No */ - #include "script_component.hpp" - -private ["_mode", "_hint"]; -if (!([ACE_player] call EFUNC(common,canUseWeapon))) exitWith {false}; +private ["_mode", "_hint"]; _mode = missionNamespace getVariable [QGVAR(currentThrowMode), 0]; if (_mode == 4) then { - _mode = 0; + _mode = 0; } else { - _mode = _mode + 1; + _mode = _mode + 1; }; // ROLL GRENADE DOESN'T WORK RIGHT NOW if (_mode == 3) then { - _mode = 4; + _mode = 4; }; _hint = [ - localize "STR_ACE_Grenades_NormalThrow", - localize "STR_ACE_Grenades_HighThrow", - localize "STR_ACE_Grenades_PreciseThrow", - localize "STR_ACE_Grenades_RollGrenade", - localize "STR_ACE_Grenades_DropGrenade" +localize "STR_ACE_Grenades_NormalThrow", +localize "STR_ACE_Grenades_HighThrow", +localize "STR_ACE_Grenades_PreciseThrow", +localize "STR_ACE_Grenades_RollGrenade", +localize "STR_ACE_Grenades_DropGrenade" ] select _mode; [_hint] call EFUNC(common,displayTextStructured); diff --git a/addons/grenades/functions/fnc_throwGrenade.sqf b/addons/grenades/functions/fnc_throwGrenade.sqf index e725ebd426..c7bc09a261 100644 --- a/addons/grenades/functions/fnc_throwGrenade.sqf +++ b/addons/grenades/functions/fnc_throwGrenade.sqf @@ -1,15 +1,24 @@ /* -* Author: commy2 -* -* Adjust the grenades throwing direction and speed to the selected throwing mode. -* -* Argument: -* input from "Fired" eventhandler -* -* Return value: -* Nothing -*/ - + * Author: commy2 + * Adjust the grenades throwing direction and speed to the selected throwing mode. + * + * Arguments: + * 0: unit - Object the event handler is assigned to + * 1: weapon - Fired weapon + * 2: muzzle - Muzzle that was used + * 3: mode - Current mode of the fired weapon + * 4: ammo - Ammo used + * 5: magazine - magazine name which was used + * 6: projectile - Object of the projectile that was shot + * + * Return Value: + * Nothing + * + * Example: + * [clientFiredBIS-XEH] call ace_grenades_fnc_throwGrenade + * + * Public: No + */ #include "script_component.hpp" private ["_unit", "_weapon", "_projectile", "_mode", "_fuzeTime"]; @@ -24,38 +33,38 @@ if (_weapon != "Throw") exitWith {}; _mode = missionNamespace getVariable [QGVAR(currentThrowMode), 0]; if (_mode != 0) then { - private "_velocity"; + private "_velocity"; - _velocity = velocity _projectile; + _velocity = velocity _projectile; - switch (_mode) do { - //high throw - case 1 : { - _velocity = [ - 0.5 * (_velocity select 0), - 0.5 * (_velocity select 1), - [0, 0, 0] distance (_velocity vectorMultiply 0.5) - ]; + switch (_mode) do { + //high throw + case 1 : { + _velocity = [ + 0.5 * (_velocity select 0), + 0.5 * (_velocity select 1), + [0, 0, 0] distance (_velocity vectorMultiply 0.5) + ]; + }; + //precise throw + case 2 : { + _velocity = (_unit weaponDirection _weapon) vectorMultiply (vectorMagnitude _velocity); + }; + //roll grande + case 3 : { + //@todo + }; + //drop grenade + case 4 : { + _velocity = [0, 0, 0]; + }; }; - //precise throw - case 2 : { - _velocity = (_unit weaponDirection _weapon) vectorMultiply (vectorMagnitude _velocity); - }; - //roll grande - case 3 : { - //@todo - }; - //drop grenade - case 4 : { - _velocity = [0, 0, 0]; - }; - }; - _projectile setVelocity _velocity; + _projectile setVelocity _velocity; }; if (typeOf _projectile == "ACE_G_M84") then { - _fuzeTime = getNumber (configFile >> "CfgAmmo" >> typeOf _projectile >> "fuseDistance"); - // _fuzeTime = getNumber (configFile >> "CfgAmmo" >> typeOf _projectile >> "explosionTime"); //@toDo pretty sure this should be explosionTime not fuseDistance - [FUNC(flashbangThrownFuze), 0, [_projectile, (time + _fuzeTime)]] call CBA_fnc_addPerFrameHandler; + _fuzeTime = getNumber (configFile >> "CfgAmmo" >> typeOf _projectile >> "fuseDistance"); + // _fuzeTime = getNumber (configFile >> "CfgAmmo" >> typeOf _projectile >> "explosionTime"); //@toDo pretty sure this should be explosionTime not fuseDistance + [FUNC(flashbangThrownFuze), [_projectile], _fuzeTime, 0] call EFUNC(common,waitAndExecute); }; From 983b44c02a9add3fdd5e2a3e0888d6ae86a971a7 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 07:51:13 +0100 Subject: [PATCH 129/211] air burst ammo PFH --- addons/fcs/XEH_preInit.sqf | 1 + addons/fcs/functions/fnc_firedEH.sqf | 26 ++++++------------- .../fnc_handleAirBurstAmmunitionPFH.sqf | 21 +++++++++++++++ 3 files changed, 30 insertions(+), 18 deletions(-) create mode 100644 addons/fcs/functions/fnc_handleAirBurstAmmunitionPFH.sqf diff --git a/addons/fcs/XEH_preInit.sqf b/addons/fcs/XEH_preInit.sqf index 18729ca54f..78a2fd091c 100644 --- a/addons/fcs/XEH_preInit.sqf +++ b/addons/fcs/XEH_preInit.sqf @@ -9,6 +9,7 @@ PREP(canUseRangefinder); PREP(firedEH); PREP(getAngle); PREP(getRange); +PREP(handleAirBurstAmmunitionPFH); PREP(keyDown); PREP(keyUp); PREP(reset); diff --git a/addons/fcs/functions/fnc_firedEH.sqf b/addons/fcs/functions/fnc_firedEH.sqf index 22371a26f4..38e2c90f3c 100644 --- a/addons/fcs/functions/fnc_firedEH.sqf +++ b/addons/fcs/functions/fnc_firedEH.sqf @@ -45,26 +45,16 @@ _offset = 0; [_projectile, (_vehicle getVariable format ["%1_%2", QGVAR(Azimuth), _turret]), _offset, 0] call EFUNC(common,changeProjectileDirection); // Air burst missile -// may need to get rewritten -if (getNumber (configFile >> "CfgAmmo" >> _ammo >> "ACE_Airburst") == 1) then { - _this spawn { - _vehicle = _this select 0; - _projectile = _this select 6; - _distance = _vehicle getVariable [format ["%1_%2", QGVAR(Distance), _turret], currentZeroing _vehicle]; +// handle locally only +if (!local _gunner) exitWith {}; - if (_distance < 50) exitWith {}; - if (_distance > 1500) exitWith {}; +if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(Airburst)) == 1) then { + private "_zeroing"; + _zeroing = _vehicle getVariable [format ["%1_%2", QGVAR(Distance), _turret], currentZeroing _vehicle]; - waitUntil {_projectile distance _vehicle > _distance || {!alive _projectile}}; - if (!alive _projectile) exitWith {}; + if (_zeroing < 50) exitWith {}; + if (_zeroing > 1500) exitWith {}; - _position = getPosATL _projectile; - - _subMunition = createVehicle ["ACE_B_35mm_ABM_Helper", _position, [], 0, "FLY"]; - _subMunition setPosATL _position; - _subMunition setVelocity [0, 0, -10]; - - deleteVehicle _projectile; - }; + [FUNC(handleAirBurstAmmunitionPFH), 0, [_vehicle, _projectile, _zeroing]] call CBA_fnc_addPerFrameHandler; }; diff --git a/addons/fcs/functions/fnc_handleAirBurstAmmunitionPFH.sqf b/addons/fcs/functions/fnc_handleAirBurstAmmunitionPFH.sqf new file mode 100644 index 0000000000..7e8480ce18 --- /dev/null +++ b/addons/fcs/functions/fnc_handleAirBurstAmmunitionPFH.sqf @@ -0,0 +1,21 @@ +// by commy2 + +_vehicle = _this select 0 select 0; +_projectile = _this select 0 select 1; +_zeroing = _this select 0 select 2; + +if (isNull _projectile || {!alive _projectile}) exitWith { + [_this select 1] call CBA_fnc_removePerFrameHandler; +}; + +if (_projectile distance _vehicle < _zeroing) exitWith {}; + +_position = getPosATL _projectile; + +_subMunition = createVehicle ["ACE_B_35mm_ABM_Helper", _position, [], 0, "FLY"]; +_subMunition setPosATL _position; +_subMunition setVelocity [0, 0, -10]; + +deleteVehicle _projectile; + +[_this select 1] call CBA_fnc_removePerFrameHandler; From 19cf05314e48ab9f9add73b9c0a99b3ff7012fed Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 08:09:52 +0100 Subject: [PATCH 130/211] fcs reset was still broken --- addons/fcs/config.cpp | 2 +- addons/fcs/functions/fnc_reset.sqf | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index 3c7303d68b..20ae063c70 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {ace_common, ace_interaction}; - author[] = {"KoffeinFlummi","BadGuy (simon84)"}; + author[] = {"KoffeinFlummi","BadGuy (simon84)","commy2"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; }; diff --git a/addons/fcs/functions/fnc_reset.sqf b/addons/fcs/functions/fnc_reset.sqf index f2b434ab34..a23a759fa3 100644 --- a/addons/fcs/functions/fnc_reset.sqf +++ b/addons/fcs/functions/fnc_reset.sqf @@ -12,13 +12,14 @@ #include "script_component.hpp" -private "_vehicle"; +private ["_vehicle", "_turret"]; _vehicle = _this select 0; +_turret = _this select 1; -[_vehicle, QGVAR(Distance), 0] call EFUNC(common,setVariablePublic); -[_vehicle, QGVAR(Magazines), []] call EFUNC(common,setVariablePublic); -[_vehicle, QGVAR(Elevation), 0] call EFUNC(common,setVariablePublic); -[_vehicle, QGVAR(Azimuth), 0] call EFUNC(common,setVariablePublic); +[_vehicle, format ["%1_%2", QGVAR(Distance), _turret], 0] call EFUNC(common,setVariablePublic); +[_vehicle, format ["%1_%2", QGVAR(Magazines), _turret], []] call EFUNC(common,setVariablePublic); +[_vehicle, format ["%1_%2", QGVAR(Elevation), _turret], 0] call EFUNC(common,setVariablePublic); +[_vehicle, format ["%1_%2", QGVAR(Azimuth), _turret], 0] call EFUNC(common,setVariablePublic); [localize "STR_ACE_FCS_HasBeenReset"] call EFUNC(common,displayTextStructured); From e72742da3112f655642a1a177fd94d2b635aba69 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 08:26:30 +0100 Subject: [PATCH 131/211] add macros for transport cargo config --- addons/flashsuppressors/CfgVehicles.hpp | 5 ----- addons/magazines/CfgVehicles.hpp | 5 ----- addons/main/script_macros.hpp | 16 ++++++++++++++++ 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/addons/flashsuppressors/CfgVehicles.hpp b/addons/flashsuppressors/CfgVehicles.hpp index 40dc505d64..a973518b91 100644 --- a/addons/flashsuppressors/CfgVehicles.hpp +++ b/addons/flashsuppressors/CfgVehicles.hpp @@ -1,9 +1,4 @@ -#define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ - name = #ITEM; \ - count = COUNT; \ -} - class CfgVehicles { class NATO_Box_Base; class Box_NATO_Support_F: NATO_Box_Base { diff --git a/addons/magazines/CfgVehicles.hpp b/addons/magazines/CfgVehicles.hpp index b78eb71abc..a7c2654d71 100644 --- a/addons/magazines/CfgVehicles.hpp +++ b/addons/magazines/CfgVehicles.hpp @@ -1,9 +1,4 @@ -#define MACRO_ADDMAGAZINE(MAGAZINE,COUNT) class _xx_##MAGAZINE { \ - magazine = #MAGAZINE; \ - count = COUNT; \ -} - class CfgVehicles { class NATO_Box_Base; class Box_NATO_Wps_F: NATO_Box_Base { diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index 3b59e8b373..cc589aac3e 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -199,6 +199,22 @@ #define GETEGVAR(var1,var2,var3) GETMVAR(EGVAR(var1,var2),var3) +#define MACRO_ADDWEAPON(WEAPON,COUNT) class _xx_##WEAPON { \ + weapon = #WEAPON; \ + count = COUNT; \ +} + +#define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ + name = #ITEM; \ + count = COUNT; \ +} + +#define MACRO_ADDMAGAZINE(MAGAZINE,COUNT) class _xx_##MAGAZINE { \ + magazine = #MAGAZINE; \ + count = COUNT; \ +} + + #ifdef DISABLE_COMPILE_CACHE #define PREP(fncName) DFUNC(fncName) = compile preprocessFileLineNumbers QUOTE(PATHTOF(functions\DOUBLES(fnc,fncName).sqf)) #else From 20f161a9da1f16447708cace8e1232046ee189a1 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 09:36:35 +0100 Subject: [PATCH 132/211] aircraft, remove redundant config entries, documentation --- addons/aircraft/CfgAmmo.hpp | 285 +------------------- addons/aircraft/config/config.cpp | 13 + addons/aircraft/config/script_component.hpp | 1 + 3 files changed, 27 insertions(+), 272 deletions(-) create mode 100644 addons/aircraft/config/config.cpp create mode 100644 addons/aircraft/config/script_component.hpp diff --git a/addons/aircraft/CfgAmmo.hpp b/addons/aircraft/CfgAmmo.hpp index 2c9d6a91e6..177753223f 100644 --- a/addons/aircraft/CfgAmmo.hpp +++ b/addons/aircraft/CfgAmmo.hpp @@ -1,302 +1,43 @@ class CfgAmmo { - class BulletBase; - class B_20mm: BulletBase { - deflecting = 3; - hit = 100; - indirectHit = 10; - indirectHitRange = 2; - model = "\A3\Weapons_f\Data\bullettracer\tracer_red"; - }; - + // adjust minigun caliber and deflection to other ammo class SubmunitionBullet; class B_65x39_Minigun_Caseless: SubmunitionBullet { - hit = 10; - indirectHit = 0; - indirectHitRange = 0; caliber = 1; - deflecting = 5; - typicalSpeed = 850; + deflecting = 15; }; class B_762x51_Minigun_Tracer_Red: SubmunitionBullet { - hit = 12; - indirectHit = 0; - indirectHitRange = 0; - model = "\A3\Weapons_f\Data\bullettracer\tracer_red"; caliber = 1.6; - deflecting = 5; - typicalSpeed = 850; - }; - - class M_Titan_AA; - class M_Zephyr: M_Titan_AA { - proxyShape = "\A3\Weapons_F\Ammo\Missile_AA_02_F.p3d"; - model = "\A3\Weapons_F\Ammo\Missile_AA_02_fly_F.p3d"; - airFriction = 0.078; - sideAirFriction = 0.18; - maneuvrability = 24; - class CamShakeFire {}; - class CamShakePlayerFire {}; - }; - - class M_Zephyr_Mi06: M_Zephyr { - maverickWeaponIndexOffset = 6; - }; - - class MissileBase; - class M_Air_AA: MissileBase { - model = "\A3\Weapons_F\Ammo\Missile_AT_02_fly_F"; - proxyShape = "\A3\Weapons_F\Ammo\Missile_AT_02_F"; - hit = 280; - indirectHit = 85; - indirectHitRange = 10; - maneuvrability = 27; - simulationStep = 0.002; - airLock = 1; - irLock = 1; - cost = 1500; - //maxSpeed = 2400; - timeToLive = 40; - airFriction = 0.05; - sideAirFriction = 0.1; - trackOversteer = 1; - trackLead = 1; - initTime = 0; - thrustTime = 12; - thrust = 340; - fuseDistance = 500; - weaponLockSystem = "2 + 16"; - maxControlRange = 8000; - class CamShakeExplode {}; - class CamShakeHit {}; - class CamShakeFire {}; - class CamShakePlayerFire {}; - }; - - class Missile_AA_04_F: MissileBase { - hit = 800; - indirectHit = 60; - indirectHitRange = 12; - airLock = 2; - irLock = 1; - laserLock = 0; - nvLock = 0; - weaponLockSystem = "2 + 16"; - cmimmunity = 0.8; - initTime = 0; - thrust = 380; - thrustTime = 9.5; - airFriction = 0.04; - sideAirFriction = 0.08; - //maxSpeed = 2600; - maneuvrability = 14; - simulationStep = 0.002; - fuseDistance = 500; - timeToLive = 19; - trackLead = 1; - trackOversteer = 1; + deflecting = 15; }; + // also adjust tracer, "muh lightshow"; also adjust splash damage radius + class BulletBase; class Gatling_30mm_HE_Plane_CAS_01_F: BulletBase { - model = "\A3\Weapons_f\Data\bullettracer\tracer_red.p3d"; - cost = 20; hit = 80; indirectHit = 12; - indirectHitRange = 3; + indirectHitRange = 3; //2; caliber = 1.4; - explosive = 0.6; - airlock = 1; deflecting = 3; - airFriction = -0.00042; - typicalSpeed = 960; - visibleFire = 32; - audibleFire = 32; - visibleFireTime = 3; fuseDistance = 3; - tracerScale = 2.5; tracerStartTime = 0.02; - tracerEndTime = 4.7; - multiSoundHit[] = {"soundHit1",0.2,"soundHit2",0.2,"soundHit3",0.2,"soundHit4",0.1,"soundHit5",0.15,"soundHit6",0.15}; - soundFly[] = {"A3\Sounds_F\weapons\Explosion\cannon_fly",1,1,50}; - explosionSoundEffect = "DefaultExplosion"; - explosionEffects = "ExploAmmoExplosion"; - craterEffects = "ExploAmmoCrater"; - soundHit1[] = {"A3\Sounds_F\weapons\Explosion\gr_explosion_1",3.16228,1,1600}; - soundHit2[] = {"A3\Sounds_F\weapons\Explosion\gr_explosion_2",3.16228,1,1600}; - soundHit3[] = {"A3\Sounds_F\weapons\Explosion\gr_explosion_3",3.16228,1,1600}; - soundHit4[] = {"A3\Sounds_F\weapons\Explosion\gr_explosion_4",3.16228,1,1600}; - soundHit5[] = {"A3\Sounds_F\weapons\Explosion\gr_explosion_5",3.16228,1,1600}; - soundHit6[] = {"A3\Sounds_F\weapons\Explosion\gr_explosion_6",3.16228,1,1600}; - class CamShakeExplode {}; - class CamShakeHit {}; - class CamShakeFire {}; - class CamShakePlayerFire {}; }; + + // helper projectiles to simulate a rof > fps class ACE_Gatling_30mm_HE_Plane_CAS_01_Deploy: Gatling_30mm_HE_Plane_CAS_01_F { simulation = "shotSubmunitions"; triggerTime = 0; submunitionAmmo = "ACE_Gatling_30mm_HE_Plane_CAS_01_Sub"; submunitionConeType[] = {"custom", {{0,0}, {0,0}, {0,0}} }; }; - class ACE_Gatling_30mm_HE_Plane_CAS_01_Sub: Gatling_30mm_HE_Plane_CAS_01_F { - }; + class ACE_Gatling_30mm_HE_Plane_CAS_01_Sub: Gatling_30mm_HE_Plane_CAS_01_F {}; + + // adjust damage and splash damage, closer to bluefor gatling with same caliber class Cannon_30mm_HE_Plane_CAS_02_F: Gatling_30mm_HE_Plane_CAS_01_F { - model = "\A3\Weapons_f\Data\bullettracer\tracer_green.p3d"; - hit = 70; - indirectHit = 11; + hit = 70; //40; + indirectHit = 11; //14; indirectHitRange = 3; - caliber = 2; - explosive = 0.6; }; - - class Missile_AGM_02_F: MissileBase { - model = "\A3\Weapons_F_EPC\Ammo\Missile_AGM_02_fly_F.p3d"; - proxyShape = "\A3\Weapons_F_EPC\Ammo\Missile_AGM_02_F.p3d"; - maverickWeaponIndexOffset = 2; - cost = 1500; - hit = 2100; - indirectHit = 85; - indirectHitRange = 8; - manualControl = 0; - maxControlRange = 8000; - airLock = 0; - irLock = 1; - laserLock = 0; - nvLock = 0; - weaponLockSystem = "2 + 16"; - cmimmunity = 0.8; - initTime = 0; - thrust = 240; - thrustTime = 5; - airFriction = 0.05; - sideAirFriction = 0.1; - maxSpeed = 828; - maneuvrability = 27; - simulationStep = 0.002; - fuseDistance = 500; - timeToLive = 40; - trackLead = 1; - trackOversteer = 1; - craterEffects = "AAMissileCrater"; - effectsMissile = "missile3"; - explosionEffects = "AAMissileExplosion"; - muzzleEffect = "BIS_fnc_effectFiredHeliRocket"; - whistleDist = 20; - class CamShakeExplode {}; - class CamShakeHit {}; - class CamShakeFire {}; - class CamShakePlayerFire {}; - }; - - class LaserBombCore; - class Bomb_04_F: LaserBombCore { - model = "\A3\Weapons_F_EPC\Ammo\Bomb_04_fly_F.p3d"; - proxyShape = "\A3\Weapons_F_EPC\Ammo\Bomb_04_F.p3d"; - maverickWeaponIndexOffset = 8; - hit = 6000; - indirectHit = 1400; - indirectHitRange = 15; - nvLock = 1; - weaponLockSystem = "2 + 16 + 4"; - maneuvrability = 20; - fuseDistance = 35; - trackLead = 0.95; - trackOversteer = 1; - craterEffects = "BombCrater"; - explosionEffects = "BombExplosion"; - explosionSoundEffect = "DefaultExplosion"; - explosionTime = 2; - multiSoundHit[] = {"soundHit1",0.2,"soundHit2",0.2,"soundHit3",0.2,"soundHit4",0.2,"soundHit5",0.2}; - soundHit1[] = {"\A3\Sounds_F\weapons\Explosion\expl_big_1",2.51189,1,2400}; - soundHit2[] = {"\A3\Sounds_F\weapons\Explosion\expl_big_2",2.51189,1,2400}; - soundHit3[] = {"\A3\Sounds_F\weapons\Explosion\expl_big_3",2.51189,1,2400}; - soundHit4[] = {"\A3\Sounds_F\weapons\Explosion\expl_shell_1",2.51189,1,2400}; - soundHit5[] = {"\A3\Sounds_F\weapons\Explosion\expl_shell_2",2.51189,1,2400}; - whistleDist = 24; - }; - - class Rocket_04_HE_F: MissileBase { - model = "\A3\Weapons_F_EPC\Ammo\Rocket_04_HE_fly_F.p3d"; - proxyShape = "\A3\Weapons_F_EPC\Ammo\Rocket_04_HE_F.p3d"; - maverickWeaponIndexOffset = 12; - cost = 500; - hit = 210; - indirectHit = 55; - indirectHitRange = 15; - manualControl = 0; - maxControlRange = 8000; - airLock = 0; - irLock = 1; - laserLock = 0; - nvLock = 0; - weaponLockSystem = 0; - cmimmunity = 1; - initTime = 0.002; - thrust = 1600; - thrustTime = 0.7; - airFriction = 0.0046; - sideAirFriction = 0.005; - maxSpeed = 610; - maneuvrability = 0; - fuseDistance = 50; - timeToLive = 60; - effectsMissileInit = "MissileDAR1"; - whistleDist = 30; - class CamShakeExplode {}; - class CamShakeHit {}; - class CamShakeFire {}; - class CamShakePlayerFire {}; - }; - - class Rocket_04_AP_F: Rocket_04_HE_F { - model = "\A3\Weapons_F_EPC\Ammo\Rocket_04_AP_fly_F.p3d"; - proxyShape = "\A3\Weapons_F_EPC\Ammo\Rocket_04_AP_F.p3d"; - maverickWeaponIndexOffset = 19; - hit = 400; - indirectHit = 20; - indirectHitRange = 10; - }; - - class Missile_AA_03_F: Missile_AA_04_F { - model = "\A3\Weapons_F_EPC\Ammo\Missile_AA_03_fly_F.p3d"; - proxyShape = "\A3\Weapons_F_EPC\Ammo\Missile_AA_03_F.p3d"; - maverickWeaponIndexOffset = 0; - hit = 900; - indirectHit = 50; - indirectHitRange = 15; - }; - - class Missile_AGM_01_F: Missile_AGM_02_F { - model = "\A3\Weapons_F_EPC\Ammo\Missile_AGM_01_fly_F.p3d"; - proxyShape = "\A3\Weapons_F_EPC\Ammo\Missile_AGM_01_F.p3d"; - maverickWeaponIndexOffset = 2; - hit = 2200; - indirectHit = 90; - indirectHitRange = 10; - }; - - class Bomb_03_F: Bomb_04_F { - model = "\A3\Weapons_F_EPC\Ammo\Bomb_03_F.p3d"; - proxyShape = "\A3\Weapons_F_EPC\Ammo\Bomb_03_F.p3d"; - maverickWeaponIndexOffset = 6; - hit = 6400; - indirectHit = 1400; - indirectHitRange = 16; - }; - - class Rocket_03_HE_F: Rocket_04_HE_F { - model = "\A3\Weapons_F_EPC\Ammo\Rocket_03_HE_fly_F.p3d"; - proxyShape = "\A3\Weapons_F_EPC\Ammo\Rocket_03_HE_F.p3d"; - maverickWeaponIndexOffset = 8; - }; - - class Rocket_03_AP_F: Rocket_04_AP_F { - model = "\A3\Weapons_F_EPC\Ammo\Rocket_03_AP_fly_F.p3d"; - proxyShape = "\A3\Weapons_F_EPC\Ammo\Rocket_03_AP_F.p3d"; - maverickWeaponIndexOffset = 28; - }; - - class RocketBase; }; diff --git a/addons/aircraft/config/config.cpp b/addons/aircraft/config/config.cpp new file mode 100644 index 0000000000..7ac4cf3bad --- /dev/null +++ b/addons/aircraft/config/config.cpp @@ -0,0 +1,13 @@ +#include "script_component.hpp" + +class CfgPatches { + class DOUBLES(ADDON,heli1) { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {QUOTE(ADDON)}; + author[] = {"commy2"}; + authorUrl = "https://github.com/commy2/"; + VERSION_CONFIG; + }; +}; diff --git a/addons/aircraft/config/script_component.hpp b/addons/aircraft/config/script_component.hpp new file mode 100644 index 0000000000..7368add67c --- /dev/null +++ b/addons/aircraft/config/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\aircraft\script_component.hpp" \ No newline at end of file From b1a1c855d99ffa1cee9bb6bc314a87dd9e78aee1 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 09:47:03 +0100 Subject: [PATCH 133/211] fix wrong class inheritance in laser selfdesignate --- addons/laser_selfdesignate/CfgVehicles.hpp | 60 ++++++++++------------ 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/addons/laser_selfdesignate/CfgVehicles.hpp b/addons/laser_selfdesignate/CfgVehicles.hpp index eed000544c..cb9d5a094c 100644 --- a/addons/laser_selfdesignate/CfgVehicles.hpp +++ b/addons/laser_selfdesignate/CfgVehicles.hpp @@ -1,35 +1,29 @@ class CfgVehicles { - class AllVehicles; - - class Air: AllVehicles { - class Turrets; - }; - class Helicopter: Air - { - class Turrets: Turrets { - class MainTurret; - }; - // TODO: move these to a different HUD addon - // commanderCanSee = 2+32; - // gunnerCanSee = 2+32; - // driverCanSee = 2+32; + class AllVehicles; + class Air: AllVehicles { + class Turrets; + }; - }; - class Helicopter_Base_F: Helicopter { - class Turrets: Turrets { - class MainTurret: MainTurret {}; - }; - }; - class Heli_Attack_01_base_F: Helicopter_Base_F { - class Turrets: Turrets { - class MainTurret: MainTurret {}; - }; - }; - class B_Heli_Attack_01_F: Heli_Attack_01_base_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - stabilizedInAxes = 4; // This stablizes the turret a bit more for laser designation - }; - }; - }; -}; \ No newline at end of file + class Helicopter: Air { + class Turrets { + class MainTurret; + }; + + // TODO: move these to a different HUD addon + // commanderCanSee = 2+32; + // gunnerCanSee = 2+32; + // driverCanSee = 2+32; + + }; + class Helicopter_Base_F: Helicopter {}; + + class Heli_Attack_01_base_F: Helicopter_Base_F {}; + + class B_Heli_Attack_01_F: Heli_Attack_01_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + stabilizedInAxes = 4; // This stablizes the turret a bit more for laser designation + }; + }; + }; +}; From 3d4c43c6134e2058271e6cecf0399509a7e8df9c Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 09:50:26 +0100 Subject: [PATCH 134/211] replace tabs with spaces --- .../laser_selfdesignate/CfgEventhandlers.hpp | 32 +++++++-------- addons/laser_selfdesignate/CfgUI.hpp | 40 +++++++++---------- addons/laser_selfdesignate/CfgVehicles.hpp | 1 + addons/laser_selfdesignate/CfgWeapons.hpp | 19 ++++----- addons/laser_selfdesignate/config.cpp | 16 ++++---- 5 files changed, 55 insertions(+), 53 deletions(-) diff --git a/addons/laser_selfdesignate/CfgEventhandlers.hpp b/addons/laser_selfdesignate/CfgEventhandlers.hpp index 74deb4bcf6..ea33d05bcb 100644 --- a/addons/laser_selfdesignate/CfgEventhandlers.hpp +++ b/addons/laser_selfdesignate/CfgEventhandlers.hpp @@ -1,27 +1,27 @@ class Extended_PreInit_EventHandlers { - class ADDON { - init = QUOTE(call COMPILE_FILE(XEH_pre_init)); - }; + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_pre_init)); + }; }; class Extended_PostInit_EventHandlers { - class ADDON { - init = QUOTE(call COMPILE_FILE(XEH_post_init)); - }; + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_post_init)); + }; }; class Extended_GetIn_EventHandlers { - class B_Heli_Attack_01_F { - class ADDON { - getIn = QUOTE(call FUNC(onGetin)); - }; - }; + class B_Heli_Attack_01_F { + class ADDON { + getIn = QUOTE(call FUNC(onGetin)); + }; + }; }; class Extended_GetOut_EventHandlers { - class B_Heli_Attack_01_F { - class ADDON { - getOut = QUOTE(call FUNC(onGetout)); - }; - }; + class B_Heli_Attack_01_F { + class ADDON { + getOut = QUOTE(call FUNC(onGetout)); + }; + }; }; diff --git a/addons/laser_selfdesignate/CfgUI.hpp b/addons/laser_selfdesignate/CfgUI.hpp index 11fab908d7..e8823e04f8 100644 --- a/addons/laser_selfdesignate/CfgUI.hpp +++ b/addons/laser_selfdesignate/CfgUI.hpp @@ -4,29 +4,29 @@ class RscControlsGroupNoScrollbars; /* This disables air radar. We need to make this a seperate HUD addon class RscInGameUI { - class RscUnitInfo - { - class CA_Radar: RscControlsGroupNoScrollbars - { - class controls - { - class CA_RadarBackground: RscPicture { - colorText[] = {0,0,0,0}; - text = ""; - }; - class CA_RadarIcon: RscPicture { - colorText[] = {0,0,0,0}; - }; - class CA_Heading: RscText { - colorText[] = {0,0,0,0}; - }; - }; - }; - }; + class RscUnitInfo + { + class CA_Radar: RscControlsGroupNoScrollbars + { + class controls + { + class CA_RadarBackground: RscPicture { + colorText[] = {0,0,0,0}; + text = ""; + }; + class CA_RadarIcon: RscPicture { + colorText[] = {0,0,0,0}; + }; + class CA_Heading: RscText { + colorText[] = {0,0,0,0}; + }; + }; + }; + }; }; class CfgInGameUI { - + }; */ \ No newline at end of file diff --git a/addons/laser_selfdesignate/CfgVehicles.hpp b/addons/laser_selfdesignate/CfgVehicles.hpp index cb9d5a094c..5b2fdd7d28 100644 --- a/addons/laser_selfdesignate/CfgVehicles.hpp +++ b/addons/laser_selfdesignate/CfgVehicles.hpp @@ -15,6 +15,7 @@ class CfgVehicles { // driverCanSee = 2+32; }; + class Helicopter_Base_F: Helicopter {}; class Heli_Attack_01_base_F: Helicopter_Base_F {}; diff --git a/addons/laser_selfdesignate/CfgWeapons.hpp b/addons/laser_selfdesignate/CfgWeapons.hpp index a966144b10..a62974ce40 100644 --- a/addons/laser_selfdesignate/CfgWeapons.hpp +++ b/addons/laser_selfdesignate/CfgWeapons.hpp @@ -1,10 +1,11 @@ class CfgWeapons { - class LauncherCore; - - class RocketPods: LauncherCore { - canLock = 1; // Disable locking unless newb mode - }; - class missiles_DAGR: RocketPods { - canLock = 1; // Disable locking unless newb mode - }; -}; \ No newline at end of file + // Disable locking unless newb mode + class LauncherCore; + class RocketPods: LauncherCore { + canLock = 1; + }; + + class missiles_DAGR: RocketPods { + canLock = 1; + }; +}; diff --git a/addons/laser_selfdesignate/config.cpp b/addons/laser_selfdesignate/config.cpp index 5452ee4e22..e19e438da0 100644 --- a/addons/laser_selfdesignate/config.cpp +++ b/addons/laser_selfdesignate/config.cpp @@ -1,17 +1,17 @@ #include "script_component.hpp" class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = { "ace_main", "ace_laser" }; - version = VERSION; - }; + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_main", "ace_laser"}; + version = VERSION; + }; }; #include "CfgUI.hpp" #include "CfgEventhandlers.hpp" #include "CfgWeapons.hpp" -#include "CfgVehicles.hpp" \ No newline at end of file +#include "CfgVehicles.hpp" From 06efab0082d8148f358ecd908f12c00448b21e4f Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 10:04:50 +0100 Subject: [PATCH 135/211] fix inheritance, new little bird unarmed base class in 1.38 --- addons/aircraft/CfgVehicles.hpp | 4 +++- addons/fcs/CfgVehicles.hpp | 4 +++- addons/realisticnames/config.cpp | 6 +++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/addons/aircraft/CfgVehicles.hpp b/addons/aircraft/CfgVehicles.hpp index 18be36b9e8..bea27c85ff 100644 --- a/addons/aircraft/CfgVehicles.hpp +++ b/addons/aircraft/CfgVehicles.hpp @@ -55,7 +55,9 @@ class CfgVehicles { }; }; - class B_Heli_Light_01_F: Heli_Light_01_base_F { + class Heli_Light_01_unarmed_base_F: Heli_Light_01_base_F {}; + + class B_Heli_Light_01_F: Heli_Light_01_unarmed_base_F { /*class Turrets: Turrets { class CopilotTurret: CopilotTurret {}; diff --git a/addons/fcs/CfgVehicles.hpp b/addons/fcs/CfgVehicles.hpp index 16902d9ee0..4cc010f917 100644 --- a/addons/fcs/CfgVehicles.hpp +++ b/addons/fcs/CfgVehicles.hpp @@ -432,7 +432,9 @@ class CfgVehicles { };*/ }; - class B_Heli_Light_01_F: Heli_Light_01_base_F { + class Heli_Light_01_unarmed_base_F: Heli_Light_01_base_F {}; + + class B_Heli_Light_01_F: Heli_Light_01_unarmed_base_F { /*class Turrets: Turrets { class CopilotTurret: CopilotTurret {}; };*/ diff --git a/addons/realisticnames/config.cpp b/addons/realisticnames/config.cpp index 347d0c1b2e..ea1318686b 100644 --- a/addons/realisticnames/config.cpp +++ b/addons/realisticnames/config.cpp @@ -292,8 +292,8 @@ class CfgVehicles { displayName = "$STR_ACE_RealisticNames_Heli_Attack_01_Name"; }; - class Heli_Light_01_base_F; - class B_Heli_Light_01_F: Heli_Light_01_base_F { + class Heli_Light_01_unarmed_base_F; + class B_Heli_Light_01_F: Heli_Light_01_unarmed_base_F { displayName = "$STR_ACE_RealisticNames_Heli_Light_01_Name"; }; @@ -302,7 +302,7 @@ class CfgVehicles { displayName = "$STR_ACE_RealisticNames_Heli_Light_01_armed_Name"; }; - class Heli_Light_01_civil_base_F: Heli_Light_01_base_F { + class Heli_Light_01_civil_base_F: Heli_Light_01_unarmed_base_F { displayName = "$STR_ACE_RealisticNames_Heli_Light_01_civil_Name"; }; From 8a348b002407f3973d93c155b0fd3656ef77275d Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 10:26:52 +0100 Subject: [PATCH 136/211] aircraft, remove old/redundant mag configs --- addons/aircraft/CfgMagazines.hpp | 193 +------------------------------ 1 file changed, 3 insertions(+), 190 deletions(-) diff --git a/addons/aircraft/CfgMagazines.hpp b/addons/aircraft/CfgMagazines.hpp index 7328eda091..0c306f8f04 100644 --- a/addons/aircraft/CfgMagazines.hpp +++ b/addons/aircraft/CfgMagazines.hpp @@ -1,202 +1,15 @@ class CfgMagazines { + // shoot helper object to tripple rof class VehicleMagazine; - class 24Rnd_PG_missiles; - - class 12Rnd_PG_missiles: 24Rnd_PG_missiles { - count = 12; - displayName = "$STR_A3_CfgMagazines_12Rnd_PG_missiles0"; - displayNameShort = "$STR_A3_CfgMagazines_12Rnd_PG_missiles_dns"; - descriptionShort = "$STR_A3_CfgMagazines_12Rnd_PG_missiles1"; - }; - class 12Rnd_missiles: VehicleMagazine { - scope = 2; - count = 12; - ammo = "M_AT"; - displayName = "$STR_A3_CfgMagazines_24Rnd_PuG_missiles0"; - displayNameShort = "$STR_A3_CfgMagazines_24Rnd_PuG_missiles_dns"; - descriptionShort = "$STR_A3_CfgMagazines_24Rnd_PuG_missiles0"; - initSpeed = 44; - maxLeadSpeed = 800; - nameSound = "rockets"; - sound[] = {"A3\sounds_f\weapons\rockets\explosion_missile_01",1,1,1200}; - reloadSound[] = {"",0.000316228,1}; - }; - - //minigun magazines, muzzle velocities and tracercounts - class 200Rnd_65x39_Belt: VehicleMagazine {}; - class 2000Rnd_65x39_Belt: 200Rnd_65x39_Belt {}; - class 2000Rnd_65x39_Belt_Tracer_Red: 2000Rnd_65x39_Belt { - }; - class 2000Rnd_65x39_Belt_Green: 2000Rnd_65x39_Belt {}; - class 2000Rnd_65x39_Belt_Tracer_Green: 2000Rnd_65x39_Belt_Green { - tracersEvery = 1; - }; - class 2000Rnd_65x39_Belt_Yellow: 2000Rnd_65x39_Belt { - tracersEvery = 1; - }; - class 2000Rnd_65x39_Belt_Tracer_Yellow: 2000Rnd_65x39_Belt_Yellow { - tracersEvery = 1; - }; - - class 5000Rnd_762x51_Belt: 2000Rnd_65x39_Belt { - tracersEvery = 1; - count = 5000; - }; - class 5000Rnd_762x51_Yellow_Belt: 5000Rnd_762x51_Belt {}; - class 4000Rnd_762x51_M134 : 5000Rnd_762x51_Belt { - count = 4000; - tracersEvery = 1; - }; - class 2000Rnd_762x51_M134 : 4000Rnd_762x51_M134 { - count = 2000; - tracersEvery = 1; - }; - - class 2Rnd_AAA_missiles: VehicleMagazine { - scope = 2; - displayName = "$STR_A3_CfgMagazines_2Rnd_AAA_missiles0"; - displayNameShort = "$STR_A3_CfgMagazines_2Rnd_AAA_missiles_dns"; - ammo = "M_Air_AA"; - count = 2; - maxLeadSpeed = 950; - nameSound = "missiles"; - }; - class 2Rnd_AAA_missiles_MI02: 2Rnd_AAA_missiles { - ammo = "M_Air_AA_MI02"; - }; - class 4Rnd_AAA_missiles: 2Rnd_AAA_missiles { - displayName = "$STR_A3_CfgMagazines_4Rnd_AAA_missiles0"; - displayNameShort = "$STR_A3_CfgMagazines_4Rnd_AAA_missiles_dns"; - count = 4; - }; - class 4Rnd_AAA_missiles_MI02: 4Rnd_AAA_missiles { - ammo = "M_Air_AA_MI02"; - }; - - class 4Rnd_GAA_missiles: VehicleMagazine { - scope = 2; - displayName = "$STR_A3_CfgMagazines_4Rnd_GAA_missiles0"; - displayNameShort = "$STR_A3_CfgMagazines_4Rnd_GAA_missiles_dns"; - count = 4; - ammo = "M_Zephyr"; - maxLeadSpeed = 950; - nameSound = "missiles"; - }; - - class 300Rnd_20mm_shells: VehicleMagazine { - scope = 2; - displayName = "$STR_A3_CfgMagazines_300Rnd_20mm_shells0"; - displayNameShort = "$STR_A3_CfgMagazines_300Rnd_20mm_shells_dns"; - ammo = "B_20mm"; - count = 300; - deflecting = 3; - maxLeadSpeed = 300; - tracersEvery = 5; - nameSound = "cannon"; - }; - class 1000Rnd_Gatling_30mm_Plane_CAS_01_F: VehicleMagazine { - scope = 2; - displayNameShort = ""; ammo = "ACE_Gatling_30mm_HE_Plane_CAS_01_Deploy"; count = 1170; - //count = 390; - //initSpeed = 3852; - maxLeadSpeed = 300; - nameSound = "cannon"; - tracersEvery = 1; - }; - - class 2Rnd_Missile_AA_04_F: VehicleMagazine { - scope = 2; - displayNameShort = "$STR_A3_CFGMAGAZINES_4RND_AAA_MISSILES_DNS"; - ammo = "Missile_AA_04_F"; - count = 2; - maxLeadSpeed = 220; - nameSound = "missiles"; - }; - class 6Rnd_Missile_AGM_02_F: VehicleMagazine { - scope = 2; - displayNameShort = "$STR_A3_CFGMAGAZINES_38RND_80MM_ROCKETS_DNS"; - ammo = "Missile_AGM_02_F"; - count = 6; - maxLeadSpeed = 450; - nameSound = "missiles"; - }; - class 2Rnd_Missile_AGM_02_F: VehicleMagazine { - scope = 2; - displayNameShort = "$STR_A3_CFGMAGAZINES_38RND_80MM_ROCKETS_DNS"; - ammo = "Missile_AGM_02_F"; - count = 2; - maxLeadSpeed = 450; - nameSound = "missiles"; - }; - - class 7Rnd_Rocket_04_HE_F: VehicleMagazine { - scope = 2; - displayNameShort = "$STR_A3_CFGMAGAZINES_40RND_20MM_G_BELT_DNS"; - ammo = "Rocket_04_HE_F"; - count = 7; - maxLeadSpeed = 200; - nameSound = "rockets"; - }; - class 7Rnd_Rocket_04_AP_F: 7Rnd_Rocket_04_HE_F { - displayNameShort = "$STR_A3_CFGMAGAZINES_TITAN_AP_DNS"; - ammo = "Rocket_04_AP_F"; - }; - - class 4Rnd_Bomb_04_F: VehicleMagazine { - scope = 2; - displayNameShort = "$STR_A3_CFGVEHICLES_BOMB0"; - ammo = "Bomb_04_F"; - count = 4; - maxLeadSpeed = 1000; - nameSound = "cannon"; - }; - - class 500Rnd_Cannon_30mm_Plane_CAS_02_F: 1000Rnd_Gatling_30mm_Plane_CAS_01_F { - displayNameShort = ""; - ammo = "Cannon_30mm_HE_Plane_CAS_02_F"; - count = 500; - }; - - class 2Rnd_Missile_AA_03_F: 2Rnd_Missile_AA_04_F { - displayNameShort = "$STR_A3_CFGMAGAZINES_4RND_AAA_MISSILES_DNS"; - ammo = "Missile_AA_03_F"; - count = 2; - }; - class 4Rnd_Missile_AGM_01_F: 6Rnd_Missile_AGM_02_F { - displayNameShort = "$STR_A3_CFGMAGAZINES_38RND_80MM_ROCKETS_DNS"; - ammo = "Missile_AGM_01_F"; - count = 4; - }; - - class 20Rnd_Rocket_03_HE_F: 7Rnd_Rocket_04_HE_F { - displayNameShort = "$STR_A3_CFGMAGAZINES_40RND_20MM_G_BELT_DNS"; - ammo = "Rocket_03_HE_F"; - count = 20; - }; - class 20Rnd_Rocket_03_AP_F: 7Rnd_Rocket_04_AP_F { - displayNameShort = "$STR_A3_CFGMAGAZINES_TITAN_AP_DNS"; - ammo = "Rocket_03_AP_F"; - count = 20; - }; - - class 2Rnd_Bomb_03_F: 4Rnd_Bomb_04_F { - displayNameShort = "$STR_A3_CFGVEHICLES_BOMB0"; - ammo = "Bomb_03_F"; - count = 2; }; + // an extended magazine for the comanche + class 300Rnd_20mm_shells; class ACE_500Rnd_20mm_shells_Comanche: 300Rnd_20mm_shells { - displayName = "20mm"; - displayNameShort = "20mm"; - ammo = "B_20mm"; count = 500; - deflecting = 3; - initSpeed = 1030; - maxLeadSpeed = 300; - tracersEvery = 5; }; }; From f358d099e62c96bddf7cc3346d62740c0c099b14 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 10:58:10 +0100 Subject: [PATCH 137/211] aircraft config cleanup --- addons/aircraft/CfgVehicles.hpp | 114 +++++++++++--------------------- 1 file changed, 38 insertions(+), 76 deletions(-) diff --git a/addons/aircraft/CfgVehicles.hpp b/addons/aircraft/CfgVehicles.hpp index bea27c85ff..5f419506c0 100644 --- a/addons/aircraft/CfgVehicles.hpp +++ b/addons/aircraft/CfgVehicles.hpp @@ -8,12 +8,9 @@ class CfgVehicles { class NewTurret { class Turrets; }; - class CargoTurret; }; - class Air: AllVehicles { - class AnimationSources; - }; + class Air: AllVehicles {}; class Helicopter: Air { class Turrets { @@ -33,6 +30,7 @@ class CfgVehicles { class Turrets: Turrets { class CopilotTurret; }; + class AnimationSources; }; class Helicopter_Base_H: Helicopter_Base_F { @@ -46,7 +44,7 @@ class CfgVehicles { lockDetectionSystem = 0; incomingMissileDetectionSystem = 16; driverCanEject = 1; - //class MFD {}; + class Turrets: Turrets { class CopilotTurret: CopilotTurret { canEject = 1; @@ -60,11 +58,6 @@ class CfgVehicles { class B_Heli_Light_01_F: Heli_Light_01_unarmed_base_F { /*class Turrets: Turrets { class CopilotTurret: CopilotTurret {}; - - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - class CargoTurret_03: CargoTurret_02 {}; - class CargoTurret_04: CargoTurret_01 {}; };*/ }; @@ -72,7 +65,7 @@ class CfgVehicles { lockDetectionSystem = 0; incomingMissileDetectionSystem = 16; driverCanEject = 1; - //class MFD {}; + class Turrets: Turrets { class CopilotTurret: CopilotTurret { canEject = 1; @@ -86,7 +79,8 @@ class CfgVehicles { driverCanEject = 1; lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; - magazines[] = {"2000Rnd_762x51_Belt_T_Green", "12Rnd_PG_missiles", "168Rnd_CMFlare_Chaff_Magazine"}; + magazines[] = {"2000Rnd_762x51_Belt_T_Green","12Rnd_PG_missiles","168Rnd_CMFlare_Chaff_Magazine"}; + class Turrets: Turrets { class CopilotTurret: CopilotTurret { canEject = 1; @@ -105,36 +99,7 @@ class CfgVehicles { lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; driverCanEject = 1; - //class MFD {}; - class AnimationSources: AnimationSources { - class HitGlass1 { - source = "Hit"; - hitpoint = "HitGlass1"; - raw = 1; - }; - class HitGlass2: HitGlass1 { - hitpoint = "HitGlass2"; - }; - class HitGlass3: HitGlass1 { - hitpoint = "HitGlass3"; - }; - class HitGlass4: HitGlass1 { - hitpoint = "HitGlass4"; - }; - class Gatling { - source = "revolving"; - weapon = "ACE_gatling_20mm_Comanche"; - }; - class Hide { - source = "user"; - animPeriod = 0; - initPhase = 0; - }; - class Muzzle_flash { - source = "ammorandom"; - weapon = "ACE_gatling_20mm_Comanche"; - }; - }; + class Turrets: Turrets { class MainTurret: MainTurret { canEject = 1; @@ -143,6 +108,15 @@ class CfgVehicles { magazines[] = {"ACE_500Rnd_20mm_shells_Comanche","4Rnd_AAA_missiles","24Rnd_PG_missiles"}; }; }; + + class AnimationSources: AnimationSources { + class Gatling { + weapon = "ACE_gatling_20mm_Comanche"; + }; + class Muzzle_flash { + weapon = "ACE_gatling_20mm_Comanche"; + }; + }; }; class B_Heli_Attack_01_F: Heli_Attack_01_base_F {}; @@ -151,6 +125,7 @@ class CfgVehicles { lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; driverCanEject = 1; + class Turrets: Turrets { class MainTurret: MainTurret { canEject = 1; @@ -162,6 +137,7 @@ class CfgVehicles { lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; driverCanEject = 1; + class Turrets: Turrets { class CopilotTurret: CopilotTurret { canEject = 1; @@ -176,6 +152,7 @@ class CfgVehicles { canEject = 1; }; }; + /*class UserActions { class DoorL1_Open { available = 1; @@ -197,16 +174,14 @@ class CfgVehicles { lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; driverCanEject = 1; - //class MFD {}; + class Turrets: Turrets { class CopilotTurret: CopilotTurret { canEject = 1; showHMD = 1; }; - - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; }; + /*class UserActions: UserActions { class DoorL1_Open { available = 1; @@ -248,9 +223,9 @@ class CfgVehicles { lockDetectionSystem = 0; incomingMissileDetectionSystem = 16; driverCanEject = 1; - //class MFD {}; weapons[] = {"M134_minigun","missiles_DAR","CMFlareLauncher"}; magazines[] = {"5000Rnd_762x51_Yellow_Belt","24Rnd_missiles","168Rnd_CMFlare_Chaff_Magazine"}; + class Turrets: Turrets { class MainTurret: MainTurret { canEject = 1; @@ -270,36 +245,37 @@ class CfgVehicles { class I_Heli_light_03_F: I_Heli_light_03_base_F { class Turrets: Turrets { class MainTurret: MainTurret {}; - - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; }; }; - class I_Heli_light_03_unarmed_base_F: I_Heli_light_03_base_F { - //class MFD {}; - }; + class I_Heli_light_03_unarmed_base_F: I_Heli_light_03_base_F {}; + class I_Heli_light_03_unarmed_F: I_Heli_light_03_unarmed_base_F {}; class Plane_CAS_01_base_F: Plane_Base_F { lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; - //class MFD {}; + class Turrets; + #include }; class Plane_CAS_02_base_F: Plane_Base_F { lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; + class Turrets; + #include }; class Plane_Fighter_03_base_F: Plane_Base_F { lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; + class Turrets; + #include }; @@ -310,34 +286,34 @@ class CfgVehicles { }; class UAV_02_base_F: UAV { + weapons[] = {}; + magazines[] = {}; + class Turrets { class MainTurret; }; - weapons[] = {}; - magazines[] = {}; }; class UAV_02_CAS_base_F: UAV_02_base_F { + weapons[] = {}; + magazines[] = {}; + /*class Turrets: Turrets { class MainTurret: MainTurret {}; };*/ - weapons[] = {}; - magazines[] = {}; }; class B_Heli_Transport_03_base_F: Helicopter_Base_H { lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; driverCanEject = 1; + class Turrets: Turrets { class CopilotTurret: CopilotTurret { canEject = 1; }; //class MainTurret: MainTurret {}; class RightDoorGun: MainTurret {}; - - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; }; }; @@ -348,9 +324,6 @@ class CfgVehicles { }; //class MainTurret: MainTurret {}; //class RightDoorGun: MainTurret {}; - - //class CargoTurret_01: CargoTurret {}; - //class CargoTurret_02: CargoTurret_01 {}; }; }; @@ -358,6 +331,7 @@ class CfgVehicles { lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; driverCanEject = 1; + class Turrets: Turrets { class CopilotTurret: CopilotTurret { canEject = 1; @@ -376,15 +350,6 @@ class CfgVehicles { class LoadmasterTurret: LoadmasterTurret { canEject = 1; }; - - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - class CargoTurret_03: CargoTurret_01 {}; - class CargoTurret_04: CargoTurret_01 {}; - class CargoTurret_05: CargoTurret_01 {}; - class CargoTurret_06: CargoTurret_05 {}; - class CargoTurret_07: CargoTurret_05 {}; - class CargoTurret_08: CargoTurret_05 {}; }; }; @@ -396,9 +361,6 @@ class CfgVehicles { class LoadmasterTurret: LoadmasterTurret { canEject = 1; }; - - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; }; }; }; From 075556c233bf32a893830582571dec35178a66c6 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 11:36:54 +0100 Subject: [PATCH 138/211] author aircraft --- addons/aircraft/config.cpp | 2 +- addons/aircraft/config/config.cpp | 13 ------------- addons/aircraft/config/script_component.hpp | 1 - 3 files changed, 1 insertion(+), 15 deletions(-) delete mode 100644 addons/aircraft/config/config.cpp delete mode 100644 addons/aircraft/config/script_component.hpp diff --git a/addons/aircraft/config.cpp b/addons/aircraft/config.cpp index 93e4eb8efe..86135c4bc9 100644 --- a/addons/aircraft/config.cpp +++ b/addons/aircraft/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"KoffeinFlummi","Crusty"}; + author[] = {"KoffeinFlummi","Crusty","commy2"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; }; diff --git a/addons/aircraft/config/config.cpp b/addons/aircraft/config/config.cpp deleted file mode 100644 index 7ac4cf3bad..0000000000 --- a/addons/aircraft/config/config.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class DOUBLES(ADDON,heli1) { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {QUOTE(ADDON)}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2/"; - VERSION_CONFIG; - }; -}; diff --git a/addons/aircraft/config/script_component.hpp b/addons/aircraft/config/script_component.hpp deleted file mode 100644 index 7368add67c..0000000000 --- a/addons/aircraft/config/script_component.hpp +++ /dev/null @@ -1 +0,0 @@ -#include "\z\ace\addons\aircraft\script_component.hpp" \ No newline at end of file From 57f8595e9ccdc8f1afa05b13cea71b41832bfde5 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 12:47:33 +0100 Subject: [PATCH 139/211] clean up aircraft weapons config --- addons/aircraft/CfgWeapons.hpp | 192 ++++++-------------------------- addons/aircraft/stringtable.xml | 14 ++- 2 files changed, 49 insertions(+), 157 deletions(-) diff --git a/addons/aircraft/CfgWeapons.hpp b/addons/aircraft/CfgWeapons.hpp index 321df4a3af..c5f22fc3a2 100644 --- a/addons/aircraft/CfgWeapons.hpp +++ b/addons/aircraft/CfgWeapons.hpp @@ -4,15 +4,10 @@ class Mode_Burst; class Mode_FullAuto; class CfgWeapons { - class MGunCore; - class MGun: MGunCore {}; - - class LMG_RCWS: MGun {}; - // Manual Switching Of Flare Mode class SmokeLauncher; class CMFlareLauncher: SmokeLauncher { - modes[] = {"Single", "Burst", "AIBurst"}; + modes[] = {"Single","Burst","AIBurst"}; class Single: Mode_SemiAuto { reloadTime = 0.1; }; @@ -21,13 +16,15 @@ class CfgWeapons { }; }; + // bigger mag for comanche class CannonCore; class gatling_20mm: CannonCore { - magazines[] = {"2000Rnd_20mm_shells","1000Rnd_20mm_shells","300Rnd_20mm_shells","ACE_500Rnd_20mm_shells_Comanche"}; + magazines[] += {"ACE_500Rnd_20mm_shells_Comanche"}; + // buff gatling rof class manual: CannonCore { - reloadTime = 0.023; - dispersion = 0.006; + reloadTime = 0.023; //0.04; + dispersion = 0.006; //0.0022; }; class close: manual {}; class short: close {}; @@ -36,21 +33,14 @@ class CfgWeapons { }; class ACE_gatling_20mm_Comanche: gatling_20mm { - displayName = "XM301"; - class close: close { - reloadTime = 0.04; - dispersion = 0.0022; - }; - class far: far { - reloadTime = 0.04; - dispersion = 0.0022; - }; + displayName = "$STR_ACE_Aircraft_gatling_20mm_Name"; + class manual: manual { reloadTime = 0.04; dispersion = 0.0022; - displayName = "XM301"; + displayName = "$STR_ACE_Aircraft_gatling_20mm_Name"; }; - class medium: medium { + class close: close { reloadTime = 0.04; dispersion = 0.0022; }; @@ -58,38 +48,53 @@ class CfgWeapons { reloadTime = 0.04; dispersion = 0.0022; }; + class medium: medium { + reloadTime = 0.04; + dispersion = 0.0022; + }; + class far: far { + reloadTime = 0.04; + dispersion = 0.0022; + }; }; + // buff gatling rof + class MGunCore; + class MGun: MGunCore {}; + + class LMG_RCWS: MGun {}; + 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"}; class manual: MGun { - reloadTime = 0.015; - dispersion = 0.006; + reloadTime = 0.075; //0.015; + dispersion = 0.00093; //0.006; }; class close: manual {}; class short: close {}; class medium: close {}; class far: close {}; }; + class LMG_Minigun_heli: LMG_Minigun { showAimCursorInternal = 0; class manual: manual { - reloadTime = 0.015; - dispersion = 0.006; + reloadTime = 0.015; //0.033; Note: This is a way to fast ROF (requires over 60 FPS) @todo + dispersion = 0.006; //0.0087; }; class close: manual {}; class short: close {}; class medium: close {}; class far: close {}; }; + class M134_minigun: MGunCore { class LowROF: Mode_FullAuto { - reloadTime = 0.015; - dispersion = 0.006; + reloadTime = 0.015; //0.03; same as above @todo + dispersion = 0.006; //0.0023; }; class HighROF: LowROF { - reloadTime = 0.015; - dispersion = 0.006; + reloadTime = 0.015; //0.03; + dispersion = 0.006; //0.0023; }; class close: HighROF {}; class short: close {}; @@ -100,19 +105,10 @@ class CfgWeapons { class Gatling_30mm_Plane_CAS_01_F: CannonCore { autoFire = 1; burst = 1; - reloadTime = 0.0154; class LowROF: Mode_FullAuto { autoFire = 0; - //burst = 65; - burst = 22; - //reloadTime = 0.0154; - reloadTime = 0.0462; - //sound[] = {"A3\Sounds_F_epc\weapons\cas_02_cannon",1.77828,1,3800}; - sound[] = {"A3\Sounds_F_EPC\Weapons\gau_03_burst",2.51189,1,4500,{25704,32159}}; - weaponSoundEffect = "DefaultRifle"; - dispersion = 0.005; - soundContinuous = 1; - textureType = "burst"; + burst = 22; //65; + reloadTime = 0.0462; //0.0154; //0.034; multiplier = 3; }; class close: LowROF {}; @@ -121,120 +117,4 @@ class CfgWeapons { class medium: close {}; class far: close {}; }; - - class RocketPods; - class Missile_AA_04_Plane_CAS_01_F: RocketPods { - holdsterAnimValue = 2; - aiRateOfFire = 5; - aiRateOfFireDistance = 500; - autoFire = 0; - cursor = "EmptyCursor"; - cursorAim = "missile"; - nameSound = "MissileLauncher"; - textureType = "fullAuto"; - weaponLockDelay = 3; - minRange = 300; - minRangeProbab = 0.25; - midRange = 2500; - midRangeProbab = 0.9; - maxRange = 9000; - maxRangeProbab = 0.01; - }; - - class MissileLauncher; - class Missile_AGM_02_Plane_CAS_01_F: MissileLauncher { - holdsterAnimValue = 3; - magazineReloadTime = 30; - reloadTime = 0.001; - textureType = "semi"; - weaponLockDelay = 3; - weaponSoundEffect = "DefaultRifle"; - }; - - class Rocket_04_HE_Plane_CAS_01_F: RocketPods { - holdsterAnimValue = 4; - canLock = 1; - modes[] = {"Far_AI","Medium_AI","Close_AI","Burst"}; - weaponLockDelay = 0; - class Far_AI: RocketPods { - canLock = 1; - weaponLockDelay = 0; - showToPlayer = 0; - minRange = 800; - minRangeProbab = 0.31; - midRange = 2500; - midRangeProbab = 0.71; - maxRange = 3200; - maxRangeProbab = 0.1; - burst = 1; - reloadTime = 0.001; - autoFire = 0; - aiRateOfFire = 5; - aiRateOfFireDistance = 500; - }; - class Medium_AI: Far_AI {}; - class Close_AI: Far_AI {}; - class Burst: RocketPods { - burst = 1; - reloadTime = 0.002; - minRange = 300; - minRangeProbab = 0.25; - midRange = 400; - midRangeProbab = 0.7; - maxRange = 1300; - maxRangeProbab = 0.1; - aiRateOfFire = 5; - aiRateOfFireDistance = 500; - autoFire = 0; - soundContinuous = 0; - textureType = "fullAuto"; - weaponSoundEffect = "DefaultRifle"; - }; - }; - - class Rocket_04_AP_Plane_CAS_01_F: Rocket_04_HE_Plane_CAS_01_F { - holdsterAnimValue = 5; - }; - - class Bomb_04_Plane_CAS_01_F: RocketPods { - holdsterAnimValue = 6; - aiRateOfFire = 5; - aiRateOfFireDistance = 500; - missileLockCone = 180; - nameSound = ""; - textureType = "fullAuto"; - weaponLockDelay = 1; - }; - - class Cannon_30mm_Plane_CAS_02_F: CannonCore { - scope = 1; - holdsterAnimValue = 1; - ballisticsComputer = 2; - canLock = 1; - modes[] = {"LowROF","close","near","short","medium","far"}; - nameSound = "cannon"; - shotFromTurret = 0; - muzzlePos = "Cannon_muzzleflash"; - muzzleEnd = "Cannon_barrel_end"; - selectionFireAnim = "Cannon_muzzleflash"; - autoFire = 1; - burst = 5; - reloadTime = 0.04; - class GunParticles { - class Effect { - effectName = "MachineGun2"; - positionName = "Cannon_barrel_start"; - directionName = "Cannon_barrel_end"; - }; - }; - class LowROF: Mode_FullAuto { - dispersion = 0.0055; - reloadTime = 0.04; - }; - class close: LowROF {}; - class near: close {}; - class short: close {}; - class medium: close {}; - class far: close {}; - }; }; diff --git a/addons/aircraft/stringtable.xml b/addons/aircraft/stringtable.xml index da013cac5e..4d1c49fff6 100644 --- a/addons/aircraft/stringtable.xml +++ b/addons/aircraft/stringtable.xml @@ -14,6 +14,18 @@ Rajada Raffica + + XM301 + XM301 + XM301 + XM301 + XM301 + XM301 + XM301 + XM301 + XM301 + XM301 + Open Cargo Door Laderampe öffnen @@ -35,4 +47,4 @@ Закрыть грузовой отсек - \ No newline at end of file + From 155503d4a105ee5c2b64deb05da5467d194cd821 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 14 Feb 2015 20:06:55 +0100 Subject: [PATCH 140/211] Merged GUI into common. Removed unnecessary GUI functions. Updated displayIcon function to be more dynamic Added client side settings for displaying icons. --- addons/common/HintConfig.hpp | 96 ++++++++++ addons/common/ProgressScreen.hpp | 3 - addons/common/XEH_preInit.sqf | 2 + addons/common/config.cpp | 10 + addons/{gui/UI => common}/define.hpp | 12 +- .../functions/fnc_blurScreen.sqf | 2 +- addons/common/functions/fnc_displayIcon.sqf | 111 +++++++++++ .../functions/fnc_displayInformation.sqf | 4 +- .../functions/fnc_displayMessage.sqf | 5 +- addons/common/functions/fnc_progressBar.sqf | 4 +- .../fnc_sendDisplayInformationTo.sqf | 2 +- .../functions/fnc_sendDisplayMessageTo.sqf | 2 +- addons/common/stringtable.xml | 6 + addons/gui/CfgEventHandlers.hpp | 11 -- addons/gui/GUI.hpp | 2 - addons/gui/README.md | 11 -- addons/gui/UI/RscTitles.hpp | 179 ------------------ addons/gui/XEH_postInit.sqf | 11 -- addons/gui/XEH_preInit.sqf | 25 --- addons/gui/config.cpp | 27 --- addons/gui/data/buttonDisabled.paa | Bin 1564 -> 0 bytes addons/gui/data/buttonDisabled_gradient.paa | Bin 1816 -> 0 bytes addons/gui/data/buttonNormal.paa | Bin 1564 -> 0 bytes addons/gui/data/buttonNormal_gradient.paa | Bin 1989 -> 0 bytes addons/gui/data/buttonNormal_gradient2.paa | Bin 2035 -> 0 bytes addons/gui/data/buttonNormal_gradient3.paa | Bin 2044 -> 0 bytes addons/gui/data/buttonNormal_gradient_top.paa | Bin 1995 -> 0 bytes .../gui/data/buttonNormal_gradient_top_w.paa | Bin 1856 -> 0 bytes addons/gui/empty.hpp | 21 -- addons/gui/functions/fnc_displayIcon.sqf | 79 -------- addons/gui/functions/fnc_loadingbar.sqf | 64 ------- addons/gui/functions/fnc_sendHintTo.sqf | 26 --- addons/gui/functions/fnc_sendMessageTo.sqf | 31 --- addons/gui/functions/script_component.hpp | 12 -- addons/gui/script_component.hpp | 12 -- addons/gui/stringtable.xml | 7 - addons/medical/config.cpp | 2 +- .../fnc_ActionCheckBloodPressureLocal.sqf | 2 +- .../functions/fnc_ActionCheckPulse.sqf | 6 +- .../fnc_ActioncheckBloodPressure.sqf | 6 +- .../medical/functions/fnc_actionCarryUnit.sqf | 4 +- .../functions/fnc_actionCheckPulseLocal.sqf | 2 +- .../functions/fnc_actionCheckResponse.sqf | 8 +- .../medical/functions/fnc_actionDragUnit.sqf | 4 +- .../functions/fnc_actionRemoveTourniquet.sqf | 4 +- addons/medical/functions/fnc_handleHeal.sqf | 2 +- ...fnc_handleTreatment_Action_AirwayLocal.sqf | 2 +- ...nc_handleTreatment_Action_BandageLocal.sqf | 2 +- .../fnc_handleTreatment_Action_CPR.sqf | 4 +- .../fnc_handleTreatment_Action_Stitching.sqf | 10 +- .../fnc_handleTreatment_Action_fullHeal.sqf | 8 +- .../fnc_handleTreatment_Category_Advanced.sqf | 6 +- .../fnc_handleTreatment_Category_Airway.sqf | 6 +- ...fnc_handleTreatment_Category_Bandaging.sqf | 8 +- ...nc_handleTreatment_Category_Medication.sqf | 6 +- .../functions/fnc_initalizeModuleCMS.sqf | 2 +- .../fnc_moduleAssignMedicalEquipment.sqf | 1 - .../functions/fnc_onTreatmentCompleted.sqf | 2 +- addons/medical/ui/define.hpp | 2 +- addons/medical/ui/menu.hpp | 4 +- 60 files changed, 292 insertions(+), 588 deletions(-) rename addons/{gui/UI => common}/define.hpp (97%) rename addons/{gui => common}/functions/fnc_blurScreen.sqf (99%) create mode 100644 addons/common/functions/fnc_displayIcon.sqf rename addons/{gui => common}/functions/fnc_displayInformation.sqf (92%) rename addons/{gui => common}/functions/fnc_displayMessage.sqf (85%) rename addons/{gui => common}/functions/fnc_sendDisplayInformationTo.sqf (95%) rename addons/{gui => common}/functions/fnc_sendDisplayMessageTo.sqf (95%) delete mode 100644 addons/gui/CfgEventHandlers.hpp delete mode 100644 addons/gui/GUI.hpp delete mode 100644 addons/gui/README.md delete mode 100644 addons/gui/UI/RscTitles.hpp delete mode 100644 addons/gui/XEH_postInit.sqf delete mode 100644 addons/gui/XEH_preInit.sqf delete mode 100644 addons/gui/config.cpp delete mode 100644 addons/gui/data/buttonDisabled.paa delete mode 100644 addons/gui/data/buttonDisabled_gradient.paa delete mode 100644 addons/gui/data/buttonNormal.paa delete mode 100644 addons/gui/data/buttonNormal_gradient.paa delete mode 100644 addons/gui/data/buttonNormal_gradient2.paa delete mode 100644 addons/gui/data/buttonNormal_gradient3.paa delete mode 100644 addons/gui/data/buttonNormal_gradient_top.paa delete mode 100644 addons/gui/data/buttonNormal_gradient_top_w.paa delete mode 100644 addons/gui/empty.hpp delete mode 100644 addons/gui/functions/fnc_displayIcon.sqf delete mode 100644 addons/gui/functions/fnc_loadingbar.sqf delete mode 100644 addons/gui/functions/fnc_sendHintTo.sqf delete mode 100644 addons/gui/functions/fnc_sendMessageTo.sqf delete mode 100644 addons/gui/functions/script_component.hpp delete mode 100644 addons/gui/script_component.hpp delete mode 100644 addons/gui/stringtable.xml diff --git a/addons/common/HintConfig.hpp b/addons/common/HintConfig.hpp index 3e3493a8ba..8c8dc38abb 100644 --- a/addons/common/HintConfig.hpp +++ b/addons/common/HintConfig.hpp @@ -52,6 +52,102 @@ class RscTitles { }; }; }; + class ACE_RscDisplayMessage { + duration = 7; + idd = 86411; + movingenable = 0; + onLoad = "uiNamespace setVariable ['ACE_RscDisplayMessage', _this select 0];" + fadein = 0; + class controlsBackground { + class header: ACE_gui_staticBase { + idc = 1; + type = CT_STATIC; + x = "safezoneX + (safezoneW / 10)"; + y = "safezoneY + (30 * (safeZoneH / 40))"; + w = "(safeZoneW / 10)"; + h = "(safeZoneH / 40)"; + style = ST_LEFT; + font = FontCSE; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {0.85, 0.85, 0.85, 1.0}; + colorBackground[] = {0, 0, 0, 0.9}; + text = ""; + }; + class text: header { + idc = 2; + y = "safezoneY + (31 * (safeZoneH / 40))"; + w = "(safeZoneW / 10) * 1.3"; + colorText[] = {0.0, 0.0, 0.0, 1.0}; + colorBackground[] = {1, 1, 1, 0.9}; + text = ""; + }; + }; + }; + + class ACE_RscDisplayInformation { + duration = 15; + idd = 86412; + movingenable = 0; + onLoad = "uiNamespace setVariable ['ACE_RscDisplayInformation', _this select 0];" + fadein = 0; + class controlsBackground { + class header: ACE_gui_staticBase { + idc = 1; + type = CT_STATIC; + x = "safezoneX + (safezoneW / 10)"; + y = "safezoneY + (6 * (safeZoneH / 40))"; + w = "(safeZoneW / 10)"; + h = "(safeZoneH / 40)"; + style = ST_LEFT; + font = FontCSE; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {0.85, 0.85, 0.85, 1.0}; + colorBackground[] = {0, 0, 0, 0.9}; + text = ""; + }; + class text: header { + idc = 2; + y = "safezoneY + (7.1 * (safeZoneH / 40))"; + w = "(safeZoneW / 10) * 1.3"; + colorText[] = {0.0, 0.0, 0.0, 1.0}; + colorBackground[] = {1, 1, 1, 0.9}; + text = ""; + }; + class text2: text { + idc = 3; + y = "safezoneY + (8.2 * (safeZoneH / 40))"; + }; + class text3: text { + idc = 4; + y = "safezoneY + (9.3 * (safeZoneH / 40))"; + }; + class text4: text { + idc = 5; + y = "safezoneY + (10.4 * (safeZoneH / 40))"; + }; + class text5: text { + idc = 6; + y = "safezoneY + (11.5 * (safeZoneH / 40))"; + }; + + + class icon: ACE_gui_backgroundBase { + type = CT_STATIC; + idc = 10; + style = ST_PICTURE; + colorBackground[] = {0,0,0,1}; + colorText[] = {1, 1, 1, 1}; + font = FontCSE; + text = ""; + sizeEx = 0.032; + x = "safezoneX + (safezoneW / 10)"; + y = "safezoneY + (4 * (safeZoneH / 40))"; + w = "(safeZoneH / 40)*2"; + h = "(safeZoneH / 40)*2"; + }; + }; + }; + class ACE_EventHandlerHelper: ACE_Rsc_Display_Base { idd = -1; class controls { diff --git a/addons/common/ProgressScreen.hpp b/addons/common/ProgressScreen.hpp index 31184f00f4..d7df49efdf 100644 --- a/addons/common/ProgressScreen.hpp +++ b/addons/common/ProgressScreen.hpp @@ -1,6 +1,3 @@ -class ACE_gui_RscProgress; -class ACE_gui_staticBase; - class GVAR(ProgressBar_Dialog) { idd = -1; diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 64a06a0f8c..079d0cf686 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -16,6 +16,7 @@ PREP(adminKick); PREP(ambientBrightness); PREP(applyForceWalkStatus); PREP(binarizeNumber); +PREP(blurScreen); PREP(callCustomEventHandlers); PREP(callCustomEventHandlersGlobal); PREP(canGetInPosition); @@ -31,6 +32,7 @@ PREP(convertKeyCode); PREP(createOrthonormalReference); PREP(currentChannel); PREP(disableUserInput); +PREP(displayIcon); PREP(displayText); PREP(displayTextPicture); PREP(displayTextStructured); diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 84052cbdfb..b1c479b54f 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -94,8 +94,18 @@ class ACE_Settings { isClientSetable = 1; displayName = "$STR_ACE_Common_EnableNumberHotkeys"; }; + class GVAR(settingFeedbackIcons) { + value = 1; + typeName = "SCALAR"; + force = 0; + isClientSetable = 1; + displayName = "$STR_ACE_Common_SettingFeedbackIconsName"; + description = "$STR_ACE_Common_SettingFeedbackIconsDesc"; + values[] = {"Hide", "Top right, downwards", "Top right, to the left", "Top left, downwards", "Top left, to the right"}; + }; }; +#include "define.hpp" #include #include #include diff --git a/addons/gui/UI/define.hpp b/addons/common/define.hpp similarity index 97% rename from addons/gui/UI/define.hpp rename to addons/common/define.hpp index 13ce7d8a3e..f1cc009864 100644 --- a/addons/gui/UI/define.hpp +++ b/addons/common/define.hpp @@ -182,12 +182,12 @@ class ACE_gui_buttonBase { bottom = 0.00; }; textureNoShortcut = ""; - animTextureNormal = QUOTE( PATHTOF(data\buttonNormal_gradient_top.paa) ); - animTextureDisabled = QUOTE( PATHTOF(data\buttonDisabled_gradient.paa)); - animTextureOver = QUOTE( PATHTOF(data\buttonNormal_gradient_top.paa)); - animTextureFocused = QUOTE( PATHTOF(data\buttonNormal_gradient_top.paa)); - animTexturePressed = QUOTE( PATHTOF(data\buttonNormal_gradient_top.paa)); - animTextureDefault = QUOTE( PATHTOF(data\buttonNormal_gradient_top.paa)); + animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)"; + animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.8)"; + animTextureOver = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)"; + animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)"; period = 0.5; font = FontCSE; soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1}; diff --git a/addons/gui/functions/fnc_blurScreen.sqf b/addons/common/functions/fnc_blurScreen.sqf similarity index 99% rename from addons/gui/functions/fnc_blurScreen.sqf rename to addons/common/functions/fnc_blurScreen.sqf index 1cde214587..c3d101a37e 100644 --- a/addons/gui/functions/fnc_blurScreen.sqf +++ b/addons/common/functions/fnc_blurScreen.sqf @@ -39,4 +39,4 @@ if (_show) then { GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) = nil; }; }; -}; \ No newline at end of file +}; diff --git a/addons/common/functions/fnc_displayIcon.sqf b/addons/common/functions/fnc_displayIcon.sqf new file mode 100644 index 0000000000..94fa887da9 --- /dev/null +++ b/addons/common/functions/fnc_displayIcon.sqf @@ -0,0 +1,111 @@ +/** + * fn_gui_displayIcon.sqf + * @Descr: + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: true + * + * @Example ["myID", true, QUOTE(PATHTOF(data\icon_group.paa)), [1,1,1,1], 0] call ace_gui_fnc_displayIcon; + */ + +#include "script_component.hpp" + +// positions for the icon UI +#define RIGHT_SIDE (safezoneW + safezoneX) +#define LEFT_SIDE safezoneX +#define TOP_SIDE safeZoneY +#define BOTTOM_SIDE (safeZoneH + safezoneY) +#define ICON_WIDTH (2 * (((safezoneW / safezoneH) min 1.2) / 40)) +#define X_POS_ICONS (RIGHT_SIDE - (1.5 * ICON_WIDTH)) +#define Y_POS_ICONS (TOP_SIDE + (2.5 * ICON_WIDTH)) +#define DIFFERENCE_ICONS (1.1 * ICON_WIDTH) +#define X_POS_ICONS_SECOND (RIGHT_SIDE - (4.4 * ICON_WIDTH)) +#define Y_POS_ICONS_SECOND (TOP_SIDE + (1.1 * ICON_WIDTH)) + +// setting values +#define TOP_RIGHT_DOWN 1 +#define TOP_RIGHT_LEFT 2 +#define TOP_LEFT_DOWN 3 +#define TOP_LEFT_RIGHT 4 + +// other constants +#define DEFAULT_TIME 6 + +private ["_iconId", "_show", "_icon", "_allControls", "_refresh", "_timeAlive", "_list", "_color"]; +_iconId = _this select 0; +_show = _this select 1; +_icon = _this select 2; +_color = _this select 3; +_timeAlive = if (count _this > 4) then {_this select 4} else {DEFAULT_TIME}; + +disableSerialization; +_list = missionNamespace getvariable [QGVAR(displayIconList),[]]; + +_refresh = { + private ["_allControls"]; + // Refreshing of all icons.. + _allControls = missionNamespace getvariable [QGVAR(displayIconListControls), []]; + { + ctrlDelete _x; + }foreach _allControls; + + _allControls = []; + + private ["_ctrl", "_setting"]; + _setting = missionNamespace getvariable[QGVAR(settingFeedbackIcons), 0]; + if (_setting > 0) then { + { + // +19000 because we want to make certain we are using free IDCs.. + _ctrl = ((findDisplay 46) ctrlCreate ["RscPicture", _foreachIndex + 19000]); + _position = switch (_setting) do { + case TOP_RIGHT_DOWN: {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]}; + case TOP_RIGHT_LEFT: {[X_POS_ICONS_SECOND - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND - (ICON_WIDTH / 2), ICON_WIDTH, ICON_WIDTH]}; + case TOP_LEFT_DOWN: {[LEFT_SIDE + (0.5 * ICON_WIDTH), Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]}; + case TOP_LEFT_RIGHT: {[LEFT_SIDE + (0.5 * ICON_WIDTH) - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND, ICON_WIDTH, ICON_WIDTH]}; + default {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]}; + }; + _ctrl ctrlSetPosition _position; + _ctrl ctrlsetText (_x select 1); + _ctrl ctrlSetTextColor (_x select 2); + _ctrl ctrlCommit 0; + _allControls pushback _ctrl; + }foreach (missionNamespace getvariable [QGVAR(displayIconList),[]]); + }; + missionNamespace setvariable [QGVAR(displayIconListControls), _allControls]; +}; + +if (_show) then { + if ({(_x select 0 == _iconId)} count _list == 0) then { + _list pushback [_iconId, _icon, _color, time]; + } else { + { + if (_x select 0 == _iconId) exitwith { + _list set [_foreachIndex, [_iconId, _icon, _color, time]]; + }; + }foreach _list; + }; + missionNamespace setvariable [QGVAR(displayIconList), _list]; + call _refresh; + + if (_timeAlive >= 0) then { + [{ + [_this select 0, false, "", [0,0,0], 0] call FUNC(displayIcon); + }, [_iconId], _timeAlive, _timeAlive] call EFUNC(common,waitAndExecute); + }; + +} else { + if ({(_x select 0 == _iconId)} count _list == 1) then { + private "_newList"; + _newList = []; + { + if (_x select 0 != _iconId) then { + _newList pushback _x; + }; + }foreach _list; + + missionNamespace setvariable [QGVAR(displayIconList), _newList]; + call _refresh; + }; +}; diff --git a/addons/gui/functions/fnc_displayInformation.sqf b/addons/common/functions/fnc_displayInformation.sqf similarity index 92% rename from addons/gui/functions/fnc_displayInformation.sqf rename to addons/common/functions/fnc_displayInformation.sqf index c4eb96984b..64a27b0e40 100644 --- a/addons/gui/functions/fnc_displayInformation.sqf +++ b/addons/common/functions/fnc_displayInformation.sqf @@ -19,10 +19,10 @@ _type = [_this, 2, 0, [0]] call BIS_fnc_Param; _icon = [_this, 3, "",[""]] call BIS_fnc_Param; if (_title != "") then { - DISPLAY_LAYER cutRsc [QGVAR(RSC_DISPLAY_INFORMATION),"PLAIN"]; + DISPLAY_LAYER cutRsc ['ACE_RscDisplayInformation',"PLAIN"]; disableSerialization; - _display = uiNamespace getvariable QGVAR(RSC_DISPLAY_INFORMATION); + _display = uiNamespace getvariable 'ACE_RscDisplayInformation'; if (!isnil "_display") then { _headerCtrl = _display displayCtrl 1; _headerCtrl ctrlSetText _title; diff --git a/addons/gui/functions/fnc_displayMessage.sqf b/addons/common/functions/fnc_displayMessage.sqf similarity index 85% rename from addons/gui/functions/fnc_displayMessage.sqf rename to addons/common/functions/fnc_displayMessage.sqf index 3dceab2638..317de8b240 100644 --- a/addons/gui/functions/fnc_displayMessage.sqf +++ b/addons/common/functions/fnc_displayMessage.sqf @@ -18,10 +18,10 @@ _content = [_this, 1, "",[""]] call BIS_fnc_Param; _type = [_this, 2, 0, [0]] call BIS_fnc_Param; if (_title != "" && _content != "") then { - DISPLAY_LAYER cutRsc [QGVAR(RSC_DISPLAY_MESSAGE),"PLAIN"]; + DISPLAY_LAYER cutRsc ['ACE_RscDisplayMessage',"PLAIN"]; disableSerialization; - _display = uiNamespace getvariable QGVAR(RSC_DISPLAY_MESSAGE); + _display = uiNamespace getvariable 'ACE_RscDisplayMessage'; if (!isnil "_display") then { _headerCtrl = _display displayCtrl 1; _contentCtrl = _display displayCtrl 2; @@ -29,6 +29,7 @@ if (_title != "" && _content != "") then { _headerCtrl ctrlSetText _title; _contentCtrl ctrlSetText _content; + // TODO get a font that has the same width characters for all. Ask Jaynus. _contentAmountOfChars = count (toArray _content); _pos = ctrlPosition _contentCtrl; _pos set [2, _contentAmountOfChars * ((((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)/ 3.3) max (safeZoneW / 11)]; diff --git a/addons/common/functions/fnc_progressBar.sqf b/addons/common/functions/fnc_progressBar.sqf index ab4cb7b69c..1d73cccc79 100644 --- a/addons/common/functions/fnc_progressBar.sqf +++ b/addons/common/functions/fnc_progressBar.sqf @@ -36,10 +36,10 @@ _perFrameFunction = { PARAMS_2(_parameters,_pfhID); EXPLODE_8_PVT(_parameters,_args,_onFinish,_onFail,_condition,_player,_startTime,_totalTime,_exceptions); private ["_elapsedTime", "_errorCode"]; - + _elapsedTime = time - _startTime; _errorCode = -1; - + if (isNull (uiNamespace getVariable [QGVAR(ctrlProgressBar), controlNull])) then { _errorCode = 1; } else { diff --git a/addons/gui/functions/fnc_sendDisplayInformationTo.sqf b/addons/common/functions/fnc_sendDisplayInformationTo.sqf similarity index 95% rename from addons/gui/functions/fnc_sendDisplayInformationTo.sqf rename to addons/common/functions/fnc_sendDisplayInformationTo.sqf index ae4012b5fe..f22894e057 100644 --- a/addons/gui/functions/fnc_sendDisplayInformationTo.sqf +++ b/addons/common/functions/fnc_sendDisplayInformationTo.sqf @@ -42,6 +42,6 @@ if (isPlayer _reciever) then { }foreach _content; - [_title,_content,_type] call EFUNC(gui,displayInformation); + [_title,_content,_type] call EFUNC(common,displayInformation); }; }; \ No newline at end of file diff --git a/addons/gui/functions/fnc_sendDisplayMessageTo.sqf b/addons/common/functions/fnc_sendDisplayMessageTo.sqf similarity index 95% rename from addons/gui/functions/fnc_sendDisplayMessageTo.sqf rename to addons/common/functions/fnc_sendDisplayMessageTo.sqf index c66af97266..3c5b399659 100644 --- a/addons/gui/functions/fnc_sendDisplayMessageTo.sqf +++ b/addons/common/functions/fnc_sendDisplayMessageTo.sqf @@ -41,6 +41,6 @@ if (isPlayer _reciever) then { }foreach _parameters; _content = format _localizationArray; - [_title,_content,_type] call EFUNC(gui,displayMessage); + [_title,_content,_type] call EFUNC(common,displayMessage); }; }; \ No newline at end of file diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index f2d944eb7a..f7705f8ad9 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -315,6 +315,12 @@ Ignoruj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności. Rechazar Peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones. + + Feedback icons + + + Select the position of or disable the feedback icons on your screen. These icons will show to provide extra feedback on your character status and actions performed. + \ No newline at end of file diff --git a/addons/gui/CfgEventHandlers.hpp b/addons/gui/CfgEventHandlers.hpp deleted file mode 100644 index c9142e676b..0000000000 --- a/addons/gui/CfgEventHandlers.hpp +++ /dev/null @@ -1,11 +0,0 @@ -class Extended_PreInit_EventHandlers { - class ADDON { - init = QUOTE( call compile preprocessFileLineNumbers QUOTE(QUOTE(PATHTOF(XEH_preInit.sqf))) ); - }; -}; - -class Extended_PostInit_EventHandlers { - class ADDON { - init = QUOTE( call compile preprocessFileLineNumbers QUOTE(QUOTE(PATHTOF(XEH_postInit.sqf))) ); - }; -}; \ No newline at end of file diff --git a/addons/gui/GUI.hpp b/addons/gui/GUI.hpp deleted file mode 100644 index 71e8dc0090..0000000000 --- a/addons/gui/GUI.hpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "UI\define.hpp" -#include "UI\RscTitles.hpp" diff --git a/addons/gui/README.md b/addons/gui/README.md deleted file mode 100644 index a6fe74f6c2..0000000000 --- a/addons/gui/README.md +++ /dev/null @@ -1,11 +0,0 @@ -ace_gui -======= - -to be scrapped. - - -## Maintainers - -The people responsible for merging changes to this component or answering potential questions. - -- [Glowbal](https://github.com/Glowbal) diff --git a/addons/gui/UI/RscTitles.hpp b/addons/gui/UI/RscTitles.hpp deleted file mode 100644 index 02e68e8d32..0000000000 --- a/addons/gui/UI/RscTitles.hpp +++ /dev/null @@ -1,179 +0,0 @@ - -#define RIGHT_SIDE (safezoneW + safezoneX) -#define LEFT_SIDE safezoneX -#define TOP_SIDE safeZoneY -#define BOTTOM_SIDE (safeZoneH + safezoneY) - -#define ICON_WIDTH (1.75 * (((safezoneW / safezoneH) min 1.2) / 40)) -#define X_POS_ICONS RIGHT_SIDE - (1.1 * ICON_WIDTH) -#define Y_POS_ICONS TOP_SIDE + (2.2 * ICON_WIDTH) -#define DIFFERENCE_ICONS (1.1 * ICON_WIDTH) - -class RscTitles { - class GVAR(iconsDisplay) { - duration = 1e+011; - idd = 1111; - movingenable = 0; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(iconsDisplay)), _this select 0)]); - class controlsBackground { - class icon_1: ACE_gui_backgroundBase { - text = ""; - colorText[] = {0.0,1.0,0.0,0.4}; - idc = 10501; - x = X_POS_ICONS; - y = Y_POS_ICONS + (0 * DIFFERENCE_ICONS); - w = ICON_WIDTH; - h = ICON_WIDTH; - }; - class icon_2: icon_1 { - idc = 10502; - y = Y_POS_ICONS + (1 * DIFFERENCE_ICONS); - }; - class icon_3: icon_1 { - idc = 10503; - y = Y_POS_ICONS + (2 * DIFFERENCE_ICONS); - }; - class icon_4: icon_1 { - idc = 10504; - y = Y_POS_ICONS + (3 * DIFFERENCE_ICONS); - }; - class icon_5: icon_1 { - idc = 10505; - y = Y_POS_ICONS + (4 * DIFFERENCE_ICONS); - }; - class icon_6: icon_1 { - idc = 10506; - y = Y_POS_ICONS + (5 * DIFFERENCE_ICONS); - }; - }; - }; - - class GVAR(RSC_PROGRESSBAR_LOADING) { - idd = -1; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(RSC_PROGRESSBAR_LOADING)), _this select 0)]); - fadein = 0; - fadeout = 0; - duration = 10e10; - class Controls { - class background: ACE_gui_backgroundBase { - idc = -1; - colorBackground[] = {0,0,0,1}; - colorText[] = {1, 1, 1, 1}; - x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "29 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "0.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - text = "#(argb,8,8,3)color(0,0,0,0.4)"; - }; - - class Progress: ACE_gui_RscProgress { - idc = 6; - x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "29 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "0.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - colorFrame[] = {0,0,0,0}; - colorBar[] = {0.27,0.5,0.31,0.6}; - texture = "#(argb,8,8,3)color(1,1,1,0.7)"; - }; - }; - }; - - - class GVAR(RSC_DISPLAY_MESSAGE) { - duration = 7; - idd = 86411; - movingenable = 0; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(RSC_DISPLAY_MESSAGE)), _this select 0)]); - fadein = 0; - class controlsBackground { - class header: ACE_gui_staticBase { - idc = 1; - type = CT_STATIC; - x = "safezoneX + (safezoneW / 10)"; - y = "safezoneY + (30 * (safeZoneH / 40))"; - w = "(safeZoneW / 10)"; - h = "(safeZoneH / 40)"; - style = ST_LEFT; - font = FontCSE; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - colorText[] = {0.85, 0.85, 0.85, 1.0}; - colorBackground[] = {0, 0, 0, 0.9}; - text = ""; - }; - class text: header { - idc = 2; - y = "safezoneY + (31 * (safeZoneH / 40))"; - w = "(safeZoneW / 10) * 1.3"; - colorText[] = {0.0, 0.0, 0.0, 1.0}; - colorBackground[] = {1, 1, 1, 0.9}; - text = ""; - }; - }; - }; - - class GVAR(RSC_DISPLAY_INFORMATION) { - duration = 15; - idd = 86412; - movingenable = 0; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(RSC_DISPLAY_INFORMATION)), _this select 0)]); - fadein = 0; - class controlsBackground { - class header: ACE_gui_staticBase { - idc = 1; - type = CT_STATIC; - x = "safezoneX + (safezoneW / 10)"; - y = "safezoneY + (6 * (safeZoneH / 40))"; - w = "(safeZoneW / 10)"; - h = "(safeZoneH / 40)"; - style = ST_LEFT; - font = FontCSE; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - colorText[] = {0.85, 0.85, 0.85, 1.0}; - colorBackground[] = {0, 0, 0, 0.9}; - text = ""; - }; - class text: header { - idc = 2; - y = "safezoneY + (7.1 * (safeZoneH / 40))"; - w = "(safeZoneW / 10) * 1.3"; - colorText[] = {0.0, 0.0, 0.0, 1.0}; - colorBackground[] = {1, 1, 1, 0.9}; - text = ""; - }; - class text2: text { - idc = 3; - y = "safezoneY + (8.2 * (safeZoneH / 40))"; - }; - class text3: text { - idc = 4; - y = "safezoneY + (9.3 * (safeZoneH / 40))"; - }; - class text4: text { - idc = 5; - y = "safezoneY + (10.4 * (safeZoneH / 40))"; - }; - class text5: text { - idc = 6; - y = "safezoneY + (11.5 * (safeZoneH / 40))"; - }; - - - class icon: ACE_gui_backgroundBase { - type = CT_STATIC; - idc = 10; - style = ST_PICTURE; - colorBackground[] = {0,0,0,1}; - colorText[] = {1, 1, 1, 1}; - font = FontCSE; - text = ""; - sizeEx = 0.032; - x = "safezoneX + (safezoneW / 10)"; - y = "safezoneY + (4 * (safeZoneH / 40))"; - w = "(safeZoneH / 40)*2"; - h = "(safeZoneH / 40)*2"; - }; - }; - }; - -}; \ No newline at end of file diff --git a/addons/gui/XEH_postInit.sqf b/addons/gui/XEH_postInit.sqf deleted file mode 100644 index 4172145202..0000000000 --- a/addons/gui/XEH_postInit.sqf +++ /dev/null @@ -1,11 +0,0 @@ -/** - * XEH_postInit.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ - -#include "script_component.hpp" diff --git a/addons/gui/XEH_preInit.sqf b/addons/gui/XEH_preInit.sqf deleted file mode 100644 index b5cc064d18..0000000000 --- a/addons/gui/XEH_preInit.sqf +++ /dev/null @@ -1,25 +0,0 @@ -/** - * XEH_preInit.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ - -#include "script_component.hpp" - -ADDON = false; - -PREP(loadingBar); -PREP(displayInformation); -PREP(displayMessage); -PREP(blurScreen); -PREP(displayIcon); -PREP(sendHintTo); -PREP(sendMessageTo); -PREP(sendDisplayInformationTo); -PREP(sendDisplayMessageTo); - -ADDON = true; diff --git a/addons/gui/config.cpp b/addons/gui/config.cpp deleted file mode 100644 index 2f7666be13..0000000000 --- a/addons/gui/config.cpp +++ /dev/null @@ -1,27 +0,0 @@ - -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ACE_main"}; - version = VERSION; - author[] = {$STR_ACE_Common_ACETeam}; - authorUrl = "http://csemod.com"; // TODO website link? - }; -}; -class CfgAddons { - class PreloadAddons { - class ADDON { - list[] = {QUOTE(ADDON)}; - }; - }; -}; - -#include "CfgEventHandlers.hpp" - -// TODO Port over the UI defines -#include "GUI.hpp" -#include "empty.hpp" diff --git a/addons/gui/data/buttonDisabled.paa b/addons/gui/data/buttonDisabled.paa deleted file mode 100644 index 2c2a10856b22386ce5dccdda85c34006259f1086..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1564 zcmWF)b$53Radr=LWMN=n@bvWj59UWW`hxiXfdIr0c60N00P+if_zg&cY%q;MfuWRz zfmw4Y6F&knAea!=r~qn+jE2W(c#P&3SQ;QbH!wDY{rT_BAi$u^I9m1~B_t+(w6Nr3 MTp;@YKcsjE0G`c5>Hq)$ diff --git a/addons/gui/data/buttonDisabled_gradient.paa b/addons/gui/data/buttonDisabled_gradient.paa deleted file mode 100644 index 43b1b8d100e67efb7e607cc0fdc3e83437268092..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1816 zcmeH|KWI}y9LIn6yZ0w4iMhMHK4T~)EisZKNC+hqDUyFAz8KOV*@}e@x#NEK`~Kj5cYKcf-L1(= zCBIy(tmG8{sMTujU%i^Y*3+)ndirL$d_Cvs4R5?tJ#*~VgcuZ6ph+7;!wy5Y?~Mch z5;+Es+nV39la5KHPbtL}6RR0tz>h&`ghsOM_jeOfi!teZk#;r1tcz!zWYMXbputsE zX3i9W6qsa=L_BNY65HfHi!?YRGJ-j>9lp;WH^>@U=IE?pZQltq!yVV1T?3g_9J z-%yuDfkU09D8o9xC+cKDGzA1OOVjv_Baomw9KLkoA@0&VgU>B67KW1Izr?q(2kkGXhOuHB*a8lK<2HHJO3u%7=?JWWN>xk zz<@-59`pELJf7=a_X;q$K~AEQ#sqA)jtJ^F0}$RmV!}mvBpfS0QLx t{Ys{FsahW$c^NgxkcUvU+Zxyf#gQ0%XRx-+aK$alM4U< diff --git a/addons/gui/data/buttonNormal.paa b/addons/gui/data/buttonNormal.paa deleted file mode 100644 index 84936d83562e20d2d7bc064e6487a87305e0e4f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1564 zcmWF)b$53Radr=LWMN=nU}R+c59UWW`hxiXfdIr0c60N00P+if_zg&cY%q;MfuWRz zftjI!i5~$O5KIVbQ~)(ZM#Ez?JVx^iEDeyJ8yFcDeEaXsAi$u^I9m1~B_t+(w6Nr3 MWLWX{KcsjE04MuGD*ylh diff --git a/addons/gui/data/buttonNormal_gradient.paa b/addons/gui/data/buttonNormal_gradient.paa deleted file mode 100644 index 2210f987411ee2a407ba63733091384a6fb00e35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1989 zcmdT_&ubGw6n^i`>}H#8eh^j&A%;x|A%qxmh@liI-2~c*5iQ10LMW01ky1oTD5XdV zW(tceWsx8rJv350dF)9HfMs1s%Rgz@S6EqX&-6k##14 zoqg<%uDQg!h@x`jT$ZvVP^8AfZX~)Q<)jrU`sF??U2l4Fcy+05DM}( z&Ok(-$1)Y5%6J9aPzb{(o~0I6I6Q#_JY$7J%7?~5p3Z4N9-Au?1Uv~(bAlQvL`y-= z0$k-GjAI%)ZmKdbOOTE#3!t^p2tYAI3z(6UXqD2miYgR!%s{aNum*mR(ZT?}hAgzX z9>(X8r8+FJ#v-l*HdDAjRmjsizCsge2b&?j;y~mm!$NpYlSIB_#BPq(b$70-QEPYZ zqfMZqEdso2mm@4sb}K>&Y^kWEX$s=dN;!L8CND~&1fmAhSaMR@f)Zg8?_pPAZ4i?n ziA63R;tE6{NEIpf7++$yPAz*16AWrtpc<{AO&ZCp0-)12EWswz@CCeQkHEi)%b2DP zi3ze%_Ct*P{GbAd-(x!dpTL_V9g5Po2U~W(*SAIQ(uM*XJ0(s_hs zm{V41B~CIAvph?V=RN;at|wLdKDg#=kusim_6LV*6<1V@RG-Xyi+pa$Io8~AOqNV7 zHJ(Fb5(;q)Qwk#ijEaJJTCCFEkDj9Dd8MW`44=%TGn!_<_Xww4f4SvO ZgP=MCJpJCmus=_!xITRSF&N#$KLJ6wth)dJ diff --git a/addons/gui/data/buttonNormal_gradient2.paa b/addons/gui/data/buttonNormal_gradient2.paa deleted file mode 100644 index cabe6c7feda6907aca65b3aad4ee27ce6c91f491..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2035 zcmd5-L1^1%6n^jhzkVyR9C@A=jOV$w2__g}JTRflN{Qr=1lBRud07adnAnUG(rz>% zgfdE&sNfAzL@;6Ov_dk%PCM=}#&#P$-uHj+ zz3+eif9a#wW@e05b7s!q0AQNt(Xl^oyyy8x?&bL(PEWr-<@%qwzb)b3{`a*DMMw%@ zZ~aATI3P5AE9*VP5N!HxY(4@gOus;C1Q-zFF{XUnzZbQ{msUYmIC3teI$1+l9m)?Q z(Iu%NtxLa_ZqhBB7i(mZ1(KCx#U6ZuGG0mSyva&dG}qwLzN`USJm@6ElXX6W)POU% ziXZKBUd-4LLuE~+5kph8RPQIjWyvyn#v&MR_sSZSdqxH;{2hgDFmsXGl8xn@fQx8~ z1Du9}n8zz*f;`7sxCUk(9`ZVMvEAZ3P=T-MoBL+(`Pzb&#Q=ptu%>_$SN>u~*qQS> z7|j!_lJ+9?3t4Ou6qD)H$7Zi%(oz*|8G*A5S9lJ`P={ffW9<=Ep&}|QgZ5GeO3fNw z!r! z3hHEChB4??-SaPK1TC5cD-TmR>o&CugnQ$79k*q+2G%54w9Ku~aUBYfrIz#+=Dx@6 zMd~`2vBDM*Oj@AZ=#WN&wV+6F04s2hY4{!d#JfcA!B|FFYPSLq)(Lby#8xkIxnL%p>cs?>YPZ{ZAdM ze^-XPea`OhD=deU7ze8edr;&BR$~p)A1?aDy-JhVWoOrVF?C4$hymS%NKOSCv5X`g#qmSMv;8bQ(4{*>Mc=!4LLaG}> zY5*wA=xge*C=01qO*YWjngnwU^Hg<@=yJ(K_oWpbZnYrPhuv%;z?03Ert+k%u_Ybt z5hiq_V~6n@zIpY*>fxxbBb@6b?A60CRo$Q2l`O}zPOZ{o#Q;}GICfL}*biOLDv-K* Y`1H|}lIQ#qnM*x=^yiI#kNmIpe=FM30RR91 diff --git a/addons/gui/data/buttonNormal_gradient3.paa b/addons/gui/data/buttonNormal_gradient3.paa deleted file mode 100644 index 7da9fbcf8a7bea39e3108f236c4322101bac95a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2044 zcmd5--)kF35dLO%Z*`VWKM>atgb-)d2qA=!gD}PoMkf_J(3Fx^5ymwk$fAT0LI}nL zQ-Z12pq3+CgIv-+g%XtzD3p>wDQ#)rO5d6XKjfci9|C=8QCD$Qx#U4$3dtUKyK}qq z%{Q|%yXRk7S@D~Vm6k67%+1XWp2@5Jn?reE+E9LHdHJoHk*}HeGi5%uNV^DcPDz}r!xe1Q@Zo-Xqzf;n-wBPmD;lI|+ zxyW_>6y@dXj<_M}>wM7)D3?}Ppt`zG%gCx#I?Hv~EzzV+)H8S@E8HP8jimt46~oBsRknz%f~hrxXnchY?2}+9hs(CLJ3iBiMYtKM~+C*bkI(rQRWL&Rt5Sv zDDe$)(D0~?26nKGBoqadq90H}ZBu6GE-Ji^E24dw_$D@rbb(u#=bQ8u$u50E8)>;^ zAgWvzNYl}*dWrMu?uh5pbGt5gzJ7WxWH=P+l-&I^%!+vqJ6Xnj0tJj0aJl4(XK5vp`(k?m!*E6wvfe1zSOinq6f6Q&Yf_HkQZxI=QZA@ zkX=>+O?Z4CS8z+X^aXwv-Uqlv*Nwp))(adGR5Hg&IpX>f$8&Px?u@-Kr=r~-g!jUJ zuOI4ndwVwadQ$WqQ7{P<6br4i66;Q!g$ZEL6oRNo)V{qk`E+yF`oB;{8*+MB6m@ z^^d_Drku_b#Fvkb(tdU^#A$Rf{5YPA(~O=RN^hhPwahUXRsEc@y2a@#`HQIkK1&&M z3Zx8Dy*nAJHo`J}tl=ge$mzfp?GgoXYlDI#vnDi?;hZ6i4o7N}6)ujJa;)Eb&O)5T UZ{PpBV#FX$-~Rd6;PCqX8=e`$(*OVf diff --git a/addons/gui/data/buttonNormal_gradient_top.paa b/addons/gui/data/buttonNormal_gradient_top.paa deleted file mode 100644 index 904e1a62f7a1cf7e03644d5a965fbe3b177b23b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1995 zcmd5--Afxm5TBXdyPWaz!Epr%A)G;u5JK=lg4iOtOHrYg);0}dMZ|<6B2pxXNRiO2 zkd{NPBBgzkVu}cbQV{x3O8Zv&C$#@W9|WIDdeMdi`Vh!Nb(g)}*}3`62Q#w|u1!u_ z`P^i|;s9WpX5*ZmwQe`*hBun@{fUV?S&x3~tu@*E^gLdI0cR4hd*3P4p3pvCoCcbk z;)BWs`47K`i)>qmUov#xGZ9l%j-1QVFo`})_C@_jbVC}EHl(kEYqXBDa+w4P*bxzC z)Zh^+IPC)_2HQ{+>cNyt64?twTn|yu(nETn_DSZ7B&?b>57zZsT!(ng($M5LRkq3O zd0Lblj7MY`MO!|?35dzFI88Pv1(wG$*irbwhpB{+=X+qnD`x+7>yo_dLG2s4FGrvS z%s_FJmMDpif}Ckwg9>ax z7-V!%!_P1b*)osf0SwbTtg@vQq-`iBae)eup>2GRyoMjK7~vZp#0aGsM6fffu5ex* zwCp^csp?eva601>sOSofS6{m^mLazkBNIzu6;m`0Lr_Y3RWFl2h++!F9At6I3#nTI z!UQg3Rbgci{xJ|MTs*-Ih`|6Y=cVU(jMaH6x#I{Xn?sxCXbWA^NoJ4-gN|SocA1WE z;Ttoa!Y;0R3M(W=$wiREaSHR6tyegn-4nOc_QLCmO1z rltL#c718P7dJj~0IJF5Q+?H5(fyLIZ6sYfa*P!_Ne*SJ;yvBb36MwL| diff --git a/addons/gui/data/buttonNormal_gradient_top_w.paa b/addons/gui/data/buttonNormal_gradient_top_w.paa deleted file mode 100644 index 23dd190afc5bab9aecf46185e74c365abbfd22fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1856 zcmeHIL1+^}6#f6tB)gR~nVH?hZK$;kwMr;aODUd0616E6QPc*hl0y;6!9(yAq?97+ zp@$xehth+G;?Yyd!7S2?AmT|pxr<0I;>S)!M;#^Vi$B6<8bJ9v{Dv3ve~)??b`x*R}-xa5Dt#)(47p8g$%U z&uUM)*6?=WAM3}&LB)B+!uEYz2gi4P`<~|} z&}%4YM1WrsI@n=MLqQ3$h?~qJw;wn>ARSExIULkxD9Hs~;4h6TLIyb%@G(5YMa;5~ zJ@5vy+8TU~eLA(>vl(wDU^cYQ_45(A!E|^>y#mHW0*R$qANIluSXelrxwHLck>h}EU7_VJyk!9VSPzW@TT$21nbOb zDyn`OR%-fUl$|@>+4B4K920wL9&+RUdx2Qf+HPF~0gn)v^?kn_J5@A_|FnwE?+-}b z?p2@A31fsQ^aQ>(iL)Va(qL!E+04)g1SqHyo^#f-{Ygw}u7D&w_bs%ip+*%Ph6a_v eUZ5;0mS$u43ZcRdM2Q`3Qd3hWqpjBN7x)YODXS;| diff --git a/addons/gui/empty.hpp b/addons/gui/empty.hpp deleted file mode 100644 index 698784e2c6..0000000000 --- a/addons/gui/empty.hpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "\z\ace\addons\gui\UI\define.hpp" - -class ACE_common_empty_screen { - idd = 679123; - onLoad = "uiNamespace setVariable [""ACE_common_empty_screen"", _this select 0]"; - onUnload = "if (missionNamespace getvariable [""ACE_common_DISABLE_USER_INPUT_SCREEN"", false)]) then { createDialog ""ACE_common_empty_screen""; }"; - class controlsBackground { - class background : ACE_gui_backgroundBase { - idc = 1; - x = safezoneX; - y = safezoneY; - w = safezoneW; - h = safezoneH; - text = ""; - moving = 0; - }; - }; - - class controls { - }; -}; diff --git a/addons/gui/functions/fnc_displayIcon.sqf b/addons/gui/functions/fnc_displayIcon.sqf deleted file mode 100644 index 98895c6346..0000000000 --- a/addons/gui/functions/fnc_displayIcon.sqf +++ /dev/null @@ -1,79 +0,0 @@ -/** - * fn_gui_displayIcon.sqf - * @Descr: - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: true - * - * @Example ["myID", true, QUOTE(PATHTOF(data\icon_group.paa)), [1,1,1,1]] call ace_gui_fnc_displayIcon; - */ - -#include "script_component.hpp" - -#define MAX_N_ICONS 6 - -private ["_iconId", "_show", "_icon", "_spot", "_idc", "_display","_next_IDC", "_nextText"]; -_iconId = _this select 0; -_show = _this select 1; -_icon = _this select 2; -_color = _this select 3; - -disableSerialization; -_list = missionNamespace getvariable [QGVAR(displayIconList),[]]; -_display = uiNamespace getvariable QGVAR(iconsDisplay); - -if (isNil "_display") then { - // Display the icons - 11401 cutRsc [QGVAR(iconsDisplay),"PLAIN"]; - _display = uiNamespace getvariable QGVAR(iconsDisplay); -}; - -if (_show) then { - if ({(_x select 0 == _iconId)} count _list == 0) then { - _list pushback [_iconId, _icon, _color]; - } else { - { - if (_x select 0 == _iconId) exitwith { - _list set [_foreachIndex, [_iconId, _icon, _color]]; - }; - }foreach _list; - }; - - missionNamespace setvariable [QGVAR(displayIconList), _list]; - - { - if (_x select 0 == _iconId) exitwith { - _idc = 10501 + _foreachIndex; - _ctrl = _display displayCtrl _idc; - _ctrl ctrlsetText _icon; - _ctrl ctrlSetTextColor _color; - }; - }foreach _list; -} else { - if ({(_x select 0 == _iconId)} count _list == 1) then { - _newList = []; - { - if (_x select 0 != _iconId) then { - _newList pushback _x; - }; - }foreach _list; - - missionNamespace setvariable [QGVAR(displayIconList), _newList]; - - for "_i" from 0 to (MAX_N_ICONS - 1) /* step +1 */ do { - _idc = 10501 + _i; - _ctrl = _display displayCtrl _idc; - _ctrl ctrlsetText ""; - _ctrl ctrlSetTextColor [1,1,1,1]; - }; - - { - _idc = 10501 + _foreachIndex; - _ctrl = _display displayCtrl _idc; - _ctrl ctrlsetText (_x select 1); - _ctrl ctrlSetTextColor (_x select 2); - }foreach _newList; - }; -}; diff --git a/addons/gui/functions/fnc_loadingbar.sqf b/addons/gui/functions/fnc_loadingbar.sqf deleted file mode 100644 index 4aba751235..0000000000 --- a/addons/gui/functions/fnc_loadingbar.sqf +++ /dev/null @@ -1,64 +0,0 @@ -/** - * fn_gui_loadingbar.sqf - * @Descr: Displays a loading bar and halts script until loading bar has finished - * @Author: Glowbal - * - * @Arguments: [timeToWait NUMBER, condition CODE (Optional), onSuccess CODE (Optional), onFailure CODE (Optional), arguments ARRAY (Optional)] - * @Return: BOOl Returns true if loading bar has fully finished. Otherwise false - * @PublicAPI: true - */ - -#include "script_component.hpp" - -private ["_timeToWait","_cond","_onfailure","_onSuccess","_args"]; -_timeToWait = _this select 0; -_cond = [_this, 1, {true}, [{true}]] call BIS_fnc_Param; -_onSuccess = [_this, 2, {}, [{}]] call BIS_fnc_Param; -_onfailure = [_this, 3, {}, [{}]] call BIS_fnc_Param; -_args = [_this, 4, [], [[]]] call BIS_fnc_Param; - - -if (_timeToWait > 0) exitwith { - GVAR(LOADING_BAR_STATUS) = 0; - disableSerialization; - 1534 cutRsc [QGVAR(RSC_PROGRESSBAR_LOADING),"plain"]; - [{ - private ["_args","_timeToWait","_start","_cond","_onSuccess","_onfailure","_params"]; - _args = _this select 0; - - _start = _args select 0; - _timeToWait = _args select 1; - _cond = _args select 2; - _onSuccess = _args select 3; - _onfailure = _args select 4; - _params = _args select 5; - - if !(_params call _cond) exitwith { - [(_this select 1)] call cba_fnc_removePerFrameHandler; - 1534 cutText ["","plain"]; - _params call _onfailure; - }; - - if (GVAR(LOADING_BAR_STATUS) >= 1) exitwith { - [(_this select 1)] call cba_fnc_removePerFrameHandler; - 1534 cutText ["","plain"]; - _params call _onSuccess; - }; - private "_dialog"; - disableSerialization; - _dialog = uiNamespace getvariable QGVAR(RSC_PROGRESSBAR_LOADING); - - GVAR(LOADING_BAR_STATUS) = (diag_tickTime - _start) / _timeToWait; - (_dialog displayCtrl 6) progressSetPosition GVAR(LOADING_BAR_STATUS); - - }, 0, [diag_tickTime, _timeToWait, _cond, _onSuccess, _onfailure, _args]] call CBA_fnc_addPerFrameHandler; - true; -}; - -if (_args call _cond) exitwith { - _args call _onSuccess; - true; -}; - -_args call _onfailure; -false; \ No newline at end of file diff --git a/addons/gui/functions/fnc_sendHintTo.sqf b/addons/gui/functions/fnc_sendHintTo.sqf deleted file mode 100644 index 0454cc5691..0000000000 --- a/addons/gui/functions/fnc_sendHintTo.sqf +++ /dev/null @@ -1,26 +0,0 @@ -/** - * fn_sendHintTo.sqf - * @Descr: Sends a hint to player unit across network - * @Author: Glowbal - * - * @Arguments: [reciever OBJECT, message STRING] - * @Return: void - * @PublicAPI: true - */ - -#include "script_component.hpp" - -private ["_reciever","_message"]; -_reciever = _this select 0; -_message = _this select 1; - -if (isPlayer _reciever) then { - if (!local _reciever) then { - [_this, QUOTE(FUNC(sendHintTo)), _reciever, false] call EFUNC(common,execRemoteFnc); - } else { - if (isLocalized _message) then { - _message = localize _message; - }; - hintsilent format ["%1",_message]; - }; -}; \ No newline at end of file diff --git a/addons/gui/functions/fnc_sendMessageTo.sqf b/addons/gui/functions/fnc_sendMessageTo.sqf deleted file mode 100644 index a4e0e4ccd5..0000000000 --- a/addons/gui/functions/fnc_sendMessageTo.sqf +++ /dev/null @@ -1,31 +0,0 @@ -/** - * fn_sendMessageTo.sqf - * @Descr: Sends a chat message to player unit across the network - * @Author: Glowbal - * - * @Arguments: [reciever OBJECT, message STRING] - * @Return: void - * @PublicAPI: true - */ - -#include "script_component.hpp" - -private ["_reciever","_message"]; -_reciever = _this select 0; -_message = _this select 1; - - -if (isPlayer _reciever) then { - if (!local _reciever) then { - [_this, QUOTE(FUNC(sendMessageTo)), _reciever, false] call EFUNC(common,execRemoteFnc); - } else { - if (isnil QGVAR(LOGIC_OBJECT)) exitwith { - // need to create an object instead - }; - - if (isLocalized _message) then { - _message = localize _message; - }; - GVAR(LOGIC_OBJECT) globalChat format ["%1",_message]; - }; -}; diff --git a/addons/gui/functions/script_component.hpp b/addons/gui/functions/script_component.hpp deleted file mode 100644 index e9276928ad..0000000000 --- a/addons/gui/functions/script_component.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#define COMPONENT GUI -#include "\z\ace\addons\main\script_mod.hpp" - -#ifdef DEBUG_ENABLED_GUI - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_SETTINGS_GUI - #define DEBUG_SETTINGS DEBUG_SETTINGS_GUI -#endif - -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file diff --git a/addons/gui/script_component.hpp b/addons/gui/script_component.hpp deleted file mode 100644 index e9276928ad..0000000000 --- a/addons/gui/script_component.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#define COMPONENT GUI -#include "\z\ace\addons\main\script_mod.hpp" - -#ifdef DEBUG_ENABLED_GUI - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_SETTINGS_GUI - #define DEBUG_SETTINGS DEBUG_SETTINGS_GUI -#endif - -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file diff --git a/addons/gui/stringtable.xml b/addons/gui/stringtable.xml deleted file mode 100644 index 6a7807c925..0000000000 --- a/addons/gui/stringtable.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index 96af8ac1ca..19fae7d3e8 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -7,7 +7,7 @@ class CfgPatches units[] = {"ACE_medical_supply_crate_cms", "ACE_bandage_basicItem","ACE_packing_bandageItem","ACE_bandageElasticItem","ACE_tourniquetItem","ACE_splintItem","ACE_morphineItem","ACE_atropineItem","ACE_epinephrineItem","ACE_plasma_ivItem","ACE_plasma_iv_500Item","ACE_plasma_iv250Item","ACE_blood_ivItem","ACE_blood_iv_500Item","ACE_blood_iv_250Item","ACE_saline_ivItem","ACE_saline_iv_500Item","ACE_saline_iv_250Item","ACE_quikclotItem","ACE_nasopharyngeal_tubeItem","ACE_opaItem","ACE_liquidSkinItem","ACE_chestsealItem","ACE_personal_aid_kitItem"}; weapons[] = {"ACE_surgical_kit"}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ACE_gui","ACE_common"}; + requiredAddons[] = {"ACE_common"}; version = VERSION; author[] = {$STR_ACE_Common_ACETeam, "Glowbal"}; authorUrl = "http://csemod.com"; diff --git a/addons/medical/functions/fnc_ActionCheckBloodPressureLocal.sqf b/addons/medical/functions/fnc_ActionCheckBloodPressureLocal.sqf index 9f645e80ad..bd17d769ec 100644 --- a/addons/medical/functions/fnc_ActionCheckBloodPressureLocal.sqf +++ b/addons/medical/functions/fnc_ActionCheckBloodPressureLocal.sqf @@ -51,7 +51,7 @@ if ([_caller] call FUNC(isMedic)) then { _title = format["STR_ACE_CHECK_BLOODPRESSURE"]; _content = ["STR_ACE_CHECK_BLOODPRESSURE_CHECKED_MEDIC", _output]; -[_caller, _title, _content, 0,[[_unit] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)] ] call EFUNC(gui,sendDisplayInformationTo); +[_caller, _title, _content, 0,[[_unit] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)] ] call EFUNC(common,sendDisplayInformationTo); if (_logOutPut != "") then { [_unit,"examine",format["%1 checked Blood Pressure: %2",[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToQuickViewLog); diff --git a/addons/medical/functions/fnc_ActionCheckPulse.sqf b/addons/medical/functions/fnc_ActionCheckPulse.sqf index 52e9158329..00e7f49490 100644 --- a/addons/medical/functions/fnc_ActionCheckPulse.sqf +++ b/addons/medical/functions/fnc_ActionCheckPulse.sqf @@ -19,7 +19,7 @@ if ([_caller] call FUNC(isSetTreatmentMutex)) exitwith {}; _title = format["STR_ACE_CHECK_PULSE"]; _content = ["STR_ACE_CHECK_PULSE_CONTENT"]; -[_caller, _title, _content] call EFUNC(gui,sendDisplayInformationTo); +[_caller, _title, _content] call EFUNC(common,sendDisplayInformationTo); _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; [2 + round(random(1)), @@ -32,8 +32,8 @@ _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; [_caller,false] call FUNC(treatmentMutex); }, // on success { - [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(gui,sendDisplayInformationTo); + [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(common,sendDisplayInformationTo); [(_this select 0),false] call FUNC(treatmentMutex); }, // on failure [_caller, _target] // arguments -] call EFUNC(gui,loadingBar); +] call EFUNC(common,loadingBar); diff --git a/addons/medical/functions/fnc_ActioncheckBloodPressure.sqf b/addons/medical/functions/fnc_ActioncheckBloodPressure.sqf index d96ae8b19c..2f79bad6b2 100644 --- a/addons/medical/functions/fnc_ActioncheckBloodPressure.sqf +++ b/addons/medical/functions/fnc_ActioncheckBloodPressure.sqf @@ -19,7 +19,7 @@ if ([_caller] call FUNC(isSetTreatmentMutex)) exitwith {}; _title = format["STR_ACE_CHECK_BLOODPRESSURE"]; _content = ["STR_ACE_CHECK_BLOODPRESSURE_CONTENT"]; -[_caller, _title, _content] call EFUNC(gui,sendDisplayInformationTo); +[_caller, _title, _content] call EFUNC(common,sendDisplayInformationTo); _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; [2 + round(random(1)), @@ -32,9 +32,9 @@ _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; [_caller,false] call FUNC(treatmentMutex); }, // on success { - [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(gui,sendDisplayInformationTo); + [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(common,sendDisplayInformationTo); [(_this select 0),false] call FUNC(treatmentMutex); }, // on failure [_caller, _target] // arguments -] call EFUNC(gui,loadingBar); +] call EFUNC(common,loadingBar); diff --git a/addons/medical/functions/fnc_actionCarryUnit.sqf b/addons/medical/functions/fnc_actionCarryUnit.sqf index d3cfb35aee..2dd1bb8f7f 100644 --- a/addons/medical/functions/fnc_actionCarryUnit.sqf +++ b/addons/medical/functions/fnc_actionCarryUnit.sqf @@ -87,9 +87,9 @@ _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; }, // on success { - [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(gui,sendDisplayInformationTo); + [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(common,sendDisplayInformationTo); [(_this select 0), false] call FUNC(treatmentMutex); [(_this select 0), objNull,[0, 0, 0]] call EFUNC(common,carryObj); }, // on failure [_caller, _unit, _killOnDrop] // arguments -] call EFUNC(gui,loadingBar); \ No newline at end of file +] call EFUNC(common,loadingBar); \ No newline at end of file diff --git a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf index ae69f52272..5707f403df 100644 --- a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf @@ -44,7 +44,7 @@ if (_heartRate > 1.0) then { _title = "STR_ACE_CHECK_PULSE"; _content = ["STR_ACE_CHECK_PULSE_CHECKED_MEDIC",_heartRateOutput]; -[_caller, _title, _content, 0, [[_unit] call EFUNC(common,getName), round(_heartRate)]] call EFUNC(gui,sendDisplayInformationTo); +[_caller, _title, _content, 0, [[_unit] call EFUNC(common,getName), round(_heartRate)]] call EFUNC(common,sendDisplayInformationTo); if (_logOutPut != "") then { [_unit,"examine",format["%1 checked Heart Rate: %2",[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToQuickViewLog); diff --git a/addons/medical/functions/fnc_actionCheckResponse.sqf b/addons/medical/functions/fnc_actionCheckResponse.sqf index d2201e15f2..4ec2d269ad 100644 --- a/addons/medical/functions/fnc_actionCheckResponse.sqf +++ b/addons/medical/functions/fnc_actionCheckResponse.sqf @@ -19,7 +19,7 @@ if ([_caller] call FUNC(isSetTreatmentMutex)) exitwith {}; _title = format["STR_ACE_CHECK_RESPONSE"]; _content = ["STR_ACE_CHECK_RESPONSE_CONTENT"]; -[_caller, _title, _content] call EFUNC(gui,sendDisplayInformationTo); +[_caller, _title, _content] call EFUNC(common,sendDisplayInformationTo); _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; [2 + round(random(1)), @@ -38,14 +38,14 @@ _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; _title = format["STR_ACE_CHECK_RESPONSE"]; _content = [format[localize "STR_ACE_CHECK_REPONSE_YOU_CHECKED",[_target] call EFUNC(common,getName)],_output]; - [_caller, _title, _content] call EFUNC(gui,sendDisplayInformationTo); + [_caller, _title, _content] call EFUNC(common,sendDisplayInformationTo); [_target,"examine",_output] call FUNC(addToQuickViewLog); [_caller,false] call FUNC(treatmentMutex); }, // on success { - [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(gui,sendDisplayInformationTo); + [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(common,sendDisplayInformationTo); [(_this select 0),false] call FUNC(treatmentMutex); }, // on failure [_caller, _target] // arguments -] call EFUNC(gui,loadingBar); +] call EFUNC(common,loadingBar); diff --git a/addons/medical/functions/fnc_actionDragUnit.sqf b/addons/medical/functions/fnc_actionDragUnit.sqf index d0fa1c70ea..d43b9a54dc 100644 --- a/addons/medical/functions/fnc_actionDragUnit.sqf +++ b/addons/medical/functions/fnc_actionDragUnit.sqf @@ -94,9 +94,9 @@ _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; }, // on success { - [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(gui,sendDisplayInformationTo); + [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(common,sendDisplayInformationTo); [(_this select 0), false] call FUNC(treatmentMutex); [(_this select 0), objNull,[0, 0, 0]] call EFUNC(common,carryObj); }, // on failure [_caller, _unit, _killOnDrop] // arguments -] call EFUNC(gui,loadingBar); +] call EFUNC(common,loadingBar); diff --git a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf index 30363453e2..4d747eb3b5 100644 --- a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf +++ b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf @@ -53,10 +53,10 @@ _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; [_caller,false] call FUNC(treatmentMutex); }, // on success { - [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(gui,sendDisplayInformationTo); + [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(common,sendDisplayInformationTo); [(_this select 0),false] call FUNC(treatmentMutex); }, // on failure [_caller, _target, _selectionName] // arguments -] call EFUNC(gui,loadingBar); +] call EFUNC(common,loadingBar); diff --git a/addons/medical/functions/fnc_handleHeal.sqf b/addons/medical/functions/fnc_handleHeal.sqf index 04e17a5d4c..ffd910116b 100644 --- a/addons/medical/functions/fnc_handleHeal.sqf +++ b/addons/medical/functions/fnc_handleHeal.sqf @@ -19,7 +19,7 @@ if (!(isPlayer _healer) && GVAR(setting_allowAIFullHeal) && !([_unit] call EFUNC [_unit, QGVAR(bandagedWounds),[[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]]] call EFUNC(common,setDefinedVariable); if (_unit != _healer) then { - [_unit,"STR_ACE_BANDAGED","STR_ACE_IS_BANDAGING_YOU", 0, [[_healer] call EFUNC(common,getName)]] call EFUNC(gui,sendDisplayMessageTo); + [_unit,"STR_ACE_BANDAGED","STR_ACE_IS_BANDAGING_YOU", 0, [[_healer] call EFUNC(common,getName)]] call EFUNC(common,sendDisplayMessageTo); }; [_unit,"treatment",format["%1 has patched up the patient",[_healer] call EFUNC(common,getName)]] call FUNC(addActivityToLog); diff --git a/addons/medical/functions/fnc_handleTreatment_Action_AirwayLocal.sqf b/addons/medical/functions/fnc_handleTreatment_Action_AirwayLocal.sqf index a140f74f6b..8d468aa60a 100644 --- a/addons/medical/functions/fnc_handleTreatment_Action_AirwayLocal.sqf +++ b/addons/medical/functions/fnc_handleTreatment_Action_AirwayLocal.sqf @@ -19,7 +19,7 @@ _removeItem = _this select 3; if (!local _target) exitwith{}; -[_target,"STR_ACE_AIRWAY","STR_ACE_IS_TREATING_YOUR_AIRWAY",0, [([_caller] call EFUNC(common,getName))]] call EFUNC(gui,sendDisplayMessageTo); +[_target,"STR_ACE_AIRWAY","STR_ACE_IS_TREATING_YOUR_AIRWAY",0, [([_caller] call EFUNC(common,getName))]] call EFUNC(common,sendDisplayMessageTo); [_target,_removeItem] call FUNC(addToTriageList); diff --git a/addons/medical/functions/fnc_handleTreatment_Action_BandageLocal.sqf b/addons/medical/functions/fnc_handleTreatment_Action_BandageLocal.sqf index c6a09fa4de..e39f12596e 100644 --- a/addons/medical/functions/fnc_handleTreatment_Action_BandageLocal.sqf +++ b/addons/medical/functions/fnc_handleTreatment_Action_BandageLocal.sqf @@ -24,7 +24,7 @@ if (!local _target) exitwith{ }; if (_caller != _target) then { - [_target,"STR_ACE_BANDAGING", "STR_ACE_IS_BANDAGING_YOU", 0, [[_treatingPerson] call EFUNC(common,getName)]] call EFUNC(gui,sendDisplayMessageTo); + [_target,"STR_ACE_BANDAGING", "STR_ACE_IS_BANDAGING_YOU", 0, [[_treatingPerson] call EFUNC(common,getName)]] call EFUNC(common,sendDisplayMessageTo); }; [_target,_removeItem] call FUNC(addToTriageList); diff --git a/addons/medical/functions/fnc_handleTreatment_Action_CPR.sqf b/addons/medical/functions/fnc_handleTreatment_Action_CPR.sqf index 61e12687a7..eea3b459ee 100644 --- a/addons/medical/functions/fnc_handleTreatment_Action_CPR.sqf +++ b/addons/medical/functions/fnc_handleTreatment_Action_CPR.sqf @@ -56,7 +56,7 @@ _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; }, // on success { private ["_caller","_target", "_selectionName", "_prevAnim"]; - [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(gui,sendDisplayInformationTo); + [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(common,sendDisplayInformationTo); if (_prevAnim != "") then { [_caller,_prevAnim, 0] call EFUNC(common,doAnimation); @@ -66,6 +66,6 @@ _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; ["Medical_treatmentCompleted", [_caller, _target, _selectionName, _removeItem]] call ace_common_fnc_localEvent; }, // on failure [_caller, _target, _selectionName, _removeItem, _prevAnim] // arguments -] call EFUNC(gui,loadingBar); +] call EFUNC(common,loadingBar); true; \ No newline at end of file diff --git a/addons/medical/functions/fnc_handleTreatment_Action_Stitching.sqf b/addons/medical/functions/fnc_handleTreatment_Action_Stitching.sqf index a6e9156966..69e8848acf 100644 --- a/addons/medical/functions/fnc_handleTreatment_Action_Stitching.sqf +++ b/addons/medical/functions/fnc_handleTreatment_Action_Stitching.sqf @@ -23,7 +23,7 @@ _selectionName = _this select 2; _removeItem = _this select 3; _prevAnim = _this select 4; -[_caller,"STR_ACE_STITCHING","STR_ACE_START_STITCHING_INJURIES", 0, [[_injuredPerson] call EFUNC(common,getName),_selectionName]] call EFUNC(gui,sendDisplayMessageTo); +[_caller,"STR_ACE_STITCHING","STR_ACE_START_STITCHING_INJURIES", 0, [[_injuredPerson] call EFUNC(common,getName),_selectionName]] call EFUNC(common,sendDisplayMessageTo); _bandagedWounds = [_injuredPerson,QGVAR(bandagedWounds)] call EFUNC(common,getDefinedVariable); _bodyPartN = [_selectionName] call FUNC(getBodyPartNumber); @@ -46,12 +46,12 @@ _caller setvariable [QGVAR(lastStichPerformed), diag_tickTime]; _prevAnim = _args select 4; if ((vehicle _caller != _caller) || ((getPos _caller) distance (_caller getvariable GVAR(ORIGINAL_POSITION_PLAYER))) >= 1) then { - [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(gui,sendDisplayInformationTo); + [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(common,sendDisplayInformationTo); if (_prevAnim != "") then { [_caller,_prevAnim, 0] call EFUNC(common,doAnimation); }; - [QGVAR(treatmentIconID), false, QUOTE(PATHTOF(data\icons\icon_advanced_treatment.paa)), [1,1,1,1]] call EFUNC(gui,displayIcon); + [QGVAR(treatmentIconID), false, QUOTE(PATHTOF(data\icons\icon_advanced_treatment.paa)), [1,1,1,1]] call EFUNC(common,displayIcon); ["Medical_handleTreatment_Stitching", [_caller, _target, _selectionName, _removeItem, false]] call ace_common_fnc_localEvent; ["Medical_treatmentCompleted", [_caller, _target, _selectionName, _removeItem]] call ace_common_fnc_localEvent; @@ -83,7 +83,7 @@ _caller setvariable [QGVAR(lastStichPerformed), diag_tickTime]; if (_prevAnim != "") then { [_caller,_prevAnim, 0] call EFUNC(common,doAnimation); }; - [QGVAR(treatmentIconID), false, QUOTE(PATHTOF(data\icons\icon_advanced_treatment.paa)), [1,1,1,1]] call EFUNC(gui,displayIcon); + [QGVAR(treatmentIconID), false, QUOTE(PATHTOF(data\icons\icon_advanced_treatment.paa)), [1,1,1,1]] call EFUNC(common,displayIcon); ["Medical_handleTreatment_Stitching", [_caller, _target, _selectionName, _removeItem, true]] call ace_common_fnc_localEvent; ["Medical_treatmentCompleted", [_caller, _target, _selectionName, _removeItem]] call ace_common_fnc_localEvent; @@ -99,6 +99,6 @@ _caller setvariable [QGVAR(lastStichPerformed), diag_tickTime]; {}, // on success {}, // on failure [_caller] // arguments -] call EFUNC(gui,loadingBar); +] call EFUNC(common,loadingBar); true; \ No newline at end of file diff --git a/addons/medical/functions/fnc_handleTreatment_Action_fullHeal.sqf b/addons/medical/functions/fnc_handleTreatment_Action_fullHeal.sqf index 53f82f74f0..d48ac82e1a 100644 --- a/addons/medical/functions/fnc_handleTreatment_Action_fullHeal.sqf +++ b/addons/medical/functions/fnc_handleTreatment_Action_fullHeal.sqf @@ -42,7 +42,7 @@ _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; [_caller,_prevAnim, 0] call EFUNC(common,doAnimation); }; - [QGVAR(treatmentIconID), false, "", [1,1,1,1]] call EFUNC(gui,displayIcon); + [QGVAR(treatmentIconID), false, "", [1,1,1,1]] call EFUNC(common,displayIcon); ["Medical_handleTreatment_FullHeal", [_caller, _target, _selectionName, _removeItem, true]] call ace_common_fnc_localEvent; ["Medical_treatmentCompleted", [_caller, _target, _selectionName, _removeItem]] call ace_common_fnc_localEvent; }, // on success @@ -54,18 +54,18 @@ _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; _removeItem = _this select 3; _prevAnim = _this select 4; - [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(gui,sendDisplayInformationTo); + [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(common,sendDisplayInformationTo); if (_prevAnim != "") then { [_caller,_prevAnim, 0] call EFUNC(common,doAnimation); }; - [QGVAR(treatmentIconID), false, "", [1,1,1,1]] call EFUNC(gui,displayIcon); + [QGVAR(treatmentIconID), false, "", [1,1,1,1]] call EFUNC(common,displayIcon); ["Medical_handleTreatment_FullHeal", [_caller, _target, _selectionName, _removeItem, false]] call ace_common_fnc_localEvent; ["Medical_treatmentCompleted", [_caller, _target, _selectionName, _removeItem]] call ace_common_fnc_localEvent; }, // on failure [_caller, _target, _selectionName, _removeItem, _prevAnim] // arguments -] call EFUNC(gui,loadingBar); +] call EFUNC(common,loadingBar); if (!(_unit getvariable [QEGVAR(common,isDead),false]) && alive _unit) then { diff --git a/addons/medical/functions/fnc_handleTreatment_Category_Advanced.sqf b/addons/medical/functions/fnc_handleTreatment_Category_Advanced.sqf index 2189a57a29..e74f86c438 100644 --- a/addons/medical/functions/fnc_handleTreatment_Category_Advanced.sqf +++ b/addons/medical/functions/fnc_handleTreatment_Category_Advanced.sqf @@ -31,7 +31,7 @@ if (vehicle _caller == _caller && (vehicle _target == _target) && !(stance _call if (ACE_player == _caller) then { // Displaying the treatment icon action - [QGVAR(treatmentIconID), true, QUOTE(PATHTOF(data\icons\icon_advanced_treatment.paa)), [1,1,1,1]] call EFUNC(gui,displayIcon); + [QGVAR(treatmentIconID), true, QUOTE(PATHTOF(data\icons\icon_advanced_treatment.paa)), [1,1,1,1]] call EFUNC(common,displayIcon); }; _isHandled = switch (_removeItem) do { @@ -77,7 +77,7 @@ _isHandled = switch (_removeItem) do { _selectionName = _this select 2; _removeItem = _this select 3; _prevAnim = _this select 4; - [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(gui,sendDisplayInformationTo); + [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(common,sendDisplayInformationTo); if (_prevAnim != "") then { [_caller,_prevAnim, 0] call EFUNC(common,doAnimation); @@ -87,7 +87,7 @@ _isHandled = switch (_removeItem) do { ["Medical_treatmentCompleted", [_caller, _target, _selectionName, _removeItem]] call ace_common_fnc_localEvent; }, // on failure [_caller, _target, _selectionName, _removeItem, _prevAnim] // arguments - ] call EFUNC(gui,loadingBar); + ] call EFUNC(common,loadingBar); true; }; }; diff --git a/addons/medical/functions/fnc_handleTreatment_Category_Airway.sqf b/addons/medical/functions/fnc_handleTreatment_Category_Airway.sqf index 3456e6df18..0c6d2b0f65 100644 --- a/addons/medical/functions/fnc_handleTreatment_Category_Airway.sqf +++ b/addons/medical/functions/fnc_handleTreatment_Category_Airway.sqf @@ -31,7 +31,7 @@ if (_part == 0 || _part == 1) exitwith { if (ACE_player == _caller) then { // Displaying the treatment icon action - [QGVAR(treatmentIconID), true, QUOTE(PATHTOF(data\icons\icon_airway_management.paa)), [1,1,1,1]] call EFUNC(gui,displayIcon); + [QGVAR(treatmentIconID), true, QUOTE(PATHTOF(data\icons\icon_airway_management.paa)), [1,1,1,1]] call EFUNC(common,displayIcon); }; // Get the current position for the treatment person @@ -57,7 +57,7 @@ if (_part == 0 || _part == 1) exitwith { }, // on success { private ["_caller","_target", "_selectionName", "_prevAnim"]; - [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(gui,sendDisplayInformationTo); + [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(common,sendDisplayInformationTo); if (_prevAnim != "") then { [_caller,_prevAnim, 0] call EFUNC(common,doAnimation); @@ -67,7 +67,7 @@ if (_part == 0 || _part == 1) exitwith { ["Medical_treatmentCompleted", [_caller, _target, _selectionName, _removeItem]] call ace_common_fnc_localEvent; }, // on failure [_caller, _target, _selectionName, _removeItem, _prevAnim] // arguments - ] call EFUNC(gui,loadingBar); + ] call EFUNC(common,loadingBar); true; }; // TODO display message to caller diff --git a/addons/medical/functions/fnc_handleTreatment_Category_Bandaging.sqf b/addons/medical/functions/fnc_handleTreatment_Category_Bandaging.sqf index c1113166f5..64239d7a83 100644 --- a/addons/medical/functions/fnc_handleTreatment_Category_Bandaging.sqf +++ b/addons/medical/functions/fnc_handleTreatment_Category_Bandaging.sqf @@ -39,11 +39,11 @@ if (ACE_player == _caller) then { }; default { - [_caller, "STR_ACE_BANDAGING", "STR_ACE_APPLY_BANDAGE", 0, [[_target] call EFUNC(common,getName), _selectionName]] call EFUNC(gui,sendDisplayMessageTo); + [_caller, "STR_ACE_BANDAGING", "STR_ACE_APPLY_BANDAGE", 0, [[_target] call EFUNC(common,getName), _selectionName]] call EFUNC(common,sendDisplayMessageTo); }; }; // Displaying the treatment icon action - [QGVAR(treatmentIconID), true, QUOTE(PATHTOF(data\icons\bandage_fracture_small.paa)), [1,1,1,1]] call EFUNC(gui,displayIcon); + [QGVAR(treatmentIconID), true, QUOTE(PATHTOF(data\icons\bandage_fracture_small.paa)), [1,1,1,1]] call EFUNC(common,displayIcon); }; // Get the current position for the treatment person @@ -83,7 +83,7 @@ if (isnil QGVAR(setting_bandageWaitingTime)) then { }, // on success { private ["_caller","_target","_selectedData", "_selectionName", "_prevAnim"]; - [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(gui,sendDisplayInformationTo); + [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(common,sendDisplayInformationTo); if (_prevAnim != "") then { [_caller,_prevAnim, 0] call EFUNC(common,doAnimation); @@ -92,6 +92,6 @@ if (isnil QGVAR(setting_bandageWaitingTime)) then { ["Medical_treatmentCompleted", [_caller, _target, _selectionName, _removeItem]] call ace_common_fnc_localEvent; }, // on failure [_caller, _target, _selectionName, _removeItem, _prevAnim] // arguments -] call EFUNC(gui,loadingBar); +] call EFUNC(common,loadingBar); true; \ No newline at end of file diff --git a/addons/medical/functions/fnc_handleTreatment_Category_Medication.sqf b/addons/medical/functions/fnc_handleTreatment_Category_Medication.sqf index f57ab20783..980c478226 100644 --- a/addons/medical/functions/fnc_handleTreatment_Category_Medication.sqf +++ b/addons/medical/functions/fnc_handleTreatment_Category_Medication.sqf @@ -28,7 +28,7 @@ if (vehicle _caller == _caller && (vehicle _target == _target) && !(stance _call if (ACE_player == _caller) then { // Displaying the treatment icon action - [QGVAR(treatmentIconID), true, QUOTE(PATHTOF(data\icons\medication_small.paa)), [1,1,1,1]] call EFUNC(gui,displayIcon); + [QGVAR(treatmentIconID), true, QUOTE(PATHTOF(data\icons\medication_small.paa)), [1,1,1,1]] call EFUNC(common,displayIcon); }; // Get the current position for the treatment person @@ -54,7 +54,7 @@ _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; }, // on success { private ["_caller","_target", "_selectionName", "_prevAnim"]; - [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(gui,sendDisplayInformationTo); + [(_this select 0), "STR_ACE_CANCELED", ["STR_ACE_ACTION_CANCELED","STR_ACE_YOU_MOVED_AWAY"]] call EFUNC(common,sendDisplayInformationTo); if (_prevAnim != "") then { [_caller,_prevAnim, 0] call EFUNC(common,doAnimation); @@ -64,6 +64,6 @@ _caller setvariable [QGVAR(StartingPositionHandleTreatment), getPos _caller]; ["Medical_treatmentCompleted", [_caller, _target, _selectionName, _removeItem]] call ace_common_fnc_localEvent; }, // on failure [_caller, _target, _selectionName, _removeItem, _prevAnim] // arguments -] call EFUNC(gui,loadingBar); +] call EFUNC(common,loadingBar); true; diff --git a/addons/medical/functions/fnc_initalizeModuleCMS.sqf b/addons/medical/functions/fnc_initalizeModuleCMS.sqf index 40e50c6fb0..79d9f8083d 100644 --- a/addons/medical/functions/fnc_initalizeModuleCMS.sqf +++ b/addons/medical/functions/fnc_initalizeModuleCMS.sqf @@ -46,7 +46,7 @@ if (GVAR(setting_AdvancedLevel) == -1) exitwith{}; GVAR(isEnabled) = true; -waituntil{!isnil "ACE_gui" && !isnil "ACE_common"}; +waituntil{!isnil "ACE_common"}; if (GVAR(setting_AdvancedLevel) > 0) then { diff --git a/addons/medical/functions/fnc_moduleAssignMedicalEquipment.sqf b/addons/medical/functions/fnc_moduleAssignMedicalEquipment.sqf index f26cfd9ffc..7ffeea2002 100644 --- a/addons/medical/functions/fnc_moduleAssignMedicalEquipment.sqf +++ b/addons/medical/functions/fnc_moduleAssignMedicalEquipment.sqf @@ -21,7 +21,6 @@ private ["_logic","_setting","_objects", "_medicsLoadout", "_nonMedics", "_code" _logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; if (!isNull _logic) then { _setting = _logic getvariable ["equipment",0]; - waituntil {!isnil "ACE_gui"}; // ensure the player unit is available. waituntil {time>0}; _start = diag_tickTime; diff --git a/addons/medical/functions/fnc_onTreatmentCompleted.sqf b/addons/medical/functions/fnc_onTreatmentCompleted.sqf index 4505575f00..146e55c3b1 100644 --- a/addons/medical/functions/fnc_onTreatmentCompleted.sqf +++ b/addons/medical/functions/fnc_onTreatmentCompleted.sqf @@ -23,4 +23,4 @@ if (primaryWeapon _caller == "ACE_FakePrimaryWeapon") then { [_caller,false] call FUNC(treatmentMutex); // TODO: BUG: if AI finishes treatment, it will also hide the icon for the player -[QGVAR(treatmentIconID), false, "", [1,1,1,1]] call EFUNC(gui,displayIcon); +[QGVAR(treatmentIconID), false, "", [1,1,1,1]] call EFUNC(common,displayIcon); diff --git a/addons/medical/ui/define.hpp b/addons/medical/ui/define.hpp index 3af837e4f1..be45e0ff90 100644 --- a/addons/medical/ui/define.hpp +++ b/addons/medical/ui/define.hpp @@ -1 +1 @@ -#include "\z\ace\addons\gui\UI\define.hpp" \ No newline at end of file +#include "\z\ace\addons\common\define.hpp" \ No newline at end of file diff --git a/addons/medical/ui/menu.hpp b/addons/medical/ui/menu.hpp index f65b5ab807..db7266d0e7 100644 --- a/addons/medical/ui/menu.hpp +++ b/addons/medical/ui/menu.hpp @@ -1,8 +1,8 @@ class GVAR(medicalMenu) { idd = 314412; movingEnable = true; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(medicalMenu)), _this select 0)]; [ARR_2(QUOTE(QGVAR(id)), true)] call EFUNC(gui,blurScreen); [_this select 0] call FUNC(onMenuOpen);); - onUnload = QUOTE([ARR_2(QUOTE(QGVAR(id)), false)] call EFUNC(gui,blurScreen); [ARR_2(QUOTE(QGVAR(onMenuOpen)), 'onEachFrame')] call BIS_fnc_removeStackedEventHandler;); + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(medicalMenu)), _this select 0)]; [ARR_2(QUOTE(QGVAR(id)), true)] call EFUNC(common,blurScreen); [_this select 0] call FUNC(onMenuOpen);); + onUnload = QUOTE([ARR_2(QUOTE(QGVAR(id)), false)] call EFUNC(common,blurScreen); [ARR_2(QUOTE(QGVAR(onMenuOpen)), 'onEachFrame')] call BIS_fnc_removeStackedEventHandler;); class controlsBackground { class HeaderBackground: ACE_gui_backgroundBase{ idc = -1; From 0ae41609c2db42373540a40319bdebaa0fca202d Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 20:20:03 +0100 Subject: [PATCH 141/211] no fcs for ais --- addons/fcs/functions/fnc_firedEH.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/fcs/functions/fnc_firedEH.sqf b/addons/fcs/functions/fnc_firedEH.sqf index 38e2c90f3c..237b68fc87 100644 --- a/addons/fcs/functions/fnc_firedEH.sqf +++ b/addons/fcs/functions/fnc_firedEH.sqf @@ -25,7 +25,8 @@ private ["_gunner", "_turret"]; _gunner = [_vehicle, _weapon] call EFUNC(common,getGunner); _turret = [_gunner] call EFUNC(common,getTurretIndex); -//if (ACE_player != _gunner) exitWith {}; // global +// Exit if the unit isn't a player +if !([_unit] call EFUNC(common,isPlayer)) exitWith {}; private ["_FCSMagazines", "_FCSElevation", "_offset"]; From 13c21275744977da578b973f0a2c393b6cc85f69 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 14 Feb 2015 20:29:07 +0100 Subject: [PATCH 142/211] Clean up of old CSE code Removed all _F suffixes Reorganized the RPEP list. Removed unnecessary functions. --- addons/common/CfgEventHandlers.hpp | 2 +- addons/common/XEH_preInit.sqf | 131 ++++++++---------- .../functions/fnc_broadcastSound3D_f.sqf | 16 --- .../functions/fnc_closeAllDialogs_f.sqf | 14 -- ...{fnc_disableAI_f.sqf => fnc_disableAI.sqf} | 0 addons/common/functions/fnc_dropWeapon_f.sqf | 39 ------ addons/common/functions/fnc_findItem.sqf | 25 ---- addons/common/functions/fnc_findMagazine.sqf | 21 --- .../common/functions/fnc_getCanInteract.sqf | 12 -- .../functions/fnc_getCustomResults_f.sqf | 45 ------ .../common/functions/fnc_getWeaponItems_f.sqf | 14 -- .../{fnc_inWater_f.sqf => fnc_inWater.sqf} | 0 addons/common/functions/fnc_isHC.sqf | 24 ---- ..._isModLoaded_f.sqf => fnc_isModLoaded.sqf} | 0 ...nc_loadPerson_f.sqf => fnc_loadPerson.sqf} | 6 +- ...sonLocal_f.sqf => fnc_loadPersonLocal.sqf} | 6 +- .../common/functions/fnc_moveToTempGroup.sqf | 6 +- ...efaults_f.sqf => fnc_resetAllDefaults.sqf} | 10 +- .../common/functions/fnc_revealObject_f.sqf | 15 -- ..._sendRequest_f.sqf => fnc_sendRequest.sqf} | 0 .../fnc_setDisableUserInputStatus.sqf | 10 +- ...{fnc_setVolume_f.sqf => fnc_setVolume.sqf} | 0 ...upSide_f.sqf => fnc_switchToGroupSide.sqf} | 6 +- ...nloadPerson_f.sqf => fnc_unloadPerson.sqf} | 8 +- addons/medical/XEH_postInit.sqf | 4 +- addons/medical/XEH_preInit.sqf | 4 +- .../medical/functions/fnc_actionCarryUnit.sqf | 2 +- .../medical/functions/fnc_actionDragUnit.sqf | 2 +- .../medical/functions/fnc_actionLoadUnit.sqf | 2 +- .../functions/fnc_actionPlaceInBodyBag.sqf | 2 +- .../functions/fnc_actionUnloadUnit.sqf | 2 +- ...OfBody_f.sqf => fnc_cleanUpCopyOfBody.sqf} | 6 +- .../functions/fnc_getBloodVolumeChange.sqf | 2 +- .../functions/fnc_getUnconsciousCondition.sqf | 6 +- .../medical/functions/fnc_handleDropUnit.sqf | 2 +- ...c_handleTreatment_Action_fullHealLocal.sqf | 2 +- .../functions/fnc_handleUnitVitals.sqf | 2 +- ...opyOfBody_f.sqf => fnc_makeCopyOfBody.sqf} | 0 .../functions/fnc_moduleBasicRevive.sqf | 8 +- addons/medical/functions/fnc_onKilled.sqf | 4 +- .../functions/fnc_onStartMovingUnit.sqf | 2 +- .../fnc_registerUnconsciousCondition.sqf | 6 +- addons/medical/functions/fnc_setDead.sqf | 16 +-- .../functions/fnc_setUnconsciousState.sqf | 14 +- 44 files changed, 129 insertions(+), 369 deletions(-) delete mode 100644 addons/common/functions/fnc_broadcastSound3D_f.sqf delete mode 100644 addons/common/functions/fnc_closeAllDialogs_f.sqf rename addons/common/functions/{fnc_disableAI_f.sqf => fnc_disableAI.sqf} (100%) delete mode 100644 addons/common/functions/fnc_dropWeapon_f.sqf delete mode 100644 addons/common/functions/fnc_findItem.sqf delete mode 100644 addons/common/functions/fnc_findMagazine.sqf delete mode 100644 addons/common/functions/fnc_getCanInteract.sqf delete mode 100644 addons/common/functions/fnc_getCustomResults_f.sqf delete mode 100644 addons/common/functions/fnc_getWeaponItems_f.sqf rename addons/common/functions/{fnc_inWater_f.sqf => fnc_inWater.sqf} (100%) delete mode 100644 addons/common/functions/fnc_isHC.sqf rename addons/common/functions/{fnc_isModLoaded_f.sqf => fnc_isModLoaded.sqf} (100%) rename addons/common/functions/{fnc_loadPerson_f.sqf => fnc_loadPerson.sqf} (86%) rename addons/common/functions/{fnc_loadPersonLocal_f.sqf => fnc_loadPersonLocal.sqf} (83%) rename addons/common/functions/{fnc_resetAllDefaults_f.sqf => fnc_resetAllDefaults.sqf} (74%) delete mode 100644 addons/common/functions/fnc_revealObject_f.sqf rename addons/common/functions/{fnc_sendRequest_f.sqf => fnc_sendRequest.sqf} (100%) rename addons/common/functions/{fnc_setVolume_f.sqf => fnc_setVolume.sqf} (100%) rename addons/common/functions/{fnc_switchToGroupSide_f.sqf => fnc_switchToGroupSide.sqf} (92%) rename addons/common/functions/{fnc_unloadPerson_f.sqf => fnc_unloadPerson.sqf} (89%) rename addons/medical/functions/{fnc_cleanUpCopyOfBody_f.sqf => fnc_cleanUpCopyOfBody.sqf} (76%) rename addons/medical/functions/{fnc_makeCopyOfBody_f.sqf => fnc_makeCopyOfBody.sqf} (100%) diff --git a/addons/common/CfgEventHandlers.hpp b/addons/common/CfgEventHandlers.hpp index b9c5d7e4ce..522df03d4f 100644 --- a/addons/common/CfgEventHandlers.hpp +++ b/addons/common/CfgEventHandlers.hpp @@ -38,7 +38,7 @@ class Extended_Respawn_EventHandlers { respawn = QUOTE(_this call FUNC(setName)); }; class GVAR(RESETDefaults) { - respawn = QUOTE(_this call FUNC(resetAllDefaults_F)); + respawn = QUOTE(_this call FUNC(resetAllDefaults)); }; }; }; diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 64a06a0f8c..7a70ae7bb3 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -15,12 +15,16 @@ PREP(addSetting); PREP(adminKick); PREP(ambientBrightness); PREP(applyForceWalkStatus); +PREP(beingCarried); PREP(binarizeNumber); PREP(callCustomEventHandlers); PREP(callCustomEventHandlersGlobal); PREP(canGetInPosition); +PREP(canInteract); PREP(canInteractWith); PREP(canUseWeapon); +PREP(carriedByObj); +PREP(carryObj); PREP(changeProjectileDirection); PREP(checkPBOs); PREP(claim); @@ -30,6 +34,10 @@ PREP(codeToString); PREP(convertKeyCode); PREP(createOrthonormalReference); PREP(currentChannel); +PREP(debug); +PREP(debugModule); +PREP(defineVariable); +PREP(disableAI); PREP(disableUserInput); PREP(displayText); PREP(displayTextPicture); @@ -42,12 +50,21 @@ PREP(execRemoteFnc); PREP(executePersistent); PREP(filter); PREP(fixLoweredRifleAnimation); +PREP(getAllDefinedSetVariables); PREP(getAllGear); PREP(getCaptivityStatus); +PREP(getCarriedBy); +PREP(getCarriedObj); PREP(getConfigCommander); PREP(getConfigGunner); +PREP(getDeathAnim); PREP(getDefaultAnim); +PREP(getDefinedVariable); +PREP(getDefinedVariableDefault); +PREP(getDefinedVariableInfo); PREP(getDoorTurrets); +PREP(getFirstObjectIntersection); +PREP(getFirstTerrainIntersection); PREP(getForceWalkStatus); PREP(getGunner); PREP(getHitPoints); @@ -56,6 +73,7 @@ PREP(getInPosition); PREP(getMarkerType); PREP(getName); PREP(getNumberFromMissionSQM); +PREP(getNumberMagazinesIn); PREP(getPitchBankYaw); PREP(getSettingData); PREP(getStringFromMissionSQM); @@ -74,29 +92,44 @@ PREP(getUavControlPosition); PREP(getVehicleCargo); PREP(getVehicleCodriver); PREP(getVehicleCrew); +PREP(getVersion); PREP(getWeaponAzimuthAndInclination); PREP(getWeaponIndex); PREP(getWeaponType); PREP(getWindDirection); PREP(goKneeling); PREP(hadamardProduct); +PREP(hasItem); +PREP(hasMagazine); +PREP(inheritsFrom); +PREP(insertionSort); PREP(interpolateFromArray); PREP(inTransitionAnim); +PREP(inWater); +PREP(isArrested); PREP(isAutoWind); +PREP(isAwake); PREP(isEngineer); PREP(isEOD); +PREP(isHC); PREP(isInBuilding); +PREP(isModLoaded); PREP(isPlayer); PREP(isTurnedOut); PREP(letterToCode); +PREP(limitMovementSpeed); +PREP(loadPerson); +PREP(loadPersonLocal); PREP(loadSettingsFromProfile); PREP(loadSettingsOnServer); PREP(map); PREP(moduleCheckPBOs); PREP(moduleLSDVehicles); +PREP(moveToTempGroup); PREP(muteUnit); PREP(numberToDigits); PREP(numberToDigitsString); +PREP(onAnswerRequest); PREP(onLoadRscDisplayChannel); PREP(owned); PREP(player); @@ -104,33 +137,53 @@ PREP(playerSide); PREP(progressBar); PREP(queueAnimation); PREP(readSettingFromModule); +PREP(receiveRequest); PREP(removeActionEventHandler); PREP(removeActionMenuEventHandler); PREP(removeCameraEventHandler); PREP(removeCustomEventHandler); PREP(removeMapMarkerCreatedEventHandler); PREP(removeScrollWheelEventHandler); +PREP(requestCallback); +PREP(resetAllDefaults); PREP(restoreVariablesJIP); PREP(revertKeyCodeLocalized); PREP(sanitizeString); +PREP(sendRequest); PREP(serverLog); +PREP(setArrestState); +PREP(setCanInteract); PREP(setCaptivityStatus); +PREP(setCarriedBy); +PREP(setDefinedVariable); +PREP(setDisableUserInputStatus); PREP(setForceWalkStatus); +PREP(setHearingCapability); PREP(setName); PREP(setParameter); PREP(setPitchBankYaw); -PREP(setVariableJIP); -PREP(setVariablePublic); +PREP(setProne); PREP(setSetting); PREP(setSettingFromConfig); +PREP(setVariableJIP); +PREP(setVariablePublic); +PREP(setVolume); +PREP(sortAlphabeticallyBy); +PREP(stringCompare); PREP(stringToColoredText); +PREP(string_removeWhiteSpace); PREP(subString); +PREP(switchToGroupSide); +PREP(throttledPublicVariable); PREP(toBin); PREP(toBitmask); PREP(toHex); PREP(toNumber); -PREP(throttledPublicVariable); +PREP(uniqueElementsOnly); +PREP(unloadPerson); PREP(unmuteUnit); +PREP(useItem); +PREP(useMagazine); PREP(waitAndExecute); // ACE_Debug @@ -195,74 +248,6 @@ if (hasInterface) then { }, 0, []] call cba_fnc_addPerFrameHandler; }; -PREP(stringCompare); -PREP(string_removeWhiteSpace); -PREP(isHC); -PREP(sendRequest_f); -PREP(requestCallback); -PREP(receiveRequest); -PREP(onAnswerRequest); -PREP(debug); -PREP(debugModule); -PREP(defineVariable); -PREP(setDefinedVariable); -PREP(getDefinedVariable); -PREP(getAllDefinedSetVariables); -PREP(getDefinedVariableInfo); -PREP(getDefinedVariableDefault); -PREP(getDeathAnim); -PREP(insertionSort); -PREP(uniqueElementsOnly); -PREP(sortAlphabeticallyBy); -PREP(hasMagazine); -PREP(useMagazine); -PREP(findMagazine); -PREP(hasItem); -PREP(useItem); -PREP(findItem); -PREP(getNumberMagazinesIn); -PREP(setCanInteract); -PREP(getCanInteract); -PREP(canInteract); -PREP(resetAllDefaults_f); -PREP(broadcastSound3D_f); - -PREP(isAwake); -PREP(setProne); - -PREP(setDisableUserInputStatus); - -PREP(dropWeapon_f); -PREP(inWater_f); -PREP(setVolume_f); -PREP(closeAllDialogs_f); -PREP(disableAI_f); -PREP(switchToGroupSide_f); -PREP(getFirstObjectIntersection); -PREP(getFirstTerrainIntersection); -PREP(setHearingCapability); -PREP(revealObject_f); -PREP(getWeaponItems_f); -PREP(isModLoaded_f); -PREP(inheritsFrom); -PREP(getVersion); -PREP(carryObj); -PREP(carriedByObj); -PREP(getCarriedObj); -PREP(getCarriedBy); -PREP(beingCarried); -PREP(setCarriedBy); - - -PREP(moveToTempGroup); - - -PREP(limitMovementSpeed); -PREP(setArrestState); -PREP(isArrested); -PREP(loadPerson_F); -PREP(loadPersonLocal_F); -PREP(unloadPerson_F); - - ADDON = true; + +isHC = !(hasInterface || isDedicated); diff --git a/addons/common/functions/fnc_broadcastSound3D_f.sqf b/addons/common/functions/fnc_broadcastSound3D_f.sqf deleted file mode 100644 index 93f95bb431..0000000000 --- a/addons/common/functions/fnc_broadcastSound3D_f.sqf +++ /dev/null @@ -1,16 +0,0 @@ -/** - * fn_broadcastSound3D_f.sqf - * @Descr: Plays a sound in 3D - * @Author: Glowbal - * - * @Arguments: [unit OBJECT, sound STRING] - * @Return: void - * @PublicAPI: true - */ - -#include "script_component.hpp" - -if (isDedicated) exitwith{}; -_unit = [_this, 0, ObjNull,[ObjNull]] call BIS_fnc_Param; -_sound = [_this, 1, "",[""]] call BIS_fnc_Param; -_unit say3D _sound; \ No newline at end of file diff --git a/addons/common/functions/fnc_closeAllDialogs_f.sqf b/addons/common/functions/fnc_closeAllDialogs_f.sqf deleted file mode 100644 index b5ce1bc280..0000000000 --- a/addons/common/functions/fnc_closeAllDialogs_f.sqf +++ /dev/null @@ -1,14 +0,0 @@ -/** - * fn_closeAllDialogs_f.sqf - * @Descr: Close all dialogs - * @Author: Glowbal - * - * @Arguments: [] - * @Return: void - * @PublicAPI: true - */ -#include "script_component.hpp" - -while {dialog} do { - closeDialog 0; -}; \ No newline at end of file diff --git a/addons/common/functions/fnc_disableAI_f.sqf b/addons/common/functions/fnc_disableAI.sqf similarity index 100% rename from addons/common/functions/fnc_disableAI_f.sqf rename to addons/common/functions/fnc_disableAI.sqf diff --git a/addons/common/functions/fnc_dropWeapon_f.sqf b/addons/common/functions/fnc_dropWeapon_f.sqf deleted file mode 100644 index bf1358b5e7..0000000000 --- a/addons/common/functions/fnc_dropWeapon_f.sqf +++ /dev/null @@ -1,39 +0,0 @@ -/** - * fn_dropWeapon_f.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ -#include "script_component.hpp" -private ["_unit","_currentWeapon","_currentAnimation", "_WeaponHolder"]; -_unit = [_this, 0, ObjNull,[ObjNull]] call BIS_fnc_Param; - -_currentWeapon = currentWeapon _unit; -_currentAnimation = animationState _unit; -_WeaponHolder = "GroundWeaponHolder" createVehicle position _unit; - -_unit removeWeapon _currentWeapon; -_weaponHolder addWeaponCargoGlobal [_currentWeapon, 1]; -//_unit action [ "DropWeapon", _WeaponHolder, _currentWeapon ]; -_WeaponHolder setPos (getPos _unit); -//_unit switchMove _currentAnimation; - -_primairyWeapon = primaryWeapon _unit; -_secondairyWeapon = secondaryWeapon _unit; -_handGunWeapon = handgunWeapon _unit; - -switch (_currentWeapon) do { - case _primairyWeapon: { - - }; - case _secondairyWeapon: { - - }; - case _handGunWeapon: { - - }; - default {}; -}; \ No newline at end of file diff --git a/addons/common/functions/fnc_findItem.sqf b/addons/common/functions/fnc_findItem.sqf deleted file mode 100644 index 5c4469ea7f..0000000000 --- a/addons/common/functions/fnc_findItem.sqf +++ /dev/null @@ -1,25 +0,0 @@ -/** - * fn_findItem.sqf - * @Descr: - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: true - */ -#include "script_component.hpp" -private ["_unit","_magazine","_return"]; -_unit = _this select 0; -_item = _this select 1; - -if (_item in (uniformItems _unit)) exitwith {1}; -if (_item in (vestItems _unit)) exitwith {2}; -if (_item in (backpackItems _unit)) exitwith {3}; -if (_item in (assignedItems _unit)) exitwith {4}; -if (_item in (primaryWeaponItems _unit)) exitwith {5}; -if (_item in (secondaryWeaponItems _unit)) exitwith {6}; -if (_item in (handgunItems _unit)) exitwith {7}; -if (_item in (items _unit)) exitwith {8}; // in case it is in items but cannot be found in any other container (should never reach this) - -// If we cannot find the item, return 0. -0; \ No newline at end of file diff --git a/addons/common/functions/fnc_findMagazine.sqf b/addons/common/functions/fnc_findMagazine.sqf deleted file mode 100644 index 549d016e8d..0000000000 --- a/addons/common/functions/fnc_findMagazine.sqf +++ /dev/null @@ -1,21 +0,0 @@ -/** - * fn_findMagazine.sqf - * @Descr: Find where the current magazines are. Order: uniform, vest, backpack, any. - * @Author: Glowbal - * - * @Arguments: [unit OBJECT, magazine STRING (Classname of magazine)] - * @Return: NUMBER 0 = none, 1 = in uniform, 2 = in vest, 3 = in backpack, 4 = found outside container - * @PublicAPI: true - */ -#include "script_component.hpp" -private ["_unit","_magazine"]; -_unit = _this select 0; -_magazine = _this select 1; - -if (_magazine in (getMagazineCargo uniformContainer _unit)) exitwith {1}; -if (_magazine in (getMagazineCargo vestContainer _unit)) exitwith {2}; -if (_magazine in (getMagazineCargo backpackContainer _unit)) exitwith {3}; -if (_magazine in (magazines _unit)) exitwith {4}; // in case it cannot be found in any other container. Most likely loaded in a weapon. - -// If we cannot find the item, return 0. -0; \ No newline at end of file diff --git a/addons/common/functions/fnc_getCanInteract.sqf b/addons/common/functions/fnc_getCanInteract.sqf deleted file mode 100644 index 87f572b93d..0000000000 --- a/addons/common/functions/fnc_getCanInteract.sqf +++ /dev/null @@ -1,12 +0,0 @@ -/** - * fn_getCanInteract.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ -#include "script_component.hpp" - -((_this select 0) getvariable [QGVAR(canInteract),0]) \ No newline at end of file diff --git a/addons/common/functions/fnc_getCustomResults_f.sqf b/addons/common/functions/fnc_getCustomResults_f.sqf deleted file mode 100644 index 4b68f85c9c..0000000000 --- a/addons/common/functions/fnc_getCustomResults_f.sqf +++ /dev/null @@ -1,45 +0,0 @@ -/** - * fn_getCustomResults_f.sqf - * @Descr: Executes custom results eventhandlers, collects their output and returns this. - * @Author: Glowbal - * - * @Arguments: [arguments ANY, handle STRING] - * @Return: ARRAY Collection of all return values of all executed CustomResult handlers - * @PublicAPI: true - */ - -#include "script_component.hpp" - -private ["_arguments","_handle","_ehCfg","_eventHandlerCollection","_eventHandlerName","_cfg","_code","_classType", "_return"]; -_arguments = _this select 0; -_handle = _this select 1; - -_eventHandlerName = ("ace_f_custom_results_eventhandler_" + _handle); -_eventHandlerCollection = missionNamespace getvariable _eventHandlerName; -if (isnil "_eventHandlerCollection") then { - _eventHandlerCollection = []; - - // TODO Get a replacement for this - _cfg = (ConfigFile >> "Advanced_Combat_Environment" >> "CustomResults" >> _handle); - if (isClass _cfg) then { - _numberOfEH = count _cfg; - for [{_EHiterator=0}, {(_EHiterator< _numberOfEH)}, {_EHiterator=_EHiterator+1}] do { - _ehCfg = _cfg select _EHiterator; - if (isClass _ehCfg) then { - _classType = (ConfigName _ehCfg); - _code = (compile getText(_ehCfg >> "onCall")); - _eventHandlerCollection pushback [_classType, _code]; - true; - }; - }; - }; - missionNamespace setvariable [_eventHandlerName, _eventHandlerCollection]; -}; - -_return = []; -{ - _return pushback (_arguments call (_x select 1)); - false; -}count _eventHandlerCollection; - -_return diff --git a/addons/common/functions/fnc_getWeaponItems_f.sqf b/addons/common/functions/fnc_getWeaponItems_f.sqf deleted file mode 100644 index d18ce28a72..0000000000 --- a/addons/common/functions/fnc_getWeaponItems_f.sqf +++ /dev/null @@ -1,14 +0,0 @@ -/** - * fn_getWeaponItems_f.sqf - * @Descr: Get the weapon items from the unit. - * @Author: Glowbal - * - * @Arguments: [unit OBJECT] - * @Return: - * @PublicAPI: false - */ -#include "script_component.hpp" -private "_unit"; -_unit = _this select 0; - -[primaryWeaponItems _unit, secondaryWeaponItems _unit, handgunItems _unit]; \ No newline at end of file diff --git a/addons/common/functions/fnc_inWater_f.sqf b/addons/common/functions/fnc_inWater.sqf similarity index 100% rename from addons/common/functions/fnc_inWater_f.sqf rename to addons/common/functions/fnc_inWater.sqf diff --git a/addons/common/functions/fnc_isHC.sqf b/addons/common/functions/fnc_isHC.sqf deleted file mode 100644 index 82a9d49ba2..0000000000 --- a/addons/common/functions/fnc_isHC.sqf +++ /dev/null @@ -1,24 +0,0 @@ -/** - * fn_isHC.sqf - * @Descr: Check if current locality is a headless client - * @Author: Glowbal - * - * @Arguments: [] - * @Return: BOOL True if locality is headless client OR is not in multiplayer - * @PublicAPI: true - */ - -#include "script_component.hpp" - -private ["_return"]; - -if (!isMultiplayer) then { - _return = true; -} else { - if (isServer && !isDedicated) then { - _return = true; - } else { - _return = !(hasInterface || isDedicated); - }; -}; -_return \ No newline at end of file diff --git a/addons/common/functions/fnc_isModLoaded_f.sqf b/addons/common/functions/fnc_isModLoaded.sqf similarity index 100% rename from addons/common/functions/fnc_isModLoaded_f.sqf rename to addons/common/functions/fnc_isModLoaded.sqf diff --git a/addons/common/functions/fnc_loadPerson_f.sqf b/addons/common/functions/fnc_loadPerson.sqf similarity index 86% rename from addons/common/functions/fnc_loadPerson_f.sqf rename to addons/common/functions/fnc_loadPerson.sqf index 5944879c62..0d2995db1b 100644 --- a/addons/common/functions/fnc_loadPerson_f.sqf +++ b/addons/common/functions/fnc_loadPerson.sqf @@ -10,7 +10,7 @@ #include "script_component.hpp" -#define GROUP_SWITCH_ID QUOTE(FUNC(loadPerson_F)) +#define GROUP_SWITCH_ID QUOTE(FUNC(loadPerson)) private ["_caller", "_unit","_vehicle", "_loadcar", "_loadhelicopter", "_loadtank"]; _caller = [_this, 0, ObjNull,[ObjNull]] call BIS_fnc_Param; @@ -34,9 +34,9 @@ if (_unit distance _loadcar <= 10) then { }; }; if (!isNull _vehicle) then { - [_unit, true, GROUP_SWITCH_ID, side group _caller] call FUNC(switchToGroupSide_f); + [_unit, true, GROUP_SWITCH_ID, side group _caller] call FUNC(switchToGroupSide); [_caller,objNull] call FUNC(carryObj); [_unit,objNull] call FUNC(carryObj); - [[_unit, _vehicle,_caller], QUOTE(FUNC(loadPersonLocal_F)), _unit, false] call EFUNC(common,execRemoteFnc); + [[_unit, _vehicle,_caller], QUOTE(FUNC(loadPersonLocal)), _unit, false] call EFUNC(common,execRemoteFnc); }; _vehicle \ No newline at end of file diff --git a/addons/common/functions/fnc_loadPersonLocal_f.sqf b/addons/common/functions/fnc_loadPersonLocal.sqf similarity index 83% rename from addons/common/functions/fnc_loadPersonLocal_f.sqf rename to addons/common/functions/fnc_loadPersonLocal.sqf index dbba09111a..6e31050cf9 100644 --- a/addons/common/functions/fnc_loadPersonLocal_f.sqf +++ b/addons/common/functions/fnc_loadPersonLocal.sqf @@ -16,13 +16,13 @@ _vehicle = [_this, 1, ObjNull,[ObjNull]] call BIS_fnc_Param; _caller = [_this, 2, ObjNull,[ObjNull]] call BIS_fnc_Param; if (!alive _unit) then { - _unit = [_unit,_caller] call FUNC(makeCopyOfBody_F); + _unit = [_unit,_caller] call FUNC(makeCopyOfBody); }; _unit moveInCargo _vehicle; -_loaded = _vehicle getvariable [QGVAR(loaded_persons_F),[]]; +_loaded = _vehicle getvariable [QGVAR(loaded_persons),[]]; _loaded pushback _unit; -_vehicle setvariable [QGVAR(loaded_persons_F),_loaded,true]; +_vehicle setvariable [QGVAR(loaded_persons),_loaded,true]; if (!([_unit] call FUNC(isAwake))) then { _handle = [_unit,_vehicle] spawn { private ["_unit","_vehicle"]; diff --git a/addons/common/functions/fnc_moveToTempGroup.sqf b/addons/common/functions/fnc_moveToTempGroup.sqf index b146e67ef3..802bc2285d 100644 --- a/addons/common/functions/fnc_moveToTempGroup.sqf +++ b/addons/common/functions/fnc_moveToTempGroup.sqf @@ -18,12 +18,12 @@ if (_moveTo) then { _previousGroup = group _unit; _newGroup = createGroup (side _previousGroup); [_unit] joinSilent _newGroup; - _unit setvariable [QGVAR(previousGroup_F),_previousGroup]; + _unit setvariable [QGVAR(previousGroup),_previousGroup]; } else { - _previousGroup = _unit getvariable QGVAR(previousGroup_F); + _previousGroup = _unit getvariable QGVAR(previousGroup); if (!isnil "_previousGroup") then { _currentGroup = group _unit; - _unit setvariable [QGVAR(previousGroup_F),nil]; + _unit setvariable [QGVAR(previousGroup),nil]; [_unit] joinSilent _previousGroup; if (count units _currentGroup == 0) then { deleteGroup _currentGroup; diff --git a/addons/common/functions/fnc_resetAllDefaults_f.sqf b/addons/common/functions/fnc_resetAllDefaults.sqf similarity index 74% rename from addons/common/functions/fnc_resetAllDefaults_f.sqf rename to addons/common/functions/fnc_resetAllDefaults.sqf index c415b5b32c..63e6764d01 100644 --- a/addons/common/functions/fnc_resetAllDefaults_f.sqf +++ b/addons/common/functions/fnc_resetAllDefaults.sqf @@ -17,17 +17,17 @@ _unit setvariable ["ACE_isDead",nil,true]; _unit setvariable ["ACE_isUnconscious", nil, true]; if (isPlayer _unit) then { - [true] call FUNC(setVolume_f); - [false] call FUNC(disableKeyInput_f); - if (["ace_medical"] call FUNC(isModLoader_f)) then { + [true] call FUNC(setVolume); + [false] call FUNC(disableKeyInput); + if (["ace_medical"] call FUNC(isModLoader)) then { [false] call EFUNC(medical,effectBlackOut); }; - if !(isnil QGVAR(DISABLE_USER_INPUT_COLLECTION_F)) then { + if !(isnil QGVAR(DISABLE_USER_INPUT_COLLECTION)) then { // clear all disable user input { [_X, false] call FUNC(setDisableUserInputStatus); - }foreach GVAR(DISABLE_USER_INPUT_COLLECTION_F); + }foreach GVAR(DISABLE_USER_INPUT_COLLECTION); }; }; diff --git a/addons/common/functions/fnc_revealObject_f.sqf b/addons/common/functions/fnc_revealObject_f.sqf deleted file mode 100644 index 9c5a34f59a..0000000000 --- a/addons/common/functions/fnc_revealObject_f.sqf +++ /dev/null @@ -1,15 +0,0 @@ -/** - * fnc_revealObject_f.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ - -#include "script_component.hpp" - -if (hasInterface) then { - player reveal (_this select 0); -}; \ No newline at end of file diff --git a/addons/common/functions/fnc_sendRequest_f.sqf b/addons/common/functions/fnc_sendRequest.sqf similarity index 100% rename from addons/common/functions/fnc_sendRequest_f.sqf rename to addons/common/functions/fnc_sendRequest.sqf diff --git a/addons/common/functions/fnc_setDisableUserInputStatus.sqf b/addons/common/functions/fnc_setDisableUserInputStatus.sqf index 2451cbe90f..2cf25b827a 100644 --- a/addons/common/functions/fnc_setDisableUserInputStatus.sqf +++ b/addons/common/functions/fnc_setDisableUserInputStatus.sqf @@ -13,16 +13,16 @@ _id = _this select 0; _disable = _this select 1; -if (isnil QGVAR(DISABLE_USER_INPUT_COLLECTION_F)) then { - GVAR(DISABLE_USER_INPUT_COLLECTION_F) = []; +if (isnil QGVAR(DISABLE_USER_INPUT_COLLECTION)) then { + GVAR(DISABLE_USER_INPUT_COLLECTION) = []; }; if (_disable) then { - GVAR(DISABLE_USER_INPUT_COLLECTION_F) pushback _id; + GVAR(DISABLE_USER_INPUT_COLLECTION) pushback _id; [true] call FUNC(disableUserInput); } else { - GVAR(DISABLE_USER_INPUT_COLLECTION_F) = GVAR(DISABLE_USER_INPUT_COLLECTION_F) - [_id]; - if (GVAR(DISABLE_USER_INPUT_COLLECTION_F) isEqualTo []) then { + GVAR(DISABLE_USER_INPUT_COLLECTION) = GVAR(DISABLE_USER_INPUT_COLLECTION) - [_id]; + if (GVAR(DISABLE_USER_INPUT_COLLECTION) isEqualTo []) then { [false] call FUNC(disableUserInput); }; }; \ No newline at end of file diff --git a/addons/common/functions/fnc_setVolume_f.sqf b/addons/common/functions/fnc_setVolume.sqf similarity index 100% rename from addons/common/functions/fnc_setVolume_f.sqf rename to addons/common/functions/fnc_setVolume.sqf diff --git a/addons/common/functions/fnc_switchToGroupSide_f.sqf b/addons/common/functions/fnc_switchToGroupSide.sqf similarity index 92% rename from addons/common/functions/fnc_switchToGroupSide_f.sqf rename to addons/common/functions/fnc_switchToGroupSide.sqf index 97b043adbe..528d32853c 100644 --- a/addons/common/functions/fnc_switchToGroupSide_f.sqf +++ b/addons/common/functions/fnc_switchToGroupSide.sqf @@ -16,7 +16,7 @@ _switch = [_this, 1, false,[false]] call BIS_fnc_Param; _id = [_this, 2, "", [""]] call BIS_fnc_Param; _side = [_this, 3, side _unit,[west]] call BIS_fnc_Param; -_previousGroupsList = _unit getvariable [QGVAR(previousGroupSwitchTo_F),[]]; +_previousGroupsList = _unit getvariable [QGVAR(previousGroupSwitchTo),[]]; if (_switch) then { // go forward _previousGroup = group _unit; @@ -30,7 +30,7 @@ if (_switch) then { [_unit] joinSilent _newGroup; _previousGroupsList pushback [_previousGroup, _originalSide, _id, true]; - _unit setvariable [QGVAR(previousGroupSwitchTo_F), _previousGroupsList, true]; + _unit setvariable [QGVAR(previousGroupSwitchTo), _previousGroupsList, true]; } else { // go one back { @@ -60,5 +60,5 @@ if (_switch) then { }foreach _previousGroupsList; _previousGroupsList = _previousGroupsList - [objNull]; reverse _previousGroupsList; // we have to reverse again, to ensure the list is in the right order. - _unit setvariable [QGVAR(previousGroupSwitchTo_F), _previousGroupsList, true]; + _unit setvariable [QGVAR(previousGroupSwitchTo), _previousGroupsList, true]; }; diff --git a/addons/common/functions/fnc_unloadPerson_f.sqf b/addons/common/functions/fnc_unloadPerson.sqf similarity index 89% rename from addons/common/functions/fnc_unloadPerson_f.sqf rename to addons/common/functions/fnc_unloadPerson.sqf index 1aaaee84a1..33c0e9c0c2 100644 --- a/addons/common/functions/fnc_unloadPerson_f.sqf +++ b/addons/common/functions/fnc_unloadPerson.sqf @@ -10,7 +10,7 @@ #include "script_component.hpp" -#define GROUP_SWITCH_ID QUOTE(FUNC(loadPerson_F)) +#define GROUP_SWITCH_ID QUOTE(FUNC(loadPerson)) private ["_caller", "_unit","_vehicle", "_loaded"]; _caller = [_this, 0, ObjNull,[ObjNull]] call BIS_fnc_Param; @@ -27,11 +27,11 @@ if (!alive _unit) then { _unit action ["Eject", vehicle _unit]; }; -[_unit, false, GROUP_SWITCH_ID, side group _caller] call FUNC(switchToGroupSide_f); +[_unit, false, GROUP_SWITCH_ID, side group _caller] call FUNC(switchToGroupSide); -_loaded = _vehicle getvariable [QGVAR(loaded_persons_F),[]]; +_loaded = _vehicle getvariable [QGVAR(loaded_persons),[]]; _loaded = _loaded - [_unit]; -_vehicle setvariable [QGVAR(loaded_persons_F),_loaded,true]; +_vehicle setvariable [QGVAR(loaded_persons),_loaded,true]; if (!([_unit] call FUNC(isAwake))) then { _handle = [_unit,_vehicle] spawn { diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 062df32ddf..6f5c1b5978 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -50,8 +50,8 @@ call FUNC(handleDisplayEffects); ["onUnconscious", FUNC(onUnconscious)] call ace_common_fnc_addEventHandler; ["carryObjectDropped", FUNC(onCarryObjectDropped)] call ace_common_fnc_addEventHandler; -if (isNil QGVAR(ENABLE_REVIVE_F)) then { - GVAR(ENABLE_REVIVE_F) = 0; +if (isNil QGVAR(ENABLE_REVIVE)) then { + GVAR(ENABLE_REVIVE) = 0; }; diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index 57800cd5b7..144c877aeb 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -141,8 +141,8 @@ PREP(setUnconsciousState); PREP(isUnconscious); PREP(getUnconsciousCondition); PREP(registerUnconsciousCondition); -PREP(cleanUpCopyOfBody_F); -PREP(makeCopyOfBody_F); +PREP(cleanUpCopyOfBody); +PREP(makeCopyOfBody); PREP(canGoUnconsciousState); PREP(setDead); PREP(moduleBasicRevive); diff --git a/addons/medical/functions/fnc_actionCarryUnit.sqf b/addons/medical/functions/fnc_actionCarryUnit.sqf index d3cfb35aee..f717efb403 100644 --- a/addons/medical/functions/fnc_actionCarryUnit.sqf +++ b/addons/medical/functions/fnc_actionCarryUnit.sqf @@ -42,7 +42,7 @@ if (!alive _unit) exitwith { [_caller, false] call FUNC(treatmentMutex); [{ _this call FUNC(actionCarryUnit); - }, [_caller, ([_unit,_caller] call FUNC(makeCopyOfBody_F)), _killOnDrop], 0.25, 0.25] call EFUNC(common,waitAndExecute); + }, [_caller, ([_unit,_caller] call FUNC(makeCopyOfBody)), _killOnDrop], 0.25, 0.25] call EFUNC(common,waitAndExecute); }; if !([_caller,_unit] call EFUNC(common,carryObj)) exitwith { diff --git a/addons/medical/functions/fnc_actionDragUnit.sqf b/addons/medical/functions/fnc_actionDragUnit.sqf index d0fa1c70ea..56f88ead9c 100644 --- a/addons/medical/functions/fnc_actionDragUnit.sqf +++ b/addons/medical/functions/fnc_actionDragUnit.sqf @@ -40,7 +40,7 @@ if (!alive _unit) exitwith { [_caller, false] call FUNC(treatmentMutex); [{ _this call FUNC(actionDragUnit); - }, [_caller, ([_unit,_caller] call FUNC(makeCopyOfBody_F)), _killOnDrop], 0.25, 0.25] call EFUNC(common,waitAndExecute); + }, [_caller, ([_unit,_caller] call FUNC(makeCopyOfBody)), _killOnDrop], 0.25, 0.25] call EFUNC(common,waitAndExecute); }; if (primaryWeapon _caller == "") then { diff --git a/addons/medical/functions/fnc_actionLoadUnit.sqf b/addons/medical/functions/fnc_actionLoadUnit.sqf index cd20140bdb..afe70746d2 100644 --- a/addons/medical/functions/fnc_actionLoadUnit.sqf +++ b/addons/medical/functions/fnc_actionLoadUnit.sqf @@ -22,7 +22,7 @@ if ([_unit] call cse_fnc_isAwake) exitwith { [_caller,objNull] call cse_fnc_carryObj; [_unit,objNull] call cse_fnc_carryObj; -_vehicle = [_caller, _unit] call EFUNC(common,loadPerson_F); +_vehicle = [_caller, _unit] call EFUNC(common,loadPerson); if (!isNull _vehicle) then { if (!isnil QGVAR(DROP_ADDACTION)) then { _caller removeAction GVAR(DROP_ADDACTION); diff --git a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf index 8df95c24d9..fc43fe06d8 100644 --- a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf +++ b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf @@ -36,7 +36,7 @@ _bodyBagCreated setvariable [QEGVAR(common,nameOfBody), _nameOfUnit, true]; // reset the position to ensure it is on the correct one. _bodyBagCreated setPos _onPosition; -[[_bodyBagCreated], QEFUNC(common,revealObject_f), true] call BIS_fnc_MP; +[[_bodyBagCreated], QEFUNC(common,revealObject), true] call BIS_fnc_MP; _bodyBagCreated setvariable [QEGVAR(logistics,enableDrag), true, true]; diff --git a/addons/medical/functions/fnc_actionUnloadUnit.sqf b/addons/medical/functions/fnc_actionUnloadUnit.sqf index 6eefb4b138..0b6b6fe9de 100644 --- a/addons/medical/functions/fnc_actionUnloadUnit.sqf +++ b/addons/medical/functions/fnc_actionUnloadUnit.sqf @@ -19,7 +19,7 @@ _drag = [_this, 2, false, [false]] call BIS_fnc_Param; if (vehicle _unit == _unit) exitwith {}; if (([_unit] call cse_fnc_isAwake)) exitwith {}; -if ([_caller, _unit] call EFUNC(common,unloadPerson_F)) then { +if ([_caller, _unit] call EFUNC(common,unloadPerson)) then { if (_drag) then { if ((vehicle _caller) == _caller) then { [[_caller,_unit], QUOTE(FUNC(actionDragUnit)), _caller, false] call BIS_fnc_MP; diff --git a/addons/medical/functions/fnc_cleanUpCopyOfBody_f.sqf b/addons/medical/functions/fnc_cleanUpCopyOfBody.sqf similarity index 76% rename from addons/medical/functions/fnc_cleanUpCopyOfBody_f.sqf rename to addons/medical/functions/fnc_cleanUpCopyOfBody.sqf index b20169e9f5..292f332f91 100644 --- a/addons/medical/functions/fnc_cleanUpCopyOfBody_f.sqf +++ b/addons/medical/functions/fnc_cleanUpCopyOfBody.sqf @@ -13,12 +13,12 @@ private ["_unit", "_copy"]; _unit = _this select 0; -_copy = _unit getvariable QGVAR(copyOfBody_f); +_copy = _unit getvariable QGVAR(copyOfBody); if (isnil "_copy") exitwith {false}; [format["Cleaning up a copy of Body: %1 %2", _unit, _copy]] call EFUNC(common,debug); // lets clean it up -_unit setvariable [QGVAR(originalCopy_f), nil, true]; -_unit setvariable [QGVAR(copyOfBody_f), nil, true]; +_unit setvariable [QGVAR(originalCopy), nil, true]; +_unit setvariable [QGVAR(copyOfBody), nil, true]; if (!isNull _copy) then { deleteVehicle _copy; }; diff --git a/addons/medical/functions/fnc_getBloodVolumeChange.sqf b/addons/medical/functions/fnc_getBloodVolumeChange.sqf index 69b240b1d7..cfec53e157 100644 --- a/addons/medical/functions/fnc_getBloodVolumeChange.sqf +++ b/addons/medical/functions/fnc_getBloodVolumeChange.sqf @@ -38,7 +38,7 @@ if (_bloodVolume < 100.0) then { _bloodVolumeChange = _bloodVolumeChange + BLOOD_CHANGE_PER_SECOND; _ivVolume = (_unit getvariable [QGVAR(salineIVVolume), 0]) + IV_CHANGE_PER_SECOND; _unit setvariable [QGVAR(salineIVVolume),_ivVolume]; - if ([QEGVAR(fieldRations,module)] call EFUNC(common,isModuleEnabled_F)) then { + if ([QEGVAR(fieldRations,module)] call EFUNC(common,isModuleEnabled)) then { if ([_unit] call EFUNC(fieldRations,canDrink)) then { _unit setvariable [QEGVAR(fieldRations,drinkStatus), (_unit getvariable [QEGVAR(fieldRations,drinkStatus), 100]) + 0.2]; }; diff --git a/addons/medical/functions/fnc_getUnconsciousCondition.sqf b/addons/medical/functions/fnc_getUnconsciousCondition.sqf index 097a5682ec..a322439742 100644 --- a/addons/medical/functions/fnc_getUnconsciousCondition.sqf +++ b/addons/medical/functions/fnc_getUnconsciousCondition.sqf @@ -13,8 +13,8 @@ private ["_unit","_return"]; _unit = _this select 0; -if (isnil QGVAR(unconsciousConditions_F)) then { - GVAR(unconsciousConditions_F) = []; +if (isnil QGVAR(unconsciousConditions)) then { + GVAR(unconsciousConditions) = []; }; _return = false; @@ -25,5 +25,5 @@ _return = false; }; }; if (_return) exitwith{}; -}foreach GVAR(unconsciousConditions_F); +}foreach GVAR(unconsciousConditions); _return \ No newline at end of file diff --git a/addons/medical/functions/fnc_handleDropUnit.sqf b/addons/medical/functions/fnc_handleDropUnit.sqf index c82fe8ce79..45e1268d30 100644 --- a/addons/medical/functions/fnc_handleDropUnit.sqf +++ b/addons/medical/functions/fnc_handleDropUnit.sqf @@ -26,7 +26,7 @@ if ((isNull ([_caller] call EFUNC(common,getCarriedObj))) || !([_caller] call EF _caller removeWeapon "ACE_FakePrimaryWeapon"; }; - [_target, false] call EFUNC(common,disableAI_f); + [_target, false] call EFUNC(common,disableAI); _caller setvariable[QGVAR(onStartMovingUnitParams), nil]; // handle the drag & carry administration diff --git a/addons/medical/functions/fnc_handleTreatment_Action_fullHealLocal.sqf b/addons/medical/functions/fnc_handleTreatment_Action_fullHealLocal.sqf index 1d08a00e23..414c5c4a28 100644 --- a/addons/medical/functions/fnc_handleTreatment_Action_fullHealLocal.sqf +++ b/addons/medical/functions/fnc_handleTreatment_Action_fullHealLocal.sqf @@ -56,7 +56,7 @@ if (alive _unit) exitwith { _unit setDamage 0; // Resetting potential revive state - [_unit,QEGVAR(common,ENABLE_REVIVE_SETDEAD_F), 0] call EFUNC(common,setDefinedVariable); + [_unit,QEGVAR(common,ENABLE_REVIVE_SETDEAD), 0] call EFUNC(common,setDefinedVariable); [_unit,QEGVAR(common,ENABLE_REVIVE_COUNTER), 0] call EFUNC(common,setDefinedVariable); diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf index 7ced1ec393..cb2e77b342 100644 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ b/addons/medical/functions/fnc_handleUnitVitals.sqf @@ -93,7 +93,7 @@ if ((missionNamespace getvariable[QGVAR(setting_AdvancedLevel), 0]) > 0) exitwit // Check vitals for medical status // TODO check for in revive state instead of variable - if ((_unit getvariable[QEGVAR(common,ENABLE_REVIVE_SETDEAD_F),0]) == 0) then { + if ((_unit getvariable[QEGVAR(common,ENABLE_REVIVE_SETDEAD),0]) == 0) then { _bloodPressureL = _bloodPressure select 0; _bloodPressureH = _bloodPressure select 1; diff --git a/addons/medical/functions/fnc_makeCopyOfBody_f.sqf b/addons/medical/functions/fnc_makeCopyOfBody.sqf similarity index 100% rename from addons/medical/functions/fnc_makeCopyOfBody_f.sqf rename to addons/medical/functions/fnc_makeCopyOfBody.sqf diff --git a/addons/medical/functions/fnc_moduleBasicRevive.sqf b/addons/medical/functions/fnc_moduleBasicRevive.sqf index b02d873313..79da194024 100644 --- a/addons/medical/functions/fnc_moduleBasicRevive.sqf +++ b/addons/medical/functions/fnc_moduleBasicRevive.sqf @@ -15,10 +15,10 @@ _logic = _this select 0; GVAR(Module) = true; -[_logic, QGVAR(ENABLE_REVIVE_F), "enableFor" ] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(REVIVE_TIMER_MAX_F), "timer" ] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(REVIVE_NUMBER_MAX_F), "amountOf" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(ENABLE_REVIVE), "enableFor" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(REVIVE_TIMER_MAX), "timer" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(REVIVE_NUMBER_MAX), "amountOf" ] call EFUNC(common,readSettingFromModule); [ - {(((_this select 0) getvariable[QGVAR(ENABLE_REVIVE_SETDEAD_F),0]) > 0)} + {(((_this select 0) getvariable[QGVAR(ENABLE_REVIVE_SETDEAD),0]) > 0)} ] call FUNC(registerUnconsciousCondition); diff --git a/addons/medical/functions/fnc_onKilled.sqf b/addons/medical/functions/fnc_onKilled.sqf index e3609a57e5..2b8dd987b6 100644 --- a/addons/medical/functions/fnc_onKilled.sqf +++ b/addons/medical/functions/fnc_onKilled.sqf @@ -6,7 +6,7 @@ if (!local _unit) exitwith {}; [_unit, QGVAR(amountOfPain),0,true] call EFUNC(common,setDefinedVariable); [_unit, QGVAR(heartRate),0,true] call EFUNC(common,setDefinedVariable); [_unit, QGVAR(bloodPressure), [0,0],true] call EFUNC(common,setDefinedVariable); -if (_unit getvariable[QEGVAR(common,unconscious_non_captive_f),false]) then { +if (_unit getvariable[QEGVAR(common,unconscious_non_captive),false]) then { _unit setCaptive false; - _unit setvariable[QEGVAR(common,unconscious_non_captive_f),nil]; + _unit setvariable[QEGVAR(common,unconscious_non_captive),nil]; }; \ No newline at end of file diff --git a/addons/medical/functions/fnc_onStartMovingUnit.sqf b/addons/medical/functions/fnc_onStartMovingUnit.sqf index 7fe3dd8d65..84678d5379 100644 --- a/addons/medical/functions/fnc_onStartMovingUnit.sqf +++ b/addons/medical/functions/fnc_onStartMovingUnit.sqf @@ -20,6 +20,6 @@ _dragging = _this select 3; _caller setvariable[QGVAR(onStartMovingUnitParams), [_caller, _target, _killOnDrop, _dragging]]; -[_target, true] call EFUNC(common,disableAI_f); +[_target, true] call EFUNC(common,disableAI); nil; \ No newline at end of file diff --git a/addons/medical/functions/fnc_registerUnconsciousCondition.sqf b/addons/medical/functions/fnc_registerUnconsciousCondition.sqf index f34d05b57d..1e0413e8d6 100644 --- a/addons/medical/functions/fnc_registerUnconsciousCondition.sqf +++ b/addons/medical/functions/fnc_registerUnconsciousCondition.sqf @@ -10,13 +10,13 @@ #include "script_component.hpp" -if (isnil QGVAR(unconsciousConditions_F)) then { - GVAR(unconsciousConditions_F) = []; +if (isnil QGVAR(unconsciousConditions)) then { + GVAR(unconsciousConditions) = []; }; if (typeName _this == typeName []) then { { if (typeName _x == typeName {}) then { - GVAR(unconsciousConditions_F) pushback _x; + GVAR(unconsciousConditions) pushback _x; }; }foreach _this; }; \ No newline at end of file diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf index d43c1e1afc..2d91911a3c 100644 --- a/addons/medical/functions/fnc_setDead.sqf +++ b/addons/medical/functions/fnc_setDead.sqf @@ -24,11 +24,11 @@ if (!local _unit) exitwith { [[_unit, _force], QUOTE(FUNC(setDead)), _unit, false] call BIS_fnc_MP; }; -if (isnil QGVAR(ENABLE_REVIVE_F)) then { - GVAR(ENABLE_REVIVE_F) = 0; +if (isnil QGVAR(ENABLE_REVIVE)) then { + GVAR(ENABLE_REVIVE) = 0; }; -if (((GVAR(ENABLE_REVIVE_F) == 1 && isPlayer _unit) || (GVAR(ENABLE_REVIVE_F) == 2)) && !_force && (alive (vehicle _unit))) exitwith { +if (((GVAR(ENABLE_REVIVE) == 1 && isPlayer _unit) || (GVAR(ENABLE_REVIVE) == 2)) && !_force && (alive (vehicle _unit))) exitwith { // enter revive state _unit setvariable ["ACE_inReviveState", true, true]; @@ -36,11 +36,11 @@ if (((GVAR(ENABLE_REVIVE_F) == 1 && isPlayer _unit) || (GVAR(ENABLE_REVIVE_F) == [_unit] call FUNC(setUnconsciousState); // setting the revive default values - if (isnil QGVAR(REVIVE_TIMER_F)) then { - GVAR(REVIVE_TIMER_F) = 10; + if (isnil QGVAR(REVIVE_TIMER)) then { + GVAR(REVIVE_TIMER) = 10; }; - if (isnil QGVAR(REVIVE_NUMBER_MAX_F)) then { - GVAR(REVIVE_NUMBER_MAX_F) = -1; + if (isnil QGVAR(REVIVE_NUMBER_MAX)) then { + GVAR(REVIVE_NUMBER_MAX) = -1; }; [{ @@ -58,7 +58,7 @@ if (((GVAR(ENABLE_REVIVE_F) == 1 && isPlayer _unit) || (GVAR(ENABLE_REVIVE_F) == }; _counter = _unit getvariable ["ACE_reviveCounterValue", 0]; - if (_counter >= GVAR(REVIVE_TIMER_F)) exitwith{ + if (_counter >= GVAR(REVIVE_TIMER)) exitwith{ if (isPlayer _unit) then { titleText ["You died..","PLAIN DOWN"]; }; diff --git a/addons/medical/functions/fnc_setUnconsciousState.sqf b/addons/medical/functions/fnc_setUnconsciousState.sqf index 3f53e629e9..7fbd3c7f8a 100644 --- a/addons/medical/functions/fnc_setUnconsciousState.sqf +++ b/addons/medical/functions/fnc_setUnconsciousState.sqf @@ -41,17 +41,17 @@ _originalPos = unitPos _unit; // Handle the on screen effects if (isPlayer _unit) then { - [] call EFUNC(common,closeAllDialogs_f); + [] call EFUNC(common,closeAllDialogs); [true] call FUNC(effectBlackOut); ["unconscious", true] call EFUNC(common,setDisableUserInputStatus); - [false] call EFUNC(common,setVolume_f); + [false] call EFUNC(common,setVolume); } else { _unit setUnitPos "DOWN"; - [_unit, true] call EFUNC(common,disableAI_F); + [_unit, true] call EFUNC(common,disableAI); }; // So the AI does not get stuck, we are moving the unit to a temp group on its own. -[_unit, true, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide_f); +[_unit, true, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide); _captiveSwitch = [_unit, true] call EFUNC(common,setCaptiveSwitch); [_unit, [_unit] call EFUNC(common,getDeathAnim), 1, true] call EFUNC(common,doAnimation); @@ -110,15 +110,15 @@ _minWaitingTime = (round(random(10)+5)); _unit setUnconscious false; // Swhich the unit back to its original group - [_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide_f); + [_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide); // Reset any visual and audio effects for players, or enable everything again for AI. if (isPlayer _unit) then { [false] call FUNC(effectBlackOut); - [true] call EFUNC(common,setVolume_f); + [true] call EFUNC(common,setVolume); ["unconscious", false] call EFUNC(common,setDisableUserInputStatus); } else { - [_unit, false] call EFUNC(common,disableAI_F); + [_unit, false] call EFUNC(common,disableAI); _unit setUnitPos _originalPos; // This is not position but stance (DOWN, MIDDLE, UP) }; From c3cd9d281d0c9b3480670f68afa5348c75201875 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 14 Feb 2015 20:31:44 +0100 Subject: [PATCH 143/211] Removed isHC function. #139 --- addons/common/XEH_preInit.sqf | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 7a70ae7bb3..3710963c63 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -111,7 +111,6 @@ PREP(isAutoWind); PREP(isAwake); PREP(isEngineer); PREP(isEOD); -PREP(isHC); PREP(isInBuilding); PREP(isModLoaded); PREP(isPlayer); From df23b44df55e19f7f1b5bed04ce7ea37df89c9f4 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 Feb 2015 23:13:43 +0100 Subject: [PATCH 144/211] oops --- addons/fcs/functions/fnc_firedEH.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/fcs/functions/fnc_firedEH.sqf b/addons/fcs/functions/fnc_firedEH.sqf index 237b68fc87..f17693d33e 100644 --- a/addons/fcs/functions/fnc_firedEH.sqf +++ b/addons/fcs/functions/fnc_firedEH.sqf @@ -26,7 +26,7 @@ _gunner = [_vehicle, _weapon] call EFUNC(common,getGunner); _turret = [_gunner] call EFUNC(common,getTurretIndex); // Exit if the unit isn't a player -if !([_unit] call EFUNC(common,isPlayer)) exitWith {}; +if !([_gunner] call EFUNC(common,isPlayer)) exitWith {}; private ["_FCSMagazines", "_FCSElevation", "_offset"]; From 827ef91fced046842bb2d3b8bc2e9717bd3e66a9 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 15 Feb 2015 10:03:58 +0100 Subject: [PATCH 145/211] Ported CSE Ambiance sound module --- .../functions/fn_moduleAmbianceSoundLoop.sqf | 98 -------------- addons/missionModules/$PBOPREFIX$ | 1 + addons/missionModules/CfgEventHandlers.hpp | 6 + addons/missionModules/CfgFactionClasses.hpp | 6 + addons/missionModules/CfgVehicles.hpp | 68 ++++++++++ addons/missionModules/XEH_preInit.sqf | 7 + addons/missionModules/config.cpp | 17 +++ addons/missionModules/data/moduleSound.paa | Bin 0 -> 5625 bytes .../functions/fnc_moduleAmbianceSound.sqf | 123 ++++++++++++++++++ .../functions/script_component.hpp | 1 + addons/missionModules/script_component.hpp | 12 ++ 11 files changed, 241 insertions(+), 98 deletions(-) delete mode 100644 TO_MERGE/cse/sys_misc/functions/fn_moduleAmbianceSoundLoop.sqf create mode 100644 addons/missionModules/$PBOPREFIX$ create mode 100644 addons/missionModules/CfgEventHandlers.hpp create mode 100644 addons/missionModules/CfgFactionClasses.hpp create mode 100644 addons/missionModules/CfgVehicles.hpp create mode 100644 addons/missionModules/XEH_preInit.sqf create mode 100644 addons/missionModules/config.cpp create mode 100644 addons/missionModules/data/moduleSound.paa create mode 100644 addons/missionModules/functions/fnc_moduleAmbianceSound.sqf create mode 100644 addons/missionModules/functions/script_component.hpp create mode 100644 addons/missionModules/script_component.hpp diff --git a/TO_MERGE/cse/sys_misc/functions/fn_moduleAmbianceSoundLoop.sqf b/TO_MERGE/cse/sys_misc/functions/fn_moduleAmbianceSoundLoop.sqf deleted file mode 100644 index 4b4d93d453..0000000000 --- a/TO_MERGE/cse/sys_misc/functions/fn_moduleAmbianceSoundLoop.sqf +++ /dev/null @@ -1,98 +0,0 @@ -/** - * fn_moduleAmbianceSoundLoop.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ - -private ["_logic", "_units", "_activated","_ambianceSounds", "_soundFiles", "_minimalDistance","_maximalDistance", "_minimalDistance", "_maxDelayBetweenSounds", "_allUnits", "_newPos", "_targetUnit", "_soundToPlay", "_soundPath", "_unparsedSounds", "_list", "_splittedList", "_nilCheckPassedList"]; -_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; -_units = [_this,1,[],[[]]] call BIS_fnc_param; -_activated = [_this,2,true,[true]] call BIS_fnc_param; - -if (_activated && isServer) then { - _ambianceSounds = []; - _unparsedSounds = _logic getvariable ["soundFiles", ""]; - _minimalDistance = (_logic getvariable ["minimalDistance", 400]) max 1; - _maximalDistance = (_logic getvariable ["maximalDistance", 10]) max _minimalDistance; - _minDelayBetweensounds = (_logic getvariable ["minimalDelay", 10]) max 1; - _maxDelayBetweenSounds = (_logic getvariable ["maximalDelay", 170]) max _minDelayBetweensounds; - _volume = (_logic getvariable ["soundVolume", 30]) max 1; - _followPlayers = _logic getvariable ["followPlayers", false]; - - _splittedList = [_unparsedSounds, ","] call BIS_fnc_splitString; - - _nilCheckPassedList = ""; - { - _x = [_x] call cse_fnc_string_removeWhiteSpace; - _splittedList set [_foreachIndex, _x]; - }foreach _splittedList; - - _soundPath = [(str missionConfigFile), 0, -15] call BIS_fnc_trimString; - { - if (isclass (missionConfigFile >> "CfgSounds" >> _x)) then { - _ambianceSounds pushback (_soundPath + (getArray(missionConfigFile >> "CfgSounds" >> _x >> "sound") select 0)); - } else { - if (isclass (configFile >> "CfgSounds" >> _x)) then { - _ambianceSounds pushback ((getArray(configFile >> "CfgSounds" >> _x >> "sound") select 0)); - }; - }; - }foreach _splittedList; - - if (count _ambianceSounds == 0) exitwith { - [format["No Ambiance sounds available"]] call cse_fnc_debug; - }; - { - if !([".", _x, true] call BIS_fnc_inString) then { - [format["Ambiance soundfile does not contain a file extension %1", _x]] call cse_fnc_debug; - _ambianceSounds set [_foreachIndex, _x + ".wss"]; - }; - }foreach _ambianceSounds; - [format["Ambiance sounds %1", _ambianceSounds]] call cse_fnc_debug; - - while {alive _logic} do { - _allUnits = switch (true) do { - case isMultiplayer: {playableUnits}; - case isDedicated: {[_logic]}; - default {[player]}; - }; - - if (count _allUnits > 0) then { - _targetUnit = _allUnits select (round(random((count _allUnits)-1))); - - _newPos = (getPos _targetUnit); - if (!_followPlayers) then { - _newPos = getPos _logic; - }; - - if (random(1) >= 0.5) then { - if (random(1) >= 0.5) then { - _newPos set [0, (_newPos select 0) + (_minimalDistance + random(_maximalDistance))]; - } else { - _newPos set [0, (_newPos select 0) - (_minimalDistance + random(_maximalDistance))]; - }; - } else { - if (random(1) >= 0.5) then { - _newPos set [1, (_newPos select 1) + (_minimalDistance + random(_maximalDistance))]; - } else { - _newPos set [1, (_newPos select 1) - (_minimalDistance + random(_maximalDistance))]; - }; - }; - - if ({(_newPos distance _x < (_minimalDistance / 2))}count _allUnits == 0) then { - - _soundToPlay = _ambianceSounds select (round(random((count _ambianceSounds)-1))); - playSound3D [_soundToPlay, _targetUnit, false, _newPos, _volume, 1, 1000]; - - [format["Played a sound %1", _soundToPlay]] call cse_fnc_debug; - - sleep (_minDelayBetweensounds + random(_maxDelayBetweenSounds)) min _maxDelayBetweenSounds; - }; - }; - }; -}; - -true; \ No newline at end of file diff --git a/addons/missionModules/$PBOPREFIX$ b/addons/missionModules/$PBOPREFIX$ new file mode 100644 index 0000000000..ea1be0daee --- /dev/null +++ b/addons/missionModules/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\missionModules \ No newline at end of file diff --git a/addons/missionModules/CfgEventHandlers.hpp b/addons/missionModules/CfgEventHandlers.hpp new file mode 100644 index 0000000000..f0a9f14d91 --- /dev/null +++ b/addons/missionModules/CfgEventHandlers.hpp @@ -0,0 +1,6 @@ + +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; diff --git a/addons/missionModules/CfgFactionClasses.hpp b/addons/missionModules/CfgFactionClasses.hpp new file mode 100644 index 0000000000..792f4d31e3 --- /dev/null +++ b/addons/missionModules/CfgFactionClasses.hpp @@ -0,0 +1,6 @@ +class CfgFactionClasses { + class NO_CATEGORY; + class ACE_missionModules: NO_CATEGORY { + displayName = "ACE Mission Modules"; + }; +}; \ No newline at end of file diff --git a/addons/missionModules/CfgVehicles.hpp b/addons/missionModules/CfgVehicles.hpp new file mode 100644 index 0000000000..570883ee5f --- /dev/null +++ b/addons/missionModules/CfgVehicles.hpp @@ -0,0 +1,68 @@ +class CfgVehicles { + class Logic; + class Module_F: Logic { + class ArgumentsBaseUnits { + }; + }; + + // TODO make a curator variant for this + class cse_moduleAmbianceSound: Module_F { + scope = 2; + displayName = "Ambiance Sounds [ACE]"; + icon = QUOTE(PATHTOF(data\moduleSound.paa)); + category = "ACE_missionModules"; + function = QUOTE(FUNC(moduleAmbianceSound); + functionPriority = 1; + isGlobal = 1; + isTriggerActivated = 0; + author = "Glowbal"; + class Arguments { + class soundFiles { + displayName = "Sounds"; + description = "Classnames of the ambiance sounds played. Seperated by ','. "; + typeName = "STRING"; + defaultValue = ""; + }; + class minimalDistance { + displayName = "Minimal Distance"; + description = "Minimal Distance"; + typeName = "NUMBER"; + defaultValue = 400; + }; + class maximalDistance { + displayName = "Maximal Distance"; + description = "Maximal Distance"; + typeName = "NUMBER"; + defaultValue = 900; + }; + class minimalDelay { + displayName = "Minimal Delay"; + description = "Minimal Delay between sounds played"; + typeName = "NUMBER"; + defaultValue = 10; + }; + class maximalDelay { + displayName = "Maximal Delay"; + description = "Maximal Delay between sounds played"; + typeName = "NUMBER"; + defaultValue = 170; + }; + class followPlayers { + displayName = "Follow Players"; + description = "Follow players. If set to false, loop will play sounds only nearby logic position."; + typeName = "BOOL"; + defaultValue = 0; + }; + class soundVolume { + displayName = "Volume"; + description = "The volume of the sounds played"; + typeName = "NUMBER"; + defaultValue = 0; + }; + }; + class ModuleDescription { + description = "Ambiance sounds loop (synced across MP)"; + sync[] = {}; + }; + }; +}; diff --git a/addons/missionModules/XEH_preInit.sqf b/addons/missionModules/XEH_preInit.sqf new file mode 100644 index 0000000000..cadbbabdd1 --- /dev/null +++ b/addons/missionModules/XEH_preInit.sqf @@ -0,0 +1,7 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(moduleAmbianceSound); + +ADDON = true; diff --git a/addons/missionModules/config.cpp b/addons/missionModules/config.cpp new file mode 100644 index 0000000000..0867b486c6 --- /dev/null +++ b/addons/missionModules/config.cpp @@ -0,0 +1,17 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {"cse_moduleAmbianceSound"}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {"Glowbal"}; + authorUrl = ""; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" +#include "CfgFactionClasses.hpp" +#include "CfgVehicles.hpp" diff --git a/addons/missionModules/data/moduleSound.paa b/addons/missionModules/data/moduleSound.paa new file mode 100644 index 0000000000000000000000000000000000000000..bfe3b8032717dcc98269b4b42a620cffe550ffc2 GIT binary patch literal 5625 zcmd5=e{2)i9e)QtpfrHPa-m>_7$qGojBP2JHAXidD=lKvOSnciRHiZp3io($CfVu3Ih4Y{*BB>0gjI}tEY4lCyKj^3 zi|MspB)_I9Qgx5++xQ+GAF#}rEAi6)SgR2uT;uV0M$+GvaQ(#H9}xS?WmyKjWzk^2 zNzcQW;MZidnf$!>++Lhj?%eeIpGtziBC+buc2ZUhGN$7o{p|Y_&10xliB==phYGcr8`S2cb3wu zSJO0FbEhH0o>*@a^2330*Os!%?HPIs=*>Ht3JmIghu|*BN=Fax<2*v*2zg37n~I_l zvuOp1~efUHq1t$YIb<=rbwS zTrcQpUhjzXYHsxVyH5nfdE>YxM~e3~1{1=bAg7M@d>{Fz$PcEznj%j-Sr-`;E@UQk zQ%W=8le|+&`CYHlo@`?-%h+-aPK=XB!7Q0@uvl zk~H~J)3;+sOn<@gdX~1F2=F@pO`4Y=pKA{{ih0US7~4l2ZHeSrF3!i~kXHre!}Y@c zP~XdDtCPF%p;?fZ%~k(hpV7__KYu$I&W)uH29ukQ!Cc^o8gi!2->3UUe9E%THmf0Q zTsUN8<7HeGl+Vt~a$AbuYUH0o|BNJeHbGk-Z{+Ere3Dmnv_1+KqTMjB=U(a$b{;-6 zzc4iZ3Di4N{_5i{f3GXhO~_`GW%kmP#F*J;J)-sFmSP?uO!IU;(7&&hr;0QC@2ovz z3-%y>l5ihkZ6=ksK>1eVIAM@i^LD}cUF(EDfV@(07E3F~Wc@c6Pf23lh`?V>iWc4M z`dp0j&)*$#tfK$P|G#y0L*l&qaS?wMfyF&b{MX`O{fI8!$wXwry{egRWm$pFp z{y>`MA)mBh5Aqkkb=l&hj--Fhjd&oPi5~=z^p(|AlqMfu%Gp?i68y-kT`Dz1+<3b z<$c9;CtdTx;i6ck|MGfA>_>9#Q+h5Q7_jV*@=E>2Esi71(4W)NRDZ#3xHI;cHA?@; z<(G?d&v#ynUfUZd{#1V?*3m-&#@%$Iy`|^e#>Hkc9?+hA!G5{)M~i2jYll6|dd$$D zR)0X8Be1{8Upe@-w3`5=Q9-=?2KtXFp9)OTGQSFkA2Lj=c}(p3w}oZ4G=ctW9oi4< zr*2R=xTFyP!>q?9KaP56@|$%on7G*D6aK=`UyoLwyIp@@cmGg)E1Kr+;jL-cv!*;u z)@FA=&{SZHDJ_#uoFU1F>~(_jCm+&BtmntyvDT}g$DiA1>Bl@;UiY3!nfQUa_gvq* zwb%dKekXIHkY=R<$fjcYGlSh9iZ&KyjMBcs8aBK9SId5$Z9^J1hwG!^7Z8h7Chc~y zzRAF|A*~;Z!VEp4O~Z+c&YynMaN;8TU{bH0yK>v3G(%zjHqY*)0JwO9CW)BVG zJ*YDB^0;y9tW`GfULspIGVAAGN0_?S3436ZaxYoN8IUw|Rqu_G7u7KTl-MPM?0gOc`ug7=QW2VESaxEQ|DzF~Gcf`Ss=k z!5@80$+70ue>^-^&<8!+w(EE;@MgU@FXFFWrn38tNE@g!N=@f3^qiN9Y5(x27AJTU z=ZAa#5twV0X_O^x28Z$A&pS=)$^KtzKk;MPDzj+fwB>Q#-`x>urFlHnvF~!UO>diN z1yv&Jpc(olz3l-5or{nk44&+4GA;!F4$kl&=$B9LESij$36p&hUd;VmNUJ6YMgF6JLbOVk`ZbHcCR84R!G;@r-_u zAOuge55r}#NM0sQs>9M`hMq}%DBkSUY)Wi(n$)N*vDA>Kx9MZQ8d)rk1;xlSy{&nF z{&N3bnupD7Ptbb2a4^?R|X+6c1 zGkO0 + * 1: Units + * 2: Activated + * + * Return Value: + * Nothing + * + * Example: + * N/A + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_logic", "_units", "_activated","_ambianceSounds", "_soundFiles", "_minimalDistance","_maximalDistance", "_minimalDistance", "_maxDelayBetweenSounds", "_allUnits", "_newPos", "_targetUnit", "_soundToPlay", "_soundPath", "_unparsedSounds", "_list", "_splittedList", "_nilCheckPassedList"]; +_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; +_units = [_this,1,[],[[]]] call BIS_fnc_param; +_activated = [_this,2,true,[true]] call BIS_fnc_param; + +// We only play this on the locality of the logic, since the sounds are broadcasted across the network +if (_activated && local _logic) then { + _ambianceSounds = []; + _unparsedSounds = _logic getvariable ["soundFiles", ""]; + _minimalDistance = (_logic getvariable ["minimalDistance", 400]) max 1; + _maximalDistance = (_logic getvariable ["maximalDistance", 10]) max _minimalDistance; + _minDelayBetweensounds = (_logic getvariable ["minimalDelay", 10]) max 1; + _maxDelayBetweenSounds = (_logic getvariable ["maximalDelay", 170]) max _minDelayBetweensounds; + _volume = (_logic getvariable ["soundVolume", 30]) max 1; + _followPlayers = _logic getvariable ["followPlayers", false]; + + _splittedList = [_unparsedSounds, ","] call BIS_fnc_splitString; + + _nilCheckPassedList = ""; + { + _x = [_x] call EFUNC(common,removeWhiteSpace); + _splittedList set [_foreachIndex, _x]; + }foreach _splittedList; + + _soundPath = [(str missionConfigFile), 0, -15] call BIS_fnc_trimString; + { + if (isclass (missionConfigFile >> "CfgSounds" >> _x)) then { + _ambianceSounds pushback (_soundPath + (getArray(missionConfigFile >> "CfgSounds" >> _x >> "sound") select 0)); + } else { + if (isclass (configFile >> "CfgSounds" >> _x)) then { + _ambianceSounds pushback ((getArray(configFile >> "CfgSounds" >> _x >> "sound") select 0)); + }; + }; + }foreach _splittedList; + + if (count _ambianceSounds == 0) exitwith {}; + { + if !([".", _x, true] call BIS_fnc_inString) then { + _ambianceSounds set [_foreachIndex, _x + ".wss"]; + }; + }foreach _ambianceSounds; + + [{ + private ["_args", "_logic", "_ambianceSounds", "_minimalDistance", "_maximalDistance", "_minDelayBetweensounds", "_maxDelayBetweenSounds", "_volume", "_followPlayers","_lastTimePlayed", "_newPos"] + _args = _this select 0; + _logic = _args select 0; + _lastTimePlayed = _args select 8; + + if (!alive _logic) exitwith { + [(_this select 1)] call cba_fnc_removePerFrameHandler; + }; + + if (_lastTimePlayed - time >= ((_minDelayBetweensounds + random(_maxDelayBetweenSounds)) min _maxDelayBetweenSounds)) then { + _ambianceSounds = _args select 1; + _minimalDistance = _args select 2; + _maximalDistance = _args select 3; + _minDelayBetweensounds = _args select 4; + _maxDelayBetweenSounds = _args select 5; + _volume = _args select 6; + _followPlayers = _args select 7; + + // Find all players in session. + _allUnits = if (isMultiplayer) then {playableUnits} else {[ACE_player]}; + + // Check if there are enough players to even start playing this sound. + if (count _allUnits > 0) then { + + // Select a target unit at random. + _targetUnit = _allUnits select (round(random((count _allUnits)-1))); + + // find the position from which we are going to play this sound from. + _newPos = (getPos _targetUnit); + if (!_followPlayers) then { + _newPos = getPos _logic; + }; + + // Randomize this position. + if (random(1) >= 0.5) then { + if (random(1) >= 0.5) then { + _newPos set [0, (_newPos select 0) + (_minimalDistance + random(_maximalDistance))]; + } else { + _newPos set [0, (_newPos select 0) - (_minimalDistance + random(_maximalDistance))]; + }; + } else { + if (random(1) >= 0.5) then { + _newPos set [1, (_newPos select 1) + (_minimalDistance + random(_maximalDistance))]; + } else { + _newPos set [1, (_newPos select 1) - (_minimalDistance + random(_maximalDistance))]; + }; + }; + + // If no unit is to close to this position, we will play the sound. + if ({(_newPos distance _x < (_minimalDistance / 2))}count _allUnits == 0) then { + + playSound3D [_ambianceSounds select (round(random((count _ambianceSounds)-1))), _targetUnit, false, _newPos, _volume, 1, 1000]; + _args set [8, time]; + }; + }; + }; + }, 0.1, [_logic, _ambianceSounds, _minimalDistance, _maximalDistance, _minDelayBetweensounds, _maxDelayBetweenSounds, _volume, _followPlayers, time] ] call CBA_fnc_addPerFrameHandler; +}; + +true; diff --git a/addons/missionModules/functions/script_component.hpp b/addons/missionModules/functions/script_component.hpp new file mode 100644 index 0000000000..e49740a89e --- /dev/null +++ b/addons/missionModules/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\missionModules\script_component.hpp" \ No newline at end of file diff --git a/addons/missionModules/script_component.hpp b/addons/missionModules/script_component.hpp new file mode 100644 index 0000000000..a567966c7b --- /dev/null +++ b/addons/missionModules/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT missionModules +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_MISSIONMODULES + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_MISSIONMODULES + #define DEBUG_SETTINGS DEBUG_SETTINGS_MISSIONMODULES +#endif + +#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file From 6540158ce1e93a425957e01f1011c0e0b6f9dc1e Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 15 Feb 2015 10:05:48 +0100 Subject: [PATCH 146/211] Removed left over CSE prefix --- addons/missionModules/CfgVehicles.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/missionModules/CfgVehicles.hpp b/addons/missionModules/CfgVehicles.hpp index 570883ee5f..afdb58006b 100644 --- a/addons/missionModules/CfgVehicles.hpp +++ b/addons/missionModules/CfgVehicles.hpp @@ -6,7 +6,7 @@ class CfgVehicles { }; // TODO make a curator variant for this - class cse_moduleAmbianceSound: Module_F { + class ACE_moduleAmbianceSound: Module_F { scope = 2; displayName = "Ambiance Sounds [ACE]"; icon = QUOTE(PATHTOF(data\moduleSound.paa)); From ac54e8dfd797e94c2629628e04396743f8c21025 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 15 Feb 2015 12:44:34 +0100 Subject: [PATCH 147/211] Added UAV exchange battery sound --- addons/logistics_uavbattery/CfgSounds.hpp | 7 +++++++ addons/logistics_uavbattery/config.cpp | 1 + .../functions/fnc_refuelUAV.sqf | 1 + .../sounds/exchange_battery.ogg | Bin 0 -> 34349 bytes 4 files changed, 9 insertions(+) create mode 100644 addons/logistics_uavbattery/CfgSounds.hpp create mode 100644 addons/logistics_uavbattery/sounds/exchange_battery.ogg diff --git a/addons/logistics_uavbattery/CfgSounds.hpp b/addons/logistics_uavbattery/CfgSounds.hpp new file mode 100644 index 0000000000..530c5b86a9 --- /dev/null +++ b/addons/logistics_uavbattery/CfgSounds.hpp @@ -0,0 +1,7 @@ +class CfgSounds { + class ACE_replaceUAVBattery { + name = "ACE_replaceUAVBattery"; + sound[]={QUOTE(PATHTOF(sounds\exchange_battery.ogg)),1,1}; + titles[]={}; + }; +}; diff --git a/addons/logistics_uavbattery/config.cpp b/addons/logistics_uavbattery/config.cpp index 046a2665d0..32d8c49978 100644 --- a/addons/logistics_uavbattery/config.cpp +++ b/addons/logistics_uavbattery/config.cpp @@ -15,3 +15,4 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" +#include "CfgSounds.hpp" diff --git a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf index 9384044f00..5a248bf812 100644 --- a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf +++ b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf @@ -21,6 +21,7 @@ if (!(_this call FUNC(canRefuelUAV))) exitWith {}; _onFinish = { EXPLODE_2_PVT((_this select 0),_caller,_target); _caller removeItem "ACE_UAVBattery"; + playSound3D [QUOTE(PATHTO_R(sounds\exchange_battery.ogg)), objNull, false, getPosASL _caller, 1, 1, 10]; ["VehicleSetFuel", [_target], [_target, 1]] call EFUNC(common,targetEvent); //setFuel is local }; diff --git a/addons/logistics_uavbattery/sounds/exchange_battery.ogg b/addons/logistics_uavbattery/sounds/exchange_battery.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5a40ddb47a7aa5db7a2ba779baa37072286fc37c GIT binary patch literal 34349 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≈eyu+XoU znjbK#uZM}~(ezGCJ&h(5ahuF>Kjp+H2|{|N)cVxma9`L+=F6FJ3x3|0#K3@)1qyL) zWzzJ|)=`hEUgIw(=-?n4@P5q**K+Xte7z97G-;95smi%oY21*1!KT<$4#T zb{+TG{*i3-)9~Glg|qZBQ|Gl=7`J0tM#f0>ud{oFuid}RgEhU`chl>ZB3cx-Ob)yh zmy^Te$7H}=FEU+o-i1NB{Tgs_pKnui3pZv>R-&RoOhA@cuZLm2U~&X>`Ooi7I?66t z02)6`0;uJ}$fz`~N9ypZQ2+`6zD+zu0ov>`Rqt>GD5EBYCaoQ8Yd<-EZ-8F^-i$6WXmrGDg)%ZX$DkQo`;Jj~`zxGETKYs&IG zUQ&(;pg~({v1<63QM$y&Ta|O-HK34M2%(qIEQIkVyvkj!c~-s9C-N}XS*oCxNr|~s z{6^9*vu8c6ax13%13;(Y0QKkM3^a!qfY=*Y-e0@4$l0LX3apt3E`eOHFOoWA zsbS0eg7`6r7HnZgcUv+U!NhFW^6Qu9G?&KdU4T^M7;+?#ydcY&WsRdiyMnoZL{Ja8 zFSyQ0r`IT<3`H9tTpYSCUC7)D()(SE?W2 z3lNm*oASr+UctWFGX4PDqnVX1*vQxyTe~iQdP2Nze;`wp1ruQ0W;!Bll^91g`c*^A z^L#j;!`;sQzixEhTO`yq3j@|=&(u`;e~I7y2)w$UG=L^UZI^jG&1CJl@6Y6%$+Ya* z%VIU|>Dvg<={g(X>Xv!R_nOEcdb?avPhM_h41!ps<>uHhskk1zj?9~pk+%2nY=7qf2l@dM~)nm_r>x`0m|ZqeufkRkrAIR7_LS? zNL?s!eSYut$6slx|CD@Bu(W_IWk5kwtXV=T2_q2eO`}Q6B#^)=ku7{oH^@FAwLK;9 zhh_id%DKpKIPyMslt=FWCFg*+K|Wi+R0Uh%EJBb#pZe=fv}D=0o&Lwgh2-@If#Ay2 z%9Xb-*qt{czXD&-=KFGJ!C4j9Rkq|3#3g=uXc#+$Sqb*U6Z>^w3WNypKI)|z*-3gV zV3hleB>Nv>y>b!;zzhhR=0P2Ysi7S{4ljx^(>w#HfDNCV45QfxiN&&QaDrEn*R2sGv$LoAzOkal!(1l&!Fsj&MIJP{bjbXcCoFCGw z8>UeZ`_83V4aN zJQ4c5gc*FChJ{1DaZ8$dp&hM@a%|~@lP5eNBsJB<4JUQ@5p}d)P1t35{=>TJ0$Qa2 z)$XA_6zs>+1&D`n5ZxvC6l-`BwHHv$f@4GC3kY%av~vx}GVGF;kzxuz6wCd$IPqSViqgT}^IfPc(!GN13)p^KCnEuX6z`rNYS`vk}y$awTr zmX}BKx(MduEV+?=NbKeBE53L4rI}Rw=f0-4_K|0cG05Eclois?v`b$2JJ(>h+(N!GzZfdi@Evas5pUyoqQH;#6lGI zxJohE$b^oNunTAs>}%XBtYM1%oX+V@eIOF*CLF^ZQd=GQEE1|%yAKM-4}M@JE!nA= z(=QPSMB`=xoO!mV35i_5d5;eC2+6dd`xwZfA|my5^rjjV>PDI+*Zu(KuSgFezAZ~CA3%m zi0JSVvdYq-`zUf{DeWsnt1+vm+)ztPSS_%1*+YVyi9iE!XjovO)u%=u*P zb0x>wxE0S6on1wi*VCr*zf^)FwRzRJu2fN0;}R(9oGnQ#WMo-PDKoq0s)e4KW_J^A zm5!8kMH<615o~dk_|!}kP74#|#{2A}h`P!@j#0cJyN~?$r0iouzT7!~s{j&zqTeBP z^j2ZQG;`iM=j7y}KiYzMZggQ(^2>hzxa5__QxdIRXtM0m@zPP2#-*~HVtsS{gNr3& z(`oQW{fOX9vB`X;@1#wlEyS*~I{4x9LGrcp2Y%=Sz9p#}Nz0*+9-Ztoj|)?wIl9PI zNb<*tf6Q5F=VKjw5X6vBxA##3T6mC zv4$Wn;c77EhQbFCS>{C6ORv@9(pih96;(hxCJ7@jPpS{TjDmkNHLIF)PLut!_I0mZ zI9=7M8(Ei5$l0f4&k15~?BN3ppab0XDDU-b-EbGqeMo}a0)S9bo9;{)N&{z`z>dR< zAJ5Gg#q~pdTPZ&OfF%ED);0TA$cQ5ua7H92UkX6Twko(`bVs2Z<6lEi2SNOrnFjat zP>SQJ{jj!1_UyMCOcwV2j2))gFF5!NqA`qcU_3QB$e0X_Z)jC`f^WwkYo4B>OvhuK z7x7lgjg`G{@^g4YiPGb2k&d6qkN2~#gNERss|PyWsZkhd3KElXd13?74K8Cyxc;c+ zNEY)WvJ!O1t_#}E8bnm1kN=O+N<~3L6hJ^HSlQVt$H;h(z!Qms4N-gZNX<=CQVMRQ z2%5|34lsjcFlrD1-)9i+AsvQ86TVZHyfwqgkem;33ORLIJ&Wu00sOSf>^3>;QT*3c zK0vpqH66OO}A@-H!W#20@3Pm*uHly8^A|$%lS8{^Z&?0$zVng z`H%FIbP)q802KwX$W25O;(-Q=N1{4A14nRQv6$@>Z%*IZajdfcYy#pYr^Mga_&fbm z>;uh%H$qQ+LcVA9_4{}l>cRaI{YFkVo!Za2sC^nJJT(_GY+0f}x8))e0)~Jblo6zB zcix=a`RqT~(0`LU{~)EFvJK0jvG0l*02Jf?wyAgWoqqe%k&mZ+x6X0XU&L^$y34~1{e5d~D zHt9$t{3gkd##8a(KlshJbcS41LS+AfN&$c$Y;c?`Ej_#E>`WJ0pIHzTV*=B}g7}wf zv38}mSVlqK6Z^++=8yQj4#cKDYzEKkdL})ZxhLh9;W{+Vtc+X<8<>)cL7O5{fE@oE z?*9W8{ox-J`NQo0>~(IZoIZ9K?ISD!3OW5@2nbq(cAk*7o(k{N_hpRuMEJCbKaiU>`@(sSQ0x&D|pJSX<{})~wy6_LYGzA7F{`UluJcgO? z+*E%zCE(-s?4+sn(VI;4ZPw-b-CI?i=~a-9$1Cmk zc}GvvS|84G$_$1EOwZ+Iv!rFX=G>9eqvZO>Tj$yvGMWFF?EI6U%}5TA|Jy9Sg+k8C zzPviqf1BELtF7tQnd0B1w;v`~f68>^=CKgf_uXY{gsNi9i(Nd*D22=E{(txP-#eGI z)8vymB_+|*rCH*yp`7;lyqm867Ui<*+ljBNce2WLfmS=1&#LryQ_`6yxe$?zgGj%j ze-l!l{@*s-b!F93>@KKJ7n5vC(YI8-dgr*Z?yD(ww_{F0&WDx3=al#E>#J)M5Hl3Mcr05Hu>EC2ui literal 0 HcmV?d00001 From baf9396459c38d021801b7e6aa0cf0ad7ea6802e Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 15 Feb 2015 15:31:09 +0100 Subject: [PATCH 148/211] cleanup attach --- addons/attach/CfgEventHandlers.hpp | 5 +- addons/attach/CfgMagazines.hpp | 4 +- addons/attach/CfgVehicles.hpp | 28 +++++----- addons/attach/CfgWeapons.hpp | 9 ++-- addons/attach/config.cpp | 11 ++-- addons/attach/functions/fnc_attach.sqf | 32 ++++++------ addons/attach/functions/fnc_canAttach.sqf | 8 +-- addons/attach/functions/fnc_canDetach.sqf | 13 ++--- addons/attach/functions/fnc_detach.sqf | 54 ++++++++++---------- addons/attach/functions/fnc_openAttachUI.sqf | 18 +++---- addons/attach/functions/fnc_placeApprove.sqf | 8 +-- addons/attach/stringtable.xml | 2 +- 12 files changed, 100 insertions(+), 92 deletions(-) diff --git a/addons/attach/CfgEventHandlers.hpp b/addons/attach/CfgEventHandlers.hpp index 4c2b8b16ca..f0a9f14d91 100644 --- a/addons/attach/CfgEventHandlers.hpp +++ b/addons/attach/CfgEventHandlers.hpp @@ -1,5 +1,6 @@ + class Extended_PreInit_EventHandlers { class ADDON { - init = QUOTE( call COMPILE_FILE(XEH_preInit) ); + init = QUOTE(call COMPILE_FILE(XEH_preInit)); }; -}; \ No newline at end of file +}; diff --git a/addons/attach/CfgMagazines.hpp b/addons/attach/CfgMagazines.hpp index 282d36b964..d63b8db36b 100644 --- a/addons/attach/CfgMagazines.hpp +++ b/addons/attach/CfgMagazines.hpp @@ -1,10 +1,12 @@ + class CfgMagazines { class CA_Magazine; class B_IR_Grenade: CA_Magazine { ACE_Attachable = 1; }; + class SmokeShell; class Chemlight_green: SmokeShell { ACE_Attachable = 1; }; -}; \ No newline at end of file +}; diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp index bc1f52988a..1b16d59acc 100644 --- a/addons/attach/CfgVehicles.hpp +++ b/addons/attach/CfgVehicles.hpp @@ -1,7 +1,3 @@ -#define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ - name = #ITEM; \ - count = COUNT; \ - }; #define MACRO_ATTACHTOVEHICLE \ class ACE_Actions { \ @@ -32,16 +28,20 @@ class CfgVehicles { class Car: LandVehicle { MACRO_ATTACHTOVEHICLE }; + class Tank: LandVehicle { MACRO_ATTACHTOVEHICLE }; + class Air; class Helicopter: Air { MACRO_ATTACHTOVEHICLE }; + class Plane: Air { MACRO_ATTACHTOVEHICLE }; + class Ship; class Ship_F: Ship { MACRO_ATTACHTOVEHICLE @@ -96,6 +96,7 @@ class CfgVehicles { onlyInNvg = 1; useFlare = 0; }; + side = 7;//-1=NO_SIDE yellow box,3=CIV grey box,4=NEUTRAL yellow box,6=FRIENDLY green box,7=LOGIC no radar signature accuracy = 1000; cost = 0; @@ -111,37 +112,36 @@ class CfgVehicles { }; class NATO_Box_Base; - class EAST_Box_Base; - class IND_Box_Base; - class FIA_Box_Base_F; - class Box_NATO_Support_F: NATO_Box_Base { class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + MACRO_ADDITEM(ACE_IR_Strobe_Item,12); }; }; + class EAST_Box_Base; class Box_East_Support_F: EAST_Box_Base { class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + MACRO_ADDITEM(ACE_IR_Strobe_Item,12); }; }; + class IND_Box_Base; class Box_IND_Support_F: IND_Box_Base { class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + MACRO_ADDITEM(ACE_IR_Strobe_Item,12); }; }; + class FIA_Box_Base_F; class Box_FIA_Support_F: FIA_Box_Base_F { class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + MACRO_ADDITEM(ACE_IR_Strobe_Item,12); }; }; class ACE_Box_Misc: Box_NATO_Support_F { class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + MACRO_ADDITEM(ACE_IR_Strobe_Item,12); }; }; -}; \ No newline at end of file +}; diff --git a/addons/attach/CfgWeapons.hpp b/addons/attach/CfgWeapons.hpp index 8174f67b38..4ad34832c5 100644 --- a/addons/attach/CfgWeapons.hpp +++ b/addons/attach/CfgWeapons.hpp @@ -1,16 +1,19 @@ + class CfgWeapons { class ACE_ItemCore; class InventoryItem_Base_F; class ACE_IR_Strobe_Item: ACE_ItemCore { + ACE_attachable = 1; + author = "$STR_ACE_Common_ACETeam"; + scope = 2; displayName = "$STR_ACE_IrStrobe_Name"; descriptionShort = "$STR_ACE_IrStrobe_Description"; model = "\A3\weapons_F\ammo\mag_univ.p3d"; picture = PATHTOF(UI\irstrobe_item.paa); - scope = 2; - ACE_attachable = 1; + class ItemInfo: InventoryItem_Base_F { mass = 1; }; }; -}; \ No newline at end of file +}; diff --git a/addons/attach/config.cpp b/addons/attach/config.cpp index 9accc9f253..007084d8df 100644 --- a/addons/attach/config.cpp +++ b/addons/attach/config.cpp @@ -5,17 +5,14 @@ class CfgPatches { units[] = {}; weapons[] = {"ACE_IR_Strobe_Item"}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common", "ace_interaction"}; - author[] = {"KoffeinFlummi", "eRazeri", "CAA-Picard"}; + requiredAddons[] = {"ace_common","ace_interaction"}; + author[] = {"KoffeinFlummi","eRazeri","CAA-Picard"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; }; }; #include "CfgEventHandlers.hpp" - -#include "CfgVehicles.hpp" - -#include "CfgWeapons.hpp" - #include "CfgMagazines.hpp" +#include "CfgVehicles.hpp" +#include "CfgWeapons.hpp" diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index 9fd0cf7952..3aa06bacc2 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -20,31 +20,33 @@ PARAMS_3(_unit,_attachToVehicle,_itemName); //Sanity Check (_unit has item in inventory, not over attach limit) -if (!([_unit,_attachToVehicle,_itemName] call FUNC(canAttach))) exitWith {ERROR("Tried to attach, but check failed");}; +if !([_unit, _attachToVehicle, _itemName] call FUNC(canAttach)) exitWith {ERROR("Tried to attach, but check failed");}; + +private ["_itemVehClass", "_onAtachText", "_selfAttachPosition"]; -_selfAttachPosition = [_unit, [-0.05,0,0.12], "rightshoulder"]; _itemVehClass = ""; _onAtachText = ""; +_selfAttachPosition = [_unit, [-0.05, 0, 0.12], "rightshoulder"]; -switch true do { -case (_itemName == "ACE_IR_Strobe_Item"): { +switch (true) do { + case (_itemName == "ACE_IR_Strobe_Item"): { _itemVehClass = "ACE_IR_Strobe_Effect"; _onAtachText = localize "STR_ACE_Attach_IrStrobe_Attached"; - _selfAttachPosition = [_unit,[0,-0.11,0.16],"pilot"]; //makes it attach to the head a bit better, shoulder is not good for visibility - eRazeri + //_selfAttachPosition = [_unit, [0, -0.11, 0.16], "pilot"]; //makes it attach to the head a bit better, shoulder is not good for visibility - eRazeri }; -case (_itemName == "B_IR_Grenade"): { + case (_itemName == "B_IR_Grenade"): { _itemVehClass = "B_IRStrobe"; _onAtachText = localize "STR_ACE_Attach_IrGrenade_Attached"; }; -case (_itemName == "O_IR_Grenade"): { + case (_itemName == "O_IR_Grenade"): { _itemVehClass = "O_IRStrobe"; _onAtachText = localize "STR_ACE_Attach_IrGrenade_Attached"; }; -case (_itemName == "I_IR_Grenade"): { + case (_itemName == "I_IR_Grenade"): { _itemVehClass = "I_IRStrobe"; _onAtachText = localize "STR_ACE_Attach_IrGrenade_Attached"; }; -case (_itemName == "Chemlight_blue" or {_itemName == "Chemlight_green"} or {_itemName == "Chemlight_red"} or {_itemName == "Chemlight_yellow"}): { + case (toLower _itemName in ["chemlight_blue", "chemlight_green", "chemlight_red", "chemlight_yellow"]): { _itemVehClass = _itemName; _onAtachText = localize "STR_ACE_Attach_Chemlight_Attached"; }; @@ -57,8 +59,8 @@ if (_unit == _attachToVehicle) then { //Self Attachment _attachedItem = _itemVehClass createVehicle [0,0,0]; _attachedItem attachTo _selfAttachPosition; [_onAtachText] call EFUNC(common,displayTextStructured); - _attachToVehicle setVariable ["ACE_AttachedObjects", [_attachedItem], true]; - _attachToVehicle setVariable ["ACE_AttachedItemNames", [_itemName], true]; + _attachToVehicle setVariable [QGVAR(Objects), [_attachedItem], true]; + _attachToVehicle setVariable [QGVAR(ItemNames), [_itemName], true]; } else { GVAR(setupObject) = _itemVehClass createVehicleLocal [0,0,-10000]; GVAR(setupObject) enableSimulationGlobal false; @@ -72,17 +74,17 @@ if (_unit == _attachToVehicle) then { //Self Attachment private "_player"; _player = ACE_player; //Stop if player switch or player gets to far from vehicle - if ((GVAR(placer) != _player) || {(_player distance GVAR(SetupAttachVehicle)) > 7}) exitWith { + if (GVAR(placer) != _player || {_player distance GVAR(SetupAttachVehicle) > 7}) exitWith { call FUNC(placeCancel); }; GVAR(pfeh_running) = true; _pos = (ASLtoATL eyePos _player) vectorAdd (positionCameraToWorld [0,0,1] vectorDiff positionCameraToWorld [0,0,0]); GVAR(setupObject) setPosATL _pos; - }] call BIS_fnc_addStackedEventHandler; + }] call BIS_fnc_addStackedEventHandler; // @todo replace with CBA PFH //had to delay the mouseHint, not sure why [{[localize "STR_ACE_Attach_PlaceAction", localize "STR_ACE_Attach_CancelAction"] call EFUNC(interaction,showMouseHint)}, [], 0, 0] call EFUNC(common,waitAndExecute); - _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {GVAR(pfeh_running) AND !isNull (GVAR(setupObject))}, {call FUNC(placeApprove);}] call EFUNC(common,AddActionEventHandler)]; - _unit setVariable [QGVAR(cancelActionEH), [_unit, "MenuBack", {GVAR(pfeh_running) AND !isNull (GVAR(setupObject))}, {call FUNC(placeCancel);}] call EFUNC(common,AddActionEventHandler)]; + _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {GVAR(pfeh_running) && {!isNull (GVAR(setupObject))}}, {call FUNC(placeApprove);}] call EFUNC(common,AddActionEventHandler)]; + _unit setVariable [QGVAR(cancelActionEH), [_unit, "MenuBack", {GVAR(pfeh_running) && {!isNull (GVAR(setupObject))}}, {call FUNC(placeCancel);}] call EFUNC(common,AddActionEventHandler)]; }; diff --git a/addons/attach/functions/fnc_canAttach.sqf b/addons/attach/functions/fnc_canAttach.sqf index ac646ef700..1c33f7b112 100644 --- a/addons/attach/functions/fnc_canAttach.sqf +++ b/addons/attach/functions/fnc_canAttach.sqf @@ -19,7 +19,9 @@ PARAMS_3(_unit,_attachToVehicle,_item); -_attachLimit = if (_unit == _attachToVehicle) then {1} else {10}; -_attachedObjects = _attachToVehicle getVariable ["ACE_AttachedObjects", []]; +private ["_attachLimit", "_attachedObjects"]; -canStand _unit && {alive _attachToVehicle} && {(count _attachedObjects) < _attachLimit} && {_item in ((magazines _unit) + (items _unit) + [""])} +_attachLimit = [10, 1] select (_unit == _attachToVehicle); +_attachedObjects = _attachToVehicle getVariable [QGVAR(Objects), []]; + +canStand _unit && {alive _attachToVehicle} && {count _attachedObjects < _attachLimit} && {_item in (itemsWithMagazines _unit + [""])} diff --git a/addons/attach/functions/fnc_canDetach.sqf b/addons/attach/functions/fnc_canDetach.sqf index d099d2035e..ad2f68776c 100644 --- a/addons/attach/functions/fnc_canDetach.sqf +++ b/addons/attach/functions/fnc_canDetach.sqf @@ -16,24 +16,25 @@ */ #include "script_component.hpp" -private ["_attachedObjects", "_inRange", "_unitPos", "_objectPos"]; - PARAMS_2(_unit,_attachToVehicle); -_attachedObjects = _attachToVehicle getVariable ["ACE_AttachedObjects", []]; +private ["_attachedObjects", "_inRange"]; + +_attachedObjects = _attachToVehicle getVariable [QGVAR(Objects), []]; _inRange = false; if (_unit == _attachToVehicle) then { - _inRange = (count _attachedObjects) > 0; + _inRange = count _attachedObjects > 0; } else { //Scan if unit is within range (using 2d distance) + private ["_unitPos", "_objectPos"]; _unitPos = getPos _unit; _unitPos set [2,0]; { _objectPos = getPos _x; _objectPos set [2, 0]; - if ((_objectPos distance _unitPos) < 4) exitWith {_inRange = true}; + if (_objectPos distance _unitPos < 4) exitWith {_inRange = true}; } forEach _attachedObjects; }; -(canStand _unit) && _inRange && {alive _attachToVehicle} +canStand _unit && {_inRange} && {alive _attachToVehicle} diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf index b18cec09bd..8fb9e3cc9c 100644 --- a/addons/attach/functions/fnc_detach.sqf +++ b/addons/attach/functions/fnc_detach.sqf @@ -16,12 +16,14 @@ */ #include "script_component.hpp" -private ["_itemName", "_count", "_attachedItem", "_fnc_detachDelay"]; - PARAMS_2(_unit,_attachToVehicle); -_attachedObjectsArray = _attachToVehicle getVariable ["ACE_AttachedObjects", []]; -_attachedItemsArray = _attachToVehicle getVariable ["ACE_AttachedItemNames", []]; +private ["_attachedObjects", "_attachedItems"]; + +_attachedObjects = _attachToVehicle getVariable [QGVAR(Objects), []]; +_attachedItems = _attachToVehicle getVariable [QGVAR(ItemNames), []]; + +private ["_attachedObject", "_attachedIndex", "_itemName", "_minDistance", "_unitPos", "_objectPos"]; _attachedObject = objNull; _attachedIndex = -1; @@ -34,53 +36,51 @@ _unitPos set [2,0]; { _objectPos = getPos _x; _objectPos set [2, 0]; - if ((_objectPos distance _unitPos) < _minDistance) then { - _minDistance = (_objectPos distance _unitPos); + if (_objectPos distance _unitPos < _minDistance) then { + _minDistance = _objectPos distance _unitPos; _attachedObject = _x; - _itemName = _attachedItemsArray select _forEachIndex; + _itemName = _attachedItems select _forEachIndex; _attachedIndex = _forEachIndex; }; -} forEach _attachedObjectsArray; +} forEach _attachedObjects; // Check if unit has an attached item -if ((isNull _attachedObject) || {_itemName == ""}) exitWith {ERROR("Could not find attached object")}; +if (isNull _attachedObject || {_itemName == ""}) exitWith {ERROR("Could not find attached object")}; -// Add item to inventory -_count = (count items _unit) + (count magazines _unit); -_unit addItem _itemName; -if ((count items _unit) + (count magazines _unit) <= _count) exitWith { +// Exit if can't add the item +if !(_unit canAdd _itemName) exitWith { [localize "STR_ACE_Attach_Inventory_Full"] call EFUNC(common,displayTextStructured); }; -if (_itemName == "B_IR_Grenade" or _itemName == "O_IR_Grenade" or _itemName == "I_IR_Grenade") then { +// Add item to inventory +_unit addItem _itemName; + +if (toLower _itemName in ["b_ir_grenade", "o_ir_grenade", "i_ir_grenade"]) then { // Hack for dealing with X_IR_Grenade effect not dissapearing on deleteVehicle detach _attachedObject; - _attachedObject setPos [getPos _unit select 0, getPos _unit select 1, ((getPos _unit select 2) - 1000)]; + _attachedObject setPos ((getPos _unit) vectorAdd [0, 0, -1000]); // Delete attached item after 0.5 seconds - _fnc_detachDelay = { - deleteVehicle (_this select 0); - }; - [_fnc_detachDelay, [_attachedObject], 0.5, 0] call EFUNC(common,waitAndExecute); + [{deleteVehicle (_this select 0)}, [_attachedObject], 0.5, 0] call EFUNC(common,waitAndExecute); } else { // Delete attached item deleteVehicle _attachedObject; }; // Reset unit variables -_attachedObjectsArray deleteAt _attachedIndex; -_attachedItemsArray deleteAt _attachedIndex; -_attachToVehicle setVariable ["ACE_AttachedObjects", _attachedObjectsArray, true]; -_attachToVehicle setVariable ["ACE_AttachedItemNames", _attachedItemsArray, true]; +_attachedObjects deleteAt _attachedIndex; +_attachedItems deleteAt _attachedIndex; +_attachToVehicle setVariable [QGVAR(Objects), _attachedObjects, true]; +_attachToVehicle setVariable [QGVAR(ItemNames), _attachedItems, true]; // Display message -switch true do { -case (_itemName == "ACE_IR_Strobe_Item") : { +switch (true) do { + case (_itemName == "ACE_IR_Strobe_Item") : { [localize "STR_ACE_Attach_IrStrobe_Detached"] call EFUNC(common,displayTextStructured); }; -case (_itemName == "B_IR_Grenade" or _itemName == "O_IR_Grenade" or _itemName == "I_IR_Grenade") : { + case (toLower _itemName in ["b_ir_grenade", "o_ir_grenade", "i_ir_grenade"]) : { [localize "STR_ACE_Attach_IrGrenade_Detached"] call EFUNC(common,displayTextStructured); }; -case (_itemName == "Chemlight_blue" or {_itemName == "Chemlight_green"} or {_itemName == "Chemlight_red"} or {_itemName == "Chemlight_yellow"}) : { + case (toLower _itemName in ["chemlight_blue", "chemlight_green", "chemlight_red", "chemlight_yellow"]) : { [localize "STR_ACE_Attach_Chemlight_Detached"] call EFUNC(common,displayTextStructured); }; }; diff --git a/addons/attach/functions/fnc_openAttachUI.sqf b/addons/attach/functions/fnc_openAttachUI.sqf index 6521e43fbe..5533956bb6 100644 --- a/addons/attach/functions/fnc_openAttachUI.sqf +++ b/addons/attach/functions/fnc_openAttachUI.sqf @@ -55,13 +55,13 @@ _attachables = items _unit; } forEach _attachables; [ -_actions, -{ - [ACE_player, GVAR(attachTarget), _this] call FUNC(attach); - call EFUNC(interaction,hideMenu); -}, -{ - call EFUNC(interaction,hideMenu); - if !(profileNamespace getVariable [QEGVAR(interaction,AutoCloseMenu), false]) then {"Default" call EFUNC(interaction,openMenuSelf)}; -} + _actions, + { + [ACE_player, GVAR(attachTarget), _this] call FUNC(attach); + call EFUNC(interaction,hideMenu); + }, + { + call EFUNC(interaction,hideMenu); + if !(profileNamespace getVariable [QEGVAR(interaction,AutoCloseMenu), false]) then {"Default" call EFUNC(interaction,openMenuSelf)}; + } ] call EFUNC(interaction,openSelectMenu); diff --git a/addons/attach/functions/fnc_placeApprove.sqf b/addons/attach/functions/fnc_placeApprove.sqf index ceb48de9b5..c6277e2961 100644 --- a/addons/attach/functions/fnc_placeApprove.sqf +++ b/addons/attach/functions/fnc_placeApprove.sqf @@ -100,11 +100,11 @@ _attachedObject attachTo [_attachToVehicle, _endPosTestOffset]; _placer removeItem _itemClassname; //Add Object to ACE_AttachedObjects and ACE_AttachedItemNames -_currentObjects = _attachToVehicle getVariable ["ACE_AttachedObjects", []]; +_currentObjects = _attachToVehicle getVariable [QGVAR(Objects), []]; _currentObjects pushBack _attachedObject; -_attachToVehicle setVariable ["ACE_AttachedObjects", _currentObjects, true]; -_currentItemNames = _attachToVehicle getVariable ["ACE_AttachedItemNames", []]; +_attachToVehicle setVariable [QGVAR(Objects), _currentObjects, true]; +_currentItemNames = _attachToVehicle getVariable [QGVAR(ItemNames), []]; _currentItemNames pushBack _itemClassname; -_attachToVehicle setVariable ["ACE_AttachedItemNames", _currentItemNames, true]; +_attachToVehicle setVariable [QGVAR(ItemNames), _currentItemNames, true]; [_placementText] call EFUNC(common,displayTextStructured); diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml index 21577c55d3..13c468184b 100644 --- a/addons/attach/stringtable.xml +++ b/addons/attach/stringtable.xml @@ -176,4 +176,4 @@ Error en Acoplar - \ No newline at end of file + From 4f5ab1f8e5f67f13b2f8f180734e5b91f5eda1cb Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 15 Feb 2015 15:34:19 +0100 Subject: [PATCH 149/211] removed common as required addon for attach --- addons/attach/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/attach/config.cpp b/addons/attach/config.cpp index 007084d8df..dd7e1add3b 100644 --- a/addons/attach/config.cpp +++ b/addons/attach/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {"ACE_IR_Strobe_Item"}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common","ace_interaction"}; + requiredAddons[] = {"ace_interaction"}; author[] = {"KoffeinFlummi","eRazeri","CAA-Picard"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; From c094c10e467d2d3c132178c612793203bfe828f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Sun, 15 Feb 2015 11:42:20 -0300 Subject: [PATCH 150/211] visible ir strobes --- addons/attach/CfgVehicles.hpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp index bc1f52988a..e7b5cb3bb4 100644 --- a/addons/attach/CfgVehicles.hpp +++ b/addons/attach/CfgVehicles.hpp @@ -83,15 +83,17 @@ class CfgVehicles { simulation = "nvmarker"; class NVGMarker { - diffuse[] = {0,0,0}; - ambient[] = {0,0,0}; - brightness = 0.004; + diffuse[] = {0.006, 0.006, 0.006, 1}; + ambient[] = {0.005, 0.005, 0.005, 1}; + brightness = 0.2; name = "pozicni blik"; - drawLight = 1; - drawLightSize = 0.005; + drawLightSize = 0.2; drawLightCenterSize = 0.003; activeLight = 0; blinking=1; + blinkingStartsOn=1; + blinkingPattern[] = {2,2}; + blinkingPatternGuarantee = false; dayLight = 0; onlyInNvg = 1; useFlare = 0; From 44aaf3955b2f59fe18c346f784f4b614552af88b Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 15 Feb 2015 15:48:40 +0100 Subject: [PATCH 151/211] some backblast cleanup --- addons/backblast/CfgEventHandlers.hpp | 8 +++--- addons/backblast/CfgWeapons.hpp | 35 +++++++++++++++------------ addons/backblast/config.cpp | 3 +-- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/addons/backblast/CfgEventHandlers.hpp b/addons/backblast/CfgEventHandlers.hpp index a336a5dd41..aaa0189b6d 100644 --- a/addons/backblast/CfgEventHandlers.hpp +++ b/addons/backblast/CfgEventHandlers.hpp @@ -7,11 +7,11 @@ class Extended_PreInit_EventHandlers { class Extended_FiredNear_EventHandlers { class CAManBase { - class GVAR(LauncherBackblast) { - FiredNear = QUOTE( if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 3 >> 'ACE_Backblast_Damage') > 0}) then {_this call FUNC(launcherBackblast)} ); + class ADDON { + firedNear = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 3 >> 'ACE_Backblast_Damage') > 0}) then {_this call DFUNC(launcherBackblast)}); }; - class GVAR(TankDangerZone) { - FiredNear = QUOTE( if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 3 >> 'ACE_DangerZone_Damage') > 0}) then {_this call FUNC(tankDangerZone)} ); + class ADDON { + firedNear = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 3 >> 'ACE_DangerZone_Damage') > 0}) then {_this call DFUNC(tankDangerZone)}); }; }; }; diff --git a/addons/backblast/CfgWeapons.hpp b/addons/backblast/CfgWeapons.hpp index fcb4bde0c5..f4f7c07153 100644 --- a/addons/backblast/CfgWeapons.hpp +++ b/addons/backblast/CfgWeapons.hpp @@ -1,33 +1,37 @@ + class CfgWeapons { class LauncherCore; class Launcher: LauncherCore { - ACE_Backblast_Angle = 60; - ACE_Backblast_Range = 10; - ACE_Backblast_Damage = 0.7; + GVAR(angle) = 60; + GVAR(range) = 10; + GVAR(damage) = 0.7; }; + class Launcher_Base_F: Launcher {}; class launch_Titan_base: Launcher_Base_F { - ACE_Backblast_Angle = 40; - ACE_Backblast_Range = 8; - ACE_Backblast_Damage = 0.5; + GVAR(angle) = 40; + GVAR(range) = 8; + GVAR(damage) = 0.5; }; + class launch_Titan_short_base: launch_Titan_base { - ACE_Backblast_Angle = 40; - ACE_Backblast_Range = 8; - ACE_Backblast_Damage = 0.5; + GVAR(angle) = 40; + GVAR(range) = 8; + GVAR(damage) = 0.5; }; class launch_NLAW_F: Launcher_Base_F { - ACE_Backblast_Angle = 40; - ACE_Backblast_Range = 5; - ACE_Backblast_Damage = 0.6; + GVAR(angle) = 40; + GVAR(range) = 5; + GVAR(damage) = 0.6; }; + class launch_RPG32_F: Launcher_Base_F { - ACE_Backblast_Angle = 60; - ACE_Backblast_Range = 15; - ACE_Backblast_Damage = 0.7; + GVAR(angle) = 60; + GVAR(range) = 15; + GVAR(damage) = 0.7; }; class CannonCore; @@ -36,6 +40,7 @@ class CfgWeapons { ACE_DangerZone_Range = 50; ACE_DangerZone_Damage = 0.85; }; + class mortar_155mm_AMOS: CannonCore { ACE_DangerZone_Angle = 90; ACE_DangerZone_Range = 60; diff --git a/addons/backblast/config.cpp b/addons/backblast/config.cpp index 88de936cf9..d4aaf8131b 100644 --- a/addons/backblast/config.cpp +++ b/addons/backblast/config.cpp @@ -6,12 +6,11 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2", "KoffeinFlummi"}; + author[] = {"commy2","KoffeinFlummi"}; authorUrl = "https://github.com/commy2/"; VERSION_CONFIG; }; }; #include "CfgEventHandlers.hpp" - #include "CfgWeapons.hpp" From f3a94f03ed94059840c8c67287ca2ece5c17d38e Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 15 Feb 2015 17:14:09 +0100 Subject: [PATCH 152/211] clean up backblast --- .../functions/fnc_backblastDamage.sqf | 39 ++++++++++--------- .../functions/fnc_fireLauncherBackblast.sqf | 24 +++++++----- .../functions/fnc_fireOverpressureZone.sqf | 23 ++++++----- .../backblast/functions/fnc_getDistance.sqf | 6 +-- .../functions/fnc_overpressureDamage.sqf | 37 ++++++++++-------- 5 files changed, 74 insertions(+), 55 deletions(-) diff --git a/addons/backblast/functions/fnc_backblastDamage.sqf b/addons/backblast/functions/fnc_backblastDamage.sqf index 21d2e81736..651dc58830 100644 --- a/addons/backblast/functions/fnc_backblastDamage.sqf +++ b/addons/backblast/functions/fnc_backblastDamage.sqf @@ -1,5 +1,5 @@ /* - * Author: Commy2 and CAA-Picard + * Author: commy2 and CAA-Picard * * Calculate and apply backblast damage to potentially affected local units * @@ -16,52 +16,55 @@ EXPLODE_4_PVT(_this,_firer,_posASL,_direction,_weapon); -private ["_backblastAngle","_backblastRange","_backblastDamage"]; -_backblastAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Angle") / 2; -_backblastRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Range"); -_backblastDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Damage"); +private ["_backblastAngle", "_backblastRange", "_backblastDamage"]; + +_backblastAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; +_backblastRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); +_backblastDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); + TRACE_4("Parameters:",_backblastAngle,_backblastRange,_backblastDamage,_weapon); +private "_pos"; _pos = _posASL; if (!surfaceIsWater _pos) then { _pos = ASLtoATL _pos; }; -_affected = _pos nearEntities ["CAManBase", _backblastRange]; { - _unit = _x; - if (local _unit && _unit != _firer && vehicle _unit == _unit) then { + if (local _x && {_x != _firer} && {vehicle _x == _x}) then { + private ["_targetPositionASL", "_relativePosition", "_axisDistance", "_distance", "_angle", "_line", "_line2"]; - _targetPositionASL = eyePos _unit; + _targetPositionASL = eyePos _x; _relativePosition = _targetPositionASL vectorDiff _posASL; _axisDistance = _relativePosition vectorDotProduct _direction; _distance = vectorMagnitude _relativePosition; _angle = acos (_axisDistance / _distance); - _line = [_posASL, _targetPositionASL, _firer, _unit]; + _line = [_posASL, _targetPositionASL, _firer, _x]; _line2 = [_posASL, _targetPositionASL]; - TRACE_4("Affected:",_unit,_axisDistance,_distance,_angle); + TRACE_4("Affected:",_x,_axisDistance,_distance,_angle); + if (_angle < _backblastAngle && {_distance < _backblastRange} && {!lineIntersects _line} && {!terrainIntersectASL _line2}) then { + private ["_alpha", "_beta", "_damage"]; + _alpha = sqrt (1 - _distance / _backblastRange); _beta = sqrt (1 - _angle / _backblastAngle); _damage = 2 * _alpha * _beta * _backblastDamage; // If the target is the ACE_player - if (_unit == ACE_player) then {[_damage * 100] call BIS_fnc_bloodEffect}; + if (_x == ACE_player) then {[_damage * 100] call BIS_fnc_bloodEffect}; // TODO: Sort this interaction with medical if (isClass (configFile >> "CfgPatches" >> "ACE_Medical")) then { - [_unit, "HitBody", ([_unit, "", ((_unit getHitPointDamage "HitBody") + _damage), objNull, objNull] call EFUNC(medical,handleDamage))] call EFUNC(medical,setHitPointDamage); - _unit spawn { + [_x, "HitBody", ([_x, "", (_x getHitPointDamage "HitBody") + _damage, objNull, objNull] call EFUNC(medical,handleDamage))] call EFUNC(medical,setHitPointDamage); + _x spawn { sleep 0.5; [_this, "", 0, objNull, objNull] call EFUNC(medical,handleDamage); }; } else { - _unit setDamage (damage _unit + _damage); + _x setDamage (damage _x + _damage); }; }; }; -} forEach _affected; - - +} forEach (_pos nearEntities ["CAManBase", _backblastRange]); diff --git a/addons/backblast/functions/fnc_fireLauncherBackblast.sqf b/addons/backblast/functions/fnc_fireLauncherBackblast.sqf index 5970e7b9c2..a35af9f19d 100644 --- a/addons/backblast/functions/fnc_fireLauncherBackblast.sqf +++ b/addons/backblast/functions/fnc_fireLauncherBackblast.sqf @@ -23,27 +23,32 @@ EXPLODE_7_PVT(_this,_firer,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile); // Prevent AI from causing backblast damage if !([_firer] call EFUNC(common,isPlayer)) exitWith {}; -private ["_position","_direction","_distance","_alpha","_beta","_damage","_affected"]; +private ["_position", "_direction"]; + _position = getPosASL _projectile; _direction = [0, 0, 0] vectorDiff (vectorDir _projectile); -private ["_backblastAngle","_backblastRange","_backblastDamage"]; -_backblastAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Angle") / 2; -_backblastRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Range"); -_backblastDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_Backblast_Damage"); +private ["_backblastAngle", "_backblastRange", "_backblastDamage"]; +_backblastAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; +_backblastRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); +_backblastDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); // Damage to others +private "_affected"; _affected = getPos _projectile nearEntities ["CAManBase", _backblastRange]; -// Let each client handle their own affected units -["backblast", _affected, [_firer,_position,_direction,_weapon]] call EFUNC(common,targetEvent); +// Let each client handle their own affected units +["backblast", _affected, [_firer, _position, _direction, _weapon]] call EFUNC(common,targetEvent); // Damage to the firer +private "_distance"; _distance = [_position, _direction, _backblastRange] call FUNC(getDistance); -TRACE_1("Distance", _distance); + +TRACE_1("Distance",_distance); if (_distance < _backblastRange) then { + private ["_alpha", "_beta", "_damage"]; _alpha = sqrt (1 - _distance / _backblastRange); _beta = sqrt 0.5; @@ -66,6 +71,7 @@ if (_distance < _backblastRange) then { [1,1,0,1] ] call EFUNC(common,addLineToDebugDraw); + private "_ref"; _ref = _direction call EFUNC(common,createOrthonormalReference); [ _position, _position vectorAdd (_direction vectorMultiply _backblastRange) vectorAdd ((_ref select 1) vectorMultiply _backblastRange * tan _backblastAngle), @@ -88,4 +94,4 @@ if (_distance < _backblastRange) then { _position vectorAdd (_direction vectorMultiply (_distance min _backblastRange)), [1,0,0,1] ] call EFUNC(common,addLineToDebugDraw); -#endif \ No newline at end of file +#endif diff --git a/addons/backblast/functions/fnc_fireOverpressureZone.sqf b/addons/backblast/functions/fnc_fireOverpressureZone.sqf index c638f4ad82..0ded8f974b 100644 --- a/addons/backblast/functions/fnc_fireOverpressureZone.sqf +++ b/addons/backblast/functions/fnc_fireOverpressureZone.sqf @@ -14,28 +14,32 @@ * * Return value: * None - *///#define DEBUG_MODE_FULL + */ +//#define DEBUG_MODE_FULL #include "script_component.hpp" EXPLODE_7_PVT(_this,_firer,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile); // Prevent AI from causing backblast damage -if !([gunner _firer] call EFUNC(common,isPlayer)) exitWith {}; +if !([gunner _firer] call EFUNC(common,isPlayer)) exitWith {}; //@todo non-maingun turrets? + +private ["_position", "_direction"]; -private ["_position","_direction","_distance","_alpha","_beta","_damage","_affected"]; _position = getPosASL _projectile; _direction = vectorDir _projectile; -private ["_dangerZoneAngle","_dangerZoneRange","_dangerZoneDamage"]; -_dangerZoneAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Angle") / 2; -_dangerZoneRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Range"); -_dangerZoneDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Damage"); +private ["_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage"]; +_dangerZoneAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; +_dangerZoneRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); +_dangerZoneDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); // Damage to others +private "_affected"; _affected = getPos _projectile nearEntities ["CAManBase", _dangerZoneRange]; + // Let each client handle their own affected units -["overpressure", _affected, [_firer,_position,_direction,_weapon]] call EFUNC(common,targetEvent); +["overpressure", _affected, [_firer, _position, _direction, _weapon]] call EFUNC(common,targetEvent); // Draw debug lines #ifdef DEBUG_MODE_FULL @@ -44,6 +48,7 @@ _affected = getPos _projectile nearEntities ["CAManBase", _dangerZoneRange]; [1,0,0,1] ] call EFUNC(common,addLineToDebugDraw); + private "_ref"; _ref = _direction call EFUNC(common,createOrthonormalReference); [ _position, _position vectorAdd (_direction vectorMultiply _dangerZoneRange) vectorAdd ((_ref select 1) vectorMultiply _dangerZoneRange * tan _dangerZoneAngle), @@ -62,4 +67,4 @@ _affected = getPos _projectile nearEntities ["CAManBase", _dangerZoneRange]; [1,1,0,1] ] call EFUNC(common,addLineToDebugDraw); -#endif \ No newline at end of file +#endif diff --git a/addons/backblast/functions/fnc_getDistance.sqf b/addons/backblast/functions/fnc_getDistance.sqf index b6f61548c6..6ffa60f7af 100644 --- a/addons/backblast/functions/fnc_getDistance.sqf +++ b/addons/backblast/functions/fnc_getDistance.sqf @@ -1,5 +1,5 @@ /* - * Author: Commy2 and CAA-Picard + * Author: commy2 and CAA-Picard * * Calculate the distance to the first intersection of a line * @@ -13,10 +13,10 @@ */ #include "script_component.hpp" -private ["_distance", "_interval", "_line", "_line"]; - EXPLODE_3_PVT(_this,_posASL,_direction,_maxDistance); +private ["_distance", "_interval", "_line", "_intersections"]; + _distance = _maxDistance; _interval = _distance; _line = [_posASL, []]; diff --git a/addons/backblast/functions/fnc_overpressureDamage.sqf b/addons/backblast/functions/fnc_overpressureDamage.sqf index 5dd7447ce8..995c5db9e4 100644 --- a/addons/backblast/functions/fnc_overpressureDamage.sqf +++ b/addons/backblast/functions/fnc_overpressureDamage.sqf @@ -1,5 +1,5 @@ /* - * Author: Commy2 and CAA-Picard + * Author: commy2 and CAA-Picard * * Calculate and apply overpressure damage to potentially affected local units * @@ -16,50 +16,55 @@ EXPLODE_4_PVT(_this,_firer,_posASL,_direction,_weapon); -private ["_dangerZoneAngle","_dangerZoneRange","_dangerZoneDamage"]; -_dangerZoneAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Angle") / 2; -_dangerZoneRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Range"); -_dangerZoneDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> "ACE_DangerZone_Damage"); +private ["_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage"]; + +_dangerZoneAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; +_dangerZoneRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); +_dangerZoneDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); + TRACE_4("Parameters:",_dangerZoneAngle,_dangerZoneRange,_dangerZoneDamage,_weapon); +private "_pos"; _pos = _posASL; if (!surfaceIsWater _pos) then { _pos = ASLtoATL _pos; }; -_affected = _pos nearEntities ["CAManBase", _dangerZoneRange]; { - _unit = _x; - if (local _unit && _unit != _firer && vehicle _unit == _unit) then { + if (local _x && {_x != _firer} && {vehicle _x == _x}) then { + private ["_targetPositionASL", "_relativePosition", "_axisDistance", "_distance", "_angle", "_line", "_line2"]; - _targetPositionASL = eyePos _unit; + _targetPositionASL = eyePos _x; _relativePosition = _targetPositionASL vectorDiff _posASL; _axisDistance = _relativePosition vectorDotProduct _direction; _distance = vectorMagnitude _relativePosition; _angle = acos (_axisDistance / _distance); - _line = [_posASL, _targetPositionASL, _firer, _unit]; + _line = [_posASL, _targetPositionASL, _firer, _x]; _line2 = [_posASL, _targetPositionASL]; - TRACE_4("Affected:",_unit,_axisDistance,_distance,_angle); + TRACE_4("Affected:",_x,_axisDistance,_distance,_angle); + if (_angle < _dangerZoneAngle && {_distance < _dangerZoneRange} && {!lineIntersects _line} && {!terrainIntersectASL _line2}) then { + private ["_alpha", "_beta", "_damage"]; + _alpha = sqrt (1 - _distance / _dangerZoneRange); _beta = sqrt (1 - _angle / _dangerZoneAngle); _damage = 2 * _alpha * _beta * _dangerZoneDamage; // If the target is the ACE_player - if (_unit == ACE_player) then {[_damage * 100] call BIS_fnc_bloodEffect}; + if (_x == ACE_player) then {[_damage * 100] call BIS_fnc_bloodEffect}; // @todo: Sort this interaction with medical if (isClass (configFile >> "CfgPatches" >> "ACE_Medical")) then { - [_unit, "HitBody", ([_unit, "", ((_unit getHitPointDamage "HitBody") + _damage), objNull, objNull] call EFUNC(medical,handleDamage))] call EFUNC(medical,setHitPointDamage); - _unit spawn { + [_x, "HitBody", ([_x, "", ((_x getHitPointDamage "HitBody") + _damage), objNull, objNull] call EFUNC(medical,handleDamage))] call EFUNC(medical,setHitPointDamage); + _x spawn { sleep 0.5; [_this, "", 0, objNull, objNull] call EFUNC(medical,handleDamage); }; } else { - _unit setDamage (damage _unit + _damage); + _x setDamage (damage _x + _damage); }; }; }; -} forEach _affected; +} forEach (_pos nearEntities ["CAManBase", _dangerZoneRange]); From 3f98d1485ea0f6545e6a48ce67216b15d64e4fa3 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 15 Feb 2015 17:17:20 +0100 Subject: [PATCH 153/211] author name --- addons/backblast/functions/fnc_fireLauncherBackblast.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/backblast/functions/fnc_fireLauncherBackblast.sqf b/addons/backblast/functions/fnc_fireLauncherBackblast.sqf index a35af9f19d..515135d56f 100644 --- a/addons/backblast/functions/fnc_fireLauncherBackblast.sqf +++ b/addons/backblast/functions/fnc_fireLauncherBackblast.sqf @@ -1,5 +1,5 @@ /* - * Author: Commy2 and CAA-Picard + * Author: commy2 and CAA-Picard * * Handle fire of local launchers * From f3aa0e58aa84eade721047a4fdd24c6defce4be3 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 15 Feb 2015 17:55:20 +0100 Subject: [PATCH 154/211] clean up backblast --- addons/backblast/CfgWeapons.hpp | 12 ++-- addons/backblast/XEH_postInit.sqf | 1 - addons/backblast/XEH_preInit.sqf | 1 - .../functions/fnc_fireOverpressureZone.sqf | 2 +- .../functions/fnc_overpressureDamage.sqf | 70 ------------------- 5 files changed, 7 insertions(+), 79 deletions(-) delete mode 100644 addons/backblast/functions/fnc_overpressureDamage.sqf diff --git a/addons/backblast/CfgWeapons.hpp b/addons/backblast/CfgWeapons.hpp index f4f7c07153..5880795ee2 100644 --- a/addons/backblast/CfgWeapons.hpp +++ b/addons/backblast/CfgWeapons.hpp @@ -36,14 +36,14 @@ class CfgWeapons { class CannonCore; class cannon_120mm: CannonCore { - ACE_DangerZone_Angle = 90; - ACE_DangerZone_Range = 50; - ACE_DangerZone_Damage = 0.85; + GVAR(angle) = 90; + GVAR(range) = 50; + GVAR(damage) = 0.85; }; class mortar_155mm_AMOS: CannonCore { - ACE_DangerZone_Angle = 90; - ACE_DangerZone_Range = 60; - ACE_DangerZone_Damage = 1; + GVAR(angle) = 90; + GVAR(range) = 60; + GVAR(damage) = 1; }; }; diff --git a/addons/backblast/XEH_postInit.sqf b/addons/backblast/XEH_postInit.sqf index 72ca42a012..6f9a6f4cf8 100644 --- a/addons/backblast/XEH_postInit.sqf +++ b/addons/backblast/XEH_postInit.sqf @@ -1,4 +1,3 @@ #include "script_component.hpp" ["backblast", FUNC(backblastDamage)] call EFUNC(common,addEventHandler); -["overpressure", FUNC(overpressureDamage)] call EFUNC(common,addEventHandler); diff --git a/addons/backblast/XEH_preInit.sqf b/addons/backblast/XEH_preInit.sqf index 11193c3bf4..dde5f3affe 100644 --- a/addons/backblast/XEH_preInit.sqf +++ b/addons/backblast/XEH_preInit.sqf @@ -6,6 +6,5 @@ PREP(backblastDamage); PREP(fireLauncherBackblast); PREP(fireOverpressureZone); PREP(getDistance); -PREP(overpressureDamage); ADDON = true; diff --git a/addons/backblast/functions/fnc_fireOverpressureZone.sqf b/addons/backblast/functions/fnc_fireOverpressureZone.sqf index 0ded8f974b..178b519fc0 100644 --- a/addons/backblast/functions/fnc_fireOverpressureZone.sqf +++ b/addons/backblast/functions/fnc_fireOverpressureZone.sqf @@ -39,7 +39,7 @@ private "_affected"; _affected = getPos _projectile nearEntities ["CAManBase", _dangerZoneRange]; // Let each client handle their own affected units -["overpressure", _affected, [_firer, _position, _direction, _weapon]] call EFUNC(common,targetEvent); +["backblast", _affected, [_firer, _position, _direction, _weapon]] call EFUNC(common,targetEvent); // Draw debug lines #ifdef DEBUG_MODE_FULL diff --git a/addons/backblast/functions/fnc_overpressureDamage.sqf b/addons/backblast/functions/fnc_overpressureDamage.sqf deleted file mode 100644 index 995c5db9e4..0000000000 --- a/addons/backblast/functions/fnc_overpressureDamage.sqf +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Author: commy2 and CAA-Picard - * - * Calculate and apply overpressure damage to potentially affected local units - * - * Argument: - * 0: Unit that fired (Object) - * 1: Pos ASL of the projectile (Array) - * 2: Direction of the projectile (Array) - * 3: Weapon fired (String) - * - * Return value: - * None - */ -#include "script_component.hpp" - -EXPLODE_4_PVT(_this,_firer,_posASL,_direction,_weapon); - -private ["_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage"]; - -_dangerZoneAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; -_dangerZoneRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); -_dangerZoneDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); - -TRACE_4("Parameters:",_dangerZoneAngle,_dangerZoneRange,_dangerZoneDamage,_weapon); - -private "_pos"; -_pos = _posASL; -if (!surfaceIsWater _pos) then { - _pos = ASLtoATL _pos; -}; - -{ - if (local _x && {_x != _firer} && {vehicle _x == _x}) then { - private ["_targetPositionASL", "_relativePosition", "_axisDistance", "_distance", "_angle", "_line", "_line2"]; - - _targetPositionASL = eyePos _x; - _relativePosition = _targetPositionASL vectorDiff _posASL; - _axisDistance = _relativePosition vectorDotProduct _direction; - _distance = vectorMagnitude _relativePosition; - _angle = acos (_axisDistance / _distance); - - _line = [_posASL, _targetPositionASL, _firer, _x]; - _line2 = [_posASL, _targetPositionASL]; - TRACE_4("Affected:",_x,_axisDistance,_distance,_angle); - - if (_angle < _dangerZoneAngle && {_distance < _dangerZoneRange} && {!lineIntersects _line} && {!terrainIntersectASL _line2}) then { - private ["_alpha", "_beta", "_damage"]; - - _alpha = sqrt (1 - _distance / _dangerZoneRange); - _beta = sqrt (1 - _angle / _dangerZoneAngle); - - _damage = 2 * _alpha * _beta * _dangerZoneDamage; - - // If the target is the ACE_player - if (_x == ACE_player) then {[_damage * 100] call BIS_fnc_bloodEffect}; - - // @todo: Sort this interaction with medical - if (isClass (configFile >> "CfgPatches" >> "ACE_Medical")) then { - [_x, "HitBody", ([_x, "", ((_x getHitPointDamage "HitBody") + _damage), objNull, objNull] call EFUNC(medical,handleDamage))] call EFUNC(medical,setHitPointDamage); - _x spawn { - sleep 0.5; - [_this, "", 0, objNull, objNull] call EFUNC(medical,handleDamage); - }; - } else { - _x setDamage (damage _x + _damage); - }; - }; - }; -} forEach (_pos nearEntities ["CAManBase", _dangerZoneRange]); From 2252f82de7a8279d5dca76f4c871a2ccd0617d8d Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 15 Feb 2015 18:11:50 +0100 Subject: [PATCH 155/211] rename backblast to overpressure --- addons/backblast/$PBOPREFIX$ | 1 - addons/backblast/XEH_postInit.sqf | 3 --- .../backblast/functions/script_component.hpp | 1 - addons/backblast/script_component.hpp | 12 ----------- addons/overpressure/$PBOPREFIX$ | 1 + .../CfgEventHandlers.hpp | 0 .../CfgWeapons.hpp | 0 addons/{backblast => overpressure}/README.md | 0 addons/overpressure/XEH_postInit.sqf | 3 +++ .../XEH_preInit.sqf | 2 +- addons/{backblast => overpressure}/config.cpp | 0 .../functions/fnc_fireLauncherBackblast.sqf | 2 +- .../functions/fnc_fireOverpressureZone.sqf | 6 +++--- .../functions/fnc_getDistance.sqf | 0 .../functions/fnc_overpressureDamage.sqf} | 20 +++++++++---------- .../functions/script_component.hpp | 1 + addons/overpressure/script_component.hpp | 12 +++++++++++ 17 files changed, 32 insertions(+), 32 deletions(-) delete mode 100644 addons/backblast/$PBOPREFIX$ delete mode 100644 addons/backblast/XEH_postInit.sqf delete mode 100644 addons/backblast/functions/script_component.hpp delete mode 100644 addons/backblast/script_component.hpp create mode 100644 addons/overpressure/$PBOPREFIX$ rename addons/{backblast => overpressure}/CfgEventHandlers.hpp (100%) rename addons/{backblast => overpressure}/CfgWeapons.hpp (100%) rename addons/{backblast => overpressure}/README.md (100%) create mode 100644 addons/overpressure/XEH_postInit.sqf rename addons/{backblast => overpressure}/XEH_preInit.sqf (84%) rename addons/{backblast => overpressure}/config.cpp (100%) rename addons/{backblast => overpressure}/functions/fnc_fireLauncherBackblast.sqf (97%) rename addons/{backblast => overpressure}/functions/fnc_fireOverpressureZone.sqf (92%) rename addons/{backblast => overpressure}/functions/fnc_getDistance.sqf (100%) rename addons/{backblast/functions/fnc_backblastDamage.sqf => overpressure/functions/fnc_overpressureDamage.sqf} (69%) create mode 100644 addons/overpressure/functions/script_component.hpp create mode 100644 addons/overpressure/script_component.hpp diff --git a/addons/backblast/$PBOPREFIX$ b/addons/backblast/$PBOPREFIX$ deleted file mode 100644 index c5ed230994..0000000000 --- a/addons/backblast/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\backblast \ No newline at end of file diff --git a/addons/backblast/XEH_postInit.sqf b/addons/backblast/XEH_postInit.sqf deleted file mode 100644 index 6f9a6f4cf8..0000000000 --- a/addons/backblast/XEH_postInit.sqf +++ /dev/null @@ -1,3 +0,0 @@ -#include "script_component.hpp" - -["backblast", FUNC(backblastDamage)] call EFUNC(common,addEventHandler); diff --git a/addons/backblast/functions/script_component.hpp b/addons/backblast/functions/script_component.hpp deleted file mode 100644 index 817131570f..0000000000 --- a/addons/backblast/functions/script_component.hpp +++ /dev/null @@ -1 +0,0 @@ -#include "\z\ace\addons\backblast\script_component.hpp" \ No newline at end of file diff --git a/addons/backblast/script_component.hpp b/addons/backblast/script_component.hpp deleted file mode 100644 index 9f2a71f2d5..0000000000 --- a/addons/backblast/script_component.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#define COMPONENT backblast -#include "\z\ace\Addons\main\script_mod.hpp" - -#ifdef DEBUG_ENABLED_BACKBLAST - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_SETTINGS_BACKBLAST - #define DEBUG_SETTINGS DEBUG_SETTINGS_BACKBLAST -#endif - -#include "\z\ace\Addons\main\script_macros.hpp" \ No newline at end of file diff --git a/addons/overpressure/$PBOPREFIX$ b/addons/overpressure/$PBOPREFIX$ new file mode 100644 index 0000000000..fc5a82e0f7 --- /dev/null +++ b/addons/overpressure/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\overpressure \ No newline at end of file diff --git a/addons/backblast/CfgEventHandlers.hpp b/addons/overpressure/CfgEventHandlers.hpp similarity index 100% rename from addons/backblast/CfgEventHandlers.hpp rename to addons/overpressure/CfgEventHandlers.hpp diff --git a/addons/backblast/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp similarity index 100% rename from addons/backblast/CfgWeapons.hpp rename to addons/overpressure/CfgWeapons.hpp diff --git a/addons/backblast/README.md b/addons/overpressure/README.md similarity index 100% rename from addons/backblast/README.md rename to addons/overpressure/README.md diff --git a/addons/overpressure/XEH_postInit.sqf b/addons/overpressure/XEH_postInit.sqf new file mode 100644 index 0000000000..33c2e679c9 --- /dev/null +++ b/addons/overpressure/XEH_postInit.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +["overpressure", FUNC(overpressureDamage)] call EFUNC(common,addEventHandler); diff --git a/addons/backblast/XEH_preInit.sqf b/addons/overpressure/XEH_preInit.sqf similarity index 84% rename from addons/backblast/XEH_preInit.sqf rename to addons/overpressure/XEH_preInit.sqf index dde5f3affe..5eefc5eae4 100644 --- a/addons/backblast/XEH_preInit.sqf +++ b/addons/overpressure/XEH_preInit.sqf @@ -2,9 +2,9 @@ ADDON = false; -PREP(backblastDamage); PREP(fireLauncherBackblast); PREP(fireOverpressureZone); PREP(getDistance); +PREP(overpressureDamage); ADDON = true; diff --git a/addons/backblast/config.cpp b/addons/overpressure/config.cpp similarity index 100% rename from addons/backblast/config.cpp rename to addons/overpressure/config.cpp diff --git a/addons/backblast/functions/fnc_fireLauncherBackblast.sqf b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf similarity index 97% rename from addons/backblast/functions/fnc_fireLauncherBackblast.sqf rename to addons/overpressure/functions/fnc_fireLauncherBackblast.sqf index 515135d56f..f42ffd23ed 100644 --- a/addons/backblast/functions/fnc_fireLauncherBackblast.sqf +++ b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf @@ -39,7 +39,7 @@ private "_affected"; _affected = getPos _projectile nearEntities ["CAManBase", _backblastRange]; // Let each client handle their own affected units -["backblast", _affected, [_firer, _position, _direction, _weapon]] call EFUNC(common,targetEvent); +["overpressure", _affected, [_firer, _position, _direction, _weapon]] call EFUNC(common,targetEvent); // Damage to the firer private "_distance"; diff --git a/addons/backblast/functions/fnc_fireOverpressureZone.sqf b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf similarity index 92% rename from addons/backblast/functions/fnc_fireOverpressureZone.sqf rename to addons/overpressure/functions/fnc_fireOverpressureZone.sqf index 178b519fc0..cc4918275d 100644 --- a/addons/backblast/functions/fnc_fireOverpressureZone.sqf +++ b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf @@ -1,5 +1,5 @@ /* - * Author: Commy2 and CAA-Picard + * Author: commy2 and CAA-Picard * * Handle fire of local vehicle weapons creating overpressure zones * @@ -20,7 +20,7 @@ EXPLODE_7_PVT(_this,_firer,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile); -// Prevent AI from causing backblast damage +// Prevent AI from causing overpressure damage if !([gunner _firer] call EFUNC(common,isPlayer)) exitWith {}; //@todo non-maingun turrets? private ["_position", "_direction"]; @@ -39,7 +39,7 @@ private "_affected"; _affected = getPos _projectile nearEntities ["CAManBase", _dangerZoneRange]; // Let each client handle their own affected units -["backblast", _affected, [_firer, _position, _direction, _weapon]] call EFUNC(common,targetEvent); +["overpressure", _affected, [_firer, _position, _direction, _weapon]] call EFUNC(common,targetEvent); // Draw debug lines #ifdef DEBUG_MODE_FULL diff --git a/addons/backblast/functions/fnc_getDistance.sqf b/addons/overpressure/functions/fnc_getDistance.sqf similarity index 100% rename from addons/backblast/functions/fnc_getDistance.sqf rename to addons/overpressure/functions/fnc_getDistance.sqf diff --git a/addons/backblast/functions/fnc_backblastDamage.sqf b/addons/overpressure/functions/fnc_overpressureDamage.sqf similarity index 69% rename from addons/backblast/functions/fnc_backblastDamage.sqf rename to addons/overpressure/functions/fnc_overpressureDamage.sqf index 651dc58830..c19fed1c04 100644 --- a/addons/backblast/functions/fnc_backblastDamage.sqf +++ b/addons/overpressure/functions/fnc_overpressureDamage.sqf @@ -16,13 +16,13 @@ EXPLODE_4_PVT(_this,_firer,_posASL,_direction,_weapon); -private ["_backblastAngle", "_backblastRange", "_backblastDamage"]; +private ["_overpressureAngle", "_overpressureRange", "_overpressureDamage"]; -_backblastAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; -_backblastRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); -_backblastDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); +_overpressureAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; +_overpressureRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); +_overpressureDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); -TRACE_4("Parameters:",_backblastAngle,_backblastRange,_backblastDamage,_weapon); +TRACE_4("Parameters:",_overpressureAngle,_overpressureRange,_overpressureDamage,_weapon); private "_pos"; _pos = _posASL; @@ -44,13 +44,13 @@ if (!surfaceIsWater _pos) then { _line2 = [_posASL, _targetPositionASL]; TRACE_4("Affected:",_x,_axisDistance,_distance,_angle); - if (_angle < _backblastAngle && {_distance < _backblastRange} && {!lineIntersects _line} && {!terrainIntersectASL _line2}) then { + if (_angle < _overpressureAngle && {_distance < _overpressureRange} && {!lineIntersects _line} && {!terrainIntersectASL _line2}) then { private ["_alpha", "_beta", "_damage"]; - _alpha = sqrt (1 - _distance / _backblastRange); - _beta = sqrt (1 - _angle / _backblastAngle); + _alpha = sqrt (1 - _distance / _overpressureRange); + _beta = sqrt (1 - _angle / _overpressureAngle); - _damage = 2 * _alpha * _beta * _backblastDamage; + _damage = 2 * _alpha * _beta * _overpressureDamage; // If the target is the ACE_player if (_x == ACE_player) then {[_damage * 100] call BIS_fnc_bloodEffect}; @@ -67,4 +67,4 @@ if (!surfaceIsWater _pos) then { }; }; }; -} forEach (_pos nearEntities ["CAManBase", _backblastRange]); +} forEach (_pos nearEntities ["CAManBase", _overpressureRange]); diff --git a/addons/overpressure/functions/script_component.hpp b/addons/overpressure/functions/script_component.hpp new file mode 100644 index 0000000000..d66ac7aec3 --- /dev/null +++ b/addons/overpressure/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\overpressure\script_component.hpp" \ No newline at end of file diff --git a/addons/overpressure/script_component.hpp b/addons/overpressure/script_component.hpp new file mode 100644 index 0000000000..8dac72cbbf --- /dev/null +++ b/addons/overpressure/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT overpressure +#include "\z\ace\Addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_OVERPRESSURE + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_ENABLED_OVERPRESSURE + #define DEBUG_SETTINGS DEBUG_ENABLED_OVERPRESSURE +#endif + +#include "\z\ace\Addons\main\script_macros.hpp" \ No newline at end of file From 618ac2f8f65279625678ec26e6d625c0202caff2 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 15 Feb 2015 18:44:10 +0100 Subject: [PATCH 156/211] change overpressure readme.md --- addons/overpressure/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/README.md b/addons/overpressure/README.md index 857776693a..3d3f242e40 100644 --- a/addons/overpressure/README.md +++ b/addons/overpressure/README.md @@ -1,4 +1,4 @@ -ace_backblast +ace_overpressure ============= Adds backblast to AT launchers and overpressure zones to tank cannons. From e8933d69c8cd582e0628689a5c67f7cc48d98842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Sun, 15 Feb 2015 15:42:54 -0300 Subject: [PATCH 157/211] overpressure: renamed more config entries; avoid handheld launchers producing overpressure in addition to backblast. --- addons/overpressure/CfgEventHandlers.hpp | 27 +++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/addons/overpressure/CfgEventHandlers.hpp b/addons/overpressure/CfgEventHandlers.hpp index 6258484c7c..9494a61149 100644 --- a/addons/overpressure/CfgEventHandlers.hpp +++ b/addons/overpressure/CfgEventHandlers.hpp @@ -14,12 +14,33 @@ class Extended_PostInit_EventHandlers { class Extended_FiredBIS_EventHandlers { class CAManBase { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Backblast_Damage') > 0}) then {_this call DFUNC(fireLauncherBackblast)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Overpressure_Damage') > 0}) then {_this call DFUNC(fireLauncherBackblast)}); }; }; - class AllVehicles { + + class Tank { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_DangerZone_Damage') > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Overpressure_Damage') > 0}) then {_this call DFUNC(fireOverpressureZone)}); + }; + }; + class Car { + class ADDON { + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Overpressure_Damage') > 0}) then {_this call DFUNC(fireOverpressureZone)}); + }; + }; + class Helicopter { + class ADDON { + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Overpressure_Damage') > 0}) then {_this call DFUNC(fireOverpressureZone)}); + }; + }; + class Plane { + class ADDON { + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Overpressure_Damage') > 0}) then {_this call DFUNC(fireOverpressureZone)}); + }; + }; + class Ship_F { + class ADDON { + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Overpressure_Damage') > 0}) then {_this call DFUNC(fireOverpressureZone)}); }; }; }; From be427388813b6c4d1d1414ff3e40fdf167c46055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Sun, 15 Feb 2015 15:56:37 -0300 Subject: [PATCH 158/211] macros --- addons/overpressure/CfgEventHandlers.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/overpressure/CfgEventHandlers.hpp b/addons/overpressure/CfgEventHandlers.hpp index 9494a61149..3503333139 100644 --- a/addons/overpressure/CfgEventHandlers.hpp +++ b/addons/overpressure/CfgEventHandlers.hpp @@ -14,33 +14,33 @@ class Extended_PostInit_EventHandlers { class Extended_FiredBIS_EventHandlers { class CAManBase { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Overpressure_Damage') > 0}) then {_this call DFUNC(fireLauncherBackblast)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage)) > 0}) then {_this call DFUNC(fireLauncherBackblast)}); }; }; class Tank { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Overpressure_Damage') > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); }; }; class Car { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Overpressure_Damage') > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); }; }; class Helicopter { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Overpressure_Damage') > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); }; }; class Plane { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Overpressure_Damage') > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); }; }; class Ship_F { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> 'ACE_Overpressure_Damage') > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); }; }; }; From 25645c2ae994de3f2b8140850f7da7e2f3677a68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Sun, 15 Feb 2015 16:25:09 -0300 Subject: [PATCH 159/211] mm --- addons/overpressure/CfgEventHandlers.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/CfgEventHandlers.hpp b/addons/overpressure/CfgEventHandlers.hpp index 3503333139..40c3b32a57 100644 --- a/addons/overpressure/CfgEventHandlers.hpp +++ b/addons/overpressure/CfgEventHandlers.hpp @@ -14,7 +14,7 @@ class Extended_PostInit_EventHandlers { class Extended_FiredBIS_EventHandlers { class CAManBase { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage)) > 0}) then {_this call DFUNC(fireLauncherBackblast)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireLauncherBackblast)}); }; }; From da19a89be867d51cffbf000092ffd025cf25e061 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 16 Feb 2015 15:56:36 +0100 Subject: [PATCH 160/211] Replaced _targetUnit for ObjNull Replaced _targetUnit for objNull. --- addons/missionModules/functions/fnc_moduleAmbianceSound.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/missionModules/functions/fnc_moduleAmbianceSound.sqf b/addons/missionModules/functions/fnc_moduleAmbianceSound.sqf index f35f14b30c..95153be8d1 100644 --- a/addons/missionModules/functions/fnc_moduleAmbianceSound.sqf +++ b/addons/missionModules/functions/fnc_moduleAmbianceSound.sqf @@ -112,7 +112,7 @@ if (_activated && local _logic) then { // If no unit is to close to this position, we will play the sound. if ({(_newPos distance _x < (_minimalDistance / 2))}count _allUnits == 0) then { - playSound3D [_ambianceSounds select (round(random((count _ambianceSounds)-1))), _targetUnit, false, _newPos, _volume, 1, 1000]; + playSound3D [_ambianceSounds select (round(random((count _ambianceSounds)-1))), ObjNull, false, _newPos, _volume, 1, 1000]; _args set [8, time]; }; }; From 1f737dc91495f5ef801e6712a4b83dd202847cec Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Mon, 16 Feb 2015 19:08:27 +0100 Subject: [PATCH 161/211] Add editorconfig --- .editorconfig | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..f6f23b8d1b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + From d60081a9c311620e61926d8a7e87ac4da3a6e5cf Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 17 Feb 2015 07:49:37 +0100 Subject: [PATCH 162/211] Renamed missionModules to missionmodules. --- addons/missionModules/functions/script_component.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/missionModules/functions/script_component.hpp b/addons/missionModules/functions/script_component.hpp index e49740a89e..42d34d4801 100644 --- a/addons/missionModules/functions/script_component.hpp +++ b/addons/missionModules/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\missionModules\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\missionmodules\script_component.hpp" \ No newline at end of file From d86e2464b3d35315e5c38b5a3e459a0b016e1ee5 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 17 Feb 2015 07:51:35 +0100 Subject: [PATCH 163/211] Removed missionModules --- addons/missionModules/$PBOPREFIX$ | 1 - addons/missionModules/CfgEventHandlers.hpp | 6 - addons/missionModules/CfgFactionClasses.hpp | 6 - addons/missionModules/CfgVehicles.hpp | 68 ---------- addons/missionModules/XEH_preInit.sqf | 7 - addons/missionModules/config.cpp | 17 --- addons/missionModules/data/moduleSound.paa | Bin 5625 -> 0 bytes .../functions/fnc_moduleAmbianceSound.sqf | 123 ------------------ .../functions/script_component.hpp | 1 - addons/missionModules/script_component.hpp | 12 -- 10 files changed, 241 deletions(-) delete mode 100644 addons/missionModules/$PBOPREFIX$ delete mode 100644 addons/missionModules/CfgEventHandlers.hpp delete mode 100644 addons/missionModules/CfgFactionClasses.hpp delete mode 100644 addons/missionModules/CfgVehicles.hpp delete mode 100644 addons/missionModules/XEH_preInit.sqf delete mode 100644 addons/missionModules/config.cpp delete mode 100644 addons/missionModules/data/moduleSound.paa delete mode 100644 addons/missionModules/functions/fnc_moduleAmbianceSound.sqf delete mode 100644 addons/missionModules/functions/script_component.hpp delete mode 100644 addons/missionModules/script_component.hpp diff --git a/addons/missionModules/$PBOPREFIX$ b/addons/missionModules/$PBOPREFIX$ deleted file mode 100644 index ea1be0daee..0000000000 --- a/addons/missionModules/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\missionModules \ No newline at end of file diff --git a/addons/missionModules/CfgEventHandlers.hpp b/addons/missionModules/CfgEventHandlers.hpp deleted file mode 100644 index f0a9f14d91..0000000000 --- a/addons/missionModules/CfgEventHandlers.hpp +++ /dev/null @@ -1,6 +0,0 @@ - -class Extended_PreInit_EventHandlers { - class ADDON { - init = QUOTE(call COMPILE_FILE(XEH_preInit)); - }; -}; diff --git a/addons/missionModules/CfgFactionClasses.hpp b/addons/missionModules/CfgFactionClasses.hpp deleted file mode 100644 index 792f4d31e3..0000000000 --- a/addons/missionModules/CfgFactionClasses.hpp +++ /dev/null @@ -1,6 +0,0 @@ -class CfgFactionClasses { - class NO_CATEGORY; - class ACE_missionModules: NO_CATEGORY { - displayName = "ACE Mission Modules"; - }; -}; \ No newline at end of file diff --git a/addons/missionModules/CfgVehicles.hpp b/addons/missionModules/CfgVehicles.hpp deleted file mode 100644 index afdb58006b..0000000000 --- a/addons/missionModules/CfgVehicles.hpp +++ /dev/null @@ -1,68 +0,0 @@ -class CfgVehicles { - class Logic; - class Module_F: Logic { - class ArgumentsBaseUnits { - }; - }; - - // TODO make a curator variant for this - class ACE_moduleAmbianceSound: Module_F { - scope = 2; - displayName = "Ambiance Sounds [ACE]"; - icon = QUOTE(PATHTOF(data\moduleSound.paa)); - category = "ACE_missionModules"; - function = QUOTE(FUNC(moduleAmbianceSound); - functionPriority = 1; - isGlobal = 1; - isTriggerActivated = 0; - author = "Glowbal"; - class Arguments { - class soundFiles { - displayName = "Sounds"; - description = "Classnames of the ambiance sounds played. Seperated by ','. "; - typeName = "STRING"; - defaultValue = ""; - }; - class minimalDistance { - displayName = "Minimal Distance"; - description = "Minimal Distance"; - typeName = "NUMBER"; - defaultValue = 400; - }; - class maximalDistance { - displayName = "Maximal Distance"; - description = "Maximal Distance"; - typeName = "NUMBER"; - defaultValue = 900; - }; - class minimalDelay { - displayName = "Minimal Delay"; - description = "Minimal Delay between sounds played"; - typeName = "NUMBER"; - defaultValue = 10; - }; - class maximalDelay { - displayName = "Maximal Delay"; - description = "Maximal Delay between sounds played"; - typeName = "NUMBER"; - defaultValue = 170; - }; - class followPlayers { - displayName = "Follow Players"; - description = "Follow players. If set to false, loop will play sounds only nearby logic position."; - typeName = "BOOL"; - defaultValue = 0; - }; - class soundVolume { - displayName = "Volume"; - description = "The volume of the sounds played"; - typeName = "NUMBER"; - defaultValue = 0; - }; - }; - class ModuleDescription { - description = "Ambiance sounds loop (synced across MP)"; - sync[] = {}; - }; - }; -}; diff --git a/addons/missionModules/XEH_preInit.sqf b/addons/missionModules/XEH_preInit.sqf deleted file mode 100644 index cadbbabdd1..0000000000 --- a/addons/missionModules/XEH_preInit.sqf +++ /dev/null @@ -1,7 +0,0 @@ -#include "script_component.hpp" - -ADDON = false; - -PREP(moduleAmbianceSound); - -ADDON = true; diff --git a/addons/missionModules/config.cpp b/addons/missionModules/config.cpp deleted file mode 100644 index 0867b486c6..0000000000 --- a/addons/missionModules/config.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {"cse_moduleAmbianceSound"}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - author[] = {"Glowbal"}; - authorUrl = ""; - VERSION_CONFIG; - }; -}; - -#include "CfgEventHandlers.hpp" -#include "CfgFactionClasses.hpp" -#include "CfgVehicles.hpp" diff --git a/addons/missionModules/data/moduleSound.paa b/addons/missionModules/data/moduleSound.paa deleted file mode 100644 index bfe3b8032717dcc98269b4b42a620cffe550ffc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5625 zcmd5=e{2)i9e)QtpfrHPa-m>_7$qGojBP2JHAXidD=lKvOSnciRHiZp3io($CfVu3Ih4Y{*BB>0gjI}tEY4lCyKj^3 zi|MspB)_I9Qgx5++xQ+GAF#}rEAi6)SgR2uT;uV0M$+GvaQ(#H9}xS?WmyKjWzk^2 zNzcQW;MZidnf$!>++Lhj?%eeIpGtziBC+buc2ZUhGN$7o{p|Y_&10xliB==phYGcr8`S2cb3wu zSJO0FbEhH0o>*@a^2330*Os!%?HPIs=*>Ht3JmIghu|*BN=Fax<2*v*2zg37n~I_l zvuOp1~efUHq1t$YIb<=rbwS zTrcQpUhjzXYHsxVyH5nfdE>YxM~e3~1{1=bAg7M@d>{Fz$PcEznj%j-Sr-`;E@UQk zQ%W=8le|+&`CYHlo@`?-%h+-aPK=XB!7Q0@uvl zk~H~J)3;+sOn<@gdX~1F2=F@pO`4Y=pKA{{ih0US7~4l2ZHeSrF3!i~kXHre!}Y@c zP~XdDtCPF%p;?fZ%~k(hpV7__KYu$I&W)uH29ukQ!Cc^o8gi!2->3UUe9E%THmf0Q zTsUN8<7HeGl+Vt~a$AbuYUH0o|BNJeHbGk-Z{+Ere3Dmnv_1+KqTMjB=U(a$b{;-6 zzc4iZ3Di4N{_5i{f3GXhO~_`GW%kmP#F*J;J)-sFmSP?uO!IU;(7&&hr;0QC@2ovz z3-%y>l5ihkZ6=ksK>1eVIAM@i^LD}cUF(EDfV@(07E3F~Wc@c6Pf23lh`?V>iWc4M z`dp0j&)*$#tfK$P|G#y0L*l&qaS?wMfyF&b{MX`O{fI8!$wXwry{egRWm$pFp z{y>`MA)mBh5Aqkkb=l&hj--Fhjd&oPi5~=z^p(|AlqMfu%Gp?i68y-kT`Dz1+<3b z<$c9;CtdTx;i6ck|MGfA>_>9#Q+h5Q7_jV*@=E>2Esi71(4W)NRDZ#3xHI;cHA?@; z<(G?d&v#ynUfUZd{#1V?*3m-&#@%$Iy`|^e#>Hkc9?+hA!G5{)M~i2jYll6|dd$$D zR)0X8Be1{8Upe@-w3`5=Q9-=?2KtXFp9)OTGQSFkA2Lj=c}(p3w}oZ4G=ctW9oi4< zr*2R=xTFyP!>q?9KaP56@|$%on7G*D6aK=`UyoLwyIp@@cmGg)E1Kr+;jL-cv!*;u z)@FA=&{SZHDJ_#uoFU1F>~(_jCm+&BtmntyvDT}g$DiA1>Bl@;UiY3!nfQUa_gvq* zwb%dKekXIHkY=R<$fjcYGlSh9iZ&KyjMBcs8aBK9SId5$Z9^J1hwG!^7Z8h7Chc~y zzRAF|A*~;Z!VEp4O~Z+c&YynMaN;8TU{bH0yK>v3G(%zjHqY*)0JwO9CW)BVG zJ*YDB^0;y9tW`GfULspIGVAAGN0_?S3436ZaxYoN8IUw|Rqu_G7u7KTl-MPM?0gOc`ug7=QW2VESaxEQ|DzF~Gcf`Ss=k z!5@80$+70ue>^-^&<8!+w(EE;@MgU@FXFFWrn38tNE@g!N=@f3^qiN9Y5(x27AJTU z=ZAa#5twV0X_O^x28Z$A&pS=)$^KtzKk;MPDzj+fwB>Q#-`x>urFlHnvF~!UO>diN z1yv&Jpc(olz3l-5or{nk44&+4GA;!F4$kl&=$B9LESij$36p&hUd;VmNUJ6YMgF6JLbOVk`ZbHcCR84R!G;@r-_u zAOuge55r}#NM0sQs>9M`hMq}%DBkSUY)Wi(n$)N*vDA>Kx9MZQ8d)rk1;xlSy{&nF z{&N3bnupD7Ptbb2a4^?R|X+6c1 zGkO0 - * 1: Units - * 2: Activated - * - * Return Value: - * Nothing - * - * Example: - * N/A - * - * Public: No - */ - -#include "script_component.hpp" - -private ["_logic", "_units", "_activated","_ambianceSounds", "_soundFiles", "_minimalDistance","_maximalDistance", "_minimalDistance", "_maxDelayBetweenSounds", "_allUnits", "_newPos", "_targetUnit", "_soundToPlay", "_soundPath", "_unparsedSounds", "_list", "_splittedList", "_nilCheckPassedList"]; -_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; -_units = [_this,1,[],[[]]] call BIS_fnc_param; -_activated = [_this,2,true,[true]] call BIS_fnc_param; - -// We only play this on the locality of the logic, since the sounds are broadcasted across the network -if (_activated && local _logic) then { - _ambianceSounds = []; - _unparsedSounds = _logic getvariable ["soundFiles", ""]; - _minimalDistance = (_logic getvariable ["minimalDistance", 400]) max 1; - _maximalDistance = (_logic getvariable ["maximalDistance", 10]) max _minimalDistance; - _minDelayBetweensounds = (_logic getvariable ["minimalDelay", 10]) max 1; - _maxDelayBetweenSounds = (_logic getvariable ["maximalDelay", 170]) max _minDelayBetweensounds; - _volume = (_logic getvariable ["soundVolume", 30]) max 1; - _followPlayers = _logic getvariable ["followPlayers", false]; - - _splittedList = [_unparsedSounds, ","] call BIS_fnc_splitString; - - _nilCheckPassedList = ""; - { - _x = [_x] call EFUNC(common,removeWhiteSpace); - _splittedList set [_foreachIndex, _x]; - }foreach _splittedList; - - _soundPath = [(str missionConfigFile), 0, -15] call BIS_fnc_trimString; - { - if (isclass (missionConfigFile >> "CfgSounds" >> _x)) then { - _ambianceSounds pushback (_soundPath + (getArray(missionConfigFile >> "CfgSounds" >> _x >> "sound") select 0)); - } else { - if (isclass (configFile >> "CfgSounds" >> _x)) then { - _ambianceSounds pushback ((getArray(configFile >> "CfgSounds" >> _x >> "sound") select 0)); - }; - }; - }foreach _splittedList; - - if (count _ambianceSounds == 0) exitwith {}; - { - if !([".", _x, true] call BIS_fnc_inString) then { - _ambianceSounds set [_foreachIndex, _x + ".wss"]; - }; - }foreach _ambianceSounds; - - [{ - private ["_args", "_logic", "_ambianceSounds", "_minimalDistance", "_maximalDistance", "_minDelayBetweensounds", "_maxDelayBetweenSounds", "_volume", "_followPlayers","_lastTimePlayed", "_newPos"] - _args = _this select 0; - _logic = _args select 0; - _lastTimePlayed = _args select 8; - - if (!alive _logic) exitwith { - [(_this select 1)] call cba_fnc_removePerFrameHandler; - }; - - if (_lastTimePlayed - time >= ((_minDelayBetweensounds + random(_maxDelayBetweenSounds)) min _maxDelayBetweenSounds)) then { - _ambianceSounds = _args select 1; - _minimalDistance = _args select 2; - _maximalDistance = _args select 3; - _minDelayBetweensounds = _args select 4; - _maxDelayBetweenSounds = _args select 5; - _volume = _args select 6; - _followPlayers = _args select 7; - - // Find all players in session. - _allUnits = if (isMultiplayer) then {playableUnits} else {[ACE_player]}; - - // Check if there are enough players to even start playing this sound. - if (count _allUnits > 0) then { - - // Select a target unit at random. - _targetUnit = _allUnits select (round(random((count _allUnits)-1))); - - // find the position from which we are going to play this sound from. - _newPos = (getPos _targetUnit); - if (!_followPlayers) then { - _newPos = getPos _logic; - }; - - // Randomize this position. - if (random(1) >= 0.5) then { - if (random(1) >= 0.5) then { - _newPos set [0, (_newPos select 0) + (_minimalDistance + random(_maximalDistance))]; - } else { - _newPos set [0, (_newPos select 0) - (_minimalDistance + random(_maximalDistance))]; - }; - } else { - if (random(1) >= 0.5) then { - _newPos set [1, (_newPos select 1) + (_minimalDistance + random(_maximalDistance))]; - } else { - _newPos set [1, (_newPos select 1) - (_minimalDistance + random(_maximalDistance))]; - }; - }; - - // If no unit is to close to this position, we will play the sound. - if ({(_newPos distance _x < (_minimalDistance / 2))}count _allUnits == 0) then { - - playSound3D [_ambianceSounds select (round(random((count _ambianceSounds)-1))), ObjNull, false, _newPos, _volume, 1, 1000]; - _args set [8, time]; - }; - }; - }; - }, 0.1, [_logic, _ambianceSounds, _minimalDistance, _maximalDistance, _minDelayBetweensounds, _maxDelayBetweenSounds, _volume, _followPlayers, time] ] call CBA_fnc_addPerFrameHandler; -}; - -true; diff --git a/addons/missionModules/functions/script_component.hpp b/addons/missionModules/functions/script_component.hpp deleted file mode 100644 index 42d34d4801..0000000000 --- a/addons/missionModules/functions/script_component.hpp +++ /dev/null @@ -1 +0,0 @@ -#include "\z\ace\addons\missionmodules\script_component.hpp" \ No newline at end of file diff --git a/addons/missionModules/script_component.hpp b/addons/missionModules/script_component.hpp deleted file mode 100644 index a567966c7b..0000000000 --- a/addons/missionModules/script_component.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#define COMPONENT missionModules -#include "\z\ace\addons\main\script_mod.hpp" - -#ifdef DEBUG_ENABLED_MISSIONMODULES - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_SETTINGS_MISSIONMODULES - #define DEBUG_SETTINGS DEBUG_SETTINGS_MISSIONMODULES -#endif - -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file From bfc748fbbef1d9745c0a0d0cb35133a17b9b9c6f Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 17 Feb 2015 07:51:51 +0100 Subject: [PATCH 164/211] Added missionmodules. --- addons/missionmodules/$PBOPREFIX$ | 1 + addons/missionmodules/CfgEventHandlers.hpp | 6 + addons/missionmodules/CfgFactionClasses.hpp | 6 + addons/missionmodules/CfgVehicles.hpp | 68 ++++++++++ addons/missionmodules/XEH_preInit.sqf | 7 + addons/missionmodules/config.cpp | 17 +++ addons/missionmodules/data/moduleSound.paa | Bin 0 -> 5625 bytes .../functions/fnc_moduleAmbianceSound.sqf | 123 ++++++++++++++++++ .../functions/script_component.hpp | 1 + addons/missionmodules/script_component.hpp | 12 ++ 10 files changed, 241 insertions(+) create mode 100644 addons/missionmodules/$PBOPREFIX$ create mode 100644 addons/missionmodules/CfgEventHandlers.hpp create mode 100644 addons/missionmodules/CfgFactionClasses.hpp create mode 100644 addons/missionmodules/CfgVehicles.hpp create mode 100644 addons/missionmodules/XEH_preInit.sqf create mode 100644 addons/missionmodules/config.cpp create mode 100644 addons/missionmodules/data/moduleSound.paa create mode 100644 addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf create mode 100644 addons/missionmodules/functions/script_component.hpp create mode 100644 addons/missionmodules/script_component.hpp diff --git a/addons/missionmodules/$PBOPREFIX$ b/addons/missionmodules/$PBOPREFIX$ new file mode 100644 index 0000000000..ea1be0daee --- /dev/null +++ b/addons/missionmodules/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\missionModules \ No newline at end of file diff --git a/addons/missionmodules/CfgEventHandlers.hpp b/addons/missionmodules/CfgEventHandlers.hpp new file mode 100644 index 0000000000..f0a9f14d91 --- /dev/null +++ b/addons/missionmodules/CfgEventHandlers.hpp @@ -0,0 +1,6 @@ + +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; diff --git a/addons/missionmodules/CfgFactionClasses.hpp b/addons/missionmodules/CfgFactionClasses.hpp new file mode 100644 index 0000000000..792f4d31e3 --- /dev/null +++ b/addons/missionmodules/CfgFactionClasses.hpp @@ -0,0 +1,6 @@ +class CfgFactionClasses { + class NO_CATEGORY; + class ACE_missionModules: NO_CATEGORY { + displayName = "ACE Mission Modules"; + }; +}; \ No newline at end of file diff --git a/addons/missionmodules/CfgVehicles.hpp b/addons/missionmodules/CfgVehicles.hpp new file mode 100644 index 0000000000..afdb58006b --- /dev/null +++ b/addons/missionmodules/CfgVehicles.hpp @@ -0,0 +1,68 @@ +class CfgVehicles { + class Logic; + class Module_F: Logic { + class ArgumentsBaseUnits { + }; + }; + + // TODO make a curator variant for this + class ACE_moduleAmbianceSound: Module_F { + scope = 2; + displayName = "Ambiance Sounds [ACE]"; + icon = QUOTE(PATHTOF(data\moduleSound.paa)); + category = "ACE_missionModules"; + function = QUOTE(FUNC(moduleAmbianceSound); + functionPriority = 1; + isGlobal = 1; + isTriggerActivated = 0; + author = "Glowbal"; + class Arguments { + class soundFiles { + displayName = "Sounds"; + description = "Classnames of the ambiance sounds played. Seperated by ','. "; + typeName = "STRING"; + defaultValue = ""; + }; + class minimalDistance { + displayName = "Minimal Distance"; + description = "Minimal Distance"; + typeName = "NUMBER"; + defaultValue = 400; + }; + class maximalDistance { + displayName = "Maximal Distance"; + description = "Maximal Distance"; + typeName = "NUMBER"; + defaultValue = 900; + }; + class minimalDelay { + displayName = "Minimal Delay"; + description = "Minimal Delay between sounds played"; + typeName = "NUMBER"; + defaultValue = 10; + }; + class maximalDelay { + displayName = "Maximal Delay"; + description = "Maximal Delay between sounds played"; + typeName = "NUMBER"; + defaultValue = 170; + }; + class followPlayers { + displayName = "Follow Players"; + description = "Follow players. If set to false, loop will play sounds only nearby logic position."; + typeName = "BOOL"; + defaultValue = 0; + }; + class soundVolume { + displayName = "Volume"; + description = "The volume of the sounds played"; + typeName = "NUMBER"; + defaultValue = 0; + }; + }; + class ModuleDescription { + description = "Ambiance sounds loop (synced across MP)"; + sync[] = {}; + }; + }; +}; diff --git a/addons/missionmodules/XEH_preInit.sqf b/addons/missionmodules/XEH_preInit.sqf new file mode 100644 index 0000000000..cadbbabdd1 --- /dev/null +++ b/addons/missionmodules/XEH_preInit.sqf @@ -0,0 +1,7 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(moduleAmbianceSound); + +ADDON = true; diff --git a/addons/missionmodules/config.cpp b/addons/missionmodules/config.cpp new file mode 100644 index 0000000000..0867b486c6 --- /dev/null +++ b/addons/missionmodules/config.cpp @@ -0,0 +1,17 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {"cse_moduleAmbianceSound"}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {"Glowbal"}; + authorUrl = ""; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" +#include "CfgFactionClasses.hpp" +#include "CfgVehicles.hpp" diff --git a/addons/missionmodules/data/moduleSound.paa b/addons/missionmodules/data/moduleSound.paa new file mode 100644 index 0000000000000000000000000000000000000000..bfe3b8032717dcc98269b4b42a620cffe550ffc2 GIT binary patch literal 5625 zcmd5=e{2)i9e)QtpfrHPa-m>_7$qGojBP2JHAXidD=lKvOSnciRHiZp3io($CfVu3Ih4Y{*BB>0gjI}tEY4lCyKj^3 zi|MspB)_I9Qgx5++xQ+GAF#}rEAi6)SgR2uT;uV0M$+GvaQ(#H9}xS?WmyKjWzk^2 zNzcQW;MZidnf$!>++Lhj?%eeIpGtziBC+buc2ZUhGN$7o{p|Y_&10xliB==phYGcr8`S2cb3wu zSJO0FbEhH0o>*@a^2330*Os!%?HPIs=*>Ht3JmIghu|*BN=Fax<2*v*2zg37n~I_l zvuOp1~efUHq1t$YIb<=rbwS zTrcQpUhjzXYHsxVyH5nfdE>YxM~e3~1{1=bAg7M@d>{Fz$PcEznj%j-Sr-`;E@UQk zQ%W=8le|+&`CYHlo@`?-%h+-aPK=XB!7Q0@uvl zk~H~J)3;+sOn<@gdX~1F2=F@pO`4Y=pKA{{ih0US7~4l2ZHeSrF3!i~kXHre!}Y@c zP~XdDtCPF%p;?fZ%~k(hpV7__KYu$I&W)uH29ukQ!Cc^o8gi!2->3UUe9E%THmf0Q zTsUN8<7HeGl+Vt~a$AbuYUH0o|BNJeHbGk-Z{+Ere3Dmnv_1+KqTMjB=U(a$b{;-6 zzc4iZ3Di4N{_5i{f3GXhO~_`GW%kmP#F*J;J)-sFmSP?uO!IU;(7&&hr;0QC@2ovz z3-%y>l5ihkZ6=ksK>1eVIAM@i^LD}cUF(EDfV@(07E3F~Wc@c6Pf23lh`?V>iWc4M z`dp0j&)*$#tfK$P|G#y0L*l&qaS?wMfyF&b{MX`O{fI8!$wXwry{egRWm$pFp z{y>`MA)mBh5Aqkkb=l&hj--Fhjd&oPi5~=z^p(|AlqMfu%Gp?i68y-kT`Dz1+<3b z<$c9;CtdTx;i6ck|MGfA>_>9#Q+h5Q7_jV*@=E>2Esi71(4W)NRDZ#3xHI;cHA?@; z<(G?d&v#ynUfUZd{#1V?*3m-&#@%$Iy`|^e#>Hkc9?+hA!G5{)M~i2jYll6|dd$$D zR)0X8Be1{8Upe@-w3`5=Q9-=?2KtXFp9)OTGQSFkA2Lj=c}(p3w}oZ4G=ctW9oi4< zr*2R=xTFyP!>q?9KaP56@|$%on7G*D6aK=`UyoLwyIp@@cmGg)E1Kr+;jL-cv!*;u z)@FA=&{SZHDJ_#uoFU1F>~(_jCm+&BtmntyvDT}g$DiA1>Bl@;UiY3!nfQUa_gvq* zwb%dKekXIHkY=R<$fjcYGlSh9iZ&KyjMBcs8aBK9SId5$Z9^J1hwG!^7Z8h7Chc~y zzRAF|A*~;Z!VEp4O~Z+c&YynMaN;8TU{bH0yK>v3G(%zjHqY*)0JwO9CW)BVG zJ*YDB^0;y9tW`GfULspIGVAAGN0_?S3436ZaxYoN8IUw|Rqu_G7u7KTl-MPM?0gOc`ug7=QW2VESaxEQ|DzF~Gcf`Ss=k z!5@80$+70ue>^-^&<8!+w(EE;@MgU@FXFFWrn38tNE@g!N=@f3^qiN9Y5(x27AJTU z=ZAa#5twV0X_O^x28Z$A&pS=)$^KtzKk;MPDzj+fwB>Q#-`x>urFlHnvF~!UO>diN z1yv&Jpc(olz3l-5or{nk44&+4GA;!F4$kl&=$B9LESij$36p&hUd;VmNUJ6YMgF6JLbOVk`ZbHcCR84R!G;@r-_u zAOuge55r}#NM0sQs>9M`hMq}%DBkSUY)Wi(n$)N*vDA>Kx9MZQ8d)rk1;xlSy{&nF z{&N3bnupD7Ptbb2a4^?R|X+6c1 zGkO0 + * 1: Units + * 2: Activated + * + * Return Value: + * Nothing + * + * Example: + * N/A + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_logic", "_units", "_activated","_ambianceSounds", "_soundFiles", "_minimalDistance","_maximalDistance", "_minimalDistance", "_maxDelayBetweenSounds", "_allUnits", "_newPos", "_targetUnit", "_soundToPlay", "_soundPath", "_unparsedSounds", "_list", "_splittedList", "_nilCheckPassedList"]; +_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; +_units = [_this,1,[],[[]]] call BIS_fnc_param; +_activated = [_this,2,true,[true]] call BIS_fnc_param; + +// We only play this on the locality of the logic, since the sounds are broadcasted across the network +if (_activated && local _logic) then { + _ambianceSounds = []; + _unparsedSounds = _logic getvariable ["soundFiles", ""]; + _minimalDistance = (_logic getvariable ["minimalDistance", 400]) max 1; + _maximalDistance = (_logic getvariable ["maximalDistance", 10]) max _minimalDistance; + _minDelayBetweensounds = (_logic getvariable ["minimalDelay", 10]) max 1; + _maxDelayBetweenSounds = (_logic getvariable ["maximalDelay", 170]) max _minDelayBetweensounds; + _volume = (_logic getvariable ["soundVolume", 30]) max 1; + _followPlayers = _logic getvariable ["followPlayers", false]; + + _splittedList = [_unparsedSounds, ","] call BIS_fnc_splitString; + + _nilCheckPassedList = ""; + { + _x = [_x] call EFUNC(common,removeWhiteSpace); + _splittedList set [_foreachIndex, _x]; + }foreach _splittedList; + + _soundPath = [(str missionConfigFile), 0, -15] call BIS_fnc_trimString; + { + if (isclass (missionConfigFile >> "CfgSounds" >> _x)) then { + _ambianceSounds pushback (_soundPath + (getArray(missionConfigFile >> "CfgSounds" >> _x >> "sound") select 0)); + } else { + if (isclass (configFile >> "CfgSounds" >> _x)) then { + _ambianceSounds pushback ((getArray(configFile >> "CfgSounds" >> _x >> "sound") select 0)); + }; + }; + }foreach _splittedList; + + if (count _ambianceSounds == 0) exitwith {}; + { + if !([".", _x, true] call BIS_fnc_inString) then { + _ambianceSounds set [_foreachIndex, _x + ".wss"]; + }; + }foreach _ambianceSounds; + + [{ + private ["_args", "_logic", "_ambianceSounds", "_minimalDistance", "_maximalDistance", "_minDelayBetweensounds", "_maxDelayBetweenSounds", "_volume", "_followPlayers","_lastTimePlayed", "_newPos"] + _args = _this select 0; + _logic = _args select 0; + _lastTimePlayed = _args select 8; + + if (!alive _logic) exitwith { + [(_this select 1)] call cba_fnc_removePerFrameHandler; + }; + + if (_lastTimePlayed - time >= ((_minDelayBetweensounds + random(_maxDelayBetweenSounds)) min _maxDelayBetweenSounds)) then { + _ambianceSounds = _args select 1; + _minimalDistance = _args select 2; + _maximalDistance = _args select 3; + _minDelayBetweensounds = _args select 4; + _maxDelayBetweenSounds = _args select 5; + _volume = _args select 6; + _followPlayers = _args select 7; + + // Find all players in session. + _allUnits = if (isMultiplayer) then {playableUnits} else {[ACE_player]}; + + // Check if there are enough players to even start playing this sound. + if (count _allUnits > 0) then { + + // Select a target unit at random. + _targetUnit = _allUnits select (round(random((count _allUnits)-1))); + + // find the position from which we are going to play this sound from. + _newPos = (getPos _targetUnit); + if (!_followPlayers) then { + _newPos = getPos _logic; + }; + + // Randomize this position. + if (random(1) >= 0.5) then { + if (random(1) >= 0.5) then { + _newPos set [0, (_newPos select 0) + (_minimalDistance + random(_maximalDistance))]; + } else { + _newPos set [0, (_newPos select 0) - (_minimalDistance + random(_maximalDistance))]; + }; + } else { + if (random(1) >= 0.5) then { + _newPos set [1, (_newPos select 1) + (_minimalDistance + random(_maximalDistance))]; + } else { + _newPos set [1, (_newPos select 1) - (_minimalDistance + random(_maximalDistance))]; + }; + }; + + // If no unit is to close to this position, we will play the sound. + if ({(_newPos distance _x < (_minimalDistance / 2))}count _allUnits == 0) then { + + playSound3D [_ambianceSounds select (round(random((count _ambianceSounds)-1))), ObjNull, false, _newPos, _volume, 1, 1000]; + _args set [8, time]; + }; + }; + }; + }, 0.1, [_logic, _ambianceSounds, _minimalDistance, _maximalDistance, _minDelayBetweensounds, _maxDelayBetweenSounds, _volume, _followPlayers, time] ] call CBA_fnc_addPerFrameHandler; +}; + +true; diff --git a/addons/missionmodules/functions/script_component.hpp b/addons/missionmodules/functions/script_component.hpp new file mode 100644 index 0000000000..42d34d4801 --- /dev/null +++ b/addons/missionmodules/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\missionmodules\script_component.hpp" \ No newline at end of file diff --git a/addons/missionmodules/script_component.hpp b/addons/missionmodules/script_component.hpp new file mode 100644 index 0000000000..a567966c7b --- /dev/null +++ b/addons/missionmodules/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT missionModules +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_MISSIONMODULES + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_MISSIONMODULES + #define DEBUG_SETTINGS DEBUG_SETTINGS_MISSIONMODULES +#endif + +#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file From c3b5430bc4b15a7cf92738cc00845a2732abf01b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 17 Feb 2015 22:05:52 -0600 Subject: [PATCH 165/211] NVG KeyBinds --- addons/nightvision/XEH_postInitClient.sqf | 37 +++++++++++++++++++ addons/nightvision/config.cpp | 43 +++++------------------ 2 files changed, 46 insertions(+), 34 deletions(-) diff --git a/addons/nightvision/XEH_postInitClient.sqf b/addons/nightvision/XEH_postInitClient.sqf index b81bedc07b..7513b1df16 100644 --- a/addons/nightvision/XEH_postInitClient.sqf +++ b/addons/nightvision/XEH_postInitClient.sqf @@ -35,3 +35,40 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; ["cameraViewChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); ["playerVehicleChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); ["playerTurretChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); + +// Add keybinds +["ACE3", +localize "STR_ACE_NightVision_IncreaseNVGBrightness", +{ + // Conditions: canInteract + _exceptions = [QEGVAR(captives,isNotEscorting)]; + if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; + // Conditions: specific + if ((currentVisionMode _player != 1)) exitWith {false}; + + // Statement + [ACE_player, 1] call FUNC(changeNVGBrightness); + true +}, +[201, [false, false, true]], //PageUp + ALT +false, +"keydown" +] call cba_fnc_registerKeybind; + +["ACE3", +localize "STR_ACE_NightVision_DecreaseNVGBrightness", +{ + // Conditions: canInteract + _exceptions = [QEGVAR(captives,isNotEscorting)]; + if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; + // Conditions: specific + if ((currentVisionMode _player != 1)) exitWith {false}; + + // Statement + [ACE_player, -1] call FUNC(changeNVGBrightness); + true +}, +[209, [false, false, true]], //PageDown + ALT +false, +"keydown" +] call cba_fnc_registerKeybind; diff --git a/addons/nightvision/config.cpp b/addons/nightvision/config.cpp index 32c563bfb6..4e6aa2e39a 100644 --- a/addons/nightvision/config.cpp +++ b/addons/nightvision/config.cpp @@ -1,42 +1,17 @@ #include "script_component.hpp" class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {"ACE_NVG_Gen1", "ACE_NVG_Gen2", /*"ACE_NVG_Gen3",*/ "ACE_NVG_Gen4", "ACE_NVG_Wide"}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - author[] = {"commy2", "KoffeinFlummi", "PabstMirror"}; - authorUrl = "https://github.com/commy2/"; - VERSION_CONFIG; - }; + class ADDON { + units[] = {}; + weapons[] = {"ACE_NVG_Gen1", "ACE_NVG_Gen2", /*"ACE_NVG_Gen3",*/ "ACE_NVG_Gen4", "ACE_NVG_Wide"}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {"commy2", "KoffeinFlummi", "PabstMirror"}; + authorUrl = "https://github.com/commy2/"; + VERSION_CONFIG; + }; }; #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" - - -// class EGVAR(common,Default_Keys) { //??? -class ACE_common_Default_Keys { - class increaseNVGBrightness { - displayName = "$STR_ACE_NightVision_IncreaseNVGBrightness"; - condition = QUOTE( currentVisionMode _player == 1 ); - statement = QUOTE( [_player, _vehicle] call FUNC(increaseNVGBrightness) ); - key = 201; - shift = 0; - control = 0; - alt = 1; - allowHolding = 1; - }; - class decreaseNVGBrightness { - displayName = "$STR_ACE_NightVision_DecreaseNVGBrightness"; - condition = QUOTE( currentVisionMode _player == 1 ); - statement = QUOTE( [_player, _vehicle] call FUNC(decreaseNVGBrightness) ); - key = 209; - shift = 0; - control = 0; - alt = 1; - allowHolding = 1; - }; -}; From c291f297029ae4dda6d2f516aba3f8248371f806 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 17 Feb 2015 22:06:37 -0600 Subject: [PATCH 166/211] Move model to folder --- addons/nightvision/CfgWeapons.hpp | 94 +++++++++--------- .../{ => models}/ace_nvg_wide_optics.p3d | Bin 2 files changed, 47 insertions(+), 47 deletions(-) rename addons/nightvision/{ => models}/ace_nvg_wide_optics.p3d (100%) diff --git a/addons/nightvision/CfgWeapons.hpp b/addons/nightvision/CfgWeapons.hpp index 99cc55db20..c40885c2c4 100644 --- a/addons/nightvision/CfgWeapons.hpp +++ b/addons/nightvision/CfgWeapons.hpp @@ -1,56 +1,56 @@ class CfgWeapons { - class Binocular; - class NVGoggles: Binocular { - displayName = "$STR_ACE_NightVision_NVG_Gen3_brown"; - ACE_NightVision_grain = 0.75; - ACE_NightVision_blur = 0.055; - ACE_NightVision_radBlur = 0.001; - }; - class NVGoggles_OPFOR: NVGoggles { - displayName = "$STR_ACE_NightVision_NVG_Gen3_black"; - }; - class NVGoggles_INDEP: NVGoggles { - displayName = "$STR_ACE_NightVision_NVG_Gen3_green"; - }; + class Binocular; + class NVGoggles: Binocular { + displayName = "$STR_ACE_NightVision_NVG_Gen3_brown"; + ACE_NightVision_grain = 0.75; + ACE_NightVision_blur = 0.055; + ACE_NightVision_radBlur = 0.001; + }; + class NVGoggles_OPFOR: NVGoggles { + displayName = "$STR_ACE_NightVision_NVG_Gen3_black"; + }; + class NVGoggles_INDEP: NVGoggles { + displayName = "$STR_ACE_NightVision_NVG_Gen3_green"; + }; - class ACE_NVG_Gen1: NVGoggles_OPFOR { - author = "$STR_ACE_Common_ACETeam"; - modelOptics = "\A3\weapons_f\reticle\optics_night"; - displayName = "$STR_ACE_NightVision_NVG_Gen1"; - ACE_NightVision_grain = 2.25; - ACE_NightVision_blur = 0.22; - ACE_NightVision_radBlur = 0.004; - }; - class ACE_NVG_Gen2: NVGoggles_INDEP { - author = "$STR_ACE_Common_ACETeam"; - modelOptics = "\A3\weapons_f\reticle\optics_night"; - displayName = "$STR_ACE_NightVision_NVG_Gen2"; - ACE_NightVision_grain = 1.5; - ACE_NightVision_blur = 0.11; - ACE_NightVision_radBlur = 0.002; - }; - /*class ACE_NVG_Gen3: NVGoggles { + class ACE_NVG_Gen1: NVGoggles_OPFOR { + author = "$STR_ACE_Common_ACETeam"; + modelOptics = "\A3\weapons_f\reticle\optics_night"; + displayName = "$STR_ACE_NightVision_NVG_Gen1"; + ACE_NightVision_grain = 2.25; + ACE_NightVision_blur = 0.22; + ACE_NightVision_radBlur = 0.004; + }; + class ACE_NVG_Gen2: NVGoggles_INDEP { + author = "$STR_ACE_Common_ACETeam"; + modelOptics = "\A3\weapons_f\reticle\optics_night"; + displayName = "$STR_ACE_NightVision_NVG_Gen2"; + ACE_NightVision_grain = 1.5; + ACE_NightVision_blur = 0.11; + ACE_NightVision_radBlur = 0.002; + }; + /*class ACE_NVG_Gen3: NVGoggles { author = "$STR_ACE_Common_ACETeam"; modelOptics = "\A3\weapons_f\reticle\optics_night"; displayName = "$STR_ACE_NightVision_NVG_Gen3"; ACE_NightVision_grain = 0.75; ACE_NightVision_blur = 0.055; ACE_NightVision_radBlur = 0.001; - };*/ - class ACE_NVG_Gen4: NVGoggles { - author = "$STR_ACE_Common_ACETeam"; - modelOptics = "\A3\weapons_f\reticle\optics_night"; - displayName = "$STR_ACE_NightVision_NVG_Gen4"; - ACE_NightVision_grain = 0.0; - ACE_NightVision_blur = 0.0; - ACE_NightVision_radBlur = 0.0; - }; - class ACE_NVG_Wide: NVGoggles { - author = "$STR_ACE_Common_ACETeam"; - modelOptics = QUOTE(PATHTOF(ACE_nvg_wide_optics)); - displayName = "$STR_ACE_NightVision_NVG_FullScreen"; - ACE_NightVision_grain = 0.75; - ACE_NightVision_blur = 0.055; - ACE_NightVision_radBlur = 0.001; - }; +};*/ + class ACE_NVG_Gen4: NVGoggles { + author = "$STR_ACE_Common_ACETeam"; + modelOptics = "\A3\weapons_f\reticle\optics_night"; + displayName = "$STR_ACE_NightVision_NVG_Gen4"; + ACE_NightVision_grain = 0.0; + ACE_NightVision_blur = 0.0; + ACE_NightVision_radBlur = 0.0; + }; + class ACE_NVG_Wide: NVGoggles { + author = "$STR_ACE_Common_ACETeam"; + modelOptics = QUOTE(PATHTOF(models\ACE_nvg_wide_optics)); + displayName = "$STR_ACE_NightVision_NVG_FullScreen"; + ACE_NightVision_grain = 0.75; + ACE_NightVision_blur = 0.055; + ACE_NightVision_radBlur = 0.001; + }; }; diff --git a/addons/nightvision/ace_nvg_wide_optics.p3d b/addons/nightvision/models/ace_nvg_wide_optics.p3d similarity index 100% rename from addons/nightvision/ace_nvg_wide_optics.p3d rename to addons/nightvision/models/ace_nvg_wide_optics.p3d From e649c8e8532082a4c39930764b7a5314cf625a4b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 17 Feb 2015 22:07:29 -0600 Subject: [PATCH 167/211] Headers and formating --- addons/nightvision/CfgEventHandlers.hpp | 20 +++---- addons/nightvision/CfgVehicles.hpp | 38 ++++++------ addons/nightvision/XEH_preInit.sqf | 3 +- addons/nightvision/functions/fnc_blending.sqf | 58 +++++++++++++------ .../functions/fnc_changeNVGBrightness.sqf | 33 +++++++++++ .../functions/fnc_decreaseNVGBrightness.sqf | 21 ------- .../functions/fnc_increaseNVGBrightness.sqf | 21 ------- .../functions/fnc_updatePPEffects.sqf | 16 ++++- 8 files changed, 117 insertions(+), 93 deletions(-) create mode 100644 addons/nightvision/functions/fnc_changeNVGBrightness.sqf delete mode 100644 addons/nightvision/functions/fnc_decreaseNVGBrightness.sqf delete mode 100644 addons/nightvision/functions/fnc_increaseNVGBrightness.sqf diff --git a/addons/nightvision/CfgEventHandlers.hpp b/addons/nightvision/CfgEventHandlers.hpp index d76482dd7f..380f190f47 100644 --- a/addons/nightvision/CfgEventHandlers.hpp +++ b/addons/nightvision/CfgEventHandlers.hpp @@ -1,19 +1,19 @@ class Extended_PreInit_EventHandlers { - class ADDON { - init = QUOTE(call COMPILE_FILE(XEH_preInit) ); - }; + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit) ); + }; }; class Extended_PostInit_EventHandlers { - class ADDON { - clientInit = QUOTE(call COMPILE_FILE(XEH_postInitClient) ); - }; + class ADDON { + clientInit = QUOTE(call COMPILE_FILE(XEH_postInitClient) ); + }; }; class Extended_FiredBIS_EventHandlers { - class AllVehicles { - class ADDON { - clientFiredBIS = QUOTE( _this call FUNC(blending) ); + class AllVehicles { + class ADDON { + clientFiredBIS = QUOTE( _this call FUNC(blending) ); + }; }; - }; }; diff --git a/addons/nightvision/CfgVehicles.hpp b/addons/nightvision/CfgVehicles.hpp index 63abfb47e2..d53ce54467 100644 --- a/addons/nightvision/CfgVehicles.hpp +++ b/addons/nightvision/CfgVehicles.hpp @@ -1,22 +1,22 @@ class CfgVehicles { - class All { - ACE_NightVision_grain = 0.75; - ACE_NightVision_blur = 0.055; - }; - - #define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ - name = #ITEM; \ - count = COUNT; \ - }; - - class Box_NATO_Support_F; - class ACE_Box_Misc: Box_NATO_Support_F { - class TransportItems { - MACRO_ADDITEM(ACE_NVG_Gen1,6) - MACRO_ADDITEM(ACE_NVG_Gen2,6) - //MACRO_ADDITEM(ACE_NVG_Gen3,6) - MACRO_ADDITEM(ACE_NVG_Gen4,6) - MACRO_ADDITEM(ACE_NVG_Wide,6) + class All { + ACE_NightVision_grain = 0.75; + ACE_NightVision_blur = 0.055; + }; + +#define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ + name = #ITEM; \ + count = COUNT; \ + }; + + class Box_NATO_Support_F; + class ACE_Box_Misc: Box_NATO_Support_F { + class TransportItems { + MACRO_ADDITEM(ACE_NVG_Gen1,6) + MACRO_ADDITEM(ACE_NVG_Gen2,6) + //MACRO_ADDITEM(ACE_NVG_Gen3,6) + MACRO_ADDITEM(ACE_NVG_Gen4,6) + MACRO_ADDITEM(ACE_NVG_Wide,6) + }; }; - }; }; diff --git a/addons/nightvision/XEH_preInit.sqf b/addons/nightvision/XEH_preInit.sqf index 9f59a01418..27f8ea7d48 100644 --- a/addons/nightvision/XEH_preInit.sqf +++ b/addons/nightvision/XEH_preInit.sqf @@ -3,8 +3,7 @@ ADDON = false; PREP(blending); -PREP(decreaseNVGBrightness); -PREP(increaseNVGBrightness); +PREP(changeNVGBrightness); PREP(updatePPEffects); ADDON = true; diff --git a/addons/nightvision/functions/fnc_blending.sqf b/addons/nightvision/functions/fnc_blending.sqf index df46c62b58..41c61cd687 100644 --- a/addons/nightvision/functions/fnc_blending.sqf +++ b/addons/nightvision/functions/fnc_blending.sqf @@ -1,4 +1,24 @@ -// by commy2 +/* + * Author: commy2 + * Change the blending when the player fires?? + * + * Arguments: + * 0: unit - Object the event handler is assigned to + * 1: weapon - Fired weapon + * 2: muzzle - Muzzle that was used + * 3: mode - Current mode of the fired weapon + * 4: ammo - Ammo used + * 5: magazine - magazine name which was used + * 6: projectile - Object of the projectile that was shot + * + * Return Value: + * Nothing + * + * Example: + * [clientFiredBIS-XEH] call ace_nightvision_fnc_blending + * + * Public: No + */ #include "script_component.hpp" private ["_vehicle", "_weapon", "_ammo", "_magazine", "_player"]; @@ -8,26 +28,26 @@ _weapon = _this select 1; _ammo = _this select 4; _magazine = _this select 5; -if ((_vehicle != (vehicle ACE_player)) || {(currentVisionMode _vehicle) != 1}) exitWith {}; - _player = ACE_player; +if ((_vehicle != (vehicle _player)) || {(currentVisionMode _player) != 1}) exitWith {}; + if (_player != _vehicle && {!(_weapon in (_vehicle weaponsTurret ([_player] call EFUNC(common,getTurretIndex))))}) exitWith {}; private ["_silencer", "_visibleFireCoef", "_visibleFireTimeCoef", "_visibleFire", "_visibleFireTime", "_nvgBrightnessCoef", "_fnc_isTracer", "_darkness"]; _silencer = switch (_weapon) do { - case (primaryWeapon _player) : {primaryWeaponItems _player select 0}; - case (secondaryWeapon _player) : {secondaryWeaponItems _player select 0}; - case (handgunWeapon _player) : {handgunItems _player select 0}; - default {""}; +case (primaryWeapon _player) : {primaryWeaponItems _player select 0}; +case (secondaryWeapon _player) : {secondaryWeaponItems _player select 0}; +case (handgunWeapon _player) : {handgunItems _player select 0}; + default {""}; }; _visibleFireCoef = 1; _visibleFireTimeCoef = 1; if (_silencer != "") then { - _visibleFireCoef = getNumber (configFile >> "CfgWeapons" >> _silencer >> "ItemInfo" >> "AmmoCoef" >> "visibleFire"); - _visibleFireTimeCoef = getNumber (configFile >> "CfgWeapons" >> _silencer >> "ItemInfo" >> "AmmoCoef" >> "visibleFireTime"); + _visibleFireCoef = getNumber (configFile >> "CfgWeapons" >> _silencer >> "ItemInfo" >> "AmmoCoef" >> "visibleFire"); + _visibleFireTimeCoef = getNumber (configFile >> "CfgWeapons" >> _silencer >> "ItemInfo" >> "AmmoCoef" >> "visibleFireTime"); }; _visibleFire = getNumber (configFile >> "CfgAmmo" >> _ammo >> "visibleFire"); @@ -36,24 +56,24 @@ _visibleFireTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "visibleFireTi _nvgBrightnessCoef = 1 + (_player getVariable [QGVAR(NVGBrightness), 0]) / 4; _fnc_isTracer = { - private ["_indexShot", "_lastRoundsTracer", "_tracersEvery"]; + private ["_indexShot", "_lastRoundsTracer", "_tracersEvery"]; - if (getNumber (configFile >> "CfgAmmo" >> _ammo >> "nvgOnly") > 0) exitWith {false}; + if (getNumber (configFile >> "CfgAmmo" >> _ammo >> "nvgOnly") > 0) exitWith {false}; - _indexShot = (_player ammo _weapon) + 1; + _indexShot = (_player ammo _weapon) + 1; - _lastRoundsTracer = getNumber (configFile >> "CfgMagazines" >> _magazine >> "lastRoundsTracer"); - if (_indexShot <= _lastRoundsTracer) exitWith {true}; + _lastRoundsTracer = getNumber (configFile >> "CfgMagazines" >> _magazine >> "lastRoundsTracer"); + if (_indexShot <= _lastRoundsTracer) exitWith {true}; - _tracersEvery = getNumber (configFile >> "CfgMagazines" >> _magazine >> "tracersEvery"); - if (_tracersEvery == 0) exitWith {false}; + _tracersEvery = getNumber (configFile >> "CfgMagazines" >> _magazine >> "tracersEvery"); + if (_tracersEvery == 0) exitWith {false}; - (_indexShot - _lastRoundsTracer) % _tracersEvery == 0 + (_indexShot - _lastRoundsTracer) % _tracersEvery == 0 }; if (call _fnc_isTracer) then { - _visibleFire = _visibleFire + 2; - _visibleFireTime = _visibleFireTime + 2; + _visibleFire = _visibleFire + 2; + _visibleFireTime = _visibleFireTime + 2; }; _darkness = 1 - (call EFUNC(common,ambientBrightness)); diff --git a/addons/nightvision/functions/fnc_changeNVGBrightness.sqf b/addons/nightvision/functions/fnc_changeNVGBrightness.sqf new file mode 100644 index 0000000000..e1894aba00 --- /dev/null +++ b/addons/nightvision/functions/fnc_changeNVGBrightness.sqf @@ -0,0 +1,33 @@ +/* + * Author: commy2 + * Change the brightness of the unit's NVG + * + * Arguments: + * 0: The Unit + * 1: Change in brightness (1 or -1) + * + * Return Value: + * Nothing + * + * Example: + * [player, 1] call ace_nightvision_fnc_changeNVGBrightness + * + * Public: No + */ +#include "script_component.hpp" + +private ["_brightness"]; + +PARAMS_2(_player,_changeInBrightness); + +_brightness = _player getVariable [QGVAR(NVGBrightness), 0]; + +_brightness = ((round (10 * _brightness + _changeInBrightness) / 10) min 1) max -1; + +_player setVariable [QGVAR(NVGBrightness), _brightness, false]; + +GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, 1, _brightness / 4, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; +GVAR(ppEffectNVGBrightness) ppEffectCommit 0; + +[format [(localize "STR_ACE_NightVision_NVGBrightness"), (_brightness * 100)]] call EFUNC(common,displayTextStructured); +playSound "ACE_Sound_Click"; diff --git a/addons/nightvision/functions/fnc_decreaseNVGBrightness.sqf b/addons/nightvision/functions/fnc_decreaseNVGBrightness.sqf deleted file mode 100644 index 0fb2de9d33..0000000000 --- a/addons/nightvision/functions/fnc_decreaseNVGBrightness.sqf +++ /dev/null @@ -1,21 +0,0 @@ -// by commy2 -#include "script_component.hpp" - -private ["_player", "_vehicle", "_brightness"]; - -_player = _this select 0; -_vehicle = _this select 1; - -_brightness = _player getVariable [QGVAR(NVGBrightness), 0]; - -if (_brightness > -1) then { - _brightness = round (10 * _brightness - 1) / 10; - - _player setVariable [QGVAR(NVGBrightness), _brightness, false]; - - GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, 1, _brightness / 4, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; - GVAR(ppEffectNVGBrightness) ppEffectCommit 0; - - [format [localize "STR_ACE_NightVision_NVGBrightness", format ["%1%", _brightness * 100]]] call EFUNC(common,displayTextStructured); - playSound "ACE_Sound_Click"; -}; diff --git a/addons/nightvision/functions/fnc_increaseNVGBrightness.sqf b/addons/nightvision/functions/fnc_increaseNVGBrightness.sqf deleted file mode 100644 index e2143d5a5e..0000000000 --- a/addons/nightvision/functions/fnc_increaseNVGBrightness.sqf +++ /dev/null @@ -1,21 +0,0 @@ -// by commy2 -#include "script_component.hpp" - -private ["_player", "_vehicle", "_brightness"]; - -_player = _this select 0; -_vehicle = _this select 1; - -_brightness = _player getVariable [QGVAR(NVGBrightness), 0]; - -if (_brightness < 1) then { - _brightness = round (10 * _brightness + 1) / 10; - - _player setVariable [QGVAR(NVGBrightness), _brightness, false]; - - GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, 1, _brightness / 4, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; - GVAR(ppEffectNVGBrightness) ppEffectCommit 0; - - [format [localize "STR_ACE_NightVision_NVGBrightness", format ["%1%", _brightness * 100]]] call EFUNC(common,displayTextStructured); - playSound "ACE_Sound_Click"; -}; diff --git a/addons/nightvision/functions/fnc_updatePPEffects.sqf b/addons/nightvision/functions/fnc_updatePPEffects.sqf index 1fdfbb9778..3edfe28e74 100644 --- a/addons/nightvision/functions/fnc_updatePPEffects.sqf +++ b/addons/nightvision/functions/fnc_updatePPEffects.sqf @@ -1,4 +1,18 @@ -//by commy2, PabstMirror and CAA-Picard +/* + * Author: commy2, PabstMirror and CAA-Picard + * Update the ppEffects everytime something changes + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * [someEvent] call ace_nightvision_fnc_updatePPEffects + * + * Public: No + */ #include "script_component.hpp" private ["_currentVehicle", "_grainSetting", "_blurSetting", "_radBlurSetting", "_config"]; From c6c200a6849e5004a387d031bf9d5d7b2de3e5f1 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 17 Feb 2015 22:24:37 -0600 Subject: [PATCH 168/211] comments --- addons/nightvision/functions/fnc_blending.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/nightvision/functions/fnc_blending.sqf b/addons/nightvision/functions/fnc_blending.sqf index 41c61cd687..96e7f404a5 100644 --- a/addons/nightvision/functions/fnc_blending.sqf +++ b/addons/nightvision/functions/fnc_blending.sqf @@ -29,9 +29,9 @@ _ammo = _this select 4; _magazine = _this select 5; _player = ACE_player; - +//If our vehicle didn't shoot, or we're not in NVG mode, exit if ((_vehicle != (vehicle _player)) || {(currentVisionMode _player) != 1}) exitWith {}; - +//If we are mounted, and it wasn't our weapon system that fired, exit if (_player != _vehicle && {!(_weapon in (_vehicle weaponsTurret ([_player] call EFUNC(common,getTurretIndex))))}) exitWith {}; private ["_silencer", "_visibleFireCoef", "_visibleFireTimeCoef", "_visibleFire", "_visibleFireTime", "_nvgBrightnessCoef", "_fnc_isTracer", "_darkness"]; From b86869d7a1c7e90b5b06b55eec50472d130b9657 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 17 Feb 2015 22:37:04 -0600 Subject: [PATCH 169/211] UAV-Recharge Headers --- .../functions/fnc_canRefuelUAV.sqf | 30 ++++++++++--------- .../functions/fnc_refuelUAV.sqf | 30 ++++++++++--------- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/addons/logistics_uavbattery/functions/fnc_canRefuelUAV.sqf b/addons/logistics_uavbattery/functions/fnc_canRefuelUAV.sqf index 4256ddabf9..aaaac3077d 100644 --- a/addons/logistics_uavbattery/functions/fnc_canRefuelUAV.sqf +++ b/addons/logistics_uavbattery/functions/fnc_canRefuelUAV.sqf @@ -1,17 +1,19 @@ -/* fnc_refuel.sqf -* -* Author: marc_book (modified by PabstMirror) -* -* Tests if unit can refuel the target UAV -* -* Argument: -* 0: OBJECT - Player unit -* 1: OBJECT - UAV to test -* -* Return value: -* BOOL -*/ - +/* + * Author: marc_book + * Tests if unit can refuel the target UAV + * + * Arguments: + * 0: Player + * 1: UAV + * + * Return Value: + * Can the player rechange the UAV + * + * Example: + * [player, theUAV] call ace_logistics_uavbattery_fnc_canRefuelUAV + * + * Public: No + */ #include "script_component.hpp" PARAMS_2(_caller,_target); diff --git a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf index 5a248bf812..a23969aa9f 100644 --- a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf +++ b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf @@ -1,17 +1,19 @@ -/* fnc_refuel.sqf -* -* Author: marc_book (modified by PabstMirror) -* -* Starts refueling/recharging the 'Dartar' UAVs -* -* Argument: -* 0: OBJECT - Player unit -* 1: OBJECT - UAV -* -* Return value: -* NOTHING -*/ - +/* + * Author: marc_book + * Starts refueling/recharging the 'Dartar' UAVs + * + * Arguments: + * 0: Player + * 1: UAV + * + * Return Value: + * Nothing + * + * Example: + * [player, theUAV] call ace_logistics_uavbattery_fnc_refuelUAV + * + * Public: No + */ #include "script_component.hpp" PARAMS_2(_caller,_target); From 043987fc9339a70431b459d379f58e05c6459f77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Wed, 18 Feb 2015 18:58:06 -0300 Subject: [PATCH 170/211] basic self actions --- addons/interact_menu/CfgEventHandlers.hpp | 2 +- addons/interact_menu/XEH_clientInit.sqf | 18 +++- addons/interact_menu/XEH_preInit.sqf | 4 + .../functions/fnc_compileMenuSelfAction.sqf | 99 +++++++++++++++++++ .../functions/fnc_keyDownSelfAction.sqf | 11 +++ .../functions/fnc_keyUpSelfAction.sqf | 15 +++ addons/interact_menu/functions/fnc_render.sqf | 43 ++++---- addons/interaction/XEH_clientInit.sqf | 72 -------------- 8 files changed, 172 insertions(+), 92 deletions(-) create mode 100644 addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf create mode 100644 addons/interact_menu/functions/fnc_keyDownSelfAction.sqf create mode 100644 addons/interact_menu/functions/fnc_keyUpSelfAction.sqf diff --git a/addons/interact_menu/CfgEventHandlers.hpp b/addons/interact_menu/CfgEventHandlers.hpp index ae9c93b32e..1301f022d3 100644 --- a/addons/interact_menu/CfgEventHandlers.hpp +++ b/addons/interact_menu/CfgEventHandlers.hpp @@ -13,7 +13,7 @@ class Extended_PostInit_EventHandlers { class Extended_InitPost_EventHandlers { class All { class GVAR(compileMenu) { - init = QUOTE(_this call FUNC(compileMenu)); + init = QUOTE(_this call FUNC(compileMenu);_this call FUNC(compileMenuSelfAction)); }; }; }; \ No newline at end of file diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index a02bf4d558..a2ce5ef8a6 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -15,13 +15,27 @@ _fnc = { ["ACE3", "Interact Key", {_this call FUNC(keyDown)}, -[15, [false, false, false]], +[219, [false, false, false]], false, "keydown"] call cba_fnc_registerKeybind; ["ACE3", "Interact Key", {_this call FUNC(keyUp)}, -[15, [false, false, false]], +[219, [false, false, false]], +false, +"keyUp"] call cba_fnc_registerKeybind; + +["ACE3", +"Self Actions Key", +{_this call FUNC(keyDownSelfAction)}, +[219, [false, true, false]], +false, +"keydown"] call cba_fnc_registerKeybind; + +["ACE3", +"Self Actions Key", +{_this call FUNC(keyUpSelfAction)}, +[219, [false, true, false]], false, "keyUp"] call cba_fnc_registerKeybind; \ No newline at end of file diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index 42795d6c75..da01026425 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -10,14 +10,18 @@ PREP(probe); PREP(rotateVectLineGetMap); PREP(rotateVectLine); PREP(keyDown); +PREP(keyDownSelfAction); PREP(keyUp); +PREP(keyUpSelfAction); PREP(compileMenu); +PREP(compileMenuSelfAction); PREP(addAction); PREP(removeAction); GVAR(toRender) = []; GVAR(keyDown) = false; +GVAR(keyDownSelfAction) = false; GVAR(keyDownTime) = 0; GVAR(lastTime) = diag_tickTime; diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf new file mode 100644 index 0000000000..0c057d7296 --- /dev/null +++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf @@ -0,0 +1,99 @@ +//fnc_compileMenuSelfAction.sqf +#include "script_component.hpp"; +// diag_log text format["COMPILE ACTIONS: %1", _this]; + +_object = _this select 0; +_objectType = typeOf _object; + + +/* +displayName = "$STR_ACE_Hearing_Earbuds_On"; +condition = QUOTE( !([_player] call FUNC(hasEarPlugsIn)) && {'ACE_EarBuds' in items _player} ); +statement = QUOTE( [_player] call FUNC(putInEarPlugs) ); +showDisabled = 0; +priority = 2.5; +icon = PATHTOF(UI\ACE_earplugs_x_ca.paa); +hotkey = "E"; +enableInside = 1; +*/ + +/* +[ + [ + "Launch", + "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa", + [0,0,0], + { (_this select 0) setVelocity [0,0,10]; }, + { true }, + 1, + [] + ] +] +*/ + +_actionsCfg = configFile >> "CfgVehicles" >> _objectType >> "ACE_SelfActions"; + + +_recurseFnc = { + private ["_actions", "_displayName", "_distance", "_icon", "_statement", "_condition", "_showDisabled", + "_enableInside", "_children", "_entry", "_actionsCfg"]; + _actions = []; + _actionsCfg = _this select 0; + for "_i" from 0 to (count _actionsCfg)-1 do { + _entryCfg = _actionsCfg select _i; + if(isClass _entryCfg) then { + _displayName = getText (_entryCfg >> "displayName"); + _icon = getText (_entryCfg >> "icon"); + _statement = compile (getText (_entryCfg >> "statement")); + + _condition = getText (_entryCfg >> "condition"); + if (_condition == "") then {_condition = "true"}; + + // Add canInteract (including exceptions) and canInteractWith to condition + _condition = _condition + format [QUOTE( && {%1 call EGVAR(common,canInteract)} && {[ARR_2(ACE_player, _target)] call EFUNC(common,canInteractWith)} ), getArray (_entryCfg >> "exceptions")]; + + _showDisabled = getNumber (_entryCfg >> "showDisabled"); + _enableInside = getNumber (_entryCfg >> "enableInside"); + + _condition = compile _condition; + // diag_log text format["_condition: %1", _condition]; + _children = []; + if(isArray (_entryCfg >> "subMenu")) then { + _subMenuDef = getArray (_entryCfg >> "subMenu"); + _childMenuName = _subMenuDef select 0; + _childMenuCfg = configFile >> "CfgVehicles" >> _objectType >> "ACE_SelfActions" >> _childMenuName; + _children = [_childMenuCfg] call _recurseFnc; + }; + _entry = [ + _displayName, + _icon, + [0,0,0], + _statement, + _condition, + 3, //distace + _children, + GVAR(uidCounter) + ]; + GVAR(uidCounter) = GVAR(uidCounter) + 1; + _actions pushBack _entry; + }; + }; + _actions +}; + +_actions = [_actionsCfg] call _recurseFnc; + +_actions = [[ + "Self Actions", + "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa", + "Spine3", + { true }, + { true }, + 5, + _actions, + GVAR(uidCounter) +] +]; +GVAR(uidCounter) = GVAR(uidCounter) + 1; + +_object setVariable [QUOTE(GVAR(selfActionData)), _actions]; diff --git a/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf b/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf new file mode 100644 index 0000000000..b44fed6457 --- /dev/null +++ b/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf @@ -0,0 +1,11 @@ +//fnc_keyDownSelfAction.sqf +#include "script_component.hpp" + +if(!GVAR(keyDownSelfAction)) then { + GVAR(keyDownSelfAction) = true; + GVAR(keyDown) = false; + GVAR(keyDownTime) = diag_tickTime; + + GVAR(selfMenuOffset) = [sin getDir ACE_player, cos getDir ACE_player, 0] vectorMultiply 2; +}; +true diff --git a/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf b/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf new file mode 100644 index 0000000000..0029e3bd05 --- /dev/null +++ b/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf @@ -0,0 +1,15 @@ +//fnc_keyUp.sqf +#include "script_component.hpp" + +GVAR(keyDownSelfAction) = false; +if(GVAR(actionSelected)) then { + this = GVAR(selectedTarget); + _player = ACE_Player; + _target = GVAR(selectedTarget); + [GVAR(selectedTarget), player] call GVAR(selectedAction); +}; +GVAR(expanded) = false; +GVAR(lastPath) = []; +GVAR(menuDepthPath) = []; +GVAR(vecLineMap) = []; +true diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index 29033e3407..ba444c1a7a 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -6,7 +6,7 @@ _foundTarget = false; _cursorPos1 = positionCameraToWorld [0, 0, 0]; _cursorPos2 = positionCameraToWorld [0, 0, 2]; GVAR(currentOptions) = []; -if((count GVAR(toRender)) > 0 && GVAR(keyDown)) then { +if((count GVAR(toRender)) > 0 && (GVAR(keyDown) || GVAR(keyDownSelfAction))) then { if((count GVAR(vecLineMap)) == 0 || ((count GVAR(menuDepthPath)) > 0 && (getPosASL player) distance GVAR(lastPos) > 0.01)) then { GVAR(lastPos) = getPosASL player; _cursorVec = [_cursorPos2, _cursorPos1] call BIS_fnc_vectorFromXtoY; @@ -15,23 +15,32 @@ if((count GVAR(toRender)) > 0 && GVAR(keyDown)) then { _p = (_cursorVec call CBA_fnc_vect2polar); _v = [(_p select 0), (_p select 1), (_p select 2)+90] call CBA_fnc_polar2vect; _cp = [_cursorVec, _v] call BIS_fnc_crossProduct; - + GVAR(vecLineMap) = [_cp, _p1, _p2] call FUNC(rotateVectLineGetMap); }; - { - if(!(_forEachIndex in GVAR(filter))) then { - GVAR(renderDepth) = 0; - _renderTargets = _x; - { - [_renderTargets select 0, _x, 0] call FUNC(renderMenu); - } forEach (_renderTargets select 1); - }; - } forEach GVAR(toRender); + if (GVAR(keyDown)) then { + // Render all nearby interaction menus + { + if(!(_forEachIndex in GVAR(filter))) then { + GVAR(renderDepth) = 0; + _renderTargets = _x; + { + [_renderTargets select 0, _x, 0] call FUNC(renderMenu); + } forEach (_renderTargets select 1); + }; + } forEach GVAR(toRender); + } else { + // Render only the self action menu + _actions = (ACE_player getVariable QGVAR(selfActionData)) select 0; + _pos = (ACE_player modelToWorld (ACE_player selectionPosition "spine3")) vectorAdd GVAR(selfMenuOffset); + [ACE_player, _actions, 0, _pos] call FUNC(renderMenu); + }; + // player sideChat format["c: %1", count GVAR(toRender)]; }; -if(GVAR(keyDown)) then { - +if(GVAR(keyDown) || GVAR(keyDownSelfAction)) then { + _cursorScreenPos = worldToScreen _cursorPos2; _closestDistance = 1000000; _closestSelection = -1; @@ -46,11 +55,11 @@ if(GVAR(keyDown)) then { }; }; } forEach GVAR(currentOptions); - + if(_closestSelection != -1) then { - + _closest = GVAR(currentOptions) select _closestSelection; - + _pos = _closest select 1; _cTime = diag_tickTime; _delta = _cTime - GVAR(lastTime); @@ -75,7 +84,7 @@ if(GVAR(keyDown)) then { }; } forEach GVAR(lastPath); }; - + if(_misMatch) then { GVAR(lastPath) = _hoverPath; GVAR(startHoverTime) = diag_tickTime; diff --git a/addons/interaction/XEH_clientInit.sqf b/addons/interaction/XEH_clientInit.sqf index 047e528ad6..85232d1fcd 100644 --- a/addons/interaction/XEH_clientInit.sqf +++ b/addons/interaction/XEH_clientInit.sqf @@ -16,78 +16,6 @@ GVAR(isOpeningDoor) = false; // Add keybinds -["ACE3", - localize "STR_ACE_Interaction_InteractionMenu", - { - // Conditions: canInteract - _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", QEGVAR(captives,isNotEscorting), "ACE_Interaction_isNotSwimming"]; - if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; - // Conditions: specific - if !(isNull (findDisplay 1713999)) exitWith {false}; - - // Statement - call FUNC(onButtonDown); - true - }, - [219, [false, false, false]], - false, - "keydown" -] call cba_fnc_registerKeybind; - -["ACE3", - localize "STR_ACE_Interaction_InteractionMenu", - { - // Conditions: canInteract - _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", QEGVAR(captives,isNotEscorting), "ACE_Interaction_isNotSwimming"]; - if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; - // Conditions: specific - if !(!isNull (findDisplay 1713999) && {QGVAR(AutoCloseMenu)}) exitWith {false}; - - // Statement - if (GVAR(MenuType) mod 2 == 0) then {call FUNC(onButtonUp)}; - true - }, - [219, [false, false, false]], - false, - "keyup" -] call cba_fnc_registerKeybind; - -["ACE3", - localize "STR_ACE_Interaction_InteractionMenuSelf", - { - // Conditions: canInteract - _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", QEGVAR(captives,isNotEscorting), QEGVAR(captives,isNotSurrendering), "ACE_Interaction_isNotSwimming", "ACE_Common_notOnMap"]; - if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; - // Conditions: specific - if !(isNull (findDisplay 1713999)) exitWith {false}; - - // Statement - call FUNC(onButtonDownSelf); - true - }, - [219, [false, true, false]], - false, - "keydown" -] call cba_fnc_registerKeybind; - -["ACE3", - localize "STR_ACE_Interaction_InteractionMenuSelf", - { - // Conditions: canInteract - _exceptions = ["ACE_Drag_isNotDragging", "ACE_Medical_canTreat", QEGVAR(captives,isNotEscorting), QEGVAR(captives,isNotSurrendering), "ACE_Interaction_isNotSwimming"]; - if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; - // Conditions: specific - if !(!isNull (findDisplay 1713999) && {QGVAR(AutoCloseMenu)}) exitWith {false}; - - // Statement - if (GVAR(MenuType) mod 2 == 1) then {call FUNC(onButtonUp)}; - true - }, - [219, [false, true, false]], - false, - "keyup" -] call cba_fnc_registerKeybind; - ["ACE3", localize "STR_ACE_Interaction_OpenDoor", { From 244d7a5572735c086184dab89e338fda3b1cd31c Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 19 Feb 2015 03:02:58 -0600 Subject: [PATCH 171/211] Fix opacity fading on other render levels --- addons/interact_menu/functions/fnc_renderIcon.sqf | 5 +---- addons/interact_menu/functions/fnc_renderMenu.sqf | 6 +++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/addons/interact_menu/functions/fnc_renderIcon.sqf b/addons/interact_menu/functions/fnc_renderIcon.sqf index 39b4b120b9..30821ffdac 100644 --- a/addons/interact_menu/functions/fnc_renderIcon.sqf +++ b/addons/interact_menu/functions/fnc_renderIcon.sqf @@ -18,12 +18,9 @@ if(count _sPos > 0) then { if(_icon == "") then { _icon = DEFAULT_ICON; }; - _text = "" + _text; + _text = format ["%3", _icon, _color, _text]; _ctrl ctrlSetStructuredText (parseText _text); _ctrl ctrlSetPosition [(_sPos select 0)-(0.011*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.4*SafeZoneW, 0.025*SafeZoneW]; - _ctrl ctrlSetForegroundColor _color; - _opacity = _color select 3; - _control ctrlSetTextColor _color; // _ctrl ctrlSetBackgroundColor [1,0,0,1]; _ctrl ctrlCommit 0; }; diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf index 0337d4e8c9..3635241426 100644 --- a/addons/interact_menu/functions/fnc_renderMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderMenu.sqf @@ -25,13 +25,13 @@ if(_cursorScreenPos distance _pos <= _distance) then { }; _menuDepth = (count GVAR(menuDepthPath)); - _opacity = 1; + _color = "#FFFFFFFF"; // ARGB Color (First Hex Pair is transparancy) if(_menuDepth > 0 && _index != (GVAR(menuDepthPath) select (GVAR(renderDepth)))) then { - _opacity = ((GVAR(renderDepth)/_menuDepth)) max 0.25; + _color = format ["#%1FFFFFF", [255 * (((GVAR(renderDepth)/_menuDepth)) max 0.25)] call EFUNC(common,toHex)]; }; _path set[(count _path), _index]; // player sideChat format["r: %1", _actionData select 2]; - [_actionData select 0, [1,1,1,_opacity], _pos, 1, 1, 0, _actionData select 1, 0.5, 0.025, "TahomaB"] call FUNC(renderIcon); + [_actionData select 0, _color, _pos, 1, 1, 0, _actionData select 1, 0.5, 0.025, "TahomaB"] call FUNC(renderIcon); GVAR(currentOptions) set[(count GVAR(currentOptions)), [_this, _pos, _path]]; _currentRenderDepth = -1; _currentRenderDepth = GVAR(renderDepth); From 8c833206752f625396fec58977721e6b3719313d Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Thu, 19 Feb 2015 12:32:41 +0200 Subject: [PATCH 172/211] Separated dialing phone code into separate function to neaten up the original function. --- addons/explosives/functions/fnc_dialPhone.sqf | 28 +----------- .../explosives/functions/fnc_dialingPhone.sqf | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+), 27 deletions(-) create mode 100644 addons/explosives/functions/fnc_dialingPhone.sqf diff --git a/addons/explosives/functions/fnc_dialPhone.sqf b/addons/explosives/functions/fnc_dialPhone.sqf index 3bb2cc45e8..f694ff3d5f 100644 --- a/addons/explosives/functions/fnc_dialPhone.sqf +++ b/addons/explosives/functions/fnc_dialPhone.sqf @@ -28,33 +28,7 @@ for [{_i=0}, {_i<_ran}, {_i=_i+1}] do { }; if (_unit == ace_player) then { ctrlSetText [1400,"Calling"]; - [{ - EXPLODE_4_PVT(_this select 0,_unit,_i,_arr,_code); - if ((_i mod 4) == 0) then { - playSound3D [QUOTE(PATHTOF_R(Data\Audio\DialTone.wss)), objNull, false, (_unit ModelToWorld [0,0.2,2]), 15,1,2.5]; - }; - ctrlSetText [1400,format["Calling%1",_arr select (_i - 4)]]; - if (_i >= (count _arr + 2)) then { - [_this select 1] call CALLSTACK(cba_fnc_removePerFrameHandler); - private "_explosive"; - _explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); - if (!isNull (_explosive)) then { - [_unit, -1, [_explosive, 1]] call FUNC(detonateExplosive); - }; - _unit setVariable [QGVAR(Dialing), false, true]; - if (_unit == ace_player) then { - ctrlSetText [1400,"Call Ended!"]; - }; - }; - if (_i == (count _arr)) then { - private "_explosive"; - _explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); - if (!isNull (_explosive)) then { - playSound3D [QUOTE(PATHTOF_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosATL _explosive,3.16228,1,75]; - }; - }; - (_this select 0) set [1, _i + 1]; - }, 0.25, [_unit,4,_arr,_code]] call CALLSTACK(CBA_fnc_addPerFrameHandler); + [FUNC(dialingPhone), 0.25, [_unit,4,_arr,_code]] call CALLSTACK(CBA_fnc_addPerFrameHandler); } else { private ["_explosive"]; _explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); diff --git a/addons/explosives/functions/fnc_dialingPhone.sqf b/addons/explosives/functions/fnc_dialingPhone.sqf new file mode 100644 index 0000000000..7b71d0e5af --- /dev/null +++ b/addons/explosives/functions/fnc_dialingPhone.sqf @@ -0,0 +1,44 @@ +/* + * Author: Garth 'L-H' de Wet + * Performs the dial tones and detonation of explosive. + * + * Arguments: + * 0: Unit to do dialing + * 1: Index + * 2: Dialing points + * 3: IED code + * + * Return Value: + * None + * + * Example: + * [FUNC(dialingPhone), 0.25, [_unit,4,_arr,_code]] call CALLSTACK(CBA_fnc_addPerFrameHandler); + * + * Public: No + */ +#include "script_component.hpp" +EXPLODE_4_PVT(_this select 0,_unit,_i,_arr,_code); +if ((_i mod 4) == 0) then { + playSound3D [QUOTE(PATHTOF_R(Data\Audio\DialTone.wss)), objNull, false, (_unit ModelToWorld [0,0.2,2]), 15,1,2.5]; +}; +ctrlSetText [1400,format["Calling%1",_arr select (_i - 4)]]; +if (_i >= (count _arr + 2)) then { + [_this select 1] call CALLSTACK(cba_fnc_removePerFrameHandler); + private "_explosive"; + _explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); + if (!isNull (_explosive)) then { + [_unit, -1, [_explosive, 1]] call FUNC(detonateExplosive); + }; + _unit setVariable [QGVAR(Dialing), false, true]; + if (_unit == ace_player) then { + ctrlSetText [1400,"Call Ended!"]; + }; +}; +if (_i == (count _arr)) then { + private "_explosive"; + _explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); + if (!isNull (_explosive)) then { + playSound3D [QUOTE(PATHTOF_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosATL _explosive,3.16228,1,75]; + }; +}; +(_this select 0) set [1, _i + 1]; From 00643c3c83011b1d5038f4213e87d2733f1871f9 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Thu, 19 Feb 2015 12:39:13 +0200 Subject: [PATCH 173/211] Ensured actual fuse time is used instead of simply 1. --- addons/explosives/functions/fnc_addCellphoneIED.sqf | 2 +- addons/explosives/functions/fnc_dialingPhone.sqf | 12 ++++++------ .../functions/fnc_getSpeedDialExplosive.sqf | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/explosives/functions/fnc_addCellphoneIED.sqf b/addons/explosives/functions/fnc_addCellphoneIED.sqf index b13473cf25..49bec07f1b 100644 --- a/addons/explosives/functions/fnc_addCellphoneIED.sqf +++ b/addons/explosives/functions/fnc_addCellphoneIED.sqf @@ -43,7 +43,7 @@ while {!_codeSet} do { if (isNil QGVAR(CellphoneIEDs)) then { GVAR(CellphoneIEDs) = []; }; -_count = GVAR(CellphoneIEDs) pushBack [_explosive,_code]; +_count = GVAR(CellphoneIEDs) pushBack [_explosive,_code,GetNumber(ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> "Cellphone" >> "FuseTime")]; _count = _count + 1; publicVariable QGVAR(CellphoneIEDs); _unit sideChat format ["IED %1 code: %2", _count,_code]; diff --git a/addons/explosives/functions/fnc_dialingPhone.sqf b/addons/explosives/functions/fnc_dialingPhone.sqf index 7b71d0e5af..c50f618abe 100644 --- a/addons/explosives/functions/fnc_dialingPhone.sqf +++ b/addons/explosives/functions/fnc_dialingPhone.sqf @@ -22,12 +22,14 @@ if ((_i mod 4) == 0) then { playSound3D [QUOTE(PATHTOF_R(Data\Audio\DialTone.wss)), objNull, false, (_unit ModelToWorld [0,0.2,2]), 15,1,2.5]; }; ctrlSetText [1400,format["Calling%1",_arr select (_i - 4)]]; + +private "_explosive"; +_explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); + if (_i >= (count _arr + 2)) then { [_this select 1] call CALLSTACK(cba_fnc_removePerFrameHandler); - private "_explosive"; - _explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); if (!isNull (_explosive)) then { - [_unit, -1, [_explosive, 1]] call FUNC(detonateExplosive); + [_unit, -1, [_explosive select 0, _explosive select 2]] call FUNC(detonateExplosive); }; _unit setVariable [QGVAR(Dialing), false, true]; if (_unit == ace_player) then { @@ -35,10 +37,8 @@ if (_i >= (count _arr + 2)) then { }; }; if (_i == (count _arr)) then { - private "_explosive"; - _explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); if (!isNull (_explosive)) then { - playSound3D [QUOTE(PATHTOF_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosATL _explosive,3.16228,1,75]; + playSound3D [QUOTE(PATHTOF_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosATL (_explosive select 0),3.16228,1,75]; }; }; (_this select 0) set [1, _i + 1]; diff --git a/addons/explosives/functions/fnc_getSpeedDialExplosive.sqf b/addons/explosives/functions/fnc_getSpeedDialExplosive.sqf index f5b3172c46..c00f15b5ed 100644 --- a/addons/explosives/functions/fnc_getSpeedDialExplosive.sqf +++ b/addons/explosives/functions/fnc_getSpeedDialExplosive.sqf @@ -21,7 +21,7 @@ if (isNil QGVAR(CellphoneIEDs)) exitWith {objNull}; _explosive = objNull; { if ((_x select 1) == _code) exitWith { - _explosive = _x select 0; + _explosive = _x; }; false } count GVAR(CellphoneIEDs); From 89a81dbed1d5ddcc6b8dcb7f8ad9d0a6b9aed677 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Thu, 19 Feb 2015 12:40:21 +0200 Subject: [PATCH 174/211] Forgotten function added. --- addons/explosives/XEH_preInit.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/explosives/XEH_preInit.sqf b/addons/explosives/XEH_preInit.sqf index d8f8dc1216..3747151d16 100644 --- a/addons/explosives/XEH_preInit.sqf +++ b/addons/explosives/XEH_preInit.sqf @@ -25,6 +25,7 @@ PREP(canDetonate); PREP(defuseExplosive); PREP(detonateExplosive); PREP(dialPhone); +PREP(dialingPhone); PREP(handleScrollWheel); From f5a6f6f4047524e081eef354892e72e188fb0906 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Thu, 19 Feb 2015 15:30:01 +0200 Subject: [PATCH 175/211] Fixed various points raised in the PR. --- addons/explosives/functions/fnc_dialPhone.sqf | 6 +++--- addons/explosives/functions/fnc_dialingPhone.sqf | 2 +- addons/explosives/functions/fnc_setSpeedDial.sqf | 4 +--- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/addons/explosives/functions/fnc_dialPhone.sqf b/addons/explosives/functions/fnc_dialPhone.sqf index f694ff3d5f..58d3dab716 100644 --- a/addons/explosives/functions/fnc_dialPhone.sqf +++ b/addons/explosives/functions/fnc_dialPhone.sqf @@ -34,9 +34,9 @@ if (_unit == ace_player) then { _explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); if (!isNull (_explosive)) then { [{ - playSound3D [QUOTE(PATHTOF_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosATL (_this select 1),3.16228,1,75]; + playSound3D [QUOTE(PATHTOF_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosASL (_this select 1),3.16228,1,75]; (_this select 0) setVariable [QGVAR(Dialing), false, true]; - }, [_unit,_explosive], 0.25 * (count _arr - 4), 0] call EFUNC(common,waitAndExecute); - [_explosive,0.25 * (count _arr - 1)] call FUNC(startTimer); + }, [_unit,_explosive select 0], 0.25 * (count _arr - 4), 0] call EFUNC(common,waitAndExecute); + [_explosive select 0,(0.25 * (count _arr - 1)) + (_explosive select 2)] call FUNC(startTimer); }; }; diff --git a/addons/explosives/functions/fnc_dialingPhone.sqf b/addons/explosives/functions/fnc_dialingPhone.sqf index c50f618abe..003fd734c1 100644 --- a/addons/explosives/functions/fnc_dialingPhone.sqf +++ b/addons/explosives/functions/fnc_dialingPhone.sqf @@ -38,7 +38,7 @@ if (_i >= (count _arr + 2)) then { }; if (_i == (count _arr)) then { if (!isNull (_explosive)) then { - playSound3D [QUOTE(PATHTOF_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosATL (_explosive select 0),3.16228,1,75]; + playSound3D [QUOTE(PATHTOF_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosASL (_explosive select 0),3.16228,1,75]; }; }; (_this select 0) set [1, _i + 1]; diff --git a/addons/explosives/functions/fnc_setSpeedDial.sqf b/addons/explosives/functions/fnc_setSpeedDial.sqf index 20a32a1224..adb2e6af03 100644 --- a/addons/explosives/functions/fnc_setSpeedDial.sqf +++ b/addons/explosives/functions/fnc_setSpeedDial.sqf @@ -20,9 +20,7 @@ _speedDial = ace_player getVariable [QGVAR(SpeedDial), []]; if (count _speedDial == 0) exitWith {}; _amount = if((_this select 0))then{1}else{-1}; -GVAR(CurrentSpeedDial) = GVAR(CurrentSpeedDial) + _amount; -GVAR(CurrentSpeedDial) = if(GVAR(CurrentSpeedDial) < 0)then{(count _speedDial)-1}else{GVAR(CurrentSpeedDial)}; -GVAR(CurrentSpeedDial) = if(GVAR(CurrentSpeedDial) >= (count _speedDial))then{0}else{GVAR(CurrentSpeedDial)}; +GVAR(CurrentSpeedDial) = (GVAR(CurrentSpeedDial) + _amount + count _speedDial) mod (count _speedDial); ctrlSetText [1400,(_speedDial select GVAR(CurrentSpeedDial)) select 1]; ctrlSetText [1401,(_speedDial select GVAR(CurrentSpeedDial)) select 0]; From 8e6600d5ec3e9b00b7e987c005a36056704deecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 10:36:59 -0300 Subject: [PATCH 176/211] Tweak distances --- addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf | 4 ++-- addons/interact_menu/functions/fnc_keyUp.sqf | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf index 0c057d7296..923b65e954 100644 --- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf @@ -70,7 +70,7 @@ _recurseFnc = { [0,0,0], _statement, _condition, - 3, //distace + 10, //distace _children, GVAR(uidCounter) ]; @@ -89,7 +89,7 @@ _actions = [[ "Spine3", { true }, { true }, - 5, + 10, _actions, GVAR(uidCounter) ] diff --git a/addons/interact_menu/functions/fnc_keyUp.sqf b/addons/interact_menu/functions/fnc_keyUp.sqf index 8f91b1322d..413fff11ad 100644 --- a/addons/interact_menu/functions/fnc_keyUp.sqf +++ b/addons/interact_menu/functions/fnc_keyUp.sqf @@ -1,4 +1,4 @@ -//fnc_keyUp.sqf +//fnc_keyUpSelfAction.sqf #include "script_component.hpp" GVAR(keyDown) = false; From 3b35d9d109bcab5af3c1c43c19379c30340ccfe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 10:38:09 -0300 Subject: [PATCH 177/211] Make interact sub menus open as circle sectors instead of full circles --- addons/interact_menu/functions/fnc_render.sqf | 6 +- .../functions/fnc_renderMenu.sqf | 72 ++++++++++++------- 2 files changed, 50 insertions(+), 28 deletions(-) diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index ba444c1a7a..a4b699aab3 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -25,15 +25,15 @@ if((count GVAR(toRender)) > 0 && (GVAR(keyDown) || GVAR(keyDownSelfAction))) the GVAR(renderDepth) = 0; _renderTargets = _x; { - [_renderTargets select 0, _x, 0] call FUNC(renderMenu); + [_renderTargets select 0, _x, 0, [270, 360]] call FUNC(renderMenu); } forEach (_renderTargets select 1); }; } forEach GVAR(toRender); } else { // Render only the self action menu _actions = (ACE_player getVariable QGVAR(selfActionData)) select 0; - _pos = (ACE_player modelToWorld (ACE_player selectionPosition "spine3")) vectorAdd GVAR(selfMenuOffset); - [ACE_player, _actions, 0, _pos] call FUNC(renderMenu); + _pos = (ACE_player modelToWorld (ACE_player selectionPosition "spine3")) vectorAdd GVAR(selfMenuOffset) vectorAdd [0,0,0.25]; + [ACE_player, _actions, 0, [270, 360], _pos] call FUNC(renderMenu); }; // player sideChat format["c: %1", count GVAR(toRender)]; diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf index 0337d4e8c9..80f39b91c5 100644 --- a/addons/interact_menu/functions/fnc_renderMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderMenu.sqf @@ -5,11 +5,14 @@ private ["_object", "_actionData", "_distance", "_index", "_pos", "_cursorScreen _object = _this select 0; _actionData = _this select 1; -_distance = _actionData select 5; _index = _this select 2; +_angles = _this select 3; -if((count _this) > 3) then { - _pos = _this select 3; +_distance = _actionData select 5; +EXPLODE_2_PVT(_angles,_centerAngle,_maxAngleSpan); + +if((count _this) > 4) then { + _pos = _this select 4; } else { if(typeName (_actionData select 2) == "ARRAY") then { _pos = _object modelToWorld (_actionData select 2); @@ -20,8 +23,8 @@ if((count _this) > 3) then { _cursorScreenPos = (positionCameraToWorld [0, 0, 0]); if(_cursorScreenPos distance _pos <= _distance) then { _path = []; - if((count _this) > 4) then { - _path = +(_this select 4); + if((count _this) > 5) then { + _path = +(_this select 5); }; _menuDepth = (count GVAR(menuDepthPath)); @@ -37,27 +40,46 @@ if(_cursorScreenPos distance _pos <= _distance) then { _currentRenderDepth = GVAR(renderDepth); GVAR(renderDepth) = GVAR(renderDepth) + 1; if(_index == (GVAR(menuDepthPath) select (GVAR(renderDepth)-1))) then { - _radialOffset = 0; + // Count how many actions are active + private "_numActions"; + _numActions = 0; { - // if(_index != (GVAR(menuDepthPath) select (GVAR(renderDepth)))) then { - this = _object; - _target = _object; - _player = ACE_player; - _active = [_object, ACE_player] call (_x select 4); - // diag_log text format["_active: %1: %2", (_x select 0), _active]; - if(_active) then { - _offset = [GVAR(vecLineMap), (270*(GVAR(renderDepth)%2))-(_radialOffset*45)] call FUNC(rotateVectLine); - _mod = 0.1*_distance; - _newPos = [ - (_pos select 0) + ((_offset select 0)*_mod), - (_pos select 1) + ((_offset select 1)*_mod), - (_pos select 2) + ((_offset select 2)*_mod) - ]; - // drawLine3D [_pos, _newPos, [1,0,0,1]]; - [_object, _x, _forEachIndex, _newPos, _path] call FUNC(renderMenu); - _radialOffset = _radialOffset + 1; - }; - // }; + this = _object; + _target = _object; + _player = ACE_player; + _active = [_object, ACE_player] call (_x select 4); + if(_active) then { + _numActions = _numActions + 1; + }; + } forEach (_actionData select 6); + systemChat format ["_numActions: %1", _numActions]; + + private "_angleSpan"; + _angleSpan = _maxAngleSpan min (35 * (_numActions - 1)); + + private "_angle"; + _angle = _centerAngle - _angleSpan / 2; + { + // if(_index != (GVAR(menuDepthPath) select (GVAR(renderDepth)))) then { + this = _object; + _target = _object; + _player = ACE_player; + _active = [_object, ACE_player] call (_x select 4); + // diag_log text format["_active: %1: %2", (_x select 0), _active]; + if(_active) then { + systemChat format ["_angle: %1", _angle]; + _offset = [GVAR(vecLineMap), _angle] call FUNC(rotateVectLine); + _mod = 0.4 max (0.15 * (_cursorScreenPos distance _pos)); //0.5;//0.1*_distance; + _newPos = [ + (_pos select 0) + ((_offset select 0)*_mod), + (_pos select 1) + ((_offset select 1)*_mod), + (_pos select 2) + ((_offset select 2)*_mod) + ]; + // drawLine3D [_pos, _newPos, [1,0,0,1]]; + [_object, _x, _forEachIndex, [_angle, 180], _newPos, _path] call FUNC(renderMenu); + _angle = _angle + _angleSpan / (_numActions); + }; + // }; } forEach (_actionData select 6); }; GVAR(renderDepth) = GVAR(renderDepth) - 1; From d05531566120e4705d72c852fc33936f88ff8a3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 10:49:36 -0300 Subject: [PATCH 178/211] interact_menu: tab to space --- .../functions/fnc_compileMenu.sqf | 4 +- .../interact_menu/functions/fnc_keyDown.sqf | 4 +- .../functions/fnc_keyDownSelfAction.sqf | 8 +- addons/interact_menu/functions/fnc_keyUp.sqf | 4 +- .../functions/fnc_keyUpSelfAction.sqf | 4 +- addons/interact_menu/functions/fnc_probe.sqf | 2 +- addons/interact_menu/functions/fnc_render.sqf | 174 +++++++++--------- .../functions/fnc_renderIcon.sqf | 20 +- .../functions/fnc_renderMenu.sqf | 125 +++++++------ 9 files changed, 172 insertions(+), 173 deletions(-) diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf index 1b5e803ad6..647a78c7b2 100644 --- a/addons/interact_menu/functions/fnc_compileMenu.sqf +++ b/addons/interact_menu/functions/fnc_compileMenu.sqf @@ -77,7 +77,7 @@ _recurseFnc = { _children, GVAR(uidCounter) ]; - GVAR(uidCounter) = GVAR(uidCounter) + 1; + GVAR(uidCounter) = GVAR(uidCounter) + 1; _actions pushBack _entry; }; }; @@ -97,6 +97,6 @@ _actions = [[ GVAR(uidCounter) ] ]; -GVAR(uidCounter) = GVAR(uidCounter) + 1; +GVAR(uidCounter) = GVAR(uidCounter) + 1; _object setVariable [QUOTE(GVAR(actionData)), _actions]; \ No newline at end of file diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index e18ec69ae8..fdd39e7dc8 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -2,7 +2,7 @@ #include "script_component.hpp" if(!GVAR(keyDown)) then { - GVAR(keyDown) = true; - GVAR(keyDownTime) = diag_tickTime; + GVAR(keyDown) = true; + GVAR(keyDownTime) = diag_tickTime; }; true diff --git a/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf b/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf index b44fed6457..8e86cfd430 100644 --- a/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf @@ -2,10 +2,10 @@ #include "script_component.hpp" if(!GVAR(keyDownSelfAction)) then { - GVAR(keyDownSelfAction) = true; - GVAR(keyDown) = false; - GVAR(keyDownTime) = diag_tickTime; + GVAR(keyDownSelfAction) = true; + GVAR(keyDown) = false; + GVAR(keyDownTime) = diag_tickTime; - GVAR(selfMenuOffset) = [sin getDir ACE_player, cos getDir ACE_player, 0] vectorMultiply 2; + GVAR(selfMenuOffset) = [sin getDir ACE_player, cos getDir ACE_player, 0] vectorMultiply 2; }; true diff --git a/addons/interact_menu/functions/fnc_keyUp.sqf b/addons/interact_menu/functions/fnc_keyUp.sqf index 413fff11ad..922a5dedce 100644 --- a/addons/interact_menu/functions/fnc_keyUp.sqf +++ b/addons/interact_menu/functions/fnc_keyUp.sqf @@ -3,10 +3,10 @@ GVAR(keyDown) = false; if(GVAR(actionSelected)) then { - this = GVAR(selectedTarget); + this = GVAR(selectedTarget); _player = ACE_Player; _target = GVAR(selectedTarget); - [GVAR(selectedTarget), player] call GVAR(selectedAction); + [GVAR(selectedTarget), player] call GVAR(selectedAction); }; GVAR(expanded) = false; GVAR(lastPath) = []; diff --git a/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf b/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf index 0029e3bd05..b0023300bf 100644 --- a/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf @@ -3,10 +3,10 @@ GVAR(keyDownSelfAction) = false; if(GVAR(actionSelected)) then { - this = GVAR(selectedTarget); + this = GVAR(selectedTarget); _player = ACE_Player; _target = GVAR(selectedTarget); - [GVAR(selectedTarget), player] call GVAR(selectedAction); + [GVAR(selectedTarget), player] call GVAR(selectedAction); }; GVAR(expanded) = false; GVAR(lastPath) = []; diff --git a/addons/interact_menu/functions/fnc_probe.sqf b/addons/interact_menu/functions/fnc_probe.sqf index 1f178180be..c7386c9bc6 100644 --- a/addons/interact_menu/functions/fnc_probe.sqf +++ b/addons/interact_menu/functions/fnc_probe.sqf @@ -9,7 +9,7 @@ if(!GVAR(keyDown)) then { { _actionObject = _x; _actionData = _actionObject getVariable [QUOTE(GVAR(actionData)), []]; - + if((count _actionData) > 0) then { _renderData = []; { diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index a4b699aab3..a6795e50a0 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -7,107 +7,107 @@ _cursorPos1 = positionCameraToWorld [0, 0, 0]; _cursorPos2 = positionCameraToWorld [0, 0, 2]; GVAR(currentOptions) = []; if((count GVAR(toRender)) > 0 && (GVAR(keyDown) || GVAR(keyDownSelfAction))) then { - if((count GVAR(vecLineMap)) == 0 || ((count GVAR(menuDepthPath)) > 0 && (getPosASL player) distance GVAR(lastPos) > 0.01)) then { - GVAR(lastPos) = getPosASL player; - _cursorVec = [_cursorPos2, _cursorPos1] call BIS_fnc_vectorFromXtoY; - _p1 = [0,0,0]; - _p2 = +_cursorVec; - _p = (_cursorVec call CBA_fnc_vect2polar); - _v = [(_p select 0), (_p select 1), (_p select 2)+90] call CBA_fnc_polar2vect; - _cp = [_cursorVec, _v] call BIS_fnc_crossProduct; + if((count GVAR(vecLineMap)) == 0 || ((count GVAR(menuDepthPath)) > 0 && (getPosASL player) distance GVAR(lastPos) > 0.01)) then { + GVAR(lastPos) = getPosASL player; + _cursorVec = [_cursorPos2, _cursorPos1] call BIS_fnc_vectorFromXtoY; + _p1 = [0,0,0]; + _p2 = +_cursorVec; + _p = (_cursorVec call CBA_fnc_vect2polar); + _v = [(_p select 0), (_p select 1), (_p select 2)+90] call CBA_fnc_polar2vect; + _cp = [_cursorVec, _v] call BIS_fnc_crossProduct; - GVAR(vecLineMap) = [_cp, _p1, _p2] call FUNC(rotateVectLineGetMap); - }; - if (GVAR(keyDown)) then { - // Render all nearby interaction menus - { - if(!(_forEachIndex in GVAR(filter))) then { - GVAR(renderDepth) = 0; - _renderTargets = _x; - { - [_renderTargets select 0, _x, 0, [270, 360]] call FUNC(renderMenu); - } forEach (_renderTargets select 1); - }; - } forEach GVAR(toRender); - } else { - // Render only the self action menu - _actions = (ACE_player getVariable QGVAR(selfActionData)) select 0; - _pos = (ACE_player modelToWorld (ACE_player selectionPosition "spine3")) vectorAdd GVAR(selfMenuOffset) vectorAdd [0,0,0.25]; - [ACE_player, _actions, 0, [270, 360], _pos] call FUNC(renderMenu); - }; + GVAR(vecLineMap) = [_cp, _p1, _p2] call FUNC(rotateVectLineGetMap); + }; + if (GVAR(keyDown)) then { + // Render all nearby interaction menus + { + if(!(_forEachIndex in GVAR(filter))) then { + GVAR(renderDepth) = 0; + _renderTargets = _x; + { + [_renderTargets select 0, _x, 0, [270, 360]] call FUNC(renderMenu); + } forEach (_renderTargets select 1); + }; + } forEach GVAR(toRender); + } else { + // Render only the self action menu + _actions = (ACE_player getVariable QGVAR(selfActionData)) select 0; + _pos = (ACE_player modelToWorld (ACE_player selectionPosition "spine3")) vectorAdd GVAR(selfMenuOffset) vectorAdd [0,0,0.25]; + [ACE_player, _actions, 0, [270, 360], _pos] call FUNC(renderMenu); + }; - // player sideChat format["c: %1", count GVAR(toRender)]; + // player sideChat format["c: %1", count GVAR(toRender)]; }; if(GVAR(keyDown) || GVAR(keyDownSelfAction)) then { - _cursorScreenPos = worldToScreen _cursorPos2; - _closestDistance = 1000000; - _closestSelection = -1; - { - _pos = _x select 1; - _sPos = worldToScreen _pos; - if(count _sPos > 0) then { - _disSq = (((_cursorScreenPos select 0) - (_sPos select 0))^2 + ((_cursorScreenPos select 1) - (_sPos select 1))^2); - if(_disSq < 0.0125 && _disSq < _closestDistance) then { - _closestDistance = _disSq; - _closestSelection = _forEachIndex; - }; - }; - } forEach GVAR(currentOptions); + _cursorScreenPos = worldToScreen _cursorPos2; + _closestDistance = 1000000; + _closestSelection = -1; + { + _pos = _x select 1; + _sPos = worldToScreen _pos; + if(count _sPos > 0) then { + _disSq = (((_cursorScreenPos select 0) - (_sPos select 0))^2 + ((_cursorScreenPos select 1) - (_sPos select 1))^2); + if(_disSq < 0.0125 && _disSq < _closestDistance) then { + _closestDistance = _disSq; + _closestSelection = _forEachIndex; + }; + }; + } forEach GVAR(currentOptions); - if(_closestSelection != -1) then { + if(_closestSelection != -1) then { - _closest = GVAR(currentOptions) select _closestSelection; + _closest = GVAR(currentOptions) select _closestSelection; - _pos = _closest select 1; - _cTime = diag_tickTime; - _delta = _cTime - GVAR(lastTime); - GVAR(lastTime) = _cTime; - GVAR(rotationAngle) = GVAR(rotationAngle) + (180*_delta); - if(GVAR(rotationAngle) > 360) then { - GVAR(rotationAngle) = GVAR(rotationAngle) - 360; - }; - drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\selectover_ca.paa", [1,0,0,.75], _pos, 0.6*SafeZoneW, 0.6*SafeZoneW, GVAR(rotationAngle), "", 0.5, 0.025, "TahomaB"]; - _foundTarget = true; - GVAR(actionSelected) = true; - GVAR(selectedTarget) = (_closest select 0) select 0; - GVAR(selectedAction) = ((_closest select 0) select 1) select 3; - _misMatch = false; - _hoverPath = (_closest select 2); - if((count GVAR(lastPath)) != (count _hoverPath)) then { - _misMatch = true; - } else { - { - if(_x != (_hoverPath select _forEachIndex)) exitWith { - _misMatch = true; - }; - } forEach GVAR(lastPath); - }; + _pos = _closest select 1; + _cTime = diag_tickTime; + _delta = _cTime - GVAR(lastTime); + GVAR(lastTime) = _cTime; + GVAR(rotationAngle) = GVAR(rotationAngle) + (180*_delta); + if(GVAR(rotationAngle) > 360) then { + GVAR(rotationAngle) = GVAR(rotationAngle) - 360; + }; + drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\selectover_ca.paa", [1,0,0,.75], _pos, 0.6*SafeZoneW, 0.6*SafeZoneW, GVAR(rotationAngle), "", 0.5, 0.025, "TahomaB"]; + _foundTarget = true; + GVAR(actionSelected) = true; + GVAR(selectedTarget) = (_closest select 0) select 0; + GVAR(selectedAction) = ((_closest select 0) select 1) select 3; + _misMatch = false; + _hoverPath = (_closest select 2); + if((count GVAR(lastPath)) != (count _hoverPath)) then { + _misMatch = true; + } else { + { + if(_x != (_hoverPath select _forEachIndex)) exitWith { + _misMatch = true; + }; + } forEach GVAR(lastPath); + }; - if(_misMatch) then { - GVAR(lastPath) = _hoverPath; - GVAR(startHoverTime) = diag_tickTime; - GVAR(expanded) = false; - } else { - if(!GVAR(expanded) && diag_tickTime-GVAR(startHoverTime) > 0.25) then { - GVAR(expanded) = true; - GVAR(menuDepthPath) = +GVAR(lastPath); - }; - }; - }; - drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\selected_ca.paa", [1,0,0,1], _cursorPos2, 1, 1, 0, "", 0.5, 0.025, "TahomaB"]; + if(_misMatch) then { + GVAR(lastPath) = _hoverPath; + GVAR(startHoverTime) = diag_tickTime; + GVAR(expanded) = false; + } else { + if(!GVAR(expanded) && diag_tickTime-GVAR(startHoverTime) > 0.25) then { + GVAR(expanded) = true; + GVAR(menuDepthPath) = +GVAR(lastPath); + }; + }; + }; + drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\selected_ca.paa", [1,0,0,1], _cursorPos2, 1, 1, 0, "", 0.5, 0.025, "TahomaB"]; }; if(!_foundTarget && GVAR(actionSelected)) then { - GVAR(actionSelected) = false; - GVAR(expanded) = false; - GVAR(lastPath) = []; - if(!GVAR(keyDown)) then { - GVAR(vecLineMap) = []; - }; + GVAR(actionSelected) = false; + GVAR(expanded) = false; + GVAR(lastPath) = []; + if(!GVAR(keyDown)) then { + GVAR(vecLineMap) = []; + }; }; for "_i" from GVAR(iconCount) to (count GVAR(iconCtrls))-1 do { - ctrlDelete (GVAR(iconCtrls) select _i); + ctrlDelete (GVAR(iconCtrls) select _i); }; GVAR(iconCtrls) resize GVAR(iconCount); GVAR(iconCount) = 0; diff --git a/addons/interact_menu/functions/fnc_renderIcon.sqf b/addons/interact_menu/functions/fnc_renderIcon.sqf index 30821ffdac..4aa5e29aff 100644 --- a/addons/interact_menu/functions/fnc_renderIcon.sqf +++ b/addons/interact_menu/functions/fnc_renderIcon.sqf @@ -9,18 +9,18 @@ _icon = _this select 6; _sPos = worldToScreen _pos; // _sPos = _pos; if(count _sPos > 0) then { - // player sideChat format["render!"]; - if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then { - GVAR(iconCtrls) pushBack ((findDisplay 46) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]); - }; - _ctrl = GVAR(iconCtrls) select GVAR(iconCount); - GVAR(iconCount) = GVAR(iconCount) + 1; + // player sideChat format["render!"]; + if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then { + GVAR(iconCtrls) pushBack ((findDisplay 46) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]); + }; + _ctrl = GVAR(iconCtrls) select GVAR(iconCount); + GVAR(iconCount) = GVAR(iconCount) + 1; if(_icon == "") then { _icon = DEFAULT_ICON; }; _text = format ["%3", _icon, _color, _text]; - _ctrl ctrlSetStructuredText (parseText _text); - _ctrl ctrlSetPosition [(_sPos select 0)-(0.011*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.4*SafeZoneW, 0.025*SafeZoneW]; - // _ctrl ctrlSetBackgroundColor [1,0,0,1]; - _ctrl ctrlCommit 0; + _ctrl ctrlSetStructuredText (parseText _text); + _ctrl ctrlSetPosition [(_sPos select 0)-(0.011*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.4*SafeZoneW, 0.025*SafeZoneW]; + // _ctrl ctrlSetBackgroundColor [1,0,0,1]; + _ctrl ctrlCommit 0; }; diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf index 3510037b0b..1072a53906 100644 --- a/addons/interact_menu/functions/fnc_renderMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderMenu.sqf @@ -12,75 +12,74 @@ _distance = _actionData select 5; EXPLODE_2_PVT(_angles,_centerAngle,_maxAngleSpan); if((count _this) > 4) then { - _pos = _this select 4; + _pos = _this select 4; } else { - if(typeName (_actionData select 2) == "ARRAY") then { - _pos = _object modelToWorld (_actionData select 2); - } else { - _pos = _object modelToWorld (_object selectionPosition (_actionData select 2)); - }; + if(typeName (_actionData select 2) == "ARRAY") then { + _pos = _object modelToWorld (_actionData select 2); + } else { + _pos = _object modelToWorld (_object selectionPosition (_actionData select 2)); + }; }; _cursorScreenPos = (positionCameraToWorld [0, 0, 0]); if(_cursorScreenPos distance _pos <= _distance) then { - _path = []; - if((count _this) > 5) then { - _path = +(_this select 5); - }; - _menuDepth = (count GVAR(menuDepthPath)); + _path = []; + if((count _this) > 5) then { + _path = +(_this select 5); + }; + _menuDepth = (count GVAR(menuDepthPath)); - _color = "#FFFFFFFF"; // ARGB Color (First Hex Pair is transparancy) - if(_menuDepth > 0 && _index != (GVAR(menuDepthPath) select (GVAR(renderDepth)))) then { + // ARGB Color (First Hex Pair is transparancy) + _color = "#FFFFFFFF"; + if(_menuDepth > 0 && _index != (GVAR(menuDepthPath) select (GVAR(renderDepth)))) then { _color = format ["#%1FFFFFF", [255 * (((GVAR(renderDepth)/_menuDepth)) max 0.25)] call EFUNC(common,toHex)]; - }; - _path set[(count _path), _index]; - // player sideChat format["r: %1", _actionData select 2]; - [_actionData select 0, _color, _pos, 1, 1, 0, _actionData select 1, 0.5, 0.025, "TahomaB"] call FUNC(renderIcon); - GVAR(currentOptions) set[(count GVAR(currentOptions)), [_this, _pos, _path]]; - _currentRenderDepth = -1; - _currentRenderDepth = GVAR(renderDepth); - GVAR(renderDepth) = GVAR(renderDepth) + 1; - if(_index == (GVAR(menuDepthPath) select (GVAR(renderDepth)-1))) then { - // Count how many actions are active - private "_numActions"; - _numActions = 0; - { - this = _object; - _target = _object; - _player = ACE_player; - _active = [_object, ACE_player] call (_x select 4); - if(_active) then { - _numActions = _numActions + 1; - }; - } forEach (_actionData select 6); - systemChat format ["_numActions: %1", _numActions]; + }; + _path set[(count _path), _index]; + // player sideChat format["r: %1", _actionData select 2]; + [_actionData select 0, _color, _pos, 1, 1, 0, _actionData select 1, 0.5, 0.025, "TahomaB"] call FUNC(renderIcon); + GVAR(currentOptions) set[(count GVAR(currentOptions)), [_this, _pos, _path]]; + _currentRenderDepth = -1; + _currentRenderDepth = GVAR(renderDepth); + GVAR(renderDepth) = GVAR(renderDepth) + 1; + if(_index == (GVAR(menuDepthPath) select (GVAR(renderDepth)-1))) then { + // Count how many actions are active + private "_numActions"; + _numActions = 0; + { + this = _object; + _target = _object; + _player = ACE_player; + _active = [_object, ACE_player] call (_x select 4); + if(_active) then { + _numActions = _numActions + 1; + }; + } forEach (_actionData select 6); + systemChat format ["_numActions: %1", _numActions]; - private "_angleSpan"; - _angleSpan = _maxAngleSpan min (35 * (_numActions - 1)); + private "_angleSpan"; + _angleSpan = _maxAngleSpan min (35 * (_numActions - 1)); - private "_angle"; - _angle = _centerAngle - _angleSpan / 2; - { - // if(_index != (GVAR(menuDepthPath) select (GVAR(renderDepth)))) then { - this = _object; - _target = _object; - _player = ACE_player; - _active = [_object, ACE_player] call (_x select 4); - // diag_log text format["_active: %1: %2", (_x select 0), _active]; - if(_active) then { - systemChat format ["_angle: %1", _angle]; - _offset = [GVAR(vecLineMap), _angle] call FUNC(rotateVectLine); - _mod = 0.4 max (0.15 * (_cursorScreenPos distance _pos)); //0.5;//0.1*_distance; - _newPos = [ - (_pos select 0) + ((_offset select 0)*_mod), - (_pos select 1) + ((_offset select 1)*_mod), - (_pos select 2) + ((_offset select 2)*_mod) - ]; - // drawLine3D [_pos, _newPos, [1,0,0,1]]; - [_object, _x, _forEachIndex, [_angle, 180], _newPos, _path] call FUNC(renderMenu); - _angle = _angle + _angleSpan / (_numActions); - }; - // }; - } forEach (_actionData select 6); - }; - GVAR(renderDepth) = GVAR(renderDepth) - 1; + private "_angle"; + _angle = _centerAngle - _angleSpan / 2; + { + this = _object; + _target = _object; + _player = ACE_player; + _active = [_object, ACE_player] call (_x select 4); + // diag_log text format["_active: %1: %2", (_x select 0), _active]; + if(_active) then { + systemChat format ["_angle: %1", _angle]; + _offset = [GVAR(vecLineMap), _angle] call FUNC(rotateVectLine); + _mod = 0.4 max (0.15 * (_cursorScreenPos distance _pos)); //0.5;//0.1*_distance; + _newPos = [ + (_pos select 0) + ((_offset select 0)*_mod), + (_pos select 1) + ((_offset select 1)*_mod), + (_pos select 2) + ((_offset select 2)*_mod) + ]; + // drawLine3D [_pos, _newPos, [1,0,0,1]]; + [_object, _x, _forEachIndex, [_angle, 180], _newPos, _path] call FUNC(renderMenu); + _angle = _angle + _angleSpan / (_numActions); + }; + } forEach (_actionData select 6); + }; + GVAR(renderDepth) = GVAR(renderDepth) - 1; }; From 96404bc42a0bacf839cf73bcbc15ac056ae0f517 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Thu, 19 Feb 2015 15:59:14 +0200 Subject: [PATCH 179/211] Fixed isNull check not working. Fixed audio not being found. --- .../functions/fnc_addCellphoneIED.sqf | 2 +- addons/explosives/functions/fnc_dialPhone.sqf | 6 +- .../explosives/functions/fnc_dialingPhone.sqf | 10 +- .../functions/fnc_getSpeedDialExplosive.sqf | 13 +- .../functions/fnc_place_Approve.sqf | 133 +++++++++--------- 5 files changed, 81 insertions(+), 83 deletions(-) diff --git a/addons/explosives/functions/fnc_addCellphoneIED.sqf b/addons/explosives/functions/fnc_addCellphoneIED.sqf index 49bec07f1b..84cb57cf4e 100644 --- a/addons/explosives/functions/fnc_addCellphoneIED.sqf +++ b/addons/explosives/functions/fnc_addCellphoneIED.sqf @@ -38,7 +38,7 @@ while {!_codeSet} do { _code = "0" + _code; _count = _count - 1; }; - _codeSet = (isNull [objNull,_code] call FUNC(getSpeedDialExplosive)); + _codeSet = (count ([_code] call FUNC(getSpeedDialExplosive))) == 0; }; if (isNil QGVAR(CellphoneIEDs)) then { GVAR(CellphoneIEDs) = []; diff --git a/addons/explosives/functions/fnc_dialPhone.sqf b/addons/explosives/functions/fnc_dialPhone.sqf index 58d3dab716..41b2a4a4f7 100644 --- a/addons/explosives/functions/fnc_dialPhone.sqf +++ b/addons/explosives/functions/fnc_dialPhone.sqf @@ -31,10 +31,10 @@ if (_unit == ace_player) then { [FUNC(dialingPhone), 0.25, [_unit,4,_arr,_code]] call CALLSTACK(CBA_fnc_addPerFrameHandler); } else { private ["_explosive"]; - _explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); - if (!isNull (_explosive)) then { + _explosive = [_code] call FUNC(getSpeedDialExplosive); + if ((count _explosive) > 0) then { [{ - playSound3D [QUOTE(PATHTOF_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosASL (_this select 1),3.16228,1,75]; + playSound3D [QUOTE(PATHTO_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosASL (_this select 1),3.16228,1,75]; (_this select 0) setVariable [QGVAR(Dialing), false, true]; }, [_unit,_explosive select 0], 0.25 * (count _arr - 4), 0] call EFUNC(common,waitAndExecute); [_explosive select 0,(0.25 * (count _arr - 1)) + (_explosive select 2)] call FUNC(startTimer); diff --git a/addons/explosives/functions/fnc_dialingPhone.sqf b/addons/explosives/functions/fnc_dialingPhone.sqf index 003fd734c1..d3c429c9fc 100644 --- a/addons/explosives/functions/fnc_dialingPhone.sqf +++ b/addons/explosives/functions/fnc_dialingPhone.sqf @@ -19,16 +19,16 @@ #include "script_component.hpp" EXPLODE_4_PVT(_this select 0,_unit,_i,_arr,_code); if ((_i mod 4) == 0) then { - playSound3D [QUOTE(PATHTOF_R(Data\Audio\DialTone.wss)), objNull, false, (_unit ModelToWorld [0,0.2,2]), 15,1,2.5]; + playSound3D [QUOTE(PATHTO_R(Data\Audio\DialTone.wss)), objNull, false, (_unit ModelToWorld [0,0.2,2]), 15,1,2.5]; }; ctrlSetText [1400,format["Calling%1",_arr select (_i - 4)]]; private "_explosive"; -_explosive = [_unit, _code] call FUNC(getSpeedDialExplosive); +_explosive = [_code] call FUNC(getSpeedDialExplosive); if (_i >= (count _arr + 2)) then { [_this select 1] call CALLSTACK(cba_fnc_removePerFrameHandler); - if (!isNull (_explosive)) then { + if ((count _explosive) > 0) then { [_unit, -1, [_explosive select 0, _explosive select 2]] call FUNC(detonateExplosive); }; _unit setVariable [QGVAR(Dialing), false, true]; @@ -37,8 +37,8 @@ if (_i >= (count _arr + 2)) then { }; }; if (_i == (count _arr)) then { - if (!isNull (_explosive)) then { - playSound3D [QUOTE(PATHTOF_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosASL (_explosive select 0),3.16228,1,75]; + if ((count _explosive) > 0) then { + playSound3D [QUOTE(PATHTO_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosASL (_explosive select 0),3.16228,1,75]; }; }; (_this select 0) set [1, _i + 1]; diff --git a/addons/explosives/functions/fnc_getSpeedDialExplosive.sqf b/addons/explosives/functions/fnc_getSpeedDialExplosive.sqf index c00f15b5ed..d6d5b57b3b 100644 --- a/addons/explosives/functions/fnc_getSpeedDialExplosive.sqf +++ b/addons/explosives/functions/fnc_getSpeedDialExplosive.sqf @@ -1,24 +1,23 @@ /* * Author: Garth 'L-H' de Wet - * Gets the explosive object or objNull from the speed dial entry. + * Gets the explosive from the speed dial entry. * * Arguments: - * 0: Unit - * 1: Speed dial entry + * 0: Speed dial entry * * Return Value: * Associated explosive (or ObjNull) * * Example: - * [ace_player, "2113"] call ace_explosives_fnc_getSpeedDialExplosive; + * ["2113"] call ace_explosives_fnc_getSpeedDialExplosive; * * Public: Yes */ #include "script_component.hpp" -EXPLODE_2_PVT(_this,_unit,_code); +EXPLODE_1_PVT(_this,_code); private ["_explosive"]; -if (isNil QGVAR(CellphoneIEDs)) exitWith {objNull}; -_explosive = objNull; +if (isNil QGVAR(CellphoneIEDs)) exitWith {[]}; +_explosive = []; { if ((_x select 1) == _code) exitWith { _explosive = _x; diff --git a/addons/explosives/functions/fnc_place_Approve.sqf b/addons/explosives/functions/fnc_place_Approve.sqf index 97528cb8f6..77cfbb92a1 100644 --- a/addons/explosives/functions/fnc_place_Approve.sqf +++ b/addons/explosives/functions/fnc_place_Approve.sqf @@ -28,79 +28,78 @@ _player = ACE_player; [_player, "DefaultAction", _player getVariable [QGVAR(Place), -1]] call EFUNC(Common,removeActionEventHandler); [_player, "MenuBack", _player getVariable [QGVAR(Cancel), -1]] call EFUNC(Common,removeActionEventHandler); call EFUNC(interaction,hideMouseHint); -if ((_setup getVariable [QGVAR(Class), ""]) != "") then { - _dir = (getDir _setup); - if (_dir > 180) then { - _dir = _dir - 180; - } else { - _dir = 180 + _dir; - }; - _setup setVariable [QGVAR(Direction), _dir]; - _player setVariable [QGVAR(PlantingExplosive), true]; - _setup addEventHandler ["EpeContactStart", { - if (!((_this select 0) getVariable [QGVAR(Handled), false])) then { - private ["_player", "_pos", "_attachTo"]; +if ((_setup getVariable [QGVAR(Class), ""]) == "") exitWith { + deleteVehicle _setup; +}; +_dir = (getDir _setup); +if (_dir > 180) then { + _dir = _dir - 180; +} else { + _dir = 180 + _dir; +}; +_setup setVariable [QGVAR(Direction), _dir]; +_player setVariable [QGVAR(PlantingExplosive), true]; +_setup addEventHandler ["EpeContactStart", { + if (!((_this select 0) getVariable [QGVAR(Handled), false])) then { + private ["_player", "_pos", "_attachTo"]; + _player = ACE_player; + _player setVariable [QGVAR(PlantingExplosive), false]; + _pos = getPosATL (_this select 0); + (_this select 0) enableSimulationGlobal false; + if (surfaceIsWater _pos) then { + _pos = getPosASL (_this select 0); + (_this select 0) setPosASL _pos; + }else{ + (_this select 0) setPosATL _pos; + }; + (_this select 0) setVariable [QGVAR(Handled), true]; + _attachTo = objNull; + if (!isNull (_this select 1) && {(_this select 1) isKindOf "AllVehicles"}) then { + _attachTo = (_this select 1); + }; + [(_this select 0),_attachTo, _pos] spawn { // TODO: Change to scheduled delay execution + private ["_mag", "_setup", "_dir", "_player"]; + _setup = _this select 0; _player = ACE_player; - _pos = getPosATL (_this select 0); - (_this select 0) enableSimulationGlobal false; - if (surfaceIsWater _pos) then { - _pos = getPosASL (_this select 0); - (_this select 0) setPosASL _pos; - }else{ - (_this select 0) setPosATL _pos; - }; - (_this select 0) setVariable [QGVAR(Handled), true]; - _player setVariable [QGVAR(PlantingExplosive), false]; - _attachTo = objNull; - if (!isNull (_this select 1) && {(_this select 1) isKindOf "AllVehicles"}) then { - _attachTo = (_this select 1); - }; - [(_this select 0),_attachTo, _pos] spawn { // TODO: Change to scheduled delay execution - private ["_mag", "_setup", "_dir", "_player"]; - _setup = _this select 0; - _player = ACE_player; - _mag = _setup getVariable [QGVAR(Class), ""]; - _dir = _setup getVariable [QGVAR(Direction), 0]; + _mag = _setup getVariable [QGVAR(Class), ""]; + _dir = _setup getVariable [QGVAR(Direction), 0]; - sleep getNumber(ConfigFile >> "CfgMagazines" >> _mag >> "ACE_DelayTime"); - _explosive = [_player, _this select 2, _dir, _mag, _setup getVariable QGVAR(Trigger), - [_setup getVariable QGVAR(Timer)], isNull (_this select 1)] call FUNC(placeExplosive); - deleteVehicle _setup; - if (!isNull(_explosive)) then { - _player RemoveMagazine _mag; - if (!isNull (_this select 1)) then { - _explosive attachTo [(_this select 1)]; - _dir = _dir - (getDir (_this select 1)); - [[_explosive, _dir, 0], QFUNC(setPosition)] call EFUNC(common,execRemoteFnc); - }; + sleep getNumber(ConfigFile >> "CfgMagazines" >> _mag >> "ACE_DelayTime"); + _explosive = [_player, _this select 2, _dir, _mag, _setup getVariable QGVAR(Trigger), + [_setup getVariable QGVAR(Timer)], isNull (_this select 1)] call FUNC(placeExplosive); + deleteVehicle _setup; + if (!isNull(_explosive)) then { + _player RemoveMagazine _mag; + if (!isNull (_this select 1)) then { + _explosive attachTo [(_this select 1)]; + _dir = _dir - (getDir (_this select 1)); + [[_explosive, _dir, 0], QFUNC(setPosition)] call EFUNC(common,execRemoteFnc); }; }; }; - }]; - _setup enableSimulationGlobal true; - _player playActionNow "MedicOther"; - [_setup] spawn { // TODO: Change to scheduled delay execution - private ["_setup", "_player"]; - _setup = _this select 0; - _player = ACE_player; - sleep 5; + }; +}]; +_setup enableSimulationGlobal true; +_player playActionNow "MedicOther"; +[_setup] spawn { // TODO: Change to scheduled delay execution + private ["_setup", "_player"]; + _setup = _this select 0; + _player = ACE_player; + sleep 5; + _player setVariable [QGVAR(PlantingExplosive), false]; + if (!isNull _setup) then { + private ["_mag", "_dir", "_delayTime"]; + _mag = _setup getVariable [QGVAR(Class), ""]; + _dir = _setup getVariable [QGVAR(Direction), 0]; + _delayTime = (getNumber(ConfigFile >> "CfgMagazines" >> _mag >> "ACE_DelayTime")) - 5; + if (_delayTime > 0) then { + sleep _delayTime; + }; if (!isNull _setup) then { - private ["_mag", "_dir", "_delayTime"]; - _mag = _setup getVariable [QGVAR(Class), ""]; - _dir = _setup getVariable [QGVAR(Direction), 0]; - _delayTime = (getNumber(ConfigFile >> "CfgMagazines" >> _mag >> "ACE_DelayTime")) - 5; - if (_delayTime > 0) then { - sleep _delayTime; - }; - if (!isNull _setup) then { - [_player, GetPosATL _setup, _dir, _mag, _setup getVariable QGVAR(Trigger), - [_setup getVariable QGVAR(Timer)], true] call FUNC(placeExplosive); - deleteVehicle _setup; - _player RemoveMagazine _mag; - _player setVariable [QGVAR(PlantingExplosive), false]; - }; + [_player, GetPosATL _setup, _dir, _mag, _setup getVariable QGVAR(Trigger), + [_setup getVariable QGVAR(Timer)], true] call FUNC(placeExplosive); + deleteVehicle _setup; + _player RemoveMagazine _mag; }; }; -}else{ - deleteVehicle _setup; }; From db5e8bcc3455a336a5072584a448c7f013538079 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 12:01:47 -0300 Subject: [PATCH 180/211] Modify the opacity of icons along with that of the text --- addons/interact_menu/functions/fnc_renderIcon.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/interact_menu/functions/fnc_renderIcon.sqf b/addons/interact_menu/functions/fnc_renderIcon.sqf index 4aa5e29aff..ad381f691d 100644 --- a/addons/interact_menu/functions/fnc_renderIcon.sqf +++ b/addons/interact_menu/functions/fnc_renderIcon.sqf @@ -6,6 +6,7 @@ _text = _this select 0; _color = _this select 1; _pos = _this select 2; _icon = _this select 6; + _sPos = worldToScreen _pos; // _sPos = _pos; if(count _sPos > 0) then { @@ -18,7 +19,7 @@ if(count _sPos > 0) then { if(_icon == "") then { _icon = DEFAULT_ICON; }; - _text = format ["%3", _icon, _color, _text]; + _text = format ["%4", _icon, _color, _color, _text]; _ctrl ctrlSetStructuredText (parseText _text); _ctrl ctrlSetPosition [(_sPos select 0)-(0.011*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.4*SafeZoneW, 0.025*SafeZoneW]; // _ctrl ctrlSetBackgroundColor [1,0,0,1]; From a8797fe45adf4b5a8b30c98a8128d6f440e98a8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 12:02:48 -0300 Subject: [PATCH 181/211] Fix for the angular spacing of submenus --- addons/interact_menu/functions/fnc_renderMenu.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf index 1072a53906..532762d41b 100644 --- a/addons/interact_menu/functions/fnc_renderMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderMenu.sqf @@ -75,9 +75,9 @@ if(_cursorScreenPos distance _pos <= _distance) then { (_pos select 1) + ((_offset select 1)*_mod), (_pos select 2) + ((_offset select 2)*_mod) ]; - // drawLine3D [_pos, _newPos, [1,0,0,1]]; + // drawLine3D [_pos, _newPos, [1,0,0,0.5]]; [_object, _x, _forEachIndex, [_angle, 180], _newPos, _path] call FUNC(renderMenu); - _angle = _angle + _angleSpan / (_numActions); + _angle = _angle + _angleSpan / ((_numActions-1) max 1); }; } forEach (_actionData select 6); }; From 30943cbfd43be373bb4a0431b847225ae3f48783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 12:03:20 -0300 Subject: [PATCH 182/211] move the main menu actions to the right cuadrant --- addons/interact_menu/functions/fnc_render.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index a6795e50a0..4893d7e819 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -25,7 +25,7 @@ if((count GVAR(toRender)) > 0 && (GVAR(keyDown) || GVAR(keyDownSelfAction))) the GVAR(renderDepth) = 0; _renderTargets = _x; { - [_renderTargets select 0, _x, 0, [270, 360]] call FUNC(renderMenu); + [_renderTargets select 0, _x, 0, [180, 360]] call FUNC(renderMenu); } forEach (_renderTargets select 1); }; } forEach GVAR(toRender); @@ -33,7 +33,7 @@ if((count GVAR(toRender)) > 0 && (GVAR(keyDown) || GVAR(keyDownSelfAction))) the // Render only the self action menu _actions = (ACE_player getVariable QGVAR(selfActionData)) select 0; _pos = (ACE_player modelToWorld (ACE_player selectionPosition "spine3")) vectorAdd GVAR(selfMenuOffset) vectorAdd [0,0,0.25]; - [ACE_player, _actions, 0, [270, 360], _pos] call FUNC(renderMenu); + [ACE_player, _actions, 0, [180, 360], _pos] call FUNC(renderMenu); }; // player sideChat format["c: %1", count GVAR(toRender)]; From 1ea35548e0713cf2610475ec8186bcb879178a1a Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 19 Feb 2015 18:40:40 +0100 Subject: [PATCH 183/211] Fixed ambiance sounds module. --- addons/missionmodules/CfgVehicles.hpp | 4 ++-- .../functions/fnc_moduleAmbianceSound.sqf | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/addons/missionmodules/CfgVehicles.hpp b/addons/missionmodules/CfgVehicles.hpp index afdb58006b..92c379efb2 100644 --- a/addons/missionmodules/CfgVehicles.hpp +++ b/addons/missionmodules/CfgVehicles.hpp @@ -11,7 +11,7 @@ class CfgVehicles { displayName = "Ambiance Sounds [ACE]"; icon = QUOTE(PATHTOF(data\moduleSound.paa)); category = "ACE_missionModules"; - function = QUOTE(FUNC(moduleAmbianceSound); + function = QUOTE(FUNC(moduleAmbianceSound)); functionPriority = 1; isGlobal = 1; isTriggerActivated = 0; @@ -57,7 +57,7 @@ class CfgVehicles { displayName = "Volume"; description = "The volume of the sounds played"; typeName = "NUMBER"; - defaultValue = 0; + defaultValue = 1; }; }; class ModuleDescription { diff --git a/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf b/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf index 95153be8d1..943d795b7a 100644 --- a/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf +++ b/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf @@ -38,7 +38,7 @@ if (_activated && local _logic) then { _nilCheckPassedList = ""; { - _x = [_x] call EFUNC(common,removeWhiteSpace); + _x = [_x] call EFUNC(common,string_removeWhiteSpace); _splittedList set [_foreachIndex, _x]; }foreach _splittedList; @@ -61,21 +61,22 @@ if (_activated && local _logic) then { }foreach _ambianceSounds; [{ - private ["_args", "_logic", "_ambianceSounds", "_minimalDistance", "_maximalDistance", "_minDelayBetweensounds", "_maxDelayBetweenSounds", "_volume", "_followPlayers","_lastTimePlayed", "_newPos"] + private ["_args", "_logic", "_ambianceSounds", "_minimalDistance", "_maximalDistance", "_minDelayBetweensounds", "_maxDelayBetweenSounds", "_volume", "_followPlayers","_lastTimePlayed", "_newPos"]; _args = _this select 0; _logic = _args select 0; + _minDelayBetweensounds = _args select 4; + _maxDelayBetweenSounds = _args select 5; _lastTimePlayed = _args select 8; if (!alive _logic) exitwith { [(_this select 1)] call cba_fnc_removePerFrameHandler; }; - if (_lastTimePlayed - time >= ((_minDelayBetweensounds + random(_maxDelayBetweenSounds)) min _maxDelayBetweenSounds)) then { + if (time - _lastTimePlayed >= ((_minDelayBetweensounds + random(_maxDelayBetweenSounds)) min _maxDelayBetweenSounds)) then { _ambianceSounds = _args select 1; _minimalDistance = _args select 2; _maximalDistance = _args select 3; - _minDelayBetweensounds = _args select 4; - _maxDelayBetweenSounds = _args select 5; + _volume = _args select 6; _followPlayers = _args select 7; @@ -111,13 +112,12 @@ if (_activated && local _logic) then { // If no unit is to close to this position, we will play the sound. if ({(_newPos distance _x < (_minimalDistance / 2))}count _allUnits == 0) then { - playSound3D [_ambianceSounds select (round(random((count _ambianceSounds)-1))), ObjNull, false, _newPos, _volume, 1, 1000]; _args set [8, time]; }; }; }; - }, 0.1, [_logic, _ambianceSounds, _minimalDistance, _maximalDistance, _minDelayBetweensounds, _maxDelayBetweenSounds, _volume, _followPlayers, time] ] call CBA_fnc_addPerFrameHandler; + }, 0.1, [_logic, _ambianceSounds, _minimalDistance, _maximalDistance, _minDelayBetweensounds, _maxDelayBetweenSounds, _volume, _followPlayers, time] ] call cba_fnc_addPerFrameHandler; }; true; From af3709f481226ecba3c8d470ddc02047a813ab87 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 19 Feb 2015 19:07:19 +0100 Subject: [PATCH 184/211] Fixed forgotten missionModules. --- addons/missionmodules/$PBOPREFIX$ | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/missionmodules/$PBOPREFIX$ b/addons/missionmodules/$PBOPREFIX$ index ea1be0daee..6e7c7ebfc1 100644 --- a/addons/missionmodules/$PBOPREFIX$ +++ b/addons/missionmodules/$PBOPREFIX$ @@ -1 +1 @@ -z\ace\addons\missionModules \ No newline at end of file +z\ace\addons\missionmodules \ No newline at end of file From 612fa69c1c4cf7ed8b81c5086dc90877d0eda400 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 19 Feb 2015 19:12:14 +0100 Subject: [PATCH 185/211] Renamed string_removeWhiteSpace to stringRemoveWhiteSpace. --- addons/common/XEH_preInit.sqf | 2 +- ...ring_removeWhiteSpace.sqf => fnc_stringRemoveWhiteSpace.sqf} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename addons/common/functions/{fnc_string_removeWhiteSpace.sqf => fnc_stringRemoveWhiteSpace.sqf} (100%) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 3710963c63..e193c81470 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -170,7 +170,7 @@ PREP(setVolume); PREP(sortAlphabeticallyBy); PREP(stringCompare); PREP(stringToColoredText); -PREP(string_removeWhiteSpace); +PREP(stringRemoveWhiteSpace); PREP(subString); PREP(switchToGroupSide); PREP(throttledPublicVariable); diff --git a/addons/common/functions/fnc_string_removeWhiteSpace.sqf b/addons/common/functions/fnc_stringRemoveWhiteSpace.sqf similarity index 100% rename from addons/common/functions/fnc_string_removeWhiteSpace.sqf rename to addons/common/functions/fnc_stringRemoveWhiteSpace.sqf From b0373de57632ae9ea1623f1757e73e457fa65279 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 19 Feb 2015 19:14:52 +0100 Subject: [PATCH 186/211] Tabs to spaces --- .../functions/fnc_endRadioTransmission.sqf | 18 ++++----- addons/common/functions/fnc_exportConfig.sqf | 4 +- addons/common/functions/fnc_getGunner.sqf | 6 +-- addons/common/functions/fnc_getHitPoints.sqf | 34 ++++++++--------- .../fnc_getHitPointsWithSelections.sqf | 38 +++++++++---------- addons/common/functions/fnc_hashGet.sqf | 24 ++++++------ addons/common/functions/fnc_hashHasKey.sqf | 18 ++++----- .../functions/fnc_hashListCreateHash.sqf | 12 +++--- addons/common/functions/fnc_hashListPush.sqf | 12 +++--- .../common/functions/fnc_hashListSelect.sqf | 26 ++++++------- addons/common/functions/fnc_hashListSet.sqf | 24 ++++++------ addons/common/functions/fnc_hashRem.sqf | 34 ++++++++--------- addons/common/functions/fnc_hashSet.sqf | 28 +++++++------- .../common/functions/fnc_queueAnimation.sqf | 4 +- 14 files changed, 141 insertions(+), 141 deletions(-) diff --git a/addons/common/functions/fnc_endRadioTransmission.sqf b/addons/common/functions/fnc_endRadioTransmission.sqf index 990d4e03d8..772a34a06b 100644 --- a/addons/common/functions/fnc_endRadioTransmission.sqf +++ b/addons/common/functions/fnc_endRadioTransmission.sqf @@ -14,17 +14,17 @@ // ACRE if (isClass (configFile >> "CfgPatches" >> "acre_main")) then { - [-1] call acre_core_fnc_handleMultiPttKeyPressUp; - [0] call acre_core_fnc_handleMultiPttKeyPressUp; - [1] call acre_core_fnc_handleMultiPttKeyPressUp; - [2] call acre_core_fnc_handleMultiPttKeyPressUp; + [-1] call acre_core_fnc_handleMultiPttKeyPressUp; + [0] call acre_core_fnc_handleMultiPttKeyPressUp; + [1] call acre_core_fnc_handleMultiPttKeyPressUp; + [2] call acre_core_fnc_handleMultiPttKeyPressUp; }; // TFAR if (isClass (configFile >> "CfgPatches" >> "task_force_radio")) then { - call TFAR_fnc_onSwTangentReleased; - call TFAR_fnc_onAdditionalSwTangentReleased; - call TFAR_fnc_onLRTangentReleased; - call TFAR_fnc_onAdditionalLRTangentReleased; - call TFAR_fnc_onDDTangentReleased; + call TFAR_fnc_onSwTangentReleased; + call TFAR_fnc_onAdditionalSwTangentReleased; + call TFAR_fnc_onLRTangentReleased; + call TFAR_fnc_onAdditionalLRTangentReleased; + call TFAR_fnc_onDDTangentReleased; }; diff --git a/addons/common/functions/fnc_exportConfig.sqf b/addons/common/functions/fnc_exportConfig.sqf index 10c88d6bca..c298785c26 100644 --- a/addons/common/functions/fnc_exportConfig.sqf +++ b/addons/common/functions/fnc_exportConfig.sqf @@ -1,8 +1,8 @@ // by commy2 /* - usage: + usage: - (configFile >> "CfgAmmo") call FUNC(exportConfig); + (configFile >> "CfgAmmo") call FUNC(exportConfig); */ #include "script_component.hpp" diff --git a/addons/common/functions/fnc_getGunner.sqf b/addons/common/functions/fnc_getGunner.sqf index 0c82066e4b..71191083e0 100644 --- a/addons/common/functions/fnc_getGunner.sqf +++ b/addons/common/functions/fnc_getGunner.sqf @@ -20,9 +20,9 @@ private "_gunner"; _gunner = objNull; { - if (_weapon in (_vehicle weaponsTurret _x)) exitWith { - _gunner = _vehicle turretUnit _x; - }; + if (_weapon in (_vehicle weaponsTurret _x)) exitWith { + _gunner = _vehicle turretUnit _x; + }; } forEach allTurrets _vehicle; _gunner diff --git a/addons/common/functions/fnc_getHitPoints.sqf b/addons/common/functions/fnc_getHitPoints.sqf index a6d75e41b9..26b0b1b840 100644 --- a/addons/common/functions/fnc_getHitPoints.sqf +++ b/addons/common/functions/fnc_getHitPoints.sqf @@ -23,33 +23,33 @@ _hitpoints = []; private "_hitpointClasses"; _hitpointClasses = [_config >> "HitPoints"]; { - private "_class"; - _class = ([_config, _x] call FUNC(getTurretConfigPath)) >> "HitPoints"; + private "_class"; + _class = ([_config, _x] call FUNC(getTurretConfigPath)) >> "HitPoints"; - if (isClass _class) then { - _hitpointClasses pushBack _class; - }; + if (isClass _class) then { + _hitpointClasses pushBack _class; + }; } forEach allTurrets _vehicle; // iterate through all classes with hitpoints and their parents { - private "_class"; - _class = _x; + private "_class"; + _class = _x; - while {isClass _class} do { + while {isClass _class} do { - for "_i" from 0 to (count _class - 1) do { - private "_entry"; - _entry = configName (_class select _i); + for "_i" from 0 to (count _class - 1) do { + private "_entry"; + _entry = configName (_class select _i); - if (!(_entry in _hitpoints) && {!isNil {_vehicle getHitPointDamage _entry}}) then { - _hitpoints pushBack _entry; - }; - }; + if (!(_entry in _hitpoints) && {!isNil {_vehicle getHitPointDamage _entry}}) then { + _hitpoints pushBack _entry; + }; + }; - _class = inheritsFrom _class; - }; + _class = inheritsFrom _class; + }; } forEach _hitpointClasses; diff --git a/addons/common/functions/fnc_getHitPointsWithSelections.sqf b/addons/common/functions/fnc_getHitPointsWithSelections.sqf index e9a7a8fac5..f0c9801382 100644 --- a/addons/common/functions/fnc_getHitPointsWithSelections.sqf +++ b/addons/common/functions/fnc_getHitPointsWithSelections.sqf @@ -24,36 +24,36 @@ _selections = []; private "_hitpointClasses"; _hitpointClasses = [_config >> "HitPoints"]; { - private "_class"; - _class = ([_config, _x] call FUNC(getTurretConfigPath)) >> "HitPoints"; + private "_class"; + _class = ([_config, _x] call FUNC(getTurretConfigPath)) >> "HitPoints"; - if (isClass _class) then { - _hitpointClasses pushBack _class; - }; + if (isClass _class) then { + _hitpointClasses pushBack _class; + }; } forEach allTurrets _vehicle; // iterate through all classes with hitpoints and their parents { - private "_class"; - _class = _x; + private "_class"; + _class = _x; - while {isClass _class} do { + while {isClass _class} do { - for "_i" from 0 to (count _class - 1) do { - private ["_entry", "_selection"]; + for "_i" from 0 to (count _class - 1) do { + private ["_entry", "_selection"]; - _entry = configName (_class select _i); - _selection = getText (_class select _i >> "name"); + _entry = configName (_class select _i); + _selection = getText (_class select _i >> "name"); - if (!(_selection in _selections) && {!isNil {_vehicle getHit _selection}}) then { - _hitpoints pushBack _entry; - _selections pushBack _selection; - }; - }; + if (!(_selection in _selections) && {!isNil {_vehicle getHit _selection}}) then { + _hitpoints pushBack _entry; + _selections pushBack _selection; + }; + }; - _class = inheritsFrom _class; - }; + _class = inheritsFrom _class; + }; } forEach _hitpointClasses; diff --git a/addons/common/functions/fnc_hashGet.sqf b/addons/common/functions/fnc_hashGet.sqf index 6147d06a73..7682b2f6a2 100644 --- a/addons/common/functions/fnc_hashGet.sqf +++ b/addons/common/functions/fnc_hashGet.sqf @@ -9,18 +9,18 @@ _key = _this select 1; ERRORDATA(2); _val = nil; try { - if(VALIDHASH(_hash)) then { - _index = (_hash select 0) find _key; - if(_index != -1) then { - _val = (_hash select 1) select _index; - if(IS_STRING(_val) && {_val == "ACREHASHREMOVEDONOTUSETHISVAL"}) then { - _val = nil; - }; - }; - } else { - ERROR("Input hash is not valid"); - }; + if(VALIDHASH(_hash)) then { + _index = (_hash select 0) find _key; + if(_index != -1) then { + _val = (_hash select 1) select _index; + if(IS_STRING(_val) && {_val == "ACREHASHREMOVEDONOTUSETHISVAL"}) then { + _val = nil; + }; + }; + } else { + ERROR("Input hash is not valid"); + }; } catch { - HANDLECATCH; + HANDLECATCH; }; _val diff --git a/addons/common/functions/fnc_hashHasKey.sqf b/addons/common/functions/fnc_hashHasKey.sqf index d69ad2f3e8..8011e987fb 100644 --- a/addons/common/functions/fnc_hashHasKey.sqf +++ b/addons/common/functions/fnc_hashHasKey.sqf @@ -9,15 +9,15 @@ _key = _this select 1; ERRORDATA(2); _val = false; try { - if(VALIDHASH(_hash)) then { - _index = (_hash select 0) find _key; - if(_index != -1) then { - _val = true; - }; - } else { - ERROR("Input hash is not valid"); - }; + if(VALIDHASH(_hash)) then { + _index = (_hash select 0) find _key; + if(_index != -1) then { + _val = true; + }; + } else { + ERROR("Input hash is not valid"); + }; } catch { - HANDLECATCH; + HANDLECATCH; }; _val diff --git a/addons/common/functions/fnc_hashListCreateHash.sqf b/addons/common/functions/fnc_hashListCreateHash.sqf index fef9c79b85..cdad5987cd 100644 --- a/addons/common/functions/fnc_hashListCreateHash.sqf +++ b/addons/common/functions/fnc_hashListCreateHash.sqf @@ -7,12 +7,12 @@ _hashList = _this select 0; ERRORDATA(1); _hashKeys = []; try { - if(VALIDHASH(_hashList)) then { - _hashKeys = (_hashList select 0); - } else { - ERROR("Input hashlist is not valid"); - }; + if(VALIDHASH(_hashList)) then { + _hashKeys = (_hashList select 0); + } else { + ERROR("Input hashlist is not valid"); + }; } catch { - HANDLECATCH; + HANDLECATCH; }; [_hashKeys, []]; diff --git a/addons/common/functions/fnc_hashListPush.sqf b/addons/common/functions/fnc_hashListPush.sqf index e783f7c324..afd092a1b9 100644 --- a/addons/common/functions/fnc_hashListPush.sqf +++ b/addons/common/functions/fnc_hashListPush.sqf @@ -7,11 +7,11 @@ _hashList = _this select 0; _value = _this select 1; ERRORDATA(2); try { - if(VALIDHASH(_hashList)) then { - [_hashList, (count (_hashList select 1)), _value] call FUNC(hashListSet); - } else { - ERROR("Input hashlist in push not valid"); - }; + if(VALIDHASH(_hashList)) then { + [_hashList, (count (_hashList select 1)), _value] call FUNC(hashListSet); + } else { + ERROR("Input hashlist in push not valid"); + }; } catch { - HANDLECATCH; + HANDLECATCH; }; diff --git a/addons/common/functions/fnc_hashListSelect.sqf b/addons/common/functions/fnc_hashListSelect.sqf index e1ee0aae0f..0c552d072e 100644 --- a/addons/common/functions/fnc_hashListSelect.sqf +++ b/addons/common/functions/fnc_hashListSelect.sqf @@ -8,20 +8,20 @@ _index = _this select 1; ERRORDATA(2); _hash = nil; try { - if(VALIDHASH(_hashList)) then { - _keys = _hashList select 0; - _hashes = _hashList select 1; - if(_index < (count _hashes)) then { - _values = _hashes select _index; + if(VALIDHASH(_hashList)) then { + _keys = _hashList select 0; + _hashes = _hashList select 1; + if(_index < (count _hashes)) then { + _values = _hashes select _index; - _hash = [_keys, _values, 1]; - } else { - ERROR("Index of hashlist is out of range"); - }; - } else { - ERROR("Input hashlist is not valid"); - }; + _hash = [_keys, _values, 1]; + } else { + ERROR("Index of hashlist is out of range"); + }; + } else { + ERROR("Input hashlist is not valid"); + }; } catch { - HANDLECATCH; + HANDLECATCH; }; _hash; diff --git a/addons/common/functions/fnc_hashListSet.sqf b/addons/common/functions/fnc_hashListSet.sqf index 8b7239dffd..c384bc15c9 100644 --- a/addons/common/functions/fnc_hashListSet.sqf +++ b/addons/common/functions/fnc_hashListSet.sqf @@ -8,17 +8,17 @@ _index = _this select 1; _value = _this select 2; ERRORDATA(3); try { - if(VALIDHASH(_hashList)) then { - if(VALIDHASH(_value)) then { - _vals = _value select 1; - - (_hashList select 1) set[_index, _vals]; - } else { - ERROR("Set hash in hashlist is not valid"); - }; - } else { - ERROR("Input hashlist is not valid"); - }; + if(VALIDHASH(_hashList)) then { + if(VALIDHASH(_value)) then { + _vals = _value select 1; + + (_hashList select 1) set[_index, _vals]; + } else { + ERROR("Set hash in hashlist is not valid"); + }; + } else { + ERROR("Input hashlist is not valid"); + }; } catch { - HANDLECATCH; + HANDLECATCH; }; diff --git a/addons/common/functions/fnc_hashRem.sqf b/addons/common/functions/fnc_hashRem.sqf index 86898fb3df..000dbbefe0 100644 --- a/addons/common/functions/fnc_hashRem.sqf +++ b/addons/common/functions/fnc_hashRem.sqf @@ -8,23 +8,23 @@ _key = _this select 1; ERRORDATA(2); _val = nil; try { - if(VALIDHASH(_hash)) then { - _index = (_hash select 0) find _key; - if(_index != -1) then { - (_hash select 1) set[_index, "ACREHASHREMOVEDONOTUSETHISVAL"]; - // is this hash is not part of a hash list? - // if it is we need to leave the keys intact. - if((count _hash) == 2) then { - // if this is a standalone hash then we can clean it up - (_hash select 0) set[_index, "ACREHASHREMOVEDONOTUSETHISVAL"]; - _hash set[0, ((_hash select 0) - ["ACREHASHREMOVEDONOTUSETHISVAL"])]; - _hash set[1, ((_hash select 1) - ["ACREHASHREMOVEDONOTUSETHISVAL"])]; - }; - }; - } else { - ERROR("Input hash is not valid"); - }; + if(VALIDHASH(_hash)) then { + _index = (_hash select 0) find _key; + if(_index != -1) then { + (_hash select 1) set[_index, "ACREHASHREMOVEDONOTUSETHISVAL"]; + // is this hash is not part of a hash list? + // if it is we need to leave the keys intact. + if((count _hash) == 2) then { + // if this is a standalone hash then we can clean it up + (_hash select 0) set[_index, "ACREHASHREMOVEDONOTUSETHISVAL"]; + _hash set[0, ((_hash select 0) - ["ACREHASHREMOVEDONOTUSETHISVAL"])]; + _hash set[1, ((_hash select 1) - ["ACREHASHREMOVEDONOTUSETHISVAL"])]; + }; + }; + } else { + ERROR("Input hash is not valid"); + }; } catch { - HANDLECATCH; + HANDLECATCH; }; true diff --git a/addons/common/functions/fnc_hashSet.sqf b/addons/common/functions/fnc_hashSet.sqf index 23438eaf83..0e374d5f12 100644 --- a/addons/common/functions/fnc_hashSet.sqf +++ b/addons/common/functions/fnc_hashSet.sqf @@ -9,19 +9,19 @@ _key = _this select 1; _val = _this select 2; ERRORDATA(3); try { - if(VALIDHASH(_hash)) then { - _index = (_hash select 0) find _key; - if(_index == -1) then { - _index = (_hash select 0) find "ACREHASHREMOVEDONOTUSETHISVAL"; - if(_index == -1) then { - _index = (count (_hash select 0)); - }; - (_hash select 0) set[_index, _key]; - }; - (_hash select 1) set[_index, _val]; - } else { - ERROR("Input hash is not valid"); - }; + if(VALIDHASH(_hash)) then { + _index = (_hash select 0) find _key; + if(_index == -1) then { + _index = (_hash select 0) find "ACREHASHREMOVEDONOTUSETHISVAL"; + if(_index == -1) then { + _index = (count (_hash select 0)); + }; + (_hash select 0) set[_index, _key]; + }; + (_hash select 1) set[_index, _val]; + } else { + ERROR("Input hash is not valid"); + }; } catch { - HANDLECATCH; + HANDLECATCH; }; diff --git a/addons/common/functions/fnc_queueAnimation.sqf b/addons/common/functions/fnc_queueAnimation.sqf index a489a46174..73f3dca109 100644 --- a/addons/common/functions/fnc_queueAnimation.sqf +++ b/addons/common/functions/fnc_queueAnimation.sqf @@ -4,7 +4,7 @@ terminate (missionNamespace getVariable [QGVAR(waitForAnimationHandle), scriptNull]); GVAR(waitForAnimationHandle) = _this spawn { - waitUntil {!([_this select 0] call FUNC(inTransitionAnim))}; + waitUntil {!([_this select 0] call FUNC(inTransitionAnim))}; - _this call FUNC(doAnimation); + _this call FUNC(doAnimation); }; From c8d4acfc81c81f246400ef85e07fd3120b888cf4 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 19 Feb 2015 19:29:54 +0100 Subject: [PATCH 187/211] Refactored displayText to no longer use spawn. --- addons/common/functions/fnc_displayText.sqf | 38 +++++++++------------ 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/addons/common/functions/fnc_displayText.sqf b/addons/common/functions/fnc_displayText.sqf index c6a68cbab2..7121ef6813 100644 --- a/addons/common/functions/fnc_displayText.sqf +++ b/addons/common/functions/fnc_displayText.sqf @@ -18,36 +18,32 @@ #define DEFAULT_DELAY 2 #define DEFAULT_PRIORITY 0 -if (isNil QGVAR(lastHint)) then { - GVAR(lastHint) = [0, 0]; -}; - _this resize 4; -_this spawn { - private ["_text", "_sound", "_delay", "_priority", "_lastHintTime", "_lastHintPriority", "_time"]; +private ["_text", "_sound", "_delay", "_priority", "_lastHintTime", "_lastHintPriority", "_time"]; +_text = _this select 0; +_sound = _this select 1; +_delay = _this select 2; +_priority = _this select 3; - _text = _this select 0; - _sound = _this select 1; - _delay = _this select 2; - _priority = _this select 3; +if (isNil QGVAR(lastHint)) then { + GVAR(lastHint) = [0, 0]; +}; - _lastHintTime = GVAR(lastHint) select 0; - _lastHintPriority = GVAR(lastHint) select 1; +_lastHintTime = GVAR(lastHint) select 0; +_lastHintPriority = GVAR(lastHint) select 1; - if !(typeName _text in ["STRING", "TEXT"]) then {_text = str _text}; - if (isNil "_sound") then {_sound = DEFAULT_PLAY_SOUND}; - if (isNil "_delay") then {_delay = DEFAULT_DELAY}; - if (isNil "_priority") then {_priority = DEFAULT_PRIORITY}; +if !(typeName _text in ["STRING", "TEXT"]) then {_text = str _text}; +if (isNil "_sound") then {_sound = DEFAULT_PLAY_SOUND}; +if (isNil "_delay") then {_delay = DEFAULT_DELAY}; +if (isNil "_priority") then {_priority = DEFAULT_PRIORITY}; - _time = time; - if (_time > _lastHintTime + _delay || {_priority >= _lastHintPriority}) then { +_time = time; +if (_time > _lastHintTime + _delay || {_priority >= _lastHintPriority}) then { hintSilent _text; if (_sound) then {playSound "ACE_Sound_Click"}; GVAR(lastHint) set [0, _time]; GVAR(lastHint) set [1, _priority]; - sleep _delay; - if (_time == GVAR(lastHint) select 0) then {hintSilent ""}; - }; + [{if ((_this select 0) == GVAR(lastHint) select 0) then {hintSilent ""};}, [_time], _delay, 0] call FUNC(waitAndExecute); }; From 21199a4ee663f0f42178d84003f56c2c43ca92ad Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 19 Feb 2015 19:32:49 +0100 Subject: [PATCH 188/211] Now uses BIS_fnc_rscLayer --- addons/common/functions/fnc_displayInformation.sqf | 7 ++----- addons/common/functions/fnc_displayMessage.sqf | 4 +--- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/addons/common/functions/fnc_displayInformation.sqf b/addons/common/functions/fnc_displayInformation.sqf index 64a27b0e40..007e1c3e32 100644 --- a/addons/common/functions/fnc_displayInformation.sqf +++ b/addons/common/functions/fnc_displayInformation.sqf @@ -10,8 +10,6 @@ #include "script_component.hpp" -#define DISPLAY_LAYER 32547 - private["_title", "_content","_type","_display","_headerCtrl","_contentCtrl","_contentAmountOfChars","_pos","_icon","_iconCtrl"]; _title = [_this, 0, "",[""]] call BIS_fnc_Param; _content = [_this, 1, [""],[[""]]] call BIS_fnc_Param; @@ -19,7 +17,7 @@ _type = [_this, 2, 0, [0]] call BIS_fnc_Param; _icon = [_this, 3, "",[""]] call BIS_fnc_Param; if (_title != "") then { - DISPLAY_LAYER cutRsc ['ACE_RscDisplayInformation',"PLAIN"]; + ("ACE_RscDisplayInformation" call BIS_fnc_rscLayer) cutRsc ['ACE_RscDisplayInformation',"PLAIN"]; disableSerialization; _display = uiNamespace getvariable 'ACE_RscDisplayInformation'; @@ -62,6 +60,5 @@ if (_title != "") then { }; }; } else { - - DISPLAY_LAYER cutText ["","PLAIN"]; + ("ACE_RscDisplayInformation" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; }; \ No newline at end of file diff --git a/addons/common/functions/fnc_displayMessage.sqf b/addons/common/functions/fnc_displayMessage.sqf index 317de8b240..7b3274cfc4 100644 --- a/addons/common/functions/fnc_displayMessage.sqf +++ b/addons/common/functions/fnc_displayMessage.sqf @@ -10,15 +10,13 @@ #include "script_component.hpp" -#define DISPLAY_LAYER 546 - private["_title", "_content","_type","_display","_headerCtrl","_contentCtrl","_contentAmountOfChars","_pos"]; _title = [_this, 0, "",[""]] call BIS_fnc_Param; _content = [_this, 1, "",[""]] call BIS_fnc_Param; _type = [_this, 2, 0, [0]] call BIS_fnc_Param; if (_title != "" && _content != "") then { - DISPLAY_LAYER cutRsc ['ACE_RscDisplayMessage',"PLAIN"]; + ("ACE_RscDisplayMessage" call BIS_fnc_rscLayer) cutRsc ['ACE_RscDisplayMessage',"PLAIN"]; disableSerialization; _display = uiNamespace getvariable 'ACE_RscDisplayMessage'; From f7d5d615ee1cbc18aee5d2c259bec947114c639f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 15:36:27 -0300 Subject: [PATCH 189/211] allow actions to be defined for different selections --- addons/attach/CfgVehicles.hpp | 43 ++-- addons/captives/CfgVehicles.hpp | 173 ++++++++-------- .../functions/fnc_compileMenu.sqf | 36 ++-- addons/interact_menu/functions/fnc_probe.sqf | 1 + .../functions/fnc_renderIcon.sqf | 2 +- .../functions/fnc_renderMenu.sqf | 5 +- addons/interaction/CfgVehicles.hpp | 192 +++++++++--------- addons/interaction/stringtable.xml | 3 + addons/logistics_uavbattery/CfgVehicles.hpp | 4 +- addons/map/CfgVehicles.hpp | 14 +- addons/respawn/CfgVehicles.hpp | 111 ++++++---- addons/vehiclelock/CfgVehicles.hpp | 55 ++--- 12 files changed, 356 insertions(+), 283 deletions(-) diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp index 1cd65127a6..b681c0f7f7 100644 --- a/addons/attach/CfgVehicles.hpp +++ b/addons/attach/CfgVehicles.hpp @@ -1,25 +1,30 @@ #define MACRO_ATTACHTOVEHICLE \ class ACE_Actions { \ - class GVAR(AttachVehicle) { \ - displayName = "$STR_ACE_Attach_AttachDetach"; \ - condition = QUOTE(([ARR_3(_player, _target, '')] call FUNC(canAttach))); \ - statement = QUOTE( [ARR_2(_player, _target)] call FUNC(openAttachUI);); \ - exceptions[] = {"ACE_Drag_isNotDragging"}; \ - showDisabled = 0; \ - priority = 0; \ - icon = PATHTOF(UI\attach_ca.paa); \ - distance = 4; \ - }; \ - class GVAR(DetachVehicle) { \ - displayName = "$STR_ACE_Attach_Detach"; \ - condition = QUOTE(([ARR_2(_player, _target)] call FUNC(canDetach))); \ - statement = QUOTE( [ARR_2(_player, _target)] call FUNC(detach) ); \ - exceptions[] = {"ACE_Drag_isNotDragging"}; \ - showDisabled = 0; \ - priority = 0; \ - icon = PATHTOF(UI\detach_ca.paa); \ - distance = 4; \ + class ACE_MainActions { \ + selection = ""; \ + distance = 5; \ + condition = "true"; \ + class GVAR(AttachVehicle) { \ + displayName = "$STR_ACE_Attach_AttachDetach"; \ + condition = QUOTE(([ARR_3(_player, _target, '')] call FUNC(canAttach))); \ + statement = QUOTE( [ARR_2(_player, _target)] call FUNC(openAttachUI);); \ + exceptions[] = {"ACE_Drag_isNotDragging"}; \ + showDisabled = 0; \ + priority = 0; \ + icon = PATHTOF(UI\attach_ca.paa); \ + distance = 4; \ + }; \ + class GVAR(DetachVehicle) { \ + displayName = "$STR_ACE_Attach_Detach"; \ + condition = QUOTE(([ARR_2(_player, _target)] call FUNC(canDetach))); \ + statement = QUOTE( [ARR_2(_player, _target)] call FUNC(detach) ); \ + exceptions[] = {"ACE_Drag_isNotDragging"}; \ + showDisabled = 0; \ + priority = 0; \ + icon = PATHTOF(UI\detach_ca.paa); \ + distance = 4; \ + }; \ }; \ }; diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index d292402bcf..57f9644a4a 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -2,70 +2,78 @@ class CfgVehicles { class Man; class CAManBase: Man { class ACE_Actions { - class ACE_ApplyHandcuffs { - displayName = "$STR_ACE_Captives_SetCaptive"; - distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs)); - exceptions[] = {}; - showDisabled = 0; - priority = 2.4; - icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); - hotkey = "C"; + class ACE_RightHandActions { + selection = "righthand"; + displayName = "Right hand"; + distance = 5; + condition = QUOTE(([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs)) || ([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs))); + class ACE_ApplyHandcuffs { + displayName = "$STR_ACE_Captives_SetCaptive"; + distance = 4; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs)); + exceptions[] = {}; + showDisabled = 0; + priority = 2.4; + icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); + hotkey = "C"; + }; + class ACE_RemoveHandcuffs { + displayName = "$STR_ACE_Captives_ReleaseCaptive"; + distance = 4; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs)); + exceptions[] = {}; + showDisabled = 0; + priority = 2.4; + icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); + hotkey = "R"; + }; }; - class ACE_RemoveHandcuffs { - displayName = "$STR_ACE_Captives_ReleaseCaptive"; - distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs)); - exceptions[] = {}; - showDisabled = 0; - priority = 2.4; - icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); - hotkey = "R"; - }; - class ACE_EscortCaptive { - displayName = "$STR_ACE_Captives_EscortCaptive"; - distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canEscortCaptive)); - statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive)); - exceptions[] = {}; - showDisabled = 0; - icon = QUOTE(PATHTOF(UI\captive_ca.paa)); - priority = 2.3; - hotkey = "E"; - }; - class ACE_StopEscorting { - displayName = "$STR_ACE_Captives_StopEscorting"; - distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting)); - statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive)); - exceptions[] = {QGVAR(isNotEscorting)}; - showDisabled = 0; - icon = QUOTE(PATHTOF(UI\captive_ca.paa)); - priority = 2.3; - hotkey = "E"; - }; - class ACE_LoadCaptive { - displayName = "$STR_ACE_Captives_LoadCaptive"; - distance = 4; - condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive)); - statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive)); - exceptions[] = {QGVAR(isNotEscorting)}; - showDisabled = 0; - icon = QUOTE(PATHTOF(UI\captive_ca.paa)); - priority = 2.2; - hotkey = "L"; - }; - class ACE_FriskPerson { - displayName = "$STR_ACE_Captives_FriskPerson"; - distance = 2; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canFriskPerson)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doFriskPerson)); - showDisabled = 0; - //icon = ""; //@todo - priority = 3; - hotkey = "F"; + class ACE_MainActions { + class ACE_EscortCaptive { + displayName = "$STR_ACE_Captives_EscortCaptive"; + distance = 4; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canEscortCaptive)); + statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive)); + exceptions[] = {}; + showDisabled = 0; + icon = QUOTE(PATHTOF(UI\captive_ca.paa)); + priority = 2.3; + hotkey = "E"; + }; + class ACE_StopEscorting { + displayName = "$STR_ACE_Captives_StopEscorting"; + distance = 4; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting)); + statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive)); + exceptions[] = {QGVAR(isNotEscorting)}; + showDisabled = 0; + icon = QUOTE(PATHTOF(UI\captive_ca.paa)); + priority = 2.3; + hotkey = "E"; + }; + class ACE_LoadCaptive { + displayName = "$STR_ACE_Captives_LoadCaptive"; + distance = 4; + condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive)); + statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive)); + exceptions[] = {QGVAR(isNotEscorting)}; + showDisabled = 0; + icon = QUOTE(PATHTOF(UI\captive_ca.paa)); + priority = 2.2; + hotkey = "L"; + }; + class ACE_FriskPerson { + displayName = "$STR_ACE_Captives_FriskPerson"; + distance = 2; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canFriskPerson)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doFriskPerson)); + showDisabled = 0; + //icon = ""; //@todo + priority = 3; + hotkey = "F"; + }; }; }; @@ -100,24 +108,27 @@ class CfgVehicles { #define MACRO_LOADUNLOADCAPTIVE \ class ACE_Actions { \ - class ACE_LoadCaptive { \ - displayName = "$STR_ACE_Captives_LoadCaptive"; \ - distance = 4; \ - condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \ - statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \ - exceptions[] = {QGVAR(isNotEscorting)}; \ - showDisabled = 0; \ - priority = 1.2; \ - hotkey = "L"; \ - }; \ - class ACE_UnloadCaptive { \ - displayName = "$STR_ACE_Captives_UnloadCaptive"; \ - distance = 4; \ - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive)); \ - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doUnloadCaptive)); \ - showDisabled = 0; \ - priority = 1.2; \ - hotkey = "C"; \ + class ACE_MainActions { \ + selection = ""; \ + class ACE_LoadCaptive { \ + displayName = "$STR_ACE_Captives_LoadCaptive"; \ + distance = 4; \ + condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \ + statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \ + exceptions[] = {QGVAR(isNotEscorting)}; \ + showDisabled = 0; \ + priority = 1.2; \ + hotkey = "L"; \ + }; \ + class ACE_UnloadCaptive { \ + displayName = "$STR_ACE_Captives_UnloadCaptive"; \ + distance = 4; \ + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive)); \ + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doUnloadCaptive)); \ + showDisabled = 0; \ + priority = 1.2; \ + hotkey = "C"; \ + }; \ }; \ }; diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf index 647a78c7b2..1e89a1b969 100644 --- a/addons/interact_menu/functions/fnc_compileMenu.sqf +++ b/addons/interact_menu/functions/fnc_compileMenu.sqf @@ -37,7 +37,7 @@ _actionsCfg = configFile >> "CfgVehicles" >> _objectType >> "ACE_Actions"; _recurseFnc = { - private ["_actions", "_displayName", "_distance", "_icon", "_statement", "_condition", "_showDisabled", + private ["_actions", "_displayName", "_distance", "_icon", "_statement", "_selection", "_condition", "_showDisabled", "_enableInside", "_children", "_entry", "_actionsCfg"]; _actions = []; _actionsCfg = _this select 0; @@ -48,7 +48,10 @@ _recurseFnc = { _distance = getNumber (_entryCfg >> "distance"); _icon = getText (_entryCfg >> "icon"); _statement = compile (getText (_entryCfg >> "statement")); - + _selection = getText (_entryCfg >> "selection"); + if (_selection == "") then { + _selection = [0,0,0]; + }; _condition = getText (_entryCfg >> "condition"); if (_condition == "") then {_condition = "true"}; @@ -59,24 +62,18 @@ _recurseFnc = { _enableInside = getNumber (_entryCfg >> "enableInside"); _condition = compile _condition; - // diag_log text format["_condition: %1", _condition]; - _children = []; - if(isArray (_entryCfg >> "subMenu")) then { - _subMenuDef = getArray (_entryCfg >> "subMenu"); - _childMenuName = _subMenuDef select 0; - _childMenuCfg = configFile >> "CfgVehicles" >> _objectType >> "ACE_Actions" >> _childMenuName; - _children = [_childMenuCfg] call _recurseFnc; - }; + _children = [_entryCfg] call _recurseFnc; _entry = [ _displayName, _icon, - [0,0,0], + _selection, _statement, _condition, _distance, _children, GVAR(uidCounter) ]; + diag_log _entry; GVAR(uidCounter) = GVAR(uidCounter) + 1; _actions pushBack _entry; }; @@ -85,9 +82,20 @@ _recurseFnc = { }; _actions = [_actionsCfg] call _recurseFnc; +//diag_log _actions; +// Backward-compat, filter only base actions that have a selection +private ["_newActions","_oldActions","_selection"]; +_filteredActions = []; +{ + _selection = _x select 2; + if (typeName _selection == "STRING") then { + _filteredActions pushBack _x; + }; +} forEach _actions; +/* _actions = [[ - "TEST!", + "Interactions", "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa", "Spine3", { true }, @@ -98,5 +106,5 @@ _actions = [[ ] ]; GVAR(uidCounter) = GVAR(uidCounter) + 1; - -_object setVariable [QUOTE(GVAR(actionData)), _actions]; \ No newline at end of file +*/ +_object setVariable [QUOTE(GVAR(actionData)), _filteredActions]; \ No newline at end of file diff --git a/addons/interact_menu/functions/fnc_probe.sqf b/addons/interact_menu/functions/fnc_probe.sqf index c7386c9bc6..9fdb166f6d 100644 --- a/addons/interact_menu/functions/fnc_probe.sqf +++ b/addons/interact_menu/functions/fnc_probe.sqf @@ -18,6 +18,7 @@ if(!GVAR(keyDown)) then { _target = _actionObject; _player = ACE_player; _active = [_target, ACE_player] call (_actionItem select 4); + systemChat format ["%1 %2 is active %3", _actionObject, _actionItem select 0, _active]; // player sideChat format["_active: %1 %2", _actionItem select 0, _active]; if(_active) then { _renderItem = +_actionItem; diff --git a/addons/interact_menu/functions/fnc_renderIcon.sqf b/addons/interact_menu/functions/fnc_renderIcon.sqf index ad381f691d..63623aeae1 100644 --- a/addons/interact_menu/functions/fnc_renderIcon.sqf +++ b/addons/interact_menu/functions/fnc_renderIcon.sqf @@ -6,7 +6,7 @@ _text = _this select 0; _color = _this select 1; _pos = _this select 2; _icon = _this select 6; - +//systemChat format ["Drawing icon %1", _text]; _sPos = worldToScreen _pos; // _sPos = _pos; if(count _sPos > 0) then { diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf index 532762d41b..a5eb2cbe22 100644 --- a/addons/interact_menu/functions/fnc_renderMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderMenu.sqf @@ -34,7 +34,6 @@ if(_cursorScreenPos distance _pos <= _distance) then { _color = format ["#%1FFFFFF", [255 * (((GVAR(renderDepth)/_menuDepth)) max 0.25)] call EFUNC(common,toHex)]; }; _path set[(count _path), _index]; - // player sideChat format["r: %1", _actionData select 2]; [_actionData select 0, _color, _pos, 1, 1, 0, _actionData select 1, 0.5, 0.025, "TahomaB"] call FUNC(renderIcon); GVAR(currentOptions) set[(count GVAR(currentOptions)), [_this, _pos, _path]]; _currentRenderDepth = -1; @@ -53,7 +52,7 @@ if(_cursorScreenPos distance _pos <= _distance) then { _numActions = _numActions + 1; }; } forEach (_actionData select 6); - systemChat format ["_numActions: %1", _numActions]; + systemChat format ["Menu %1, _numActions: %2", _actionData select 0, _numActions]; private "_angleSpan"; _angleSpan = _maxAngleSpan min (35 * (_numActions - 1)); @@ -67,7 +66,7 @@ if(_cursorScreenPos distance _pos <= _distance) then { _active = [_object, ACE_player] call (_x select 4); // diag_log text format["_active: %1: %2", (_x select 0), _active]; if(_active) then { - systemChat format ["_angle: %1", _angle]; + //systemChat format ["_angle: %1", _angle]; _offset = [GVAR(vecLineMap), _angle] call FUNC(rotateVectLine); _mod = 0.4 max (0.15 * (_cursorScreenPos distance _pos)); //0.5;//0.1*_distance; _newPos = [ diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index ce1a98abc5..78b87f0967 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -30,123 +30,133 @@ class CfgVehicles { class Man; class CAManBase: Man { class ACE_Actions { - class ACE_TeamManagement { - displayName = "$STR_ACE_Interaction_TeamManagement"; + class ACE_MainActions { + displayName = "$STR_ACE_Interaction_MainAction"; distance = 4; - condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player} && {GVAR(EnableTeamManagement)}); + condition = QUOTE(true); statement = ""; - showDisabled = 0; - priority = 3.2; - icon = PATHTOF(UI\team\team_management_ca.paa); - subMenu[] = {"ACE_TeamManagement", 0}; - hotkey = "M"; - enableInside = 1; + icon = "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa"; + selection = "spine3"; - class ACE_JoinTeamRed { - displayName = "$STR_ACE_Interaction_JoinTeamRed"; + class ACE_TeamManagement { + displayName = "$STR_ACE_Interaction_TeamManagement"; distance = 4; - condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); - statement = QUOTE([ARR_2(_target,'RED')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_red_ca.paa); - priority = 2.4; - hotkey = "R"; + condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player} && {GVAR(EnableTeamManagement)}); + statement = ""; + showDisabled = 0; + priority = 3.2; + icon = PATHTOF(UI\team\team_management_ca.paa); + hotkey = "M"; + enableInside = 1; + + class ACE_JoinTeamRed { + displayName = "$STR_ACE_Interaction_JoinTeamRed"; + distance = 4; + condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); + statement = QUOTE([ARR_2(_target,'RED')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_red_ca.paa); + priority = 2.4; + hotkey = "R"; + enableInside = 1; + }; + class ACE_JoinTeamGreen { + displayName = "$STR_ACE_Interaction_JoinTeamGreen"; + distance = 4; + condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); + statement = QUOTE([ARR_2(_target,'GREEN')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_green_ca.paa); + priority = 2.3; + hotkey = "G"; + enableInside = 1; + }; + class ACE_JoinTeamBlue { + displayName = "$STR_ACE_Interaction_JoinTeamBlue"; + distance = 4; + condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); + statement = QUOTE([ARR_2(_target,'BLUE')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_blue_ca.paa); + priority = 2.2; + hotkey = "B"; + enableInside = 1; + }; + class ACE_JoinTeamYellow { + displayName = "$STR_ACE_Interaction_JoinTeamYellow"; + distance = 4; + condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); + statement = QUOTE([ARR_2(_target,'YELLOW')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_yellow_ca.paa); + priority = 2.1; + hotkey = "Y"; + enableInside = 1; + }; + + class ACE_LeaveTeam { + displayName = "$STR_ACE_Interaction_LeaveTeam"; + distance = 4; + condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player} && {assignedTeam _player != 'MAIN'}); + statement = QUOTE([ARR_2(_target,'MAIN')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_white_ca.paa); + priority = 2.5; + hotkey = "N"; + enableInside = 1; + }; + }; + + class ACE_JoinGroup { + displayName = "$STR_ACE_Interaction_JoinGroup"; + distance = 4; + condition = QUOTE(side group _player == side group _target && {group _player != group _target}); + statement = QUOTE([_player] joinSilent group _target;); + showDisabled = 0; + priority = 2.6; + icon = PATHTOF(UI\team\team_management_ca.paa); + hotkey = "J"; enableInside = 1; }; - class ACE_JoinTeamGreen { - displayName = "$STR_ACE_Interaction_JoinTeamGreen"; + + class ACE_GetDown { + displayName = "$STR_ACE_Interaction_GetDown"; distance = 4; - condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); - statement = QUOTE([ARR_2(_target,'GREEN')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_green_ca.paa); - priority = 2.3; - hotkey = "G"; - enableInside = 1; - }; - class ACE_JoinTeamBlue { - displayName = "$STR_ACE_Interaction_JoinTeamBlue"; - distance = 4; - condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); - statement = QUOTE([ARR_2(_target,'BLUE')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_blue_ca.paa); + condition = QUOTE([_target] call DFUNC(canInteractWith)); + statement = QUOTE([_target] call DFUNC(getDown)); + showDisabled = 0; priority = 2.2; - hotkey = "B"; - enableInside = 1; }; - class ACE_JoinTeamYellow { - displayName = "$STR_ACE_Interaction_JoinTeamYellow"; + class ACE_SendAway { + displayName = "$STR_ACE_Interaction_SendAway"; distance = 4; - condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player}); - statement = QUOTE([ARR_2(_target,'YELLOW')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_yellow_ca.paa); - priority = 2.1; - hotkey = "Y"; - enableInside = 1; + condition = QUOTE([_target] call DFUNC(canInteractWith)); + statement = QUOTE([_target] call DFUNC(sendAway)); + showDisabled = 0; + priority = 2.0; }; - - class ACE_LeaveTeam { - displayName = "$STR_ACE_Interaction_LeaveTeam"; + class ACE_Pardon { + displayName = "$STR_ACE_Interaction_Pardon"; distance = 4; - condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player} && {assignedTeam _player != 'MAIN'}); - statement = QUOTE([ARR_2(_target,'MAIN')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_white_ca.paa); + condition = QUOTE(rating _target < -2000 && {alive _target} && {side group _player == side group _target}); + statement = QUOTE([ARR_3(_target,'{_this addRating -rating _this}',_target)] call DEFUNC(common,execRemoteFnc)); + showDisabled = 0; priority = 2.5; - hotkey = "N"; enableInside = 1; }; }; class ACE_TapShoulder { displayName = "$STR_ACE_Interaction_TapShoulder"; + selection = "rightshoulder"; distance = 4; condition = QUOTE([ARR_2(_player, _target)] call DFUNC(canTapShoulder)); statement = QUOTE([ARR_2(_player, _target)] call DFUNC(tapShoulder)); - showDisabled = 1; + showDisabled = 0; priority = 2.8; hotkey = "Q"; enableInside = 1; }; - class ACE_JoinGroup { - displayName = "$STR_ACE_Interaction_JoinGroup"; - distance = 4; - condition = QUOTE(side group _player == side group _target && {group _player != group _target}); - statement = QUOTE([_player] joinSilent group _target;); - showDisabled = 0; - priority = 2.6; - icon = PATHTOF(UI\team\team_management_ca.paa); - hotkey = "J"; - enableInside = 1; - }; - - class ACE_GetDown { - displayName = "$STR_ACE_Interaction_GetDown"; - distance = 4; - condition = QUOTE([_target] call DFUNC(canInteractWith)); - statement = QUOTE([_target] call DFUNC(getDown)); - showDisabled = 0; - priority = 2.2; - }; - class ACE_SendAway { - displayName = "$STR_ACE_Interaction_SendAway"; - distance = 4; - condition = QUOTE([_target] call DFUNC(canInteractWith)); - statement = QUOTE([_target] call DFUNC(sendAway)); - showDisabled = 0; - priority = 2.0; - }; - class ACE_Pardon { - displayName = "$STR_ACE_Interaction_Pardon"; - distance = 4; - condition = QUOTE(rating _target < -2000 && {alive _target} && {side group _player == side group _target}); - statement = QUOTE([ARR_3(_target,'{_this addRating -rating _this}',_target)] call DEFUNC(common,execRemoteFnc)); - showDisabled = 0; - priority = 2.5; - enableInside = 1; - }; }; class ACE_SelfActions { diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index e58e808687..d0c5f47790 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -2,6 +2,9 @@ + + Interactions >> + Interaction Menu Interaktionsmenü diff --git a/addons/logistics_uavbattery/CfgVehicles.hpp b/addons/logistics_uavbattery/CfgVehicles.hpp index 933079071a..a3a3fc763d 100644 --- a/addons/logistics_uavbattery/CfgVehicles.hpp +++ b/addons/logistics_uavbattery/CfgVehicles.hpp @@ -2,6 +2,7 @@ class CfgVehicles { class Helicopter_Base_F; class UAV_01_base_F: Helicopter_Base_F { class ACE_Actions { + class ACE_MainActions { class GVAR(RefuelUAV) { displayName = "$STR_ACE_logistics_uavbattery_Recharge"; distance = 4; @@ -11,9 +12,10 @@ class CfgVehicles { priority = 1.245; \ icon = QUOTE(PATHTOF(ui\UAV_battery.paa)); }; + }; }; }; - + // Misc box content class Box_NATO_Support_F; class ACE_Box_Misc: Box_NATO_Support_F { diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index 6c2d4a1ee1..eafc85cdf1 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -85,12 +85,14 @@ class CfgVehicles { }; class ACE_Actions { - class ACE_CopyMap { - displayName = "$STR_ACE_Map_CopyMap"; - condition = QUOTE(([_target] call EFUNC(common,isPlayer) && {'ItemMap' in assigneditems _player} && {'ACE_MapTools' in items _player} && {'ItemMap' in assignedItems _target})); - statement = QUOTE([ARR_2(_player,_target)] call FUNC(copyMapStart)); - showDisabled = 0; - priority = -1; + class ACE_MainActions { + class ACE_CopyMap { + displayName = "$STR_ACE_Map_CopyMap"; + condition = QUOTE(([_target] call EFUNC(common,isPlayer) && {'ItemMap' in assigneditems _player} && {'ACE_MapTools' in items _player} && {'ItemMap' in assignedItems _target})); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(copyMapStart)); + showDisabled = 0; + priority = -1; + }; }; }; }; diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index bdf4576eb3..cbf35b0baf 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -78,13 +78,18 @@ class CfgVehicles { init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; _this call FUNC(initRallypoint)); }; class ACE_Actions : ACE_Actions { - class ACE_Teleport { - displayName = "Teleport to Rallypoint"; - distance = 4; - condition = QUOTE(side group _player == west); - statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; + class ACE_MainActions { + distance = 5; + condition = "true"; + selection = ""; + class ACE_Teleport { + displayName = "Teleport to Rallypoint"; + distance = 4; + condition = QUOTE(side group _player == west); + statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); + showDisabled = 1; + priority = 1; + }; }; }; }; @@ -98,13 +103,18 @@ class CfgVehicles { init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; _this call FUNC(initRallypoint)); }; class ACE_Actions : ACE_Actions { - class ACE_Teleport { - displayName = "Teleport to Rallypoint"; - distance = 4; - condition = QUOTE(side group _player == east); - statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; + class ACE_MainActions { + distance = 5; + condition = "true"; + selection = ""; + class ACE_Teleport { + displayName = "Teleport to Rallypoint"; + distance = 4; + condition = QUOTE(side group _player == east); + statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); + showDisabled = 1; + priority = 1; + }; }; }; }; @@ -118,13 +128,18 @@ class CfgVehicles { init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; _this call FUNC(initRallypoint)); }; class ACE_Actions : ACE_Actions { - class ACE_Teleport { - displayName = "Teleport to Rallypoint"; - distance = 4; - condition = QUOTE(side group _player == independent); - statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; + class ACE_MainActions { + distance = 5; + condition = "true"; + selection = ""; + class ACE_Teleport { + displayName = "Teleport to Rallypoint"; + distance = 4; + condition = QUOTE(side group _player == independent); + statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); + showDisabled = 1; + priority = 1; + }; }; }; }; @@ -139,13 +154,17 @@ class CfgVehicles { init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; _this call FUNC(initRallypoint)); }; class ACE_Actions : ACE_Actions { - class ACE_Teleport { - displayName = "Teleport to Base"; - distance = 4; - condition = QUOTE(side group _player == west); - statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; + class ACE_MainActions { + distance = 5; + condition = "true"; + class ACE_Teleport { + displayName = "Teleport to Base"; + distance = 4; + condition = QUOTE(side group _player == west); + statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); + showDisabled = 1; + priority = 1; + }; }; }; }; @@ -159,13 +178,17 @@ class CfgVehicles { init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; _this call FUNC(initRallypoint)); }; class ACE_Actions : ACE_Actions { - class ACE_Teleport { - displayName = "Teleport to Base"; - distance = 4; - condition = QUOTE(side group _player == east); - statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; + class ACE_MainActions { + distance = 5; + condition = "true"; + class ACE_Teleport { + displayName = "Teleport to Base"; + distance = 4; + condition = QUOTE(side group _player == east); + statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); + showDisabled = 1; + priority = 1; + }; }; }; }; @@ -179,13 +202,17 @@ class CfgVehicles { init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; _this call FUNC(initRallypoint)); }; class ACE_Actions : ACE_Actions { - class ACE_Teleport { - displayName = "Teleport to Base"; - distance = 4; - condition = QUOTE(side group _player == independent); - statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; + class ACE_MainActions { + distance = 5; + condition = "true"; + class ACE_Teleport { + displayName = "Teleport to Base"; + distance = 4; + condition = QUOTE(side group _player == independent); + statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); + showDisabled = 1; + priority = 1; + }; }; }; }; diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 79591280d8..2ffb4eee44 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -1,29 +1,34 @@ #define MACRO_LOCK_ACTIONS \ - class ACE_unlockVehicle { \ - displayName = "$STR_ACE_Vehicle_Action_UnLock"; \ - distance = 4; \ - condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ - statement = QUOTE([ARR_3('SetVehicleLock', [_target], [ARR_2(_target,false)])] call EFUNC(common,targetEvent)); \ - showDisabled = 0; \ - priority = 0.3; \ - icon = QUOTE(PATHTOF(ui\key_menuIcon_ca.paa)); \ - }; \ - class ACE_lockVehicle { \ - displayName = "$STR_ACE_Vehicle_Action_Lock"; \ - distance = 4; \ - condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ - statement = QUOTE([ARR_3('SetVehicleLock', [_target], [ARR_2(_target,true)])] call EFUNC(common,targetEvent)); \ - showDisabled = 0; \ - priority = 0.2; \ - icon = QUOTE(PATHTOF(ui\key_menuIcon_ca.paa)); \ - }; \ - class ACE_lockpickVehicle { \ - displayName = "$STR_ACE_Vehicle_Action_Lockpick"; \ - distance = 4; \ - condition = QUOTE([ARR_3(_player, _target, 'canLockpick')] call FUNC(lockpick)); \ - statement = QUOTE([ARR_3(_player, _target, 'startLockpick')] call FUNC(lockpick)); \ - showDisabled = 0; \ - priority = 0.1; \ + class ACE_MainActions { \ + selection = ""; \ + distance = 5; \ + condition = "true"; \ + class ACE_unlockVehicle { \ + displayName = "$STR_ACE_Vehicle_Action_UnLock"; \ + distance = 4; \ + condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ + statement = QUOTE([ARR_3('SetVehicleLock', [_target], [ARR_2(_target,false)])] call EFUNC(common,targetEvent)); \ + showDisabled = 0; \ + priority = 0.3; \ + icon = QUOTE(PATHTOF(ui\key_menuIcon_ca.paa)); \ + }; \ + class ACE_lockVehicle { \ + displayName = "$STR_ACE_Vehicle_Action_Lock"; \ + distance = 4; \ + condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ + statement = QUOTE([ARR_3('SetVehicleLock', [_target], [ARR_2(_target,true)])] call EFUNC(common,targetEvent)); \ + showDisabled = 0; \ + priority = 0.2; \ + icon = QUOTE(PATHTOF(ui\key_menuIcon_ca.paa)); \ + }; \ + class ACE_lockpickVehicle { \ + displayName = "$STR_ACE_Vehicle_Action_Lockpick"; \ + distance = 4; \ + condition = QUOTE([ARR_3(_player, _target, 'canLockpick')] call FUNC(lockpick)); \ + statement = QUOTE([ARR_3(_player, _target, 'startLockpick')] call FUNC(lockpick)); \ + showDisabled = 0; \ + priority = 0.1; \ + }; \ }; class CfgVehicles { From 861a6b1775ca23ece2748dbee581c1c551fe6522 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 15:47:59 -0300 Subject: [PATCH 190/211] avoid all submenus opening simultaneously by switching menu paths to use uids --- addons/interact_menu/functions/fnc_renderMenu.sqf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf index a5eb2cbe22..e6b47241c4 100644 --- a/addons/interact_menu/functions/fnc_renderMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderMenu.sqf @@ -1,11 +1,11 @@ //fnc_renderMenu.sqf #include "script_component.hpp" -private ["_object", "_actionData", "_distance", "_index", "_pos", "_cursorScreenPos", "_path", "_menuDepth", "_opacity", "_currentRenderDepth", "_radialOffset", "_active", "_x", "_offset", "_newPos", "_forEachIndex"]; +private ["_object", "_actionData", "_distance", "_uid", "_pos", "_cursorScreenPos", "_path", "_menuDepth", "_opacity", "_currentRenderDepth", "_radialOffset", "_active", "_x", "_offset", "_newPos", "_forEachIndex"]; _object = _this select 0; _actionData = _this select 1; -_index = _this select 2; +_uid = _actionData select 7;//_this select 2; _angles = _this select 3; _distance = _actionData select 5; @@ -30,16 +30,16 @@ if(_cursorScreenPos distance _pos <= _distance) then { // ARGB Color (First Hex Pair is transparancy) _color = "#FFFFFFFF"; - if(_menuDepth > 0 && _index != (GVAR(menuDepthPath) select (GVAR(renderDepth)))) then { + if(_menuDepth > 0 && _uid != (GVAR(menuDepthPath) select (GVAR(renderDepth)))) then { _color = format ["#%1FFFFFF", [255 * (((GVAR(renderDepth)/_menuDepth)) max 0.25)] call EFUNC(common,toHex)]; }; - _path set[(count _path), _index]; + _path set[(count _path), _uid]; [_actionData select 0, _color, _pos, 1, 1, 0, _actionData select 1, 0.5, 0.025, "TahomaB"] call FUNC(renderIcon); GVAR(currentOptions) set[(count GVAR(currentOptions)), [_this, _pos, _path]]; _currentRenderDepth = -1; _currentRenderDepth = GVAR(renderDepth); GVAR(renderDepth) = GVAR(renderDepth) + 1; - if(_index == (GVAR(menuDepthPath) select (GVAR(renderDepth)-1))) then { + if(_uid == (GVAR(menuDepthPath) select (GVAR(renderDepth)-1))) then { // Count how many actions are active private "_numActions"; _numActions = 0; From a8e269bc18d46f65d77599123194dc336d56277b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 19 Feb 2015 14:34:08 -0600 Subject: [PATCH 191/211] Cleanup Escort Logic No more ERROR spam --- .../captives/functions/fnc_canStopEscorting.sqf | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/addons/captives/functions/fnc_canStopEscorting.sqf b/addons/captives/functions/fnc_canStopEscorting.sqf index e6a5a0e568..56065a43fc 100644 --- a/addons/captives/functions/fnc_canStopEscorting.sqf +++ b/addons/captives/functions/fnc_canStopEscorting.sqf @@ -19,22 +19,10 @@ PARAMS_1(_unit); DEFAULT_PARAM(1,_target,objNull); -private ["_isAttached"]; - if (isNull _target) then { _target = _unit getVariable [QGVAR(escortedUnit), objNull]; }; -if (isNull _target) exitWith { - ERROR("Null Target (no ACE_escortedUnit)"); - false -}; +if (isNull _target) exitWith {false}; -_isAttached = _target in (attachedObjects _unit); - -if (_isAttached && (!(_target getVariable [QGVAR(isHandcuffed), false]))) exitWith { - ERROR("Attached But Not Captive"); - false -}; - -_isAttached +(_target in (attachedObjects _unit)) && {_target getVariable [QGVAR(isHandcuffed), false]} From a81c1fbef5cc637276325830e8f1e3ffe2c84876 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 19 Feb 2015 21:38:51 +0100 Subject: [PATCH 192/211] Overhauled AGM hint. --- addons/common/HintConfig.hpp | 6 ++-- addons/common/config.cpp | 29 ++++++++++++++++++- .../functions/fnc_displayTextPicture.sqf | 2 +- .../functions/fnc_displayTextStructured.sqf | 29 ++++++++++--------- .../functions/fnc_setSettingFromConfig.sqf | 3 +- addons/common/stringtable.xml | 8 ++++- 6 files changed, 56 insertions(+), 21 deletions(-) diff --git a/addons/common/HintConfig.hpp b/addons/common/HintConfig.hpp index 8c8dc38abb..28346c3da3 100644 --- a/addons/common/HintConfig.hpp +++ b/addons/common/HintConfig.hpp @@ -25,6 +25,7 @@ class RscTitles { y = safeZoneY + 0.2 * safezoneH; w = 0.2 * safeZoneW; h = 0.1 * SafeZoneH; + font = "PuristaMedium"; }; }; }; @@ -36,7 +37,6 @@ class RscTitles { fadeIn = 0.2; fadeOut = 0.2; name = "ACE_RscErrorHint"; - class controls { class HintBox: RscStructuredText { idc = 1; @@ -56,7 +56,7 @@ class RscTitles { duration = 7; idd = 86411; movingenable = 0; - onLoad = "uiNamespace setVariable ['ACE_RscDisplayMessage', _this select 0];" + onLoad = "uiNamespace setVariable ['ACE_RscDisplayMessage', _this select 0];"; fadein = 0; class controlsBackground { class header: ACE_gui_staticBase { @@ -88,7 +88,7 @@ class RscTitles { duration = 15; idd = 86412; movingenable = 0; - onLoad = "uiNamespace setVariable ['ACE_RscDisplayInformation', _this select 0];" + onLoad = "uiNamespace setVariable ['ACE_RscDisplayInformation', _this select 0];"; fadein = 0; class controlsBackground { class header: ACE_gui_staticBase { diff --git a/addons/common/config.cpp b/addons/common/config.cpp index b1c479b54f..b86744f0a9 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -102,7 +102,14 @@ class ACE_Settings { displayName = "$STR_ACE_Common_SettingFeedbackIconsName"; description = "$STR_ACE_Common_SettingFeedbackIconsDesc"; values[] = {"Hide", "Top right, downwards", "Top right, to the left", "Top left, downwards", "Top left, to the right"}; - }; + }; + class GVAR(displayTextColor) { + value[] = {0,0,0,0}; + typeName = "COLOR"; + isClientSetable = 1; + displayName = "$STR_ACE_Common_SettingDisplayTextColorName"; + description = "$STR_ACE_Common_SettingDisplayTextColorDesc"; + }; }; #include "define.hpp" @@ -113,3 +120,23 @@ class ACE_Settings { #include #include +class CfgUIGrids { + class IGUI { + class Presets { + class Arma3 { + class Variables { + grid_ACE_displayText[] = {{safeZoneW + safeZoneX - 0.175 * safezoneW, safeZoneY + 0.175 * safezoneH, 0.15 * safeZoneW, 0.125 * SafeZoneH}, "(((safezoneW / safezoneH) min 1.2) / 40)","((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"}; + }; + }; + }; + + class Variables { + class grid_ACE_displayText { + displayName = "ACE Hint"; + description = "Textual in game feedback to the player."; + preview = "\a3\Ui_f\data\GUI\Cfg\UIGrids\grid_hint_ca.paa"; + saveToProfile[] = {0,1}; + }; + }; + }; +}; diff --git a/addons/common/functions/fnc_displayTextPicture.sqf b/addons/common/functions/fnc_displayTextPicture.sqf index 8d46d8d38e..060f04f591 100644 --- a/addons/common/functions/fnc_displayTextPicture.sqf +++ b/addons/common/functions/fnc_displayTextPicture.sqf @@ -22,7 +22,7 @@ if (typeName _text != "TEXT") then { }; _text = composeText [ - parseText format ["", _image], + parseText format ["", _image], lineBreak, _text ]; diff --git a/addons/common/functions/fnc_displayTextStructured.sqf b/addons/common/functions/fnc_displayTextStructured.sqf index 62db6a829f..e103c904b3 100644 --- a/addons/common/functions/fnc_displayTextStructured.sqf +++ b/addons/common/functions/fnc_displayTextStructured.sqf @@ -12,7 +12,7 @@ */ #include "script_component.hpp" -private ["_text", "_size", "_isShown", "_ctrlHint"]; +private ["_text", "_size", "_isShown", "_ctrlHint", "_yPos", "_xPos", "_wPos", "_hPos", "_position"]; _text = _this select 0; _size = _this select 1; @@ -20,7 +20,10 @@ _size = _this select 1; if (isNil "_size") then {_size = 1}; if (typeName _text != "TEXT") then { - _text = composeText [lineBreak, parseText format ["%1", _text]]; + if (typeName _text == "STRING" && {isLocalized _text}) then { + _text = localize _text; + }; + _text = composeText [lineBreak, parseText format ["%1", _text]]; }; _isShown = ctrlShown (uiNamespace getVariable ["ACE_ctrlHint", controlNull]); @@ -30,19 +33,17 @@ _isShown = ctrlShown (uiNamespace getVariable ["ACE_ctrlHint", controlNull]); disableSerialization; _ctrlHint = uiNamespace getVariable "ACE_ctrlHint"; -_ctrlHint ctrlSetPosition [ - safeZoneW + safeZoneX - 0 * safezoneW, - safeZoneY + 0.2 * safezoneH, - 0.2 * safeZoneW, - _size * 0.1 * SafeZoneH -]; +_ctrlHint ctrlSetBackgroundColor GVAR(displayTextColor); + +_xPos = profilenamespace getvariable ["IGUI_GRID_ACE_displayText_X", safeZoneW + safeZoneX - 0.175 * safezoneW]; +_yPos = profilenamespace getvariable ["IGUI_GRID_ACE_displayText_Y", safeZoneY + 0.175 * safezoneH]; +_wPos = profilenamespace getvariable ["IGUI_GRID_ACE_displayText_W", 0.15 * safeZoneW]; +_hPos = profilenamespace getvariable ["IGUI_GRID_ACE_displayText_H", 0.125 * SafeZoneH]; +_position = [_xPos, _yPos, _wPos, _size * _hPos]; + +_ctrlHint ctrlSetPosition _position; _ctrlHint ctrlCommit 0; _ctrlHint ctrlSetStructuredText _text; -_ctrlHint ctrlSetPosition [ - safeZoneW + safeZoneX - 0.2 * safezoneW, - safeZoneY + 0.2 * safezoneH, - 0.2 * safeZoneW, - _size * 0.1 * SafeZoneH -]; +_ctrlHint ctrlSetPosition _position; _ctrlHint ctrlCommit ([0.2, 0] select _isShown); diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf index 4151f3e0e4..577f3083e6 100644 --- a/addons/common/functions/fnc_setSettingFromConfig.sqf +++ b/addons/common/functions/fnc_setSettingFromConfig.sqf @@ -17,7 +17,8 @@ EXPLODE_1_PVT(_this,_optionEntry); _fnc_getValueWithType = { EXPLODE_2_PVT(_this,_optionEntry,_typeName); - _value = getNumber (_optionEntry >> "value"); + _valueConfig = (_optionEntry >> "value"); + _value = if (!(isArray _valueConfig) && !(isText _valueConfig)) then { getNumber (_optionEntry >> "value"); } else { 0 }; TRACE_3("_fnc_getValueWithType:", configName _optionEntry, _typeName, _value); if (_typeName == "BOOL") exitWith { _value > 0 diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index f7705f8ad9..3ece4206d7 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -320,7 +320,13 @@ Select the position of or disable the feedback icons on your screen. These icons will show to provide extra feedback on your character status and actions performed. - + + + Hint Background color + + + The color of the background from the ACE hints. + \ No newline at end of file From b58abaa2c03dc175fd2ff04f43bf2bbef137db67 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 19 Feb 2015 22:01:09 +0100 Subject: [PATCH 193/211] Added a transparant background --- addons/common/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/config.cpp b/addons/common/config.cpp index b86744f0a9..201e44e181 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -104,7 +104,7 @@ class ACE_Settings { values[] = {"Hide", "Top right, downwards", "Top right, to the left", "Top left, downwards", "Top left, to the right"}; }; class GVAR(displayTextColor) { - value[] = {0,0,0,0}; + value[] = {0,0,0,0.1}; typeName = "COLOR"; isClientSetable = 1; displayName = "$STR_ACE_Common_SettingDisplayTextColorName"; From 0dfeb22ec87084c04d8148276deee0b4153017be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 18:03:14 -0300 Subject: [PATCH 194/211] tidy up --- addons/interact_menu/XEH_preInit.sqf | 19 +++++++++---------- addons/interact_menu/config.cpp | 2 +- .../interact_menu/functions/fnc_addAction.sqf | 19 ++++++++++--------- .../functions/fnc_setToRender.sqf | 6 ------ 4 files changed, 20 insertions(+), 26 deletions(-) delete mode 100644 addons/interact_menu/functions/fnc_setToRender.sqf diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index da01026425..d3766cf765 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -2,21 +2,20 @@ ADDON = false; -PREP(setToRender); -PREP(render); -PREP(renderIcon); -PREP(renderMenu); -PREP(probe); -PREP(rotateVectLineGetMap); -PREP(rotateVectLine); +PREP(addAction); +PREP(compileMenu); +PREP(compileMenuSelfAction); PREP(keyDown); PREP(keyDownSelfAction); PREP(keyUp); PREP(keyUpSelfAction); -PREP(compileMenu); -PREP(compileMenuSelfAction); -PREP(addAction); +PREP(probe); PREP(removeAction); +PREP(render); +PREP(renderIcon); +PREP(renderMenu); +PREP(rotateVectLine); +PREP(rotateVectLineGetMap); GVAR(toRender) = []; diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index a7b7bae6df..784c6529d6 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {""}; + author[] = {"NouberNou", "CAA-Picard"}; authorUrl = ""; VERSION_CONFIG; }; diff --git a/addons/interact_menu/functions/fnc_addAction.sqf b/addons/interact_menu/functions/fnc_addAction.sqf index 4b9243cfac..9c22023db4 100644 --- a/addons/interact_menu/functions/fnc_addAction.sqf +++ b/addons/interact_menu/functions/fnc_addAction.sqf @@ -1,19 +1,20 @@ /* * Author: commy2 - * * Add an ACE action to an object. Note: This function is NOT global. * * Argument: - * 0: Object the action should be assigned to (Object) - * 1: Name of the action shown in the menu (String) - * 2: Icon (String) - * 3: Position (Position or Selection Name) - * 4: Statement (Code) - * 5: Condition (Code) - * 6: Distance (Number) + * 0: Object the action should be assigned to + * 1: Name of the action shown in the menu + * 2: Icon + * 3: Position (Position or Selection Name) or + * 4: Statement + * 5: Condition + * 6: Distance * * Return value: - * The entry array, which can be used to remove the entry, or add children entries. + * The entry array, which can be used to remove the entry, or add children entries . + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/interact_menu/functions/fnc_setToRender.sqf b/addons/interact_menu/functions/fnc_setToRender.sqf deleted file mode 100644 index 4cc7cfd68f..0000000000 --- a/addons/interact_menu/functions/fnc_setToRender.sqf +++ /dev/null @@ -1,6 +0,0 @@ -//fnc_setToRender.sqf -#include "script_component.hpp" -// No idea what this function was for, it was autogenerated out of my WIP file... -private ["_options"]; -_object = _this select 0; -_options = _this select 1; From 41145e5731b86d7ef3af40f349cb3248478ec8e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 18:03:25 -0300 Subject: [PATCH 195/211] reduce size of the menu --- addons/interact_menu/functions/fnc_renderIcon.sqf | 3 ++- addons/interact_menu/functions/fnc_renderMenu.sqf | 13 +++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/addons/interact_menu/functions/fnc_renderIcon.sqf b/addons/interact_menu/functions/fnc_renderIcon.sqf index 63623aeae1..a57a0642a1 100644 --- a/addons/interact_menu/functions/fnc_renderIcon.sqf +++ b/addons/interact_menu/functions/fnc_renderIcon.sqf @@ -19,9 +19,10 @@ if(count _sPos > 0) then { if(_icon == "") then { _icon = DEFAULT_ICON; }; - _text = format ["%4", _icon, _color, _color, _text]; + _text = format ["%4", _icon, _color, _color, _text]; _ctrl ctrlSetStructuredText (parseText _text); _ctrl ctrlSetPosition [(_sPos select 0)-(0.011*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.4*SafeZoneW, 0.025*SafeZoneW]; + // _ctrl ctrlSetBackgroundColor [1,0,0,1]; _ctrl ctrlCommit 0; }; diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf index e6b47241c4..aafcf78f27 100644 --- a/addons/interact_menu/functions/fnc_renderMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderMenu.sqf @@ -55,7 +55,7 @@ if(_cursorScreenPos distance _pos <= _distance) then { systemChat format ["Menu %1, _numActions: %2", _actionData select 0, _numActions]; private "_angleSpan"; - _angleSpan = _maxAngleSpan min (35 * (_numActions - 1)); + _angleSpan = _maxAngleSpan min (55 * (_numActions - 1)); private "_angle"; _angle = _centerAngle - _angleSpan / 2; @@ -68,15 +68,20 @@ if(_cursorScreenPos distance _pos <= _distance) then { if(_active) then { //systemChat format ["_angle: %1", _angle]; _offset = [GVAR(vecLineMap), _angle] call FUNC(rotateVectLine); - _mod = 0.4 max (0.15 * (_cursorScreenPos distance _pos)); //0.5;//0.1*_distance; + _mod = 0.15 max (0.15 * (_cursorScreenPos distance _pos)); //0.5;//0.1*_distance; _newPos = [ (_pos select 0) + ((_offset select 0)*_mod), (_pos select 1) + ((_offset select 1)*_mod), (_pos select 2) + ((_offset select 2)*_mod) ]; // drawLine3D [_pos, _newPos, [1,0,0,0.5]]; - [_object, _x, _forEachIndex, [_angle, 180], _newPos, _path] call FUNC(renderMenu); - _angle = _angle + _angleSpan / ((_numActions-1) max 1); + [_object, _x, _forEachIndex, [_angle, 170], _newPos, _path] call FUNC(renderMenu); + + if (_angle == 360) then { + _angle = _angle + _angleSpan / _numActions; + } else { + _angle = _angle + _angleSpan / ((_numActions-1) max 1); + }; }; } forEach (_actionData select 6); }; From bc3a226c64dd7e15687823ab4c2a938bc6d5b9b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 18:56:43 -0300 Subject: [PATCH 196/211] Text under the icon --- addons/interact_menu/functions/fnc_renderIcon.sqf | 6 +++--- addons/interact_menu/functions/fnc_renderMenu.sqf | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/interact_menu/functions/fnc_renderIcon.sqf b/addons/interact_menu/functions/fnc_renderIcon.sqf index a57a0642a1..efa28907bf 100644 --- a/addons/interact_menu/functions/fnc_renderIcon.sqf +++ b/addons/interact_menu/functions/fnc_renderIcon.sqf @@ -19,10 +19,10 @@ if(count _sPos > 0) then { if(_icon == "") then { _icon = DEFAULT_ICON; }; - _text = format ["%4", _icon, _color, _color, _text]; + _text = format ["
      %4", _icon, _color, _color, _text]; _ctrl ctrlSetStructuredText (parseText _text); - _ctrl ctrlSetPosition [(_sPos select 0)-(0.011*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.4*SafeZoneW, 0.025*SafeZoneW]; - + _ctrl ctrlSetPosition [(_sPos select 0)-(0.2*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.4*SafeZoneW, 0.035*SafeZoneW]; + //_ctrl ctrlSetBackgroundColor [1, 0, 0, 0.1]; // _ctrl ctrlSetBackgroundColor [1,0,0,1]; _ctrl ctrlCommit 0; }; diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf index aafcf78f27..91104d9c6b 100644 --- a/addons/interact_menu/functions/fnc_renderMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderMenu.sqf @@ -75,7 +75,7 @@ if(_cursorScreenPos distance _pos <= _distance) then { (_pos select 2) + ((_offset select 2)*_mod) ]; // drawLine3D [_pos, _newPos, [1,0,0,0.5]]; - [_object, _x, _forEachIndex, [_angle, 170], _newPos, _path] call FUNC(renderMenu); + [_object, _x, _forEachIndex, [_angle, 150], _newPos, _path] call FUNC(renderMenu); if (_angle == 360) then { _angle = _angle + _angleSpan / _numActions; From dd92c5e845b5cbeeaea04067703684c87c6b64a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 19:45:46 -0300 Subject: [PATCH 197/211] Tap on either shoulder. "Tap" animation --- addons/interaction/CfgVehicles.hpp | 17 ++++++++-- .../interaction/functions/fnc_tapShoulder.sqf | 21 ++++++------ addons/interaction/stringtable.xml | 34 +++++++++++++------ 3 files changed, 48 insertions(+), 24 deletions(-) diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 78b87f0967..801e564384 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -146,12 +146,23 @@ class CfgVehicles { }; }; - class ACE_TapShoulder { + class ACE_TapShoulderRight { displayName = "$STR_ACE_Interaction_TapShoulder"; selection = "rightshoulder"; - distance = 4; + distance = 2.0; condition = QUOTE([ARR_2(_player, _target)] call DFUNC(canTapShoulder)); - statement = QUOTE([ARR_2(_player, _target)] call DFUNC(tapShoulder)); + statement = QUOTE([ARR_3(_player, _target, 0)] call DFUNC(tapShoulder)); + showDisabled = 0; + priority = 2.8; + hotkey = "Q"; + enableInside = 1; + }; + class ACE_TapShoulderLeft { + displayName = "$STR_ACE_Interaction_TapShoulder"; + selection = "leftshoulder"; + distance = 2.0; + condition = QUOTE([ARR_2(_player, _target)] call DFUNC(canTapShoulder)); + statement = QUOTE([ARR_3(_player, _target, 1)] call DFUNC(tapShoulder)); showDisabled = 0; priority = 2.8; hotkey = "Q"; diff --git a/addons/interaction/functions/fnc_tapShoulder.sqf b/addons/interaction/functions/fnc_tapShoulder.sqf index 02eed88542..262012dbb9 100644 --- a/addons/interaction/functions/fnc_tapShoulder.sqf +++ b/addons/interaction/functions/fnc_tapShoulder.sqf @@ -1,21 +1,22 @@ // by commy2 #include "script_component.hpp" -private ["_unit", "_message"]; - -_tapper = _this select 0; -_target = _this select 1; +EXPLODE_3_PVT(_this,_tapper,_target,_shoulderNum); if (_target != ACE_player) exitWith { - addCamShake [4, 0.5, 5]; - if !(local _target) then { - [[_tapper, _target], QUOTE(DFUNC(tapShoulder)), _target] call EFUNC(common,execRemoteFnc); - }; + addCamShake [4, 0.5, 5]; + ACE_player playActionNow 'gestureAdvance'; + if !(local _target) then { + [[_tapper, _target, _shoulderNum], QUOTE(DFUNC(tapShoulder)), _target] call EFUNC(common,execRemoteFnc); + }; }; addCamShake [4, 0.5, 5]; -//_message = format ["%1 tapped you on your shoulder.", [_unit] call EFUNC(common,getName)]; -_message = localize "STR_ACE_Interaction_YouWereTapped"; +if (_shoulderNum == 0) then { + _message = localize "STR_ACE_Interaction_YouWereTappedRight"; +} else { + _message = localize "STR_ACE_Interaction_YouWereTappedLeft"; +}; [_message] call EFUNC(common,displayTextStructured); diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index d0c5f47790..960d136c0f 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -341,17 +341,29 @@ Tocar ombro Dai un colpetto - - You were tapped on the shoulder. - Dir wurde auf die Schulter geklopft - Te tocaron el hombro. - On te tape sur l'épaule. - Zostałeś klepnięty po ramieniu - Vállonveregettek - Někdo tě poklepal na rameno. - Вас похлопали по плечу - Você foi tocado no ombro. - Ti è stato dato un colpetto sulla spalla + + You were tapped on the RIGHT shoulder > + Te tocaron el hombro DERECHO > + Dir wurde auf die Schulter geklopft > + On te tape sur l'épaule > + Zostałeś klepnięty po ramieniu > + Vállonveregettek > + Někdo tě poklepal na rameno > + Вас похлопали по плечу > + Você foi tocado no ombro > + Ti è stato dato un colpetto sulla spalla > + + + < You were tapped on the LEFT shoulder. + < Te tocaron el hombro IZQUIERDO. + < Dir wurde auf die Schulter geklopft + < On te tape sur l'épaule. + < Zostałeś klepnięty po ramieniu + < Vállonveregettek + < Někdo tě poklepal na rameno. + < Вас похлопали по плечу + < Você foi tocado no ombro. + < Ti è stato dato un colpetto sulla spalla Cancel From 908f23a78f315c03ed6135d885c51c82b60a6fa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Thu, 19 Feb 2015 20:10:07 -0300 Subject: [PATCH 198/211] Removed filtering actions --- .../functions/fnc_compileMenu.sqf | 26 +------------------ 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf index 1e89a1b969..e1168baa2b 100644 --- a/addons/interact_menu/functions/fnc_compileMenu.sqf +++ b/addons/interact_menu/functions/fnc_compileMenu.sqf @@ -82,29 +82,5 @@ _recurseFnc = { }; _actions = [_actionsCfg] call _recurseFnc; -//diag_log _actions; -// Backward-compat, filter only base actions that have a selection -private ["_newActions","_oldActions","_selection"]; -_filteredActions = []; -{ - _selection = _x select 2; - if (typeName _selection == "STRING") then { - _filteredActions pushBack _x; - }; -} forEach _actions; -/* -_actions = [[ - "Interactions", - "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa", - "Spine3", - { true }, - { true }, - 5, - _actions, - GVAR(uidCounter) -] -]; -GVAR(uidCounter) = GVAR(uidCounter) + 1; -*/ -_object setVariable [QUOTE(GVAR(actionData)), _filteredActions]; \ No newline at end of file +_object setVariable [QUOTE(GVAR(actionData)), _actions]; From 6b7f649244e6d6f68930a795fe56b82497bdaaf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Sat, 21 Feb 2015 17:11:03 -0300 Subject: [PATCH 199/211] interact_menu: add headers --- .../interact_menu/functions/fnc_addAction.sqf | 19 +++----- .../functions/fnc_compileMenu.sqf | 36 +++++++--------- .../functions/fnc_compileMenuSelfAction.sqf | 43 ++++++++----------- .../interact_menu/functions/fnc_keyDown.sqf | 13 +++++- .../functions/fnc_keyDownSelfAction.sqf | 13 +++++- addons/interact_menu/functions/fnc_keyUp.sqf | 13 +++++- .../functions/fnc_keyUpSelfAction.sqf | 13 +++++- addons/interact_menu/functions/fnc_probe.sqf | 18 ++++++-- .../functions/fnc_removeAction.sqf | 23 +++++----- addons/interact_menu/functions/fnc_render.sqf | 13 +++++- .../functions/fnc_renderIcon.sqf | 23 ++++++++-- .../functions/fnc_renderMenu.sqf | 18 +++++++- .../functions/fnc_rotateVectLine.sqf | 14 +++++- .../functions/fnc_rotateVectLineGetMap.sqf | 15 ++++++- 14 files changed, 190 insertions(+), 84 deletions(-) diff --git a/addons/interact_menu/functions/fnc_addAction.sqf b/addons/interact_menu/functions/fnc_addAction.sqf index 9c22023db4..3d445a4b13 100644 --- a/addons/interact_menu/functions/fnc_addAction.sqf +++ b/addons/interact_menu/functions/fnc_addAction.sqf @@ -1,9 +1,9 @@ /* - * Author: commy2 - * Add an ACE action to an object. Note: This function is NOT global. + * Author: commy2 and NouberNou + * Add an ACE action to an object or inside a parent action. Note: This function is NOT global. * * Argument: - * 0: Object the action should be assigned to + * 0: Object the action should be assigned to or parent action or * 1: Name of the action shown in the menu * 2: Icon * 3: Position (Position or Selection Name) or @@ -18,15 +18,10 @@ */ #include "script_component.hpp" -private ["_object", "_displayName", "_icon", "_position", "_statement", "_condition", "_distance", "_actions", "_entry"]; -_object = _this select 0; -_displayName = _this select 1; -_icon = _this select 2; -_position = _this select 3; -_statement = _this select 4; -_condition = _this select 5; -_distance = _this select 6; +EXPLODE_7_PVT(_this,_object,_displayName,_icon,_position,_statement,_condition,_distance); + +private ["_actions","_entry"]; _actions = []; if(IS_OBJECT(_object)) then { _actions = _object getVariable [QUOTE(GVAR(actionData)), []]; @@ -51,4 +46,4 @@ _entry = [ ]; GVAR(uidCounter) = GVAR(uidCounter) + 1; _actions pushBack _entry; -_entry; \ No newline at end of file +_entry; diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf index e1168baa2b..0bcecf0732 100644 --- a/addons/interact_menu/functions/fnc_compileMenu.sqf +++ b/addons/interact_menu/functions/fnc_compileMenu.sqf @@ -1,23 +1,18 @@ -//fnc_compileMenu.sqf -#include "script_component.hpp"; -// diag_log text format["COMPILE ACTIONS: %1", _this]; - -_object = _this select 0; -_objectType = typeOf _object; - - /* -displayName = "$STR_ACE_Interaction_TeamManagement"; -distance = 4; -condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player} && {GVAR(EnableTeamManagement)}); -statement = ""; -showDisabled = 0; -priority = 3.2; -icon = PATHTOF(UI\team\team_management_ca.paa); -subMenu[] = {"ACE_TeamManagement", 0}; -hotkey = "M"; -enableInside = 1; -*/ + * Author: NouberNou + * Compile the action menu from config for a given object. + * + * Argument: + * 0: Object + * + * Return value: + * None + * + * Public: No + */ +#include "script_component.hpp"; + +EXPLODE_1_PVT(_this,_object); /* [ @@ -33,6 +28,8 @@ enableInside = 1; ] */ +private ["_objectType","_recurseFnc","_actions"]; +_objectType = typeOf _object; _actionsCfg = configFile >> "CfgVehicles" >> _objectType >> "ACE_Actions"; @@ -73,7 +70,6 @@ _recurseFnc = { _children, GVAR(uidCounter) ]; - diag_log _entry; GVAR(uidCounter) = GVAR(uidCounter) + 1; _actions pushBack _entry; }; diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf index 923b65e954..0135d64eb8 100644 --- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf @@ -1,21 +1,18 @@ -//fnc_compileMenuSelfAction.sqf -#include "script_component.hpp"; -// diag_log text format["COMPILE ACTIONS: %1", _this]; - -_object = _this select 0; -_objectType = typeOf _object; - - /* -displayName = "$STR_ACE_Hearing_Earbuds_On"; -condition = QUOTE( !([_player] call FUNC(hasEarPlugsIn)) && {'ACE_EarBuds' in items _player} ); -statement = QUOTE( [_player] call FUNC(putInEarPlugs) ); -showDisabled = 0; -priority = 2.5; -icon = PATHTOF(UI\ACE_earplugs_x_ca.paa); -hotkey = "E"; -enableInside = 1; -*/ + * Author: NouberNou and CAA-Picard + * Compile the self action menu from config for a given object. + * + * Argument: + * 0: Object + * + * Return value: + * None + * + * Public: No + */ +#include "script_component.hpp"; + +EXPLODE_1_PVT(_this,_object); /* [ @@ -31,6 +28,8 @@ enableInside = 1; ] */ +private ["_objectType","_recurseFnc","_actions"]; +_objectType = typeOf _object; _actionsCfg = configFile >> "CfgVehicles" >> _objectType >> "ACE_SelfActions"; @@ -56,14 +55,7 @@ _recurseFnc = { _enableInside = getNumber (_entryCfg >> "enableInside"); _condition = compile _condition; - // diag_log text format["_condition: %1", _condition]; - _children = []; - if(isArray (_entryCfg >> "subMenu")) then { - _subMenuDef = getArray (_entryCfg >> "subMenu"); - _childMenuName = _subMenuDef select 0; - _childMenuCfg = configFile >> "CfgVehicles" >> _objectType >> "ACE_SelfActions" >> _childMenuName; - _children = [_childMenuCfg] call _recurseFnc; - }; + _children = [_entryCfg] call _recurseFnc; _entry = [ _displayName, _icon, @@ -83,6 +75,7 @@ _recurseFnc = { _actions = [_actionsCfg] call _recurseFnc; +// Create a master action to base on self action _actions = [[ "Self Actions", "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa", diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index fdd39e7dc8..5d37019858 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -1,4 +1,15 @@ -//fnc_keyDown.sqf +/* + * Author: NouberNou + * Handle interaction key down + * + * Argument: + * None + * + * Return value: + * true + * + * Public: No + */ #include "script_component.hpp" if(!GVAR(keyDown)) then { diff --git a/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf b/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf index 8e86cfd430..be46dd132c 100644 --- a/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf @@ -1,4 +1,15 @@ -//fnc_keyDownSelfAction.sqf +/* + * Author: NouberNou + * Handle self action key down + * + * Argument: + * None + * + * Return value: + * true + * + * Public: No + */ #include "script_component.hpp" if(!GVAR(keyDownSelfAction)) then { diff --git a/addons/interact_menu/functions/fnc_keyUp.sqf b/addons/interact_menu/functions/fnc_keyUp.sqf index 922a5dedce..6a39f40f95 100644 --- a/addons/interact_menu/functions/fnc_keyUp.sqf +++ b/addons/interact_menu/functions/fnc_keyUp.sqf @@ -1,4 +1,15 @@ -//fnc_keyUpSelfAction.sqf +/* + * Author: NouberNou + * Handle interaction key up + * + * Argument: + * None + * + * Return value: + * true + * + * Public: No + */ #include "script_component.hpp" GVAR(keyDown) = false; diff --git a/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf b/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf index b0023300bf..82130c9993 100644 --- a/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf @@ -1,4 +1,15 @@ -//fnc_keyUp.sqf +/* + * Author: NouberNou + * Handle self action key up + * + * Argument: + * None + * + * Return value: + * true + * + * Public: No + */ #include "script_component.hpp" GVAR(keyDownSelfAction) = false; diff --git a/addons/interact_menu/functions/fnc_probe.sqf b/addons/interact_menu/functions/fnc_probe.sqf index 9fdb166f6d..dc1b7e6c87 100644 --- a/addons/interact_menu/functions/fnc_probe.sqf +++ b/addons/interact_menu/functions/fnc_probe.sqf @@ -1,9 +1,21 @@ -//fnc_probe.sqf +/* + * Author: NouberNou + * Scan de vicinity of the player and collect every interaction available around it on + * the GVAR(toRender) array. + * + * Argument: + * None + * + * Return value: + * None + * + * Public: No + */ #include "script_component.hpp" private ["_nearestObjects", "_actionObject", "_x", "_actionData", "_renderData", "_actionItem", "_active", "_renderItem", "_object", "_forEachIndex"]; if(!GVAR(keyDown)) then { - _nearestObjects = nearestObjects [(getPos player), ["All"], 100]; + _nearestObjects = nearestObjects [(getPos ACE_player), ["All"], 100]; GVAR(toRender) = []; { @@ -36,7 +48,7 @@ if(!GVAR(keyDown)) then { GVAR(filter) = []; { _object = _x select 0; - if(_object distance player > 100) then { + if(_object distance ACE_player > 100) then { GVAR(filter) set[(count GVAR(filter)), _forEachIndex]; }; } forEach GVAR(toRender); diff --git a/addons/interact_menu/functions/fnc_removeAction.sqf b/addons/interact_menu/functions/fnc_removeAction.sqf index 3b32f4d012..3ab4379768 100644 --- a/addons/interact_menu/functions/fnc_removeAction.sqf +++ b/addons/interact_menu/functions/fnc_removeAction.sqf @@ -1,24 +1,21 @@ /* - * Author: commy2 - * - * Add an ACE action to an object. Note: This function is global. + * Author: commy2 and NouberNou + * Remove an action from an object * * Argument: - * 0: Object the action should be assigned to (Object) - * 1: Entry to remove (Array or Number) + * 0: Object the action should be assigned to + * 1: Entry to remove or * * Return value: - * ID of the action (used to remove it later). + * None + * + * Public: No */ - #include "script_component.hpp" -private ["_object", "_entry", "_found", "_actions", "_searchFnc"]; - -_object = _this select 0; -_entry = _this select 1; - +EXPLODE_2_PVT(_this,_object,_entry); +private ["_found", "_actions", "_searchFnc"]; if(!IS_OBJECT(_object)) exitWith {false}; @@ -50,4 +47,4 @@ _searchFnc = { _actions = [_actions, _entry] call _searchFnc; _object setVariable [QUOTE(GVAR(actionData)), _actions]; -_found; \ No newline at end of file +_found; diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index 4893d7e819..79d300019a 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -1,4 +1,15 @@ -//fnc_render.sqf +/* + * Author: NouberNou and CAA-Picard + * Render all available nearby interactions + * + * Argument: + * None + * + * Return value: + * None + * + * Public: No + */ #include "script_component.hpp" private ["_cursorPos1", "_cursorPos2", "_cursorVec", "_p1", "_p2", "_p", "_v", "_cp", "_forEachIndex", "_renderTargets", "_x", "_cursorScreenPos", "_closestDistance", "_closestSelection", "_pos", "_sPos", "_disSq", "_closest", "_cTime", "_delta", "_foundTarget", "_misMatch", "_hoverPath", "_i"]; diff --git a/addons/interact_menu/functions/fnc_renderIcon.sqf b/addons/interact_menu/functions/fnc_renderIcon.sqf index efa28907bf..4b04ff6909 100644 --- a/addons/interact_menu/functions/fnc_renderIcon.sqf +++ b/addons/interact_menu/functions/fnc_renderIcon.sqf @@ -1,4 +1,21 @@ -//fnc_renderIcon.sqf +/* + * Author: NouberNou and CAA-Picard + * Render a single interaction icon + * + * Argument: + * 0: Text + * 1: Color + * 2: 3d position ASL + * 3: ? + * 4: ? + * 5: ? + * 6: Icon + * + * Return value: + * None + * + * Public: No + */ #include "script_component.hpp" #define DEFAULT_ICON QUOTE(\z\ace\addons\interaction\ui\dot_ca.paa) private ["_color", "_pos", "_sPos", "_ctrl", "_icon"]; @@ -6,11 +23,11 @@ _text = _this select 0; _color = _this select 1; _pos = _this select 2; _icon = _this select 6; -//systemChat format ["Drawing icon %1", _text]; + _sPos = worldToScreen _pos; // _sPos = _pos; if(count _sPos > 0) then { - // player sideChat format["render!"]; + if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then { GVAR(iconCtrls) pushBack ((findDisplay 46) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]); }; diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf index 91104d9c6b..4c437aa6f3 100644 --- a/addons/interact_menu/functions/fnc_renderMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderMenu.sqf @@ -1,4 +1,20 @@ -//fnc_renderMenu.sqf +/* + * Author: NouberNou and CAA-Picard + * Render a interaction menu + * + * Argument: + * 0: Object + * 1: Action data + * 2: ? + * 3: Angle range available for rendering + * 4: 3D position (Optional) + * 5: Path of UIDs (Optional) + * + * Return value: + * None + * + * Public: No + */ #include "script_component.hpp" private ["_object", "_actionData", "_distance", "_uid", "_pos", "_cursorScreenPos", "_path", "_menuDepth", "_opacity", "_currentRenderDepth", "_radialOffset", "_active", "_x", "_offset", "_newPos", "_forEachIndex"]; diff --git a/addons/interact_menu/functions/fnc_rotateVectLine.sqf b/addons/interact_menu/functions/fnc_rotateVectLine.sqf index d411ffbf84..4639a50903 100644 --- a/addons/interact_menu/functions/fnc_rotateVectLine.sqf +++ b/addons/interact_menu/functions/fnc_rotateVectLine.sqf @@ -1,4 +1,16 @@ -//fnc_rotateVectLine.sqf +/* + * Author: NouberNou + * Rotate a vector line (?) + * + * Argument: + * 0: Map + * 1: Theta + * + * Return value: + * 0: ?? + * + * Public: No + */ #include "script_component.hpp" private ["_theta", "_p", "_map", "_p1", "_p2", "_q1", "_q2", "_u", "_d"]; diff --git a/addons/interact_menu/functions/fnc_rotateVectLineGetMap.sqf b/addons/interact_menu/functions/fnc_rotateVectLineGetMap.sqf index 40a1d0ca0c..e695f3fa8e 100644 --- a/addons/interact_menu/functions/fnc_rotateVectLineGetMap.sqf +++ b/addons/interact_menu/functions/fnc_rotateVectLineGetMap.sqf @@ -1,4 +1,17 @@ -//fnc_rotateVectLineGetMap.sqf +/* + * Author: NouberNou + * ? + * + * Argument: + * 0: p0 + * 1: p1 + * 2: p2 + * + * Return value: + * Map + * + * Public: No + */ #include "script_component.hpp" private ["_p", "_p1", "_p2", "_q1", "_q2", "_u", "_d"]; From 8945f99be1b23037c2be1477c4819ea53ab88a02 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 21 Feb 2015 21:19:54 -0600 Subject: [PATCH 200/211] Fix CurrentChannel GVAR -> FUNC onEachFrame exits when channel control is closed --- addons/common/RscInfoType.hpp | 2 +- .../common/functions/fnc_currentChannel.sqf | 2 +- .../functions/fnc_onLoadRscDisplayChannel.sqf | 41 +++++++------ .../functions/fnc_initInsertMarker.sqf | 61 +++++++++++-------- 4 files changed, 59 insertions(+), 47 deletions(-) diff --git a/addons/common/RscInfoType.hpp b/addons/common/RscInfoType.hpp index d0b08c50c2..fe21b05265 100644 --- a/addons/common/RscInfoType.hpp +++ b/addons/common/RscInfoType.hpp @@ -26,5 +26,5 @@ class RscDisplayInventory { }; class RscDisplayChannel { - onLoad = QUOTE(_this call GVAR(onLoadRscDisplayChannel)); + onLoad = QUOTE(_this call FUNC(onLoadRscDisplayChannel)); }; diff --git a/addons/common/functions/fnc_currentChannel.sqf b/addons/common/functions/fnc_currentChannel.sqf index 115364fb24..a7ca8c1dd5 100644 --- a/addons/common/functions/fnc_currentChannel.sqf +++ b/addons/common/functions/fnc_currentChannel.sqf @@ -14,4 +14,4 @@ #define CHANNELS ["group", "side", "global", "command", "vehicle", "direct"] #define CHANNELS_LOCALIZED [localize "str_channel_group", localize "str_channel_side", localize "str_channel_global", localize "str_channel_command", localize "str_channel_vehicle", localize "str_channel_direct"] -CHANNELS select (CHANNELS_LOCALIZED find (uiNamespace getVariable ["ACE_currentChannel", ""])) max 0 +CHANNELS select (CHANNELS_LOCALIZED find (uiNamespace getVariable [QGVAR(currentChannel), ""])) max 0 diff --git a/addons/common/functions/fnc_onLoadRscDisplayChannel.sqf b/addons/common/functions/fnc_onLoadRscDisplayChannel.sqf index 2a2fbfc9a4..ae8113c1b8 100644 --- a/addons/common/functions/fnc_onLoadRscDisplayChannel.sqf +++ b/addons/common/functions/fnc_onLoadRscDisplayChannel.sqf @@ -1,24 +1,29 @@ /* - Name: FUNC(onLoadRscDisplayChannel) - - Author: Pabst Mirror, commy2 - - Description: - When the RscDisplayChannel is loaded, this will constantly uiNamespace variable "ACE_currentChannel" - with the raw localized text of CA_Channel (IDC=101). Only runs while the display is open. - - Parameters: - 0: DISPLAY - RscDisplayChannel - - Returns: - Nothing -*/ + * Author: Pabst Mirror, commy2 + * When the RscDisplayChannel is loaded, this will constantly uiNamespace variable ace_common_currentChannel + * with the raw localized text of CA_Channel (IDC=101). Only runs while the display is open. + * + * Arguments: + * 0: The RscDisplayChannel Display + * + * Return Value: + * Nothing + * + * Example: + * onLoad = QUOTE(_this call FUNC(onLoadRscDisplayChannel)); + * + * Public: No + */ #include "script_component.hpp" -uiNamespace setVariable ["ACE_ctrlChannel", (_this select 0) displayCtrl 101]; +uiNamespace setVariable [QGVAR(currentChannelControl), ((_this select 0) displayCtrl 101)]; ["ACE_currentChannel", "onEachFrame", { - if (ctrlText (uiNamespace getVariable ["ACE_ctrlChannel", controlNull]) != "") then { - uiNamespace setVariable ["ACE_currentChannel", ctrlText (uiNamespace getVariable ["ACE_ctrlChannel", controlNull])]; - }; + if (isNull (uiNamespace getVariable [QGVAR(currentChannelControl), controlNull])) then { + ["ACE_currentChannel", "onEachFrame"] call BIS_fnc_removeStackedEventHandler; + } else { + private "_localizedChannelText"; + _localizedChannelText = ctrlText (uiNamespace getVariable [QGVAR(currentChannelControl), controlNull]); + uiNamespace setVariable [QGVAR(currentChannel), _localizedChannelText]; + }; }] call BIS_fnc_addStackedEventhandler; diff --git a/addons/markers/functions/fnc_initInsertMarker.sqf b/addons/markers/functions/fnc_initInsertMarker.sqf index d172c6a532..e5328a7470 100644 --- a/addons/markers/functions/fnc_initInsertMarker.sqf +++ b/addons/markers/functions/fnc_initInsertMarker.sqf @@ -31,42 +31,49 @@ ctrlSetFocus _text; //Change ok button's text based on current channel - //if (isNull _buttonOK) exitWith {true}; + [{ + EXPLODE_2_PVT(_this,_params,_pfhId); + EXPLODE_1_PVT(_params,_buttonOK); - _channel = ""; - _textColor = [1,1,1,1]; - switch (call EFUNC(common,currentChannel)) do { + if (isNull _buttonOK) exitWith { + [_pfhId] call CBA_fnc_removePerFrameHandler; + }; + + _channel = ""; + _textColor = [1,1,1,1]; + switch (call EFUNC(common,currentChannel)) do { case ("global"): { - _channel = localize "str_channel_global"; - _textColor = [(216/255),(216/255),(216/255),1]; - }; + _channel = localize "str_channel_global"; + _textColor = [(216/255),(216/255),(216/255),1]; + }; case ("side"): { - _channel = localize "str_channel_side"; - _textColor = [(70/255),(211/255),(252/255),1]; - }; + _channel = localize "str_channel_side"; + _textColor = [(70/255),(211/255),(252/255),1]; + }; case ("group"): { - _channel = localize "str_channel_group"; - _textColor = [(181/255),(248/255),(98/255),1]; - }; + _channel = localize "str_channel_group"; + _textColor = [(181/255),(248/255),(98/255),1]; + }; case ("vehicle"): { - _channel = localize "str_channel_vehicle"; - _textColor = [(255/255),(208/255),(0/255),1]; - }; + _channel = localize "str_channel_vehicle"; + _textColor = [(255/255),(208/255),(0/255),1]; + }; case ("direct"): { - _channel = localize "str_channel_direct"; - _textColor = [(255/255),(255/255),(255/255),1]; - }; + _channel = localize "str_channel_direct"; + _textColor = [(255/255),(255/255),(255/255),1]; + }; case ("command"): { - _channel = localize "str_channel_command"; - _textColor = [(255/255),(255/255),(70/255),1]; + _channel = localize "str_channel_command"; + _textColor = [(255/255),(255/255),(70/255),1]; + }; }; - }; - //If localization not found, then don't touch anything (default is RscButtonMenuOK's localized text) - if (_channel != "") then { - _buttonOK ctrlSetTextColor _textColor; - _buttonOK ctrlSetText format [localize "STR_ACE_Markers_PlaceIn", _channel]; - }; + //If localization not found, then don't touch anything (default is RscButtonMenuOK's localized text) + if (_channel != "") then { + _buttonOK ctrlSetTextColor _textColor; + _buttonOK ctrlSetText format [localize "STR_ACE_Markers_PlaceIn", _channel]; + }; + }, 0, [_buttonOK]] call CBA_fnc_addPerFrameHandler; //--- Background _pos = ctrlposition _text; From 9f3a0fe8d49231a70cec116aba17642ab268a524 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 22 Feb 2015 11:18:37 +0100 Subject: [PATCH 201/211] Removed displayInfo and displayMessage functions. --- .../functions/fnc_displayInformation.sqf | 64 ------------------- .../common/functions/fnc_displayMessage.sqf | 44 ------------- 2 files changed, 108 deletions(-) delete mode 100644 addons/common/functions/fnc_displayInformation.sqf delete mode 100644 addons/common/functions/fnc_displayMessage.sqf diff --git a/addons/common/functions/fnc_displayInformation.sqf b/addons/common/functions/fnc_displayInformation.sqf deleted file mode 100644 index 007e1c3e32..0000000000 --- a/addons/common/functions/fnc_displayInformation.sqf +++ /dev/null @@ -1,64 +0,0 @@ -/** - * fn_gui_displayInformation.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ - -#include "script_component.hpp" - -private["_title", "_content","_type","_display","_headerCtrl","_contentCtrl","_contentAmountOfChars","_pos","_icon","_iconCtrl"]; -_title = [_this, 0, "",[""]] call BIS_fnc_Param; -_content = [_this, 1, [""],[[""]]] call BIS_fnc_Param; -_type = [_this, 2, 0, [0]] call BIS_fnc_Param; -_icon = [_this, 3, "",[""]] call BIS_fnc_Param; - -if (_title != "") then { - ("ACE_RscDisplayInformation" call BIS_fnc_rscLayer) cutRsc ['ACE_RscDisplayInformation',"PLAIN"]; - - disableSerialization; - _display = uiNamespace getvariable 'ACE_RscDisplayInformation'; - if (!isnil "_display") then { - _headerCtrl = _display displayCtrl 1; - _headerCtrl ctrlSetText _title; - _iconCtrl = _display displayCtrl 10; - _iconCtrl ctrlSetText _icon; - - _idc = 2; - { - _text = _x; - if (_text != "") then { - _contentCtrl = _display displayCtrl _idc; - _contentCtrl ctrlSetText _text; - - _contentAmountOfChars = count (toArray _text); - _pos = ctrlPosition _contentCtrl; - _pos set [2, _contentAmountOfChars * ((((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)/ 3.3) max (safeZoneW / 11)]; - _contentCtrl ctrlSetPosition _pos; - _contentCtrl ctrlCommit 0; - - - if (_type >0) then { - if (_type == 1) then { - _contentCtrl ctrlSetBackgroundColor [0.7,0.2,0.2,0.8]; - _contentCtrl ctrlSetTextColor [1,1,1,0.9]; - }; - }; - _idc = _idc + 1; - }; - }foreach _content; - - while {(_idc < 7)} do { - _contentCtrl = _display displayCtrl _idc; - _contentCtrl ctrlSetPosition [0,0,0,0]; - _contentCtrl ctrlCommit 0; - - _idc = _idc + 1; - }; - }; -} else { - ("ACE_RscDisplayInformation" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; -}; \ No newline at end of file diff --git a/addons/common/functions/fnc_displayMessage.sqf b/addons/common/functions/fnc_displayMessage.sqf deleted file mode 100644 index 7b3274cfc4..0000000000 --- a/addons/common/functions/fnc_displayMessage.sqf +++ /dev/null @@ -1,44 +0,0 @@ -/** - * fn_gui_displayMessage.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ - -#include "script_component.hpp" - -private["_title", "_content","_type","_display","_headerCtrl","_contentCtrl","_contentAmountOfChars","_pos"]; -_title = [_this, 0, "",[""]] call BIS_fnc_Param; -_content = [_this, 1, "",[""]] call BIS_fnc_Param; -_type = [_this, 2, 0, [0]] call BIS_fnc_Param; - -if (_title != "" && _content != "") then { - ("ACE_RscDisplayMessage" call BIS_fnc_rscLayer) cutRsc ['ACE_RscDisplayMessage',"PLAIN"]; - - disableSerialization; - _display = uiNamespace getvariable 'ACE_RscDisplayMessage'; - if (!isnil "_display") then { - _headerCtrl = _display displayCtrl 1; - _contentCtrl = _display displayCtrl 2; - - _headerCtrl ctrlSetText _title; - _contentCtrl ctrlSetText _content; - - // TODO get a font that has the same width characters for all. Ask Jaynus. - _contentAmountOfChars = count (toArray _content); - _pos = ctrlPosition _contentCtrl; - _pos set [2, _contentAmountOfChars * ((((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)/ 3.3) max (safeZoneW / 11)]; - _contentCtrl ctrlSetPosition _pos; - _contentCtrl ctrlCommit 0; - - if (_type >0) then { - if (_type == 1) then { - _contentCtrl ctrlSetBackgroundColor [0.7,0.2,0.2,0.8]; - _contentCtrl ctrlSetTextColor [1,1,1,0.9]; - }; - }; - }; -}; \ No newline at end of file From a57448716627668463ab1ef7337cb1202ee8f1b0 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 22 Feb 2015 11:19:10 +0100 Subject: [PATCH 202/211] Added localization support for displayText --- .../functions/fnc_displayTextPicture.sqf | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/addons/common/functions/fnc_displayTextPicture.sqf b/addons/common/functions/fnc_displayTextPicture.sqf index 060f04f591..4c175b0e27 100644 --- a/addons/common/functions/fnc_displayTextPicture.sqf +++ b/addons/common/functions/fnc_displayTextPicture.sqf @@ -1,30 +1,27 @@ /* - * Author: commy2 + * Author: commy2, Glowbal * * Display a structured text with image. * * Argument: - * 0: Text (Anything) - * 1: Image (String) + * 0: Text + * 1: Image * * Return value: * Nothing */ + #include "script_component.hpp" private ["_text", "_image"]; - _text = _this select 0; _image = _this select 1; if (typeName _text != "TEXT") then { - _text = parseText format ["%1", _text]; + if (typeName _text == "STRING" && {isLocalized _text}) then { + _text = localize _text; + }; + _text = parseText format ["%1", _text]; }; - -_text = composeText [ - parseText format ["", _image], - lineBreak, - _text -]; - -[_text] call FUNC(displayTextStructured); +_text = composeText [parseText format ["", _image], lineBreak, _text]; +[_text, 2] call FUNC(displayTextStructured); From 8393645df911d376c8ec8da8648b024b3585a8d1 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 22 Feb 2015 11:19:32 +0100 Subject: [PATCH 203/211] Changed position to be inline with the weapon selector UI element by default --- addons/common/config.cpp | 2 +- .../functions/fnc_displayTextStructured.sqf | 24 ++++++++++++------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/addons/common/config.cpp b/addons/common/config.cpp index b86744f0a9..000adc639f 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -125,7 +125,7 @@ class CfgUIGrids { class Presets { class Arma3 { class Variables { - grid_ACE_displayText[] = {{safeZoneW + safeZoneX - 0.175 * safezoneW, safeZoneY + 0.175 * safezoneH, 0.15 * safeZoneW, 0.125 * SafeZoneH}, "(((safezoneW / safezoneH) min 1.2) / 40)","((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"}; + grid_ACE_displayText[] = {{((safezoneX + safezoneW) - (10 *(((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 *(((safezoneW / safezoneH) min 1.2) / 40)),safeZoneY + 0.175 * safezoneH, (10 *(((safezoneW / safezoneH) min 1.2) / 40)), (2 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))}, "(((safezoneW / safezoneH) min 1.2) / 40)","((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"}; }; }; }; diff --git a/addons/common/functions/fnc_displayTextStructured.sqf b/addons/common/functions/fnc_displayTextStructured.sqf index e103c904b3..4f5c7737a9 100644 --- a/addons/common/functions/fnc_displayTextStructured.sqf +++ b/addons/common/functions/fnc_displayTextStructured.sqf @@ -1,15 +1,16 @@ /* - * Author: commy2 + * Author: commy2, Glowbal * * Display a structured text. * * Argument: - * 0: Text (Anything) - * 1: Size of the textbox (Number, optional default: 1) + * 0: Text + * 1: Size of the textbox * * Return value: * Nothing */ + #include "script_component.hpp" private ["_text", "_size", "_isShown", "_ctrlHint", "_yPos", "_xPos", "_wPos", "_hPos", "_position"]; @@ -34,11 +35,18 @@ disableSerialization; _ctrlHint = uiNamespace getVariable "ACE_ctrlHint"; _ctrlHint ctrlSetBackgroundColor GVAR(displayTextColor); - -_xPos = profilenamespace getvariable ["IGUI_GRID_ACE_displayText_X", safeZoneW + safeZoneX - 0.175 * safezoneW]; +/* +// This does not function at the moment. Has been disabled until it fixed. +_xPos = profilenamespace getvariable ["IGUI_GRID_ACE_displayText_X", ((safezoneX + safezoneW) - (10 *(((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 *(((safezoneW / safezoneH) min 1.2) / 40))]; _yPos = profilenamespace getvariable ["IGUI_GRID_ACE_displayText_Y", safeZoneY + 0.175 * safezoneH]; -_wPos = profilenamespace getvariable ["IGUI_GRID_ACE_displayText_W", 0.15 * safeZoneW]; -_hPos = profilenamespace getvariable ["IGUI_GRID_ACE_displayText_H", 0.125 * SafeZoneH]; +_wPos = profilenamespace getvariable ["IGUI_GRID_ACE_displayText_W", (10 *(((safezoneW / safezoneH) min 1.2) / 40))]; +_hPos = profilenamespace getvariable ["IGUI_GRID_ACE_displayText_H", (2 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))]; +*/ + +_xPos = ((safezoneX + safezoneW) - (10 *(((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 *(((safezoneW / safezoneH) min 1.2) / 40)); +_yPos = safeZoneY + 0.175 * safezoneH; +_wPos = (10 *(((safezoneW / safezoneH) min 1.2) / 40)); +_hPos = (2 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)); _position = [_xPos, _yPos, _wPos, _size * _hPos]; _ctrlHint ctrlSetPosition _position; @@ -46,4 +54,4 @@ _ctrlHint ctrlCommit 0; _ctrlHint ctrlSetStructuredText _text; _ctrlHint ctrlSetPosition _position; -_ctrlHint ctrlCommit ([0.2, 0] select _isShown); +_ctrlHint ctrlCommit ([0.5, 0] select _isShown); From 1ed50bfe3e5653dfa367a076dfa5c9e2cd33f7e5 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 22 Feb 2015 11:35:52 +0100 Subject: [PATCH 204/211] Fixed font size --- addons/common/HintConfig.hpp | 8 ++++---- addons/common/functions/fnc_displayTextStructured.sqf | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/common/HintConfig.hpp b/addons/common/HintConfig.hpp index 28346c3da3..235b553f53 100644 --- a/addons/common/HintConfig.hpp +++ b/addons/common/HintConfig.hpp @@ -17,8 +17,8 @@ class RscTitles { class HintBox: RscStructuredText { idc = 1; text = ""; - size = "1 / 40 / (getResolution select 5)"; - sizeEx = 1; + //size = "1 / 40 / (getResolution select 5)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0.5}; x = safeZoneW + safeZoneX - 0 * safezoneW; //safeZoneW + safeZoneX - 0.2 * safezoneW; @@ -41,8 +41,8 @@ class RscTitles { class HintBox: RscStructuredText { idc = 1; text = ""; - size = "1 / 40 / (getResolution select 5)"; - sizeEx = 1; + //size = "1 / 40 / (getResolution select 5)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; colorText[] = {1, 1, 1, 1}; colorBackground[] = {0.8, 0, 0, 0.5}; x = 0.3 * safeZoneW + safeZoneX; diff --git a/addons/common/functions/fnc_displayTextStructured.sqf b/addons/common/functions/fnc_displayTextStructured.sqf index 4f5c7737a9..613f06c1e2 100644 --- a/addons/common/functions/fnc_displayTextStructured.sqf +++ b/addons/common/functions/fnc_displayTextStructured.sqf @@ -18,7 +18,7 @@ private ["_text", "_size", "_isShown", "_ctrlHint", "_yPos", "_xPos", "_wPos", " _text = _this select 0; _size = _this select 1; -if (isNil "_size") then {_size = 1}; +if (isNil "_size") then {_size = 1.5}; if (typeName _text != "TEXT") then { if (typeName _text == "STRING" && {isLocalized _text}) then { From 14411a5ef085028470c373db56f788d0f0bfef38 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 22 Feb 2015 11:36:21 +0100 Subject: [PATCH 205/211] Fixed weird fix for getNumber for Array bug in setSettingFromConfig. --- addons/common/functions/fnc_setSettingFromConfig.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf index 577f3083e6..27c727acab 100644 --- a/addons/common/functions/fnc_setSettingFromConfig.sqf +++ b/addons/common/functions/fnc_setSettingFromConfig.sqf @@ -18,7 +18,7 @@ _fnc_getValueWithType = { EXPLODE_2_PVT(_this,_optionEntry,_typeName); _valueConfig = (_optionEntry >> "value"); - _value = if (!(isArray _valueConfig) && !(isText _valueConfig)) then { getNumber (_optionEntry >> "value"); } else { 0 }; + _value = if (isNumber (_optionEntry >> "value")) then {getNumber (_optionEntry >> "value")} else {0}; TRACE_3("_fnc_getValueWithType:", configName _optionEntry, _typeName, _value); if (_typeName == "BOOL") exitWith { _value > 0 From 323d673eec05f39897a80009cc1e86ef15a8079c Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 22 Feb 2015 13:20:17 +0100 Subject: [PATCH 206/211] Removed deprecated config entries (DisplayMessage and DisplayInformation) --- addons/common/HintConfig.hpp | 95 ------------------------------------ 1 file changed, 95 deletions(-) diff --git a/addons/common/HintConfig.hpp b/addons/common/HintConfig.hpp index 235b553f53..5dc0e6384a 100644 --- a/addons/common/HintConfig.hpp +++ b/addons/common/HintConfig.hpp @@ -52,101 +52,6 @@ class RscTitles { }; }; }; - class ACE_RscDisplayMessage { - duration = 7; - idd = 86411; - movingenable = 0; - onLoad = "uiNamespace setVariable ['ACE_RscDisplayMessage', _this select 0];"; - fadein = 0; - class controlsBackground { - class header: ACE_gui_staticBase { - idc = 1; - type = CT_STATIC; - x = "safezoneX + (safezoneW / 10)"; - y = "safezoneY + (30 * (safeZoneH / 40))"; - w = "(safeZoneW / 10)"; - h = "(safeZoneH / 40)"; - style = ST_LEFT; - font = FontCSE; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - colorText[] = {0.85, 0.85, 0.85, 1.0}; - colorBackground[] = {0, 0, 0, 0.9}; - text = ""; - }; - class text: header { - idc = 2; - y = "safezoneY + (31 * (safeZoneH / 40))"; - w = "(safeZoneW / 10) * 1.3"; - colorText[] = {0.0, 0.0, 0.0, 1.0}; - colorBackground[] = {1, 1, 1, 0.9}; - text = ""; - }; - }; - }; - - class ACE_RscDisplayInformation { - duration = 15; - idd = 86412; - movingenable = 0; - onLoad = "uiNamespace setVariable ['ACE_RscDisplayInformation', _this select 0];"; - fadein = 0; - class controlsBackground { - class header: ACE_gui_staticBase { - idc = 1; - type = CT_STATIC; - x = "safezoneX + (safezoneW / 10)"; - y = "safezoneY + (6 * (safeZoneH / 40))"; - w = "(safeZoneW / 10)"; - h = "(safeZoneH / 40)"; - style = ST_LEFT; - font = FontCSE; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - colorText[] = {0.85, 0.85, 0.85, 1.0}; - colorBackground[] = {0, 0, 0, 0.9}; - text = ""; - }; - class text: header { - idc = 2; - y = "safezoneY + (7.1 * (safeZoneH / 40))"; - w = "(safeZoneW / 10) * 1.3"; - colorText[] = {0.0, 0.0, 0.0, 1.0}; - colorBackground[] = {1, 1, 1, 0.9}; - text = ""; - }; - class text2: text { - idc = 3; - y = "safezoneY + (8.2 * (safeZoneH / 40))"; - }; - class text3: text { - idc = 4; - y = "safezoneY + (9.3 * (safeZoneH / 40))"; - }; - class text4: text { - idc = 5; - y = "safezoneY + (10.4 * (safeZoneH / 40))"; - }; - class text5: text { - idc = 6; - y = "safezoneY + (11.5 * (safeZoneH / 40))"; - }; - - - class icon: ACE_gui_backgroundBase { - type = CT_STATIC; - idc = 10; - style = ST_PICTURE; - colorBackground[] = {0,0,0,1}; - colorText[] = {1, 1, 1, 1}; - font = FontCSE; - text = ""; - sizeEx = 0.032; - x = "safezoneX + (safezoneW / 10)"; - y = "safezoneY + (4 * (safeZoneH / 40))"; - w = "(safeZoneH / 40)*2"; - h = "(safeZoneH / 40)*2"; - }; - }; - }; class ACE_EventHandlerHelper: ACE_Rsc_Display_Base { idd = -1; From 9d44ec18b861d73d2d4126e4493646e496e4d960 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 22 Feb 2015 13:35:05 +0100 Subject: [PATCH 207/211] Added a default text color setting --- addons/common/config.cpp | 7 +++++++ addons/common/functions/fnc_displayTextStructured.sqf | 1 + addons/common/stringtable.xml | 8 +++++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/addons/common/config.cpp b/addons/common/config.cpp index bbce1ae77b..ed1f947db9 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -110,6 +110,13 @@ class ACE_Settings { displayName = "$STR_ACE_Common_SettingDisplayTextColorName"; description = "$STR_ACE_Common_SettingDisplayTextColorDesc"; }; + class GVAR(displayTextFontColor) { + value[] = {1,1,1,1}; + typeName = "COLOR"; + isClientSetable = 1; + displayName = "$STR_ACE_Common_SettingDisplayTextFontColorName"; + description = "$STR_ACE_Common_SettingDisplayTextFontColorDesc"; + }; }; #include "define.hpp" diff --git a/addons/common/functions/fnc_displayTextStructured.sqf b/addons/common/functions/fnc_displayTextStructured.sqf index 613f06c1e2..054e98de70 100644 --- a/addons/common/functions/fnc_displayTextStructured.sqf +++ b/addons/common/functions/fnc_displayTextStructured.sqf @@ -35,6 +35,7 @@ disableSerialization; _ctrlHint = uiNamespace getVariable "ACE_ctrlHint"; _ctrlHint ctrlSetBackgroundColor GVAR(displayTextColor); +_ctrlHint ctrlSetTextColor GVAR(displayTextFontColor); /* // This does not function at the moment. Has been disabled until it fixed. _xPos = profilenamespace getvariable ["IGUI_GRID_ACE_displayText_X", ((safezoneX + safezoneW) - (10 *(((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 *(((safezoneW / safezoneH) min 1.2) / 40))]; diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 3ece4206d7..7e2920f11c 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -326,7 +326,13 @@ The color of the background from the ACE hints. - + + + Hint text font color + + + The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified. + \ No newline at end of file From dd51037c5e7fcb58167df1d95a9b1644de65cba0 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 22 Feb 2015 13:44:17 +0100 Subject: [PATCH 208/211] Added support for image color --- addons/common/functions/fnc_displayTextPicture.sqf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/common/functions/fnc_displayTextPicture.sqf b/addons/common/functions/fnc_displayTextPicture.sqf index 4c175b0e27..8472b3d1b6 100644 --- a/addons/common/functions/fnc_displayTextPicture.sqf +++ b/addons/common/functions/fnc_displayTextPicture.sqf @@ -6,6 +6,7 @@ * Argument: * 0: Text * 1: Image + * 2: Image color * * Return value: * Nothing @@ -13,9 +14,11 @@ #include "script_component.hpp" -private ["_text", "_image"]; +private ["_text", "_image", "_imageColor"]; _text = _this select 0; _image = _this select 1; +_imageColor = if (count _this > 2) then {_this select 2} else {[1,1,1]}; +_imageColor resize 3; if (typeName _text != "TEXT") then { if (typeName _text == "STRING" && {isLocalized _text}) then { @@ -23,5 +26,5 @@ if (typeName _text != "TEXT") then { }; _text = parseText format ["%1", _text]; }; -_text = composeText [parseText format ["", _image], lineBreak, _text]; +_text = composeText [parseText format ["", _image, _imageColor call BIS_fnc_colorRGBtoHTML], lineBreak, _text]; [_text, 2] call FUNC(displayTextStructured); From 77666e80978a3ba2b64a8946ee02d7c4a1d37f70 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 22 Feb 2015 13:58:51 +0100 Subject: [PATCH 209/211] Added weapon resting state icon --- addons/resting/data/icons/icon_bipod.paa | Bin 0 -> 5625 bytes addons/resting/functions/fnc_restWeapon.sqf | 3 +++ addons/resting/functions/fnc_unRestWeapon.sqf | 4 ++++ 3 files changed, 7 insertions(+) create mode 100644 addons/resting/data/icons/icon_bipod.paa diff --git a/addons/resting/data/icons/icon_bipod.paa b/addons/resting/data/icons/icon_bipod.paa new file mode 100644 index 0000000000000000000000000000000000000000..c2b6a2fb3e1b92e0b33034dbd7dbffc855baa9e0 GIT binary patch literal 5625 zcmeGg3s6*5^gebU5tF-+Y)U{bilpV3&g7<{?%R~lIx0KGBd0CC*hd+t5= z-1EQZKAuKLTjHif$6K_7kmly*Q4F7DnSnS3Ks?$qJqmFS9>m{>ii#EB|1x;8{0PYo zAY_Aqkkjz=4g?|)0vsMNj3CzBFl(-sQbI&gG-xhLsZR3uK?N5;hQ}L5RhU-hz4}8N z>WfaC(G+-kRR_A4paaOTby8$4VAX)54|Qeh?NvFK%{XrZ0YK4oLpf z5J^E^X+=1b7Zjoq{x%etQoHN7Zdt~0758{z>y*+frQsUdv2N5Wp0f3gEmz4y@-)}ad`^`txhgQnOrn6!cLvS<_BisM-INTQ6Zk>5iE}Tj!2JTpK_*S~YeN(fDyH z{c{qf=W@CcWtMnrXQq78+{N?<^@VsMemH6Q!0|Y16D*d8t+no^dN%BGR8q;|lb@hG z9Js!qvAq!dovF(2e`xs(=Z;jCzqYtI@n(64mRF|NwWf74ZF!zweFj%zyp%wMc%8{%6dVtiO(+3HI(Wa4kNt<;AVag8Xxo>ohn z%N#P(mw>C{L$mlVDwzbnvb4L!?prp-P`|{u^Q3+4Ls?rPu< zz=bxf>pE4a#J``PAcS68y0`k;k8^PUhp#;$11?HQwHI97`4F8v1bjs&rDocEg3{nR zLY^F#2lXi|Ha86AgYtY!yx-H_%{E;v(bwa84)S4O8I{Xua{<}|^?fGm+BWmyv%_&7 zfD2{$xPt8m{Y9_s&A8mPexk_p`jZ!+Iu+3GU9dT<(;mp|D%Z=UihO4W(|kCCSY=+o4E@Rn9@UYrof;>#aQ9Q)<=0ZtGRo)8B?2OW#0Ctn1Z&(E$BoKs)9`Ash%3 zA-2juKA^w*9<KPXDj>g?z5HuGgY|BEO8!GZ^FFsRd$^Puq-ZM|D$cWb zfR{4jzh5tx(>4cUk7GOpPm+?={4+rQjcbA88=vg92V9wI=~aE8yKjaB?47m$r#2EJ zWR=GbfOuLN9J~`A`MZ=_9#hf9(hl-6Yz@@J1+uvs(-xfIe}`lFPW*5$1S33ZX!pcz zE-7_WMjDhsxMsmQL>KZfy(|)s#SL%H*3q*_jmKnuTX?uHG1qVFDjl+PpOO~W6T=8p zx8ski5sdKQJRCzee71@aGiNgL!#02XN9HA_oyxI`2k+3vPruu8FrCc<3r-iW zx9iG?9_ax*1~vk6Kl=~Ql@cT1B*67N^qE77kL($eDIaz76Mzi^BfOE{)QfONo6>8l znS4AyvcY7G{&>*WNblJkXjOXn%fJZl+sUJ8HZ63uHl4>y2y|hbca1~d|80m9udQ$m z@mxFA^?pUBvic^gg43~ zy7HUksAQ+2FDIt#-k#tra$lot*VA03=K`g~AgB~b58E52JM4R_>2U|fgVDrTvzJP* zj`SDKL%e9Md1~7xMmJq^bk{3w6YRzL7w-shW_4Afd_Ax2{k8us`h0#&KLQ4EKaPhs zWp0kAO|D(J3u z4q#ybx97OPy4myJ$(YaNfo7D`k=PaLY1y;;Rrvv121a-zfA7s1X)aR|mdEKX}I1x+y Date: Sun, 22 Feb 2015 14:38:48 +0100 Subject: [PATCH 210/211] Added option to toggle between progressbar top and bottom --- addons/common/ProgressScreen.hpp | 4 ++-- addons/common/config.cpp | 9 +++++++++ addons/common/functions/fnc_progressBar.sqf | 13 +++++++++++++ addons/common/stringtable.xml | 6 ++++++ 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/addons/common/ProgressScreen.hpp b/addons/common/ProgressScreen.hpp index d7df49efdf..751d48af9f 100644 --- a/addons/common/ProgressScreen.hpp +++ b/addons/common/ProgressScreen.hpp @@ -17,7 +17,7 @@ class GVAR(ProgressBar_Dialog) { type = 0; style = 0; size = 1; - colorBackground[] = {0, 0, 0, 0.1}; + colorBackground[] = {0, 0, 0, 0.0}; colorText[] = {0, 0, 0, 0}; x = "safezoneX"; y = "safezoneY"; @@ -31,7 +31,7 @@ class GVAR(ProgressBar_Dialog) { y = "0.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; h = ".8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - colorFrame[] = {0,0,0,0.025}; + colorFrame[] = {0,0,0,0.0}; colorBar[] = {0.27,0.5,0.31,0.8}; texture = "#(argb,8,8,3)color(1,1,1,0.7)"; }; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index ed1f947db9..d562d185ec 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -103,6 +103,15 @@ class ACE_Settings { description = "$STR_ACE_Common_SettingFeedbackIconsDesc"; values[] = {"Hide", "Top right, downwards", "Top right, to the left", "Top left, downwards", "Top left, to the right"}; }; + class GVAR(SettingProgressBarLocation) { + value = 0; + typeName = "SCALAR"; + force = 0; + isClientSetable = 1; + displayName = "$STR_ACE_Common_SettingProgressbarLocationName"; + description = "$STR_ACE_Common_SettingProgressbarLocationDesc"; + values[] = {"Top", "Bottom"}; + }; class GVAR(displayTextColor) { value[] = {0,0,0,0.1}; typeName = "COLOR"; diff --git a/addons/common/functions/fnc_progressBar.sqf b/addons/common/functions/fnc_progressBar.sqf index 1d73cccc79..0b8fcc7ac4 100644 --- a/addons/common/functions/fnc_progressBar.sqf +++ b/addons/common/functions/fnc_progressBar.sqf @@ -15,6 +15,9 @@ * * Return value: * Nothing +* +* Example: +* [5, [], {Hint "Finished!"}, {hint "Failure!"}, "My Title"] call ace_common_fnc_progressBar */ #include "script_component.hpp" @@ -32,6 +35,16 @@ closeDialog 0; createDialog QGVAR(ProgressBar_Dialog); (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlSetText _localizedTitle; +if (GVAR(SettingProgressBarLocation) == 1) then { + private "_ctrlPos"; + _ctrlPos = [1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2), 29 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2), 38 * (((safezoneW / safezoneH) min 1.2) / 40), 0.8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)]; + (uiNamespace getVariable QGVAR(ctrlProgressBar)) ctrlSetPosition _ctrlPos; + (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlSetPosition _ctrlPos; + (uiNamespace getVariable QGVAR(ctrlProgressBar)) ctrlCommit 0; + (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlCommit 0; +}; + + _perFrameFunction = { PARAMS_2(_parameters,_pfhID); EXPLODE_8_PVT(_parameters,_args,_onFinish,_onFail,_condition,_player,_startTime,_totalTime,_exceptions); diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 7e2920f11c..d1462c1214 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -321,6 +321,12 @@ Select the position of or disable the feedback icons on your screen. These icons will show to provide extra feedback on your character status and actions performed. + + Progress bar location + + + Set the desired location of the progress bar on your screen. + Hint Background color From 82c181cd7c9bd5c1b7dca0ee4ffc84fac9cf0acb Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 22 Feb 2015 14:54:54 +0100 Subject: [PATCH 211/211] Fixed header --- addons/common/functions/fnc_displayIcon.sqf | 31 +++++++++++++-------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/addons/common/functions/fnc_displayIcon.sqf b/addons/common/functions/fnc_displayIcon.sqf index 94fa887da9..1fbc4e89aa 100644 --- a/addons/common/functions/fnc_displayIcon.sqf +++ b/addons/common/functions/fnc_displayIcon.sqf @@ -1,14 +1,23 @@ -/** - * fn_gui_displayIcon.sqf - * @Descr: - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: true - * - * @Example ["myID", true, QUOTE(PATHTOF(data\icon_group.paa)), [1,1,1,1], 0] call ace_gui_fnc_displayIcon; - */ +/* +* Author: Glowbal +* +* Draw progress bar and execute given function if succesful. +* Finish/Failure/Conditional are all passed [_args, _elapsedTime, _totalTime, _errorCode] +* +* Argument: +* 0: icon ID +* 1: show +* 2: Icon Path +* 3: Icon color +* 4: timeAlive. -1 = forever +* +* Return value: +* Nothing +* +* Example: +* ["myID", true, QUOTE(PATHTOF(data\icon_group.paa)), [1,1,1,1], 0] call ace_gui_fnc_displayIcon; +*/ + #include "script_component.hpp"

    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 z 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℘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 z zxvnKdlNAzd)Yc!Rsq^=Wek%_kD;8q^)F?{#q9<-{qE|x+$e1EU*Cm{k$L!n-!DrL4 zQzlFMO49-_*D)X=$%yT0ogQAk?{JL&)8}Lc6M6rJ?NEAvKugPDCfWMm8%H|;5%}Pi zkvCU>Fw{Qk+rxu#I2yX^U;rG}sk8lol?PnYTMkb7K{D}?^wPK6syU4IdnF5PuDt-Z z#88}3_}N)xw-wa&^9Q`z%H8Ns$^PfpfjHdyT-;Nc7}q@Z`X40|pvC`+G#Oi+dOTb; zZ65`Cy5ZhsTWZpm{TID2z*bT2Kf>#)U`L*Kcn3i7VMxZ+w&?1VYcDe$cg_N_nCbZ9 zs*wM?hmqFo4cB5r>00+v_St#Q4<5^h70{lwP!1GUtPZ#+Z&`ytNi!YDbm&L zAb)$m^S@Rn5GQm;i(f+>ueB>#RhH)CRT7sw03zS2x^|>CZSKVh@~`KhLU^;NU`kc; z_v61(x7-Bb;%EuKP{?`nY3!3p)i!(u40K;AN~QFrID}m$F>;Z&`=lv{5-=~8p|Sp4 z7M3>rEI`7$X!C=u-9Q+JRk!sOgdk}J!}TrPI*=L41# zY!~yp1CZ^y1X}O92M0=GyOZ}HB|?2R>in9Nq_TfsMckW1W`vGPa+#4`kr5u-?0WpN zI%mato!I3qM%4EEvYF(Z4(!EsD4Jbj)BGC~lw`(DoUm&@_`J!elSch#51_ z!3N;r#-#Y;@iYHTnRd68#I3-_#{SrTB))DE&PKiM!1m1flvSLW!kZp@=>Mr1J5V8I z$(M<5T@{s3%Dp_F_Mn{eV4die3QsbvMvfN06O|{Wyg54e!^Qdlr&`I5BN_K~?GAQi zMmVx%3@WZTsgAX;W^*8S7g9W(dAT5&yn=MeaXf5O&W?OKRhBO3Ua}(TDLeu!m8h(g z^XHJ=yq24Ak7rto&7~O!Uz1ONA;S&QeAwK6oXv<*{npS43$S%Sp({%B+Pkmm&kndv zM|~AJm9YP9TRzKS4mf$NhC^}3QtR~d9&Kxc< zCGJ514s`_S|EO{(KQJ@uQzteB_J@}Ipsm%M3sE^Y+1>C(gHDQ$vWz*0z6{n41KAE$ z{ydCM*Ak_?Qo(Xli5Ez6W63G-EJx)aPT|@np-i0zH zp%O@~>PA1N&^PxxSX1{!&-F!%4g8r9OVk->3oba~*Xaa?2=J2TLYTnh=%rNCZ{D3W zG~lZ~LCAyVpT03FH8(PPX@9U@W~qmLY=##rTUPJdOE=&!yRqZU0JYNG8YgJ+Wv1fL zd!QeFSwsm<&jT7P_yH8oc+@PM;67Ll`9$+VDa9103;@Q}z6iQG0!T|iSfQT)F2-I2 zBAntx;Ee^|lam^3uTy{$Yu37VUJ#;8tG$_%VNtb1-b@SR{Sq@~;WgonZdOBsvydL5 zQG@AYGTOXCM>Pq2b63Fp*@!PQoWc{KXpD4~4g&mQ>X&hr8q22>| zBksAGsGg++^kWoVxf;AQ7?-DTVkX7>mDG*jG zf_XZghutC>_)ees`(PG|=xxs8^fb<;k9!#W-*nw#z;Ul#3c158X6q1 zejSctCcl1L|3a0@*icIG)7)y%kMqqX!DQV!m}lg#mRRZ!QA3vKt$b&u5FcJGH_CZ- zWAV&dD!0%x4_-yM+@%;_v1wlJF-frxseAC4RKuQDHQ8ren6MVzEM3`&Y|888mYewY+%#`Fl`#BCt1r8@_wmhJbpbx#>c{moveoT_m2lgb> z363cgc7uL|mUxW^z;7Zxfa&R5yZ{K4ZWwJ`Tn`<~D zQIF>O<-l8WFsjZhOi5iTy#3mi#r1XY8@_qZ`PVN757^q)%{}i6j~)p4Yvsp7$Kf^E z&?zmeOS(fyPu+i)tQf(z>zfObJDr2(6k!N84qVIgO<6ZXGyO8e-TmMP9uprtrASugzS~Q9m2!Jvg!d+r1srV{Tbu zmLk1r>;5|dSOrVO?D=riQJ=lzic^k%!knIvL}p}TEvDhpG?(?2%zvvvuuRN<_OXI3 zIriwtm;Y=OwxRdClFKso<|!|>9EK~CSNkQTD(hq9?CmKukd8EF`sC8R1&3G0w5^67 z=+H&+w6dh)4e7OONBY58`kv<}ha=2gYJhu`O}_6@bSVq_DKkE&sRd_IX7vmc~`Bx0BeNdN~<5Dk!k1GHAux^e%U2m}Za;D!ub zK!7k5N5EBAqKOO9Y`}$9tJYZ=j%qcj#A;n3See(6T23`m0S^yVo+I15d5ZfTb0!A}zLaVu5>D=i%3D7<dy_xu1$AeB7 z>l~dq@q;9D@!8x^9DyZ8pAOmbRFW@R^rdR$K8jX?icXrMYIqkmXH~<%UnJh^%lD4j zP5#g3M9l*RJmT@?wQ^{~ru7RRtdIL;m7BvQYD?4*Deuw2xI-(Jz`6eNv?B&0ib-Su?PVqL{4GzRcGHd?)uxsm!DXa(E2&}2-7#HcGI?iu1*1hEoaD;c> z`k<}MMQ(e<&=Ro)_-7`uqb}pWz?w5O*;4eAk~qm21TIeXrkRa9NsH_q0}RJwJ9hcidojv%U)Y zv$~dhOo!c>L1qm@i)D$K)%m!8e%^V(%MBA3?7uIrbXZ@b(9stP^{IAOQ zn%dmyoy51zRP8+U`D;T=ecr!Ij=Fw+4xc!Ck}E-@lEjhVs3%zZvmnJ&ixAuG{YLGp;1Ip8=Mr zaZPZW&`h=I!GgOWmlIspfSibrc94bP>3`D%Crl=Q&vWUCo8)>25gAF-eYb?`U!)4V z&?XDS88E2u(@pTEC-N+M<#4y8Hx5e^q-t&B{MuJRUA_I3f~w!bl7<*BkzI1}bqu@7 z8YsL#6h)X=QB>wuI$sNV*g-O0CbZ`uV9JWs8Y@lvttVP94@7i~`0^xCyN>U3X^ztU~6 z2Yw8RNEoDX1|g|k1b-xz7Qd^H+&&oxjnjFj@zmyxpp#I&3LYI|EwbgsCL<4|w^NIE3M7Q8~3Udy-X3jJ&dz zEsb>WLHvk4HBfgj*gKSM&sG7UEI8?#T*)tl5(5Fu?ekL@3EoO|kkLlhjw2^^vV2Lx zVdNxFymxS0k(rA9OtF<{V}p#tLfAtM&4&>{WdN*I-v=*5`1_K~Kv8Te5dmbGQ{e=H@Q~R_qkTgyOqeixtU}HPB9QwlIpmD4kFSO-^ zYiFe|r17~bfPsaLjiEW`EBpGiWi-clxdxk%HjHM=^AW|Hqp*bm#uTiGR3^1rfNpV} z=A7Ku56cE4+qY{f(06l)qI+gC`>E8hF> zy5NaM-7l*r3fll&fRIE6c)Mr;mJkV{W?^bb`yR6e12n???piC=j-`aK6BV-Ld5vh# z0+n8u!zPJ#nV^F}H&DOE7DpkG*yFYy-kJ^+kWXIC*fIA2DX}-@GILTf;kMsMI_!em=v-|=s;Ft^H$U&-R3@i z7*K0n)M2(;pkV1Xrw?v~YPdTN`3_^P0ovd}$^%8Yc*8EhQLxN-`K#m7jLhzd(I>nH zN(rK(-}e{pt;a{~jj0+)I`-I9D=Im@i!QJ~)WYNNQ*rB&My}@X8Er`digqmOq`mmF zmUD6I(WcXTDVP>T#HPK{Vs@b|%QA+djYZW`_q@7wqvC!IG?o*D33$@^f@*I3$W=wi zXLx$Zc_W8Nv)Q!sOrJ*h@WB6j=CmaDDR4}=97{>8>a1VPH**FBo1= zs-#-FEstdA&rv#x(PX6a@8SX|9n!CMpnrLO*HI(10#zC7FH-(UVognii6dR^!4?4LWy$A8=f zc){qwM7)HPx3iQ=q9%%{%wu7a&#v-I`AfZ`VWjQG4CEkKP7$>EfdQwWy%?{Ne~FTA z8M&mg@+?)Gik^P``g%QYjkkKu(-L^nf5DpnmF7K5-GhH$g3U!s5-pFa^3N{V*0#Yq z0F%9KdAe$McE;EP+&M}R0tc>p^-Br@hN?F89}@(PdB4H)sO#3jBSMdkPLKCNrVoCw zfK;7lT{iiDccAMH?QHp;U0wY6q|Z6W*#U0C%bMyVmHEx%O7KI$=$V9mKghpP&hksqp02;;X>i*tZ#+dqmqB!(b=ZQ_Qr`IepPt?R1Fm}n ze@k@L)`0X3sp3AUDs_M7B1v{#;JwhDNuW8LU-sUX=FyXXSI*lHmYrcyQvbFB;liag zOOoKr&WER-NV!`jmk2{NuyCn)Wa^e?h*Qr6(vAt%yol)VdXkTP!4Wo(ErNhZNJsSG zJzUOjgL?aaz{zjW4r|_9FzuD?r>U@HN15LzrPbzf&s}O8@fr>i|3P`EHfu-osecwv zqa>;s-^F+0qP*Pl@S`+;M_$bIxEXNJYUir&)mxMAp|5|f0Ej}Yyg0U!TkwHf&mjnn zXiWF^lIpF}$nDKDh6;wQjqvb1;kNm;O98F34y1CotyLwYA9v;L$GV zsy6o+YO>-VcP^M!59is!PHe_O1Iq@ZAeA3f?3P0x^^exWpJ>2dIo;Qs_o@lM~(IUe%!AV zm76^O0CH|$!TdYZ*1*M|q_PgJ&wr*FFU&b^lD06iqohOif^AJ${3wVKT&7_!sg78wo6W~hlqn>NVERei z4+HD*AK)iWg|V2932LQvxGURcAtV){z(3+!`=F}S9bl^f3TW#Wk~-FD`UjNWf6hLt zeN-JW`LY~HP!6p)G(zi43kw!*Bec^~z;$K9oDUy-N|$f&2ipmTjR%#~ej)?X6@taB z2!e-poGgH0I~&I2@CPEEQ(!jh>;SE6a(Ln?78K0eugMAQuP6y8(omUaAR!Ly0X`Y# z*0m-w`xN{=A87QWL7fXuD=Z+N=yU_$VRmAJ8Ks-8AW+{zH9f~9Ckl({rP~$#vJhA+ z^iy@I_>eM3pTk6BPS7sK$@>9I=BKspe{NZ1dGx`h~KU|SF-L?ap!@%Oh;>sL>?7;&_B%009HHXml8An3K zuLyx8sy$eEoyr$M>NnG&@)P3dx>-Pf>j9d)P{=pV3Myon!#XI|?pdyFg(DA&V+i z7%m-Hp(>CrS_jPdeOLL3q%0!tlE$w+CdIdFd#Pvu4Rz0|(2gdyO;W?>etJI55Ys1D z__cqF?Dsb&G@*Jj?iNa7&$1F=G}xCYJeQ6(g}Bi%BmBm+IDZjQ z6NnQ?8B8X@TX!lY!Y1j~Y$EQd zn$SKEqR6f_YK7S!DeV?0nm0?`Xr&sZqp1aw=0!l0^-4b&T$U!c8k%4v%*7yw>9k-m zS=raj4o5-I%4+C>scL`^4<;J%1jK*E5Oz1!f&HGYg5?2?zc@6c9Z(T6=;V`F`*oFd zJyZiQG-#!%Dmj28z#qS>C$sLQ#r8P$KsS3~aJ87_vcbVgcBP>-67?pztWg=Xkv+94 zy(}kPr1#e=$f8=Q{TR%QR(j)DF06mTnT>jPvvr`L%)S!dR6SDrZFwNB9g@(Yay?`m z;G9oaz!_>o7_gv#Gg4?<2jyqMq7{&6NJ)$A1{Q=a8Nd^@K6d{;8Z$}9FqP(j#Ks*q zpns?+b^!@R$Ol)*Rr)D*gDJhqeP4k|V&z0d4X~kJ_3SL%_wXVv@MIW8dl5AxIt9|K zT%UVwf7bjzzkoirQnG3F$=#G~UKD05${xHlU=L^ZJmm*$E(B!}j}z}qh1`a+sGRhP zz6aexTs0$2#T5nGHV%7dCdIZ1AK@_?spc>~`^df#kX+PxbX3WKEZ*$LJ@b_mZ6xaH zcw*Si;T~cYpu(sJx&>gO6H7)qchck7WN-Uo`H(lB`|=>l^yjMX|VnH_!Ab zy6FW05e=>!!QYuPVlr#jG=i}Z)j1qq4ZNWb3pVWi0f+t0e9TdwcP>kuG4sI)BNGi5 zAM&W;?l7BjPX>Ub-CuT=u@{^0iNWtP4LqPrS}m0Y`&j7cxg}69i9fN5y@TtaKA*Ph z4oJsW8dY;c_RiF$vqA?3o<^Uw9k1KE^-12TO}`D)?PfbWS4uWhr_HTrj0So9bn}og zJGrCZiJo{|qu5}!Du(^%PR>)9z65Uv4Gy3Mp^Z0tVT+a5d)AbNlMqPN#opsr9v$B$}fYH*1fB(I_ zl3S}6QtpZ2H%AnAUaH*~6maCfS@S5&WPE;a#j5I}L5WvC9V4?~g#C$LT*)KN@9M6q z2fMCi_59<~66K191+xgOAL!$j&m$UmS@(9>57I!-nU_3jl@uIHjy#E5HPELv$p-W4HY`eF{EwhCx{f0lWcxNQs{Q?Typ2YA7z++op@EaC+@K5P+eSL>dB zaBnQ!6qr!-Vn5iDvEwIjg3BgXRW)wSSomN1 zx&i9I_SKp()tuQkyj;hul;r_6zlSGD8CRV#lWMEN^PJxt4MmB~lsE4QMhqn-3-R@w zturqF^>(#jUi8DsKFAH%iyHM$K4tKO1-+gg6}+F0g+9ty3%~aA?VjCxc%A=Pjt5=_ zukON_l%tiI$*u1HU9O-we=i{}#A{u1PCohco<+qBX#3-UiUV6Fb>3On=|=%H*BQ%Y zXJx^Q!QF=oso*$z6zo}7&K)h!T`w35LNfE+^}4-+_l9TY2cdkgqqxblJr}rs`6*_{ zMj5;gc=mM47z!rDo1^4e6}*n2$9$F(gz@+`=K2Lyymiah_MDqazZ4XF-a+KE(>>h>eQU_9*j|^nSOY_ksN0q1*;U2EM#moO^n;Fq4?@|?3U21q z4eK(=$V_y_)4B0d&YOK7f|4rWihuPw_o9~Dmc(4&GzKoy{O;2h39mSA$AZMO@V$y* z>fV~d+dDAA!Gk(8V>9X!|Sh)>Nt~rQoLSAM(*HaZ)Nyb6@Co( zoNQlls(09sg^%8O_PZ8!1u6+npu+wsl)u`;2{V;FY~28F>&Yc+rc@MiuLthhc@I`v zFU&o5Fp=@+pN|m1ad^1=cW?)fyryaT*sjf*?Yml%VqFSSqRAK2uFemhCE7$B8V>PHVf$( z(AzZOS^*79CJSx8h^y8su>A}UQVHR5s-qn=sq1E?%2Y}ghZBu)AgLI7n#oEjHK)Qf zxf0TH#&j}`KTQuTeIc>!4CFZ1q>l_nR0MG=3*1$np$~{sB3i-*s{v-;z@rSeHjP6_ zF3__|z-j7;ZLU_owh}2(d=4h!aqGqO#CEj?@`V4;OV0v4R;ZydF@NL@-DdPl5`xg> zpH}#_^})~KK$Q0)jJqX!n5|YCa}3RvLTJkXYqK4)5~GIWki;8^?3i_tl zoIYK=FEJTRY^8Q7O>YJ*u7ezbVU%2<>>6oz)dUJ}(DcP>2f0lmhUBrbKb$`yynDT( zX(JeZ0G1Vd!WDClQ<$BAFwo0Qiqau$7e}l{DVrM7&Q)8mObT<0KGkX^B3pxv;DmNE z5@sqbRQmv>RHtSo$ufy9-d0d`dc$bB960`SyL`gzBl`joTyMPI1O*B;(4>Wwz$uN- z?W2}nKmh!&QE0G|v{X2!)Y5aX?9kr;Fu$<6Yt7PZ*wKy!JXRB1N)n@Hg+F_CUH5Da z&2~As-Kw@~7t?iF@~-t=8(}=im(J7$Al}gXNOJ-S4srzf!Q#m(1D^&cwtQGc{F~}c zY@2GOVms1lAx7A>?;yGi0RSv(7>yqTT@e0|EouLuP+@1V1-d*<^G3M5q7u+gSL*1c z#hQNpJcI$!29sGkvS)}vQ#vx$I}-ckXRM@^{$kc+o6~)W!dYD#0k-OcLmffFMYi}#NyN@1LUf4UXT{8P7PsOl?1jJ zA+_ByQ5`y{;u5>brKGMmJDzM{&h z{k{93xs;5Eo$D=XwZBnd@G+Z|ve$IJ0dgD3X-Dm?=5Tu*(iOL)BOGIQP4^e=1U)H} zL-M&MM7-T;kX@k1{|TuWcj%z-F_Fa`EMWBwQpz^UW_G&+xnz2eze*oy97+-oGC`8$ z9*u8P5rma#|90!lz)JyK1^*W{fz_FIuxn}9*7EsK-Hlqv-j{yy&0_*Ds+wtQciT2b3@$6*3qc859sZe4pL1K zC-RqN7rNl_>~o^oQpc-op0z#0CPVS3*D5oZ{ut^G|xHgeHxq*acF!WMgX+h>3~j>5mQMD4B4b{RS9sB@q- z>Cl#f#)bms((C49HvnT42SH@4fr;^6xjq%zh4EUKU(Y)n@*F zy&$=B9(*}OaRAwqcm2W0mi}x?;%M8)MPbZXmmza&{GsR|34iqBNU@aL{afCy!(_lD zeO`7ZTAC+%dq1y;A{e5&{3HyEb<;01U0rbXAXR%|uwYVS;cxZzvsj$C&N9H}zt$Zy`Kp?fO`2 zW!}TTd}@z$z+?8TySi&n;rj=M^(#J71~+(|osw09toS<$)Z(cY|rzy3T^z5vFz5RVZ^edd8k_l9TL0{0*Gcb==< zc-nxFOOD?`{yct7OKjLQNqU&Jq894Hem#O{-Rm|lWoMCZ16d616(4!W+1);C)UOv) zU|aN2*{PzcJm%JxnIq1F%{GRuRl`i$rOm^G{sV_HVcngx+p*%EQ^x-n2-cY?dSp_0 zX1%g#W-V?2*(G@XcYHl>b!A%N6Bdjwjr>n>o?8)ie$4-lLsxefR64oW<{e9oqLGGD zY%@`$?CD@hKIO&Q%6nppEeS2xx3^YvucZ8W{53MLDdB9Hw2&(~GlKosASDHxh4QXn zIw&c45+(I~B?QU1<+-Cu!uhpg&$QZdh#j0%GfqmlN0TYcDJ5`!%17Ms&P8Pwa~3t-_~R{G$wm}FrLIeL6{3`{HfjQ;+{G8TV`Iq3 z4b+rqF0SJoh`SpY=MGwQ_lEnln*6_mV_p7u0e1WGqQH;Unal7CqVCH<=T46HY?N|m zZ+aeZ%ZI|ehMF19kCmLHl+$#R6_OSGp|@5w=BR_)4_+w+%ka{*`%Y;gd*cZ7**mNp zEoOe5S6%SG1WoC=l~@ga)e|_JFf&gxs+O&My?#Lt|Ihg5K%UKzhX;U*-Y zg$bii)^RT`T8P`+0=HX+hbOCsw=#5NOqml7V|mLOswDHd92yjh;D~JGq{hS@3J|rH629dOTP6RTTwXw+7I&;Vtp; zH{Br##`g8CP8Glv?S9^WQOezv@#JODXbRsj#w$|kS%|p*yidqwTssI+iA(A-6ObO3 z77ktV*nl0tKhB?5!SO85IupB}>YP4(g}{^ST5$g9_ud}(%y}xVI8>F@#mXFU3J;lu zy`2vN>pARSmIarPg(7rmIgu~n7N23ApSeVU8H0JG;4^fWQ&_? z#s1J*c+1?1GG<6OMYI~jr`{E~N1f>Kw76|Ko&BHtA3E4u$lR!%(l{r%Y|``d<0v)* z?#Gu$ws3o*lmIvb@Ll`HISqcO4~&NSU>V^$29B=(%c7>)zS2tVX0ZCsM<%RFkE9_^}WO*aVNeA0$zbfvTlJI+i0J z(SBI~gioA<+&&ISQ_hRfy98T_>@lEuC@ipABb|iyLn+YjHAQ71vL*$yGHA@v-DDHh z`3oqi&Ims>tV95*C%gy>AWLG#GA{Dyih_DGF3k>yZ!+7t)?J5}c+Tn*N>G3yARQqK3ZoSgUUynw_e^(18 zu!I2l++lzRu_8SVf(%XY%5`JRRBcguD$O=40GUlqxCA@F?VACd%etuzAhdm8F?3g8 zhD?Ea_$k(P>WL86>V5y=(7@x3HA(&A5H~036Yb4 z!@y%s)NN*y#D!Kl)lly3#_FljIFgT>vJY ziArrS5dSUg`bP*eevUEcjlm3A0S$9Brf`T5>m zZ}_Px4DE<8U8zPp$q*?YAlu=H#sy>+nzlR`*JXgtueo&QV}eKnIFVIq=oD*9O6loV zD1wkBxN$LthZ9O8YxCehsX@)>^ecNXQ`^kQJOG<5Se7^>`Pe zhzc=`yJ>KbdiDhwUj?@v)s)guB-mA~*Z1*fB6Qs^a@LkGr=XTx1LLd#{9CFi_C$F= z^0s|BX~RYzsw^f8?f5bHm3s?2*YtjUZX4jp*Yqv!-^~?lx~nN~A`4IBAH8(n#oZN( zH&q;lEe`z4)q^Fxi|;&V&X1uoo%ox=vW>NyS~rB<$OTRm{(S$Fx{{-HVG6XL0$EP0 z>FCNz-oo47_vrH4_5K<%Df#NZ4)D)x(<&Fw{F^8AK6j2 zHNR$sJ={!T=AiQ8D5SdJU)|KoJHz2A7in2oCdnSp4^5r`L-1&|xlXu`JBhu2 z{r)Qy?GzL@^fINPs66iAwceEk*1v=AsP5I|ojyaU!>I58tw`YfF6C-|y7K)*8Ue8m z)}B{Z7ag~B%*-VS+4wz*jfW)Jixxb6y@<@}Ll;MNckbcHTxZy3J)vq1gBSAb4cUj5 z-=$q3AluP@Zj))!{6TTolS*g#3NN7_&x|_Rn1AOIXUofEcvTHU=;Ep@-&CSST0>!u zMOUtfQ(Nx#J<9!#XC8F zl8qjyr9?ffp{VGc(Vb97(N4!Vdu5xX1*e7=uh<6PjJ~2!__7?d_`+{Rt=LlZTYGeW z9an(%{MyBZ1nQQNrk*NZ{FsB0&!L_LJ%VpF?aD%E!TbJ0Ai zSA6fPn6_HpfeVk1S;@v7==VMP4(aB4eOUjWKZ7*3Ecs^N#eM7YzqB>ku(f>We1yC@ z=j!(P%|7?w{yJ#;-Bi$!eB3>GcKHC!;B8eNzkWkt>WdpmF#3eo{k^ukdTZ#KG*Jox zY77jt&zmZ9CU4{ZBw7rqgHIM+Z)MJz)Im|RsF2T9k3D^C59hS5dFH+!AZOpzsM2b( z#;+H@l;^{0L8TOpDyZ@vcVu}$7_6sW@9BLf&7VRTQ*gf?%fsJ&vhWyJ^5{~Gc`uoT zM<<;uYO2en1$;X0DU}7_89yHG=cS}C4(L7rGgapYA;OA0zl9fm6%!$#kiPiMy$0^v zxbyf;4Yrd(E)mD3d24P)~*@$+1fO7JGt+WaG^pa+k+c=6$@g z{Oeaq_V(SGKBHwp_#dq=bkh9HCt1a(20jHE%@3SAcrk%P!=Hr05f3+SI4jNYPQFM% z>tXco-I(!@Go)vhMQsUN5Bhug&~Gd2vN*BFcRUfnrbID+(z}MDJ3}XYelrRJ?Wp)- zdkr^`@Y?aqL^v0(k@qc?ysbmp$1UuETX@oj&HBp1r7zO|>&@hspLdsy_SCpC-wyGk zJ`%W(c=N*TtQ+sxv+6^8mci#o_@f0{DaUl}C(mVT!IKX@ex`CicT5O%jQ#8gmKX5S zURmone-&Qd@LmE3JqB4_Q7B!oBg=38e1ZG+$f+)W)ec(5|O zZMlT=$JjYxfyTwCM{CHH@}HhkBB>9es7}MAiIm~42oiQ#IeZXKSWI;a@U`9$la*5w zK7p1TsHP0pZX$LpS1Q5#yFeEl&?_PAcTC&umn0bQ8Y6%w`VJKmajz9*F$aXHUZw|U zB@E`KGL=-j1!V|E=`EJ<_;5DS<$oHz%-Q2(w)zYCbjO8$7@yM6;wfsf=sz4o_qTzn zXF^|>Jzq^uVxiu_u6cU3gNmJ|JH&D|p^XNJc}OAzu>=g;SU+J>u;{EhT$cmzEtrkx zn_$?y4EpMkS9JYbeP1xLj>u~FP11w^$;t@epX;aD%KU|_QgRAtu=N%Yn6$bO(HH=! z{>O-aEhpgOy-97q%KdR1qzh&F`mqXhqk-kcNFj;ytcq~m4>vmhZ_7X^S6CdbU5C+V z2`y$2KR@XFT-bRx(fO@PLi;#8Y{fH_8b72zIJr>aPzQ_Nx^>MZvuQ9&6;IWfA(tTt zn|z)h3zBe#SwR&cU7v=uvDm>`l3-`Wocy~=^)Y}N+Zw=JcZoZ zy%XswDIJ$04MyfIoeMCG4s9k*0kl|eS5_));LFY6+*{54WYJ7-Qki6c;0uOpk{YUW zkrsw+M>z8)T?-vSooU&@NLwJ=-8lJ&_sm;(3bI5AOa~1Bf+mtf@dTYn)?Vz3Eqgm z5C-g0VQSBHo7L=WVx$BcmjxRibU~VATByG`ZQyF`^|r5oDLQ{PR6npBR+GQ+0Nr)~ zJ38-hYWFogb_zPn9I;NTKkG-&O8^fGXOcuxIaODi%FuTB7zyF=l_^A_H+GcDylH^w zj!JfvD0*tfR*{jtdI$#uA=kTioA^s1di$pp>M_K@qFd^~Hl&V-JPnICfOY;$h_F)j zH^X3;%hi7DUf(W8xNWy{pW56Pj`h%Vhai;h%h1mEVb+!omLf#suBMH!E?ljG^`7x| z&vOf~(|#rj+x?J110BuECaQEGrDO)z+TUfh6)xRx-6Q4L`m|NuRi-8~N^0wLLS1Co z*=IrRyC7x}01|thPy8L|ks#2qdfCwsqv_$-2;POgL8DvRXnMBkAAq3qMe9# zMeVZe+UkA&Z@~&S zpfA1*dne@t{VsfdZVzZVVt>?_nv5jUzU9$T17!q@J|?V?6o=4zcF!Exr=y9Fn<@(~ zZk|493l%$$KK6ROtgxCoB+4%-V&H`cUd5+Xa*l;kFPxb*@ZB!65cjH_*D2Dv{fEKY zyrb~6O1YMg!+e6sNH(gzdnU9pzxYOMZVXn68@0}DtGhHeY^i`#T~A@gpbCXt#;sYl z-H$T38eYdvL+(^b!BcbYm+L#gYSKGiJeF{|Q9Ef&D)TaWd6+7>v1t9fz;pb!aGWbc zYw{}d8!idIEF>T{^q(c2RrOg@&!tVMTI4I_pd~G3&AYa2o3eCCO4b1Fwv+aFgLLBp zU3ofV+CcQRvS;n70~?c*a}_tKm>$1(a^=M=iC5%~P3m;_A-%3!7cZW*ufX~3c_g80 z01G_g?zMUKoS~_gcB~p8bj=$1#iX$S@dko19{7`s|lmvQ8|X)FWXn>_42clydExQ>0NjGPEOOJ(JS&<6z8}vB`1AY$!<5Of8}0H zGstj*na8R#L*36zYRUqm)HRJhdlzrzu4BfjX9iX#ms==}yfbHxw~@ J>64JgSac zr55UKdjKqiQg-FOI8bc=Fu1fk0mN}hl*jVw0#Bb$?>`L8dOfL8w?K>BKhM6CTS5EH z>G7=D!}F>Z02__kBDAp|>qt4ack%cLwg=&c^)cRB=?7HX4& z%gQ-J($;#g2V~>1BR_f77XSR#ue&mRDx7M=hIuf#b>_)RPQ(V#WX1ax(NeB%|Ab80 zP`F!9=OzlJ-1WE<7cDQ~)NWo(w^Zd!O5x8xJ{{CvhrOq_hFe*=?UqdefpNUcn25Ez z3-?&KC`N{6x97W0&e_TB@-3gSeSmG&rRo(lNgcy@eLTr`WoI zsKB|!1>*9p9m_`Xw$Fsg!HVbVQpwgA;dlI9Mu02NHz^jB^X~pP=h6NFh`^buP zCF7S9ue?Ch?c^`IFU^Ymt9FlhIH<+)J1Zwk@|)Z3+|Ww+@>91;Tv>RMxm4Y9nPQuT zc39=7D)Y-cFI61vgAuz=yq1x*+>M#r$pk1&$6H)pEvd|+bqG&DtCAcmw*)xLS zSLVmUa!~rFA7dn(!)dd$PvH(h4I8T(CHYI)2cBZn;RK{l_`<8_Se`zn-&hSd$OjK? ze^I6Xo|Nemf5IA3u~PUFidkajw_n=<*Vs627gEP5`RxIB#dmBcI?`G6p(b27`G?z76_4Knt4_Q&!Z@5mj#icZ;@!BZ5gv+Dz{=g)pbg^{sg6;E=i z3-`X?h%RzK%3{m;=nBbCe^5qsjE@|!W8-{C{y_-h2dqi8w+F)V`Q{Y;FGUM&(!n9D zt}x~?qHrqBcGiz|mWb;D2-E)<5bXpQJ$8&HIHZKBc;iUe4G;Eb<~ZRlo~aaSs2WYlv8bQMPV7*qENbmAqKl*76s~^#mLXhW|Ncz$e}I4Q|_|Zf2mMD|P^uYE+0g)vOOhO6c15 zuz0Hig0l%N256(dNLwiI0mG@*H=KyG-&Iz0{hp@k3i+AvO; zgAC3c>l2()u)r@vJAefe)ube+THiEU9Ko+s`wO*1p-8ry#BNo{ywa!kLYt{W7D5*Y z^rn8<1iE9F-XN$&ftQM<2IyQYG^|*^6tu4KO0Snn(Wje@^v(l46{Y{V4>BG7qyaO1 zEGxZ`uDb#;)^jvI6Gl9?rG+!j9OiH>tLK#2 z&@|iIu}%)a;&K2sSml1KypVRL0dB6VUBmo@iRodqgeeMOwp9a!;Eo)8OuB(((kryX zoI6!Y3sjToA+5R-2~N5shx6azD3?PugD~7aN3Lxp;%st4y9DP;V*g>r+Hvnta_Lh))VJ2HTg*GDh-v{pEj&J z6QCD^A{;`entvZhO5%Yy-OY%tb_{9=tZZLrxkY6TL|;ONhgI5rP*hG|9qIN|VvY=zl6#U@CPcQ@_L-c{Zh z;YHP+Kx3cuu4>FWwoloeaFxQ0z@I#BdX-(VWj;M~tmn5d=0B+A>4|#IiEAsl7hm_L zyW*Y8q7{2H-=4gXGMmh@<3smXzb>v|lSbW|0ZbC~8{Z0_n#!lr zE#vc*2jZ?$Fa^5Zx$492yp8@}JUtGAb8+HQ?=2~BK^A-H_p87nL(d%gSd~|?l%}k_ zI^_;1)}?cMGc%#@`7 zE#V%XT61+uKJ4JVSBGKWU8nV3|M|y73KK&ejKwXPdjoFnPM*nu2WrBoyH|*wqjWm1q+50ZHp;ygg%xK4+-JA;3-N3T_2FTyd zDS1@46$nx7&jzXhuvAjPPR_)Ok%yQbSR8(Z6MH1tBpbYb+n)quED)j`pClWXAM*7> zTj1n-)3%&!z$%*l`T3C>=o8!VKl&t`$hUjmiGZ4rgf3e4$2BQ;W7lt6^S@KDi>ONT zuCumedSA=drPKj`*E;273uoWjOAG&~r~?14Pe#4Fdu70-Gw-fvg6OcyV{jGOABBE? z`1u0d1H*5K)NL!ib)nmd!==+B-n%i~b{EFCJg?dZ^SbEASB=#T1!2FhUtZk<-y0us z=tE`h(XPsl_;8Hu(Us|3+{k@7Km2XRD?vI9E!!XE(NMI`>Q(sR571=qFP0c;vI9rl zT|4^}{Qo z^HL6gx_Niv`s=Zp zQL%sPnCH7Qy>>t-0JrR8Q#EJOl}gqGE8H=jom=#EIaI>;?USBhiKw!u`E-5Jj9KAc zvp>OwseF1;yt5>uYX^14*ny^!pFM`2ZQ%93?WlS`39_(gWbc#pb$Q>5U#ntwP~h7= zg)h9a_dQpyZis21Bu+=a2YdFq=JSr;mjNDm2FiP8%dg76Wgh;vS~CC}N!t-RLXttN zSiNbXk%(u0u<_k^ zd*!L}{F%hHo==9rmm@tQV(NGw$fNO{0zv!^^;6FSF1c>AlO%quUHGD1>JwGG^*0h$ z+=IPB^p?FffxE};MAov|+uDr;&IONFR1rUA zPkz*p`X<6BYz6*%RaSFNPHq052Tl<><|YUuJ+oXn<6<`)A3ru^#${ce{ec+J_xI12aTl`+a8MRchd;v`Bqs^}$JL|IXl{*`1v~TRuDLdHYuV+xjLLOZMpQ<=G{i1Bycl0KmPnB!$mU~&h zeJmxTFT#FmbjwQru)n!v8=Q<`s-%OB-2Co)ms_91-IC##_O+Umo|0YKHV}rt)od_I z@@?y~&&8YuJAb57RlaSOi%X=GGK#`n>OI)S=rE198GODtMSu|x*Ofw8bQClkeMIP` zKb%flyb&O>9}V&#)?veYg~bubvgzNLRaD(X*q~mi@*EZ(pPL$D6!M*7hJFH+3-AqK z_ViE%-QEb^{%`-t#9vJVKIDfUAH5T^hiNC#nVYEb7ZFmK*r|sn)`lSDKdNIr0>OxRT5k_0;4J6xJpw>0tUXl56sMUIG2#5k7l60 zwi4T7A@SgVoB(9({)bJXm9B*`HRD(Rq-m-?I`a)t$Y`d*1WiJ|Le(?@A+>*TSOQr^ zG+RvAcLC-z9G5IoIw4m;)1!K&zfq};3=n>RdMt<=!X$rwif^QDtAfTH3FQl=sUXA4 z{?$ACX-u7Ap}x;T)85iYJAi+XL)Xd8;kt>Tbb-pCQAA<(C5zL;!WrzmQA-`f%t}n zt_9=DO0lWCLj2lszHT%}lHA&~4tf)GW;MBEG~$M%Ykww)N4tbZ#7}W(GxX#>(7TsO zqVIj-+C(}(#Ys+buLt1685!wAO2lU@|>`?dX z!!eC5k1Q0YwRNxS15Q9Xt-A_}FDBu@Z!UA1$i_4h+uccS!{JFuvCjU|Ac%q@vsW18 zGE!Gam_5%TJ4n+NnW&&1!CRdQS!zT$+(l^Uf)3yz5EgL>7UI(f^Hb{>+HFC`M-X!e zD{64c*fjnW2%*l9(wPfGnLl@Gw60A>lr^A3|fg5C^f#U`?^>d$Fr@R$95U+BJN13BPNlQ4!$eG(9e~F zuzzOvftX1*WPlf&4(>yc&=7VCP#wHTtb2sAKZT*Jo=z+5zU-tYEF4Hn&~*otr6LGP z)BUb@L6-L>Gj?NHk24*Ie%GHmvzM!xX{!yYALy|?Bd{H>&eOf9 z`-8lK%1pqQA9Iw{)=fEEITiwTJ_{LUP<{!5`DW_`d z%%A^tf)LyYB#vi((o}S9xF{um&=%`uE*T7I&EIqAM)w{)q(fa2^qdgxNqNtF`=8C% z^@MZlN^{ZIKG9Fdh+sTQe&;M`&0Bu+P|OB0M1Z9XB&mg|1Ak?P?b-@Aw(Qa;(uVBp zn_m;1%fZBCwdQadGpWW;?6XTi8K?3!oM=u9iM#O6b0YsMa#N+f3Hai{#kH|B;Z{{< z)rHq5M{qsc~TS#!Sl>YC`S@p>m8vVnCRBPU_88TgY&RYQ);?3zC99XKGNcQ#9!_k?+_@Vz_^!0zQTp>t#Q&u-~^ zQ$uXT@wXGNzf|SEdD@7_#=!fw%6eZ{}Y;9^*e-H(Xq($_*5W`zI@zY zSeNrl)7WX6d>kqg3Qlgf?(STtzobIJ$B5W}pr|H8d)>?bTP#k{7nb0L;$X18!RVz# z6dKF>w(U}V?!Oog+wJ}Ek6XFxovJe$ z6!>J?T3Z6b3!OZ&B6H#CBhxqR0dU(^#W`M`rkRt~6kyMDc{#jsY_)w+)`ssxea(Qe zsssnMwMDlX$G4BU3#V!Ep^z5`(toXPTk;L^Xt2iy9N)F>T(`YWcMVt8f834_)}-XI zN1TZHczEW>Ooszax%JuGxNr3&U|2&h>oEhs>yw~*Ju5nqwZ0d_utW!nz6?)4NR}L z_wa?WmX8$fOCvD(tU2^aOCLs=(aG$k9TdVSCmVG@Kiv^JRZrq8N zzoa@WZBN|roWw3eNJoYpsNsGNs1Q8>eEtYJGL*)6O~|{FUqTPpVr4Ozy34Z1%+W)7e8N8zUTg!xIaB2 z?T74gS*%RZ>M<=|dkdyoBi+Vhsg_8IYj~g^eDyjogO|-O)Nbf=ZOkM>r@g;kXfXqsJJM5n)z38yE8;&{j>gm zK+dH3vXX5vPdn96c2LwvVCAaF91Y7;Gs}(1peVx;KMlv5KgX9j1y>4LLTD>A_$cCC zsOBk<0y~`vmVKE_jAQ=oiRqO~y;)cNY1~5U2g4+1rQ422WB!n2Kb9%HY3L}E5oNe)rx(->V=qMmY z8EAoT-*%~ttQhg^oFibb=S)G6-0h4^PRo>!1Q}%#8Qo3lpaJ_Aa%s zgE?;F2Xe@qOm|uYLo4Nap#h3b^D=+2;+ZTeo8RsV{l~x%Rtil zt#7`kA77 zgl)9o^Z<*p-05Z)m}%l@5s^KkBxMuJ4>KMNSRh1&uq_2QA%m)#YXl{T!n{R{>y3z| zM;2MFU{Cr=Gp|um%yN60>ak3!IP4i!BGHQ^RCS-OM?QFT`~U|gD+)D2VF1EbMGt4o z$c*)#QBGp5=nkFBgj@_(sld0_4eU`%>6Vo`Iaygap2jNz^@a~hrJ5lJ`2`b{y-W|* zJ!lB4q?oS8XAP*`6nBWFOHe+&9%?+Qg~sXA5%>bUW)4Mp7b;mam!BK7lh`GTSXVEG8 zhkW!pwoSaSNoP>uORbILF@lGXUuX9OYN8t*EBL#Mh@>1fw?IPrdfeI$`dI!3hl|MARN^b7bX_ z`i!WZEpK6o^d0+7)l#xIb0Xy^iU8_zIu^ClYcjvg8gqQA)C&CySnK7Iri`6)a}r_!VNXTo74v%P z_Kd_P#|Gq+7-5LzU}SO)BuMVqZ*GK@I`ZU?pp(s+(^wf>H%^CVce3j$ZZ6>5{`Eqc z(pG)D;?n!aHJKCdjNM&64kTi(`c3-!f-O(2P9B;kB3DrUQbs(B`y{U!^JWIQ}_gY1Uk6UFxxUk~@FqgU}DX zX}5E8;jhGdk#^4^OCMP|zwb(I0eMEj)wMQmr<>Xl;k(-U)YU>=Z#oO-^*uN6Peb@UU#= zt|^h?w--^dIgwShd56T> za3deC$pg;+WEV9*y0wK&+W`-Yb)o*kjH;^5o8LYMm51Q{SA(!fCR$q=NH#IC!{1$U z4(9DjokM?*W2%vA%a4)PLf@72rA=fYJjDjOuAwAl!x;6Q@1)526Hu?+_z`wi(aW^a ztGKA%&TV7s?F$$0iiqs%1gL(e;PT6sRIl4oaRDHe8YJi;{}e>NJ?L#^03Hm-hR6)X z^|=?k6n<}rd^A#Zse7=wkk|Af^PeV|8dlkP-mS|_j$mAxvkYEZ|6RnY&Wo`+w1(UR zLU8@EGgM)wh`uv$2a$OT+f_0mRv=cIAt8Z(w`S?d;enWQiv9kt>kb@{G;uX`8% zn8aWq!*@8VD^klB{L$FAnuptOIX5=iJ~y}W!p;SrBz7F)KO*PXrnda)w7@TuWLk<{ zTe7RYIsc2-K?mRy&LCp5pw@Pp8U zNxfN@ztilOXiov-{GXYX!4>IRdj*pgFABr1=qazs->C6DR5A&^u`f2?o>W^{lwJPL zbr^ICu15uJP~-B~`2W@r%QWBDLVT-T>c|EmK~L;&bQ!$i#w@c#r(IeQ)CQmbd*Q2) zx>Wr62FjV&a9wl#I%r3;3*TK>_TvhBDUvo2&TGl&UL-$y`!6`H!rHDY2X@?e)VO_p zD|-)8Fk-&GSeSa>1LC!8`T_hDA0J31u+ypa;-y*R9Z?#nk!87gqfuHi_iY^C4?SN@ z4o`!GtUQRqOpfzIlPoxloCUrRHc+#^nh0um1US3?9<&2`XBWy3WhASPLt!dPO}40z zM!E?Q@koLjH9X8hj7o->NZzkT32mCvZ>u zX!a@bR_`duc$AObR0&kpYa&!jRVts--Ld9ii8tyzjdRn`KBbYy_$lDZEV$=mRr9sr zNT22_h_R01SRaJ6h}mkbx8^pXv>d!#(ec3pjtOC+L|V8(hwDp6F!bt;n+9L^8g#aQ8@a&i9 zjB-f39onG=*=`meh4R(7aH&|(9Z%PTsN@!)Z8zn4P(~K29HcTXVjCtdh_yPA8%wRA_gKXH}($c(Xr&IgYH#h6}TF zC0u%JG~`R%7fV6598Oj3lgUIGo~UmW~dwWnrvN!#!!YHL$z>J zBdT#Q65`sx5vLN1s)v%aFygN9)U4q8#f^t3wHTH1Gx!uMAz%;M!WxXDV$o?|=1&yU z+Jxc3i*lT1YeK-_RjG&`?>ux>DGVjhaS%Hon z{UzV2QrcCGW4=eKhEim|~2rZ z+22P3KLs{|zo9;L2CHu0gi0X0PSLIZRTW;Db><=qhx&jVvu^xfUH)UQLiXGwh&I9A z>`_+a5wSFWkpLJP>FefmHHGVxmm3-b04Ejy7Fp7;JO1<@+QoewhYqYdfbqd@x4z}H zd^%2(i=A9`sUj_A=D6Un@gzkN5ROUDjNTdKg}PvO zmA)XV@f<09p22?En23s8+LB53^QYT{x%=LKm{U{8G`j6xM?}p=lAbEpG$#$tSypw% z$woCAIwZH7@?2g|R;3jH6nY#HSlyDm_pjDFGt=R7X^sr@59Z!^A_`ebw26RMIvPhB z)Bc^Bv#`C=h9*1m)_!U$RNa}kJ83rThI^8RZvIk|?>;ji<2r~S97ERlY~ z1E~p9Cciti3Jyc?(REd=DYi|)ZyRjb((%oTS*dm8W3B7vUgDr<+c%AQQ=Qd2OGTi% z!WQ!NrXc_Ng2h3(pVnQnWdh$;|Miq~Pi9@M`CgN(n^*a8>QxZpVC~*< z8!{783PJ+*g5LAn)6*k0`Dd8dew3m}<{OfLLZd@-Vb-h6I-fD{pVc?Iit1AIv42i{ zPzQ6uP4Yii8cHIcPmhUJ!>IIxQ)Eit|99KT1)a9es3ev1;)=`|vc2Fq1`u2h>aw{e zdByx~K5YWn6$f?=n}q4BpFKw3Br@69Aj`=Q4JCT73nv5ogU|U_Y&ChN|7O}tgmYH#*Z{-VhwMFGMm@n=*5t8p4;L<;44WIv8>FWqhmWkPTH#4DF%UuEyOTmr_lRlm$^zTtuS=;T-T^lk62FxCAJgv9g@enyisFL36njzS);=4}KHoICiw; zzrDn6L2`1GlghJRRy0J<%4BcEnmCV#_hnqe%zQAFsBuL$haCJ-m-DZ~v-2-&AVk49 zS=3jb9UCAY7gqpZ^WSDZy?rRZ?#(~E%})Rck2_e^UtM_epCfmUoP(dn0~^eUFz4d8 ze*B)lN$fkw+oZ(DHF+Tu9!XBi;3uUvQ(je(IfcJuVtgzQSyyRrWA@pde(P~G_Ahv) zC!x1eDsx;;YzRY*vXh)TL+I$eONi40P?&&-1Oy#Kr3QhIOSArtb(%?y8P96)i1p!z zcxW!s7&59Ng{BA#_+H?_oB}IpigE_rTN9+@2r~<8*Oz@*8jK%mClSMB3g`?25p@Zg zq^3zcN+qB;J#Fwn^#v%3spfgm;==_Z6XlIL4?0UmmK*r4`R53wA9Q3>9?7&*`4I}* zr$7g8s8OrH)7Ab~3sjR*6plE-Oh6D^D2pXBU(?O6K^A)+w&vD7J$hNYD+SLlbwh_4 zL}WbbEm|@v0~unpMQxCH@EHWi2PUFM=$74DIg#}ntW%T4DqLw1pP+f?Q92XthuRwe zh|5EBf*KJuYN49`QxPRV*~MUJk<+zOoe!U?q(Y4UTUZ{W0gFdaQ35j&5GWU#M8fUW z9q2}XTKEOv8Vz(yj8O}^Ng5C85Uf6|XjGu-J!FZ^5<~wgna2B{Q3`A7G8!W#VXn8P z&=*yVLtTg``UxOGNwks>#kM7Ku>cBcp$^Tw8t(MB1I+WV1oSnr2Wsr#41))=*pGEf zPBZ~%E)yWSWK`cV+n-6}^y|P;q;?!N>O@6;c0Wrk79Xa)+PO#9 zqu?mXqh!lh5RIxA=>SO12Vi+!jzg*9iM|+>-UyvygKnT_<}ODgrup3cz?>=4+%#O# ze7ZG8s)uRfBQ<=Ej?Co={i&9S9yupE*3Yh7rq-*L#_}Mx*Ir^LG zJuqdBD608)InnMsR%mYtmuorB0#Bv`xCsK4LeQy>MboXE9&4s;~2!|R|! z7iVGGi&Ee~8b;e8Y2&Uc+~^76a!H##8VB^kSFqhmox~u5OE}UXmxA=cOa`&7nH@c> zma26C^$!NjdCGZ(F}Zm3nxIMH4^Z1!5-JBE+0iRLfNJ?&qUZ3K&;=_cY6cP<2vGx& zAk6Hbs+rPJDTTquGou2!tMD4jU<)XUtNbu8twv}a@r|-m!*5Khs=PbTmtg%E-PGuN;VR10@UDtXAXgGzPVn zVSYIwcwn6r% z8N2v)XvTqzO*gNM_>vWJq=fX(w)$LJXJP`91b1oYOB*Hid#XNmt_)ufhAZqG=4Y`m z-^=UohnH}CD0-a4XSZc9y|OX%>8J>gtrNWx<}EF~$BO(PP!8RJMK5c!I`EUnP!fq6 zHTL2gjxcA3a&G9kei9=XNtqpVM3{Se-h)v5W?LrMetIb& zF-j2rMDgUxT^}@C0{%WtR!qaPjTc*TTMwPPbln$-(ZIDi;)YBg@hhimMCb$i=ecQX zP3q*6G5&J}-WrvoA-O&;$z|T;g|0vp$>)rG-kb~|K{ zEZLtpZhW5IZplmxY6Y2*fkfOJ?KqHU%DNnrx`@P!SoQvgn}&m_x!{gd68YDWl3L49 zb2&)_4K=BY8RNSZ!*bf0Pz9;Iol);#G5mg@1hdgkAF7 zhHI0%NdLCxl}`F+^i3B)i_gWg2*R|}-B}0SRsb2a>EqYr!u>})@+Sl=Br$Fx5!^4j z+RW&nCdzL)q=@h~HR`)Va{Z3$XDJ}vbVZgiW@{VMcZAC}RvZLSIHHT7*0BSAojD`? z98jp(hr0`A)fFUpnttkJ5;dp?pB(THlE=4owyaLLoShHbXM%T0r$ zHF*I=os-gS!R{K&Q19>3-X*K(SfaX>59Jvt5@5@ zMgP`Z9NCFV@}Zs<0%Wy^q(;gX0`AbcIrx|4@#;&Zu8;t!~HuZMU1Z+_Z;{`u?M_N2&`_DmNB8IRKIR z`Bc&5#>|06WlnD&j7U*A^Y+ygF0emPd?W(0!jKW}YKP`b_WkA@$CEH!%o5DUR%8-S z9Bquf3ef_An4b^UrI5l?`)Atvrj)ME&zo}!Uw`QsT@B-I*NLLpP1$q$4diFuWti3N zk04k!_p)QU`7fBZ%dtKxHUsfX4E2c1W(ph=Un<@`Cj@y_y~F5(h};kD6{u% zyD4Dvu-xKMt*~GgcIXZ$EHp^%J8gYMUa8Z_6GJEaD572+Mrus=nLU>jN8s7r?pkG2 z0gNp9{rI$Mh&nr#P2<;=Y|-8L?t(*OXW2g(!>Gx|Z2g0J^E7&fp=DawJA(?-^v+v=FoD9pOpXws z1%&AT#A>}_<&djPO=ffaqR)%9s&;3T4}Wd|JJdsCqDD-TskqbNsGN$w9OBL(!&*-+mHw9yg7kegQOS@QC_@ z1?^XE7RU~c7%EXgzAN81iX{cIyuo5;lyh*PjhVYnt?0M;&X{9F(Z2lV0LE8N8Q&M) z$l`XMJ)U(yPDJ&y!xZ5GMQSzVYN)7UX?rlrudhuefs(qVGO3TIU)cc1ixD3)xEz!> zkPl&=(1X~i6h%-r3r%TNkXms_Pv%r2bXA;D+kODvWDzX?HCPw{=DYP`A*<`>!JDI0 zb_p$fxte_y$8VyAw~0ju@ED91vU7(CQ7YXiblgV#DTcWK=iARzfkajFrxM?T>s?`p}1CegM9R?rN5%m*^4pt~P z2LDx2{m{1{S!8v*!;sC0m<3Xm#YD_4NIbzj zmuWebSUP*#`juJ_4LQi{6ieqWw5r)J61)bkuXFR}uNdOU#q9y(O)UYOI5o)idsPko&$}eJk8fF%t*R;9fl~}G z1| zyx-bONv2RF=-60V&CWCYJm$PTB*j^9t&Gx|3l^EmH_tBzMFV0ve_GU-5g590+o~K0 zlR~har@tP|N=ze7=?9C@9PAiZ&GW|GonB9mpC$6AAi6L2Q9`yyMly0~9^ByN&tJ=$ zQ|y=4Ex8Z2seY7`Y#@51HhqwJYM?IOY8Po|S212tog8~HIm)>b?B{JRfq}nd&UkX^ zeIUe|v*R_GeRar?9Rixv|HWKv>x2!2O>KjAAWB7`;$)$Ab5cN;~1 zes&R9pU6%}1}Es5MQxu<^ouh&Vy`oUi{1Q%}E|_V!--;$-ni;pK0Y}?j?Z(Gf2HLKg~ z|2L=67ME6QOw#AJ#y?s*<+5sOO$jwaJ~=WB#{W0CaAKqkL;a zZiw`JTHy>pSk*6&htw6ao}c)fbQthgyp>Q^R~X*X-@Ds~ zLGTp>?8q@O<3V%LuW#n(-L;3qvEn?pxH>;DZe2^&WD>g)8#izF8DL4Zoe!gMf_Xi4 z_8|@xS*uyO_VZ)lN|hQ%2HG;dD$dg$yn%Q9zl|2XDyMOxUTQ;icL+5mf3Qt_=R z>toH;G7gRziiS=c@mQmOV1cA%| zMC4Q|M+_PPXhNXzx~yu*b(%!whRcA4{Y2oWpmkbI2UK?k^X@|BaUh-VL;c|<`cvdD3sm|qPlk}?_e3(zs4nrZ0qVea$Q?DJ)g@kNI~-xUBv zjtXG=7bsEf3xWOx#dlixB1p9S9t&ZWD!?y6bZ)myk4NnooFOA~FMwJi!YqbPB{7wg z0_6!26E!A)f4pYDH|qgM(Cd>mV>Q6b!dxK!i{6OTPE4MBJ2ogE1aoQp6JXTvgyASE-cj0 zQme%W&GR3Ollt)OsirJ%6nMgGRb*}+3U<#qZkk9Ur1o0nda;Ve*srv+z;8cYJzJ{+ zlChGiC9&*Ibu>v{|)VHI-yct@x z#D`f)(6~WxFrL3xi3R~K+M;7qFk)SRI$GO-9GndWs@@O*;OO-p9yvKF$w&Bb`B?uukO`J@}XK6j~Zmk+pK|L(dC3!R9>|j1ik!rUuF}< z%!PiBGJ_N@?@bC%UuK&xzhfQ9pGyYsffH*{VsES`e~5jZ?L%O#1pz^Clb)zyaIOjl zUa*(Os|U&x5;=Jw#~3!^`1japY6q)DhUbr0evv60=&D|ogrh`zVqWR>+$o@h=EbYz zS`Sbopgj!uK5$J=uq(X}t+N|@q$*J+>cQ)vUi&XvWI{iryG}w*Bu8#)O{c8imVBcF z$Lz&UN#-0VSmR~kUUIY*6ljn13=4~LcYcqw+#sfUF5e7nOAO{E(_(67-r=C zNTD*lnS9y(mxX|nOOXoa*R;kghv@sKR~N(j+h_7SPIIBOL(Y3iM5z(efb?X2`ls#~ zhn`ZnZ}W=7hAWF=&I>g)V*r~>n6jt2Ax+!=?CKw*BuG*+mJ7{?im%;MtJ;ao??{s9 z#E>vAxa=(L;Vk&q!s--tW9}gHx1s1iV0A1{4*lM`L<3_>Gg-- zg}XK`%%42-XQ1dl5!AP9cKa_GcmFvY{5*tnJ#j-_Uf{j$KMJ41!R|gDoL!SleRL8p zAv2;8ZN<}%4S8ZG;@Q-@BtJ;C*|18F#tk`M` ziO`(tnAW-7lgP9~{`Wz@X8y`9;dzhuI_ zfE$;9hT9c>a%)A7kAr7G@vp$No%_~utR|CPzMbClg&pH`WX`Qj$dMf`aP;|=#|^JL z?Z*6y!T%_obQ{OCM}iAp_%&pw-L8oBKLDR-&Wj^|)Z`?`wy`#K*fPGb;xm()Q@Z8s zRg*$tn0bCZ#FE=QF!PA$5(%&vzUokCUIlV?*0!z|m>5;CcFC(_%@-1H68TZccd6@7 zO*yWwnzluB02aG^Cor)#b?NdhJDtr!HfH2c*Vcl2&;KZII&b@msBU(BuVGu>BzuIRfU?-dh7cLq*m^8UoSTqtnBX$EBQmaBD<6j@jWhehGGpgYdNawYk zt}Li??AiY&6V8mWdf;GXVKla)KY z!>2FSWbSU@zj`zcPD{aC^u?+rFEG;%k{~XNhmOwt8Ja{vpcxr(MW+M7fER{8o{8`M zM@LnJv_Bqou>&*CEGi?*d2Htz4iu{kHSKhz`vO1GA#_|MA(g$@@1 zG?JAi7+S6E`XXzLnk^h;!(jwF9A?56MiBzsQObx#UR5C$m-LKYZ6&Fp54hV}*Rk7NxK+C(@awU%dHBLhmCjh4VZ3&r)03eFxt4t$ zJZ_2wUg+^)i@XnCnQkDQ=W3zk6;uRQv=rqk__|%w8HlC*d_vg*S&yXSqd!`C4AP1l z;An0DNk?SDl!3B!kTBw+a?z_qEq>@yaJt=QfshAKj0f{BVVY?*j=7ENzExgr-Nnl1U{{Ag55H4O%S(i`XTpdUT>MvPm4|jXrUm<6 z6F5m&^f+LHLI4p=wSBJG;&(_AsaVq9oalkU2yKFn5gIA&<{m6-lQ&XDoEQd zFPU3PQUsw8?7iPyTMJu4Ej@?JBJHgh)RE)Z=F}07!q*FNC_ZxH;*q{z(lg?2U-CT) zw}+7G>f+|SZ|qqC2W`$2UFnckm|lIYCH*qa#v8>M*FF~J>;Kv@^884LSM@h6%D$*( z!Y6iZ65Q2)Em+w`$Mzpr!q-&a2pnHcO)y|^(eMfZFXs7$R_K1d;* zzu!)@_&3>-PWWK;ou=QKv%D8wo|N)0P|lsVN-Js#hJzNp?3qMj6d*670>kR_uP#1w zto#TR1E^ch(P|2k9p)$|KnNJN3o~%1bj)OmFCozP0#qA60HYVaQWDo zp(EL9y?i^g2>ife$_n~gcamP*|3?5dv5t7>P z4zQ`}oNA;t_rfhZ0v4DhBt&|vq&D||?)6`TZL>w|?+?rBQln;tq`bhwUt3k5h=Sa} zxtaZEZoon|I%G~obKxRi*_F@b00UH%*R55#6=U27Z%!d8=3IX@FFM!m`KD-uH~aW`Coj}D zJM--NG{RI8Z=P#Q9@f=9x651|x@0CeT`qsU`KCVYVfTuz6FW!{hQDt4fgLTGvx=Vd zR6i2Ub!-&h&8^!uv6XTJ$9F=inAh7YGJ|&n3cBKe#jT$8I#86heI4U?1`yFm$}C@l zFfHZs)>Ye{fdn=(ukcV~;cjo$j=Nvs;{7mpq@pP+r&3SzspEONCU622bM0R4uEX}8 zg^zqM$@;&F%nhMGPrGKzS>kxUFRm%_*74Kl&EU9+QMnHIx*W4KHLQThyn=8(?6A}n zu{H#|dVCk{!p^pS$*;KoAZzp9RCt{-+3wEfg4%88rvKtrzf%%v+PF+^tcU2v>!%$mD#=Aqj*cHBHSfnJ^WX~(Zx>_gyE3obqQQlIhf zx;Jij?}K+4Tm4&aec^wXhpx_;12WMUmp5+^7E~>*tJp_Y+(Bwn*S@dav+t^lt{YI& zPsrnuYF=d#Zd!zKfeU=V;Nhfiwb=`ZXa2fna}-H3_$O=9PVPL`MoM?*UqgZrtW$M% zzwZ>Ub(uglo(So4>d4-ebfR|Jb@nnOS}wVpFWh>0_n``RATcHDoGUBR(MR&Dm#^n7 z-;6T4X_T1l)d!uQ;4~Jb_rtf)3ic%TzoUE0;mc(X?EJSnch-X}>aJLKz8zMKLOCDE zxc2kCv}a_~K15Z#NnMq*dexW_jUBwwl}Kar{(?uK@9_Q!2B+2|ebSno8&}WGq!CeL zk@|PYPxZTfduyY^cEDvD8JRLvlYQ$}k?X5;_$fW`WbK{$)UK#I9hzGBh^H{;x3pxx z{P7jpbby_P=$oxSnhR!kH*edp4}{gd+`Qra`Frb7<)dPD0n#mVz1UQEYS%H&yPfbm zTDz7P*_6A8Qk7-!^ymL|+iHJg>@$^W15QOGOmgtveg@U@(BNja#jn_=`=Fg^@J4R6` z9RE0-n<}xeKYKDey#)aPB{)W7#~YSA-4ZDU$>sKTJ2hFg3#>Y(5-&a#kIGbh3*fL| zV=g;vr!pEnSZC0_rCA_^r1_Nks=Qe*fut<5fSeU_bw&)(v16cF=ZI|v5tI_o((wtb zH^4+jCHPSz^K^PKzBh%Bk0OEi&dsy0R5nU6g+kuCd=$@2qlX)zJsw|nRy!)kYfj?r zf~`8qcstEoH*|oO!eIOG!P2@C%Y58@MxwEhYDKm#vFhRvohX}Zu&TYGrQ=y&Pf=$kFGu%i>Fp$X_cGER)pYzL8BCz*igRUo(h z0dikXh!)tV@t9~Qxm-06s#s0t&SpZgY@EuYHy7TR9n>ZH^;&gw_60h_iDG6Uz7RE^ zL}#15(RTpuUj<_Od>q~SGZaryfRQn6fvhm!{>gGEjo`=7IK>tZ%rpwt6bue5=!M`( z)ZFMecS8SvM!ke=mZE&^##*JS!L^hDvIi5PMo!kLRf_dAbA^G-`CaJO`-jSx`B^bH zp~!=O7LU;wq*P^EtjUM%92kMt0~bCI>Jy9r=?k!QvmVE8&JHUG@(j}sKAQ6b5M1F#SN_nEm3L$5;f3)2xlBKPuNPyl4}Y<8tq#XrkD5kQTY$|SY_-e5GUzMsw^`5=W2If3b!SHpx)gX%T?IWm++ybbM z>Z=!9$;zc5yKd;Q_%dBpWI1dor#j2utsuc#aqdo$7SUDgu$4heR{Zjv5Ql>P;#Hw&22nh5=#a+y^TL*>TW z1Sbz@?A3z>d;)rnn0ZjNloqj0CNViG^LjWNQFI12@u7O)v%-xMzPgbX`LjwcQG`>& z1u7i+Ihzh_K)w*`>frRsc|q zp3;*wDZ6gwroVelmHQIhi@xS3;m}{Z-Q$2NNYOpcl5qa(-rr28LIzd%_U3IB@oyH8 z)+Aqm{Z`fX-YIeBv-hRegMNC)^2;lN=CX_<-|iiC_JlAkwEZlmxgy1_Rw@qXP&7Vh z{)=3*lB_FRevN;qrfBA&Xbe+%IOf%od&?^)h%7mwcl>*0dfc*2yG?EaNg8DogcE1J zw2%2}Tt|Uj)-x|sGxF1s@29sexCp<_{&Mp8;ndQA%bl$*B*fQfWJCO6?wgBUn*@2oePT1h}vAa~}B~(5={`5%dhm{oxZ^f{{MEXr!5hr}uz3#5?2}n(S zGCFURB)z{=Y`>Wb9M^`4kzM66%ZoP|hf6?AC_VBPtx9p~jrQ)62*}*&K6~{Q+=5P} z`QB4jYJYTix+V8`QefQKH^)oi*$KNAj+e(D7E4-hR8r)>Krn+GE6KW>wP;(x?|>7L z*s%Mxnc1Wlqqsj{^qaOmTUrvAGito9u$;onL>)zlXG8q&BhU7P9s<-<+OEA^l5W{E zV{lyqz=T>?S+|(GTXUlJij<;Rj{Y@yWz*4&q&b6Ll@Ex>e1fg1x;$gE^6J?vu3&b7 zW3TBxT>P$m*ZiInA#FZ*#-gU;lxOp1TJ1}tFjt}x;pu7OgfV#qBVrc3758Yw>zah$ zqq0`_Jco^S#iD6lVcgs{2Mjb-eM5Eb{EIal&I@5v=SqNNO5dLw%J&)`%kjCHMPdF< zXqJjn%J#pwD*I?mWiBF|KG(CfGR0;r{_$O^{0Dm67(0D5c6V^)U`9KTgoLNlCEt&w ztoU?!>V-8FlC}3ulxIy&Rkb?y1Lip2Uif!$Ql9yqt+P`AlVAKgR8SRbz4Wr#)74f$ zgpLpP{ZpJiK0MR*(STmrIawCFwU86}I@w+P6P%b%w0-hWitiuA%aPL*2p>L=ySzY> z_O&4Yr>sFR5xta;p=I0^npE?xL{CEAiqbICiIBMF49 z3IEAtnfVT@W)Pd-r}CKqGB`sIeraf6J)&t_2)8c)_L%lB5DR()PXz5C@P(i`vB*u_Kh= z&&gKmGQ#`ui9vB@_fl@N6%oi>#l5Ge$`6vS5ACm|0tL_g*ru!CMFoF1`?C_JJ)fu3 zO88Hn|9$Y~4GM1w>L0dODNeGzyXTh!T`)K0Q+`>MiAK3IF0XC?hIPrT)wAkT<6}Fo z7UKbTKb?4#Sj;iH`A#z6K>&7m2v#!L4SbBRMel#oocTlylid)<>S=w&|NRqK>yLMmk?&p`+z}V){H-YRt?L?LvHo+MxMQqh?I+G1j1i~gb#1M*PKfVY)T20GAhYhns3UON6(%?lCMKCv|mzEG{18b!?zS z=Q?+fyAhm)xz<8|Th>{igvY6hAW#ox>Z@us?rxeGa&{scp#>~z1O?qCcTJNMi#p%| zj4cO+x>>GF>BLH-2@)p98f{q33cpE55x)Z7V0kC(jN4&vHjk4KnjMC%bmO0c)TiWe z7#1FcWvS<5hLw|2x|Rn-Rg;5Ipk$0l-T1$`!EUqSXBAtTtq~d{1 z!$?RS4U!Gu6EGyt@n8$RnE7GbbtY3PK8m&Lnme4$Kr6HdfZM*PW5^)7EG9%_mTis- zJ$cva&Ec%`l+dFZEYdB7L@Ki|vwm`vrH&pLs2c`PIq;KajyZu4Ym@~ozK+6GI*-QT z`k(Q(xi=eC&}x-!r`8bFbL=ql063;Qt4oL?3?i}>=9BrQ;A0O^kUHwkg&v9$8I9NN zuH;Qg<+(I|o30^>ZQ&mHpm`V=xmklAjZ^%z5SQG}@n#TBsBLpssv1Y?Gtq%OS)Gwf zclwBornyVwU(r!D>%xxF`15pBfgeVM_u%ofLxEz{CWG)%9ex@aIzA#BhiC-d#0cDI zOxs}!l6xdgyE`j<41I7>~QN6+rW7`4U4glFlV9oz_pe_JbeO}RZUfW)%WoZMVlM{^D;2KHY5 z)k9MqmD5;fV8i+j#k4$(a`u?C?tz`U*HU5BS(iA_J4s?ylamfQu`DAWStC!~mEXsP z&n=Fp3r{d`Q<&|BfE^@Hty3wP#AH(p`nmi{42 z%{FWGAGCmcsIyc21e)!itc6azw{jzZv60LB;frPv zBn=#*GOrL$G-Aa`PZwFSkooZCIMj*$L;Qrya0}{?|-sR?hh^!=(p?Z8xoW|X< zCC11AcJ&j#AAVh#V7cwZ$2TVWxPr^4bO$SVf-8=h)st|E)6espD^k1OrNv+B1Zwis zQ|(A)($XHQ5!j``qK#uk$HmDO8f;(T=!oPSU}^KRR1haN($L! zm0*)iYFLQW86;G#nIFEBoDQg`f4eOANY?G@yyatWfyEgc8__IF)%B&E4ASUX<0J(j}JUZV(_QSYubuRT9pL;?$B2f2e@LmezIT9?l5a z(CYqB3zW6rUenA&@xN@qjQCt|oLp^R3NDRDSS}r-CK^lAt>Km}4&0pL5BCGIcXDa*jxe{d?gbm*SUyElf|`twZ;P~i zsy-C!>@agul0JKZ`R7kh^{oEH-P_`%R@;|1LcQURi7;G9so~7N8TR2WRU<^VF?wDc z;=GrzH((M#A)qp#e5s6&EH-HLYWP_YXgXvdIr#nB(tlT`KB@ zcn1lzjH%AFf(Pr8*qca5A)%;P`J{}qH1OP-Ha%Wj^I!kl67Dju+~|H6iaZpx3ff7n z$b5T!@YbJyz>VF-p?%X5P8~_Q_~%+cyM#UQp}4B}_lG2}pOaY22=`0NQsPRe*M-{_ zQF(>vsA}wX(f(iEV+}2L)NLWGZgR+r2}TI6u0cR<;v9R1%QAM{Ka^lbQct4a&vrIS zxHRe9f3+X^I4Ysba6xg_($5XWr4Qhf5KuNANG26+YcLw?U9OBRy5{|z;QF|VO>eismuV0Rra(2G3K6>*L0O#)+rvoIJYpPH5^bSDi zs5+&$JUQa~;oZ0u*_e@q_!xW{x8VHHrgYfgAiQoj-YiL588f{4Ox+$d@8XYfN&NmL zN9%eoLF$7xzb{Rk`M~wJ!$EM9VWc%q$*3aEPR65p8At0>+l|TtUv7oC?12CjA^Nq&w)KkhQm^FW zyMH0F)}q`%vx{ZiAL&8%d(&a2X^p;X3->{IA?@r=knTv0PRJ^F7kcK3A5fWVQRBf^ zH^r%qTXRb~qT%z6M^0oGq+l=Qx{vj$IHgCYOXfR6nnR#7MmR!ddd`^+M9ZyhgnTFU#L)EQ zF!Vewq-m&RzANN7bsyIa(=^A2ehg0ma^cf-^HpPxLaHt9;&5k&g@Jm4h)D!m?%UWn zsOxrm_+JGpaEiNb9~5c|zuRFy4+9SUho)-m9ELsFMb7He({{uqo}I-ALo9 zZCU3m<=#Z31zcg4tUZo^hO;%DfK3eC1G^gab)rbxW;16s^*9C!4rn|dxeI2pdAO0T zS~ewv#|NC*Z6Nlf+o&hVKfa7RvOXzE(ng~C8rb}2O^@kpgmRky%1%D;rT*ztX8FU8 ztegElROZOKK(wNt&9}$c<$P2TS+l6?fZy&Ymv@gJwJOj7P<=jq{HCN$xz^i1#3|Y zHxI=-z%Lv*gUl=;Avc`6gQtM_EB5d&g^q^N5DyiuV_YWRXUje`=B)M~h}Fpx-8HF} z3U2`P@8KY%oDU(M{>z$q^CQ>NvKMy(XlB@oR;pAac03fA@s+A(H^m}?lW455!wC^P zU2h&41LXRrd?g8i7nU_rv%^>wcEW>1Y!=`ZrkX6*5RotLf?LzgW7)f)XNx&u34I|> z>T-8xnyp%{oT~#++dAMUqXxDUEL>>{wvuHk&jIiEFxX7NRNf7}TS$v;pA57LN+k(G zX}v6*b8z6c;vzz4OreZrT1U1O^^SwanIjrBk&V!ppis`@qoH;|W@A%S{|$hYHjw%G zdh=IT$E41kcUX=i3Qc&MoO60%k{^`Y*=wi4lDA3W(oDp35nNb*k*~E)$#ZD>u7hrs z5bqIS+YBFJ*Jm9Z4np-OK)K!Gp)(rm?8mwDS9CUnLNHXgR7KU^va$`zZyY9d-IaI* ztn6syuaVe_3?@6BS?&E-h$2J1ikUYxqSym^hlNmAtYdlT%vF>1xmLDaH$X+Zg$3&8 zl@I~fBhfOXH0@nPn>v}@$wF*d*)W(5J%GShs$>udAkeCsr>t3q{X?6(c!hRB8=#3G z(ZV)(s&NDmW{uKB)|~we73#d8V}iX>qRW$xXRil4zIG)T`{WRxwapT9bBq`6%vy(; zYMdI8cd2$Y%79hp1Nfh|MH~iWrQ?ojv4`@x4ro=(K&O)M*^#x$Lw7?821s?Sy*xiV zQ0VHR$tST*Ai@CR4`mH(lhrR5I_I1mq4FXl4O~POI%RzhdmwqtF{j4WRvkt} zFk#6wU7ZSQ8(cx0gL4w*x$}Pk7g;xIm%CCrHtELP-5+j^aRGfo_lu5cMJ&5NzCH^4 zZfvrqjI32%b3u?TuVnP;=_XkdLpwcU$#OP0nix_%>WY2_|B}(UjL+l6nHzGWI~=;2 z1Y}-@QA}ZJmZ)>3b593Fo`wpX_*-kz>yO!HFFxiV%tlq`+egJ2zdZXbeY1n!;XglR z?W!tnRpv8GB?-|Go-gd4l5m(ePhs|%P8kQ{ikbx-HJszmHkcSuA(rxT{~5J7{>D?G zvP&QM>iH`5a%L^jASLJ*5(1&1Z=>#%W>&Y)+#9_ZEJ=i#;uGx!X?8I+2#yL4ibxZF zM`_x&9rdGE?I4Q4$kx@kI&1NB$(lPv^?dYg##47m^5E<_Et9a7y^zqMEGbPMz4JI{ z_bRxbLJdBo+Z1uIrk8;vCQIqoeAOTTVYw8b>HFA^DNi}@A6({9vJ-_pkJ(YQg@F-&&O+ zOj)0D=NEmzLC0Sv0!UNH;hwodMB34s?&}U^NhY-1hgT!uPQ|0dezk=2_cehRaW^cp zliyx{7H0+(oE^bDf<-ynzfB`aUO?@;@ybVUfukpW9jZ*($iE*lGyv#Ywv|t-iCYo* z2i52bMYD*oIWQorf%B_j{`Rl<;|6OQ4(`AEHv2f(v)0)~mQ-^0l>PCn zo+`hED!FaW6)DGx_i7&BgW2)-^96TmcG3PQ-4>E=Em}UYQwr;D2weuE=ovqZQoIp`b$_Y;hH|cpzVC)jLOW}6T0SI z-GBwh{%MtpIld<8k867YI8JK?rz*H+uWjo?^$oeti*xoAB)PAM`6Gx78J))OrW?fj zo?qNSotH$Bi_q$6wyZ49jk%?KuRg~%wa4RORbo}|y|}_XFj&Zf)b?WTX=)4QMG$B> zMSjE4g{j2#;xG3}$YSFIOx*tBtlh%Be>#T;!hK!q9b9GV$J)m?WCw}DZbBD*QNe*7 zm}Fs4JkO61II0_}NWIvj-L{sh2|;yDL;FiJS9Uxa{nWxUH|~>~7arzu*AJyXts9Cw zibgCHY^um?Ry>U>YlV)mVU|6YQ~J6#VYI-e4kZkq)gC$Ewz7Y)`y;5Wx8^;*0?pEX zZfOUh--gi4_%>Xcn0KXkUWgk{V$^V>Ns@4X{#JG<5ivv`zAyYxnrVrX5ynP>x2*KbI&2DdewBwdHUOXGHr+~TByy}=FMwGjU>_~-Sk;$2|| zyTi;v;cq4BJ?&SZ-_P3)*i3?IXxC|RM;XuW^-QX?17@&EuJE9kV`xwIzji=ia;|oY ztm(mdqla>)zUXrovUNKucq;AjgZWf>u`zDTbc+P|Rqq!RpJ+(9D!C|Y1{Hv1*Fv2I zim-4;EC?72Lj8jg-nX!K11}()C<6-LUn!?yyT7U7ZL^9PoGn2@Z4nT$ezfi8sbsuw z7O+?D7SIrC;US+#6uLzIaK3SrmJj>#C8+eV$(*ZvxzKlseFYPk}r{?w(Q;G zZYnodwiWE|PSTi56w@ja%f&8-)93{Ddfj4h{|A#T+%V4SRyY-q2wol2laF!EIdo`# zd}-mXO_!3`?+A8ST{Eav@pia$rBdf4Os6sDIOd#(pn)Z_dPax`|HH6jmq_9)`n^%* zrj@$U6u*zrw0m4_*#9+BmGOuKvilpUilx9yz3ZsAM%P6pj+F{>z0I$?$m%AJCNZoiXG|gUnZ5oiM^Awh#snptu zE&#?7zVXl*jDX10R|Mv1NZ#rqC*`^G_K+}gjNNseYEyUXeE!9KY61f3M9TVp7%w~=_cKN%~ij4vIKqZ#Pcz{KB@oYe6yFg_k&EePy8LoCp1|4A4^CLcv`H{413ErVXS*v27Ok zYXT>w<5D-xQkte1Gu1qzH@UYrgL5lg!>4K!2zEI<&@o(PS-5mJHA105P)_Fv*s$!7 zFHk!W=0Q`=8yRnKs=#aVh^(cNe3~G$8H(3<2Wi?Y>G8v;g{z1Ed`L9-HfY({%v)@M z34SyVeW%)Pywmkd9ZEP8%)o3F@)MQ$!5MpH3^;n!Jy0+*-6=1o1!|;?0DN1VbBNPa z|0RffKpL=~8nK7JaU+#i8J5)4R<_ujj%jeGiCi#|!@O#; zoJr$#l7BoKADv%q;5P`Sj&)ChjLu*MN>U*hLMV$rZo>MX&Qkua@2;EJM^Pd2QeML z50uN4Wgn@54>^_CwS_ekbG>(JtQmx( zHVDhU%cx_CRv=>;1EQUkYks2mFvZ_@Cc(h)d^soA>D!u3l|E8&RFK$cfq8W{h$U{kCXX0l_gVQAWr&yrt8Q#OZd7rd_G(%;cPQIyQbP4 z9*z!uDHA8<)s}DQyrbW0#hgb9Am}K<_{l~`Kv4$S0>+WFHwVs!^j7PAVds$NW0mPM zM!PT6l@eLgM#VyDRi@?0=^|+G5~6J#Dd)-(%Ob}_TN410jpekd%DIK?eeYkH0M$&$ zEb5!6N}Zt?KL3`)x`^ITaA$~Pz>!^aHVd`@f4Ds{Nhw^m?y~6>syv-A()4}0I(g5o z3H}3;T8&PmY<(-{I39WCj=qBPlI{2ODb1XYUcj^(0oWw-&61aJjjX8lbI(#h#nvzp z)m|RI?SA+`H(b?hbg*sJLrDffb$RP&HNfAxoUwV5-Rou-dx~HaeF0(n!jb7zao1%j z6<ZA8I?4-!E(eZ%Xft2c#%Ysg?xCjHf zL{hb&Ebfyq_1~A_kkf@22i!6XlcctFZC!V9g|opBZhllmpCoBk^<|g;?E;|YeeUm5 z6`W0LdBJby*O3V8<^2T-Nw+`lU|}ip1%wkX=Xn=#?PJa}UXX;}5aXLKQ#O@x{I2~G z7TUBOxa!88bWv4O&gId9ePa%|#buv#WO*Pqa`nG^x=E}~)T==1P!>NIQ&YPx0Y2Q~ zHACtuPQBUZ{)P;IBYunHY9uMEt3RH+OaQ6D*1YEdH8HzGYxmDP2!=GXS2g&O)Wp9T zW|>6cGGo<;Q4dMnt`)x-b>CA7q9Oz@O^0xpl#ScG2Vq`(c;0>FF!ys+@e^@1Mb1ON zzaD)mPIuq-*S7z40;_pmmAWvo#BK4fT|pbc3fK3%S6QCk@@{fu=Y1g}?>^te=~tZh`}Rqv5u@Y`mzG~MW+`5HEqIrLp#BB}i-3>~!wJ0Iz_~SBe zW~SYhYmg65P^Fx`nkjxYYyay*dXMF{EhT62<5&FquBGSsGd{B2oW^Y?O0@6QzG z3c?4Bua!7s&L+N5q9f8r$j{{-%@E9dHEuRJzwkU2^Z9P)%*7! zO0T|i6eP&;<~tA8rZETmc>R8mffe|7ll1UUe+BvcJ!f__k4m^KD_tGhb20u!s~PV$ zx&7qqX;qFzh%=5QQ%%(Yk2-5aHcVtsA~eNz*vWfkhuhxV+)QJ>1jH)su<2T2;fy4? z@ltKoX;lA-5W6l9z>d429>AkR1wf>Q7INqFvU);V>Ev>_M=t`pGsZMmd?im;fQPc&dPbNZe@tspAa>Y=}&V zQ|WX0U9bnHVaxe7gxT_c1w|!SWUKabL>fJ^=ZpjO^}AEfS?GzsN%MCfw#NQ0bfam# zq%P`xN~#R@xs%Gvav=vamc>8afJV~$enqK>>oc27v(Ph;HbXjjP-)Xs6e}J{4`L%OofY# zg{8{bwyZ0TEUrt?k0~ABEYv0Vv$RnOqZufg?f@HGi7gxHn2GQD0yRaw7_2QjX^e#N zN9{0cq1hnMj{QSQ48FpWAa<-EC&a`immpQi^meY&ZWyAy z65W-#(hh3&3UDCtuY(WHOo$BX^||>`Yf(D{{AOh|tzwFFT^WLPqbU{RKvL%GH=rj~ zZp`_%>Of0%CQTz$W&nO+Eq2%aISi@~1&yDis&@j$`}3p?V(88nLQ*X@6w&b;fw#R6 z2oS`v%;iIQ&C)RvvcaAI6;#Lp>xdA7kIQMT@X&@1*GE9CRnV9ejvDUazkJvNe;p6a zvu@B|)*t1_s&K)Cf}o%^j0Tg;x@(S=GrJY4yMiIAVO=wkeGO`~Fe5TmU4*;;x=9*e zfzSjIaChgVzM+EZhemnq0Dv@h8Dzo9b*ZCE*=SEcd~3nAZ3 z$e&H{;D3caVh6ZK@(+;`5o3r(uu(Z;i~uj+a>CrTa8Yk`#Hg)ok<7^ax=vdb0W&O< z4g>C7I|BWWVPkMFm_>5H|0Y-YhX3p%Z4b;re!pv!b%XN@z#bghDRCWkFB(5y2K<*oq#EL34!26>i`(L3Z6+r^f4`f9^zwoA$VsyRur}5WU4!Lt}->6$*n%In9pM zzgg=jd_?2_HSL7tX#X6kyB)UHmi?%c9}(iIGndNbuQcb}vX3He13yctkY->`^FKap zi5Qc$)8+19#o~*`EvykCSssnAPTFDo{6rB|z7#c_leDuUGgkBPSF^VehCyhnWfo@y zgiVM|Nw5~6Q~i^bsdv@4_THf~m1uL*s_BySwAjj3io(VQ-1FEP1fidSdH-`09-s`m?nv;q}avLw0&4S;n?ktq>k` z=A7w2w!kSCx6|v2xFv-do{)n29ra&yD5xq$e)H~%UGqrb;2$lUEJ|9DW1wc}zo@&e z6>XDn|KSb(ftJFgHZPM#LDZFvb&$8%(v<>r(d;VGn z4_n8+`Ie=|Tx+LybpdDg)^5kQ3U0uyxqYb@0hAM7jcK1$CcSYIZA^nuZq)Xm+V$wc z6`yY;s{-}tRJ4%)1K%eBS5frjpFs|Ab3j08%+T2H zaEkZMiOubhv`aYqaVU!+)j1JK_?z7v{&kt78zdPP^+QiJj6$=k<|P zvL=||R#00SPd7*{n4OYsCLLPF#U(^%c)x^bn*!I(w4Vo{r5n* zdjP8}D&=mybN=>hBIF(WRL2(;q*oXgW!{^-TgaQ8Se)UoSm(v_PK4yPAU_(p#= zJAPo#>WtM7(%~MV?^8M|PNcU8y;kUFQnjx4oj9(4jVHA&0(RMTfvJir?mAu&SX%@5#fZaDB=eod-x>Xx=k$ACw_N%yoPyFY0J&3*jqPv1&8 z?9GmGyP${-F;-#4eJM5FhADSurKs>Oxc7}0zLzF2);u(L%K{)Am>t<##qHXke((;F zwHn6q!g)!$Z2zo?IaCTWgwQ=&v#4M-mO{3gV~u0k1lmDUY5YKq!mrl7LlJo3(A9>8|H!%n7vPc0HrXJf_k_R?TM!2r5W3`KE8Lg(Qq%qw0z#DTp;!jR*kd(cacBm4VW&^6d- zODvww!&tFmy_h%$NTcxfb#&NNtOiB@T0XF4BWLD5|Dk|U8mboddG z1-Kc9bz^7@$-Jd-;yT0%@m63&6y9YoEm&)LNVEaQiY|w6n`F8i&sz*HCG(fE85&&l zCW$K}07t;mH3k$p$1A`9p06-Mt&ksHfw&O(B@+{lL%jJ0uHJIQvMX6g&&F9G3?81G zlFqjBQD8;hI^z(;i-+Y!!BwnVidw;ClGLeinM9<-E6_lQVCWhn=pDe&y? z1`myfbS;L!072ora4214NK{+WbqE$|U{B+8MtC>~O3^OFGL(q^fCf>;A#gYhy8;QN z>p!b;y4*5yzK;Nlu;Iil9k5*@SBAopKvx*SN0>yPM%_>gFF7V$#`5MFP&C&VIy_Rr z&|ti?O$Zj={y0Juzk(5H?25ufFmhwwWMpI5SeOl{7juRZgM=^wEGl5+%*dbSB329q z7GW^0D7*lM#xfE^=h=so+1@&=Yp9m`jb~!1zD1XtL_YS>nczd|JfpBEhJwH%Az=)@ zEy@t!tlZe%8VjEQ0}BMkiK1QWMi0Q?;es$^|D^A=uC{a#)$VbW7<~ahJpDL;={x7>h(jikfAY) zZV9!3({~GH$PKCT1_sZC!LteP388CjqHc!J`DU1?d>8^Uoa#&>a+r~ggCUl?I zS_%@mg~7x|B_rNUBFuuYlOFySTDixC)_oG zG`YLM@X?eHsPBC-NqvrB+5ZlXM1Uq z)S7_LC!o29UE;mFNpu!ecAPSu;+$$Ja#Or;hfxby4319 zg*S)b5xIt6!Y!%QT4>amMyC&c&}A!%K(|^mKVlI#8T`Z{yddVjQf|(}~VHNz(gUmFqY2 z06}e3r1?pb_y0kN>pCJp8%z%17vWQxr1xI$kHLApKIOc%BrB=sk$J6H?^b!5HCe%_ zdp9%fv4gkK+jF_LI(>ZLX~<7+0n@0qtl22etpD%uhuAs# zz9f&N%88O>zrlikXX|;lhGgM!PC-viOYmPJs4YjQo(vmTW_n-$m%m;;=h-Eodk>A(+jz}_#;k7N(NSx z^UatDjx3+RLe1JsHc|KyZCiJOQI)v6l{9G$aR9T?=p`O+Gs>2?c|M|7k&vrKv32HU zJk!lC2S8q`MRy&(8dj3ZuEzY^epH{nWaoDKM@>@i-@onguh-|e2E1$fP?qq|=JLEw zeS*?tX8Y!n#lgAy>exzQA7 z(7@4JRmT=h!K&DBfb_OBekA%j;iMCgc*ehae#k4y_^;$hNzB~oNCT9wnbuZw&yox? zdplv{fBM$r}ZY0zT>;Gktr@ zIkEHpnBPMISYG&7#*&&u+Pb`~68#Qirf%ulio}yoh5fRvKv^As|7rfwbj7>-J9tFl z9dulF@alXHxg-yCee3peo*&JYap@3@$@(W8le= z1G~)*o@xuDF!`uXu~Ac$Y@Ba*W6ATnO$5VN&kH%Hx18SP8mU*hUKCz1E=~FMf!*9T z0~jH%z^!K_oTTjse=XKqp!%ey&&8aVKN;pOd%T`kg?;85Q_;s}sj-mN) zCwBh|yX@$@PX|@s$+~{zlsJJA_zE?DC9c=74p#@(k4jX#$*CQYrMeC;Ox=J#2G_B(r4}cX%n8r3PpYSx(?WhDDPrWBK6-a9=o(6w z#ygGk%6O@$apdqwadM9HDc9K-1SXqaJ&rt#!=5wz>D@>83so*^dv_@LqTjQX>z4r6 zy<w9Pv(?`Rr=v5()GJMH;jM57^WvSSvf_Ym zhjdqU4lf)nO>L7ECmG*3AnDu!b8VoPKPHJEUDmooO=Oj$?J48N#p!KRME6b)kO4a| z-gg$I-uSQlfB95i6`>`%`nEXX`KXS>8Prx2*Jf%&E7q6-9CREu-(WC}kB}n#AuEb}H=r>q>_V&m2W&ZQdQ=9XBLEq! zgy;VM-z9W^j0J_+2+wm=$H9snIr9I{$?)<=*ioOcUJ4|XDyP!{|7hX>p-}h<7IXnt z1XCL{xhN{EA%b zttG&UZWwL{zk)Z9XDH0@AwSWx32-zm4kZci(ElH`m`2*buR2gylZv$OphLO0TA|JUmLu&%?)B?4L zbn)TiL<|K6VPsoith{-+DDx0+CDs+CGfk`!EBFX3SxN@afmi0kgqK-Xcxw$|Zr#w& zsvIl456_yRFaQ{bb5vW<6$BV$`^e*PaU{$#JY9ux#b6msm^f%;I74B_hGo}>Ig=h} z3N5M(jRSwk!dqv9N&xKQ2@Iw+e+?ecKU`V(1-6gE1+JbXLKyxt5MCaGX#%56R3Cz? zh`xa!47m+}vap2=9(?I);fGO{1emH;013l#;d(;&C9Z(qytS4grsFG5Hg$NMC`i4tFgFjW&~rQe3s3%4lCarhS^oxLRJ_p9hNAd#4(8#**UPdf%vtE2 zzZagW;vVQR*L|B$mHQD?_lBy{v^x^--u4H_MCpGQ=7^JiCEaV8O%kdJrC|ZSM|ksJ z1h%=5SfhmX9&hFra=aWaSH$_H*2Zx)k@Y(|t_aeUXVEHEk+;c^E{d)fQKUyw#-0=X-Y$j{-5&cb@M!$& zxUXx@%>;{dPhFphn6o*j_k;}z0Sx-IBu&h_*Us@v1a18ybgF$*Q&ob~SW{}BFDyL8 z(W*OXlDzKZh?D;VCaC1ml}+&`ukDek8fTGIy_x3OCt~`PVzD_U(+V zsvy9QHhNn%++UYockjoR|LezJ)6Pi2l_eo>|7h5Et~Us03H9?`GY|k)-mut&PAcxez{`di-BGck}k? z9|97XoTp<{b`s9dqlNA7{-*F2pc9Re?p2vrkDg6>dR9;It-yL+E#uak+?;4z0VLGt zx|Y?InXd-yK0YO?ub_5)L40UN>Yl0n>#N>n^VFs6c?mb<{)C6OQvdip?Z*bt0KB<; zrsPYVAK{-nwiPk4i-#FM&4Oi3>ibSqp8U$SVK;t-KHBv&XYRL}v<$an=hskq00Yeu zrVG;cCzjtRdJio`=$+}uy^_qIGMP6IOu)+h`nL0EF?Yc&R#VR&;P42aBTY&YU7nZh zK8f(c351k7LRG>Yc8kY*eJEF~`4eeH>idNeE-#xY%w?$7XIM~@YAiZm6`l?smHg%Q z;xf*!L((_ZfL|9PsDsG(bWvQ5WzIY#A`q{`x+6kiarzw#3+G-Upp%kUfBT7(oNn9P zVd)E?X0|-;u1xhEsor8qmH&a>np*y{G&5t`Wo;t|(l>Vm;6yb^t4qYM9U{%iP^Z+> z7jZbQuCqJp(GM%3DcaVzOHq+J!b`ciYys4z|Jk>CxHzL>@yM-T?ttrjc;?B+M^k#U zpPtz=l$~}XlCTvo-v7||RPoiiZG=T%%&wOwIfh*k`&apxYP_w^Z zE~(_aHCc&&^{Gs>{;}p;4ul;-B%wC{ed{EwM>nxJpjYCt|x{idm%gZ&0lO7 z_|!VX&N8m0*@C7QB&ud3x=__u7A~6O<+iqaFwzV$4{!`vn7F=>lri=fT5q7kw=^+~ zvk$yWGOkyn3WEj%l@;=akd0}LCkf+~2K5Gx$T&rLQsm|dxXJ-DjMt+qX11R5Q7@qT zBO)uc3h-T=`jr-8=)px- zjD`L{IaEE|A@e-Fw7SgGg2Pmo9>prWjh4&cn-4)Xt*G5I`L z1fv+RbYeqhdckj5Y&aan{~)aL*md(mD;Rnj>b+Ms6bmslcq_IN00}T|Oki;kEZv`g zwL*sVui*U)uwWf71b${H@m3H*h^&in2=H!sX)w{Dz!`zikj}@jc?;3|y313opL9)JZXz%-76t`vYS>jCm%t<+p^zBvF9LKF>w!L!7Mu>cmB z!8P-Zkw`vWfwzi0=*_f%@>xgqpKwwT>g*MO0HvofBMV9~2p%9Si>@)Z5`JX}P>E{@ z93>nV>a8TWvgu67oA{H#v+|ask>=hS6QayCeVE9=5EeMfhI^TwECG=+~ja@?lEL#ESvWT(|rOOG{>O6+V zjv*(kV}wc=S_d~%J0GTzp0N_ZF~Xp9*pmO*jlsvV={!rAVoYrKHh4dSNIPH?!_iQ> z#(rHTP?!N&7%4dtekR0Q;pobcJ2(iJduwo!HyL_v(aKv(gjZ3b284`kWB33SFkge| z)2%bRZkAE;Tl9|5j6lFE=fN7)cOnRW&uLHvW=p)byAFo;cE-t6*>!lQDf0pDPF zSSqdhEpE;N2a}R|10_Cta`=2r+U6PGZgo(3@6q&r-u^0X0p`Jr>woBx(}n-eE5)4Z z{p6_M&g-k3wO#WEO1X!Zrkm7!f^R9U&Lc*$U%udp;rb@HmmLXhXgQvdx%S+SHvw=f zLik7Xwlr%?z0cokpF+1K;Wjd(S^^OjPCaa*dIY`E@TR9KOYzNh({+h{MV;j_(ovPb z;HzD1QuQ8e$BBDbN!r`2GiR`K^xlQ+i0SnesSOWqJ1*aNL^%8}% z(2MB%A#tk5P2%B)kAd8Jnm5v3vUi~0%dO*QI5V9IgWHh4XUV^9uiC)}Fm<9&5qspu zDrrw^n!YG{sJB{EmFS&cd&d3=EWq56*68x2H!G{>&t6WE{~t%!9Z%)|#c_@2u^L*U z!bNryB^haJm+TSQ7k4~&;BrNYyD!(iA(B0k6+%fFX~@cmNRf={D`oyZet+KAz4v)O z<9yC}pYu8Aef~m48F?%g39GGRa0X3%2EQfsO0fx!y?xRbh#=wqcPBlBfybP4-;AJ_ z%;2frG~)y!r7p{}e|e2$D9~`qE`|_iyV;-|OhXr5P1LiDr=0A-9qG+PIL(Bo^ZV*q($4jO&DLHZ4W9G>!OL}mGRb6-ze!{8f^@~kw z(UO+nOHKEP)Zx3h#NQi_y`<4Z^+XdWq&NB}u1YT|n;J>YYAM$~7m+!9I_Wf6!s36O zwxETfe23>N34os#dPhxSaSEE^o#kCBtL8x(bZLetnHezz6+S$4qsuut{ zUAFQb;9$zPjEq#Tg>Jr#e*6YHUbaQYUwI9X?jCI)kytV_q5L@D&bk9vw5#aEQchPp zzI@LGB=K+_tf9j9QaG~JX)6ZU$KFD)W_{f?O<;u8$a(&2#}Cte_cwVo`4ir zGqqy;BHo@X=tVERg#NS1_T}UHSycrCXlgUOP%zcO49s7r0BwjI3? zg&ax+=;*IgJ~|q!^61)rTl7*T^lK@)n2F5ZZZCB}A3eg7Z#XR`@EpTv>}Y!rZf4)o zuI`D){jfarAS6{~=`b7}G^EEvxJPeqZi@xC?%1bw18j=sqhtq?hDvQEeDt(Ps2`nq ztkhgS9tiM56Dw9M!O>PuuMPMpaJh!%0-t;WpXPsx1D+jL{q%1nq9nX!LtF;3M!f6PNmuHn7JMCDQdH|fgWtIY~wtMIM|lio4@_jW|oWRs|# zkp57}DvxyK>(ersG^@m_A?Z+2MC!8NP?R))mana1m$-=7oWFq2y z;uVAd>$~U^7amcb`grj0p0ytFq3?%gxIworE=>L!0xsJ>o85M?o?4H#tH%K%JGkro z7Re~0R)dIUw-5l|f7^p{5=iVDJ+SW(NGBaP?4$Dt#xeJkuK9w6FPzW#$3$N2cw%s3 z3Vgg^EV;@G^dP?YF_H>gh>IhoP%NdLwf9oUckpfHy2;&4ve4t?7Oi6Ns2ZDc7L#(s zT+Z>s2>57CGn$LRA*z*=)LI}*6V>B?nE0g7uhF*y40 zKqwO#J#}&p8wJj>x88Ubo9NG|G*WPoa|nTQ^t_@lrGHq$+*{Nv=mvJDFcTB6vUxFH za1rj2DdF#>u#s{!?In=C0PJoN^p$ZKrusnLZ7SJ5zpI!dT8az#`_j$Fv5Etc0GLZNO0sqP? zPwOuO-!6VBrN5HOfTx~A+KK*N72QO~gf)GUtD?jWJoL1{*+Ct=*YSLIEfcGH*Z@n@3)T3@Th;>6S?*hx&!rm1I!r|_ficn= zR|^=}mnAp$8F^CO;7ppuEv^?@AAj^A1a`1Z$s~i1JN?A|M;F?d0p~NQCd@#Wj_`^* zFR2$Hsq|DfnQ4C*T-~6TTH&FpH@SSupP{A#t4wM?JXv4$kn3mvTF=Cb4CeQiU!%;Y zc=c~B&(#6FbqDu^EyW>C=TD_g?HdAtn4zrIWdDjel3L3qFv#n&DU@h0ZKVs(j+=v+ zaymm@g@^xq*5m2tP--SLmBLA0nMeBH={d>NP7;_OzwdCe61whEg7CPSI zcq#{OZ#v@>vTH#|Nqj06Id3ZwH?=>lMpKp`J&&R|zwuw#qf)B^&)Zp>GKsrlqiQ)_Qw1TQD9VI3)wPk?CmQ?k6-zKE(LU~h9r}4Nyxg@U zi|Nb^i)>t}HK9laFEXXkM)~BTiI3&sWmFafyREN}B9%%)!)9_qLvS&=AehYdQahF$ z?+3O3`%W!B4w-yf;ODlN`W}kc3RvV*pqa4xk8(oWK!Q7t&L=yjrJD?@fk-`nrI7&g zQaG}(Ui~V^AiViB}W8LbCKO0Nk=d52eWxLJN698 z8hPm_r>>-8tPa=H?RT>My$Y{R#YceaALHUkAx@y?;>f{JQy@|E;Ulydgxy#1>TL-S z-RiR%C0y)f$GxMVVCx%HqisCJMSQIiU)+;3vw{nKZ1fmN2~{)Ig%8lo@Ev%x_)z`dEdYbU7xeU5ehx}LgcDoA zkJV~#=+FaE+e=b6RDz_b_M!PH76Gl-H&Pl7A_T#cyB*nq3wH>SI|ZI_i&WhJ3o)os zbo6+))*WAo_v5>zD5UE+{ldITD6!F^zu@N=& zQ}s!)Dnsd4DC2XH4lUQgX>)5g`5x;x5bfOR!vO%c(4e)DOMLv_`&)0&fUwhx^&86y zs1;|2ANHUHmNBm=tufj5)>4_u03lX}}8I$FsI>ANlU@nn_*I0i zt_z6mZ-qZ!F9SL4QqL2gGcfYa!u;#4A*iR)abmU{id)sqNp*C{e*#gQ_%x5AKXUMi zJP}Cfywh?UBe14S+MV^Aruoiio%ABgm$9@GNeYgzelpIHbeU~oZD+KdZnG_e| ztxJoZ@i!+$+s(Ixe&&oIg3HpOQy zeiRHsf1fV%a31a4nvytRDDerbAT}oRY?ScVLctR#boF;kkYVuFC+`<&Ql&*dL?Kb) zgvO{!b_b}-jlbZh%q6%vP{mKLl~4_u773VSvAWupHW4{e+tFeJtc=+3&@aG_S{@)3CQW6*%aMY*2f_;(y569RAavy0AKz4)`*!rn(|~RaUK+uDVg){gZl_zO0LLM7 zHhzjjK(U@L07=M)s~x{{I7mx^oqk;$kWUxM$zDEXdZfps*At+K-^-y`2HuMl*2k=) zdP|l|DitUAA8#x#oUBfBP=@R0^G3LVjY;nRI`-4_uN(5ESH%L$+f$BiYTQMAB_S2& z!o&(a*{lhiv?4elH87k_P;9`t*y&Q$gc(83e;l5OJbI};$p(_+t+jK6NjzsUciTD^ zjH7YgCB0bRs}5{!b38b5`AWXaEUZYg)!S_&;M*P_)303WlaF7#w|)Wt?Go$!#lq@C zvh)*1A?S8dDe=2pukBBGKlYsfnoYIQ@im1neehWSC2z2$g?h7#B%Thh@Lq*1^(dql z7I-L{9PlX8t5@&}4jna8=Tpk-^*ruvM;iw~E2GI=zrkaqS@Rk&3ezh;Zu2STDRo8X z-2rSO*NM#X$+{{guLT?`;Gz%OGQ;&RWWy9+wBd1bD79;1J&MJNoDnn^>U$* zq$tN_eIdU}5*(G_eo1dWCglvl{pbS$3{^%HB_Jg0w5X%0pnucQf_`)Y=5=TKk5*f- z2dkdTT6|A6&2pQkW-7*Nut;>3Dx0End)}qP3Cuy=;+HWKcWYzS)iOajy!&ZE5rZ~3^iP{7auUXvz&Fb#GEizYV2!&Kx6RT0A7%MYj!?i5$I@T{ToBYP$0Ku^g#7joJ z{@BJLPBZR)_7ULF*=Cwd^Knf*+bb1}fFjrWF{aHYPq&Kx_fZdcRF{Hf-tZ9rc6Q-* z1<*{OVI%2ivelyUu*417Uo!`9|JTdSSK7|_wR)C zMd8D2Sv$~#1*)B|4v)fHJ-VYp0ZhJ-ufBCC1DS4$TW_im76|8=2HcAcG$tRsJF|}# z>)dq&vKB?m%darb=}~F$>Zb?GJmg%<`fmRNV1EZ>W@@;Ub2nzlk_m!Xs3A^*i)fz2 zy2$ND8(Tu!0l``RS%aU-7y@b>oL+TUi5Gb0iG9K6MSzXEr5K-L5aO2#6Hrb64i3`E zH|JuRt>HU+wgOq8Yo-^0Hm&j*JB=>_-?SpnrG`b0d3DaTvN2RRBTm_P359fTyXtaM zK!htYT1@%m#fn$UujRl6$)e9wQx<0VT%%XkOJHmI7Q?f-1dHP~wdvQWrzApp4E;C( zRW@kHO%3Z|gSQL0oIs1!dzx1?fDKR9X`sa5k60S)OHwckfu+9Jbw&B5?Oz|0p9E}a z!tcmZW?*_**e@n}=@NXX!ne30`nh zR)#BZ)23?comp5N_`j>2JJy8iN61h;50~4Dj0;A!b;Vuvf61Ua?H9?{;lj1&MuNB|lZO*2Pj%$L=ycsbI`2y@As# zOwwtk(YlKu0Y5@yK$An^#e7y>tOV4D8iR|;^Z+%@2gmIFfu5t}cYotzY@kp@Z#vZw zvR^g*&cy!ylXLT~oLLuK?YCeU?;$q$9^V21+^d+VgH(v+nsaAnPyQ<1LnRtSi-O5}W zde#1}^ATxNQ9P+dyllXL+7AEI_!|{Rk_o(^_Gljfoscvu!in!$M9G^;mNUB!&&pO_ zqLZ}~{1SqdfXWN}^hbV-t|o8&=9Qc7Ih^x3;;JG>-Cq_3j%%KWxl zdK*!pS|uNyG=^R_j@8SbJu^_PSqfVK)j1 zV5xKsRzjd_aQ8EU5vVJ5n)#f-!+$)c@~+ztm<6@ct{))gi7HXkZ3Jqh99#30hu6C> z=eRMIx(J_d?b;cQ+YDa|)AazZ_C#@_2A#a$WZmia3KnVM)!&qtTv1Jn6Gv-if$=R? zG53il2Pw?WWQ$T~;MM7jK1T58x86H962OKRr|R{__<5b!u0zxW(bKk}`589OvVUul zUHQfaTi8dd8kOK5S(@N6(GL90Uy14zj(4(wjC_S)3|>?p$r0dJk{epy^nu-fST`cc zAroILjRideIw@B->oiCccu9xkXeRDnTS=x7B11H*kD&F?*y6G;ELWoS0`) z3{Q05KGOsy#DP~F*pziPOqs&}fZ2Q2@M}JiLcX|2^gjr6u1G04mqn~;%9A-43D7^0 z+~^jM>^oNxY6ajT+~~}oio@u6bbqwt0Q7VwK`_O@${V*eg(riBEDfLHas!1&|Achb z2>PLSA>GkFqWj0a4A&Yy2IhQz${}_frrumY8-IkCzYoeXy{|<+>f0nslh@gnB_Eb7 z0{M2QwWF8v;cr6p+-O{bR5ta&RUp4Z16Ez}0e+X?9DSo0Dlt;4tZFCf*FOGe@mp_HBRfk8U!+T>f?eB`!9SK0=;+qD4a}ZC% z0m=Sikk&XAY*Ng@ONYxQ{__XlW{#>K1l_+@_FD(fg2nKs&HZKIL?u!&Pz;z~;UzXB zhNyYq!y#`y0JMp}dY11XqR-ARrfY#={4O0I;$mFSBsmJ9josn&z8Ve}HzJ+#Juwdu zt7ep#KA|J3Uz!sS0NV_8x(w+vvG1k#x|{*c`e4?`;wCyp4Ju9RPzGYut|jq~<^Mc) zj#8aOyPww!+Sctrjn@zkC@Rt5JvtoeQz&aI$W7{mI(~sqd~{NvD6aF+doe~rY69(+eOYt z1&J$W7?gN}D1fZuXLK}iF_OcbY5-eSZ{1~@h&&vW&<}nCY?rlt(;S1M7Fd!hs|BK@ z8ig4;ESxxAQFxj!M#wJRAP`p zV-@4D#3~Au5X|n>Vck>W{U@3C z(Z)X@xBfl#Tzssal(3q17uURzXX9tr~6|%CBeHM-n$_+;){hFIm7- zDzeKAZ;ePFJNpN;bu~q1LT)JJ)D?C~u3Xq8>{b2LfERY9xXDjW11wJ9cSGY?-z=!x zUOod&9fMrIRdF!Q1|r+DL%<+qB?%8X*fPGI!WL++zqT*~Rr zc(*B6s-|R}Ol=Mulc67@{M~OAJWW5?E!IcLyH&pSI`s}bES@()C)NCidzSGDST1a~ zn+O*X)_r7DCD(v~gOsFmWgc$F6H5sx91X$I09te-MTu@z)rlo@o?ld z$Uf2&Uilu4EAmPgHr@x6TXvmmI)#~kjIQzWvI?~Vmi(RyaVh&svA_DWz#QusGC8r> zJKhX^zb|WVUa4mI##7mHmBG;i;Am7jF5KYaP8|8=@#HknvXUzUrfi%Iy$&C@)-P|m zjw+r&S!eK)w(Rg*$`sWyoHESu?kV$beOC^YKdrA|LV%yE6g_`Z!8|HilpwCfAs4uP z)$EZ1cPQDFaViK`SM|C@l>iO@=?s@);Z#fMT*J*^PH79fmtq4?eCk36f*c<>Z_9s^ ziDYz$@dPyqxNQ~!B9TFix*dPu$Xif#IrKM#$Ry5R8Qs}Prapr{n+2_>V{*!bP+4eN zRqE8FbfYNc=e0;I2LV_G8|Q4tBcJ@?cAtU<@eAjkBMphzPKE9I${cVG*=e%*351f| zGLy!6@MGtd`gRrxDSmg-8qfj2sn2Bln1m+d7w$(|!D=`*&h^B3JUm89eDX-J6)MTA zNJ36h%L_i90?^EPyeol29BxDQ?5v^58YeXr+s|eX8n`Y^7`I~%$iAa@gh4MMU zKggtVHJD8a9(Kie3G|^zq3NMS>Knh6pK@rBJqEXTWf55U21RIYlR>M#{!njfT zr@s$GJY_tQqwb>Yw`0Tgq=Ap~pd*Z{pr{DXbKbA}kd?DOLNygWEg>(EOK*wiEAUObsN zrHow!Nqi9dnGlnSdG#ZgnS-vyz)|aEZzN-|IjP8GGSE6LTgdIP$f3yz=hjqe7o;9F zs{v^8UHDA{0vIl4_4aY``yvx+t0O>c^@(GT8;;=`b?Hm`T6d*Nb0fVN%6Z@9lj8*H zD%{iJJb#CvY~!Cuz6?TD?X8(K4o1$hb<#Bo_(J(UGp5OetdOetngQ_Iv7s0%kj?u9 zx1&UhS`1ff(0!7n@B9(}b&S7*Mq+Qf4VJX4eiRql%%M8H>#p`7`*}9DoD?dcK-V{1Si5 z_TMi6659VB(Mu#g{p?}5%%dKFMqetjcz*K7zWd$~w7`FD|1_}!I_+4c_T$mRlv!l&}N)mOLEJ$eSfX z&Mf;RoNCLa2i`y@0}9PHK@5J+q-HXsn)(#V+tnu?OUWF)Ly{0U!y!)Fier%<%zE5h zOQ@l%qiCua5~Z+pALgSBz}~;-Lu;7WrrO+tYfT9yi#Pk8=L8?f_(F~NHRPZGjjk@v zGYP_P?t=~s^#*m4R??QD$g`fqCV!uU#hWxqE9McTE&H6_TTyR8v0`P748$?X@a zzwf=7fj0JnE8g}SG6+wbtIZzAgvj(khsATa0ngq%x9ax=O2#C5Kr!AU-H@zgxK9Ce zN1ErX@;&V;x1W=62AgJIA3hg_bl%jcTz`Rj7s|Tk*p6lEwrYOdE*BOH6OGvSSyWr& z_&t|<1Po}!`#FnZZ?QKAb4$h87}nA#)JnjYo*&aodrniseD8#Ii*jxo$VfsD0HRzi ztXd_-q&(PsHG%~c$A}HB9;7r}>72Vo2lh<8+Ndp=;(O@G;kTmTRE`{6oZ^tB?uPn* z#sc+iozHh?kfc7WKCA+Tb@W;qT-<3en=EJ0pXp$*Cpc#mx6;aq_O^0IjAO?pnsb2hr08BzBtz!p*q(K;mE7?5`W7&X-5FuJOt0t7Hy#{cYb!NhKXRQDnCWLUl;^NR zYDHwPR-P-La=@+VGXM&XaP0)735Z*5{h4NADoZM`@2Y7&j}ojg)HkseTuyJ-?q$c~ zbp{QL$NAvR7qqG-l5o<|{UJ4LTx6e3idLDPxk^@H(Hp2dc+h`(H=7dOyLXZ(L34g{ z)LC9g6UB@Y4>As*S$!T>RW=?#oyIQYs7Hb%C!efpI+uvK^SaGbp+OOv-qVwZW2;rh zXg>!uK=3~&$|ojq>GIM}lr@k$-#VjUu3t)_zwC<<;Hzk*-VVPTDrc+kvtu0?Rd%!T zKQ2LM@C~z9h$b^!yi;hGDE5jNR_@+s00njok7u)y={skRE3mdVfOLVk#D58tV24*s zh9C>FAAIW^LzXo@W!{Qj!a}PIT5lpLVH=^!LIHT*0}C^GSblTZ`qu^^4+oC_87yD~ zywkQHv;#L4kZU|=FOzuBTVkm|AuIuYB9IYcQ)E9++70dl`yf6!%;Mli4XjnN^?QV{GJbVzQ>P0`RpNlO1(j;%H&!>zqIU42yQTjqwQ&9OgD$QE1SDe_m+& z%?rHhRi^%X09df*g|rzag;jeA`%l3Plo*YOMR7^`39g6kc!CSFFB6SUEM&ty$GHt} z1i4VMiZzoukzR7)5k1|Ll#KE#?3Vob4%CjrPsMZhu@QbC8Y;LB4#$61lg4*( z>q~c7n77bA6GFny7g7UoT`5DHGoEp(Ehq)3SFH zcfG|#a+A%3feRQhWIe~ibey>3XeC4QP0wK|Q-@IT$2H0-T|yegq(jBSx!7fg!WWKT zz>h)usS!L|JJ&C_6EqQqhRtct6pjycT}xlE2maIYJ2!ze6!KtfYX`7j?#ilrION)# zTW1-!LHIVW3aie;JG*xiRF?E%yWrj)Hi>bohSK{7NW%=8T*)Ec?oghi?xosFvO2RR83;i+ z$QOE3zp?SWU)nEaV;>Pt4?Ru_Se*&DvyDTI`L`k)gEsbta|9##c>acb_V|_yA@X;i z2=Thxh^X;#H}zQ{!mCb$ChLT>#FB$atHWnv z)I!C!j!V~zQMqR6=Nt2G0gy~iF_@!!S!l@a{nEaM-Rq2s{lLZZRL_mJhg353_u<44 z9qW0J6@C+4TL33Web0*{w)Y1AXD6Aa0*kO(a9*@n7HeQk|hu&%P~epZg>q zn;|rH5i)p2-^n0tX)Jdk$~F84j|cu+O2mwPS5^aPZxZIL()8kx!ZaKRcd67KfeVK- za*$+&6Swjn04uZ`8WmzyaVa-9svJo|FOi}7M9CG{%)8DroouXz@rL&lSI1`{#Jx%_2=GKk97TNfH|uv;!av6sgH z?+)U0FIzDQvX^8(^`U7O7WY`ohY6$BeR}iXqpcu@E&JC`FADc=b8a4>LS2Pt1Petx zM0b)}0!*4R{9CVQH39SG^)}>k5zwqTz3X(?$lmwuJ1rC%aM1KC^w3@G)+@@}qSxYS zSt=#pW02{mpVW742HLSi!*Ym0^t#q3oR?I)Ln0%c8z6msOL41HsM?~sP=uI(U`}`$ z@A!u54m%B*uJAoS19-`Q(F)$FK8&6himjVGQ|*YOE3eyj+7H+&y_D zk{#R@{wVlgbto!iLAqW@j1~Inbw=2j^eV~}B_yPto`6pX(IS0BgKLG-oU4b}B*&%d zebc*uTj*H%+nGsn50T5fUk0L!4A+&_7|Kl2PwMZI+sE2+u>?T4OuwB)I$ewtSV$#0pDwZo6+ulh9pt5Y0gm z74JSddtI;({@K9k0zEYc-?Ce5RE(7&Q~zP@7!O5nO&!2YgOa?kuj6hsCSCNjU`s<9 zH3G7|8PCF>`0)NtwiUopDxWeBC1Z0QcmJ3yrT&9@F3r!!`fswI{i29oDu(@ri&r?v zPPP&GavT*U{HSMcRhlMZbnWJGHW-zA21TDq{JqVxq_Pw^n5lG;a<-S;Nm;a-3h>uH ztupMGfjtAIHKOPxHtaUEI>jfa$`fRYw^234XCJ6!MH5o1@W)+%a@6}*1yPuchI41i zqk;AdS*D}`g58f5H-)mnx2e;FKS_9xZ392-BY}##Gg~^t^gMea7p23b4nf4KntPnU zvnR8YIOx^OHFIR47otQr?7?>tfi(Nbuvld(N2C!|EDp*sE8+aOacu_4#`pNu3mkzT zq+uh(#J#&t*Xr;Fcd>KS&(3U$#})LU!-K$2l6`MJ9fRrn5lGs*1+dUR4O$PgNS~`J zu<~f*qrlU-`;AMu`Gn+NCJr_%td6pui~Zz~qsqXBniC_G!-_=_l(Z~byg{I&es_SrGggAUyW&~Yp39V|cxFrVFzYv^ULeq)}-=9J{D4cXb*zN^1 z^*(I>YQ_c2I(_G?f_xk>GHmQ`#C`zmBl$wxE5!rZJIg5t|vy}<1pv7Qr29@2j@dumf zedNz%9CFZxkZoxM*zK*xXJpyf`u8QKWVCS_yr=lgBAcjqQPD-b9Y||U2rGe)RkzAx z?!|+h|0*c=;}LeQgil-_0;m8zL91s5`ni|4nr%(C3PKPRQ>eGd z!d2(IbtzOZdk$B8m+WT+pV@s6n>?rj9NlQ=>s?Gguk!0r*=sZxbBWnw%zza77Be9p zFa#afie~AA51aO9G1r)CIrG2m=(v5^GOq5Mz<=x0eyn2>3x?gx84@(P7V@BUzbGZ> zh^EcsE)b+CZ~f$W$8Xzy>5XR^TQS8wTDEt*{94{m+IfP5=>< z8qsQoV-!10XDpZ!v!IQz&=}44v zbh*__HptjaL_hOOM1E9lJ=g!=S};64Pc?_`-c=H|UJboe1urcWu8YH7Zle{^xM1~? zW;uyGT-LP9Rn5oXL^?RT9^?`gt;MB(aKHk5%rlyfMmAJOC_R}1(ZmWuUN@JZc|=O< zGzWNrnMc0r#$k2{ZrrR40uENs!sB=@vh{fnKBR{lA~|3`*K->qFwz?r7vAM8Ur1Q5 zTI_KM65oh1n{_DhjaTeT`45JRQ1<`eJV@MaKNf5EeZJ|`*>fI9qr=3 z0jzTEUDU&2`umPwo5Ifq$4UpFNR?*j)<6JAljaI8#bMIyCDZ`Zh#4Gz|E*OlS$AbR zt6c-cIb<{P)Omz#JC@6(ZD6{AvsP1yqz99o^H-?UDR?oSv&hAV?s)o4r;&CzxI9O> zmWr~0GSsf&*Kktt7TP4Jx%x>wCu2%e8_UU1rdFb4`{H_Z+d-V8-FkH>F<>e;KO0NDL?~eXe&&2x#l~AjnwSn3(5R%G3LqAzj&y6%)ae7EnIP@1@E~7S+rh;=6ACP^4fkvdcjq)=<(qcpvBW^iSZuy@Ga$>y>RuevXHN z1Xglp$#7E7n{X!9XW*9JwR2#zIR^GqykHl{po-C6pbZwOR#tp0wF%i#%>rs@;14UD zM}bvd&Br_i$ffny?tc`fR+W};DY`x`AIshlmMyX}i$A|r!7KxI)*iHE2UPUNA|>`~ zj?M4lc{btRW#YX9eKeGALNMTq4;bs6@{OW^_g2z=se$6-vzZKqdZ6IC7UuSFi8{UP zqr2rAa-mX2&@>zK{Wz~rL|_W%x3#3ukuG`o<@I;quZBlmdO>1w+Izhye8_G$<)|ZK z$+*e1Kt9vBp4~LZZ~uLTKUHYzJ-G2xwlY1y;Fl}6RX+sPE%ZVxii4mWJ9ZtD zGxLR&9!}UZu`!#YHoM1BS0N1%-!NbL$A|7yF>*o}NGRfG9%vfbcVBu8G`5As26E<- z5Q9mRhr1ds(WhiuEFhGC`irFMSd_c2Z_|kA+9b&NzAXgU zw(`W!89YMPtBnMD0oZHP&goSiMW!nM-W2dfZJ}n#RStQJ=L3WO5>=|bgd(2p=Wy$e z>%=YE1{b}Z%1e7uAts*Kkbz-1>%vh&jCTF*^Y?UoCnu zEd`&5<$Q>efCox9cSF}e5wU)Yyx+EyCTD<+k3KBg5owSTkcKQkyqp3({Y zDVp4-U^mevQH-T>_tp<@fGuA*?^ze+XTOiKzD#f!$~V+H9f?&G$?4oHXOTUFT~(%L zqE4lRw%g5s>Hbp`YUEG~p;yK!=-L5zIL9y#&$YRBK_Q0+!p`9%nF8aT`t^-DqS{^>k4NN~DN$xrd9u-vV+QJHHp3K=zM}vkzD|M66iA4W4 zxptdXVEF#=ua8D!c5Ta#)58HJI6t#&18&G+d+cZ_7_vx4)**UGb-mKZjp!vVTz1B~ zjDui&z7KVLrcHHAK2oOkqg3|ezsywwgB#)UpfsAG+^|vWFd7^ayS_;dmUpeYwCyyy z77M4hXWDa-Q+@GA?81TC_f4Fy;1XR95gk&{#woQ#I$z@j9l8*HKpx+6zC@iT-yNyZ+?a();T}7531jBgBYzWi;cp_W7Wx zE>Q7sDw8zmP$qX&1w`STrFtsj0#z;1#y(GhVGD>-YT%GkJ*$k{wE&{82`2f*k~JOn z-8?2Z4A+^zQ{y3SDI0b;YK4kDY=iv8Sa`Wi(y)h@3h-ct4@Ju|DW}3>f5c1!p);W` zuduOVJ3{=dE&!ZrrMc6WO`VS@X(v1ml`@zX8W-aREl!C$9Z8^xwH4<($f1t>aCt%a z0>p^E;;PTWTcw`hbple+rJ$k-H6nV-^cz?JHFg(rZ;DXHf}5Inr-YJ5ErYY&?L$fWmTOG85eoz#fYBfY}iyOjhiQ!!mtV zkf#wK*hg$L4dUT+)g;mYf--{fA@q)*m~E$I6jZ|2Vkh~NRnbUP*bcELe!y@IzACci z5-xnSwZa7fu)&;4tmI>Ugh{Jfz6akreSd4m4QwfS+4*!}%~BEkdYmH>oM&~XrOevr ziuPkR(U`B>l{Tfz01>u)G8CAI75Em)kCY0?(AQ}#Cf2e%BUxP%X!cUEg#sSog`}T8eOztTaEj6MM*vAiaca)fWa&(uN?5cCS=s8jR4#QiUIuUSfl%qZ|%J=w{ z$FqmgwI^Xtv0E2~e){3D2b*#MoSJbQG>pTh-@l&cs|VtD*{#TZ|In%Z50C8H2(tP0 zX8Q8^frounHt#Y7KH6|JTaStT_)v1^X~7U2o8=qC!0uT8E>0^G+!zySCacldXLm^| zfI^u7XO28jVgy!Vs;@*k0bQ0IP;xDWg!_EZGqoEW?u`Ls#Yx27TNB^-cFT#F;D?o| zW2oql0>CB%q6q71+)uHwCAK?0&K3f3cJFy&!NEM%GWeq52K1o)T~n*LAo48=(b)q4 z(L+%=DO`fdn2*@+=Rm`LeP&(3BMi1iVuharKs;k_I>QObZ)uYi-3&C)a(Bik$Ghp+ zdfoSOVZUMBE7L4K<&>b<&F(MNRFYqkyAp$7ONyTE^scAP(dt8_2_k+MLmXYu#>3FK zqecl2qfp>dZYXEg1m`r1$tL4T?PUfE#-Jn``o0*TjY&LxD(1m)G$^7A8*kyVKsD!m z?r|lR+QYE3)yE|k@r(Y}b?Wax6@o@KJpnU$CL8k&Fl!xwFG(G}mV}=x?8QG(0IOB1 zc<3m{_d7jaZJR~f&zbIF=~$8Fg4=Gv0!uhOEbrZYSK*Jm$GM=&_^X8dr#(r2(RD2FuLQokZmcE>#=ugNu>f{ULUrLnO2Vg#2eCT-7mxIns6lxbCEqz`W?XoZH;aJloe6gxnp@`Cf#7hwDYD=qOc1jnu09c%xBJ#mVt)8G=_ z-;<_n534L0!hZT818kC@rFCPV2Dl?A(o+kF!YCP`G#{+h?tYq&aAhF3SxmwWeuywr z^r~15AGbAtItX&G5a@ojPjxccovMDiRZeIfw2pG`Zk%8BUGfglPUk0V&nZ%3`fo7s zFXx(rm|8?~wm%aaH(*w5gI*d0ol)lRNBNo^-pVyPNK+P)Zc<)S6^Z;J>jDXOLt6;< zdy;S!p1%(cu5~8S$oTY$OA>5O#7z`{NWg_BdJBocvQKKya0Eb(MsqY=dHyDy*II29 zgxFBGTO@-=&9}23Oy97bkcD3H-IfJB3dgf@`01+@`*@boV?e$w6Og~ z&gyKkL{q)swn2xi7;L(;{)rD)K`QRkmC{cPL>v{?e@Vei3Yyz??GPU+Ia!=Enx_0K z@`rM59qPo;)ZX3Vp~|#F|HmoPKE=Bp_fhNNp*Q)zqY+WfN83h+Lk`Ts!FJMes8@eB zd1=a}idAPxyP+^hQ}nKFfaDDp;e4{Wi;XyNB3_@CR=$wuB)tx`Q%oUI?gxNf{W*J* zIYF9Jk1bYPz$%763(AQmx~^9!K>;zjo@SxW!9DZ(K2{(Amm$GFjd?g`SF(mJ8YsCx z%R2LPir}(cy7fa)I$B_A-^wBq``Ws_UI1I8q1*V2j#M2>jLrW^t%PQJemTbBT}<|r zf!;C4q51!G=VFQDPDN9SXyEC}gkS$~*N>m>tJ9+hra@_Ff+Gk zzzQ_xopm$$Lqn;hTPPcAp`d+>|M?UHz5MHsNdup_uA1ws4O)l5-Fwc3@R0v*{y9j$ z2JSob+LQl8VN#T=pk}o394wQV-X0aeJDuwyd<|f-u#O^`WRfQS!~CRNSR_>GR$s@! zEUBJtsU!9c^p0D_=g0fie)in0(AT#CQ9K=JTLRY0#(inQsTU z&jRheu-p*S&9gZb5JQ^Z(6Q8$FO7D{MT2i=b+SsB*eESx zSTrM3gT@yj7o{QqGD_ZY2%BvxfFcU`qn5pvwq0hlxEE%d~1CqNI=);h7VUL z*WM8^>G+@vy2x6>6Ymz5@jPh5{;uaZ>LAo*&7yIzCvM^glLhTCecQJwj*r$64>2`A zaM0cA^9t!ypAP>0M~A>c*DiL|<09X7RMOKyx_dmFb10Y23Q#;*F!sO&cnXa1?YUfp zxohHKbh4lenm;zlz`G0QHScwzT0&WZ-)-@p$4_>vdCQrxpz?KA-`M_UM)Gcz3V;(k zAf^6qBI)nZZ(X#tIM6~-p$h|1w0#5Ex{QgCq*0E24A!FTx}LrQYEwq-*oKCF6no&d z8WbK{?#mEL7voVf*VS!RSW6RAGRTz>1U~)zfaCZZ3@W3$ye^Qj?YQo>{Iv!>At|fp zIliSDD%X#KMgh=sPkTpJz%B0!sxQ#gmvG#!uob??UUSPNOgwP6YhP*S#rp2_*3`94 zyF35$nsk~d5*~d0@@O<5P+W}h7 z$Q1)+V>Og2EK%_OIyi(^Xsfkx{`+p)#MQq=*P23>6|^K@{b=d^xB`$z{W;}TUo75z zDlGeS-dch1UUtiH5?1qVU#7XeAR0JwvJ z*_8H{D|%C2=)Q2P=EJLkU67D}wFuW=-Zm<^2@PU?en~6zpgS3K9gQa}6=O7PTTq`C zV-DG4e5;veD8afeI&U1qK!YpOIkOcGLiL$7q>(l z4w3i;x7a!C6Sh<8e~4Z>03Yj~NQ+0DFZInCfs%CSDO5va1)MHFCku*XIgrSfKaKHT zs)WQJ&jh>RrXT^4O>vh`)uI0Y#rr-&A`R>yJJH9Ye$6VzR&ZWkHC%DOjd6j@&o6K6 zP`(M01{$2Ym+8R{M^xAAsDQhiGd(j{7M5DV6T8w*llrGd*kC4#V$~Tq{EwsSj;HGX z|JS|b95i%WqT*guG8%S@2JNLnc1XC!-NU_H5w5#k*N7V;S&5Xrwe!_B6QLn8K9ywu z-hO|2xapqre!tf9^?W^FJJFzPO25=wA!fYADCTEu13u&?b&eq>zV@WeRDc#F?26p- zJ%O;&JgMkaHu!CGYx^+{>E6~Lxi{&+d6%G=SrW?Rz)WzZ0xJsE=RJ7Or}`c!+cC-l zK%?{5q5WL4XxWNKr|*GOxVm+5M(SPk(sPG}Gx$?U_jYWP;N9y?m zhi$7j-dTaIKR+2J|5_fey*1 zHEVvm!1elW{>CzYK>P2PZD|&Vtj+xi27|D{K^4)67HMg zedduOvoG35-v{+c#b<>cF;#a+#H*2kQkLH7Ih`CB!Z1$TyVTo_%iXw59PH*G9O)ip zU4qIg=nVpDVRbvs0bo|j&s=Jg=}!iBnQR#cFe|UW?<$|TK|ygdm}){n1M64(0!x?M z4UK}atXd_c;=m6+LBDzQ;&zja^iNr{D&xr94R~A?b}kA!7HJ+L3=4RNY4TN%@PG$$ zs|VxAa>wt_e%TJ{c;<&iM!dgmzK{#lG|J(H6pvPckDj004deKX_sh7CR9ujUdV(;)nK!-Q1#W)eNx{bAH7U z&&Mj?zkmkyMCC&+lEbjklYd$M6=0;qj)p5@vh8=RvAz1Sykk*_h>a(%% z*}KvVi=4$Nl@8R2{ZifTNhve9^AB~+7r>#dG4}5Y6lm2@^#R&}gH4%* zW}Fa?_Hp^Wnc!+7&eWHsQqTOCR_DQH9e_Gw-JN-X-^|W!j9FUeGqXH(n9NaqU!>NZ z2~x7Hac6b#61kTFUn-ZFaDFQ_Ur7l+?Gj*jG-5ZrP~P4o3R|3xIFh&zjGVy@BVNVg zP|M4&nB2plb}qc6Buentc`3LFyY>Q+HL(cng zyY#X38D{D7hvg-t((iRgGSnOY!cMPq-^5e2%M^$={{tBc)A7kgaVW#_nO}(C5-fPE zt(*~GXcxIXPXz>?fB6Of;z^cUgq7wP39feUQk@0cMBM*e!C@eu^EgYaLn8#9IatihtF_am_6A2sb!yf9kY z!?(UzD+XjVR((Z+-!xE0p2k|8fjJXNa?-$Gx!?585!fTeTiaA^R8eX{6LmvF;Dn<( z@9hue71$v)DtCjf4&rQiri{$#>n$4j4WQ1cpaoMA$w7B*P3Kz&4%0*l6g(weYaTF4ybR`X*K~T+epxlQ;&#+UU!ta z^T})Oc~Wo4nh7qb|$&G~25BckAH9d1Dy$vNv+CW_(`pv#;`pWDJG!|l`13=WtV$A}tN<3P-=w)yK$E|`!uaMdnZIIhV4*m; z_20n`D>UK=T>o`sn}8`Ce{*znku?ZkDV-0Ogw^*x*z!vs02+zowD-c`u7HDU%z+A= zDO|nS(#dD!5&X*%K83%(Q=l>;FQAp*xO+BArV1PLrYj|6A140RHy%q(NiVnZl{i?= zpZh5wWr0n&ITEI2WsWomGvjoEY>rY{63(YlBdyry9Kc%+-O>T`sTvln4;}J=*ExHS zSbXd1olofoOmyQkJW&`kDPhSM-GS##KynjRUxee6aayRZbw!}WRqo6U7kFz) z!P8G+#}@=4HZQM`BFezyx^@>y@z|=yygg`}2zcEPsV&J*>(~QLTLzHsalCaWUl97? zV2Td?5SYx(FX)Yugtm;V`u0->q;A@q+r)$}O8(}~06;HxREof*klCIwe=f}e({9D~ zY!%au-wv+G?gAFLz|9me_)3l|hQXQ#HyFuun&dLS4QpLHs|td!Tf-wk(Cza<+HV4Y z-G5Kw?&9M!55(UHreGGe`+XT&wf9gJ>)OnD9^h~(UBAEaiQ)2TPeQP@dtkglct!#t zwB$a{b~AW9*w|@nEQz?!e`VtmU-*#`O%NBNeqZ?cq$b z9aG3B(=Uj1b*BoAK#cH%JB)tc6Oj*}`KWaR=()hmFK%ffTmYiZ=Tad{S&294o+Ala zas0Ie_osnfS6H`SMH#vMan{gwtW`H$A3F9W1#hta@3(`GK^k$_y2^`(-@L-nUS7SC z2Yn3VwMgm9m=gR;to4)f(uO6;(>i5Za&;gG#JEC*88JyPs;6_}Ia^s!+od(9i+u2&cqkrQ+XWx1 zUZ+8kCNvY&Ee?VZ(HbaS%kkURq$)eA2@2%q#jP{Rc>c42O=rGkoO<1qs`47y`l14! zb5&Pu6hOrbd5ri?*tMM(2*A(>$|@HV10T5DTehi;9rs%Af2s&glwX|h=A%s@R6Ph$ z_TD{?l4SiU>RX(`>IcYf^Fa zA)k@7NRNy8ivb$7_7}e{iip`y)@kQQgH(2LuUl~M!8n4!aj{QUaU)*S7oF{hNLEsu3&Y zaU65!w$6*7ekeJ!#!DL1Tj}X?GXYx=q>})) z>Oz%a88kXy-chI#iMH{9S9+|ZhzPb9){GpE2VQa3bljgyRiQ_99hHFO_HQ9(T;%`W zYJ|72u-TkjFlGgoURBtnVnnGk4v6?e;S2;`_b z4{u#dq0SF{zv^cUDkv^dlouilOuXo7o`nIaJz}R9Qs}?-o?V+==4}*Uk!a+s- z_s;5wb#P4&AoBSe$M;|OM8JSbt^zTzEsk>A|GLg~u)7SJ{xtA9DG2NK$F&@5^%CN= zNc6-w*R9f2S3o6(C;xr^oOr#0aCY|XdLhMNQl}TW1$;PQxUM7#U#^l&nmq}!3npChEKnq~^Es}F2Ks**hGAJ^ zBE;LP}ufmHDzIO@;wO7bPK`7;*l4 z`TxR=w*FPwqQECyPkzP4xB#@IeBJC8K3;wgZ!ThKvt**j8OIdDCw01i#xGzyZi}ro z5)$m$LIz!P_QLZRDtWq7J1CQ*i|C$ggeP3d6Z-#YBX*_oklR*n!c)xwM z*`n)SxWH^=EQ$X4&@AO|4jUa(X(&I0q7!Y*ss_~~?!xd>$2nmr#q{?c$qx{MDmd@} z7ccj&OzK}E3xgg+_a-x}-1@>A>jB_1;+P}i1~z?wl`5sv*9hZeLVTi$lv! zK)L^P_#}0?WkZ{{W7t?k-c#3jq_uau?f}of7LC zn?YP(IJ$U)Lo_Hw=;UEQ3Ar#Wni7*XE$EF+xv*mk0yMN(KaqPHNW2d0oDtl&So>8J z>_z9PiJO7Uf~-IJC9KDv#rVOb={5@l7CL9DkCm?3kIp-n~IJ!b^{zom}GRxi+*`i^#giyH&aZ!%*W0(z0MN?&A3& z?Lub^7_HUmU?fXIh-X6+U9;J?Lr{epA`o@z@;bYWY1Te9gxxZ63Le*0VgmH4w4jo@ zr%F8hglA>EJsNQmdU;m~meO}UPl!gN9~FIkv9Pgm99gyDu8a3lA6SEfDCYTp_-TNt zM59Qrv&>Z^Rv{N+x)~{G1P<~JpPLlXf^2k+>}6>%uV~#5F)2{RQSZ{h46TX421p;7 zaWiStuq+wY9d;p!$@z5@&mUl`3%sxNO^=k}Ibg+469ZdRT1+2K#`{>U8v~2lc4@s~ zEc2I8veOc){!3lj8a9=|%;vKqE7X_ceAw1;?TGZ0E1?{1S|P*Vh2QcZbdE8|!#s}3H~-3xrJ2ZnJE@QBt%{?Wo(rGhbA z=JFJLaOlMDe88rF@Af+9()q{V@AfHM2SP8ZQ}|0nG(4De_z1c&3dV+%&IxD=WB4nN z=0UFIWMB4%PrApgE?o<@#%V(*91|CL#I;3<8y(S+>a#o*FL`RB?82_7-Rj^UM^$bg zjwi`&dVR~82#jXdl-Uy>Y&SwwdE*bmaKfBCOirkhZbN`0#{J)CHMV{Y0zZ3LXRanLK!B$`11pIL;Gm_h4Oe10sGbmG2`jb zjduqgyRofRjzCd^iq{FNO<|j(@c?43%jDe_k)ArH;1Lag$qbJPXYH6Dk!7oInMoTIZOx?Cme!c4*Cwq7FZpe%?a@noRWlD$UFU z^>aab`Ac&w{Zrw661vyX_Phu5jD#TbM6J2=$lX~^&#r}?`U%A<P*PWDJtU><0 zTcE}2LVa=4+xK#XY+CX4&PU1q-?m-MR#gWa|E5dfPh{jPKmS@3>}Ap5#pJeQ34xi% zTvpf~#O&AEmZ>tRkV3rsY{7U-Hh@UB9bcEl54m&UtaHC1$m0-A9FEZMo~KEnAs%Dp z0Vyr)iv;tK)q>B@v2)+xFt@o1j=%SJNCOI3I<#ISH!}{enKtkZsGR!1->Gr?lY%yN zWqoO$1b{on@OVKy!SH4iS^*5qKpp*2>1nu}t};V)Y^@=*a-~OKD)|Jpe)}Nk2toy4 zD+`lICvirf%+WShUDxXQ1-xYMJnt-z zXqA;_02HhCfvrcm)nekNYK5{OGfb@^e13sONn-pR`580Vjj6STWnY<>_#{low$E-B z;ojUDd7`|KDz=vGj+NCxH#;Xee4-|wY<~ee_Z9ABj)n{H*da#$*8hR$cXT&#PYE3F zY24dF1Goou-egolDJ!~jV9Qd65Eh1;^9VXh21CFez)H49Gtz|6TR&r7U2Y498)VRH zg^Uox^UVGI$t)u!q)aI@iMA}HJwL%{(RDqv_;0>XL_hF5@wwa5dPf~g`e!M<1f6>8 zD;_wp9?VuA7Z1I;mvb@-d=HP;Nnvrpat8$O!D?+sxX2^PIytEIc(SKmx9lb~J*Lga zV~g~jo6Feh&9Xt2TokDr+Gz{Q&@i}gCjB-cF|m{2j7S2WrTZ%-E}o=1zQH|c7?`2c zb|J*UO=#jiZ}R~^`Wb~i6$GY1F@buWOVUdUVcw~T>wIV@7j^9J2 z_8Eha9JY+{5d0B+9 zvWFJ7B!A-v?cRIloB#{1QpX>^hGg;sw_Mii&)^QjwOdV|12!{fRre1Ikj8#wD&Uex z9>j_V7FOUcEv7GLC(s&Qh`UZC0L<(=WH}g1$As&}Y>Bh|9-c9jgI%31Hj$Fch}rVeV&os=iT+pAXP@mNQo z9XUZHagb_Y!27*etE?j%$2h+z#?fK+i<($K(4sUFXhcBKA^Wc$w z_@$s@3=GN_@f zmndc=ZtD2*7z;+Rg!2s%60-i=75g@XU|6AWw$juCE-A{NyXzJX1c0rM%iG0_qKd0i z8pfd59O>-XB%r%D3ipGMW)EkX(nq<}3(h5Nff)dv<1Uu`;Ib~^gNv)MprKa37}}CV ze(NcBUC^zSG3VnO<-pSDtfMkx8>UE0)%QGcrDL;S{ zyL5Zz1dsZ<(k{kA26&jHma?>DMoR_S?SVeXSZ?NcI>s|EkG{V$jIHg2gdRD4>3FkI zm*tnSbCyt?d)cWZ;^xsBEw>EbxHEA1@}au7U#(I*1L(+6JzBL1NX0GGX>;|)4mg#) zXhsuaZsnvo1pu1czj0=<5FdR5m3>j=y=ue;XeQ236s#?i*lSC{)iEW7^-5Xv)2461 zB#t6%R{WwvN;lt>T;5>;C^mn`v*rc98czgj4j>7JLuqc?rSw3~_m`J8veKYxXQXlp z`SL(_i6c;h8{hpQFP@QUQR7RO89**=6+5Ki7gFoXY3RmmIJLfMCi&WTqEY?vP zBM>_*@zyN|L|_%7rkJDa36JBG1hXHQOTrhlB0=yeiSWgf$m=JABZJ5;t zkN%!&6Njh_{Sf%*S_V1wH{4AQLJin4(WDf^ZP8c z&34HA8X}cX+U~X5sSUeOUh!M&a0rU>OMFpv0Ubrsd(1>=$diuX?2+Tw|u+#hKad;?~|;bs!~!O#Ue|Vepj4`p2Lm zpHT_L- zyme0hYBcZ?&gsnu#iW8;gmf!A3}7ISOr4*S5@aE!iK29X#)cPHI>!e-#=OGkgt8Qr zM!FZ2q@;DsU7mWe8Q9u^Wiu5#qHBqQOAK~y2FiHB{}+ zM~A%~>WD(vd9eics3^91lx0p;Np+GJ^}vuk$c+Pg&-cO zJn7El6G!5%V9Th$cMqRlpA!>^*t2t^g%>y^$Xg~#@w;x(?mUzTeq>qx?ctE+vidim zj({^G)OU7>3AZaeCsTI;fFk{Zs4kjt{kZ-rD^*~vzayspNhwFl9V$;80eD^67It4e zUMHm~=;P9!2*pDm$u!P~(&(TAOFS9%E91#x{FJn)=rRs?w(s{VeUouyN78oCZ4HJ0 zE9X4m5zajeSp8}f`0!#eqbHukZ~T;X0tZYmim-l2OrF<&pjmMN9AWk4j`TQE~%oGiOYZ}Siz73$Qf=2g^dds*A9KD`?<6wpx``P^9IRyD)P$5Zy1&)l)Okv z6jQD;H+`!Fw9+W0zk_l3cieRcZ)3sMW^?7bB)kxJr^pT9B$^Q0W2IjLF?i%c;5qEv zUT7i1&?}zs^H{2e8@iDWSJhUyr3RB)>;Gs4ByLSR!SICt@{+-eE?PXpi;-MIC$s(Fkmy?qa4NDY1N1;s1D2gy;ZBi z6$%Pe8<)$|*Q52%bv^*n-8chQ{4aNLLO?eNwby#?4H~I5frqCM?^d?n zKy68Db+_?o5Rr4OI_^X++NKKbd^uYuW~qEC*!%7eXcX%dB0g~GgS7HxkCs+S+-tQA zo7Pl(p{^!ghi~3h7_@Re%?KxTS3p2b!>Pi{IfGMyZYTLKeDl zIW&7sQx^!P+LyXs#j=LstfA?h{2)mcL*V>@bslnmleLgcOmDT!1!V9s;I2C~MRdah z*E@*g?3KYk*QiD4A|FQ9NH<|?UqK`N+I6IaqsEdC5Z2l(U2_OhM)ALFA zP-s^Sy<+nfdC)jCgFolyYe|E>9ZGKWz5=e|NjdS=4g6f?hPz--j4Hgy-CD@?FJBjD z!{Y+{@#QR{f{*vPC1`fdz;)|1$al*VDNoab)3U(h4j4Um;*$a*HtVboU@P}Q1}Yx% zKYL#Gsvm6CfinMB{6fUK<~9Y7sUwK+U{%90K2e%us~vy= zLQaY%lVP!e6QJ`9V?kRg*msXLA3u09#Zv_x^{;GHrq-yB+R=qcc`sS2KI9R@5ggK? zVLKg7*{yS1n^c%c?Shm+Df*hBIXot(ifBf55r?nQF$>y4J(Yd(66%mJ<$pCxW233A zCN5%{!N|VqXAz*Tz1!bI<1tDx_LHjWHe)dIePdo+!7(fqDKAU_09uKs|Lj9#Z<#>B@>v*xD($vz|A__s!lG{JilvsBs_N^ihz~eb818 z=`sh$iF>{AzdXZuUKp4R-a8?<$61{-*S!ZLlz8 z-gQ{a=pj{B^_>L)R-c#J#tl)5i5zasTDo$Y#|=yILVyBaQD0K{-M8C3PCz$y@}+)T zpE3SgBS^&>^$in3eM<&MZ&^IF9f%sOb!{mK00|%K->0uaLN8}c5e{2Rf_Ju?jKq_^ zc02oJu4ALZl3%NwK~d)=O}YS9yAFRZADrM4msPCW=IsUIjpX>cU&)je&dHNtYSIEW zyL_ix8gTJKxw3g7Tkb^adNrG;sGYz1{ex>jtHCJbv$B|;^TO5-G6NT7Mfb2N7q9YG zn4lm4)o{bOLb`y%H`67XkFCk2mS0bQnY zeP9$nWJkN-ZT(Zg;A-zSofVU-G`#N=U~4S_QIEJr7&7>Hm+j9{)*!TSA}mQ7T&8?= z$QEsr26tum{S}j4j#k$+JkAp_oZ$zs)Q*1>lpGR@-2N2ZGcjH`h&-af&+ z!}oi??VQHi2ryjmSvG|d1{FRmwFJC26kH}758{#aHyCd%UeY&dDSJ0AqMz9rdb7U^ zl&e|u6$*U6l-)d%2^nysduA4MM4?VR3(+jvMgkx7a9k8q!uP7r6~=;FWiUUSD5kNh z0{>MUW-rgm_ENLzK-|5B)h@Wa@G~YcM7Fm+&|w0*@ThkO!X3q`tecoxt=`xIn=AQg5`;Yk(M~{mdk2*3 zIJn58c&~j^<%~wAUS=XnfoR9|g9a{|J|Jza9&H=okkss>dRCFcJMv()#%>f*e@oNb zERa4GxBjk<58QD?5)G81yI|JZEA|3<=;e@SCly&C5XLvVmrveoy3+H6I>H?eX`+tt zND2LFg#csFf!#{RnIR&Biip4$F(6{FHI0U)j8M+sjMprXYSvucn9Qf7!5xEc-`H|a z3S>1Pwfg)r^^-+8>pna?{tl7KXkGnF@yz1J2vw+ZIU+NaA|S+EJ%N72V!z(3+Ng-S zRj2!PObHC%XCWVENr+JOyVyFhY*6t~Pl*(N)1?~PkDZ@61H*(|OA!?J;U3tEPG)ZeA<7p^se6zD_C-UTTxv39M?aWpWMl*T(5sd(FyGp$Zo z)&#`aT-+=Q{ZkQoMFVT43Au?PtHt;cj#yn$Rt&$Rc(4W6+>eUSmITP&LxpdKgkh_- z&6tl^;7(4M<~$HG97xyPr(S^D-Z86G$)l#fI?Zdk38oj%<{A)ETohLCsM-!5AgjUK zJT+vLaXYvZY*c~1S}N@qQ?d)z8pmVVm`mTgRT1^5+tbSZXBNO;vTEff#^XQr6n(a@ zVp%|W_(hVGp0uTGN#Aq?rZx-?B@>O=4z5b|*!|86*;=(HkhTt4SwP9mDUH%% z9YCf;t3J+FM{JZU@}#S|UPfA^o!!U>{pfi{o2!UA$en4us17Xjr+d8!R73TvCxv5li8rfB(;R^!G58(oXdM zE%g2kic;l}S|I;IyE>L?c^g=y(F^v>4Qj*9`ue76?ftRqt6hVTHOrVKX`rfP4jGwC zY4AIKOIk&P?EA909C4uSNx|#|tkpPdmOeEuWj*h+Bqxah3NlgrDMUgws9N;{a3n_I z{kg;aDZ#gY6zn?w9=H_Yxc5kWApIKQ5#|H1iyDQ=-%>wrWtnXS;H^N7k%@QX18kpr zSpkkN8%|Ab@fVXfbaH3ADA~pg8DH$>z70c%WJ}4_cwe!xP%_ zBa$wG|8?9Vv_KjRWl|ji-vXX1)(CFTRrL7Y=qq{j`@_tOiAzvc6+BpQ%N-5nn zZiwT^1ku&fd8R@@{JzoHt7EC_eX6Ef#HCd#JiMHUZsf!M!*gXEQl9cq%Bg5j+3!G{ ztrO4=pN!tg@dw#0(F#+T;uCeye(Pm0ori#l`c{1@S5tD&?0QP^kl&2jrac@f3@-fc zb?Z4gA_Cf4992Q*8$9M8m6ItzBjt%+5;Bn^&81_l6Wz^dT65V*rQrwVIkITjx4|et z%v^qVhC2KdaOy|tjxADx-MiQI3t(&+PT3}UASQ1cxPNJHE&w)$7dFC^Nf#z zFs2hRd!3I@`x1BNKWsgDrI*UMyg2wkOHhjw8es%a?HwyjqWpaSI_wh!TwCha3XfRd zRXPXIJFf#cTt(%0Ryw`@=8sXqchHp7D`Zx11EbcGKXI-B_>5hioyVtFy~z9mc+Bpw zVW;;bKg6})PWPfeFqB{S6%UEY|9i5*%;c-~f_BR}l|!gaWC&*qbW3JfPKKF&uLK!CSz$FK!u6 z75Jr@#(l0tfU}Pv_NkBrBhEsD-RP#5Z3x-2a()ozT-4un1n@kD?I-GZB}dRfVr-FWROW@*1gKBl5du$MLp6+a$rtY>x$?_=D^E;${xYB7#~p}mZ|!elMkK(2G7u9)+H&?&iUR#09Y;!+w{E@fH|vQ zQR|jJ1#YeLUKBSm@&TO(wLon%QsKxGlOaX6;fwz*$i z!`Io%8%$rjW+UA%NsIu2|H$TnzFb zXux_RoJTp_695)L+WdsaYjKgOjDV-&eSR~5Q#oLYRBhxUyDkmtJ7BG%;7MzCStIRiNK$BC2*eu15{(NWGm=E%7bN{J=MEut_u9-}B1ZWX| zJs(F_XW6TPUQZ<)wdjQaE00JWITp8pVchGzHWTk_Q+D8!sV#tIC;xfWiHUvxnm_XJ zOZ8d#XjXxkwuSo-uYqoygR_T?A12WFP3?Zev~Z)v9|%uXn-9o&1Fg_v;3SWKt%(x( z9m=_p!$NwSpe^?6B#^lUzq4tGVxB=gRk}z8QW(CE?}KWaioLB>oOJrws0Xc z6X-gmJ<)v+*|*AH*sC_SqKugve(v1^2yHm1#8f~{OTYwO&$@ zGzXObF_8kwnj4gjC~R##+;F$ZMM$}MjO6@A6;N&JXQr(sgdD3<&G$lJ{p*^?7o~K= zt5?VWVL-O1-{m{UryH@YdJY`|@9z8JmR=#n)hN62qZx2Pi=FhTkoZlHFv^vu+1{j= zD^wdjk!!r~=ar(P4%~~()MAlQ!-Q%X z05;nK{4{Q3gp@EISxdf=jR7N2_Ty%YDb%s$-{!`|7;8V?wsJK@Jks?$VbcKC>MmTU z82ph-vU3Q2yv-h9VEY%RKS*iM=aVl_FOA37Dhv;asSnfMjE&p^`J)xvZR7@{*TwQP z2|M=>p39#jQY7-Lv$h}R0Lz+h_?09LG%OAN^2{9s(Mn>kzLeU8EB6kG1^RxC^^`;* zHOM~<(jfub#E?d$VoI>Kfg}GMIwBn2&=FlGCLVI->rj`F*s=9(tx~_U4~vYt(Gg0p z(l*CmDMXWj@W8|S!JWl<808A_k4;y5xnmdqIN=>tR?3sJYaTd-)&aCh_fhOW4n1#~ zZq}LKnA-g?*Nu-5<4>PUIpoO0%xmka9D)aRgEtVZpDX!cZWbr|; z!sTytKHZ;L5WRaC;C4#+Y(+6%=~VmJakR}oIAs4|p9H@fqT)JT!40kn?KMnczPP!8 z_x&qqN4}c=`d3WZU)39|0G4gRp2;g)`Q*^I7vfAcz<2!7OS{I$Yx*_f&F=tgL-BOh zVj}s}_lU3)3t+Keazo2KPEho^dr!cCDjN=O`nV0Ou*kVPdb*M=mzDk;_;aM)kKLQ% zuyYcKV)W|`7q4KuCc;GhPz!32g$R{ro(Yeoaex97%#ThRiN{~CU0sw+WzirL8Y4Z!B5{v|Kb{ z>v>9_fOY&zh|7Il(4SlEz&S}sy&4}jKLhf8(8`T2J;^jqi>&w(XzasA$->eU@{_?& zb9)G)*WmF? z@BRGnFAsNp?u}qCpPqM8Suc-g;-pWz_JcG*;bJ$3oFui!Z#-ZR;5Lo#%A`bczRP2~ zb?Omo;90CA^OpZ@|I%PM2F%jU=e`|Hrkkj1y?PqUz7;u z^N#$S13E$ro-M$;g^6rXl(v@?kk-UFsL>BCygkK6o0*82qacJ z+{g`LvPohVzw<0xQ6<+Nh}sic?w@pyvjZ-tTPe#h8E5B>c~Du+-dkSnsn(c? zZ{`TDq(P{8A&>mcXVKz{Nk5ny(a3^gb5lb3#4h3bcMmDTIsHYd7IN&wL z^)+&9>Cru)2+@R7hH-cvIq@YUePar^f1it|3nYxDO|w(oXv8X*U2iy?7?`~>Bq$lI z4}!W4Md#Cr!SmBAX3>C$J?g{@;?Z{-2erLx0dt5@bl+qQ5xoi(z3nczQXhp;-QoZh zSE2q@tkpck?%XPi4SJe+;kvW>fwXk_&k8O{w4#+6Wel`UFFdpPfAzHFL+$>ZnyT#O z6PY@y+tN{y1vhuq@jzbs5}zoFqXXIiin@#C2vubKa~Bi!-~Eqv>E^i)DpwW!g^X5v z?ZEw5cH|+ZwThxVy{X}jTRKL6zO+?jHkzuGAjrnqnD!& zM~17vcZ2#A0=PRYlLBw-265T3`ac6fz{Z1l!!{@|h_~o57t19&$zR2Kq7ek3q^sN* zOFe@1W?pm%pRP|tdJ4uI)gr-P-ZsN7lu{?YPV1fmZVbBjoirk(nyB`EYhD_F z^l+;jNXBmu%>VKnZF3r$jB>rmr8hB7Yul+eZh}0Pk4z>qR{V_lZvo5N3H>E1r6z?K z)?Ii$qHz#PU9L5E3T1nO;oMFMm&>1kV0k{J?p-s~g|&)=76#nMLAUsX-Q6m68###W z)KC^j3plR1ClDPm1AQ$(5=9j0srGX&8i+x~vnyBgss3tH8ev$g_ps5g{insj8;>Zs z|Bnh%Hm^obnvf<}oS?iG3vzO=y>Vj_>bj^B>yDei*HlZNd=!(4CgVd~w1GL*w|l?l z5`917$yG=Yqv{PGj3$Ko4`Tzn&^8ZY-JyUY4(@DYFcxtXIEWgMNCu$t zY!Nx-Ck7F(l0Vg9YmK2vBd_&IIM0vmO1aoM5BN_{!#8d?!|}6fh7L&46!Dqs_;ioZ z?tMx3Kr+nPp_?gW@%iTe={yB5-CybDfRq*HrCrg`2{M+;Rs}WEz-`MfB__&n@Q?Zx zeJR1%k%40S$#A)9eU)qlKBm3%C#3v!!eN$}_1N`4lEg3jPf^u<}eH+N^i zA!RJ*&JNZl4k7k_f_`7sUJ%a*^72q{E1Wkb$!@@x2z2B7M zNolZeS`8ZE1k-WF^@3pgI0;uik@W)RZ7z5zW>7^(XucmoUT1mNF^fk|_!V5i!Pb6; z3k>THQaG^X?xQcs034e0DDsw&ewSzd@>^<}TMv&ilL>YKz2v>)w_Wx6$;TpYtAgK(?lpZ*ru)nduCPbj6hiAA{4rv(+ddz1GM4ok!f!Epl|(-J3A1ZJ zJwgNiDe4)$<*(zGKz3Q;3{0lmmL-Rdc0pu2UGO7!D9bdFem4WN*SZ6c5SO>jJI0fb znvt$vm9e6s7y8XL@puc@V#h(O)(|04gRbwd%_@YALM=I1dz5`+|PW zi^)a#YrH-HMPz7q#tE5_;QZ>!dnN4L0OY5~t4nn!rEu{O~T|#g&4IcNa0BxA+ zh9PP!{L%fwoD*69y->nf+1uIB5f1*_d1v(OS_gD+h@Wq7xYv%IBfuf%D{oO52eu-a5K&h$V5Wy|1<)m+saP&ci#s@s?zhi5TDU<($_B# zEVh~OsMi6CwsJ1y+Lx=qea!T8D;9*tW<2`ifCWPkm1(W_MAW?LohC=HR!87)$9^6m z@kwc!=3Xy0x(@c#s^y~K@tQK&8hnc|)4H}q!f4aGlVDN!cgQWUfz7`%DDM+>0xZXt z`{=*MSrvgmL?V!-VaV+l?Tp8hOhm)nPXa zg-{v}&VCphev$X_GN*5gdUOF!7(7rEN{fp zv}&?6OdVKqN-rn>KH)NptKRDmJh65KbdtO`qj8~jc`+ry7s01dDSDz3B3^M$1W zP0Y_NA<;~t&CrG0$H1T7cW6s=G~?W{of_p{;J5i%dDq0u`6E~Bx0nMHOu4=|7)QT( zwY)j?9hgXs9UW zuoj4#bwl8!eT8)ASi+>)rD@aGgPtpDQlI8=-?+BW%pV}IMQwLWubjJMB5`}yNE8!H zs;By#h?B3ZncjL99O>oB1O0OD)29n3N{^a5A~fX5l|93U!8q3XVe}Hj&$%?`MA+z$D}Npn@iqQ=HuzEG*M9R)cjVml zWgZs{Q$Xv}j<>soT){cn^BH5nG3{I!C6aQ^-Y-g)flY@^Z2N6u)}(98tePa?evZHJ z=c1H1+dkmXk3cYge~#sMF^d%EyG}J)80MO(Ct02|@BTth;bqYJc@6EVh=Yp@l?B&> zR;wB0+aUh)-G*Kej!uLVj(d|NIbVVssmsp;BH!V9YLSE!`($j6V>nPJn+NysL|k%r z+D*SZJmQrqD?d>BK^Sr9qeUMeCYdW5CPMkry2W|7Qo-6C`+63UqW2SD%y|7+;RX5S zJLj=-y*E@&$_F1xImY=cVmXCc3o#eKhu*j@td+8Q!seFD&IF@MyVBw+M$@)DzvKV{ zOQFO4M`sE-w{MNN^HXetzI-6>E#zLl(tTl$f&|aKyRBWwqnxvOv>!kh0toMNm6T&X z@1T>a6u6|DyAS(`IjujF;#zOuaW#R%FzK{b!YfC#RewOPs;xs(N-z=SsGXzvxEv z144HM@?%JX60a=BZCwFIkr|~;lOS;mhLYZV06m$a+6Kj(p4?kOrxU?V@M`88LjkAd zd^Pgm8W2lG*`|mB?#`5#X_3q%OFrI5;wH_@z(u85RwwezD~F(41Sz|wqsFCDL59ok zv;UQFrhYGr`><5Owg|i5C1G26c7F}qX~HujF!0PuGa>7%Z1?g5?xXceF+Ku!3EIYe z8xr;vlz2CqO2oX)woBjj_<-sEH9uQhfb1~s|EH)Egx5s=cPUrG`FtSh=2Jxh)Mxsq zLdd!pK(9oA+p62pHBX9ecv22kT?V$xt_R93Vl=Pf`$qd=J{~tDw;~Zx>la5Et+N4n zau0266e3B~#cq>^73(0%_Y3)4bU0!g+YvNIt-Nqb#`S*GaOBqquu?ZW2T>97HLz;M z=Fwo?kh-=r9EtOu@v+wqfYwbPznkYH^U~Crhd+VGi{8JQMJ&8~9lrQAaCOsoK7%qg zHMH^H{41d6vvFNM9J$AXbkAjZXv78UufMGP@&2{`CQT|JxCq_(}@qICiG^MSrsPI;U~5%#N= zoCn81qTb;wVH1zpt=M!7{P>$+_Apn{*2*pk z73R=s-B&U4OJ6yxJ_z2d8eH2VMyp0@J=cQTF|fMN7?H=?5OA*A0suC`Wy6&}#XMi( z{Rbb9fybX&t2fKIHy2*7n^*%LhexQN#GDSVqBvxyA_)3+C9xn&mT2$t{ee=L6W)DZ$|l`E(b9AR%wAh1 z`zz(emj-s1js=h9R%;xkoNa{4>0=KA9^P;+r$mBUzHFe}-U|-F-ESG=^O1bh8>mR( z3J2}yhoWNlxmg6CbRf)+mwn2Yaw6WUT^=a>p}nhgYFW1Ybjj3>AS>5#<40XSd-9`u z7d|cn()mw*q%IF#J?OoE(hV?R$~-7CkK-|Z{|y-^@qqRJx@sfyC4N4=S@SuS2~ZXE z4;w@r#(Vj}8OdPdzn9c~6>)=xU7<^EVBykfWJJWZ4BnHlXgeP}l{O6J60)7^*IhZk z8qAhQ#0`j%oJEpV6|LY)ijRIe8E4(5s-tyR`O}Q|P^%#V$7)t;#=8^1lKhW)sAxZW zwp%&4&YTY_jBf>4GWnld7PgCk2Nu@+>Fdfzs5_$cf&T)2IQ{4S%UsFLJF8u0od=`p zS*AIbhfKaqbz78HaiKAw!Kw!DOd5ADe$?;#->sBRjV3l1XlwP&iqAm!OHA^vYO@1d`)jz5TEM;+_Hvu^DD35V{xerG zPu1SExcC*wgq};m+laZdCYB}rv;*RfrM%R8P=wO2zn$`2GzzeBe))z}DGyyn`|k9f z4=Nv_OAV}&v7rh7o?Z>;lbj>#l(Bj^v-ANQ0iD46*Q}E8_O_N!eGmY|zw7_LT2hkZ zKd%uK@zs05*~VknWXP#+D^}So11$Zb2&yVUzx5l@NlGxTFRh3E2wDBn*&fAdz}5Bk zTevo#yQZZz_`Tu^w8ZAzcTma9vF%B_Vj8xu%MD;Wf3WyCeJ3GYH943Gi<>8a}&EJ6lce~w0>PdQj(yrFNYqA*fmLEMh_%{q+qU93ry*(lxqnUp^P~p zz;(YPNX&_<;CXz+(%4prv&eaIU>?<}HW`R`}Lnk1RWro4y=DN$rVB%A&M)}|-y4LfT=D8^BcWcWL-y^!1{H9v60werBZO zPeE4NoPGP(0_Qq(%(!)(9Nq4EW_pK$3U50`nJZyUR2IxMvjS&p6S}-VKRfM1nahJZ zVEz(JuC|bIwrtzk|6H*NMo)d#Ns%0v(}NSogF*ClR-yUXq>?Ah=>RSR9`i$~l5ps) z3BiFnFq=TFdWVd?<<+xtx#AtPCa2>?K5O;sC-nIw9#ydevLT9Cjyp~TF*3njT6bE8 zmm%I`TUI{dff8*!4@*aiILN$v=^wfP-^e(9%p~V_pOsDCR|%;6QEb~+8MkNUa)nJW zFi2kOe&!-WQ;dPjtSW9!{A*{GL10@=tqOka26ig1(hrzuT4Nd_--*DOf=>S9k%x}i z;4uLp3r>NCc9o4sWS@%HuF6wXzzsc@zlk}kZv>8=V^eNDd>8`7Q!T_B|GwM@KB^7P zJ|NAS^v!zT2oXHCnO)J!(9Z`SW!nNY28gdeTbGY!K5Ez;qOgXbpOsu8549^qaug3B zZc$FMjCEp$nWvXxFN`LbmhELf-?T?KZYPlbFMlq*CCN^He$dxy6hA7pEU&8=>3dnO z&F}=m@Hw9~68_jSzZKuR!1`Y4>nfCRKV#J=Wa&KOj(!Y*SisuRe*9!&PQ|_>%e!ne z-zOY~>#u-atb2G=F6C^0a52@+77VZET>M!Pw+5c%1dxbA;ZBdjOH#zA)g|Gp7W{aZ z<2Detw2HfDgXjjhfTaTYc`+)94tV%=*{Dgn&!a-j{r;kF{%^%M_@6=JeKGg6t6(hl z2%s#C{70@3Nt=EukDCHsB{95Og`CQ*?`GwVfWv#UZ*Yo;Q@QxX3{9OeJ2Y3t2!sh&^O_Bjz7*IP$T~41C2f;@>FY6+q>yTL7*KeD+s( zZa(LKVVwVxXyEvX|Gs%5;dIQ+ilZ+FMg?O9h&q_6^!m zF@Ijo60C$X#kx^v7M9Am_n{OZdCsx8E$TRf>_cU{BwkQLUwI!T7V1>>6B>V`B^;moG0C=E_jX zi-v_u6v>e8^zKlZAf)?DmJH2a$d0_SMx$&0gcLC5=! z|6?g;pRdx+bQ}jd?qFJP73M?>a&w_fP<`XUwMTzMyyWVMf(`{64*PK}sUUOJoD8Pp zH85AtOLIr$oU7vpH@A@(Q=zBZs(XM=Ex29TR3U8sQ|pez;$yn)E^eL#`Zar2vOb^P z`|5byvL0Y-H4Qw=V^0dxCN5e74&c{;{;a$#ka={6Km}8u(fIRRQFh=B>JhG#9#=Y_HYx)gz2f#+j9h!8j!}&!F%*4$*(XJ3XFuDC z3jvf!wfNgC%3jfEH*RYAkAz7Cf1-#xVaje7OFwWxbDsA$$aw2%?=M2Y^+7|LHgcqG z%Vv$6P37BoSeygGC>L!$xYSm01-`zn?!A;lw^w+-c>%~L{U!gI1bJKGMcdbf`t4!b7_y??aa%EH%NLUAH_xhn6-N|A+&q^i1-s z5E+7WMpLNM6|O*umkT+`%dX*TgTQY;9?g0uW-q--dyi}9W66D)R^0@4*VEDsAFqOH z0h+I%e1*r(YP(R9YC$TT9${sVy98f5dqLp~@08Y3#E6T*JagPDFgMvV#*ma#`%`%D z?P#&P8**Th0N+SVjhx><}T_EvlR-BxNYPy}4^n zL3aAE?|G+dz(X*2tM0dio3=OOS^EE1{1&gwlX3H~!JCGB2_h5!s5vGv%fZadg-+5Z!UdOmMueQb2i?QIf=VXvG1L7Twv0J7 zeG;4v)~5X7@I8)n5;2f@UtxgNdu{CGd_zeiEB-6^txfBoQH=ap@wDY^6{3N(CWBte zGG2W}oB;%yTbug7acYJTg$o-I3nhp3Z6Mz^bQQ)fAC6u>zV%EX?V^<I9*S7!-M3DxZK*hBGxnU-Hr%=h_q8FQ zYQx(i!CM*ogX8*?taW_s`x|H684K{WE3ba87669SU)jjtk(nu+UhvO_BdgyCG6T-&d(|>_ueyo3#RH5u>`|dw${S>UqC2h!j}_be{qxaD$(OI%PerD| z?+(shF3*vFbGdkC2cP=tcB4BZ7VmuIRa|=pus+YMaYr`dpz5)0^D81^Q&1)e|FoO% z_qz*F8{T?{Ul$@{47X?MNsL)=w*2T5F{j09ZTZAvfL7ygBikxQ{PG*7T^|SPChjoP z2zje72^*E8cH90TojQ-Zbq==50q9y#%AAND67G^P%9+g3(k&%*q&NvupF5S^b_(q4 zj+BUBBJR^m>34(Qmp?o9)an>v$E0)CP;flhth%=CwIv+M7UK!mU_kR1{<`dtawm53 z;!%=v9aL?+;348U{vBZ!15L8E@KvM~Ddad_T{#NIlT8g~BXYOOvGsJ6{LJ)R7*mlDwQM+zw0(iLnM!ny##u=ESZzm^e>S0|ylt10~#5`pn80po7B6 zpPlcBkz=8^0vfBqcaBQW-xg<1BCmCm`Bcn4dpZMXzTcW2&!)}*!{4>Zz{}6_-B4H6 zK?Dk4@1YDoIp>SZ`l~3wC&q^x4@eQ}#IDu@%xRV;eAYn!fE>O4P`$GHHpp~R4k+uT zNJISurt7W>CLUg%upFRlV`DeP5`U@pyrhE)J!KQ%;|~i!D81S=S;7lejx1yNgRctC zKinrpw;#FWY*`A-37?bd%1gMB{eRB5oCM5D&(BchbGu(OF0m9d*0dt9!26-{5{fD+lQJcWh4S_ioG3&zPpl|q(l0cX1 zyFf_O!9@c+j@U9RkUpEFOoxJ8aS0MGb^sT9n#9-$SLFW36Y*|u*eSX^7uf;-?Uzo< z&M$qPX4z5zc59IL`-_-s{r5R{)n-1?j0$3s({N{(pP$B304wbtbzuRAm7IN|rx}nf zGb(GV9Mui|cVUwmYTiP8f&dnSyLUk*Nd(jB%6&!>qgI^7<@Co05fj{cxAlr}K`x~= z+JBlWp%eFK^M~Vt1l)7%Xc*_LCe$2*5Q%7Kkuz06(?Mj}L}{M(S;(V)j;MJRShl1rQ3iMSVqW|VrT zl~VY)y$VkzUQfgA<%^2nwqyC`dj+`)JJj5xoH%1cG8~R#aTUbH#h&eUYG>!8h_jxG z6Y@(+^wAzDEGah^ZbKZ%kvM)XlcciF<>L|SI75VA88$Wr`{1A{1QANeh&jmn7You$ zz!ckq2zltu*9}>1Wv-CI5}UVHBTiw58^{yv zF4p@a=0pK+6=pT4x2|^}ig<9ksiC)xfK$;oyjj~{#@I$tq6iC1y;OKXIqgQNrOmNmewR}o8f(qHpqx`~ ziR{7f+s!Nd1*c2&ArvO>Z6~)oDXp>bFB-O} zEORSD5BHloLXRWn1fJ!8jcA+N6qCpAw2rz&(L+Qb&t|Pjy`zn+H^*`DFG|+~Wyws! zzqU_r>W@lop9ctOk=vZbUUN(iLNu*xLsXZ!kbhrc15lG~)|p{2svwGL!~B%lN2A)q z@p=54is_eBz8)3u&9uh$9f%iJf?iwagIM8n`Lu&q7pSZS6&pO(wo#+Zas@ZQ@{~vL zs5Z0HbdCBnvweaE<#*;Bp2SzuFy^l=%ccE(Wq}{M@MXBLX}&a2rF!x1dsA7+38=7y z%@d*&+(P%$BwidV&MJXe$Qjg4X$QrRmANn>8e=6vm(QSwy%>XBfhR)U{`on(=NzLu zJqAT4UJt#C6LV5d*W<0t`Il;Q-?}5y@mpgyG;i+($Gs|EJ6(uo6>SO>16v*BBfF7Q z%syH0yzrYbS07)B3SYJ+bwW zy3XVwz$|>{U;ZUxTbU)innvNn-wy9%zQYs$iL+gK4yeWbT|?ZxY`k@xi|iSAT-P=L z%3|$|Zq9yq2k^-ckz3D;*?S~AUsRJ!3ql|3tndVW+#JsATcKc3{lBN~1&(K@1E~$8 z=H8|y=KT`R-c$ekWp)KzdK%G{8Y$9z$)l`eG((~3RP|!H;OY1_WC)bV3b^y=nwV`r z-D>8!QRubzHmtq^G|2Imb;S`604FNDZaOFBJc`a_2BibvUS1WhNyz=mdE5dp1z^aj z-W+%x9?#|8Uq{l%!zq@7LDKA?mX*$HFM!s=YdZfHvi>$5?Y<4lpu%U>&DB!GtMp1$ z&p{ApGxk;_M#}s1z->VwNk0`nd~=v7$~hPJcy4Ph(5JH766*8OrX=$Q^DL|8kJ4& ztlR&*fXn#R8&Uy`Iu^4w4JXdcdr&;)NwJknvSU34W3J)N9WJ&HEwP`>q!Ci8j~^HC zu`I5;DI^u27>&gX_!t}kON+o@lCc;{1SWbJc&73&0=IaA5BMuhg~3`I;(ZvH1ZxaE z3PXT!)CdejkHiTu0t^ksKr{oUc2y_%H@QuLWXbh}Bf=$3ghocw)1HmmOV+4Lm z3?20D%fQnjF<1eOfe$cXamlWP5G4-9Vtsi;j4eY?q^mHtz6?yPtu0lB#isb$V#4(J zNCu9sGQ%LDR5cup^JkdRz`p`NJ?zheq6PFwJSGMCdLRPNCh;I z^Tt)ks~TD3yBEk7+AGUTB!d4{rnUsVM$W)&wZOX&E$ls=*7_Jog06R4YD76N<1L-W z9afl|8}IgW^V=m>_=w zw@jCQX69{hKx8Ad1~G5=lj!U(64C&P|Gm4Y2)WpJEpiD-pAIV?r!JLnLYULNUXMnW zT~%E^BV|9jmj0{812|lIUNq>0-0F5pp6m!{J^uCr8@R*GC&iorcPwyNWJO8X6V7@B zCN+T8YIWg9SxzS?FcI?v46C3b)j`gl?9$L%xB-Z>E8KJ>U@>(Fuw3&Tuw`zG+g*@R za@Os~yF$?FBI@rGqE63T_OICwSnYnz{Us9Q`0kR)w@CU5xZ3xHOv*j#z$wpt1a^>n zeqaBdPLo>OZx!dsX2qv#5_ok>8KzvPC!HceFiaC z7v^mFmZaPQ?7^CK5w%Ib7sd8io2%QODM9|C;&z9PQB_f@ zGB=^tSjF9PYhzzKw!_k-x7XXDa5NdgV71LAjoRK8gSwxK#&{v_21}!U7{&H!oNV1N zJ`5aMB%tas_-Gs<#@3C@z)*pNsy69#W!5n&FE!Rv*WuzuQR5+7y*1XG28&tj?&>`DpN3t%k-hBO7qh9T7Se)~y3;QV>%*qA?T`fsf5KIBD9w^w!B#tt!D* zA5r1#h83vo)EcEFQ%7N7mEB6GcAG9sou-)98g!V4jms17^0u1`WYk z`FGf9%4~4Td5E==sGJ>uK*@L$ErQrbm_=jYqAjLG5N!>P%^j`;;H@H|q_NaUV!S|~ zLqW&j%B<^@$;l)^dr0{zjHhvzMyC%|VRedmvEu-LCYlzQ>NHIAWTzOTW3x`VOKI7@ zg&bv5XBtt5#t8H-Dtx@k5YMD^W8#^@X->FgZ#*|!27@C?c`(@I3kw}kr&0tBai-VdtM`T z&<@jqKT;%qo=0#miSPFLlAk+r5Z}oRdHk;fAkML;j`xVTrvhGE6_bzx=+ZJ$em-~C z&cGv&M)BnMwM(#4c97ej3ZQ!x!Gx-!e0g@KUmZx61Mj8<1?y!zXpC-Q7YTU@{j#0y zBI0d8H-6qmV%&u9y{s_LXZda|oD{wR98I@9*M>#>H!qG%*ft9cvM9qO7V?IE?}O$~ zR@^sdEOV8zx*l6m0N>gR2bu=X6>=kXAnA%G6ua4K6|qLbVy<{d0)>0;z`xIj%r9b% z`RMdyGoO!Lo824z2X7geK!`71>JQ^D#!aWnxYHv1?*OzXF8nj}PgGIX&ihY2owLfQ z-`(|P_?+F_cK5y^Avd7U+V`_Tr28_z3I0qMcVH_D+g2sz4Y!|qSLOur`-@B&3K6>M zfJNEbTYOWv!Nj!2?<3$GJmdJjsfJW{V{yWnF;jkGc{Y}(39pGV?)K15i?!DkI`ifb zotWEQwsInF6koaYWA869r@8=?er~PkJ+Rf@Dg-y{{_5M&BqSa3!CiIB5yc;(uX{v7 zL~zyH%dW+&?IEut7m7e=r7jVA$akBeI1wA-HDbm-i?o==_O_vu%-pbKdWK z&?!NGl(2`9(|``%l&v|92q#Q9VC~}v?t<$>xt*eU(WGfJ_D(A|9XQ}?bX~c!{82Q< z7oB9=o~GW5fsF&YJ~}#XgvJ40fO*WRrnYUp~b;=T`Rry(=!JDloh`iV+wq*+<7I*X<2ooOhx zS^uQ7!=(0M;FAXWeDp5uE`YCh;x!r|nwfm`9x2#bBUOntOp7Kn-27A+ZJ8yO=|zsf z>gZ~mQG?P5?XJoobV@N*?}a?_Ma>`}qhSqqP0Ap>0SO1MGRY~f(YR!y8(E3<;bC-| zDF~jVn(anG@mMlSFdAI2h6ie8R9C-NqxMsoYiSy))~KZ`ojO_}Wt-v&T}9QE#Y7v4 zTBDE2qFG~9CYZvtYLho(HdRR_t9*36My$r<8{wwaFENJpm}rP~c~CUY5T*5vAnGs^ ze0dgq8Xtt5lvqbYDJHt!%hO23*pf}KNvmyN*MZl7x%8L<^=2vN0ynA(2%!wyGHU|a z=%z9HAQ%-9in9QB0Al86aFx^bu7slOZOsC&btL6I_~)3p;bN50{W45A3DlTszcBlq zj2&?Hl#4^Xhn@=$cpVv%b3&^6pqsZ9x1r^3s0g)s{Met}1mLh5wtYP+X5ZhLJ9WYs zKtW%7_%$MAdb(zO$vi-+Lys1zM65V$IyQX)xO@NIQD;QO&P{6*2qb+W^y+6_j|jQ0 zKbm1hLYS~=_LU|HtMlt6pT)Zr=AeQ^gOqdUQDIATEg;;k9{+y|cxzsrFLEADkM=a$ z?Z{_Uo$)Dta0~eYw`OwdCHzFQONAS2z}XAU`O6j|Cl6mIej;h^YbTT387uIii{H4f ziUYy~I=GiBLDwGMyXFu{&w%v7J#YbcYIi_(GD&$6+I1RjD&n?u9J=a4LKF})s!1bf zubQ**{0b7|6Vzr3dsu=loa|xjCF$?O>W=RYrJU^r^vol}9!LtLsA9@lh68YJhgsZ zHZT#t8yDs*L^u0T#_a>ipzwQXjatrIRyjGae=7Jf^z9^5!VBs+PFee$?`q~@;jVm* zU+D7YxUK=Hk9BAJ)M8W}XpGlrK!EY)jyj=~6L>S*D;~rpK-{3879bS1GIB3+Do{YzAqnE1?7b;nRl?dK1o-V8HuFV|)x_e){Tdy^%=$ZEUkz+vkHYl1wI= zVT_Kh8EZ8CWU?2@JLMxrIx;=UT21G<)fwr^aOE3{(g{@kTigufC44d*@2j+vr zIn*`xcq^B*<9R1?2?m#+W!AQaE@QMGe*hDMp(*3YDi&>zB{HE(rX~d6b zq0yBExwV5R$U2=4D1Dy#ur51|QA3Mz(`ZK2v*Urv=T1RMb#y(z1xr{GLu0rh)XtAa zT^Skc6JY^Ul{hl$Jt{EH5$F@hdY4XDt&VPr)oM)2R3D|Ar(rdLYOut48=_30e?PvP zQDgE$Nm?I09c!xT8}U|dZFfX7ijA{1BVNXtSX@VlQ90W{)^zNJrbf&%kr}hdN`I7u z^G9a3J1MqM4X%%PrUDGev_+3ZMFTUZ^!UZ}hZKPP1f{mTv5~SfZtSaR7{wQhe0E(U zQ{ygI?X)>k2an*oYW5;QIcNVjaS`b1@__ET6kXRj zMKwfHGGN2wSHohi@8-Ud#eO_%RFM5e0*itttPASp?6#b#pAhhi<+tSpb5vPltM) z0N6nAkvm6zNzj<Ct%d6y5`hdbu_((i zj~%eA_#H^xJq;Ou`;-Z@X#Y+L2pG+{yy1K9gM&~y+kKs|1afD7I79B z*H4kOkdz}w7tOS{#VNhMa)*xhW zJG1?{0CWvC&ZyVsApy2qo9B+gY8I8$^@zFHGlIjh00>oe?&T=>dqm^4vc$b0N}!`H zFGGe5-bjx*_ycUin4xw0{9Svdb4X`ESP#^LWAY{3;_JuH=a3jD;Wa7U|H$~pT6)qp zJy@N69UBbtoQ})(YJ{YJ2{)!JF^RHHF0vu!RRcH6Ph&q{j>gw#IQ4=mdskpn;%$-_2;TH+2dHxQu=2%#C>YEz?hOC72-z=L7f9j&b-7yh-B--(S|w}w3I>fI8qPen zcOKI;2Q!(8#X9;&giJ9;;V?$FMyq7gRDRJ^<3wGbvdj}*Wz?$-IXbc-mCz1EjnzO> zQa)&xV*7MjBRI`kaOgGIo?4TSA*!zZ9fgssI7N=|7*Q43QX^8d%G(A@t+LAt9M9%H z_8*BMG;$cR0e5lTTLj9v(bs&b1)zj!LU$qXVL8Ba!nly6J` z1ye)QPxeNFd@ltLj^F57f9aXv7Te(W{MH68(*3ozoM!@87$xcRv$>==NLsNP7biDHU!t2LJ4$5Qlj+sR~o43C7t&{gRWGLsr< z2?@xIRFa;GItlbt8tQHG*00uYP|TsCG<8{Mt^r#M>}o2ih8{s2@nw+9k{~j}X2qPc zZ~{rWsNKO=A4Qbb&nccYXFtJ155UBth%!Xvv|Zjg4cNKLKAhjmlekaYx%IF$P{!)a zSACc9=8M-~&$GYb1iuN_Cdv>A^L1^+J>)EWW@zaYF`E7H7a1U2!gc`9 z%CzniJ@4(KVfa*Sw@l0p-01dsX%-;mX!5ZXF&~28g^n4AnP9GsYT?Qk-8=C)3|y&D z)x@4K>7Fqqn+Ce=V~A5RndWhF&h|D7CiSGN!eo9GC*|B_?)>-ZX#PmR@Y_Klk0x1= zv6v2~XR^1iZyJ zeRwFHdFd3$8Zb(?N93am7d%T7la#>XGthJ~pIx#l>Z>s;Hh_g{ z{^WQ~!rLhi9up2~+(8@K?xab%GcEo1Nk=g*gj-T7inxm8)Gfek?go3yid7Ti>S+Eh6WNKCs2 z=)0x7A07weK9H0V0GeWV9k2%^OkDgT2_Sa{<)1xQ$XjSa#WP8aZ}8)VHZO%dafTaf z>az-m)4i90t{Sm!`lBBTUuejXnIvJYI+bna#9ROz+DQW;9YQuXX35MszJOnvGEBn~ zWGg^-dv^0)5upH2r#%}$g0I^FCK#c`JiY#g%LtRRwiIE-fDr?L`O2q_6R5u ziAE~oN@4hW^Ame&e$q{e8f`Pp7-?#vG8X&rfEAsla>h{g&eTY3vle{`QxTjWBgQX+ zspVA^yLm+hYmIc1y~fx~GmKaJDWeqD%pOCTuDwqGsEj&?P4ra4-g=IPs@C;T^;uI? zQ?&{eRXMT46{~!Q)%A>wfTVRABQCj4=c`O=e?mjJ6vG4~9q4i@GEkj7RK3wYN(h+w zH9da%)j&DZ>U{VFHINb+)MR`gjj^fhCWe9#Nf90}S((Qqf|G9@j-ex7hTqL8L0DTq zb-Wwoi%!I9rZoK=q4Obab00mD*ayCWHPLufjVX}9r0`bt>Btd80?iPGr6F=A+-cG@ zqcmHCudWQNBkEP>tJ*NC0s=CmAoS$$S|1fnYocNVo)on&24@0l<_J}}eG1Q_*+|m+ zkquTRFUB@6#zw4h#Au|cZM8-})m-Bg15QAWq-eBcLsTRai+lBIU_e-IDxRe`5yf0+ z`w6!>%Xn4(T&ukV8FzDPe;NQmI0PpiGY#hR7ufKJHjPF!HkmcY%GsM|Gp)9lf@45< z?aR+ce`k!Dzlwwy;B-6gCV)lj@^%}jmqmmRfBdNji3MlsA^HmttM*+}%a*Zz`D8%x zBnAsk+n;+<&JK3Dol#PvcxC?2!%c-bW$%dP+w5=HLc>F2NkXJ3Zd?P41azurpL*wr zkUf*}hqsd$I@pyKZz17-O#dacX+my8Z!!+;kZ@K?67znHX3?LU&@-ukzxn8$$KU=3 zSkdW`Vw*hnTDxKk@&q8;M9%1HlyefDS(8)>OPF1^+XxUVkA7-Lr-9$XfMyZwNEFsn>%(2H1;Tz%07KyV{2s3U3 zoCOPcp+l*eqt>3MS^=vd2t^A2)H~ ze4c*%HfUxrh}BEvSD*!`{(DriXtXAyf7;S#GFCsM`Fse8@fE&cQNCA_G3$n%*Zm8~ zN2nt0UyhWOy>rg?4ffGq7Jo3=Br)rNXZ~V`1r;f-ZO^O@5%am0P0g8ewt-V0!5MIn zqUUdkTrbms@nt$a!K+o8S12L_It@RXU0Md_i71xlLItN4>0}8j{AIZHqK|( zdryTIY``_{k|R4){m{8VARVVR@>7L`XR-On@MB=0f-JUR*2_Krx5_EB@8vEGKTW`DzKBaP=~RJR}Nux?gf@j)Dc22>97V<@VzeVx~_wp1jO zVwh4#V+4{_4gyoXrWq)Vfxxow&1j%Uqzd$JJR{d)aWs7@)ezp}gWC6b8K${`(0CtZ zh{BR=oNO|708LI`iBPHfWIAJwm!7M%b~hXz@n$qr)N7(~RKyW|g`-6t<;RmXI8&W& zsy?~vZrunFaJb$P5>K+;)dNk1$og{S6e=>=K!yDDSYMTMw9410$Bw!p$-w%g@S+%3 zsWs(xwgkF*0O3+H@eBO59q0gSDDRNs*Tfx~^ki~)K&QOK>FPgGo52(*A2WM8n9yBSLC}*vAs+_uYA-J?PM}GRt`3Ws% zz-kXduVO+7@5G#mTh{-YZVjmY6QDGG# zkJ$+gpS*HI$g!KTu4Adaz!jeT7@Z(t9}BOU`S~VTozTbq-i0hCdwu7R4do%tOWgGa zyh}p&{&|FPf&jC!$0D?3=cE2$dqEuJSO34)LT>IP&ZOD)w`_*`3Hym+{`!`w<_pB- zLFv7Am^9ps)ytQ(+uw+WG&#>2MH$eng}K2bL=Uy^@v)F|mWbkCC6E}g@Y4%DUHRF8 z&X=k}Jb;);kr`#I&*ri8BzsIK9Q=NJzbrc_aG4@>D<3;+VxAo)8b4!s;rCA$5FPaX z-1(PM4oP~vW&;3Rg8#r(MIgR#&lr0WTQLo~LK`g2&i{TpW6l+TPXrBK=F77!uWjyW z+Ufz~>eBej4PvDG_;>2UTi`A-fAS$fmbL!%c$bb{V6SWKS}x1c6xYG{?u{PGJXnrX zKq91NDv?xj6zs0Yxth;nw&-qkH1XlmEEqrk{B0{4Qa{spb&9=UEG)LW-5^i1z;tzu`;JyLJ-ax1%-YHu#J=CgyHGRU+qrOa$oS%egf1 z+{O55Gw?wMSB}Euu4H?erjKY$`rjJ1uCET=MevJs#TIwmH`36lIxhp0Kw~J9`7s@r z`t+6^zkAR}SSv?b#AM+9V|XG5C~Ak15xRalu&!%sJQ*DIUfoZ9WBVmvv{CDek#4 z8#O)}7ww3VrZU%fDoGUO-S#g=FQeL5jn(MTcLL*pv59Pu5GWCH;KjV_XP}!D>nM@w z8sijwHCdge(J5T1s9BGf(nm$AQ7y40N63L_MJx5(pg!pnvj5D$?2PlZ8*q+L8R zUT%LQ6*7D`b&GN~!?Q}6qX>QK)y+zf>A=0+z9t1+x2Q{8mym1swDe|t3y^ELnx}2z z?1^)B2AYi?$==I@O=7OlYrp=oJ;nvTMd`mO*cJa&Meh-84wCG zI&vNe(R*LxtE}t=%iy&Psb0pi!`eKL9q)leLTpXy?}OZWw3&Bn6s43Ot{xC_5>Hrl z%^DAMfk%^OLZbA~<5rKoz6FFDbY%?nmT)4w1!+`;JH(}6?8KRsA>(d(kCp?|zNiT+ zWJT-?m{wE-zH4~3TrXn%^;^0(kEA>f7j8VPm#|6AyJO5iQDA7omHsar@r>|gF_-Oc ztOUu9b4x{>`W3d7iyhE+SL_I@h$7COGpi>i*^X)?{>;7qN78o(G_f{cr%-kgH5ic+ zQ6M2bfC@Ge2q=p6+8bg=z4k^)vMIDwz}{&JR#faQ6?^wpucFcvJ1DvKE7>H!;rsr? z#7&;fKJ(0+Ip>T{5mo!>6BnAhD6`+LJcEoEQuRv#{AaZ0R>D`ky!)HbINHD95P-b# z99AT0oEdqbmTnr3Y?{0FiyGs{?ds-D#}^=L_Itm~lU+fM-XYLUIq0K|R|2(S%z<0q zW;MV8)7+psrjsX+Y3F^Wio=klZP!%ltg4g#4Utsa0Av;A^nW^;B5`ZxxX!MlSLNp# znU-;QDM+sWpmQ(CvBC}f)T2`- zYU?b-AnVr>%Uj(U`>yX@9HqE=I%lzLNt?KZTxMSd_IRRZe_3j+CWJef` zsmOs>hkW@r3oG1mest}K&inei<=5TJg7kXNl}`qiu#h-YQ<37|;61Ar?14L_w^&fM zBJ#rG`Xmalu#UF#_ZYI(gSJk5u?`?Nhf~n5k==b+ymOrpC|q}UernK;o`cVr4Fl#R#pOteT>XSNgH8`})TS>44}tKq`@Yfbf(pnLAv_~6KZn7Pbsb#cq6kY|kI)Fkur|P% z%OadM6;m|LQgSG*T5LIIZFfefIHGeYEManF!ce!X13GaK6I3pixi5w93`hh{gh{}0 zwip4A64@YMo9j06%uCuEKX~x4aE^uS2B@CKkV`0Re1|inhm+dT&l##>x)cs8->tIS zE#|voo*YV0AuwSPmi&dWbmFKvek2HvuX(N+E-N>|qciIfHk%%?Og0u)8{uL>m6%|0 zwE>XLHAjg1;cqSEHg{zFaG*K>*`Sda$``iHS=a+oy#gjyA!bAf$46qivc8wwV2!hv z%e^--6$|awW-`*lLm=XNGm=b1tum5Z-57 z{&t^;#u2XTO}m4Od(7+yt?I>j#bS{IaZOs(38&Xhm>0P4E5eWF>oQe|B~oM(28N%9R;fs>Y>8Zz}nT z$a#Nll&^5U@+lh%+eF!n$aLBJ2QBLg^bK!hu`s6tJWi7HpTYF+OmKutexl2skD8Ca zq?=rb+jq^7f-Dd6PJcLT|DeB8TQ2BiBd`6-u^fXaSpD6cs>yi7zC}%j5%gwM60oFH zBWG5wJ{P+bGOw3}2#H#n6uR~EEIL+&UM;`j)=KV9o3#j_IpAl?-aFKp!RsU?Xa80{ zykTth6OSP+)ju1yjh;|HiZV7#IEzfY_H=`Kcgb&W$b-Pai99}d##NLVdtX&Wqr0ye zZ)^n%@T?gBHP!VGAXAy}GcUJ57MgzgjH*IOj9Sn06K^K-`;X#zZ!7ukeQ8 z;_ZV})oQdM>j$!;^a+rov>C^NAn!=w!k(SL#pG@e(Ah zp!sQ`bYA_*Dl?RR=)ILKnQCd?rp=TH3iZmdWrW#7$mK2DMtlq{OI$b3cMKT|rfy2T zSn?Hp^00Z87E9+1kGNZ@^!r>h-Ioq8*3R~aP^3ma+@AJFn~`YSx9AidzlCf$w)2Em z`r5Xt&qxOlv!wixmA0inIrSJnRAA0n#CfkQuI3t;AL(tJfUX9-CH_@-Ko!dJ@jJbOXwXUpPnvwS^(7>wD8j0&1r5k-#J%max>$fx$Sh*bhbIp(Xbhp zG4LHM_jiZgEpRout$g9B2vG;Zln=BpOfPU_X_rK<`L$h648`l2<}d`WD}6$7K85br z43@kfk%P_QnLD7unOYJw$6Ktz{Y^zI*IcMsL_>^_ESa}=5ZQK~bHAgZ&HdAT*~k^n z<6uLb0DO6a=E*` zJpv!sG|_J5o61X~IOf&R(L}5+zHn?B3L&ryU}0@-Jlti4PX!8whm&Y!n-=v_`3kV& z*(-Svqwd~4r)A=E8F+$+Mj=M}alpmzALM?pUZhhvdvr~pQdQGYMDe1#R%V>R{g%H4 ze(;C&4{9`uF2-;*;O-YupQATB^jKA3Oh(!k>;j5gzh6)*4sUA(l_9+OX2xc_L9Q75 zPnDSt=u+-~VOohgecwTkLDXS`{uiV16H7^(>njF4q!JPk($TyUHFU%Foe7}Byy8XU z4$svqK5dn+o!99X*0yu)K)L2k%qY5cp7QE0wJ=PGlm2_QFM2y2%SJ9#OmEXmL_MB= zI7CfSzWeRl!&9podiqJfJ#Qdrh*q7ytdqvwy_`007W`Sb^>~O@Hm{qGua_oiboE6J}H_ zZvZ^{(tfM0P_o@#xbS~4-2%;Q{PIJSvHZ4p`%4`p1X)K`_ESqnuzqYFOBbq8SD@9R zmFHYNFkW5?pX*pZ=w*>4_+e;?^Hj+Tpq(pq@|gOKGhTKM?l~0uyh)vXWoUY84wW#R zSp7yQo!v&d{pnp#NjVV@df*#Hn)oBL;0x7OjELI59?X|?De!Nk&;j=SQx`Ki%TN(M z@%i(^u$|-D>}rjaUwE2$4n|8NBOL=1_1MCgA#+YqRXNC*9jzxMhSdKpqYa{pccG+5 zdhSNanz7&Cu6(H^tJ@TQgd)98)13gch&aC{`l>`y&I3 z_1P(-T92xO6(~>YG2GLT6(_t_HZ?n37=hju>etEDVO#g{h(2&;BnL0sqs0t&PH5ti zpu1j{X9%2>Obg}arSsQtqI4%}}!ZrcW{#@Jx zXUU@|EJc~!Di9S|%%f7c@-Q*QljN-=QoO}|IJldM#W_7|_~uJ?il+)?SeZmZD5QF& ze>MrQmrRA*T@!6?fY5c7ZlArZDp`w_=PEXcelo zu8F2mL>DwN`OaKes8OR-h_w!XXs_7xF^d+>2PyRs<1y1ZCnUWP0bJQ_8^A7;^1@r2vSno^^}A_ zm_1au$-vfU$F*!`l*3dH&C%8x%a(%h~ySNt!dr?}O-Y>`@F%cbm|^~_Y`y-s70u53G@dBa`yYa zrNachyI(cc25iyuM=2M&z|=Hn{OY+H`C8-km>vP}DDMh;yGJiy{!%?+T3?6)0}sFW zTqs@p*V>Z{?tmJne*2u8h4ReZ*Cg!~*iFRY+;dmA;rP%K)u53HLz>!RGm5fT#-$$d z?OYxff19kAPoYxRy#ET(md}jtTPR!f=hw;!RPk4$?mBh|ZU-F33}D|Xe6qnk`uO|h>jOpZ^`Yxa! z)L@lfmBmZ`7Y@9Psn>r_*U1b4RqBE|Mci+$pK76pZ0^MWy3PCyN!Yl-)$D=|1~tk> zQ25S@9&3R>1h*rO?<0g zL)D3Q45#DsPXuci*BvoO~;lZXQm~r(@Sq& zscHN`>AXj)r0HN$Usp?B7Vok9aoXhP?%&lLoll=gv{O5JD%uCh~-_d|{dCd&6vg0KV7th_)ZUnmYI!C10Y>#wC8+i#3DIC0n87{kpX}-i@V=uUhK!AdT=XvHm z)dFE@g!u)DZ`w1vzVWuT(GR+GB&ebC987r(kuOgLunNk@AlSDY%mZ|Zk*+WTf#P+A z=s|3TI?)=9@8UQ!jS;3@cy$E+)P2`zcW{Ia9DE_u%5b&21x_G$V-i!{Bu@f?BTq#r zUWr4+ED>%mxk>~zO(J0C0_R>8AKTBto0(WTUzihxJ?EGS5L^)}T@(f%kGr6HO&H;T z%UOhOS2SM65iNH^YtK^JMa(wQ8Rq3GmYfH)sRp;5rx*$Rds+aY8^w#jXW$xkJj(&Z zi9>d?p9%<1X|aj0J{Jp9apTJgo1#nwEOS>^Bb_t=kD!ne6M^tlmCKR8vh$r{D=(hm zZg0#$cz8Q-A=(`lw+DiEXPU-xgiL|Udae+708HHNZMACUenlHnfLC+|RkiLRZIu-{ z;}f4)!NkRT89P^(wUSdQX3)r8(+ZV-s;Q($lcuBs$G91}M|rnjE8D9W#N^Uc1O%&d z{*_Vu=vGnBWGal-u>UeH)ylhlTl~f+4zh$$UeYt2RA4BMxY{{3`mF8v?qbRNxv7qw zC02BGf|{F`WgEQySYULxFdV(I%jb?xT215sZ{!Vl=#L()*rLx0F%(8zps9S3amW5_ zDwMumes8{*j_*PFl^sl(VTw&x$pl&_dg+IAgHD<<=2_LurzKYJMOORQOR{y~oJ@o6ihc|@d8xZ<;iPJwz${K{Iw~t9A}^EP2g)5WJzqLo35c9-S@N`G9%QgK6Q@( zGf6x2aJN>n_;VI*TB%oQg2O58%DMDLH>k)sVI;Q z-j){Fi*Bi;-So4KAj^K-^C}$InT)JExYx`%R52OZ z_1E+LdTH{dkiu9956IqS7Jgy2DDYVy=%5}%mittm&}5ZeBEGpywY>nBUY~!8u+NUq z3nf*MntZ=ieNrQ1XzulDNQPYG$?K9&TKPQclmXv>Re|0ZoIXH{jjr9^YTE(9pAdSn zUYkWv~J^j9gE7$Y=GdwPI z8fq-vd+QYp=~|fGG#Z@TX6Z)8ZJp(cewnb#I z_adg{;(0v$Bt!8F_%zN$F@>1eAL@=>#2UB79gPRF;|Er|_^ve__Fjqc6xeYC#cb!~ z4nh22H-Jv_O*M3plF{Hc*?A@g2Mc0|(o}54R%^RC0^Xc6gvb{D1}Q8DJHSw+iZ@Zb zh|{-F$f_8&bGnt{Ws9LJrUTOlBMR_AKz-t1d(CmVJmE8rYtaciU+5WTzTq;RF;T-r z(1CN#cl9^bGx3XD>~dpb8w=A=JjEUXNd%Y0${ZY3-!E&77D>z0wU#W4q z9Te2YfwrK_-DF3$n7bOwLP(*p$|ifegJD)95lX$w?l5@^%-lqtd-#@6f*`>Y*%Zn) zjh{poQ(|26YU~1eq}`MbD~)Djhxwu?N6C;0u}}#+C|=~yyUopEuJUfLn7DGb8=QF|E5T^e$|Dcl|`@t1ivGl z8fl2%>b8D#rMGDBey}!{yhu5Fe#W{IKV*N@szOPX?nK8V8TJ9GKHLstuvgxdjcYC` zM@oiHzp9h={p+7Tl~k1-Ra8I!fb9%CIBpi92p;K#Ctcp?GWi#$&4{Mj9-w%?v%j_2 z)PIuamL>wGEiL_S*UCn|WJ|MQUJCN3-ut^QdqIJ=GMH);AurU9_9EGhkhs|1WdTzT z`1bdZX+Kkz-2u*2E%GpK`EP@4&4>#Tk?LSi>Rh z8Wo6p_T4o35mY3f$7yR{PzkruWeJOW6v$Sj_dQVyHyM5G$n@7>12%gdAF~l|W6q03 z^a2T$_%UcGAo$4s_MFoi*|eI9s@GIo0n+l@IU_e)l@iM1&>^zVZJXYvk#HksXlK-f z3r8To zGDLDLZ60Xpkf_wsbc5`!X*DB@DjtD;$GZ>H%Kz!JH<2cTFtdGHM^T~tV3tw5fd&9i zlj@gSFJ(;>EI-oeAwz2J_f{jHIhCr9uY+J7_x$L6nIU}NxcnP*;Z<}zqNN$I(8fYm zTr>6unX1_SRg10v9WqPX`6yKDx8`q@_382L^zLlH|IgH%IaHjz<5SN1)c$Z~_qWy2 znFSHMBUc82jRyMs*4DxTMQ(HB_q>>J(=d-m)6=JFMvGbaTuA@1bYl1JQBhoTmV=3{ z;VTA{LL=lqjZ8~qB86k>!NGg86jp)<+eE|enyc+SY!et59*Y70FbImBg#LJciYIxN z-PO)>`gaISSsdZ8M(C)!w?o!JArtf4osS4CXPKQsPTT;fb?_#xX&^^#gA{6O&%`_r zruCBB-o|(RfHW(9kjvii#aVx%p|UxurpCd*tneS~(fCjjLI@=gVuY455n&746%G;( z1*^>kg_Q?^!jm_71c>E)ETADwVD2quVRMKMYiEZ`WF~HM^IQN-SqC|cZp(K_zC5p> z2#Kd8dJuBUIPGrV)jVg?3BEke%8E}=h4S&gBg{+eiq{B5U`9K2Z_&a^DBcK^0m^G` ztCb_X#x%9DagLJ%;Pz{d^_|6Sp>$Pgn>cP)q_fNsAzBg2aYmAu!Z$rto?Q7S3&8L! zlam>r0`bc;5j|1r2bUhNVkuU*Vcm?jHc&M2gll-h17WzH)!I#^5bf? zQAN>sa*3z+;g25bEZViT$^WB?LGA4t!!SsXf691opbL`_zgzo@HJCKWo8wIr!@w!~ z=8HP)+VitHSLw>Si9?J^8 zb&ZE-d+xj0yEW3gy?duEzYl_%(hBQCP1c)dVQZ#?dl)i3-SI=6*}?YQdW&uvhDiFR z&~@0qjhF8(r2zw=b^EJZ;Go^$H8Wxfq-l{&H@~YT++jbXlL=TI^00CBQ$tqE;T?U) z(qZQ5;=%hb>!mZJUmhXiqNzSvJUnGxfesysb5_7c9ffOeHp z*s#yf=1n^4$$iJ96#$l_s~>Bg>auS= zRYb(D304tNmFBcwjcJqrdNRqY3xYY7IN?_=;|dQ%d|3_64WxB3vJ+N#HER2{e2xwpZm~d1 z>Ol|_hYXBhmAn6J>dtW`PzXH5L_l5QGwhCN(@d`7xdUPZ#cplzrg*FRaNYHw<89pT z!n*K9+giDz9u|gZE{W~j3Vi0h5vI@p;%p1cyw`)$rFLywFH#nP#I+0{bw+@45+TYm z6s~W27NJb4akrP!LmNZfB_G1RHHv!-uryih0@EJ>K9z}?qnt#aH!n${ zbj$H^P`r~0Ep7^$=miv`g7RclC=v3XBYZQ3Lh;P0B=AkI`FJ6uZWAb8s*^MQpzv)z z+mkR43Nz2v!t5q_b-InNe7QNgZFV*J9%WZKxem7B<->E1Xe1#i_j=#qz)4p$i+LY- zlV;K|*zdEE_D_-Db@GVSZ_nweHWm6sF=Q2FNQ1U5`pJRQy6#BhhWxBl@38AY4&Q_9 z{Cw%BHhUpDdDU(zp$yrZ`fF%jHZ^z!`|#{DKIP=)ecRl+4K3^u+?OQ}!v+uc{7@kM zP!}NRO~+rNlk3tK70G_pSDef4oZDB_Vs0(U&U&*Y-9QtwkeAn6J@nZd&IQMArza@d zhjav~lF4@#B`?nC)cw1isdMylKbbZ0FB;4(?$$3~sgtIU8aVMRP3(h;?BA`$l6_0m zId`AHcYYtRHbRYgy;_qD5{aRRq-zIRn^|&doc1Q&dQmwjE66sEtUiDHcD)ex|1rxE zsUeeZO#V0nEF954c;mDJ*@UIr1WVSyt^1*z>eMNQD4u2Pj0TUWn~%ot)XA3*i3z$( z$FC#T@#g7T*+!Ca@foU$h>UQr|D~1iDvvH4PPKuLE$O!_Kf8Bi__l#maRJ)sR>p14 z*50j4zw`qJQx7&gH#l)xtjf@^%FoKUtQ?KPZ$PyYL@NcL8FHVYPKe zfqa;kE$Bsw18E$Af05}XQFVF!G0At^fxa=55tsx+xiH zU2}R}K6b3HfVjLwgsSIn)f*IlRXATX2+OJN%4xo2(y7~~nbB0$2V`HXx)QB+ zb2Qj}$DDNzgJgHV;%6^Qh9SmZ4^J1#yHQOsFpX}q7r*XN7xic{z29ti0I_0Bq-(BN z6(!shDZh|HArojNANW`ZQ$EyK>L$64JM0nid19t{eLF+(6D2jg5F|Wubh!J80(!V^ z19wuC;}VF@+0Fi&0&-?J1kSB?T-Vs$%D1Mv?e0in2TvJZ1C2P7Q4rtTVU2K=5jIgs z;=UAwJe&|Z%314(l<#%%;scDvNa2M@tlk1{$_+t$e3lu!Vx1;X;k~d}BPgMXQD*;8 z4u-L;W$i92#YaWUB$60hQ;2f_i0F2Awxb3`xal4cbi8W!0#xJ0HZ@a-;#)komf(SM zO35xBU0Fc3AhPNtKH2uaif)Vm%R;Y+HQChUzl9N;h3)@6dwZ8 zxVAmgqBTO*n#)m?+d-)8#WpvqI0`jE<Q=v&vj@megkxc{gx(eOc)JC}Qdb?tH6!W|_}r0sv~^=j;d zq~{3VvY*?pf^k4@#>Xj0?xq~rQm&0p_8PM8t(wKl=uJpO7`*x%$?%AM-J>bMCm@e= zYBEo^N^@qd!d{~T-yF5*GVcCcTV~q~tmVe!^0^x&^Bd0+?+)!;`fs^XW|(okC>)5% z^U(1F61Qck>ql25U(AI3@AARJcC~b7Jvw40jgX7%-`}FvWv_Up6Qq{3AseL!x~UcF z`{7IP(Nq(V6UC3Yd9rqixztw{gXJ>SSGMM z2vR9YZD+S5%jv>HXzqXwE46apXJMnCmjM~k@^Ff^I7=|Zk#?y94v)iH5u%mKa{OiE z=+^xmXR7>cd8ERKtBoh=*aFma>?%z!+rs(&NF~LldpBPAdPb(Lx^q<9n^1}fjBP*U z8-uGx^$etm<;eP-N1qi-9_+u^{F*KthWv1!FzQDq(POt(GM#fT0PmWDH}@h)0|;?U zQ90VY+STUZiiEBR{5#v!7eY_~2lr!{YmAMLRFtm7X&_~La6|&7byGLYaHeen|PwBpqu!Q$Z{n)p!8Cua^(S}7#u^|rXU*0*+xyBFbQgfkupn2b_Cgk$dO8i4g- z%Wdr(tdt|{-L%kM1N|^QLsXv_ATEqDaVTD-w+?GBF)M(0%}D8DJI=Cvc2rY5#7Ruy zN|rE;fwgk+(J{^xaV(x(;$X)M+AS>MoANGpSYa0eTVNgrnVd%`VW4@Wk#7#I39v;9 zutcVUVRTUt+iecsmt5cc@WHuaxT_Uj)`X2RbK}3Ye|Ju<6;6L|mKl~!5Co5;*;XJ6 zq7E7hvi@7zYxzm4EfzsgU!Q#G+OM`tz?u68S)P^VugO03^8SP&bdv+w*F2`FKz<~B z%iRzvAsFdP?)gxgopbNg>c6Q3D-xFR3s+00pVV_{RKf-1wYoG3j4X+Z7q8p-$3i>BVC3*D%);kUCmd)lPE5i4;hh1LpPHjQl8>63wl+sp3HSP>?4 zkv44c`?{5Gx`@zbEE=F*TQS2&>qWb|!b_$MA{-+xyM6v}?KRvka0!A$yN41?v=a<=&uq zo1{_p^J_zPVegO(T1L8BR$6#}fQn{gpi!qU7>Z>XAr~^|4S?|Tr^F@KVf}8z?mN;3 zpKFkvbLwPAjIF&&X|}(S`h*wRQeE5OV^s(p&qE50$1m!#{HI1Ir_xl($S{RyV1Cv! zuTkG9Fqs|c`0j=&xT)8-`kbeO8Ji=geULu$pTe14rb^&=_|MVa2dusSY+eyfy(&EP zEhtFLB@7bUOI$2ugp+)~dQvuZ$zWAnBoTSDl zZXXErXrIdq?&u}UZ{A7FIvoxK_6lt{S}47d!ZW4RhnrN$>PF{HgG_6#W2Vu>D&+E_ z%JXvluu#r$R;NMhciZhA1=!J$uZ-}L0qEcL`F(Zr!6!0OUW|b|JEkV>k0$$@UiE$u zO*|8M5b3_E&oW-DTrZ}IHE8CIH}No=O&q*%--zC%yyxw{T}YpwpRPq|wnGT+`twsO z`*V8Vn7?VZwchELI-U;bK|>}%PbJI=^dP)B?2lV2aMr*f9pGFG8NghosVM@Bfi!=k zz)7{!l{iSqc~}pQs82i7+@Qku@#TuNkgU^?em;Y`o9@}2+LOUP_ju*+q7?K%VD zOSuoBFes=hUf#tnaM^$q4M?|XaRaBJj_zcEv<%w!TxXD-jeBv0uQ;xe3?RySP{_8~9CMQk3a{aAhz?|;-F?{#G3WzF{sFL~ z;R2lGmvaJob4NJ|3y1`dKo5dfNg7+Y3cf}dUleKVsVe3;)pjQS%AD$oQ0ybB1}Haz zn^dH8Ibc?KY}|(-x{h-2ZnM`5aH~HlG*mRZ9Bp0J+FB^}E1kAzO+Cy*xypTN$o!eK z<$!h~b^!To_Wr9tsvV|zFpw^6MsEb9@6cyI8@sU(*%L0zM2}w1EyD_iZ&HsL(hoa= zSjL?&8nSq)j~5x~!ZfsHys=!T=;ve>`}c$#f%CCaxLtbCeK~Oj-82>Xi9G46&+w-m zOP7^&L79oY+tkwkJzqC{@D}Wik9GC;ojTdYom+zL&rr_3jkX_JP+ouu_S4=6x4?E; z9VM+XNMn1STAo^mT|gEV&l$8s@lg5p>*UTRPFk+wt3J!nx+-RVCwHZ;|Ci(1Odsa` zlVNl$0SUfxW2Rba9`4D7!O4A)Zi9ACFOc4S6c)UMj>jXsKiBvMY~$#rhCNh55E5CV zo(Z;QOD}Ef4Tc~{;ft@kvI|yR@U0fpY!A_wr#{bBE4uSKe7}8wZR)JN+^SQIc}MRZ z@CAFo9 zQ7h?x`Y6MjF3dr%e2hP!$(&c^BbZHseR(|Eq|rz@mtNj_->J2zKX&D}TH2E=_0)C& z)s0=&O)K9O?3vJV4zr^q_R&0DR^qwvN!MW_8geG<`%|^7AZHz&L={_*Z@y2uXt1yw z_uF!5gbU~^N64_v*(-1E?jN+PJm8=5kDy7NeQ1MrZb=+^MKpGRAtQvgi_usBRpalu ziL)wYUDthh*o?!Vsi_ZLfAq3xxlCbz8RFX~4gR56dicU+IZTcZMbYVw5eE665YO|} zUrPVeJKeqpa`yhl;t3RQLPe>Y(XgC_O=5}uZ5Jqd8(mzCVyd0+ zC4l4)r?+RW(e3CLKNlcbU)9WBDpMpjfh`Z|C?%pSTnHQ2Y8A-00a?dJWGWVbO{ArN zr(a}eqq(P_Dv)6wDE6hpcI}8Vi6SiJ3g@K8!OVue*;6*=7Q zK<`?DBStNQ6b@~6Taia5TooYVS1#nFczy72y+5zzldW^-2=q`n&WDEU0ET{q21>83_h(NS|*Ei+$Sc4|&VPgSW`^HnXjqNc9P zpYrRDbEYt%oNO4}VoB+TJwlwy^pOT^dFFX#G*z62Jh$>*spY>`UXvK8ghbSsF||l5 zWgq+K2(OZNsV7bj_U%GuSojS$9ZK@I*a=}K3u)x2zEgdHsx!@Re6v~_R{OIeCJDkE zucPUlM#31-vWGhxk`tr*iC%{-op;~yj&5~N@RIq7anfo=ddeUgVL$qwx_B%2rPt3{ zc-s~Z1jVM~`0qSQ)@hl2jJQv3C#%0`z0bAthj~@DoEu@NQN*H9OiO8(Dk_TGp)SSbMztc@` zk;OYtGquutL(g9i?=;Ypj5rx**l=3CVbN2ncs?R`O#ZD^EV?m$=~8$Vl|58H)X7(E zJbmQ%VF;k-`?`PYf7qJ{ZoQ=0TG74NzcuTm zj}uRf_FPo*6?s2Nu9s9boXQ!n9)6zQKV^M&n8)>$f6J)0o9LzX{~1A!7P$Ur!x8{+ zM44`9Uo9FWDAzImh(q4cD*5(k>zr_0Y`Np*FmJg*a;GTdahYNR76C0EZ=31R4NmL%TQ%0ZtnD!n;?vGeipUvFAjc5M(c#z%qV3hISN-w6 z&ii%>(H21QsJ-A3o3I+}Z28uc4yzlo9EPcxC+~nHL6yLFm%1G%Oh)S|J5UQv6B{)> zSR#Kb(`@PyDLm6icJ#CbM`Bx9LJ$tbu22ZFU#*;z@Q#K#o2XVpN|{a2KiuvO!fxpw|_M!4&V>@R|q_ zr$^HuyE|G01O@X$2Sd&xv4rF3W@{n@$Rv)lt0P2}z;QOW^Mxasicgf#z^;T);)A>A zG|WzMYJ$gR>`UFoua9ZA5X9Y)+(%Y0Y2e{wz35m6;yO}Xuag|D?>%K)r*X!Q!{w)n zWE+;Mk>$UE5PUXm=Tp6e6*7FT>^MAJbK~FC7_#?C@buJ9OrVLi;NJr2s;Q^6jiJg* z`&r+D#4eJ#?d79KoiV0csxTm5HX&=7IXFLZe}VL{ zbWKAL9g`sSs{{TN$u2nm+oz+E%N9hs{0Jt}KQpp}deBXKQA%X%KDAuWtxO#i(3244 zz2dl55$osqbMF3d2oxjcPE~HieunxlL7MUGzloTYtp%dhctQF(W3_D|pLr1nd< zCgyb-mGP+V5?vPck@onVaV5*WgEQDVX{7&#{wYwwbkqdvwXy?P@%1ZI)llTl-@;2e zEOBz(@Es*j5VOp=L|#-Ijb4EsQww_0)?KPoBz?E2E6>7K?;f06rj{ffZuckz>KyX( z-^R(htcb?UdDm#Ra`e8%Wz@*NTHXkP3d{R(+S_4@l`k`W-ftq@QYm-;W3~Lo^`O%M zR00hd)G;Abow?9&W!^rzsRb!N;dqy!tslIYy_+hA*`>ip;|pcqiVK&RYoJ-zR8f9Q zEzL!~iYq!t2W@zk+Xz#=yn8u;uDuUE@~-~~&AP)e6KIoWhGRECy7!l*NP6OF|G{JE zSURdnk2{%{=^s5mZ15pC;cW#EQh=ZFC_UX&IOlhZU5ZU&Fl!@D{Ra944qBdhN~qA(=IW8@;U%6()vNbv?2CF*!LIpGV=umBnX8fEK^g>{O6bI+ z8!Hd^8i@BK+Obq}!rKmJ7_KJI+&$~WYX?>A_P*e4>yh8QaL1_J|xhWpz1+T z@kN2{JZxa3aH~M>51}QP?Tqyp=$c}2^W6P9I)KiXyWxZ*(APE%ID}dDXrYyz09r9C z4?Dw108%HkqUTV0s7^(?bKDM>0Pn{%$Ak_@I14&1u6&oBE!@Ge5Qrpxe6E;5`oEzM<^hvm=lT5=gWPJe4G`9doo4E9{ru+o$t3< z!VsveR)__nT!am%vOP{o>IAn%p4EY#IV@L{qH9|_&$SffV8UgAM8X25Xh}yPN}Q($ zc)*{a@@j2W%WChnq_$BBQY0^};v0}%62nhIG#H4kaGOsTVD7a0h;0UB*}u9M_tIj5 z7spwQ|LZq!maRC zQeDNJ^pKH|P@!52!K(oKzWni)Z+&5VAp?DuY9Pa3(6cAi)`TAXu3WFp{-0-5YVDO0 zviD5-NkiuQX&WZaq^jgdNgMx+QbWN*=W6q^o(7qtrGEF#D*$hwxpt~qpZVnQ3fAY%5KIcstxhe@9I@+M z#NVBa1IYou$A!{v{4?F&PzeR7)v?67QGUS@tqfv--IsI7e4X;IluccKH^Xs%Zt{PZ zB>MV+nMfT-LD3T*wzg=br5=AzeUMTz75VdHqIO*aqnJ@mC<*YcoBPn9xVn{}^{G?q z@O+ln|2AevHb~E|?i@t&N!AxDl0KSY^qjc_3quYc&goSo`+N5p|2MR}eUGWXeg7h7 z4nTLT97KaU=8F>x(MoRw_J4PSj?>YN9WC#QvcseHl+jD%UBCD$z3K}T9Th%v!eM$m z`rq17{nhe8r#B0We!;I*J+BX{mlb4HR4vqik=vI2Uiot7uGp5YC7!6qN8{dnnW3Yu ze$#09B}IZ%7$0?R32oK0^2uI9J_U*G(r7BYQXgn%JR%PE<^iKiPJnbZ4Ls zu>!dN(}4a;3Wn;z`NcsYU%doas{mWeuuKg_U>nv);{N^PWe9;U%0vWCDUoXti-AUy zWF%1f63As&#T2%4qLnWnViYI_xLnSzp&)_cyG|<;xz4N(DuK+yWt{jRceRNXAO(1bW#H_PSyskOcBDKzz9`oox_`MHh$9XxY*doS@w7N}7LqWu8uV zEG{4n#s|8M(7Vd(3@4;ehno+6h-I+^k66>uNF3`+Tm+8zP(5ftw5O0Varhfov(zu?SUSu(M)q9^yGb-{9X3m;wp}L zjWG}*&NK8R*nobcRjj{y7BNL*cM+q#a*0+ld(`5*0J_rH{CaB`{*sh@Ku;S^BM^|g zmdZJLS>lJ7NZ<|6@gp4YTBnoT{7UT{eS1*6CWJtO@j2s+UV-&}1)vckg7Gg!&8>(g5MjBas zp%MqmF&TO8c_Ok4Tz7b%r(^U|&Fvmvg5N1TFa9L#@+^?PyL0Mt-kg$pWTj*2MrF5_ zgIMbYCAlDFdKg|sn)mm>ST5Dpi1b7Es0y)hd6siC>9`B2`!R=Bh$UVV%%M_ki_zbc zBUxMJ-<5CA%iUn@@%z=D^9IT630t?r%po#Tbaw4to$?4ZDr_%Rm5)dUjE8Z&uVXSt z0i|gl${jo8q(R~<+&QyuBg2)p>8`JVbnE%wKFDmMpKUSHifqzhr;pk8?&tv$a-&Cw zr$p_$+g=9S`z95by(c;r!COH51R8}@hQxWwtD~BslmKb53V=N zhI8u8tEaE^*@uoyl8vB>y-`ef=V5{DTCaIGs&WBHBJT>%HDF)vot;B@Y@tOh^&LhE zCiYsfh9(|{CM5THXHbkkS=Iea30&y%jWWGfdF6fNq*6L=4NDxHK_iF*h^ljeJqQ(j zRQ_yhH<#7!FMicnU}Oo`Q9Ny`h8$v>s~yZNy1N`qb3X>x^%p@LBTR&PXamc+8t@%e z3&k@x$O4sv_;kZYSB)JC6Jj~wytzhWr{?l$*=8|tVD|E?O>PJ&iuItJw9K$WNk(YI zf3hqIc6VS`RlGHz6K1wBK*@;>;k(YZxd-4+1HEzratGoO{)EMx_`wjXl(X#a&W+#O zDsY|$EGI{4??o8GHG5E4LhnAL5?}>(B@BkjX@-S~vCTYqZ&H=r5n*DOh(yN;sBAom zH?2U+6LCA51Q1g_#2;C1PnW|j5IXw1#Dpz)T2F$W?aH?r`6ez)*cD2hm27va-PH*{ zEoGZ4+TpfvECPhWvP4?#k@yN;d=3zgy>gXSpeim3^j4(^gj{@OQ-BMWZ~F^Ws}B1B z>{YMYunvlE?Qj){H$d(R|7-<5j)0B9h>Refm{^T`V^_o<-J@7 znyLh(Oy&AdBkvM%<#1Yw9ThdN-mbwGRv#a*rvO?bvz=3)sn@p+*HNozVj5cGyf;QC z{gJfU@TP7p)=wMxNjJM9sX zX#;ZT7YkE-WLY%Vc`Fj$0M4;ziTSsTf7amz!X3oYYeM@kD6)>{+wE_l;;cwxU)_6U zCe65s90B@9WX+3&ZA!t&-7)iS(M*$&PVtxnJo#e1GPM=}A(YxU#KNF34 zl_nMJKiqUS!duKZCLiv!h9FofmE8A~Ou~;!deD{RgHO3i+ehV|LhL)r+myoAO?LjE zj0i=A=f?h_z&50&?)S&~$7etBwBEL+YO2th^Q>uO#3V35D9!^f!g@qHew-3IP zjljKupQoR7b*-*;jJe!~sT0HE2{upRc-^@gOSrX>V8b1a{R1LGP^yrKl4W$Yh{ow3 z84ZWqM&iS=Bpbm%tjRlj_Ml(HJj8sqm#ry|#?u&R%|r-bNvI?Fj#O7fL^o+W zqjPL1c1OHvw>n_A>o^s zT43`{1KOd|(9;thGl2`Yte3g8#u0sf^WJO zK(U#ageQ&Sw2~a+s&%eS8v^KNW*n1~!{DSaO=sC0nR{HU1)jRoLa~br(uImQ_YCMl zOof4(z&P(Xl8$22ln)#tDHS(8Wk{UFca(`a65GPou7JlUN_P^8Q1fJ@HJ`V%c1FQu~5G z$GeIC;~$s2Ma7j38A{>Q;9}F-L$IZ2D!X|>nZ9B2?a4>U`ZlDycKMxxOrMKeeQr@< zudQ3zYgA@ZuB3a;qH-~meCk^tgf|GXhRy^v9co8Ppvo|Na+qhb8cyiXEZr5kpyZTo z$f36-!|WQ37gR!N`S>9LKo7by|F1_7;d>^}@imoeM3&}9aODDr=+^=d8pPyOE+ZSEc`6Zqt8nH)c8W4QajtnrEr|1U$5@3g|>oDR;Ie>tw^Nt=Yv9F!2!Ef56BV(?L)RLmq`jezb?@b zgu^=g)FW*Qvs%>|DllN0gnz%UF^P;3Kr#igOj#~CjDV1E z2#y5uXP+ieUD@Rx>eg98O;_34z;i~X=pbBV8~3Y`ZCS0;`AFzc0_}p;xo`_*Bz!ib zhpEN&!g#_(BBI3zGdda;@GZ#(V-2jKY^)Y&vSO_yyNRzFjG?CEA-YD3r575bDX==q zVQZrSAJV?70cdAgiIHiwu?!;9lAEyC{_NW^Nk<=SK|ZiJ(_HZ#Ad>g$3E{+Qx7cvm z!X0sAIQJlq2!>4}T;UW9*Y<+>y^`XfFQnkPVHDe@n*-{+NYhDAT-t2g!56l|Zk+o7 zs0P8NE}Na=@byMf8_l#A{nn5Yr4nZQSCR@jrwN4RI#U zu64*VD#5$_o`+;1QF!Ch`Gi$ei3PRoK7q(FPshhnVo>?@u->@MV=(bdJ>9W<$5%E)Zb!(3MGny{WCb{z6?u`}*90ee^_ zdo{RO{neMJQ1LH&);hkUN_0rn>4vWgiRAa)O^3-`F}nLn+6ZOF+~mDI5%=M&l?kK1 z7iFy`j`IJ5D#<}F?5#B`MU#)cT6-)=?D4(5--A0qIF7E#3ZjBOAmgHIr!w=GTj}*y zGER&1oZS5Y@`bW#p4Z8e!>IShz-dD1tkyJ2{WLh#RrSYucL?Ji{^0gJfqvyuYw5il z!9Mz>Ati&p4x;f@KV+D*W2omVsw5hHcVok!JFpwM3Ffg&u=mK5=d}w8{&sBNGAfWJ zl%yjI?M!mfe{I1#O81m|nNtRwB?I_wX60*Y%i*>gIzP?_;xk!9AM{_2;8`2hC>10h zTS=h~#u^#Kp#uecd3poZen31V_scd9$#P=Qrs+`|;(<1BvDJ4L zpC-@RJ0gGT6*A5aeX^P7uHuj8i!MHSUgkO>%|ntvxc=IG*0h3C^*H9dJPk zm=bu-cT3FZnF{h>N^C`^Hg(rokhZ-)WRdf}tadI2-~3bd@6WfM+pc7dPqT5sm7`~R zt6u}QuX329hg2e@yP>swo8r52=MV~+n}Ymcx0(tBF+Og~H<59lkTTZFPh-+b0#KN99=m`w%DQ*r+6a-RANA4sOjjlTm#gL)S2^OLxx@9307gXYqOyqVk zj0SkqoEt#fv1?fjqRSBTXDd9Wf3W4T!5biqg0xPtUU)8>UFWkDfI>b@!|#KyYO&R_=z zNh}Xu85F|l$dWhw@|6qx037*A46LUmwLQW#$W=l`alXj=Y|Fo;WLzimpm0yBOmuef zVZ3gT9-o)!`aMsiS-JL{lnDohnNRymDg1Y+vEa@ku!ZT$vznz@5B2|+_>yz^eZMRo z+!uu7uQccOlHpK?ZZ`Js;JvB(Bi?xhbs|1FImw>Lsjm$4SOq|Y!7T1mii2JYcwg>g zKhfv)(}&A4myF*|a~ssPua7;qViz{!+Zzj*h{Yq0X-KMZ2BQ$7qiyAVE`q16L+JozlYP*&t+;OJz6H@S*m zD|(Tnmf_D_O`R+81V;>m%4K(#zL$a;xHin#gXv=uwp_) z7dCh12`)ZeA25W<%|ZVAv;Iq-z}437$R@IWBKq-BMsgnZqvGhNF_2V;(lW)lh3S89 zD*O04l`NTxI7GMzRV6|5{o)a5In94O?^mQh9b3q}F&QE+epH_;78mUtH;q&g2US^J zV;s6ixLN44#VZ#0lN0FZn>>E*-t_rVC9cRVdgBrhvYf12l}VN`&@HQB0~zLPix%$dDY@a#Yu;IwbNCEwxn&MV>h zWdDRNLBe-$5)KdHys&nF0GuhFWwBTR)NC6WV}?10NXXPyi}D5qNfI$#I0i1r`DF#m zDevHzZ2WL$bR>af*R+S=gNyLanS)4}rs8Cu;iEYF77by=bo9dhxoM=i9TwEFy(D7O z3abm3@7^qgs4n#gw$5beg@Gp-mfGg2bThBlL=KDztbupW=?9Z!F!qCi>7;8DXguu!(mj)98Qp{s$K z7tk1{W(_`5D7M5;vq}rfu$XK^H_4W`-Ux5!B(Y^g`wVFM2~4qRCypB`WDpqU5-vkH z+2SR+1ztWW)Bpg>o%EahOqdMEGX|TU|r3 zBOb91dNAjE>6_egW)5n`2}8BjW#NO{uHj6p?tWV*$m*BrJaEfw3o@oOUfA2R9;{A3 z{2TOLA@o_i_oh2deF$+cP>TUI zwC8(0xIDrxw~&f?WbOdUxc0AE!7sgM%S>1$#^2}N@l%%*4lS@f2u3;eNKy6SFhCW* z%*00zZpMqmv4#2kj~)*%w^L#9Jffiz0`X=i{En1g zBA@9$i7GK6Va8`NIkx#xkgp$^8;zzEx-3^^rq%Ato_0wbST&R8toJ1BAM>zeA=wf!`t0XZKlMj~^T^+0 z0%@jCNMF~xMrqc&^GBE$Xq+`@nc-KPls{$fKL3nt_+P7GI(wZ|crucHM@7?!KMz^i z<>W({Y`2>QPKw9T6B~B_RPgMnl)Uf^c%WJf@1{cN`>L>T@tqO|a>{si2Uar2H-bP0 zkjhu?D-|eS&zt`+o-C0e)q}qK&-Uv<(U*G5cHsg7qYw0e=6b%)0*FIdsO2A{!BsymSm@frjuC?VQZ#0uh9zF! zTT@fE52hpA>~YW<;Sxbg6%DfPrrDs~*6*d88*!seJQrMKaP*k!K=lO31#{y*x3G*g zuFbTaz6=;(Vu(GKK+6XSju|t>m&-Dx)2(lS`U6u-9X&QhXEjo6vOz{*Kj}UABg48W zvgRDn3hQbh>PFW?8WNWUT;ZTl&0Cy1zP|?=xP`#hEr%4tAk$GzQ%`$aaP){ql3h!X zuBXvUQc59mZRnbp;LP#chkG(a8*4EHVqe^{@kW+*g9U2CBp-tnK=7O{9kfgmbn!6I zpZikrNeHxDA)#1MV6=)$8j|f`p>qn^rnStNPdHqtNjxYj4~PyK?yC3F#0GT2KpFzP z2&=ZIM&m_t0}ZJ4&jG8IsU=x-0nt;yJMe^#LY%Z2wpk>{Nsc%hU>MPYu#Xx%Xt&;} zhb>;$5MuW4q1fQKwq0F!9^}E5e8#jy@EGs z%KGC+kCvRa?~8sb#m>*UCA|gozxS6rM1s6YIduBMo?K{)}^8 zCKbiSFC(|)rk&mD%w0~Ld;Y+sH4kall&az)Cn7Pm{^H`q573!(%-i8yD8AGfA`c?3f4{`>#FP-IpdpWXq{TuabJA+NI){B5b2@+zbmqQ$f-NKu@k ztmwPF1=@+&v=^78!nO*#clEXaN>?vK8Vdv_&$`YvxnkS(+8iACarvL|Eqz4;@1|AA zG#iC*?Zwtes6mOy$ZO1&Jb|b1;mRN28OHM)?^Gn}*nIr2Z&X|-`XIk&i2}=>aiypJ zB@`&}qC-J)(b%tk%UA932aNWQj`^RZLN7n|D<|-gNA7aIsO7?h2ca9pgXF?LA1tg^ z^1E**OrB1~twoC3241RoLDbw6V`v;-$}e}l zIO1Q}Y8{+>e4U;wnTR;_`ZYk(BK!(F{j`#uk{be48M zoUjR2g@V}rt$BQ|vkPr2xh3cE*(~aG_U>U^t!lf=!gHx37htmq z+k{Ko@*v5`3;(8+;)vIy!RDd5vKmCfj`qwk?ZRtoU~odXE+m_Y=|FqKUZ^#6%>j$K zKti#T^mPe!h920xyGU5rUX}(bOl)%_xFL(1b(Y@pKCT2-?N3O+ox_4S6Y)Bo&Jb?e z>Q0zYJ-GSe2dL-4!e)PfFaxD)1A28V>k=(k$;5&ROULBw4~+$YNpo8*==uOLSJV2kt82{H=RKZc`;oP?tZa^(wG@y8pPV-yyU9 zv$onrs2u)?t(Q}|uaF9nZ;_0jNT!g*C0CH|Qb(p-v{&do0lMr)#QcgLDNyXYvDNu{ zl4H_Wd#e>wZrvMR_;f4{d^fGzc?he)fF2n z6D`FXX19{Lc+`LBqp3TxT*i9(lFmR$JnMgdq)He+;mWDAPheVGc1d`8 z=&JC>56Y~{1nI}=)nfF_+%P|N6oJ3<;Z!4el6R6}tuyyJp?%s2r#5o)2+B`jiW9Tk zt~yYI$=pwf$#GOK1gNDQS_zh)I&>j@%l{Nv%;gO|l#5t6TGVBpugrXfZb*(6K(*zC zzHCut1-+@Jb>e+}m^{q74f)E~^&)GS%x)zG$9n30hSRmn;P zFW}*}qf^MZKqT)<^(}}llck+aCF?8D4%+=)N|F8du`{jS@Gaaq{HssN-}ok?d_=vN z{ixsUjGInKiO{}XPnN7lV|zX%Dg;%rHGSO_EDrG&XTHeK@Smn#GmD1#Bf83(U|Bk8 z?UokTK@zDqVb~eqZ#iU*|5{>?^pW@Sv*fSlTy$7S;{+lp`jiFvLQOHBkxbR^z^iL2 zVj%Qjn}l%smLx!9h4)?LHE9fa#IxQXog;XP!-Ba2C#bMps`7 z5&zO@LH%ShKmdgJiP384u-Y&+R^L$J-*}kWI>2B{7~RVP(?E-NcJXj9vVs-USUjL3 z7N&T&by{T@0TeKg4~J4e@Uune(+MyXlnZf&d%QNMScRE(G4*y?vc3Iy9OiW4`< z3m4~2EH%{B1egy_4U1lgi@=V$bC-uI>Zx}E^hcmj+=U)_mS2CbpA4PnKWN^HR1<|7vDl}$Bz z>+?EC84T^i=q5k4mzO?v@j~Os7$SlL&mCCVyEge~z41{%fb8rd*9?wW_!~9Y2D&N7 zhmZjRcHPxp(P=kwxTO}T>TCu_1QniuC(tpr zCfL_I=X_6(CKjcTzz1F&2LL_A88=e65Xu=2hi~huRY8mN#u;~n;MGwWPom=bQLhz4 z&nWnDQGM0d)?!D|Nj|5ws?1T-rm!N1h#KFXv~jVOVpC=JYregMAKT?mq9@9%l+?XX z{6gUrs~Xh?8DI9{S=33Y{WVk}T3k;m|4qeFkjEwLw~CDSH~yFl3+6*e|JPra z6j=x4JNMNN<}@2hb|pYmSorgO&0c_Jhs)(hq~gz3#ux6OrBi5C+5|bzZ(LowdKm;` zT)BPqvodq19qY;UXMhCNnqRIecpsL62|yuvohoq*EQ1Pm~N=sIT#L2rJ@^e*L_x<4eg9 zWc9xaIe(tx)w?r8N}kw{7A{Z;{fZ9U5mUKV)NA({yh;>8{k6y09v*(qADkMMAgpg_ zX9QXAg?d;0^QkCnBk#lIi^cw?0HhJ)btpx#6Mu1@kR^JwOfdukE2SgXi>_Mvpe`s7rcCN zGhni`c7;uo^Mf4iKY9{1o?}+{VUq~zI>C%;a;{a|2qyN+iE%#L|45l28p4mp{bQ3S z$nD#A9;4!Xkg}?ZYGr2X>E^|WWSkuFk6pI{I@57mH}0Y~Evv-su>Deyxj*^Wy`?nH z6x4X;dxca$S1f4T4de;5fH!M1Pr5jAm+h-D0a&@+(!UhK81GT%W{`28kq0jp9g<}@ z(od*S%>yXZ6MT2Es&RzAyYF0hn--AS_LdeCEC1`G{BnqR&!#FQ|wI*KiB zbdY&F7~_>SQXGi~eZdDKx@;#SI=Kg$6VJtt)hu=?N)ZrDk93p>i^s+dtKyhFIekWTPH{A4Bph*%G!vcn3>~wf%=mSGw`r81b zC#(jK1Yy&xj#fzDQJaIKhapV06f!5l30@coPCm9qpcO^a&S9?jsUVdIGkxyJh3A@> zV9`RU`wQqv4idi*vrn7G>SVIot(Rhqkp%VXjU~72&7yfS(Mf{aRTJjaKtoxr#xPMfkR`mv6Tc!Q>TgAJB9NzZ) z0d@gBJe5(R6sF~@NiZ#egD^j^&08i+*jRD;YcWhen`<{#N`=*~w20XCWe5IBl{#GfsBXm z(-$GVD(z<}kGi0e+gRd?T57iEDtXUu^5n1YfoL)Fr^zbIBKX;o6Po?ixkyNb@`#+z znv+8-AOko1-tdnCIe+7te~@)va9a-=>l$QyKV(MQiz6_WXx6zkD+D94izmRXNQ12Z zWSb}#C|i>c)>1)oAf~Fn3G%8g|2Z8RN&%wW$UBe8zP|SLbfI#uqlZ@-UaB%3DV-&+ zR|5q6SJ+~yU{OH-r&a<`2{3J=MaGvBdzBu}Vq0>O)frbpFs@5W`%VR}!|2L}TBTs~ zI-39WBDksgbtSA^s6=xeSG@7WaqN#e7Vz#aDvJ0{hJSqi;FFg^BogGnXpod8uwN6KD`QQQR&*spKzhJ$LyqL_I)Ojh9R*THgJ1$m9Q@ zp2pOCAIKAJ`bM#*^+CtD@n?8}JoA0Ne6KrMpNd>Mal|ahyEk@B;vJ`4$8uus=wnJ{ z))2ni|3--5)k{k6QkB@N&SC5ps-B6OTEb?igvi(5m6x9SbCl?2m9Bf2U`r28(ESU3 zD@dE8Q6*fruJ`BNW*{;41YJ6(6x?2)v*6ukkn^SO8wFXD*$XOe?4)v;c;onhxzII@ zo)c(|t<}`R#G}s%iP?@L0F+%$kKTEX72O3>jQ&DM>>R*VLe;Zau%Zt%{T*x`s{@4S z0`ykY-T+gKd(#{6=!xyn6}~m=PrqAKNT!Ij%QjpI8vy3B?&KSi-^9)WpX}vHm&4R>~RO!>Q|kw zti2Rl?tX85E?qOCk%cwjYamxNLjA%#3|9NNYwi-TnOMleY~cEqV2$ShQ-@lip>ZJQ zA-DjRS&ooM+}LDWxEVY!p0!^rR&PC(Ld1<=Sct%ewAW9k*u>E+rGLe_>me`kE1mO) zn?yht1zH=JqL5xA#h$BVTc#PbEK$7GXr2rv(sT50EKZ=gOYe^3!c1Tz z>}iV#R-eQ^qGs>ppDNz*M~v^`yN65MkSCeuOjWvT!ERa{1Yn^@=}W_uBFzxlw?76T z{r$1ay_ZsP^1Uq+uhBRY?B~~JJmV|Ap5(TkL4|O1JS&1!r`QQDAr99=1{BfM~ z5L;MniSCy2Q{$6t63O~yXkQU?NxtxZy36-AxrtjEZl8tpsQh^k*S#4_#tD$BZ`7G` zfnU<%CzZ5V-?QCX58Mty>Ga%h2f;-VIku=MqmXBF?_nT7=_N=>*U!&+7_)HfH3+Y7 zu|IL?d0Re~nxoHjX*t{xSLVSL6aK5(edjqDM?lUPzt!gR&p)XfeQ9tHz0dOQKwf6a zlD(=1;25EIUhMt?GmN2}6H0^5s^h~0i!_Tm{X+a3vV@8RSTlCXv6+oD2INe094o_1Emt8+xw_&6h|94OnvcZPuqgvbV z@Bm7;?%Th)8F`zkeP^~6mJGAMQuLZ9pM7PHryq^83WYgO?+%y9RgOP+Ld>AhG# zQw(ut>F8wTa%M*C?IQv60dkQtguKlFoMJx#^`8piB zl(p5GLK&}ZbUMD3DycwJKR)$I1?!&ReOEv_V667WGdVV+&);-)&?kPuCezQ|{BzXj zX|MJ0UB-xC4pm@YvkMQnQMq{JnKg30QkYM^v-TlbvKqAnT|AYCRWe@g_FfExs)4H- zR3VCM-IVM{<;J7Ozl&Hher4?~rvJ8buc7l!kcnI_aUA&Z;DZD07$Fuhe+lRwO+BEt z$c_OXF}~00p1n)Lihk-#H$UkK!HixL8;~5P$pa{WuVhSsID7J(nfC*uml136?5*3^- z;GOGrgWXLrUW|v@5d8|Fix%iCYz^MRQZMOvA_?KRlkjoxYRv9aeQ**JBf#uG*j%&# z3S{kJ#UcX`BVn;IHnv}3sxiQNx}ZH1uq~yAflxEC2N0Wa11yVi0N4bHp_tAUhtV-X zuzITHQR4s!k1Jtl1L8{vE?9>` zl^7{>zz1@;B$V(GFd%y_p~DMd##kZZeT&sP0N{NJ81@W+W6&u}fH@AhilA%P83u2- z(kpI;1pbV<2CL(Nm3`b06#Wr~!$Ke;(Iu9-J-T4^Y=$Nc2LcYzuENf$>vbLzqUgHU zuUBOu(;l8%K$6fXZl)2|u%K;hBZDRFYX}Q(wL$n9im*{Z*{g@lK;YU_C(Emfp zFOPdiO{JOI(cNSJVCM73PHYGjY=h(Hm+7OE@<>g8uG*F4=*M}3yrF-R^Rw@cpsl?E zySb;0Rf+=9_R=5IWHfaW+PlR3rhp$^G-|Ur5t^`AaZNV}J9G9e+nnkzO1|~NCdpQY zv92|29C;E>YuzqZO;KiG%9R^u9%2s=_HE@dS*EM(PrIpuj?N*WpR7BClP~;Yteu2i zM;ej0beSMgGLu$KQ~RN$o1-0M{D2Yb#vh zRk|)LX+sS~SNdd`FC|W|`BUMwAD->nq7~Z46WKBxagKlNFsA}Xkqlgu>7pJwu{M; zyWzu{OS$nsC2!MT3p{}~twpBMmb%DzuWJkZrqDR6QFV-Bx14vP`NtI8UBJ_jt)Z1l zY|88OLl3C1*n953fx}lgN6c}a77zVTnBaSx65BMu`}Ot?d`apdb~*X!F7qSiX$C#~ zTFpy~AyTb+>_5mL*sT+))AIyLiMMyhmovsiFY{BcCLEqGx$aEm<{<+sRb8^oZ}EFx zWz*olfLya~r!3tw@ZywtG*dKs&OhduLXgc^`nUUIab%kTL?^Mtai4jQW}kqk|K@hP zOU_$Ru-1Nj4M1_*0vhBB;iSr>pCba`rdpytB&vi*RVT-G(KrgUXPmW=QR z+!B|Z`N*k}czi+b;;8x9Z1jcM&%{AJb1g!?a9Yh*-1OZs@ z#DGIQn==-Qm)Ip67Y8V|p*PgD6b|)%I%f>ql-N0DaKvd|+-QZ_Z@*{U39dWtDlm!; zbX?G}%!>zHxutG7^*W#;;$LYys1SLz98Y4aDRebb>c#bmyAJpiuG~H6>R?*yT827~ zh8^>ZJ{rg7*am5m2SUWT7K0&Fv$~gQo@M|8Lp`ANL%35qSdAt2Km?cu`#df_L^yGP z6-&^x)AtBtnKq%#nI%^LF&Gz9kOeG|u1dNxtK25REjp6NJ?EFAM;v8X1N#I&7 zC2XITZmZE4u4zFSSPEMmZk`ke5sATOd@m*gTlzZ>JP2=`-avAXjU2o6k`#~tzTN17 zS$Defgn6DB&+I3b8tyw?u$79Y4zvW8T=djO+RYiO!n{hKUNz86&(N^f#t=D%L|3dh z`%r9qtexeo<`Y7$+pYrbLOW8O6}v^A;fTy!WlvLgf+eo;SXY=`-_B_+{5+YK3?sJ(; zF!{VF=p2o671d?-{VL2T8NcJ|)!T4@$q}n{s*LJ8b@8jo5*kwa!*+v$m#E+JB^3M~ zjvl@~pu$2ErOU(t;2ln{$~h?IQ|=%ymyz|5Sl`iFnkP6|Qs9dx=am1E;;bLA!JOt7 z54oU+7njM)9Hm%5L{@Tsi50cXIlWpbTz=zAS3(IiB8`ooDt2Jsrn2PtLATgbedlzb zYg0UrG*5s^z^zm=6@qYn5j*D~aEhvmb3$aimFIIM@oD8ApZ~LZNS5N0t8AvyOxeid z)XMf9!X=b**C52A6uo8BHy}{5bLLb(T?dzb9@eN)@>bm`V_aP&CeEQ3dEh<}@-GNx zg6#e#+W+!rf06j~+?#)=jD@q#ungP;E7__e8z9SQQCiq1g~;#iA-8v{ z%6|@%jE59M_bk0rGBjG~OWW5sWP+5IMK%}qQ}yrdtJYWKWnGWYX%8Xmk0Qcvz3DvJ z2KS2gDKzt!p-4*-nW(J)JvZ(xC|rM>5?E#1`Xbq9e5t^Vj*KjN1b)*M6T&Z^f$wrd z_Ybx*BVHr%p8@Yfh}`_UQ#FF{CWq$Hbggq(2yId^R0%F4Mqn6V zYD7BsI5mlBeoqRHv4x?~0)rxWlTGhsnkEODKG8M0nhtx^#9&)-T5E5(NgvFy4OSPh zG*t)%FTp&sgK*yXBM>i`;FcZGTjC5WMm$~g5lH3Qpuup8QzW8(24L1J7%|N~S~^D+ zWQmKDc;`A;t<|BN_aRtS*%*WrqRqzAjrL{iyZM=C@6-G>WJy1&j8MC(GUlJ2-8yR?oU1FC z^SPba_>SSri@yn<#X9-hSrr+qLr1$$&Myf=%6a3IqNuKu@g?DKQm7x5S5)FHDb1=L zvP6t})P#iz3VZ0v4?8wuj`qibZr7=@FroW;Pw@Ncax5;&7yNTTvvdWSJ05BHeNGI5 z?hUfhX=I5nax-xaPl}zmD9c?;#w85$Tmf|^26k-OdPUaH;$ zG5?!s&BvAs>`RPfTq*i)H2&|xtffAyK7Cs~0_TfP5H@t};3KP?_AI27_#mO-_f^8n z)QGPX4>CDXEj$D5f^tBcaVf0LuR?dGnG;ziD60lY4(VUbCS`MXsNZ9Rae?(-)IqqFo0Ihz-ran~grZx%#>&RRwI_hNf z54qs>pGAzkK|bg+(fT9S^AbRCGqOwoN7Y{cm^J&DHZ3qeL6RdIC?;ePc^&15F)@SbyCz zNresL>}!juxE^%th?!Ng?UUxaufz?5Vch5T3m<7#vVLOmU7C6|QnE-hRhos*#y$3< zS+ie#ta0W#5K^3H97`bUzv5K~&ou!1Viqmj6~9bB(xL-09)jx+u{__2^C1`wmXPR| z00`@AU9&p~?C3^9kect3GYZ7x9R2^1@dh9lk76)-H3@AZERTR}gWwhnP9FdoKiMfnKGn#4!|F_la^`?jUbX31Ein02>|d;0!ga}KrD-PQf#TG>s|8pT-#D2}*PhIR~W<}@!X?YDr!{F!C88GsU@H-um&5v@m164LU=F8W$|A0@gy)wO*24(;6K^Ef}c|3Dt6Ipcj+; zfv;%8hcP*8j8sdQ7M7_%Z~%$%QfZ&6D?;@xuVr%$7tB{BFb zBW66LanjMgu;Zojtmv_}PwR3-7ed$BaBQVKyJY#=xz6z8UH9eNJ0(_7`bvJ08uvO8 zch&B9o=|4=Egqi&zc7~~=70iQSoJh+`=C9JAh`ElmU3m&#x^jdb4M>&!vCkh&PWc1 zQWt^$=kb;!@?HE_i7)CJAdNQ?9GopzfCj$)GWZ-~6OiBXgx^YGIkgw@f;j>`)~e`I zV4d$LPkk~U(5~eRZ}sO35c3UH=>VL^Z-!Ef0&@rvNx_lpAo|fV`I$l(x6Aj`^8`Sk zLpK)|tI~fa#qax)1}}bR?hFO0%dB{tpg|^L#}4D4O2OrXF>I_E{`r<#8pseU%St41o6!jmyq5|8wPcrR^%QC24 ztyO0jAkIITb+_ag-1A@5HC1_8$n=TBFMI_q!E{!|U6tTK{o%J2_Wqh^6*AZMs9bQ; zf7G&8nkf}2SbK)Li(f5lIrp_>7~)%YTCLdrKEOkMoC-lk0;e3NTyX#0nO6%u2^BSZ zB#9_m{oc)kOx4>XTdu#nAmfF2oz8{y=s>ii;^GyBh~3f}l{5lAj9-dJmI7=>*YQ7v zRDC6SbwR`pDYg`Mc!$OvX08~AhxKx-r^owF*-xmTj(5+D5-5_V{Sg2kRW53_%;=B_ zLN*>m7TAeLy_hY)^4aR&8Q?Zq@@R?Owv`x4 zxY~cLOF9C7B*zP{*N_|udfZO7)<@zCT}Yx^3&~nzWSd;TQOnZ+Ym)Y7!D^EA1uS<) zVWZq~ihwv+=WO;L|hadAeE+ZzTp2QF}b0+81up#dK)3a)B^ka5Y5samL(FppPK|5hP6!s5bmII9f?~8 zMJV?sxT;fZbFe|b!rZZd`b@wC6#M3dupzR;4}h*bx6=UTVHS5V{E5X`wOR@RHx&#| zj|G?oBzE*~NpP$~4+uf+6;<2LNu=uDQFk+H1%k5$5BrS*YNsCpr?B-&D=;EizI z`3ywYo#=na%DX(7SA}%_)LN(@J(j97O5U!uJEW+ma>osgfhe%Th~*EZt?Q4Pgzqcc2f-jMXyU z$C>%r2}Ix#)(o870|{3}DgJ-jVLj-Br0=y-UfGD><30qGHyK5xaJg3mELq`cxToiKa){)zEGKQ%;WMW zC7Iif81}68&lk;@)<6BppnH`MZ(*^N|7f&R03Vd6=<#V6Fdm%@ zt&{Vj_TDDWC`mx%JYS1EGjU|b#uH>%-0$BIv|BD{f5{~eAxoOjGy>mIE*urH8}U~| zby?S`^ihg_wXCuQ`oL55DqGeAksD%BoNU-mVQWf6OHx-5UAuL0C25UZdIQ(=P10d(8! zZveuOj6@((V6F=h5gLK2bfX52Fjhgb)tkTrHIUP6wYNZ_)6@e;@sn%z5fTh+4h-!G zpb9zQ`AD$22kvcRhY>WY@laizYI?!1l%`3>Gt7YlY%K#C61(hAplH`eg~kX6tPGPk z1#LbC%qF`gFD+ZmqT-Jr!D_9yzJncOg~TwsiRXO5pHa@>II(mybk%TuoD@)=Nd-{b zC^q^V8a6u8jDQvFCn&qEp)spK2Lle+0hX?zzMi;cI3zY!Do&hi8+3I|tW65>ytL|z zB8zq_jdAh4KW7nIXTD^VXF0q|XG%AK)Y7{yrB^0!{dqpzfd;TN^Y4In1=#8D(kWe3 zZY27EFB+CF?AbCWZB*l68-71(lU(e5;Ku4O@F_&XHZO`T%*y)yE2_m)A7x)%ey=cN z)vWzafD#yyC3%1MNwe0>!exJ?;yCCEA{M0*te$cFsrPfx+%LYD*`F_N?KWMa4W{GC zW_0<;vC7W+k@8f4j=Pg|Ej;NWeDe)^F-_fwDyvQjWI|s2(~o7X;x=htwFkGJ zfMh*fkz4WrT{lchQwqMm&WyjB0M*a$Y*w8-!}gHEO+Dywwy-(#e{yWj0$Rul8i$4) zPRU&;%aq4g&h;ZV`5Zuqc5ZUviJTj$GQHS-Sew=<(I$iJrhm_A!PrQL!TeMvig_8f zlmv8bbbVoBc)noun}+3o=m1~Qof4MFcuP(#yRmRFbe>)2A65nL=lT&B50E7SB-FhA zltNtFzjG4wDgJ0%j8&)1SVe!lFHQwFnTowg-NAEkn)k+GFu}}q{bqv{+wr|6B#&n5 zgrb$Ym0$GaWI+k|DXvBjm@PC+L63Ava+nE2)^AblXO(ct)5|~a!uHVc?dP4`ENY+) zarP|uluuqcx-~Cj;*^;b2eRH5d7jc(Aj@J+-2QIdV4*3{wBr;4W@0A-GqM~x^Sie~ zDq3yVl3FzAu+ezv>g7Cs=eu4LI1-#h4*%BumI)@rHw;-jSkZbkXU6RiZkg}@=^0r+ z&EeOEp0D}auX}6?m^P<82}R1Wf%Lqsl2wao6siRLN6y#u6=rRB-#>00&6I;$`mglK zg{hIY*S<`}qKRL+$^Ya|pJV0HO04)XV}e-WmRJI`CpZm6@0MI4;afZhb?@3mI%{Zj zxiK8u%2w+jeP$fKXHe?tgquYN)rEd^yM|=1H^C4y)+>ABaMNi|JqRsv?m)!Z55iSz zG{{%O)qCjJTZ$WZv^%a2kedZ8;1p9FbDsKwW$_cpn|Ig$299mExUFte+j*F!2n5K6 zIW|DCZTSt>Hzb>;0XUfxWk$nTQ#M0%00;6iUkgi{4Fnt~{Xz!zAwnB9+-8jMl+G!b z#WDI2JP;gM$}>2}+1mdg&?~y!!m(A; zT0sC3Vg-E|5u_;^e*(jVvat|$Gz~UcO_RVzBYUWEl&I4e$BI_v04N3_e8FtfQMV?d zgkc^u!2dI8zHTnHE+m4(GI@kyXS=)%25UIyI{2T0OPlq9zo{IWLSMV}av|$6wtB`E ztQ_?p|G(-yQQ|XS+P_b*J1CXWu#hMJ^71_O)o%Fz&G&z%G0JpS#Mx0ZO75WopPphV zj}jE$Jj%l#n}9|fr$@;7v={exyxSxqCKlkX+T>$Xkm8kzG|pHg|Llh@2%6ZS{QDMJ zpMhTKEwW1a>m8TSkNzK1War&Wg}f7Uy=yceK}Ww8pQ%@7EplCa{yxuh;vw}eKT|S6 zzjI^j5r1&Koc&XrE){t!|I!M2ixjjYzp<{6Z+Urya|@EV(Ad|$)AMQQMS2Tr8JL9(0P6{h0N%dcMZ zg(_)4_86#HGXBVg8`HC?dMkR>&@Rf$I=dEoUf?2j+_v|-pQ)6P-$c$UrQ)umVSQ8U z6e3~ir>wdCP`+ZspF8ug3n>i|Tm9e^rt_)qW&FPU#o3iKF?Oxwtut;ZVe#jYtK4Bf zj^b@s46wqwQ;epR?(O&*ePc#7Eyf!Ykn>S?h29$mPvF z&b=z9aRf+pmFK^hYQ$*U-K~RB>i>_U>kfqS|Km4#9!}vZ4eO@So@YeERw@<8om47mmom~Ggm1gJ@q7FIm$>Ji@%g-;_jrwgPJ7(&o>ltvjIl(0WfE^+YAf&M+8z2uMt z>nB8a4*-{SS?zb69+8{K{hb006(KU7TTz#tRCG<{;W839N`HTv#F3UwT^M$iI!o~P z9NR?oo^TBPT|Aera70d?H4l|?78_0;+9aQX99{j|PsH*pD{-v@J5S`O>V7^)@{SN1 zTmmjM=+FM0N-3w}T6^lVr!ZkVy!hpS3|rQb7e%MyHX%>9xYHz@Dko|T0Gw|j&hEQC zB%BFPy7HG&ajB@=&YrhfdxK^_v2)4c>$@uZA^Bndy#C1jDqTGn@hVs!AY1_K)8%w~ zty1+Fz&fw-F4{%9L08S>Ms>CWIIz6>XTyYk#h{HlV}q;03nItz<@i7WKltw-Z6EyOo`-8^fYYCKce69Rk+cR#!mbjtK#n%)=&6M3?LV3sOm z+H-9O8fO@j+<00X&I2m}aa02c3#XhJEym>LIZ$|cs8M%q#_*u0|4FzBeokNA$!$IAu)(0&x z5bw~#FV(tnKMr&!AZAT{eQpexV5z=1as!I&qkR`W0`#i=u=;HCg*^>-LG&LVccbZ7cl8ZHRcsSk@~?6X+&=n(Moi7uYOrqk3 zkwMSZqmrb7*YO5%O@7)= zF=u;iUtlSu9q6&r5*sPkVAA7{rX4UITa{_CS%{63%{4EZfQ2B-65Ev`{*uN8&Tdqq z#@c&_iQp|^TcDlcw2`9Ht3E18lw4G~yHiM2ZA3=z(0xl5$IM&R3)C(bg!D#RkjWY| zY0R3XbcO(7x?OdYaHD8)BRri^f=Fk6J|kp})w9dEL1RjgqK_Wop!pp0=*AWrt_(f* zcCA>HWNR;dHgz#9o8&6Kw+J&AF_&JTs&Ghr{NcS)?jwbb9H0%&w)W@rpK+x{M|KBg zNWp7IpW`p(x2&7s8`Q|1REI0knRy zx_n?H4ER8^R{3IB*XyMn%SW8K%lq89&p}Oa#X!RqV|NXW>7{OWg8c{+h88}(0_hXxm!0FK38ba!| zmjPv?X1Ocox-!lvK6(26C0Jh{KdkdqoO9!ygOl-d9Pq^Qp~~C9HA0;jnz5=#Cx4Yv z`D!iD7!;qUU>U{)<_=ekIj$*v-h?JcfFPyI!9&MG`w7CD=FE`0woD0C5B~KKsGN;u z>N_zu0Ju;&JW(?nrc|l=N_R#El^JVJO>YH88bo3jFMn6m)P>8_y7Beub@d(^FOY2I z*L$hG+!UqVF5r^c{?n{99eJI?fZ^>LCVd030W!I zVk+OPqho#`{~rEL$R{5UUS`t_o3=`QO2wAEw{)Jnx|U1!L?-Jk6!9YV?A-CdNcmPO}#Hx}wGW^HZVQ2`AbE+W{HHYDL3DtIi59r5x! zC>R_sNeptTja*7qjYp{LQmb4pBloBGyAcHP!PZqJav)LC zi=eWwm~LguP!nQRi}(7-|Df%M8(X=uqO%)_Epsss^xvO|91+$7i>A6Ag5ST2$DttO z$T$!Pv&3d(SaWit2y+zgwKo`%Gu!w1*}4qw$Ik*1i;e{&dhw6Xa>Qe0K_M!-Vmvz!0$mmQ3KIv#>@hec9tA=ZKxR7NLkPr0aITs= zrZ5is0+H4qrffk@eq+x8YqB>+hjXAEU0a{{i=POY@U zz1CCa@XlGhm>25{*@~rV*W@gYQ|Q^-?Nq@8bT~X@qL}yQ-Lm6b6tK<~6v!S(`HM~M zBjNzfg$z7V=1MrX<{x1c(HVU7M%|>nB3__LL zhQ_(sQBrmh*If}s1KmHrj<{eE`>8&eE){^4PF>mW6G9%sUVof93yxIAKK@b037da! zVCOSPP712_)Qj1~(xo+wcpf;l4(WbGFNYfP&REfT_@%QEwqgJ=ru+VuJ<=! zU$W>+XG}d^EkFZi7x1$Z@h+?AEj0y3y;r#wOg16N{ESaIq+%NnuihfU7?z|zom6HW zvTT#p&MY?Apxx`Gt2M}j*nre*(0A!TVfx=G(jB#Rk zVs|cQ{j56Af$t+c^e>GIXyTNnyYatf(iLjtV$76eA@9*pVk305PoZSjzFH|~>cu@j zKVPR3wM}9HC4sm#_fpLE0SHeQ&-PHnyj_W;Miguokl*b!m6@E1tCLeD5ZTVV^{_>} zodz}kUc(sPwOVYEMtD)Bx5GajvoPQf@!x{Nqj!4b!?^`~ztChqQ2sb{=@GtdBcE&& zYiEIrA->9au>4jh=7N5{qpcNVYmwfmZY$slLVH5jNLVL2F89Tb2p&}ojf)oY7JS=# zlBI@W+(0$5Ny_@UymoUFJwWK;TW%p>5)Q|bLO)S)`lxHu*PlGk>mi9mY9O^cfla4kc4_- z7G{E#4QB#f1D1mphB?ago#MY|sL_MZ8Ek~Qr^Z?^(k5+0Jrwoh0z(HpbR%;kW1=d+ zQ!}}K93I1)8#k?jc@ge9&jL?yV}yn08WV7h+=Ir}OuQFEJr*Ao=*G1mxL_nGz61lq zx+!WV0E`LHX7`dN6fP24(AS*R*CNPDd)^s>J^ZM3_TwriV&>)qW~!rtIW~~rX#al}=~T7AN&Q!2 zSnt7$7*u+4o#4coU+^#xANF8~9o4rK8b`%!9Tk{S&gwu{?s#K&EJ_ogGuKNe1KoZS zR_v^xOk~U%ld8p2R=98%K~34>=D!o#xCA z7p&5Sy9<3q9~yMzZnkl4d}NPMF zZ~>@i<&xV{44Ww2yKUrM>vp0)DU+MAo3oTiRfVDK-`}=Ku%@ zgt!z3y7~_iuRO06a$jzF;Ju&9{EM#l+o}=r3+A5UDn=YFtX^o_fK4!kA2)Ft)`EDl z3w?PalhPwgZ%~;t(U8zzPsHpSD_4&9nF?(hmUnWuh#$J^Qa|w28}RLeN29{q2wB+x zYq7&@4Zf)Voy$&Phdn=?i4{cBlR{V9GS~#WJB1g3r`mwN*L=Uo7Q2R_>*^|jz;*A< z&k_k|mEgW^S|VgXFJA7ViU`NDlRw;B?%n`ic!=U2T9TC_o_}})Otr5gYja%^4yoft3A|vn?RTYge?lu&HtLK015nLKbw%1#$@-V5}mBQA!BN<=Z#cE8#f{s&f z3zfM62~R(?UBV{O>(1Yn`yna)ud=1=lV4)auO4AC98Ja&Wqg;DdQrI;gxG|S(+oM% z)2m|K!Bo8v_1r3%EaROwyV<>3#&_5mrLe$#Caf=i;1W%T{-5jn`a{x`MK2OIu)ac5 zx?t2Iiil%@QnF#@$V5JA)|ZM|?=AP4Uj~-vG)cuX5v%N`N5MK8vlOlUTZv^RPnc{j z56*@z)%u#sAKARc(I1Vz(ivyb#=iU^A$P}ULl>7N{IR0t=SJMx&xBiT2Ug%4)J?;P z%i@%d+gst148lHgPFZc*d?tOW09rsB@D7uVoWKv$wP9MXn|fEn?tRXUe+TN_xMPMq zc#Yadx5kN$&;m(at8--h?dmi~RjWa=^oepu9f z$ADTU4hI+)r6DfO#u+>7-e9M-YGNVo4Q!n5@`zL^Dd>-Ga2&pq zANKT%9B|jz)LW(M>^(IFI9IicizaB$jLCNZv3GJ{MW1?`C$AC=w~TNVR)Sql{0b-@ zCu%+*&VHMfUYdYbuI_cXZbb50ZBLRWQh%J7<3q=eBE!czby=*}@|=82P{2d|Ba@y< zu^4^PcEv*wwm5dzDO!w$9JFnDLBlB!-LBCU(A-Nayc7mLDToih`mP9zxz4<`TYeFp z5#M(X2oURnzb`z9Jwnaj+Na4_y?<;HJ{$%NMR`8*SIl{9w0rGKngE9g*Sa2+Bo}XO zqSn(DU8vQ&gfaT3hlS=i=9f7}Y=Le1m3q0g4-d`*C(EslmAKcToUzl)^rkaNu4A2dQT+0%%o2?Jr zo1gXWaWan5Vro3A1+zl!wik`b=2V+Kj#h2v;)~p{gCZ;{n4$_)V2s{GD8{6Q#`4@GKBgw-``+&o9aU(-5 z=6W+zl8gTk&c@gnpQ3XM*b5~Mp!<9PAlIjJZCIg|w>mfQd*v>GFTORTb60rV`>i2p zTt-L*&n9#IO`X-|_Sh`NwaIFNqHkPU{qS(Ow~LkltzyF_ADpv-KOP z4Pi4t+)I^AjzXVW*;EW30nh6tBceIIvgP5C(U#Zen zw^#?^7u)95xE|=N3J`7Hh%X-iLop(A*BIs;=SKdJ(kj)T3H4cvF)=Wt%9&9xNwa9! z!@m@crhb?g64+(YrSGYW6a%{ik1Ny*2#~U!y)56$>9FoRRd)Z$xWw-B>%P*`S8Ln1 zSTJW2CWkfDflib^(p#iECgU91MtYx5XLO+d0+c%?tT!ncp`Uh|;w+Knzd{Q{yaus# zX)+ae9L=A1q)5Wqw#pR0=rLIMJ;9!Fg&fa^PlsQbV3p{Ve`=jHG45teh3GJBk3X~j z{gx(JWyh9HerBih*CczH2*!cP&#BI!5xT@JzWQ1YZ}ZQDzQ0hvpf4LD-(_*~uW2{O zX7KStzb=`m%m~P(98x`aoFKhFu)$n*VDtUBZphgtMBlImV#3)(1B51MMs|3qzvQO8 ze0CzDWu&L$uVExeS-~$W4Q3vNHC=sTpgf(E_rZ3T9tJ(??dLWqC0xIkH8a-UfVZ|; z*1px2pCm6pPWONM%M}}k?%H7oustN;k8O*LQ#sSe!-CFmL?RP( zzhp^c>0RMsx;g}5cE4B#kZQ%Q@>F_2#*Om?6L2qH(@}|s2C5P*A8r?Aa$Pwq9ul@- zWPI%7Q@<(k_+QI5)YCD0M0fY=Gchass%atQf}7Fmx`7R1RvgWAMg3vW^my$xI4op; z7SFI814PcNbF8n6SoR@ylYNWfJ<%6C{f{u|gxKi7>=EC-QERro&ftdLFj1|fE54Af zyvY781$ZM)<)ACLe1+?-(RsP?j{pMKT~Y0>9y_+_325k~ylQ}WK?=NpcWUU+%HKIR zZWtPNS8!~vg#w=T=dgQ2L6sNdfIB0?3TI+W78JVrCk)o-H{$Yr}We^blL_NV<0~0aF~zjKBoVLc(;7wM?!9c@mP4?GR|3E(CW7bjVAa zC*ejcyB)gAhOa!8GRkD?HA2Co-C>}A*^VTK^hJsHnmOOQK8?oIptaX?Ugct2S}*NR zKP!KRLpev6WN|a8H>M08)DihaJsUfLj2Dx6`tN)`?B#vh)}s=R^Q?893@Y;lI@n<2 z$&orZWWLX+gd}@|vvZ9YTN?GJZzfg6LayBz0yDp_YuwZDG$2Ld2=0@lJoURPd)xHo z^~kv*9A9ENjvQn|vE#E=cK?Bj5l>w%ss!0oBw%>wpfvgMv{m2F${Wxjx7`P1$~;zu=3jzPHzju(*E}A5=+p8unql;10-=u3Nd7{F16_ zLiZ1}9+L9T$0i)?vh&kZIxH&AUn@XLNZjYwEVY8IoD!)7=9Z{P$ ztLz%iVO2!Zd0`i^83wNgtBNz`8xtp)j{Z**?t&xy`gPQsw;bI+x_Sd4pX^Txtt1c} z8r1gf?y&z?zsfuP*WQ>1}@Kt#u;KUjUOz1li!mT{~$;Kpi1>(lVrFr;)+VT}Y%)ry13{7Po z1;Ne0&`EH<9$Gxk*o})oq#PAUdE(VT5%@MjE7-G9*XplS< zsH+xdYU8OLjmLR3;L<$RI5_w|H;ujx^t8xwfn*ak zGGzltMk(25I5O-(R^_lFr$&gj)ChUtVy--4cH#Bkb2kT@@&@GdvphCf5fiCQ}LyiHoc%asEcOawgqN^@H$ zkZ?xdBbKAZJkJxO{1X%q

  • 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≫#Z%ToUbUvXST3OAigm?y2MwqzYbH9h? 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