From 1ce13bddddb631354ed6b8fef939c912e53e2337 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 28 May 2018 22:33:22 +0200 Subject: [PATCH 001/267] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e1705802f..74a83d1a7 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ # Benny-Edition-CTI-0.97-Zerty-Modification -##Monetization +## Monetization This mission (or code that I own inside) __cannot__ be used in a monetization process as defined by BiS at http://www.bistudio.com/monetization & http://www.bistudio.com/monetization/faq -##Licence +## Licence Creative Commons License
BECTI Zerty Edit. by Zerty is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Based on a work at http://forums.bistudio.com/showthread.php?166433-SP-MP-BeCTI. This project is not affiliated or authorized by Bohemia Interactive a.s. Bohemia Interactive, ARMA, DAYZ and all associated logos and designs are trademarks or registered trademarks of Bohemia Interactive a.s. -##Credits: +## Credits: - *Benny* for the mission - *Bl1p, Fluit* for random AI skill - *=ATM=Pokertour* for ATM airdrop From 5fa4cedcbed1a5ffdb371147b44be7700983f8de Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Thu, 30 Aug 2018 21:52:21 +0200 Subject: [PATCH 002/267] Malden switch --- mission.sqm | 4546 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 2805 insertions(+), 1741 deletions(-) diff --git a/mission.sqm b/mission.sqm index 29c3eb96b..9d9fc62f2 100644 --- a/mission.sqm +++ b/mission.sqm @@ -5,10 +5,10 @@ class EditorData angleGridStep=0.2617994; scaleGridStep=1; autoGroupingDist=10; - toggles=1025; + toggles=1; class ItemIDProvider { - nextID=178; + nextID=180; }; class MarkerIDProvider { @@ -16,10 +16,10 @@ class EditorData }; class Camera { - pos[]={14608.123,155.19696,5895.5967}; - dir[]={-0.80275387,-0.42684528,0.41648361}; - up[]={-0.37890467,0.90431285,0.19658338}; - aside[]={0.46054059,-1.7105776e-008,0.887676}; + pos[]={2752.4963,392.94116,2267.8635}; + dir[]={0.64523667,-0.56169516,0.51804209}; + up[]={0.43804976,0.82728094,0.35169992}; + aside[]={0.62612563,1.1271914e-007,-0.77985692}; }; }; binarizationWanted=0; @@ -29,13 +29,14 @@ addons[]= "A3_Structures_F_Mil_Flags", "A3_Modules_F", "A3_Characters_F", - "A3_Modules_F_Curator_Curator" + "A3_Modules_F_Curator_Curator", + "A3_Boat_F_Jets_Carrier_01" }; class AddonsMetaData { class List { - items=5; + items=6; class Item0 { className="A3_Ui_F"; @@ -71,12 +72,19 @@ class AddonsMetaData author="Bohemia Interactive"; url="https://www.arma3.com"; }; + class Item5 + { + className="A3_Boat_F_Jets"; + name="Arma 3 Jets - Boats and Submersibles"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; }; }; -randomSeed=2773227; +randomSeed=3001308; class ScenarioData { - author="Yoshi_E"; + author="Tom"; }; class Intro { @@ -105,7 +113,7 @@ class Mission { class Intel { - briefingName="BECTI BE 0.97 - Zerty 1.3.4.4"; + briefingName="BECTI BE 0.97 - Zerty 1.3.4.5"; overviewText="By Benny - Adapted from OFP era MFCTI (Mike Melvin)"; resistanceWest=0; timeOfChanges=24720; @@ -123,11 +131,11 @@ class Mission }; class Entities { - items=124; + items=56; class Item0 { dataType="Marker"; - position[]={14491.973,9.0812836,5886.626}; + position[]={11288.212,14.554405,4659.4922}; name="CTI_EastRespawn"; type="Empty"; colorName="ColorRed"; @@ -138,18 +146,19 @@ class Mission class Item1 { dataType="Marker"; - position[]={2323.0264,13.272663,9262.7939}; + position[]={10867.6,14.611816,3849.8416}; name="CTI_WestRespawn"; type="Empty"; colorName="ColorRed"; fillName="Border"; drawBorder=1; id=1; + atlOffset=-2.5643883; }; class Item2 { dataType="Marker"; - position[]={16708.023,13.68144,13597.649}; + position[]={9931.5684,2.0193732,5942.4219}; name="Prison"; type="Empty"; colorName="ColorPink"; @@ -158,1554 +167,535 @@ class Mission class Item3 { dataType="Marker"; - position[]={15861.336,14.276582,16812.896}; + position[]={6113.103,0,6452.269}; name="CENTER_POS"; markerType="ELLIPSE"; type="Empty"; - a=15000; - b=15000; + a=8000; + b=8000; id=3; + atlOffset=-355.95911; }; class Item4 { dataType="Marker"; - position[]={5610.021,309.28171,21723.725}; + position[]={8048.7817,232.85887,10447.706}; name="HELO_START_0"; type="Empty"; colorName="ColorGreen"; id=4; + atlOffset=202.47562; }; class Item5 { dataType="Marker"; - position[]={4639.3633,200.80589,22353.711}; + position[]={5666.728,366.88507,6911.4629}; name="HELO_START_1"; type="Empty"; colorName="ColorGreen"; id=5; + atlOffset=30.71524; }; class Item6 { dataType="Marker"; - position[]={4653.5127,226.72784,18192.236}; - name="HELO_START"; - type="Empty"; - colorName="ColorGreen"; - id=6; - }; - class Item7 - { - dataType="Marker"; - position[]={4651.3667,226.31035,18209.645}; + position[]={5074.2397,57.330524,2595.5024}; name="HELO_START_2"; type="Empty"; colorName="ColorGreen"; id=7; }; - class Item8 + class Item7 { dataType="Marker"; - position[]={7621.6284,208.08614,13325.232}; + position[]={6310.3545,79.747299,3741.1113}; name="HELO_START_3"; type="Empty"; colorName="ColorGreen"; id=8; }; - class Item9 + class Item8 { dataType="Marker"; - position[]={10515.029,84.02951,14144.914}; + position[]={6880.8032,92.093384,7267.0029}; name="HELO_START_4"; type="Empty"; colorName="ColorGreen"; id=9; }; - class Item10 + class Item9 { dataType="Marker"; - position[]={8501.5254,42.18084,22591.121}; + position[]={3644.0125,171.00302,8755.6426}; name="HELO_START_5"; type="Empty"; colorName="ColorGreen"; id=10; + atlOffset=39.339203; }; - class Item11 + class Item10 { dataType="Marker"; - position[]={8281.4951,67.853317,19906.736}; + position[]={7227.0454,66.153236,6112.1108}; name="HELO_START_6"; type="Empty"; colorName="ColorGreen"; id=11; }; - class Item12 + class Item11 { dataType="Marker"; - position[]={11651.426,27.650551,22131.984}; + position[]={3122.9133,355.63477,6521.2852}; name="HELO_START_7"; type="Empty"; colorName="ColorGreen"; id=12; + atlOffset=122.17253; }; - class Item13 + class Item12 { dataType="Marker"; - position[]={3745.71,21.729914,10576.94}; + position[]={4057.4487,34.650162,3270.5313}; name="HELO_START_8"; type="Empty"; colorName="ColorGreen"; id=13; }; - class Item14 + class Item13 { dataType="Marker"; - position[]={5824.6914,21.924395,10721.572}; + position[]={7270.1929,166.74646,8210.4082}; name="HELO_START_9"; type="Empty"; colorName="ColorGreen"; id=14; }; - class Item15 + class Item14 { dataType="Marker"; - position[]={6316.9219,30.09,15471.258}; + position[]={6202.1963,121.75577,8853.623}; name="HELO_START_10"; type="Empty"; colorName="ColorGreen"; id=15; }; - class Item16 + class Item15 { dataType="Marker"; - position[]={9742.7783,107.65765,14512.511}; + position[]={8186.9155,21.156494,2971.0085}; name="HELO_START_11"; type="Empty"; colorName="ColorGreen"; id=16; - atlOffset=7.6293945e-006; + atlOffset=-1.0235062; }; - class Item17 + class Item16 { dataType="Marker"; - position[]={11516.446,53.074879,17410.16}; + position[]={5445.9541,64.598518,11224.89}; name="HELO_START_12"; type="Empty"; colorName="ColorGreen"; id=17; }; - class Item18 + class Item17 { dataType="Marker"; - position[]={13560.321,5.5936675,14878.066}; + position[]={696.65045,25.772217,12179.188}; name="HELO_START_13"; type="Empty"; colorName="ColorGreen"; id=18; + atlOffset=-3.1477833; }; - class Item19 + class Item18 { dataType="Marker"; - position[]={13922.415,13.724786,17478.414}; + position[]={6808.0088,107.74664,8867.6797}; name="HELO_START_14"; type="Empty"; colorName="ColorGreen"; id=19; + atlOffset=7.6293945e-006; }; - class Item20 + class Item19 { dataType="Marker"; - position[]={16620.469,12.391303,19819.42}; + position[]={5348.6553,160.02304,4129.0796}; name="HELO_START_15"; type="Empty"; colorName="ColorGreen"; id=20; + atlOffset=39.84304; }; - class Item21 + class Item20 { dataType="Marker"; - position[]={15752.398,26.8323,20257.74}; + position[]={3229.1746,272.54126,6759.9316}; name="HELO_START_16"; type="Empty"; colorName="ColorGreen"; id=21; + atlOffset=45.522095; }; - class Item22 + class Item21 { dataType="Marker"; - position[]={10057.669,13.515329,9724.3926}; - name="HELO_START_17"; + position[]={12044.02,38.268066,4128.9272}; + name="CTI_HELP"; type="Empty"; - colorName="ColorGreen"; - id=22; + colorName="ColorUNKNOWN"; + id=59; + atlOffset=27.431581; }; - class Item23 + class Item22 { dataType="Marker"; - position[]={18950.08,22.684326,6172.5068}; - name="HELO_START_18"; + position[]={10113.527,2.1769152,2213.2898}; + name="CTI_TUTORIAL"; type="Empty"; - colorName="ColorGreen"; - id=23; + id=60; + }; + class Item23 + { + dataType="Object"; + class PositionInfo + { + position[]={8141.9028,32.866806,10032.275}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, ""Airport"", resistance, 350] execVM ""Common\Init\Init_Location.sqf"""; + name="Town0"; + }; + id=61; + type="FlagPole_F"; + atlOffset=1.9073486e-006; }; class Item24 { - dataType="Marker"; - position[]={22839.02,59.218605,7644.248}; - name="HELO_START_19"; - type="Empty"; - colorName="ColorGreen"; - id=24; + dataType="Object"; + class PositionInfo + { + position[]={5526.2373,339.83679,6982.5664}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, ""Arudy"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; + name="Town1"; + }; + id=62; + type="FlagPole_F"; }; class Item25 { - dataType="Marker"; - position[]={19747.805,59.847923,8550.9883}; - name="HELO_START_20"; - type="Empty"; - colorName="ColorGreen"; - id=25; + dataType="Object"; + class PositionInfo + { + position[]={5337.7021,45.364891,2796.292}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, ""Cancon"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; + name="Town2"; + }; + id=63; + type="FlagPole_F"; + atlOffset=-3.8146973e-006; }; class Item26 { - dataType="Marker"; - position[]={19319.139,117.28299,11713.374}; - name="HELO_START_21"; - type="Empty"; - colorName="ColorGreen"; - id=26; + dataType="Object"; + class PositionInfo + { + position[]={5905.499,58.962273,3578.531}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, ""Chapoi"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; + name="Town3"; + }; + id=64; + type="FlagPole_F"; + atlOffset=-3.8146973e-006; }; class Item27 { - dataType="Marker"; - position[]={13606.947,18.530624,13178.719}; - name="HELO_START_22"; - type="Empty"; - colorName="ColorGreen"; - id=27; + dataType="Object"; + class PositionInfo + { + position[]={7125.938,75.791107,6122.4321}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, ""Houdan"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town6"; + }; + id=65; + type="FlagPole_F"; }; class Item28 { - dataType="Marker"; - position[]={3647.2109,274.09607,20110.045}; - name="HELO_START_23"; - type="Empty"; - colorName="ColorGreen"; - id=28; + dataType="Object"; + class PositionInfo + { + position[]={7062.2842,83.649132,7100.2358}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, ""Dourdan"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; + name="Town4"; + }; + id=66; + type="FlagPole_F"; }; class Item29 { - dataType="Marker"; - position[]={13592.26,35.56068,20475.77}; - name="HELO_START_24"; - type="Empty"; - colorName="ColorGreen"; - id=29; + dataType="Object"; + class PositionInfo + { + position[]={3580.99,132.93045,8521.291}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, ""Goisse"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town5"; + }; + id=67; + type="FlagPole_F"; }; class Item30 { - dataType="Marker"; - position[]={8954.123,191.4641,17143.156}; - name="HELO_START_25"; - type="Empty"; - colorName="ColorGreen"; - id=30; + dataType="Object"; + class PositionInfo + { + position[]={3149.092,228.3168,6335.374}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, ""La Passagne"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town7"; + }; + id=68; + type="FlagPole_F"; }; class Item31 { - dataType="Marker"; - position[]={8176.6768,116.04903,12137.798}; - name="HELO_START_26"; - type="Empty"; - colorName="ColorGreen"; - id=31; - atlOffset=-7.6293945e-006; + dataType="Object"; + class PositionInfo + { + position[]={3766.947,22.658308,3241.3359}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, ""La Riviere"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; + name="Town8"; + }; + id=69; + type="FlagPole_F"; }; class Item32 { - dataType="Marker"; - position[]={17605.617,86.35125,17227.758}; - name="HELO_START_27"; - type="Empty"; - colorName="ColorGreen"; - id=32; + dataType="Object"; + class PositionInfo + { + position[]={7302.6274,171.54681,7990.9468}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, ""La Trinite"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; + name="Town9"; + }; + id=70; + type="FlagPole_F"; }; class Item33 { - dataType="Marker"; - position[]={16834.674,46.78714,16838.703}; - name="HELO_START_28"; - type="Empty"; - colorName="ColorGreen"; - id=33; + dataType="Object"; + class PositionInfo + { + position[]={5558.4565,75.736809,11184.31}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, ""Lolisse"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town12"; + }; + id=71; + type="FlagPole_F"; }; class Item34 { - dataType="Marker"; - position[]={15425.264,43.708084,18878.059}; - name="HELO_START_29"; - type="Empty"; - colorName="ColorGreen"; - id=34; + dataType="Object"; + class PositionInfo + { + position[]={766.15063,32.896805,12132.624}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, ""Moray"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; + name="Town13"; + }; + id=72; + type="FlagPole_F"; }; class Item35 - { - dataType="Marker"; - position[]={6342.0215,197.7972,14024.557}; - name="HELO_START_30"; - type="Empty"; - colorName="ColorGreen"; - id=35; - }; - class Item36 - { - dataType="Marker"; - position[]={4550.7393,57.666843,12503.57}; - name="HELO_START_31"; - type="Empty"; - colorName="ColorGreen"; - id=36; - }; - class Item37 - { - dataType="Marker"; - position[]={6447.0005,207.68181,18311.395}; - name="HELO_START_32"; - type="Empty"; - colorName="ColorGreen"; - id=37; - }; - class Item38 - { - dataType="Marker"; - position[]={27734.271,16.79051,21368.125}; - name="HELO_START_33"; - type="Empty"; - colorName="ColorGreen"; - id=38; - }; - class Item39 - { - dataType="Marker"; - position[]={25227.996,29.664711,22464.543}; - name="HELO_START_34"; - type="Empty"; - colorName="ColorGreen"; - id=39; - }; - class Item40 - { - dataType="Marker"; - position[]={26212.406,15.518887,24303}; - name="HELO_START_35"; - type="Empty"; - colorName="ColorGreen"; - id=40; - }; - class Item41 - { - dataType="Marker"; - position[]={22729.473,32.199425,21095.527}; - name="HELO_START_36"; - type="Empty"; - colorName="ColorGreen"; - id=41; - }; - class Item42 - { - dataType="Marker"; - position[]={16182.315,79.453537,10507.869}; - name="HELO_START_37"; - type="Empty"; - colorName="ColorGreen"; - id=42; - }; - class Item43 - { - dataType="Marker"; - position[]={16720.092,12.791599,11673.385}; - name="HELO_START_38"; - type="Empty"; - colorName="ColorGreen"; - id=43; - }; - class Item44 - { - dataType="Marker"; - position[]={20047.928,24.676178,16424.217}; - name="HELO_START_39"; - type="Empty"; - colorName="ColorGreen"; - id=44; - }; - class Item45 - { - dataType="Marker"; - position[]={18892.809,23.786053,14574.043}; - name="HELO_START_40"; - type="Empty"; - colorName="ColorGreen"; - id=45; - }; - class Item46 - { - dataType="Marker"; - position[]={22313.209,9.2807226,14070.693}; - name="HELO_START_41"; - type="Empty"; - colorName="ColorGreen"; - id=46; - }; - class Item47 - { - dataType="Marker"; - position[]={19955.602,23.347048,13878.775}; - name="HELO_START_42"; - type="Empty"; - colorName="ColorGreen"; - id=47; - }; - class Item48 - { - dataType="Marker"; - position[]={17819.961,15.659065,13623.636}; - name="HELO_START_43"; - type="Empty"; - colorName="ColorGreen"; - id=48; - }; - class Item49 - { - dataType="Marker"; - position[]={21335.037,2.6161816,10734.353}; - name="HELO_START_44"; - type="Empty"; - colorName="ColorGreen"; - id=49; - }; - class Item50 - { - dataType="Marker"; - position[]={18920.131,182.50348,10011.912}; - name="HELO_START_45"; - type="Empty"; - colorName="ColorGreen"; - id=50; - }; - class Item51 - { - dataType="Marker"; - position[]={22030.188,21.254408,19726.084}; - name="HELO_START_46"; - type="Empty"; - colorName="ColorGreen"; - id=51; - }; - class Item52 - { - dataType="Marker"; - position[]={22960.787,3.1900001,16952.262}; - name="HELO_START_47"; - type="Empty"; - colorName="ColorGreen"; - id=52; - }; - class Item53 - { - dataType="Marker"; - position[]={24311.746,3.0870998,18266.453}; - name="HELO_START_48"; - type="Empty"; - colorName="ColorGreen"; - id=53; - }; - class Item54 - { - dataType="Marker"; - position[]={25688.229,11.664829,20209.816}; - name="HELO_START_49"; - type="Empty"; - colorName="ColorGreen"; - id=54; - }; - class Item55 - { - dataType="Marker"; - position[]={19638.189,29.112429,19299.75}; - name="HELO_START_50"; - type="Empty"; - colorName="ColorGreen"; - id=55; - }; - class Item56 - { - dataType="Marker"; - position[]={10258.585,16.741814,12662.652}; - name="HELO_START_51"; - type="Empty"; - colorName="ColorGreen"; - id=56; - }; - class Item57 - { - dataType="Marker"; - position[]={13411.286,72.199524,21926.582}; - name="HELO_START_52"; - type="Empty"; - colorName="ColorGreen"; - id=57; - }; - class Item58 - { - dataType="Marker"; - position[]={20674.021,30.730125,18458.713}; - name="HELO_START_53"; - type="Empty"; - colorName="ColorGreen"; - id=58; - }; - class Item59 - { - dataType="Marker"; - position[]={499.56848,-190.99652,30213.908}; - name="CTI_HELP"; - type="Empty"; - colorName="ColorUNKNOWN"; - id=59; - }; - class Item60 - { - dataType="Marker"; - position[]={8457.709,105.3129,25118.77}; - name="CTI_TUTORIAL"; - type="Empty"; - id=60; - atlOffset=-7.6293945e-006; - }; - class Item61 - { - dataType="Object"; - class PositionInfo - { - position[]={20826.033,36.789253,6824.6987}; - angles[]={0.014664836,0,6.2046804}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_selakano0"", resistance, 500,""Town33""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town0"; - }; - id=61; - type="FlagPole_F"; - atlOffset=0.012802124; - }; - class Item62 - { - dataType="Object"; - class PositionInfo - { - position[]={16820.996,26.518801,12713.124}; - angles[]={0.045302324,0,6.2725158}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_pyrgos0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town1"; - }; - id=62; - type="FlagPole_F"; - atlOffset=0.0042667389; - }; - class Item63 - { - dataType="Object"; - class PositionInfo - { - position[]={19407.914,42.663628,13262.551}; - angles[]={0.018663859,0,0.022662206}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_dorida0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; - name="Town2"; - }; - id=63; - type="FlagPole_F"; - atlOffset=0.0011024475; - }; - class Item64 { dataType="Object"; class PositionInfo { - position[]={18089.914,26.811056,15200.277}; - angles[]={6.2578578,0,0.012000273}; + position[]={3098.9939,234.082,6852.1948}; }; side="Empty"; flags=4; class Attributes { skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_charkia0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town3"; + init="nullReturn = [this, ""Vigny"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town16"; }; - id=64; + id=73; type="FlagPole_F"; - atlOffset=0.0015525818; }; - class Item65 + class Item36 { dataType="Object"; class PositionInfo { - position[]={21381.674,26.061756,16414.758}; - angles[]={6.2405448,0,0.0146689}; + position[]={7117.3838,109.22265,8962.2412}; }; side="Empty"; flags=4; class Attributes { skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_kalochori0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; - name="Town6"; + init="nullReturn = [this, ""Saint Louis"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town14"; }; - id=65; + id=77; type="FlagPole_F"; - atlOffset=0.0040168762; + atlOffset=7.6293945e-006; }; - class Item66 + class Item37 { dataType="Object"; class PositionInfo { - position[]={18810.496,35.676094,16633.451}; - angles[]={6.2299027,0,6.2511969}; + position[]={5597.0229,107.30638,4232.4102}; }; side="Empty"; flags=4; class Attributes { skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_rodopoli0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town4"; + init="nullReturn = [this, ""Sainte Marie"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town15"; }; - id=66; + id=78; type="FlagPole_F"; - atlOffset=0.007686615; }; - class Item67 + class Item38 { dataType="Object"; class PositionInfo { - position[]={20945.688,47.213638,16965.613}; - angles[]={0.0040116427,0,6.1888003}; + position[]={8207.4014,25.557577,3157.1941}; }; side="Empty"; flags=4; class Attributes { skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_paros0"", resistance, 350,""Town39""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town5"; + init="nullReturn = [this, ""Le Port"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; + name="Town11"; }; - id=67; + id=81; type="FlagPole_F"; - atlOffset=0.017852783; }; - class Item68 + class Item39 { dataType="Object"; class PositionInfo { - position[]={27018.002,25.26956,23167.574}; - angles[]={6.2711854,0,0.051953323}; + position[]={6029.3882,129.0968,8605.4844}; }; side="Empty"; flags=4; class Attributes { skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_molos0"", resistance, 145,""Town47""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town7"; + init="nullReturn = [this, ""Larche"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; + name="Town10"; }; - id=68; + id=82; type="FlagPole_F"; - atlOffset=0.0063037872; + atlOffset=-7.6293945e-006; }; - class Item69 + class Item40 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={16640.928,19.293343,16056.638}; - angles[]={6.272521,0,0.0093286335}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_anthrakia0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; - name="Town8"; + position[]={1182.1709,28.492928,584.47247}; }; - id=69; - type="FlagPole_F"; - atlOffset=0.00038051605; + name="CTI_WEST"; + id=111; + type="Logic"; + atlOffset=6.3029652; }; - class Item70 + class Item41 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={16244.04,29.379099,17314.234}; - angles[]={6.2113094,0,0.037316564}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_telos0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town9"; + position[]={7173.7769,15.405507,12288.153}; }; - id=70; - type="FlagPole_F"; - atlOffset=0.013177872; + name="CTI_EAST"; + id=112; + type="Logic"; + atlOffset=6.8918867; }; - class Item71 + class Item42 { - dataType="Object"; - class PositionInfo - { - position[]={14032.271,30.131212,18737}; - angles[]={0.039977662,0,6.2778587}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_athira0"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; - name="Town12"; - }; - id=71; - type="FlagPole_F"; - atlOffset=0.0032463074; - }; - class Item72 - { - dataType="Object"; - class PositionInfo - { - position[]={11745.446,57.814919,18331.873}; - angles[]={6.213963,0,6.253861}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_koroni0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; - name="Town13"; - }; - id=72; - type="FlagPole_F"; - atlOffset=0.01134491; - }; - class Item73 - { - dataType="Object"; - class PositionInfo - { - position[]={10292.485,134.56599,19118.633}; - angles[]={6.1980581,0,6.2618537}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_galati0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; - name="Town16"; - }; - id=73; - type="FlagPole_F"; - atlOffset=0.015487671; - }; - class Item74 - { - dataType="Object"; - class PositionInfo - { - position[]={4588.5151,303.55054,21381.932}; - angles[]={6.2791886,0,6.2791886}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_oreokastro0"", resistance, 500,""Town38""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town21"; - }; - id=74; - type="FlagPole_F"; - atlOffset=3.0517578e-005; - }; - class Item75 - { - dataType="Object"; - class PositionInfo - { - position[]={8649.4277,184.71611,18285.018}; - angles[]={0.074527748,0,6.2671871}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_syrta0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town17"; - }; - id=75; - type="FlagPole_F"; - atlOffset=0.011825562; - }; - class Item76 - { - dataType="Object"; - class PositionInfo - { - position[]={9298.0059,119.61528,15932.003}; - angles[]={0.081154868,0,0.037314966}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_agiosdionysios0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town18"; - }; - id=76; - type="FlagPole_F"; - atlOffset=0.016075134; - }; - class Item77 - { - dataType="Object"; - class PositionInfo - { - position[]={12362.523,25.348881,15765.438}; - angles[]={0.0053265258,0,0.017329043}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_lakka0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town14"; - }; - id=77; - type="FlagPole_F"; - atlOffset=0.00066947937; - }; - class Item78 - { - dataType="Object"; - class PositionInfo - { - position[]={12608.428,16.056833,14320.253}; - angles[]={6.1927657,0,6.2405434}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_neochori0"", resistance, 350] execVM ""Common\Init\Init_Location.sqf"""; - name="Town15"; - }; - id=78; - type="FlagPole_F"; - atlOffset=0.019950867; - }; - class Item79 - { - dataType="Object"; - class PositionInfo - { - position[]={9038.1826,26.646751,11954.574}; - angles[]={0.021328852,0,6.1782389}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_zaros0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town19"; - }; - id=79; - type="FlagPole_F"; - atlOffset=0.021104813; - }; - class Item80 - { - dataType="Object"; - class PositionInfo - { - position[]={3507.7151,12.373648,12996.904}; - angles[]={6.2671871,0,0.010664274}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_kavala0"", resistance, 500,""Town46""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town20"; - }; - id=80; - type="FlagPole_F"; - atlOffset=0.00073432922; - }; - class Item81 - { - dataType="Object"; - class PositionInfo - { - position[]={14181.469,23.505833,16286.399}; - angles[]={0.012000273,0,6.2778587}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_airbase010"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; - name="Town11"; - }; - id=81; - type="FlagPole_F"; - atlOffset=0.00033187866; - }; - class Item82 - { - dataType="Object"; - class PositionInfo - { - position[]={15191.061,21.902496,17301.797}; - angles[]={0.0013372133,0,0.0013372133}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""STR_Map_Military_Base"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; - name="Town10"; - }; - id=82; - type="FlagPole_F"; - atlOffset=3.8146973e-006; - }; - class Item83 - { - dataType="Object"; - class PositionInfo - { - position[]={20274.463,52.501724,11714.725}; - angles[]={0.042640556,0,6.2778587}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_chalkeia0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town22"; - }; - id=83; - type="FlagPole_F"; - atlOffset=0.0036773682; - }; - class Item84 - { - dataType="Object"; - class PositionInfo - { - position[]={12842.514,46.522461,19633.301}; - angles[]={6.253861,0,6.2645216}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_ifestiona0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; - name="Town23"; - }; - id=84; - type="FlagPole_F"; - atlOffset=0.0023727417; - }; - class Item85 - { - dataType="Object"; - class PositionInfo - { - position[]={4864.3594,82.693581,16151.614}; - angles[]={0.02399601,0,6.2445378}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_negades0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town24"; - }; - id=85; - type="FlagPole_F"; - atlOffset=0.0040969849; - }; - class Item86 - { - dataType="Object"; - class PositionInfo - { - position[]={25623.484,22.950079,21285.391}; - angles[]={6.249866,0,0.0079935296}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_sofia0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town25"; - }; - id=86; - type="FlagPole_F"; - atlOffset=0.0023212433; - }; - class Item87 - { - dataType="Object"; - class PositionInfo - { - position[]={20516.811,38.253426,8883.252}; - angles[]={6.1219311,0,0.23175959}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_panagia0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town26"; - }; - id=87; - type="FlagPole_F"; - atlOffset=0.15982437; - }; - class Item88 - { - dataType="Object"; - class PositionInfo - { - position[]={7118.8721,116.19866,16439.533}; - angles[]={6.1637564,0,0.071875811}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_kore0"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; - name="Town27"; - }; - id=88; - type="FlagPole_F"; - atlOffset=0.038856506; - }; - class Item89 - { - dataType="Object"; - class PositionInfo - { - position[]={22950.141,9.1006737,18859.719}; - angles[]={0.0093350215,0,6.259192}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_almyra0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; - name="Town28"; - }; - id=89; - type="FlagPole_F"; - atlOffset=0.00093460083; - }; - class Item90 - { - dataType="Object"; - class PositionInfo - { - position[]={13587.634,19.314034,12209.913}; - angles[]={0.0039967569,0,0.0013372133}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_makrynisiisland0"", resistance, 25] execVM ""Common\Init\Init_Location.sqf"""; - name="Town29"; - }; - id=90; - type="FlagPole_F"; - atlOffset=3.9100647e-005; - }; - class Item91 - { - dataType="Object"; - class PositionInfo - { - position[]={14964.189,10.588233,11105.679}; - angles[]={0.017332481,0,6.2046804}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_faronaki0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; - name="Town30"; - }; - id=91; - type="FlagPole_F"; - atlOffset=0.012816429; - }; - class Item92 - { - dataType="Object"; - class PositionInfo - { - position[]={17745.547,6.3756104,18107.686}; - angles[]={0.0093286335,0,6.2711902}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_kalithea0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; - name="Town32"; - }; - id=92; - type="FlagPole_F"; - atlOffset=0.00044631958; - }; - class Item93 - { - dataType="Object"; - class PositionInfo - { - position[]={11574.771,23.315058,9442.752}; - angles[]={6.2711902,0,6.2765174}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_vikos0"", resistance, 145,""Town42""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town33"; - }; - id=93; - type="FlagPole_F"; - atlOffset=0.0027294159; - }; - class Item94 - { - dataType="Object"; - class PositionInfo - { - position[]={17077.311,23.238556,10059.891}; - angles[]={0.031988446,0,0.027993103}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_ekali0"", resistance, 200,""Town33""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town31"; - }; - id=94; - type="FlagPole_F"; - atlOffset=0.0035552979; - }; - class Item95 - { - dataType="Object"; - class PositionInfo - { - position[]={14651.969,49.779419,20758.879}; - angles[]={6.272521,0,6.2338929}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_frini0"", resistance, 175] execVM ""Common\Init\Init_Location.sqf"""; - name="Town34"; - }; - id=95; - type="FlagPole_F"; - atlOffset=0.005065918; - }; - class Item96 - { - dataType="Object"; - class PositionInfo - { - position[]={16854.336,14.130496,21871.979}; - angles[]={0.022662206,0,6.2818484}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_nychi0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; - name="Town35"; - }; - id=96; - type="FlagPole_F"; - atlOffset=0.0010061264; - }; - class Item97 - { - dataType="Object"; - class PositionInfo - { - position[]={20113.703,22.211153,20032.137}; - angles[]={0.0039967569,0,0.038647637}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""STR_Map_Theater_Ruins"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; - name="Town36"; - }; - id=97; - type="FlagPole_F"; - atlOffset=0.0030250549; - }; - class Item98 - { - dataType="Object"; - class PositionInfo - { - position[]={20943.436,17.919567,19257.873}; - angles[]={0.0093350215,0,0.075854406}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""STR_Map_Military_Outpost"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town37"; - }; - id=98; - type="FlagPole_F"; - atlOffset=0.011717796; - }; - class Item99 - { - dataType="Object"; - class PositionInfo - { - position[]={9220.6602,19.509701,21622.859}; - angles[]={0.022664838,0,0.027993103}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""STR_Map_North_Airfield"", resistance, 500,""Town41""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town38"; - }; - id=99; - type="FlagPole_F"; - atlOffset=0.007390976; - }; - class Item100 - { - dataType="Object"; - class PositionInfo - { - position[]={23199.52,18.140114,19971.23}; - angles[]={6.272521,0,6.2765174}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_ioannina0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town39"; - }; - id=100; - type="FlagPole_F"; - atlOffset=0.00032138824; - }; - class Item101 - { - dataType="Object"; - class PositionInfo - { - position[]={11623.219,27.020689,11943.426}; - angles[]={6.2352223,0,6.2179451}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_aacairfield0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; - name="Town40"; - }; - id=101; - type="FlagPole_F"; - atlOffset=0.013057709; - }; - class Item102 - { - dataType="Object"; - class PositionInfo - { - position[]={26851.094,30.606556,24466.365}; - angles[]={0.031988446,0,0.0013372133}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_molosairfield0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; - name="Town41"; - }; - id=102; - type="FlagPole_F"; - atlOffset=0.0020027161; - }; - class Item103 - { - dataType="Object"; - class PositionInfo - { - position[]={5068.5044,56.909691,11306.087}; - angles[]={6.2551947,0,6.2325621}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_panochori0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town42"; - }; - id=103; - type="FlagPole_F"; - atlOffset=0.0066490173; - }; - class Item104 - { - dataType="Object"; - class PositionInfo - { - position[]={21895.934,26.782196,21010.182}; - angles[]={6.129735,0,0.0066592805}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""STR_Map_Hotel_Complex"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town43"; - }; - id=104; - type="FlagPole_F"; - atlOffset=0.047597885; - }; - class Item105 - { - dataType="Object"; - class PositionInfo - { - position[]={5475.6577,31.276804,14999.543}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_stadium0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; - name="Town44"; - }; - id=105; - type="FlagPole_F"; - }; - class Item106 - { - dataType="Object"; - class PositionInfo - { - position[]={21091.016,5.8291836,14768.472}; - angles[]={0.017332481,0,0.12468339}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_limni0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; - name="Town45"; - }; - id=106; - type="FlagPole_F"; - atlOffset=0.03186357; - }; - class Item107 - { - dataType="Object"; - class PositionInfo - { - position[]={3853.6687,19.174381,17472.664}; - angles[]={6.2192721,0,0.077179179}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_agioskonstantinos0"", resistance, 140,""Town21""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town46"; - }; - id=107; - type="FlagPole_F"; - atlOffset=0.019934654; - }; - class Item108 - { - dataType="Object"; - class PositionInfo - { - position[]={21752.174,19.689096,7520.2725}; - angles[]={0.0093286335,0,6.2791886}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_feres0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; - name="Town47"; - }; - id=108; - type="FlagPole_F"; - atlOffset=0.000207901; - }; - class Item109 - { - dataType="Object"; - class PositionInfo - { - position[]={5853.1182,229.927,20094.025}; - angles[]={6.2738504,0,0.069221549}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_dump0"", resistance, 175,""Town17""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town48"; - }; - id=109; - type="FlagPole_F"; - atlOffset=0.0097351074; - }; - class Item110 - { - dataType="Object"; - class PositionInfo - { - position[]={23236.664,38.75779,21794.523}; - angles[]={0.038647637,0,0.045302324}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_nidasos0"", resistance, 145] execVM ""Common\Init\Init_Location.sqf"""; - name="Town49"; - }; - id=110; - type="FlagPole_F"; - atlOffset=0.0071182251; - }; - class Item111 - { - dataType="Logic"; - class PositionInfo - { - position[]={2288.1289,7.7944555,9280.5264}; - }; - name="CTI_WEST"; - id=111; - type="Logic"; - }; - class Item112 - { - dataType="Logic"; - class PositionInfo - { - position[]={14497.438,10.97437,5865.5117}; - }; - name="CTI_EAST"; - id=112; - type="Logic"; - }; - class Item113 - { - dataType="Group"; - side="East"; - class Entities + dataType="Group"; + side="East"; + class Entities { items=25; class Item0 @@ -1713,47 +703,867 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14482.121,9.8335609,5893.3213}; - angles[]={0.30364406,0,6.0730028}; + position[]={7161.1045,8.4507074,12309.42}; + angles[]={0.019199125,0,6.2408099}; + }; + side="East"; + flags=6; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=114; + type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male02PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.01; + }; + }; + }; + nAttributes=2; + }; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={7165.8135,8.1746759,12306.356}; + angles[]={0.019199125,0,6.2001762}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="COLONEL"; + init="this allowDamage false; (group this) setGroupID [""Default Team""];this disableAI ""MOVE"";this disableAI ""AUTOTARGET"";this disableAI ""TARGET"";"; + name="CTI_EAST_DEFAULT_GROUP"; + }; + id=115; + type="O_Soldier_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male03PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.99000001; + }; + }; + }; + nAttributes=2; + }; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={7155.8135,8.729907,12306.356}; + angles[]={0.0087958695,0,6.2511969}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayer=1; + isPlayable=1; + }; + id=116; + type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male01PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.97000003; + }; + }; + }; + nAttributes=2; + }; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={7170.8135,7.8547201,12301.356}; + angles[]={0.019199125,0,6.2001762}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=117; + type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male01PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.04; + }; + }; + }; + nAttributes=2; + }; + }; + class Item4 + { + dataType="Object"; + class PositionInfo + { + position[]={7150.8135,8.933919,12301.356}; + angles[]={0.0087958695,0,6.2511969}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=118; + type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male01PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.03; + }; + }; + }; + nAttributes=2; + }; + }; + class Item5 + { + dataType="Object"; + class PositionInfo + { + position[]={7175.8135,7.7079811,12296.356}; + angles[]={0.074263111,0,6.1629682}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=119; + type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male03PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + nAttributes=2; + }; + }; + class Item6 + { + dataType="Object"; + class PositionInfo + { + position[]={7145.8135,9.3286066,12296.356}; + angles[]={0.056739714,0,6.2480001}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=120; + type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male02PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.03; + }; + }; + }; + nAttributes=2; + }; + }; + class Item7 + { + dataType="Object"; + class PositionInfo + { + position[]={7180.8135,7.4759669,12291.356}; + angles[]={0.074263111,0,6.1629682}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=121; + type="O_Soldier_SL_F"; + atlOffset=-4.7683716e-007; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male03PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.03; + }; + }; + }; + nAttributes=2; + }; + }; + class Item8 + { + dataType="Object"; + class PositionInfo + { + position[]={7140.8135,9.8660831,12291.356}; + angles[]={0.071080439,0,6.2336264}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=122; + type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male01PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + nAttributes=2; + }; + }; + class Item9 + { + dataType="Object"; + class PositionInfo + { + position[]={7185.8135,7.3185496,12286.356}; + angles[]={0.13595572,0,6.1629682}; }; side="East"; - flags=6; + flags=4; class Attributes { skill=0.60000002; rank="CAPTAIN"; isPlayable=1; }; - id=114; + id=123; type="O_Soldier_SL_F"; + atlOffset=-4.7683716e-007; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male02PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + nAttributes=2; + }; }; - class Item1 + class Item10 { dataType="Object"; class PositionInfo { - position[]={14487.121,9.6155596,5888.3711}; - angles[]={0.30364406,0,5.9329162}; + position[]={7135.8135,10.537416,12286.356}; + angles[]={0.016798066,0,6.1558776}; }; side="East"; flags=4; class Attributes { skill=0.60000002; - rank="COLONEL"; - init="this allowDamage false; (group this) setGroupID [""Default Team""];this disableAI ""MOVE"";this disableAI ""AUTOTARGET"";this disableAI ""TARGET"";"; - name="CTI_EAST_DEFAULT_GROUP"; + rank="CAPTAIN"; + isPlayable=1; + }; + id=124; + type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male01PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.95999998; + }; + }; + }; + nAttributes=2; + }; + }; + class Item11 + { + dataType="Object"; + class PositionInfo + { + position[]={7190.8135,7.8040166,12281.356}; + angles[]={0.13595572,0,0.0015822123}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=125; + type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male02PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + nAttributes=2; + }; + }; + class Item12 + { + dataType="Object"; + class PositionInfo + { + position[]={7130.8135,11.252232,12281.356}; + angles[]={6.2759929,0,6.1795583}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=126; + type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male01PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.97000003; + }; + }; + }; + nAttributes=2; + }; + }; + class Item13 + { + dataType="Object"; + class PositionInfo + { + position[]={7195.8135,8.4960575,12276.356}; + angles[]={0.13595572,0,0.0015822123}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=127; + type="O_Soldier_SL_F"; + atlOffset=-9.5367432e-007; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male03PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + nAttributes=2; }; - id=115; - type="O_Soldier_F"; }; - class Item2 + class Item14 { dataType="Object"; class PositionInfo { - position[]={14482.121,12.04697,5883.3711}; - angles[]={0.10626491,0,6.1782393}; + position[]={7125.8135,11.736261,12276.356}; + angles[]={6.2759929,0,6.1795583}; }; side="East"; flags=4; @@ -1761,10 +1571,9 @@ class Mission { skill=0.60000002; rank="CAPTAIN"; - isPlayer=1; isPlayable=1; }; - id=116; + id=128; type="O_Soldier_SL_F"; class CustomAttributes { @@ -1802,20 +1611,20 @@ class Mission "SCALAR" }; }; - value=0.98000002; + value=1; }; }; }; nAttributes=2; }; }; - class Item3 + class Item15 { dataType="Object"; class PositionInfo { - position[]={14487.121,11.690472,5878.3711}; - angles[]={0.21018261,0,6.0640931}; + position[]={7200.8135,8.66574,12271.356}; + angles[]={0.0072011296,0,6.2312322}; }; side="East"; flags=4; @@ -1825,35 +1634,58 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=117; + id=129; type="O_Soldier_SL_F"; - }; - class Item4 - { - dataType="Object"; - class PositionInfo - { - position[]={14482.121,13.243651,5873.3711}; - angles[]={0.12993059,0,6.2578578}; - }; - side="East"; - flags=4; - class Attributes + class CustomAttributes { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male01PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.99000001; + }; + }; + }; + nAttributes=2; }; - id=118; - type="O_Soldier_SL_F"; }; - class Item5 + class Item16 { dataType="Object"; class PositionInfo { - position[]={14484.867,12.719265,5869.4692}; - angles[]={6.1637559,0,6.1769204}; + position[]={7120.8135,11.677279,12271.356}; + angles[]={6.2631893,0,0.014398213}; }; side="East"; flags=4; @@ -1863,16 +1695,59 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=119; + id=130; type="O_Soldier_SL_F"; + atlOffset=9.5367432e-007; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male03PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.03; + }; + }; + }; + nAttributes=2; + }; }; - class Item6 + class Item17 { dataType="Object"; class PositionInfo { - position[]={14486.079,12.085032,5862.3247}; - angles[]={0.0093350215,0,6.1769209}; + position[]={7205.8135,8.4417267,12266.356}; + angles[]={0.0072011296,0,6.2312322}; }; side="East"; flags=4; @@ -1882,16 +1757,58 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=120; + id=131; type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male02PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.97000003; + }; + }; + }; + nAttributes=2; + }; }; - class Item7 + class Item18 { dataType="Object"; class PositionInfo { - position[]={14489.289,11.779264,5858.4019}; - angles[]={0.0093350215,0,6.1769209}; + position[]={7115.8135,11.216897,12266.356}; + angles[]={6.2097178,0,0.067896426}; }; side="East"; flags=4; @@ -1901,16 +1818,58 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=121; + id=132; type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male01PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.95999998; + }; + }; + }; + nAttributes=2; + }; }; - class Item8 + class Item19 { dataType="Object"; class PositionInfo { - position[]={14493.111,11.269214,5857.0439}; - angles[]={6.2046804,0,6.1545658}; + position[]={7210.8135,8.3237801,12261.356}; + angles[]={0.095706634,0,6.2312331}; }; side="East"; flags=4; @@ -1920,16 +1879,58 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=122; + id=133; type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male02PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + nAttributes=2; + }; }; - class Item9 + class Item20 { dataType="Object"; class PositionInfo { - position[]={14493.116,11.102674,5854.936}; - angles[]={6.2046804,0,6.1545658}; + position[]={7110.8135,10.807887,12261.356}; + angles[]={0.047963165,0,6.2599902}; }; side="East"; flags=4; @@ -1939,35 +1940,59 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=123; + id=134; type="O_Soldier_SL_F"; - }; - class Item10 - { - dataType="Object"; - class PositionInfo - { - position[]={14491.64,10.838742,5852.5313}; - angles[]={6.127131,0,6.2325611}; - }; - side="East"; - flags=4; - class Attributes + atlOffset=9.5367432e-007; + class CustomAttributes { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male01PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.97000003; + }; + }; + }; + nAttributes=2; }; - id=124; - type="O_Soldier_SL_F"; }; - class Item11 + class Item21 { dataType="Object"; class PositionInfo { - position[]={14493.937,10.517456,5851.2285}; - angles[]={6.127131,0,6.2325611}; + position[]={7215.8135,8.5675764,12256.356}; + angles[]={0.095706634,0,6.2384138}; }; side="East"; flags=4; @@ -1977,35 +2002,58 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=125; + id=135; type="O_Soldier_SL_F"; - }; - class Item12 - { - dataType="Object"; - class PositionInfo - { - position[]={14497.858,10.133352,5847.647}; - angles[]={0.042641956,0,5.9590368}; - }; - side="East"; - flags=4; - class Attributes + class CustomAttributes { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male01PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.99000001; + }; + }; + }; + nAttributes=2; }; - id=126; - type="O_Soldier_SL_F"; }; - class Item13 + class Item22 { dataType="Object"; class PositionInfo { - position[]={14512.12,7.1621251,5893.0957}; - angles[]={6.2166171,0,6.1756024}; + position[]={7105.8135,11.148048,12256.356}; + angles[]={0.0064037596,0,0.018396867}; }; side="East"; flags=4; @@ -2015,17 +2063,58 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=127; + id=136; type="O_Soldier_SL_F"; - atlOffset=4.7683716e-007; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male03PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.97000003; + }; + }; + }; + nAttributes=2; + }; }; - class Item14 + class Item23 { dataType="Object"; class PositionInfo { - position[]={14507.12,7.5813837,5888.0957}; - angles[]={6.2605233,0,6.1323404}; + position[]={7220.8135,8.8236265,12251.356}; + angles[]={0.095706634,0,6.2384138}; }; side="East"; flags=4; @@ -2035,16 +2124,58 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=128; + id=137; type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male03PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.95999998; + }; + }; + }; + nAttributes=2; + }; }; - class Item15 + class Item24 { dataType="Object"; class PositionInfo { - position[]={14512.12,6.4824553,5883.0957}; - angles[]={6.2099824,0,6.13234}; + position[]={7100.8135,11.088045,12251.356}; + angles[]={0.0064037596,0,0.018396867}; }; side="East"; flags=4; @@ -2054,39 +2185,136 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=129; + id=138; type="O_Soldier_SL_F"; - atlOffset=4.7683716e-007; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male02PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.02; + }; + }; + }; + nAttributes=2; + }; }; - class Item16 + }; + class Attributes + { + }; + id=113; + }; + class Item43 + { + dataType="Group"; + side="West"; + class Entities + { + items=25; + class Item0 { dataType="Object"; class PositionInfo { - position[]={14507.12,7.4580698,5878.0957}; - angles[]={6.256525,0,5.9929523}; + position[]={1208.968,24.919378,587.54797}; + angles[]={6.0981278,0,0.1020494}; }; - side="East"; - flags=4; + side="West"; + flags=6; class Attributes { skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; + rank="COLONEL"; + init="this allowDamage false;(group this) setGroupIDGlobal [""Default Team""];this disableAI ""MOVE"";this disableAI ""AUTOTARGET"";this disableAI ""TARGET"";"; + name="CTI_WEST_DEFAULT_GROUP"; + }; + id=140; + type="B_Soldier_F"; + atlOffset=1.9073486e-006; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male10ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + nAttributes=2; }; - id=130; - type="O_Soldier_SL_F"; - atlOffset=-0.29771471; }; - class Item17 + class Item1 { dataType="Object"; class PositionInfo { - position[]={14512.12,6.1292048,5873.0957}; - angles[]={6.256525,0,5.9929523}; + position[]={1213.968,24.431927,582.59796}; + angles[]={6.0981278,0,0.052743852}; }; - side="East"; + side="West"; flags=4; class Attributes { @@ -2094,18 +2322,60 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=131; - type="O_Soldier_SL_F"; + id=141; + type="B_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male08ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.97000003; + }; + }; + }; + nAttributes=2; + }; }; - class Item18 + class Item2 { dataType="Object"; class PositionInfo { - position[]={14507.12,7.3394032,5868.0957}; - angles[]={6.2578578,0,5.9905057}; + position[]={1203.968,23.526396,582.59796}; + angles[]={6.1432967,0,0.055937801}; }; - side="East"; + side="West"; flags=4; class Attributes { @@ -2113,18 +2383,60 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=132; - type="O_Soldier_SL_F"; + id=142; + type="B_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male12ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.03; + }; + }; + }; + nAttributes=2; + }; }; - class Item19 + class Item3 { dataType="Object"; class PositionInfo { - position[]={14512.12,5.8589268,5863.0957}; - angles[]={0.22543514,0,5.9905062}; + position[]={1218.968,23.759932,577.59796}; + angles[]={6.0981278,0,0.052743852}; }; - side="East"; + side="West"; flags=4; class Attributes { @@ -2132,19 +2444,60 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=133; - type="O_Soldier_SL_F"; - atlOffset=-0.34478331; + id=143; + type="B_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male08ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.03; + }; + }; + }; + nAttributes=2; + }; }; - class Item20 + class Item4 { dataType="Object"; class PositionInfo { - position[]={14507.12,8.399498,5858.0957}; - angles[]={0.13386136,0,6.0793881}; + position[]={1198.968,22.503601,577.59796}; + angles[]={6.1432967,0,0.093322754}; }; - side="East"; + side="West"; flags=4; class Attributes { @@ -2152,18 +2505,60 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=134; - type="O_Soldier_SL_F"; + id=144; + type="B_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male11ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + nAttributes=2; + }; }; - class Item21 + class Item5 { dataType="Object"; class PositionInfo { - position[]={14512.12,7.0922318,5853.0957}; - angles[]={6.2685208,0,6.0793877}; + position[]={1223.968,22.86038,572.59796}; + angles[]={6.010181,0,0.052743852}; }; - side="East"; + side="West"; flags=4; class Attributes { @@ -2171,19 +2566,60 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=135; - type="O_Soldier_SL_F"; - atlOffset=-0.28221989; + id=145; + type="B_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male05ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.97000003; + }; + }; + }; + nAttributes=2; + }; }; - class Item22 + class Item6 { dataType="Object"; class PositionInfo { - position[]={14507.12,7.9941993,5848.0957}; - angles[]={6.2046804,0,6.1180367}; + position[]={1193.968,21.324379,572.59796}; + angles[]={6.060534,0,0.059934605}; }; - side="East"; + side="West"; flags=4; class Attributes { @@ -2191,18 +2627,61 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=136; - type="O_Soldier_SL_F"; + id=146; + type="B_Soldier_SL_F"; + atlOffset=1.9073486e-006; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male07ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.94999999; + }; + }; + }; + nAttributes=2; + }; }; - class Item23 + class Item7 { dataType="Object"; class PositionInfo { - position[]={14509.348,7.3115125,5844.0229}; - angles[]={6.2099833,0,6.1128521}; + position[]={1228.968,20.924431,567.59796}; + angles[]={6.010181,0,6.1354609}; }; - side="East"; + side="West"; flags=4; class Attributes { @@ -2210,18 +2689,60 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=137; - type="O_Soldier_SL_F"; + id=147; + type="B_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male12ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + nAttributes=2; + }; }; - class Item24 + class Item8 { dataType="Object"; class PositionInfo { - position[]={14502.701,8.7139492,5842.7749}; - angles[]={0.042641956,0,5.9590368}; + position[]={1188.968,20.308863,567.59796}; + angles[]={6.1276588,0,6.2735863}; }; - side="East"; + side="West"; flags=4; class Attributes { @@ -2229,50 +2750,58 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=138; - type="O_Soldier_SL_F"; - }; - }; - class Attributes - { - formation="STAG COLUMN"; - }; - id=113; - }; - class Item114 - { - dataType="Group"; - side="West"; - class Entities - { - items=25; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={2314.9258,12.648989,9283.7012}; - angles[]={0.057271164,0,0.1312411}; - }; - side="West"; - flags=6; - class Attributes + id=148; + type="B_Soldier_SL_F"; + class CustomAttributes { - skill=0.60000002; - rank="COLONEL"; - init="this allowDamage false;(group this) setGroupIDGlobal [""Default Team""];this disableAI ""MOVE"";this disableAI ""AUTOTARGET"";this disableAI ""TARGET"";"; - name="CTI_WEST_DEFAULT_GROUP"; + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male10ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.05; + }; + }; + }; + nAttributes=2; }; - id=140; - type="B_Soldier_F"; }; - class Item1 + class Item9 { dataType="Object"; class PositionInfo { - position[]={2319.9258,13.644493,9278.751}; - angles[]={0.057271164,0,0.15214813}; + position[]={1233.968,18.780436,562.59796}; + angles[]={6.010181,0,6.1354609}; }; side="West"; flags=4; @@ -2282,16 +2811,58 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=141; - type="B_Soldier_SL_F"; + id=149; + type="B_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male07ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.94999999; + }; + }; + }; + nAttributes=2; + }; }; - class Item2 + class Item10 { dataType="Object"; class PositionInfo { - position[]={2314.9258,12.525521,9273.751}; - angles[]={6.2139621,0,0.2114578}; + position[]={1183.968,19.785736,562.59796}; + angles[]={6.1661263,0,6.2129006}; }; side="West"; flags=4; @@ -2301,7 +2872,7 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=142; + id=150; type="B_Soldier_SL_F"; class CustomAttributes { @@ -2320,7 +2891,7 @@ class Mission "STRING" }; }; - value="Male07ENG"; + value="Male05ENG"; }; }; }; @@ -2346,108 +2917,13 @@ class Mission nAttributes=2; }; }; - class Item3 - { - dataType="Object"; - class PositionInfo - { - position[]={2319.9258,13.049868,9268.751}; - angles[]={6.2498641,0,0.11153467}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=143; - type="B_Soldier_SL_F"; - }; - class Item4 - { - dataType="Object"; - class PositionInfo - { - position[]={2314.9258,12.819977,9263.751}; - angles[]={0.010664274,0,0.02666023}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=144; - type="B_Soldier_SL_F"; - }; - class Item5 - { - dataType="Object"; - class PositionInfo - { - position[]={2319.9258,12.771416,9258.751}; - angles[]={6.2285728,0,0.031988446}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=145; - type="B_Soldier_SL_F"; - }; - class Item6 - { - dataType="Object"; - class PositionInfo - { - position[]={2314.9258,12.317031,9253.751}; - angles[]={6.1861577,0,0.018667053}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=146; - type="B_Soldier_SL_F"; - }; - class Item7 - { - dataType="Object"; - class PositionInfo - { - position[]={2319.9258,11.765233,9248.751}; - angles[]={6.1861577,0,6.2365522}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=147; - type="B_Soldier_SL_F"; - }; - class Item8 + class Item11 { dataType="Object"; class PositionInfo { - position[]={2314.9258,11.481448,9243.751}; - angles[]={6.1782393,0,6.2365537}; + position[]={1238.968,16.87989,557.59796}; + angles[]={6.0981278,0,5.9953976}; }; side="West"; flags=4; @@ -2457,35 +2933,58 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=148; + id=151; type="B_Soldier_SL_F"; - }; - class Item9 - { - dataType="Object"; - class PositionInfo - { - position[]={2319.9258,9.8097668,9238.751}; - angles[]={5.8206048,0,6.0742788}; - }; - side="West"; - flags=4; - class Attributes + class CustomAttributes { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male02ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + nAttributes=2; }; - id=149; - type="B_Soldier_SL_F"; }; - class Item10 + class Item12 { dataType="Object"; class PositionInfo { - position[]={2314.9258,8.4945126,9233.751}; - angles[]={6.0755548,0,6.0213389}; + position[]={1178.968,19.102779,557.59796}; + angles[]={6.0880923,0,6.2001772}; }; side="West"; flags=4; @@ -2495,36 +2994,58 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=150; + id=152; type="B_Soldier_SL_F"; - }; - class Item11 - { - dataType="Object"; - class PositionInfo - { - position[]={2337.5042,16.200138,9289.0645}; - angles[]={0.018663859,0,0.074528553}; - }; - side="West"; - flags=4; - class Attributes + class CustomAttributes { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male09ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.02; + }; + }; + }; + nAttributes=2; }; - id=151; - type="B_Soldier_SL_F"; - atlOffset=3.8146973e-006; }; - class Item12 + class Item13 { dataType="Object"; class PositionInfo { - position[]={2332.5042,15.609912,9284.0645}; - angles[]={6.2405448,0,0.11548408}; + position[]={1243.968,14.46389,552.59796}; + angles[]={6.0981278,0,5.9953976}; }; side="West"; flags=4; @@ -2534,35 +3055,58 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=152; + id=153; type="B_Soldier_SL_F"; - }; - class Item13 - { - dataType="Object"; - class PositionInfo - { - position[]={2337.5042,15.976583,9279.0645}; - angles[]={6.2405448,0,0.11548408}; - }; - side="West"; - flags=4; - class Attributes + class CustomAttributes { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male06ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.02; + }; + }; + }; + nAttributes=2; }; - id=153; - type="B_Soldier_SL_F"; }; class Item14 { dataType="Object"; class PositionInfo { - position[]={2332.5042,15.201583,9274.0645}; - angles[]={6.2458687,0,0.053282689}; + position[]={1173.968,18.497755,552.59796}; + angles[]={6.0880923,0,6.2320294}; }; side="West"; flags=4; @@ -2574,15 +3118,60 @@ class Mission }; id=154; type="B_Soldier_SL_F"; + atlOffset=-1.9073486e-006; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male12ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.02; + }; + }; + }; + nAttributes=2; + }; }; class Item15 { dataType="Object"; class PositionInfo { - position[]={2337.5042,15.643533,9269.0645}; + position[]={1248.968,11.892912,547.59796}; + angles[]={6.0378265,0,5.9953976}; }; side="West"; + flags=4; class Attributes { skill=0.60000002; @@ -2591,15 +3180,56 @@ class Mission }; id=155; type="B_Soldier_SL_F"; - atlOffset=0.33308029; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male02ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.94999999; + }; + }; + }; + nAttributes=2; + }; }; class Item16 { dataType="Object"; class PositionInfo { - position[]={2332.5042,14.609595,9264.0645}; - angles[]={6.1914434,0,0.13647979}; + position[]={1168.968,18.226578,547.59796}; + angles[]={6.0758057,0,6.1511512}; }; side="West"; flags=4; @@ -2611,15 +3241,56 @@ class Mission }; id=156; type="B_Soldier_SL_F"; - atlOffset=0.10816097; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male12ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + nAttributes=2; + }; }; class Item17 { dataType="Object"; class PositionInfo { - position[]={2335,13.910367,9259.4766}; - angles[]={6.1769204,0,6.233892}; + position[]={1253.968,10.151331,542.59796}; + angles[]={6.0378265,0,6.2368116}; }; side="West"; flags=4; @@ -2631,14 +3302,56 @@ class Mission }; id=157; type="B_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male04ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.99000001; + }; + }; + }; + nAttributes=2; + }; }; class Item18 { dataType="Object"; class PositionInfo { - position[]={2332.5042,12.691146,9254.0645}; - angles[]={5.8400087,0,6.0768318}; + position[]={1163.968,18.657196,542.59796}; + angles[]={6.2097239,0,6.0198498}; }; side="West"; flags=4; @@ -2650,15 +3363,56 @@ class Mission }; id=158; type="B_Soldier_SL_F"; - atlOffset=-0.4017849; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male02ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.01; + }; + }; + }; + nAttributes=2; + }; }; class Item19 { dataType="Object"; class PositionInfo { - position[]={2337.5042,9.6730919,9249.0645}; - angles[]={5.8400087,0,6.0768318}; + position[]={1258.968,8.6673365,537.59796}; + angles[]={6.0378265,0,6.2368116}; }; side="West"; flags=4; @@ -2668,16 +3422,58 @@ class Mission rank="CAPTAIN"; isPlayable=1; }; - id=159; - type="B_Soldier_SL_F"; + id=159; + type="B_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male09ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.97000003; + }; + }; + }; + nAttributes=2; + }; }; class Item20 { dataType="Object"; class PositionInfo { - position[]={2325.0005,10.993038,9246.0049}; - angles[]={6.0188522,0,5.8026171}; + position[]={1158.968,20.325314,537.59796}; + angles[]={6.2376146,0,5.8480926}; }; side="West"; flags=4; @@ -2689,14 +3485,56 @@ class Mission }; id=160; type="B_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male11ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + nAttributes=2; + }; }; class Item21 { dataType="Object"; class PositionInfo { - position[]={2327.6113,6.3763151,9235.6641}; - angles[]={5.8206053,0,5.9795418}; + position[]={1263.968,7.0660634,532.59796}; + angles[]={6.0280704,0,6.1922359}; }; side="West"; flags=4; @@ -2708,14 +3546,57 @@ class Mission }; id=161; type="B_Soldier_SL_F"; + atlOffset=-4.7683716e-007; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male11ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.04; + }; + }; + }; + nAttributes=2; + }; }; class Item22 { dataType="Object"; class PositionInfo { - position[]={2329.3284,6.8502789,9239.1045}; - angles[]={6.0003133,0,5.8026171}; + position[]={1153.968,22.202339,532.59796}; + angles[]={6.2312269,0,5.8099918}; }; side="West"; flags=4; @@ -2727,14 +3608,56 @@ class Mission }; id=162; type="B_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male10ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.94999999; + }; + }; + }; + nAttributes=2; + }; }; class Item23 { dataType="Object"; class PositionInfo { - position[]={2332.2759,3.347275,9232.4805}; - angles[]={6.0768318,0,5.9795418}; + position[]={1268.968,5.3060699,527.59796}; + angles[]={6.0280704,0,6.1922359}; }; side="West"; flags=4; @@ -2746,14 +3669,57 @@ class Mission }; id=163; type="B_Soldier_SL_F"; + atlOffset=4.7683716e-007; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male10ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + nAttributes=2; + }; }; class Item24 { dataType="Object"; class PositionInfo { - position[]={2321.0681,5.4266376,9229.5781}; - angles[]={5.894659,0,6.0338197}; + position[]={1148.968,24.480839,527.59796}; + angles[]={6.2312269,0,5.8266072}; }; side="West"; flags=4; @@ -2765,24 +3731,68 @@ class Mission }; id=164; type="B_Soldier_SL_F"; + atlOffset=1.9073486e-006; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male10ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.01; + }; + }; + }; + nAttributes=2; + }; }; }; class Attributes { - formation="STAG COLUMN"; }; id=139; + atlOffset=1.9073486e-006; }; - class Item115 + class Item44 { dataType="Logic"; class PositionInfo { - position[]={8504.5732,33.204266,24831.566}; + position[]={1232.6871,30.013901,12319.944}; }; name="ADMIN_ZEUS"; id=165; type="ModuleCurator_F"; + atlOffset=1.0839005; class CustomAttributes { class Attribute0 @@ -2864,12 +3874,12 @@ class Mission nAttributes=4; }; }; - class Item116 + class Item45 { dataType="Logic"; class PositionInfo { - position[]={8512.666,32.878616,24831.623}; + position[]={1240.7799,28.93,12320.001}; }; id=166; type="ModuleCuratorAddAddons_F"; @@ -2954,51 +3964,54 @@ class Mission nAttributes=4; }; }; - class Item117 + class Item46 { dataType="Logic"; class PositionInfo { - position[]={8428.5938,23.294439,24806.621}; + position[]={1172.2943,34.174339,12322.352}; }; name="HC2"; init="this allowDamage false;"; isPlayable=1; id=167; type="HeadlessClient_F"; + atlOffset=5.244339; }; - class Item118 + class Item47 { dataType="Logic"; class PositionInfo { - position[]={8439.791,22.404831,24806.396}; + position[]={1183.4916,32.132164,12322.127}; }; name="HC3"; init="this allowDamage false;"; isPlayable=1; id=168; type="HeadlessClient_F"; + atlOffset=3.2021637; }; - class Item119 + class Item48 { dataType="Logic"; class PositionInfo { - position[]={8452.1084,23.873102,24806.844}; + position[]={1195.809,30.169785,12322.574}; }; name="HC4"; init="this allowDamage false;"; isPlayable=1; id=169; type="HeadlessClient_F"; + atlOffset=1.2397842; }; - class Item120 + class Item49 { dataType="Logic"; class PositionInfo { - position[]={8461.5146,24.935966,24807.293}; + position[]={1205.2152,28.93,12323.023}; }; name="HC5"; init="this allowDamage false;"; @@ -3006,40 +4019,91 @@ class Mission id=170; type="HeadlessClient_F"; }; - class Item121 + class Item50 { dataType="Logic"; class PositionInfo { - position[]={8418.7393,24.140474,24806.621}; + position[]={1162.4398,36.620186,12322.352}; }; name="HC1"; init="this allowDamage false;"; isPlayable=1; id=171; type="HeadlessClient_F"; + atlOffset=7.6901855; }; - class Item122 + class Item51 { dataType="Logic"; class PositionInfo { - position[]={8443.4609,37.155445,24839.758}; + position[]={1187.1615,31.614197,12355.488}; }; name="CTI_GUER"; id=172; type="Logic"; + atlOffset=2.6844673; + }; + class Item52 + { + dataType="Marker"; + position[]={9926.1279,0,3990.7314}; + name="HELO_START_18"; + type="Empty"; + colorName="ColorGreen"; + id=173; + atlOffset=-40.932705; + }; + class Item53 + { + dataType="Object"; + class PositionInfo + { + position[]={9746.9238,42.866806,3947.8401}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, ""Military Base"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town17"; + }; + id=174; + type="FlagPole_F"; + }; + class Item54 + { + dataType="Object"; + class PositionInfo + { + position[]={3215.5969,0.00044250488,2598.6411}; + angles[]={0,3.7178655,0}; + }; + side="Empty"; + class Attributes + { + name="carrier"; + }; + id=178; + type="Land_Carrier_01_base_F"; + atlOffset=73.230003; }; - class Item123 + class Item55 { dataType="Marker"; - position[]={505.74133,0,30224.15}; + position[]={10113.068,2.1960001,2211.3149}; name="marker_61"; - text="Visit our Discord: https://discord.gg/YhBUUSr"; - type="mil_warning"; - colorName="ColorWEST"; - id=177; - atlOffset=191.07422; + text="Wellcome area (Do not enter)"; + markerType="ELLIPSE"; + type="ellipse"; + colorName="ColorCIV"; + fillName="DiagGrid"; + a=500; + b=500; + id=179; + atlOffset=-0.00027227402; }; }; class Connections @@ -3589,4 +4653,4 @@ class OutroWin startFogDecay=0.0049999999; forecastFogDecay=0.0049999999; }; -}; +}; \ No newline at end of file From 42fd62f708111310f3f4bff89ec4a7f5b6d08c85 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Thu, 30 Aug 2018 21:52:49 +0200 Subject: [PATCH 003/267] Gitignore update --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index cb24a0a30..0546a5c1d 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,5 @@ $RECYCLE.BIN/ Network Trash Folder Temporary Items .apdisk + +mission.sqm \ No newline at end of file From eed4b12ef7e80e47a2f0f01a8ea7c5b8620ec1e1 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Thu, 30 Aug 2018 21:58:49 +0200 Subject: [PATCH 004/267] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 74a83d1a7..4de6821e4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Benny-Edition-CTI-0.97-Zerty-Modification +# Malden Version ## Monetization This mission (or code that I own inside) __cannot__ be used in a monetization process as defined by BiS at http://www.bistudio.com/monetization & http://www.bistudio.com/monetization/faq From 84688e9b68a4856f8388d51cb314065e043a9fab Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 25 Sep 2018 19:12:36 +0200 Subject: [PATCH 005/267] Optim continued --- Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf | 8 ++++---- Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf | 5 +++-- Addons/Strat_mode/FSM/town_occupation.fsm | 8 ++++---- Addons/Strat_mode/FSM/town_resistance.fsm | 8 ++++---- Addons/Strat_mode/Radar/ARTR_proj_handler.sqf | 2 +- Common/Functions/Common_CreateTeam.sqf | 2 +- Common/Functions/Common_CreateVehicle.sqf | 4 ++-- 7 files changed, 19 insertions(+), 18 deletions(-) diff --git a/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf b/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf index 37ff7e60b..d73e4ed79 100644 --- a/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf +++ b/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf @@ -55,19 +55,19 @@ if (_side in [east,west] ) then { _up_r=0; }; if (_vehicle isKindOf "Man") then {_max_distance=AN_Range_I+200*_up_r;} else {_max_distance=AN_Range_V+1000*_up_r;}; -if (_vehicle isKindOf "FlagPole_F") then {_max_distance=5000}; +if (_vehicle isKindOf "FlagPole_F") then {_max_distance=100000}; // Try to connect to closest CC if (_side in [east,west]) then { _structures = (_side) call CTI_CO_FNC_GetSideStructures; _ccs = [CTI_CONTROLCENTER, _structures] call CTI_CO_FNC_GetSideStructuresByType; - { if (_vehicle distance _x <= _max_distance) then {_candidates set [count _candidates,_x];}; true}count _ccs; + { if (_vehicle distance2D _x <= _max_distance) then {_candidates set [count _candidates,_x];}; true}count _ccs; }; // Try to connect to closest town if (count _candidates == 0 || _vehicle isKindOf "FlagPole_F"&& (_side in [east,west])) then { { _town=_x; - if (!(isNull _town) && !(_town == _vehicle) && _vehicle distance _town <= _max_distance && (_town getVariable "AN_iNet" == _side_id )&& ! (_x getVariable "AN_Conn" == _vehicle) && {_x == _vehicle} count (_x getVariable ["AN_Parrents",[]]) == 0 ) then + if (!(isNull _town) && !(_town == _vehicle) && _vehicle distance2D _town <= _max_distance && (_town getVariable "AN_iNet" == _side_id )&& ! (_x getVariable "AN_Conn" == _vehicle) && {_x == _vehicle} count (_x getVariable ["AN_Parrents",[]]) == 0 ) then { _candidates set [count _candidates,_town]; }; @@ -78,7 +78,7 @@ if (count _candidates == 0 || _vehicle isKindOf "FlagPole_F"&& (_side in [east,w // try to connect to the HQ if ((count _candidates == 0) && _side in [east,west]) then { _hq = (_side) call CTI_CO_FNC_GetSideHQ; - if ((_vehicle distance _hq <= _max_distance) && alive _hq) then { _candidates set [count _candidates,_hq]}; + if ((_vehicle distance2D _hq <= _max_distance) && alive _hq) then { _candidates set [count _candidates,_hq]}; }; // try to connect to another connected vehicle diff --git a/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf b/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf index f4661abc0..451a2e8ca 100644 --- a/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf +++ b/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf @@ -1,5 +1,6 @@ while {! CTI_GameOver && alive _this } do { - if (((! local _this) && _this isKindOf "Man") || !(isPlayer _this) && (_this in (playableUnits+switchableUnits)) || ((side _this) == resistance && _this isKindOf "Man") || !(alive _this)) exitwith {false}; - if !(_this call AN_Check_Connection) then { _this call AN_Reconfigure;}; + if (((! local _this) && _this isKindOf "Man") || !(isPlayer _this) && (_this in (playableUnits+switchableUnits)) || ((side _this) == resistance && _this isKindOf "Man") || !(alive _this)) exitwith {if (NET_LOG) then {diag_log format [":: NET :: Canceling reconfiguration process for %1",_this]};false}; + if (NET_LOG) then {diag_log format [":: NET :: Running reconfiguration process for %1",_this]}; + _this call AN_Reconfigure; sleep 10+random(10); }; \ No newline at end of file diff --git a/Addons/Strat_mode/FSM/town_occupation.fsm b/Addons/Strat_mode/FSM/town_occupation.fsm index a43091f59..95a7d0aea 100644 --- a/Addons/Strat_mode/FSM/town_occupation.fsm +++ b/Addons/Strat_mode/FSM/town_occupation.fsm @@ -2,8 +2,8 @@ /*%FSM*/ /* item0[] = {"Start_FSM",0,250,-100.000000,-800.000000,0.000000,-750.000000,0.000000,"Start FSM"}; -item1[] = {"Cycle",4,4314,-100.000000,-400.000000,0.000000,-350.000000,1.000000,"Cycle"}; -item2[] = {"Occupation_hold",2,250,-100.000000,-200.000000,0.000000,-150.000000,0.000000,"Occupation hold" \n "the town?"}; +item1[] = {"Cycle",4,218,-100.000000,-400.000000,0.000000,-350.000000,1.000000,"Cycle"}; +item2[] = {"Occupation_hold",2,4346,-100.000000,-200.000000,0.000000,-150.000000,0.000000,"Occupation hold" \n "the town?"}; item3[] = {"End_FSM",1,250,-250.000000,-100.000000,-150.000000,-50.000000,0.000000,"End FSM"}; item4[] = {"Held_by_Occupati",4,218,-100.000000,-100.000000,0.000000,-50.000000,2.000000,"Held by" \n "Occupation"}; item5[] = {"Gameover",8,218,-250.000000,-200.000000,-150.000000,-150.000000,0.000000,"Gameover"}; @@ -56,7 +56,7 @@ link27[] = {21,8}; link28[] = {22,1}; link29[] = {23,13}; globals[] = {0.000000,0,0,0,0,640,480,1,177,6316128,1,-582.603027,790.527588,465.883545,-1210.282837,725,885,1}; -window[] = {2,-1,-1,-1,-1,837,225,1261,225,3,743}; +window[] = {2,-1,-1,-1,-1,812,200,1236,200,3,743}; *//*%FSM*/ class FSM { @@ -103,7 +103,7 @@ class FSM { name = "Occupation_hold"; itemno = 2; - init = /*%FSM*/"_ncycle = time +2;" \n + init = /*%FSM*/"_ncycle = time +5;" \n "" \n "_sideID = _town getVariable ""cti_town_sideID"";" \n "_side = (_sideID) call CTI_CO_FNC_GetSideFromID;"/*%FSM*/; diff --git a/Addons/Strat_mode/FSM/town_resistance.fsm b/Addons/Strat_mode/FSM/town_resistance.fsm index a49aae617..33ea87a4b 100644 --- a/Addons/Strat_mode/FSM/town_resistance.fsm +++ b/Addons/Strat_mode/FSM/town_resistance.fsm @@ -2,8 +2,8 @@ /*%FSM*/ /* item0[] = {"Start_FSM",0,250,-86.275269,-615.525940,13.724731,-565.525940,0.000000,"Start FSM"}; -item1[] = {"Cycle",4,4314,-100.000000,-400.000000,0.000000,-350.000000,1.000000,"Cycle"}; -item2[] = {"Resistance_hold",2,250,-100.000000,-200.000000,0.000000,-150.000000,0.000000,"Resistance hold" \n "the town?"}; +item1[] = {"Cycle",4,218,-100.000000,-400.000000,0.000000,-350.000000,1.000000,"Cycle"}; +item2[] = {"Resistance_hold",2,4346,-100.000000,-200.000000,0.000000,-150.000000,0.000000,"Resistance hold" \n "the town?"}; item3[] = {"End_FSM",1,250,-250.000000,-100.000000,-150.000000,-50.000000,0.000000,"End FSM"}; item4[] = {"Held_by_Resistan",4,218,-100.000000,-100.000000,0.000000,-50.000000,2.000000,"Held by" \n "Resistance"}; item5[] = {"Gameover",8,218,-250.000000,-200.000000,-150.000000,-150.000000,0.000000,"Gameover"}; @@ -56,7 +56,7 @@ link27[] = {21,8}; link28[] = {22,1}; link29[] = {23,13}; globals[] = {0.000000,0,0,0,0,640,480,1,173,6316128,1,-1091.492065,1056.436035,832.636719,-1191.768555,939,885,1}; -window[] = {2,-1,-1,-1,-1,712,100,1136,100,3,957}; +window[] = {2,-1,-1,-1,-1,662,50,1086,50,3,957}; *//*%FSM*/ class FSM { @@ -102,7 +102,7 @@ class FSM name = "Resistance_hold"; itemno = 2; init = /*%FSM*/"" \n - "_ncycle = time +2 ;" \n + "_ncycle = time +5 ;" \n "" \n "_sideID = _town getVariable ""cti_town_sideID"";"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; diff --git a/Addons/Strat_mode/Radar/ARTR_proj_handler.sqf b/Addons/Strat_mode/Radar/ARTR_proj_handler.sqf index 5f4f4a2e1..ea87cf9d9 100644 --- a/Addons/Strat_mode/Radar/ARTR_proj_handler.sqf +++ b/Addons/Strat_mode/Radar/ARTR_proj_handler.sqf @@ -11,5 +11,5 @@ _seed= diag_frameno+floor(random (10000)); [["CLIENT",_side], "Client_ARTR_marker",[_seed,_init_pos],true] call CTI_CO_FNC_NetSend; while {!isnull _proj} do { [["CLIENT",_side], "Client_ARTR_update",[_seed,_init_pos,getpos _proj],true] call CTI_CO_FNC_NetSend; - sleep 2; + sleep 5; }; diff --git a/Common/Functions/Common_CreateTeam.sqf b/Common/Functions/Common_CreateTeam.sqf index 3da36fb89..3b4e92764 100644 --- a/Common/Functions/Common_CreateTeam.sqf +++ b/Common/Functions/Common_CreateTeam.sqf @@ -8,7 +8,7 @@ _locked = if (count _this > 4) then {_this select 4} else {true}; _net = if (count _this > 5) then {_this select 5} else {false}; _bounty = if (count _this > 6) then {_this select 6} else {false}; -if (_side == resistance) then {_net=false}; +_net=false; _sideID = (_side) call CTI_CO_FNC_GetSideID; //if (isNull _group) then {_group = createGroup _side}; diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index 728d65b8e..a4ac1dd94 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -260,7 +260,7 @@ if ((missionNamespace getVariable [format ["%1", typeOf _vehicle],["","","",""," if (_locked && !( _vehicle isKindOf "Thing") && !( _vehicle isKindOf "StaticWeapon") && !( _vehicle isKindOf "UAV") && !( _vehicle isKindOf "UGV_01_base_F") && !( _vehicle isKindOf "B_T_UAV_03_dynamicLoadout_F")) then {_vehicle lock 2} else {_vehicle lock 0}; -if (_net) then {_vehicle setVariable ["cti_net", _side, true]}; +if (_net && !( _vehicle isKindOf "Thing")) then {_vehicle setVariable ["cti_net", _side, true]}; if (_handle) then { _vehicle addEventHandler ["killed", format["[_this select 0, _this select 1, %1] spawn CTI_CO_FNC_OnUnitKilled", _side]]; //--- Called on destruction _vehicle addEventHandler ["hit", {_this spawn CTI_CO_FNC_OnUnitHit}]; //--- Register importants hits @@ -272,7 +272,7 @@ if (_handle) then { //disable net for offroads (JIP issue with BIS bug) + static load -if (_net &&missionNamespace getVariable "CTI_EW_ANET" == 1 && !(_side == CTI_RESISTANCE_ID)) then { +if (_net &&missionNamespace getVariable "CTI_EW_ANET" == 1 && !(_side == CTI_RESISTANCE_ID)&& !( _vehicle isKindOf "Thing")) then { ["SERVER","Server_Run_Net",[_vehicle,_side]] call CTI_CO_FNC_NetSend; }; From 66c01bb3c681bb6859ed36f35a87f6a7f1bae451 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 25 Sep 2018 19:45:37 +0200 Subject: [PATCH 006/267] Optimisation continued --- Addons/Strat_mode/AdvNet/AN_CheckConn.sqf | 8 ++++++++ Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf | 3 +-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/AdvNet/AN_CheckConn.sqf b/Addons/Strat_mode/AdvNet/AN_CheckConn.sqf index d9b59886e..4a94e5a3b 100644 --- a/Addons/Strat_mode/AdvNet/AN_CheckConn.sqf +++ b/Addons/Strat_mode/AdvNet/AN_CheckConn.sqf @@ -10,8 +10,16 @@ _vehicle getVariable "CTI_Net" private ["_vehicle","_side_id","_side","_forced","_connection","_max_distance","_up","_up_r"]; if (CTI_isServer) then {waituntil {CTI_Init_Server}}; _vehicle = _this; + + + if !(alive _vehicle) exitWith {false}; + + +//resistance town no need to run reconnect: +if ((_vehicle isKindOf "FlagPole_F") && (_vehicle getVariable ["cti_town_sideID",CTI_RESISTANCE_ID]) == CTI_RESISTANCE_ID) exitWith {true}; + _side_id=_vehicle getVariable ["CTI_Net",-11]; if (_side_id < 0 ) exitWith {false}; _side =(_side_id) call CTI_CO_FNC_GetSideFromID; diff --git a/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf b/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf index 451a2e8ca..56e0f848b 100644 --- a/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf +++ b/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf @@ -1,6 +1,5 @@ while {! CTI_GameOver && alive _this } do { if (((! local _this) && _this isKindOf "Man") || !(isPlayer _this) && (_this in (playableUnits+switchableUnits)) || ((side _this) == resistance && _this isKindOf "Man") || !(alive _this)) exitwith {if (NET_LOG) then {diag_log format [":: NET :: Canceling reconfiguration process for %1",_this]};false}; - if (NET_LOG) then {diag_log format [":: NET :: Running reconfiguration process for %1",_this]}; - _this call AN_Reconfigure; + if !(_this call AN_Check_Connection) then {if (NET_LOG) then {diag_log format [":: NET :: Trying to reconfigure %1 ",_this]};_this call AN_Reconfigure}; sleep 10+random(10); }; \ No newline at end of file From 659837f610b3a563ed4da7cca363a15dbb48f850 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 25 Sep 2018 23:07:56 +0200 Subject: [PATCH 007/267] Problem with cleanup of defense tasks --- Addons/Strat_mode/Functions/TASKS_loop.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Functions/TASKS_loop.sqf b/Addons/Strat_mode/Functions/TASKS_loop.sqf index eda7380c8..c1fa4251e 100644 --- a/Addons/Strat_mode/Functions/TASKS_loop.sqf +++ b/Addons/Strat_mode/Functions/TASKS_loop.sqf @@ -46,7 +46,7 @@ while {!CTI_GAMEOVER} do { if ((_x select 0 )== CTI_TASK_TYPE_DEFEND ) then { _town=_x select 1 ; - if ((_town getvariable ["cti_town_sideID",-1]) == _sideID && !((_town getvariable ["cti_town_occupation_active",false]) || (_town getvariable ["cti_town_resistance_active",false]) ) ) then {_to_delete pushBackUnique _forEachIndex}; + if ((_town getvariable ["cti_town_sideID",-1]) == _sideID && !((_town getvariable ["cti_town_occupation_active",false]) && (_town getvariable ["cti_town_resistance_active",false]) ) ) then {_to_delete pushBackUnique _forEachIndex}; }; } foreach TASKS_LIST; From ed88626e5a7752c4484a8d48b886bc4abd2360d3 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 25 Sep 2018 23:23:43 +0200 Subject: [PATCH 008/267] Task clenup process moved --- Addons/Strat_mode/Functions/TASKS_loop.sqf | 27 ++++++++++++---------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/Addons/Strat_mode/Functions/TASKS_loop.sqf b/Addons/Strat_mode/Functions/TASKS_loop.sqf index c1fa4251e..283074545 100644 --- a/Addons/Strat_mode/Functions/TASKS_loop.sqf +++ b/Addons/Strat_mode/Functions/TASKS_loop.sqf @@ -51,18 +51,6 @@ while {!CTI_GAMEOVER} do } foreach TASKS_LIST; - // DO THE CLEANUP - - { - _task=TASKS_LIST select _x; - [(_task select 2), "CANCELED", false] call BIS_fnc_taskSetState; - [(_task select 2) ] call BIS_fnc_deleteTask; - true - } count _to_delete; - { - TASKS_LIST deleteAt _x; - true - } count _to_delete; //***************************************************************** //********************** TASK CREATION **************************** @@ -110,6 +98,21 @@ while {!CTI_GAMEOVER} do true } count (_logic getVariable ["CTI_TOWNS",[]]); + + // DO THE CLEANUP + + { + _task=TASKS_LIST select _x; + [(_task select 2), "CANCELED", false] call BIS_fnc_taskSetState; + [(_task select 2) ] call BIS_fnc_deleteTask; + true + } count _to_delete; + { + TASKS_LIST deleteAt _x; + true + } count _to_delete; + + //wait some time sleep 3; }; \ No newline at end of file From 27ce07fa7dd6035e5e5f688b80383188e7a9a998 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Wed, 26 Sep 2018 18:51:31 +0200 Subject: [PATCH 009/267] Tasks still unstable simplification --- Addons/Strat_mode/Functions/TASKS_loop.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Addons/Strat_mode/Functions/TASKS_loop.sqf b/Addons/Strat_mode/Functions/TASKS_loop.sqf index 283074545..153eaaa31 100644 --- a/Addons/Strat_mode/Functions/TASKS_loop.sqf +++ b/Addons/Strat_mode/Functions/TASKS_loop.sqf @@ -36,7 +36,7 @@ while {!CTI_GAMEOVER} do { if ((_x select 0 )== CTI_TASK_TYPE_ATTACK ) then { _town=_x select 1 ; - if ((_town getVariable ["cti_town_sideID",-1] == _sideID) || ((_active_towns find _town) == -1 && (_logic getVariable ["CTI_PRIORITY",objNull]) != _town) ) then {_to_delete pushBackUnique _forEachIndex}; + if ( (_active_towns find _town) == -1 ) then {_to_delete pushBackUnique _forEachIndex}; }; @@ -46,7 +46,7 @@ while {!CTI_GAMEOVER} do { if ((_x select 0 )== CTI_TASK_TYPE_DEFEND ) then { _town=_x select 1 ; - if ((_town getvariable ["cti_town_sideID",-1]) == _sideID && !((_town getvariable ["cti_town_occupation_active",false]) && (_town getvariable ["cti_town_resistance_active",false]) ) ) then {_to_delete pushBackUnique _forEachIndex}; + if ((_town getvariable ["cti_town_sideID",-1]) == _sideID && !(_town getvariable ["cti_town_occupation_active",false]) ) then {_to_delete pushBackUnique _forEachIndex}; }; } foreach TASKS_LIST; @@ -87,7 +87,7 @@ while {!CTI_GAMEOVER} do // DEFEND TASKS { _town=_x; - if ((_town getvariable ["cti_town_sideID",-1]) == _sideID && ((_town getvariable ["cti_town_occupation_active",false]) || (_town getvariable ["cti_town_resistance_active",false]) ) ) then { + if ((_town getvariable ["cti_town_sideID",-1]) == _sideID && (_town getvariable ["cti_town_occupation_active",false]) ) then { if ((TASKS_LIST findif {(_x select 0) == CTI_TASK_TYPE_DEFEND && (_x select 1) == _town}) == -1) then { _taskname=format ["D_%1_%2",ceil(random(100000)),ceil(time)]; TASKS_LIST pushBack [CTI_TASK_TYPE_DEFEND,_town,_taskname]; From 02008a57a03c3031c0d7992bc4b69a2318462b9a Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Wed, 26 Sep 2018 19:11:11 +0200 Subject: [PATCH 010/267] Network optim continued --- Addons/Strat_mode/AdvNet/AN_CheckConn.sqf | 1 + Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Addons/Strat_mode/AdvNet/AN_CheckConn.sqf b/Addons/Strat_mode/AdvNet/AN_CheckConn.sqf index 4a94e5a3b..245eae3da 100644 --- a/Addons/Strat_mode/AdvNet/AN_CheckConn.sqf +++ b/Addons/Strat_mode/AdvNet/AN_CheckConn.sqf @@ -33,6 +33,7 @@ _connection=_vehicle getVariable ["AN_Conn",objNull]; // disconnected if (isNull _connection ) exitWith {false}; + //dead if !(alive _connection ) exitWith {false}; diff --git a/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf b/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf index 56e0f848b..2888d891f 100644 --- a/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf +++ b/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf @@ -1,5 +1,5 @@ while {! CTI_GameOver && alive _this } do { if (((! local _this) && _this isKindOf "Man") || !(isPlayer _this) && (_this in (playableUnits+switchableUnits)) || ((side _this) == resistance && _this isKindOf "Man") || !(alive _this)) exitwith {if (NET_LOG) then {diag_log format [":: NET :: Canceling reconfiguration process for %1",_this]};false}; - if !(_this call AN_Check_Connection) then {if (NET_LOG) then {diag_log format [":: NET :: Trying to reconfigure %1 ",_this]};_this call AN_Reconfigure}; + if (!(_this call AN_Check_Connection) && ( _this getVariable ["CTI_NET",-1]) > 0) then {if (NET_LOG) then {diag_log format [":: NET :: Trying to reconfigure %1 ",_this]};_this call AN_Reconfigure}; sleep 10+random(10); }; \ No newline at end of file From 473991a2ef7b5fe6521106f101ff46908f6260fa Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Wed, 26 Sep 2018 19:33:35 +0200 Subject: [PATCH 011/267] SOme stuff --- Addons/Strat_mode/AdvNet/AN_Launch.sqf | 2 +- Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/AdvNet/AN_Launch.sqf b/Addons/Strat_mode/AdvNet/AN_Launch.sqf index b8ce7ece5..6a0d2d6bd 100644 --- a/Addons/Strat_mode/AdvNet/AN_Launch.sqf +++ b/Addons/Strat_mode/AdvNet/AN_Launch.sqf @@ -1,5 +1,5 @@ private ["_vehicle","_side_id"]; -_vehicle = _this select 0; +_vehicle = vehicle (_this select 0); _side_id= _this select 1; if (NET_LOG) then {diag_log format [":: NET :: Trying to launch for %1 with sideid %2",_vehicle,_side_id]}; if ! (isNil {_vehicle getVariable "AN_iNet"}) exitWith {false}; diff --git a/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf b/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf index 2888d891f..58389e873 100644 --- a/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf +++ b/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf @@ -1,5 +1,5 @@ while {! CTI_GameOver && alive _this } do { if (((! local _this) && _this isKindOf "Man") || !(isPlayer _this) && (_this in (playableUnits+switchableUnits)) || ((side _this) == resistance && _this isKindOf "Man") || !(alive _this)) exitwith {if (NET_LOG) then {diag_log format [":: NET :: Canceling reconfiguration process for %1",_this]};false}; - if (!(_this call AN_Check_Connection) && ( _this getVariable ["CTI_NET",-1]) > 0) then {if (NET_LOG) then {diag_log format [":: NET :: Trying to reconfigure %1 ",_this]};_this call AN_Reconfigure}; + if (( _this getVariable ["CTI_NET",-1]) > 0 && !(_this call AN_Check_Connection) ) then {if (NET_LOG) then {diag_log format [":: NET :: Trying to reconfigure %1 ",_this]};_this call AN_Reconfigure}; sleep 10+random(10); }; \ No newline at end of file From b3f9a60ad472180cb57552c3179f3ffc97567532 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Wed, 26 Sep 2018 20:23:39 +0200 Subject: [PATCH 012/267] Network continued --- Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf | 2 +- Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf b/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf index d73e4ed79..5c3bb3d3d 100644 --- a/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf +++ b/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf @@ -64,7 +64,7 @@ if (_side in [east,west]) then { { if (_vehicle distance2D _x <= _max_distance) then {_candidates set [count _candidates,_x];}; true}count _ccs; }; // Try to connect to closest town -if (count _candidates == 0 || _vehicle isKindOf "FlagPole_F"&& (_side in [east,west])) then { +if (count _candidates == 0 ) then { { _town=_x; if (!(isNull _town) && !(_town == _vehicle) && _vehicle distance2D _town <= _max_distance && (_town getVariable "AN_iNet" == _side_id )&& ! (_x getVariable "AN_Conn" == _vehicle) && {_x == _vehicle} count (_x getVariable ["AN_Parrents",[]]) == 0 ) then diff --git a/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf b/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf index 58389e873..245f9e5da 100644 --- a/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf +++ b/Addons/Strat_mode/AdvNet/AN_Reconfigure_Loop.sqf @@ -1,5 +1,5 @@ while {! CTI_GameOver && alive _this } do { if (((! local _this) && _this isKindOf "Man") || !(isPlayer _this) && (_this in (playableUnits+switchableUnits)) || ((side _this) == resistance && _this isKindOf "Man") || !(alive _this)) exitwith {if (NET_LOG) then {diag_log format [":: NET :: Canceling reconfiguration process for %1",_this]};false}; - if (( _this getVariable ["CTI_NET",-1]) > 0 && !(_this call AN_Check_Connection) ) then {if (NET_LOG) then {diag_log format [":: NET :: Trying to reconfigure %1 ",_this]};_this call AN_Reconfigure}; + if (( _this getVariable ["CTI_NET",-1]) >= 0 && !(_this call AN_Check_Connection) ) then {if (NET_LOG) then {diag_log format [":: NET :: Trying to reconfigure %1 ",_this]};_this call AN_Reconfigure}; sleep 10+random(10); }; \ No newline at end of file From 50e8dd580278e7e3f7119e0f9448268a8cc1673d Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Wed, 26 Sep 2018 22:10:06 +0200 Subject: [PATCH 013/267] Disabled net on foot soldier when parameter is false --- Common/Functions/Common_CreateUnit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/Functions/Common_CreateUnit.sqf b/Common/Functions/Common_CreateUnit.sqf index 56ef98779..732ca0785 100644 --- a/Common/Functions/Common_CreateUnit.sqf +++ b/Common/Functions/Common_CreateUnit.sqf @@ -210,7 +210,7 @@ if (_net) then {_unit setVariable ["cti_net", _sideID, true]}; _unit addEventHandler ["killed", format["[_this select 0, _this select 1, %1] spawn CTI_CO_FNC_OnUnitKilled", _sideID]]; //Adv network -if (missionNamespace getVariable "CTI_EW_ANET" == 1 && !(_sideID == CTI_RESISTANCE_ID)) then { +if (_net && missionNamespace getVariable "CTI_EW_ANET" == 1 && !(_sideID == CTI_RESISTANCE_ID)) then { //["SERVER","Server_Run_Net",[_unit,_sideID]] call CTI_CO_FNC_NetSend; [_unit,_sideID] spawn AN_Launch; }; From 97478d439737022abfbba87f5ee02791257ccbfb Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 29 Sep 2018 14:07:20 +0200 Subject: [PATCH 014/267] No Spawn in locked hq maybe this way? --- Client/Functions/UI/Functions_UI_RespawnMenu.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf index 30a66b14d..a467acfc1 100644 --- a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf +++ b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf @@ -245,7 +245,7 @@ CTI_UI_Respawn_OnRespawnReady = { CTI_P_LastRespawnTime=time; if !(_respawn_ai) then { //--- Stock respawn - if ((_where isKindOf "Car" || _where isKindOf "Wheeled_APC_F" || _where isKindOf "Land_Pod_Heli_Transport_04_medevac_F") && (_where emptyPositions "cargo")>0 && (locked _where < 2 || abs (speed _where) > 5) ) then { + if ((_where isKindOf "Car" || _where isKindOf "Wheeled_APC_F" || _where isKindOf "Land_Pod_Heli_Transport_04_medevac_F") && (_where emptyPositions "cargo")>0 && (locked _where) < 2 && abs (speed _where) < 5) then { //Respawn in vehicles cargo player moveInCargo _where; } else { From ac989ed404e98784b44fafdf6d585d72c22ce433 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 30 Sep 2018 19:40:04 +0200 Subject: [PATCH 015/267] Fix for Air Radar --- Addons/Strat_mode/Radar/AIRR_obj_handler.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Radar/AIRR_obj_handler.sqf b/Addons/Strat_mode/Radar/AIRR_obj_handler.sqf index 527fe2245..fe5172db2 100644 --- a/Addons/Strat_mode/Radar/AIRR_obj_handler.sqf +++ b/Addons/Strat_mode/Radar/AIRR_obj_handler.sqf @@ -24,7 +24,7 @@ if (! _adv_net) then { //try to register in Hud targets while {!CTI_GameOver && alive _vehicle && alive _radar} do { _alt=((getposASL _vehicle) select 2 ) min ((getposATL _vehicle) select 2 ); - if ( ([_vehicle,_radar] call BIS_fnc_distance2D) < Radar_Range && _alt >= Min_Alt && !(terrainIntersect [_top_radar,(getPosATL _vehicle)]) && {_x == _vehicle} count (_sl getVariable "CTI_HUD_SHARED") == 0 && !((_vehicle getvariable ["CTI_Net",-10]) == (_side call CTI_CO_FNC_GetSideID)) ) then { + if ( ([_vehicle,_radar] call BIS_fnc_distance2D) < Radar_Range && _alt >= Min_Alt && !(terrainIntersect [_top_radar,(getPosATL _vehicle)]) && ((_sl getVariable "CTI_HUD_SHARED") findif {_x select 0 == _vehicle && _x select 1 > time}) > -1 && !((_vehicle getvariable ["CTI_Net",-10]) == (_side call CTI_CO_FNC_GetSideID)) ) then { //diag_log format [":: AIR Radar ::%1::%2:: Detected by %3",_vehicle,_side,_radar]; ["SERVER", "Server_Hud_Share_Add",[[_vehicle],_side]] call CTI_CO_FNC_NetSend; //we use the netPV to not do strange stuff [["CLIENT",_side], "Client_AIRR_touched"] call CTI_CO_FNC_NetSend;//for the hud From 520bf5890e156f77d4564478b6d801114baddba7 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 30 Sep 2018 19:41:46 +0200 Subject: [PATCH 016/267] Some error fix --- Server/Functions/Server_HandleStructureConstruction.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/Functions/Server_HandleStructureConstruction.sqf b/Server/Functions/Server_HandleStructureConstruction.sqf index c765f519d..34b3221b4 100644 --- a/Server/Functions/Server_HandleStructureConstruction.sqf +++ b/Server/Functions/Server_HandleStructureConstruction.sqf @@ -78,7 +78,7 @@ waitUntil { _structure getVariable ["cti_completion",-1] >= 100 || time >_timeou _logic = (_side) call CTI_CO_FNC_GetSideLogic; _logic setVariable ["cti_structures_wip", (_logic getVariable "cti_structures_wip") - [_structure, objNull],true]; -_completion = _structure getVariable "cti_completion"; +_completion = _structure getVariable ["cti_completion",10]; _completion_ratio = _structure getVariable "cti_completion_ratio"; deleteVehicle _structure; From 639e41f22d39cba21364b3f8d869c41ef5158981 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 30 Sep 2018 21:13:54 +0200 Subject: [PATCH 017/267] Prenvents stacking of EH --- Client/Functions/Client_AddMissionActions.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Client/Functions/Client_AddMissionActions.sqf b/Client/Functions/Client_AddMissionActions.sqf index 2bab865b3..6e39d42ce 100644 --- a/Client/Functions/Client_AddMissionActions.sqf +++ b/Client/Functions/Client_AddMissionActions.sqf @@ -27,7 +27,7 @@ if (! isNil "HUD_PBar_stop" ) then {0 call HUD_PBar_stop}; //player addaction ["Online Help",'createdialog "CTI_RscTabletOnlineHelpMenu";', [], -99]; //titleCut["","BLACK IN",1]; - +player removeAllEventHandlers "InventoryOpened"; player addEventHandler ["InventoryOpened",{ if !(simulationEnabled (_this select 1)) then { (_this select 1) enableSimulation true; @@ -43,6 +43,7 @@ if(((CTI_P_SideJoined) call CTI_CO_FNC_GetSideUpgrades) select CTI_UPGRADE_DATA player setVehicleReportRemoteTargets true; player setVehicleReceiveRemoteTargets true; };}; +player removeAllEventHandlers "WeaponAssembled"; if (missionNamespace getVariable "CTI_SM_RADAR" == 1) then { player addEventHandler ["WeaponAssembled",{["SERVER", "Server_ARTR_handle",(_this select 1)] call CTI_CO_FNC_NetSend;["SERVER", "Request_HandleAction", ["empty", [(_this select 1)]]] call CTI_CO_FNC_NetSend;}]; From 335bfe2d886115d7e7dd000691aa31a4901046be Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 30 Sep 2018 21:40:50 +0200 Subject: [PATCH 018/267] small correction on net --- Addons/Strat_mode/AdvNet/AN_Launch.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/AdvNet/AN_Launch.sqf b/Addons/Strat_mode/AdvNet/AN_Launch.sqf index 6a0d2d6bd..588520288 100644 --- a/Addons/Strat_mode/AdvNet/AN_Launch.sqf +++ b/Addons/Strat_mode/AdvNet/AN_Launch.sqf @@ -2,13 +2,13 @@ private ["_vehicle","_side_id"]; _vehicle = vehicle (_this select 0); _side_id= _this select 1; if (NET_LOG) then {diag_log format [":: NET :: Trying to launch for %1 with sideid %2",_vehicle,_side_id]}; -if ! (isNil {_vehicle getVariable "AN_iNet"}) exitWith {false}; +//if ! (isNil {_vehicle getVariable "AN_iNet"}) exitWith {false}; //diag_log format ["Starting networking for %1 side %2", _this select 0 , _this select 1]; if (isNil {_vehicle getVariable "CTI_Net"}) then {_vehicle setVariable ["CTI_Net",_side_id,true];}; if (isNil {_vehicle getVariable "AN_Conn"}) then {_vehicle setVariable ["AN_Conn",objNull,false];}; if (isNil {_vehicle getVariable "AN_iNet"}) then {_vehicle setVariable ["AN_iNet",-1,false];}; if (isNil {_vehicle getVariable "AN_Parrents"}) then {_vehicle setVariable ["AN_Parrents",[],false];}; -waitUntil {! (isNil {_vehicle getVariable "CTI_Net"} || isNil {_vehicle getVariable "AN_Conn"} || isNil {_vehicle getVariable "AN_iNet"} || isNil {_vehicle getVariable "CTI_Net"})}; +waitUntil {! (isNil {_vehicle getVariable "CTI_Net"} || isNil {_vehicle getVariable "AN_Conn"} || isNil {_vehicle getVariable "AN_iNet"} || isNil {_vehicle getVariable "AN_Parrents"})}; if (NET_LOG) then {diag_log format [":: NET :: Launching for %1 with sideid %2",_vehicle,_side_id]}; _vehicle spawn AN_Update_Connection; (_vehicle) spawn AN_Reconfigure_loop; \ No newline at end of file From db72d5eb51e09e81ca2101bce25e7e3076f79d6f Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 1 Oct 2018 16:38:35 +0200 Subject: [PATCH 019/267] dynamic loadout, adjustments --- Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf b/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf index 9bd0d3789..a7987d50e 100644 --- a/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf +++ b/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf @@ -1089,10 +1089,10 @@ CTI_LOADOUT_B_Heli_Transport_01_F_MNT_OPTIONS = [ ["CMFlareLauncher" , [ - [ "240Rnd_CMFlare_Chaff_Magazine" , "2000" , [0] ], - [ "120Rnd_CMFlare_Chaff_Magazine" , "500" , [0] ], - [ "168Rnd_CMFlare_Chaff_Magazine" , "1000" , [0] ], - [ "192Rnd_CMFlare_Chaff_Magazine" , "1500" , [0] ] + [ "240Rnd_CMFlare_Chaff_Magazine" , "2000" , [-1] ], + [ "120Rnd_CMFlare_Chaff_Magazine" , "500" , [-1] ], + [ "168Rnd_CMFlare_Chaff_Magazine" , "1000" , [-1] ], + [ "192Rnd_CMFlare_Chaff_Magazine" , "1500" , [-1] ] ] ] ], @@ -1619,7 +1619,9 @@ CTI_LOADOUT_B_UAV_05_F_MNT_OPTIONS = [ "PylonMissile_Bomb_GBU12_x1" , "5000" , [0]], [ "PylonMissile_Missile_AGM_02_x2" , "10000" , [0]], [ "PylonMissile_1Rnd_BombCluster_01_F" , "1000" , [0]], - [ "PylonMissile_1Rnd_BombCluster_03_F" , "1000" , [0]] + [ "PylonMissile_1Rnd_BombCluster_03_F" , "1000" , [0]], + [ "PylonMissile_Missile_HARM_INT_x1" , "10000" , [0]], + [ "PylonRack_Bomb_SDB_x4" , "5000" , [0]] ] ] ], @@ -1629,7 +1631,9 @@ CTI_LOADOUT_B_UAV_05_F_MNT_OPTIONS = [ "PylonMissile_Bomb_GBU12_x1" , "5000" , [0]], [ "PylonMissile_Missile_AGM_02_x2" , "10000" , [0]], [ "PylonMissile_1Rnd_BombCluster_01_F" , "1000" , [0]], - [ "PylonMissile_1Rnd_BombCluster_03_F" , "1000" , [0]] + [ "PylonMissile_1Rnd_BombCluster_03_F" , "1000" , [0]], + [ "PylonMissile_Missile_HARM_INT_x1" , "10000" , [0]], + [ "PylonRack_Bomb_SDB_x4" , "5000" , [0]] ] ] ], From 096086628110ca75aea7320114763b5cd59e6607 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 1 Oct 2018 17:17:14 +0200 Subject: [PATCH 020/267] #254 preventing multiple HQ repairs at the same time --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 2 +- Client/Actions/Action_RepairHQ.sqf | 6 ++++-- Server/Init/Init_Server.sqf | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index ae9126830..3a03f6d70 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -298,7 +298,7 @@ switch (_action) do { }; case 22: { // CTI_Icon_rephq if ((missionNamespace getVariable "CTI_BASE_HQ_REPAIR") > 0 && (missionNamespace getVariable [format ["%1", typeOf _target],["","","","","","","",""]]) select 7 == "service-repairtruck" && !alive(CTI_P_SideJoined call CTI_CO_FNC_GetSideHQ) ) then { - if ((CTI_P_SideJoined call CTI_CO_FNC_GetSideHQ) distance _target <= CTI_BASE_HQ_REPAIR_RANGE && (0 call CTI_CL_FNC_GetPlayerFunds) >= CTI_BASE_HQ_REPAIR_PRICE) then { + if ((CTI_P_SideJoined call CTI_CO_FNC_GetSideHQ) distance _target <= CTI_BASE_HQ_REPAIR_RANGE && (0 call CTI_CL_FNC_GetPlayerFunds) >= CTI_BASE_HQ_REPAIR_PRICE && !(missionNamespace getVariable [format["CTI_HQ_Repair_Lock_%1", CTI_P_SideJoined], false])) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; }else { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0.3,0.3,0.3,1]; diff --git a/Client/Actions/Action_RepairHQ.sqf b/Client/Actions/Action_RepairHQ.sqf index a49642f1b..b798664f1 100644 --- a/Client/Actions/Action_RepairHQ.sqf +++ b/Client/Actions/Action_RepairHQ.sqf @@ -2,7 +2,8 @@ _vehicle = _this select 0; _hq = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideHQ; CTI_P_LastRepairTime = time; - +if(missionNamespace getVariable [format["CTI_HQ_Repair_Lock_%1", CTI_P_SideJoined], false]) exitWith {}; +missionNamespace setVariable [format["CTI_HQ_Repair_Lock_%1", CTI_P_SideJoined], true, true]; if (alive _hq) exitWith {}; //--- Don't bother if the HQ is alive _base_repair_HQ_cost = CTI_BASE_HQ_REPAIR_PRICE; @@ -44,4 +45,5 @@ if (_hq distance _vehicle <= CTI_BASE_HQ_REPAIR_RANGE) then { } else { hint parseText format[localize "STR_Needed_RepairHQ", CTI_P_Coloration_Money, _base_repair_HQ_cost]; }; -}; \ No newline at end of file +}; +missionNamespace setVariable [format["CTI_HQ_Repair_Lock_%1", CTI_P_SideJoined], false, true]; \ No newline at end of file diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index d5764aa3c..082fb4336 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -62,6 +62,8 @@ execVM "Server\Init\Init_Prison.sqf"; execVM "Addons\Strat_mode\Functions\TUTORIAL_Init.sqf"; CTI_Structure_Lock=False; +CTI_HQ_Repair_Lock_EAST=False; +CTI_HQ_Repair_Lock_WEST=False; CTI_Worker_Lock=False; From adbdc8210745ab04bd1fc525ee8bf7a10d9a2a85 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 1 Oct 2018 17:52:36 +0200 Subject: [PATCH 021/267] #254 improved HQ repair lock --- Client/Actions/Action_RepairHQ.sqf | 4 +++- Server/Functions/Server_RepairHQ.sqf | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Client/Actions/Action_RepairHQ.sqf b/Client/Actions/Action_RepairHQ.sqf index b798664f1..15f165f83 100644 --- a/Client/Actions/Action_RepairHQ.sqf +++ b/Client/Actions/Action_RepairHQ.sqf @@ -11,6 +11,7 @@ _base_repair_HQ_cost = CTI_BASE_HQ_REPAIR_PRICE; if(scoreSide CTI_P_SideJoined <= 1000) then {_base_repair_HQ_cost = round(_base_repair_HQ_cost / 2);}; if(scoreSide CTI_P_SideJoined <= 500) then {_base_repair_HQ_cost = round(_base_repair_HQ_cost / 4);}; +_attempting_repair = false; if (_hq distance _vehicle <= CTI_BASE_HQ_REPAIR_RANGE) then { _funds = call CTI_CL_FNC_GetPlayerFunds; @@ -28,6 +29,7 @@ if (_hq distance _vehicle <= CTI_BASE_HQ_REPAIR_RANGE) then { if (_funds >= _base_repair_HQ_cost) then { -_base_repair_HQ_cost call CTI_CL_FNC_ChangePlayerFunds; ["SERVER", "Request_HQRepair", CTI_P_SideJoined] call CTI_CO_FNC_NetSend; + _attempting_repair = true; } else { hint parseText format[localize "STR_Needed_RepairHQ", CTI_P_Coloration_Money, _base_repair_HQ_cost]; }; @@ -46,4 +48,4 @@ if (_hq distance _vehicle <= CTI_BASE_HQ_REPAIR_RANGE) then { hint parseText format[localize "STR_Needed_RepairHQ", CTI_P_Coloration_Money, _base_repair_HQ_cost]; }; }; -missionNamespace setVariable [format["CTI_HQ_Repair_Lock_%1", CTI_P_SideJoined], false, true]; \ No newline at end of file +if(!_attempting_repair) then {missionNamespace setVariable [format["CTI_HQ_Repair_Lock_%1", CTI_P_SideJoined], false, true];}; \ No newline at end of file diff --git a/Server/Functions/Server_RepairHQ.sqf b/Server/Functions/Server_RepairHQ.sqf index e2c920c71..00ef865dc 100644 --- a/Server/Functions/Server_RepairHQ.sqf +++ b/Server/Functions/Server_RepairHQ.sqf @@ -74,9 +74,10 @@ _logic setVariable ["cti_hq", _hq, true]; //check if HQ was sucessfully repaired, else refound repair cost -[_hq, _logic] spawn { +[_hq, _logic, _side] spawn { _hq = _this select 0; _logic = _this select 1; + _side = _this select 2; sleep(5); _hq setVelocity [0, 5, 0]; //move it a little to check if its inside an object @@ -90,6 +91,7 @@ _logic setVariable ["cti_hq", _hq, true]; if(scoreSide CTI_P_SideJoined <= 500) then {_base_repair_HQ_cost = round(_base_repair_HQ_cost / 4);}; _logic setvariable ["cti_commander_funds",_comMoney+_base_repair_HQ_cost,true]; }; + missionNamespace setVariable [format["CTI_HQ_Repair_Lock_%1", _side], false, true]; }; From a6600f3aa85711b5e488089188d504f8a5ac0dce Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 1 Oct 2018 20:18:50 +0200 Subject: [PATCH 022/267] sdfgsfgd --- Addons/Strat_mode/AdvNet/AN_Launch.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/AdvNet/AN_Launch.sqf b/Addons/Strat_mode/AdvNet/AN_Launch.sqf index 588520288..a4cab10f9 100644 --- a/Addons/Strat_mode/AdvNet/AN_Launch.sqf +++ b/Addons/Strat_mode/AdvNet/AN_Launch.sqf @@ -2,7 +2,7 @@ private ["_vehicle","_side_id"]; _vehicle = vehicle (_this select 0); _side_id= _this select 1; if (NET_LOG) then {diag_log format [":: NET :: Trying to launch for %1 with sideid %2",_vehicle,_side_id]}; -//if ! (isNil {_vehicle getVariable "AN_iNet"}) exitWith {false}; +if ! (isNil {_vehicle getVariable "AN_iNet"}) exitWith {false}; //diag_log format ["Starting networking for %1 side %2", _this select 0 , _this select 1]; if (isNil {_vehicle getVariable "CTI_Net"}) then {_vehicle setVariable ["CTI_Net",_side_id,true];}; if (isNil {_vehicle getVariable "AN_Conn"}) then {_vehicle setVariable ["AN_Conn",objNull,false];}; From 5d71066fbab57764e0127f2467990379578f17c7 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sun, 21 Oct 2018 12:27:42 +0200 Subject: [PATCH 023/267] added performance logging --- Server/FSM/update_victory.fsm | 8 +++++--- Server/Init/Init_Server.sqf | 30 +++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/Server/FSM/update_victory.fsm b/Server/FSM/update_victory.fsm index 5632564a1..b0f4aceca 100644 --- a/Server/FSM/update_victory.fsm +++ b/Server/FSM/update_victory.fsm @@ -1,9 +1,9 @@ /*%FSM*/ /*%FSM*/ /* -item0[] = {"Start_FSM",0,4346,-250.000000,-300.000000,-150.000000,-250.000000,0.000000,"Start FSM"}; +item0[] = {"Start_FSM",0,250,-250.000000,-300.000000,-150.000000,-250.000000,0.000000,"Start FSM"}; item1[] = {"Cycle",4,218,-100.000000,-300.000000,0.000000,-250.000000,1.000000,"Cycle"}; -item2[] = {"Update_Victory",2,250,-100.000000,-200.000000,0.000000,-150.000000,0.000000,"Update" \n "Victory"}; +item2[] = {"Update_Victory",2,4346,-100.000000,-200.000000,0.000000,-150.000000,0.000000,"Update" \n "Victory"}; item3[] = {"End_FSM",1,250,-250.000000,-100.000000,-150.000000,-50.000000,0.000000,"End FSM"}; item4[] = {"Gameover",4,218,-250.000000,-200.000000,-150.000000,-150.000000,0.000000,"Gameover"}; item5[] = {"Sleep",2,250,-400.000000,-200.000000,-300.000000,-150.000000,0.000000,"Sleep"}; @@ -16,7 +16,7 @@ link4[] = {4,5}; link5[] = {5,6}; link6[] = {6,3}; globals[] = {0.000000,0,0,0,0,640,480,1,164,6316128,1,-620.422607,163.824570,138.236649,-571.857727,973,885,1}; -window[] = {2,-1,-1,-1,-1,856,75,1330,75,3,991}; +window[] = {2,-1,-1,-1,-1,1015,234,1489,234,3,991}; *//*%FSM*/ class FSM { @@ -80,6 +80,7 @@ class FSM " _factories = 0;" \n " {_factories = _factories + count([_x, _structures] call CTI_CO_FNC_GetSideStructuresByType)} forEach (missionNamespace getVariable format[""CTI_%1_Factories"", _side]);" \n " if (( ( time > _max_time && _max_time != 0) || !(alive _hq) && _victory_hq == 1 || (!(alive _hq) && _factories == 0)) && !CTI_GameOver) exitWith {" \n + " diag_log [""CTI_Mission_Performance: GameOver win"", _x]; " \n " [""CLIENT"", ""Client_OnMissionEnding"", [_x, ""loose""]] call CTI_CO_FNC_NetSend;" \n "" \n " profileNamespace setVariable [""CTI_SAVE_ENABLED"",false];" \n @@ -96,6 +97,7 @@ class FSM " CTI_GameOver = true;" \n " };" \n " if (_townvalue > (_total_value*0.75) && !CTI_GameOver) exitWith {" \n + " diag_log [""CTI_Mission_Performance: GameOver eco win"", _x];" \n " [""CLIENT"", ""Client_OnMissionEnding"", [_x, ""win""]] call CTI_CO_FNC_NetSend;" \n " " \n " profileNamespace setVariable [""CTI_SAVE_ENABLED"",false];" \n diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index 082fb4336..6354a8cef 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -309,4 +309,32 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { }; - +//Logging of varius values +0 spawn { + sleep 100; //wait for everything to finish loading + diag_log "CTI_Mission_Performance: Starting Server"; + while {!CTI_GameOver} do { + _hud_east = count (((east) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_HUD_SHARED",[]]); + _hud_west = count (((west) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_HUD_SHARED",[]]); + + _arr = ["CTI_Mission_Performance:", + ["time", time], + ["fps", diag_fps], + ["score_east", (scoreSide east)], + ["score_west", (scoreSide west)], + ["hud_count_east", _hud_east], + ["hud_count_west", _hud_west], + ["player_count_east", (west countSide allPlayers)], + ["player_count_west", (east countSide allPlayers)], + ["commander_east", (name leader ((east) call CTI_CO_FNC_GetSideCommander))], + ["commander_west", (name leader ((west) call CTI_CO_FNC_GetSideCommander))], + ["town_count_east", ((east) call CTI_CO_FNC_GetSideTownCount)], + ["town_count_west", ((west) call CTI_CO_FNC_GetSideTownCount)], + ["active_SQF_count", count(diag_activeSQFScripts)] + ]; + + diag_log _arr; + sleep 600; + }; + diag_log "CTI_Mission_Performance: Stopping Server"; +}; From 65ab1d7ca20398bf07732e3dceee713217404727 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 21 Oct 2018 13:01:01 +0200 Subject: [PATCH 024/267] Network edit --- Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf b/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf index 5c3bb3d3d..2a6984d78 100644 --- a/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf +++ b/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf @@ -97,6 +97,7 @@ if ! (isNull _final) then { _vehicle setVariable ["AN_Conn",_final,_global]; }; _vehicle setVariable ["AN_Parrents",((_vehicle getVariable "AN_Conn") getVariable ["AN_Parrents",[]]) + [_vehicle],false]; + _vehicle setVariable ["AN_iNet",-1,true]; if (NET_LOG) then {diag_log format [":: NET :: Sucess in reconf %1 to %2 through %3",_vehicle,_final,((_vehicle getVariable "AN_Conn") getVariable ["AN_Parrents",[]]) ]}; } else { _vehicle setVariable ["AN_Conn",_final,_global]; From 07f31d624c688f40416f8e0833e7f6fca448e275 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 21 Oct 2018 13:01:14 +0200 Subject: [PATCH 025/267] Air radar and hud fix --- Addons/Strat_mode/Radar/AIRR_obj_handler.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Radar/AIRR_obj_handler.sqf b/Addons/Strat_mode/Radar/AIRR_obj_handler.sqf index fe5172db2..a3bbd44b8 100644 --- a/Addons/Strat_mode/Radar/AIRR_obj_handler.sqf +++ b/Addons/Strat_mode/Radar/AIRR_obj_handler.sqf @@ -26,7 +26,7 @@ if (! _adv_net) then { _alt=((getposASL _vehicle) select 2 ) min ((getposATL _vehicle) select 2 ); if ( ([_vehicle,_radar] call BIS_fnc_distance2D) < Radar_Range && _alt >= Min_Alt && !(terrainIntersect [_top_radar,(getPosATL _vehicle)]) && ((_sl getVariable "CTI_HUD_SHARED") findif {_x select 0 == _vehicle && _x select 1 > time}) > -1 && !((_vehicle getvariable ["CTI_Net",-10]) == (_side call CTI_CO_FNC_GetSideID)) ) then { //diag_log format [":: AIR Radar ::%1::%2:: Detected by %3",_vehicle,_side,_radar]; - ["SERVER", "Server_Hud_Share_Add",[[_vehicle],_side]] call CTI_CO_FNC_NetSend; //we use the netPV to not do strange stuff + ["SERVER", "Server_Hud_Share_Add",[[[_vehicle,time +90+ random 20]],_side]] call CTI_CO_FNC_NetSend; //we use the netPV to not do strange stuff [["CLIENT",_side], "Client_AIRR_touched"] call CTI_CO_FNC_NetSend;//for the hud }; sleep 10; From ae12363b4adda785a1bdf632b20dbca4ae8002ae Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 21 Oct 2018 17:20:59 +0200 Subject: [PATCH 026/267] Double unschedule encapsulation removed --- Addons/Strat_mode/init.sqf | 66 +++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 0ca7a47c9..07fee4d8c 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -152,39 +152,39 @@ if (CTI_IsServer) then { CTI_PVF_Server_Hud_Share_Add= { - _this spawn { - _sl= (_this select 1) call CTI_CO_FNC_GetSideLogic; - while {HUD_WRITE} do {sleep random (1);}; - HUD_WRITE=true; - _hud =_sl getVariable ["CTI_HUD_SHARED",[]]; - - - //cleanup - _delete=+ []; - { - _obj = _x select 0; - _timeout= _x select 1; - if( isNull _obj || time > _timeout) then {_delete pushBack _forEachIndex;}; - } forEach _hud; - - {_hud deleteAt _x;true} count _delete; - //new objects - { - _new_obj= _x select 0; - _new_timeout= _x select 1; - _find=(_hud findif {_x select 0 == _new_obj}); - if (_find == -1) then { - _hud pushBack _x; - _new_obj setVariable ["CTI_HUD_Detected",_new_timeout,true]; - }; - true - }count (_this select 0); - - - - _sl setVariable ["CTI_HUD_SHARED",_hud,true]; - HUD_WRITE=false; - }; + + _sl= (_this select 1) call CTI_CO_FNC_GetSideLogic; + while {HUD_WRITE} do {sleep random (1);}; + HUD_WRITE=true; + _hud =_sl getVariable ["CTI_HUD_SHARED",[]]; + + + //cleanup + _delete=+ []; + { + _obj = _x select 0; + _timeout= _x select 1; + if( isNull _obj || time > _timeout) then {_delete pushBack _forEachIndex;}; + } forEach _hud; + + {_hud deleteAt _x;true} count _delete; + //new objects + { + _new_obj= _x select 0; + _new_timeout= _x select 1; + _find=(_hud findif {_x select 0 == _new_obj}); + if (_find == -1) then { + _hud pushBack _x; + _new_obj setVariable ["CTI_HUD_Detected",_new_timeout,true]; + }; + true + }count (_this select 0); + + + + _sl setVariable ["CTI_HUD_SHARED",_hud,true]; + HUD_WRITE=false; + }; From 8c02f0842b10a1ffe04a6c080e4f7cf634e56e06 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 22 Oct 2018 00:17:22 +0200 Subject: [PATCH 027/267] updated logged, 2 stupid mixups -,- --- Server/FSM/update_victory.fsm | 8 ++++---- Server/Init/Init_Server.sqf | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Server/FSM/update_victory.fsm b/Server/FSM/update_victory.fsm index b0f4aceca..c959b38c0 100644 --- a/Server/FSM/update_victory.fsm +++ b/Server/FSM/update_victory.fsm @@ -15,8 +15,8 @@ link3[] = {2,4}; link4[] = {4,5}; link5[] = {5,6}; link6[] = {6,3}; -globals[] = {0.000000,0,0,0,0,640,480,1,164,6316128,1,-620.422607,163.824570,138.236649,-571.857727,973,885,1}; -window[] = {2,-1,-1,-1,-1,1015,234,1489,234,3,991}; +globals[] = {0.000000,0,0,0,0,640,480,1,164,6316128,1,-620.422607,163.824570,138.236649,-571.857727,973,884,1}; +window[] = {2,-1,-1,-1,-1,937,156,1411,156,3,991}; *//*%FSM*/ class FSM { @@ -79,8 +79,7 @@ class FSM " {_townvalue=_townvalue+ (_x getVariable ""cti_town_value""); } ForEach ((_x) call CTI_CO_FNC_GetFriendlyTowns);" \n " _factories = 0;" \n " {_factories = _factories + count([_x, _structures] call CTI_CO_FNC_GetSideStructuresByType)} forEach (missionNamespace getVariable format[""CTI_%1_Factories"", _side]);" \n - " if (( ( time > _max_time && _max_time != 0) || !(alive _hq) && _victory_hq == 1 || (!(alive _hq) && _factories == 0)) && !CTI_GameOver) exitWith {" \n - " diag_log [""CTI_Mission_Performance: GameOver win"", _x]; " \n + " if (( ( time > _max_time && _max_time != 0) || !(alive _hq) && _victory_hq == 1 || (!(alive _hq) && _factories == 0)) && !CTI_GameOver) exitWith { " \n " [""CLIENT"", ""Client_OnMissionEnding"", [_x, ""loose""]] call CTI_CO_FNC_NetSend;" \n "" \n " profileNamespace setVariable [""CTI_SAVE_ENABLED"",false];" \n @@ -89,6 +88,7 @@ class FSM " CTI_GameOver = true;" \n " };" \n " if (_towns == _total && !CTI_GameOver) exitWith {" \n + " diag_log [""CTI_Mission_Performance: GameOver win"", _x];" \n " [""CLIENT"", ""Client_OnMissionEnding"", [_x, ""win""]] call CTI_CO_FNC_NetSend;" \n "" \n " profileNamespace setVariable [""CTI_SAVE_ENABLED"",false];" \n diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index 6354a8cef..50032154c 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -324,8 +324,8 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { ["score_west", (scoreSide west)], ["hud_count_east", _hud_east], ["hud_count_west", _hud_west], - ["player_count_east", (west countSide allPlayers)], - ["player_count_west", (east countSide allPlayers)], + ["player_count_east", (east countSide allPlayers)], + ["player_count_west", (west countSide allPlayers)], ["commander_east", (name leader ((east) call CTI_CO_FNC_GetSideCommander))], ["commander_west", (name leader ((west) call CTI_CO_FNC_GetSideCommander))], ["town_count_east", ((east) call CTI_CO_FNC_GetSideTownCount)], From b94bbfdc5d3f6c72dd2492e7cf78ee2b69dd6e13 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 22 Oct 2018 18:02:46 +0200 Subject: [PATCH 028/267] added info on losing --- Server/FSM/update_victory.fsm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Server/FSM/update_victory.fsm b/Server/FSM/update_victory.fsm index c959b38c0..25d06a1c6 100644 --- a/Server/FSM/update_victory.fsm +++ b/Server/FSM/update_victory.fsm @@ -15,8 +15,8 @@ link3[] = {2,4}; link4[] = {4,5}; link5[] = {5,6}; link6[] = {6,3}; -globals[] = {0.000000,0,0,0,0,640,480,1,164,6316128,1,-620.422607,163.824570,138.236649,-571.857727,973,884,1}; -window[] = {2,-1,-1,-1,-1,937,156,1411,156,3,991}; +globals[] = {0.000000,0,0,0,0,640,480,1,164,6316128,1,-620.422607,163.824570,138.236649,-571.857727,635,884,1}; +window[] = {2,-1,-1,-1,-1,833,52,1307,52,3,653}; *//*%FSM*/ class FSM { @@ -80,6 +80,7 @@ class FSM " _factories = 0;" \n " {_factories = _factories + count([_x, _structures] call CTI_CO_FNC_GetSideStructuresByType)} forEach (missionNamespace getVariable format[""CTI_%1_Factories"", _side]);" \n " if (( ( time > _max_time && _max_time != 0) || !(alive _hq) && _victory_hq == 1 || (!(alive _hq) && _factories == 0)) && !CTI_GameOver) exitWith { " \n + " diag_log [""CTI_Mission_Performance: GameOver losse"", _x]; " \n " [""CLIENT"", ""Client_OnMissionEnding"", [_x, ""loose""]] call CTI_CO_FNC_NetSend;" \n "" \n " profileNamespace setVariable [""CTI_SAVE_ENABLED"",false];" \n From bd20f6b128c84aa6740564ffd66d2d8cce701ceb Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Thu, 25 Oct 2018 19:08:02 +0200 Subject: [PATCH 029/267] updated logger --- Server/Init/Init_Server.sqf | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index 50032154c..feb13ac38 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -314,27 +314,27 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { sleep 100; //wait for everything to finish loading diag_log "CTI_Mission_Performance: Starting Server"; while {!CTI_GameOver} do { - _hud_east = count (((east) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_HUD_SHARED",[]]); - _hud_west = count (((west) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_HUD_SHARED",[]]); - + _towns = count(((east) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_ACTIVE",[]]) + count(((west) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_ACTIVE",[]]); + _arr = ["CTI_Mission_Performance:", ["time", time], ["fps", diag_fps], ["score_east", (scoreSide east)], ["score_west", (scoreSide west)], - ["hud_count_east", _hud_east], - ["hud_count_west", _hud_west], ["player_count_east", (east countSide allPlayers)], ["player_count_west", (west countSide allPlayers)], ["commander_east", (name leader ((east) call CTI_CO_FNC_GetSideCommander))], ["commander_west", (name leader ((west) call CTI_CO_FNC_GetSideCommander))], ["town_count_east", ((east) call CTI_CO_FNC_GetSideTownCount)], ["town_count_west", ((west) call CTI_CO_FNC_GetSideTownCount)], - ["active_SQF_count", count(diag_activeSQFScripts)] + ["active_SQF_count", count(diag_activeSQFScripts)], + ["active_AI", count(allUnits)], + ["total_objects", count(allMissionObjects "All")], + ["active_towns", _towns] ]; diag_log _arr; - sleep 600; + sleep 60; }; diag_log "CTI_Mission_Performance: Stopping Server"; }; From e7f5c147f65d21a2f1d04754dc664a9f130b90c6 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sat, 3 Nov 2018 14:26:40 +0100 Subject: [PATCH 030/267] Increased speed of loading process --- Addons/Strat_mode/Functions/PERS_Load.sqf | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Addons/Strat_mode/Functions/PERS_Load.sqf b/Addons/Strat_mode/Functions/PERS_Load.sqf index c6c6e89a0..9ec784b4e 100644 --- a/Addons/Strat_mode/Functions/PERS_Load.sqf +++ b/Addons/Strat_mode/Functions/PERS_Load.sqf @@ -31,11 +31,9 @@ diag_log ":: SAVE :: Loading"; //structures {diag_log format [":: SAVE :: Loading %1",_x]; - sleep 0.2; _build=[(_x select 0), _side,(_x select 1) select 0 ,(_x select 1) select 1 ] call CTI_SE_FNC_BuildStructure; - sleep 0.2; + sleep 0.1; _build setvariable ["cti_completion",100,true]; - sleep 0.2; true } count (_load select 4); @@ -55,7 +53,7 @@ diag_log ":: SAVE :: Loading"; } forEach [east,west]; -sleep 0.2; + _loadwest = profileNamespace getVariable format ["CTI_SAVE_%1", west]; _loadeast = profileNamespace getVariable format ["CTI_SAVE_%1", east]; @@ -66,7 +64,7 @@ _currenttime = round (daytime); if (_currenttime > (_loadwest select 8)) then {skipTime ((24 - _currenttime) + (_loadwest select 8));}; if (_currenttime < (_loadwest select 8)) then {skipTime ((_loadwest select 8) - _currenttime);}; -sleep 0.2; + //team score west [H]Tom diag_log format [":: SAVE :: TeamScoreWest",(_loadwest select 9)]; From 086e3aaadc1e7d636f2c5194980978cd01164a79 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 6 Nov 2018 21:26:40 +0100 Subject: [PATCH 031/267] Fix for endgame log saving --- Server/FSM/update_victory.fsm | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/Server/FSM/update_victory.fsm b/Server/FSM/update_victory.fsm index 25d06a1c6..192554e92 100644 --- a/Server/FSM/update_victory.fsm +++ b/Server/FSM/update_victory.fsm @@ -15,8 +15,8 @@ link3[] = {2,4}; link4[] = {4,5}; link5[] = {5,6}; link6[] = {6,3}; -globals[] = {0.000000,0,0,0,0,640,480,1,164,6316128,1,-620.422607,163.824570,138.236649,-571.857727,635,884,1}; -window[] = {2,-1,-1,-1,-1,833,52,1307,52,3,653}; +globals[] = {0.000000,0,0,0,0,640,480,1,164,6316128,1,-620.422607,163.824570,138.236649,-571.857727,635,885,1}; +window[] = {2,-1,-1,-1,-1,806,25,1280,25,3,653}; *//*%FSM*/ class FSM { @@ -86,7 +86,6 @@ class FSM " profileNamespace setVariable [""CTI_SAVE_ENABLED"",false];" \n " saveProfileNamespace;" \n "" \n - " CTI_GameOver = true;" \n " };" \n " if (_towns == _total && !CTI_GameOver) exitWith {" \n " diag_log [""CTI_Mission_Performance: GameOver win"", _x];" \n @@ -95,7 +94,6 @@ class FSM " profileNamespace setVariable [""CTI_SAVE_ENABLED"",false];" \n " saveProfileNamespace;" \n "" \n - " CTI_GameOver = true;" \n " };" \n " if (_townvalue > (_total_value*0.75) && !CTI_GameOver) exitWith {" \n " diag_log [""CTI_Mission_Performance: GameOver eco win"", _x];" \n @@ -103,11 +101,10 @@ class FSM " " \n " profileNamespace setVariable [""CTI_SAVE_ENABLED"",false];" \n " saveProfileNamespace;" \n - "" \n - " CTI_GameOver = true;" \n + " " \n " };" \n "} forEach [west, east];" \n - ""/*%FSM*/; + "CTI_GameOver = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { From cbb8610e03df0250d9d0a65d4bd4cf4d5313d7ce Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 24 Nov 2018 15:49:26 +0100 Subject: [PATCH 032/267] for #259 16 is first contact, 2 is nearest object. Makes it easier to reach the interaction menu of vehicle when parking on central of building. --- Client/Init/Init_Client.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/Init/Init_Client.sqf b/Client/Init/Init_Client.sqf index a31c8f7ce..9b8f449d9 100644 --- a/Client/Init/Init_Client.sqf +++ b/Client/Init/Init_Client.sqf @@ -260,7 +260,7 @@ TABLET_GET_TARGET={ if (cursortarget iskindof "CAManBase" && ([player,cursortarget] call BIS_fnc_distance2D) <3 ) exitWith {cursortarget}; if (cursortarget == (CTI_P_SideLogic getvariable "cti_hq") && ([player,cursortarget] call BIS_fnc_distance2D) <10 && (isnull attachedTo (CTI_P_SideLogic getvariable "cti_hq") ) ) exitWith {cursortarget}; if (vehicle player != player) exitWith {vehicle player}; - _target = lineintersectsobjs [(eyepos player),(atltoasl screentoworld [0.5,0.5]),objnull,objnull,false,16]; + _target = lineintersectsobjs [(eyepos player),(atltoasl screentoworld [0.5,0.5]),objnull,objnull,false,2]; if (count _target == 0 && !(cursortarget iskindof "CAManBase") && ( [player,cursortarget] call BIS_fnc_distance2D) <8) exitWith {cursortarget}; if ((count _target) == 0) exitWith {player}; if (( [player,(_target select 0)] call BIS_fnc_distance2D) > 8) exitWith {player}; From a8e20f82ad44f670af7042dae2692f3c57943f29 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 24 Nov 2018 16:51:16 +0100 Subject: [PATCH 033/267] for #220 --- Common/Functions/Common_CreateVehicle.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index a4ac1dd94..e1f2d654c 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -104,9 +104,9 @@ if (isNull _created) then { if (count _free > 0) then {_vehicle setPos (selectRandom _free);} else {_vehicle setPos (getPos _vehicle);}; }; - if (_vehicle isKindOf "SHIP" && _side != CTI_RESISTANCE_ID) then { + if (_vehicle isKindOf "SHIP" && _side != CTI_RESISTANCE_ID && !(surfaceIsWater position _vehicle)) then { _wp = [getPos _vehicle, 0, 75, 7, 2, 1, 0] call BIS_fnc_findSafePos; - if (count _wp == 0) then {_wp = getPos _vehicle}; + if (count _wp == 0 || !(surfaceIsWater _wp)) then {_wp = getPos _vehicle;}; _vehicle setPos _wp; }; From 2cbba6b4f2180846825ac740331bb14214c945bf Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 3 Dec 2018 20:07:52 +0100 Subject: [PATCH 034/267] ADR-97 V1.0 --- Common/Config/Gear/Gear_East.sqf | 36 ++++++++++++++++++++++++++++++++ Common/Config/Gear/Gear_West.sqf | 36 ++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/Common/Config/Gear/Gear_East.sqf b/Common/Config/Gear/Gear_East.sqf index 103bff484..51b4d15c0 100644 --- a/Common/Config/Gear/Gear_East.sqf +++ b/Common/Config/Gear/Gear_East.sqf @@ -118,6 +118,10 @@ _i = _i + ["30Rnd_545x39_Mag_Tracer_Green_F"]; _u = _u + [0]; _p = _p + [20]; +_i = _i + ["50Rnd_570x28_SMG_03"]; +_u = _u + [0]; +_p = _p + [20]; + //Rifles Ammo _i = _i + ["30Rnd_556x45_Stanag_red"]; _u = _u + [0]; @@ -380,6 +384,38 @@ _i = _i + ["SMG_02_F"]; _u = _u + [0]; _p = _p + [10]; +_i = _i + ["SMG_03C_black"]; +_u = _u + [0]; +_p = _p + [15]; + +_i = _i + ["SMG_03C_hex"]; +_u = _u + [0]; +_p = _p + [15]; + +_i = _i + ["SMG_03_black"]; +_u = _u + [0]; +_p = _p + [15]; + +_i = _i + ["SMG_03_hex"]; +_u = _u + [0]; +_p = _p + [15]; + +_i = _i + ["SMG_03C_TR_black"]; +_u = _u + [1]; +_p = _p + [20]; + +_i = _i + ["SMG_03C_TR_hex"]; +_u = _u + [1]; +_p = _p + [20]; + +_i = _i + ["SMG_03_TR_black"]; +_u = _u + [1]; +_p = _p + [20]; + +_i = _i + ["SMG_03_TR_hex"]; +_u = _u + [1]; +_p = _p + [20]; + _i = _i + ["arifle_AKS_F"]; _u = _u + [0]; _p = _p + [30]; diff --git a/Common/Config/Gear/Gear_West.sqf b/Common/Config/Gear/Gear_West.sqf index c9dfc980e..6067c62a1 100644 --- a/Common/Config/Gear/Gear_West.sqf +++ b/Common/Config/Gear/Gear_West.sqf @@ -130,6 +130,10 @@ _i = _i + ["30Rnd_45ACP_Mag_SMG_01_tracer_green"]; _u = _u + [0]; _p = _p + [10]; +_i = _i + ["50Rnd_570x28_SMG_03"]; +_u = _u + [0]; +_p = _p + [20]; + //Rifles Ammo _i = _i + ["30Rnd_65x39_caseless_mag"]; _u = _u + [1]; @@ -428,6 +432,38 @@ _i = _i + ["SMG_05_F"]; _u = _u + [0]; _p = _p + [15]; +_i = _i + ["SMG_03C_black"]; +_u = _u + [0]; +_p = _p + [15]; + +_i = _i + ["SMG_03C_khaki"]; +_u = _u + [0]; +_p = _p + [15]; + +_i = _i + ["SMG_03_black"]; +_u = _u + [0]; +_p = _p + [15]; + +_i = _i + ["SMG_03_khaki"]; +_u = _u + [0]; +_p = _p + [15]; + +_i = _i + ["SMG_03C_TR_black"]; +_u = _u + [1]; +_p = _p + [20]; + +_i = _i + ["SMG_03C_TR_khaki"]; +_u = _u + [1]; +_p = _p + [20]; + +_i = _i + ["SMG_03_TR_black"]; +_u = _u + [1]; +_p = _p + [20]; + +_i = _i + ["SMG_03_TR_khaki"]; +_u = _u + [1]; +_p = _p + [20]; + _i = _i + ["arifle_Mk20_plain_F"]; _u = _u + [0]; _p = _p + [30]; From bcc6d4254a797fbb210088215940d957e88acc3f Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 3 Dec 2018 20:39:12 +0100 Subject: [PATCH 035/267] Update update_victory.fsm --- Server/FSM/update_victory.fsm | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/Server/FSM/update_victory.fsm b/Server/FSM/update_victory.fsm index 192554e92..693775e07 100644 --- a/Server/FSM/update_victory.fsm +++ b/Server/FSM/update_victory.fsm @@ -16,7 +16,7 @@ link4[] = {4,5}; link5[] = {5,6}; link6[] = {6,3}; globals[] = {0.000000,0,0,0,0,640,480,1,164,6316128,1,-620.422607,163.824570,138.236649,-571.857727,635,885,1}; -window[] = {2,-1,-1,-1,-1,806,25,1280,25,3,653}; +window[] = {2,-1,-1,-1,-1,931,150,1405,150,3,653}; *//*%FSM*/ class FSM { @@ -70,6 +70,9 @@ class FSM "_max_time = missionNamespace getVariable ""CTI_MAX_MISSION_TIME"";" \n "_max_time=_max_time*60*60; // cycle for loadgame - time limit [H]Tom" \n "" \n + "" \n + "_end=false;" \n + "" \n "{" \n " _side = _x;" \n " _hq = (_x) call CTI_CO_FNC_GetSideHQ;" \n @@ -82,29 +85,28 @@ class FSM " if (( ( time > _max_time && _max_time != 0) || !(alive _hq) && _victory_hq == 1 || (!(alive _hq) && _factories == 0)) && !CTI_GameOver) exitWith { " \n " diag_log [""CTI_Mission_Performance: GameOver losse"", _x]; " \n " [""CLIENT"", ""Client_OnMissionEnding"", [_x, ""loose""]] call CTI_CO_FNC_NetSend;" \n - "" \n - " profileNamespace setVariable [""CTI_SAVE_ENABLED"",false];" \n - " saveProfileNamespace;" \n + " _end=true;" \n "" \n " };" \n " if (_towns == _total && !CTI_GameOver) exitWith {" \n " diag_log [""CTI_Mission_Performance: GameOver win"", _x];" \n " [""CLIENT"", ""Client_OnMissionEnding"", [_x, ""win""]] call CTI_CO_FNC_NetSend;" \n - "" \n - " profileNamespace setVariable [""CTI_SAVE_ENABLED"",false];" \n - " saveProfileNamespace;" \n + " _end=true;" \n "" \n " };" \n " if (_townvalue > (_total_value*0.75) && !CTI_GameOver) exitWith {" \n " diag_log [""CTI_Mission_Performance: GameOver eco win"", _x];" \n " [""CLIENT"", ""Client_OnMissionEnding"", [_x, ""win""]] call CTI_CO_FNC_NetSend;" \n - " " \n - " profileNamespace setVariable [""CTI_SAVE_ENABLED"",false];" \n - " saveProfileNamespace;" \n - " " \n + " _end=true;" \n " };" \n "} forEach [west, east];" \n - "CTI_GameOver = true;"/*%FSM*/; + "" \n + "if (_end) then {" \n + "" \n + " CTI_GameOver = true;" \n + " profileNamespace setVariable [""CTI_SAVE_ENABLED"",false];" \n + " saveProfileNamespace;" \n + "};"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -154,7 +156,7 @@ class FSM { name = "Sleep"; itemno = 5; - init = /*%FSM*/"_endtime=time+10;" \n + init = /*%FSM*/"_endtime=time+5;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links From 82e0c37d9a5fd13b070b5bd3d7fceb9765188bb5 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 3 Dec 2018 22:04:22 +0100 Subject: [PATCH 036/267] MADE_FOR changes extended islands --- Addons/Strat_mode/Functions/SM_Connect.sqf | 2 +- Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf | 2 +- Addons/Strat_mode/Functions/SM_Mortar.sqf | 4 ++-- Common/Config/Base/Base_East.sqf | 10 +++++----- Common/Config/Base/Base_West.sqf | 10 +++++----- Common/Config/Gear/Gear_East.sqf | 2 +- Common/Config/Gear/Gear_West.sqf | 2 +- Common/Init/Init_CommonConstants.sqf | 12 ++++++------ init.sqf | 2 +- 9 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_Connect.sqf b/Addons/Strat_mode/Functions/SM_Connect.sqf index 7e62081b1..019abdce9 100644 --- a/Addons/Strat_mode/Functions/SM_Connect.sqf +++ b/Addons/Strat_mode/Functions/SM_Connect.sqf @@ -21,7 +21,7 @@ _dir = atan ( _xdif / _ydif ); _name = format ["CM_%1_%2",floor(time),floor(random(1000))]; _type = "RECTANGLE"; -_l=if !(MADE_FOR_STRATIS) then {20} else {10}; +_l = if (ISLAND != 1) then {20} else {10}; _marker = CreateMarkerLocal [_name, _pos]; _marker setMarkerShapeLocal "RECTANGLE"; diff --git a/Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf b/Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf index 41d13298f..2c4c2d2d3 100644 --- a/Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf +++ b/Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf @@ -8,7 +8,7 @@ if (!(CTI_P_SideJoined == resistance))then { _neigh= _ct getVariable "CTI_Neigh"; sleep 0.3; }; - _o=if !(MADE_FOR_STRATIS) then {500} else {0}; + _o = if (ISLAND != 1) then {500} else {0}; { [getPos _ct,getPos _x,"ColorBlack",_o] call CTI_SM_Connect; } forEach _neigh; diff --git a/Addons/Strat_mode/Functions/SM_Mortar.sqf b/Addons/Strat_mode/Functions/SM_Mortar.sqf index 802a10bda..dafddc44d 100644 --- a/Addons/Strat_mode/Functions/SM_Mortar.sqf +++ b/Addons/Strat_mode/Functions/SM_Mortar.sqf @@ -16,7 +16,7 @@ _maingrouploop={ _target=[]; _group=_this select 1; _town_groups=_this select 2; - _to_mortar=if !(MADE_FOR_STRATIS) then {120} else {60}; + _to_mortar=if (ISLAND != 1) then {120} else {60}; diag_log format [ ":: MORTAR :: Starting mortar from group %1 for town %2 linked to %3", _group,_town,_town_groups]; while {count(_group call CTI_CO_FNC_GetLiveUnits)>0 &&( _town getVariable "cti_town_sideID")==CTI_RESISTANCE_ID && (_town getVariable "cti_town_resistance_active")} do { @@ -53,7 +53,7 @@ _group= createGroup resistance; _pos= [_town,1000,1500] call CTI_CO_FNC_GetRandomPosition; _mp=[]; -_max_mortar=if !(MADE_FOR_STRATIS) then {3} else {1}; +_max_mortar=if (ISLAND != 1) then {3} else {1}; for "_x" from 1 to _max_mortar do { _pos2= [_pos,100,400] call CTI_CO_FNC_GetRandomPosition; diff --git a/Common/Config/Base/Base_East.sqf b/Common/Config/Base/Base_East.sqf index a4500e075..457189389 100644 --- a/Common/Config/Base/Base_East.sqf +++ b/Common/Config/Base/Base_East.sqf @@ -36,7 +36,7 @@ missionNamespace setVariable [format["CTI_%1_Commander_Path", _side], [ ["upgrade", [CTI_UPGRADE_HALO, 1], {true}], ["build-structures", CTI_RADAR, {true}], ["build-structures", CTI_NAVAL, {true}], - + ["upgrade", [CTI_UPGRADE_REST, 1], {true}], ["upgrade", [CTI_UPGRADE_REST, 2], {true}], ["upgrade", [CTI_UPGRADE_REST, 3], {true}], @@ -54,13 +54,13 @@ missionNamespace setVariable [format["CTI_%1_Commander_Path", _side], [ ["upgrade", [CTI_UPGRADE_DATA, 1], {true}], ["upgrade", [CTI_UPGRADE_EXPI, 1], {true}], ["upgrade", [CTI_UPGRADE_EXPI, 2], {true}], - + ["upgrade", [CTI_UPGRADE_AIR, 1], {true}], ["upgrade", [CTI_UPGRADE_AIR_CM, 1], {true}], ["upgrade", [CTI_UPGRADE_AIR_AT, 1], {true}], ["upgrade", [CTI_UPGRADE_AIR_FFAR, 1], {true}], ["upgrade", [CTI_UPGRADE_AIR_AA, 1], {true}], - + ["upgrade", [CTI_UPGRADE_BARRACKS, 3], {true}], ["upgrade", [CTI_UPGRADE_AAF, 3], {true}], ["upgrade", [CTI_UPGRADE_REST, 4], {true}], @@ -70,7 +70,7 @@ missionNamespace setVariable [format["CTI_%1_Commander_Path", _side], [ ["upgrade", [CTI_UPGRADE_AAF, 4], {true}], ["upgrade", [CTI_UPGRADE_AAF, 5], {true}], ["upgrade", [CTI_UPGRADE_AAF, 6], {true}], - + ["upgrade", [CTI_UPGRADE_HEAVY, 2], {true}], ["upgrade", [CTI_UPGRADE_SATELLITE, 1], {true}] ]]; @@ -398,7 +398,7 @@ _classes = _classes + ["O_static_AA_F"]; _prices = _prices + [800]; _placements = _placements + [[180, 5]]; _categories = _categories + ["Defense"]; -if !(MADE_FOR_STRATIS) then { +if (ISLAND != 1) then { _headers = _headers + ["Mortar"]; _classes = _classes + ["O_Mortar_01_F"]; _prices = _prices + [3000]; diff --git a/Common/Config/Base/Base_West.sqf b/Common/Config/Base/Base_West.sqf index 25f3cce80..b0eacd055 100644 --- a/Common/Config/Base/Base_West.sqf +++ b/Common/Config/Base/Base_West.sqf @@ -40,7 +40,7 @@ missionNamespace setVariable [format["CTI_%1_Commander_Path", _side], [ ["upgrade", [CTI_UPGRADE_HALO, 1], {true}], ["build-structures", CTI_RADAR, {true}], ["build-structures", CTI_NAVAL, {true}], - + ["upgrade", [CTI_UPGRADE_REST, 1], {true}], ["upgrade", [CTI_UPGRADE_REST, 2], {true}], ["upgrade", [CTI_UPGRADE_REST, 3], {true}], @@ -58,13 +58,13 @@ missionNamespace setVariable [format["CTI_%1_Commander_Path", _side], [ ["upgrade", [CTI_UPGRADE_DATA, 1], {true}], ["upgrade", [CTI_UPGRADE_EXPI, 1], {true}], ["upgrade", [CTI_UPGRADE_EXPI, 2], {true}], - + ["upgrade", [CTI_UPGRADE_AIR, 1], {true}], ["upgrade", [CTI_UPGRADE_AIR_CM, 1], {true}], ["upgrade", [CTI_UPGRADE_AIR_AT, 1], {true}], ["upgrade", [CTI_UPGRADE_AIR_FFAR, 1], {true}], ["upgrade", [CTI_UPGRADE_AIR_AA, 1], {true}], - + ["upgrade", [CTI_UPGRADE_BARRACKS, 3], {true}], ["upgrade", [CTI_UPGRADE_AAF, 3], {true}], ["upgrade", [CTI_UPGRADE_REST, 4], {true}], @@ -74,7 +74,7 @@ missionNamespace setVariable [format["CTI_%1_Commander_Path", _side], [ ["upgrade", [CTI_UPGRADE_AAF, 4], {true}], ["upgrade", [CTI_UPGRADE_AAF, 5], {true}], ["upgrade", [CTI_UPGRADE_AAF, 6], {true}], - + ["upgrade", [CTI_UPGRADE_HEAVY, 2], {true}], ["upgrade", [CTI_UPGRADE_SATELLITE, 1], {true}] ]]; @@ -400,7 +400,7 @@ _classes = _classes + ["B_static_AA_F"]; _prices = _prices + [800]; _placements = _placements + [[180, 5]]; _categories = _categories + ["Defense"]; -if !(MADE_FOR_STRATIS) then { +if (ISLAND != 1) then { _headers = _headers + ["Mortar"]; _classes = _classes + ["B_Mortar_01_F"]; _prices = _prices + [3000]; diff --git a/Common/Config/Gear/Gear_East.sqf b/Common/Config/Gear/Gear_East.sqf index 51b4d15c0..08eb17753 100644 --- a/Common/Config/Gear/Gear_East.sqf +++ b/Common/Config/Gear/Gear_East.sqf @@ -845,7 +845,7 @@ _i = _i + ["B_ViperLightHarness_oli_F"]; _u = _u + [2]; _p = _p + [100]; -if !(MADE_FOR_STRATIS) then { +if (ISLAND != 1) then { _i = _i + ["O_Mortar_01_support_F"]; _u = _u + [3]; _p = _p + [5]; diff --git a/Common/Config/Gear/Gear_West.sqf b/Common/Config/Gear/Gear_West.sqf index 6067c62a1..4ab8b3255 100644 --- a/Common/Config/Gear/Gear_West.sqf +++ b/Common/Config/Gear/Gear_West.sqf @@ -1021,7 +1021,7 @@ _i = _i + ["B_Static_Designator_01_weapon_F"]; _u = _u + [2]; _p = _p + [5000]; -if !(MADE_FOR_STRATIS) then { +if (ISLAND != 1) then { _i = _i + ["B_Mortar_01_support_F"]; _u = _u + [3]; _p = _p + [5]; diff --git a/Common/Init/Init_CommonConstants.sqf b/Common/Init/Init_CommonConstants.sqf index 2044f2081..8a9679c11 100644 --- a/Common/Init/Init_CommonConstants.sqf +++ b/Common/Init/Init_CommonConstants.sqf @@ -383,8 +383,8 @@ with missionNamespace do { */ //--- Base: Area -//CTI_BASE_AREA_MAX = if !(MADE_FOR_STRATIS) then {4} else {3}; -CTI_BASE_AREA_RANGE = if !(MADE_FOR_STRATIS) then {250} else {100}; +//CTI_BASE_AREA_MAX = if (ISLAND != 1) then {4} else {3}; +CTI_BASE_AREA_RANGE = if (ISLAND != 1) then {250} else {100}; //--- Base: Construction CTI_BASE_CONSTRUCTION_DECAY_TIMEOUT = 600; //--- Decay starts after x seconds unattended. @@ -430,8 +430,8 @@ CTI_BASE_WORKERS_WANDER_RANGE_MAX = 225; //--- Worker may wander no further than //--- Base: Parameters with missionNamespace do { - if (isNil 'CTI_BASE_AREA_MAX') then {CTI_BASE_AREA_MAX=if !(MADE_FOR_STRATIS) then {4} else {3};}; - if (isNil 'CTI_BASE_AREA_RANGE') then {CTI_BASE_AREA_MAX=if !(MADE_FOR_STRATIS) then {250} else {100};}; + if (isNil 'CTI_BASE_AREA_MAX') then {CTI_BASE_AREA_MAX = if (ISLAND != 1) then {4} else {3};}; + if (isNil 'CTI_BASE_AREA_RANGE') then {CTI_BASE_AREA_MAX = if (ISLAND != 1) then {250} else {100};}; if (isNil 'CTI_BASE_FOB_MAX') then {CTI_BASE_FOB_MAX = 4}; //--- Maximum amount of FOBs which a side may place if (isNil 'CTI_BASE_HQ_REPAIR') then {CTI_BASE_HQ_REPAIR = 1}; //--- Determine whether the HQ can be repaired or not if (isNil 'CTI_BASE_STARTUP_PLACEMENT') then {CTI_BASE_STARTUP_PLACEMENT = 10000}; //--- Each side need to be further than x meters @@ -501,7 +501,7 @@ CTI_ARTILLERY_TIMEOUT = 180; //--- Delay between each fire mission CTI_ECONOMY_POOL_RESOURCES_PERCENTAGE_MIN = 30; //--- Keep values of 10 CTI_MARKERS_OPACITY = 0.5; -CTI_MARKERS_TOWN_AREA_RANGE = if !(MADE_FOR_STRATIS) then {250} else {150}; +CTI_MARKERS_TOWN_AREA_RANGE = if (ISLAND != 1) then {250} else {150}; CTI_MARKERS_UNITS_DEAD_DELAY = 50; CTI_MARKERS_VEHICLES_DEAD_DELAY = 125; @@ -552,7 +552,7 @@ CTI_HALO_COOLDOWN = 20*60; CTI_HALO_LASTTIME=-CTI_HALO_COOLDOWN; CTI_HALO_ALTITUDE = 3000; CTI_HALO_RATIO = 3; -CTI_UPGRADE_RATIO=if !(MADE_FOR_STRATIS) then {7} else {2}; +CTI_UPGRADE_RATIO = if (ISLAND != 1) then {7} else {2}; CTI_VOTE_RATIO=0.51; diff --git a/init.sqf b/init.sqf index 0274e1ea6..804a49ac4 100644 --- a/init.sqf +++ b/init.sqf @@ -4,7 +4,7 @@ setObjectViewDistance 4000; NET_LOG=False; -MADE_FOR_STRATIS=false; +ISLAND = 2; //--- 1: Stratis, 2: Altis, 3: Tanoa, 4: Malden, 5: VR //--- Early definition, will be override later on in the init files. CTI_P_SideJoined = civilian; From 621446d5587f959ffe94697d1ca480335acc1277 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 3 Dec 2018 22:05:20 +0100 Subject: [PATCH 037/267] MADE_FOR changes extended islands From a2800bfac7c5881579f5bab81375d60639e81055 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 17 Dec 2018 16:23:53 +0100 Subject: [PATCH 038/267] + Save current island --- Addons/Strat_mode/Functions/PERS_Load.sqf | 2 +- Addons/Strat_mode/Functions/PERS_save.sqf | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Functions/PERS_Load.sqf b/Addons/Strat_mode/Functions/PERS_Load.sqf index 9ec784b4e..88f6a9d6b 100644 --- a/Addons/Strat_mode/Functions/PERS_Load.sqf +++ b/Addons/Strat_mode/Functions/PERS_Load.sqf @@ -1,6 +1,6 @@ diag_log " :: SAVE :: Trying to load"; _towns = profileNamespace getVariable ["CTI_SAVE_TOWNS",[]]; -if (count _towns != count CTI_TOWNS) exitWith {diag_log " :: SAVE :: Loading fail";}; +if (count _towns != count CTI_TOWNS) exitWith {diag_log " :: SAVE :: Loading fail / Island changed";}; diag_log ":: SAVE :: Loading"; { _x setVariable ["cti_town_lastSideID", (_towns select _foreachindex) select 0, true];[_x, ((_towns select _foreachindex) select 1) call CTI_CO_FNC_GetSideFromID] call CTI_SE_FNC_OnTownCaptured;true }foreach (CTI_TOWNS); diff --git a/Addons/Strat_mode/Functions/PERS_save.sqf b/Addons/Strat_mode/Functions/PERS_save.sqf index 69cfd5b13..bc4d74fdb 100644 --- a/Addons/Strat_mode/Functions/PERS_save.sqf +++ b/Addons/Strat_mode/Functions/PERS_save.sqf @@ -47,6 +47,8 @@ profileNamespace setVariable ["CTI_SAVE_TOWNS",_towns]; _time = round (time/60); _left = ((_limit * 60) - _time); _save pushBack _left; + //save current island [H]Tom + _save pushBack ISLAND; profileNamespace setVariable [format ["CTI_SAVE_%1", _side],_save]; From fadc64aa74950967937aa0f4ab7ef13b5511862a Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Tue, 18 Dec 2018 16:03:52 +0100 Subject: [PATCH 039/267] Some changes for malden --- Addons/Strat_mode/init.sqf | 6 +++++- Server/Init/Init_Server.sqf | 8 ++++---- init.sqf | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 07fee4d8c..894002ea9 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -273,7 +273,11 @@ if (CTI_IsServer) then { }; //skipTime _it; //[H]Tom - loading saved time - if (!(profileNamespace getvariable ["CTI_SAVE_ENABLED",false])) then {skipTime _it;}; + if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { + if (!(profileNamespace getvariable ["CTI_SAVE_ENABLED",false]) || ISLAND != (profileNamespace getVariable format ["CTI_SAVE_%1", west] select 12)) then {skipTime _it;}; + } else { + skipTime _it; + }; // dynamic wheather 0 spawn WEATHER_HOOK; diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index feb13ac38..bbe075adc 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -163,7 +163,7 @@ while {! (((getMarkerPos format ["HELO_START_%1", _i])select 0) == 0)} do if (CTI_BASE_FOB_MAX > 0) then {_logic setVariable ["cti_fobs", [], true]}; //--- Startup vehicles - if (!(profileNamespace getvariable ["CTI_SAVE_ENABLED",false])) then { + if (missionNamespace getvariable "CTI_PERSISTANT" != 1 || (missionNamespace getvariable "CTI_PERSISTANT" == 1 && !(profileNamespace getvariable ["CTI_SAVE_ENABLED",false])) || (missionNamespace getvariable "CTI_PERSISTANT" == 1 && (profileNamespace getvariable ["CTI_SAVE_ENABLED",false]) && ISLAND != (profileNamespace getVariable format ["CTI_SAVE_%1", west] select 12))) then { { _model = _x select 0; _equipment = _x select 1; @@ -315,9 +315,9 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { diag_log "CTI_Mission_Performance: Starting Server"; while {!CTI_GameOver} do { _towns = count(((east) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_ACTIVE",[]]) + count(((west) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_ACTIVE",[]]); - + _arr = ["CTI_Mission_Performance:", - ["time", time], + ["time", time], ["fps", diag_fps], ["score_east", (scoreSide east)], ["score_west", (scoreSide west)], @@ -332,7 +332,7 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { ["total_objects", count(allMissionObjects "All")], ["active_towns", _towns] ]; - + diag_log _arr; sleep 60; }; diff --git a/init.sqf b/init.sqf index 804a49ac4..3172847be 100644 --- a/init.sqf +++ b/init.sqf @@ -103,7 +103,7 @@ if (CTI_IsServer) then { // load player saved informations CTI_PLAYER_VARIABLES=[]; if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { - if (profileNamespace getvariable ["CTI_SAVE_ENABLED",false]) then { + if (profileNamespace getvariable ["CTI_SAVE_ENABLED",false] && ISLAND == (profileNamespace getVariable format ["CTI_SAVE_%1", west] select 12)) then { _players= profileNamespace getVariable ["CTI_SAVE_PLAYERS",[]]; { diag_log format [" :: SAVE ::Loading player %1 ",(_x select 1 )];missionNamespace setVariable [_x select 0,_x select 1];CTI_PLAYER_VARIABLES pushBack (_x select 0); true} count _players; }; From e96676cf21a565f7b33309e6a52cbf3b6283a129 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 18 Dec 2018 16:15:46 +0100 Subject: [PATCH 040/267] Revert "Some changes for malden" This reverts commit fadc64aa74950967937aa0f4ab7ef13b5511862a. --- Addons/Strat_mode/init.sqf | 6 +----- Server/Init/Init_Server.sqf | 8 ++++---- init.sqf | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 894002ea9..07fee4d8c 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -273,11 +273,7 @@ if (CTI_IsServer) then { }; //skipTime _it; //[H]Tom - loading saved time - if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { - if (!(profileNamespace getvariable ["CTI_SAVE_ENABLED",false]) || ISLAND != (profileNamespace getVariable format ["CTI_SAVE_%1", west] select 12)) then {skipTime _it;}; - } else { - skipTime _it; - }; + if (!(profileNamespace getvariable ["CTI_SAVE_ENABLED",false])) then {skipTime _it;}; // dynamic wheather 0 spawn WEATHER_HOOK; diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index bbe075adc..feb13ac38 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -163,7 +163,7 @@ while {! (((getMarkerPos format ["HELO_START_%1", _i])select 0) == 0)} do if (CTI_BASE_FOB_MAX > 0) then {_logic setVariable ["cti_fobs", [], true]}; //--- Startup vehicles - if (missionNamespace getvariable "CTI_PERSISTANT" != 1 || (missionNamespace getvariable "CTI_PERSISTANT" == 1 && !(profileNamespace getvariable ["CTI_SAVE_ENABLED",false])) || (missionNamespace getvariable "CTI_PERSISTANT" == 1 && (profileNamespace getvariable ["CTI_SAVE_ENABLED",false]) && ISLAND != (profileNamespace getVariable format ["CTI_SAVE_%1", west] select 12))) then { + if (!(profileNamespace getvariable ["CTI_SAVE_ENABLED",false])) then { { _model = _x select 0; _equipment = _x select 1; @@ -315,9 +315,9 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { diag_log "CTI_Mission_Performance: Starting Server"; while {!CTI_GameOver} do { _towns = count(((east) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_ACTIVE",[]]) + count(((west) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_ACTIVE",[]]); - + _arr = ["CTI_Mission_Performance:", - ["time", time], + ["time", time], ["fps", diag_fps], ["score_east", (scoreSide east)], ["score_west", (scoreSide west)], @@ -332,7 +332,7 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { ["total_objects", count(allMissionObjects "All")], ["active_towns", _towns] ]; - + diag_log _arr; sleep 60; }; diff --git a/init.sqf b/init.sqf index 3172847be..804a49ac4 100644 --- a/init.sqf +++ b/init.sqf @@ -103,7 +103,7 @@ if (CTI_IsServer) then { // load player saved informations CTI_PLAYER_VARIABLES=[]; if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { - if (profileNamespace getvariable ["CTI_SAVE_ENABLED",false] && ISLAND == (profileNamespace getVariable format ["CTI_SAVE_%1", west] select 12)) then { + if (profileNamespace getvariable ["CTI_SAVE_ENABLED",false]) then { _players= profileNamespace getVariable ["CTI_SAVE_PLAYERS",[]]; { diag_log format [" :: SAVE ::Loading player %1 ",(_x select 1 )];missionNamespace setVariable [_x select 0,_x select 1];CTI_PLAYER_VARIABLES pushBack (_x select 0); true} count _players; }; From ba1dd9c009e9020d336ce0a6d25c9cececc4fc32 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 18 Dec 2018 16:15:50 +0100 Subject: [PATCH 041/267] Revert "+ Save current island" This reverts commit a2800bfac7c5881579f5bab81375d60639e81055. --- Addons/Strat_mode/Functions/PERS_Load.sqf | 2 +- Addons/Strat_mode/Functions/PERS_save.sqf | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Addons/Strat_mode/Functions/PERS_Load.sqf b/Addons/Strat_mode/Functions/PERS_Load.sqf index 88f6a9d6b..9ec784b4e 100644 --- a/Addons/Strat_mode/Functions/PERS_Load.sqf +++ b/Addons/Strat_mode/Functions/PERS_Load.sqf @@ -1,6 +1,6 @@ diag_log " :: SAVE :: Trying to load"; _towns = profileNamespace getVariable ["CTI_SAVE_TOWNS",[]]; -if (count _towns != count CTI_TOWNS) exitWith {diag_log " :: SAVE :: Loading fail / Island changed";}; +if (count _towns != count CTI_TOWNS) exitWith {diag_log " :: SAVE :: Loading fail";}; diag_log ":: SAVE :: Loading"; { _x setVariable ["cti_town_lastSideID", (_towns select _foreachindex) select 0, true];[_x, ((_towns select _foreachindex) select 1) call CTI_CO_FNC_GetSideFromID] call CTI_SE_FNC_OnTownCaptured;true }foreach (CTI_TOWNS); diff --git a/Addons/Strat_mode/Functions/PERS_save.sqf b/Addons/Strat_mode/Functions/PERS_save.sqf index bc4d74fdb..69cfd5b13 100644 --- a/Addons/Strat_mode/Functions/PERS_save.sqf +++ b/Addons/Strat_mode/Functions/PERS_save.sqf @@ -47,8 +47,6 @@ profileNamespace setVariable ["CTI_SAVE_TOWNS",_towns]; _time = round (time/60); _left = ((_limit * 60) - _time); _save pushBack _left; - //save current island [H]Tom - _save pushBack ISLAND; profileNamespace setVariable [format ["CTI_SAVE_%1", _side],_save]; From 98334392463e53af183b741cbbf892f84205a8db Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 18 Dec 2018 16:19:46 +0100 Subject: [PATCH 042/267] Only load persistance only with same number of towns --- Addons/Strat_mode/Functions/PERS_Load.sqf | 137 +++++++++++----------- 1 file changed, 71 insertions(+), 66 deletions(-) diff --git a/Addons/Strat_mode/Functions/PERS_Load.sqf b/Addons/Strat_mode/Functions/PERS_Load.sqf index 9ec784b4e..b10497484 100644 --- a/Addons/Strat_mode/Functions/PERS_Load.sqf +++ b/Addons/Strat_mode/Functions/PERS_Load.sqf @@ -1,84 +1,89 @@ diag_log " :: SAVE :: Trying to load"; _towns = profileNamespace getVariable ["CTI_SAVE_TOWNS",[]]; -if (count _towns != count CTI_TOWNS) exitWith {diag_log " :: SAVE :: Loading fail";}; +if (count _towns == count CTI_TOWNS) then { -diag_log ":: SAVE :: Loading"; -{ _x setVariable ["cti_town_lastSideID", (_towns select _foreachindex) select 0, true];[_x, ((_towns select _foreachindex) select 1) call CTI_CO_FNC_GetSideFromID] call CTI_SE_FNC_OnTownCaptured;true }foreach (CTI_TOWNS); + diag_log ":: SAVE :: Loading"; + { _x setVariable ["cti_town_lastSideID", (_towns select _foreachindex) select 0, true];[_x, ((_towns select _foreachindex) select 1) call CTI_CO_FNC_GetSideFromID] call CTI_SE_FNC_OnTownCaptured;true }foreach (CTI_TOWNS); -{ - _side=_x; - _logic= (_side) call CTI_CO_FNC_GetSideLogic; - _load=profileNamespace getVariable format ["CTI_SAVE_%1", _side]; - - //hq - diag_log format [":: SAVE :: Setting up hq",(_load select 0 )]; - _hq=(_side) call CTI_CO_FNC_GetSideHQ; - _hq setposATL (((_load select 0 ) select 0)select 0); - _hq setdir (((_load select 0 ) select 0)select 1); - if !(((_load select 0 ) select 1)) then {_hq setDamage 1}; - - // com funds - diag_log format [":: SAVE :: Setting team funds",(_load select 1 )]; - _logic setvariable ["cti_commander_funds",(_load select 1 ),true]; - - // upgrades - diag_log format [":: SAVE :: Loading Upgrades",(_load select 2 )]; - _logic setVariable ["cti_upgrades", (_load select 2 ), true]; - - //base area - diag_log format [":: SAVE :: Loading Base areas",(_load select 3 )]; - _logic setVariable ["cti_structures_areas", (_load select 3 ), true]; - - //structures - {diag_log format [":: SAVE :: Loading %1",_x]; - _build=[(_x select 0), _side,(_x select 1) select 0 ,(_x select 1) select 1 ] call CTI_SE_FNC_BuildStructure; - sleep 0.1; - _build setvariable ["cti_completion",100,true]; - true - } count (_load select 4); - - //WIP structures - {diag_log format [":: SAVE :: Loading %1",_x]; _build=[(_x select 0), _side,(_x select 1) select 0 ,(_x select 1) select 1 ] call CTI_SE_FNC_BuildStructure;_build setvariable ["cti_completion",100,true];true} count (_load select 5); - - //defences - {diag_log format [":: SAVE :: Loading %1",_x]; [_x select 0, _side,(( _x select 1) select 0), (( _x select 1) select 1),objnull, false, _x select 2] call CTI_SE_FNC_BuildDefense;true} count (_load select 6); - - //curent upgrade - diag_log format [":: SAVE :: Loading upgrade %1",(_load select 7)]; - if (((_load select 7) select 0 ) > -1) then {_logic setvariable ["cti_upgrade_lt",((_load select 7) select 2 ),true]; [_side,((_load select 7) select 0 ), ((_load select 7) select 1 )] spawn CTI_SE_FNC_StartUpgrade; }; - - //bases found - diag_log format [":: SAVE :: Loading detected bases %1 for side %2",(_load select 10),_x]; - _logic setVariable ["CTI_BASES_FOUND",(_load select 10),true]; + { + _side=_x; + _logic= (_side) call CTI_CO_FNC_GetSideLogic; + _load=profileNamespace getVariable format ["CTI_SAVE_%1", _side]; -} forEach [east,west]; + //hq + diag_log format [":: SAVE :: Setting up hq",(_load select 0 )]; + _hq=(_side) call CTI_CO_FNC_GetSideHQ; + _hq setposATL (((_load select 0 ) select 0)select 0); + _hq setdir (((_load select 0 ) select 0)select 1); + if !(((_load select 0 ) select 1)) then {_hq setDamage 1}; + + // com funds + diag_log format [":: SAVE :: Setting team funds",(_load select 1 )]; + _logic setvariable ["cti_commander_funds",(_load select 1 ),true]; + + // upgrades + diag_log format [":: SAVE :: Loading Upgrades",(_load select 2 )]; + _logic setVariable ["cti_upgrades", (_load select 2 ), true]; + + //base area + diag_log format [":: SAVE :: Loading Base areas",(_load select 3 )]; + _logic setVariable ["cti_structures_areas", (_load select 3 ), true]; + + //structures + {diag_log format [":: SAVE :: Loading %1",_x]; + _build=[(_x select 0), _side,(_x select 1) select 0 ,(_x select 1) select 1 ] call CTI_SE_FNC_BuildStructure; + sleep 0.1; + _build setvariable ["cti_completion",100,true]; + true + } count (_load select 4); + + //WIP structures + {diag_log format [":: SAVE :: Loading %1",_x]; _build=[(_x select 0), _side,(_x select 1) select 0 ,(_x select 1) select 1 ] call CTI_SE_FNC_BuildStructure;_build setvariable ["cti_completion",100,true];true} count (_load select 5); + //defences + {diag_log format [":: SAVE :: Loading %1",_x]; [_x select 0, _side,(( _x select 1) select 0), (( _x select 1) select 1),objnull, false, _x select 2] call CTI_SE_FNC_BuildDefense;true} count (_load select 6); + //curent upgrade + diag_log format [":: SAVE :: Loading upgrade %1",(_load select 7)]; + if (((_load select 7) select 0 ) > -1) then {_logic setvariable ["cti_upgrade_lt",((_load select 7) select 2 ),true]; [_side,((_load select 7) select 0 ), ((_load select 7) select 1 )] spawn CTI_SE_FNC_StartUpgrade; }; -_loadwest = profileNamespace getVariable format ["CTI_SAVE_%1", west]; -_loadeast = profileNamespace getVariable format ["CTI_SAVE_%1", east]; + //bases found + diag_log format [":: SAVE :: Loading detected bases %1 for side %2",(_load select 10),_x]; + _logic setVariable ["CTI_BASES_FOUND",(_load select 10),true]; -//current time [H]Tom -diag_log format [":: SAVE :: Time",(_loadwest select 8)]; -_currenttime = round (daytime); -if (_currenttime > (_loadwest select 8)) then {skipTime ((24 - _currenttime) + (_loadwest select 8));}; -if (_currenttime < (_loadwest select 8)) then {skipTime ((_loadwest select 8) - _currenttime);}; + } forEach [east,west]; -//team score west [H]Tom -diag_log format [":: SAVE :: TeamScoreWest",(_loadwest select 9)]; -west addScoreSide (_loadwest select 9); + _loadwest = profileNamespace getVariable format ["CTI_SAVE_%1", west]; + _loadeast = profileNamespace getVariable format ["CTI_SAVE_%1", east]; -//team score east [H]Tom -diag_log format [":: SAVE :: TeamScoreEast",(_loadeast select 9)]; -east addScoreSide (_loadeast select 9); + //current time [H]Tom + diag_log format [":: SAVE :: Time",(_loadwest select 8)]; + _currenttime = round (daytime); + if (_currenttime > (_loadwest select 8)) then {skipTime ((24 - _currenttime) + (_loadwest select 8));}; + if (_currenttime < (_loadwest select 8)) then {skipTime ((_loadwest select 8) - _currenttime);}; -//Time Left [H]Tom -diag_log format [":: SAVE :: TimeLimit",(_loadwest select 11)]; -if (_loadwest select 11 > 0) then { - missionNamespace setVariable ["CTI_MAX_MISSION_TIME",((_loadwest select 11)/60),true]; + + + //team score west [H]Tom + diag_log format [":: SAVE :: TeamScoreWest",(_loadwest select 9)]; + west addScoreSide (_loadwest select 9); + + //team score east [H]Tom + diag_log format [":: SAVE :: TeamScoreEast",(_loadeast select 9)]; + east addScoreSide (_loadeast select 9); + + //Time Left [H]Tom + diag_log format [":: SAVE :: TimeLimit",(_loadwest select 11)]; + if (_loadwest select 11 > 0) then { + missionNamespace setVariable ["CTI_MAX_MISSION_TIME",((_loadwest select 11)/60),true]; + }; + +} else { + diag_log " :: SAVE :: Loading fail"; }; + { _side=_x; _logic= (_side) call CTI_CO_FNC_GetSideLogic; From e6aa2b6ac430c87c5c96228cc90e0d4e06c0ae48 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 18 Dec 2018 16:43:45 +0100 Subject: [PATCH 043/267] Prenvent spawning of init vehicles on some conditions --- Server/Init/Init_Server.sqf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index feb13ac38..60e802631 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -163,7 +163,7 @@ while {! (((getMarkerPos format ["HELO_START_%1", _i])select 0) == 0)} do if (CTI_BASE_FOB_MAX > 0) then {_logic setVariable ["cti_fobs", [], true]}; //--- Startup vehicles - if (!(profileNamespace getvariable ["CTI_SAVE_ENABLED",false])) then { + if !((profileNamespace getvariable ["CTI_SAVE_ENABLED",false]) &&(count(profileNamespace getVariable ["CTI_SAVE_TOWNS",[]]) == count CTI_TOWNS)) then { (count (profileNamespace getVariable ["CTI_SAVE_TOWNS",[]]) == count CTI_TOWNS) { _model = _x select 0; _equipment = _x select 1; @@ -315,9 +315,9 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { diag_log "CTI_Mission_Performance: Starting Server"; while {!CTI_GameOver} do { _towns = count(((east) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_ACTIVE",[]]) + count(((west) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_ACTIVE",[]]); - + _arr = ["CTI_Mission_Performance:", - ["time", time], + ["time", time], ["fps", diag_fps], ["score_east", (scoreSide east)], ["score_west", (scoreSide west)], @@ -332,7 +332,7 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { ["total_objects", count(allMissionObjects "All")], ["active_towns", _towns] ]; - + diag_log _arr; sleep 60; }; From bcf608473eb84590dc48f17bc403ff5fd4aa3702 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 18 Dec 2018 16:44:31 +0100 Subject: [PATCH 044/267] Small error --- Server/Init/Init_Server.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index 60e802631..6fa5cdead 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -163,7 +163,7 @@ while {! (((getMarkerPos format ["HELO_START_%1", _i])select 0) == 0)} do if (CTI_BASE_FOB_MAX > 0) then {_logic setVariable ["cti_fobs", [], true]}; //--- Startup vehicles - if !((profileNamespace getvariable ["CTI_SAVE_ENABLED",false]) &&(count(profileNamespace getVariable ["CTI_SAVE_TOWNS",[]]) == count CTI_TOWNS)) then { (count (profileNamespace getVariable ["CTI_SAVE_TOWNS",[]]) == count CTI_TOWNS) + if !((profileNamespace getvariable ["CTI_SAVE_ENABLED",false]) &&(count(profileNamespace getVariable ["CTI_SAVE_TOWNS",[]]) == count CTI_TOWNS)) then { { _model = _x select 0; _equipment = _x select 1; From 2661e5fd7b43851da98eb1ec21188b3d44daf4b4 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Wed, 2 Jan 2019 01:21:07 +0100 Subject: [PATCH 045/267] for #264 1. really better if only moving spawn vehicles usable for spawn... 2. Land_Stone_Gate_F in "nearestbuildings" and "nearestbuilding -1" return empty []. 3. stonegate added to "missingspawnpos" variable but maybe have several others too so i do pos counting I hope this resolve the problem. --- Client/Functions/UI/Functions_UI_RespawnMenu.sqf | 8 ++++---- Common/Init/Init_CommonConstants.sqf | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf index a467acfc1..c00e1d100 100644 --- a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf +++ b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf @@ -245,16 +245,16 @@ CTI_UI_Respawn_OnRespawnReady = { CTI_P_LastRespawnTime=time; if !(_respawn_ai) then { //--- Stock respawn - if ((_where isKindOf "Car" || _where isKindOf "Wheeled_APC_F" || _where isKindOf "Land_Pod_Heli_Transport_04_medevac_F") && (_where emptyPositions "cargo")>0 && (locked _where) < 2 && abs (speed _where) < 5) then { + if ((_where isKindOf "Car" || _where isKindOf "Wheeled_APC_F" || _where isKindOf "Land_Pod_Heli_Transport_04_medevac_F") && (_where emptyPositions "cargo")>0 && (locked _where) < 2 && abs (speed _where) > 5) then { //Respawn in vehicles cargo player moveInCargo _where; } else { _spawn_at = [_where, 8, 30] call CTI_CO_FNC_GetRandomPosition; //try to find and position on building position - _nearestbuilding= nearestbuilding _spawn_at; - if (alive _nearestbuilding && ((_spawn_at distance2d _nearestbuilding) < 25) && (!(typeOF _nearestbuilding in CTI_BUILDINGPOS_MISSING))) then { - _buildingpos = _nearestbuilding buildingPos -1; + _nearestbuilding = nearestbuilding _spawn_at; + _buildingpos = _nearestbuilding buildingPos -1; + if (count _buildingpos > 0 && alive _nearestbuilding && ((_spawn_at distance2d _nearestbuilding) < 25) && (!(typeOF _nearestbuilding in CTI_BUILDINGPOS_MISSING))) then { if (count _buildingpos > 10) then { _buildingpos deleteRange [ceil(count _buildingpos / 3), count _buildingpos]; }; diff --git a/Common/Init/Init_CommonConstants.sqf b/Common/Init/Init_CommonConstants.sqf index 8a9679c11..1e3b2ea70 100644 --- a/Common/Init/Init_CommonConstants.sqf +++ b/Common/Init/Init_CommonConstants.sqf @@ -558,7 +558,7 @@ CTI_UPGRADE_RATIO = if (ISLAND != 1) then {7} else {2}; CTI_VOTE_RATIO=0.51; //Buildings without spawn positions -CTI_BUILDINGPOS_MISSING = ["Land_Dome_Small_F","Land_Dome_Big_F","Land_FuelStation_Shed_F","Land_fs_roof_F","Land_FuelStation_01_roof_F","Land_FuelStation_02_roof_F","Land_FuelStation_01_roof_malevil_F","Land_SM_01_shelter_wide_F","Land_Shed_Big_F","Land_Shed_Small_F","Land_SM_01_shelter_narrow_F","Land_TentHangar_V1_F","Land_Airport_01_hangar_F","Land_Shed_06_F","Land_MetalShelter_01_F","Land_MetalShelter_02_F","Land_WarehouseShelter_01_F","Land_SCF_01_shed_F"]; +CTI_BUILDINGPOS_MISSING = ["Land_Stone_Gate_F","Land_Dome_Small_F","Land_Dome_Big_F","Land_FuelStation_Shed_F","Land_fs_roof_F","Land_FuelStation_01_roof_F","Land_FuelStation_02_roof_F","Land_FuelStation_01_roof_malevil_F","Land_SM_01_shelter_wide_F","Land_Shed_Big_F","Land_Shed_Small_F","Land_SM_01_shelter_narrow_F","Land_TentHangar_V1_F","Land_Airport_01_hangar_F","Land_Shed_06_F","Land_MetalShelter_01_F","Land_MetalShelter_02_F","Land_WarehouseShelter_01_F","Land_SCF_01_shed_F"]; with missionNamespace do { if (isNil 'CTI_ARTILLERY_SETUP') then {CTI_ARTILLERY_SETUP = -1}; //--- Artillery status (-2: Disabled, -1: Artillery Computer, 0: Short, 1: Medium, 2: Long, 3: Far) From 25ef95a6d34bb8d2d04cc5378f6d5bde2c17ae7d Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 3 Jan 2019 20:37:18 +0100 Subject: [PATCH 046/267] Disable Halo if player waiting for revive --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 4 ++-- Addons/Strat_mode/Tablet/GUI_TabletMain.sqf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 3a03f6d70..5d81fbf64 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -59,7 +59,7 @@ switch (_action) do { _offset=_offset+1; }; case 5: { // CTI_Icon_halo - if (vehicle player == player && !CTI_P_PreBuilding && CTI_Base_HaloInRange && [CTI_P_SideJoined, CTI_UPGRADE_HALO, 1] call CTI_CO_FNC_HasUpgrade && ( (missionNamespace getVariable 'CTI_SM_HALO')==1)) then { + if (vehicle player == player && !CTI_P_PreBuilding && CTI_Base_HaloInRange && [CTI_P_SideJoined, CTI_UPGRADE_HALO, 1] call CTI_CO_FNC_HasUpgrade && ( (missionNamespace getVariable 'CTI_SM_HALO')==1) && !(player getvariable ["REV_UNC",false])) then { if (time - CTI_HALO_LASTTIME >= CTI_HALO_COOLDOWN) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [1,1,0,1]; @@ -755,7 +755,7 @@ switch (_action) do { if (isNull (driver _target)) then {player moveInDriver _target} else {0 spawn { hint "There is already a pilot";sleep 3;hintSilent "";}}; }; case "OnHalo": { - if !(vehicle player == player && !CTI_P_PreBuilding && CTI_Base_HaloInRange && [CTI_P_SideJoined, CTI_UPGRADE_HALO, 1] call CTI_CO_FNC_HasUpgrade && ( (missionNamespace getVariable 'CTI_SM_HALO')==1) && (time - CTI_HALO_LASTTIME >= CTI_HALO_COOLDOWN)) exitwith {false}; + if !(vehicle player == player && !CTI_P_PreBuilding && CTI_Base_HaloInRange && [CTI_P_SideJoined, CTI_UPGRADE_HALO, 1] call CTI_CO_FNC_HasUpgrade && ( (missionNamespace getVariable 'CTI_SM_HALO')==1 && !(player getvariable ["REV_UNC",false])) && (time - CTI_HALO_LASTTIME >= CTI_HALO_COOLDOWN)) exitwith {false}; closedialog 0; 0 execvm "Addons\ATM_airdrop\atm_airdrop.sqf" }; diff --git a/Addons/Strat_mode/Tablet/GUI_TabletMain.sqf b/Addons/Strat_mode/Tablet/GUI_TabletMain.sqf index f4f684f4d..42e80d251 100644 --- a/Addons/Strat_mode/Tablet/GUI_TabletMain.sqf +++ b/Addons/Strat_mode/Tablet/GUI_TabletMain.sqf @@ -34,7 +34,7 @@ while { true } do { //if ((CTI_Base_GearInRange || CTI_Base_GearInRange_Mobile || CTI_Base_GearInRange_FOB) && !CTI_P_PreBuilding) then {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210012) ctrlEnable true;} else {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210012) ctrlEnable false;}; if (!CTI_P_PreBuilding &&Client_AN_Connected) then {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210012) ctrlEnable true;} else {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210012) ctrlEnable false;}; if (!CTI_P_PreBuilding &&Client_AN_Connected && (CTI_Base_BarracksInRange || CTI_Base_LightInRange || CTI_Base_HeavyInRange || CTI_Base_AirInRange || CTI_Base_AmmoInRange || CTI_Base_RepairInRange || CTI_Base_NavalInRange)) then {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210013) ctrlEnable true;} else {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210013) ctrlEnable false;}; - if (vehicle player == player && !CTI_P_PreBuilding && CTI_Base_HaloInRange && [CTI_P_SideJoined, CTI_UPGRADE_HALO, 1] call CTI_CO_FNC_HasUpgrade && ( (missionNamespace getVariable 'CTI_SM_HALO')==1)) then {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210014) ctrlEnable true;} else {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210014) ctrlEnable false;}; + if (vehicle player == player && !CTI_P_PreBuilding && CTI_Base_HaloInRange && [CTI_P_SideJoined, CTI_UPGRADE_HALO, 1] call CTI_CO_FNC_HasUpgrade && ( (missionNamespace getVariable 'CTI_SM_HALO')==1) && !(player getvariable ["REV_UNC",false])) then {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210014) ctrlEnable true;} else {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210014) ctrlEnable false;}; if (vehicle player == player && (CTI_P_SideLogic getVariable "cti_commander") == group player && !CTI_P_PreBuilding && CTI_Base_HQInRange) then {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210015) ctrlEnable true;} else {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210015) ctrlEnable false;}; @@ -45,7 +45,7 @@ while { true } do { }; //if ((missionNamespace getVariable"CTI_SM_STRATEGIC") >0 ) then { - //!CTI_P_PreBuilding && ! CTI_P_Repairing + //!CTI_P_PreBuilding && ! CTI_P_Repairing if !(true && CTI_CL_FNC_IsPlayerCommander) then {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210010) ctrlEnable false;}; if !(true && CTI_CL_FNC_IsPlayerCommander && !(isNull ((CTI_P_SideJoined call CTI_CO_FNC_GetSideLogic) getVariable "CTI_PRIORITY") ) && time > (SM_Last_dis +SM_TO_dis) ) then {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210011) ctrlEnable false;}; /*} else { From bdbaa8d445f0c69b06b93c86a1ac9450e3401b17 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 3 Jan 2019 21:05:01 +0100 Subject: [PATCH 047/267] Loadout change only if vehicle open --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 5d81fbf64..f35e01eeb 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -393,7 +393,7 @@ switch (_action) do { _structures = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideStructures; _ammo_depots = [CTI_AMMO, _structures] call CTI_CO_FNC_GetSideStructuresByType; _available_ammo_depots = [_target, _ammo_depots, CTI_SERVICE_AMMO_DEPOT_RANGE] call CTI_UI_Service_GetBaseDepots; - if (!(_target getVariable ["CTI_AC_AIRCRAFT_LOADOUT_IS_BUSY",true]) && count (_available_ammo_depots) >0 && local _target ) then { + if (!(_target getVariable ["CTI_AC_AIRCRAFT_LOADOUT_IS_BUSY",true]) && count (_available_ammo_depots) >0 && local _target && locked _target < 2) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; } else { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0.3,0.3,0.3,1]; @@ -728,7 +728,7 @@ switch (_action) do { _ammo_depots = [CTI_AMMO, _structures, player] call CTI_CO_FNC_GetSideStructuresByType; _available_ammo_depots = [_target, _ammo_depots, CTI_SERVICE_AMMO_DEPOT_RANGE] call CTI_UI_Service_GetBaseDepots; _available_ammo_trucks = [_target, CTI_SPECIAL_AMMOTRUCK, CTI_SERVICE_AMMO_TRUCK_RANGE] call CTI_CO_FNC_GetNearestSpecialVehicles; - if (!(_target getVariable ["CTI_AC_AIRCRAFT_LOADOUT_IS_BUSY",true]) && count (_available_ammo_depots + _available_ammo_trucks) >0 && local _target ) then { + if (!(_target getVariable ["CTI_AC_AIRCRAFT_LOADOUT_IS_BUSY",true]) && count (_available_ammo_depots + _available_ammo_trucks) >0 && local _target && locked _target < 2) then { uiNamespace setVariable ['HAL_TARG',_target]; closedialog 0; createDialog "CTI_RscTabletAircraftLoadoutMenu"; From 8d388d4d9a163a7af43ebdfb045e4361ac9c5788 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 14 Jan 2019 18:30:30 +0100 Subject: [PATCH 048/267] Forcing run order on inits --- Addons/Strat_mode/init.sqf | 4 ++++ Client/Init/Init_Client.sqf | 3 +++ 2 files changed, 7 insertions(+) diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 07fee4d8c..e57ef0f32 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -84,6 +84,10 @@ with missionNamespace do { }; }; + + +waitUntil {CTI_EAST getVariable ["CTI_LOAD_COMPLETED",false]}; + if (CTI_IsServer) then { //constants for the server diff --git a/Client/Init/Init_Client.sqf b/Client/Init/Init_Client.sqf index 9b8f449d9..971ea7cbf 100644 --- a/Client/Init/Init_Client.sqf +++ b/Client/Init/Init_Client.sqf @@ -105,6 +105,9 @@ if (isMultiplayer) then { }; +waitUntil {CTI_P_SideLogic getVariable ["CTI_LOAD_COMPLETED",false]}; + + //--- Initialize the client PV call compile preprocessFile "Client\Init\Init_PublicVariables.sqf"; From a2ab544b532bc750bd90f8dbafb1477b21c616f4 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 31 Jan 2019 19:03:06 +0100 Subject: [PATCH 049/267] Ship spawn bug again. Better ground spawn for ships, if no water pos in 75m. --- Common/Functions/Common_CreateVehicle.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index e1f2d654c..154525bc5 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -106,7 +106,7 @@ if (isNull _created) then { if (_vehicle isKindOf "SHIP" && _side != CTI_RESISTANCE_ID && !(surfaceIsWater position _vehicle)) then { _wp = [getPos _vehicle, 0, 75, 7, 2, 1, 0] call BIS_fnc_findSafePos; - if (count _wp == 0 || !(surfaceIsWater _wp)) then {_wp = getPos _vehicle;}; + if (count _wp == 0 || !(surfaceIsWater _wp)) then {_wp = (getPos _vehicle) findEmptyPosition [0,100,"O_T_VTOL_02_vehicle_dynamicLoadout_F"];}; _vehicle setPos _wp; }; From f0fb002a685837c41d717755d8c709421d710cc9 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Wed, 6 Feb 2019 19:44:55 +0100 Subject: [PATCH 050/267] Adjust daytime for other islands 3 is Tanoa, all others have good daytime --- Addons/Strat_mode/init.sqf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index e57ef0f32..815600612 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -328,8 +328,11 @@ if (CTI_IsServer) then { 0 spawn { _day_ratio=14/CTI_WEATHER_FAST; _nigth_ratio=10/CTI_WEATHER_FAST_NIGTH; + _sunrise = 5; + _sunset = 19; + if (ISLAND == 3) then {_sunrise = 7; _sunset = 18;}; while {!CTI_Gameover} do { - if (daytime > 5 && daytime <19 ) then { + if (daytime > _sunrise && daytime < _sunset) then { if (timeMultiplier != _day_ratio) then {setTimeMultiplier _day_ratio;}; } else { if (timeMultiplier != _nigth_ratio) then {setTimeMultiplier _nigth_ratio;}; From e7738f3dc9729df53f6ca1b4d9cfaaca7f2dda8d Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 9 Feb 2019 01:56:01 +0100 Subject: [PATCH 051/267] for #267 Huron container is "Thing".... --- Common/Functions/Common_CreateVehicle.sqf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index 154525bc5..822890fe1 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -260,7 +260,11 @@ if ((missionNamespace getVariable [format ["%1", typeOf _vehicle],["","","",""," if (_locked && !( _vehicle isKindOf "Thing") && !( _vehicle isKindOf "StaticWeapon") && !( _vehicle isKindOf "UAV") && !( _vehicle isKindOf "UGV_01_base_F") && !( _vehicle isKindOf "B_T_UAV_03_dynamicLoadout_F")) then {_vehicle lock 2} else {_vehicle lock 0}; -if (_net && !( _vehicle isKindOf "Thing")) then {_vehicle setVariable ["cti_net", _side, true]}; +if (_net && !( _vehicle isKindOf "Thing")) then { + _vehicle setVariable ["cti_net", _side, true]; + } else { + if (_vehicle isKindOf "Slingload_01_Base_F") then {_vehicle setVariable ["cti_net", _side, true];}; + }; if (_handle) then { _vehicle addEventHandler ["killed", format["[_this select 0, _this select 1, %1] spawn CTI_CO_FNC_OnUnitKilled", _side]]; //--- Called on destruction _vehicle addEventHandler ["hit", {_this spawn CTI_CO_FNC_OnUnitHit}]; //--- Register importants hits From fa9c11cb81491970527280f40bd8e396cd57a126 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 9 Feb 2019 01:59:49 +0100 Subject: [PATCH 052/267] continue #267 Change respawn menu label for med containers. --- Client/Functions/UI/Functions_UI_RespawnMenu.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf index c00e1d100..cad919971 100644 --- a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf +++ b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf @@ -92,6 +92,7 @@ CTI_UI_Respawn_GetRespawnLabel = { _var = missionNamespace getVariable format ["CTI_%1_%2", CTI_P_SideJoined, _location getVariable "cti_structure_type"]; _value = (_var select 0) select 1; }; + case (typeOf _location == "B_Slingload_01_Medevac_F"): { _value = "Huron Medical Container" }; case (_location == (leader group player)) : {_value=format ["[LEADER] %1",name _location]}; case (_location isKindOf "AllVehicles"&& !(_location == (leader group player))): { _value = getText(configFile >> "CfgVehicles" >> typeOf _location >> "displayName") }; }; From 651a097bc6d9638fbac157f5a5b700490d2befda Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 9 Feb 2019 15:59:47 +0100 Subject: [PATCH 053/267] Respawn menu correction Remove pods and containers from Respawn menu when its flying. --- Client/Functions/UI/Functions_UI_RespawnMenu.sqf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf index cad919971..26f644164 100644 --- a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf +++ b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf @@ -38,6 +38,11 @@ CTI_UI_Respawn_GetAvailableLocations = { _ignore_mobile_crew = []; if ((missionNamespace getVariable "CTI_RESPAWN_MOBILE") > 0) then { _mobile = (CTI_DeathPosition) call CTI_UI_Respawn_GetMobileRespawn; + _mobile_at_sky = []; + for "_i" from 0 to ((count _mobile) - 1) do { + if ((getposATL (_mobile select _i) select 2) > 4) then {_mobile_at_sky = _mobile_at_sky + [_mobile select _i]}; + }; + _mobile = _mobile - _mobile_at_sky; _list = _list + _mobile; {{if (group _x == group player) then {_ignore_mobile_crew pushBack _x}} forEach crew _x} forEach _mobile; }; From e44b98b49775087f48b16c52f26aa3667d7ba50f Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 16 Feb 2019 22:41:15 +0100 Subject: [PATCH 054/267] vehicle recycle delay 40min --- Rsc/Parameters.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rsc/Parameters.hpp b/Rsc/Parameters.hpp index 4a2515ca8..4fb5b3b92 100644 --- a/Rsc/Parameters.hpp +++ b/Rsc/Parameters.hpp @@ -153,7 +153,7 @@ class Params { title = $STR_CTI_VEHICLES_EMPTY_TIMEOUT; values[] = {60,120,180,240,300,600,1200,1800,2400,3000,3600}; texts[] = {"1 Minute","2 Minutes","3 Minutes","4 Minutes","5 Minutes","10 Minutes","20 Minutes","30 Minutes","40 Minutes","50 Minutes","1 Hour"}; - default = 3600; + default = 2400; }; class CTI_GRAPHICS_TG_MAX { title = $STR_CTI_GRAPHICS_TG_MAX; From d7a75ba88cfc0bc4ab4747cd90654dc0a2934cbe Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 9 Mar 2019 18:13:00 +0100 Subject: [PATCH 055/267] First Patrol spawn 4min after start --- Addons/Strat_mode/PATROL_AI/PAI_ServerLoop.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/PATROL_AI/PAI_ServerLoop.sqf b/Addons/Strat_mode/PATROL_AI/PAI_ServerLoop.sqf index 24c9803bc..438518e78 100644 --- a/Addons/Strat_mode/PATROL_AI/PAI_ServerLoop.sqf +++ b/Addons/Strat_mode/PATROL_AI/PAI_ServerLoop.sqf @@ -4,7 +4,7 @@ #define MIN_FPS 25 waitUntil {CTI_Init_Server && CTI_Init_Strat&& CTI_InitTowns}; -sleep 30; +sleep 240; if ((missionNamespace getVariable ["CTI_SM_PATROLS",0])==0) exitWith {false}; while { !CTI_GameOver} do From 478e1f1d1d5d5f5f20a3686b7b99f49b5a757c27 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 10 Mar 2019 14:22:42 +0100 Subject: [PATCH 056/267] Fix for #268 --- Rsc/Resources.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Rsc/Resources.hpp b/Rsc/Resources.hpp index fbb66b63b..e7d2c7b02 100644 --- a/Rsc/Resources.hpp +++ b/Rsc/Resources.hpp @@ -538,6 +538,7 @@ class RscMapControl { showCountourInterval = 0; scaleMin = 0.001; scaleMax = 1.0; + widthRailWay = 4; scaleDefault = 0.16; maxSatelliteAlpha = 0.85; alphaFadeStartScale = 0.35; From 8a5e7cdcd39d60d884fab3e6b2509b795d861d07 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 10 Mar 2019 14:27:29 +0100 Subject: [PATCH 057/267] Fix for #265 --- Addons/Strat_mode/HUD/HUD_GetTargets.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/Addons/Strat_mode/HUD/HUD_GetTargets.sqf b/Addons/Strat_mode/HUD/HUD_GetTargets.sqf index d4280f225..20c630fe6 100644 --- a/Addons/Strat_mode/HUD/HUD_GetTargets.sqf +++ b/Addons/Strat_mode/HUD/HUD_GetTargets.sqf @@ -12,6 +12,7 @@ _a_targs= player nearTargets (HUD_MAX_RANGE); if ((_x select 4) isKindOf "Air") then {_targs pushBack _x;}; if ((_x select 4) isKindOf "Ship") then {_targs pushBack _x;}; }; + true } count _a_targs; From 2020de2b48eeed7c36d411edda0a644ab5c65041 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 10 Mar 2019 14:33:57 +0100 Subject: [PATCH 058/267] Update SM_F_TownDrawConnect.sqf --- Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf b/Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf index 2c4c2d2d3..0db547b42 100644 --- a/Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf +++ b/Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf @@ -8,9 +8,8 @@ if (!(CTI_P_SideJoined == resistance))then { _neigh= _ct getVariable "CTI_Neigh"; sleep 0.3; }; - _o = if (ISLAND != 1) then {500} else {0}; { - [getPos _ct,getPos _x,"ColorBlack",_o] call CTI_SM_Connect; + [getPos _ct,getPos _x,"ColorBlack",CTI_MARKERS_TOWN_AREA_RANGE] call CTI_SM_Connect; } forEach _neigh; } forEach CTI_Towns; }; \ No newline at end of file From 1f5925d392b369226cb57bd480c9929abaab5c0a Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Tue, 12 Mar 2019 21:36:03 +0100 Subject: [PATCH 059/267] small change --- Server/Init/Init_Server.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index 6fa5cdead..a8749cfc8 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -295,8 +295,8 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { }; 0 spawn { while {!CTi_GameOver} do { - sleep 270 +random (60); 0 call PERS_SAVE; + sleep 270 +random (60); }; }; } else { From 5ef16a31412171e776331949875432ba040416da Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Fri, 15 Mar 2019 13:00:24 +0100 Subject: [PATCH 060/267] small change 2 --- Server/Init/Init_Server.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index a8749cfc8..a79cd3768 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -294,6 +294,7 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { } forEach [east,west]; }; 0 spawn { + sleep 270; while {!CTi_GameOver} do { 0 call PERS_SAVE; sleep 270 +random (60); From 71345297e5abb4ea1610bc13e29b151f9605c8a9 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 17 Mar 2019 20:36:12 +0100 Subject: [PATCH 061/267] for #240 thx Z --- Client/Init/Init_PublicVariables.sqf | 3 ++- Server/Functions/Server_BuildStructure.sqf | 2 +- Server/Functions/Server_OnBuildingDestroyed.sqf | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Client/Init/Init_PublicVariables.sqf b/Client/Init/Init_PublicVariables.sqf index a22da7f69..420c14b7d 100644 --- a/Client/Init/Init_PublicVariables.sqf +++ b/Client/Init/Init_PublicVariables.sqf @@ -130,7 +130,8 @@ with missionNamespace do { _marker setMarkerTypeLocal format["%1installation", CTI_P_MarkerPrefix]; _marker setMarkerColorLocal "ColorBlack"; _marker setMarkerSizeLocal [0.75, 0.75]; - _type = _structure getVariable ["cti_structure_type", ""]; + //_type = _structure getVariable ["cti_structure_type", ""]; + _type = (missionNamespace getVariable format ["CTI_%1_%2", CTI_P_SideJoined, _structure getVariable ["cti_structure_type",""]]) select 0 select 2; _marker setMarkerTextLocal _type; [_structure,_marker] spawn { private ["_structure","_marker"]; diff --git a/Server/Functions/Server_BuildStructure.sqf b/Server/Functions/Server_BuildStructure.sqf index 4ac6ea900..ee13d8d82 100644 --- a/Server/Functions/Server_BuildStructure.sqf +++ b/Server/Functions/Server_BuildStructure.sqf @@ -50,7 +50,7 @@ _structure setVariable ["cti_completion", 10,true]; _structure setVariable ["cti_completion_ratio", CTI_BASE_CONSTRUCTION_RATIO_INIT,true]; // _structure setVariable ["cti_structures_iteration", round(CTI_BASE_WORKERS_BUILD_COEFFICIENT / ((_var select 3)/100))]; _structure setVariable ["cti_structures_iteration", (_var select 3)/100,true]; -_structure setVariable ["cti_structure_type", ((_var select 0) select 0)]; +_structure setVariable ["cti_structure_type", ((_var select 0) select 0),true]; _logic = (_side) call CTI_CO_FNC_GetSideLogic; _logic setVariable ["cti_structures_wip", (_logic getVariable "cti_structures_wip") + [_structure] - [objNull],true]; diff --git a/Server/Functions/Server_OnBuildingDestroyed.sqf b/Server/Functions/Server_OnBuildingDestroyed.sqf index 7b6c98fff..debfded2c 100644 --- a/Server/Functions/Server_OnBuildingDestroyed.sqf +++ b/Server/Functions/Server_OnBuildingDestroyed.sqf @@ -76,7 +76,7 @@ if !(_sell) then { _structure setVariable ["cti_completion_ratio", _completion_ratio * CTI_BASE_CONSTRUCTION_RATIO_ON_DEATH,true]; // _structure setVariable ["cti_structures_iteration", round(CTI_BASE_WORKERS_BUILD_COEFFICIENT / ((_var select 3)/100))]; _structure setVariable ["cti_structures_iteration", (_var select 3)/100,true]; - _structure setVariable ["cti_structure_type", ((_var select 0) select 0)]; + _structure setVariable ["cti_structure_type", ((_var select 0) select 0),true]; [_side, _structure, _variable, _position, _direction] spawn CTI_SE_FNC_HandleStructureConstruction; From c83df4ca327ab212dc5bef18a717f784d3576061 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 19 Mar 2019 19:37:04 +0100 Subject: [PATCH 062/267] Refactoring tasks tasks are now managed on server --- Addons/Strat_mode/Functions/TASKS_loop.sqf | 24 ++++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/Addons/Strat_mode/Functions/TASKS_loop.sqf b/Addons/Strat_mode/Functions/TASKS_loop.sqf index 153eaaa31..26eecd672 100644 --- a/Addons/Strat_mode/Functions/TASKS_loop.sqf +++ b/Addons/Strat_mode/Functions/TASKS_loop.sqf @@ -13,11 +13,11 @@ CTI_TASK_TYPE_DEFEND=1; CTI_TASK_TYPE_BUILD=2; CTI_TASK_TYPE_EVACUATE=3; -//List of current task the player has +//List of current task the server has TASKS_LIST=[]; //other values used but the script -_side=CTI_P_SideJoined; +_side=_this; _logic= CTI_P_SideJoined call CTI_CO_FNC_GetSideLogic; _sideID = CTI_P_SideJoined call CTI_CO_FNC_GetSideID; @@ -61,10 +61,10 @@ while {!CTI_GAMEOVER} do { _town=_x; if ((TASKS_LIST findif {(_x select 0) == CTI_TASK_TYPE_ATTACK && (_x select 1) == _town}) == -1) then { - _taskname=format ["A_%1_%2",ceil(random(100000)),ceil(time)]; - TASKS_LIST pushBack [CTI_TASK_TYPE_ATTACK,_town,_taskname]; + _taskname=format ["A_%1_%2_%3",_side,ceil(random(100000)),ceil(time)]; _tasktext=format ["Attack %1",_town getvariable ["cti_town_name",""]]; - [player, _taskname, [_tasktext,_tasktext,""], _town, "CREATED", 1, true, "attack", true] call BIS_fnc_taskCreate; + waitUntil {_taskname==[_side, _taskname, [_tasktext,_tasktext,""], _town, "CREATED", 1, true, "attack", true] call BIS_fnc_taskCreate}; + if ([_taskname] call BIS_fnc_taskExists) then {TASKS_LIST pushBack [CTI_TASK_TYPE_ATTACK,_town,_taskname];}; }; true } count _active_towns; @@ -89,10 +89,11 @@ while {!CTI_GAMEOVER} do _town=_x; if ((_town getvariable ["cti_town_sideID",-1]) == _sideID && (_town getvariable ["cti_town_occupation_active",false]) ) then { if ((TASKS_LIST findif {(_x select 0) == CTI_TASK_TYPE_DEFEND && (_x select 1) == _town}) == -1) then { - _taskname=format ["D_%1_%2",ceil(random(100000)),ceil(time)]; - TASKS_LIST pushBack [CTI_TASK_TYPE_DEFEND,_town,_taskname]; + _taskname=format ["D_%1_%2_%3",_side,ceil(random(100000)),ceil(time)]; _tasktext=format ["Defend %1",_town getvariable ["cti_town_name",""]]; - [player, _taskname, [_tasktext,_tasktext,""], _town, "CREATED", 1, true, "defend", true] call BIS_fnc_taskCreate; + waitUntil {_taskname==[_side, _taskname, [_tasktext,_tasktext,""], _town, "CREATED", 1, true, "defend", true] call BIS_fnc_taskCreate}; + if ([_taskname] call BIS_fnc_taskExists) then {TASKS_LIST pushBack [CTI_TASK_TYPE_DEFEND,_town,_taskname];}; + }; }; true @@ -103,12 +104,13 @@ while {!CTI_GAMEOVER} do { _task=TASKS_LIST select _x; - [(_task select 2), "CANCELED", false] call BIS_fnc_taskSetState; - [(_task select 2) ] call BIS_fnc_deleteTask; + [(_task select 2), "CANCELED"] call BIS_fnc_taskSetState; + sleep 0.5; + waitUntil {[(_task select 2) ] call BIS_fnc_deleteTask}; true } count _to_delete; { - TASKS_LIST deleteAt _x; + if !([TASKS_LIST select _x select 2] call BIS_fnc_taskExists) then {TASKS_LIST deleteAt _x}; true } count _to_delete; From 25dcb5e661728edc6f074abfd09c7f4462b61ed3 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 19 Mar 2019 19:40:56 +0100 Subject: [PATCH 063/267] More on tasks --- Addons/Strat_mode/Functions/TASKS_loop.sqf | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Addons/Strat_mode/Functions/TASKS_loop.sqf b/Addons/Strat_mode/Functions/TASKS_loop.sqf index 26eecd672..aa6493d24 100644 --- a/Addons/Strat_mode/Functions/TASKS_loop.sqf +++ b/Addons/Strat_mode/Functions/TASKS_loop.sqf @@ -13,8 +13,8 @@ CTI_TASK_TYPE_DEFEND=1; CTI_TASK_TYPE_BUILD=2; CTI_TASK_TYPE_EVACUATE=3; -//List of current task the server has -TASKS_LIST=[]; +//List of current task +_TASKS_LIST=[]; //other values used but the script _side=_this; @@ -40,7 +40,7 @@ while {!CTI_GAMEOVER} do }; - } foreach TASKS_LIST; + } foreach _TASKS_LIST; // CLEAN DEFENSE TASKS { @@ -49,7 +49,7 @@ while {!CTI_GAMEOVER} do if ((_town getvariable ["cti_town_sideID",-1]) == _sideID && !(_town getvariable ["cti_town_occupation_active",false]) ) then {_to_delete pushBackUnique _forEachIndex}; }; - } foreach TASKS_LIST; + } foreach _TASKS_LIST; //***************************************************************** @@ -60,11 +60,11 @@ while {!CTI_GAMEOVER} do { _town=_x; - if ((TASKS_LIST findif {(_x select 0) == CTI_TASK_TYPE_ATTACK && (_x select 1) == _town}) == -1) then { + if ((_TASKS_LIST findif {(_x select 0) == CTI_TASK_TYPE_ATTACK && (_x select 1) == _town}) == -1) then { _taskname=format ["A_%1_%2_%3",_side,ceil(random(100000)),ceil(time)]; _tasktext=format ["Attack %1",_town getvariable ["cti_town_name",""]]; waitUntil {_taskname==[_side, _taskname, [_tasktext,_tasktext,""], _town, "CREATED", 1, true, "attack", true] call BIS_fnc_taskCreate}; - if ([_taskname] call BIS_fnc_taskExists) then {TASKS_LIST pushBack [CTI_TASK_TYPE_ATTACK,_town,_taskname];}; + if ([_taskname] call BIS_fnc_taskExists) then {_TASKS_LIST pushBack [CTI_TASK_TYPE_ATTACK,_town,_taskname];}; }; true } count _active_towns; @@ -88,11 +88,11 @@ while {!CTI_GAMEOVER} do { _town=_x; if ((_town getvariable ["cti_town_sideID",-1]) == _sideID && (_town getvariable ["cti_town_occupation_active",false]) ) then { - if ((TASKS_LIST findif {(_x select 0) == CTI_TASK_TYPE_DEFEND && (_x select 1) == _town}) == -1) then { + if ((_TASKS_LIST findif {(_x select 0) == CTI_TASK_TYPE_DEFEND && (_x select 1) == _town}) == -1) then { _taskname=format ["D_%1_%2_%3",_side,ceil(random(100000)),ceil(time)]; _tasktext=format ["Defend %1",_town getvariable ["cti_town_name",""]]; waitUntil {_taskname==[_side, _taskname, [_tasktext,_tasktext,""], _town, "CREATED", 1, true, "defend", true] call BIS_fnc_taskCreate}; - if ([_taskname] call BIS_fnc_taskExists) then {TASKS_LIST pushBack [CTI_TASK_TYPE_DEFEND,_town,_taskname];}; + if ([_taskname] call BIS_fnc_taskExists) then {_TASKS_LIST pushBack [CTI_TASK_TYPE_DEFEND,_town,_taskname];}; }; }; @@ -103,14 +103,14 @@ while {!CTI_GAMEOVER} do // DO THE CLEANUP { - _task=TASKS_LIST select _x; + _task=_TASKS_LIST select _x; [(_task select 2), "CANCELED"] call BIS_fnc_taskSetState; sleep 0.5; waitUntil {[(_task select 2) ] call BIS_fnc_deleteTask}; true } count _to_delete; { - if !([TASKS_LIST select _x select 2] call BIS_fnc_taskExists) then {TASKS_LIST deleteAt _x}; + if !([_TASKS_LIST select _x select 2] call BIS_fnc_taskExists) then {_TASKS_LIST deleteAt _x}; true } count _to_delete; From 78841ab2c539a3bb159bb73a19fac1fbed0f0d9f Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Fri, 22 Mar 2019 16:21:55 +0100 Subject: [PATCH 064/267] Updated Stat tracking to new format v2 --- Server/FSM/update_victory.fsm | 44 ++++++++++++++++++++++++++++------- Server/Init/Init_Server.sqf | 41 ++++++++++++++++++++++++++++---- 2 files changed, 72 insertions(+), 13 deletions(-) diff --git a/Server/FSM/update_victory.fsm b/Server/FSM/update_victory.fsm index 693775e07..3bcc2fb5f 100644 --- a/Server/FSM/update_victory.fsm +++ b/Server/FSM/update_victory.fsm @@ -15,8 +15,8 @@ link3[] = {2,4}; link4[] = {4,5}; link5[] = {5,6}; link6[] = {6,3}; -globals[] = {0.000000,0,0,0,0,640,480,1,164,6316128,1,-620.422607,163.824570,138.236649,-571.857727,635,885,1}; -window[] = {2,-1,-1,-1,-1,931,150,1405,150,3,653}; +globals[] = {0.000000,0,0,0,0,640,480,1,164,6316128,1,-626.312195,169.713379,529.355530,-580.065979,635,885,1}; +window[] = {2,-1,-1,-1,-1,963,182,1437,182,3,653}; *//*%FSM*/ class FSM { @@ -82,20 +82,48 @@ class FSM " {_townvalue=_townvalue+ (_x getVariable ""cti_town_value""); } ForEach ((_x) call CTI_CO_FNC_GetFriendlyTowns);" \n " _factories = 0;" \n " {_factories = _factories + count([_x, _structures] call CTI_CO_FNC_GetSideStructuresByType)} forEach (missionNamespace getVariable format[""CTI_%1_Factories"", _side]);" \n - " if (( ( time > _max_time && _max_time != 0) || !(alive _hq) && _victory_hq == 1 || (!(alive _hq) && _factories == 0)) && !CTI_GameOver) exitWith { " \n - " diag_log [""CTI_Mission_Performance: GameOver losse"", _x]; " \n + " if (( ( time > _max_time && _max_time != 0) || !(alive _hq) && _victory_hq == 1 || (!(alive _hq) && _factories == 0)) && !CTI_GameOver) exitWith { " \n + " diag_log[[""CTI_DataPacket"", ""GameOver""], " \n + " [""Version"", 2], //version of DiscordBot logReader" \n + " [""Map"", worldName]," \n + " [""Side"", _x]," \n + " [""Lost"", true]," \n + " [""HQ_Alive"", (alive _hq)]," \n + " [""Towns_Owned"", _towns]," \n + " [""Towns_Total"", _total]," \n + " [""Factories"", _factories]," \n + " [""Town_Value"", _townvalue]" \n + " ]; " \n " [""CLIENT"", ""Client_OnMissionEnding"", [_x, ""loose""]] call CTI_CO_FNC_NetSend;" \n " _end=true;" \n - "" \n " };" \n " if (_towns == _total && !CTI_GameOver) exitWith {" \n - " diag_log [""CTI_Mission_Performance: GameOver win"", _x];" \n + " diag_log[[""CTI_DataPacket"", ""GameOver""], " \n + " [""Version"", 2], //version of DiscordBot logReader" \n + " [""Map"", worldName]," \n + " [""Side"", _x]," \n + " [""Lost"", false]," \n + " [""HQ_Alive"", (alive _hq)]," \n + " [""Towns_Owned"", _towns]," \n + " [""Towns_Total"", _total]," \n + " [""Factories"", _factories]," \n + " [""Town_Value"", _townvalue]" \n + " ]; " \n " [""CLIENT"", ""Client_OnMissionEnding"", [_x, ""win""]] call CTI_CO_FNC_NetSend;" \n " _end=true;" \n - "" \n " };" \n " if (_townvalue > (_total_value*0.75) && !CTI_GameOver) exitWith {" \n - " diag_log [""CTI_Mission_Performance: GameOver eco win"", _x];" \n + " diag_log[[""CTI_DataPacket"", ""GameOver""], " \n + " [""Version"", 2], //version of DiscordBot logReader" \n + " [""Map"", worldName]," \n + " [""Side"", _x]," \n + " [""Lost"", false]," \n + " [""HQ_Alive"", (alive _hq)]," \n + " [""Towns_Owned"", _towns]," \n + " [""Towns_Total"", _total]," \n + " [""Factories"", _factories]," \n + " [""Town_Value"", _townvalue]" \n + " ]; " \n " [""CLIENT"", ""Client_OnMissionEnding"", [_x, ""win""]] call CTI_CO_FNC_NetSend;" \n " _end=true;" \n " };" \n diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index a79cd3768..4b5f83aa9 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -313,17 +313,43 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { //Logging of varius values 0 spawn { sleep 100; //wait for everything to finish loading - diag_log "CTI_Mission_Performance: Starting Server"; + _version = 2; //version of DiscordBot logReader + _arr = [["CTI_DataPacket", "Header"], + ["Version", _version], + ["Map", worldName] + ]; + diag_log _arr; while {!CTI_GameOver} do { - _towns = count(((east) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_ACTIVE",[]]) + count(((west) call CTI_CO_FNC_GetSideLogic) getVariable ["CTI_ACTIVE",[]]); - - _arr = ["CTI_Mission_Performance:", + east_sl = (east) call CTI_CO_FNC_GetSideLogic; + west_sl = (west) call CTI_CO_FNC_GetSideLogic; + _towns = count(east_sl getVariable ["CTI_ACTIVE",[]]) + count(west_sl getVariable ["CTI_ACTIVE",[]]); + _players = []; + { + _players pushBack [name _x, str (side _x), getPlayerUID _x, getPlayerScores _x, getPos _x]; + } forEach allPlayers - entities "HeadlessClient_F"; + + _west_towns = []; + { + _west_towns pushBack str _x; + } forEach (west call CTI_CO_FNC_GetSideTowns); + _east_towns = []; + { + _east_towns pushBack str _x; + } forEach (east call CTI_CO_FNC_GetSideTowns); + + + _arr = [["CTI_DataPacket", "Data"], ["time", time], ["fps", diag_fps], ["score_east", (scoreSide east)], ["score_west", (scoreSide west)], ["player_count_east", (east countSide allPlayers)], ["player_count_west", (west countSide allPlayers)], + ["players", _players], + ["bases_east", east_sl getVariable ["cti_structures_areas",[]]], + ["bases_west", west_sl getVariable ["cti_structures_areas",[]]], + ["east_towns", _east_towns], + ["west_towns", _west_towns], ["commander_east", (name leader ((east) call CTI_CO_FNC_GetSideCommander))], ["commander_west", (name leader ((west) call CTI_CO_FNC_GetSideCommander))], ["town_count_east", ((east) call CTI_CO_FNC_GetSideTownCount)], @@ -337,5 +363,10 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { diag_log _arr; sleep 60; }; - diag_log "CTI_Mission_Performance: Stopping Server"; + //Triggerd on Misson end, used when FSM does not trigger. (used for debugging) + _arr = [["CTI_DataPacket", "EOF"], + ["Version", _version], + ["Map", worldName] + ]; + diag_log _arr; }; From 42fbee566b2b8845c6dc707e0cb06dd31a87e079 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Fri, 22 Mar 2019 16:26:27 +0100 Subject: [PATCH 065/267] fix: made vars local --- Server/Init/Init_Server.sqf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index 4b5f83aa9..13c3d9e29 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -320,8 +320,8 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { ]; diag_log _arr; while {!CTI_GameOver} do { - east_sl = (east) call CTI_CO_FNC_GetSideLogic; - west_sl = (west) call CTI_CO_FNC_GetSideLogic; + _east_sl = (east) call CTI_CO_FNC_GetSideLogic; + _west_sl = (west) call CTI_CO_FNC_GetSideLogic; _towns = count(east_sl getVariable ["CTI_ACTIVE",[]]) + count(west_sl getVariable ["CTI_ACTIVE",[]]); _players = []; { @@ -346,8 +346,8 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { ["player_count_east", (east countSide allPlayers)], ["player_count_west", (west countSide allPlayers)], ["players", _players], - ["bases_east", east_sl getVariable ["cti_structures_areas",[]]], - ["bases_west", west_sl getVariable ["cti_structures_areas",[]]], + ["bases_east", _east_sl getVariable ["cti_structures_areas",[]]], + ["bases_west", _west_sl getVariable ["cti_structures_areas",[]]], ["east_towns", _east_towns], ["west_towns", _west_towns], ["commander_east", (name leader ((east) call CTI_CO_FNC_GetSideCommander))], From 595dbe456914b1750fdcb52610df511b69a440b8 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 25 Mar 2019 20:36:48 +0100 Subject: [PATCH 066/267] fixed var --- Server/Init/Init_Server.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index 13c3d9e29..a14bc6fb0 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -322,7 +322,7 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { while {!CTI_GameOver} do { _east_sl = (east) call CTI_CO_FNC_GetSideLogic; _west_sl = (west) call CTI_CO_FNC_GetSideLogic; - _towns = count(east_sl getVariable ["CTI_ACTIVE",[]]) + count(west_sl getVariable ["CTI_ACTIVE",[]]); + _towns = count(_east_sl getVariable ["CTI_ACTIVE",[]]) + count(_west_sl getVariable ["CTI_ACTIVE",[]]); _players = []; { _players pushBack [name _x, str (side _x), getPlayerUID _x, getPlayerScores _x, getPos _x]; From dabe240afeb0dcbfdff4de08d78f11690f985b7e Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sat, 30 Mar 2019 12:31:51 +0100 Subject: [PATCH 067/267] Remove additionnal spawning vehicles for small islands --- Server/Init/Init_Server.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index a79cd3768..72891b22f 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -163,7 +163,7 @@ while {! (((getMarkerPos format ["HELO_START_%1", _i])select 0) == 0)} do if (CTI_BASE_FOB_MAX > 0) then {_logic setVariable ["cti_fobs", [], true]}; //--- Startup vehicles - if !((profileNamespace getvariable ["CTI_SAVE_ENABLED",false]) &&(count(profileNamespace getVariable ["CTI_SAVE_TOWNS",[]]) == count CTI_TOWNS)) then { + if !((profileNamespace getvariable ["CTI_SAVE_ENABLED",false]) &&(count(profileNamespace getVariable ["CTI_SAVE_TOWNS",[]]) == count CTI_TOWNS) && (ISLAND in [2,3])) then { { _model = _x select 0; _equipment = _x select 1; From e32c54824de5e92e0b0ae9c75266e44acb1de482 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sat, 30 Mar 2019 12:32:24 +0100 Subject: [PATCH 068/267] Moved tasks to server --- Addons/Strat_mode/init.sqf | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 815600612..c74d94230 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -341,6 +341,8 @@ if (CTI_IsServer) then { }; }; + // Tasks loop + {_x spawn TASKS_LOOP;} foreach [east,west]; }; @@ -481,8 +483,7 @@ if (CTI_IsClient) then { }; - // Taks loop - 0 spawn TASKS_LOOP; + }; From a1d5e1ffa67905e0259c5a504de1003547cdaca0 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sat, 30 Mar 2019 12:32:42 +0100 Subject: [PATCH 069/267] POrevent disactivation when not full on activations --- Addons/Strat_mode/Tablet/GUI_TabletMain.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Tablet/GUI_TabletMain.sqf b/Addons/Strat_mode/Tablet/GUI_TabletMain.sqf index 42e80d251..9f70479f3 100644 --- a/Addons/Strat_mode/Tablet/GUI_TabletMain.sqf +++ b/Addons/Strat_mode/Tablet/GUI_TabletMain.sqf @@ -47,7 +47,7 @@ while { true } do { //if ((missionNamespace getVariable"CTI_SM_STRATEGIC") >0 ) then { //!CTI_P_PreBuilding && ! CTI_P_Repairing if !(true && CTI_CL_FNC_IsPlayerCommander) then {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210010) ctrlEnable false;}; - if !(true && CTI_CL_FNC_IsPlayerCommander && !(isNull ((CTI_P_SideJoined call CTI_CO_FNC_GetSideLogic) getVariable "CTI_PRIORITY") ) && time > (SM_Last_dis +SM_TO_dis) ) then {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210011) ctrlEnable false;}; + if !(true && CTI_CL_FNC_IsPlayerCommander && !(isNull ((CTI_P_SideJoined call CTI_CO_FNC_GetSideLogic) getVariable "CTI_PRIORITY") ) && time > (SM_Last_dis +SM_TO_dis) && (count ((CTI_P_SideJoined call CTI_CO_FNC_GetSideLogic) getVariable "CTI_ACTIVE"))== CTI_SM_STRATEGIC_NB ) then {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210011) ctrlEnable false;}; /*} else { ((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210010) ctrlEnable false; ((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210011) ctrlEnable false; From c0e34ec8c47042d5f2a75bd00674d175959afd8e Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sat, 30 Mar 2019 12:33:15 +0100 Subject: [PATCH 070/267] Moving var to global for construction --- Server/Functions/Server_HandleStructureConstruction.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/Functions/Server_HandleStructureConstruction.sqf b/Server/Functions/Server_HandleStructureConstruction.sqf index 34b3221b4..c24f9e354 100644 --- a/Server/Functions/Server_HandleStructureConstruction.sqf +++ b/Server/Functions/Server_HandleStructureConstruction.sqf @@ -90,7 +90,7 @@ if (_completion >= 100) then { _structure setPos _position; _structure setVectorUp [0,0,1]; _structure setVariable ["cti_save", _variable,false]; - _structure setVariable ["cti_structure_type", ((_var select 0) select 0)]; + _structure setVariable ["cti_structure_type", ((_var select 0) select 0),true]; //--- Do we use our alternative damage system to prevent some bisteries from happening? _alternative_damages = false; From cbc4cd17f2a81e445ef0ff46fa8b751fad36f8c0 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Tue, 2 Apr 2019 12:47:48 +0200 Subject: [PATCH 071/267] updated changes from altis main branch --- Server/Init/Init_Server.sqf | 70 +++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index c1581ed92..4e743c1e4 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -290,13 +290,79 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { } forEach [east,west]; }; 0 spawn { + sleep 270; while {!CTi_GameOver} do { - sleep 270 +random (60); 0 call PERS_SAVE; + sleep 270 +random (60); }; }; } else { CTI_Init_Server=True; -}; + { + _side=_x; + _logic= (_side) call CTI_CO_FNC_GetSideLogic; + _logic setVariable ["CTI_LOAD_COMPLETED",true,true]; + } forEach [east,west]; +}; +//Logging of varius values +0 spawn { + sleep 100; //wait for everything to finish loading + _version = 2; //version of DiscordBot logReader + _arr = [["CTI_DataPacket", "Header"], + ["Version", _version], + ["Map", worldName] + ]; + diag_log _arr; + while {!CTI_GameOver} do { + _east_sl = (east) call CTI_CO_FNC_GetSideLogic; + _west_sl = (west) call CTI_CO_FNC_GetSideLogic; + _towns = count(_east_sl getVariable ["CTI_ACTIVE",[]]) + count(_west_sl getVariable ["CTI_ACTIVE",[]]); + _players = []; + { + _players pushBack [name _x, str (side _x), getPlayerUID _x, getPlayerScores _x, getPos _x]; + } forEach allPlayers - entities "HeadlessClient_F"; + + _west_towns = []; + { + _west_towns pushBack str _x; + } forEach (west call CTI_CO_FNC_GetSideTowns); + _east_towns = []; + { + _east_towns pushBack str _x; + } forEach (east call CTI_CO_FNC_GetSideTowns); + + + _arr = [["CTI_DataPacket", "Data"], + ["time", time], + ["fps", diag_fps], + ["score_east", (scoreSide east)], + ["score_west", (scoreSide west)], + ["player_count_east", (east countSide allPlayers)], + ["player_count_west", (west countSide allPlayers)], + ["players", _players], + ["bases_east", _east_sl getVariable ["cti_structures_areas",[]]], + ["bases_west", _west_sl getVariable ["cti_structures_areas",[]]], + ["east_towns", _east_towns], + ["west_towns", _west_towns], + ["commander_east", (name leader ((east) call CTI_CO_FNC_GetSideCommander))], + ["commander_west", (name leader ((west) call CTI_CO_FNC_GetSideCommander))], + ["town_count_east", ((east) call CTI_CO_FNC_GetSideTownCount)], + ["town_count_west", ((west) call CTI_CO_FNC_GetSideTownCount)], + ["active_SQF_count", count(diag_activeSQFScripts)], + ["active_AI", count(allUnits)], + ["total_objects", count(allMissionObjects "All")], + ["active_towns", _towns] + ]; + + diag_log _arr; + sleep 60; + }; + //Triggerd on Misson end, used when FSM does not trigger. (used for debugging) + _arr = [["CTI_DataPacket", "EOF"], + ["Version", _version], + ["Map", worldName] + ]; + diag_log _arr; +}; From c5ad125c6279471b991f893e84cc6d90b78b38ca Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Wed, 3 Apr 2019 08:39:44 +0200 Subject: [PATCH 072/267] changed logging format to version3 --- Server/FSM/update_victory.fsm | 10 +++++----- Server/Init/Init_Server.sqf | 25 +++++++++++++------------ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/Server/FSM/update_victory.fsm b/Server/FSM/update_victory.fsm index 3bcc2fb5f..e75ba0442 100644 --- a/Server/FSM/update_victory.fsm +++ b/Server/FSM/update_victory.fsm @@ -15,8 +15,8 @@ link3[] = {2,4}; link4[] = {4,5}; link5[] = {5,6}; link6[] = {6,3}; -globals[] = {0.000000,0,0,0,0,640,480,1,164,6316128,1,-626.312195,169.713379,529.355530,-580.065979,635,885,1}; -window[] = {2,-1,-1,-1,-1,963,182,1437,182,3,653}; +globals[] = {0.000000,0,0,0,0,640,480,1,164,6316128,1,-626.312195,169.713379,529.355530,-580.065979,635,884,1}; +window[] = {2,-1,-1,-1,-1,833,52,1307,52,3,653}; *//*%FSM*/ class FSM { @@ -84,7 +84,7 @@ class FSM " {_factories = _factories + count([_x, _structures] call CTI_CO_FNC_GetSideStructuresByType)} forEach (missionNamespace getVariable format[""CTI_%1_Factories"", _side]);" \n " if (( ( time > _max_time && _max_time != 0) || !(alive _hq) && _victory_hq == 1 || (!(alive _hq) && _factories == 0)) && !CTI_GameOver) exitWith { " \n " diag_log[[""CTI_DataPacket"", ""GameOver""], " \n - " [""Version"", 2], //version of DiscordBot logReader" \n + " [""Version"", 3], //version of DiscordBot logReader" \n " [""Map"", worldName]," \n " [""Side"", _x]," \n " [""Lost"", true]," \n @@ -99,7 +99,7 @@ class FSM " };" \n " if (_towns == _total && !CTI_GameOver) exitWith {" \n " diag_log[[""CTI_DataPacket"", ""GameOver""], " \n - " [""Version"", 2], //version of DiscordBot logReader" \n + " [""Version"", 3], //version of DiscordBot logReader" \n " [""Map"", worldName]," \n " [""Side"", _x]," \n " [""Lost"", false]," \n @@ -114,7 +114,7 @@ class FSM " };" \n " if (_townvalue > (_total_value*0.75) && !CTI_GameOver) exitWith {" \n " diag_log[[""CTI_DataPacket"", ""GameOver""], " \n - " [""Version"", 2], //version of DiscordBot logReader" \n + " [""Version"", 3], //version of DiscordBot logReader" \n " [""Map"", worldName]," \n " [""Side"", _x]," \n " [""Lost"", false]," \n diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index 148a484e3..dfc1d11f9 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -313,7 +313,7 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { //Logging of varius values 0 spawn { sleep 100; //wait for everything to finish loading - _version = 2; //version of DiscordBot logReader + _version = 3; //version of DiscordBot logReader _arr = [["CTI_DataPacket", "Header"], ["Version", _version], ["Map", worldName] @@ -325,7 +325,7 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { _towns = count(_east_sl getVariable ["CTI_ACTIVE",[]]) + count(_west_sl getVariable ["CTI_ACTIVE",[]]); _players = []; { - _players pushBack [name _x, str (side _x), getPlayerUID _x, getPlayerScores _x, getPos _x]; + _players pushBack [name _x, str (side _x), getPlayerScores _x, getPos _x]; } forEach allPlayers - entities "HeadlessClient_F"; _west_towns = []; @@ -337,19 +337,14 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { _east_towns pushBack str _x; } forEach (east call CTI_CO_FNC_GetSideTowns); - - _arr = [["CTI_DataPacket", "Data"], + //Data for general mission performance + diag_log[["CTI_DataPacket", "Data_1"], ["time", time], ["fps", diag_fps], ["score_east", (scoreSide east)], ["score_west", (scoreSide west)], ["player_count_east", (east countSide allPlayers)], ["player_count_west", (west countSide allPlayers)], - ["players", _players], - ["bases_east", _east_sl getVariable ["cti_structures_areas",[]]], - ["bases_west", _west_sl getVariable ["cti_structures_areas",[]]], - ["east_towns", _east_towns], - ["west_towns", _west_towns], ["commander_east", (name leader ((east) call CTI_CO_FNC_GetSideCommander))], ["commander_west", (name leader ((west) call CTI_CO_FNC_GetSideCommander))], ["town_count_east", ((east) call CTI_CO_FNC_GetSideTownCount)], @@ -357,10 +352,16 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { ["active_SQF_count", count(diag_activeSQFScripts)], ["active_AI", count(allUnits)], ["total_objects", count(allMissionObjects "All")], - ["active_towns", _towns] - ]; + ["active_towns", _towns]]; + //Data for Replay + diag_log[["CTI_DataPacket", "Data_2"], + ["players", _players]]; + diag_log[["CTI_DataPacket", "Data_3"], + ["bases_east", _east_sl getVariable ["cti_structures_areas",[]]], + ["bases_west", _west_sl getVariable ["cti_structures_areas",[]]], + ["east_towns", _east_towns], + ["west_towns", _west_towns]]; - diag_log _arr; sleep 60; }; //Triggerd on Misson end, used when FSM does not trigger. (used for debugging) From e198e77fc6b6b0644a9a49a3205393e86ca8b093 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sat, 6 Apr 2019 23:01:16 +0200 Subject: [PATCH 073/267] updated logging format again --- Server/Init/Init_Server.sqf | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index dfc1d11f9..5fbd72aa7 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -323,11 +323,23 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { _east_sl = (east) call CTI_CO_FNC_GetSideLogic; _west_sl = (west) call CTI_CO_FNC_GetSideLogic; _towns = count(_east_sl getVariable ["CTI_ACTIVE",[]]) + count(_west_sl getVariable ["CTI_ACTIVE",[]]); + + //build player array, splitting at 800 to ensure char limit of 1000 is not reached _players = []; + _players_sub = []; { - _players pushBack [name _x, str (side _x), getPlayerScores _x, getPos _x]; + if(count (_players_sub joinString ", ") >= 800) then { + _players pushBack _players_sub; + _players_sub = []; + }; + _players_sub pushBack [name _x, str (side _x), getPlayerScores _x, getPos _x]; } forEach allPlayers - entities "HeadlessClient_F"; + if(count (_players_sub joinString ", ") >= 10) then { + _players pushBack _players_sub; + _players_sub = []; + }; + //Build town arrays _west_towns = []; { _west_towns pushBack str _x; @@ -337,6 +349,7 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { _east_towns pushBack str _x; } forEach (east call CTI_CO_FNC_GetSideTowns); + //Post Data to .rpt log //Data for general mission performance diag_log[["CTI_DataPacket", "Data_1"], ["time", time], @@ -353,10 +366,15 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { ["active_AI", count(allUnits)], ["total_objects", count(allMissionObjects "All")], ["active_towns", _towns]]; - //Data for Replay - diag_log[["CTI_DataPacket", "Data_2"], - ["players", _players]]; - diag_log[["CTI_DataPacket", "Data_3"], + _dataP = 2; //next data packet index + { + //Data for Replay + diag_log[["CTI_DataPacket", (format ["Data_%1", _dataP])], + ["players", _x]]; + _dataP = _dataP+1; + } forEach _players; + + diag_log[["CTI_DataPacket", format ["Data_EOD_%1", _dataP]], //Marking package as "last" ["bases_east", _east_sl getVariable ["cti_structures_areas",[]]], ["bases_west", _west_sl getVariable ["cti_structures_areas",[]]], ["east_towns", _east_towns], From a30830aadc69e745800d4814ac3b2fcaf3fb6323 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 14 Apr 2019 15:10:37 +0200 Subject: [PATCH 074/267] - - --- mission.sqm | 8144 +++++++++++++++++++++++---------------------------- 1 file changed, 3597 insertions(+), 4547 deletions(-) diff --git a/mission.sqm b/mission.sqm index 86755b155..8b37a39da 100644 --- a/mission.sqm +++ b/mission.sqm @@ -1,4547 +1,3597 @@ -version=53; -class EditorData -{ - moveGridStep=1; - angleGridStep=0.2617994; - scaleGridStep=1; - autoGroupingDist=10; - toggles=1; - class ItemIDProvider - { - nextID=180; - }; - class MarkerIDProvider - { - nextID=62; - }; - class Camera - { - pos[]={2752.4963,392.94116,2267.8635}; - dir[]={0.64523667,-0.56169516,0.51804209}; - up[]={0.43804976,0.82728094,0.35169992}; - aside[]={0.62612563,1.1271914e-007,-0.77985692}; - }; -}; -binarizationWanted=0; -addons[]= -{ - "A3_Ui_F", - "A3_Structures_F_Mil_Flags", - "A3_Modules_F", - "A3_Characters_F", - "A3_Modules_F_Curator_Curator", - "A3_Boat_F_Jets_Carrier_01" -}; -class AddonsMetaData -{ - class List - { - items=6; - class Item0 - { - className="A3_Ui_F"; - name="Arma 3 - User Interface"; - author="Bohemia Interactive"; - url="https://www.arma3.com"; - }; - class Item1 - { - className="A3_Structures_F_Mil"; - name="Arma 3 - Military Buildings and Structures"; - author="Bohemia Interactive"; - url="https://www.arma3.com"; - }; - class Item2 - { - className="A3_Modules_F"; - name="Arma 3 Alpha - Scripted Modules"; - author="Bohemia Interactive"; - url="https://www.arma3.com"; - }; - class Item3 - { - className="A3_Characters_F"; - name="Arma 3 Alpha - Characters and Clothing"; - author="Bohemia Interactive"; - url="https://www.arma3.com"; - }; - class Item4 - { - className="A3_Modules_F_Curator"; - name="Arma 3 Zeus Update - Scripted Modules"; - author="Bohemia Interactive"; - url="https://www.arma3.com"; - }; - class Item5 - { - className="A3_Boat_F_Jets"; - name="Arma 3 Jets - Boats and Submersibles"; - author="Bohemia Interactive"; - url="https://www.arma3.com"; - }; - }; -}; -randomSeed=3001308; -class ScenarioData -{ - author="Tom"; -}; -class Intro -{ - class Intel - { - timeOfChanges=1800.0002; - startWeather=0.30000001; - startWind=0.1; - startWaves=0.1; - forecastWeather=0.30000001; - forecastWind=0.1; - forecastWaves=0.1; - forecastLightnings=0.1; - year=2035; - month=7; - day=6; - hour=14; - minute=15; - startFogBase=0.001; - forecastFogBase=0.001; - startFogDecay=0.0049999999; - forecastFogDecay=0.0049999999; - }; -}; -class Mission -{ - class Intel - { - briefingName="BECTI BE 0.97 - Zerty 1.3.4.5"; - overviewText="By Benny - Adapted from OFP era MFCTI (Mike Melvin)"; - resistanceWest=0; - timeOfChanges=24720; - startWind=0; - startWaves=0.099999994; - forecastWind=0; - forecastWaves=0.099999994; - forecastLightnings=0.099999994; - rainForced=1; - year=2035; - month=6; - hour=4; - startFogDecay=0; - forecastFogDecay=0; - }; - class Entities - { - items=56; - class Item0 - { - dataType="Marker"; - position[]={11288.212,14.554405,4659.4922}; - name="CTI_EastRespawn"; - type="Empty"; - colorName="ColorRed"; - fillName="Border"; - drawBorder=1; - id=0; - }; - class Item1 - { - dataType="Marker"; - position[]={10867.6,14.611816,3849.8416}; - name="CTI_WestRespawn"; - type="Empty"; - colorName="ColorRed"; - fillName="Border"; - drawBorder=1; - id=1; - atlOffset=-2.5643883; - }; - class Item2 - { - dataType="Marker"; - position[]={9931.5684,2.0193732,5942.4219}; - name="Prison"; - type="Empty"; - colorName="ColorPink"; - id=2; - }; - class Item3 - { - dataType="Marker"; - position[]={6113.103,0,6452.269}; - name="CENTER_POS"; - markerType="ELLIPSE"; - type="Empty"; - a=8000; - b=8000; - id=3; - atlOffset=-355.95911; - }; - class Item4 - { - dataType="Marker"; - position[]={8048.7817,232.85887,10447.706}; - name="HELO_START_0"; - type="Empty"; - colorName="ColorGreen"; - id=4; - atlOffset=202.47562; - }; - class Item5 - { - dataType="Marker"; - position[]={5666.728,366.88507,6911.4629}; - name="HELO_START_1"; - type="Empty"; - colorName="ColorGreen"; - id=5; - atlOffset=30.71524; - }; - class Item6 - { - dataType="Marker"; - position[]={5074.2397,57.330524,2595.5024}; - name="HELO_START_2"; - type="Empty"; - colorName="ColorGreen"; - id=7; - }; - class Item7 - { - dataType="Marker"; - position[]={6310.3545,79.747299,3741.1113}; - name="HELO_START_3"; - type="Empty"; - colorName="ColorGreen"; - id=8; - }; - class Item8 - { - dataType="Marker"; - position[]={6880.8032,92.093384,7267.0029}; - name="HELO_START_4"; - type="Empty"; - colorName="ColorGreen"; - id=9; - }; - class Item9 - { - dataType="Marker"; - position[]={3644.0125,171.00302,8755.6426}; - name="HELO_START_5"; - type="Empty"; - colorName="ColorGreen"; - id=10; - atlOffset=39.339203; - }; - class Item10 - { - dataType="Marker"; - position[]={7227.0454,66.153236,6112.1108}; - name="HELO_START_6"; - type="Empty"; - colorName="ColorGreen"; - id=11; - }; - class Item11 - { - dataType="Marker"; - position[]={3122.9133,355.63477,6521.2852}; - name="HELO_START_7"; - type="Empty"; - colorName="ColorGreen"; - id=12; - atlOffset=122.17253; - }; - class Item12 - { - dataType="Marker"; - position[]={4057.4487,34.650162,3270.5313}; - name="HELO_START_8"; - type="Empty"; - colorName="ColorGreen"; - id=13; - }; - class Item13 - { - dataType="Marker"; - position[]={7270.1929,166.74646,8210.4082}; - name="HELO_START_9"; - type="Empty"; - colorName="ColorGreen"; - id=14; - }; - class Item14 - { - dataType="Marker"; - position[]={6202.1963,121.75577,8853.623}; - name="HELO_START_10"; - type="Empty"; - colorName="ColorGreen"; - id=15; - }; - class Item15 - { - dataType="Marker"; - position[]={8186.9155,21.156494,2971.0085}; - name="HELO_START_11"; - type="Empty"; - colorName="ColorGreen"; - id=16; - atlOffset=-1.0235062; - }; - class Item16 - { - dataType="Marker"; - position[]={5445.9541,64.598518,11224.89}; - name="HELO_START_12"; - type="Empty"; - colorName="ColorGreen"; - id=17; - }; - class Item17 - { - dataType="Marker"; - position[]={696.65045,25.772217,12179.188}; - name="HELO_START_13"; - type="Empty"; - colorName="ColorGreen"; - id=18; - atlOffset=-3.1477833; - }; - class Item18 - { - dataType="Marker"; - position[]={6808.0088,107.74664,8867.6797}; - name="HELO_START_14"; - type="Empty"; - colorName="ColorGreen"; - id=19; - atlOffset=7.6293945e-006; - }; - class Item19 - { - dataType="Marker"; - position[]={5348.6553,160.02304,4129.0796}; - name="HELO_START_15"; - type="Empty"; - colorName="ColorGreen"; - id=20; - atlOffset=39.84304; - }; - class Item20 - { - dataType="Marker"; - position[]={3229.1746,272.54126,6759.9316}; - name="HELO_START_16"; - type="Empty"; - colorName="ColorGreen"; - id=21; - atlOffset=45.522095; - }; - class Item21 - { - dataType="Marker"; - position[]={12044.02,38.268066,4128.9272}; - name="CTI_HELP"; - type="Empty"; - colorName="ColorUNKNOWN"; - id=59; - atlOffset=27.431581; - }; - class Item22 - { - dataType="Marker"; - position[]={10113.527,2.1769152,2213.2898}; - name="CTI_TUTORIAL"; - type="Empty"; - id=60; - }; - class Item23 - { - dataType="Object"; - class PositionInfo - { - position[]={8141.9028,32.866806,10032.275}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Airport"", resistance, 350] execVM ""Common\Init\Init_Location.sqf"""; - name="Town0"; - }; - id=61; - type="FlagPole_F"; - atlOffset=1.9073486e-006; - }; - class Item24 - { - dataType="Object"; - class PositionInfo - { - position[]={5526.2373,339.83679,6982.5664}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Arudy"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town1"; - }; - id=62; - type="FlagPole_F"; - }; - class Item25 - { - dataType="Object"; - class PositionInfo - { - position[]={5337.7021,45.364891,2796.292}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Cancon"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town2"; - }; - id=63; - type="FlagPole_F"; - atlOffset=-3.8146973e-006; - }; - class Item26 - { - dataType="Object"; - class PositionInfo - { - position[]={5905.499,58.962273,3578.531}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Chapoi"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town3"; - }; - id=64; - type="FlagPole_F"; - atlOffset=-3.8146973e-006; - }; - class Item27 - { - dataType="Object"; - class PositionInfo - { - position[]={7125.938,75.791107,6122.4321}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Houdan"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town6"; - }; - id=65; - type="FlagPole_F"; - }; - class Item28 - { - dataType="Object"; - class PositionInfo - { - position[]={7062.2842,83.649132,7100.2358}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Dourdan"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town4"; - }; - id=66; - type="FlagPole_F"; - }; - class Item29 - { - dataType="Object"; - class PositionInfo - { - position[]={3580.99,132.93045,8521.291}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Goisse"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town5"; - }; - id=67; - type="FlagPole_F"; - }; - class Item30 - { - dataType="Object"; - class PositionInfo - { - position[]={3149.092,228.3168,6335.374}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""La Passagne"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town7"; - }; - id=68; - type="FlagPole_F"; - }; - class Item31 - { - dataType="Object"; - class PositionInfo - { - position[]={3766.947,22.658308,3241.3359}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""La Riviere"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town8"; - }; - id=69; - type="FlagPole_F"; - }; - class Item32 - { - dataType="Object"; - class PositionInfo - { - position[]={7302.6274,171.54681,7990.9468}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""La Trinite"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; - name="Town9"; - }; - id=70; - type="FlagPole_F"; - }; - class Item33 - { - dataType="Object"; - class PositionInfo - { - position[]={5558.4565,75.736809,11184.31}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Lolisse"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town12"; - }; - id=71; - type="FlagPole_F"; - }; - class Item34 - { - dataType="Object"; - class PositionInfo - { - position[]={766.15063,32.896805,12132.624}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Moray"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; - name="Town13"; - }; - id=72; - type="FlagPole_F"; - }; - class Item35 - { - dataType="Object"; - class PositionInfo - { - position[]={3098.9939,234.082,6852.1948}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Vigny"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town16"; - }; - id=73; - type="FlagPole_F"; - }; - class Item36 - { - dataType="Object"; - class PositionInfo - { - position[]={7117.3838,109.22265,8962.2412}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Saint Louis"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town14"; - }; - id=77; - type="FlagPole_F"; - atlOffset=7.6293945e-006; - }; - class Item37 - { - dataType="Object"; - class PositionInfo - { - position[]={5597.0229,107.30638,4232.4102}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Sainte Marie"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town15"; - }; - id=78; - type="FlagPole_F"; - }; - class Item38 - { - dataType="Object"; - class PositionInfo - { - position[]={8207.4014,25.557577,3157.1941}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Le Port"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; - name="Town11"; - }; - id=81; - type="FlagPole_F"; - }; - class Item39 - { - dataType="Object"; - class PositionInfo - { - position[]={6029.3882,129.0968,8605.4844}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Larche"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; - name="Town10"; - }; - id=82; - type="FlagPole_F"; - atlOffset=-7.6293945e-006; - }; - class Item40 - { - dataType="Logic"; - class PositionInfo - { - position[]={1182.1709,28.492928,584.47247}; - }; - name="CTI_WEST"; - id=111; - type="Logic"; - atlOffset=6.3029652; - }; - class Item41 - { - dataType="Logic"; - class PositionInfo - { - position[]={7173.7769,15.405507,12288.153}; - }; - name="CTI_EAST"; - id=112; - type="Logic"; - atlOffset=6.8918867; - }; - class Item42 - { - dataType="Group"; - side="East"; - class Entities - { - items=25; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={7161.1045,8.4507074,12309.42}; - angles[]={0.019199125,0,6.2408099}; - }; - side="East"; - flags=6; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=114; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male02PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.01; - }; - }; - }; - nAttributes=2; - }; - }; - class Item1 - { - dataType="Object"; - class PositionInfo - { - position[]={7165.8135,8.1746759,12306.356}; - angles[]={0.019199125,0,6.2001762}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="COLONEL"; - init="this allowDamage false; (group this) setGroupID [""Default Team""];this disableAI ""MOVE"";this disableAI ""AUTOTARGET"";this disableAI ""TARGET"";"; - name="CTI_EAST_DEFAULT_GROUP"; - }; - id=115; - type="O_Soldier_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male03PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.99000001; - }; - }; - }; - nAttributes=2; - }; - }; - class Item2 - { - dataType="Object"; - class PositionInfo - { - position[]={7155.8135,8.729907,12306.356}; - angles[]={0.0087958695,0,6.2511969}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayer=1; - isPlayable=1; - }; - id=116; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male01PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.97000003; - }; - }; - }; - nAttributes=2; - }; - }; - class Item3 - { - dataType="Object"; - class PositionInfo - { - position[]={7170.8135,7.8547201,12301.356}; - angles[]={0.019199125,0,6.2001762}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=117; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male01PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.04; - }; - }; - }; - nAttributes=2; - }; - }; - class Item4 - { - dataType="Object"; - class PositionInfo - { - position[]={7150.8135,8.933919,12301.356}; - angles[]={0.0087958695,0,6.2511969}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=118; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male01PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.03; - }; - }; - }; - nAttributes=2; - }; - }; - class Item5 - { - dataType="Object"; - class PositionInfo - { - position[]={7175.8135,7.7079811,12296.356}; - angles[]={0.074263111,0,6.1629682}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=119; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male03PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.98000002; - }; - }; - }; - nAttributes=2; - }; - }; - class Item6 - { - dataType="Object"; - class PositionInfo - { - position[]={7145.8135,9.3286066,12296.356}; - angles[]={0.056739714,0,6.2480001}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=120; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male02PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.03; - }; - }; - }; - nAttributes=2; - }; - }; - class Item7 - { - dataType="Object"; - class PositionInfo - { - position[]={7180.8135,7.4759669,12291.356}; - angles[]={0.074263111,0,6.1629682}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=121; - type="O_Soldier_SL_F"; - atlOffset=-4.7683716e-007; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male03PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.03; - }; - }; - }; - nAttributes=2; - }; - }; - class Item8 - { - dataType="Object"; - class PositionInfo - { - position[]={7140.8135,9.8660831,12291.356}; - angles[]={0.071080439,0,6.2336264}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=122; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male01PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.98000002; - }; - }; - }; - nAttributes=2; - }; - }; - class Item9 - { - dataType="Object"; - class PositionInfo - { - position[]={7185.8135,7.3185496,12286.356}; - angles[]={0.13595572,0,6.1629682}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=123; - type="O_Soldier_SL_F"; - atlOffset=-4.7683716e-007; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male02PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1; - }; - }; - }; - nAttributes=2; - }; - }; - class Item10 - { - dataType="Object"; - class PositionInfo - { - position[]={7135.8135,10.537416,12286.356}; - angles[]={0.016798066,0,6.1558776}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=124; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male01PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.95999998; - }; - }; - }; - nAttributes=2; - }; - }; - class Item11 - { - dataType="Object"; - class PositionInfo - { - position[]={7190.8135,7.8040166,12281.356}; - angles[]={0.13595572,0,0.0015822123}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=125; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male02PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.98000002; - }; - }; - }; - nAttributes=2; - }; - }; - class Item12 - { - dataType="Object"; - class PositionInfo - { - position[]={7130.8135,11.252232,12281.356}; - angles[]={6.2759929,0,6.1795583}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=126; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male01PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.97000003; - }; - }; - }; - nAttributes=2; - }; - }; - class Item13 - { - dataType="Object"; - class PositionInfo - { - position[]={7195.8135,8.4960575,12276.356}; - angles[]={0.13595572,0,0.0015822123}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=127; - type="O_Soldier_SL_F"; - atlOffset=-9.5367432e-007; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male03PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.98000002; - }; - }; - }; - nAttributes=2; - }; - }; - class Item14 - { - dataType="Object"; - class PositionInfo - { - position[]={7125.8135,11.736261,12276.356}; - angles[]={6.2759929,0,6.1795583}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=128; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male03PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1; - }; - }; - }; - nAttributes=2; - }; - }; - class Item15 - { - dataType="Object"; - class PositionInfo - { - position[]={7200.8135,8.66574,12271.356}; - angles[]={0.0072011296,0,6.2312322}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=129; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male01PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.99000001; - }; - }; - }; - nAttributes=2; - }; - }; - class Item16 - { - dataType="Object"; - class PositionInfo - { - position[]={7120.8135,11.677279,12271.356}; - angles[]={6.2631893,0,0.014398213}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=130; - type="O_Soldier_SL_F"; - atlOffset=9.5367432e-007; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male03PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.03; - }; - }; - }; - nAttributes=2; - }; - }; - class Item17 - { - dataType="Object"; - class PositionInfo - { - position[]={7205.8135,8.4417267,12266.356}; - angles[]={0.0072011296,0,6.2312322}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=131; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male02PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.97000003; - }; - }; - }; - nAttributes=2; - }; - }; - class Item18 - { - dataType="Object"; - class PositionInfo - { - position[]={7115.8135,11.216897,12266.356}; - angles[]={6.2097178,0,0.067896426}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=132; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male01PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.95999998; - }; - }; - }; - nAttributes=2; - }; - }; - class Item19 - { - dataType="Object"; - class PositionInfo - { - position[]={7210.8135,8.3237801,12261.356}; - angles[]={0.095706634,0,6.2312331}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=133; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male02PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.98000002; - }; - }; - }; - nAttributes=2; - }; - }; - class Item20 - { - dataType="Object"; - class PositionInfo - { - position[]={7110.8135,10.807887,12261.356}; - angles[]={0.047963165,0,6.2599902}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=134; - type="O_Soldier_SL_F"; - atlOffset=9.5367432e-007; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male01PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.97000003; - }; - }; - }; - nAttributes=2; - }; - }; - class Item21 - { - dataType="Object"; - class PositionInfo - { - position[]={7215.8135,8.5675764,12256.356}; - angles[]={0.095706634,0,6.2384138}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=135; - type="O_Soldier_SL_F"; - atlOffset=-9.5367432e-007; - }; - class Item12 - { - dataType="Object"; - class PositionInfo - { - position[]={14497.858,10.133352,5847.647}; - angles[]={0.042641956,0,5.9590368}; - }; - side="East"; - flags=4; - class Attributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male01PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.99000001; - }; - }; - }; - nAttributes=2; - }; - }; - class Item22 - { - dataType="Object"; - class PositionInfo - { - position[]={7105.8135,11.148048,12256.356}; - angles[]={0.0064037596,0,0.018396867}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=136; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male03PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.97000003; - }; - }; - }; - nAttributes=2; - }; - }; - class Item23 - { - dataType="Object"; - class PositionInfo - { - position[]={7220.8135,8.8236265,12251.356}; - angles[]={0.095706634,0,6.2384138}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=137; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male03PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.95999998; - }; - }; - }; - nAttributes=2; - }; - }; - class Item24 - { - dataType="Object"; - class PositionInfo - { - position[]={7100.8135,11.088045,12251.356}; - angles[]={0.0064037596,0,0.018396867}; - }; - side="East"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=138; - type="O_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male02PER"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.02; - }; - }; - }; - nAttributes=2; - }; - }; - }; - class Attributes - { - }; - id=113; - }; - class Item43 - { - dataType="Group"; - side="West"; - class Entities - { - items=25; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={1208.968,24.919378,587.54797}; - angles[]={6.0981278,0,0.1020494}; - }; - side="West"; - flags=6; - class Attributes - { - skill=0.60000002; - rank="COLONEL"; - init="this allowDamage false;(group this) setGroupIDGlobal [""Default Team""];this disableAI ""MOVE"";this disableAI ""AUTOTARGET"";this disableAI ""TARGET"";"; - name="CTI_WEST_DEFAULT_GROUP"; - }; - id=140; - type="B_Soldier_F"; - atlOffset=1.9073486e-006; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male10ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.98000002; - }; - }; - }; - nAttributes=2; - }; - }; - class Item1 - { - dataType="Object"; - class PositionInfo - { - position[]={1213.968,24.431927,582.59796}; - angles[]={6.0981278,0,0.052743852}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=141; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male08ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.97000003; - }; - }; - }; - nAttributes=2; - }; - }; - class Item2 - { - dataType="Object"; - class PositionInfo - { - position[]={1203.968,23.526396,582.59796}; - angles[]={6.1432967,0,0.055937801}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=142; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male12ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.03; - }; - }; - }; - nAttributes=2; - }; - }; - class Item3 - { - dataType="Object"; - class PositionInfo - { - position[]={1218.968,23.759932,577.59796}; - angles[]={6.0981278,0,0.052743852}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=143; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male08ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.03; - }; - }; - }; - nAttributes=2; - }; - }; - class Item4 - { - dataType="Object"; - class PositionInfo - { - position[]={1198.968,22.503601,577.59796}; - angles[]={6.1432967,0,0.093322754}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=144; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male11ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.98000002; - }; - }; - }; - nAttributes=2; - }; - }; - class Item5 - { - dataType="Object"; - class PositionInfo - { - position[]={1223.968,22.86038,572.59796}; - angles[]={6.010181,0,0.052743852}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=145; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male05ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.97000003; - }; - }; - }; - nAttributes=2; - }; - }; - class Item6 - { - dataType="Object"; - class PositionInfo - { - position[]={1193.968,21.324379,572.59796}; - angles[]={6.060534,0,0.059934605}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=146; - type="B_Soldier_SL_F"; - atlOffset=1.9073486e-006; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male07ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.94999999; - }; - }; - }; - nAttributes=2; - }; - }; - class Item7 - { - dataType="Object"; - class PositionInfo - { - position[]={1228.968,20.924431,567.59796}; - angles[]={6.010181,0,6.1354609}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=137; - type="O_Soldier_SL_F"; - atlOffset=-4.7683716e-007; - }; - class Item8 - { - dataType="Object"; - class PositionInfo - { - position[]={1188.968,20.308863,567.59796}; - angles[]={6.1276588,0,6.2735863}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=148; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male10ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.05; - }; - }; - }; - nAttributes=2; - }; - }; - class Item9 - { - dataType="Object"; - class PositionInfo - { - position[]={1233.968,18.780436,562.59796}; - angles[]={6.010181,0,6.1354609}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=149; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male07ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.94999999; - }; - }; - }; - nAttributes=2; - }; - }; - class Item10 - { - dataType="Object"; - class PositionInfo - { - position[]={1183.968,19.785736,562.59796}; - angles[]={6.1661263,0,6.2129006}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=150; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male05ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.99000001; - }; - }; - }; - nAttributes=2; - }; - }; - class Item11 - { - dataType="Object"; - class PositionInfo - { - position[]={1238.968,16.87989,557.59796}; - angles[]={6.0981278,0,5.9953976}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=151; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male02ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.98000002; - }; - }; - }; - nAttributes=2; - }; - }; - class Item12 - { - dataType="Object"; - class PositionInfo - { - position[]={1178.968,19.102779,557.59796}; - angles[]={6.0880923,0,6.2001772}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=152; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male09ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.02; - }; - }; - }; - nAttributes=2; - }; - }; - class Item13 - { - dataType="Object"; - class PositionInfo - { - position[]={1243.968,14.46389,552.59796}; - angles[]={6.0981278,0,5.9953976}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=153; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male06ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.02; - }; - }; - }; - nAttributes=2; - }; - id=153; - type="B_Soldier_SL_F"; - atlOffset=-9.5367432e-007; - }; - class Item14 - { - dataType="Object"; - class PositionInfo - { - position[]={1173.968,18.497755,552.59796}; - angles[]={6.0880923,0,6.2320294}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=154; - type="B_Soldier_SL_F"; - atlOffset=-1.9073486e-006; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male12ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.02; - }; - }; - }; - nAttributes=2; - }; - }; - class Item15 - { - dataType="Object"; - class PositionInfo - { - position[]={1248.968,11.892912,547.59796}; - angles[]={6.0378265,0,5.9953976}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=155; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male02ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.94999999; - }; - }; - }; - nAttributes=2; - }; - }; - class Item16 - { - dataType="Object"; - class PositionInfo - { - position[]={1168.968,18.226578,547.59796}; - angles[]={6.0758057,0,6.1511512}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=156; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male12ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.98000002; - }; - }; - }; - nAttributes=2; - }; - }; - class Item17 - { - dataType="Object"; - class PositionInfo - { - position[]={1253.968,10.151331,542.59796}; - angles[]={6.0378265,0,6.2368116}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=157; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male04ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.99000001; - }; - }; - }; - nAttributes=2; - }; - }; - class Item18 - { - dataType="Object"; - class PositionInfo - { - position[]={1163.968,18.657196,542.59796}; - angles[]={6.2097239,0,6.0198498}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=158; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male02ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.01; - }; - }; - }; - nAttributes=2; - }; - }; - class Item19 - { - dataType="Object"; - class PositionInfo - { - position[]={1258.968,8.6673365,537.59796}; - angles[]={6.0378265,0,6.2368116}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=159; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male09ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.97000003; - }; - }; - }; - nAttributes=2; - }; - }; - class Item20 - { - dataType="Object"; - class PositionInfo - { - position[]={1158.968,20.325314,537.59796}; - angles[]={6.2376146,0,5.8480926}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=160; - type="B_Soldier_SL_F"; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male11ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.98000002; - }; - }; - }; - nAttributes=2; - }; - }; - class Item21 - { - dataType="Object"; - class PositionInfo - { - position[]={1263.968,7.0660634,532.59796}; - angles[]={6.0280704,0,6.1922359}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=161; - type="B_Soldier_SL_F"; - atlOffset=4.7683716e-007; - }; - class Item22 - { - dataType="Object"; - class PositionInfo - { - position[]={1153.968,22.202339,532.59796}; - angles[]={6.2312269,0,5.8099918}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=162; - type="B_Soldier_SL_F"; - atlOffset=4.7683716e-007; - }; - class Item23 - { - dataType="Object"; - class PositionInfo - { - position[]={1268.968,5.3060699,527.59796}; - angles[]={6.0280704,0,6.1922359}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=163; - type="B_Soldier_SL_F"; - atlOffset=4.7683716e-007; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male10ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.98000002; - }; - }; - }; - nAttributes=2; - }; - }; - class Item24 - { - dataType="Object"; - class PositionInfo - { - position[]={1148.968,24.480839,527.59796}; - angles[]={6.2312269,0,5.8266072}; - }; - side="West"; - flags=4; - class Attributes - { - skill=0.60000002; - rank="CAPTAIN"; - isPlayable=1; - }; - id=164; - type="B_Soldier_SL_F"; - atlOffset=1.9073486e-006; - class CustomAttributes - { - class Attribute0 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male10ENG"; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.01; - }; - }; - }; - nAttributes=2; - }; - }; - }; - class Attributes - { - }; - id=139; - atlOffset=1.9073486e-006; - }; - class Item44 - { - dataType="Logic"; - class PositionInfo - { - position[]={1232.6871,30.013901,12319.944}; - }; - name="ADMIN_ZEUS"; - id=165; - type="ModuleCurator_F"; - atlOffset=1.0839005; - class CustomAttributes - { - class Attribute0 - { - property="ModuleCurator_F_Owner"; - expression="_this setVariable ['Owner',_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value=""; - }; - }; - }; - class Attribute1 - { - property="ModuleCurator_F_Forced"; - expression="_this setVariable ['Forced',_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0; - }; - }; - }; - class Attribute2 - { - property="ModuleCurator_F_Name"; - expression="_this setVariable ['Name',_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value=""; - }; - }; - }; - class Attribute3 - { - property="ModuleCurator_F_Addons"; - expression="_this setVariable ['Addons',_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0; - }; - }; - }; - nAttributes=4; - }; - }; - class Item45 - { - dataType="Logic"; - class PositionInfo - { - position[]={1240.7799,28.93,12320.001}; - }; - id=166; - type="ModuleCuratorAddAddons_F"; - class CustomAttributes - { - class Attribute0 - { - property="ModuleCuratorAddAddons_F_Curator"; - expression="_this setVariable ['Curator',_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value=""; - }; - }; - }; - class Attribute1 - { - property="ModuleCuratorAddAddons_F_Addons"; - expression="_this setVariable ['Addons',_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="""A3_Modules_F_Curator_Environment"",""A3_Modules_F_Curator_Smokeshells"",""A3_Characters_F_Civil"",""A3_Modules_F_Curator_Effects"",""A3_Modules_F_Curator_Misc"",""A3_Modules_F_Curator_Lightning"""; - }; - }; - }; - class Attribute2 - { - property="ModuleCuratorAddAddons_F_Text"; - expression="_this setVariable ['Text',_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value=""; - }; - }; - }; - class Attribute3 - { - property="ModuleCuratorAddAddons_F_Mode"; - expression="_this setVariable ['Mode',_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=1; - }; - }; - }; - nAttributes=4; - }; - }; - class Item46 - { - dataType="Logic"; - class PositionInfo - { - position[]={1172.2943,34.174339,12322.352}; - }; - name="HC2"; - init="this allowDamage false;"; - isPlayable=1; - id=167; - type="HeadlessClient_F"; - atlOffset=5.244339; - }; - class Item47 - { - dataType="Logic"; - class PositionInfo - { - position[]={1183.4916,32.132164,12322.127}; - }; - name="HC3"; - init="this allowDamage false;"; - isPlayable=1; - id=168; - type="HeadlessClient_F"; - atlOffset=3.2021637; - }; - class Item48 - { - dataType="Logic"; - class PositionInfo - { - position[]={1195.809,30.169785,12322.574}; - }; - name="HC4"; - init="this allowDamage false;"; - isPlayable=1; - id=169; - type="HeadlessClient_F"; - atlOffset=1.2397842; - }; - class Item49 - { - dataType="Logic"; - class PositionInfo - { - position[]={1205.2152,28.93,12323.023}; - }; - name="HC5"; - init="this allowDamage false;"; - isPlayable=1; - id=170; - type="HeadlessClient_F"; - }; - class Item50 - { - dataType="Logic"; - class PositionInfo - { - position[]={1162.4398,36.620186,12322.352}; - }; - name="HC1"; - init="this allowDamage false;"; - isPlayable=1; - id=171; - type="HeadlessClient_F"; - atlOffset=7.6901855; - }; - class Item51 - { - dataType="Logic"; - class PositionInfo - { - position[]={1187.1615,31.614197,12355.488}; - }; - name="CTI_GUER"; - id=172; - type="Logic"; - atlOffset=2.6844673; - }; - class Item52 - { - dataType="Marker"; - position[]={9926.1279,0,3990.7314}; - name="HELO_START_18"; - type="Empty"; - colorName="ColorGreen"; - id=173; - atlOffset=-40.932705; - }; - class Item53 - { - dataType="Object"; - class PositionInfo - { - position[]={9746.9238,42.866806,3947.8401}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, ""Military Base"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town17"; - }; - id=174; - type="FlagPole_F"; - }; - class Item54 - { - dataType="Object"; - class PositionInfo - { - position[]={3215.5969,0.00044250488,2598.6411}; - angles[]={0,3.7178655,0}; - }; - side="Empty"; - class Attributes - { - name="carrier"; - }; - id=178; - type="Land_Carrier_01_base_F"; - atlOffset=73.230003; - }; - class Item55 - { - dataType="Marker"; - position[]={10113.068,2.1960001,2211.3149}; - name="marker_61"; - text="Wellcome area (Do not enter)"; - markerType="ELLIPSE"; - type="ellipse"; - colorName="ColorCIV"; - fillName="DiagGrid"; - a=500; - b=500; - id=179; - atlOffset=-0.00027227402; - }; - }; - class Connections - { - class LinkIDProvider - { - nextID=49; - }; - class Links - { - items=49; - class Item0 - { - linkID=0; - item0=142; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item1 - { - linkID=1; - item0=144; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item2 - { - linkID=2; - item0=143; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item3 - { - linkID=3; - item0=145; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item4 - { - linkID=4; - item0=146; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item5 - { - linkID=5; - item0=147; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item6 - { - linkID=6; - item0=148; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item7 - { - linkID=7; - item0=156; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item8 - { - linkID=8; - item0=155; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item9 - { - linkID=9; - item0=154; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item10 - { - linkID=10; - item0=153; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item11 - { - linkID=11; - item0=152; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item12 - { - linkID=12; - item0=151; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item13 - { - linkID=13; - item0=150; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item14 - { - linkID=14; - item0=149; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item15 - { - linkID=15; - item0=157; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item16 - { - linkID=16; - item0=158; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item17 - { - linkID=17; - item0=159; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item18 - { - linkID=18; - item0=160; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item19 - { - linkID=19; - item0=161; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item20 - { - linkID=20; - item0=162; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item21 - { - linkID=21; - item0=163; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item22 - { - linkID=22; - item0=164; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item23 - { - linkID=23; - item0=141; - item1=111; - class CustomData - { - type="Sync"; - }; - }; - class Item24 - { - linkID=24; - item0=114; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item25 - { - linkID=25; - item0=117; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item26 - { - linkID=26; - item0=118; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item27 - { - linkID=27; - item0=119; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item28 - { - linkID=28; - item0=120; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item29 - { - linkID=29; - item0=121; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item30 - { - linkID=30; - item0=122; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item31 - { - linkID=31; - item0=123; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item32 - { - linkID=32; - item0=124; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item33 - { - linkID=33; - item0=125; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item34 - { - linkID=34; - item0=126; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item35 - { - linkID=35; - item0=127; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item36 - { - linkID=36; - item0=128; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item37 - { - linkID=37; - item0=129; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item38 - { - linkID=38; - item0=130; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item39 - { - linkID=39; - item0=131; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item40 - { - linkID=40; - item0=132; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item41 - { - linkID=41; - item0=133; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item42 - { - linkID=42; - item0=134; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item43 - { - linkID=43; - item0=135; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item44 - { - linkID=44; - item0=136; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item45 - { - linkID=45; - item0=137; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item46 - { - linkID=46; - item0=138; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item47 - { - linkID=47; - item0=116; - item1=112; - class CustomData - { - type="Sync"; - }; - }; - class Item48 - { - linkID=48; - item0=166; - item1=165; - class CustomData - { - type="Sync"; - }; - }; - }; - }; -}; -class OutroLoose -{ - class Intel - { - timeOfChanges=1800.0002; - startWeather=0.30000001; - startWind=0.1; - startWaves=0.1; - forecastWeather=0.30000001; - forecastWind=0.1; - forecastWaves=0.1; - forecastLightnings=0.1; - year=2035; - month=7; - day=6; - hour=14; - minute=15; - startFogBase=0.001; - forecastFogBase=0.001; - startFogDecay=0.0049999999; - forecastFogDecay=0.0049999999; - }; -}; -class OutroWin -{ - class Intel - { - timeOfChanges=1800.0002; - startWeather=0.30000001; - startWind=0.1; - startWaves=0.1; - forecastWeather=0.30000001; - forecastWind=0.1; - forecastWaves=0.1; - forecastLightnings=0.1; - year=2035; - month=7; - day=6; - hour=14; - minute=15; - startFogBase=0.001; - forecastFogBase=0.001; - startFogDecay=0.0049999999; - forecastFogDecay=0.0049999999; - }; -}; \ No newline at end of file +version=53; +class EditorData +{ + moveGridStep=1; + angleGridStep=0.2617994; + scaleGridStep=1; + autoGroupingDist=10; + toggles=1025; + class ItemIDProvider + { + nextID=178; + }; + class MarkerIDProvider + { + nextID=62; + }; + class Camera + { + pos[]={14608.123,155.19696,5895.5967}; + dir[]={-0.80275387,-0.42684528,0.41648361}; + up[]={-0.37890467,0.90431285,0.19658338}; + aside[]={0.46054059,-1.7105776e-008,0.887676}; + }; +}; +binarizationWanted=0; +addons[]= +{ + "A3_Ui_F", + "A3_Structures_F_Mil_Flags", + "A3_Modules_F", + "A3_Characters_F", + "A3_Modules_F_Curator_Curator" +}; +class AddonsMetaData +{ + class List + { + items=5; + class Item0 + { + className="A3_Ui_F"; + name="Arma 3 - User Interface"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item1 + { + className="A3_Structures_F_Mil"; + name="Arma 3 - Military Buildings and Structures"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item2 + { + className="A3_Modules_F"; + name="Arma 3 Alpha - Scripted Modules"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item3 + { + className="A3_Characters_F"; + name="Arma 3 Alpha - Characters and Clothing"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item4 + { + className="A3_Modules_F_Curator"; + name="Arma 3 Zeus Update - Scripted Modules"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + }; +}; +randomSeed=2773227; +class ScenarioData +{ + author="Yoshi_E"; +}; +class Intro +{ + class Intel + { + timeOfChanges=1800.0002; + startWeather=0.30000001; + startWind=0.1; + startWaves=0.1; + forecastWeather=0.30000001; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2035; + month=7; + day=6; + hour=14; + minute=15; + startFogBase=0.001; + forecastFogBase=0.001; + startFogDecay=0.0049999999; + forecastFogDecay=0.0049999999; + }; +}; +class Mission +{ + class Intel + { + briefingName="BECTI BE 0.97 - Zerty 1.3.4.5"; + overviewText="By Benny - Adapted from OFP era MFCTI (Mike Melvin)"; + resistanceWest=0; + timeOfChanges=24720; + startWind=0; + startWaves=0.099999994; + forecastWind=0; + forecastWaves=0.099999994; + forecastLightnings=0.099999994; + rainForced=1; + year=2035; + month=6; + hour=4; + startFogDecay=0; + forecastFogDecay=0; + }; + class Entities + { + items=124; + class Item0 + { + dataType="Marker"; + position[]={14491.973,9.0812836,5886.626}; + name="CTI_EastRespawn"; + type="Empty"; + colorName="ColorRed"; + fillName="Border"; + drawBorder=1; + id=0; + }; + class Item1 + { + dataType="Marker"; + position[]={2323.0264,13.272663,9262.7939}; + name="CTI_WestRespawn"; + type="Empty"; + colorName="ColorRed"; + fillName="Border"; + drawBorder=1; + id=1; + }; + class Item2 + { + dataType="Marker"; + position[]={16708.023,13.68144,13597.649}; + name="Prison"; + type="Empty"; + colorName="ColorPink"; + id=2; + }; + class Item3 + { + dataType="Marker"; + position[]={15861.336,14.276582,16812.896}; + name="CENTER_POS"; + markerType="ELLIPSE"; + type="Empty"; + a=15000; + b=15000; + id=3; + }; + class Item4 + { + dataType="Marker"; + position[]={5610.021,309.28171,21723.725}; + name="HELO_START_0"; + type="Empty"; + colorName="ColorGreen"; + id=4; + }; + class Item5 + { + dataType="Marker"; + position[]={4639.3633,200.80589,22353.711}; + name="HELO_START_1"; + type="Empty"; + colorName="ColorGreen"; + id=5; + }; + class Item6 + { + dataType="Marker"; + position[]={4653.5127,226.72784,18192.236}; + name="HELO_START"; + type="Empty"; + colorName="ColorGreen"; + id=6; + }; + class Item7 + { + dataType="Marker"; + position[]={4651.3667,226.31035,18209.645}; + name="HELO_START_2"; + type="Empty"; + colorName="ColorGreen"; + id=7; + }; + class Item8 + { + dataType="Marker"; + position[]={7621.6284,208.08614,13325.232}; + name="HELO_START_3"; + type="Empty"; + colorName="ColorGreen"; + id=8; + }; + class Item9 + { + dataType="Marker"; + position[]={10515.029,84.02951,14144.914}; + name="HELO_START_4"; + type="Empty"; + colorName="ColorGreen"; + id=9; + }; + class Item10 + { + dataType="Marker"; + position[]={8501.5254,42.18084,22591.121}; + name="HELO_START_5"; + type="Empty"; + colorName="ColorGreen"; + id=10; + }; + class Item11 + { + dataType="Marker"; + position[]={8281.4951,67.853317,19906.736}; + name="HELO_START_6"; + type="Empty"; + colorName="ColorGreen"; + id=11; + }; + class Item12 + { + dataType="Marker"; + position[]={11651.426,27.650551,22131.984}; + name="HELO_START_7"; + type="Empty"; + colorName="ColorGreen"; + id=12; + }; + class Item13 + { + dataType="Marker"; + position[]={3745.71,21.729914,10576.94}; + name="HELO_START_8"; + type="Empty"; + colorName="ColorGreen"; + id=13; + }; + class Item14 + { + dataType="Marker"; + position[]={5824.6914,21.924395,10721.572}; + name="HELO_START_9"; + type="Empty"; + colorName="ColorGreen"; + id=14; + }; + class Item15 + { + dataType="Marker"; + position[]={6316.9219,30.09,15471.258}; + name="HELO_START_10"; + type="Empty"; + colorName="ColorGreen"; + id=15; + }; + class Item16 + { + dataType="Marker"; + position[]={9742.7783,107.65765,14512.511}; + name="HELO_START_11"; + type="Empty"; + colorName="ColorGreen"; + id=16; + atlOffset=7.6293945e-006; + }; + class Item17 + { + dataType="Marker"; + position[]={11516.446,53.074879,17410.16}; + name="HELO_START_12"; + type="Empty"; + colorName="ColorGreen"; + id=17; + }; + class Item18 + { + dataType="Marker"; + position[]={13560.321,5.5936675,14878.066}; + name="HELO_START_13"; + type="Empty"; + colorName="ColorGreen"; + id=18; + }; + class Item19 + { + dataType="Marker"; + position[]={13922.415,13.724786,17478.414}; + name="HELO_START_14"; + type="Empty"; + colorName="ColorGreen"; + id=19; + }; + class Item20 + { + dataType="Marker"; + position[]={16620.469,12.391303,19819.42}; + name="HELO_START_15"; + type="Empty"; + colorName="ColorGreen"; + id=20; + }; + class Item21 + { + dataType="Marker"; + position[]={15752.398,26.8323,20257.74}; + name="HELO_START_16"; + type="Empty"; + colorName="ColorGreen"; + id=21; + }; + class Item22 + { + dataType="Marker"; + position[]={10057.669,13.515329,9724.3926}; + name="HELO_START_17"; + type="Empty"; + colorName="ColorGreen"; + id=22; + }; + class Item23 + { + dataType="Marker"; + position[]={18950.08,22.684326,6172.5068}; + name="HELO_START_18"; + type="Empty"; + colorName="ColorGreen"; + id=23; + }; + class Item24 + { + dataType="Marker"; + position[]={22839.02,59.218605,7644.248}; + name="HELO_START_19"; + type="Empty"; + colorName="ColorGreen"; + id=24; + }; + class Item25 + { + dataType="Marker"; + position[]={19747.805,59.847923,8550.9883}; + name="HELO_START_20"; + type="Empty"; + colorName="ColorGreen"; + id=25; + }; + class Item26 + { + dataType="Marker"; + position[]={19319.139,117.28299,11713.374}; + name="HELO_START_21"; + type="Empty"; + colorName="ColorGreen"; + id=26; + }; + class Item27 + { + dataType="Marker"; + position[]={13606.947,18.530624,13178.719}; + name="HELO_START_22"; + type="Empty"; + colorName="ColorGreen"; + id=27; + }; + class Item28 + { + dataType="Marker"; + position[]={3647.2109,274.09607,20110.045}; + name="HELO_START_23"; + type="Empty"; + colorName="ColorGreen"; + id=28; + }; + class Item29 + { + dataType="Marker"; + position[]={13592.26,35.56068,20475.77}; + name="HELO_START_24"; + type="Empty"; + colorName="ColorGreen"; + id=29; + }; + class Item30 + { + dataType="Marker"; + position[]={8954.123,191.4641,17143.156}; + name="HELO_START_25"; + type="Empty"; + colorName="ColorGreen"; + id=30; + }; + class Item31 + { + dataType="Marker"; + position[]={8176.6768,116.04903,12137.798}; + name="HELO_START_26"; + type="Empty"; + colorName="ColorGreen"; + id=31; + atlOffset=-7.6293945e-006; + }; + class Item32 + { + dataType="Marker"; + position[]={17605.617,86.35125,17227.758}; + name="HELO_START_27"; + type="Empty"; + colorName="ColorGreen"; + id=32; + }; + class Item33 + { + dataType="Marker"; + position[]={16834.674,46.78714,16838.703}; + name="HELO_START_28"; + type="Empty"; + colorName="ColorGreen"; + id=33; + }; + class Item34 + { + dataType="Marker"; + position[]={15425.264,43.708084,18878.059}; + name="HELO_START_29"; + type="Empty"; + colorName="ColorGreen"; + id=34; + }; + class Item35 + { + dataType="Marker"; + position[]={6342.0215,197.7972,14024.557}; + name="HELO_START_30"; + type="Empty"; + colorName="ColorGreen"; + id=35; + }; + class Item36 + { + dataType="Marker"; + position[]={4550.7393,57.666843,12503.57}; + name="HELO_START_31"; + type="Empty"; + colorName="ColorGreen"; + id=36; + }; + class Item37 + { + dataType="Marker"; + position[]={6447.0005,207.68181,18311.395}; + name="HELO_START_32"; + type="Empty"; + colorName="ColorGreen"; + id=37; + }; + class Item38 + { + dataType="Marker"; + position[]={27734.271,16.79051,21368.125}; + name="HELO_START_33"; + type="Empty"; + colorName="ColorGreen"; + id=38; + }; + class Item39 + { + dataType="Marker"; + position[]={25227.996,29.664711,22464.543}; + name="HELO_START_34"; + type="Empty"; + colorName="ColorGreen"; + id=39; + }; + class Item40 + { + dataType="Marker"; + position[]={26212.406,15.518887,24303}; + name="HELO_START_35"; + type="Empty"; + colorName="ColorGreen"; + id=40; + }; + class Item41 + { + dataType="Marker"; + position[]={22729.473,32.199425,21095.527}; + name="HELO_START_36"; + type="Empty"; + colorName="ColorGreen"; + id=41; + }; + class Item42 + { + dataType="Marker"; + position[]={16182.315,79.453537,10507.869}; + name="HELO_START_37"; + type="Empty"; + colorName="ColorGreen"; + id=42; + }; + class Item43 + { + dataType="Marker"; + position[]={16720.092,12.791599,11673.385}; + name="HELO_START_38"; + type="Empty"; + colorName="ColorGreen"; + id=43; + }; + class Item44 + { + dataType="Marker"; + position[]={20047.928,24.676178,16424.217}; + name="HELO_START_39"; + type="Empty"; + colorName="ColorGreen"; + id=44; + }; + class Item45 + { + dataType="Marker"; + position[]={18892.809,23.786053,14574.043}; + name="HELO_START_40"; + type="Empty"; + colorName="ColorGreen"; + id=45; + }; + class Item46 + { + dataType="Marker"; + position[]={22313.209,9.2807226,14070.693}; + name="HELO_START_41"; + type="Empty"; + colorName="ColorGreen"; + id=46; + }; + class Item47 + { + dataType="Marker"; + position[]={19955.602,23.347048,13878.775}; + name="HELO_START_42"; + type="Empty"; + colorName="ColorGreen"; + id=47; + }; + class Item48 + { + dataType="Marker"; + position[]={17819.961,15.659065,13623.636}; + name="HELO_START_43"; + type="Empty"; + colorName="ColorGreen"; + id=48; + }; + class Item49 + { + dataType="Marker"; + position[]={21335.037,2.6161816,10734.353}; + name="HELO_START_44"; + type="Empty"; + colorName="ColorGreen"; + id=49; + }; + class Item50 + { + dataType="Marker"; + position[]={18920.131,182.50348,10011.912}; + name="HELO_START_45"; + type="Empty"; + colorName="ColorGreen"; + id=50; + }; + class Item51 + { + dataType="Marker"; + position[]={22030.188,21.254408,19726.084}; + name="HELO_START_46"; + type="Empty"; + colorName="ColorGreen"; + id=51; + }; + class Item52 + { + dataType="Marker"; + position[]={22960.787,3.1900001,16952.262}; + name="HELO_START_47"; + type="Empty"; + colorName="ColorGreen"; + id=52; + }; + class Item53 + { + dataType="Marker"; + position[]={24311.746,3.0870998,18266.453}; + name="HELO_START_48"; + type="Empty"; + colorName="ColorGreen"; + id=53; + }; + class Item54 + { + dataType="Marker"; + position[]={25688.229,11.664829,20209.816}; + name="HELO_START_49"; + type="Empty"; + colorName="ColorGreen"; + id=54; + }; + class Item55 + { + dataType="Marker"; + position[]={19638.189,29.112429,19299.75}; + name="HELO_START_50"; + type="Empty"; + colorName="ColorGreen"; + id=55; + }; + class Item56 + { + dataType="Marker"; + position[]={10258.585,16.741814,12662.652}; + name="HELO_START_51"; + type="Empty"; + colorName="ColorGreen"; + id=56; + }; + class Item57 + { + dataType="Marker"; + position[]={13411.286,72.199524,21926.582}; + name="HELO_START_52"; + type="Empty"; + colorName="ColorGreen"; + id=57; + }; + class Item58 + { + dataType="Marker"; + position[]={20674.021,30.730125,18458.713}; + name="HELO_START_53"; + type="Empty"; + colorName="ColorGreen"; + id=58; + }; + class Item59 + { + dataType="Marker"; + position[]={499.56848,-190.99652,30213.908}; + name="CTI_HELP"; + type="Empty"; + colorName="ColorUNKNOWN"; + id=59; + }; + class Item60 + { + dataType="Marker"; + position[]={8457.709,105.3129,25118.77}; + name="CTI_TUTORIAL"; + type="Empty"; + id=60; + atlOffset=-7.6293945e-006; + }; + class Item61 + { + dataType="Object"; + class PositionInfo + { + position[]={20826.033,36.789253,6824.6987}; + angles[]={0.014664836,0,6.2046804}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_selakano0"", resistance, 500,""Town33""] execVM ""Common\Init\Init_Location.sqf"""; + name="Town0"; + }; + id=61; + type="FlagPole_F"; + atlOffset=0.012802124; + }; + class Item62 + { + dataType="Object"; + class PositionInfo + { + position[]={16820.996,26.518801,12713.124}; + angles[]={0.045302324,0,6.2725158}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_pyrgos0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; + name="Town1"; + }; + id=62; + type="FlagPole_F"; + atlOffset=0.0042667389; + }; + class Item63 + { + dataType="Object"; + class PositionInfo + { + position[]={19407.914,42.663628,13262.551}; + angles[]={0.018663859,0,0.022662206}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_dorida0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; + name="Town2"; + }; + id=63; + type="FlagPole_F"; + atlOffset=0.0011024475; + }; + class Item64 + { + dataType="Object"; + class PositionInfo + { + position[]={18089.914,26.811056,15200.277}; + angles[]={6.2578578,0,0.012000273}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_charkia0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town3"; + }; + id=64; + type="FlagPole_F"; + atlOffset=0.0015525818; + }; + class Item65 + { + dataType="Object"; + class PositionInfo + { + position[]={21381.674,26.061756,16414.758}; + angles[]={6.2405448,0,0.0146689}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_kalochori0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; + name="Town6"; + }; + id=65; + type="FlagPole_F"; + atlOffset=0.0040168762; + }; + class Item66 + { + dataType="Object"; + class PositionInfo + { + position[]={18810.496,35.676094,16633.451}; + angles[]={6.2299027,0,6.2511969}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_rodopoli0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; + name="Town4"; + }; + id=66; + type="FlagPole_F"; + atlOffset=0.007686615; + }; + class Item67 + { + dataType="Object"; + class PositionInfo + { + position[]={20945.688,47.213638,16965.613}; + angles[]={0.0040116427,0,6.1888003}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_paros0"", resistance, 350,""Town39""] execVM ""Common\Init\Init_Location.sqf"""; + name="Town5"; + }; + id=67; + type="FlagPole_F"; + atlOffset=0.017852783; + }; + class Item68 + { + dataType="Object"; + class PositionInfo + { + position[]={27018.002,25.26956,23167.574}; + angles[]={6.2711854,0,0.051953323}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_molos0"", resistance, 145,""Town47""] execVM ""Common\Init\Init_Location.sqf"""; + name="Town7"; + }; + id=68; + type="FlagPole_F"; + atlOffset=0.0063037872; + }; + class Item69 + { + dataType="Object"; + class PositionInfo + { + position[]={16640.928,19.293343,16056.638}; + angles[]={6.272521,0,0.0093286335}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_anthrakia0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; + name="Town8"; + }; + id=69; + type="FlagPole_F"; + atlOffset=0.00038051605; + }; + class Item70 + { + dataType="Object"; + class PositionInfo + { + position[]={16244.04,29.379099,17314.234}; + angles[]={6.2113094,0,0.037316564}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_telos0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town9"; + }; + id=70; + type="FlagPole_F"; + atlOffset=0.013177872; + }; + class Item71 + { + dataType="Object"; + class PositionInfo + { + position[]={14032.271,30.131212,18737}; + angles[]={0.039977662,0,6.2778587}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_athira0"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; + name="Town12"; + }; + id=71; + type="FlagPole_F"; + atlOffset=0.0032463074; + }; + class Item72 + { + dataType="Object"; + class PositionInfo + { + position[]={11745.446,57.814919,18331.873}; + angles[]={6.213963,0,6.253861}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_koroni0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; + name="Town13"; + }; + id=72; + type="FlagPole_F"; + atlOffset=0.01134491; + }; + class Item73 + { + dataType="Object"; + class PositionInfo + { + position[]={10292.485,134.56599,19118.633}; + angles[]={6.1980581,0,6.2618537}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_galati0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; + name="Town16"; + }; + id=73; + type="FlagPole_F"; + atlOffset=0.015487671; + }; + class Item74 + { + dataType="Object"; + class PositionInfo + { + position[]={4588.5151,303.55054,21381.932}; + angles[]={6.2791886,0,6.2791886}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_oreokastro0"", resistance, 500,""Town38""] execVM ""Common\Init\Init_Location.sqf"""; + name="Town21"; + }; + id=74; + type="FlagPole_F"; + atlOffset=3.0517578e-005; + }; + class Item75 + { + dataType="Object"; + class PositionInfo + { + position[]={8649.4277,184.71611,18285.018}; + angles[]={0.074527748,0,6.2671871}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_syrta0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town17"; + }; + id=75; + type="FlagPole_F"; + atlOffset=0.011825562; + }; + class Item76 + { + dataType="Object"; + class PositionInfo + { + position[]={9298.0059,119.61528,15932.003}; + angles[]={0.081154868,0,0.037314966}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_agiosdionysios0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town18"; + }; + id=76; + type="FlagPole_F"; + atlOffset=0.016075134; + }; + class Item77 + { + dataType="Object"; + class PositionInfo + { + position[]={12362.523,25.348881,15765.438}; + angles[]={0.0053265258,0,0.017329043}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_lakka0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town14"; + }; + id=77; + type="FlagPole_F"; + atlOffset=0.00066947937; + }; + class Item78 + { + dataType="Object"; + class PositionInfo + { + position[]={12608.428,16.056833,14320.253}; + angles[]={6.1927657,0,6.2405434}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_neochori0"", resistance, 350] execVM ""Common\Init\Init_Location.sqf"""; + name="Town15"; + }; + id=78; + type="FlagPole_F"; + atlOffset=0.019950867; + }; + class Item79 + { + dataType="Object"; + class PositionInfo + { + position[]={9038.1826,26.646751,11954.574}; + angles[]={0.021328852,0,6.1782389}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_zaros0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; + name="Town19"; + }; + id=79; + type="FlagPole_F"; + atlOffset=0.021104813; + }; + class Item80 + { + dataType="Object"; + class PositionInfo + { + position[]={3507.7151,12.373648,12996.904}; + angles[]={6.2671871,0,0.010664274}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_kavala0"", resistance, 500,""Town46""] execVM ""Common\Init\Init_Location.sqf"""; + name="Town20"; + }; + id=80; + type="FlagPole_F"; + atlOffset=0.00073432922; + }; + class Item81 + { + dataType="Object"; + class PositionInfo + { + position[]={14181.469,23.505833,16286.399}; + angles[]={0.012000273,0,6.2778587}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_airbase010"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; + name="Town11"; + }; + id=81; + type="FlagPole_F"; + atlOffset=0.00033187866; + }; + class Item82 + { + dataType="Object"; + class PositionInfo + { + position[]={15191.061,21.902496,17301.797}; + angles[]={0.0013372133,0,0.0013372133}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""STR_Map_Military_Base"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; + name="Town10"; + }; + id=82; + type="FlagPole_F"; + atlOffset=3.8146973e-006; + }; + class Item83 + { + dataType="Object"; + class PositionInfo + { + position[]={20274.463,52.501724,11714.725}; + angles[]={0.042640556,0,6.2778587}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_chalkeia0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; + name="Town22"; + }; + id=83; + type="FlagPole_F"; + atlOffset=0.0036773682; + }; + class Item84 + { + dataType="Object"; + class PositionInfo + { + position[]={12842.514,46.522461,19633.301}; + angles[]={6.253861,0,6.2645216}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_ifestiona0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; + name="Town23"; + }; + id=84; + type="FlagPole_F"; + atlOffset=0.0023727417; + }; + class Item85 + { + dataType="Object"; + class PositionInfo + { + position[]={4864.3594,82.693581,16151.614}; + angles[]={0.02399601,0,6.2445378}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_negades0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town24"; + }; + id=85; + type="FlagPole_F"; + atlOffset=0.0040969849; + }; + class Item86 + { + dataType="Object"; + class PositionInfo + { + position[]={25623.484,22.950079,21285.391}; + angles[]={6.249866,0,0.0079935296}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_sofia0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; + name="Town25"; + }; + id=86; + type="FlagPole_F"; + atlOffset=0.0023212433; + }; + class Item87 + { + dataType="Object"; + class PositionInfo + { + position[]={20516.811,38.253426,8883.252}; + angles[]={6.1219311,0,0.23175959}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_panagia0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; + name="Town26"; + }; + id=87; + type="FlagPole_F"; + atlOffset=0.15982437; + }; + class Item88 + { + dataType="Object"; + class PositionInfo + { + position[]={7118.8721,116.19866,16439.533}; + angles[]={6.1637564,0,0.071875811}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_kore0"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; + name="Town27"; + }; + id=88; + type="FlagPole_F"; + atlOffset=0.038856506; + }; + class Item89 + { + dataType="Object"; + class PositionInfo + { + position[]={22950.141,9.1006737,18859.719}; + angles[]={0.0093350215,0,6.259192}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_almyra0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; + name="Town28"; + }; + id=89; + type="FlagPole_F"; + atlOffset=0.00093460083; + }; + class Item90 + { + dataType="Object"; + class PositionInfo + { + position[]={13587.634,19.314034,12209.913}; + angles[]={0.0039967569,0,0.0013372133}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_makrynisiisland0"", resistance, 25] execVM ""Common\Init\Init_Location.sqf"""; + name="Town29"; + }; + id=90; + type="FlagPole_F"; + atlOffset=3.9100647e-005; + }; + class Item91 + { + dataType="Object"; + class PositionInfo + { + position[]={14964.189,10.588233,11105.679}; + angles[]={0.017332481,0,6.2046804}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_faronaki0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; + name="Town30"; + }; + id=91; + type="FlagPole_F"; + atlOffset=0.012816429; + }; + class Item92 + { + dataType="Object"; + class PositionInfo + { + position[]={17745.547,6.3756104,18107.686}; + angles[]={0.0093286335,0,6.2711902}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_kalithea0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; + name="Town32"; + }; + id=92; + type="FlagPole_F"; + atlOffset=0.00044631958; + }; + class Item93 + { + dataType="Object"; + class PositionInfo + { + position[]={11574.771,23.315058,9442.752}; + angles[]={6.2711902,0,6.2765174}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_vikos0"", resistance, 145,""Town42""] execVM ""Common\Init\Init_Location.sqf"""; + name="Town33"; + }; + id=93; + type="FlagPole_F"; + atlOffset=0.0027294159; + }; + class Item94 + { + dataType="Object"; + class PositionInfo + { + position[]={17077.311,23.238556,10059.891}; + angles[]={0.031988446,0,0.027993103}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_ekali0"", resistance, 200,""Town33""] execVM ""Common\Init\Init_Location.sqf"""; + name="Town31"; + }; + id=94; + type="FlagPole_F"; + atlOffset=0.0035552979; + }; + class Item95 + { + dataType="Object"; + class PositionInfo + { + position[]={14651.969,49.779419,20758.879}; + angles[]={6.272521,0,6.2338929}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_frini0"", resistance, 175] execVM ""Common\Init\Init_Location.sqf"""; + name="Town34"; + }; + id=95; + type="FlagPole_F"; + atlOffset=0.005065918; + }; + class Item96 + { + dataType="Object"; + class PositionInfo + { + position[]={16854.336,14.130496,21871.979}; + angles[]={0.022662206,0,6.2818484}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_nychi0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; + name="Town35"; + }; + id=96; + type="FlagPole_F"; + atlOffset=0.0010061264; + }; + class Item97 + { + dataType="Object"; + class PositionInfo + { + position[]={20113.703,22.211153,20032.137}; + angles[]={0.0039967569,0,0.038647637}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""STR_Map_Theater_Ruins"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; + name="Town36"; + }; + id=97; + type="FlagPole_F"; + atlOffset=0.0030250549; + }; + class Item98 + { + dataType="Object"; + class PositionInfo + { + position[]={20943.436,17.919567,19257.873}; + angles[]={0.0093350215,0,0.075854406}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""STR_Map_Military_Outpost"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; + name="Town37"; + }; + id=98; + type="FlagPole_F"; + atlOffset=0.011717796; + }; + class Item99 + { + dataType="Object"; + class PositionInfo + { + position[]={9220.6602,19.509701,21622.859}; + angles[]={0.022664838,0,0.027993103}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""STR_Map_North_Airfield"", resistance, 500,""Town41""] execVM ""Common\Init\Init_Location.sqf"""; + name="Town38"; + }; + id=99; + type="FlagPole_F"; + atlOffset=0.007390976; + }; + class Item100 + { + dataType="Object"; + class PositionInfo + { + position[]={23199.52,18.140114,19971.23}; + angles[]={6.272521,0,6.2765174}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_ioannina0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town39"; + }; + id=100; + type="FlagPole_F"; + atlOffset=0.00032138824; + }; + class Item101 + { + dataType="Object"; + class PositionInfo + { + position[]={11623.219,27.020689,11943.426}; + angles[]={6.2352223,0,6.2179451}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_aacairfield0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; + name="Town40"; + }; + id=101; + type="FlagPole_F"; + atlOffset=0.013057709; + }; + class Item102 + { + dataType="Object"; + class PositionInfo + { + position[]={26851.094,30.606556,24466.365}; + angles[]={0.031988446,0,0.0013372133}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_molosairfield0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; + name="Town41"; + }; + id=102; + type="FlagPole_F"; + atlOffset=0.0020027161; + }; + class Item103 + { + dataType="Object"; + class PositionInfo + { + position[]={5068.5044,56.909691,11306.087}; + angles[]={6.2551947,0,6.2325621}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_panochori0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town42"; + }; + id=103; + type="FlagPole_F"; + atlOffset=0.0066490173; + }; + class Item104 + { + dataType="Object"; + class PositionInfo + { + position[]={21895.934,26.782196,21010.182}; + angles[]={6.129735,0,0.0066592805}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""STR_Map_Hotel_Complex"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + name="Town43"; + }; + id=104; + type="FlagPole_F"; + atlOffset=0.047597885; + }; + class Item105 + { + dataType="Object"; + class PositionInfo + { + position[]={5475.6577,31.276804,14999.543}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_stadium0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; + name="Town44"; + }; + id=105; + type="FlagPole_F"; + }; + class Item106 + { + dataType="Object"; + class PositionInfo + { + position[]={21091.016,5.8291836,14768.472}; + angles[]={0.017332481,0,0.12468339}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_limni0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; + name="Town45"; + }; + id=106; + type="FlagPole_F"; + atlOffset=0.03186357; + }; + class Item107 + { + dataType="Object"; + class PositionInfo + { + position[]={3853.6687,19.174381,17472.664}; + angles[]={6.2192721,0,0.077179179}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_agioskonstantinos0"", resistance, 140,""Town21""] execVM ""Common\Init\Init_Location.sqf"""; + name="Town46"; + }; + id=107; + type="FlagPole_F"; + atlOffset=0.019934654; + }; + class Item108 + { + dataType="Object"; + class PositionInfo + { + position[]={21752.174,19.689096,7520.2725}; + angles[]={0.0093286335,0,6.2791886}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_feres0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; + name="Town47"; + }; + id=108; + type="FlagPole_F"; + atlOffset=0.000207901; + }; + class Item109 + { + dataType="Object"; + class PositionInfo + { + position[]={5853.1182,229.927,20094.025}; + angles[]={6.2738504,0,0.069221549}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_dump0"", resistance, 175,""Town17""] execVM ""Common\Init\Init_Location.sqf"""; + name="Town48"; + }; + id=109; + type="FlagPole_F"; + atlOffset=0.0097351074; + }; + class Item110 + { + dataType="Object"; + class PositionInfo + { + position[]={23236.664,38.75779,21794.523}; + angles[]={0.038647637,0,0.045302324}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="nullReturn = [this, localize ""str_a3_nidasos0"", resistance, 145] execVM ""Common\Init\Init_Location.sqf"""; + name="Town49"; + }; + id=110; + type="FlagPole_F"; + atlOffset=0.0071182251; + }; + class Item111 + { + dataType="Logic"; + class PositionInfo + { + position[]={2288.1289,7.7944555,9280.5264}; + }; + name="CTI_WEST"; + id=111; + type="Logic"; + }; + class Item112 + { + dataType="Logic"; + class PositionInfo + { + position[]={14497.438,10.97437,5865.5117}; + }; + name="CTI_EAST"; + id=112; + type="Logic"; + }; + class Item113 + { + dataType="Group"; + side="East"; + class Entities + { + items=25; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={14482.121,9.8335609,5893.3213}; + angles[]={0.30364406,0,6.0730028}; + }; + side="East"; + flags=6; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=114; + type="O_Soldier_SL_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={14487.121,9.6155596,5888.3711}; + angles[]={0.30364406,0,5.9329162}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="COLONEL"; + init="this allowDamage false; (group this) setGroupID [""Default Team""];this disableAI ""MOVE"";this disableAI ""AUTOTARGET"";this disableAI ""TARGET"";"; + name="CTI_EAST_DEFAULT_GROUP"; + }; + id=115; + type="O_Soldier_F"; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={14482.121,12.04697,5883.3711}; + angles[]={0.10626491,0,6.1782393}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayer=1; + isPlayable=1; + }; + id=116; + type="O_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male03PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + nAttributes=2; + }; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={14487.121,11.690472,5878.3711}; + angles[]={0.21018261,0,6.0640931}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=117; + type="O_Soldier_SL_F"; + }; + class Item4 + { + dataType="Object"; + class PositionInfo + { + position[]={14482.121,13.243651,5873.3711}; + angles[]={0.12993059,0,6.2578578}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=118; + type="O_Soldier_SL_F"; + }; + class Item5 + { + dataType="Object"; + class PositionInfo + { + position[]={14484.867,12.719265,5869.4692}; + angles[]={6.1637559,0,6.1769204}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=119; + type="O_Soldier_SL_F"; + }; + class Item6 + { + dataType="Object"; + class PositionInfo + { + position[]={14486.079,12.085032,5862.3247}; + angles[]={0.0093350215,0,6.1769209}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=120; + type="O_Soldier_SL_F"; + }; + class Item7 + { + dataType="Object"; + class PositionInfo + { + position[]={14489.289,11.779264,5858.4019}; + angles[]={0.0093350215,0,6.1769209}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=121; + type="O_Soldier_SL_F"; + }; + class Item8 + { + dataType="Object"; + class PositionInfo + { + position[]={14493.111,11.269214,5857.0439}; + angles[]={6.2046804,0,6.1545658}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=122; + type="O_Soldier_SL_F"; + }; + class Item9 + { + dataType="Object"; + class PositionInfo + { + position[]={14493.116,11.102674,5854.936}; + angles[]={6.2046804,0,6.1545658}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=123; + type="O_Soldier_SL_F"; + }; + class Item10 + { + dataType="Object"; + class PositionInfo + { + position[]={14491.64,10.838742,5852.5313}; + angles[]={6.127131,0,6.2325611}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=124; + type="O_Soldier_SL_F"; + }; + class Item11 + { + dataType="Object"; + class PositionInfo + { + position[]={14493.937,10.517456,5851.2285}; + angles[]={6.127131,0,6.2325611}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=125; + type="O_Soldier_SL_F"; + atlOffset=-9.5367432e-007; + }; + class Item12 + { + dataType="Object"; + class PositionInfo + { + position[]={14497.858,10.133352,5847.647}; + angles[]={0.042641956,0,5.9590368}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=126; + type="O_Soldier_SL_F"; + }; + class Item13 + { + dataType="Object"; + class PositionInfo + { + position[]={14512.12,7.1621251,5893.0957}; + angles[]={6.2166171,0,6.1756024}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=127; + type="O_Soldier_SL_F"; + atlOffset=4.7683716e-007; + }; + class Item14 + { + dataType="Object"; + class PositionInfo + { + position[]={14507.12,7.5813837,5888.0957}; + angles[]={6.2605233,0,6.1323404}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=128; + type="O_Soldier_SL_F"; + }; + class Item15 + { + dataType="Object"; + class PositionInfo + { + position[]={14512.12,6.4824553,5883.0957}; + angles[]={6.2099824,0,6.13234}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=129; + type="O_Soldier_SL_F"; + atlOffset=4.7683716e-007; + }; + class Item16 + { + dataType="Object"; + class PositionInfo + { + position[]={14507.12,7.4580698,5878.0957}; + angles[]={6.256525,0,5.9929523}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=130; + type="O_Soldier_SL_F"; + atlOffset=-0.29771471; + }; + class Item17 + { + dataType="Object"; + class PositionInfo + { + position[]={14512.12,6.1292048,5873.0957}; + angles[]={6.256525,0,5.9929523}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=131; + type="O_Soldier_SL_F"; + }; + class Item18 + { + dataType="Object"; + class PositionInfo + { + position[]={14507.12,7.3394032,5868.0957}; + angles[]={6.2578578,0,5.9905057}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=132; + type="O_Soldier_SL_F"; + }; + class Item19 + { + dataType="Object"; + class PositionInfo + { + position[]={14512.12,5.8589268,5863.0957}; + angles[]={0.22543514,0,5.9905062}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=133; + type="O_Soldier_SL_F"; + atlOffset=-0.34478331; + }; + class Item20 + { + dataType="Object"; + class PositionInfo + { + position[]={14507.12,8.399498,5858.0957}; + angles[]={0.13386136,0,6.0793881}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=134; + type="O_Soldier_SL_F"; + }; + class Item21 + { + dataType="Object"; + class PositionInfo + { + position[]={14512.12,7.0922318,5853.0957}; + angles[]={6.2685208,0,6.0793877}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=135; + type="O_Soldier_SL_F"; + atlOffset=-0.28221989; + }; + class Item22 + { + dataType="Object"; + class PositionInfo + { + position[]={14507.12,7.9941993,5848.0957}; + angles[]={6.2046804,0,6.1180367}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=136; + type="O_Soldier_SL_F"; + }; + class Item23 + { + dataType="Object"; + class PositionInfo + { + position[]={14509.348,7.3115125,5844.0229}; + angles[]={6.2099833,0,6.1128521}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=137; + type="O_Soldier_SL_F"; + atlOffset=-4.7683716e-007; + }; + class Item24 + { + dataType="Object"; + class PositionInfo + { + position[]={14502.701,8.7139492,5842.7749}; + angles[]={0.042641956,0,5.9590368}; + }; + side="East"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=138; + type="O_Soldier_SL_F"; + }; + }; + class Attributes + { + formation="STAG COLUMN"; + }; + id=113; + }; + class Item114 + { + dataType="Group"; + side="West"; + class Entities + { + items=25; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={2314.9258,12.648989,9283.7012}; + angles[]={0.057271164,0,0.1312411}; + }; + side="West"; + flags=6; + class Attributes + { + skill=0.60000002; + rank="COLONEL"; + init="this allowDamage false;(group this) setGroupIDGlobal [""Default Team""];this disableAI ""MOVE"";this disableAI ""AUTOTARGET"";this disableAI ""TARGET"";"; + name="CTI_WEST_DEFAULT_GROUP"; + }; + id=140; + type="B_Soldier_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={2319.9258,13.644493,9278.751}; + angles[]={0.057271164,0,0.15214813}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=141; + type="B_Soldier_SL_F"; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={2314.9258,12.525521,9273.751}; + angles[]={6.2139621,0,0.2114578}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=142; + type="B_Soldier_SL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male07ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.99000001; + }; + }; + }; + nAttributes=2; + }; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={2319.9258,13.049868,9268.751}; + angles[]={6.2498641,0,0.11153467}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=143; + type="B_Soldier_SL_F"; + }; + class Item4 + { + dataType="Object"; + class PositionInfo + { + position[]={2314.9258,12.819977,9263.751}; + angles[]={0.010664274,0,0.02666023}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=144; + type="B_Soldier_SL_F"; + }; + class Item5 + { + dataType="Object"; + class PositionInfo + { + position[]={2319.9258,12.771416,9258.751}; + angles[]={6.2285728,0,0.031988446}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=145; + type="B_Soldier_SL_F"; + }; + class Item6 + { + dataType="Object"; + class PositionInfo + { + position[]={2314.9258,12.317031,9253.751}; + angles[]={6.1861577,0,0.018667053}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=146; + type="B_Soldier_SL_F"; + }; + class Item7 + { + dataType="Object"; + class PositionInfo + { + position[]={2319.9258,11.765233,9248.751}; + angles[]={6.1861577,0,6.2365522}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=147; + type="B_Soldier_SL_F"; + }; + class Item8 + { + dataType="Object"; + class PositionInfo + { + position[]={2314.9258,11.481448,9243.751}; + angles[]={6.1782393,0,6.2365537}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=148; + type="B_Soldier_SL_F"; + }; + class Item9 + { + dataType="Object"; + class PositionInfo + { + position[]={2319.9258,9.8097668,9238.751}; + angles[]={5.8206048,0,6.0742788}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=149; + type="B_Soldier_SL_F"; + }; + class Item10 + { + dataType="Object"; + class PositionInfo + { + position[]={2314.9258,8.4945126,9233.751}; + angles[]={6.0755548,0,6.0213389}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=150; + type="B_Soldier_SL_F"; + }; + class Item11 + { + dataType="Object"; + class PositionInfo + { + position[]={2337.5042,16.200138,9289.0645}; + angles[]={0.018663859,0,0.074528553}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=151; + type="B_Soldier_SL_F"; + atlOffset=3.8146973e-006; + }; + class Item12 + { + dataType="Object"; + class PositionInfo + { + position[]={2332.5042,15.609912,9284.0645}; + angles[]={6.2405448,0,0.11548408}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=152; + type="B_Soldier_SL_F"; + }; + class Item13 + { + dataType="Object"; + class PositionInfo + { + position[]={2337.5042,15.976583,9279.0645}; + angles[]={6.2405448,0,0.11548408}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=153; + type="B_Soldier_SL_F"; + atlOffset=-9.5367432e-007; + }; + class Item14 + { + dataType="Object"; + class PositionInfo + { + position[]={2332.5042,15.201583,9274.0645}; + angles[]={6.2458687,0,0.053282689}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=154; + type="B_Soldier_SL_F"; + }; + class Item15 + { + dataType="Object"; + class PositionInfo + { + position[]={2337.5042,15.643533,9269.0645}; + }; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=155; + type="B_Soldier_SL_F"; + atlOffset=0.33308029; + }; + class Item16 + { + dataType="Object"; + class PositionInfo + { + position[]={2332.5042,14.609595,9264.0645}; + angles[]={6.1914434,0,0.13647979}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=156; + type="B_Soldier_SL_F"; + atlOffset=0.10816097; + }; + class Item17 + { + dataType="Object"; + class PositionInfo + { + position[]={2335,13.910367,9259.4766}; + angles[]={6.1769204,0,6.233892}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=157; + type="B_Soldier_SL_F"; + }; + class Item18 + { + dataType="Object"; + class PositionInfo + { + position[]={2332.5042,12.691146,9254.0645}; + angles[]={5.8400087,0,6.0768318}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=158; + type="B_Soldier_SL_F"; + atlOffset=-0.4017849; + }; + class Item19 + { + dataType="Object"; + class PositionInfo + { + position[]={2337.5042,9.6730919,9249.0645}; + angles[]={5.8400087,0,6.0768318}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=159; + type="B_Soldier_SL_F"; + }; + class Item20 + { + dataType="Object"; + class PositionInfo + { + position[]={2325.0005,10.993038,9246.0049}; + angles[]={6.0188522,0,5.8026171}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=160; + type="B_Soldier_SL_F"; + }; + class Item21 + { + dataType="Object"; + class PositionInfo + { + position[]={2327.6113,6.3763151,9235.6641}; + angles[]={5.8206053,0,5.9795418}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=161; + type="B_Soldier_SL_F"; + atlOffset=4.7683716e-007; + }; + class Item22 + { + dataType="Object"; + class PositionInfo + { + position[]={2329.3284,6.8502789,9239.1045}; + angles[]={6.0003133,0,5.8026171}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=162; + type="B_Soldier_SL_F"; + atlOffset=4.7683716e-007; + }; + class Item23 + { + dataType="Object"; + class PositionInfo + { + position[]={2332.2759,3.347275,9232.4805}; + angles[]={6.0768318,0,5.9795418}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=163; + type="B_Soldier_SL_F"; + }; + class Item24 + { + dataType="Object"; + class PositionInfo + { + position[]={2321.0681,5.4266376,9229.5781}; + angles[]={5.894659,0,6.0338197}; + }; + side="West"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + isPlayable=1; + }; + id=164; + type="B_Soldier_SL_F"; + }; + }; + class Attributes + { + formation="STAG COLUMN"; + }; + id=139; + }; + class Item115 + { + dataType="Logic"; + class PositionInfo + { + position[]={8504.5732,33.204266,24831.566}; + }; + name="ADMIN_ZEUS"; + id=165; + type="ModuleCurator_F"; + class CustomAttributes + { + class Attribute0 + { + property="ModuleCurator_F_Owner"; + expression="_this setVariable ['Owner',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value=""; + }; + }; + }; + class Attribute1 + { + property="ModuleCurator_F_Forced"; + expression="_this setVariable ['Forced',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + class Attribute2 + { + property="ModuleCurator_F_Name"; + expression="_this setVariable ['Name',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value=""; + }; + }; + }; + class Attribute3 + { + property="ModuleCurator_F_Addons"; + expression="_this setVariable ['Addons',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + nAttributes=4; + }; + }; + class Item116 + { + dataType="Logic"; + class PositionInfo + { + position[]={8512.666,32.878616,24831.623}; + }; + id=166; + type="ModuleCuratorAddAddons_F"; + class CustomAttributes + { + class Attribute0 + { + property="ModuleCuratorAddAddons_F_Curator"; + expression="_this setVariable ['Curator',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value=""; + }; + }; + }; + class Attribute1 + { + property="ModuleCuratorAddAddons_F_Addons"; + expression="_this setVariable ['Addons',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="""A3_Modules_F_Curator_Environment"",""A3_Modules_F_Curator_Smokeshells"",""A3_Characters_F_Civil"",""A3_Modules_F_Curator_Effects"",""A3_Modules_F_Curator_Misc"",""A3_Modules_F_Curator_Lightning"""; + }; + }; + }; + class Attribute2 + { + property="ModuleCuratorAddAddons_F_Text"; + expression="_this setVariable ['Text',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value=""; + }; + }; + }; + class Attribute3 + { + property="ModuleCuratorAddAddons_F_Mode"; + expression="_this setVariable ['Mode',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + nAttributes=4; + }; + }; + class Item117 + { + dataType="Logic"; + class PositionInfo + { + position[]={8428.5938,23.294439,24806.621}; + }; + name="HC2"; + init="this allowDamage false;"; + isPlayable=1; + id=167; + type="HeadlessClient_F"; + }; + class Item118 + { + dataType="Logic"; + class PositionInfo + { + position[]={8439.791,22.404831,24806.396}; + }; + name="HC3"; + init="this allowDamage false;"; + isPlayable=1; + id=168; + type="HeadlessClient_F"; + }; + class Item119 + { + dataType="Logic"; + class PositionInfo + { + position[]={8452.1084,23.873102,24806.844}; + }; + name="HC4"; + init="this allowDamage false;"; + isPlayable=1; + id=169; + type="HeadlessClient_F"; + }; + class Item120 + { + dataType="Logic"; + class PositionInfo + { + position[]={8461.5146,24.935966,24807.293}; + }; + name="HC5"; + init="this allowDamage false;"; + isPlayable=1; + id=170; + type="HeadlessClient_F"; + }; + class Item121 + { + dataType="Logic"; + class PositionInfo + { + position[]={8418.7393,24.140474,24806.621}; + }; + name="HC1"; + init="this allowDamage false;"; + isPlayable=1; + id=171; + type="HeadlessClient_F"; + }; + class Item122 + { + dataType="Logic"; + class PositionInfo + { + position[]={8443.4609,37.155445,24839.758}; + }; + name="CTI_GUER"; + id=172; + type="Logic"; + }; + class Item123 + { + dataType="Marker"; + position[]={505.74133,0,30224.15}; + name="marker_61"; + text="Visit our Discord: https://discord.gg/YhBUUSr"; + type="mil_warning"; + colorName="ColorWEST"; + id=177; + atlOffset=191.07422; + }; + }; + class Connections + { + class LinkIDProvider + { + nextID=49; + }; + class Links + { + items=49; + class Item0 + { + linkID=0; + item0=142; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item1 + { + linkID=1; + item0=144; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item2 + { + linkID=2; + item0=143; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item3 + { + linkID=3; + item0=145; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item4 + { + linkID=4; + item0=146; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item5 + { + linkID=5; + item0=147; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item6 + { + linkID=6; + item0=148; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item7 + { + linkID=7; + item0=156; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item8 + { + linkID=8; + item0=155; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item9 + { + linkID=9; + item0=154; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item10 + { + linkID=10; + item0=153; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item11 + { + linkID=11; + item0=152; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item12 + { + linkID=12; + item0=151; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item13 + { + linkID=13; + item0=150; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item14 + { + linkID=14; + item0=149; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item15 + { + linkID=15; + item0=157; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item16 + { + linkID=16; + item0=158; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item17 + { + linkID=17; + item0=159; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item18 + { + linkID=18; + item0=160; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item19 + { + linkID=19; + item0=161; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item20 + { + linkID=20; + item0=162; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item21 + { + linkID=21; + item0=163; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item22 + { + linkID=22; + item0=164; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item23 + { + linkID=23; + item0=141; + item1=111; + class CustomData + { + type="Sync"; + }; + }; + class Item24 + { + linkID=24; + item0=114; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item25 + { + linkID=25; + item0=117; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item26 + { + linkID=26; + item0=118; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item27 + { + linkID=27; + item0=119; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item28 + { + linkID=28; + item0=120; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item29 + { + linkID=29; + item0=121; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item30 + { + linkID=30; + item0=122; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item31 + { + linkID=31; + item0=123; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item32 + { + linkID=32; + item0=124; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item33 + { + linkID=33; + item0=125; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item34 + { + linkID=34; + item0=126; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item35 + { + linkID=35; + item0=127; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item36 + { + linkID=36; + item0=128; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item37 + { + linkID=37; + item0=129; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item38 + { + linkID=38; + item0=130; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item39 + { + linkID=39; + item0=131; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item40 + { + linkID=40; + item0=132; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item41 + { + linkID=41; + item0=133; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item42 + { + linkID=42; + item0=134; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item43 + { + linkID=43; + item0=135; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item44 + { + linkID=44; + item0=136; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item45 + { + linkID=45; + item0=137; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item46 + { + linkID=46; + item0=138; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item47 + { + linkID=47; + item0=116; + item1=112; + class CustomData + { + type="Sync"; + }; + }; + class Item48 + { + linkID=48; + item0=166; + item1=165; + class CustomData + { + type="Sync"; + }; + }; + }; + }; +}; +class OutroLoose +{ + class Intel + { + timeOfChanges=1800.0002; + startWeather=0.30000001; + startWind=0.1; + startWaves=0.1; + forecastWeather=0.30000001; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2035; + month=7; + day=6; + hour=14; + minute=15; + startFogBase=0.001; + forecastFogBase=0.001; + startFogDecay=0.0049999999; + forecastFogDecay=0.0049999999; + }; +}; +class OutroWin +{ + class Intel + { + timeOfChanges=1800.0002; + startWeather=0.30000001; + startWind=0.1; + startWaves=0.1; + forecastWeather=0.30000001; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2035; + month=7; + day=6; + hour=14; + minute=15; + startFogBase=0.001; + forecastFogBase=0.001; + startFogDecay=0.0049999999; + forecastFogDecay=0.0049999999; + }; +}; From 122b3f23db84b8ad67b60d715bf3bb215ecc53eb Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sun, 14 Apr 2019 15:13:04 +0200 Subject: [PATCH 075/267] fixed map mixup --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 4de6821e4..74a83d1a7 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ # Benny-Edition-CTI-0.97-Zerty-Modification -# Malden Version ## Monetization This mission (or code that I own inside) __cannot__ be used in a monetization process as defined by BiS at http://www.bistudio.com/monetization & http://www.bistudio.com/monetization/faq From 98274ac9468333d74673b3cb61219189b0fc7ca4 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sun, 14 Apr 2019 15:53:34 +0200 Subject: [PATCH 076/267] fixed Free flares bug --- .../Henroth_AirLoadout/Common_ACRefreshLoadoutMounted.sqf | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Addons/Henroth_AirLoadout/Common_ACRefreshLoadoutMounted.sqf b/Addons/Henroth_AirLoadout/Common_ACRefreshLoadoutMounted.sqf index c7f31c621..2a2f34661 100644 --- a/Addons/Henroth_AirLoadout/Common_ACRefreshLoadoutMounted.sqf +++ b/Addons/Henroth_AirLoadout/Common_ACRefreshLoadoutMounted.sqf @@ -141,9 +141,10 @@ for [ {_mount_index = 0},{ _mount_index < ( count ( _all_mountpoint_options ))}, { _vehicle addWeaponTurret [ _weapon_classname , _turret_position ]; }; - - _vehicle addMagazineTurret [ _magazine_classname , _turret_position ]; - + if ( not _not_resreached_magzine ) then + { + _vehicle addMagazineTurret [ _magazine_classname , _turret_position ]; + }; if ( not _mount_loadout_enabled ) then { _vehicle setAmmo [ _weapon_classname , 0 ]; From 2874a1bb5d6f7a37ad347be83e7e00cffa501e9f Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sun, 14 Apr 2019 20:52:48 +0200 Subject: [PATCH 077/267] attemped fix for joining problem (when groups bug out) --- Server/Functions/Server_OnPlayerConnected.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/Functions/Server_OnPlayerConnected.sqf b/Server/Functions/Server_OnPlayerConnected.sqf index 265323f77..35f9f2b37 100644 --- a/Server/Functions/Server_OnPlayerConnected.sqf +++ b/Server/Functions/Server_OnPlayerConnected.sqf @@ -47,7 +47,7 @@ while {isNull _unit && !((side _unit) in [east,west]) && _try <10} do { { _unit = _x; }; - } forEach allUnits + allDead ; + } forEach allPlayers; // allUnits + allDead From 2f97f46c71273933820263129cfd9bc9bd422cac Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Wed, 24 Apr 2019 19:31:33 +0200 Subject: [PATCH 078/267] should fix #272 To test --- Client/Events/Events_UI_UnitsCamera.sqf | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Client/Events/Events_UI_UnitsCamera.sqf b/Client/Events/Events_UI_UnitsCamera.sqf index 7fc1252c1..ba0bb03c7 100644 --- a/Client/Events/Events_UI_UnitsCamera.sqf +++ b/Client/Events/Events_UI_UnitsCamera.sqf @@ -147,8 +147,13 @@ switch (_action) do { case "onUnitsAILBSelChanged": { _changeto = _this select 1; - _ai = (uiNamespace getVariable "cti_dialog_ui_unitscam_groups_ai") select _changeto; - if (alive _ai) then { + if (count (uiNamespace getVariable "cti_dialog_ui_unitscam_groups_ai") >= (_changeto +1) ) then { + _ai = (uiNamespace getVariable "cti_dialog_ui_unitscam_groups_ai") select _changeto; + } else { + _ai =objnull; + }; + + if ( alive _ai) then { uiNamespace setVariable ["cti_dialog_ui_unitscam_focus", _ai]; switch (uiNamespace getVariable "cti_dialog_ui_unitscam_camview") do { case "internal": {vehicle _ai switchCamera "INTERNAL"}; case "ironsight": {vehicle _ai switchCamera "GUNNER"}}; ((uiNamespace getVariable "cti_dialog_ui_unitscam") displayCtrl 180011) ctrlSetText format["Feed: %1", _ai]; From 2e1f4fe5d59a4fe76b51adb5b50c489e59434e42 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Wed, 24 Apr 2019 20:04:59 +0200 Subject: [PATCH 079/267] follow up on #272 --- Client/Events/Events_UI_UnitsCamera.sqf | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Client/Events/Events_UI_UnitsCamera.sqf b/Client/Events/Events_UI_UnitsCamera.sqf index ba0bb03c7..5e92d3a7c 100644 --- a/Client/Events/Events_UI_UnitsCamera.sqf +++ b/Client/Events/Events_UI_UnitsCamera.sqf @@ -146,11 +146,9 @@ switch (_action) do { }; case "onUnitsAILBSelChanged": { _changeto = _this select 1; - - if (count (uiNamespace getVariable "cti_dialog_ui_unitscam_groups_ai") >= (_changeto +1) ) then { + _ai =objnull; + if (count (uiNamespace getVariable "cti_dialog_ui_unitscam_groups_ai") > _changeto) then { _ai = (uiNamespace getVariable "cti_dialog_ui_unitscam_groups_ai") select _changeto; - } else { - _ai =objnull; }; if ( alive _ai) then { From a70486f7961e56c298993651ac2d9e7470a34141 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Wed, 24 Apr 2019 20:05:26 +0200 Subject: [PATCH 080/267] Name fix in string table --- stringtable.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stringtable.xml b/stringtable.xml index b36c42d64..3fc756372 100644 --- a/stringtable.xml +++ b/stringtable.xml @@ -2174,7 +2174,7 @@ - Barracks + Factory: Barracks Казармы From 9f7b4e4cb9b31dc62a2762c48c9e93b9c01db612 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 11 May 2019 01:09:54 +0200 Subject: [PATCH 081/267] fix for #275 new game update changes --- Common/Config/Gear/Gear_East.sqf | 24 +++++++++++ Common/Config/Gear/Gear_West.sqf | 74 +++++++++++++++++++++++++++++++- 2 files changed, 97 insertions(+), 1 deletion(-) diff --git a/Common/Config/Gear/Gear_East.sqf b/Common/Config/Gear/Gear_East.sqf index 08eb17753..2e51235dc 100644 --- a/Common/Config/Gear/Gear_East.sqf +++ b/Common/Config/Gear/Gear_East.sqf @@ -159,6 +159,14 @@ _i = _i + ["30Rnd_762x39_Mag_Tracer_Green_F"]; _u = _u + [1]; _p = _p + [30]; +_i = _i + ["30Rnd_762x39_AK12_Mag_F"]; +_u = _u + [1]; +_p = _p + [30]; + +_i = _i + ["30Rnd_762x39_AK12_Mag_Tracer_F"]; +_u = _u + [1]; +_p = _p + [30]; + _i = _i + ["30Rnd_65x39_caseless_green"]; _u = _u + [1]; _p = _p + [30]; @@ -204,6 +212,22 @@ _i = _i + ["100Rnd_580x42_Mag_Tracer_F"]; _u = _u + [1]; _p = _p + [30]; +_i = _i + ["100Rnd_580x42_hex_Mag_F"]; +_u = _u + [1]; +_p = _p + [30]; + +_i = _i + ["100Rnd_580x42_hex_Mag_Tracer_F"]; +_u = _u + [1]; +_p = _p + [30]; + +_i = _i + ["100Rnd_580x42_ghex_Mag_F"]; +_u = _u + [1]; +_p = _p + [30]; + +_i = _i + ["100Rnd_580x42_ghex_Mag_Tracer_F"]; +_u = _u + [1]; +_p = _p + [30]; + //Sniper rifles Ammo _i = _i + ["10Rnd_762x54_Mag"]; _u = _u + [2]; diff --git a/Common/Config/Gear/Gear_West.sqf b/Common/Config/Gear/Gear_West.sqf index 4ab8b3255..5dc4a98c4 100644 --- a/Common/Config/Gear/Gear_West.sqf +++ b/Common/Config/Gear/Gear_West.sqf @@ -145,7 +145,23 @@ _p = _p + [20]; _i = _i + ["30Rnd_65x39_caseless_green_mag_Tracer"]; _u = _u + [1]; -_p = _p + [10]; +_p = _p + [20]; + +_i = _i + ["30Rnd_65x39_caseless_black_mag"]; +_u = _u + [1]; +_p = _p + [20]; + +_i = _i + ["30Rnd_65x39_caseless_khaki_mag"]; +_u = _u + [1]; +_p = _p + [20]; + +_i = _i + ["30Rnd_65x39_caseless_black_mag_Tracer"]; +_u = _u + [1]; +_p = _p + [20]; + +_i = _i + ["30Rnd_65x39_caseless_khaki_mag_Tracer"]; +_u = _u + [1]; +_p = _p + [20]; _i = _i + ["30Rnd_556x45_Stanag"]; _u = _u + [0]; @@ -171,6 +187,30 @@ _i = _i + ["30Rnd_556x45_Stanag_Tracer_Green"]; _u = _u + [0]; _p = _p + [10]; +_i = _i + ["30Rnd_556x45_Stanag_Sand"]; +_u = _u + [0]; +_p = _p + [10]; + +_i = _i + ["30Rnd_556x45_Stanag_Sand_green"]; +_u = _u + [0]; +_p = _p + [10]; + +_i = _i + ["30Rnd_556x45_Stanag_Sand_red"]; +_u = _u + [0]; +_p = _p + [10]; + +_i = _i + ["30Rnd_556x45_Stanag_Sand_Tracer_Red"]; +_u = _u + [0]; +_p = _p + [10]; + +_i = _i + ["30Rnd_556x45_Stanag_Sand_Tracer_Green"]; +_u = _u + [0]; +_p = _p + [10]; + +_i = _i + ["30Rnd_556x45_Stanag_Sand_Tracer_Yellow"]; +_u = _u + [0]; +_p = _p + [10]; + _i = _i + ["20Rnd_556x45_UW_mag"]; _u = _u + [2]; _p = _p + [50]; @@ -184,6 +224,22 @@ _i = _i + ["100Rnd_65x39_caseless_mag_Tracer"]; _u = _u + [1]; _p = _p + [30]; +_i = _i + ["100Rnd_65x39_caseless_black_mag"]; +_u = _u + [1]; +_p = _p + [30]; + +_i = _i + ["100Rnd_65x39_caseless_black_mag_tracer"]; +_u = _u + [1]; +_p = _p + [30]; + +_i = _i + ["100Rnd_65x39_caseless_khaki_mag"]; +_u = _u + [1]; +_p = _p + [30]; + +_i = _i + ["100Rnd_65x39_caseless_khaki_mag_tracer"]; +_u = _u + [1]; +_p = _p + [30]; + _i = _i + ["200Rnd_65x39_cased_Box"]; _u = _u + [2]; _p = _p + [40]; @@ -216,6 +272,22 @@ _i = _i + ["150Rnd_556x45_Drum_Mag_Tracer_F"]; _u = _u + [1]; _p = _p + [30]; +_i = _i + ["150Rnd_556x45_Drum_Sand_Mag_F"]; +_u = _u + [1]; +_p = _p + [30]; + +_i = _i + ["150Rnd_556x45_Drum_Sand_Mag_Tracer_F"]; +_u = _u + [1]; +_p = _p + [30]; + +_i = _i + ["150Rnd_556x45_Drum_Green_Mag_F"]; +_u = _u + [1]; +_p = _p + [30]; + +_i = _i + ["150Rnd_556x45_Drum_Green_Mag_Tracer_F"]; +_u = _u + [1]; +_p = _p + [30]; + _i = _i + ["130Rnd_338_Mag"]; _u = _u + [2]; _p = _p + [100]; From 4f3d27428d6b38e7241ed4fbe4a44187d83ba171 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 11 May 2019 12:06:42 +0200 Subject: [PATCH 082/267] Continue stringtable... MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reason: missing barracks at factorys… everything used STR_UP_barracks (map markers, build menu….) --- Common/Config/Base/Base_East.sqf | 2 +- Common/Config/Base/Base_West.sqf | 2 +- stringtable.xml | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Common/Config/Base/Base_East.sqf b/Common/Config/Base/Base_East.sqf index 457189389..b6d2cfd26 100644 --- a/Common/Config/Base/Base_East.sqf +++ b/Common/Config/Base/Base_East.sqf @@ -153,7 +153,7 @@ _placements =_placements + [[180, 30]]; _specials = _specials + [[["DMG_Reduce", 1.5]]];*/ -_headers = _headers + [[CTI_BARRACKS, localize "STR_Up_Barracks", localize "STR_Up_Barracks"]]; +_headers = _headers + [[CTI_BARRACKS, localize "STR_Barracks", localize "STR_Barracks_1"]]; _classes = _classes + [["Land_Cargo_House_V1_F", "Land_Cargo_House_V1_ruins_F"]]; _prices = _prices + [1000]; _times = _times + [60]; diff --git a/Common/Config/Base/Base_West.sqf b/Common/Config/Base/Base_West.sqf index b0eacd055..c4fea8b2f 100644 --- a/Common/Config/Base/Base_West.sqf +++ b/Common/Config/Base/Base_West.sqf @@ -158,7 +158,7 @@ _times = _times +[120]; _placements =_placements + [[180, 30]]; _specials = _specials + [[["DMG_Reduce", 1.5]]];*/ -_headers = _headers + [[CTI_BARRACKS, localize "STR_Up_Barracks", localize "STR_Up_Barracks"]]; +_headers = _headers + [[CTI_BARRACKS, localize "STR_Barracks", localize "STR_Barracks_1"]]; _classes = _classes + [["Land_Cargo_House_V1_F", "Land_Cargo_House_V1_ruins_F"]]; _prices = _prices + [1000]; _times = _times + [60]; diff --git a/stringtable.xml b/stringtable.xml index 3fc756372..cde393450 100644 --- a/stringtable.xml +++ b/stringtable.xml @@ -2353,6 +2353,14 @@ + + Barracks + Казармы + + + Barracks + Казармы + Light Vehicle Factory Завод Легкой Техники From 85dbe265dfd2c44ceb3cfe7770d0709748957176 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sat, 11 May 2019 14:56:33 +0200 Subject: [PATCH 083/267] Update TASKS_loop.sqf --- Addons/Strat_mode/Functions/TASKS_loop.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Functions/TASKS_loop.sqf b/Addons/Strat_mode/Functions/TASKS_loop.sqf index aa6493d24..31022641c 100644 --- a/Addons/Strat_mode/Functions/TASKS_loop.sqf +++ b/Addons/Strat_mode/Functions/TASKS_loop.sqf @@ -18,8 +18,8 @@ _TASKS_LIST=[]; //other values used but the script _side=_this; -_logic= CTI_P_SideJoined call CTI_CO_FNC_GetSideLogic; -_sideID = CTI_P_SideJoined call CTI_CO_FNC_GetSideID; +_logic= _side call CTI_CO_FNC_GetSideLogic; +_sideID = _side call CTI_CO_FNC_GetSideID; // main Loop waitUntil { (_logic getVariable ["CTI_LOAD_COMPLETED",false])}; From 00faf571d2d9d72c99f7567dc8d91f8e3d74abb0 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sat, 11 May 2019 23:13:53 +0200 Subject: [PATCH 084/267] Hide progessbar in map --- Addons/Strat_mode/HUD/HUD_UpdateInfo.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/HUD/HUD_UpdateInfo.sqf b/Addons/Strat_mode/HUD/HUD_UpdateInfo.sqf index 98d8fbaf3..93a396831 100644 --- a/Addons/Strat_mode/HUD/HUD_UpdateInfo.sqf +++ b/Addons/Strat_mode/HUD/HUD_UpdateInfo.sqf @@ -10,7 +10,7 @@ if (!(profileNamespace getVariable ["HUD_Normal",true]) ||visiblemap) exitWith { _basic ctrlShow true; // capture _town=((player) call CTI_CO_FNC_GetClosestTown); -if ( player distance _town < CTI_MARKERS_TOWN_AREA_RANGE) then { +if ( player distance _town < CTI_MARKERS_TOWN_AREA_RANGE && (!visibleMap )) then { _pro ctrlShow true; _pb=((_town getVariable "cti_town_capture")) / CTI_TOWNS_CAPTURE_VALUE_CEIL ; if ((_town getVariable ["cti_town_occupation_active",true]) || (_town getVariable ["cti_town_resistance_active",true])) then From d9877d3f91c0df917b123e44fb9e7cc1efac9a2c Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 12 May 2019 00:04:56 +0200 Subject: [PATCH 085/267] Fix for base area loading --- Addons/Strat_mode/Functions/SM_BP_Hook.sqf | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_BP_Hook.sqf b/Addons/Strat_mode/Functions/SM_BP_Hook.sqf index 39862fa79..daed9aff8 100644 --- a/Addons/Strat_mode/Functions/SM_BP_Hook.sqf +++ b/Addons/Strat_mode/Functions/SM_BP_Hook.sqf @@ -1,13 +1,20 @@ private ["_side","_sidelogic","_count_bases","_bases"]; + + _side = _this ; _sidelogic= (_side) call CTI_CO_FNC_GetSideLogic; -_count_bases=0; +_index=-1; + + while {!CTI_GameOver} do { _bases = (_sidelogic getVariable "cti_structures_areas"); - if (count _bases > _count_bases) then { - if ( (missionNamespace getVariable 'CTI_SM_BASEP_M')!=0) then {[_bases select ((count _bases) -1),_side, ((count _bases) -1)] spawn SM_BP_Init}; - _count_bases= count _bases; - [["CLIENT",_side], "Client_Base_Zone",[_side,((count _bases) -1),_bases select ((count _bases) -1)]] call CTI_CO_FNC_NetSend; + if (_index < ((count _bases) -1) ) then { + if ( (missionNamespace getVariable 'CTI_SM_BASEP_M')!=0) then + { + [_bases select _index,_side, _index] spawn SM_BP_Init; + }; + [["CLIENT",_side], "Client_Base_Zone",[_side,_index,_bases select _index]] call CTI_CO_FNC_NetSend; + _index = _index +1; }; sleep 1; }; From 81db551a94a35bd15e23ddfab24e372ac79c8cd2 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 12 May 2019 09:43:18 +0200 Subject: [PATCH 086/267] Update SM_BP_Hook.sqf --- Addons/Strat_mode/Functions/SM_BP_Hook.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Functions/SM_BP_Hook.sqf b/Addons/Strat_mode/Functions/SM_BP_Hook.sqf index daed9aff8..048d87c77 100644 --- a/Addons/Strat_mode/Functions/SM_BP_Hook.sqf +++ b/Addons/Strat_mode/Functions/SM_BP_Hook.sqf @@ -9,12 +9,13 @@ _index=-1; while {!CTI_GameOver} do { _bases = (_sidelogic getVariable "cti_structures_areas"); if (_index < ((count _bases) -1) ) then { + _index = _index +1; if ( (missionNamespace getVariable 'CTI_SM_BASEP_M')!=0) then { [_bases select _index,_side, _index] spawn SM_BP_Init; }; [["CLIENT",_side], "Client_Base_Zone",[_side,_index,_bases select _index]] call CTI_CO_FNC_NetSend; - _index = _index +1; + }; sleep 1; }; From 9d2249b9a391d2f634aa865f36c52a05a1f06452 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 12 May 2019 13:05:21 +0200 Subject: [PATCH 087/267] Buggy lines needs rewrite --- Server/Functions/Server_SpawnTownResistance.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Server/Functions/Server_SpawnTownResistance.sqf b/Server/Functions/Server_SpawnTownResistance.sqf index 5dcfb092b..699f7fe86 100644 --- a/Server/Functions/Server_SpawnTownResistance.sqf +++ b/Server/Functions/Server_SpawnTownResistance.sqf @@ -169,8 +169,8 @@ _positions = []; //diag_log _x; _maxSpawnRange = CTI_TOWNS_RESISTANCE_SPAWN_RANGE; - if (name _town == "Town29") then {_maxSpawnRange = 50;}; //--- Makrynisi - if (name _town == "Town9") then {_maxSpawnRange = 150;}; //--- Telos + //if (name _town == "Town29" && ISLAND == 2) then {_maxSpawnRange = 50;}; //--- Makrynisi + //if (name _town == "Town9" && ISLAND == 2) then {_maxSpawnRange = 150;}; //--- Telos _position = [getPos _town, 25, _maxSpawnRange] call CTI_CO_FNC_GetRandomPosition; // _position = [getPos _town, 25, CTI_TOWNS_RESISTANCE_SPAWN_RANGE] call CTI_CO_FNC_GetRandomPosition; From 96f45c64d73b47eaaa654dce20ad337d83f167c1 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 12 May 2019 13:23:02 +0200 Subject: [PATCH 088/267] Prevent marker spam to clients --- .../Strat_mode/Functions/SM_BP_DetectLoop.sqf | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_BP_DetectLoop.sqf b/Addons/Strat_mode/Functions/SM_BP_DetectLoop.sqf index 19c486f7e..fdf258861 100644 --- a/Addons/Strat_mode/Functions/SM_BP_DetectLoop.sqf +++ b/Addons/Strat_mode/Functions/SM_BP_DetectLoop.sqf @@ -8,20 +8,23 @@ _enemy = switch (_side) do case east: {west }; }; _enemylogic= (_enemy) call CTI_CO_FNC_GetSideLogic; +_found=false; -while {!CTI_GameOver} do { + +while {!CTI_GameOver && ! _found} do { if (( _enemy countSide (((_base) nearEntities ["AllVehicles", (CTI_BASE_AREA_RANGE)]) unitsBelowHeight 40)) >0) then { - _ind = (_sidelogic getVariable "cti_structures_areas") find _base; - if (_ind>=0) exitWith { - _temp= +(_enemylogic getVariable ["CTI_BASES_FOUND",[]]); - _temp pushBackUnique _ind; - _enemylogic setVariable ["CTI_BASES_FOUND",_temp,true]; - _neigh_vect=( _sidelogic getVariable "CTI_BASES_NEIGH") select _ind; - [["CLIENT",_enemy], "Client_Base_Zone",[_side,_ind,_base]] call CTI_CO_FNC_NetSend; - { - [["CLIENT",_enemy], "Client_Connect",[_base,getPos _x,((_side) call CTI_CO_FNC_GetSideColoration),(CTI_BASE_AREA_RANGE)*2]] call CTI_CO_FNC_NetSend;true - } count _neigh_vect; - true }; + _ind = (_sidelogic getVariable "cti_structures_areas") find _base; + if (_ind>=0) then { + _temp= +(_enemylogic getVariable ["CTI_BASES_FOUND",[]]); + _temp pushBackUnique _ind; + _enemylogic setVariable ["CTI_BASES_FOUND",_temp,true]; + _neigh_vect=( _sidelogic getVariable "CTI_BASES_NEIGH") select _ind; + [["CLIENT",_enemy], "Client_Base_Zone",[_side,_ind,_base]] call CTI_CO_FNC_NetSend; + { + [["CLIENT",_enemy], "Client_Connect",[_base,getPos _x,((_side) call CTI_CO_FNC_GetSideColoration),(CTI_BASE_AREA_RANGE)*2]] call CTI_CO_FNC_NetSend;true + } count _neigh_vect; + _found=true; + }; }; sleep 5; }; From b42d54b45d3328d352cda68a259f26389ee104be Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 12 May 2019 13:58:21 +0200 Subject: [PATCH 089/267] Changing version number --- Rsc/Game.hpp | 4 ++-- mission.sqm | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Rsc/Game.hpp b/Rsc/Game.hpp index d8005f666..9529c9381 100644 --- a/Rsc/Game.hpp +++ b/Rsc/Game.hpp @@ -4,11 +4,11 @@ respawnDelay = 10; respawnDialog = false; //--- Require briefing.html to show up. -onLoadMission = "BECTI - Zerty/HTom/Yoshi_E 1.3.4.5"; +onLoadMission = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.0"; onLoadMissionTime = false; onLoadName = "BECTI - Zerty/HTom/Yoshi_E"; -briefingName = "BECTI - Zerty/HTom/Yoshi_E 1.3.4.5"; +briefingName = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.0"; //--- ArmA 3 Specifics dev = "Benny"; diff --git a/mission.sqm b/mission.sqm index 8b37a39da..bf5e85d48 100644 --- a/mission.sqm +++ b/mission.sqm @@ -16,7 +16,7 @@ class EditorData }; class Camera { - pos[]={14608.123,155.19696,5895.5967}; + pos[]={14700.625,180.32924,5894.1079}; dir[]={-0.80275387,-0.42684528,0.41648361}; up[]={-0.37890467,0.90431285,0.19658338}; aside[]={0.46054059,-1.7105776e-008,0.887676}; @@ -105,7 +105,7 @@ class Mission { class Intel { - briefingName="BECTI BE 0.97 - Zerty 1.3.4.5"; + briefingName="BECTI BE 0.97 - Zerty 1.3.5.0"; overviewText="By Benny - Adapted from OFP era MFCTI (Mike Melvin)"; resistanceWest=0; timeOfChanges=24720; From 6fd8caa92a74e57cd755a6e1179a1266bfb2f3ab Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 12 May 2019 14:12:36 +0200 Subject: [PATCH 090/267] Still fixing Base area loading --- Addons/Strat_mode/init.sqf | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index c74d94230..8c2729fdd 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -98,10 +98,12 @@ if (CTI_IsServer) then { _sl setVariable ["CTI_PREVENT",objNull,false]; _sl setVariable ["CTI_PRIORITY",objNull,true]; _sl setVariable ["CTI_HUD_SHARED",[],true]; - CTI_BASES_NEIGH=[]; - for "_i" from 1 to CTI_BASE_AREA_MAX do { CTI_BASES_NEIGH=CTI_BASES_NEIGH + [[]]; }; - _sl setVariable ["CTI_BASES_NEIGH",CTI_BASES_NEIGH,true]; - _sl setVariable ["CTI_BASES_FOUND",[],true]; + if (count (_sl getVariable ["CTI_BASES_FOUND",[]]) >0) then { + CTI_BASES_NEIGH=[]; + for "_i" from 1 to CTI_BASE_AREA_MAX do { CTI_BASES_NEIGH=CTI_BASES_NEIGH + [[]]; }; + _sl setVariable ["CTI_BASES_NEIGH",CTI_BASES_NEIGH,true]; + _sl setVariable ["CTI_BASES_FOUND",[],true]; + }; } count [east,west]; //dynamic group loop From fe041efb16299e7f736c4a703eae27a081aefb79 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 12 May 2019 14:32:01 +0200 Subject: [PATCH 091/267] Base loading continued --- Addons/Strat_mode/Functions/PERS_save.sqf | 2 +- Addons/Strat_mode/init.sqf | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Addons/Strat_mode/Functions/PERS_save.sqf b/Addons/Strat_mode/Functions/PERS_save.sqf index 69cfd5b13..416aab43a 100644 --- a/Addons/Strat_mode/Functions/PERS_save.sqf +++ b/Addons/Strat_mode/Functions/PERS_save.sqf @@ -40,7 +40,7 @@ profileNamespace setVariable ["CTI_SAVE_TOWNS",_towns]; _teamscore = scoreSide _side; _save pushBack _teamscore; //save found bases [H]Tom - _bases_found = (_logic getVariable "CTI_BASES_FOUND"); + _bases_found = (_logic getVariable ["CTI_BASES_FOUND",[]]); _save pushBack _bases_found; //save Time Left [H]Tom _limit = (missionNamespace getVariable "CTI_MAX_MISSION_TIME"); diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 8c2729fdd..f074b7116 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -98,10 +98,10 @@ if (CTI_IsServer) then { _sl setVariable ["CTI_PREVENT",objNull,false]; _sl setVariable ["CTI_PRIORITY",objNull,true]; _sl setVariable ["CTI_HUD_SHARED",[],true]; + CTI_BASES_NEIGH=[]; + for "_i" from 1 to CTI_BASE_AREA_MAX do { CTI_BASES_NEIGH=CTI_BASES_NEIGH + [[]]; }; + _sl setVariable ["CTI_BASES_NEIGH",CTI_BASES_NEIGH,true]; if (count (_sl getVariable ["CTI_BASES_FOUND",[]]) >0) then { - CTI_BASES_NEIGH=[]; - for "_i" from 1 to CTI_BASE_AREA_MAX do { CTI_BASES_NEIGH=CTI_BASES_NEIGH + [[]]; }; - _sl setVariable ["CTI_BASES_NEIGH",CTI_BASES_NEIGH,true]; _sl setVariable ["CTI_BASES_FOUND",[],true]; }; } count [east,west]; From f9c62c5aa2936497d73ad5a671a23a24753197b0 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 12 May 2019 14:37:58 +0200 Subject: [PATCH 092/267] should fix #108 --- Server/Functions/Server_OnBuildingHandleDamage.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/Functions/Server_OnBuildingHandleDamage.sqf b/Server/Functions/Server_OnBuildingHandleDamage.sqf index 372afe3d0..b2f17812e 100644 --- a/Server/Functions/Server_OnBuildingHandleDamage.sqf +++ b/Server/Functions/Server_OnBuildingHandleDamage.sqf @@ -46,7 +46,7 @@ _side = (_sideID) call CTI_CO_FNC_GetSideFromID; _ratio=if (_damaged getvariable ["CTI_protected",false]&& CTI_SM_BASEP_M > 0) then { CTI_SM_BASEP_M} else {1}; _currentdmg = getDammage _damaged; _damage = _currentdmg + ((_damage - _currentdmg) / _ratio); -if (CTI_BASE_NOOBPROTECTION == 1 && side _shooter in [_side, sideEnemy]) exitWith {0}; +if (CTI_BASE_NOOBPROTECTION == 1 && side _shooter in [_side, sideEnemy,civilian]) exitWith {0}; if (_reduce_damages > 0) then {_currentdmg = getDammage _damaged; _damage = _currentdmg + ((_damage - _currentdmg) / _reduce_damages)}; if (_damaged getvariable ["CTI_protected",false]&& CTI_SM_BASEP_M > 0) then { CTI_SM_BASEP_M} else {1}; _logic = (_side) call CTI_CO_FNC_GetSideLogic; From 4bbe14fe07ed9fc493c4d9fe5ab53206ee5fd650 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 12 May 2019 14:59:50 +0200 Subject: [PATCH 093/267] Logic fail --- Addons/Strat_mode/init.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index f074b7116..013af11dc 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -101,7 +101,7 @@ if (CTI_IsServer) then { CTI_BASES_NEIGH=[]; for "_i" from 1 to CTI_BASE_AREA_MAX do { CTI_BASES_NEIGH=CTI_BASES_NEIGH + [[]]; }; _sl setVariable ["CTI_BASES_NEIGH",CTI_BASES_NEIGH,true]; - if (count (_sl getVariable ["CTI_BASES_FOUND",[]]) >0) then { + if (count (_sl getVariable ["CTI_BASES_FOUND",[]]) == 0) then { _sl setVariable ["CTI_BASES_FOUND",[],true]; }; } count [east,west]; From 0b71ebe1d2fcb22a3cedfbd80c32ec0772445185 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Tue, 21 May 2019 14:37:03 +0200 Subject: [PATCH 094/267] Add Resistance mortar to Arty menu for use stolen res mortar with arty menu --- Common/Config/Artillery/Artillery.sqf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Common/Config/Artillery/Artillery.sqf b/Common/Config/Artillery/Artillery.sqf index db3a9fe31..e6f5077e0 100644 --- a/Common/Config/Artillery/Artillery.sqf +++ b/Common/Config/Artillery/Artillery.sqf @@ -13,6 +13,11 @@ _m = _m + [["8Rnd_82mm_Mo_shells", "8Rnd_82mm_Mo_Smoke_white", "8Rnd_82mm_Mo_Fla _b = _b + [[1, 2, 4, 8]]; _r = _r + [[[100,2500], [100,3000], [100,3500], [100,4000]]]; +_c = _c + ["I_Mortar_01_F"]; +_m = _m + [["8Rnd_82mm_Mo_shells", "8Rnd_82mm_Mo_Smoke_white", "8Rnd_82mm_Mo_Flare_white", "8Rnd_82mm_Mo_LG"]]; +_b = _b + [[1, 2, 4, 8]]; +_r = _r + [[[100,2500], [100,3000], [100,3500], [100,4000]]]; + _c = _c + ["B_MBT_01_arty_F"]; _m = _m + [["32Rnd_155mm_Mo_shells", "2Rnd_155mm_Mo_Cluster", "2Rnd_155mm_Mo_guided", "2Rnd_155mm_Mo_LG", "6Rnd_155mm_Mo_smoke", "6Rnd_155mm_Mo_mine", "6Rnd_155mm_Mo_AT_mine"]]; _b = _b + [[2, 4, 8, 12]]; From 970e360c4fe4c3f1f272ce047e3245ac399697e4 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 25 May 2019 15:16:54 +0200 Subject: [PATCH 095/267] fix for #276 fix (or just step1) remote not working if Revive Disabled in parameters.. sry :] --- Common/Functions/Common_CreateUnit.sqf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Common/Functions/Common_CreateUnit.sqf b/Common/Functions/Common_CreateUnit.sqf index 732ca0785..ad5a207ea 100644 --- a/Common/Functions/Common_CreateUnit.sqf +++ b/Common/Functions/Common_CreateUnit.sqf @@ -241,15 +241,15 @@ if (missionNamespace getVariable "CTI_SM_RADAR" == 1) then { _unit addAction [localize "STR_Common_CreateUnit_Remote_Control"," player connectTerminalToUAV ( vehicle(_this select 0)); (_this select 0) spawn { - waitUntil { uavControl ( vehicle(_this)) select 1 == 'GUNNER' || ! (driver (vehicle _this)==_this) || (vehicle _this ==_this) || ! alive _this || ! alive player}; + waitUntil {uavControl ( vehicle(_this)) select 1 == 'GUNNER' || ! (driver (vehicle _this)==_this) || (vehicle _this ==_this) || ! alive _this || ! alive player || (player getvariable 'REV_UNC')}; sleep 1; - player connectTerminalToUAV objNull; + player connectTerminalToUAV objNull; objNull remoteControl cameraon; vehicle (player) switchCamera 'Internal' - }; + if (!(player getvariable 'REV_UNC')) then { player remoteControl (driver vehicle (_this select 0)); - ( vehicle(_this select 0)) switchCamera 'Internal'; + ( vehicle(_this select 0)) switchCamera 'Internal';}; ","",100, false, true, "", "(vehicle _this) == (vehicle _target) && ! (vehicle _this ==_this) && driver (vehicle _this)==_this && isnull gunner (vehicle _this) && !((vehicle _this) == vehicle (player)) &&! (uavControl ( vehicle(_this)) select 0 == player)"]; // returnvehicle objNull remoteControl cameraon; player connectTerminalToUAV objNull; (player) switchCamera 'Internal'; From 297d094110eb376bb82f94c40eab84cb93e87191 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 26 May 2019 14:45:43 +0200 Subject: [PATCH 096/267] Buggy Lines nr.2 like on spawntownresistance --- Server/Functions/Server_SpawnTownOccupation.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Server/Functions/Server_SpawnTownOccupation.sqf b/Server/Functions/Server_SpawnTownOccupation.sqf index 0e1942686..3344cb5c7 100644 --- a/Server/Functions/Server_SpawnTownOccupation.sqf +++ b/Server/Functions/Server_SpawnTownOccupation.sqf @@ -243,8 +243,8 @@ _positions = []; //diag_log _x; _maxSpawnRange = CTI_TOWNS_OCCUPATION_SPAWN_RANGE; - if (name _town == "Town29") then {_maxSpawnRange = 25}; //--- Makrynisi - if (name _town == "Town9") then {_maxSpawnRange = 125}; //--- Telos + //if (name _town == "Town29" && ISLAND == 2) then {_maxSpawnRange = 50;}; //--- Makrynisi + //if (name _town == "Town9" && ISLAND == 2) then {_maxSpawnRange = 150;}; //--- Telos _position = [getPos _town, 25, _maxSpawnRange] call CTI_CO_FNC_GetRandomPosition; // _position = [getPos _town, 25, CTI_TOWNS_OCCUPATION_SPAWN_RANGE] call CTI_CO_FNC_GetRandomPosition; From 010e2aafc860faa74ad93ed8cc521613fc690b68 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 26 May 2019 20:09:34 +0200 Subject: [PATCH 097/267] While - sleep add some rest time --- Addons/Strat_mode/Radar/AIRR_init.sqf | 1 + .../UI/Functions_UI_ArtilleryMenu.sqf | 1 + Client/Functions/UI/Functions_UI_GearMenu.sqf | 22 +++++++++---------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Addons/Strat_mode/Radar/AIRR_init.sqf b/Addons/Strat_mode/Radar/AIRR_init.sqf index 5aa0c8e6c..6b2d04feb 100644 --- a/Addons/Strat_mode/Radar/AIRR_init.sqf +++ b/Addons/Strat_mode/Radar/AIRR_init.sqf @@ -57,6 +57,7 @@ if (CTI_IsClient) then { }; //update _marker setMarkerPosLocal (getPos _obj); + sleep 0.5; }; deleteMarkerLocal _marker; }; diff --git a/Client/Functions/UI/Functions_UI_ArtilleryMenu.sqf b/Client/Functions/UI/Functions_UI_ArtilleryMenu.sqf index ce7939db4..f67dc7593 100644 --- a/Client/Functions/UI/Functions_UI_ArtilleryMenu.sqf +++ b/Client/Functions/UI/Functions_UI_ArtilleryMenu.sqf @@ -115,6 +115,7 @@ CTI_UI_Artillery_UpdateArtilleryMarker = { while {alive _artillery} do { {_x setMarkerPosLocal getPos _artillery} forEach [_marker_min, _marker_max]; + sleep 0.5; }; {deleteMarkerLocal _x} forEach [_marker_min, _marker_max]; diff --git a/Client/Functions/UI/Functions_UI_GearMenu.sqf b/Client/Functions/UI/Functions_UI_GearMenu.sqf index a9bd4547b..4f8b20591 100644 --- a/Client/Functions/UI/Functions_UI_GearMenu.sqf +++ b/Client/Functions/UI/Functions_UI_GearMenu.sqf @@ -353,8 +353,8 @@ CTI_UI_Gear_TryContainerAddItem = { CTI_UI_Gear_AddItem = { private ["_current", "_get", "_gear", "_index", "_item", "_slot", "_sub_type", "_type", "_updated"]; - - + + _item = toLower(_this); _target = uiNamespace getVariable "cti_dialog_ui_gear_target"; _get = missionNamespace getVariable _item; @@ -395,8 +395,8 @@ CTI_UI_Gear_AddItem = { ((uiNamespace getVariable "cti_dialog_ui_gear") displayCtrl (70006+_index)) ctrlSetTooltip getText(configFile >> 'CfgWeapons' >> _item >> 'displayName'); ((_gear select 3) select 0) set [_index, _item]; - - + + //Test if Special Helmet is present _helmet = (_gear select 2) select 0; if(_helmet == "H_HelmetO_ViperSP_hex_F" || _helmet == "H_HelmetO_ViperSP_ghex_F") then { @@ -413,13 +413,13 @@ CTI_UI_Gear_AddItem = { (_gear select 2) set [_slot, ""]; call CTI_UI_Gear_UpdatePrice; }; - + //delet helmet 6:06:43 "removing item: 0 70004 \A3\Ui_f\data\GUI\Rsc\RscDisplayGear\ui_gear_helmet_gs.paa" - + //delete NVG 16:05:31 "removing item: [0,0] 70006 \A3\Ui_f\data\GUI\Rsc\RscDisplayGear\ui_gear_nvg_gs.paa" }; _updated = true; - + }; }; case "Item": { //--- Uniform, vest, helm, gps, compass, toolkit... @@ -460,9 +460,9 @@ CTI_UI_Gear_AddItem = { if (_current != _item) then { ((uiNamespace getVariable "cti_dialog_ui_gear") displayCtrl 70004) ctrlSetText getText(configFile >> 'CfgWeapons' >> _item >> 'picture'); ((uiNamespace getVariable "cti_dialog_ui_gear") displayCtrl 70004) ctrlSetTooltip getText(configFile >> 'CfgWeapons' >> _item >> 'displayName'); - + (_gear select 2) set [0, _item]; - + //Test if NVG googles is present (dont work with special helmet) if(_item == "H_HelmetO_ViperSP_hex_F" || _item == "H_HelmetO_ViperSP_ghex_F") then { //remove nvg @@ -480,7 +480,7 @@ CTI_UI_Gear_AddItem = { }; }; _updated = true; - + }; }; case (_sub_type in ["Uniform","Vest"]): { @@ -642,7 +642,7 @@ CTI_UI_Gear_CheckMagazines = { _freespace = _container_capacity - _container_items_mass; _expected_mass = _count * _magazine_new_mass; - while { _expected_mass > _freespace && _expected_mass > 0 } do { _expected_mass = _expected_mass - _magazine_new_mass }; + while { _expected_mass > _freespace && _expected_mass > 0 } do { _expected_mass = _expected_mass - _magazine_new_mass; sleep 0.2;}; if (_expected_mass > 0) then { for '_k' from 1 to (_expected_mass/_magazine_new_mass) do { From 2503b3fe29dd0a57b4b39bb45201cba381aec7a3 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 26 May 2019 20:36:19 +0200 Subject: [PATCH 098/267] was bugged - change back --- Client/Functions/UI/Functions_UI_GearMenu.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Client/Functions/UI/Functions_UI_GearMenu.sqf b/Client/Functions/UI/Functions_UI_GearMenu.sqf index 4f8b20591..b9cc78517 100644 --- a/Client/Functions/UI/Functions_UI_GearMenu.sqf +++ b/Client/Functions/UI/Functions_UI_GearMenu.sqf @@ -642,7 +642,7 @@ CTI_UI_Gear_CheckMagazines = { _freespace = _container_capacity - _container_items_mass; _expected_mass = _count * _magazine_new_mass; - while { _expected_mass > _freespace && _expected_mass > 0 } do { _expected_mass = _expected_mass - _magazine_new_mass; sleep 0.2;}; + while { _expected_mass > _freespace && _expected_mass > 0 } do { _expected_mass = _expected_mass - _magazine_new_mass }; if (_expected_mass > 0) then { for '_k' from 1 to (_expected_mass/_magazine_new_mass) do { @@ -1365,4 +1365,4 @@ CTI_UI_Gear_RemoveProfileTemplate = { profileNamespace setVariable [format["CTI_PERSISTENT_GEAR_TEMPLATE_%1", CTI_P_SideJoined], _templates]; saveProfileNamespace; }; -}; \ No newline at end of file +}; From 803d8baea08f2675530c7a72f9995f0d722e0bdd Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 26 May 2019 22:12:26 +0200 Subject: [PATCH 099/267] rgr boss no sleep in ui --- Client/Functions/UI/Functions_UI_ArtilleryMenu.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Client/Functions/UI/Functions_UI_ArtilleryMenu.sqf b/Client/Functions/UI/Functions_UI_ArtilleryMenu.sqf index f67dc7593..d46874529 100644 --- a/Client/Functions/UI/Functions_UI_ArtilleryMenu.sqf +++ b/Client/Functions/UI/Functions_UI_ArtilleryMenu.sqf @@ -115,7 +115,6 @@ CTI_UI_Artillery_UpdateArtilleryMarker = { while {alive _artillery} do { {_x setMarkerPosLocal getPos _artillery} forEach [_marker_min, _marker_max]; - sleep 0.5; }; {deleteMarkerLocal _x} forEach [_marker_min, _marker_max]; @@ -129,4 +128,4 @@ CTI_UI_Artillery_GetSelectedArtilleryArray = { {_return pushBack (_artillery_array select _x)} forEach (lbSelection ((uiNamespace getVariable "cti_dialog_ui_artillerymenu") displayCtrl 290014)); _return -}; \ No newline at end of file +}; From 5cf5fc3ba270363f6331a271c5493951c4c89a7a Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 27 May 2019 21:11:47 +0200 Subject: [PATCH 100/267] true - count thing check plz where need --- Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf | 3 ++- .../Functions/SM_Draw_Map_Icons.sqf | 1 + .../Functions/SM_Draw_Map_Lines.sqf | 1 + Addons/Strat_mode/Functions/SM_Maps_Hook.sqf | 2 +- Addons/Strat_mode/HUD/HUD_GetRevive.sqf | 1 + Addons/Strat_mode/HUD/HUD_GetTowns.sqf | 2 +- .../Strat_mode/HUD/HUD_ShowNotifications.sqf | 1 + Addons/Strat_mode/HUD/HUD_ShowRevive.sqf | 1 + Addons/Strat_mode/HUD/HUD_init.sqf | 1 + Addons/Strat_mode/PATROL_AI/PAI_PatrolAI.sqf | 2 +- Addons/Strat_mode/init.sqf | 1 + .../Functions/UI/Functions_UI_RespawnMenu.sqf | 2 +- Server/Functions/Server_OnTownCaptured.sqf | 1 + Server/Init/Init_Server.sqf | 21 ++++++++++--------- 14 files changed, 25 insertions(+), 15 deletions(-) diff --git a/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf b/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf index 2a6984d78..25784c4d8 100644 --- a/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf +++ b/Addons/Strat_mode/AdvNet/AN_Reconfigure.sqf @@ -71,7 +71,7 @@ if (count _candidates == 0 ) then { { _candidates set [count _candidates,_town]; }; - + true } count ( (_side_id) call CTI_CO_FNC_GetSideTowns); }; @@ -85,6 +85,7 @@ if ((count _candidates == 0) && _side in [east,west]) then { if (!(_vehicle isKindOf "FlagPole_F")) then { { if (!(_x == _vehicle) && !(_x ==(_side) call CTI_CO_FNC_GetSideHQ) && alive _x && (_x getVariable "AN_iNet" == _side_id ) && ! (_x getVariable "AN_Conn" == _vehicle) && {_x == _vehicle} count (_x getVariable ["AN_Parrents",[]]) == 0 ) then {_candidates set [count _candidates,_x]}; + true } count vehicles; }; diff --git a/Addons/Strat_mode/Functions/SM_Draw_Map_Icons.sqf b/Addons/Strat_mode/Functions/SM_Draw_Map_Icons.sqf index 13cd8b716..846818cbc 100644 --- a/Addons/Strat_mode/Functions/SM_Draw_Map_Icons.sqf +++ b/Addons/Strat_mode/Functions/SM_Draw_Map_Icons.sqf @@ -6,4 +6,5 @@ _map=_this select 0; _x set [0 , objNull]; _x=_x-[objNull]; _map drawIcon _x ; +true }count (SHOWTOMAP select 1)+(SHOWTOMAP select 0); \ No newline at end of file diff --git a/Addons/Strat_mode/Functions/SM_Draw_Map_Lines.sqf b/Addons/Strat_mode/Functions/SM_Draw_Map_Lines.sqf index c35b801d9..ad9d5c87b 100644 --- a/Addons/Strat_mode/Functions/SM_Draw_Map_Lines.sqf +++ b/Addons/Strat_mode/Functions/SM_Draw_Map_Lines.sqf @@ -5,4 +5,5 @@ _map=_this select 0; _x set [0 , objNull]; _x=_x-[objNull]; _map drawLine _x ; +true }count (SHOWTOMAP select 2); \ No newline at end of file diff --git a/Addons/Strat_mode/Functions/SM_Maps_Hook.sqf b/Addons/Strat_mode/Functions/SM_Maps_Hook.sqf index 0874367cc..902225feb 100644 --- a/Addons/Strat_mode/Functions/SM_Maps_Hook.sqf +++ b/Addons/Strat_mode/Functions/SM_Maps_Hook.sqf @@ -29,7 +29,7 @@ if (missionNamespace getVariable "CTI_EW_ANET" == 1) then { while {isNull _map2} do { _frames =[]; {_frames set [count _frames,_x select 0]; true} count (missionNameSpace getVariable ["BIS_stackedEventHandlers_onEachFrame", []]); - {if !(isNil {_x displayctrl 101}) then {_map2= _x displayctrl 101};} count (uiNamespace getVariable "IGUI_Displays"); + {if !(isNil {_x displayctrl 101}) then {_map2= _x displayctrl 101}; true} count (uiNamespace getVariable "IGUI_Displays"); sleep 0.1; }; _map2 ctrlAddEventHandler ["Draw", " diff --git a/Addons/Strat_mode/HUD/HUD_GetRevive.sqf b/Addons/Strat_mode/HUD/HUD_GetRevive.sqf index 157648b7b..a72cdf49d 100644 --- a/Addons/Strat_mode/HUD/HUD_GetRevive.sqf +++ b/Addons/Strat_mode/HUD/HUD_GetRevive.sqf @@ -9,5 +9,6 @@ _ob= player nearEntities ["Man",150]; _scale = 1*(1-(_dis/150)*0.7); _rev set[count _rev,[_x,_fade,_scale]]; }; +true } count _ob; _rev \ No newline at end of file diff --git a/Addons/Strat_mode/HUD/HUD_GetTowns.sqf b/Addons/Strat_mode/HUD/HUD_GetTowns.sqf index 3125a9d64..1e45f92a4 100644 --- a/Addons/Strat_mode/HUD/HUD_GetTowns.sqf +++ b/Addons/Strat_mode/HUD/HUD_GetTowns.sqf @@ -28,7 +28,7 @@ _vt=_vt+[[_town,_text,_color,_fade]]; }; - + true }count CTI_Towns; _vt \ No newline at end of file diff --git a/Addons/Strat_mode/HUD/HUD_ShowNotifications.sqf b/Addons/Strat_mode/HUD/HUD_ShowNotifications.sqf index 9e8da5204..273179498 100644 --- a/Addons/Strat_mode/HUD/HUD_ShowNotifications.sqf +++ b/Addons/Strat_mode/HUD/HUD_ShowNotifications.sqf @@ -36,6 +36,7 @@ if (time- (_reverse select 0 select 3) < 7 || !isNil {uiNamespace getVariable [' //_text=_text + format [" (+) ",if (((_x select 1) - time)>3) then {"ff"} else {(99 min ((floor (((_x select 1) - time)*100/4)) max 10))},_x select 2]+ (_x select 0) + "
"; _text=_text +format ["(+) %2
",_x select 2,(_x select 0)]; + true } count _reverse; } else { (_hud displayCtrl (HUD_IDC+7)) ctrlShow false; diff --git a/Addons/Strat_mode/HUD/HUD_ShowRevive.sqf b/Addons/Strat_mode/HUD/HUD_ShowRevive.sqf index 6c10c0669..e8acb244f 100644 --- a/Addons/Strat_mode/HUD/HUD_ShowRevive.sqf +++ b/Addons/Strat_mode/HUD/HUD_ShowRevive.sqf @@ -6,4 +6,5 @@ _fade=_x select 1; _size=_x select 2; drawIcon3D ['A3\ui_f\data\IGUI\Cfg\Actions\heal_ca.paa', [1,0,0,_fade], _pos , _size, _size, 0,"", 0, 0, "PuristaMedium"]; +true } count HUD_Revives; \ No newline at end of file diff --git a/Addons/Strat_mode/HUD/HUD_init.sqf b/Addons/Strat_mode/HUD/HUD_init.sqf index 0da87d2db..a2c8a1901 100644 --- a/Addons/Strat_mode/HUD/HUD_init.sqf +++ b/Addons/Strat_mode/HUD/HUD_init.sqf @@ -82,6 +82,7 @@ with missionNamespace do { { _o= _x; (group player) reveal [_o,(missionNamespace getVariable "CTI_EW_HUD_S")]; + true } count _this; }; }; \ No newline at end of file diff --git a/Addons/Strat_mode/PATROL_AI/PAI_PatrolAI.sqf b/Addons/Strat_mode/PATROL_AI/PAI_PatrolAI.sqf index aa9460598..bcf75d9e1 100644 --- a/Addons/Strat_mode/PATROL_AI/PAI_PatrolAI.sqf +++ b/Addons/Strat_mode/PATROL_AI/PAI_PatrolAI.sqf @@ -22,7 +22,7 @@ while {!CTI_GameOver && ! isNull _group && alive _vehicle && !isNull _vehicle && _neigh=_neigh- _not_valid -[_previous] ; _next_target=if (count _priority >0) then { _priority select floor random (count _priority)} else {_neigh select floor random (count _neigh)}; if (isNil "_next_target") then {_next_target= CTI_Towns select floor random (count CTI_Towns)}; - {deleteWaypoint _x } count (waypoints _group); + {deleteWaypoint _x; true} count (waypoints _group); _wp=_group addWaypoint [(getPos _next_target),0]; _wp setWaypointType "MOVE"; _wp setWaypointBehaviour "AWARE" ; diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 013af11dc..c46a9bcdd 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -104,6 +104,7 @@ if (CTI_IsServer) then { if (count (_sl getVariable ["CTI_BASES_FOUND",[]]) == 0) then { _sl setVariable ["CTI_BASES_FOUND",[],true]; }; + true } count [east,west]; //dynamic group loop diff --git a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf index 26f644164..c37aa3246 100644 --- a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf +++ b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf @@ -21,7 +21,7 @@ CTI_UI_Respawn_GetAvailableLocations = { _sid = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideID; _c_towns = ( _sid ) call CTI_CO_FNC_GetSideTowns; _posible =[]; - {if ((_x getVariable "cti_town_capture") == CTI_TOWNS_CAPTURE_VALUE_CEIL) then{ _posible set [count _posible,_x]};} count _c_towns; + {if ((_x getVariable "cti_town_capture") == CTI_TOWNS_CAPTURE_VALUE_CEIL) then{ _posible set [count _posible,_x]}; true} count _c_towns; _t = [CTI_DeathPosition, _posible ] call CTI_CO_FNC_GetClosestEntity; if (! (isNull _t) ) then {_towns pushBack _t;}; diff --git a/Server/Functions/Server_OnTownCaptured.sqf b/Server/Functions/Server_OnTownCaptured.sqf index a24fb715a..2f56ff706 100644 --- a/Server/Functions/Server_OnTownCaptured.sqf +++ b/Server/Functions/Server_OnTownCaptured.sqf @@ -78,6 +78,7 @@ if (count _award_teams > 0) then { _mult=if ((missionNamespace getVariable "CTI_GROUP_AWARD_MULT") == 1) then {{isplayer _x}count (units _x)} else {1}; {if (isplayer _x )then {[["CLIENT", _x], "Client_OnMessageReceived", ["town_award",[( _value*_mult), (_town getVariable "cti_town_name")]],true] call CTI_CO_FNC_NetSend};true} count (units _x); [_x, _newSide,( _value*_mult)] call CTI_CO_FNC_ChangeFunds; + true } count _award_teams; }; diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index 5fbd72aa7..3cc5e7254 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -216,6 +216,7 @@ while {! (((getMarkerPos format ["HELO_START_%1", _i])select 0) == 0)} do }; + true }count (playableUnits+switchableUnits); sleep 10; }; @@ -315,7 +316,7 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { sleep 100; //wait for everything to finish loading _version = 3; //version of DiscordBot logReader _arr = [["CTI_DataPacket", "Header"], - ["Version", _version], + ["Version", _version], ["Map", worldName] ]; diag_log _arr; @@ -323,7 +324,7 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { _east_sl = (east) call CTI_CO_FNC_GetSideLogic; _west_sl = (west) call CTI_CO_FNC_GetSideLogic; _towns = count(_east_sl getVariable ["CTI_ACTIVE",[]]) + count(_west_sl getVariable ["CTI_ACTIVE",[]]); - + //build player array, splitting at 800 to ensure char limit of 1000 is not reached _players = []; _players_sub = []; @@ -338,20 +339,20 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { _players pushBack _players_sub; _players_sub = []; }; - + //Build town arrays _west_towns = []; { _west_towns pushBack str _x; - } forEach (west call CTI_CO_FNC_GetSideTowns); + } forEach (west call CTI_CO_FNC_GetSideTowns); _east_towns = []; { _east_towns pushBack str _x; } forEach (east call CTI_CO_FNC_GetSideTowns); - + //Post Data to .rpt log //Data for general mission performance - diag_log[["CTI_DataPacket", "Data_1"], + diag_log[["CTI_DataPacket", "Data_1"], ["time", time], ["fps", diag_fps], ["score_east", (scoreSide east)], @@ -367,13 +368,13 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { ["total_objects", count(allMissionObjects "All")], ["active_towns", _towns]]; _dataP = 2; //next data packet index - { - //Data for Replay + { + //Data for Replay diag_log[["CTI_DataPacket", (format ["Data_%1", _dataP])], ["players", _x]]; _dataP = _dataP+1; } forEach _players; - + diag_log[["CTI_DataPacket", format ["Data_EOD_%1", _dataP]], //Marking package as "last" ["bases_east", _east_sl getVariable ["cti_structures_areas",[]]], ["bases_west", _west_sl getVariable ["cti_structures_areas",[]]], @@ -383,7 +384,7 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { sleep 60; }; //Triggerd on Misson end, used when FSM does not trigger. (used for debugging) - _arr = [["CTI_DataPacket", "EOF"], + _arr = [["CTI_DataPacket", "EOF"], ["Version", _version], ["Map", worldName] ]; From 17f932435d1cb44833abee5e7ec7e1a4aa8ace69 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Wed, 29 May 2019 19:42:01 +0200 Subject: [PATCH 101/267] - - --- Addons/Strat_mode/Radar/AIRR_init.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Radar/AIRR_init.sqf b/Addons/Strat_mode/Radar/AIRR_init.sqf index 6b2d04feb..e5c45e98f 100644 --- a/Addons/Strat_mode/Radar/AIRR_init.sqf +++ b/Addons/Strat_mode/Radar/AIRR_init.sqf @@ -57,7 +57,7 @@ if (CTI_IsClient) then { }; //update _marker setMarkerPosLocal (getPos _obj); - sleep 0.5; + sleep 1; }; deleteMarkerLocal _marker; }; From 597294b2d2626f797b4dfb64d3ab7bbd5e629405 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Wed, 29 May 2019 21:33:51 +0200 Subject: [PATCH 102/267] Fix for REV_UNC --- Common/Functions/Common_CreateUnit.sqf | 4 ++-- Common/Init/Init_CommonConstants.sqf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Common/Functions/Common_CreateUnit.sqf b/Common/Functions/Common_CreateUnit.sqf index ad5a207ea..0a799a852 100644 --- a/Common/Functions/Common_CreateUnit.sqf +++ b/Common/Functions/Common_CreateUnit.sqf @@ -241,13 +241,13 @@ if (missionNamespace getVariable "CTI_SM_RADAR" == 1) then { _unit addAction [localize "STR_Common_CreateUnit_Remote_Control"," player connectTerminalToUAV ( vehicle(_this select 0)); (_this select 0) spawn { - waitUntil {uavControl ( vehicle(_this)) select 1 == 'GUNNER' || ! (driver (vehicle _this)==_this) || (vehicle _this ==_this) || ! alive _this || ! alive player || (player getvariable 'REV_UNC')}; + waitUntil {uavControl ( vehicle(_this)) select 1 == 'GUNNER' || ! (driver (vehicle _this)==_this) || (vehicle _this ==_this) || ! alive _this || ! alive player || (player getvariable ['REV_UNC',false])}; sleep 1; player connectTerminalToUAV objNull; objNull remoteControl cameraon; vehicle (player) switchCamera 'Internal' }; - if (!(player getvariable 'REV_UNC')) then { + if (!(player getvariable ['REV_UNC',false])) then { player remoteControl (driver vehicle (_this select 0)); ( vehicle(_this select 0)) switchCamera 'Internal';}; ","",100, false, true, "", "(vehicle _this) == (vehicle _target) && ! (vehicle _this ==_this) && driver (vehicle _this)==_this && isnull gunner (vehicle _this) && !((vehicle _this) == vehicle (player)) &&! (uavControl ( vehicle(_this)) select 0 == player)"]; diff --git a/Common/Init/Init_CommonConstants.sqf b/Common/Init/Init_CommonConstants.sqf index 1e3b2ea70..72c7dac61 100644 --- a/Common/Init/Init_CommonConstants.sqf +++ b/Common/Init/Init_CommonConstants.sqf @@ -624,11 +624,11 @@ with missionNamespace do { - if (isNil "CTI_SM_BASEP_M") then {CTI_SM_BASEP_M=0}; + if (isNil "CTI_SM_BASEP_M") then {CTI_SM_BASEP_M=-1}; if (isNil "CTI_SM_REPAIR") then {CTI_SM_REPAIR=1}; if (isNil "CTI_SM_MORTARS") then {CTI_SM_MORTARS=1}; if (isNil "CTI_SM_MINES") then {CTI_SM_MINES=1}; - if (isNil "CTI_SM_STRATEGIC") then {CTI_SM_STRATEGIC=0}; + if (isNil "CTI_SM_STRATEGIC") then {CTI_SM_STRATEGIC=1}; if (isNil "CTI_SM_STRATEGIC_NB") then {CTI_SM_STRATEGIC_NB=3}; if (isNil "CTI_SM_HALO") then {CTI_SM_HALO=1}; if (isNil "CTI_SM_RADAR") then {CTI_SM_RADAR=1}; From 20977a7547dbef392b5336771b82e3398d7a8b32 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 10 Jun 2019 14:49:18 +0200 Subject: [PATCH 103/267] Add disable parameter for town_ship --- Addons/Strat_mode/FSM/town_resistance.fsm | 33 ++++++++++++++--------- Rsc/Parameters.hpp | 7 ++++- stringtable.xml | 4 +++ 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/Addons/Strat_mode/FSM/town_resistance.fsm b/Addons/Strat_mode/FSM/town_resistance.fsm index 33ea87a4b..ce60f12b6 100644 --- a/Addons/Strat_mode/FSM/town_resistance.fsm +++ b/Addons/Strat_mode/FSM/town_resistance.fsm @@ -3,7 +3,7 @@ /* item0[] = {"Start_FSM",0,250,-86.275269,-615.525940,13.724731,-565.525940,0.000000,"Start FSM"}; item1[] = {"Cycle",4,218,-100.000000,-400.000000,0.000000,-350.000000,1.000000,"Cycle"}; -item2[] = {"Resistance_hold",2,4346,-100.000000,-200.000000,0.000000,-150.000000,0.000000,"Resistance hold" \n "the town?"}; +item2[] = {"Resistance_hold",2,250,-100.000000,-200.000000,0.000000,-150.000000,0.000000,"Resistance hold" \n "the town?"}; item3[] = {"End_FSM",1,250,-250.000000,-100.000000,-150.000000,-50.000000,0.000000,"End FSM"}; item4[] = {"Held_by_Resistan",4,218,-100.000000,-100.000000,0.000000,-50.000000,2.000000,"Held by" \n "Resistance"}; item5[] = {"Gameover",8,218,-250.000000,-200.000000,-150.000000,-150.000000,0.000000,"Gameover"}; @@ -15,7 +15,7 @@ item10[] = {"Inactive",4,218,175.000000,-100.000000,275.000000,-50.000000,1.0000 item11[] = {"Still_active",8,218,300.000000,0.000000,400.000000,50.000000,0.000000,"Still active"}; item12[] = {"Timed_out",4,218,475.000000,100.000000,575.000000,150.000000,1.000000,"Timed out"}; item13[] = {"Skip",2,250,302.287354,-265.039612,402.287354,-215.039612,0.000000,"Skip"}; -item14[] = {"Cleanup",2,250,475.000000,-400.000000,575.000000,-350.000000,0.000000,"Cleanup"}; +item14[] = {"Cleanup",2,4346,475.000000,-400.000000,575.000000,-350.000000,0.000000,"Cleanup"}; item15[] = {"Resistance_Active",2,250,50.000000,-100.000000,150.000000,-50.000000,0.000000,"Resistance" \n "Active?"}; item16[] = {"Contact",8,218,-100.000000,100.000000,0.000000,150.000000,0.000000,"Contact"}; item17[] = {"Clear",4,218,50.000000,0.000000,150.000000,50.000000,1.000000,"Clear"}; @@ -55,8 +55,8 @@ link26[] = {20,18}; link27[] = {21,8}; link28[] = {22,1}; link29[] = {23,13}; -globals[] = {0.000000,0,0,0,0,640,480,1,173,6316128,1,-1091.492065,1056.436035,832.636719,-1191.768555,939,885,1}; -window[] = {2,-1,-1,-1,-1,662,50,1086,50,3,957}; +globals[] = {0.000000,0,0,0,0,640,480,1,173,6316128,1,-984.095642,949.039673,729.243164,-1090.662720,939,884,1}; +window[] = {2,-1,-1,-32000,-32000,794,182,1218,182,3,957}; *//*%FSM*/ class FSM { @@ -304,15 +304,15 @@ class FSM " };" \n " } forEach _town_groups;" \n "" \n - "" \n "_town setVariable [""cti_town_resistance_active_vehicles"", [],true];" \n + "" \n "_mortars = _town getVariable ""cti_town_mortars_units"";" \n "//diag_log _mortars;" \n "if ((count _mortars) >0) then {" \n "" \n " {deleteVehicle _x} forEach units (_mortars select 1) ;" \n " {deleteVehicle _x} forEach (_mortars select 0) ; " \n - " deleteGroup (_mortars select 1);" \n + " deleteGroup (_mortars select 1);" \n "" \n "};" \n "" \n @@ -321,14 +321,18 @@ class FSM " if ((count _mines) >0) then {" \n " {deleteVehicle _x} forEach _mines;" \n " };" \n - "_town setVariable [""cti_town_mines"",[],true];" \n + " _town setVariable [""cti_town_mines"",[],true];" \n "};" \n "" \n "if ( (missionNamespace getVariable 'CTI_SM_TCAS') <= (_town getVariable ""cti_town_value"")) then {" \n " (_town getVariable [""CTI_CAS"",[]]) call SM_TCAS_CLEANUP;" \n "};" \n "" \n - "if ((_town getVariable ""cti_town_name"" == ""Makrynisi"") || (_town getVariable ""cti_town_name"" == ""Tuadua Island"") || (_town getVariable ""cti_town_name"" == ""Yani Islets"") || (_town getVariable ""cti_town_name"" == ""Ile Sainte-Marie"") || (_town getVariable ""cti_town_name"" == ""Northern Island"") || (_town getVariable ""cti_town_name"" == ""Rock Island"")) then {(_town getVariable [""CTI_Ship"",[]]) call SM_TShip_CLEANUP;};" \n + "if ((missionNamespace getVariable 'CTI_SM_SHIP')==1) then {" \n + " if (ISLAND == 2 || ISLAND == 3) then {" \n + " if ((_town getVariable ""cti_town_name"" == ""Makrynisi"") || (_town getVariable ""cti_town_name"" == ""Tuadua Island"") || (_town getVariable ""cti_town_name"" == ""Yani Islets"") || (_town getVariable ""cti_town_name"" == ""Ile Sainte-Marie"") || (_town getVariable ""cti_town_name"" == ""Northern Island"") || (_town getVariable ""cti_town_name"" == ""Rock Island"")) then {(_town getVariable [""CTI_Ship"",[]]) call SM_TShip_CLEANUP;};" \n + " };" \n + "};" \n "" \n "//_town setVariable [""cti_town_disactivate"",true];" \n "" \n @@ -410,23 +414,28 @@ class FSM "_town setVariable [""cti_town_resistance_active"", true,true];" \n "" \n "" \n - "if ( (missionNamespace getVariable 'CTI_SM_MORTARS')==1) then {" \n + "if ((missionNamespace getVariable 'CTI_SM_MORTARS')==1) then {" \n " _mortars=[_town,_town_groups] call CTI_SM_Mortars_script;" \n " [""CLIENT"", ""Client_Update_Mortars"",[_town,(_mortars select 2)]] call CTI_CO_FNC_NetSend;" \n " _town setVariable [""cti_town_mortars"",(_mortars select 2),true];" \n " _town setVariable [""cti_town_mortars_units"",(_mortars),true];" \n "};" \n + "" \n "_town setVariable [""cti_town_resistance_active"", true,true];" \n + "" \n "if ( (missionNamespace getVariable 'CTI_SM_TCAS') <= (_town getVariable ""cti_town_value"")) then {" \n " _town setVariable[""CTI_CAS"",(_town) call SM_TCAS_CREATE,true];" \n - "" \n "};" \n + "" \n "if ((missionNamespace getVariable 'CTI_SM_MINES')==1) then {" \n " [_town] call CTI_SM_Mines_script;" \n "};" \n "" \n - "if ((_town getVariable ""cti_town_name"" == ""Makrynisi"") || (_town getVariable ""cti_town_name"" == ""Tuadua Island"") || (_town getVariable ""cti_town_name"" == ""Yani Islets"") || (_town getVariable ""cti_town_name"" == ""Ile Sainte-Marie"") || (_town getVariable ""cti_town_name"" == ""Northern Island"") || (_town getVariable ""cti_town_name"" == ""Rock Island"")) then {_town setVariable [""CTI_Ship"",(_town) call SM_TShip_CREATE,true];};" \n - "" \n + "if ((missionNamespace getVariable 'CTI_SM_SHIP')==1) then {" \n + " if (ISLAND == 2 || ISLAND == 3) then {" \n + " if ((_town getVariable ""cti_town_name"" == ""Makrynisi"") || (_town getVariable ""cti_town_name"" == ""Tuadua Island"") || (_town getVariable ""cti_town_name"" == ""Yani Islets"") || (_town getVariable ""cti_town_name"" == ""Ile Sainte-Marie"") || (_town getVariable ""cti_town_name"" == ""Northern Island"") || (_town getVariable ""cti_town_name"" == ""Rock Island"")) then {_town setVariable [""CTI_Ship"",(_town) call SM_TShip_CREATE,true];};" \n + " };" \n + "};" \n "" \n "if ( _town in (CTI_WEST getvariable ""CTI_ACTIVE"")) then {" \n " [[""CLIENT"",west],""SM_message"",format [localize ""STR_TownActive"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n diff --git a/Rsc/Parameters.hpp b/Rsc/Parameters.hpp index 4fb5b3b92..ac9e5bc1b 100644 --- a/Rsc/Parameters.hpp +++ b/Rsc/Parameters.hpp @@ -475,7 +475,12 @@ class Params { texts[] = {"0","100","150","200","250","300","350","400","500","600"}; default = 250; }; - + class CTI_SM_SHIP { + title = $STR_CTI_SM_SHIP; + values[] = {0,1}; + texts[] = {$STR_CTI_DISABLED,$STR_CTI_ENABLED}; + default = 1; + }; class SEPARATOR3 { title = $STR_CTI_SEPARATOR3; diff --git a/stringtable.xml b/stringtable.xml index cde393450..2a9b01030 100644 --- a/stringtable.xml +++ b/stringtable.xml @@ -665,6 +665,10 @@ Zerty: Strategic: Town CAS if value above Разрешить поддержку с воздуха если стоимость города больше
+ + [H] Tom: Strategic: Patrol Ships near small islands + Патрульные корабли возле небольших островов + ===================== Electronic Warfare ======================= ===================== Electronic Warfare ======================= From e82574b98499a69f73d20886e905b96d93cc1b5f Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 10 Jun 2019 20:48:31 +0200 Subject: [PATCH 104/267] Replace some code BIS_FNC_ArrayShuffle 6-10 times faster than CTI_CO_FNC_ArrayShuffle (save 2x0.5ms at kavala) "isEqualType" 2 times faster than "typename" --- Server/Functions/Server_SpawnTownOccupation.sqf | 6 +++--- Server/Functions/Server_SpawnTownResistance.sqf | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Server/Functions/Server_SpawnTownOccupation.sqf b/Server/Functions/Server_SpawnTownOccupation.sqf index 3344cb5c7..f57e0406a 100644 --- a/Server/Functions/Server_SpawnTownOccupation.sqf +++ b/Server/Functions/Server_SpawnTownOccupation.sqf @@ -151,7 +151,7 @@ _pool_u = []; }; }; } forEach (_pool_units select 0); -_pool_u = _pool_u call CTI_CO_FNC_ArrayShuffle; +_pool_u = _pool_u call BIS_fnc_arrayShuffle; _pool_v = []; { @@ -195,7 +195,7 @@ _pool_v = []; }; } forEach (_pool_units select 1); -_pool_v = _pool_v call CTI_CO_FNC_ArrayShuffle; +_pool_v = _pool_v call BIS_fnc_arrayShuffle; _pool=_pool_v+_pool_u; @@ -223,7 +223,7 @@ for '_i' from 1 to _totalGroups do { }; if (_can_use) then { - if (typeName _unit == "ARRAY") then { _unit = _unit select floor(random count _unit) }; + if (_unit isEqualType []) then { _unit = _unit select floor(random count _unit) }; _units pushBack _unit; _pool_group_size_current = _pool_group_size_current - 1; diff --git a/Server/Functions/Server_SpawnTownResistance.sqf b/Server/Functions/Server_SpawnTownResistance.sqf index 699f7fe86..e637ad647 100644 --- a/Server/Functions/Server_SpawnTownResistance.sqf +++ b/Server/Functions/Server_SpawnTownResistance.sqf @@ -111,7 +111,7 @@ _pool_u = []; for '_i' from 1 to _presence do { _pool_u pushBack [missionNamespace getVariable _unit, if (count _x > 2) then {_x select 2} else {100}] }; }; } forEach (_pool_units select 0); -_pool_u = _pool_u call CTI_CO_FNC_ArrayShuffle; +_pool_u = _pool_u call BIS_fnc_arrayShuffle; _pool_v = []; { @@ -121,7 +121,7 @@ _pool_v = []; for '_i' from 1 to _presence do { _pool_v pushBack [missionNamespace getVariable _unit, if (count _x > 2) then {_x select 2} else {100}]}; }; } forEach (_pool_units select 1); -_pool_v =_pool_v call CTI_CO_FNC_ArrayShuffle; +_pool_v =_pool_v call BIS_fnc_arrayShuffle; //--- Shuffle! _pool = _pool_v + _pool_u; @@ -148,7 +148,7 @@ for '_i' from 1 to _totalGroups do { }; //diag_log [_unit,_probability,_can_use]; if (_can_use) then { - if (typeName _unit == "ARRAY") then { _unit = _unit select floor(random count _unit) }; + if (_unit isEqualType []) then { _unit = _unit select floor(random count _unit) }; _units pushBack _unit; _pool_group_size_current = _pool_group_size_current - 1; From 08a02211a7065de38eb3d2038f0526cf0e4ceb16 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 10 Jun 2019 21:14:05 +0200 Subject: [PATCH 105/267] continue replace ... --- Server/Functions/Server_SpawnTownOccupation.sqf | 4 ++-- Server/Functions/Server_SpawnTownResistance.sqf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Server/Functions/Server_SpawnTownOccupation.sqf b/Server/Functions/Server_SpawnTownOccupation.sqf index f57e0406a..e88c6bd08 100644 --- a/Server/Functions/Server_SpawnTownOccupation.sqf +++ b/Server/Functions/Server_SpawnTownOccupation.sqf @@ -223,7 +223,7 @@ for '_i' from 1 to _totalGroups do { }; if (_can_use) then { - if (_unit isEqualType []) then { _unit = _unit select floor(random count _unit) }; + if (_unit isEqualType []) then { _unit = selectRandom _unit; }; _units pushBack _unit; _pool_group_size_current = _pool_group_size_current - 1; @@ -250,7 +250,7 @@ _positions = []; // _position = [getPos _town, 25, CTI_TOWNS_OCCUPATION_SPAWN_RANGE] call CTI_CO_FNC_GetRandomPosition; _position = [_position, 50] call CTI_CO_FNC_GetEmptyPosition; _road_pos=(_position nearRoads 100); - if (count _road_pos > 0) then {_position = _road_pos select floor random (count _road_pos);}; + if (count _road_pos > 0) then {_position = selectRandom _road_pos;}; _positions pushBack _position; _group = createGroup _side; diff --git a/Server/Functions/Server_SpawnTownResistance.sqf b/Server/Functions/Server_SpawnTownResistance.sqf index e637ad647..54e081df1 100644 --- a/Server/Functions/Server_SpawnTownResistance.sqf +++ b/Server/Functions/Server_SpawnTownResistance.sqf @@ -148,7 +148,7 @@ for '_i' from 1 to _totalGroups do { }; //diag_log [_unit,_probability,_can_use]; if (_can_use) then { - if (_unit isEqualType []) then { _unit = _unit select floor(random count _unit) }; + if (_unit isEqualType []) then { _unit = selectRandom _unit; }; _units pushBack _unit; _pool_group_size_current = _pool_group_size_current - 1; @@ -176,7 +176,7 @@ _positions = []; // _position = [getPos _town, 25, CTI_TOWNS_RESISTANCE_SPAWN_RANGE] call CTI_CO_FNC_GetRandomPosition; _position = [_position, 50] call CTI_CO_FNC_GetEmptyPosition; _road_pos=(_position nearRoads 100); - if (count _road_pos > 0) then {_position = _road_pos select floor random (count _road_pos);}; + if (count _road_pos > 0) then {_position = selectRandom _road_pos;}; _positions pushBack _position; _group = createGroup resistance; From 972495bef193f73a1ca16b8863970a113d1fc163 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Wed, 12 Jun 2019 00:11:34 +0200 Subject: [PATCH 106/267] Not need on all cars Not need on all cars (trucks, vans, wheeled_apcs, ect...) only offroads and 4wd jeeps --- Common/Functions/Common_CreateVehicle.sqf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index 822890fe1..b27017425 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -212,11 +212,13 @@ if (isNull _created) then { if (_vehicle isKindOf "O_MBT_02_cannon_F" || _vehicle isKindOf "O_T_MBT_02_cannon_ghex_F") then {[_vehicle, nil, ["showLog",1]] call BIS_fnc_initVehicle;}; if (_vehicle isKindOf "O_APC_Tracked_02_AA_F" || _vehicle isKindOf "O_T_APC_Tracked_02_AA_ghex_F") then {[_vehicle, nil, ["showTracks",1]] call BIS_fnc_initVehicle;}; }; - if (_vehicle isKindOf "Car") then { + if (_vehicle isKindOf "Offroad_01_base_F") then { _offroads = ["I_G_Offroad_01_F", "I_G_Offroad_01_armed_F", "I_G_Offroad_01_AT_F", "B_G_Offroad_01_F", "B_G_Offroad_01_armed_F", "B_G_Offroad_01_AT_F", "O_G_Offroad_01_F", "O_G_Offroad_01_armed_F", "O_G_Offroad_01_AT_F"]; if ((typeOf _vehicle) in _offroads) then { _offroadcolors = ["Guerilla_01", "Guerilla_02", "Guerilla_03", "Guerilla_04", "Guerilla_05", "Guerilla_06", "Guerilla_07", "Guerilla_08", "Guerilla_09", "Guerilla_10", "Guerilla_11", "Guerilla_12"]; [_vehicle, [(selectRandom _offroadcolors),1], nil] call BIS_fnc_initVehicle;}; + }; + if (_vehicle isKindOf "Offroad_02_base_F") then { _4wds = ["I_C_Offroad_02_unarmed_F", "I_C_Offroad_02_LMG_F", "I_C_Offroad_02_AT_F", "C_Offroad_02_unarmed_F"]; if ((typeOf _vehicle) in _4wds) then { _4wdcolors = ["Green", "Olive", "Black", "Brown"]; From b28af1dad5f8214252b08e1c9c83d6808da5205a Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 15 Jun 2019 23:14:23 +0200 Subject: [PATCH 107/267] FSM update - Town Patrol FSM for new short road waypoints - Town OCC and Town Res for town activation lag fix kavala activation 6-7FPS with original fsm (6 group), 15FPS with new FSM with (sleep 0.3) or 20FPS with (sleep 0.5) --- Addons/Strat_mode/FSM/town_occupation.fsm | 266 +++++++++++-- Addons/Strat_mode/FSM/town_resistance.fsm | 353 ++++++++++++++--- Server/FSM/town_patrol.fsm | 443 ++++++++++++---------- 3 files changed, 759 insertions(+), 303 deletions(-) diff --git a/Addons/Strat_mode/FSM/town_occupation.fsm b/Addons/Strat_mode/FSM/town_occupation.fsm index 95a7d0aea..53478b6d1 100644 --- a/Addons/Strat_mode/FSM/town_occupation.fsm +++ b/Addons/Strat_mode/FSM/town_occupation.fsm @@ -3,7 +3,7 @@ /* item0[] = {"Start_FSM",0,250,-100.000000,-800.000000,0.000000,-750.000000,0.000000,"Start FSM"}; item1[] = {"Cycle",4,218,-100.000000,-400.000000,0.000000,-350.000000,1.000000,"Cycle"}; -item2[] = {"Occupation_hold",2,4346,-100.000000,-200.000000,0.000000,-150.000000,0.000000,"Occupation hold" \n "the town?"}; +item2[] = {"Occupation_hold",2,250,-100.000000,-200.000000,0.000000,-150.000000,0.000000,"Occupation hold" \n "the town?"}; item3[] = {"End_FSM",1,250,-250.000000,-100.000000,-150.000000,-50.000000,0.000000,"End FSM"}; item4[] = {"Held_by_Occupati",4,218,-100.000000,-100.000000,0.000000,-50.000000,2.000000,"Held by" \n "Occupation"}; item5[] = {"Gameover",8,218,-250.000000,-200.000000,-150.000000,-150.000000,0.000000,"Gameover"}; @@ -19,12 +19,24 @@ item14[] = {"Cleanup",2,250,425.000000,-400.000000,525.000000,-350.000000,0.0000 item15[] = {"Occupation_Active",2,250,50.000000,-100.000000,150.000000,-50.000000,0.000000,"Occupation" \n "Active?"}; item16[] = {"Contact",8,218,-100.000000,100.000000,0.000000,150.000000,0.000000,"Contact"}; item17[] = {"Clear",4,218,50.000000,0.000000,150.000000,50.000000,1.000000,"Clear"}; -item18[] = {"Create",2,250,-400.000000,200.000000,-300.000000,250.000000,0.000000,"Create"}; +item18[] = {"Calc",2,250,-400.000000,200.000000,-300.000000,250.000000,0.000000,"Calc"}; item19[] = {"Occupation_Active_1",2,250,-100.000000,200.000000,0.000000,250.000000,0.000000,"Occupation" \n "Active?"}; item20[] = {"Inactive",4,218,-250.000000,200.000000,-150.000000,250.000000,1.000000,"Inactive"}; item21[] = {"Active",4,218,175.000000,200.000000,275.000000,250.000000,2.000000,"Active"}; item22[] = {"",7,210,-354.000000,-379.000000,-346.000000,-371.000000,0.000000,""}; item23[] = {"_",8,218,350.000000,325.000000,450.000000,375.000000,0.000000,""}; +item24[] = {"Wait",4,218,-396.344360,169.054321,-301.266876,191.365082,1.000000,"Wait"}; +item25[] = {"Wait",4,218,-393.071930,80.698349,-297.994446,103.009109,1.000000,"Wait"}; +item26[] = {"Wait",4,218,-394.045837,-9.293777,-298.968353,13.016983,1.000000,"Wait"}; +item27[] = {"Wait",4,218,-396.998413,-95.932709,-301.920929,-73.621948,1.000000,"Wait"}; +item28[] = {"Wait",4,218,-395.419861,-187.748001,-300.342377,-165.437241,1.000000,"Wait"}; +item29[] = {"Wait",4,218,-396.455292,-278.932922,-301.377808,-256.622192,1.000000,"Wait"}; +item30[] = {"Create_G1",2,250,-397.530731,112.138672,-297.530731,162.138672,0.000000,"Create G1"}; +item31[] = {"Create_G2",2,4346,-395.610718,21.793152,-295.610718,71.793152,0.000000,"Create G2"}; +item32[] = {"Create_G3",2,250,-397.553162,-64.800392,-297.553162,-14.800392,0.000000,"Create G3"}; +item33[] = {"Create_G4",2,250,-398.123474,-156.634659,-298.123474,-106.634666,0.000000,"Create G4"}; +item34[] = {"Create_G5",2,250,-398.309631,-244.824005,-298.309631,-194.824005,0.000000,"Create G5"}; +item35[] = {"Create_M__Warn",2,250,-399.250671,-339.790894,-299.250671,-289.790894,0.000000,"Create M, Warn"}; link0[] = {0,1}; link1[] = {1,2}; link2[] = {2,4}; @@ -47,7 +59,7 @@ link18[] = {15,9}; link19[] = {15,10}; link20[] = {16,19}; link21[] = {17,15}; -link22[] = {18,22}; +link22[] = {18,24}; link23[] = {19,20}; link24[] = {19,21}; link25[] = {19,23}; @@ -55,8 +67,20 @@ link26[] = {20,18}; link27[] = {21,8}; link28[] = {22,1}; link29[] = {23,13}; -globals[] = {0.000000,0,0,0,0,640,480,1,177,6316128,1,-582.603027,790.527588,465.883545,-1210.282837,725,885,1}; -window[] = {2,-1,-1,-1,-1,812,200,1236,200,3,743}; +link30[] = {24,30}; +link31[] = {25,31}; +link32[] = {26,32}; +link33[] = {27,33}; +link34[] = {28,34}; +link35[] = {29,35}; +link36[] = {30,25}; +link37[] = {31,26}; +link38[] = {32,27}; +link39[] = {33,28}; +link40[] = {34,29}; +link41[] = {35,22}; +globals[] = {0.000000,0,0,0,0,640,480,1,198,6316128,1,-712.383606,50.215027,402.539001,-527.305359,725,884,1}; +window[] = {2,-1,-1,-32000,-32000,716,104,1140,104,3,743}; *//*%FSM*/ class FSM { @@ -376,10 +400,10 @@ class FSM }; }; /*%FSM*/ - /*%FSM*/ - class Create + /*%FSM*/ + class Calc { - name = "Create"; + name = "Calc"; itemno = 18; init = /*%FSM*/"//--- We get the main information first (The teams, the groups and the positions)" \n "_return = [_town, _side] call CTI_SE_FNC_SpawnTownOccupation;" \n @@ -390,43 +414,20 @@ class FSM "" \n "_town setvariable [""CTI_TOWN_GROUPS"",_town_groups,true];" \n "" \n - "//--- Warn" \n - "[[""CLIENT"", _side], ""Client_OnMessageReceived"", [""town-hostilenear"", _town]] call CTI_CO_FNC_NetSend;" \n - "" \n - "if (count _town_groups > 0) then {" \n - " _town_vehicles_groups = [_town, _side, _town_teams, _town_groups, _town_positions] call CTI_CO_FNC_CreateTownUnits;" \n - " _town setVariable [""cti_town_occupation_active_vehicles"", (_town getVariable ""cti_town_occupation_active_vehicles"") + (_town_vehicles_groups select 0),true];" \n - " _town setvariable [""CTI_TOWN_GROUPS"",_town_vehicles_groups select 1,true];" \n - "};" \n + "_size = count _town_groups;" \n "" \n - "_town setVariable [""cti_town_occupation_active"", true,true];" \n - "_town setVariable [""cti_town_occupation_active_sideID"", _sideID,true];" \n - "" \n - "if (_town in (CTI_WEST getvariable ""CTI_ACTIVE"")) then {" \n - " [[""CLIENT"",west],""SM_message"",format [""Town is %1 is now Active"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n - "};" \n - "" \n - "if (_town in (CTI_EAST getvariable ""CTI_ACTIVE"")) then {" \n - " [[""CLIENT"",east],""SM_message"",format [""Town is %1 is now Active"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n - "};" \n - "" \n - "if ((missionNamespace getVariable 'CTI_SM_MINES')==1) then {" \n - " [_town] call CTI_SM_Mines_script;" \n - "};" \n - "" \n - "_town setVariable [""cti_town_timeofspawn"", time,true];"/*%FSM*/; + "_wait = time + 0.5;"/*%FSM
*/; precondition = /*%FSM*/""/*%FSM*/; class Links { - /*%FSM*/ - class Cycle + /*%FSM*/ + class Wait { - itemno = 1; + itemno = 24; priority = 1.000000; - to="Occupation_hold"; + to="Create_G1"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle " \n - "//&& !( _town getVariable ""cti_town_disactivate"");"/*%FSM*/; + condition=/*%FSM*/"time > _wait"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -458,7 +459,7 @@ class FSM { itemno = 20; priority = 1.000000; - to="Create"; + to="Calc"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(_town getVariable ""cti_town_sideID"") ==_sideID && !(_town getVariable ""cti_town_occupation_active"") && !(_town getVariable ""cti_town_resistance_active"") &&" \n "(" \n @@ -486,6 +487,193 @@ class FSM }; }; /*%FSM*/ + /*%FSM*/ + class Create_G1 + { + name = "Create_G1"; + itemno = 30; + init = /*%FSM*/"if (_size > 0) then {" \n + " _town_vehicles_groups_1 = [_town, _side, [_town_teams select 0], [_town_groups select 0], [_town_positions select 0]] call CTI_CO_FNC_CreateTownUnits;" \n + " _town setVariable [""cti_town_occupation_active_vehicles"", (_town getVariable ""cti_town_occupation_active_vehicles"") + (_town_vehicles_groups_1 select 0),true];" \n + " _town setvariable [""CTI_TOWN_GROUPS"",_town_vehicles_groups_1 select 1,true];" \n + "" \n + "_wait = time + 0.5;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait + { + itemno = 25; + priority = 1.000000; + to="Create_G2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _wait"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Create_G2 + { + name = "Create_G2"; + itemno = 31; + init = /*%FSM*/"if (_size > 1) then {" \n + " _town_vehicles_groups_2 = [_town, _side, [_town_teams select 1], [_town_groups select 1], [_town_positions select 1]] call CTI_CO_FNC_CreateTownUnits;" \n + " _town setVariable [""cti_town_occupation_active_vehicles"", (_town getVariable ""cti_town_occupation_active_vehicles"") + (_town_vehicles_groups_2 select 0),true];" \n + " _town setvariable [""CTI_TOWN_GROUPS"", (_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_2 select 1),true];" \n + "" \n + "_wait = time + 0.5;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait + { + itemno = 26; + priority = 1.000000; + to="Create_G3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _wait"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Create_G3 + { + name = "Create_G3"; + itemno = 32; + init = /*%FSM*/"if (_size > 2) then {" \n + " _town_vehicles_groups_3 = [_town, _side, [_town_teams select 2], [_town_groups select 2], [_town_positions select 2]] call CTI_CO_FNC_CreateTownUnits;" \n + " _town setVariable [""cti_town_occupation_active_vehicles"", (_town getVariable ""cti_town_occupation_active_vehicles"") + (_town_vehicles_groups_3 select 0),true];" \n + " _town setvariable [""CTI_TOWN_GROUPS"", (_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_3 select 1),true];" \n + "" \n + "_wait = time + 0.5;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait + { + itemno = 27; + priority = 1.000000; + to="Create_G4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _wait"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Create_G4 + { + name = "Create_G4"; + itemno = 33; + init = /*%FSM*/"if (_size > 3) then {" \n + " _town_vehicles_groups_4 = [_town, _side, [_town_teams select 3], [_town_groups select 3], [_town_positions select 3]] call CTI_CO_FNC_CreateTownUnits;" \n + " _town setVariable [""cti_town_occupation_active_vehicles"", (_town getVariable ""cti_town_occupation_active_vehicles"") + (_town_vehicles_groups_4 select 0),true];" \n + " _town setvariable [""CTI_TOWN_GROUPS"", (_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_4 select 1),true];" \n + "" \n + "_wait = time + 0.5;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait + { + itemno = 28; + priority = 1.000000; + to="Create_G5"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _wait"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Create_G5 + { + name = "Create_G5"; + itemno = 34; + init = /*%FSM*/"if (_size > 4) then {" \n + " _town_vehicles_groups_5 = [_town, _side, [_town_teams select 4], [_town_groups select 4], [_town_positions select 4]] call CTI_CO_FNC_CreateTownUnits;" \n + " _town setVariable [""cti_town_occupation_active_vehicles"", (_town getVariable ""cti_town_occupation_active_vehicles"") + (_town_vehicles_groups_5 select 0),true];" \n + " _town setvariable [""CTI_TOWN_GROUPS"", (_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_5 select 1),true];" \n + "" \n + "_wait = time + 0.5;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait + { + itemno = 29; + priority = 1.000000; + to="Create_M__Warn"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _wait"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Create_M__Warn + { + name = "Create_M__Warn"; + itemno = 35; + init = /*%FSM*/"//--- Warn" \n + "[[""CLIENT"", _side], ""Client_OnMessageReceived"", [""town-hostilenear"", _town]] call CTI_CO_FNC_NetSend;" \n + "" \n + "_town setVariable [""cti_town_occupation_active"", true,true];" \n + "_town setVariable [""cti_town_occupation_active_sideID"", _sideID,true];" \n + "" \n + "if (_town in (CTI_WEST getvariable ""CTI_ACTIVE"")) then {" \n + " [[""CLIENT"",west],""SM_message"",format [""Town is %1 is now Active"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n + "};" \n + "" \n + "if (_town in (CTI_EAST getvariable ""CTI_ACTIVE"")) then {" \n + " [[""CLIENT"",east],""SM_message"",format [""Town is %1 is now Active"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n + "};" \n + "" \n + "if ((missionNamespace getVariable 'CTI_SM_MINES')==1) then {" \n + " [_town] call CTI_SM_Mines_script;" \n + "};" \n + "" \n + "_town setVariable [""cti_town_timeofspawn"", time,true];"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 1.000000; + to="Occupation_hold"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle " \n + "//&& !( _town getVariable ""cti_town_disactivate"");"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ }; initState="Start_FSM"; finalStates[] = diff --git a/Addons/Strat_mode/FSM/town_resistance.fsm b/Addons/Strat_mode/FSM/town_resistance.fsm index ce60f12b6..fa82b5711 100644 --- a/Addons/Strat_mode/FSM/town_resistance.fsm +++ b/Addons/Strat_mode/FSM/town_resistance.fsm @@ -15,17 +15,32 @@ item10[] = {"Inactive",4,218,175.000000,-100.000000,275.000000,-50.000000,1.0000 item11[] = {"Still_active",8,218,300.000000,0.000000,400.000000,50.000000,0.000000,"Still active"}; item12[] = {"Timed_out",4,218,475.000000,100.000000,575.000000,150.000000,1.000000,"Timed out"}; item13[] = {"Skip",2,250,302.287354,-265.039612,402.287354,-215.039612,0.000000,"Skip"}; -item14[] = {"Cleanup",2,4346,475.000000,-400.000000,575.000000,-350.000000,0.000000,"Cleanup"}; +item14[] = {"Cleanup",2,250,475.000000,-400.000000,575.000000,-350.000000,0.000000,"Cleanup"}; item15[] = {"Resistance_Active",2,250,50.000000,-100.000000,150.000000,-50.000000,0.000000,"Resistance" \n "Active?"}; item16[] = {"Contact",8,218,-100.000000,100.000000,0.000000,150.000000,0.000000,"Contact"}; item17[] = {"Clear",4,218,50.000000,0.000000,150.000000,50.000000,1.000000,"Clear"}; -item18[] = {"Create",2,250,-400.000000,200.000000,-300.000000,250.000000,0.000000,"Create"}; +item18[] = {"Calc",2,250,-405.286591,200.000000,-305.286591,250.000000,0.000000,"Calc"}; item19[] = {"Resistance_Active_1",2,250,-100.000000,200.000000,0.000000,250.000000,0.000000,"Resistance" \n "Active?"}; item20[] = {"Inactive",4,218,-250.000000,200.000000,-150.000000,250.000000,1.000000,"Inactive"}; item21[] = {"Active",4,218,175.000000,200.000000,275.000000,250.000000,2.000000,"Active"}; -item22[] = {"",7,210,-354.000000,-379.000000,-346.000000,-371.000000,0.000000,""}; +item22[] = {"",7,210,-351.746582,-418.493622,-343.746582,-410.493622,0.000000,""}; item23[] = {"_",8,218,300.000000,275.000000,400.000000,325.000000,0.000000,""}; -link0[] = {0,1}; +item24[] = {"Create_G1",2,250,-403.897888,112.289322,-303.897888,162.289322,0.000000,"Create G1"}; +item25[] = {"Wait",4,218,-402.292999,83.576782,-303.756409,105.971649,1.000000,"Wait"}; +item26[] = {"",7,210,-40.530235,-569.115356,-32.530251,-561.115356,0.000000,""}; +item27[] = {"Create_G2",2,250,-403.032166,26.257862,-303.032166,76.257881,0.000000,"Create G2"}; +item28[] = {"Wait",4,218,-404.894409,170.550903,-306.357819,192.945770,1.000000,"Wait"}; +item29[] = {"Create_G3",2,250,-401.294312,-56.101166,-301.294312,-6.101151,0.000000,"Create G3"}; +item30[] = {"Wait",4,218,-401.987091,-1.587708,-303.450500,20.807159,1.000000,"Wait"}; +item31[] = {"Create_G4",2,250,-400.878967,-141.958054,-300.878906,-91.958038,0.000000,"Create G4"}; +item32[] = {"Create_G5",2,250,-397.118561,-226.637772,-297.118561,-176.637802,0.000000,"Create G5"}; +item33[] = {"Create_G6",2,4346,-398.124298,-312.866913,-298.124298,-262.866913,0.000000,"Create G6"}; +item34[] = {"Wait",4,218,-399.633942,-84.102051,-301.097351,-61.707184,1.000000,"Wait"}; +item35[] = {"Wait",4,218,-398.621429,-170.179230,-300.084839,-147.784363,1.000000,"Wait"}; +item36[] = {"Wait",4,218,-396.509552,-255.200638,-297.972961,-232.805847,1.000000,"Wait"}; +item37[] = {"Create_C__M__M_",2,250,-398.652588,-399.085297,-298.652588,-349.085297,0.000000,"Create C, M, M, S"}; +item38[] = {"Wait",4,218,-397.133728,-342.601624,-298.597107,-320.206787,1.000000,"Wait"}; +link0[] = {0,26}; link1[] = {1,2}; link2[] = {2,4}; link3[] = {2,5}; @@ -47,7 +62,7 @@ link18[] = {15,9}; link19[] = {15,10}; link20[] = {16,19}; link21[] = {17,15}; -link22[] = {18,22}; +link22[] = {18,28}; link23[] = {19,20}; link24[] = {19,21}; link25[] = {19,23}; @@ -55,8 +70,23 @@ link26[] = {20,18}; link27[] = {21,8}; link28[] = {22,1}; link29[] = {23,13}; -globals[] = {0.000000,0,0,0,0,640,480,1,173,6316128,1,-984.095642,949.039673,729.243164,-1090.662720,939,884,1}; -window[] = {2,-1,-1,-32000,-32000,794,182,1218,182,3,957}; +link30[] = {24,25}; +link31[] = {25,27}; +link32[] = {26,1}; +link33[] = {27,30}; +link34[] = {28,24}; +link35[] = {29,34}; +link36[] = {30,29}; +link37[] = {31,35}; +link38[] = {32,36}; +link39[] = {33,38}; +link40[] = {34,31}; +link41[] = {35,32}; +link42[] = {36,33}; +link43[] = {37,22}; +link44[] = {38,37}; +globals[] = {0.000000,0,0,0,0,640,480,1,197,6316128,1,-531.517700,-94.375397,293.288269,-925.745911,317,884,1}; +window[] = {2,-1,-1,-1,-1,1134,104,1127,104,3,335}; *//*%FSM*/ class FSM { @@ -389,10 +419,10 @@ class FSM }; }; /*%FSM*/ - /*%FSM*/ - class Create + /*%FSM*/ + class Calc { - name = "Create"; + name = "Calc"; itemno = 18; init = /*%FSM*/"//--- We get the main information first (The teams, the groups and the positions)" \n "_return = (_town) call CTI_SE_FNC_SpawnTownResistance;" \n @@ -401,63 +431,21 @@ class FSM "_town_positions = _return select 2;" \n "" \n "_town setvariable [""CTI_TOWN_GROUPS"",_town_groups,true];" \n - "//--- Warn" \n - "//[[""CLIENT"",resistance], ""Client_OnMessageReceived"", [""town-hostilenear"", _town]] call CTI_CO_FNC_NetSend;" \n "" \n + "_size = count _town_groups; " \n "" \n - "_town_vehicles_groups = [_town, resistance, _town_teams, _town_groups, _town_positions] call CTI_CO_FNC_CreateTownUnits;" \n - "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups];" \n - "" \n - "_town setvariable [""CTI_TOWN_GROUPS"",_town_vehicles_groups select 1,true];" \n - "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups select 0),true];" \n - "_town setVariable [""cti_town_mortars_units"",[],true];" \n - "_town setVariable [""cti_town_resistance_active"", true,true];" \n - "" \n - "" \n - "if ((missionNamespace getVariable 'CTI_SM_MORTARS')==1) then {" \n - " _mortars=[_town,_town_groups] call CTI_SM_Mortars_script;" \n - " [""CLIENT"", ""Client_Update_Mortars"",[_town,(_mortars select 2)]] call CTI_CO_FNC_NetSend;" \n - " _town setVariable [""cti_town_mortars"",(_mortars select 2),true];" \n - " _town setVariable [""cti_town_mortars_units"",(_mortars),true];" \n - "};" \n - "" \n - "_town setVariable [""cti_town_resistance_active"", true,true];" \n - "" \n - "if ( (missionNamespace getVariable 'CTI_SM_TCAS') <= (_town getVariable ""cti_town_value"")) then {" \n - " _town setVariable[""CTI_CAS"",(_town) call SM_TCAS_CREATE,true];" \n - "};" \n - "" \n - "if ((missionNamespace getVariable 'CTI_SM_MINES')==1) then {" \n - " [_town] call CTI_SM_Mines_script;" \n - "};" \n - "" \n - "if ((missionNamespace getVariable 'CTI_SM_SHIP')==1) then {" \n - " if (ISLAND == 2 || ISLAND == 3) then {" \n - " if ((_town getVariable ""cti_town_name"" == ""Makrynisi"") || (_town getVariable ""cti_town_name"" == ""Tuadua Island"") || (_town getVariable ""cti_town_name"" == ""Yani Islets"") || (_town getVariable ""cti_town_name"" == ""Ile Sainte-Marie"") || (_town getVariable ""cti_town_name"" == ""Northern Island"") || (_town getVariable ""cti_town_name"" == ""Rock Island"")) then {_town setVariable [""CTI_Ship"",(_town) call SM_TShip_CREATE,true];};" \n - " };" \n - "};" \n - "" \n - "if ( _town in (CTI_WEST getvariable ""CTI_ACTIVE"")) then {" \n - " [[""CLIENT"",west],""SM_message"",format [localize ""STR_TownActive"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n - "};" \n - "" \n - "if ( _town in (CTI_EAST getvariable ""CTI_ACTIVE"")) then {" \n - " [[""CLIENT"",east],""SM_message"",format [localize ""STR_TownActive"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n - "};" \n - "" \n - "_town setVariable [""cti_town_timeofspawn"", time,true];"/*%FSM*/; + "_wait = time + 0.5;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { - /*%FSM*/ - class Cycle + /*%FSM*/ + class Wait { - itemno = 1; + itemno = 28; priority = 1.000000; - to="Resistance_hold"; + to="Create_G1"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle" \n - "// && !( _town getVariable ""cti_town_disactivate"");"/*%FSM*/; + condition=/*%FSM*/"time > _wait"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -489,7 +477,7 @@ class FSM { itemno = 20; priority = 1.000000; - to="Create"; + to="Calc"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"_sideID == CTI_RESISTANCE_ID &&!(_town getVariable ""cti_town_resistance_active"") &&(_town in ((CTI_WEST getvariable ""CTI_ACTIVE"") + (CTI_EAST getvariable ""CTI_ACTIVE"") )) && !(_town getVariable ""cti_town_occupation_active"")" \n ""/*%FSM*/; @@ -510,6 +498,251 @@ class FSM }; }; /*%FSM*/ + /*%FSM*/ + class Create_G1 + { + name = "Create_G1"; + itemno = 24; + init = /*%FSM*/"if (_size > 0) then {" \n + "_town_vehicles_groups_1 = [_town, resistance, [_town_teams select 0], [_town_groups select 0], [_town_positions select 0]] call CTI_CO_FNC_CreateTownUnits;" \n + "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups_1];" \n + "" \n + "_town setvariable [""CTI_TOWN_GROUPS"",_town_vehicles_groups_1 select 1,true];" \n + "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups_1 select 0),true];" \n + "" \n + "_wait = time + 0.5;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait + { + itemno = 25; + priority = 1.000000; + to="Create_G2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _wait"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Create_G2 + { + name = "Create_G2"; + itemno = 27; + init = /*%FSM*/"if (_size > 1) then {" \n + "_town_vehicles_groups_2 = [_town, resistance, [_town_teams select 1], [_town_groups select 1], [_town_positions select 1]] call CTI_CO_FNC_CreateTownUnits;" \n + "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups_2];" \n + "" \n + "_town setvariable [""CTI_TOWN_GROUPS"",(_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_2 select 1),true];" \n + "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups_2 select 0),true];" \n + "" \n + "_wait = time + 0.5;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait + { + itemno = 30; + priority = 1.000000; + to="Create_G3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _wait"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Create_G3 + { + name = "Create_G3"; + itemno = 29; + init = /*%FSM*/"if (_size > 2) then {" \n + "_town_vehicles_groups_3 = [_town, resistance, [_town_teams select 2], [_town_groups select 2], [_town_positions select 2]] call CTI_CO_FNC_CreateTownUnits;" \n + "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups_3];" \n + "" \n + "_town setvariable [""CTI_TOWN_GROUPS"",(_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_3 select 1),true];" \n + "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups_3 select 0),true];" \n + "" \n + "_wait = time + 0.5;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait + { + itemno = 34; + priority = 1.000000; + to="Create_G4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _wait"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Create_G4 + { + name = "Create_G4"; + itemno = 31; + init = /*%FSM*/"if (_size > 3) then {" \n + "_town_vehicles_groups_4 = [_town, resistance, [_town_teams select 3], [_town_groups select 3], [_town_positions select 3]] call CTI_CO_FNC_CreateTownUnits;" \n + "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups_4];" \n + "" \n + "_town setvariable [""CTI_TOWN_GROUPS"",(_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_4 select 1),true];" \n + "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups_4 select 0),true];" \n + "" \n + "_wait = time + 0.5;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait + { + itemno = 35; + priority = 1.000000; + to="Create_G5"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _wait"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Create_G5 + { + name = "Create_G5"; + itemno = 32; + init = /*%FSM*/"if (_size > 4) then {" \n + "_town_vehicles_groups_5 = [_town, resistance, [_town_teams select 4], [_town_groups select 4], [_town_positions select 4]] call CTI_CO_FNC_CreateTownUnits;" \n + "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups_5];" \n + "" \n + "_town setvariable [""CTI_TOWN_GROUPS"",(_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_5 select 1),true];" \n + "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups_5 select 0),true];" \n + "" \n + "_wait = time + 0.5;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait + { + itemno = 36; + priority = 1.000000; + to="Create_G6"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _wait"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Create_G6 + { + name = "Create_G6"; + itemno = 33; + init = /*%FSM*/"if (_size > 5) then {" \n + "_town_vehicles_groups_6 = [_town, resistance, [_town_teams select 5], [_town_groups select 5], [_town_positions select 5]] call CTI_CO_FNC_CreateTownUnits;" \n + "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups_6];" \n + "" \n + "_town setvariable [""CTI_TOWN_GROUPS"",(_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_6 select 1),true];" \n + "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups_6 select 0),true];" \n + "" \n + "_wait = time + 0.5;" \n + "};" \n + "" \n + "_town setVariable [""cti_town_resistance_active"", true,true];" \n + "" \n + "//diag_log (_town getVariable ""CTI_TOWN_GROUPS"");"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait + { + itemno = 38; + priority = 1.000000; + to="Create_C__M__M_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _wait"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Create_C__M__M_ + { + name = "Create_C__M__M_"; + itemno = 37; + init = /*%FSM*/"_town setVariable [""cti_town_mortars_units"",[],true];" \n + "" \n + "if ((missionNamespace getVariable 'CTI_SM_MORTARS')==1) then {" \n + " _mortars=[_town,_town_groups] call CTI_SM_Mortars_script;" \n + " [""CLIENT"", ""Client_Update_Mortars"",[_town,(_mortars select 2)]] call CTI_CO_FNC_NetSend;" \n + " _town setVariable [""cti_town_mortars"",(_mortars select 2),true];" \n + " _town setVariable [""cti_town_mortars_units"",(_mortars),true];" \n + "};" \n + "" \n + "if ( (missionNamespace getVariable 'CTI_SM_TCAS') <= (_town getVariable ""cti_town_value"")) then {" \n + " _town setVariable[""CTI_CAS"",(_town) call SM_TCAS_CREATE,true];" \n + "};" \n + "" \n + "if ((missionNamespace getVariable 'CTI_SM_MINES')==1) then {" \n + " [_town] call CTI_SM_Mines_script;" \n + "};" \n + "" \n + "if ((missionNamespace getVariable 'CTI_SM_SHIP')==1) then {" \n + " if (ISLAND == 2 || ISLAND == 3) then {" \n + " if ((_town getVariable ""cti_town_name"" == ""Makrynisi"") || (_town getVariable ""cti_town_name"" == ""Tuadua Island"") || (_town getVariable ""cti_town_name"" == ""Yani Islets"") || (_town getVariable ""cti_town_name"" == ""Ile Sainte-Marie"") || (_town getVariable ""cti_town_name"" == ""Northern Island"") || (_town getVariable ""cti_town_name"" == ""Rock Island"")) then {_town setVariable [""CTI_Ship"",(_town) call SM_TShip_CREATE,true];};" \n + " };" \n + "};" \n + "" \n + "if ( _town in (CTI_WEST getvariable ""CTI_ACTIVE"")) then {" \n + " [[""CLIENT"",west],""SM_message"",format [localize ""STR_TownActive"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n + "};" \n + "" \n + "if ( _town in (CTI_EAST getvariable ""CTI_ACTIVE"")) then {" \n + " [[""CLIENT"",east],""SM_message"",format [localize ""STR_TownActive"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n + "};" \n + "" \n + "_town setVariable [""cti_town_timeofspawn"", time,true];"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 1.000000; + to="Resistance_hold"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle" \n + "// && !( _town getVariable ""cti_town_disactivate"");"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ }; initState="Start_FSM"; finalStates[] = diff --git a/Server/FSM/town_patrol.fsm b/Server/FSM/town_patrol.fsm index 4be1e9965..19cb58e1f 100644 --- a/Server/FSM/town_patrol.fsm +++ b/Server/FSM/town_patrol.fsm @@ -3,225 +3,260 @@ /* item0[] = {"Init",0,250,-25.000000,-475.000000,75.000000,-425.000000,0.000000,"Init"}; item1[] = {"Cycle",4,218,125.000000,-475.000000,225.000000,-425.000000,0.000000,"Cycle"}; -item2[] = {"Check",2,250,275.000000,-475.000000,375.000000,-425.000000,0.000000,"Check"}; +item2[] = {"Check",2,250,275.000031,-473.715515,375.000031,-423.715515,0.000000,"Check"}; item3[] = {"Renew_Path",4,218,275.000000,-575.000000,375.000000,-525.000000,3.000000,"Renew" \n "Path"}; item4[] = {"Process_Action",4,218,275.000000,-375.000000,375.000000,-325.000000,2.000000,"Process" \n "Action"}; item5[] = {"Done",8,218,425.000000,-475.000000,525.000000,-425.000000,0.000000,"Done"}; item6[] = {"End",1,250,575.000000,-475.000000,675.000000,-425.000000,0.000000,"End"}; -item7[] = {"Patrol",2,4346,125.000000,-575.000000,225.000000,-525.000000,0.000000,"Patrol"}; -item8[] = {"Defend",2,250,125.000000,-375.000000,225.000000,-325.000000,0.000000,"Defend"}; -item9[] = {"_",4,218,450.000000,-300.000000,550.000000,-250.000000,1.000000,""}; -item10[] = {"SKIP",2,250,-25.000000,-300.000000,75.000000,-250.000000,0.000000,"SKIP"}; +item7[] = {"Patrol",2,250,125.000000,-575.000000,225.000000,-525.000000,0.000000,"Patrol"}; +item8[] = {"Defend",2,4346,125.000000,-375.000000,225.000000,-325.000000,0.000000,"Defend"}; link0[] = {0,1}; link1[] = {1,2}; link2[] = {2,3}; link3[] = {2,4}; link4[] = {2,5}; -link5[] = {2,9}; -link6[] = {3,7}; -link7[] = {4,8}; -link8[] = {5,6}; -link9[] = {7,1}; -link10[] = {8,1}; -link11[] = {9,10}; -link12[] = {10,1}; -globals[] = {25.000000,1,0,0,0,640,480,1,45,6316128,1,-49.166565,679.138794,-34.083618,-705.564575,769,709,1}; -window[] = {0,-1,-1,-1,-1,961,10,1470,107,1,787}; +link5[] = {3,7}; +link6[] = {4,8}; +link7[] = {5,6}; +link8[] = {7,1}; +link9[] = {8,1}; +globals[] = {0.000000,0,0,0,0,640,480,1,49,6316128,1,-65.822006,695.793152,454.302429,-733.118652,567,884,1}; +window[] = {2,-1,-1,-32000,-32000,958,104,1564,104,3,585}; *//*%FSM*/ class FSM { - fsmName = "town_patrol.fsm"; - class States - { - /*%FSM*/ - class Init - { - name = "Init"; - init = /*%FSM*/"_town = _this select 0;" \n - "_team = _this select 1;" \n - "_sideID = _this select 2;" \n - "" \n - "_ncycle = time + random(5) ;" \n - "" \n - "_last_action = """";"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle + fsmName = "town_patrol.fsm"; + class States { - priority = 0.000000; - to="Check"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; + /*%FSM*/ + class Init + { + name = "Init"; + itemno = 0; + init = /*%FSM*/"_town = _this select 0;" \n + "_team = _this select 1;" \n + "_sideID = _this select 2;" \n + "" \n + "_ncycle = time + random [0,5,1];" \n + "" \n + "_roads_town = [];" \n + "_roads_near_team = [];" \n + "_wp0 = [];" \n + "_veh = false;" \n + "_current_wp = -1;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check + { + name = "Check"; + itemno = 2; + init = /*%FSM*/"_aliveTeam = if ({alive _x} count units _team < 1 || isNull _team) then {false} else {true};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Renew_Path + { + itemno = 3; + priority = 3.000000; + to="Patrol"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((_town getVariable 'cti_town_capture') >= CTI_TOWNS_CAPTURE_VALUE_CEIL) && _aliveTeam && _sideID == (_town getVariable 'cti_town_sideID')"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Process_Action + { + itemno = 4; + priority = 2.000000; + to="Defend"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_aliveTeam && ( ((_town getVariable 'cti_town_capture') < CTI_TOWNS_CAPTURE_VALUE_CEIL) || _sideID != (_town getVariable 'cti_town_sideID') )"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Done + { + itemno = 5; + priority = 0.000000; + to="End"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class End + { + name = "End"; + itemno = 6; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Patrol + { + name = "Patrol"; + itemno = 7; + init = /*%FSM*/"_ncycle = time + 10;" \n + "" \n + "// ais usually not complete defend box's waypoint types so need remove or change" \n + "if (waypointType [_team, currentWaypoint _team] != ""MOVE"") then {{_x setwaypointtype ""MOVE""} forEach (waypoints _team);};" \n + "" \n + "// need wp or not" \n + "if ((currentWaypoint _team) != _current_wp) then {" \n + "" \n + "// remove all waypoints" \n + "{deleteWaypoint [_team, _forEachIndex];} forEach (waypoints _team);" \n + "" \n + "// position of team leader" \n + "_pos = getPos (leader _team);" \n + "" \n + "// vehicle?" \n + "if (vehicle (leader _team) != leader _team) then {_veh = true;} else {_veh = false;};" \n + "" \n + "// roads near leader 60-80m inside patrol range" \n + "_roads_town = (getPos _town) nearRoads CTI_TOWNS_PATROL_RANGE;" \n + "" \n + "if (!_veh) then {" \n + " _roads_near_team = ((_pos nearRoads 80) - (_pos nearRoads 60));" \n + " } else {" \n + " _roads_near_team = ((_pos nearRoads 140) - (_pos nearRoads 100));" \n + " };" \n + "" \n + "_roads = (_roads_town arrayIntersect _roads_near_team);" \n + "" \n + "// make waypoint" \n + "if (count _roads > 0) then {" \n + " _wp0 = _team addWaypoint [getPos (selectRandom _roads), 3];" \n + " } else {" \n + " _wp0 = _team addWaypoint [getPos _town, CTI_TOWNS_PATROL_RANGE];" \n + " };" \n + "" \n + "// set wp 0.5m height (because sometimes ais can't find path on ground or inside object)" \n + "_wp0 setWaypointPosition [[(waypointPosition _wp0) select 0, (waypointPosition _wp0) select 1, 0.5], 0];" \n + "" \n + "_wp0 setwaypointtype ""MOVE"";" \n + "_team setCurrentWaypoint _wp0;" \n + "_current_wp = (currentWaypoint _team);" \n + "" \n + "_team setCombatMode ""RED"";" \n + "_team setBehaviour ""AWARE"";" \n + "_team setSpeedMode ""LIMITED"";" \n + "" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Defend + { + name = "Defend"; + itemno = 8; + init = /*%FSM*/"_ncycle = time + 10;" \n + "" \n + "if ((currentWaypoint _team) != _current_wp) then {" \n + "" \n + "if (count (waypoints _team) > 0) then" \n + " {" \n + " {deleteWaypoint [_team, _forEachIndex];} forEach (waypoints _team);" \n + " };" \n + "" \n + "_pos = getPos (leader _team);" \n + "" \n + "if (vehicle (leader _team) != leader _team) then {_veh = true;} else {_veh = false;};" \n + "" \n + "// roads near flag (50m)" \n + "_roads_town = (getPos _town) nearRoads (CTI_TOWNS_PATROL_RANGE / 4);" \n + "" \n + "if (!_veh) then {" \n + " _roads_near_team = ((_pos nearRoads 100) - (_pos nearRoads 30));" \n + " } else {" \n + " _roads_near_team = ((_pos nearRoads 140) - (_pos nearRoads 50));" \n + " };" \n + "" \n + "_roads = (_roads_town arrayIntersect _roads_near_team);" \n + "" \n + "// make waypoint" \n + "if (count _roads > 0) then {" \n + " _wp0 = _team addWaypoint [getPos (selectRandom _roads), 3];" \n + " } else {" \n + " _wp0 = _team addWaypoint [getPos _town, (CTI_TOWNS_PATROL_RANGE / 4)];" \n + " };" \n + "" \n + "_wp0 setWaypointPosition [[(waypointPosition _wp0) select 0, (waypointPosition _wp0) select 1, 0.5], 0];" \n + "" \n + "_types = [""HOLD"", ""SENTRY"", ""GUARD"", ""SAD""];" \n + "_wp0 setwaypointtype (selectRandom _types);" \n + "_team setCurrentWaypoint _wp0;" \n + "_current_wp = (currentWaypoint _team);" \n + "" \n + "_team setCombatMode ""RED"";" \n + "_team setBehaviour ""COMBAT"";" \n + "_team setSpeedMode ""NORMAL"";" \n + "" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Check - { - name = "Check"; - init = /*%FSM*/"_aliveTeam = if ({alive _x} count units _team < 1 || isNull _team) then {false} else {true};" \n - ""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Renew_Path + initState="Init"; + finalStates[] = { - priority = 3.000000; - to="Patrol"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"((_town getVariable 'cti_town_capture') >= CTI_TOWNS_CAPTURE_VALUE_CEIL) && _last_action != ""patrol"" && _aliveTeam && _sideID == (_town getVariable 'cti_town_sideID')"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; + "End", }; - /*%FSM*/ - /*%FSM*/ - class Process_Action - { - priority = 2.000000; - to="Defend"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_aliveTeam && _last_action != ""defend"" && ( ( (_town getVariable 'cti_town_capture') < CTI_TOWNS_CAPTURE_VALUE_CEIL ) || _sideID != (_town getVariable 'cti_town_sideID') )"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class _ - { - priority = 1.000000; - to="SKIP"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_aliveTeam "/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Done - { - priority = 0.000000; - to="End"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class End - { - name = "End"; - init = /*%FSM*/""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - }; - }; - /*%FSM*/ - /*%FSM*/ - class Patrol - { - name = "Patrol"; - init = /*%FSM*/"_ncycle = time +20;" \n - "" \n - "while {(count (waypoints _team)) > 0} do" \n - " {" \n - " deleteWaypoint ((waypoints _team) select 0);" \n - " };" \n - "_wp0= _team addwaypoint [_town,CTI_TOWNS_PATROL_RANGE];" \n - "_wp0 setwaypointtype ""MOVE"";" \n - "for '_i' from 1 to CTI_TOWNS_PATROL_HOPS do {" \n - " _wp= _team addwaypoint [_town,CTI_TOWNS_PATROL_RANGE];" \n - " _wp setwaypointtype ""MOVE"";" \n - "};" \n - "_wp = _team addwaypoint [_town,CTI_TOWNS_PATROL_RANGE];" \n - "_wp setwaypointtype ""CYCLE"";" \n - "_team setCurrentWaypoint _wp0;" \n - "_last_action = ""patrol"";" \n - "_team setCombatMode ""RED"";" \n - "_team setBehaviour ""AWARE"";" \n - "_team setSpeedMode ""LIMITED"";"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - priority = 0.000000; - to="Check"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Defend - { - name = "Defend"; - init = /*%FSM*/"_ncycle = time +20;" \n - "" \n - "while {(count (waypoints _team)) > 0} do" \n - " {" \n - " deleteWaypoint ((waypoints _team) select 0);" \n - " };" \n - "" \n - "_wp0= _team addwaypoint [_town,25];" \n - "_wp0 setwaypointtype ""HOLD"";" \n - "_team setCurrentWaypoint _wp0;" \n - "_last_action = ""defend"";" \n - "_team setCombatMode ""RED"";" \n - "_team setBehaviour ""COMBAT"";" \n - "_team setSpeedMode ""NORMAL"";"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - priority = 0.000000; - to="Check"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class SKIP - { - name = "SKIP"; - init = /*%FSM*/"_ncycle = time +30;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - priority = 0.000000; - to="Check"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - }; - initState="Init"; - finalStates[] = - { - "End" - }; }; /*%FSM*/ \ No newline at end of file From 719172b923dbe12e26341224b154978f2222b0bf Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sat, 29 Jun 2019 11:07:03 +0200 Subject: [PATCH 108/267] Revert "FSM update" This reverts commit b28af1dad5f8214252b08e1c9c83d6808da5205a. --- Addons/Strat_mode/FSM/town_occupation.fsm | 266 ++----------- Addons/Strat_mode/FSM/town_resistance.fsm | 353 +++-------------- Server/FSM/town_patrol.fsm | 443 ++++++++++------------ 3 files changed, 303 insertions(+), 759 deletions(-) diff --git a/Addons/Strat_mode/FSM/town_occupation.fsm b/Addons/Strat_mode/FSM/town_occupation.fsm index 53478b6d1..95a7d0aea 100644 --- a/Addons/Strat_mode/FSM/town_occupation.fsm +++ b/Addons/Strat_mode/FSM/town_occupation.fsm @@ -3,7 +3,7 @@ /* item0[] = {"Start_FSM",0,250,-100.000000,-800.000000,0.000000,-750.000000,0.000000,"Start FSM"}; item1[] = {"Cycle",4,218,-100.000000,-400.000000,0.000000,-350.000000,1.000000,"Cycle"}; -item2[] = {"Occupation_hold",2,250,-100.000000,-200.000000,0.000000,-150.000000,0.000000,"Occupation hold" \n "the town?"}; +item2[] = {"Occupation_hold",2,4346,-100.000000,-200.000000,0.000000,-150.000000,0.000000,"Occupation hold" \n "the town?"}; item3[] = {"End_FSM",1,250,-250.000000,-100.000000,-150.000000,-50.000000,0.000000,"End FSM"}; item4[] = {"Held_by_Occupati",4,218,-100.000000,-100.000000,0.000000,-50.000000,2.000000,"Held by" \n "Occupation"}; item5[] = {"Gameover",8,218,-250.000000,-200.000000,-150.000000,-150.000000,0.000000,"Gameover"}; @@ -19,24 +19,12 @@ item14[] = {"Cleanup",2,250,425.000000,-400.000000,525.000000,-350.000000,0.0000 item15[] = {"Occupation_Active",2,250,50.000000,-100.000000,150.000000,-50.000000,0.000000,"Occupation" \n "Active?"}; item16[] = {"Contact",8,218,-100.000000,100.000000,0.000000,150.000000,0.000000,"Contact"}; item17[] = {"Clear",4,218,50.000000,0.000000,150.000000,50.000000,1.000000,"Clear"}; -item18[] = {"Calc",2,250,-400.000000,200.000000,-300.000000,250.000000,0.000000,"Calc"}; +item18[] = {"Create",2,250,-400.000000,200.000000,-300.000000,250.000000,0.000000,"Create"}; item19[] = {"Occupation_Active_1",2,250,-100.000000,200.000000,0.000000,250.000000,0.000000,"Occupation" \n "Active?"}; item20[] = {"Inactive",4,218,-250.000000,200.000000,-150.000000,250.000000,1.000000,"Inactive"}; item21[] = {"Active",4,218,175.000000,200.000000,275.000000,250.000000,2.000000,"Active"}; item22[] = {"",7,210,-354.000000,-379.000000,-346.000000,-371.000000,0.000000,""}; item23[] = {"_",8,218,350.000000,325.000000,450.000000,375.000000,0.000000,""}; -item24[] = {"Wait",4,218,-396.344360,169.054321,-301.266876,191.365082,1.000000,"Wait"}; -item25[] = {"Wait",4,218,-393.071930,80.698349,-297.994446,103.009109,1.000000,"Wait"}; -item26[] = {"Wait",4,218,-394.045837,-9.293777,-298.968353,13.016983,1.000000,"Wait"}; -item27[] = {"Wait",4,218,-396.998413,-95.932709,-301.920929,-73.621948,1.000000,"Wait"}; -item28[] = {"Wait",4,218,-395.419861,-187.748001,-300.342377,-165.437241,1.000000,"Wait"}; -item29[] = {"Wait",4,218,-396.455292,-278.932922,-301.377808,-256.622192,1.000000,"Wait"}; -item30[] = {"Create_G1",2,250,-397.530731,112.138672,-297.530731,162.138672,0.000000,"Create G1"}; -item31[] = {"Create_G2",2,4346,-395.610718,21.793152,-295.610718,71.793152,0.000000,"Create G2"}; -item32[] = {"Create_G3",2,250,-397.553162,-64.800392,-297.553162,-14.800392,0.000000,"Create G3"}; -item33[] = {"Create_G4",2,250,-398.123474,-156.634659,-298.123474,-106.634666,0.000000,"Create G4"}; -item34[] = {"Create_G5",2,250,-398.309631,-244.824005,-298.309631,-194.824005,0.000000,"Create G5"}; -item35[] = {"Create_M__Warn",2,250,-399.250671,-339.790894,-299.250671,-289.790894,0.000000,"Create M, Warn"}; link0[] = {0,1}; link1[] = {1,2}; link2[] = {2,4}; @@ -59,7 +47,7 @@ link18[] = {15,9}; link19[] = {15,10}; link20[] = {16,19}; link21[] = {17,15}; -link22[] = {18,24}; +link22[] = {18,22}; link23[] = {19,20}; link24[] = {19,21}; link25[] = {19,23}; @@ -67,20 +55,8 @@ link26[] = {20,18}; link27[] = {21,8}; link28[] = {22,1}; link29[] = {23,13}; -link30[] = {24,30}; -link31[] = {25,31}; -link32[] = {26,32}; -link33[] = {27,33}; -link34[] = {28,34}; -link35[] = {29,35}; -link36[] = {30,25}; -link37[] = {31,26}; -link38[] = {32,27}; -link39[] = {33,28}; -link40[] = {34,29}; -link41[] = {35,22}; -globals[] = {0.000000,0,0,0,0,640,480,1,198,6316128,1,-712.383606,50.215027,402.539001,-527.305359,725,884,1}; -window[] = {2,-1,-1,-32000,-32000,716,104,1140,104,3,743}; +globals[] = {0.000000,0,0,0,0,640,480,1,177,6316128,1,-582.603027,790.527588,465.883545,-1210.282837,725,885,1}; +window[] = {2,-1,-1,-1,-1,812,200,1236,200,3,743}; *//*%FSM*/ class FSM { @@ -400,10 +376,10 @@ class FSM }; }; /*%FSM*/ - /*%FSM*/ - class Calc + /*%FSM*/ + class Create { - name = "Calc"; + name = "Create"; itemno = 18; init = /*%FSM*/"//--- We get the main information first (The teams, the groups and the positions)" \n "_return = [_town, _side] call CTI_SE_FNC_SpawnTownOccupation;" \n @@ -414,20 +390,43 @@ class FSM "" \n "_town setvariable [""CTI_TOWN_GROUPS"",_town_groups,true];" \n "" \n - "_size = count _town_groups;" \n + "//--- Warn" \n + "[[""CLIENT"", _side], ""Client_OnMessageReceived"", [""town-hostilenear"", _town]] call CTI_CO_FNC_NetSend;" \n + "" \n + "if (count _town_groups > 0) then {" \n + " _town_vehicles_groups = [_town, _side, _town_teams, _town_groups, _town_positions] call CTI_CO_FNC_CreateTownUnits;" \n + " _town setVariable [""cti_town_occupation_active_vehicles"", (_town getVariable ""cti_town_occupation_active_vehicles"") + (_town_vehicles_groups select 0),true];" \n + " _town setvariable [""CTI_TOWN_GROUPS"",_town_vehicles_groups select 1,true];" \n + "};" \n "" \n - "_wait = time + 0.5;"/*%FSM*/; + "_town setVariable [""cti_town_occupation_active"", true,true];" \n + "_town setVariable [""cti_town_occupation_active_sideID"", _sideID,true];" \n + "" \n + "if (_town in (CTI_WEST getvariable ""CTI_ACTIVE"")) then {" \n + " [[""CLIENT"",west],""SM_message"",format [""Town is %1 is now Active"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n + "};" \n + "" \n + "if (_town in (CTI_EAST getvariable ""CTI_ACTIVE"")) then {" \n + " [[""CLIENT"",east],""SM_message"",format [""Town is %1 is now Active"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n + "};" \n + "" \n + "if ((missionNamespace getVariable 'CTI_SM_MINES')==1) then {" \n + " [_town] call CTI_SM_Mines_script;" \n + "};" \n + "" \n + "_town setVariable [""cti_town_timeofspawn"", time,true];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { - /*%FSM*/ - class Wait + /*%FSM*/ + class Cycle { - itemno = 24; + itemno = 1; priority = 1.000000; - to="Create_G1"; + to="Occupation_hold"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _wait"/*%FSM*/; + condition=/*%FSM*/"time > _ncycle " \n + "//&& !( _town getVariable ""cti_town_disactivate"");"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -459,7 +458,7 @@ class FSM { itemno = 20; priority = 1.000000; - to="Calc"; + to="Create"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(_town getVariable ""cti_town_sideID"") ==_sideID && !(_town getVariable ""cti_town_occupation_active"") && !(_town getVariable ""cti_town_resistance_active"") &&" \n "(" \n @@ -487,193 +486,6 @@ class FSM }; }; /*%FSM*/ - /*%FSM*/ - class Create_G1 - { - name = "Create_G1"; - itemno = 30; - init = /*%FSM*/"if (_size > 0) then {" \n - " _town_vehicles_groups_1 = [_town, _side, [_town_teams select 0], [_town_groups select 0], [_town_positions select 0]] call CTI_CO_FNC_CreateTownUnits;" \n - " _town setVariable [""cti_town_occupation_active_vehicles"", (_town getVariable ""cti_town_occupation_active_vehicles"") + (_town_vehicles_groups_1 select 0),true];" \n - " _town setvariable [""CTI_TOWN_GROUPS"",_town_vehicles_groups_1 select 1,true];" \n - "" \n - "_wait = time + 0.5;" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wait - { - itemno = 25; - priority = 1.000000; - to="Create_G2"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _wait"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Create_G2 - { - name = "Create_G2"; - itemno = 31; - init = /*%FSM*/"if (_size > 1) then {" \n - " _town_vehicles_groups_2 = [_town, _side, [_town_teams select 1], [_town_groups select 1], [_town_positions select 1]] call CTI_CO_FNC_CreateTownUnits;" \n - " _town setVariable [""cti_town_occupation_active_vehicles"", (_town getVariable ""cti_town_occupation_active_vehicles"") + (_town_vehicles_groups_2 select 0),true];" \n - " _town setvariable [""CTI_TOWN_GROUPS"", (_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_2 select 1),true];" \n - "" \n - "_wait = time + 0.5;" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wait - { - itemno = 26; - priority = 1.000000; - to="Create_G3"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _wait"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Create_G3 - { - name = "Create_G3"; - itemno = 32; - init = /*%FSM*/"if (_size > 2) then {" \n - " _town_vehicles_groups_3 = [_town, _side, [_town_teams select 2], [_town_groups select 2], [_town_positions select 2]] call CTI_CO_FNC_CreateTownUnits;" \n - " _town setVariable [""cti_town_occupation_active_vehicles"", (_town getVariable ""cti_town_occupation_active_vehicles"") + (_town_vehicles_groups_3 select 0),true];" \n - " _town setvariable [""CTI_TOWN_GROUPS"", (_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_3 select 1),true];" \n - "" \n - "_wait = time + 0.5;" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wait - { - itemno = 27; - priority = 1.000000; - to="Create_G4"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _wait"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Create_G4 - { - name = "Create_G4"; - itemno = 33; - init = /*%FSM*/"if (_size > 3) then {" \n - " _town_vehicles_groups_4 = [_town, _side, [_town_teams select 3], [_town_groups select 3], [_town_positions select 3]] call CTI_CO_FNC_CreateTownUnits;" \n - " _town setVariable [""cti_town_occupation_active_vehicles"", (_town getVariable ""cti_town_occupation_active_vehicles"") + (_town_vehicles_groups_4 select 0),true];" \n - " _town setvariable [""CTI_TOWN_GROUPS"", (_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_4 select 1),true];" \n - "" \n - "_wait = time + 0.5;" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wait - { - itemno = 28; - priority = 1.000000; - to="Create_G5"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _wait"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Create_G5 - { - name = "Create_G5"; - itemno = 34; - init = /*%FSM*/"if (_size > 4) then {" \n - " _town_vehicles_groups_5 = [_town, _side, [_town_teams select 4], [_town_groups select 4], [_town_positions select 4]] call CTI_CO_FNC_CreateTownUnits;" \n - " _town setVariable [""cti_town_occupation_active_vehicles"", (_town getVariable ""cti_town_occupation_active_vehicles"") + (_town_vehicles_groups_5 select 0),true];" \n - " _town setvariable [""CTI_TOWN_GROUPS"", (_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_5 select 1),true];" \n - "" \n - "_wait = time + 0.5;" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wait - { - itemno = 29; - priority = 1.000000; - to="Create_M__Warn"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _wait"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Create_M__Warn - { - name = "Create_M__Warn"; - itemno = 35; - init = /*%FSM*/"//--- Warn" \n - "[[""CLIENT"", _side], ""Client_OnMessageReceived"", [""town-hostilenear"", _town]] call CTI_CO_FNC_NetSend;" \n - "" \n - "_town setVariable [""cti_town_occupation_active"", true,true];" \n - "_town setVariable [""cti_town_occupation_active_sideID"", _sideID,true];" \n - "" \n - "if (_town in (CTI_WEST getvariable ""CTI_ACTIVE"")) then {" \n - " [[""CLIENT"",west],""SM_message"",format [""Town is %1 is now Active"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n - "};" \n - "" \n - "if (_town in (CTI_EAST getvariable ""CTI_ACTIVE"")) then {" \n - " [[""CLIENT"",east],""SM_message"",format [""Town is %1 is now Active"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n - "};" \n - "" \n - "if ((missionNamespace getVariable 'CTI_SM_MINES')==1) then {" \n - " [_town] call CTI_SM_Mines_script;" \n - "};" \n - "" \n - "_town setVariable [""cti_town_timeofspawn"", time,true];"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - itemno = 1; - priority = 1.000000; - to="Occupation_hold"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle " \n - "//&& !( _town getVariable ""cti_town_disactivate"");"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ }; initState="Start_FSM"; finalStates[] = diff --git a/Addons/Strat_mode/FSM/town_resistance.fsm b/Addons/Strat_mode/FSM/town_resistance.fsm index fa82b5711..ce60f12b6 100644 --- a/Addons/Strat_mode/FSM/town_resistance.fsm +++ b/Addons/Strat_mode/FSM/town_resistance.fsm @@ -15,32 +15,17 @@ item10[] = {"Inactive",4,218,175.000000,-100.000000,275.000000,-50.000000,1.0000 item11[] = {"Still_active",8,218,300.000000,0.000000,400.000000,50.000000,0.000000,"Still active"}; item12[] = {"Timed_out",4,218,475.000000,100.000000,575.000000,150.000000,1.000000,"Timed out"}; item13[] = {"Skip",2,250,302.287354,-265.039612,402.287354,-215.039612,0.000000,"Skip"}; -item14[] = {"Cleanup",2,250,475.000000,-400.000000,575.000000,-350.000000,0.000000,"Cleanup"}; +item14[] = {"Cleanup",2,4346,475.000000,-400.000000,575.000000,-350.000000,0.000000,"Cleanup"}; item15[] = {"Resistance_Active",2,250,50.000000,-100.000000,150.000000,-50.000000,0.000000,"Resistance" \n "Active?"}; item16[] = {"Contact",8,218,-100.000000,100.000000,0.000000,150.000000,0.000000,"Contact"}; item17[] = {"Clear",4,218,50.000000,0.000000,150.000000,50.000000,1.000000,"Clear"}; -item18[] = {"Calc",2,250,-405.286591,200.000000,-305.286591,250.000000,0.000000,"Calc"}; +item18[] = {"Create",2,250,-400.000000,200.000000,-300.000000,250.000000,0.000000,"Create"}; item19[] = {"Resistance_Active_1",2,250,-100.000000,200.000000,0.000000,250.000000,0.000000,"Resistance" \n "Active?"}; item20[] = {"Inactive",4,218,-250.000000,200.000000,-150.000000,250.000000,1.000000,"Inactive"}; item21[] = {"Active",4,218,175.000000,200.000000,275.000000,250.000000,2.000000,"Active"}; -item22[] = {"",7,210,-351.746582,-418.493622,-343.746582,-410.493622,0.000000,""}; +item22[] = {"",7,210,-354.000000,-379.000000,-346.000000,-371.000000,0.000000,""}; item23[] = {"_",8,218,300.000000,275.000000,400.000000,325.000000,0.000000,""}; -item24[] = {"Create_G1",2,250,-403.897888,112.289322,-303.897888,162.289322,0.000000,"Create G1"}; -item25[] = {"Wait",4,218,-402.292999,83.576782,-303.756409,105.971649,1.000000,"Wait"}; -item26[] = {"",7,210,-40.530235,-569.115356,-32.530251,-561.115356,0.000000,""}; -item27[] = {"Create_G2",2,250,-403.032166,26.257862,-303.032166,76.257881,0.000000,"Create G2"}; -item28[] = {"Wait",4,218,-404.894409,170.550903,-306.357819,192.945770,1.000000,"Wait"}; -item29[] = {"Create_G3",2,250,-401.294312,-56.101166,-301.294312,-6.101151,0.000000,"Create G3"}; -item30[] = {"Wait",4,218,-401.987091,-1.587708,-303.450500,20.807159,1.000000,"Wait"}; -item31[] = {"Create_G4",2,250,-400.878967,-141.958054,-300.878906,-91.958038,0.000000,"Create G4"}; -item32[] = {"Create_G5",2,250,-397.118561,-226.637772,-297.118561,-176.637802,0.000000,"Create G5"}; -item33[] = {"Create_G6",2,4346,-398.124298,-312.866913,-298.124298,-262.866913,0.000000,"Create G6"}; -item34[] = {"Wait",4,218,-399.633942,-84.102051,-301.097351,-61.707184,1.000000,"Wait"}; -item35[] = {"Wait",4,218,-398.621429,-170.179230,-300.084839,-147.784363,1.000000,"Wait"}; -item36[] = {"Wait",4,218,-396.509552,-255.200638,-297.972961,-232.805847,1.000000,"Wait"}; -item37[] = {"Create_C__M__M_",2,250,-398.652588,-399.085297,-298.652588,-349.085297,0.000000,"Create C, M, M, S"}; -item38[] = {"Wait",4,218,-397.133728,-342.601624,-298.597107,-320.206787,1.000000,"Wait"}; -link0[] = {0,26}; +link0[] = {0,1}; link1[] = {1,2}; link2[] = {2,4}; link3[] = {2,5}; @@ -62,7 +47,7 @@ link18[] = {15,9}; link19[] = {15,10}; link20[] = {16,19}; link21[] = {17,15}; -link22[] = {18,28}; +link22[] = {18,22}; link23[] = {19,20}; link24[] = {19,21}; link25[] = {19,23}; @@ -70,23 +55,8 @@ link26[] = {20,18}; link27[] = {21,8}; link28[] = {22,1}; link29[] = {23,13}; -link30[] = {24,25}; -link31[] = {25,27}; -link32[] = {26,1}; -link33[] = {27,30}; -link34[] = {28,24}; -link35[] = {29,34}; -link36[] = {30,29}; -link37[] = {31,35}; -link38[] = {32,36}; -link39[] = {33,38}; -link40[] = {34,31}; -link41[] = {35,32}; -link42[] = {36,33}; -link43[] = {37,22}; -link44[] = {38,37}; -globals[] = {0.000000,0,0,0,0,640,480,1,197,6316128,1,-531.517700,-94.375397,293.288269,-925.745911,317,884,1}; -window[] = {2,-1,-1,-1,-1,1134,104,1127,104,3,335}; +globals[] = {0.000000,0,0,0,0,640,480,1,173,6316128,1,-984.095642,949.039673,729.243164,-1090.662720,939,884,1}; +window[] = {2,-1,-1,-32000,-32000,794,182,1218,182,3,957}; *//*%FSM*/ class FSM { @@ -419,10 +389,10 @@ class FSM }; }; /*%FSM*/ - /*%FSM*/ - class Calc + /*%FSM*/ + class Create { - name = "Calc"; + name = "Create"; itemno = 18; init = /*%FSM*/"//--- We get the main information first (The teams, the groups and the positions)" \n "_return = (_town) call CTI_SE_FNC_SpawnTownResistance;" \n @@ -431,21 +401,63 @@ class FSM "_town_positions = _return select 2;" \n "" \n "_town setvariable [""CTI_TOWN_GROUPS"",_town_groups,true];" \n + "//--- Warn" \n + "//[[""CLIENT"",resistance], ""Client_OnMessageReceived"", [""town-hostilenear"", _town]] call CTI_CO_FNC_NetSend;" \n "" \n - "_size = count _town_groups; " \n "" \n - "_wait = time + 0.5;"/*%FSM*/; + "_town_vehicles_groups = [_town, resistance, _town_teams, _town_groups, _town_positions] call CTI_CO_FNC_CreateTownUnits;" \n + "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups];" \n + "" \n + "_town setvariable [""CTI_TOWN_GROUPS"",_town_vehicles_groups select 1,true];" \n + "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups select 0),true];" \n + "_town setVariable [""cti_town_mortars_units"",[],true];" \n + "_town setVariable [""cti_town_resistance_active"", true,true];" \n + "" \n + "" \n + "if ((missionNamespace getVariable 'CTI_SM_MORTARS')==1) then {" \n + " _mortars=[_town,_town_groups] call CTI_SM_Mortars_script;" \n + " [""CLIENT"", ""Client_Update_Mortars"",[_town,(_mortars select 2)]] call CTI_CO_FNC_NetSend;" \n + " _town setVariable [""cti_town_mortars"",(_mortars select 2),true];" \n + " _town setVariable [""cti_town_mortars_units"",(_mortars),true];" \n + "};" \n + "" \n + "_town setVariable [""cti_town_resistance_active"", true,true];" \n + "" \n + "if ( (missionNamespace getVariable 'CTI_SM_TCAS') <= (_town getVariable ""cti_town_value"")) then {" \n + " _town setVariable[""CTI_CAS"",(_town) call SM_TCAS_CREATE,true];" \n + "};" \n + "" \n + "if ((missionNamespace getVariable 'CTI_SM_MINES')==1) then {" \n + " [_town] call CTI_SM_Mines_script;" \n + "};" \n + "" \n + "if ((missionNamespace getVariable 'CTI_SM_SHIP')==1) then {" \n + " if (ISLAND == 2 || ISLAND == 3) then {" \n + " if ((_town getVariable ""cti_town_name"" == ""Makrynisi"") || (_town getVariable ""cti_town_name"" == ""Tuadua Island"") || (_town getVariable ""cti_town_name"" == ""Yani Islets"") || (_town getVariable ""cti_town_name"" == ""Ile Sainte-Marie"") || (_town getVariable ""cti_town_name"" == ""Northern Island"") || (_town getVariable ""cti_town_name"" == ""Rock Island"")) then {_town setVariable [""CTI_Ship"",(_town) call SM_TShip_CREATE,true];};" \n + " };" \n + "};" \n + "" \n + "if ( _town in (CTI_WEST getvariable ""CTI_ACTIVE"")) then {" \n + " [[""CLIENT"",west],""SM_message"",format [localize ""STR_TownActive"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n + "};" \n + "" \n + "if ( _town in (CTI_EAST getvariable ""CTI_ACTIVE"")) then {" \n + " [[""CLIENT"",east],""SM_message"",format [localize ""STR_TownActive"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n + "};" \n + "" \n + "_town setVariable [""cti_town_timeofspawn"", time,true];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { - /*%FSM*/ - class Wait + /*%FSM*/ + class Cycle { - itemno = 28; + itemno = 1; priority = 1.000000; - to="Create_G1"; + to="Resistance_hold"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _wait"/*%FSM*/; + condition=/*%FSM*/"time > _ncycle" \n + "// && !( _town getVariable ""cti_town_disactivate"");"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -477,7 +489,7 @@ class FSM { itemno = 20; priority = 1.000000; - to="Calc"; + to="Create"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"_sideID == CTI_RESISTANCE_ID &&!(_town getVariable ""cti_town_resistance_active"") &&(_town in ((CTI_WEST getvariable ""CTI_ACTIVE"") + (CTI_EAST getvariable ""CTI_ACTIVE"") )) && !(_town getVariable ""cti_town_occupation_active"")" \n ""/*%FSM*/; @@ -498,251 +510,6 @@ class FSM }; }; /*%FSM*/ - /*%FSM*/ - class Create_G1 - { - name = "Create_G1"; - itemno = 24; - init = /*%FSM*/"if (_size > 0) then {" \n - "_town_vehicles_groups_1 = [_town, resistance, [_town_teams select 0], [_town_groups select 0], [_town_positions select 0]] call CTI_CO_FNC_CreateTownUnits;" \n - "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups_1];" \n - "" \n - "_town setvariable [""CTI_TOWN_GROUPS"",_town_vehicles_groups_1 select 1,true];" \n - "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups_1 select 0),true];" \n - "" \n - "_wait = time + 0.5;" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wait - { - itemno = 25; - priority = 1.000000; - to="Create_G2"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _wait"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Create_G2 - { - name = "Create_G2"; - itemno = 27; - init = /*%FSM*/"if (_size > 1) then {" \n - "_town_vehicles_groups_2 = [_town, resistance, [_town_teams select 1], [_town_groups select 1], [_town_positions select 1]] call CTI_CO_FNC_CreateTownUnits;" \n - "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups_2];" \n - "" \n - "_town setvariable [""CTI_TOWN_GROUPS"",(_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_2 select 1),true];" \n - "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups_2 select 0),true];" \n - "" \n - "_wait = time + 0.5;" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wait - { - itemno = 30; - priority = 1.000000; - to="Create_G3"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _wait"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Create_G3 - { - name = "Create_G3"; - itemno = 29; - init = /*%FSM*/"if (_size > 2) then {" \n - "_town_vehicles_groups_3 = [_town, resistance, [_town_teams select 2], [_town_groups select 2], [_town_positions select 2]] call CTI_CO_FNC_CreateTownUnits;" \n - "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups_3];" \n - "" \n - "_town setvariable [""CTI_TOWN_GROUPS"",(_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_3 select 1),true];" \n - "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups_3 select 0),true];" \n - "" \n - "_wait = time + 0.5;" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wait - { - itemno = 34; - priority = 1.000000; - to="Create_G4"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _wait"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Create_G4 - { - name = "Create_G4"; - itemno = 31; - init = /*%FSM*/"if (_size > 3) then {" \n - "_town_vehicles_groups_4 = [_town, resistance, [_town_teams select 3], [_town_groups select 3], [_town_positions select 3]] call CTI_CO_FNC_CreateTownUnits;" \n - "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups_4];" \n - "" \n - "_town setvariable [""CTI_TOWN_GROUPS"",(_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_4 select 1),true];" \n - "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups_4 select 0),true];" \n - "" \n - "_wait = time + 0.5;" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wait - { - itemno = 35; - priority = 1.000000; - to="Create_G5"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _wait"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Create_G5 - { - name = "Create_G5"; - itemno = 32; - init = /*%FSM*/"if (_size > 4) then {" \n - "_town_vehicles_groups_5 = [_town, resistance, [_town_teams select 4], [_town_groups select 4], [_town_positions select 4]] call CTI_CO_FNC_CreateTownUnits;" \n - "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups_5];" \n - "" \n - "_town setvariable [""CTI_TOWN_GROUPS"",(_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_5 select 1),true];" \n - "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups_5 select 0),true];" \n - "" \n - "_wait = time + 0.5;" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wait - { - itemno = 36; - priority = 1.000000; - to="Create_G6"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _wait"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Create_G6 - { - name = "Create_G6"; - itemno = 33; - init = /*%FSM*/"if (_size > 5) then {" \n - "_town_vehicles_groups_6 = [_town, resistance, [_town_teams select 5], [_town_groups select 5], [_town_positions select 5]] call CTI_CO_FNC_CreateTownUnits;" \n - "diag_log format["":: %1 :: %2"",(_town getVariable ""cti_town_name""),_town_vehicles_groups_6];" \n - "" \n - "_town setvariable [""CTI_TOWN_GROUPS"",(_town getVariable ""CTI_TOWN_GROUPS"") + (_town_vehicles_groups_6 select 1),true];" \n - "_town setVariable [""cti_town_resistance_active_vehicles"", (_town getVariable ""cti_town_resistance_active_vehicles"") + (_town_vehicles_groups_6 select 0),true];" \n - "" \n - "_wait = time + 0.5;" \n - "};" \n - "" \n - "_town setVariable [""cti_town_resistance_active"", true,true];" \n - "" \n - "//diag_log (_town getVariable ""CTI_TOWN_GROUPS"");"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wait - { - itemno = 38; - priority = 1.000000; - to="Create_C__M__M_"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _wait"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Create_C__M__M_ - { - name = "Create_C__M__M_"; - itemno = 37; - init = /*%FSM*/"_town setVariable [""cti_town_mortars_units"",[],true];" \n - "" \n - "if ((missionNamespace getVariable 'CTI_SM_MORTARS')==1) then {" \n - " _mortars=[_town,_town_groups] call CTI_SM_Mortars_script;" \n - " [""CLIENT"", ""Client_Update_Mortars"",[_town,(_mortars select 2)]] call CTI_CO_FNC_NetSend;" \n - " _town setVariable [""cti_town_mortars"",(_mortars select 2),true];" \n - " _town setVariable [""cti_town_mortars_units"",(_mortars),true];" \n - "};" \n - "" \n - "if ( (missionNamespace getVariable 'CTI_SM_TCAS') <= (_town getVariable ""cti_town_value"")) then {" \n - " _town setVariable[""CTI_CAS"",(_town) call SM_TCAS_CREATE,true];" \n - "};" \n - "" \n - "if ((missionNamespace getVariable 'CTI_SM_MINES')==1) then {" \n - " [_town] call CTI_SM_Mines_script;" \n - "};" \n - "" \n - "if ((missionNamespace getVariable 'CTI_SM_SHIP')==1) then {" \n - " if (ISLAND == 2 || ISLAND == 3) then {" \n - " if ((_town getVariable ""cti_town_name"" == ""Makrynisi"") || (_town getVariable ""cti_town_name"" == ""Tuadua Island"") || (_town getVariable ""cti_town_name"" == ""Yani Islets"") || (_town getVariable ""cti_town_name"" == ""Ile Sainte-Marie"") || (_town getVariable ""cti_town_name"" == ""Northern Island"") || (_town getVariable ""cti_town_name"" == ""Rock Island"")) then {_town setVariable [""CTI_Ship"",(_town) call SM_TShip_CREATE,true];};" \n - " };" \n - "};" \n - "" \n - "if ( _town in (CTI_WEST getvariable ""CTI_ACTIVE"")) then {" \n - " [[""CLIENT"",west],""SM_message"",format [localize ""STR_TownActive"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n - "};" \n - "" \n - "if ( _town in (CTI_EAST getvariable ""CTI_ACTIVE"")) then {" \n - " [[""CLIENT"",east],""SM_message"",format [localize ""STR_TownActive"",(_town getVariable ""cti_town_name"")]] call CTI_CO_FNC_NetSend ;" \n - "};" \n - "" \n - "_town setVariable [""cti_town_timeofspawn"", time,true];"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - itemno = 1; - priority = 1.000000; - to="Resistance_hold"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle" \n - "// && !( _town getVariable ""cti_town_disactivate"");"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ }; initState="Start_FSM"; finalStates[] = diff --git a/Server/FSM/town_patrol.fsm b/Server/FSM/town_patrol.fsm index 19cb58e1f..4be1e9965 100644 --- a/Server/FSM/town_patrol.fsm +++ b/Server/FSM/town_patrol.fsm @@ -3,260 +3,225 @@ /* item0[] = {"Init",0,250,-25.000000,-475.000000,75.000000,-425.000000,0.000000,"Init"}; item1[] = {"Cycle",4,218,125.000000,-475.000000,225.000000,-425.000000,0.000000,"Cycle"}; -item2[] = {"Check",2,250,275.000031,-473.715515,375.000031,-423.715515,0.000000,"Check"}; +item2[] = {"Check",2,250,275.000000,-475.000000,375.000000,-425.000000,0.000000,"Check"}; item3[] = {"Renew_Path",4,218,275.000000,-575.000000,375.000000,-525.000000,3.000000,"Renew" \n "Path"}; item4[] = {"Process_Action",4,218,275.000000,-375.000000,375.000000,-325.000000,2.000000,"Process" \n "Action"}; item5[] = {"Done",8,218,425.000000,-475.000000,525.000000,-425.000000,0.000000,"Done"}; item6[] = {"End",1,250,575.000000,-475.000000,675.000000,-425.000000,0.000000,"End"}; -item7[] = {"Patrol",2,250,125.000000,-575.000000,225.000000,-525.000000,0.000000,"Patrol"}; -item8[] = {"Defend",2,4346,125.000000,-375.000000,225.000000,-325.000000,0.000000,"Defend"}; +item7[] = {"Patrol",2,4346,125.000000,-575.000000,225.000000,-525.000000,0.000000,"Patrol"}; +item8[] = {"Defend",2,250,125.000000,-375.000000,225.000000,-325.000000,0.000000,"Defend"}; +item9[] = {"_",4,218,450.000000,-300.000000,550.000000,-250.000000,1.000000,""}; +item10[] = {"SKIP",2,250,-25.000000,-300.000000,75.000000,-250.000000,0.000000,"SKIP"}; link0[] = {0,1}; link1[] = {1,2}; link2[] = {2,3}; link3[] = {2,4}; link4[] = {2,5}; -link5[] = {3,7}; -link6[] = {4,8}; -link7[] = {5,6}; -link8[] = {7,1}; -link9[] = {8,1}; -globals[] = {0.000000,0,0,0,0,640,480,1,49,6316128,1,-65.822006,695.793152,454.302429,-733.118652,567,884,1}; -window[] = {2,-1,-1,-32000,-32000,958,104,1564,104,3,585}; +link5[] = {2,9}; +link6[] = {3,7}; +link7[] = {4,8}; +link8[] = {5,6}; +link9[] = {7,1}; +link10[] = {8,1}; +link11[] = {9,10}; +link12[] = {10,1}; +globals[] = {25.000000,1,0,0,0,640,480,1,45,6316128,1,-49.166565,679.138794,-34.083618,-705.564575,769,709,1}; +window[] = {0,-1,-1,-1,-1,961,10,1470,107,1,787}; *//*%FSM*/ class FSM { - fsmName = "town_patrol.fsm"; - class States + fsmName = "town_patrol.fsm"; + class States + { + /*%FSM*/ + class Init + { + name = "Init"; + init = /*%FSM*/"_town = _this select 0;" \n + "_team = _this select 1;" \n + "_sideID = _this select 2;" \n + "" \n + "_ncycle = time + random(5) ;" \n + "" \n + "_last_action = """";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle { - /*%FSM*/ - class Init - { - name = "Init"; - itemno = 0; - init = /*%FSM*/"_town = _this select 0;" \n - "_team = _this select 1;" \n - "_sideID = _this select 2;" \n - "" \n - "_ncycle = time + random [0,5,1];" \n - "" \n - "_roads_town = [];" \n - "_roads_near_team = [];" \n - "_wp0 = [];" \n - "_veh = false;" \n - "_current_wp = -1;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - itemno = 1; - priority = 0.000000; - to="Check"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Check - { - name = "Check"; - itemno = 2; - init = /*%FSM*/"_aliveTeam = if ({alive _x} count units _team < 1 || isNull _team) then {false} else {true};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Renew_Path - { - itemno = 3; - priority = 3.000000; - to="Patrol"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"((_town getVariable 'cti_town_capture') >= CTI_TOWNS_CAPTURE_VALUE_CEIL) && _aliveTeam && _sideID == (_town getVariable 'cti_town_sideID')"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Process_Action - { - itemno = 4; - priority = 2.000000; - to="Defend"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_aliveTeam && ( ((_town getVariable 'cti_town_capture') < CTI_TOWNS_CAPTURE_VALUE_CEIL) || _sideID != (_town getVariable 'cti_town_sideID') )"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Done - { - itemno = 5; - priority = 0.000000; - to="End"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class End - { - name = "End"; - itemno = 6; - init = /*%FSM*/""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - }; - }; - /*%FSM*/ - /*%FSM*/ - class Patrol - { - name = "Patrol"; - itemno = 7; - init = /*%FSM*/"_ncycle = time + 10;" \n - "" \n - "// ais usually not complete defend box's waypoint types so need remove or change" \n - "if (waypointType [_team, currentWaypoint _team] != ""MOVE"") then {{_x setwaypointtype ""MOVE""} forEach (waypoints _team);};" \n - "" \n - "// need wp or not" \n - "if ((currentWaypoint _team) != _current_wp) then {" \n - "" \n - "// remove all waypoints" \n - "{deleteWaypoint [_team, _forEachIndex];} forEach (waypoints _team);" \n - "" \n - "// position of team leader" \n - "_pos = getPos (leader _team);" \n - "" \n - "// vehicle?" \n - "if (vehicle (leader _team) != leader _team) then {_veh = true;} else {_veh = false;};" \n - "" \n - "// roads near leader 60-80m inside patrol range" \n - "_roads_town = (getPos _town) nearRoads CTI_TOWNS_PATROL_RANGE;" \n - "" \n - "if (!_veh) then {" \n - " _roads_near_team = ((_pos nearRoads 80) - (_pos nearRoads 60));" \n - " } else {" \n - " _roads_near_team = ((_pos nearRoads 140) - (_pos nearRoads 100));" \n - " };" \n - "" \n - "_roads = (_roads_town arrayIntersect _roads_near_team);" \n - "" \n - "// make waypoint" \n - "if (count _roads > 0) then {" \n - " _wp0 = _team addWaypoint [getPos (selectRandom _roads), 3];" \n - " } else {" \n - " _wp0 = _team addWaypoint [getPos _town, CTI_TOWNS_PATROL_RANGE];" \n - " };" \n - "" \n - "// set wp 0.5m height (because sometimes ais can't find path on ground or inside object)" \n - "_wp0 setWaypointPosition [[(waypointPosition _wp0) select 0, (waypointPosition _wp0) select 1, 0.5], 0];" \n - "" \n - "_wp0 setwaypointtype ""MOVE"";" \n - "_team setCurrentWaypoint _wp0;" \n - "_current_wp = (currentWaypoint _team);" \n - "" \n - "_team setCombatMode ""RED"";" \n - "_team setBehaviour ""AWARE"";" \n - "_team setSpeedMode ""LIMITED"";" \n - "" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - itemno = 1; - priority = 0.000000; - to="Check"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Defend - { - name = "Defend"; - itemno = 8; - init = /*%FSM*/"_ncycle = time + 10;" \n - "" \n - "if ((currentWaypoint _team) != _current_wp) then {" \n - "" \n - "if (count (waypoints _team) > 0) then" \n - " {" \n - " {deleteWaypoint [_team, _forEachIndex];} forEach (waypoints _team);" \n - " };" \n - "" \n - "_pos = getPos (leader _team);" \n - "" \n - "if (vehicle (leader _team) != leader _team) then {_veh = true;} else {_veh = false;};" \n - "" \n - "// roads near flag (50m)" \n - "_roads_town = (getPos _town) nearRoads (CTI_TOWNS_PATROL_RANGE / 4);" \n - "" \n - "if (!_veh) then {" \n - " _roads_near_team = ((_pos nearRoads 100) - (_pos nearRoads 30));" \n - " } else {" \n - " _roads_near_team = ((_pos nearRoads 140) - (_pos nearRoads 50));" \n - " };" \n - "" \n - "_roads = (_roads_town arrayIntersect _roads_near_team);" \n - "" \n - "// make waypoint" \n - "if (count _roads > 0) then {" \n - " _wp0 = _team addWaypoint [getPos (selectRandom _roads), 3];" \n - " } else {" \n - " _wp0 = _team addWaypoint [getPos _town, (CTI_TOWNS_PATROL_RANGE / 4)];" \n - " };" \n - "" \n - "_wp0 setWaypointPosition [[(waypointPosition _wp0) select 0, (waypointPosition _wp0) select 1, 0.5], 0];" \n - "" \n - "_types = [""HOLD"", ""SENTRY"", ""GUARD"", ""SAD""];" \n - "_wp0 setwaypointtype (selectRandom _types);" \n - "_team setCurrentWaypoint _wp0;" \n - "_current_wp = (currentWaypoint _team);" \n - "" \n - "_team setCombatMode ""RED"";" \n - "_team setBehaviour ""COMBAT"";" \n - "_team setSpeedMode ""NORMAL"";" \n - "" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - itemno = 1; - priority = 0.000000; - to="Check"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ + priority = 0.000000; + to="Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; }; - initState="Init"; - finalStates[] = + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check + { + name = "Check"; + init = /*%FSM*/"_aliveTeam = if ({alive _x} count units _team < 1 || isNull _team) then {false} else {true};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Renew_Path { - "End", + priority = 3.000000; + to="Patrol"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((_town getVariable 'cti_town_capture') >= CTI_TOWNS_CAPTURE_VALUE_CEIL) && _last_action != ""patrol"" && _aliveTeam && _sideID == (_town getVariable 'cti_town_sideID')"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; }; + /*%FSM*/ + /*%FSM*/ + class Process_Action + { + priority = 2.000000; + to="Defend"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_aliveTeam && _last_action != ""defend"" && ( ( (_town getVariable 'cti_town_capture') < CTI_TOWNS_CAPTURE_VALUE_CEIL ) || _sideID != (_town getVariable 'cti_town_sideID') )"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class _ + { + priority = 1.000000; + to="SKIP"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_aliveTeam "/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Done + { + priority = 0.000000; + to="End"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class End + { + name = "End"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Patrol + { + name = "Patrol"; + init = /*%FSM*/"_ncycle = time +20;" \n + "" \n + "while {(count (waypoints _team)) > 0} do" \n + " {" \n + " deleteWaypoint ((waypoints _team) select 0);" \n + " };" \n + "_wp0= _team addwaypoint [_town,CTI_TOWNS_PATROL_RANGE];" \n + "_wp0 setwaypointtype ""MOVE"";" \n + "for '_i' from 1 to CTI_TOWNS_PATROL_HOPS do {" \n + " _wp= _team addwaypoint [_town,CTI_TOWNS_PATROL_RANGE];" \n + " _wp setwaypointtype ""MOVE"";" \n + "};" \n + "_wp = _team addwaypoint [_town,CTI_TOWNS_PATROL_RANGE];" \n + "_wp setwaypointtype ""CYCLE"";" \n + "_team setCurrentWaypoint _wp0;" \n + "_last_action = ""patrol"";" \n + "_team setCombatMode ""RED"";" \n + "_team setBehaviour ""AWARE"";" \n + "_team setSpeedMode ""LIMITED"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + priority = 0.000000; + to="Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Defend + { + name = "Defend"; + init = /*%FSM*/"_ncycle = time +20;" \n + "" \n + "while {(count (waypoints _team)) > 0} do" \n + " {" \n + " deleteWaypoint ((waypoints _team) select 0);" \n + " };" \n + "" \n + "_wp0= _team addwaypoint [_town,25];" \n + "_wp0 setwaypointtype ""HOLD"";" \n + "_team setCurrentWaypoint _wp0;" \n + "_last_action = ""defend"";" \n + "_team setCombatMode ""RED"";" \n + "_team setBehaviour ""COMBAT"";" \n + "_team setSpeedMode ""NORMAL"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + priority = 0.000000; + to="Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class SKIP + { + name = "SKIP"; + init = /*%FSM*/"_ncycle = time +30;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + priority = 0.000000; + to="Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="Init"; + finalStates[] = + { + "End" + }; }; /*%FSM*/ \ No newline at end of file From 1a6478c76483c10b90d55e7433923e56844ae6ba Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 29 Jun 2019 14:44:33 +0200 Subject: [PATCH 109/267] tutorial area - mark tutorial area like other islands - destroy vehicle only if under 100m AGL (no enough time for land and fly away) --- Common/Functions/Common_CreateVehicle.sqf | 2 +- mission.sqm | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index b27017425..b3bdfd3d8 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -347,7 +347,7 @@ _vehicle setRepairCargo 0; _vehicle spawn { while { !isNull _this && alive _this && ! cti_gameover } do { sleep 20; - if ((([_this,getMarkerPos "CTI_TUTORIAL"] call BIS_fnc_distance2D) < 1000) && !isNull _this && alive _this) then {_this setDamage 1}; + if ((([_this,getMarkerPos "CTI_TUTORIAL"] call BIS_fnc_distance2D) < 1000) && !isNull _this && alive _this && (getPos _this select 2) < 100) then {_this setDamage 1}; }; }; diff --git a/mission.sqm b/mission.sqm index bf5e85d48..2ed5d17bc 100644 --- a/mission.sqm +++ b/mission.sqm @@ -8,7 +8,7 @@ class EditorData toggles=1025; class ItemIDProvider { - nextID=178; + nextID=179; }; class MarkerIDProvider { @@ -123,7 +123,7 @@ class Mission }; class Entities { - items=124; + items=125; class Item0 { dataType="Marker"; @@ -3046,6 +3046,20 @@ class Mission id=177; atlOffset=191.07422; }; + class Item124 + { + dataType="Marker"; + position[]={8457.834,105.3189,25118.711}; + name="marker_0"; + text="Welcome Area (Do not enter)"; + markerType="ELLIPSE"; + type="rectangle"; + colorName="ColorCIV"; + fillName="DiagGrid"; + a=1000; + b=1000; + id=178; + }; }; class Connections { From ae6cf0b656f7df60d9504e7fcd0b88283b4d816f Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Wed, 24 Jul 2019 18:49:42 +0200 Subject: [PATCH 110/267] Prenvent team detection using mortars YOu now need to be less that town activation range to see mortar area from that town --- Addons/Strat_mode/FSM/town_markers.fsm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Addons/Strat_mode/FSM/town_markers.fsm b/Addons/Strat_mode/FSM/town_markers.fsm index de2732474..7f2b08782 100644 --- a/Addons/Strat_mode/FSM/town_markers.fsm +++ b/Addons/Strat_mode/FSM/town_markers.fsm @@ -12,7 +12,7 @@ link2[] = {2,1}; link3[] = {2,4}; link4[] = {4,3}; globals[] = {0.000000,0,0,0,0,640,480,1,133,6316128,1,-422.283691,326.652069,345.310455,-698.696411,632,884,1}; -window[] = {2,-1,-1,-32000,-32000,794,182,1218,182,3,650}; +window[] = {2,-1,-1,-1,-1,768,156,1192,156,3,650}; *//*%FSM*/ class FSM { @@ -85,8 +85,13 @@ class FSM " " \n " if (CTI_RESISTANCE_ID == _sideID) then {" \n " _marker_area setMarkerColorLocal ""ColorWhite"";" \n - " if (markerAlpha _mortar == 0) then { _mortar setMarkerAlphaLocal 1 };" \n - " if (markerAlpha _mortar_zone == 0) then { _mortar_zone setMarkerAlphaLocal 1 };" \n + " if (player distance _town <= CTI_TOWNS_OCCUPATION_DETECTION_RANGE) then {" \n + " if (markerAlpha _mortar == 0) then { _mortar setMarkerAlphaLocal 1 };" \n + " if (markerAlpha _mortar_zone == 0) then { _mortar_zone setMarkerAlphaLocal 1 };" \n + " } else { " \n + " if (markerAlpha _mortar != 0) then { _mortar setMarkerAlphaLocal 0 };" \n + " if (markerAlpha _mortar_zone != 0) then { _mortar_zone setMarkerAlphaLocal 0 };" \n + " };" \n " } else { " \n " if (markerAlpha _mortar != 0) then { _mortar setMarkerAlphaLocal 0 };" \n " if (markerAlpha _mortar_zone != 0) then { _mortar_zone setMarkerAlphaLocal 0 };" \n From d1684f272ad6f7795768ef4d0de057d35d880c38 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 1 Aug 2019 12:15:53 +0200 Subject: [PATCH 111/267] Livonia i know... its not "island" :) --- Addons/Strat_mode/init.sqf | 5 ++++- init.sqf | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index c46a9bcdd..30f74573d 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -333,7 +333,10 @@ if (CTI_IsServer) then { _nigth_ratio=10/CTI_WEATHER_FAST_NIGTH; _sunrise = 5; _sunset = 19; - if (ISLAND == 3) then {_sunrise = 7; _sunset = 18;}; + switch (true) do { + case (ISLAND == 3): {_sunrise = 7; _sunset = 18;}; + case (ISLAND == 6): {_sunrise = 4; _sunset = 20;}; + }; while {!CTI_Gameover} do { if (daytime > _sunrise && daytime < _sunset) then { if (timeMultiplier != _day_ratio) then {setTimeMultiplier _day_ratio;}; diff --git a/init.sqf b/init.sqf index 804a49ac4..93714927d 100644 --- a/init.sqf +++ b/init.sqf @@ -4,7 +4,7 @@ setObjectViewDistance 4000; NET_LOG=False; -ISLAND = 2; //--- 1: Stratis, 2: Altis, 3: Tanoa, 4: Malden, 5: VR +ISLAND = 2; //--- 1: Stratis, 2: Altis, 3: Tanoa, 4: Malden, 5: VR, 6: Livonia //--- Early definition, will be override later on in the init files. CTI_P_SideJoined = civilian; From 5c07a941fa66dc2e68bd3b703693008c207975be Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 1 Aug 2019 20:19:48 +0200 Subject: [PATCH 112/267] Add files via upload --- banner.jpg | Bin 64469 -> 35923 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/banner.jpg b/banner.jpg index 6a148103a8c56f294c973de2b36fd8a9afaca259..59aecd9efd756c202185b9cffc22144e7950b81c 100644 GIT binary patch literal 35923 zcmbTd2UwHO@-P|%L=Z%fB3H|6DSe*B-j+|8RGss2sn?2Jeaw;k+vNz>r<>jR*5YoOuUVaWxX)j-)f6@3ik^3&bPA|aE{lMN{ z{}6MbH2#06{hx&UTk|jJ{*6zs_V>jdlNVqY3gN#LG#-0Dmwx8r>Zd0Af2pEyP5%#u zrKyXr_cQ;0VJOT01N+}E{|naY{|@%QU;Y>D{{nsD1@_a>_i}Rohxq?i^ItgH6cNl_ zUikjy{%`);KZR@ZGIIYQ|2N2gVd^|{@O6I(hW-!s|CIkjfuaZhQ23v!{{j6kDq7yp zykD46RK-Q(iI%O**uAaVu z+2beX7M51lPR=f_Zth?YUqAnVKxoj*@HY{WQPDB6DXH($(lg#?W)&0`6_=ELD*Iep zSKrWxXlich>h9_7>;E?JeSG5Q|9Jx8 zt;QFJ#o0%p_fRH38{RwoENY6J*QM_eee@+)er9_kM6!-qdom?#tTDYsTK`?M#VxtO zAlEFkLU#FN8)%V!t(W7 zndGR^FnDschm|B!GG(>BqUvzlH}`hKfZqp%+IF`*+&Z$=B+mZI1WBwqB)xC3=$P8@ z;)_vMD(V2hvoMvf8U;ArL?!_N1FNA9@)CE3VEIZ z4$WSF9cd5wfUP6b%XcWA0m8JP7<|=~#x>D!&&3b^e$uktpkGLLPyZi{W8R!Pi!_#C z^lP@9yTA8ez7nK zU4FFyA+d!oBk^#JBtM-3^-?{aFbE#tFiiCjcA!sAW3l=X9C$gFet@B!HUN1L)lRA; zyxN{nLxXE2iRXrvee9M&UG5&%1#4EcUcLtzI_5M{( zrpI967_oRY=obPCBgFGT^=sa*PS?5#e0|uCVVzGZv9VD^?REHz&&H3lM4YRL#rrNg zdkrlm(*?f?Rk7l;A(Ha?=Z;;I7JEZpQ)m)SqsV+D)6?8gY1j+GVkH!1L@>kVte*s1 z5;UdZ2sOy+b4I@x3u>fVQ!oR;x87=99?em)G*>qWRU zsaV-A-do8%8(dIOZsD&4$bgiB~ z(I&JL$)};=VSncg@CK+wPMgfT_PmjP1QL zJjf7u)50_XY2X=}96AodYBPrcYX_m-on*n&`ZhY|zFnF%d5_to@FHx;vJ&%)^e$f~ zj?WW8Cbyg=#L`6^zg~T}qPt2O!=jZ#)z=boXV>A9LG0hRGMU&~nM7Rm9%-`y9_fgG zJQw@#hfZ#w_fA%8Or^A}R?C!|rKjg=Q*w*2yJg<@)|&+DG?zgmyI50wd+o|}IIryhBg$~30%viT##G)SzU*6KcOMt`ewwAp z75lJN({_Q~vnUahJo|~D+i3{PzC9uUHm1 zD`2GEw^j`JC+o;l7augXvw(8*@n?KbRx_X%xQiTaR=2zB_v#@=lG#*e1TNMk|71!H^C23?4}mxeA=p~fJo(T9N(gQPsYS)(f3}vH;Yd0W5rM0EU3YlsU4GTrP=jb!ySbc z^G7yCX{6nN?R|}8fE%OYGkiLMg`IX&fpDhGVr&BH>&eBGv?8e;%)zCXU&>k>IxEY0=#% zEf(gtCKw?j+K9Lu7qY3~;&@&@IX&U)9IMklkj&%TJ4n3z8%C8ltrgWdJugoYV|5RA zErV!^Kd?T{bV|{>p7ibUahTN8-Q}9~hopehIyHUVCLTu6#g06jfB}mMZVN+cr@65T zzuXcb-NDagWW<`mBK|?vnv)!g)Cu)EN}w0^`XbNYSuCOU*D~@?9EeZX?__Mx5sl!T z%6%gd)|cbKx$jsCDLXP6{)2#t}hq&)QzS8 zg5~60y1v%>!A{z3qCpE!JJA@_f2i0!kv{Vi@=!@=LG zC{@(7!^zESl%uU0|KhYs&5n3;9mt+Py5+}rkBFg*sA?0c@UV{eH4K8d`E4AXpDRpb zcX?Z|Qe<_W4&Yzt;+54nnzTJPlmZJ?{rNUbZcsCPnc*rDX~8sm5KKA+8cXBUsEAwy)PjAs+ajS& z5_i$2X4*e)HO#E+2ma|X$CAmd!OM}V-}VN*$T#IBx0zYV^GuX^`Uj?=79p>Xlgx*Vdf0$f%J!$Z33u-IWpRcKVBQ1~ZH}&ed&N2+&00I@*U*MG zADCJfYxO*qv_`*P0%D)!p*Fk|fY^sdzC9rN!)>$fP$sNQhQKQ|PX9vt0k>{ggs=k`2p{7a+DRL6*=%Fy-ObVH5^CVJ3WfzfKQMg-OK!!7b`^crnx^n19=PWvE zJIg!nLd0s+)=5NemOapmT4lxOn!V>Lx^iGy(o~`VuGmx?z`a`xcqLpD44L^;5zVrirV2 zG^utsJ03pM!rtCj-$(V+*}9vl1tAn%T2`G*0^zd1!m;K_1ev5HlEYG*Du^v~1X+s? zJG2XYFe(VJ+T;$14QKcyU&(fqLN6DucAX^>o!+5x`X0H^p2vf9M*kABIQ>B4b6N-n zUfh_XctlgnwXNj&TAR6faF}zmWm+WuS0Af|%J5yGt}}qc2&%9Tgf&4Yj6*j&1IT=n zGO`M&51eM>YMP~Sr?NI*ngB)+-%Bg53HUNqJCniqg}1J9N2qnz=~S>JDK@FI>ZlgXD@D zoohi(F28&FIDG~NgUE%%XV7pm{Vj?aJUz{P7RvW)t;M8wHzwocPa-Gir^0*xi+Rk} z>isiLSyQU-pec|z=#u7*d-n~+ZG$4pSI`taw=szoxOxU~@#cZC*I?mYz^F3-Bg`Fd zs{fIo+Fe;}1FrOZF2nWloU7FSx0+0QxZ<~%bF~1?Wtbr@mC_1NWMhH!uq)M&Jcdx- zSpr>W<2=Kdtp5iyBAr%!?Uz_94x94qOyP4&rg~BrF0BBbe16nAVK}26XlQ=w#lN#R zHPkSplwyFMDxF8O!xt)%^}1X86nXRslGWBEgDC}MH2P{=;1ZK5la92~FozxgOk0`5 z{mXB(Q+9mCUGC~jhXHz(@yVz88WQkM1*8Wu0$7u`)zRV>btnnp6 zoiAlGGd@bO70Q%;6L=vuJM9VgUE@ikJc`M6I(Dc+b*)q{QnqgnxIE!>`X|eiBFYF=o7F8i*w!&DDAX^&JqLBV(uRdij_`tK2;$%b6 zvGeSIskH(dqI%<27d_EEf)nWcW7Ry)s<5|YnduhuA|~R}cjsAvl=cJf z!SDE%fL%{1+oI!lQ!R>Xb4aaq6M^+1A}fVpan_}%GO2WpYo~>39$BBQ^*B_r#>A{r zJd0Ke-4!-n8L5_5HF~&7gQwAO2>fzr7qTHREL0lmH9vf0iM2Ze%wif^xgvLzbYk5t z6CbM?uQ$DDtyMYKVuI=>Gic$QC~hcDkg_&pS6n;1q0nTF(wmT$o| zib6A!RLfvugv>?0d#XUT89P0s!?f3v%9Q&e&r|dU{aF$h*|~M>QbaM$!AZQ}03=pF z#D<~=-2#zkfCk;IGXR#ZtApvw#2-R_W1mrQf2jE6%9GrcDrwU`*OWQO=U?uLXfyos zDo5&T2?B%|{Li5lC#=#?SyTX$h3D(mX#fxd`^yi^kZQ9$>H#fw{) zs6BsE@#)3@7n*Z#5@JeFzoD1~?=2*br*G=S?+&a(38(uCUaz>h$Y{uB`nx8_W<;Xk zb7abS8i}wA=SnBEgNqJrXwwQgb_-iK%gu>NUpmf*P6}Lv(HFrxHGvQlYLfc6O=ru> zeCnbsjeAz#`|}^*zJbb_&)phKFZYahvrl|AX84fssz*ST03zDK{u);;yi*$fEKVS1 zb~#iYHy!bebYqE+RnM>7MwtVT*w>ZPXRmmakK(PMnzcNBKP(5L?j?E>zL2}?V1USx zZhQw*3oe5s#%bYW^Q|Rqa;=um^ zn7zP6;LFmml6FXM9`>R4dGbi^bwZ3Ajv60!noF`HDi3|!ur>)N)57FN6RVjHWO;O5 z*!Huprp&tB&eC805aWN1SN=6&6B~y|5z??`_@+9-N+C3Mu|vdaV;_>@F>N3QL1iAD z77m*)PPwFL`(q@9s1oJY^Xd^Kwsj;}Ad(vqxp}-cNes^#o(acY zXE9RPzxez|lhe6;2`k_FWbIv?*OB2c>ZM@)YRil@S}cI<_G=p5m=}#)NCjbafHN5; zl(s8a2Xc0Zf;Mwi?BI{a9e#SjfbK^EE{PD!okvUhRo4=QS>FlYuZ`$`Z;g};y-vD6 z*&zkfnpS(Vbg>!%=@3CSO)5%O-w-5f|JYMV8K^l|uoK|aaQ9ITfR24#pdo6zW@!X< z3BA~+AyPN$hXO`)T&l$y$3TiTr5;_Bv?Ge7{z$nu(fq=$6Y%zCc`UBFO=EYewA|ay zt}X2V^xQqIaD#-JJndmCJ1P?|6MnC2alJOUnd7#TYjQNhXLY|0KP_F zAz?-*WPqen{juXRNwltJe6gc$@6fO;l6&=5^J82Z=z$weZivr#`&KnIcN#oIC8Iujo3W(KCegasor666*T#2(h0K`XMxJeb)Z9)8eKGqNX8o zN_MAU0r4}}1~*V{p~RVfOZSh}oEF3%(A?0JBA-0pzdFbQjUlcHM{3W@7pJ`v4!5?y z+B7=xB%w|7QjJnxUJkgnpO-QbzOT3is&P>XrC-STf-`NHmap@yw4MSi;t>;ri|^@OS}HaoSI*qq043(D(6ep6n5cx zzBk9MWTFr>kmN|QNQ&Fn3G_qHm@No|ll#5>%M~)FtxIEJ52XxHy#a5FILw!2c57$1 zTibu}MbEt&S4eE`J$)N`a~*kJO(lrA6CRDev`sRqPPkvOx_Ic3HPR!XXSv>xH9PI>OO%#WOI`JCxh3N^Qj&CB**D-&}Fi~I$5da6#vVskVf}8ozM)j zP4X*D`=c$?#w=@i11O_6;`OB8k@-1%1hHUi^tO%3M)swwD^hGGuh2!MUhdsa`;7GT z@m0S^+A#esTDC`b&%6IUz!_qDNTuUm@QQIPOZ+3Xf@`cepy2=E8RGf}iDtOTv%%N6 zE`_{v+aaMi-Id{Up|70UQ)cVxl|S?C!3)fWorI>Yuo;_Q+B}LKC+lJ zSxpcP+_GCh&j#WlHc8x24ey$@mnoh3(6H|-TQ1X5H~9@M+`oahm);IAv^vuW-kyQg zA@(of2e3X^a{>PWB;gZ|!D3_R#MXXfVFxH)(^E~^d}Cu!*z9Acc|wiDQWk;GaiTdcvT3Y7)pGrd{_?%3 zWvL3ee%QkPbdE*)BB=(-D_9(pk{VzzP+HL1j%wW*R@+FBvcKK}?$tF%jm@olUW$ct ztd}n}`T3u&EXP`PiSJ>)iZOf)c zkM*GMk6mm-7A(MYbV6ApSg|*4`JX(j+u~ay%dUK;_)J#Z8i5Az)*P%ckawxleO5OL z#_kq$n(E_38Mqz@4t41ZHC|%znGlHgG{(TvX$k=%qf_KpK?7|vCcu`}qlh?1gFB>o2-rICoRR}&*k&egw zkyD$skK)g(gu1fVJtW)4Z}Vn%II75=uKv0DRWWbT@Ni5fn+VjM*j1#b7JfRg+D!Ka zbTg?nhg5`HgRE}o_?3$p7|RS;4>h=a)<=g%`GLFqW<56TKaUJG{5pxVp^V@6L&q%0 z!Yw%6ZV>YtlA}!t!G)NHQ7_pry&QkBr88P%^yh|j8cJBN|0>EhFBYbZVU7%Vdj{xo zSO8sxx-Q!G2J)8{{J%(y;C&!Wf0cPwB%beaitm*oll5h|0^GtZ7YUyL2;F*n_5 zXsPKSN~H?j4Ajx}tnIS0ko(51^p)l^Q|P z!2S1+jBHwfN@lhVdQ*C<<_WJPz8=!$pE$M$;~$+yh29LEvlogoBG@d1*w`V!YR!i+ zW?Qq`i5j@{^{?@se^zLVo?ZUb^OTH+THxWQ@6G@oz!^j@nyrJ2BuC(&_`dJxL&}YC z=Pp!l`$^mH+~Xc6!ipWhf>@*S4g8hYB{P+>gJOLeKKxSusNx9gp$tk;^qtZV)9Nt)vejf&<5R51{5b zE+Z;-0Xw13NOF`ey9J}8{CY6~mpHe5aM|66Y4e)Q?KYv(F8=9ME|zw8Q>wVFAiteiR78B4Ha2QWBwnd`U&i8ob4wln(yEBNo<{!2ry;lW#dRl(`rgMc z-qnK}Q?^Soo6`e6$RDTX-yw4t?_XDJ3FVXxBg|-(Ao*W)pBGy?L{u#HHO% zbcFrIrirbsXQ3SH7A>9?W30|dW$T3A{XwyO{+E4#5f*AR^^72;yKA7?kL%hdNLJYC zMU$j9)ez1o9wM_nVluRwc0Q^!;m+_OZ39U@XylpFgNjwI;GXle<~fx?bAb(KfN!7X z4Cl9|ht~_IHCW)C)c(xezvit8iD&692WoJ%n!f;Ggk4LP$(+w53`{$#@lzegSuN#m{626suulBe~IR6<#OM?<7GQDHZ* zp)^y_GAy6pYwrqYClafhaPQB8a&*H8C(IP<9TqBNMbO#r&k}e=iLUaJZLs6+Gknw9 z)YK9y_TGAOqfZMr%7#mOGaXgd0$aU(cC7zc4nY4mtP@ZOp#!LF=4YJ zP!7buf|uGI6w@ZN_1lOKp;@Y)Iy_3wHqB3jl~7+%DZRcH;xjKQw~%akt4}l%ZS0U~ z+ulvpaEk7K!099}=3NfTW6|J1B&ta++L&DRm_MKBX>R1z^?hwNnq|d?y7YJ(j{?nI z?CKr{EWW00JFNyT#4EvT0y~j3gw{R*ZZ*}`$2du-Z_f$Lp7-a|><7;8rH<}s{Vuvu z)#;Vpb}SvM%UdjTiP)XwPWVFvS;4NKCaAeAd7AZu>bzq$5)^48kBt?14RK{4Y6_6XTh*TAz7?b+BEW3IUOP*|i;Ww3Te9lk&ljLcYUUWU_l zoSz{d7wmY}8C+m4V<;H>iTqX=!#tq;-ccNYLRC1*5L;GHIIA-F$_%yDW$)3PKwPQvN$ z3-SfZXeLe4B;K`|8CuL^cW;UKa5x>k-7zlcpD4TasWRTncUY#V4Uqug0?C>D2z`hK zz&q{8qEI27v3hhJArzuc*SQD1H^4nJJ!m?na3>sg22flEx-~ow<@Bt7T1}Iyi>GXP zghfI3@y-M{<_MTl%bj%}Ldit$gMFJiTeYd}DYtw4k56TQe%gLOTA6De-jkOpCEjL zZ>YV^v~T*{?CdS>d%F#hw^9Ha$3)%G@s|Qy$OZIy(ycLn<|rh0Jrs6zRxCPdR#tSp zYMS`sk6G;v=?bh7?^t19uPNy54_uRoo*m?ICBLP1@JK+~xcSr%Kld@;cPQH$Yd_C9 z8(qRXHED{u#!MV0#qcYQ`-9^7dBzSvber5vDI41*wt87`?|H@Z9L05x>WyaPd)Ss*6JcHy(aHc#G8cstaNA2Mm|4fC|#8!yn8sNk#_ zu{HEuv|)m6Pp*c)lfcn9&Z>TZZG?GRbMd_`{creCzbEsDoEY+>cB6vq->#j!bKtsk$46Gx5682tx3Rf zm{rK4)@O(;OnIFtzn7J#$1^s5PwK_n#0bszvP1E?0u~fq&LUuRPrr0rgISNl>ntAP zii@Yx*f^hO3Qbg?2RRDZ&FxZbE_lw0E=ztbid^Pi=~eC2w-cU#1iJWbkFTbQM1<~{ zTNoN{&Fxej8S2;*@+tjWjq~o#i&5%euA8p6bF!XN1B-Rv ze7P&Tsw_FZ#XYH-fh?4sH6(>Bc?*z4aLO|WHX(+KOgS8l7p}QRJ%&yS1yyAP*sX?% zJG?EkEz+VjQDj1s*tm%%qxB)m-Ebx{AHld^E8I4cb|SI-7EAfB)7Y&#JJ198z?%XHpWI$V4iBV&F9$d!gXPG&=mqZ z?hl!*H!3mTPL^n3!UgrfbbssnGr(d0Y-*1ydUoEGgEe2itx2`Ru5unm856_8Hqg|R zb0j_`Z)$=-pD7GDxuclJWDm)kmDEU9?2IUW!hv|JE9|nMi;~xmlpelxSFa4pXjxmUo{dHZ1Nkn|MDz z%BpV+H0xaEVyL)W(RF_BLy@d-)SzYJ#V5P7yJY$h<*hULn~`2+-jUjI z_t=Y>ApQYgzF@*g2(%>xE&$oU9kjv8i_pW&2Ak-5@siAv%atwj#q}HUcjtT=t2Ux* z6=FXZAY&<~rup2ZaUGlxZodB4Fj`7X5;Nm3sL4Yd?~P9-#lB9?Q$t=1A$42j*ND7; zT2%a-{(BzazLr$qK%-VkNs$n#Q)OnnKU>R;-DdgtiJyj-L%6=Cih_m1$_L#DzX8R$ zm-E8{?LOBYz10)24LDSf2;nQT>@EU-neA>JMBI(bZF@;P)Hqg$^q&FTK#Xt*^z#O; zW4j`l?TGQ17ydQS0u8D?1CXu+_X*U4x@^>gyOga#(Xy4^@Y=&lrM*Qz)R3TWSZW>L z*vK=S+Kb)0wGwqYf@v5}^hXyp&B%duiOKd!G3WUK=_=C9esc-Pf)D6mXu+0kF^MK6 z?>}lb_dzvpL2mVg3O8U6IBM-Ag90xJN+I`tIHmW8Ag9{*@sp>i2k4npOlbaMyV9PK z^=5aA{Rg)Sbk67B8>W3nwe>zJ_kAjq&1(ww^x}l;I4MC_J-ShS9h@DhMybQu+S$)= ziJw$xh_7FN!vIb!)_(Deb+1Cb{2>GOH!7`LrcfJ68RUUi| zupIHut5*+crryIC^Ih1v42y(g( znvRwP&tF5=Vz>fRUpL1ky^r@-+Y4GPp=^G2c?#T5S1kcoi$;Ve-CUGc8KwjEWc`|` z@I#)r2~v9A?Z$I+E`DWLH8ll(r=6paF=np?F*;pioXhPg(bl%v_#I`X1Z}8e_>3)@ zjWV1i2f9b~!RroySGE+mq)0*7`Qa0Y&0y4oe}adRXt1l!h2*wr7Ll4DrATf4>=lQ$ z(%Y+KzR*F?Rcvr< z;DA~8tlzcOYQK%gB7qX8h(K%>sWe88wad}Yz|&ydWVNy+>X(bcX$jK}(W)$Tp&JI> zyBjHQ9cKx9RItg-pReF4{dwL--_1utvR3Y#HtjpTisn8lbKa-ZYe!p#l=%>Tn)R&h zCX$l}6BS?IfKANg>&f5_sG*IWLC4)qp4SePV(HlyE$)yE))Gv2XUG)3AuqeFOJb`P zU|d7joB`q+5`4dQ2oNI5wH*C+ncZj8(=O$o7Jr_rMOmUGG*r?zEG;7Ko4;)URYTP% z<6lclNhXnovcY5akz~*??!Pv32xPZ5`Z(u-C6rt3(d{yhh6_Km?h^^S>~yi#LO3cD z0V6x)Nj-BcX6FK#H->r}M>srJyt%$N@LfH3jfld(#2tl`1xaGqoz!X%^A0tNCt3e~ zxzU7$;30k8znR4~SA9>Hz9Hq$vyZB%^dyO0HunlmvKxG%2w3CRJ93E-hVIEK?E+mS zcz2)lReR^J%aha+Rd*TaIe*kgPR(y{iCDZJ@Rax_^7h9Bz4EKy7CQ(M3p4pbMisnM zhI|?Jv<0V>|8W3!rQZl|sJeY=2fV#iasAc%bM-YsQVBj%6$>|LbT9v*u`t5+YZ54- z6SNwXna>k;5myH-)U}C&GtEM?{unfmD-A7~uv%N$^;2c76zwe`xT6tGvu{)1hmtR_ zFD>F2BHZdz$4|EX4%GE^KWJ}MR(6>GB)c6*d-V;Pjgf%dJ6Rh;E@`8SkKSnZ-Q6($ zP4t;Y)IycF zUqD{9CaGe#(-PYAVnxS`$UlA-afh@RNf>|Z(=u>X4NSL<@Xi)&D>azj_K(x^s$90Z zo*8(9kFrKi)Z|ARoEE-;JjE$&KhX_zDc(xaKl)9u7c8`Xms%QZV^LMvO4d2*VdjOP z*$=H6m^mP`)3J*5`Fp}Glhw}cnV3$Vz;8VZ&bZvey`&yyM&&moqaercC?{AxuqP@F zn9P1KWkGm3ok|`LiC=qkFOKX@Rka6gq~ka6saziOsLeTesmx< ztJQ2qJr&PvU8``+j2$=wz_PsYuyC@~-|S?Fb@fyHTglbyrnY>AU?E5tj!oOlWW~yFZibbqET1vo+ix1t_ zG2(wzsh;!7{dVbjm5=8I)5T$Zy{?bF4(?^LjpahSV zv02k#nIHj|k{X~{ds8EJIM*8W%I4sV)1Ru>67?CZixOEZUc6(yRTC&PbPU1f&fkVn z6`uj>Yn93Oy|GpKiNqWE-t#uUuP0ifc3P6dn1A|!%G~C8E6~jBfme&NVgrmC{N@nT z`8Ypltfkt6Vz%rTb)FEH;$*x9iQNtVrGc=BmejEj|a>>ZJzOAdH+*oiGP6-nJQw2%Fy2Zd3Z;n<8bv#Km zo%o7~wOG~S?RT>;rCA{J4OBJ-zA?AXH#U7|`(y_NM)_48xVZ``q+kDDoEkTAzpCmW zG{6Cq$GpKW5;o-Af~c8rKDQL)`tH z_btRx3`ygC701r^&84KoEX94HF~1o`hu2+i?+`hj`SH~pY9t67qz5}Kh*LejB$pUY zneAsn*v)bgl3*~$eATR~O#jdy_TmeD8Hz3S>9It+BMnMyb2wD0KEwv!gTp|xwZ{FE z=zkFeSB;*dtr|#hSLMss5H?S*8VQfr-{!H4PDp#4@$JMK7@vnV5SZONv@pe1C1KGI z+a9r*F^TSX;WyxI)<5E&+$P_6&RiLkw55p)#)Aoz*mW8rp|WIidY*5>8HebOu4l5E zFhh`MClzlmCJg&&2EXITp^)pV_86R6aMH=Q0^7Y0;4q8 zldX*m?YPzZKI6Zay{$ogEuPmE@<_QCznsG;FjU9L2QwC}5;T5%>YBKB12JfsAs6}rZE%3?qf-Z%MLibI^{p0jq#$^xYtVhfzyb99{GVHMF z$#-d(YA=!gWbK1yKzMs>5{YM%s6R^rQhbcjn`@Rys@{P z|DlpUU}Be=Q|@=h^*5g@z04SA1+b3=2%=|z7$Df>4J81Z1SG1Eo)Ihx3GjuET=J!Q z@)VAZEHK%iZadq3N2KCQ86qVxOt0AQNlf>0o!qe_fe!CMF*q;M%Tvk{b)njxiQtV3 z?|#|WzLZ2uC^T*&Bv+e!9;`S{r)O05klAgUab#7GPQ03IkV8YOOs9B!=#g4xYFvau zhs;g{=lST!MJRl%Co!X$QNT_C)(&x)$LTxI-70Cn5N2&$`=6LLm%!qg!Jrb9Vq{v7 zVrjNiKFvc_?+4$`3%mc~!&QZLIS-OhR=#PNQj;@)-E)dH%XZHhE+M;GtC`mWFWWTc zhm@XHJlIP9ZCSj`YJb-t%tyL*h+i&z_2~ld)HEgHntp@-4#B6&{lp|%k#Z1{RUF?q z)iMws0({o-C%{OlYaDADmZ)#{&@qnsN22XKCiN+^eYahkQa1EPC5Hq**B1dU-h9Y* zC7$$=`L5*a(*lj_1ma>z!eS=n^gtCPVC%sz@@4!G;#=NXA`@3^&||xC?HfFJ`4#X* zc(B*it295~=@RYYicZrtgcWn9l#bBY_zg)n>6P!+oxH2Fnk-=3&wa{i$1ztolR@9% zZ{QvvZvA{p*mp)ZkVQCauChu7W|Kd&$(_u26Qy|LAzBpprfB0z*hhZI2_?iW{1w~< znFwmM*s>DnMu(k*MwH7Gf7T9MQk9(3mMZ-zU0I`W`TjVwRQQWzRWCoG?+;inTI^3( z!#gQ{6PS6XQ1@q5hX{-ktyF~Szhx-0i+_L!czDg;a^zf_0n(hBdc1@98fWQ2xylHK z3~Gm_PgmPh27{lF$E8qDfp!F0Z+TZHeRV@$s3CIbDx)^XX-vQ8N_K7=;^k7Pl9fy` zcIP;I*QUj|>2R)|oM6Y75##Akd;0tP3}!`rqcjm?lSH!-i&lWUB-d<4h$6wm<&P*c z^~awXlAEDf0$0-eiluCA)AHm=Bk#S=Gu_R5Suq#SU6J<^nN^eA5G+tBP=Ul6Q{tI1 z7u#5ij@pHiY&KsXl3rK8kW6YpwMT(Qrzy+DPUY)1NxzQ1mI;q_^Mrg+sAUz359z>& zMAN*E&t=P@PJ{yUv)r~ivFQ{`an4E)$8{Ul;GVSCSHrwPTj_|hnn9c5R`Dk4ov^QZ z`b@+Et0(aLos(S-*f0K0q0Uv?jd1~?>bZ_`ChX#-X_aEfxdO#78k}qOr+zn?#97at zSm78&FlL-Ism^d(jJd?@S@eglN&*-oa1I8>zBV_x0`;~W+g?s~G|XJ^@w|0ek6t32 z=R1K>qf?(L{?&$I3G@UlI#NU2~OS0*1_PZJC)563EZfb*LhOx zR!Vi@k@J={YVy504f^+ToCXC_LnGOI*vt05`(`M#cx9BIGE-J2{VSA~Gzt~;0%iK~ z*s`ltpJ?RDs~(WFL#`9mLWebkPm9%Dyo(5-Gs|G%%R!y?+Ubr}>x>?4140!qF1JYt zs?{ny)K(aS?PE|j!LkI2z+SxyFYdiQbqV&y4?oL|F2{B|y$zzNVy;$uX>suPu15p` zvVaap)=lO%`+oulwDgV-IIVyN*xT_r4+}h4zLk1$9bRyy?X$Omc&gjxT|YvH=-%iVU{Rwbau~#7`~5B29=d_nOwvPG zejrbLx~G6zTTF0Pn%ctI4GH80d1d!!6&;Ih`%rlKLU>J-veEZZZ0{?BK&WzE6M4I@ zX{YF0Piaeu={erp;(MCsI3zps=JLSJqcZ>{V4B3n+zD)qY{y75Yt>IzkdznUj7pio zRfcq#>OXyM{^?fxsm~VC3Bp1Sw1<}i#n<)sh;%9RWkg6$@ z(yyKxAzVXrRx0-*x!UY7Mw;f3>I<`45C$n)ePknFwIo@>rA#~9O?TtW25 z;ZTfJZ>2KVGWYfGmg||*vZW)8yqRM4QCs>JDdLX5K40r^N;*JM*&_+|WrX`;fTH6p zl~)cE+ahIOP(zSg-BR|6n zL7TWeor(RlT=!Obt1!tCZtp zny{jpWGH|3JC}N~g;ycgb&jlhEoTAMJ*&djfD>pc?se6jMa zP%lqcT-vivStN(<8xocmo>u7mNI529R##h1F~5A0dPM(?s#-#DYFuCR;t9;_wIN;W>YbI)uIg`=0Z!(_-JsCSAoF({%5 zz!wX?n#||x!Smmo_Srs_c*K%mV85aA6A+F;D&%Yj10K<8OSK^4ENK;rUd&XXF?^Q* zGcmL5J;`YwKdn!QZ368*9zPl(Hlu zziBDF<7B}wT_Kc|^a0{R??YW*pcPZq8m<;Yy-F3M;&*P<=UDOT3H9o&7>=KHN_NX$ zG;vMJIyZQci?>0U%8G3pSA#^Aqd!e(7=_8^Ksh6yU!T55>3#rt_ad06MkLpT#7}SME|UZ70sMv~a%&Yip+BS?in%6FU+&N2XIX`~nxox?r!0a`1+z8p5|!%bnIFDB+!iz)^32~?YDah+4J)TB zr0s>4pE(hYu*{-Vuobu8VGyQp3^v1S-GRqmQ;=^#zF$Pc@Q#^!mKSi0=l+4#?CPo25Cpt?j`&1|?7sVv=V{pjg3bExMrK&= z+U%W?!@Bn+UsVsqS@G;H!!fJ(mh>A zys&wO;Ej=fQxEMsI{GyYC1t#aTmGhf_S^<3D5-Rd>e@|etO>c$iHvs5{ab~foXXvI zjDD0S`)GS)B(Z~M7ezB(wdG%Kf?sGDZ8G!b3wQz1E4lHQ))~stv-OveC~!DsIfn}? z)KY*o@P4#EQAPk#f_7_iL1CNnNAh}0vM)qk;M!fCa?<* z5HfTtAk#!2T@Vh_a&e9x<9+2T`rw(>qyMP?lOjH+CBH^Mu|R^_uFmff!(D{(&A;r3yJ#xlfuO=}n8J6iz;X^|PHcMpd0k$_1)P^sYnD+sCMq<+@^; zfucxBHNu<1Pf?_rlZ{E>HfuGIs4Db*~X~&DG!Yy)W0sWL*Co zzj=Eh>RjR~gnn^`5)>Ffzl5jgZdgY&&u1&!kA#M~3r5NuMvPi_?LV$TJ{YY0d!lJr z7o9ItlX!78RL}6D0l2WX9-iH6)O`W$PL8&&9E8@M&Hb1JbLR%5@rNNkl78!asPkK1~ zGSz^X2z26SZ(`92vlI)Gq#H)byKUXq`-(A7BP}=8MD7ch{uiXmAP!4>0wzljb{gXs z>6aN62bs%qlJlux3~{`mG|)?@*_2{xeB-CE=*nt1+``4rRw9Q%Nm;NPLcYV;HK28r zL@GzkH`~mYM-r9Iha8*6%O?zxR%KM}@6-L^HixOl+(J$XDoIHFXBYqGvEQ;#Q?)a* zm^2->wsLQ@(3`Sct5elouxaV5rvMQ5xn4l<@iCN(R{7SB^XOy4gyL>EX|3VI;16xl z;Tekit6%5r3U#I9KYBV5Q4v^T04hom%N`i*mlz%l1iHri_5^;lop!5q zqeco>Y7SekFN^;+c_#-_zw$<6AUyYtMpnyr4x=lATm&F9f#dx&Lx$}7CSV!-e? zjYWq0%cE?r2A{^{szz+t;J6Il@TiuSg8wI2`7wh_{Si`2R;1hED2OHP*Ij@n1HKUfIkUlw@w8F(MI8g=d~56r@H~1d zz4Zk}1wh`6+cTOZivZ7oVAm-Pp~5w~>9FneU|?lf<=xyIy`674zh?>h@8g~I?I)Mh z`_p^9dJ(Z0loL7N2kgY!t;0hzpDmGm(c`o~i$#q~A{ixTq?Fte4Xa-m{azGZ#5Hwn z0UZ-mu~YImr(v4TsCaP`l0o?4YxbH3qBQ{VOCeM=aS^q33lO6z1IOxD<%}O|-UG{B ze&;Yvqa1|as{CD({4V+_pobjs$ZsxKEwH2DBx+%9i*gRGNsg~@+Y4;huA)!STT#oX z_Ia^P;k2>zLFlLFsdit?RUdQ+f7pwpU;4EzxaB?{#JTJYB@|6VrUjZCeZXa5(f`q> z0i7o}U*C}>QA7KF6HZFT#b$hUXyt1A8p{ZNgGdfC%j5bHi_}-j8iUoYE}s-|_f6uQuG$?t=bGKI)ZHa9u z6Tp!zY{344gn~&Q+yM3Lc$%g_f+}l>il-m*Bbw7a#r#{9D?QRH4)5jDWiBV^v7gAh zld!+wLQUk<(v4X$a&+E?AY0RZ5R@@u>rkOu&O_;V#jMV7Q#fgI`$+jz!GlBhjGDP% z6!`TntIV(aybC!W!b)w(5bbcn?47&iHwI#(@AAyICH+^*B=>X;-#_vZ=>}lct~r*x zOGNnW$1MG3wY)#61u)|;K*nC9semEJ7SDL3Z5IwS+E$};R-Xz_Zg5`v+jHgkji=e| zJInE_56twe-u>!?S0Y*&=}PYKi)0*OmvMttx_KhDG`Iezf2x@ia%4c}ntegPul$Ee z2QO=?0}ZSEkZ5BF!%A#^4iDNq3Q2_gZm9ssJI#C9(`*wMF92^2yWwi~yhsx2KS>IG zXi}zWHEdCh$UOykN$2QwUU;UXc5()3j{;kX&F`J%B)X*K@a1y6Y*kn zCc8qaFZl&Q=0YIk*Irm;hq;m4X+*u87v}1{ty&VRMkl4a%U1H!D_&k`{VUEY>=fMY zDcCJXa2BgcQ7&IurE*Lh6%uzlu)tz4Q^gkWQHRkMwzUUpoYDN1HzYr5H?~Fsbh4@zig15 z7+!R+KKI*hAm`ncq;C5QZ)ATR5wOys%(q*<^!`05w-Msk8LKdigc=mM8(l&iThjE)U6AJ+L)p6Zx7@1-gBsi}KOHs>OD->sYP_s^Ef zm0qH&0Q)TaAE}?-wQZjd;VR`dyN~m09(y)FMApSXX4URnUv)VV`{Fs9=Dgy5$1 zZaC#1=-Z6BhOUTI!<&eT)a|vwkdH9FHnyDD47eLD0@zstTJ6SR0?Ea;?rO__;s^ zisXK8y+568Ty1>yRyW-Pih2a!?p$g8)n&TKu>NNPHb0n{BT97nG8GzNj!FBGZ&N_~ zF~iGo3ltd3l2SN?hOdfALi*l1XAET}N+Azi55}Qs&Vh9jNhwY<<>krP3deF1=Qbxn zhU3d_;eHK*83#SGl)81xaqQ#6j(d7HBnHl&MD~9=`yj^hcGvJZuV}=4!6N;h7f#E6 zHx1w=7{W@{ysnWGD4o{%=~Jnr#}mn{*80Eq>Q$%I&v7qYxN-IY$Wc%o0JRMvfG0ty zAAR}#KTr?F!ERdF@Lmq|sbAh*Gm(a{p#<+weQz=zkE!ZrJ`WbH88KE0;iO(;J9HvH?8q^~?*G9GtL2XmsnBvV*_YJV z`44o&+w>1Kv}+qpN4JHsgFgieG*iHVU3=p@8(m|Lb#*7s?_H9eyx+}%U+Jq?|2e1_ zulOrQzwDPwy_MCb$(Yzm=O3j@U|PyDI#2muazj+GB@5M>m1$ z%S?bHB0#^b6s6#aY}ALiI&E#Q1lGk32VUNI6SJIJzE!^6fHh(%2G18jYFDGc9(JxB zIc%fg1x_!P_2BZ{!oM|YS7Z=ZWbO1Xr!;)&CN-A6tkzmy6?Wu@vuQGrIKveIngv{6 zM#^$ISGq3szmyBg(KSPMyLxn===hKI zyXpTx@+^e&*|;bwldz(|T)=@EAJn0<9Wu$=Oc+$j<_tT*NP&C%3c)lBN!9sBkbu2YvrNiWXzhMWSw zqINl2)mX1SZ+xluXyPu5H?nkj#`8^BW2} z75GE}j-pnrmRpEcMY^zuy*N35CDO*4WD!|WbEjymbarVncW>G1CH^)n$zDNY=S5pYEEI`Ws2bwsXpvOjFMf$~CR}%aufM`#7as@TYnMX7B5alW_TdIrPRw51X z_Fa_F7(K^f+fcP9r|Imlagoph2qnX-=%e<`w4eV#P)ol-&?I0lf@NAWr}GV$mus|& z=JEMX+bZ-T-w|;w%VW1RZh!9@`Uv^rw;haYuNCxYsY{sEnD_i`d3v5(v<@4KWyKo} zZ*3pcXV{p;J$2zWw;X)pdOm<}brQN>?V;jk!)8_PrmI(oZZscR3Z-+hM3+z+42F`& z(1kg!fKQMfILe-F=pX1cbQeU;lKT^s)`q1oI+K*5{0`NyvWpaii!T5X=r@3-oI}*Sm?Xb6bW`!4~?Mq?GloC_&@7x5#q)Mgt9n7Znz7lj7Z8bh#YEpe7;leHG~Q2YxqC%T`dBpoW+k z_VkyDa<79}O@2J>pBIdPi{3wu*A$ty#^XfV@BZD+i@PwL^>AAD@80ZWMHb<%c%l*eFXKFOk<+C23n#MEJhp7G?WwIM{lzj|M3 zwMQ-#UwP~s-yHbc+j{mg4Mm_2Kr5~(0Nwr0rIL@b-v_0p6WbG}W2h^I_C+#5D(fN5 ztoE-@*IjPp@$QQa_gNeZ7!*VSs&h=j!7gT?+UpA*FWveSqiPr#G4JTB8jMO2=-TNcIO;XjZxFa1;@ z^2L|LLnLBO=bKvw?+K5~h$YRV!l(JGx}Yl%Fu1@DEP&ptRSWEH6w;=t)I?%WNX{pF zgt^>NfJVKnb06LqW;b_#mFf@6?m6?Y+y2c(Z~+EPgfVXI3sU0pR-`_Nl21x#@D{s4A<3NW@@0#hSf?jYu;fJE!F zJHT#gMMJ8mBk4MTJsepPfVG!+Xb(uMTbub*(Lc9Fn;sIFtx8wEJUC9veB)Ne6gF}@ z(se4>iQzZnxpzT>H$vIR6l5;76O34%VMt;TOCJW6(|Rfi&&M(~l52dwvRXhrnLa?W z7X$k`q!d(_)f?^dlidTVEYymJ+Vr=YFqLE|@bo4EQA{~hnidX_y=h`yvy6Ze$FBqu zm^P=AChc-M9^w~nXj5;M`l>b>vx9kX>D4`(a6O?JFo6#hE)HILO$L7V2O}_WMI}|h zJET_&{(to$acB3GzjTnU@4{%Q#bwx9Y~pETmJN%(SxS&+YS}(mJrpQ9E@T99 z5){8Gn+F$lmW1%W<57i71+A02utc}x@KDC09-z}r0?IS? z>Agv)S}27P@!862u~_{LV=$$pt3{R+(6xSOww!~EqKDKDT$aL{@==%?5`g2(ITiq6n(0A%LIB`tHb;_t)VIH zVjAZ)9IwvL_M5^QPXkd&Gx(frl? zmBcTSvP-O&WqC8=;b(!b6UBRNEtVnv;=uG|>j|%;Pk|1u&zoPEL#s8K`jFS2BA3Gu z3|dctRaYb{+YI?hoBTG8N)NV=T@Gv6V~j8iVNs0fT-B34!Zp7)o7N%Rlk><1{L9rB zW>N;OOcf>E&XkYPZNQjAzAGJ4CV^{vP5TNYZ?tT5e2DGHQd1=1vzOegpKi4w(<@>p zU!`7d>~EKP&vQvN1{o4hd8ZGtlR^u-U4r4`vTHfK)x_+Cve%iZ&Ee}<=PEfPo_op- zJ}EJ-m)WlpMH5jHmQGB!*L5s6YRt5s7mjTKM|QJ7sQd5dMtXFYEczu$;;b%kM<)P} zMmb>HC2e-VrRkjj7Qwmgx&S%zcZ263Q?oK3P3ssjX0y8lYFOZUd_!jEMR@++^Z{;D zcRQZwGC1#rS$m_l|{*385flvB3|ch;GMD z6q%jzABelmNQQnXD}U3TdrUEwgZw@yZ%y=iG30>|a^mU!ms0z;;b$v%Uz!D6uM5AR zSCQMoPVUA1($p9^guQ5QfW#`)g?3jcWD)z$Z?Sfe^cqtl5*{RUia;_|&#LYH*X(2I zCo`$s5$x3|^Qj@7Dm=$b)n8e6@<{8`@I;Dk#xq%CY;XB|m=x2t%9ZGT46Y(ny=E5c z;qh*qq9{+%_-i#SSUT$S)0NSwX-B~YvomJLnqcA_mDTVeDZLG5)0rs~)%37fInwju z*g>5qfdWUlJv!GS{<0mP!JX&wD75wx)-CDM9%QQeh-DZ6wE$K@!%FVkSs*zZxT|iZ zol{mN$LbpC;MOlrb}O)Wk@UG&=i%xhqC@k{5W=~SA4)iWPgN#JhP~Jtmtl)9VKku zOy7OHPEa$G0X4tg-P_hh&NwzjjY66VJ{4h{KM4lCmJM# z#b@iiC^on7v9K5_-1hUE_yLyO2b_9Z9#hV=xd?X5Wh*QEex(F| z9#x%|C66d@-$eTaAvJM=TL-7G3I>+_owCGB8?5an;AC7GU82`q_obCt? z7KB%D)6(? zqxK^cQb8By+Zr&S!8F~H1Yj0@Ae}8*_FSNBa^)0_#?1l4F zACCC#7tTp{mLgtf+_WseyIA{NRtO-PN%F8*_}sXve-`@&JfEehN(6ssx$1^xemfU6 z%S*yUDf}%*YhC@kEfOEDk-Ho*{HQKXJmW zn&yxsas$U6(okX0G@~vmM9JI?P)vD z3r^7yD?+&p6Ab4A*HnHqER1RJ78|)PU|Dcpm)~g)SJw2OfWFF#C3t^8wP7^43pXvi zL?)s#$1>jSE$Sr+$DO7t+>jvnvXRbFMM#Q*hjtVf*~bDG9mm4CbEA%Zy*kMPEJQx4@WBk`jf+^ zpf4I(6s08Ht*q9Ui$?=Lv}Hzi$nf-t9QatT`AeCA@7>scu!+&2cDUXLEu!56KeRU( z&9*e;;g~zi;_J}yP95fzFMsywJ-sUb?gk&+tiHm{*WP_tF;+_;_njkhIdoZYi%NMn zI1)oZ)Hc2JbV83Sq>f41TwFi$!za2tOzc=?-*L6%DpfZzNlq&_Z@@m@uF}20$S#3= z%B&-6zTBK$(`bhWn_%aGB!+0>6@#jg!C@Jx(xVz?1?1%R;H&W(>DBSdu!GMwt;?M& zwjAnN{cbIxJbc|chPGc>PF7<9CpG89YZ?Yx)zG1l|3x7yZ= z8u_IlXXCvA!5{5Wb{a-0W=Qh}SmO+)Hd8Qn{Aj2zWld=bAK>3$xL--CNTB+ag&L9Q zXo43jM7J24bF-dex7~{`tIIT&X7hf0MoVb`=LSM{fG#qKM6A))mG6OnBX`_7yoBRx z6-@fWK)aBM!Rrz2OVdL&j=e}bRzpKbK_X5YUyBHO|*n?R=|StRw%s+sM8{L$B_ba=NVqFvfqP2TnkT%wX^@oAJZwkHWs+tx zF<=o6=-V>wurW>Q^MluTOUl%rMLWfsRfqdC_CGoAx;Ls82is@&Deys4?gRNzANe^z zhy*gT`%SkSYGBY}kIXP!jLa(sbgr`Jv25PeTqMV*iyGlY_e+RH=2)P9UZ5?H4p92y zmGo`@fr2t`>r)5bI-eW~@miOzMRlp?-}H}j-c}1Zp6Mu@F4ys2mAvSoQ5F`=c;BK{{zS# zu&skH3z(K_I}GsyWl$r*>Ghu0;>|tKiSEoVU=+#x#Fv&4iW_+dv5cbLQihzq87Vow zFfOgtp4p_9hVt`v4D!SyEwkKD1v-uWRL{M6$WARGOt9lb2nK#)=T&+yDUONG79Y6& zaVA5&v{Kd8F~A-K#wd_9!3=@mPSjPZ71TS(`;AlhZ`|_+v!4m}zSqO*KgFT$h2fd5 z`F!NmY^U%@ueM_+>H1AZ!kJ-N_J)42qb|v1o78w+#+``Istja|lj|F?{&Kj?##H{# zff6@3+k{NnqGjhYJx%26d!(Ee=$^jHGti*HAPJM8xEnnIrIm#aTX#_wYd(cG1`evI z>&^;&W@3FHmPy^S7jbZ#tujg38hth1)65oTqSlh98q%O`ziYFNAEoXB71dXnw=~Bi z`H`KPM#vUTX%RPG0b>-r%`2_-6C|$jIqwrAw@MFf@NXTw8nH@qBC~Sq>Eq0Z;xMSAE7wUuMq9b}R~B=X`76nPd1#`AEKF+8 zS1?lk6Gg=dSSNt+@DPo4{!Uwb#XPyZ<4w8pI5%C`*^6@ zx7}s-j*dXgC&REuZzjM~B;kLcQ$u%1^Bh_R#|2jmoSma+stOGqybUa~*1o)7eZA$8 z+B^U6mxIp_o{s`d$B6ov!L0?L3hVj5DlE~YfQWWr^y5InZ8BD#dwjJ`tFRyo7NBkb zK{gM3O;ehB6MzHSAy?aGx&JH6OkB9*Q zpvVGo5Qy>63cB@#z45lt)!?$89!Z!}gN^AMhedT?!{QTVATLuS7rBz;k8q@Fw^QVX zHGlcHSSDSR=|QrGluqWTl39w54KO$?}0PT;QMPifWv>-N$I zc#g92*THN}+JrI|)0X%$sxp5<>Nou&tz{JYsfe`5^wLj}2$gf!M;O7;*qTIYe&R34 zk+eQggFO|<6JMEy6&<5jykGq{oE3&zf|ns$4YBiI>DOuLU}qK<8?sW@ra6i6{m!i> zAa4{-6L)Hid^U5%NB>ga3B;||G}?44N&b-<(ut(PdPg{G`hCDjIazxM;WanOh=ZKk+hR zEDMLaUW4yGoZPwj1qWSFwVN{k#UQ;RJaYTdKai}|l*``!W#!F##WqvAm!8)vO23`C z?-d5y(=<1A_tAJ_65~B$m+6mgnCm|QWL%kZQD9fEC=Q_V)L^Kv3mo}HSIHp^?=0Fv zYVR*TWtv%QSW=zZYgj_Qss7H^VU`jF*9KMtxoOWk-ogfWPPM5?A4i6&2aZ=;tp}vf zc_tgrczfDkR~nPM-9n6O_y5%x{W^IIa!FGOD#-X7?d5tE^~0@2v z=9H*{6kS{Vd-!4p{Jb;FfhcoSHqpdLxG&f_%QBi~^g=6Z@crEjCJ&zHrOi4IG6{RG z>8;n@>$waipu?i6n~rU8#TFtwA7d^b1dEf)F~j9uJv_*OJ<%xeST~TiDk?GT-Y0#r zj`tl(ml_|;JJkGI+mK0U8|Kb;p-A1iCOx|S3|ye3^?A0r+BWgMri?rMj^08>UUiE@ zzYm{qBrQz?&Um$OSJSR2h!YA67$N3qJJPSM4Q~JoPFa;snZ{mhMzIs_(f&e{FwFIZPuo= zN!g^E9&4KFaKPq*tVmpJZ4n=*kLC9e`ud7%wr^Yd+ZqB8 zi{aApVIEXQl|{ZVz6A%jE|b{Qon)he2BWp1Qw~P4c0Q2uy5RVlT=Xv`eY@vn#WaXbQv9-s>i@3TZf*bLzyfqjslZlNmk%kg;Bl>9Q2wQ( z*kepJtYQ2v#cTZ{U={F8Lw|Iie{SN zjSkn~c|a1$al4u6a3TF8dt_ z;!}Pw06AXgF?xg}$ZfpHRtvb5JF@GebgM^bK)|_Mh}URnO$XXdbtG<3<^f}Dmiff3 zeW*7LMPgVym*%hRU58ivR$phQWs?1CweQ1#tSWu;j1^FAna)kEn$rL$DYwD!QqGu^y-Q0?PmF-Gqm`-*w=&c;lEFu(BzN>pUlWOMI}vBS?h|yBgN!fkE=i3oTu+d z?{-~N#-jx2T=W4f(X?4emt5dQGQlm-iwp1t<&DA@mgp$UmlAt_hGbwTrARCf2MXeW`-5) zROVD`DCzAvPQq9H_$72xr`^-^Cg1hw&!B&B}@9s}d^fys*;l|@sv=!N@dp^`QkmM6)=)k3;Xc`CHS z31qXJRiq+yB4wm=-dDY+UM)sn7;V%j*3wW?eP}(DXTuz@^Sx&7ziMZIydqtheB?|n z5RC;4HkCds(5xrv0}?$)l3!luJF?AZmuJ`(x7w?@V9(GQsA`Z{#I+{I1+a7`nAKy- zKK1tZz96|lRzqB=P3>}vxD9%xag_-svUJ?B=b`)0b@+aYxQmXWhT@wLjPMv#$)-%_+y)I=PJ3RyYz%MKLLfre{>~%juoPDTLtyZDELGP zD`&X_o~4TO0m*Gi>wt=dM88LfEsV=F71@OJ>~n${vzuh1m4?Aj5CrkWIPAe~subWY z!mRZVlw7V5Mi*x(bFc&B}jr1TSbrFuQY z93Blcyjyz_{8Bp{ZlUtTTJCGhb_%qIR`8GZLx50*QIZ-sdiM%OfR_yM7J6fE$gll{ zE_#Gj$7DWPY0xY&7+*GL@w&UZ<_+93WQ+2df1ul_HWZZu@(;8J3+lODAVJ%97uJS0yI>1&=- zG%iRyHjY9aFc7`yXYCMs+VXUPbrKu>9UN$D{W7ee>s6$DFW}>6KYE^66@3VFe_Cx@ zgs%Ss-2|WC26T@9_lf(YqU{pE(Js_`h#D4Fw03VJlRx@r_{CePuvz(4pI#^F#^c@Y zmn!!6Lyi4-ORN>#hck-}B;@R#EgLW^jK^D{OsW5KzCnjtlJ(05iUZA0C)!TqJ1$Ha zmWhV+aW6$xRmSJs8H-8NR@d(`6=quCz}86mQl7f{CR3EJEcVWq{XM-0T#H_lJtzI4CeI)( zWB@QwE@2_016N`k+j6FbxP64mZHImjf;-|n<+^i)tu8PbwEwuWBp`oS!BTu1Hht=dGtNToF(vUX$a(1hM&WOH&{DVu{fWf{tFy7+(8S#oj@XJI{ zAR|uTEbYI1a=cP*kz0dII}}RxgUPoao$dfu-h%98pYxgHvxJqgP@MkK`>(b-k1g0< z{uEU{-W7o3P-k}#t}-9#DrgKjd(rsPBw5RFm|Di5H$s&s7{UL6UXZ-vZqkRE9!$k) z!$u4Z%>*24eocyHU2OZtxSCzFeI+Y>Hw^ldIM@Y)w*M@J2TYYsyuY$k_5DcoT-X^L z8XgYs7bNQJ0%7>NpYioTuPy;$((-YXLSoG6U^^aW{II1OGqNMSt+;#9?YZrV3BGqZ z6Tu#qpCrno{*dc3WB|fUEZVXI2>aNd_K7409EvR;C?yj$ymO&EgAp}rBhQgab(Qt? z=t$#xo%w@aQt7NyaXq319xrXaWaqw}8VOqv8WCxRR}DZIt||)nQiH&l>zg8Q4!$kv?PLLA1@->B8e(OPI8_XWDjdJMPm}X zN~D{YJJK^BhxgN>mHuiDNzB3w@%s9&zYON;%0+5GpI%QP%;b+{j@Ug_%Lol}=JD~4 zEAtDf=vdw@uc5gb)uCZM=WjC9 z_-!8hk|`6wR2~~m=|F@9DY9+uB3WmUAQ}tABSz|dV)JrBdKtMz+R?De&ahogdY!^w zV{TpoQ?IVJ>t~{s`>t%gdnIwgX+~09Y4%&Sw>5f$f3)NK8}zH9Ft77-ifNG`{7yl6 zn*ZqjVp3h}NL=%z!ffV@KiCR8p9ZPHwEk~&+&zF6kq#tS4UkB>s9ri#=@TpIyFyCq z3^qM#i0^LwuPm2fKX`Oc-al`ITKsQBjT3m1rDF)_yvMzNMYfWmU&JS#h^4Z5bmr z*@F=Z(rgbZ8_^?FxwLU5Bu*7QQUk5?v@B?YuV)$W&+E9KiPADDKeSPxdkx!iP zu6R+Ne|2q^p#F!L0-bwbO$+#iMA3!?;{%zq0QwQ$AQKDrf{88SVoF~hcK$IBQDIw0?}BcwfYal8Tw?j;t=`?(?ZeC_qkV_TDEBQI7l51 z%YDx5&_ecUD5jMQOE zc|}igW(-9836Jc$=2h<`7^GN81u1yD7kQR6*bRU9?MnB(-vB`_#o0V0LTh=~REkyMZe{u_dmSOy-w4b^tDV@qYbOf}Zh*CfV6dedoU2047XGw4(3ZeJ$jdPg{?OnB_TU|^bN0PI(NM5}HMc#@$r^C0;6 zD53y}wOu_|Fsy$cdAbZ$B#kel#oa?gay zlPyGZX|cuUcz&0Jc#iMSNqpXf@fk%XNWJ?#eBSlfgGQ!mxB<>j_%hxqeIhfOzU^n) zO|0$+bJi|)n`(*ANBZx$^0lGW>^l_}M~qCiyQ7M=o-t6b-Jf<%2zfstDU^xeO$~ECQ<8!PZUp_!`{XYTT1tI#|8<9xrz90V7 zKNCI?-dNmtSK=p*JTq~o>5^!ca_Ktt)sx!TNj$eNX&H(|DFaV5(zI)ZGD{;6S=gUB zqJTY9;IG8Li_>b>ejoU6;tz<;s7E!%v2CV!YWnxiSz>Ej`R>vv8zGUjn=6-)45`y# zm54Uz%VWa-02zKXd=>Z?HJ*p!kBS}*_-pYH-q=e8j-`L6=w2u(8bx~pDl)-!wmG6n zQ0~IYiogZ{_FwQzzl^`|&!4rMc*;F;$HRJthu~iuOQql4Opv5{gLqR{j>#0c3erh* z@W&c;c^wb}SOfLOh5J|hKmDe^XCDgM>AF9{9|ZV=!nfWxi{YPwyjiJOUFcpMxSB5o zxO=bd0Jh#;!mo&>f$vm6*Ew919{?Yhz54qfYV|MLOT_;G6*Qk1TzoP3rQ&ZEYFGaN z3Gc4FG@350uSu!fcyeoLO}zHj#E*}c*B=f3B7At)zAJd?RWBv*-o2|` zc!R_XYXRCMYk3XDz=qxoU1?Y2#NH!Rwr8-lic4tP(o1>GqLhWq>u_Q+OXjyb{{RG}*R;0WjP&TO{8Ozai=*mS7hVv;ScylwMMzKj$>_abAFayQDj#!T14{%0gP}fG1`Kxc#q(J z?J=hR0Alx z$KDZ-_IlO69Lb>m%r;&m{{VywTZ%u1>G4$?!B! zbeNbR63H9*J^qmm=fj_h9}D!WPuc$f;IEE6ZEfM}`v`m|@j4Ah!`k+pX+EegY-iQy z)%6H1?k1Ld8I8R6kjBfVM%x3j89+FHj$g80?M?ey_=8Q>q5YVCENMCyhjjGt){CR~ zbHF<6nqG@*X)LPNu(ZoO#I3=&X$;cIA(}}`9OMoc;iv4O`%-)bOOJ{^4)|yB`@z5P zhJR^!{w~qHJ*(;8*k5Jy?X?Zpu|~gV@_f6PXUne5lOy8{2SMOFzxY-D5dEpN9~OAy z!+s#wuf7-QIz5%$uD>3m4yQa`C-AJo&eG#?Tb8%Bx0P`TbO~o6jI>ejtq+Ai2Cub$ z_$6P&>A&G5_+e{xt$5eNekifhZ$2StHk!rFhLxxIrr!0&pDp6u`HLmxs7Op+bmDYq zQdK#i51oD~{9Ex?$1fROc$3DSDDfAJJVAIAPpRvAjM|0d;YJiZ(=$6@bjdgs$<&VA zdi&<1paP00paP00paP00paP00pasv%NlsPBrwFjr0UZ?}OrDg!UnAbC!PJV1n`iqX zo44AIUVukMP38REKT15mm+t)3tXC-w6*rVe@Y7l*Q_xVgCd719$sXq9QRU~i*V>L& oI}p)Q2!3yB40~FiD2V8#W!pn8+K>{8D4+t0D4+t0D4-Aj*?3kHGynhq literal 64469 zcmbrkbzGZE(>EThSaB&{+)~_~;ua*hmH+{QyA`P*#ogWAwRo`>cemp1Zsp~i=iKMH zfAZhES3cJ@yEF66?lrTU$<98{J^uz^E6B*p0N~)@0CF!E;CT%YChY+;2LM1I05bpp zKmj1Z;Q|m|D7cpk07n8q`kMv-6yQkzrNMBF|H!}t06{PS;y*HaFVDZq3-Vvu|2z?* z0088d8X`L<2Yc3kXbyJvEV%zcd47K3zLe)b06a-2D8vP7M(GZ7v80rh2dO@pn1=(z)EeqSX#%x?*@-Zmv~(~~!puY% zw0S`6AO}gPB}~rC399a;tYPY9Z7N{KASQ|?>>=o3>tG9Yflzwb+SoY@dWbOm4KDaX z|JBUK@FL`7W-bVplKDsEr6$7gPhZ^K-C5naSnZuG*f<0P1lZU)**G~_UL;tYJ?&f| z9xQgwG%pBflz(GLL7h#VU=A)Yd%J(Ipf7LzU$Fnj!2aU=J+c>dN=o6ss)8y`Fz5^F zU;3gN_6{sIP;(byw*L?7UwIuc)Y;y~^>2AT&VMBTyYXL1-Tyzy|8D$O@_z+2?O-mV z@^+?{{{a8LIR9!$zjR#->g4=aum7Sc|EW-NvU2>R`rjh|>dDwZoGn#h9{xK{4hoN zmxYUN#b_m^tD13BC7DbGDJ3N-#f{cue|O}&Ye(`=!$W?-X8>@jbCde_`OzZc6jgd} zs67CHN?`c<8IX*+P&TyxXrQh~7?N$sjYUtd5 zc3@aHEGnxd)zcE*PvRt+P}((Nx+xV>VfJyu?}*u|xNyLzR9h!yPk!88jO!Kf_pf37 z8OPn5WKUkNVe|9#P>`W!qkEB-r+&R`nMfnh4$o~5fL7Un=cY|OUIIIOeN-SONepbw z{Hm}Y%b3n-2t&v?P*Xp$pDT1Kb1n3++B;uuqz@qUjP*TSuT~;27C^TrYCaam_lRy$ zco+<+d{=c{VZ3soZPh5Tl};XdJUwLj43N)&yI)NIZZ%=OUGe423NP*8{zH0!MTG!4O$M>{yB~55tv~HxcL~cuNbYY* zvi`Qk|K1R07E~zS+vzRD<{Y%JG|-!R*H120c!~{V=3JKB4F|5dU?^-pY7R9s1^0t4 ze8NAkr8CH)d;c%M-xTXdXF*d!N&Dswt#;i#+vB?m@s3&n)<~VS>GS3O(}C{kS?Lp2 z+WS|zmGj2SN6uo|t*gdg1w6?XCfv&8!b0)E8tE&EM$@Hgb*G`l`33713)%@jVQ!Uz z;{yA1da3PP#B-6#B3D`%NBLgfSHf}0Y=VgR@=qt>7EPXw2PNCVa3uQSAljB$ww9V+Ys!Lg zFRkT<#LyCx-h-xnOdsCl>1{sJzT)u}NWB{`yvnw_MTGgyFWJ~E7>PlLN#v*@jIVHq z0!tj=0RSM3!To;m_0J&6mv`>k$S81C49&YCD(aqEyPmIu!J3MaXSwpKqaF_&k7NlK z?*r_93URWCXq{`!Sg#R25KdjM*v8k$a6iiC)_OZT7W`~vQ`gkEQ^~gKH3kq&f>huW z>kNu2J6Y~MkEL6)&UP}!ty=v6aJzDt*~PA3x5M`e7dGxjSL>e&#z{)%uZ%ujczOc! zM#@dLQss&VI0XU%lY0nPTuab=a$=cz^1VknQ=Bs$Uea> zYvJ4x>BdAi%B$<13Cr*NK2qE&?;iQHu)?61!02m|!&2Iw2$p-DRNVcs)bi*gpIx1pYbWpWa6tOf>8e_e0WRjEdxqEg; zoj=B-X}YpmD>5=1@*Xw0YJHj7)3SCsv#Sy&ZDlRq5<3Ue-YdA%@frYWB zW#V&Gu{YSvq2U5v;3?!h^8U6--cpygX!a#)`udG^-`z@7?*TAF&R{R)sbOMW_Hpdw zL3Y{(dN=(!`Al-`DxZ&Q?uAI09w#@>sWv;apktJ(|0V8J+} zX!4KpnM-2!me*m7iE~s=1*bEMGpW(Fl8e=cNp}wg{o%MK!nRe0tvieOnuFE9Y*x)( z_f0TY%av{P?qqBA!o7jH`aL&g%X~>gFmg2l7Sf!k63oZD<-Ejq^JKud-2(}cP+Z-$ zv*Jk_vF4H;(G8vzJy+IPDzh^)DPAf1dGFv#{5R=G8KmU~Uro*K5#Qk*Igm1WE6z6%rUMm3u3+6>h*1A{kLC`M z7_YPl<$BJIAA`=O?w$HBB0^kT#NW5{OWFDx^*uzFOP2GE^z&GB$^h`qFbXUcjgM;X z-9Kd8?_Q=s_1;e0v~+gZ&$>x9S!0duN=Qq&CWfMs1T= z@m|z+;BW5Ng#=SWGOk~LV`T|wPu6=*BlzMD$z0YZ9X}%MMSJ|wDR>FR|1C)SZA&)% zF^Uc|LZ8o`0Xo~G&?)M-6ZgsmBU%?iSc+v^`KD0Ah~&KN%csnOw=^#I&e>TvOH0~A zSYD93y;bTzlR*j%te$OLmWlsJ};Y!sj+u;AA(i5{Fa; z{ukWqWsRk%F|*V;RI`&!QhXQc@kDB%ve7@P46Hk@gIz0cI{Q`4;%%|7peLoPt}hsX^q|!ToL&fs3`C9rI#-q0Ld zgm{(z7ExHP)9;6rYaXq>o0d*BBK*%t;naRpP-IYK0N`2)WE`WoH?pWe?9YIBB6IOI z6t#R@sobnt}zYyRm}YWjr#p#39*^%DE>U<2R~;o;yBULheM z{`I#H@bY|#{NMpNxG30!c=!aARN`;gIe6Z4@v0J0)9^8HOT5H{D1V2H@Q;y`g9mrZ zzL~MJTR-Qxr<+5C&HFQUA#czKEthltnC#n#6nRc=m#*6~aCM1p1X!my?ZogKLCnMMz#b1>Q$H9SZBnk@9 z7Tw6aqGRNsnt7#8IniyUv5|+h@j{musHd?g2~l4L z4jrPm&u|E+83yyjN$z2Nxta813M~~i!aWpp|i%!ujCQGOC?OQ-kD6A6oQ8N2~5*s+vj`Y;nDa( zW{+~RUR!2<_n&SE@nj59*uNKvU=9hkoqQybXKYwU%+1laY)H1PB?Dr!&vAX^)E6)x z%PHRf1xzQ@Cf!TB*c+`x!LqxNMPZy)Ic3_bNkt*fWwGYhfeBk}hQydD8tgTEcUxQu z9NseS=dbP(u^LbJ+FQ7M3T_Dk4ZWUS%%5OFPEt;LU103m_%5bCEIg&yE+qNlBb=93 zQ`~gdxv>ah%QC{P@7NmLWw$IycXEUmp-owhe&QZNq+^^lF2dld9cw~N;@!1}So+}? zPZZn|{I5=*C&GGkSGhl!yvuxXT|U@l^52cYrSJF?tY${Y`m)a)H{oaJ<0~dwO`8N< zKh((q^r|JQWmS1dPPQgL5jpz^U16EY2MR^Y5y^oXyqYVC>h^lTWP{2rd0!1rBgTW_ zng*L9Lr|TySxm2#a(G>D3(ruog5>X8+P^9zZi@@q){QE=j7Gz7x4PHo=qtXKU;HA0 zI1*W)TAN1_U@0sz9T(E=ehW;m@6Yg#?m{IKu*ejq^l70t3-jt0AtoyO92O!^6T=Z& zO9kohNlb9QN`}k)_?WEEzs`kB2)SXqu1Wv_WZTiRNRh_q^UUl~jLSb4@A!QSE$N;1 z-<#{8FFtJEgXPHIm_``nEoxLZ7A@}1S?NQ9%@%{q1C4%OGG*=71&o6?cxR(heCx*R zJa3(-ZN3@QH}Ad+4B?9EM>hVtv!zM7$YStx>DpND`lftH&VSg%HkZEtTEr%y81jyX ziJAYLlq(}Bial(+U?%qjZ z^&pdV>7rKna8$_o!tH2e>7r5iXmohKLx^w3{PAdX1do&#YB)-rRbQVUOh!G5R?qs> z62xz_Ojva5I-XKXMtqvfwmce8(yY-1e1o%gEzbp|W3&!=1}LL(P@eX?*I(8O$X7zz z=N3)9An)hT%R6eCqTmOLRc~3a=<0%riQ9hEFIRl~lKxpw11 zEZ>{Q;J&7}&w%dmw4&HIqPG$EjGBKOBYwU2nu2=cL|Igpqb_?LpLY<_xGbnmdcDbBamx39}irXC5UQ;^D887Uxi9qqd0`q9%h~ z7w=h3Zb$}2%((${a}JKkg(#YJEcv{!ffj+bF?LJ2I?Y=AUe5r;Ky1?|l80{S2i}06 zkME|(&)qhP1}5%rD%W2tCB*dYX;OpbEPaxI<$l*iTqi^!xN^f>! z3q8!9GZc0=?+9yp)8z_tYYVt`^marndx%_rHPGdnnAj9%dHZW^Jf~VB98P|LfDBDy z>;MQ=&tE41?Z$R9SmK9A4MkDck5$=ExzzxoEiC<%*XrUzXCG zf!*r8o*%^BMFD2GqC#mj}MhZF4vk%%TJyxKfify$ggp#D8*EI-9H1u@@VI&*Sbcg zUpk&^XTVLkHJKP{owiqVvMMBZbK)J@s&AO3<%~mIQ?N+~{P_755PMwqwVHcE%bm=j zE|R5uNJ*3DpCMbD0fZsCdN>@pp;q}QyYhrBc-ASqdEQ-!2+vTo(YL#+QK8zA$H(RQ z9XHSA4A;@&)eez@$CK6cMT^l2-}e59Z&0@PWmLuUXXq@I!Vx1X-0jV`<1*EzRn z{*1Ee09tg;2i0hW2)LiVzgz!vJ}d)kTMVp@I1_O=a^YJRv-!}{{mqP<&wSRJI&(JF z!YIzgN{c9|%{JI+^O*;nsWqbruQe{iCnNz9IQHHfH{xv#&2s2=h*6PiZFl)-ay-0)SeYeSZ*g4E8(P^@ZcytYIKMY;15CPj~4_lZaR zu=vA}C)gTgVdvwV*>Z4cb>(Ko!9G39m1Y{RyW1pf>s+-p$(eA#6_Nk4R#;dUw%@AA zeoe&E(Tmwp-6LL$ug{Asumrx3nVq9>Qa)93jF+jI;OCLYahf|^mnh2s-Q4f+52~|~ zuH_}Oc-95caV7Y#<U zX`im0_$Bl{PS9yOD=F2I>_N`Tv44qOSmz_shU}L5X*pc%Ht*tF>)G=Om!lffEnGFy z06MmTa;2fJFPqU*`3w<;g5CxEEJODs*t9vrw0`4SoDl{HwRmg4;`3P?c$q9euSxVO z3qJ#pwTUkut5FSnL1dGYZ;3K@r=}hP+qiahAKRSI2J+p8x8JP>_k475S#ri`Cmd6S z#+P(-`n`n0(l`J(ctivQ6lA1Vui*bqfxO%iaj1}RIq=@Ay~3yFggAaarI7$fXIKBg z=873#BcP-euQ@|zmsC}EGWkMh9Q$`@i~t8G2KRJiOd^36)!K!h&onf?ceT8RxIKHs zOL=$U@n&R| zR3?W-$Ez$cKB{9p?Fj=Pjx$2d?8S6E5R04b-^x7$z(op_u^2mNdEV2C|+Yov0Ln7ugpzifpy&3m9Y-i*aMvM>6*4OU*qsI0K z{-EbKNfSwA=3Ly{U#Rto;dFNIJOF4`zdcTPQl4EmrSap9*w##yIx5&@II*j$HP_eA zA9<3sZm=n%!ODBht}&hwmA-z4j(oc;j!v*sH($f`Q>OWw@fo_w3<=1eoEh~M%Mx#Y z7U5+Uwz7N&|N0U7K5O2&;xmFzij!Eh^Zq9RM>vcKQusxwV~!i7@51vLRe@Tq#stpW zq;G7gJR|*WodqwOCUThK=mN_a?fi^Z^EeFF67MAnf;JY>B&OcVtRo3i>svjhIw{nE z^GTioM;LLG!h_o2nvnMjKg>T!rNrAE`LoDp+BUrV^d|Fkfg}Ng)daecgp1$}%nszr zcLrYJ!XdXxxOtB^4$tHR?~Bm~G->RroW-YJW;R*>M_@2lwmP)~Qtd@P?l>cl{1LKHkEh?_8HC)te@8(^G2( z*6~3fnbalBdn8s+S444mf_X=m8|!YdyhTEknTS&p2bjvO zacgV2)Q`%~AgMtpnLW5a-YdvF0|X@vay;48#yDpqPDG++8KLxq*qU*-k89tvImEky zIxh0Cq(npxEOm!SElNUXQXH324|u)$L9Su*T1W3A87>OBzC2;{jSVB615iYO1Li0e|tr20Nrcwj5KN7G1=a~+SZ6b_n zu6ogq7CBc%$NQWmp{#NqIRs$f_s9dp;)b5)X5D?TFP}eBcGN)gh*n`Uwm%({LY-a1 z5l5YxD`B%WIx{#XM^HP6>=Gth-tp_=B7lZEmgAt%&o6U;)RFd8eCemv(aan@#$2;Y zY1>r~$($q1;xAv~Ew0q{-8)^WVy&3;x^{(mQ__+JkE_@evdh6C zuQcK7A3Vgt`>+jkLtR+hB3LCH;-Wf~YBqZ`tQ=X6UMj*62X9XlC@?(nJLanKpwJsg zkm?9qU@f?Qo9ARMp9Trw6L1hL$;Ju!-5=APu*h-*n2cz@jk1-?XwfC`(zupkO;j|B zLi@0_+TqP~j{osb0S-qyQSXZ7wprX{1N$+UY79r%+m9bIld0^6kLGTK5Ll<&acJeh zix#i6Qf9)~v(vA@jMLJKw5KMNF~$l&X^>HR8q~d+i_E&YN@V8oO#;N z6uYN@3_?l}fXn(0QZIOUQXoL!(;Z}H5;L+%;2r%@-9>4w7qvpYuddFfSkEpjRBgzM zQo_LQGmR04zll1o9bJw5`zbd`E{xVOeIFCHKV4PWPN#oPH$L;YcE_Vux+txa?Oncl zuSsCH*oWWKa(+}{Vqhy_1C;xD8f3^;UK14;@=3wNy=&_O8?LNI`WX<&nQR8aEaqlf zEf-qLgT_k)|I$d`xw<$FB)JUL|3*AH-6}-?y+ErmzIJe$f_*7rK~=F8FC{4OhPCRWY2&atJm_z6~nqcTY(M<`RXYUh!kvRcr8u0K)Y6aH`GH? zIlu4gFm~CBAAdQ{g6~+_aNE3`MIrrQd%vnEa~`KNsHr<$Dr7c1`0!I!)^F3Y806MT zZ{B85aiwOp`bsv&>l3C9&4JbCYSjQb^x1ql2{g`PAN{)x6a|fADTJgpyErWs_7E^`}Og88*;AJ_Xssjh?YdQ|li4}GrJHiI!^R+3 z;_u3*%TG47Vm?TuZ&{li#vW>0R9;&{93Cnb{++Nj-hCNZBY5ma?+l%S);HY=YLOE! zE{N77#6C4jjU_o=FGqP4VMsHry%s$W`M$`*+i~qbz+Rim7({BGtOv*7Z32!c*MtmA zs_A*J^`(pF1YA~n8{_Rmy!$td5U*D^E()TP2xi^)t~Uo-TM|U0#^)R8ZZtB(A>!r3 zMfEn`k5o*Gtmf8!dZZwwfrAN6DhBg7;0$p)kAEJ2Ub&B5oH;Y9LLI?pjUp!GLcPK+ zvL5<0#cwW`0A)jJBcC2Bn-(|B{X6!lg%p^4B1y`@;v&`%y`ypS%1DE5xwkFm&;S=5 z8}Qv$gw6HYD!R9YI7FkOfGEu%C!wyS!q?&ZPjav!OuzsfIGf+u)3ZPMEhtGx0UX7o zsPXbkhBYF3Drwh}ZXBbjywErOZb(ryA{ov&TOV>%5ukbW9oquMTDb#V^5jh_ z6jhVg>}6>EHRoP3Mbb!=!$|Cl#BQF}*&EBRoU<0(eDqdYedptgstU=qmqXoRcUJMT z_Znw%U|`r1CA+@BzOwHK4i$6#awDU9OBmrZ;C4o}c9KA(f&G4m{xGl~L&xJsQfimI z0Bek9p^}f#qlqbTvIA5C9=Cmb(*w*-+mvY(999_GpP%)*1mKg{c-@i25v-oQVvNH!<=LzUWpWXbJ$91v|2 z_Eg*Hsinm2e*^)`6ct;j1mlLNgI($4c$Vish(vRKFH8qRN2Oo&p9F`=_@P5lF!B;V z6YS1Kp5URSXNsl|ZSf%}FG!@iKS^QZ)6|lkDNYv4?Pwtb(uXhft{j3Y((oqs_R z^(W{*(J89blndp&gu{FBRA?Uzc2$UC<1*)Ve0mw$jE+t>Th@?3%__mc^2G@jZa`pj zVBT49VGSk2f}EJxfWW{g(SpF@iGTU})_W16&Dyf$JM98Sa6HM^!e(~K{`q9pHQTgK zv=Fq1oYo|!ENI!iF2Tk;Xe_~#y`i@JH8&U|MB3#DXK;RrXU3c;T0)RkO&-K|mS@7n zdhsPCTEhJ&e+qL67tSgsNSVf9mB`%n3J2`EfqMf*uHlmbvY+;lixYyx3g`+$xu`&~ zb#3-2J$RfYMKk`|KikP9YffsQvsy;TobDP}Gr7vYJZGxrajT-f2LU@g@2pSGax0n= zYn3Q5vdfDvg9YZ@k{on&yj!0ptHLn+3X8bAaebHNscjEl9^%LLze8x@EXB}Ip6MY7V5p{3H zQcwKKja&&93aO)JMg_dQzczUSIQu})MwOgD6dq!(OVVYjBBf4L$c`ME$Pb|6i2DvQ-wYyXILCQYT8 zLC5v+eP=q{P2XEqU0Z0+BejV>EXNo7yR2&U`wo9ap8>Ih%kc5wY`?nI`u7O;5YD6g z$y)gZT#uf(ub~6lx4^lnNnqMm*qjLG+z`A?_JXQ-wrt$#W zWmLCfYFhJa^h$Ssw+({HDS9~TH-qp^+gmI31XGYn=Fd6l4yOnFF36OX^V3LQ>M(#bsntRw3zJFb$lL5~o7yMCCqv9uy_y(&R4t{)=_zV;Hqh z1HHDU*T7xRmqhOM6=0DjpA2Q(pkUC*ku5Sd>?TcJ^=$QoGLpQkmy`&0bDK@1 zZ$<%`Wy-Tj#jZ`2qrfou3G2ay$qFr5a(cc zuxUPUb&W`doPFwC@w3aY{@3<1{)q%^^(IMBQwF=n?+v5?rl}arr}1CJ{t6pT(q^=D zGI@*cHXH-31mL1XFK9h{6lV;-dmlYJQ*l(oj_MpAlR}Xw8bX-yZ975`d*-?>;_Qt4 z*{ru;NYj-64DN-~h1^FG#wh7#@w4DP_q&AwYY9_Ru8G-YRC6e4{IP#6dkqF=D^)0G z^fTbY{}}TCoX^t6x%$3VPrHG=%nwUFykDV#6ph^Kl)O4(qiBa-Rkd8Su}@&he^RX(eS!>)}e}C<<}|LLM?GlNWT$mC`7KigrAYxww)b z#r#BqWZ)r#K86f$5Q>R;4Dh`(a-FuyBcnS|s{7 zEcjXqs!}7;ee<4)=T*?Rh>tukXW}x$eu}2PoPitds~kam{P{TI%kvTk78>B|%~V|B zU5`0XoGfLUrVkdEO=<4gy$Ki=V%!gOT1YDYY2!P-2x93a8_;?NVEIGTQ;`$sQ-=oH zY&}kc#%b6G46Ft;-HGD#psJV6(;6k~?P6kiVpKqZAaeyD_VT{w?k1_Jdipr4UzG^+ zWSJGcqbNPHr;#2~t$9m>1B$3a!lKmy#y`-(JJ`(JtA6O7tGE;P!P1ZLUEZ|uc~fS!+Kz+6bM#}JYjIyWylp|He;H-{ z!D&&eJRN6^rCx6*l@S4Un3lLe{NxhbWpEhC%K6|5N&%hei{pt>dOGOL=UrL+k@Xz38tQXwS=P{T zBN;d&%`?_^Ht?Kw)gj>FdkMBOZlhRx^LwWqWFHeF2&pKHSA?X0K(68$z|c;cZ2M`S zv_s=t2C1&Q9&ZfWUQPOv?O1& z;Yf%k&ZFaSHVuV%xG1HMN9aMzIzyDvg}v)bK@>@|6|-sV@I@G(iKav7CmI|Fu7)@g zbJ8Y~o(S|HrQ8e=Hf{WO*4nv8);aG9OCUQjCcK0$=h{`><)8RriJSr(5-$<^qE7 zl62%(kU}X*89moHRwuJWBoI8Tqsk%pCcnWp7?M=bm`(a%`U2NNC~Ib#W7C+#F4-rU5&9`!;s5Q)=Cz? z(o$)zDhVzK=fcj93{wKN3=x}}Gx?H1*5Ye0f(tJyxD#WnZ&I^$;%4yI77=QfJ_=v= z0l$Gj#ZcN!h8ROCltV*x_EYqL~HiG>U zLBUGglZ80Ya*2eFG!Q?DPW+mj%e3o~Sh~7yv*j`#co>vR+hrva$nhEz_GvxZ#o7u6 zuNvRLt?B-go`8vR(ssCGPx*^~WI!%iYLud}=zED6nB6a_o)iWVwBkDMFk2`p29j%E zCeBU`=?@F~MaNAvO0<-dFjmmC;3A`}5}r;sxkhWMho7d^tlNDbRd8cavZj(c4a9BL zcQ>7%f-&l#D3k#OZCAlz^a{qa zECfxV-o;oDe*cn&niC5Ge0G{#pBQKF4RFvag21#N6SPd@gnR4 z`Kde#u#O;m8z;}1grA4=n>HB}Z8rgsTQ_Xp^~mo<@O>?HfoG^43vf4EMFT40+lPl? zx@RHe1>F-gC0so%EctazApCbzq%*(=p*MCAsl(t7Xm*-AhEz{!z%(N*I@ksIDu90@BcLY~23P-8 zBQ%^co<+l9GN6Oe$S!9A^CNw;BrRQC04-U4en1urvn5h4WAS9wwTxScm73-;J(sqt z*u%+7VnXJB5)&`Sa*&Xa|30Mia$e`3#KfzY%mnpIS|a)spHl+-l9xcnrr{bVpfrhD zqh%MDboz2er>dS~TvPjZW&-~2%*1alU!567D^iCEbQZtO5kY^uadm~y^Kf;9D$04T zu0LxNKeVTg6frylR95A8kMBC)uyoD@&E0ptYP{0CjNG^w;2isUv)l+rg6*rym{5x$ zFDBM86SDOQHQTzQKd2}Lap~-nGsY_0-4~dh+Jp#UX<}q7F<3_Zz|Sk{UP173f|e-3 z58L*8tU^S)!5X+pBkpHzHu03b*OM_98}Bn9_Z7V0eJ*KiRFt37!hxam0U8{A5zoW6 z_HKWCzC!viWU)*zER<#i@CYRL7V|*E*hKKz5aFR4VvISeKaxIdH_522;;Y-e zNw3n`y%pEG63DnxM}LgkeayDc<1L?q<+5hOsb=_MvOS*xj8~MQ|emK>VtLi)JE&=ruwh2#WGr1#G z_(qZ?H1H)=)ni>l+)#P{PmaH9C^ zbwZ5yd{&4gF)XBggU8GehEhGPbgdx#0x0Q#pgNk^K)i2y)n+pSXRP>YewsIBoba)^ zkIc^@-+KRTpQ`ACqRdPKmT7ueKeLPep!x?7?NL_`aT^*onh(o^4vfAWOkclqrhM|o z8X@UM5uhh~tzDHA9o@Ak6rhZZn(v31?r{BSrg$)*E4{zt7?)Le=smuw-IXH zUGjErUN$xwu|b1p0Cd;0{bN{>;FZ-WPkSbRW@j}j-felxhvDqLQZ+D^Y9Lro%Pe%| z6sg3gWClB~xZita#BYXKV|`hWMowVK)(W68(Jrz?BiLwZ!I*!rfkwJM#*12>1A(5; zUE`@;1`fikB6eNA1Tc|)zN4K1#`=WP;gD5*_k2)?oI+PS)3*u z(rX`;tj!Jbbqz~Uy+*Xgr7%f`hyKo6hun4k1saLe-peR z)#vTk3&rrh?p1Gh?LKHxyhh0>i|y+0fGO?~08I2W)yYvI$%~f4-{zm9pi{h;_ssbY zhlfE9Fc_1&2yqm=luyc&~ zf%WxbI+@W1C82f<)OC|O`pgWB)num1Cl4qycr+a})Zcc9q>eGZz_o)lo&hAMVaQ}r zy$nkU2_9-uG5nZO<+(Vpt%0}(AG379TpM0idz_S1&&yKE3Nd3jU3inHCD3bHko|2NbmAsT4d5qqfhRGlS-jM2)ZpSx(D*bo3YHq@x($Al5;x zEHi;dT`3gD$xN)_5`9Idq{EY_yU0_KR~l$)Fu>0i(0m49`yHanI}}C-3rGua2Bs)m zO*E8|F$L?g9DHSy*5unFbq-ZoyBGyxrGQh0z3A&AYmUlcqq26;+1D2#fJ*A06a%nX z+*%MJ5pmZA{pQuTzNJLGSGon=#n+LRVG>4a{Y&NbtM+=|3S0Dv+CT^^3l*(SzQ&lAe`rLtJxbIfllvmn zuFSlU-}!is%NLj0oyM|yoi^m{XrH0GJMhtel%d$Qg$O}o69D)@?09gUSgyp_;H zcH+G~+s(&b4Wt;-CgBpETd8e|@7gm zM^h166dvy>2ZNAzVheqQs54N2l>0 z;gpYNqWD-TpqE^!mvMy+DzR9a?<==rxK74@t27V93m@R$hwe(wl6gq2umS1U!Mg$x zX|1<6FG;YWe4y+W$*%R{BBn`Lwz2|mOe09h^Q`JO@Y6T@*7MY3=KBuEbXXW$JiR3B>M4f zzb+zPSlJphisvbeXsdpBk2L$$rqpd1=);_e=U{E^+$z70mgbiFg_vg#Z(zCjO!Q4~ zn647&JCL>CfiF>D*f)wn(ut90&CaA;sqP${R|f_;!~5Rxb}cfk^I!M%9Nueu6+U-X zUC6D74*gvQQe@T5yTs2J(BpUp)OsQ*fDmg8l9&CZzv?0b4UQzxM8ZTm+QOnp}4>y3A3ucsGD5i1U(sVHU9SV$Jl0P2d-^|q*FQ4<#+vt1sE%eM(m~X`9 zWNKYT^)p~<*As6b2fO|aLIs^Yuje*Tqaev-e|Tokcu*yad^X;eS16Ua!+F_9X4(0la@}PlQP?KtV9v5e{fxVTF0W_8IU_ybT8c~koAb11!{ya!dsx_I6FaAW>IBYxPimEs6dvu4oM5LBC{qm&uz1Q5;ub|(@{ zPr&0xf~8wU7&}Z zQvQuOakhTku-Y&6NIxQ_??3_p@tGBmtEXFyoSR{V@2*VR$6?g4FoA|BG^Z?pbW;S! zgN)kHJ(COJQJDG|snmBp@s*wO(%0(O<93E(^GoFf3RqgCCNhRlpbM4M)YTb#LOus! zPit%;vyWZyeYXc~YtGH(3KQk&hTH;JY7h#F%ObGyH8fxwjFVf(Jv13=D&)-4YR5jf zRi+JSLUS)Br-)~UEfR%}dP(df;Z}qnDV!rGQn(kQxay{X@k`*}PyF#}xe8XNFP4`f zb+8wFZ%BI3*Y0hKVj|T6WG(0}&1u&RwoQ*sLU-ZDiHTRv2~w3c1O2Wc4GUJOk!Ax4 z$c)Ps$oOo-W03K@<)``3T)=Fy^ap44;gUlVQT?Vi!^oRPU~8xQA&tG#>u^C(nkM(R zDb9nu76R`9f3(;)<>MWVy+T78Q{M4IH5!~0Et#|mjhRAbdHAl=GWjwiHHwJzHLEs_ zN*jfN!C-ST7dx$}=F$&wiVz()npU4i#Soj2&`{5wX+Mu_fZ8wtM_n6%qXN#+hM- zf|~1pZwNgeogh=H8zsBZW|N@k({P^fbDy6vY%+c_#5MDTfX?La)7}RHoM%$)*J&6YyNa_X;WwFe7Om1{qc{TWrV9(KNpYagoFKDI)@Wn}VaNJ9hOQ-*-iETh!q2Ch#zu1TH=rfPMoK95)JZ)`7_KokweJ+IGGVr0oVU$!Gvy7)eWuh0f7 zF;{*KZ|v-$e1AB-Q61c4E!ddu=;PIg5tWQRd^eEhoQ;#;@c4L?m;YNKfG4~_(W*OB z0pyI3N1kAH%jr%av(OfWIC4X-EPSWZ!xzM6uoVN1`CQCs$Y_iu?~HD_#v-} zr?X5Ai;6D73CyCp0cScy@&s#5n9mRbJ<_z!KE~5U{Sx9kFhwpq%pgNMaq5FSYEAoZ)qi%B@J=hn zb(^pL#>M*6>0^qi(awrbjykMfF1R;~GM}tjwk<-$uSFhck0kM}sm!K=)|{h9kztB> zPr+|PJ2QTbIV*?&#ZdVAO6L6M=)~W)reXJo)NI8g#>J}r*-h!|g2q(kg#a*qnu$aX zA|xxIF(Ky&t{W!H2O6aeaW;dUZhBJpl{uk$kJSp%f0Ce8Bx1dO9 zW1;k&O0Au2IfV?TT(14P$QG`fx#7a?Wksx?EVqolmzZ~ry&Z}(pQy^C%itbG+@fNV ze!rmut!Frkn`eA$^nU=PKwH1hoGeML3U!o}6pvQsybpIfMj3^>h|8(;I$8Oz-5H-O%%G~vd!?TKxd z3@tNAc&!OZIS3Vx7xL`3RQAoR)mwD9)}uXOv0pLW^|X zk#1aL8QNF(gca*wlzo}a`c5>;l&YFL{{ZHwM@cceyl&$pAGy3;LO{_}aD`<9fxK-8 z+Ey!rJ259Tv%4z%IvVk>2-vNzMk6knxz!ad`hbd)rG=vkQrvCKis+gYrm-uMM7=cS z3x_Qa!Z5kPGKLfH*Rs%*1qgX5p%lFgeW5(2-$EPWR4d4nPpoY7AN59el~`4EuP+Y% zF|->z?DKop1p{KV2^2ba+MEv?))~R)Csw9|C!kHuuW{IP;Au~c_6hqvnL@R6+$Of< zVoFsLYg~v`%?(KEttju;{bBLa9^PULEEoBo!}#?$~2H#W$hj+5oSB>=Cm# zULcu;&CE+u>bj~G(JD5DCE~6nNn)JV{O1Xr~jpVwJjNY|XQfbb=2%5#@{T!h$AQBFgurG!t0W|^uALG2!UVG?LUGboLD`SaIE zYH5b#@}Pl02E4m(8*+zcu&L1BNU6Fc3*RvM1LF?t&MKEwp(^0%sPX6768K&&(rLI@ z{{Urvkvo86PfUWTX9)iQN&O@2;|H9Q#aJ$|qzXGyMKx_eYu9LI$@A9sG;S4z^yoNYG2Vy?98{LIp(7KKzdyQPY{x}#t=E$>EZaao(MutDtZhOpdI z3vnC2#9>0?qAf^UYMGK*2q{u&#=LLFBr#Pm^sJKZPHwFtPH2`Awb0i~h;h|#Yf98B zk5p}}x?h+z_o_R-eVRrB!cjWLm#@kmWw&HEOdu$w3eDO@qXofUmTP@FfQqTbD@_WG z1!yajQ6SJ0O3+5xszf4P45)7#DkkT*ufoHwHgpv&$JKHTw5`eI{{TJk%(f{!{{TTD zrbeQvRlad0gv(0FGFL*SX3l!Yp9oT9+LlX*DXGj22Am^mrvg-&Px9BEx9^FDRZ@(# zsWkD0OFrLFfa=mIyvx;ELS0bx)~ayne^~T~G|swzsP)IBIDMsmG3$eUe|IW<(cmL0 zc@F^@Q|^xe6dZ?#-JJWzGoEo%%=p2+x9yF}ebL|}a-Vc~2;HaMPk?}cGyrxF-@#^7 z#NrB+3Ts19FIZ;;lf)8*meLz^RMz6()+O);q@_|C%0~o%5;crQRSqx(aym2>fi;Oq zObL9cah2=RNYkrWn3hDrMB_h(>so>QTEwm?Gb4!Zo_Lv4N>{S~02pr=l$Zuxhkvyl z0R(pI)f-n)GK!sZMhFV0B|6l&b?FHyWjyPTLaRBbir)2fjrx6(>{wIMJv)M%4R4%pchKR+)miXv>d!{Cg$XgWO~oJ`CK zc}h$is7N$1jD4ozm|XI(ob_<3iPwxyPfg;JeH*1fDF&lLD`+@m;FjLd6?a2YY|G0T zj8K4)=Y&qThE9^?i<)`k8@uGLk#13LUmx%Dh|WK`mT+4Bp{VQQ8y}A&5MW8XXj`&* z#x05Z9G+&CnY03O*Om3wF)y^)d64=-gHB5tWh%Mh7+xs$Hp(Z{HIYKJPdm~iF(-FU zZ;q7dL&$D@=G6(D+)ulNbf+J>dHt?J_RzgjA<=eTonT~EfakS00WYjWrcV@TbKUn)l zS|u^BNFRi?J7re7Dx70wr(AkMT4h5r(BI}}<~c?=x0sZa=))ym=%rWF+P~HvoSwum z2Ue%Q6DTydAB12yC)~ccAom8&w zT~u?ZYu^}(aaNmCGmK_ngVL&cfyRedyNj29? zW#=0Wj6AFXmAojFrDy;v)+s-tlNio2w|1%R&;=XT(@>&PbOeHVoA=s~!)itmVP!TC zXr{4)Fu&UK69ju>y7xX6g#Q4Q{8fd2iyHUBOPM!HR%VSW3~c5Vib(EKkY1=KwzZ9v z+4(66bRajG(bW@;nRdd`Lu4e{$AoQO*|&$ysS`@d)qQTx$ie>5O!h12vXdFuRR+CX zeQ}Atl`_Q9OnsPa5mZF)dT3$ZS_Sq}J7|y!6knuM7pVmIp zw#`Vxrsbuc&obf^DO-yh*w)pkt%=}8L}R#)A^SpM)g{#}PJSVww@T5mc(ryzdKPm_ zCBu{w6jbO+P(RwV=R8V6xkRcaoyA*Ps*U5o->G%u3z;av7O>|@4I{*l);4{N``N?( zVf{oQBXS0&_v5eldj9hdC6p&Qs6DYEi3v5O*>kRP3?wV%3NQ^#96#b6ao<&?j zZ>Q2WaiEkrF+dWESH$1z~|jYz+$3a>*zRZU|Sm0J_?ZakgR0kGqh6hP9IpiK!JL>y95X|!ST z?p4Wv2^G)_^oD?*Rj8q=ZX*qq^l4_89sV(tir>}$03B1z#Jt&L=55+48QMHawB<|n zPa{Ka_)OG<`uB6q{$)YdFnluv!QXYsLWGwHH2(me*q6i^n3r1(x}3^M6t^gp-C^=8 z-#RLyqwzmT+fzO#S;X+w=4mB;8+LJli(|OUk4w1Hf(QxBR4HM9KhhU~hvYpK4&`-6 zrEPCs_`-0uu#_@~T?$%3uul^XB`S0AKq%m86B6xCVG|Ov;*&~A2^@Iy>hXzp*meF=u8Fl{o3jYAINK zUXl1&NNqLtsxNp$2|}uX5ICOC))bap%A^dcr^Hsb@cyu!+03Q%mYQ?<*UvcK5)_eq zl%yeNqVs1fqcv~N9L)DiemXU%%Sdl{KqyTK_K6%Imr@W^zIK6-Hk`h?t6Oq~asL44 zpZ~-FTo3>P0s#U90tN&K2MG)b1popA1O)*G5&#hs6cr)|AtNy|LP1edVh|P}Bw=!b zktH)jae+9G?goO!m1eX!&CzYXW5 zX_xqdy30|jgGu3?!CIbQ0zXq0C1V_7?KzF|j47T-Z1efHkLBszEnw*}tL-H_#3VyC zu2Nvbha!B&Amk!KR>6-H_7fwx2kajc#suVNnEayQUHySb-P{Jo`x7(V9TDS9YAN@jV=DE^ zhd!(-jv!P_I2o8o#eq+e-*ku^jl~uTA4`7Ei~~q(D|_4p-m=bJ3rYBH1<|VZ8}VTK zGP2xXo16kPcwp=~>p`CN8GapEu64xQsQOn*cw9Wi(}M@b?k%pIXonUX?8UI7CNC^X zn#ad!_SyCUzlpz#c(xiYwtO=ed5BiHkINjfKQIJg6ZdoTAVfB8@_t1okBcj@D|rnD zPVKWZ5TnP8*-|BDIJ!Suq?8`T6oi4E(CZHE++J17^ySySq$$yzPQOOFgPUz2;PIOL zSOueC2{u4>-Op6xsPnwfV3!r1mL^{Gir(O=>-6?(G0o$NQzPa_iTIC~%K~G;9vFLo z2hXtg@vgP>o6iS>qhsWgAHw_Z8JUR2{KLer5`-{|c44cl(wY7EC(-h4I;}fOj7hb( zm=K~bC55kf`^~K{D$<4E-sb#@0za3FihCbT6d|qYDqCSUO`e;wOahjuSecrr`jL}+ zM@(-qRAhF6J;q`OUX$LC&#(RW>iix07#ze>xhi2{c?V!NV1(E zQjniJnY;{uIr{U3EV_hWV0LUX;fx$-0h|a2KVEhyFrfXS9Akgq{EtB1jZ#4xUcJGM2J*OIrGT{{Xs+ zYu3z&awSWZnDZOn6o5Y@Lk;qY$0z%v{VU6^i)=EkVrhLl8p%fJ6In9Z`BEkzNLMN> zSg9XOk@;O*og)QrnR1>RXz5&u+~>;(ASgcs5RSgkUI!p*72y1%En2f5t zN+HIGXBtokUKD+w+}#5I0BxqI)HL;0T9(5RQyx_6YdesU2e>GSP?u*@7QnX-&4H46 z?CS45XG(=uBhi&~EoU=RQ-y3celftTfg&u6D{0I@O_?H8%*XA8vH~1B+%5_d04LV; z*1KrcaC9XmnuQ-uX(&}y>#d@-xV6lBCPjLp4A)IVfZFNOn&~qn^(Q>Q!^!9dBrJ1~ zn=MtNE#-jY0bgAPdM%YIMsPb;xD>gSD9OJcFPz)N>m4UPRc$pC1?dek`q?gs&&Arv zr&-7!9fCz3&`x7aM_@WM&Vh!_;l(bS^h2qtG_Ry;?BCdGZ8vF82%YH&6_(12*xlGd zn;JtR)rMk)BhDgEoR`11L_nBxCp=QQ66HQqmV~Y<0kRxzFhq2StqB$$L=d15NNoTC z0prkiy}rW-OlV(5N2~6qcZU_uRJ|N@Kbm^gvm4~Gp zS@#3aE9|t~8Je{77athz8o04)(%(3D4NuxWFYYZAyH7{{i*&`+tQvsjh;~(4NqFP{ zq1?7bvA2FDZP~I-ZW9&Z(e^xgR@B;^kfrJEEu-x-r`8m;anq*n?y;J>cyv+|8B*fM z7)_BC%Idhz9v9a==e^#Hk*84#Ca=`8^%kkcyvq325^3Q!XNMw9ax9Y~B4%1wqB;U$ zM>7ZkED^K2H*uopt5QsjsI`u))f3e;Ay%Y@hP?ZE5tN~XDN5wqOw7Pyqk);_n+yPU zaiu*B`Y^<5`74V+jZAo}t+0`-wML;tc~co``vk}-6{8+%kd$>&l*c(BXV6q`-_pjb zeR5er=(Ex6s>pDVzSbB>MPwRPRU{+rTy)BGi)gWgcJz~-7U zpQBf#VMWe!KQZpJPe{2zXuReaK!+UD7ywVm1RP)LiGEmmS4z*6Y}?PKa*ayojFEYB z*{Xl`xR}j9=)3V#P*__PjNL%ZZF{I$BM&#aV)0omG2tbXBs3ar9paDz1SiY}9)q-M zmO!ruJ6T!B@g+Pf>$<$NxVJE*TTW-#5kH@Ik^~tzB-naJ)Zsj1p4GcBl_(`DPQoqB zj@UF+?FNXSmV9rJg!rV@m8(mpQp@fE55dN8d~UJzlc)5~oAjsX{{TSM z(?qOpyyX?w+Uol9Km^I>I=M6!43PnGTZPoX8L^THJ&*X4(f;T!OH_J#CTXWgq|@43 zuF4KET`pamp1kbLu2~97D`iEGb0)ZpX{SA__5(-{(;_uI;kmu4jiRn9&2S(?KGwS0 zQY4{Ks^UaRbfd{J0_hu%ud{y5oO&Yu=XaQ-Aw9ak(n*7`v(4n{*W601CxZ!Vbxi_0 z4!HS0I9d4(N5-K}p!9?2`rpyH)Z16-zeO4rt2XJBhN#g}iIWO~5^JTXw$7VlD$T}n zK!6XX)QI{skEf9eCa%=d^&YClyvq32GHKy9XNMw9ax9Y~B4%1aM05ngj%E-7SR-e4 zZsK*U_VwpkOO-xr_AOmma~yAy?vh1GUs0xI(oh0Jp1=VQC*^HY&4r(o2PL2E@y(e8 z{*HY^{ma}xv%7!X;08;YX58{v4h37YjC0S#Bt$o>=mb zkJH4JJ+3vHFa`(DAIb(pIL}bN635y4c;uEeOYd@SIpg(3U+Hn2sFwVH{AJ7enY4dr ztH#%?z`ml!M?6Bj8j36Y!Nk0HMy7${v~w{s6qqN8&^pokfl$fI)9piKl_mady9%pR z+DeBCWe02czYeM%BGpo23xYy13LA=17v}+n8BA=qA0?#EwNzxKx3!vcKvP@J!@OpF zR-1HLx`f*p(T7}2@k5rvQ;!xPsI7+?)4^|+nIJt9W`Gqz3U}&X#;GzzPw`1M7=hRV zUhhN8hJU_YZh9I*&a~{y0)&Bs5fNl;WdOXwGin`lUYgb6U)RO6?#;}W}YHVV~hxojS z@kyy=#f*5k@otlUgF`Z6fDyJd{xS9N?+entj_9vnT2+qK^tx0a>VivSc5)mO23bIh zE@XV=PL&R_F?#)^3l&eKVTL-Frvr4?pJooS30AN?NtFDyC zLYG-Oy51fq)!J6hz~WR1@p_75Bfnq~^rR&Gn>Xwu1G~{^r_x$~Ox+cEolcvkI=Ik^ z1i_kT3~@E2ZLxSDtRG|F$uN$PL!$r~9+RY>J4$KAP-&=|Vy;b;{{R7_k6%iO4+q%K zvXd-E!e(+pY!U#ICn*J`JZOy@r|qI$)%riusHb(MesWc_@8vk=Udpa{2$YCq?%hd~ z@Ho&$9zqj3yK$k=nbei(ffd@b@ozZPw$Pw#4$8*GbHqh5qlO~QDz#S0INrbsm{4ghs&xcpMZ44b zmb=9$?1me=h)j_bT^*goHxafg)gdO5GC#4h4&5uGG_qh}`(x<}98`>wk<#9Cq&h^| zvhqD4=!@l=V{>OgA=N$Ff(Z z{{XSLPBnMp52IZt(3mqj-4~@XMPU7@YCBmHyV+#OW!37M1P6PRli%gp#a5ZR)4B^= zR?&2ZoVBi-&CH7Bp?wJ99M?V)`Jp_N4{DBIM*;@o4i{;vr;MD%Sthy+bc9;UxaXV} zQ34wLs}kfJ+QM{~0+-iwx=Gn^m{l5MP*&cmBCTn)T_{}EO6+p;ig`y`J1|Ho4lSb~ z5`4#~2edXv(85kGzdg2BvW#)$T zVW{rc2@u(;FSL({UrNMO1bFYBWjt%9%2GfS43${mF$IBvfQJX50X6ETZl(Nce1J=a z$@Un5;lPHsx$QdzC)$D)2n=24>mR|zjkcaeT$vVCXIACg#(c=j48Am_N>ZcCiTUJK z#R5q@oftWm_{ZefopTPwnbfJVeW6%C7&)dfxR(SC@L6zzv>Vvgmp;H?3s@UmRmzNJqGC7n2*Zsy7D<5}I$KTG>3Xz4 zQ`D~yuIluj{^CTkWas6%DK8QLGr;Uhc5&|fj0g^LS>?+Z_2)VIxp9WhEQUQ?l0P5q z=lMU?`2PS`j4cWU57ap2oc{nmOU%#O-h4`_n8(4LWgO*ISw`mZOt=fjaT!uq}!SJSh$?S<_i>um?k zbmp20p#n9CPRD#xf~y*Y-d*XXD|WCW{%<&%#XQ%W!Ah$m;liSie)|{5e~e z4GjGUjo6`u41(mVuOdEKA0_;9MnqSut~=CD z1^^it7X#mf!;kZJMwP$%JB74&aNyB;k4~=6Z?0Z7g=6aN+mGa-LACKl(lQ)hSF)Je zKy;jwz$Cnk_=6(>b3;(-czz`&0%5wWZDcx7N`)fzaVD%-p~931MVw%87@ou3yd33n zb{gy+cb;Sk5teh4_Jl+IUnku8_+Vix62kfJ6)ZFHhBJ)x#D2fO!2p;MkHk1EWQY0i zKM(DGN1Ko|dF*#DU-KXM!Qj%-+C%*!So$-J{K8-D_kZFM034AXag1Xgvd(kr<&1r< z0|kr}hVts3J$$`?0B7uv+WF7+Her`k=hA~TRaJ2r%!1om-dJnkG~=Ex5-_Ib%8GdHchS-_ksD(-*dtf<@6>c(R#@ z%?$Z7hR0!c#J7*}!b<3vXJPLTHwi|o(0Y3F4DubupXzAKBRq2M9fPP5fg#;P@)PS0 zHvEyCW81TaMXl9#+HJ->!Y;6{D;Oy*Tl#s_I%~ToeLLFSEd?MRb9T+!8)>Gi;cCj< zH`!Y08@ij=jmu9Xw*eM!dIU`7u9T=z+{Q5ToTnHDY)j6E-3vl4X1@*qTK z80^L zrJXksWD;?bEXMF!{m?os^$&E??f?UM?|GT=l{9iD8OWA1_5MerTdJ6PUcGWvs*_`D zZK(8)m62yXT82O=CjCWmQtKjz1Q03db%HWaX7Jy$fh!yBJ)!jV4x7*wR<{KXRh)U6 zuH!_i%oPP1ZZ(4J**-!uGS1j#_KArgtb3W~(TwLR*H}_eS}RlP-5#hjBTbSsZnWKe zdFaeG!xqV9T*aKG&9i-cbk#>hW7#rQglHUBvcFtKoulm_!F_(FtWw6<>Qs3B@Q4Jr)3WzK1BBUI4Qx9pF^xDNYx+^-HYl)(EO_iLhj4og_8YvtULxI1of8YBB zB0$2*x;8N2MXxg-FL7cPb&{hO*q9(;uzJRCMTAyI@AQNev{YW-@vamJhV=&R-8z!B ztW=%bH;kb_W&BAb>n&kOQ{Sr7*4V*Vel4N~P|WW0ZMl(a3M^p}-k!S8+MlrqFevq`pOS_w$ma-KZJ8vdZ z^EmxW2UuLa%GwYsh6FblbUHCQQf3|8Nm|0T94d<~H5(Q=gE4_NCa8+}Rn9~|WiP~b z_G&u5k$@bDCUyZ95y*76uUk{HEnIs{Tg~jO(+UNp9hFpDI{ciZ$CD*$gKUYArA3J2 zvXTW|5*L{=PT3UN!mj4hsEeysy4yI8Z*gARYE-H6mMJOL)o|=saa2uAIp~dD+{rn6 z<41C)BQ}z$Ywp!e(q<)QEw-YEL0OEny`Jfv;7<*^&$h~Zp4WIPoipJ~n=@0lP1lYv zX&JV$6&PtQ0(GPA_Z889aYS}qjH_7UO@h?+KzJ*jl0PLW|d^-b- z=!lgf8RpLEal9^?M8`#HsbRgYlW`|%0Wr6Oj_qe=t<;)Ik5nE`KGA+|hJf*28S56( zM~-a?UVh}`2zJTtJ&)n}y!XF9;`ej%5p4av+cp zhmtk3cb_=*lfT9vpKjfuo-^CTj_C!sLz(qYmVS%}azp%H?f%Hm)%FX4v#PL>rmRwY z(D<^uRxk|k)~wX#bmc=P0B?&ZT@BoX3=9PLiwji2t<{zCTDZq18kYvh1*d??h9QYS zmcd?k1Tu*axjb}2N_Q5^eNm=##)ZY*!h%(UHG+{kEmh^4vxBd=>dPiq%x#BO43<>2 zJLjKXA&A?rN0$&w;7&CEcG;P-%!!SDk-M@VWEg1PT@D(1?EkJE|q zR@g)(_J%?Iu;0gb(lxm}g}`BvJcm8FEa0}6vo9|1v61^fk)>%_9VkYYudsxM2RyP~ zY;I>W(G9sWq-e>T8$du=tPFYBHfQ$7`JoBqX9bag%`YV6gD?L%K9ynSvu z7HVXIt)27NfNTyaE$w1NwarGdy4J1{CPI;8KTxI|dl;>6=Wvq`qXk0?rCHU62EYR# zAP|S>{zWxKzL<}fo2#s)>Nx6{XK5T`=2v**NZ9GU zEp=#}H)o`WP+1P88(h*_c#ax_MQ*0Aq+<}fISP#^sr!Hqp7Uv|e-}1#uYDU@YaMMv zq@u;J(Jj>THBtB#g)EG}R^rS?mruD6>QskUK#5xGS@~Pv3Q8mOlKa=`?J*x!OqE|c zPOT8s7FSu3Stc~7=M`FqP~Fm24_X{?=~UCeN@0hELAX1PYAOHr?;?|;CU@12D18T#HrYNGM6BR*E3`x!C)T=Nnnv@pz z0l`nUKR*!TbnDG9G~0CKVaixLM<*QO+#j~~mhd|o<;8!MJsSAH#Q99jDywl15k~qI z{z-`}$S1)#=h8ne=0!_T z(^4k>Y;v6jSQ)6nGVm33FcUUTnv!XO;zQCcDG{(MFr%GiU|UKXaJfCtbJjE={zDTt zYUkQS*6%NGs5{WzG#~p^F z^YIQfZkyA!D1xmnGM%_ORE z&s(L4-NcwL%$(z<-oDkv%7Gh`=V+f>*>qb`80hHkOHbI!vZRx1<0AU!&dgJg0gAh- z$kHQ|p{e~T@#buHS?AbWIHbo)JS zH=k(uRW!@4fMN1K7nV1|oOJQkC*qK%t~z?n=>Zo>KVyFi3rJHS$S@;DB&D$=7y}JQ zoD7ADF=HSNTej>21_zUA@r_-badQ{KAgRXab}?X#Yb;mcNV1P-Dg;Q4WUWcnhf7FO z(r$DzLnh2P_ED2x5`2|kSy|Vp&^J_wsT)QpB}`9M(cu+K?7DI=GGA6shrAsswiINv zz?Wq!NmbU@%(07CUV1bWJ4$s!uUQrZ8yIpYEz=4_2@04qC7qM3aU;6`f0Kxi2OQ0@ zgv^K3B3MQnjo2TEi)Qb+<@o+g1Pw=f2rQVHZ6nI zC$O`HCBa)Vx<+|rQjE*18g*;pwG%q%6wFFZkV3wEsE+GMt&HN9+UPY=tfl(IU2P>T zwvcE+5e#_hhhtq9GQ8$tA9^QPw-J9^k5+M>60-m-F;fqp&4N-oxXv^3{J*cog`IR|wq4((D74p-a0J#t zrh!R`P;y|uH=2CIiVZJhpBC%?03>`|%$-GFs3nA4!>6sA0yT$wb!K4#o)9V9eA6uC zMOT%n_wU{x7-@|u15&Ci@yX7=j>?(#$-lqtaqY7z7?hZ>X`|vrbzqc0Pi-N_W)iF& z*46E^kpQ(7=6iV3s-#JLc-66DmSNxyR7mUz4X}|RvP4v1V2FX|+F{0pyUnCLF?5ix z9RbzbTX(B#D=g6uGN-anZ5F(B79iSmkzQxMFZa&E5aP(BQrs_3S4FN&Yvw?AhD~lM z;Hp#AF=A1OTPre)rQ92n%uxRTZ@f4LhH;QQbI1F9q&~4R`+uv)tAt4$d+=<|ki z_lpIe+&_oa{%$?l{;wYF{_Z{5{oj@D&mQdl?mgN4+Ej`?}iH?1)4;c7IZ!C|+un%_$!8K`&T$Bl}Xal&eyt(bC=p?WHn+KKoMxnkv>Vq*gYvO zFhdZ8naJEY#G1I8azk-|26%mzn2(J8terUxO3QEZvo-QX?-ch*yj2vTiB>@VQQJznwCTe&zV|+rJ%KyS=>mJF~%$>v#O2K zgf>h#&jaqFCx5S&arA%9{{WkY{-J-HJZXBwq+_lf6>7Re?gH&qll`J$5g*^laj5c> zLf_zaxQudKxTy&R3D}R5km6F%J#2@yA`PD&@Z$)z#crY^Q6c>KlV$ED57@EEMUNF8k)`HpLRpUoe*3l@^pyz?JtjK7%Mv2 zkk^wC7d1@8W)^XrjujzdQQTcT832hH`isf4e;SLPJ$@4p-S5Zdl$hs_o8kSj;38MA zC6YWVsmY8JenG8NWCHxsBt2+(0=$Wh8BVdD=oIj*te`>h_JT^q&K1g&s^QSCx+o#7 z?{6aGOX_IQ(5V@LSm(pOvWMcfwXu7U?^I+=HL_BathJdH^GV@A_sBZuteP{E0xGii z3)NL?+XUMm0t$NhmO&TS&-hUv&Hd>!{kMGIslua2Q(X6$rASB{oYuEIl$9xDOmi4s zP*9HZJdVx^%T-*aq!yx+CMhR=#!6v|hb27-yOC5Z#vpE-nz+bGP5HYt*%Mt3X_7c6J(ZDPnw z2pX?rBn(~#U_fSH^4b3YL_Y^VSM&b>xAghG4_6m=R+f?IXlSAV$(r@|QzzL@3HYO- zrK%T1b(Mv*y6Icn)l5355bUgH&5hc0WNDZ&a3>;GEJ0W{;bZ>*sx1uiM$d<6;LB+4 zY5xEw2J#Rhi(?g$+s`{PU&T8B7|!&xeVc?t@%&LAOLs@uyi7PAu%aoD@99jJ3LEf0 zSx1#2P7(XWuQ>U`cx*lc4qihI#`K;uh9$%5=4pCZNobDY-by0?{eLGKj`mW*97L5k z;WAB%nCv$8wm4-miDq9GdYf9*pGO4n-Wxa6;~)OnU;e0{qk>#?x$Ff!<_TG~f|#i} z5*$FWA{3%Jn)f$u#H0!4VgtX7CVV+inq6K?mWD=VdJHKW17s785f+-JN`ZV9v_SplyXQJdfC&Jo|nJkEv22O`#(7s860jHQI8?d z-HurI{oJvs*OF>(X(};lTlzpIv>MrPPC=Is&=)uZ1>#ntyE~XVT(JC?sP$r`aB{9dK76rf{-}faguyCzAFKF zkt(ma>Jft7T&pN=wTf9-nQfU`5~A(fwEFuGXcqn_Ly103OsP>^gjq!dGE^5d3jrko zC2c{m8P4DqsKeF3fv}oFIKeRRB1e(NF_SzjMPfzEce4-=umQzsY3)0U_DH*|fnc22 z#jG02SqGd?xyED{=Usr{e=tDzF5Wu>U>Wc_dqzitFA`^_Mbv3C7YXwsK;8PaJKfch7{j+t!!RdtA-a=DY8Z z$#$`1ucq9bHNj%W$Z_xquts5-i$8W+oR{ zn8uicYl>%y0tzi`ot`5gBulu3B0BA)b*yOL4C|p!jhupwAqmS7-P?{-nO!GI6Wadd z-flD1LWX6i!~|h2EM!TE!YO)8&I`?gCGsz|>+*e$6E%;Fscpkz?3PGG*m+h|tHitu zrL~X0izrRwxq*-%7@M*`p%?qIBra1*}MP+ zkrmL!+e-H}QF@t;4n(T6l`6hDwbB^K)zY5WF`CD?+>|Yb<1*sj>G;96qB;=}GCQy> zv+l6jIL__D#m9JLqAyx$F(F(A1Lp4cst#(LBV|<*F65eaC^S@>wjO3JE|9`b(0xsScXo- zX>~Esi)CZCwu+=o(}yGz7R3^fl4D#3r3;rPN(nMtyE!<$)P26wObtUiE9=F|avl;J z4z9MSrtRou2M%$|t#o#{CBu>A=*z9rGW=qirvnr5fvtx2Ud`oJ2{*s*N*gKoMsp&Y~gDBEswo8OJ_&&xKg$pY#0OV!l$>FDU5~R_48hU7U96 zOodx8Mrx#N#K*%~6{N>IX`Qub4#Bc)zWUAOnGA|cnShbY<5qEocIojSK2`bSWI=OK zGLN$fXBkhESPZq0rwpD}Wtj|w@IW;T#Yq)<`{WiZMm4@IDnnw*YitY* zQ5okMAskyKz{@~7wy8Dm#v#bix~;#A6Kqo|L9Q)~8ZP%qu8P3>SkocaInyg;59Y-9 zkj5EFv(vY=@zxuTMEZ&G6aq{_cbjBJ6^;qA5RJrJI;~1RG7a|s0OcwF0P8IL5k8JW zc>e&VZ{Trq=ahz6L5%V)T(g{huUBS&cMO{sIRR%xT%7XuN8F(EpD)YgEuLMTzmwnu z!A5YjsB^pn7!V@L^3(W!&#U(ETz>vJ=NuG+s;Rf;l2AsuM41r4v$K=>5#_`dFnMj- z@^o#6&GC%(Y=aTvRn`5)rNo+u@;cQ1IVLtjRfS}CM(^MRo@T><`#VIYTjjk67$kH; z{uZdym2q^ zth6T10@K#XYt)XcGsK7`E5iFluFR;VU zweBLyjbJ4xWAwYNvLgpucEAAg1m8&38YV0Y3#Lw@ppj!!Q!>rhJ0(YtF;bGjal=H2 zvWUs#4i3ga_HF@BaU-8Tc#QA*y#D~<_)%9MrQ@0EPpSrVSDAqZ#_%UrrS5Qao{+w4oTz92ZpG_kbQ zG`-|GO_es$-Ih)Lv}Vf8)~;4WdTxfcU^>GoUAuup*G~$hk%(z;S2(nn3p=~KM|L_3 z46KPM^Q#YWLu->K*z_Ef8=;<|^<)14RYUzB@JcV${l74IH+&pwJd6>SV49hI1|MwO zCpO`VhjC?=j^gT5YAacj4Fj@FN=NDGPXze1HoICJ`Cz89g*y$blqHs)prvjko@3P5 zbrv$Q99%tEZg*d1{gNFfHlMi6KJ7@SP#Cs6c@`5af!T(2@o;;4sS_>tK&VFT@=dUi z9&-WVvX_|0&ej4N=zQ}IWT>@ni!#C<^{9p|jHEWkFp`vDnL--_Zx+=O3uA4gA<+vg z0l~JjxXV$1_=%++QM?P}OjdoaH8#F~wuKPNhfQzBOAA7=gKN~M4_YexT4LE_p4>>Pki)=W%$Q3`dXgnUGDK67el5TL4jgI9n)VEwPRey3 zS8J9-5Ti8^GC;(L;ARZT3^6ax6WfmX-<$^t%*4J#F_<}&h|(7lOXBlSaG3I&8fxOX ziQXXg!k7v?t(~-;rjne$Mjd*t>DZTLrmU^(WLZUW0y>#LH1-!3!j!aRMMRrQvM7_> zF`~XxpI)GhSq!rn7BN}sgA!d-w31$;5$Cyz$pHxaP|DoB>1Y{U&`LG7O(nIJM24%L zRBx`B_-$Zy1W1-lMo2df?U~|}{z}LG%(3C)5=$aYZ%CreRG!z7tAAE0w{FpoGY6LR zw*pRDB6a21E{{U&g;}nsdT!Frz ztIm7#G^ z^ic~+1cNgeuyEw5xZRB4uo>B$hcVsp3ps2d`7`qGFyc+4 zFfBKb-~;T7d1U$LDe=FpJ9t?m`$m~1>$9#>bxZxk6_dhN9d)iZ&#}%QVw@e013m<8|v&PBuzfL zOKU1h**ITx2OaR$7c=MiNWGg)vXrffNqGUz+14oZvh-Xn4Jr^%vyq4f_eZ(4pCwq4 zY!V&SDG}PFCLCrWT=>8!VZ?Eu!Aa5@aT=n&jr3tQJov)f6t?0di^z5}lG)R0;!#uC zb}*k^UugT8I|9y2(CE^IF!;5+ z*)F`9l8Mq?r>QjI)uN`F4_i*cuIM?BmomsB_=>DzPnRCj4UI$@(yYXys&skHtCeM8 z-%jiuE0?P#7z}?-ah&r10OjES01X*q)tqL>m-CIZ-247tqs%}3+!6x%#MXZP<$*N4 ze^X`*h7anAey8025wV>#M2LVTNqmK@kKdIkj3ujg!|a4So<;2A>CQ3wKTkei^Jn{9 zYAjP>lJt!ENAnbLyQJ)#}BnJ$}D`X*cWs zw;A{Py?;-?==p#1@e+c4A6gVnu&zu8?UBAsZsS~8Q~AeDKwDOjGA zF{c(KdRF53MAR|Y_*a2-{sTima?0IziVtvu?y~T~{=XJPTqJnq%{lLJ)>R!dwrB>* z<;$CEo9aKhSiTc8Nx3;v^O?4l*jD?fhD>Q44B4lvs-dDwA^?=&XzBJW8Z#u2%yLl5 zd-q<_v}Wg4JvQ%6DL46qigljV4x24jSG|;mU+AZdy^4qBxwq5ZV)B~f61$>8cMYEw ze>c#we)YbCh!X-7002r)(|-WL4^LG9ui|7v`GO%6N8I?>Y4!B%UIYHReL9Pw2vMRX zGc*+`%k{0Xgge)_qhIfEEmwTO0LrC5%%roMAj5@7MtONAWy%d9kznRJakYxPG#W@v8u304VZfkkY)HID%_0g&EuV z)QjIaKXf9}%WlZ?*X|>_(Ewfb@~~Igt`hIpB5Kl~4+B)Bb^^N2%z#0oRZ!927uZ^& z1H7YGbxj}oe=rS7@%LqEijmx9*=t$q4=gBIWe?z7GJ-cQw+0vKUdqM%oKro&-v5|v z<;{oln_gkR+U>IuQjZ5qsIJ7+h9|aON%3N|rQOT#T-s&rH@Q>F=%O*y=^cYR0?R5;(!w>u)@d1H>G>^~El6OzYSv{Hf@A0GW#RHPU zd+p2G;1B8lI|*rhPTalo450EeZrK%gJ9uG8o3)L*s`(Evw<$76{}wE=eFpD3`#Uir zC;uFP@{z#xUQ0Y)+SKh!WQLh2+2GluAG+$IUYZdPr`v#}U)`68pO=>A_}!;|E9QJ) z?w616Kk8U@ap#9LH<1cmta4F52%{&5N?OLXJITQ%E|N?i9pV1PQMUAfA{Q5@Dtw#+ ziBnyhQgs6wyoe#c!eid1D`Dq_b+1F#dS=vZ?$uf9RIXRfh*&0pA~w$zz0_?so~&ZU&XKzaGY0&_n%%J^GF72Ep4BcliSkId>@xv{HU%kpSfQgFMEwT@~PkZcyXf1xJ=C1?$9ot`*k{R z)=;uEVfXsjPGmv6xA2uzl)vVz31>)gi#|%HUY`B^2SDAv_dZ*u@vroA9h_6U=O6tC z@Hl-g)e2^c*B*p&qSsK~`CJ5TG40UpHjD%Wz~tHY75NrbJj7C9lg$dnAv(ZT{R|5q=Rh z+cg0Nc)~_De4g`%Y~)`mzY?Z%tC02cQ%b7uyvD7%M7vI4=#HTSN^4fYdFZp{0xd8s z6x7|6D;5kLl-Q*?S`V08c`tb9-@EmvBNS@HW76yvXB<^Je9yJU{bjWOBU15F z!a#w%s1yT-mPrxMNWx7x@jX}j zHR3D2?UhLB)D)M+qCrxX)NI=7D|<#fN*QSb%5;F?{j zC5_XZhi0{DyOrN>p?V3=;|Dt;q}hUAGb4NHj~ZVJeL|5Kj2!PJmNWp>;w5DC&X2ns z{XECiNs@kl0#k{|9s@_daS$r3YO9SUV!1qwTttHj-a1Ck#xotKl2R7GKllq?_`N~F zhrz(C&><+cG)PoD>X+fhA#S(uGd67`W6!f5in*2K_H#X=FC)Np5uUI>*9JRsyYpE! zGdoHQe0TpyQBlzco;|Kbn|k3j;5IZAGkUn(*z`PzvW!z9I>Cj2)xvELhl`Xyq+j>` z^*iMqYlv&{y-D-7Wxv;QA!|FPg~&_m7jECHA-l*@e@<>cSEEI2$v8?ep4VITU0GMg$+<^> zv@n@zVuh334s}kQX03|yf)0G>qeHlI3f~eRsIoQ^>6aJXi&#}{EPd9BO|(tegpLPh z(Q1(zczSTx6txw_saj=1#H!P2w1x0@?9&!4zW3&cb|?+1pml>6tN=doq60wPSsnZM zisbS_MJG2TBc#m7lNao~oUUbj`6Hc4(DS4Vn}G?r30g=UWSkvGeH;z-$JWMAiTg#& z60@RD&~djX$1^QJ%X-$k*(ZsDnTZ%=KKOv8Fn(wInF1FF93K!ylF4H! z>kr9OK6&IXSmgP0B5wS8XctkdK;2eZSRf-v^a_w8CA>4>9Lof5E@{k~jYP6~@lm^x z)yvMxeu|aqapv(!R6Q>-@YEi)4CbxfMM&mD+3j{kIaN3l{Uy%HyIh}iaPTkvH`n>T zZM~kfO_x@>+T|KNxT5ft+F3S_5%0`CAAI5cEXFDSW@|yp61l&x=X&H$dl=m{N&F_w5Lk( zjJlN&KSKjIV9UkY^?{%6Gc(%njk*Wn6B;q@ZVs(iN9koOwu?;8y-T-t($1CEhLKiU z_5rr&RUD)BJfi**m9Mk$NE*_}vK@EG4bVsAn`mC956814cumb>8M#+}Jq-8djXlN? z{61gLnd|*f%m3@;Nu0c8p2YS*8LKYgSXXJAs=Fc1adCg8_crd5;>*p8z*}LQe zlK%k8Cl3ra&1a+PqQ94V^zB}G%z8Ra$UcZi3AskY2Bd0a#M!r0R;lSyp3Xm~^oCFj zFpb?sy#7OyM(nx))5H38X9+ziinYhg&<1ue_aryuHQ>eECMON>r;6huwdd?t4XHBl zHjIuW2k7U~9!Yx_x6s=dPSMCFPJ|`?0VY9DkLrGQNsJ{e9Eld&=yiw)35K#M$|RDS z@}pz5CJ$qHuM9ccGH%!b1Sc_2h<8G|>K`DUf@Shg=JEk9+}UCXblxh(GKM{Rr`dJa z=JR)xXDj_S8M3J)Q!p@V-we&wZp~pDRfu0tkqdBUnI^1`us}FX@1<0C_5uNaXv%Q) zKS?vQ%aWE13)ZpVC|X@adj2|sey93sofa#)J*QeUYU_(Kla;6zH_NJ?a*JHZ@h0wp+m;l@+^p4d>840K(juIsHF~fVoney3`z2!dk>x4q zLBi-AW~70Q{)`kKmG^{B5WU(blAuq^fl>{}uTDR(kl)?Tlx6%$e9^OdOt>0gBX|R$ zZ5q6%HLW+FDuYW%8-DypGGWbb z^gt;EgwCUyp4I~6vuTmxt%Bb2);0K!_SWSeAmY|c!X;>J)>IlP;TXqzkL{c$t*>so zvPo@P^V@Y6II+hZ-I4Utl%;z>s>2gQ+hc7S* z_sD=MR}*Ab7Q-FDAOG#%YiNk63dso!p8)3?j*t17k#)D-2i#DktG)y2zj@MtuNd)r zDY!P^YL8Ryusrl9s*-17>G`msORg^9%Fa<{;X1sjf=m$6?eF1MeRj=`J&9{0n~T>f z;2aRXQGAO#7<4k0*vVh;ZdAX-6K0`cm$IK3*-4FAXQimS-U*Lv8DYcqD@iDAcQXv= zL*oIO(Tf^zC2aQkFi!L*^Dmw3Q@KPyUgM~|@tx6S2DZ8N7FhZ5V+ZQUDNafh(~qYk z+1M`ogXN@sk6m5~+gP<0jJNt)ei+o*FtMcZl&9>pt)hm}pL;Y6#LdKHePq47sLWoN zEX$}H;as-@P%PURaJlMm>HGskvH=?^(adY9Ao=o98TusWZ3&U@dyCXPMG@-xI@yt@`F0se^X6!|)W@lg1(!j2`Jtcp_>bAh=6!6WS|%tBZ6GX~3r--BB!S|k z^s?&mSEX!uM_;Q;r{5&4j%we_UzXwzyw~TPo#bn6-0#<8^lf=jM_3T^ha~?S?-7R+ z=Z7y+EJc)0RGG7U6_)egxoj#gO$sf49&gS4bm492V7#qM7+u)&2tfgICa$s5cTl$rW4TK&fOEH$tsm4sYk8>J_9Vo>m z&3(H^Y5}+A0I_F~kd?~$Mf;DqY+mf1x=jWABwz1!s>+Tuez)i6rj?bw%nviuDr|I* ztmP7`v z@b|mdik@lwAdEvUXy=uu86yWqojrXA9~m0dZ0rwfMNH>}l?wY+1j5L|W?pMJ;vCc5 zC#&~Xvb8wAX+g!g;+p;FZ7$u*`4U`J^waB2wr6$**bGm@=Yiebs3(y{Z|-1riLSx6 z|BThsqfyNH6>$!3?F01H)0REY7PQS$w>WTZa610f?Bm@(z~eta$EbogAEayuDT$a? zr`_iO=4{C%AqS#t(o?uh;JrUt5={9HSl*76P-8FsMYu4{2dOv{HfWP zDJMRq58*Vm@Zil(*5J_8(k!_mi&U^E`1!r2pkpNI>-D4tVZTh{KE1xXA*^+oh>pz* zLja}OCSz8}bBeZTTce0#6x-Hlpx6&R1)7kz*^)}YrdPOamO{&%yH=1`cG=@&flY#Mflx zh~a%q(b6z`njLFLQLMUX(oZ#F3)A9}CPQi;6jppbXdkxRS6_hmUZyQ;tNm!E*lSsg z$i_sqHjjibq;aA|4*tm&?bm_m&Uc-@#^*R5~twGNcsUP>f7oY z2JdVw=7v-5Cz{))hnRh@laOb&>t~#`C#L5YUO!Gh`~!S_2*fy@*x*L_8%WyGq#UpI z{nz{b5#sk+Wz_}3{OO4uG2%uj#Hhg1@-|Ui%@Qtz{x5KGgt-WnIj#BWbNnA$>)V7l5wH0V&-)U>A2yXHNS{&mZplI){2zV9Ljz-=jQdeqbyy~XMF-Y0 z4b*Nmvf7^-1$m0*mEWsx80OHA2)ZX{v<*pqd^>i(OXN&QPz z$u~c}UQk9Q>^tsI>k4ih8DvJT#{$KSMa2p=6kiuUk$8LNaJ`_vd~S^~FFh`=U~-Un z`$}V$=v!_@5U9t!EahUneo)(>*VX;f*0YcJ2|E9OZoQTUcwK zhNJ;4>D5%Vc$mt!YK&i4WRXiaeXS*&TWLrI*@%CA0CptF6c7vsp`Zf+|7}152pum> zR>$0hC-L-5Mmq>8KQy`VU&<(;G~L{%D5x`4`iY#&(R;~2is_PH7xLene-_F!u6P9* zzl(YFLqUY#qapy+G$<>8q$J``5SlfQX9oeE4&+*8arV)|SeKT<9EftP@SVP%oE7Z~ z)U`Pw5Sw`VJPyw5A=gYefl*?~)Y58JN}+i@f%dJ&rX9)FTFo%7P%2Tsb}RwG8wBGt zm6B!u0O=5+8x`VYHU{Q0l}{ph+z~+goAodmk~$u58W*P`Y0R^{L>RVf2Mt9Rz?=g zDMc*FuYDDZMd-_*FNOx{vr3>u1(yaPMw7dCFg4f3=nRDQ>8OdBDIEoVeSTTl(U3SE(`D^ESCrdm9-A!!BjyoXC`4eY1I^Ca;M=u@lK046s18)%Q?c`noovvrF z%7@;uXMLmm3?LcM73kUeIS*GPP6i)x4Wb*S2rA@hlqM$x;7sAS8{v?Q#A|-hc_z&O zv%z>1E))g`F;wJ&?`W1F8DlCal5#hDwP;L_;1BPD&CO$|x-feowUbal0x-awoQ)BV zv3aJi1ooM|zyXx9MamNe(|0E)Q2K>Fnq*_Z=J%?C5nOoyE|(r_9tA>x$xYo6MNAp+ zFOeV@C^)cfUmJ5E!4zv&hMvvz$k2p}$?rZNUlS<)to}K+NE4)(6Rt}jn{c5lgh6me z<20B8q3}AeCFCG<9vU0R83DNqd7gCu9MIGZPy~RzmLb?xh)o3Uo?@AVY3vLv3VzNY&1&5wsw524EN+0 zxT%C8hJI}q90CxTo>6$gEVuWL3eunr1M-lm7wUUh9 z8iZiWl6BQS5ddkPw*%E~xB_VuJRY464rVm!mMJP`ZV`J@aZsVlfuhQTP!J+4k9h+7 zy9{qpB*F)_g16vzoWFpAtcD1cG8kS36cdvVKr(PL7fNHX%qoNDuDs2INVw0UgcXIS z=Zp3FiMbmh0S;6eM~AY<0%TeI=6j(-K~U4M9Bd_6w4YeQ3V0WXD$WMMAmr23G5EJ( z1?XcQ`CSEp7uqyqpecii_=AyqKp)fgph9d#2Ve$#6{E(}=Y>3C2>x6Hh)`a?0n22k zV1BZ4WK>rmu#dK&a(e-?VkJMo(FcFD$-<@pJSG1OmhXZHjkE4)#~6mn5IBGocv5hG zqU#fN!QrIEFD&vr_hkeY?<3)1iNdi+X;neBH0RNd$w4seGrV=`aR%g+ zrYOv69Rf10v-`W$WLJC)K~d~@R95trp(yn@Tf{`Del(3hWK28bJKtMSf=hvl3IGIy z6>&@yj@2NDL0D<|-E3XkN?$iz2b9bqT6p}o+KjfRoo%G2-lxaq-vk>)ya<(y zZnTidcYN5g+aru%`GZ)?_3_=NqaK7Vg|;^XGX{3m4`>)Swi{Xz$c$n8xTjmN!iokh zgB*%p&D)OU2s{S|hx!4mtjT3%>9y_WHs;5emWf|ISUBN6Y23K{ZCLY3mQFn3U$xXa z_0i3uIeVr#MSdt;=s&!^iEp72`2(082}u;9)2BKdPL zjN3W$E=D7)?stmR8Ol5nR4L4X2juMXfC~!!L-ddgbf5u_4v)h_=yI@`xF7~vfi@FC zkU`C+kP<-4&t(Dy6Xq=X zC>hC36Q~w3mdOMmFGv;;+(f7XL1=$zi+=sZjZT;*$@`{?77A2qNg@9g?7hEN5GnU0 z%@VA8{YLE+AxJPxlxG4%8)EV<@^n2^$j#NCd}s#fJ?VgW+Eh5Gu|s@Ojmj6uUj z4RmPo{ULi5{1~8>*sr<_r5gr$r_O0oPvvwncKCNprzz1Gb3y&}X@lKvQ2*`HLWDhC zOtd8Iml!3*Qw;l6Uc>U|%gJU^JzJ74jz$^!Zo{gg#DREXM$#^xb1R8q9*Dv_p`YI6 zIrYt)O8BsYPrC;8m*>z(D_Vmhv}lPFIV}AWCJNw;&$O@rwl096v@3v%o0?QjOY4eW zt|zDI!YCCp3}yW#OL7Yu|v5d5-WmBr$9b4 zJI&nvk$TZVH?=@^nqK=NoU%~{^^>EicFY1PN`9iSfp0>cj7$}yE8Y78dmsUKH_2H2 z@b78ic*lXnG9G4!zj;SDyzXV#)r3O|*0PmSLB@7OtROpBMksk^5O9`duS-JfEDg4& z4#S4%OWB1i0I6uW%|FRIQU>NAY-lU^*MmViPa#N>R5MITB&uZ;Sfr@>=^UQ3Ap(H^ z2BG;*grY~HMawy2ZP>{HWVzUg5evZ}8%$3kY;)Jo+BnnrJGhmgfK~fskh4c~uv$jX zB_Z%FskBNnTudtq2P?$1LPH3CXQ?B|@`eDCv9)n72hhgGq`?P$?=rkU{Mw(AIGVqi zF@$~nK;`N{oo%z}hEcpKp(lX4tMi#R6iRU30t^A+FIdY+v7^SySj}NryBcnSE9)#s z6gq-obP69#E1L%T)shfyZ`aC0Wt~f)t_^)q;ZJ^Vx6IKJ+jD^c7Dl9*0vB2cqv=A| zNXt~=Bm}y<6{@F-DkSabY=a@DMs9s7Q!>w&KW0N8M~d0LQHGMQ)6?=gP`(Q$)DWss zWpyU*X2J>87eiqI-;&(rLoo7$Zbk5lXcJ~eO8tRIM%yT`4XNfAvZ4DUbB`@OO0Jfr zh|UR*WbdiuC-y#Jd(6gtEl--u=Xgf{g9AxwN}SLmW~Q(g{in{svRcvn2>SG~W(+1~ zFZO7IJOLWx6F9E985A3U5)nJOuphSumt#7MgxaZ>VParcJgY^wLwLP`2|NQbxEhn^ zwxobx@wVIC9+Ow&@|c+r-uFC-WBmDSV_5O_CII;_jMjFxHsiJ95eWxUU&H0;ZpjW0 z56or)RRhpq2k=T`?jWL~EB#0Y#A#i#fIouoUdEG`rw#}Xu^&OGMEokljAE5K6KMpX zJs1&AR*Ha#t0hE%4j;jQBw%^JlAsPDpw4e#kq_t`%tLSy_oT1|06v=-zyZTbk3#w2 zQD&@*H?l$88|&;mftW1M^d0DfsQSjYL2?=Fhbsz1z06^}G& z{dBg#@KYI>5F-x-;Yt!fL=ArQ>X88dI02+9t%_fU({Xlr`z^@}#M%ebwabbFG$mw^ z>~QZma(mkGk9dRv&}}Lb15mnSvaE zAAjZitpvCQb$!2H4x#GHLGfK+1-CuV_5dcGSYTan1De?)gzvpl#iUyhIrW_4_a53_ zOSxg&t+#Obu2~Gw5jH6!=q5-gfsczRrPdJ#xWA+r`9}cI$DF%aO4w%+o(IwJtMqiq zprfn3rUN24ln)v6-V7RAW&BKJ2TyUxB{-wXSCR5(Mg=VeKj{}eZ;i1IRQ?3*{i6FC z{SX(!tDOfXAh=^jKkdKzTiDXj^-_?7<|Cc#GMs@;gD#q;YwUG744QYbv`(Ez59kt7 zf@pssNr+^R42QbIN}y0;BT)iI)B^aozCd;q;AgU#a5%%9E!GJu0frB4*E9Zk$hWLD zgP;@uVYbv1XUs+nAWigEuq>j_;q7&xKej*@V-M3yQXJF0VO{|&G(HY{7C)^c2uLzW zis2Gm`4kS+qi`jl%5uN0Aghggtxu z(%>q=`|%UY*#rntIG3hYQS;*!B*-H-QYi`ax)UtD9Azai|6T)vUop?-$c()LMqf>=Uj>@R7dzsv@Ko{v>4CvO zt2q?jq}jrO(}!RgYQ*Bt*V%Op`hxiP2|4;_>Q0N{Hew~+@QWiJo5{mXb685{r` z^D;2iASHRGY-`N+YRP*Q_=bXq%u*IPEHYjI1IPdnpw{FJfV|9q2K-M$K>^ev2uhs+O(ge>PJB-jjNGqO(PDN|f2Nau4|xmn>DK&hQ|$ zo9(t#(EU#^QC3ZEBcT@}71E-t&0V&8L#fftq0D&%3|~G88-1Mz=xjU+xk0*sonm)M z^0Qs$ABM(s8A6Otko*$Zv7?uza7XI4Zsvo`Gw>52Jzo6>$`v3n1AfqxI1VH4~NcL|q7!`8V3QkX zGCbPw{|(E4k^0Y&=k0JQ!TDdwIb#p=U%+Du%Y3RdCrzfNE3BB+Qx1OB-!|u=4s9aU z6U)cEV+_P=H56Y4?<0*A3)>S`ug@;3S&zo9DW9MHPP=HNTTzphp5ng!Ad+}ZD|7(8 z=s4r@(!Bq6F(-U84>JZ(UvY0=WaWzLrfCG&G<|8x75~uj>~r;G@a6SJ3CqES_=3=t zR4(s7Kwvq>hdZ&G{_@NCi6u=JQcsXA+SxMR^9O{pZbiKH^-cUW>-xL_y#F7dhLBI` z`zk3k(BpyWUCPJfkD?(`fp4D!?>EY7xHGHiJ;fD*-ZOKV;A14=4chtHg-Cl9P-9s|g|&i(-$pCdD5YDp9PehE_ol!6)cKZXuTXYF&% zQ^7XeB_F--17&oBbLGDH2U^AIa8^#+j*L*O#L>OXWQEG(YW+I;BhWJ7S9bdk5Hz;^ zo$M{43Z9!`*3oj0it)UuP_FP7V;mw}gI{mVJ=>UbLA4~O*4v!LXKTxG^ciZz=Fv}l z78!+=Q$!lqR+kr$;*RJ0n##;%Fe6&4`eI7Zd+)M5Vg)Q-_Ta?RwO*+rai zOhwF7&iLcU>*rl6=`~Y4Jd+=KH)s7MQs?J6?+!lle{+5&O zFZFmI^0gEvNooejB-0f{64<~-PHxjSyt&B;ek;8~4w}@fX&g7%V0!Tps7)OMqI$-7 zDkC#C#YEFQj#w)(7BAWy2R`6Xu|VLEBuvB$#l=~UJ(CHN`=b+<7`^_}>orDx$PvU? zqtzpcGR&G6QS3sxu4%>U;)jYV=d9s-*Udk$&THqU#^apT!?ea2EkMy?s=q3vNrUf~ z)N<}w-0f48L4Xpf+$E|%^0{xod(MhXM3}$ABVI!0`&)YWhLe5!bY(VFyD()S(!qi) zc58wM(%4pLn(AsSFzdBJ5W$-<6qBK0UeQmfXG5Z(N1Q1Ry@T^?Ylhc33aH0slh$#? z!OO@izft05ZlcL#&K9j$_>lpY+ePmfo=eE`tR~!W zb&*d1HQ|Ayr9O5xF#c5lwt&>5n)T2Fm#it7GSf!yHYWkc%1yL;6U(2{4BmW~h+v4N zc9IXV(zT%YG}q&|vl&)4)ofq@P59l7C+14{Th2;8P3g1Uk|n-oSoNpS8%4Ka{yaYM zG23qtGw5ckMAwfu$|lkha2;}&Fx_MJrk2xjXq6pSaYDzdx#G`G zu-+ibj5S{8qxJv6pLx_Z-Ep%mxqB(V`?puk`z{@NWsyXhK}O_8bbdJP0d~Z}dQ^T* z!jJSGjz9kj8V2pMmTOo>6=Lm}V}0ve9lk7k61 zyHu!e;xCuwGNdNdbGW};KGy-2N+kax z|L3Z3NmPif3(s#QH0?K=A+kosvpRFaP83}XS}jov@ox)sqAvTml3z$ef5atWGkuE~9}{BRZItL^?;YW!p~ zF>@@MeD62e=E?Amg(j10D5`OoFn+C-ek{Lkt)=S|5JA zw8o1fcsDkD7FUDapa3ESCB6b9))TsA>w{L?q-iz>U^+Ns@R+N$-QZ;3`uIj^iKzlq z(TY4}eq!FF8h}EL)n!!&44-EPCm?-4Pzs3&+^7VsG{xW^4|?;b+X2JnWG~3j+^|D} zRp5@H35?3nMn~n?jDt^^d|J|4fw-@DDdwhWHE*svWZT(s-rv-S)hm-m>#k&wJOy$K zxxHb*%)Lp_qRt?uOnv+H@ck-(zlia-xtq*f8}-kg54gKzALmJAMapd_;!8T)4Vd+W z%G$_#Z1nW41&qvT)<1umJ93jgS9YTbY-(99Y>JFk@DmB_#I6WjUj4C)E~4rY6uS_c zJZ2e3O}(y7Zj>{0vb~{A7$%^OEO?2JduI+4LTr>FW_?Q3(n5HBPc+YX`>hipJ+5uG zO4z-+`|M@O9IfsL;a;yr)n9rZwrbcsH;ri)h>HKdOg^?9B0NK&%WB*T ztvyPsG>p`j;Y_nO*=_9!ApQ`nXlA#PhIuv({*3OLuvL-Ia<^zPBu-XW#L9alPen0xh334`mZ*VflaAOCiH3*gwJsfW7hHV?dph_UW1skiS=v@huQY|wNO0x9%!oS`!8I68}H zQ(@Ml?|(_oz}3oXl_&Q6z(T17#uDjgOU_k0P~lUi`|y(QK;ldQFVzq%jK}f7g%G5F zpP~FT&uh@8_~!F!Q^Is7dg3b_x@3>8b4N0SYiM_7>b$A{;lx#FeR+=6=VkWWj4=`V zN+0aE?_QYaki-iWp-zXgC)UR@o7C-CVSfFs#r@4iOJsuk% zd!+ds&U}XDP{8krP6~gHv|rkpHZkov?04&g7+donm}Tw;b4f!9Qi6O=d^-h$*5!1K2|$aICh>%t_~=mu7kqLT$2Z+=(^TKj=N^Z368x zoX=a`g#8dlr`8rhnPRj$ec@~irMc=JgP=?iM{kuR3Xi&Cfk}v4p)Ku)(IhH)nNV8? zuN+q%Ys&(TRK5mtp()l-p)G7Dqc5#(11&G+0Q(egZj){~OUSVJ9aM$3PDi+T3owLr zo4|_m?d2|T9LnKoVQJxCUVmo&DsBSv9b*jn1c8I2fL(MdkfqFGm98yKGap0R>DQ($ ze;2WM=MfFmlY*-&ky?jtS)B{F-@PH#^l~*jOdUoTmy3KGyET_i`Do7enL!zGTe71s zB94Sy)54O9DFjoUdv{iWu_2gN*sswzUVq3ngktq%6hSZE4<&3#aYpLcCIdUL3EuYp zVeM0j?2b0_4;vxYR%ozlrehPtt%$R4gdpIm_*i3qtu`>>IOAH-``-s{Z#EqFelFe& zvJ%L#8H^Ao?+rZ+{sX-EtoPtx|7D8CtO;4Ml!-4L|0QtrLi$!Z))h}yEMTVwl%R?Z zBS>j%XrGXf!t+G?6V>kIrfvX~`C&mlQ>Q~u7t)sY{;JII)utI;;*r$Qss_zV4igOo zDjWl_N7qM2!k#mx6(Aw?fip4GwO4JGsoufOZmT+%{4OZaiGCl1hWFV_bV73j51eN^ zK(*#2?7JZ|G-6zD>GgDL=+&LVx$uFKbF66d(i({2@i!O6=`WU>!`DNX`{jG+pR*nv z^KZ5*@n@TQ<~VbEkvFF#7rhE+PdqhV$|oYs8rh|f6T5e(7tinJYXXN(l^L{Hu1jn0 zxM!aWFoe=Kejo`oSXQPqZSQFxZze7de8bAZ?G4+E z1pH0u!q9sn4oAGDcGe)LN9dJYEdVVUR%DXwmOo z0$tcOl|_4aiJ5%=+_vOfglT{`YCSrQqbcoF=QEw$q;qPly0o#!|7vtCCcznHXx zb~cy(x>_hqWhkMpoYQ>6W2$(G_2BNX*_qfUGPpQ9F81ig&4q+-K2h@=qMK3KpqLhG z2L*4I-;J%ip!Vsr*wDe1*=&+RQVq3lERm_~>^M$V_b4*Td_m;)e{Qx**Ur?OT*X-PIkeVv>*8@!lj z^&h(tL<(r~cNMWL_)3dRHl#WOx_k9d>Md6b=}cjXJ0T#S%QY$uS0bw~Fol{@>^R<+ zB2b=4#TW4@t2ROm!~E+%$Ty866E)VZ{rsC>;4X&kYp(u7j)5h9=N%yNj7I|?^S@QH z^t6a5w??$~sRzFhPk3GO3uhqd!kr&QfPcy7u{S2s+XocE=q4`ppOBANkWAwlje zZ|8$qBkp(F&H_M#AiL;#u?#s2n8?QgQO9p?( zX^WrkP=iugd9E%yn0ZHLA%~PL4R7zyikt;}6)237*~b?L4x>wo9ZC~XYyh>`=5mp# zp8+AEs-<9d*#vA&=Fd;L+UvDtsV_gFlGeuIVZ|A;C(cnn*|-hRBt${e)>!KKq1&V1 zd)q}^0vtA9g<(NTYfA5=9tr*54`y8>AyLX2YsN(kc{7w-tu8mm>lJS)OvBa}x?pfXy^X8gc7yw8h199okb%m24!?pcyw5>3W&5TMOopUdRA;ClLxNOU2p1l6Dl6| zDj>YYB4}?B0*~W3g-%RI$=YET8*h!W6m{kTebMtLd3gz`?++tc36INPn`sTQlG&I^ zASd;Xqq&;%)|FGKXu^VJMU%Zk|E>=?GM@--CUXZcR4sk6(MHE34x-!1h z+Lme-guT|>NsGuJ%U{$=lq;IT!#3Dfa{wLr4LDza*d33|UKCv3lv?D@8L|}mYPqUN z(001HIR9d4?j-Y1*0`)>Z%CPAwGlz@fmuA2Wu@=S3ZMlvT))yV0gl&29E28Wum5LY zWh~5~kyG})Za%P`B;^cSD*o=z3pyMku-Js=yFrEO8bs2OWWJ4Mu3}`a?W@DF#Vgg` zJJ`Z)3z?S5%#cR%@ZIV3*-lv!-b*Z~VYP-h5D}cFpiy-C_eXEWL!aP|HNS?q-?4wS z0=urVh3Gh!9JAkNc~tud6KgIIJqdLM(qPdzVM(U?Av^oG)8ga&{hu`B*!$uWfz8F} zZ!2mBf81FbNVhB$p)pHJOfpOG^^kAy=Tb8MK=)9p`N2$??= z*+(hI<9|iG5^^c}N8Xc?pDp<3gm_7k$R&M78L#ai>np--$KjaY%@Q|#sH0;(4krc*TyC!$tO{9ZE4kpjMr09L6Fdk5&CJeIVt9?ra!Ra@W&YUDv#fv03VK(G_jjzsJXG z(1P4tJ3zpcsCpx7rU)$t%05jB$(CVfx(~*2>TuUG6=9b{Q#pj<9*N|~5YeCQ%tGcw zuSHd)h|>k<1r{pdSRSo5iG^GeDC#l=3ZBMm!%+i2RbEU&%S$Jxce-6ktXz2kF>kfe zdD#+OP!f;#{Dy}6R3c&UF3h^<>6YMlc}^lMLbTb!l#Ch*5`|I^tPeGlYrM)#QdDf0 zLLXY))M3Up*GNMZby!&Ul}4`A7t-@1lpz9j_n+}61Ka!podV(57pMFFHIvVQndj$X z4<9ZbC(;q*7+%uf{7XjzN~PCZ{sACc6xh4MtAQ$BQiF8s4^$Cx_Auqntoq_a3MP%b&p~ z^R(u5%<6n33B}P#+~9jqFkv|D#+;XgRn!o+{-|a~Q%rrT-YfmsccRWe9m!#^$k!Bi znS=DWT@c>jf^`TppM20Q>-eu|;@99E{SmqxE+kZ4kN4zy(;J)6R_vnphfnXY1v;jF zC95Re;?|PUFB=K7C8YO%74T*JOOxcu;E&U%T+Y$%7U}lZ#=LH{G!y>-7Ir>%G!vn( ze^(5Gf`?fPOp0J3?dfOvczYbpL)Byxdd5}501~E=Mw;)`@fe>SQLMs>cw<)Il%FM@ z9k|B1#28yrjC;*`l4PnFch#m!sR^wAa>g1_w7ZKiacz&px%ho`y=F}57G?zDXEvHX z;hkv@va;x+Cd1gQR$Gx_ew{6`8^GdcCBnH7y#DOq{Ri<$uEQcfh7Q4_>I{zuc5z-EChMg*QXSvQbH7+cJ45uMS8hFENvPoIqAy=1yaH(xtH zrwd`&Tp4${Nv?U)7Wj^CB69BKwe)fd=jYj(gFUbF6C9w;&;E|}b;oHadC%l0;~oF| zO(IDw0^V$~6Ef;c0m4vbK5Aq9)2+YJq1K^`APw*G-g@ub)aAhs@+VP7&ZCC0QD>eW zxM%0WNEs$_(?TgHFFaU&0rMy8HqO!1Erp8T@u|?Ua8jA|(!wqs=tpdusG&7k?Eua3 zJehgR@E`=UA}O_zRN}f%BWCWW$MnrXeC;6>9dm2yiREyFHik^;rNO{(wTL1sFGc2x z%j1Za9k!Kh_8Qq>(fWc4vB4gdFLOhsWul9`#m!aMgqhh>9Qwu%3);+24O{cF&-Q5N z-MR@?y5Ss&iH3Ti>!>L68iBk$$y_hbA1noL1H3kX{A%BL*pmGh4s(gHbehP)MvsR! zK5`h45zMf8pWlNd1N7p$BGUlQnkI?mTUJgI$K|`ak(NI!b~>n?f+8#mY^VYgU#bSZ z*Czz{>y6copKNKIkFQB>m|U(Nq@O@BM5_EOxyN3Ok;XQ-!iBeIjs=OqB#r}mZe|9= zRB|KehAsEb+OMiv^)CFp2PajDdoGIuz+8eS-~Oko_Y7*{4coqx5JG?ep?3%&bfhCi zN~qG5jv&2*p!D8C?+|*CE=@#=fPhNxQbH3f2mwT-NfW8^e{$c?`@SFEnccZ&XRZ&s zvpd)Bp2vCo4*&J%quNa;!RP-0TD}CVks2U+7`z^Zdm5mG{AJIZdOu9Q0P_jiH5Dpu zZYC6a+DrO;@H)@rUh8REXO`WIsKa;HSb-4 zSn;27W-X+kfmD+O#FiR&5X5`O)9As?2g!cs;Q?9L*zR7h2nO<1PdsZE(n#kccs}M9u8bFTb%$BeDtfI}zFESSt}d zhF#op zqPX=*O`O*%BKVcDy1^4{Q2O<{r|{Rm>BLXV;0YH+yQ(B@tm@rVHl;nzM?rg>o>7|w z8@<;y!8f@ai7I`tEqjHtp#=DJi_F7k!k*6g73Atfm0!a?pF8#zbwS ze@1B`L{>Pzo09h4V30hnSELdVM{T=kd0#G=$8Jj#62wg!U^tL6>;r%|Ni{o9Q@%NA zU}})&u9n6E7F1fN2L1?Kb@F}@1u zkyGN`Vq47$wav7RQr_11eV(KIKIq1`e|q_?XeQNpIK)#}L1|TiaIUsOn+u)mKXAQ7 zQ+>x4l@16LN}Gl3!fX?%j5}>2j-Ed9mrVH{b1Pm( z$**x367;RdayTW}^*=z_B^YiVEbKY+#`WKcEFr)q8+f|rx)x25W+rHRXZi0Kmv?KI zy@fu<+F8GlYSOMrc%Eupx#I#`$NQa?wS(0+E21U7BJo$=l}NZr5rQ7z330Zgcm>gA zy}f@p)5m8U5t$HB)LnEnI=;q!@-23K@GC9%`^A3~vU=C@dakJBwFuvu^j8@TJ&w2^ zAH;|l5)pmKuo;0SJKmr6E0O;Jta1*=kpc#KFz@uE84(P=lR7B53<*k-HzZj$-X>VRQXV3h8B^P^}k z5Vey%Pdo84P=lDFR&DDacl{b|Qjxks9k;M+QD$%7_(#2B+|BW@Z@kD+#M~OtDudWr z(AD{Fz~VU1AjQNGSK5=vheB+NvJ7pE?6F6u_Po5qBD_Bzu6E%edf2LH;E>f(gLxHkGs-XIrvq$8S!B>D zRkYBD>~s?u*1RE8(}>c8Nt4%}DMy`Zi)y}GnXzsYZ%xDm+wOJ7!_k|(s<819vgn8W z6)UXfuT5jog;bQVJA!~(CQY}1Lw90z?)$1!YV4a$mw9*S8XeYZT>_qU4GDfd$a}W% zeHdQ|J*Lr69Il5 z%<&($VVo2pZF*!5mHCO9X;O#icXFDh`-{jXmDyLRl{=yN7kRI~>HG)4h{Rto#^|J~ zmk~_ifqv$#p;C2PH@B23MHN~p1}tGx%L7Bn%tC^djwCj(_^6~7=ruS=9~a_q5+O;%w5sQA0~cJe=V~^+my5u7{u~kPzsWJ=9Hz6h~`g3oh?;d0UG_I0n zp75{sW-qp2%3$0*Q$xx`IhD6Etw~9X=e+uvpTvF$;_H9VgJX9OkD^EdmVZk zE=yl@_4pzkLJj%bSBNXeqfmZ1cO>`E%S5ePgUaON4C#0+?c5cI&3?$cC*mkpwL2an zr^~daOZ|K{rxwPF+vzQdKtzk9CB05VZo|f>YN^^+l8~(e+B7LG+kC!>rQ3ou=KOSt zZ-mz$Zo$eEn5%Zbkr6}l%PzqeX@7U~S#|}}nR&5!>*3GKs^@CD$oEW93(?*}AjHy& zNWk(!!Vr~%p_qj)`U|NFogTf)u(?Ie7#FQ-Nze~oj@!|d2(|l}-`6Mk<=Hd+=1$Mn zh4;I4!#PiP#t*04v+T_F8ozs{(JxmO)T(uH2D7PCYM4)Tk6JDVZ<@4fCmQbkd0C^> zw`nW7cGlFS;QNx1L;l+1M$lb<(Xc8rhf3(FSJ|cQy|uoj-jM&9^Xlzwo>bih8MIqO zL=L$?k6rQ$Ejr${5&NL}sYcqE=s!TOQvo@(KM&*q%Ozf@2BAsos=vwR{+^}-Li8^9 z&j;qHWD+gtoLf7$z~E8Q8|n_*zRWU-M|O%pjk&#`UI{z&x;qK;YUoBGhSeo-%1Ze# z=JU)a?>?p9oqG!A7`j$?SI@8Cn`}(?jp(I}1UbS!Z5U0_a#HzHibteo?rhBVRlhCBYZJI-!a~ZJ8Jbs8DBKt%K>Xj{^W{P>|70f-KzO!?|Q?p z^ELTIc(o*pEbV;Hg%Gncs8^u>nO~0v=rD`Nn!t9cLTR~V8WYZJ(2%EQEJe15 zPpkE^itE_3yZr_6Hmp|OKe-6}>qfhzU~}p@fRNs6djr+zGM#m)LS&<((aPGy=+5f- zx97*#$H+3~0h5!&)#DMo(vl_o{%{`+8|nueB5}2)BFWV>L3l? zis+O0ubH&t0;pg3hwc6AW%{`u&DUlB3i=GzxrZ5IlbXGjIULvMj;Sdt1Ff9JGlY|> z_Fuu4#AQ~gLt7t$OybSrc}*l}1gAj6@x+jU5=!a%;c4o zj!D!Z*?Ek)NZn8+0Q3BmU&=S=WWt#~k7#btQ2~zbx0mpw^LtWk@cgQ*st3QDRF{j#C3= z5!%k0Ok$Y(F>F$m4ook`Q3H@;#S$Y&JOy7WYiF_C8K;IM>Qi^49^MF2e0DsK(kAmT z_Bc3eTa^<;g9HVJM4B=_oHQBs}aVN_q|fvlGUWq z5@_cMwzjy9qw00u)v2f%r^QNNe;4;i)cHV;2Mbx3-q)-0hoTW=Rh^VyMHXe94#?Ob z38Sca!|u%_K~-V*9HQd67p>%(Pe8ENM{hfWN#*!|F=`U~n>4N5Va!3Es`==&bkFMG z*PRmGr>V5oD`PxMBmiPS{;q9yJ)K16a`!C~L{`eaU*Ttwj% z`XdoN;aBS-bGH_eF#{t&8Oia-cd2R(d=`p6?HkUSP1O*~iThs9$Q7g9!}Yo@ls5m6 z$HM9|i>J-)aN)4g0Kg9G-HA@~dra)wV(-7}{l(=Brkod%NIyi+vy+O3!-jxQC!`A8 zMA);0DoMP3d87uVi+$(=)1Nfd^P8#wQh?r8)_Dmg*?E>$G;aa46(f0(XdWwuBf2N@ z$qi;5(IoWTDwvlNQtZ($RqQ#y!r@q+mZ|q?$5XPm^&)|7%+~w-ABiFLyufV5KX@uH zc3NREdp^DLK<+oE4W>l7k0}Re*2xC}2r^;=YvYhkT@`$c?>n;BDtiC)jBHe#g_Z99 zYXll=2G0dn1FdRd=^zLNg@mIY-fQcds~>tc@No*@ zuG`@<>RW*+$NIh78T5w6J>pzR>!Q7sZt;&om7k5}jyKcs-Mn9$9{NfsZZ?rVJEG1O zB>MSt568E>3{vT-s!wPXtESLQkZ@q~OJ{vFCYdK*Zw<)pIUnj6hYU)wY#5nkC%1xX zxq`5uq1=Ity8!eHJ@u~Y6QqHHUmmUQkD(DtVH6)9U18iW@ zi;NWDZA?p{5ah)aP7-{&`Da8#K{cWd&_D1Qc-yV~>nEyvLoyF-O2J4n@bS{8*|x^I z^Xx2Ae>>H)kN@^iOwvn;$2Ft7XS=yB!%R1mJ))b$`5!k%4e}t$Ht|#KOyK;*jj~sY zK-T^7I>o;Sr&ne=ICkG!LP#;}oi&VFmuQogvy-eD@E7jfE{YS4u(N>lSNq!Vk`Qis z+x$P#CQuEp(W7T(PlC&ZZHlKIK~ssNKQByK$ez+Y+3MX5TTl0`9&Df9@tV0XV%cdG zVTVkYbqr_M#6T@eW!t!lHsf9+8NqHws&S9=<7wh?4*W(5Uy9I{1G#9SCF#Vy3XOr` z&%?rGF<8IUa;TaD3K=7|9=ZBsG#F`T_LR3MJz(=8K(#_o{O~(Q3=q=VEvQ*`M)6pAZEVd&Au?q1_W57Vaw|P6;z|I(hLE# zv0B@j*q*p6O)`)E$l$iFDH#`Tj{g9WazB$S4s-|%HXCR*Fq)*d@2R(efVJZTE%0mI zmP}~A3~>$hJGcHBhF2gRAnFbDXKhf12}*D}uXK!VXkVW}RoxszZ7R0Z!ObBu(eu~t zxNaLKv|Z*XRt|!!$&>lMxgv^j%Opi@@rhtzidqw8ZW}RMh%X&uUFn?)jZXNfF&wzs z=wX)riJ6g0`(*U~W1~(qF#fGCauY$D^jKq1FRbY}#Z%&l(uKmfhxhw`0FM!@UB6z@ zWbDqDy?CA3&yG}E&70YDk1*NY%eU7@C^-b6s!(MHqFsqgyGh_R;KK%Zr7cFEs`I!; zDXvd$#z0~UQ~dvOax#e1l4a|Rbnx_SH}MiN1W4HrZFq%&At^*}O}TDv zy(y%tiqExR;`&rhubrhvwd*LaXl>XUjZE%HZgWllBxuy6(=k*&fSSE%}$yAUYYw#)N zMS$pS<2W{$t$LjyJ8Rom ziZ4A7U@$Ol{s~gX4~8~&5o?88ReBEbIfXzz0|V1_Sz>`3Nrq#u*L(bNv-s=*YYMVW z$`ovqT0!)#!(=ycH*CYcZ=GAmlOu8`QnuXFNZC9|iy(6PiYKxsZ_ON^YerbCB;KSMho#A+t0&0Fau!Ay_jexw<4SI=uCm%5#%FzXHFaz;vC z>(`q~#w!v1ILpxe3=ywH+v+#E7=)_alLP*7ImG;m^T&#lM>m5an00(CvV4`S-)wRX zk$zSdw=FGL3$p5XI+-b>Z?a}yGB#7oH&#A2!^T$O?p^D2I1^Rd-F9+IsEp=((I9G% z_TKKj*tt~cPjqh^TPqlM!ssdruoYh)zvjjQUNvy=EV-hpW4cM6jdCh$9#hA?+XOuy zagA_f`=AvQ+=F0>jofHKa(z>t$zcs>u;` zd(yzs?r>c^Gem&;CKX(zKxf4u-HPpQtaWMtKi;Yf|2@J{-5I0db)F z>B$HCd4C?;7r{$jvL(KXzw^veGONWk+z!t-|8 z8(_plzQ@{rTacW)4SVeNYbnAb{zur5l#4#d5qDp-c`m!TfOX)SL~uss<;lhI66JPy zUJt#ojz5#%+wNtQo%t`B&Ay=cB}%FKCw=C?~3CeG8YlCEM-pmoc7X+VA&_Psw%6yPnP?Iyipjf#j$j^ zbZBt-b1W@Oui&zisOP4HhLEqgGSLcb3;Kf|Cf5o}15=MGvp;d}bZcvI{%? zgEzI3j>#{t-)rKun)2ajteGK76LJ!ha}CCoPvi%Wo0; zGXQx>HU$ogC5gf0LVpNdF`7@t8#`OjL~cf8b{bA5rjji`pPq3yJsfz!GET@YhVBK>+gWu^B1OXp9P6z)gw9V))c*X5YbK02POW)Mm0^+$|u9?5h0^-L3w2y(XC7J-cBuwWV);dT$Y;_Z3)TR9*zO#DLPkZ*fn%>KOd-zp9lo2-);WZ74So>Lxp@cO&%#r7ZE8SYp4 zUUWO(ILU7|y7_Y0Pl4FI8y^ReVB9h88n>NH%{_Ym%ZJ;E+sl7B|4u@$%7;&%Ddqev zX)ZXtdNg?+VyqJpW$<=91+{9R7^K;a&oR*eWccJ=hOk6x)3g+}DQ^D=9?D3MzmBB} zZey19^rDTs^KF0nV#~ooq6X|FZRXgNp;I!b+75cfO~OeA8sJGI&C&1qLC+#5k+5}p zu@!@rX|c^{Yq~C>ZUpJHs60~SaGcyr_l+0ZQ(noJikG5B()o_jK0BT4(ALl}g3`oY zmgs#1r*l1fMobZ~^z`nl;ya_^)=`99O)ImmL5Q}k6zd>69wyzfbn27g>QRGhAByGF zhx%*E4=~e-{oBZOUIvME5=$p@Uv^VdGNYPjcfVg;Zj$-CtaeBJ`VVk^TXZY;Px2<} zBL0!KhryC&jkpEf`WLZOxb)Glvao$s35_pu%^HVdKL+Qi>H8ff!nTs7#iNP%onVQ$ z3<*u=0m35&Fp;0bVEkuWoqOX-%S73~qD)+CMJUJCGMo!@Jq_O-uU{YEcaBaQTaJus zg0X``C`W#Eas&_N-PKDiQ*+P#&6+-K!KKnMR3edYVENP^u=p#*O%eqimA%1q+w*i! zzUF^w!hO$Y=L`oH;#rDAJxmKL^{#Jao?uzW%!y}~S;xdMm{F{R1=_k;h@qSget!jb2mQmYOL(mxT4o4i zQR5E3H@m_NDwtS2EPm9CokCzN4)mR#Yv&3d#T zCaFDHXn`L&TDc+uDg;?*7aIUH0uQIe$xndCAG2y1 z%$BKS{sTPJ;IEH3fs5ch`e!0id`tcCVZ1IKJWqWMO+v&N} z`_d?%V5Ae%W9QrkmG}gPZ)6i@6)ks&l2AgJh6?z1I31B{JN=WR8ald~IDk_UN@HR< zktsb5MZiC=BI{tfcSq1btQ}mh>B(TDGR2bkz!fI0B}a4-0*P%R7#IE+1r+0l>d3sO zo>aQNc~%;%%;sH}d23Jh+-p0W-2dU)v0h+1cryFx@J!?Z*`R9cCWWbQ?&(jTuK+lO zc)#<_VP1_HFEvG3>))|r96FmiqE9)4DB%wp@kt@Jv^RJv^_$+~d(Py_=lPd0HB26@ z?YFFt+DO|+a{J5mT-cQ5qy*C*{0PHkAm$$L`vlgg_?W0{*5(bTRpf&A70h`S+vv&2 zD$OXa9#;I&#TXVWb_|SF;`452LBAP#XC+@1q(&)3NY(w9K z1i${aR^-BGR)ERO409PhW8vo;6I-l(4w$Q-A9iQrNx?#nb%QeN-;c=per&I|?SJV_0U1xVyJt6!`4L z3%DAnqTToBG%sB}rKe!!+gE1b_vU^Nv*n%@SAzrp%z{0CUM7~^0XMz-VC`*}32 z9yDktXwXZbc;VX5z4IIZtku0#A()?J%byF%#n|`phTLz_-s)INJA+v= zvyDlw;*h&1g5s?A;Ovect_n!=(fgX25eqCwmLnOx@U8c=#Y>${QLp|*{fW2lEdCE5 z_}**Buxd?4IpU<(>TpfIG2gg;^W_AqRwY3_6bqq zFyh3X6vg|$skfEZM1l>pPkmBbXCIkQ`;Kv(`jr(T+&UImLFfP*0$-PAQl4OPJzEUX zxIDvK$U8>7^IJZ4V(Zo2hmlP5nVSVAypP~Z0yXK69iAx_uZM=8Y$k{<9EzHgIc7z_ zvKKA*`9T+w9^R#2`63nEdS;!p=qBB3+IXNma`gV6?aI9#g+oep^0BWZGKuc>{cchQ zHF84!C3wKadFkIcKxK$_u&AQ%G1G5duMelA2`|Mjv?60%Q7a&=(fZIzxhA%;*a7w~ zL11@VEclE1#EdaMmn~%%t}Y+pXWMjC@$POs?;o`3)NsE-ec`ghV2#fdS^CtJw?qd0 zfm|l!F?W+w{DUlevBMWS?}fnB!HU#)=&W)?)t9PIl)|-$#aan+4*bEZEo3IC5+-hjFsqYR%!nd(d$q}e=dBC>J8Ezs4Z2AodYG0ruXu3 z{kVu3#`EXlfdZ-TVeUURq;7cw$lx$c0=PSU{76t4m?SzuBB4V`@@5`mm2s7h%>s29 z$bLi_Iba0RzEb$L=kZ}Gb|Pwc>m4}&hgnQ0LlHLxWI;hMw}F-&NzUb98N#zxrLEYK z%HcVTG{rW_LM(r-*g$eih1v&B($C*UfqO5+gs|~Uhd#P-(6a)iI`i}AlcAVu`*jd2 z9B?Cb1q_>bKMl1NTHfKUH(I09)F_EwhByhSrz#AkgzB!}=pmC?W;v<7sPR>WB*Eu0 zR1(Azd&axYZv^nflzYVzk|24UDys%XAarQaDBB|ELOiyf+dlB4H__f$M086uV(%gD{ucYUxiw!=;P93Wy6dzLXp~6!-Qg zvqN;mr*fg&(YaJRB0eAOidd(3(@<Xo6tzFE*MZ@ zZuOfflkeWkh35(s5?hQgC(@JMVSFM39mq~e=WDw?szM3k6zf>g$BaeCA(U-cpyQl6 zP=|vhOrc}4x_GfX@+n5PVuoVz4#el;>FmFnI-vExIv^BYoBJJ?s)Edd0kU zbw+@_^y%9EcmM|)vY(a_`?HBrl4gQxo-!|?cx25OYCjI0(VLI6szqX7zk_KWNF>{{6t0#VgUR z`(D5A3wGY}AN*tRmKwvg=N1dL2imIuxyM)R#s0KqDE75%u9V}n(&ze{V z8yV-Ux-bAIK~oND(B#o>aGCF8c{V8}_2jLg-D1Z;9 zJrk|x?umxZ9C~8Zh*ShY5;XA=aWv#{WN!F`S7_qlcVaSRh__ik=$xKF7-(AHF-;!T zWzM;9dJ-XECYBhph<*+lU#YXi-hHB40k3@nAel4a>er7ut9Sp~?dE_z;u4sX%$1_h zGVzpSs;2|-jpIiaoPGt4c)i#rgYo@bwk&9>LF^LSpu)dBMzR!2k(0NqgBCGhlp(O< zqY6DL=#6}vRkRBf`>NaA)XA$tMqpG|lU(j)c_oKpEb;A;yRC14z#| z*_n zqS>TGoP-NmxU|cq$hprxYghZnl)RxwWoJcM+}M?g0bH3Ki4hDuRib#)JU-nY38Xys z2C#TCyA%6R9l{-_xc`xK{)2c81mn@t>F|C#@i6tJK>p)m_6&eFlM%)kc4*)2djrK!N8rvY4(lEi}G9EKhdDt#yl91zU6U5;NOZm zI}$iq7|5Gk5MeR&qZMJFY{0m7T0B=o1uBvYA+p;;9P+dCy;fNVag*?t9AB3ij8o@a z6@GZuqE9ummM%wi;AB^>JWzUC=93lEMO2J9Q##yZn^QPTm0s|qdgyV*K)h&uOaUzu zjKki7REfZ|GVsA@%sBWRtzI@87BG!DddW@B5cn&|mn~#jvt0HA@#7n30|Z0M`~lsA-JoFoN7`3vu?$ zSi%s80OmxOyR8I9mpI0*L!wr^@bxtFisnTLomz6IRxkf*hvN&)JxUTF} zj_Z6#bINtIk@fs4!bJ=}JhGQ*)Rdy{X0jpgDyYbhWmRsSYCGUhil7#sCh?e}f{Py0+@SplrBq9A3KH zkteH;wxh+jd86nb1aPu_+MA!xspJaU&gNtKEq3y^$E&No7#+zW5<&%@rjmq|a z`e)wz#t>E>J0`G-CI-R(NkM)HuhpbmA1PuSDl!kP(F00XY5}XVwW}4y2#`p?ce=Y+ z(ri^-{uCPTbU+p9`P!0gH(m;wTzHiBtj7dU0mR2*H0za4l=}Edrxe8S=onFOh%hEtl|Q-;^$emhRl=`eIzSs?V|0Y*50Sz5Nyp z)r2`i)ck@0hWSrs;Mvticg;|=F6#YGEGCY_w07#Mg4Ke-M=xT#l9jl;QBrt-Y8O=O z{o#^{f%JFaQA1W-g3=A7Q{^sR{0R-()!VMvNVMgb0 z7hO%dPC4i43m5a{%Ko|@I7{nd_m(bUMBEslMe%FkDRq`_yXtiRn(3XQuM65VBZUfD zl`0itWS!)3dQ(UgHd&{1B`wH-qL69C_+3UW1E8?#30B@= z783{13_&dG5Oxo_Y&a$Coy*i9YXNy$0e>89azERnJi0%&Iby<+MQa)qPXI;Tsg;f! z9a6iSE;IMlZDWnAV?M6;O_&E9OM|G+_WBL|&_K?9$x|qRAhri_73mub(uV`Rz~ms| z3UzG=-#2keCT#(cjg+C-m9JaVfqVXA(brA3PaGU0*^j$w{nu51WHr$(bmwArBp9Gi zw-4u+C0abpJ;Q1*f_nl;R$v~(HEiV1C_&%DJdS}I4Yk&3W?U$nu(Hrfe^SX-W0ELT zJz5tqmsb~_n_CKiGg#>qMjDyuAd&zVEmFpMxsPzF&cr%KU3N74O)BH~R=TQzdgbQ5 z4?=7DW=okdm6EE06|G5n{njtF+};ZrncZ(!otAmenYFvrRa}(WP1OJdh^8;xUXg4nYHL@q@THC{Q>B zn}Y|=s2fnS{FaTSZu^$W4ytO{Ze^v-?nN)XAbdQ$297d^>*aew*<&f-C3o<}`4$G{ z^#~a_4Yc0K6wFM1EP#%CIP->*dw5foxUdGFqyU%v03ij%0g>JWIyZDkOVDjkS$%R* zT8y_`Xw)oKS9~-jBBnWOdHBBPX31CJLt%xL!BHIo9XfH@zQA#yS~xce&;yKUW+}st zfGwu!pMBl9QcJ?JXAje9)?)7J%wZESXe@%q3Nx#o$u)-yrr&-ScR`%=_utFVdONuY zj4pk(gUjnb+$=y1XI;!A8e-xXXh)DiTAbW{h~C^s zYu4G?)~z`IA&FGhque0CYm~)0o*BPq2J~Cb5OKHk91|_>tftL^JMvEx4%#~lQNyn& z!8D%`H+^R5N3%rl5Wnai6#OFUe*=`vUsbDhmq1ae7OSxQQa6Opfw3$8ceMd^XrjTM zX1y%_m7nD1`Jilx{KK5~BZlmGyDIEEWyyP0}--mC7-yvDPje{3=$EOSzxS zPp#x68z?rfgE!%)@E(TuGY_KltP2k*BvW2}KCkI@g)MUCzW7B>!5caVpRx`;&343M zBHIHZXXPLN4)B@~jN|#V9jIDAF8ML|>+N+v(#8I_#*z~B0Awr0(W!Fv*?tMsqEsHc z%l0jDyKYhLje23*tDZJyIS~n8TQ-@pf=0eety{h;uVGknX!b?g@9@zeB|TTaAOABv z0mo4OfZtb$t=2kl3Hto&9|_;f>)$to;i|ll&kE%f@dNotsZsOXzYP7p0$`pE zj>=}y63HT7Orduqop8S+A$p!J6)%@*oGG*zY0q$OJCq_lCpv!f@KOEE3}GJ>j{Qd- z^kPrhAl2u1`s6B(4iM@9SGj+gBOhnCGyn2IA)`)1OJl;-EhS~VL|D|nO=WpFzU_XCRjKkwCe^P0*Cmu#`qj?~Kc4)j z&D1yjrT(RbF|FE*kpPkeMg=&66JO^g`8@_Og#C-GpF7dugXmszbZYKTr6 z`VvHLM*$j)7I#O|iG9BjNI7RYC@_h4m@)0SG`O(5m@5?USo~U24C`2wHOmV^0{5v` zRiLP519)7;MGVxs4z=hRzqntRBN7L`R80@L}?J~9uVdH@p*HKk^`q4}cWqrXO& zo;%)-dhdB{>-${2Z7~pEF`R`MiD11<=v)T%vxdVxr}^Lz<`QpOn>(>|@I>mmKN3u@ zf7$)kYmzw|o}`q0ZF@d9<1gP*@8HH{n!EeAJuCU~g8D+B!vk0OYEnJZ6-9z0r;>m_ JjQ;P-{{a Date: Wed, 7 Aug 2019 22:08:33 +0200 Subject: [PATCH 113/267] Prices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I think this… Free to revert / edit :] --- .../Henroth_AirLoadout/Set_WeaponLoadouts.sqf | 542 +++++++++--------- Common/Config/Base/Base_East.sqf | 8 +- Common/Config/Base/Base_West.sqf | 8 +- Common/Config/Gear/Gear_East.sqf | 96 +++- Common/Config/Gear/Gear_West.sqf | 73 ++- Common/Config/Units/Units_East.sqf | 20 +- Common/Config/Units/Units_Resistance.sqf | 2 +- Common/Config/Units/Units_West.sqf | 12 +- 8 files changed, 448 insertions(+), 313 deletions(-) diff --git a/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf b/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf index a7987d50e..709b6d249 100644 --- a/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf +++ b/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf @@ -15,7 +15,7 @@ * Re-introduced Hellcat (Armed) * 12/May/2018 - Yoshi_E - New Templates for all Units - Rework of inital code - * + * * * * Note: Weapon needs to start with "Pylon" (caps senetive) if you want the weapon * * to be treated as a pylon. @@ -41,23 +41,23 @@ CTI_LOADOUT__MNT_OPTIONS = Weapon name Magazine Magazine - - + + Get Pylons: configProperties [configFile >> "CfgVehicles" >> typeOf (vehicle player) >> "Components" >> "TransportPylonsComponent" >> "Pylons"] - + configProperties [configFile >> "CfgVehicles" >> "I_Plane_Fighter_03_dynamicLoadout_F" >> "Components" >> "TransportPylonsComponent" >> "Pylons"] Get Ammo for pylon: "I_Plane_Fighter_03_dynamicLoadout_F" getCompatiblePylonMagazines "PylonLeft1" - + As an empty weapon or Place Holder use: ["FakeHorn" , //Dummy weapon [ [ "WeaponSafty" , "0", [-1]] ] - ] - + ] + */ @@ -66,7 +66,7 @@ CTI_LOADOUT_UNARMED_FLARES = [ "Standard - configuration" , "default", - [ + [ [ [ "CMFlareLauncher" , [ @@ -88,47 +88,47 @@ CTI_LOADOUT_UNARMED_FLARES = //Bluefor CTI_LOADOUT_B_APC_Tracked_01_AA_F_MNT_OPTIONS = -[ +[ [ "Standard - configuration" , "default", - [ - [ + [ + [ ["autocannon_35mm", [ [ "680Rnd_35mm_AA_shells_Tracer_Green" , "2000"] ] ] - ], - [ + ], + [ ["autocannon_35mm", [ [ "680Rnd_35mm_AA_shells_Tracer_Green" , "2000"] ] ] ], - [ + [ ["missiles_SAAMI", [ [ "4Rnd_70mm_SAAMI_missiles" , "4000"] ] ] - ], - [ + ], + [ ["missiles_SAAMI", [ [ "4Rnd_70mm_SAAMI_missiles" , "4000"] ] ] - ], - [ + ], + [ ["SmokeLauncher", [ [ "SmokeLauncherMag" , "1000", [0,0]] ] ] ], - [ + [ ["SmokeLauncher", [ [ "SmokeLauncherMag" , "1000", [0,0]] @@ -140,47 +140,47 @@ CTI_LOADOUT_B_APC_Tracked_01_AA_F_MNT_OPTIONS = ]; //Opfor CTI_LOADOUT_O_APC_Tracked_02_AA_F_MNT_OPTIONS = -[ +[ [ "Standard - configuration" , "default", - [ - [ + [ + [ ["autocannon_35mm", [ [ "680Rnd_35mm_AA_shells_Tracer_Green" , "2000"] ] ] - ], - [ + ], + [ ["autocannon_35mm", [ [ "680Rnd_35mm_AA_shells_Tracer_Green" , "2000"] ] ] ], - [ + [ ["missiles_SAAMI", [ [ "4Rnd_70mm_SAAMI_missiles" , "4000"] ] ] - ], - [ + ], + [ ["missiles_SAAMI", [ [ "4Rnd_70mm_SAAMI_missiles" , "4000"] ] ] - ], - [ + ], + [ ["SmokeLauncher", [ [ "SmokeLauncherMag" , "1000", [0,0]] ] ] ], - [ + [ ["SmokeLauncher", [ [ "SmokeLauncherMag" , "1000", [0,0]] @@ -200,18 +200,18 @@ CTI_LOADOUT_O_APC_Tracked_02_AA_F_MNT_OPTIONS = // Plane - Wipeout // *************************** CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = -[ +[ [ "Pylon - configuration" , "pylon", - [ + [ [ [ "Laserdesignator_pilotCamera" , [ [ "Laserbatteries" , "500"] ] ] - ], + ], [ [ "Gatling_30mm_Plane_CAS_01_F" , [ @@ -219,7 +219,7 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons1", [ [ "PylonRack_1Rnd_Missile_AA_04_F" , "4000"], @@ -236,7 +236,7 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons2", [ [ "PylonRack_7Rnd_Rocket_04_HE_F" , "1000"], @@ -255,14 +255,14 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons3", [ [ "PylonRack_3Rnd_Missile_AGM_02_F" , "15000"], [ "PylonRack_1Rnd_Missile_AA_04_F" , "4000"], [ "PylonRack_1Rnd_AAA_missiles" , "4000"], [ "PylonRack_1Rnd_Missile_AGM_02_F" , "5000"], - [ "PylonRack_3Rnd_LG_scalpel" , "15000"], + [ "PylonRack_3Rnd_LG_scalpel" , "15000"], [ "PylonRack_1Rnd_LG_scalpel" , "5000"], [ "PylonRack_7Rnd_Rocket_04_HE_F" , "1000"], [ "PylonRack_7Rnd_Rocket_04_AP_F" , "1000"], @@ -275,7 +275,7 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons4", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"], @@ -295,7 +295,7 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons5", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"], @@ -314,8 +314,8 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = [ "PylonMissile_1Rnd_BombCluster_03_F" , "1000"] ] ] - ], - [ + ], + [ ["Pylons6", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"], @@ -335,7 +335,7 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons7", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"], @@ -354,8 +354,8 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = [ "PylonMissile_1Rnd_BombCluster_03_F" , "1000"] ] ] - ], - [ + ], + [ ["Pylons8", [ [ "PylonRack_3Rnd_Missile_AGM_02_F" , "15000"], @@ -374,8 +374,8 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = [ "PylonMissile_1Rnd_BombCluster_03_F" , "1000"] ] ] - ], - [ + ], + [ ["Pylons9", [ [ "PylonRack_7Rnd_Rocket_04_AP_F" , "1000"], @@ -393,8 +393,8 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = [ "PylonMissile_1Rnd_BombCluster_03_F" , "1000"] ] ] - ], - [ + ], + [ ["Pylons10", [ [ "PylonRack_1Rnd_Missile_AA_04_F" , "4000"], @@ -410,7 +410,7 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = [ "PylonMissile_1Rnd_BombCluster_03_F" , "1000"] ] ] - ], + ], [ ["CMFlareLauncher" , [ @@ -426,14 +426,14 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = [ "Bomber" , "pylon", - [ + [ [ [ "Laserdesignator_pilotCamera" , [ [ "Laserbatteries" , "500"] ] ] - ], + ], [ [ "Gatling_30mm_Plane_CAS_01_F" , [ @@ -441,76 +441,76 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons1", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"] ] ] ], - [ + [ ["Pylons2", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"] ] ] ], - [ + [ ["Pylons3", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"] ] ] ], - [ + [ ["Pylons4", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"] ] ] ], - [ + [ ["Pylons5", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"] ] ] - ], - [ + ], + [ ["Pylons6", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"] ] ] ], - [ + [ ["Pylons7", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"] ] ] - ], - [ + ], + [ ["Pylons8", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"] ] ] - ], - [ + ], + [ ["Pylons9", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"] ] ] - ], - [ + ], + [ ["Pylons10", [ [ "PylonMissile_1Rnd_Bomb_04_F" , "5000"] ] ] - ], + ], [ ["CMFlareLauncher" , [ @@ -527,21 +527,21 @@ CTI_LOADOUT_B_Plane_CAS_01_dynamicLoadout_F_MNT_OPTIONS = // *************************** -// Plane - Black Wasp II +// Plane - Black Wasp II // *************************** CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = -[ +[ [ "Pylon - configuration" , "pylon", - [ + [ [ ["Laserdesignator_pilotCamera" , [ [ "Laserbatteries" , "500"] ] ] - ], + ], [ ["weapon_Fighter_Gun20mm_AA" , [ @@ -549,7 +549,7 @@ CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylon1", [ [ "PylonRack_Missile_AMRAAM_D_x1" , "4000"], @@ -562,7 +562,7 @@ CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylon3", [ [ "PylonRack_Missile_AGM_02_x1" , "5000"], @@ -578,34 +578,34 @@ CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = [ "PylonRack_2Rnd_BombCluster_01_F" , "2000"], [ "PylonRack_2Rnd_BombCluster_03_F" , "2000"], [ "PylonRack_Bomb_SDB_x4" , "5000"], - [ "PylonRack_Missile_HARM_x1" , "10000"], + [ "PylonRack_Missile_HARM_x1" , "8000"], [ "PylonMissile_Missile_BIM9X_x1" , "4000"], [ "PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] - ], - [ + ], + [ ["PylonBayLeft1", [ [ "PylonMissile_Missile_BIM9X_x1" , "4000"] ] ] ], - [ + [ ["PylonBayCenter1", [ ["PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] ], - [ + [ ["PylonBayCenter2", [ ["PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] - ], - [ + ], + [ ["PylonBayCenter3", [ ["" , ""], @@ -614,7 +614,7 @@ CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = ] ] ], - [ + [ ["PylonBayCenter4", [ ["" , ""], @@ -622,8 +622,8 @@ CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = ["PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] - ], - [ + ], + [ ["PylonBayCenter5", [ [ "PylonMissile_Bomb_GBU12_x1" , "5000"], @@ -632,8 +632,8 @@ CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = [ "PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] - ], - [ + ], + [ ["PylonBayCenter6", [ [ "PylonMissile_Bomb_GBU12_x1" , "5000"], @@ -642,15 +642,15 @@ CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = [ "PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] - ], - [ + ], + [ ["PylonBayRight1", [ [ "PylonMissile_Missile_BIM9X_x1" , "4000"] ] ] - ], - [ + ], + [ ["Pylon4", [ [ "PylonRack_Missile_AGM_02_x1" , "5000"], @@ -666,13 +666,13 @@ CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = [ "PylonRack_2Rnd_BombCluster_01_F" , "2000"], [ "PylonRack_2Rnd_BombCluster_03_F" , "2000"], [ "PylonRack_Bomb_SDB_x4" , "5000"], - [ "PylonRack_Missile_HARM_x1" , "10000"], + [ "PylonRack_Missile_HARM_x1" , "8000"], [ "PylonMissile_Missile_BIM9X_x1" , "4000"], [ "PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] - ], - [ + ], + [ ["Pylon2", [ [ "PylonRack_Missile_AMRAAM_D_x1" , "4000"], @@ -700,14 +700,14 @@ CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = [ "Air Supremacy - Maddog", "pylon", - [ + [ [ ["Laserdesignator_pilotCamera" , [ [ "Laserbatteries" , "500"] ] ] - ], + ], [ ["weapon_Fighter_Gun20mm_AA" , [ @@ -715,84 +715,84 @@ CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylon1", [ [ "PylonRack_Missile_AMRAAM_D_x2" , "4000"] ] ] ], - [ + [ ["Pylon3", [ [ "PylonRack_Missile_AMRAAM_D_x2" , "4000"] ] ] - ], - [ + ], + [ ["PylonBayLeft1", [ [ "PylonMissile_Missile_BIM9X_x1" , "4000"] ] ] ], - [ + [ ["PylonBayCenter1", [ ["PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] ], - [ + [ ["PylonBayCenter2", [ ["PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] - ], - [ + ], + [ ["PylonBayCenter3", [ ["PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] ], - [ + [ ["PylonBayCenter4", [ ["PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] - ], - [ + ], + [ ["PylonBayCenter5", [ [ "PylonMissile_Bomb_GBU12_x1" , "5000"] ] ] - ], - [ + ], + [ ["PylonBayCenter6", [ [ "PylonMissile_Bomb_GBU12_x1" , "5000"] ] ] - ], - [ + ], + [ ["PylonBayRight1", [ [ "PylonMissile_Missile_BIM9X_x1" , "4000"] ] ] - ], - [ + ], + [ ["Pylon4", [ [ "PylonRack_Missile_AMRAAM_D_x2" , "4000"] ] ] - ], - [ + ], + [ ["Pylon2", [ [ "PylonRack_Missile_AMRAAM_D_x2" , "4000"] @@ -814,14 +814,14 @@ CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = [ "Ground Supremacy - Hybrid" , "pylon", - [ + [ [ ["Laserdesignator_pilotCamera" , [ [ "Laserbatteries" , "500"] ] ] - ], + ], [ ["weapon_Fighter_Gun20mm_AA" , [ @@ -829,84 +829,84 @@ CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylon1", [ [ "PylonRack_Missile_AGM_02_x1" , "5000"] ] ] ], - [ + [ ["Pylon3", [ - [ "PylonRack_Missile_HARM_x1" , "10000"] + [ "PylonRack_Missile_HARM_x1" , "8000"] ] ] - ], - [ + ], + [ ["PylonBayLeft1", [ [ "PylonMissile_Missile_BIM9X_x1" , "4000"] ] ] ], - [ + [ ["PylonBayCenter1", [ ["PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] ], - [ + [ ["PylonBayCenter2", [ ["PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] - ], - [ + ], + [ ["PylonBayCenter3", [ [ "PylonRack_Bomb_SDB_x4" , "5000"] ] ] ], - [ + [ ["PylonBayCenter4", [ [ "PylonRack_Bomb_SDB_x4" , "5000"] ] ] - ], - [ + ], + [ ["PylonBayCenter5", [ [ "PylonMissile_Bomb_GBU12_x1" , "5000"] ] ] - ], - [ + ], + [ ["PylonBayCenter6", [ [ "PylonMissile_Bomb_GBU12_x1" , "5000"] ] ] - ], - [ + ], + [ ["PylonBayRight1", [ [ "PylonMissile_Missile_BIM9X_x1" , "4000"] ] ] - ], - [ + ], + [ ["Pylon4", [ - [ "PylonRack_Missile_HARM_x1" , "10000"] + [ "PylonRack_Missile_HARM_x1" , "8000"] ] ] - ], - [ + ], + [ ["Pylon2", [ [ "PylonRack_Missile_AGM_02_x1" , "5000"] @@ -934,18 +934,18 @@ CTI_LOADOUT_B_Plane_Fighter_01_F_MNT_OPTIONS = // Plane - Black Wasp II Stealth // *************************** CTI_LOADOUT_B_Plane_Fighter_01_Stealth_F_MNT_OPTIONS = -[ +[ [ "Pylon - configuration" , "pylon", - [ + [ [ [ "Laserdesignator_pilotCamera" , [ [ "Laserbatteries" , "500" , [0]] ] ] - ], + ], [ [ "weapon_Fighter_Gun20mm_AA" , [ @@ -953,28 +953,28 @@ CTI_LOADOUT_B_Plane_Fighter_01_Stealth_F_MNT_OPTIONS = ] ] ], - [ + [ ["PylonBayRight1", [ [ "PylonMissile_Missile_BIM9X_x1" , "4000"] ] ] ], - [ + [ ["PylonBayCenter1", [ ["PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] ], - [ + [ ["PylonBayCenter2", [ ["PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] - ], - [ + ], + [ ["PylonBayCenter3", [ ["" , ""], @@ -983,7 +983,7 @@ CTI_LOADOUT_B_Plane_Fighter_01_Stealth_F_MNT_OPTIONS = ] ] ], - [ + [ ["PylonBayCenter4", [ ["" , ""], @@ -991,8 +991,8 @@ CTI_LOADOUT_B_Plane_Fighter_01_Stealth_F_MNT_OPTIONS = ["PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] - ], - [ + ], + [ ["PylonBayCenter5", [ [ "PylonMissile_Bomb_GBU12_x1" , "5000"], @@ -1001,8 +1001,8 @@ CTI_LOADOUT_B_Plane_Fighter_01_Stealth_F_MNT_OPTIONS = [ "PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] - ], - [ + ], + [ ["PylonBayCenter6", [ [ "PylonMissile_Bomb_GBU12_x1" , "5000"], @@ -1011,14 +1011,14 @@ CTI_LOADOUT_B_Plane_Fighter_01_Stealth_F_MNT_OPTIONS = [ "PylonMissile_Missile_AMRAAM_D_INT_x1" , "4000"] ] ] - ], - [ + ], + [ ["PylonBayRight1", [ [ "PylonMissile_Missile_BIM9X_x1" , "4000"] ] ] - ], + ], [ ["CMFlareLauncher" , [ @@ -1028,7 +1028,7 @@ CTI_LOADOUT_B_Plane_Fighter_01_Stealth_F_MNT_OPTIONS = [ "192Rnd_CMFlare_Chaff_Magazine" , "1500" , [-1] ] ] ] - ] + ] ] ] ]; @@ -1042,14 +1042,14 @@ CTI_LOADOUT_B_Heli_Light_01_dynamicLoadout_F_MNT_OPTIONS = "pylon", [ [ - ["M134_minigun" , + ["M134_minigun" , [ [ "5000Rnd_762x51_Belt" , "350"] ] ] - ], + ], [ - ["PylonRight1" , + ["PylonRight1" , [ [ "PylonRack_12Rnd_missiles" , "2000"], //[ "PylonRack_1Rnd_AAA_missiles" , "4000"], @@ -1059,9 +1059,9 @@ CTI_LOADOUT_B_Heli_Light_01_dynamicLoadout_F_MNT_OPTIONS = //[ "PylonRack_12Rnd_PG_missiles" , "8000"], ] ] - ], + ], [ - ["PylonLeft1" , + ["PylonLeft1" , [ [ "PylonRack_12Rnd_missiles" , "2000"], //[ "PylonRack_1Rnd_AAA_missiles" , "4000"], @@ -1173,42 +1173,42 @@ CTI_LOADOUT_B_T_VTOL_01_armed_F_MNT_OPTIONS = [ "Laserbatteries" , "500", [0]] ] ] - ], + ], [ ["cannon_105mm_VTOL_01" , [ [ "100Rnd_105mm_HEAT_MP" , "2000", [1]] ] ] - ], + ], [ ["cannon_105mm_VTOL_01" , [ [ "40Rnd_105mm_APFSDS_T_Red" , "2000", [1]] ] ] - ], + ], [ ["gatling_20mm_VTOL_01" , [ [ "4000Rnd_20mm_Tracer_Red_shells" , "2000", [1]] ] ] - ], + ], [ ["autocannon_40mm_VTOL_01" , [ [ "240Rnd_40mm_GPR_Tracer_Red_shells" , "2000", [2]] ] ] - ], + ], [ ["autocannon_40mm_VTOL_01" , [ [ "240Rnd_40mm_GPR_Tracer_Red_shells" , "2000", [2]] ] ] - ], + ], [ ["autocannon_40mm_VTOL_01" , [ @@ -1222,14 +1222,14 @@ CTI_LOADOUT_B_T_VTOL_01_armed_F_MNT_OPTIONS = [ "4000Rnd_20mm_Tracer_Red_shells" , "2000", [2]] ] ] - ] + ] ] ] ]; CTI_LOADOUT_B_T_VTOL_01_infantry_F_MNT_OPTIONS = CTI_LOADOUT_UNARMED_FLARES; CTI_LOADOUT_B_T_VTOL_01_vehicle_F_MNT_OPTIONS = CTI_LOADOUT_UNARMED_FLARES; - + // *************************** @@ -1305,7 +1305,7 @@ CTI_LOADOUT_B_Heli_Attack_01_dynamicLoadout_F_MNT_OPTIONS = [ "PylonRack_12Rnd_missiles" , "2000"] ] ] - ], + ], [ ["PylonRight2" , [ @@ -1313,7 +1313,7 @@ CTI_LOADOUT_B_Heli_Attack_01_dynamicLoadout_F_MNT_OPTIONS = [ "PylonMissile_1Rnd_LG_scalpel" , "5000", [0]] ] ] - ], + ], [ ["PylonRight1" , [ @@ -1334,7 +1334,7 @@ CTI_LOADOUT_B_Heli_Attack_01_dynamicLoadout_F_MNT_OPTIONS = ] ] ] - ] + ] ] ]; // *************************** @@ -1362,12 +1362,12 @@ CTI_LOADOUT_B_UAV_02_F_MNT_OPTIONS = ["Missile_AA_03_Plane_CAS_02_F" , [ [ "2Rnd_Missile_AA_03_F" , "8000"] - ] - ], + ] + ], ["missiles_ASRAAM" , [ [ "2Rnd_AAA_missiles" , "8000"] - ] + ] ] ], @@ -1410,7 +1410,7 @@ CTI_LOADOUT_B_UAV_02_CAS_F_MNT_OPTIONS = ["Mk82BombLauncher" , [ [ "2Rnd_Mk82" , "3000" ,[0]] - ] + ] ] ], @@ -1433,11 +1433,11 @@ CTI_LOADOUT_B_UAV_02_CAS_F_MNT_OPTIONS = // UAV - MQ-4A Greyhawk AT version // *************************** CTI_LOADOUT_B_UAV_02_dynamicLoadout_F_MNT_OPTIONS = -[ +[ [ "Pylon - configuration" , "pylon", - [ + [ [ [ "Laserdesignator_mounted" , [ @@ -1445,7 +1445,7 @@ CTI_LOADOUT_B_UAV_02_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons1", [ [ "PylonRack_3Rnd_LG_scalpel" , "15000" , [0]], @@ -1463,7 +1463,7 @@ CTI_LOADOUT_B_UAV_02_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons2", [ [ "PylonRack_3Rnd_LG_scalpel" , "15000" , [0]], @@ -1499,11 +1499,11 @@ CTI_LOADOUT_B_UAV_02_dynamicLoadout_F_MNT_OPTIONS = // UAV - MQ-12 Falcon // *************************** CTI_LOADOUT_B_T_UAV_03_dynamicLoadout_F_MNT_OPTIONS = -[ +[ [ "Pylon - configuration" , "pylon", - [ + [ [ [ "Laserdesignator_mounted" , [ @@ -1511,7 +1511,7 @@ CTI_LOADOUT_B_T_UAV_03_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons1", [ [ "PylonRack_12Rnd_missiles" , "2000" , [-1]], @@ -1529,7 +1529,7 @@ CTI_LOADOUT_B_T_UAV_03_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons2", [ [ "PylonRack_3Rnd_LG_scalpel" , "15000" , [0]], @@ -1546,8 +1546,8 @@ CTI_LOADOUT_B_T_UAV_03_dynamicLoadout_F_MNT_OPTIONS = [ "PylonMissile_1Rnd_BombCluster_03_F" , "1000" , [0]] ] ] - ], - [ + ], + [ ["Pylons3", [ [ "PylonRack_3Rnd_LG_scalpel" , "15000" , [0]], @@ -1565,7 +1565,7 @@ CTI_LOADOUT_B_T_UAV_03_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons4", [ [ "PylonRack_12Rnd_missiles" , "2000" , [-1]], @@ -1601,11 +1601,11 @@ CTI_LOADOUT_B_T_UAV_03_dynamicLoadout_F_MNT_OPTIONS = // UAV - UCAV Sentinel // *************************** CTI_LOADOUT_B_UAV_05_F_MNT_OPTIONS = -[ +[ [ "Pylon - configuration" , "pylon", - [ + [ [ [ "Laserdesignator_mounted" , [ @@ -1613,30 +1613,30 @@ CTI_LOADOUT_B_UAV_05_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons1", [ [ "PylonMissile_Bomb_GBU12_x1" , "5000" , [0]], [ "PylonMissile_Missile_AGM_02_x2" , "10000" , [0]], [ "PylonMissile_1Rnd_BombCluster_01_F" , "1000" , [0]], [ "PylonMissile_1Rnd_BombCluster_03_F" , "1000" , [0]], - [ "PylonMissile_Missile_HARM_INT_x1" , "10000" , [0]], + [ "PylonMissile_Missile_HARM_INT_x1" , "8000" , [0]], [ "PylonRack_Bomb_SDB_x4" , "5000" , [0]] ] ] ], - [ + [ ["Pylons2", [ [ "PylonMissile_Bomb_GBU12_x1" , "5000" , [0]], [ "PylonMissile_Missile_AGM_02_x2" , "10000" , [0]], [ "PylonMissile_1Rnd_BombCluster_01_F" , "1000" , [0]], [ "PylonMissile_1Rnd_BombCluster_03_F" , "1000" , [0]], - [ "PylonMissile_Missile_HARM_INT_x1" , "10000" , [0]], + [ "PylonMissile_Missile_HARM_INT_x1" , "8000" , [0]], [ "PylonRack_Bomb_SDB_x4" , "5000" , [0]] ] ] - ], + ], [ ["CMFlareLauncher" , [ @@ -1644,7 +1644,7 @@ CTI_LOADOUT_B_UAV_05_F_MNT_OPTIONS = [ "192Rnd_CMFlare_Chaff_Magazine" , "4000" , [-1]], [ "120Rnd_CMFlare_Chaff_Magazine" , "500" , [-1]], [ "168Rnd_CMFlare_Chaff_Magazine" , "3000" , [-1]] - + ] ] ] @@ -1666,7 +1666,7 @@ CTI_LOADOUT_O_T_UAV_04_CAS_F_MNT_OPTIONS = [ "Standard - Configuration" , "default", - [ + [ [ [ "Laserdesignator_mounted" , [ @@ -1716,7 +1716,7 @@ CTI_LOADOUT_O_Heli_Light_02_dynamicLoadout_F_MNT_OPTIONS = [ "PylonRack_19Rnd_Rocket_Skyfire" , "3000" ] ] ] - ], + ], [ [ "PylonRight1" , [ @@ -1792,9 +1792,9 @@ CTI_LOADOUT_O_Plane_Fighter_02_Stealth_F_MNT_OPTIONS = [ [ "PylonMissile_Missile_AA_R77_x1" , "5000" ], [ "PylonMissile_Missile_AA_R73_x1" , "5000" ] - + ] - ] + ] ], [ [ "PylonBayCenter1" , @@ -1803,14 +1803,14 @@ CTI_LOADOUT_O_Plane_Fighter_02_Stealth_F_MNT_OPTIONS = ] ] - ], + ], [ [ "PylonBayCenter3" , [ ["PylonMissile_Missile_AA_R77_INT_x1" , "4000" ], ["PylonMissile_Missile_AGM_KH25_INT_x1" , "6000" ], ["PylonMissile_Bomb_KAB250_x1" , "6000" ], - ["PylonMissile_Missile_KH58_INT_x1" , "10000" ], + ["PylonMissile_Missile_KH58_INT_x1" , "8000" ], ["PylonMissile_1Rnd_BombCluster_02_cap_F" , "1000" ] ] ] @@ -1827,10 +1827,10 @@ CTI_LOADOUT_O_Plane_Fighter_02_Stealth_F_MNT_OPTIONS = [ [ "PylonMissile_Missile_AA_R77_x1" , "5000" ], [ "PylonMissile_Missile_AA_R73_x1" , "5000" ] - + ] ] - ], + ], [ [ "PylonBayLeft1" , [ @@ -1850,7 +1850,7 @@ CTI_LOADOUT_O_Plane_Fighter_02_Stealth_F_MNT_OPTIONS = [ "120Rnd_CMFlare_Chaff_Magazine" , "500" , [-1]], [ "168Rnd_CMFlare_Chaff_Magazine" , "3000" , [-1] ], [ "192Rnd_CMFlare_Chaff_Magazine" , "4000" , [-1] ] - + ] ] ] @@ -1895,9 +1895,9 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ [ "PylonMissile_Missile_AA_R77_x1" , "5000" ], [ "PylonMissile_Missile_AA_R73_x1" , "5000" ] - + ] - ] + ] ], [ [ "Pylons3" , @@ -1909,7 +1909,7 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ "PylonMissile_1Rnd_BombCluster_02_cap_F" , "1000" ] ] ] - ], + ], [ [ "PylonBayRight1" , [ @@ -1928,17 +1928,17 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ "PylonBayCenter1" , [ ["PylonMissile_Missile_AA_R77_INT_x1" , "5000" ] - + ] ] - ], + ], [ [ "PylonBayCenter3" , [ [ "PylonMissile_Bomb_KAB250_x1" , "6000" ], [ "PylonMissile_Missile_AA_R77_INT_x1" , "5000" ], [ "PylonMissile_Missile_AGM_KH25_INT_x1" , "5000" ], - ["PylonMissile_Missile_KH58_INT_x1" , "10000" ], + ["PylonMissile_Missile_KH58_INT_x1" , "8000" ], [ "PylonMissile_1Rnd_BombCluster_02_cap_F" , "1000" ] ] ] @@ -1949,7 +1949,7 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = ["PylonMissile_Missile_AA_R77_INT_x1" , "5000" ] ] ] - ], + ], [ [ "PylonBayLeft2" , [ @@ -1980,7 +1980,7 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ [ "PylonMissile_Missile_AA_R77_x1" , "5000" ], [ "PylonMissile_Missile_AA_R73_x1" , "5000" ], - ["PylonMissile_Missile_KH58_INT_x1" , "10000" ] + ["PylonMissile_Missile_KH58_INT_x1" , "8000" ] ] ] ], @@ -1989,11 +1989,11 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ [ "PylonMissile_Missile_AA_R73_x1" , "5000" ], [ "PylonMissile_Missile_AA_R77_x1" , "5000" ], - ["PylonMissile_Missile_KH58_INT_x1" , "10000" ] - + ["PylonMissile_Missile_KH58_INT_x1" , "8000" ] + ] ] - ], + ], [ [ "CMFlareLauncher" , [ @@ -2001,7 +2001,7 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ "120Rnd_CMFlare_Chaff_Magazine" , "500" , [-1]], [ "168Rnd_CMFlare_Chaff_Magazine" , "3000" , [-1] ], [ "192Rnd_CMFlare_Chaff_Magazine" , "4000" , [-1] ] - + ] ] ] @@ -2036,9 +2036,9 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ "Pylons2" , [ [ "PylonMissile_Missile_AA_R77_x1" , "5000" ] - + ] - ] + ] ], [ [ "Pylons3" , @@ -2046,7 +2046,7 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ "PylonMissile_Missile_AA_R77_x1" , "5000" ] ] ] - ], + ], [ [ "PylonBayRight1" , [ @@ -2065,10 +2065,10 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ "PylonBayCenter1" , [ ["PylonMissile_Missile_AA_R77_INT_x1" , "5000" ] - + ] ] - ], + ], [ [ "PylonBayCenter3" , [ @@ -2082,7 +2082,7 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = ["PylonMissile_Missile_AA_R77_INT_x1" , "5000" ] ] ] - ], + ], [ [ "PylonBayLeft2" , [ @@ -2117,7 +2117,7 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ "PylonMissile_Missile_AA_R77_x1" , "5000" ] ] ] - ], + ], [ [ "CMFlareLauncher" , [ @@ -2125,7 +2125,7 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ "120Rnd_CMFlare_Chaff_Magazine" , "500" , [-1]], [ "168Rnd_CMFlare_Chaff_Magazine" , "3000" , [-1] ], [ "192Rnd_CMFlare_Chaff_Magazine" , "4000" , [-1] ] - + ] ] ] @@ -2162,9 +2162,9 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ [ "PylonMissile_Missile_AA_R77_x1" , "5000" ], [ "PylonMissile_Missile_AA_R73_x1" , "5000" ] - + ] - ] + ] ], [ [ "Pylons3" , @@ -2176,7 +2176,7 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ "PylonMissile_1Rnd_BombCluster_02_cap_F" , "1000" ] ] ] - ], + ], [ [ "PylonBayRight1" , [ @@ -2195,14 +2195,14 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ "PylonBayCenter1" , [ ["PylonMissile_Missile_AA_R77_INT_x1" , "5000" ] - + ] ] - ], + ], [ [ "PylonBayCenter3" , [ - ["PylonMissile_Missile_KH58_INT_x1" , "10000" ], + ["PylonMissile_Missile_KH58_INT_x1" , "8000" ], [ "PylonMissile_Bomb_KAB250_x1" , "6000" ], [ "PylonMissile_Missile_AA_R77_INT_x1" , "5000" ], [ "PylonMissile_Missile_AGM_KH25_INT_x1" , "5000" ], @@ -2216,7 +2216,7 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = ["PylonMissile_Missile_AA_R77_INT_x1" , "5000" ] ] ] - ], + ], [ [ "PylonBayLeft2" , [ @@ -2245,7 +2245,7 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ [ "Pylons5" , [ - ["PylonMissile_Missile_KH58_INT_x1" , "10000" ], + ["PylonMissile_Missile_KH58_INT_x1" , "8000" ], [ "PylonMissile_Missile_AA_R77_x1" , "5000" ], [ "PylonMissile_Missile_AA_R73_x1" , "5000" ] ] @@ -2254,12 +2254,12 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ [ "Pylons6" , [ - ["PylonMissile_Missile_KH58_INT_x1" , "10000" ], + ["PylonMissile_Missile_KH58_INT_x1" , "8000" ], [ "PylonMissile_Missile_AA_R73_x1" , "5000" ], - [ "PylonMissile_Missile_AA_R77_x1" , "5000" ] + [ "PylonMissile_Missile_AA_R77_x1" , "5000" ] ] ] - ], + ], [ [ "CMFlareLauncher" , [ @@ -2267,7 +2267,7 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = [ "120Rnd_CMFlare_Chaff_Magazine" , "500" , [-1]], [ "168Rnd_CMFlare_Chaff_Magazine" , "3000" , [-1] ], [ "192Rnd_CMFlare_Chaff_Magazine" , "4000" , [-1] ] - + ] ] ] @@ -2276,10 +2276,10 @@ CTI_LOADOUT_O_Plane_Fighter_02_F_MNT_OPTIONS = ]; // *************************** -// VTOL - Y-32 +// VTOL - Y-32 // *************************** CTI_LOADOUT_O_T_VTOL_02_infantry_dynamicLoadout_F_MNT_OPTIONS = -[ +[ [ "Pylon - configuration" , "pylon", @@ -2335,7 +2335,7 @@ CTI_LOADOUT_O_T_VTOL_02_infantry_dynamicLoadout_F_MNT_OPTIONS = [ "PylonMissile_1Rnd_Bomb_03_F" , "5000" , [-1]], [ "PylonMissile_1Rnd_BombCluster_02_cap_F" , "1000" , [-1]] ] - ] + ] ], [ [ "PylonRight2" , @@ -2376,7 +2376,7 @@ CTI_LOADOUT_O_T_VTOL_02_infantry_dynamicLoadout_F_MNT_OPTIONS = [ "120Rnd_CMFlare_Chaff_Magazine" , "500" , [-1]] , [ "168Rnd_CMFlare_Chaff_Magazine" , "3000" , [-1] ] , [ "192Rnd_CMFlare_Chaff_Magazine" , "4000" , [-1] ] - + ] ] ] @@ -2411,12 +2411,12 @@ CTI_LOADOUT_O_UAV_02_F_MNT_OPTIONS = ["Missile_AA_03_Plane_CAS_02_F" , [ [ "2Rnd_Missile_AA_03_F" , "8000"] - ] - ], + ] + ], ["missiles_ASRAAM" , [ [ "2Rnd_AAA_missiles" , "8000"] - ] + ] ] ], @@ -2459,7 +2459,7 @@ CTI_LOADOUT_O_UAV_02_CAS_F_MNT_OPTIONS = ["Mk82BombLauncher" , [ [ "2Rnd_Mk82" , "3000" ,[0]] - ] + ] ] ], @@ -2480,11 +2480,11 @@ CTI_LOADOUT_O_UAV_02_CAS_F_MNT_OPTIONS = // Plane - UAV Dynamic AT // *************************** CTI_LOADOUT_O_UAV_02_dynamicLoadout_F_MNT_OPTIONS = -[ +[ [ "Pylon - configuration" , "pylon", - [ + [ [ [ "Laserdesignator_mounted" , [ @@ -2492,7 +2492,7 @@ CTI_LOADOUT_O_UAV_02_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons1", [ [ "PylonRack_3Rnd_LG_scalpel" , "15000" , [0]], @@ -2505,7 +2505,7 @@ CTI_LOADOUT_O_UAV_02_dynamicLoadout_F_MNT_OPTIONS = ] ] ], - [ + [ ["Pylons2", [ [ "PylonRack_3Rnd_LG_scalpel" , "15000" , [0]], @@ -2537,7 +2537,7 @@ CTI_LOADOUT_O_UAV_02_dynamicLoadout_F_MNT_OPTIONS = // Heli - Kajman ( Camo ) // *************************** CTI_LOADOUT_O_Heli_Attack_02_dynamicLoadout_F_MNT_OPTIONS = -[ +[ [ "Pylon - configuration" , "pylon", @@ -2586,7 +2586,7 @@ CTI_LOADOUT_O_Heli_Attack_02_dynamicLoadout_F_MNT_OPTIONS = [ "PylonMissile_1Rnd_Bomb_03_F" , "5000" , [0]], [ "PylonMissile_1Rnd_BombCluster_02_F" , "1000" , [0]] ] - ] + ] ], [ [ "PylonRight2" , @@ -2626,7 +2626,7 @@ CTI_LOADOUT_O_Heli_Attack_02_dynamicLoadout_F_MNT_OPTIONS = [ "240Rnd_CMFlare_Chaff_Magazine" , "5000" , [-1]], [ "120Rnd_CMFlare_Chaff_Magazine" , "500" , [-1]], [ "168Rnd_CMFlare_Chaff_Magazine" , "3000" , [-1]], - [ "192Rnd_CMFlare_Chaff_Magazine" , "4000" , [-1]] + [ "192Rnd_CMFlare_Chaff_Magazine" , "4000" , [-1]] ] ] ] @@ -2677,9 +2677,9 @@ CTI_LOADOUT_O_Plane_CAS_02_dynamicLoadout_F_MNT_OPTIONS = [ "PylonRack_20Rnd_Rocket_03_AP_F" , "3000" ], [ "PylonRack_19Rnd_Rocket_Skyfire" , "3000" ], [ "PylonRack_1Rnd_Missile_AA_03_F" , "4000" ] - + ] - ] + ] ], [ [ "Pylons3" , @@ -2745,7 +2745,7 @@ CTI_LOADOUT_O_Plane_CAS_02_dynamicLoadout_F_MNT_OPTIONS = [ "PylonMissile_1Rnd_BombCluster_02_cap_F" , "1000" ] ] ] - ], + ], [ [ "Pylons7" , [ @@ -2797,17 +2797,17 @@ CTI_LOADOUT_O_Plane_CAS_02_dynamicLoadout_F_MNT_OPTIONS = [ [ "PylonRack_1Rnd_Missile_AA_03_F" , "4000" ], [ "PylonMissile_1Rnd_LG_scalpel" , "5000" ] - + ] ] - ], + ], [ [ "CMFlareLauncher" , [ [ "240Rnd_CMFlare_Chaff_Magazine" , "5000" , [-1] ], [ "120Rnd_CMFlare_Chaff_Magazine" , "500" , [-1]] , [ "168Rnd_CMFlare_Chaff_Magazine" , "3000" , [-1] ] , - [ "192Rnd_CMFlare_Chaff_Magazine" , "4000" , [-1] ] + [ "192Rnd_CMFlare_Chaff_Magazine" , "4000" , [-1] ] ] ] ] @@ -2837,7 +2837,7 @@ CTI_LOADOUT_I_Heli_light_03_unarmed_F_MNT_OPTIONS = CTI_LOADOUT_UNARMED_FLARES; // Helicopter - Hellcat (armed) TODO // *************************** /* -I_Heli_light_03_F = +I_Heli_light_03_F = [ [ "Pylon - configuration" , @@ -2862,7 +2862,7 @@ CTI_LOADOUT_I_Heli_light_03_dynamicLoadout_F_MNT_OPTIONS = [ "5000Rnd_762x51_Yellow_Belt" , "500" ] ] ] - ], + ], [ [ "Laserdesignator_mounted" , [ @@ -2969,7 +2969,7 @@ CTI_LOADOUT_I_Plane_Fighter_03_AA_F_MNT_OPTIONS = [ [ "2Rnd_AAA_missiles_MI06" , "8000" ] ] - ] + ] ], [ [ "CMFlareLauncher" , @@ -2978,7 +2978,7 @@ CTI_LOADOUT_I_Plane_Fighter_03_AA_F_MNT_OPTIONS = [ "120Rnd_CMFlare_Chaff_Magazine" , "500" , [-1]] , [ "168Rnd_CMFlare_Chaff_Magazine" , "3000" , [-1] ] , [ "192Rnd_CMFlare_Chaff_Magazine" , "4000" , [-1] ] - + ] ] ] @@ -3022,14 +3022,14 @@ CTI_LOADOUT_I_Plane_Fighter_03_CAS_F_MNT_OPTIONS = [ [ "2Rnd_AAA_missiles_MI06" , "8000" ] ] - ] - ], + ] + ], [ [ "GBU12BombLauncher_Plane_Fighter_03_F" , [ [ "2Rnd_GBU12_LGB_MI10" , "10000" ] ] - ] + ] ], [ [ "CMFlareLauncher" , @@ -3046,7 +3046,7 @@ CTI_LOADOUT_I_Plane_Fighter_03_CAS_F_MNT_OPTIONS = ]; // *************************** -// Plane - Buzzard (Dynamic) +// Plane - Buzzard (Dynamic) // *************************** CTI_LOADOUT_I_Plane_Fighter_03_dynamicLoadout_F_MNT_OPTIONS = [ @@ -3095,7 +3095,7 @@ CTI_LOADOUT_I_Plane_Fighter_03_dynamicLoadout_F_MNT_OPTIONS = [ "PylonRack_12Rnd_PG_missiles" , "8000" ], [ "PylonRack_12Rnd_missiles" , "2000" ] ] - ] + ] ], [ [ "Pylons3" , @@ -3158,7 +3158,7 @@ CTI_LOADOUT_I_Plane_Fighter_03_dynamicLoadout_F_MNT_OPTIONS = [ "PylonRack_12Rnd_missiles" , "2000" ] ] ] - ], + ], [ [ "Pylons7" , [ @@ -3172,7 +3172,7 @@ CTI_LOADOUT_I_Plane_Fighter_03_dynamicLoadout_F_MNT_OPTIONS = [ "PylonRack_12Rnd_missiles" , "2000" ] ] ] - ], + ], [ [ "CMFlareLauncher" , [ @@ -3180,7 +3180,7 @@ CTI_LOADOUT_I_Plane_Fighter_03_dynamicLoadout_F_MNT_OPTIONS = [ "120Rnd_CMFlare_Chaff_Magazine" , "500" , [-1]] , [ "168Rnd_CMFlare_Chaff_Magazine" , "3000" , [-1] ] , [ "192Rnd_CMFlare_Chaff_Magazine" , "4000" , [-1] ] - + ] ] ] @@ -3189,7 +3189,7 @@ CTI_LOADOUT_I_Plane_Fighter_03_dynamicLoadout_F_MNT_OPTIONS = ]; // *************************** -// Plane - A-149 Gryphon (Dynamic) +// Plane - A-149 Gryphon (Dynamic) // *************************** CTI_LOADOUT_I_Plane_Fighter_04_F_MNT_OPTIONS = [ @@ -3216,7 +3216,7 @@ CTI_LOADOUT_I_Plane_Fighter_04_F_MNT_OPTIONS = [ [ "PylonMissile_Missile_BIM9X_x1" , "4000" ], [ "PylonRack_Missile_AMRAAM_C_x1" , "4000" ] - + ] ] ], @@ -3226,7 +3226,7 @@ CTI_LOADOUT_I_Plane_Fighter_04_F_MNT_OPTIONS = [ "PylonMissile_Missile_BIM9X_x1" , "4000" ], [ "PylonRack_Missile_AMRAAM_C_x1" , "4000" ] ] - ] + ] ], [ [ "Pylon3" , @@ -3234,7 +3234,7 @@ CTI_LOADOUT_I_Plane_Fighter_04_F_MNT_OPTIONS = [ "PylonRack_Missile_AGM_02_x1" , "5000" ], [ "PylonRack_Missile_AMRAAM_C_x1" , "4000" ], [ "PylonMissile_Missile_BIM9X_x1" , "4000" ] - + ] @@ -3279,7 +3279,7 @@ CTI_LOADOUT_I_Plane_Fighter_04_F_MNT_OPTIONS = [ "PylonMissile_1Rnd_BombCluster_03_F" , "1000" ] ] ] - ], + ], [ [ "CMFlareLauncher" , [ @@ -3351,7 +3351,7 @@ CTI_ALM_AA_RESEARCHED_MAGAZINES = "PylonRack_1Rnd_Missile_AA_03_F" , "PylonMissile_1Rnd_Missile_AA_03_F" , "magazine_Missile_BIM9X_x1" , - "PylonMissile_Missile_BIM9X_x1" , + "PylonMissile_Missile_BIM9X_x1" , "PylonRack_Missile_BIM9X_x1" , "PylonRack_Missile_BIM9X_x2" , "magazine_Missile_AMRAAM_D_x1" , diff --git a/Common/Config/Base/Base_East.sqf b/Common/Config/Base/Base_East.sqf index b6d2cfd26..da5508dbe 100644 --- a/Common/Config/Base/Base_East.sqf +++ b/Common/Config/Base/Base_East.sqf @@ -228,13 +228,13 @@ _categories = []; _headers = _headers + [["Praetorian 1C - Only on BASE Areas", [["DMG_Reduce", 10]]]]; _classes = _classes + ["B_AAA_System_01_F"]; -_prices = _prices + [40000]; +_prices = _prices + [25000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; _headers = _headers + [["Mk49 Spartan - Only on BASE Areas", [["DMG_Reduce", 10]]]]; _classes = _classes + ["B_SAM_System_01_F"]; -_prices = _prices + [60000]; +_prices = _prices + [40000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; @@ -246,13 +246,13 @@ _categories = _categories + ["Defense"]; _headers = _headers + ["R-750 Cronus Radar - Only on BASE Areas"]; _classes = _classes + ["O_Radar_System_02_F"]; -_prices = _prices + [12000]; +_prices = _prices + [20000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; _headers = _headers + ["S-750 Rhea - Only on BASE Areas"]; _classes = _classes + ["O_SAM_System_04_F"]; -_prices = _prices + [40000]; +_prices = _prices + [50000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; diff --git a/Common/Config/Base/Base_West.sqf b/Common/Config/Base/Base_West.sqf index c4fea8b2f..cf4c45df7 100644 --- a/Common/Config/Base/Base_West.sqf +++ b/Common/Config/Base/Base_West.sqf @@ -233,13 +233,13 @@ _categories = []; _headers = _headers + [["Praetorian 1C - Only on BASE Areas", [["DMG_Reduce", 10]]]]; _classes = _classes + ["B_AAA_System_01_F"]; -_prices = _prices + [40000]; +_prices = _prices + [25000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; _headers = _headers + [["Mk49 Spartan - Only on BASE Areas", [["DMG_Reduce", 10]]]]; _classes = _classes + ["B_SAM_System_01_F"]; -_prices = _prices + [60000]; +_prices = _prices + [40000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; @@ -251,13 +251,13 @@ _categories = _categories + ["Defense"]; _headers = _headers + ["AN/MPQ-105 Radar - Only on BASE Areas"]; _classes = _classes + ["B_Radar_System_01_F"]; -_prices = _prices + [12000]; +_prices = _prices + [20000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; _headers = _headers + ["MIM-145 Defender - Only on BASE Areas"]; _classes = _classes + ["B_SAM_System_03_F"]; -_prices = _prices + [40000]; +_prices = _prices + [50000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; diff --git a/Common/Config/Gear/Gear_East.sqf b/Common/Config/Gear/Gear_East.sqf index 2e51235dc..82383ae1f 100644 --- a/Common/Config/Gear/Gear_East.sqf +++ b/Common/Config/Gear/Gear_East.sqf @@ -167,6 +167,38 @@ _i = _i + ["30Rnd_762x39_AK12_Mag_Tracer_F"]; _u = _u + [1]; _p = _p + [30]; +_i = _i + ["30rnd_762x39_AK12_Arid_Mag_F"]; +_u = _u + [2]; +_p = _p + [30]; + +_i = _i + ["30rnd_762x39_AK12_Arid_Mag_Tracer_F"]; +_u = _u + [2]; +_p = _p + [30]; + +_i = _i + ["75Rnd_762x39_Mag_F"]; +_u = _u + [3]; +_p = _p + [50]; + +_i = _i + ["75Rnd_762x39_Mag_Tracer_F"]; +_u = _u + [3]; +_p = _p + [50]; + +_i = _i + ["75rnd_762x39_AK12_Mag_F"]; +_u = _u + [3]; +_p = _p + [50]; + +_i = _i + ["75rnd_762x39_AK12_Mag_Tracer_F"]; +_u = _u + [3]; +_p = _p + [50]; + +_i = _i + ["75rnd_762x39_AK12_Arid_Mag_F"]; +_u = _u + [3]; +_p = _p + [50]; + +_i = _i + ["75rnd_762x39_AK12_Arid_Mag_Tracer_F"]; +_u = _u + [3]; +_p = _p + [50]; + _i = _i + ["30Rnd_65x39_caseless_green"]; _u = _u + [1]; _p = _p + [30]; @@ -191,6 +223,14 @@ _i = _i + ["20Rnd_556x45_UW_mag"]; _u = _u + [2]; _p = _p + [50]; +_i = _i + ["2Rnd_12Gauge_Pellets"]; +_u = _u + [0]; +_p = _p + [5]; + +_i = _i + ["2Rnd_12Gauge_Slug"]; +_u = _u + [0]; +_p = _p + [5]; + //MG Ammo _i = _i + ["150Rnd_762x54_Box"]; _u = _u + [2]; @@ -247,11 +287,11 @@ _p = _p + [150]; _i = _i + ["5Rnd_127x108_Mag"]; _u = _u + [3]; -_p = _p + [250]; +_p = _p + [150]; _i = _i + ["5Rnd_127x108_APDS_Mag"]; _u = _u + [3]; -_p = _p + [250]; +_p = _p + [150]; //Launchers Ammo _i = _i + ["RPG7_F"]; @@ -267,12 +307,12 @@ _u = _u + [1]; _p = _p + [50]; _i = _i + ["Vorona_HEAT"]; -_u = _u + [2]; -_p = _p + [170]; +_u = _u + [3]; +_p = _p + [300]; _i = _i + ["Vorona_HE"]; -_u = _u + [2]; -_p = _p + [100]; +_u = _u + [3]; +_p = _p + [150]; _i = _i + ["Titan_AA"]; _u = _u + [2]; @@ -516,6 +556,14 @@ _i = _i + ["arifle_CTARS_hex_F"]; _u = _u + [1]; _p = _p + [50]; +_i = _i + ["arifle_AK12U_F"]; +_u = _u + [2]; +_p = _p + [80]; + +_i = _i + ["arifle_AK12U_arid_F"]; +_u = _u + [2]; +_p = _p + [80]; + _i = _i + ["arifle_AK12_F"]; _u = _u + [2]; _p = _p + [100]; @@ -524,6 +572,14 @@ _i = _i + ["arifle_AK12_GL_F"]; _u = _u + [2]; _p = _p + [100]; +_i = _i + ["arifle_RPK12_F"]; +_u = _u + [3]; +_p = _p + [180]; + +_i = _i + ["arifle_RPK12_arid_F"]; +_u = _u + [3]; +_p = _p + [180]; + _i = _i + ["srifle_DMR_07_blk_F"]; _u = _u + [2]; _p = _p + [200]; @@ -592,6 +648,10 @@ _i = _i + ["srifle_GM6_ghex_F"]; _u = _u + [3]; _p = _p + [500]; +_i = _i + ["sgun_HunterShotgun_01_F"]; +_u = _u + [0]; +_p = _p + [25]; + //Launchers _i = _i + ["launch_O_Titan_short_F"]; _u = _u + [3]; @@ -603,27 +663,27 @@ _p = _p + [250]; _i = _i + ["launch_O_Titan_F"]; _u = _u + [2]; -_p = _p + [125]; +_p = _p + [200]; _i = _i + ["launch_O_Titan_ghex_F"]; _u = _u + [2]; -_p = _p + [125]; +_p = _p + [200]; _i = _i + ["launch_O_Vorona_brown_F"]; -_u = _u + [2]; -_p = _p + [220]; +_u = _u + [3]; +_p = _p + [350]; _i = _i + ["launch_O_Vorona_green_F"]; -_u = _u + [2]; -_p = _p + [220]; +_u = _u + [3]; +_p = _p + [350]; _i = _i + ["launch_RPG32_F"]; _u = _u + [1]; -_p = _p + [100]; +_p = _p + [150]; _i = _i + ["launch_RPG32_ghex_F"]; _u = _u + [1]; -_p = _p + [100]; +_p = _p + [150]; _i = _i + ["launch_RPG7_F"]; _u = _u + [0]; @@ -809,6 +869,10 @@ _i = _i + ["O_UAV_01_backpack_F"]; _u = _u + [3]; _p = _p + [2500]; +_i = _i + ["O_UGV_02_Demining_backpack_F"]; +_u = _u + [2]; +_p = _p + [1000]; + _i = _i + ["O_UAV_06_backpack_F"]; _u = _u + [2]; _p = _p + [300]; @@ -1113,6 +1177,10 @@ _i = _i + ["G_Bandanna_tan"]; _u = _u + [0]; _p = _p + [5]; +_i = _i + ["G_AirPurifyingRespirator_02_black_F"]; +_u = _u + [1]; +_p = _p + [10]; + _i = _i + ["G_O_Diving"]; _u = _u + [2]; _p = _p + [50]; diff --git a/Common/Config/Gear/Gear_West.sqf b/Common/Config/Gear/Gear_West.sqf index 5dc4a98c4..04f8b47cc 100644 --- a/Common/Config/Gear/Gear_West.sqf +++ b/Common/Config/Gear/Gear_West.sqf @@ -163,6 +163,14 @@ _i = _i + ["30Rnd_65x39_caseless_khaki_mag_Tracer"]; _u = _u + [1]; _p = _p + [20]; +_i = _i + ["30Rnd_65x39_caseless_msbs_mag"]; +_u = _u + [2]; +_p = _p + [25]; + +_i = _i + ["30Rnd_65x39_caseless_msbs_mag_Tracer"]; +_u = _u + [2]; +_p = _p + [25]; + _i = _i + ["30Rnd_556x45_Stanag"]; _u = _u + [0]; _p = _p + [10]; @@ -215,6 +223,22 @@ _i = _i + ["20Rnd_556x45_UW_mag"]; _u = _u + [2]; _p = _p + [50]; +_i = _i + ["2Rnd_12Gauge_Pellets"]; +_u = _u + [0]; +_p = _p + [5]; + +_i = _i + ["2Rnd_12Gauge_Slug"]; +_u = _u + [0]; +_p = _p + [5]; + +_i = _i + ["6Rnd_12Gauge_Pellets"]; +_u = _u + [3]; +_p = _p + [20]; + +_i = _i + ["6Rnd_12Gauge_Slug"]; +_u = _u + [3]; +_p = _p + [20]; + //MG Ammo _i = _i + ["100Rnd_65x39_caseless_mag"]; _u = _u + [1]; @@ -422,7 +446,6 @@ _i = _i + ["1Rnd_SmokeOrange_Grenade_shell"]; _u = _u + [1]; _p = _p + [10]; - _i = _i + ["UGL_FlareWhite_F"]; _u = _u + [0]; _p = _p + [10]; @@ -608,6 +631,38 @@ _i = _i + ["arifle_MXM_khk_F"]; _u = _u + [1]; _p = _p + [150]; +_i = _i + ["arifle_MSBS65_black_F"]; +_u = _u + [2]; +_p = _p + [100]; + +_i = _i + ["arifle_MSBS65_sand_F"]; +_u = _u + [2]; +_p = _p + [100]; + +_i = _i + ["arifle_MSBS65_GL_black_F"]; +_u = _u + [2]; +_p = _p + [125]; + +_i = _i + ["arifle_MSBS65_GL_sand_F"]; +_u = _u + [2]; +_p = _p + [125]; + +_i = _i + ["arifle_MSBS65_Mark_black_F"]; +_u = _u + [3]; +_p = _p + [125]; + +_i = _i + ["arifle_MSBS65_Mark_sand_F"]; +_u = _u + [3]; +_p = _p + [125]; + +_i = _i + ["arifle_MSBS65_UBS_black_F"]; +_u = _u + [3]; +_p = _p + [150]; + +_i = _i + ["arifle_MSBS65_UBS_sand_F"]; +_u = _u + [3]; +_p = _p + [150]; + _i = _i + ["arifle_SPAR_01_blk_F"]; _u = _u + [1]; _p = _p + [50]; @@ -732,6 +787,10 @@ _i = _i + ["srifle_LRR_tna_F"]; _u = _u + [3]; _p = _p + [500]; +_i = _i + ["sgun_HunterShotgun_01_F"]; +_u = _u + [0]; +_p = _p + [25]; + //Launchers _i = _i + ["launch_B_Titan_short_F"]; _u = _u + [3]; @@ -743,11 +802,11 @@ _p = _p + [250]; _i = _i + ["launch_B_Titan_F"]; _u = _u + [2]; -_p = _p + [125]; +_p = _p + [200]; _i = _i + ["launch_B_Titan_tna_F"]; _u = _u + [2]; -_p = _p + [125]; +_p = _p + [200]; _i = _i + ["launch_MRAWS_sand_F"]; _u = _u + [2]; @@ -1065,6 +1124,10 @@ _i = _i + ["B_UAV_01_backpack_F"]; _u = _u + [3]; _p = _p + [2500]; +_i = _i + ["B_UGV_02_Demining_backpack_F"]; +_u = _u + [2]; +_p = _p + [1000]; + _i = _i + ["B_UAV_06_backpack_F"]; _u = _u + [2]; _p = _p + [300]; @@ -1497,6 +1560,10 @@ _i = _i + ["G_Combat_Goggles_tna_F"]; _u = _u + [0]; _p = _p + [10]; +_i = _i + ["G_AirPurifyingRespirator_01_F"]; +_u = _u + [1]; +_p = _p + [10]; + _i = _i + ["G_B_Diving"]; _u = _u + [2]; _p = _p + [50]; diff --git a/Common/Config/Units/Units_East.sqf b/Common/Config/Units/Units_East.sqf index 0a4777c17..d58107fb6 100644 --- a/Common/Config/Units/Units_East.sqf +++ b/Common/Config/Units/Units_East.sqf @@ -230,9 +230,9 @@ _s = _s + [""]; _c = _c + ['O_Soldier_HAT_F']; _p = _p + ['']; _n = _n + ['Rifleman [HAT]']; -_o = _o + [320]; +_o = _o + [700]; _t = _t + [5]; -_u = _u + [2]; +_u = _u + [3]; _f = _f + [CTI_FACTORY_BARRACKS]; _s = _s + [""]; @@ -410,7 +410,7 @@ _s = _s + [""]; _c = _c + ['O_Soldier_AA_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [300]; +_o = _o + [350]; _t = _t + [5]; _u = _u + [2]; _f = _f + [CTI_FACTORY_BARRACKS]; @@ -419,7 +419,7 @@ _s = _s + [""]; _c = _c + ['O_soldierU_AA_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [300]; +_o = _o + [350]; _t = _t + [5]; _u = _u + [2]; _f = _f + [CTI_FACTORY_BARRACKS]; @@ -428,7 +428,7 @@ _s = _s + [""]; _c = _c + ['O_Soldier_AT_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [450]; +_o = _o + [550]; _t = _t + [5]; _u = _u + [3]; _f = _f + [CTI_FACTORY_BARRACKS]; @@ -437,7 +437,7 @@ _s = _s + [""]; _c = _c + ['O_soldierU_AT_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [450]; +_o = _o + [550]; _t = _t + [5]; _u = _u + [3]; _f = _f + [CTI_FACTORY_BARRACKS]; @@ -1259,7 +1259,7 @@ _s = _s + [""]; _c = _c + ['B_AAA_System_01_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [40000]; +_o = _o + [25000]; _t = _t + [30]; _u = _u + [0]; _f = _f + [""]; @@ -1268,7 +1268,7 @@ _s = _s + [""]; _c = _c + ['B_SAM_System_01_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [60000]; +_o = _o + [40000]; _t = _t + [30]; _u = _u + [0]; _f = _f + [""]; @@ -1286,7 +1286,7 @@ _s = _s + [""]; _c = _c + ['O_Radar_System_02_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [12000]; +_o = _o + [20000]; _t = _t + [30]; _u = _u + [0]; _f = _f + [""]; @@ -1295,7 +1295,7 @@ _s = _s + [""]; _c = _c + ['O_SAM_System_04_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [40000]; +_o = _o + [50000]; _t = _t + [30]; _u = _u + [0]; _f = _f + [""]; diff --git a/Common/Config/Units/Units_Resistance.sqf b/Common/Config/Units/Units_Resistance.sqf index f9957d305..7cc648feb 100644 --- a/Common/Config/Units/Units_Resistance.sqf +++ b/Common/Config/Units/Units_Resistance.sqf @@ -41,7 +41,7 @@ _s = _s + [""]; _c = _c + ['I_soldier_AA_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [300]; +_o = _o + [350]; _t = _t + [5]; _u = _u + [1]; _f = _f + [CTI_FACTORY_BARRACKS]; diff --git a/Common/Config/Units/Units_West.sqf b/Common/Config/Units/Units_West.sqf index 6587ef781..647345bb7 100644 --- a/Common/Config/Units/Units_West.sqf +++ b/Common/Config/Units/Units_West.sqf @@ -294,7 +294,7 @@ _s = _s + [""]; _c = _c + ['B_soldier_AA_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [300]; +_o = _o + [350]; _t = _t + [5]; _u = _u + [2]; _f = _f + [CTI_FACTORY_BARRACKS]; @@ -303,7 +303,7 @@ _s = _s + [""]; _c = _c + ['B_soldier_AT_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [450]; +_o = _o + [550]; _t = _t + [5]; _u = _u + [3]; _f = _f + [CTI_FACTORY_BARRACKS]; @@ -1117,7 +1117,7 @@ _s = _s + [""]; _c = _c + ['B_AAA_System_01_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [40000]; +_o = _o + [25000]; _t = _t + [30]; _u = _u + [0]; _f = _f + [""]; @@ -1126,7 +1126,7 @@ _s = _s + [""]; _c = _c + ['B_SAM_System_01_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [60000]; +_o = _o + [40000]; _t = _t + [30]; _u = _u + [0]; _f = _f + [""]; @@ -1144,7 +1144,7 @@ _s = _s + [""]; _c = _c + ['B_Radar_System_01_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [12000]; +_o = _o + [20000]; _t = _t + [30]; _u = _u + [0]; _f = _f + [""]; @@ -1153,7 +1153,7 @@ _s = _s + [""]; _c = _c + ['B_SAM_System_03_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [40000]; +_o = _o + [50000]; _t = _t + [30]; _u = _u + [0]; _f = _f + [""]; From 92883588fa8c3dc15795c4798defb8ef46cbbd69 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Fri, 16 Aug 2019 19:16:45 +0200 Subject: [PATCH 114/267] Added reset crew to UAVs --- Addons/Strat_mode/Functions/UAV_Fix_Crew.sqf | 26 ++++++++++++++++++++ Addons/Strat_mode/Functions/UAV_Fuel.sqf | 9 +++++++ Addons/Strat_mode/init.sqf | 1 + Common/Functions/Common_CreateVehicle.sqf | 10 ++++++-- 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 Addons/Strat_mode/Functions/UAV_Fix_Crew.sqf diff --git a/Addons/Strat_mode/Functions/UAV_Fix_Crew.sqf b/Addons/Strat_mode/Functions/UAV_Fix_Crew.sqf new file mode 100644 index 000000000..c7f16eb07 --- /dev/null +++ b/Addons/Strat_mode/Functions/UAV_Fix_Crew.sqf @@ -0,0 +1,26 @@ +/* + # HEADER # + Script: Addons\Strat_mode\Functions\UAV_Fix_Crew.sqf + Alias: UAV_FIX_CREW + Description: Replaces the crew of a vehicle to resolve issue with AI getting stuck, + or behaving weirdly. Will disconnect the player in the process + Author: Yoshi_E + Creation Date: 16-08-2019 + Revision Date: 16-08-2019 + + + # EXAMPLE # + _veh addAction ["Reset Crew", UAV_FIX_CREW]; + +*/ +params ["_target", "_caller", "_actionId", "_arguments"]; +player connectTerminalToUAV objNull; +_target removeAction _actionId; +sleep 1; +{_target deleteVehicleCrew _x} forEach crew _target; +createVehicleCrew _target; +hint "Crew has been replaced"; +sleep 300; //Can be used every 5min +_target addAction ["Reset Crew", UAV_FIX_CREW, [], 0.01, false, true, "", "true", 0.1]; + + diff --git a/Addons/Strat_mode/Functions/UAV_Fuel.sqf b/Addons/Strat_mode/Functions/UAV_Fuel.sqf index 9a33c2bc7..716576d90 100644 --- a/Addons/Strat_mode/Functions/UAV_Fuel.sqf +++ b/Addons/Strat_mode/Functions/UAV_Fuel.sqf @@ -8,6 +8,15 @@ private ["_uav","_last_fuel","_newfuel"]; _uav=_this; _last_fuel=fuel _uav; + +{ + _action = _uav actionParams _x; + if(_action select 0 == "Reset Crew") then { + _uav removeAction _x; + }; +} forEach actionIDs _uav; +_uav addAction ["Reset Crew", UAV_FIX_CREW, [], 0.01, false, true, "", "true", 0.1]; + while {!CTI_GameOver && alive _uav} do { if (local _uav) then { if (fuel _uav <0.05) then {_uav setDammage 1}; diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 30f74573d..6d8a3c9e0 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -46,6 +46,7 @@ with missionNamespace do { SM_COM_Init = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Old_Com_Eject\SM_COM_init.sqf"; UAV_FUEL = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\UAV_Fuel.sqf"; + UAV_FIX_CREW = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\UAV_Fix_Crew.sqf"; UAV_RANGE = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\UAV_Range.sqf"; DYNG_WAIT = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\DYNG_waitforgroup.sqf"; DYNG_SERVERLOOP = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\DYNG_serverloop.sqf"; diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index b3bdfd3d8..0a9606e24 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -113,9 +113,15 @@ if (isNull _created) then { //if (_special == "FORM") then {_vehicle setPos [(getPos _vehicle) select 0, (getPos _vehicle) select 1, 0.75];}; //--- Make the vehicle spawn above the ground level to prevent any bisteries if (_special == "FORM") then {_vehicle setPos [(getPos _vehicle) select 0, (getPos _vehicle) select 1];}; // --- Zerty edit - if (_type isKindOf "UAV" || _type isKindOf "UGV_01_base_F") then {createVehicleCrew _vehicle}; + if (_type isKindOf "UAV" || _type isKindOf "UGV_01_base_F") then { + createVehicleCrew _vehicle; + _vehicle addAction ["Reset Crew", UAV_FIX_CREW, [], 0.01, false, true, "", "true", 0.1]; + }; - if (_vehicle isKindOf "B_T_UAV_03_dynamicLoadout_F") then {createVehicleCrew _vehicle}; + if (_vehicle isKindOf "B_T_UAV_03_dynamicLoadout_F") then { + createVehicleCrew _vehicle; + _vehicle addAction ["Reset Crew", UAV_FIX_CREW, [], 0.01, false, true, "", "true", 0.1]; + }; //Ensures any air vehicle does not have a weapon that is not researched (SanitizeAircraft) From a0708b32ec3d240a79f751dd0e6d96f07cf4b377 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sun, 18 Aug 2019 17:02:48 +0200 Subject: [PATCH 115/267] Added cleanup for kicked groups #284 --- Addons/Strat_mode/Functions/SM_CleanUp.sqf | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Addons/Strat_mode/Functions/SM_CleanUp.sqf b/Addons/Strat_mode/Functions/SM_CleanUp.sqf index 4d138b5fd..076d7ac61 100644 --- a/Addons/Strat_mode/Functions/SM_CleanUp.sqf +++ b/Addons/Strat_mode/Functions/SM_CleanUp.sqf @@ -51,6 +51,37 @@ SM_CLEAN_GCONT= { }; }; +//Clean all groups that are no longer tracked by the mission (e.g. BIS_fnc_dynamicGroups) +SM_CLEAN_DG= { + private ["_side", "_logic", "_groups", "_check"]; + _check = { + params ["_side"]; + _groups = allGroups select {side _x isEqualTo _side}; + { + _logic=(_side) call CTI_CO_FNC_GetSideLogic; + //Exclude all town defenses, player groups, or workers + if( !(_x in (["GetAllGroups",[]] call BIS_fnc_dynamicGroups)) && + !(_x getVariable ["cti_server_group", false]) && + !(_x == _logic getVariable ["cti_defensive_team", grpNull]) && + !(groupId _x == "Default Team" && (units _x) findIf {isDamageAllowed _x} == 0) && + !(_x in (_logic getVariable ["cti_workers", []])) + ) then { + //Empty the group and delete it + { deleteVehicle _x }forEach units _x; + deleteGroup _x; + } + } forEach _groups; + }; + + while {! CTI_GameOver} do { + { + [_x] call _check; + } forEach [east,west]; + sleep 10; + }; +}; + + SM_CLEAN_STRUCTURES={ private ["_side","_side_logic","_new_structures"]; _side=_this; @@ -66,6 +97,7 @@ SM_CLEAN_STRUCTURES={ 0 spawn SM_CLEAN_REVIVES; if (missionNamespace getVariable "CTI_AI_TEAMS_ENABLED" ==0)then { 0 spawn SM_CLEAN_GROUPS}; 0 spawn SM_CLEAN_GCONT; +0 spawn SM_CLEAN_DG; { _x spawn SM_CLEAN_STRUCTURES; } forEach [east,west]; \ No newline at end of file From 9b2f72d63861b548c4daccd5440adf8ecb182eef Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sun, 18 Aug 2019 17:18:41 +0200 Subject: [PATCH 116/267] excluded UAVs as well --- Addons/Strat_mode/Functions/SM_CleanUp.sqf | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_CleanUp.sqf b/Addons/Strat_mode/Functions/SM_CleanUp.sqf index 076d7ac61..7da34a5fd 100644 --- a/Addons/Strat_mode/Functions/SM_CleanUp.sqf +++ b/Addons/Strat_mode/Functions/SM_CleanUp.sqf @@ -51,7 +51,7 @@ SM_CLEAN_GCONT= { }; }; -//Clean all groups that are no longer tracked by the mission (e.g. BIS_fnc_dynamicGroups) +//Clean all groups that are no longer tracked by the mission (e.g. kicked units from BIS_fnc_dynamicGroups) SM_CLEAN_DG= { private ["_side", "_logic", "_groups", "_check"]; _check = { @@ -64,7 +64,8 @@ SM_CLEAN_DG= { !(_x getVariable ["cti_server_group", false]) && !(_x == _logic getVariable ["cti_defensive_team", grpNull]) && !(groupId _x == "Default Team" && (units _x) findIf {isDamageAllowed _x} == 0) && - !(_x in (_logic getVariable ["cti_workers", []])) + !(_x in (_logic getVariable ["cti_workers", []])) && + !((units _x) findIf {unitIsUAV (vehicle _x)} >= 0) ) then { //Empty the group and delete it { deleteVehicle _x }forEach units _x; From ea95d7a19ecd42c648bd2fc0ffd4209324979eb6 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 18 Aug 2019 17:45:00 +0200 Subject: [PATCH 117/267] new UGV02 range limit --- Addons/Strat_mode/Functions/UAV_Range.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Functions/UAV_Range.sqf b/Addons/Strat_mode/Functions/UAV_Range.sqf index f71e3a2ec..948280705 100644 --- a/Addons/Strat_mode/Functions/UAV_Range.sqf +++ b/Addons/Strat_mode/Functions/UAV_Range.sqf @@ -1,5 +1,5 @@ -if !((getConnectedUAV player) isKindOf "O_UAV_01_F" || (getConnectedUAV player) isKindOf "B_UAV_01_F" || (getConnectedUAV player) isKindOf "O_UAV_02_dynamicLoadout_F" || (getConnectedUAV player) isKindOf "O_UAV_02_CAS_F" || (getConnectedUAV player) isKindOf "O_UAV_02_dynamicLoadout_F" || (getConnectedUAV player) isKindOf "B_UAV_02_F" || (getConnectedUAV player) isKindOf "B_UAV_02_dynamicLoadout_F" || (getConnectedUAV player) isKindOf "B_UAV_02_dynamicLoadout_F" || (getConnectedUAV player) isKindOf "B_UAV_06_medical_F" || (getConnectedUAV player) isKindOf "B_UAV_06_F" || (getConnectedUAV player) isKindOf "O_UAV_06_medical_F" || (getConnectedUAV player) isKindOf "O_UAV_06_F") exitWith {}; -if ((getConnectedUAV player) isKindOf "O_UAV_01_F" || (getConnectedUAV player) isKindOf "B_UAV_01_F" || (getConnectedUAV player) isKindOf "B_UAV_06_medical_F" || (getConnectedUAV player) isKindOf "B_UAV_06_F" || (getConnectedUAV player) isKindOf "O_UAV_06_medical_F" || (getConnectedUAV player) isKindOf "O_UAV_06_F") exitWith { +if !((getConnectedUAV player) isKindOf "UAV_01_base_F" || (getConnectedUAV player) isKindOf "O_UAV_02_dynamicLoadout_F" || (getConnectedUAV player) isKindOf "O_UAV_02_CAS_F" || (getConnectedUAV player) isKindOf "O_UAV_02_dynamicLoadout_F" || (getConnectedUAV player) isKindOf "B_UAV_02_F" || (getConnectedUAV player) isKindOf "B_UAV_02_dynamicLoadout_F" || (getConnectedUAV player) isKindOf "B_UAV_02_dynamicLoadout_F" || (getConnectedUAV player) isKindOf "UAV_06_base_F" || (getConnectedUAV player) isKindOf "UGV_02_Base_F") exitWith {}; +if ((getConnectedUAV player) isKindOf "UAV_01_base_F" || (getConnectedUAV player) isKindOf "UAV_06_base_F" || (getConnectedUAV player) isKindOf "UGV_02_Base_F") exitWith { if (([player,(getConnectedUAV player)] call BIS_fnc_distance2D) > (missionNamespace getVariable "CTI_GAMEPLAY_DARTER")) exitWith { player connectTerminalToUAV objNull; hintSilent parseText format [localize "STR_UAV_Range",(missionNamespace getVariable "CTI_GAMEPLAY_DARTER")]; From fc2744691904670377c8a4474bac611f7b6d3187 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sun, 18 Aug 2019 17:48:25 +0200 Subject: [PATCH 118/267] #281 Civilians / unconscious players should be ignored now --- Client/Functions/Client_OnPurchaseOrderReceived.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/Functions/Client_OnPurchaseOrderReceived.sqf b/Client/Functions/Client_OnPurchaseOrderReceived.sqf index dba85a8d9..a3dc410fa 100644 --- a/Client/Functions/Client_OnPurchaseOrderReceived.sqf +++ b/Client/Functions/Client_OnPurchaseOrderReceived.sqf @@ -104,7 +104,7 @@ while { time <= _req_time_out && alive _factory } do { sleep .25 }; if !(alive _factory) exitWith { diag_log "the factory is dead" }; -if (_factory in CTI_TOWNS && ( ! ((_factory getvariable ["cti_town_sideID",-1]) == CTI_P_SideID) || (_factory getvariable ["cti_town_capture",-1]) != CTI_TOWNS_CAPTURE_VALUE_CEIL || ({!(side _x == CTI_P_SideJoined)} count (_factory nearEntities ["CAManBase", CTI_TOWNS_CAPTURE_RANGE])) >0 ) ) exitWith { ["SERVER", "Answer_Purchase", [_req_seed, _req_classname, _req_buyer, _factory]] call CTI_CO_FNC_NetSend; hint parseText format ["Information

%2Your %1 order has been Denied, Flag area is not clear.", _var_classname select CTI_UNIT_LABEL, _picture];}; +if (_factory in CTI_TOWNS && ( ! ((_factory getvariable ["cti_town_sideID",-1]) == CTI_P_SideID) || (_factory getvariable ["cti_town_capture",-1]) != CTI_TOWNS_CAPTURE_VALUE_CEIL || ({!(side _x == CTI_P_SideJoined || side _x == civilian)} count (_factory nearEntities ["CAManBase", CTI_TOWNS_CAPTURE_RANGE])) >0 ) ) exitWith { ["SERVER", "Answer_Purchase", [_req_seed, _req_classname, _req_buyer, _factory]] call CTI_CO_FNC_NetSend; hint parseText format ["Information

%2Your %1 order has been Denied, Flag area is not clear.", _var_classname select CTI_UNIT_LABEL, _picture];}; //--- Check if the group can handle the current unit without breaking the group size limit From 1a3325367ca7cb23d2822020b653a507abcc8366 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sun, 18 Aug 2019 18:13:18 +0200 Subject: [PATCH 119/267] Titan AT price tweak --- Common/Config/Gear/Gear_East.sqf | 4 ++-- Common/Config/Gear/Gear_West.sqf | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Common/Config/Gear/Gear_East.sqf b/Common/Config/Gear/Gear_East.sqf index 82383ae1f..f1ad47a02 100644 --- a/Common/Config/Gear/Gear_East.sqf +++ b/Common/Config/Gear/Gear_East.sqf @@ -308,7 +308,7 @@ _p = _p + [50]; _i = _i + ["Vorona_HEAT"]; _u = _u + [3]; -_p = _p + [300]; +_p = _p + [350]; _i = _i + ["Vorona_HE"]; _u = _u + [3]; @@ -324,7 +324,7 @@ _p = _p + [100]; _i = _i + ["Titan_AT"]; _u = _u + [3]; -_p = _p + [250]; +_p = _p + [550]; //Grenades _i = _i + ["HandGrenade"]; diff --git a/Common/Config/Gear/Gear_West.sqf b/Common/Config/Gear/Gear_West.sqf index 04f8b47cc..6dff430ab 100644 --- a/Common/Config/Gear/Gear_West.sqf +++ b/Common/Config/Gear/Gear_West.sqf @@ -352,7 +352,7 @@ _p = _p + [100]; _i = _i + ["Titan_AT"]; _u = _u + [3]; -_p = _p + [250]; +_p = _p + [550]; //Grenades _i = _i + ["HandGrenade"]; From af4e054d3db4c03a1dbb51dd81d78a6704d47177 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sun, 18 Aug 2019 18:16:51 +0200 Subject: [PATCH 120/267] Adjusted AT Soldier prices --- Common/Config/Units/Units_East.sqf | 4 ++-- Common/Config/Units/Units_West.sqf | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Common/Config/Units/Units_East.sqf b/Common/Config/Units/Units_East.sqf index d58107fb6..f8d873de8 100644 --- a/Common/Config/Units/Units_East.sqf +++ b/Common/Config/Units/Units_East.sqf @@ -428,7 +428,7 @@ _s = _s + [""]; _c = _c + ['O_Soldier_AT_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [550]; +_o = _o + [1250]; _t = _t + [5]; _u = _u + [3]; _f = _f + [CTI_FACTORY_BARRACKS]; @@ -437,7 +437,7 @@ _s = _s + [""]; _c = _c + ['O_soldierU_AT_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [550]; +_o = _o + [1250]; _t = _t + [5]; _u = _u + [3]; _f = _f + [CTI_FACTORY_BARRACKS]; diff --git a/Common/Config/Units/Units_West.sqf b/Common/Config/Units/Units_West.sqf index 647345bb7..a12bccf7e 100644 --- a/Common/Config/Units/Units_West.sqf +++ b/Common/Config/Units/Units_West.sqf @@ -303,7 +303,7 @@ _s = _s + [""]; _c = _c + ['B_soldier_AT_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [550]; +_o = _o + [1250]; _t = _t + [5]; _u = _u + [3]; _f = _f + [CTI_FACTORY_BARRACKS]; From 08fab40a58abba84c2f25ab2deb4370797b07daa Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 19 Aug 2019 00:11:01 +0200 Subject: [PATCH 121/267] Added Magzine Wells --- Client/Functions/UI/Functions_UI_GearMenu.sqf | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/Client/Functions/UI/Functions_UI_GearMenu.sqf b/Client/Functions/UI/Functions_UI_GearMenu.sqf index b9cc78517..4ea43e24d 100644 --- a/Client/Functions/UI/Functions_UI_GearMenu.sqf +++ b/Client/Functions/UI/Functions_UI_GearMenu.sqf @@ -12,6 +12,26 @@ Still no way to set the current magazines... */ +CTI_GET_MAGAZINES = { + private ["_magazines", "_well"]; + params ["_weapon"]; + + _magazines = []; + { + if (_x == "this") then { + _magazines = _magazines + getArray(configFile >> 'CfgWeapons' >> _weapon >> 'magazines'); + } else { + _magazines = _magazines + getArray(configfile >> 'CfgWeapons' >> _weapon >> _x >> 'magazines'); + }; + _well = getArray(configfile >> "CfgWeapons" >> _weapon >> "magazineWell"); + if(count _well > 0) then { + _magazines = _magazines + getArray(configfile >> "CfgMagazineWells" >> _well select 0 >> "BI_Magazines"); + _magazines = _magazines + getArray(configfile >> "CfgMagazineWells" >> _well select 0 >> "BI_Enoch_Magazines"); + }; + } forEach (getArray(configFile >> 'CfgWeapons' >> _weapon >> 'muzzles')); + _magazines; +}; + //--- Display the gear on the Gear UI CTI_UI_Gear_DisplayInventory = { private ["_config_base", "_gear", "_load", "_startidc", "_startidc_current_mag", "_use", "_use_id"]; @@ -605,8 +625,8 @@ CTI_UI_Gear_CheckMagazines = { _gear = uiNamespace getVariable "cti_dialog_ui_gear_target_gear"; - _magazines_old = (getArray(configFile >> 'CfgWeapons' >> _weapon_old >> 'magazines')) call CTI_CO_FNC_ArrayToLower; - _magazines = (getArray(configFile >> 'CfgWeapons' >> _weapon >> 'magazines')) call CTI_CO_FNC_ArrayToLower; + _magazines_old = ([_weapon_old] call CTI_GET_MAGAZINES) call CTI_CO_FNC_ArrayToLower; + _magazines = ([_weapon] call CTI_GET_MAGAZINES) call CTI_CO_FNC_ArrayToLower; _replace = []; { @@ -1004,7 +1024,7 @@ CTI_UI_Gear_OnShoppingItemDrag = { _gear_sub = (_gear select 0) select _i; if (_gear_sub select 0 != "") then { //--- There is a weapon - _magazines = (getArray(configFile >> 'CfgWeapons' >> (_gear_sub select 0) >> 'magazines')) call CTI_CO_FNC_ArrayToLower; + _magazines = ([_gear_sub select 0] call CTI_GET_MAGAZINES) call CTI_CO_FNC_ArrayToLower; if (_item in _magazines) then { _idcs = _idcs + [77901+_i] }; }; @@ -1226,7 +1246,7 @@ CTI_UI_Gear_ChangeCurrentMagazine = { }; CTI_UI_Gear_UpdateLinkedItems = { - private ["_config_type", "_get", "_item", "_magazines"]; + private ["_config_type", "_get", "_item", "_magazines", "_well"]; _item = _this; _config_type = (_item) call CTI_UI_Gear_GetItemBaseConfig; @@ -1234,16 +1254,7 @@ CTI_UI_Gear_UpdateLinkedItems = { if ((lbSize 70601) > 0) then {lbClear 70601}; if (_config_type == "CfgWeapons") then { - // _magazines = (getArray(configFile >> 'CfgWeapons' >> _item >> 'magazines')) call CTI_CO_FNC_ArrayToLower; - _magazines = []; - { - if (_x == "this") then { - _magazines = _magazines + getArray(configFile >> 'CfgWeapons' >> _item >> 'magazines'); - } else { - _magazines = _magazines + getArray(configfile >> 'CfgWeapons' >> _item >> _x >> 'magazines') - }; - } forEach (getArray(configFile >> 'CfgWeapons' >> _item >> 'muzzles')); - + _magazines = [_item] call CTI_GET_MAGAZINES; { _get = missionNamespace getVariable _x; From a90188eb995206c6edea842ddfb902c47dd0d177 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 19 Aug 2019 02:00:28 +0200 Subject: [PATCH 122/267] Arma 3 Epoch compability fix for gear attachments of new weapons --- Client/Functions/UI/Functions_UI_GearMenu.sqf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Client/Functions/UI/Functions_UI_GearMenu.sqf b/Client/Functions/UI/Functions_UI_GearMenu.sqf index 4ea43e24d..8d8753b72 100644 --- a/Client/Functions/UI/Functions_UI_GearMenu.sqf +++ b/Client/Functions/UI/Functions_UI_GearMenu.sqf @@ -1069,7 +1069,7 @@ CTI_UI_Gear_OnShoppingItemDrag = { //--- Where does it fit? { if ((_x select 0) != "") then { - if (_item in (getArray(configFile >> _config_type >> (_x select 0) >> 'WeaponSlotsInfo' >> 'MuzzleSlot' >> 'compatibleItems') call CTI_CO_FNC_ArrayToLower)) then {_idcs = _idcs + [_acc_idcs select _forEachIndex]}; + if((toLower _item) in (((_x select 0) call bis_fnc_compatibleItems) call CTI_CO_FNC_ArrayToLower)) then {_idcs = _idcs + [_acc_idcs select _forEachIndex]}; }; } forEach (_gear select 0); }; @@ -1078,7 +1078,7 @@ CTI_UI_Gear_OnShoppingItemDrag = { //--- Where does it fit? { if ((_x select 0) != "") then { - if (_item in (getArray(configFile >> _config_type >> (_x select 0) >> 'WeaponSlotsInfo' >> 'CowsSlot' >> 'compatibleItems') call CTI_CO_FNC_ArrayToLower)) then {_idcs = _idcs + [_acc_idcs select _forEachIndex]}; + if((toLower _item) in (((_x select 0) call bis_fnc_compatibleItems) call CTI_CO_FNC_ArrayToLower)) then {_idcs = _idcs + [_acc_idcs select _forEachIndex]}; }; } forEach (_gear select 0); }; @@ -1087,7 +1087,7 @@ CTI_UI_Gear_OnShoppingItemDrag = { //--- Where does it fit? { if ((_x select 0) != "") then { - if (_item in (getArray(configFile >> _config_type >> (_x select 0) >> 'WeaponSlotsInfo' >> 'PointerSlot' >> 'compatibleItems') call CTI_CO_FNC_ArrayToLower)) then {_idcs = _idcs + [_acc_idcs select _forEachIndex]}; + if((toLower _item) in (((_x select 0) call bis_fnc_compatibleItems) call CTI_CO_FNC_ArrayToLower)) then {_idcs = _idcs + [_acc_idcs select _forEachIndex]}; }; } forEach (_gear select 0); }; @@ -1096,7 +1096,7 @@ CTI_UI_Gear_OnShoppingItemDrag = { //--- Where does it fit? { if ((_x select 0) != "") then { - if (_item in (getArray(configFile >> _config_type >> (_x select 0) >> 'WeaponSlotsInfo' >> 'UnderBarrelSlot' >> 'compatibleItems') call CTI_CO_FNC_ArrayToLower)) then {_idcs = _idcs + [_acc_idcs select _forEachIndex]}; + if((toLower _item) in (((_x select 0) call bis_fnc_compatibleItems) call CTI_CO_FNC_ArrayToLower)) then {_idcs = _idcs + [_acc_idcs select _forEachIndex]}; }; } forEach (_gear select 0); }; From 3fffa0b5618c3ea3b1e3122e51739b1dbe785de5 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 19 Aug 2019 10:53:41 +0200 Subject: [PATCH 123/267] filtering duplicate magazines --- Client/Functions/UI/Functions_UI_GearMenu.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/Client/Functions/UI/Functions_UI_GearMenu.sqf b/Client/Functions/UI/Functions_UI_GearMenu.sqf index 8d8753b72..a9e92e828 100644 --- a/Client/Functions/UI/Functions_UI_GearMenu.sqf +++ b/Client/Functions/UI/Functions_UI_GearMenu.sqf @@ -29,6 +29,7 @@ CTI_GET_MAGAZINES = { _magazines = _magazines + getArray(configfile >> "CfgMagazineWells" >> _well select 0 >> "BI_Enoch_Magazines"); }; } forEach (getArray(configFile >> 'CfgWeapons' >> _weapon >> 'muzzles')); + _magazines = _magazines arrayIntersect _magazines; _magazines; }; From 4f680107e2041eb5c571f27f85b91a11b86bda89 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 19 Aug 2019 11:10:06 +0200 Subject: [PATCH 124/267] ! forcelock ugv_02 --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index f35e01eeb..acff2eda2 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -201,7 +201,7 @@ switch (_action) do { case 14: { // CTI_Icon_fl //ok _hqs=[]; {_hqs set [count _hqs, _x call CTI_CO_FNC_GetSideHQ];true} count [east,west]; - if (vehicle player == player && (_target iskindof "Car" || _target iskindof "Ship" || _target iskindof "Wheeled_APC_F" || _target iskindof "Truck_F") && alive _target && !( getplayeruid player in (_target getVariable ["v_keys",[]])) && !(_target getVariable ["cti_occupant",civilian] == CTI_P_SideJoined)&& !(_target in _hqs || _target isKindOf "UAV_01_base_F" || _target isKindOf "UAV_06_base_F")) then { + if (vehicle player == player && (_target iskindof "Car" || _target iskindof "Ship" || _target iskindof "Wheeled_APC_F" || _target iskindof "Truck_F") && alive _target && !( getplayeruid player in (_target getVariable ["v_keys",[]])) && !(_target getVariable ["cti_occupant",civilian] == CTI_P_SideJoined)&& !(_target in _hqs || _target isKindOf "UAV_01_base_F" || _target isKindOf "UAV_06_base_F" || _target isKindOf "UGV_02_Base_F")) then { if ((({_x == "Toolkit"} count (backpackItems player)) +({_x == "Toolkit"} count (vestItems player))) >0) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTooltip localize "STR_Icon_FL"; From 67c93378afb124bde379c5f17bbc972dd463512e Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 19 Aug 2019 11:19:09 +0200 Subject: [PATCH 125/267] fixed undefined error for STATIC_TRY --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index f35e01eeb..02106a6b0 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -268,7 +268,7 @@ switch (_action) do { }; }; case 19: { // CTI_Icon_load //ok - if (vehicle player != player && driver vehicle player ==player && (_target iskindof "I_G_Offroad_01_F" || _target iskindOf "B_G_Van_02_vehicle_F" || _target iskindOf "O_G_Van_02_vehicle_F") && speed _target <1 && speed _target >-1 && alive _target && ! STATIC_TRY) then { + if (vehicle player != player && driver vehicle player ==player && (_target iskindof "I_G_Offroad_01_F" || _target iskindOf "B_G_Van_02_vehicle_F" || _target iskindOf "O_G_Van_02_vehicle_F") && speed _target <1 && speed _target >-1 && alive _target && !(missionNameSpace getVariable ["STATIC_TRY",false])) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+_h_offset*_base_h,_base_w,_base_h]; _offset=_offset+1; From 8df5d7ac08d81c8c47eb136422098f9a35244042 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 19 Aug 2019 11:44:30 +0200 Subject: [PATCH 126/267] #279 added missing Nil check for JIP clients --- Client/Init/Init_PublicVariables.sqf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Client/Init/Init_PublicVariables.sqf b/Client/Init/Init_PublicVariables.sqf index 420c14b7d..eb5dabb8a 100644 --- a/Client/Init/Init_PublicVariables.sqf +++ b/Client/Init/Init_PublicVariables.sqf @@ -132,7 +132,11 @@ with missionNamespace do { _marker setMarkerSizeLocal [0.75, 0.75]; //_type = _structure getVariable ["cti_structure_type", ""]; _type = (missionNamespace getVariable format ["CTI_%1_%2", CTI_P_SideJoined, _structure getVariable ["cti_structure_type",""]]) select 0 select 2; - _marker setMarkerTextLocal _type; + if(isNil "_type") then { + _marker setMarkerTextLocal ""; + } else { + _marker setMarkerTextLocal _type; + }; [_structure,_marker] spawn { private ["_structure","_marker"]; _structure = _this select 0; From 7f9fa02b0dda4b35600b4b277a5eeeabb0b3a6cf Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 19 Aug 2019 12:09:56 +0200 Subject: [PATCH 127/267] #202 Fixed deataching problem when more than 1 object was attached to the vehicle --- Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf b/Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf index f1a5d14e0..71e42789b 100644 --- a/Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf +++ b/Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf @@ -10,7 +10,7 @@ if (!(_target iskindof "Helicopter") || (isNull (getSlingLoad _target) && count _drop=objNull; _attached=false; -if (count (attachedObjects _target) ==1) then {_drop=(attachedObjects _target) select 0;_attached=true;}; +if (count (attachedObjects _target) >=1) then {_drop=(attachedObjects _target) select 0;_attached=true;}; if !(isNull (getSlingLoad _target)) then {_drop=getSlingLoad _target}; if (_attached) then { From 868bff4928fd80b707830cb6a4315b7baf202232 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 19 Aug 2019 12:38:02 +0200 Subject: [PATCH 128/267] decreased chances of heli exploding while detataching object --- Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf | 32 ++++++++++++++++------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf b/Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf index 71e42789b..300c6aa78 100644 --- a/Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf +++ b/Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf @@ -13,12 +13,26 @@ _attached=false; if (count (attachedObjects _target) >=1) then {_drop=(attachedObjects _target) select 0;_attached=true;}; if !(isNull (getSlingLoad _target)) then {_drop=getSlingLoad _target}; -if (_attached) then { - detach _drop;_drop enableRopeAttach true; - _target enableRopeAttach true; - _target setmass (_target getvariable "initial_mass"); - _target setcenterofmass (_target getvariable "initial_COM"); -} else {{ropeDestroy _x;true}count (ropes _target);}; -playSound3D ["A3\Sounds_F\vehicles\air\noises\SL_rope_break_ext.wss",_target]; -[_drop,(side player),para_alt,min_alt] spawn SA_DROP; -true \ No newline at end of file +if(!(isNull _drop)) then { + if (_attached) then { + //temporarily disable object collision + _drop disableCollisionWith _target; + detach _drop;_drop enableRopeAttach true; + _target enableRopeAttach true; + _target setmass (_target getvariable "initial_mass"); + _target setcenterofmass (_target getvariable "initial_COM"); + + [_target , _drop] spawn { + params ["_target", "_drop"]; + sleep 2; + _drop enableCollisionWith _target; + }; + } else {{ropeDestroy _x;true}count (ropes _target);}; + playSound3D ["A3\Sounds_F\vehicles\air\noises\SL_rope_break_ext.wss",_target]; + [_drop,(side player),para_alt,min_alt] spawn SA_DROP; +} else { +//remove nullobj +detach _drop; +if (true) exitWith { false }; +}; +true; \ No newline at end of file From 1ec631620102991f8c091ed5d4094088f8b6f6a0 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 19 Aug 2019 12:42:20 +0200 Subject: [PATCH 129/267] Updated version number --- Rsc/Game.hpp | 4 ++-- mission.sqm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Rsc/Game.hpp b/Rsc/Game.hpp index 9529c9381..446a8b7f8 100644 --- a/Rsc/Game.hpp +++ b/Rsc/Game.hpp @@ -4,11 +4,11 @@ respawnDelay = 10; respawnDialog = false; //--- Require briefing.html to show up. -onLoadMission = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.0"; +onLoadMission = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.1"; onLoadMissionTime = false; onLoadName = "BECTI - Zerty/HTom/Yoshi_E"; -briefingName = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.0"; +briefingName = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.1"; //--- ArmA 3 Specifics dev = "Benny"; diff --git a/mission.sqm b/mission.sqm index 2ed5d17bc..a52c3cf9e 100644 --- a/mission.sqm +++ b/mission.sqm @@ -105,7 +105,7 @@ class Mission { class Intel { - briefingName="BECTI BE 0.97 - Zerty 1.3.5.0"; + briefingName="BECTI BE 0.97 - Zerty 1.3.5.1"; overviewText="By Benny - Adapted from OFP era MFCTI (Mike Melvin)"; resistanceWest=0; timeOfChanges=24720; From d87054658f65a4c8d7dd712bc2fbd4d68b857d9c Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 19 Aug 2019 13:39:18 +0200 Subject: [PATCH 130/267] covered pod --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 43640a85c..aa7d248c6 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -345,7 +345,7 @@ switch (_action) do { }; case 26: { // CTI_Icon_attach if (vehicle player != player && driver vehicle player ==player && (typeof _target) == "O_Heli_Transport_04_F" ) then { - if (isNull (getSlingLoad _target) || !((typeof (getSlingLoad _target)) in ["Land_Pod_Heli_Transport_04_fuel_F","Land_Pod_Heli_Transport_04_ammo_F","Land_Pod_Heli_Transport_04_bench_F","Land_Pod_Heli_Transport_04_box_F","Land_Pod_Heli_Transport_04_repair_F","Land_Pod_Heli_Transport_04_medevac_F"])) then {((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0.3,0.3,0.3,1];} else { + if (isNull (getSlingLoad _target) || !((typeof (getSlingLoad _target)) in ["Land_Pod_Heli_Transport_04_fuel_F","Land_Pod_Heli_Transport_04_ammo_F","Land_Pod_Heli_Transport_04_bench_F","Land_Pod_Heli_Transport_04_box_F","O_Heli_Transport_04_covered_F","Land_Pod_Heli_Transport_04_repair_F","Land_Pod_Heli_Transport_04_medevac_F"])) then {((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0.3,0.3,0.3,1];} else { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; }; ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+_h_offset*_base_h,_base_w,_base_h]; From 15d4d5f00dc423ef3d0be19a4589dfad2c906f80 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 19 Aug 2019 13:41:39 +0200 Subject: [PATCH 131/267] ops --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index aa7d248c6..5c6cb8198 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -345,7 +345,7 @@ switch (_action) do { }; case 26: { // CTI_Icon_attach if (vehicle player != player && driver vehicle player ==player && (typeof _target) == "O_Heli_Transport_04_F" ) then { - if (isNull (getSlingLoad _target) || !((typeof (getSlingLoad _target)) in ["Land_Pod_Heli_Transport_04_fuel_F","Land_Pod_Heli_Transport_04_ammo_F","Land_Pod_Heli_Transport_04_bench_F","Land_Pod_Heli_Transport_04_box_F","O_Heli_Transport_04_covered_F","Land_Pod_Heli_Transport_04_repair_F","Land_Pod_Heli_Transport_04_medevac_F"])) then {((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0.3,0.3,0.3,1];} else { + if (isNull (getSlingLoad _target) || !((typeof (getSlingLoad _target)) in ["Land_Pod_Heli_Transport_04_fuel_F","Land_Pod_Heli_Transport_04_ammo_F","Land_Pod_Heli_Transport_04_bench_F","Land_Pod_Heli_Transport_04_box_F","Land_Pod_Heli_Transport_04_covered_F","Land_Pod_Heli_Transport_04_repair_F","Land_Pod_Heli_Transport_04_medevac_F"])) then {((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0.3,0.3,0.3,1];} else { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; }; ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+_h_offset*_base_h,_base_w,_base_h]; @@ -870,4 +870,4 @@ switch (_action) do { [group player, CTI_P_SideJoined, - 1500] call CTI_CO_FNC_ChangeFunds; }; }; -}; \ No newline at end of file +}; From 93a3c61164713cd9b89d67ccf30ff29266de6edb Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 19 Aug 2019 13:44:39 +0200 Subject: [PATCH 132/267] for repair --- .../Strat_mode/Functions/SM_RepairVehiculeRemote.sqf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_RepairVehiculeRemote.sqf b/Addons/Strat_mode/Functions/SM_RepairVehiculeRemote.sqf index f80e667ff..73f927366 100644 --- a/Addons/Strat_mode/Functions/SM_RepairVehiculeRemote.sqf +++ b/Addons/Strat_mode/Functions/SM_RepairVehiculeRemote.sqf @@ -7,17 +7,17 @@ _currentcallerdamage = getdammage _caller; _avgdamage = (getAllHitPointsDamage _target select 2) call BIS_fnc_arithmeticMean; _hitpointname = getallhitpointsdamage _target select 0; _hps = {_x != 0} count (getAllHitPointsDamage _target select 2); - _repvalue = 0.003; -if (_avgdamage <= 0.10) then {_repvalue = 0.03;}; -if (_avgdamage <= 0.25 && _avgdamage > 0.10) then {_repvalue = 0.01;}; -if (_avgdamage <= 0.50 && _avgdamage > 0.25) then {_repvalue = 0.005;}; while {alive _caller && alive _target && _hps > 0 && (_caller distance2d _target) <5 && (_caller distance _target) <7 && (_caller distance _pos)<=1 && (vehicle _caller) ==_caller && _currentdamage > ((getdammage _target) - 0.01) && _currentcallerdamage > ((getdammage _caller) - 0.02)} do { sleep 1; _avgdamage = (getAllHitPointsDamage _target select 2) call BIS_fnc_arithmeticMean; - + switch (true) do { + case (_avgdamage <= 0.10): {_repvalue = 0.03;}; + case (_avgdamage <= 0.25 && _avgdamage > 0.10): {_repvalue = 0.01;}; + case (_avgdamage <= 0.50 && _avgdamage > 0.25): {_repvalue = 0.005;}; + }; _hitpointdamage = getallhitpointsdamage _target select 2; From 15da82ef4a792d3a2b3bcfd4ced283abb38bffd1 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 19 Aug 2019 21:34:33 +0200 Subject: [PATCH 133/267] add +2 car for motorized vehicles --- Common/Config/Towns/Towns_East.sqf | 5 +++-- Common/Config/Towns/Towns_West.sqf | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Common/Config/Towns/Towns_East.sqf b/Common/Config/Towns/Towns_East.sqf index 3ccb27aa0..98916d18d 100644 --- a/Common/Config/Towns/Towns_East.sqf +++ b/Common/Config/Towns/Towns_East.sqf @@ -18,8 +18,9 @@ with missionNamespace do { EAST_SOLDIER_TEAMLEADER = ["O_soldierU_TL_F", 1]; //--- Vehicles - EAST_MOTORIZED_MG = ["O_MRAP_02_hmg_F", 2]; + EAST_MOTORIZED_MG = [["O_MRAP_02_hmg_F", 2], ["O_LSV_02_armed_F", 2]]; EAST_MOTORIZED_GL = ["O_MRAP_02_gmg_F", 2]; + EAST_MOTORIZED_AT = ["O_LSV_02_AT_F", 2]; //--- Infantry - Mixed // EAST_SOLDIERS_MG = [EAST_SOLDIER_MG, EAST_SOLDIER_AR]; @@ -37,7 +38,7 @@ with missionNamespace do { // EAST_VEHICLE_ARMORED_HEAVY = ["armoheavy1","armoheavy2"]; EAST_VEHICLE_ARMORED_LIGHT = [["O_MBT_02_cannon_F", 2], ["O_MBT_04_cannon_F", 2]]; // EAST_VEHICLE_MECHANIZED = ["mechanized1","mechanized2"]; - EAST_VEHICLE_MOTORIZED = [EAST_MOTORIZED_MG, EAST_MOTORIZED_GL, EAST_MOTORIZED_MG]; + EAST_VEHICLE_MOTORIZED = EAST_MOTORIZED_MG + [EAST_MOTORIZED_GL] + [EAST_MOTORIZED_AT]; //--- Vehicles - Mixed EAST_VEHICLES_AA_LIGHT = EAST_VEHICLE_AA; diff --git a/Common/Config/Towns/Towns_West.sqf b/Common/Config/Towns/Towns_West.sqf index 9c75423f7..383f6c676 100644 --- a/Common/Config/Towns/Towns_West.sqf +++ b/Common/Config/Towns/Towns_West.sqf @@ -16,10 +16,11 @@ with missionNamespace do { WEST_SOLDIER_SQUADLEADER = ["B_Soldier_TL_F", 1]; WEST_SOLDIER_SNIPER = ["B_Soldier_M_F", 1]; WEST_SOLDIER_TEAMLEADER = ["B_Soldier_TL_F", 1]; - + //--- Vehicles - WEST_MOTORIZED_MG = ["B_MRAP_01_hmg_F", 2]; + WEST_MOTORIZED_MG = [["B_MRAP_01_hmg_F", 2], ["B_LSV_01_armed_F", 2]]; WEST_MOTORIZED_GL = ["B_MRAP_01_gmg_F", 2]; + WEST_MOTORIZED_AT = ["B_LSV_01_AT_F", 2]; //--- Infantry - Mixed // WEST_SOLDIERS_MG = [WEST_SOLDIER_MG, WEST_SOLDIER_AR]; @@ -37,7 +38,7 @@ with missionNamespace do { // WEST_VEHICLE_ARMORED_HEAVY = ["armoheavy1","armoheavy2"]; WEST_VEHICLE_ARMORED_LIGHT = [["B_MBT_01_cannon_F", 2], ["B_MBT_01_TUSK_F", 2], ["B_AFV_Wheeled_01_cannon_F", 3], ["B_AFV_Wheeled_01_up_cannon_F", 3]]; // WEST_VEHICLE_MECHANIZED = ["mechanized1","mechanized2"]; - WEST_VEHICLE_MOTORIZED = [WEST_MOTORIZED_MG, WEST_MOTORIZED_GL, WEST_MOTORIZED_MG]; + WEST_VEHICLE_MOTORIZED = WEST_MOTORIZED_MG + [WEST_MOTORIZED_GL] + [WEST_MOTORIZED_AT]; //--- Vehicles - Mixed WEST_VEHICLES_AA_LIGHT = WEST_VEHICLE_AA; From 1b8675c0f45d12b959ad6c6f6f0e04a12d1aeacb Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 19 Aug 2019 22:53:22 +0200 Subject: [PATCH 134/267] Fixed error in SM_Cleanup --- Addons/Strat_mode/Functions/SM_CleanUp.sqf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_CleanUp.sqf b/Addons/Strat_mode/Functions/SM_CleanUp.sqf index 7da34a5fd..39c330b15 100644 --- a/Addons/Strat_mode/Functions/SM_CleanUp.sqf +++ b/Addons/Strat_mode/Functions/SM_CleanUp.sqf @@ -61,11 +61,11 @@ SM_CLEAN_DG= { _logic=(_side) call CTI_CO_FNC_GetSideLogic; //Exclude all town defenses, player groups, or workers if( !(_x in (["GetAllGroups",[]] call BIS_fnc_dynamicGroups)) && - !(_x getVariable ["cti_server_group", false]) && - !(_x == _logic getVariable ["cti_defensive_team", grpNull]) && - !(groupId _x == "Default Team" && (units _x) findIf {isDamageAllowed _x} == 0) && - !(_x in (_logic getVariable ["cti_workers", []])) && - !((units _x) findIf {unitIsUAV (vehicle _x)} >= 0) + ("" != _x getVariable ["cti_server_group", ""]) && + (_x != _logic getVariable ["cti_defensive_team", grpNull]) && + ((units _x) findIf {isDamageAllowed _x} == -1) && + ((units _x) findIf {_x in (_logic getVariable ["cti_workers", []])} == -1) && + ((units _x) findIf {unitIsUAV (vehicle _x)} == -1) ) then { //Empty the group and delete it { deleteVehicle _x }forEach units _x; From cb50791ce7d9189a12ff6328fd881844762b2d9a Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 19 Aug 2019 23:17:04 +0200 Subject: [PATCH 135/267] Optimized SM_Cleanup --- Addons/Strat_mode/Functions/SM_CleanUp.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_CleanUp.sqf b/Addons/Strat_mode/Functions/SM_CleanUp.sqf index 39c330b15..04e27a9dd 100644 --- a/Addons/Strat_mode/Functions/SM_CleanUp.sqf +++ b/Addons/Strat_mode/Functions/SM_CleanUp.sqf @@ -56,14 +56,14 @@ SM_CLEAN_DG= { private ["_side", "_logic", "_groups", "_check"]; _check = { params ["_side"]; + _logic=(_side) call CTI_CO_FNC_GetSideLogic; _groups = allGroups select {side _x isEqualTo _side}; { - _logic=(_side) call CTI_CO_FNC_GetSideLogic; //Exclude all town defenses, player groups, or workers if( !(_x in (["GetAllGroups",[]] call BIS_fnc_dynamicGroups)) && - ("" != _x getVariable ["cti_server_group", ""]) && + ("" == _x getVariable ["cti_server_group", ""]) && (_x != _logic getVariable ["cti_defensive_team", grpNull]) && - ((units _x) findIf {isDamageAllowed _x} == -1) && + ((units _x) findIf {isDamageAllowed _x} >= 0) && ((units _x) findIf {_x in (_logic getVariable ["cti_workers", []])} == -1) && ((units _x) findIf {unitIsUAV (vehicle _x)} == -1) ) then { From 5d560ccc3dfb48b0267d3528465ff18fb50ce37b Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Tue, 20 Aug 2019 00:06:11 +0200 Subject: [PATCH 136/267] FL fix for ugv --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 5c6cb8198..9d98f2a26 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -212,7 +212,7 @@ switch (_action) do { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+_h_offset*_base_h,_base_w,_base_h]; _offset=_offset+1; } else { - if (vehicle player == player && (_target iskindof "Tank" || _target iskindof "Air") && !(_target isKindOf "UAV_01_base_F" || _target isKindOf "UAV_06_base_F") && alive _target && !( getplayeruid player in (_target getVariable ["v_keys",[]])) && !(_target getVariable ["cti_occupant",civilian] == CTI_P_SideJoined)&& !(_target in _hqs)) then { + if (vehicle player == player && (_target iskindof "Tank" || _target iskindof "Air") && !(_target isKindOf "UAV_01_base_F" || _target isKindOf "UAV_06_base_F" || _target isKindOf "UGV_02_Base_F") && alive _target && !( getplayeruid player in (_target getVariable ["v_keys",[]])) && !(_target getVariable ["cti_occupant",civilian] == CTI_P_SideJoined)&& !(_target in _hqs)) then { _rt = 0; _reptruck = [_target, CTI_SPECIAL_REPAIRTRUCK, 50] call CTI_CO_FNC_GetNearestSpecialVehicles; if (count _reptruck > 0) then {_rt = 1;}; From 6f0d9c1d614169c8be1e7680e9c40dff18c7b2ec Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Tue, 20 Aug 2019 00:46:11 +0200 Subject: [PATCH 137/267] ugv -> uav_fuel --- Addons/Strat_mode/init.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 6d8a3c9e0..17e9bc6ac 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -241,7 +241,7 @@ if (CTI_IsClient) then { _marker setMarkerAlphaLocal 0.5; }; CTI_PVF_Client_UAVSetFuel={ - if (_this isKindOf "Helicopter_Base_F") then {_this spawn UAV_FUEL;}; + if (_this isKindOf "Helicopter_Base_F" || _this isKindOf "UGV_02_Base_F") then {_this spawn UAV_FUEL;}; }; }; From 39b3bdb49791a6234865231f055259a355984eb4 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Tue, 20 Aug 2019 15:15:10 +0200 Subject: [PATCH 138/267] ugv_02 continued - remove net icon - remove pack icon --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 9d98f2a26..d814e8c2f 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -129,7 +129,7 @@ switch (_action) do { }; case 11: { // CTI_Icon_Net // ok - if ( alive _target && (missionNamespace getVariable "CTI_EW_ANET" == 1) && ( _target iskindof "Car" || _target iskindof "Tank" || _target iskindof "Truck" || _target iskindof "Air"|| _target iskindof "Ship") && !(_target isKindOf "UAV_01_base_F" || _target isKindOf "UAV_06_base_F")) then { + if ( alive _target && (missionNamespace getVariable "CTI_EW_ANET" == 1) && ( _target iskindof "Car" || _target iskindof "Tank" || _target iskindof "Truck" || _target iskindof "Air"|| _target iskindof "Ship") && !(_target isKindOf "UAV_01_base_F" || _target isKindOf "UAV_06_base_F" || _target isKindOf "UGV_02_Base_F")) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+_h_offset*_base_h,_base_w,_base_h]; if (locked _target >0 ) Then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0.3,0.3,0.3,1]; @@ -330,7 +330,7 @@ switch (_action) do { case 25: { // CTI_Icon_pack _hqs=[]; //{_hqs set [count _hqs, _x call CTI_CO_FNC_GetSideHQ];true} count [east,west]; - if (vehicle player == player && (_target iskindof "Tank" || _target iskindof "Wheeled_APC_F" || _target iskindof "Truck_F" || (typeof _target) in ["Land_Pod_Heli_Transport_04_box_F","B_Slingload_01_Cargo_F"])&& alive _target && !(_target in _hqs)) then { + if (vehicle player == player && (_target iskindof "Tank" || _target iskindof "Wheeled_APC_F" || _target iskindof "Truck_F" || (typeof _target) in ["Land_Pod_Heli_Transport_04_box_F","B_Slingload_01_Cargo_F"])&& alive _target && !(_target in _hqs || _target isKindOf "UGV_02_Base_F")) then { if (({alive _x} count (crew _target) == 0) && abs (speed _target) <1 && locked _target <2 ) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; } else { From 78ab9d9c776bf768c9bf1b87ab15c4effdee4e9c Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Tue, 20 Aug 2019 16:00:33 +0200 Subject: [PATCH 139/267] fix for get in pilot icon unlock need --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index d814e8c2f..94df4103b 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -752,7 +752,9 @@ switch (_action) do { }; case "OnPilot": { closedialog 0; - if (isNull (driver _target)) then {player moveInDriver _target} else {0 spawn { hint "There is already a pilot";sleep 3;hintSilent "";}}; + if (locked _target < 2) then { + if (isNull (driver _target)) then {player moveInDriver _target} else {0 spawn {hint "There is already a pilot"; sleep 3; hintSilent "";};}; + }; }; case "OnHalo": { if !(vehicle player == player && !CTI_P_PreBuilding && CTI_Base_HaloInRange && [CTI_P_SideJoined, CTI_UPGRADE_HALO, 1] call CTI_CO_FNC_HasUpgrade && ( (missionNamespace getVariable 'CTI_SM_HALO')==1 && !(player getvariable ["REV_UNC",false])) && (time - CTI_HALO_LASTTIME >= CTI_HALO_COOLDOWN)) exitwith {false}; From ec33fd6d2f42a540777b54f1f6d567841af0015d Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Wed, 21 Aug 2019 22:01:15 +0200 Subject: [PATCH 140/267] for reward --- Common/Config/Units/Units_Resistance.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/Config/Units/Units_Resistance.sqf b/Common/Config/Units/Units_Resistance.sqf index 7cc648feb..069d229cb 100644 --- a/Common/Config/Units/Units_Resistance.sqf +++ b/Common/Config/Units/Units_Resistance.sqf @@ -50,7 +50,7 @@ _s = _s + [""]; _c = _c + ['I_soldier_AT_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [450]; +_o = _o + [1250]; _t = _t + [5]; _u = _u + [1]; _f = _f + [CTI_FACTORY_BARRACKS]; @@ -283,4 +283,4 @@ _f = _f + [4]; _s = _s + [""]; -[_side, _faction, _c, _p, _n, _o, _t, _u, _f, _s] call compile preprocessFileLineNumbers "Common\Config\Units\Set_Units.sqf"; \ No newline at end of file +[_side, _faction, _c, _p, _n, _o, _t, _u, _f, _s] call compile preprocessFileLineNumbers "Common\Config\Units\Set_Units.sqf"; From fd46f80ffc4960df77becbcf5a19070bfd5efced Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Wed, 21 Aug 2019 22:03:51 +0200 Subject: [PATCH 141/267] 0 eol --- Common/Config/Units/Units_Resistance.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/Config/Units/Units_Resistance.sqf b/Common/Config/Units/Units_Resistance.sqf index 069d229cb..898b6630c 100644 --- a/Common/Config/Units/Units_Resistance.sqf +++ b/Common/Config/Units/Units_Resistance.sqf @@ -283,4 +283,4 @@ _f = _f + [4]; _s = _s + [""]; -[_side, _faction, _c, _p, _n, _o, _t, _u, _f, _s] call compile preprocessFileLineNumbers "Common\Config\Units\Set_Units.sqf"; +[_side, _faction, _c, _p, _n, _o, _t, _u, _f, _s] call compile preprocessFileLineNumbers "Common\Config\Units\Set_Units.sqf"; \ No newline at end of file From 6ebcd41be37bc446af5b9a722325722b4a05f800 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Thu, 22 Aug 2019 22:53:51 +0200 Subject: [PATCH 142/267] hotfix for SM_CLEANUP --- Common/Functions/Common_ManVehicle.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/Functions/Common_ManVehicle.sqf b/Common/Functions/Common_ManVehicle.sqf index 199bac30d..1dbf4e84f 100644 --- a/Common/Functions/Common_ManVehicle.sqf +++ b/Common/Functions/Common_ManVehicle.sqf @@ -53,7 +53,7 @@ _position = getPos _vehicle; _position = [(_position select 0) + 5, (_position select 1) + 5, 0]; _net = if ((missionNamespace getVariable "CTI_MARKERS_INFANTRY") == 1 && _sideID in [CTI_WEST_ID, CTI_EAST_ID]) then { true } else { false }; - +_group setVariable ["cti_server_group", format ["%1", _side], true]; if (_vehicle emptyPositions "driver" > 0) then { _unit = [_crew, _group, _position, _sideID, _net] call CTI_CO_FNC_CreateUnit; _unit moveInDriver _vehicle; From 834084502c59268d86700b37385df70ce7a2f6bb Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sat, 24 Aug 2019 10:35:32 +0200 Subject: [PATCH 143/267] SM_CleanUP for AI teams --- Addons/Strat_mode/Functions/SM_CleanUp.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/Addons/Strat_mode/Functions/SM_CleanUp.sqf b/Addons/Strat_mode/Functions/SM_CleanUp.sqf index 04e27a9dd..ff6e98616 100644 --- a/Addons/Strat_mode/Functions/SM_CleanUp.sqf +++ b/Addons/Strat_mode/Functions/SM_CleanUp.sqf @@ -62,6 +62,7 @@ SM_CLEAN_DG= { //Exclude all town defenses, player groups, or workers if( !(_x in (["GetAllGroups",[]] call BIS_fnc_dynamicGroups)) && ("" == _x getVariable ["cti_server_group", ""]) && + ("" == _x getVariable ["cti_role_evo", ""]) && (_x != _logic getVariable ["cti_defensive_team", grpNull]) && ((units _x) findIf {isDamageAllowed _x} >= 0) && ((units _x) findIf {_x in (_logic getVariable ["cti_workers", []])} == -1) && From 4143d3e3aaaedf8f37e49ad7b8958807037c3d39 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sat, 24 Aug 2019 11:07:51 +0200 Subject: [PATCH 144/267] fix for AI groups --- Addons/Strat_mode/Functions/SM_CleanUp.sqf | 2 +- mission.sqm | 96 ++++++++++++++++++++-- 2 files changed, 91 insertions(+), 7 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_CleanUp.sqf b/Addons/Strat_mode/Functions/SM_CleanUp.sqf index ff6e98616..c996c9bde 100644 --- a/Addons/Strat_mode/Functions/SM_CleanUp.sqf +++ b/Addons/Strat_mode/Functions/SM_CleanUp.sqf @@ -64,7 +64,7 @@ SM_CLEAN_DG= { ("" == _x getVariable ["cti_server_group", ""]) && ("" == _x getVariable ["cti_role_evo", ""]) && (_x != _logic getVariable ["cti_defensive_team", grpNull]) && - ((units _x) findIf {isDamageAllowed _x} >= 0) && + //((units _x) findIf {!isDamageAllowed _x} >= 0) && ((units _x) findIf {_x in (_logic getVariable ["cti_workers", []])} == -1) && ((units _x) findIf {unitIsUAV (vehicle _x)} == -1) ) then { diff --git a/mission.sqm b/mission.sqm index a52c3cf9e..03efa3a67 100644 --- a/mission.sqm +++ b/mission.sqm @@ -1732,8 +1732,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14487.121,9.6155596,5888.3711}; - angles[]={0.30364406,0,5.9329162}; + position[]={14487.121,9.6157026,5888.3706}; + angles[]={0.30365241,0,5.9329152}; }; side="East"; flags=4; @@ -1741,11 +1741,53 @@ class Mission { skill=0.60000002; rank="COLONEL"; - init="this allowDamage false; (group this) setGroupID [""Default Team""];this disableAI ""MOVE"";this disableAI ""AUTOTARGET"";this disableAI ""TARGET"";"; + init="this allowDamage false; (group this) setGroupID [""Default Team""];this disableAI ""MOVE"";this disableAI ""AUTOTARGET"";this disableAI ""TARGET""; (group this) setVariable [""cti_server_group"", str (side (group this))];"; name="CTI_EAST_DEFAULT_GROUP"; }; id=115; type="O_Soldier_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male01PER"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.04; + }; + }; + }; + nAttributes=2; + }; }; class Item2 { @@ -2253,8 +2295,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2314.9258,12.648989,9283.7012}; - angles[]={0.057271164,0,0.1312411}; + position[]={2314.926,12.649018,9283.7012}; + angles[]={0.05726425,0,0.13124876}; }; side="West"; flags=6; @@ -2262,11 +2304,53 @@ class Mission { skill=0.60000002; rank="COLONEL"; - init="this allowDamage false;(group this) setGroupIDGlobal [""Default Team""];this disableAI ""MOVE"";this disableAI ""AUTOTARGET"";this disableAI ""TARGET"";"; + init="this allowDamage false;(group this) setGroupIDGlobal [""Default Team""];this disableAI ""MOVE"";this disableAI ""AUTOTARGET"";this disableAI ""TARGET""; (group this) setVariable [""cti_server_group"", str (side (group this))];"; name="CTI_WEST_DEFAULT_GROUP"; }; id=140; type="B_Soldier_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male06ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.02; + }; + }; + }; + nAttributes=2; + }; }; class Item1 { From c1f939b1b73bfa4862307c205adbc7fc59ea68c2 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Thu, 5 Sep 2019 12:43:11 +0200 Subject: [PATCH 145/267] Decreased SM_Cleanup_DG frequency #284 When you Crash an aircraft sometimes AI will "Take command". This group however is not tracked by the mission, and will be removed by SM_CLEAN_DG Longer times between the cleanup will reduce the chance for this to happen, however the issue still presists. --- Addons/Strat_mode/Functions/SM_CleanUp.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Functions/SM_CleanUp.sqf b/Addons/Strat_mode/Functions/SM_CleanUp.sqf index c996c9bde..97dc2722d 100644 --- a/Addons/Strat_mode/Functions/SM_CleanUp.sqf +++ b/Addons/Strat_mode/Functions/SM_CleanUp.sqf @@ -79,7 +79,7 @@ SM_CLEAN_DG= { { [_x] call _check; } forEach [east,west]; - sleep 10; + sleep 300; }; }; From 5878b86f4f94faf2ca4c5a6207018284ae2c15a3 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Thu, 5 Sep 2019 14:41:18 +0200 Subject: [PATCH 146/267] Moved reset crew to CTI action menu --- Addons/Strat_mode/Functions/UAV_Fix_Crew.sqf | 15 ++++++++------ Addons/Strat_mode/Functions/UAV_Fuel.sqf | 8 -------- .../Strat_mode/Tablet/Events_UI_Interact.sqf | 19 ++++++++++++++++-- Common/Functions/Common_CreateVehicle.sqf | 10 ++------- Rsc/Dialogs.hpp | 7 +++++++ Rsc/Pictures/icon_reset.paa | Bin 0 -> 14632 bytes stringtable.xml | 4 ++++ 7 files changed, 39 insertions(+), 24 deletions(-) create mode 100644 Rsc/Pictures/icon_reset.paa diff --git a/Addons/Strat_mode/Functions/UAV_Fix_Crew.sqf b/Addons/Strat_mode/Functions/UAV_Fix_Crew.sqf index c7f16eb07..01cd588b1 100644 --- a/Addons/Strat_mode/Functions/UAV_Fix_Crew.sqf +++ b/Addons/Strat_mode/Functions/UAV_Fix_Crew.sqf @@ -6,21 +6,24 @@ or behaving weirdly. Will disconnect the player in the process Author: Yoshi_E Creation Date: 16-08-2019 - Revision Date: 16-08-2019 + Revision Date: 05-09-2019 # EXAMPLE # - _veh addAction ["Reset Crew", UAV_FIX_CREW]; + [_drone, player] spawn UAV_FIX_CREW; */ -params ["_target", "_caller", "_actionId", "_arguments"]; +params ["_target", "_caller"]; +//(group _target) setGroupOwner (owner _caller); //make local player connectTerminalToUAV objNull; -_target removeAction _actionId; sleep 1; {_target deleteVehicleCrew _x} forEach crew _target; createVehicleCrew _target; +//This might help with AI target behaviour. +sleep 1; +{ _x disableAI "TARGET"} forEach crew _target; +sleep 1; +{ _x enableAI "TARGET"} forEach crew _target; hint "Crew has been replaced"; -sleep 300; //Can be used every 5min -_target addAction ["Reset Crew", UAV_FIX_CREW, [], 0.01, false, true, "", "true", 0.1]; diff --git a/Addons/Strat_mode/Functions/UAV_Fuel.sqf b/Addons/Strat_mode/Functions/UAV_Fuel.sqf index 716576d90..0dfd10872 100644 --- a/Addons/Strat_mode/Functions/UAV_Fuel.sqf +++ b/Addons/Strat_mode/Functions/UAV_Fuel.sqf @@ -9,14 +9,6 @@ private ["_uav","_last_fuel","_newfuel"]; _uav=_this; _last_fuel=fuel _uav; -{ - _action = _uav actionParams _x; - if(_action select 0 == "Reset Crew") then { - _uav removeAction _x; - }; -} forEach actionIDs _uav; -_uav addAction ["Reset Crew", UAV_FIX_CREW, [], 0.01, false, true, "", "true", 0.1]; - while {!CTI_GameOver && alive _uav} do { if (local _uav) then { if (fuel _uav <0.05) then {_uav setDammage 1}; diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 94df4103b..8a29981bd 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -9,7 +9,7 @@ _base_w=safezoneH * 0.04; _base_h=safezoneH * 0.04; _offset=-5; _h_offset=-1; -_max_ctrl=40; +_max_ctrl=41; @@ -547,7 +547,17 @@ switch (_action) do { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+5,_base_w,_base_h]; }; }; - + case 39: { //OnResetDroneAI - Yoshi_E + _uav = getConnectedUAV player; + if (alive _uav && unitIsUAV _uav) then { + ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; + + ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+_h_offset*_base_h,_base_w,_base_h]; + _offset=_offset+1; + } else { + ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+5,_base_w,_base_h]; + }; + }; }; }; //if (_offset == 0) exitwith {false}; @@ -872,4 +882,9 @@ switch (_action) do { [group player, CTI_P_SideJoined, - 1500] call CTI_CO_FNC_ChangeFunds; }; }; + case "OnResetDroneAI": { + closedialog 0; + _drone = getConnectedUAV player; + [_drone, player] spawn UAV_FIX_CREW; + }; }; diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index 0a9606e24..09b1e00c3 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -112,15 +112,9 @@ if (isNull _created) then { //if (_special == "FORM") then {_vehicle setPos [(getPos _vehicle) select 0, (getPos _vehicle) select 1, 0.75];}; //--- Make the vehicle spawn above the ground level to prevent any bisteries if (_special == "FORM") then {_vehicle setPos [(getPos _vehicle) select 0, (getPos _vehicle) select 1];}; - // --- Zerty edit - if (_type isKindOf "UAV" || _type isKindOf "UGV_01_base_F") then { - createVehicleCrew _vehicle; - _vehicle addAction ["Reset Crew", UAV_FIX_CREW, [], 0.01, false, true, "", "true", 0.1]; - }; - - if (_vehicle isKindOf "B_T_UAV_03_dynamicLoadout_F") then { + + if (unitIsUAV _vehicle) then { createVehicleCrew _vehicle; - _vehicle addAction ["Reset Crew", UAV_FIX_CREW, [], 0.01, false, true, "", "true", 0.1]; }; diff --git a/Rsc/Dialogs.hpp b/Rsc/Dialogs.hpp index 2b4534eed..ef35fddb1 100644 --- a/Rsc/Dialogs.hpp +++ b/Rsc/Dialogs.hpp @@ -310,6 +310,13 @@ class CTI_RscInteraction { text = "Rsc\Pictures\icon_cage.paa"; action = "['OnSlatCage'] call compile preprocessFileLineNumbers 'Addons\Strat_mode\Tablet\Events_UI_Interact.sqf'"; toolTip=$STR_Icon_SlatCage; + }; + class CTI_Icon_Reset : CTI_Icon_fpk { + idc = 511039; + x = "SafeZoneX + SafeZoneW*0.55"; + text = "Rsc\Pictures\icon_reset.paa"; + action = "['OnResetDroneAI'] call compile preprocessFileLineNumbers 'Addons\Strat_mode\Tablet\Events_UI_Interact.sqf'"; + toolTip=$STR_Icon_Reset; }; }; }; diff --git a/Rsc/Pictures/icon_reset.paa b/Rsc/Pictures/icon_reset.paa new file mode 100644 index 0000000000000000000000000000000000000000..c2c78512231a2b17f0d223d374c208eeba8da8a8 GIT binary patch literal 14632 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 literal 0 HcmV?d00001 diff --git a/stringtable.xml b/stringtable.xml index 2a9b01030..ed2c3c228 100644 --- a/stringtable.xml +++ b/stringtable.xml @@ -936,6 +936,10 @@ Slat Cage $1500 ламельная клетка $1500 + + + Reset AI Crew + Сбросить AI Crew Online Help From bc67f89bde3e4c70028185778fe297f45f3c4f0c Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Thu, 5 Sep 2019 14:53:35 +0200 Subject: [PATCH 147/267] Removed Fuel limitation on the Pelleter UGV --- Addons/Strat_mode/Functions/UAV_FuelDeath.sqf | 11 +++++++++++ Addons/Strat_mode/init.sqf | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 Addons/Strat_mode/Functions/UAV_FuelDeath.sqf diff --git a/Addons/Strat_mode/Functions/UAV_FuelDeath.sqf b/Addons/Strat_mode/Functions/UAV_FuelDeath.sqf new file mode 100644 index 000000000..7ed0f719e --- /dev/null +++ b/Addons/Strat_mode/Functions/UAV_FuelDeath.sqf @@ -0,0 +1,11 @@ +//Destroys the vehicle if out of fuel (used for Drones) + +private ["_uav"]; + +_uav=_this; + +while {!CTI_GameOver && alive _uav} do { + if (local _uav) then { + if (fuel _uav <0.05) then {_uav setDammage 1}; + sleep 60; +}; diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 17e9bc6ac..d7b0852c9 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -46,6 +46,7 @@ with missionNamespace do { SM_COM_Init = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Old_Com_Eject\SM_COM_init.sqf"; UAV_FUEL = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\UAV_Fuel.sqf"; + UAV_FUELDEATH = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\UAV_FuelDeath.sqf"; UAV_FIX_CREW = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\UAV_Fix_Crew.sqf"; UAV_RANGE = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\UAV_Range.sqf"; DYNG_WAIT = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\DYNG_waitforgroup.sqf"; @@ -241,7 +242,8 @@ if (CTI_IsClient) then { _marker setMarkerAlphaLocal 0.5; }; CTI_PVF_Client_UAVSetFuel={ - if (_this isKindOf "Helicopter_Base_F" || _this isKindOf "UGV_02_Base_F") then {_this spawn UAV_FUEL;}; + if (_this isKindOf "Helicopter_Base_F") then {_this spawn UAV_FUEL;}; + if (_this isKindOf "UGV_02_Base_F") then {_this spawn UAV_FUELDEATH;}; }; }; From 58c5a5834c4be446789e3ff02b924bf71da018ee Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Thu, 5 Sep 2019 15:27:19 +0200 Subject: [PATCH 148/267] removed "lock" aciton from UAVs to prevent accidential locking #287 --- Addons/Strat_mode/Functions/SM_RepairVehicule.sqf | 10 ++++++---- Client/Functions/Client_OnPurchaseOrderReceived.sqf | 7 ++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_RepairVehicule.sqf b/Addons/Strat_mode/Functions/SM_RepairVehicule.sqf index 16d8df982..8725f8fb4 100644 --- a/Addons/Strat_mode/Functions/SM_RepairVehicule.sqf +++ b/Addons/Strat_mode/Functions/SM_RepairVehicule.sqf @@ -116,11 +116,13 @@ SM_Force_entry={ _x action [ "eject", _target]; } forEach crew _target; - _target addAction [localize "STR_Action_Unlock","Client\Actions\Action_ToggleLock.sqf", [], 99, false, true, '', '_this != player && alive _target && locked _target == 2']; - _target addAction [localize "STR_Action_Lock","Client\Actions\Action_ToggleLock.sqf", [], 99, false, true, '', '_this != player && alive _target && locked _target == 0']; - _target setVariable ["v_keys",[getPlayerUID player,group player],true]; + if(! (unitIsUAV _target)) then { + _target addAction [localize "STR_Action_Unlock","Client\Actions\Action_ToggleLock.sqf", [], 99, false, true, '', '_this != player && alive _target && locked _target == 2']; + _target addAction [localize "STR_Action_Lock","Client\Actions\Action_ToggleLock.sqf", [], 99, false, true, '', '_this != player && alive _target && locked _target == 0']; + _target setVariable ["v_keys",[getPlayerUID player,group player],true]; + }; _target setVariable ["forced",true,true]; - + 0 call HUD_PBar_stop; CTI_P_Repairing = false ; diff --git a/Client/Functions/Client_OnPurchaseOrderReceived.sqf b/Client/Functions/Client_OnPurchaseOrderReceived.sqf index a3dc410fa..2da49c558 100644 --- a/Client/Functions/Client_OnPurchaseOrderReceived.sqf +++ b/Client/Functions/Client_OnPurchaseOrderReceived.sqf @@ -191,9 +191,10 @@ if (_model isKindOf "Man") then { }; } forEach (_var_classname select CTI_UNIT_TURRETS); }; - - _vehicle addAction ["Unlock","Client\Actions\Action_ToggleLock.sqf", [], 99, false, true, '', '_this != player &&alive _target && locked _target == 2']; - _vehicle addAction ["Lock","Client\Actions\Action_ToggleLock.sqf", [], 99, false, true, '', '_this != player &&alive _target && locked _target == 0']; + if (! (unitIsUAV _vehicle)) then { + _vehicle addAction ["Unlock","Client\Actions\Action_ToggleLock.sqf", [], 99, false, true, '', '_this != player &&alive _target && locked _target == 2']; + _vehicle addAction ["Lock","Client\Actions\Action_ToggleLock.sqf", [], 99, false, true, '', '_this != player &&alive _target && locked _target == 0']; + }; if (! (_vehicle isKindOf "Thing") && !( _vehicle isKindOf "StaticWeapon")) then {_vehicle setVariable ["v_keys",[getPlayerUID player,group player],true]}; player reveal _vehicle; From dd5f6848ae68ba3b12172985df6356523cd9cd26 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sat, 7 Sep 2019 15:20:09 +0200 Subject: [PATCH 149/267] fix for #284 --- Addons/Strat_mode/Functions/SM_CleanUp.sqf | 23 +- Server/FSM/update_commander.fsm | 1706 ++++++++++---------- 2 files changed, 896 insertions(+), 833 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_CleanUp.sqf b/Addons/Strat_mode/Functions/SM_CleanUp.sqf index 97dc2722d..76c9842c6 100644 --- a/Addons/Strat_mode/Functions/SM_CleanUp.sqf +++ b/Addons/Strat_mode/Functions/SM_CleanUp.sqf @@ -68,9 +68,26 @@ SM_CLEAN_DG= { ((units _x) findIf {_x in (_logic getVariable ["cti_workers", []])} == -1) && ((units _x) findIf {unitIsUAV (vehicle _x)} == -1) ) then { - //Empty the group and delete it - { deleteVehicle _x }forEach units _x; - deleteGroup _x; + //Start deletion process + [_x] spawn { + params ["_group"]; + _is_player_group = false; + //Scan over a period of time if the player is / was in the group before deleting it. + //When a player suicides the group is not in BIS_fnc_dynamicGroups se we have to check multiple times: + for [{private _i = 0}, {_i < 25}, {_i = _i + 1}] do { + sleep(10); + if(!(isNull _group) && _group in (["GetAllGroups",[]] call BIS_fnc_dynamicGroups)) then { + _is_player_group = true; + }; + if(_is_player_group isEqualTo true) exitwith {}; + }; + //Now we can assume that the no player is in that group: + if(!(isNull _group) && _is_player_group isEqualTo false) then { + //Empty the group and delete it + { deleteVehicle _x } forEach units _group; + deleteGroup _group; + }; + } } } forEach _groups; }; diff --git a/Server/FSM/update_commander.fsm b/Server/FSM/update_commander.fsm index 83d075860..99d3ca9bf 100644 --- a/Server/FSM/update_commander.fsm +++ b/Server/FSM/update_commander.fsm @@ -9,7 +9,7 @@ item4[] = {"Human",8,218,-250.000000,-200.000000,-150.000000,-150.000000,0.00000 item5[] = {"AI",4,218,-100.000000,-100.000000,0.000000,-50.000000,1.000000,"AI"}; item6[] = {"Phase_III_Action",2,250,-100.000000,200.000000,0.000000,250.000000,0.000000,"Phase III" \n "Action"}; item7[] = {"Roles",4,218,-250.000000,400.000000,-150.000000,450.000000,1.000000,"Roles"}; -item8[] = {"Set_Roles__One_Time",2,250,-250.000000,500.000000,-150.000000,550.000000,0.000000,"Set" \n "Roles" \n "(One Time)"}; +item8[] = {"Set_Roles__One_Time",2,4346,-250.000000,500.000000,-150.000000,550.000000,0.000000,"Set" \n "Roles" \n "(One Time)"}; item9[] = {"Structure",4,218,50.000000,400.000000,150.000000,450.000000,4.000000,"Structure"}; item10[] = {"Update_Structure",2,250,50.000000,500.000000,150.000000,550.000000,0.000000,"Update" \n "Structures"}; item11[] = {"Defenses",4,218,175.000000,400.000000,275.000000,450.000000,3.000000,"Defenses"}; @@ -19,7 +19,7 @@ item14[] = {"Update_Upgrades",2,250,550.000000,500.000000,650.000000,550.000000, item15[] = {"Teams",4,218,-500.000000,400.000000,-400.000000,450.000000,3.000000,"Teams"}; item16[] = {"Update_Teams",2,250,-500.000000,500.000000,-400.000000,550.000000,0.000000,"Update" \n "Teams"}; item17[] = {"Orders",4,218,-375.000000,400.000000,-275.000000,450.000000,2.000000,"Orders"}; -item18[] = {"Update_Orders",2,4346,-375.000000,500.000000,-275.000000,550.000000,0.000000,"Update" \n "Orders"}; +item18[] = {"Update_Orders",2,250,-375.000000,500.000000,-275.000000,550.000000,0.000000,"Update" \n "Orders"}; item19[] = {"",7,210,-54.000004,696.000000,-46.000000,704.000000,0.000000,""}; item20[] = {"",7,210,696.000000,696.000000,704.000000,704.000000,0.000000,""}; item21[] = {"",7,210,696.000000,-279.000000,704.000000,-271.000000,0.000000,""}; @@ -86,840 +86,886 @@ link44[] = {33,34}; link45[] = {34,1}; link46[] = {35,36}; link47[] = {36,19}; -globals[] = {25.000000,1,0,0,0,640,480,1,223,6316128,1,-505.609863,910.706909,936.954651,-404.738892,635,881,1}; -window[] = {2,-1,-1,-1,-1,1006,225,1480,225,3,653}; +globals[] = {0.000000,0,0,0,0,640,480,1,223,6316128,1,-382.509674,787.605042,926.103088,57.078770,554,609,1}; +window[] = {0,-1,-1,-1,-1,899,283,1744,118,1,572}; *//*%FSM*/ class FSM { - fsmName = "update_commander.fsm"; - class States - { - /*%FSM*/ - class Start_FSM - { - name = "Start_FSM"; - init = /*%FSM*/"_side = _this select 0;" \n - "_sideCommander = _this select 1;" \n - "_sideID = (_side) call CTI_CO_FNC_GetSideID;" \n - "_sideLogic = (_side) call CTI_CO_FNC_GetSideLogic;" \n - "" \n - "" \n - "_ncycle = 0;" \n - "_lastAction = """";" \n - "_build = [];" \n - "" \n - "_towns_total = count CTI_Towns;" \n - "" \n - "_role_assigned = false;" \n - "_role_assigned_lastcheck = -3000;" \n - "" \n - "_commander_lastmove = -100;" \n - "_commander_buildorderstart = -1;" \n - "_commander_lastsalvager_addin = -600;" \n - "_commander_lastteamupdate = 0;" \n - "" \n - "_logical_path = missionNamespace getVariable format[""CTI_%1_Commander_Path"", _side];" \n - "_logical_path_reached = 0;" \n - "_logical_path_index = 0;" \n - "" \n - "if (isMultiplayer) then {" \n - " (leader _sideCommander) removeAllEventHandlers ""respawn"";" \n - " (leader _sideCommander) addEventHandler [""respawn"", format[""[_this select 0, _this select 1, %1] spawn CTI_FSM_UpdateCommander_Respawn_MP"", _sideID]];" \n - "} else {" \n - " (leader _sideCommander) addEventHandler [""killed"", format[""[_this select 0, %1] spawn CTI_FSM_UpdateCommander_Respawn_SP"", _sideID]];" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle + fsmName = "update_commander.fsm"; + class States { - priority = 0.000000; - to="Phase_I_Commande"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; + /*%FSM*/ + class Start_FSM + { + name = "Start_FSM"; + itemno = 0; + init = /*%FSM*/"_side = _this select 0;" \n + "_sideCommander = _this select 1;" \n + "_sideID = (_side) call CTI_CO_FNC_GetSideID;" \n + "_sideLogic = (_side) call CTI_CO_FNC_GetSideLogic;" \n + "" \n + "" \n + "_ncycle = 0;" \n + "_lastAction = """";" \n + "_build = [];" \n + "" \n + "_towns_total = count CTI_Towns;" \n + "" \n + "_role_assigned = false;" \n + "_role_assigned_lastcheck = -3000;" \n + "" \n + "_commander_lastmove = -100;" \n + "_commander_buildorderstart = -1;" \n + "_commander_lastsalvager_addin = -600;" \n + "_commander_lastteamupdate = 0;" \n + "" \n + "_logical_path = missionNamespace getVariable format[""CTI_%1_Commander_Path"", _side];" \n + "_logical_path_reached = 0;" \n + "_logical_path_index = 0;" \n + "" \n + "if (isMultiplayer) then {" \n + " (leader _sideCommander) removeAllEventHandlers ""respawn"";" \n + " (leader _sideCommander) addEventHandler [""respawn"", format[""[_this select 0, _this select 1, %1] spawn CTI_FSM_UpdateCommander_Respawn_MP"", _sideID]];" \n + "} else {" \n + " (leader _sideCommander) addEventHandler [""killed"", format[""[_this select 0, %1] spawn CTI_FSM_UpdateCommander_Respawn_SP"", _sideID]];" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Phase_I_Commande"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Phase_I_Commande + { + name = "Phase_I_Commande"; + itemno = 2; + init = /*%FSM*/"" \n + "" \n + "_ok = false;" \n + "if (isNull ( _sideLogic getVariable ""cti_commander"") && (_sideLogic getVariable ""cti_ai_commander"") && _sideCommander == (_sideLogic getVariable ""cti_ai_commander_group"") ) then {" \n + " _ok=true;" \n + " //if !(isPlayer leader _sideCommander) then { _ok = true };" \n + "};" \n + "" \n + "_ncycle = time + 5;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class AI + { + itemno = 5; + priority = 1.000000; + to="Phase_II_Respawn"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!CTI_GameOver && _ok"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Human + { + itemno = 4; + priority = 0.000000; + to="End_FSM"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class End_FSM + { + name = "End_FSM"; + itemno = 3; + init = /*%FSM*/"_sideLogic setVariable [""cti_ai_commander"", false,true];" \n + "_sideLogic setVariable [""cti_ai_commander_group"",grpNull,true];" \n + "[[""CLIENT"", _side], ""Client_OnMessageReceived"", [""eject_com"", [format [""%1 (AI)"",(name leader _sideCommander)]] ] ] call CTI_CO_FNC_NetSend;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Phase_III_Action + { + name = "Phase_III_Action"; + itemno = 6; + init = /*%FSM*/"_action = """";" \n + "" \n + "_funds = (_side) call CTI_CO_FNC_GetFundsCommander;" \n + "_structures = (_side) call CTI_CO_FNC_GetSideStructures;" \n + "_factory_commandCenter = [CTI_CONTROLCENTER, leader _sideCommander, _structures] call CTI_CO_FNC_GetClosestStructure;" \n + "" \n + "//--- Check base eta." \n + "_hq = (_side) call CTI_CO_FNC_GetSideHQ;" \n + "" \n + "if (alive _hq) then {_action = ""construction""};" \n + "if (alive _factory_commandCenter) then {_action = ""management""};" \n + "" \n + "if (alive _hq && alive _factory_commandCenter) then {" \n + " _action = if (_lastAction == ""construction"") then {""management""} else {""construction""};" \n + "};" \n + "" \n + "_lastAction = _action;" \n + "" \n + "//todo improve once all is built"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Construction + { + itemno = 22; + priority = 2.000000; + to="Determine"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_action == ""construction"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Management + { + itemno = 23; + priority = 1.000000; + to="Determine_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_action == ""management"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Nil + { + itemno = 26; + priority = 0.000000; + to="Skip"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Set_Roles__One_Time + { + name = "Set_Roles__One_Time"; + itemno = 8; + init = /*%FSM*/"_role_assigned = true;" \n + "" \n + "_teams = (_side call CTI_CO_FNC_GetSideGroups) - [_sideCommander];" \n + "_teams_count = count _teams;" \n + "_ratio_infantry = ceil(_teams_count * .45);" \n + "_ratio_light_n_heavy = round(_teams_count * .20);" \n + "_ratio_heavy = round(_teams_count * .30);" \n + "_ratio_air = ceil(_teams_count * .05);" \n + "" \n + "_assigned = 0;" \n + "for '_j' from _teams_count-1 to 0 step -1 do {" \n + " _group = _teams select _j;" \n + " if(!(isMultiplayer && isPlayer (_group getVariable [""bis_dg_cre"", objNull]))) then {" \n + " _last_assigned = _assigned;" \n + " while { _ratio_air > 0 && _assigned == _last_assigned} do {" \n + " _group setVariable [""cti_role_evo"", ""Air""];" \n + " _ratio_air = _ratio_air - 1;" \n + " _assigned = _assigned + 1;" \n + " };" \n + " while { _ratio_heavy > 0 && _assigned == _last_assigned} do {" \n + " _group setVariable [""cti_role_evo"", ""Heavy""];" \n + " _ratio_heavy = _ratio_heavy - 1;" \n + " _assigned = _assigned + 1;" \n + " };" \n + " while { _ratio_infantry > 0 && _assigned == _last_assigned} do {" \n + " _group setVariable [""cti_role_evo"", ""Infantry""];" \n + " _ratio_infantry = _ratio_infantry - 1;" \n + " _assigned = _assigned + 1;" \n + " };" \n + " while { _ratio_light_n_heavy > 0 && _assigned == _last_assigned} do {" \n + " _group setVariable [""cti_role_evo"", ""Light""];" \n + " _ratio_light_n_heavy = _ratio_light_n_heavy - 1;" \n + " _assigned = _assigned + 1;" \n + " };" \n + " " \n + " //--- What kind?.." \n + " _category = missionNamespace getVariable format[""CTI_SQUADS_%1_CATEGORY_%2"", _side, _group getVariable ""cti_role_evo""];" \n + " " \n + " if !(isNil '_category') then { [_category, _group, _side, _teams] call CTI_FSM_UpdateCommander_SetAIRole };" \n + " " \n + " diag_log format [""DEBUG TEAM SET: %1 %2 %3"", _group, _group getVariable ""cti_role_evo"", _group getVariable ""cti_role""];" \n + " };" \n + "};" \n + "" \n + "//--- Assign Take Hold randomly" \n + "{" \n + " if !((_x getVariable ""cti_order"") in [CTI_ORDER_HOLDTOWNSBASES, CTI_ORDER_HOLDTOWNSBASE]) then {" \n + " if (random 100 > (40 + (random 15))) then {" \n + " _x setVariable [""cti_order"", CTI_ORDER_TAKEHOLDTOWNS, true]; " \n + " _x setVariable [""cti_order_pos"", [0,0], true]" \n + " };" \n + " };" \n + "} forEach _teams;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Phase_I_Commande"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Structure + { + name = "Update_Structure"; + itemno = 10; + init = /*%FSM*/"//--- Nothing is being built" \n + "if (count _build < 1) then {" \n + " _increment = false;" \n + " _template = missionNamespace getVariable format[""CTI_%1_Base_Template"", _side];" \n + " " \n + " //--- The structure is not built around" \n + " _position_commander = getPos leader( _sideCommander);" \n + " if !([_side, _selected_param, _position_commander, 1250] call CTI_CO_FNC_HasStructure) then {" \n + " //--- But is it in WIP?" \n + " _is_being_built = false;" \n + " {if ((_x getVariable ""cti_structure_type"") == _selected_param && _x distance _position_commander <= 1250) exitWith {_is_being_built = true}} forEach (_sideLogic getVariable ""cti_structures_wip"");" \n + " " \n + " //--- All clear!" \n + " if !(_is_being_built) then {" \n + " _var = missionNamespace getVariable format [""CTI_%1_%2"", _side, _selected_param];" \n + " " \n + " if !(isNil '_var') then {" \n + " if (_funds >= (_var select 2)) then {" \n + " _index = -1;" \n + " {if ((_x select 0) == ((_var select 0) select 0)) exitWith {_index = _forEachIndex }} forEach _template;" \n + " if (_index != -1) then {" \n + " _emplacement = [_side, _var, _template select _index] call CTI_FSM_UpdateCommander_GetStructureEmplacement;" \n + " if (_emplacement select 0 != 0 && _emplacement select 1 != 0) then {_build = [(_var select 0) select 0, _var select 2, _emplacement]};" \n + " } else {" \n + " _increment = true; //--- We can't do it, what's next?" \n + " };" \n + " } else {" \n + " _increment = true; //--- We can't do it, what's next?" \n + " };" \n + " } else {" \n + " _increment = true; //--- We can't do it, what's next?" \n + " };" \n + " } else {" \n + " _increment = true; //--- We can't do it, what's next?" \n + " };" \n + " } else {" \n + " _increment = true; //--- We can't do it, what's next?" \n + " };" \n + " " \n + " if (_increment) then {_logical_path_index = if (_logical_path_index + 1 > _logical_path_reached) then {0} else {_logical_path_index + 1}};" \n + "};" \n + "" \n + "//--- Something is going to be built" \n + "if (count _build > 0) then {" \n + " if (_funds >= (_build select 1)) then {" \n + " _position = _build select 2;" \n + " _var = missionNamespace getVariable format [""CTI_%1_%2"", _side, _build select 0];" \n + " _distance_structure = (_var select 4) select 1;" \n + " _dir_to = [leader _sideCommander, _position] call CTI_CO_FNC_GetDirTo;" \n + " _goto = [(_position select 0) - ((sin _dir_to) * _distance_structure), (_position select 1) - ((cos _dir_to) * _distance_structure), 0];" \n + "" \n + " if ((leader _sideCommander) distance _goto <= 35 && alive (leader _sideCommander)) then {" \n + " //--- Construct" \n + " (leader _sideCommander) setDir _dir_to;" \n + " _direction_structure = (_var select 4) select 0;" \n + " _direction = 0 + ((_build select 2) select 1) + _direction_structure; //todo template defines that (0)" \n + " [format [""CTI_%1_%2"", _side, _build select 0], _side, (_build select 2), _direction] call CTI_SE_FNC_BuildStructure;" \n + " " \n + " [_side, -(_build select 1)] call CTI_CO_FNC_ChangeFundsCommander;" \n + " _score = round((_build select 1) / CTI_SCORE_BUILD_VALUE_PERPOINT);" \n + " if (_score > 0) then {(leader _sideCommander) addScore _score};" \n + " " \n + " _build = [];" \n + " " \n + " //--- Next!" \n + " if (_logical_path_reached < (count _logical_path)-1) then {_logical_path_reached = _logical_path_reached + 1};" \n + " _logical_path_index = if (_logical_path_index + 1 > _logical_path_reached) then {0} else {_logical_path_index + 1};" \n + " } else {" \n + " if (time - _commander_lastmove > 35) then { (leader _sideCommander) commandMove _goto };" \n + " };" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Phase_I_Commande"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Defenses + { + name = "Update_Defenses"; + itemno = 12; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Phase_I_Commande"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Upgrades + { + name = "Update_Upgrades"; + itemno = 14; + init = /*%FSM*/"_upgrade = _selected_param select 0;" \n + "_upgrade_level = _selected_param select 1;" \n + "_position_commander = getPos leader( _sideCommander);" \n + "" \n + "_increment = false;" \n + "//--- Do we have a CC in range?" \n + "if ([_side, CTI_CONTROLCENTER, _position_commander, CTI_BASE_PURCHASE_UNITS_RANGE_CC] call CTI_CO_FNC_HasStructure) then {" \n + " //--- Do we have the upgrade yet?" \n + " if !([_side, _upgrade, _upgrade_level] call CTI_CO_FNC_HasUpgrade) then {" \n + " if ((_sideLogic getVariable ""cti_upgrade"") < 0) then {" \n + " _upgrades = (_side) call CTI_CO_FNC_GetSideUpgrades;" \n + " _upgrade_current = _upgrades select _upgrade;" \n + " " \n + " _upgrade_level = (missionNamespace getVariable Format[""CTI_%1_UPGRADES_LEVELS"", _side]) select _upgrade;" \n + " _upgrade_price = ((missionNamespace getVariable Format[""CTI_%1_UPGRADES_COSTS"", _side]) select _upgrade) select _upgrade_current;" \n + " " \n + " //--- The max upgrade hasn't been reached yet" \n + " if (_upgrade_current < _upgrade_level) then {" \n + " //--- We have the funds" \n + " if (_funds >= _upgrade_price) then {" \n + " [_side, -_upgrade_price] call CTI_CO_FNC_ChangeFundsCommander;" \n + " _sideLogic setVariable [""cti_upgrade"", _upgrade,true];" \n + " [_side, _upgrade, _upgrade_current] spawn CTI_SE_FNC_StartUpgrade;" \n + " " \n + " //--- Next!" \n + " if (_logical_path_reached < (count _logical_path)-1) then {_logical_path_reached = _logical_path_reached + 1};" \n + " _logical_path_index = if (_logical_path_index + 1 > _logical_path_reached) then {0} else {_logical_path_index + 1};" \n + " } else {" \n + " _increment = true;" \n + " };" \n + " } else {" \n + " _increment = true;" \n + " };" \n + " } else {" \n + " _increment = true;" \n + " };" \n + " } else {" \n + " _increment = true;" \n + " };" \n + "} else {" \n + " _increment = true;" \n + "};" \n + "" \n + "if (_increment) then {_logical_path_index = if (_logical_path_index + 1 > _logical_path_reached) then {0} else {_logical_path_index + 1}};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Phase_I_Commande"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Teams + { + name = "Update_Teams"; + itemno = 16; + init = /*%FSM*/"_commander_lastteamupdate = time;" \n + "_modifier = switch (true) do {case (_funds >= 5000): {1.25}; case (_funds >= 10000): {1.5}; case (_funds >= 20000): {1.75}; case (_funds >= 50000): {2}; default {1}};" \n + "" \n + "_structures = (_side) call CTI_CO_FNC_GetSideStructures;" \n + "" \n + "{" \n + " _funds = (_side) call CTI_CO_FNC_GetFundsCommander;" \n + " " \n + " //--- The leader is an AI and he is independent" \n + " if (!isPlayer leader _x && (_x getVariable ""cti_independent"")) then {" \n + " _lives = count (_x call CTI_CO_FNC_GetLiveUnits);" \n + " " \n + " //--- The limit hasn't been reached yet" \n + " if (_lives < CTI_AI_TEAMS_GROUPSIZE) then {" \n + " _role = _x getVariable ""cti_role"";" \n + " if !(isNil '_role') then {" \n + " _has_purchased = false;" \n + " " \n + " //--- Determine what we're deling with" \n + " _id = switch (true) do {" \n + " case (_role in (missionNamespace getVariable format[""CTI_SQUADS_%1_KIND_INFANTRY"", _side])): {0};" \n + " case (_role in (missionNamespace getVariable format[""CTI_SQUADS_%1_KIND_LIGHT"", _side])): {1};" \n + " case (_role in (missionNamespace getVariable format[""CTI_SQUADS_%1_KIND_HEAVY"", _side])): {2};" \n + " case (_role in (missionNamespace getVariable format[""CTI_SQUADS_%1_KIND_AIR"", _side])): {3};" \n + " default {0};" \n + " };" \n + " " \n + " //--- Is the factory available?" \n + " _factory = switch (_id) do {" \n + " case 0: {[CTI_BARRACKS, leader _x, _structures] call CTI_CO_FNC_GetClosestStructure};" \n + " case 1: {[CTI_LIGHT, leader _x, _structures] call CTI_CO_FNC_GetClosestStructure};" \n + " case 2: {[CTI_HEAVY, leader _x, _structures] call CTI_CO_FNC_GetClosestStructure};" \n + " case 3: {[CTI_AIR, leader _x, _structures] call CTI_CO_FNC_GetClosestStructure};" \n + " default {objNull};" \n + " };" \n + " " \n + " //--- The factory is alive and we're lucky enough!" \n + " if (alive _factory && random 100 <= (([CTI_AI_COMMANDER_BUYTO_INFANTRY, CTI_AI_COMMANDER_BUYTO_LIGHT, CTI_AI_COMMANDER_BUYTO_HEAVY, CTI_AI_COMMANDER_BUYTO_AIR] select _id) * _modifier)) then {" \n + " _var = missionNamespace getVariable format [""CTI_SQUAD_%1_%2"", _side, _role];" \n + " _cost = _var select 1;" \n + " " \n + " //--- We have enough cash to purchase the template" \n + " if (_funds >= _cost) then {" \n + " _has_purchased = true;" \n + " [_x, _side, _var select 2, _factory] call CTI_SE_FNC_AI_PurchaseSquad;" \n + " };" \n + " };" \n + " " \n + " //--- We couldn't purchase a unit set, maybe we can transfer some money if we're lucky enough?" \n + " if (!_has_purchased && random 100 <= CTI_AI_COMMANDER_TRANSFER_FUNDS_CHANCE && _funds > 2000) then {" \n + " _amount = round(([CTI_AI_COMMANDER_FUNDS_INFANTRY, CTI_AI_COMMANDER_FUNDS_LIGHT, CTI_AI_COMMANDER_FUNDS_HEAVY, CTI_AI_COMMANDER_FUNDS_AIR] select _id) * _modifier);" \n + " " \n + " if (_funds >= _amount) then {" \n + " [_side, -_amount] call CTI_CO_FNC_ChangeFundsCommander; //--- Minus for the com" \n + " [_x, _amount] call CTI_CO_FNC_ChangeFundsTeam; //--- Plus for the group" \n + " };" \n + " };" \n + " };" \n + " };" \n + " };" \n + "} forEach ((_side call CTI_CO_FNC_GetSideGroups) - [_sideCommander]);"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Phase_I_Commande"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Orders + { + name = "Update_Orders"; + itemno = 18; + init = /*%FSM*/"_role_assigned_lastcheck = time;" \n + "_defensive_teams = [];" \n + "" \n + "{" \n + " if ((_x getVariable ""cti_order"") in [CTI_ORDER_HOLDTOWNSBASE, CTI_ORDER_HOLDTOWNSBASES]) then {_defensive_teams pushback _x};" \n + "} forEach ((_side call CTI_CO_FNC_GetSideGroups) - [_sideCommander]);" \n + "" \n + "if (count _defensive_teams > 0) then { //--- Update our defenders" \n + " _towns = (_sideID) call CTI_FSM_UpdateCommander_GetMostValuedTowns;" \n + " _structures = (_side) call CTI_CO_FNC_GetSideStructures;" \n + " " \n + " if (count _towns > 0) then {" \n + " _enemyside = ([west,east] - [_side]) select 0;" \n + " _enemy_hq = (_enemyside) call CTI_CO_FNC_GetSideHQ;" \n + " _focus_list = [];" \n + " if (alive _enemy_hq) then {_focus_list pushback _enemy_hq};" \n + " _focus_list = _focus_list + (_side call CTI_CO_FNC_GetSideStructures);" \n + " if (count _focus_list < 1) then {_focus_list = [_enemy_hq]};" \n + " " \n + " _towns = [_focus_list select floor(random count _focus_list), _towns] call CTI_CO_FNC_SortByDistance;" \n + " if (count _towns > 3) then { _towns resize 3 }; //--- Don't scatter the ai too far away from the frontline" \n + " };" \n + "" \n + " {" \n + " if (count _towns > 0) then { //--- We have towns to defend boys!" \n + " _x setVariable [""cti_order_pos"", _towns select floor (random count _towns), true];" \n + " } else { //--- Maybe we can defend the CC?" \n + " _factory_nearest = [CTI_CONTROLCENTER, leader _x, _structures] call CTI_CO_FNC_GetClosestStructure;" \n + " if !(isNull _factory_nearest) then { _x setVariable [""cti_order_pos"", _factory_nearest, true]};" \n + " };" \n + " } forEach _defensive_teams;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Phase_I_Commande"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Determine + { + name = "Determine"; + itemno = 24; + init = /*%FSM*/"_action = """";" \n + "" \n + "//--- Start with the logical path" \n + "_path_item = _logical_path select _logical_path_index;" \n + "_selected_action = _path_item select 0;" \n + "_selected_param = _path_item select 1;" \n + "_selected_condition = _path_item select 2;" \n + "" \n + "if (call _selected_condition) then {" \n + " _action = _selected_action;" \n + "} else { //--- The condition could not be reached, skip" \n + " if (_logical_path_reached < (count _logical_path)-1) then {_logical_path_reached = _logical_path_reached + 1};" \n + " _logical_path_index = if (_logical_path_index + 1 > _logical_path_reached) then {0} else {_logical_path_index + 1};" \n + "};" \n + "" \n + "//--- Salvagers are needed?" \n + "_factory_repair = [CTI_REPAIR, leader _sideCommander, _structures] call CTI_CO_FNC_GetClosestStructure;" \n + "if !(isNull _factory_repair) then {" \n + " if (_funds >= CTI_VEHICLES_SALVAGER_PRICE && !isNull _factory_repair && count(_sideLogic getVariable ""cti_salvagers"") < CTI_VEHICLES_SALVAGE_INDEPENDENT_MAX && time - _commander_lastsalvager_addin > 300) then {_action = ""hire-salvager""};" \n + "};" \n + "" \n + "//--- The commander could not build in time" \n + "if (count _build > 0) then {if (time - _commander_buildorderstart > 240) then {_build = []}};" \n + "" \n + "//--- The commander is still building something" \n + "if (count _build > 0) then {_action = ""build-structures""};" \n + "" \n + "//--- We check the workers last" \n + "if (count (_sideLogic getVariable ""cti_workers"") < 4 && _funds >= CTI_BASE_WORKERS_PRICE) then {_action = ""hire-workers""};" \n + "" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Structure + { + itemno = 9; + priority = 4.000000; + to="Update_Structure"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_action == ""build-structures"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Defenses + { + itemno = 11; + priority = 3.000000; + to="Update_Defenses"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_action == ""build-defenses"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Workers + { + itemno = 28; + priority = 2.000000; + to="Update_Workers"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_action == ""hire-workers"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Salvagers + { + itemno = 35; + priority = 1.000000; + to="Update_Salvagers"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_action == ""hire-salvager"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Nil + { + itemno = 26; + priority = 0.000000; + to="Skip"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Upgrade + { + itemno = 13; + priority = 0.000000; + to="Update_Upgrades"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_action == ""upgrade"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Determine_1 + { + name = "Determine_1"; + itemno = 25; + init = /*%FSM*/"_action = """";" \n + "if !(_role_assigned) exitWith {_action = ""roles""}; //--- Assign the roles at first" \n + "if (_role_assigned && time - _role_assigned_lastcheck > 600) then {_action = ""update-orders""};" \n + "" \n + "if (_action == """" && time - _commander_lastteamupdate > CTI_AI_COMMANDER_TEAMS_UPDATE_DELAY && _funds > 12500) then {_action = ""update-teams""};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Teams + { + itemno = 15; + priority = 3.000000; + to="Update_Teams"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_action == ""update-teams"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Orders + { + itemno = 17; + priority = 2.000000; + to="Update_Orders"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_action == ""update-orders"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Roles + { + itemno = 7; + priority = 1.000000; + to="Set_Roles__One_Time"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_action == ""roles"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Nil + { + itemno = 26; + priority = 0.000000; + to="Skip"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Skip + { + name = "Skip"; + itemno = 27; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Phase_I_Commande"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Workers + { + name = "Update_Workers"; + itemno = 29; + init = /*%FSM*/"[_side, true] spawn CTI_SE_FNC_CreateWorker;" \n + "[_side, -CTI_BASE_WORKERS_PRICE] call CTI_CO_FNC_ChangeFundsCommander;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Phase_I_Commande"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Phase_II_Respawn + { + name = "Phase_II_Respawn"; + itemno = 30; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Ready + { + itemno = 31; + priority = 1.000000; + to="Phase_III_Action"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > (_sideCommander getVariable ""cti_nextrespawn"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Respawning + { + itemno = 32; + priority = 0.000000; + to="Skip_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Skip_1 + { + name = "Skip_1"; + itemno = 33; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Phase_I_Commande"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Salvagers + { + name = "Update_Salvagers"; + itemno = 36; + init = /*%FSM*/"if ((leader _sideCommander) distance _factory_repair < 40) then {" \n + " _commander_lastsalvager_addin = time;" \n + " [_side, _sideCommander, _side, format[""CTI_Salvager_Independent_%1"", _side], _factory_repair, [true, true, true, true, true], (time + random 10000 - random 500 + diag_frameno)] call CTI_SE_FNC_OnClientPurchase;" \n + "} else {" \n + " if (time - _commander_lastmove > 25) then { (leader _sideCommander) commandMove ([getPos _factory_repair, 2, 15] call CTI_CO_FNC_GetRandomPosition) };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 0.000000; + to="Phase_I_Commande"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"time > _ncycle"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Phase_I_Commande - { - name = "Phase_I_Commande"; - init = /*%FSM*/"" \n - "" \n - "_ok = false;" \n - "if (isNull ( _sideLogic getVariable ""cti_commander"") && (_sideLogic getVariable ""cti_ai_commander"") && _sideCommander == (_sideLogic getVariable ""cti_ai_commander_group"") ) then {" \n - " _ok=true;" \n - " //if !(isPlayer leader _sideCommander) then { _ok = true };" \n - "};" \n - "" \n - "_ncycle = time + 5;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class AI + initState="Start_FSM"; + finalStates[] = { - priority = 1.000000; - to="Phase_II_Respawn"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!CTI_GameOver && _ok"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; + "End_FSM", }; - /*%FSM*/ - /*%FSM*/ - class Human - { - priority = 0.000000; - to="End_FSM"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class End_FSM - { - name = "End_FSM"; - init = /*%FSM*/"_sideLogic setVariable [""cti_ai_commander"", false,true];" \n - "_sideLogic setVariable [""cti_ai_commander_group"",grpNull,true];" \n - "[[""CLIENT"", _side], ""Client_OnMessageReceived"", [""eject_com"", [format [""%1 (AI)"",(name leader _sideCommander)]] ] ] call CTI_CO_FNC_NetSend;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - }; - }; - /*%FSM*/ - /*%FSM*/ - class Phase_III_Action - { - name = "Phase_III_Action"; - init = /*%FSM*/"_action = """";" \n - "" \n - "_funds = (_side) call CTI_CO_FNC_GetFundsCommander;" \n - "_structures = (_side) call CTI_CO_FNC_GetSideStructures;" \n - "_factory_commandCenter = [CTI_CONTROLCENTER, leader _sideCommander, _structures] call CTI_CO_FNC_GetClosestStructure;" \n - "" \n - "//--- Check base eta." \n - "_hq = (_side) call CTI_CO_FNC_GetSideHQ;" \n - "" \n - "if (alive _hq) then {_action = ""construction""};" \n - "if (alive _factory_commandCenter) then {_action = ""management""};" \n - "" \n - "if (alive _hq && alive _factory_commandCenter) then {" \n - " _action = if (_lastAction == ""construction"") then {""management""} else {""construction""};" \n - "};" \n - "" \n - "_lastAction = _action;" \n - "" \n - "//todo improve once all is built"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Construction - { - priority = 2.000000; - to="Determine"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_action == ""construction"""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Management - { - priority = 1.000000; - to="Determine_1"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_action == ""management"""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Nil - { - priority = 0.000000; - to="Skip"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Set_Roles__One_Time - { - name = "Set_Roles__One_Time"; - init = /*%FSM*/"_role_assigned = true;" \n - "" \n - "_teams = (_side call CTI_CO_FNC_GetSideGroups) - [_sideCommander];" \n - "_teams_count = count _teams;" \n - "_ratio_infantry = ceil(_teams_count * .45);" \n - "_ratio_light_n_heavy = round(_teams_count * .20);" \n - "_ratio_heavy = round(_teams_count * .30);" \n - "_ratio_air = ceil(_teams_count * .05);" \n - "" \n - "_assigned = 0;" \n - "for '_j' from _teams_count-1 to 0 step -1 do {" \n - " _group = _teams select _j;" \n - " " \n - " _last_assigned = _assigned;" \n - " while { _ratio_air > 0 && _assigned == _last_assigned} do {" \n - " _group setVariable [""cti_role_evo"", ""Air""];" \n - " _ratio_air = _ratio_air - 1;" \n - " _assigned = _assigned + 1;" \n - " };" \n - " while { _ratio_heavy > 0 && _assigned == _last_assigned} do {" \n - " _group setVariable [""cti_role_evo"", ""Heavy""];" \n - " _ratio_heavy = _ratio_heavy - 1;" \n - " _assigned = _assigned + 1;" \n - " };" \n - " while { _ratio_infantry > 0 && _assigned == _last_assigned} do {" \n - " _group setVariable [""cti_role_evo"", ""Infantry""];" \n - " _ratio_infantry = _ratio_infantry - 1;" \n - " _assigned = _assigned + 1;" \n - " };" \n - " while { _ratio_light_n_heavy > 0 && _assigned == _last_assigned} do {" \n - " _group setVariable [""cti_role_evo"", ""Light""];" \n - " _ratio_light_n_heavy = _ratio_light_n_heavy - 1;" \n - " _assigned = _assigned + 1;" \n - " };" \n - " " \n - " //--- What kind?.." \n - " _category = missionNamespace getVariable format[""CTI_SQUADS_%1_CATEGORY_%2"", _side, _group getVariable ""cti_role_evo""];" \n - " " \n - " if !(isNil '_category') then { [_category, _group, _side, _teams] call CTI_FSM_UpdateCommander_SetAIRole };" \n - " " \n - " diag_log format [""DEBUG TEAM SET: %1 %2 %3"", _group, _group getVariable ""cti_role_evo"", _group getVariable ""cti_role""];" \n - "};" \n - "" \n - "//--- Assign Take Hold randomly" \n - "{" \n - " if !((_x getVariable ""cti_order"") in [CTI_ORDER_HOLDTOWNSBASES, CTI_ORDER_HOLDTOWNSBASE]) then {" \n - " if (random 100 > (40 + (random 15))) then {" \n - " _x setVariable [""cti_order"", CTI_ORDER_TAKEHOLDTOWNS, true]; " \n - " _x setVariable [""cti_order_pos"", [0,0], true]" \n - " };" \n - " };" \n - "} forEach _teams;" \n - ""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - priority = 0.000000; - to="Phase_I_Commande"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Update_Structure - { - name = "Update_Structure"; - init = /*%FSM*/"//--- Nothing is being built" \n - "if (count _build < 1) then {" \n - " _increment = false;" \n - " _template = missionNamespace getVariable format[""CTI_%1_Base_Template"", _side];" \n - " " \n - " //--- The structure is not built around" \n - " _position_commander = getPos leader( _sideCommander);" \n - " if !([_side, _selected_param, _position_commander, 1250] call CTI_CO_FNC_HasStructure) then {" \n - " //--- But is it in WIP?" \n - " _is_being_built = false;" \n - " {if ((_x getVariable ""cti_structure_type"") == _selected_param && _x distance _position_commander <= 1250) exitWith {_is_being_built = true}} forEach (_sideLogic getVariable ""cti_structures_wip"");" \n - " " \n - " //--- All clear!" \n - " if !(_is_being_built) then {" \n - " _var = missionNamespace getVariable format [""CTI_%1_%2"", _side, _selected_param];" \n - " " \n - " if !(isNil '_var') then {" \n - " if (_funds >= (_var select 2)) then {" \n - " _index = -1;" \n - " {if ((_x select 0) == ((_var select 0) select 0)) exitWith {_index = _forEachIndex }} forEach _template;" \n - " if (_index != -1) then {" \n - " _emplacement = [_side, _var, _template select _index] call CTI_FSM_UpdateCommander_GetStructureEmplacement;" \n - " if (_emplacement select 0 != 0 && _emplacement select 1 != 0) then {_build = [(_var select 0) select 0, _var select 2, _emplacement]};" \n - " } else {" \n - " _increment = true; //--- We can't do it, what's next?" \n - " };" \n - " } else {" \n - " _increment = true; //--- We can't do it, what's next?" \n - " };" \n - " } else {" \n - " _increment = true; //--- We can't do it, what's next?" \n - " };" \n - " } else {" \n - " _increment = true; //--- We can't do it, what's next?" \n - " };" \n - " } else {" \n - " _increment = true; //--- We can't do it, what's next?" \n - " };" \n - " " \n - " if (_increment) then {_logical_path_index = if (_logical_path_index + 1 > _logical_path_reached) then {0} else {_logical_path_index + 1}};" \n - "};" \n - "" \n - "//--- Something is going to be built" \n - "if (count _build > 0) then {" \n - " if (_funds >= (_build select 1)) then {" \n - " _position = _build select 2;" \n - " _var = missionNamespace getVariable format [""CTI_%1_%2"", _side, _build select 0];" \n - " _distance_structure = (_var select 4) select 1;" \n - " _dir_to = [leader _sideCommander, _position] call CTI_CO_FNC_GetDirTo;" \n - " _goto = [(_position select 0) - ((sin _dir_to) * _distance_structure), (_position select 1) - ((cos _dir_to) * _distance_structure), 0];" \n - "" \n - " if ((leader _sideCommander) distance _goto <= 35 && alive (leader _sideCommander)) then {" \n - " //--- Construct" \n - " (leader _sideCommander) setDir _dir_to;" \n - " _direction_structure = (_var select 4) select 0;" \n - " _direction = 0 + ((_build select 2) select 1) + _direction_structure; //todo template defines that (0)" \n - " [format [""CTI_%1_%2"", _side, _build select 0], _side, (_build select 2), _direction] call CTI_SE_FNC_BuildStructure;" \n - " " \n - " [_side, -(_build select 1)] call CTI_CO_FNC_ChangeFundsCommander;" \n - " _score = round((_build select 1) / CTI_SCORE_BUILD_VALUE_PERPOINT);" \n - " if (_score > 0) then {(leader _sideCommander) addScore _score};" \n - " " \n - " _build = [];" \n - " " \n - " //--- Next!" \n - " if (_logical_path_reached < (count _logical_path)-1) then {_logical_path_reached = _logical_path_reached + 1};" \n - " _logical_path_index = if (_logical_path_index + 1 > _logical_path_reached) then {0} else {_logical_path_index + 1};" \n - " } else {" \n - " if (time - _commander_lastmove > 35) then { (leader _sideCommander) commandMove _goto };" \n - " };" \n - " };" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - priority = 0.000000; - to="Phase_I_Commande"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Update_Defenses - { - name = "Update_Defenses"; - init = /*%FSM*/""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - priority = 0.000000; - to="Phase_I_Commande"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Update_Upgrades - { - name = "Update_Upgrades"; - init = /*%FSM*/"_upgrade = _selected_param select 0;" \n - "_upgrade_level = _selected_param select 1;" \n - "_position_commander = getPos leader( _sideCommander);" \n - "" \n - "_increment = false;" \n - "//--- Do we have a CC in range?" \n - "if ([_side, CTI_CONTROLCENTER, _position_commander, CTI_BASE_PURCHASE_UNITS_RANGE_CC] call CTI_CO_FNC_HasStructure) then {" \n - " //--- Do we have the upgrade yet?" \n - " if !([_side, _upgrade, _upgrade_level] call CTI_CO_FNC_HasUpgrade) then {" \n - " if ((_sideLogic getVariable ""cti_upgrade"") < 0) then {" \n - " _upgrades = (_side) call CTI_CO_FNC_GetSideUpgrades;" \n - " _upgrade_current = _upgrades select _upgrade;" \n - " " \n - " _upgrade_level = (missionNamespace getVariable Format[""CTI_%1_UPGRADES_LEVELS"", _side]) select _upgrade;" \n - " _upgrade_price = ((missionNamespace getVariable Format[""CTI_%1_UPGRADES_COSTS"", _side]) select _upgrade) select _upgrade_current;" \n - " " \n - " //--- The max upgrade hasn't been reached yet" \n - " if (_upgrade_current < _upgrade_level) then {" \n - " //--- We have the funds" \n - " if (_funds >= _upgrade_price) then {" \n - " [_side, -_upgrade_price] call CTI_CO_FNC_ChangeFundsCommander;" \n - " _sideLogic setVariable [""cti_upgrade"", _upgrade,true];" \n - " [_side, _upgrade, _upgrade_current] spawn CTI_SE_FNC_StartUpgrade;" \n - " " \n - " //--- Next!" \n - " if (_logical_path_reached < (count _logical_path)-1) then {_logical_path_reached = _logical_path_reached + 1};" \n - " _logical_path_index = if (_logical_path_index + 1 > _logical_path_reached) then {0} else {_logical_path_index + 1};" \n - " } else {" \n - " _increment = true;" \n - " };" \n - " } else {" \n - " _increment = true;" \n - " };" \n - " } else {" \n - " _increment = true;" \n - " };" \n - " } else {" \n - " _increment = true;" \n - " };" \n - "} else {" \n - " _increment = true;" \n - "};" \n - "" \n - "if (_increment) then {_logical_path_index = if (_logical_path_index + 1 > _logical_path_reached) then {0} else {_logical_path_index + 1}};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - priority = 0.000000; - to="Phase_I_Commande"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Update_Teams - { - name = "Update_Teams"; - init = /*%FSM*/"_commander_lastteamupdate = time;" \n - "_modifier = switch (true) do {case (_funds >= 5000): {1.25}; case (_funds >= 10000): {1.5}; case (_funds >= 20000): {1.75}; case (_funds >= 50000): {2}; default {1}};" \n - "" \n - "_structures = (_side) call CTI_CO_FNC_GetSideStructures;" \n - "" \n - "{" \n - " _funds = (_side) call CTI_CO_FNC_GetFundsCommander;" \n - " " \n - " //--- The leader is an AI and he is independent" \n - " if (!isPlayer leader _x && (_x getVariable ""cti_independent"")) then {" \n - " _lives = count (_x call CTI_CO_FNC_GetLiveUnits);" \n - " " \n - " //--- The limit hasn't been reached yet" \n - " if (_lives < CTI_AI_TEAMS_GROUPSIZE) then {" \n - " _role = _x getVariable ""cti_role"";" \n - " if !(isNil '_role') then {" \n - " _has_purchased = false;" \n - " " \n - " //--- Determine what we're deling with" \n - " _id = switch (true) do {" \n - " case (_role in (missionNamespace getVariable format[""CTI_SQUADS_%1_KIND_INFANTRY"", _side])): {0};" \n - " case (_role in (missionNamespace getVariable format[""CTI_SQUADS_%1_KIND_LIGHT"", _side])): {1};" \n - " case (_role in (missionNamespace getVariable format[""CTI_SQUADS_%1_KIND_HEAVY"", _side])): {2};" \n - " case (_role in (missionNamespace getVariable format[""CTI_SQUADS_%1_KIND_AIR"", _side])): {3};" \n - " default {0};" \n - " };" \n - " " \n - " //--- Is the factory available?" \n - " _factory = switch (_id) do {" \n - " case 0: {[CTI_BARRACKS, leader _x, _structures] call CTI_CO_FNC_GetClosestStructure};" \n - " case 1: {[CTI_LIGHT, leader _x, _structures] call CTI_CO_FNC_GetClosestStructure};" \n - " case 2: {[CTI_HEAVY, leader _x, _structures] call CTI_CO_FNC_GetClosestStructure};" \n - " case 3: {[CTI_AIR, leader _x, _structures] call CTI_CO_FNC_GetClosestStructure};" \n - " default {objNull};" \n - " };" \n - " " \n - " //--- The factory is alive and we're lucky enough!" \n - " if (alive _factory && random 100 <= (([CTI_AI_COMMANDER_BUYTO_INFANTRY, CTI_AI_COMMANDER_BUYTO_LIGHT, CTI_AI_COMMANDER_BUYTO_HEAVY, CTI_AI_COMMANDER_BUYTO_AIR] select _id) * _modifier)) then {" \n - " _var = missionNamespace getVariable format [""CTI_SQUAD_%1_%2"", _side, _role];" \n - " _cost = _var select 1;" \n - " " \n - " //--- We have enough cash to purchase the template" \n - " if (_funds >= _cost) then {" \n - " _has_purchased = true;" \n - " [_x, _side, _var select 2, _factory] call CTI_SE_FNC_AI_PurchaseSquad;" \n - " };" \n - " };" \n - " " \n - " //--- We couldn't purchase a unit set, maybe we can transfer some money if we're lucky enough?" \n - " if (!_has_purchased && random 100 <= CTI_AI_COMMANDER_TRANSFER_FUNDS_CHANCE && _funds > 2000) then {" \n - " _amount = round(([CTI_AI_COMMANDER_FUNDS_INFANTRY, CTI_AI_COMMANDER_FUNDS_LIGHT, CTI_AI_COMMANDER_FUNDS_HEAVY, CTI_AI_COMMANDER_FUNDS_AIR] select _id) * _modifier);" \n - " " \n - " if (_funds >= _amount) then {" \n - " [_side, -_amount] call CTI_CO_FNC_ChangeFundsCommander; //--- Minus for the com" \n - " [_x, _amount] call CTI_CO_FNC_ChangeFundsTeam; //--- Plus for the group" \n - " };" \n - " };" \n - " };" \n - " };" \n - " };" \n - "} forEach ((_side call CTI_CO_FNC_GetSideGroups) - [_sideCommander]);"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - priority = 0.000000; - to="Phase_I_Commande"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Update_Orders - { - name = "Update_Orders"; - init = /*%FSM*/"_role_assigned_lastcheck = time;" \n - "_defensive_teams = [];" \n - "" \n - "{" \n - " if ((_x getVariable ""cti_order"") in [CTI_ORDER_HOLDTOWNSBASE, CTI_ORDER_HOLDTOWNSBASES]) then {_defensive_teams pushback _x};" \n - "} forEach ((_side call CTI_CO_FNC_GetSideGroups) - [_sideCommander]);" \n - "" \n - "if (count _defensive_teams > 0) then { //--- Update our defenders" \n - " _towns = (_sideID) call CTI_FSM_UpdateCommander_GetMostValuedTowns;" \n - " _structures = (_side) call CTI_CO_FNC_GetSideStructures;" \n - " " \n - " if (count _towns > 0) then {" \n - " _enemyside = ([west,east] - [_side]) select 0;" \n - " _enemy_hq = (_enemyside) call CTI_CO_FNC_GetSideHQ;" \n - " _focus_list = [];" \n - " if (alive _enemy_hq) then {_focus_list pushback _enemy_hq};" \n - " _focus_list = _focus_list + (_side call CTI_CO_FNC_GetSideStructures);" \n - " if (count _focus_list < 1) then {_focus_list = [_enemy_hq]};" \n - " " \n - " _towns = [_focus_list select floor(random count _focus_list), _towns] call CTI_CO_FNC_SortByDistance;" \n - " if (count _towns > 3) then { _towns resize 3 }; //--- Don't scatter the ai too far away from the frontline" \n - " };" \n - "" \n - " {" \n - " if (count _towns > 0) then { //--- We have towns to defend boys!" \n - " _x setVariable [""cti_order_pos"", _towns select floor (random count _towns), true];" \n - " } else { //--- Maybe we can defend the CC?" \n - " _factory_nearest = [CTI_CONTROLCENTER, leader _x, _structures] call CTI_CO_FNC_GetClosestStructure;" \n - " if !(isNull _factory_nearest) then { _x setVariable [""cti_order_pos"", _factory_nearest, true]};" \n - " };" \n - " } forEach _defensive_teams;" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - priority = 0.000000; - to="Phase_I_Commande"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Determine - { - name = "Determine"; - init = /*%FSM*/"_action = """";" \n - "" \n - "//--- Start with the logical path" \n - "_path_item = _logical_path select _logical_path_index;" \n - "_selected_action = _path_item select 0;" \n - "_selected_param = _path_item select 1;" \n - "_selected_condition = _path_item select 2;" \n - "" \n - "if (call _selected_condition) then {" \n - " _action = _selected_action;" \n - "} else { //--- The condition could not be reached, skip" \n - " if (_logical_path_reached < (count _logical_path)-1) then {_logical_path_reached = _logical_path_reached + 1};" \n - " _logical_path_index = if (_logical_path_index + 1 > _logical_path_reached) then {0} else {_logical_path_index + 1};" \n - "};" \n - "" \n - "//--- Salvagers are needed?" \n - "_factory_repair = [CTI_REPAIR, leader _sideCommander, _structures] call CTI_CO_FNC_GetClosestStructure;" \n - "if !(isNull _factory_repair) then {" \n - " if (_funds >= CTI_VEHICLES_SALVAGER_PRICE && !isNull _factory_repair && count(_sideLogic getVariable ""cti_salvagers"") < CTI_VEHICLES_SALVAGE_INDEPENDENT_MAX && time - _commander_lastsalvager_addin > 300) then {_action = ""hire-salvager""};" \n - "};" \n - "" \n - "//--- The commander could not build in time" \n - "if (count _build > 0) then {if (time - _commander_buildorderstart > 240) then {_build = []}};" \n - "" \n - "//--- The commander is still building something" \n - "if (count _build > 0) then {_action = ""build-structures""};" \n - "" \n - "//--- We check the workers last" \n - "if (count (_sideLogic getVariable ""cti_workers"") < 4 && _funds >= CTI_BASE_WORKERS_PRICE) then {_action = ""hire-workers""};" \n - "" \n - ""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Structure - { - priority = 4.000000; - to="Update_Structure"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_action == ""build-structures"""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Defenses - { - priority = 3.000000; - to="Update_Defenses"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_action == ""build-defenses"""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Workers - { - priority = 2.000000; - to="Update_Workers"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_action == ""hire-workers"""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Salvagers - { - priority = 1.000000; - to="Update_Salvagers"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_action == ""hire-salvager"""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Nil - { - priority = 0.000000; - to="Skip"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Upgrade - { - priority = 0.000000; - to="Update_Upgrades"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_action == ""upgrade"""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Determine_1 - { - name = "Determine_1"; - init = /*%FSM*/"_action = """";" \n - "if !(_role_assigned) exitWith {_action = ""roles""}; //--- Assign the roles at first" \n - "if (_role_assigned && time - _role_assigned_lastcheck > 600) then {_action = ""update-orders""};" \n - "" \n - "if (_action == """" && time - _commander_lastteamupdate > CTI_AI_COMMANDER_TEAMS_UPDATE_DELAY && _funds > 12500) then {_action = ""update-teams""};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Teams - { - priority = 3.000000; - to="Update_Teams"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_action == ""update-teams"""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Orders - { - priority = 2.000000; - to="Update_Orders"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_action == ""update-orders"""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Roles - { - priority = 1.000000; - to="Set_Roles__One_Time"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_action == ""roles"""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Nil - { - priority = 0.000000; - to="Skip"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Skip - { - name = "Skip"; - init = /*%FSM*/""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - priority = 0.000000; - to="Phase_I_Commande"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Update_Workers - { - name = "Update_Workers"; - init = /*%FSM*/"[_side, true] spawn CTI_SE_FNC_CreateWorker;" \n - "[_side, -CTI_BASE_WORKERS_PRICE] call CTI_CO_FNC_ChangeFundsCommander;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - priority = 0.000000; - to="Phase_I_Commande"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Phase_II_Respawn - { - name = "Phase_II_Respawn"; - init = /*%FSM*/""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Ready - { - priority = 1.000000; - to="Phase_III_Action"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > (_sideCommander getVariable ""cti_nextrespawn"")"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Respawning - { - priority = 0.000000; - to="Skip_1"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Skip_1 - { - name = "Skip_1"; - init = /*%FSM*/""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - priority = 0.000000; - to="Phase_I_Commande"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Update_Salvagers - { - name = "Update_Salvagers"; - init = /*%FSM*/"if ((leader _sideCommander) distance _factory_repair < 40) then {" \n - " _commander_lastsalvager_addin = time;" \n - " [_side, _sideCommander, _side, format[""CTI_Salvager_Independent_%1"", _side], _factory_repair, [true, true, true, true, true], (time + random 10000 - random 500 + diag_frameno)] call CTI_SE_FNC_OnClientPurchase;" \n - "} else {" \n - " if (time - _commander_lastmove > 25) then { (leader _sideCommander) commandMove ([getPos _factory_repair, 2, 15] call CTI_CO_FNC_GetRandomPosition) };" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle - { - priority = 0.000000; - to="Phase_I_Commande"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - }; - initState="Start_FSM"; - finalStates[] = - { - "End_FSM" - }; }; /*%FSM*/ \ No newline at end of file From b25b2661f12c993f2d9afe4f1d3464a358848320 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sat, 7 Sep 2019 15:33:07 +0200 Subject: [PATCH 150/267] changed icon color for "reset crew" --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 8a29981bd..3a09b9292 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -550,7 +550,7 @@ switch (_action) do { case 39: { //OnResetDroneAI - Yoshi_E _uav = getConnectedUAV player; if (alive _uav && unitIsUAV _uav) then { - ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; + ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [1,0,0,1]; ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+_h_offset*_base_h,_base_w,_base_h]; _offset=_offset+1; From 99bb326e67113516c931d9bfe987a21422116eb6 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sat, 7 Sep 2019 16:03:27 +0200 Subject: [PATCH 151/267] #284 and fix for missing laser batteries --- Addons/Strat_mode/Functions/SM_CleanUp.sqf | 2 +- Common/Functions/Common_EquipUnit.sqf | 2 +- Server/FSM/update_commander.fsm | 5 +++-- Server/Functions/Server_InitializeGroup.sqf | 4 +++- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_CleanUp.sqf b/Addons/Strat_mode/Functions/SM_CleanUp.sqf index 76c9842c6..4834b8cd8 100644 --- a/Addons/Strat_mode/Functions/SM_CleanUp.sqf +++ b/Addons/Strat_mode/Functions/SM_CleanUp.sqf @@ -62,7 +62,7 @@ SM_CLEAN_DG= { //Exclude all town defenses, player groups, or workers if( !(_x in (["GetAllGroups",[]] call BIS_fnc_dynamicGroups)) && ("" == _x getVariable ["cti_server_group", ""]) && - ("" == _x getVariable ["cti_role_evo", ""]) && + ((_x getVariable ["cti_client_group", false]) isEqualTo true || "" == _x getVariable ["cti_role_evo", ""]) && (_x != _logic getVariable ["cti_defensive_team", grpNull]) && //((units _x) findIf {!isDamageAllowed _x} >= 0) && ((units _x) findIf {_x in (_logic getVariable ["cti_workers", []])} == -1) && diff --git a/Common/Functions/Common_EquipUnit.sqf b/Common/Functions/Common_EquipUnit.sqf index e231e3e2d..5105e9f15 100644 --- a/Common/Functions/Common_EquipUnit.sqf +++ b/Common/Functions/Common_EquipUnit.sqf @@ -72,7 +72,7 @@ if (_unit isKindOf "Man") then { //--- Binoculars are special, they can't be linked like the other items. if (((_gear select 3) select 0) select 1 != "") then {_unit addWeapon (((_gear select 3) select 0) select 1)}; - if ( (toLower (((_gear select 3) select 0) select 1)) in ["laserdesignator","laserdesignator_02", "Laserdesignator_02_ghex_F", "Laserdesignator_01_khk_F"] && ! isnull (uniformContainer _unit)) then { (uniformContainer _unit) addItemCargoGlobal ["Laserbatteries",1]} ; + if ( (toLower (((_gear select 3) select 0) select 1)) in ["laserdesignator", "laserdesignator_02", "laserdesignator_02_ghex_f", "laserdesignator_01_khk_f"] && ! isnull (uniformContainer _unit)) then { (uniformContainer _unit) addItemCargoGlobal ["Laserbatteries",1]} ; //--- [Weapons check-in] //--- Primary diff --git a/Server/FSM/update_commander.fsm b/Server/FSM/update_commander.fsm index 99d3ca9bf..737a23688 100644 --- a/Server/FSM/update_commander.fsm +++ b/Server/FSM/update_commander.fsm @@ -87,7 +87,7 @@ link45[] = {34,1}; link46[] = {35,36}; link47[] = {36,19}; globals[] = {0.000000,0,0,0,0,640,480,1,223,6316128,1,-382.509674,787.605042,926.103088,57.078770,554,609,1}; -window[] = {0,-1,-1,-1,-1,899,283,1744,118,1,572}; +window[] = {0,-1,-1,-1,-1,989,208,1669,208,1,572}; *//*%FSM*/ class FSM { @@ -283,6 +283,8 @@ class FSM "for '_j' from _teams_count-1 to 0 step -1 do {" \n " _group = _teams select _j;" \n " if(!(isMultiplayer && isPlayer (_group getVariable [""bis_dg_cre"", objNull]))) then {" \n + " _group setVariable [""cti_client_group"", true];" \n + " };" \n " _last_assigned = _assigned;" \n " while { _ratio_air > 0 && _assigned == _last_assigned} do {" \n " _group setVariable [""cti_role_evo"", ""Air""];" \n @@ -311,7 +313,6 @@ class FSM " if !(isNil '_category') then { [_category, _group, _side, _teams] call CTI_FSM_UpdateCommander_SetAIRole };" \n " " \n " diag_log format [""DEBUG TEAM SET: %1 %2 %3"", _group, _group getVariable ""cti_role_evo"", _group getVariable ""cti_role""];" \n - " };" \n "};" \n "" \n "//--- Assign Take Hold randomly" \n diff --git a/Server/Functions/Server_InitializeGroup.sqf b/Server/Functions/Server_InitializeGroup.sqf index a5f8c0821..fa7b8d671 100644 --- a/Server/Functions/Server_InitializeGroup.sqf +++ b/Server/Functions/Server_InitializeGroup.sqf @@ -28,7 +28,9 @@ _team = _this select 0; _side = _this select 1; _players=_this select 2; _side_logic=_side call CTI_CO_FNC_GetSideLogic; - +if(isMultiplayer && isPlayer (_group getVariable ["bis_dg_cre", objNull])) then { + _team setVariable ["cti_client_group", true]; +}; if (isNil {_team getVariable "cti_role_evo"}) then {_team setVariable ["cti_role_evo", "Infantry"]}; //--- Evolutive role if (isNil {_team getVariable "cti_order"}) then {_team setVariable ["cti_order", CTI_ORDER_TAKETOWNS, true]}; From 6d13579d2dbef7afe66ff0bdb078fabd76b63ae9 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Wed, 11 Sep 2019 17:48:52 +0200 Subject: [PATCH 152/267] Anti - Explosion script --- .../Client_OnPurchaseOrderReceived.sqf | 4 +-- Common/Functions/Common_CreateVehicle.sqf | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/Client/Functions/Client_OnPurchaseOrderReceived.sqf b/Client/Functions/Client_OnPurchaseOrderReceived.sqf index 2da49c558..90f9d0b0d 100644 --- a/Client/Functions/Client_OnPurchaseOrderReceived.sqf +++ b/Client/Functions/Client_OnPurchaseOrderReceived.sqf @@ -152,7 +152,7 @@ if (_model isKindOf "Man") then { _group = _this select 1; _cost = _this select 2; _var_classname = _this select 3; - sleep(15); + sleep(10); if(!alive _veh) then { //delete wreck & refound cash deleteVehicle _veh; @@ -161,7 +161,7 @@ if (_model isKindOf "Man") then { }; }; - if (_veh_infos select 0 || _veh_infos select 1 || _veh_infos select 2 || _veh_infos select 3) then { //--- Not empty. + if (alive _vehicle && (_veh_infos select 0 || _veh_infos select 1 || _veh_infos select 2 || _veh_infos select 3)) then { //--- Not empty. _crew = switch (true) do { case (_model isKindOf "Tank"): {"Crew"}; case (_model isKindOf "Air"): {"Pilot"}; default {"Soldier"}}; _crew = missionNamespace getVariable format["CTI_%1_%2", CTI_P_SideJoined, _crew]; diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index 09b1e00c3..4151de2b1 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -19,6 +19,7 @@ 5 {Optionnal} [Boolean]: Determine if the vehicle should be "public" or not 6 {Optionnal} [Boolean]: Determine if the vehicle should be handled upon destruction or not (bounty...tk...) 7 {Optionnal} [String]: Set a special spawn mode for the vehicle + 8 {Optionnal} [Object]: Vehicle if already create # RETURNED VALUE # [Object]: The created vehicle @@ -45,6 +46,7 @@ */ private ["_direction", "_handle", "_locked", "_net", "_position", "_side", "_special", "_type", "_vehicle"]; +#define MAX_SPAWN_ATTEMPTS 3 _type = _this select 0; _position = _this select 1; @@ -60,8 +62,36 @@ if (typeName _position == "OBJECT") then {_position = getPos _position}; if (typeName _side == "SIDE") then {_side = (_side) call CTI_CO_FNC_GetSideID}; + _vehicle = if ( isNull _created) then {createVehicle [_type, _position, [], 7, _special]} else {_created}; +_handle_fail_spawns = { + params ["_unit"]; + //TODO check if shot, and if yes do nothing + if(damage _unit > 0.9) then { + if(_unit getVariable ["cti_gc_noremove", false] isEqualTo false) then { + { + if(isPlayer (_x select 0)) then {moveOut (_x select 0);} else {deleteVehicle (_x select 0);}; + } forEach (fullCrew _unit); + deleteVehicle _unit; + }; + } else { + _unit setDammage 0; + }; +}; + + +//Ensures the vehicle spawns correctly. +_EH_Dammaged = _vehicle addEventHandler ["Dammaged", _handle_fail_spawns]; +_EH_Killed = _vehicle addEventHandler ["Killed", _handle_fail_spawns]; + +[_vehicle, _EH_Dammaged, _EH_Killed] spawn { + params ["_vehicle", "_EH_Dammaged", "_EH_Killed"]; + sleep(5); + _vehicle removeEventHandler ["Dammaged", _EH_Dammaged]; + _vehicle removeEventHandler ["Killed", _EH_Killed]; +}; + // henroth air loadout //Does a gun config exsist? From b8f66e18f82cf2309e2b7fdc5a229531e1d582a7 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Wed, 11 Sep 2019 22:43:43 +0200 Subject: [PATCH 153/267] Enhanced anti explosion script #292 --- .../Client_OnPurchaseOrderReceived.sqf | 2 +- Common/Functions/Common_CreateVehicle.sqf | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Client/Functions/Client_OnPurchaseOrderReceived.sqf b/Client/Functions/Client_OnPurchaseOrderReceived.sqf index 90f9d0b0d..e9adc60ff 100644 --- a/Client/Functions/Client_OnPurchaseOrderReceived.sqf +++ b/Client/Functions/Client_OnPurchaseOrderReceived.sqf @@ -160,7 +160,7 @@ if (_model isKindOf "Man") then { hint parseText format [localize "STR_OnPurchase_RefundUnit", _var_classname select CTI_UNIT_LABEL]; }; }; - + sleep(1); //Wait for the vehicle to spawn correctly (or die on spawn) if (alive _vehicle && (_veh_infos select 0 || _veh_infos select 1 || _veh_infos select 2 || _veh_infos select 3)) then { //--- Not empty. _crew = switch (true) do { case (_model isKindOf "Tank"): {"Crew"}; case (_model isKindOf "Air"): {"Pilot"}; default {"Soldier"}}; _crew = missionNamespace getVariable format["CTI_%1_%2", CTI_P_SideJoined, _crew]; diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index 4151de2b1..edf14a158 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -46,7 +46,6 @@ */ private ["_direction", "_handle", "_locked", "_net", "_position", "_side", "_special", "_type", "_vehicle"]; -#define MAX_SPAWN_ATTEMPTS 3 _type = _this select 0; _position = _this select 1; @@ -64,6 +63,7 @@ if (typeName _side == "SIDE") then {_side = (_side) call CTI_CO_FNC_GetSideID}; _vehicle = if ( isNull _created) then {createVehicle [_type, _position, [], 7, _special]} else {_created}; +_vehicle setVariable ["_spawn_location", _position]; _handle_fail_spawns = { params ["_unit"]; @@ -77,6 +77,9 @@ _handle_fail_spawns = { }; } else { _unit setDammage 0; + { + (_x select 0) setDammage 0; + } forEach (fullCrew _unit); }; }; @@ -87,7 +90,18 @@ _EH_Killed = _vehicle addEventHandler ["Killed", _handle_fail_spawns]; [_vehicle, _EH_Dammaged, _EH_Killed] spawn { params ["_vehicle", "_EH_Dammaged", "_EH_Killed"]; - sleep(5); + sleep(1); + //Check if vehicle flew away after spawn (due to physics glitching) + if(!(_vehicle isKindOf "Air")) then { + _pos = _vehicle getVariable ["_spawn_location", [0,0,0]]; + if(_pos distance (getPos _vehicle) > 500) then { + { + if(isPlayer (_x select 0)) then {moveOut (_x select 0);} else {deleteVehicle (_x select 0);}; + } forEach (fullCrew _vehicle); + deleteVehicle _vehicle; + }; + }; + sleep(2); _vehicle removeEventHandler ["Dammaged", _EH_Dammaged]; _vehicle removeEventHandler ["Killed", _EH_Killed]; }; From 4f80dc68310e6cf9e53f2d9b35d850848d918dc2 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sat, 21 Sep 2019 19:44:07 +0200 Subject: [PATCH 154/267] corrected variable order for HQ #292 --- Addons/Strat_mode/SLING_AUG/SA_pack.sqf | 2 +- Addons/Strat_mode/SLING_AUG/SA_unpack.sqf | 4 ++-- Common/Functions/Common_CreateVehicle.sqf | 4 +++- Server/Functions/Server_OnHQDestroyed.sqf | 2 +- Server/Functions/Server_RepairHQ.sqf | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Addons/Strat_mode/SLING_AUG/SA_pack.sqf b/Addons/Strat_mode/SLING_AUG/SA_pack.sqf index e24064048..7df131cb7 100644 --- a/Addons/Strat_mode/SLING_AUG/SA_pack.sqf +++ b/Addons/Strat_mode/SLING_AUG/SA_pack.sqf @@ -25,7 +25,7 @@ _target allowdamage false; -_packobject=[_pack, _initial_pos, _initial_dir, CTI_P_sideJoined, false, true, false, "CAN_COLLIDE"] call CTI_CO_FNC_CreateVehicle; +_packobject=[_pack, _initial_pos, _initial_dir, CTI_P_sideJoined, false, true, false, "CAN_COLLIDE", objNull, false] call CTI_CO_FNC_CreateVehicle; clearBackpackCargoGlobal _packobject; clearMagazineCargoGlobal _packobject; diff --git a/Addons/Strat_mode/SLING_AUG/SA_unpack.sqf b/Addons/Strat_mode/SLING_AUG/SA_unpack.sqf index 6f7b4060e..b7d798c90 100644 --- a/Addons/Strat_mode/SLING_AUG/SA_unpack.sqf +++ b/Addons/Strat_mode/SLING_AUG/SA_unpack.sqf @@ -21,9 +21,9 @@ if (_target == ((CTI_P_SideJoined) call CTI_CO_FNC_GetSideHQ)) then { waitUntil {isNull _target}; if ((_initial_pos select 2) <0) then { - _hq = [missionNamespace getVariable Format["CTI_%1_HQ", _side], _initial_pos, _initial_dir, _side, true, true,false, "CAN_COLLIDE"] call CTI_CO_FNC_CreateVehicle; //if underwatter + _hq = [missionNamespace getVariable Format["CTI_%1_HQ", _side], _initial_pos, _initial_dir, _side, true, true,false, "CAN_COLLIDE", objNull, false] call CTI_CO_FNC_CreateVehicle; //if underwatter } else { - _hq = [missionNamespace getVariable Format["CTI_%1_HQ", _side], _initial_pos, _initial_dir, _side, true, true,false, "FORM"] call CTI_CO_FNC_CreateVehicle; // if on ground + _hq = [missionNamespace getVariable Format["CTI_%1_HQ", _side], _initial_pos, _initial_dir, _side, true, true,false, "FORM", objNull, false] call CTI_CO_FNC_CreateVehicle; // if on ground }; _hq allowdamage false; _hq setVariable ["cti_gc_noremove", true,true]; //--- HQ wreck cannot be removed nor salvaged diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index edf14a158..13b2ae28e 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -20,6 +20,7 @@ 6 {Optionnal} [Boolean]: Determine if the vehicle should be handled upon destruction or not (bounty...tk...) 7 {Optionnal} [String]: Set a special spawn mode for the vehicle 8 {Optionnal} [Object]: Vehicle if already create + 9 {Optionnal} [Boolean]: Vehicle can be deleted # RETURNED VALUE # [Object]: The created vehicle @@ -56,6 +57,7 @@ _net = if (count _this > 5) then {_this select 5} else {false}; _handle = if (count _this > 6) then {_this select 6} else {false}; _special = if (count _this > 7) then {_this select 7} else {"FORM"}; _created = if (count _this > 8) then {_this select 8} else {objNull}; +_can_be_removed = if (count _this > 9) then {_this select 9} else {true}; _t_side=if (typeName _side == "SCALAR") then {(_side call CTI_CO_FNC_GetSideFromID)} else {_side}; if (typeName _position == "OBJECT") then {_position = getPos _position}; if (typeName _side == "SIDE") then {_side = (_side) call CTI_CO_FNC_GetSideID}; @@ -64,7 +66,7 @@ if (typeName _side == "SIDE") then {_side = (_side) call CTI_CO_FNC_GetSideID}; _vehicle = if ( isNull _created) then {createVehicle [_type, _position, [], 7, _special]} else {_created}; _vehicle setVariable ["_spawn_location", _position]; - +if(!_can_be_removed) then {_vehicle setVariable ["cti_gc_noremove", true,true]}; _handle_fail_spawns = { params ["_unit"]; //TODO check if shot, and if yes do nothing diff --git a/Server/Functions/Server_OnHQDestroyed.sqf b/Server/Functions/Server_OnHQDestroyed.sqf index a238009af..d70d86789 100644 --- a/Server/Functions/Server_OnHQDestroyed.sqf +++ b/Server/Functions/Server_OnHQDestroyed.sqf @@ -44,7 +44,7 @@ if (((_this select 0) isKindOf "Pod_Heli_Transport_04_base_F") ||((_this select _side = _target getVariable "cti_occupant"; deletevehicle _target; waitUntil {isNull _target}; - _hq = [missionNamespace getVariable Format["CTI_%1_HQ", _side], _initial_pos, _initial_dir, _side, true, true,false, "CAN_COLLIDE"] call CTI_CO_FNC_CreateVehicle; + _hq = [missionNamespace getVariable Format["CTI_%1_HQ", _side], _initial_pos, _initial_dir, _side, true, true,false, "CAN_COLLIDE", objNull, false] call CTI_CO_FNC_CreateVehicle; _hq setVariable ["cti_gc_noremove", true,true]; //--- HQ wreck cannot be removed nor salvaged _hq setVariable ["cti_ai_prohib", true,true]; //--- HQ may not be used by AI as a commandable vehicle //_hq addEventHandler ["getIn", {_this spawn CTI_CO_FNC_OnUnitGetOut}]; diff --git a/Server/Functions/Server_RepairHQ.sqf b/Server/Functions/Server_RepairHQ.sqf index 00ef865dc..459b2cb65 100644 --- a/Server/Functions/Server_RepairHQ.sqf +++ b/Server/Functions/Server_RepairHQ.sqf @@ -54,7 +54,7 @@ _position = _ep; if (alive _hq_wreck) exitWith {}; deleteVehicle _hq_wreck; -_hq = [missionNamespace getVariable Format["CTI_%1_HQ", _side], _position, _direction, _side, true, false] call CTI_CO_FNC_CreateVehicle; +_hq = [missionNamespace getVariable Format["CTI_%1_HQ", _side], _position, _direction, _side, true, false, false, "FORM", objNull, false] call CTI_CO_FNC_CreateVehicle; _hq setVariable ["cti_gc_noremove", true]; //--- HQ wreck cannot be removed nor salvaged _hq setVariable ["cti_ai_prohib", true]; //--- HQ may not be used by AI as a commandable vehicle _hq addEventHandler ["getIn", {_this spawn CTI_CO_FNC_OnUnitGetOut}]; From afbb4a53ec295addf556c089de8251575f08e180 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Tue, 24 Sep 2019 18:58:02 +0200 Subject: [PATCH 155/267] Added HQ to logging. Added Error msg for failed client connections --- Server/Functions/Server_OnPlayerConnected.sqf | 6 +----- Server/Init/Init_Server.sqf | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Server/Functions/Server_OnPlayerConnected.sqf b/Server/Functions/Server_OnPlayerConnected.sqf index 35f9f2b37..243c9c580 100644 --- a/Server/Functions/Server_OnPlayerConnected.sqf +++ b/Server/Functions/Server_OnPlayerConnected.sqf @@ -49,14 +49,10 @@ while {isNull _unit && !((side _unit) in [east,west]) && _try <10} do { }; } forEach allPlayers; // allUnits + allDead - - ["INFORMATION", "FILE: Server\Functions\Server_OnPlayerConnected.sqf", format["Unit for [%1] found : [%2] ",_uid,_unit]] call CTI_CO_FNC_Log; _try=_try+1; - - //if (CTI_Log_Level >= CTI_Log_Information) then {["INFORMATION", "FILE: Server\Functions\Server_OnPlayerConnected.sqf", format["Unit for [%1] found : [%2] ",_uid,_unit]] call CTI_CO_FNC_Log}; }; - +if (_try >=10) then {["ERROR", "FILE: Server\Functions\Server_OnPlayerConnected.sqf", format["Failed to locate player: uid: '%1' name: '%2' id: '%3' unit: '%4' side: '%5'", _uid, _name, _id, _unit, side _unit]] call CTI_CO_FNC_Log;}; if (_try >=10) exitWith {false}; diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index 3cc5e7254..64b059c7c 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -314,15 +314,17 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { //Logging of varius values 0 spawn { sleep 100; //wait for everything to finish loading - _version = 3; //version of DiscordBot logReader + _version = 4; //version of DiscordBot logReader _arr = [["CTI_DataPacket", "Header"], ["Version", _version], ["Map", worldName] ]; diag_log _arr; + + _east_sl = (east) call CTI_CO_FNC_GetSideLogic; + _west_sl = (west) call CTI_CO_FNC_GetSideLogic; while {!CTI_GameOver} do { - _east_sl = (east) call CTI_CO_FNC_GetSideLogic; - _west_sl = (west) call CTI_CO_FNC_GetSideLogic; + _towns = count(_east_sl getVariable ["CTI_ACTIVE",[]]) + count(_west_sl getVariable ["CTI_ACTIVE",[]]); //build player array, splitting at 800 to ensure char limit of 1000 is not reached @@ -374,7 +376,15 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { ["players", _x]]; _dataP = _dataP+1; } forEach _players; - + + //Logging more detailed data about team + _east_hq = ((east) call CTI_CO_FNC_GetSideHQ); + _west_hq = ((west) call CTI_CO_FNC_GetSideHQ); + diag_log[["CTI_DataPacket", format ["Data_%1", _dataP]], + ["hq_east", [getPos _east_hq, alive _east_hq]], + ["hq_west", [getPos _west_hq, alive _west_hq]]]; + _dataP = _dataP+1; + diag_log[["CTI_DataPacket", format ["Data_EOD_%1", _dataP]], //Marking package as "last" ["bases_east", _east_sl getVariable ["cti_structures_areas",[]]], ["bases_west", _west_sl getVariable ["cti_structures_areas",[]]], From 85ea09155133ac12b576cba97a339e1012271129 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Wed, 25 Sep 2019 14:35:56 +0200 Subject: [PATCH 156/267] Added new paramters: Remove heavy vehicles & equipment --- Common/Config/Factories/Factory_East.sqf | 32 ++++++++++++++++++++++-- Common/Config/Factories/Factory_West.sqf | 28 ++++++++++++++++++++- Common/Config/Gear/Gear_East.sqf | 5 ++-- Common/Config/Gear/Gear_West.sqf | 6 ++--- Common/Config/Towns/Towns_East.sqf | 14 ++++++++--- Common/Config/Towns/Towns_Resistance.sqf | 15 ++++++++--- Common/Config/Towns/Towns_West.sqf | 14 ++++++++--- Common/Init/Init_CommonConstants.sqf | 2 ++ Rsc/Parameters.hpp | 18 ++++++++++--- stringtable.xml | 14 ++++++++--- 10 files changed, 125 insertions(+), 23 deletions(-) diff --git a/Common/Config/Factories/Factory_East.sqf b/Common/Config/Factories/Factory_East.sqf index e21693765..9196b5daa 100644 --- a/Common/Config/Factories/Factory_East.sqf +++ b/Common/Config/Factories/Factory_East.sqf @@ -122,7 +122,7 @@ _u = _u + ['C_Hatchback_01_sport_F']; _u = _u + ['C_Kart_01_F']; _u = _u + ['I_Truck_02_MRL_F']; missionNamespace setVariable [format ["CTI_%1_%2Units", _side, CTI_LIGHT], _u]; - +if(CTI_SHOPS_HEAVY==1) then { _u = ["O_APC_Tracked_02_cannon_F"]; _u = _u + ['O_APC_Wheeled_02_rcws_v2_F']; _u = _u + ["O_MBT_02_cannon_F"]; @@ -137,8 +137,14 @@ _u = _u + ['I_LT_01_cannon_F']; _u = _u + ['I_LT_01_AA_F']; _u = _u + ['I_LT_01_AT_F']; _u = _u + ['I_MBT_03_cannon_F']; +} else { +_u = ['I_LT_01_scout_F']; +_u = _u + ['I_LT_01_cannon_F']; +_u = _u + ['I_LT_01_AA_F']; +_u = _u + ['I_LT_01_AT_F']; +}; missionNamespace setVariable [format ["CTI_%1_%2Units", _side, CTI_HEAVY], _u]; - +if(CTI_SHOPS_HEAVY==1) then { _u = ['O_Heli_Light_02_unarmed_F']; _u = _u + ['O_Heli_Transport_04_F']; _u = _u + ['C_Heli_Light_01_civil_F']; @@ -167,6 +173,28 @@ _u = _u + ['Land_Pod_Heli_Transport_04_medevac_F']; _u = _u + ['Land_Pod_Heli_Transport_04_covered_F']; _u = _u + ['Land_Pod_Heli_Transport_04_bench_F']; _u = _u + ['Land_Device_slingloadable_F']; +} else { +_u = ['O_Heli_Light_02_unarmed_F']; +_u = _u + ['O_Heli_Transport_04_F']; +_u = _u + ['C_Heli_Light_01_civil_F']; +_u = _u + ['C_Plane_Civil_01_F']; +_u = _u + ['O_Heli_Transport_04_bench_F']; +_u = _u + ['O_Heli_Transport_04_covered_F']; +_u = _u + ['O_Heli_Light_02_dynamicLoadout_F']; +_u = _u + ['O_Heli_Attack_02_dynamicLoadout_F']; +_u = _u + ['O_Heli_Attack_02_dynamicLoadout_black_F']; +_u = _u + ['O_T_VTOL_02_infantry_dynamicLoadout_F']; +_u = _u + ['O_T_VTOL_02_vehicle_dynamicLoadout_F']; +_u = _u + ['O_UAV_02_F']; +_u = _u + ['O_UAV_02_CAS_F']; +_u = _u + ['O_UAV_02_dynamicLoadout_F']; +_u = _u + ['O_Plane_CAS_02_dynamicLoadout_F']; +_u = _u + ['I_Plane_Fighter_03_CAS_F']; +_u = _u + ['Land_Pod_Heli_Transport_04_medevac_F']; +_u = _u + ['Land_Pod_Heli_Transport_04_covered_F']; +_u = _u + ['Land_Pod_Heli_Transport_04_bench_F']; +_u = _u + ['Land_Device_slingloadable_F']; +}; missionNamespace setVariable [format ["CTI_%1_%2Units", _side, CTI_AIR], _u]; _u = ["O_Truck_02_box_F"]; diff --git a/Common/Config/Factories/Factory_West.sqf b/Common/Config/Factories/Factory_West.sqf index 7d4bcfdad..00c4eef3f 100644 --- a/Common/Config/Factories/Factory_West.sqf +++ b/Common/Config/Factories/Factory_West.sqf @@ -111,7 +111,7 @@ _u = _u + ['C_Kart_01_F']; _u = _u + ['I_Truck_02_MRL_F']; missionNamespace setVariable [format ["CTI_%1_%2Units", _side, CTI_LIGHT], _u]; - +if(CTI_SHOPS_HEAVY==1) then { _u = ["B_APC_Tracked_01_rcws_F"]; _u = _u + ["B_APC_Wheeled_01_cannon_F"]; _u = _u + ["B_AFV_Wheeled_01_cannon_F"]; @@ -128,8 +128,15 @@ _u = _u + ['I_LT_01_cannon_F']; _u = _u + ['I_LT_01_AA_F']; _u = _u + ['I_LT_01_AT_F']; _u = _u + ['I_MBT_03_cannon_F']; +} else { +_u = ['I_LT_01_scout_F']; +_u = _u + ['I_LT_01_cannon_F']; +_u = _u + ['I_LT_01_AA_F']; +_u = _u + ['I_LT_01_AT_F']; +}; missionNamespace setVariable [format ["CTI_%1_%2Units", _side, CTI_HEAVY], _u]; +if(CTI_SHOPS_HEAVY==1) then { _u = ["B_Heli_Light_01_dynamicLoadout_F"]; _u = _u + ['C_Plane_Civil_01_F']; _u = _u + ["B_T_VTOL_01_infantry_F"]; @@ -156,6 +163,25 @@ _u = _u + ['I_Plane_Fighter_03_CAS_F']; _u = _u + ['I_Plane_Fighter_04_F']; _u = _u + ['B_Slingload_01_Medevac_F']; _u = _u + ['Land_Device_slingloadable_F']; +} else { +_u = ["B_Heli_Light_01_dynamicLoadout_F"]; +_u = _u + ['C_Plane_Civil_01_F']; +_u = _u + ["B_T_VTOL_01_infantry_F"]; +_u = _u + ["B_T_VTOL_01_vehicle_F"]; +_u = _u + ["B_T_VTOL_01_armed_F"]; +_u = _u + ["B_Heli_Transport_01_F"]; +_u = _u + ["B_Heli_Transport_03_unarmed_F"]; +_u = _u + ["B_Heli_Transport_03_F"]; +_u = _u + ["B_Heli_Light_01_F"]; +_u = _u + ["B_Heli_Attack_01_dynamicLoadout_F"]; +_u = _u + ["B_UAV_02_F"]; +_u = _u + ["B_UAV_02_CAS_F"]; +_u = _u + ["B_UAV_02_dynamicLoadout_F"]; +_u = _u + ["B_Plane_CAS_01_dynamicLoadout_F"]; +_u = _u + ['I_Plane_Fighter_03_CAS_F']; +_u = _u + ['B_Slingload_01_Medevac_F']; +_u = _u + ['Land_Device_slingloadable_F']; +}; missionNamespace setVariable [format ["CTI_%1_%2Units", _side, CTI_AIR], _u]; _u = ["B_Truck_01_Repair_F"]; diff --git a/Common/Config/Gear/Gear_East.sqf b/Common/Config/Gear/Gear_East.sqf index f1ad47a02..b7e902987 100644 --- a/Common/Config/Gear/Gear_East.sqf +++ b/Common/Config/Gear/Gear_East.sqf @@ -833,6 +833,7 @@ _u = _u + [1]; _p = _p + [100]; //Backpacks +if(CTI_SHOPS_HEAVY==1) then { _i = _i + ["B_Bergen_dgtl_F"]; _u = _u + [3]; _p = _p + [500]; @@ -840,7 +841,7 @@ _p = _p + [500]; _i = _i + ["B_Bergen_hex_F"]; _u = _u + [3]; _p = _p + [500]; - +}; _i = _i + ["B_Carryall_cbr"]; _u = _u + [3]; _p = _p + [200]; @@ -933,7 +934,7 @@ _i = _i + ["B_ViperLightHarness_oli_F"]; _u = _u + [2]; _p = _p + [100]; -if (ISLAND != 1) then { +if (ISLAND != 1 && CTI_SHOPS_HEAVY==1) then { _i = _i + ["O_Mortar_01_support_F"]; _u = _u + [3]; _p = _p + [5]; diff --git a/Common/Config/Gear/Gear_West.sqf b/Common/Config/Gear/Gear_West.sqf index 6dff430ab..922445d1a 100644 --- a/Common/Config/Gear/Gear_West.sqf +++ b/Common/Config/Gear/Gear_West.sqf @@ -1111,7 +1111,7 @@ _p = _p + [150]; _i = _i + ["B_Carryall_oli"]; _u = _u + [3]; _p = _p + [150]; - +if(CTI_SHOPS_HEAVY==1) then { _i = _i + ["B_Bergen_mcamo_F"]; _u = _u + [3]; _p = _p + [1000]; @@ -1119,7 +1119,7 @@ _p = _p + [1000]; _i = _i + ["B_Bergen_tna_F"]; _u = _u + [3]; _p = _p + [1000]; - +}; _i = _i + ["B_UAV_01_backpack_F"]; _u = _u + [3]; _p = _p + [2500]; @@ -1156,7 +1156,7 @@ _i = _i + ["B_Static_Designator_01_weapon_F"]; _u = _u + [2]; _p = _p + [5000]; -if (ISLAND != 1) then { +if (ISLAND != 1 && CTI_SHOPS_HEAVY==1) then { _i = _i + ["B_Mortar_01_support_F"]; _u = _u + [3]; _p = _p + [5]; diff --git a/Common/Config/Towns/Towns_East.sqf b/Common/Config/Towns/Towns_East.sqf index 98916d18d..2623cc542 100644 --- a/Common/Config/Towns/Towns_East.sqf +++ b/Common/Config/Towns/Towns_East.sqf @@ -41,9 +41,17 @@ with missionNamespace do { EAST_VEHICLE_MOTORIZED = EAST_MOTORIZED_MG + [EAST_MOTORIZED_GL] + [EAST_MOTORIZED_AT]; //--- Vehicles - Mixed - EAST_VEHICLES_AA_LIGHT = EAST_VEHICLE_AA; // EAST_VEHICLES_LIGHT = EAST_VEHICLE_MECHANIZED + EAST_VEHICLE_MOTORIZED; EAST_VEHICLES_LIGHT = EAST_VEHICLE_MOTORIZED; - EAST_VEHICLES_MEDIUM = EAST_VEHICLE_APC + EAST_VEHICLE_ARMORED_LIGHT; - EAST_VEHICLES_HEAVY = EAST_VEHICLE_ARMORED_LIGHT; + + if(CTI_TOWNS_RESISTANCE_HEAVY==1) then { + EAST_VEHICLES_AA_LIGHT = EAST_VEHICLE_AA; + EAST_VEHICLES_MEDIUM = EAST_VEHICLE_APC + EAST_VEHICLE_ARMORED_LIGHT; + EAST_VEHICLES_HEAVY = EAST_VEHICLE_ARMORED_LIGHT; + } + else { + EAST_VEHICLES_AA_LIGHT = EAST_VEHICLE_MOTORIZED; + EAST_VEHICLES_MEDIUM = EAST_VEHICLE_MOTORIZED; + EAST_VEHICLES_HEAVY = EAST_VEHICLE_MOTORIZED; + }; }; \ No newline at end of file diff --git a/Common/Config/Towns/Towns_Resistance.sqf b/Common/Config/Towns/Towns_Resistance.sqf index ed057f3ac..8821ac223 100644 --- a/Common/Config/Towns/Towns_Resistance.sqf +++ b/Common/Config/Towns/Towns_Resistance.sqf @@ -38,7 +38,16 @@ with missionNamespace do { //--- Vehicles - Mixed GUER_VEHICLES_LIGHT = GUER_VEHICLE_MOTORIZED; - GUER_VEHICLES_MEDIUM = GUER_VEHICLE_ARMORED_LIGHT; - GUER_VEHICLES_HEAVY = GUER_VEHICLE_ARMORED_HEAVY; - GUER_VEHICLES_PATROL = GUER_VEHICLES_MEDIUM + GUER_VEHICLES_HEAVY; + + if(CTI_TOWNS_RESISTANCE_HEAVY==1) then { + GUER_VEHICLES_MEDIUM = GUER_VEHICLE_ARMORED_LIGHT; + GUER_VEHICLES_HEAVY = GUER_VEHICLE_ARMORED_HEAVY; + GUER_VEHICLES_PATROL = GUER_VEHICLES_MEDIUM + GUER_VEHICLES_HEAVY; + } + else { + GUER_VEHICLES_MEDIUM = GUER_VEHICLE_MOTORIZED; + GUER_VEHICLES_HEAVY = GUER_VEHICLE_MOTORIZED; + GUER_VEHICLES_PATROL = GUER_VEHICLE_MOTORIZED; + }; + }; \ No newline at end of file diff --git a/Common/Config/Towns/Towns_West.sqf b/Common/Config/Towns/Towns_West.sqf index 383f6c676..868a11d0a 100644 --- a/Common/Config/Towns/Towns_West.sqf +++ b/Common/Config/Towns/Towns_West.sqf @@ -41,9 +41,17 @@ with missionNamespace do { WEST_VEHICLE_MOTORIZED = WEST_MOTORIZED_MG + [WEST_MOTORIZED_GL] + [WEST_MOTORIZED_AT]; //--- Vehicles - Mixed - WEST_VEHICLES_AA_LIGHT = WEST_VEHICLE_AA; + // WEST_VEHICLES_LIGHT = WEST_VEHICLE_MECHANIZED + WEST_VEHICLE_MOTORIZED; WEST_VEHICLES_LIGHT = WEST_VEHICLE_MOTORIZED; - WEST_VEHICLES_MEDIUM = WEST_VEHICLE_APC + WEST_VEHICLE_ARMORED_LIGHT; - WEST_VEHICLES_HEAVY = WEST_VEHICLE_ARMORED_LIGHT; + if(CTI_TOWNS_RESISTANCE_HEAVY==1) then { + WEST_VEHICLES_AA_LIGHT = WEST_VEHICLE_AA; + WEST_VEHICLES_MEDIUM = WEST_VEHICLE_APC + WEST_VEHICLE_ARMORED_LIGHT; + WEST_VEHICLES_HEAVY = WEST_VEHICLE_ARMORED_LIGHT; + } + else { + WEST_VEHICLES_AA_LIGHT = WEST_VEHICLE_MOTORIZED; + WEST_VEHICLES_MEDIUM = WEST_VEHICLE_MOTORIZED; + WEST_VEHICLES_HEAVY = WEST_VEHICLE_MOTORIZED; + }; }; \ No newline at end of file diff --git a/Common/Init/Init_CommonConstants.sqf b/Common/Init/Init_CommonConstants.sqf index 72c7dac61..c307a0bc7 100644 --- a/Common/Init/Init_CommonConstants.sqf +++ b/Common/Init/Init_CommonConstants.sqf @@ -356,6 +356,8 @@ with missionNamespace do { if (isNil 'CTI_TOWNS_RESISTANCE_DETECTION_RANGE') then {CTI_TOWNS_RESISTANCE_DETECTION_RANGE = 800};//Done if (isNil 'CTI_TOWNS_RESISTANCE_GROUPS_RATIO') then {CTI_TOWNS_RESISTANCE_GROUPS_RATIO = 50};//Done if (isNil 'CTI_TOWNS_RESISTANCE_INACTIVE_MAX') then {CTI_TOWNS_RESISTANCE_INACTIVE_MAX = 30};//Done + if (isNil 'CTI_TOWNS_RESISTANCE_HEAVY') then {CTI_TOWNS_RESISTANCE_HEAVY = 1};//Done + if (isNil 'CTI_SHOPS_HEAVY') then {CTI_SHOPS_HEAVY = 1};//Done if (isNil 'CTI_TOWNS_INCOME_RATIO') then {CTI_TOWNS_INCOME_RATIO = 2}; if (isNil 'CTI_TOWNS_CAPURE_RATIO') then {CTI_TOWNS_CAPURE_RATIO = 5}; }; diff --git a/Rsc/Parameters.hpp b/Rsc/Parameters.hpp index ac9e5bc1b..cb8d1bbf7 100644 --- a/Rsc/Parameters.hpp +++ b/Rsc/Parameters.hpp @@ -275,8 +275,8 @@ class Params { class CTI_PLAYERS_GROUPSIZE { title = $STR_CTI_PLAYERS_GROUPSIZE; - values[] = {0,1,2,3,4,5,8,10,12,14,16}; - texts[] = {$STR_CTI_PLAYERS_GROUPSIZE_AUTO,"1","2","3","4","5","8","10","12","14","16"}; + values[] = {-10,0,1,2,3,4,5,8,10,12,14,16}; + texts[] = {$STR_CTI_DISABLED, $STR_CTI_PLAYERS_GROUPSIZE_AUTO,"1","2","3","4","5","8","10","12","14","16"}; default = 0; }; class CTI_GAMEPLAY_MISSILES_RANGE { @@ -380,7 +380,7 @@ class Params { values[] = {0,25,50,75,100}; texts[] = {"Null","Normal","Hard","Very hard","HELL"}; default = 75; - }; + }; class CTI_TOWNS_RESISTANCE_INACTIVE_MAX { title = $STR_CTI_TOWNS_RESISTANCE_INACTIVE_MAX; values[] = {30,60,120,240}; @@ -393,6 +393,18 @@ class Params { texts[] = {"1","2","3","5","10","100"}; default = 1; }; + class CTI_TOWNS_RESISTANCE_HEAVY { + title = $STR_CTI_TOWNS_RESISTANCE_HEAVY; + values[] = {1,0}; + texts[] = {$STR_CTI_ENABLED, $STR_CTI_DISABLED}; + default = 1; + }; + class CTI_SHOPS_HEAVY { + title = $STR_CTI_SHOPS_HEAVY; + values[] = {1,0}; + texts[] = {$STR_CTI_ENABLED, $STR_CTI_DISABLED}; + default = 1; + }; class CTI_WEATHER_INITIAL { title = $STR_CTI_WEATHER_INITIAL; diff --git a/stringtable.xml b/stringtable.xml index ed2c3c228..6ee61b8b0 100644 --- a/stringtable.xml +++ b/stringtable.xml @@ -578,15 +578,23 @@ За сколько метров активируется город - Zerty: TOWNS : Resistance difficulty + Zerty: TOWNS: Resistance difficulty Уровень сопротивления в городах + + + Yoshi_E: TOWNS: Heavy vehicles in towns + Тяжелая техника в городах - Zerty: TOWNS : Resistance despawn Timer + Zerty: TOWNS: Resistance despawn Timer Дезактивация захваченного города + + Yoshi_E: SHOP: Heavy Vehicles/Equipment + Тяжелая техника / Оборудование + - Zerty: TOWNS : Shop price ratio + Zerty: TOWNS: Shop price ratio Во сколько раз покупки в городах дороже, чем на базе From 99d56104e0aae629754f4c0dcf6242c3c7884a74 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sat, 28 Sep 2019 11:10:33 +0200 Subject: [PATCH 157/267] Persistant blacklist for Coms + UI --- .../Old_Com_Eject/Events_UI_combl.sqf | 49 +++++++++++ .../Strat_mode/Tablet/Events_UI_Interact.sqf | 6 +- .../Tablet/Events_UI_TabletMain.sqf | 13 +++ Addons/Strat_mode/init.sqf | 20 +++++ Client/Init/Init_Client.sqf | 4 +- Rsc/Dialogs.hpp | 88 ++++++++++++++++++- 6 files changed, 173 insertions(+), 7 deletions(-) create mode 100644 Addons/Strat_mode/Old_Com_Eject/Events_UI_combl.sqf diff --git a/Addons/Strat_mode/Old_Com_Eject/Events_UI_combl.sqf b/Addons/Strat_mode/Old_Com_Eject/Events_UI_combl.sqf new file mode 100644 index 000000000..8fc96b131 --- /dev/null +++ b/Addons/Strat_mode/Old_Com_Eject/Events_UI_combl.sqf @@ -0,0 +1,49 @@ +private ["_action"]; +_action = _this select 0; + +switch (_action) do { + case "onLoad": { + _players= allPlayers- entities "HeadlessClient_F"; + uiNamespace setVariable ["cti_dialog_ui_comblacklist_players", _players]; + uiNamespace setVariable ["cti_dialog_ui_comblacklist_uuid", nil]; + lbClear ((uiNamespace getVariable "cti_dialog_ui_comblacklist") displayCtrl 999001) ; + { + ((uiNamespace getVariable "cti_dialog_ui_comblacklist") displayCtrl 999001) lbAdd (name _x); + if ((CTI_P_SideLogic getvariable ["CTI_COM_BLACKLIST_GLOBAL",[]]) find (getPlayerUID _x) >=0 ) then { + ((uiNamespace getVariable "cti_dialog_ui_comblacklist") displayCtrl 999001) lbSetColor [_foreachindex, [1,0,0,1]]; + } else { + ((uiNamespace getVariable "cti_dialog_ui_comblacklist") displayCtrl 999001) lbSetColor [_foreachindex, [0,1,0,1]]; + }; + } forEach _players; + ((uiNamespace getVariable "cti_dialog_ui_comblacklist") displayCtrl 999001) lnbSetCurSelRow 0; + ((uiNamespace getVariable "cti_dialog_ui_comblacklist") displayCtrl 999001) ctrlCommit 0; + ((uiNamespace getVariable "cti_dialog_ui_comblacklist") displayCtrl 999002) ctrlEnable false; + ((uiNamespace getVariable "cti_dialog_ui_comblacklist") displayCtrl 999002) ctrlCommit 0; + }; + case "onUnload": {}; + + case "onLBSelChanged": { + _changed= _this select 1; + if (_changed >=0) then { + _player= getPlayerUID( (uiNamespace getVariable ["cti_dialog_ui_comblacklist_players", []]) select _changed); + if ((CTI_P_SideLogic getvariable ["CTI_COM_BLACKLIST_GLOBAL",[]]) find _player >=0 ) then { + ((uiNamespace getVariable "cti_dialog_ui_comblacklist") displayCtrl 999002) ctrlSetText "Allow"; + } else { + ((uiNamespace getVariable "cti_dialog_ui_comblacklist") displayCtrl 999002) ctrlSetText "Block"; + }; + uiNamespace setVariable ["cti_dialog_ui_comblacklist_uuid", _player]; + + ((uiNamespace getVariable "cti_dialog_ui_comblacklist") displayCtrl 999002) ctrlEnable true; + ((uiNamespace getVariable "cti_dialog_ui_comblacklist") displayCtrl 999002) ctrlCommit 0; + }; + }; + case "onBlacklist" :{ + + if !(isnil {uiNamespace getVariable "cti_dialog_ui_comblacklist_uuid"}) then { + hint format["%1",uiNamespace getVariable "cti_dialog_ui_comblacklist_uuid"]; + ["SERVER", "Server_Update_BL", uiNamespace getVariable "cti_dialog_ui_comblacklist_uuid"] call CTI_CO_FNC_NetSend; + }; + ['onLoad'] call compile preprocessFileLineNumbers 'Addons\Strat_mode\Old_Com_Eject\Events_UI_combl.sqf'; + }; + +}; \ No newline at end of file diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 3a09b9292..4caaf9540 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -407,7 +407,7 @@ switch (_action) do { }; case 31: {// CTI_Icon_Com if (! isnull _target && alive _target && (_target == (CTI_P_SideJoined call CTI_CO_FNC_GetSideHQ) || _target in (CTI_P_SideJoined call CTI_CO_FNC_GetSideStructures)) ) then { - if (isNull (CTI_P_SideJoined call CTI_CO_FNC_GetSideCommander )&& !( (getplayeruid player) in (CTI_P_SideLogic getVariable ["CTI_COM_BLACKLIST",[] ]))) then { + if (isNull (CTI_P_SideJoined call CTI_CO_FNC_GetSideCommander )&& !( (getplayeruid player) in (CTI_P_SideLogic getVariable ["CTI_COM_BLACKLIST",[] ])) && !( (getplayeruid player) in (CTI_P_SideLogic getvariable ["CTI_COM_BLACKLIST_GLOBAL",[]] ))) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [1,1,0,1]; } else { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0.3,0.3,0.3,1]; @@ -551,7 +551,7 @@ switch (_action) do { _uav = getConnectedUAV player; if (alive _uav && unitIsUAV _uav) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [1,0,0,1]; - + ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+_h_offset*_base_h,_base_w,_base_h]; _offset=_offset+1; } else { @@ -745,7 +745,7 @@ switch (_action) do { }; }; case "OnCom": { - if (isNull (CTI_P_SideJoined call CTI_CO_FNC_GetSideCommander )&& !( (getplayeruid player) in (CTI_P_SideLogic getVariable ["CTI_COM_BLACKLIST",[]] ))) then { + if (isNull (CTI_P_SideJoined call CTI_CO_FNC_GetSideCommander )&& !( (getplayeruid player) in (CTI_P_SideLogic getVariable ["CTI_COM_BLACKLIST",[]] )) && !( (getplayeruid player) in (CTI_P_SideLogic getvariable ["CTI_COM_BLACKLIST_GLOBAL",[]] ))) then { closedialog 0; 0 call CTI_COM_SET_CLIENT; }; diff --git a/Addons/Strat_mode/Tablet/Events_UI_TabletMain.sqf b/Addons/Strat_mode/Tablet/Events_UI_TabletMain.sqf index 622d5aa77..aa5fbb95b 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_TabletMain.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_TabletMain.sqf @@ -37,6 +37,15 @@ switch (_action) do { if ((missionNamespace getVariable "CTI_ARTILLERY_SETUP") < 0) then {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210009) ctrlEnable false}; if !(missionNamespace getVariable "CTI_EW_ANET" == 1) then {((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210016) ctrlEnable false}; + if ((serverCommandAvailable '#shutdown' || !isMultiplayer)) then { + ((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210017) ctrlEnable true; + ((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210017) ctrlSetPosition [SafeZoneX + (SafeZoneW - (3/4*SafeZoneH))/2+ (3/4*SafeZoneH) *0.191+(3/4*SafeZoneH)*0.615*0.76,SafeZoneY+safezoneH*(0.28+0.035*1),(3/4*SafeZoneH)*0.615*0.22,SafeZoneH * 0.03]; ((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210017) ctrlCommit 0; + } else { + ((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210017) ctrlEnable false; + ((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210017) ctrlSetPosition [SafeZoneX + (SafeZoneW - (3/4*SafeZoneH))/2+ (3/4*SafeZoneH) *0.191+(3/4*SafeZoneH)*0.615*0.76,SafeZoneY+safezoneH*(0.28+0.035*1+5),(3/4*SafeZoneH)*0.615*0.22,SafeZoneH * 0.03]; ((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210017) ctrlCommit 0; + }; + + if (!((getAssignedCuratorUnit ADMIN_ZEUS) == player) && (serverCommandAvailable '#shutdown' || !isMultiplayer)) then { ((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210019) ctrlEnable true; ((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210019) ctrlSetPosition [SafeZoneX + (SafeZoneW - (3/4*SafeZoneH))/2+ (3/4*SafeZoneH) *0.191+(3/4*SafeZoneH)*0.615*0.76,SafeZoneY+safezoneH*(0.28+0.035*3),(3/4*SafeZoneH)*0.615*0.22,SafeZoneH * 0.03]; ((uiNamespace getVariable "cti_dialog_ui_tabletmain") displayCtrl 210019) ctrlCommit 0; @@ -209,5 +218,9 @@ switch (_action) do { }; }; }; + case "onCOMBLPressed": { + closeDialog 0; + createDialog "CTI_RscTabletComBLMenu"; + }; }; \ No newline at end of file diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index d7b0852c9..9ad2f09c2 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -106,6 +106,7 @@ if (CTI_IsServer) then { if (count (_sl getVariable ["CTI_BASES_FOUND",[]]) == 0) then { _sl setVariable ["CTI_BASES_FOUND",[],true]; }; + _sl setVariable ["CTI_COM_BLACKLIST_GLOBAL",profileNamespace getVariable ["CTI_COM_BLACKLIST_GLOBAL",[]],true]; true } count [east,west]; @@ -205,6 +206,25 @@ if (CTI_IsServer) then { CTI_PVF_Server_Assign_Zeus= { _this assignCurator ADMIN_ZEUS; }; + + CTI_PVF_Server_Update_BL= { + _pfbl= profileNamespace getVariable ["CTI_COM_BLACKLIST_GLOBAL",[]]; + _index=(_pfbl find _this); + if (_index >=0) then{ + _pfbl deleteAt _index; + } else { + _pfbl pushBack _this; + + }; + profileNamespace setVariable ["CTI_COM_BLACKLIST_GLOBAL",_pfbl]; + saveProfileNamespace; + { + _sl=_x call CTI_CO_FNC_GetSideLogic; + _sl setVariable ["CTI_COM_BLACKLIST_GLOBAL",profileNamespace getVariable ["CTI_COM_BLACKLIST_GLOBAL",[]],true]; + true + } count [east,west]; + + }; }; }; diff --git a/Client/Init/Init_Client.sqf b/Client/Init/Init_Client.sqf index 971ea7cbf..eba03d414 100644 --- a/Client/Init/Init_Client.sqf +++ b/Client/Init/Init_Client.sqf @@ -240,7 +240,7 @@ TABLET_KEY_DOWN={ _return=false; disableSerialization; //removed && !CTI_P_Repairing - if (! (_this select 2) && ! (_this select 3) && ! (_this select 4) &&(_this select 1) in ([(profilenamespace getvariable ['CTI_TABLET_KEY',41])]+(actionKeys "User5")) && !visibleMap && !CTI_P_PreBuilding && isNull (uiNamespace getVariable ['cti_dialog_ui_interractions',objNull]) && isNull (uiNamespace getVariable ['cti_dialog_ui_defensemenu',objnull]) && isNull (uiNamespace getVariable ['cti_dialog_ui_purchasemenu',objnull]) && isnull (uiNamespace getVariable ["cti_dialog_ui_tabletmain",objnull]) && (isnull (findDisplay 60490))) then { + if (! (_this select 2) && ! (_this select 3) && ! (_this select 4) &&(_this select 1) in ([(profilenamespace getvariable ['CTI_TABLET_KEY',41])]+(actionKeys "User5")) && !visibleMap && !CTI_P_PreBuilding && isNull (uiNamespace getVariable ['cti_dialog_ui_interractions',objNull]) && isNull (uiNamespace getVariable ['cti_dialog_ui_defensemenu',objnull]) && isNull (uiNamespace getVariable ['cti_dialog_ui_purchasemenu',objnull]) && isnull (uiNamespace getVariable ["cti_dialog_ui_tabletmain",objnull]) && isNull (uiNamespace getVariable ['cti_dialog_ui_comblacklist',objNull])&& (isnull (findDisplay 60490))) then { uiNamespace setVariable ["INT_TARG", call TABLET_GET_TARGET]; createdialog "CTI_RscInteraction"; _return=true; @@ -250,7 +250,7 @@ TABLET_KEY_DOWN={ TABLET_KEY_UP={ _return=false; disableSerialization; - if (! (_this select 2) && ! (_this select 3) && ! (_this select 4) && (_this select 1) in [(profilenamespace getvariable ['CTI_TABLET_KEY',41])] && !isNil {uiNamespace getVariable 'cti_dialog_ui_interractions'}&& isNil {uiNamespace getVariable 'cti_dialog_ui_purchasemenu'} && isNil {uiNamespace getVariable 'cti_dialog_ui_buildmenu'} && isNil {uiNamespace getVariable 'cti_dialog_ui_defensemenu'}&& isNil {uiNamespace getVariable 'cti_dialog_ui_gear'}&& isNil {uiNamespace getVariable 'cti_dialog_ui_aircraftloadoutmenu'} && isnil {uiNamespace getVariable "cti_dialog_ui_tabletmain"} && (isnull (findDisplay 60490)) ) then { + if (! (_this select 2) && ! (_this select 3) && ! (_this select 4) && (_this select 1) in [(profilenamespace getvariable ['CTI_TABLET_KEY',41])] && !isNil {uiNamespace getVariable 'cti_dialog_ui_interractions'}&& isNil {uiNamespace getVariable 'cti_dialog_ui_purchasemenu'} && isNil {uiNamespace getVariable 'cti_dialog_ui_buildmenu'} && isNil {uiNamespace getVariable 'cti_dialog_ui_defensemenu'}&& isNil {uiNamespace getVariable 'cti_dialog_ui_gear'}&& isNil {uiNamespace getVariable 'cti_dialog_ui_aircraftloadoutmenu'} && isnil {uiNamespace getVariable "cti_dialog_ui_tabletmain"} && isNull (uiNamespace getVariable ['cti_dialog_ui_comblacklist',objNull])&& (isnull (findDisplay 60490)) ) then { closeDialog 0; }; _return diff --git a/Rsc/Dialogs.hpp b/Rsc/Dialogs.hpp index ef35fddb1..35e5a5aef 100644 --- a/Rsc/Dialogs.hpp +++ b/Rsc/Dialogs.hpp @@ -310,7 +310,7 @@ class CTI_RscInteraction { text = "Rsc\Pictures\icon_cage.paa"; action = "['OnSlatCage'] call compile preprocessFileLineNumbers 'Addons\Strat_mode\Tablet\Events_UI_Interact.sqf'"; toolTip=$STR_Icon_SlatCage; - }; + }; class CTI_Icon_Reset : CTI_Icon_fpk { idc = 511039; x = "SafeZoneX + SafeZoneW*0.55"; @@ -588,9 +588,13 @@ class CTI_RscTablet_main { tooltip = $STR_Control_Eject_Tooltip; action = "['onVotePressed'] call compile preprocessFileLineNumbers 'Addons\Strat_mode\Tablet\Events_UI_TabletMain.sqf'"; }; - class CTI_Control_Log : CTI_Control_Eject { + class CTI_Control_ComBL : CTI_Control_Eject { idc = 210017; y = "SafeZoneY+safezoneH*(0.28+0.035*1+5)"; + text = "COM Blacklist"; + tooltip ="manage global commander blacklist"; + action = "['onCOMBLPressed'] call compile preprocessFileLineNumbers 'Addons\Strat_mode\Tablet\Events_UI_TabletMain.sqf'"; + }; class CTI_Control_Request : CTI_Control_Eject { idc = 210018; @@ -2234,6 +2238,86 @@ class CTI_RscTabletOnlineHelpMenu { }; }; + +//##################################################################################################################################### +//##################################################################################################################################### +//##################################################################################################################################### +//##################################################################################################################################### + + + +class CTI_RscTabletComBLMenu { + movingEnable = 0; + idd = 999000; + onLoad = "uiNamespace setVariable ['cti_dialog_ui_comblacklist', _this select 0];['onLoad'] call compile preprocessFileLineNumbers 'Addons\Strat_mode\Old_Com_Eject\Events_UI_combl.sqf'"; + onUnload = "uiNamespace setVariable ['cti_dialog_ui_comblacklist', nil]; ['onUnload'] call compile preprocessFileLineNumbers 'Addons\Strat_mode\Old_Com_Eject\Events_UI_combl.sqf'"; + + class controlsBackground { + class CTI_Background : RscTablet { + }; + class CTI_Menu_InfoListFrame2 : RscText { + x = "SafeZoneX + (SafeZoneW - (3/4*SafeZoneH))/2+ (3/4*SafeZoneH) *0.191"; + y = "SafeZoneY+safezoneH*0.275"; + w = "(3/4*SafeZoneH)*0.615"; + h = "SafeZoneH*0.451"; + colorBackground[] = {0,0,0,1}; + text=""; + }; + + class CTI_Menu_InfoListFrame : RscFrame { + x = "SafeZoneX + (SafeZoneW - (3/4*SafeZoneH))/2+ (3/4*SafeZoneH) *0.191+(3/4*SafeZoneH)*0.615*0.02"; + y = "SafeZoneY+safezoneH*0.280"; + w = "(3/4*SafeZoneH)*0.615*0.36"; + h = "SafeZoneH*(0.436-0.04-0.01-0.04-0.01)"; + }; + + class CTI_Control_Exit : RscButton { + idc = 22555; + + x = "SafeZoneX + (SafeZoneW - (3/4*SafeZoneH))/2+ (3/4*SafeZoneH) *0.191+(3/4*SafeZoneH)*0.615*0.02"; + y = "SafeZoneY+safezoneH*(0.666+0.005)"; + w = "(3/4*SafeZoneH)*0.615*0.36"; + h = "SafeZoneH * 0.04"; + + text = $STR_Control_Exit; + action = "closeDialog 0"; + }; + + }; + + class controls { + class CTI_Menu_List_Players : RscListBox { + idc = 999001; + + x = "SafeZoneX + (SafeZoneW - (3/4*SafeZoneH))/2+ (3/4*SafeZoneH) *0.191+(3/4*SafeZoneH)*0.615*0.02"; + y = "SafeZoneY+safezoneH*0.280"; + w = "(3/4*SafeZoneH)*0.615*0.36"; + h = "SafeZoneH*(0.436-0.04-0.01-0.04-0.01)"; + + rowHeight = "1.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + sizeEx = "0.78 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + + colorText[] = {1,1,1,1}; + colorBackground[] = {0,0,0,0}; + onLBSelChanged = "['onLBSelChanged', _this select 1] call compile preprocessFileLineNumbers 'Addons\Strat_mode\Old_Com_Eject\Events_UI_combl.sqf'"; + + }; + class CTI_Control_SetBlacklist : RscButton { + idc = 999002; + x = "SafeZoneX + (SafeZoneW - (3/4*SafeZoneH))/2+ (3/4*SafeZoneH) *0.191+(3/4*SafeZoneH)*0.615*0.02"; + w = "(3/4*SafeZoneH)*0.615*0.36"; + h = "SafeZoneH * 0.04"; + + y = "SafeZoneY+safezoneH*(0.666+0.005 - 0.04-0.005)"; + + + text = "Blacklist"; + action = "['onBlacklist'] call compile preprocessFileLineNumbers 'Addons\Strat_mode\Old_Com_Eject\Events_UI_combl.sqf'"; + }; + + }; +}; + //##################################################################################################################################### //##################################################################################################################################### //##################################################################################################################################### From efd330fda38b71fda1bb70492d21aa56374ac8b0 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 19 Oct 2019 11:29:30 +0200 Subject: [PATCH 158/267] Initvehicle 20% chance for slat cage and camo net (res vehicles) --- Common/Functions/Common_CreateVehicle.sqf | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index 13b2ae28e..f30652992 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -63,7 +63,7 @@ if (typeName _position == "OBJECT") then {_position = getPos _position}; if (typeName _side == "SIDE") then {_side = (_side) call CTI_CO_FNC_GetSideID}; - + _vehicle = if ( isNull _created) then {createVehicle [_type, _position, [], 7, _special]} else {_created}; _vehicle setVariable ["_spawn_location", _position]; if(!_can_be_removed) then {_vehicle setVariable ["cti_gc_noremove", true,true]}; @@ -84,7 +84,7 @@ _handle_fail_spawns = { } forEach (fullCrew _unit); }; }; - + //Ensures the vehicle spawns correctly. _EH_Dammaged = _vehicle addEventHandler ["Dammaged", _handle_fail_spawns]; @@ -158,9 +158,9 @@ if (isNull _created) then { //if (_special == "FORM") then {_vehicle setPos [(getPos _vehicle) select 0, (getPos _vehicle) select 1, 0.75];}; //--- Make the vehicle spawn above the ground level to prevent any bisteries if (_special == "FORM") then {_vehicle setPos [(getPos _vehicle) select 0, (getPos _vehicle) select 1];}; - + if (unitIsUAV _vehicle) then { - createVehicleCrew _vehicle; + createVehicleCrew _vehicle; }; @@ -257,6 +257,9 @@ if (isNull _created) then { if (_vehicle isKindOf "I_MBT_03_cannon_F") then {[_vehicle, nil, ["HideTurret",1,"HideHull",1]] call BIS_fnc_initVehicle;}; if (_vehicle isKindOf "O_MBT_02_cannon_F" || _vehicle isKindOf "O_T_MBT_02_cannon_ghex_F") then {[_vehicle, nil, ["showLog",1]] call BIS_fnc_initVehicle;}; if (_vehicle isKindOf "O_APC_Tracked_02_AA_F" || _vehicle isKindOf "O_T_APC_Tracked_02_AA_ghex_F") then {[_vehicle, nil, ["showTracks",1]] call BIS_fnc_initVehicle;}; + if (_side == CTI_RESISTANCE_ID) then { + [_vehicle, FALSE, ["showcamonethull", 0.2, "showcamonetturret", 0.2, "showcamonetcannon", 0.2, "showslathull", 0.2]] call BIS_fnc_initVehicle; // Res: 20% chance for camo net and slat cage + }; }; if (_vehicle isKindOf "Offroad_01_base_F") then { _offroads = ["I_G_Offroad_01_F", "I_G_Offroad_01_armed_F", "I_G_Offroad_01_AT_F", "B_G_Offroad_01_F", "B_G_Offroad_01_armed_F", "B_G_Offroad_01_AT_F", "O_G_Offroad_01_F", "O_G_Offroad_01_armed_F", "O_G_Offroad_01_AT_F"]; From 328e2b2d8ea210999bb860609811a154cc5ec60a Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Tue, 31 Dec 2019 14:26:43 +0100 Subject: [PATCH 159/267] for #293 for NIL error --- Addons/Strat_mode/AdvNet/AN_Ex_Intrusion.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/AdvNet/AN_Ex_Intrusion.sqf b/Addons/Strat_mode/AdvNet/AN_Ex_Intrusion.sqf index d98259b10..40a483730 100644 --- a/Addons/Strat_mode/AdvNet/AN_Ex_Intrusion.sqf +++ b/Addons/Strat_mode/AdvNet/AN_Ex_Intrusion.sqf @@ -6,7 +6,7 @@ AN_E_Intrusion_Loop={ _hackers=[]; diag_log format [":: HACK :: starting loop for %1", _vehicle]; while {(_vehicle getVariable ["AN_Hacked",0])>0 && alive _vehicle} do { - waitUntil {(_vehicle getvariable "CTI_NET") == (_vehicle getvariable "AN_iNET") &&( _vehicle getVariable ['AN_Hack_started',false])}; + waitUntil {(_vehicle getvariable ['CTI_NET',200]) == (_vehicle getvariable ['AN_iNET',300]) && ( _vehicle getVariable ['AN_Hack_started',false])}; _last_time=time; diag_log format [":: HACK :: loop for %1 at %2 ", _vehicle,_last_time]; {if (!alive _x || ! (vehicle _x == _vehicle)) then {_x setVariable ["CTI_NET",((side _x ) call CTI_CO_FNC_GetSideID),true];_hackers=_hackers-[_x];};true} count _hackers; From 2739a62fab7678d7b65ced813441f0ca7afaf6f4 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 19 Jan 2020 21:59:54 +0100 Subject: [PATCH 160/267] for #294 --- Common/Functions/Common_CreateVehicle.sqf | 1 + Server/Functions/Server_RepairHQ.sqf | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index f30652992..7d6dba39e 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -134,6 +134,7 @@ if (isNull _created) then { if (_vehicle isKindOf "CAR" || _vehicle isKindOf "TANK") then { _ep = (getPos _vehicle) findEmptyPosition [0,100,"O_T_VTOL_02_vehicle_dynamicLoadout_F"]; if (count _ep == 0) then {_ep = (getPos _vehicle) findEmptyPosition [0,250,"O_T_VTOL_02_vehicle_dynamicLoadout_F"];}; + if (count _ep == 0 && surfaceIsWater position _vehicle) then {_ep = [getPos _vehicle select 0, getPos _vehicle select 1, 0];}; // for repair HQ in water _vehicle setPos _ep; }; diff --git a/Server/Functions/Server_RepairHQ.sqf b/Server/Functions/Server_RepairHQ.sqf index 459b2cb65..fbbaba68e 100644 --- a/Server/Functions/Server_RepairHQ.sqf +++ b/Server/Functions/Server_RepairHQ.sqf @@ -46,6 +46,7 @@ _direction = getDir _hq_wreck; //_position =[_position, 50] call CTI_CO_FNC_GetEmptyPosition; _ep = _position findEmptyPosition [0,100,"O_T_VTOL_02_vehicle_dynamicLoadout_F"]; if (count _ep == 0) then {_ep = _position findEmptyPosition [0,250,"O_T_VTOL_02_vehicle_dynamicLoadout_F"];}; +if (count _ep == 0 && surfaceIsWater _position) then {_ep = [_position select 0, _position select 1, 0];}; // for repair HQ in water _position = _ep; //_position = _position findEmptyPosition [0,50,typeOf ((_side) call CTI_CO_FNC_GetSideHQ)]; @@ -78,7 +79,7 @@ _logic setVariable ["cti_hq", _hq, true]; _hq = _this select 0; _logic = _this select 1; _side = _this select 2; - + sleep(5); _hq setVelocity [0, 5, 0]; //move it a little to check if its inside an object sleep(5); From bf85ba918d15dccc8b94cbfd4164ccaebec6f663 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 19 Jan 2020 22:16:15 +0100 Subject: [PATCH 161/267] Add files via upload --- Common/Functions/Common_CreateVehicle.sqf | 1 + Server/Functions/Server_RepairHQ.sqf | 1 + 2 files changed, 2 insertions(+) diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index 7d6dba39e..4b0109f40 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -135,6 +135,7 @@ if (isNull _created) then { _ep = (getPos _vehicle) findEmptyPosition [0,100,"O_T_VTOL_02_vehicle_dynamicLoadout_F"]; if (count _ep == 0) then {_ep = (getPos _vehicle) findEmptyPosition [0,250,"O_T_VTOL_02_vehicle_dynamicLoadout_F"];}; if (count _ep == 0 && surfaceIsWater position _vehicle) then {_ep = [getPos _vehicle select 0, getPos _vehicle select 1, 0];}; // for repair HQ in water + if (count _ep == 0) then {_ep = getPos _vehicle;}; _vehicle setPos _ep; }; diff --git a/Server/Functions/Server_RepairHQ.sqf b/Server/Functions/Server_RepairHQ.sqf index fbbaba68e..2d1c855c1 100644 --- a/Server/Functions/Server_RepairHQ.sqf +++ b/Server/Functions/Server_RepairHQ.sqf @@ -47,6 +47,7 @@ _direction = getDir _hq_wreck; _ep = _position findEmptyPosition [0,100,"O_T_VTOL_02_vehicle_dynamicLoadout_F"]; if (count _ep == 0) then {_ep = _position findEmptyPosition [0,250,"O_T_VTOL_02_vehicle_dynamicLoadout_F"];}; if (count _ep == 0 && surfaceIsWater _position) then {_ep = [_position select 0, _position select 1, 0];}; // for repair HQ in water +if (count _ep == 0) then {_ep = _position;}; _position = _ep; //_position = _position findEmptyPosition [0,50,typeOf ((_side) call CTI_CO_FNC_GetSideHQ)]; From 64a50dba4ae7ed294df3e0014e7b82902f77b770 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 19 Jan 2020 23:38:11 +0100 Subject: [PATCH 162/267] for #295 --- Addons/Strat_mode/PATROL_AI/PAI_Init.sqf | 2 +- Addons/Strat_mode/PATROL_AI/PAI_PatrolAI.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/PATROL_AI/PAI_Init.sqf b/Addons/Strat_mode/PATROL_AI/PAI_Init.sqf index 85ea1b60e..dad7695b9 100644 --- a/Addons/Strat_mode/PATROL_AI/PAI_Init.sqf +++ b/Addons/Strat_mode/PATROL_AI/PAI_Init.sqf @@ -18,7 +18,7 @@ with missionNamespace do { CTI_PVF_Patrol_Create={ _patrol= 0 call PAI_CREATE_PATROL; _patrol spawn PAI_PATROL_AI; - waitUntil {!isNull (_patrol select 0)}; + waitUntil {if (!isNull (_patrol select 0)) exitWith {true}; false}; CTI_GUER setvariable ["patrols",(CTI_GUER getVariable ["patrols",[]])+ [_patrol select 0]-[grpNull],true]; if !(CTI_isServer) then { ["SERVER", "Server_Patrol_WD",_patrol] call CTI_CO_FNC_NetSend; diff --git a/Addons/Strat_mode/PATROL_AI/PAI_PatrolAI.sqf b/Addons/Strat_mode/PATROL_AI/PAI_PatrolAI.sqf index bcf75d9e1..e4e38573f 100644 --- a/Addons/Strat_mode/PATROL_AI/PAI_PatrolAI.sqf +++ b/Addons/Strat_mode/PATROL_AI/PAI_PatrolAI.sqf @@ -5,7 +5,7 @@ _group=_this select 0; _vehicle=_this select 1; -waitUntil {!isnull _group}; +waitUntil {if (!isnull _group) exitWith {true}; false}; diag_log format [":: Patrols ::Starting AI for %1",_group]; _current_town= _vehicle call CTI_CO_FNC_GetClosestTown; _previous=_current_town; From 67db318b4fb56648c702fa4933db97522036b6c3 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Sat, 1 Feb 2020 16:17:30 +0100 Subject: [PATCH 163/267] Updated AAF vehicle upgade level --- Common/Config/Units/Units_East.sqf | 12 ++++++------ Common/Config/Units/Units_West.sqf | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Common/Config/Units/Units_East.sqf b/Common/Config/Units/Units_East.sqf index f8d873de8..f98933f21 100644 --- a/Common/Config/Units/Units_East.sqf +++ b/Common/Config/Units/Units_East.sqf @@ -1097,7 +1097,7 @@ _p = _p + ['']; _n = _n + ['']; _o = _o + [5000]; _t = _t + [30]; -_u = _u + [2]; +_u = _u + [3]; _f = _f + [4]; _s = _s + [""]; @@ -1106,7 +1106,7 @@ _p = _p + ['']; _n = _n + ['']; _o = _o + [4000]; _t = _t + [30]; -_u = _u + [3]; +_u = _u + [2]; _f = _f + [4]; _s = _s + [""]; @@ -1315,7 +1315,7 @@ _p = _p + ['']; _n = _n + ['']; _o = _o + [3000]; _t = _t + [30]; -_u = _u + [3]; +_u = _u + [2]; _f = _f + [4]; _s = _s + [""]; @@ -1324,7 +1324,7 @@ _p = _p + ['']; _n = _n + ['']; _o = _o + [3000]; _t = _t + [30]; -_u = _u + [3]; +_u = _u + [2]; _f = _f + [4]; _s = _s + [""]; @@ -1333,7 +1333,7 @@ _p = _p + ['']; _n = _n + ['']; _o = _o + [5000]; _t = _t + [30]; -_u = _u + [3]; +_u = _u + [2]; _f = _f + [4]; _s = _s + [""]; @@ -1342,7 +1342,7 @@ _p = _p + ['']; _n = _n + ['']; _o = _o + [6000]; _t = _t + [30]; -_u = _u + [3]; +_u = _u + [2]; _f = _f + [4]; _s = _s + [""]; diff --git a/Common/Config/Units/Units_West.sqf b/Common/Config/Units/Units_West.sqf index a12bccf7e..d142565fb 100644 --- a/Common/Config/Units/Units_West.sqf +++ b/Common/Config/Units/Units_West.sqf @@ -956,7 +956,7 @@ _p = _p + ['']; _n = _n + ['']; _o = _o + [4000]; _t = _t + [30]; -_u = _u + [2]; +_u = _u + [3]; _f = _f + [4]; _s = _s + [""]; @@ -965,7 +965,7 @@ _p = _p + ['']; _n = _n + ['']; _o = _o + [3500]; _t = _t + [30]; -_u = _u + [3]; +_u = _u + [2]; _f = _f + [4]; _s = _s + [""]; From 44cf046b42c351cfac12888873cd8a76f457590e Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 3 Feb 2020 17:51:38 +0100 Subject: [PATCH 164/267] Increased mortar price to 10k --- Common/Config/Base/Base_East.sqf | 2 +- Common/Config/Base/Base_West.sqf | 2 +- Common/Config/Gear/Gear_East.sqf | 4 ++-- Common/Config/Gear/Gear_West.sqf | 4 ++-- Common/Config/Units/Units_East.sqf | 2 +- Common/Config/Units/Units_West.sqf | 2 +- Server/Functions/Server_RepairHQ.sqf | 3 +-- 7 files changed, 9 insertions(+), 10 deletions(-) diff --git a/Common/Config/Base/Base_East.sqf b/Common/Config/Base/Base_East.sqf index da5508dbe..8bf2ca73f 100644 --- a/Common/Config/Base/Base_East.sqf +++ b/Common/Config/Base/Base_East.sqf @@ -401,7 +401,7 @@ _categories = _categories + ["Defense"]; if (ISLAND != 1) then { _headers = _headers + ["Mortar"]; _classes = _classes + ["O_Mortar_01_F"]; -_prices = _prices + [3000]; +_prices = _prices + [10000]; _placements = _placements + [[180, 5]]; _categories = _categories + ["Defense"]; }; diff --git a/Common/Config/Base/Base_West.sqf b/Common/Config/Base/Base_West.sqf index cf4c45df7..2e3b0396e 100644 --- a/Common/Config/Base/Base_West.sqf +++ b/Common/Config/Base/Base_West.sqf @@ -403,7 +403,7 @@ _categories = _categories + ["Defense"]; if (ISLAND != 1) then { _headers = _headers + ["Mortar"]; _classes = _classes + ["B_Mortar_01_F"]; -_prices = _prices + [3000]; +_prices = _prices + [10000]; _placements = _placements + [[180, 5]]; _categories = _categories + ["Defense"]; }; diff --git a/Common/Config/Gear/Gear_East.sqf b/Common/Config/Gear/Gear_East.sqf index b7e902987..f0ae6a5e2 100644 --- a/Common/Config/Gear/Gear_East.sqf +++ b/Common/Config/Gear/Gear_East.sqf @@ -937,11 +937,11 @@ _p = _p + [100]; if (ISLAND != 1 && CTI_SHOPS_HEAVY==1) then { _i = _i + ["O_Mortar_01_support_F"]; _u = _u + [3]; - _p = _p + [5]; + _p = _p + [2000]; _i = _i + ["O_Mortar_01_weapon_F"]; _u = _u + [3]; - _p = _p + [2995]; + _p = _p + [8000]; }; _i = _i + ["B_FieldPack_blk"]; diff --git a/Common/Config/Gear/Gear_West.sqf b/Common/Config/Gear/Gear_West.sqf index 922445d1a..02583a5b9 100644 --- a/Common/Config/Gear/Gear_West.sqf +++ b/Common/Config/Gear/Gear_West.sqf @@ -1159,11 +1159,11 @@ _p = _p + [5000]; if (ISLAND != 1 && CTI_SHOPS_HEAVY==1) then { _i = _i + ["B_Mortar_01_support_F"]; _u = _u + [3]; -_p = _p + [5]; +_p = _p + [2000]; _i = _i + ["B_Mortar_01_weapon_F"]; _u = _u + [3]; -_p = _p + [2995]; +_p = _p + [8000]; }; _i = _i + ["B_TacticalPack_blk"]; diff --git a/Common/Config/Units/Units_East.sqf b/Common/Config/Units/Units_East.sqf index f98933f21..81ee3d213 100644 --- a/Common/Config/Units/Units_East.sqf +++ b/Common/Config/Units/Units_East.sqf @@ -1232,7 +1232,7 @@ _s = _s + [""]; _c = _c + ['O_Mortar_01_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [5000]; +_o = _o + [10000]; _t = _t + [10]; _u = _u + [0]; _f = _f + [CTI_FACTORY_TOWN]; diff --git a/Common/Config/Units/Units_West.sqf b/Common/Config/Units/Units_West.sqf index d142565fb..df09051bc 100644 --- a/Common/Config/Units/Units_West.sqf +++ b/Common/Config/Units/Units_West.sqf @@ -1090,7 +1090,7 @@ _s = _s + [""]; _c = _c + ['B_Mortar_01_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [5000]; +_o = _o + [10000]; _t = _t + [10]; _u = _u + [0]; _f = _f + [CTI_FACTORY_TOWN]; diff --git a/Server/Functions/Server_RepairHQ.sqf b/Server/Functions/Server_RepairHQ.sqf index 2d1c855c1..c9b65bfbd 100644 --- a/Server/Functions/Server_RepairHQ.sqf +++ b/Server/Functions/Server_RepairHQ.sqf @@ -46,7 +46,6 @@ _direction = getDir _hq_wreck; //_position =[_position, 50] call CTI_CO_FNC_GetEmptyPosition; _ep = _position findEmptyPosition [0,100,"O_T_VTOL_02_vehicle_dynamicLoadout_F"]; if (count _ep == 0) then {_ep = _position findEmptyPosition [0,250,"O_T_VTOL_02_vehicle_dynamicLoadout_F"];}; -if (count _ep == 0 && surfaceIsWater _position) then {_ep = [_position select 0, _position select 1, 0];}; // for repair HQ in water if (count _ep == 0) then {_ep = _position;}; _position = _ep; @@ -80,7 +79,7 @@ _logic setVariable ["cti_hq", _hq, true]; _hq = _this select 0; _logic = _this select 1; _side = _this select 2; - + sleep(5); _hq setVelocity [0, 5, 0]; //move it a little to check if its inside an object sleep(5); From 6c7419cdb61c7f3acf79eb7d14612af6ac076880 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 3 Feb 2020 21:14:57 +0100 Subject: [PATCH 165/267] fixed git error --- Server/Functions/Server_RepairHQ.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/Server/Functions/Server_RepairHQ.sqf b/Server/Functions/Server_RepairHQ.sqf index c9b65bfbd..4df7e2a59 100644 --- a/Server/Functions/Server_RepairHQ.sqf +++ b/Server/Functions/Server_RepairHQ.sqf @@ -46,6 +46,7 @@ _direction = getDir _hq_wreck; //_position =[_position, 50] call CTI_CO_FNC_GetEmptyPosition; _ep = _position findEmptyPosition [0,100,"O_T_VTOL_02_vehicle_dynamicLoadout_F"]; if (count _ep == 0) then {_ep = _position findEmptyPosition [0,250,"O_T_VTOL_02_vehicle_dynamicLoadout_F"];}; +if (count _ep == 0 && surfaceIsWater _position) then {_ep = [_position select 0, _position select 1, 0];}; // for repair HQ in water if (count _ep == 0) then {_ep = _position;}; _position = _ep; From 1e2a7c7ee10deff493c40e6a4b00c128e17e4917 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Fri, 20 Mar 2020 13:32:06 +0100 Subject: [PATCH 166/267] Stringtable: Fixed meaning of the sell button --- stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stringtable.xml b/stringtable.xml index 6ee61b8b0..cea0fba01 100644 --- a/stringtable.xml +++ b/stringtable.xml @@ -1142,8 +1142,8 @@ Уволить Рабочего - Sell Structure - Продать Завод + Remove Structure + Удалить Завод Accept From 916967edd21a9c7811d578fb8c0f560764f3d37e Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 21 Mar 2020 10:47:55 +0100 Subject: [PATCH 167/267] Add B_T and O_T AA vehicle to loadout Tanoa vehicle fix --- Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf b/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf index 709b6d249..a6bcf80fe 100644 --- a/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf +++ b/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf @@ -138,6 +138,8 @@ CTI_LOADOUT_B_APC_Tracked_01_AA_F_MNT_OPTIONS = ] ] ]; +CTI_LOADOUT_B_T_APC_Tracked_01_AA_F_MNT_OPTIONS = CTI_LOADOUT_B_APC_Tracked_01_AA_F_MNT_OPTIONS; + //Opfor CTI_LOADOUT_O_APC_Tracked_02_AA_F_MNT_OPTIONS = [ @@ -190,6 +192,7 @@ CTI_LOADOUT_O_APC_Tracked_02_AA_F_MNT_OPTIONS = ] ] ]; +CTI_LOADOUT_O_T_APC_Tracked_02_AA_ghex_F_MNT_OPTIONS = CTI_LOADOUT_O_APC_Tracked_02_AA_F_MNT_OPTIONS; // *************************** // BLUFOR - Vehicle loadout options From 9e590a02fd707a4922ce27bb126595d4f766145b Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 22 Mar 2020 21:19:25 +0100 Subject: [PATCH 168/267] for #113 - link draw part --- Addons/Strat_mode/init.sqf | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 9ad2f09c2..a7a20fa6e 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -412,8 +412,6 @@ if (CTI_IsClient) then { // Statics on offroads handlers 0 execVM "Addons\Strat_mode\Functions\SM_AttachStatics.sqf"; - if ( (missionNamespace getVariable 'CTI_SM_STRATEGIC')==1) then { 0 call CTI_SM_Draw_Connect_Towns;}; - //adaptative group size if ( CTI_PLAYERS_GROUPSIZE == 0) then { @@ -455,10 +453,9 @@ if (CTI_IsClient) then { waitUntil {!isNil 'CTI_InitTowns'}; sleep 1; if !(CTI_P_SideJoined == resistance) then { - execFSM "Addons\Strat_mode\FSM\town_markers.fsm"; - }; + if ((missionNamespace getVariable 'CTI_SM_STRATEGIC')==1) then {0 call CTI_SM_Draw_Connect_Towns;}; }; // HUD From fbfdff821a09837bbbcfceb9c03e4c2cb9fdc907 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 5 Apr 2020 08:02:19 +0200 Subject: [PATCH 169/267] fix for missing }; --- Addons/Strat_mode/Functions/UAV_FuelDeath.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/Addons/Strat_mode/Functions/UAV_FuelDeath.sqf b/Addons/Strat_mode/Functions/UAV_FuelDeath.sqf index 7ed0f719e..a3bddf9d4 100644 --- a/Addons/Strat_mode/Functions/UAV_FuelDeath.sqf +++ b/Addons/Strat_mode/Functions/UAV_FuelDeath.sqf @@ -7,5 +7,6 @@ _uav=_this; while {!CTI_GameOver && alive _uav} do { if (local _uav) then { if (fuel _uav <0.05) then {_uav setDammage 1}; + }; sleep 60; }; From 8f520f2208ecfe1fce39a4eba521f317d5458ac7 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 13 Apr 2020 17:00:57 +0200 Subject: [PATCH 170/267] Removed Viper helmet to prevent 3rd thermal view --- Common/Config/Gear/Gear_East.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/Config/Gear/Gear_East.sqf b/Common/Config/Gear/Gear_East.sqf index f0ae6a5e2..c165eb027 100644 --- a/Common/Config/Gear/Gear_East.sqf +++ b/Common/Config/Gear/Gear_East.sqf @@ -981,13 +981,13 @@ _u = _u + [2]; _p = _p + [5000]; //Helms -_i = _i + ["H_HelmetO_ViperSP_hex_F"]; +/*_i = _i + ["H_HelmetO_ViperSP_hex_F"]; // remove becuase 3rd person thermic abuse _u = _u + [3]; _p = _p + [1500]; _i = _i + ["H_HelmetO_ViperSP_ghex_F"]; _u = _u + [3]; -_p = _p + [1500]; +_p = _p + [1500];*/ _i = _i + ["H_HelmetLeaderO_ghex_F"]; _u = _u + [3]; From aefa3345b8cca8db4c79e987cbdfc09197748b5d Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 13 Apr 2020 19:50:50 +0200 Subject: [PATCH 171/267] Drop pod abuse --- Common/Config/Units/Units_East.sqf | 2 +- Common/Config/Units/Units_West.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/Config/Units/Units_East.sqf b/Common/Config/Units/Units_East.sqf index 81ee3d213..6a030c8d0 100644 --- a/Common/Config/Units/Units_East.sqf +++ b/Common/Config/Units/Units_East.sqf @@ -1019,7 +1019,7 @@ _s = _s + [""]; _c = _c + ["Land_Pod_Heli_Transport_04_medevac_F"]; _p = _p + ['']; _n = _n + ['']; -_o = _o + [2500]; +_o = _o + [10000]; _t = _t + [25]; _u = _u + [0]; _f = _f + [CTI_FACTORY_AIR]; diff --git a/Common/Config/Units/Units_West.sqf b/Common/Config/Units/Units_West.sqf index df09051bc..f1424c76e 100644 --- a/Common/Config/Units/Units_West.sqf +++ b/Common/Config/Units/Units_West.sqf @@ -860,7 +860,7 @@ _s = _s + [""]; _c = _c + ["B_Slingload_01_Medevac_F"]; _p = _p + ['']; _n = _n + ['']; -_o = _o + [2500]; +_o = _o + [10000]; _t = _t + [25]; _u = _u + [0]; _f = _f + [CTI_FACTORY_AIR]; From fa8eb56368fc5411ad021260ea8ba7c69e0db888 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Fri, 17 Apr 2020 17:00:08 +0200 Subject: [PATCH 172/267] Prevent spamming armed offroads --- Common/Config/Factories/Factory_East.sqf | 4 ++-- Common/Config/Factories/Factory_West.sqf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Common/Config/Factories/Factory_East.sqf b/Common/Config/Factories/Factory_East.sqf index 9196b5daa..3b7f43774 100644 --- a/Common/Config/Factories/Factory_East.sqf +++ b/Common/Config/Factories/Factory_East.sqf @@ -226,7 +226,7 @@ _u = ['O_Soldier_F']; _u = _u + ['O_supplyCrate_F']; _u = _u + ['O_Quadbike_01_F']; _u = _u + ['O_G_Offroad_01_F']; -_u = _u + ['O_G_Offroad_01_armed_F']; -_u = _u + ['O_G_Offroad_01_AT_F']; +//u = _u + ['O_G_Offroad_01_armed_F']; Prevent abuse +//_u = _u + ['O_G_Offroad_01_AT_F']; missionNamespace setVariable [format ["CTI_%1_%2Units", _side, CTI_FTOWN], _u]; \ No newline at end of file diff --git a/Common/Config/Factories/Factory_West.sqf b/Common/Config/Factories/Factory_West.sqf index 00c4eef3f..aa561fb51 100644 --- a/Common/Config/Factories/Factory_West.sqf +++ b/Common/Config/Factories/Factory_West.sqf @@ -210,7 +210,7 @@ _u = ['B_Soldier_F']; _u = _u + ['B_supplyCrate_F']; _u = _u + ['B_Quadbike_01_F']; _u = _u + ['B_G_Offroad_01_F']; -_u = _u + ['B_G_Offroad_01_armed_F']; -_u = _u + ['B_G_Offroad_01_AT_F']; +//_u = _u + ['B_G_Offroad_01_armed_F']; prevent abuse +//_u = _u + ['B_G_Offroad_01_AT_F']; prevent abuse missionNamespace setVariable [format ["CTI_%1_%2Units", _side, CTI_FTOWN], _u]; \ No newline at end of file From 9d985a0ed4ed1397a146785798e56dac55d661b4 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sat, 18 Apr 2020 11:14:51 +0200 Subject: [PATCH 173/267] Allow building Def and buying in base area without network --- .../Strat_mode/Tablet/Events_UI_Interact.sqf | 29 +- Client/FSM/update_actions.fsm | 247 +++++++++--------- 2 files changed, 138 insertions(+), 138 deletions(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 4caaf9540..380d8690e 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -25,7 +25,7 @@ switch (_action) do { _offset=_offset+1; }; case 2: { // CTI_Icon_units - if (!CTI_P_PreBuilding &&(Client_AN_Connected && (CTI_Base_BarracksInRange || CTI_Base_LightInRange || CTI_Base_HeavyInRange || CTI_Base_AirInRange || CTI_Base_AmmoInRange || CTI_Base_RepairInRange || CTI_Base_NavalInRange )) || CTI_Town_InRange) then { + if (!CTI_P_PreBuilding &&((Client_AN_Connected || CTI_InBaseArea) && (CTI_Base_BarracksInRange || CTI_Base_LightInRange || CTI_Base_HeavyInRange || CTI_Base_AirInRange || CTI_Base_AmmoInRange || CTI_Base_RepairInRange || CTI_Base_NavalInRange )) || CTI_Town_InRange) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [1,1,0,1]; } else { @@ -145,26 +145,13 @@ switch (_action) do { }; case 12: { // CTI_Icon_Def // ok if (vehicle player == player && alive _target) then { - _ok=false; - _reptrucknear = [player, CTI_SPECIAL_REPAIRTRUCK, 20] call CTI_CO_FNC_GetNearestSpecialVehicles; - if (count _reptrucknear > 0) then {_ok=true}; - _hq = (CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ; - if ((player distance2D _hq) < 20 && alive _hq) then {_ok=true}; + _reptrucknear = if (count([player, CTI_SPECIAL_REPAIRTRUCK, 20] call CTI_CO_FNC_GetNearestSpecialVehicles)>0) then {true} else {false}; + _hqnear = if (player distance2d ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ)<=20 && alive ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ)) then {true} else {false}; _structures = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideStructures; - _rep_depots = [CTI_REPAIR, _structures] call CTI_CO_FNC_GetSideStructuresByType; - _available_rep_depots = [player, _rep_depots, 20] call CTI_UI_Service_GetBaseDepots; - if (count _available_rep_depots > 0) then {_ok=true}; - /* - if (_target == ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ)) then {_ok=true}; - if (_target in (CTI_P_SideLogic getVariable ["cti_structures",[]]) ) then { - if ((((missionNamespace getVariable [format ["CTI_%1_%2", CTI_P_SideJoined, typeOf _target],[[""]]]) select 0) select 0 == CTI_REPAIR )) then {_ok=true;}; - }; - if (_target in ((CTI_WEST getvariable ["cti_service", []]) + (CTI_EAST getvariable ["cti_service", []])) ) then { - if ((missionNamespace getVariable [format ["%1", typeOf _target],["","","","","","","",""]]) select 7 == "service-repairtruck") then {_ok=true;}; - }; - */ - //if (_target == ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ) || (missionNamespace getVariable [format ["%1", typeOf _target],["","","","","","","",""]]) select 7 == "service-repairtruck" || ((missionNamespace getVariable [format ["CTI_%1_%2", CTI_P_SideJoined, typeOf _target],[[""]]]) select 0) select 0 == CTI_REPAIR )) then { - if (_ok) then { + _repairinrange= if !(isNull ([CTI_REPAIR, player, _structures, CTI_BASE_AREA_RANGE] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false}; + + + if (_reptrucknear || _hqnear || _repairinrange && CTI_InBaseArea) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+_h_offset*_base_h,_base_w,_base_h]; _offset=_offset+1; @@ -687,7 +674,7 @@ switch (_action) do { case "OnUnits": { closedialog 0; //uiNamespace setVariable ['cti_dialog_ui_purchasemenu',objnull]; - if (!CTI_P_PreBuilding &&(Client_AN_Connected && (CTI_Base_BarracksInRange || CTI_Base_LightInRange || CTI_Base_HeavyInRange || CTI_Base_AirInRange || CTI_Base_AmmoInRange || CTI_Base_RepairInRange || CTI_Base_NavalInRange )) || CTI_Town_InRange) then { + if (!CTI_P_PreBuilding &&((Client_AN_Connected || CTI_InBaseArea) && (CTI_Base_BarracksInRange || CTI_Base_LightInRange || CTI_Base_HeavyInRange || CTI_Base_AirInRange || CTI_Base_AmmoInRange || CTI_Base_RepairInRange || CTI_Base_NavalInRange )) || CTI_Town_InRange) then { [_target] execVM "Client\Actions\Action_UseNearestFactory.sqf"; }; }; diff --git a/Client/FSM/update_actions.fsm b/Client/FSM/update_actions.fsm index ca8d6a291..c13b384a9 100644 --- a/Client/FSM/update_actions.fsm +++ b/Client/FSM/update_actions.fsm @@ -11,129 +11,142 @@ link1[] = {1,2}; link2[] = {2,1}; link3[] = {2,4}; link4[] = {4,3}; -globals[] = {25.000000,1,0,0,0,640,480,1,133,6316128,1,-355.061859,258.323914,98.173157,-593.751160,781,881,1}; -window[] = {2,-1,-1,-1,-1,906,125,1380,125,3,799}; +globals[] = {0.000000,0,0,0,0,640,480,1,133,6316128,1,-355.061859,258.323914,98.173157,-593.751160,781,884,1}; +window[] = {2,-1,-1,-1,-1,911,130,1385,130,3,799}; *//*%FSM*/ class FSM { - fsmName = "update_actions.fsm"; - class States - { - /*%FSM*/ - class Start_FSM - { - name = "Start_FSM"; - init = /*%FSM*/"_ncycle = 0;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle + fsmName = "update_actions.fsm"; + class States { - priority = 1.000000; - to="Update_Actions"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!CTI_GameOver && time > _ncycle "/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; + /*%FSM*/ + class Start_FSM + { + name = "Start_FSM"; + itemno = 0; + init = /*%FSM*/"_ncycle = 0;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 1.000000; + to="Update_Actions"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!CTI_GameOver && time > _ncycle "/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Actions + { + name = "Update_Actions"; + itemno = 2; + init = /*%FSM*/"_ncycle = time + 2.5;" \n + "" \n + "_structures = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideStructures;" \n + "_logic = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideLogic;" \n + "_areas = _logic getVariable [""cti_structures_areas"",[]];" \n + "_hq = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideHQ;" \n + "" \n + "if (missionNamespace getVariable ""CTI_EW_ANET"" == 1 ) then {" \n + "CTI_BASE_PURCHASE_UNITS_RANGE_CC= 300000;" \n + "CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE = 300000;" \n + "};" \n + "" \n + "CTI_Base_HQInRange = if (alive _hq && _hq distance player < CTI_BASE_CONSTRUCTION_RANGE) then {true} else {false};" \n + "CTI_Base_ControlCenterInRange = if !(isNull ([CTI_CONTROLCENTER, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_CC] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n + "" \n + "CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE = if (CTI_Base_ControlCenterInRange) then {CTI_BASE_PURCHASE_UNITS_RANGE_CC} else {CTI_BASE_PURCHASE_UNITS_RANGE};" \n + "" \n + "_barracks = [CTI_BARRACKS, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure;" \n + "CTI_Base_BarracksInRange = if !(isNull _barracks) then {true} else {false};" \n + "CTI_Base_GearInRange = if (_barracks distance player < CTI_BASE_GEAR_RANGE) then {true} else {false};" \n + "" \n + "CTI_Base_LightInRange = if !(isNull ([CTI_LIGHT, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n + "CTI_Base_HeavyInRange = if !(isNull ([CTI_HEAVY, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n + "CTI_Base_AirInRange = if !(isNull ([CTI_AIR, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n + "CTI_Base_AmmoInRange = if !(isNull ([CTI_AMMO, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n + "CTI_Base_RepairInRange = if !(isNull ([CTI_REPAIR, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n + "CTI_Base_NavalInRange = if !(isNull ([CTI_NAVAL, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n + "" \n + "/*_in_range = false;" \n + "if (CTI_BASE_FOB_MAX > 0) then {" \n + " _nearest = [vehicle player, CTI_P_SideLogic getVariable [""cti_fobs"",[]]] call CTI_CO_FNC_GetClosestEntity;" \n + " if (_nearest distance vehicle player <= CTI_BASE_GEAR_FOB_RANGE) then {_in_range = true};" \n + "};" \n + "CTI_Base_GearInRange_FOB = _in_range;" \n + "*/" \n + "// --- Zerty Was here" \n + "_ctown = [player , CTI_P_SideJoined] call CTI_CO_FNC_GetClosestFriendlyTown;" \n + "CTI_Town_InRange = if ((player distance _ctown) < CTI_TOWNS_CAPTURE_RANGE ) then {true} else {false};" \n + "CTI_Base_HaloInRange = if !(isNull ([CTI_AIR, player, _structures,300] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n + "" \n + "CTI_Base_RealRepairInRange = if !(isNull ([CTI_REPAIR, player, _structures, 250] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n + "" \n + "" \n + "CTI_InBaseArea=false;" \n + "" \n + "{if ((_x distance2d player)<= CTI_BASE_AREA_RANGE) then {CTI_InBaseArea=true;};true} count _areas;" \n + "" \n + "/*//debug" \n + "CTI_Base_BarracksInRange = true;" \n + "CTI_Base_LightInRange = true;" \n + "CTI_Base_HeavyInRange = true;" \n + "CTI_Base_AirInRange = true;" \n + "CTI_Base_AmmoInRange = true;" \n + "CTI_Base_RepairInRange = true;*/" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Cycle + { + itemno = 1; + priority = 1.000000; + to="Update_Actions"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!CTI_GameOver && time > _ncycle "/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Terminate + { + itemno = 4; + priority = 0.000000; + to="End_FSM"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"CTI_GameOver"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class End_FSM + { + name = "End_FSM"; + itemno = 3; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Update_Actions - { - name = "Update_Actions"; - init = /*%FSM*/"_ncycle = time + 2.5;" \n - "" \n - "_structures = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideStructures;" \n - "_hq = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideHQ;" \n - "" \n - "if (missionNamespace getVariable ""CTI_EW_ANET"" == 1 ) then {" \n - "CTI_BASE_PURCHASE_UNITS_RANGE_CC= 300000;" \n - "CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE = 300000;" \n - "};" \n - "" \n - "CTI_Base_HQInRange = if (alive _hq && _hq distance player < CTI_BASE_CONSTRUCTION_RANGE) then {true} else {false};" \n - "CTI_Base_ControlCenterInRange = if !(isNull ([CTI_CONTROLCENTER, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_CC] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n - "" \n - "CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE = if (CTI_Base_ControlCenterInRange) then {CTI_BASE_PURCHASE_UNITS_RANGE_CC} else {CTI_BASE_PURCHASE_UNITS_RANGE};" \n - "" \n - "_barracks = [CTI_BARRACKS, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure;" \n - "CTI_Base_BarracksInRange = if !(isNull _barracks) then {true} else {false};" \n - "CTI_Base_GearInRange = if (_barracks distance player < CTI_BASE_GEAR_RANGE) then {true} else {false};" \n - "" \n - "CTI_Base_LightInRange = if !(isNull ([CTI_LIGHT, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n - "CTI_Base_HeavyInRange = if !(isNull ([CTI_HEAVY, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n - "CTI_Base_AirInRange = if !(isNull ([CTI_AIR, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n - "CTI_Base_AmmoInRange = if !(isNull ([CTI_AMMO, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n - "CTI_Base_RepairInRange = if !(isNull ([CTI_REPAIR, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n - "CTI_Base_NavalInRange = if !(isNull ([CTI_NAVAL, player, _structures, CTI_BASE_PURCHASE_UNITS_RANGE_EFFECTIVE] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n - "" \n - "/*_in_range = false;" \n - "if (CTI_BASE_FOB_MAX > 0) then {" \n - " _nearest = [vehicle player, CTI_P_SideLogic getVariable [""cti_fobs"",[]]] call CTI_CO_FNC_GetClosestEntity;" \n - " if (_nearest distance vehicle player <= CTI_BASE_GEAR_FOB_RANGE) then {_in_range = true};" \n - "};" \n - "CTI_Base_GearInRange_FOB = _in_range;" \n - "*/" \n - "// --- Zerty Was here" \n - "_ctown = [player , CTI_P_SideJoined] call CTI_CO_FNC_GetClosestFriendlyTown;" \n - "CTI_Town_InRange = if ((player distance _ctown) < CTI_TOWNS_CAPTURE_RANGE ) then {true} else {false};" \n - "CTI_Base_HaloInRange = if !(isNull ([CTI_AIR, player, _structures,300] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n - "" \n - "CTI_Base_RealRepairInRange = if !(isNull ([CTI_REPAIR, player, _structures, 250] call CTI_CO_FNC_GetClosestStructure)) then {true} else {false};" \n - "" \n - "/*//debug" \n - "CTI_Base_BarracksInRange = true;" \n - "CTI_Base_LightInRange = true;" \n - "CTI_Base_HeavyInRange = true;" \n - "CTI_Base_AirInRange = true;" \n - "CTI_Base_AmmoInRange = true;" \n - "CTI_Base_RepairInRange = true;*/" \n - ""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Cycle + initState="Start_FSM"; + finalStates[] = { - priority = 1.000000; - to="Update_Actions"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!CTI_GameOver && time > _ncycle "/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; + "End_FSM", }; - /*%FSM*/ - /*%FSM*/ - class Terminate - { - priority = 0.000000; - to="End_FSM"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"CTI_GameOver"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class End_FSM - { - name = "End_FSM"; - init = /*%FSM*/""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - }; - }; - /*%FSM*/ - }; - initState="Start_FSM"; - finalStates[] = - { - "End_FSM" - }; }; /*%FSM*/ \ No newline at end of file From 541f547a646b47fdd46ac896ff73005bad6be53b Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sat, 18 Apr 2020 11:23:26 +0200 Subject: [PATCH 174/267] REorder of Def menu --- Common/Config/Base/Base_East.sqf | 59 ++++++++++++++++--------------- Common/Config/Base/Base_West.sqf | 60 +++++++++++++++++--------------- 2 files changed, 61 insertions(+), 58 deletions(-) diff --git a/Common/Config/Base/Base_East.sqf b/Common/Config/Base/Base_East.sqf index 8bf2ca73f..7edbfdb5b 100644 --- a/Common/Config/Base/Base_East.sqf +++ b/Common/Config/Base/Base_East.sqf @@ -225,6 +225,36 @@ _prices = []; _placements = []; _categories = []; +_headers = _headers + ["MG Defense"]; +_classes = _classes + ["O_HMG_01_High_F"]; +_prices = _prices + [200]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; + +_headers = _headers + ["GL Defense"]; +_classes = _classes + ["O_GMG_01_high_F"]; +_prices = _prices + [350]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; + +_headers = _headers + ["AT Defense"]; +_classes = _classes + ["O_static_AT_F"]; +_prices = _prices + [900]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; + +_headers = _headers + ["AA Defense"]; +_classes = _classes + ["O_static_AA_F"]; +_prices = _prices + [800]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; +if (ISLAND != 1) then { +_headers = _headers + ["Mortar"]; +_classes = _classes + ["O_Mortar_01_F"]; +_prices = _prices + [10000]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; +}; _headers = _headers + [["Praetorian 1C - Only on BASE Areas", [["DMG_Reduce", 10]]]]; _classes = _classes + ["B_AAA_System_01_F"]; @@ -375,36 +405,7 @@ if ((missionNamespace getVariable "CTI_RESPAWN_FOB_RANGE")> 0) then { _placements = _placements + [[180, 15]]; _categories = _categories + ["Fortification"]; }; -_headers = _headers + ["MG Defense"]; -_classes = _classes + ["O_HMG_01_High_F"]; -_prices = _prices + [200]; -_placements = _placements + [[180, 5]]; -_categories = _categories + ["Defense"]; -_headers = _headers + ["GL Defense"]; -_classes = _classes + ["O_GMG_01_high_F"]; -_prices = _prices + [350]; -_placements = _placements + [[180, 5]]; -_categories = _categories + ["Defense"]; - -_headers = _headers + ["AT Defense"]; -_classes = _classes + ["O_static_AT_F"]; -_prices = _prices + [900]; -_placements = _placements + [[180, 5]]; -_categories = _categories + ["Defense"]; - -_headers = _headers + ["AA Defense"]; -_classes = _classes + ["O_static_AA_F"]; -_prices = _prices + [800]; -_placements = _placements + [[180, 5]]; -_categories = _categories + ["Defense"]; -if (ISLAND != 1) then { -_headers = _headers + ["Mortar"]; -_classes = _classes + ["O_Mortar_01_F"]; -_prices = _prices + [10000]; -_placements = _placements + [[180, 5]]; -_categories = _categories + ["Defense"]; -}; _headers = _headers + ["Camo net"]; _classes = _classes + ["CamoNet_OPFOR_F"]; diff --git a/Common/Config/Base/Base_West.sqf b/Common/Config/Base/Base_West.sqf index 2e3b0396e..6cb0b2b42 100644 --- a/Common/Config/Base/Base_West.sqf +++ b/Common/Config/Base/Base_West.sqf @@ -231,6 +231,37 @@ _placements = []; _categories = []; +_headers = _headers + ["MG Defense"]; +_classes = _classes + ["B_HMG_01_High_F"]; +_prices = _prices + [200]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; + +_headers = _headers + ["GL Defense"]; +_classes = _classes + ["B_GMG_01_high_F"]; +_prices = _prices + [350]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; + +_headers = _headers + ["AT Defense"]; +_classes = _classes + ["B_static_AT_F"]; +_prices = _prices + [900]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; + +_headers = _headers + ["AA Defense"]; +_classes = _classes + ["B_static_AA_F"]; +_prices = _prices + [800]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; +if (ISLAND != 1) then { +_headers = _headers + ["Mortar"]; +_classes = _classes + ["B_Mortar_01_F"]; +_prices = _prices + [10000]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; +}; + _headers = _headers + [["Praetorian 1C - Only on BASE Areas", [["DMG_Reduce", 10]]]]; _classes = _classes + ["B_AAA_System_01_F"]; _prices = _prices + [25000]; @@ -377,36 +408,7 @@ if ((missionNamespace getVariable "CTI_RESPAWN_FOB_RANGE")> 0) then { _placements = _placements + [[180, 15]]; _categories = _categories + ["Fortification"]; }; -_headers = _headers + ["MG Defense"]; -_classes = _classes + ["B_HMG_01_High_F"]; -_prices = _prices + [200]; -_placements = _placements + [[180, 5]]; -_categories = _categories + ["Defense"]; - -_headers = _headers + ["GL Defense"]; -_classes = _classes + ["B_GMG_01_high_F"]; -_prices = _prices + [350]; -_placements = _placements + [[180, 5]]; -_categories = _categories + ["Defense"]; - -_headers = _headers + ["AT Defense"]; -_classes = _classes + ["B_static_AT_F"]; -_prices = _prices + [900]; -_placements = _placements + [[180, 5]]; -_categories = _categories + ["Defense"]; -_headers = _headers + ["AA Defense"]; -_classes = _classes + ["B_static_AA_F"]; -_prices = _prices + [800]; -_placements = _placements + [[180, 5]]; -_categories = _categories + ["Defense"]; -if (ISLAND != 1) then { -_headers = _headers + ["Mortar"]; -_classes = _classes + ["B_Mortar_01_F"]; -_prices = _prices + [10000]; -_placements = _placements + [[180, 5]]; -_categories = _categories + ["Defense"]; -}; _headers = _headers + ["Camo net"]; _classes = _classes + ["CamoNet_BLUFOR_F"]; From 26f75d5d2d3ce01e7c894cff2cf23efc6e164430 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sat, 18 Apr 2020 14:17:54 +0200 Subject: [PATCH 175/267] Mpa modification Strat mode modification --- Addons/Strat_mode/FSM/town_markers.fsm | 4 +- .../Strat_mode/Functions/SM_F_TownConnect.sqf | 14 +- Addons/Strat_mode/Functions/SM_Map_Setup.sqf | 17 - Common/Init/Init_Location.sqf | 17 +- Rsc/Parameters.hpp | 8 +- Server/Functions/Server_OnTownCaptured.sqf | 2 +- mission.sqm | 1915 +++++++++++------ 7 files changed, 1227 insertions(+), 750 deletions(-) diff --git a/Addons/Strat_mode/FSM/town_markers.fsm b/Addons/Strat_mode/FSM/town_markers.fsm index 7f2b08782..e3f14194c 100644 --- a/Addons/Strat_mode/FSM/town_markers.fsm +++ b/Addons/Strat_mode/FSM/town_markers.fsm @@ -12,7 +12,7 @@ link2[] = {2,1}; link3[] = {2,4}; link4[] = {4,3}; globals[] = {0.000000,0,0,0,0,640,480,1,133,6316128,1,-422.283691,326.652069,345.310455,-698.696411,632,884,1}; -window[] = {2,-1,-1,-1,-1,768,156,1192,156,3,650}; +window[] = {2,-1,-1,-1,-1,820,208,1244,208,3,650}; *//*%FSM*/ class FSM { @@ -67,7 +67,7 @@ class FSM "" \n " if (_availlable || CTI_P_SideJoined == resistance) then {" \n " if (markerAlpha _marker_area == 0) then { _marker_area setMarkerAlphaLocal CTI_MARKERS_OPACITY };" \n - " if (markerAlpha _town_marker == 0) then { _town_marker setMarkerAlphaLocal 1 };" \n + " //if (markerAlpha _town_marker == 0) then { _town_marker setMarkerAlphaLocal 1 };" \n " _marker_area setMarkerColorLocal ""ColorWhite"";" \n "" \n " }else {" \n diff --git a/Addons/Strat_mode/Functions/SM_F_TownConnect.sqf b/Addons/Strat_mode/Functions/SM_F_TownConnect.sqf index fd7d3adaf..04a6b0ed0 100644 --- a/Addons/Strat_mode/Functions/SM_F_TownConnect.sqf +++ b/Addons/Strat_mode/Functions/SM_F_TownConnect.sqf @@ -4,15 +4,5 @@ _tv= _ct getVariable "cti_town_value"; _neigh= _ct getVariable "CTI_Neigh"; _towns=CTI_Towns; -_new_neigh = [_ct,_towns] call CTI_CO_FNC_SortByDistance; -_new_neigh= _new_neigh- [_ct]; -{ - _nt=_x; - _oneigh= _nt getVariable "CTI_Neigh"; - if ( (_nt getVariable "cti_town_value") <500 && _nt != _ct && {_x==_nt} count _neigh == 0 && ( count _neigh == 0 || _tv <150 && count _neigh < 1 || _tv >=150 && _tv <200 && count _neigh < 2|| _tv >=200 &&_tv <500 && count _neigh <= 2 &&(_nt distance _ct ) <5000)) then { - _neigh= _neigh + [_nt]; - _oneigh= _oneigh + [_ct]; - _ct setVariable ["CTI_Neigh",_neigh,True]; - _nt setVariable ["CTI_Neigh",_oneigh,True]; - }; -} forEach _new_neigh; \ No newline at end of file + +_ct setVariable ["CTI_Neigh",synchronizedObjects _ct,true] ; \ No newline at end of file diff --git a/Addons/Strat_mode/Functions/SM_Map_Setup.sqf b/Addons/Strat_mode/Functions/SM_Map_Setup.sqf index 68c8ead9b..8e83442bb 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Setup.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Setup.sqf @@ -1,25 +1,8 @@ private ["_neigh","_ot","_oneigh"]; waitUntil {CTI_InitTowns}; -{ - _x setVariable ["CTI_Neigh",[],true]; - waitUntil {!isNil {_x getVariable "CTI_Neigh"}}; -} forEach CTI_Towns; - { [_x] call CTI_SM_Connect_Towns; } forEach CTI_Towns; -{ - if !( isNil {_x getVariable "cti_town_fneigh"}) then { - _neigh= _x getVariable "CTI_Neigh"; - _ot=missionNamespace getVariable (_x getVariable "cti_town_fneigh"); - if !(isNil {_ot getVariable "CTI_Neigh"}) then { - - _oneigh=_ot getVariable "CTI_Neigh"; - _x setVariable ["CTI_Neigh",_neigh+[_ot],True]; - _ot setVariable ["CTI_Neigh",_oneigh+[_x],True]; - }; - }; -} forEach CTI_Towns; SM_MAP_READY=true; diff --git a/Common/Init/Init_Location.sqf b/Common/Init/Init_Location.sqf index 805cd14f2..dc74f9b9b 100644 --- a/Common/Init/Init_Location.sqf +++ b/Common/Init/Init_Location.sqf @@ -11,10 +11,7 @@ _CENTER_RADIUS=(getMarkerSize "CENTER_POS")select 0; if ((_town distance _CENTER_POS)>_CENTER_RADIUS) exitwith {true}; -if (count _this > 4) then { - _forced_neigh= _this select 4; - _town setVariable ["cti_town_fneigh", _forced_neigh]; -}; + _town setVariable ["cti_town_name", _town_name]; @@ -27,9 +24,17 @@ if (CTI_IsServer || CTI_IsHeadless) then { _town setVariable ["cti_town_sideID", _sideID, true]; _town setVariable ["cti_town_lastSideID", _sideID, true]; _town setVariable ["cti_town_value", _town_value, true]; - _town setVariable ["cti_structure_type",CTI_FTOWN,true], + _town setVariable ["CTI_Neigh",[],true]; + _town setVariable ["cti_structure_type",CTI_FTOWN,true]; _current_side = _sideID call CTI_CO_FNC_GetSideFromID; - _town setFlagTexture ( _current_side call CTI_CO_FNC_GetSideFlag); + + + _flag= createVehicle ["Flagpole_F", getPos _town, [], 0, "CAN_COLLIDE"]; + _flag allowDamage false; + _town setVariable ["cti_town_flag",_flag,true]; + + + (_town getVariable ["cti_town_flag",objnull]) setFlagTexture ( _current_side call CTI_CO_FNC_GetSideFlag); /*if (missionNamespace getVariable "CTI_SM_STRATEGIC" == 0) then { (_town) execFSM "Server\FSM\town_capture.fsm"; } else {*/ diff --git a/Rsc/Parameters.hpp b/Rsc/Parameters.hpp index cb8d1bbf7..b6085f00e 100644 --- a/Rsc/Parameters.hpp +++ b/Rsc/Parameters.hpp @@ -380,7 +380,7 @@ class Params { values[] = {0,25,50,75,100}; texts[] = {"Null","Normal","Hard","Very hard","HELL"}; default = 75; - }; + }; class CTI_TOWNS_RESISTANCE_INACTIVE_MAX { title = $STR_CTI_TOWNS_RESISTANCE_INACTIVE_MAX; values[] = {30,60,120,240}; @@ -404,7 +404,7 @@ class Params { values[] = {1,0}; texts[] = {$STR_CTI_ENABLED, $STR_CTI_DISABLED}; default = 1; - }; + }; class CTI_WEATHER_INITIAL { title = $STR_CTI_WEATHER_INITIAL; @@ -441,7 +441,7 @@ class Params { title = $STR_CTI_SM_BASEP_M; values[] = {0,-1,2,5,10,20,50,100}; texts[] = {$STR_CTI_DISABLED,"Hard Protection","Dmg reduced by 2","Dmg reduced by 5","Dmg reduced by 10","Dmg reduced by 20","Dmg reduced by 50","Dmg reduced by 100"}; - default = 10; + default = -1; }; class CTI_SM_PATROLS { @@ -473,7 +473,7 @@ class Params { title = $STR_CTI_SM_STRATEGIC; values[] = {0,1}; texts[] = {$STR_CTI_DISABLED,$STR_CTI_ENABLED}; - default = 0; + default = 1; }; class CTI_SM_STRATEGIC_NB { title = $STR_CTI_SM_STRATEGIC_NB; diff --git a/Server/Functions/Server_OnTownCaptured.sqf b/Server/Functions/Server_OnTownCaptured.sqf index 2f56ff706..ce6ff6c97 100644 --- a/Server/Functions/Server_OnTownCaptured.sqf +++ b/Server/Functions/Server_OnTownCaptured.sqf @@ -47,7 +47,7 @@ _town setVariable ["cti_town_lastSideID", _currentSideID, true]; _town setVariable ["CTI_Net", _newSideID, true]; -_town setFlagTexture ( _newSide call CTI_CO_FNC_GetSideFlag); +(_town getVariable ["cti_town_flag",objnull]) setFlagTexture ( _newSide call CTI_CO_FNC_GetSideFlag); ["CLIENT", "Client_OnTownCaptured", [_town, _newSideID, _currentSideID]] call CTI_CO_FNC_NetSend; diff --git a/mission.sqm b/mission.sqm index 03efa3a67..a8ed450bf 100644 --- a/mission.sqm +++ b/mission.sqm @@ -8,7 +8,7 @@ class EditorData toggles=1025; class ItemIDProvider { - nextID=179; + nextID=186; }; class MarkerIDProvider { @@ -16,17 +16,16 @@ class EditorData }; class Camera { - pos[]={14700.625,180.32924,5894.1079}; - dir[]={-0.80275387,-0.42684528,0.41648361}; - up[]={-0.37890467,0.90431285,0.19658338}; - aside[]={0.46054059,-1.7105776e-008,0.887676}; + pos[]={18466.764,21.634983,8133.1084}; + dir[]={-0.86005527,-0.48922947,-0.14483939}; + up[]={-0.48244229,0.8721509,-0.081246704}; + aside[]={-0.16607118,4.1171734e-007,0.98612124}; }; }; binarizationWanted=0; addons[]= { "A3_Ui_F", - "A3_Structures_F_Mil_Flags", "A3_Modules_F", "A3_Characters_F", "A3_Modules_F_Curator_Curator" @@ -35,7 +34,7 @@ class AddonsMetaData { class List { - items=5; + items=4; class Item0 { className="A3_Ui_F"; @@ -44,27 +43,20 @@ class AddonsMetaData url="https://www.arma3.com"; }; class Item1 - { - className="A3_Structures_F_Mil"; - name="Arma 3 - Military Buildings and Structures"; - author="Bohemia Interactive"; - url="https://www.arma3.com"; - }; - class Item2 { className="A3_Modules_F"; name="Arma 3 Alpha - Scripted Modules"; author="Bohemia Interactive"; url="https://www.arma3.com"; }; - class Item3 + class Item2 { className="A3_Characters_F"; name="Arma 3 Alpha - Characters and Clothing"; author="Bohemia Interactive"; url="https://www.arma3.com"; }; - class Item4 + class Item3 { className="A3_Modules_F_Curator"; name="Arma 3 Zeus Update - Scripted Modules"; @@ -123,7 +115,7 @@ class Mission }; class Entities { - items=125; + items=131; class Item0 { dataType="Marker"; @@ -683,1001 +675,701 @@ class Mission }; class Item61 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={20826.033,36.789253,6824.6987}; - angles[]={0.014664836,0,6.2046804}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_selakano0"", resistance, 500,""Town33""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town0"; + position[]={20826.033,36.789444,6824.6992}; + angles[]={0.014660765,0,6.2046804}; }; + name="Town0"; + init="nullReturn = [this, localize ""str_a3_selakano0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; id=61; - type="FlagPole_F"; - atlOffset=0.012802124; + type="Logic"; + atlOffset=3.9898033; }; class Item62 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={16820.996,26.518801,12713.124}; angles[]={0.045302324,0,6.2725158}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_pyrgos0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town1"; - }; + name="Town1"; + init="nullReturn = [this, localize ""str_a3_pyrgos0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; id=62; - type="FlagPole_F"; - atlOffset=0.0042667389; + type="Logic"; + atlOffset=3.9810715; }; class Item63 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={19407.914,42.663628,13262.551}; angles[]={0.018663859,0,0.022662206}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_dorida0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; - name="Town2"; - }; + name="Town2"; + init="nullReturn = [this, localize ""str_a3_dorida0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; id=63; - type="FlagPole_F"; - atlOffset=0.0011024475; + type="Logic"; + atlOffset=3.9779091; }; class Item64 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={18089.914,26.811056,15200.277}; angles[]={6.2578578,0,0.012000273}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_charkia0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town3"; - }; + name="Town3"; + init="nullReturn = [this, localize ""str_a3_charkia0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; id=64; - type="FlagPole_F"; - atlOffset=0.0015525818; + type="Logic"; + atlOffset=3.9783573; }; class Item65 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={21381.674,26.061756,16414.758}; angles[]={6.2405448,0,0.0146689}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_kalochori0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; - name="Town6"; - }; + name="Town6"; + init="nullReturn = [this, localize ""str_a3_kalochori0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; id=65; - type="FlagPole_F"; - atlOffset=0.0040168762; + type="Logic"; + atlOffset=3.9808216; }; class Item66 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={18810.496,35.676094,16633.451}; angles[]={6.2299027,0,6.2511969}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_rodopoli0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town4"; - }; + name="Town4"; + init="nullReturn = [this, localize ""str_a3_rodopoli0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; id=66; - type="FlagPole_F"; - atlOffset=0.007686615; + type="Logic"; + atlOffset=3.9844913; }; class Item67 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={20945.688,47.213638,16965.613}; - angles[]={0.0040116427,0,6.1888003}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_paros0"", resistance, 350,""Town39""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town5"; + position[]={20945.688,47.213783,16965.613}; + angles[]={0.0040142573,0,6.188798}; }; + name="Town5"; + init="nullReturn = [this, localize ""str_a3_paros0"", resistance, 350] execVM ""Common\Init\Init_Location.sqf"""; id=67; - type="FlagPole_F"; - atlOffset=0.017852783; + type="Logic"; + atlOffset=3.9948044; }; class Item68 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={27018.002,25.26956,23167.574}; - angles[]={6.2711854,0,0.051953323}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_molos0"", resistance, 145,""Town47""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town7"; + position[]={27018.002,25.269257,23167.574}; + angles[]={6.2711778,0,0.051958453}; }; + name="Town7"; + init="nullReturn = [this, localize ""str_a3_molos0"", resistance, 145] execVM ""Common\Init\Init_Location.sqf"""; id=68; - type="FlagPole_F"; - atlOffset=0.0063037872; + type="Logic"; + atlOffset=3.9828053; }; class Item69 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={16640.928,19.293343,16056.638}; angles[]={6.272521,0,0.0093286335}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_anthrakia0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; - name="Town8"; - }; + name="Town8"; + init="nullReturn = [this, localize ""str_a3_anthrakia0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; id=69; - type="FlagPole_F"; - atlOffset=0.00038051605; + type="Logic"; + atlOffset=3.9771852; }; class Item70 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={16244.04,29.379099,17314.234}; angles[]={6.2113094,0,0.037316564}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_telos0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town9"; - }; + name="Town9"; + init="nullReturn = [this, localize ""str_a3_telos0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; id=70; - type="FlagPole_F"; - atlOffset=0.013177872; + type="Logic"; + atlOffset=3.9899826; }; class Item71 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={14032.271,30.131212,18737}; angles[]={0.039977662,0,6.2778587}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_athira0"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; - name="Town12"; - }; + name="Town12"; + init="nullReturn = [this, localize ""str_a3_athira0"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; id=71; - type="FlagPole_F"; - atlOffset=0.0032463074; + type="Logic"; + atlOffset=3.980051; }; class Item72 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={11745.446,57.814919,18331.873}; - angles[]={6.213963,0,6.253861}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_koroni0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; - name="Town13"; + position[]={18366.211,87.969917,11344.152}; }; + name="Town13"; + init="nullReturn = [this, ""CrossRoad"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; id=72; - type="FlagPole_F"; - atlOffset=0.01134491; + type="Logic"; + atlOffset=3.9769974; }; class Item73 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={10292.485,134.56599,19118.633}; angles[]={6.1980581,0,6.2618537}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_galati0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; - name="Town16"; - }; + name="Town16"; + init="nullReturn = [this, localize ""str_a3_galati0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; id=73; - type="FlagPole_F"; - atlOffset=0.015487671; + type="Logic"; + atlOffset=3.9922943; }; class Item74 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={4588.5151,303.55054,21381.932}; + position[]={4588.5151,303.55048,21381.93}; angles[]={6.2791886,0,6.2791886}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_oreokastro0"", resistance, 500,""Town38""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town21"; - }; + name="Town21"; + init="nullReturn = [this, localize ""str_a3_oreokastro0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; id=74; - type="FlagPole_F"; - atlOffset=3.0517578e-005; + type="Logic"; + atlOffset=3.9768066; }; class Item75 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={8649.4277,184.71611,18285.018}; angles[]={0.074527748,0,6.2671871}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_syrta0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town17"; - }; + name="Town17"; + init="nullReturn = [this, localize ""str_a3_syrta0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; id=75; - type="FlagPole_F"; - atlOffset=0.011825562; + type="Logic"; + atlOffset=3.9886322; }; class Item76 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={9298.0059,119.61528,15932.003}; - angles[]={0.081154868,0,0.037314966}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_agiosdionysios0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town18"; + position[]={9298.0059,119.6152,15932.003}; + angles[]={0.081157811,0,0.037315138}; }; + name="Town18"; + init="nullReturn = [this, localize ""str_a3_agiosdionysios0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; id=76; - type="FlagPole_F"; - atlOffset=0.016075134; + type="Logic"; + atlOffset=3.9927979; }; class Item77 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={12362.523,25.348881,15765.438}; angles[]={0.0053265258,0,0.017329043}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_lakka0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town14"; - }; + name="Town14"; + init="nullReturn = [this, localize ""str_a3_lakka0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; id=77; - type="FlagPole_F"; - atlOffset=0.00066947937; + type="Logic"; + atlOffset=3.9774742; }; class Item78 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={12608.428,16.056833,14320.253}; angles[]={6.1927657,0,6.2405434}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_neochori0"", resistance, 350] execVM ""Common\Init\Init_Location.sqf"""; - name="Town15"; - }; + name="Town15"; + init="nullReturn = [this, localize ""str_a3_neochori0"", resistance, 350] execVM ""Common\Init\Init_Location.sqf"""; id=78; - type="FlagPole_F"; - atlOffset=0.019950867; + type="Logic"; + atlOffset=3.9967556; }; class Item79 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={9038.1826,26.646751,11954.574}; angles[]={0.021328852,0,6.1782389}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_zaros0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town19"; - }; + name="Town19"; + init="nullReturn = [this, localize ""str_a3_zaros0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; id=79; - type="FlagPole_F"; - atlOffset=0.021104813; + type="Logic"; + atlOffset=3.9979095; }; class Item80 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={3507.7151,12.373648,12996.904}; - angles[]={6.2671871,0,0.010664274}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_kavala0"", resistance, 500,""Town46""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town20"; + position[]={3507.7151,12.372912,12996.904}; + angles[]={6.2671809,0,0.010663962}; }; + name="Town20"; + init="nullReturn = [this, localize ""str_a3_kavala0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; id=80; - type="FlagPole_F"; - atlOffset=0.00073432922; + type="Logic"; + atlOffset=3.9768038; }; class Item81 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={14181.469,23.505833,16286.399}; angles[]={0.012000273,0,6.2778587}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_airbase010"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; - name="Town11"; - }; + name="Town11"; + init="nullReturn = [this, localize ""str_a3_airbase010"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; id=81; - type="FlagPole_F"; - atlOffset=0.00033187866; + type="Logic"; + atlOffset=3.9771366; }; class Item82 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={15191.061,21.902496,17301.797}; angles[]={0.0013372133,0,0.0013372133}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""STR_Map_Military_Base"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; - name="Town10"; - }; + name="Town10"; + init="nullReturn = [this, localize ""STR_Map_Military_Base"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; id=82; - type="FlagPole_F"; - atlOffset=3.8146973e-006; + type="Logic"; + atlOffset=3.9768085; }; class Item83 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={20274.463,52.501724,11714.725}; angles[]={0.042640556,0,6.2778587}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_chalkeia0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town22"; - }; + name="Town22"; + init="nullReturn = [this, localize ""str_a3_chalkeia0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; id=83; - type="FlagPole_F"; - atlOffset=0.0036773682; + type="Logic"; + atlOffset=3.980484; }; class Item84 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={12842.514,46.522461,19633.301}; angles[]={6.253861,0,6.2645216}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_ifestiona0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; - name="Town23"; - }; + name="Town23"; + init="nullReturn = [this, localize ""str_a3_ifestiona0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; id=84; - type="FlagPole_F"; - atlOffset=0.0023727417; + type="Logic"; + atlOffset=3.9791794; }; class Item85 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={4864.3594,82.693581,16151.614}; angles[]={0.02399601,0,6.2445378}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_negades0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town24"; - }; + name="Town24"; + init="nullReturn = [this, localize ""str_a3_negades0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; id=85; - type="FlagPole_F"; - atlOffset=0.0040969849; + type="Logic"; + atlOffset=3.9809036; }; class Item86 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={25623.484,22.950079,21285.391}; angles[]={6.249866,0,0.0079935296}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_sofia0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town25"; - }; + name="Town25"; + init="nullReturn = [this, localize ""str_a3_sofia0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; id=86; - type="FlagPole_F"; - atlOffset=0.0023212433; + type="Logic"; + atlOffset=3.979126; }; class Item87 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={20516.811,38.253426,8883.252}; - angles[]={6.1219311,0,0.23175959}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_panagia0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town26"; + position[]={20516.811,38.253601,8883.252}; + angles[]={6.1219339,0,0.23176228}; }; + name="Town26"; + init="nullReturn = [this, localize ""str_a3_panagia0"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; id=87; - type="FlagPole_F"; - atlOffset=0.15982437; + type="Logic"; + atlOffset=4.1368065; }; class Item88 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={7118.8721,116.19866,16439.533}; angles[]={6.1637564,0,0.071875811}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_kore0"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; - name="Town27"; - }; + name="Town27"; + init="nullReturn = [this, localize ""str_a3_kore0"", resistance, 300] execVM ""Common\Init\Init_Location.sqf"""; id=88; - type="FlagPole_F"; - atlOffset=0.038856506; + type="Logic"; + atlOffset=4.0156631; }; class Item89 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={22950.141,9.1006737,18859.719}; angles[]={0.0093350215,0,6.259192}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_almyra0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; - name="Town28"; - }; + name="Town28"; + init="nullReturn = [this, localize ""str_a3_almyra0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; id=89; - type="FlagPole_F"; - atlOffset=0.00093460083; + type="Logic"; + atlOffset=3.9777393; }; class Item90 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={13587.634,19.314034,12209.913}; angles[]={0.0039967569,0,0.0013372133}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_makrynisiisland0"", resistance, 25] execVM ""Common\Init\Init_Location.sqf"""; - name="Town29"; - }; + name="Town29"; + init="nullReturn = [this, localize ""str_a3_makrynisiisland0"", resistance, 25] execVM ""Common\Init\Init_Location.sqf"""; id=90; - type="FlagPole_F"; - atlOffset=3.9100647e-005; + type="Logic"; + atlOffset=3.9768438; }; class Item91 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={14964.189,10.588233,11105.679}; angles[]={0.017332481,0,6.2046804}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_faronaki0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; - name="Town30"; - }; + name="Town30"; + init="nullReturn = [this, localize ""str_a3_faronaki0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; id=91; - type="FlagPole_F"; - atlOffset=0.012816429; + type="Logic"; + atlOffset=3.9896212; }; class Item92 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={17745.547,6.3756104,18107.686}; angles[]={0.0093286335,0,6.2711902}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_kalithea0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; - name="Town32"; - }; + name="Town32"; + init="nullReturn = [this, localize ""str_a3_kalithea0"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; id=92; - type="FlagPole_F"; - atlOffset=0.00044631958; + type="Logic"; + atlOffset=3.9772511; }; class Item93 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={11574.771,23.315058,9442.752}; - angles[]={6.2711902,0,6.2765174}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_vikos0"", resistance, 145,""Town42""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town33"; + position[]={11574.771,23.315329,9442.752}; + angles[]={6.2711945,0,6.2765183}; }; + name="Town33"; + init="nullReturn = [this, localize ""str_a3_vikos0"", resistance, 145] execVM ""Common\Init\Init_Location.sqf"""; id=93; - type="FlagPole_F"; - atlOffset=0.0027294159; + type="Logic"; + atlOffset=3.979805; }; class Item94 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={17077.311,23.238556,10059.891}; - angles[]={0.031988446,0,0.027993103}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_ekali0"", resistance, 200,""Town33""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town31"; + position[]={17077.311,23.239,10059.891}; + angles[]={0.031991884,0,0.02799508}; }; + name="Town31"; + init="nullReturn = [this, localize ""str_a3_ekali0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; id=94; - type="FlagPole_F"; - atlOffset=0.0035552979; + type="Logic"; + atlOffset=3.9808044; }; class Item95 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={14651.969,49.779419,20758.879}; angles[]={6.272521,0,6.2338929}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_frini0"", resistance, 175] execVM ""Common\Init\Init_Location.sqf"""; - name="Town34"; - }; + name="Town34"; + init="nullReturn = [this, localize ""str_a3_frini0"", resistance, 175] execVM ""Common\Init\Init_Location.sqf"""; id=95; - type="FlagPole_F"; - atlOffset=0.005065918; + type="Logic"; + atlOffset=3.9818726; }; class Item96 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={16854.336,14.130496,21871.979}; angles[]={0.022662206,0,6.2818484}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_nychi0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; - name="Town35"; - }; + name="Town35"; + init="nullReturn = [this, localize ""str_a3_nychi0"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; id=96; - type="FlagPole_F"; - atlOffset=0.0010061264; + type="Logic"; + atlOffset=3.9778109; }; class Item97 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={20113.703,22.211153,20032.137}; angles[]={0.0039967569,0,0.038647637}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""STR_Map_Theater_Ruins"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; - name="Town36"; - }; + name="Town36"; + init="nullReturn = [this, localize ""STR_Map_Theater_Ruins"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; id=97; - type="FlagPole_F"; - atlOffset=0.0030250549; + type="Logic"; + atlOffset=3.9798298; }; class Item98 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={20943.436,17.919567,19257.873}; angles[]={0.0093350215,0,0.075854406}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""STR_Map_Military_Outpost"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; - name="Town37"; - }; + name="Town37"; + init="nullReturn = [this, localize ""STR_Map_Military_Outpost"", resistance, 250] execVM ""Common\Init\Init_Location.sqf"""; id=98; - type="FlagPole_F"; - atlOffset=0.011717796; + type="Logic"; + atlOffset=3.9885225; }; class Item99 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={9220.6602,19.509701,21622.859}; - angles[]={0.022664838,0,0.027993103}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""STR_Map_North_Airfield"", resistance, 500,""Town41""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town38"; + position[]={9220.6602,19.50931,21622.859}; + angles[]={0.022671828,0,0.02799508}; }; + name="Town38"; + init="nullReturn = [this, localize ""STR_Map_North_Airfield"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; id=99; - type="FlagPole_F"; - atlOffset=0.007390976; + type="Logic"; + atlOffset=3.9838047; }; class Item100 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={23199.52,18.140114,19971.23}; angles[]={6.272521,0,6.2765174}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_ioannina0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town39"; - }; + name="Town39"; + init="nullReturn = [this, localize ""str_a3_ioannina0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; id=100; - type="FlagPole_F"; - atlOffset=0.00032138824; + type="Logic"; + atlOffset=3.9771261; }; class Item101 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={11623.219,27.020689,11943.426}; angles[]={6.2352223,0,6.2179451}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_aacairfield0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; - name="Town40"; - }; + name="Town40"; + init="nullReturn = [this, localize ""str_a3_aacairfield0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; id=101; - type="FlagPole_F"; - atlOffset=0.013057709; + type="Logic"; + atlOffset=3.9898624; }; class Item102 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={26851.094,30.606556,24466.365}; angles[]={0.031988446,0,0.0013372133}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_molosairfield0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; - name="Town41"; - }; + name="Town41"; + init="nullReturn = [this, localize ""str_a3_molosairfield0"", resistance, 500] execVM ""Common\Init\Init_Location.sqf"""; id=102; - type="FlagPole_F"; - atlOffset=0.0020027161; + type="Logic"; + atlOffset=3.9788074; }; class Item103 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={5068.5044,56.909691,11306.087}; angles[]={6.2551947,0,6.2325621}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_panochori0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town42"; - }; + name="Town42"; + init="nullReturn = [this, localize ""str_a3_panochori0"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; id=103; - type="FlagPole_F"; - atlOffset=0.0066490173; + type="Logic"; + atlOffset=3.9834557; }; class Item104 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={21895.934,26.782196,21010.182}; angles[]={6.129735,0,0.0066592805}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""STR_Map_Hotel_Complex"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; - name="Town43"; - }; + name="Town43"; + init="nullReturn = [this, localize ""STR_Map_Hotel_Complex"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; id=104; - type="FlagPole_F"; - atlOffset=0.047597885; + type="Logic"; + atlOffset=4.0244026; }; class Item105 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={5475.6577,31.276804,14999.543}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_stadium0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; - name="Town44"; - }; + name="Town44"; + init="nullReturn = [this, localize ""str_a3_stadium0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; id=105; - type="FlagPole_F"; + type="Logic"; + atlOffset=3.9768047; }; class Item106 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={21091.016,5.8291836,14768.472}; angles[]={0.017332481,0,0.12468339}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_limni0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; - name="Town45"; - }; + name="Town45"; + init="nullReturn = [this, localize ""str_a3_limni0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; id=106; - type="FlagPole_F"; - atlOffset=0.03186357; + type="Logic"; + atlOffset=4.0086684; }; class Item107 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={3853.6687,19.174381,17472.664}; - angles[]={6.2192721,0,0.077179179}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_agioskonstantinos0"", resistance, 140,""Town21""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town46"; + position[]={3853.6689,19.17448,17472.664}; + angles[]={6.2192717,0,0.077178456}; }; + name="Town46"; + init="nullReturn = [this, localize ""str_a3_agioskonstantinos0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; id=107; - type="FlagPole_F"; - atlOffset=0.019934654; + type="Logic"; + atlOffset=3.9968033; }; class Item108 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={21752.174,19.689096,7520.2725}; angles[]={0.0093286335,0,6.2791886}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_feres0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; - name="Town47"; - }; + name="Town47"; + init="nullReturn = [this, localize ""str_a3_feres0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; id=108; - type="FlagPole_F"; - atlOffset=0.000207901; + type="Logic"; + atlOffset=3.9770126; }; class Item109 { - dataType="Object"; + dataType="Logic"; class PositionInfo { - position[]={5853.1182,229.927,20094.025}; - angles[]={6.2738504,0,0.069221549}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_dump0"", resistance, 175,""Town17""] execVM ""Common\Init\Init_Location.sqf"""; - name="Town48"; + position[]={5853.1182,229.92726,20094.025}; + angles[]={6.2738476,0,0.069219761}; }; + name="Town48"; + init="nullReturn = [this, localize ""str_a3_dump0"", resistance, 175] execVM ""Common\Init\Init_Location.sqf"""; id=109; - type="FlagPole_F"; - atlOffset=0.0097351074; + type="Logic"; + atlOffset=3.9868011; }; class Item110 { - dataType="Object"; + dataType="Logic"; class PositionInfo { position[]={23236.664,38.75779,21794.523}; angles[]={0.038647637,0,0.045302324}; }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="nullReturn = [this, localize ""str_a3_nidasos0"", resistance, 145] execVM ""Common\Init\Init_Location.sqf"""; - name="Town49"; - }; + name="Town49"; + init="nullReturn = [this, localize ""str_a3_nidasos0"", resistance, 145] execVM ""Common\Init\Init_Location.sqf"""; id=110; - type="FlagPole_F"; - atlOffset=0.0071182251; + type="Logic"; + atlOffset=3.9839249; }; class Item111 { @@ -1713,8 +1405,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14482.121,9.8335609,5893.3213}; - angles[]={0.30364406,0,6.0730028}; + position[]={14485.032,6.1585503,5903.3135}; + angles[]={0.14693356,0,6.1887999}; }; side="East"; flags=6; @@ -1732,8 +1424,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14487.121,9.6157026,5888.3706}; - angles[]={0.30365241,0,5.9329152}; + position[]={14487.532,6.3318214,5900.8633}; + angles[]={0.17421596,0,6.1887999}; }; side="East"; flags=4; @@ -1794,8 +1486,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14482.121,12.04697,5883.3711}; - angles[]={0.10626491,0,6.1782393}; + position[]={14482.532,7.1093593,5900.8633}; + angles[]={0.34555563,0,6.0114136}; }; side="East"; flags=4; @@ -1856,8 +1548,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14487.121,11.690472,5878.3711}; - angles[]={0.21018261,0,6.0640931}; + position[]={14485.032,7.3125525,5898.3633}; + angles[]={0.34555563,0,6.0114136}; }; side="East"; flags=4; @@ -1875,8 +1567,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14482.121,13.243651,5873.3711}; - angles[]={0.12993059,0,6.2578578}; + position[]={14487.532,7.5160012,5895.8633}; + angles[]={0.34555563,0,6.0114136}; }; side="East"; flags=4; @@ -1894,8 +1586,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14484.867,12.719265,5869.4692}; - angles[]={6.1637559,0,6.1769204}; + position[]={14482.532,8.9092503,5895.8633}; + angles[]={0.34555563,0,6.0114136}; }; side="East"; flags=4; @@ -1907,14 +1599,15 @@ class Mission }; id=119; type="O_Soldier_SL_F"; + atlOffset=9.5367432e-007; }; class Item6 { dataType="Object"; class PositionInfo { - position[]={14486.079,12.085032,5862.3247}; - angles[]={0.0093350215,0,6.1769209}; + position[]={14485.032,8.8877535,5893.3633}; + angles[]={0.2229002,0,6.0114136}; }; side="East"; flags=4; @@ -1932,8 +1625,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14489.289,11.779264,5858.4019}; - angles[]={0.0093350215,0,6.1769209}; + position[]={14487.532,8.7578888,5890.8633}; + angles[]={0.2229002,0,6.0114136}; }; side="East"; flags=4; @@ -1951,8 +1644,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14493.111,11.269214,5857.0439}; - angles[]={6.2046804,0,6.1545658}; + position[]={14482.532,10.511089,5890.8633}; + angles[]={0.30364406,0,5.9329162}; }; side="East"; flags=4; @@ -1970,8 +1663,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14493.116,11.102674,5854.936}; - angles[]={6.2046804,0,6.1545658}; + position[]={14485.032,10.380932,5888.3633}; + angles[]={0.30364406,0,5.9329162}; }; side="East"; flags=4; @@ -1983,14 +1676,15 @@ class Mission }; id=123; type="O_Soldier_SL_F"; + atlOffset=9.5367432e-007; }; class Item10 { dataType="Object"; class PositionInfo { - position[]={14491.64,10.838742,5852.5313}; - angles[]={6.127131,0,6.2325611}; + position[]={14487.532,10.143319,5885.8633}; + angles[]={0.24435127,0,5.9329162}; }; side="East"; flags=4; @@ -2008,8 +1702,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14493.937,10.517456,5851.2285}; - angles[]={6.127131,0,6.2325611}; + position[]={14482.532,11.733985,5885.8633}; + angles[]={0.10626491,0,6.0640931}; }; side="East"; flags=4; @@ -2021,15 +1715,15 @@ class Mission }; id=125; type="O_Soldier_SL_F"; - atlOffset=-9.5367432e-007; + atlOffset=9.5367432e-007; }; class Item12 { dataType="Object"; class PositionInfo { - position[]={14497.858,10.133352,5847.647}; - angles[]={0.042641956,0,5.9590368}; + position[]={14485.032,11.4439,5883.3633}; + angles[]={0.10626491,0,6.0640931}; }; side="East"; flags=4; @@ -2041,14 +1735,15 @@ class Mission }; id=126; type="O_Soldier_SL_F"; + atlOffset=9.5367432e-007; }; class Item13 { dataType="Object"; class PositionInfo { - position[]={14512.12,7.1621251,5893.0957}; - angles[]={6.2166171,0,6.1756024}; + position[]={14487.532,11.154018,5880.8633}; + angles[]={0.10626491,0,6.0640931}; }; side="East"; flags=4; @@ -2060,15 +1755,15 @@ class Mission }; id=127; type="O_Soldier_SL_F"; - atlOffset=4.7683716e-007; + atlOffset=9.5367432e-007; }; class Item14 { dataType="Object"; class PositionInfo { - position[]={14507.12,7.5813837,5888.0957}; - angles[]={6.2605233,0,6.1323404}; + position[]={14482.532,12.267283,5880.8633}; + angles[]={0.10626491,0,6.0640931}; }; side="East"; flags=4; @@ -2086,8 +1781,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14512.12,6.4824553,5883.0957}; - angles[]={6.2099824,0,6.13234}; + position[]={14485.032,12.157131,5878.3633}; + angles[]={0.21018261,0,6.0640931}; }; side="East"; flags=4; @@ -2099,15 +1794,14 @@ class Mission }; id=129; type="O_Soldier_SL_F"; - atlOffset=4.7683716e-007; }; class Item16 { dataType="Object"; class PositionInfo { - position[]={14507.12,7.4580698,5878.0957}; - angles[]={6.256525,0,5.9929523}; + position[]={14487.532,12.133901,5875.8633}; + angles[]={0.21018261,0,6.0640931}; }; side="East"; flags=4; @@ -2119,15 +1813,14 @@ class Mission }; id=130; type="O_Soldier_SL_F"; - atlOffset=-0.29771471; }; class Item17 { dataType="Object"; class PositionInfo { - position[]={14512.12,6.1292048,5873.0957}; - angles[]={6.256525,0,5.9929523}; + position[]={14482.532,12.903828,5875.8633}; + angles[]={0.12993059,0,6.1440892}; }; side="East"; flags=4; @@ -2145,8 +1838,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14507.12,7.3394032,5868.0957}; - angles[]={6.2578578,0,5.9905057}; + position[]={14485.032,12.880432,5873.3633}; + angles[]={0.12993059,0,6.1440892}; }; side="East"; flags=4; @@ -2164,8 +1857,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14512.12,5.8589268,5863.0957}; - angles[]={0.22543514,0,5.9905062}; + position[]={14487.532,12.490712,5870.8633}; + angles[]={6.1967349,0,6.1440892}; }; side="East"; flags=4; @@ -2177,15 +1870,15 @@ class Mission }; id=133; type="O_Soldier_SL_F"; - atlOffset=-0.34478331; + atlOffset=-9.5367432e-007; }; class Item20 { dataType="Object"; class PositionInfo { - position[]={14507.12,8.399498,5858.0957}; - angles[]={0.13386136,0,6.0793881}; + position[]={14482.532,13.135555,5870.8633}; + angles[]={6.1637559,0,6.1769204}; }; side="East"; flags=4; @@ -2203,8 +1896,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14512.12,7.0922318,5853.0957}; - angles[]={6.2685208,0,6.0793877}; + position[]={14485.032,12.568874,5868.3633}; + angles[]={6.1637559,0,6.1769204}; }; side="East"; flags=4; @@ -2216,15 +1909,14 @@ class Mission }; id=135; type="O_Soldier_SL_F"; - atlOffset=-0.28221989; }; class Item22 { dataType="Object"; class PositionInfo { - position[]={14507.12,7.9941993,5848.0957}; - angles[]={6.2046804,0,6.1180367}; + position[]={14487.532,12.002292,5865.8633}; + angles[]={6.1637559,0,6.1769204}; }; side="East"; flags=4; @@ -2242,8 +1934,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={14509.348,7.3115125,5844.0229}; - angles[]={6.2099833,0,6.1128521}; + position[]={14482.532,12.535592,5865.8633}; + angles[]={6.1637559,0,6.1769204}; }; side="East"; flags=4; @@ -2255,15 +1947,14 @@ class Mission }; id=137; type="O_Soldier_SL_F"; - atlOffset=-4.7683716e-007; }; class Item24 { dataType="Object"; class PositionInfo { - position[]={14502.701,8.7139492,5842.7749}; - angles[]={0.042641956,0,5.9590368}; + position[]={14485.032,12.186963,5863.3633}; + angles[]={0.0093350215,0,6.1769209}; }; side="East"; flags=4; @@ -2279,7 +1970,7 @@ class Mission }; class Attributes { - formation="STAG COLUMN"; + formation="DIAMOND"; }; id=113; }; @@ -2295,8 +1986,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2314.926,12.649018,9283.7012}; - angles[]={0.05726425,0,0.13124876}; + position[]={2314.926,12.643297,9283.8008}; + angles[]={0.057271164,0,0.1312411}; }; side="West"; flags=6; @@ -2357,8 +2048,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2319.9258,13.644493,9278.751}; - angles[]={0.057271164,0,0.15214813}; + position[]={2317.426,13.113741,9281.3506}; + angles[]={0.057271164,0,0.1312411}; }; side="West"; flags=4; @@ -2376,8 +2067,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2314.9258,12.525521,9273.751}; - angles[]={6.2139621,0,0.2114578}; + position[]={2312.426,12.348551,9281.3506}; + angles[]={6.2578578,0,0.2114578}; }; side="West"; flags=4; @@ -2437,8 +2128,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2319.9258,13.049868,9268.751}; - angles[]={6.2498641,0,0.11153467}; + position[]={2314.926,12.821893,9278.8506}; + angles[]={6.2578578,0,0.2114578}; }; side="West"; flags=4; @@ -2456,8 +2147,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2314.9258,12.819977,9263.751}; - angles[]={0.010664274,0,0.02666023}; + position[]={2317.426,13.242478,9276.3506}; + angles[]={6.2139621,0,0.2114578}; }; side="West"; flags=4; @@ -2475,8 +2166,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2319.9258,12.771416,9258.751}; - angles[]={6.2285728,0,0.031988446}; + position[]={2312.426,12.169161,9276.3506}; + angles[]={6.2139621,0,0.2114578}; }; side="West"; flags=4; @@ -2494,8 +2185,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2314.9258,12.317031,9253.751}; - angles[]={6.1861577,0,0.018667053}; + position[]={2314.926,12.532489,9273.8506}; + angles[]={6.2139621,0,0.2114578}; }; side="West"; flags=4; @@ -2513,8 +2204,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2319.9258,11.765233,9248.751}; - angles[]={6.1861577,0,6.2365522}; + position[]={2317.426,12.895769,9271.3506}; + angles[]={6.2139621,0,0.2114578}; }; side="West"; flags=4; @@ -2532,8 +2223,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2314.9258,11.481448,9243.751}; - angles[]={6.1782393,0,6.2365537}; + position[]={2312.426,12.531755,9271.3506}; + angles[]={0.11811411,0,0.026662467}; }; side="West"; flags=4; @@ -2551,8 +2242,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2319.9258,9.8097668,9238.751}; - angles[]={5.8206048,0,6.0742788}; + position[]={2314.926,12.765588,9268.8506}; + angles[]={0.010664274,0,0.02666023}; }; side="West"; flags=4; @@ -2570,8 +2261,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2314.9258,8.4945126,9233.751}; - angles[]={6.0755548,0,6.0213389}; + position[]={2317.426,12.858921,9266.3506}; + angles[]={0.010664274,0,0.02666023}; }; side="West"; flags=4; @@ -2589,8 +2280,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2337.5042,16.200138,9289.0645}; - angles[]={0.018663859,0,0.074528553}; + position[]={2312.426,12.725589,9266.3506}; + angles[]={0.010664274,0,0.02666023}; }; side="West"; flags=4; @@ -2602,15 +2293,14 @@ class Mission }; id=151; type="B_Soldier_SL_F"; - atlOffset=3.8146973e-006; }; class Item12 { dataType="Object"; class PositionInfo { - position[]={2332.5042,15.609912,9284.0645}; - angles[]={6.2405448,0,0.11548408}; + position[]={2314.926,12.818928,9263.8506}; + angles[]={0.010664274,0,0.02666023}; }; side="West"; flags=4; @@ -2628,8 +2318,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2337.5042,15.976583,9279.0645}; - angles[]={6.2405448,0,0.11548408}; + position[]={2317.426,12.833954,9261.3506}; + angles[]={6.2285728,0,0.02666023}; }; side="West"; flags=4; @@ -2641,15 +2331,14 @@ class Mission }; id=153; type="B_Soldier_SL_F"; - atlOffset=-9.5367432e-007; }; class Item14 { dataType="Object"; class PositionInfo { - position[]={2332.5042,15.201583,9274.0645}; - angles[]={6.2458687,0,0.053282689}; + position[]={2312.426,12.700623,9261.3506}; + angles[]={6.2285728,0,0.02666023}; }; side="West"; flags=4; @@ -2667,9 +2356,11 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2337.5042,15.643533,9269.0645}; + position[]={2314.926,12.630608,9258.8506}; + angles[]={6.2285728,0,0.02666023}; }; side="West"; + flags=4; class Attributes { skill=0.60000002; @@ -2678,15 +2369,14 @@ class Mission }; id=155; type="B_Soldier_SL_F"; - atlOffset=0.33308029; }; class Item16 { dataType="Object"; class PositionInfo { - position[]={2332.5042,14.609595,9264.0645}; - angles[]={6.1914434,0,0.13647979}; + position[]={2317.426,12.560587,9256.3506}; + angles[]={6.2285728,0,0.02666023}; }; side="West"; flags=4; @@ -2698,15 +2388,14 @@ class Mission }; id=156; type="B_Soldier_SL_F"; - atlOffset=0.10816097; }; class Item17 { dataType="Object"; class PositionInfo { - position[]={2335,13.910367,9259.4766}; - angles[]={6.1769204,0,6.233892}; + position[]={2312.426,12.457439,9256.3506}; + angles[]={6.2365522,0,0.018663859}; }; side="West"; flags=4; @@ -2724,8 +2413,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2332.5042,12.691146,9254.0645}; - angles[]={5.8400087,0,6.0768318}; + position[]={2314.926,12.326749,9253.8506}; + angles[]={6.1861577,0,0.018667053}; }; side="West"; flags=4; @@ -2737,15 +2426,14 @@ class Mission }; id=158; type="B_Soldier_SL_F"; - atlOffset=-0.4017849; }; class Item19 { dataType="Object"; class PositionInfo { - position[]={2337.5042,9.6730919,9249.0645}; - angles[]={5.8400087,0,6.0768318}; + position[]={2317.426,12.13005,9251.3506}; + angles[]={6.1861577,0,0.018667053}; }; side="West"; flags=4; @@ -2763,8 +2451,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2325.0005,10.993038,9246.0049}; - angles[]={6.0188522,0,5.8026171}; + position[]={2312.426,12.11986,9251.3506}; + angles[]={6.2511969,0,6.2365537}; }; side="West"; flags=4; @@ -2782,8 +2470,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2327.6113,6.3763151,9235.6641}; - angles[]={5.8206053,0,5.9795418}; + position[]={2314.926,11.92318,9248.8506}; + angles[]={6.2511969,0,6.2365537}; }; side="West"; flags=4; @@ -2795,15 +2483,14 @@ class Mission }; id=161; type="B_Soldier_SL_F"; - atlOffset=4.7683716e-007; }; class Item22 { dataType="Object"; class PositionInfo { - position[]={2329.3284,6.8502789,9239.1045}; - angles[]={6.0003133,0,5.8026171}; + position[]={2317.426,11.638655,9246.3506}; + angles[]={6.1782393,0,6.2365537}; }; side="West"; flags=4; @@ -2815,15 +2502,14 @@ class Mission }; id=162; type="B_Soldier_SL_F"; - atlOffset=4.7683716e-007; }; class Item23 { dataType="Object"; class PositionInfo { - position[]={2332.2759,3.347275,9232.4805}; - angles[]={6.0768318,0,5.9795418}; + position[]={2312.426,11.871984,9246.3506}; + angles[]={6.1782393,0,6.2365537}; }; side="West"; flags=4; @@ -2841,8 +2527,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={2321.0681,5.4266376,9229.5781}; - angles[]={5.894659,0,6.0338197}; + position[]={2314.926,11.491949,9243.8506}; + angles[]={6.1782393,0,6.2365537}; }; side="West"; flags=4; @@ -2858,7 +2544,7 @@ class Mission }; class Attributes { - formation="STAG COLUMN"; + formation="DIAMOND"; }; id=139; }; @@ -3144,16 +2830,99 @@ class Mission b=1000; id=178; }; + class Item125 + { + dataType="Logic"; + class PositionInfo + { + position[]={5923.1074,107.61804,12458.481}; + angles[]={0.042640556,0,6.1038013}; + }; + name="Town50"; + init="nullReturn = [this, ""Lost Dump"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + id=179; + type="Logic"; + atlOffset=3.9768066; + }; + class Item126 + { + dataType="Logic"; + class PositionInfo + { + position[]={5404.2397,80.456276,17896.805}; + angles[]={6.253861,0,6.2658529}; + }; + name="Town51"; + init="nullReturn = [this, ""Abandonned Factory"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; + id=180; + type="Logic"; + atlOffset=3.9768066; + }; + class Item127 + { + dataType="Logic"; + class PositionInfo + { + position[]={8076.5811,187.45813,14437.229}; + angles[]={6.2352209,0,0.027995232}; + }; + name="Town52"; + init="nullReturn = [this, ""Agia Stemma"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; + id=181; + type="Logic"; + atlOffset=3.9768372; + }; + class Item128 + { + dataType="Logic"; + class PositionInfo + { + position[]={12123.02,15.262378,22807.049}; + angles[]={0.025324726,0,0.0079936078}; + }; + name="Town53"; + init="nullReturn = [this, ""Lost Bay"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + id=182; + type="Logic"; + atlOffset=3.9768047; + }; + class Item129 + { + dataType="Logic"; + class PositionInfo + { + position[]={11127.342,45.687012,14567.272}; + angles[]={6.179565,0,6.2591867}; + }; + name="Town54"; + init="nullReturn = [this, ""Alikampos"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + id=184; + type="Logic"; + atlOffset=3.9768066; + }; + class Item130 + { + dataType="Logic"; + class PositionInfo + { + position[]={18449.453,12.043061,8122.5762}; + }; + name="Town55"; + init="nullReturn = [this, ""Livadi"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; + id=185; + type="Logic"; + atlOffset=3.9910002; + }; }; class Connections { class LinkIDProvider { - nextID=49; + nextID=122; }; class Links { - items=49; + items=122; class Item0 { linkID=0; @@ -3644,6 +3413,736 @@ class Mission type="Sync"; }; }; + class Item49 + { + linkID=49; + item0=80; + item1=103; + class CustomData + { + type="Sync"; + }; + }; + class Item50 + { + linkID=50; + item0=103; + item1=179; + class CustomData + { + type="Sync"; + }; + }; + class Item51 + { + linkID=51; + item0=103; + item1=79; + class CustomData + { + type="Sync"; + }; + }; + class Item52 + { + linkID=52; + item0=79; + item1=76; + class CustomData + { + type="Sync"; + }; + }; + class Item53 + { + linkID=53; + item0=79; + item1=181; + class CustomData + { + type="Sync"; + }; + }; + class Item54 + { + linkID=54; + item0=80; + item1=105; + class CustomData + { + type="Sync"; + }; + }; + class Item55 + { + linkID=55; + item0=105; + item1=88; + class CustomData + { + type="Sync"; + }; + }; + class Item56 + { + linkID=56; + item0=88; + item1=181; + class CustomData + { + type="Sync"; + }; + }; + class Item57 + { + linkID=57; + item0=88; + item1=76; + class CustomData + { + type="Sync"; + }; + }; + class Item58 + { + linkID=58; + item0=76; + item1=77; + class CustomData + { + type="Sync"; + }; + }; + class Item59 + { + linkID=59; + item0=77; + item1=81; + class CustomData + { + type="Sync"; + }; + }; + class Item60 + { + linkID=60; + item0=81; + item1=82; + class CustomData + { + type="Sync"; + }; + }; + class Item61 + { + linkID=61; + item0=82; + item1=70; + class CustomData + { + type="Sync"; + }; + }; + class Item62 + { + linkID=62; + item0=70; + item1=69; + class CustomData + { + type="Sync"; + }; + }; + class Item63 + { + linkID=63; + item0=70; + item1=92; + class CustomData + { + type="Sync"; + }; + }; + class Item64 + { + linkID=64; + item0=92; + item1=66; + class CustomData + { + type="Sync"; + }; + }; + class Item65 + { + linkID=65; + item0=66; + item1=64; + class CustomData + { + type="Sync"; + }; + }; + class Item66 + { + linkID=66; + item0=64; + item1=69; + class CustomData + { + type="Sync"; + }; + }; + class Item67 + { + linkID=67; + item0=64; + item1=62; + class CustomData + { + type="Sync"; + }; + }; + class Item68 + { + linkID=68; + item0=62; + item1=63; + class CustomData + { + type="Sync"; + }; + }; + class Item69 + { + linkID=69; + item0=66; + item1=67; + class CustomData + { + type="Sync"; + }; + }; + class Item70 + { + linkID=70; + item0=67; + item1=65; + class CustomData + { + type="Sync"; + }; + }; + class Item71 + { + linkID=71; + item0=106; + item1=63; + class CustomData + { + type="Sync"; + }; + }; + class Item72 + { + linkID=72; + item0=63; + item1=83; + class CustomData + { + type="Sync"; + }; + }; + class Item73 + { + linkID=73; + item0=83; + item1=87; + class CustomData + { + type="Sync"; + }; + }; + class Item74 + { + linkID=74; + item0=87; + item1=108; + class CustomData + { + type="Sync"; + }; + }; + class Item75 + { + linkID=75; + item0=108; + item1=61; + class CustomData + { + type="Sync"; + }; + }; + class Item76 + { + linkID=76; + item0=93; + item1=79; + class CustomData + { + type="Sync"; + }; + }; + class Item77 + { + linkID=77; + item0=99; + item1=73; + class CustomData + { + type="Sync"; + }; + }; + class Item78 + { + linkID=78; + item0=73; + item1=75; + class CustomData + { + type="Sync"; + }; + }; + class Item79 + { + linkID=79; + item0=75; + item1=88; + class CustomData + { + type="Sync"; + }; + }; + class Item80 + { + linkID=80; + item0=73; + item1=71; + class CustomData + { + type="Sync"; + }; + }; + class Item81 + { + linkID=81; + item0=71; + item1=82; + class CustomData + { + type="Sync"; + }; + }; + class Item82 + { + linkID=82; + item0=67; + item1=100; + class CustomData + { + type="Sync"; + }; + }; + class Item83 + { + linkID=83; + item0=100; + item1=89; + class CustomData + { + type="Sync"; + }; + }; + class Item84 + { + linkID=84; + item0=91; + item1=90; + class CustomData + { + type="Sync"; + }; + }; + class Item85 + { + linkID=85; + item0=90; + item1=101; + class CustomData + { + type="Sync"; + }; + }; + class Item86 + { + linkID=86; + item0=90; + item1=78; + class CustomData + { + type="Sync"; + }; + }; + class Item87 + { + linkID=87; + item0=78; + item1=77; + class CustomData + { + type="Sync"; + }; + }; + class Item88 + { + linkID=88; + item0=109; + item1=75; + class CustomData + { + type="Sync"; + }; + }; + class Item89 + { + linkID=89; + item0=109; + item1=74; + class CustomData + { + type="Sync"; + }; + }; + class Item90 + { + linkID=90; + item0=107; + item1=85; + class CustomData + { + type="Sync"; + }; + }; + class Item91 + { + linkID=91; + item0=85; + item1=180; + class CustomData + { + type="Sync"; + }; + }; + class Item92 + { + linkID=92; + item0=85; + item1=88; + class CustomData + { + type="Sync"; + }; + }; + class Item93 + { + linkID=93; + item0=100; + item1=86; + class CustomData + { + type="Sync"; + }; + }; + class Item94 + { + linkID=94; + item0=86; + item1=68; + class CustomData + { + type="Sync"; + }; + }; + class Item95 + { + linkID=95; + item0=68; + item1=102; + class CustomData + { + type="Sync"; + }; + }; + class Item96 + { + linkID=96; + item0=100; + item1=104; + class CustomData + { + type="Sync"; + }; + }; + class Item97 + { + linkID=97; + item0=84; + item1=71; + class CustomData + { + type="Sync"; + }; + }; + class Item98 + { + linkID=98; + item0=95; + item1=96; + class CustomData + { + type="Sync"; + }; + }; + class Item99 + { + linkID=99; + item0=78; + item1=184; + class CustomData + { + type="Sync"; + }; + }; + class Item100 + { + linkID=100; + item0=79; + item1=78; + class CustomData + { + type="Sync"; + }; + }; + class Item101 + { + linkID=101; + item0=104; + item1=110; + class CustomData + { + type="Sync"; + }; + }; + class Item102 + { + linkID=102; + item0=67; + item1=98; + class CustomData + { + type="Sync"; + }; + }; + class Item103 + { + linkID=103; + item0=98; + item1=97; + class CustomData + { + type="Sync"; + }; + }; + class Item104 + { + linkID=104; + item0=87; + item1=94; + class CustomData + { + type="Sync"; + }; + }; + class Item105 + { + linkID=105; + item0=107; + item1=109; + class CustomData + { + type="Sync"; + }; + }; + class Item106 + { + linkID=106; + item0=110; + item1=68; + class CustomData + { + type="Sync"; + }; + }; + class Item107 + { + linkID=107; + item0=182; + item1=73; + class CustomData + { + type="Sync"; + }; + }; + class Item108 + { + linkID=108; + item0=95; + item1=182; + class CustomData + { + type="Sync"; + }; + }; + class Item109 + { + linkID=109; + item0=95; + item1=71; + class CustomData + { + type="Sync"; + }; + }; + class Item110 + { + linkID=110; + item0=77; + item1=73; + class CustomData + { + type="Sync"; + }; + }; + class Item111 + { + linkID=111; + item0=93; + item1=94; + class CustomData + { + type="Sync"; + }; + }; + class Item112 + { + linkID=112; + item0=91; + item1=62; + class CustomData + { + type="Sync"; + }; + }; + class Item113 + { + linkID=113; + item0=96; + item1=97; + class CustomData + { + type="Sync"; + }; + }; + class Item114 + { + linkID=114; + item0=62; + item1=94; + class CustomData + { + type="Sync"; + }; + }; + class Item115 + { + linkID=115; + item0=97; + item1=104; + class CustomData + { + type="Sync"; + }; + }; + class Item116 + { + linkID=116; + item0=86; + item1=87; + class CustomData + { + type="Sync"; + }; + }; + class Item117 + { + linkID=117; + item0=110; + item1=182; + class CustomData + { + type="Sync"; + }; + }; + class Item118 + { + linkID=118; + item0=72; + item1=94; + class CustomData + { + type="Sync"; + }; + }; + class Item119 + { + linkID=119; + item0=72; + item1=83; + class CustomData + { + type="Sync"; + }; + }; + class Item120 + { + linkID=120; + item0=185; + item1=87; + class CustomData + { + type="Sync"; + }; + }; + class Item121 + { + linkID=121; + item0=85; + item1=105; + class CustomData + { + type="Sync"; + }; + }; }; }; }; From 69161e1eb550de16eca5df4fa3b45d5b79732b30 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sat, 18 Apr 2020 14:30:17 +0200 Subject: [PATCH 176/267] Limit possible disavantage in startup position --- Server/Init/Init_Server.sqf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index 64b059c7c..364ad4c81 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -78,7 +78,7 @@ _asked= missionNamespace getVariable "CTI_BASE_STARTUP_PLACEMENT"; waitUntil {CTI_InitTowns}; _eastLocation=CENTER_POS; _westLocation=CENTER_POS; -while {(_eastLocation distance _westLocation) <(_asked)*0.95 ||(_eastLocation distance _westLocation) >( _asked)*1.25 || {(_x distance _eastLocation)<600} count CTI_Towns>0 || {(_x distance _westLocation)<600} count CTI_Towns>0 ||(_eastLocation distance CENTER_POS) > ( _asked)*1.2 ||(_westLocation distance CENTER_POS) > ( _asked)*1.2 } do { +while {(_eastLocation distance _westLocation) <(_asked)*0.95 ||(_eastLocation distance _westLocation) >( _asked)*1.25 || {(_x distance _eastLocation)<600} count CTI_Towns>0 || {(_x distance _westLocation)<600} count CTI_Towns>0 ||(_eastLocation distance CENTER_POS) > ( _asked)*0.75 ||(_westLocation distance CENTER_POS) > ( _asked)*0.75 } do { while {random(1)>0.2}do { _a="BiS pseudo-random number Generator is crappy"; }; @@ -320,11 +320,11 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { ["Map", worldName] ]; diag_log _arr; - + _east_sl = (east) call CTI_CO_FNC_GetSideLogic; _west_sl = (west) call CTI_CO_FNC_GetSideLogic; while {!CTI_GameOver} do { - + _towns = count(_east_sl getVariable ["CTI_ACTIVE",[]]) + count(_west_sl getVariable ["CTI_ACTIVE",[]]); //build player array, splitting at 800 to ensure char limit of 1000 is not reached @@ -376,7 +376,7 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { ["players", _x]]; _dataP = _dataP+1; } forEach _players; - + //Logging more detailed data about team _east_hq = ((east) call CTI_CO_FNC_GetSideHQ); _west_hq = ((west) call CTI_CO_FNC_GetSideHQ); @@ -384,7 +384,7 @@ if (missionNamespace getvariable "CTI_PERSISTANT" == 1) then { ["hq_east", [getPos _east_hq, alive _east_hq]], ["hq_west", [getPos _west_hq, alive _west_hq]]]; _dataP = _dataP+1; - + diag_log[["CTI_DataPacket", format ["Data_EOD_%1", _dataP]], //Marking package as "last" ["bases_east", _east_sl getVariable ["cti_structures_areas",[]]], ["bases_west", _west_sl getVariable ["cti_structures_areas",[]]], From 6528efdc77013ca8a68ca0e056f0b2d7af75738b Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 19 Apr 2020 14:06:58 +0200 Subject: [PATCH 177/267] Fix for map markers --- Addons/Strat_mode/FSM/town_markers.fsm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Addons/Strat_mode/FSM/town_markers.fsm b/Addons/Strat_mode/FSM/town_markers.fsm index e3f14194c..1d005cd9d 100644 --- a/Addons/Strat_mode/FSM/town_markers.fsm +++ b/Addons/Strat_mode/FSM/town_markers.fsm @@ -12,7 +12,7 @@ link2[] = {2,1}; link3[] = {2,4}; link4[] = {4,3}; globals[] = {0.000000,0,0,0,0,640,480,1,133,6316128,1,-422.283691,326.652069,345.310455,-698.696411,632,884,1}; -window[] = {2,-1,-1,-1,-1,820,208,1244,208,3,650}; +window[] = {2,-1,-1,-1,-1,846,234,1270,234,3,650}; *//*%FSM*/ class FSM { @@ -67,12 +67,12 @@ class FSM "" \n " if (_availlable || CTI_P_SideJoined == resistance) then {" \n " if (markerAlpha _marker_area == 0) then { _marker_area setMarkerAlphaLocal CTI_MARKERS_OPACITY };" \n - " //if (markerAlpha _town_marker == 0) then { _town_marker setMarkerAlphaLocal 1 };" \n + " if (markerAlpha _town_marker == 0) then { _town_marker setMarkerAlphaLocal 1 };" \n " _marker_area setMarkerColorLocal ""ColorWhite"";" \n "" \n " }else {" \n " if (markerAlpha _marker_area != 0) then { _marker_area setMarkerAlphaLocal 0 };" \n - " if (markerAlpha _town_marker != 0) then { _town_marker setMarkerAlphaLocal 0 };" \n + " //if (markerAlpha _town_marker != 0) then { _town_marker setMarkerAlphaLocal 0 };" \n " };" \n "" \n "" \n From 2fe5728e2913aecfa600fc7f474d6ad85cfbd4fd Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 19 Apr 2020 14:16:25 +0200 Subject: [PATCH 178/267] Show DLC Icon if DLC is not owned Applic --- Client/Functions/UI/Functions_UI_GearMenu.sqf | 10 ++++++++-- Client/Functions/UI/Functions_UI_PurchaseMenu.sqf | 12 ++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Client/Functions/UI/Functions_UI_GearMenu.sqf b/Client/Functions/UI/Functions_UI_GearMenu.sqf index a9e92e828..aa3b9fbb2 100644 --- a/Client/Functions/UI/Functions_UI_GearMenu.sqf +++ b/Client/Functions/UI/Functions_UI_GearMenu.sqf @@ -15,7 +15,7 @@ CTI_GET_MAGAZINES = { private ["_magazines", "_well"]; params ["_weapon"]; - + _magazines = []; { if (_x == "this") then { @@ -219,7 +219,13 @@ CTI_UI_Gear_DisplayShoppingItems = { if !(isNil "_get") then { if (((_get select 0) select 0) <= _upgrade_gear) then { //--- Add the item if it's equal or below the upgrade level _row = lbAdd [70108, format ["%1 -- ($%2)",getText(configFile >> _get select 2 >> _x >> 'displayName'), (_get select 0) select 1]]; - lbSetPicture [70108, _row, getText(configFile >> _get select 2 >> _x >> 'picture')]; + _dlc= getText(configFile >> _get select 2 >> _x >> 'DLC') ; + _dlcid = getNumber (configFile >> "CfgMods" >> _dlc >> "appId"); + if (_dlcid in (getDLCs 1)||_dlcid == 0 || ( _get select 2) == "CfgMagazines") then { + lbSetPicture [70108, _row, getText(configFile >> _get select 2 >> _x >> 'picture')]; + } else { + lbSetPicture [70108, _row, getText(configFile >> "CfgMods" >> _dlc >> 'picture')]; + }; lbSetPictureColor [70108, _row, [1, 1, 1, 1]]; lbSetData [70108,_row, _x]; }; diff --git a/Client/Functions/UI/Functions_UI_PurchaseMenu.sqf b/Client/Functions/UI/Functions_UI_PurchaseMenu.sqf index 91f1c0290..017db6e73 100644 --- a/Client/Functions/UI/Functions_UI_PurchaseMenu.sqf +++ b/Client/Functions/UI/Functions_UI_PurchaseMenu.sqf @@ -76,7 +76,7 @@ CTI_UI_Purchase_FillUnitsList = { if !(isNil '_var') then { //--- Upgradeable? _load = true; - if (_upgrade > -1) then { + if (_upgrade > -1 || CTI_Debug) then { if (_upgrades select (_var select 5) < _var select CTI_UNIT_UPGRADE) then {_load = false}; }; @@ -85,7 +85,15 @@ CTI_UI_Purchase_FillUnitsList = { if (_type== CTI_FTOWN) then {_cost=_cost*CTI_TOWNS_SHOPS}; _row = ((uiNamespace getVariable "cti_dialog_ui_purchasemenu") displayCtrl 111007) lnbAddRow [format ["$%1",_cost] , _var select CTI_UNIT_LABEL]; ((uiNamespace getVariable "cti_dialog_ui_purchasemenu") displayCtrl 111007) lnbSetData [[_row, 0], _x]; - ((uiNamespace getVariable "cti_dialog_ui_purchasemenu") displayCtrl 111007) lnbSetPicture [[_row, 0], _var select CTI_UNIT_PICTURE]; + _dlc= getText(configFile >> "CfgVehicles" >> _x >> 'DLC') ; + _dlcid = getNumber (configFile >> "CfgMods" >> _dlc >> "appId"); + if (_dlcid in (getDLCs 1)||_dlcid == 0 ) then { + ((uiNamespace getVariable "cti_dialog_ui_purchasemenu") displayCtrl 111007) lnbSetPicture [[_row, 0], _var select CTI_UNIT_PICTURE]; + } else { + ((uiNamespace getVariable "cti_dialog_ui_purchasemenu") displayCtrl 111007) lnbSetPicture [[_row, 0], getText(configFile >> "CfgMods" >> _dlc >> 'picture')]; + }; + + ((uiNamespace getVariable "cti_dialog_ui_purchasemenu") displayCtrl 111007) lnbSetPictureColor [[_row, 0],[1,1,1,1]]; }; }; From 9053a85c4d66d3e63795b9c954686c92aab7a846 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 19 Apr 2020 14:20:02 +0200 Subject: [PATCH 179/267] Removing bullshit planes --- Common/Config/Units/Units_East.sqf | 4 ++-- Common/Config/Units/Units_West.sqf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Common/Config/Units/Units_East.sqf b/Common/Config/Units/Units_East.sqf index 6a030c8d0..73ddb64bd 100644 --- a/Common/Config/Units/Units_East.sqf +++ b/Common/Config/Units/Units_East.sqf @@ -871,14 +871,14 @@ _u = _u + [0]; _f = _f + [CTI_FACTORY_AMMO]; _s = _s + ["service-ammotruck"]; -_c = _c + ['C_Plane_Civil_01_F']; +/*_c = _c + ['C_Plane_Civil_01_F']; _p = _p + ['']; _n = _n + ['']; _o = _o + [4000]; _t = _t + [35]; _u = _u + [0]; _f = _f + [CTI_FACTORY_AIR]; -_s = _s + [""]; +_s = _s + [""];*/ _c = _c + ['O_UAV_02_F']; _p = _p + ['']; diff --git a/Common/Config/Units/Units_West.sqf b/Common/Config/Units/Units_West.sqf index f1424c76e..706e27f72 100644 --- a/Common/Config/Units/Units_West.sqf +++ b/Common/Config/Units/Units_West.sqf @@ -776,14 +776,14 @@ _u = _u + [0]; _f = _f + [CTI_FACTORY_AIR]; _s = _s + [""]; -_c = _c + ['C_Plane_Civil_01_F']; +/*_c = _c + ['C_Plane_Civil_01_F']; _p = _p + ['']; _n = _n + ['']; _o = _o + [4000]; _t = _t + [35]; _u = _u + [0]; _f = _f + [CTI_FACTORY_AIR]; -_s = _s + [""]; +_s = _s + [""];*/ _c = _c + ['B_Heli_Transport_01_F']; _p = _p + ['']; From 1d797e3b19b3383dcf0e945602653d24fe93c582 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 19 Apr 2020 14:23:23 +0200 Subject: [PATCH 180/267] Removing Statup MRAPS Not really used except for ealy base HQ hunting --- Common/Config/Factories/Factory_East.sqf | 4 ++-- Common/Config/Factories/Factory_West.sqf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Common/Config/Factories/Factory_East.sqf b/Common/Config/Factories/Factory_East.sqf index 3b7f43774..0628779ef 100644 --- a/Common/Config/Factories/Factory_East.sqf +++ b/Common/Config/Factories/Factory_East.sqf @@ -26,7 +26,7 @@ missionNamespace setVariable [format["CTI_%1_Vehicles_Startup", _side], [ ["Toolkit", 3], ["B_FieldPack_ocamo", 4], ["Binocular", 2] - ]], + ]]/*, ["O_MRAP_02_F", [ ["firstaidkit", 10], ["30Rnd_556x45_Stanag", 15], @@ -34,7 +34,7 @@ missionNamespace setVariable [format["CTI_%1_Vehicles_Startup", _side], [ ["launch_RPG7_F", 2], ["RPG7_F", 6], ["Binocular", 1], ["Toolkit", 1] - ]] + ]]*/ //, ["O_Heli_Light_02_unarmed_F", []] ]]; diff --git a/Common/Config/Factories/Factory_West.sqf b/Common/Config/Factories/Factory_West.sqf index aa561fb51..8e7523e2a 100644 --- a/Common/Config/Factories/Factory_West.sqf +++ b/Common/Config/Factories/Factory_West.sqf @@ -26,7 +26,7 @@ missionNamespace setVariable [format["CTI_%1_Vehicles_Startup", _side], [ ["Toolkit", 3], ["B_AssaultPack_rgr", 4], ["Binocular", 2] - ]], + ]]/*, ["B_MRAP_01_F", [ ["firstaidkit", 10], ["30Rnd_556x45_Stanag", 15], @@ -34,7 +34,7 @@ missionNamespace setVariable [format["CTI_%1_Vehicles_Startup", _side], [ ["launch_MRAWS_olive_rail_F", 2], ["MRAWS_HEAT_F", 6], ["Binocular", 1], ["Toolkit", 1] - ]] + ]]*/ //, ["B_Heli_Transport_01_F", []] ]]; From 9bd5936c3c9ec7adc42d08c00be0aa67dc7704ad Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 19 Apr 2020 14:25:48 +0200 Subject: [PATCH 181/267] Medic pod set to 6k Prevent abuse --- Common/Config/Units/Units_East.sqf | 2 +- Common/Config/Units/Units_West.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/Config/Units/Units_East.sqf b/Common/Config/Units/Units_East.sqf index 73ddb64bd..af0f7998b 100644 --- a/Common/Config/Units/Units_East.sqf +++ b/Common/Config/Units/Units_East.sqf @@ -1019,7 +1019,7 @@ _s = _s + [""]; _c = _c + ["Land_Pod_Heli_Transport_04_medevac_F"]; _p = _p + ['']; _n = _n + ['']; -_o = _o + [10000]; +_o = _o + [6000]; _t = _t + [25]; _u = _u + [0]; _f = _f + [CTI_FACTORY_AIR]; diff --git a/Common/Config/Units/Units_West.sqf b/Common/Config/Units/Units_West.sqf index 706e27f72..d0b58cc8b 100644 --- a/Common/Config/Units/Units_West.sqf +++ b/Common/Config/Units/Units_West.sqf @@ -860,7 +860,7 @@ _s = _s + [""]; _c = _c + ["B_Slingload_01_Medevac_F"]; _p = _p + ['']; _n = _n + ['']; -_o = _o + [10000]; +_o = _o + [6000]; _t = _t + [25]; _u = _u + [0]; _f = _f + [CTI_FACTORY_AIR]; From 5377a511ed294be54550122405e657f5067328ce Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 19 Apr 2020 14:37:59 +0200 Subject: [PATCH 182/267] Revert "Respawn menu correction" This reverts commit 651a097bc6d9638fbac157f5a5b700490d2befda. --- Client/Functions/UI/Functions_UI_RespawnMenu.sqf | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf index c37aa3246..e3bef09c2 100644 --- a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf +++ b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf @@ -38,11 +38,6 @@ CTI_UI_Respawn_GetAvailableLocations = { _ignore_mobile_crew = []; if ((missionNamespace getVariable "CTI_RESPAWN_MOBILE") > 0) then { _mobile = (CTI_DeathPosition) call CTI_UI_Respawn_GetMobileRespawn; - _mobile_at_sky = []; - for "_i" from 0 to ((count _mobile) - 1) do { - if ((getposATL (_mobile select _i) select 2) > 4) then {_mobile_at_sky = _mobile_at_sky + [_mobile select _i]}; - }; - _mobile = _mobile - _mobile_at_sky; _list = _list + _mobile; {{if (group _x == group player) then {_ignore_mobile_crew pushBack _x}} forEach crew _x} forEach _mobile; }; From 337248bfbadc8d966b7e9ad4e7e376d95f868137 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 19 Apr 2020 14:45:52 +0200 Subject: [PATCH 183/267] New fix for FLying mobile respawn --- Client/Functions/UI/Functions_UI_RespawnMenu.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf index e3bef09c2..5c5bd786f 100644 --- a/Client/Functions/UI/Functions_UI_RespawnMenu.sqf +++ b/Client/Functions/UI/Functions_UI_RespawnMenu.sqf @@ -60,7 +60,7 @@ CTI_UI_Respawn_GetMobileRespawn = { _available = []; { - if (CTI_SPECIAL_MEDICALVEHICLE in (_x getVariable ["cti_spec", []]) && (_x getVariable ["cti_net", -1]) == CTI_P_SideID && ((getPosASL _x) select 2)>0) then {_available pushBack _x}; + if (CTI_SPECIAL_MEDICALVEHICLE in (_x getVariable ["cti_spec", []]) && (_x getVariable ["cti_net", -1]) == CTI_P_SideID && ((getPosASL _x) select 2)>0 && ((getPosAtl _x) select 2)<4) then {_available pushBack _x}; } forEach (_center nearEntities [["Car","Air","Tank","Ship","Thing","StaticWeapon"], _range]); _available }; From e1b7b06ae70660ea945830c1228a42a047c94150 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 19 Apr 2020 14:46:15 +0200 Subject: [PATCH 184/267] New towns and links --- mission.sqm | 120 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 86 insertions(+), 34 deletions(-) diff --git a/mission.sqm b/mission.sqm index a8ed450bf..bf8bbc354 100644 --- a/mission.sqm +++ b/mission.sqm @@ -8,7 +8,7 @@ class EditorData toggles=1025; class ItemIDProvider { - nextID=186; + nextID=191; }; class MarkerIDProvider { @@ -16,10 +16,10 @@ class EditorData }; class Camera { - pos[]={18466.764,21.634983,8133.1084}; - dir[]={-0.86005527,-0.48922947,-0.14483939}; - up[]={-0.48244229,0.8721509,-0.081246704}; - aside[]={-0.16607118,4.1171734e-007,0.98612124}; + pos[]={6402.3579,147.84155,13750.018}; + dir[]={0.87367475,-0.25411302,0.41491246}; + up[]={0.2295492,0.96717048,0.10901354}; + aside[]={0.42899126,-1.6266131e-007,-0.9033218}; }; }; binarizationWanted=0; @@ -115,7 +115,7 @@ class Mission }; class Entities { - items=131; + items=133; class Item0 { dataType="Marker"; @@ -1306,14 +1306,13 @@ class Mission dataType="Logic"; class PositionInfo { - position[]={21091.016,5.8291836,14768.472}; - angles[]={0.017332481,0,0.12468339}; + position[]={20288.293,14.734743,14770.421}; }; name="Town45"; init="nullReturn = [this, localize ""str_a3_limni0"", resistance, 140] execVM ""Common\Init\Init_Location.sqf"""; id=106; type="Logic"; - atlOffset=4.0086684; + atlOffset=4.0088005; }; class Item107 { @@ -1438,6 +1437,7 @@ class Mission }; id=115; type="O_Soldier_F"; + atlOffset=4.7683716e-007; class CustomAttributes { class Attribute0 @@ -1500,6 +1500,7 @@ class Mission }; id=116; type="O_Soldier_SL_F"; + atlOffset=4.7683716e-007; class CustomAttributes { class Attribute0 @@ -1580,6 +1581,7 @@ class Mission }; id=118; type="O_Soldier_SL_F"; + atlOffset=4.7683716e-007; }; class Item5 { @@ -1832,6 +1834,7 @@ class Mission }; id=131; type="O_Soldier_SL_F"; + atlOffset=-9.5367432e-007; }; class Item18 { @@ -2293,6 +2296,7 @@ class Mission }; id=151; type="B_Soldier_SL_F"; + atlOffset=-9.5367432e-007; }; class Item12 { @@ -2502,6 +2506,7 @@ class Mission }; id=162; type="B_Soldier_SL_F"; + atlOffset=-9.5367432e-007; }; class Item23 { @@ -2521,6 +2526,7 @@ class Mission }; id=163; type="B_Soldier_SL_F"; + atlOffset=-9.5367432e-007; }; class Item24 { @@ -2913,16 +2919,42 @@ class Mission type="Logic"; atlOffset=3.9910002; }; + class Item131 + { + dataType="Logic"; + class PositionInfo + { + position[]={10455.959,90.158836,17282.502}; + }; + name="Town56"; + init="nullReturn = [this, ""Orino"", resistance, 150] execVM ""Common\Init\Init_Location.sqf"""; + id=186; + type="Logic"; + atlOffset=3.9769974; + }; + class Item132 + { + dataType="Logic"; + class PositionInfo + { + position[]={6451.8208,125.43697,13776.043}; + }; + name="Town57"; + init="nullReturn = [this, ""Lost Camp"", resistance, 125] execVM ""Common\Init\Init_Location.sqf"""; + id=190; + type="Logic"; + atlOffset=3.977005; + }; }; class Connections { class LinkIDProvider { - nextID=122; + nextID=124; }; class Links { - items=122; + items=124; class Item0 { linkID=0; @@ -4026,8 +4058,8 @@ class Mission class Item110 { linkID=110; - item0=77; - item1=73; + item0=91; + item1=62; class CustomData { type="Sync"; @@ -4036,8 +4068,8 @@ class Mission class Item111 { linkID=111; - item0=93; - item1=94; + item0=96; + item1=97; class CustomData { type="Sync"; @@ -4046,8 +4078,8 @@ class Mission class Item112 { linkID=112; - item0=91; - item1=62; + item0=62; + item1=94; class CustomData { type="Sync"; @@ -4056,8 +4088,8 @@ class Mission class Item113 { linkID=113; - item0=96; - item1=97; + item0=97; + item1=104; class CustomData { type="Sync"; @@ -4066,8 +4098,8 @@ class Mission class Item114 { linkID=114; - item0=62; - item1=94; + item0=86; + item1=87; class CustomData { type="Sync"; @@ -4076,8 +4108,8 @@ class Mission class Item115 { linkID=115; - item0=97; - item1=104; + item0=110; + item1=182; class CustomData { type="Sync"; @@ -4086,8 +4118,8 @@ class Mission class Item116 { linkID=116; - item0=86; - item1=87; + item0=72; + item1=94; class CustomData { type="Sync"; @@ -4096,8 +4128,8 @@ class Mission class Item117 { linkID=117; - item0=110; - item1=182; + item0=72; + item1=83; class CustomData { type="Sync"; @@ -4106,8 +4138,8 @@ class Mission class Item118 { linkID=118; - item0=72; - item1=94; + item0=185; + item1=87; class CustomData { type="Sync"; @@ -4116,8 +4148,8 @@ class Mission class Item119 { linkID=119; - item0=72; - item1=83; + item0=85; + item1=105; class CustomData { type="Sync"; @@ -4126,8 +4158,8 @@ class Mission class Item120 { linkID=120; - item0=185; - item1=87; + item0=77; + item1=186; class CustomData { type="Sync"; @@ -4136,13 +4168,33 @@ class Mission class Item121 { linkID=121; - item0=85; + item0=186; + item1=73; + class CustomData + { + type="Sync"; + }; + }; + class Item122 + { + linkID=122; + item0=190; item1=105; class CustomData { type="Sync"; }; }; + class Item123 + { + linkID=123; + item0=185; + item1=93; + class CustomData + { + type="Sync"; + }; + }; }; }; }; From ad5a9de46a30ee474c678e5dba4acd96b88320fb Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 19 Apr 2020 15:21:35 +0200 Subject: [PATCH 185/267] Change in BP parameter for server --- Rsc/Parameters.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rsc/Parameters.hpp b/Rsc/Parameters.hpp index b6085f00e..c2583ce5c 100644 --- a/Rsc/Parameters.hpp +++ b/Rsc/Parameters.hpp @@ -441,7 +441,7 @@ class Params { title = $STR_CTI_SM_BASEP_M; values[] = {0,-1,2,5,10,20,50,100}; texts[] = {$STR_CTI_DISABLED,"Hard Protection","Dmg reduced by 2","Dmg reduced by 5","Dmg reduced by 10","Dmg reduced by 20","Dmg reduced by 50","Dmg reduced by 100"}; - default = -1; + default = 50; }; class CTI_SM_PATROLS { From b167d1a374e9bd9bb7096d2a5713c26191b5fb27 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 20 Apr 2020 09:24:46 +0200 Subject: [PATCH 186/267] Map update --- mission.sqm | 321 ++++++++++++++++++++++++++++------------------------ 1 file changed, 172 insertions(+), 149 deletions(-) diff --git a/mission.sqm b/mission.sqm index bf8bbc354..b4a366536 100644 --- a/mission.sqm +++ b/mission.sqm @@ -8,7 +8,7 @@ class EditorData toggles=1025; class ItemIDProvider { - nextID=191; + nextID=192; }; class MarkerIDProvider { @@ -16,10 +16,10 @@ class EditorData }; class Camera { - pos[]={6402.3579,147.84155,13750.018}; - dir[]={0.87367475,-0.25411302,0.41491246}; - up[]={0.2295492,0.96717048,0.10901354}; - aside[]={0.42899126,-1.6266131e-007,-0.9033218}; + pos[]={16551.203,1725.5931,16140.479}; + dir[]={0.5765183,-0.71965694,0.38707608}; + up[]={0.59746611,0.69434953,0.40114108}; + aside[]={0.55744642,2.0091538e-006,-0.83027512}; }; }; binarizationWanted=0; @@ -115,7 +115,7 @@ class Mission }; class Entities { - items=133; + items=134; class Item0 { dataType="Marker"; @@ -2945,16 +2945,29 @@ class Mission type="Logic"; atlOffset=3.977005; }; + class Item133 + { + dataType="Logic"; + class PositionInfo + { + position[]={9330.1084,42.790623,13706.522}; + }; + name="Town58"; + init="nullReturn = [this, ""Xirolimni Dam"", resistance, 200] execVM ""Common\Init\Init_Location.sqf"""; + id=191; + type="Logic"; + atlOffset=3.9770012; + }; }; class Connections { class LinkIDProvider { - nextID=124; + nextID=125; }; class Links { - items=124; + items=125; class Item0 { linkID=0; @@ -3478,8 +3491,8 @@ class Mission class Item52 { linkID=52; - item0=79; - item1=76; + item0=80; + item1=105; class CustomData { type="Sync"; @@ -3488,8 +3501,8 @@ class Mission class Item53 { linkID=53; - item0=79; - item1=181; + item0=105; + item1=88; class CustomData { type="Sync"; @@ -3498,8 +3511,8 @@ class Mission class Item54 { linkID=54; - item0=80; - item1=105; + item0=88; + item1=76; class CustomData { type="Sync"; @@ -3508,8 +3521,8 @@ class Mission class Item55 { linkID=55; - item0=105; - item1=88; + item0=76; + item1=77; class CustomData { type="Sync"; @@ -3518,8 +3531,8 @@ class Mission class Item56 { linkID=56; - item0=88; - item1=181; + item0=77; + item1=81; class CustomData { type="Sync"; @@ -3528,8 +3541,8 @@ class Mission class Item57 { linkID=57; - item0=88; - item1=76; + item0=81; + item1=82; class CustomData { type="Sync"; @@ -3538,8 +3551,8 @@ class Mission class Item58 { linkID=58; - item0=76; - item1=77; + item0=82; + item1=70; class CustomData { type="Sync"; @@ -3548,8 +3561,8 @@ class Mission class Item59 { linkID=59; - item0=77; - item1=81; + item0=70; + item1=69; class CustomData { type="Sync"; @@ -3558,8 +3571,8 @@ class Mission class Item60 { linkID=60; - item0=81; - item1=82; + item0=70; + item1=92; class CustomData { type="Sync"; @@ -3568,8 +3581,8 @@ class Mission class Item61 { linkID=61; - item0=82; - item1=70; + item0=92; + item1=66; class CustomData { type="Sync"; @@ -3578,8 +3591,8 @@ class Mission class Item62 { linkID=62; - item0=70; - item1=69; + item0=66; + item1=64; class CustomData { type="Sync"; @@ -3588,8 +3601,8 @@ class Mission class Item63 { linkID=63; - item0=70; - item1=92; + item0=64; + item1=69; class CustomData { type="Sync"; @@ -3598,8 +3611,8 @@ class Mission class Item64 { linkID=64; - item0=92; - item1=66; + item0=64; + item1=62; class CustomData { type="Sync"; @@ -3608,8 +3621,8 @@ class Mission class Item65 { linkID=65; - item0=66; - item1=64; + item0=62; + item1=63; class CustomData { type="Sync"; @@ -3618,8 +3631,8 @@ class Mission class Item66 { linkID=66; - item0=64; - item1=69; + item0=66; + item1=67; class CustomData { type="Sync"; @@ -3628,8 +3641,8 @@ class Mission class Item67 { linkID=67; - item0=64; - item1=62; + item0=67; + item1=65; class CustomData { type="Sync"; @@ -3638,7 +3651,7 @@ class Mission class Item68 { linkID=68; - item0=62; + item0=106; item1=63; class CustomData { @@ -3648,8 +3661,8 @@ class Mission class Item69 { linkID=69; - item0=66; - item1=67; + item0=63; + item1=83; class CustomData { type="Sync"; @@ -3658,8 +3671,8 @@ class Mission class Item70 { linkID=70; - item0=67; - item1=65; + item0=83; + item1=87; class CustomData { type="Sync"; @@ -3668,8 +3681,8 @@ class Mission class Item71 { linkID=71; - item0=106; - item1=63; + item0=87; + item1=108; class CustomData { type="Sync"; @@ -3678,8 +3691,8 @@ class Mission class Item72 { linkID=72; - item0=63; - item1=83; + item0=108; + item1=61; class CustomData { type="Sync"; @@ -3688,8 +3701,8 @@ class Mission class Item73 { linkID=73; - item0=83; - item1=87; + item0=93; + item1=79; class CustomData { type="Sync"; @@ -3698,8 +3711,8 @@ class Mission class Item74 { linkID=74; - item0=87; - item1=108; + item0=99; + item1=73; class CustomData { type="Sync"; @@ -3708,8 +3721,8 @@ class Mission class Item75 { linkID=75; - item0=108; - item1=61; + item0=73; + item1=75; class CustomData { type="Sync"; @@ -3718,8 +3731,8 @@ class Mission class Item76 { linkID=76; - item0=93; - item1=79; + item0=75; + item1=88; class CustomData { type="Sync"; @@ -3728,8 +3741,8 @@ class Mission class Item77 { linkID=77; - item0=99; - item1=73; + item0=73; + item1=71; class CustomData { type="Sync"; @@ -3738,8 +3751,8 @@ class Mission class Item78 { linkID=78; - item0=73; - item1=75; + item0=71; + item1=82; class CustomData { type="Sync"; @@ -3748,8 +3761,8 @@ class Mission class Item79 { linkID=79; - item0=75; - item1=88; + item0=67; + item1=100; class CustomData { type="Sync"; @@ -3758,8 +3771,8 @@ class Mission class Item80 { linkID=80; - item0=73; - item1=71; + item0=100; + item1=89; class CustomData { type="Sync"; @@ -3768,8 +3781,8 @@ class Mission class Item81 { linkID=81; - item0=71; - item1=82; + item0=91; + item1=90; class CustomData { type="Sync"; @@ -3778,8 +3791,8 @@ class Mission class Item82 { linkID=82; - item0=67; - item1=100; + item0=90; + item1=101; class CustomData { type="Sync"; @@ -3788,8 +3801,8 @@ class Mission class Item83 { linkID=83; - item0=100; - item1=89; + item0=90; + item1=78; class CustomData { type="Sync"; @@ -3798,8 +3811,8 @@ class Mission class Item84 { linkID=84; - item0=91; - item1=90; + item0=78; + item1=77; class CustomData { type="Sync"; @@ -3808,8 +3821,8 @@ class Mission class Item85 { linkID=85; - item0=90; - item1=101; + item0=109; + item1=75; class CustomData { type="Sync"; @@ -3818,8 +3831,8 @@ class Mission class Item86 { linkID=86; - item0=90; - item1=78; + item0=109; + item1=74; class CustomData { type="Sync"; @@ -3828,8 +3841,8 @@ class Mission class Item87 { linkID=87; - item0=78; - item1=77; + item0=107; + item1=85; class CustomData { type="Sync"; @@ -3838,8 +3851,8 @@ class Mission class Item88 { linkID=88; - item0=109; - item1=75; + item0=85; + item1=180; class CustomData { type="Sync"; @@ -3848,8 +3861,8 @@ class Mission class Item89 { linkID=89; - item0=109; - item1=74; + item0=85; + item1=88; class CustomData { type="Sync"; @@ -3858,8 +3871,8 @@ class Mission class Item90 { linkID=90; - item0=107; - item1=85; + item0=100; + item1=86; class CustomData { type="Sync"; @@ -3868,8 +3881,8 @@ class Mission class Item91 { linkID=91; - item0=85; - item1=180; + item0=86; + item1=68; class CustomData { type="Sync"; @@ -3878,8 +3891,8 @@ class Mission class Item92 { linkID=92; - item0=85; - item1=88; + item0=68; + item1=102; class CustomData { type="Sync"; @@ -3889,7 +3902,7 @@ class Mission { linkID=93; item0=100; - item1=86; + item1=104; class CustomData { type="Sync"; @@ -3898,8 +3911,8 @@ class Mission class Item94 { linkID=94; - item0=86; - item1=68; + item0=84; + item1=71; class CustomData { type="Sync"; @@ -3908,8 +3921,8 @@ class Mission class Item95 { linkID=95; - item0=68; - item1=102; + item0=95; + item1=96; class CustomData { type="Sync"; @@ -3918,8 +3931,8 @@ class Mission class Item96 { linkID=96; - item0=100; - item1=104; + item0=78; + item1=184; class CustomData { type="Sync"; @@ -3928,8 +3941,8 @@ class Mission class Item97 { linkID=97; - item0=84; - item1=71; + item0=79; + item1=78; class CustomData { type="Sync"; @@ -3938,8 +3951,8 @@ class Mission class Item98 { linkID=98; - item0=95; - item1=96; + item0=104; + item1=110; class CustomData { type="Sync"; @@ -3948,8 +3961,8 @@ class Mission class Item99 { linkID=99; - item0=78; - item1=184; + item0=67; + item1=98; class CustomData { type="Sync"; @@ -3958,8 +3971,8 @@ class Mission class Item100 { linkID=100; - item0=79; - item1=78; + item0=98; + item1=97; class CustomData { type="Sync"; @@ -3968,8 +3981,8 @@ class Mission class Item101 { linkID=101; - item0=104; - item1=110; + item0=87; + item1=94; class CustomData { type="Sync"; @@ -3978,8 +3991,8 @@ class Mission class Item102 { linkID=102; - item0=67; - item1=98; + item0=107; + item1=109; class CustomData { type="Sync"; @@ -3988,8 +4001,8 @@ class Mission class Item103 { linkID=103; - item0=98; - item1=97; + item0=110; + item1=68; class CustomData { type="Sync"; @@ -3998,8 +4011,8 @@ class Mission class Item104 { linkID=104; - item0=87; - item1=94; + item0=182; + item1=73; class CustomData { type="Sync"; @@ -4008,8 +4021,8 @@ class Mission class Item105 { linkID=105; - item0=107; - item1=109; + item0=95; + item1=182; class CustomData { type="Sync"; @@ -4018,8 +4031,8 @@ class Mission class Item106 { linkID=106; - item0=110; - item1=68; + item0=95; + item1=71; class CustomData { type="Sync"; @@ -4028,8 +4041,8 @@ class Mission class Item107 { linkID=107; - item0=182; - item1=73; + item0=91; + item1=62; class CustomData { type="Sync"; @@ -4038,8 +4051,8 @@ class Mission class Item108 { linkID=108; - item0=95; - item1=182; + item0=96; + item1=97; class CustomData { type="Sync"; @@ -4048,8 +4061,8 @@ class Mission class Item109 { linkID=109; - item0=95; - item1=71; + item0=62; + item1=94; class CustomData { type="Sync"; @@ -4058,8 +4071,8 @@ class Mission class Item110 { linkID=110; - item0=91; - item1=62; + item0=97; + item1=104; class CustomData { type="Sync"; @@ -4068,8 +4081,8 @@ class Mission class Item111 { linkID=111; - item0=96; - item1=97; + item0=86; + item1=87; class CustomData { type="Sync"; @@ -4078,8 +4091,8 @@ class Mission class Item112 { linkID=112; - item0=62; - item1=94; + item0=110; + item1=182; class CustomData { type="Sync"; @@ -4088,8 +4101,8 @@ class Mission class Item113 { linkID=113; - item0=97; - item1=104; + item0=72; + item1=94; class CustomData { type="Sync"; @@ -4098,8 +4111,8 @@ class Mission class Item114 { linkID=114; - item0=86; - item1=87; + item0=72; + item1=83; class CustomData { type="Sync"; @@ -4108,8 +4121,8 @@ class Mission class Item115 { linkID=115; - item0=110; - item1=182; + item0=185; + item1=87; class CustomData { type="Sync"; @@ -4118,8 +4131,8 @@ class Mission class Item116 { linkID=116; - item0=72; - item1=94; + item0=85; + item1=105; class CustomData { type="Sync"; @@ -4128,8 +4141,8 @@ class Mission class Item117 { linkID=117; - item0=72; - item1=83; + item0=77; + item1=186; class CustomData { type="Sync"; @@ -4138,8 +4151,8 @@ class Mission class Item118 { linkID=118; - item0=185; - item1=87; + item0=186; + item1=73; class CustomData { type="Sync"; @@ -4148,7 +4161,7 @@ class Mission class Item119 { linkID=119; - item0=85; + item0=190; item1=105; class CustomData { @@ -4158,8 +4171,8 @@ class Mission class Item120 { linkID=120; - item0=77; - item1=186; + item0=185; + item1=93; class CustomData { type="Sync"; @@ -4168,8 +4181,8 @@ class Mission class Item121 { linkID=121; - item0=186; - item1=73; + item0=79; + item1=191; class CustomData { type="Sync"; @@ -4178,8 +4191,8 @@ class Mission class Item122 { linkID=122; - item0=190; - item1=105; + item0=191; + item1=76; class CustomData { type="Sync"; @@ -4188,8 +4201,18 @@ class Mission class Item123 { linkID=123; - item0=185; - item1=93; + item0=191; + item1=181; + class CustomData + { + type="Sync"; + }; + }; + class Item124 + { + linkID=124; + item0=106; + item1=65; class CustomData { type="Sync"; From 9cdad913fb2b2306a71bac3c51fbaeba83e46fc2 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 20 Apr 2020 09:32:13 +0200 Subject: [PATCH 187/267] Map format retrocompatibility --- Common/Init/Init_Location.sqf | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Common/Init/Init_Location.sqf b/Common/Init/Init_Location.sqf index dc74f9b9b..c4907b97f 100644 --- a/Common/Init/Init_Location.sqf +++ b/Common/Init/Init_Location.sqf @@ -29,9 +29,14 @@ if (CTI_IsServer || CTI_IsHeadless) then { _current_side = _sideID call CTI_CO_FNC_GetSideFromID; - _flag= createVehicle ["Flagpole_F", getPos _town, [], 0, "CAN_COLLIDE"]; - _flag allowDamage false; - _town setVariable ["cti_town_flag",_flag,true]; + if !((typeOf _town) == "Flagpole_F") then { + _flag= createVehicle ["Flagpole_F", getPos _town, [], 0, "CAN_COLLIDE"]; + _flag allowDamage false; + _town setVariable ["cti_town_flag",_flag,true]; + } else { + _town setVariable ["cti_town_flag",_town,true]; + }; + (_town getVariable ["cti_town_flag",objnull]) setFlagTexture ( _current_side call CTI_CO_FNC_GetSideFlag); From 509289b0fb10788935fd447523f9be904da70d5f Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 20 Apr 2020 09:48:28 +0200 Subject: [PATCH 188/267] Prevent Clean Up of AI teams --- Addons/Strat_mode/Functions/SM_CleanUp.sqf | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_CleanUp.sqf b/Addons/Strat_mode/Functions/SM_CleanUp.sqf index 4834b8cd8..d8174e889 100644 --- a/Addons/Strat_mode/Functions/SM_CleanUp.sqf +++ b/Addons/Strat_mode/Functions/SM_CleanUp.sqf @@ -54,7 +54,7 @@ SM_CLEAN_GCONT= { //Clean all groups that are no longer tracked by the mission (e.g. kicked units from BIS_fnc_dynamicGroups) SM_CLEAN_DG= { private ["_side", "_logic", "_groups", "_check"]; - _check = { + _check = { params ["_side"]; _logic=(_side) call CTI_CO_FNC_GetSideLogic; _groups = allGroups select {side _x isEqualTo _side}; @@ -72,7 +72,7 @@ SM_CLEAN_DG= { [_x] spawn { params ["_group"]; _is_player_group = false; - //Scan over a period of time if the player is / was in the group before deleting it. + //Scan over a period of time if the player is / was in the group before deleting it. //When a player suicides the group is not in BIS_fnc_dynamicGroups se we have to check multiple times: for [{private _i = 0}, {_i < 25}, {_i = _i + 1}] do { sleep(10); @@ -80,18 +80,18 @@ SM_CLEAN_DG= { _is_player_group = true; }; if(_is_player_group isEqualTo true) exitwith {}; - }; + }; //Now we can assume that the no player is in that group: if(!(isNull _group) && _is_player_group isEqualTo false) then { //Empty the group and delete it - { deleteVehicle _x } forEach units _group; + { deleteVehicle _x } forEach units _group; deleteGroup _group; }; } } } forEach _groups; }; - + while {! CTI_GameOver} do { { [_x] call _check; @@ -114,9 +114,14 @@ SM_CLEAN_STRUCTURES={ }; 0 spawn SM_CLEAN_REVIVES; -if (missionNamespace getVariable "CTI_AI_TEAMS_ENABLED" ==0)then { 0 spawn SM_CLEAN_GROUPS}; + +if (missionNamespace getVariable "CTI_AI_TEAMS_ENABLED" ==0)then { + 0 spawn SM_CLEAN_GROUPS; + 0 spawn SM_CLEAN_DG; +}; + 0 spawn SM_CLEAN_GCONT; -0 spawn SM_CLEAN_DG; + { _x spawn SM_CLEAN_STRUCTURES; } forEach [east,west]; \ No newline at end of file From 7e8becd6067e3fca4f5e8b54ba73fc79429e4656 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 20 Apr 2020 11:20:15 +0200 Subject: [PATCH 189/267] Prevent flying flags --- Common/Init/Init_Location.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/Common/Init/Init_Location.sqf b/Common/Init/Init_Location.sqf index c4907b97f..ef76f490c 100644 --- a/Common/Init/Init_Location.sqf +++ b/Common/Init/Init_Location.sqf @@ -31,6 +31,7 @@ if (CTI_IsServer || CTI_IsHeadless) then { if !((typeOf _town) == "Flagpole_F") then { _flag= createVehicle ["Flagpole_F", getPos _town, [], 0, "CAN_COLLIDE"]; + _flag setPosATL [getPos _flag select 0,getPos _flag select 1,0]; _flag allowDamage false; _town setVariable ["cti_town_flag",_flag,true]; } else { From 87495f4c0efedb2c097fdb69bc42e98ac0bc07ae Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 20 Apr 2020 15:45:39 +0200 Subject: [PATCH 190/267] Static AA and AT Nix Also share targets --- .../Strat_mode/Functions/SM_Map_Statics.sqf | 37 ++++++++++++++ .../Functions/SM_Map_Statics_Clean.sqf | 0 .../Functions/SM_Map_Statics_Create.sqf | 45 +++++++++++++++++ .../Functions/SM_Map_Statics_Loop.sqf | 48 +++++++++++++++++++ Addons/Strat_mode/init.sqf | 6 +++ Common/Functions/Common_ManVehicle.sqf | 2 +- Rsc/Parameters.hpp | 2 +- 7 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 Addons/Strat_mode/Functions/SM_Map_Statics.sqf create mode 100644 Addons/Strat_mode/Functions/SM_Map_Statics_Clean.sqf create mode 100644 Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf create mode 100644 Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics.sqf new file mode 100644 index 000000000..55b3c3cd7 --- /dev/null +++ b/Addons/Strat_mode/Functions/SM_Map_Statics.sqf @@ -0,0 +1,37 @@ +SM_ST_Create = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\SM_Map_Statics_Create.sqf"; +SM_ST_Clean = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\SM_Map_Statics_Clean.sqf"; +SM_ST_Loop = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\SM_Map_Statics_Loop.sqf"; + +SM_ST_PARAM=[["AT",15],["AA",8]]; + +SM_ST_Groups=[]; + +private ["_towns","_town"]; +_towns = []+CTI_Towns; + +{ + for "_i" from 0 to (_x select 1) step 1 do + { + _town = selectRandom _towns; + _towns= _towns - [_town]; + _group = [_x select 0 ,_town] call SM_ST_Create; + if (!(isNil "_group") && _group != grpNull) then { + _group setVariable ["cti_server_group", str "GUER"]; + _group setCombatMode "RED"; + _group setBehaviourStrong "COMBAT"; + { + _x setskill 0.8; + _x setSkill ["spotDistance", 1]; + _x setSkill ["spotTime", 1]; + _x disableAI "MOVE" ; + true + } count (units _group ); + SM_ST_Groups pushBackUnique _group; + }; + }; + true +} count SM_ST_PARAM; + + + +0 spawn SM_ST_Loop; \ No newline at end of file diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Clean.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Clean.sqf new file mode 100644 index 000000000..e69de29bb diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf new file mode 100644 index 000000000..f8fad97be --- /dev/null +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf @@ -0,0 +1,45 @@ + +private ["_type","_town","_pos","_veh"]; + +_type= _this select 0; +_town= _this select 1; +_group = grpNull; + +switch (_type) do +{ + case "AA": + { + //Find location + _pos=[getpos _town,2000,800] call BIS_fnc_findOverwatch; + // Create group + _group= createGroup resistance; + // Create vehicle + _veh = ["I_LT_01_AA_F", _pos, random(360), resistance, true, true, true] call CTI_CO_FNC_CreateVehicle; + [_veh, "I_crew_F", _group, CTI_RESISTANCE_ID] call CTI_CO_FNC_ManVehicle; + // remove fuel + _veh setFuel 0 ; + + + + + }; + case "AT": + { + //Find location + _pos=[getpos _town,2000,800] call BIS_fnc_findOverwatch; + // Create group + _group= createGroup resistance; + // Create vehicle + _veh = ["I_LT_01_AT_F", _pos, random(360), resistance, true, true, true] call CTI_CO_FNC_CreateVehicle; + [_veh, "I_crew_F", _group, CTI_RESISTANCE_ID] call CTI_CO_FNC_ManVehicle; + // remove fuel + _veh setFuel 0 ; + }; + + default + { + /* STATEMENT */ + }; +}; + +_group \ No newline at end of file diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf new file mode 100644 index 000000000..0d8c02916 --- /dev/null +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf @@ -0,0 +1,48 @@ +#define SENSIVITY 2 +#define MAX_RANGE 4000 + + + +while {!CTI_GameOver} do +{ + waitUntil {!isnil "SM_ST_Groups"}; + //remove empty groups (destroyed units) + SM_ST_Groups=SM_ST_Groups-[grpNull]; + _targets=[]; + + { + _group=_x; + + //rearm + { + _x setVehicleAmmo 1; + true + } count (units _x); + + //set active + _x setCombatMode "RED"; + + //register targets + _group_targets=(leader _group) nearTargets (MAX_RANGE); + + { + if ((_group knowsAbout (_x select 4))>SENSIVITY && (_x select 2) != resistance ) then {_targets pushBackUnique (_x select 4)}; + true + } count _group_targets; + + true + } count SM_ST_Groups; + + _targets=_targets-[objNull]; + diag_log _targets; + //share targets because fuck players + { + _group=_x; + { + if !(isnull _x) then {_group reveal [_x,SENSIVITY+1]}; + true + } count _targets; + true + } count SM_ST_Groups; + sleep 30; +}; \ No newline at end of file diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index a7a20fa6e..20a3aa344 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -59,6 +59,9 @@ with missionNamespace do { CTI_SM_Mines_script = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\SM_Mines.sqf"; TASKS_LOOP= compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\TASKS_loop.sqf"; + + SM_ST_Init = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\SM_Map_Statics.sqf"; + }; //Common stuff @@ -373,6 +376,9 @@ if (CTI_IsServer) then { // Tasks loop {_x spawn TASKS_LOOP;} foreach [east,west]; + //Statics + 0 call SM_ST_Init; + }; if (CTI_IsClient) then { diff --git a/Common/Functions/Common_ManVehicle.sqf b/Common/Functions/Common_ManVehicle.sqf index 1dbf4e84f..33406ef60 100644 --- a/Common/Functions/Common_ManVehicle.sqf +++ b/Common/Functions/Common_ManVehicle.sqf @@ -53,7 +53,7 @@ _position = getPos _vehicle; _position = [(_position select 0) + 5, (_position select 1) + 5, 0]; _net = if ((missionNamespace getVariable "CTI_MARKERS_INFANTRY") == 1 && _sideID in [CTI_WEST_ID, CTI_EAST_ID]) then { true } else { false }; -_group setVariable ["cti_server_group", format ["%1", _side], true]; +_group setVariable ["cti_server_group", format ["%1", str _sideid], true]; if (_vehicle emptyPositions "driver" > 0) then { _unit = [_crew, _group, _position, _sideID, _net] call CTI_CO_FNC_CreateUnit; _unit moveInDriver _vehicle; diff --git a/Rsc/Parameters.hpp b/Rsc/Parameters.hpp index c2583ce5c..0bc38fbd7 100644 --- a/Rsc/Parameters.hpp +++ b/Rsc/Parameters.hpp @@ -448,7 +448,7 @@ class Params { title = $STR_CTI_SM_PATROLS; values[] = {0,1}; texts[] = {$STR_CTI_DISABLED,$STR_CTI_ENABLED}; - default = 1; + default = 0; }; /*class CTI_SM_PATROLS_NUMBER { title = "Zerty: Strategic: Patrols number"; From d811aef61af979bd3ef5bdcfef7b7f697c6a072c Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 20 Apr 2020 16:06:35 +0200 Subject: [PATCH 191/267] No limit in SP --- Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf | 4 +--- Common/Init/Init_CommonConstants.sqf | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf index f8fad97be..7f5887bae 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf @@ -18,11 +18,9 @@ switch (_type) do [_veh, "I_crew_F", _group, CTI_RESISTANCE_ID] call CTI_CO_FNC_ManVehicle; // remove fuel _veh setFuel 0 ; + }; - - - }; case "AT": { //Find location diff --git a/Common/Init/Init_CommonConstants.sqf b/Common/Init/Init_CommonConstants.sqf index c307a0bc7..d60c47857 100644 --- a/Common/Init/Init_CommonConstants.sqf +++ b/Common/Init/Init_CommonConstants.sqf @@ -609,7 +609,7 @@ with missionNamespace do { if (isNil 'CTI_BASEBUILDING') then {CTI_BASEBUILDING = 1}; //DOn if (isNil 'CTI_TEAMSWAP') then {CTI_TEAMSWAP = 1}; //DOn if (isNil 'CTI_TEAMSTACK') then {CTI_TEAMSTACK = 1}; //DOn - if (isNil 'CTI_MAX_MISSION_TIME') then {CTI_MAX_MISSION_TIME = 12}; //DOne + if (isNil 'CTI_MAX_MISSION_TIME') then {CTI_MAX_MISSION_TIME = 0}; //DOne if (isNil 'CTI_VICTORY_HQ') then {CTI_VICTORY_HQ = 0}; //Done if (isNil 'CTI_HALO_POLES') then {CTI_HALO_POLES = 1}; if (isNil 'CTI_PLAYERS_GROUPSIZE') then {CTI_PLAYERS_GROUPSIZE = 10}; //Done From 0c06b4f24d6f6b5d41976e8ac3e7f19ec242c605 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 20 Apr 2020 16:14:15 +0200 Subject: [PATCH 192/267] Version Up --- Rsc/Game.hpp | 4 ++-- mission.sqm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Rsc/Game.hpp b/Rsc/Game.hpp index 446a8b7f8..6dbda8abb 100644 --- a/Rsc/Game.hpp +++ b/Rsc/Game.hpp @@ -4,11 +4,11 @@ respawnDelay = 10; respawnDialog = false; //--- Require briefing.html to show up. -onLoadMission = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.1"; +onLoadMission = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.2"; onLoadMissionTime = false; onLoadName = "BECTI - Zerty/HTom/Yoshi_E"; -briefingName = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.1"; +briefingName = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.2"; //--- ArmA 3 Specifics dev = "Benny"; diff --git a/mission.sqm b/mission.sqm index b4a366536..4eaf4ba85 100644 --- a/mission.sqm +++ b/mission.sqm @@ -97,7 +97,7 @@ class Mission { class Intel { - briefingName="BECTI BE 0.97 - Zerty 1.3.5.1"; + briefingName="BECTI BE 0.97 - Zerty 1.3.5.2"; overviewText="By Benny - Adapted from OFP era MFCTI (Mike Melvin)"; resistanceWest=0; timeOfChanges=24720; From aae68a532f61dc16fdc5681022ea0b4fbb259616 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 20 Apr 2020 16:56:33 +0200 Subject: [PATCH 193/267] Nixes, simplified --- .../Strat_mode/Functions/SM_Map_Statics.sqf | 31 +++++++------- .../Functions/SM_Map_Statics_Create.sqf | 6 +-- .../Functions/SM_Map_Statics_Loop.sqf | 41 ++++--------------- 3 files changed, 23 insertions(+), 55 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics.sqf index 55b3c3cd7..13f2d1f0b 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics.sqf @@ -4,34 +4,33 @@ SM_ST_Loop = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions SM_ST_PARAM=[["AT",15],["AA",8]]; -SM_ST_Groups=[]; +_group = createGroup resistance; +_group setVariable ["cti_server_group", str "GUER"]; + +SM_ST_Groups=_group; -private ["_towns","_town"]; _towns = []+CTI_Towns; + { for "_i" from 0 to (_x select 1) step 1 do { _town = selectRandom _towns; _towns= _towns - [_town]; - _group = [_x select 0 ,_town] call SM_ST_Create; - if (!(isNil "_group") && _group != grpNull) then { - _group setVariable ["cti_server_group", str "GUER"]; - _group setCombatMode "RED"; - _group setBehaviourStrong "COMBAT"; - { - _x setskill 0.8; - _x setSkill ["spotDistance", 1]; - _x setSkill ["spotTime", 1]; - _x disableAI "MOVE" ; - true - } count (units _group ); - SM_ST_Groups pushBackUnique _group; - }; + [_x select 0 ,_town,_group] call SM_ST_Create; }; true } count SM_ST_PARAM; +{ + _x setskill 0.8; + _x setSkill ["spotDistance", 1]; + _x setSkill ["spotTime", 1]; + _x disableAI "MOVE" ; + true +} count (units _group); +_group setCombatMode "RED"; +_group setBehaviourStrong "COMBAT"; 0 spawn SM_ST_Loop; \ No newline at end of file diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf index 7f5887bae..3fcfd394b 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf @@ -3,7 +3,7 @@ private ["_type","_town","_pos","_veh"]; _type= _this select 0; _town= _this select 1; -_group = grpNull; +_group = _this select 2; switch (_type) do { @@ -11,8 +11,6 @@ switch (_type) do { //Find location _pos=[getpos _town,2000,800] call BIS_fnc_findOverwatch; - // Create group - _group= createGroup resistance; // Create vehicle _veh = ["I_LT_01_AA_F", _pos, random(360), resistance, true, true, true] call CTI_CO_FNC_CreateVehicle; [_veh, "I_crew_F", _group, CTI_RESISTANCE_ID] call CTI_CO_FNC_ManVehicle; @@ -25,8 +23,6 @@ switch (_type) do { //Find location _pos=[getpos _town,2000,800] call BIS_fnc_findOverwatch; - // Create group - _group= createGroup resistance; // Create vehicle _veh = ["I_LT_01_AT_F", _pos, random(360), resistance, true, true, true] call CTI_CO_FNC_CreateVehicle; [_veh, "I_crew_F", _group, CTI_RESISTANCE_ID] call CTI_CO_FNC_ManVehicle; diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf index 0d8c02916..2624996ef 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf @@ -6,43 +6,16 @@ while {!CTI_GameOver} do { waitUntil {!isnil "SM_ST_Groups"}; - //remove empty groups (destroyed units) - SM_ST_Groups=SM_ST_Groups-[grpNull]; - _targets=[]; - { - _group=_x; - - //rearm - { - _x setVehicleAmmo 1; - true - } count (units _x); - - //set active - _x setCombatMode "RED"; - - //register targets - _group_targets=(leader _group) nearTargets (MAX_RANGE); - - { - if ((_group knowsAbout (_x select 4))>SENSIVITY && (_x select 2) != resistance ) then {_targets pushBackUnique (_x select 4)}; - true - } count _group_targets; - true - } count SM_ST_Groups; - - _targets=_targets-[objNull]; - diag_log _targets; - //share targets because fuck players + //rearm { - _group=_x; - { - if !(isnull _x) then {_group reveal [_x,SENSIVITY+1]}; - true - } count _targets; + _x setVehicleAmmo 1; true - } count SM_ST_Groups; + } count (units SM_ST_Groups); + + //set active + SM_ST_Groups setCombatMode "RED"; + sleep 30; }; \ No newline at end of file From a90e1a9cbd2c92c20b1e22c172dc50d7d2ee3a72 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Mon, 20 Apr 2020 20:53:33 +0200 Subject: [PATCH 194/267] Allow access to factory when in base area --- Client/GUI/GUI_PurchaseMenu.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/GUI/GUI_PurchaseMenu.sqf b/Client/GUI/GUI_PurchaseMenu.sqf index 3c1bcaa54..5e7463f0b 100644 --- a/Client/GUI/GUI_PurchaseMenu.sqf +++ b/Client/GUI/GUI_PurchaseMenu.sqf @@ -6,7 +6,7 @@ _lb_queued_content = []; // ((uiNamespace getVariable "cti_dialog_ui_purchasemenu") displayCtrl 110901) ctrlSetStructuredText parseText "Producing: Soldier"; while { true } do { if (isNil {uiNamespace getVariable "cti_dialog_ui_purchasemenu"}) exitWith {}; //--- Menu is closed. - if (Client_AN_Connected) then { + if (Client_AN_Connected || CTI_InBaseArea) then { for "_i" from 110000 to 110007 /* step +1 */ do { ((uiNamespace getVariable "cti_dialog_ui_purchasemenu") displayCtrl _i) ctrlEnable true}; }else{ for "_i" from 110000 to 110007 /* step +1 */ do { ((uiNamespace getVariable "cti_dialog_ui_purchasemenu") displayCtrl _i) ctrlEnable false}; From dc428e9fcb45bd25ab7864a1fccc1cb684690904 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 21 Apr 2020 13:11:09 +0200 Subject: [PATCH 195/267] Removed Nix added Titan Units --- .../Strat_mode/Functions/SM_Map_Statics.sqf | 20 ++----- .../Functions/SM_Map_Statics_Create.sqf | 54 +++++++++++++++---- .../Functions/SM_Map_Statics_Loop.sqf | 27 +++++++--- 3 files changed, 67 insertions(+), 34 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics.sqf index 13f2d1f0b..18e7145e3 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics.sqf @@ -2,12 +2,9 @@ SM_ST_Create = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functio SM_ST_Clean = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\SM_Map_Statics_Clean.sqf"; SM_ST_Loop = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\SM_Map_Statics_Loop.sqf"; -SM_ST_PARAM=[["AT",15],["AA",8]]; +SM_ST_PARAM=[["AT",10],["AA",10]]; -_group = createGroup resistance; -_group setVariable ["cti_server_group", str "GUER"]; - -SM_ST_Groups=_group; +SM_ST_Groups=[]; _towns = []+CTI_Towns; @@ -17,20 +14,11 @@ _towns = []+CTI_Towns; { _town = selectRandom _towns; _towns= _towns - [_town]; - [_x select 0 ,_town,_group] call SM_ST_Create; + _g=[_x select 0 ,_town] call SM_ST_Create; + SM_ST_Groups pushBackUnique _g; }; true } count SM_ST_PARAM; -{ - _x setskill 0.8; - _x setSkill ["spotDistance", 1]; - _x setSkill ["spotTime", 1]; - _x disableAI "MOVE" ; - true -} count (units _group); - -_group setCombatMode "RED"; -_group setBehaviourStrong "COMBAT"; 0 spawn SM_ST_Loop; \ No newline at end of file diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf index 3fcfd394b..79f104028 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf @@ -3,31 +3,63 @@ private ["_type","_town","_pos","_veh"]; _type= _this select 0; _town= _this select 1; -_group = _this select 2; + +_group = createGroup resistance; +_group setVariable ["cti_server_group", str "GUER"]; switch (_type) do { case "AA": { //Find location - _pos=[getpos _town,2000,800] call BIS_fnc_findOverwatch; + _pos=[getpos _town,2000,800,150] call BIS_fnc_findOverwatch; // Create vehicle - _veh = ["I_LT_01_AA_F", _pos, random(360), resistance, true, true, true] call CTI_CO_FNC_CreateVehicle; - [_veh, "I_crew_F", _group, CTI_RESISTANCE_ID] call CTI_CO_FNC_ManVehicle; - // remove fuel - _veh setFuel 0 ; + for "_i" from 0 to 0 step 1 do + { + _veh = ["I_Soldier_AA_F", _group, _pos, resistance, true] call CTI_CO_FNC_CreateUnit; + _veh setformdir (random(360)); + removeUniform _veh; + _veh forceAddUniform "U_I_GhillieSuit"; + _veh disableAI "PATH"; + _veh disableAI "COVER"; + _veh disableAI "SUPPRESSION"; + _veh disableAI "AIMINGERROR"; + _veh setskill 0.8; + _veh setSkill ["spotDistance", 1]; + _veh setSkill ["spotTime", 1]; + + _veh setUnitPos "MIDDLE"; + + + }; + }; case "AT": { //Find location - _pos=[getpos _town,2000,800] call BIS_fnc_findOverwatch; + _pos=[getpos _town,2000,800,80] call BIS_fnc_findOverwatch; // Create vehicle - _veh = ["I_LT_01_AT_F", _pos, random(360), resistance, true, true, true] call CTI_CO_FNC_CreateVehicle; - [_veh, "I_crew_F", _group, CTI_RESISTANCE_ID] call CTI_CO_FNC_ManVehicle; - // remove fuel - _veh setFuel 0 ; + for "_i" from 0 to 0 step 1 do + { + + _veh = ["I_Soldier_AT_F", _group, _pos, resistance, true] call CTI_CO_FNC_CreateUnit; + _veh setformdir (random(360)); + removeUniform _veh; + _veh forceAddUniform "U_I_GhillieSuit"; + _veh disableAI "PATH"; + _veh disableAI "COVER"; + _veh disableAI "SUPPRESSION"; + _veh disableAI "AIMINGERROR"; + _veh setskill 0.8; + _veh setSkill ["spotDistance", 1]; + _veh setSkill ["spotTime", 1]; + + _veh setUnitPos "MIDDLE"; + _veh lookAt _town; + + }; }; default diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf index 2624996ef..b5a32768e 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf @@ -6,16 +6,29 @@ while {!CTI_GameOver} do { waitUntil {!isnil "SM_ST_Groups"}; + { - //rearm - { - _x setVehicleAmmo 1; - true - } count (units SM_ST_Groups); + //rearm + { + _x setAmmo [secondaryWeapon _x, 1000000]; + if ((typeOf _x )== "I_Soldier_AT_F" && count (backpackItems _x) ==0 ) then { + _x addItemToBackpack "Titan_AT"; + _x addItemToBackpack "Titan_AT"; + }; + if ((typeOf _x )== "I_Soldier_AA_F" && count (backpackItems _x) ==0 ) then { + _x addItemToBackpack "Titan_AA"; + _x addItemToBackpack "Titan_AA"; + }; + true + } count (units _x); - //set active - SM_ST_Groups setCombatMode "RED"; + //set active + _x setformdir (random(360)); + _x setCombatMode "RED"; + _x setBehaviourStrong "COMBAT"; + true + }count SM_ST_Groups; sleep 30; }; \ No newline at end of file From f1bdbd05a21d4d82a309130959372e1a0d4b83a3 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 21 Apr 2020 17:17:23 +0200 Subject: [PATCH 196/267] Increased Awareness for static units --- Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf | 1 + Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf index 79f104028..c162b03dd 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf @@ -20,6 +20,7 @@ switch (_type) do _veh setformdir (random(360)); removeUniform _veh; _veh forceAddUniform "U_I_GhillieSuit"; + _veh addWeapon "Laserdesignator_03"; _veh disableAI "PATH"; _veh disableAI "COVER"; _veh disableAI "SUPPRESSION"; diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf index b5a32768e..b373624f6 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf @@ -30,5 +30,5 @@ while {!CTI_GameOver} do true }count SM_ST_Groups; - sleep 30; + sleep 10; }; \ No newline at end of file From 51ebcb78c2d04f2bbcabfffa4f121f56f26d68cf Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 21 Apr 2020 17:19:51 +0200 Subject: [PATCH 197/267] Fix for Town connection drawing --- Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf b/Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf index 0db547b42..6ccae3de1 100644 --- a/Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf +++ b/Addons/Strat_mode/Functions/SM_F_TownDrawConnect.sqf @@ -9,7 +9,7 @@ if (!(CTI_P_SideJoined == resistance))then { sleep 0.3; }; { - [getPos _ct,getPos _x,"ColorBlack",CTI_MARKERS_TOWN_AREA_RANGE] call CTI_SM_Connect; + [getPos _ct,getPos _x,"ColorBlack",CTI_MARKERS_TOWN_AREA_RANGE*2] call CTI_SM_Connect; } forEach _neigh; } forEach CTI_Towns; }; \ No newline at end of file From 48ee110d43c7b1954339c20d8d9368aeda8bbb8c Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 21 Apr 2020 18:00:03 +0200 Subject: [PATCH 198/267] Awareness Improved --- Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf | 1 + Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf index c162b03dd..ecbd0d3be 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf @@ -49,6 +49,7 @@ switch (_type) do _veh setformdir (random(360)); removeUniform _veh; _veh forceAddUniform "U_I_GhillieSuit"; + _veh addWeapon "Laserdesignator_03"; _veh disableAI "PATH"; _veh disableAI "COVER"; _veh disableAI "SUPPRESSION"; diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf index b373624f6..1a0482339 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf @@ -7,7 +7,8 @@ while {!CTI_GameOver} do { waitUntil {!isnil "SM_ST_Groups"}; { - + _x setformdir (random(360)); + _x setCombatMode "YELLOW"; //rearm { @@ -20,13 +21,12 @@ while {!CTI_GameOver} do _x addItemToBackpack "Titan_AA"; _x addItemToBackpack "Titan_AA"; }; + if ( {(_x select 2) in [east,west]} count(_x nearTargets 2500) == 0 ) then {_x selectWeapon "Laserdesignator_03";}; true } count (units _x); //set active - _x setformdir (random(360)); - _x setCombatMode "RED"; - _x setBehaviourStrong "COMBAT"; + true }count SM_ST_Groups; From cafe33479dbe2842d34b3ed808b004d2921899b7 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 30 May 2020 13:40:54 +0200 Subject: [PATCH 199/267] Not need Old A2 FSM --- Server/FSM/weather_fast.fsm | 110 ------------------------------------ 1 file changed, 110 deletions(-) delete mode 100644 Server/FSM/weather_fast.fsm diff --git a/Server/FSM/weather_fast.fsm b/Server/FSM/weather_fast.fsm deleted file mode 100644 index 530b58e29..000000000 --- a/Server/FSM/weather_fast.fsm +++ /dev/null @@ -1,110 +0,0 @@ -/*%FSM*/ -/*%FSM*/ -/* -item0[] = {"Init",0,250,150.000000,-475.000000,250.000000,-425.000000,0.000000,"Init"}; -item1[] = {"Loop",4,218,150.000000,-375.000000,250.000000,-325.000000,0.000000,"Loop"}; -item2[] = {"End",1,250,150.000000,-75.000000,250.000000,-25.000000,0.000000,"End"}; -item3[] = {"Time",2,4346,150.000000,-275.000000,250.000000,-225.000000,0.000000,"Time"}; -item4[] = {"Gameover",4,218,150.000000,-175.000000,250.000000,-125.000000,0.000000,"Gameover"}; -link0[] = {0,1}; -link1[] = {1,3}; -link2[] = {3,1}; -link3[] = {3,4}; -link4[] = {4,2}; -globals[] = {25.000000,1,0,0,0,640,480,1,38,6316128,1,-366.140930,481.526276,9.508422,-578.645630,655,489,1}; -window[] = {0,-1,-1,-1,-1,884,250,1510,250,1,673}; -*//*%FSM*/ -class FSM -{ - fsmName = "weather_fast.fsm"; - class States - { - /*%FSM*/ - class Init - { - name = "Init"; - init = /*%FSM*/"/*" \n - " Fast Time calculation Formula:" \n - " For (Real Life Hour) = (24 Hours Ingame)." \n - " > ((((86400/((Real Life Hour)*60*60))*86400)/24/60)/60) * (skipTime Delay) = Needed skipped time." \n - " > ((((86400/((1)*60*60))*86400)/24/60)/60) * (2) = 48 >> To have 1H = 24H we need to skipTime 48 seconds each 3 seconds." \n - "*/" \n - "" \n - "_ncycle = 0;" \n - "_last_date_broadcast = -10000;" \n - "" \n - "_ft = (missionNamespace getVariable ""CTI_WEATHER_FAST"")/3600;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Loop - { - priority = 0.000000; - to="Time"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle && !CTI_GameOver"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class End - { - name = "End"; - init = /*%FSM*/""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - }; - }; - /*%FSM*/ - /*%FSM*/ - class Time - { - name = "Time"; - init = /*%FSM*/"skipTime _ft;" \n - "" \n - "if (time - _last_date_broadcast > 60) then {" \n - " _last_date_broadcast = time;" \n - " CTI_SERVERDATE = date;" \n - " publicVariable ""CTI_SERVERDATE"";" \n - "};" \n - "" \n - "_ncycle = time + 2;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Gameover - { - priority = 0.000000; - to="End"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"CTI_GameOver"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Loop - { - priority = 0.000000; - to="Time"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"time > _ncycle && !CTI_GameOver"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - }; - initState="Init"; - finalStates[] = - { - "End", - }; -}; -/*%FSM*/ \ No newline at end of file From 9071700d4e4674ac71b77eb09f6cd974cec0cabd Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 30 May 2020 16:23:02 +0200 Subject: [PATCH 200/267] Stratis just for easy compare stratis use this long time ago --- Common/Config/Base/Base_East.sqf | 4 ++-- Common/Config/Base/Base_West.sqf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Common/Config/Base/Base_East.sqf b/Common/Config/Base/Base_East.sqf index 7edbfdb5b..498cb615c 100644 --- a/Common/Config/Base/Base_East.sqf +++ b/Common/Config/Base/Base_East.sqf @@ -261,7 +261,7 @@ _classes = _classes + ["B_AAA_System_01_F"]; _prices = _prices + [25000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; - +if (ISLAND != 1) then { _headers = _headers + [["Mk49 Spartan - Only on BASE Areas", [["DMG_Reduce", 10]]]]; _classes = _classes + ["B_SAM_System_01_F"]; _prices = _prices + [40000]; @@ -273,7 +273,7 @@ _classes = _classes + ["B_SAM_System_02_F"]; _prices = _prices + [80000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; - +}; _headers = _headers + ["R-750 Cronus Radar - Only on BASE Areas"]; _classes = _classes + ["O_Radar_System_02_F"]; _prices = _prices + [20000]; diff --git a/Common/Config/Base/Base_West.sqf b/Common/Config/Base/Base_West.sqf index 6cb0b2b42..c22af8c71 100644 --- a/Common/Config/Base/Base_West.sqf +++ b/Common/Config/Base/Base_West.sqf @@ -267,7 +267,7 @@ _classes = _classes + ["B_AAA_System_01_F"]; _prices = _prices + [25000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; - +if (ISLAND != 1) then { _headers = _headers + [["Mk49 Spartan - Only on BASE Areas", [["DMG_Reduce", 10]]]]; _classes = _classes + ["B_SAM_System_01_F"]; _prices = _prices + [40000]; @@ -279,7 +279,7 @@ _classes = _classes + ["B_SAM_System_02_F"]; _prices = _prices + [80000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; - +}; _headers = _headers + ["AN/MPQ-105 Radar - Only on BASE Areas"]; _classes = _classes + ["B_Radar_System_01_F"]; _prices = _prices + [20000]; From f6f4cef8bb19ed3709c2ead362b103d7e6faa092 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 30 May 2020 16:24:17 +0200 Subject: [PATCH 201/267] Delete SM_Map_Statics_Clean.sqf --- Addons/Strat_mode/Functions/SM_Map_Statics_Clean.sqf | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Addons/Strat_mode/Functions/SM_Map_Statics_Clean.sqf diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Clean.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Clean.sqf deleted file mode 100644 index e69de29bb..000000000 From 649572497c472eb6d6c394b843e58bfb9e520c1e Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Wed, 24 Jun 2020 23:17:17 +0200 Subject: [PATCH 202/267] fix for #299 and more Fix for disband button at UnitCam. Only unit disband not the vehicle. (HQ in safe) Its fix for some commander cam usage too. --- Client/Events/Events_UI_UnitsCamera.sqf | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Client/Events/Events_UI_UnitsCamera.sqf b/Client/Events/Events_UI_UnitsCamera.sqf index 5e92d3a7c..fa120d057 100644 --- a/Client/Events/Events_UI_UnitsCamera.sqf +++ b/Client/Events/Events_UI_UnitsCamera.sqf @@ -94,7 +94,7 @@ switch (_action) do { ((uiNamespace getVariable "cti_dialog_ui_unitscam") displayCtrl 180005) ctrlSetPosition [SafeZoneX + (SafeZoneW * 0.805), SafeZoneY + (SafezoneH * 0.41), SafeZoneW * 0.19, SafeZoneH * 0.03]; ((uiNamespace getVariable "cti_dialog_ui_unitscam") displayCtrl 180005) ctrlCommit 0; {((uiNamespace getVariable "cti_dialog_ui_unitscam") displayCtrl _x) ctrlSetPosition [SafeZoneX + (SafeZoneW * 0.805), SafeZoneY + (SafezoneH * 0.45), SafeZoneW * 0.18, SafeZoneH * 0.15]; ((uiNamespace getVariable "cti_dialog_ui_unitscam") displayCtrl _x) ctrlCommit 0} forEach [180006, 180101]; - if (call CTI_CL_FNC_IsPlayerCommander) then { + if (player call CTI_CL_FNC_IsPlayerCommander) then { ((uiNamespace getVariable "cti_dialog_ui_unitscam") displayCtrl 180023) ctrlSetPosition [SafeZoneX + (SafeZoneW * 0.01), SafeZoneY + (SafeZoneH * 0.70), SafeZoneW * 0.14, SafeZoneH * 0.04]; ((uiNamespace getVariable "cti_dialog_ui_unitscam") displayCtrl 180023) ctrlCommit 0; //--- Bring back the button! }; @@ -244,17 +244,15 @@ switch (_action) do { case "onUnitDisband": { _who = uiNamespace getVariable "cti_dialog_ui_unitscam_focus"; - if (alive _who && call CTI_CL_FNC_IsPlayerCommander) then { - if !(isPlayer leader _who) then { - _who setDammage 1; - }; + if (alive _who && !(isPlayer _who) && ((player == leader _who) || (!(isPlayer leader _who) && player call CTI_CL_FNC_IsPlayerCommander))) then { + deleteVehicle _who; }; }; case "onRemote": { _who = uiNamespace getVariable "cti_dialog_ui_unitscam_focus"; _dialog = uiNamespace getVariable 'cti_dialog_ui_unitscam'; if (alive _who ) then { - if ((player == leader _who) || !(isPlayer leader _who) && call CTI_CL_FNC_IsPlayerCommander )then { + if ((player == leader _who) || !(isPlayer leader _who) && player call CTI_CL_FNC_IsPlayerCommander )then { _who spawn { waitUntil {cameraOn == player}; sleep 0.5; @@ -270,7 +268,7 @@ switch (_action) do { _who_vehicle = vehicle _who; if (alive _who && speed _who_vehicle < 5 && (getPos _who_vehicle select 2) < 5 && !isPlayer _who) then { _unflip = false; - if (call CTI_CL_FNC_IsPlayerCommander) then { + if (player call CTI_CL_FNC_IsPlayerCommander) then { _unflip = true } else { if (_who in units player) then {_unflip = true}; From 43b41a545849671c7c9fd2b73906a09e4bedc764 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 25 Jun 2020 21:54:26 +0200 Subject: [PATCH 203/267] correction for last commit ops... --- Client/Events/Events_UI_UnitsCamera.sqf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Client/Events/Events_UI_UnitsCamera.sqf b/Client/Events/Events_UI_UnitsCamera.sqf index fa120d057..dce44f8ed 100644 --- a/Client/Events/Events_UI_UnitsCamera.sqf +++ b/Client/Events/Events_UI_UnitsCamera.sqf @@ -94,7 +94,7 @@ switch (_action) do { ((uiNamespace getVariable "cti_dialog_ui_unitscam") displayCtrl 180005) ctrlSetPosition [SafeZoneX + (SafeZoneW * 0.805), SafeZoneY + (SafezoneH * 0.41), SafeZoneW * 0.19, SafeZoneH * 0.03]; ((uiNamespace getVariable "cti_dialog_ui_unitscam") displayCtrl 180005) ctrlCommit 0; {((uiNamespace getVariable "cti_dialog_ui_unitscam") displayCtrl _x) ctrlSetPosition [SafeZoneX + (SafeZoneW * 0.805), SafeZoneY + (SafezoneH * 0.45), SafeZoneW * 0.18, SafeZoneH * 0.15]; ((uiNamespace getVariable "cti_dialog_ui_unitscam") displayCtrl _x) ctrlCommit 0} forEach [180006, 180101]; - if (player call CTI_CL_FNC_IsPlayerCommander) then { + if (call CTI_CL_FNC_IsPlayerCommander) then { ((uiNamespace getVariable "cti_dialog_ui_unitscam") displayCtrl 180023) ctrlSetPosition [SafeZoneX + (SafeZoneW * 0.01), SafeZoneY + (SafeZoneH * 0.70), SafeZoneW * 0.14, SafeZoneH * 0.04]; ((uiNamespace getVariable "cti_dialog_ui_unitscam") displayCtrl 180023) ctrlCommit 0; //--- Bring back the button! }; @@ -244,7 +244,7 @@ switch (_action) do { case "onUnitDisband": { _who = uiNamespace getVariable "cti_dialog_ui_unitscam_focus"; - if (alive _who && !(isPlayer _who) && ((player == leader _who) || (!(isPlayer leader _who) && player call CTI_CL_FNC_IsPlayerCommander))) then { + if (alive _who && !(isPlayer _who) && ((player == leader _who) || (!(isPlayer leader _who) && call CTI_CL_FNC_IsPlayerCommander))) then { deleteVehicle _who; }; }; @@ -252,7 +252,7 @@ switch (_action) do { _who = uiNamespace getVariable "cti_dialog_ui_unitscam_focus"; _dialog = uiNamespace getVariable 'cti_dialog_ui_unitscam'; if (alive _who ) then { - if ((player == leader _who) || !(isPlayer leader _who) && player call CTI_CL_FNC_IsPlayerCommander )then { + if ((player == leader _who) || !(isPlayer leader _who) && call CTI_CL_FNC_IsPlayerCommander) then { _who spawn { waitUntil {cameraOn == player}; sleep 0.5; @@ -268,7 +268,7 @@ switch (_action) do { _who_vehicle = vehicle _who; if (alive _who && speed _who_vehicle < 5 && (getPos _who_vehicle select 2) < 5 && !isPlayer _who) then { _unflip = false; - if (player call CTI_CL_FNC_IsPlayerCommander) then { + if (call CTI_CL_FNC_IsPlayerCommander) then { _unflip = true } else { if (_who in units player) then {_unflip = true}; From cf9c09759050996440da1dbc409c9b1b98335f72 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 27 Jun 2020 21:33:47 +0200 Subject: [PATCH 204/267] "Land" Action for heli pilots --- Common/Functions/Common_CreateUnit.sqf | 12 ++++++++++++ stringtable.xml | 10 +++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Common/Functions/Common_CreateUnit.sqf b/Common/Functions/Common_CreateUnit.sqf index 0a799a852..a837e32db 100644 --- a/Common/Functions/Common_CreateUnit.sqf +++ b/Common/Functions/Common_CreateUnit.sqf @@ -238,6 +238,18 @@ if (missionNamespace getVariable "CTI_SM_RADAR" == 1) then { //cache //["SERVER", "Request_Cache", _unit] call CTI_CO_FNC_NetSend; +//additional actions +_unit addAction [localize "STR_CommonCreateUnit_Land", " + commandStop _this; + doStop _this; + (_this select 0) spawn { + waitUntil {if (!alive _this || (abs ((velocity (vehicle _this)) select 0) < 3 && abs ((velocity (vehicle _this)) select 1) < 3 && abs ((velocity (vehicle _this)) select 2) < 3)) exitWith {true}; false}; + if (alive (vehicle _this)) then {(vehicle _this) land 'LAND';}; + waitUntil {if (!alive _this || isTouchingGround (vehicle _this)) exitWith {true}; false}; + if (alive (vehicle _this)) then {commandStop _this; doStop _this; _this commandFollow _this; (vehicle _this) setVelocity [0, 0, -1];}; + }; + ", "", 75, false, true, "", "(vehicle _originalTarget) isKindOf 'HELICOPTER' && driver (vehicle _originalTarget) == _originalTarget && ((getPos _target) select 2) > 3 && cameraon == vehicle player"]; + _unit addAction [localize "STR_Common_CreateUnit_Remote_Control"," player connectTerminalToUAV ( vehicle(_this select 0)); (_this select 0) spawn { diff --git a/stringtable.xml b/stringtable.xml index cea0fba01..d09dc85e7 100644 --- a/stringtable.xml +++ b/stringtable.xml @@ -580,7 +580,7 @@ Zerty: TOWNS: Resistance difficulty Уровень сопротивления в городах - + Yoshi_E: TOWNS: Heavy vehicles in towns Тяжелая техника в городах @@ -592,7 +592,7 @@ Yoshi_E: SHOP: Heavy Vehicles/Equipment Тяжелая техника / Оборудование - + Zerty: TOWNS: Shop price ratio Во сколько раз покупки в городах дороже, чем на базе @@ -944,7 +944,7 @@ Slat Cage $1500 ламельная клетка $1500 - + Reset AI Crew Сбросить AI Crew @@ -2109,6 +2109,10 @@ <t color='#ff9900'>Remote Control</t> <t color='#ff9900'>Удаленное Управление</t> + + <t color='#ffff80'>Land</t> + <t color='#ffff80'>приземлиться</t> + From 72ff9a4ba7a3633518731a4b90da21b069cd8e85 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 27 Jun 2020 21:50:25 +0200 Subject: [PATCH 205/267] ops... --- Common/Functions/Common_CreateUnit.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Common/Functions/Common_CreateUnit.sqf b/Common/Functions/Common_CreateUnit.sqf index a837e32db..deb947a82 100644 --- a/Common/Functions/Common_CreateUnit.sqf +++ b/Common/Functions/Common_CreateUnit.sqf @@ -239,7 +239,7 @@ if (missionNamespace getVariable "CTI_SM_RADAR" == 1) then { //["SERVER", "Request_Cache", _unit] call CTI_CO_FNC_NetSend; //additional actions -_unit addAction [localize "STR_CommonCreateUnit_Land", " +_unit addAction [localize "STR_Common_CreateUnit_Land", " commandStop _this; doStop _this; (_this select 0) spawn { @@ -248,7 +248,7 @@ _unit addAction [localize "STR_CommonCreateUnit_Land", " waitUntil {if (!alive _this || isTouchingGround (vehicle _this)) exitWith {true}; false}; if (alive (vehicle _this)) then {commandStop _this; doStop _this; _this commandFollow _this; (vehicle _this) setVelocity [0, 0, -1];}; }; - ", "", 75, false, true, "", "(vehicle _originalTarget) isKindOf 'HELICOPTER' && driver (vehicle _originalTarget) == _originalTarget && ((getPos _target) select 2) > 3 && cameraon == vehicle player"]; + ", "", 99, false, true, "", "(vehicle _originalTarget) isKindOf 'HELICOPTER' && driver (vehicle _originalTarget) == _originalTarget && ((getPos _target) select 2) > 3 && cameraon == vehicle player"]; _unit addAction [localize "STR_Common_CreateUnit_Remote_Control"," player connectTerminalToUAV ( vehicle(_this select 0)); @@ -267,4 +267,4 @@ _unit addAction [localize "STR_Common_CreateUnit_Remote_Control"," // returnvehicle objNull remoteControl cameraon; player connectTerminalToUAV objNull; (player) switchCamera 'Internal'; -_unit \ No newline at end of file +_unit From 33993b11f27d78075808c0cf87f0773444516419 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 27 Jun 2020 21:53:28 +0200 Subject: [PATCH 206/267] eof sry --- Common/Functions/Common_CreateUnit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/Functions/Common_CreateUnit.sqf b/Common/Functions/Common_CreateUnit.sqf index deb947a82..33adfd38c 100644 --- a/Common/Functions/Common_CreateUnit.sqf +++ b/Common/Functions/Common_CreateUnit.sqf @@ -267,4 +267,4 @@ _unit addAction [localize "STR_Common_CreateUnit_Remote_Control"," // returnvehicle objNull remoteControl cameraon; player connectTerminalToUAV objNull; (player) switchCamera 'Internal'; -_unit +_unit \ No newline at end of file From 602a2491c2426310257b93058c8f5c1b9a91038b Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 4 Jul 2020 14:33:27 +0200 Subject: [PATCH 207/267] 7mins delay for map_statics --- Addons/Strat_mode/Functions/SM_Map_Statics.sqf | 1 - Addons/Strat_mode/init.sqf | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics.sqf index 18e7145e3..5e83dc75b 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics.sqf @@ -1,5 +1,4 @@ SM_ST_Create = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\SM_Map_Statics_Create.sqf"; -SM_ST_Clean = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\SM_Map_Statics_Clean.sqf"; SM_ST_Loop = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\SM_Map_Statics_Loop.sqf"; SM_ST_PARAM=[["AT",10],["AA",10]]; diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 20a3aa344..75142c3aa 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -377,7 +377,7 @@ if (CTI_IsServer) then { {_x spawn TASKS_LOOP;} foreach [east,west]; //Statics - 0 call SM_ST_Init; + 0 spawn {sleep 420; SM_ST_Init;}; }; From 65778b364acd164b5cac0b7f130b9b561b1ab9e1 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 4 Jul 2020 20:28:03 +0200 Subject: [PATCH 208/267] st ais 10min --- Addons/Strat_mode/init.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 75142c3aa..8824c69e6 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -377,7 +377,7 @@ if (CTI_IsServer) then { {_x spawn TASKS_LOOP;} foreach [east,west]; //Statics - 0 spawn {sleep 420; SM_ST_Init;}; + 0 spawn {sleep 600; 0 call SM_ST_Init;}; }; From 34df80ffc276228d433e0f0df5257d232fc02bcf Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 5 Jul 2020 13:46:27 +0200 Subject: [PATCH 209/267] Fix for flying game logic --- Common/Init/Init_Location.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/Init/Init_Location.sqf b/Common/Init/Init_Location.sqf index ef76f490c..2508d37b7 100644 --- a/Common/Init/Init_Location.sqf +++ b/Common/Init/Init_Location.sqf @@ -27,7 +27,7 @@ if (CTI_IsServer || CTI_IsHeadless) then { _town setVariable ["CTI_Neigh",[],true]; _town setVariable ["cti_structure_type",CTI_FTOWN,true]; _current_side = _sideID call CTI_CO_FNC_GetSideFromID; - + _town setPosATL [( (getPosATL _town) select 0 ),( (getPosATL _town) select 1),0]; if !((typeOf _town) == "Flagpole_F") then { _flag= createVehicle ["Flagpole_F", getPos _town, [], 0, "CAN_COLLIDE"]; From d3d05f8f2fb255f3287d1a5eb389f3ffae4ece73 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 5 Jul 2020 21:17:01 +0200 Subject: [PATCH 210/267] Possible fix for def exploit --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 380d8690e..6f8f8a097 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -592,6 +592,14 @@ switch (_action) do { case "OnDef": { uiNamespace setVariable ['cti_dialog_ui_defensemenu',objnull]; closedialog 0; + if (_target = player) then { + _reptruck = [player, CTI_SPECIAL_REPAIRTRUCK, 20] call CTI_CO_FNC_GetNearestSpecialVehicles; + _hq = if (player distance2d ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ)<=20 && alive ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ)) then {[(CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ]} else {[]}; + _structures = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideStructures; + _repairs= [CTI_REPAIR, player, _structures, CTI_BASE_AREA_RANGE] call CTI_CO_FNC_GetClosestStructure); + _total = _reptruck+_hq+_repairs; + _target=[player, _total] call CTI_CO_FNC_GetClosestEntity; + }; [_target] execVM "Client\Actions\Action_DefenseMenu.sqf"; }; case "OnRepair": { From ab2938b66af78fb5b71e55dc4eb7616dc75b0d95 Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Sun, 5 Jul 2020 21:18:55 +0200 Subject: [PATCH 211/267] Small error --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 6f8f8a097..d04a92ee9 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -592,7 +592,7 @@ switch (_action) do { case "OnDef": { uiNamespace setVariable ['cti_dialog_ui_defensemenu',objnull]; closedialog 0; - if (_target = player) then { + if (_target == player) then { _reptruck = [player, CTI_SPECIAL_REPAIRTRUCK, 20] call CTI_CO_FNC_GetNearestSpecialVehicles; _hq = if (player distance2d ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ)<=20 && alive ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ)) then {[(CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ]} else {[]}; _structures = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideStructures; From 81664c9eba5652d043bb5571d8fd0a6a625ed0f1 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 5 Jul 2020 21:36:38 +0200 Subject: [PATCH 212/267] small error --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index d04a92ee9..0f0860ab5 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -596,7 +596,7 @@ switch (_action) do { _reptruck = [player, CTI_SPECIAL_REPAIRTRUCK, 20] call CTI_CO_FNC_GetNearestSpecialVehicles; _hq = if (player distance2d ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ)<=20 && alive ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ)) then {[(CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ]} else {[]}; _structures = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideStructures; - _repairs= [CTI_REPAIR, player, _structures, CTI_BASE_AREA_RANGE] call CTI_CO_FNC_GetClosestStructure); + _repairs = [CTI_REPAIR, player, _structures, CTI_BASE_AREA_RANGE] call CTI_CO_FNC_GetClosestStructure; _total = _reptruck+_hq+_repairs; _target=[player, _total] call CTI_CO_FNC_GetClosestEntity; }; From 0c5edf785552ce748942783254095300ab6630ea Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 5 Jul 2020 22:35:07 +0200 Subject: [PATCH 213/267] small error added [ ] and if 0 CTI_REPAIR in range u get at [0,0,0] so: - [objNull] --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 0f0860ab5..553b6e5ca 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -596,8 +596,8 @@ switch (_action) do { _reptruck = [player, CTI_SPECIAL_REPAIRTRUCK, 20] call CTI_CO_FNC_GetNearestSpecialVehicles; _hq = if (player distance2d ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ)<=20 && alive ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ)) then {[(CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ]} else {[]}; _structures = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideStructures; - _repairs = [CTI_REPAIR, player, _structures, CTI_BASE_AREA_RANGE] call CTI_CO_FNC_GetClosestStructure; - _total = _reptruck+_hq+_repairs; + _repairs = [[CTI_REPAIR, player, _structures, CTI_BASE_AREA_RANGE] call CTI_CO_FNC_GetClosestStructure]; + _total = _reptruck + _hq + _repairs - [objNull]; _target=[player, _total] call CTI_CO_FNC_GetClosestEntity; }; [_target] execVM "Client\Actions\Action_DefenseMenu.sqf"; From a90d376a463bef7c31ee2f85081827d659fd37ed Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Tue, 14 Jul 2020 16:18:05 +0200 Subject: [PATCH 214/267] REmove thermal nvgs for west --- Common/Config/Gear/Gear_West.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/Config/Gear/Gear_West.sqf b/Common/Config/Gear/Gear_West.sqf index 02583a5b9..fc0282ad4 100644 --- a/Common/Config/Gear/Gear_West.sqf +++ b/Common/Config/Gear/Gear_West.sqf @@ -1781,7 +1781,7 @@ _i = _i + ["NVGoggles_tna_F"]; _u = _u + [1]; _p = _p + [30]; -_i = _i + ["NVGogglesB_grn_F"]; +/*_i = _i + ["NVGogglesB_grn_F"]; _u = _u + [3]; _p = _p + [500]; @@ -1791,7 +1791,7 @@ _p = _p + [500]; _i = _i + ["NVGogglesB_blk_F"]; _u = _u + [3]; -_p = _p + [500]; +_p = _p + [500];*/ _i = _i + ["Rangefinder"]; _u = _u + [1]; From 2f0a81a86a20118f35fad7075ef4131030411bee Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Tue, 28 Jul 2020 20:30:20 +0200 Subject: [PATCH 215/267] Upgrade menu for up level check when some upgrades disabled --- Client/GUI/GUI_UpgradeMenu.sqf | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/Client/GUI/GUI_UpgradeMenu.sqf b/Client/GUI/GUI_UpgradeMenu.sqf index 4d2e1e8e2..bef6a4644 100644 --- a/Client/GUI/GUI_UpgradeMenu.sqf +++ b/Client/GUI/GUI_UpgradeMenu.sqf @@ -3,6 +3,21 @@ _last_running = -1; _last_upgrades_check = -1; _last_upgrades_tcheck = -1; +_levels_orig = (missionNamespace getVariable Format["CTI_%1_UPGRADES_LEVELS", CTI_P_SideJoined]); +_levels =+ _levels_orig; +_to_delete = []; +_n = 0; +{ + if (!_x) then {_to_delete pushBack _n;}; + _n = _n + 1; + true +} count (missionNamespace getVariable format["CTI_%1_UPGRADES_ENABLED", CTI_P_SideJoined]); + +for "_i" from 0 to (count _to_delete) do +{ + _levels deleteAt ((_to_delete select _i)-_i); +}; + while { true } do { if (isNil {uiNamespace getVariable "cti_dialog_ui_upgrademenu"}) exitWith {}; //--- Menu is closed. @@ -20,14 +35,20 @@ while { true } do { if (time - _last_upgrades_check > .75) then { _last_upgrades_check = time; - _upgrades = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideUpgrades; _need_reload = false; + _upgrades_orig = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideUpgrades; + _upgrades =+ _upgrades_orig; + for "_i" from 0 to (count _to_delete) do + { + _upgrades deleteAt ((_to_delete select _i)-_i); + }; + for '_i' from 0 to ((lnbSize 250002) select 0)-1 do { _value = lnbValue[250002, [_i, 0]]; if ((_upgrades select _i) != _value) then { if (_i == _selected) then {_need_reload = true}; - ((uiNamespace getVariable "cti_dialog_ui_upgrademenu") displayCtrl 250002) lnbSetText [[_i, 0], format["%1/%2", _upgrades select _i, (missionNamespace getVariable Format["CTI_%1_UPGRADES_LEVELS", CTI_P_SideJoined]) select _i]]; + ((uiNamespace getVariable "cti_dialog_ui_upgrademenu") displayCtrl 250002) lnbSetText [[_i, 0], format["%1/%2", _upgrades select _i, _levels select _i]]; ((uiNamespace getVariable "cti_dialog_ui_upgrademenu") displayCtrl 250002) lnbSetValue [[_i, 0], _upgrades select _i]; }; }; From 3d1e75041dea0eb4be1cb82277f53e8bd9c10a3b Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 30 Jul 2020 20:05:03 +0200 Subject: [PATCH 216/267] for #303 AI base marker Set base area marker on first building position. maybe later need extend for better ai comm who will use more base areas... --- Server/Functions/FSM/Functions_FSM_UpdateCommander.sqf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Server/Functions/FSM/Functions_FSM_UpdateCommander.sqf b/Server/Functions/FSM/Functions_FSM_UpdateCommander.sqf index 4463eec45..6becb5c58 100644 --- a/Server/Functions/FSM/Functions_FSM_UpdateCommander.sqf +++ b/Server/Functions/FSM/Functions_FSM_UpdateCommander.sqf @@ -173,6 +173,11 @@ CTI_FSM_UpdateCommander_GetStructureEmplacement = { _i = _i + 1; }; + // set first base area on first building position if need + if ((count _position) > 0 && (count (_sideLogic getVariable "cti_structures_areas")) == 0) then { + _sideLogic setVariable ["cti_structures_areas", [[_position select 0, _position select 1]], true]; + }; + _position set [2, 0]; _position }; \ No newline at end of file From 09ad235b9ed5961f277c9cf1bc5bedd93540ed46 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Fri, 28 Aug 2020 19:39:21 +0200 Subject: [PATCH 217/267] For dismantled UAVs Stop script when uav is bag... --- Addons/Strat_mode/Functions/UAV_Fuel.sqf | 2 +- Addons/Strat_mode/Functions/UAV_FuelDeath.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Functions/UAV_Fuel.sqf b/Addons/Strat_mode/Functions/UAV_Fuel.sqf index 0dfd10872..03163f5b4 100644 --- a/Addons/Strat_mode/Functions/UAV_Fuel.sqf +++ b/Addons/Strat_mode/Functions/UAV_Fuel.sqf @@ -9,7 +9,7 @@ private ["_uav","_last_fuel","_newfuel"]; _uav=_this; _last_fuel=fuel _uav; -while {!CTI_GameOver && alive _uav} do { +while {!CTI_GameOver && alive _uav && _uav isKindOf "Air"} do { if (local _uav) then { if (fuel _uav <0.05) then {_uav setDammage 1}; if (fuel _uav < _last_fuel) then { diff --git a/Addons/Strat_mode/Functions/UAV_FuelDeath.sqf b/Addons/Strat_mode/Functions/UAV_FuelDeath.sqf index a3bddf9d4..93a9a3c5d 100644 --- a/Addons/Strat_mode/Functions/UAV_FuelDeath.sqf +++ b/Addons/Strat_mode/Functions/UAV_FuelDeath.sqf @@ -4,7 +4,7 @@ private ["_uav"]; _uav=_this; -while {!CTI_GameOver && alive _uav} do { +while {!CTI_GameOver && alive _uav && _uav isKindOf "Air"} do { if (local _uav) then { if (fuel _uav <0.05) then {_uav setDammage 1}; }; From 971c43abd3ce00073710e30928cf48d0534dc519 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Tue, 8 Sep 2020 20:23:30 +0200 Subject: [PATCH 218/267] for missing resistance mortar service prices... its rise up rearm price from 350 to 2350 --- Common/Config/Units/Units_Resistance.sqf | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Common/Config/Units/Units_Resistance.sqf b/Common/Config/Units/Units_Resistance.sqf index 898b6630c..39e6267b2 100644 --- a/Common/Config/Units/Units_Resistance.sqf +++ b/Common/Config/Units/Units_Resistance.sqf @@ -282,5 +282,14 @@ _u = _u + [1]; _f = _f + [4]; _s = _s + [""]; +_c = _c + ['I_Mortar_01_F']; +_p = _p + ['']; +_n = _n + ['']; +_o = _o + [10000]; +_t = _t + [10]; +_u = _u + [0]; +_f = _f + [CTI_FACTORY_TOWN]; +_s = _s + [""]; + [_side, _faction, _c, _p, _n, _o, _t, _u, _f, _s] call compile preprocessFileLineNumbers "Common\Config\Units\Set_Units.sqf"; \ No newline at end of file From c25b95c74c97da4fa35c1e571282f98cae44866b Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 15 Oct 2020 20:50:10 +0200 Subject: [PATCH 219/267] for static AIs --- Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf index 1a0482339..9d10f481a 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf @@ -5,7 +5,7 @@ while {!CTI_GameOver} do { - waitUntil {!isnil "SM_ST_Groups"}; + waitUntil {CTI_InitTowns && !isnil "SM_ST_Groups"}; { _x setformdir (random(360)); _x setCombatMode "YELLOW"; @@ -22,6 +22,7 @@ while {!CTI_GameOver} do _x addItemToBackpack "Titan_AA"; }; if ( {(_x select 2) in [east,west]} count(_x nearTargets 2500) == 0 ) then {_x selectWeapon "Laserdesignator_03";}; + if ((([_x, CTI_RESISTANCE_ID] call CTI_CO_FNC_GetClosestFriendlyTown) != ((_x) call CTI_CO_FNC_GetClosestTown)) && !(((_x) call CTI_CO_FNC_GetClosestTown) getVariable "cti_town_resistance_active")) then {deleteVehicle _x;}; true } count (units _x); @@ -30,5 +31,5 @@ while {!CTI_GameOver} do true }count SM_ST_Groups; - sleep 10; + sleep 30; }; \ No newline at end of file From 5961bcfd728e2cdd5fa5f6bb11d92ac966efca41 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 15 Oct 2020 21:21:50 +0200 Subject: [PATCH 220/267] revert last commit --- Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf index 9d10f481a..1a0482339 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf @@ -5,7 +5,7 @@ while {!CTI_GameOver} do { - waitUntil {CTI_InitTowns && !isnil "SM_ST_Groups"}; + waitUntil {!isnil "SM_ST_Groups"}; { _x setformdir (random(360)); _x setCombatMode "YELLOW"; @@ -22,7 +22,6 @@ while {!CTI_GameOver} do _x addItemToBackpack "Titan_AA"; }; if ( {(_x select 2) in [east,west]} count(_x nearTargets 2500) == 0 ) then {_x selectWeapon "Laserdesignator_03";}; - if ((([_x, CTI_RESISTANCE_ID] call CTI_CO_FNC_GetClosestFriendlyTown) != ((_x) call CTI_CO_FNC_GetClosestTown)) && !(((_x) call CTI_CO_FNC_GetClosestTown) getVariable "cti_town_resistance_active")) then {deleteVehicle _x;}; true } count (units _x); @@ -31,5 +30,5 @@ while {!CTI_GameOver} do true }count SM_ST_Groups; - sleep 30; + sleep 10; }; \ No newline at end of file From 6e600941e087f2075b8c0484acf9d1ec9061e47e Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 15 Oct 2020 22:28:00 +0200 Subject: [PATCH 221/267] for Static AIs (V2.0) --- Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf | 3 ++- Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf index ecbd0d3be..c08ebbd46 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Create.sqf @@ -31,7 +31,7 @@ switch (_type) do _veh setUnitPos "MIDDLE"; - + _veh setVariable ["cti_duty_place", _town, true]; }; }; @@ -61,6 +61,7 @@ switch (_type) do _veh setUnitPos "MIDDLE"; _veh lookAt _town; + _veh setVariable ["cti_duty_place", _town, true]; }; }; diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf index 1a0482339..238c8b861 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics_Loop.sqf @@ -22,6 +22,8 @@ while {!CTI_GameOver} do _x addItemToBackpack "Titan_AA"; }; if ( {(_x select 2) in [east,west]} count(_x nearTargets 2500) == 0 ) then {_x selectWeapon "Laserdesignator_03";}; + _town = _x getVariable "cti_duty_place"; + if (((_town getVariable "cti_town_sideID") != CTI_RESISTANCE_ID) && !(_town getVariable "cti_town_resistance_active")) then {deleteVehicle _x;}; true } count (units _x); @@ -30,5 +32,5 @@ while {!CTI_GameOver} do true }count SM_ST_Groups; - sleep 10; + sleep 30; }; \ No newline at end of file From 3166f341ea3b6ae269a22a2aa5e56a44dc19dc0e Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 17 Oct 2020 19:20:36 +0200 Subject: [PATCH 222/267] version number - --- Rsc/Game.hpp | 4 ++-- mission.sqm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Rsc/Game.hpp b/Rsc/Game.hpp index 6dbda8abb..75e4b7f65 100644 --- a/Rsc/Game.hpp +++ b/Rsc/Game.hpp @@ -4,11 +4,11 @@ respawnDelay = 10; respawnDialog = false; //--- Require briefing.html to show up. -onLoadMission = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.2"; +onLoadMission = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.3"; onLoadMissionTime = false; onLoadName = "BECTI - Zerty/HTom/Yoshi_E"; -briefingName = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.2"; +briefingName = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.3"; //--- ArmA 3 Specifics dev = "Benny"; diff --git a/mission.sqm b/mission.sqm index 4eaf4ba85..f69359d38 100644 --- a/mission.sqm +++ b/mission.sqm @@ -97,7 +97,7 @@ class Mission { class Intel { - briefingName="BECTI BE 0.97 - Zerty 1.3.5.2"; + briefingName="BECTI BE 0.97 - Zerty 1.3.5.3"; overviewText="By Benny - Adapted from OFP era MFCTI (Mike Melvin)"; resistanceWest=0; timeOfChanges=24720; From bfd6ff3ba853e54f5c4050c2996ce3066a96786a Mon Sep 17 00:00:00 2001 From: Zerty <4232921+zerty@users.noreply.github.com> Date: Fri, 23 Oct 2020 16:52:57 +0200 Subject: [PATCH 223/267] Fix for #307 --- .../Strat_mode/Camps/SM_CAMPS_Create_Camp.sqf | 27 +++++++ Addons/Strat_mode/Camps/SM_CAMPS_Init.sqf | 73 +++++++++++++++++++ Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf | 12 ++- 3 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 Addons/Strat_mode/Camps/SM_CAMPS_Create_Camp.sqf create mode 100644 Addons/Strat_mode/Camps/SM_CAMPS_Init.sqf diff --git a/Addons/Strat_mode/Camps/SM_CAMPS_Create_Camp.sqf b/Addons/Strat_mode/Camps/SM_CAMPS_Create_Camp.sqf new file mode 100644 index 000000000..86a3bdb94 --- /dev/null +++ b/Addons/Strat_mode/Camps/SM_CAMPS_Create_Camp.sqf @@ -0,0 +1,27 @@ +// spawn a given camp +// input [Config, position,rot] +// output [objects, building positions] + +_camp=_this select 0; +_position=_this select 1; +_rot=_this select 2; +_object=[]; +_b_positions=[]; + +_camp_objects="true" configClasses _camp; +{ + _o_class=getText (_x >> "vehicle"); + _o_offset=getArray (_x >>"position"); + _o_dir=getNumber (_x >>"dir")-_rot; + _o_offset=[(_o_offset select 0) * cos _rot - (_o_offset select 1) * sin _rot,(_o_offset select 0) * sin _rot + (_o_offset select 1) * cos _rot,(_o_offset select 2)]; + _o_pos=_position vectoradd _o_offset; + + _o=createvehicle [_o_class, _o_pos, [], 0, "CAN_COLLIDE"]; + _o setdir (_o_dir); + _o enablesimulationglobal false; + _object set [count _object,_o]; + //need to select more precisely what position can be used for static Launcher AI + _b_positions = _b_positions + ([_o,100] call BIS_fnc_buildingPositions); + +} forEach _camp_objects; +[_object,_b_positions] \ No newline at end of file diff --git a/Addons/Strat_mode/Camps/SM_CAMPS_Init.sqf b/Addons/Strat_mode/Camps/SM_CAMPS_Init.sqf new file mode 100644 index 000000000..150d0275f --- /dev/null +++ b/Addons/Strat_mode/Camps/SM_CAMPS_Init.sqf @@ -0,0 +1,73 @@ +#DEFINE NUMCAMPS 4 + + +SM__CAMPS_CREATE_CAMP=compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Camps\SM_CAMPS_Create_Camp.sqf"; + + + +GUER_GROUPS_PATROL=[ + (configfile >> "CfgGroups" >> "Indep" >> "IND_F" >> "Infantry" >> "HAF_InfSentry"), + (configfile >> "CfgGroups" >> "Indep" >> "IND_F" >> "Infantry" >> "HAF_InfTeam"), + (configfile >> "CfgGroups" >> "Indep" >> "IND_F" >> "Infantry" >> "HAF_SniperTeam") + ]; +GUER_GROUPS_DEFEND=[ + (configfile >> "CfgGroups" >> "Indep" >> "IND_F" >> "Infantry" >> "HAF_InfTeam_AT"), + (configfile >> "CfgGroups" >> "Indep" >> "IND_F" >> "Infantry" >> "HAF_InfTeam_AA"), + (configfile >> "CfgGroups" >> "Indep" >> "IND_F" >> "Infantry" >> "HAF_InfSquad"), + (configfile >> "CfgGroups" >> "Indep" >> "IND_F" >> "Infantry" >> "HAF_InfSquad_Weapons") + ]; + + + + +/// +/// SERVER SIDE +/// + +CTI_SM_CAMPS=[]; + +//Wait map initialisation +waitUntil {CTI_EAST getVariable ["CTI_LOAD_COMPLETED",false]}; + +// Create Camps + +for "_i" from 0 to NUMCAMPS step 1 do +{ + _pos=[0,0,0]; + _gl=objNull; + _townstodef=[]; + // Find Position + + // Create game logic + CTI_SM_CAMPS pushBack(_gl); + + // Select towns to defend + + // select Type of Camp + _outposts = "true" configClasses (configfile >> "CfgGroups" >> "Empty" >> "Military" >> "Outposts"); + _type = (_possible select floor random (count _possible )); + + // Create Camps building + _buildings=[_type, _pos,random(360)] call SM__CAMPS_CREATE_CAMP; + // register variable + _gl setVariable ["CTI_SM_CAMP_TYPE", _type, false]; + _gl setVariable ["CTI_SM_CAMP_buildings", _buildings select 0, false]; + _gl setVariable ["CTI_SM_CAMP_Spositions", _buildings select 1, false]; + +}; + + + +// setup commander and groups + + +// Create Camps Statics + +// Launch Camp Loop + + +/// +/// Client Side SIDE +/// + +// Nothing client is blind to camp behavior \ No newline at end of file diff --git a/Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf b/Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf index 300c6aa78..7de49c146 100644 --- a/Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf +++ b/Addons/Strat_mode/SLING_AUG/SA_toDrop.sqf @@ -10,7 +10,15 @@ if (!(_target iskindof "Helicopter") || (isNull (getSlingLoad _target) && count _drop=objNull; _attached=false; -if (count (attachedObjects _target) >=1) then {_drop=(attachedObjects _target) select 0;_attached=true;}; +if (count (attachedObjects _target) >=1) then { + { + if !(isNull _x ) then { + _drop=_x; + _attached=true; + }; + } forEach (attachedObjects _target); + +}; if !(isNull (getSlingLoad _target)) then {_drop=getSlingLoad _target}; if(!(isNull _drop)) then { @@ -21,7 +29,7 @@ if(!(isNull _drop)) then { _target enableRopeAttach true; _target setmass (_target getvariable "initial_mass"); _target setcenterofmass (_target getvariable "initial_COM"); - + [_target , _drop] spawn { params ["_target", "_drop"]; sleep 2; From 366fed845eb9273b34311d31d0c771fd15d005c2 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 20 Feb 2021 14:41:36 +0100 Subject: [PATCH 224/267] New parameter Building by hand and workers at the same time --- Client/Events/Events_UI_BuildMenu.sqf | 2 +- Client/Events/Events_UI_WorkersMenu.sqf | 6 +++--- Client/GUI/GUI_BuildMenu.sqf | 2 +- Rsc/Parameters.hpp | 4 ++-- stringtable.xml | 4 ++++ 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Client/Events/Events_UI_BuildMenu.sqf b/Client/Events/Events_UI_BuildMenu.sqf index 8d4946c1c..8f19ac85f 100644 --- a/Client/Events/Events_UI_BuildMenu.sqf +++ b/Client/Events/Events_UI_BuildMenu.sqf @@ -8,7 +8,7 @@ switch (_action) do { _def_count=count (units ((CTI_P_SideLogic getVariable ["cti_defensive_team",grpNull]))); if (CTI_P_DefensesAutoManning) then { ctrlSetText [100011, format [localize "STR_Defenses_On",ctrlText ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100011),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] } else { ctrlSetText [100011,ctrlSetText [100011, format [localize "STR_Defenses_Off",ctrlText ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100011),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] ] }; - if ((missionnamespace getVariable "CTI_BASEBUILDING") < 1) then { + if ((missionnamespace getVariable "CTI_BASEBUILDING") != 1) then { ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100005) ctrlSetText format [localize "STR_Add_Worker", CTI_BASE_WORKERS_PRICE]; ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100009) ctrlshow true; ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100005) ctrlshow true; diff --git a/Client/Events/Events_UI_WorkersMenu.sqf b/Client/Events/Events_UI_WorkersMenu.sqf index 2bafe8b1a..072b6b012 100644 --- a/Client/Events/Events_UI_WorkersMenu.sqf +++ b/Client/Events/Events_UI_WorkersMenu.sqf @@ -7,7 +7,7 @@ switch (_action) do { _workers = _logic getVariable "cti_workers"; uiNamespace setVariable ["cti_dialog_ui_workersmenu_workers", _workers]; uiNamespace setVariable ["cti_dialog_ui_workersmenu_sellmode", 0]; - if ((missionnamespace getVariable "CTI_BASEBUILDING") < 1) then { + if ((missionnamespace getVariable "CTI_BASEBUILDING") != 1) then { ((uiNamespace getVariable "cti_dialog_ui_workersmenu") displayCtrl 260002) ctrlshow true; ((uiNamespace getVariable "cti_dialog_ui_workersmenu") displayCtrl 260003) ctrlshow true; } else { @@ -44,12 +44,12 @@ switch (_action) do { lnbClear 260002 ; _worker = (uiNamespace getVariable "cti_dialog_ui_workersmenu_workers") select _selected; _worker setDammage 1; - + //Refound the worker to commander _logic = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideLogic; _comMoney = _logic getvariable ["cti_commander_funds", 0] ; _logic setvariable ["cti_commander_funds",_comMoney+(round (CTI_BASE_WORKERS_PRICE*0.666)),true]; - + _workers = _logic getVariable "cti_workers"; uiNamespace setVariable ["cti_dialog_ui_workersmenu_workers", _workers]; { diff --git a/Client/GUI/GUI_BuildMenu.sqf b/Client/GUI/GUI_BuildMenu.sqf index 3b87af944..070aa6538 100644 --- a/Client/GUI/GUI_BuildMenu.sqf +++ b/Client/GUI/GUI_BuildMenu.sqf @@ -19,7 +19,7 @@ while { true } do { ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100008) ctrlSetStructuredText (parseText format["Resources: $%1", _funds, CTI_P_Coloration_Money]); }; - if (_last_workercount != _count&& (missionnamespace getVariable "CTI_BASEBUILDING") < 1) then { + if (_last_workercount != _count&& (missionnamespace getVariable "CTI_BASEBUILDING") != 1) then { ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100009) ctrlSetStructuredText (parseText format["Workers: %1/%2", _count, CTI_BASE_WORKERS_LIMIT]); }; diff --git a/Rsc/Parameters.hpp b/Rsc/Parameters.hpp index 0bc38fbd7..9efd1247b 100644 --- a/Rsc/Parameters.hpp +++ b/Rsc/Parameters.hpp @@ -305,8 +305,8 @@ class Params { }; class CTI_BASEBUILDING { title = $STR_CTI_BASEBUILDING; - values[] = {0,1}; - texts[] = {$STR_CTI_BASEBUILDING_WK,$STR_CTI_BASEBUILDING_PL}; + values[] = {0,1,2}; + texts[] = {$STR_CTI_BASEBUILDING_WK,$STR_CTI_BASEBUILDING_PL,$STR_CTI_BASEBUILDING_BOTH}; default = 1; }; class CTI_GAMEPLAY_DARTER { diff --git a/stringtable.xml b/stringtable.xml index d09dc85e7..59ecba0d1 100644 --- a/stringtable.xml +++ b/stringtable.xml @@ -489,6 +489,10 @@ Players Игроки + + Both + обе + Zerty: GAMEPLAY: Darter Range limitation Дальность связи с маленькими БПЛА From 82fdfc819507b74217d36c9fee1ac5cdc6516d79 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 12 Apr 2021 21:43:22 +0200 Subject: [PATCH 225/267] Fix for statics script error on small maps --- Addons/Strat_mode/Functions/SM_Map_Statics.sqf | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_Map_Statics.sqf b/Addons/Strat_mode/Functions/SM_Map_Statics.sqf index 5e83dc75b..56b79753c 100644 --- a/Addons/Strat_mode/Functions/SM_Map_Statics.sqf +++ b/Addons/Strat_mode/Functions/SM_Map_Statics.sqf @@ -1,11 +1,13 @@ SM_ST_Create = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\SM_Map_Statics_Create.sqf"; SM_ST_Loop = compileFinal preprocessFileLineNumbers "Addons\Strat_mode\Functions\SM_Map_Statics_Loop.sqf"; -SM_ST_PARAM=[["AT",10],["AA",10]]; +_towns = []+CTI_Towns; -SM_ST_Groups=[]; +_number = ceil ((count _towns)/6); -_towns = []+CTI_Towns; +SM_ST_PARAM=[["AT",_number],["AA",_number]]; + +SM_ST_Groups=[]; { From c6abfd4c6210068c598b4c9d2665432d2a2681f7 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 17 Apr 2021 20:23:37 +0200 Subject: [PATCH 226/267] onLoad name, vote list name changes Set onLoad name shorter (was ~50% visible). Set map name in briefing name for vote list. You can see the voting status correctly. --- Rsc/Game.hpp | 2 +- mission.sqm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Rsc/Game.hpp b/Rsc/Game.hpp index 75e4b7f65..2fbddcb2f 100644 --- a/Rsc/Game.hpp +++ b/Rsc/Game.hpp @@ -6,7 +6,7 @@ respawnDialog = false; //--- Require briefing.html to show up. onLoadMission = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.3"; onLoadMissionTime = false; -onLoadName = "BECTI - Zerty/HTom/Yoshi_E"; +onLoadName = "BECTI Altis"; briefingName = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.3"; diff --git a/mission.sqm b/mission.sqm index f69359d38..ddeab6981 100644 --- a/mission.sqm +++ b/mission.sqm @@ -97,7 +97,7 @@ class Mission { class Intel { - briefingName="BECTI BE 0.97 - Zerty 1.3.5.3"; + briefingName="BECTI BE 0.97 - Zerty 1.3.5.3 - Altis"; overviewText="By Benny - Adapted from OFP era MFCTI (Mike Melvin)"; resistanceWest=0; timeOfChanges=24720; From a87d9f35202da64dfd2d84bd1ad23ff6ba950424 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Mon, 10 May 2021 21:07:32 +0200 Subject: [PATCH 227/267] fix for #309 Def automanning available from def menu, only for commanders. --- Client/Events/Events_UI_DefenseMenu.sqf | 10 ++++++++++ Rsc/Dialogs.hpp | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/Client/Events/Events_UI_DefenseMenu.sqf b/Client/Events/Events_UI_DefenseMenu.sqf index 7b1521d78..a80cfe01e 100644 --- a/Client/Events/Events_UI_DefenseMenu.sqf +++ b/Client/Events/Events_UI_DefenseMenu.sqf @@ -7,6 +7,11 @@ switch (_action) do { if (isNil 'CTI_P_WallsAutoAlign') then { CTI_P_WallsAutoAlign = true }; if (CTI_P_WallsAutoAlign) then { ctrlSetText [200003, "Auto-Align Walls: On"] } else { ctrlSetText [200003, "Auto-Align Walls: Off"] }; + if (isNil 'CTI_P_DefensesAutoManning') then { CTI_P_DefensesAutoManning = false }; + _def_count=count (units ((CTI_P_SideLogic getVariable ["cti_defensive_team",grpNull]))); + if (CTI_P_DefensesAutoManning) then { ctrlSetText [200004, format [localize "STR_Defenses_On",ctrlText ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] } else { ctrlSetText [200004,ctrlSetText [200004, format [localize "STR_Defenses_Off",ctrlText ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] ] }; + if !(call CTI_CL_FNC_IsPlayerCommander) then { ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004) ctrlEnable false; }; + { _var = missionNamespace getVariable _x; @@ -49,6 +54,11 @@ switch (_action) do { CTI_P_WallsAutoAlign = !CTI_P_WallsAutoAlign; if (CTI_P_WallsAutoAlign) then { ctrlSetText [200003, "Auto-Align Walls: On"] } else { ctrlSetText [200003, "Auto-Align Walls: Off"] }; }; + case "onAutoManning": { + CTI_P_DefensesAutoManning = !CTI_P_DefensesAutoManning; + _def_count=count (units ((CTI_P_SideLogic getVariable ["cti_defensive_team",grpNull]))); + if (CTI_P_DefensesAutoManning) then { ctrlSetText [200004, format [localize "STR_Defenses_On",ctrlText ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] } else { ctrlSetText [200004,ctrlSetText [200004, format [localize "STR_Defenses_Off",ctrlText ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] ] }; + }; case "onUndoDefense": { if !(isNull CTI_P_LastDefenseBuilt) then { deleteVehicle CTI_P_LastDefenseBuilt; diff --git a/Rsc/Dialogs.hpp b/Rsc/Dialogs.hpp index 35e5a5aef..960b691fc 100644 --- a/Rsc/Dialogs.hpp +++ b/Rsc/Dialogs.hpp @@ -1961,6 +1961,15 @@ class CTI_RscTabletDefenseMenu { text = ""; action = "['onAutoAlign'] call compile preprocessFileLineNumbers 'Client\Events\Events_UI_DefenseMenu.sqf'"; }; + class CTI_Menu_Control_AutoManning : CTI_Menu_Control_Undo { + idc = 200004; + + y = "SafeZoneY+safezoneH*(0.280+0.06+0.005*4+0.04*3)"; + + text = ""; + tooltip = $STR_Defenses_Tooltip; + action = "['onAutoManning'] call compile preprocessFileLineNumbers 'Client\Events\Events_UI_DefenseMenu.sqf'"; + }; class CTI_Menu_Control_BuildingList : RscListNBox { idc = 200007; From 7896b0eb3efa68ca7589773f704435d637794ec1 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 17 May 2021 22:13:03 +0200 Subject: [PATCH 228/267] #310 Added M2 MG to defense menu --- Common/Config/Base/Base_East.sqf | 12 ++++++++++++ Common/Config/Base/Base_West.sqf | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/Common/Config/Base/Base_East.sqf b/Common/Config/Base/Base_East.sqf index 498cb615c..02abec76d 100644 --- a/Common/Config/Base/Base_East.sqf +++ b/Common/Config/Base/Base_East.sqf @@ -225,6 +225,18 @@ _prices = []; _placements = []; _categories = []; +_headers = _headers + ["M2 HMG .50 (low)"]; +_classes = _classes + ["O_G_HMG_02_F"]; +_prices = _prices + [150]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; + +_headers = _headers + ["M2 HMG .50 (raised)"]; +_classes = _classes + ["O_G_HMG_02_high_F"]; +_prices = _prices + [150]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; + _headers = _headers + ["MG Defense"]; _classes = _classes + ["O_HMG_01_High_F"]; _prices = _prices + [200]; diff --git a/Common/Config/Base/Base_West.sqf b/Common/Config/Base/Base_West.sqf index c22af8c71..d8f39f75b 100644 --- a/Common/Config/Base/Base_West.sqf +++ b/Common/Config/Base/Base_West.sqf @@ -231,6 +231,18 @@ _placements = []; _categories = []; +_headers = _headers + ["M2 HMG .50 (low)"]; +_classes = _classes + ["B_G_HMG_02_F"]; +_prices = _prices + [150]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; + +_headers = _headers + ["M2 HMG .50 (raised)"]; +_classes = _classes + ["B_G_HMG_02_high_F"]; +_prices = _prices + [150]; +_placements = _placements + [[180, 5]]; +_categories = _categories + ["Defense"]; + _headers = _headers + ["MG Defense"]; _classes = _classes + ["B_HMG_01_High_F"]; _prices = _prices + [200]; From 2d8c257157ef99f0b0596a7508c2e89cb66f9923 Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Mon, 17 May 2021 22:13:44 +0200 Subject: [PATCH 229/267] Lowered price of AWC At version (was more expensive than gorgon despite being weaker) --- Common/Config/Units/Units_East.sqf | 2 +- Common/Config/Units/Units_West.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/Config/Units/Units_East.sqf b/Common/Config/Units/Units_East.sqf index af0f7998b..2e5e2ac93 100644 --- a/Common/Config/Units/Units_East.sqf +++ b/Common/Config/Units/Units_East.sqf @@ -1340,7 +1340,7 @@ _s = _s + [""]; _c = _c + ['I_LT_01_AT_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [6000]; +_o = _o + [3000]; _t = _t + [30]; _u = _u + [2]; _f = _f + [4]; diff --git a/Common/Config/Units/Units_West.sqf b/Common/Config/Units/Units_West.sqf index d0b58cc8b..b8c8cff7f 100644 --- a/Common/Config/Units/Units_West.sqf +++ b/Common/Config/Units/Units_West.sqf @@ -1198,7 +1198,7 @@ _s = _s + [""]; _c = _c + ['I_LT_01_AT_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [6000]; +_o = _o + [3000]; _t = _t + [30]; _u = _u + [3]; _f = _f + [4]; From 68050fdf5bdb40a55f137e16a46aa2a46792e837 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 20 May 2021 19:01:36 +0200 Subject: [PATCH 230/267] M2 - Attach --- Addons/Strat_mode/Functions/SM_AttachStatics.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_AttachStatics.sqf b/Addons/Strat_mode/Functions/SM_AttachStatics.sqf index a22ba455c..4fbab474d 100644 --- a/Addons/Strat_mode/Functions/SM_AttachStatics.sqf +++ b/Addons/Strat_mode/Functions/SM_AttachStatics.sqf @@ -1,5 +1,5 @@ -STATICS_MG = ["I_HMG_01_high_F","I_GMG_01_high_F","O_HMG_01_high_F","O_GMG_01_high_F","B_HMG_01_high_F","B_GMG_01_high_F"]; -STATICS_LMG = ["I_HMG_01_F","I_GMG_01_F","O_HMG_01_F","O_GMG_01_F","B_HMG_01_F","B_GMG_01_F","B_T_GMG_01_F","B_T_HMG_01_F"]; +STATICS_MG = ["I_HMG_01_high_F","I_GMG_01_high_F","O_HMG_01_high_F","O_GMG_01_high_F","B_HMG_01_high_F","B_GMG_01_high_F","O_G_HMG_02_high_F","B_G_HMG_02_high_F"]; +STATICS_LMG = ["I_HMG_01_F","I_GMG_01_F","O_HMG_01_F","O_GMG_01_F","B_HMG_01_F","B_GMG_01_F","B_T_GMG_01_F","B_T_HMG_01_F","O_G_HMG_02_F","B_G_HMG_02_F"]; STATICS_L = ["I_static_AA_F","I_static_AT_F","O_static_AA_F","O_static_AT_F","B_static_AA_F","B_static_AT_F","B_T_Static_AA_F","B_T_Static_AT_F"]; STATICS_M = ["ReammoBox_F"]; STATICS_NOTSTATICS = ["B_Slingload_01_Cargo_F","B_Slingload_01_Medevac_F","B_Slingload_01_Fuel_F","B_Slingload_01_Repair_F","B_Slingload_01_Ammo_F"]; From f077f3acd317aac4dab55dbcb1245b4e284343ba Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 20 May 2021 19:42:28 +0200 Subject: [PATCH 231/267] Change M2 to Holo sight version --- Server/Functions/Server_BuildDefense.sqf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Server/Functions/Server_BuildDefense.sqf b/Server/Functions/Server_BuildDefense.sqf index 3ea2fb7e2..3c68e28de 100644 --- a/Server/Functions/Server_BuildDefense.sqf +++ b/Server/Functions/Server_BuildDefense.sqf @@ -127,6 +127,10 @@ if (_defense isKindOf "B_supplyCrate_F") then { clearWeaponCargoGlobal _defense; }; +if (_defense isKindOf "O_G_HMG_02_high_F" || _defense isKindOf "B_G_HMG_02_high_F" || _defense isKindOf "O_G_HMG_02_F" || _defense isKindOf "B_G_HMG_02_F") then { + [_defense, nil, ["Hide_Rail",0,"Hide_Shield",0]] call BIS_fnc_initVehicle; +}; + if (_defense isKindOf "B_AAA_System_01_F" || _defense isKindOf "B_SAM_System_01_F" || _defense isKindOf "B_SAM_System_02_F") then { _def_pos = getPos _defense; _defense setPos [0,0,9000]; From 986460968de6ae6cb9def4a91b59dd0ad57abf25 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Fri, 21 May 2021 19:48:49 +0200 Subject: [PATCH 232/267] M2 holo sight again (now for prebuild def) --- Client/Functions/Client_PlacingDefense.sqf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Client/Functions/Client_PlacingDefense.sqf b/Client/Functions/Client_PlacingDefense.sqf index 2b300cdd6..e829df909 100644 --- a/Client/Functions/Client_PlacingDefense.sqf +++ b/Client/Functions/Client_PlacingDefense.sqf @@ -68,6 +68,9 @@ _distance_structure = (_var select 4) select 1; {_local disableCollisionWith _x} forEach (player nearObjects 150); _local enableSimulation false; _local setpos (getPos player); +if (_local isKindOf "O_G_HMG_02_high_F" || _local isKindOf "B_G_HMG_02_high_F" || _local isKindOf "O_G_HMG_02_F" || _local isKindOf "B_G_HMG_02_F") then { + [_local, nil, ["Hide_Rail",0,"Hide_Shield",0]] call BIS_fnc_initVehicle; +}; _last_collision_update = -600; _condition = {true}; From 503c41b741f2feb742131d3e56acab42ff85765b Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 22 May 2021 17:12:05 +0200 Subject: [PATCH 233/267] Disable automanning when static attached. Not prevent load manned static to car. --- Server/Functions/Server_HandleStaticDefenses.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/Functions/Server_HandleStaticDefenses.sqf b/Server/Functions/Server_HandleStaticDefenses.sqf index 2209b3aaf..965874743 100644 --- a/Server/Functions/Server_HandleStaticDefenses.sqf +++ b/Server/Functions/Server_HandleStaticDefenses.sqf @@ -46,7 +46,7 @@ while {! CTI_GAMEOVER} do { { if ((_x getVariable ["cti_aman_enabled", false])|| (typeof _x )in ["B_AAA_System_01_F","B_SAM_System_01_F","B_SAM_System_02_F","B_Radar_System_01_F","B_SAM_System_03_F","O_Radar_System_02_F","O_SAM_System_04_F"]) then { _defense_team = _logic getVariable "cti_defensive_team"; - if (((_x emptyPositions "gunner" > 0)|| (gunner _x ) != (_x getvariable ["CTI_assigned_gunner",objnull]) || ((isnull (_x getvariable ["CTI_assigned_gunner",objnull])) && ! isnull (gunner _x))) && alive _x) then { + if (((_x emptyPositions "gunner" > 0)|| (gunner _x ) != (_x getvariable ["CTI_assigned_gunner",objnull]) || ((isnull (_x getvariable ["CTI_assigned_gunner",objnull])) && ! isnull (gunner _x))) && alive _x && isNull attachedTo _x) then { _nearest_b = [CTI_BARRACKS, _x, (_side) call CTI_CO_FNC_GetSideStructures, CTI_BASE_DEFENSES_AUTO_REARM_RANGE] call CTI_CO_FNC_GetClosestStructure; if (!(isnull _nearest_b) && alive _nearest_b && (getDammage _x) < 0.4 ) then { if (isnull (_x getvariable ["CTI_assigned_gunner",objnull]) && count(_defense_team call CTI_CO_FNC_GetLiveUnits) < CTI_BASE_DEFENSES_AUTO_LIMIT) then { From 7e26f37e3a5f1b1ebc626fd1942a3487b4fbdd23 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Wed, 30 Jun 2021 23:29:41 +0200 Subject: [PATCH 234/267] version number - --- Rsc/Game.hpp | 4 ++-- mission.sqm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Rsc/Game.hpp b/Rsc/Game.hpp index 2fbddcb2f..d0abfaaa6 100644 --- a/Rsc/Game.hpp +++ b/Rsc/Game.hpp @@ -4,11 +4,11 @@ respawnDelay = 10; respawnDialog = false; //--- Require briefing.html to show up. -onLoadMission = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.3"; +onLoadMission = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.4"; onLoadMissionTime = false; onLoadName = "BECTI Altis"; -briefingName = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.3"; +briefingName = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.4"; //--- ArmA 3 Specifics dev = "Benny"; diff --git a/mission.sqm b/mission.sqm index ddeab6981..26a16e413 100644 --- a/mission.sqm +++ b/mission.sqm @@ -97,7 +97,7 @@ class Mission { class Intel { - briefingName="BECTI BE 0.97 - Zerty 1.3.5.3 - Altis"; + briefingName="BECTI BE 0.97 - Zerty 1.3.5.4 - Altis"; overviewText="By Benny - Adapted from OFP era MFCTI (Mike Melvin)"; resistanceWest=0; timeOfChanges=24720; From cfd0e897e11d153c39c094f696a6ef989b458e3e Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 1 Jul 2021 22:51:42 +0200 Subject: [PATCH 235/267] day / night ratio for other islands Tanoa night longer than the daytime. --- Addons/Strat_mode/init.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index 8824c69e6..dd1845aae 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -355,14 +355,14 @@ if (CTI_IsServer) then { // time compression 0 spawn { - _day_ratio=14/CTI_WEATHER_FAST; - _nigth_ratio=10/CTI_WEATHER_FAST_NIGTH; _sunrise = 5; _sunset = 19; switch (true) do { case (ISLAND == 3): {_sunrise = 7; _sunset = 18;}; case (ISLAND == 6): {_sunrise = 4; _sunset = 20;}; }; + _day_ratio = (_sunset - _sunrise) / CTI_WEATHER_FAST; + _nigth_ratio = (24 - (_sunset - _sunrise)) / CTI_WEATHER_FAST_NIGTH; while {!CTI_Gameover} do { if (daytime > _sunrise && daytime < _sunset) then { if (timeMultiplier != _day_ratio) then {setTimeMultiplier _day_ratio;}; From 138f0234619360ae750935ceaf7bb72bb59e757b Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 1 Jul 2021 23:50:42 +0200 Subject: [PATCH 236/267] AI skill aimingAccuracy set lower from 0.21-0.33 to 0.18-0.3 (skill level 4) --- Addons/AiRandomSkill/RandomSkill.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/AiRandomSkill/RandomSkill.sqf b/Addons/AiRandomSkill/RandomSkill.sqf index 2d496d6f5..07c812013 100644 --- a/Addons/AiRandomSkill/RandomSkill.sqf +++ b/Addons/AiRandomSkill/RandomSkill.sqf @@ -56,7 +56,7 @@ if (_skill < 0.05) then { }; // Set how the skill is affecting each skill type. -_aimingAccuracyLevel = _skill * 0.7; +_aimingAccuracyLevel = _skill * 0.6; _aimingShakeLevel = _skill * 1.0; _aimingSpeedLevel = _skill * 0.7; _spotDistanceLevel = _skill * 2.0; From a1474f8fc431dedd65d67212f9a0a3665e0b3fdb Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 8 Jul 2021 14:52:41 +0200 Subject: [PATCH 237/267] Zeus edit fix for structures and defs for faster debug --- Server/Functions/Server_BuildDefense.sqf | 5 ++++- Server/Functions/Server_BuildStructure.sqf | 5 ++++- Server/Functions/Server_HandleStructureConstruction.sqf | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Server/Functions/Server_BuildDefense.sqf b/Server/Functions/Server_BuildDefense.sqf index 3c68e28de..17a6a8b98 100644 --- a/Server/Functions/Server_BuildDefense.sqf +++ b/Server/Functions/Server_BuildDefense.sqf @@ -164,6 +164,9 @@ if (missionNamespace getVariable "CTI_SM_RADAR" == 1) then { }; -if !( isNil "ADMIN_ZEUS") then { ADMIN_ZEUS addCuratorEditableObjects [[_defense],true];}; +if !( isNil "ADMIN_ZEUS") then { + ADMIN_ZEUS addCuratorAddons (configSourceAddonList (configFile >> "CfgVehicles" >> typeof _defense)); + ADMIN_ZEUS addCuratorEditableObjects [[_defense],true]; +}; _defense diff --git a/Server/Functions/Server_BuildStructure.sqf b/Server/Functions/Server_BuildStructure.sqf index ee13d8d82..6ceb83b05 100644 --- a/Server/Functions/Server_BuildStructure.sqf +++ b/Server/Functions/Server_BuildStructure.sqf @@ -63,6 +63,9 @@ if !(isNull _origin) then { [["CLIENT", _origin], "Client_ReceiveStructureBase", _structure] call CTI_CO_FNC_NetSend; }; -if !( isNil "ADMIN_ZEUS") then { ADMIN_ZEUS addCuratorEditableObjects [[_structure],true];}; +if !( isNil "ADMIN_ZEUS") then { + ADMIN_ZEUS addCuratorAddons (configSourceAddonList (configFile >> "CfgVehicles" >> typeof _structure)); + ADMIN_ZEUS addCuratorEditableObjects [[_structure],true]; +}; _structure diff --git a/Server/Functions/Server_HandleStructureConstruction.sqf b/Server/Functions/Server_HandleStructureConstruction.sqf index c24f9e354..b2b76a688 100644 --- a/Server/Functions/Server_HandleStructureConstruction.sqf +++ b/Server/Functions/Server_HandleStructureConstruction.sqf @@ -140,4 +140,7 @@ if (_completion >= 100) then { //todo: add message bout structure expiration }; -if !( isNil "ADMIN_ZEUS") then { ADMIN_ZEUS addCuratorEditableObjects [[_structure],true];}; +if !( isNil "ADMIN_ZEUS") then { + ADMIN_ZEUS addCuratorAddons (configSourceAddonList (configFile >> "CfgVehicles" >> typeof _structure)); + ADMIN_ZEUS addCuratorEditableObjects [[_structure],true]; +}; From e6d976b8a35d3a0bb3da729794dbf3fc4f9101a9 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 8 Jul 2021 15:35:58 +0200 Subject: [PATCH 238/267] and Zeus fix for vehicles and units maybe later need add for mines, mortars, cas crew, ect... --- Addons/Strat_mode/Functions/SM_Town_CAS.sqf | 2 +- Addons/Strat_mode/Functions/SM_Town_Ship.sqf | 2 +- Addons/Strat_mode/PATROL_AI/PAI_CreatePatrol.sqf | 2 +- Addons/Strat_mode/init.sqf | 1 + Common/Functions/Common_CreateUnit.sqf | 1 + Common/Functions/Common_CreateVehicle.sqf | 1 + Server/Functions/Server_CreateWorker.sqf | 2 +- 7 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_Town_CAS.sqf b/Addons/Strat_mode/Functions/SM_Town_CAS.sqf index 8018b443c..99cc75542 100644 --- a/Addons/Strat_mode/Functions/SM_Town_CAS.sqf +++ b/Addons/Strat_mode/Functions/SM_Town_CAS.sqf @@ -15,7 +15,7 @@ SM_TCAS_MAINLOOP=compile ' _v=[_type, _pos, _dir, resistance, true, true, true, _fly] call CTI_CO_FNC_CreateVehicle; [_v,_group] call bis_fnc_spawncrew; - if !( isNil "ADMIN_ZEUS") then { ADMIN_ZEUS addCuratorEditableObjects [([_v]),true];}; + if !( isNil "ADMIN_ZEUS") then { ADMIN_ZEUS addCuratorAddons (configSourceAddonList (configFile >> "CfgVehicles" >> typeof _v)); ADMIN_ZEUS addCuratorEditableObjects [([_v]),true];}; if !( isNil "ADMIN_ZEUS") then { ADMIN_ZEUS addCuratorEditableObjects [(units _group),true];}; //_v flyInHeight 300; _AISkill = missionNamespace getVariable "CTI_AI_SKILL"; diff --git a/Addons/Strat_mode/Functions/SM_Town_Ship.sqf b/Addons/Strat_mode/Functions/SM_Town_Ship.sqf index 064fe1237..f696ffc69 100644 --- a/Addons/Strat_mode/Functions/SM_Town_Ship.sqf +++ b/Addons/Strat_mode/Functions/SM_Town_Ship.sqf @@ -9,7 +9,7 @@ SM_TShip_MAINLOOP=compile ' _dir=([_pos, _town] call CTI_CO_FNC_GetDirTo) + 90; _v=[_type, _pos, _dir, resistance, true, true, true, _form] call CTI_CO_FNC_CreateVehicle; [_v,_group] call bis_fnc_spawncrew; - if !( isNil "ADMIN_ZEUS") then { ADMIN_ZEUS addCuratorEditableObjects [([_v]),true];}; + if !( isNil "ADMIN_ZEUS") then { ADMIN_ZEUS addCuratorAddons (configSourceAddonList (configFile >> "CfgVehicles" >> typeof _v)); ADMIN_ZEUS addCuratorEditableObjects [([_v]),true];}; if !( isNil "ADMIN_ZEUS") then { ADMIN_ZEUS addCuratorEditableObjects [(units _group),true];}; _pos1=[[[_townpos, 500]],["ground"]] call BIS_fnc_randomPos; _AISkill = missionNamespace getVariable "CTI_AI_SKILL"; diff --git a/Addons/Strat_mode/PATROL_AI/PAI_CreatePatrol.sqf b/Addons/Strat_mode/PATROL_AI/PAI_CreatePatrol.sqf index 25905fe86..763261b48 100644 --- a/Addons/Strat_mode/PATROL_AI/PAI_CreatePatrol.sqf +++ b/Addons/Strat_mode/PATROL_AI/PAI_CreatePatrol.sqf @@ -20,7 +20,7 @@ if (count _roads >0 ) then { //waitUntil {!isnull _group && !isNull _v}; _group=createGroup resistance; [_v,_group] call bis_fnc_spawncrew; - if !( isNil "ADMIN_ZEUS") then { ADMIN_ZEUS addCuratorEditableObjects [[_v],true];}; + if !( isNil "ADMIN_ZEUS") then {ADMIN_ZEUS addCuratorAddons (configSourceAddonList (configFile >> "CfgVehicles" >> typeof _v)); ADMIN_ZEUS addCuratorEditableObjects [[_v],true];}; _group setvariable ["defending",false,true]; ["SERVER", "Request_HandleAction", ["empty", [_v]]] call CTI_CO_FNC_NetSend; diag_log format [":: Patrols :: Creating %1 :: %2",_v,position _pos]; diff --git a/Addons/Strat_mode/init.sqf b/Addons/Strat_mode/init.sqf index dd1845aae..6a0e6a7f4 100644 --- a/Addons/Strat_mode/init.sqf +++ b/Addons/Strat_mode/init.sqf @@ -203,6 +203,7 @@ if (CTI_IsServer) then { CTI_PVF_Server_Addeditable= { + (_this select 0) addCuratorAddons (configSourceAddonList (configFile >> "CfgVehicles" >> typeof (_this select 1))); (_this select 0) addCuratorEditableObjects [[_this select 1],true] ; }; diff --git a/Common/Functions/Common_CreateUnit.sqf b/Common/Functions/Common_CreateUnit.sqf index 33adfd38c..612e706ad 100644 --- a/Common/Functions/Common_CreateUnit.sqf +++ b/Common/Functions/Common_CreateUnit.sqf @@ -219,6 +219,7 @@ if !( isNil "ADMIN_ZEUS" ) then { if !(isServer) then { ["SERVER", "Server_Addeditable",[ADMIN_ZEUS,_unit]] call CTI_CO_FNC_NetSend; } else { + ADMIN_ZEUS addCuratorAddons (configSourceAddonList (configFile >> "CfgVehicles" >> typeof _unit)); ADMIN_ZEUS addCuratorEditableObjects [[_unit],true] ; }; }; diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index 4b0109f40..8087ab2b4 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -351,6 +351,7 @@ if !( isNil "ADMIN_ZEUS") then { if !(CTI_isServer) then { ["SERVER", "Server_Addeditable",[ADMIN_ZEUS,_vehicle]] call CTI_CO_FNC_NetSend; } else { + ADMIN_ZEUS addCuratorAddons (configSourceAddonList (configFile >> "CfgVehicles" >> typeof _vehicle)); ADMIN_ZEUS addCuratorEditableObjects [[_vehicle],true] ; }; }; diff --git a/Server/Functions/Server_CreateWorker.sqf b/Server/Functions/Server_CreateWorker.sqf index 9c42557db..bdf8fa3d0 100644 --- a/Server/Functions/Server_CreateWorker.sqf +++ b/Server/Functions/Server_CreateWorker.sqf @@ -63,6 +63,6 @@ removeAllWeapons _worker; _worker disableAI "TARGET"; _worker disableAI "AUTOTARGET"; -if !( isNil "ADMIN_ZEUS") then { ADMIN_ZEUS addCuratorEditableObjects [[_worker],true];}; +if !( isNil "ADMIN_ZEUS") then {ADMIN_ZEUS addCuratorAddons (configSourceAddonList (configFile >> "CfgVehicles" >> typeof _worker)); ADMIN_ZEUS addCuratorEditableObjects [[_worker],true];}; [_side, _worker] execFSM "Server\FSM\update_worker.fsm"; \ No newline at end of file From d6e7dbcc4658f7dac89b6b05157b3d2f230da361 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 10 Jul 2021 20:51:05 +0200 Subject: [PATCH 239/267] fix for alternative dmg buildings fix for broken window kill the building --- .../Functions/Server_HandleStructureConstruction.sqf | 2 +- .../Server_OnBuildingHandleVirtualDamage.sqf | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Server/Functions/Server_HandleStructureConstruction.sqf b/Server/Functions/Server_HandleStructureConstruction.sqf index b2b76a688..0024a6dff 100644 --- a/Server/Functions/Server_HandleStructureConstruction.sqf +++ b/Server/Functions/Server_HandleStructureConstruction.sqf @@ -98,7 +98,7 @@ if (_completion >= 100) then { {if ("DMG_Alternative" in _x) then {_alternative_damages = true}; if ("DMG_Reduce" in _x) then {_reduce_damages = _x select 1}; if ("Connected" in _x) then {_structure setVariable ["AN_iNet",_side_id,true]; _structure setVariable ["AN_Parrents",[_structure],false];} } forEach (_var select 5); if (_alternative_damages) then { _structure setVariable ["cti_altdmg", 0,true]; - _structure addEventHandler ["handledamage", format ["[_this select 0, _this select 2, _this select 3, '%1', %2, %3, %4, %5, %6] call CTI_SE_FNC_OnBuildingHandleVirtualDamage", _variable, (_side) call CTI_CO_FNC_GetSideID, _position, _direction, _completion_ratio, _reduce_damages]]; + _structure addEventHandler ["handledamage", format ["[_this select 0, _this select 2, _this select 3, '%1', %2, %3, %4, %5, %6, _this select 7] call CTI_SE_FNC_OnBuildingHandleVirtualDamage", _variable, (_side) call CTI_CO_FNC_GetSideID, _position, _direction, _completion_ratio, _reduce_damages]]; } else { _structure addEventHandler ["killed", format ["[_this select 0, _this select 1, '%1', %2, %3, %4, %5] spawn CTI_SE_FNC_OnBuildingDestroyed", _variable, (_side) call CTI_CO_FNC_GetSideID, _position, _direction, _completion_ratio]]; if (_reduce_damages > 0 || CTI_BASE_NOOBPROTECTION == 1) then { diff --git a/Server/Functions/Server_OnBuildingHandleVirtualDamage.sqf b/Server/Functions/Server_OnBuildingHandleVirtualDamage.sqf index 236f79b88..55b9ab62a 100644 --- a/Server/Functions/Server_OnBuildingHandleVirtualDamage.sqf +++ b/Server/Functions/Server_OnBuildingHandleVirtualDamage.sqf @@ -7,7 +7,7 @@ The damages are virtual so we return 0 all the time. Author: Benny Creation Date: 20-09-2013 - Revision Date: 20-09-2013 + Revision Date: 10-07-2021 - [H] Tom # PARAMETERS # 0 [Object]: The hit structure @@ -19,12 +19,13 @@ 6 [Number]: The structure's direction 7 [Number]: The structure completion speed ratio 8 [Number]: Damage reduction + 9 [String]: The hitpoint # RETURNED VALUE # [Number]: The negated afflicted damage # SYNTAX # - [STRUCTURE, DAMAGES, SHOOTER, STRUCTURE VARIABLE, SIDE ID, POSITION, DIRECTION, COMPLETION RATIO, POSITION] call CTI_SE_FNC_OnBuildingHandleDamage + [STRUCTURE, DAMAGES, SHOOTER, STRUCTURE VARIABLE, SIDE ID, POSITION, DIRECTION, COMPLETION RATIO, REDUCTION, HITPOINT] call CTI_SE_FNC_OnBuildingHandleVirtualDamage # DEPENDENCIES # Common Function: CTI_CO_FNC_GetSideFromID @@ -33,10 +34,10 @@ Server Function: CTI_SE_FNC_OnBuildingDestroyed # EXAMPLE # - _structure addEventHandler ["handledamage", format ["[_this select 0, _this select 2, _this select 3, '%1', %2, %3, %4, %5, %6] call CTI_SE_FNC_OnBuildingHandleVirtualDamage", _variable, (_side) call CTI_CO_FNC_GetSideID, _position, _direction, _completion_ratio, _reduce_damages]]; + _structure addEventHandler ["handledamage", format ["[_this select 0, _this select 2, _this select 3, '%1', %2, %3, %4, %5, %6, _this select 7] call CTI_SE_FNC_OnBuildingHandleVirtualDamage", _variable, (_side) call CTI_CO_FNC_GetSideID, _position, _direction, _completion_ratio, _reduce_damages]]; */ -private ["_completion_ratio", "_damage", "_damaged", "_direction", "_logic", "_position", "_reduce_damages", "_shooter", "_side", "_sideID", "_variable", "_virtual_damages"]; +private ["_completion_ratio", "_damage", "_damaged", "_direction", "_logic", "_position", "_reduce_damages", "_shooter", "_side", "_sideID", "_variable", "_virtual_damages", "_hitpoint"]; _damaged = _this select 0; _damage = _this select 1; @@ -47,6 +48,7 @@ _position = _this select 5; _direction = _this select 6; _completion_ratio = _this select 7; _reduce_damages = _this select 8; +_hitpoint = _this select 9; _side = (_sideID) call CTI_CO_FNC_GetSideFromID; _logic = (_side) call CTI_CO_FNC_GetSideLogic; @@ -57,6 +59,7 @@ if (CTI_BASE_NOOBPROTECTION == 1 && side _shooter in [_side, sideEnemy]) exitWit _ratio=if (_damaged getvariable ["CTI_protected",false]&& CTI_SM_BASEP_M > 0) then { CTI_SM_BASEP_M} else {1}; _damage= _damage / _ratio; if (_reduce_damages > 0) then {_damage = _damage / _reduce_damages}; +if ("glass" in _hitpoint) then {_damage = 0;}; _virtual_damages = _damaged getVariable "cti_altdmg"; if (isNil '_virtual_damages') then {_virtual_damages = 0}; From b999eb0620725c748f62ae9f290fbb9b94b5790b Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 10 Jul 2021 22:15:38 +0200 Subject: [PATCH 240/267] CC dmg reduce changes _damage = _damage / _reduced damages; so higher value is tronger --- Common/Config/Base/Base_East.sqf | 2 +- Common/Config/Base/Base_West.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/Config/Base/Base_East.sqf b/Common/Config/Base/Base_East.sqf index 02abec76d..e3ac8c2d9 100644 --- a/Common/Config/Base/Base_East.sqf +++ b/Common/Config/Base/Base_East.sqf @@ -172,7 +172,7 @@ _classes = _classes + [["Land_i_House_Small_03_V1_F", "Land_House_Small_03_V1_ _prices = _prices + [3000]; _times = _times + [90]; _placements = _placements + [[180, 20]]; -_specials = _specials + [[["Connected"],["DMG_Alternative"],["DMG_Reduce", 0.2]]]; +_specials = _specials + [[["Connected"],["DMG_Alternative"],["DMG_Reduce", 0.5]]]; _headers = _headers + [[CTI_HEAVY, localize "STR_Heavy_Vehicle_Factory", localize "STR_Heavy_Vehicle_Factory_1"]]; _classes = _classes + [["Land_Cargo_HQ_V1_F", "Land_Cargo_HQ_V1_ruins_F"]]; diff --git a/Common/Config/Base/Base_West.sqf b/Common/Config/Base/Base_West.sqf index d8f39f75b..d14b84e88 100644 --- a/Common/Config/Base/Base_West.sqf +++ b/Common/Config/Base/Base_West.sqf @@ -177,7 +177,7 @@ _classes = _classes + [["Land_i_House_Small_03_V1_F", "Land_House_Small_03_V1_ _prices = _prices + [3000]; _times = _times + [90]; _placements = _placements + [[180, 20]]; -_specials = _specials + [[["Connected"],["DMG_Alternative"],["DMG_Reduce", 0.2]]]; +_specials = _specials + [[["Connected"],["DMG_Alternative"],["DMG_Reduce", 0.5]]]; _headers = _headers + [[CTI_HEAVY, localize "STR_Heavy_Vehicle_Factory", localize "STR_Heavy_Vehicle_Factory_1"]]; _classes = _classes + [["Land_Cargo_HQ_V1_F", "Land_Cargo_HQ_V1_ruins_F"]]; From b906bc8b175587990d7510366abc8bc67fd7ca06 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 10 Jul 2021 22:21:07 +0200 Subject: [PATCH 241/267] parameter changes Strategic lines: off Base building: Hand and Workers at same time (for low population times....) --- Rsc/Parameters.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Rsc/Parameters.hpp b/Rsc/Parameters.hpp index 9efd1247b..eb4d2b771 100644 --- a/Rsc/Parameters.hpp +++ b/Rsc/Parameters.hpp @@ -307,7 +307,7 @@ class Params { title = $STR_CTI_BASEBUILDING; values[] = {0,1,2}; texts[] = {$STR_CTI_BASEBUILDING_WK,$STR_CTI_BASEBUILDING_PL,$STR_CTI_BASEBUILDING_BOTH}; - default = 1; + default = 2; }; class CTI_GAMEPLAY_DARTER { title = $STR_CTI_GAMEPLAY_DARTER; @@ -473,7 +473,7 @@ class Params { title = $STR_CTI_SM_STRATEGIC; values[] = {0,1}; texts[] = {$STR_CTI_DISABLED,$STR_CTI_ENABLED}; - default = 1; + default = 0; }; class CTI_SM_STRATEGIC_NB { title = $STR_CTI_SM_STRATEGIC_NB; From 4ae194af3cf35384104bfa7754500be4c445e795 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 11 Jul 2021 00:35:21 +0200 Subject: [PATCH 242/267] interaction menu correction for different HQ repair prices --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 553b6e5ca..41771e696 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -285,7 +285,11 @@ switch (_action) do { }; case 22: { // CTI_Icon_rephq if ((missionNamespace getVariable "CTI_BASE_HQ_REPAIR") > 0 && (missionNamespace getVariable [format ["%1", typeOf _target],["","","","","","","",""]]) select 7 == "service-repairtruck" && !alive(CTI_P_SideJoined call CTI_CO_FNC_GetSideHQ) ) then { - if ((CTI_P_SideJoined call CTI_CO_FNC_GetSideHQ) distance _target <= CTI_BASE_HQ_REPAIR_RANGE && (0 call CTI_CL_FNC_GetPlayerFunds) >= CTI_BASE_HQ_REPAIR_PRICE && !(missionNamespace getVariable [format["CTI_HQ_Repair_Lock_%1", CTI_P_SideJoined], false])) then { + _base_repair_HQ_cost = CTI_BASE_HQ_REPAIR_PRICE; + //Reduce repair cost in early game + if (scoreSide CTI_P_SideJoined <= 1000) then {_base_repair_HQ_cost = round(_base_repair_HQ_cost / 2);}; + if (scoreSide CTI_P_SideJoined <= 500) then {_base_repair_HQ_cost = round(_base_repair_HQ_cost / 4);}; + if ((CTI_P_SideJoined call CTI_CO_FNC_GetSideHQ) distance _target <= CTI_BASE_HQ_REPAIR_RANGE && (0 call CTI_CL_FNC_GetPlayerFunds) >= _base_repair_HQ_cost && !(missionNamespace getVariable [format["CTI_HQ_Repair_Lock_%1", CTI_P_SideJoined], false])) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; }else { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0.3,0.3,0.3,1]; From 9efbaa92e9b05656cd7ae7807707815ccbbedac4 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 11 Jul 2021 01:41:29 +0200 Subject: [PATCH 243/267] probable no rain at start first weather change around 40 mins, maybe better if less rain probability --- Addons/Strat_mode/Functions/WEATHER_HOOK.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Functions/WEATHER_HOOK.sqf b/Addons/Strat_mode/Functions/WEATHER_HOOK.sqf index 0659864cc..1b181a95a 100644 --- a/Addons/Strat_mode/Functions/WEATHER_HOOK.sqf +++ b/Addons/Strat_mode/Functions/WEATHER_HOOK.sqf @@ -16,7 +16,7 @@ if (daytime >= 8 && daytime <= 16) then { _c = selectRandom [_a, _a, _b]; _nexttime setfog _c; }; -_nextover=random 1; +_nextover=random [1,0,1]; if (CTI_WEATHER_ALLOWRAIN == 0) then {_nexttime setRain 0;} else { if (_nextover > 0.7) then {_nexttime setRain random(_nextover);} else {_nexttime setRain 0;}; }; From 316ca946e053b254eb4ea7023f2b108896844d64 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 11 Jul 2021 02:12:41 +0200 Subject: [PATCH 244/267] Some interactions disabled when bleeding out --- Addons/Strat_mode/Tablet/Events_UI_Interact.sqf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf index 41771e696..1dffbe8ec 100644 --- a/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf +++ b/Addons/Strat_mode/Tablet/Events_UI_Interact.sqf @@ -144,7 +144,7 @@ switch (_action) do { }; }; case 12: { // CTI_Icon_Def // ok - if (vehicle player == player && alive _target) then { + if (vehicle player == player && alive _target && !(player getvariable ["REV_UNC",false])) then { _reptrucknear = if (count([player, CTI_SPECIAL_REPAIRTRUCK, 20] call CTI_CO_FNC_GetNearestSpecialVehicles)>0) then {true} else {false}; _hqnear = if (player distance2d ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ)<=20 && alive ((CTI_P_sidejoined) call CTI_CO_FNC_GetSideHQ)) then {true} else {false}; _structures = (CTI_P_SideJoined) call CTI_CO_FNC_GetSideStructures; @@ -168,7 +168,7 @@ switch (_action) do { if ((_target iskindof "Car" || _target iskindof "Tank" || _target iskindof "Air"|| _target iskindof "Ship" || _target iskindof "Wheeled_APC_F" || _target iskindof "Truck_F") && !(_target iskindof "parachutebase" || _target iskindof "UAV_01_base_F")) then { _hps = {_x != 0} count (getAllHitPointsDamage _target select 2); }; - if (vehicle player == player && _hps > 0 && (_target iskindof "Car" || _target iskindof "Tank" || _target iskindof "Air"|| _target iskindof "Ship" || _target iskindof "Wheeled_APC_F"|| _target iskindof "Truck_F") && alive _target) then { + if (vehicle player == player && _hps > 0 && (_target iskindof "Car" || _target iskindof "Tank" || _target iskindof "Air"|| _target iskindof "Ship" || _target iskindof "Wheeled_APC_F"|| _target iskindof "Truck_F") && alive _target && !(player getvariable ["REV_UNC",false])) then { if ((({_x == "Toolkit"} count (backpackItems player)) + ({_x == "Toolkit"} count (vestItems player)) + ({_x == "Toolkit"} count (itemCargo _target))) >0) then { @@ -321,7 +321,7 @@ switch (_action) do { case 25: { // CTI_Icon_pack _hqs=[]; //{_hqs set [count _hqs, _x call CTI_CO_FNC_GetSideHQ];true} count [east,west]; - if (vehicle player == player && (_target iskindof "Tank" || _target iskindof "Wheeled_APC_F" || _target iskindof "Truck_F" || (typeof _target) in ["Land_Pod_Heli_Transport_04_box_F","B_Slingload_01_Cargo_F"])&& alive _target && !(_target in _hqs || _target isKindOf "UGV_02_Base_F")) then { + if (vehicle player == player && !(player getvariable ["REV_UNC",false]) && (_target iskindof "Tank" || _target iskindof "Wheeled_APC_F" || _target iskindof "Truck_F" || (typeof _target) in ["Land_Pod_Heli_Transport_04_box_F","B_Slingload_01_Cargo_F"])&& alive _target && !(_target in _hqs || _target isKindOf "UGV_02_Base_F")) then { if (({alive _x} count (crew _target) == 0) && abs (speed _target) <1 && locked _target <2 ) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; } else { @@ -362,7 +362,7 @@ switch (_action) do { }; }; case 28: { // CTI_Icon_build - if (vehicle player == player && _target in (CTI_P_SideLogic getVariable ["cti_structures_wip",[]])&& (missionNamespace getVariable "CTI_BASEBUILDING") > 0) then { + if (vehicle player == player && !(player getvariable ["REV_UNC",false]) && _target in (CTI_P_SideLogic getVariable ["cti_structures_wip",[]])&& (missionNamespace getVariable "CTI_BASEBUILDING") > 0) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+_h_offset*_base_h,_base_w,_base_h]; _offset=_offset+1; @@ -371,7 +371,7 @@ switch (_action) do { }; }; case 29: { // CTI_Icon_srep - if (vehicle player == player && _target in (CTI_P_SideLogic getVariable ["cti_structures",[]])&&( getDammage _target >0 || _target getVariable ["cti_altdmg",-1] >0) && (missionNamespace getVariable "CTI_BASEBUILDING") > 0) then { + if (vehicle player == player && !(player getvariable ["REV_UNC",false]) && _target in (CTI_P_SideLogic getVariable ["cti_structures",[]])&&( getDammage _target >0 || _target getVariable ["cti_altdmg",-1] >0) && (missionNamespace getVariable "CTI_BASEBUILDING") > 0) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [0,0,1,1]; ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+_h_offset*_base_h,_base_w,_base_h]; _offset=_offset+1; @@ -458,7 +458,7 @@ switch (_action) do { }; case 35: {// Dismount defense - if (vehicle player == player && (_target in (CTI_WEST getVariable ["cti_defences", []]) +(CTI_EAST getVariable ["cti_defences", []]))&& (missionNamespace getVariable "CTI_BASEBUILDING") > 0) then { + if (vehicle player == player && !(player getvariable ["REV_UNC",false]) && (_target in (CTI_WEST getVariable ["cti_defences", []]) +(CTI_EAST getVariable ["cti_defences", []]))&& (missionNamespace getVariable "CTI_BASEBUILDING") > 0) then { ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetTextColor [1,0,0,1]; ((uiNamespace getVariable "cti_dialog_ui_interractions") displayCtrl (511000+_i)) ctrlSetPosition [_base_x+(_offset*_base_w),_base_y+_h_offset*_base_h,_base_w,_base_h]; From ab40a8f3741afe4004a664fab9c09543b599a3e8 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 11 Jul 2021 09:02:46 +0200 Subject: [PATCH 245/267] Added RHIB (boat) to shipyard on AAF level 1 --- Common/Config/Factories/Factory_East.sqf | 1 + Common/Config/Factories/Factory_West.sqf | 1 + Common/Config/Units/Units_East.sqf | 9 +++++++++ Common/Config/Units/Units_West.sqf | 9 +++++++++ stringtable.xml | 4 ++-- 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Common/Config/Factories/Factory_East.sqf b/Common/Config/Factories/Factory_East.sqf index 0628779ef..283480fb9 100644 --- a/Common/Config/Factories/Factory_East.sqf +++ b/Common/Config/Factories/Factory_East.sqf @@ -214,6 +214,7 @@ missionNamespace setVariable [format ["CTI_%1_%2Units", _side, CTI_AMMO], _u]; _u = ['C_Scooter_Transport_01_F']; _u = _u + ['O_Boat_Transport_01_F']; +_u = _u + ['I_C_Boat_Transport_02_F']; _u = _u + ['O_Boat_Armed_01_hmg_F']; _u = _u + ['O_SDV_01_F']; _u = _u + ['C_Boat_Civil_01_police_F']; diff --git a/Common/Config/Factories/Factory_West.sqf b/Common/Config/Factories/Factory_West.sqf index 8e7523e2a..cb2e02a84 100644 --- a/Common/Config/Factories/Factory_West.sqf +++ b/Common/Config/Factories/Factory_West.sqf @@ -198,6 +198,7 @@ missionNamespace setVariable [format ["CTI_%1_%2Units", _side, CTI_AMMO], _u]; _u = ["C_Scooter_Transport_01_F"]; _u = _u + ["B_Boat_Transport_01_F"]; +_u = _u + ["I_C_Boat_Transport_02_F"]; _u = _u + ["B_Boat_Armed_01_minigun_F"]; _u = _u + ["B_SDV_01_F"]; _u = _u + ["C_Boat_Civil_01_rescue_F"]; diff --git a/Common/Config/Units/Units_East.sqf b/Common/Config/Units/Units_East.sqf index 2e5e2ac93..16c0b9bb3 100644 --- a/Common/Config/Units/Units_East.sqf +++ b/Common/Config/Units/Units_East.sqf @@ -1044,6 +1044,15 @@ _u = _u + [0]; _f = _f + [CTI_FACTORY_NAVAL]; _s = _s + [""]; +_c = _c + ['I_C_Boat_Transport_02_F']; +_p = _p + ['']; +_n = _n + ['']; +_o = _o + [325]; +_t = _t + [20]; +_u = _u + [1]; +_f = _f + [4]; +_s = _s + [""]; + _c = _c + ['O_Boat_Armed_01_hmg_F']; _p = _p + ['']; _n = _n + ['']; diff --git a/Common/Config/Units/Units_West.sqf b/Common/Config/Units/Units_West.sqf index b8c8cff7f..128003fc0 100644 --- a/Common/Config/Units/Units_West.sqf +++ b/Common/Config/Units/Units_West.sqf @@ -903,6 +903,15 @@ _u = _u + [0]; _f = _f + [CTI_FACTORY_NAVAL]; _s = _s + [""]; +_c = _c + ['I_C_Boat_Transport_02_F']; +_p = _p + ['']; +_n = _n + ['']; +_o = _o + [325]; +_t = _t + [20]; +_u = _u + [1]; +_f = _f + [4]; +_s = _s + [""]; + _c = _c + ['B_Boat_Armed_01_minigun_F']; _p = _p + ['']; _n = _n + ['']; diff --git a/stringtable.xml b/stringtable.xml index 59ecba0d1..c1d56e791 100644 --- a/stringtable.xml +++ b/stringtable.xml @@ -2234,8 +2234,8 @@ Технологии AAF - Unlock AAF units (1::MRAPS and VANS, 2::APC, 3::TRACKED, 4::CHOPPERS, 5::PLANES, 6::ARTILLERY) - Разблокировать технику AAF (1::Легкая Техника и фургоны, 2::БТР 3::БМП, Танки 4::Вертолёты, 5::Самолёты, 6::АРТИЛЛЕРИЯ) + Unlock AAF units (1::MRAPS, VANS and BOAT, 2::APC, 3::TRACKED, 4::CHOPPERS, 5::PLANES, 6::ARTILLERY) + Разблокировать технику AAF (1::Легкая Техника, фургоны и лодка, 2::БТР 3::БМП, Танки 4::Вертолёты, 5::Самолёты, 6::АРТИЛЛЕРИЯ) Air: Aircraft FFAR From 34d0168f40ed20dfb613e0b227db74d1de9ffc3e Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Tue, 13 Jul 2021 00:51:35 +0200 Subject: [PATCH 246/267] Extended tutorial protection Warning at map border or 12.5km height, vehicle destroy +2km from border Not have HQ exception. especially need it for Livonia land map --- Common/Functions/Common_CreateVehicle.sqf | 2 ++ stringtable.xml | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index 8087ab2b4..45dadfe74 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -399,6 +399,8 @@ _vehicle setRepairCargo 0; _vehicle spawn { while { !isNull _this && alive _this && ! cti_gameover } do { sleep 20; + if (!isNull _this && alive _this && !((position _this) inArea [[worldSize/2, worldSize/2, 6000], worldSize/2, worldSize/2, 0, true, 6500])) then {(driver _this) groupChat (localize "STR_Area_Warning");}; + if (!isNull _this && alive _this && !((position _this) inArea [[worldSize/2, worldSize/2, 6000], (worldSize/2) + 2000, (worldSize/2) + 2000, 0, true, 8500])) then {_this setDamage 1}; if ((([_this,getMarkerPos "CTI_TUTORIAL"] call BIS_fnc_distance2D) < 1000) && !isNull _this && alive _this && (getPos _this select 2) < 100) then {_this setDamage 1}; }; }; diff --git a/stringtable.xml b/stringtable.xml index c1d56e791..b20d3bca5 100644 --- a/stringtable.xml +++ b/stringtable.xml @@ -1841,6 +1841,10 @@ Vote against Com. from Player %1 Игрок %1 проголосовал против Командира + + The vehicle has left the combat zone! + Машина покинула зону боевых действий! + From 926cb703494b02b9f449e304c09c31b65b672c71 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Wed, 14 Jul 2021 14:30:25 +0200 Subject: [PATCH 247/267] for #301 and #314 --- Common/Config/Base/Base_East.sqf | 4 +++- Common/Config/Base/Base_West.sqf | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Common/Config/Base/Base_East.sqf b/Common/Config/Base/Base_East.sqf index e3ac8c2d9..a0e971bd1 100644 --- a/Common/Config/Base/Base_East.sqf +++ b/Common/Config/Base/Base_East.sqf @@ -10,7 +10,9 @@ missionNamespace setVariable [format["CTI_%1_Base_Template", _side], [ [CTI_HEAVY, 0, [-30,-40]], [CTI_AIR, 180, [-60,37]], [CTI_REPAIR, 180, [60,37]], - [CTI_AMMO, 180, [80,37]] + [CTI_AMMO, 180, [80,37]], + [CTI_RADAR, 0, [-60,-40]], + [CTI_NAVAL, 0, [60,-40]] ]]; //--- Commander course of action ["Action", Parameter(s), Condition] diff --git a/Common/Config/Base/Base_West.sqf b/Common/Config/Base/Base_West.sqf index d14b84e88..333e794cc 100644 --- a/Common/Config/Base/Base_West.sqf +++ b/Common/Config/Base/Base_West.sqf @@ -10,7 +10,9 @@ missionNamespace setVariable [format["CTI_%1_Base_Template", _side], [ [CTI_HEAVY, 0, [-30,-40]], [CTI_AIR, 180, [-60,37]], [CTI_REPAIR, 180, [60,37]], - [CTI_AMMO, 180, [80,37]] + [CTI_AMMO, 180, [80,37]], + [CTI_RADAR, 0, [-60,-40]], + [CTI_NAVAL, 0, [60,-40]] ]]; // checks: structure -> not in WIP and still alive & kicking & can build with area? From 5a01ed5025dbc05bbc59ef5eaf3e4715db9808fc Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Wed, 14 Jul 2021 23:51:22 +0200 Subject: [PATCH 248/267] Different price in res file This vehicle's price different on east and west. If this loaded first it will overwrite others, and you get wrong price and reward. --- Common/Config/Units/Units_Resistance.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/Config/Units/Units_Resistance.sqf b/Common/Config/Units/Units_Resistance.sqf index 39e6267b2..cafbd214a 100644 --- a/Common/Config/Units/Units_Resistance.sqf +++ b/Common/Config/Units/Units_Resistance.sqf @@ -249,7 +249,7 @@ _s = _s + [""]; _c = _c + ['I_LT_01_AT_F']; _p = _p + ['']; _n = _n + ['']; -_o = _o + [6000]; +_o = _o + [3000]; _t = _t + [30]; _u = _u + [3]; _f = _f + [4]; From db030ba032e67a481d85a8001a00f5e3d040cc0e Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Wed, 14 Jul 2021 23:53:39 +0200 Subject: [PATCH 249/267] Add files via upload From 2fa169cefc0617ec1e8aa9499f4091d3009839f0 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Fri, 16 Jul 2021 21:51:16 +0200 Subject: [PATCH 250/267] For SA_pack exeption Packed vehicles sent to [100000,100000,10000] + rnd 10000 Need altitude exeption over 50k --- Common/Functions/Common_CreateVehicle.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index 45dadfe74..a0d19dfad 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -399,8 +399,8 @@ _vehicle setRepairCargo 0; _vehicle spawn { while { !isNull _this && alive _this && ! cti_gameover } do { sleep 20; - if (!isNull _this && alive _this && !((position _this) inArea [[worldSize/2, worldSize/2, 6000], worldSize/2, worldSize/2, 0, true, 6500])) then {(driver _this) groupChat (localize "STR_Area_Warning");}; - if (!isNull _this && alive _this && !((position _this) inArea [[worldSize/2, worldSize/2, 6000], (worldSize/2) + 2000, (worldSize/2) + 2000, 0, true, 8500])) then {_this setDamage 1}; + if (!isNull _this && alive _this && !((position _this) inArea [[worldSize/2, worldSize/2, 6000], worldSize/2, worldSize/2, 0, true, 6500]) && (getPos _this select 2) < 50000) then {(driver _this) groupChat (localize "STR_Area_Warning");}; + if (!isNull _this && alive _this && !((position _this) inArea [[worldSize/2, worldSize/2, 6000], (worldSize/2) + 2000, (worldSize/2) + 2000, 0, true, 8500]) && (getPos _this select 2) < 50000) then {_this setDamage 1}; if ((([_this,getMarkerPos "CTI_TUTORIAL"] call BIS_fnc_distance2D) < 1000) && !isNull _this && alive _this && (getPos _this select 2) < 100) then {_this setDamage 1}; }; }; From 29713216bf0dc90cf75ef0a489d0fc6740bdd085 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 25 Jul 2021 19:36:44 +0200 Subject: [PATCH 251/267] Tanoa correction Remove jungle paths and bridges from start spawn positions. --- Server/Init/Init_Server.sqf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Server/Init/Init_Server.sqf b/Server/Init/Init_Server.sqf index 364ad4c81..7b835d927 100644 --- a/Server/Init/Init_Server.sqf +++ b/Server/Init/Init_Server.sqf @@ -72,6 +72,14 @@ CENTER_POS=getMarkerPos "CENTER_POS"; "CENTER_POS" setmarkeralpha 0; CENTER_RADIUS=(getMarkerSize "CENTER_POS")select 0; _locations= CENTER_POS nearroads CENTER_RADIUS; +if (ISLAND == 3) then { // Remove small jungel paths and bridges from spawn positions + _not_roads = []; + for "_i" from 0 to ((count _locations) - 1) do + { + if !(isOnRoad (_locations select _i)) then {_not_roads pushback (_locations select _i);}; + }; + _locations = _locations - _not_roads; +}; _attempts = 0; _real_attempts = 0; _asked= missionNamespace getVariable "CTI_BASE_STARTUP_PLACEMENT"; From 2a5cf85bf4b1c008f708d4b81b252c84a44a252c Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 7 Aug 2021 23:19:40 +0200 Subject: [PATCH 252/267] fix for view restrictions --- Addons/Strat_mode/Functions/SM_3pRestrict.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_3pRestrict.sqf b/Addons/Strat_mode/Functions/SM_3pRestrict.sqf index c966c39de..d4274dcdf 100644 --- a/Addons/Strat_mode/Functions/SM_3pRestrict.sqf +++ b/Addons/Strat_mode/Functions/SM_3pRestrict.sqf @@ -1,10 +1,10 @@ if (missionNamespace getVariable "CTI_GAMEPLAY_3P"==0) then { - ["3pr","onEachFrame", 'if (cameraView =="GROUP") then {(vehicle player) switchCamera "INTERNAL";};'] call BIS_fnc_addStackedEventHandler; + ["3pr","onEachFrame", {if (cameraView =="GROUP") then {(vehicle player) switchCamera "INTERNAL";};}] call BIS_fnc_addStackedEventHandler; }; if (missionNamespace getVariable "CTI_GAMEPLAY_3P"==1) then { - ["3pr","onEachFrame", 'if (!(cameraView in ["GUNNER","INTERNAL"]) && cameraOn == vehicle (player)&& (vehicle player) == player) then {(vehicle player) switchCamera "INTERNAL";};'] call BIS_fnc_addStackedEventHandler; + ["3pr","onEachFrame", {if (!(cameraView in ["GUNNER","INTERNAL"]) && cameraOn == vehicle (player)&& (vehicle player) == player) then {(vehicle player) switchCamera "INTERNAL";};}] call BIS_fnc_addStackedEventHandler; }; if (missionNamespace getVariable "CTI_GAMEPLAY_3P"==2) then { - ["3pr","onEachFrame",'if (!(cameraView in ["GUNNER","INTERNAL"]) && cameraOn == vehicle (player)) then {(vehicle player) switchCamera "INTERNAL";};' ] call BIS_fnc_addStackedEventHandler; + ["3pr","onEachFrame", {if (!(cameraView in ["GUNNER","INTERNAL"]) && cameraOn == vehicle (player)) then {(vehicle player) switchCamera "INTERNAL";};}] call BIS_fnc_addStackedEventHandler; }; From 25ed765f579a0a54a161fbafc7402f093022eeb6 Mon Sep 17 00:00:00 2001 From: unknown <4232921+zerty@users.noreply.github.com> Date: Thu, 26 Aug 2021 21:16:03 +0200 Subject: [PATCH 253/267] Fix for strat mode With map reduction --- Addons/Strat_mode/Functions/SM_F_TownConnect.sqf | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_F_TownConnect.sqf b/Addons/Strat_mode/Functions/SM_F_TownConnect.sqf index 04a6b0ed0..eb51f8125 100644 --- a/Addons/Strat_mode/Functions/SM_F_TownConnect.sqf +++ b/Addons/Strat_mode/Functions/SM_F_TownConnect.sqf @@ -1,8 +1,11 @@ -private ["_ct","_tv","_neigh","_towns","_new_neigh","_nt","_oneigh"]; -_ct= _this select 0; -_tv= _ct getVariable "cti_town_value"; -_neigh= _ct getVariable "CTI_Neigh"; +private ["_ct"]; -_towns=CTI_Towns; +_ct= _this select 0; +_neigh =[]; +{ + if (_x in CTI_Towns) then { + _neigh pushBack _x; + }; +} forEach synchronizedObjects _ct; -_ct setVariable ["CTI_Neigh",synchronizedObjects _ct,true] ; \ No newline at end of file +_ct setVariable ["CTI_Neigh",_neigh,true] ; \ No newline at end of file From 233ad86ff19395f0b5b3e1939e91b7358019e0e6 Mon Sep 17 00:00:00 2001 From: unknown <4232921+zerty@users.noreply.github.com> Date: Thu, 26 Aug 2021 21:33:05 +0200 Subject: [PATCH 254/267] Prevent unactivable town in map reduction strat --- Addons/Strat_mode/Functions/SM_F_TownConnect.sqf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Addons/Strat_mode/Functions/SM_F_TownConnect.sqf b/Addons/Strat_mode/Functions/SM_F_TownConnect.sqf index eb51f8125..50c5cbf8f 100644 --- a/Addons/Strat_mode/Functions/SM_F_TownConnect.sqf +++ b/Addons/Strat_mode/Functions/SM_F_TownConnect.sqf @@ -8,4 +8,9 @@ _neigh =[]; }; } forEach synchronizedObjects _ct; + +if (count _neigh == 0 ) then { + _neigh pushBack ([_ct, CTI_Towns - [_ct]] call CTI_CO_FNC_GetClosestEntity); +}; + _ct setVariable ["CTI_Neigh",_neigh,true] ; \ No newline at end of file From 0e1acec605c9499d21df0b4dc514bb4b5a9cd8a2 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 2 Sep 2021 22:52:49 +0200 Subject: [PATCH 255/267] Change classname to displayname on attach report --- Addons/Strat_mode/Functions/SM_AttachStatics.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/Functions/SM_AttachStatics.sqf b/Addons/Strat_mode/Functions/SM_AttachStatics.sqf index 4fbab474d..ec10b1331 100644 --- a/Addons/Strat_mode/Functions/SM_AttachStatics.sqf +++ b/Addons/Strat_mode/Functions/SM_AttachStatics.sqf @@ -63,7 +63,7 @@ with missionNamespace do { }; CTI_PVF_Reply_load={ if (_this select 2) then { - CTI_P_ChatID commandChat format [localize "STR_ST_Load",typeof (_this select 1),_this select 0]; + CTI_P_ChatID commandChat format [localize "STR_ST_Load",getText (configfile >> "CfgVehicles" >> typeof (_this select 1) >> "displayName"),_this select 0]; (_this select 1) setdir (_this select 3); (_this select 1) addEventHandler ["GetOut", {(_this select 2) attachto [(_this select 0),[-3,-1,-0.65]]; detach (_this select 2);}]; (_this select 0) lock false; @@ -72,7 +72,7 @@ with missionNamespace do { (_this select 0) lockCargo [0,false]; STATIC_TRY=false; } else { - CTI_P_ChatID commandChat format [localize "STR_ST_Unload",typeof(_this select 1),_this select 0]; + CTI_P_ChatID commandChat format [localize "STR_ST_Unload",getText (configfile >> "CfgVehicles" >> typeof (_this select 1) >> "displayName"),_this select 0]; (_this select 0) lockCargo false; STATIC_TRY=false; }; From a22f1f7a7fcbafde9bccac94e5b2f343e21ce7a4 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 2 Sep 2021 23:02:42 +0200 Subject: [PATCH 256/267] Bullshit. UAVs wandering, Heavy AAA preplacement sometimes falling down. Anyway its not need :] --- Common/Functions/Common_CreateVehicle.sqf | 1 - 1 file changed, 1 deletion(-) diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index a0d19dfad..de7e57e79 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -400,7 +400,6 @@ _vehicle spawn { while { !isNull _this && alive _this && ! cti_gameover } do { sleep 20; if (!isNull _this && alive _this && !((position _this) inArea [[worldSize/2, worldSize/2, 6000], worldSize/2, worldSize/2, 0, true, 6500]) && (getPos _this select 2) < 50000) then {(driver _this) groupChat (localize "STR_Area_Warning");}; - if (!isNull _this && alive _this && !((position _this) inArea [[worldSize/2, worldSize/2, 6000], (worldSize/2) + 2000, (worldSize/2) + 2000, 0, true, 8500]) && (getPos _this select 2) < 50000) then {_this setDamage 1}; if ((([_this,getMarkerPos "CTI_TUTORIAL"] call BIS_fnc_distance2D) < 1000) && !isNull _this && alive _this && (getPos _this select 2) < 100) then {_this setDamage 1}; }; }; From 6e71a37fc2c5f9ef607e232316b9a9ec34b1e2cf Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Fri, 3 Sep 2021 14:07:24 +0200 Subject: [PATCH 257/267] Disable MK21 Centurion range too big overpowered --- Common/Config/Base/Base_East.sqf | 10 +++++----- Common/Config/Base/Base_West.sqf | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Common/Config/Base/Base_East.sqf b/Common/Config/Base/Base_East.sqf index a0e971bd1..6f87c37cc 100644 --- a/Common/Config/Base/Base_East.sqf +++ b/Common/Config/Base/Base_East.sqf @@ -282,11 +282,11 @@ _prices = _prices + [40000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; -_headers = _headers + [["Mk21 Centurion - Only on BASE Areas", [["DMG_Reduce", 10]]]]; -_classes = _classes + ["B_SAM_System_02_F"]; -_prices = _prices + [80000]; -_placements = _placements + [[180, 15]]; -_categories = _categories + ["Defense"]; +//_headers = _headers + [["Mk21 Centurion - Only on BASE Areas", [["DMG_Reduce", 10]]]]; +//_classes = _classes + ["B_SAM_System_02_F"]; +//_prices = _prices + [80000]; +//_placements = _placements + [[180, 15]]; +//_categories = _categories + ["Defense"]; }; _headers = _headers + ["R-750 Cronus Radar - Only on BASE Areas"]; _classes = _classes + ["O_Radar_System_02_F"]; diff --git a/Common/Config/Base/Base_West.sqf b/Common/Config/Base/Base_West.sqf index 333e794cc..1d79fe1ec 100644 --- a/Common/Config/Base/Base_West.sqf +++ b/Common/Config/Base/Base_West.sqf @@ -288,11 +288,11 @@ _prices = _prices + [40000]; _placements = _placements + [[180, 15]]; _categories = _categories + ["Defense"]; -_headers = _headers + [["Mk21 Centurion - Only on BASE Areas", [["DMG_Reduce", 10]]]]; -_classes = _classes + ["B_SAM_System_02_F"]; -_prices = _prices + [80000]; -_placements = _placements + [[180, 15]]; -_categories = _categories + ["Defense"]; +//_headers = _headers + [["Mk21 Centurion - Only on BASE Areas", [["DMG_Reduce", 10]]]]; +//_classes = _classes + ["B_SAM_System_02_F"]; +//_prices = _prices + [80000]; +//_placements = _placements + [[180, 15]]; +//_categories = _categories + ["Defense"]; }; _headers = _headers + ["AN/MPQ-105 Radar - Only on BASE Areas"]; _classes = _classes + ["B_Radar_System_01_F"]; From fe1bbe26f78214f04b4198bdbec7139933639e94 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 4 Sep 2021 00:38:50 +0200 Subject: [PATCH 258/267] change back to default ammo on AA tanks SAAMI -> Titan AA --- Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf | 4 ++-- Common/Functions/Common_CreateVehicle.sqf | 5 +---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf b/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf index a6bcf80fe..4855ea5ff 100644 --- a/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf +++ b/Addons/Henroth_AirLoadout/Set_WeaponLoadouts.sqf @@ -86,7 +86,7 @@ CTI_LOADOUT_UNARMED_FLARES = // Experimental loadouts for AA tanks // *************************** //Bluefor - +/* CTI_LOADOUT_B_APC_Tracked_01_AA_F_MNT_OPTIONS = [ [ @@ -193,7 +193,7 @@ CTI_LOADOUT_O_APC_Tracked_02_AA_F_MNT_OPTIONS = ] ]; CTI_LOADOUT_O_T_APC_Tracked_02_AA_ghex_F_MNT_OPTIONS = CTI_LOADOUT_O_APC_Tracked_02_AA_F_MNT_OPTIONS; - +*/ // *************************** // BLUFOR - Vehicle loadout options // *************************** diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index de7e57e79..c845a34e3 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -112,10 +112,7 @@ _EH_Killed = _vehicle addEventHandler ["Killed", _handle_fail_spawns]; // henroth air loadout //Does a gun config exsist? _gun_config = missionNamespace getVariable ( format [ "CTI_LOADOUT_%1_MNT_OPTIONS" , typeOf _vehicle ] ); -if ( -( ((typeOf _vehicle) == "O_APC_Tracked_02_AA_F") - || ((typeOf _vehicle) == "B_APC_Tracked_01_AA_F") - || _type isKindOf "Air") +if ((/*((typeOf _vehicle) == "O_APC_Tracked_02_AA_F") || ((typeOf _vehicle) == "B_APC_Tracked_01_AA_F") ||*/ _type isKindOf "Air") && (missionNamespace getVariable "CTI_AC_ENABLED")>0 && _side != CTI_RESISTANCE_ID && CTI_isCLient From b49a0041bb813f579ccd98a6b59a6601fb9329fb Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sat, 4 Sep 2021 00:43:18 +0200 Subject: [PATCH 259/267] version number 1355 --- Rsc/Game.hpp | 4 ++-- mission.sqm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Rsc/Game.hpp b/Rsc/Game.hpp index d0abfaaa6..c34cd6c20 100644 --- a/Rsc/Game.hpp +++ b/Rsc/Game.hpp @@ -4,11 +4,11 @@ respawnDelay = 10; respawnDialog = false; //--- Require briefing.html to show up. -onLoadMission = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.4"; +onLoadMission = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.5"; onLoadMissionTime = false; onLoadName = "BECTI Altis"; -briefingName = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.4"; +briefingName = "BECTI - Zerty/HTom/Yoshi_E 1.3.5.5"; //--- ArmA 3 Specifics dev = "Benny"; diff --git a/mission.sqm b/mission.sqm index 26a16e413..d028369d2 100644 --- a/mission.sqm +++ b/mission.sqm @@ -97,7 +97,7 @@ class Mission { class Intel { - briefingName="BECTI BE 0.97 - Zerty 1.3.5.4 - Altis"; + briefingName="BECTI BE 0.97 - Zerty 1.3.5.5 - Altis"; overviewText="By Benny - Adapted from OFP era MFCTI (Mike Melvin)"; resistanceWest=0; timeOfChanges=24720; From ae0364d1cb991a65ac3e8e51e28a2404c283018c Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Tue, 2 Nov 2021 23:18:03 +0100 Subject: [PATCH 260/267] for offroad attach bug / abuse you can load east pod to offroad from the side --- Addons/Strat_mode/Functions/SM_AttachStatics.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/Strat_mode/Functions/SM_AttachStatics.sqf b/Addons/Strat_mode/Functions/SM_AttachStatics.sqf index ec10b1331..2912969df 100644 --- a/Addons/Strat_mode/Functions/SM_AttachStatics.sqf +++ b/Addons/Strat_mode/Functions/SM_AttachStatics.sqf @@ -2,7 +2,7 @@ STATICS_MG = ["I_HMG_01_high_F","I_GMG_01_high_F","O_HMG_01_high_F","O_GMG_01_hi STATICS_LMG = ["I_HMG_01_F","I_GMG_01_F","O_HMG_01_F","O_GMG_01_F","B_HMG_01_F","B_GMG_01_F","B_T_GMG_01_F","B_T_HMG_01_F","O_G_HMG_02_F","B_G_HMG_02_F"]; STATICS_L = ["I_static_AA_F","I_static_AT_F","O_static_AA_F","O_static_AT_F","B_static_AA_F","B_static_AT_F","B_T_Static_AA_F","B_T_Static_AT_F"]; STATICS_M = ["ReammoBox_F"]; -STATICS_NOTSTATICS = ["B_Slingload_01_Cargo_F","B_Slingload_01_Medevac_F","B_Slingload_01_Fuel_F","B_Slingload_01_Repair_F","B_Slingload_01_Ammo_F"]; +STATICS_NOTSTATICS = ["B_Slingload_01_Cargo_F","B_Slingload_01_Medevac_F","B_Slingload_01_Fuel_F","B_Slingload_01_Repair_F","B_Slingload_01_Ammo_F","Land_Pod_Heli_Transport_04_medevac_F","Land_Pod_Heli_Transport_04_covered_F","Land_Pod_Heli_Transport_04_bench_F","Land_Pod_Heli_Transport_04_repair_F","Land_Pod_Heli_Transport_04_fuel_F","Land_Pod_Heli_Transport_04_ammo_F","Land_Pod_Heli_Transport_04_medevac_black_F","Land_Pod_Heli_Transport_04_covered_black_F","Land_Pod_Heli_Transport_04_bench_black_F","Land_Pod_Heli_Transport_04_repair_black_F","Land_Pod_Heli_Transport_04_fuel_black_F","Land_Pod_Heli_Transport_04_ammo_black_F"]; STATICS_ALL=STATICS_MG + STATICS_LMG + STATICS_L + STATICS_M; STATIC_TRY=false; From ffa46b8e3d8e57bc31563193e9be0e5f629ae504 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Thu, 13 Jan 2022 16:10:20 +0100 Subject: [PATCH 261/267] for #318 Prevent script fail when drop pod while attach ropes try lift up. Prevent attach bug when player uses BIS "hook" action after dropped other pod. --- Addons/Strat_mode/SLING_AUG/SA_toAttach.sqf | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Addons/Strat_mode/SLING_AUG/SA_toAttach.sqf b/Addons/Strat_mode/SLING_AUG/SA_toAttach.sqf index c75385cb3..f7b744ec1 100644 --- a/Addons/Strat_mode/SLING_AUG/SA_toAttach.sqf +++ b/Addons/Strat_mode/SLING_AUG/SA_toAttach.sqf @@ -24,8 +24,12 @@ _new_masscenter=[]; {ropeUnwind [_x,max_speed,target_length];true}count (ropes _target); -waitUntil {!alive _pod ||!alive _target ||(ropelength (ropes _target select 0)) Date: Sat, 19 Feb 2022 23:43:57 +0100 Subject: [PATCH 262/267] Add diag_log for repair vehicle error. --- Addons/Strat_mode/Functions/SM_RepairVehiculeRemote.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/Addons/Strat_mode/Functions/SM_RepairVehiculeRemote.sqf b/Addons/Strat_mode/Functions/SM_RepairVehiculeRemote.sqf index 73f927366..2b05edd1c 100644 --- a/Addons/Strat_mode/Functions/SM_RepairVehiculeRemote.sqf +++ b/Addons/Strat_mode/Functions/SM_RepairVehiculeRemote.sqf @@ -21,6 +21,7 @@ while {alive _caller && alive _target && _hps > 0 && (_caller distance2d _targe _hitpointdamage = getallhitpointsdamage _target select 2; + if (isNil "_hitpointdamage") then {diag_log format [":: ERROR :: Try repair %1, Alive: %2", typeOf _target, alive _target];}; for '_i' from 0 to count(_hitpointname)-1 do { if ((_hitpointdamage select _i) >= _repvalue) then { _target setHitIndex [_i, ((_hitpointdamage select _i) - _repvalue)]; From 46bc9de3f39cd1c10b287f3d2fe961df52addc4b Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 20 Feb 2022 13:49:23 +0100 Subject: [PATCH 263/267] for change back AA tank titan rocket --- Common/Functions/Common_CreateVehicle.sqf | 4 ++-- Common/Functions/Common_RearmVehicle.sqf | 14 ++++++-------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf index c845a34e3..e6de2de22 100644 --- a/Common/Functions/Common_CreateVehicle.sqf +++ b/Common/Functions/Common_CreateVehicle.sqf @@ -169,8 +169,8 @@ if (isNull _created) then { && CTI_isCLient && !(isNil "CTI_ALM_AA_RESEARCHED_MAGAZINES") //makes sure henroths loadouts are set && (_type isKindOf "Air" - || (_vehicle isKindOf "O_APC_Tracked_02_AA_F") - || (_vehicle isKindOf "B_APC_Tracked_01_AA_F")) + /*|| (_vehicle isKindOf "O_APC_Tracked_02_AA_F") + || (_vehicle isKindOf "B_APC_Tracked_01_AA_F")*/) ) then { //Setting default loadout for given aircraft if ((missionNamespace getVariable "CTI_AC_ENABLED")>0 && !isNil "_gun_config") then { diff --git a/Common/Functions/Common_RearmVehicle.sqf b/Common/Functions/Common_RearmVehicle.sqf index 2f2dd400a..ed563970f 100644 --- a/Common/Functions/Common_RearmVehicle.sqf +++ b/Common/Functions/Common_RearmVehicle.sqf @@ -43,15 +43,13 @@ if(((_t_side) call CTI_CO_FNC_GetSideUpgrades) select CTI_UPGRADE_DATA == 1) the // Fix for air vehicles ... uses sanatise script to clean up afterwards //enable for && (!(_vehicle isKindOf "O_Plane_Fighter_02_F")) && (!(_vehicle isKindOf "B_Plane_Fighter_01_F")) && (!(_vehicle isKindOf "I_Plane_Fighter_04_F")) -if ( (((typeOf _vehicle) == "O_APC_Tracked_02_AA_F") - || ((typeOf _vehicle) == "B_APC_Tracked_01_AA_F") - || _vehicle isKindOf "Air") +if ((/*((typeOf _vehicle) == "O_APC_Tracked_02_AA_F") || ((typeOf _vehicle) == "B_APC_Tracked_01_AA_F") ||*/ _type isKindOf "Air") && (missionNamespace getVariable "CTI_AC_ENABLED")>0 && CTI_isCLient) then { _loadout = _vehicle getVariable "CTI_AC_AIRCRAFT_LOADOUT_MOUNTED"; if(!isNil "_loadout") then { - + _vehicle call CTI_AC_PURGE_ALL_WEAPONS; [_vehicle, _t_side] call CTI_AC_REFRESH_LOADOUT_ON_MOUNTED; //Not needed if loadout_mounted if (_vehicle isKindOf "Air") then {[_vehicle, _side] call CTI_CO_FNC_SanitizeAircraft}; @@ -61,7 +59,7 @@ if ( (((typeOf _vehicle) == "O_APC_Tracked_02_AA_F") //--- Driver {_vehicle removeMagazineTurret [_x, [-1]];} forEach (getArray(configFile >> "CfgVehicles" >> _type >> "magazines")); {_vehicle addMagazineTurret [_x, [-1]]} forEach (getArray(configFile >> "CfgVehicles" >> _type >> "magazines")); - + //--- Turrets if (!(_vehicle isKindOf "B_SAM_System_01_F" || _vehicle isKindOf "B_SAM_System_02_F" || _vehicle isKindOf "B_AAA_System_01_F")) then { _config = configFile >> "CfgVehicles" >> _type >> "turrets"; @@ -84,8 +82,8 @@ if ( (((typeOf _vehicle) == "O_APC_Tracked_02_AA_F") //--- Sanitize the artillery loadout, mines may lag the server for instance if (CTI_ARTILLERY_FILTER == 1) then {if (typeOf _vehicle in (missionNamespace getVariable ["CTI_ARTILLERY", []])) then {(_vehicle) call CTI_CO_FNC_SanitizeArtillery}}; - - + + if (_vehicle isKindOf "tank" || _vehicle isKindOf "Wheeled_APC_F") then { _ammo=if (! (count ((_side) call CTI_CO_FNC_GetSideUpgrades) == 0)) then {2+2*(((_side) call CTI_CO_FNC_GetSideUpgrades) select CTI_UPGRADE_TRA)} else {2}; _vehicle setVariable ["TROPHY_time_l",time-10000,true]; @@ -94,7 +92,7 @@ if ( (((typeOf _vehicle) == "O_APC_Tracked_02_AA_F") _vehicle setVariable ["TROPHY_ammo_r",ceil(_ammo/2),true]; }; - + if (_vehicle isKindOf "B_SAM_System_01_F" || _vehicle isKindOf "B_SAM_System_02_F" || _vehicle isKindOf "B_AAA_System_01_F") then { ["SERVER", "Request_Locality", [_vehicle,player]] call CTI_CO_FNC_NetSend; if (local _vehicle) then { From 24175c7038fd7632cc6a1ad1d0b14d3b7bcbe175 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 20 Feb 2022 15:05:56 +0100 Subject: [PATCH 264/267] Stringtable --- Client/Events/Events_UI_BuildMenu.sqf | 4 ++-- stringtable.xml | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Client/Events/Events_UI_BuildMenu.sqf b/Client/Events/Events_UI_BuildMenu.sqf index 8f19ac85f..d09601066 100644 --- a/Client/Events/Events_UI_BuildMenu.sqf +++ b/Client/Events/Events_UI_BuildMenu.sqf @@ -117,10 +117,10 @@ switch (_action) do { ["SERVER", "Request_Worker", [CTI_P_SideJoined]] call CTI_CO_FNC_NetSend; } else { - hint "not enough funds dude"; + hint parseText localize "STR_No_Funds_Info"; }; } else { - hint "worker limit reached"; + hint parseText localize "STR_Worker_Limit_Info"; }; }; case "onUndoDefense": { diff --git a/stringtable.xml b/stringtable.xml index b20d3bca5..3f4357ad5 100644 --- a/stringtable.xml +++ b/stringtable.xml @@ -1581,6 +1581,14 @@ Add Worker ($%1) Добавить Рабочего ($%1) + + <t size='1.3' color='#2394ef'>Information</t><br /><br />You do not have enough funds. + <t size='1.3' color='#2394ef'>Информация</t><br /><br />У вас недостаточно средств. + + + <t size='1.3' color='#2394ef'>Information</t><br /><br />Worker limit reached! + <t size='1.3' color='#2394ef'>Информация</t><br /><br />Достигнуто максимальное количество сотрудников! + <t size='1.3' color='#2394ef'>Information</t><br /><br />You do not have enough funds to place that defense. <t size='1.3' color='#2394ef'>Информация</t><br /><br />У вас не хватает средств, чтобы построить это. From df71a542aacc549666621678c4bcb9ce5914c028 Mon Sep 17 00:00:00 2001 From: Tom <31548102+HTomJMW@users.noreply.github.com> Date: Sun, 20 Feb 2022 16:08:26 +0100 Subject: [PATCH 265/267] For "Def automanning Off" not showing --- Client/Events/Events_UI_BuildMenu.sqf | 12 ++++++++++-- Client/Events/Events_UI_DefenseMenu.sqf | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Client/Events/Events_UI_BuildMenu.sqf b/Client/Events/Events_UI_BuildMenu.sqf index d09601066..2ccda559f 100644 --- a/Client/Events/Events_UI_BuildMenu.sqf +++ b/Client/Events/Events_UI_BuildMenu.sqf @@ -7,7 +7,11 @@ switch (_action) do { if (CTI_P_WallsAutoAlign) then { ctrlSetText [100003, localize "STR_Walls_On"] } else { ctrlSetText [100003, localize "STR_Walls_Off"] }; _def_count=count (units ((CTI_P_SideLogic getVariable ["cti_defensive_team",grpNull]))); - if (CTI_P_DefensesAutoManning) then { ctrlSetText [100011, format [localize "STR_Defenses_On",ctrlText ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100011),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] } else { ctrlSetText [100011,ctrlSetText [100011, format [localize "STR_Defenses_Off",ctrlText ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100011),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] ] }; + if (CTI_P_DefensesAutoManning) then { + ctrlSetText [100011, format [localize "STR_Defenses_On",ctrlText ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100011),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT]] + } else { + ctrlSetText [100011, format [localize "STR_Defenses_Off",ctrlText ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100011),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT]] + }; if ((missionnamespace getVariable "CTI_BASEBUILDING") != 1) then { ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100005) ctrlSetText format [localize "STR_Add_Worker", CTI_BASE_WORKERS_PRICE]; ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100009) ctrlshow true; @@ -95,7 +99,11 @@ switch (_action) do { case "onAutoManning": { CTI_P_DefensesAutoManning = !CTI_P_DefensesAutoManning; _def_count=count (units ((CTI_P_SideLogic getVariable ["cti_defensive_team",grpNull]))); - if (CTI_P_DefensesAutoManning) then { ctrlSetText [100011, format [localize "STR_Defenses_On",ctrlText ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100011),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] } else { ctrlSetText [100011,ctrlSetText [100011, format [localize "STR_Defenses_Off",ctrlText ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100011),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] ] }; + if (CTI_P_DefensesAutoManning) then { + ctrlSetText [100011, format [localize "STR_Defenses_On",ctrlText ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100011),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT]] + } else { + ctrlSetText [100011, format [localize "STR_Defenses_Off",ctrlText ((uiNamespace getVariable "cti_dialog_ui_buildmenu") displayCtrl 100011),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT]] + }; }; case "onAddWorker": { //--- Check the worker limit diff --git a/Client/Events/Events_UI_DefenseMenu.sqf b/Client/Events/Events_UI_DefenseMenu.sqf index a80cfe01e..f1473bf1a 100644 --- a/Client/Events/Events_UI_DefenseMenu.sqf +++ b/Client/Events/Events_UI_DefenseMenu.sqf @@ -9,7 +9,11 @@ switch (_action) do { if (isNil 'CTI_P_DefensesAutoManning') then { CTI_P_DefensesAutoManning = false }; _def_count=count (units ((CTI_P_SideLogic getVariable ["cti_defensive_team",grpNull]))); - if (CTI_P_DefensesAutoManning) then { ctrlSetText [200004, format [localize "STR_Defenses_On",ctrlText ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] } else { ctrlSetText [200004,ctrlSetText [200004, format [localize "STR_Defenses_Off",ctrlText ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] ] }; + if (CTI_P_DefensesAutoManning) then { + ctrlSetText [200004, format [localize "STR_Defenses_On",ctrlText ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT]] + } else { + ctrlSetText [200004, format [localize "STR_Defenses_Off",ctrlText ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT]] + }; if !(call CTI_CL_FNC_IsPlayerCommander) then { ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004) ctrlEnable false; }; { @@ -57,7 +61,11 @@ switch (_action) do { case "onAutoManning": { CTI_P_DefensesAutoManning = !CTI_P_DefensesAutoManning; _def_count=count (units ((CTI_P_SideLogic getVariable ["cti_defensive_team",grpNull]))); - if (CTI_P_DefensesAutoManning) then { ctrlSetText [200004, format [localize "STR_Defenses_On",ctrlText ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] } else { ctrlSetText [200004,ctrlSetText [200004, format [localize "STR_Defenses_Off",ctrlText ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT ]] ] }; + if (CTI_P_DefensesAutoManning) then { + ctrlSetText [200004, format [localize "STR_Defenses_On",ctrlText ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT]] + } else { + ctrlSetText [200004, format [localize "STR_Defenses_Off",ctrlText ((uiNamespace getVariable "cti_dialog_ui_defensemenu") displayCtrl 200004),_def_count,CTI_BASE_DEFENSES_AUTO_LIMIT]] + }; }; case "onUndoDefense": { if !(isNull CTI_P_LastDefenseBuilt) then { From 369d682d316fecd9c886a7ccd8a28def19f4717f Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Fri, 1 Nov 2024 12:47:04 +0100 Subject: [PATCH 266/267] removed unused sound file --- Addons/Strat_mode/Functions/TR_proj_handler.sqf | 3 --- Rsc/Sounds.hpp | 5 ----- Rsc/Sounds/trophy.ogg | Bin 19206 -> 0 bytes 3 files changed, 8 deletions(-) delete mode 100644 Rsc/Sounds/trophy.ogg diff --git a/Addons/Strat_mode/Functions/TR_proj_handler.sqf b/Addons/Strat_mode/Functions/TR_proj_handler.sqf index dcbe57462..8687320e5 100644 --- a/Addons/Strat_mode/Functions/TR_proj_handler.sqf +++ b/Addons/Strat_mode/Functions/TR_proj_handler.sqf @@ -40,8 +40,5 @@ _b='ProtectionZone_Invisible_F' createVehicleLocal (getpos _veh); _b setPos (getPos _veh); _veh setVariable [_side_tr,((_veh getVariable _side_tr) - 1),true]; _veh setVariable [_side_time,time,true]; -if(_veh == vehicle player) then { - ["trophy","playSound",_veh, false,false] call BIS_fnc_MP; -}; waitUntil {isNull _proj}; deleteVehicle _b; \ No newline at end of file diff --git a/Rsc/Sounds.hpp b/Rsc/Sounds.hpp index 4d2bd9160..2bd013670 100644 --- a/Rsc/Sounds.hpp +++ b/Rsc/Sounds.hpp @@ -5,11 +5,6 @@ class CfgSounds { sound[] = {"Rsc\Sounds\prison.ogg", 1, 1.0}; titles[] = {}; }; - class trophy { - name = "prison"; - sound[] = {"Rsc\Sounds\trophy.ogg", db+10, 1.0}; - titles[] = {}; - }; class Vent { name="Vent"; sound[]={"Addons\ATM_Airdrop\data\vent.ogg",db-11,1.0}; diff --git a/Rsc/Sounds/trophy.ogg b/Rsc/Sounds/trophy.ogg deleted file mode 100644 index c99cd173ee542a00ff705d8d98c32bc899b76458..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19206 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 E0U1^W>;M1& From bc690f9f6283816003398174db536287f5e938fa Mon Sep 17 00:00:00 2001 From: Yoshi-E Date: Fri, 1 Nov 2024 12:51:35 +0100 Subject: [PATCH 267/267] added fix for getting stuck joining mission - waiting for answer from server fix by Discord@crowmedic --- Client/Init/Init_Client.sqf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Client/Init/Init_Client.sqf b/Client/Init/Init_Client.sqf index eba03d414..34e6ad42a 100644 --- a/Client/Init/Init_Client.sqf +++ b/Client/Init/Init_Client.sqf @@ -5,6 +5,11 @@ NET_LOG=false; +//ensure that player is not "unknown" or civilan - which will break later code +waitUntil { + (side player) in [east, west] +}; + CTI_P_SideJoined = side player; CTI_P_EnemySide = If (side player == WEST) then {EAST} else {WEST};