add vertical takeoff and landing option

This commit is contained in:
Eclipse/Druss99 2025-01-01 14:38:26 -05:00 committed by Raffson
parent dd408f392b
commit dec57fccf9
4 changed files with 19 additions and 1 deletions

View File

@ -45,6 +45,7 @@
* **[Modding]** Support for Bandit's cloud presets mod (v15) * **[Modding]** Support for Bandit's cloud presets mod (v15)
* **[UX]** Reduce size of save-file by loading landmap data on the fly, which also implies no new campaign needs to be started to benefit from an updated landmap * **[UX]** Reduce size of save-file by loading landmap data on the fly, which also implies no new campaign needs to be started to benefit from an updated landmap
* **[New Game Wizard]** Ability to save an edited faction during new game creation * **[New Game Wizard]** Ability to save an edited faction during new game creation
* **[Options]** New option to make AI helicopters prefer vertical takeoff and landing
## Fixes ## Fixes
* **[UI/UX]** A-10A flights can be edited again * **[UI/UX]** A-10A flights can be edited again

View File

@ -30,6 +30,7 @@ from dcs.task import (
OptNoReportWaypointPass, OptNoReportWaypointPass,
OptRadioUsageContact, OptRadioUsageContact,
OptRadioSilence, OptRadioSilence,
OptVerticalTakeoffLanding,
Tanker, Tanker,
RecoveryTanker, RecoveryTanker,
ActivateBeaconCommand, ActivateBeaconCommand,
@ -114,6 +115,7 @@ class AircraftBehavior:
mission_uses_gun: bool = True, mission_uses_gun: bool = True,
rtb_on_bingo: bool = True, rtb_on_bingo: bool = True,
ai_unlimited_fuel: Optional[bool] = None, ai_unlimited_fuel: Optional[bool] = None,
ai_vertical_takoff_landing: Optional[bool] = None,
) -> None: ) -> None:
group.points[0].tasks.clear() group.points[0].tasks.clear()
if ai_unlimited_fuel is None: if ai_unlimited_fuel is None:
@ -121,6 +123,11 @@ class AircraftBehavior:
flight.squadron.coalition.game.settings.ai_unlimited_fuel flight.squadron.coalition.game.settings.ai_unlimited_fuel
) )
if ai_vertical_takoff_landing is None:
ai_vertical_takoff_landing = (
flight.squadron.coalition.game.settings.ai_vertical_takoff_landing
)
# at IP, insert waypoint to orient aircraft in correct direction # at IP, insert waypoint to orient aircraft in correct direction
layout = flight.flight_plan.layout layout = flight.flight_plan.layout
at_ip_or_combat = flight.state.is_at_ip or flight.state.in_combat at_ip_or_combat = flight.state.is_at_ip or flight.state.in_combat
@ -150,6 +157,9 @@ class AircraftBehavior:
if rtb_winchester is not None: if rtb_winchester is not None:
group.points[0].tasks.append(OptRTBOnOutOfAmmo(rtb_winchester)) group.points[0].tasks.append(OptRTBOnOutOfAmmo(rtb_winchester))
if ai_vertical_takoff_landing and flight.is_helo:
group.points[0].tasks.append(OptVerticalTakeoffLanding(True))
# Confiscate the bullets of AI missions that do not rely on the gun. There is no # Confiscate the bullets of AI missions that do not rely on the gun. There is no
# "all but gun" RTB winchester option, so air to ground missions with mixed # "all but gun" RTB winchester option, so air to ground missions with mixed
# weapon types will insist on using all of their bullets after running out of # weapon types will insist on using all of their bullets after running out of

View File

@ -332,6 +332,13 @@ class Settings:
default=False, default=False,
detail="AI will jettison their fuel tanks as soon as they're empty.", detail="AI will jettison their fuel tanks as soon as they're empty.",
) )
ai_vertical_takoff_landing: bool = boolean_option(
"AI helicopters use vertical takeoff and landing",
page=CAMPAIGN_DOCTRINE_PAGE,
section=GENERAL_SECTION,
default=False,
detail="AI will use vertical takeoff and landing instead of combat takeoff and landing.",
)
max_plane_altitude_offset: int = bounded_int_option( max_plane_altitude_offset: int = bounded_int_option(
"Maximum randomized altitude offset (x1000 ft) for airplanes.", "Maximum randomized altitude offset (x1000 ft) for airplanes.",
page=CAMPAIGN_DOCTRINE_PAGE, page=CAMPAIGN_DOCTRINE_PAGE,

View File

@ -33,7 +33,7 @@ pluggy==1.5.0
pre-commit==3.7.1 pre-commit==3.7.1
pydantic==2.7.4 pydantic==2.7.4
pydantic-settings==2.3.3 pydantic-settings==2.3.3
pydcs @ git+https://github.com/dcs-retribution/pydcs@a5292f2d1803ba13dd83d6b024837d8eb44fd702 pydcs @ git+https://github.com/dcs-retribution/pydcs@aa892f0da70586febfe8046bcd92cae4eae70964
pyinstaller==5.13.2 pyinstaller==5.13.2
pyinstaller-hooks-contrib==2024.0 pyinstaller-hooks-contrib==2024.0
pyparsing==3.1.2 pyparsing==3.1.2