From 7f9cba5d3772b4f14c818c942f132ef02fab286b Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Wed, 30 Sep 2020 18:52:19 -0700 Subject: [PATCH 01/15] Fix more None ATC bugs. Fixes https://github.com/Khopa/dcs_liberation/issues/164 --- gen/aircraft.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gen/aircraft.py b/gen/aircraft.py index 81a6202e..ec5dec26 100644 --- a/gen/aircraft.py +++ b/gen/aircraft.py @@ -279,13 +279,15 @@ class CommonRadioChannelAllocator(RadioChannelAllocator): last_channel = flight.num_radio_channels(radio_id) channel_alloc = iter(range(first_channel, last_channel + 1)) - flight.assign_channel(radio_id, next(channel_alloc), flight.departure.atc) + if flight.departure.atc is not None: + flight.assign_channel(radio_id, next(channel_alloc), + flight.departure.atc) # TODO: If there ever are multiple AWACS, limit to mission relevant. for awacs in air_support.awacs: flight.assign_channel(radio_id, next(channel_alloc), awacs.freq) - if flight.arrival != flight.departure: + if flight.arrival != flight.departure and flight.arrival.atc is not None: flight.assign_channel(radio_id, next(channel_alloc), flight.arrival.atc) @@ -295,7 +297,7 @@ class CommonRadioChannelAllocator(RadioChannelAllocator): flight.assign_channel( radio_id, next(channel_alloc), tanker.freq) - if flight.divert is not None: + if flight.divert is not None and flight.divert.atc is not None: flight.assign_channel(radio_id, next(channel_alloc), flight.divert.atc) except StopIteration: From 8054a0b62f5f0782e62079d2e76e1acb74faa236 Mon Sep 17 00:00:00 2001 From: David Pierron Date: Wed, 30 Sep 2020 13:34:41 +0200 Subject: [PATCH 02/15] removed useless link.cmd.sample file --- resources/scripts/plugins/link.cmd.sample | 29 ----------------------- 1 file changed, 29 deletions(-) delete mode 100644 resources/scripts/plugins/link.cmd.sample diff --git a/resources/scripts/plugins/link.cmd.sample b/resources/scripts/plugins/link.cmd.sample deleted file mode 100644 index e9c69ce7..00000000 --- a/resources/scripts/plugins/link.cmd.sample +++ /dev/null @@ -1,29 +0,0 @@ -rem this can be used to easily create hardlinks from your plugin development folder - -mklink mist.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\community\mist.lua -mklink Moose.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\community\Moose.lua -mklink CTLD.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\community\CTLD.lua -mklink NIOD.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\community\NIOD.lua -mklink WeatherMark.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\community\WeatherMark.lua -mklink veaf.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veaf.lua -mklink dcsUnits.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\dcsUnits.lua -mklink JTACAutoLase.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\JTACAutoLase.lua -mklink veafAssets.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafAssets.lua -mklink veafCarrierOperations.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafCarrierOperations.lua -mklink veafCarrierOperations2.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafCarrierOperations2.lua -mklink veafCasMission.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafCasMission.lua -mklink veafCombatMission.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafCombatMission.lua -mklink veafCombatZone.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafCombatZone.lua -mklink veafGrass.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafGrass.lua -mklink veafInterpreter.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafInterpreter.lua -mklink veafMarkers.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafMarkers.lua -mklink veafMove.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafMove.lua -mklink veafNamedPoints.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafNamedPoints.lua -mklink veafRadio.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafRadio.lua -mklink veafRemote.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafRemote.lua -mklink veafSecurity.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafSecurity.lua -mklink veafShortcuts.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafShortcuts.lua -mklink veafSpawn.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafSpawn.lua -mklink veafTransportMission.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafTransportMission.lua -mklink veafUnits.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafUnits.lua -mklink missionConfig.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\missionConfig.lua From 473a7d5fa4b5d65959de0ad420d37c69f6c299af Mon Sep 17 00:00:00 2001 From: David Pierron Date: Wed, 30 Sep 2020 13:35:09 +0200 Subject: [PATCH 03/15] added a 'mkrelease' config for VS.Code --- .vscode/launch.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.vscode/launch.json b/.vscode/launch.json index 646c8768..fde0564f 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -14,6 +14,17 @@ "PYTHONPATH": ".;./pydcs" }, "preLaunchTask": "Prepare Environment" + }, + { + "name": "Python: Make Release", + "type": "python", + "request": "launch", + "program": "resources\\tools\\mkrelease.py", + "console": "integratedTerminal", + "env": { + "PYTHONPATH": ".;./pydcs" + }, + "preLaunchTask": "Prepare Environment" } ] } \ No newline at end of file From f732cc54d0c4e80603d427a8fe0709ef49ab7598 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Wed, 30 Sep 2020 21:00:33 -0700 Subject: [PATCH 04/15] Build and archive binaries on push/PR. Not building a full release, but this makes it easier to test someone else's PR, or for players to get at pre-release builds. --- .github/workflows/build.yml | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..9d0da6a6 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,39 @@ +name: Build + +on: [push, pull_request] + +jobs: + + build: + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: true + + - name: Set up Python 3.8 + uses: actions/setup-python@v2 + with: + python-version: 3.8 + + - name: Install environment + run: | + py -m venv ./venv + + - name: Install dependencies + run: | + ./venv/scripts/activate + pip install -r requirements.txt + # For some reason the shiboken2.abi3.dll is not found properly, so I copy it instead + Copy-Item .\venv\Lib\site-packages\shiboken2\shiboken2.abi3.dll .\venv\Lib\site-packages\PySide2\ -Force + + - name: Build binaries + run: | + ./venv/scripts/activate + $env:PYTHONPATH=".;./pydcs" + pyinstaller pyinstaller.spec + + - uses: actions/upload-artifact@v2 + with: + name: dcs_liberation + path: dist/ From 0873dcab0a43c9c2431b7f397f418306ac734296 Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 1 Oct 2020 19:06:38 +0200 Subject: [PATCH 05/15] Gitmodule points to pydcs --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index d1f0105e..d8db9cf5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "pydcs"] path = pydcs - url = https://github.com/khopa/dcs - branch = dataexport + url = https://github.com/pydcs/dcs + branch = master From f9d5c1f8de62dd3f94ee42e97ea9127076c58e4b Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 1 Oct 2020 19:07:06 +0200 Subject: [PATCH 06/15] Update pydcs location --- pydcs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydcs b/pydcs index 7b7c0322..eea75579 160000 --- a/pydcs +++ b/pydcs @@ -1 +1 @@ -Subproject commit 7b7c0322856c43ed8d1c7d29b2e30121129af048 +Subproject commit eea755798bce6cf6549df146fbff46ff3a7a5c47 From e48e88428669da58b14d4873e12da30cd77c1cc3 Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 1 Oct 2020 19:20:25 +0200 Subject: [PATCH 07/15] Added A-10C_2. Changed bluefor factions' country to "Combined Joint Task Forces Blue" instead of "USA" (support more units) --- game/db.py | 3 +++ game/factions/bluefor_coldwar.py | 2 +- game/factions/bluefor_coldwar_a4.py | 2 +- game/factions/bluefor_modern.py | 3 ++- game/factions/usa_2005.py | 1 + gen/flights/ai_flight_planner_db.py | 3 +++ 6 files changed, 11 insertions(+), 3 deletions(-) diff --git a/game/db.py b/game/db.py index 02120a45..f2b94b54 100644 --- a/game/db.py +++ b/game/db.py @@ -192,6 +192,7 @@ PRICES = { A_10A: 16, A_10C: 22, + A_10C_2: 24, # heli Ka_50: 13, @@ -498,6 +499,7 @@ UNIT_BY_TASK = { AJS37, A_10A, A_10C, + A_10C_2, Su_17M4, Su_25, Su_25T, @@ -957,6 +959,7 @@ PLANE_PAYLOAD_OVERRIDES = { }, A_10A: COMMON_OVERRIDE, A_10C: COMMON_OVERRIDE, + A_10C_2: COMMON_OVERRIDE, AV8BNA: COMMON_OVERRIDE, C_101CC: COMMON_OVERRIDE, F_5E_3: COMMON_OVERRIDE, diff --git a/game/factions/bluefor_coldwar.py b/game/factions/bluefor_coldwar.py index 70bf9467..5db15d73 100644 --- a/game/factions/bluefor_coldwar.py +++ b/game/factions/bluefor_coldwar.py @@ -4,7 +4,7 @@ from dcs.ships import * from dcs.vehicles import * BLUEFOR_COLDWAR = { - "country": "USA", + "country": "Combined Joint Task Forces Blue", "side": "blue", "units": [ diff --git a/game/factions/bluefor_coldwar_a4.py b/game/factions/bluefor_coldwar_a4.py index 5bf366f5..74983134 100644 --- a/game/factions/bluefor_coldwar_a4.py +++ b/game/factions/bluefor_coldwar_a4.py @@ -6,7 +6,7 @@ from dcs.vehicles import * from pydcs_extensions.a4ec.a4ec import A_4E_C BLUEFOR_COLDWAR_A4 = { - "country": "USA", + "country": "Combined Joint Task Forces Blue", "side": "blue", "units": [ diff --git a/game/factions/bluefor_modern.py b/game/factions/bluefor_modern.py index ca64e2f5..8db0ad89 100644 --- a/game/factions/bluefor_modern.py +++ b/game/factions/bluefor_modern.py @@ -4,7 +4,7 @@ from dcs.ships import * from dcs.vehicles import * BLUEFOR_MODERN = { - "country": "USA", + "country": "Combined Joint Task Forces Blue", "side": "blue", "units": [ @@ -20,6 +20,7 @@ BLUEFOR_MODERN = { Su_25T, A_10A, A_10C, + A_10C_2, AV8BNA, AJS37, diff --git a/game/factions/usa_2005.py b/game/factions/usa_2005.py index ddeccd0b..d6b63a58 100644 --- a/game/factions/usa_2005.py +++ b/game/factions/usa_2005.py @@ -13,6 +13,7 @@ USA_2005 = { FA_18C_hornet, F_16C_50, A_10C, + A_10C_2, AV8BNA, MQ_9_Reaper, diff --git a/gen/flights/ai_flight_planner_db.py b/gen/flights/ai_flight_planner_db.py index 3b11b8ee..e1393a1a 100644 --- a/gen/flights/ai_flight_planner_db.py +++ b/gen/flights/ai_flight_planner_db.py @@ -99,6 +99,7 @@ CAS_CAPABLE = [ A_10A, A_10C, + A_10C_2, AV8BNA, F_86F_Sabre, @@ -197,6 +198,7 @@ STRIKE_CAPABLE = [ A_10A, A_10C, + A_10C_2, AV8BNA, F_86F_Sabre, @@ -244,6 +246,7 @@ ANTISHIP_CAPABLE = [ F_16A, F_16C_50, A_10C, + A_10C_2, A_10A, Tornado_IDS, From 72ce37f008c576528e87976658d29076546d2ccd Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 1 Oct 2020 19:33:46 +0200 Subject: [PATCH 08/15] Added custom payloads for A-10C II --- resources/customized_payloads/A-10C_2.lua | 219 ++++++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 resources/customized_payloads/A-10C_2.lua diff --git a/resources/customized_payloads/A-10C_2.lua b/resources/customized_payloads/A-10C_2.lua new file mode 100644 index 00000000..bae0f048 --- /dev/null +++ b/resources/customized_payloads/A-10C_2.lua @@ -0,0 +1,219 @@ +local unitPayloads = { + ["name"] = "A-10C II", + ["payloads"] = { + [1] = { + ["name"] = "New Payload", + ["pylons"] = { + [1] = { + ["CLSID"] = "{LAU-131x3 - 7 AGR-20A}", + ["num"] = 8, + }, + [2] = { + ["CLSID"] = "{LAU-131x3 - 7 AGR-20 M282}", + ["num"] = 9, + }, + [3] = { + ["CLSID"] = "{LAU-131x3 - 7 AGR-20A}", + ["num"] = 4, + }, + [4] = { + ["CLSID"] = "{LAU-131x3 - 7 AGR-20 M282}", + ["num"] = 3, + }, + [5] = { + ["CLSID"] = "{LAU-131 - 7 AGR-20A}", + ["num"] = 2, + }, + [6] = { + ["CLSID"] = "{LAU-131 - 7 AGR-20A}", + ["num"] = 10, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + [2] = { + ["name"] = "CAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}", + ["num"] = 11, + }, + [2] = { + ["CLSID"] = "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}", + ["num"] = 1, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + [3] = { + ["name"] = "CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "ALQ_184", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}", + ["num"] = 11, + }, + [3] = { + ["CLSID"] = "{A111396E-D3E8-4b9c-8AC9-2432489304D5}", + ["num"] = 10, + }, + [4] = { + ["CLSID"] = "{LAU-131 - 7 AGR-20 M282}", + ["num"] = 8, + }, + [5] = { + ["CLSID"] = "{E6A6262A-CA08-4B3D-B030-E1A993B98453}", + ["num"] = 9, + }, + [6] = { + ["CLSID"] = "{E6A6262A-CA08-4B3D-B030-E1A993B98452}", + ["num"] = 3, + }, + [7] = { + ["CLSID"] = "{LAU-131 - 7 AGR-20 M282}", + ["num"] = 4, + }, + [8] = { + ["CLSID"] = "{LAU-131 - 7 AGR-20A}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + [4] = { + ["name"] = "STRIKE", + ["pylons"] = { + [1] = { + ["CLSID"] = "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}", + ["num"] = 11, + }, + [2] = { + ["CLSID"] = "ALQ_184", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{A111396E-D3E8-4b9c-8AC9-2432489304D5}", + ["num"] = 10, + }, + [4] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 8, + }, + [5] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 7, + }, + [6] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 4, + }, + [7] = { + ["CLSID"] = "{69DC8AE7-8F77-427B-B8AA-B19D3F478B66}", + ["num"] = 3, + }, + [8] = { + ["CLSID"] = "{69DC8AE7-8F77-427B-B8AA-B19D3F478B66}", + ["num"] = 9, + }, + [9] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 5, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + [5] = { + ["name"] = "ANTISHIP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}", + ["num"] = 11, + }, + [2] = { + ["CLSID"] = "ALQ_184", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{A111396E-D3E8-4b9c-8AC9-2432489304D5}", + ["num"] = 10, + }, + [4] = { + ["CLSID"] = "{DAC53A2F-79CA-42FF-A77A-F5649B601308}", + ["num"] = 9, + }, + [5] = { + ["CLSID"] = "{DAC53A2F-79CA-42FF-A77A-F5649B601308}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{LAU-131 - 7 AGR-20 M282}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + [6] = { + ["name"] = "SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}", + ["num"] = 11, + }, + [2] = { + ["CLSID"] = "ALQ_184", + ["num"] = 1, + }, + [3] = { + ["CLSID"] = "{A111396E-D3E8-4b9c-8AC9-2432489304D5}", + ["num"] = 10, + }, + [4] = { + ["CLSID"] = "{DAC53A2F-79CA-42FF-A77A-F5649B601308}", + ["num"] = 9, + }, + [5] = { + ["CLSID"] = "{DAC53A2F-79CA-42FF-A77A-F5649B601308}", + ["num"] = 3, + }, + [6] = { + ["CLSID"] = "{LAU-131 - 7 AGR-20 M282}", + ["num"] = 2, + }, + [7] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 7, + }, + [8] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 5, + }, + [9] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 8, + }, + [10] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 31, + }, + }, + }, + ["unitType"] = "A-10C_2", +} +return unitPayloads From 75af2d468e48c339c7f0d789892b0521fe5424a0 Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 1 Oct 2020 19:38:43 +0200 Subject: [PATCH 09/15] Fix A-10C_II icon --- qt_ui/uiconstants.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qt_ui/uiconstants.py b/qt_ui/uiconstants.py index 1a15c811..ada6c94c 100644 --- a/qt_ui/uiconstants.py +++ b/qt_ui/uiconstants.py @@ -8,7 +8,7 @@ from game.event import UnitsDeliveryEvent, FrontlineAttackEvent from theater.theatergroundobject import CATEGORY_MAP from userdata.liberation_theme import get_theme_icons -VERSION_STRING = "2.1.2" +VERSION_STRING = "2.1.3" URLS : Dict[str, str] = { "Manual": "https://github.com/khopa/dcs_liberation/wiki", @@ -139,6 +139,7 @@ def load_aircraft_icons(): AIRCRAFT_ICONS[aircraft[:-7]] = QPixmap(os.path.join("./resources/ui/units/aircrafts/", aircraft)) AIRCRAFT_ICONS["F-16C_50"] = AIRCRAFT_ICONS["F-16C"] AIRCRAFT_ICONS["FA-18C_hornet"] = AIRCRAFT_ICONS["FA-18C"] + AIRCRAFT_ICONS["A-10C_2"] = AIRCRAFT_ICONS["A-10C"] def load_vehicle_icons(): From 8402d108c06d053fb68a692c840b707ae7f78b5a Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 1 Oct 2020 20:22:11 +0200 Subject: [PATCH 10/15] Pydcs location --- pydcs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydcs b/pydcs index eea75579..ceea62a8 160000 --- a/pydcs +++ b/pydcs @@ -1 +1 @@ -Subproject commit eea755798bce6cf6549df146fbff46ff3a7a5c47 +Subproject commit ceea62a8e0731c21b3e1a3e90682aa0affc168f1 From 8ecb4cdcf41100fde9f16e1421ee1ff67e33908f Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 1 Oct 2020 21:09:05 +0200 Subject: [PATCH 11/15] Added more ground vehicles icons. --- resources/ui/units/vehicles/2S6 Tunguska_24.jpg | Bin 0 -> 1118 bytes resources/ui/units/vehicles/Bofors 40 mm_24.jpg | Bin 0 -> 1072 bytes resources/ui/units/vehicles/Gepard_24.jpg | Bin 0 -> 1145 bytes .../ui/units/vehicles/HAWK ANMPG-46 TR_24.jpg | Bin 0 -> 1113 bytes .../ui/units/vehicles/HAWK ANMPQ-50 SR_24.jpg | Bin 0 -> 1119 bytes resources/ui/units/vehicles/HAWK M192 LN_24.jpg | Bin 0 -> 1103 bytes .../units/vehicles/HQ-7 Mobile Launcher_24.jpg | Bin 0 -> 1107 bytes .../ui/units/vehicles/HQ-7 Mobile Radar_24.jpg | Bin 0 -> 1118 bytes resources/ui/units/vehicles/M-163 Vulcan_24.jpg | Bin 0 -> 1104 bytes ... HMMWV_24.jpg => M1043 HMMWV Armament_24.jpg} | Bin resources/ui/units/vehicles/M1097 Avenger_24.jpg | Bin 0 -> 1039 bytes resources/ui/units/vehicles/M1A2_24.jpg | Bin 0 -> 1095 bytes resources/ui/units/vehicles/M2A2_24.jpg | Bin 0 -> 1081 bytes resources/ui/units/vehicles/M48 Chaparral_24.jpg | Bin 0 -> 1126 bytes resources/ui/units/vehicles/M6 Linebacker_24.jpg | Bin 0 -> 1127 bytes resources/ui/units/vehicles/M818_24.jpg | Bin 0 -> 1081 bytes resources/ui/units/vehicles/Marder_24.jpg | Bin 0 -> 1103 bytes .../{Merkava Mk IV_24.jpg => Merkava Mk4_24.jpg} | Bin resources/ui/units/vehicles/Osa 9A33 ln_24.jpg | Bin 0 -> 1156 bytes resources/ui/units/vehicles/Roland ADS_24.jpg | Bin 0 -> 1109 bytes resources/ui/units/vehicles/Roland Radar_24.jpg | Bin 0 -> 1014 bytes resources/ui/units/vehicles/T-80UD_24.jpg | Bin 0 -> 1062 bytes resources/ui/units/vehicles/ZU-23 Ural_24.jpg | Bin 0 -> 1119 bytes resources/ui/units/vehicles/ZU-23_24.jpg | Bin 0 -> 1035 bytes 24 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 resources/ui/units/vehicles/2S6 Tunguska_24.jpg create mode 100644 resources/ui/units/vehicles/Bofors 40 mm_24.jpg create mode 100644 resources/ui/units/vehicles/Gepard_24.jpg create mode 100644 resources/ui/units/vehicles/HAWK ANMPG-46 TR_24.jpg create mode 100644 resources/ui/units/vehicles/HAWK ANMPQ-50 SR_24.jpg create mode 100644 resources/ui/units/vehicles/HAWK M192 LN_24.jpg create mode 100644 resources/ui/units/vehicles/HQ-7 Mobile Launcher_24.jpg create mode 100644 resources/ui/units/vehicles/HQ-7 Mobile Radar_24.jpg create mode 100644 resources/ui/units/vehicles/M-163 Vulcan_24.jpg rename resources/ui/units/vehicles/{M1043 HMMWV_24.jpg => M1043 HMMWV Armament_24.jpg} (100%) create mode 100644 resources/ui/units/vehicles/M1097 Avenger_24.jpg create mode 100644 resources/ui/units/vehicles/M1A2_24.jpg create mode 100644 resources/ui/units/vehicles/M2A2_24.jpg create mode 100644 resources/ui/units/vehicles/M48 Chaparral_24.jpg create mode 100644 resources/ui/units/vehicles/M6 Linebacker_24.jpg create mode 100644 resources/ui/units/vehicles/M818_24.jpg create mode 100644 resources/ui/units/vehicles/Marder_24.jpg rename resources/ui/units/vehicles/{Merkava Mk IV_24.jpg => Merkava Mk4_24.jpg} (100%) create mode 100644 resources/ui/units/vehicles/Osa 9A33 ln_24.jpg create mode 100644 resources/ui/units/vehicles/Roland ADS_24.jpg create mode 100644 resources/ui/units/vehicles/Roland Radar_24.jpg create mode 100644 resources/ui/units/vehicles/T-80UD_24.jpg create mode 100644 resources/ui/units/vehicles/ZU-23 Ural_24.jpg create mode 100644 resources/ui/units/vehicles/ZU-23_24.jpg diff --git a/resources/ui/units/vehicles/2S6 Tunguska_24.jpg b/resources/ui/units/vehicles/2S6 Tunguska_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..94e5ee27799a380cb5376bfd758a0c11f446d2bb GIT binary patch literal 1118 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!xw&?&{&VNY%@!BSFQG&Xy|Z+aZah_m)AeS zr&i297N@-JnqJP^_tPYj6&Ci2Ml>W%0)0d-CbLuS@Yd{ch<@!Zh2p^06$ zJZ1^Z?2XnwW}d#TerkO8BPZwOhb1pZRc~OLD08qmnc3EO*5}`{j&F0PsJxb5e~NvE zLG8=*t9py~^nJSa%5-YMs}~`niC(5!YJ7954R)q<$?+ zzn(H-UiaRLzuN0A{He)Xw`kLz-kDEWR4zVkRHzqUn(>jh#Q2+ruk)c>dE1wsEPAE1 zhuyBIfA))7*MguQS-~{{il4d@=h`JLzLLKFv8(8zWsf&r)Mb+Ax@+=U=Aws^%=-}O z{%yuV&JVRWTAGJV>L@6C6L|6szpcii$?H{G#QyQ`n|v;Ftr~+{&8Ag+(c9cIul?h^ zqV9QS+hup9hNRmP3CDLR+mtQp>R;m{SnmCSZ?X32Z@ZPn96sG$a*KWCfhYf_UeB!K giPgJVGvm8o#AdIGzAfrH`$+9(ru_e#06r|mfdBvi literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/Bofors 40 mm_24.jpg b/resources/ui/units/vehicles/Bofors 40 mm_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dda787d8bfe31128395123b4399f313ffd66ac47 GIT binary patch literal 1072 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!%O>ZSKT7_NAc~JbaEERo_(eMVroV=^ZBU5 zvqKssABIozZYWR={Bu6*v0wg5u@`0A?Np*OX5PGzP`Gmg=NtaVk!K(Mo?RRGVE3m- zt!2}aPsCX=^zGfb&i3h~zpBEXJPyY$K6vu(xy`)$y=LAw^c>r=!)7K2a340_cBkZ^ zCG+yC_4PZKB&=O|-|^Awumq{69x4ol+j~mavR;47dHz*{;Sjw`$C`H+}Fl iTXe}mLRjkP);Y`*IL}#^iQX-I>na*FXX!_t|2F|a+o%ly literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/Gepard_24.jpg b/resources/ui/units/vehicles/Gepard_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2775a847d56c92ae44b33d3dd41a2a493d2960d GIT binary patch literal 1145 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!&|nM!h9U-tdGd)UHxLcY?Ax-2(<~_C0a7M z62EUeUv7Hr^{#pQm*4fcbn3%F?Tsyy48koWjz5fK57|{?`%PV;rt#;os;_GvTYgQe zS-tU!=SSru;^Ak$J-WsbzQoZy@4)lP=WVl^YCJzO$Nk(Kdt`TE$DWBBKSOE39l1S^cFfgI8w389>aKJdpcwX^l{ zx_H=j-w%N&nz?)a#awze_3%`=JNpzTE)vq~Uolldpio@lKf{5SN*`G^d9C>6`p0pO z-Y0<->^l|v7}lF@`Z#^M)p2F>n}0U!cH_Hb{V~>e>-Sr4EJw*hT^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!@GYc=XKRXxrVwbpqZJ=E2`^JP5GR_(cIwyt?8l`KpOOYdxty|>@%{l62o z+6Q!Og4bqp1RZ;19q}Y*V;jf8dY=cyef3e-FWTg;x?j!j_NE0^+ves!=LjpE=;`rkb)Td9ojHN7m04@9Y)Oyq za(g@f@LcmZ0oq6NRaPyqX|((JF1vNt2eZAYl{&eL&syk}?cJ2;Ci%Ac_+wX5gCoAS zM^j4cWPjv+%6Pi9IwEnGQC=?xYtzTW6OZ|uF0B4=>QXl6<85u%te2&HdZMzzf&c6Y z*`p#MyDsN_mz_}Ie(=N5rCDOvzs-NCS*Vh!GO^(F7KRfMDNV)E^W;Cw-8OmQ?WkQ7 ZEgaIU8}Ix*=N_f8)M`@sl`{MPHvtEMzu^D? literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/HAWK ANMPQ-50 SR_24.jpg b/resources/ui/units/vehicles/HAWK ANMPQ-50 SR_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..174088636d5622c5b7c48c1e516f9e0e4229f7ca GIT binary patch literal 1119 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!>eU`Ha7X|J`eiyXO+2})t6Q2(HlR-g?P>l zFY~)oa>D*pcmJD}srN4EJ)9TV@%rSdmAOkg?wNiTjoIe*=IiV0ucK;4Lt>x1(1~ z{LbWe^~wBGYfrAe?J7RwgO@nNw{!ek3(f9nTzF@)^2wF0k^+A(=I0CE-7fLEuc-L` zGUMQzKaL-+YCR*SB}ZO|{WESw4yV#57*&Oy zuFTClDd5w0U_$u9$LmEsx4c!on^IPu@wtD#tQ)`A#*C8NZg*L-)=nxH@_fG5{kq~E z+s5NLGlb_G{1Y{b_B-XJ)7tT1;v6ZB^~SeMFTC)Sv5^zpJwJ3$ceRSa3C9TvNfDnI z<(&hv)_S{Yp4pxs>Xz2$YyUJCdoXvwo`}yP zUmskZ>wMtXvfg~Lr5UL+A5N~;pT>8<^6vF{)k$5NHZDKkSj#ScY4z$(B!^yz*+5i9m literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/HAWK M192 LN_24.jpg b/resources/ui/units/vehicles/HAWK M192 LN_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08544b415376baa3ba59194f34ceb7f308b602fe GIT binary patch literal 1103 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!`r&!Z#}>HXJuaTh&@`dW^eS-37Hpi*^CPw zya`KS`gnCO`>QIhi^&S#(&aZ;)K(wcb*%HzvZiQ{$6I@*ev+5p8#BiuZ^2_(Ba2nn z?M2p|)XrWSt!HsxWzFL+N0VYJZXc1F#(Jl0I`4L_l*^CH0^fLjytbj++h*ORsrM|4 zw+8U%vA^t^9u+IOX|ddj*K7C0KYE+`^xygZv!B|YdwUmn_18SPw!LNjp5!%IhCcst zwsC4k&WfG5;CSfo-JOyz?7g0r%$Llb#kz6xhPf;`j-j6fe|~$cw);HykL^c{qkPL( z-8yZe+R&f7u%~*$fn@o>AD6yuySj~U*49bxrQhPS0<+(Sy!rZcx5F{c#FGa;hcnDi zGU9(8zVF)4gMDisC*C>z>Y01T*V4ZWR$$Fh|YC%?*SEZWmublh)wW)?qN^lkfjd6Dn7z5VR;_QaQC9_y;Z zf5gkay?r<8-t5X0>m{t^nsz(hx{7F?w7!$6G`GJY&!qawZYA%NN!E+4omS0{DL36K zdu;*RNtTK8?gY9<)x5tauXU&7@|$*{CDk{I4nIx)dOZHvrnZIk`NphQ%A=p;wz=F1 Se{pkB*KX|_otYc|-vj{D$jn6m literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/HQ-7 Mobile Launcher_24.jpg b/resources/ui/units/vehicles/HQ-7 Mobile Launcher_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7fd18f05b54ac5aa33434141d28326330380b340 GIT binary patch literal 1107 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!}~oGJ)dxWT3dX)PI23{^}26WI-*?_dky)b z8#pDuKHD7rh;6Ic+>*mVle8B-SP;?7%8-1SY5i-dSeaL?=hHs1Rfjj;`>{N>>EY$y zd2iXRorSoIs>@b0AFoq>Ae;1b#(#zq{r?QYq4_nzE3*uZ;_tYYH=JTU<8@|1-*HL# zsNhvkLNr%&?9;h+YO&t-ipOOU#mD^~l&pJxz-sEZjDzyA!rYSED@y_@?do;ZJLSJ}t!olR=D->WDb?^XmRybdKcj`&CHPzua zk1v%^7k#!%|A=Sso0F^Vt$zO~?9&eC3o;FcKjr3TulUc6svz^ju~AQ>&+cosIQ7i<`u$5? z+Vfuv-zjq!EnfI)ns`xU?91!(v(Mc)q->Dyw4}hbs=w7n)NJ^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!x!CERUw|HdsaoNx-m;0<})%fei>)~xcc_# zwJA2{!pB(*l(rpL^fs2eYq#}u)N6i`?S?V(7ANJWEI1*;e_TYzIqRjQmiEf`Qftc1 z1=oKo+sHa+%YC6=4Vbk5n#Br z^X)OizuEek8haxwT<5#g%uDJ${I{5I|C?EJS|m;~tBXGPrQda|OShn3vG=sGB-125 zcjo;pU%$SNeLKG|;cDK(wrk=wbN`x6V0>;jb@36;67h|0YHPFfo=B(MRN8R&JRf_K z^;gp)cV1XcU3%og@s#VD%CeJIun5%FYAo9E*sNDCX7`8IH&MB3KCIla)Bo#5{pC4T zkCt4tF)yyJR{8$zbJP)G4w1J-fBPSvkJ4Bax@5x5i%~z4u3h@z(QW;)$BsktkLKG4 z(v>N-+r_=sPg>o2sJ>%S*YnaPTczFt<8 literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/M-163 Vulcan_24.jpg b/resources/ui/units/vehicles/M-163 Vulcan_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f5489310a815ba696f442d3aa18f47929ce4fb60 GIT binary patch literal 1104 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!}~q0Z+$wG=BZ8-k5tYJo$^HL(Voy1F}L?_ zN!WcP;+^(9K8thK;WoE+9^ieJQ1WyBmn9qXyk1JI;yS+kmHdlcwMSkGdtF>;ExdA_ zmcHoy`yT&X3_1=dXt2y{pYyl!4{K6ygw_NxhqVV8_VF6#ubnKN`>p?*Ggt6>&D@27 zizVKb6~6vn_=-Edc;Ve0xAyPfcBJdb3R{c+46nl$-JfQYY1M9P=kokNgZz5?*v#OD zR7r`4_m?k^>dar0ED>F>*z%_{U*;O0Nmu+@;*PI~nq0iQbm)Mr@0W3|mQRn* z`n=ZosMxPU?QIF|7TPd(TxB9)Io0HhcY@sFNy5A5Qf#9TDtIJm*)~*k>Q5vEVVrL4b9jdXH;Y8E5&&hi+W#jnpkzVb(w-OJ<&Kk;&VN}9Tw&%A=dK8x3` zB74^~9i40J@R9e)WX=ay7BSkF-DY6@d}pJC#M#m~xewEp=GW+zM$h;&HGbMHbKPlg SBECH8(w3UKw3=7>|4jhw+rHQU literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/M1043 HMMWV_24.jpg b/resources/ui/units/vehicles/M1043 HMMWV Armament_24.jpg similarity index 100% rename from resources/ui/units/vehicles/M1043 HMMWV_24.jpg rename to resources/ui/units/vehicles/M1043 HMMWV Armament_24.jpg diff --git a/resources/ui/units/vehicles/M1097 Avenger_24.jpg b/resources/ui/units/vehicles/M1097 Avenger_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1ed509750310d4e13d7631bcdd696733324c978a GIT binary patch literal 1039 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!{v|9w%0FxG2zb3O>2T{7icCe+@W>XIL5`! z;-ih1^#q~it)pL~5A{NvTn_c^(WpAD7;d3|!Ucx=D^d5r#K!4r|5$~{cJE?QoJ zyNv_gQ|*t$3p#$PT^V`e#L->JKf@y*#`e4oGV_}{00ULJa3aN
t%~RRX$1JIAQI+^Ig`ZioA2G z96UGV7Sy+j1WnCk7Wv_HDk$P~>5h5LdG=Fn|EOn6F-SdLX4U^;QP*oQvzLHpIj}n#s2?I0M^)` A!2kdN literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/M1A2_24.jpg b/resources/ui/units/vehicles/M1A2_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d0bf9a664fca42babfb9bce5df65d8ba61ccaef0 GIT binary patch literal 1095 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!_9wZzO8c(`RF=z&7|nt2R`}Aw5kZDGEJy! zw>-GKV*634ee)l2Ds9~>aC=o-XQ%^<;JG5Zk>>a>0qO?95(? z=Z$?=uSYxQS4iAGu_-6Fx9|9+JxwgRZNZAN1!n1=o^9Xqx7aN-ec#2_ua^bFJY}b6 zFfW&%8D}Q*8V4~zZyE6OVrcrA(b5gYo``$eMw0P2~Pp$7g$QFYTOpF``)i=55Z2mnBXf_lov4^VIXQ3D;RY$0S3% z@Yi+*DUC%Yi|#g_T~cx@Y|gfD`^+ip9@v*l{W)m+T_)up({|UNUl(<~>QNR=DLUon I_vZgi0R8m6X8-^I literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/M2A2_24.jpg b/resources/ui/units/vehicles/M2A2_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..037dddf1c83cb5afabe8f6632d2741053f69c51a GIT binary patch literal 1081 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!}Yz}H(y>PbnlL9Uhmvx&OMJWU)!vF&Bj)z z&Gf2*j^TtN!}&3N+GqC!<>l3Q*P0v)`K+qbFu8ZHk?m@MEgLsVs!Y6Ydg1k1Ynj#j zZ0ky`&UbwE$X}P#_3Db#BoWVCuSp?t{6X2aHjb6nt&@Je(0hAeom+)$;q|3StUQmO zT6{SxsomT2b@H6~!5NpkUR3c-e^gef+?Vn8&$QRNM;-~xczs>vU+7icqs^l7IhQxx zHLTk6Z|b9tzK92(swNqS={}pJbT4@Bk%YO6Cx)#)s~vMLMB(oF@_w%(qmQe8C2pR7 zY01Bna#J7Os_)w4xVT~4t(MagFNGUU{%5F}r@i^Z{Ufq&?;h%!3d;1Wm7Qr&vv}cN ze`rf@rss`wAwuCsrnz>vL;IiW$}D)|HMd?qFy`vF#$w?GTl+l4^CVjqJl$J)Ok>fm ztiYbFDNaikFJ!#1-sRLHOD@@+1yxla{o9>)nm4BQm2T%LdfoH(ZR2ZK(dio+*KeKR zy(p&p(!}GI+jR_{OWwY3_f;xm`o3b#zRR3-oaCIDnWwRHdh literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/M48 Chaparral_24.jpg b/resources/ui/units/vehicles/M48 Chaparral_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d01a9cc10444e0ec52e7bd0971e1a0d60929eac GIT binary patch literal 1126 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!}~uI1L8EhcuyCyuq))xNv)gfZr_^_|6`f1 z)z4ftoz#?jqSgH$R|!>oI(|mrB+EO0i;QD-duC;emX`FDx;)?G{5Ut>?@H>{ZTl|C zXg-S&oIP*0-=li}b91vliU&?oG1i+U@xkfXlm6n*Jp4-&v$va-mw&$V^5oX^q|atw#k(zEPblmXjm*n@vpBcE_>#}|X-=7WI_ta*k4%g161=@q z-Sm9+Ki#H_3){WsU3=!H`^><4o8SS7uj=+wi>#Kd=6$=gb=geiBRNyrRGX%svwSRR z6B4v{>c%e3n@e|aPb>JrJ@2@z|60C1YZq!Y?LF@%E;V(Hr|rwl8IApCI9iNWPcX7n z?)lfY?Fg4ALv!B_(}y3G{VOi1L{Ib+FP=Q>WlpIvd#CQKTX!G#M(ErQXgpUur_lek z7=OZ==xZgBrn4U_PB>byvg1mR_Jks%>Tt<5KdJ*7|D2vW#mg>sp?Bfy-AhHnMbsWI zvXTj$bxZZaHqUP-oQ2HZTDMt0zWhhavqXA_?!x&zj{@g*E!kARM`O{JZ=1xm#2!2D z+1@1Sk@i{KI?z+|P3=qd4`09TpTtt+acM!pM$IJ7f5LrV0zJc~HJ<7_?e-yVJ(JtQ orX%N6CN6bad;2N($4{^<^SIV019Tq!2kdN literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/M6 Linebacker_24.jpg b/resources/ui/units/vehicles/M6 Linebacker_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..615368daf1e54e97484eff2ac96ef030a6568da5 GIT binary patch literal 1127 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!@GBRx;YPxW6n%;pI~lz;N;85{ztW(DK|*;C41w^qxrm7kM2E}dv~&O-qQ#F8Gfxiwq{yKXK>Hl^NSwJCFQFr zEuU(*?ScDsk^c<3+6UIwxUS0#5>Br-Qhc?x&7rnzp7zEM=lj;bd**HHnmqLh%aRvN zC9)hZ>bdgvOxoM|P2=)Mx%SL8F9P>n_q>pp;|)!}E%;mXPMgcQtDT*}^V<7t>!mjTXW%%tX4j%yGxT~~ zuhcF~%x$cm^LVRBsMRLX_E&P^SJ!^!-+b$6Whpo7ZKDGRim%%gcIDKGUh7+Nt?Awa zrOk{57q(AxU}>IH{-Dkz(EHY@gGv7x+G~_ozbfySeK&ultI$GA!BtE@Wm10}Gd^1$ oC-^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!?};4cYdj!UFF7hGw?=})dYusTO0o~aEiWU z*sL^pa_`OqYyUHJY>atT6md3{c}s!2=F}-Y8V^4Il=@trz2aHQ#F)7YH|$7al$5ny zT{U^W*>YPA=jpzFtN#f}uh)?`n=vk(7@HY+<}d4h3QplkTX_N3Y+zh}(qZ#%p8*4gDpE=SLK urqh;U-yayhMOIKyWp==JZuJ>*jB{)%ewCbj>nh6CBJwVJwYs$Y|C<0IU9i~z literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/Marder_24.jpg b/resources/ui/units/vehicles/Marder_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3717e28d591aed4fa4b3db715e0847b27e8644ab GIT binary patch literal 1103 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!`pTFYjjgG-s!!4R6D!rq(YFp-B!tKCB3u% zGi+IF_Uq^AIO|8tKJN)Ew)@XutTnss%v*)zpNx??KNDCct$MtQY5%qP*YsBze)ISi z{kPtAZp!7$;U22<*lrg}KGHLsd$)gS<=p$<=1pEzJJmFLbxU_%`quQ+1h%97VsL6hjB zAwRa4Mt^Zjk=Tcw3>?I}8c{MHkXc_oKRl~*4!?q6SZ`SL%-7|;6b{1T=kH^V0! zZ;I%%s{YSl<+o=y_l?DV-yODHDVc0iy?B?W zh1%MTMLTR4N6GREENidZG2@^`@%$-n$A8HPe_39C$bN;Zltt6yYW*|a!ioMiCBN#n z1ctv&ky*6A{j0_zM#UWyb}^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!+V>?mjQR(K1O@0)On;zo;kmj;r--WJ9@Jp zRcG#+^DXRG{_Lj(DV1hV9>}p-g&VG^ao%w~=j_yP{i&)u6P|M02VS0VXzRC^Yx&}n zabm6*}F^kv~yK+p17&G^#vVrypb@^Ff{kQ+%-qlT{(ppr);pFVLE%I+IQ2C zN7Ifk{LvqD#YS<_%dlxx`)}(-&hb{6*mlRNdGh4@66dpC)CjLV|47#?d}puA2GOv> zKPgY1GbEI(SKWPG|0{P!?t9hBM=kR;Q&d{c#}vovO?`Z$gx4VIWtH7cyMRyrmbpL9 zt1wtT`LZfBs?Mooa$NelzjLaBUH3)wlpL)*y8h_ww}VQF~5-OHEP1|M0vbN&X4`2s)8v|mgPYI|~A`GMz-Ja(CqH`(X&wsgk!lV{O6bZa%)yT zQh1lz|8D-ZF3nYaPo{0z&vPgCM(6YUY|j)07h5V{zinC^@WJ=h%V*J=b{F-GpT4=} z@xDL!t*dCyYEQ$(^6nq*{#(CNbx(o6&Kzg-Sd< T3qski1I@p>R^?5%$N!rELcZTq literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/Roland ADS_24.jpg b/resources/ui/units/vehicles/Roland ADS_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3ee30605d5b4f37982f9ffed12f886662c78b0f5 GIT binary patch literal 1109 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!xw%dqXOQ-sOv|vy}3KrzR6MBoe`aU>ShS< zyozIw`w#8-&mf;w9vBl9J$vTDTT4%bE3ap6e8XGx=%LW{PRVC!Co9Ems)9n7JT6xC zl$~>5`0IDQYrkB$cJB+gXq{NMb7iibYPQnTxX-Sw7Zh3CA}!BV&G{A1Y ze1FtDtd{dzpzV$=$vYO;#4Xx0iN7-TW4iqP@FP6z)8)Tx50_Y~DGHwYRadI>kMCOW>5MJEXT}`k{Ckoy;;ZEG z{3wm(Z=d*f?tjR4&GkcTZa(kM3CxBKANHOz{1p=ap*8!`#@;n~p`rfgF3c;uz`uU2 zNKoh#yP$8AAK0e7bMJd}t~%oizwX^@3ex)=Sth<=e;m8My@oM!p~rXQJJP4ON${Ou V@Q>a5`Ms-Xuh-|P7b5=O1OWK!yzl@3 literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/Roland Radar_24.jpg b/resources/ui/units/vehicles/Roland Radar_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5969b934fb0f76cc4c8e2317bff0403cb2bafbea GIT binary patch literal 1014 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!~N@%9$j|WzhevUw~hyC{aNp<_qJC(tubBu zN?hRYtO~u5W2d5`SE$r1|CpTd`m5=S^Tkra%@>P*UGlBXXUSK&^u~pC=8O*uN=V?YJ;zQxzRF>LYTDzti!O@K_ioELapE-F ziC@K$lVUQqr65yTO|3+8wWdT#A_Soj>8oZ_O`Dfq3=3l9ELcz4DR$ z1>bl+y$y=>`pB^D)Ase>Z#2~lxF*NgcPO?xJEO5Q7+`hg{y#L$g zum#s_f}S3_Wi%ybzM^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!@Ym!zO4#BpSWyg_U#o3jOB^9*(Hw^USBJx z`myUr70Z;&{|p&?w;hF7eLL?X99O@#;+VZ~l%Uz(rE6YHGcuU>Pr=7iYt^Snf1m2#p}zKElY_5DSw|@Smj1KROAo3BO+JrBN?^Ca!Y?!2oL z=C8Zp8g;}-PVRW(-}!I7bZl2iyt!uByf*9n`Hz0f|1+d6SDmHO^`GIk)#ilf*)f{z zH~ws0zGZ&0eLCNB&DD{&UTyoNv!W@@VYS(XNC!*im-DV3^;{6=Sdip8Iaw|xRA;YM zPrcrjz^JQ>C9_0Ud07d{ioLzseca-PLqJke^tEZWN*^R9EIF~JF8S&9cgLTe6$z6& zrgra|OZ|=QI_IJ+>td1(&Ckx;yE@zTg5kHycSk1XB)t{PnQr;G|DpWKZ;QHil_b`B Zt_%yaR;;Pbbp82tQP-^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!xtfu`qrSGSCqGOrp&sR8fNj2Z{M8lQJ?-Z zh`o+e+kSQFymOzvNi(ewa6Z-CSDn5td-~)fyFUA{+}eBDV<-1BgU5C=MXuJRE^Oaq z8+}C1G*;sP=Nl(z&iuaK_L%mmb*We8Nd!Im zmwluw-;$ZlF7mkgv*YnELm!phW9IWO$eLT%^v&a!Xp~u@+!rI!yIbT6FI#*$YoD-w ze)6>^eg0o6RUS7S@?E-rZMmJm$0~UvUiU!uGMn{g0UkC_(myS{o*BEaS|$7LO%t(= z=QypLduKAmP6ZD^#KXZXE#0`tZYRCJ>zMU4-%knb zootcr$?w02W*`2gGF^Dj^#Yr+gLMIqGt*v9{PJ~C*Ts{cCfD*U`BCl3A>sC>>cP&V zrhAN+-n)5T#y~}Q*Mv>$D(oM+igwTTcZi-NdTnxbddam(w>;ABw%%%O{v~RAv?^@k h;>XTg+J4=Yi+C)_v*4|5)vt@LF{`YVF4_OT2>>Tg#_s?C literal 0 HcmV?d00001 diff --git a/resources/ui/units/vehicles/ZU-23_24.jpg b/resources/ui/units/vehicles/ZU-23_24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4dbf6d3119c071f5bec9c5dbcd4dc7e5a31d2981 GIT binary patch literal 1035 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!>grNX6Xp=@hV&mm+rLAYFqO0v`yifhLlg9 z2SiW2in=nvU&p{nMQ~2)eAd5L%0&-KO;y>hdhB?q-DVN9_m=rnMK;PENZWJi__65@ zC-lD7x(4hEx!sb-X?gCwAG@eh*5>o}1edT%r>4S52f{m! zE{%Dr5^;m~u8K5o$*kPDbNn{O-8mM!@0F`|f&UJZCHLJpzN+l+Sz*12QuGGM9sX8kE=KdQ}K8ymZ!?Pw1d`xNJf zweLLNzYSeuW4MOnd)%$cio`ANdH3IM%2>4Y^j+PfF()@vcb`qw)ie1TmZm+oXUQja zuez*rzq5ck%ozjU}^pdi=i$016qC{{R30 literal 0 HcmV?d00001 From 01220800f3f0f06db14506dfe9b6856bc044faa0 Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 1 Oct 2020 22:47:58 +0200 Subject: [PATCH 12/15] Fixed Viggen icon --- .../aircrafts/{AJS37 Viggen_24.jpg => AJS37_24.jpg} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename resources/ui/units/aircrafts/{AJS37 Viggen_24.jpg => AJS37_24.jpg} (100%) diff --git a/resources/ui/units/aircrafts/AJS37 Viggen_24.jpg b/resources/ui/units/aircrafts/AJS37_24.jpg similarity index 100% rename from resources/ui/units/aircrafts/AJS37 Viggen_24.jpg rename to resources/ui/units/aircrafts/AJS37_24.jpg From 44dcdcc8bb4129e1ee62e12b55f2fe00ed9ef652 Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 1 Oct 2020 23:17:08 +0200 Subject: [PATCH 13/15] Changelog update --- changelog.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index 30da09d0..0f60b72f 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,18 @@ -# 2.x.x -* **[Mission Generator]** Use inline loading of the JSON.lua library, and save to either %LIBERATION_EXPORT_DIR%, to %TEMP%, or to DCS working directory +# 2.1.3 + +## Features/Improvements : +* **[Units/Factions]** Added A-10C_2 to USA 2005 and Bluefor modern factions +* **[UI]** Limit number of aircraft that can be bought to the number of available parking slots. +* **[Mission Generator]** Use inline loading of the JSON.lua library, and save to either %LIBERATION_EXPORT_DIR%, or to DCS working directory + +## Changes : +* **[Units/Factions]** Bluefor generic factions will now use the new "Combined Joint Task Forces Blue" country in the generated mission instead of "USA" + +## Fixes : +* **[UI]** Fixed icon for Viggen +* **[UI]** Added icons for some ground units +* **[Misc]** Fixed issue with Chinese characters in pydcs preventing generating the mission. (Take Off button not working) (thanks to spark135246) +* **[Misc]** Fixed an error causing with ATC frequency preventing generating the mission. (Take Off button not working) (thanks to danalbert) # 2.1.2 From f381bf85a457310db7236664ab0a66775af5593f Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 1 Oct 2020 23:17:32 +0200 Subject: [PATCH 14/15] Fixed JTAC script not working after changes made to lua files --- game/operation/operation.py | 61 +++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/game/operation/operation.py b/game/operation/operation.py index 57ff5c32..4bee75b0 100644 --- a/game/operation/operation.py +++ b/game/operation/operation.py @@ -263,31 +263,38 @@ class Operation: trigger.add_action(DoScriptFile(fileref)) self.current_mission.triggerrules.triggers.append(trigger) + # Inject Ciribob's JTACAutoLase if not done already in the plugins + if not "JTACAutoLase.lua" in listOfPluginsScripts : # don't load the script twice + trigger = TriggerStart(comment="Load JTACAutoLase.lua script") + fileref = self.current_mission.map_resource.add_resource_file("./resources/scripts/JTACAutoLase.lua") + trigger.add_action(DoScriptFile(fileref)) + self.current_mission.triggerrules.triggers.append(trigger) + # set a LUA table with data from Liberation that we want to set # at the moment it contains Liberation's install path, and an overridable definition for the JTACAutoLase function # later, we'll add data about the units and points having been generated, in order to facilitate the configuration of the plugin lua scripts state_location = "[[" + os.path.abspath("state.json") + "]]" lua = """ --- setting configuration table -env.info("DCSLiberation|: setting configuration table") - --- all data in this table is overridable. -dcsLiberation = {} - --- the base location for state.json; if non-existent, it'll be replaced with LIBERATION_EXPORT_DIR, TEMP, or DCS working directory -dcsLiberation.installPath=""" + state_location + """ - --- you can override dcsLiberation.JTACAutoLase to make it use your own function ; it will be called with these parameters : ({jtac.unit_name}, {jtac.code}, {smoke}, 'vehicle') for all JTACs -if ctld then - dcsLiberation.JTACAutoLase=ctld.JTACAutoLase -elseif JTACAutoLase then - dcsLiberation.JTACAutoLase=JTACAutoLase -end - --- later, we'll add more data to the table ---dcsLiberation.POIs = {} ---dcsLiberation.BASEs = {} ---dcsLiberation.JTACs = {} + -- setting configuration table + env.info("DCSLiberation|: setting configuration table") + + -- all data in this table is overridable. + dcsLiberation = {} + + -- the base location for state.json; if non-existent, it'll be replaced with LIBERATION_EXPORT_DIR, TEMP, or DCS working directory + dcsLiberation.installPath=""" + state_location + """ + + -- you can override dcsLiberation.JTACAutoLase to make it use your own function ; it will be called with these parameters : ({jtac.unit_name}, {jtac.code}, {smoke}, 'vehicle') for all JTACs + if ctld then + dcsLiberation.JTACAutoLase=ctld.JTACAutoLase + elseif JTACAutoLase then + dcsLiberation.JTACAutoLase=JTACAutoLase + end + + -- later, we'll add more data to the table + --dcsLiberation.POIs = {} + --dcsLiberation.BASEs = {} + --dcsLiberation.JTACs = {} """ trigger = TriggerStart(comment="Set DCS Liberation data") @@ -301,13 +308,6 @@ end trigger.add_action(DoScriptFile(fileref)) self.current_mission.triggerrules.triggers.append(trigger) - # Inject Ciribob's JTACAutoLase if not done already in the plugins - if not "JTACAutoLase.lua" in listOfPluginsScripts : # don't load the script twice - trigger = TriggerStart(comment="Load JTACAutoLase.lua script") - fileref = self.current_mission.map_resource.add_resource_file("./resources/scripts/JTACAutoLase.lua") - trigger.add_action(DoScriptFile(fileref)) - self.current_mission.triggerrules.triggers.append(trigger) - # add a configuration for JTACAutoLase and start lasing for all JTACs smoke = "true" if hasattr(self.game.settings, "jtac_smoke_on"): @@ -315,9 +315,10 @@ end smoke = "false" lua = """ --- setting and starting JTACs -env.info("DCSLiberation|: setting and starting JTACs") -""" + -- setting and starting JTACs + env.info("DCSLiberation|: setting and starting JTACs") + """ + for jtac in jtacs: lua += f"if dcsLiberation.JTACAutoLase then dcsLiberation.JTACAutoLase('{jtac.unit_name}', {jtac.code}, {smoke}, 'vehicle') end\n" From a44cbe59724ff89980e72654f7c40c85a72065b5 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Thu, 1 Oct 2020 23:57:53 -0700 Subject: [PATCH 15/15] Tone down failure message for missing plugin file. This looked an awful lot like an error, but it's the common case. --- game/operation/operation.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/game/operation/operation.py b/game/operation/operation.py index 4bee75b0..c0ce5e67 100644 --- a/game/operation/operation.py +++ b/game/operation/operation.py @@ -236,18 +236,19 @@ class Operation: # Inject Plugins Lua Scripts listOfPluginsScripts = [] - try: - with open("./resources/scripts/plugins/__plugins.lst", "r") as a_file: - for line in a_file: - name = line.strip() - if not name.startswith( '#' ): - trigger = TriggerStart(comment="Load " + name) - listOfPluginsScripts.append(name) - fileref = self.current_mission.map_resource.add_resource_file("./resources/scripts/plugins/" + name) - trigger.add_action(DoScriptFile(fileref)) - self.current_mission.triggerrules.triggers.append(trigger) - except Exception as e: - print(e) + plugin_file_path = Path("./resources/scripts/plugins/__plugins.lst") + if plugin_file_path.exists(): + for line in plugin_file_path.read_text().splitlines(): + name = line.strip() + if not name.startswith( '#' ): + trigger = TriggerStart(comment="Load " + name) + listOfPluginsScripts.append(name) + fileref = self.current_mission.map_resource.add_resource_file("./resources/scripts/plugins/" + name) + trigger.add_action(DoScriptFile(fileref)) + self.current_mission.triggerrules.triggers.append(trigger) + else: + logging.info( + f"Not loading plugins, {plugin_file_path} does not exist") # Inject Mist Script if not done already in the plugins if not "mist.lua" in listOfPluginsScripts and not "mist_4_3_74.lua" in listOfPluginsScripts: # don't load the script twice