Battle & siege scenes#
Scenes encountered during siege preparations, field battles, and post-battle
result screens. Battle HUD scenes (0x28, 0x2c) host the real-time combat
viewport.
0x11 — Post-siege result#
Summary. The outcome screen shown after a siege assault completes. Displays attacker and defender losses, whether the castle was taken, and resource changes. Allows the player to acknowledge before returning to the campaign map.
Entry. lotr2_game_ui_enter_post_siege_screen (0x4210d0) called via
exit dispatcher; also entered from lotr2_game_ui_on_siege_battle_end
(0x43f0cf) which sets mode 0x11 after siege resolution.
Exit. OK confirm; lotr2_game_ui_on_post_battle_return (0x43f517)
handles post-result restore; siege assault sets mode via
lotr2_game_battle_resolve_siege_outcome.
| Symbol | Address | Role |
|---|---|---|
lotr2_game_ui_enter_post_siege_screen |
0x4210d0 | Post-siege result screen enter/draw |
lotr2_game_ui_on_siege_battle_end |
0x43f0cf | Siege end → campaign; sets mode 0x11 |
lotr2_game_battle_resolve_siege_outcome |
0x4c3cde | Post-siege capture, army release, end-turn |
lotr2_game_ui_on_post_battle_return |
0x43f517 | Post-battle restore; siege assault or MP 0x2d |
Evidence. src/LORDS2.EXE.c line 19402 — exit dispatcher case '\x11';
architecture ../architecture/game/MODULE.md
(Castle interior / gateway UI pass 37; castle/build/recruit pass 36).
Confidence. likely — entry and teardown functions named; result-panel layout not fully traced.
0x12 — Siege field-battle outcome#
Summary. The outcome panel shown after a field battle that occurred as part of a siege assault. Displays attacker and defender unit comparisons across 7 resource types, with layout modes 0–2.
Entry. lotr2_game_battle_start_siege_assault or outcome branches in
lotr2_game_ui_on_post_battle_return set mode 0x12. Also set at lines
20119 and 22777.
| Symbol | Address | Role |
|---|---|---|
lotr2_game_ui_draw_siege_field_battle_outcome_panel |
0x428715 | Siege field-battle outcome panel draw |
lotr2_game_ui_draw_battle_player_compare_rows |
0x427fea | Dual-player resource compare (7 types; layout modes 0–2) |
Evidence. src/LORDS2.EXE.c line 19366; lines 20119, 22777; architecture
../architecture/game/MODULE.md
(post-siege outcome / battle HUD pass 45).
Confidence. likely — panel symbol named and compare-row layout documented.
0x13 — Siege defender routed#
Summary. Outcome screen specifically for the case where the castle
defender was routed (fled rather than holding). Calls
lotr2_game_battle_on_defender_routed to apply game-state consequences before
displaying the result.
Entry. Set at lines 14435, 20110, 22771, 45610, 54338, 54852; outcome
branches in lotr2_game_battle_start_siege_assault.
| Symbol | Address | Role |
|---|---|---|
lotr2_game_ui_draw_siege_defender_routed_panel |
0x4289ec | Defender-routed outcome panel draw |
lotr2_game_battle_on_defender_routed |
(pass 45) | Apply defender-routed game-state consequences |
Evidence. src/LORDS2.EXE.c line 19368; multiple direct assignments;
architecture ../architecture/game/MODULE.md
(post-siege outcome / battle HUD pass 45).
Confidence. likely — panel symbol named; routed-consequence details not fully traced.
0x1b — Siege battle prep#
Summary. The preparation backdrop shown before entering a siege battle. Loads siege-specific assets and presents the attacker's and defender's troop dispositions for review before the assault begins.
Entry. lotr2_game_ui_enter_siege_battle_prep_screen (0x4215a8) via
exit dispatcher; mode set at line 38015 by the siege-start trigger.
Exit. Player confirms assault; transitions to siege assault prep (0x1d)
or directly to battle HUD.
| Symbol | Address | Role |
|---|---|---|
lotr2_game_ui_enter_siege_battle_prep_screen |
0x4215a8 | Siege battle prep backdrop entry |
Evidence. src/LORDS2.EXE.c line 19404; line 38015; architecture
../architecture/game/MODULE.md
(Castle interior / gateway UI pass 37).
Confidence. likely — entry function named; prep-panel layout not yet traced.
0x1d — Siege / castle build start#
Summary. A dual-purpose mode. In a siege context (sgeplans.pl8), it
shows the siege assault plan panel where the player positions troops for the
assault. In the castle-build context, it is the entry point for starting a
new castle build action (lotr2_game_build_start_castle_action).
Entry. Siege path: mode set at line 44928 during army/castle interaction
or from lotr2_game_start_siege_assault_battle. Build path:
lotr2_game_build_start_castle_action (0x4c0842) sets mode 0x1d.
| Symbol | Address | Role |
|---|---|---|
lotr2_game_ui_draw_siege_assault_prep_panel |
0x427a17 | Siege assault prep (sgeplans.pl8) |
lotr2_game_build_start_castle_action |
0x4c0842 | Enter castle build screen (sets mode 0x1d) |
lotr2_game_start_siege_assault_battle |
0x43f9f7 | Start siege assault from army pair |
Evidence. src/LORDS2.EXE.c lines 19362–19363; line 44928; architecture
../architecture/game/MODULE.md
(Wizard step renderers pass 39; castle/build pass 36).
Interop note. The same mode id covers two unrelated entry paths; the active sub-purpose is determined by the calling context. A reimplementation should replicate both entry paths.
Confidence. likely — both entry functions named; panel-layout detail incomplete.
0x28 — Battle HUD (primary)#
Summary. The real-time tactical battle viewport. Shows the battle field,
unit groups, order bar, food/gold counters on the HUD strip, and roster icons.
Mode 0x28 is the standard battle HUD; 0x2c is used during replay or
an alternate battle-entry path (both route to the same init function).
Entry. lotr2_combat_init_battle_hud_frame (0x428de3) is called for
both 0x28 and 0x2c; mode set at line 32802 for 0x2c and from combat
start for 0x28.
Exit. Battle end returns to post-battle screens (0x11/0x12/0x13)
or back to campaign map via lotr2_game_ui_on_post_battle_return.
| Symbol | Address | Role |
|---|---|---|
lotr2_combat_init_battle_hud_frame |
0x428de3 | HUD frame init; status bar, viewport, palette |
lotr2_combat_redraw_hud_resource_counters |
0x428f1c | Food/gold counters on HUD strip |
lotr2_combat_tick_hud_army_roster |
0x429113 | Refresh roster icons when headcount changes |
lotr2_combat_blit_hud_roster_icons |
0x429292 | Blit per-type figure icons on HUD roster |
lotr2_combat_draw_hud_roster_headcounts |
0x4293af | Head-count labels beside roster icons |
lotr2_combat_draw_paused_overlay |
0x429527 | Paused-game overlay during battle |
lotr2_game_ui_on_battle_scroll_drag |
0x443859 | Battle map scroll drag; MP opcode 0x41 |
lotr2_game_ui_on_battle_figure_click |
0x443b7c | Battle figure group pick; MP 0x42/0x44 |
Evidence. src/LORDS2.EXE.c lines 19371–19376 — exit dispatcher cases
'(' (0x28) and ',' (0x2c); architecture
../architecture/game/MODULE.md
(post-siege outcome / battle HUD pass 45; Campaign UI / sync pass 35).
Confidence. confirmed — HUD frame init symbol and roster functions thoroughly documented in pass 45.
0x2c — Battle HUD (replay / alternate)#
See 0x28 — Battle HUD (primary) above. Mode 0x2c is assigned at line
32802 and routes to the same lotr2_combat_init_battle_hud_frame handler.
Likely used for the battle replay path or a second battle-entry variant.
Confidence. likely — mode appears alongside 0x28 in dispatcher; replay
distinction not yet confirmed.
0x30 — Battle narrative panel#
Summary. A text panel displaying a narrative event message during battle (e.g. a unit type routing, a heroic charge, or a siege event). Appears as an overlay over the battle HUD and is dismissed before the player resumes giving orders.
Entry. Set at lines 56338, 56349, 56354, 56360, 56370, 56378 inside the battle event dispatch chain when a narrative event fires.
| Symbol | Address | Role |
|---|---|---|
lotr2_game_ui_draw_battle_narrative_panel |
0x428c2d | Battle event narrative text panel draw |
Evidence. src/LORDS2.EXE.c line 19378; multiple assignments in battle
event chain; architecture ../architecture/game/MODULE.md
(post-siege outcome / battle HUD pass 45).
Confidence. likely — panel symbol named; narrative trigger conditions not fully mapped.
Evidence sources#
../architecture/game/MODULE.md— passes 35, 37, 39, 45../architecture/combat/MODULE.md— combat battle viewportsrc/LORDS2.EXE.clines 19322–19442 — exit/init dispatcher