diff --git a/client/demo.js b/client/demo.js index 99c65f9a..3a5b86a5 100644 --- a/client/demo.js +++ b/client/demo.js @@ -96,7 +96,23 @@ const DEMO_UNIT_DATA = { ammo: [{ quantity: 2, name: "A cool missile", guidance: 0, category: 0, missileCategory: 0 } ], contacts: [{ID: 1, detectionMethod: 16}], activePath: [ ] - }, + }, ["7"]:{ category: "GroundUnit", alive: true, human: false, controlled: true, coalition: 1, country: 0, name: "T-55", unitName: "Cool guy 2-1", groupName: "Cool group 10", state: 1, task: "Being cool", + hasTask: false, position: { lat: 37.2, lng: -116.2, alt: 1000 }, speed: 200, heading: 315 * Math.PI / 180, isTanker: false, isAWACS: false, onOff: true, followRoads: false, fuel: 50, + desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, + formationOffset: { x: 0, y: 0, z: 0 }, + targetID: 0, + targetPosition: { lat: 0, lng: 0, alt: 0 }, + ROE: 1, + reactionToThreat: 1, + emissionsCountermeasures: 1, + TACAN: { isOn: false, XY: 'Y', callsign: 'TKR', channel: 40 }, + radio: { frequency: 124000000, callsign: 1, callsignNumber: 1 }, + generalSettings: { prohibitAA: false, prohibitAfterburner: false, prohibitAG: false, prohibitAirWpn: false, prohibitJettison: false }, + ammo: [{ quantity: 2, name: "A cool missile\0Ciao", guidance: 0, category: 0, missileCategory: 0 } ], + contacts: [{ID: 1001, detectionMethod: 16}], + activePath: [ ], + isLeader: true + }, } const DEMO_WEAPONS_DATA = { diff --git a/client/public/databases/units/groundunitdatabase.json b/client/public/databases/units/groundunitdatabase.json index ab85c92c..3b004b89 100644 --- a/client/public/databases/units/groundunitdatabase.json +++ b/client/public/databases/units/groundunitdatabase.json @@ -1 +1,5987 @@ -{"1L13 EWR":{"name":"1L13 EWR","coalition":"red","era":"Late Cold War","label":"Box Spring","shortLabel":"1L13 EWR","filename":"","type":"Radar","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"2B11 mortar":{"name":"2B11 mortar","coalition":"red","era":"Late Cold War","label":"2B11 mortar","shortLabel":"2B11 mortar","filename":"","type":"Gun Artillery","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"2S6 Tunguska":{"name":"2S6 Tunguska","coalition":"red","era":"Late Cold War","label":"SA-19 Tunguska","shortLabel":"SA-19","range":"Short","filename":"","type":"AAA/SAM","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"55G6 EWR":{"name":"55G6 EWR","coalition":"red","era":"Early Cold War","label":"Tall Rack","shortLabel":"55G6 EWR","filename":"","type":"Radar","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"5p73 s-125 ln":{"name":"5p73 s-125 ln","coalition":"red","era":"Early Cold War","label":"SA-3 Launcher","shortLabel":"5p73 s-125 ln","range":"Medium","filename":"","type":"SAM Launcher","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"AAV7":{"name":"AAV7","coalition":"blue","era":"Mid Cold War","label":"AAV7","shortLabel":"AAV7","filename":"","type":"APC","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"ATMZ-5":{"name":"ATMZ-5","coalition":"red","era":"Early Cold War","label":"ATMZ-5","shortLabel":"ATMZ-5","filename":"","type":"Unarmed","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"ATZ-10":{"name":"ATZ-10","coalition":"red","era":"Early Cold War","label":"ATZ-10","shortLabel":"ATZ-10","filename":"","type":"Unarmed","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"BMD-1":{"name":"BMD-1","coalition":"red","era":"Mid Cold War","label":"BMD-1","shortLabel":"BMD-1","filename":"","type":"IFV","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"iran - camo":{"name":"IRAN - camo","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"BMP-1":{"name":"BMP-1","coalition":"red","era":"Mid Cold War","label":"BMP-1","shortLabel":"BMP-1","filename":"","type":"IFV","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"grg_summer":{"name":"GRG_Summer","countries":"All"},"grg_autumn":{"name":"GRG_Autumn","countries":"All"},"grg_winter":{"name":"GRG_Winter","countries":"All"},"grg_spring":{"name":"GRG_Spring","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"ukr_summer":{"name":"UKR_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"ukr_winter":{"name":"UKR_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"},"ukr_spring":{"name":"UKR_Spring","countries":"All"},"ukr_autumn":{"name":"UKR_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"}}},"BMP-2":{"name":"BMP-2","coalition":"red","era":"Mid Cold War","label":"BMP-2","shortLabel":"BMP-2","filename":"","type":"IFV","enabled":true,"liveries":{"ukr_summer":{"name":"UKR_Summer","countries":"All"},"ukr_spring":{"name":"UKR_Spring","countries":"All"},"winter":{"name":"Winter","countries":"All"},"ukr_autumn":{"name":"UKR_Autumn","countries":"All"},"spring":{"name":"Spring","countries":"All"},"grg_summer":{"name":"GRG_Summer","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grg_autumn":{"name":"GRG_Autumn","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"ukr_winter":{"name":"UKR_Winter","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grg_winter":{"name":"GRG_Winter","countries":"All"},"grg_spring":{"name":"GRG_Spring","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"BMP-3":{"name":"BMP-3","coalition":"red","era":"Late Cold War","label":"BMP-3","shortLabel":"BMP-3","filename":"","type":"IFV","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"BRDM-2":{"name":"BRDM-2","coalition":"red","era":"Early Cold War","label":"BRDM-2","shortLabel":"BRDM-2","filename":"","type":"Reconnaissance","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"BTR-80":{"name":"BTR-80","coalition":"red","era":"Late Cold War","label":"BTR-80","shortLabel":"BTR-80","filename":"","type":"APC","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"light green autumn":{"name":"Light Green Autumn","countries":"All"},"military police autumn":{"name":"Military Police Autumn","countries":"All"},"light green winter":{"name":"Light Green Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"military police winter":{"name":"Military Police Winter","countries":"All"},"military police spring":{"name":"Military Police Spring","countries":"All"},"light green spring":{"name":"Light Green Spring","countries":"All"},"green autumn":{"name":"Green_Autumn","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"green winter":{"name":"Green_Winter","countries":"All"},"military police summer":{"name":"Military Police Summer","countries":"All"},"light green summer":{"name":"Light_Green_Summer","countries":"All"},"green spring":{"name":"Green_Spring","countries":"All"},"green summer":{"name":"Green_Summer","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"BTR_D":{"name":"BTR_D","coalition":"red","era":"Mid Cold War","label":"BTR_D","shortLabel":"BTR_D","filename":"","type":"APC","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Boman":{"name":"Boman","coalition":"blue","era":"Late Cold War","label":"Grad Fire Direction Manager","shortLabel":"Boman","filename":"","type":"Reconnaissance","enabled":true},"Bunker":{"name":"Bunker","coalition":"","era":"","label":"Bunker","shortLabel":"Bunker","filename":"","type":"Static","enabled":true},"Challenger2":{"name":"Challenger2","coalition":"blue","era":"Modern","label":"Challenger2","shortLabel":"Challenger2","filename":"","type":"Tank","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Cobra":{"name":"Cobra","coalition":"blue","era":"Modern","label":"Otokar Cobra","shortLabel":"Cobra","filename":"","type":"Reconnaissance","enabled":true},"Dog Ear radar":{"name":"Dog Ear radar","coalition":"red","era":"Mid Cold War","label":"Dog Ear","shortLabel":"Dog Ear radar","filename":"","type":"SAM Search radar","enabled":true,"liveries":{"ukr_summer":{"name":"UKR_Summer","countries":"All"},"ukr_spring":{"name":"UKR_Spring","countries":"All"},"winter":{"name":"Winter","countries":"All"},"ukr_autumn":{"name":"UKR_Autumn","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"ukr_winter":{"name":"UKR_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"GAZ-3307":{"name":"GAZ-3307","coalition":"red","era":"Early Cold War","label":"GAZ-3307","shortLabel":"GAZ-3307","filename":"","type":"Unarmed","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"GAZ-3308":{"name":"GAZ-3308","coalition":"red","era":"Early Cold War","label":"GAZ-3308","shortLabel":"GAZ-3308","filename":"","type":"Unarmed","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"GAZ-66":{"name":"GAZ-66","coalition":"red","era":"Early Cold War","label":"GAZ-66","shortLabel":"GAZ-66","filename":"","type":"Unarmed","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Gepard":{"name":"Gepard","coalition":"blue","era":"Late Cold War","label":"Gepard","shortLabel":"Gepard","filename":"","type":"AAA","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Grad-URAL":{"name":"Grad-URAL","coalition":"red","era":"Mid Cold War","label":"Grad","shortLabel":"Grad","filename":"","type":"Rocket Artillery","enabled":true},"HEMTT TFFT":{"name":"HEMTT TFFT","coalition":"blue","era":"Late Cold War","label":"HEMTT TFFT","shortLabel":"HEMTT TFFT","filename":"","type":"Unarmed","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"Hawk SAM Battery":{"name":"Hawk SAM Battery","coalition":"blue","era":"Early Cold War","label":"Hawk SAM Battery","shortLabel":"Hawk SAM Battery","range":"Medium","filename":"","type":"SAM Site","enabled":true},"Hawk cwar":{"name":"Hawk cwar","coalition":"blue","era":"Early Cold War","label":"Hawk Continous Wave Acquisition Radar","shortLabel":"Hawk cwar","range":"Long","filename":"","type":"SAM Track radar","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Hawk ln":{"name":"Hawk ln","coalition":"blue","era":"Late Cold War","label":"Hawk Launcher","shortLabel":"Hawk ln","filename":"","type":"SAM Launcher","enabled":true,"liveries":{"xx337 - 92 sqn blue tail":{"name":"XX337-92Sqn","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"finland hw-341 grey":{"name":"HW-341 Grey","countries":["FIN"]},"xx245 - 2009 raf hawk display":{"name":"XX245-RAF Hawk Display 2009","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"finland hw-329 green brown":{"name":"HW-329 Green Brown","countries":["FIN"]},"swiss u-1268 - byebyehawk":{"name":"U-1268 - ByeByeHawk","countries":["SUI"]},"25th fts, vance afb, oklahoma (vn)":{"name":"25th FTS, Vance AFB, Oklahoma (VN)","countries":["USA"]},"xx226 - 74sqn 1992-2000":{"name":"74Sqn XX226 1992-2000","countries":["UK"]},"finland hw-373 ex-swiss air force":{"name":"HW-373 Ex-Swiss Air Force","countries":["FIN"]},"swiss u-1252 - normal":{"name":"U-1252 - Normal","countries":["SUI"]},"swiss u-1270 - wallis":{"name":"U-1270 - Wallis","countries":["SUI"]},"1st rs, beale afb, california (bb)":{"name":"1st RS, Beale AFB, California (BB)","countries":["USA"]},"xx100 - tfc":{"name":"The Fighter Collection XX100","countries":["UK"]},"509th bs, whitman afb, missouri (wm)":{"name":"509th BS, Whiteman AFB, Missouri (WM)","countries":["USA"]},"xx218 - 208sqn":{"name":"208Sqn XX218","countries":["UK"]},"xx316 - fradu royal navy":{"name":"Royal Navy XX316","countries":["UK"]},"usaf aggressor 269":{"name":"USAF-AGGRESSOR-269","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"swiss u-1251 - white":{"name":"U-1251 - White","countries":["SUI"]},"xx201 - 2010 raf hawk display":{"name":"XX201-4FTS-HawkDisplay2010","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"xx175 - fradu royal navy":{"name":"Royal Navy XX175","countries":["UK"]},"1018 - united arab emirates":{"name":"United Arab Emirates Air Force","countries":["ARE"]},"xx179 - red arrows 1979-2007":{"name":"Red Arrows 1979-2007","countries":["UK"]},"xx178 - 1994 raf hawk display":{"name":"XX178-RAF Hawk Display 1994","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"xx159 - fradu royal navy anniversary":{"name":"Royal Navy XX159","countries":["UK"]},"xx189 - 100sqn":{"name":"100Sqn XX189","countries":["TUR","RUS","USA","ISR","NETH","NOR","RSO","BEL","GER","DEN","SPN","GRG","ABH","UKR","ITA","CAN","FRA","UK"]},"xx228 - veao":{"name":"VEAO, XX228","countries":["UK"]},"xx316 - 74sqn 1998-2000":{"name":"74Sqn XX316 1998-2000","countries":["UK"]},"xx179 - red arrows 2008-2012":{"name":"Red Arrows 2008-2012","countries":["UK"]},"12th ftw, randolph afb, texas (ra)":{"name":"12th FTW, Randolph AFB, Texas (RA)","countries":["USA"]},"nas meridian, mississippi seven (vt-7)":{"name":"NAS Meridian, Mississippi Seven (VT-7)","countries":["USA"]},"88th fts, sheppard afb, texas (en)":{"name":"88th FTS, Sheppard AFB, Texas (EN)","countries":["USA"]},"xx159 - 2004 raf hawk display":{"name":"XX159-RAF Hawk Display 2004","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]}}},"Hawk pcp":{"name":"Hawk pcp","coalition":"blue","era":"Late Cold War","label":"Hawk Platoon Command Post","shortLabel":"Hawk pcp","range":"Medium","filename":"","type":"SAM Support vehicle","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Hawk sr":{"name":"Hawk sr","coalition":"blue","era":"Early Cold War","label":"Hawk Search radar","shortLabel":"Hawk sr","range":"Long","filename":"","type":"SAM Search radar","enabled":true,"liveries":{"xx337 - 92 sqn blue tail":{"name":"XX337-92Sqn","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"finland hw-341 grey":{"name":"HW-341 Grey","countries":["FIN"]},"xx245 - 2009 raf hawk display":{"name":"XX245-RAF Hawk Display 2009","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"finland hw-329 green brown":{"name":"HW-329 Green Brown","countries":["FIN"]},"swiss u-1268 - byebyehawk":{"name":"U-1268 - ByeByeHawk","countries":["SUI"]},"25th fts, vance afb, oklahoma (vn)":{"name":"25th FTS, Vance AFB, Oklahoma (VN)","countries":["USA"]},"xx226 - 74sqn 1992-2000":{"name":"74Sqn XX226 1992-2000","countries":["UK"]},"finland hw-373 ex-swiss air force":{"name":"HW-373 Ex-Swiss Air Force","countries":["FIN"]},"swiss u-1252 - normal":{"name":"U-1252 - Normal","countries":["SUI"]},"swiss u-1270 - wallis":{"name":"U-1270 - Wallis","countries":["SUI"]},"1st rs, beale afb, california (bb)":{"name":"1st RS, Beale AFB, California (BB)","countries":["USA"]},"xx100 - tfc":{"name":"The Fighter Collection XX100","countries":["UK"]},"509th bs, whitman afb, missouri (wm)":{"name":"509th BS, Whiteman AFB, Missouri (WM)","countries":["USA"]},"xx218 - 208sqn":{"name":"208Sqn XX218","countries":["UK"]},"xx316 - fradu royal navy":{"name":"Royal Navy XX316","countries":["UK"]},"usaf aggressor 269":{"name":"USAF-AGGRESSOR-269","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"swiss u-1251 - white":{"name":"U-1251 - White","countries":["SUI"]},"xx201 - 2010 raf hawk display":{"name":"XX201-4FTS-HawkDisplay2010","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"xx175 - fradu royal navy":{"name":"Royal Navy XX175","countries":["UK"]},"1018 - united arab emirates":{"name":"United Arab Emirates Air Force","countries":["ARE"]},"xx179 - red arrows 1979-2007":{"name":"Red Arrows 1979-2007","countries":["UK"]},"xx178 - 1994 raf hawk display":{"name":"XX178-RAF Hawk Display 1994","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"xx159 - fradu royal navy anniversary":{"name":"Royal Navy XX159","countries":["UK"]},"xx189 - 100sqn":{"name":"100Sqn XX189","countries":["TUR","RUS","USA","ISR","NETH","NOR","RSO","BEL","GER","DEN","SPN","GRG","ABH","UKR","ITA","CAN","FRA","UK"]},"xx228 - veao":{"name":"VEAO, XX228","countries":["UK"]},"xx316 - 74sqn 1998-2000":{"name":"74Sqn XX316 1998-2000","countries":["UK"]},"xx179 - red arrows 2008-2012":{"name":"Red Arrows 2008-2012","countries":["UK"]},"12th ftw, randolph afb, texas (ra)":{"name":"12th FTW, Randolph AFB, Texas (RA)","countries":["USA"]},"nas meridian, mississippi seven (vt-7)":{"name":"NAS Meridian, Mississippi Seven (VT-7)","countries":["USA"]},"88th fts, sheppard afb, texas (en)":{"name":"88th FTS, Sheppard AFB, Texas (EN)","countries":["USA"]},"xx159 - 2004 raf hawk display":{"name":"XX159-RAF Hawk Display 2004","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]}}},"Hawk tr":{"name":"Hawk tr","coalition":"blue","era":"Early Cold War","label":"Hawk Track radar","shortLabel":"Hawk tr","range":"Medium","filename":"","type":"SAM Track radar","enabled":true,"liveries":{"xx337 - 92 sqn blue tail":{"name":"XX337-92Sqn","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"finland hw-341 grey":{"name":"HW-341 Grey","countries":["FIN"]},"xx245 - 2009 raf hawk display":{"name":"XX245-RAF Hawk Display 2009","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"finland hw-329 green brown":{"name":"HW-329 Green Brown","countries":["FIN"]},"swiss u-1268 - byebyehawk":{"name":"U-1268 - ByeByeHawk","countries":["SUI"]},"25th fts, vance afb, oklahoma (vn)":{"name":"25th FTS, Vance AFB, Oklahoma (VN)","countries":["USA"]},"xx226 - 74sqn 1992-2000":{"name":"74Sqn XX226 1992-2000","countries":["UK"]},"finland hw-373 ex-swiss air force":{"name":"HW-373 Ex-Swiss Air Force","countries":["FIN"]},"swiss u-1252 - normal":{"name":"U-1252 - Normal","countries":["SUI"]},"swiss u-1270 - wallis":{"name":"U-1270 - Wallis","countries":["SUI"]},"1st rs, beale afb, california (bb)":{"name":"1st RS, Beale AFB, California (BB)","countries":["USA"]},"xx100 - tfc":{"name":"The Fighter Collection XX100","countries":["UK"]},"509th bs, whitman afb, missouri (wm)":{"name":"509th BS, Whiteman AFB, Missouri (WM)","countries":["USA"]},"xx218 - 208sqn":{"name":"208Sqn XX218","countries":["UK"]},"xx316 - fradu royal navy":{"name":"Royal Navy XX316","countries":["UK"]},"usaf aggressor 269":{"name":"USAF-AGGRESSOR-269","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"swiss u-1251 - white":{"name":"U-1251 - White","countries":["SUI"]},"xx201 - 2010 raf hawk display":{"name":"XX201-4FTS-HawkDisplay2010","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"xx175 - fradu royal navy":{"name":"Royal Navy XX175","countries":["UK"]},"1018 - united arab emirates":{"name":"United Arab Emirates Air Force","countries":["ARE"]},"xx179 - red arrows 1979-2007":{"name":"Red Arrows 1979-2007","countries":["UK"]},"xx178 - 1994 raf hawk display":{"name":"XX178-RAF Hawk Display 1994","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]},"xx159 - fradu royal navy anniversary":{"name":"Royal Navy XX159","countries":["UK"]},"xx189 - 100sqn":{"name":"100Sqn XX189","countries":["TUR","RUS","USA","ISR","NETH","NOR","RSO","BEL","GER","DEN","SPN","GRG","ABH","UKR","ITA","CAN","FRA","UK"]},"xx228 - veao":{"name":"VEAO, XX228","countries":["UK"]},"xx316 - 74sqn 1998-2000":{"name":"74Sqn XX316 1998-2000","countries":["UK"]},"xx179 - red arrows 2008-2012":{"name":"Red Arrows 2008-2012","countries":["UK"]},"12th ftw, randolph afb, texas (ra)":{"name":"12th FTW, Randolph AFB, Texas (RA)","countries":["USA"]},"nas meridian, mississippi seven (vt-7)":{"name":"NAS Meridian, Mississippi Seven (VT-7)","countries":["USA"]},"88th fts, sheppard afb, texas (en)":{"name":"88th FTS, Sheppard AFB, Texas (EN)","countries":["USA"]},"xx159 - 2004 raf hawk display":{"name":"XX159-RAF Hawk Display 2004","countries":["USA","NOR","BEL","DEN","SPN","UKR","TUR","NETH","ISR","ABH","FRA","RUS","INS","RSO","AUS","CAN","UK","GER","GRG","ITA"]}}},"Hummer":{"name":"Hummer","coalition":"blue","era":"Mid Cold War","label":"Hummer","shortLabel":"Hummer","filename":"","type":"Unarmed","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"IKARUS Bus":{"name":"IKARUS Bus","coalition":"red","era":"Mid Cold War","label":"IKARUS Bus","shortLabel":"IKARUS Bus","filename":"","type":"Unarmed","enabled":true},"Igla manpad INS":{"name":"Igla manpad INS","coalition":"red","era":"Late Cold War","label":"SA-18 Igla manpad INS","shortLabel":"Igla manpad INS","range":"Short","filename":"","type":"MANPADS","enabled":true,"liveries":{"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"}}},"Infantry AK":{"name":"Infantry AK","coalition":"red","era":"Mid Cold War","label":"Infantry AK","shortLabel":"Infantry AK","filename":"","type":"Infantry","enabled":true},"KAMAZ Truck":{"name":"KAMAZ Truck","coalition":"red","era":"Mid Cold War","label":"KAMAZ Truck","shortLabel":"KAMAZ Truck","filename":"","type":"Unarmed","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Kub 1S91 str":{"name":"Kub 1S91 str","coalition":"red","era":"Mid Cold War","label":"SA-6 Straight flush","shortLabel":"Kub 1S91 str","range":"Medium","filename":"","type":"SAM Search/Track radar","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Kub 2P25 ln":{"name":"Kub 2P25 ln","coalition":"red","era":"Late Cold War","label":"SA-6 Launcher","shortLabel":"Kub 2P25 ln","range":"Medium","filename":"","type":"SAM Launcher","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"LAV-25":{"name":"LAV-25","coalition":"blue","era":"Late Cold War","label":"LAV-25","shortLabel":"LAV-25","filename":"","type":"IFV","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"aus_winter":{"name":"AUS_Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"aus_summer":{"name":"AUS_Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"sand":{"name":"sand","countries":"All"},"green":{"name":"green","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"LAZ Bus":{"name":"LAZ Bus","coalition":"red","era":"Early Cold War","label":"LAZ Bus","shortLabel":"LAZ Bus","filename":"","type":"Unarmed","enabled":true},"Leclerc":{"name":"Leclerc","coalition":"blue","era":"Modern","label":"Leclerc","shortLabel":"Leclerc","filename":"","type":"Tank","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"Leopard-2":{"name":"Leopard-2","coalition":"blue","era":"Late Cold War","label":"Leopard-2","shortLabel":"Leopard-2","filename":"","type":"Tank","enabled":true,"liveries":{"can_spring":{"name":"CAN_spring","countries":"All"},"winter":{"name":"winter","countries":"All"},"spn_summer":{"name":"SPN_Summer","countries":"All"},"de_desert_winter":{"name":"winter","countries":"All"},"de_desert_spring":{"name":"spring","countries":"All"},"de_summer":{"name":"summer","countries":"All"},"den_autumn":{"name":"DEN_autumn","countries":"All"},"den_spring":{"name":"DEN_spring","countries":"All"},"de_winter":{"name":"winter","countries":"All"},"neth_summer":{"name":"NETH_summer","countries":"All"},"de_autumn":{"name":"winter","countries":"All"},"grc_summer":{"name":"GRC_summer","countries":"All"},"spring":{"name":"spring","countries":"All"},"summer":{"name":"summer","countries":"All"},"grc_autumn":{"name":"GRC_autumn","countries":"All"},"autumn":{"name":"autumn","countries":"All"},"de_desert_summer":{"name":"DE_Desert_summer","countries":"All"},"desert_summer":{"name":"Desert_summer","countries":"All"},"grc_winter":{"name":"GRC_winter","countries":"All"},"den_summer":{"name":"DEN_summer","countries":"All"},"desert_autumn":{"name":"Desert_autumn","countries":"All"},"de_spring":{"name":"spring","countries":"All"},"den_winter":{"name":"DEN_winter","countries":"All"},"fin_winter":{"name":"FIN_winter","countries":"All"},"grc_spring":{"name":"GRC_spring","countries":"All"},"desert_winter":{"name":"Desert_winter","countries":"All"},"can_winter":{"name":"CAN_winter","countries":"All"},"de_desert_autumn":{"name":"autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"},"desert_spring":{"name":"Desert_spring","countries":"All"},"fin_spring":{"name":"FIN_spring","countries":"All"},"fin_summer":{"name":"FIN_summer","countries":"All"},"can_summer":{"name":"CAN_summer","countries":"All"},"can_autumn":{"name":"CAN_autumn","countries":"All"},"neth_winter":{"name":"NETH_winter","countries":"All"},"spn_winter":{"name":"SPN_Winter","countries":"All"},"fin_autumn":{"name":"FIN_autumn","countries":"All"}}},"Leopard1A3":{"name":"Leopard1A3","coalition":"blue","era":"Mid Cold War","label":"Leopard1A3","shortLabel":"Leopard1A3","filename":"","type":"Tank","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"M 818":{"name":"M 818","coalition":"blue","era":"Early Cold War","label":"M 818","shortLabel":"M 818","filename":"","type":"Unarmed","enabled":true,"liveries":{"spring":{"name":"spring","countries":"All"},"winter":{"name":"winter","countries":"All"},"autumn":{"name":"autumn","countries":"All"},"summer":{"name":"summer","countries":"All"}}},"M-1 Abrams":{"name":"M-1 Abrams","coalition":"blue","era":"Late Cold War","label":"M-1 Abrams","shortLabel":"M-1 Abrams","filename":"","type":"Tank","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"M-109":{"name":"M-109","coalition":"blue","era":"Early Cold War","label":"M-109 Paladin","shortLabel":"M-109","filename":"","type":"Gun Artillery","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"M-113":{"name":"M-113","coalition":"blue","era":"Early Cold War","label":"M-113","shortLabel":"M-113","filename":"","type":"APC","enabled":true,"liveries":{"winter":{"name":"winter","countries":"All"},"grc_autumn_med":{"name":"GRC_autumn","countries":"All"},"winter_med":{"name":"winter","countries":"All"},"grc_summer":{"name":"GRC_summer","countries":"All"},"spring":{"name":"spring","countries":"All"},"summer":{"name":"summer","countries":"All"},"grc_spring_med":{"name":"GRC_spring","countries":"All"},"grc_autumn":{"name":"GRC_autumn","countries":"All"},"autumn":{"name":"autumn","countries":"All"},"grc_winter":{"name":"GRC_winter","countries":"All"},"green_med":{"name":"green","countries":"All"},"green":{"name":"green","countries":"All"},"spring_med":{"name":"spring","countries":"All"},"grc_spring":{"name":"GRC_spring","countries":"All"},"grc_winter_med":{"name":"GRC_winter","countries":"All"},"desert":{"name":"Desert","countries":"All"},"grc_summer_med":{"name":"GRC_summer","countries":"All"},"autumn_med":{"name":"autumn","countries":"All"},"desert_med":{"name":"Desert","countries":"All"},"summer_med":{"name":"summer","countries":"All"}}},"M-2 Bradley":{"name":"M-2 Bradley","coalition":"blue","era":"Late Cold War","label":"M-2A2 Bradley","shortLabel":"M-2 Bradley","filename":"","type":"IFV","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"M-60":{"name":"M-60","coalition":"blue","era":"Early Cold War","label":"M-60","shortLabel":"M-60","filename":"","type":"Tank","enabled":true,"liveries":{"winter":{"name":"winter","countries":"All"},"spring":{"name":"spring","countries":"All"},"summer":{"name":"summer","countries":"All"},"autumn":{"name":"autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"M1043 HMMWV Armament":{"name":"M1043 HMMWV Armament","coalition":"blue","era":"Late Cold War","label":"HMMWV M2 Browning","shortLabel":"HMMWV M2","filename":"","type":"Reconnaissance","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"M1045 HMMWV TOW":{"name":"M1045 HMMWV TOW","coalition":"red","era":"Late Cold War","label":"HMMWV TOW","shortLabel":"HMMWV TOW","filename":"","type":"Reconnaissance","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"M1097 Avenger":{"name":"M1097 Avenger","coalition":"blue","era":"Modern","label":"M1097 Avenger","shortLabel":"M1097 Avenger","filename":"","type":"SAM","enabled":true},"M1126 Stryker ICV":{"name":"M1126 Stryker ICV","coalition":"blue","era":"Modern","label":"Stryker MG","shortLabel":"Stryker MG","filename":"","type":"APC","enabled":true},"M1128 Stryker MGS":{"name":"M1128 Stryker MGS","coalition":"blue","era":"Modern","label":"M1128 Stryker MGS","shortLabel":"M1128 Stryker MGS","filename":"","type":"SPG","enabled":true},"M1134 Stryker ATGM":{"name":"M1134 Stryker ATGM","coalition":"blue","era":"Modern","label":"Stryker ATGM","shortLabel":"Stryker ATGM","filename":"","type":"IFV","enabled":true},"M48 Chaparral":{"name":"M48 Chaparral","coalition":"blue","era":"Late Cold War","label":"M48 Chaparral","shortLabel":"M48 Chaparral","filename":"","type":"SAM","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"usa_winter":{"name":"USA_Winter","countries":"All"},"isr_summer":{"name":"ISR_Summer","countries":"All"},"isr_spring":{"name":"ISR_Spring","countries":"All"},"usa_autumn":{"name":"USA_Autumn","countries":"All"},"spring":{"name":"Spring","countries":"All"},"isr_winter":{"name":"ISR_Winter","countries":"All"},"isr_autumn":{"name":"ISR_Autumn","countries":"All"},"summer":{"name":"Summer","countries":"All"},"usa_summer":{"name":"USA_Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"usa_spring":{"name":"USA_Spring","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"M6 Linebacker":{"name":"M6 Linebacker","coalition":"blue","era":"Late Cold War","label":"M6 Linebacker","shortLabel":"M6 Linebacker","filename":"","type":"SAM","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"M978 HEMTT Tanker":{"name":"M978 HEMTT Tanker","coalition":"blue","era":"Mid Cold War","label":"M978 HEMTT Tanker","shortLabel":"M978 HEMTT Tanker","filename":"","type":"Unarmed","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"MAZ-6303":{"name":"MAZ-6303","coalition":"red","era":"Mid Cold War","label":"MAZ-6303","shortLabel":"MAZ-6303","filename":"","type":"Unarmed","enabled":true,"liveries":{"winter":{"name":"winter","countries":"All"},"spring":{"name":"spring","countries":"All"},"summer":{"name":"summer","countries":"All"},"autumn":{"name":"autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"MCV-80":{"name":"MCV-80","coalition":"blue","era":"Late Cold War","label":"Warrior IFV","shortLabel":"Warrior","filename":"","type":"IFV","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"MLRS":{"name":"MLRS","coalition":"blue","era":"Late Cold War","label":"M270","shortLabel":"M270","filename":"","type":"Rocket Artillery","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"MTLB":{"name":"MTLB","coalition":"red","era":"Mid Cold War","label":"MT-LB","shortLabel":"MT-LB","filename":"","type":"APC","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Marder":{"name":"Marder","coalition":"blue","era":"Late Cold War","label":"Marder","shortLabel":"Marder","filename":"","type":"IFV","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Osa 9A33 ln":{"name":"Osa 9A33 ln","coalition":"red","era":"Mid Cold War","label":"SA-8 Launcher","shortLabel":"Osa 9A33 ln","range":"Short","filename":"","type":"SAM Launcher","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Paratrooper AKS-74":{"name":"Paratrooper AKS-74","coalition":"red","era":"Modern","label":"Paratrooper AKS-74","shortLabel":"Paratrooper AKS-74","filename":"","type":"Infantry","enabled":true},"Paratrooper RPG-16":{"name":"Paratrooper RPG-16","coalition":"red","era":"Modern","label":"Paratrooper RPG-16","shortLabel":"Paratrooper RPG-16","filename":"","type":"Infantry","enabled":true},"Patriot AMG":{"name":"Patriot AMG","coalition":"blue","era":"Modern","label":"Patriot Antenna Mast Group","shortLabel":"Patriot AMG","range":"Long","filename":"","type":"SAM Support vehicle","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Patriot ECS":{"name":"Patriot ECS","coalition":"blue","era":"Modern","label":"Patriot Engagement Control Station","shortLabel":"Patriot ECS","range":"Long","filename":"","type":"SAM Support vehicle","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Patriot EPP":{"name":"Patriot EPP","coalition":"blue","era":"Late Cold War","label":"Patriot Electric Power Plant","shortLabel":"Patriot EPP","range":"Long","filename":"","type":"SAM Support vehicle","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Patriot cp":{"name":"Patriot cp","coalition":"blue","era":"Late Cold War","label":"Patriot Command Post","shortLabel":"Patriot cp","range":"Long","filename":"","type":"SAM Support vehicle","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Patriot ln":{"name":"Patriot ln","coalition":"blue","era":"Late Cold War","label":"Patriot Launcher","shortLabel":"Patriot ln","range":"Long","filename":"","type":"SAM Launcher","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Patriot site":{"name":"Patriot site","coalition":"blue","era":"Late Cold War","label":"Patriot site","shortLabel":"Patriot site","range":"Long","filename":"","type":"SAM Site","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Patriot str":{"name":"Patriot str","coalition":"blue","era":"Late Cold War","label":"Patriot Search/Track radar","shortLabel":"Patriot str","range":"Medium","filename":"","type":"SAM Search/Track radar","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Predator GCS":{"name":"Predator GCS","coalition":"blue","era":"Late Cold War","label":"Predator GCS","shortLabel":"Predator GCS","filename":"","type":"Unarmed","enabled":true,"liveries":{"usaf standard":{"name":"USAF Standard","countries":["USA"]}}},"Predator TrojanSpirit":{"name":"Predator TrojanSpirit","coalition":"blue","era":"Late Cold War","label":"Predator TrojanSpirit","shortLabel":"Predator TrojanSpirit","filename":"","type":"Unarmed","enabled":true},"RLS_19J6":{"name":"RLS_19J6","coalition":"Red","era":"Mid Cold War","label":"SA-5 Thin Shield","shortLabel":"RLS 19J6","range":"Long","filename":"","type":"SAM Search radar","enabled":true,"liveries":{"spring":{"name":"spring","countries":"All"},"winter":{"name":"winter","countries":"All"},"autumn":{"name":"autumn","countries":"All"},"summer":{"name":"summer","countries":"All"}}},"RPC_5N62V":{"name":"RPC_5N62V","coalition":"Red","era":"Mid Cold War","label":"SA-5 Square Pair","shortLabel":"RPC 5N62V","range":"Long","filename":"","type":"SAM Track radar","enabled":true,"liveries":{"desert_spring":{"name":"S-200_Radar_Desert_Spring","countries":"All"},"cam_autumn":{"name":"S-200_Radar_Cam_Autumn","countries":"All"},"cam_spring":{"name":"S-200_Radar_Cam_Spring","countries":"All"},"green_summer":{"name":"S-200_Radar_Green_Summer","countries":"All"},"green_winter":{"name":"S-200_Radar_Green_Winter","countries":"All"},"cam_summer":{"name":"S-200_Radar_Cam_Summer","countries":"All"},"desert_winter":{"name":"S-200_Radar_Desert_Winter","countries":"All"},"syria_autumn":{"name":"S-200_Radar_Syria_Autumn","countries":"All"},"syria_summer":{"name":"S-200_Radar_Syria_Summer","countries":"All"},"syria_winter":{"name":"S-200_Radar_Syria_Winter","countries":"All"},"green_spring":{"name":"S-200_Radar_Green_Spring","countries":"All"},"syria_spring":{"name":"S-200_Radar_Syria_Spring","countries":"All"},"desert_summer":{"name":"S-200_Radar_Desert_Summer","countries":"All"},"green_autumn":{"name":"S-200_Radar_Green_Autumn","countries":"All"},"desert_autumn":{"name":"S-200_Radar_Desert_Autumn","countries":"All"},"cam_winter":{"name":"S-200_Radar_Cam_Winter","countries":"All"}}},"Roland ADS":{"name":"Roland ADS","coalition":"blue","era":"Late Cold War","label":"Roland ADS","shortLabel":"Roland ADS","filename":"","type":"SAM","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"Roland Radar":{"name":"Roland Radar","coalition":"blue","era":"Mid Cold War","label":"Roland Search radar","shortLabel":"Roland Radar","filename":"","type":"SAM Search radar","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"S-200_Launcher":{"name":"S-200_Launcher","coalition":"Red","era":"Mid Cold War","label":"SA-5 Launcher","shortLabel":"S-200 Launcher","range":"Long","filename":"","type":"SAM Launcher","enabled":true,"liveries":{"desert_spring":{"name":"S-200_Launcher_Desert_Spring","countries":"All"},"cam_autumn":{"name":"S-200_Cam_Autumn","countries":"All"},"cam_spring":{"name":"S-200_Launcher_Cam_Spring","countries":"All"},"green_summer":{"name":"S-200_Launcher_Green_Summer","countries":"All"},"green_winter":{"name":"S-200_Launcher_Green_Winter","countries":"All"},"cam_summer":{"name":"S-200_Launcher_Cam_Summer","countries":"All"},"desert_winter":{"name":"S-200_Launcher_Desert_Winter","countries":"All"},"syria_autumn":{"name":"S-200_Launcher_Syria_Autumn","countries":"All"},"syria_summer":{"name":"S-200_Launcher_Syria_Summer","countries":"All"},"syria_winter":{"name":"S-200_Launcher_Syria_Winter","countries":"All"},"green_spring":{"name":"S-200_Launcher_Green_Spring","countries":"All"},"syria_spring":{"name":"S-200_Launcher_Syria_Spring","countries":"All"},"desert_summer":{"name":"S-200_Launcher_Desert_Summer","countries":"All"},"green_autumn":{"name":"S-200_Launcher_Green_Autumn","countries":"All"},"desert_autumn":{"name":"S-200_Launcher_Desert_Autumn","countries":"All"},"cam_winter":{"name":"S-200_Launcher_Cam_Winter","countries":"All"}}},"S-300PS 40B6M tr":{"name":"S-300PS 40B6M tr","coalition":"red","era":"Late Cold War","label":"SA-10 Tin Shield","shortLabel":"S-300PS 40B6M tr","range":"Long","filename":"","type":"SAM Track radar","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"S-300PS 40B6MD sr":{"name":"S-300PS 40B6MD sr","coalition":"red","era":"Late Cold War","label":"SA-10 Clam Shell","shortLabel":"S-300PS 40B6MD sr","range":"Long","filename":"","type":"SAM Search radar","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"S-300PS 54K6 cp":{"name":"S-300PS 54K6 cp","coalition":"red","era":"Late Cold War","label":"SA-10 Command Post","shortLabel":"S-300PS 54K6 cp","range":"Long","filename":"","type":"SAM Support vehicle","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"S-300PS 5P85C ln":{"name":"S-300PS 5P85C ln","coalition":"red","era":"Late Cold War","label":"SA-10 Launcher (5P85C)","shortLabel":"S-300PS 5P85C ln","range":"Long","filename":"","type":"SAM Launcher","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"S-300PS 5P85D ln":{"name":"S-300PS 5P85D ln","coalition":"red","era":"Late Cold War","label":"SA-10 Launcher (5P85D)","shortLabel":"S-300PS 5P85D ln","range":"Long","filename":"","type":"SAM Launcher","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"S-300PS 64H6E sr":{"name":"S-300PS 64H6E sr","coalition":"red","era":"Late Cold War","label":"SA-10 Big Bird","shortLabel":"S-300PS 64H6E sr","range":"Long","filename":"","type":"SAM Search radar","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"SA-10 SAM Battery":{"name":"SA-10 SAM Battery","coalition":"red","era":"Late Cold War","label":"SA-10 SAM Battery","shortLabel":"SA-10 SAM Battery","range":"Long","filename":"","type":"SAM Site","enabled":true},"SA-11 Buk CC 9S470M1":{"name":"SA-11 Buk CC 9S470M1","coalition":"red","era":"Late Cold War","label":"SA-11 Command Post","shortLabel":"SA-11 Buk CC 9S470M1","range":"Medium","filename":"","type":"SAM Support vehicle","enabled":true,"liveries":{"ukr_summer":{"name":"UKR_Summer","countries":"All"},"ukr_spring":{"name":"UKR_Spring","countries":"All"},"winter":{"name":"Winter","countries":"All"},"ukr_autumn":{"name":"UKR_Autumn","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"ukr_winter":{"name":"UKR_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"SA-11 Buk LN 9A310M1":{"name":"SA-11 Buk LN 9A310M1","coalition":"red","era":"Late Cold War","label":"SA-11 Launcher","shortLabel":"SA-11 Buk LN 9A310M1","range":"Medium","filename":"","type":"SAM Launcher","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"SA-11 Buk SR 9S18M1":{"name":"SA-11 Buk SR 9S18M1","coalition":"red","era":"Mid Cold War","label":"SA-11 Snown Drift","shortLabel":"SA-11 Buk SR 9S18M1","range":"Long","filename":"","type":"SAM Search radar","enabled":true,"liveries":{"ukr_summer":{"name":"UKR_Summer","countries":"All"},"ukr_spring":{"name":"UKR_Spring","countries":"All"},"winter":{"name":"Winter","countries":"All"},"ukr_autumn":{"name":"UKR_Autumn","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"ukr_winter":{"name":"UKR_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"SA-11 SAM Battery":{"name":"SA-11 SAM Battery","coalition":"red","era":"Late Cold War","label":"SA-11 SAM Battery","shortLabel":"SA-11 SAM Battery","range":"Medium","filename":"","type":"SAM Site","enabled":true},"SA-18 Igla manpad":{"name":"SA-18 Igla manpad","coalition":"red","era":"Late Cold War","label":"SA-18 Igla manpad","shortLabel":"SA-18 Igla manpad","range":"Short","filename":"","type":"MANPADS","enabled":true},"SA-18 Igla-S manpad":{"name":"SA-18 Igla-S manpad","coalition":"red","era":"Late Cold War","label":"SA-18 Igla-S manpad","shortLabel":"SA-18 Igla-S manpad","range":"Short","filename":"","type":"MANPADS","enabled":true},"SA-2 SAM Battery":{"name":"SA-2 SAM Battery","coalition":"red","era":"Early Cold War","label":"SA-2 SAM Battery","shortLabel":"SA-2 SAM Battery","range":"Long","filename":"","type":"SAM Site","enabled":true},"SA-3 SAM Battery":{"name":"SA-3 SAM Battery","coalition":"red","era":"Early Cold War","label":"SA-3 SAM Battery","shortLabel":"SA-3 SAM Battery","range":"Medium","filename":"","type":"SAM Site","enabled":true},"SA-5 SAM Battery":{"name":"SA-5 SAM Battery","coalition":"Red","era":"Mid Cold War","label":"SA-5 SAM Battery","shortLabel":"SA-5 SAM Battery","range":"Long","filename":"","type":"SAM Site","enabled":true},"SA-6 SAM Battery":{"name":"SA-6 SAM Battery","coalition":"red","era":"Mid Cold War","label":"SA-6 SAM Battery","shortLabel":"SA-6 SAM Battery","range":"Medium","filename":"","type":"SAM Site","enabled":true},"SA-8 Osa LD 9T217":{"name":"SA-8 Osa LD 9T217","coalition":"red","era":"Late Cold War","label":"SA-8 Osa LD 9T217","shortLabel":"SA-8 Osa LD 9T217","range":"Short","filename":"","type":"SAM","enabled":true},"SAU 2-C9":{"name":"SAU 2-C9","coalition":"red","era":"Mid Cold War","label":"SAU Nona","shortLabel":"SAU Nona","filename":"","type":"Gun Artillery","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"SAU Akatsia":{"name":"SAU Akatsia","coalition":"red","era":"Mid Cold War","label":"SAU Akatsia","shortLabel":"SAU Akatsia","filename":"","type":"Gun Artillery","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"SAU Gvozdika":{"name":"SAU Gvozdika","coalition":"red","era":"Mid Cold War","label":"SAU Gvozdika","shortLabel":"SAU Gvozdika","filename":"","type":"Gun Artillery","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"SAU Msta":{"name":"SAU Msta","coalition":"red","era":"Late Cold War","label":"SAU Msta","shortLabel":"SAU Msta","filename":"","type":"Gun Artillery","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"SKP-11":{"name":"SKP-11","coalition":"red","era":"Early Cold War","label":"SKP-11","shortLabel":"SKP-11","filename":"","type":"Unarmed","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"SNR_75V":{"name":"SNR_75V","coalition":"Red","era":"Early Cold War","label":"SA-2 Fan Song","shortLabel":"SNR 75V","filename":"","type":"SAM Track radar","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"S_75M_Volhov":{"name":"S_75M_Volhov","coalition":"Red","era":"Early Cold War","label":"SA-2 Launcher","shortLabel":"S75M Volhov","filename":"","type":"SAM Launcher","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Sandbox":{"name":"Sandbox","coalition":"","era":"","label":"Sandbox","shortLabel":"Sandbox","filename":"","type":"Static","enabled":true},"Smerch":{"name":"Smerch","coalition":"red","era":"Late Cold War","label":"Smerch","shortLabel":"Smerch","filename":"","type":"Rocket Artillery","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Soldier AK":{"name":"Soldier AK","coalition":"red","era":"Early Cold War","label":"Soldier AK","shortLabel":"Soldier AK","filename":"","type":"Infantry","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"}}},"Soldier M249":{"name":"Soldier M249","coalition":"blue","era":"Late Cold War","label":"Soldier M249","shortLabel":"Soldier M249","filename":"","type":"Infantry","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"}}},"Soldier M4 GRG":{"name":"Soldier M4 GRG","coalition":"blue","era":"Mid Cold War","label":"Soldier M4 GRG","shortLabel":"Soldier M4 GRG","filename":"","type":"Infantry","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"}}},"Soldier M4":{"name":"Soldier M4","coalition":"blue","era":"Mid Cold War","label":"Soldier M4","shortLabel":"Soldier M4","filename":"","type":"Infantry","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"}}},"Soldier RPG":{"name":"Soldier RPG","coalition":"red","era":"Mid Cold War","label":"Soldier RPG","shortLabel":"Soldier RPG","filename":"","type":"Infantry","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"}}},"Stinger comm dsr":{"name":"Stinger comm dsr","coalition":"red","era":"Late Cold War","label":"Stinger comm dsr","shortLabel":"Stinger comm dsr","range":"Short","filename":"","type":"MANPADS","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"multicam":{"name":"multicam","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"}}},"Stinger comm":{"name":"Stinger comm","coalition":"blue","era":"Late Cold War","label":"Stinger comm","shortLabel":"Stinger comm","range":"Short","filename":"","type":"MANPADS","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"multicam":{"name":"multicam","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"}}},"Stinger manpad GRG":{"name":"Stinger manpad GRG","coalition":"blue","era":"Late Cold War","label":"Stinger manpad GRG","shortLabel":"Stinger manpad GRG","range":"Short","filename":"","type":"MANPADS","enabled":true,"liveries":{"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"}}},"Stinger manpad dsr":{"name":"Stinger manpad dsr","coalition":"blue","era":"Late Cold War","label":"Stinger manpad dsr","shortLabel":"Stinger manpad dsr","range":"Short","filename":"","type":"MANPADS","enabled":true,"liveries":{"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"}}},"Stinger manpad":{"name":"Stinger manpad","coalition":"blue","era":"Late Cold War","label":"Stinger manpad","shortLabel":"Stinger manpad","range":"Short","filename":"","type":"MANPADS","enabled":true,"liveries":{"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"}}},"Strela-1 9P31":{"name":"Strela-1 9P31","coalition":"red","era":"Late Cold War","label":"SA-9 Strela-1 9P31","shortLabel":"Strela-1 9P31","range":"Short","filename":"","type":"SAM","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Strela-10M3":{"name":"Strela-10M3","coalition":"red","era":"Late Cold War","label":"SA-13 Strela-10M3","shortLabel":"Strela-10M3","range":"Short","filename":"","type":"SAM","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Suidae":{"name":"Suidae","coalition":"","era":"Modern","label":"Suidae","shortLabel":"Suidae","filename":"","type":"Unarmed","enabled":true},"T-55":{"name":"T-55","coalition":"red","era":"Early Cold War","label":"T-55","shortLabel":"T-55","filename":"","type":"Tank","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"T-72B":{"name":"T-72B","coalition":"red","era":"Mid Cold War","label":"T-72B","shortLabel":"T-72B","filename":"","type":"Tank","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"T-80UD":{"name":"T-80UD","coalition":"red","era":"Mid Cold War","label":"T-80UD","shortLabel":"T-80UD","filename":"","type":"Tank","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"iran - 01":{"name":"Iran - 01","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"iran - 02":{"name":"Iran - 02","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"T-90":{"name":"T-90","coalition":"red","era":"Late Cold War","label":"T-90","shortLabel":"T-90","filename":"","type":"Tank","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"TPZ":{"name":"TPZ","coalition":"blue","era":"Late Cold War","label":"TPz Fuchs","shortLabel":"TPz Fuchs","filename":"","type":"APC","enabled":true},"Tigr_233036":{"name":"Tigr_233036","coalition":"red","era":"Late Cold War","label":"Tigr_233036","shortLabel":"Tigr_233036","filename":"","type":"Unarmed","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"Tor 9A331":{"name":"Tor 9A331","coalition":"red","era":"Late Cold War","label":"SA-15 Tor 9A331","shortLabel":"Tor 9A331","range":"Medium","filename":"","type":"SAM","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"grc_summer":{"name":"GRC_Summer","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Trolley bus":{"name":"Trolley bus","coalition":"blue","era":"Late Cold War","label":"Trolley bus","shortLabel":"Trolley bus","filename":"","type":"Unarmed","enabled":true},"UAZ-469":{"name":"UAZ-469","coalition":"red","era":"Mid Cold War","label":"UAZ-469","shortLabel":"UAZ-469","filename":"","type":"Unarmed","enabled":true,"liveries":{"red_spring":{"name":"RED_Spring","countries":"All"},"red_summer":{"name":"RED_Summer","countries":"All"},"winter":{"name":"Winter","countries":"All"},"orange_spring":{"name":"ORANGE_Spring","countries":"All"},"orange_autumn":{"name":"ORANGE_Autumn","countries":"All"},"red_autumn":{"name":"RED_Autumn","countries":"All"},"red_winter":{"name":"RED_Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"summer":{"name":"Summer","countries":"All"},"orange_summer":{"name":"ORANGE_Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"orange_winter":{"name":"ORANGE_Winter","countries":"All"}}},"Uragan_BM-27":{"name":"Uragan_BM-27","coalition":"red","era":"Late Cold War","label":"Uragan","shortLabel":"Uragan","filename":"","type":"Rocket Artillery","enabled":true,"liveries":{"ukr_summer":{"name":"UKR_Summer","countries":"All"},"ukr_spring":{"name":"UKR_Spring","countries":"All"},"winter":{"name":"RUS_Winter","countries":"All"},"ukr_autumn":{"name":"UKR_Autumn","countries":"All"},"spring":{"name":"RUS_Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"RUS_Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"RUS_Autumn","countries":"All"},"ukr_winter":{"name":"UKR_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"Ural ATsP-6":{"name":"Ural ATsP-6","coalition":"red","era":"Mid Cold War","label":"Ural ATsP-6","shortLabel":"Ural ATsP-6","filename":"","type":"Unarmed","enabled":true},"Ural-375 PBU":{"name":"Ural-375 PBU","coalition":"red","era":"Mid Cold War","label":"Ural-375 PBU","shortLabel":"Ural-375 PBU","filename":"","type":"Unarmed","enabled":true,"liveries":{"desert":{"name":"desert","countries":"All"}}},"Ural-375 ZU-23 Insurgent":{"name":"Ural-375 ZU-23 Insurgent","coalition":"red","era":"Early Cold War","label":"Ural-375 ZU-23 Insurgent","shortLabel":"Ural-375 ZU-23 Insurgent","filename":"","type":"AAA","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"Ural-375 ZU-23":{"name":"Ural-375 ZU-23","coalition":"red","era":"Early Cold War","label":"Ural-375 ZU-23","shortLabel":"Ural-375 ZU-23","filename":"","type":"AAA","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"Ural-375":{"name":"Ural-375","coalition":"red","era":"Mid Cold War","label":"Ural-375","shortLabel":"Ural-375","filename":"","type":"Unarmed","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"Ural-4320 APA-5D":{"name":"Ural-4320 APA-5D","coalition":"red","era":"Early Cold War","label":"Ural-4320 APA-5D","shortLabel":"Ural-4320 APA-5D","filename":"","type":"Unarmed","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"Ural-4320-31":{"name":"Ural-4320-31","coalition":"red","era":"Late Cold War","label":"Ural-4320-31","shortLabel":"Ural-4320-31","filename":"","type":"Unarmed","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"Ural-4320T":{"name":"Ural-4320T","coalition":"red","era":"Late Cold War","label":"Ural-4320T","shortLabel":"Ural-4320T","filename":"","type":"Unarmed","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"VAZ Car":{"name":"VAZ Car","coalition":"red","era":"Early Cold War","label":"VAZ Car","shortLabel":"VAZ Car","filename":"","type":"Unarmed","enabled":true},"Vulcan":{"name":"Vulcan","coalition":"blue","era":"Late Cold War","label":"Vulcan","shortLabel":"Vulcan","filename":"","type":"AAA","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"usa_winter":{"name":"USA_Winter","countries":"All"},"isr_summer":{"name":"ISR_Summer","countries":"All"},"isr_spring":{"name":"ISR_Spring","countries":"All"},"usa_autumn":{"name":"USA_Autumn","countries":"All"},"spring":{"name":"Spring","countries":"All"},"isr_winter":{"name":"ISR_Winter","countries":"All"},"isr_autumn":{"name":"ISR_Autumn","countries":"All"},"summer":{"name":"Summer","countries":"All"},"usa_summer":{"name":"USA_Summer","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"usa_spring":{"name":"USA_Spring","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"ZIL-131 KUNG":{"name":"ZIL-131 KUNG","coalition":"red","era":"Early Cold War","label":"ZIL-131 KUNG","shortLabel":"ZIL-131 KUNG","filename":"","type":"Unarmed","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"ZIL-4331":{"name":"ZIL-4331","coalition":"red","era":"Early Cold War","label":"ZIL-4331","shortLabel":"ZIL-4331","filename":"","type":"Unarmed","enabled":true,"liveries":{"winter":{"name":"RUS_Winter","countries":"All"},"spring":{"name":"RUS_Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"RUS_Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"RUS_Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"ZSU-23-4 Shilka":{"name":"ZSU-23-4 Shilka","coalition":"red","era":"Late Cold War","label":"ZSU-23-4 Shilka","shortLabel":"ZSU-23-4 Shilka","filename":"","type":"AAA","enabled":true,"liveries":{"ukr_summer":{"name":"UKR_Summer","countries":"All"},"ukr_spring":{"name":"UKR_Spring","countries":"All"},"winter":{"name":"Winter","countries":"All"},"ukr_autumn":{"name":"UKR_Autumn","countries":"All"},"spring":{"name":"Spring","countries":"All"},"grg_summer":{"name":"GRG_Summer","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"grg_autumn":{"name":"GRG_Autumn","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"ukr_winter":{"name":"UKR_Winter","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"grg_winter":{"name":"GRG_Winter","countries":"All"},"grg_spring":{"name":"GRG_Spring","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"ZU-23 Closed Insurgent":{"name":"ZU-23 Closed Insurgent","coalition":"red","era":"Early Cold War","label":"ZU-23 Closed Insurgent","shortLabel":"ZU-23 Closed Insurgent","filename":"","type":"AAA","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"ZU-23 Emplacement Closed":{"name":"ZU-23 Emplacement Closed","coalition":"red","era":"Early Cold War","label":"ZU-23 Emplacement Closed","shortLabel":"ZU-23 Emplacement Closed","filename":"","type":"AAA","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"ZU-23 Emplacement":{"name":"ZU-23 Emplacement","coalition":"red","era":"Early Cold War","label":"ZU-23 Emplacement","shortLabel":"ZU-23 Emplacement","filename":"","type":"AAA","enabled":true,"liveries":{"grc_summer":{"name":"GRC_Summer","countries":"All"},"grc_spring":{"name":"GRC_Spring","countries":"All"},"grc_autumn":{"name":"GRC_Autumn","countries":"All"},"grc_winter":{"name":"GRC_Winter","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"ZU-23 Insurgent":{"name":"ZU-23 Insurgent","coalition":"red","era":"Early Cold War","label":"ZU-23 Insurgent","shortLabel":"ZU-23 Insurgent","filename":"","type":"AAA","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"ZiL-131 APA-80":{"name":"ZiL-131 APA-80","coalition":"red","era":"Early Cold War","label":"ZiL-131 APA-80","shortLabel":"ZiL-131 APA-80","filename":"","type":"Unarmed","enabled":true,"liveries":{"desert":{"name":"Desert","countries":"All"}}},"house1arm":{"name":"house1arm","coalition":"","era":"","label":"house1arm","shortLabel":"house1arm","filename":"","type":"Structure","enabled":true},"house2arm":{"name":"house2arm","coalition":"","era":"","label":"house2arm","shortLabel":"house2arm","filename":"","type":"Structure","enabled":true},"houseA_arm":{"name":"houseA_arm","coalition":"","era":"","label":"houseA_arm","shortLabel":"houseA_arm","filename":"","type":"Structure","enabled":true},"outpost":{"name":"outpost","coalition":"","era":"","label":"outpost","shortLabel":"outpost","filename":"","type":"Structure","enabled":true},"outpost_road":{"name":"outpost_road","coalition":"","era":"","label":"outpost_road","shortLabel":"outpost_road","filename":"","type":"Structure","enabled":true},"p-19 s-125 sr":{"name":"p-19 s-125 sr","coalition":"red","era":"Mid Cold War","label":"SA-3 Flat Face B","shortLabel":"Flat Face B","filename":"","type":"SAM Search radar","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}},"snr s-125 tr":{"name":"snr s-125 tr","coalition":"red","era":"Early Cold War","label":"SA-3 Low Blow","shortLabel":"snr s-125 tr","range":"Medium","filename":"","type":"SAM Track radar","enabled":true,"liveries":{"winter":{"name":"Winter","countries":"All"},"spring":{"name":"Spring","countries":"All"},"rus_summer":{"name":"RUS_Summer","countries":"All"},"rus_winter":{"name":"RUS_Winter","countries":"All"},"summer":{"name":"Summer","countries":"All"},"rus_autumn":{"name":"RUS_Autumn","countries":"All"},"rus_spring":{"name":"RUS_Spring","countries":"All"},"autumn":{"name":"Autumn","countries":"All"},"desert":{"name":"Desert","countries":"All"}}}} \ No newline at end of file +{ + "1L13 EWR": { + "name": "1L13 EWR", + "coalition": "red", + "era": "Late Cold War", + "label": "Box Spring", + "shortLabel": "1L13 EWR", + "filename": "", + "type": "Radar", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "2B11 mortar": { + "name": "2B11 mortar", + "coalition": "red", + "era": "Late Cold War", + "label": "2B11 mortar", + "shortLabel": "2B11 mortar", + "filename": "", + "type": "Gun Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "2S6 Tunguska": { + "name": "2S6 Tunguska", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-19 Tunguska", + "shortLabel": "SA-19", + "range": "Short", + "filename": "", + "type": "AAA/SAM", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "55G6 EWR": { + "name": "55G6 EWR", + "coalition": "red", + "era": "Early Cold War", + "label": "Tall Rack", + "shortLabel": "55G6 EWR", + "filename": "", + "type": "Radar", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "5p73 s-125 ln": { + "name": "5p73 s-125 ln", + "coalition": "red", + "era": "Early Cold War", + "label": "SA-3 Launcher", + "shortLabel": "5p73 s-125 ln", + "range": "Medium", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "AAV7": { + "name": "AAV7", + "coalition": "blue", + "era": "Mid Cold War", + "label": "AAV7", + "shortLabel": "AAV7", + "filename": "", + "type": "APC", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "ATMZ-5": { + "name": "ATMZ-5", + "coalition": "red", + "era": "Early Cold War", + "label": "ATMZ-5", + "shortLabel": "ATMZ-5", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "ATZ-10": { + "name": "ATZ-10", + "coalition": "red", + "era": "Early Cold War", + "label": "ATZ-10", + "shortLabel": "ATZ-10", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "BMD-1": { + "name": "BMD-1", + "coalition": "red", + "era": "Mid Cold War", + "label": "BMD-1", + "shortLabel": "BMD-1", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "iran - camo": { + "name": "IRAN - camo", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "BMP-1": { + "name": "BMP-1", + "coalition": "red", + "era": "Mid Cold War", + "label": "BMP-1", + "shortLabel": "BMP-1", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grg_summer": { + "name": "GRG_Summer", + "countries": "All" + }, + "grg_autumn": { + "name": "GRG_Autumn", + "countries": "All" + }, + "grg_winter": { + "name": "GRG_Winter", + "countries": "All" + }, + "grg_spring": { + "name": "GRG_Spring", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + } + } + }, + "BMP-2": { + "name": "BMP-2", + "coalition": "red", + "era": "Mid Cold War", + "label": "BMP-2", + "shortLabel": "BMP-2", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "winter": { + "name": "Winter", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "grg_summer": { + "name": "GRG_Summer", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grg_autumn": { + "name": "GRG_Autumn", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grg_winter": { + "name": "GRG_Winter", + "countries": "All" + }, + "grg_spring": { + "name": "GRG_Spring", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "BMP-3": { + "name": "BMP-3", + "coalition": "red", + "era": "Late Cold War", + "label": "BMP-3", + "shortLabel": "BMP-3", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "BRDM-2": { + "name": "BRDM-2", + "coalition": "red", + "era": "Early Cold War", + "label": "BRDM-2", + "shortLabel": "BRDM-2", + "filename": "", + "type": "Reconnaissance", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "BTR-80": { + "name": "BTR-80", + "coalition": "red", + "era": "Late Cold War", + "label": "BTR-80", + "shortLabel": "BTR-80", + "filename": "", + "type": "APC", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "light green autumn": { + "name": "Light Green Autumn", + "countries": "All" + }, + "military police autumn": { + "name": "Military Police Autumn", + "countries": "All" + }, + "light green winter": { + "name": "Light Green Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "military police winter": { + "name": "Military Police Winter", + "countries": "All" + }, + "military police spring": { + "name": "Military Police Spring", + "countries": "All" + }, + "light green spring": { + "name": "Light Green Spring", + "countries": "All" + }, + "green autumn": { + "name": "Green_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "green winter": { + "name": "Green_Winter", + "countries": "All" + }, + "military police summer": { + "name": "Military Police Summer", + "countries": "All" + }, + "light green summer": { + "name": "Light_Green_Summer", + "countries": "All" + }, + "green spring": { + "name": "Green_Spring", + "countries": "All" + }, + "green summer": { + "name": "Green_Summer", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "BTR_D": { + "name": "BTR_D", + "coalition": "red", + "era": "Mid Cold War", + "label": "BTR_D", + "shortLabel": "BTR_D", + "filename": "", + "type": "APC", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Boman": { + "name": "Boman", + "coalition": "blue", + "era": "Late Cold War", + "label": "Grad Fire Direction Manager", + "shortLabel": "Boman", + "filename": "", + "type": "Reconnaissance", + "enabled": true + }, + "Bunker": { + "name": "Bunker", + "coalition": "", + "era": "", + "label": "Bunker", + "shortLabel": "Bunker", + "filename": "", + "type": "Static", + "enabled": true + }, + "Challenger2": { + "name": "Challenger2", + "coalition": "blue", + "era": "Modern", + "label": "Challenger2", + "shortLabel": "Challenger2", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Cobra": { + "name": "Cobra", + "coalition": "blue", + "era": "Modern", + "label": "Otokar Cobra", + "shortLabel": "Cobra", + "filename": "", + "type": "Reconnaissance", + "enabled": true + }, + "Dog Ear radar": { + "name": "Dog Ear radar", + "coalition": "red", + "era": "Mid Cold War", + "label": "Dog Ear", + "shortLabel": "Dog Ear radar", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "winter": { + "name": "Winter", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "GAZ-3307": { + "name": "GAZ-3307", + "coalition": "red", + "era": "Early Cold War", + "label": "GAZ-3307", + "shortLabel": "GAZ-3307", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "GAZ-3308": { + "name": "GAZ-3308", + "coalition": "red", + "era": "Early Cold War", + "label": "GAZ-3308", + "shortLabel": "GAZ-3308", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "GAZ-66": { + "name": "GAZ-66", + "coalition": "red", + "era": "Early Cold War", + "label": "GAZ-66", + "shortLabel": "GAZ-66", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Gepard": { + "name": "Gepard", + "coalition": "blue", + "era": "Late Cold War", + "label": "Gepard", + "shortLabel": "Gepard", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Grad-URAL": { + "name": "Grad-URAL", + "coalition": "red", + "era": "Mid Cold War", + "label": "Grad", + "shortLabel": "Grad", + "filename": "", + "type": "Rocket Artillery", + "enabled": true + }, + "HEMTT TFFT": { + "name": "HEMTT TFFT", + "coalition": "blue", + "era": "Late Cold War", + "label": "HEMTT TFFT", + "shortLabel": "HEMTT TFFT", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Hawk SAM Battery": { + "name": "Hawk SAM Battery", + "coalition": "blue", + "era": "Early Cold War", + "label": "Hawk SAM Battery", + "shortLabel": "Hawk SAM Battery", + "range": "Medium", + "filename": "", + "type": "SAM Site", + "enabled": true + }, + "Hawk cwar": { + "name": "Hawk cwar", + "coalition": "blue", + "era": "Early Cold War", + "label": "Hawk Continous Wave Acquisition Radar", + "shortLabel": "Hawk cwar", + "range": "Long", + "filename": "", + "type": "SAM Track radar", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Hawk ln": { + "name": "Hawk ln", + "coalition": "blue", + "era": "Late Cold War", + "label": "Hawk Launcher", + "shortLabel": "Hawk ln", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "xx337 - 92 sqn blue tail": { + "name": "XX337-92Sqn", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "finland hw-341 grey": { + "name": "HW-341 Grey", + "countries": [ + "FIN" + ] + }, + "xx245 - 2009 raf hawk display": { + "name": "XX245-RAF Hawk Display 2009", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "finland hw-329 green brown": { + "name": "HW-329 Green Brown", + "countries": [ + "FIN" + ] + }, + "swiss u-1268 - byebyehawk": { + "name": "U-1268 - ByeByeHawk", + "countries": [ + "SUI" + ] + }, + "25th fts, vance afb, oklahoma (vn)": { + "name": "25th FTS, Vance AFB, Oklahoma (VN)", + "countries": [ + "USA" + ] + }, + "xx226 - 74sqn 1992-2000": { + "name": "74Sqn XX226 1992-2000", + "countries": [ + "UK" + ] + }, + "finland hw-373 ex-swiss air force": { + "name": "HW-373 Ex-Swiss Air Force", + "countries": [ + "FIN" + ] + }, + "swiss u-1252 - normal": { + "name": "U-1252 - Normal", + "countries": [ + "SUI" + ] + }, + "swiss u-1270 - wallis": { + "name": "U-1270 - Wallis", + "countries": [ + "SUI" + ] + }, + "1st rs, beale afb, california (bb)": { + "name": "1st RS, Beale AFB, California (BB)", + "countries": [ + "USA" + ] + }, + "xx100 - tfc": { + "name": "The Fighter Collection XX100", + "countries": [ + "UK" + ] + }, + "509th bs, whitman afb, missouri (wm)": { + "name": "509th BS, Whiteman AFB, Missouri (WM)", + "countries": [ + "USA" + ] + }, + "xx218 - 208sqn": { + "name": "208Sqn XX218", + "countries": [ + "UK" + ] + }, + "xx316 - fradu royal navy": { + "name": "Royal Navy XX316", + "countries": [ + "UK" + ] + }, + "usaf aggressor 269": { + "name": "USAF-AGGRESSOR-269", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "swiss u-1251 - white": { + "name": "U-1251 - White", + "countries": [ + "SUI" + ] + }, + "xx201 - 2010 raf hawk display": { + "name": "XX201-4FTS-HawkDisplay2010", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "xx175 - fradu royal navy": { + "name": "Royal Navy XX175", + "countries": [ + "UK" + ] + }, + "1018 - united arab emirates": { + "name": "United Arab Emirates Air Force", + "countries": [ + "ARE" + ] + }, + "xx179 - red arrows 1979-2007": { + "name": "Red Arrows 1979-2007", + "countries": [ + "UK" + ] + }, + "xx178 - 1994 raf hawk display": { + "name": "XX178-RAF Hawk Display 1994", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "xx159 - fradu royal navy anniversary": { + "name": "Royal Navy XX159", + "countries": [ + "UK" + ] + }, + "xx189 - 100sqn": { + "name": "100Sqn XX189", + "countries": [ + "TUR", + "RUS", + "USA", + "ISR", + "NETH", + "NOR", + "RSO", + "BEL", + "GER", + "DEN", + "SPN", + "GRG", + "ABH", + "UKR", + "ITA", + "CAN", + "FRA", + "UK" + ] + }, + "xx228 - veao": { + "name": "VEAO, XX228", + "countries": [ + "UK" + ] + }, + "xx316 - 74sqn 1998-2000": { + "name": "74Sqn XX316 1998-2000", + "countries": [ + "UK" + ] + }, + "xx179 - red arrows 2008-2012": { + "name": "Red Arrows 2008-2012", + "countries": [ + "UK" + ] + }, + "12th ftw, randolph afb, texas (ra)": { + "name": "12th FTW, Randolph AFB, Texas (RA)", + "countries": [ + "USA" + ] + }, + "nas meridian, mississippi seven (vt-7)": { + "name": "NAS Meridian, Mississippi Seven (VT-7)", + "countries": [ + "USA" + ] + }, + "88th fts, sheppard afb, texas (en)": { + "name": "88th FTS, Sheppard AFB, Texas (EN)", + "countries": [ + "USA" + ] + }, + "xx159 - 2004 raf hawk display": { + "name": "XX159-RAF Hawk Display 2004", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + } + } + }, + "Hawk pcp": { + "name": "Hawk pcp", + "coalition": "blue", + "era": "Late Cold War", + "label": "Hawk Platoon Command Post", + "shortLabel": "Hawk pcp", + "range": "Medium", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Hawk sr": { + "name": "Hawk sr", + "coalition": "blue", + "era": "Early Cold War", + "label": "Hawk Search radar", + "shortLabel": "Hawk sr", + "range": "Long", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "xx337 - 92 sqn blue tail": { + "name": "XX337-92Sqn", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "finland hw-341 grey": { + "name": "HW-341 Grey", + "countries": [ + "FIN" + ] + }, + "xx245 - 2009 raf hawk display": { + "name": "XX245-RAF Hawk Display 2009", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "finland hw-329 green brown": { + "name": "HW-329 Green Brown", + "countries": [ + "FIN" + ] + }, + "swiss u-1268 - byebyehawk": { + "name": "U-1268 - ByeByeHawk", + "countries": [ + "SUI" + ] + }, + "25th fts, vance afb, oklahoma (vn)": { + "name": "25th FTS, Vance AFB, Oklahoma (VN)", + "countries": [ + "USA" + ] + }, + "xx226 - 74sqn 1992-2000": { + "name": "74Sqn XX226 1992-2000", + "countries": [ + "UK" + ] + }, + "finland hw-373 ex-swiss air force": { + "name": "HW-373 Ex-Swiss Air Force", + "countries": [ + "FIN" + ] + }, + "swiss u-1252 - normal": { + "name": "U-1252 - Normal", + "countries": [ + "SUI" + ] + }, + "swiss u-1270 - wallis": { + "name": "U-1270 - Wallis", + "countries": [ + "SUI" + ] + }, + "1st rs, beale afb, california (bb)": { + "name": "1st RS, Beale AFB, California (BB)", + "countries": [ + "USA" + ] + }, + "xx100 - tfc": { + "name": "The Fighter Collection XX100", + "countries": [ + "UK" + ] + }, + "509th bs, whitman afb, missouri (wm)": { + "name": "509th BS, Whiteman AFB, Missouri (WM)", + "countries": [ + "USA" + ] + }, + "xx218 - 208sqn": { + "name": "208Sqn XX218", + "countries": [ + "UK" + ] + }, + "xx316 - fradu royal navy": { + "name": "Royal Navy XX316", + "countries": [ + "UK" + ] + }, + "usaf aggressor 269": { + "name": "USAF-AGGRESSOR-269", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "swiss u-1251 - white": { + "name": "U-1251 - White", + "countries": [ + "SUI" + ] + }, + "xx201 - 2010 raf hawk display": { + "name": "XX201-4FTS-HawkDisplay2010", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "xx175 - fradu royal navy": { + "name": "Royal Navy XX175", + "countries": [ + "UK" + ] + }, + "1018 - united arab emirates": { + "name": "United Arab Emirates Air Force", + "countries": [ + "ARE" + ] + }, + "xx179 - red arrows 1979-2007": { + "name": "Red Arrows 1979-2007", + "countries": [ + "UK" + ] + }, + "xx178 - 1994 raf hawk display": { + "name": "XX178-RAF Hawk Display 1994", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "xx159 - fradu royal navy anniversary": { + "name": "Royal Navy XX159", + "countries": [ + "UK" + ] + }, + "xx189 - 100sqn": { + "name": "100Sqn XX189", + "countries": [ + "TUR", + "RUS", + "USA", + "ISR", + "NETH", + "NOR", + "RSO", + "BEL", + "GER", + "DEN", + "SPN", + "GRG", + "ABH", + "UKR", + "ITA", + "CAN", + "FRA", + "UK" + ] + }, + "xx228 - veao": { + "name": "VEAO, XX228", + "countries": [ + "UK" + ] + }, + "xx316 - 74sqn 1998-2000": { + "name": "74Sqn XX316 1998-2000", + "countries": [ + "UK" + ] + }, + "xx179 - red arrows 2008-2012": { + "name": "Red Arrows 2008-2012", + "countries": [ + "UK" + ] + }, + "12th ftw, randolph afb, texas (ra)": { + "name": "12th FTW, Randolph AFB, Texas (RA)", + "countries": [ + "USA" + ] + }, + "nas meridian, mississippi seven (vt-7)": { + "name": "NAS Meridian, Mississippi Seven (VT-7)", + "countries": [ + "USA" + ] + }, + "88th fts, sheppard afb, texas (en)": { + "name": "88th FTS, Sheppard AFB, Texas (EN)", + "countries": [ + "USA" + ] + }, + "xx159 - 2004 raf hawk display": { + "name": "XX159-RAF Hawk Display 2004", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + } + } + }, + "Hawk tr": { + "name": "Hawk tr", + "coalition": "blue", + "era": "Early Cold War", + "label": "Hawk Track radar", + "shortLabel": "Hawk tr", + "range": "Medium", + "filename": "", + "type": "SAM Track radar", + "enabled": true, + "liveries": { + "xx337 - 92 sqn blue tail": { + "name": "XX337-92Sqn", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "finland hw-341 grey": { + "name": "HW-341 Grey", + "countries": [ + "FIN" + ] + }, + "xx245 - 2009 raf hawk display": { + "name": "XX245-RAF Hawk Display 2009", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "finland hw-329 green brown": { + "name": "HW-329 Green Brown", + "countries": [ + "FIN" + ] + }, + "swiss u-1268 - byebyehawk": { + "name": "U-1268 - ByeByeHawk", + "countries": [ + "SUI" + ] + }, + "25th fts, vance afb, oklahoma (vn)": { + "name": "25th FTS, Vance AFB, Oklahoma (VN)", + "countries": [ + "USA" + ] + }, + "xx226 - 74sqn 1992-2000": { + "name": "74Sqn XX226 1992-2000", + "countries": [ + "UK" + ] + }, + "finland hw-373 ex-swiss air force": { + "name": "HW-373 Ex-Swiss Air Force", + "countries": [ + "FIN" + ] + }, + "swiss u-1252 - normal": { + "name": "U-1252 - Normal", + "countries": [ + "SUI" + ] + }, + "swiss u-1270 - wallis": { + "name": "U-1270 - Wallis", + "countries": [ + "SUI" + ] + }, + "1st rs, beale afb, california (bb)": { + "name": "1st RS, Beale AFB, California (BB)", + "countries": [ + "USA" + ] + }, + "xx100 - tfc": { + "name": "The Fighter Collection XX100", + "countries": [ + "UK" + ] + }, + "509th bs, whitman afb, missouri (wm)": { + "name": "509th BS, Whiteman AFB, Missouri (WM)", + "countries": [ + "USA" + ] + }, + "xx218 - 208sqn": { + "name": "208Sqn XX218", + "countries": [ + "UK" + ] + }, + "xx316 - fradu royal navy": { + "name": "Royal Navy XX316", + "countries": [ + "UK" + ] + }, + "usaf aggressor 269": { + "name": "USAF-AGGRESSOR-269", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "swiss u-1251 - white": { + "name": "U-1251 - White", + "countries": [ + "SUI" + ] + }, + "xx201 - 2010 raf hawk display": { + "name": "XX201-4FTS-HawkDisplay2010", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "xx175 - fradu royal navy": { + "name": "Royal Navy XX175", + "countries": [ + "UK" + ] + }, + "1018 - united arab emirates": { + "name": "United Arab Emirates Air Force", + "countries": [ + "ARE" + ] + }, + "xx179 - red arrows 1979-2007": { + "name": "Red Arrows 1979-2007", + "countries": [ + "UK" + ] + }, + "xx178 - 1994 raf hawk display": { + "name": "XX178-RAF Hawk Display 1994", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "xx159 - fradu royal navy anniversary": { + "name": "Royal Navy XX159", + "countries": [ + "UK" + ] + }, + "xx189 - 100sqn": { + "name": "100Sqn XX189", + "countries": [ + "TUR", + "RUS", + "USA", + "ISR", + "NETH", + "NOR", + "RSO", + "BEL", + "GER", + "DEN", + "SPN", + "GRG", + "ABH", + "UKR", + "ITA", + "CAN", + "FRA", + "UK" + ] + }, + "xx228 - veao": { + "name": "VEAO, XX228", + "countries": [ + "UK" + ] + }, + "xx316 - 74sqn 1998-2000": { + "name": "74Sqn XX316 1998-2000", + "countries": [ + "UK" + ] + }, + "xx179 - red arrows 2008-2012": { + "name": "Red Arrows 2008-2012", + "countries": [ + "UK" + ] + }, + "12th ftw, randolph afb, texas (ra)": { + "name": "12th FTW, Randolph AFB, Texas (RA)", + "countries": [ + "USA" + ] + }, + "nas meridian, mississippi seven (vt-7)": { + "name": "NAS Meridian, Mississippi Seven (VT-7)", + "countries": [ + "USA" + ] + }, + "88th fts, sheppard afb, texas (en)": { + "name": "88th FTS, Sheppard AFB, Texas (EN)", + "countries": [ + "USA" + ] + }, + "xx159 - 2004 raf hawk display": { + "name": "XX159-RAF Hawk Display 2004", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + } + } + }, + "Hummer": { + "name": "Hummer", + "coalition": "blue", + "era": "Mid Cold War", + "label": "Hummer", + "shortLabel": "Hummer", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "IKARUS Bus": { + "name": "IKARUS Bus", + "coalition": "red", + "era": "Mid Cold War", + "label": "IKARUS Bus", + "shortLabel": "IKARUS Bus", + "filename": "", + "type": "Unarmed", + "enabled": true + }, + "Igla manpad INS": { + "name": "Igla manpad INS", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-18 Igla manpad INS", + "shortLabel": "Igla manpad INS", + "range": "Short", + "filename": "", + "type": "MANPADS", + "enabled": true, + "liveries": { + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + } + }, + "Infantry AK": { + "name": "Infantry AK", + "coalition": "red", + "era": "Mid Cold War", + "label": "Infantry AK", + "shortLabel": "Infantry AK", + "filename": "", + "type": "Infantry", + "enabled": true, + "muzzleVelocity": 860, + "barrelHeight": 0.9 + }, + "KAMAZ Truck": { + "name": "KAMAZ Truck", + "coalition": "red", + "era": "Mid Cold War", + "label": "KAMAZ Truck", + "shortLabel": "KAMAZ Truck", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Kub 1S91 str": { + "name": "Kub 1S91 str", + "coalition": "red", + "era": "Mid Cold War", + "label": "SA-6 Straight flush", + "shortLabel": "Kub 1S91 str", + "range": "Medium", + "filename": "", + "type": "SAM Search/Track radar", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Kub 2P25 ln": { + "name": "Kub 2P25 ln", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-6 Launcher", + "shortLabel": "Kub 2P25 ln", + "range": "Medium", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "LAV-25": { + "name": "LAV-25", + "coalition": "blue", + "era": "Late Cold War", + "label": "LAV-25", + "shortLabel": "LAV-25", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "aus_winter": { + "name": "AUS_Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "aus_summer": { + "name": "AUS_Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "sand": { + "name": "sand", + "countries": "All" + }, + "green": { + "name": "green", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "LAZ Bus": { + "name": "LAZ Bus", + "coalition": "red", + "era": "Early Cold War", + "label": "LAZ Bus", + "shortLabel": "LAZ Bus", + "filename": "", + "type": "Unarmed", + "enabled": true + }, + "Leclerc": { + "name": "Leclerc", + "coalition": "blue", + "era": "Modern", + "label": "Leclerc", + "shortLabel": "Leclerc", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Leopard-2": { + "name": "Leopard-2", + "coalition": "blue", + "era": "Late Cold War", + "label": "Leopard-2", + "shortLabel": "Leopard-2", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "can_spring": { + "name": "CAN_spring", + "countries": "All" + }, + "winter": { + "name": "winter", + "countries": "All" + }, + "spn_summer": { + "name": "SPN_Summer", + "countries": "All" + }, + "de_desert_winter": { + "name": "winter", + "countries": "All" + }, + "de_desert_spring": { + "name": "spring", + "countries": "All" + }, + "de_summer": { + "name": "summer", + "countries": "All" + }, + "den_autumn": { + "name": "DEN_autumn", + "countries": "All" + }, + "den_spring": { + "name": "DEN_spring", + "countries": "All" + }, + "de_winter": { + "name": "winter", + "countries": "All" + }, + "neth_summer": { + "name": "NETH_summer", + "countries": "All" + }, + "de_autumn": { + "name": "winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_summer", + "countries": "All" + }, + "spring": { + "name": "spring", + "countries": "All" + }, + "summer": { + "name": "summer", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_autumn", + "countries": "All" + }, + "autumn": { + "name": "autumn", + "countries": "All" + }, + "de_desert_summer": { + "name": "DE_Desert_summer", + "countries": "All" + }, + "desert_summer": { + "name": "Desert_summer", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_winter", + "countries": "All" + }, + "den_summer": { + "name": "DEN_summer", + "countries": "All" + }, + "desert_autumn": { + "name": "Desert_autumn", + "countries": "All" + }, + "de_spring": { + "name": "spring", + "countries": "All" + }, + "den_winter": { + "name": "DEN_winter", + "countries": "All" + }, + "fin_winter": { + "name": "FIN_winter", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_spring", + "countries": "All" + }, + "desert_winter": { + "name": "Desert_winter", + "countries": "All" + }, + "can_winter": { + "name": "CAN_winter", + "countries": "All" + }, + "de_desert_autumn": { + "name": "autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + }, + "desert_spring": { + "name": "Desert_spring", + "countries": "All" + }, + "fin_spring": { + "name": "FIN_spring", + "countries": "All" + }, + "fin_summer": { + "name": "FIN_summer", + "countries": "All" + }, + "can_summer": { + "name": "CAN_summer", + "countries": "All" + }, + "can_autumn": { + "name": "CAN_autumn", + "countries": "All" + }, + "neth_winter": { + "name": "NETH_winter", + "countries": "All" + }, + "spn_winter": { + "name": "SPN_Winter", + "countries": "All" + }, + "fin_autumn": { + "name": "FIN_autumn", + "countries": "All" + } + } + }, + "Leopard1A3": { + "name": "Leopard1A3", + "coalition": "blue", + "era": "Mid Cold War", + "label": "Leopard1A3", + "shortLabel": "Leopard1A3", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "M 818": { + "name": "M 818", + "coalition": "blue", + "era": "Early Cold War", + "label": "M 818", + "shortLabel": "M 818", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "spring": { + "name": "spring", + "countries": "All" + }, + "winter": { + "name": "winter", + "countries": "All" + }, + "autumn": { + "name": "autumn", + "countries": "All" + }, + "summer": { + "name": "summer", + "countries": "All" + } + } + }, + "M-1 Abrams": { + "name": "M-1 Abrams", + "coalition": "blue", + "era": "Late Cold War", + "label": "M-1 Abrams", + "shortLabel": "M-1 Abrams", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "M-109": { + "name": "M-109", + "coalition": "blue", + "era": "Early Cold War", + "label": "M-109 Paladin", + "shortLabel": "M-109", + "filename": "", + "type": "Gun Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "M-113": { + "name": "M-113", + "coalition": "blue", + "era": "Early Cold War", + "label": "M-113", + "shortLabel": "M-113", + "filename": "", + "type": "APC", + "enabled": true, + "liveries": { + "winter": { + "name": "winter", + "countries": "All" + }, + "grc_autumn_med": { + "name": "GRC_autumn", + "countries": "All" + }, + "winter_med": { + "name": "winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_summer", + "countries": "All" + }, + "spring": { + "name": "spring", + "countries": "All" + }, + "summer": { + "name": "summer", + "countries": "All" + }, + "grc_spring_med": { + "name": "GRC_spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_autumn", + "countries": "All" + }, + "autumn": { + "name": "autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_winter", + "countries": "All" + }, + "green_med": { + "name": "green", + "countries": "All" + }, + "green": { + "name": "green", + "countries": "All" + }, + "spring_med": { + "name": "spring", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_spring", + "countries": "All" + }, + "grc_winter_med": { + "name": "GRC_winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + }, + "grc_summer_med": { + "name": "GRC_summer", + "countries": "All" + }, + "autumn_med": { + "name": "autumn", + "countries": "All" + }, + "desert_med": { + "name": "Desert", + "countries": "All" + }, + "summer_med": { + "name": "summer", + "countries": "All" + } + } + }, + "M-2 Bradley": { + "name": "M-2 Bradley", + "coalition": "blue", + "era": "Late Cold War", + "label": "M-2A2 Bradley", + "shortLabel": "M-2 Bradley", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "M-60": { + "name": "M-60", + "coalition": "blue", + "era": "Early Cold War", + "label": "M-60", + "shortLabel": "M-60", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "winter", + "countries": "All" + }, + "spring": { + "name": "spring", + "countries": "All" + }, + "summer": { + "name": "summer", + "countries": "All" + }, + "autumn": { + "name": "autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "M1043 HMMWV Armament": { + "name": "M1043 HMMWV Armament", + "coalition": "blue", + "era": "Late Cold War", + "label": "HMMWV M2 Browning", + "shortLabel": "HMMWV M2", + "filename": "", + "type": "Reconnaissance", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "M1045 HMMWV TOW": { + "name": "M1045 HMMWV TOW", + "coalition": "red", + "era": "Late Cold War", + "label": "HMMWV TOW", + "shortLabel": "HMMWV TOW", + "filename": "", + "type": "Reconnaissance", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "M1097 Avenger": { + "name": "M1097 Avenger", + "coalition": "blue", + "era": "Modern", + "label": "M1097 Avenger", + "shortLabel": "M1097 Avenger", + "filename": "", + "type": "SAM", + "enabled": true + }, + "M1126 Stryker ICV": { + "name": "M1126 Stryker ICV", + "coalition": "blue", + "era": "Modern", + "label": "Stryker MG", + "shortLabel": "Stryker MG", + "filename": "", + "type": "APC", + "enabled": true + }, + "M1128 Stryker MGS": { + "name": "M1128 Stryker MGS", + "coalition": "blue", + "era": "Modern", + "label": "M1128 Stryker MGS", + "shortLabel": "M1128 Stryker MGS", + "filename": "", + "type": "SPG", + "enabled": true + }, + "M1134 Stryker ATGM": { + "name": "M1134 Stryker ATGM", + "coalition": "blue", + "era": "Modern", + "label": "Stryker ATGM", + "shortLabel": "Stryker ATGM", + "filename": "", + "type": "IFV", + "enabled": true + }, + "M48 Chaparral": { + "name": "M48 Chaparral", + "coalition": "blue", + "era": "Late Cold War", + "label": "M48 Chaparral", + "shortLabel": "M48 Chaparral", + "filename": "", + "type": "SAM", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "usa_winter": { + "name": "USA_Winter", + "countries": "All" + }, + "isr_summer": { + "name": "ISR_Summer", + "countries": "All" + }, + "isr_spring": { + "name": "ISR_Spring", + "countries": "All" + }, + "usa_autumn": { + "name": "USA_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "isr_winter": { + "name": "ISR_Winter", + "countries": "All" + }, + "isr_autumn": { + "name": "ISR_Autumn", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "usa_summer": { + "name": "USA_Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "usa_spring": { + "name": "USA_Spring", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "M6 Linebacker": { + "name": "M6 Linebacker", + "coalition": "blue", + "era": "Late Cold War", + "label": "M6 Linebacker", + "shortLabel": "M6 Linebacker", + "filename": "", + "type": "SAM", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "M978 HEMTT Tanker": { + "name": "M978 HEMTT Tanker", + "coalition": "blue", + "era": "Mid Cold War", + "label": "M978 HEMTT Tanker", + "shortLabel": "M978 HEMTT Tanker", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "MAZ-6303": { + "name": "MAZ-6303", + "coalition": "red", + "era": "Mid Cold War", + "label": "MAZ-6303", + "shortLabel": "MAZ-6303", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "winter", + "countries": "All" + }, + "spring": { + "name": "spring", + "countries": "All" + }, + "summer": { + "name": "summer", + "countries": "All" + }, + "autumn": { + "name": "autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "MCV-80": { + "name": "MCV-80", + "coalition": "blue", + "era": "Late Cold War", + "label": "Warrior IFV", + "shortLabel": "Warrior", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "MLRS": { + "name": "MLRS", + "coalition": "blue", + "era": "Late Cold War", + "label": "M270", + "shortLabel": "M270", + "filename": "", + "type": "Rocket Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "MTLB": { + "name": "MTLB", + "coalition": "red", + "era": "Mid Cold War", + "label": "MT-LB", + "shortLabel": "MT-LB", + "filename": "", + "type": "APC", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Marder": { + "name": "Marder", + "coalition": "blue", + "era": "Late Cold War", + "label": "Marder", + "shortLabel": "Marder", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Osa 9A33 ln": { + "name": "Osa 9A33 ln", + "coalition": "red", + "era": "Mid Cold War", + "label": "SA-8 Launcher", + "shortLabel": "Osa 9A33 ln", + "range": "Short", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Paratrooper AKS-74": { + "name": "Paratrooper AKS-74", + "coalition": "red", + "era": "Modern", + "label": "Paratrooper AKS-74", + "shortLabel": "Paratrooper AKS-74", + "filename": "", + "type": "Infantry", + "enabled": true + }, + "Paratrooper RPG-16": { + "name": "Paratrooper RPG-16", + "coalition": "red", + "era": "Modern", + "label": "Paratrooper RPG-16", + "shortLabel": "Paratrooper RPG-16", + "filename": "", + "type": "Infantry", + "enabled": true + }, + "Patriot AMG": { + "name": "Patriot AMG", + "coalition": "blue", + "era": "Modern", + "label": "Patriot Antenna Mast Group", + "shortLabel": "Patriot AMG", + "range": "Long", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Patriot ECS": { + "name": "Patriot ECS", + "coalition": "blue", + "era": "Modern", + "label": "Patriot Engagement Control Station", + "shortLabel": "Patriot ECS", + "range": "Long", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Patriot EPP": { + "name": "Patriot EPP", + "coalition": "blue", + "era": "Late Cold War", + "label": "Patriot Electric Power Plant", + "shortLabel": "Patriot EPP", + "range": "Long", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Patriot cp": { + "name": "Patriot cp", + "coalition": "blue", + "era": "Late Cold War", + "label": "Patriot Command Post", + "shortLabel": "Patriot cp", + "range": "Long", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Patriot ln": { + "name": "Patriot ln", + "coalition": "blue", + "era": "Late Cold War", + "label": "Patriot Launcher", + "shortLabel": "Patriot ln", + "range": "Long", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Patriot site": { + "name": "Patriot site", + "coalition": "blue", + "era": "Late Cold War", + "label": "Patriot site", + "shortLabel": "Patriot site", + "range": "Long", + "filename": "", + "type": "SAM Site", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Patriot str": { + "name": "Patriot str", + "coalition": "blue", + "era": "Late Cold War", + "label": "Patriot Search/Track radar", + "shortLabel": "Patriot str", + "range": "Medium", + "filename": "", + "type": "SAM Search/Track radar", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Predator GCS": { + "name": "Predator GCS", + "coalition": "blue", + "era": "Late Cold War", + "label": "Predator GCS", + "shortLabel": "Predator GCS", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "usaf standard": { + "name": "USAF Standard", + "countries": [ + "USA" + ] + } + } + }, + "Predator TrojanSpirit": { + "name": "Predator TrojanSpirit", + "coalition": "blue", + "era": "Late Cold War", + "label": "Predator TrojanSpirit", + "shortLabel": "Predator TrojanSpirit", + "filename": "", + "type": "Unarmed", + "enabled": true + }, + "RLS_19J6": { + "name": "RLS_19J6", + "coalition": "Red", + "era": "Mid Cold War", + "label": "SA-5 Thin Shield", + "shortLabel": "RLS 19J6", + "range": "Long", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "spring": { + "name": "spring", + "countries": "All" + }, + "winter": { + "name": "winter", + "countries": "All" + }, + "autumn": { + "name": "autumn", + "countries": "All" + }, + "summer": { + "name": "summer", + "countries": "All" + } + } + }, + "RPC_5N62V": { + "name": "RPC_5N62V", + "coalition": "Red", + "era": "Mid Cold War", + "label": "SA-5 Square Pair", + "shortLabel": "RPC 5N62V", + "range": "Long", + "filename": "", + "type": "SAM Track radar", + "enabled": true, + "liveries": { + "desert_spring": { + "name": "S-200_Radar_Desert_Spring", + "countries": "All" + }, + "cam_autumn": { + "name": "S-200_Radar_Cam_Autumn", + "countries": "All" + }, + "cam_spring": { + "name": "S-200_Radar_Cam_Spring", + "countries": "All" + }, + "green_summer": { + "name": "S-200_Radar_Green_Summer", + "countries": "All" + }, + "green_winter": { + "name": "S-200_Radar_Green_Winter", + "countries": "All" + }, + "cam_summer": { + "name": "S-200_Radar_Cam_Summer", + "countries": "All" + }, + "desert_winter": { + "name": "S-200_Radar_Desert_Winter", + "countries": "All" + }, + "syria_autumn": { + "name": "S-200_Radar_Syria_Autumn", + "countries": "All" + }, + "syria_summer": { + "name": "S-200_Radar_Syria_Summer", + "countries": "All" + }, + "syria_winter": { + "name": "S-200_Radar_Syria_Winter", + "countries": "All" + }, + "green_spring": { + "name": "S-200_Radar_Green_Spring", + "countries": "All" + }, + "syria_spring": { + "name": "S-200_Radar_Syria_Spring", + "countries": "All" + }, + "desert_summer": { + "name": "S-200_Radar_Desert_Summer", + "countries": "All" + }, + "green_autumn": { + "name": "S-200_Radar_Green_Autumn", + "countries": "All" + }, + "desert_autumn": { + "name": "S-200_Radar_Desert_Autumn", + "countries": "All" + }, + "cam_winter": { + "name": "S-200_Radar_Cam_Winter", + "countries": "All" + } + } + }, + "Roland ADS": { + "name": "Roland ADS", + "coalition": "blue", + "era": "Late Cold War", + "label": "Roland ADS", + "shortLabel": "Roland ADS", + "filename": "", + "type": "SAM", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Roland Radar": { + "name": "Roland Radar", + "coalition": "blue", + "era": "Mid Cold War", + "label": "Roland Search radar", + "shortLabel": "Roland Radar", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "S-200_Launcher": { + "name": "S-200_Launcher", + "coalition": "Red", + "era": "Mid Cold War", + "label": "SA-5 Launcher", + "shortLabel": "S-200 Launcher", + "range": "Long", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "desert_spring": { + "name": "S-200_Launcher_Desert_Spring", + "countries": "All" + }, + "cam_autumn": { + "name": "S-200_Cam_Autumn", + "countries": "All" + }, + "cam_spring": { + "name": "S-200_Launcher_Cam_Spring", + "countries": "All" + }, + "green_summer": { + "name": "S-200_Launcher_Green_Summer", + "countries": "All" + }, + "green_winter": { + "name": "S-200_Launcher_Green_Winter", + "countries": "All" + }, + "cam_summer": { + "name": "S-200_Launcher_Cam_Summer", + "countries": "All" + }, + "desert_winter": { + "name": "S-200_Launcher_Desert_Winter", + "countries": "All" + }, + "syria_autumn": { + "name": "S-200_Launcher_Syria_Autumn", + "countries": "All" + }, + "syria_summer": { + "name": "S-200_Launcher_Syria_Summer", + "countries": "All" + }, + "syria_winter": { + "name": "S-200_Launcher_Syria_Winter", + "countries": "All" + }, + "green_spring": { + "name": "S-200_Launcher_Green_Spring", + "countries": "All" + }, + "syria_spring": { + "name": "S-200_Launcher_Syria_Spring", + "countries": "All" + }, + "desert_summer": { + "name": "S-200_Launcher_Desert_Summer", + "countries": "All" + }, + "green_autumn": { + "name": "S-200_Launcher_Green_Autumn", + "countries": "All" + }, + "desert_autumn": { + "name": "S-200_Launcher_Desert_Autumn", + "countries": "All" + }, + "cam_winter": { + "name": "S-200_Launcher_Cam_Winter", + "countries": "All" + } + } + }, + "S-300PS 40B6M tr": { + "name": "S-300PS 40B6M tr", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 Tin Shield", + "shortLabel": "S-300PS 40B6M tr", + "range": "Long", + "filename": "", + "type": "SAM Track radar", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "S-300PS 40B6MD sr": { + "name": "S-300PS 40B6MD sr", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 Clam Shell", + "shortLabel": "S-300PS 40B6MD sr", + "range": "Long", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "S-300PS 54K6 cp": { + "name": "S-300PS 54K6 cp", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 Command Post", + "shortLabel": "S-300PS 54K6 cp", + "range": "Long", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "S-300PS 5P85C ln": { + "name": "S-300PS 5P85C ln", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 Launcher (5P85C)", + "shortLabel": "S-300PS 5P85C ln", + "range": "Long", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "S-300PS 5P85D ln": { + "name": "S-300PS 5P85D ln", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 Launcher (5P85D)", + "shortLabel": "S-300PS 5P85D ln", + "range": "Long", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "S-300PS 64H6E sr": { + "name": "S-300PS 64H6E sr", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 Big Bird", + "shortLabel": "S-300PS 64H6E sr", + "range": "Long", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "SA-10 SAM Battery": { + "name": "SA-10 SAM Battery", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 SAM Battery", + "shortLabel": "SA-10 SAM Battery", + "range": "Long", + "filename": "", + "type": "SAM Site", + "enabled": true + }, + "SA-11 Buk CC 9S470M1": { + "name": "SA-11 Buk CC 9S470M1", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-11 Command Post", + "shortLabel": "SA-11 Buk CC 9S470M1", + "range": "Medium", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "winter": { + "name": "Winter", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "SA-11 Buk LN 9A310M1": { + "name": "SA-11 Buk LN 9A310M1", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-11 Launcher", + "shortLabel": "SA-11 Buk LN 9A310M1", + "range": "Medium", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "SA-11 Buk SR 9S18M1": { + "name": "SA-11 Buk SR 9S18M1", + "coalition": "red", + "era": "Mid Cold War", + "label": "SA-11 Snown Drift", + "shortLabel": "SA-11 Buk SR 9S18M1", + "range": "Long", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "winter": { + "name": "Winter", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "SA-11 SAM Battery": { + "name": "SA-11 SAM Battery", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-11 SAM Battery", + "shortLabel": "SA-11 SAM Battery", + "range": "Medium", + "filename": "", + "type": "SAM Site", + "enabled": true + }, + "SA-18 Igla manpad": { + "name": "SA-18 Igla manpad", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-18 Igla manpad", + "shortLabel": "SA-18 Igla manpad", + "range": "Short", + "filename": "", + "type": "MANPADS", + "enabled": true + }, + "SA-18 Igla-S manpad": { + "name": "SA-18 Igla-S manpad", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-18 Igla-S manpad", + "shortLabel": "SA-18 Igla-S manpad", + "range": "Short", + "filename": "", + "type": "MANPADS", + "enabled": true + }, + "SA-2 SAM Battery": { + "name": "SA-2 SAM Battery", + "coalition": "red", + "era": "Early Cold War", + "label": "SA-2 SAM Battery", + "shortLabel": "SA-2 SAM Battery", + "range": "Long", + "filename": "", + "type": "SAM Site", + "enabled": true + }, + "SA-3 SAM Battery": { + "name": "SA-3 SAM Battery", + "coalition": "red", + "era": "Early Cold War", + "label": "SA-3 SAM Battery", + "shortLabel": "SA-3 SAM Battery", + "range": "Medium", + "filename": "", + "type": "SAM Site", + "enabled": true + }, + "SA-5 SAM Battery": { + "name": "SA-5 SAM Battery", + "coalition": "Red", + "era": "Mid Cold War", + "label": "SA-5 SAM Battery", + "shortLabel": "SA-5 SAM Battery", + "range": "Long", + "filename": "", + "type": "SAM Site", + "enabled": true + }, + "SA-6 SAM Battery": { + "name": "SA-6 SAM Battery", + "coalition": "red", + "era": "Mid Cold War", + "label": "SA-6 SAM Battery", + "shortLabel": "SA-6 SAM Battery", + "range": "Medium", + "filename": "", + "type": "SAM Site", + "enabled": true + }, + "SA-8 Osa LD 9T217": { + "name": "SA-8 Osa LD 9T217", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-8 Osa LD 9T217", + "shortLabel": "SA-8 Osa LD 9T217", + "range": "Short", + "filename": "", + "type": "SAM", + "enabled": true + }, + "SAU 2-C9": { + "name": "SAU 2-C9", + "coalition": "red", + "era": "Mid Cold War", + "label": "SAU Nona", + "shortLabel": "SAU Nona", + "filename": "", + "type": "Gun Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "SAU Akatsia": { + "name": "SAU Akatsia", + "coalition": "red", + "era": "Mid Cold War", + "label": "SAU Akatsia", + "shortLabel": "SAU Akatsia", + "filename": "", + "type": "Gun Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "SAU Gvozdika": { + "name": "SAU Gvozdika", + "coalition": "red", + "era": "Mid Cold War", + "label": "SAU Gvozdika", + "shortLabel": "SAU Gvozdika", + "filename": "", + "type": "Gun Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "SAU Msta": { + "name": "SAU Msta", + "coalition": "red", + "era": "Late Cold War", + "label": "SAU Msta", + "shortLabel": "SAU Msta", + "filename": "", + "type": "Gun Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "SKP-11": { + "name": "SKP-11", + "coalition": "red", + "era": "Early Cold War", + "label": "SKP-11", + "shortLabel": "SKP-11", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "SNR_75V": { + "name": "SNR_75V", + "coalition": "Red", + "era": "Early Cold War", + "label": "SA-2 Fan Song", + "shortLabel": "SNR 75V", + "filename": "", + "type": "SAM Track radar", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "S_75M_Volhov": { + "name": "S_75M_Volhov", + "coalition": "Red", + "era": "Early Cold War", + "label": "SA-2 Launcher", + "shortLabel": "S75M Volhov", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Sandbox": { + "name": "Sandbox", + "coalition": "", + "era": "", + "label": "Sandbox", + "shortLabel": "Sandbox", + "filename": "", + "type": "Static", + "enabled": true + }, + "Smerch": { + "name": "Smerch", + "coalition": "red", + "era": "Late Cold War", + "label": "Smerch", + "shortLabel": "Smerch", + "filename": "", + "type": "Rocket Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Soldier AK": { + "name": "Soldier AK", + "coalition": "red", + "era": "Early Cold War", + "label": "Soldier AK", + "shortLabel": "Soldier AK", + "filename": "", + "type": "Infantry", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + } + }, + "Soldier M249": { + "name": "Soldier M249", + "coalition": "blue", + "era": "Late Cold War", + "label": "Soldier M249", + "shortLabel": "Soldier M249", + "filename": "", + "type": "Infantry", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + } + }, + "Soldier M4 GRG": { + "name": "Soldier M4 GRG", + "coalition": "blue", + "era": "Mid Cold War", + "label": "Soldier M4 GRG", + "shortLabel": "Soldier M4 GRG", + "filename": "", + "type": "Infantry", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + } + }, + "Soldier M4": { + "name": "Soldier M4", + "coalition": "blue", + "era": "Mid Cold War", + "label": "Soldier M4", + "shortLabel": "Soldier M4", + "filename": "", + "type": "Infantry", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + } + }, + "Soldier RPG": { + "name": "Soldier RPG", + "coalition": "red", + "era": "Mid Cold War", + "label": "Soldier RPG", + "shortLabel": "Soldier RPG", + "filename": "", + "type": "Infantry", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + } + }, + "Stinger comm dsr": { + "name": "Stinger comm dsr", + "coalition": "red", + "era": "Late Cold War", + "label": "Stinger comm dsr", + "shortLabel": "Stinger comm dsr", + "range": "Short", + "filename": "", + "type": "MANPADS", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "multicam": { + "name": "multicam", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + } + }, + "Stinger comm": { + "name": "Stinger comm", + "coalition": "blue", + "era": "Late Cold War", + "label": "Stinger comm", + "shortLabel": "Stinger comm", + "range": "Short", + "filename": "", + "type": "MANPADS", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "multicam": { + "name": "multicam", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + } + }, + "Stinger manpad GRG": { + "name": "Stinger manpad GRG", + "coalition": "blue", + "era": "Late Cold War", + "label": "Stinger manpad GRG", + "shortLabel": "Stinger manpad GRG", + "range": "Short", + "filename": "", + "type": "MANPADS", + "enabled": true, + "liveries": { + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + } + }, + "Stinger manpad dsr": { + "name": "Stinger manpad dsr", + "coalition": "blue", + "era": "Late Cold War", + "label": "Stinger manpad dsr", + "shortLabel": "Stinger manpad dsr", + "range": "Short", + "filename": "", + "type": "MANPADS", + "enabled": true, + "liveries": { + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + } + }, + "Stinger manpad": { + "name": "Stinger manpad", + "coalition": "blue", + "era": "Late Cold War", + "label": "Stinger manpad", + "shortLabel": "Stinger manpad", + "range": "Short", + "filename": "", + "type": "MANPADS", + "enabled": true, + "liveries": { + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + } + }, + "Strela-1 9P31": { + "name": "Strela-1 9P31", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-9 Strela-1 9P31", + "shortLabel": "Strela-1 9P31", + "range": "Short", + "filename": "", + "type": "SAM", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Strela-10M3": { + "name": "Strela-10M3", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-13 Strela-10M3", + "shortLabel": "Strela-10M3", + "range": "Short", + "filename": "", + "type": "SAM", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Suidae": { + "name": "Suidae", + "coalition": "", + "era": "Modern", + "label": "Suidae", + "shortLabel": "Suidae", + "filename": "", + "type": "Unarmed", + "enabled": true + }, + "T-55": { + "name": "T-55", + "coalition": "red", + "era": "Early Cold War", + "label": "T-55", + "shortLabel": "T-55", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "T-72B": { + "name": "T-72B", + "coalition": "red", + "era": "Mid Cold War", + "label": "T-72B", + "shortLabel": "T-72B", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "T-80UD": { + "name": "T-80UD", + "coalition": "red", + "era": "Mid Cold War", + "label": "T-80UD", + "shortLabel": "T-80UD", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "iran - 01": { + "name": "Iran - 01", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "iran - 02": { + "name": "Iran - 02", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "T-90": { + "name": "T-90", + "coalition": "red", + "era": "Late Cold War", + "label": "T-90", + "shortLabel": "T-90", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "TPZ": { + "name": "TPZ", + "coalition": "blue", + "era": "Late Cold War", + "label": "TPz Fuchs", + "shortLabel": "TPz Fuchs", + "filename": "", + "type": "APC", + "enabled": true + }, + "Tigr_233036": { + "name": "Tigr_233036", + "coalition": "red", + "era": "Late Cold War", + "label": "Tigr_233036", + "shortLabel": "Tigr_233036", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Tor 9A331": { + "name": "Tor 9A331", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-15 Tor 9A331", + "shortLabel": "Tor 9A331", + "range": "Medium", + "filename": "", + "type": "SAM", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Trolley bus": { + "name": "Trolley bus", + "coalition": "blue", + "era": "Late Cold War", + "label": "Trolley bus", + "shortLabel": "Trolley bus", + "filename": "", + "type": "Unarmed", + "enabled": true + }, + "UAZ-469": { + "name": "UAZ-469", + "coalition": "red", + "era": "Mid Cold War", + "label": "UAZ-469", + "shortLabel": "UAZ-469", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "red_spring": { + "name": "RED_Spring", + "countries": "All" + }, + "red_summer": { + "name": "RED_Summer", + "countries": "All" + }, + "winter": { + "name": "Winter", + "countries": "All" + }, + "orange_spring": { + "name": "ORANGE_Spring", + "countries": "All" + }, + "orange_autumn": { + "name": "ORANGE_Autumn", + "countries": "All" + }, + "red_autumn": { + "name": "RED_Autumn", + "countries": "All" + }, + "red_winter": { + "name": "RED_Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "orange_summer": { + "name": "ORANGE_Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "orange_winter": { + "name": "ORANGE_Winter", + "countries": "All" + } + } + }, + "Uragan_BM-27": { + "name": "Uragan_BM-27", + "coalition": "red", + "era": "Late Cold War", + "label": "Uragan", + "shortLabel": "Uragan", + "filename": "", + "type": "Rocket Artillery", + "enabled": true, + "liveries": { + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Ural ATsP-6": { + "name": "Ural ATsP-6", + "coalition": "red", + "era": "Mid Cold War", + "label": "Ural ATsP-6", + "shortLabel": "Ural ATsP-6", + "filename": "", + "type": "Unarmed", + "enabled": true + }, + "Ural-375 PBU": { + "name": "Ural-375 PBU", + "coalition": "red", + "era": "Mid Cold War", + "label": "Ural-375 PBU", + "shortLabel": "Ural-375 PBU", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "desert", + "countries": "All" + } + } + }, + "Ural-375 ZU-23 Insurgent": { + "name": "Ural-375 ZU-23 Insurgent", + "coalition": "red", + "era": "Early Cold War", + "label": "Ural-375 ZU-23 Insurgent", + "shortLabel": "Ural-375 ZU-23 Insurgent", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Ural-375 ZU-23": { + "name": "Ural-375 ZU-23", + "coalition": "red", + "era": "Early Cold War", + "label": "Ural-375 ZU-23", + "shortLabel": "Ural-375 ZU-23", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Ural-375": { + "name": "Ural-375", + "coalition": "red", + "era": "Mid Cold War", + "label": "Ural-375", + "shortLabel": "Ural-375", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Ural-4320 APA-5D": { + "name": "Ural-4320 APA-5D", + "coalition": "red", + "era": "Early Cold War", + "label": "Ural-4320 APA-5D", + "shortLabel": "Ural-4320 APA-5D", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Ural-4320-31": { + "name": "Ural-4320-31", + "coalition": "red", + "era": "Late Cold War", + "label": "Ural-4320-31", + "shortLabel": "Ural-4320-31", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "Ural-4320T": { + "name": "Ural-4320T", + "coalition": "red", + "era": "Late Cold War", + "label": "Ural-4320T", + "shortLabel": "Ural-4320T", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "VAZ Car": { + "name": "VAZ Car", + "coalition": "red", + "era": "Early Cold War", + "label": "VAZ Car", + "shortLabel": "VAZ Car", + "filename": "", + "type": "Unarmed", + "enabled": true + }, + "Vulcan": { + "name": "Vulcan", + "coalition": "blue", + "era": "Late Cold War", + "label": "Vulcan", + "shortLabel": "Vulcan", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "usa_winter": { + "name": "USA_Winter", + "countries": "All" + }, + "isr_summer": { + "name": "ISR_Summer", + "countries": "All" + }, + "isr_spring": { + "name": "ISR_Spring", + "countries": "All" + }, + "usa_autumn": { + "name": "USA_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "isr_winter": { + "name": "ISR_Winter", + "countries": "All" + }, + "isr_autumn": { + "name": "ISR_Autumn", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "usa_summer": { + "name": "USA_Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "usa_spring": { + "name": "USA_Spring", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "ZIL-131 KUNG": { + "name": "ZIL-131 KUNG", + "coalition": "red", + "era": "Early Cold War", + "label": "ZIL-131 KUNG", + "shortLabel": "ZIL-131 KUNG", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "ZIL-4331": { + "name": "ZIL-4331", + "coalition": "red", + "era": "Early Cold War", + "label": "ZIL-4331", + "shortLabel": "ZIL-4331", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "ZSU-23-4 Shilka": { + "name": "ZSU-23-4 Shilka", + "coalition": "red", + "era": "Late Cold War", + "label": "ZSU-23-4 Shilka", + "shortLabel": "ZSU-23-4 Shilka", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "winter": { + "name": "Winter", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "grg_summer": { + "name": "GRG_Summer", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grg_autumn": { + "name": "GRG_Autumn", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grg_winter": { + "name": "GRG_Winter", + "countries": "All" + }, + "grg_spring": { + "name": "GRG_Spring", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "ZU-23 Closed Insurgent": { + "name": "ZU-23 Closed Insurgent", + "coalition": "red", + "era": "Early Cold War", + "label": "ZU-23 Closed Insurgent", + "shortLabel": "ZU-23 Closed Insurgent", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "ZU-23 Emplacement Closed": { + "name": "ZU-23 Emplacement Closed", + "coalition": "red", + "era": "Early Cold War", + "label": "ZU-23 Emplacement Closed", + "shortLabel": "ZU-23 Emplacement Closed", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "ZU-23 Emplacement": { + "name": "ZU-23 Emplacement", + "coalition": "red", + "era": "Early Cold War", + "label": "ZU-23 Emplacement", + "shortLabel": "ZU-23 Emplacement", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "ZU-23 Insurgent": { + "name": "ZU-23 Insurgent", + "coalition": "red", + "era": "Early Cold War", + "label": "ZU-23 Insurgent", + "shortLabel": "ZU-23 Insurgent", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "ZiL-131 APA-80": { + "name": "ZiL-131 APA-80", + "coalition": "red", + "era": "Early Cold War", + "label": "ZiL-131 APA-80", + "shortLabel": "ZiL-131 APA-80", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "house1arm": { + "name": "house1arm", + "coalition": "", + "era": "", + "label": "house1arm", + "shortLabel": "house1arm", + "filename": "", + "type": "Structure", + "enabled": true + }, + "house2arm": { + "name": "house2arm", + "coalition": "", + "era": "", + "label": "house2arm", + "shortLabel": "house2arm", + "filename": "", + "type": "Structure", + "enabled": true + }, + "houseA_arm": { + "name": "houseA_arm", + "coalition": "", + "era": "", + "label": "houseA_arm", + "shortLabel": "houseA_arm", + "filename": "", + "type": "Structure", + "enabled": true + }, + "outpost": { + "name": "outpost", + "coalition": "", + "era": "", + "label": "outpost", + "shortLabel": "outpost", + "filename": "", + "type": "Structure", + "enabled": true + }, + "outpost_road": { + "name": "outpost_road", + "coalition": "", + "era": "", + "label": "outpost_road", + "shortLabel": "outpost_road", + "filename": "", + "type": "Structure", + "enabled": true + }, + "p-19 s-125 sr": { + "name": "p-19 s-125 sr", + "coalition": "red", + "era": "Mid Cold War", + "label": "SA-3 Flat Face B", + "shortLabel": "Flat Face B", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + }, + "snr s-125 tr": { + "name": "snr s-125 tr", + "coalition": "red", + "era": "Early Cold War", + "label": "SA-3 Low Blow", + "shortLabel": "snr s-125 tr", + "range": "Medium", + "filename": "", + "type": "SAM Track radar", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + } + } +} diff --git a/client/public/stylesheets/other/contextmenus.css b/client/public/stylesheets/other/contextmenus.css index 877dac63..fe9e5837 100644 --- a/client/public/stylesheets/other/contextmenus.css +++ b/client/public/stylesheets/other/contextmenus.css @@ -369,6 +369,10 @@ content: url("/resources/theme/images/icons/crosshairs-solid.svg"); } +#simulate-fire-fight::before { + content: url("/resources/theme/images/icons/crosshairs-solid.svg"); +} + #follow::before { content: url("/resources/theme/images/icons/follow.svg"); } diff --git a/client/src/constants/constants.ts b/client/src/constants/constants.ts index da3fa32c..cd0b3225 100644 --- a/client/src/constants/constants.ts +++ b/client/src/constants/constants.ts @@ -20,7 +20,7 @@ export const IRST = 8; export const RWR = 16; export const DLINK = 32; -export const states: string[] = ["none", "idle", "reach-destination", "attack", "follow", "land", "refuel", "AWACS", "tanker", "bomb-point", "carpet-bomb", "bomb-building", "fire-at-area"]; +export const states: string[] = ["none", "idle", "reach-destination", "attack", "follow", "land", "refuel", "AWACS", "tanker", "bomb-point", "carpet-bomb", "bomb-building", "fire-at-area", "simulate-fire-fight"]; export const ROEs: string[] = ["free", "designated", "", "return", "hold"]; export const reactionsToThreat: string[] = ["none", "manoeuvre", "passive", "evade"]; export const emissionsCountermeasures: string[] = ["silent", "attack", "defend", "free"]; diff --git a/client/src/map/map.ts b/client/src/map/map.ts index da0da642..e4a4c05c 100644 --- a/client/src/map/map.ts +++ b/client/src/map/map.ts @@ -580,8 +580,10 @@ export class Map extends L.Map { } } else if (selectedUnitTypes.length === 1 && ["GroundUnit", "NavyUnit"].includes(selectedUnitTypes[0])) { - if (selectedUnits.every((unit: Unit) => { return ["Gun Artillery", "Rocket Artillery", "Infantry", "IFV", "Tank", "Cruiser", "Destroyer", "Frigate"].includes(unit.getType()) })) + if (selectedUnits.every((unit: Unit) => { return ["Gun Artillery", "Rocket Artillery", "Infantry", "IFV", "Tank", "Cruiser", "Destroyer", "Frigate"].includes(unit.getType()) })) { options["fire-at-area"] = { text: "Fire at area", tooltip: "Fire at a large area" }; + options["simulate-fire-fight"] = { text: "Simulate fire fight", tooltip: "Simulate a fire fight by shooting randomly in a certain large area" }; + } else (getApp().getPopupsManager().get("infoPopup") as Popup).setText(`Selected units can not perform point actions.`); } @@ -605,6 +607,10 @@ export class Map extends L.Map { getApp().getUnitsManager().getSelectedUnits().length > 0 ? this.setState(MOVE_UNIT) : this.setState(IDLE); getApp().getUnitsManager().selectedUnitsFireAtArea(this.getMouseCoordinates()); } + else if (option === "simulate-fire-fight") { + getApp().getUnitsManager().getSelectedUnits().length > 0 ? this.setState(MOVE_UNIT) : this.setState(IDLE); + getApp().getUnitsManager().selectedUnitsSimulateFireFight(this.getMouseCoordinates()); + } }); } }, 150); diff --git a/client/src/other/utils.ts b/client/src/other/utils.ts index af956d14..58f799ba 100644 --- a/client/src/other/utils.ts +++ b/client/src/other/utils.ts @@ -398,4 +398,19 @@ export function getCheckboxOptions(dropdown: Dropdown) { values[key] = value; } return values; +} + +export function getGroundElevation(latlng: LatLng, callback: CallableFunction) { + /* Get the ground elevation from the server endpoint */ + const xhr = new XMLHttpRequest(); + xhr.open('GET', `api/elevation/${latlng.lat}/${latlng.lng}`, true); + xhr.timeout = 500; // ms + xhr.responseType = 'json'; + xhr.onload = () => { + var status = xhr?.status; + if (status === 200) { + callback(xhr.response) + } + }; + xhr.send(); } \ No newline at end of file diff --git a/client/src/server/servermanager.ts b/client/src/server/servermanager.ts index 0441be5e..8669aa53 100644 --- a/client/src/server/servermanager.ts +++ b/client/src/server/servermanager.ts @@ -323,6 +323,12 @@ export class ServerManager { this.PUT(data, callback); } + simulateFireFight(ID: number, latlng: LatLng, altitude: number, callback: CallableFunction = () => {}) { + var command = { "ID": ID, "location": latlng, "altitude": altitude } + var data = { "simulateFireFight": command } + this.POST(data, callback); + } + setAdvacedOptions(ID: number, isTanker: boolean, isAWACS: boolean, TACAN: TACAN, radio: Radio, generalSettings: GeneralSettings, callback: CallableFunction = () => {}) { var command = { "ID": ID, diff --git a/client/src/unit/unit.ts b/client/src/unit/unit.ts index 0957ecbc..aa5d6050 100644 --- a/client/src/unit/unit.ts +++ b/client/src/unit/unit.ts @@ -723,6 +723,10 @@ export class Unit extends CustomMarker { getApp().getServerManager().fireAtArea(this.ID, latlng); } + simulateFireFight(latlng: LatLng, groundElevation: number | null) { + getApp().getServerManager().simulateFireFight(this.ID, latlng, groundElevation?? 0); + } + /***********************************************/ onAdd(map: Map): this { super.onAdd(map); diff --git a/client/src/unit/unitsmanager.ts b/client/src/unit/unitsmanager.ts index 2f16b8a8..969f33b1 100644 --- a/client/src/unit/unitsmanager.ts +++ b/client/src/unit/unitsmanager.ts @@ -1,7 +1,7 @@ import { LatLng, LatLngBounds } from "leaflet"; import { getApp } from ".."; import { Unit } from "./unit"; -import { bearingAndDistanceToLatLng, deg2rad, getUnitDatabaseByCategory, keyEventWasInInput, latLngToMercator, mToFt, mercatorToLatLng, msToKnots, polyContains, polygonArea, randomPointInPoly, randomUnitBlueprint } from "../other/utils"; +import { bearingAndDistanceToLatLng, deg2rad, getGroundElevation, getUnitDatabaseByCategory, keyEventWasInInput, latLngToMercator, mToFt, mercatorToLatLng, msToKnots, polyContains, polygonArea, randomPointInPoly, randomUnitBlueprint } from "../other/utils"; import { CoalitionArea } from "../map/coalitionarea/coalitionarea"; import { groundUnitDatabase } from "./databases/groundunitdatabase"; import { DataIndexes, GAME_MASTER, IADSDensities, IDLE, MOVE_UNIT } from "../constants/constants"; @@ -591,7 +591,7 @@ export class UnitsManager { for (let idx in selectedUnits) { selectedUnits[idx].carpetBomb(latlng); } - this.#showActionMessage(selectedUnits, `unit bombing point`); + this.#showActionMessage(selectedUnits, `unit carpet bombing point`); } /** Instruct the selected units to fire at specific coordinates @@ -603,7 +603,27 @@ export class UnitsManager { for (let idx in selectedUnits) { selectedUnits[idx].fireAtArea(latlng); } - this.#showActionMessage(selectedUnits, `unit bombing point`); + this.#showActionMessage(selectedUnits, `unit firing at area`); + } + + /** Instruct the selected units to simulate a fire fight at specific coordinates + * + * @param latlng Location to fire at + */ + selectedUnitsSimulateFireFight(latlng: LatLng) { + var selectedUnits = this.getSelectedUnits({ excludeHumans: true, onlyOnePerGroup: true }); + getGroundElevation(latlng, (response: string) => { + var groundElevation: number | null = null; + try { + groundElevation = parseFloat(response); + } catch { + console.log("Simulate fire fight: could not retrieve ground elevation") + } + for (let idx in selectedUnits) { + selectedUnits[idx].simulateFireFight(latlng, groundElevation); + } + }); + this.#showActionMessage(selectedUnits, `unit simulating fire fight`); } /*********************** Control operations on selected units ************************/ diff --git a/scripts/OlympusCommand.lua b/scripts/OlympusCommand.lua index 6518d6ca..d38f380e 100644 --- a/scripts/OlympusCommand.lua +++ b/scripts/OlympusCommand.lua @@ -1,6 +1,6 @@ local version = "v0.4.4-alpha" -local debug = false -- True enables debug printing using DCS messages +local debug = true -- True enables debug printing using DCS messages -- .dll related variables Olympus.OlympusDLL = nil @@ -229,13 +229,24 @@ function Olympus.buildTask(groupName, options) -- Fire at a specific point elseif options['id'] == 'FireAtPoint' and options['lat'] and options['lng'] and options['radius'] then local point = coord.LLtoLO(options['lat'], options['lng'], 0) - task = { - id = 'FireAtPoint', - params = { - point = {x = point.x, y = point.z}, - radius = options['radius'] - } - } + if options['alt'] then + task = { + id = 'FireAtPoint', + params = { + point = {x = point.x, y = point.z}, + radius = options['radius'], + altitude = options['alt'] + } + } + else + task = { + id = 'FireAtPoint', + params = { + point = {x = point.x, y = point.z}, + radius = options['radius'] + } + } + end end end return task diff --git a/scripts/python/generateGunData.py b/scripts/python/generateGunData.py new file mode 100644 index 00000000..858cc28e --- /dev/null +++ b/scripts/python/generateGunData.py @@ -0,0 +1,21 @@ +import sys +import json +import inspect +import difflib +from slpp import slpp as lua + +SEARCH_FOLDER = "D:\\Eagle Dynamics\\DCS World OpenBeta" + +sys.path.append("..\\..\\..\\dcs-master\\dcs-master") + +from dcs.vehicles import * + +with open("gundata.h", "w") as f: + for unit in vehicle_map.values(): + if unit in Artillery.__dict__.values() or unit in Armor.__dict__.values() or unit in Infantry.__dict__.values(): + f.write('{"' + unit.id + '", {0.9, 860}}, \n') + +# Done! +print("Done!") + + \ No newline at end of file diff --git a/scripts/python/gundata.h b/scripts/python/gundata.h new file mode 100644 index 00000000..d28a26e5 --- /dev/null +++ b/scripts/python/gundata.h @@ -0,0 +1,109 @@ +{"2B11 mortar", {0.9, 860}}, +{"SAU Gvozdika", {0.9, 860}}, +{"SAU Msta", {0.9, 860}}, +{"SAU Akatsia", {0.9, 860}}, +{"SAU 2-C9", {0.9, 860}}, +{"M-109", {0.9, 860}}, +{"SpGH_Dana", {0.9, 860}}, +{"AAV7", {0.9, 860}}, +{"BMD-1", {0.9, 860}}, +{"BMP-1", {0.9, 860}}, +{"BMP-2", {0.9, 860}}, +{"BMP-3", {0.9, 860}}, +{"BRDM-2", {0.9, 860}}, +{"BTR_D", {0.9, 860}}, +{"Cobra", {0.9, 860}}, +{"LAV-25", {0.9, 860}}, +{"M1043 HMMWV Armament", {0.9, 860}}, +{"M1045 HMMWV TOW", {0.9, 860}}, +{"M1126 Stryker ICV", {0.9, 860}}, +{"M-113", {0.9, 860}}, +{"M1134 Stryker ATGM", {0.9, 860}}, +{"M-2 Bradley", {0.9, 860}}, +{"MCV-80", {0.9, 860}}, +{"MTLB", {0.9, 860}}, +{"Marder", {0.9, 860}}, +{"TPZ", {0.9, 860}}, +{"Grad_FDDM", {0.9, 860}}, +{"Paratrooper RPG-16", {0.9, 860}}, +{"Paratrooper AKS-74", {0.9, 860}}, +{"Infantry AK Ins", {0.9, 860}}, +{"Soldier AK", {0.9, 860}}, +{"Infantry AK", {0.9, 860}}, +{"Soldier M249", {0.9, 860}}, +{"Soldier M4", {0.9, 860}}, +{"Soldier M4 GRG", {0.9, 860}}, +{"Soldier RPG", {0.9, 860}}, +{"MLRS FDDM", {0.9, 860}}, +{"Infantry AK ver2", {0.9, 860}}, +{"Infantry AK ver3", {0.9, 860}}, +{"Grad-URAL", {0.9, 860}}, +{"Uragan_BM-27", {0.9, 860}}, +{"Smerch", {0.9, 860}}, +{"Smerch_HE", {0.9, 860}}, +{"MLRS", {0.9, 860}}, +{"Challenger2", {0.9, 860}}, +{"Leclerc", {0.9, 860}}, +{"M-60", {0.9, 860}}, +{"M1128 Stryker MGS", {0.9, 860}}, +{"M-1 Abrams", {0.9, 860}}, +{"T-55", {0.9, 860}}, +{"T-72B", {0.9, 860}}, +{"T-80UD", {0.9, 860}}, +{"T-90", {0.9, 860}}, +{"Leopard1A3", {0.9, 860}}, +{"Merkava_Mk4", {0.9, 860}}, +{"JTAC", {0.9, 860}}, +{"Infantry Animated", {0.9, 860}}, +{"HL_DSHK", {0.9, 860}}, +{"HL_KORD", {0.9, 860}}, +{"tt_DSHK", {0.9, 860}}, +{"tt_KORD", {0.9, 860}}, +{"HL_B8M1", {0.9, 860}}, +{"tt_B8M1", {0.9, 860}}, +{"M4_Sherman", {0.9, 860}}, +{"M2A1_halftrack", {0.9, 860}}, +{"BTR-80", {0.9, 860}}, +{"T-72B3", {0.9, 860}}, +{"PT_76", {0.9, 860}}, +{"BTR-82A", {0.9, 860}}, +{"Chieftain_mk3", {0.9, 860}}, +{"Pz_IV_H", {0.9, 860}}, +{"Leopard-2A5", {0.9, 860}}, +{"Leopard-2", {0.9, 860}}, +{"leopard-2A4", {0.9, 860}}, +{"leopard-2A4_trs", {0.9, 860}}, +{"Sd_Kfz_251", {0.9, 860}}, +{"T155_Firtina", {0.9, 860}}, +{"VAB_Mephisto", {0.9, 860}}, +{"ZTZ96B", {0.9, 860}}, +{"ZBD04A", {0.9, 860}}, +{"PLZ05", {0.9, 860}}, +{"TYPE-59", {0.9, 860}}, +{"Tiger_I", {0.9, 860}}, +{"Tiger_II_H", {0.9, 860}}, +{"Pz_V_Panther_G", {0.9, 860}}, +{"Jagdpanther_G1", {0.9, 860}}, +{"JagdPz_IV", {0.9, 860}}, +{"Stug_IV", {0.9, 860}}, +{"SturmPzIV", {0.9, 860}}, +{"Wespe124", {0.9, 860}}, +{"Sd_Kfz_234_2_Puma", {0.9, 860}}, +{"soldier_mauser98", {0.9, 860}}, +{"Stug_III", {0.9, 860}}, +{"Elefant_SdKfz_184", {0.9, 860}}, +{"Pak40", {0.9, 860}}, +{"LeFH_18-40-105", {0.9, 860}}, +{"Cromwell_IV", {0.9, 860}}, +{"M4A4_Sherman_FF", {0.9, 860}}, +{"soldier_wwii_br_01", {0.9, 860}}, +{"Centaur_IV", {0.9, 860}}, +{"Churchill_VII", {0.9, 860}}, +{"Daimler_AC", {0.9, 860}}, +{"Tetrarch", {0.9, 860}}, +{"M12_GMC", {0.9, 860}}, +{"soldier_wwii_us", {0.9, 860}}, +{"M10_GMC", {0.9, 860}}, +{"M8_Greyhound", {0.9, 860}}, +{"M2A1-105", {0.9, 860}}, +{"M4_Tractor", {0.9, 860}}, diff --git a/src/core/include/aircraft.h b/src/core/include/aircraft.h index be27e35b..a3fa2b2a 100644 --- a/src/core/include/aircraft.h +++ b/src/core/include/aircraft.h @@ -6,6 +6,11 @@ class Aircraft : public AirUnit public: Aircraft(json::value json, unsigned int ID); + static void loadDatabase(string path); + virtual void changeSpeed(string change); virtual void changeAltitude(string change); + +protected: + static json::value database; }; \ No newline at end of file diff --git a/src/core/include/commands.h b/src/core/include/commands.h index 58279826..6bf3da9d 100644 --- a/src/core/include/commands.h +++ b/src/core/include/commands.h @@ -95,21 +95,26 @@ namespace ECMUse { class Command { public: + Command(function callback) : callback(callback) {}; unsigned int getPriority() { return priority; } virtual string getString() = 0; virtual unsigned int getLoad() = 0; const string getHash() { return hash; } + void executeCallback() { callback(); } protected: unsigned int priority = CommandPriority::LOW; const string hash = random_string(16); + function callback; }; /* Simple low priority move command (from user click) */ class Move : public Command { public: - Move(string groupName, Coords destination, double speed, string speedType, double altitude, string altitudeType, string taskOptions, string category): + Move(string groupName, Coords destination, double speed, string speedType, double altitude, + string altitudeType, string taskOptions, string category, function callback = []() {}) : + Command(callback), groupName(groupName), destination(destination), speed(speed), @@ -139,7 +144,8 @@ private: class Smoke : public Command { public: - Smoke(string color, Coords location) : + Smoke(string color, Coords location, function callback = [](){}) : + Command(callback), color(color), location(location) { @@ -157,7 +163,8 @@ private: class SpawnGroundUnits : public Command { public: - SpawnGroundUnits(string coalition, vector spawnOptions, string country, bool immediate) : + SpawnGroundUnits(string coalition, vector spawnOptions, string country, bool immediate, function callback = [](){}) : + Command(callback), coalition(coalition), spawnOptions(spawnOptions), country(country), @@ -179,7 +186,8 @@ private: class SpawnNavyUnits : public Command { public: - SpawnNavyUnits(string coalition, vector spawnOptions, string country, bool immediate) : + SpawnNavyUnits(string coalition, vector spawnOptions, string country, bool immediate, function callback = [](){}) : + Command(callback), coalition(coalition), spawnOptions(spawnOptions), country(country), @@ -201,7 +209,8 @@ private: class SpawnAircrafts : public Command { public: - SpawnAircrafts(string coalition, vector spawnOptions, string airbaseName, string country, bool immediate) : + SpawnAircrafts(string coalition, vector spawnOptions, string airbaseName, string country, bool immediate, function callback = [](){}) : + Command(callback), coalition(coalition), spawnOptions(spawnOptions), airbaseName(airbaseName), @@ -221,12 +230,12 @@ private: const bool immediate; }; - /* Spawn helicopter command */ class SpawnHelicopters : public Command { public: - SpawnHelicopters(string coalition, vector spawnOptions, string airbaseName, string country, bool immediate) : + SpawnHelicopters(string coalition, vector spawnOptions, string airbaseName, string country, bool immediate, function callback = [](){}) : + Command(callback), coalition(coalition), spawnOptions(spawnOptions), airbaseName(airbaseName), @@ -250,7 +259,8 @@ private: class Clone : public Command { public: - Clone(vector cloneOptions, bool deleteOriginal) : + Clone(vector cloneOptions, bool deleteOriginal, function callback = [](){}) : + Command(callback), cloneOptions(cloneOptions), deleteOriginal(deleteOriginal) { @@ -268,7 +278,8 @@ private: class Delete : public Command { public: - Delete(unsigned int ID, bool explosion, bool immediate ) : + Delete(unsigned int ID, bool explosion, bool immediate, function callback = [](){}) : + Command(callback), ID(ID), explosion(explosion), immediate(immediate) @@ -289,7 +300,8 @@ private: class SetTask : public Command { public: - SetTask(string groupName, string task) : + SetTask(string groupName, string task, function callback = [](){}) : + Command(callback), groupName(groupName), task(task) { @@ -307,7 +319,8 @@ private: class ResetTask : public Command { public: - ResetTask(string groupName) : + ResetTask(string groupName, function callback = [](){}) : + Command(callback), groupName(groupName) { priority = CommandPriority::HIGH; @@ -323,7 +336,8 @@ private: class SetCommand : public Command { public: - SetCommand(string groupName, string command) : + SetCommand(string groupName, string command, function callback = [](){}) : + Command(callback), groupName(groupName), command(command) { @@ -341,7 +355,8 @@ private: class SetOption : public Command { public: - SetOption(string groupName, unsigned int optionID, unsigned int optionValue) : + SetOption(string groupName, unsigned int optionID, unsigned int optionValue, function callback = [](){}) : + Command(callback), groupName(groupName), optionID(optionID), optionValue(optionValue), @@ -351,7 +366,8 @@ public: priority = CommandPriority::HIGH; }; - SetOption(string groupName, unsigned int optionID, bool optionBool) : + SetOption(string groupName, unsigned int optionID, bool optionBool, function callback = [](){}) : + Command(callback), groupName(groupName), optionID(optionID), optionValue(0), @@ -375,7 +391,8 @@ private: class SetOnOff : public Command { public: - SetOnOff(string groupName, bool onOff) : + SetOnOff(string groupName, bool onOff, function callback = [](){}) : + Command(callback), groupName(groupName), onOff(onOff) { @@ -393,7 +410,8 @@ private: class Explosion : public Command { public: - Explosion(unsigned int intensity, Coords location) : + Explosion(unsigned int intensity, Coords location, function callback = [](){}) : + Command(callback), location(location), intensity(intensity) { diff --git a/src/core/include/datatypes.h b/src/core/include/datatypes.h index f3859456..207b72ee 100644 --- a/src/core/include/datatypes.h +++ b/src/core/include/datatypes.h @@ -64,7 +64,8 @@ namespace State BOMB_POINT, CARPET_BOMB, BOMB_BUILDING, - FIRE_AT_AREA + FIRE_AT_AREA, + SIMULATE_FIRE_FIGHT }; }; @@ -125,4 +126,4 @@ struct SpawnOptions { struct CloneOptions { unsigned int ID; Coords location; -}; \ No newline at end of file +}; diff --git a/src/core/include/groundunit.h b/src/core/include/groundunit.h index 46e1b78d..8ef0fb35 100644 --- a/src/core/include/groundunit.h +++ b/src/core/include/groundunit.h @@ -8,6 +8,8 @@ class GroundUnit : public Unit public: GroundUnit(json::value json, unsigned int ID); + static void loadDatabase(string path); + virtual void setState(unsigned char newState); virtual void setDefaults(bool force = false); @@ -17,4 +19,5 @@ public: protected: virtual void AIloop(); + static json::value database; }; \ No newline at end of file diff --git a/src/core/include/helicopter.h b/src/core/include/helicopter.h index 3c72693b..5c0246ae 100644 --- a/src/core/include/helicopter.h +++ b/src/core/include/helicopter.h @@ -6,6 +6,11 @@ class Helicopter : public AirUnit public: Helicopter(json::value json, unsigned int ID); + static void loadDatabase(string path); + virtual void changeSpeed(string change); virtual void changeAltitude(string change); + +protected: + static json::value database; }; \ No newline at end of file diff --git a/src/core/include/navyunit.h b/src/core/include/navyunit.h index 24ed244d..23f86fe7 100644 --- a/src/core/include/navyunit.h +++ b/src/core/include/navyunit.h @@ -8,6 +8,8 @@ class NavyUnit : public Unit public: NavyUnit(json::value json, unsigned int ID); + static void loadDatabase(string path); + virtual void setState(unsigned char newState); virtual void setDefaults(bool force = false); @@ -16,5 +18,5 @@ public: protected: virtual void AIloop(); - + static json::value database; }; \ No newline at end of file diff --git a/src/core/include/unit.h b/src/core/include/unit.h index b0fdc56e..b36b4d9b 100644 --- a/src/core/include/unit.h +++ b/src/core/include/unit.h @@ -54,6 +54,7 @@ public: void resetTask(); bool checkTaskFailed(); void resetTaskFailedCounter(); + void setHasTaskAssigned(bool newHasTaskAssigned); void triggerUpdate(unsigned char datumIndex); @@ -185,6 +186,7 @@ protected: /********** Other **********/ unsigned int taskCheckCounter = 0; + bool hasTaskAssigned = false; double initialFuel = 0; map updateTimeMap; unsigned long long lastLoopTime = 0; diff --git a/src/core/src/aircraft.cpp b/src/core/src/aircraft.cpp index e8a932dd..be3021f9 100644 --- a/src/core/src/aircraft.cpp +++ b/src/core/src/aircraft.cpp @@ -11,6 +11,26 @@ using namespace GeographicLib; extern Scheduler* scheduler; extern UnitsManager* unitsManager; +json::value Aircraft::database = json::value(); + +void Aircraft::loadDatabase(string path) { + char* buf = nullptr; + size_t sz = 0; + if (_dupenv_s(&buf, &sz, "DCSOLYMPUS_PATH") == 0 && buf != nullptr) + { + std::ifstream ifstream(string(buf) + path); + std::stringstream ss; + ss << ifstream.rdbuf(); + std::error_code errorCode; + database = json::value::parse(ss.str(), errorCode); + if (database.is_object()) + log("Aircrafts database loaded correctly"); + else + log("Error reading Aircrafts database file"); + + free(buf); + } +} /* Aircraft */ Aircraft::Aircraft(json::value json, unsigned int ID) : AirUnit(json, ID) diff --git a/src/core/src/airunit.cpp b/src/core/src/airunit.cpp index 2ea3e1c9..875f64d4 100644 --- a/src/core/src/airunit.cpp +++ b/src/core/src/airunit.cpp @@ -162,7 +162,7 @@ void AirUnit::AIloop() desiredAltitude << ", speed = " << desiredSpeed << ", altitudeType = '" << (desiredAltitudeType ? "AGL" : "ASL") << "', speedType = '" << (desiredSpeedType ? "GS" : "CAS") << "'}"; } - Command* command = dynamic_cast(new SetTask(groupName, taskSS.str())); + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); scheduler->appendCommand(command); setHasTask(true); } @@ -267,7 +267,7 @@ void AirUnit::AIloop() << "z = " << formationOffset.z << "}," << "}"; - Command* command = dynamic_cast(new SetTask(groupName, taskSS.str())); + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); scheduler->appendCommand(command); setHasTask(true); } @@ -283,7 +283,7 @@ void AirUnit::AIloop() taskSS << "{" << "id = 'Refuel'" << "}"; - Command* command = dynamic_cast(new SetTask(groupName, taskSS.str())); + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); scheduler->appendCommand(command); setHasTask(true); } @@ -297,8 +297,10 @@ void AirUnit::AIloop() if (!getHasTask()) { std::ostringstream taskSS; + taskSS.precision(10); + taskSS << "{id = 'Bombing', lat = " << targetPosition.lat << ", lng = " << targetPosition.lng << "}"; - Command* command = dynamic_cast(new SetTask(groupName, taskSS.str())); + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); scheduler->appendCommand(command); setHasTask(true); } @@ -308,8 +310,10 @@ void AirUnit::AIloop() if (!getHasTask()) { std::ostringstream taskSS; + taskSS.precision(10); + taskSS << "{id = 'CarpetBombing', lat = " << targetPosition.lat << ", lng = " << targetPosition.lng << "}"; - Command* command = dynamic_cast(new SetTask(groupName, taskSS.str())); + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); scheduler->appendCommand(command); setHasTask(true); } @@ -320,8 +324,10 @@ void AirUnit::AIloop() if (!getHasTask()) { std::ostringstream taskSS; + taskSS.precision(10); + taskSS << "{id = 'AttackMapObject', lat = " << targetPosition.lat << ", lng = " << targetPosition.lng << "}"; - Command* command = dynamic_cast(new SetTask(groupName, taskSS.str())); + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); scheduler->appendCommand(command); setHasTask(true); } diff --git a/src/core/src/core.cpp b/src/core/src/core.cpp index 3fc42753..e41128e9 100644 --- a/src/core/src/core.cpp +++ b/src/core/src/core.cpp @@ -7,6 +7,10 @@ #include "scheduler.h" #include "scriptLoader.h" #include "luatools.h" +#include "aircraft.h" +#include "helicopter.h" +#include "groundunit.h" +#include "navyunit.h" #include using namespace std::chrono; @@ -59,6 +63,11 @@ extern "C" DllExport int coreInit(lua_State* L) server = new Server(L); scheduler = new Scheduler(L); + Aircraft::loadDatabase(AIRCRAFT_DATABASE_PATH); + Helicopter::loadDatabase(HELICOPTER_DATABASE_PATH); + GroundUnit::loadDatabase(GROUNDUNIT_DATABASE_PATH); + NavyUnit::loadDatabase(NAVYUNIT_DATABASE_PATH); + registerLuaFunctions(L); server->start(L); diff --git a/src/core/src/groundunit.cpp b/src/core/src/groundunit.cpp index 693f8091..1d54b8b4 100644 --- a/src/core/src/groundunit.cpp +++ b/src/core/src/groundunit.cpp @@ -4,13 +4,33 @@ #include "commands.h" #include "scheduler.h" #include "defines.h" -#include "unitsManager.h" +#include "unitsmanager.h" #include using namespace GeographicLib; extern Scheduler* scheduler; extern UnitsManager* unitsManager; +json::value GroundUnit::database = json::value(); + +void GroundUnit::loadDatabase(string path) { + char* buf = nullptr; + size_t sz = 0; + if (_dupenv_s(&buf, &sz, "DCSOLYMPUS_PATH") == 0 && buf != nullptr) + { + std::ifstream ifstream(string(buf) + path); + std::stringstream ss; + ss << ifstream.rdbuf(); + std::error_code errorCode; + database = json::value::parse(ss.str(), errorCode); + if (database.is_object()) + log("Ground Units database loaded correctly"); + else + log("Error reading Ground Units database file"); + + free(buf); + } +} /* Ground unit */ GroundUnit::GroundUnit(json::value json, unsigned int ID) : Unit(json, ID) @@ -49,6 +69,10 @@ void GroundUnit::setState(unsigned char newState) setTargetPosition(Coords(NULL)); break; } + case State::SIMULATE_FIRE_FIGHT: { + setTargetPosition(Coords(NULL)); + break; + } default: break; } @@ -70,12 +94,16 @@ void GroundUnit::setState(unsigned char newState) resetActiveDestination(); break; } + case State::SIMULATE_FIRE_FIGHT: { + clearActivePath(); + resetActiveDestination(); + break; + } default: break; } - if (newState != state) - resetTask(); + resetTask(); log(unitName + " setting state from " + to_string(state) + " to " + to_string(newState)); state = newState; @@ -122,8 +150,46 @@ void GroundUnit::AIloop() if (!getHasTask()) { std::ostringstream taskSS; + taskSS.precision(10); taskSS << "{id = 'FireAtPoint', lat = " << targetPosition.lat << ", lng = " << targetPosition.lng << ", radius = 1000}"; - Command* command = dynamic_cast(new SetTask(groupName, taskSS.str())); + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); + scheduler->appendCommand(command); + setHasTask(true); + } + } + case State::SIMULATE_FIRE_FIGHT: { + setTask("Simulating fire fight"); + + if (!getHasTask() || ((double)(rand()) / (double)(RAND_MAX)) < 0.01) { + double dist; + double bearing1; + double bearing2; + Geodesic::WGS84().Inverse(position.lat, position.lng, targetPosition.lat, targetPosition.lng, dist, bearing1, bearing2); + + double r = 5; /* m */ + /* Default gun values */ + double barrelHeight = 1.0; /* m */ + double muzzleVelocity = 860; /* m/s */ + if (database.has_object_field(to_wstring(name))) { + json::value databaseEntry = database[to_wstring(name)]; + if (databaseEntry.has_number_field(L"barrelHeight") && databaseEntry.has_number_field(L"muzzleVelocity")) { + barrelHeight = databaseEntry[L"barrelHeight"].as_number().to_double(); + muzzleVelocity = databaseEntry[L"muzzleVelocity"].as_number().to_double(); + log(to_string(barrelHeight) + " " + to_string(muzzleVelocity)); + } + } + + double barrelElevation = r * (9.81 * dist / (2 * muzzleVelocity * muzzleVelocity) + (targetPosition.alt - (position.alt + barrelHeight)) / dist); /* m */ + + double lat = 0; + double lng = 0; + double randomBearing = bearing1 + (((double)(rand()) / (double)(RAND_MAX) - 0.5) * 2) * 15; + Geodesic::WGS84().Direct(position.lat, position.lng, randomBearing, r, lat, lng); + + std::ostringstream taskSS; + taskSS.precision(10); + taskSS << "{id = 'FireAtPoint', lat = " << lat << ", lng = " << lng << ", alt = " << barrelElevation + barrelHeight << ", radius = 0.001}"; + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); scheduler->appendCommand(command); setHasTask(true); } @@ -161,4 +227,4 @@ void GroundUnit::setFollowRoads(bool newFollowRoads, bool force) Unit::setFollowRoads(newFollowRoads, force); resetActiveDestination(); /* Reset active destination to apply option*/ } -} \ No newline at end of file +} diff --git a/src/core/src/helicopter.cpp b/src/core/src/helicopter.cpp index 6d24022e..bfd6caab 100644 --- a/src/core/src/helicopter.cpp +++ b/src/core/src/helicopter.cpp @@ -11,6 +11,26 @@ using namespace GeographicLib; extern Scheduler* scheduler; extern UnitsManager* unitsManager; +json::value Helicopter::database = json::value(); + +void Helicopter::loadDatabase(string path) { + char* buf = nullptr; + size_t sz = 0; + if (_dupenv_s(&buf, &sz, "DCSOLYMPUS_PATH") == 0 && buf != nullptr) + { + std::ifstream ifstream(string(buf) + path); + std::stringstream ss; + ss << ifstream.rdbuf(); + std::error_code errorCode; + database = json::value::parse(ss.str(), errorCode); + if (database.is_object()) + log("Helicopters database loaded correctly"); + else + log("Error reading Helicopters database file"); + + free(buf); + } +} /* Helicopter */ Helicopter::Helicopter(json::value json, unsigned int ID) : AirUnit(json, ID) diff --git a/src/core/src/navyunit.cpp b/src/core/src/navyunit.cpp index 1892a8ca..0c66380d 100644 --- a/src/core/src/navyunit.cpp +++ b/src/core/src/navyunit.cpp @@ -11,6 +11,26 @@ using namespace GeographicLib; extern Scheduler* scheduler; extern UnitsManager* unitsManager; +json::value NavyUnit::database = json::value(); + +void NavyUnit::loadDatabase(string path) { + char* buf = nullptr; + size_t sz = 0; + if (_dupenv_s(&buf, &sz, "DCSOLYMPUS_PATH") == 0 && buf != nullptr) + { + std::ifstream ifstream(string(buf) + path); + std::stringstream ss; + ss << ifstream.rdbuf(); + std::error_code errorCode; + database = json::value::parse(ss.str(), errorCode); + if (database.is_object()) + log("Navy Units database loaded correctly"); + else + log("Error reading Navy Units database file"); + + free(buf); + } +} /* Navy Unit */ NavyUnit::NavyUnit(json::value json, unsigned int ID) : Unit(json, ID) @@ -49,6 +69,10 @@ void NavyUnit::setState(unsigned char newState) setTargetPosition(Coords(NULL)); break; } + case State::SIMULATE_FIRE_FIGHT: { + setTargetPosition(Coords(NULL)); + break; + } default: break; } @@ -68,6 +92,13 @@ void NavyUnit::setState(unsigned char newState) case State::FIRE_AT_AREA: { clearActivePath(); resetActiveDestination(); + resetTask(); + break; + } + case State::SIMULATE_FIRE_FIGHT: { + clearActivePath(); + resetActiveDestination(); + resetTask(); break; } default: @@ -118,8 +149,23 @@ void NavyUnit::AIloop() if (!getHasTask()) { std::ostringstream taskSS; + taskSS.precision(10); + taskSS << "{id = 'FireAtPoint', lat = " << targetPosition.lat << ", lng = " << targetPosition.lng << ", radius = 1000}"; - Command* command = dynamic_cast(new SetTask(groupName, taskSS.str())); + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); + scheduler->appendCommand(command); + setHasTask(true); + } + } + case State::SIMULATE_FIRE_FIGHT: { + setTask("Simulating fire fight"); + + if (!getHasTask()) { + std::ostringstream taskSS; + taskSS.precision(10); + + taskSS << "{id = 'FireAtPoint', lat = " << targetPosition.lat << ", lng = " << targetPosition.lng << ", radius = 1}"; + Command* command = dynamic_cast(new SetTask(groupName, taskSS.str(), [this]() { this->setHasTaskAssigned(true); })); scheduler->appendCommand(command); setHasTask(true); } diff --git a/src/core/src/scheduler.cpp b/src/core/src/scheduler.cpp index 742f5c5b..095764d2 100644 --- a/src/core/src/scheduler.cpp +++ b/src/core/src/scheduler.cpp @@ -61,6 +61,7 @@ void Scheduler::execute(lua_State* L) load = command->getLoad(); commands.remove(command); executedCommandsHashes.push_back(command->getHash()); + command->executeCallback(); /* Execute the command callback (this is a lambda function that can be used to execute a function when the command is run) */ delete command; return; } @@ -561,6 +562,19 @@ void Scheduler::handleRequest(string key, json::value value, string username, js unit->setTargetPosition(loc); log(username + " tasked unit " + unit->getName() + " to fire at area", true); } + else if (key.compare("simulateFireFight") == 0) + { + unsigned int ID = value[L"ID"].as_integer(); + unitsManager->acquireControl(ID); + double lat = value[L"location"][L"lat"].as_double(); + double lng = value[L"location"][L"lng"].as_double(); + double alt = value[L"altitude"].as_double(); + Coords loc; loc.lat = lat; loc.lng = lng; loc.alt = alt; + Unit* unit = unitsManager->getGroupLeader(ID); + unit->setState(State::SIMULATE_FIRE_FIGHT); + unit->setTargetPosition(loc); + log(username + " tasked unit " + unit->getName() + " to simulate a fire fight", true); + } else if (key.compare("setCommandModeOptions") == 0) { setCommandModeOptions(value); log(username + " updated the Command Mode Options", true); diff --git a/src/core/src/server.cpp b/src/core/src/server.cpp index 2817846a..e3be2f2f 100644 --- a/src/core/src/server.cpp +++ b/src/core/src/server.cpp @@ -291,7 +291,7 @@ void Server::task() size_t sz = 0; if (_dupenv_s(&buf, &sz, "DCSOLYMPUS_PATH") == 0 && buf != nullptr) { - std::ifstream ifstream(string(buf) + "\\olympus.json"); + std::ifstream ifstream(string(buf) + OLYMPUS_JSON_PATH); std::stringstream ss; ss << ifstream.rdbuf(); std::error_code errorCode; diff --git a/src/core/src/unit.cpp b/src/core/src/unit.cpp index 4b2f2fa0..4aaf5d8a 100644 --- a/src/core/src/unit.cpp +++ b/src/core/src/unit.cpp @@ -146,8 +146,10 @@ void Unit::runAILoop() { /* If the unit is alive, controlled, is the leader of the group and it is not a human, run the AI Loop that performs the requested commands and instructions (moving, attacking, etc) */ if (getAlive() && getControlled() && !getHuman() && getIsLeader()) { - if (checkTaskFailed() && state != State::IDLE && state != State::LAND) + if (checkTaskFailed() && state != State::IDLE && state != State::LAND) { + log(unitName + " has no task, switching to IDLE state"); setState(State::IDLE); + } AIloop(); } @@ -397,7 +399,7 @@ void Unit::resetActiveDestination() void Unit::resetTask() { - Command* command = dynamic_cast(new ResetTask(groupName)); + Command* command = dynamic_cast(new ResetTask(groupName, [this]() { this->setHasTaskAssigned(false); })); scheduler->appendCommand(command); setHasTask(false); resetTaskFailedCounter(); @@ -660,7 +662,7 @@ void Unit::goToDestination(string enrouteTask) { if (activeDestination != NULL) { - Command* command = dynamic_cast(new Move(groupName, activeDestination, getDesiredSpeed(), getDesiredSpeedType() ? "GS" : "CAS", getDesiredAltitude(), getDesiredAltitudeType() ? "AGL" : "ASL", enrouteTask, getCategory())); + Command* command = dynamic_cast(new Move(groupName, activeDestination, getDesiredSpeed(), getDesiredSpeedType() ? "GS" : "CAS", getDesiredAltitude(), getDesiredAltitudeType() ? "AGL" : "ASL", enrouteTask, getCategory(), [this]() { this->setHasTaskAssigned(true); })); scheduler->appendCommand(command); setHasTask(true); } @@ -732,7 +734,7 @@ bool Unit::checkTaskFailed() return false; else { if (taskCheckCounter > 0) - taskCheckCounter--; + taskCheckCounter -= hasTaskAssigned; return taskCheckCounter == 0; } } @@ -741,6 +743,14 @@ void Unit::resetTaskFailedCounter() { taskCheckCounter = TASK_CHECK_INIT_VALUE; } +void Unit::setHasTaskAssigned(bool newHasTaskAssigned) { + hasTaskAssigned = newHasTaskAssigned; + if (hasTaskAssigned) + log(unitName + " was assigned a new task"); + else + log(unitName + " no task assigned"); +} + void Unit::triggerUpdate(unsigned char datumIndex) { updateTimeMap[datumIndex] = duration_cast(system_clock::now().time_since_epoch()).count(); } diff --git a/src/shared/include/defines.h b/src/shared/include/defines.h index e8f8fc14..fc15746e 100644 --- a/src/shared/include/defines.h +++ b/src/shared/include/defines.h @@ -12,4 +12,10 @@ #define MISSION_URI "mission" #define COMMANDS_URI "commands" -#define FRAMERATE_TIME_INTERVAL 0.05 \ No newline at end of file +#define FRAMERATE_TIME_INTERVAL 0.05 + +#define OLYMPUS_JSON_PATH "\\olympus.json" +#define AIRCRAFT_DATABASE_PATH "\\client\\public\\databases\\units\\aircraftdatabase.json" +#define HELICOPTER_DATABASE_PATH "\\client\\public\\databases\\units\\helicopterdatabase.json" +#define GROUNDUNIT_DATABASE_PATH "\\client\\public\\databases\\units\\groundunitdatabase.json" +#define NAVYUNIT_DATABASE_PATH "\\client\\public\\databases\\units\\navyunitdatabase.json"