From e0153cfa6a5e16d1c9673c052e1be7f7bda4254a Mon Sep 17 00:00:00 2001 From: Khopa Date: Sat, 7 Nov 2020 03:21:53 +0100 Subject: [PATCH] Added Freya EWR sites to WW2 german factions --- game/db.py | 1 + gen/sam/freya_ewr.py | 39 ++++++++++++++++++++++++++++ gen/sam/sam_group_generator.py | 4 ++- qt_ui/widgets/map/QLiberationMap.py | 4 +-- resources/factions/germany_1942.json | 1 + resources/factions/germany_1944.json | 3 ++- 6 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 gen/sam/freya_ewr.py diff --git a/game/db.py b/game/db.py index 73159839..9bff2dcb 100644 --- a/game/db.py +++ b/game/db.py @@ -505,6 +505,7 @@ PRICES = { AirDefence.Flak_Searchlight_37: 4, AirDefence.Maschinensatz_33: 10, AirDefence.AAA_8_8cm_Flak_41: 10, + AirDefence.EWR_FuMG_401_Freya_LZ: 25, AirDefence.AAA_Bofors_40mm: 8, # FRENCH PACK MOD diff --git a/gen/sam/freya_ewr.py b/gen/sam/freya_ewr.py new file mode 100644 index 00000000..70571e56 --- /dev/null +++ b/gen/sam/freya_ewr.py @@ -0,0 +1,39 @@ +import random + +from dcs.vehicles import AirDefence, Unarmed, Infantry + +from gen.sam.group_generator import GroupGenerator + + +class FreyaGenerator(GroupGenerator): + """ + This generate a German flak artillery group using only free units, thus not requiring the WW2 asset pack + """ + + name = "Freya EWR Site" + price = 60 + + def generate(self): + + # TODO : would be better with the Concrete structure that is supposed to protect it + self.add_unit(AirDefence.EWR_FuMG_401_Freya_LZ, "EWR#1", self.position.x, self.position.y, self.heading) + + positions = self.get_circular_position(4, launcher_distance=50, coverage=360) + for i, position in enumerate(positions): + self.add_unit(AirDefence.AAA_Flak_Vierling_38, "AA#" + str(i), position[0], position[1], position[2]) + + positions = self.get_circular_position(4, launcher_distance=100, coverage=360) + for i, position in enumerate(positions): + self.add_unit(AirDefence.AAA_8_8cm_Flak_18, "AA#" + str(4+i), position[0], position[1], position[2]) + + # Command/Logi + self.add_unit(Unarmed.Kübelwagen_82, "Kubel#1", self.position.x - 20, self.position.y - 20, self.heading) + self.add_unit(Unarmed.Sd_Kfz_7, "Sdkfz#1", self.position.x + 20, self.position.y + 22, self.heading) + self.add_unit(Unarmed.Sd_Kfz_2, "Sdkfz#2", self.position.x - 22, self.position.y + 20, self.heading) + + # Maschinensatz_33 and Kdo.g 40 Telemeter + self.add_unit(AirDefence.Maschinensatz_33, "Energy#1", self.position.x + 20, self.position.y - 20, self.heading) + self.add_unit(AirDefence.AAA_Kdo_G_40, "Telemeter#1", self.position.x + 20, self.position.y - 10, self.heading) + self.add_unit(Infantry.Infantry_Mauser_98, "Inf#1", self.position.x + 20, self.position.y - 14, self.heading) + self.add_unit(Infantry.Infantry_Mauser_98, "Inf#2", self.position.x + 20, self.position.y - 22, self.heading) + self.add_unit(Infantry.Infantry_Mauser_98, "Inf#3", self.position.x + 20, self.position.y - 24, self.heading + 45) \ No newline at end of file diff --git a/gen/sam/sam_group_generator.py b/gen/sam/sam_group_generator.py index 6acc2759..d49bc85d 100644 --- a/gen/sam/sam_group_generator.py +++ b/gen/sam/sam_group_generator.py @@ -35,6 +35,7 @@ from gen.sam.sam_zsu23 import ZSU23Generator from gen.sam.sam_zu23 import ZU23Generator from gen.sam.sam_zu23_ural import ZU23UralGenerator from gen.sam.sam_zu23_ural_insurgent import ZU23UralInsurgentGenerator +from gen.sam.freya_ewr import FreyaGenerator from theater import TheaterGroundObject SAM_MAP = { @@ -67,7 +68,8 @@ SAM_MAP = { "HQ7Generator": HQ7Generator, "Flak18Generator": Flak18Generator, "ColdWarFlakGenerator": ColdWarFlakGenerator, - "EarlyColdWarFlakGenerator": EarlyColdWarFlakGenerator + "EarlyColdWarFlakGenerator": EarlyColdWarFlakGenerator, + "FreyaGenerator": FreyaGenerator } SAM_PRICES = { diff --git a/qt_ui/widgets/map/QLiberationMap.py b/qt_ui/widgets/map/QLiberationMap.py index 1017619b..9c5b414c 100644 --- a/qt_ui/widgets/map/QLiberationMap.py +++ b/qt_ui/widgets/map/QLiberationMap.py @@ -230,9 +230,9 @@ class QLiberationMap(QGraphicsView): unit = db.unit_type_from_name(u.type) if unit in UNITS_WITH_RADAR or unit in AAA_UNITS: can_fire = True - if unit.detection_range > detection_range: + if unit.detection_range and unit.detection_range > detection_range: detection_range = unit.detection_range - if unit.threat_range > threat_range: + if unit.threat_range and unit.threat_range > threat_range: threat_range = unit.threat_range if can_fire: threat_pos = self._transform_point(Point(ground_object.position.x+threat_range, diff --git a/resources/factions/germany_1942.json b/resources/factions/germany_1942.json index a11d9500..2deeca55 100644 --- a/resources/factions/germany_1942.json +++ b/resources/factions/germany_1942.json @@ -31,6 +31,7 @@ "FlakGenerator" ], "sams": [ + "FreyaGenerator", "FlakGenerator" ], "aircraft_carrier": [ diff --git a/resources/factions/germany_1944.json b/resources/factions/germany_1944.json index 3aea568b..5428c217 100644 --- a/resources/factions/germany_1944.json +++ b/resources/factions/germany_1944.json @@ -36,7 +36,8 @@ "FlakGenerator" ], "sams": [ - "FlakGenerator" + "FlakGenerator", + "FreyaGenerator" ], "aircraft_carrier": [ ],