Skip to content

Event Loc 48 Woodhaven Dungeon Level 2

Vairn edited this page Jun 29, 2026 · 1 revision

Event Loc 48 Woodhaven Dungeon Level 2

Navigation: Home - Wiki - Event Loc 48 Woodhaven Dungeon Level 2

  • event.dat offset 0x00ED10, length 1299 bytes
  • Map: map screen 48; Woodhaven Dungeon Level 2
  • Record kind: standard
  • Triggers: 99; script segments: 17; strings: 24

Tile triggers

Tile (y,x) pos Event Condition
(0,0) 0x00 7 ANY_DIR
(0,1) 0x01 7 ANY_DIR
(0,2) 0x02 7 ANY_DIR
(0,3) 0x03 7 ANY_DIR
(0,4) 0x04 7 ANY_DIR
(0,7) 0x07 7 ANY_DIR
(0,8) 0x08 7 ANY_DIR
(0,9) 0x09 7 ANY_DIR
(0,10) 0x0A 7 ANY_DIR
(0,11) 0x0B 7 ANY_DIR
(0,13) 0x0D 7 ANY_DIR
(0,14) 0x0E 7 ANY_DIR
(0,15) 0x0F 7 ANY_DIR
(1,0) 0x10 7 ANY_DIR
(1,8) 0x18 7 ANY_DIR
(1,14) 0x1E 7 ANY_DIR
(1,15) 0x1F 7 ANY_DIR
(2,3) 0x23 7 ANY_DIR
(2,4) 0x24 7 ANY_DIR
(2,10) 0x2A 7 ANY_DIR
(2,12) 0x2C 5 ANY_DIR
(2,15) 0x2F 7 ANY_DIR
(3,0) 0x30 7 ANY_DIR
(3,3) 0x33 7 ANY_DIR
(3,4) 0x34 7 ANY_DIR
(3,5) 0x35 7 ANY_DIR
(3,8) 0x38 7 ANY_DIR
(3,9) 0x39 7 ANY_DIR
(3,10) 0x3A 7 ANY_DIR
(3,13) 0x3D 7 ANY_DIR
(4,0) 0x40 7 ANY_DIR
(4,2) 0x42 7 ANY_DIR
(4,4) 0x44 8 0x60
(4,5) 0x45 7 ANY_DIR
(4,6) 0x46 10 DIR_S?
(4,7) 0x47 11 DIR_S?
(4,8) 0x48 2 ANY_DIR
(4,9) 0x49 7 ANY_DIR
(4,10) 0x4A 4 ANY_DIR
(4,11) 0x4B 12 DIR_S?
(4,12) 0x4C 7 ANY_DIR
(4,13) 0x4D 7 ANY_DIR
(4,15) 0x4F 7 ANY_DIR
(5,2) 0x52 7 ANY_DIR
(5,5) 0x55 7 ANY_DIR
(5,9) 0x59 7 ANY_DIR
(5,12) 0x5C 7 ANY_DIR
(5,15) 0x5F 7 ANY_DIR
(6,0) 0x60 7 ANY_DIR
(6,2) 0x62 7 ANY_DIR
(6,4) 0x64 3 ANY_DIR
(6,5) 0x65 7 ANY_DIR
(6,6) 0x66 7 ANY_DIR
(6,8) 0x68 6 0x60
(6,10) 0x6A 11 DIR_S?
(6,11) 0x6B 7 ANY_DIR
(6,12) 0x6C 7 ANY_DIR
(6,13) 0x6D 7 ANY_DIR
(6,15) 0x6F 7 ANY_DIR
(7,0) 0x70 7 ANY_DIR
(7,5) 0x75 7 ANY_DIR
(7,11) 0x7B 7 ANY_DIR
(8,0) 0x80 7 ANY_DIR
(8,3) 0x83 7 ANY_DIR
(8,4) 0x84 10 DIR_S?
(8,7) 0x87 9 0xA0
(8,9) 0x89 7 ANY_DIR
(9,0) 0x90 7 ANY_DIR
(9,3) 0x93 7 ANY_DIR
(9,9) 0x99 7 ANY_DIR
(9,12) 0x9C 7 ANY_DIR
(9,15) 0x9F 7 ANY_DIR
(10,0) 0xA0 7 ANY_DIR
(10,5) 0xA5 7 ANY_DIR
(10,6) 0xA6 13 DIR_S?
(10,7) 0xA7 14 DIR_S?
(10,8) 0xA8 15 DIR_S?
(10,15) 0xAF 7 ANY_DIR
(11,2) 0xB2 7 ANY_DIR
(11,8) 0xB8 7 ANY_DIR
(11,13) 0xBD 7 ANY_DIR
(12,2) 0xC2 7 ANY_DIR
(12,12) 0xCC 7 ANY_DIR
(12,13) 0xCD 7 ANY_DIR
(13,0) 0xD0 7 ANY_DIR
(13,12) 0xDC 7 ANY_DIR
(13,15) 0xDF 7 ANY_DIR
(14,0) 0xE0 7 ANY_DIR
(14,7) 0xE7 12 DIR_S?
(14,15) 0xEF 7 ANY_DIR
(15,0) 0xF0 7 ANY_DIR
(15,1) 0xF1 7 ANY_DIR
(15,2) 0xF2 7 ANY_DIR
(15,5) 0xF5 7 ANY_DIR
(15,6) 0xF6 7 ANY_DIR
(15,7) 0xF7 1 0x90
(15,13) 0xFD 7 ANY_DIR
(15,14) 0xFE 7 ANY_DIR
(15,15) 0xFF 7 ANY_DIR

