Skip to content

Skirmish — entry and main menu#

Summary#

Skirmish is entered through the gateway wizard (screen mode 0x1f, decimal 31) after intro assets load. GoG sets a launcher flag when GameType=Skirmish is read from SIGS; that flag steers multiplayer setup away from the campaign lobby and toward skirmish wizard step 0xb. Single-player skirmish uses step 0xc.

Confidence: likely for menu string labels (L2.ENG group 0xb); confirmed for SIGS GameType branch.


SIGS / launcher bootstrap#

On startup, FUN_004b7a9a initializes the SIGS session object (DAT_004e2a30). When initialization succeeds:

  1. Reads string key GameType via FUN_004b6e8e.
  2. If value equals "Skirmish"DAT_0057cb38 = 1 (skirmish launcher mode).
  3. If value equals the alternate campaign string at DAT_004e2c54DAT_0057cb38 = 0.
  4. Sets DAT_00568464 = 1 when SIGS is active.
  5. If connected to multiplayer lobby service → DAT_00553248 = 1.

Evidence: src/Lords2-gog.exe.c ~92210–92245.

Global Meaning
DAT_0057cb38 1 = launched as skirmish; 0 = campaign-class game
DAT_00568464 SIGS session initialized
DAT_00553248 SIGS MP connection active (affects save extensions and lobby UI)

Gateway wizard shell#

Screen mode Value Role
Wizard 0x1f Main menu and setup flow
Gateway return 0x1c Post-skirmish shell (gateway.pl8)

After intro / sim tick, the client sets lotr2_game_screen_mode = 0x1f and wizard step 1 (DAT_005530f0 = 1), unless already in MP (DAT_00553030 != 0 → step 4).

Asset loading for steps ≥ 0xb uses skirmish.256 + skirmish.pl8 (or skircust.pl8 when custom map mode is on). See setup-wizard.md.


Drawn by FUN_0041ea14 / FUN_0041eaa3. Strings from L2.ENG group 11 (0xb):

Index Label
2 Single player
3 Multiple players
0x2f (47) (row 3 — label in PL8 art; index reused in other contexts)
4 Exit game

Hit targets: widget table DAT_004dcb48 (4 rows). Selection stored in DAT_00553114; confirmed click sets DAT_0053f648.

SIGS fast path#

When DAT_00568464 != 0 and step 1 receives a click, the client sets lotr2_game_turn_phase = 2 and calls FUN_00432b05 (MP lobby bootstrap) without using the normal widget dispatch — Play Now path for connected SIGS installs.

Evidence: ~93797–93800.


Five rows (DAT_004dcba8), strings group 0xb indices 6–9 and 0x13:

Index Label
6 Play Now!
7 Load a game
8 Custom game
0x13 (fourth row)
9 Back

FUN_00432cc8 dispatches by lotr2_game_turn_phase:

turn_phase Effect
1 Step 5 (SP setup)
2 Load-game filename step 3
3 Step 4 config; sets DAT_0055302c = 2
4 Intro movie (lom.smk)
5 Step 4 config; sets DAT_0055302c = 3 (skirmish branch)

When DAT_0055302c == 3, FUN_00433155 opens skirmish setup (step 0xc SP / 0xb MP) instead of campaign MP step 8.


Skirmish vs campaign MP routing#

In FUN_00433155, when lotr2_game_turn_phase == 2 and MP is active (DAT_00553030 != 0):

Condition Next wizard step
DAT_0057cb38 == 0 (campaign) 8 — normal MP name/lobby panel
DAT_0057cb38 == 1 (skirmish) 0xb — skirmish MP army panel

SP skirmish (DAT_0055302c == 3, DAT_00553030 == 0): step 0xc.

Both paths call FUN_0042b919 + FUN_0042b7f7 to pre-init skirmish battle state before setup UI is shown.


Session mode flags#

Global SP MP
DAT_00553030 0 1
Tick function lotr2_game_tick_sp lotr2_game_tick_mp
Army data file troops2.eng / troops3.eng troops.eng

MP bootstrap: FUN_004b7250 sets DAT_00553030 = 1. Abort returns to SP via FUN_004b743b.


Gateway return after battle#

When DAT_0053f0c4 is 10 or 11, lotr2_combat_enter_mp_lobby_from_battle sets screen 0x1c and reloads gateway assets. From there, confirming starts FUN_004329ec if DAT_0053f258 < 8, advancing the map rotation index on tag 10.

See scoring-and-rematch.md.


Interop notes#

  • Skirmish MP on GoG uses ASIGS, not retail DirectPlay (DPLAYX.DLL).
  • Launcher GameType=Skirmish is required for MP routing to step 0xb; without SIGS the client uses campaign MP step 8.

Evidence#

Symbol Address Role
FUN_004b7a9a 0x004b7a9a SIGS init, GameType
lotr2_game_wizard_load_step_assets 0x0042634c Skirmish PL8 at step ≥ 0xb
FUN_00432cc8 0x00432cc8 Menu step dispatch
FUN_00433155 0x00433155 Skirmish vs campaign MP branch
FUN_00432b05 0x00432b05 MP lobby entry
FUN_004b7250 0x004b7250 MP session start