mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
44b5f5a919 | ||
|
|
17d37494c2 | ||
|
|
f0d81e98a0 | ||
|
|
e3b13f7b4a | ||
|
|
ba2686630a | ||
|
|
e195cfa6a0 | ||
|
|
b9fbd1906f | ||
|
|
1f611bafef | ||
|
|
69096b15ae | ||
|
|
a075e62bad | ||
|
|
db229f25bf |
17
changelog.md
17
changelog.md
@@ -1,6 +1,17 @@
|
|||||||
|
# 2.3.1
|
||||||
|
|
||||||
|
## Features/Improvements
|
||||||
|
* **[UX]** Added a warning message when the player is attempting to buy more planes at an already full airbase.
|
||||||
|
* **[Campaigns]** Migrated Syria full map to new format. (Thanks to Hawkmoon)
|
||||||
|
* **[Faction]** Added NATO desert Storm faction (Thanks to Hawkmoon)
|
||||||
|
|
||||||
|
## Fixes:
|
||||||
|
* **[AI]** CAP flights will engage enemies again.
|
||||||
|
* **[Campaigns]** Fixed a missing path on the Caucasus Full Map campaign
|
||||||
|
|
||||||
# 2.3.0
|
# 2.3.0
|
||||||
|
|
||||||
# Features/Improvements
|
## Features/Improvements
|
||||||
* **[Campaign Map]** Overhauled the campaign model
|
* **[Campaign Map]** Overhauled the campaign model
|
||||||
* **[Campaign Map]** Possible to add FOB as control points
|
* **[Campaign Map]** Possible to add FOB as control points
|
||||||
* **[Campaign Map]** Added off-map spawn locations
|
* **[Campaign Map]** Added off-map spawn locations
|
||||||
@@ -11,6 +22,7 @@
|
|||||||
* **[Mission Generator]** Infantry squads on frontline can have manpads
|
* **[Mission Generator]** Infantry squads on frontline can have manpads
|
||||||
* **[Mission Generator]** Unused aircraft now spawned to allow for OCA strikes
|
* **[Mission Generator]** Unused aircraft now spawned to allow for OCA strikes
|
||||||
* **[Mission Generator]** Opfor now obeys parking limits
|
* **[Mission Generator]** Opfor now obeys parking limits
|
||||||
|
* **[Mission Generator]** Support for Anubis C-130 Hercules mod
|
||||||
* **[Flight Planner]** Added fighter sweep missions.
|
* **[Flight Planner]** Added fighter sweep missions.
|
||||||
* **[Flight Planner]** Added BAI missions.
|
* **[Flight Planner]** Added BAI missions.
|
||||||
* **[Flight Planner]** Added anti-ship missions.
|
* **[Flight Planner]** Added anti-ship missions.
|
||||||
@@ -21,6 +33,7 @@
|
|||||||
* **[QOL]** On liberation startup, your latest save game is loaded automatically
|
* **[QOL]** On liberation startup, your latest save game is loaded automatically
|
||||||
* **[Units]** Reduced starting fuel load for C101
|
* **[Units]** Reduced starting fuel load for C101
|
||||||
* **[UI]** Inform the user of the weather
|
* **[UI]** Inform the user of the weather
|
||||||
|
* **[UI]** Added toolbar buttons to change map display settings
|
||||||
* **[Game]** Added new Economy options for adjusting income multipliers and starting budgets.
|
* **[Game]** Added new Economy options for adjusting income multipliers and starting budgets.
|
||||||
|
|
||||||
## Fixes :
|
## Fixes :
|
||||||
@@ -34,7 +47,7 @@
|
|||||||
|
|
||||||
# 2.2.1
|
# 2.2.1
|
||||||
|
|
||||||
# Features/Improvements
|
## Features/Improvements
|
||||||
* **[Factions]** Added factions : Georgia 2008, USN 1985, France 2005 Frenchpack by HerrTom
|
* **[Factions]** Added factions : Georgia 2008, USN 1985, France 2005 Frenchpack by HerrTom
|
||||||
* **[Factions]** Added map Persian Gulf full by Plob
|
* **[Factions]** Added map Persian Gulf full by Plob
|
||||||
* **[Flight Planner]** Player flights with start delays under ten minutes will spawn immediately.
|
* **[Flight Planner]** Player flights with start delays under ten minutes will spawn immediately.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from pathlib import Path
|
|||||||
|
|
||||||
|
|
||||||
def _build_version_string() -> str:
|
def _build_version_string() -> str:
|
||||||
components = ["2.3.0"]
|
components = ["2.3.1"]
|
||||||
build_number_path = Path("resources/buildnumber")
|
build_number_path = Path("resources/buildnumber")
|
||||||
if build_number_path.exists():
|
if build_number_path.exists():
|
||||||
with build_number_path.open("r") as build_number_file:
|
with build_number_path.open("r") as build_number_file:
|
||||||
|
|||||||
@@ -1756,15 +1756,11 @@ class RaceTrackBuilder(PydcsWaypointBuilder):
|
|||||||
f"{flight_plan_type} does not define a patrol.")
|
f"{flight_plan_type} does not define a patrol.")
|
||||||
return waypoint
|
return waypoint
|
||||||
|
|
||||||
racetrack = ControlledTask(OrbitAction(
|
# NB: It's important that the engage task comes before the orbit task.
|
||||||
altitude=waypoint.alt,
|
# Though they're on the same waypoint, if the orbit task comes first it
|
||||||
pattern=OrbitAction.OrbitPattern.RaceTrack
|
# is their first priority and they will not engage any targets because
|
||||||
))
|
# they're fully focused on orbiting. If the STE task is first, they will
|
||||||
self.set_waypoint_tot(
|
# engage targets if available and orbit if they find nothing to shoot.
|
||||||
waypoint, self.flight.flight_plan.patrol_start_time)
|
|
||||||
racetrack.stop_after_time(
|
|
||||||
int(self.flight.flight_plan.patrol_end_time.total_seconds()))
|
|
||||||
waypoint.add_task(racetrack)
|
|
||||||
|
|
||||||
# TODO: Move the properties of this task into the flight plan?
|
# TODO: Move the properties of this task into the flight plan?
|
||||||
# CAP is the only current user of this so it's not a big deal, but might
|
# CAP is the only current user of this so it's not a big deal, but might
|
||||||
@@ -1775,6 +1771,16 @@ class RaceTrackBuilder(PydcsWaypointBuilder):
|
|||||||
waypoint.tasks.append(EngageTargets(max_distance=nm_to_meter(50),
|
waypoint.tasks.append(EngageTargets(max_distance=nm_to_meter(50),
|
||||||
targets=[Targets.All.Air]))
|
targets=[Targets.All.Air]))
|
||||||
|
|
||||||
|
racetrack = ControlledTask(OrbitAction(
|
||||||
|
altitude=waypoint.alt,
|
||||||
|
pattern=OrbitAction.OrbitPattern.RaceTrack
|
||||||
|
))
|
||||||
|
self.set_waypoint_tot(
|
||||||
|
waypoint, self.flight.flight_plan.patrol_start_time)
|
||||||
|
racetrack.stop_after_time(
|
||||||
|
int(self.flight.flight_plan.patrol_end_time.total_seconds()))
|
||||||
|
waypoint.add_task(racetrack)
|
||||||
|
|
||||||
return waypoint
|
return waypoint
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -284,7 +284,7 @@ class QLiberationWindow(QMainWindow):
|
|||||||
"<h4>Authors</h4>" + \
|
"<h4>Authors</h4>" + \
|
||||||
"<p>DCS Liberation was originally developed by <b>shdwp</b>, DCS Liberation 2.0 is a partial rewrite based on this work by <b>Khopa</b>." \
|
"<p>DCS Liberation was originally developed by <b>shdwp</b>, DCS Liberation 2.0 is a partial rewrite based on this work by <b>Khopa</b>." \
|
||||||
"<h4>Contributors</h4>" + \
|
"<h4>Contributors</h4>" + \
|
||||||
"shdwp, Khopa, ColonelPanic, Roach, Wrycu, calvinmorrow, JohanAberg, Deus, root0fall, Captain Cody, steveveepee, pedromagueija, parithon, bwRavencl, davidp57, Plob" + \
|
"shdwp, Khopa, ColonelPanic, Roach, Wrycu, calvinmorrow, JohanAberg, Deus, root0fall, Captain Cody, steveveepee, pedromagueija, parithon, bwRavencl, davidp57, Plob, Hawkmoon" + \
|
||||||
"<h4>Special Thanks :</h4>" \
|
"<h4>Special Thanks :</h4>" \
|
||||||
"<b>rp-</b> <i>for the pydcs framework</i><br/>"\
|
"<b>rp-</b> <i>for the pydcs framework</i><br/>"\
|
||||||
"<b>Grimes (mrSkortch)</b> & <b>Speed</b> <i>for the MIST framework</i><br/>"\
|
"<b>Grimes (mrSkortch)</b> & <b>Speed</b> <i>for the MIST framework</i><br/>"\
|
||||||
|
|||||||
@@ -88,6 +88,9 @@ class QAircraftRecruitmentMenu(QFrame, QRecruitBehaviour):
|
|||||||
if self.maximum_units > 0:
|
if self.maximum_units > 0:
|
||||||
if self.cp.unclaimed_parking(self.game_model.game) <= 0:
|
if self.cp.unclaimed_parking(self.game_model.game) <= 0:
|
||||||
logging.debug(f"No space for additional aircraft at {self.cp}.")
|
logging.debug(f"No space for additional aircraft at {self.cp}.")
|
||||||
|
QMessageBox.warning(
|
||||||
|
self, "No space for additional aircraft",
|
||||||
|
f"There is no parking space left at {self.cp.name} to accommodate another plane.", QMessageBox.Ok)
|
||||||
return
|
return
|
||||||
|
|
||||||
super().buy(unit_type)
|
super().buy(unit_type)
|
||||||
|
|||||||
Binary file not shown.
@@ -1,185 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Syria - Full Map",
|
|
||||||
"theater": "Syria",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"description": "<p>Full map of Syria</p><p><strong>Note:</strong> This scenario is heavy on performance, enabling \"culling\" in settings is highly recommended.</p>",
|
|
||||||
"player_points": [
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Ramat David",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "carrier",
|
|
||||||
"id": 1001,
|
|
||||||
"x": -151000,
|
|
||||||
"y": -106000,
|
|
||||||
"captured_invert": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "lha",
|
|
||||||
"id": 1002,
|
|
||||||
"x": -131000,
|
|
||||||
"y": -161000,
|
|
||||||
"captured_invert": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"enemy_points": [
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "King Hussein Air College",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Khalkhalah",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Al-Dumayr",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Al Qusayr",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Rene Mouawad",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Hama",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Bassel Al-Assad",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Palmyra",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Tabqa",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Jirah",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Aleppo",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Minakh",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Hatay",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Incirlik",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.4,
|
|
||||||
"captured_invert": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"links": [
|
|
||||||
[
|
|
||||||
"King Hussein Air College",
|
|
||||||
"Ramat David"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Khalkhalah",
|
|
||||||
"King Hussein Air College"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Al-Dumayr",
|
|
||||||
"Khalkhalah"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Al Qusayr",
|
|
||||||
"Al-Dumayr"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Al Qusayr",
|
|
||||||
"Hama"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Al Qusayr",
|
|
||||||
"Palmyra"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Al Qusayr",
|
|
||||||
"Rene Mouawad"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Bassel Al-Assad",
|
|
||||||
"Rene Mouawad"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Aleppo",
|
|
||||||
"Hama"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Bassel Al-Assad",
|
|
||||||
"Hama"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Bassel Al-Assad",
|
|
||||||
"Hatay"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Palmyra",
|
|
||||||
"Tabqa"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Jirah",
|
|
||||||
"Tabqa"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Aleppo",
|
|
||||||
"Jirah"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Aleppo",
|
|
||||||
"Minakh"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Hatay",
|
|
||||||
"Minakh"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Incirlik",
|
|
||||||
"Minakh"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
7
resources/campaigns/syria_full_map_remastered.json
Normal file
7
resources/campaigns/syria_full_map_remastered.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "Syria - Full Map",
|
||||||
|
"theater": "Syria",
|
||||||
|
"authors": "Hawkmoon",
|
||||||
|
"description": "<p>Full map of Syria</p><p><strong>Note:</strong>For a better early game experience is suggested to give the AI an high amount of starting money This scenario is heavy on performance, enabling \"culling\" in settings is highly recommended.</p>",
|
||||||
|
"miz": "syria_full_map_remastered.miz"
|
||||||
|
}
|
||||||
BIN
resources/campaigns/syria_full_map_remastered.miz
Normal file
BIN
resources/campaigns/syria_full_map_remastered.miz
Normal file
Binary file not shown.
100
resources/factions/NATO_Desert_Storm.json
Normal file
100
resources/factions/NATO_Desert_Storm.json
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
{
|
||||||
|
"country": "Combined Joint Task Forces Blue",
|
||||||
|
"name": "NATO Desert Storm",
|
||||||
|
"authors": "Hawkmoon",
|
||||||
|
"description": "<p>A faction to recreate the actual unit lineup during Desert Storm as closely as possible</p>",
|
||||||
|
"aircrafts": [
|
||||||
|
"F_15C",
|
||||||
|
"F_14A",
|
||||||
|
"F_15E",
|
||||||
|
"F_16C_50",
|
||||||
|
"FA_18C_hornet",
|
||||||
|
"A_10A",
|
||||||
|
"AV8BNA",
|
||||||
|
"UH_1H",
|
||||||
|
"AH_64A",
|
||||||
|
"B_52H",
|
||||||
|
"B_1B",
|
||||||
|
"Tornado_IDS",
|
||||||
|
"F_111F",
|
||||||
|
"F_4E",
|
||||||
|
"F_117A",
|
||||||
|
"M_2000C",
|
||||||
|
"S_3B",
|
||||||
|
"SA342M",
|
||||||
|
"SA342L",
|
||||||
|
"SA342Mistral",
|
||||||
|
"OH_58D"
|
||||||
|
],
|
||||||
|
"awacs": [
|
||||||
|
"E_3A",
|
||||||
|
"E_2C"
|
||||||
|
],
|
||||||
|
"tankers": [
|
||||||
|
"KC_135",
|
||||||
|
"KC135MPRS"
|
||||||
|
],
|
||||||
|
"frontline_units": [
|
||||||
|
"MBT_M1A2_Abrams",
|
||||||
|
"ATGM_M1134_Stryker",
|
||||||
|
"IFV_M2A2_Bradley",
|
||||||
|
"APC_M1126_Stryker_ICV",
|
||||||
|
"IFV_LAV_25",
|
||||||
|
"APC_M1043_HMMWV_Armament",
|
||||||
|
"ATGM_M1045_HMMWV_TOW",
|
||||||
|
"TPz_Fuchs",
|
||||||
|
"IFV_MCV_80",
|
||||||
|
"MBT_Challenger_II",
|
||||||
|
"MBT_M60A3_Patton",
|
||||||
|
"SPG_M1128_Stryker_MGS"
|
||||||
|
],
|
||||||
|
"artillery_units": [
|
||||||
|
"MLRS_M270",
|
||||||
|
"SPH_M109_Paladin"
|
||||||
|
],
|
||||||
|
"logistics_units": [
|
||||||
|
"Transport_M818"
|
||||||
|
],
|
||||||
|
"infantry_units": [
|
||||||
|
"Infantry_M4",
|
||||||
|
"Soldier_M249",
|
||||||
|
"Stinger_MANPADS"
|
||||||
|
],
|
||||||
|
"air_defenses": [
|
||||||
|
"AvengerGenerator",
|
||||||
|
"ChaparralGenerator",
|
||||||
|
"VulcanGenerator",
|
||||||
|
"RolandGenerator",
|
||||||
|
"HawkGenerator",
|
||||||
|
"PatriotGenerator",
|
||||||
|
"RapierGenerator"
|
||||||
|
],
|
||||||
|
"ewrs": [
|
||||||
|
"PatriotEwrGenerator"
|
||||||
|
],
|
||||||
|
"aircraft_carrier": [
|
||||||
|
"CVN_74_John_C__Stennis"
|
||||||
|
],
|
||||||
|
"helicopter_carrier": [
|
||||||
|
"LHA_1_Tarawa"
|
||||||
|
],
|
||||||
|
"destroyers": [
|
||||||
|
"OliverHazardPerryGroupGenerator"
|
||||||
|
],
|
||||||
|
"cruisers": [
|
||||||
|
"Ticonderoga_class"
|
||||||
|
],
|
||||||
|
"requirements": {},
|
||||||
|
"carrier_names": [
|
||||||
|
"CVN-71 Theodore Roosevelt"
|
||||||
|
],
|
||||||
|
"helicopter_carrier_names": [
|
||||||
|
"LHA-1 Tarawa",
|
||||||
|
"LHA-4 Nassau"
|
||||||
|
],
|
||||||
|
"navy_generators": [
|
||||||
|
"OliverHazardPerryGroupGenerator"
|
||||||
|
],
|
||||||
|
"has_jtac": true,
|
||||||
|
"jtac_unit": "MQ_9_Reaper"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user