mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Added map theater : North Caucasus
This commit is contained in:
parent
8132c7e676
commit
08c2972cf9
40
changelog.md
40
changelog.md
@ -1,19 +1,27 @@
|
|||||||
2.0 RC 6
|
#2.0 RC 6
|
||||||
--------
|
|
||||||
|
|
||||||
Features/Improvements :
|
Saves file from RC5 are not compatible with the new version.
|
||||||
* Supercarrier support (You have to go to settings to enable it, if you have the supercarrier module)
|
Sorry :(
|
||||||
* Carrier ICLS channel will now be configured (check your briefing)
|
|
||||||
* When a base is captured, refill the "base defenses" group with units for the new owner.
|
|
||||||
* SAM units will spawn on RED Alarm state
|
|
||||||
* AI Flight planner now creates its own STRIKE flights
|
|
||||||
* Added performance settings to allow disabling : smoke, artillery strike, moving units, infantry, SAM alert mode.
|
|
||||||
* Added support for newest WW2 Units
|
|
||||||
|
|
||||||
Fixes :
|
##Features/Improvements :
|
||||||
|
|
||||||
* Fixed : CAS waypoints created from the "Predefined waypoint selector" would not be at the exact location of the frontline
|
* **[Units/Factions]** Supercarrier support (You have to go to settings to enable it, if you have the supercarrier module)
|
||||||
* Fixed : Game generation does not work when "no night mission" settings was selected and the current time was "day"
|
* **[Units/Factions]** Added 'Modern Bluefor' factions, containing all most popular DCS flyable units
|
||||||
* Fixed : Game generation does not work when the player selected faction has no AWACS
|
* **[Units/Factions]** Factions US 2005 / 1990 will sometimes use Arleigh Burke instead of Perry as carrier escorts
|
||||||
* Fixed : Base defenses would not be generated on normandy map
|
* **[Units/Factions]** Added support for newest WW2 Units
|
||||||
* Fixed : CAP mission flown from airbase are not named BARCAP anymore (CAP from carrier is still named BARCAP)
|
* **[Campaign logic]** When a base is captured, refill the "base defenses" group with units for the new owner.
|
||||||
|
* **[Mission Generator]** Carrier ICLS channel will now be configured (check your briefing)
|
||||||
|
* **[Mission Generator]** SAM units will spawn on RED Alarm state
|
||||||
|
* **[Mission Generator]** AI Flight planner now creates its own STRIKE flights
|
||||||
|
* **[Mission Generator]** AI units assigned to Strike flight will now actually engage the buildings they have been assigned.
|
||||||
|
* **[Mission Generator]** Added performance settings to allow disabling : smoke, artillery strike, moving units, infantry, SAM Red alert mode.
|
||||||
|
* **[UX]** : Improved flight selection behaviour in the Mission Planning Window
|
||||||
|
|
||||||
|
##Fixed issues :
|
||||||
|
|
||||||
|
* **[Mission Generator]** Payloads were not correctly assigned in the release version.
|
||||||
|
* **[Mission Generator]** Game generation does not work when "no night mission" settings was selected and the current time was "day"
|
||||||
|
* **[Mission Generator]** Game generation does not work when the player selected faction has no AWACS
|
||||||
|
* **[Campaign Generator]** Base defenses would not be generated on Normandy map
|
||||||
|
* **[Mission Planning]** CAS waypoints created from the "Predefined waypoint selector" would not be at the exact location of the frontline
|
||||||
|
* **[Naming]** CAP mission flown from airbase are not named BARCAP anymore (CAP from carrier is still named BARCAP)
|
||||||
|
|||||||
@ -15,6 +15,7 @@ BLUEFOR_MODERN = {
|
|||||||
JF_17,
|
JF_17,
|
||||||
M_2000C,
|
M_2000C,
|
||||||
F_5E_3,
|
F_5E_3,
|
||||||
|
Su_27,
|
||||||
|
|
||||||
Su_25T,
|
Su_25T,
|
||||||
A_10A,
|
A_10A,
|
||||||
|
|||||||
@ -21,12 +21,13 @@ if __name__ == "__main__":
|
|||||||
if os.path.exists(custom_payloads):
|
if os.path.exists(custom_payloads):
|
||||||
dcs.planes.FlyingType.payload_dirs.append(custom_payloads)
|
dcs.planes.FlyingType.payload_dirs.append(custom_payloads)
|
||||||
else:
|
else:
|
||||||
|
# For release version the path is different.
|
||||||
custom_payloads = os.path.join(os.path.dirname(os.path.realpath(__file__)),
|
custom_payloads = os.path.join(os.path.dirname(os.path.realpath(__file__)),
|
||||||
"resources\\customized_payloads")
|
"resources\\customized_payloads")
|
||||||
if os.path.exists(custom_payloads):
|
if os.path.exists(custom_payloads):
|
||||||
dcs.planes.FlyingType.payload_dirs.append(custom_payloads)
|
dcs.planes.FlyingType.payload_dirs.append(custom_payloads)
|
||||||
|
|
||||||
VERSION_STRING = "2.0"
|
VERSION_STRING = "2.0RC6"
|
||||||
logging_module.setup_version_string(VERSION_STRING)
|
logging_module.setup_version_string(VERSION_STRING)
|
||||||
logging.info("Using {} as userdata folder".format(persistency.base_path()))
|
logging.info("Using {} as userdata folder".format(persistency.base_path()))
|
||||||
|
|
||||||
|
|||||||
@ -38,6 +38,7 @@ class NewGameWizard(QtWidgets.QWizard):
|
|||||||
isTerrainNttr = self.field("isTerrainNttr")
|
isTerrainNttr = self.field("isTerrainNttr")
|
||||||
isTerrainCaucasusSmall = self.field("isTerrainCaucasusSmall")
|
isTerrainCaucasusSmall = self.field("isTerrainCaucasusSmall")
|
||||||
isTerrainCaucasusSmallInverted = self.field("isTerrainCaucasusSmallInverted")
|
isTerrainCaucasusSmallInverted = self.field("isTerrainCaucasusSmallInverted")
|
||||||
|
isTerrainCaucasusNorth= self.field("isTerrainCaucasusNorth")
|
||||||
isIranianCampaignTheater = self.field("isIranianCampaignTheater")
|
isIranianCampaignTheater = self.field("isIranianCampaignTheater")
|
||||||
isTerrainNormandy = self.field("isTerrainNormandy")
|
isTerrainNormandy = self.field("isTerrainNormandy")
|
||||||
isTerrainEmirates = self.field("isTerrainEmirates")
|
isTerrainEmirates = self.field("isTerrainEmirates")
|
||||||
@ -56,6 +57,8 @@ class NewGameWizard(QtWidgets.QWizard):
|
|||||||
conflicttheater = caucasus.WesternGeorgia()
|
conflicttheater = caucasus.WesternGeorgia()
|
||||||
elif isTerrainCaucasusSmallInverted:
|
elif isTerrainCaucasusSmallInverted:
|
||||||
conflicttheater = caucasus.WesternGeorgiaInverted()
|
conflicttheater = caucasus.WesternGeorgiaInverted()
|
||||||
|
elif isTerrainCaucasusNorth:
|
||||||
|
conflicttheater = caucasus.NorthCaucasus()
|
||||||
elif isIranianCampaignTheater:
|
elif isIranianCampaignTheater:
|
||||||
conflicttheater = persiangulf.IranianCampaign()
|
conflicttheater = persiangulf.IranianCampaign()
|
||||||
elif isTerrainEmirates:
|
elif isTerrainEmirates:
|
||||||
@ -218,12 +221,14 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
|
|||||||
|
|
||||||
# Terrain selection
|
# Terrain selection
|
||||||
terrainGroup = QtWidgets.QGroupBox("Terrain")
|
terrainGroup = QtWidgets.QGroupBox("Terrain")
|
||||||
terrainCaucasusSmall = QtWidgets.QRadioButton("Caucasus - Western Georgia [RECOMMENDED]")
|
terrainCaucasusSmall = QtWidgets.QRadioButton("Caucasus - Western Georgia [RECOMMENDED - Early Cold War Era]")
|
||||||
terrainCaucasusSmall.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Caucasus"]))
|
terrainCaucasusSmall.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Caucasus"]))
|
||||||
terrainCaucasusSmallInverted = QtWidgets.QRadioButton("Caucasus - Western Georgia Inverted [RECOMMENDED]")
|
terrainCaucasusSmallInverted = QtWidgets.QRadioButton("Caucasus - Western Georgia Inverted [RECOMMENDED - Early Cold War Era]")
|
||||||
terrainCaucasusSmallInverted.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Caucasus"]))
|
terrainCaucasusSmallInverted.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Caucasus"]))
|
||||||
terrainCaucasus = QtWidgets.QRadioButton("Caucasus - Full map [NOT TESTED]")
|
terrainCaucasus = QtWidgets.QRadioButton("Caucasus - Full map [NOT TESTED]")
|
||||||
terrainCaucasus.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Caucasus"]))
|
terrainCaucasus.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Caucasus"]))
|
||||||
|
terrainCaucasusNorth = QtWidgets.QRadioButton("Caucasus - North - [RECOMMENDED - Modern Era]")
|
||||||
|
terrainCaucasusNorth.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Caucasus"]))
|
||||||
|
|
||||||
terrainPg = QtWidgets.QRadioButton("Persian Gulf - Full Map [NOT TESTED]")
|
terrainPg = QtWidgets.QRadioButton("Persian Gulf - Full Map [NOT TESTED]")
|
||||||
terrainPg.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Persian_Gulf"]))
|
terrainPg.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Persian_Gulf"]))
|
||||||
@ -250,6 +255,7 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
|
|||||||
self.registerField('isTerrainCaucasus', terrainCaucasus)
|
self.registerField('isTerrainCaucasus', terrainCaucasus)
|
||||||
self.registerField('isTerrainCaucasusSmall', terrainCaucasusSmall)
|
self.registerField('isTerrainCaucasusSmall', terrainCaucasusSmall)
|
||||||
self.registerField('isTerrainCaucasusSmallInverted', terrainCaucasusSmallInverted)
|
self.registerField('isTerrainCaucasusSmallInverted', terrainCaucasusSmallInverted)
|
||||||
|
self.registerField('isTerrainCaucasusNorth', terrainCaucasusNorth)
|
||||||
self.registerField('isTerrainPg', terrainPg)
|
self.registerField('isTerrainPg', terrainPg)
|
||||||
self.registerField('isIranianCampaignTheater', terrainIran)
|
self.registerField('isIranianCampaignTheater', terrainIran)
|
||||||
self.registerField('isTerrainEmirates', terrainEmirates)
|
self.registerField('isTerrainEmirates', terrainEmirates)
|
||||||
@ -261,6 +267,7 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
|
|||||||
terrainGroupLayout = QtWidgets.QVBoxLayout()
|
terrainGroupLayout = QtWidgets.QVBoxLayout()
|
||||||
terrainGroupLayout.addWidget(terrainCaucasusSmall)
|
terrainGroupLayout.addWidget(terrainCaucasusSmall)
|
||||||
terrainGroupLayout.addWidget(terrainCaucasusSmallInverted)
|
terrainGroupLayout.addWidget(terrainCaucasusSmallInverted)
|
||||||
|
terrainGroupLayout.addWidget(terrainCaucasusNorth)
|
||||||
terrainGroupLayout.addWidget(terrainCaucasus)
|
terrainGroupLayout.addWidget(terrainCaucasus)
|
||||||
terrainGroupLayout.addWidget(terrainIran)
|
terrainGroupLayout.addWidget(terrainIran)
|
||||||
terrainGroupLayout.addWidget(terrainEmirates)
|
terrainGroupLayout.addWidget(terrainEmirates)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@ -73,11 +73,6 @@ class CaucasusTheater(ConflictTheater):
|
|||||||
self.carrier_1.captured = True
|
self.carrier_1.captured = True
|
||||||
self.batumi.captured = True
|
self.batumi.captured = True
|
||||||
|
|
||||||
def add_controlpoint(self, point: ControlPoint, connected_to: typing.Collection[ControlPoint] = []):
|
|
||||||
point.name = " ".join(re.split(r"[ -]", point.name)[:1])
|
|
||||||
|
|
||||||
super(CaucasusTheater, self).add_controlpoint(point, connected_to=connected_to)
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
A smaller version of the caucasus map in western georgia.
|
A smaller version of the caucasus map in western georgia.
|
||||||
@ -161,3 +156,50 @@ class WesternGeorgiaInverted(ConflictTheater):
|
|||||||
|
|
||||||
self.carrier_1.captured = True
|
self.carrier_1.captured = True
|
||||||
self.sochi.captured = True
|
self.sochi.captured = True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class NorthCaucasus(ConflictTheater):
|
||||||
|
terrain = caucasus.Caucasus()
|
||||||
|
overview_image = "caumap.gif"
|
||||||
|
reference_points = {(-317948.32727306, 635639.37385346): (278.5*4, 319*4),
|
||||||
|
(-355692.3067714, 617269.96285781): (263*4, 352*4), }
|
||||||
|
|
||||||
|
landmap = load_landmap("resources\\caulandmap.p")
|
||||||
|
daytime_map = {
|
||||||
|
"dawn": (6, 9),
|
||||||
|
"day": (9, 18),
|
||||||
|
"dusk": (18, 20),
|
||||||
|
"night": (0, 5),
|
||||||
|
}
|
||||||
|
|
||||||
|
carrier_1 = ControlPoint.carrier("Carrier", mapping.Point(-305810.6875, 406399.1875))
|
||||||
|
|
||||||
|
def __init__(self, load_ground_objects=True):
|
||||||
|
super(NorthCaucasus, self).__init__()
|
||||||
|
|
||||||
|
self.kutaisi = ControlPoint.from_airport(caucasus.Kutaisi, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||||
|
self.soganlug = ControlPoint.from_airport(caucasus.Soganlug, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||||
|
self.maykop = ControlPoint.from_airport(caucasus.Maykop_Khanskaya, LAND, SIZE_LARGE, IMPORTANCE_HIGH)
|
||||||
|
self.beslan = ControlPoint.from_airport(caucasus.Beslan, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||||
|
self.nalchik = ControlPoint.from_airport(caucasus.Nalchik, LAND, SIZE_REGULAR, 1.1)
|
||||||
|
self.mineralnye = ControlPoint.from_airport(caucasus.Mineralnye_Vody, LAND, SIZE_BIG, 1.3)
|
||||||
|
self.mozdok = ControlPoint.from_airport(caucasus.Mozdok, LAND, SIZE_BIG, 1.1)
|
||||||
|
self.carrier_1 = ControlPoint.carrier("Carrier", mapping.Point(-285810.6875, 496399.1875))
|
||||||
|
|
||||||
|
self.soganlug.frontline_offset = 0.5
|
||||||
|
self.soganlug.base.strength = 1
|
||||||
|
|
||||||
|
self.add_controlpoint(self.kutaisi, connected_to=[self.soganlug])
|
||||||
|
self.add_controlpoint(self.soganlug, connected_to=[self.beslan, self.kutaisi])
|
||||||
|
self.add_controlpoint(self.beslan, connected_to=[self.soganlug, self.mozdok, self.nalchik])
|
||||||
|
self.add_controlpoint(self.nalchik, connected_to=[self.beslan, self.mozdok, self.mineralnye])
|
||||||
|
self.add_controlpoint(self.mozdok, connected_to=[self.nalchik, self.beslan, self.mineralnye])
|
||||||
|
self.add_controlpoint(self.mineralnye, connected_to=[self.nalchik, self.mozdok, self.maykop])
|
||||||
|
self.add_controlpoint(self.maykop, connected_to=[self.mineralnye])
|
||||||
|
self.add_controlpoint(self.carrier_1, connected_to=[])
|
||||||
|
|
||||||
|
self.carrier_1.captured = True
|
||||||
|
self.soganlug.captured = True
|
||||||
|
self.kutaisi.captured = True
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user