From 6b3625f0ea6fb9b88b04da3275aaf9dd282e27da Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 13 Aug 2020 00:36:28 +0200 Subject: [PATCH 01/30] Forgot to put jtac in changelog. --- changelog.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 096caf61..5546cd8c 100644 --- a/changelog.md +++ b/changelog.md @@ -10,7 +10,7 @@ * **[Units/Factions/Mods]** Added Rafale AI mod support * **[Units/Factions/Mods]** Added faction "France Modded" with units from frenchpack v3.5 mod * **[Units/Factions/Mods]** Added faction "Insurgent modded" with Insurgent units from frenchpack v3.5 mod (Toyota truck) -* **[Units/Factions/Mods]** Added factions Canada 2005, Australia 2005, Japan 2005, USA Aggressors +* **[Units/Factions/Mods]** Added factions Canada 2005, Australia 2005, Japan 2005, USA Aggressors, PMC * **[New Game Wizard]** Added the list of required mods for modded factions. * **[New Game Wizard]** No more RED vs BLUE opposing faction restrictions. * **[New Game Wizard]** New campaign generation settings added : No aircraft carrier, no lha, no navy, invert map starting positions. @@ -19,6 +19,7 @@ * **[Mission Generator]** The briefing will now contain the carrier ATC frequency * **[Mission Generator]** The briefing contains a small situation update. * **[Mission Generator]** Previously destroyed units are visible in the mission. (And added a performance settings to disable this behaviour) +* **[Mission Generator]** Basic JTAC on Frontlines * **[Campaign Generator]** Added Tarawa in caucasus campaigns * **[Campaign Generator]** Tuned the various existing campaign parameters * **[Campaign Generator]** Added small campaign : "Russia" on Caucasus Theater From 6ed407f656643abe4c0157c309b3b9e596a03e2d Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 13 Aug 2020 14:47:59 +0200 Subject: [PATCH 02/30] Fixed OH-58D not being used by AI --- gen/flights/ai_flight_planner_db.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gen/flights/ai_flight_planner_db.py b/gen/flights/ai_flight_planner_db.py index c73cece4..d427fc49 100644 --- a/gen/flights/ai_flight_planner_db.py +++ b/gen/flights/ai_flight_planner_db.py @@ -34,6 +34,7 @@ CAP_CAPABLE = [ MiG_29A, MiG_29G, MiG_29S, + MiG_31, Su_27, J_11A, @@ -107,6 +108,7 @@ CAS_CAPABLE = [ SA342M, SA342L, + OH_58D, AH_64A, AH_64D, From 8d3ab2be5da8c0f8a1af16a18e4fc7d474f93496 Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 13 Aug 2020 14:50:36 +0200 Subject: [PATCH 03/30] Payloads for Mi-24V && Mi-28 --- game/db.py | 5 +- resources/customized_payloads/Mi-24V.lua | 148 +++++++++++++++++++++++ resources/customized_payloads/Mi-28.lua | 131 ++++++++++++++++++++ 3 files changed, 282 insertions(+), 2 deletions(-) create mode 100644 resources/customized_payloads/Mi-24V.lua create mode 100644 resources/customized_payloads/Mi-28.lua diff --git a/game/db.py b/game/db.py index 9e2735b0..092a84a9 100644 --- a/game/db.py +++ b/game/db.py @@ -396,6 +396,7 @@ UNIT_BY_TASK = { MiG_21Bis, MiG_29A, MiG_29S, + MiG_31, FA_18C_hornet, F_15C, F_14B, @@ -899,6 +900,8 @@ PLANE_PAYLOAD_OVERRIDES = { SA342L:COMMON_OVERRIDE, SA342Mistral:COMMON_OVERRIDE, Mi_8MT:COMMON_OVERRIDE, + Mi_24V:COMMON_OVERRIDE, + Mi_28N:COMMON_OVERRIDE, Ka_50:COMMON_OVERRIDE, L_39ZA:COMMON_OVERRIDE, L_39C:COMMON_OVERRIDE, @@ -942,8 +945,6 @@ PLANE_LIVERY_OVERRIDES = { FA_18C_hornet: "VFA-34", # default livery for the hornet is blue angels one } - - """ Possible time periods for new games diff --git a/resources/customized_payloads/Mi-24V.lua b/resources/customized_payloads/Mi-24V.lua new file mode 100644 index 00000000..c5cbd5ba --- /dev/null +++ b/resources/customized_payloads/Mi-24V.lua @@ -0,0 +1,148 @@ +local unitPayloads = { + ["name"] = "Mi-24V", + ["payloads"] = { + [1] = { + ["name"] = "CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{B919B0F4-7C25-455E-9A02-CEA51DB895E3}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{B919B0F4-7C25-455E-9A02-CEA51DB895E3}", + ["num"] = 2, + }, + [3] = { + ["CLSID"] = "{6A4B9E69-64FE-439a-9163-3A87FB6A4D81}", + ["num"] = 3, + }, + [4] = { + ["CLSID"] = "{6A4B9E69-64FE-439a-9163-3A87FB6A4D81}", + ["num"] = 4, + }, + [5] = { + ["CLSID"] = "{B919B0F4-7C25-455E-9A02-CEA51DB895E3}", + ["num"] = 5, + }, + [6] = { + ["CLSID"] = "{B919B0F4-7C25-455E-9A02-CEA51DB895E3}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + [3] = 18, + }, + }, + [2] = { + ["name"] = "STRIKE", + ["pylons"] = { + [1] = { + ["CLSID"] = "{B919B0F4-7C25-455E-9A02-CEA51DB895E3}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 3, + }, + [3] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 4, + }, + [4] = { + ["CLSID"] = "{B919B0F4-7C25-455E-9A02-CEA51DB895E3}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + [3] = 18, + [4] = 30, + }, + }, + [3] = { + ["name"] = "ANTISHIP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{B919B0F4-7C25-455E-9A02-CEA51DB895E3}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 3, + }, + [3] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 4, + }, + [4] = { + ["CLSID"] = "{B919B0F4-7C25-455E-9A02-CEA51DB895E3}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + [3] = 18, + [4] = 30, + }, + }, + [4] = { + ["name"] = "SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{B919B0F4-7C25-455E-9A02-CEA51DB895E3}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 3, + }, + [3] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 4, + }, + [4] = { + ["CLSID"] = "{B919B0F4-7C25-455E-9A02-CEA51DB895E3}", + ["num"] = 6, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + [3] = 18, + [4] = 30, + }, + }, + [5] = { + ["name"] = "CAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{05544F1A-C39C-466b-BC37-5BD1D52E57BB}", + ["num"] = 2, + }, + [2] = { + ["CLSID"] = "{05544F1A-C39C-466b-BC37-5BD1D52E57BB}", + ["num"] = 3, + }, + [3] = { + ["CLSID"] = "{05544F1A-C39C-466b-BC37-5BD1D52E57BB}", + ["num"] = 4, + }, + [4] = { + ["CLSID"] = "{05544F1A-C39C-466b-BC37-5BD1D52E57BB}", + ["num"] = 5, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + [3] = 18, + }, + }, + }, + ["unitType"] = "Mi-24V", +} +return unitPayloads diff --git a/resources/customized_payloads/Mi-28.lua b/resources/customized_payloads/Mi-28.lua new file mode 100644 index 00000000..35d434ba --- /dev/null +++ b/resources/customized_payloads/Mi-28.lua @@ -0,0 +1,131 @@ +local unitPayloads = { + ["name"] = "Mi-28", + ["payloads"] = { + [1] = { + ["name"] = "STRIKE", + ["pylons"] = { + [1] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 2, + }, + [3] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 3, + }, + [4] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + [3] = 18, + }, + }, + [2] = { + ["name"] = "CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{57232979-8B0F-4db7-8D9A-55197E06B0F5}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{6A4B9E69-64FE-439a-9163-3A87FB6A4D81}", + ["num"] = 2, + }, + [3] = { + ["CLSID"] = "{6A4B9E69-64FE-439a-9163-3A87FB6A4D81}", + ["num"] = 3, + }, + [4] = { + ["CLSID"] = "{57232979-8B0F-4db7-8D9A-55197E06B0F5}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + [3] = 18, + [4] = 30, + }, + }, + [3] = { + ["name"] = "ANTISHIP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{57232979-8B0F-4db7-8D9A-55197E06B0F5}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 2, + }, + [3] = { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + ["num"] = 3, + }, + [4] = { + ["CLSID"] = "{57232979-8B0F-4db7-8D9A-55197E06B0F5}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + [3] = 18, + [4] = 30, + }, + }, + [4] = { + ["name"] = "SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{57232979-8B0F-4db7-8D9A-55197E06B0F5}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{57232979-8B0F-4db7-8D9A-55197E06B0F5}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + [3] = 18, + }, + }, + [5] = { + ["name"] = "CAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{05544F1A-C39C-466b-BC37-5BD1D52E57BB}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{05544F1A-C39C-466b-BC37-5BD1D52E57BB}", + ["num"] = 2, + }, + [3] = { + ["CLSID"] = "{05544F1A-C39C-466b-BC37-5BD1D52E57BB}", + ["num"] = 3, + }, + [4] = { + ["CLSID"] = "{05544F1A-C39C-466b-BC37-5BD1D52E57BB}", + ["num"] = 4, + }, + }, + ["tasks"] = { + [1] = 31, + [2] = 32, + [3] = 18, + }, + }, + }, + ["unitType"] = "Mi-28N", +} +return unitPayloads From a96a107ef9f00099ff6f2de444be197a78a1b95a Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 13 Aug 2020 14:51:30 +0200 Subject: [PATCH 04/30] Added Mi24, Mi28, Mig31, Su30 to Russia. --- changelog.md | 10 +++++++++- game/factions/russia_2010.py | 8 ++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/changelog.md b/changelog.md index 5546cd8c..57ab980d 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,11 @@ +# 2.0.11 + +## Features/Improvements : +**[Units/Factions]** Added Mig-31, Su-30, Mi-24V, Mi-28N to Russia 2010 faction. + +## Fixed issues : +**[Units/Factions]** Fixed OH-58D not being used by AI + # 2.0.10 ## Features/Improvements : @@ -21,7 +29,7 @@ * **[Mission Generator]** Previously destroyed units are visible in the mission. (And added a performance settings to disable this behaviour) * **[Mission Generator]** Basic JTAC on Frontlines * **[Campaign Generator]** Added Tarawa in caucasus campaigns -* **[Campaign Generator]** Tuned the various existing campaign parameters +* **[Campaign Generator]** Tuned the various existing campaign parametersj * **[Campaign Generator]** Added small campaign : "Russia" on Caucasus Theater ## Fixed issues : diff --git a/game/factions/russia_2010.py b/game/factions/russia_2010.py index ee219fd4..cc45f062 100644 --- a/game/factions/russia_2010.py +++ b/game/factions/russia_2010.py @@ -7,12 +7,14 @@ Russia_2010 = { "country": "Russia", "side": "red", "units": [ - MiG_23MLD, - Su_25, + Su_27, + Su_30, Su_33, MiG_29S, + MiG_31, + Su_25, Su_25T, Su_34, Su_24M, @@ -27,6 +29,8 @@ Russia_2010 = { Ka_50, Mi_8MT, + Mi_24V, + Mi_28N, AirDefence.SAM_SA_19_Tunguska_2S6, AirDefence.SAM_SA_11_Buk_LN_9A310M1, From ef024b5118e04c4ca087f9736cd0db67bd9dc199 Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 13 Aug 2020 16:10:37 +0200 Subject: [PATCH 05/30] Removed unused part of release script --- resources/tools/mkrelease.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/tools/mkrelease.py b/resources/tools/mkrelease.py index e29e0fa1..f7dea204 100644 --- a/resources/tools/mkrelease.py +++ b/resources/tools/mkrelease.py @@ -46,9 +46,9 @@ def _mk_archieve(): except FileNotFoundError: pass os.system("pyinstaller.exe pyinstaller.spec") - archieve = ZipFile(path, "w") - archieve.writestr("dcs_liberation.bat", "cd dist\\dcs_liberation\r\nliberation_main \"%UserProfile%\\Saved Games\" \"{}\"".format(VERSION)) - _zip_dir(archieve, "./dist/dcs_liberation") + #archieve = ZipFile(path, "w") + #archieve.writestr("dcs_liberation.bat", "cd dist\\dcs_liberation\r\nliberation_main \"%UserProfile%\\Saved Games\" \"{}\"".format(VERSION)) + #_zip_dir(archieve, "./dist/dcs_liberation") _mk_archieve() From 01ea4fa7a6b9213f314b84e443d293a13816f1d5 Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 13 Aug 2020 16:53:56 +0200 Subject: [PATCH 06/30] Fixed big performance issues in release executable. --- changelog.md | 1 + resources/stylesheets/style-dcs.css | 10 ---------- resources/stylesheets/style.css | 11 ----------- 3 files changed, 1 insertion(+), 21 deletions(-) diff --git a/changelog.md b/changelog.md index 57ab980d..ba5130df 100644 --- a/changelog.md +++ b/changelog.md @@ -5,6 +5,7 @@ ## Fixed issues : **[Units/Factions]** Fixed OH-58D not being used by AI +**[Units/Factions]** Fixed big performance issue in new release UI that occurred only when running the .exe # 2.0.10 diff --git a/resources/stylesheets/style-dcs.css b/resources/stylesheets/style-dcs.css index fb41fa21..47a8bee3 100644 --- a/resources/stylesheets/style-dcs.css +++ b/resources/stylesheets/style-dcs.css @@ -85,13 +85,11 @@ QPushButton { border: 1px solid #97A9A9; color:#fff; padding: 6px 10px; - cursor: pointer; border-radius:2px; } QPushButton:hover { background: #6c7b7f; - cursor:pointer; } /*btn-primary*/ @@ -101,7 +99,6 @@ QPushButton[style="btn-primary"]{ color:#fff; padding: 6px; border-radius:2px; - cursor: pointer; font-weight:bold; text-transform:uppercase; } @@ -114,7 +111,6 @@ QPushButton[style="btn-primary"]:hover{ QPushButton[style="btn-success"] , QPushButton[style="start-button"]{ background-color:#82A466; color: white; - cursor:pointer; border-radius:2px; font-weight:bold; text-transform:uppercase; @@ -134,7 +130,6 @@ QPushButton[style="btn-success"]:hover , QPushButton[style="start-button"]:hover QPushButton[style="btn-buy"]{ background-color:#82A466; color: white; - cursor:pointer; border-radius:2px; font-weight:bold; text-transform:uppercase; @@ -143,7 +138,6 @@ QPushButton[style="btn-buy"]{ } QPushButton[style="btn-buy"]:hover{ - cursor:pointer; background:#5C863F; } @@ -151,7 +145,6 @@ QPushButton[style="btn-buy"]:hover{ QPushButton[style="btn-sell"]{ background-color:#9E3232; color: white; - cursor:pointer; border-radius:2px; font-weight:bold; text-transform:uppercase; @@ -160,7 +153,6 @@ QPushButton[style="btn-sell"]{ } QPushButton[style="btn-sell"]:hover{ - cursor:pointer; background:#D84545; } @@ -169,7 +161,6 @@ QPushButton[style="btn-sell"]:hover{ QPushButton[style="btn-danger"]{ background-color:#9E3232; color: white; - cursor:pointer; padding: 6px; border-radius:2px; border: 1px solid #9E3232; @@ -191,7 +182,6 @@ QLabel{ QLabel[style="base-title"]{ font-size: 24px; - font-color: #ccc; } QLabel[style="icon-plane"]{ diff --git a/resources/stylesheets/style.css b/resources/stylesheets/style.css index 7a6f74cf..a8b65845 100644 --- a/resources/stylesheets/style.css +++ b/resources/stylesheets/style.css @@ -26,7 +26,6 @@ QTopPanel *{ QPushButton[style="btn-success"]{ background-color:#699245; color: white; - cursor:pointer; padding: 5px 5px 5px 5px; border-radius:5px; } @@ -35,13 +34,11 @@ QPushButton[style="btn-success"]:hover{ background-color:#8ABC5A; padding: 5px 5px 5px 5px; border-radius:5px; - cursor: pointer; } QPushButton[style="start-button"]{ background-color:#699245; color: white; - cursor:pointer; padding: 5px 5px 5px 5px; border-radius:5px; } @@ -50,14 +47,12 @@ QPushButton[style="start-button"]:hover{ background-color:#8ABC5A; padding: 15px 15px 15px 15px; border-radius:5px; - cursor: pointer; } /* Buy button */ QPushButton[style="btn-buy"]{ background-color:#82A466; color: white; - cursor:pointer; border-radius:2px; font-weight:bold; text-transform:uppercase; @@ -66,7 +61,6 @@ QPushButton[style="btn-buy"]{ } QPushButton[style="btn-buy"]:hover{ - cursor:pointer; background:#5C863F; } @@ -74,7 +68,6 @@ QPushButton[style="btn-buy"]:hover{ QPushButton[style="btn-sell"]{ background-color:#9E3232; color: white; - cursor:pointer; border-radius:2px; font-weight:bold; text-transform:uppercase; @@ -83,14 +76,12 @@ QPushButton[style="btn-sell"]{ } QPushButton[style="btn-sell"]:hover{ - cursor:pointer; background:#D84545; } QPushButton[style="btn-danger"]{ background-color:#9E3232; color: white; - cursor:pointer; padding: 5px 5px 5px 5px; border-radius:5px; } @@ -99,12 +90,10 @@ QPushButton[style="btn-danger"]:hover{ background-color:#D84545; padding: 5px 5px 5px 5px; border-radius:5px; - cursor: pointer; } QLabel[style="base-title"]{ font-size: 24px; - font-color: #ccc; border: 1px solid #ccc; } From 669bff13c768a349e9264845b9d7de3dbe163c72 Mon Sep 17 00:00:00 2001 From: Khopa Date: Fri, 14 Aug 2020 19:24:35 +0200 Subject: [PATCH 07/30] Updated Github readme. --- README.md | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 1c01717c..1e0310b5 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,24 @@ ![Logo](https://i.imgur.com/c2k18E1.png) -[DCS World](https://www.digitalcombatsimulator.com/en/products/world/) single-player semi dynamic campaign. +[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/paypalme/KhopaDCSL) -DCS Liberation uses [pydcs](http://github.com/pydcs/dcs) for mission generation -and [Mist](https://github.com/mrSkortch/MissionScriptingTools) for mission scripting +![GitHub All Releases](https://img.shields.io/github/downloads/khopa/dcs_liberation/total?label=Total%20downloads) + +![GitHub issues](https://img.shields.io/github/issues/khopa/dcs_liberation) + +![Discord](https://img.shields.io/discord/595702951800995872?label=Discord&logo=discord) + +## About DCS Liberation +DCS Liberation is a [DCS World](https://www.digitalcombatsimulator.com/en/products/world/) turn based single-player semi dynamic campaign. +It is an external program that generates full and complex DCS missions in a pesistent combat environment. + +## Downloads + +Please head to : https://github.com/Khopa/dcs_liberation/releases + +To download the latest release. + +![GitHub All Releases](https://img.shields.io/github/downloads/khopa/dcs_liberation/total?link=https%3A%2F%2Fgithub.com%2Fkhopa%2Fdcs_liberation) ## Resources @@ -11,15 +26,14 @@ and [Mist](https://github.com/mrSkortch/MissionScriptingTools) for mission scrip * [Tutorials](https://github.com/Khopa/dcs_liberation/wiki/Tutorial-01-:-UI) -## Development Guide (WIP) +* [Developer/Contributor Guide]() (TODO) -Develop is the main development branch which is updated regularly. -Master branch will be updated less regularly and on release on new version. - -Other branch might be used for feature development. - -**Note :** -If you have errors with pydcs object not being defined, please check that you have the latest version installed. Sometimes the dev branch will use an even more recent version of pydcs that has not been published yet, so you might want to download pydcs directly from the pydcs repository, and copy it in your Python (or virtual env) ./Libs/site-package directory. +## Special Thanks +First, a big thanks to shdwp, for starting the original DCS Liberation project. +Then, DCS Liberation uses [pydcs](http://github.com/pydcs/dcs) for mission generation, and nothing would be possible without this. +It also uses the popular [Mist](https://github.com/mrSkortch/MissionScriptingTools) lua framework for mission scripting. +And for the JTAC feature, DCS Liberation embed Ciribob's JTAC Autolase [script](https://github.com/ciribob/DCS-JTACAutoLaze). +Please also show some support to these projects ! \ No newline at end of file From 0841c52a7550fad41ccb0e4fc664753087bced42 Mon Sep 17 00:00:00 2001 From: Khopa Date: Fri, 14 Aug 2020 19:28:46 +0200 Subject: [PATCH 08/30] Readme update link --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1e0310b5..c46acec3 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/paypalme/KhopaDCSL) -![GitHub All Releases](https://img.shields.io/github/downloads/khopa/dcs_liberation/total?label=Total%20downloads) +[![Download](https://img.shields.io/github/downloads/khopa/dcs_liberation/total?label=Total%20downloads)](https://github.com/Khopa/dcs_liberation/releases) -![GitHub issues](https://img.shields.io/github/issues/khopa/dcs_liberation) +[![GitHub issues](https://img.shields.io/github/issues/khopa/dcs_liberation)](https://github.com/Khopa/dcs_liberation/issues) -![Discord](https://img.shields.io/discord/595702951800995872?label=Discord&logo=discord) +[![Discord](https://img.shields.io/discord/595702951800995872?label=Discord&logo=discord)](https://discord.gg/bKrtrkJ) ## About DCS Liberation DCS Liberation is a [DCS World](https://www.digitalcombatsimulator.com/en/products/world/) turn based single-player semi dynamic campaign. From c27d8e3b16f0407312949bebb0f501e4dca791d4 Mon Sep 17 00:00:00 2001 From: Khopa Date: Fri, 14 Aug 2020 19:45:02 +0200 Subject: [PATCH 09/30] Updated readme.md file. --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index c46acec3..800edb90 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,22 @@ ![Logo](https://i.imgur.com/c2k18E1.png) +[![Download](https://img.shields.io/github/downloads/khopa/dcs_liberation/total?label=Download)](https://github.com/Khopa/dcs_liberation/releases) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/paypalme/KhopaDCSL) - -[![Download](https://img.shields.io/github/downloads/khopa/dcs_liberation/total?label=Total%20downloads)](https://github.com/Khopa/dcs_liberation/releases) - -[![GitHub issues](https://img.shields.io/github/issues/khopa/dcs_liberation)](https://github.com/Khopa/dcs_liberation/issues) - [![Discord](https://img.shields.io/discord/595702951800995872?label=Discord&logo=discord)](https://discord.gg/bKrtrkJ) +[![GitHub pull requests](https://img.shields.io/github/issues-pr/khopa/dcs_liberation)](https://github.com/Khopa/dcs_liberation) +[![GitHub issues](https://img.shields.io/github/issues/khopa/dcs_liberation)](https://github.com/Khopa/dcs_liberation/issues) +![GitHub stars](https://img.shields.io/github/stars/khopa/dcs_liberation?style=social) + ## About DCS Liberation DCS Liberation is a [DCS World](https://www.digitalcombatsimulator.com/en/products/world/) turn based single-player semi dynamic campaign. -It is an external program that generates full and complex DCS missions in a pesistent combat environment. +It is an external program that generates full and complex DCS missions and manage a persistent combat environment. + +![Logo](https://imgur.com/B6tvlBJ.png) ## Downloads -Please head to : https://github.com/Khopa/dcs_liberation/releases - -To download the latest release. - -![GitHub All Releases](https://img.shields.io/github/downloads/khopa/dcs_liberation/total?link=https%3A%2F%2Fgithub.com%2Fkhopa%2Fdcs_liberation) +Latest release is available here : https://github.com/Khopa/dcs_liberation/releases ## Resources @@ -26,7 +24,9 @@ To download the latest release. * [Tutorials](https://github.com/Khopa/dcs_liberation/wiki/Tutorial-01-:-UI) -* [Developer/Contributor Guide]() (TODO) +* [Developer/Contributor Guide]()(TODO) + +* [Hosting DCS Liberation generated missions on a dedicated server]()(TODO) ## Special Thanks From 2fd4fa25f7099068809e640732f5309aeeea1a14 Mon Sep 17 00:00:00 2001 From: Khopa Date: Fri, 14 Aug 2020 22:39:45 +0200 Subject: [PATCH 10/30] Added JTAC smoke parameter. --- changelog.md | 2 +- game/operation/operation.py | 11 +++++++---- game/settings.py | 1 + qt_ui/windows/settings/QSettingsWindow.py | 9 +++++++++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/changelog.md b/changelog.md index ba5130df..2273c8e5 100644 --- a/changelog.md +++ b/changelog.md @@ -3,7 +3,7 @@ ## Features/Improvements : **[Units/Factions]** Added Mig-31, Su-30, Mi-24V, Mi-28N to Russia 2010 faction. -## Fixed issues : +## Fixed issues : **[Units/Factions]** Fixed OH-58D not being used by AI **[Units/Factions]** Fixed big performance issue in new release UI that occurred only when running the .exe diff --git a/game/operation/operation.py b/game/operation/operation.py index d69c406d..470133dd 100644 --- a/game/operation/operation.py +++ b/game/operation/operation.py @@ -72,9 +72,6 @@ class Operation: self.groundobjectgen = GroundObjectsGenerator(mission, conflict, self.game) self.briefinggen = BriefingGenerator(mission, conflict, self.game) - player_country = self.from_cp.captured and self.attacker_country or self.defender_country - enemy_country = self.from_cp.captured and self.defender_country or self.attacker_country - def prepare(self, terrain: Terrain, is_quick: bool): with open("resources/default_options.lua", "r") as f: options_dict = loads(f.read())["options"] @@ -202,8 +199,14 @@ class Operation: script = f.read() script = script + "\n" + + smoke = "true" + if hasattr(self.game, "jtac_smoke_on"): + if not self.game.settings.jtac_smoke_on: + smoke = "false" + for jtac in self.game.jtacs: - script = script + "\n" + "JTACAutoLase('" + str(jtac[2]) + "', " + str(jtac[1]) + ", true, \"vehicle\")" + "\n" + script = script + "\n" + "JTACAutoLase('" + str(jtac[2]) + "', " + str(jtac[1]) + ", " + smoke + ", \"vehicle\")" + "\n" load_autolase.add_action(DoScript(String(script))) self.current_mission.triggerrules.triggers.append(load_autolase) diff --git a/game/settings.py b/game/settings.py index c42e727b..4566ad0f 100644 --- a/game/settings.py +++ b/game/settings.py @@ -25,6 +25,7 @@ class Settings: self.cold_start = False # Legacy parameter do not use self.version = None self.include_jtac_if_available = True + self.jtac_smoke_on = True # Performance oriented self.perf_red_alert_state = True diff --git a/qt_ui/windows/settings/QSettingsWindow.py b/qt_ui/windows/settings/QSettingsWindow.py index e6ba069a..195eeb87 100644 --- a/qt_ui/windows/settings/QSettingsWindow.py +++ b/qt_ui/windows/settings/QSettingsWindow.py @@ -169,17 +169,25 @@ class QSettingsWindow(QDialog): if not hasattr(self.game.settings, "include_jtac_if_available"): self.game.settings.include_jtac_if_available = True + if not hasattr(self.game.settings, "jtac_smoke_on"): + self.game.settings.jtac_smoke_on= True self.include_jtac_if_available = QCheckBox() self.include_jtac_if_available.setChecked(self.game.settings.include_jtac_if_available) self.include_jtac_if_available.toggled.connect(self.applySettings) + self.jtac_smoke_on = QCheckBox() + self.jtac_smoke_on.setChecked(self.game.settings.jtac_smoke_on) + self.jtac_smoke_on.toggled.connect(self.applySettings) + self.gameplayLayout.addWidget(QLabel("Use Supercarrier Module"), 0, 0) self.gameplayLayout.addWidget(self.supercarrier, 0, 1, Qt.AlignRight) self.gameplayLayout.addWidget(QLabel("Put Objective Markers on Map"), 1, 0) self.gameplayLayout.addWidget(self.generate_marks, 1, 1, Qt.AlignRight) self.gameplayLayout.addWidget(QLabel("Include JTAC (If available)"), 2, 0) self.gameplayLayout.addWidget(self.include_jtac_if_available, 2, 1, Qt.AlignRight) + self.gameplayLayout.addWidget(QLabel("Enable JTAC smoke markers"), 2, 0) + self.gameplayLayout.addWidget(self.jtac_smoke_on, 3, 1, Qt.AlignRight) self.performance = QGroupBox("Performance") self.performanceLayout = QGridLayout() @@ -299,6 +307,7 @@ class QSettingsWindow(QDialog): self.game.settings.external_views_allowed = self.ext_views.isChecked() self.game.settings.generate_marks = self.generate_marks.isChecked() self.game.settings.include_jtac_if_available = self.include_jtac_if_available.isChecked() + self.game.settings.jtac_smoke_on = self.jtac_smoke_on.isChecked() print(self.game.settings.map_coalition_visibility) From fa76e316409920e27e6ca6a35a3457e72b0aac94 Mon Sep 17 00:00:00 2001 From: Khopa Date: Fri, 14 Aug 2020 22:59:45 +0200 Subject: [PATCH 11/30] JTAC smoke markers can be disabled --- changelog.md | 1 + game/operation/operation.py | 7 ++++++- qt_ui/windows/settings/QSettingsWindow.py | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index 2273c8e5..4d2194f9 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,7 @@ ## Features/Improvements : **[Units/Factions]** Added Mig-31, Su-30, Mi-24V, Mi-28N to Russia 2010 faction. +**[Mission Generator]** Added a parameter to choose whether the JTACs should use smoke markers or not ## Fixed issues : **[Units/Factions]** Fixed OH-58D not being used by AI diff --git a/game/operation/operation.py b/game/operation/operation.py index 470133dd..bb195358 100644 --- a/game/operation/operation.py +++ b/game/operation/operation.py @@ -201,13 +201,18 @@ class Operation: script = script + "\n" smoke = "true" - if hasattr(self.game, "jtac_smoke_on"): + print("JTAC") + print(self.game.settings.jtac_smoke_on) + print(hasattr(self.game, "jtac_smoke_on")) + if hasattr(self.game.settings, "jtac_smoke_on"): if not self.game.settings.jtac_smoke_on: smoke = "false" for jtac in self.game.jtacs: script = script + "\n" + "JTACAutoLase('" + str(jtac[2]) + "', " + str(jtac[1]) + ", " + smoke + ", \"vehicle\")" + "\n" + print("\n" + "JTACAutoLase('" + str(jtac[2]) + "', " + str(jtac[1]) + ", " + smoke + ", \"vehicle\")" + "\n") + load_autolase.add_action(DoScript(String(script))) self.current_mission.triggerrules.triggers.append(load_autolase) diff --git a/qt_ui/windows/settings/QSettingsWindow.py b/qt_ui/windows/settings/QSettingsWindow.py index 195eeb87..d5c27b3b 100644 --- a/qt_ui/windows/settings/QSettingsWindow.py +++ b/qt_ui/windows/settings/QSettingsWindow.py @@ -186,7 +186,7 @@ class QSettingsWindow(QDialog): self.gameplayLayout.addWidget(self.generate_marks, 1, 1, Qt.AlignRight) self.gameplayLayout.addWidget(QLabel("Include JTAC (If available)"), 2, 0) self.gameplayLayout.addWidget(self.include_jtac_if_available, 2, 1, Qt.AlignRight) - self.gameplayLayout.addWidget(QLabel("Enable JTAC smoke markers"), 2, 0) + self.gameplayLayout.addWidget(QLabel("Enable JTAC smoke markers"), 3, 0) self.gameplayLayout.addWidget(self.jtac_smoke_on, 3, 1, Qt.AlignRight) self.performance = QGroupBox("Performance") From e18d84ae5e09889558572aeef95856c10171cdc1 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sat, 15 Aug 2020 01:10:30 +0200 Subject: [PATCH 12/30] Fixed issues with libya 2011 faction. --- game/factions/libya_2011.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/factions/libya_2011.py b/game/factions/libya_2011.py index 9e14e0af..dad0e51e 100644 --- a/game/factions/libya_2011.py +++ b/game/factions/libya_2011.py @@ -3,7 +3,7 @@ from dcs.planes import * from dcs.vehicles import * Lybia_2011 = { - "country": "Lybia", + "country": "Libya", "side": "red", "units": [ From 9fade70092d05b9574ef8f376cc2800db614f631 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 01:01:01 +0200 Subject: [PATCH 13/30] Fixed Tankers TACAN being the same and being different from the one in briefing. --- gen/airsupportgen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen/airsupportgen.py b/gen/airsupportgen.py index dabf7f48..2e0ef249 100644 --- a/gen/airsupportgen.py +++ b/gen/airsupportgen.py @@ -53,7 +53,7 @@ class AirSupportConflictGenerator: if tanker_unit_type != IL_78M: tanker_group.points[0].tasks.pop() # Override PyDCS tacan channel - tanker_group.points[0].tasks.append(ActivateBeaconCommand(97+1, "X", CALLSIGNS[i], True, tanker_group.units[0].id, True)) + tanker_group.points[0].tasks.append(ActivateBeaconCommand(60 + i, "X", CALLSIGNS[i], True, tanker_group.units[0].id, True)) tanker_group.points[0].tasks.append(SetInvisibleCommand(True)) tanker_group.points[0].tasks.append(SetImmortalCommand(True)) From 339c3f506c2449be450d5fa7b2d915cb78837bb7 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 01:02:12 +0200 Subject: [PATCH 14/30] changelog update --- changelog.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 4d2194f9..c8dedb64 100644 --- a/changelog.md +++ b/changelog.md @@ -5,8 +5,10 @@ **[Mission Generator]** Added a parameter to choose whether the JTACs should use smoke markers or not ## Fixed issues : -**[Units/Factions]** Fixed OH-58D not being used by AI **[Units/Factions]** Fixed big performance issue in new release UI that occurred only when running the .exe +**[Units/Factions]** Fixed mission generation not working with Libya faction +**[Units/Factions]** Fixed OH-58D not being used by AI +**[Units/Factions]** Fixed Tanker Tacan channel not being the same as the briefing one. (Sorry) # 2.0.10 From 6a3b5bbe1dd71ee83fce7fd5c60bfca611bfa530 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 02:17:43 +0200 Subject: [PATCH 15/30] Empty neutral airports from supply --- gen/triggergen.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/gen/triggergen.py b/gen/triggergen.py index c62afe7b..fbd8062e 100644 --- a/gen/triggergen.py +++ b/gen/triggergen.py @@ -46,6 +46,22 @@ class TriggersGenerator: """ Set airbase initial coalition """ + + # Empty neutrals airports + cp_ids = [cp.id for cp in self.game.theater.controlpoints] + for airport in self.mission.terrain.airport_list(): + if airport.id not in cp_ids: + airport.unlimited_fuel = False + airport.unlimited_munitions = False + airport.unlimited_aircrafts = False + airport.gasoline_init = 0 + airport.methanol_mixture_init = 0 + airport.diesel_init = 0 + airport.jet_init = 0 + airport.operating_level_air = 0 + airport.operating_level_equipment = 0 + airport.operating_level_fuel = 0 + for cp in self.game.theater.controlpoints: if cp.is_global: continue From e16db60d0f5cb17b58392f8d71e8b34840def9e9 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 02:18:30 +0200 Subject: [PATCH 16/30] Fix error with JTAC compatibility with old saves --- game/operation/operation.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/game/operation/operation.py b/game/operation/operation.py index bb195358..033d3c34 100644 --- a/game/operation/operation.py +++ b/game/operation/operation.py @@ -201,9 +201,6 @@ class Operation: script = script + "\n" smoke = "true" - print("JTAC") - print(self.game.settings.jtac_smoke_on) - print(hasattr(self.game, "jtac_smoke_on")) if hasattr(self.game.settings, "jtac_smoke_on"): if not self.game.settings.jtac_smoke_on: smoke = "false" @@ -211,8 +208,6 @@ class Operation: for jtac in self.game.jtacs: script = script + "\n" + "JTACAutoLase('" + str(jtac[2]) + "', " + str(jtac[1]) + ", " + smoke + ", \"vehicle\")" + "\n" - print("\n" + "JTACAutoLase('" + str(jtac[2]) + "', " + str(jtac[1]) + ", " + smoke + ", \"vehicle\")" + "\n") - load_autolase.add_action(DoScript(String(script))) self.current_mission.triggerrules.triggers.append(load_autolase) From 283cfd1ce96786b7fc47c958759a3a6b32629f16 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 02:19:52 +0200 Subject: [PATCH 17/30] Removed some dead code. --- game/event/frontlineattack.py | 39 ---- game/operation/frontlineattack.py | 13 -- qt_ui/widgets/map/QLiberationMap.py | 1 - qt_ui/widgets/map/QMapEvent.py | 56 ------ qt_ui/windows/QBriefingWindow.py | 283 ---------------------------- 5 files changed, 392 deletions(-) delete mode 100644 qt_ui/widgets/map/QMapEvent.py delete mode 100644 qt_ui/windows/QBriefingWindow.py diff --git a/game/event/frontlineattack.py b/game/event/frontlineattack.py index 9cd787d5..5b344247 100644 --- a/game/event/frontlineattack.py +++ b/game/event/frontlineattack.py @@ -38,20 +38,7 @@ class FrontlineAttackEvent(Event): return "Frontline attack" def is_successfull(self, debriefing: Debriefing): - - if self.game.player_name == self.attacker_name: - attacker_country = self.game.player_country - defender_country = self.game.enemy_country - else: - attacker_country = self.game.enemy_country - defender_country = self.game.player_country - - # TODO : Rework - #alive_attackers = sum([v for k, v in debriefing.alive_units.get(attacker_country, {}).items() if db.unit_task(k) == PinpointStrike]) - #alive_defenders = sum([v for k, v in debriefing.alive_units.get(defender_country, {}).items() if db.unit_task(k) == PinpointStrike]) - #attackers_success = (float(alive_attackers) / (alive_defenders + 0.01)) > self.SUCCESS_FACTOR attackers_success = True - if self.from_cp.captured: return attackers_success else: @@ -65,46 +52,20 @@ class FrontlineAttackEvent(Event): self.to_cp.base.affect_strength(-0.1) def player_attacking(self, flights: db.TaskForceDict): - # assert CAS in flights and CAP in flights and len(flights) == 2, "Invalid flights" - op = FrontlineAttackOperation(game=self.game, attacker_name=self.attacker_name, defender_name=self.defender_name, from_cp=self.from_cp, departure_cp=self.departure_cp, to_cp=self.to_cp) - - defenders = self.to_cp.base.assemble_attack() - max_attackers = int(math.ceil(sum(defenders.values()) * self.ATTACKER_DEFENDER_FACTOR)) - attackers = db.unitdict_restrict_count(self.from_cp.base.assemble_attack(), max_attackers) - op.setup(defenders=defenders, - attackers=attackers, - strikegroup=flights[CAS], - escort=flights[CAP], - interceptors=assigned_units_from(self.to_cp.base.scramble_interceptors(1))) - self.operation = op def player_defending(self, flights: db.TaskForceDict): - # assert CAP in flights and len(flights) == 1, "Invalid flights" - op = FrontlineAttackOperation(game=self.game, attacker_name=self.attacker_name, defender_name=self.defender_name, from_cp=self.from_cp, departure_cp=self.departure_cp, to_cp=self.to_cp) - - defenders = self.to_cp.base.assemble_attack() - - max_attackers = int(math.ceil(sum(defenders.values()))) - attackers = db.unitdict_restrict_count(self.from_cp.base.assemble_attack(), max_attackers) - - op.setup(defenders=defenders, - attackers=attackers, - strikegroup=assigned_units_from(self.from_cp.base.scramble_cas(1)), - escort=assigned_units_from(self.from_cp.base.scramble_sweep(1)), - interceptors=flights[CAP]) - self.operation = op diff --git a/game/operation/frontlineattack.py b/game/operation/frontlineattack.py index 53dc2d63..902ff6c9 100644 --- a/game/operation/frontlineattack.py +++ b/game/operation/frontlineattack.py @@ -14,19 +14,6 @@ class FrontlineAttackOperation(Operation): attackers = None # type: db.ArmorDict defenders = None # type: db.ArmorDict - def setup(self, - defenders: db.ArmorDict, - attackers: db.ArmorDict, - strikegroup: db.AssignedUnitsDict, - escort: db.AssignedUnitsDict, - interceptors: db.AssignedUnitsDict): - self.strikegroup = strikegroup - self.escort = escort - self.interceptors = interceptors - - self.defenders = defenders - self.attackers = attackers - def prepare(self, terrain: Terrain, is_quick: bool): super(FrontlineAttackOperation, self).prepare(terrain, is_quick) if self.defender_name == self.game.player_name: diff --git a/qt_ui/widgets/map/QLiberationMap.py b/qt_ui/widgets/map/QLiberationMap.py index 80cce076..2e763071 100644 --- a/qt_ui/widgets/map/QLiberationMap.py +++ b/qt_ui/widgets/map/QLiberationMap.py @@ -15,7 +15,6 @@ from game.event import UnitsDeliveryEvent, Event, ControlPointType from gen import Conflict from qt_ui.widgets.map.QLiberationScene import QLiberationScene from qt_ui.widgets.map.QMapControlPoint import QMapControlPoint -from qt_ui.widgets.map.QMapEvent import QMapEvent from qt_ui.widgets.map.QMapGroundObject import QMapGroundObject from qt_ui.windows.GameUpdateSignal import GameUpdateSignal from theater import ControlPoint diff --git a/qt_ui/widgets/map/QMapEvent.py b/qt_ui/widgets/map/QMapEvent.py deleted file mode 100644 index 5e24f35e..00000000 --- a/qt_ui/widgets/map/QMapEvent.py +++ /dev/null @@ -1,56 +0,0 @@ -from PySide2.QtGui import QPen, Qt -from PySide2.QtWidgets import QGraphicsRectItem, QGraphicsSceneMouseEvent, QGraphicsSceneHoverEvent - -import qt_ui.uiconstants as CONST -from game.event import Event, UnitsDeliveryEvent -from qt_ui.windows.QBriefingWindow import QBriefingWindow - - -class QMapEvent(QGraphicsRectItem): - - def __init__(self, parent, x: float, y: float, w: float, h: float, gameEvent: Event): - super(QMapEvent, self).__init__(x, y, w, h) - self.gameEvent = gameEvent - self.parent = parent - self.setAcceptHoverEvents(True) - self.setZValue(2) - self.setToolTip(str(self.gameEvent)) - self.playable = not isinstance(self.gameEvent, UnitsDeliveryEvent) - - - - def paint(self, painter, option, widget=None): - - playerColor = self.game.get_player_color() - enemyColor = self.game.get_enemy_color() - - if self.parent.get_display_rule("events"): - painter.save() - - if self.gameEvent.is_player_attacking: - painter.setPen(QPen(brush=CONST.COLORS[playerColor])) - painter.setBrush(CONST.COLORS[playerColor]) - else: - painter.setPen(QPen(brush=CONST.COLORS[enemyColor])) - painter.setBrush(CONST.COLORS[enemyColor]) - - if self.isUnderMouse() and self.playable: - painter.setBrush(CONST.COLORS["white"]) - - painter.drawRect(option.rect) - painter.drawPixmap(option.rect, CONST.EVENT_ICONS[self.gameEvent.__class__]) - painter.restore() - - def mousePressEvent(self, event:QGraphicsSceneMouseEvent): - if self.parent.get_display_rule("events"): - self.openBriefing() - - def hoverEnterEvent(self, event: QGraphicsSceneHoverEvent): - self.update() - if self.playable: - self.setCursor(Qt.PointingHandCursor) - - def openBriefing(self): - if self.playable: - self.briefing = QBriefingWindow(self.gameEvent) - self.briefing.show() \ No newline at end of file diff --git a/qt_ui/windows/QBriefingWindow.py b/qt_ui/windows/QBriefingWindow.py deleted file mode 100644 index 7b4eec33..00000000 --- a/qt_ui/windows/QBriefingWindow.py +++ /dev/null @@ -1,283 +0,0 @@ -import os - -from PySide2.QtGui import QWindow -from PySide2.QtWidgets import QHBoxLayout, QLabel, QWidget, QDialog, QVBoxLayout, QGridLayout, QGroupBox, QCheckBox, \ - QSpinBox, QPushButton, QMessageBox, QComboBox -from pip._internal.utils import typing - -from game.game import AWACS_BUDGET_COST, PinpointStrike, db, Event, FrontlineAttackEvent, Task, \ - UnitType -from qt_ui.windows.QWaitingForMissionResultWindow import QWaitingForMissionResultWindow -from userdata.persistency import base_path -import qt_ui.uiconstants as CONST - - -class QBriefingWindow(QDialog): - - def __init__(self, gameEvent: Event): - super(QBriefingWindow, self).__init__() - self.gameEvent = gameEvent - self.setWindowTitle("Briefing : " + str(gameEvent)) - self.setMinimumSize(200,200) - self.setWindowIcon(CONST.EVENT_ICONS[self.gameEvent.__class__]) - self.setModal(True) - self.game = self.gameEvent.game - - if self.gameEvent.attacker_name == self.game.player_name: - self.base = self.gameEvent.from_cp.base - self.playerFromCp = self.gameEvent.from_cp - else: - self.base = self.gameEvent.to_cp.base - self.playerFromCp = self.gameEvent.to_cp - - self.scramble_entries = {k: {} for k in self.gameEvent.tasks} - self.initUi() - - def initUi(self): - - self.layout = QVBoxLayout() - - self.depart_box = QGroupBox("Departure") - self.depart_layout = QHBoxLayout() - self.depart_box.setLayout(self.depart_layout) - self.depart_from_label = QLabel("Depart from : ") - self.depart_from = QComboBox() - - for i, cp in enumerate([b for b in self.game.theater.controlpoints if b.captured]): - self.depart_from.addItem(str(cp.name), cp) - if cp.name == self.playerFromCp.name: - self.depart_from.setCurrentIndex(i) - - self.depart_from.currentTextChanged.connect(self.on_departure_cp_changed) - self.depart_layout.addWidget(self.depart_from_label) - self.depart_layout.addWidget(self.depart_from) - - # Mission Description - self.gridLayout = QGridLayout() - self.initUnitRows() - self.scramble_box = QGroupBox("Units") - self.scramble_box.setLayout(self.gridLayout) - - self.action_layout = QHBoxLayout() - self.commit_button = QPushButton("Commit") - self.back_button = QPushButton("Cancel") - self.commit_button.clicked.connect(self.start) - self.back_button.clicked.connect(self.close) - self.action_layout.addWidget(self.commit_button) - self.action_layout.addWidget(self.back_button) - - self.support_box = self.initSupportBox() - self.layout.addWidget(QLabel("

{} on {}

".format(self.gameEvent, self.gameEvent.to_cp.name))) - self.layout.addWidget(self.depart_box) - self.layout.addWidget(self.scramble_box) - self.layout.addWidget(self.support_box) - self.layout.addWidget(QLabel("Ready?")) - self.layout.addLayout(self.action_layout) - self.setLayout(self.layout) - - def initUnitRows(self): - - row = 0 - - def header(text, row): - self.gridLayout.addWidget(QLabel("" + text + ""), row, 0, 1, 2) - - def scramble_row(task_type, unit_type, unit_count, client_slots: bool, row: int): - unit_name = QLabel("{} ({})".format(db.unit_type_name(unit_type), unit_count)) - self.gridLayout.addWidget(unit_name, row, 0) - - scramble_entry = QSpinBox() - self.gridLayout.addWidget(scramble_entry, row, 1) - - if client_slots: - client_entry = QSpinBox() - self.gridLayout.addWidget(client_entry, row, 2) - else: - client_entry = None - - self.scramble_entries[task_type][unit_type] = scramble_entry, client_entry - - # Table headers - self.gridLayout.addWidget(QLabel("Amount"), row, 1) - self.gridLayout.addWidget(QLabel("Client slots"), row, 2) - row += 1 - - for flight_task in self.gameEvent.tasks: - header("{}:".format(self.gameEvent.flight_name(flight_task)), row) - row += 1 - - if flight_task == PinpointStrike: - if not self.base.armor: - self.gridLayout.addWidget(QLabel("No units"), row, 1) - row += 1 - for t, c in self.base.armor.items(): - scramble_row(flight_task, t, c, False, row) - row += 1 - else: - if not self.base.aircraft: - self.gridLayout.addWidget(QLabel("No units"), row, 1) - row += 1 - for t, c in self.base.aircraft.items(): - scramble_row(flight_task, t, c, t.flyable, row) - row += 1 - - return self.gridLayout - - def initSupportBox(self): - - self.support_box = QGroupBox("Support") - self.support_layout = QGridLayout() - self.support_box.setLayout(self.support_layout) - - self.awacs_label = QLabel("AWACS ({}m)".format(AWACS_BUDGET_COST)) - self.awacs_checkbox = QCheckBox() - - self.ca_slot_label = QLabel("Combined Arms Slots") - self.ca_slot_entry = QSpinBox() - self.ca_slot_entry.setValue(0) - self.ca_slot_entry.setMinimum(0) - self.ca_slot_entry.setMaximum(32) - - self.support_layout.addWidget(self.awacs_label, 0, 0) - self.support_layout.addWidget(self.awacs_checkbox, 0, 1) - self.support_layout.addWidget(self.ca_slot_label, 1, 0) - self.support_layout.addWidget(self.ca_slot_entry, 1, 1) - return self.support_box - - - def initWaitingForResults(self): - - layout = QVBoxLayout() - - layout.addWidget(QLabel("You are clear for takeoff")) - layout.addWidget(QLabel("In DCS open and play the mission : ")) - layout.addWidget(QLabel("liberation_nextturn")) - layout.addWidget(QLabel("or")) - layout.addWidget(QLabel("liberation_nextturn_quick")) - - layout.addWidget(QLabel("Then save the debriefing to folder :")) - layout.addWidget(QLabel("Then save the debriefing to the folder:")) - layout.addWidget(QLabel("" + self.debriefing_directory_location() + "")) - layout.addWidget(QLabel("Waiting for results...")) - - # layout.addWidget(QLabel("In DCS open and play the mission : ")) - # layout.addWidget(QLabel("You are clear for takeoff")) - - self.setLayout(layout) - - pass - - def debriefing_directory_location(self) -> str: - return os.path.join(base_path(), "liberation_debriefings") - - def start(self): - - if self.awacs_checkbox.isChecked() == 1: - self.gameEvent.is_awacs_enabled = True - self.game.awacs_expense_commit() - else: - self.gameEvent.is_awacs_enabled = False - - ca_slot_entry_value = self.ca_slot_entry.value() - try: - ca_slots = int(ca_slot_entry_value and ca_slot_entry_value or "0") - except: - ca_slots = 0 - self.gameEvent.ca_slots = ca_slots - - - # Resolve Departure CP - self.gameEvent.departure_cp = self.depart_from.itemData(self.depart_from.currentIndex()) - - - flights = {k: {} for k in self.gameEvent.tasks} # type: db.TaskForceDict - units_scramble_counts = {} # type: typing.Dict[typing.Type[UnitType], int] - tasks_scramble_counts = {} # type: typing.Dict[typing.Type[Task], int] - tasks_clients_counts = {} # type: typing.Dict[typing.Type[Task], int] - - def dampen_count(unit_type, count: int) -> int: - nonlocal units_scramble_counts - total_count = self.base.total_units_of_type(unit_type) - - total_scrambled = units_scramble_counts.get(unit_type, 0) - dampened_value = count if count + total_scrambled < total_count else total_count - total_scrambled - units_scramble_counts[unit_type] = units_scramble_counts.get(unit_type, 0) + dampened_value - - return dampened_value - - for task_type, dict in self.scramble_entries.items(): - for unit_type, (count_entry, clients_entry) in dict.items(): - try: - count = int(count_entry.value()) - except: - count = 0 - - try: - clients_count = int(clients_entry and clients_entry.value() or 0) - except: - clients_count = 0 - - dampened_count = dampen_count(unit_type, count) - tasks_clients_counts[task_type] = tasks_clients_counts.get(task_type, 0) + clients_count - tasks_scramble_counts[task_type] = tasks_scramble_counts.get(task_type, 0) + dampened_count - - flights[task_type][unit_type] = dampened_count, clients_count - - for task in self.gameEvent.ai_banned_tasks: - if tasks_clients_counts.get(task, 0) == 0 and tasks_scramble_counts.get(task, 0) > 0: - self.showErrorMessage("Need at least one player in flight {}".format(self.gameEvent.flight_name(task))) - return - - for task in self.gameEvent.player_banned_tasks: - if tasks_clients_counts.get(task, 0) != 0: - self.showErrorMessage("Players are not allowed on flight {}".format(self.gameEvent.flight_name(task))) - return - - if self.game.is_player_attack(self.gameEvent): - if isinstance(self.gameEvent, FrontlineAttackEvent): - if self.base.total_armor == 0: - self.showErrorMessage("No ground vehicles available to attack!") - return - - self.gameEvent.player_attacking(flights) - else: - if isinstance(self.gameEvent, FrontlineAttackEvent): - if self.gameEvent.to_cp.base.total_armor == 0: - self.showErrorMessage("No ground vehicles available to defend!") - return - - self.gameEvent.player_defending(flights) - - self.game.initiate_event(self.gameEvent) - - waiting = QWaitingForMissionResultWindow(self.gameEvent, self.game) - waiting.show() - - self.close() - - def showErrorMessage(self, text): - about = QMessageBox() - about.setWindowTitle("Error") - about.setIcon(QMessageBox.Icon.Critical) - about.setText(text) - about.exec_() - - def on_departure_cp_changed(self): - - selectedBase = self.depart_from.itemData(self.depart_from.currentIndex()) - - for i, cp in enumerate([b for b in self.game.theater.controlpoints if b.captured]): - if cp.name == selectedBase.name: - self.base = cp.base - self.playerFromCp = cp - break - - # Clear current selection - self.scramble_entries = {k: {} for k in self.gameEvent.tasks} - - # Clear the grid layout - for i in reversed(range(self.gridLayout.count())): - self.gridLayout.itemAt(i).widget().setParent(None) - - # Rebuild the grid layout, so that it correspond to the newly selected CP - self.initUnitRows() \ No newline at end of file From a167b95cecd9cbe0c8ac0974c4683dde8504faa2 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 02:25:42 +0200 Subject: [PATCH 18/30] Destroyed units will not remain on airfields. --- game/game.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/game/game.py b/game/game.py index 1dbb397d..385261b8 100644 --- a/game/game.py +++ b/game/game.py @@ -378,8 +378,10 @@ class Game: return points - def add_destroyed_units(self, destroyed_unit_data): - self.__destroyed_units.append(destroyed_unit_data) + def add_destroyed_units(self, data): + pos = Point(data["x"], data["z"]) + if self.theater.is_on_land(pos): + self.__destroyed_units.append(data) def get_destroyed_units(self): return self.__destroyed_units From 65b77e241f4e29a9b1c1299a72e8c179a893efb3 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 02:41:56 +0200 Subject: [PATCH 19/30] Changelog update --- changelog.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index c8dedb64..9e9b167f 100644 --- a/changelog.md +++ b/changelog.md @@ -8,7 +8,9 @@ **[Units/Factions]** Fixed big performance issue in new release UI that occurred only when running the .exe **[Units/Factions]** Fixed mission generation not working with Libya faction **[Units/Factions]** Fixed OH-58D not being used by AI -**[Units/Factions]** Fixed Tanker Tacan channel not being the same as the briefing one. (Sorry) +**[Units/Factions]** Fixed Tanker Tacan channel not being the same as the briefing one. (Sorry) +**[Mission Generator]** Neutral airbases services will now be disabled. (Not possible to refuel or re-arm there) +**[Mission Generator]** Destroyed units carcass will not appear on airfields to avoid having a destroyed vehicle blocking a runway or taxiway. # 2.0.10 @@ -33,7 +35,7 @@ * **[Mission Generator]** Previously destroyed units are visible in the mission. (And added a performance settings to disable this behaviour) * **[Mission Generator]** Basic JTAC on Frontlines * **[Campaign Generator]** Added Tarawa in caucasus campaigns -* **[Campaign Generator]** Tuned the various existing campaign parametersj +* **[Campaign Generator]** Tuned the various existing campaign parameters * **[Campaign Generator]** Added small campaign : "Russia" on Caucasus Theater ## Fixed issues : From 60732c33c077e9e9fb95874126874ebfea425760 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 12:53:40 +0200 Subject: [PATCH 20/30] Libya mispell issue --- game/db.py | 4 ++-- game/factions/libya_2011.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/game/db.py b/game/db.py index 092a84a9..16cc5641 100644 --- a/game/db.py +++ b/game/db.py @@ -31,7 +31,7 @@ from game.factions.israel_2000 import Israel_2000 from game.factions.italy_1990 import Italy_1990 from game.factions.italy_1990_mb339 import Italy_1990_MB339 from game.factions.japan_2005 import Japan_2005 -from game.factions.libya_2011 import Lybia_2011 +from game.factions.libya_2011 import Libya_2011 from game.factions.netherlands_1990 import Netherlands_1990 from game.factions.north_korea_2000 import NorthKorea_2000 from game.factions.pakistan_2015 import Pakistan_2015 @@ -784,7 +784,7 @@ FACTIONS = { "India 2010": India_2010, - "Lybia 2011": Lybia_2011, + "Libya 2011": Libya_2011, "Pakistan 2015": Pakistan_2015, diff --git a/game/factions/libya_2011.py b/game/factions/libya_2011.py index dad0e51e..688b4877 100644 --- a/game/factions/libya_2011.py +++ b/game/factions/libya_2011.py @@ -2,7 +2,7 @@ from dcs.helicopters import * from dcs.planes import * from dcs.vehicles import * -Lybia_2011 = { +Libya_2011 = { "country": "Libya", "side": "red", "units": [ From a7f3b6e0dc391429cfba1093fe5db2bbfe8752d6 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 13:09:31 +0200 Subject: [PATCH 21/30] F-15E added for USA 2005 and USA 1990 factions. --- changelog.md | 19 +- game/db.py | 15 +- game/factions/usa_1990.py | 2 + game/factions/usa_2005.py | 2 + gen/flights/ai_flight_planner_db.py | 5 + resources/customized_payloads/F-15E.lua | 283 ++++++++++++++++++++++++ 6 files changed, 312 insertions(+), 14 deletions(-) create mode 100644 resources/customized_payloads/F-15E.lua diff --git a/changelog.md b/changelog.md index 9e9b167f..67c1b93c 100644 --- a/changelog.md +++ b/changelog.md @@ -1,16 +1,19 @@ # 2.0.11 ## Features/Improvements : -**[Units/Factions]** Added Mig-31, Su-30, Mi-24V, Mi-28N to Russia 2010 faction. -**[Mission Generator]** Added a parameter to choose whether the JTACs should use smoke markers or not + +* **[Units/Factions]** Added Mig-31, Su-30, Mi-24V, Mi-28N to Russia 2010 faction. +* **[Units/Factions]** Added F-15E to USA 2005 and USA 1990 factions. +* **[Mission Generator]** Added a parameter to choose whether the JTACs should use smoke markers or not ## Fixed issues : -**[Units/Factions]** Fixed big performance issue in new release UI that occurred only when running the .exe -**[Units/Factions]** Fixed mission generation not working with Libya faction -**[Units/Factions]** Fixed OH-58D not being used by AI -**[Units/Factions]** Fixed Tanker Tacan channel not being the same as the briefing one. (Sorry) -**[Mission Generator]** Neutral airbases services will now be disabled. (Not possible to refuel or re-arm there) -**[Mission Generator]** Destroyed units carcass will not appear on airfields to avoid having a destroyed vehicle blocking a runway or taxiway. + +* **[Units/Factions]** Fixed big performance issue in new release UI that occurred only when running the .exe +* **[Units/Factions]** Fixed mission generation not working with Libya faction +* **[Units/Factions]** Fixed OH-58D not being used by AI +* **[Units/Factions]** Fixed Tanker Tacan channel not being the same as the briefing one. (Sorry) +* **[Mission Generator]** Neutral airbases services will now be disabled. (Not possible to refuel or re-arm there) +* **[Mission Generator]** Destroyed units carcass will not appear on airfields to avoid having a destroyed vehicle blocking a runway or taxiway. # 2.0.10 diff --git a/game/db.py b/game/db.py index 16cc5641..26df9aaa 100644 --- a/game/db.py +++ b/game/db.py @@ -166,13 +166,14 @@ PRICES = { AV8BNA: 14, M_2000C: 16, - Mirage_2000_5: 22, - FA_18C_hornet: 24, - F_15C: 26, + Mirage_2000_5: 20, + FA_18C_hornet: 22, + F_15C: 22, + F_15E: 24, F_16C_50: 20, - F_14B: 22, - Tornado_IDS: 24, - Tornado_GR4: 24, + F_14B: 24, + Tornado_IDS: 20, + Tornado_GR4: 20, # bomber Su_17M4: 10, @@ -421,6 +422,7 @@ UNIT_BY_TASK = { SA342Mistral ], CAS: [ + F_15E, F_86F_Sabre, MiG_15bis, L_39ZA, @@ -873,6 +875,7 @@ PLANE_PAYLOAD_OVERRIDES = { F_5E_3: COMMON_OVERRIDE, F_14B: COMMON_OVERRIDE, F_15C: COMMON_OVERRIDE, + F_15E: COMMON_OVERRIDE, F_16C_50: COMMON_OVERRIDE, JF_17: COMMON_OVERRIDE, M_2000C: COMMON_OVERRIDE, diff --git a/game/factions/usa_1990.py b/game/factions/usa_1990.py index ae090e17..0eed7850 100644 --- a/game/factions/usa_1990.py +++ b/game/factions/usa_1990.py @@ -8,6 +8,7 @@ USA_1990 = { "side": "blue", "units": [ F_15C, + F_15E, F_14B, FA_18C_hornet, @@ -23,6 +24,7 @@ USA_1990 = { UH_1H, AH_64A, + OH_58D, Armor.MBT_M1A2_Abrams, Armor.IFV_LAV_25, diff --git a/game/factions/usa_2005.py b/game/factions/usa_2005.py index 5425aa92..19c8400e 100644 --- a/game/factions/usa_2005.py +++ b/game/factions/usa_2005.py @@ -8,6 +8,7 @@ USA_2005 = { "side": "blue", "units": [ F_15C, + F_15E, F_14B, FA_18C_hornet, F_16C_50, @@ -21,6 +22,7 @@ USA_2005 = { UH_1H, AH_64D, + OH_58D, Armor.MBT_M1A2_Abrams, Armor.ATGM_M1134_Stryker, diff --git a/gen/flights/ai_flight_planner_db.py b/gen/flights/ai_flight_planner_db.py index d427fc49..70e70e3a 100644 --- a/gen/flights/ai_flight_planner_db.py +++ b/gen/flights/ai_flight_planner_db.py @@ -50,6 +50,7 @@ CAP_CAPABLE = [ F_5E_3, F_14B, F_15C, + F_15E, F_16C_50, FA_18C_hornet, @@ -98,6 +99,7 @@ CAS_CAPABLE = [ F_86F_Sabre, F_5E_3, F_14B, + F_15E, F_16C_50, FA_18C_hornet, @@ -140,6 +142,7 @@ CAS_CAPABLE = [ SEAD_CAPABLE = [ F_4E, FA_18C_hornet, + F_15E, # F_16C_50, Not yet AV8BNA, JF_17, @@ -180,6 +183,7 @@ STRIKE_CAPABLE = [ F_86F_Sabre, F_5E_3, F_14B, + F_15E, F_16C_50, FA_18C_hornet, @@ -209,6 +213,7 @@ ANTISHIP_CAPABLE = [ Su_24M, Su_17M4, F_A_18C, + F_15E, AV8BNA, JF_17, F_16C_50, diff --git a/resources/customized_payloads/F-15E.lua b/resources/customized_payloads/F-15E.lua new file mode 100644 index 00000000..77955c5f --- /dev/null +++ b/resources/customized_payloads/F-15E.lua @@ -0,0 +1,283 @@ +local unitPayloads = { + ["name"] = "F-15E", + ["payloads"] = { + [1] = { + ["name"] = "CAS", + ["pylons"] = { + [1] = { + ["CLSID"] = "{C8E06185-7CD6-4C90-959F-044679E90751}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 3, + }, + [3] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 4, + }, + [4] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 6, + }, + [5] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 7, + }, + [6] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 9, + }, + [7] = { + ["CLSID"] = "{E1F29B21-F291-4589-9FD8-3272EEC69506}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 11, + }, + [9] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 13, + }, + [10] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 14, + }, + [11] = { + ["CLSID"] = "{AB8B8299-F1CC-4359-89B5-2172E0CF4A5A}", + ["num"] = 16, + }, + [12] = { + ["CLSID"] = "{C8E06185-7CD6-4C90-959F-044679E90751}", + ["num"] = 19, + }, + [13] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 17, + }, + [14] = { + ["CLSID"] = "{444BA8AE-82A7-4345-842E-76154EFCCA46}", + ["num"] = 18, + }, + [15] = { + ["CLSID"] = "{444BA8AE-82A7-4345-842E-76154EFCCA46}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [2] = { + ["name"] = "STRIKE", + ["pylons"] = { + [1] = { + ["CLSID"] = "{C8E06185-7CD6-4C90-959F-044679E90751}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 3, + }, + [3] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 4, + }, + [4] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 6, + }, + [5] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 7, + }, + [6] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 9, + }, + [7] = { + ["CLSID"] = "{E1F29B21-F291-4589-9FD8-3272EEC69506}", + ["num"] = 10, + }, + [8] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 11, + }, + [9] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 13, + }, + [10] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 14, + }, + [11] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 16, + }, + [12] = { + ["CLSID"] = "{C8E06185-7CD6-4C90-959F-044679E90751}", + ["num"] = 19, + }, + [13] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 17, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [3] = { + ["name"] = "CAP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{C8E06185-7CD6-4C90-959F-044679E90751}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 3, + }, + [3] = { + ["CLSID"] = "{E1F29B21-F291-4589-9FD8-3272EEC69506}", + ["num"] = 10, + }, + [4] = { + ["CLSID"] = "{C8E06185-7CD6-4C90-959F-044679E90751}", + ["num"] = 19, + }, + [5] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 17, + }, + [6] = { + ["CLSID"] = "{E1F29B21-F291-4589-9FD8-3272EEC69506}", + ["num"] = 18, + }, + [7] = { + ["CLSID"] = "{E1F29B21-F291-4589-9FD8-3272EEC69506}", + ["num"] = 2, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [4] = { + ["name"] = "ANTISHIP", + ["pylons"] = { + [1] = { + ["CLSID"] = "{C8E06185-7CD6-4C90-959F-044679E90751}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 3, + }, + [3] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 9, + }, + [4] = { + ["CLSID"] = "{E1F29B21-F291-4589-9FD8-3272EEC69506}", + ["num"] = 10, + }, + [5] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 11, + }, + [6] = { + ["CLSID"] = "{C8E06185-7CD6-4C90-959F-044679E90751}", + ["num"] = 19, + }, + [7] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 17, + }, + [8] = { + ["CLSID"] = "{444BA8AE-82A7-4345-842E-76154EFCCA46}", + ["num"] = 18, + }, + [9] = { + ["CLSID"] = "{444BA8AE-82A7-4345-842E-76154EFCCA46}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 12, + }, + [11] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 8, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + [5] = { + ["name"] = "SEAD", + ["pylons"] = { + [1] = { + ["CLSID"] = "{C8E06185-7CD6-4C90-959F-044679E90751}", + ["num"] = 1, + }, + [2] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 3, + }, + [3] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 9, + }, + [4] = { + ["CLSID"] = "{E1F29B21-F291-4589-9FD8-3272EEC69506}", + ["num"] = 10, + }, + [5] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 11, + }, + [6] = { + ["CLSID"] = "{C8E06185-7CD6-4C90-959F-044679E90751}", + ["num"] = 19, + }, + [7] = { + ["CLSID"] = "{6CEB49FC-DED8-4DED-B053-E1F033FF72D3}", + ["num"] = 17, + }, + [8] = { + ["CLSID"] = "{9BCC2A2B-5708-4860-B1F1-053A18442067}", + ["num"] = 18, + }, + [9] = { + ["CLSID"] = "{9BCC2A2B-5708-4860-B1F1-053A18442067}", + ["num"] = 2, + }, + [10] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 12, + }, + [11] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 8, + }, + [12] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 13, + }, + [13] = { + ["CLSID"] = "{GBU-38}", + ["num"] = 7, + }, + }, + ["tasks"] = { + [1] = 32, + }, + }, + }, + ["unitType"] = "F-15E", +} +return unitPayloads From f797bbb97f3280e94556a204d56aab5a3eb13d4e Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 13:11:28 +0200 Subject: [PATCH 22/30] Fixed JTAC using code above than 1688 that cannot be used in game. --- gen/armor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen/armor.py b/gen/armor.py index 7c2e0f89..bafe8d3c 100644 --- a/gen/armor.py +++ b/gen/armor.py @@ -100,7 +100,7 @@ class GroundConflictGenerator: # Add JTAC if "has_jtac" in self.game.player_faction and self.game.player_faction["has_jtac"] and self.game.settings.include_jtac_if_available: n = "JTAC" + str(self.conflict.from_cp.id) + str(self.conflict.to_cp.id) - code = 1688 + len(self.game.jtacs) + code = 1688 - len(self.game.jtacs) jtac = self.mission.flight_group(country=self.mission.country(self.game.player_country), name=n, aircraft_type=MQ_9_Reaper, From 2c07257bf63646a4a5d7b65961ffe433610061b8 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 13:30:36 +0200 Subject: [PATCH 23/30] Small update to nevada exclusion polygons around nellis AFB. --- resources/nevlandmap.p | Bin 21528 -> 21240 bytes resources/tools/nev_terrain.miz | Bin 75569 -> 74932 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/nevlandmap.p b/resources/nevlandmap.p index 111c24d4850d225a629a7c47d2f126f3de008553..1a9d8cc4944b7efd20f131597fb46ed8227d86a6 100644 GIT binary patch delta 5248 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
  • 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 a@w9?8_#eIp`~eU^MgXty0KNhO`hNf~L_OmG literal 75569 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 Dqht;= From c08768f648b2b7c90b623932fa3be910b4b3fbe5 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 13:31:12 +0200 Subject: [PATCH 24/30] Cleaned up dead code --- game/event/event.py | 16 ---------------- game/event/frontlineattack.py | 18 ------------------ 2 files changed, 34 deletions(-) diff --git a/game/event/event.py b/game/event/event.py index 01be1f59..6af3d6c9 100644 --- a/game/event/event.py +++ b/game/event/event.py @@ -65,25 +65,10 @@ class Event: else: return self.departure_cp - @property - def threat_description(self) -> str: - return "" - - def flight_name(self, for_task: typing.Type[typing.Type[Task]]) -> str: - return "Flight" - @property def tasks(self) -> typing.Collection[typing.Type[Task]]: return [] - @property - def ai_banned_tasks(self) -> typing.Collection[typing.Type[Task]]: - return [] - - @property - def player_banned_tasks(self) -> typing.Collection[typing.Type[Task]]: - return [] - @property def global_cp_available(self) -> bool: return False @@ -255,7 +240,6 @@ class Event: # Destroyed units carcass # ------------------------- - for destroyed_unit in debriefing.destroyed_units: self.game.add_destroyed_units(destroyed_unit) diff --git a/game/event/frontlineattack.py b/game/event/frontlineattack.py index 5b344247..e548440f 100644 --- a/game/event/frontlineattack.py +++ b/game/event/frontlineattack.py @@ -4,16 +4,6 @@ from userdata.debriefing import Debriefing class FrontlineAttackEvent(Event): - TARGET_VARIETY = 2 - TARGET_AMOUNT_FACTOR = 0.5 - ATTACKER_AMOUNT_FACTOR = 0.4 - ATTACKER_DEFENDER_FACTOR = 0.7 - STRENGTH_INFLUENCE = 0.3 - SUCCESS_FACTOR = 1.5 - - @property - def threat_description(self): - return "{} vehicles".format(self.to_cp.base.assemble_count()) @property def tasks(self) -> typing.Collection[typing.Type[Task]]: @@ -26,14 +16,6 @@ class FrontlineAttackEvent(Event): def global_cp_available(self) -> bool: return True - def flight_name(self, for_task: typing.Type[Task]) -> str: - if for_task == CAS: - return "CAS flight" - elif for_task == CAP: - return "CAP flight" - elif for_task == PinpointStrike: - return "Ground attack" - def __str__(self): return "Frontline attack" From 126849cf9af4e1b0d60c15f31e60fbe0da0d4e41 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 13:52:42 +0200 Subject: [PATCH 25/30] JTAC message will be displayed for 25 seconds instead of just 10. --- resources/scripts/JTACAutoLase.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/scripts/JTACAutoLase.lua b/resources/scripts/JTACAutoLase.lua index f0af3ecb..05315574 100644 --- a/resources/scripts/JTACAutoLase.lua +++ b/resources/scripts/JTACAutoLase.lua @@ -554,7 +554,7 @@ function getJTACStatus() end end - notify(message, 10) + notify(message, 25) end From c9f8a9381317fbc28e3ceaec533eb6b178e55489 Mon Sep 17 00:00:00 2001 From: Matteo Hausner Date: Sun, 16 Aug 2020 13:56:28 +0200 Subject: [PATCH 26/30] Fixed typo "United Kingdown" -> "United Kingdom" --- game/db.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/db.py b/game/db.py index 26df9aaa..81193426 100644 --- a/game/db.py +++ b/game/db.py @@ -759,7 +759,7 @@ FACTIONS = { "Netherlands 1990": Netherlands_1990, - "United Kingdown 1990": UnitedKingdom_1990, + "United Kingdom 1990": UnitedKingdom_1990, "Spain 1990": Spain_1990, From 421e2508d4052d9d4c052d45c5661a7a8e4a5512 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 15:01:34 +0200 Subject: [PATCH 27/30] JTAC invisble and immortal commands update. --- gen/armor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen/armor.py b/gen/armor.py index bafe8d3c..d2d74a91 100644 --- a/gen/armor.py +++ b/gen/armor.py @@ -107,9 +107,9 @@ class GroundConflictGenerator: position=position[0], airport=None, altitude=5000) - jtac.points[0].tasks.append(OrbitAction(5000, 300, OrbitAction.OrbitPattern.Circle)) jtac.points[0].tasks.append(SetInvisibleCommand(True)) jtac.points[0].tasks.append(SetImmortalCommand(True)) + jtac.points[0].tasks.append(OrbitAction(5000, 300, OrbitAction.OrbitPattern.Circle)) self.game.jtacs.append(("Frontline " + self.conflict.from_cp.name + "/" + self.conflict.to_cp.name, code, n)) def gen_infantry_group_for_group(self, group, is_player, side:Country, forward_heading): From 2559b27a6fc4dce908196338a0bdb1b2d4f3de5c Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 15:08:27 +0200 Subject: [PATCH 28/30] Restrict afterburner for AI units. --- gen/aircraft.py | 1 + 1 file changed, 1 insertion(+) diff --git a/gen/aircraft.py b/gen/aircraft.py index e26d74ef..62196edb 100644 --- a/gen/aircraft.py +++ b/gen/aircraft.py @@ -431,6 +431,7 @@ class AircraftConflictGenerator: group.points[0].tasks.append(OptRestrictJettison(True)) group.points[0].tasks.append(OptRTBOnBingoFuel(True)) + group.points[0].tasks.append(OptRestrictAfterburner(True)) if hasattr(flight.unit_type, 'eplrs'): if flight.unit_type.eplrs: From 6e3ef24e3a756a5481fd286bbc525036b565f9a7 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 15:09:44 +0200 Subject: [PATCH 29/30] Changelog update --- changelog.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/changelog.md b/changelog.md index 67c1b93c..a03f18f6 100644 --- a/changelog.md +++ b/changelog.md @@ -13,8 +13,13 @@ * **[Units/Factions]** Fixed OH-58D not being used by AI * **[Units/Factions]** Fixed Tanker Tacan channel not being the same as the briefing one. (Sorry) * **[Mission Generator]** Neutral airbases services will now be disabled. (Not possible to refuel or re-arm there) +* **[Mission Generator]** AI will be configured to limit afterburner usage +* **[Mission Generator]** JTAC will not use laser codes above 1688 anymore +* **[Mission Generator]** JTAC units were misconfigured and would not be invisible/immortal to AI. +* **[Mission Generator]** Increased JTAC status message duration to 25s, so you have more time to enter coordinates; * **[Mission Generator]** Destroyed units carcass will not appear on airfields to avoid having a destroyed vehicle blocking a runway or taxiway. + # 2.0.10 ## Features/Improvements : From 647e62059f1bba99c7ed0822b0a9d0f233cb9dfa Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 16 Aug 2020 15:10:55 +0200 Subject: [PATCH 30/30] Changelog update --- changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index a03f18f6..ac729c8c 100644 --- a/changelog.md +++ b/changelog.md @@ -15,7 +15,7 @@ * **[Mission Generator]** Neutral airbases services will now be disabled. (Not possible to refuel or re-arm there) * **[Mission Generator]** AI will be configured to limit afterburner usage * **[Mission Generator]** JTAC will not use laser codes above 1688 anymore -* **[Mission Generator]** JTAC units were misconfigured and would not be invisible/immortal to AI. +* **[Mission Generator]** JTAC units were misconfigured and would not be invisible/immortal. * **[Mission Generator]** Increased JTAC status message duration to 25s, so you have more time to enter coordinates; * **[Mission Generator]** Destroyed units carcass will not appear on airfields to avoid having a destroyed vehicle blocking a runway or taxiway.