Skip to content

HLL Vietnam#35

Draft
timraay wants to merge 36 commits into
experimentalfrom
feat/hll-vietnam
Draft

HLL Vietnam#35
timraay wants to merge 36 commits into
experimentalfrom
feat/hll-vietnam

Conversation

@timraay

@timraay timraay commented May 25, 2026

Copy link
Copy Markdown
Owner

Changes

Added support for Hell Let Loose: Vietnam

Support for HLL:V was added. As a result, most existing classes have been split up into two variants. One for HLL:V and one for the original HLL. Classes have been given a HLLV- and HLL- prefix respectively, f.e. Rcon became HLLVRcon and HLLRcon.

Data models (e.g. Layer, Weapon) have received the same treatment. Note that games do not always share the same attributes (f.e. HLLVRole.progression exist but not HLLRole.progression) or even entire data objects (f.e. HLLLoadout exists but not HLLVLoadout).

For type-checked environments where you want to support both games, union type aliases have been provided. These are prefixed with Any-.

AnyRcon: TypeAlias = HLLRcon | HLLVRcon

Most data models are now generated automatically

One of the hurdles of maintaining data models is that it was done manually. Not only is this a tedious process, it is easy to miss changes, particularly if they're not clearly documented in the game's patch notes.

Moving forward, data models for vehicles, weapons and loadouts are extracted from the game directly, which should improve efficiency and accuracy. As a side effect, some items have been renamed.

HLLRcon
HLLVRcon

  • Renamed await wait_until_connected() => connect()
  • Renamed async with connect() => connection()
  • Added __min_server_version__: ClassVar[int]

HLLSyncRcon
HLLVSyncRcon

  • Renamed wait_until_connected() => connect()
  • Renamed with connect() => connection()

Exceptions

  • Renamed HLLAuthError => RconAuthError,
  • Renamed HLLCommandError => RconCommandError,
  • Renamed HLLConnectionClosedError => RconConnectionClosedError,
  • Renamed HLLConnectionError => RconConnectionError,
  • Renamed HLLConnectionLostError => RconConnectionLostError,
  • Renamed HLLConnectionRefusedError => RconConnectionRefusedError,
  • Renamed HLLError => RconError,
  • Renamed HLLMessageError => RconMessageError,

HLLPlayerRoleId

  • Renamed ARTILLERY_ENGINEER = 15 => OPERATOR = 15
  • Renamed ARTILLERY_SUPPORT = 16 => GUNNER = 16

ForceMode

  • Now inherits from StrEnum instead of IntEnum

HLLVFaction

  • Added is_southern: bool
    • Whether a faction is part of the southern forces
    • Alias for is_allied: bool
  • Added is_northern: bool
    • Whether a faction is part of the northern forces
    • Alias for is_axis: bool

HLLLoadoutItem

  • Updated weapon: HLLWeapon | None => weapon: HLLWeapon
    • Every item is now a "weapon", even if non-lethal
  • Removed name: str
    • Use weapon.name instead

HLLVLoadoutItem

  • Added new data model

HLLMap
HLLVMap

  • Added year: int
  • Added allies_direction: CardinalDirection
  • Added axis_direction: CardinalDirection

RoleType

  • Added MORTAR = "Mortar"
  • Added HELICOPTER = "Helicopter"

HLLRole

  • Added is_mortar: bool
  • Added is_helicopter: bool
  • Removed ARTILLERY_ENGINEER: HLLRole
  • Removed ARTILLERY_SUPPORT: HLLRole

HLLVRole

  • Added is_mortar: bool
  • Added is_helicopter: bool
  • Added progression: list[HLLVRoleProgression]
  • Added get_available_capacity(level: int) -> HLLVRoleProgression
  • Added get_available_items(level: int, faction: HLLVFaction) -> set[HLLVLoadoutItem]
  • Added get_available_weapons(level: int, faction: HLLVFaction) -> set[HLLVLoadoutWeapons]

VehicleType

  • Added ANTI_AIRCRAFT_GUN = "Anti-Aircraft Gun"
  • Added BOAT = "Boat"
  • Added HELICOPTER = "Helicopter"
  • Added MORTAR = "Mortar"

VehicleSeatType

  • Added PILOT = "Pilot"
  • Added CO_PILOT = "Co-Pilot"
  • Renamed SPOTTER = "Spotter" => COMMANDER = "Commander"

WeaponType

  • Now includes non-lethal weapon types
  • Added GRENADE_LAUNCHER = "Grenade Launcher"
  • Added TANK_RECON = "Tank Recon"
  • Added TANK_SMOKE_SCREEN = "Tank Smoke Screen"
  • Added MORTAR = "Mortar"
  • Added SMOKE_GRENADE = "Smoke"
  • Added HEALING = "Healing"
  • Added BINOCULARS = "Binoculars"
  • Added SUPPLIES = "Supplies"
  • Added HAMMER = "Hammer"
  • Added WRENCH = "Wrench"
  • Added TORCH = "Torch"
  • Added WATCH = "Watch"
  • Renamed FLARE_GUN = "Flare Gun" => RECON_FLARE = "Recon Flare"

HLLWeapon
HLLVWeapon

  • Now includes non-lethal weapon types
  • Added is_lethal: bool
  • Fixed error when using model_dump()

Data JSON export

  • Now exports two files: data.hll.json and data.hllv.json
  • Fixed HLLLoadout incorrectly referencing other data models

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant