Add F-15I support

Co-Authored-By: M Chimiste <37678080+M-Chimiste@users.noreply.github.com>
This commit is contained in:
Raffson 2023-07-09 19:32:15 +02:00
parent 06d98db55b
commit d6e7451f8a
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99
10 changed files with 94 additions and 0 deletions

View File

@ -53,6 +53,7 @@
* **[Flight Plans]** Added "SEAD Sweep" flight plan, which basically reintroduces the legacy "SEAD Escort" flight plan where the flight will engage whatever it can find without actually escorting the primary flight.
* **[Flight Plans]** Added SEAD capability to F-16A MLU and SEAD Escort & SEAD to F-16A.
* **[Mission Generation]** Spawn unused helicopters or LHA-capable aircraft at helipads at FOBs
* **[Modding]** Support for F-15I Ra'am v1.0 by IDF Mods Project
## Fixes
* **[New Game Wizard]** Settings would not persist when going back to a previous page (obsolete due to overhaul).

View File

@ -70,6 +70,10 @@ class Flight(SidcDescribable, RadioFrequencyContainer, TacanContainer):
self.divert = divert
self.flight_type = flight_type
self.loadout = Loadout.default_for(self)
if self.squadron.aircraft.name == "F-15I Ra'am":
self.loadout.pylons[16] = Weapon.with_clsid(
"{IDF_MODS_PROJECT_F-15I_Raam_Dome}"
)
self.start_type = start_type
self.use_custom_loadout = False
self.custom_name = custom_name

View File

@ -32,6 +32,7 @@ from game.dcs.countries import country_with_name
from game.dcs.groundunittype import GroundUnitType
from game.dcs.shipunittype import ShipUnitType
from game.dcs.unittype import UnitType
from pydcs_extensions import inject_F15I, eject_F15I
from pydcs_extensions.f16i_idf.f16i_idf import inject_F16I, eject_F16I
if TYPE_CHECKING:
@ -328,6 +329,14 @@ class Faction:
self.remove_aircraft("VSN_F4C")
if not mod_settings.f15d_baz:
self.remove_aircraft("F-15D")
if not mod_settings.f_15_idf:
eject_F15I()
if AircraftType.named("F-15I Ra'am") in self.aircraft:
self.aircraft.remove(AircraftType.named("F-15I Ra'am"))
else:
inject_F15I()
if AircraftType.named("F-15E Strike Eagle (Suite 4+)") in self.aircraft:
self.aircraft.add(AircraftType.named("F-15I Ra'am"))
if not mod_settings.f_16_idf:
self.remove_aircraft("F-16I")
self.remove_aircraft("F-16D_52")

View File

@ -59,6 +59,7 @@ class ModSettings:
a7e_corsair2: bool = False
f4bc_phantom: bool = False
f15d_baz: bool = False
f_15_idf: bool = False
f_16_idf: bool = False
fa_18efg: bool = False
f22_raptor: bool = False

View File

@ -6,6 +6,7 @@ from .f100 import *
from .f104 import *
from .f105 import *
from .f15d import *
from .f15i_idf import *
from .f16i_idf import *
from .f22a import *
from .f4b import *

View File

@ -0,0 +1 @@
from .f15i_idf import *

View File