Events

Event 01 — triggers: (15,7)/0x90

01 01 09 11 01 0c 2f dd 0f
00: show_text_basic(str[1] "Stairs lead up. Climb (y/n)?")
01: cond = prompt_yes_no()
02: if not cond: skip_tokens(1)
    # skip -> end_script()
03: map_transition(0x2F, 0xDD)
04: end_script()

Event 02 — triggers: (4,8)/ANY_DIR

0b 16 00 03 02 0a 11 01 0c 32 77 0f
00: service_sign(idx=0x16 -> sign 56 [56.anm], pos=0x00)
01: show_text(str[2] ""For a magical time and bargains / galore, take this portal to Pinehurst")
02: cond = prompt_yes_no(mode=1)
03: if not cond: skip_tokens(1)
    # skip -> end_script()
04: map_transition(0x32, 0x77)
05: end_script()

Event 03 — triggers: (6,4)/ANY_DIR

2d 25 00 11 04 01 03 07 0d 09 0c 30 f7 02 04 19 01 ec 00 00 10 01 01 10 07 14
00: cond = check_member_attr(fields=0x25, value=0x00)
01: if not cond: skip_tokens(4)
    # skip -> show_text_block(str[4] "You have found an Amethyst Box.")
02: show_text_basic(str[3] "You should have paid heed to the sign!")
03: wait_for_space()
04: engine_call(0x09)
05: map_transition(0x30, 0xF7)
06: show_text_block(str[4] "You have found an Amethyst Box.")
07: add_party_entity(0x01, f3a=0xEC, f40=0x00, f46=0x00)
08: if cond: skip_tokens(1)
    # skip -> wait_for_space()
09: show_text_basic(str[16] "*** Backpacks Full ***")
10: wait_for_space()
11: clear_current_tile_event_flag()

Event 04 — triggers: (4,10)/ANY_DIR

2d 23 00 11 04 01 03 07 0d 09 0c 30 f7 02 06 19 01 f8 00 00 10 01 01 10 07 14
00: cond = check_member_attr(fields=0x23, value=0x00)
01: if not cond: skip_tokens(4)
    # skip -> show_text_block(str[6] "You have found a Pearl Choker!")
02: show_text_basic(str[3] "You should have paid heed to the sign!")
03: wait_for_space()
04: engine_call(0x09)
05: map_transition(0x30, 0xF7)
06: show_text_block(str[6] "You have found a Pearl Choker!")
07: add_party_entity(0x01, f3a=0xF8, f40=0x00, f46=0x00)
08: if cond: skip_tokens(1)
    # skip -> wait_for_space()
09: show_text_basic(str[16] "*** Backpacks Full ***")
10: wait_for_space()
11: clear_current_tile_event_flag()

Event 05 — triggers: (2,12)/ANY_DIR

2d a1 00 11 04 01 14 07 0d 09 0c 30 f7 17 3e 00 10 06 02 07 07 1c 0c 1f 80 3c 02 00 00 00 1a 3e 01 14 02 16 29
00: cond = check_member_attr(fields=0xA1, value=0x00)
01: if not cond: skip_tokens(4)
    # skip -> cond = load_var8(group=0x3E, index=0x00)
02: show_text_basic(str[20] "The sign said NO ELVES!")
03: wait_for_space()
04: engine_call(0x09)
05: map_transition(0x30, 0xF7)
06: cond = load_var8(group=0x3E, index=0x00)
07: if cond: skip_tokens(6)
    # skip -> show_text_block(str[22] "Sorry, benefits are given only once / per moon phase.")
08: show_text_block(str[7] "A beam of light zaps you, creating a / pleasant tingling sensation.")
09: wait_for_space()
10: op_1c_engine_query_to_cond(0x0C)
11: party_effect(sel=0x80, 3C 02 00 00 00)
12: store_var8(group=0x3E, value=0x01)
13: clear_current_tile_event_flag()
14: show_text_block(str[22] "Sorry, benefits are given only once / per moon phase.")
15: set_abort_and_exit()

Event 06 — triggers: (6,8)/0x60

02 08 09 11 05 02 09 26 20 09 15 01 05 00 00 11 01 1f 09 12 01 03 00 00 0f
00: show_text_block(str[8] "A plaque on a platform reads "If you / want to swap your luck, then step")
01: cond = prompt_yes_no()
02: if not cond: skip_tokens(5)
    # skip -> end_script()
03: show_text_block(str[9] "Who will try (1-8)?")
04: selected = select_party_member()
05: party_effect_b(sel=0x09, 15 01 05 00 00)
06: if not cond: skip_tokens(1)
    # skip -> end_script()
07: party_effect(sel=0x09, 12 01 03 00 00)
08: end_script()

Event 07 — triggers: (0,0)/ANY_DIR, (0,1)/ANY_DIR, (0,2)/ANY_DIR, (0,3)/ANY_DIR, (0,4)/ANY_DIR, (0,7)/ANY_DIR, (0,8)/ANY_DIR, (0,9)/ANY_DIR, (0,10)/ANY_DIR, (0,11)/ANY_DIR, (0,13)/ANY_DIR, (0,14)/ANY_DIR, (0,15)/ANY_DIR, (1,0)/ANY_DIR, (1,8)/ANY_DIR, (1,14)/ANY_DIR, (1,15)/ANY_DIR, (2,3)/ANY_DIR, (2,4)/ANY_DIR, (2,10)/ANY_DIR, (2,15)/ANY_DIR, (3,0)/ANY_DIR, (3,3)/ANY_DIR, (3,4)/ANY_DIR, (3,5)/ANY_DIR, (3,8)/ANY_DIR, (3,9)/ANY_DIR, (3,10)/ANY_DIR, (3,13)/ANY_DIR, (4,0)/ANY_DIR, (4,2)/ANY_DIR, (4,5)/ANY_DIR, (4,9)/ANY_DIR, (4,12)/ANY_DIR, (4,13)/ANY_DIR, (4,15)/ANY_DIR, (5,2)/ANY_DIR, (5,5)/ANY_DIR, (5,9)/ANY_DIR, (5,12)/ANY_DIR, (5,15)/ANY_DIR, (6,0)/ANY_DIR, (6,2)/ANY_DIR, (6,5)/ANY_DIR, (6,6)/ANY_DIR, (6,11)/ANY_DIR, (6,12)/ANY_DIR, (6,13)/ANY_DIR, (6,15)/ANY_DIR, (7,0)/ANY_DIR, (7,5)/ANY_DIR, (7,11)/ANY_DIR, (8,0)/ANY_DIR, (8,3)/ANY_DIR, (8,9)/ANY_DIR, (9,0)/ANY_DIR, (9,3)/ANY_DIR, (9,9)/ANY_DIR, (9,12)/ANY_DIR, (9,15)/ANY_DIR, (10,0)/ANY_DIR, (10,5)/ANY_DIR, (10,15)/ANY_DIR, (11,2)/ANY_DIR, (11,8)/ANY_DIR, (11,13)/ANY_DIR, (12,2)/ANY_DIR, (12,12)/ANY_DIR, (12,13)/ANY_DIR, (13,0)/ANY_DIR, (13,12)/ANY_DIR, (13,15)/ANY_DIR, (14,0)/ANY_DIR, (14,15)/ANY_DIR, (15,0)/ANY_DIR, (15,1)/ANY_DIR, (15,2)/ANY_DIR, (15,5)/ANY_DIR, (15,6)/ANY_DIR, (15,13)/ANY_DIR, (15,14)/ANY_DIR, (15,15)/ANY_DIR

01 0a 1d 0a 0d 09 0c b0 00
00: show_text_basic(str[10] "P I N G !!!!")
01: op_1d_engine_call_rec7(0x0A)
02: engine_call(0x09)
03: map_transition(0xB0, 0x00)

Event 08 — triggers: (4,4)/0x60

02 0b 09 11 01 0e cd 0f
00: show_text_block(str[11] "A message is etched on the stone / head of a dragon "It could be worth /")
01: cond = prompt_yes_no()
02: if not cond: skip_tokens(1)
    # skip -> end_script()
03: exec_selector(0xCD)  # quest_handler_205
04: end_script()

Event 09 — triggers: (8,7)/0xA0

02 0c 09 11 01 18 00 25 00 01 0f
00: show_text_block(str[12] "A calm pool. Take a dip (y/n)?")
01: cond = prompt_yes_no()
02: if not cond: skip_tokens(1)
    # skip -> end_script()
03: apply_party_masked(count=0x00, set=0x25, and=0x00, or=0x01)
04: end_script()

Event 10 — triggers: (4,6)/DIR_S?, (8,4)/DIR_S?

04 0d
00: show_text_above_door(str[13] "No Robbers!")

Event 11 — triggers: (4,7)/DIR_S?, (6,10)/DIR_S?

04 0e
00: show_text_above_door(str[14] "No Clerics!")

Event 12 — triggers: (4,11)/DIR_S?, (14,7)/DIR_S?

04 0f
00: show_text_above_door(str[15] "No Elves!")

Event 13 — triggers: (10,6)/DIR_S?

04 15
00: show_text_above_door(str[21] "Good")

Event 14 — triggers: (10,7)/DIR_S?

04 11
00: show_text_above_door(str[17] "Neutral")

Event 15 — triggers: (10,8)/DIR_S?

04 12
00: show_text_above_door(str[18] "Evil")

String table

  • [00]
  • [01] Stairs lead up. Climb (y/n)?
  • [02] "For a magical time and bargains / galore, take this portal to Pinehurst / Dungeon, level two. Remember to bring / plenty of gold and tell 'em Marco sent / you." Enter the portal (y/n)?
  • [03] You should have paid heed to the sign!
  • [04] You have found an Amethyst Box.
  • [05] a
  • [06] You have found a Pearl Choker!
  • [07] A beam of light zaps you, creating a / pleasant tingling sensation.
  • [08] A plaque on a platform reads "If you / want to swap your luck, then step / right up." Do you (y/n)?
  • [09] Who will try (1-8)?
  • [10] P I N G !!!!
  • [11] A message is etched on the stone / head of a dragon "It could be worth / your while to feed me gems." / Will you (y/n)?
  • [12] A calm pool. Take a dip (y/n)?
  • [13] No Robbers!
  • [14] No Clerics!
  • [15] No Elves!
  • [16] *** Backpacks Full ***
  • [17] Neutral
  • [18] Evil
  • [19] N
  • [20] The sign said NO ELVES!
  • [21] Good
  • [22] Sorry, benefits are given only once / per moon phase.
  • [23]

Generated by tools/build_event_location_docs.py from event.dat. Decoder: tools/decode_event.py.

🏠 Home


Getting started

Runtime & engine

Graphics

UI

Data formats (.dat)

Combat

Audio

Game systems

Might and Magic I (DOS)

Gallery

Tools

Clone this wiki locally