Skip to content

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#