@ -0,0 +1,71 @@
from dcs.planes import F_15ESE
from pydcs_extensions.pylon_injector import inject_pylon, eject_pylon
from pydcs_extensions.weapon_injector import inject_weapons
class WeaponsF15I:
Python_4_ = {
"clsid": "{5CE2FF2A-645A-4197-B48D-8720AC69394F}",
"name": "Python-4 ",
"weight": 103.6,
}
F_15I_Ra_am_Dome = {
"clsid": "{IDF_MODS_PROJECT_F-15I_Raam_Dome}",
"name": "F-15I Ra'am Dome",
"weight": 0,
}
inject_weapons(WeaponsF15I)
class F15IPylon1:
Python_4_ = (1, WeaponsF15I.Python_4_)
# ERRR {Python-4 Training}
class F15IPylon3:
Python_4_ = (3, WeaponsF15I.Python_4_)
# ERRR {Python-4 Training}
class F15IPylon13:
Python_4_ = (13, WeaponsF15I.Python_4_)
# ERRR {Python-4 Training}
class F15IPylon15:
Python_4_ = (15, WeaponsF15I.Python_4_)
# ERRR {Python-4 Training}
class Pylon16:
F_15I_Ra_am_Dome = (16, WeaponsF15I.F_15I_Ra_am_Dome)
def inject_F15I() -> None:
F_15ESE.pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}
# Injects modified weapons from the IDF Mods Project F-16I Sufa
# into pydcs databases via introspection.
inject_pylon(F_15ESE.Pylon1, F15IPylon1)
inject_pylon(F_15ESE.Pylon3, F15IPylon3)
inject_pylon(F_15ESE.Pylon13, F15IPylon13)
inject_pylon(F_15ESE.Pylon15, F15IPylon15)
F_15ESE.Pylon16 = Pylon16
def eject_F15I() -> None:
F_15ESE.pylons = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
# Injects modified weapons from the IDF Mods Project F-16I Sufa
# into pydcs databases via introspection.
eject_pylon(F_15ESE.Pylon1, F15IPylon1)
eject_pylon(F_15ESE.Pylon3, F15IPylon3)
eject_pylon(F_15ESE.Pylon13, F15IPylon13)
eject_pylon(F_15ESE.Pylon15, F15IPylon15)
if hasattr(F_15ESE, "Pylon16"):
delattr(F_15ESE, "Pylon16")

View File

@ -92,6 +92,7 @@ class NewGameWizard(QtWidgets.QWizard):
a7e_corsair2=self.field("a7e_corsair2"),
f4bc_phantom=self.field("f4bc_phantom"),
f15d_baz=self.field("f15d_baz"),
f_15_idf=self.field("f_15_idf"),
f_16_idf=self.field("f_16_idf"),
fa_18efg=self.field("fa_18efg"),
f22_raptor=self.field("f22_raptor"),

View File

@ -102,6 +102,8 @@ class GeneratorOptions(QtWidgets.QWizardPage):
self.registerField("f4bc_phantom", self.f4bc_phantom)
self.f15d_baz = QtWidgets.QCheckBox()
self.registerField("f15d_baz", self.f15d_baz)
self.f_15_idf = QtWidgets.QCheckBox()
self.registerField("f_15_idf", self.f_15_idf)
self.f_16_idf = QtWidgets.QCheckBox()
self.registerField("f_16_idf", self.f_16_idf)
self.fa_18efg = QtWidgets.QCheckBox()
@ -155,6 +157,7 @@ class GeneratorOptions(QtWidgets.QWizardPage):
self.f4bc_phantom,
),
("F-15D Baz (v1.0)", self.f15d_baz),
("F-15I Ra'am (v1.0 by IDF Mods Project)", self.f_15_idf),
("F-16I Sufa & F-16D (v3.6 by IDF Mods Project)", self.f_16_idf),
("F/A-18E/F/G Super Hornet (version 2.1)", self.fa_18efg),
("F-22A Raptor", self.f22_raptor),
@ -216,6 +219,7 @@ class GeneratorOptions(QtWidgets.QWizardPage):
self.uh_60l.setChecked(s.get("uh_60l", False))
self.f4bc_phantom.setChecked(s.get("f4bc_phantom", False))
self.f15d_baz.setChecked(s.get("f15d_baz", False))
self.f_15_idf.setChecked(s.get("f_15_idf", False))
self.f_16_idf.setChecked(s.get("f_16_idf", False))
self.fa_18efg.setChecked(s.get("fa_18efg", False))
self.f22_raptor.setChecked(s.get("f22_raptor", False))

View File

@ -11,6 +11,7 @@ role: Multirole Strike Fighter
max_range: 300
variants:
F-15E Strike Eagle (Suite 4+): {}
F-15I Ra'am: {}
radios:
intra_flight: AN/ARC-210
inter_flight: AN/ARC-164