Skip to content

Skirmish mode — Lords of the Realm 2 (GoG)#

Evidence-backed reference for skirmish: a single tactical battle with no campaign map — human vs AI (single player) or human vs human (multiplayer). Normative gameplay rules belong in docs/spec/ eventually; this tree is the primary evidence layer for building a compatible clean-room client.

Summary#

Skirmish is a GoG edition feature (retail LORDS2.EXE does not implement it). Build comparison: builds.md. The launcher (SIGS) can set GameType=Skirmish, which flags the client (DAT_0057cb38 = 1) and routes the gateway wizard to skirmish setup (wizard steps 0xb MP / 0xc SP) instead of a full campaign lobby. One battle is fought on a preset or custom map with preconfigured armies; after the fight the player sees casualty score screens and may rematch or return to the gateway menu.

Retail LORDS2.EXE does not implement skirmish. The retail export has no Skirmish strings, no wizard steps 0xb/0xc, and post-battle flow always returns to the campaign siege-resolve screen (0x13). A clone targeting GoG skirmish parity should treat retail as out of scope for this mode.

Player-visible flow#

flowchart TD
  launch["GoG launch / SIGS init<br/>GameType optional"]
  gateway["Gateway wizard screen 0x1f step 1"]
  pick["Menu: SP / MP / options"]
  setup["Skirmish setup step 0xc SP or 0xb MP<br/>skirmish.pl8 background"]
  config["Battle type, scenario, armies, colors"]
  start["FUN_004329ec start<br/>lotr2_game_begin_new_campaign SP"]
  battle["Tactical battle active_view=2<br/>DAT_0057a0f0=1"]
  interim["Post-battle screen 0x2e"]
  score1["Score screen '.' score1.pl8"]
  score2["Score screen '/' score2.pl8 + high scores"]
  rematch["Rematch FUN_0042b780 or gateway 0x1c"]

  launch --> gateway --> pick --> setup --> config --> start --> battle
  battle --> interim --> score1 --> score2 --> rematch
  rematch --> setup
  rematch --> gateway

Modes#

Mode Session flag Wizard step Opponent
SP vs NPC DAT_00553030 == 0 0xc (12) AI noble from preset table
MP PvP DAT_00553030 == 1 0xb (11) Remote human via ASIGS

Documentation index#

Page Contents
entry-and-menu.md SIGS GameType, gateway wizard, main menu routing
setup-wizard.md Setup UI controls, battle types, ready/start
army-and-scenarios.md Embedded preset tables, external TROOPS*.ENG
battle-flow.md Battle init, combat differences vs campaign
scoring-and-rematch.md Score screens, high scores, rematch
multiplayer-pvp.md ASIGS session, sync opcodes
state-and-globals.md State machine and global index
evidence.md Symbols, assets, open questions

Key globals (quick reference)#

GoG symbol (proposed) Address Role
lotr2_skirmish_active DAT_0057a0f0 1 while skirmish battle session active
lotr2_skirmish_game_type DAT_0057cb38 1 when SIGS GameType=Skirmish
lotr2_skirmish_battle_type DAT_0053e91c 0/1 field, 2 siege, 3 custom
lotr2_skirmish_scenario_index DAT_0056d590 Scenario row within battle type
lotr2_skirmish_map_index DAT_0053f258 Map table row (0–7, then wrap)

Full list: state-and-globals.md.

Tools#

Regenerate embedded tables:

python3 tools/ghidra/dump_skirmish_tables.py gog/Lords2.exe

Parse UI strings:

python3 tools/parse_l2_eng.py L2.ENG 0xb 0x25 0x26 0x53

Evidence sources#

Layer Path
Decompilation src/Lords2-gog.exe.c
Combat module architecture/combat/MODULE.md
Game module architecture/game/MODULE.md
AI nobles nobles/README.md
Table dump tools/ghidra/dump_skirmish_tables.py

Confidence#

Area Level
GoG-only scope vs retail confirmed (string / branch audit)
Wizard steps and screen modes likely
Army preset numbers confirmed (binary dump)
High-score persistence speculative