shithub: pokered

Download patch

ref: c34156c5fb333864c1ae85036ea587c9f615a65a
parent: a6f04b434980f2176cb275a7c3ba50d5cbcd6ace
parent: dcc7f3bc9f41f2d5e0f7448b4688c1058da0040b
author: Daniel Harding <corrnondacqb@yahoo.com>
date: Wed Jul 22 06:24:00 EDT 2015

Merge pull request #107 from YamaArashi/master

enumerate events

--- a/constants.asm
+++ b/constants.asm
@@ -30,3 +30,5 @@
 INCLUDE "constants/music_constants.asm"
 INCLUDE "constants/tilesets.asm"
 INCLUDE "constants/starter_mons.asm"
+INCLUDE "constants/event_constants.asm"
+INCLUDE "constants/event_macros.asm"
--- /dev/null
+++ b/constants/event_constants.asm
@@ -1,0 +1,2562 @@
+const_value = 0
+
+	const EVENT_FOLLOWED_OAK_INTO_LAB                ; 000, (D747, bit 0)
+	const EVENT_001                                  ; 001, (D747, bit 1)
+	const EVENT_002                                  ; 002, (D747, bit 2)
+	const EVENT_HALL_OF_FAME_DEX_RATING              ; 003, (D747, bit 3)
+	const EVENT_004                                  ; 004, (D747, bit 4)
+	const EVENT_005                                  ; 005, (D747, bit 5)
+	const EVENT_PALLET_AFTER_GETTING_POKEBALLS       ; 006, (D747, bit 6)
+	const EVENT_007                                  ; 007, (D747, bit 7)
+	const EVENT_008                                  ; 008, (D748, bit 0)
+	const EVENT_009                                  ; 009, (D748, bit 1)
+	const EVENT_00A                                  ; 00A, (D748, bit 2)
+	const EVENT_00B                                  ; 00B, (D748, bit 3)
+	const EVENT_00C                                  ; 00C, (D748, bit 4)
+	const EVENT_00D                                  ; 00D, (D748, bit 5)
+	const EVENT_00E                                  ; 00E, (D748, bit 6)
+	const EVENT_00F                                  ; 00F, (D748, bit 7)
+	const EVENT_010                                  ; 010, (D749, bit 0)
+	const EVENT_011                                  ; 011, (D749, bit 1)
+	const EVENT_012                                  ; 012, (D749, bit 2)
+	const EVENT_013                                  ; 013, (D749, bit 3)
+	const EVENT_014                                  ; 014, (D749, bit 4)
+	const EVENT_015                                  ; 015, (D749, bit 5)
+	const EVENT_016                                  ; 016, (D749, bit 6)
+	const EVENT_017                                  ; 017, (D749, bit 7)
+	const EVENT_GOT_TOWN_MAP                         ; 018, (D74A, bit 0)
+	const EVENT_ENTERED_BLUES_HOUSE                  ; 019, (D74A, bit 1)
+	const EVENT_DAISY_WALKING                        ; 01A, (D74A, bit 2)
+	const EVENT_01B                                  ; 01B, (D74A, bit 3)
+	const EVENT_01C                                  ; 01C, (D74A, bit 4)
+	const EVENT_01D                                  ; 01D, (D74A, bit 5)
+	const EVENT_01E                                  ; 01E, (D74A, bit 6)
+	const EVENT_01F                                  ; 01F, (D74A, bit 7)
+	const EVENT_FOLLOWED_OAK_INTO_LAB_2              ; 020, (D74B, bit 0)
+	const EVENT_OAK_ASKED_TO_CHOOSE_MON              ; 021, (D74B, bit 1)
+	const EVENT_GOT_STARTER                          ; 022, (D74B, bit 2)
+	const EVENT_BATTLED_RIVAL_IN_OAKS_LAB            ; 023, (D74B, bit 3)
+	const EVENT_GOT_POKEBALLS_FROM_OAK               ; 024, (D74B, bit 4)
+	const EVENT_GOT_POKEDEX                          ; 025, (D74B, bit 5)
+	const EVENT_PALLET_AFTER_GETTING_POKEBALLS_2     ; 026, (D74B, bit 6)
+	const EVENT_OAK_APPEARED_IN_PALLET               ; 027, (D74B, bit 7)
+	const EVENT_VIRIDIAN_GYM_OPEN                    ; 028, (D74C, bit 0)
+	const EVENT_GOT_TM42                             ; 029, (D74C, bit 1)
+	const EVENT_02A                                  ; 02A, (D74C, bit 2)
+	const EVENT_02B                                  ; 02B, (D74C, bit 3)
+	const EVENT_02C                                  ; 02C, (D74C, bit 4)
+	const EVENT_02D                                  ; 02D, (D74C, bit 5)
+	const EVENT_02E                                  ; 02E, (D74C, bit 6)
+	const EVENT_02F                                  ; 02F, (D74C, bit 7)
+	const EVENT_030                                  ; 030, (D74D, bit 0)
+	const EVENT_031                                  ; 031, (D74D, bit 1)
+	const EVENT_032                                  ; 032, (D74D, bit 2)
+	const EVENT_033                                  ; 033, (D74D, bit 3)
+	const EVENT_034                                  ; 034, (D74D, bit 4)
+	const EVENT_035                                  ; 035, (D74D, bit 5)
+	const EVENT_036                                  ; 036, (D74D, bit 6)
+	const EVENT_037                                  ; 037, (D74D, bit 7)
+	const EVENT_OAK_GOT_PARCEL                       ; 038, (D74E, bit 0)
+	const EVENT_GOT_OAKS_PARCEL                      ; 039, (D74E, bit 1)
+	const EVENT_03A                                  ; 03A, (D74E, bit 2)
+	const EVENT_03B                                  ; 03B, (D74E, bit 3)
+	const EVENT_03C                                  ; 03C, (D74E, bit 4)
+	const EVENT_03D                                  ; 03D, (D74E, bit 5)
+	const EVENT_03E                                  ; 03E, (D74E, bit 6)
+	const EVENT_03F                                  ; 03F, (D74E, bit 7)
+	const EVENT_040                                  ; 040, (D74F, bit 0)
+	const EVENT_041                                  ; 041, (D74F, bit 1)
+	const EVENT_042                                  ; 042, (D74F, bit 2)
+	const EVENT_043                                  ; 043, (D74F, bit 3)
+	const EVENT_044                                  ; 044, (D74F, bit 4)
+	const EVENT_045                                  ; 045, (D74F, bit 5)
+	const EVENT_046                                  ; 046, (D74F, bit 6)
+	const EVENT_047                                  ; 047, (D74F, bit 7)
+	const EVENT_048                                  ; 048, (D750, bit 0)
+	const EVENT_049                                  ; 049, (D750, bit 1)
+	const EVENT_04A                                  ; 04A, (D750, bit 2)
+	const EVENT_04B                                  ; 04B, (D750, bit 3)
+	const EVENT_04C                                  ; 04C, (D750, bit 4)
+	const EVENT_04D                                  ; 04D, (D750, bit 5)
+	const EVENT_04E                                  ; 04E, (D750, bit 6)
+	const EVENT_04F                                  ; 04F, (D750, bit 7)
+	const EVENT_GOT_TM27                             ; 050, (D751, bit 0)
+	const EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI           ; 051, (D751, bit 1)
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0          ; 052, (D751, bit 2)
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_1          ; 053, (D751, bit 3)
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_2          ; 054, (D751, bit 4)
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_3          ; 055, (D751, bit 5)
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_4          ; 056, (D751, bit 6)
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_5          ; 057, (D751, bit 7)
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_6          ; 058, (D752, bit 0)
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7          ; 059, (D752, bit 1)
+	const EVENT_05A                                  ; 05A, (D752, bit 2)
+	const EVENT_05B                                  ; 05B, (D752, bit 3)
+	const EVENT_05C                                  ; 05C, (D752, bit 4)
+	const EVENT_05D                                  ; 05D, (D752, bit 5)
+	const EVENT_05E                                  ; 05E, (D752, bit 6)
+	const EVENT_05F                                  ; 05F, (D752, bit 7)
+	const EVENT_060                                  ; 060, (D753, bit 0)
+	const EVENT_061                                  ; 061, (D753, bit 1)
+	const EVENT_062                                  ; 062, (D753, bit 2)
+	const EVENT_063                                  ; 063, (D753, bit 3)
+	const EVENT_064                                  ; 064, (D753, bit 4)
+	const EVENT_065                                  ; 065, (D753, bit 5)
+	const EVENT_066                                  ; 066, (D753, bit 6)
+	const EVENT_067                                  ; 067, (D753, bit 7)
+	const EVENT_BOUGHT_MUSEUM_TICKET                 ; 068, (D754, bit 0)
+	const EVENT_GOT_OLD_AMBER                        ; 069, (D754, bit 1)
+	const EVENT_06A                                  ; 06A, (D754, bit 2)
+	const EVENT_06B                                  ; 06B, (D754, bit 3)
+	const EVENT_06C                                  ; 06C, (D754, bit 4)
+	const EVENT_06D                                  ; 06D, (D754, bit 5)
+	const EVENT_06E                                  ; 06E, (D754, bit 6)
+	const EVENT_06F                                  ; 06F, (D754, bit 7)
+	const EVENT_070                                  ; 070, (D755, bit 0)
+	const EVENT_071                                  ; 071, (D755, bit 1)
+	const EVENT_BEAT_PEWTER_GYM_TRAINER_0            ; 072, (D755, bit 2)
+	const EVENT_073                                  ; 073, (D755, bit 3)
+	const EVENT_074                                  ; 074, (D755, bit 4)
+	const EVENT_075                                  ; 075, (D755, bit 5)
+	const EVENT_GOT_TM34                             ; 076, (D755, bit 6)
+	const EVENT_BEAT_BROCK                           ; 077, (D755, bit 7)
+	const EVENT_078                                  ; 078, (D756, bit 0)
+	const EVENT_079                                  ; 079, (D756, bit 1)
+	const EVENT_07A                                  ; 07A, (D756, bit 2)
+	const EVENT_07B                                  ; 07B, (D756, bit 3)
+	const EVENT_07C                                  ; 07C, (D756, bit 4)
+	const EVENT_07D                                  ; 07D, (D756, bit 5)
+	const EVENT_07E                                  ; 07E, (D756, bit 6)
+	const EVENT_07F                                  ; 07F, (D756, bit 7)
+	const EVENT_080                                  ; 080, (D757, bit 0)
+	const EVENT_081                                  ; 081, (D757, bit 1)
+	const EVENT_082                                  ; 082, (D757, bit 2)
+	const EVENT_083                                  ; 083, (D757, bit 3)
+	const EVENT_084                                  ; 084, (D757, bit 4)
+	const EVENT_085                                  ; 085, (D757, bit 5)
+	const EVENT_086                                  ; 086, (D757, bit 6)
+	const EVENT_087                                  ; 087, (D757, bit 7)
+	const EVENT_088                                  ; 088, (D758, bit 0)
+	const EVENT_089                                  ; 089, (D758, bit 1)
+	const EVENT_08A                                  ; 08A, (D758, bit 2)
+	const EVENT_08B                                  ; 08B, (D758, bit 3)
+	const EVENT_08C                                  ; 08C, (D758, bit 4)
+	const EVENT_08D                                  ; 08D, (D758, bit 5)
+	const EVENT_08E                                  ; 08E, (D758, bit 6)
+	const EVENT_08F                                  ; 08F, (D758, bit 7)
+	const EVENT_090                                  ; 090, (D759, bit 0)
+	const EVENT_091                                  ; 091, (D759, bit 1)
+	const EVENT_092                                  ; 092, (D759, bit 2)
+	const EVENT_093                                  ; 093, (D759, bit 3)
+	const EVENT_094                                  ; 094, (D759, bit 4)
+	const EVENT_095                                  ; 095, (D759, bit 5)
+	const EVENT_096                                  ; 096, (D759, bit 6)
+	const EVENT_097                                  ; 097, (D759, bit 7)
+	const EVENT_BEAT_CERULEAN_RIVAL                  ; 098, (D75A, bit 0)
+	const EVENT_099                                  ; 099, (D75A, bit 1)
+	const EVENT_09A                                  ; 09A, (D75A, bit 2)
+	const EVENT_09B                                  ; 09B, (D75A, bit 3)
+	const EVENT_09C                                  ; 09C, (D75A, bit 4)
+	const EVENT_09D                                  ; 09D, (D75A, bit 5)
+	const EVENT_09E                                  ; 09E, (D75A, bit 6)
+	const EVENT_09F                                  ; 09F, (D75A, bit 7)
+	const EVENT_0A0                                  ; 0A0, (D75B, bit 0)
+	const EVENT_0A1                                  ; 0A1, (D75B, bit 1)
+	const EVENT_0A2                                  ; 0A2, (D75B, bit 2)
+	const EVENT_0A3                                  ; 0A3, (D75B, bit 3)
+	const EVENT_0A4                                  ; 0A4, (D75B, bit 4)
+	const EVENT_0A5                                  ; 0A5, (D75B, bit 5)
+	const EVENT_0A6                                  ; 0A6, (D75B, bit 6)
+	const EVENT_BEAT_CERULEAN_ROCKET_THIEF           ; 0A7, (D75B, bit 7)
+	const EVENT_0A8                                  ; 0A8, (D75C, bit 0)
+	const EVENT_0A9                                  ; 0A9, (D75C, bit 1)
+	const EVENT_0AA                                  ; 0AA, (D75C, bit 2)
+	const EVENT_0AB                                  ; 0AB, (D75C, bit 3)
+	const EVENT_0AC                                  ; 0AC, (D75C, bit 4)
+	const EVENT_0AD                                  ; 0AD, (D75C, bit 5)
+	const EVENT_0AE                                  ; 0AE, (D75C, bit 6)
+	const EVENT_0AF                                  ; 0AF, (D75C, bit 7)
+	const EVENT_0B0                                  ; 0B0, (D75D, bit 0)
+	const EVENT_0B1                                  ; 0B1, (D75D, bit 1)
+	const EVENT_0B2                                  ; 0B2, (D75D, bit 2)
+	const EVENT_0B3                                  ; 0B3, (D75D, bit 3)
+	const EVENT_0B4                                  ; 0B4, (D75D, bit 4)
+	const EVENT_0B5                                  ; 0B5, (D75D, bit 5)
+	const EVENT_0B6                                  ; 0B6, (D75D, bit 6)
+	const EVENT_0B7                                  ; 0B7, (D75D, bit 7)
+	const EVENT_0B8                                  ; 0B8, (D75E, bit 0)
+	const EVENT_0B9                                  ; 0B9, (D75E, bit 1)
+	const EVENT_BEAT_CERULEAN_GYM_TRAINER_0          ; 0BA, (D75E, bit 2)
+	const EVENT_BEAT_CERULEAN_GYM_TRAINER_1          ; 0BB, (D75E, bit 3)
+	const EVENT_0BC                                  ; 0BC, (D75E, bit 4)
+	const EVENT_0BD                                  ; 0BD, (D75E, bit 5)
+	const EVENT_GOT_TM11                             ; 0BE, (D75E, bit 6)
+	const EVENT_BEAT_MISTY                           ; 0BF, (D75E, bit 7)
+	const EVENT_GOT_BICYCLE                          ; 0C0, (D75F, bit 0)
+	const EVENT_0C1                                  ; 0C1, (D75F, bit 1)
+	const EVENT_0C2                                  ; 0C2, (D75F, bit 2)
+	const EVENT_0C3                                  ; 0C3, (D75F, bit 3)
+	const EVENT_0C4                                  ; 0C4, (D75F, bit 4)
+	const EVENT_0C5                                  ; 0C5, (D75F, bit 5)
+	const EVENT_0C6                                  ; 0C6, (D75F, bit 6)
+	const EVENT_0C7                                  ; 0C7, (D75F, bit 7)
+	const EVENT_0C8                                  ; 0C8, (D760, bit 0)
+	const EVENT_0C9                                  ; 0C9, (D760, bit 1)
+	const EVENT_0CA                                  ; 0CA, (D760, bit 2)
+	const EVENT_0CB                                  ; 0CB, (D760, bit 3)
+	const EVENT_0CC                                  ; 0CC, (D760, bit 4)
+	const EVENT_0CD                                  ; 0CD, (D760, bit 5)
+	const EVENT_0CE                                  ; 0CE, (D760, bit 6)
+	const EVENT_0CF                                  ; 0CF, (D760, bit 7)
+	const EVENT_0D0                                  ; 0D0, (D761, bit 0)
+	const EVENT_0D1                                  ; 0D1, (D761, bit 1)
+	const EVENT_0D2                                  ; 0D2, (D761, bit 2)
+	const EVENT_0D3                                  ; 0D3, (D761, bit 3)
+	const EVENT_0D4                                  ; 0D4, (D761, bit 4)
+	const EVENT_0D5                                  ; 0D5, (D761, bit 5)
+	const EVENT_0D6                                  ; 0D6, (D761, bit 6)
+	const EVENT_0D7                                  ; 0D7, (D761, bit 7)
+	const EVENT_0D8                                  ; 0D8, (D762, bit 0)
+	const EVENT_0D9                                  ; 0D9, (D762, bit 1)
+	const EVENT_0DA                                  ; 0DA, (D762, bit 2)
+	const EVENT_0DB                                  ; 0DB, (D762, bit 3)
+	const EVENT_0DC                                  ; 0DC, (D762, bit 4)
+	const EVENT_0DD                                  ; 0DD, (D762, bit 5)
+	const EVENT_0DE                                  ; 0DE, (D762, bit 6)
+	const EVENT_0DF                                  ; 0DF, (D762, bit 7)
+	const EVENT_0E0                                  ; 0E0, (D763, bit 0)
+	const EVENT_0E1                                  ; 0E1, (D763, bit 1)
+	const EVENT_0E2                                  ; 0E2, (D763, bit 2)
+	const EVENT_0E3                                  ; 0E3, (D763, bit 3)
+	const EVENT_0E4                                  ; 0E4, (D763, bit 4)
+	const EVENT_0E5                                  ; 0E5, (D763, bit 5)
+	const EVENT_0E6                                  ; 0E6, (D763, bit 6)
+	const EVENT_0E7                                  ; 0E7, (D763, bit 7)
+	const EVENT_0E8                                  ; 0E8, (D764, bit 0)
+	const EVENT_0E9                                  ; 0E9, (D764, bit 1)
+	const EVENT_0EA                                  ; 0EA, (D764, bit 2)
+	const EVENT_0EB                                  ; 0EB, (D764, bit 3)
+	const EVENT_0EC                                  ; 0EC, (D764, bit 4)
+	const EVENT_0ED                                  ; 0ED, (D764, bit 5)
+	const EVENT_POKEMON_TOWER_RIVAL_ON_LEFT          ; 0EE, (D764, bit 6)
+	const EVENT_BEAT_POKEMON_TOWER_RIVAL             ; 0EF, (D764, bit 7)
+	const EVENT_0F0                                  ; 0F0, (D765, bit 0)
+	const EVENT_BEAT_POKEMONTOWER_3_TRAINER_0        ; 0F1, (D765, bit 1)
+	const EVENT_BEAT_POKEMONTOWER_3_TRAINER_1        ; 0F2, (D765, bit 2)
+	const EVENT_BEAT_POKEMONTOWER_3_TRAINER_2        ; 0F3, (D765, bit 3)
+	const EVENT_0F4                                  ; 0F4, (D765, bit 4)
+	const EVENT_0F5                                  ; 0F5, (D765, bit 5)
+	const EVENT_0F6                                  ; 0F6, (D765, bit 6)
+	const EVENT_0F7                                  ; 0F7, (D765, bit 7)
+	const EVENT_0F8                                  ; 0F8, (D766, bit 0)
+	const EVENT_BEAT_POKEMONTOWER_4_TRAINER_0        ; 0F9, (D766, bit 1)
+	const EVENT_BEAT_POKEMONTOWER_4_TRAINER_1        ; 0FA, (D766, bit 2)
+	const EVENT_BEAT_POKEMONTOWER_4_TRAINER_2        ; 0FB, (D766, bit 3)
+	const EVENT_0FC                                  ; 0FC, (D766, bit 4)
+	const EVENT_0FD                                  ; 0FD, (D766, bit 5)
+	const EVENT_0FE                                  ; 0FE, (D766, bit 6)
+	const EVENT_0FF                                  ; 0FF, (D766, bit 7)
+	const EVENT_100                                  ; 100, (D767, bit 0)
+	const EVENT_101                                  ; 101, (D767, bit 1)
+	const EVENT_BEAT_POKEMONTOWER_5_TRAINER_0        ; 102, (D767, bit 2)
+	const EVENT_BEAT_POKEMONTOWER_5_TRAINER_1        ; 103, (D767, bit 3)
+	const EVENT_BEAT_POKEMONTOWER_5_TRAINER_2        ; 104, (D767, bit 4)
+	const EVENT_BEAT_POKEMONTOWER_5_TRAINER_3        ; 105, (D767, bit 5)
+	const EVENT_106                                  ; 106, (D767, bit 6)
+	const EVENT_IN_PURIFIED_ZONE                     ; 107, (D767, bit 7)
+	const EVENT_108                                  ; 108, (D768, bit 0)
+	const EVENT_BEAT_POKEMONTOWER_6_TRAINER_0        ; 109, (D768, bit 1)
+	const EVENT_BEAT_POKEMONTOWER_6_TRAINER_1        ; 10A, (D768, bit 2)
+	const EVENT_BEAT_POKEMONTOWER_6_TRAINER_2        ; 10B, (D768, bit 3)
+	const EVENT_10C                                  ; 10C, (D768, bit 4)
+	const EVENT_10D                                  ; 10D, (D768, bit 5)
+	const EVENT_10E                                  ; 10E, (D768, bit 6)
+	const EVENT_BEAT_GHOST_MAROWAK                   ; 10F, (D768, bit 7)
+	const EVENT_110                                  ; 110, (D769, bit 0)
+	const EVENT_BEAT_POKEMONTOWER_7_TRAINER_0        ; 111, (D769, bit 1)
+	const EVENT_BEAT_POKEMONTOWER_7_TRAINER_1        ; 112, (D769, bit 2)
+	const EVENT_BEAT_POKEMONTOWER_7_TRAINER_2        ; 113, (D769, bit 3)
+	const EVENT_114                                  ; 114, (D769, bit 4)
+	const EVENT_115                                  ; 115, (D769, bit 5)
+	const EVENT_116                                  ; 116, (D769, bit 6)
+	const EVENT_RESCUED_MR_FUJI_2                    ; 117, (D769, bit 7)
+	const EVENT_118                                  ; 118, (D76A, bit 0)
+	const EVENT_119                                  ; 119, (D76A, bit 1)
+	const EVENT_11A                                  ; 11A, (D76A, bit 2)
+	const EVENT_11B                                  ; 11B, (D76A, bit 3)
+	const EVENT_11C                                  ; 11C, (D76A, bit 4)
+	const EVENT_11D                                  ; 11D, (D76A, bit 5)
+	const EVENT_11E                                  ; 11E, (D76A, bit 6)
+	const EVENT_11F                                  ; 11F, (D76A, bit 7)
+	const EVENT_120                                  ; 120, (D76B, bit 0)
+	const EVENT_121                                  ; 121, (D76B, bit 1)
+	const EVENT_122                                  ; 122, (D76B, bit 2)
+	const EVENT_123                                  ; 123, (D76B, bit 3)
+	const EVENT_124                                  ; 124, (D76B, bit 4)
+	const EVENT_125                                  ; 125, (D76B, bit 5)
+	const EVENT_126                                  ; 126, (D76B, bit 6)
+	const EVENT_127                                  ; 127, (D76B, bit 7)
+	const EVENT_GOT_POKE_FLUTE                       ; 128, (D76C, bit 0)
+	const EVENT_129                                  ; 129, (D76C, bit 1)
+	const EVENT_12A                                  ; 12A, (D76C, bit 2)
+	const EVENT_12B                                  ; 12B, (D76C, bit 3)
+	const EVENT_12C                                  ; 12C, (D76C, bit 4)
+	const EVENT_12D                                  ; 12D, (D76C, bit 5)
+	const EVENT_12E                                  ; 12E, (D76C, bit 6)
+	const EVENT_12F                                  ; 12F, (D76C, bit 7)
+	const EVENT_130                                  ; 130, (D76D, bit 0)
+	const EVENT_131                                  ; 131, (D76D, bit 1)
+	const EVENT_132                                  ; 132, (D76D, bit 2)
+	const EVENT_133                                  ; 133, (D76D, bit 3)
+	const EVENT_134                                  ; 134, (D76D, bit 4)
+	const EVENT_135                                  ; 135, (D76D, bit 5)
+	const EVENT_136                                  ; 136, (D76D, bit 6)
+	const EVENT_137                                  ; 137, (D76D, bit 7)
+	const EVENT_138                                  ; 138, (D76E, bit 0)
+	const EVENT_139                                  ; 139, (D76E, bit 1)
+	const EVENT_13A                                  ; 13A, (D76E, bit 2)
+	const EVENT_13B                                  ; 13B, (D76E, bit 3)
+	const EVENT_13C                                  ; 13C, (D76E, bit 4)
+	const EVENT_13D                                  ; 13D, (D76E, bit 5)
+	const EVENT_13E                                  ; 13E, (D76E, bit 6)
+	const EVENT_13F                                  ; 13F, (D76E, bit 7)
+	const EVENT_140                                  ; 140, (D76F, bit 0)
+	const EVENT_141                                  ; 141, (D76F, bit 1)
+	const EVENT_142                                  ; 142, (D76F, bit 2)
+	const EVENT_143                                  ; 143, (D76F, bit 3)
+	const EVENT_144                                  ; 144, (D76F, bit 4)
+	const EVENT_145                                  ; 145, (D76F, bit 5)
+	const EVENT_146                                  ; 146, (D76F, bit 6)
+	const EVENT_147                                  ; 147, (D76F, bit 7)
+	const EVENT_148                                  ; 148, (D770, bit 0)
+	const EVENT_149                                  ; 149, (D770, bit 1)
+	const EVENT_14A                                  ; 14A, (D770, bit 2)
+	const EVENT_14B                                  ; 14B, (D770, bit 3)
+	const EVENT_14C                                  ; 14C, (D770, bit 4)
+	const EVENT_14D                                  ; 14D, (D770, bit 5)
+	const EVENT_14E                                  ; 14E, (D770, bit 6)
+	const EVENT_14F                                  ; 14F, (D770, bit 7)
+	const EVENT_150                                  ; 150, (D771, bit 0)
+	const EVENT_GOT_BIKE_VOUCHER                     ; 151, (D771, bit 1)
+	const EVENT_152                                  ; 152, (D771, bit 2)
+	const EVENT_153                                  ; 153, (D771, bit 3)
+	const EVENT_154                                  ; 154, (D771, bit 4)
+	const EVENT_155                                  ; 155, (D771, bit 5)
+	const EVENT_SEEL_FAN_BOAST                       ; 156, (D771, bit 6)
+	const EVENT_PIKACHU_FAN_BOAST                    ; 157, (D771, bit 7)
+	const EVENT_158                                  ; 158, (D772, bit 0)
+	const EVENT_159                                  ; 159, (D772, bit 1)
+	const EVENT_15A                                  ; 15A, (D772, bit 2)
+	const EVENT_15B                                  ; 15B, (D772, bit 3)
+	const EVENT_15C                                  ; 15C, (D772, bit 4)
+	const EVENT_15D                                  ; 15D, (D772, bit 5)
+	const EVENT_15E                                  ; 15E, (D772, bit 6)
+	const EVENT_15F                                  ; 15F, (D772, bit 7)
+	const EVENT_2ND_LOCK_OPENED                      ; 160, (D773, bit 0)
+	const EVENT_1ST_LOCK_OPENED                      ; 161, (D773, bit 1)
+	const EVENT_BEAT_VERMILION_GYM_TRAINER_0         ; 162, (D773, bit 2)
+	const EVENT_BEAT_VERMILION_GYM_TRAINER_1         ; 163, (D773, bit 3)
+	const EVENT_BEAT_VERMILION_GYM_TRAINER_2         ; 164, (D773, bit 4)
+	const EVENT_165                                  ; 165, (D773, bit 5)
+	const EVENT_GOT_TM24                             ; 166, (D773, bit 6)
+	const EVENT_BEAT_LT_SURGE                        ; 167, (D773, bit 7)
+	const EVENT_168                                  ; 168, (D774, bit 0)
+	const EVENT_169                                  ; 169, (D774, bit 1)
+	const EVENT_16A                                  ; 16A, (D774, bit 2)
+	const EVENT_16B                                  ; 16B, (D774, bit 3)
+	const EVENT_16C                                  ; 16C, (D774, bit 4)
+	const EVENT_16D                                  ; 16D, (D774, bit 5)
+	const EVENT_16E                                  ; 16E, (D774, bit 6)
+	const EVENT_16F                                  ; 16F, (D774, bit 7)
+	const EVENT_170                                  ; 170, (D775, bit 0)
+	const EVENT_171                                  ; 171, (D775, bit 1)
+	const EVENT_172                                  ; 172, (D775, bit 2)
+	const EVENT_173                                  ; 173, (D775, bit 3)
+	const EVENT_174                                  ; 174, (D775, bit 4)
+	const EVENT_175                                  ; 175, (D775, bit 5)
+	const EVENT_176                                  ; 176, (D775, bit 6)
+	const EVENT_177                                  ; 177, (D775, bit 7)
+	const EVENT_178                                  ; 178, (D776, bit 0)
+	const EVENT_179                                  ; 179, (D776, bit 1)
+	const EVENT_17A                                  ; 17A, (D776, bit 2)
+	const EVENT_17B                                  ; 17B, (D776, bit 3)
+	const EVENT_17C                                  ; 17C, (D776, bit 4)
+	const EVENT_17D                                  ; 17D, (D776, bit 5)
+	const EVENT_17E                                  ; 17E, (D776, bit 6)
+	const EVENT_17F                                  ; 17F, (D776, bit 7)
+	const EVENT_GOT_TM41                             ; 180, (D777, bit 0)
+	const EVENT_181                                  ; 181, (D777, bit 1)
+	const EVENT_182                                  ; 182, (D777, bit 2)
+	const EVENT_183                                  ; 183, (D777, bit 3)
+	const EVENT_184                                  ; 184, (D777, bit 4)
+	const EVENT_185                                  ; 185, (D777, bit 5)
+	const EVENT_186                                  ; 186, (D777, bit 6)
+	const EVENT_187                                  ; 187, (D777, bit 7)
+	const EVENT_188                                  ; 188, (D778, bit 0)
+	const EVENT_189                                  ; 189, (D778, bit 1)
+	const EVENT_18A                                  ; 18A, (D778, bit 2)
+	const EVENT_18B                                  ; 18B, (D778, bit 3)
+	const EVENT_GOT_TM13                             ; 18C, (D778, bit 4)
+	const EVENT_GOT_TM48                             ; 18D, (D778, bit 5)
+	const EVENT_GOT_TM49                             ; 18E, (D778, bit 6)
+	const EVENT_GOT_TM18                             ; 18F, (D778, bit 7)
+	const EVENT_190                                  ; 190, (D779, bit 0)
+	const EVENT_191                                  ; 191, (D779, bit 1)
+	const EVENT_192                                  ; 192, (D779, bit 2)
+	const EVENT_193                                  ; 193, (D779, bit 3)
+	const EVENT_194                                  ; 194, (D779, bit 4)
+	const EVENT_195                                  ; 195, (D779, bit 5)
+	const EVENT_196                                  ; 196, (D779, bit 6)
+	const EVENT_197                                  ; 197, (D779, bit 7)
+	const EVENT_198                                  ; 198, (D77A, bit 0)
+	const EVENT_199                                  ; 199, (D77A, bit 1)
+	const EVENT_19A                                  ; 19A, (D77A, bit 2)
+	const EVENT_19B                                  ; 19B, (D77A, bit 3)
+	const EVENT_19C                                  ; 19C, (D77A, bit 4)
+	const EVENT_19D                                  ; 19D, (D77A, bit 5)
+	const EVENT_19E                                  ; 19E, (D77A, bit 6)
+	const EVENT_19F                                  ; 19F, (D77A, bit 7)
+	const EVENT_1A0                                  ; 1A0, (D77B, bit 0)
+	const EVENT_1A1                                  ; 1A1, (D77B, bit 1)
+	const EVENT_1A2                                  ; 1A2, (D77B, bit 2)
+	const EVENT_1A3                                  ; 1A3, (D77B, bit 3)
+	const EVENT_1A4                                  ; 1A4, (D77B, bit 4)
+	const EVENT_1A5                                  ; 1A5, (D77B, bit 5)
+	const EVENT_1A6                                  ; 1A6, (D77B, bit 6)
+	const EVENT_1A7                                  ; 1A7, (D77B, bit 7)
+	const EVENT_GOT_TM21                             ; 1A8, (D77C, bit 0)
+	const EVENT_BEAT_ERIKA                           ; 1A9, (D77C, bit 1)
+	const EVENT_BEAT_CELADON_GYM_TRAINER_0           ; 1AA, (D77C, bit 2)
+	const EVENT_BEAT_CELADON_GYM_TRAINER_2           ; 1AB, (D77C, bit 3)
+	const EVENT_BEAT_CELADON_GYM_TRAINER_3           ; 1AC, (D77C, bit 4)
+	const EVENT_BEAT_CELADON_GYM_TRAINER_4           ; 1AD, (D77C, bit 5)
+	const EVENT_BEAT_CELADON_GYM_TRAINER_5           ; 1AE, (D77C, bit 6)
+	const EVENT_BEAT_CELADON_GYM_TRAINER_6           ; 1AF, (D77C, bit 7)
+	const EVENT_BEAT_CELADON_GYM_TRAINER_7           ; 1B0, (D77D, bit 0)
+	const EVENT_1B1                                  ; 1B1, (D77D, bit 1)
+	const EVENT_1B2                                  ; 1B2, (D77D, bit 2)
+	const EVENT_1B3                                  ; 1B3, (D77D, bit 3)
+	const EVENT_1B4                                  ; 1B4, (D77D, bit 4)
+	const EVENT_1B5                                  ; 1B5, (D77D, bit 5)
+	const EVENT_1B6                                  ; 1B6, (D77D, bit 6)
+	const EVENT_1B7                                  ; 1B7, (D77D, bit 7)
+	const EVENT_1B8                                  ; 1B8, (D77E, bit 0)
+	const EVENT_FOUND_ROCKET_HIDEOUT                 ; 1B9, (D77E, bit 1)
+	const EVENT_GOT_10_COINS                         ; 1BA, (D77E, bit 2)
+	const EVENT_GOT_20_COINS                         ; 1BB, (D77E, bit 3)
+	const EVENT_GOT_20_COINS_2                       ; 1BC, (D77E, bit 4)
+	const EVENT_1BD                                  ; 1BD, (D77E, bit 5)
+	const EVENT_1BE                                  ; 1BE, (D77E, bit 6)
+	const EVENT_1BF                                  ; 1BF, (D77E, bit 7)
+	const EVENT_1C0                                  ; 1C0, (D77F, bit 0)
+	const EVENT_1C1                                  ; 1C1, (D77F, bit 1)
+	const EVENT_1C2                                  ; 1C2, (D77F, bit 2)
+	const EVENT_1C3                                  ; 1C3, (D77F, bit 3)
+	const EVENT_1C4                                  ; 1C4, (D77F, bit 4)
+	const EVENT_1C5                                  ; 1C5, (D77F, bit 5)
+	const EVENT_1C6                                  ; 1C6, (D77F, bit 6)
+	const EVENT_1C7                                  ; 1C7, (D77F, bit 7)
+	const EVENT_1C8                                  ; 1C8, (D780, bit 0)
+	const EVENT_1C9                                  ; 1C9, (D780, bit 1)
+	const EVENT_1CA                                  ; 1CA, (D780, bit 2)
+	const EVENT_1CB                                  ; 1CB, (D780, bit 3)
+	const EVENT_1CC                                  ; 1CC, (D780, bit 4)
+	const EVENT_1CD                                  ; 1CD, (D780, bit 5)
+	const EVENT_1CE                                  ; 1CE, (D780, bit 6)
+	const EVENT_1CF                                  ; 1CF, (D780, bit 7)
+	const EVENT_1D0                                  ; 1D0, (D781, bit 0)
+	const EVENT_1D1                                  ; 1D1, (D781, bit 1)
+	const EVENT_1D2                                  ; 1D2, (D781, bit 2)
+	const EVENT_1D3                                  ; 1D3, (D781, bit 3)
+	const EVENT_1D4                                  ; 1D4, (D781, bit 4)
+	const EVENT_1D5                                  ; 1D5, (D781, bit 5)
+	const EVENT_1D6                                  ; 1D6, (D781, bit 6)
+	const EVENT_1D7                                  ; 1D7, (D781, bit 7)
+	const EVENT_1D8                                  ; 1D8, (D782, bit 0)
+	const EVENT_1D9                                  ; 1D9, (D782, bit 1)
+	const EVENT_1DA                                  ; 1DA, (D782, bit 2)
+	const EVENT_1DB                                  ; 1DB, (D782, bit 3)
+	const EVENT_1DC                                  ; 1DC, (D782, bit 4)
+	const EVENT_1DD                                  ; 1DD, (D782, bit 5)
+	const EVENT_1DE                                  ; 1DE, (D782, bit 6)
+	const EVENT_1DF                                  ; 1DF, (D782, bit 7)
+	const EVENT_GOT_COIN_CASE                        ; 1E0, (D783, bit 0)
+	const EVENT_1E1                                  ; 1E1, (D783, bit 1)
+	const EVENT_1E2                                  ; 1E2, (D783, bit 2)
+	const EVENT_1E3                                  ; 1E3, (D783, bit 3)
+	const EVENT_1E4                                  ; 1E4, (D783, bit 4)
+	const EVENT_1E5                                  ; 1E5, (D783, bit 5)
+	const EVENT_1E6                                  ; 1E6, (D783, bit 6)
+	const EVENT_1E7                                  ; 1E7, (D783, bit 7)
+	const EVENT_1E8                                  ; 1E8, (D784, bit 0)
+	const EVENT_1E9                                  ; 1E9, (D784, bit 1)
+	const EVENT_1EA                                  ; 1EA, (D784, bit 2)
+	const EVENT_1EB                                  ; 1EB, (D784, bit 3)
+	const EVENT_1EC                                  ; 1EC, (D784, bit 4)
+	const EVENT_1ED                                  ; 1ED, (D784, bit 5)
+	const EVENT_1EE                                  ; 1EE, (D784, bit 6)
+	const EVENT_1EF                                  ; 1EF, (D784, bit 7)
+	const EVENT_1F0                                  ; 1F0, (D785, bit 0)
+	const EVENT_1F1                                  ; 1F1, (D785, bit 1)
+	const EVENT_1F2                                  ; 1F2, (D785, bit 2)
+	const EVENT_1F3                                  ; 1F3, (D785, bit 3)
+	const EVENT_1F4                                  ; 1F4, (D785, bit 4)
+	const EVENT_1F5                                  ; 1F5, (D785, bit 5)
+	const EVENT_1F6                                  ; 1F6, (D785, bit 6)
+	const EVENT_1F7                                  ; 1F7, (D785, bit 7)
+	const EVENT_1F8                                  ; 1F8, (D786, bit 0)
+	const EVENT_1F9                                  ; 1F9, (D786, bit 1)
+	const EVENT_1FA                                  ; 1FA, (D786, bit 2)
+	const EVENT_1FB                                  ; 1FB, (D786, bit 3)
+	const EVENT_1FC                                  ; 1FC, (D786, bit 4)
+	const EVENT_1FD                                  ; 1FD, (D786, bit 5)
+	const EVENT_1FE                                  ; 1FE, (D786, bit 6)
+	const EVENT_1FF                                  ; 1FF, (D786, bit 7)
+	const EVENT_200                                  ; 200, (D787, bit 0)
+	const EVENT_201                                  ; 201, (D787, bit 1)
+	const EVENT_202                                  ; 202, (D787, bit 2)
+	const EVENT_203                                  ; 203, (D787, bit 3)
+	const EVENT_204                                  ; 204, (D787, bit 4)
+	const EVENT_205                                  ; 205, (D787, bit 5)
+	const EVENT_206                                  ; 206, (D787, bit 6)
+	const EVENT_207                                  ; 207, (D787, bit 7)
+	const EVENT_208                                  ; 208, (D788, bit 0)
+	const EVENT_209                                  ; 209, (D788, bit 1)
+	const EVENT_20A                                  ; 20A, (D788, bit 2)
+	const EVENT_20B                                  ; 20B, (D788, bit 3)
+	const EVENT_20C                                  ; 20C, (D788, bit 4)
+	const EVENT_20D                                  ; 20D, (D788, bit 5)
+	const EVENT_20E                                  ; 20E, (D788, bit 6)
+	const EVENT_20F                                  ; 20F, (D788, bit 7)
+	const EVENT_210                                  ; 210, (D789, bit 0)
+	const EVENT_211                                  ; 211, (D789, bit 1)
+	const EVENT_212                                  ; 212, (D789, bit 2)
+	const EVENT_213                                  ; 213, (D789, bit 3)
+	const EVENT_214                                  ; 214, (D789, bit 4)
+	const EVENT_215                                  ; 215, (D789, bit 5)
+	const EVENT_216                                  ; 216, (D789, bit 6)
+	const EVENT_217                                  ; 217, (D789, bit 7)
+	const EVENT_218                                  ; 218, (D78A, bit 0)
+	const EVENT_219                                  ; 219, (D78A, bit 1)
+	const EVENT_21A                                  ; 21A, (D78A, bit 2)
+	const EVENT_21B                                  ; 21B, (D78A, bit 3)
+	const EVENT_21C                                  ; 21C, (D78A, bit 4)
+	const EVENT_21D                                  ; 21D, (D78A, bit 5)
+	const EVENT_21E                                  ; 21E, (D78A, bit 6)
+	const EVENT_21F                                  ; 21F, (D78A, bit 7)
+	const EVENT_220                                  ; 220, (D78B, bit 0)
+	const EVENT_221                                  ; 221, (D78B, bit 1)
+	const EVENT_222                                  ; 222, (D78B, bit 2)
+	const EVENT_223                                  ; 223, (D78B, bit 3)
+	const EVENT_224                                  ; 224, (D78B, bit 4)
+	const EVENT_225                                  ; 225, (D78B, bit 5)
+	const EVENT_226                                  ; 226, (D78B, bit 6)
+	const EVENT_227                                  ; 227, (D78B, bit 7)
+	const EVENT_228                                  ; 228, (D78C, bit 0)
+	const EVENT_229                                  ; 229, (D78C, bit 1)
+	const EVENT_22A                                  ; 22A, (D78C, bit 2)
+	const EVENT_22B                                  ; 22B, (D78C, bit 3)
+	const EVENT_22C                                  ; 22C, (D78C, bit 4)
+	const EVENT_22D                                  ; 22D, (D78C, bit 5)
+	const EVENT_22E                                  ; 22E, (D78C, bit 6)
+	const EVENT_22F                                  ; 22F, (D78C, bit 7)
+	const EVENT_230                                  ; 230, (D78D, bit 0)
+	const EVENT_231                                  ; 231, (D78D, bit 1)
+	const EVENT_232                                  ; 232, (D78D, bit 2)
+	const EVENT_233                                  ; 233, (D78D, bit 3)
+	const EVENT_234                                  ; 234, (D78D, bit 4)
+	const EVENT_235                                  ; 235, (D78D, bit 5)
+	const EVENT_236                                  ; 236, (D78D, bit 6)
+	const EVENT_237                                  ; 237, (D78D, bit 7)
+	const EVENT_GOT_HM04                             ; 238, (D78E, bit 0)
+	const EVENT_GAVE_GOLD_TEETH                      ; 239, (D78E, bit 1)
+	const EVENT_23A                                  ; 23A, (D78E, bit 2)
+	const EVENT_23B                                  ; 23B, (D78E, bit 3)
+	const EVENT_23C                                  ; 23C, (D78E, bit 4)
+	const EVENT_23D                                  ; 23D, (D78E, bit 5)
+	const EVENT_23E                                  ; 23E, (D78E, bit 6)
+	const EVENT_23F                                  ; 23F, (D78E, bit 7)
+	const EVENT_240                                  ; 240, (D78F, bit 0)
+	const EVENT_241                                  ; 241, (D78F, bit 1)
+	const EVENT_242                                  ; 242, (D78F, bit 2)
+	const EVENT_243                                  ; 243, (D78F, bit 3)
+	const EVENT_244                                  ; 244, (D78F, bit 4)
+	const EVENT_245                                  ; 245, (D78F, bit 5)
+	const EVENT_246                                  ; 246, (D78F, bit 6)
+	const EVENT_247                                  ; 247, (D78F, bit 7)
+	const EVENT_248                                  ; 248, (D790, bit 0)
+	const EVENT_249                                  ; 249, (D790, bit 1)
+	const EVENT_24A                                  ; 24A, (D790, bit 2)
+	const EVENT_24B                                  ; 24B, (D790, bit 3)
+	const EVENT_24C                                  ; 24C, (D790, bit 4)
+	const EVENT_24D                                  ; 24D, (D790, bit 5)
+	const EVENT_SAFARI_GAME_OVER                     ; 24E, (D790, bit 6)
+	const EVENT_IN_SAFARI_ZONE                       ; 24F, (D790, bit 7)
+	const EVENT_250                                  ; 250, (D791, bit 0)
+	const EVENT_251                                  ; 251, (D791, bit 1)
+	const EVENT_252                                  ; 252, (D791, bit 2)
+	const EVENT_253                                  ; 253, (D791, bit 3)
+	const EVENT_254                                  ; 254, (D791, bit 4)
+	const EVENT_255                                  ; 255, (D791, bit 5)
+	const EVENT_256                                  ; 256, (D791, bit 6)
+	const EVENT_257                                  ; 257, (D791, bit 7)
+	const EVENT_GOT_TM06                             ; 258, (D792, bit 0)
+	const EVENT_BEAT_KOGA                            ; 259, (D792, bit 1)
+	const EVENT_BEAT_FUCHSIA_GYM_TRAINER_0           ; 25A, (D792, bit 2)
+	const EVENT_BEAT_FUCHSIA_GYM_TRAINER_2           ; 25B, (D792, bit 3)
+	const EVENT_BEAT_FUCHSIA_GYM_TRAINER_3           ; 25C, (D792, bit 4)
+	const EVENT_BEAT_FUCHSIA_GYM_TRAINER_4           ; 25D, (D792, bit 5)
+	const EVENT_BEAT_FUCHSIA_GYM_TRAINER_5           ; 25E, (D792, bit 6)
+	const EVENT_BEAT_FUCHSIA_GYM_TRAINER_6           ; 25F, (D792, bit 7)
+	const EVENT_260                                  ; 260, (D793, bit 0)
+	const EVENT_261                                  ; 261, (D793, bit 1)
+	const EVENT_262                                  ; 262, (D793, bit 2)
+	const EVENT_263                                  ; 263, (D793, bit 3)
+	const EVENT_264                                  ; 264, (D793, bit 4)
+	const EVENT_265                                  ; 265, (D793, bit 5)
+	const EVENT_266                                  ; 266, (D793, bit 6)
+	const EVENT_267                                  ; 267, (D793, bit 7)
+	const EVENT_268                                  ; 268, (D794, bit 0)
+	const EVENT_269                                  ; 269, (D794, bit 1)
+	const EVENT_26A                                  ; 26A, (D794, bit 2)
+	const EVENT_26B                                  ; 26B, (D794, bit 3)
+	const EVENT_26C                                  ; 26C, (D794, bit 4)
+	const EVENT_26D                                  ; 26D, (D794, bit 5)
+	const EVENT_26E                                  ; 26E, (D794, bit 6)
+	const EVENT_26F                                  ; 26F, (D794, bit 7)
+	const EVENT_270                                  ; 270, (D795, bit 0)
+	const EVENT_271                                  ; 271, (D795, bit 1)
+	const EVENT_272                                  ; 272, (D795, bit 2)
+	const EVENT_273                                  ; 273, (D795, bit 3)
+	const EVENT_274                                  ; 274, (D795, bit 4)
+	const EVENT_275                                  ; 275, (D795, bit 5)
+	const EVENT_276                                  ; 276, (D795, bit 6)
+	const EVENT_277                                  ; 277, (D795, bit 7)
+	const EVENT_MANSION_SWITCH_ON                    ; 278, (D796, bit 0)
+	const EVENT_279                                  ; 279, (D796, bit 1)
+	const EVENT_27A                                  ; 27A, (D796, bit 2)
+	const EVENT_27B                                  ; 27B, (D796, bit 3)
+	const EVENT_27C                                  ; 27C, (D796, bit 4)
+	const EVENT_27D                                  ; 27D, (D796, bit 5)
+	const EVENT_27E                                  ; 27E, (D796, bit 6)
+	const EVENT_27F                                  ; 27F, (D796, bit 7)
+	const EVENT_280                                  ; 280, (D797, bit 0)
+	const EVENT_281                                  ; 281, (D797, bit 1)
+	const EVENT_282                                  ; 282, (D797, bit 2)
+	const EVENT_283                                  ; 283, (D797, bit 3)
+	const EVENT_284                                  ; 284, (D797, bit 4)
+	const EVENT_285                                  ; 285, (D797, bit 5)
+	const EVENT_286                                  ; 286, (D797, bit 6)
+	const EVENT_287                                  ; 287, (D797, bit 7)
+	const EVENT_288                                  ; 288, (D798, bit 0)
+	const EVENT_BEAT_MANSION_1_TRAINER_0             ; 289, (D798, bit 1)
+	const EVENT_28A                                  ; 28A, (D798, bit 2)
+	const EVENT_28B                                  ; 28B, (D798, bit 3)
+	const EVENT_28C                                  ; 28C, (D798, bit 4)
+	const EVENT_28D                                  ; 28D, (D798, bit 5)
+	const EVENT_28E                                  ; 28E, (D798, bit 6)
+	const EVENT_28F                                  ; 28F, (D798, bit 7)
+	const EVENT_290                                  ; 290, (D799, bit 0)
+	const EVENT_291                                  ; 291, (D799, bit 1)
+	const EVENT_292                                  ; 292, (D799, bit 2)
+	const EVENT_293                                  ; 293, (D799, bit 3)
+	const EVENT_294                                  ; 294, (D799, bit 4)
+	const EVENT_295                                  ; 295, (D799, bit 5)
+	const EVENT_296                                  ; 296, (D799, bit 6)
+	const EVENT_297                                  ; 297, (D799, bit 7)
+	const EVENT_GOT_TM38                             ; 298, (D79A, bit 0)
+	const EVENT_BEAT_BLAINE                          ; 299, (D79A, bit 1)
+	const EVENT_BEAT_CINNABAR_GYM_TRAINER_0          ; 29A, (D79A, bit 2)
+	const EVENT_BEAT_CINNABAR_GYM_TRAINER_1          ; 29B, (D79A, bit 3)
+	const EVENT_BEAT_CINNABAR_GYM_TRAINER_2          ; 29C, (D79A, bit 4)
+	const EVENT_BEAT_CINNABAR_GYM_TRAINER_3          ; 29D, (D79A, bit 5)
+	const EVENT_BEAT_CINNABAR_GYM_TRAINER_4          ; 29E, (D79A, bit 6)
+	const EVENT_BEAT_CINNABAR_GYM_TRAINER_5          ; 29F, (D79A, bit 7)
+	const EVENT_BEAT_CINNABAR_GYM_TRAINER_6          ; 2A0, (D79B, bit 0)
+	const EVENT_2A1                                  ; 2A1, (D79B, bit 1)
+	const EVENT_2A2                                  ; 2A2, (D79B, bit 2)
+	const EVENT_2A3                                  ; 2A3, (D79B, bit 3)
+	const EVENT_2A4                                  ; 2A4, (D79B, bit 4)
+	const EVENT_2A5                                  ; 2A5, (D79B, bit 5)
+	const EVENT_2A6                                  ; 2A6, (D79B, bit 6)
+	const EVENT_2A7                                  ; 2A7, (D79B, bit 7)
+	const EVENT_CINNABAR_GYM_GATE0_UNLOCKED          ; 2A8, (D79C, bit 0) doesn't exist, but the bit is set
+	const EVENT_CINNABAR_GYM_GATE1_UNLOCKED          ; 2A9, (D79C, bit 1)
+	const EVENT_CINNABAR_GYM_GATE2_UNLOCKED          ; 2AA, (D79C, bit 2)
+	const EVENT_CINNABAR_GYM_GATE3_UNLOCKED          ; 2AB, (D79C, bit 3)
+	const EVENT_CINNABAR_GYM_GATE4_UNLOCKED          ; 2AC, (D79C, bit 4)
+	const EVENT_CINNABAR_GYM_GATE5_UNLOCKED          ; 2AD, (D79C, bit 5)
+	const EVENT_CINNABAR_GYM_GATE6_UNLOCKED          ; 2AE, (D79C, bit 6)
+	const EVENT_2AF                                  ; 2AF, (D79C, bit 7)
+	const EVENT_2B0                                  ; 2B0, (D79D, bit 0)
+	const EVENT_2B1                                  ; 2B1, (D79D, bit 1)
+	const EVENT_2B2                                  ; 2B2, (D79D, bit 2)
+	const EVENT_2B3                                  ; 2B3, (D79D, bit 3)
+	const EVENT_2B4                                  ; 2B4, (D79D, bit 4)
+	const EVENT_2B5                                  ; 2B5, (D79D, bit 5)
+	const EVENT_2B6                                  ; 2B6, (D79D, bit 6)
+	const EVENT_2B7                                  ; 2B7, (D79D, bit 7)
+	const EVENT_2B8                                  ; 2B8, (D79E, bit 0)
+	const EVENT_2B9                                  ; 2B9, (D79E, bit 1)
+	const EVENT_2BA                                  ; 2BA, (D79E, bit 2)
+	const EVENT_2BB                                  ; 2BB, (D79E, bit 3)
+	const EVENT_2BC                                  ; 2BC, (D79E, bit 4)
+	const EVENT_2BD                                  ; 2BD, (D79E, bit 5)
+	const EVENT_2BE                                  ; 2BE, (D79E, bit 6)
+	const EVENT_2BF                                  ; 2BF, (D79E, bit 7)
+	const EVENT_2C0                                  ; 2C0, (D79F, bit 0)
+	const EVENT_2C1                                  ; 2C1, (D79F, bit 1)
+	const EVENT_2C2                                  ; 2C2, (D79F, bit 2)
+	const EVENT_2C3                                  ; 2C3, (D79F, bit 3)
+	const EVENT_2C4                                  ; 2C4, (D79F, bit 4)
+	const EVENT_2C5                                  ; 2C5, (D79F, bit 5)
+	const EVENT_2C6                                  ; 2C6, (D79F, bit 6)
+	const EVENT_2C7                                  ; 2C7, (D79F, bit 7)
+	const EVENT_2C8                                  ; 2C8, (D7A0, bit 0)
+	const EVENT_2C9                                  ; 2C9, (D7A0, bit 1)
+	const EVENT_2CA                                  ; 2CA, (D7A0, bit 2)
+	const EVENT_2CB                                  ; 2CB, (D7A0, bit 3)
+	const EVENT_2CC                                  ; 2CC, (D7A0, bit 4)
+	const EVENT_2CD                                  ; 2CD, (D7A0, bit 5)
+	const EVENT_2CE                                  ; 2CE, (D7A0, bit 6)
+	const EVENT_2CF                                  ; 2CF, (D7A0, bit 7)
+	const EVENT_2D0                                  ; 2D0, (D7A1, bit 0)
+	const EVENT_2D1                                  ; 2D1, (D7A1, bit 1)
+	const EVENT_2D2                                  ; 2D2, (D7A1, bit 2)
+	const EVENT_2D3                                  ; 2D3, (D7A1, bit 3)
+	const EVENT_2D4                                  ; 2D4, (D7A1, bit 4)
+	const EVENT_2D5                                  ; 2D5, (D7A1, bit 5)
+	const EVENT_2D6                                  ; 2D6, (D7A1, bit 6)
+	const EVENT_GOT_TM35                             ; 2D7, (D7A1, bit 7)
+	const EVENT_2D8                                  ; 2D8, (D7A2, bit 0)
+	const EVENT_2D9                                  ; 2D9, (D7A2, bit 1)
+	const EVENT_2DA                                  ; 2DA, (D7A2, bit 2)
+	const EVENT_2DB                                  ; 2DB, (D7A2, bit 3)
+	const EVENT_2DC                                  ; 2DC, (D7A2, bit 4)
+	const EVENT_2DD                                  ; 2DD, (D7A2, bit 5)
+	const EVENT_2DE                                  ; 2DE, (D7A2, bit 6)
+	const EVENT_2DF                                  ; 2DF, (D7A2, bit 7)
+	const EVENT_GAVE_FOSSIL_TO_LAB                   ; 2E0, (D7A3, bit 0)
+	const EVENT_LAB_STILL_REVIVING_FOSSIL            ; 2E1, (D7A3, bit 1)
+	const EVENT_LAB_HANDING_OVER_FOSSIL_MON          ; 2E2, (D7A3, bit 2)
+	const EVENT_2E3                                  ; 2E3, (D7A3, bit 3)
+	const EVENT_2E4                                  ; 2E4, (D7A3, bit 4)
+	const EVENT_2E5                                  ; 2E5, (D7A3, bit 5)
+	const EVENT_2E6                                  ; 2E6, (D7A3, bit 6)
+	const EVENT_2E7                                  ; 2E7, (D7A3, bit 7)
+	const EVENT_2E8                                  ; 2E8, (D7A4, bit 0)
+	const EVENT_2E9                                  ; 2E9, (D7A4, bit 1)
+	const EVENT_2EA                                  ; 2EA, (D7A4, bit 2)
+	const EVENT_2EB                                  ; 2EB, (D7A4, bit 3)
+	const EVENT_2EC                                  ; 2EC, (D7A4, bit 4)
+	const EVENT_2ED                                  ; 2ED, (D7A4, bit 5)
+	const EVENT_2EE                                  ; 2EE, (D7A4, bit 6)
+	const EVENT_2EF                                  ; 2EF, (D7A4, bit 7)
+	const EVENT_2F0                                  ; 2F0, (D7A5, bit 0)
+	const EVENT_2F1                                  ; 2F1, (D7A5, bit 1)
+	const EVENT_2F2                                  ; 2F2, (D7A5, bit 2)
+	const EVENT_2F3                                  ; 2F3, (D7A5, bit 3)
+	const EVENT_2F4                                  ; 2F4, (D7A5, bit 4)
+	const EVENT_2F5                                  ; 2F5, (D7A5, bit 5)
+	const EVENT_2F6                                  ; 2F6, (D7A5, bit 6)
+	const EVENT_2F7                                  ; 2F7, (D7A5, bit 7)
+	const EVENT_2F8                                  ; 2F8, (D7A6, bit 0)
+	const EVENT_2F9                                  ; 2F9, (D7A6, bit 1)
+	const EVENT_2FA                                  ; 2FA, (D7A6, bit 2)
+	const EVENT_2FB                                  ; 2FB, (D7A6, bit 3)
+	const EVENT_2FC                                  ; 2FC, (D7A6, bit 4)
+	const EVENT_2FD                                  ; 2FD, (D7A6, bit 5)
+	const EVENT_2FE                                  ; 2FE, (D7A6, bit 6)
+	const EVENT_2FF                                  ; 2FF, (D7A6, bit 7)
+	const EVENT_300                                  ; 300, (D7A7, bit 0)
+	const EVENT_301                                  ; 301, (D7A7, bit 1)
+	const EVENT_302                                  ; 302, (D7A7, bit 2)
+	const EVENT_303                                  ; 303, (D7A7, bit 3)
+	const EVENT_304                                  ; 304, (D7A7, bit 4)
+	const EVENT_305                                  ; 305, (D7A7, bit 5)
+	const EVENT_306                                  ; 306, (D7A7, bit 6)
+	const EVENT_307                                  ; 307, (D7A7, bit 7)
+	const EVENT_308                                  ; 308, (D7A8, bit 0)
+	const EVENT_309                                  ; 309, (D7A8, bit 1)
+	const EVENT_30A                                  ; 30A, (D7A8, bit 2)
+	const EVENT_30B                                  ; 30B, (D7A8, bit 3)
+	const EVENT_30C                                  ; 30C, (D7A8, bit 4)
+	const EVENT_30D                                  ; 30D, (D7A8, bit 5)
+	const EVENT_30E                                  ; 30E, (D7A8, bit 6)
+	const EVENT_30F                                  ; 30F, (D7A8, bit 7)
+	const EVENT_310                                  ; 310, (D7A9, bit 0)
+	const EVENT_311                                  ; 311, (D7A9, bit 1)
+	const EVENT_312                                  ; 312, (D7A9, bit 2)
+	const EVENT_313                                  ; 313, (D7A9, bit 3)
+	const EVENT_314                                  ; 314, (D7A9, bit 4)
+	const EVENT_315                                  ; 315, (D7A9, bit 5)
+	const EVENT_316                                  ; 316, (D7A9, bit 6)
+	const EVENT_317                                  ; 317, (D7A9, bit 7)
+	const EVENT_318                                  ; 318, (D7AA, bit 0)
+	const EVENT_319                                  ; 319, (D7AA, bit 1)
+	const EVENT_31A                                  ; 31A, (D7AA, bit 2)
+	const EVENT_31B                                  ; 31B, (D7AA, bit 3)
+	const EVENT_31C                                  ; 31C, (D7AA, bit 4)
+	const EVENT_31D                                  ; 31D, (D7AA, bit 5)
+	const EVENT_31E                                  ; 31E, (D7AA, bit 6)
+	const EVENT_31F                                  ; 31F, (D7AA, bit 7)
+	const EVENT_320                                  ; 320, (D7AB, bit 0)
+	const EVENT_321                                  ; 321, (D7AB, bit 1)
+	const EVENT_322                                  ; 322, (D7AB, bit 2)
+	const EVENT_323                                  ; 323, (D7AB, bit 3)
+	const EVENT_324                                  ; 324, (D7AB, bit 4)
+	const EVENT_325                                  ; 325, (D7AB, bit 5)
+	const EVENT_326                                  ; 326, (D7AB, bit 6)
+	const EVENT_327                                  ; 327, (D7AB, bit 7)
+	const EVENT_328                                  ; 328, (D7AC, bit 0)
+	const EVENT_329                                  ; 329, (D7AC, bit 1)
+	const EVENT_32A                                  ; 32A, (D7AC, bit 2)
+	const EVENT_32B                                  ; 32B, (D7AC, bit 3)
+	const EVENT_32C                                  ; 32C, (D7AC, bit 4)
+	const EVENT_32D                                  ; 32D, (D7AC, bit 5)
+	const EVENT_32E                                  ; 32E, (D7AC, bit 6)
+	const EVENT_32F                                  ; 32F, (D7AC, bit 7)
+	const EVENT_330                                  ; 330, (D7AD, bit 0)
+	const EVENT_331                                  ; 331, (D7AD, bit 1)
+	const EVENT_332                                  ; 332, (D7AD, bit 2)
+	const EVENT_333                                  ; 333, (D7AD, bit 3)
+	const EVENT_334                                  ; 334, (D7AD, bit 4)
+	const EVENT_335                                  ; 335, (D7AD, bit 5)
+	const EVENT_336                                  ; 336, (D7AD, bit 6)
+	const EVENT_337                                  ; 337, (D7AD, bit 7)
+	const EVENT_338                                  ; 338, (D7AE, bit 0)
+	const EVENT_339                                  ; 339, (D7AE, bit 1)
+	const EVENT_33A                                  ; 33A, (D7AE, bit 2)
+	const EVENT_33B                                  ; 33B, (D7AE, bit 3)
+	const EVENT_33C                                  ; 33C, (D7AE, bit 4)
+	const EVENT_33D                                  ; 33D, (D7AE, bit 5)
+	const EVENT_33E                                  ; 33E, (D7AE, bit 6)
+	const EVENT_33F                                  ; 33F, (D7AE, bit 7)
+	const EVENT_GOT_TM31                             ; 340, (D7AF, bit 0)
+	const EVENT_341                                  ; 341, (D7AF, bit 1)
+	const EVENT_342                                  ; 342, (D7AF, bit 2)
+	const EVENT_343                                  ; 343, (D7AF, bit 3)
+	const EVENT_344                                  ; 344, (D7AF, bit 4)
+	const EVENT_345                                  ; 345, (D7AF, bit 5)
+	const EVENT_346                                  ; 346, (D7AF, bit 6)
+	const EVENT_347                                  ; 347, (D7AF, bit 7)
+	const EVENT_348                                  ; 348, (D7B0, bit 0)
+	const EVENT_349                                  ; 349, (D7B0, bit 1)
+	const EVENT_34A                                  ; 34A, (D7B0, bit 2)
+	const EVENT_34B                                  ; 34B, (D7B0, bit 3)
+	const EVENT_34C                                  ; 34C, (D7B0, bit 4)
+	const EVENT_34D                                  ; 34D, (D7B0, bit 5)
+	const EVENT_34E                                  ; 34E, (D7B0, bit 6)
+	const EVENT_34F                                  ; 34F, (D7B0, bit 7)
+	const EVENT_DEFEATED_FIGHTING_DOJO               ; 350, (D7B1, bit 0)
+	const EVENT_BEAT_KARATE_MASTER                   ; 351, (D7B1, bit 1)
+	const EVENT_BEAT_FIGHTING_DOJO_TRAINER_0         ; 352, (D7B1, bit 2)
+	const EVENT_BEAT_FIGHTING_DOJO_TRAINER_1         ; 353, (D7B1, bit 3)
+	const EVENT_BEAT_FIGHTING_DOJO_TRAINER_2         ; 354, (D7B1, bit 4)
+	const EVENT_BEAT_FIGHTING_DOJO_TRAINER_3         ; 355, (D7B1, bit 5)
+	const EVENT_GOT_HITMONLEE                        ; 356, (D7B1, bit 6)
+	const EVENT_GOT_HITMONCHAN                       ; 357, (D7B1, bit 7)
+	const EVENT_358                                  ; 358, (D7B2, bit 0)
+	const EVENT_359                                  ; 359, (D7B2, bit 1)
+	const EVENT_35A                                  ; 35A, (D7B2, bit 2)
+	const EVENT_35B                                  ; 35B, (D7B2, bit 3)
+	const EVENT_35C                                  ; 35C, (D7B2, bit 4)
+	const EVENT_35D                                  ; 35D, (D7B2, bit 5)
+	const EVENT_35E                                  ; 35E, (D7B2, bit 6)
+	const EVENT_35F                                  ; 35F, (D7B2, bit 7)
+	const EVENT_GOT_TM46                             ; 360, (D7B3, bit 0)
+	const EVENT_BEAT_SABRINA                         ; 361, (D7B3, bit 1)
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_0           ; 362, (D7B3, bit 2)
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_1           ; 363, (D7B3, bit 3)
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_2           ; 364, (D7B3, bit 4)
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_3           ; 365, (D7B3, bit 5)
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_4           ; 366, (D7B3, bit 6)
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_5           ; 367, (D7B3, bit 7)
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_6           ; 368, (D7B4, bit 0)
+	const EVENT_369                                  ; 369, (D7B4, bit 1)
+	const EVENT_36A                                  ; 36A, (D7B4, bit 2)
+	const EVENT_36B                                  ; 36B, (D7B4, bit 3)
+	const EVENT_36C                                  ; 36C, (D7B4, bit 4)
+	const EVENT_36D                                  ; 36D, (D7B4, bit 5)
+	const EVENT_36E                                  ; 36E, (D7B4, bit 6)
+	const EVENT_36F                                  ; 36F, (D7B4, bit 7)
+	const EVENT_370                                  ; 370, (D7B5, bit 0)
+	const EVENT_371                                  ; 371, (D7B5, bit 1)
+	const EVENT_372                                  ; 372, (D7B5, bit 2)
+	const EVENT_373                                  ; 373, (D7B5, bit 3)
+	const EVENT_374                                  ; 374, (D7B5, bit 4)
+	const EVENT_375                                  ; 375, (D7B5, bit 5)
+	const EVENT_376                                  ; 376, (D7B5, bit 6)
+	const EVENT_377                                  ; 377, (D7B5, bit 7)
+	const EVENT_378                                  ; 378, (D7B6, bit 0)
+	const EVENT_379                                  ; 379, (D7B6, bit 1)
+	const EVENT_37A                                  ; 37A, (D7B6, bit 2)
+	const EVENT_37B                                  ; 37B, (D7B6, bit 3)
+	const EVENT_37C                                  ; 37C, (D7B6, bit 4)
+	const EVENT_37D                                  ; 37D, (D7B6, bit 5)
+	const EVENT_37E                                  ; 37E, (D7B6, bit 6)
+	const EVENT_37F                                  ; 37F, (D7B6, bit 7)
+	const EVENT_380                                  ; 380, (D7B7, bit 0)
+	const EVENT_381                                  ; 381, (D7B7, bit 1)
+	const EVENT_382                                  ; 382, (D7B7, bit 2)
+	const EVENT_383                                  ; 383, (D7B7, bit 3)
+	const EVENT_384                                  ; 384, (D7B7, bit 4)
+	const EVENT_385                                  ; 385, (D7B7, bit 5)
+	const EVENT_386                                  ; 386, (D7B7, bit 6)
+	const EVENT_387                                  ; 387, (D7B7, bit 7)
+	const EVENT_388                                  ; 388, (D7B8, bit 0)
+	const EVENT_389                                  ; 389, (D7B8, bit 1)
+	const EVENT_38A                                  ; 38A, (D7B8, bit 2)
+	const EVENT_38B                                  ; 38B, (D7B8, bit 3)
+	const EVENT_38C                                  ; 38C, (D7B8, bit 4)
+	const EVENT_38D                                  ; 38D, (D7B8, bit 5)
+	const EVENT_38E                                  ; 38E, (D7B8, bit 6)
+	const EVENT_38F                                  ; 38F, (D7B8, bit 7)
+	const EVENT_390                                  ; 390, (D7B9, bit 0)
+	const EVENT_391                                  ; 391, (D7B9, bit 1)
+	const EVENT_392                                  ; 392, (D7B9, bit 2)
+	const EVENT_393                                  ; 393, (D7B9, bit 3)
+	const EVENT_394                                  ; 394, (D7B9, bit 4)
+	const EVENT_395                                  ; 395, (D7B9, bit 5)
+	const EVENT_396                                  ; 396, (D7B9, bit 6)
+	const EVENT_SILPH_CO_RECEPTIONIST_AT_DESK        ; 397, (D7B9, bit 7)
+	const EVENT_398                                  ; 398, (D7BA, bit 0)
+	const EVENT_399                                  ; 399, (D7BA, bit 1)
+	const EVENT_39A                                  ; 39A, (D7BA, bit 2)
+	const EVENT_39B                                  ; 39B, (D7BA, bit 3)
+	const EVENT_39C                                  ; 39C, (D7BA, bit 4)
+	const EVENT_39D                                  ; 39D, (D7BA, bit 5)
+	const EVENT_39E                                  ; 39E, (D7BA, bit 6)
+	const EVENT_39F                                  ; 39F, (D7BA, bit 7)
+	const EVENT_3A0                                  ; 3A0, (D7BB, bit 0)
+	const EVENT_3A1                                  ; 3A1, (D7BB, bit 1)
+	const EVENT_3A2                                  ; 3A2, (D7BB, bit 2)
+	const EVENT_3A3                                  ; 3A3, (D7BB, bit 3)
+	const EVENT_3A4                                  ; 3A4, (D7BB, bit 4)
+	const EVENT_3A5                                  ; 3A5, (D7BB, bit 5)
+	const EVENT_3A6                                  ; 3A6, (D7BB, bit 6)
+	const EVENT_3A7                                  ; 3A7, (D7BB, bit 7)
+	const EVENT_3A8                                  ; 3A8, (D7BC, bit 0)
+	const EVENT_3A9                                  ; 3A9, (D7BC, bit 1)
+	const EVENT_3AA                                  ; 3AA, (D7BC, bit 2)
+	const EVENT_3AB                                  ; 3AB, (D7BC, bit 3)
+	const EVENT_3AC                                  ; 3AC, (D7BC, bit 4)
+	const EVENT_3AD                                  ; 3AD, (D7BC, bit 5)
+	const EVENT_3AE                                  ; 3AE, (D7BC, bit 6)
+	const EVENT_3AF                                  ; 3AF, (D7BC, bit 7)
+	const EVENT_GOT_TM29                             ; 3B0, (D7BD, bit 0)
+	const EVENT_3B1                                  ; 3B1, (D7BD, bit 1)
+	const EVENT_3B2                                  ; 3B2, (D7BD, bit 2)
+	const EVENT_3B3                                  ; 3B3, (D7BD, bit 3)
+	const EVENT_3B4                                  ; 3B4, (D7BD, bit 4)
+	const EVENT_3B5                                  ; 3B5, (D7BD, bit 5)
+	const EVENT_3B6                                  ; 3B6, (D7BD, bit 6)
+	const EVENT_3B7                                  ; 3B7, (D7BD, bit 7)
+	const EVENT_3B8                                  ; 3B8, (D7BE, bit 0)
+	const EVENT_3B9                                  ; 3B9, (D7BE, bit 1)
+	const EVENT_3BA                                  ; 3BA, (D7BE, bit 2)
+	const EVENT_3BB                                  ; 3BB, (D7BE, bit 3)
+	const EVENT_3BC                                  ; 3BC, (D7BE, bit 4)
+	const EVENT_3BD                                  ; 3BD, (D7BE, bit 5)
+	const EVENT_3BE                                  ; 3BE, (D7BE, bit 6)
+	const EVENT_3BF                                  ; 3BF, (D7BE, bit 7)
+	const EVENT_GOT_POTION_SAMPLE                    ; 3C0, (D7BF, bit 0)
+	const EVENT_3C1                                  ; 3C1, (D7BF, bit 1)
+	const EVENT_3C2                                  ; 3C2, (D7BF, bit 2)
+	const EVENT_3C3                                  ; 3C3, (D7BF, bit 3)
+	const EVENT_3C4                                  ; 3C4, (D7BF, bit 4)
+	const EVENT_3C5                                  ; 3C5, (D7BF, bit 5)
+	const EVENT_3C6                                  ; 3C6, (D7BF, bit 6)
+	const EVENT_3C7                                  ; 3C7, (D7BF, bit 7)
+	const EVENT_3C8                                  ; 3C8, (D7C0, bit 0)
+	const EVENT_3C9                                  ; 3C9, (D7C0, bit 1)
+	const EVENT_3CA                                  ; 3CA, (D7C0, bit 2)
+	const EVENT_3CB                                  ; 3CB, (D7C0, bit 3)
+	const EVENT_3CC                                  ; 3CC, (D7C0, bit 4)
+	const EVENT_3CD                                  ; 3CD, (D7C0, bit 5)
+	const EVENT_3CE                                  ; 3CE, (D7C0, bit 6)
+	const EVENT_3CF                                  ; 3CF, (D7C0, bit 7)
+	const EVENT_3D0                                  ; 3D0, (D7C1, bit 0)
+	const EVENT_3D1                                  ; 3D1, (D7C1, bit 1)
+	const EVENT_3D2                                  ; 3D2, (D7C1, bit 2)
+	const EVENT_3D3                                  ; 3D3, (D7C1, bit 3)
+	const EVENT_3D4                                  ; 3D4, (D7C1, bit 4)
+	const EVENT_3D5                                  ; 3D5, (D7C1, bit 5)
+	const EVENT_3D6                                  ; 3D6, (D7C1, bit 6)
+	const EVENT_3D7                                  ; 3D7, (D7C1, bit 7)
+	const EVENT_GOT_HM05                             ; 3D8, (D7C2, bit 0)
+	const EVENT_3D9                                  ; 3D9, (D7C2, bit 1)
+	const EVENT_3DA                                  ; 3DA, (D7C2, bit 2)
+	const EVENT_3DB                                  ; 3DB, (D7C2, bit 3)
+	const EVENT_3DC                                  ; 3DC, (D7C2, bit 4)
+	const EVENT_3DD                                  ; 3DD, (D7C2, bit 5)
+	const EVENT_3DE                                  ; 3DE, (D7C2, bit 6)
+	const EVENT_3DF                                  ; 3DF, (D7C2, bit 7)
+	const EVENT_3E0                                  ; 3E0, (D7C3, bit 0)
+	const EVENT_3E1                                  ; 3E1, (D7C3, bit 1)
+	const EVENT_BEAT_ROUTE_3_TRAINER_0               ; 3E2, (D7C3, bit 2)
+	const EVENT_BEAT_ROUTE_3_TRAINER_2               ; 3E3, (D7C3, bit 3)
+	const EVENT_BEAT_ROUTE_3_TRAINER_3               ; 3E4, (D7C3, bit 4)
+	const EVENT_BEAT_ROUTE_3_TRAINER_4               ; 3E5, (D7C3, bit 5)
+	const EVENT_BEAT_ROUTE_3_TRAINER_5               ; 3E6, (D7C3, bit 6)
+	const EVENT_BEAT_ROUTE_3_TRAINER_6               ; 3E7, (D7C3, bit 7)
+	const EVENT_BEAT_ROUTE_3_TRAINER_7               ; 3E8, (D7C4, bit 0)
+	const EVENT_BEAT_ROUTE_3_TRAINER_8               ; 3E9, (D7C4, bit 1)
+	const EVENT_3EA                                  ; 3EA, (D7C4, bit 2)
+	const EVENT_3EB                                  ; 3EB, (D7C4, bit 3)
+	const EVENT_3EC                                  ; 3EC, (D7C4, bit 4)
+	const EVENT_3ED                                  ; 3ED, (D7C4, bit 5)
+	const EVENT_3EE                                  ; 3EE, (D7C4, bit 6)
+	const EVENT_3EF                                  ; 3EF, (D7C4, bit 7)
+	const EVENT_3F0                                  ; 3F0, (D7C5, bit 0)
+	const EVENT_3F1                                  ; 3F1, (D7C5, bit 1)
+	const EVENT_BEAT_ROUTE_4_TRAINER_0               ; 3F2, (D7C5, bit 2)
+	const EVENT_3F3                                  ; 3F3, (D7C5, bit 3)
+	const EVENT_3F4                                  ; 3F4, (D7C5, bit 4)
+	const EVENT_3F5                                  ; 3F5, (D7C5, bit 5)
+	const EVENT_3F6                                  ; 3F6, (D7C5, bit 6)
+	const EVENT_3F7                                  ; 3F7, (D7C5, bit 7)
+	const EVENT_3F8                                  ; 3F8, (D7C6, bit 0)
+	const EVENT_3F9                                  ; 3F9, (D7C6, bit 1)
+	const EVENT_3FA                                  ; 3FA, (D7C6, bit 2)
+	const EVENT_3FB                                  ; 3FB, (D7C6, bit 3)
+	const EVENT_3FC                                  ; 3FC, (D7C6, bit 4)
+	const EVENT_3FD                                  ; 3FD, (D7C6, bit 5)
+	const EVENT_3FE                                  ; 3FE, (D7C6, bit 6)
+	const EVENT_BOUGHT_MAGIKARP                      ; 3FF, (D7C6, bit 7)
+	const EVENT_400                                  ; 400, (D7C7, bit 0)
+	const EVENT_401                                  ; 401, (D7C7, bit 1)
+	const EVENT_402                                  ; 402, (D7C7, bit 2)
+	const EVENT_403                                  ; 403, (D7C7, bit 3)
+	const EVENT_404                                  ; 404, (D7C7, bit 4)
+	const EVENT_405                                  ; 405, (D7C7, bit 5)
+	const EVENT_406                                  ; 406, (D7C7, bit 6)
+	const EVENT_407                                  ; 407, (D7C7, bit 7)
+	const EVENT_408                                  ; 408, (D7C8, bit 0)
+	const EVENT_409                                  ; 409, (D7C8, bit 1)
+	const EVENT_40A                                  ; 40A, (D7C8, bit 2)
+	const EVENT_40B                                  ; 40B, (D7C8, bit 3)
+	const EVENT_40C                                  ; 40C, (D7C8, bit 4)
+	const EVENT_40D                                  ; 40D, (D7C8, bit 5)
+	const EVENT_40E                                  ; 40E, (D7C8, bit 6)
+	const EVENT_40F                                  ; 40F, (D7C8, bit 7)
+	const EVENT_410                                  ; 410, (D7C9, bit 0)
+	const EVENT_BEAT_ROUTE_6_TRAINER_0               ; 411, (D7C9, bit 1)
+	const EVENT_BEAT_ROUTE_6_TRAINER_1               ; 412, (D7C9, bit 2)
+	const EVENT_BEAT_ROUTE_6_TRAINER_2               ; 413, (D7C9, bit 3)
+	const EVENT_BEAT_ROUTE_6_TRAINER_3               ; 414, (D7C9, bit 4)
+	const EVENT_BEAT_ROUTE_6_TRAINER_4               ; 415, (D7C9, bit 5)
+	const EVENT_BEAT_ROUTE_6_TRAINER_5               ; 416, (D7C9, bit 6)
+	const EVENT_417                                  ; 417, (D7C9, bit 7)
+	const EVENT_418                                  ; 418, (D7CA, bit 0)
+	const EVENT_419                                  ; 419, (D7CA, bit 1)
+	const EVENT_41A                                  ; 41A, (D7CA, bit 2)
+	const EVENT_41B                                  ; 41B, (D7CA, bit 3)
+	const EVENT_41C                                  ; 41C, (D7CA, bit 4)
+	const EVENT_41D                                  ; 41D, (D7CA, bit 5)
+	const EVENT_41E                                  ; 41E, (D7CA, bit 6)
+	const EVENT_41F                                  ; 41F, (D7CA, bit 7)
+	const EVENT_420                                  ; 420, (D7CB, bit 0)
+	const EVENT_421                                  ; 421, (D7CB, bit 1)
+	const EVENT_422                                  ; 422, (D7CB, bit 2)
+	const EVENT_423                                  ; 423, (D7CB, bit 3)
+	const EVENT_424                                  ; 424, (D7CB, bit 4)
+	const EVENT_425                                  ; 425, (D7CB, bit 5)
+	const EVENT_426                                  ; 426, (D7CB, bit 6)
+	const EVENT_427                                  ; 427, (D7CB, bit 7)
+	const EVENT_428                                  ; 428, (D7CC, bit 0)
+	const EVENT_429                                  ; 429, (D7CC, bit 1)
+	const EVENT_42A                                  ; 42A, (D7CC, bit 2)
+	const EVENT_42B                                  ; 42B, (D7CC, bit 3)
+	const EVENT_42C                                  ; 42C, (D7CC, bit 4)
+	const EVENT_42D                                  ; 42D, (D7CC, bit 5)
+	const EVENT_42E                                  ; 42E, (D7CC, bit 6)
+	const EVENT_42F                                  ; 42F, (D7CC, bit 7)
+	const EVENT_430                                  ; 430, (D7CD, bit 0)
+	const EVENT_BEAT_ROUTE_8_TRAINER_0               ; 431, (D7CD, bit 1)
+	const EVENT_BEAT_ROUTE_8_TRAINER_1               ; 432, (D7CD, bit 2)
+	const EVENT_BEAT_ROUTE_8_TRAINER_2               ; 433, (D7CD, bit 3)
+	const EVENT_BEAT_ROUTE_8_TRAINER_3               ; 434, (D7CD, bit 4)
+	const EVENT_BEAT_ROUTE_8_TRAINER_4               ; 435, (D7CD, bit 5)
+	const EVENT_BEAT_ROUTE_8_TRAINER_5               ; 436, (D7CD, bit 6)
+	const EVENT_BEAT_ROUTE_8_TRAINER_6               ; 437, (D7CD, bit 7)
+	const EVENT_BEAT_ROUTE_8_TRAINER_7               ; 438, (D7CE, bit 0)
+	const EVENT_BEAT_ROUTE_8_TRAINER_8               ; 439, (D7CE, bit 1)
+	const EVENT_43A                                  ; 43A, (D7CE, bit 2)
+	const EVENT_43B                                  ; 43B, (D7CE, bit 3)
+	const EVENT_43C                                  ; 43C, (D7CE, bit 4)
+	const EVENT_43D                                  ; 43D, (D7CE, bit 5)
+	const EVENT_43E                                  ; 43E, (D7CE, bit 6)
+	const EVENT_43F                                  ; 43F, (D7CE, bit 7)
+	const EVENT_440                                  ; 440, (D7CF, bit 0)
+	const EVENT_BEAT_ROUTE_9_TRAINER_0               ; 441, (D7CF, bit 1)
+	const EVENT_BEAT_ROUTE_9_TRAINER_2               ; 442, (D7CF, bit 2)
+	const EVENT_BEAT_ROUTE_9_TRAINER_3               ; 443, (D7CF, bit 3)
+	const EVENT_BEAT_ROUTE_9_TRAINER_4               ; 444, (D7CF, bit 4)
+	const EVENT_BEAT_ROUTE_9_TRAINER_5               ; 445, (D7CF, bit 5)
+	const EVENT_BEAT_ROUTE_9_TRAINER_6               ; 446, (D7CF, bit 6)
+	const EVENT_BEAT_ROUTE_9_TRAINER_7               ; 447, (D7CF, bit 7)
+	const EVENT_BEAT_ROUTE_9_TRAINER_8               ; 448, (D7D0, bit 0)
+	const EVENT_BEAT_ROUTE_9_TRAINER_9               ; 449, (D7D0, bit 1)
+	const EVENT_44A                                  ; 44A, (D7D0, bit 2)
+	const EVENT_44B                                  ; 44B, (D7D0, bit 3)
+	const EVENT_44C                                  ; 44C, (D7D0, bit 4)
+	const EVENT_44D                                  ; 44D, (D7D0, bit 5)
+	const EVENT_44E                                  ; 44E, (D7D0, bit 6)
+	const EVENT_44F                                  ; 44F, (D7D0, bit 7)
+	const EVENT_450                                  ; 450, (D7D1, bit 0)
+	const EVENT_BEAT_ROUTE_10_TRAINER_0              ; 451, (D7D1, bit 1)
+	const EVENT_BEAT_ROUTE_10_TRAINER_1              ; 452, (D7D1, bit 2)
+	const EVENT_BEAT_ROUTE_10_TRAINER_2              ; 453, (D7D1, bit 3)
+	const EVENT_BEAT_ROUTE_10_TRAINER_3              ; 454, (D7D1, bit 4)
+	const EVENT_BEAT_ROUTE_10_TRAINER_4              ; 455, (D7D1, bit 5)
+	const EVENT_BEAT_ROUTE_10_TRAINER_5              ; 456, (D7D1, bit 6)
+	const EVENT_457                                  ; 457, (D7D1, bit 7)
+	const EVENT_458                                  ; 458, (D7D2, bit 0)
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_1         ; 459, (D7D2, bit 1)
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_2         ; 45A, (D7D2, bit 2)
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_3         ; 45B, (D7D2, bit 3)
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_4         ; 45C, (D7D2, bit 4)
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_5         ; 45D, (D7D2, bit 5)
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_6         ; 45E, (D7D2, bit 6)
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_7         ; 45F, (D7D2, bit 7)
+	const EVENT_460                                  ; 460, (D7D3, bit 0)
+	const EVENT_BEAT_POWER_PLANT_TRAINER_0           ; 461, (D7D3, bit 1)
+	const EVENT_BEAT_POWER_PLANT_TRAINER_1           ; 462, (D7D3, bit 2)
+	const EVENT_BEAT_POWER_PLANT_TRAINER_2           ; 463, (D7D3, bit 3)
+	const EVENT_BEAT_POWER_PLANT_TRAINER_3           ; 464, (D7D3, bit 4)
+	const EVENT_BEAT_POWER_PLANT_TRAINER_4           ; 465, (D7D3, bit 5)
+	const EVENT_BEAT_POWER_PLANT_TRAINER_5           ; 466, (D7D3, bit 6)
+	const EVENT_BEAT_POWER_PLANT_TRAINER_6           ; 467, (D7D3, bit 7)
+	const EVENT_BEAT_POWER_PLANT_TRAINER_7           ; 468, (D7D4, bit 0)
+	const EVENT_BEAT_POWER_PLANT_TRAINER_8           ; 469, (D7D4, bit 1)
+	const EVENT_46A                                  ; 46A, (D7D4, bit 2)
+	const EVENT_46B                                  ; 46B, (D7D4, bit 3)
+	const EVENT_46C                                  ; 46C, (D7D4, bit 4)
+	const EVENT_46D                                  ; 46D, (D7D4, bit 5)
+	const EVENT_46E                                  ; 46E, (D7D4, bit 6)
+	const EVENT_46F                                  ; 46F, (D7D4, bit 7)
+	const EVENT_470                                  ; 470, (D7D5, bit 0)
+	const EVENT_BEAT_ROUTE_11_TRAINER_0              ; 471, (D7D5, bit 1)
+	const EVENT_BEAT_ROUTE_11_TRAINER_1              ; 472, (D7D5, bit 2)
+	const EVENT_BEAT_ROUTE_11_TRAINER_2              ; 473, (D7D5, bit 3)
+	const EVENT_BEAT_ROUTE_11_TRAINER_3              ; 474, (D7D5, bit 4)
+	const EVENT_BEAT_ROUTE_11_TRAINER_4              ; 475, (D7D5, bit 5)
+	const EVENT_BEAT_ROUTE_11_TRAINER_5              ; 476, (D7D5, bit 6)
+	const EVENT_BEAT_ROUTE_11_TRAINER_6              ; 477, (D7D5, bit 7)
+	const EVENT_BEAT_ROUTE_11_TRAINER_7              ; 478, (D7D6, bit 0)
+	const EVENT_BEAT_ROUTE_11_TRAINER_8              ; 479, (D7D6, bit 1)
+	const EVENT_BEAT_ROUTE_11_TRAINER_9              ; 47A, (D7D6, bit 2)
+	const EVENT_47B                                  ; 47B, (D7D6, bit 3)
+	const EVENT_47C                                  ; 47C, (D7D6, bit 4)
+	const EVENT_47D                                  ; 47D, (D7D6, bit 5)
+	const EVENT_47E                                  ; 47E, (D7D6, bit 6)
+	const EVENT_GOT_ITEMFINDER                       ; 47F, (D7D6, bit 7)
+	const EVENT_GOT_TM39                             ; 480, (D7D7, bit 0)
+	const EVENT_481                                  ; 481, (D7D7, bit 1)
+	const EVENT_BEAT_ROUTE_12_TRAINER_0              ; 482, (D7D7, bit 2)
+	const EVENT_BEAT_ROUTE_12_TRAINER_1              ; 483, (D7D7, bit 3)
+	const EVENT_BEAT_ROUTE_12_TRAINER_2              ; 484, (D7D7, bit 4)
+	const EVENT_BEAT_ROUTE_12_TRAINER_3              ; 485, (D7D7, bit 5)
+	const EVENT_BEAT_ROUTE_12_TRAINER_4              ; 486, (D7D7, bit 6)
+	const EVENT_BEAT_ROUTE_12_TRAINER_5              ; 487, (D7D7, bit 7)
+	const EVENT_BEAT_ROUTE_12_TRAINER_6              ; 488, (D7D8, bit 0)
+	const EVENT_489                                  ; 489, (D7D8, bit 1)
+	const EVENT_48A                                  ; 48A, (D7D8, bit 2)
+	const EVENT_48B                                  ; 48B, (D7D8, bit 3)
+	const EVENT_48C                                  ; 48C, (D7D8, bit 4)
+	const EVENT_48D                                  ; 48D, (D7D8, bit 5)
+	const EVENT_FIGHT_ROUTE12_SNORLAX                ; 48E, (D7D8, bit 6)
+	const EVENT_BEAT_ROUTE12_SNORLAX                 ; 48F, (D7D8, bit 7)
+	const EVENT_490                                  ; 490, (D7D9, bit 0)
+	const EVENT_BEAT_ROUTE_13_TRAINER_0              ; 491, (D7D9, bit 1)
+	const EVENT_BEAT_ROUTE_13_TRAINER_2              ; 492, (D7D9, bit 2)
+	const EVENT_BEAT_ROUTE_13_TRAINER_3              ; 493, (D7D9, bit 3)
+	const EVENT_BEAT_ROUTE_13_TRAINER_4              ; 494, (D7D9, bit 4)
+	const EVENT_BEAT_ROUTE_13_TRAINER_5              ; 495, (D7D9, bit 5)
+	const EVENT_BEAT_ROUTE_13_TRAINER_6              ; 496, (D7D9, bit 6)
+	const EVENT_BEAT_ROUTE_13_TRAINER_7              ; 497, (D7D9, bit 7)
+	const EVENT_BEAT_ROUTE_13_TRAINER_8              ; 498, (D7DA, bit 0)
+	const EVENT_BEAT_ROUTE_13_TRAINER_9              ; 499, (D7DA, bit 1)
+	const EVENT_BEAT_ROUTE_13_TRAINER_10             ; 49A, (D7DA, bit 2)
+	const EVENT_49B                                  ; 49B, (D7DA, bit 3)
+	const EVENT_49C                                  ; 49C, (D7DA, bit 4)
+	const EVENT_49D                                  ; 49D, (D7DA, bit 5)
+	const EVENT_49E                                  ; 49E, (D7DA, bit 6)
+	const EVENT_49F                                  ; 49F, (D7DA, bit 7)
+	const EVENT_4A0                                  ; 4A0, (D7DB, bit 0)
+	const EVENT_BEAT_ROUTE_14_TRAINER_0              ; 4A1, (D7DB, bit 1)
+	const EVENT_BEAT_ROUTE_14_TRAINER_1              ; 4A2, (D7DB, bit 2)
+	const EVENT_BEAT_ROUTE_14_TRAINER_2              ; 4A3, (D7DB, bit 3)
+	const EVENT_BEAT_ROUTE_14_TRAINER_3              ; 4A4, (D7DB, bit 4)
+	const EVENT_BEAT_ROUTE_14_TRAINER_4              ; 4A5, (D7DB, bit 5)
+	const EVENT_BEAT_ROUTE_14_TRAINER_5              ; 4A6, (D7DB, bit 6)
+	const EVENT_BEAT_ROUTE_14_TRAINER_6              ; 4A7, (D7DB, bit 7)
+	const EVENT_BEAT_ROUTE_14_TRAINER_7              ; 4A8, (D7DC, bit 0)
+	const EVENT_BEAT_ROUTE_14_TRAINER_8              ; 4A9, (D7DC, bit 1)
+	const EVENT_BEAT_ROUTE_14_TRAINER_9              ; 4AA, (D7DC, bit 2)
+	const EVENT_4AB                                  ; 4AB, (D7DC, bit 3)
+	const EVENT_4AC                                  ; 4AC, (D7DC, bit 4)
+	const EVENT_4AD                                  ; 4AD, (D7DC, bit 5)
+	const EVENT_4AE                                  ; 4AE, (D7DC, bit 6)
+	const EVENT_4AF                                  ; 4AF, (D7DC, bit 7)
+	const EVENT_GOT_EXP_ALL                          ; 4B0, (D7DD, bit 0)
+	const EVENT_BEAT_ROUTE_15_TRAINER_0              ; 4B1, (D7DD, bit 1)
+	const EVENT_BEAT_ROUTE_15_TRAINER_1              ; 4B2, (D7DD, bit 2)
+	const EVENT_BEAT_ROUTE_15_TRAINER_2              ; 4B3, (D7DD, bit 3)
+	const EVENT_BEAT_ROUTE_15_TRAINER_3              ; 4B4, (D7DD, bit 4)
+	const EVENT_BEAT_ROUTE_15_TRAINER_4              ; 4B5, (D7DD, bit 5)
+	const EVENT_BEAT_ROUTE_15_TRAINER_5              ; 4B6, (D7DD, bit 6)
+	const EVENT_BEAT_ROUTE_15_TRAINER_6              ; 4B7, (D7DD, bit 7)
+	const EVENT_BEAT_ROUTE_15_TRAINER_7              ; 4B8, (D7DE, bit 0)
+	const EVENT_BEAT_ROUTE_15_TRAINER_8              ; 4B9, (D7DE, bit 1)
+	const EVENT_BEAT_ROUTE_15_TRAINER_9              ; 4BA, (D7DE, bit 2)
+	const EVENT_4BB                                  ; 4BB, (D7DE, bit 3)
+	const EVENT_4BC                                  ; 4BC, (D7DE, bit 4)
+	const EVENT_4BD                                  ; 4BD, (D7DE, bit 5)
+	const EVENT_4BE                                  ; 4BE, (D7DE, bit 6)
+	const EVENT_4BF                                  ; 4BF, (D7DE, bit 7)
+	const EVENT_4C0                                  ; 4C0, (D7DF, bit 0)
+	const EVENT_BEAT_ROUTE_16_TRAINER_0              ; 4C1, (D7DF, bit 1)
+	const EVENT_BEAT_ROUTE_16_TRAINER_1              ; 4C2, (D7DF, bit 2)
+	const EVENT_BEAT_ROUTE_16_TRAINER_2              ; 4C3, (D7DF, bit 3)
+	const EVENT_BEAT_ROUTE_16_TRAINER_3              ; 4C4, (D7DF, bit 4)
+	const EVENT_BEAT_ROUTE_16_TRAINER_4              ; 4C5, (D7DF, bit 5)
+	const EVENT_BEAT_ROUTE_16_TRAINER_5              ; 4C6, (D7DF, bit 6)
+	const EVENT_4C7                                  ; 4C7, (D7DF, bit 7)
+	const EVENT_FIGHT_ROUTE16_SNORLAX                ; 4C8, (D7E0, bit 0)
+	const EVENT_BEAT_ROUTE16_SNORLAX                 ; 4C9, (D7E0, bit 1)
+	const EVENT_4CA                                  ; 4CA, (D7E0, bit 2)
+	const EVENT_4CB                                  ; 4CB, (D7E0, bit 3)
+	const EVENT_4CC                                  ; 4CC, (D7E0, bit 4)
+	const EVENT_4CD                                  ; 4CD, (D7E0, bit 5)
+	const EVENT_GOT_HM02                             ; 4CE, (D7E0, bit 6)
+	const EVENT_RESCUED_MR_FUJI                      ; 4CF, (D7E0, bit 7)
+	const EVENT_4D0                                  ; 4D0, (D7E1, bit 0)
+	const EVENT_BEAT_ROUTE_17_TRAINER_0              ; 4D1, (D7E1, bit 1)
+	const EVENT_BEAT_ROUTE_17_TRAINER_1              ; 4D2, (D7E1, bit 2)
+	const EVENT_BEAT_ROUTE_17_TRAINER_2              ; 4D3, (D7E1, bit 3)
+	const EVENT_BEAT_ROUTE_17_TRAINER_3              ; 4D4, (D7E1, bit 4)
+	const EVENT_BEAT_ROUTE_17_TRAINER_4              ; 4D5, (D7E1, bit 5)
+	const EVENT_BEAT_ROUTE_17_TRAINER_5              ; 4D6, (D7E1, bit 6)
+	const EVENT_BEAT_ROUTE_17_TRAINER_6              ; 4D7, (D7E1, bit 7)
+	const EVENT_BEAT_ROUTE_17_TRAINER_7              ; 4D8, (D7E2, bit 0)
+	const EVENT_BEAT_ROUTE_17_TRAINER_8              ; 4D9, (D7E2, bit 1)
+	const EVENT_BEAT_ROUTE_17_TRAINER_9              ; 4DA, (D7E2, bit 2)
+	const EVENT_4DB                                  ; 4DB, (D7E2, bit 3)
+	const EVENT_4DC                                  ; 4DC, (D7E2, bit 4)
+	const EVENT_4DD                                  ; 4DD, (D7E2, bit 5)
+	const EVENT_4DE                                  ; 4DE, (D7E2, bit 6)
+	const EVENT_4DF                                  ; 4DF, (D7E2, bit 7)
+	const EVENT_4E0                                  ; 4E0, (D7E3, bit 0)
+	const EVENT_BEAT_ROUTE_18_TRAINER_0              ; 4E1, (D7E3, bit 1)
+	const EVENT_BEAT_ROUTE_18_TRAINER_1              ; 4E2, (D7E3, bit 2)
+	const EVENT_BEAT_ROUTE_18_TRAINER_2              ; 4E3, (D7E3, bit 3)
+	const EVENT_4E4                                  ; 4E4, (D7E3, bit 4)
+	const EVENT_4E5                                  ; 4E5, (D7E3, bit 5)
+	const EVENT_4E6                                  ; 4E6, (D7E3, bit 6)
+	const EVENT_4E7                                  ; 4E7, (D7E3, bit 7)
+	const EVENT_4E8                                  ; 4E8, (D7E4, bit 0)
+	const EVENT_4E9                                  ; 4E9, (D7E4, bit 1)
+	const EVENT_4EA                                  ; 4EA, (D7E4, bit 2)
+	const EVENT_4EB                                  ; 4EB, (D7E4, bit 3)
+	const EVENT_4EC                                  ; 4EC, (D7E4, bit 4)
+	const EVENT_4ED                                  ; 4ED, (D7E4, bit 5)
+	const EVENT_4EE                                  ; 4EE, (D7E4, bit 6)
+	const EVENT_4EF                                  ; 4EF, (D7E4, bit 7)
+	const EVENT_4F0                                  ; 4F0, (D7E5, bit 0)
+	const EVENT_BEAT_ROUTE_19_TRAINER_0              ; 4F1, (D7E5, bit 1)
+	const EVENT_BEAT_ROUTE_19_TRAINER_1              ; 4F2, (D7E5, bit 2)
+	const EVENT_BEAT_ROUTE_19_TRAINER_2              ; 4F3, (D7E5, bit 3)
+	const EVENT_BEAT_ROUTE_19_TRAINER_3              ; 4F4, (D7E5, bit 4)
+	const EVENT_BEAT_ROUTE_19_TRAINER_4              ; 4F5, (D7E5, bit 5)
+	const EVENT_BEAT_ROUTE_19_TRAINER_5              ; 4F6, (D7E5, bit 6)
+	const EVENT_BEAT_ROUTE_19_TRAINER_6              ; 4F7, (D7E5, bit 7)
+	const EVENT_BEAT_ROUTE_19_TRAINER_7              ; 4F8, (D7E6, bit 0)
+	const EVENT_BEAT_ROUTE_19_TRAINER_8              ; 4F9, (D7E6, bit 1)
+	const EVENT_BEAT_ROUTE_19_TRAINER_9              ; 4FA, (D7E6, bit 2)
+	const EVENT_4FB                                  ; 4FB, (D7E6, bit 3)
+	const EVENT_4FC                                  ; 4FC, (D7E6, bit 4)
+	const EVENT_4FD                                  ; 4FD, (D7E6, bit 5)
+	const EVENT_4FE                                  ; 4FE, (D7E6, bit 6)
+	const EVENT_4FF                                  ; 4FF, (D7E6, bit 7)
+	const EVENT_IN_SEAFOAM_ISLANDS                   ; 500, (D7E7, bit 0)
+	const EVENT_BEAT_ROUTE_20_TRAINER_0              ; 501, (D7E7, bit 1)
+	const EVENT_BEAT_ROUTE_20_TRAINER_2              ; 502, (D7E7, bit 2)
+	const EVENT_BEAT_ROUTE_20_TRAINER_3              ; 503, (D7E7, bit 3)
+	const EVENT_BEAT_ROUTE_20_TRAINER_4              ; 504, (D7E7, bit 4)
+	const EVENT_BEAT_ROUTE_20_TRAINER_5              ; 505, (D7E7, bit 5)
+	const EVENT_BEAT_ROUTE_20_TRAINER_6              ; 506, (D7E7, bit 6)
+	const EVENT_BEAT_ROUTE_20_TRAINER_7              ; 507, (D7E7, bit 7)
+	const EVENT_BEAT_ROUTE_20_TRAINER_8              ; 508, (D7E8, bit 0)
+	const EVENT_BEAT_ROUTE_20_TRAINER_9              ; 509, (D7E8, bit 1)
+	const EVENT_BEAT_ROUTE_20_TRAINER_10             ; 50A, (D7E8, bit 2)
+	const EVENT_50B                                  ; 50B, (D7E8, bit 3)
+	const EVENT_50C                                  ; 50C, (D7E8, bit 4)
+	const EVENT_50D                                  ; 50D, (D7E8, bit 5)
+	const EVENT_SEAFOAM1_BOULDER1_DOWN_HOLE          ; 50E, (D7E8, bit 6)
+	const EVENT_SEAFOAM1_BOULDER2_DOWN_HOLE          ; 50F, (D7E8, bit 7)
+	const EVENT_510                                  ; 510, (D7E9, bit 0)
+	const EVENT_BEAT_ROUTE_21_TRAINER_0              ; 511, (D7E9, bit 1)
+	const EVENT_BEAT_ROUTE_21_TRAINER_1              ; 512, (D7E9, bit 2)
+	const EVENT_BEAT_ROUTE_21_TRAINER_2              ; 513, (D7E9, bit 3)
+	const EVENT_BEAT_ROUTE_21_TRAINER_3              ; 514, (D7E9, bit 4)
+	const EVENT_BEAT_ROUTE_21_TRAINER_4              ; 515, (D7E9, bit 5)
+	const EVENT_BEAT_ROUTE_21_TRAINER_5              ; 516, (D7E9, bit 6)
+	const EVENT_BEAT_ROUTE_21_TRAINER_6              ; 517, (D7E9, bit 7)
+	const EVENT_BEAT_ROUTE_21_TRAINER_7              ; 518, (D7EA, bit 0)
+	const EVENT_BEAT_ROUTE_21_TRAINER_8              ; 519, (D7EA, bit 1)
+	const EVENT_51A                                  ; 51A, (D7EA, bit 2)
+	const EVENT_51B                                  ; 51B, (D7EA, bit 3)
+	const EVENT_51C                                  ; 51C, (D7EA, bit 4)
+	const EVENT_51D                                  ; 51D, (D7EA, bit 5)
+	const EVENT_51E                                  ; 51E, (D7EA, bit 6)
+	const EVENT_51F                                  ; 51F, (D7EA, bit 7)
+	const EVENT_1ST_ROUTE22_RIVAL_BATTLE             ; 520, (D7EB, bit 0)
+	const EVENT_2ND_ROUTE22_RIVAL_BATTLE             ; 521, (D7EB, bit 1)
+	const EVENT_522                                  ; 522, (D7EB, bit 2)
+	const EVENT_523                                  ; 523, (D7EB, bit 3)
+	const EVENT_524                                  ; 524, (D7EB, bit 4)
+	const EVENT_BEAT_ROUTE22_RIVAL_1ST_FIGHT         ; 525, (D7EB, bit 5)
+	const EVENT_BEAT_ROUTE22_RIVAL_2ND_FIGHT         ; 526, (D7EB, bit 6)
+	const EVENT_ROUTE22_RIVAL_WANTS_FIGHT            ; 527, (D7EB, bit 7)
+	const EVENT_528                                  ; 528, (D7EC, bit 0)
+	const EVENT_529                                  ; 529, (D7EC, bit 1)
+	const EVENT_52A                                  ; 52A, (D7EC, bit 2)
+	const EVENT_52B                                  ; 52B, (D7EC, bit 3)
+	const EVENT_52C                                  ; 52C, (D7EC, bit 4)
+	const EVENT_52D                                  ; 52D, (D7EC, bit 5)
+	const EVENT_52E                                  ; 52E, (D7EC, bit 6)
+	const EVENT_52F                                  ; 52F, (D7EC, bit 7)
+	const EVENT_PASSED_CASCADEBADGE_CHECK            ; 530, (D7ED, bit 0)
+	const EVENT_PASSED_THUNDERBADGE_CHECK            ; 531, (D7ED, bit 1)
+	const EVENT_PASSED_RAINBOWBADGE_CHECK            ; 532, (D7ED, bit 2)
+	const EVENT_PASSED_SOULBADGE_CHECK               ; 533, (D7ED, bit 3)
+	const EVENT_PASSED_MARSHBADGE_CHECK              ; 534, (D7ED, bit 4)
+	const EVENT_PASSED_VOLCANOBADGE_CHECK            ; 535, (D7ED, bit 5)
+	const EVENT_PASSED_EARTHBADGE_CHECK              ; 536, (D7ED, bit 6)
+	const EVENT_537                                  ; 537, (D7ED, bit 7)
+	const EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1    ; 538, (D7EE, bit 0)
+	const EVENT_BEAT_VICTORY_ROAD_2_TRAINER_0        ; 539, (D7EE, bit 1)
+	const EVENT_BEAT_VICTORY_ROAD_2_TRAINER_2        ; 53A, (D7EE, bit 2)
+	const EVENT_BEAT_VICTORY_ROAD_2_TRAINER_3        ; 53B, (D7EE, bit 3)
+	const EVENT_BEAT_VICTORY_ROAD_2_TRAINER_4        ; 53C, (D7EE, bit 4)
+	const EVENT_BEAT_VICTORY_ROAD_2_TRAINER_5        ; 53D, (D7EE, bit 5)
+	const EVENT_BEAT_VICTORY_ROAD_2_TRAINER_6        ; 53E, (D7EE, bit 6)
+	const EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH2    ; 53F, (D7EE, bit 7)
+	const EVENT_GOT_NUGGET                           ; 540, (D7EF, bit 0)
+	const EVENT_BEAT_ROUTE24_ROCKET                  ; 541, (D7EF, bit 1)
+	const EVENT_BEAT_ROUTE_24_TRAINER_0              ; 542, (D7EF, bit 2)
+	const EVENT_BEAT_ROUTE_24_TRAINER_2              ; 543, (D7EF, bit 3)
+	const EVENT_BEAT_ROUTE_24_TRAINER_3              ; 544, (D7EF, bit 4)
+	const EVENT_BEAT_ROUTE_24_TRAINER_4              ; 545, (D7EF, bit 5)
+	const EVENT_BEAT_ROUTE_24_TRAINER_5              ; 546, (D7EF, bit 6)
+	const EVENT_BEAT_ROUTE_24_TRAINER_6              ; 547, (D7EF, bit 7)
+	const EVENT_548                                  ; 548, (D7F0, bit 0)
+	const EVENT_NUGGET_REWARD_AVAILABLE              ; 549, (D7F0, bit 1)
+	const EVENT_54A                                  ; 54A, (D7F0, bit 2)
+	const EVENT_54B                                  ; 54B, (D7F0, bit 3)
+	const EVENT_54C                                  ; 54C, (D7F0, bit 4)
+	const EVENT_54D                                  ; 54D, (D7F0, bit 5)
+	const EVENT_54E                                  ; 54E, (D7F0, bit 6)
+	const EVENT_54F                                  ; 54F, (D7F0, bit 7)
+	const EVENT_MET_BILL                             ; 550, (D7F1, bit 0)
+	const EVENT_BEAT_ROUTE_25_TRAINER_0              ; 551, (D7F1, bit 1)
+	const EVENT_BEAT_ROUTE_25_TRAINER_2              ; 552, (D7F1, bit 2)
+	const EVENT_BEAT_ROUTE_25_TRAINER_3              ; 553, (D7F1, bit 3)
+	const EVENT_BEAT_ROUTE_25_TRAINER_4              ; 554, (D7F1, bit 4)
+	const EVENT_BEAT_ROUTE_25_TRAINER_5              ; 555, (D7F1, bit 5)
+	const EVENT_BEAT_ROUTE_25_TRAINER_6              ; 556, (D7F1, bit 6)
+	const EVENT_BEAT_ROUTE_25_TRAINER_7              ; 557, (D7F1, bit 7)
+	const EVENT_BEAT_ROUTE_25_TRAINER_8              ; 558, (D7F2, bit 0)
+	const EVENT_BEAT_ROUTE_25_TRAINER_9              ; 559, (D7F2, bit 1)
+	const EVENT_55A                                  ; 55A, (D7F2, bit 2)
+	const EVENT_USED_CELL_SEPARATOR_ON_BILL          ; 55B, (D7F2, bit 3)
+	const EVENT_GOT_SS_TICKET                        ; 55C, (D7F2, bit 4)
+	const EVENT_MET_BILL_2                           ; 55D, (D7F2, bit 5)
+	const EVENT_BILL_SAID_USE_CELL_SEPARATOR         ; 55E, (D7F2, bit 6)
+	const EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING       ; 55F, (D7F2, bit 7)
+	const EVENT_560                                  ; 560, (D7F3, bit 0)
+	const EVENT_561                                  ; 561, (D7F3, bit 1)
+	const EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_0       ; 562, (D7F3, bit 2)
+	const EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_1       ; 563, (D7F3, bit 3)
+	const EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_2       ; 564, (D7F3, bit 4)
+	const EVENT_565                                  ; 565, (D7F3, bit 5)
+	const EVENT_566                                  ; 566, (D7F3, bit 6)
+	const EVENT_567                                  ; 567, (D7F3, bit 7)
+	const EVENT_568                                  ; 568, (D7F4, bit 0)
+	const EVENT_569                                  ; 569, (D7F4, bit 1)
+	const EVENT_56A                                  ; 56A, (D7F4, bit 2)
+	const EVENT_56B                                  ; 56B, (D7F4, bit 3)
+	const EVENT_56C                                  ; 56C, (D7F4, bit 4)
+	const EVENT_56D                                  ; 56D, (D7F4, bit 5)
+	const EVENT_56E                                  ; 56E, (D7F4, bit 6)
+	const EVENT_56F                                  ; 56F, (D7F4, bit 7)
+	const EVENT_570                                  ; 570, (D7F5, bit 0)
+	const EVENT_BEAT_MT_MOON_1_TRAINER_0             ; 571, (D7F5, bit 1)
+	const EVENT_BEAT_MT_MOON_1_TRAINER_2             ; 572, (D7F5, bit 2)
+	const EVENT_BEAT_MT_MOON_1_TRAINER_3             ; 573, (D7F5, bit 3)
+	const EVENT_BEAT_MT_MOON_1_TRAINER_4             ; 574, (D7F5, bit 4)
+	const EVENT_BEAT_MT_MOON_1_TRAINER_5             ; 575, (D7F5, bit 5)
+	const EVENT_BEAT_MT_MOON_1_TRAINER_6             ; 576, (D7F5, bit 6)
+	const EVENT_BEAT_MT_MOON_1_TRAINER_7             ; 577, (D7F5, bit 7)
+	const EVENT_578                                  ; 578, (D7F6, bit 0)
+	const EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD         ; 579, (D7F6, bit 1)
+	const EVENT_BEAT_MT_MOON_3_TRAINER_0             ; 57A, (D7F6, bit 2)
+	const EVENT_BEAT_MT_MOON_3_TRAINER_2             ; 57B, (D7F6, bit 3)
+	const EVENT_BEAT_MT_MOON_3_TRAINER_3             ; 57C, (D7F6, bit 4)
+	const EVENT_BEAT_MT_MOON_3_TRAINER_4             ; 57D, (D7F6, bit 5)
+	const EVENT_GOT_DOME_FOSSIL                      ; 57E, (D7F6, bit 6)
+	const EVENT_GOT_HELIX_FOSSIL                     ; 57F, (D7F6, bit 7)
+	const EVENT_580                                  ; 580, (D7F7, bit 0)
+	const EVENT_581                                  ; 581, (D7F7, bit 1)
+	const EVENT_582                                  ; 582, (D7F7, bit 2)
+	const EVENT_583                                  ; 583, (D7F7, bit 3)
+	const EVENT_584                                  ; 584, (D7F7, bit 4)
+	const EVENT_585                                  ; 585, (D7F7, bit 5)
+	const EVENT_586                                  ; 586, (D7F7, bit 6)
+	const EVENT_587                                  ; 587, (D7F7, bit 7)
+	const EVENT_588                                  ; 588, (D7F8, bit 0)
+	const EVENT_589                                  ; 589, (D7F8, bit 1)
+	const EVENT_58A                                  ; 58A, (D7F8, bit 2)
+	const EVENT_58B                                  ; 58B, (D7F8, bit 3)
+	const EVENT_58C                                  ; 58C, (D7F8, bit 4)
+	const EVENT_58D                                  ; 58D, (D7F8, bit 5)
+	const EVENT_58E                                  ; 58E, (D7F8, bit 6)
+	const EVENT_58F                                  ; 58F, (D7F8, bit 7)
+	const EVENT_590                                  ; 590, (D7F9, bit 0)
+	const EVENT_591                                  ; 591, (D7F9, bit 1)
+	const EVENT_592                                  ; 592, (D7F9, bit 2)
+	const EVENT_593                                  ; 593, (D7F9, bit 3)
+	const EVENT_594                                  ; 594, (D7F9, bit 4)
+	const EVENT_595                                  ; 595, (D7F9, bit 5)
+	const EVENT_596                                  ; 596, (D7F9, bit 6)
+	const EVENT_597                                  ; 597, (D7F9, bit 7)
+	const EVENT_598                                  ; 598, (D7FA, bit 0)
+	const EVENT_599                                  ; 599, (D7FA, bit 1)
+	const EVENT_59A                                  ; 59A, (D7FA, bit 2)
+	const EVENT_59B                                  ; 59B, (D7FA, bit 3)
+	const EVENT_59C                                  ; 59C, (D7FA, bit 4)
+	const EVENT_59D                                  ; 59D, (D7FA, bit 5)
+	const EVENT_59E                                  ; 59E, (D7FA, bit 6)
+	const EVENT_59F                                  ; 59F, (D7FA, bit 7)
+	const EVENT_5A0                                  ; 5A0, (D7FB, bit 0)
+	const EVENT_5A1                                  ; 5A1, (D7FB, bit 1)
+	const EVENT_5A2                                  ; 5A2, (D7FB, bit 2)
+	const EVENT_5A3                                  ; 5A3, (D7FB, bit 3)
+	const EVENT_5A4                                  ; 5A4, (D7FB, bit 4)
+	const EVENT_5A5                                  ; 5A5, (D7FB, bit 5)
+	const EVENT_5A6                                  ; 5A6, (D7FB, bit 6)
+	const EVENT_5A7                                  ; 5A7, (D7FB, bit 7)
+	const EVENT_5A8                                  ; 5A8, (D7FC, bit 0)
+	const EVENT_5A9                                  ; 5A9, (D7FC, bit 1)
+	const EVENT_5AA                                  ; 5AA, (D7FC, bit 2)
+	const EVENT_5AB                                  ; 5AB, (D7FC, bit 3)
+	const EVENT_5AC                                  ; 5AC, (D7FC, bit 4)
+	const EVENT_5AD                                  ; 5AD, (D7FC, bit 5)
+	const EVENT_5AE                                  ; 5AE, (D7FC, bit 6)
+	const EVENT_5AF                                  ; 5AF, (D7FC, bit 7)
+	const EVENT_5B0                                  ; 5B0, (D7FD, bit 0)
+	const EVENT_5B1                                  ; 5B1, (D7FD, bit 1)
+	const EVENT_5B2                                  ; 5B2, (D7FD, bit 2)
+	const EVENT_5B3                                  ; 5B3, (D7FD, bit 3)
+	const EVENT_5B4                                  ; 5B4, (D7FD, bit 4)
+	const EVENT_5B5                                  ; 5B5, (D7FD, bit 5)
+	const EVENT_5B6                                  ; 5B6, (D7FD, bit 6)
+	const EVENT_5B7                                  ; 5B7, (D7FD, bit 7)
+	const EVENT_5B8                                  ; 5B8, (D7FE, bit 0)
+	const EVENT_5B9                                  ; 5B9, (D7FE, bit 1)
+	const EVENT_5BA                                  ; 5BA, (D7FE, bit 2)
+	const EVENT_5BB                                  ; 5BB, (D7FE, bit 3)
+	const EVENT_5BC                                  ; 5BC, (D7FE, bit 4)
+	const EVENT_5BD                                  ; 5BD, (D7FE, bit 5)
+	const EVENT_5BE                                  ; 5BE, (D7FE, bit 6)
+	const EVENT_5BF                                  ; 5BF, (D7FE, bit 7)
+	const EVENT_5C0                                  ; 5C0, (D7FF, bit 0)
+	const EVENT_5C1                                  ; 5C1, (D7FF, bit 1)
+	const EVENT_5C2                                  ; 5C2, (D7FF, bit 2)
+	const EVENT_5C3                                  ; 5C3, (D7FF, bit 3)
+	const EVENT_BEAT_SS_ANNE_5_TRAINER_0             ; 5C4, (D7FF, bit 4)
+	const EVENT_BEAT_SS_ANNE_5_TRAINER_1             ; 5C5, (D7FF, bit 5)
+	const EVENT_5C6                                  ; 5C6, (D7FF, bit 6)
+	const EVENT_5C7                                  ; 5C7, (D7FF, bit 7)
+	const EVENT_5C8                                  ; 5C8, (D800, bit 0)
+	const EVENT_5C9                                  ; 5C9, (D800, bit 1)
+	const EVENT_5CA                                  ; 5CA, (D800, bit 2)
+	const EVENT_5CB                                  ; 5CB, (D800, bit 3)
+	const EVENT_5CC                                  ; 5CC, (D800, bit 4)
+	const EVENT_5CD                                  ; 5CD, (D800, bit 5)
+	const EVENT_5CE                                  ; 5CE, (D800, bit 6)
+	const EVENT_5CF                                  ; 5CF, (D800, bit 7)
+	const EVENT_5D0                                  ; 5D0, (D801, bit 0)
+	const EVENT_5D1                                  ; 5D1, (D801, bit 1)
+	const EVENT_5D2                                  ; 5D2, (D801, bit 2)
+	const EVENT_5D3                                  ; 5D3, (D801, bit 3)
+	const EVENT_5D4                                  ; 5D4, (D801, bit 4)
+	const EVENT_5D5                                  ; 5D5, (D801, bit 5)
+	const EVENT_5D6                                  ; 5D6, (D801, bit 6)
+	const EVENT_5D7                                  ; 5D7, (D801, bit 7)
+	const EVENT_5D8                                  ; 5D8, (D802, bit 0)
+	const EVENT_5D9                                  ; 5D9, (D802, bit 1)
+	const EVENT_5DA                                  ; 5DA, (D802, bit 2)
+	const EVENT_5DB                                  ; 5DB, (D802, bit 3)
+	const EVENT_5DC                                  ; 5DC, (D802, bit 4)
+	const EVENT_5DD                                  ; 5DD, (D802, bit 5)
+	const EVENT_5DE                                  ; 5DE, (D802, bit 6)
+	const EVENT_5DF                                  ; 5DF, (D802, bit 7)
+	const EVENT_GOT_HM01                             ; 5E0, (D803, bit 0)
+	const EVENT_RUBBED_CAPTAINS_BACK                 ; 5E1, (D803, bit 1)
+	const EVENT_SS_ANNE_LEFT                         ; 5E2, (D803, bit 2)
+	const EVENT_WALKED_PAST_GUARD_AFTER_SS_ANNE_LEFT ; 5E3, (D803, bit 3)
+	const EVENT_STARTED_WALKING_OUT_OF_DOCK          ; 5E4, (D803, bit 4)
+	const EVENT_WALKED_OUT_OF_DOCK                   ; 5E5, (D803, bit 5)
+	const EVENT_5E6                                  ; 5E6, (D803, bit 6)
+	const EVENT_5E7                                  ; 5E7, (D803, bit 7)
+	const EVENT_5E8                                  ; 5E8, (D804, bit 0)
+	const EVENT_5E9                                  ; 5E9, (D804, bit 1)
+	const EVENT_5EA                                  ; 5EA, (D804, bit 2)
+	const EVENT_5EB                                  ; 5EB, (D804, bit 3)
+	const EVENT_5EC                                  ; 5EC, (D804, bit 4)
+	const EVENT_5ED                                  ; 5ED, (D804, bit 5)
+	const EVENT_5EE                                  ; 5EE, (D804, bit 6)
+	const EVENT_5EF                                  ; 5EF, (D804, bit 7)
+	const EVENT_5F0                                  ; 5F0, (D805, bit 0)
+	const EVENT_BEAT_SS_ANNE_8_TRAINER_0             ; 5F1, (D805, bit 1)
+	const EVENT_BEAT_SS_ANNE_8_TRAINER_1             ; 5F2, (D805, bit 2)
+	const EVENT_BEAT_SS_ANNE_8_TRAINER_2             ; 5F3, (D805, bit 3)
+	const EVENT_BEAT_SS_ANNE_8_TRAINER_3             ; 5F4, (D805, bit 4)
+	const EVENT_5F5                                  ; 5F5, (D805, bit 5)
+	const EVENT_5F6                                  ; 5F6, (D805, bit 6)
+	const EVENT_5F7                                  ; 5F7, (D805, bit 7)
+	const EVENT_5F8                                  ; 5F8, (D806, bit 0)
+	const EVENT_5F9                                  ; 5F9, (D806, bit 1)
+	const EVENT_5FA                                  ; 5FA, (D806, bit 2)
+	const EVENT_5FB                                  ; 5FB, (D806, bit 3)
+	const EVENT_5FC                                  ; 5FC, (D806, bit 4)
+	const EVENT_5FD                                  ; 5FD, (D806, bit 5)
+	const EVENT_5FE                                  ; 5FE, (D806, bit 6)
+	const EVENT_5FF                                  ; 5FF, (D806, bit 7)
+	const EVENT_600                                  ; 600, (D807, bit 0)
+	const EVENT_BEAT_SS_ANNE_9_TRAINER_0             ; 601, (D807, bit 1)
+	const EVENT_BEAT_SS_ANNE_9_TRAINER_1             ; 602, (D807, bit 2)
+	const EVENT_BEAT_SS_ANNE_9_TRAINER_2             ; 603, (D807, bit 3)
+	const EVENT_BEAT_SS_ANNE_9_TRAINER_3             ; 604, (D807, bit 4)
+	const EVENT_605                                  ; 605, (D807, bit 5)
+	const EVENT_606                                  ; 606, (D807, bit 6)
+	const EVENT_607                                  ; 607, (D807, bit 7)
+	const EVENT_608                                  ; 608, (D808, bit 0)
+	const EVENT_609                                  ; 609, (D808, bit 1)
+	const EVENT_60A                                  ; 60A, (D808, bit 2)
+	const EVENT_60B                                  ; 60B, (D808, bit 3)
+	const EVENT_60C                                  ; 60C, (D808, bit 4)
+	const EVENT_60D                                  ; 60D, (D808, bit 5)
+	const EVENT_60E                                  ; 60E, (D808, bit 6)
+	const EVENT_60F                                  ; 60F, (D808, bit 7)
+	const EVENT_610                                  ; 610, (D809, bit 0)
+	const EVENT_BEAT_SS_ANNE_10_TRAINER_0            ; 611, (D809, bit 1)
+	const EVENT_BEAT_SS_ANNE_10_TRAINER_1            ; 612, (D809, bit 2)
+	const EVENT_BEAT_SS_ANNE_10_TRAINER_2            ; 613, (D809, bit 3)
+	const EVENT_BEAT_SS_ANNE_10_TRAINER_3            ; 614, (D809, bit 4)
+	const EVENT_BEAT_SS_ANNE_10_TRAINER_4            ; 615, (D809, bit 5)
+	const EVENT_BEAT_SS_ANNE_10_TRAINER_5            ; 616, (D809, bit 6)
+	const EVENT_617                                  ; 617, (D809, bit 7)
+	const EVENT_618                                  ; 618, (D80A, bit 0)
+	const EVENT_619                                  ; 619, (D80A, bit 1)
+	const EVENT_61A                                  ; 61A, (D80A, bit 2)
+	const EVENT_61B                                  ; 61B, (D80A, bit 3)
+	const EVENT_61C                                  ; 61C, (D80A, bit 4)
+	const EVENT_61D                                  ; 61D, (D80A, bit 5)
+	const EVENT_61E                                  ; 61E, (D80A, bit 6)
+	const EVENT_61F                                  ; 61F, (D80A, bit 7)
+	const EVENT_620                                  ; 620, (D80B, bit 0)
+	const EVENT_621                                  ; 621, (D80B, bit 1)
+	const EVENT_622                                  ; 622, (D80B, bit 2)
+	const EVENT_623                                  ; 623, (D80B, bit 3)
+	const EVENT_624                                  ; 624, (D80B, bit 4)
+	const EVENT_625                                  ; 625, (D80B, bit 5)
+	const EVENT_626                                  ; 626, (D80B, bit 6)
+	const EVENT_627                                  ; 627, (D80B, bit 7)
+	const EVENT_628                                  ; 628, (D80C, bit 0)
+	const EVENT_629                                  ; 629, (D80C, bit 1)
+	const EVENT_62A                                  ; 62A, (D80C, bit 2)
+	const EVENT_62B                                  ; 62B, (D80C, bit 3)
+	const EVENT_62C                                  ; 62C, (D80C, bit 4)
+	const EVENT_62D                                  ; 62D, (D80C, bit 5)
+	const EVENT_62E                                  ; 62E, (D80C, bit 6)
+	const EVENT_62F                                  ; 62F, (D80C, bit 7)
+	const EVENT_630                                  ; 630, (D80D, bit 0)
+	const EVENT_631                                  ; 631, (D80D, bit 1)
+	const EVENT_632                                  ; 632, (D80D, bit 2)
+	const EVENT_633                                  ; 633, (D80D, bit 3)
+	const EVENT_634                                  ; 634, (D80D, bit 4)
+	const EVENT_635                                  ; 635, (D80D, bit 5)
+	const EVENT_636                                  ; 636, (D80D, bit 6)
+	const EVENT_637                                  ; 637, (D80D, bit 7)
+	const EVENT_638                                  ; 638, (D80E, bit 0)
+	const EVENT_639                                  ; 639, (D80E, bit 1)
+	const EVENT_63A                                  ; 63A, (D80E, bit 2)
+	const EVENT_63B                                  ; 63B, (D80E, bit 3)
+	const EVENT_63C                                  ; 63C, (D80E, bit 4)
+	const EVENT_63D                                  ; 63D, (D80E, bit 5)
+	const EVENT_63E                                  ; 63E, (D80E, bit 6)
+	const EVENT_63F                                  ; 63F, (D80E, bit 7)
+	const EVENT_640                                  ; 640, (D80F, bit 0)
+	const EVENT_641                                  ; 641, (D80F, bit 1)
+	const EVENT_642                                  ; 642, (D80F, bit 2)
+	const EVENT_643                                  ; 643, (D80F, bit 3)
+	const EVENT_644                                  ; 644, (D80F, bit 4)
+	const EVENT_645                                  ; 645, (D80F, bit 5)
+	const EVENT_646                                  ; 646, (D80F, bit 6)
+	const EVENT_647                                  ; 647, (D80F, bit 7)
+	const EVENT_648                                  ; 648, (D810, bit 0)
+	const EVENT_649                                  ; 649, (D810, bit 1)
+	const EVENT_64A                                  ; 64A, (D810, bit 2)
+	const EVENT_64B                                  ; 64B, (D810, bit 3)
+	const EVENT_64C                                  ; 64C, (D810, bit 4)
+	const EVENT_64D                                  ; 64D, (D810, bit 5)
+	const EVENT_64E                                  ; 64E, (D810, bit 6)
+	const EVENT_64F                                  ; 64F, (D810, bit 7)
+	const EVENT_650                                  ; 650, (D811, bit 0)
+	const EVENT_651                                  ; 651, (D811, bit 1)
+	const EVENT_652                                  ; 652, (D811, bit 2)
+	const EVENT_653                                  ; 653, (D811, bit 3)
+	const EVENT_654                                  ; 654, (D811, bit 4)
+	const EVENT_655                                  ; 655, (D811, bit 5)
+	const EVENT_656                                  ; 656, (D811, bit 6)
+	const EVENT_657                                  ; 657, (D811, bit 7)
+	const EVENT_658                                  ; 658, (D812, bit 0)
+	const EVENT_659                                  ; 659, (D812, bit 1)
+	const EVENT_65A                                  ; 65A, (D812, bit 2)
+	const EVENT_65B                                  ; 65B, (D812, bit 3)
+	const EVENT_65C                                  ; 65C, (D812, bit 4)
+	const EVENT_65D                                  ; 65D, (D812, bit 5)
+	const EVENT_65E                                  ; 65E, (D812, bit 6)
+	const EVENT_65F                                  ; 65F, (D812, bit 7)
+	const EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH1    ; 660, (D813, bit 0)
+	const EVENT_BEAT_VICTORY_ROAD_3_TRAINER_0        ; 661, (D813, bit 1)
+	const EVENT_BEAT_VICTORY_ROAD_3_TRAINER_2        ; 662, (D813, bit 2)
+	const EVENT_BEAT_VICTORY_ROAD_3_TRAINER_3        ; 663, (D813, bit 3)
+	const EVENT_BEAT_VICTORY_ROAD_3_TRAINER_4        ; 664, (D813, bit 4)
+	const EVENT_665                                  ; 665, (D813, bit 5)
+	const EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH2    ; 666, (D813, bit 6)
+	const EVENT_667                                  ; 667, (D813, bit 7)
+	const EVENT_668                                  ; 668, (D814, bit 0)
+	const EVENT_669                                  ; 669, (D814, bit 1)
+	const EVENT_66A                                  ; 66A, (D814, bit 2)
+	const EVENT_66B                                  ; 66B, (D814, bit 3)
+	const EVENT_66C                                  ; 66C, (D814, bit 4)
+	const EVENT_66D                                  ; 66D, (D814, bit 5)
+	const EVENT_66E                                  ; 66E, (D814, bit 6)
+	const EVENT_66F                                  ; 66F, (D814, bit 7)
+	const EVENT_670                                  ; 670, (D815, bit 0)
+	const EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_0      ; 671, (D815, bit 1)
+	const EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_2      ; 672, (D815, bit 2)
+	const EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_3      ; 673, (D815, bit 3)
+	const EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_4      ; 674, (D815, bit 4)
+	const EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_5      ; 675, (D815, bit 5)
+	const EVENT_676                                  ; 676, (D815, bit 6)
+	const EVENT_677                                  ; 677, (D815, bit 7)
+	const EVENT_678                                  ; 678, (D816, bit 0)
+	const EVENT_679                                  ; 679, (D816, bit 1)
+	const EVENT_67A                                  ; 67A, (D816, bit 2)
+	const EVENT_67B                                  ; 67B, (D816, bit 3)
+	const EVENT_67C                                  ; 67C, (D816, bit 4)
+	const EVENT_67D                                  ; 67D, (D816, bit 5)
+	const EVENT_67E                                  ; 67E, (D816, bit 6)
+	const EVENT_67F                                  ; 67F, (D816, bit 7)
+	const EVENT_680                                  ; 680, (D817, bit 0)
+	const EVENT_BEAT_ROCKET_HIDEOUT_2_TRAINER_0      ; 681, (D817, bit 1)
+	const EVENT_682                                  ; 682, (D817, bit 2)
+	const EVENT_683                                  ; 683, (D817, bit 3)
+	const EVENT_684                                  ; 684, (D817, bit 4)
+	const EVENT_685                                  ; 685, (D817, bit 5)
+	const EVENT_686                                  ; 686, (D817, bit 6)
+	const EVENT_687                                  ; 687, (D817, bit 7)
+	const EVENT_688                                  ; 688, (D818, bit 0)
+	const EVENT_689                                  ; 689, (D818, bit 1)
+	const EVENT_68A                                  ; 68A, (D818, bit 2)
+	const EVENT_68B                                  ; 68B, (D818, bit 3)
+	const EVENT_68C                                  ; 68C, (D818, bit 4)
+	const EVENT_68D                                  ; 68D, (D818, bit 5)
+	const EVENT_68E                                  ; 68E, (D818, bit 6)
+	const EVENT_68F                                  ; 68F, (D818, bit 7)
+	const EVENT_690                                  ; 690, (D819, bit 0)
+	const EVENT_BEAT_ROCKET_HIDEOUT_3_TRAINER_0      ; 691, (D819, bit 1)
+	const EVENT_BEAT_ROCKET_HIDEOUT_3_TRAINER_2      ; 692, (D819, bit 2)
+	const EVENT_693                                  ; 693, (D819, bit 3)
+	const EVENT_694                                  ; 694, (D819, bit 4)
+	const EVENT_695                                  ; 695, (D819, bit 5)
+	const EVENT_696                                  ; 696, (D819, bit 6)
+	const EVENT_697                                  ; 697, (D819, bit 7)
+	const EVENT_698                                  ; 698, (D81A, bit 0)
+	const EVENT_699                                  ; 699, (D81A, bit 1)
+	const EVENT_69A                                  ; 69A, (D81A, bit 2)
+	const EVENT_69B                                  ; 69B, (D81A, bit 3)
+	const EVENT_69C                                  ; 69C, (D81A, bit 4)
+	const EVENT_69D                                  ; 69D, (D81A, bit 5)
+	const EVENT_69E                                  ; 69E, (D81A, bit 6)
+	const EVENT_69F                                  ; 69F, (D81A, bit 7)
+	const EVENT_6A0                                  ; 6A0, (D81B, bit 0)
+	const EVENT_6A1                                  ; 6A1, (D81B, bit 1)
+	const EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0      ; 6A2, (D81B, bit 2)
+	const EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2      ; 6A3, (D81B, bit 3)
+	const EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_3      ; 6A4, (D81B, bit 4)
+	const EVENT_ROCKET_HIDEOUT_4_DOOR_UNLOCKED       ; 6A5, (D81B, bit 5)
+	const EVENT_ROCKET_DROPPED_LIFT_KEY              ; 6A6, (D81B, bit 6)
+	const EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI         ; 6A7, (D81B, bit 7)
+	const EVENT_6A8                                  ; 6A8, (D81C, bit 0)
+	const EVENT_6A9                                  ; 6A9, (D81C, bit 1)
+	const EVENT_6AA                                  ; 6AA, (D81C, bit 2)
+	const EVENT_6AB                                  ; 6AB, (D81C, bit 3)
+	const EVENT_6AC                                  ; 6AC, (D81C, bit 4)
+	const EVENT_6AD                                  ; 6AD, (D81C, bit 5)
+	const EVENT_6AE                                  ; 6AE, (D81C, bit 6)
+	const EVENT_6AF                                  ; 6AF, (D81C, bit 7)
+	const EVENT_6B0                                  ; 6B0, (D81D, bit 0)
+	const EVENT_6B1                                  ; 6B1, (D81D, bit 1)
+	const EVENT_6B2                                  ; 6B2, (D81D, bit 2)
+	const EVENT_6B3                                  ; 6B3, (D81D, bit 3)
+	const EVENT_6B4                                  ; 6B4, (D81D, bit 4)
+	const EVENT_6B5                                  ; 6B5, (D81D, bit 5)
+	const EVENT_6B6                                  ; 6B6, (D81D, bit 6)
+	const EVENT_6B7                                  ; 6B7, (D81D, bit 7)
+	const EVENT_6B8                                  ; 6B8, (D81E, bit 0)
+	const EVENT_6B9                                  ; 6B9, (D81E, bit 1)
+	const EVENT_6BA                                  ; 6BA, (D81E, bit 2)
+	const EVENT_6BB                                  ; 6BB, (D81E, bit 3)
+	const EVENT_6BC                                  ; 6BC, (D81E, bit 4)
+	const EVENT_6BD                                  ; 6BD, (D81E, bit 5)
+	const EVENT_6BE                                  ; 6BE, (D81E, bit 6)
+	const EVENT_6BF                                  ; 6BF, (D81E, bit 7)
+	const EVENT_6C0                                  ; 6C0, (D81F, bit 0)
+	const EVENT_6C1                                  ; 6C1, (D81F, bit 1)
+	const EVENT_6C2                                  ; 6C2, (D81F, bit 2)
+	const EVENT_6C3                                  ; 6C3, (D81F, bit 3)
+	const EVENT_6C4                                  ; 6C4, (D81F, bit 4)
+	const EVENT_6C5                                  ; 6C5, (D81F, bit 5)
+	const EVENT_6C6                                  ; 6C6, (D81F, bit 6)
+	const EVENT_6C7                                  ; 6C7, (D81F, bit 7)
+	const EVENT_6C8                                  ; 6C8, (D820, bit 0)
+	const EVENT_6C9                                  ; 6C9, (D820, bit 1)
+	const EVENT_6CA                                  ; 6CA, (D820, bit 2)
+	const EVENT_6CB                                  ; 6CB, (D820, bit 3)
+	const EVENT_6CC                                  ; 6CC, (D820, bit 4)
+	const EVENT_6CD                                  ; 6CD, (D820, bit 5)
+	const EVENT_6CE                                  ; 6CE, (D820, bit 6)
+	const EVENT_6CF                                  ; 6CF, (D820, bit 7)
+	const EVENT_6D0                                  ; 6D0, (D821, bit 0)
+	const EVENT_6D1                                  ; 6D1, (D821, bit 1)
+	const EVENT_6D2                                  ; 6D2, (D821, bit 2)
+	const EVENT_6D3                                  ; 6D3, (D821, bit 3)
+	const EVENT_6D4                                  ; 6D4, (D821, bit 4)
+	const EVENT_6D5                                  ; 6D5, (D821, bit 5)
+	const EVENT_6D6                                  ; 6D6, (D821, bit 6)
+	const EVENT_6D7                                  ; 6D7, (D821, bit 7)
+	const EVENT_6D8                                  ; 6D8, (D822, bit 0)
+	const EVENT_6D9                                  ; 6D9, (D822, bit 1)
+	const EVENT_6DA                                  ; 6DA, (D822, bit 2)
+	const EVENT_6DB                                  ; 6DB, (D822, bit 3)
+	const EVENT_6DC                                  ; 6DC, (D822, bit 4)
+	const EVENT_6DD                                  ; 6DD, (D822, bit 5)
+	const EVENT_6DE                                  ; 6DE, (D822, bit 6)
+	const EVENT_6DF                                  ; 6DF, (D822, bit 7)
+	const EVENT_6E0                                  ; 6E0, (D823, bit 0)
+	const EVENT_6E1                                  ; 6E1, (D823, bit 1)
+	const EVENT_6E2                                  ; 6E2, (D823, bit 2)
+	const EVENT_6E3                                  ; 6E3, (D823, bit 3)
+	const EVENT_6E4                                  ; 6E4, (D823, bit 4)
+	const EVENT_6E5                                  ; 6E5, (D823, bit 5)
+	const EVENT_6E6                                  ; 6E6, (D823, bit 6)
+	const EVENT_6E7                                  ; 6E7, (D823, bit 7)
+	const EVENT_6E8                                  ; 6E8, (D824, bit 0)
+	const EVENT_6E9                                  ; 6E9, (D824, bit 1)
+	const EVENT_6EA                                  ; 6EA, (D824, bit 2)
+	const EVENT_6EB                                  ; 6EB, (D824, bit 3)
+	const EVENT_6EC                                  ; 6EC, (D824, bit 4)
+	const EVENT_6ED                                  ; 6ED, (D824, bit 5)
+	const EVENT_6EE                                  ; 6EE, (D824, bit 6)
+	const EVENT_6EF                                  ; 6EF, (D824, bit 7)
+	const EVENT_6F0                                  ; 6F0, (D825, bit 0)
+	const EVENT_6F1                                  ; 6F1, (D825, bit 1)
+	const EVENT_BEAT_SILPH_CO_2F_TRAINER_0           ; 6F2, (D825, bit 2)
+	const EVENT_BEAT_SILPH_CO_2F_TRAINER_1           ; 6F3, (D825, bit 3)
+	const EVENT_BEAT_SILPH_CO_2F_TRAINER_2           ; 6F4, (D825, bit 4)
+	const EVENT_BEAT_SILPH_CO_2F_TRAINER_3           ; 6F5, (D825, bit 5)
+	const EVENT_6F6                                  ; 6F6, (D825, bit 6)
+	const EVENT_6F7                                  ; 6F7, (D825, bit 7)
+	const EVENT_6F8                                  ; 6F8, (D826, bit 0)
+	const EVENT_6F9                                  ; 6F9, (D826, bit 1)
+	const EVENT_6FA                                  ; 6FA, (D826, bit 2)
+	const EVENT_6FB                                  ; 6FB, (D826, bit 3)
+	const EVENT_6FC                                  ; 6FC, (D826, bit 4)
+	const EVENT_SILPH_CO_2_UNLOCKED_DOOR1            ; 6FD, (D826, bit 5)
+	const EVENT_SILPH_CO_2_UNLOCKED_DOOR2            ; 6FE, (D826, bit 6)
+	const EVENT_GOT_TM36                             ; 6FF, (D826, bit 7)
+	const EVENT_700                                  ; 700, (D827, bit 0)
+	const EVENT_701                                  ; 701, (D827, bit 1)
+	const EVENT_BEAT_SILPH_CO_3F_TRAINER_0           ; 702, (D827, bit 2)
+	const EVENT_BEAT_SILPH_CO_3F_TRAINER_1           ; 703, (D827, bit 3)
+	const EVENT_704                                  ; 704, (D827, bit 4)
+	const EVENT_705                                  ; 705, (D827, bit 5)
+	const EVENT_706                                  ; 706, (D827, bit 6)
+	const EVENT_707                                  ; 707, (D827, bit 7)
+	const EVENT_SILPH_CO_3_UNLOCKED_DOOR1            ; 708, (D828, bit 0)
+	const EVENT_SILPH_CO_3_UNLOCKED_DOOR2            ; 709, (D828, bit 1)
+	const EVENT_70A                                  ; 70A, (D828, bit 2)
+	const EVENT_70B                                  ; 70B, (D828, bit 3)
+	const EVENT_70C                                  ; 70C, (D828, bit 4)
+	const EVENT_70D                                  ; 70D, (D828, bit 5)
+	const EVENT_70E                                  ; 70E, (D828, bit 6)
+	const EVENT_70F                                  ; 70F, (D828, bit 7)
+	const EVENT_710                                  ; 710, (D829, bit 0)
+	const EVENT_711                                  ; 711, (D829, bit 1)
+	const EVENT_BEAT_SILPH_CO_4F_TRAINER_0           ; 712, (D829, bit 2)
+	const EVENT_BEAT_SILPH_CO_4F_TRAINER_2           ; 713, (D829, bit 3)
+	const EVENT_BEAT_SILPH_CO_4F_TRAINER_3           ; 714, (D829, bit 4)
+	const EVENT_715                                  ; 715, (D829, bit 5)
+	const EVENT_716                                  ; 716, (D829, bit 6)
+	const EVENT_717                                  ; 717, (D829, bit 7)
+	const EVENT_SILPH_CO_4_UNLOCKED_DOOR1            ; 718, (D82A, bit 0)
+	const EVENT_SILPH_CO_4_UNLOCKED_DOOR2            ; 719, (D82A, bit 1)
+	const EVENT_71A                                  ; 71A, (D82A, bit 2)
+	const EVENT_71B                                  ; 71B, (D82A, bit 3)
+	const EVENT_71C                                  ; 71C, (D82A, bit 4)
+	const EVENT_71D                                  ; 71D, (D82A, bit 5)
+	const EVENT_71E                                  ; 71E, (D82A, bit 6)
+	const EVENT_71F                                  ; 71F, (D82A, bit 7)
+	const EVENT_720                                  ; 720, (D82B, bit 0)
+	const EVENT_721                                  ; 721, (D82B, bit 1)
+	const EVENT_BEAT_SILPH_CO_5F_TRAINER_0           ; 722, (D82B, bit 2)
+	const EVENT_BEAT_SILPH_CO_5F_TRAINER_2           ; 723, (D82B, bit 3)
+	const EVENT_BEAT_SILPH_CO_5F_TRAINER_3           ; 724, (D82B, bit 4)
+	const EVENT_BEAT_SILPH_CO_5F_TRAINER_4           ; 725, (D82B, bit 5)
+	const EVENT_726                                  ; 726, (D82B, bit 6)
+	const EVENT_727                                  ; 727, (D82B, bit 7)
+	const EVENT_SILPH_CO_5_UNLOCKED_DOOR1            ; 728, (D82C, bit 0)
+	const EVENT_SILPH_CO_5_UNLOCKED_DOOR2            ; 729, (D82C, bit 1)
+	const EVENT_SILPH_CO_5_UNLOCKED_DOOR3            ; 72A, (D82C, bit 2)
+	const EVENT_72B                                  ; 72B, (D82C, bit 3)
+	const EVENT_72C                                  ; 72C, (D82C, bit 4)
+	const EVENT_72D                                  ; 72D, (D82C, bit 5)
+	const EVENT_72E                                  ; 72E, (D82C, bit 6)
+	const EVENT_72F                                  ; 72F, (D82C, bit 7)
+	const EVENT_730                                  ; 730, (D82D, bit 0)
+	const EVENT_731                                  ; 731, (D82D, bit 1)
+	const EVENT_732                                  ; 732, (D82D, bit 2)
+	const EVENT_733                                  ; 733, (D82D, bit 3)
+	const EVENT_734                                  ; 734, (D82D, bit 4)
+	const EVENT_735                                  ; 735, (D82D, bit 5)
+	const EVENT_BEAT_SILPH_CO_6F_TRAINER_0           ; 736, (D82D, bit 6)
+	const EVENT_BEAT_SILPH_CO_6F_TRAINER_2           ; 737, (D82D, bit 7)
+	const EVENT_BEAT_SILPH_CO_6F_TRAINER_3           ; 738, (D82E, bit 0)
+	const EVENT_739                                  ; 739, (D82E, bit 1)
+	const EVENT_73A                                  ; 73A, (D82E, bit 2)
+	const EVENT_73B                                  ; 73B, (D82E, bit 3)
+	const EVENT_73C                                  ; 73C, (D82E, bit 4)
+	const EVENT_73D                                  ; 73D, (D82E, bit 5)
+	const EVENT_73E                                  ; 73E, (D82E, bit 6)
+	const EVENT_SILPH_CO_6_UNLOCKED_DOOR             ; 73F, (D82E, bit 7)
+	const EVENT_BEAT_SILPH_CO_RIVAL                  ; 740, (D82F, bit 0)
+	const EVENT_741                                  ; 741, (D82F, bit 1)
+	const EVENT_742                                  ; 742, (D82F, bit 2)
+	const EVENT_743                                  ; 743, (D82F, bit 3)
+	const EVENT_744                                  ; 744, (D82F, bit 4)
+	const EVENT_BEAT_SILPH_CO_7F_TRAINER_0           ; 745, (D82F, bit 5)
+	const EVENT_BEAT_SILPH_CO_7F_TRAINER_2           ; 746, (D82F, bit 6)
+	const EVENT_BEAT_SILPH_CO_7F_TRAINER_3           ; 747, (D82F, bit 7)
+	const EVENT_BEAT_SILPH_CO_7F_TRAINER_4           ; 748, (D830, bit 0)
+	const EVENT_749                                  ; 749, (D830, bit 1)
+	const EVENT_74A                                  ; 74A, (D830, bit 2)
+	const EVENT_74B                                  ; 74B, (D830, bit 3)
+	const EVENT_SILPH_CO_7_UNLOCKED_DOOR1            ; 74C, (D830, bit 4)
+	const EVENT_SILPH_CO_7_UNLOCKED_DOOR2            ; 74D, (D830, bit 5)
+	const EVENT_SILPH_CO_7_UNLOCKED_DOOR3            ; 74E, (D830, bit 6)
+	const EVENT_74F                                  ; 74F, (D830, bit 7)
+	const EVENT_750                                  ; 750, (D831, bit 0)
+	const EVENT_751                                  ; 751, (D831, bit 1)
+	const EVENT_BEAT_SILPH_CO_8F_TRAINER_0           ; 752, (D831, bit 2)
+	const EVENT_BEAT_SILPH_CO_8F_TRAINER_1           ; 753, (D831, bit 3)
+	const EVENT_BEAT_SILPH_CO_8F_TRAINER_2           ; 754, (D831, bit 4)
+	const EVENT_755                                  ; 755, (D831, bit 5)
+	const EVENT_756                                  ; 756, (D831, bit 6)
+	const EVENT_757                                  ; 757, (D831, bit 7)
+	const EVENT_SILPH_CO_8_UNLOCKED_DOOR             ; 758, (D832, bit 0)
+	const EVENT_759                                  ; 759, (D832, bit 1)
+	const EVENT_75A                                  ; 75A, (D832, bit 2)
+	const EVENT_75B                                  ; 75B, (D832, bit 3)
+	const EVENT_75C                                  ; 75C, (D832, bit 4)
+	const EVENT_75D                                  ; 75D, (D832, bit 5)
+	const EVENT_75E                                  ; 75E, (D832, bit 6)
+	const EVENT_75F                                  ; 75F, (D832, bit 7)
+	const EVENT_760                                  ; 760, (D833, bit 0)
+	const EVENT_761                                  ; 761, (D833, bit 1)
+	const EVENT_BEAT_SILPH_CO_9F_TRAINER_0           ; 762, (D833, bit 2)
+	const EVENT_BEAT_SILPH_CO_9F_TRAINER_1           ; 763, (D833, bit 3)
+	const EVENT_BEAT_SILPH_CO_9F_TRAINER_2           ; 764, (D833, bit 4)
+	const EVENT_765                                  ; 765, (D833, bit 5)
+	const EVENT_766                                  ; 766, (D833, bit 6)
+	const EVENT_767                                  ; 767, (D833, bit 7)
+	const EVENT_SILPH_CO_9_UNLOCKED_DOOR1            ; 768, (D834, bit 0)
+	const EVENT_SILPH_CO_9_UNLOCKED_DOOR2            ; 769, (D834, bit 1)
+	const EVENT_SILPH_CO_9_UNLOCKED_DOOR3            ; 76A, (D834, bit 2)
+	const EVENT_SILPH_CO_9_UNLOCKED_DOOR4            ; 76B, (D834, bit 3)
+	const EVENT_76C                                  ; 76C, (D834, bit 4)
+	const EVENT_76D                                  ; 76D, (D834, bit 5)
+	const EVENT_76E                                  ; 76E, (D834, bit 6)
+	const EVENT_76F                                  ; 76F, (D834, bit 7)
+	const EVENT_770                                  ; 770, (D835, bit 0)
+	const EVENT_BEAT_SILPH_CO_10F_TRAINER_0          ; 771, (D835, bit 1)
+	const EVENT_BEAT_SILPH_CO_10F_TRAINER_1          ; 772, (D835, bit 2)
+	const EVENT_773                                  ; 773, (D835, bit 3)
+	const EVENT_774                                  ; 774, (D835, bit 4)
+	const EVENT_775                                  ; 775, (D835, bit 5)
+	const EVENT_776                                  ; 776, (D835, bit 6)
+	const EVENT_777                                  ; 777, (D835, bit 7)
+	const EVENT_SILPH_CO_10_UNLOCKED_DOOR            ; 778, (D836, bit 0)
+	const EVENT_779                                  ; 779, (D836, bit 1)
+	const EVENT_77A                                  ; 77A, (D836, bit 2)
+	const EVENT_77B                                  ; 77B, (D836, bit 3)
+	const EVENT_77C                                  ; 77C, (D836, bit 4)
+	const EVENT_77D                                  ; 77D, (D836, bit 5)
+	const EVENT_77E                                  ; 77E, (D836, bit 6)
+	const EVENT_77F                                  ; 77F, (D836, bit 7)
+	const EVENT_780                                  ; 780, (D837, bit 0)
+	const EVENT_781                                  ; 781, (D837, bit 1)
+	const EVENT_782                                  ; 782, (D837, bit 2)
+	const EVENT_783                                  ; 783, (D837, bit 3)
+	const EVENT_BEAT_SILPH_CO_11F_TRAINER_0          ; 784, (D837, bit 4)
+	const EVENT_BEAT_SILPH_CO_11F_TRAINER_1          ; 785, (D837, bit 5)
+	const EVENT_786                                  ; 786, (D837, bit 6)
+	const EVENT_787                                  ; 787, (D837, bit 7)
+	const EVENT_SILPH_CO_11_UNLOCKED_DOOR            ; 788, (D838, bit 0)
+	const EVENT_789                                  ; 789, (D838, bit 1)
+	const EVENT_78A                                  ; 78A, (D838, bit 2)
+	const EVENT_78B                                  ; 78B, (D838, bit 3)
+	const EVENT_78C                                  ; 78C, (D838, bit 4)
+	const EVENT_GOT_MASTER_BALL                      ; 78D, (D838, bit 5)
+	const EVENT_78E                                  ; 78E, (D838, bit 6)
+	const EVENT_BEAT_SILPH_CO_GIOVANNI               ; 78F, (D838, bit 7)
+	const EVENT_790                                  ; 790, (D839, bit 0)
+	const EVENT_791                                  ; 791, (D839, bit 1)
+	const EVENT_792                                  ; 792, (D839, bit 2)
+	const EVENT_793                                  ; 793, (D839, bit 3)
+	const EVENT_794                                  ; 794, (D839, bit 4)
+	const EVENT_795                                  ; 795, (D839, bit 5)
+	const EVENT_796                                  ; 796, (D839, bit 6)
+	const EVENT_797                                  ; 797, (D839, bit 7)
+	const EVENT_798                                  ; 798, (D83A, bit 0)
+	const EVENT_799                                  ; 799, (D83A, bit 1)
+	const EVENT_79A                                  ; 79A, (D83A, bit 2)
+	const EVENT_79B                                  ; 79B, (D83A, bit 3)
+	const EVENT_79C                                  ; 79C, (D83A, bit 4)
+	const EVENT_79D                                  ; 79D, (D83A, bit 5)
+	const EVENT_79E                                  ; 79E, (D83A, bit 6)
+	const EVENT_79F                                  ; 79F, (D83A, bit 7)
+	const EVENT_7A0                                  ; 7A0, (D83B, bit 0)
+	const EVENT_7A1                                  ; 7A1, (D83B, bit 1)
+	const EVENT_7A2                                  ; 7A2, (D83B, bit 2)
+	const EVENT_7A3                                  ; 7A3, (D83B, bit 3)
+	const EVENT_7A4                                  ; 7A4, (D83B, bit 4)
+	const EVENT_7A5                                  ; 7A5, (D83B, bit 5)
+	const EVENT_7A6                                  ; 7A6, (D83B, bit 6)
+	const EVENT_7A7                                  ; 7A7, (D83B, bit 7)
+	const EVENT_7A8                                  ; 7A8, (D83C, bit 0)
+	const EVENT_7A9                                  ; 7A9, (D83C, bit 1)
+	const EVENT_7AA                                  ; 7AA, (D83C, bit 2)
+	const EVENT_7AB                                  ; 7AB, (D83C, bit 3)
+	const EVENT_7AC                                  ; 7AC, (D83C, bit 4)
+	const EVENT_7AD                                  ; 7AD, (D83C, bit 5)
+	const EVENT_7AE                                  ; 7AE, (D83C, bit 6)
+	const EVENT_7AF                                  ; 7AF, (D83C, bit 7)
+	const EVENT_7B0                                  ; 7B0, (D83D, bit 0)
+	const EVENT_7B1                                  ; 7B1, (D83D, bit 1)
+	const EVENT_7B2                                  ; 7B2, (D83D, bit 2)
+	const EVENT_7B3                                  ; 7B3, (D83D, bit 3)
+	const EVENT_7B4                                  ; 7B4, (D83D, bit 4)
+	const EVENT_7B5                                  ; 7B5, (D83D, bit 5)
+	const EVENT_7B6                                  ; 7B6, (D83D, bit 6)
+	const EVENT_7B7                                  ; 7B7, (D83D, bit 7)
+	const EVENT_7B8                                  ; 7B8, (D83E, bit 0)
+	const EVENT_7B9                                  ; 7B9, (D83E, bit 1)
+	const EVENT_7BA                                  ; 7BA, (D83E, bit 2)
+	const EVENT_7BB                                  ; 7BB, (D83E, bit 3)
+	const EVENT_7BC                                  ; 7BC, (D83E, bit 4)
+	const EVENT_7BD                                  ; 7BD, (D83E, bit 5)
+	const EVENT_7BE                                  ; 7BE, (D83E, bit 6)
+	const EVENT_7BF                                  ; 7BF, (D83E, bit 7)
+	const EVENT_7C0                                  ; 7C0, (D83F, bit 0)
+	const EVENT_7C1                                  ; 7C1, (D83F, bit 1)
+	const EVENT_7C2                                  ; 7C2, (D83F, bit 2)
+	const EVENT_7C3                                  ; 7C3, (D83F, bit 3)
+	const EVENT_7C4                                  ; 7C4, (D83F, bit 4)
+	const EVENT_7C5                                  ; 7C5, (D83F, bit 5)
+	const EVENT_7C6                                  ; 7C6, (D83F, bit 6)
+	const EVENT_7C7                                  ; 7C7, (D83F, bit 7)
+	const EVENT_7C8                                  ; 7C8, (D840, bit 0)
+	const EVENT_7C9                                  ; 7C9, (D840, bit 1)
+	const EVENT_7CA                                  ; 7CA, (D840, bit 2)
+	const EVENT_7CB                                  ; 7CB, (D840, bit 3)
+	const EVENT_7CC                                  ; 7CC, (D840, bit 4)
+	const EVENT_7CD                                  ; 7CD, (D840, bit 5)
+	const EVENT_7CE                                  ; 7CE, (D840, bit 6)
+	const EVENT_7CF                                  ; 7CF, (D840, bit 7)
+	const EVENT_7D0                                  ; 7D0, (D841, bit 0)
+	const EVENT_7D1                                  ; 7D1, (D841, bit 1)
+	const EVENT_7D2                                  ; 7D2, (D841, bit 2)
+	const EVENT_7D3                                  ; 7D3, (D841, bit 3)
+	const EVENT_7D4                                  ; 7D4, (D841, bit 4)
+	const EVENT_7D5                                  ; 7D5, (D841, bit 5)
+	const EVENT_7D6                                  ; 7D6, (D841, bit 6)
+	const EVENT_7D7                                  ; 7D7, (D841, bit 7)
+	const EVENT_7D8                                  ; 7D8, (D842, bit 0)
+	const EVENT_7D9                                  ; 7D9, (D842, bit 1)
+	const EVENT_7DA                                  ; 7DA, (D842, bit 2)
+	const EVENT_7DB                                  ; 7DB, (D842, bit 3)
+	const EVENT_7DC                                  ; 7DC, (D842, bit 4)
+	const EVENT_7DD                                  ; 7DD, (D842, bit 5)
+	const EVENT_7DE                                  ; 7DE, (D842, bit 6)
+	const EVENT_7DF                                  ; 7DF, (D842, bit 7)
+	const EVENT_7E0                                  ; 7E0, (D843, bit 0)
+	const EVENT_7E1                                  ; 7E1, (D843, bit 1)
+	const EVENT_7E2                                  ; 7E2, (D843, bit 2)
+	const EVENT_7E3                                  ; 7E3, (D843, bit 3)
+	const EVENT_7E4                                  ; 7E4, (D843, bit 4)
+	const EVENT_7E5                                  ; 7E5, (D843, bit 5)
+	const EVENT_7E6                                  ; 7E6, (D843, bit 6)
+	const EVENT_7E7                                  ; 7E7, (D843, bit 7)
+	const EVENT_7E8                                  ; 7E8, (D844, bit 0)
+	const EVENT_7E9                                  ; 7E9, (D844, bit 1)
+	const EVENT_7EA                                  ; 7EA, (D844, bit 2)
+	const EVENT_7EB                                  ; 7EB, (D844, bit 3)
+	const EVENT_7EC                                  ; 7EC, (D844, bit 4)
+	const EVENT_7ED                                  ; 7ED, (D844, bit 5)
+	const EVENT_7EE                                  ; 7EE, (D844, bit 6)
+	const EVENT_7EF                                  ; 7EF, (D844, bit 7)
+	const EVENT_7F0                                  ; 7F0, (D845, bit 0)
+	const EVENT_7F1                                  ; 7F1, (D845, bit 1)
+	const EVENT_7F2                                  ; 7F2, (D845, bit 2)
+	const EVENT_7F3                                  ; 7F3, (D845, bit 3)
+	const EVENT_7F4                                  ; 7F4, (D845, bit 4)
+	const EVENT_7F5                                  ; 7F5, (D845, bit 5)
+	const EVENT_7F6                                  ; 7F6, (D845, bit 6)
+	const EVENT_7F7                                  ; 7F7, (D845, bit 7)
+	const EVENT_7F8                                  ; 7F8, (D846, bit 0)
+	const EVENT_7F9                                  ; 7F9, (D846, bit 1)
+	const EVENT_7FA                                  ; 7FA, (D846, bit 2)
+	const EVENT_7FB                                  ; 7FB, (D846, bit 3)
+	const EVENT_7FC                                  ; 7FC, (D846, bit 4)
+	const EVENT_7FD                                  ; 7FD, (D846, bit 5)
+	const EVENT_7FE                                  ; 7FE, (D846, bit 6)
+	const EVENT_7FF                                  ; 7FF, (D846, bit 7)
+	const EVENT_800                                  ; 800, (D847, bit 0)
+	const EVENT_BEAT_MANSION_2_TRAINER_0             ; 801, (D847, bit 1)
+	const EVENT_802                                  ; 802, (D847, bit 2)
+	const EVENT_803                                  ; 803, (D847, bit 3)
+	const EVENT_804                                  ; 804, (D847, bit 4)
+	const EVENT_805                                  ; 805, (D847, bit 5)
+	const EVENT_806                                  ; 806, (D847, bit 6)
+	const EVENT_807                                  ; 807, (D847, bit 7)
+	const EVENT_808                                  ; 808, (D848, bit 0)
+	const EVENT_809                                  ; 809, (D848, bit 1)
+	const EVENT_80A                                  ; 80A, (D848, bit 2)
+	const EVENT_80B                                  ; 80B, (D848, bit 3)
+	const EVENT_80C                                  ; 80C, (D848, bit 4)
+	const EVENT_80D                                  ; 80D, (D848, bit 5)
+	const EVENT_80E                                  ; 80E, (D848, bit 6)
+	const EVENT_80F                                  ; 80F, (D848, bit 7)
+	const EVENT_810                                  ; 810, (D849, bit 0)
+	const EVENT_BEAT_MANSION_3_TRAINER_0             ; 811, (D849, bit 1)
+	const EVENT_BEAT_MANSION_3_TRAINER_2             ; 812, (D849, bit 2)
+	const EVENT_813                                  ; 813, (D849, bit 3)
+	const EVENT_814                                  ; 814, (D849, bit 4)
+	const EVENT_815                                  ; 815, (D849, bit 5)
+	const EVENT_816                                  ; 816, (D849, bit 6)
+	const EVENT_817                                  ; 817, (D849, bit 7)
+	const EVENT_818                                  ; 818, (D84A, bit 0)
+	const EVENT_819                                  ; 819, (D84A, bit 1)
+	const EVENT_81A                                  ; 81A, (D84A, bit 2)
+	const EVENT_81B                                  ; 81B, (D84A, bit 3)
+	const EVENT_81C                                  ; 81C, (D84A, bit 4)
+	const EVENT_81D                                  ; 81D, (D84A, bit 5)
+	const EVENT_81E                                  ; 81E, (D84A, bit 6)
+	const EVENT_81F                                  ; 81F, (D84A, bit 7)
+	const EVENT_820                                  ; 820, (D84B, bit 0)
+	const EVENT_BEAT_MANSION_4_TRAINER_0             ; 821, (D84B, bit 1)
+	const EVENT_BEAT_MANSION_4_TRAINER_2             ; 822, (D84B, bit 2)
+	const EVENT_823                                  ; 823, (D84B, bit 3)
+	const EVENT_824                                  ; 824, (D84B, bit 4)
+	const EVENT_825                                  ; 825, (D84B, bit 5)
+	const EVENT_826                                  ; 826, (D84B, bit 6)
+	const EVENT_827                                  ; 827, (D84B, bit 7)
+	const EVENT_828                                  ; 828, (D84C, bit 0)
+	const EVENT_829                                  ; 829, (D84C, bit 1)
+	const EVENT_82A                                  ; 82A, (D84C, bit 2)
+	const EVENT_82B                                  ; 82B, (D84C, bit 3)
+	const EVENT_82C                                  ; 82C, (D84C, bit 4)
+	const EVENT_82D                                  ; 82D, (D84C, bit 5)
+	const EVENT_82E                                  ; 82E, (D84C, bit 6)
+	const EVENT_82F                                  ; 82F, (D84C, bit 7)
+	const EVENT_830                                  ; 830, (D84D, bit 0)
+	const EVENT_831                                  ; 831, (D84D, bit 1)
+	const EVENT_832                                  ; 832, (D84D, bit 2)
+	const EVENT_833                                  ; 833, (D84D, bit 3)
+	const EVENT_834                                  ; 834, (D84D, bit 4)
+	const EVENT_835                                  ; 835, (D84D, bit 5)
+	const EVENT_836                                  ; 836, (D84D, bit 6)
+	const EVENT_837                                  ; 837, (D84D, bit 7)
+	const EVENT_838                                  ; 838, (D84E, bit 0)
+	const EVENT_839                                  ; 839, (D84E, bit 1)
+	const EVENT_83A                                  ; 83A, (D84E, bit 2)
+	const EVENT_83B                                  ; 83B, (D84E, bit 3)
+	const EVENT_83C                                  ; 83C, (D84E, bit 4)
+	const EVENT_83D                                  ; 83D, (D84E, bit 5)
+	const EVENT_83E                                  ; 83E, (D84E, bit 6)
+	const EVENT_83F                                  ; 83F, (D84E, bit 7)
+	const EVENT_840                                  ; 840, (D84F, bit 0)
+	const EVENT_841                                  ; 841, (D84F, bit 1)
+	const EVENT_842                                  ; 842, (D84F, bit 2)
+	const EVENT_843                                  ; 843, (D84F, bit 3)
+	const EVENT_844                                  ; 844, (D84F, bit 4)
+	const EVENT_845                                  ; 845, (D84F, bit 5)
+	const EVENT_846                                  ; 846, (D84F, bit 6)
+	const EVENT_847                                  ; 847, (D84F, bit 7)
+	const EVENT_848                                  ; 848, (D850, bit 0)
+	const EVENT_849                                  ; 849, (D850, bit 1)
+	const EVENT_84A                                  ; 84A, (D850, bit 2)
+	const EVENT_84B                                  ; 84B, (D850, bit 3)
+	const EVENT_84C                                  ; 84C, (D850, bit 4)
+	const EVENT_84D                                  ; 84D, (D850, bit 5)
+	const EVENT_84E                                  ; 84E, (D850, bit 6)
+	const EVENT_84F                                  ; 84F, (D850, bit 7)
+	const EVENT_850                                  ; 850, (D851, bit 0)
+	const EVENT_851                                  ; 851, (D851, bit 1)
+	const EVENT_852                                  ; 852, (D851, bit 2)
+	const EVENT_853                                  ; 853, (D851, bit 3)
+	const EVENT_854                                  ; 854, (D851, bit 4)
+	const EVENT_855                                  ; 855, (D851, bit 5)
+	const EVENT_856                                  ; 856, (D851, bit 6)
+	const EVENT_857                                  ; 857, (D851, bit 7)
+	const EVENT_858                                  ; 858, (D852, bit 0)
+	const EVENT_859                                  ; 859, (D852, bit 1)
+	const EVENT_85A                                  ; 85A, (D852, bit 2)
+	const EVENT_85B                                  ; 85B, (D852, bit 3)
+	const EVENT_85C                                  ; 85C, (D852, bit 4)
+	const EVENT_85D                                  ; 85D, (D852, bit 5)
+	const EVENT_85E                                  ; 85E, (D852, bit 6)
+	const EVENT_85F                                  ; 85F, (D852, bit 7)
+	const EVENT_860                                  ; 860, (D853, bit 0)
+	const EVENT_861                                  ; 861, (D853, bit 1)
+	const EVENT_862                                  ; 862, (D853, bit 2)
+	const EVENT_863                                  ; 863, (D853, bit 3)
+	const EVENT_864                                  ; 864, (D853, bit 4)
+	const EVENT_865                                  ; 865, (D853, bit 5)
+	const EVENT_866                                  ; 866, (D853, bit 6)
+	const EVENT_867                                  ; 867, (D853, bit 7)
+	const EVENT_868                                  ; 868, (D854, bit 0)
+	const EVENT_869                                  ; 869, (D854, bit 1)
+	const EVENT_86A                                  ; 86A, (D854, bit 2)
+	const EVENT_86B                                  ; 86B, (D854, bit 3)
+	const EVENT_86C                                  ; 86C, (D854, bit 4)
+	const EVENT_86D                                  ; 86D, (D854, bit 5)
+	const EVENT_86E                                  ; 86E, (D854, bit 6)
+	const EVENT_86F                                  ; 86F, (D854, bit 7)
+	const EVENT_870                                  ; 870, (D855, bit 0)
+	const EVENT_871                                  ; 871, (D855, bit 1)
+	const EVENT_872                                  ; 872, (D855, bit 2)
+	const EVENT_873                                  ; 873, (D855, bit 3)
+	const EVENT_874                                  ; 874, (D855, bit 4)
+	const EVENT_875                                  ; 875, (D855, bit 5)
+	const EVENT_876                                  ; 876, (D855, bit 6)
+	const EVENT_877                                  ; 877, (D855, bit 7)
+	const EVENT_878                                  ; 878, (D856, bit 0)
+	const EVENT_879                                  ; 879, (D856, bit 1)
+	const EVENT_87A                                  ; 87A, (D856, bit 2)
+	const EVENT_87B                                  ; 87B, (D856, bit 3)
+	const EVENT_87C                                  ; 87C, (D856, bit 4)
+	const EVENT_87D                                  ; 87D, (D856, bit 5)
+	const EVENT_87E                                  ; 87E, (D856, bit 6)
+	const EVENT_87F                                  ; 87F, (D856, bit 7)
+	const EVENT_GOT_HM03                             ; 880, (D857, bit 0)
+	const EVENT_881                                  ; 881, (D857, bit 1)
+	const EVENT_882                                  ; 882, (D857, bit 2)
+	const EVENT_883                                  ; 883, (D857, bit 3)
+	const EVENT_884                                  ; 884, (D857, bit 4)
+	const EVENT_885                                  ; 885, (D857, bit 5)
+	const EVENT_886                                  ; 886, (D857, bit 6)
+	const EVENT_887                                  ; 887, (D857, bit 7)
+	const EVENT_888                                  ; 888, (D858, bit 0)
+	const EVENT_889                                  ; 889, (D858, bit 1)
+	const EVENT_88A                                  ; 88A, (D858, bit 2)
+	const EVENT_88B                                  ; 88B, (D858, bit 3)
+	const EVENT_88C                                  ; 88C, (D858, bit 4)
+	const EVENT_88D                                  ; 88D, (D858, bit 5)
+	const EVENT_88E                                  ; 88E, (D858, bit 6)
+	const EVENT_88F                                  ; 88F, (D858, bit 7)
+	const EVENT_890                                  ; 890, (D859, bit 0)
+	const EVENT_891                                  ; 891, (D859, bit 1)
+	const EVENT_892                                  ; 892, (D859, bit 2)
+	const EVENT_893                                  ; 893, (D859, bit 3)
+	const EVENT_894                                  ; 894, (D859, bit 4)
+	const EVENT_895                                  ; 895, (D859, bit 5)
+	const EVENT_896                                  ; 896, (D859, bit 6)
+	const EVENT_897                                  ; 897, (D859, bit 7)
+	const EVENT_898                                  ; 898, (D85A, bit 0)
+	const EVENT_899                                  ; 899, (D85A, bit 1)
+	const EVENT_89A                                  ; 89A, (D85A, bit 2)
+	const EVENT_89B                                  ; 89B, (D85A, bit 3)
+	const EVENT_89C                                  ; 89C, (D85A, bit 4)
+	const EVENT_89D                                  ; 89D, (D85A, bit 5)
+	const EVENT_89E                                  ; 89E, (D85A, bit 6)
+	const EVENT_89F                                  ; 89F, (D85A, bit 7)
+	const EVENT_8A0                                  ; 8A0, (D85B, bit 0)
+	const EVENT_8A1                                  ; 8A1, (D85B, bit 1)
+	const EVENT_8A2                                  ; 8A2, (D85B, bit 2)
+	const EVENT_8A3                                  ; 8A3, (D85B, bit 3)
+	const EVENT_8A4                                  ; 8A4, (D85B, bit 4)
+	const EVENT_8A5                                  ; 8A5, (D85B, bit 5)
+	const EVENT_8A6                                  ; 8A6, (D85B, bit 6)
+	const EVENT_8A7                                  ; 8A7, (D85B, bit 7)
+	const EVENT_8A8                                  ; 8A8, (D85C, bit 0)
+	const EVENT_8A9                                  ; 8A9, (D85C, bit 1)
+	const EVENT_8AA                                  ; 8AA, (D85C, bit 2)
+	const EVENT_8AB                                  ; 8AB, (D85C, bit 3)
+	const EVENT_8AC                                  ; 8AC, (D85C, bit 4)
+	const EVENT_8AD                                  ; 8AD, (D85C, bit 5)
+	const EVENT_8AE                                  ; 8AE, (D85C, bit 6)
+	const EVENT_8AF                                  ; 8AF, (D85C, bit 7)
+	const EVENT_8B0                                  ; 8B0, (D85D, bit 0)
+	const EVENT_8B1                                  ; 8B1, (D85D, bit 1)
+	const EVENT_8B2                                  ; 8B2, (D85D, bit 2)
+	const EVENT_8B3                                  ; 8B3, (D85D, bit 3)
+	const EVENT_8B4                                  ; 8B4, (D85D, bit 4)
+	const EVENT_8B5                                  ; 8B5, (D85D, bit 5)
+	const EVENT_8B6                                  ; 8B6, (D85D, bit 6)
+	const EVENT_8B7                                  ; 8B7, (D85D, bit 7)
+	const EVENT_8B8                                  ; 8B8, (D85E, bit 0)
+	const EVENT_8B9                                  ; 8B9, (D85E, bit 1)
+	const EVENT_8BA                                  ; 8BA, (D85E, bit 2)
+	const EVENT_8BB                                  ; 8BB, (D85E, bit 3)
+	const EVENT_8BC                                  ; 8BC, (D85E, bit 4)
+	const EVENT_8BD                                  ; 8BD, (D85E, bit 5)
+	const EVENT_8BE                                  ; 8BE, (D85E, bit 6)
+	const EVENT_8BF                                  ; 8BF, (D85E, bit 7)
+	const EVENT_8C0                                  ; 8C0, (D85F, bit 0)
+	const EVENT_BEAT_UNKNOWN_DUNGEON_3_TRAINER_0     ; 8C1, (D85F, bit 1)
+	const EVENT_8C2                                  ; 8C2, (D85F, bit 2)
+	const EVENT_8C3                                  ; 8C3, (D85F, bit 3)
+	const EVENT_8C4                                  ; 8C4, (D85F, bit 4)
+	const EVENT_8C5                                  ; 8C5, (D85F, bit 5)
+	const EVENT_8C6                                  ; 8C6, (D85F, bit 6)
+	const EVENT_8C7                                  ; 8C7, (D85F, bit 7)
+	const EVENT_8C8                                  ; 8C8, (D860, bit 0)
+	const EVENT_8C9                                  ; 8C9, (D860, bit 1)
+	const EVENT_8CA                                  ; 8CA, (D860, bit 2)
+	const EVENT_8CB                                  ; 8CB, (D860, bit 3)
+	const EVENT_8CC                                  ; 8CC, (D860, bit 4)
+	const EVENT_8CD                                  ; 8CD, (D860, bit 5)
+	const EVENT_8CE                                  ; 8CE, (D860, bit 6)
+	const EVENT_8CF                                  ; 8CF, (D860, bit 7)
+	const EVENT_8D0                                  ; 8D0, (D861, bit 0)
+	const EVENT_8D1                                  ; 8D1, (D861, bit 1)
+	const EVENT_8D2                                  ; 8D2, (D861, bit 2)
+	const EVENT_8D3                                  ; 8D3, (D861, bit 3)
+	const EVENT_8D4                                  ; 8D4, (D861, bit 4)
+	const EVENT_8D5                                  ; 8D5, (D861, bit 5)
+	const EVENT_8D6                                  ; 8D6, (D861, bit 6)
+	const EVENT_8D7                                  ; 8D7, (D861, bit 7)
+	const EVENT_8D8                                  ; 8D8, (D862, bit 0)
+	const EVENT_8D9                                  ; 8D9, (D862, bit 1)
+	const EVENT_8DA                                  ; 8DA, (D862, bit 2)
+	const EVENT_8DB                                  ; 8DB, (D862, bit 3)
+	const EVENT_8DC                                  ; 8DC, (D862, bit 4)
+	const EVENT_8DD                                  ; 8DD, (D862, bit 5)
+	const EVENT_8DE                                  ; 8DE, (D862, bit 6)
+	const EVENT_8DF                                  ; 8DF, (D862, bit 7)
+	const ELITE4_EVENTS_START                        ; 8E0, (D863, bit 0)
+	const EVENT_BEAT_LORELEIS_ROOM_TRAINER_0         ; 8E1, (D863, bit 1)
+	const EVENT_8E2                                  ; 8E2, (D863, bit 2)
+	const EVENT_8E3                                  ; 8E3, (D863, bit 3)
+	const EVENT_8E4                                  ; 8E4, (D863, bit 4)
+	const EVENT_8E5                                  ; 8E5, (D863, bit 5)
+	const EVENT_AUTOWALKED_INTO_LORELEIS_ROOM        ; 8E6, (D863, bit 6)
+	const EVENT_8E7                                  ; 8E7, (D863, bit 7)
+	const EVENT_8E8                                  ; 8E8, (D864, bit 0)
+	const EVENT_BEAT_BRUNOS_ROOM_TRAINER_0           ; 8E9, (D864, bit 1)
+	const EVENT_8EA                                  ; 8EA, (D864, bit 2)
+	const EVENT_8EB                                  ; 8EB, (D864, bit 3)
+	const EVENT_8EC                                  ; 8EC, (D864, bit 4)
+	const EVENT_8ED                                  ; 8ED, (D864, bit 5)
+	const EVENT_AUTOWALKED_INTO_BRUNOS_ROOM          ; 8EE, (D864, bit 6)
+	const EVENT_8EF                                  ; 8EF, (D864, bit 7)
+	const EVENT_8F0                                  ; 8F0, (D865, bit 0)
+	const EVENT_BEAT_AGATHAS_ROOM_TRAINER_0          ; 8F1, (D865, bit 1)
+	const EVENT_8F2                                  ; 8F2, (D865, bit 2)
+	const EVENT_8F3                                  ; 8F3, (D865, bit 3)
+	const EVENT_8F4                                  ; 8F4, (D865, bit 4)
+	const EVENT_8F5                                  ; 8F5, (D865, bit 5)
+	const EVENT_AUTOWALKED_INTO_AGATHAS_ROOM         ; 8F6, (D865, bit 6)
+	const EVENT_8F7                                  ; 8F7, (D865, bit 7)
+	const EVENT_8F8                                  ; 8F8, (D866, bit 0)
+	const EVENT_BEAT_LANCES_ROOM_TRAINER_0           ; 8F9, (D866, bit 1)
+	const EVENT_8FA                                  ; 8FA, (D866, bit 2)
+	const EVENT_8FB                                  ; 8FB, (D866, bit 3)
+	const EVENT_8FC                                  ; 8FC, (D866, bit 4)
+	const EVENT_8FD                                  ; 8FD, (D866, bit 5)
+	const EVENT_BEAT_LANCE                           ; 8FE, (D866, bit 6)
+	const EVENT_LANCES_ROOM_LOCK_DOOR                ; 8FF, (D866, bit 7)
+	const EVENT_900                                  ; 900, (D867, bit 0)
+	const EVENT_BEAT_CHAMPION_RIVAL                  ; 901, (D867, bit 1)
+	const EVENT_902                                  ; 902, (D867, bit 2)
+	const EVENT_903                                  ; 903, (D867, bit 3)
+	const EVENT_904                                  ; 904, (D867, bit 4)
+	const EVENT_905                                  ; 905, (D867, bit 5)
+	const EVENT_906                                  ; 906, (D867, bit 6)
+	const ELITE4_CHAMPION_EVENTS_END                 ; 907, (D867, bit 7)
+	const EVENT_908                                  ; 908, (D868, bit 0)
+	const EVENT_909                                  ; 909, (D868, bit 1)
+	const EVENT_90A                                  ; 90A, (D868, bit 2)
+	const EVENT_90B                                  ; 90B, (D868, bit 3)
+	const EVENT_90C                                  ; 90C, (D868, bit 4)
+	const EVENT_90D                                  ; 90D, (D868, bit 5)
+	const EVENT_90E                                  ; 90E, (D868, bit 6)
+	const EVENT_90F                                  ; 90F, (D868, bit 7)
+	const EVENT_910                                  ; 910, (D869, bit 0)
+	const EVENT_BEAT_VICTORY_ROAD_1_TRAINER_0        ; 911, (D869, bit 1)
+	const EVENT_BEAT_VICTORY_ROAD_1_TRAINER_1        ; 912, (D869, bit 2)
+	const EVENT_913                                  ; 913, (D869, bit 3)
+	const EVENT_914                                  ; 914, (D869, bit 4)
+	const EVENT_915                                  ; 915, (D869, bit 5)
+	const EVENT_916                                  ; 916, (D869, bit 6)
+	const EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH     ; 917, (D869, bit 7)
+	const EVENT_918                                  ; 918, (D86A, bit 0)
+	const EVENT_919                                  ; 919, (D86A, bit 1)
+	const EVENT_91A                                  ; 91A, (D86A, bit 2)
+	const EVENT_91B                                  ; 91B, (D86A, bit 3)
+	const EVENT_91C                                  ; 91C, (D86A, bit 4)
+	const EVENT_91D                                  ; 91D, (D86A, bit 5)
+	const EVENT_91E                                  ; 91E, (D86A, bit 6)
+	const EVENT_91F                                  ; 91F, (D86A, bit 7)
+	const EVENT_920                                  ; 920, (D86B, bit 0)
+	const EVENT_921                                  ; 921, (D86B, bit 1)
+	const EVENT_922                                  ; 922, (D86B, bit 2)
+	const EVENT_923                                  ; 923, (D86B, bit 3)
+	const EVENT_924                                  ; 924, (D86B, bit 4)
+	const EVENT_925                                  ; 925, (D86B, bit 5)
+	const EVENT_926                                  ; 926, (D86B, bit 6)
+	const EVENT_927                                  ; 927, (D86B, bit 7)
+	const EVENT_928                                  ; 928, (D86C, bit 0)
+	const EVENT_929                                  ; 929, (D86C, bit 1)
+	const EVENT_92A                                  ; 92A, (D86C, bit 2)
+	const EVENT_92B                                  ; 92B, (D86C, bit 3)
+	const EVENT_92C                                  ; 92C, (D86C, bit 4)
+	const EVENT_92D                                  ; 92D, (D86C, bit 5)
+	const EVENT_92E                                  ; 92E, (D86C, bit 6)
+	const EVENT_92F                                  ; 92F, (D86C, bit 7)
+	const EVENT_930                                  ; 930, (D86D, bit 0)
+	const EVENT_931                                  ; 931, (D86D, bit 1)
+	const EVENT_932                                  ; 932, (D86D, bit 2)
+	const EVENT_933                                  ; 933, (D86D, bit 3)
+	const EVENT_934                                  ; 934, (D86D, bit 4)
+	const EVENT_935                                  ; 935, (D86D, bit 5)
+	const EVENT_936                                  ; 936, (D86D, bit 6)
+	const EVENT_937                                  ; 937, (D86D, bit 7)
+	const EVENT_938                                  ; 938, (D86E, bit 0)
+	const EVENT_939                                  ; 939, (D86E, bit 1)
+	const EVENT_93A                                  ; 93A, (D86E, bit 2)
+	const EVENT_93B                                  ; 93B, (D86E, bit 3)
+	const EVENT_93C                                  ; 93C, (D86E, bit 4)
+	const EVENT_93D                                  ; 93D, (D86E, bit 5)
+	const EVENT_93E                                  ; 93E, (D86E, bit 6)
+	const EVENT_93F                                  ; 93F, (D86E, bit 7)
+	const EVENT_940                                  ; 940, (D86F, bit 0)
+	const EVENT_941                                  ; 941, (D86F, bit 1)
+	const EVENT_942                                  ; 942, (D86F, bit 2)
+	const EVENT_943                                  ; 943, (D86F, bit 3)
+	const EVENT_944                                  ; 944, (D86F, bit 4)
+	const EVENT_945                                  ; 945, (D86F, bit 5)
+	const EVENT_946                                  ; 946, (D86F, bit 6)
+	const EVENT_947                                  ; 947, (D86F, bit 7)
+	const EVENT_948                                  ; 948, (D870, bit 0)
+	const EVENT_949                                  ; 949, (D870, bit 1)
+	const EVENT_94A                                  ; 94A, (D870, bit 2)
+	const EVENT_94B                                  ; 94B, (D870, bit 3)
+	const EVENT_94C                                  ; 94C, (D870, bit 4)
+	const EVENT_94D                                  ; 94D, (D870, bit 5)
+	const EVENT_94E                                  ; 94E, (D870, bit 6)
+	const EVENT_94F                                  ; 94F, (D870, bit 7)
+	const EVENT_950                                  ; 950, (D871, bit 0)
+	const EVENT_951                                  ; 951, (D871, bit 1)
+	const EVENT_952                                  ; 952, (D871, bit 2)
+	const EVENT_953                                  ; 953, (D871, bit 3)
+	const EVENT_954                                  ; 954, (D871, bit 4)
+	const EVENT_955                                  ; 955, (D871, bit 5)
+	const EVENT_956                                  ; 956, (D871, bit 6)
+	const EVENT_957                                  ; 957, (D871, bit 7)
+	const EVENT_958                                  ; 958, (D872, bit 0)
+	const EVENT_959                                  ; 959, (D872, bit 1)
+	const EVENT_95A                                  ; 95A, (D872, bit 2)
+	const EVENT_95B                                  ; 95B, (D872, bit 3)
+	const EVENT_95C                                  ; 95C, (D872, bit 4)
+	const EVENT_95D                                  ; 95D, (D872, bit 5)
+	const EVENT_95E                                  ; 95E, (D872, bit 6)
+	const EVENT_95F                                  ; 95F, (D872, bit 7)
+	const EVENT_960                                  ; 960, (D873, bit 0)
+	const EVENT_961                                  ; 961, (D873, bit 1)
+	const EVENT_962                                  ; 962, (D873, bit 2)
+	const EVENT_963                                  ; 963, (D873, bit 3)
+	const EVENT_964                                  ; 964, (D873, bit 4)
+	const EVENT_965                                  ; 965, (D873, bit 5)
+	const EVENT_966                                  ; 966, (D873, bit 6)
+	const EVENT_967                                  ; 967, (D873, bit 7)
+	const EVENT_968                                  ; 968, (D874, bit 0)
+	const EVENT_969                                  ; 969, (D874, bit 1)
+	const EVENT_96A                                  ; 96A, (D874, bit 2)
+	const EVENT_96B                                  ; 96B, (D874, bit 3)
+	const EVENT_96C                                  ; 96C, (D874, bit 4)
+	const EVENT_96D                                  ; 96D, (D874, bit 5)
+	const EVENT_96E                                  ; 96E, (D874, bit 6)
+	const EVENT_96F                                  ; 96F, (D874, bit 7)
+	const EVENT_970                                  ; 970, (D875, bit 0)
+	const EVENT_971                                  ; 971, (D875, bit 1)
+	const EVENT_972                                  ; 972, (D875, bit 2)
+	const EVENT_973                                  ; 973, (D875, bit 3)
+	const EVENT_974                                  ; 974, (D875, bit 4)
+	const EVENT_975                                  ; 975, (D875, bit 5)
+	const EVENT_976                                  ; 976, (D875, bit 6)
+	const EVENT_977                                  ; 977, (D875, bit 7)
+	const EVENT_978                                  ; 978, (D876, bit 0)
+	const EVENT_979                                  ; 979, (D876, bit 1)
+	const EVENT_97A                                  ; 97A, (D876, bit 2)
+	const EVENT_97B                                  ; 97B, (D876, bit 3)
+	const EVENT_97C                                  ; 97C, (D876, bit 4)
+	const EVENT_97D                                  ; 97D, (D876, bit 5)
+	const EVENT_97E                                  ; 97E, (D876, bit 6)
+	const EVENT_97F                                  ; 97F, (D876, bit 7)
+	const EVENT_980                                  ; 980, (D877, bit 0)
+	const EVENT_981                                  ; 981, (D877, bit 1)
+	const EVENT_982                                  ; 982, (D877, bit 2)
+	const EVENT_983                                  ; 983, (D877, bit 3)
+	const EVENT_984                                  ; 984, (D877, bit 4)
+	const EVENT_985                                  ; 985, (D877, bit 5)
+	const EVENT_986                                  ; 986, (D877, bit 6)
+	const EVENT_987                                  ; 987, (D877, bit 7)
+	const EVENT_988                                  ; 988, (D878, bit 0)
+	const EVENT_989                                  ; 989, (D878, bit 1)
+	const EVENT_98A                                  ; 98A, (D878, bit 2)
+	const EVENT_98B                                  ; 98B, (D878, bit 3)
+	const EVENT_98C                                  ; 98C, (D878, bit 4)
+	const EVENT_98D                                  ; 98D, (D878, bit 5)
+	const EVENT_98E                                  ; 98E, (D878, bit 6)
+	const EVENT_98F                                  ; 98F, (D878, bit 7)
+	const EVENT_990                                  ; 990, (D879, bit 0)
+	const EVENT_991                                  ; 991, (D879, bit 1)
+	const EVENT_992                                  ; 992, (D879, bit 2)
+	const EVENT_993                                  ; 993, (D879, bit 3)
+	const EVENT_994                                  ; 994, (D879, bit 4)
+	const EVENT_995                                  ; 995, (D879, bit 5)
+	const EVENT_996                                  ; 996, (D879, bit 6)
+	const EVENT_997                                  ; 997, (D879, bit 7)
+	const EVENT_998                                  ; 998, (D87A, bit 0)
+	const EVENT_999                                  ; 999, (D87A, bit 1)
+	const EVENT_99A                                  ; 99A, (D87A, bit 2)
+	const EVENT_99B                                  ; 99B, (D87A, bit 3)
+	const EVENT_99C                                  ; 99C, (D87A, bit 4)
+	const EVENT_99D                                  ; 99D, (D87A, bit 5)
+	const EVENT_99E                                  ; 99E, (D87A, bit 6)
+	const EVENT_99F                                  ; 99F, (D87A, bit 7)
+	const EVENT_9A0                                  ; 9A0, (D87B, bit 0)
+	const EVENT_9A1                                  ; 9A1, (D87B, bit 1)
+	const EVENT_9A2                                  ; 9A2, (D87B, bit 2)
+	const EVENT_9A3                                  ; 9A3, (D87B, bit 3)
+	const EVENT_9A4                                  ; 9A4, (D87B, bit 4)
+	const EVENT_9A5                                  ; 9A5, (D87B, bit 5)
+	const EVENT_9A6                                  ; 9A6, (D87B, bit 6)
+	const EVENT_9A7                                  ; 9A7, (D87B, bit 7)
+	const EVENT_9A8                                  ; 9A8, (D87C, bit 0)
+	const EVENT_9A9                                  ; 9A9, (D87C, bit 1)
+	const EVENT_9AA                                  ; 9AA, (D87C, bit 2)
+	const EVENT_9AB                                  ; 9AB, (D87C, bit 3)
+	const EVENT_9AC                                  ; 9AC, (D87C, bit 4)
+	const EVENT_9AD                                  ; 9AD, (D87C, bit 5)
+	const EVENT_9AE                                  ; 9AE, (D87C, bit 6)
+	const EVENT_9AF                                  ; 9AF, (D87C, bit 7)
+	const EVENT_9B0                                  ; 9B0, (D87D, bit 0)
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_0         ; 9B1, (D87D, bit 1)
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_2         ; 9B2, (D87D, bit 2)
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_3         ; 9B3, (D87D, bit 3)
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_4         ; 9B4, (D87D, bit 4)
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_5         ; 9B5, (D87D, bit 5)
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_6         ; 9B6, (D87D, bit 6)
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_7         ; 9B7, (D87D, bit 7)
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_8         ; 9B8, (D87E, bit 0)
+	const EVENT_9B9                                  ; 9B9, (D87E, bit 1)
+	const EVENT_9BA                                  ; 9BA, (D87E, bit 2)
+	const EVENT_9BB                                  ; 9BB, (D87E, bit 3)
+	const EVENT_9BC                                  ; 9BC, (D87E, bit 4)
+	const EVENT_9BD                                  ; 9BD, (D87E, bit 5)
+	const EVENT_9BE                                  ; 9BE, (D87E, bit 6)
+	const EVENT_9BF                                  ; 9BF, (D87E, bit 7)
+	const EVENT_SEAFOAM2_BOULDER1_DOWN_HOLE          ; 9C0, (D87F, bit 0)
+	const EVENT_SEAFOAM2_BOULDER2_DOWN_HOLE          ; 9C1, (D87F, bit 1)
+	const EVENT_9C2                                  ; 9C2, (D87F, bit 2)
+	const EVENT_9C3                                  ; 9C3, (D87F, bit 3)
+	const EVENT_9C4                                  ; 9C4, (D87F, bit 4)
+	const EVENT_9C5                                  ; 9C5, (D87F, bit 5)
+	const EVENT_9C6                                  ; 9C6, (D87F, bit 6)
+	const EVENT_9C7                                  ; 9C7, (D87F, bit 7)
+	const EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE          ; 9C8, (D880, bit 0)
+	const EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE          ; 9C9, (D880, bit 1)
+	const EVENT_9CA                                  ; 9CA, (D880, bit 2)
+	const EVENT_9CB                                  ; 9CB, (D880, bit 3)
+	const EVENT_9CC                                  ; 9CC, (D880, bit 4)
+	const EVENT_9CD                                  ; 9CD, (D880, bit 5)
+	const EVENT_9CE                                  ; 9CE, (D880, bit 6)
+	const EVENT_9CF                                  ; 9CF, (D880, bit 7)
+	const EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE          ; 9D0, (D881, bit 0)
+	const EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE          ; 9D1, (D881, bit 1)
+	const EVENT_9D2                                  ; 9D2, (D881, bit 2)
+	const EVENT_9D3                                  ; 9D3, (D881, bit 3)
+	const EVENT_9D4                                  ; 9D4, (D881, bit 4)
+	const EVENT_9D5                                  ; 9D5, (D881, bit 5)
+	const EVENT_9D6                                  ; 9D6, (D881, bit 6)
+	const EVENT_9D7                                  ; 9D7, (D881, bit 7)
+	const EVENT_9D8                                  ; 9D8, (D882, bit 0)
+	const EVENT_9D9                                  ; 9D9, (D882, bit 1)
+	const EVENT_BEAT_SEAFOAM_ISLANDS_5_TRAINER_0     ; 9DA, (D882, bit 2)
+	const EVENT_9DB                                  ; 9DB, (D882, bit 3)
+	const EVENT_9DC                                  ; 9DC, (D882, bit 4)
+	const EVENT_9DD                                  ; 9DD, (D882, bit 5)
+	const EVENT_9DE                                  ; 9DE, (D882, bit 6)
+	const EVENT_9DF                                  ; 9DF, (D882, bit 7)
+	const EVENT_9E0                                  ; 9E0, (D883, bit 0)
+	const EVENT_9E1                                  ; 9E1, (D883, bit 1)
+	const EVENT_9E2                                  ; 9E2, (D883, bit 2)
+	const EVENT_9E3                                  ; 9E3, (D883, bit 3)
+	const EVENT_9E4                                  ; 9E4, (D883, bit 4)
+	const EVENT_9E5                                  ; 9E5, (D883, bit 5)
+	const EVENT_9E6                                  ; 9E6, (D883, bit 6)
+	const EVENT_9E7                                  ; 9E7, (D883, bit 7)
+	const EVENT_9E8                                  ; 9E8, (D884, bit 0)
+	const EVENT_9E9                                  ; 9E9, (D884, bit 1)
+	const EVENT_9EA                                  ; 9EA, (D884, bit 2)
+	const EVENT_9EB                                  ; 9EB, (D884, bit 3)
+	const EVENT_9EC                                  ; 9EC, (D884, bit 4)
+	const EVENT_9ED                                  ; 9ED, (D884, bit 5)
+	const EVENT_9EE                                  ; 9EE, (D884, bit 6)
+	const EVENT_9EF                                  ; 9EF, (D884, bit 7)
+	const EVENT_9F0                                  ; 9F0, (D885, bit 0)
+	const EVENT_9F1                                  ; 9F1, (D885, bit 1)
+	const EVENT_9F2                                  ; 9F2, (D885, bit 2)
+	const EVENT_9F3                                  ; 9F3, (D885, bit 3)
+	const EVENT_9F4                                  ; 9F4, (D885, bit 4)
+	const EVENT_9F5                                  ; 9F5, (D885, bit 5)
+	const EVENT_9F6                                  ; 9F6, (D885, bit 6)
+	const EVENT_9F7                                  ; 9F7, (D885, bit 7)
+	const EVENT_9F8                                  ; 9F8, (D886, bit 0)
+	const EVENT_9F9                                  ; 9F9, (D886, bit 1)
+	const EVENT_9FA                                  ; 9FA, (D886, bit 2)
+	const EVENT_9FB                                  ; 9FB, (D886, bit 3)
+	const EVENT_9FC                                  ; 9FC, (D886, bit 4)
+	const EVENT_9FD                                  ; 9FD, (D886, bit 5)
+	const EVENT_9FE                                  ; 9FE, (D886, bit 6)
+	const EVENT_9FF                                  ; 9FF, (D886, bit 7)
--- /dev/null
+++ b/constants/event_macros.asm
@@ -1,0 +1,443 @@
+;\1 = event index
+;\2 = return result in carry instead of zero flag
+CheckEvent: MACRO
+event_byte = ((\1) / 8)
+	ld a, [wEventFlags + event_byte]
+
+	IF _NARG > 1
+		IF ((\1) % 8) == 7
+			add a
+		ELSE
+			REPT ((\1) % 8) + 1
+				rrca
+			ENDR
+		ENDC
+	ELSE
+		bit (\1) % 8, a
+	ENDC
+	ENDM
+
+;\1 = event index
+CheckEventReuseA: MACRO
+	IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+		ld a, [wEventFlags + event_byte]
+	ENDC
+
+	bit (\1) % 8, a
+	ENDM
+
+;\1 = event index
+;\2 = event index of the last event used before the branch
+CheckEventAfterBranchReuseA: MACRO
+event_byte = ((\2) / 8)
+	IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+		ld a, [wEventFlags + event_byte]
+	ENDC
+
+	bit (\1) % 8, a
+	ENDM
+
+;\1 = reg
+;\2 = event index
+;\3 = event index this event is relative to (optional, this is needed when there is a fixed flag address)
+EventFlagBit: MACRO
+	IF _NARG > 2
+		ld \1, ((\3) % 8) + ((\2) - (\3))
+	ELSE
+		ld \1, (\2) % 8
+	ENDC
+	ENDM
+
+;\1 = reg
+;\2 = event index
+EventFlagAddress: MACRO
+event_byte = ((\2) / 8)
+	ld \1, wEventFlags + event_byte
+	ENDM
+
+;\1 = event index
+CheckEventHL: MACRO
+event_byte = ((\1) / 8)
+	ld hl, wEventFlags + event_byte
+	bit (\1) % 8, [hl]
+	ENDM
+
+;\1 = event index
+CheckEventReuseHL: MACRO
+IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+		ld hl, wEventFlags + event_byte
+	ENDC
+
+	bit (\1) % 8, [hl]
+	ENDM
+
+; dangerous, only use when HL is guaranteed to be the desired value
+;\1 = event index
+CheckEventForceReuseHL: MACRO
+event_byte = ((\1) / 8)
+	bit (\1) % 8, [hl]
+	ENDM
+
+;\1 = event index
+;\2 = event index of the last event used before the branch
+CheckEventAfterBranchReuseHL: MACRO
+event_byte = ((\2) / 8)
+IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+		ld hl, wEventFlags + event_byte
+	ENDC
+
+	bit (\1) % 8, [hl]
+	ENDM
+
+;\1 = event index
+CheckAndSetEvent: MACRO
+event_byte = ((\1) / 8)
+	ld hl, wEventFlags + event_byte
+	bit (\1) % 8, [hl]
+	set (\1) % 8, [hl]
+	ENDM
+
+;\1 = event index
+CheckAndResetEvent: MACRO
+event_byte = ((\1) / 8)
+	ld hl, wEventFlags + event_byte
+	bit (\1) % 8, [hl]
+	res (\1) % 8, [hl]
+	ENDM
+
+;\1 = event index
+CheckAndSetEventA: MACRO
+	ld a, [wEventFlags + ((\1) / 8)]
+	bit (\1) % 8, a
+	set (\1) % 8, a
+	ld [wEventFlags + ((\1) / 8)], a
+	ENDM
+
+;\1 = event index
+CheckAndResetEventA: MACRO
+	ld a, [wEventFlags + ((\1) / 8)]
+	bit (\1) % 8, a
+	res (\1) % 8, a
+	ld [wEventFlags + ((\1) / 8)], a
+	ENDM
+
+;\1 = event index
+SetEvent: MACRO
+event_byte = ((\1) / 8)
+	ld hl, wEventFlags + event_byte
+	set (\1) % 8, [hl]
+	ENDM
+
+;\1 = event index
+SetEventReuseHL: MACRO
+	IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+		ld hl, wEventFlags + event_byte
+	ENDC
+
+	set (\1) % 8, [hl]
+	ENDM
+
+;\1 = event index
+;\2 = event index of the last event used before the branch
+SetEventAfterBranchReuseHL: MACRO
+event_byte = ((\2) / 8)
+IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+		ld hl, wEventFlags + event_byte
+	ENDC
+
+	set (\1) % 8, [hl]
+	ENDM
+
+; dangerous, only use when HL is guaranteed to be the desired value
+;\1 = event index
+SetEventForceReuseHL: MACRO
+event_byte = ((\1) / 8)
+	set (\1) % 8, [hl]
+	ENDM
+
+;\1 = event index
+;\2 = event index
+;\3 = event index (optional)
+SetEvents: MACRO
+	SetEvent \1
+	SetEventReuseHL \2
+
+	IF _NARG > 2
+		SetEventReuseHL \3
+	ENDC
+	ENDM
+
+;\1 = event index
+ResetEvent: MACRO
+event_byte = ((\1) / 8)
+	ld hl, wEventFlags + event_byte
+	res (\1) % 8, [hl]
+	ENDM
+
+;\1 = event index
+ResetEventReuseHL: MACRO
+	IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+		ld hl, wEventFlags + event_byte
+	ENDC
+
+	res (\1) % 8, [hl]
+	ENDM
+
+;\1 = event index
+;\2 = event index of the last event used before the branch
+ResetEventAfterBranchReuseHL: MACRO
+event_byte = ((\2) / 8)
+IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+		ld hl, wEventFlags + event_byte
+	ENDC
+
+	res (\1) % 8, [hl]
+	ENDM
+
+; dangerous, only use when HL is guaranteed to be the desired value
+;\1 = event index
+ResetEventForceReuseHL: MACRO
+event_byte = ((\1) / 8)
+	res (\1) % 8, [hl]
+	ENDM
+
+;\1 = event index
+;\2 = event index
+;\3 = event index (optional)
+ResetEvents: MACRO
+	ResetEvent \1
+	ResetEventReuseHL \2
+
+	IF _NARG > 2
+		ResetEventReuseHL \3
+	ENDC
+	ENDM
+
+;\1 = event index
+;\2 = number of bytes away from the base address (optional, for matching the ROM)
+dbEventFlagBit: MACRO
+	IF _NARG > 1
+		db ((\1) % 8) + ((\2) * 8)
+	ELSE
+		db ((\1) % 8)
+	ENDC
+	ENDM
+
+;\1 = event index
+;\2 = number of bytes away from the base address (optional, for matching the ROM)
+dwEventFlagAddress: MACRO
+	IF _NARG > 1
+		dw wEventFlags + ((\1) / 8) - (\2)
+	ELSE
+		dw wEventFlags + ((\1) / 8)
+	ENDC
+	ENDM
+
+;\1 = start
+;\2 = end
+SetEventRange: MACRO
+event_start_byte = ((\1) / 8)
+event_end_byte = ((\2) / 8)
+
+	IF event_end_byte < event_start_byte
+		FAIL "Incorrect argument order in SetEventRange."
+	ENDC
+
+	IF event_start_byte == event_end_byte
+		ld a, [wEventFlags + event_start_byte]
+		or (1 << (((\2) % 8) + 1)) - (1 << ((\1) % 8))
+		ld [wEventFlags + event_start_byte], a
+	ELSE
+event_fill_start = event_start_byte + 1
+event_fill_count = event_end_byte - event_start_byte - 1
+
+		IF ((\1) % 8) == 0
+event_fill_start = event_fill_start + -1
+event_fill_count = event_fill_count + 1
+		ELSE
+			ld a, [wEventFlags + event_start_byte]
+			or $ff - ((1 << ((\1) % 8)) - 1)
+			ld [wEventFlags + event_start_byte], a
+		ENDC
+
+		IF ((\2) % 8) == 7
+event_fill_count = event_fill_count + 1
+		ENDC
+
+		IF event_fill_count == 1
+			ld hl, wEventFlags + event_fill_start
+			ld [hl], $ff
+		ENDC
+
+		IF event_fill_count > 1
+			ld a, $ff
+			ld hl, wEventFlags + event_fill_start
+
+			REPT event_fill_count + -1
+				ld [hli], a
+			ENDR
+
+			ld [hl], a
+		ENDC
+
+		IF ((\2) % 8) == 0
+			ld hl, wEventFlags + event_end_byte
+			set 0, [hl]
+		ELSE
+			IF ((\2) % 8) != 7
+				ld a, [wEventFlags + event_end_byte]
+				or (1 << (((\2) % 8) + 1)) - 1
+				ld [wEventFlags + event_end_byte], a
+			ENDC
+		ENDC
+	ENDC
+	ENDM
+
+;\1 = start
+;\2 = end
+;\3 = assume a is 0 if present
+ResetEventRange: MACRO
+event_start_byte = ((\1) / 8)
+event_end_byte = ((\2) / 8)
+
+	IF event_end_byte < event_start_byte
+		FAIL "Incorrect argument order in ResetEventRange."
+	ENDC
+
+	IF event_start_byte == event_end_byte
+		ld a, [wEventFlags + event_start_byte]
+		and ~((1 << (((\2) % 8) + 1)) - (1 << ((\1) % 8))) & $ff
+		ld [wEventFlags + event_start_byte], a
+	ELSE
+event_fill_start = event_start_byte + 1
+event_fill_count = event_end_byte - event_start_byte - 1
+
+		IF ((\1) % 8) == 0
+event_fill_start = event_fill_start + -1
+event_fill_count = event_fill_count + 1
+		ELSE
+			ld a, [wEventFlags + event_start_byte]
+			and ~($ff - ((1 << ((\1) % 8)) - 1)) & $ff
+			ld [wEventFlags + event_start_byte], a
+		ENDC
+
+		IF ((\2) % 8) == 7
+event_fill_count = event_fill_count + 1
+		ENDC
+
+		IF event_fill_count == 1
+			ld hl, wEventFlags + event_fill_start
+			ld [hl], 0
+		ENDC
+
+		IF event_fill_count > 1
+			ld hl, wEventFlags + event_fill_start
+
+			; force xor a if we just to wrote to it above
+			IF (_NARG < 3) || (((\1) % 8) != 0)
+				xor a
+			ENDC
+
+			REPT event_fill_count + -1
+				ld [hli], a
+			ENDR
+
+			ld [hl], a
+		ENDC
+
+		IF ((\2) % 8) == 0
+			ld hl, wEventFlags + event_end_byte
+			res 0, [hl]
+		ELSE
+			IF ((\2) % 8) != 7
+				ld a, [wEventFlags + event_end_byte]
+				and ~((1 << (((\2) % 8) + 1)) - 1) & $ff
+				ld [wEventFlags + event_end_byte], a
+			ENDC
+		ENDC
+	ENDC
+	ENDM
+
+; returns whether both events are set in Z flag
+; This is counter-intuitive because the other event checks set the Z flag when
+; the event is not set, but this sets the Z flag when the event is set.
+;\1 = event index 1
+;\2 = event index 2
+;\3 = try to reuse a (optional)
+CheckBothEventsSet: MACRO
+	IF ((\1) / 8) == ((\2) / 8)
+		IF (_NARG < 3) || (((\1) / 8) != event_byte)
+event_byte = ((\1) / 8)
+			ld a, [wEventFlags + ((\1) / 8)]
+		ENDC
+		and (1 << ((\1) % 8)) | (1 << ((\2) % 8))
+		cp (1 << ((\1) % 8)) | (1 << ((\2) % 8))
+	ELSE
+		; This case doesn't happen in the original ROM.
+		IF ((\1) % 8) == ((\2) % 8)
+			push hl
+			ld a, [wEventFlags + ((\1) / 8)]
+			ld hl, wEventFlags + ((\2) / 8)
+			and [hl]
+			cpl
+			bit ((\1) % 8), a
+			pop hl
+		ELSE
+			push bc
+			ld a, [wEventFlags + ((\1) / 8)]
+			and (1 << ((\1) % 8))
+			ld b, a
+			ld a, [wEventFlags + ((\2) / 8)]
+			and (1 << ((\2) % 8))
+			or b
+			cp (1 << ((\1) % 8)) | (1 << ((\2) % 8))
+			pop bc
+		ENDC
+	ENDC
+	ENDM
+
+; returns the complement of whether either event is set in Z flag
+;\1 = event index 1
+;\2 = event index 2
+CheckEitherEventSet: MACRO
+	IF ((\1) / 8) == ((\2) / 8)
+		ld a, [wEventFlags + ((\1) / 8)]
+		and (1 << ((\1) % 8)) | (1 << ((\2) % 8))
+	ELSE
+		; This case doesn't happen in the original ROM.
+		IF ((\1) % 8) == ((\2) % 8)
+			push hl
+			ld a, [wEventFlags + ((\1) / 8)]
+			ld hl, wEventFlags + ((\2) / 8)
+			or [hl]
+			bit ((\1) % 8), a
+			pop hl
+		ELSE
+			push bc
+			ld a, [wEventFlags + ((\1) / 8)]
+			and (1 << ((\1) % 8))
+			ld b, a
+			ld a, [wEventFlags + ((\2) / 8)]
+			and (1 << ((\2) % 8))
+			or b
+			pop bc
+		ENDC
+	ENDC
+	ENDM
+
+; for handling fixed event bits when events are inserted/removed
+;\1 = event index
+;\2 = fixed flag bit
+AdjustEventBit: MACRO
+	IF ((\1) % 8) != (\2)
+		add ((\1) % 8) - (\2)
+	ENDC
+	ENDM
--- a/constants/hide_show_constants.asm
+++ b/constants/hide_show_constants.asm
@@ -82,7 +82,7 @@
 	const HS_MANSION_1_ITEM_2             ; 49 X
 	const HS_FIGHTING_DOJO_GIFT_1         ; 4A
 	const HS_FIGHTING_DOJO_GIFT_2         ; 4B
-	const HS_SILPH_CO_1F_1                ; 4C
+	const HS_SILPH_CO_1F_RECEPTIONIST     ; 4C
 	const HS_VOLTORB_1                    ; 4D X
 	const HS_VOLTORB_2                    ; 4E X
 	const HS_VOLTORB_3                    ; 4F X
--- a/engine/hall_of_fame.asm
+++ b/engine/hall_of_fame.asm
@@ -207,8 +207,7 @@
 	predef_jump CopyTileIDsFromList
 
 HoFDisplayPlayerStats: ; 70377 (1c:4377)
-	ld hl, wd747
-	set 3, [hl]
+	SetEvent EVENT_HALL_OF_FAME_DEX_RATING
 	predef DisplayDexRating
 	coord hl, 0, 4
 	ld b, $6
--- a/engine/hidden_object_functions17.asm
+++ b/engine/hidden_object_functions17.asm
@@ -314,8 +314,7 @@
 	ld [wcd5b], a
 
 ; Don't do the trash can puzzle if it's already been done.
-	ld a, [wd773]
-	bit 0, a
+	CheckEvent EVENT_2ND_LOCK_OPENED
 	jr z, .ok
 
 	tx_pre_jump VermilionGymTrashText
@@ -335,8 +334,7 @@
 
 .openFirstLock
 ; Next can is trying for the second switch.
-	ld hl, wd773
-	set 1, [hl]
+	SetEvent EVENT_1ST_LOCK_OPENED
 
 	ld hl, GymTrashCans
 	ld a, [wcd5b]
@@ -379,8 +377,7 @@
 	jr z, .openSecondLock
 
 ; Reset the cans.
-	ld hl, wd773
-	res 1, [hl]
+	ResetEvent EVENT_1ST_LOCK_OPENED
 	call Random
 
 	and $e
@@ -391,8 +388,7 @@
 
 .openSecondLock
 ; Completed the trash can puzzle.
-	ld hl, wd773
-	set 0, [hl]
+	SetEvent EVENT_2ND_LOCK_OPENED
 	ld hl, wd126
 	set 6, [hl]
 
--- a/engine/hidden_object_functions18.asm
+++ b/engine/hidden_object_functions18.asm
@@ -152,8 +152,7 @@
 
 SaffronCityPokecenterBenchGuyText: ; 624e4 (18:64e4)
 	TX_ASM
-	ld a, [wd838]
-	bit 7, a
+	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	ld hl, SaffronCityPokecenterBenchGuyText2
 	jr nz, .asm_624f2
 	ld hl, SaffronCityPokecenterBenchGuyText1
--- a/engine/hidden_object_functions7.asm
+++ b/engine/hidden_object_functions7.asm
@@ -36,8 +36,7 @@
 	db "@"
 
 SafariZoneCheck: ; 1e988 (7:6988)
-	ld hl, wd790
-	bit 7, [hl]; if we are not in the Safari Zone,
+	CheckEventHL EVENT_IN_SAFARI_ZONE ; if we are not in the Safari Zone,
 	jr z, SafariZoneGameStillGoing ; don't bother printing game over text
 	ld a, [W_NUMSAFARIBALLS]
 	and a
@@ -85,8 +84,7 @@
 	ld [wDestinationWarpID], a
 	ld a, $5
 	ld [W_SAFARIZONEENTRANCECURSCRIPT], a
-	ld hl, wd790
-	set 6, [hl]
+	SetEvent EVENT_SAFARI_GAME_OVER
 	ld a, $1
 	ld [wSafariZoneGameOver], a
 	ret
@@ -190,8 +188,8 @@
 	TX_FAR _CinnabarQuizQuestionsText6
 	db "@"
 
-CinnabarGymQuiz_1ea8a: ; 1ea8a (7:6a8a)
-	ld hl, wd79c
+CinnabarGymGateFlagAction: ; 1ea8a (7:6a8a)
+	EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED
 	predef_jump FlagActionPredef
 
 CinnabarGymQuiz_1ea92: ; 1ea92 (7:6a92)
@@ -208,10 +206,11 @@
 	ld hl, CinnabarGymQuizCorrectText
 	call PrintText
 	ld a, [$ffe0]
+	AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
 	ld c, a
 	ld b, FLAG_SET
-	call CinnabarGymQuiz_1ea8a
-	jp CinnabarGymQuiz_1eb0a
+	call CinnabarGymGateFlagAction
+	jp UpdateCinnabarGymGateTileBlocks_
 .asm_1eab8
 	call WaitForSoundToFinish
 	ld a, SFX_DENIED
@@ -221,9 +220,10 @@
 	call PrintText
 	ld a, [$ffdb]
 	add $2
+	AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2
 	ld c, a
 	ld b, FLAG_TEST
-	ld hl, wd79a
+	EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0
 	predef FlagActionPredef
 	ld a, c
 	and a
@@ -240,9 +240,10 @@
 	TX_ASM
 
 	ld a, [$ffe0]
+	AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
 	ld c, a
 	ld b, FLAG_TEST
-	call CinnabarGymQuiz_1ea8a
+	call CinnabarGymGateFlagAction
 	ld a, c
 	and a
 	jp nz, TextScriptEnd
@@ -256,15 +257,17 @@
 	TX_FAR _CinnabarGymQuizIncorrectText
 	db "@"
 
-CinnabarGymQuiz_1eb0a: ; 1eb0a (7:6b0a)
-	ld a, $6
+UpdateCinnabarGymGateTileBlocks_: ; 1eb0a (7:6b0a)
+; Update the overworld map with open floor blocks or locked gate blocks
+; depending on event flags.
+	ld a, 6
 	ld [$ffdb], a
-.asm_1eb0e
+.loop
 	ld a, [$ffdb]
 	dec a
 	add a
 	add a
-	ld d, $0
+	ld d, 0
 	ld e, a
 	ld hl, CinnabarGymGateCoords
 	add hl, de
@@ -277,23 +280,24 @@
 	push bc
 	ld a, [$ffdb]
 	ld [$ffe0], a
+	AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
 	ld c, a
 	ld b, FLAG_TEST
-	call CinnabarGymQuiz_1ea8a
+	call CinnabarGymGateFlagAction
 	ld a, c
 	and a
-	jr nz, .asm_1eb36
+	jr nz, .unlocked
 	ld a, [wd12f]
-	jr .asm_1eb38
-.asm_1eb36
+	jr .next
+.unlocked
 	ld a, $e
-.asm_1eb38
+.next
 	pop bc
 	ld [wd09f], a
 	predef ReplaceTileBlock
 	ld hl, $ffdb
 	dec [hl]
-	jr nz, .asm_1eb0e
+	jr nz, .loop
 	ret
 
 CinnabarGymGateCoords: ; 1eb48 (7:6b48)
@@ -320,12 +324,11 @@
 	ld a, [wSpriteStateData1 + 9]
 	cp SPRITE_FACING_UP
 	ret nz
-	ld a, [wd7f2]
-	bit 7, a
+	CheckEvent EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING
 	jr nz, .asm_1ebd2
-	bit 3, a
+	CheckEventReuseA EVENT_USED_CELL_SEPARATOR_ON_BILL
 	jr nz, .asm_1eb86
-	bit 6, a
+	CheckEventReuseA EVENT_BILL_SAID_USE_CELL_SEPARATOR
 	jr nz, .asm_1eb8b
 .asm_1eb86
 	tx_pre_jump BillsHouseMonitorText
@@ -354,8 +357,7 @@
 	call PlaySound
 	call WaitForSoundToFinish
 	call PlayDefaultMusic
-	ld hl, wd7f2
-	set 3, [hl]
+	SetEvent EVENT_USED_CELL_SEPARATOR_ON_BILL
 	ret
 .asm_1ebd2
 	ld a, $1
--- a/engine/items/items.asm
+++ b/engine/items/items.asm
@@ -432,8 +432,7 @@
 	call ClearSprites
 	call SendNewMonToBox
 	ld hl,ItemUseBallText07
-	ld a,[wd7f1]
-	bit 0,a		;already met Bill?
+	CheckEvent EVENT_MET_BILL
 	jr nz,.sendToBox2
 	ld hl,ItemUseBallText08
 .sendToBox2
@@ -1375,8 +1374,7 @@
 	set 6,[hl]
 	ld hl,wd72e
 	res 4,[hl]
-	ld hl,wd790
-	res 7,[hl] ; unset Safari Zone bit
+	ResetEvent EVENT_IN_SAFARI_ZONE
 	xor a
 	ld [W_NUMSAFARIBALLS],a
 	ld [W_SAFARIZONEENTRANCECURSCRIPT],a
@@ -1584,8 +1582,7 @@
 	ld a,[W_CURMAP]
 	cp a,ROUTE_12
 	jr nz,.notRoute12
-	ld a,[wd7d8]
-	bit 7,a ; has the player beaten Route 12 Snorlax yet?
+	CheckEvent EVENT_BEAT_ROUTE12_SNORLAX
 	jr nz,.noSnorlaxToWakeUp
 ; if the player hasn't beaten Route 12 Snorlax
 	ld hl,Route12SnorlaxFluteCoords
@@ -1593,14 +1590,12 @@
 	jr nc,.noSnorlaxToWakeUp
 	ld hl,PlayedFluteHadEffectText
 	call PrintText
-	ld hl,wd7d8
-	set 6,[hl] ; trigger Snorlax fight (handled by map script)
+	SetEvent EVENT_FIGHT_ROUTE12_SNORLAX
 	ret
 .notRoute12
 	cp a,ROUTE_16
 	jr nz,.noSnorlaxToWakeUp
-	ld a,[wd7e0]
-	bit 1,a ; has the player beaten Route 16 Snorlax yet?
+	CheckEvent EVENT_BEAT_ROUTE16_SNORLAX
 	jr nz,.noSnorlaxToWakeUp
 ; if the player hasn't beaten Route 16 Snorlax
 	ld hl,Route16SnorlaxFluteCoords
@@ -1608,8 +1603,7 @@
 	jr nc,.noSnorlaxToWakeUp
 	ld hl,PlayedFluteHadEffectText
 	call PrintText
-	ld hl,wd7e0
-	set 0,[hl] ; trigger Snorlax fight (handled by map script)
+	SetEvent EVENT_FIGHT_ROUTE16_SNORLAX
 	ret
 .noSnorlaxToWakeUp
 	ld hl,PlayedFluteNoEffectText
--- a/engine/menu/bills_pc.asm
+++ b/engine/menu/bills_pc.asm
@@ -5,8 +5,7 @@
 	ld a, [wNumHoFTeams]
 	and a
 	jr nz, .leaguePCAvailable
-	ld a, [wd74b]
-	bit 5, a ; received pokedex?
+	CheckEvent EVENT_GOT_POKEDEX
 	jr z, .noOaksPC
 	ld a, [wNumHoFTeams]
 	and a
@@ -29,8 +28,7 @@
 	call UpdateSprites
 	ld a, 3
 	ld [wMaxMenuItem], a
-	ld a, [wd7f1]
-	bit 0, a
+	CheckEvent EVENT_MET_BILL
 	jr nz, .metBill
 	coord hl, 2, 2
 	ld de, SomeonesPCText
@@ -47,8 +45,7 @@
 	ld h, b
 	ld de, PlayersPCText
 	call PlaceString
-	ld a, [wd74b]
-	bit 5, a ; received pokedex?
+	CheckEvent EVENT_GOT_POKEDEX
 	jr z, .noOaksPC2
 	coord hl, 2, 6
 	ld de, OaksPCText
--- a/engine/menu/pc.asm
+++ b/engine/menu/pc.asm
@@ -74,8 +74,7 @@
 	ld a, SFX_ENTER_PC
 	call PlaySound
 	call WaitForSoundToFinish
-	ld a, [wd7f1] ;has to do with having met Bill
-	bit 0, a
+	CheckEvent EVENT_MET_BILL
 	jr nz, .billsPC ;if you've met bill, use that bill's instead of someone's
 	ld hl, AccessedSomeonesPCText
 	jr .printText
--- a/engine/menu/start_menu.asm
+++ b/engine/menu/start_menu.asm
@@ -24,8 +24,7 @@
 	and a
 	jr nz,.loop
 ; if the player pressed tried to go past the top item, wrap around to the bottom
-	ld a,[wd74b]
-	bit 5,a ; does the player have the pokedex?
+	CheckEvent EVENT_GOT_POKEDEX
 	ld a,6 ; there are 7 menu items with the pokedex, so the max index is 6
 	jr nz,.wrapMenuItemId
 	dec a ; there are only 6 menu items without the pokedex
@@ -37,8 +36,7 @@
 	bit 7,a
 	jr z,.buttonPressed
 ; if the player pressed tried to go past the bottom item, wrap around to the top
-	ld a,[wd74b]
-	bit 5,a ; does the player have the pokedex?
+	CheckEvent EVENT_GOT_POKEDEX
 	ld a,[wCurrentMenuItem]
 	ld c,7 ; there are 7 menu items with the pokedex
 	jr nz,.checkIfPastBottom
@@ -59,8 +57,7 @@
 	and a,%00001010 ; was the Start button or B button pressed?
 	jp nz,CloseStartMenu
 	call SaveScreenTilesToBuffer2 ; copy background from wTileMap to wTileMapBackup2
-	ld a,[wd74b]
-	bit 5,a ; does the player have the pokedex?
+	CheckEvent EVENT_GOT_POKEDEX
 	ld a,[wCurrentMenuItem]
 	jr nz,.displayMenuItem
 	inc a ; adjust position to account for missing pokedex menu item
--- a/engine/overworld/cable_club_npc.asm
+++ b/engine/overworld/cable_club_npc.asm
@@ -1,8 +1,7 @@
 CableClubNPC: ; 71c5 (1:71c5)
 	ld hl, CableClubNPCWelcomeText
 	call PrintText
-	ld a, [wd74b]
-	bit 5, a ; received pokedex?
+	CheckEvent EVENT_GOT_POKEDEX
 	jp nz, .receivedPokedex
 ; if the player hasn't received the pokedex
 	ld c, 60
--- a/engine/overworld/cinnabar_lab.asm
+++ b/engine/overworld/cinnabar_lab.asm
@@ -65,9 +65,7 @@
 	callba RemoveItemByID
 	ld hl, LabFossil_610b8
 	call PrintText
-	ld hl, wd7a3
-	set 0, [hl]
-	set 1, [hl]
+	SetEvents EVENT_GAVE_FOSSIL_TO_LAB, EVENT_LAB_STILL_REVIVING_FOSSIL
 	ret
 .asm_610a7
 	ld hl, LabFossil_610bd
--- a/engine/pokedex_rating.asm
+++ b/engine/pokedex_rating.asm
@@ -23,10 +23,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a ; load text pointer into hl
-	ld a, [wd747]
-	bit 3, a
-	res 3, a
-	ld [wd747], a
+	CheckAndResetEventA EVENT_HALL_OF_FAME_DEX_RATING
 	jr nz, .label3
 	push hl
 	ld hl, PokedexRatingText_441cc
--- a/home.asm
+++ b/home.asm
@@ -4590,8 +4590,8 @@
 INCLUDE "home/predef.asm"
 
 
-Func_3ead:: ; 3ead (0:3ead)
-	jpba CinnabarGymQuiz_1eb0a
+UpdateCinnabarGymGateTileBlocks:: ; 3ead (0:3ead)
+	jpba UpdateCinnabarGymGateTileBlocks_
 
 CheckForHiddenObjectOrBookshelfOrCardKeyDoor:: ; 3eb5 (0:3eb5)
 	ld a, [H_LOADEDROMBANK]
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -287,8 +287,7 @@
 	ld hl,wd72c
 	res 0,[hl] ; indicate that the player has stepped thrice since the last battle
 .doneStepCounting
-	ld a,[wd790]
-	bit 7,a ; in the safari zone?
+	CheckEvent EVENT_IN_SAFARI_ZONE
 	jr z,.notSafariZone
 	callba SafariZoneCheckSteps
 	ld a,[wSafariZoneGameOver]
@@ -320,8 +319,7 @@
 	ld a,[W_CURMAP]
 	cp a,CINNABAR_GYM
 	jr nz,.notCinnabarGym
-	ld hl,wd79b
-	set 7,[hl]
+	SetEvent EVENT_2A7
 .notCinnabarGym
 	ld hl,wd72e
 	set 5,[hl]
--- a/main.asm
+++ b/main.asm
@@ -1002,8 +1002,7 @@
 ; if text ID is 0 (i.e. the start menu)
 ; Note that the start menu text border is also drawn in the function directly
 ; below this, so this seems unnecessary.
-	ld a,[wd74b]
-	bit 5,a ; does the player have the pokedex?
+	CheckEvent EVENT_GOT_POKEDEX
 ; start menu with pokedex
 	coord hl, 10, 0
 	ld b,$0e
@@ -1071,8 +1070,7 @@
 
 ; function that displays the start menu
 DrawStartMenu: ; 710b (1:710b)
-	ld a,[wd74b]
-	bit 5,a ; does the player have the pokedex?
+	CheckEvent EVENT_GOT_POKEDEX
 ; menu with pokedex
 	coord hl, 10, 0
 	ld b,$0e
@@ -1098,8 +1096,7 @@
 	ld hl,wd730
 	set 6,[hl] ; no pauses between printing each letter
 	coord hl, 12, 2
-	ld a,[wd74b]
-	bit 5,a ; does the player have the pokedex?
+	CheckEvent EVENT_GOT_POKEDEX
 ; case for not having pokdex
 	ld a,$06
 	jr z,.storeMenuItemCount
@@ -2763,9 +2760,7 @@
 	ld a, [W_CURMAP]
 	cp SEAFOAM_ISLANDS_5
 	ret nz
-	ld a, [wd881]
-	and $3
-	cp $3
+	CheckBothEventsSet EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE
 	ret z
 	ld hl, CoordsData_cdf7
 	call ArePlayerCoordsInArray
--- a/scripts/agatha.asm
+++ b/scripts/agatha.asm
@@ -13,8 +13,7 @@
 	bit 5, [hl]
 	res 5, [hl]
 	ret z
-	ld a, [wd865]
-	bit 1, a
+	CheckEvent EVENT_BEAT_AGATHAS_ROOM_TRAINER_0
 	jr z, .asm_76457
 	ld a, $e
 	jp AgathaScript_76459
@@ -70,9 +69,7 @@
 	ld a, [wCoordIndex]
 	cp $3
 	jr c, .asm_764b4
-	ld hl, wd865
-	bit 6, [hl]
-	set 6, [hl]
+	CheckAndSetEvent EVENT_AUTOWALKED_INTO_AGATHAS_ROOM
 	jr z, AgathaScript_76474
 .asm_764b4
 	ld a, $2
@@ -124,9 +121,9 @@
 
 AgathaTrainerHeaders: ; 76509 (1d:6509)
 AgathaTrainerHeader0: ; 76509 (1d:6509)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_AGATHAS_ROOM_TRAINER_0
 	db ($0 << 4) ; trainer's view range
-	dw wd865 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_AGATHAS_ROOM_TRAINER_0
 	dw AgathaBeforeBattleText ; TextBeforeBattle
 	dw AgathaAfterBattleText ; TextAfterBattle
 	dw AgathaEndBattleText ; TextEndBattle
--- a/scripts/bikeshop.asm
+++ b/scripts/bikeshop.asm
@@ -8,8 +8,7 @@
 
 BikeShopText1: ; 1d745 (7:5745)
 	TX_ASM
-	ld a, [wd75f]
-	bit 0, a
+	CheckEvent EVENT_GOT_BICYCLE
 	jr z, .asm_260d4
 	ld hl, BikeShopText_1d82f
 	call PrintText
@@ -26,8 +25,7 @@
 	ld a, BIKE_VOUCHER
 	ld [$ffdb], a
 	callba RemoveItemByID
-	ld hl, wd75f
-	set 0, [hl]
+	SetEvent EVENT_GOT_BICYCLE
 	ld hl, BikeShopText_1d824
 	call PrintText
 	jr .Done
@@ -131,8 +129,7 @@
 
 BikeShopText3: ; 1d848 (7:5848)
 	TX_ASM
-	ld a, [wd75f]
-	bit 0, a
+	CheckEvent EVENT_GOT_BICYCLE
 	ld hl, BikeShopText_1d861
 	jr nz, .asm_34d2d
 	ld hl, BikeShopText_1d85c
--- a/scripts/billshouse.asm
+++ b/scripts/billshouse.asm
@@ -51,8 +51,7 @@
 	ld a, HS_BILL_POKEMON
 	ld [wcc4d], a
 	predef HideObject
-	ld hl, wd7f2
-	set 6, [hl]
+	SetEvent EVENT_BILL_SAID_USE_CELL_SEPARATOR
 	xor a
 	ld [wJoyIgnore], a
 	ld a, $3
@@ -60,8 +59,7 @@
 	ret
 
 BillsHouseScript3: ; 1e7c5 (7:67c5)
-	ld a, [wd7f2]
-	bit 3, a
+	CheckEvent EVENT_USED_CELL_SEPARATOR_ON_BILL
 	ret z
 	ld a, $f0
 	ld [wJoyIgnore], a
@@ -103,10 +101,8 @@
 	ret nz
 	xor a
 	ld [wJoyIgnore], a
-	ld hl, wd7f2
-	set 5, [hl]
-	ld hl, wd7f1
-	set 0, [hl]
+	SetEvent EVENT_MET_BILL_2 ; this event seems redundant
+	SetEvent EVENT_MET_BILL
 	ld a, $0
 	ld [W_BILLSHOUSECURSCRIPT], a
 	ret
@@ -163,8 +159,7 @@
 
 BillsHouseText2: ; 1e874 (7:6874)
 	TX_ASM
-	ld a, [wd7f2]
-	bit 4, a
+	CheckEvent EVENT_GOT_SS_TICKET
 	jr nz, .asm_1e8a9
 	ld hl, BillThankYouText
 	call PrintText
@@ -173,8 +168,7 @@
 	jr nc, .BagFull
 	ld hl, SSTicketReceivedText
 	call PrintText
-	ld hl, wd7f2
-	set 4, [hl]
+	SetEvent EVENT_GOT_SS_TICKET
 	ld a, HS_CERULEAN_GUARD_1
 	ld [wcc4d], a
 	predef ShowObject
--- a/scripts/blueshouse.asm
+++ b/scripts/blueshouse.asm
@@ -9,8 +9,7 @@
 	dw BluesHouseScript1
 
 BluesHouseScript0: ; 19b4b (6:5b4b)
-	ld hl,wd74a
-	set 1,[hl]
+	SetEvent EVENT_ENTERED_BLUES_HOUSE
 
 	; trigger the next script
 	ld a,1
@@ -27,11 +26,9 @@
 
 BluesHouseText1: ; 19b5d (6:5b5d)
 	TX_ASM
-	ld a,[wd74a]
-	bit 0,a
+	CheckEvent EVENT_GOT_TOWN_MAP
 	jr nz,.GotMap
-	ld a,[wd74b]
-	bit 5,a
+	CheckEvent EVENT_GOT_POKEDEX
 	jr nz,.GiveMap
 	ld hl,DaisyInitialText
 	call PrintText
@@ -47,8 +44,7 @@
 	predef HideObject ; hide table map object
 	ld hl,GotMapText
 	call PrintText
-	ld hl,wd74a
-	set 0,[hl]
+	SetEvent EVENT_GOT_TOWN_MAP
 	jr .done
 .GotMap
 	ld hl,DaisyUseMapText
--- a/scripts/bruno.asm
+++ b/scripts/bruno.asm
@@ -13,8 +13,7 @@
 	bit 5, [hl]
 	res 5, [hl]
 	ret z
-	ld a, [wd864]
-	bit 1, a
+	CheckEvent EVENT_BEAT_BRUNOS_ROOM_TRAINER_0
 	jr z, .asm_76300
 	ld a, $5
 	jp BrunoScript_76302
@@ -70,9 +69,7 @@
 	ld a, [wCoordIndex]
 	cp $3
 	jr c, .asm_7635d
-	ld hl, wd864
-	bit 6, [hl]
-	set 6, [hl]
+	CheckAndSetEvent EVENT_AUTOWALKED_INTO_BRUNOS_ROOM
 	jr z, BrunoScript_7631d
 .asm_7635d
 	ld a, $2
@@ -121,9 +118,9 @@
 
 BrunoTrainerHeaders: ; 763ac (1d:63ac)
 BrunoTrainerHeader0: ; 763ac (1d:63ac)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_BRUNOS_ROOM_TRAINER_0
 	db ($0 << 4) ; trainer's view range
-	dw wd864 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_BRUNOS_ROOM_TRAINER_0
 	dw BrunoBeforeBattleText ; TextBeforeBattle
 	dw BrunoAfterBattleText ; TextAfterBattle
 	dw BrunoEndBattleText ; TextEndBattle
--- a/scripts/celadoncity.asm
+++ b/scripts/celadoncity.asm
@@ -1,10 +1,7 @@
 CeladonCityScript: ; 19956 (6:5956)
 	call EnableAutoTextBoxDrawing
-	ld hl, wd77e
-	res 0, [hl]
-	res 7, [hl]
-	ld hl, wd816
-	res 7, [hl]
+	ResetEvents EVENT_1B8, EVENT_1BF
+	ResetEvent EVENT_67F
 	ret
 
 CeladonCityTextPointers: ; 19966 (6:5966)
@@ -45,8 +42,7 @@
 
 CeladonCityText5: ; 1999e (6:599e)
 	TX_ASM
-	ld a, [wd777]
-	bit 0, a
+	CheckEvent EVENT_GOT_TM41
 	jr nz, .asm_7053f
 	ld hl, TM41PreText
 	call PrintText
@@ -59,8 +55,7 @@
 .Success
 	ld hl, ReceivedTM41Text
 	call PrintText
-	ld hl, wd777
-	set 0, [hl]
+	SetEvent EVENT_GOT_TM41
 	jr .Done
 .asm_7053f
 	ld hl, TM41ExplanationText
--- a/scripts/celadondiner.asm
+++ b/scripts/celadondiner.asm
@@ -27,8 +27,7 @@
 
 CeladonDinerText5: ; 49173 (12:5173)
 	TX_ASM
-	ld a, [wd783]
-	bit 0, a
+	CheckEvent EVENT_GOT_COIN_CASE
 	jr nz, .asm_eb14d
 	ld hl, CeladonDinerText_491a7
 	call PrintText
@@ -35,8 +34,7 @@
 	ld bc, (COIN_CASE << 8) | 1
 	call GiveItem
 	jr nc, .BagFull
-	ld hl, wd783
-	set 0, [hl]
+	SetEvent EVENT_GOT_COIN_CASE
 	ld hl, ReceivedCoinCaseText
 	call PrintText
 	jr .asm_68b61
--- a/scripts/celadongamecorner.asm
+++ b/scripts/celadongamecorner.asm
@@ -28,8 +28,7 @@
 	bit 5, [hl]
 	res 5, [hl]
 	ret z
-	ld a, [wd77e]
-	bit 1, a
+	CheckEvent EVENT_FOUND_ROCKET_HIDEOUT
 	ret nz
 	ld a, $2a
 	ld [wd09f], a
@@ -227,8 +226,7 @@
 
 CeladonGameCornerText5: ; 48d4a (12:4d4a)
 	TX_ASM
-	ld a, [wd77e]
-	bit 2, a
+	CheckEvent EVENT_GOT_10_COINS
 	jr nz, .asm_48d89
 	ld hl, CeladonGameCornerText_48d9c
 	call PrintText
@@ -246,8 +244,7 @@
 	ld hl, hCoins + 1
 	ld c, $2
 	predef AddBCDPredef
-	ld hl, wd77e
-	set 2, [hl]
+	SetEvent EVENT_GOT_10_COINS
 	ld a, $1
 	ld [wDoNotWaitForButtonPressAfterDisplayingText], a
 	ld hl, Received10CoinsText
@@ -286,8 +283,7 @@
 
 CeladonGameCornerText7: ; 48db6 (12:4db6)
 	TX_ASM
-	ld a, [wd77c]
-	bit 1, a
+	CheckEvent EVENT_BEAT_ERIKA
 	ld hl, CeladonGameCornerText_48dca
 	jr z, .asm_48dc4
 	ld hl, CeladonGameCornerText_48dcf
@@ -309,8 +305,7 @@
 
 CeladonGameCornerText9: ; 48dd9 (12:4dd9)
 	TX_ASM
-	ld a, [wd77e]
-	bit 4, a
+	CheckEvent EVENT_GOT_20_COINS_2
 	jr nz, .asm_48e13
 	ld hl, CeladonGameCornerText_48e26
 	call PrintText
@@ -328,8 +323,7 @@
 	ld hl, hCoins + 1
 	ld c, $2
 	predef AddBCDPredef
-	ld hl, wd77e
-	set 4, [hl]
+	SetEvent EVENT_GOT_20_COINS_2
 	ld hl, Received20CoinsText
 	jr .asm_48e20
 .asm_48e13
@@ -362,8 +356,7 @@
 
 CeladonGameCornerText10: ; 48e3b (12:4e3b)
 	TX_ASM
-	ld a, [wd77e]
-	bit 3, a
+	CheckEvent EVENT_GOT_20_COINS
 	jr nz, .asm_48e75
 	ld hl, CeladonGameCornerText_48e88
 	call PrintText
@@ -381,8 +374,7 @@
 	ld hl, hCoins + 1
 	ld c, $2
 	predef AddBCDPredef
-	ld hl, wd77e
-	set 3, [hl]
+	SetEvent EVENT_GOT_20_COINS
 	ld hl, CeladonGameCornerText_48e8d
 	jr .asm_48e82
 .asm_48e75
@@ -457,8 +449,7 @@
 	ld a, SFX_GO_INSIDE
 	call PlaySound
 	call WaitForSoundToFinish
-	ld hl, wd77e
-	set 1, [hl]
+	SetEvent EVENT_FOUND_ROCKET_HIDEOUT
 	ld a, $43
 	ld [wd09f], a
 	ld bc, $0208
--- a/scripts/celadongym.asm
+++ b/scripts/celadongym.asm
@@ -46,8 +46,7 @@
 	ld a, $9
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd77c
-	set 1, [hl]
+	SetEvent EVENT_BEAT_ERIKA
 	ld bc, (TM_21 << 8) | 1
 	call GiveItem
 	jr nc, .BagFull
@@ -54,8 +53,7 @@
 	ld a, $a
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd77c
-	set 0, [hl]
+	SetEvent EVENT_GOT_TM21
 	jr .asm_4898c
 .BagFull
 	ld a, $b
@@ -68,11 +66,7 @@
 	set 3, [hl]
 
 	; deactivate gym trainers
-	ld a, [wd77c]
-	or %11111100
-	ld [wd77c], a
-	ld hl, wd77d
-	set 0, [hl]
+	SetEventRange EVENT_BEAT_CELADON_GYM_TRAINER_0, EVENT_BEAT_CELADON_GYM_TRAINER_7
 
 	jp CeladonGymText_48943
 
@@ -91,9 +85,9 @@
 
 CeladonGymTrainerHeaders: ; 489bc (12:49bc)
 CeladonGymTrainerHeader0: ; 489bc (12:49bc)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_CELADON_GYM_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd77c ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_CELADON_GYM_TRAINER_0
 	dw CeladonGymBattleText2 ; TextBeforeBattle
 	dw CeladonGymAfterBattleText2 ; TextAfterBattle
 	dw CeladonGymEndBattleText2 ; TextEndBattle
@@ -100,9 +94,9 @@
 	dw CeladonGymEndBattleText2 ; TextEndBattle
 
 CeladonGymTrainerHeader2: ; 489c8 (12:49c8)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_CELADON_GYM_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd77c ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_CELADON_GYM_TRAINER_2
 	dw CeladonGymBattleText3 ; TextBeforeBattle
 	dw CeladonGymAfterBattleText3 ; TextAfterBattle
 	dw CeladonGymEndBattleText3 ; TextEndBattle
@@ -109,9 +103,9 @@
 	dw CeladonGymEndBattleText3 ; TextEndBattle
 
 CeladonGymTrainerHeader3: ; 489d4 (12:49d4)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_CELADON_GYM_TRAINER_3
 	db ($4 << 4) ; trainer's view range
-	dw wd77c ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_CELADON_GYM_TRAINER_3
 	dw CeladonGymBattleText4 ; TextBeforeBattle
 	dw CeladonGymAfterBattleText4 ; TextAfterBattle
 	dw CeladonGymEndBattleText4 ; TextEndBattle
@@ -118,9 +112,9 @@
 	dw CeladonGymEndBattleText4 ; TextEndBattle
 
 CeladonGymTrainerHeader4: ; 489e0 (12:49e0)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_CELADON_GYM_TRAINER_4
 	db ($4 << 4) ; trainer's view range
-	dw wd77c ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_CELADON_GYM_TRAINER_4
 	dw CeladonGymBattleText5 ; TextBeforeBattle
 	dw CeladonGymAfterBattleText5 ; TextAfterBattle
 	dw CeladonGymEndBattleText5 ; TextEndBattle
@@ -127,9 +121,9 @@
 	dw CeladonGymEndBattleText5 ; TextEndBattle
 
 CeladonGymTrainerHeader5: ; 489ec (12:49ec)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_CELADON_GYM_TRAINER_5
 	db ($2 << 4) ; trainer's view range
-	dw wd77c ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_CELADON_GYM_TRAINER_5
 	dw CeladonGymBattleText6 ; TextBeforeBattle
 	dw CeladonGymAfterBattleText6 ; TextAfterBattle
 	dw CeladonGymEndBattleText6 ; TextEndBattle
@@ -136,9 +130,9 @@
 	dw CeladonGymEndBattleText6 ; TextEndBattle
 
 CeladonGymTrainerHeader6: ; 489f8 (12:49f8)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_CELADON_GYM_TRAINER_6
 	db ($2 << 4) ; trainer's view range
-	dw wd77c ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_CELADON_GYM_TRAINER_6
 	dw CeladonGymBattleText7 ; TextBeforeBattle
 	dw CeladonGymAfterBattleText7 ; TextAfterBattle
 	dw CeladonGymEndBattleText7 ; TextEndBattle
@@ -145,9 +139,9 @@
 	dw CeladonGymEndBattleText7 ; TextEndBattle
 
 CeladonGymTrainerHeader7: ; 48a04 (12:4a04)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_CELADON_GYM_TRAINER_7, 1
 	db ($3 << 4) ; trainer's view range
-	dw wd77c ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_CELADON_GYM_TRAINER_7, 1
 	dw CeladonGymBattleText8 ; TextBeforeBattle
 	dw CeladonGymAfterBattleText8 ; TextAfterBattle
 	dw CeladonGymEndBattleText8 ; TextEndBattle
@@ -157,10 +151,9 @@
 
 CeladonGymText1: ; 48a11 (12:4a11)
 	TX_ASM
-	ld a, [wd77c]
-	bit 1, a
+	CheckEvent EVENT_BEAT_ERIKA
 	jr z, .asm_48a2d
-	bit 0, a
+	CheckEventReuseA EVENT_GOT_TM21
 	jr nz, .asm_48a25
 	call z, CeladonGymText_48963
 	call DisableWaitingAfterTextDisplay
--- a/scripts/celadonmart3.asm
+++ b/scripts/celadonmart3.asm
@@ -22,8 +22,7 @@
 
 CeladonMart3Text1: ; 4824a (12:424a)
 	TX_ASM
-	ld a, [wd778]
-	bit 7, a
+	CheckEvent EVENT_GOT_TM18
 	jr nz, .asm_a5463
 	ld hl, TM18PreReceiveText
 	call PrintText
@@ -30,8 +29,7 @@
 	ld bc, (TM_18 << 8) | 1
 	call GiveItem
 	jr nc, .BagFull
-	ld hl, wd778
-	set 7, [hl]
+	SetEvent EVENT_GOT_TM18
 	ld hl, ReceivedTM18Text
 	jr .asm_81359
 .BagFull
--- a/scripts/celadonmartroof.asm
+++ b/scripts/celadonmartroof.asm
@@ -83,8 +83,7 @@
 	jr z, .asm_484b6
 	cp SODA_POP
 	jr z, .asm_48492
-	ld a, [wd778]
-	bit 6, a
+	CheckEvent EVENT_GOT_TM49
 	jr nz, .asm_484e0
 	ld hl, CeladonMartRoofText_48515
 	call PrintText
@@ -94,12 +93,10 @@
 	jr nc, .BagFull
 	ld hl, ReceivedTM49Text
 	call PrintText
-	ld hl, wd778
-	set 6, [hl]
+	SetEvent EVENT_GOT_TM49
 	ret
 .asm_48492
-	ld a, [wd778]
-	bit 5, a
+	CheckEvent EVENT_GOT_TM48
 	jr nz, .asm_484e0
 	ld hl, CeladonMartRoofText_48504
 	call PrintText
@@ -109,12 +106,10 @@
 	jr nc, .BagFull
 	ld hl, CeladonMartRoofText_4850a
 	call PrintText
-	ld hl, wd778
-	set 5, [hl]
+	SetEvent EVENT_GOT_TM48
 	ret
 .asm_484b6
-	ld a, [wd778]
-	bit 4, a
+	CheckEvent EVENT_GOT_TM13
 	jr nz, .asm_484e0
 	ld hl, CeladonMartRoofText_484f3
 	call PrintText
@@ -124,8 +119,7 @@
 	jr nc, .BagFull
 	ld hl, CeladonMartRoofText_484f9
 	call PrintText
-	ld hl, wd778
-	set 4, [hl]
+	SetEvent EVENT_GOT_TM13
 	ret
 .BagFull
 	ld hl, CeladonMartRoofText_48526
--- a/scripts/ceruleancity.asm
+++ b/scripts/ceruleancity.asm
@@ -25,8 +25,7 @@
 	jp z, CeruleanCityScript_1948c
 	ld a, $f0
 	ld [wJoyIgnore], a
-	ld hl, wd75b
-	set 7, [hl]
+	SetEvent EVENT_BEAT_CERULEAN_ROCKET_THIEF
 	ld a, $2
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
@@ -36,8 +35,7 @@
 	ret
 
 CeruleanCityScript0: ; 194c8 (6:54c8)
-	ld a, [wd75b]
-	bit 7, a
+	CheckEvent EVENT_BEAT_CERULEAN_ROCKET_THIEF
 	jr nz, .asm_194f7
 	ld hl, CeruleanCityCoords1
 	call ArePlayerCoordsInArray
@@ -58,8 +56,7 @@
 	ld [hSpriteIndexOrTextID], a
 	jp DisplayTextID
 .asm_194f7
-	ld a, [wd75a]
-	bit 0, a
+	CheckEvent EVENT_BEAT_CERULEAN_RIVAL
 	ret nz
 	ld hl, CeruleanCityCoords2
 	call ArePlayerCoordsInArray
@@ -170,8 +167,7 @@
 	call CeruleanCityScript_1955d
 	ld a, $f0
 	ld [wJoyIgnore], a
-	ld hl, wd75a
-	set 0, [hl]
+	SetEvent EVENT_BEAT_CERULEAN_RIVAL
 	ld a, $1
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
@@ -252,8 +248,7 @@
 
 CeruleanCityText1: ; 1964f (6:564f)
 	TX_ASM
-	ld a, [wd75a] ; rival battle flag
-	bit 0, a
+	CheckEvent EVENT_BEAT_CERULEAN_RIVAL
 	; do pre-battle text
 	jr z, .PreBattleText
 	; or talk about bill
@@ -284,8 +279,7 @@
 
 CeruleanCityText2: ; 1967c (6:567c)
 	TX_ASM
-	ld a, [wd75b]
-	bit 7, a
+	CheckEvent EVENT_BEAT_CERULEAN_ROCKET_THIEF
 	jr nz, .asm_4ca20
 	ld hl, CeruleanCityText_196d9
 	call PrintText
--- a/scripts/ceruleangym.asm
+++ b/scripts/ceruleangym.asm
@@ -46,8 +46,7 @@
 	ld a, $5
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd75e
-	set 7, [hl]
+	SetEvent EVENT_BEAT_MISTY
 	ld bc, (TM_11 << 8) | 1
 	call GiveItem
 	jr nc, .BagFull
@@ -54,8 +53,7 @@
 	ld a, $6
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd75e
-	set 6, [hl]
+	SetEvent EVENT_GOT_TM11
 	jr .asm_5c736
 .BagFull
 	ld a, $7
@@ -68,9 +66,7 @@
 	set 1, [hl]
 
 	; deactivate gym trainers
-	ld hl, wd75e
-	set 2, [hl]
-	set 3, [hl]
+	SetEvents EVENT_BEAT_CERULEAN_GYM_TRAINER_0, EVENT_BEAT_CERULEAN_GYM_TRAINER_1
 
 	jp CeruleanGymScript_5c6ed
 
@@ -85,9 +81,9 @@
 
 CeruleanGymTrainerHeaders: ; 5c758 (17:4758)
 CeruleanGymTrainerHeader0: ; 5c758 (17:4758)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_CERULEAN_GYM_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd75e ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_CERULEAN_GYM_TRAINER_0
 	dw CeruleanGymBattleText1 ; TextBeforeBattle
 	dw CeruleanGymAfterBattleText1 ; TextAfterBattle
 	dw CeruleanGymEndBattleText1 ; TextEndBattle
@@ -94,9 +90,9 @@
 	dw CeruleanGymEndBattleText1 ; TextEndBattle
 
 CeruleanGymTrainerHeader1: ; 5c764 (17:4764)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_CERULEAN_GYM_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd75e ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_CERULEAN_GYM_TRAINER_1
 	dw CeruleanGymBattleText2 ; TextBeforeBattle
 	dw CeruleanGymAfterBattleText2 ; TextAfterBattle
 	dw CeruleanGymEndBattleText2 ; TextEndBattle
@@ -106,10 +102,9 @@
 
 CeruleanGymText1: ; 5c771 (17:4771)
 	TX_ASM
-	ld a, [wd75e]
-	bit 7, a
+	CheckEvent EVENT_BEAT_MISTY
 	jr z, .asm_5c78d
-	bit 6, a
+	CheckEventReuseA EVENT_GOT_TM11
 	jr nz, .asm_5c785
 	call z, CeruleanGymScript_5c70d
 	call DisableWaitingAfterTextDisplay
@@ -203,8 +198,7 @@
 
 CeruleanGymText4: ; 5c811 (17:4811)
 	TX_ASM
-	ld a, [wd75e]
-	bit 7, a
+	CheckEvent EVENT_BEAT_MISTY
 	jr nz, .asm_5c821
 	ld hl, CeruleanGymText_5c82a
 	call PrintText
--- a/scripts/cinnabargym.asm
+++ b/scripts/cinnabargym.asm
@@ -14,9 +14,8 @@
 	pop hl
 	bit 5, [hl]
 	res 5, [hl]
-	call nz, Func_3ead
-	ld hl, wd79b
-	res 7, [hl]
+	call nz, UpdateCinnabarGymGateTileBlocks
+	ResetEvent EVENT_2A7
 	ret
 CinnabarGymScript_75772: ; 75772 (1d:5772)
 	ld hl, Gym7CityName
@@ -89,7 +88,7 @@
 	ld [hSpriteIndexOrTextID], a
 	jp DisplayTextID
 
-CinnabarGymScript_757f1: ; 757f1 (1d:57f1)
+CinnabarGymFlagAction: ; 757f1 (1d:57f1)
 	predef_jump FlagActionPredef
 
 CinnabarGymScript2: ; 757f6 (1d:57f6)
@@ -98,10 +97,11 @@
 	jp z, CinnabarGymScript_75792
 	ld a, [wTrainerHeaderFlagBit]
 	ld [$ffdb], a
+	AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2
 	ld c, a
 	ld b, FLAG_TEST
-	ld hl, wd79a
-	call CinnabarGymScript_757f1
+	EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0
+	call CinnabarGymFlagAction
 	ld a, c
 	and a
 	jr nz, .asm_7581b
@@ -112,17 +112,19 @@
 .asm_7581b
 	ld a, [wTrainerHeaderFlagBit]
 	ld [$ffdb], a
+	AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2
 	ld c, a
 	ld b, FLAG_SET
-	ld hl, wd79a
-	call CinnabarGymScript_757f1
+	EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0
+	call CinnabarGymFlagAction
 	ld a, [wTrainerHeaderFlagBit]
 	sub $2
+	AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
 	ld c, a
 	ld b, FLAG_SET
-	ld hl, wd79c
-	call CinnabarGymScript_757f1
-	call Func_3ead
+	EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED
+	call CinnabarGymFlagAction
+	call UpdateCinnabarGymGateTileBlocks
 	xor a
 	ld [wJoyIgnore], a
 	ld [wda38], a
@@ -141,8 +143,7 @@
 	ld a, $a
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd79a
-	set 1, [hl]
+	SetEvent EVENT_BEAT_BLAINE
 	ld bc, (TM_38 << 8) | 1
 	call GiveItem
 	jr nc, .BagFull
@@ -149,8 +150,7 @@
 	ld a, $b
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd79a
-	set 0, [hl]
+	SetEvent EVENT_GOT_TM38
 	jr .asm_75880
 .BagFull
 	ld a, $c
@@ -163,11 +163,7 @@
 	set 6, [hl]
 
 	; deactivate gym trainers
-	ld a, [wd79a]
-	or %11111100
-	ld [wd79a], a
-	ld hl, wd79b
-	set 0, [hl]
+	SetEventRange EVENT_BEAT_CINNABAR_GYM_TRAINER_0, EVENT_BEAT_CINNABAR_GYM_TRAINER_6
 
 	ld hl, wd126
 	set 5, [hl]
@@ -210,10 +206,9 @@
 
 CinnabarGymText1: ; 758df (1d:58df)
 	TX_ASM
-	ld a, [wd79a]
-	bit 1, a
+	CheckEvent EVENT_BEAT_BLAINE
 	jr z, .asm_d9332
-	bit 0, a
+	CheckEventReuseA EVENT_GOT_TM38
 	jr nz, .asm_3012f
 	call z, CinnabarGymScript3_75857
 	call DisableWaitingAfterTextDisplay
@@ -263,8 +258,7 @@
 CinnabarGymText2: ; 75939 (1d:5939)
 	TX_ASM
 	call CinnabarGymScript_757a0
-	ld a, [wd79a]
-	bit 2, a
+	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_0
 	jr nz, .asm_46bb4
 	ld hl, CinnabarGymText_7595f
 	call PrintText
@@ -292,8 +286,7 @@
 CinnabarGymText3: ; 7596e (1d:596e)
 	TX_ASM
 	call CinnabarGymScript_757a0
-	ld a, [wd79a]
-	bit 3, a
+	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_1
 	jr nz, .asm_4b406
 	ld hl, CinnabarGymText_75994
 	call PrintText
@@ -321,8 +314,7 @@
 CinnabarGymText4: ; 759a3 (1d:59a3)
 	TX_ASM
 	call CinnabarGymScript_757a0
-	ld a, [wd79a]
-	bit 4, a
+	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_2
 	jr nz, .asm_c0673
 	ld hl, CinnabarGymText_759c9
 	call PrintText
@@ -350,8 +342,7 @@
 CinnabarGymText5: ; 759d8 (1d:59d8)
 	TX_ASM
 	call CinnabarGymScript_757a0
-	ld a, [wd79a]
-	bit 5, a
+	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_3
 	jr nz, .asm_5cfd7
 	ld hl, CinnabarGymText_759fe
 	call PrintText
@@ -379,8 +370,7 @@
 CinnabarGymText6: ; 75a0d (1d:5a0d)
 	TX_ASM
 	call CinnabarGymScript_757a0
-	ld a, [wd79a]
-	bit 6, a
+	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_4
 	jr nz, .asm_776b4
 	ld hl, CinnabarGymText_75a33
 	call PrintText
@@ -408,8 +398,7 @@
 CinnabarGymText7: ; 75a42 (1d:5a42)
 	TX_ASM
 	call CinnabarGymScript_757a0
-	ld a, [wd79a]
-	bit 7, a
+	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_5
 	jr nz, .asm_2f755
 	ld hl, CinnabarGymText_75a68
 	call PrintText
@@ -437,8 +426,7 @@
 CinnabarGymText8: ; 75a77 (1d:5a77)
 	TX_ASM
 	call CinnabarGymScript_757a0
-	ld a, [wd79b]
-	bit 0, a
+	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_6
 	jr nz, .asm_d87be
 	ld hl, CinnabarGymText_75a9d
 	call PrintText
@@ -465,8 +453,7 @@
 
 CinnabarGymText9: ; 75aac (1d:5aac)
 	TX_ASM
-	ld a, [wd79a]
-	bit 1, a
+	CheckEvent EVENT_BEAT_BLAINE
 	jr nz, .asm_627d9
 	ld hl, CinnabarGymText_75ac2
 	jr .asm_0b11d
--- a/scripts/cinnabarisland.asm
+++ b/scripts/cinnabarisland.asm
@@ -2,10 +2,8 @@
 	call EnableAutoTextBoxDrawing
 	ld hl, wd126
 	set 5, [hl]
-	ld hl, wd796
-	res 0, [hl]
-	ld hl, wd7a3
-	res 1, [hl]
+	ResetEvent EVENT_MANSION_SWITCH_ON
+	ResetEvent EVENT_LAB_STILL_REVIVING_FOSSIL
 	ld hl, CinnabarIslandScriptPointers
 	ld a, [W_CINNABARISLANDCURSCRIPT]
 	jp CallFunctionInTable
--- a/scripts/copycatshouse2f.asm
+++ b/scripts/copycatshouse2f.asm
@@ -12,8 +12,7 @@
 
 CopycatsHouse2FText1: ; 5cc82 (17:4c82)
 	TX_ASM
-	ld a, [wd7af]
-	bit 0, a
+	CheckEvent EVENT_GOT_TM31
 	jr nz, .asm_7ccf3
 	ld a, $1
 	ld [wDoNotWaitForButtonPressAfterDisplayingText], a
@@ -32,8 +31,7 @@
 	ld a, POKE_DOLL
 	ld [$ffdb], a
 	callba RemoveItemByID
-	ld hl, wd7af
-	set 0, [hl]
+	SetEvent EVENT_GOT_TM31
 	jr .asm_62ecd
 .BagFull
 	ld hl, TM31NoRoomText
--- a/scripts/fanclub.asm
+++ b/scripts/fanclub.asm
@@ -3,8 +3,7 @@
 
 FanClubBikeInBag:
 ; check if any bike paraphernalia in bag
-	ld a, [wd771]
-	bit 1, a ; got bike voucher?
+	CheckEvent EVENT_GOT_BIKE_VOUCHER
 	ret nz
 	ld b, BICYCLE
 	call IsItemInBag
@@ -25,19 +24,16 @@
 FanClubText1:
 ; pikachu fan
 	TX_ASM
-	ld a, [wd771]
-	bit 7, a
+	CheckEvent EVENT_PIKACHU_FAN_BOAST
 	jr nz, .mineisbetter
 	ld hl, .normaltext
 	call PrintText
-	ld hl, wd771
-	set 6, [hl]
+	SetEvent EVENT_SEEL_FAN_BOAST
 	jr .done
 .mineisbetter
 	ld hl, .bettertext
 	call PrintText
-	ld hl, wd771
-	res 7, [hl]
+	ResetEvent EVENT_PIKACHU_FAN_BOAST
 .done
 	jp TextScriptEnd
 
@@ -52,19 +48,16 @@
 FanClubText2:
 ; seel fan
 	TX_ASM
-	ld a, [wd771]
-	bit 6, a
+	CheckEvent EVENT_SEEL_FAN_BOAST
 	jr nz, .mineisbetter
 	ld hl, .normaltext
 	call PrintText
-	ld hl, wd771
-	set 7, [hl]
+	SetEvent EVENT_PIKACHU_FAN_BOAST
 	jr .done
 .mineisbetter
 	ld hl, .bettertext
 	call PrintText
-	ld hl, wd771
-	res 6, [hl]
+	ResetEvent EVENT_SEEL_FAN_BOAST
 .done
 	jp TextScriptEnd
 
@@ -125,8 +118,7 @@
 	jr nc, .BagFull
 	ld hl, .receivedvouchertext
 	call PrintText
-	ld hl, wd771
-	set 1, [hl]
+	SetEvent EVENT_GOT_BIKE_VOUCHER
 	jr .done
 .BagFull
 	ld hl, .bagfulltext
--- a/scripts/fightingdojo.asm
+++ b/scripts/fightingdojo.asm
@@ -21,15 +21,13 @@
 	dw FightingDojoScript3
 
 FightingDojoScript1: ; 5cd83 (17:4d83)
-	ld a, [wd7b1]
-	bit 0, a
+	CheckEvent EVENT_DEFEATED_FIGHTING_DOJO
 	ret nz
 	call CheckFightingMapTrainers
 	ld a, [wTrainerHeaderFlagBit]
 	and a
 	ret nz
-	ld a, [wd7b1]
-	bit 1, a
+	CheckEvent EVENT_BEAT_KARATE_MASTER
 	ret nz
 	xor a
 	ld [hJoyHeld], a
@@ -72,9 +70,7 @@
 .asm_5cde4
 	ld a, $f0
 	ld [wJoyIgnore], a
-	ld a, [wd7b1]
-	or $3e
-	ld [wd7b1], a
+	SetEventRange EVENT_BEAT_KARATE_MASTER, EVENT_BEAT_FIGHTING_DOJO_TRAINER_3
 	ld a, $8
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
@@ -96,9 +92,9 @@
 
 FightingDojoTrainerHeaders: ; 5ce13 (17:4e13)
 FightingDojoTrainerHeader0: ; 5ce13 (17:4e13)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_FIGHTING_DOJO_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd7b1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_FIGHTING_DOJO_TRAINER_0
 	dw FightingDojoBattleText1 ; TextBeforeBattle
 	dw FightingDojoAfterBattleText1 ; TextAfterBattle
 	dw FightingDojoEndBattleText1 ; TextEndBattle
@@ -105,9 +101,9 @@
 	dw FightingDojoEndBattleText1 ; TextEndBattle
 
 FightingDojoTrainerHeader1: ; 5ce1f (17:4e1f)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_FIGHTING_DOJO_TRAINER_1
 	db ($4 << 4) ; trainer's view range
-	dw wd7b1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_FIGHTING_DOJO_TRAINER_1
 	dw FightingDojoBattleText2 ; TextBeforeBattle
 	dw FightingDojoAfterBattleText2 ; TextAfterBattle
 	dw FightingDojoEndBattleText2 ; TextEndBattle
@@ -114,9 +110,9 @@
 	dw FightingDojoEndBattleText2 ; TextEndBattle
 
 FightingDojoTrainerHeader2: ; 5ce2b (17:4e2b)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_FIGHTING_DOJO_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd7b1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_FIGHTING_DOJO_TRAINER_2
 	dw FightingDojoBattleText3 ; TextBeforeBattle
 	dw FightingDojoAfterBattleText3 ; TextAfterBattle
 	dw FightingDojoEndBattleText3 ; TextEndBattle
@@ -123,9 +119,9 @@
 	dw FightingDojoEndBattleText3 ; TextEndBattle
 
 FightingDojoTrainerHeader3: ; 5ce37 (17:4e37)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_FIGHTING_DOJO_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd7b1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_FIGHTING_DOJO_TRAINER_3
 	dw FightingDojoBattleText4 ; TextBeforeBattle
 	dw FightingDojoAfterBattleText4 ; TextAfterBattle
 	dw FightingDojoEndBattleText4 ; TextEndBattle
@@ -135,10 +131,9 @@
 
 FightingDojoText1: ; 5ce44 (17:4e44)
 	TX_ASM
-	ld a, [wd7b1]
-	bit 0, a
+	CheckEvent EVENT_DEFEATED_FIGHTING_DOJO
 	jp nz, .continue1
-	bit 1, a
+	CheckEventReuseA EVENT_BEAT_KARATE_MASTER
 	jp nz, .continue2
 	ld hl, FightingDojoText_5ce8e
 	call PrintText
@@ -257,8 +252,7 @@
 FightingDojoText6: ; 5cf06 (17:4f06)
 ; Hitmonlee Poké Ball
 	TX_ASM
-	ld a, [wd7b1]
-	and %11000000
+	CheckEitherEventSet EVENT_GOT_HITMONLEE, EVENT_GOT_HITMONCHAN
 	jr z, .GetMon
 	ld hl, OtherHitmonText
 	call PrintText
@@ -282,9 +276,7 @@
 	ld a, HS_FIGHTING_DOJO_GIFT_1
 	ld [wcc4d], a
 	predef HideObject
-	ld hl, wd7b1
-	set 6, [hl]
-	set 0, [hl]
+	SetEvents EVENT_GOT_HITMONLEE, EVENT_DEFEATED_FIGHTING_DOJO
 .done
 	jp TextScriptEnd
 
@@ -295,8 +287,7 @@
 FightingDojoText7: ; 5cf4e (17:4f4e)
 ; Hitmonchan Poké Ball
 	TX_ASM
-	ld a, [wd7b1]
-	and %11000000
+	CheckEitherEventSet EVENT_GOT_HITMONLEE, EVENT_GOT_HITMONCHAN
 	jr z, .GetMon
 	ld hl, OtherHitmonText
 	call PrintText
@@ -315,9 +306,7 @@
 	ld c,30
 	call GivePokemon
 	jr nc, .done
-	ld hl, wd7b1
-	set 7, [hl]
-	set 0, [hl]
+	SetEvents EVENT_GOT_HITMONCHAN, EVENT_DEFEATED_FIGHTING_DOJO
 
 	; once Poké Ball is taken, hide sprite
 	ld a, HS_FIGHTING_DOJO_GIFT_2
--- a/scripts/fuchsiacity.asm
+++ b/scripts/fuchsiacity.asm
@@ -135,10 +135,9 @@
 
 FuchsiaCityText24: ; 19af4 (6:5af4)
 	TX_ASM
-	ld a, [wd7f6]
-	bit 6, a
+	CheckEvent EVENT_GOT_DOME_FOSSIL
 	jr nz, .asm_3b4e8
-	bit 7, a
+	CheckEventReuseA EVENT_GOT_HELIX_FOSSIL
 	jr nz, .asm_667d5
 	ld hl, FuchsiaCityText_19b2a
 	call PrintText
--- a/scripts/fuchsiagym.asm
+++ b/scripts/fuchsiagym.asm
@@ -46,8 +46,7 @@
 	ld a, $9
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd792
-	set 1, [hl]
+	SetEvent EVENT_BEAT_KOGA
 	ld bc, (TM_06 << 8) | 1
 	call GiveItem
 	jr nc, .BagFull
@@ -54,8 +53,7 @@
 	ld a, $a
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd792
-	set 0, [hl]
+	SetEvent EVENT_GOT_TM06
 	jr .asm_754c0
 .BagFull
 	ld a, $b
@@ -68,9 +66,7 @@
 	set 4, [hl]
 
 	; deactivate gym trainers
-	ld a, [wd792]
-	or %11111100
-	ld [wd792], a
+	SetEventRange EVENT_BEAT_FUCHSIA_GYM_TRAINER_0, EVENT_BEAT_FUCHSIA_GYM_TRAINER_6
 
 	jp FuchsiaGymScript_75477
 
@@ -89,9 +85,9 @@
 
 FuchsiaGymTrainerHeaders: ; 754eb (1d:54eb)
 FuchsiaGymTrainerHeader0: ; 754eb (1d:54eb)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_FUCHSIA_GYM_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd792 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_FUCHSIA_GYM_TRAINER_0
 	dw FuchsiaGymBattleText1 ; TextBeforeBattle
 	dw FuchsiaGymAfterBattleText1 ; TextAfterBattle
 	dw FuchsiaGymEndBattleText1 ; TextEndBattle
@@ -98,9 +94,9 @@
 	dw FuchsiaGymEndBattleText1 ; TextEndBattle
 
 FuchsiaGymTrainerHeader2: ; 754f7 (1d:54f7)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_FUCHSIA_GYM_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd792 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_FUCHSIA_GYM_TRAINER_2
 	dw FuchsiaGymBattleText2 ; TextBeforeBattle
 	dw FuchsiaGymAfterBattleText2 ; TextAfterBattle
 	dw FuchsiaGymEndBattleText2 ; TextEndBattle
@@ -107,9 +103,9 @@
 	dw FuchsiaGymEndBattleText2 ; TextEndBattle
 
 FuchsiaGymTrainerHeader3: ; 75503 (1d:5503)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_FUCHSIA_GYM_TRAINER_3
 	db ($4 << 4) ; trainer's view range
-	dw wd792 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_FUCHSIA_GYM_TRAINER_3
 	dw FuchsiaGymBattleText3 ; TextBeforeBattle
 	dw FuchsiaGymAfterBattleText3 ; TextAfterBattle
 	dw FuchsiaGymEndBattleText3 ; TextEndBattle
@@ -116,9 +112,9 @@
 	dw FuchsiaGymEndBattleText3 ; TextEndBattle
 
 FuchsiaGymTrainerHeader4: ; 7550f (1d:550f)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_FUCHSIA_GYM_TRAINER_4
 	db ($2 << 4) ; trainer's view range
-	dw wd792 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_FUCHSIA_GYM_TRAINER_4
 	dw FuchsiaGymBattleText4 ; TextBeforeBattle
 	dw FuchsiaGymAfterBattleText4 ; TextAfterBattle
 	dw FuchsiaGymEndBattleText4 ; TextEndBattle
@@ -125,9 +121,9 @@
 	dw FuchsiaGymEndBattleText4 ; TextEndBattle
 
 FuchsiaGymTrainerHeader5: ; 7551b (1d:551b)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_FUCHSIA_GYM_TRAINER_5
 	db ($2 << 4) ; trainer's view range
-	dw wd792 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_FUCHSIA_GYM_TRAINER_5
 	dw FuchsiaGymBattleText5 ; TextBeforeBattle
 	dw FuchsiaGymAfterBattleText5 ; TextAfterBattle
 	dw FuchsiaGymEndBattleText5 ; TextEndBattle
@@ -134,9 +130,9 @@
 	dw FuchsiaGymEndBattleText5 ; TextEndBattle
 
 FuchsiaGymTrainerHeader6: ; 75527 (1d:5527)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_FUCHSIA_GYM_TRAINER_6
 	db ($2 << 4) ; trainer's view range
-	dw wd792 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_FUCHSIA_GYM_TRAINER_6
 	dw FuchsiaGymBattleText6 ; TextBeforeBattle
 	dw FuchsiaGymAfterBattleText6 ; TextAfterBattle
 	dw FuchsiaGymEndBattleText6 ; TextEndBattle
@@ -146,10 +142,9 @@
 
 FuchsiaGymText1: ; 75534 (1d:5534)
 	TX_ASM
-	ld a, [wd792]
-	bit 1, a
+	CheckEvent EVENT_BEAT_KOGA
 	jr z, .asm_181b6
-	bit 0, a
+	CheckEventReuseA EVENT_GOT_TM06
 	jr nz, .asm_adc3b
 	call z, FuchsiaGymScript3_75497
 	call DisableWaitingAfterTextDisplay
@@ -318,8 +313,7 @@
 
 FuchsiaGymText8: ; 7563a (1d:563a)
 	TX_ASM
-	ld a, [wd792]
-	bit 1, a
+	CheckEvent EVENT_BEAT_KOGA
 	ld hl, FuchsiaGymText_75653
 	jr nz, .asm_50671
 	ld hl, FuchsiaGymText_7564e
--- a/scripts/fuchsiahouse2.asm
+++ b/scripts/fuchsiahouse2.asm
@@ -10,14 +10,12 @@
 
 FuchsiaHouse2Text1: ; 750c2 (1d:50c2)
 	TX_ASM
-	ld a, [wd78e]
-	bit 0, a
+	CheckEvent EVENT_GOT_HM04
 	jr nz, .subtract
 	ld b,GOLD_TEETH
 	call IsItemInBag
 	jr nz, .asm_3f30f
-	ld a, [wd78e]
-	bit 1, a
+	CheckEvent EVENT_GAVE_GOLD_TEETH
 	jr nz, .asm_60cba
 	ld hl, WardenGibberishText1
 	call PrintText
@@ -36,8 +34,7 @@
 	ld a, GOLD_TEETH
 	ld [$ffdb], a
 	callba RemoveItemByID
-	ld hl, wd78e
-	set 1, [hl]
+	SetEvent EVENT_GAVE_GOLD_TEETH
 .asm_60cba
 	ld hl, WardenThankYouText
 	call PrintText
@@ -46,8 +43,7 @@
 	jr nc, .BagFull
 	ld hl, ReceivedHM04Text
 	call PrintText
-	ld hl, wd78e
-	set 0, [hl]
+	SetEvent EVENT_GOT_HM04
 	jr .asm_52039
 .subtract
 	ld hl, HM04ExplanationText
--- a/scripts/gary.asm
+++ b/scripts/gary.asm
@@ -94,8 +94,7 @@
 	cp $ff
 	jp z, GaryScript_75f29
 	call UpdateSprites
-	ld hl, wd867
-	set 1, [hl]
+	SetEvent EVENT_BEAT_CHAMPION_RIVAL
 	ld a, $f0
 	ld [wJoyIgnore], a
 	ld a, $1
@@ -249,8 +248,7 @@
 
 GaryText1: ; 760e0 (1d:60e0)
 	TX_ASM
-	ld a, [wd867]
-	bit 1, a
+	CheckEvent EVENT_BEAT_CHAMPION_RIVAL
 	ld hl, GaryText_760f4
 	jr z, .asm_17e9f
 	ld hl, GaryText_76103
--- a/scripts/halloffameroom.asm
+++ b/scripts/halloffameroom.asm
@@ -39,12 +39,8 @@
 	ld [hl], a
 	ld [W_LANCECURSCRIPT], a
 	ld [W_HALLOFFAMEROOMCURSCRIPT], a
-	ld hl, wd863
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hl], a
+	; Elite 4 events
+	ResetEventRange ELITE4_EVENTS_START, ELITE4_CHAMPION_EVENTS_END, 1
 	xor a
 	ld [W_HALLOFFAMEROOMCURSCRIPT], a
 	ld a, PALLET_TOWN
--- a/scripts/indigoplateaulobby.asm
+++ b/scripts/indigoplateaulobby.asm
@@ -5,18 +5,13 @@
 	bit 6, [hl]
 	res 6, [hl]
 	ret z
-	ld hl, wd869
-	res 7, [hl]
-	ld hl, wd734
+	ResetEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH
+	ld hl, wBeatLorelei
 	bit 1, [hl]
 	res 1, [hl]
 	ret z
-	ld hl, wd863
-	xor a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hl], a
+	; Elite 4 events
+	ResetEventRange ELITE4_EVENTS_START, EVENT_LANCES_ROOM_LOCK_DOOR
 	ret
 
 IndigoPlateauLobbyTextPointers: ; 19c7f (6:5c7f)
--- a/scripts/lab3.asm
+++ b/scripts/lab3.asm
@@ -10,8 +10,7 @@
 
 Lab3Text1: ; 75c94 (1d:5c94)
 	TX_ASM
-	ld a, [wd7a1]
-	bit 7, a
+	CheckEvent EVENT_GOT_TM35
 	jr nz, .asm_e551a
 	ld hl, TM35PreReceiveText
 	call PrintText
@@ -20,8 +19,7 @@
 	jr nc, .BagFull
 	ld hl, ReceivedTM35Text
 	call PrintText
-	ld hl, wd7a1
-	set 7, [hl]
+	SetEvent EVENT_GOT_TM35
 	jr .asm_eb896
 .BagFull
 	ld hl, TM35NoRoomText
--- a/scripts/lab4.asm
+++ b/scripts/lab4.asm
@@ -49,8 +49,7 @@
 
 Lab4Text1: ; 75d6c (1d:5d6c)
 	TX_ASM
-	ld a, [wd7a3]
-	bit 0, a
+	CheckEvent EVENT_GAVE_FOSSIL_TO_LAB
 	jr nz, .asm_75d96
 	ld hl, Lab4Text_75dc6
 	call PrintText
@@ -66,7 +65,7 @@
 .asm_75d93
 	jp TextScriptEnd
 .asm_75d96
-	bit 1, a
+	CheckEventAfterBranchReuseA EVENT_LAB_STILL_REVIVING_FOSSIL, EVENT_GAVE_FOSSIL_TO_LAB
 	jr z, .asm_75da2
 	ld hl, Lab4Text_75dd0
 	call PrintText
@@ -75,17 +74,13 @@
 	call LoadFossilItemAndMonNameBank1D
 	ld hl, Lab4Text_75dd5
 	call PrintText
-	ld hl, wd7a3
-	set 2, [hl]
+	SetEvent EVENT_LAB_HANDING_OVER_FOSSIL_MON
 	ld a, [W_FOSSILMON]
 	ld b, a
 	ld c, 30
 	call GivePokemon
 	jr nc, .asm_75d93
-	ld hl, wd7a3
-	res 0, [hl]
-	res 1, [hl]
-	res 2, [hl]
+	ResetEvents EVENT_GAVE_FOSSIL_TO_LAB, EVENT_LAB_STILL_REVIVING_FOSSIL, EVENT_LAB_HANDING_OVER_FOSSIL_MON
 	jr .asm_75d93
 
 Lab4Text_75dc6: ; 75dc6 (1d:5dc6)
--- a/scripts/lance.asm
+++ b/scripts/lance.asm
@@ -13,8 +13,7 @@
 	bit 5, [hl]
 	res 5, [hl]
 	ret z
-	ld a, [wd866]
-	bit 7, a
+	CheckEvent EVENT_LANCES_ROOM_LOCK_DOOR
 	jr nz, .asm_5a2da
 	ld a, $31
 	ld b, $32
@@ -52,8 +51,7 @@
 	ret
 
 LanceScript0: ; 5a305 (16:6305)
-	ld a, [wd866]
-	bit 6, a
+	CheckEvent EVENT_BEAT_LANCE
 	ret nz
 	ld hl, CoordsData_5a33e
 	call ArePlayerCoordsInArray
@@ -69,9 +67,7 @@
 .asm_5a325
 	cp $5
 	jr z, LanceScript_5a35b
-	ld hl, wd866
-	bit 7, [hl]
-	set 7, [hl]
+	CheckAndSetEvent EVENT_LANCES_ROOM_LOCK_DOOR
 	ret nz
 	ld hl, wd126
 	set 5, [hl]
@@ -133,9 +129,9 @@
 
 LanceTrainerHeaders: ; 5a397 (16:6397)
 LanceTrainerHeader0: ; 5a397 (16:6397)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_LANCES_ROOM_TRAINER_0
 	db ($0 << 4) ; trainer's view range
-	dw wd866 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_LANCES_ROOM_TRAINER_0
 	dw LanceBeforeBattleText ; TextBeforeBattle
 	dw LanceAfterBattleText ; TextAfterBattle
 	dw LanceEndBattleText ; TextEndBattle
@@ -160,6 +156,5 @@
 LanceAfterBattleText: ; 5a3b8 (16:63b8)
 	TX_FAR _LanceAfterBattleText
 	TX_ASM
-	ld hl, wd866
-	set 6, [hl]
+	SetEvent EVENT_BEAT_LANCE
 	jp TextScriptEnd
--- a/scripts/lavenderhouse1.asm
+++ b/scripts/lavenderhouse1.asm
@@ -12,8 +12,7 @@
 
 LavenderHouse1Text1: ; 1d8b8 (7:58b8)
 	TX_ASM
-	ld a, [wd7e0]
-	bit 7, a
+	CheckEvent EVENT_RESCUED_MR_FUJI
 	jr nz, .asm_72e5d
 	ld hl, LavenderHouse1Text_1d8d1
 	call PrintText
@@ -34,8 +33,7 @@
 
 LavenderHouse1Text2: ; 1d8db (7:58db)
 	TX_ASM
-	ld a, [wd7e0]
-	bit 7, a
+	CheckEvent EVENT_RESCUED_MR_FUJI
 	jr nz, .asm_06470
 	ld hl, LavenderHouse1Text_1d8f4
 	call PrintText
@@ -70,8 +68,7 @@
 
 LavenderHouse1Text5: ; 1d918 (7:5918)
 	TX_ASM
-	ld a, [wd76c]
-	bit 0, a
+	CheckEvent EVENT_GOT_POKE_FLUTE
 	jr nz, .asm_15ac2
 	ld hl, LavenderHouse1Text_1d94c
 	call PrintText
@@ -80,8 +77,7 @@
 	jr nc, .BagFull
 	ld hl, ReceivedFluteText
 	call PrintText
-	ld hl, wd76c
-	set 0, [hl]
+	SetEvent EVENT_GOT_POKE_FLUTE
 	jr .asm_da749
 .BagFull
 	ld hl, FluteNoRoomText
--- a/scripts/lavenderhouse2.asm
+++ b/scripts/lavenderhouse2.asm
@@ -15,8 +15,7 @@
 
 LavenderHouse2Text2: ; 1d9c3 (7:59c3)
 	TX_ASM
-	ld a, [wd7e0]
-	bit 7, a
+	CheckEvent EVENT_RESCUED_MR_FUJI
 	jr nz, .asm_65711
 	ld hl, LavenderHouse2Text_1d9dc
 	call PrintText
--- a/scripts/lavendermart.asm
+++ b/scripts/lavendermart.asm
@@ -12,8 +12,7 @@
 
 LavenderMartText3: ; 5c93a (17:493a)
 	TX_ASM
-	ld a, [wd7e0]
-	bit 7, a
+	CheckEvent EVENT_RESCUED_MR_FUJI
 	jr nz, .asm_c88d4
 	ld hl, LavenderMart_5c953
 	call PrintText
--- a/scripts/lorelei.asm
+++ b/scripts/lorelei.asm
@@ -13,10 +13,9 @@
 	bit 5, [hl]
 	res 5, [hl]
 	ret z
-	ld hl, wd734
+	ld hl, wBeatLorelei
 	set 1, [hl]
-	ld a, [wd863]
-	bit 1, a
+	CheckEvent EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
 	jr z, .asm_761a9
 	ld a, $5
 	jr .asm_761ab
@@ -71,9 +70,7 @@
 	ld a, [wCoordIndex]
 	cp $3
 	jr c, .asm_76206
-	ld hl, wd863
-	bit 6, [hl]
-	set 6, [hl]
+	CheckAndSetEvent EVENT_AUTOWALKED_INTO_LORELEIS_ROOM
 	jr z, LoreleiScript_761c6
 .asm_76206
 	ld a, $2
@@ -121,9 +118,9 @@
 
 LoreleiTrainerHeaders: ; 76255 (1d:6255)
 LoreleiTrainerHeader0: ; 76255 (1d:6255)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
 	db ($0 << 4) ; trainer's view range
-	dw wd863 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
 	dw LoreleiBeforeBattleText ; TextBeforeBattle
 	dw LoreleiAfterBattleText ; TextAfterBattle
 	dw LoreleiEndBattleText ; TextEndBattle
--- a/scripts/mansion1.asm
+++ b/scripts/mansion1.asm
@@ -13,8 +13,7 @@
 	bit 5, [hl]
 	res 5, [hl]
 	ret z
-	ld a, [wd796]
-	bit 0, a
+	CheckEvent EVENT_MANSION_SWITCH_ON
 	jr nz, .asm_442ec
 	ld bc, $060c
 	call Mansion1Script_4430b
@@ -69,9 +68,9 @@
 
 Mansion1TrainerHeaders: ; 44334 (11:4334)
 Mansion1TrainerHeader0: ; 44334 (11:4334)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MANSION_1_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd798 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MANSION_1_TRAINER_0
 	dw Mansion1BattleText2 ; TextBeforeBattle
 	dw Mansion1AfterBattleText2 ; TextAfterBattle
 	dw Mansion1EndBattleText2 ; TextEndBattle
@@ -113,11 +112,9 @@
 	call PrintText
 	ld a, SFX_GO_INSIDE
 	call PlaySound
-	ld hl, wd796
-	bit 0, [hl]
-	set 0, [hl]
+	CheckAndSetEvent EVENT_MANSION_SWITCH_ON
 	jr z, .asm_44392
-	res 0, [hl]
+	ResetEventReuseHL EVENT_MANSION_SWITCH_ON
 	jr .asm_44392
 .asm_4438c
 	ld hl, MansionSwitchNotPressedText
--- a/scripts/mansion2.asm
+++ b/scripts/mansion2.asm
@@ -13,8 +13,7 @@
 	bit 5, [hl]
 	res 5, [hl]
 	ret z
-	ld a, [wd796]
-	bit 0, a
+	CheckEvent EVENT_MANSION_SWITCH_ON
 	jr nz, .asm_52016
 	ld a, $e
 	ld bc, $204
@@ -66,9 +65,9 @@
 
 Mansion2TrainerHeaders: ; 52057 (14:6057)
 Mansion2TrainerHeader0: ; 52057 (14:6057)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MANSION_2_TRAINER_0
 	db ($0 << 4) ; trainer's view range
-	dw wd847 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MANSION_2_TRAINER_0
 	dw Mansion2BattleText1 ; TextBeforeBattle
 	dw Mansion2AfterBattleText1 ; TextAfterBattle
 	dw Mansion2EndBattleText1 ; TextEndBattle
@@ -119,11 +118,9 @@
 	call PrintText
 	ld a, SFX_GO_INSIDE
 	call PlaySound
-	ld hl, wd796
-	bit 0, [hl]
-	set 0, [hl]
+	CheckAndSetEvent EVENT_MANSION_SWITCH_ON
 	jr z, .asm_520bf
-	res 0, [hl]
+	ResetEventReuseHL EVENT_MANSION_SWITCH_ON
 	jr .asm_520bf
 .asm_520b9
 	ld hl, Mansion2Text_520cc
--- a/scripts/mansion3.asm
+++ b/scripts/mansion3.asm
@@ -13,8 +13,7 @@
 	bit 5, [hl]
 	res 5, [hl]
 	ret z
-	ld a, [wd796]
-	bit 0, a
+	CheckEvent EVENT_MANSION_SWITCH_ON
 	jr nz, .asm_52224
 	ld a, $e
 	ld bc, $207
@@ -93,9 +92,9 @@
 
 Mansion3TrainerHeaders: ; 52296 (14:6296)
 Mansion3TrainerHeader0: ; 52296 (14:6296)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MANSION_3_TRAINER_0
 	db ($0 << 4) ; trainer's view range
-	dw wd849 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MANSION_3_TRAINER_0
 	dw Mansion3BattleText1 ; TextBeforeBattle
 	dw Mansion3AfterBattleText1 ; TextAfterBattle
 	dw Mansion3EndBattleText1 ; TextEndBattle
@@ -102,9 +101,9 @@
 	dw Mansion3EndBattleText1 ; TextEndBattle
 
 Mansion3TrainerHeader2: ; 522a2 (14:62a2)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MANSION_3_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd849 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MANSION_3_TRAINER_2
 	dw Mansion3BattleText2 ; TextBeforeBattle
 	dw Mansion3AfterBattleText2 ; TextAfterBattle
 	dw Mansion3EndBattleText2 ; TextEndBattle
--- a/scripts/mansion4.asm
+++ b/scripts/mansion4.asm
@@ -13,8 +13,7 @@
 	bit 5, [hl]
 	res 5, [hl]
 	ret z
-	ld a, [wd796]
-	bit 0, a
+	CheckEvent EVENT_MANSION_SWITCH_ON
 	jr nz, .asm_523ff
 	ld a, $e
 	ld bc, $80d
@@ -72,9 +71,9 @@
 
 Mansion4TrainerHeaders: ; 52448 (14:6448)
 Mansion4TrainerHeader0: ; 52448 (14:6448)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MANSION_4_TRAINER_0
 	db ($0 << 4) ; trainer's view range
-	dw wd84b ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MANSION_4_TRAINER_0
 	dw Mansion4BattleText1 ; TextBeforeBattle
 	dw Mansion4AfterBattleText1 ; TextAfterBattle
 	dw Mansion4EndBattleText1 ; TextEndBattle
@@ -81,9 +80,9 @@
 	dw Mansion4EndBattleText1 ; TextEndBattle
 
 Mansion4TrainerHeader2: ; 52454 (14:6454)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MANSION_4_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd84b ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MANSION_4_TRAINER_2
 	dw Mansion4BattleText2 ; TextBeforeBattle
 	dw Mansion4AfterBattleText2 ; TextAfterBattle
 	dw Mansion4EndBattleText2 ; TextEndBattle
--- a/scripts/mtmoon1.asm
+++ b/scripts/mtmoon1.asm
@@ -30,9 +30,9 @@
 
 MtMoon1TrainerHeaders: ; 499fd (12:59fd)
 MtMoon1TrainerHeader0: ; 499fd (12:59fd)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MT_MOON_1_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd7f5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MT_MOON_1_TRAINER_0
 	dw MtMoon1BattleText2 ; TextBeforeBattle
 	dw MtMoon1AfterBattleText2 ; TextAfterBattle
 	dw MtMoon1EndBattleText2 ; TextEndBattle
@@ -39,9 +39,9 @@
 	dw MtMoon1EndBattleText2 ; TextEndBattle
 
 MtMoon1TrainerHeader2: ; 49a09 (12:5a09)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MT_MOON_1_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd7f5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MT_MOON_1_TRAINER_2
 	dw MtMoon1BattleText3 ; TextBeforeBattle
 	dw MtMoon1AfterBattleText3 ; TextAfterBattle
 	dw MtMoon1EndBattleText3 ; TextEndBattle
@@ -48,9 +48,9 @@
 	dw MtMoon1EndBattleText3 ; TextEndBattle
 
 MtMoon1TrainerHeader3: ; 49a15 (12:5a15)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MT_MOON_1_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd7f5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MT_MOON_1_TRAINER_3
 	dw MtMoon1BattleText4 ; TextBeforeBattle
 	dw MtMoon1AfterBattleText4 ; TextAfterBattle
 	dw MtMoon1EndBattleText4 ; TextEndBattle
@@ -57,9 +57,9 @@
 	dw MtMoon1EndBattleText4 ; TextEndBattle
 
 MtMoon1TrainerHeader4: ; 49a21 (12:5a21)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MT_MOON_1_TRAINER_4
 	db ($3 << 4) ; trainer's view range
-	dw wd7f5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MT_MOON_1_TRAINER_4
 	dw MtMoon1BattleText5 ; TextBeforeBattle
 	dw MtMoon1AfterBattleText5 ; TextAfterBattle
 	dw MtMoon1EndBattleText5 ; TextEndBattle
@@ -66,9 +66,9 @@
 	dw MtMoon1EndBattleText5 ; TextEndBattle
 
 MtMoon1TrainerHeader5: ; 49a2d (12:5a2d)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MT_MOON_1_TRAINER_5
 	db ($3 << 4) ; trainer's view range
-	dw wd7f5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MT_MOON_1_TRAINER_5
 	dw MtMoon1BattleText6 ; TextBeforeBattle
 	dw MtMoon1AfterBattleText6 ; TextAfterBattle
 	dw MtMoon1EndBattleText6 ; TextEndBattle
@@ -75,9 +75,9 @@
 	dw MtMoon1EndBattleText6 ; TextEndBattle
 
 MtMoon1TrainerHeader6: ; 49a39 (12:5a39)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MT_MOON_1_TRAINER_6
 	db ($3 << 4) ; trainer's view range
-	dw wd7f5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MT_MOON_1_TRAINER_6
 	dw MtMoon1BattleText7 ; TextBeforeBattle
 	dw MtMoon1AfterBattleText7 ; TextAfterBattle
 	dw MtMoon1EndBattleText7 ; TextEndBattle
@@ -84,9 +84,9 @@
 	dw MtMoon1EndBattleText7 ; TextEndBattle
 
 MtMoon1TrainerHeader7: ; 49a45 (12:5a45)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MT_MOON_1_TRAINER_7
 	db ($3 << 4) ; trainer's view range
-	dw wd7f5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MT_MOON_1_TRAINER_7
 	dw MtMoon1BattleText8 ; TextBeforeBattle
 	dw MtMoon1AfterBattleText8 ; TextAfterBattle
 	dw MtMoon1EndBattleText8 ; TextEndBattle
--- a/scripts/mtmoon3.asm
+++ b/scripts/mtmoon3.asm
@@ -5,8 +5,7 @@
 	ld a, [W_MTMOON3CURSCRIPT]
 	call ExecuteCurMapScriptInTable
 	ld [W_MTMOON3CURSCRIPT], a
-	ld a, [wd7f6]
-	bit 1, a
+	CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD
 	ret z
 	ld hl, CoordsData_49d37
 	call ArePlayerCoordsInArray
@@ -54,8 +53,7 @@
 	dw MtMoon3Script5
 
 MtMoon3Script0: ; 49d6f (12:5d6f)
-	ld a, [wd7f6]
-	bit 1, a
+	CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD
 	jp nz, MtMoon3Script_49d91
 	ld a, [W_YCOORD]
 	cp $8
@@ -70,8 +68,7 @@
 	jp DisplayTextID
 
 MtMoon3Script_49d91: ; 49d91 (12:5d91)
-	ld a, [wd7f6]
-	and $c0
+	CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL
 	jp z, CheckFightingMapTrainers
 	ret
 
@@ -81,8 +78,7 @@
 	jp z, MtMoon3Script_49d58
 	call UpdateSprites
 	call Delay3
-	ld hl, wd7f6
-	set 1, [hl]
+	SetEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD
 	xor a
 	ld [wJoyIgnore], a
 	ld a, $0
@@ -142,8 +138,7 @@
 	ld a, $a
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld a, [wd7f6]
-	bit 6, a
+	CheckEvent EVENT_GOT_DOME_FOSSIL
 	jr z, .asm_49e1d
 	ld a, HS_MT_MOON_3_FOSSIL_2
 	jr .asm_49e1f
@@ -173,9 +168,9 @@
 
 MtMoon3TrainerHeaders: ; 49e48 (12:5e48)
 MtMoon3TrainerHeader0: ; 49e48 (12:5e48)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd7f6 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_0
 	dw MtMoon3BattleText2 ; TextBeforeBattle
 	dw MtMoon3AfterBattleText2 ; TextAfterBattle
 	dw MtMoon3EndBattleText2 ; TextEndBattle
@@ -182,9 +177,9 @@
 	dw MtMoon3EndBattleText2 ; TextEndBattle
 
 MtMoon3TrainerHeader2: ; 49e54 (12:5e54)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd7f6 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_2
 	dw MtMoon3BattleText3 ; TextBeforeBattle
 	dw MtMoon3AfterBattleText3 ; TextAfterBattle
 	dw MtMoon3EndBattleText3 ; TextEndBattle
@@ -191,9 +186,9 @@
 	dw MtMoon3EndBattleText3 ; TextEndBattle
 
 MtMoon3TrainerHeader3: ; 49e60 (12:5e60)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_3
 	db ($4 << 4) ; trainer's view range
-	dw wd7f6 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_3
 	dw MtMoon3BattleText4 ; TextBeforeBattle
 	dw MtMoon3AfterBattleText4 ; TextAfterBattle
 	dw MtMoon3EndBattleText4 ; TextEndBattle
@@ -200,9 +195,9 @@
 	dw MtMoon3EndBattleText4 ; TextEndBattle
 
 MtMoon3TrainerHeader4: ; 49e6c (12:5e6c)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_4
 	db ($4 << 4) ; trainer's view range
-	dw wd7f6 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_4
 	dw MtMoon3BattleText5 ; TextBeforeBattle
 	dw MtMoon3AfterBattleText5 ; TextAfterBattle
 	dw MtMoon3EndBattleText5 ; TextEndBattle
@@ -212,8 +207,7 @@
 
 MtMoon3Text1: ; 49e79 (12:5e79)
 	TX_ASM
-	ld a, [wd7f6]
-	bit 1, a
+	CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD
 	jr z, .asm_49e8d
 	and $c0
 	jr nz, .asm_49eb8
@@ -284,8 +278,7 @@
 	ld a, HS_MT_MOON_3_FOSSIL_1
 	ld [wcc4d], a
 	predef HideObject
-	ld hl, wd7f6
-	set 6, [hl]
+	SetEvent EVENT_GOT_DOME_FOSSIL
 	ld a, $4
 	ld [W_MTMOON3CURSCRIPT], a
 	ld [W_CURMAPSCRIPT], a
@@ -313,8 +306,7 @@
 	ld a, HS_MT_MOON_3_FOSSIL_2
 	ld [wcc4d], a
 	predef HideObject
-	ld hl, wd7f6
-	set 7, [hl]
+	SetEvent EVENT_GOT_HELIX_FOSSIL
 	ld a, $4
 	ld [W_MTMOON3CURSCRIPT], a
 	ld [W_CURMAPSCRIPT], a
--- a/scripts/mtmoonpokecenter.asm
+++ b/scripts/mtmoonpokecenter.asm
@@ -23,8 +23,7 @@
 
 MtMoonPokecenterText4: ; 492ec (12:52ec)
 	TX_ASM
-	ld a, [wd7c6]
-	add a
+	CheckEvent EVENT_BOUGHT_MAGIKARP, 1
 	jp c, .alreadyBoughtMagikarp
 	ld hl, MtMoonPokecenterText_4935c
 	call PrintText
@@ -59,8 +58,7 @@
 	ld a, MONEY_BOX
 	ld [wTextBoxID], a
 	call DisplayTextBoxID
-	ld hl, wd7c6
-	set 7, [hl]
+	SetEvent EVENT_BOUGHT_MAGIKARP
 	jr .done
 .choseNo
 	ld hl, MtMoonPokecenterText_49361
--- a/scripts/museum1f.asm
+++ b/scripts/museum1f.asm
@@ -54,15 +54,13 @@
 	cp $c
 	jp z, Museum1FScript_5c1f9
 .asm_d49e7
-	ld a, [wd754]
-	bit 0, a
+	CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
 	jr nz, .asm_31a16
 	ld hl, Museum1FText_5c23d
 	call PrintText
 	jp Museum1FScriptEnd
 .asm_b8709
-	ld a, [wd754]
-	bit 0, a
+	CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
 	jr z, .asm_3ded4
 .asm_31a16
 	ld hl, Museum1FText_5c242
@@ -93,8 +91,7 @@
 .asm_0f3e3
 	ld hl, Museum1FText_5c224
 	call PrintText
-	ld hl, wd754
-	set 0, [hl]
+	SetEvent EVENT_BOUGHT_MUSEUM_TICKET
 	xor a
 	ld [wPriceTemp], a
 	ld [wPriceTemp + 1], a
@@ -190,8 +187,7 @@
 
 Museum1FText3: ; 5c256 (17:4256)
 	TX_ASM
-	ld a, [wd754]
-	bit 1, a
+	CheckEvent EVENT_GOT_OLD_AMBER
 	jr nz, .asm_5c285
 	ld hl, Museum1FText_5c28e
 	call PrintText
@@ -198,8 +194,7 @@
 	ld bc, (OLD_AMBER << 8) | 1
 	call GiveItem
 	jr nc, .BagFull
-	ld hl, wd754
-	set 1, [hl]
+	SetEvent EVENT_GOT_OLD_AMBER
 	ld a, HS_OLD_AMBER
 	ld [wcc4d], a
 	predef HideObject
--- a/scripts/oakslab.asm
+++ b/scripts/oakslab.asm
@@ -1,6 +1,5 @@
 OaksLabScript: ; 1cb0e (7:4b0e)
-	ld a, [wd74b]
-	bit 6, a
+	CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS_2
 	call nz, OaksLabScript_1d076
 	ld a, $1
 	ld [wAutoTextBoxDrawingControl], a
@@ -32,8 +31,7 @@
 	dw OaksLabScript18
 
 OaksLabScript0: ; 1cb4e (7:4b4e)
-	ld a, [wd74b]
-	bit 7, a
+	CheckEvent EVENT_OAK_APPEARED_IN_PALLET
 	ret z
 	ld a, [wNPCMovementScriptFunctionNum]
 	and a
@@ -110,10 +108,8 @@
 	ld a, [wSimulatedJoypadStatesIndex]
 	and a
 	ret nz
-	ld hl, wd747
-	set 0, [hl]
-	ld hl, wd74b
-	set 0, [hl]
+	SetEvent EVENT_FOLLOWED_OAK_INTO_LAB
+	SetEvent EVENT_FOLLOWED_OAK_INTO_LAB_2
 	ld a, $1
 	ld [H_SPRITEINDEX], a
 	ld a, SPRITE_FACING_UP
@@ -146,8 +142,7 @@
 	ld a, $14
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd74b
-	set 1, [hl]
+	SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON
 	xor a
 	ld [wJoyIgnore], a
 
@@ -336,8 +331,7 @@
 	ld a, $e
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd74b
-	set 2, [hl]
+	SetEvent EVENT_GOT_STARTER
 	xor a
 	ld [wJoyIgnore], a
 
@@ -435,8 +429,7 @@
 	ld [hSpriteFacingDirection], a
 	call SetSpriteFacingDirectionAndDelay
 	predef HealParty
-	ld hl, wd74b
-	set 3, [hl]
+	SetEvent EVENT_BATTLED_RIVAL_IN_OAKS_LAB
 
 	ld a, $d
 	ld [W_OAKSLABCURSCRIPT], a
@@ -603,10 +596,8 @@
 	ld a, $1b
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd74b
-	set 5, [hl]
-	ld hl, wd74e
-	set 0, [hl]
+	SetEvent EVENT_GOT_POKEDEX
+	SetEvent EVENT_OAK_GOT_PARCEL
 	ld a, HS_LYING_OLD_MAN
 	ld [wcc4d], a
 	predef HideObject
@@ -641,10 +632,9 @@
 	ld a, HS_OAKS_LAB_RIVAL
 	ld [wcc4d], a
 	predef HideObject
-	ld hl, wd7eb
-	set 0, [hl]
-	res 1, [hl]
-	set 7, [hl]
+	SetEvent EVENT_1ST_ROUTE22_RIVAL_BATTLE
+	ResetEventReuseHL EVENT_2ND_ROUTE22_RIVAL_BATTLE
+	SetEventReuseHL EVENT_ROUTE22_RIVAL_WANTS_FIGHT
 	ld a, HS_ROUTE_22_RIVAL_1
 	ld [wcc4d], a
 	predef ShowObject
@@ -660,19 +650,19 @@
 OaksLabScript18: ; 1d009 (7:5009)
 	ret
 
-OaksLabScript_1d00a: ; 1d00a (7:500a)
+OaksLabScript_RemoveParcel: ; 1d00a (7:500a)
 	ld hl, wBagItems
 	ld bc, $0000
-.asm_1d010
+.loop
 	ld a, [hli]
 	cp $ff
 	ret z
 	cp OAKS_PARCEL
-	jr z, .GotParcel
+	jr z, .foundParcel
 	inc hl
 	inc c
-	jr .asm_1d010
-.GotParcel
+	jr .loop
+.foundParcel
 	ld hl, wNumBagItems
 	ld a, c
 	ld [wWhichPokemon], a
@@ -772,8 +762,7 @@
 OaksLabText28: ; 1d0ce (7:50ce)
 OaksLabText1: ; 1d0ce (7:50ce)
 	TX_ASM
-	ld a, [wd74b]
-	bit 0, a
+	CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB_2
 	jr nz, .asm_1d0de
 	ld hl, OaksLabGaryText1
 	call PrintText
@@ -839,10 +828,9 @@
 	ld [wd11e], a
 	ld a, b
 	ld [wSpriteIndex], a
-	ld a, [wd74b]
-	bit 2, a
+	CheckEvent EVENT_GOT_STARTER
 	jp nz, OaksLabScript_1d22d
-	bit 1, a
+	CheckEventReuseA EVENT_OAK_ASKED_TO_CHOOSE_MON
 	jr nz, OaksLabScript_1d157
 	ld hl, OaksLabText39
 	call PrintText
@@ -976,8 +964,7 @@
 OaksLabText32: ; 1d248 (7:5248)
 OaksLabText5: ; 1d248 (7:5248)
 	TX_ASM
-	ld a, [wd747]
-	bit 6, a
+	CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
 	jr nz, .asm_1d266
 	ld hl, wPokedexOwned
 	ld b, wPokedexOwnedEnd - wPokedexOwned
@@ -985,8 +972,7 @@
 	ld a, [wd11e]
 	cp $2
 	jr c, .asm_1d279
-	ld a, [wd74b]
-	bit 5, a
+	CheckEvent EVENT_GOT_POKEDEX
 	jr z, .asm_1d279
 .asm_1d266
 	ld hl, OaksLabText_1d31d
@@ -999,13 +985,11 @@
 	ld b,POKE_BALL
 	call IsItemInBag
 	jr nz, .asm_1d2e7
-	ld a, [wd7eb]
-	bit 5, a
+	CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_FIGHT
 	jr nz, .asm_1d2d0
-	ld a, [wd74b]
-	bit 5, a
+	CheckEvent EVENT_GOT_POKEDEX
 	jr nz, .asm_1d2c8
-	bit 3, a
+	CheckEventReuseA EVENT_BATTLED_RIVAL_IN_OAKS_LAB
 	jr nz, .asm_1d2a9
 	ld a, [wd72e]
 	bit 3, a
@@ -1027,7 +1011,7 @@
 .asm_1d2b8
 	ld hl, OaksLabDeliverParcelText
 	call PrintText
-	call OaksLabScript_1d00a
+	call OaksLabScript_RemoveParcel
 	ld a, $f
 	ld [W_OAKSLABCURSCRIPT], a
 	jr .asm_1d2ed
@@ -1036,9 +1020,7 @@
 	call PrintText
 	jr .asm_1d2ed
 .asm_1d2d0
-	ld hl, wd74b
-	bit 4, [hl]
-	set 4, [hl]
+	CheckAndSetEvent EVENT_GOT_POKEBALLS_FROM_OAK
 	jr nz, .asm_1d2e7
 	ld bc, (POKE_BALL << 8) | 5
 	call GiveItem
--- a/scripts/pallettown.asm
+++ b/scripts/pallettown.asm
@@ -1,9 +1,7 @@
 PalletTownScript: ; 18e5b (6:4e5b)
-	ld a,[wd74b]
-	bit 4,a
+	CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
 	jr z,.next
-	ld hl,wd747
-	set 6,[hl]
+	SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
 .next
 	call EnableAutoTextBoxDrawing
 	ld hl,PalletTownScriptPointers
@@ -20,8 +18,7 @@
 	dw PalletTownScript6
 
 PalletTownScript0: ; 18e81 (6:4e81)
-	ld a,[wd747]
-	bit 0,a
+	CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB
 	ret nz
 	ld a,[W_YCOORD]
 	cp 1 ; is player near north exit?
@@ -38,8 +35,7 @@
 	call PlayMusic
 	ld a,$FC
 	ld [wJoyIgnore],a
-	ld hl,wd74b
-	set 7,[hl]
+	SetEvent EVENT_OAK_APPEARED_IN_PALLET
 
 	; trigger the next script
 	ld a,1
@@ -134,14 +130,11 @@
 	ret
 
 PalletTownScript5: ; 18f56 (6:4f56)
-	ld a,[wd74a]
-	bit 2,a
+	CheckEvent EVENT_DAISY_WALKING
 	jr nz,.next
-	and 3
-	cp 3
+	CheckBothEventsSet EVENT_GOT_TOWN_MAP, EVENT_ENTERED_BLUES_HOUSE, 1
 	jr nz,.next
-	ld hl,wd74a
-	set 2,[hl]
+	SetEvent EVENT_DAISY_WALKING
 	ld a,HS_DAISY_SITTING
 	ld [wcc4d],a
 	predef HideObject
@@ -149,11 +142,9 @@
 	ld [wcc4d],a
 	predef_jump ShowObject
 .next
-	ld a,[wd74b]
-	bit 4,a
+	CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
 	ret z
-	ld hl,wd74b
-	set 6,[hl]
+	SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS_2
 PalletTownScript6: ; 18f87 (6:4f87)
 	ret
 
--- a/scripts/pewtercity.asm
+++ b/scripts/pewtercity.asm
@@ -16,14 +16,12 @@
 PewterCityScript0: ; 19251 (6:5251)
 	xor a
 	ld [W_MUSEUM1FCURSCRIPT], a
-	ld hl, wd754
-	res 0, [hl]
+	ResetEvent EVENT_BOUGHT_MUSEUM_TICKET
 	call PewterCityScript_1925e
 	ret
 
 PewterCityScript_1925e: ; 1925e (6:525e)
-	ld a, [wd755]
-	bit 7, a
+	CheckEvent EVENT_BEAT_BROCK
 	ret nz
 	ld hl, CoordsData_19277
 	call ArePlayerCoordsInArray
--- a/scripts/pewtergym.asm
+++ b/scripts/pewtergym.asm
@@ -46,8 +46,7 @@
 	ld a, $4
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd755
-	set 7, [hl]
+	SetEvent EVENT_BEAT_BROCK
 	ld bc, (TM_34 << 8) | 1
 	call GiveItem
 	jr nc, .BagFull
@@ -54,8 +53,7 @@
 	ld a, $5
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd755
-	set 6, [hl]
+	SetEvent EVENT_GOT_TM34
 	jr .asm_5c408
 .BagFull
 	ld a, $6
@@ -74,13 +72,10 @@
 	ld [wcc4d], a
 	predef HideObject
 
-	ld hl, wd7eb
-	res 0, [hl]
-	res 7, [hl]
+	ResetEvents EVENT_1ST_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_FIGHT
 
 	; deactivate gym trainers
-	ld hl, wd755
-	set 2, [hl]
+	SetEvent EVENT_BEAT_PEWTER_GYM_TRAINER_0
 
 	jp PewterGymScript_5c3bf
 
@@ -94,9 +89,9 @@
 
 PewterGymTrainerHeaders: ; 5c441 (17:4441)
 PewterGymTrainerHeader0: ; 5c441 (17:4441)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_PEWTER_GYM_TRAINER_0
 	db ($5 << 4) ; trainer's view range
-	dw wd755 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_PEWTER_GYM_TRAINER_0
 	dw PewterGymBattleText1 ; TextBeforeBattle
 	dw PewterGymAfterBattleText1 ; TextAfterBattle
 	dw PewterGymEndBattleText1 ; TextEndBattle
@@ -106,10 +101,9 @@
 
 PewterGymText1: ; 5c44e (17:444e)
 	TX_ASM
-	ld a, [wd755]
-	bit 7, a
+	CheckEvent EVENT_BEAT_BROCK
 	jr z, .asm_5c46a
-	bit 6, a
+	CheckEventReuseA EVENT_GOT_TM34
 	jr nz, .asm_5c462
 	call z, PewterGymScript_5c3df
 	call DisableWaitingAfterTextDisplay
--- a/scripts/pokemontower2.asm
+++ b/scripts/pokemontower2.asm
@@ -17,8 +17,7 @@
 	dw PokemonTower2Script2
 
 PokemonTower2Script0: ; 6050f (18:450f)
-	ld a, [wd764]
-	bit 7, a
+	CheckEvent EVENT_BEAT_POKEMON_TOWER_RIVAL
 	ret nz
 	ld hl, CoordsData_6055e
 	call ArePlayerCoordsInArray
@@ -29,15 +28,14 @@
 	ld c, BANK(Music_MeetRival)
 	ld a, MUSIC_MEET_RIVAL
 	call PlayMusic
-	ld hl, wd764
-	res 6, [hl]
+	ResetEvent EVENT_POKEMON_TOWER_RIVAL_ON_LEFT
 	ld a, [wCoordIndex]
 	cp $1
 	ld a, PLAYER_DIR_UP
 	ld b, SPRITE_FACING_DOWN
 	jr nz, .asm_60544
-	ld hl, wd764
-	set 6, [hl]
+; the rival is on the left side and the player is on the right side
+	SetEvent EVENT_POKEMON_TOWER_RIVAL_ON_LEFT
 	ld a, PLAYER_DIR_LEFT
 	ld b, SPRITE_FACING_RIGHT
 .asm_60544
@@ -66,14 +64,12 @@
 	jp z, PokemonTower2Script_604fe
 	ld a, $f0
 	ld [wJoyIgnore], a
-	ld hl, wd764
-	set 7, [hl]
+	SetEvent EVENT_BEAT_POKEMON_TOWER_RIVAL
 	ld a, $1
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
 	ld de, MovementData_605b2
-	ld a, [wd764]
-	bit 6, a
+	CheckEvent EVENT_POKEMON_TOWER_RIVAL_ON_LEFT
 	jr nz, .asm_60589
 	ld de, MovementData_605a9
 .asm_60589
@@ -132,8 +128,7 @@
 
 PokemonTower2Text1: ; 605df (18:45df)
 	TX_ASM
-	ld a, [wd764]
-	bit 7, a
+	CheckEvent EVENT_BEAT_POKEMON_TOWER_RIVAL
 	jr z, .asm_16f24
 	ld hl, PokemonTower2Text_6063c
 	call PrintText
--- a/scripts/pokemontower3.asm
+++ b/scripts/pokemontower3.asm
@@ -20,9 +20,9 @@
 
 PokemonTower3TrainerHeaders: ; 606ed (18:46ed)
 PokemonTower3TrainerHeader0: ; 606ed (18:46ed)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_3_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd765 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_3_TRAINER_0
 	dw PokemonTower3BattleText1 ; TextBeforeBattle
 	dw PokemonTower3AfterBattleText1 ; TextAfterBattle
 	dw PokemonTower3EndBattleText1 ; TextEndBattle
@@ -29,9 +29,9 @@
 	dw PokemonTower3EndBattleText1 ; TextEndBattle
 
 PokemonTower3TrainerHeader1: ; 606f9 (18:46f9)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_3_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd765 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_3_TRAINER_1
 	dw PokemonTower3BattleText2 ; TextBeforeBattle
 	dw PokemonTower3AfterBattleText2 ; TextAfterBattle
 	dw PokemonTower3EndBattleText2 ; TextEndBattle
@@ -38,9 +38,9 @@
 	dw PokemonTower3EndBattleText2 ; TextEndBattle
 
 PokemonTower3TrainerHeader2: ; 60705 (18:4705)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_3_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd765 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_3_TRAINER_2
 	dw PokemonTower3BattleText3 ; TextBeforeBattle
 	dw PokemonTower3AfterBattleText3 ; TextAfterBattle
 	dw PokemonTower3EndBattleText3 ; TextEndBattle
--- a/scripts/pokemontower4.asm
+++ b/scripts/pokemontower4.asm
@@ -22,9 +22,9 @@
 
 PokemonTower4TrainerHeaders: ; 6081b (18:481b)
 PokemonTower4TrainerHeader0: ; 6081b (18:481b)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_4_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd766 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_4_TRAINER_0
 	dw PokemonTower4BattleText1 ; TextBeforeBattle
 	dw PokemonTower4AfterBattleText1 ; TextAfterBattle
 	dw PokemonTower4EndBattleText1 ; TextEndBattle
@@ -31,9 +31,9 @@
 	dw PokemonTower4EndBattleText1 ; TextEndBattle
 
 PokemonTower4TrainerHeader1: ; 60827 (18:4827)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_4_TRAINER_1
 	db ($2 << 4) ; trainer's view range
-	dw wd766 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_4_TRAINER_1
 	dw PokemonTower4BattleText2 ; TextBeforeBattle
 	dw PokemonTower4AfterBattleText2 ; TextAfterBattle
 	dw PokemonTower4EndBattleText2 ; TextEndBattle
@@ -40,9 +40,9 @@
 	dw PokemonTower4EndBattleText2 ; TextEndBattle
 
 PokemonTower4TrainerHeader2: ; 60833 (18:4833)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_4_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd766 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_4_TRAINER_2
 	dw PokemonTower4BattleText3 ; TextBeforeBattle
 	dw PokemonTower4AfterBattleText3 ; TextAfterBattle
 	dw PokemonTower4EndBattleText3 ; TextEndBattle
--- a/scripts/pokemontower5.asm
+++ b/scripts/pokemontower5.asm
@@ -18,13 +18,10 @@
 	jr c, .asm_60960
 	ld hl, wd72e
 	res 4, [hl]
-	ld hl, wd767
-	res 7, [hl]
+	ResetEvent EVENT_IN_PURIFIED_ZONE
 	jp CheckFightingMapTrainers
 .asm_60960
-	ld hl, wd767
-	bit 7, [hl]
-	set 7, [hl]
+	CheckAndSetEvent EVENT_IN_PURIFIED_ZONE
 	ret nz
 	xor a
 	ld [hJoyHeld], a
@@ -62,9 +59,9 @@
 
 PokemonTower5TrainerHeaders: ; 609a9 (18:49a9)
 PokemonTower5TrainerHeader0: ; 609a9 (18:49a9)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_5_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd767 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_5_TRAINER_0
 	dw PokemonTower5BattleText1 ; TextBeforeBattle
 	dw PokemonTower5AfterBattleText1 ; TextAfterBattle
 	dw PokemonTower5EndBattleText1 ; TextEndBattle
@@ -71,9 +68,9 @@
 	dw PokemonTower5EndBattleText1 ; TextEndBattle
 
 PokemonTower5TrainerHeader1: ; 609b5 (18:49b5)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_5_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd767 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_5_TRAINER_1
 	dw PokemonTower5BattleText2 ; TextBeforeBattle
 	dw PokemonTower5AfterBattleText2 ; TextAfterBattle
 	dw PokemonTower5EndBattleText2 ; TextEndBattle
@@ -80,9 +77,9 @@
 	dw PokemonTower5EndBattleText2 ; TextEndBattle
 
 PokemonTower5TrainerHeader2: ; 609c1 (18:49c1)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_5_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd767 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_5_TRAINER_2
 	dw PokemonTower5BattleText3 ; TextBeforeBattle
 	dw PokemonTower5AfterBattleText3 ; TextAfterBattle
 	dw PokemonTower5EndBattleText3 ; TextEndBattle
@@ -89,9 +86,9 @@
 	dw PokemonTower5EndBattleText3 ; TextEndBattle
 
 PokemonTower5TrainerHeader3: ; 609cd (18:49cd)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_5_TRAINER_3
 	db ($2 << 4) ; trainer's view range
-	dw wd767 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_5_TRAINER_3
 	dw PokemonTower5BattleText4 ; TextBeforeBattle
 	dw PokemonTower5AfterBattleText4 ; TextAfterBattle
 	dw PokemonTower5EndBattleText4 ; TextEndBattle
--- a/scripts/pokemontower6.asm
+++ b/scripts/pokemontower6.asm
@@ -22,8 +22,7 @@
 	dw PokemonTower6Script4
 
 PokemonTower6Script0: ; 60b17 (18:4b17)
-	ld a, [wd768]
-	bit 7, a
+	CheckEvent EVENT_BEAT_GHOST_MAROWAK
 	jp nz, CheckFightingMapTrainers
 	ld hl, CoordsData_60b45
 	call ArePlayerCoordsInArray
@@ -60,8 +59,7 @@
 	ld a, [wBattleResult]
 	and a
 	jr nz, .asm_60b82
-	ld hl, wd768
-	set 7, [hl]
+	SetEvent EVENT_BEAT_GHOST_MAROWAK
 	ld a, $7
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
@@ -107,9 +105,9 @@
 
 PokemonTower6TrainerHeaders: ; 60bbf (18:4bbf)
 PokemonTower6TrainerHeader0: ; 60bbf (18:4bbf)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_6_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd768 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_6_TRAINER_0
 	dw PokemonTower6BattleText1 ; TextBeforeBattle
 	dw PokemonTower6AfterBattleText1 ; TextAfterBattle
 	dw PokemonTower6EndBattleText1 ; TextEndBattle
@@ -116,9 +114,9 @@
 	dw PokemonTower6EndBattleText1 ; TextEndBattle
 
 PokemonTower6TrainerHeader1: ; 60bcb (18:4bcb)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_6_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd768 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_6_TRAINER_1
 	dw PokemonTower6BattleText2 ; TextBeforeBattle
 	dw PokemonTower6AfterBattleText2 ; TextAfterBattle
 	dw PokemonTower6EndBattleText2 ; TextEndBattle
@@ -125,9 +123,9 @@
 	dw PokemonTower6EndBattleText2 ; TextEndBattle
 
 PokemonTower6TrainerHeader2: ; 60bd7 (18:4bd7)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_6_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd768 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_6_TRAINER_2
 	dw PokemonTower6BattleText3 ; TextBeforeBattle
 	dw PokemonTower6AfterBattleText3 ; TextAfterBattle
 	dw PokemonTower6EndBattleText3 ; TextEndBattle
--- a/scripts/pokemontower7.asm
+++ b/scripts/pokemontower7.asm
@@ -206,9 +206,9 @@
 
 PokemonTower7TrainerHeaders: ; 60e47 (18:4e47)
 PokemonTower7TrainerHeader0: ; 60e47 (18:4e47)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_7_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd769 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_7_TRAINER_0
 	dw PokemonTower7BattleText1 ; TextBeforeBattle
 	dw PokemonTower7AfterBattleText1 ; TextAfterBattle
 	dw PokemonTower7EndBattleText1 ; TextEndBattle
@@ -215,9 +215,9 @@
 	dw PokemonTower7EndBattleText1 ; TextEndBattle
 
 PokemonTower7TrainerHeader1: ; 60e53 (18:4e53)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd769 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
 	dw PokemonTower7BattleText2 ; TextBeforeBattle
 	dw PokemonTower7AfterBattleText2 ; TextAfterBattle
 	dw PokemonTower7EndBattleText2 ; TextEndBattle
@@ -224,9 +224,9 @@
 	dw PokemonTower7EndBattleText2 ; TextEndBattle
 
 PokemonTower7TrainerHeader2: ; 60e5f (18:4e5f)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POKEMONTOWER_7_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd769 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_7_TRAINER_2
 	dw PokemonTower7BattleText3 ; TextBeforeBattle
 	dw PokemonTower7AfterBattleText3 ; TextAfterBattle
 	dw PokemonTower7EndBattleText3 ; TextEndBattle
@@ -256,10 +256,8 @@
 	TX_ASM
 	ld hl, TowerRescueFujiText
 	call PrintText
-	ld hl, wd7e0
-	set 7, [hl]
-	ld hl, wd769
-	set 7, [hl]
+	SetEvent EVENT_RESCUED_MR_FUJI
+	SetEvent EVENT_RESCUED_MR_FUJI_2
 	ld a, HS_LAVENDER_HOUSE_1_MR_FUJI
 	ld [wcc4d], a
 	predef ShowObject
--- a/scripts/powerplant.asm
+++ b/scripts/powerplant.asm
@@ -30,9 +30,9 @@
 
 PowerPlantTrainerHeaders: ; 1e2fb (7:62fb)
 PowerPlantTrainerHeader0: ; 1e2fb (7:62fb)
-	db 1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POWER_PLANT_TRAINER_0
 	db 0 ; view range
-	dw wd7d3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POWER_PLANT_TRAINER_0
 	dw VoltorbBattleText ; TextBeforeBattle
 	dw VoltorbBattleText ; TextAfterBattle
 	dw VoltorbBattleText ; TextEndBattle
@@ -39,9 +39,9 @@
 	dw VoltorbBattleText ; TextEndBattle
 
 PowerPlantTrainerHeader1: ; 1e307 (7:6307)
-	db 2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POWER_PLANT_TRAINER_1
 	db 0 ; view range
-	dw wd7d3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POWER_PLANT_TRAINER_1
 	dw VoltorbBattleText ; TextBeforeBattle
 	dw VoltorbBattleText ; TextAfterBattle
 	dw VoltorbBattleText ; TextEndBattle
@@ -48,9 +48,9 @@
 	dw VoltorbBattleText ; TextEndBattle
 
 PowerPlantTrainerHeader2: ; 1e313 (7:6313)
-	db 3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POWER_PLANT_TRAINER_2
 	db 0 ; view range
-	dw wd7d3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POWER_PLANT_TRAINER_2
 	dw VoltorbBattleText ; TextBeforeBattle
 	dw VoltorbBattleText ; TextAfterBattle
 	dw VoltorbBattleText ; TextEndBattle
@@ -57,9 +57,9 @@
 	dw VoltorbBattleText ; TextEndBattle
 
 PowerPlantTrainerHeader3: ; 1e31f (7:631f)
-	db 4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POWER_PLANT_TRAINER_3
 	db 0 ; view range
-	dw wd7d3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POWER_PLANT_TRAINER_3
 	dw VoltorbBattleText ; TextBeforeBattle
 	dw VoltorbBattleText ; TextAfterBattle
 	dw VoltorbBattleText ; TextEndBattle
@@ -66,9 +66,9 @@
 	dw VoltorbBattleText ; TextEndBattle
 
 PowerPlantTrainerHeader4: ; 1e32b (7:632b)
-	db 5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POWER_PLANT_TRAINER_4
 	db 0 ; view range
-	dw wd7d3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POWER_PLANT_TRAINER_4
 	dw VoltorbBattleText ; TextBeforeBattle
 	dw VoltorbBattleText ; TextAfterBattle
 	dw VoltorbBattleText ; TextEndBattle
@@ -75,9 +75,9 @@
 	dw VoltorbBattleText ; TextEndBattle
 
 PowerPlantTrainerHeader5: ; 1e337 (7:6337)
-	db 6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POWER_PLANT_TRAINER_5
 	db 0 ; view range
-	dw wd7d3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POWER_PLANT_TRAINER_5
 	dw VoltorbBattleText ; TextBeforeBattle
 	dw VoltorbBattleText ; TextAfterBattle
 	dw VoltorbBattleText ; TextEndBattle
@@ -84,9 +84,9 @@
 	dw VoltorbBattleText ; TextEndBattle
 
 PowerPlantTrainerHeader6: ; 1e343 (7:6343)
-	db 7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POWER_PLANT_TRAINER_6
 	db 0 ; view range
-	dw wd7d3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POWER_PLANT_TRAINER_6
 	dw VoltorbBattleText ; TextBeforeBattle
 	dw VoltorbBattleText ; TextAfterBattle
 	dw VoltorbBattleText ; TextEndBattle
@@ -93,9 +93,9 @@
 	dw VoltorbBattleText ; TextEndBattle
 
 PowerPlantTrainerHeader7: ; 1e34f (7:634f)
-	db 8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POWER_PLANT_TRAINER_7, 1
 	db 0 ; view range
-	dw wd7d3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POWER_PLANT_TRAINER_7, 1
 	dw VoltorbBattleText ; TextBeforeBattle
 	dw VoltorbBattleText ; TextAfterBattle
 	dw VoltorbBattleText ; TextEndBattle
@@ -102,9 +102,9 @@
 	dw VoltorbBattleText ; TextEndBattle
 
 PowerPlantTrainerHeader8: ; 1e35b (7:635b)
-	db 9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_POWER_PLANT_TRAINER_8, 1
 	db 0 ; view range
-	dw wd7d3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_POWER_PLANT_TRAINER_8, 1
 	dw ZapdosBattleText ; TextBeforeBattle
 	dw ZapdosBattleText ; TextAfterBattle
 	dw ZapdosBattleText ; TextEndBattle
--- a/scripts/rockethideout1.asm
+++ b/scripts/rockethideout1.asm
@@ -13,10 +13,9 @@
 	bit 5, [hl]
 	res 5, [hl]
 	ret z
-	ld a, [wd815]
-	bit 7, a
+	CheckEvent EVENT_677
 	jr nz, .asm_44c01
-	bit 5, a
+	CheckEventReuseA EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_5
 	jr nz, .asm_44bf7
 	ld a, $54
 	jr .asm_44c03
@@ -23,8 +22,7 @@
 .asm_44bf7
 	ld a, SFX_GO_INSIDE
 	call PlaySound
-	ld hl, wd815
-	bit 7, [hl]
+	CheckEventHL EVENT_677
 .asm_44c01
 	ld a, $e
 .asm_44c03
@@ -48,9 +46,9 @@
 
 RocketHideout1TrainerHeaders: ; 44c22 (11:4c22)
 RocketHideout1TrainerHeader0: ; 44c22 (11:4c22)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd815 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_0
 	dw RocketHideout1BattleText2 ; TextBeforeBattle
 	dw RocketHideout1AfterBattleTxt2 ; TextAfterBattle
 	dw RocketHideout1EndBattleText2 ; TextEndBattle
@@ -57,9 +55,9 @@
 	dw RocketHideout1EndBattleText2 ; TextEndBattle
 
 RocketHideout1TrainerHeader2: ; 44c2e (11:4c2e)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd815 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_2
 	dw RocketHideout1BattleText3 ; TextBeforeBattle
 	dw RocketHideout1AfterBattleTxt3 ; TextAfterBattle
 	dw RocketHideout1EndBattleText3 ; TextEndBattle
@@ -66,9 +64,9 @@
 	dw RocketHideout1EndBattleText3 ; TextEndBattle
 
 RocketHideout1TrainerHeader3: ; 44c3a (11:4c3a)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_3
 	db ($2 << 4) ; trainer's view range
-	dw wd815 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_3
 	dw RocketHideout1BattleText4 ; TextBeforeBattle
 	dw RocketHideout1AfterBattleTxt4 ; TextAfterBattle
 	dw RocketHideout1EndBattleText4 ; TextEndBattle
@@ -75,9 +73,9 @@
 	dw RocketHideout1EndBattleText4 ; TextEndBattle
 
 RocketHideout1TrainerHeader4: ; 44c46 (11:4c46)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_4
 	db ($3 << 4) ; trainer's view range
-	dw wd815 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_4
 	dw RocketHideout1BattleText5 ; TextBeforeBattle
 	dw RocketHideout1AfterBattleTxt5 ; TextAfterBattle
 	dw RocketHideout1EndBattleText5 ; TextEndBattle
@@ -84,9 +82,9 @@
 	dw RocketHideout1EndBattleText5 ; TextEndBattle
 
 RocketHideout1TrainerHeader5: ; 44c52 (11:4c52)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_5
 	db ($3 << 4) ; trainer's view range
-	dw wd815 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_5
 	dw RocketHideout1BattleText6 ; TextBeforeBattle
 	dw RocketHideout1AfterBattleTxt6 ; TextAfterBattle
 	dw RocketHideout1EndBattleText6 ; TextEndBattle
@@ -127,8 +125,7 @@
 RocketHideout1EndBattleText6: ; 44c91 (11:4c91)
 	TX_FAR _RocketHideout1EndBattleText6
 	TX_ASM
-	ld hl, wd815
-	set 5, [hl]
+	SetEvent EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_5
 	ld hl, RocketHideout1Text_44c9f
 	ret
 
--- a/scripts/rockethideout2.asm
+++ b/scripts/rockethideout2.asm
@@ -422,9 +422,9 @@
 
 RocketHideout2TrainerHeaders: ; 450d1 (11:50d1)
 RocketHideout2TrainerHeader0: ; 450d1 (11:50d1)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_2_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd817 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_2_TRAINER_0
 	dw RocketHideout2BattleText2 ; TextBeforeBattle
 	dw RocketHideout2AfterBattleTxt2 ; TextAfterBattle
 	dw RocketHideout2EndBattleText2 ; TextEndBattle
--- a/scripts/rockethideout3.asm
+++ b/scripts/rockethideout3.asm
@@ -151,9 +151,9 @@
 
 RocketHideout3TrainerHeaders: ; 45302 (11:5302)
 RocketHideout3TrainerHeader0: ; 45302 (11:5302)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_3_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd819 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_3_TRAINER_0
 	dw RocketHideout3BattleText2 ; TextBeforeBattle
 	dw RocketHideout3AfterBattleTxt2 ; TextAfterBattle
 	dw RocketHideout3EndBattleText2 ; TextEndBattle
@@ -160,9 +160,9 @@
 	dw RocketHideout3EndBattleText2 ; TextEndBattle
 
 RocketHideout3TrainerHeader2: ; 4530e (11:530e)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_3_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd819 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_3_TRAINER_2
 	dw RocketHideout3BattleTxt ; TextBeforeBattle
 	dw RocketHideout3AfterBattleText3 ; TextAfterBattle
 	dw RocketHideout3EndBattleText3 ; TextEndBattle
--- a/scripts/rockethideout4.asm
+++ b/scripts/rockethideout4.asm
@@ -13,11 +13,9 @@
 	bit 5, [hl]
 	res 5, [hl]
 	ret z
-	ld a, [wd81b]
-	bit 5, a
+	CheckEvent EVENT_ROCKET_HIDEOUT_4_DOOR_UNLOCKED
 	jr nz, .asm_45496
-	and $c
-	cp $c
+	CheckBothEventsSet EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0, EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2, 1
 	jr z, .asm_4548c
 	ld a, $2d
 	jr .asm_45498
@@ -24,8 +22,7 @@
 .asm_4548c
 	ld a, SFX_GO_INSIDE
 	call PlaySound
-	ld hl, wd81b
-	set 5, [hl]
+	SetEvent EVENT_ROCKET_HIDEOUT_4_DOOR_UNLOCKED
 .asm_45496
 	ld a, $e
 .asm_45498
@@ -53,8 +50,7 @@
 	call UpdateSprites
 	ld a, $f0
 	ld [wJoyIgnore], a
-	ld hl, wd81b
-	set 7, [hl]
+	SetEvent EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI
 	ld a, $a
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
@@ -90,9 +86,9 @@
 
 RocketHideout4TrainerHeaders: ; 45515 (11:5515)
 RocketHideout4TrainerHeader0: ; 45515 (11:5515)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0
 	db ($0 << 4) ; trainer's view range
-	dw wd81b ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0
 	dw RocketHideout4BattleText2 ; TextBeforeBattle
 	dw RocketHideout4AfterBattleText2 ; TextAfterBattle
 	dw RocketHideout4EndBattleText2 ; TextEndBattle
@@ -99,9 +95,9 @@
 	dw RocketHideout4EndBattleText2 ; TextEndBattle
 
 RocketHideout4TrainerHeader2: ; 45521 (11:5521)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2
 	db ($0 << 4) ; trainer's view range
-	dw wd81b ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2
 	dw RocketHideout4BattleText3 ; TextBeforeBattle
 	dw RocketHideout4AfterBattleText3 ; TextAfterBattle
 	dw RocketHideout4EndBattleText3 ; TextEndBattle
@@ -108,9 +104,9 @@
 	dw RocketHideout4EndBattleText3 ; TextEndBattle
 
 RocketHideout4TrainerHeader3: ; 4552d (11:552d)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_3
 	db ($1 << 4) ; trainer's view range
-	dw wd81b ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_3
 	dw RocketHideout4BattleText4 ; TextBeforeBattle
 	dw RocketHideout4AfterBattleText4 ; TextAfterBattle
 	dw RocketHideout4EndBattleText4 ; TextEndBattle
@@ -120,8 +116,7 @@
 
 RocketHideout4Text1: ; 4553a (11:553a)
 	TX_ASM
-	ld a, [wd81b]
-	bit 7, a
+	CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI
 	jp nz, .asm_545571
 	ld hl, RocketHideout4Text_4557a
 	call PrintText
@@ -213,9 +208,7 @@
 	TX_ASM
 	ld hl, RocketHideout4Text_455ec
 	call PrintText
-	ld hl, wd81b
-	bit 6, [hl]
-	set 6, [hl]
+	CheckAndSetEvent EVENT_ROCKET_DROPPED_LIFT_KEY
 	jr nz, .asm_455e9
 	ld a, HS_ROCKET_HIDEOUT_4_ITEM_5
 	ld [wcc4d], a
--- a/scripts/rocktunnel1.asm
+++ b/scripts/rocktunnel1.asm
@@ -24,9 +24,9 @@
 
 RockTunnel1TrainerHeaders: ; 44505 (11:4505)
 RockTunnel1TrainerHeader1: ; 44505 (11:4505)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_1
 	db ($4 << 4) ; trainer's view range
-	dw wd7d2 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_1
 	dw RockTunnel1BattleText1 ; TextBeforeBattle
 	dw RockTunnel1AfterBattleText1 ; TextAfterBattle
 	dw RockTunnel1EndBattleText1 ; TextEndBattle
@@ -33,9 +33,9 @@
 	dw RockTunnel1EndBattleText1 ; TextEndBattle
 
 RockTunnel1TrainerHeader2: ; 44511 (11:4511)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd7d2 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_2
 	dw RockTunnel1BattleText2 ; TextBeforeBattle
 	dw RockTunnel1AfterBattleText2 ; TextAfterBattle
 	dw RockTunnel1EndBattleText2 ; TextEndBattle
@@ -42,9 +42,9 @@
 	dw RockTunnel1EndBattleText2 ; TextEndBattle
 
 RockTunnel1TrainerHeader3: ; 4451d (11:451d)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd7d2 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_3
 	dw RockTunnel1BattleText3 ; TextBeforeBattle
 	dw RockTunnel1AfterBattleText3 ; TextAfterBattle
 	dw RockTunnel1EndBattleText3 ; TextEndBattle
@@ -51,9 +51,9 @@
 	dw RockTunnel1EndBattleText3 ; TextEndBattle
 
 RockTunnel1TrainerHeader4: ; 44529 (11:4529)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_4
 	db ($3 << 4) ; trainer's view range
-	dw wd7d2 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_4
 	dw RockTunnel1BattleText4 ; TextBeforeBattle
 	dw RockTunnel1AfterBattleText4 ; TextAfterBattle
 	dw RockTunnel1EndBattleText4 ; TextEndBattle
@@ -60,9 +60,9 @@
 	dw RockTunnel1EndBattleText4 ; TextEndBattle
 
 RockTunnel1TrainerHeader5: ; 44535 (11:4535)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_5
 	db ($4 << 4) ; trainer's view range
-	dw wd7d2 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_5
 	dw RockTunnel1BattleText5 ; TextBeforeBattle
 	dw RockTunnel1AfterBattleText5 ; TextAfterBattle
 	dw RockTunnel1EndBattleText5 ; TextEndBattle
@@ -69,9 +69,9 @@
 	dw RockTunnel1EndBattleText5 ; TextEndBattle
 
 RockTunnel1TrainerHeader6: ; 44541 (11:4541)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_6
 	db ($4 << 4) ; trainer's view range
-	dw wd7d2 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_6
 	dw RockTunnel1BattleText6 ; TextBeforeBattle
 	dw RockTunnel1AfterBattleText6 ; TextAfterBattle
 	dw RockTunnel1EndBattleText6 ; TextEndBattle
@@ -78,9 +78,9 @@
 	dw RockTunnel1EndBattleText6 ; TextEndBattle
 
 RockTunnel1TrainerHeader7: ; 4454d (11:454d)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_7
 	db ($4 << 4) ; trainer's view range
-	dw wd7d2 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_7
 	dw RockTunnel1BattleText7 ; TextBeforeBattle
 	dw RockTunnel1AfterBattleText7 ; TextAfterBattle
 	dw RockTunnel1EndBattleText7 ; TextEndBattle
--- a/scripts/rocktunnel2.asm
+++ b/scripts/rocktunnel2.asm
@@ -24,9 +24,9 @@
 
 RockTunnel2TrainerHeaders: ; 46014 (11:6014)
 RockTunnel2TrainerHeader0: ; 46014 (11:6014)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd87d ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_0
 	dw RockTunnel2BattleText2 ; TextBeforeBattle
 	dw RockTunnel2AfterBattleText2 ; TextAfterBattle
 	dw RockTunnel2EndBattleText2 ; TextEndBattle
@@ -33,9 +33,9 @@
 	dw RockTunnel2EndBattleText2 ; TextEndBattle
 
 RockTunnel2TrainerHeader2: ; 46020 (11:6020)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd87d ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_2
 	dw RockTunnel2BattleText3 ; TextBeforeBattle
 	dw RockTunnel2AfterBattleText3 ; TextAfterBattle
 	dw RockTunnel2EndBattleText3 ; TextEndBattle
@@ -42,9 +42,9 @@
 	dw RockTunnel2EndBattleText3 ; TextEndBattle
 
 RockTunnel2TrainerHeader3: ; 4602c (11:602c)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd87d ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_3
 	dw RockTunnel2BattleText4 ; TextBeforeBattle
 	dw RockTunnel2AfterBattleText4 ; TextAfterBattle
 	dw RockTunnel2EndBattleText4 ; TextEndBattle
@@ -51,9 +51,9 @@
 	dw RockTunnel2EndBattleText4 ; TextEndBattle
 
 RockTunnel2TrainerHeader4: ; 46038 (11:6038)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_4
 	db ($4 << 4) ; trainer's view range
-	dw wd87d ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_4
 	dw RockTunnel2BattleText5 ; TextBeforeBattle
 	dw RockTunnel2AfterBattleText5 ; TextAfterBattle
 	dw RockTunnel2EndBattleText5 ; TextEndBattle
@@ -60,9 +60,9 @@
 	dw RockTunnel2EndBattleText5 ; TextEndBattle
 
 RockTunnel2TrainerHeader5: ; 46044 (11:6044)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_5
 	db ($3 << 4) ; trainer's view range
-	dw wd87d ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_5
 	dw RockTunnel2BattleText6 ; TextBeforeBattle
 	dw RockTunnel2AfterBattleText6 ; TextAfterBattle
 	dw RockTunnel2EndBattleText6 ; TextEndBattle
@@ -69,9 +69,9 @@
 	dw RockTunnel2EndBattleText6 ; TextEndBattle
 
 RockTunnel2TrainerHeader6: ; 46050 (11:6050)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_6
 	db ($4 << 4) ; trainer's view range
-	dw wd87d ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_6
 	dw RockTunnel2BattleText7 ; TextBeforeBattle
 	dw RockTunnel2AfterBattleText7 ; TextAfterBattle
 	dw RockTunnel2EndBattleText7 ; TextEndBattle
@@ -78,9 +78,9 @@
 	dw RockTunnel2EndBattleText7 ; TextEndBattle
 
 RockTunnel2TrainerHeader7: ; 4605c (11:605c)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_7
 	db ($3 << 4) ; trainer's view range
-	dw wd87d ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_7
 	dw RockTunnel2BattleText8 ; TextBeforeBattle
 	dw RockTunnel2AfterBattleText8 ; TextAfterBattle
 	dw RockTunnel2EndBattleText8 ; TextEndBattle
@@ -87,9 +87,9 @@
 	dw RockTunnel2EndBattleText8 ; TextEndBattle
 
 RockTunnel2TrainerHeader8: ; 46068 (11:6068)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_8, 1
 	db ($3 << 4) ; trainer's view range
-	dw wd87d ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_8, 1
 	dw RockTunnel2BattleText9 ; TextBeforeBattle
 	dw RockTunnel2AfterBattleText9 ; TextAfterBattle
 	dw RockTunnel2EndBattleText9 ; TextEndBattle
--- a/scripts/route1.asm
+++ b/scripts/route1.asm
@@ -8,9 +8,7 @@
 
 Route1Text1: ; 1cab8 (7:4ab8)
 	TX_ASM
-	ld hl, wd7bf
-	bit 0, [hl]
-	set 0, [hl]
+	CheckAndSetEvent EVENT_GOT_POTION_SAMPLE
 	jr nz, .asm_1cada
 	ld hl, Route1ViridianMartSampleText
 	call PrintText
--- a/scripts/route10.asm
+++ b/scripts/route10.asm
@@ -26,9 +26,9 @@
 
 Route10TrainerHeaders: ; 59363 (16:5363)
 Route10TrainerHeader0: ; 59363 (16:5363)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_10_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd7d1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_10_TRAINER_0
 	dw Route10BattleText1 ; TextBeforeBattle
 	dw Route10AfterBattleText1 ; TextAfterBattle
 	dw Route10EndBattleText1 ; TextEndBattle
@@ -35,9 +35,9 @@
 	dw Route10EndBattleText1 ; TextEndBattle
 
 Route10TrainerHeader1: ; 5936f (16:536f)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_10_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd7d1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_10_TRAINER_1
 	dw Route10BattleText2 ; TextBeforeBattle
 	dw Route10AfterBattleText2 ; TextAfterBattle
 	dw Route10EndBattleText2 ; TextEndBattle
@@ -44,9 +44,9 @@
 	dw Route10EndBattleText2 ; TextEndBattle
 
 Route10TrainerHeader2: ; 5937b (16:537b)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_10_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd7d1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_10_TRAINER_2
 	dw Route10BattleText3 ; TextBeforeBattle
 	dw Route10AfterBattleText3 ; TextAfterBattle
 	dw Route10EndBattleText3 ; TextEndBattle
@@ -53,9 +53,9 @@
 	dw Route10EndBattleText3 ; TextEndBattle
 
 Route10TrainerHeader3: ; 59387 (16:5387)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_10_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd7d1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_10_TRAINER_3
 	dw Route10BattleText4 ; TextBeforeBattle
 	dw Route10AfterBattleText4 ; TextAfterBattle
 	dw Route10EndBattleText4 ; TextEndBattle
@@ -62,9 +62,9 @@
 	dw Route10EndBattleText4 ; TextEndBattle
 
 Route10TrainerHeader4: ; 59393 (16:5393)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_10_TRAINER_4
 	db ($2 << 4) ; trainer's view range
-	dw wd7d1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_10_TRAINER_4
 	dw Route10BattleText5 ; TextBeforeBattle
 	dw Route10AfterBattleText5 ; TextAfterBattle
 	dw Route10EndBattleText5 ; TextEndBattle
@@ -71,9 +71,9 @@
 	dw Route10EndBattleText5 ; TextEndBattle
 
 Route10TrainerHeader5: ; 5939f (16:539f)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_10_TRAINER_5
 	db ($2 << 4) ; trainer's view range
-	dw wd7d1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_10_TRAINER_5
 	dw Route10BattleText6 ; TextBeforeBattle
 	dw Route10AfterBattleText6 ; TextAfterBattle
 	dw Route10EndBattleText6 ; TextEndBattle
--- a/scripts/route11.asm
+++ b/scripts/route11.asm
@@ -27,9 +27,9 @@
 
 Route11TrainerHeaders: ; 5947b (16:547b)
 Route11TrainerHeader0: ; 5947b (16:547b)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_11_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd7d5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_11_TRAINER_0
 	dw Route11BattleText1 ; TextBeforeBattle
 	dw Route11AfterBattleText1 ; TextAfterBattle
 	dw Route11EndBattleText1 ; TextEndBattle
@@ -36,9 +36,9 @@
 	dw Route11EndBattleText1 ; TextEndBattle
 
 Route11TrainerHeader1: ; 59487 (16:5487)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_11_TRAINER_1
 	db ($2 << 4) ; trainer's view range
-	dw wd7d5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_11_TRAINER_1
 	dw Route11BattleText2 ; TextBeforeBattle
 	dw Route11AfterBattleText2 ; TextAfterBattle
 	dw Route11EndBattleText2 ; TextEndBattle
@@ -45,9 +45,9 @@
 	dw Route11EndBattleText2 ; TextEndBattle
 
 Route11TrainerHeader2: ; 59493 (16:5493)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_11_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd7d5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_11_TRAINER_2
 	dw Route11BattleText3 ; TextBeforeBattle
 	dw Route11AfterBattleText3 ; TextAfterBattle
 	dw Route11EndBattleText3 ; TextEndBattle
@@ -54,9 +54,9 @@
 	dw Route11EndBattleText3 ; TextEndBattle
 
 Route11TrainerHeader3: ; 5949f (16:549f)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_11_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd7d5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_11_TRAINER_3
 	dw Route11BattleText4 ; TextBeforeBattle
 	dw Route11AfterBattleText4 ; TextAfterBattle
 	dw Route11EndBattleText4 ; TextEndBattle
@@ -63,9 +63,9 @@
 	dw Route11EndBattleText4 ; TextEndBattle
 
 Route11TrainerHeader4: ; 594ab (16:54ab)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_11_TRAINER_4
 	db ($4 << 4) ; trainer's view range
-	dw wd7d5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_11_TRAINER_4
 	dw Route11BattleText5 ; TextBeforeBattle
 	dw Route11AfterBattleText5 ; TextAfterBattle
 	dw Route11EndBattleText5 ; TextEndBattle
@@ -72,9 +72,9 @@
 	dw Route11EndBattleText5 ; TextEndBattle
 
 Route11TrainerHeader5: ; 594b7 (16:54b7)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_11_TRAINER_5
 	db ($3 << 4) ; trainer's view range
-	dw wd7d5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_11_TRAINER_5
 	dw Route11BattleText6 ; TextBeforeBattle
 	dw Route11AfterBattleText6 ; TextAfterBattle
 	dw Route11EndBattleText6 ; TextEndBattle
@@ -81,9 +81,9 @@
 	dw Route11EndBattleText6 ; TextEndBattle
 
 Route11TrainerHeader6: ; 594c3 (16:54c3)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_11_TRAINER_6
 	db ($3 << 4) ; trainer's view range
-	dw wd7d5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_11_TRAINER_6
 	dw Route11BattleText7 ; TextBeforeBattle
 	dw Route11AfterBattleText7 ; TextAfterBattle
 	dw Route11EndBattleText7 ; TextEndBattle
@@ -90,9 +90,9 @@
 	dw Route11EndBattleText7 ; TextEndBattle
 
 Route11TrainerHeader7: ; 594cf (16:54cf)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_11_TRAINER_7, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd7d5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_11_TRAINER_7, 1
 	dw Route11BattleText8 ; TextBeforeBattle
 	dw Route11AfterBattleText8 ; TextAfterBattle
 	dw Route11EndBattleText8 ; TextEndBattle
@@ -99,9 +99,9 @@
 	dw Route11EndBattleText8 ; TextEndBattle
 
 Route11TrainerHeader8: ; 594db (16:54db)
-	db $9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_11_TRAINER_8, 1
 	db ($3 << 4) ; trainer's view range
-	dw wd7d5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_11_TRAINER_8, 1
 	dw Route11BattleText9 ; TextBeforeBattle
 	dw Route11AfterBattleText9 ; TextAfterBattle
 	dw Route11EndBattleText9 ; TextEndBattle
@@ -108,9 +108,9 @@
 	dw Route11EndBattleText9 ; TextEndBattle
 
 Route11TrainerHeader9: ; 594e7 (16:54e7)
-	db $a ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_11_TRAINER_9, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd7d5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_11_TRAINER_9, 1
 	dw Route11BattleText10 ; TextBeforeBattle
 	dw Route11AfterBattleText10 ; TextAfterBattle
 	dw Route11EndBattleText10 ; TextEndBattle
--- a/scripts/route11gateupstairs.asm
+++ b/scripts/route11gateupstairs.asm
@@ -17,8 +17,7 @@
 
 Route11GateUpstairsText2: ; 4946c (12:546c)
 	TX_ASM
-	ld a, [wd7d6]
-	add a
+	CheckEvent EVENT_GOT_ITEMFINDER, 1
 	jr c, .asm_4949b
 	ld a, 30 ; pokemon needed
 	ld [$ffdb], a
@@ -35,8 +34,7 @@
 	ld a, [$ffdb]
 	dec a
 	jr nz, .asm_494a1
-	ld hl, wd7d6
-	set 7, [hl]
+	SetEvent EVENT_GOT_ITEMFINDER
 .asm_4949b
 	ld hl, Route11GateUpstairsText_494a3
 	call PrintText
@@ -52,8 +50,7 @@
 	ld a, [wSpriteStateData1 + 9]
 	cp SPRITE_FACING_UP
 	jp nz, GateUpstairsScript_PrintIfFacingUp
-	ld a, [wd7d8]
-	bit 7, a ; fought snorlax?
+	CheckEvent EVENT_BEAT_ROUTE12_SNORLAX
 	ld hl, BinocularsSnorlaxText
 	jr z, .print
 	ld hl, BinocularsNoSnorlaxText
--- a/scripts/route12.asm
+++ b/scripts/route12.asm
@@ -21,11 +21,10 @@
 	dw Route12Script3
 
 Route12Script0: ; 59619 (16:5619)
-	ld hl, wd7d8
-	bit 7, [hl]
+	CheckEventHL EVENT_BEAT_ROUTE12_SNORLAX
 	jp nz, CheckFightingMapTrainers
-	bit 6, [hl]
-	res 6, [hl]
+	CheckEventReuseHL EVENT_FIGHT_ROUTE12_SNORLAX
+	ResetEventReuseHL EVENT_FIGHT_ROUTE12_SNORLAX
 	jp z, CheckFightingMapTrainers
 	ld a, $d
 	ld [hSpriteIndexOrTextID], a
@@ -54,8 +53,7 @@
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
 .asm_59664
-	ld hl, wd7d8
-	set 7, [hl]
+	SetEvent EVENT_BEAT_ROUTE12_SNORLAX
 	call Delay3
 	ld a, $0
 	ld [W_ROUTE12CURSCRIPT], a
@@ -80,9 +78,9 @@
 
 Route12TrainerHeaders: ; 59691 (16:5691)
 Route12TrainerHeader0: ; 59691 (16:5691)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_12_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd7d7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_12_TRAINER_0
 	dw Route12BattleText1 ; TextBeforeBattle
 	dw Route12AfterBattleText1 ; TextAfterBattle
 	dw Route12EndBattleText1 ; TextEndBattle
@@ -89,9 +87,9 @@
 	dw Route12EndBattleText1 ; TextEndBattle
 
 Route12TrainerHeader1: ; 5969d (16:569d)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_12_TRAINER_1
 	db ($4 << 4) ; trainer's view range
-	dw wd7d7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_12_TRAINER_1
 	dw Route12BattleText2 ; TextBeforeBattle
 	dw Route12AfterBattleText2 ; TextAfterBattle
 	dw Route12EndBattleText2 ; TextEndBattle
@@ -98,9 +96,9 @@
 	dw Route12EndBattleText2 ; TextEndBattle
 
 Route12TrainerHeader2: ; 596a9 (16:56a9)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_12_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd7d7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_12_TRAINER_2
 	dw Route12BattleText3 ; TextBeforeBattle
 	dw Route12AfterBattleText3 ; TextAfterBattle
 	dw Route12EndBattleText3 ; TextEndBattle
@@ -107,9 +105,9 @@
 	dw Route12EndBattleText3 ; TextEndBattle
 
 Route12TrainerHeader3: ; 596b5 (16:56b5)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_12_TRAINER_3
 	db ($4 << 4) ; trainer's view range
-	dw wd7d7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_12_TRAINER_3
 	dw Route12BattleText4 ; TextBeforeBattle
 	dw Route12AfterBattleText4 ; TextAfterBattle
 	dw Route12EndBattleText4 ; TextEndBattle
@@ -116,9 +114,9 @@
 	dw Route12EndBattleText4 ; TextEndBattle
 
 Route12TrainerHeader4: ; 596c1 (16:56c1)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_12_TRAINER_4
 	db ($4 << 4) ; trainer's view range
-	dw wd7d7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_12_TRAINER_4
 	dw Route12BattleText5 ; TextBeforeBattle
 	dw Route12AfterBattleText5 ; TextAfterBattle
 	dw Route12EndBattleText5 ; TextEndBattle
@@ -125,9 +123,9 @@
 	dw Route12EndBattleText5 ; TextEndBattle
 
 Route12TrainerHeader5: ; 596cd (16:56cd)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_12_TRAINER_5
 	db ($4 << 4) ; trainer's view range
-	dw wd7d7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_12_TRAINER_5
 	dw Route12BattleText6 ; TextBeforeBattle
 	dw Route12AfterBattleText6 ; TextAfterBattle
 	dw Route12EndBattleText6 ; TextEndBattle
@@ -134,9 +132,9 @@
 	dw Route12EndBattleText6 ; TextEndBattle
 
 Route12TrainerHeader6: ; 596d9 (16:56d9)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_12_TRAINER_6, 1
 	db ($1 << 4) ; trainer's view range
-	dw wd7d7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_12_TRAINER_6, 1
 	dw Route12BattleText7 ; TextBeforeBattle
 	dw Route12AfterBattleText7 ; TextAfterBattle
 	dw Route12EndBattleText7 ; TextEndBattle
--- a/scripts/route12gateupstairs.asm
+++ b/scripts/route12gateupstairs.asm
@@ -8,8 +8,7 @@
 
 Route12GateUpstairsText1: ; 49569 (12:5569)
 	TX_ASM
-	ld a, [wd7d7]
-	rrca
+	CheckEvent EVENT_GOT_TM39, 1
 	jr c, .asm_0ad3c
 	ld hl, TM39PreReceiveText
 	call PrintText
@@ -18,8 +17,7 @@
 	jr nc, .BagFull
 	ld hl, ReceivedTM39Text
 	call PrintText
-	ld hl, wd7d7
-	set 0, [hl]
+	SetEvent EVENT_GOT_TM39
 	jr .asm_4ba56
 .BagFull
 	ld hl, TM39NoRoomText
--- a/scripts/route13.asm
+++ b/scripts/route13.asm
@@ -29,9 +29,9 @@
 
 Route13TrainerHeaders: ; 55851 (15:5851)
 Route13TrainerHeader0: ; 55851 (15:5851)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_13_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd7d9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_13_TRAINER_0
 	dw Route13BattleText2 ; TextBeforeBattle
 	dw Route13AfterBattleText2 ; TextAfterBattle
 	dw Route13EndBattleText2 ; TextEndBattle
@@ -38,9 +38,9 @@
 	dw Route13EndBattleText2 ; TextEndBattle
 
 Route13TrainerHeader2: ; 5585d (15:585d)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_13_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd7d9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_13_TRAINER_2
 	dw Route13BattleText3 ; TextBeforeBattle
 	dw Route13AfterBattleText3 ; TextAfterBattle
 	dw Route13EndBattleText3 ; TextEndBattle
@@ -47,9 +47,9 @@
 	dw Route13EndBattleText3 ; TextEndBattle
 
 Route13TrainerHeader3: ; 55869 (15:5869)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_13_TRAINER_3
 	db ($2 << 4) ; trainer's view range
-	dw wd7d9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_13_TRAINER_3
 	dw Route13BattleText4 ; TextBeforeBattle
 	dw Route13AfterBattleText4 ; TextAfterBattle
 	dw Route13EndBattleText4 ; TextEndBattle
@@ -56,9 +56,9 @@
 	dw Route13EndBattleText4 ; TextEndBattle
 
 Route13TrainerHeader4: ; 55875 (15:5875)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_13_TRAINER_4
 	db ($2 << 4) ; trainer's view range
-	dw wd7d9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_13_TRAINER_4
 	dw Route13BattleText5 ; TextBeforeBattle
 	dw Route13AfterBattleText5 ; TextAfterBattle
 	dw Route13EndBattleText5 ; TextEndBattle
@@ -65,9 +65,9 @@
 	dw Route13EndBattleText5 ; TextEndBattle
 
 Route13TrainerHeader5: ; 55881 (15:5881)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_13_TRAINER_5
 	db ($4 << 4) ; trainer's view range
-	dw wd7d9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_13_TRAINER_5
 	dw Route13BattleText6 ; TextBeforeBattle
 	dw Route13AfterBattleText6 ; TextAfterBattle
 	dw Route13EndBattleText6 ; TextEndBattle
@@ -74,9 +74,9 @@
 	dw Route13EndBattleText6 ; TextEndBattle
 
 Route13TrainerHeader6: ; 5588d (15:588d)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_13_TRAINER_6
 	db ($2 << 4) ; trainer's view range
-	dw wd7d9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_13_TRAINER_6
 	dw Route13BattleText7 ; TextBeforeBattle
 	dw Route13AfterBattleText7 ; TextAfterBattle
 	dw Route13EndBattleText7 ; TextEndBattle
@@ -83,9 +83,9 @@
 	dw Route13EndBattleText7 ; TextEndBattle
 
 Route13TrainerHeader7: ; 55899 (15:5899)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_13_TRAINER_7
 	db ($4 << 4) ; trainer's view range
-	dw wd7d9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_13_TRAINER_7
 	dw Route13BattleText8 ; TextBeforeBattle
 	dw Route13AfterBattleText8 ; TextAfterBattle
 	dw Route13EndBattleText8 ; TextEndBattle
@@ -92,9 +92,9 @@
 	dw Route13EndBattleText8 ; TextEndBattle
 
 Route13TrainerHeader8: ; 558a5 (15:58a5)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_13_TRAINER_8, 1
 	db ($2 << 4) ; trainer's view range
-	dw wd7d9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_13_TRAINER_8, 1
 	dw Route13BattleText9 ; TextBeforeBattle
 	dw Route13AfterBattleText9 ; TextAfterBattle
 	dw Route13EndBattleText9 ; TextEndBattle
@@ -101,9 +101,9 @@
 	dw Route13EndBattleText9 ; TextEndBattle
 
 Route13TrainerHeader9: ; 558b1 (15:58b1)
-	db $9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_13_TRAINER_9, 1
 	db ($2 << 4) ; trainer's view range
-	dw wd7d9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_13_TRAINER_9, 1
 	dw Route13BattleText10 ; TextBeforeBattle
 	dw Route13AfterBattleText10 ; TextAfterBattle
 	dw Route13EndBattleText10 ; TextEndBattle
@@ -110,9 +110,9 @@
 	dw Route13EndBattleText10 ; TextEndBattle
 
 Route13TrainerHeader10: ; 558bd (15:58bd)
-	db $a ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_13_TRAINER_10, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd7d9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_13_TRAINER_10, 1
 	dw Route13BattleText11 ; TextBeforeBattle
 	dw Route13AfterBattleText11 ; TextAfterBattle
 	dw Route13EndBattleText11 ; TextEndBattle
--- a/scripts/route14.asm
+++ b/scripts/route14.asm
@@ -27,9 +27,9 @@
 
 Route14TrainerHeaders: ; 55a02 (15:5a02)
 Route14TrainerHeader0: ; 55a02 (15:5a02)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_14_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd7db ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_14_TRAINER_0
 	dw Route14BattleText1 ; TextBeforeBattle
 	dw Route14AfterBattleText1 ; TextAfterBattle
 	dw Route14EndBattleText1 ; TextEndBattle
@@ -36,9 +36,9 @@
 	dw Route14EndBattleText1 ; TextEndBattle
 
 Route14TrainerHeader1: ; 55a0e (15:5a0e)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_14_TRAINER_1
 	db ($2 << 4) ; trainer's view range
-	dw wd7db ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_14_TRAINER_1
 	dw Route14BattleText2 ; TextBeforeBattle
 	dw Route14AfterBattleText2 ; TextAfterBattle
 	dw Route14EndBattleText2 ; TextEndBattle
@@ -45,9 +45,9 @@
 	dw Route14EndBattleText2 ; TextEndBattle
 
 Route14TrainerHeader2: ; 55a1a (15:5a1a)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_14_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd7db ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_14_TRAINER_2
 	dw Route14BattleText3 ; TextBeforeBattle
 	dw Route14AfterBattleText3 ; TextAfterBattle
 	dw Route14EndBattleText3 ; TextEndBattle
@@ -54,9 +54,9 @@
 	dw Route14EndBattleText3 ; TextEndBattle
 
 Route14TrainerHeader3: ; 55a26 (15:5a26)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_14_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd7db ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_14_TRAINER_3
 	dw Route14BattleText4 ; TextBeforeBattle
 	dw Route14AfterBattleText4 ; TextAfterBattle
 	dw Route14EndBattleText4 ; TextEndBattle
@@ -63,9 +63,9 @@
 	dw Route14EndBattleText4 ; TextEndBattle
 
 Route14TrainerHeader4: ; 55a32 (15:5a32)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_14_TRAINER_4
 	db ($3 << 4) ; trainer's view range
-	dw wd7db ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_14_TRAINER_4
 	dw Route14BattleText5 ; TextBeforeBattle
 	dw Route14AfterBattleText5 ; TextAfterBattle
 	dw Route14EndBattleText5 ; TextEndBattle
@@ -72,9 +72,9 @@
 	dw Route14EndBattleText5 ; TextEndBattle
 
 Route14TrainerHeader5: ; 55a3e (15:5a3e)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_14_TRAINER_5
 	db ($4 << 4) ; trainer's view range
-	dw wd7db ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_14_TRAINER_5
 	dw Route14BattleText6 ; TextBeforeBattle
 	dw Route14AfterBattleText6 ; TextAfterBattle
 	dw Route14EndBattleText6 ; TextEndBattle
@@ -81,9 +81,9 @@
 	dw Route14EndBattleText6 ; TextEndBattle
 
 Route14TrainerHeader6: ; 55a4a (15:5a4a)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_14_TRAINER_6
 	db ($4 << 4) ; trainer's view range
-	dw wd7db ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_14_TRAINER_6
 	dw Route14BattleText7 ; TextBeforeBattle
 	dw Route14AfterBattleText7 ; TextAfterBattle
 	dw Route14EndBattleText7 ; TextEndBattle
@@ -90,9 +90,9 @@
 	dw Route14EndBattleText7 ; TextEndBattle
 
 Route14TrainerHeader7: ; 55a56 (15:5a56)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_14_TRAINER_7, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd7db ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_14_TRAINER_7, 1
 	dw Route14BattleText8 ; TextBeforeBattle
 	dw Route14AfterBattleText8 ; TextAfterBattle
 	dw Route14EndBattleText8 ; TextEndBattle
@@ -99,9 +99,9 @@
 	dw Route14EndBattleText8 ; TextEndBattle
 
 Route14TrainerHeader8: ; 55a62 (15:5a62)
-	db $9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_14_TRAINER_8, 1
 	db ($3 << 4) ; trainer's view range
-	dw wd7db ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_14_TRAINER_8, 1
 	dw Route14BattleText9 ; TextBeforeBattle
 	dw Route14AfterBattleText9 ; TextAfterBattle
 	dw Route14EndBattleText9 ; TextEndBattle
@@ -108,9 +108,9 @@
 	dw Route14EndBattleText9 ; TextEndBattle
 
 Route14TrainerHeader9: ; 55a6e (15:5a6e)
-	db $a ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_14_TRAINER_9, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd7db ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_14_TRAINER_9, 1
 	dw Route14BattleText10 ; TextBeforeBattle
 	dw Route14AfterBattleText10 ; TextAfterBattle
 	dw Route14EndBattleText10 ; TextEndBattle
--- a/scripts/route15.asm
+++ b/scripts/route15.asm
@@ -28,9 +28,9 @@
 
 Route15TrainerHeaders: ; 597df (16:57df)
 Route15TrainerHeader0: ; 597df (16:57df)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_15_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd7dd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_15_TRAINER_0
 	dw Route15BattleText1 ; TextBeforeBattle
 	dw Route15AfterBattleText1 ; TextAfterBattle
 	dw Route15EndBattleText1 ; TextEndBattle
@@ -37,9 +37,9 @@
 	dw Route15EndBattleText1 ; TextEndBattle
 
 Route15TrainerHeader1: ; 597eb (16:57eb)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_15_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd7dd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_15_TRAINER_1
 	dw Route15BattleText2 ; TextBeforeBattle
 	dw Route15AfterBattleText2 ; TextAfterBattle
 	dw Route15EndBattleText2 ; TextEndBattle
@@ -46,9 +46,9 @@
 	dw Route15EndBattleText2 ; TextEndBattle
 
 Route15TrainerHeader2: ; 597f7 (16:57f7)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_15_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd7dd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_15_TRAINER_2
 	dw Route15BattleText3 ; TextBeforeBattle
 	dw Route15AfterBattleText3 ; TextAfterBattle
 	dw Route15EndBattleText3 ; TextEndBattle
@@ -55,9 +55,9 @@
 	dw Route15EndBattleText3 ; TextEndBattle
 
 Route15TrainerHeader3: ; 59803 (16:5803)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_15_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd7dd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_15_TRAINER_3
 	dw Route15BattleText4 ; TextBeforeBattle
 	dw Route15AfterBattleText4 ; TextAfterBattle
 	dw Route15EndBattleText4 ; TextEndBattle
@@ -64,9 +64,9 @@
 	dw Route15EndBattleText4 ; TextEndBattle
 
 Route15TrainerHeader4: ; 5980f (16:580f)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_15_TRAINER_4
 	db ($2 << 4) ; trainer's view range
-	dw wd7dd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_15_TRAINER_4
 	dw Route15BattleText5 ; TextBeforeBattle
 	dw Route15AfterBattleText5 ; TextAfterBattle
 	dw Route15EndBattleText5 ; TextEndBattle
@@ -73,9 +73,9 @@
 	dw Route15EndBattleText5 ; TextEndBattle
 
 Route15TrainerHeader5: ; 5981b (16:581b)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_15_TRAINER_5
 	db ($3 << 4) ; trainer's view range
-	dw wd7dd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_15_TRAINER_5
 	dw Route15BattleText6 ; TextBeforeBattle
 	dw Route15AfterBattleText6 ; TextAfterBattle
 	dw Route15EndBattleText6 ; TextEndBattle
@@ -82,9 +82,9 @@
 	dw Route15EndBattleText6 ; TextEndBattle
 
 Route15TrainerHeader6: ; 59827 (16:5827)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_15_TRAINER_6
 	db ($3 << 4) ; trainer's view range
-	dw wd7dd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_15_TRAINER_6
 	dw Route15BattleText7 ; TextBeforeBattle
 	dw Route15AfterBattleText7 ; TextAfterBattle
 	dw Route15EndBattleText7 ; TextEndBattle
@@ -91,9 +91,9 @@
 	dw Route15EndBattleText7 ; TextEndBattle
 
 Route15TrainerHeader7: ; 59833 (16:5833)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_15_TRAINER_7, 1
 	db ($3 << 4) ; trainer's view range
-	dw wd7dd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_15_TRAINER_7, 1
 	dw Route15BattleText8 ; TextBeforeBattle
 	dw Route15AfterBattleText8 ; TextAfterBattle
 	dw Route15EndBattleText8 ; TextEndBattle
@@ -100,9 +100,9 @@
 	dw Route15EndBattleText8 ; TextEndBattle
 
 Route15TrainerHeader8: ; 5983f (16:583f)
-	db $9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_15_TRAINER_8, 1
 	db ($3 << 4) ; trainer's view range
-	dw wd7dd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_15_TRAINER_8, 1
 	dw Route15BattleText9 ; TextBeforeBattle
 	dw Route15AfterBattleText9 ; TextAfterBattle
 	dw Route15EndBattleText9 ; TextEndBattle
@@ -109,9 +109,9 @@
 	dw Route15EndBattleText9 ; TextEndBattle
 
 Route15TrainerHeader9: ; 5984b (16:584b)
-	db $a ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_15_TRAINER_9, 1
 	db ($3 << 4) ; trainer's view range
-	dw wd7dd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_15_TRAINER_9, 1
 	dw Route15BattleText10 ; TextBeforeBattle
 	dw Route15AfterBattleText10 ; TextAfterBattle
 	dw Route15EndBattleText10 ; TextEndBattle
--- a/scripts/route15gateupstairs.asm
+++ b/scripts/route15gateupstairs.asm
@@ -7,8 +7,7 @@
 
 Route15GateUpstairsText1: ; 49651 (12:5651)
 	TX_ASM
-	ld a, [wd7dd]
-	bit 0, a
+	CheckEvent EVENT_GOT_EXP_ALL
 	jr nz, .asm_49683
 	ld a, 50 ; pokemon needed
 	ld [$ffdb], a
@@ -24,8 +23,7 @@
 	ld a, [$ffdb]
 	cp $1
 	jr nz, .asm_49689
-	ld hl, wd7dd
-	set 0, [hl]
+	SetEvent EVENT_GOT_EXP_ALL
 .asm_49683
 	ld hl, Route15GateUpstairsText_4968c
 	call PrintText
--- a/scripts/route16.asm
+++ b/scripts/route16.asm
@@ -21,11 +21,10 @@
 	dw Route16Script3
 
 Route16Script0: ; 59959 (16:5959)
-	ld hl, wd7e0
-	bit 1, [hl]
+	CheckEventHL EVENT_BEAT_ROUTE16_SNORLAX
 	jp nz, CheckFightingMapTrainers
-	bit 0, [hl]
-	res 0, [hl]
+	CheckEventReuseHL EVENT_FIGHT_ROUTE16_SNORLAX
+	ResetEventReuseHL EVENT_FIGHT_ROUTE16_SNORLAX
 	jp z, CheckFightingMapTrainers
 	ld a, $a
 	ld [hSpriteIndexOrTextID], a
@@ -55,8 +54,7 @@
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
 .asm_599a8
-	ld hl, wd7e0
-	set 1, [hl]
+	SetEvent EVENT_BEAT_ROUTE16_SNORLAX
 	call Delay3
 	ld a, $0
 	ld [W_ROUTE16CURSCRIPT], a
@@ -78,9 +76,9 @@
 
 Route16TrainerHeaders: ; 599cf (16:59cf)
 Route16TrainerHeader0: ; 599cf (16:59cf)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_16_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd7df ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_16_TRAINER_0
 	dw Route16BattleText1 ; TextBeforeBattle
 	dw Route16AfterBattleText1 ; TextAfterBattle
 	dw Route16EndBattleText1 ; TextEndBattle
@@ -87,9 +85,9 @@
 	dw Route16EndBattleText1 ; TextEndBattle
 
 Route16TrainerHeader1: ; 599db (16:59db)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_16_TRAINER_1
 	db ($2 << 4) ; trainer's view range
-	dw wd7df ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_16_TRAINER_1
 	dw Route16BattleText2 ; TextBeforeBattle
 	dw Route16AfterBattleText2 ; TextAfterBattle
 	dw Route16EndBattleText2 ; TextEndBattle
@@ -96,9 +94,9 @@
 	dw Route16EndBattleText2 ; TextEndBattle
 
 Route16TrainerHeader2: ; 599e7 (16:59e7)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_16_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd7df ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_16_TRAINER_2
 	dw Route16BattleText3 ; TextBeforeBattle
 	dw Route16AfterBattleText3 ; TextAfterBattle
 	dw Route16EndBattleText3 ; TextEndBattle
@@ -105,9 +103,9 @@
 	dw Route16EndBattleText3 ; TextEndBattle
 
 Route16TrainerHeader3: ; 599f3 (16:59f3)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_16_TRAINER_3
 	db ($2 << 4) ; trainer's view range
-	dw wd7df ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_16_TRAINER_3
 	dw Route16BattleText4 ; TextBeforeBattle
 	dw Route16AfterBattleText4 ; TextAfterBattle
 	dw Route16EndBattleText4 ; TextEndBattle
@@ -114,9 +112,9 @@
 	dw Route16EndBattleText4 ; TextEndBattle
 
 Route16TrainerHeader4: ; 599ff (16:59ff)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_16_TRAINER_4
 	db ($2 << 4) ; trainer's view range
-	dw wd7df ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_16_TRAINER_4
 	dw Route16BattleText5 ; TextBeforeBattle
 	dw Route16AfterBattleText5 ; TextAfterBattle
 	dw Route16EndBattleText5 ; TextEndBattle
@@ -123,9 +121,9 @@
 	dw Route16EndBattleText5 ; TextEndBattle
 
 Route16TrainerHeader5: ; 59a0b (16:5a0b)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_16_TRAINER_5
 	db ($4 << 4) ; trainer's view range
-	dw wd7df ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_16_TRAINER_5
 	dw Route16BattleText6 ; TextBeforeBattle
 	dw Route16AfterBattleText6 ; TextAfterBattle
 	dw Route16EndBattleText6 ; TextEndBattle
--- a/scripts/route16house.asm
+++ b/scripts/route16house.asm
@@ -7,8 +7,7 @@
 
 Route16HouseText1: ; 1e5ff (7:65ff)
 	TX_ASM
-	ld a, [wd7e0]
-	bit 6, a
+	CheckEvent EVENT_GOT_HM02
 	ld hl, HM02ExplanationText
 	jr nz, .asm_13616
 	ld hl, Route16HouseText3
@@ -16,8 +15,7 @@
 	ld bc, (HM_02 << 8) | 1
 	call GiveItem
 	jr nc, .BagFull
-	ld hl, wd7e0
-	set 6, [hl]
+	SetEvent EVENT_GOT_HM02
 	ld hl, ReceivedHM02Text
 	jr .asm_13616
 .BagFull
--- a/scripts/route17.asm
+++ b/scripts/route17.asm
@@ -32,9 +32,9 @@
 
 Route17TrainerHeaders: ; 55bb3 (15:5bb3)
 Route17TrainerHeader0: ; 55bb3 (15:5bb3)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_17_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd7e1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_17_TRAINER_0
 	dw Route17BattleText1 ; TextBeforeBattle
 	dw Route17AfterBattleText1 ; TextAfterBattle
 	dw Route17EndBattleText1 ; TextEndBattle
@@ -41,9 +41,9 @@
 	dw Route17EndBattleText1 ; TextEndBattle
 
 Route17TrainerHeader1: ; 55bbf (15:5bbf)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_17_TRAINER_1
 	db ($4 << 4) ; trainer's view range
-	dw wd7e1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_17_TRAINER_1
 	dw Route17BattleText2 ; TextBeforeBattle
 	dw Route17AfterBattleText2 ; TextAfterBattle
 	dw Route17EndBattleText2 ; TextEndBattle
@@ -50,9 +50,9 @@
 	dw Route17EndBattleText2 ; TextEndBattle
 
 Route17TrainerHeader2: ; 55bcb (15:5bcb)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_17_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd7e1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_17_TRAINER_2
 	dw Route17BattleText3 ; TextBeforeBattle
 	dw Route17AfterBattleText3 ; TextAfterBattle
 	dw Route17EndBattleText3 ; TextEndBattle
@@ -59,9 +59,9 @@
 	dw Route17EndBattleText3 ; TextEndBattle
 
 Route17TrainerHeader3: ; 55bd7 (15:5bd7)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_17_TRAINER_3
 	db ($4 << 4) ; trainer's view range
-	dw wd7e1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_17_TRAINER_3
 	dw Route17BattleText4 ; TextBeforeBattle
 	dw Route17AfterBattleText4 ; TextAfterBattle
 	dw Route17EndBattleText4 ; TextEndBattle
@@ -68,9 +68,9 @@
 	dw Route17EndBattleText4 ; TextEndBattle
 
 Route17TrainerHeader4: ; 55be3 (15:5be3)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_17_TRAINER_4
 	db ($3 << 4) ; trainer's view range
-	dw wd7e1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_17_TRAINER_4
 	dw Route17BattleText5 ; TextBeforeBattle
 	dw Route17AfterBattleText5 ; TextAfterBattle
 	dw Route17EndBattleText5 ; TextEndBattle
@@ -77,9 +77,9 @@
 	dw Route17EndBattleText5 ; TextEndBattle
 
 Route17TrainerHeader5: ; 55bef (15:5bef)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_17_TRAINER_5
 	db ($2 << 4) ; trainer's view range
-	dw wd7e1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_17_TRAINER_5
 	dw Route17BattleText6 ; TextBeforeBattle
 	dw Route17AfterBattleText6 ; TextAfterBattle
 	dw Route17EndBattleText6 ; TextEndBattle
@@ -86,9 +86,9 @@
 	dw Route17EndBattleText6 ; TextEndBattle
 
 Route17TrainerHeader6: ; 55bfb (15:5bfb)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_17_TRAINER_6
 	db ($4 << 4) ; trainer's view range
-	dw wd7e1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_17_TRAINER_6
 	dw Route17BattleText7 ; TextBeforeBattle
 	dw Route17AfterBattleText7 ; TextAfterBattle
 	dw Route17EndBattleText7 ; TextEndBattle
@@ -95,9 +95,9 @@
 	dw Route17EndBattleText7 ; TextEndBattle
 
 Route17TrainerHeader7: ; 55c07 (15:5c07)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_17_TRAINER_7, 1
 	db ($2 << 4) ; trainer's view range
-	dw wd7e1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_17_TRAINER_7, 1
 	dw Route17BattleText8 ; TextBeforeBattle
 	dw Route17AfterBattleText8 ; TextAfterBattle
 	dw Route17EndBattleText8 ; TextEndBattle
@@ -104,9 +104,9 @@
 	dw Route17EndBattleText8 ; TextEndBattle
 
 Route17TrainerHeader8: ; 55c13 (15:5c13)
-	db $9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_17_TRAINER_8, 1
 	db ($3 << 4) ; trainer's view range
-	dw wd7e1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_17_TRAINER_8, 1
 	dw Route17BattleText9 ; TextBeforeBattle
 	dw Route17AfterBattleText9 ; TextAfterBattle
 	dw Route17EndBattleText9 ; TextEndBattle
@@ -113,9 +113,9 @@
 	dw Route17EndBattleText9 ; TextEndBattle
 
 Route17TrainerHeader9: ; 55c1f (15:5c1f)
-	db $a ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_17_TRAINER_9, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd7e1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_17_TRAINER_9, 1
 	dw Route17BattleText10 ; TextBeforeBattle
 	dw Route17AfterBattleText10 ; TextAfterBattle
 	dw Route17EndBattleText10 ; TextEndBattle
--- a/scripts/route18.asm
+++ b/scripts/route18.asm
@@ -21,9 +21,9 @@
 
 Route18TrainerHeaders: ; 59aea (16:5aea)
 Route18TrainerHeader0: ; 59aea (16:5aea)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_18_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd7e3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_18_TRAINER_0
 	dw Route18BattleText1 ; TextBeforeBattle
 	dw Route18AfterBattleText1 ; TextAfterBattle
 	dw Route18EndBattleText1 ; TextEndBattle
@@ -30,9 +30,9 @@
 	dw Route18EndBattleText1 ; TextEndBattle
 
 Route18TrainerHeader1: ; 59af6 (16:5af6)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_18_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd7e3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_18_TRAINER_1
 	dw Route18BattleText2 ; TextBeforeBattle
 	dw Route18AfterBattleText2 ; TextAfterBattle
 	dw Route18EndBattleText2 ; TextEndBattle
@@ -39,9 +39,9 @@
 	dw Route18EndBattleText2 ; TextEndBattle
 
 Route18TrainerHeader2: ; 59b02 (16:5b02)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_18_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd7e3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_18_TRAINER_2
 	dw Route18BattleText3 ; TextBeforeBattle
 	dw Route18AfterBattleText3 ; TextAfterBattle
 	dw Route18EndBattleText3 ; TextEndBattle
--- a/scripts/route19.asm
+++ b/scripts/route19.asm
@@ -27,9 +27,9 @@
 
 Route19TrainerHeaders: ; 55d73 (15:5d73)
 Route19TrainerHeader0: ; 55d73 (15:5d73)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd7e5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_0
 	dw Route19BattleText1 ; TextBeforeBattle
 	dw Route19AfterBattleText1 ; TextAfterBattle
 	dw Route19EndBattleText1 ; TextEndBattle
@@ -36,9 +36,9 @@
 	dw Route19EndBattleText1 ; TextEndBattle
 
 Route19TrainerHeader1: ; 55d7f (15:5d7f)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd7e5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_1
 	dw Route19BattleText2 ; TextBeforeBattle
 	dw Route19AfterBattleText2 ; TextAfterBattle
 	dw Route19EndBattleText2 ; TextEndBattle
@@ -45,9 +45,9 @@
 	dw Route19EndBattleText2 ; TextEndBattle
 
 Route19TrainerHeader2: ; 55d8b (15:5d8b)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd7e5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_2
 	dw Route19BattleText3 ; TextBeforeBattle
 	dw Route19AfterBattleText3 ; TextAfterBattle
 	dw Route19EndBattleText3 ; TextEndBattle
@@ -54,9 +54,9 @@
 	dw Route19EndBattleText3 ; TextEndBattle
 
 Route19TrainerHeader3: ; 55d97 (15:5d97)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_3
 	db ($4 << 4) ; trainer's view range
-	dw wd7e5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_3
 	dw Route19BattleText4 ; TextBeforeBattle
 	dw Route19AfterBattleText4 ; TextAfterBattle
 	dw Route19EndBattleText4 ; TextEndBattle
@@ -63,9 +63,9 @@
 	dw Route19EndBattleText4 ; TextEndBattle
 
 Route19TrainerHeader4: ; 55da3 (15:5da3)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_4
 	db ($4 << 4) ; trainer's view range
-	dw wd7e5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_4
 	dw Route19BattleText5 ; TextBeforeBattle
 	dw Route19AfterBattleText5 ; TextAfterBattle
 	dw Route19EndBattleText5 ; TextEndBattle
@@ -72,9 +72,9 @@
 	dw Route19EndBattleText5 ; TextEndBattle
 
 Route19TrainerHeader5: ; 55daf (15:5daf)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_5
 	db ($4 << 4) ; trainer's view range
-	dw wd7e5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_5
 	dw Route19BattleText6 ; TextBeforeBattle
 	dw Route19AfterBattleText6 ; TextAfterBattle
 	dw Route19EndBattleText6 ; TextEndBattle
@@ -81,9 +81,9 @@
 	dw Route19EndBattleText6 ; TextEndBattle
 
 Route19TrainerHeader6: ; 55dbb (15:5dbb)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_6
 	db ($3 << 4) ; trainer's view range
-	dw wd7e5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_6
 	dw Route19BattleText7 ; TextBeforeBattle
 	dw Route19AfterBattleText7 ; TextAfterBattle
 	dw Route19EndBattleText7 ; TextEndBattle
@@ -90,9 +90,9 @@
 	dw Route19EndBattleText7 ; TextEndBattle
 
 Route19TrainerHeader7: ; 55dc7 (15:5dc7)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_7, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd7e5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_7, 1
 	dw Route19BattleText8 ; TextBeforeBattle
 	dw Route19AfterBattleText8 ; TextAfterBattle
 	dw Route19EndBattleText8 ; TextEndBattle
@@ -99,9 +99,9 @@
 	dw Route19EndBattleText8 ; TextEndBattle
 
 Route19TrainerHeader8: ; 55dd3 (15:5dd3)
-	db $9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_8, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd7e5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_8, 1
 	dw Route19BattleText9 ; TextBeforeBattle
 	dw Route19AfterBattleText9 ; TextAfterBattle
 	dw Route19EndBattleText9 ; TextEndBattle
@@ -108,9 +108,9 @@
 	dw Route19EndBattleText9 ; TextEndBattle
 
 Route19TrainerHeader9: ; 55ddf (15:5ddf)
-	db $a ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_9, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd7e5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_9, 1
 	dw Route19BattleText10 ; TextBeforeBattle
 	dw Route19AfterBattleText10 ; TextAfterBattle
 	dw Route19EndBattleText10 ; TextEndBattle
--- a/scripts/route20.asm
+++ b/scripts/route20.asm
@@ -1,7 +1,5 @@
 Route20Script: ; 50ca9 (14:4ca9)
-	ld hl, wd7e7
-	bit 0, [hl]
-	res 0, [hl]
+	CheckAndResetEvent EVENT_IN_SEAFOAM_ISLANDS
 	call nz, Route20Script_50cc6
 	call EnableAutoTextBoxDrawing
 	ld hl, Route20TrainerHeader0
@@ -12,9 +10,7 @@
 	ret
 
 Route20Script_50cc6: ; 50cc6 (14:4cc6)
-	ld a, [wd880]
-	and $3
-	cp $3
+	CheckBothEventsSet EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE
 	jr z, .asm_50cef
 	ld a, HS_SEAFOAM_ISLANDS_1_BOULDER_1
 	call Route20Script_50d0c
@@ -40,9 +36,7 @@
 	db $FF
 
 .asm_50cef
-	ld a, [wd881]
-	and $3
-	cp $3
+	CheckBothEventsSet EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE
 	ret z
 	ld a, HS_SEAFOAM_ISLANDS_4_BOULDER_1
 	call Route20Script_50d0c
@@ -83,9 +77,9 @@
 
 Route20TrainerHeaders: ; 50d3a (14:4d3a)
 Route20TrainerHeader0: ; 50d3a (14:4d3a)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_20_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd7e7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_20_TRAINER_0
 	dw Route20BattleText1 ; TextBeforeBattle
 	dw Route20AfterBattleText1 ; TextAfterBattle
 	dw Route20EndBattleText1 ; TextEndBattle
@@ -92,9 +86,9 @@
 	dw Route20EndBattleText1 ; TextEndBattle
 
 Route20TrainerHeader2: ; 50d46 (14:4d46)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_20_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd7e7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_20_TRAINER_2
 	dw Route20BattleText2 ; TextBeforeBattle
 	dw Route20AfterBattleText2 ; TextAfterBattle
 	dw Route20EndBattleText2 ; TextEndBattle
@@ -101,9 +95,9 @@
 	dw Route20EndBattleText2 ; TextEndBattle
 
 Route20TrainerHeader3: ; 50d52 (14:4d52)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_20_TRAINER_3
 	db ($2 << 4) ; trainer's view range
-	dw wd7e7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_20_TRAINER_3
 	dw Route20BattleText3 ; TextBeforeBattle
 	dw Route20AfterBattleText3 ; TextAfterBattle
 	dw Route20EndBattleText3 ; TextEndBattle
@@ -110,9 +104,9 @@
 	dw Route20EndBattleText3 ; TextEndBattle
 
 Route20TrainerHeader4: ; 50d5e (14:4d5e)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_20_TRAINER_4
 	db ($4 << 4) ; trainer's view range
-	dw wd7e7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_20_TRAINER_4
 	dw Route20BattleText4 ; TextBeforeBattle
 	dw Route20AfterBattleText4 ; TextAfterBattle
 	dw Route20EndBattleText4 ; TextEndBattle
@@ -119,9 +113,9 @@
 	dw Route20EndBattleText4 ; TextEndBattle
 
 Route20TrainerHeader5: ; 50d6a (14:4d6a)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_20_TRAINER_5
 	db ($3 << 4) ; trainer's view range
-	dw wd7e7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_20_TRAINER_5
 	dw Route20BattleText5 ; TextBeforeBattle
 	dw Route20AfterBattleText5 ; TextAfterBattle
 	dw Route20EndBattleText5 ; TextEndBattle
@@ -128,9 +122,9 @@
 	dw Route20EndBattleText5 ; TextEndBattle
 
 Route20TrainerHeader6: ; 50d76 (14:4d76)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_20_TRAINER_6
 	db ($4 << 4) ; trainer's view range
-	dw wd7e7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_20_TRAINER_6
 	dw Route20BattleText6 ; TextBeforeBattle
 	dw Route20AfterBattleText6 ; TextAfterBattle
 	dw Route20EndBattleText6 ; TextEndBattle
@@ -137,9 +131,9 @@
 	dw Route20EndBattleText6 ; TextEndBattle
 
 Route20TrainerHeader7: ; 50d82 (14:4d82)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_20_TRAINER_7
 	db ($2 << 4) ; trainer's view range
-	dw wd7e7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_20_TRAINER_7
 	dw Route20BattleText7 ; TextBeforeBattle
 	dw Route20AfterBattleText7 ; TextAfterBattle
 	dw Route20EndBattleText7 ; TextEndBattle
@@ -146,9 +140,9 @@
 	dw Route20EndBattleText7 ; TextEndBattle
 
 Route20TrainerHeader8: ; 50d8e (14:4d8e)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_20_TRAINER_8, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd7e7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_20_TRAINER_8, 1
 	dw Route20BattleText8 ; TextBeforeBattle
 	dw Route20AfterBattleText8 ; TextAfterBattle
 	dw Route20EndBattleText8 ; TextEndBattle
@@ -155,9 +149,9 @@
 	dw Route20EndBattleText8 ; TextEndBattle
 
 Route20TrainerHeader9: ; 50d9a (14:4d9a)
-	db $9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_20_TRAINER_9, 1
 	db ($3 << 4) ; trainer's view range
-	dw wd7e7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_20_TRAINER_9, 1
 	dw Route20BattleText9 ; TextBeforeBattle
 	dw Route20AfterBattleText9 ; TextAfterBattle
 	dw Route20EndBattleText9 ; TextEndBattle
@@ -164,9 +158,9 @@
 	dw Route20EndBattleText9 ; TextEndBattle
 
 Route20TrainerHeader10: ; 50da6 (14:4da6)
-	db $a ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_20_TRAINER_10, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd7e7 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_20_TRAINER_10, 1
 	dw Route20BattleText10 ; TextBeforeBattle
 	dw Route20AfterBattleText10 ; TextAfterBattle
 	dw Route20EndBattleText10 ; TextEndBattle
--- a/scripts/route21.asm
+++ b/scripts/route21.asm
@@ -25,9 +25,9 @@
 
 Route21TrainerHeaders: ; 55f16 (15:5f16)
 Route21TrainerHeader0: ; 55f16 (15:5f16)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_21_TRAINER_0
 	db ($0 << 4) ; trainer's view range
-	dw wd7e9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_21_TRAINER_0
 	dw Route21BattleText1 ; TextBeforeBattle
 	dw Route21AfterBattleText1 ; TextAfterBattle
 	dw Route21EndBattleText1 ; TextEndBattle
@@ -34,9 +34,9 @@
 	dw Route21EndBattleText1 ; TextEndBattle
 
 Route21TrainerHeader1: ; 55f22 (15:5f22)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_21_TRAINER_1
 	db ($0 << 4) ; trainer's view range
-	dw wd7e9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_21_TRAINER_1
 	dw Route21BattleText2 ; TextBeforeBattle
 	dw Route21AfterBattleText2 ; TextAfterBattle
 	dw Route21EndBattleText2 ; TextEndBattle
@@ -43,9 +43,9 @@
 	dw Route21EndBattleText2 ; TextEndBattle
 
 Route21TrainerHeader2: ; 55f2e (15:5f2e)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_21_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd7e9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_21_TRAINER_2
 	dw Route21BattleText3 ; TextBeforeBattle
 	dw Route21AfterBattleText3 ; TextAfterBattle
 	dw Route21EndBattleText3 ; TextEndBattle
@@ -52,9 +52,9 @@
 	dw Route21EndBattleText3 ; TextEndBattle
 
 Route21TrainerHeader3: ; 55f3a (15:5f3a)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_21_TRAINER_3
 	db ($4 << 4) ; trainer's view range
-	dw wd7e9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_21_TRAINER_3
 	dw Route21BattleText4 ; TextBeforeBattle
 	dw Route21AfterBattleText4 ; TextAfterBattle
 	dw Route21EndBattleText4 ; TextEndBattle
@@ -61,9 +61,9 @@
 	dw Route21EndBattleText4 ; TextEndBattle
 
 Route21TrainerHeader4: ; 55f46 (15:5f46)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_21_TRAINER_4
 	db ($4 << 4) ; trainer's view range
-	dw wd7e9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_21_TRAINER_4
 	dw Route21BattleText5 ; TextBeforeBattle
 	dw Route21AfterBattleText5 ; TextAfterBattle
 	dw Route21EndBattleText5 ; TextEndBattle
@@ -70,9 +70,9 @@
 	dw Route21EndBattleText5 ; TextEndBattle
 
 Route21TrainerHeader5: ; 55f52 (15:5f52)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_21_TRAINER_5
 	db ($4 << 4) ; trainer's view range
-	dw wd7e9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_21_TRAINER_5
 	dw Route21BattleText6 ; TextBeforeBattle
 	dw Route21AfterBattleText6 ; TextAfterBattle
 	dw Route21EndBattleText6 ; TextEndBattle
@@ -79,9 +79,9 @@
 	dw Route21EndBattleText6 ; TextEndBattle
 
 Route21TrainerHeader6: ; 55f5e (15:5f5e)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_21_TRAINER_6
 	db ($3 << 4) ; trainer's view range
-	dw wd7e9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_21_TRAINER_6
 	dw Route21BattleText7 ; TextBeforeBattle
 	dw Route21AfterBattleText7 ; TextAfterBattle
 	dw Route21EndBattleText7 ; TextEndBattle
@@ -88,9 +88,9 @@
 	dw Route21EndBattleText7 ; TextEndBattle
 
 Route21TrainerHeader7: ; 55f6a (15:5f6a)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_21_TRAINER_7, 1
 	db ($0 << 4) ; trainer's view range
-	dw wd7e9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_21_TRAINER_7, 1
 	dw Route21BattleText8 ; TextBeforeBattle
 	dw Route21AfterBattleText8 ; TextAfterBattle
 	dw Route21EndBattleText8 ; TextEndBattle
@@ -97,9 +97,9 @@
 	dw Route21EndBattleText8 ; TextEndBattle
 
 Route21TrainerHeader8: ; 55f76 (15:5f76)
-	db $9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_21_TRAINER_8, 1
 	db ($0 << 4) ; trainer's view range
-	dw wd7e9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_21_TRAINER_8, 1
 	dw Route21BattleText9 ; TextBeforeBattle
 	dw Route21AfterBattleText9 ; TextAfterBattle
 	dw Route21EndBattleText9 ; TextEndBattle
--- a/scripts/route22.asm
+++ b/scripts/route22.asm
@@ -55,8 +55,7 @@
 	db $FF
 
 Route22Script0: ; 50f00 (14:4f00)
-	ld a, [wd7eb]
-	bit 7, a
+	CheckEvent EVENT_ROUTE22_RIVAL_WANTS_FIGHT
 	ret z
 	ld hl, .Route22RivalBattleCoords
 	call ArePlayerCoordsInArray
@@ -69,10 +68,9 @@
 	ld [wJoyIgnore], a
 	ld a, PLAYER_DIR_LEFT
 	ld [wPlayerMovingDirection], a
-	ld a, [wd7eb]
-	bit 0, a ; is this the rival battle at the beginning of the game?
+	CheckEvent EVENT_1ST_ROUTE22_RIVAL_BATTLE
 	jr nz, .firstRivalBattle
-	bit 1, a ; is this the rival at the end of the game?
+	CheckEventReuseA EVENT_2ND_ROUTE22_RIVAL_BATTLE ; is this the rival at the end of the game?
 	jp nz, Route22Script_5104e
 	ret
 
@@ -165,8 +163,7 @@
 	call SetSpriteFacingDirectionAndDelay
 	ld a, $f0
 	ld [wJoyIgnore], a
-	ld hl, wd7eb
-	set 5, [hl]
+	SetEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_FIGHT
 	ld a, $1
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
@@ -230,9 +227,7 @@
 	ld [wcc4d], a
 	predef HideObject
 	call PlayDefaultMusic
-	ld hl, wd7eb
-	res 0, [hl]
-	res 7, [hl]
+	ResetEvents EVENT_1ST_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_FIGHT
 	ld a, $0
 	ld [W_ROUTE22CURSCRIPT], a
 	ret
@@ -327,8 +322,7 @@
 	call SetSpriteFacingDirectionAndDelay
 	ld a, $f0
 	ld [wJoyIgnore], a
-	ld hl, wd7eb
-	set 6, [hl]
+	SetEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_FIGHT
 	ld a, $2
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
@@ -378,9 +372,7 @@
 	ld [wcc4d], a
 	predef HideObject
 	call PlayDefaultMusic
-	ld hl, wd7eb
-	res 1, [hl]
-	res 7, [hl]
+	ResetEvents EVENT_2ND_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_FIGHT
 	ld a, $7
 	ld [W_ROUTE22CURSCRIPT], a
 	ret
@@ -392,8 +384,7 @@
 
 Route22Text1: ; 5117b (14:517b)
 	TX_ASM
-	ld a, [wd7eb]
-	bit 5, a
+	CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_FIGHT
 	jr z, .asm_5118b
 	ld hl, Route22RivalAfterBattleText1
 	call PrintText
@@ -406,8 +397,7 @@
 
 Route22Text2: ; 51194 (14:5194)
 	TX_ASM
-	ld a, [wd7eb]
-	bit 6, a
+	CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_FIGHT
 	jr z, .asm_511a4
 	ld hl, Route22RivalAfterBattleText2
 	call PrintText
--- a/scripts/route23.asm
+++ b/scripts/route23.asm
@@ -10,12 +10,8 @@
 	bit 6, [hl]
 	res 6, [hl]
 	ret z
-	ld hl, wd7ee
-	res 0, [hl]
-	res 7, [hl]
-	ld hl, wd813
-	res 0, [hl]
-	res 6, [hl]
+	ResetEvents EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1, EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH2
+	ResetEvents EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH1, EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH2
 	ld a, HS_VICTORY_ROAD_3_BOULDER
 	ld [wcc4d], a
 	predef ShowObject
@@ -33,7 +29,7 @@
 	ld a, [W_YCOORD]
 	ld b, a
 	ld e, $0
-	ld c, $7
+	EventFlagBit c, EVENT_PASSED_EARTHBADGE_CHECK + 1, EVENT_PASSED_CASCADEBADGE_CHECK
 .asm_51224
 	ld a, [hli]
 	cp $ff
@@ -53,7 +49,7 @@
 	ld a, c
 	ld [wWhichBadge], a
 	ld b, FLAG_TEST
-	ld hl, wd7ed
+	EventFlagAddress hl, EVENT_PASSED_CASCADEBADGE_CHECK
 	predef FlagActionPredef
 	ld a, c
 	and a
@@ -147,43 +143,43 @@
 
 Route23Text1: ; 51307 (14:5307)
 	TX_ASM
-	ld a, $6
+	EventFlagBit a, EVENT_PASSED_EARTHBADGE_CHECK, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text2: ; 51310 (14:5310)
 	TX_ASM
-	ld a, $5
+	EventFlagBit a, EVENT_PASSED_VOLCANOBADGE_CHECK, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text3: ; 51319 (14:5319)
 	TX_ASM
-	ld a, $4
+	EventFlagBit a, EVENT_PASSED_MARSHBADGE_CHECK, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text4: ; 51322 (14:5322)
 	TX_ASM
-	ld a, $3
+	EventFlagBit a, EVENT_PASSED_SOULBADGE_CHECK, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text5: ; 5132b (14:532b)
 	TX_ASM
-	ld a, $2
+	EventFlagBit a, EVENT_PASSED_RAINBOWBADGE_CHECK, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text6: ; 51334 (14:5334)
 	TX_ASM
-	ld a, $1
+	EventFlagBit a, EVENT_PASSED_THUNDERBADGE_CHECK, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text7: ; 5133d (14:533d)
 	TX_ASM
-	ld a, $0
+	EventFlagBit a, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
 
@@ -211,7 +207,7 @@
 	ld a, [wWhichBadge]
 	ld c, a
 	ld b, FLAG_SET
-	ld hl, wd7ed
+	EventFlagAddress hl, EVENT_PASSED_CASCADEBADGE_CHECK
 	predef FlagActionPredef
 	ld a, $2
 	ld [W_ROUTE23CURSCRIPT], a
--- a/scripts/route24.asm
+++ b/scripts/route24.asm
@@ -22,8 +22,7 @@
 	dw Route24Script4
 
 Route24Script0: ; 513d5 (14:53d5)
-	ld a, [wd7ef]
-	bit 0, a
+	CheckEvent EVENT_GOT_NUGGET
 	jp nz, CheckFightingMapTrainers
 	ld hl, CoordsData_5140e
 	call ArePlayerCoordsInArray
@@ -33,9 +32,7 @@
 	ld a, $1
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd7f0
-	bit 1, [hl]
-	res 1, [hl]
+	CheckAndResetEvent EVENT_NUGGET_REWARD_AVAILABLE
 	ret z
 	ld a, D_DOWN
 	ld [wSimulatedJoypadStatesEnd], a
@@ -67,8 +64,7 @@
 	call UpdateSprites
 	ld a, $f0
 	ld [wJoyIgnore], a
-	ld hl, wd7ef
-	set 1, [hl]
+	SetEvent EVENT_BEAT_ROUTE24_ROCKET
 	ld a, $1
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
@@ -91,9 +87,9 @@
 
 Route24TrainerHeaders: ; 5145b (14:545b)
 Route24TrainerHeader0: ; 5145b (14:545b)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_24_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd7ef ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_24_TRAINER_0
 	dw Route24BattleText1 ; TextBeforeBattle
 	dw Route24AfterBattleText1 ; TextAfterBattle
 	dw Route24EndBattleText1 ; TextEndBattle
@@ -100,9 +96,9 @@
 	dw Route24EndBattleText1 ; TextEndBattle
 
 Route24TrainerHeader2: ; 51467 (14:5467)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_24_TRAINER_2
 	db ($1 << 4) ; trainer's view range
-	dw wd7ef ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_24_TRAINER_2
 	dw Route24BattleText2 ; TextBeforeBattle
 	dw Route24AfterBattleText2 ; TextAfterBattle
 	dw Route24EndBattleText2 ; TextEndBattle
@@ -109,9 +105,9 @@
 	dw Route24EndBattleText2 ; TextEndBattle
 
 Route24TrainerHeader3: ; 51473 (14:5473)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_24_TRAINER_3
 	db ($1 << 4) ; trainer's view range
-	dw wd7ef ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_24_TRAINER_3
 	dw Route24BattleText3 ; TextBeforeBattle
 	dw Route24AfterBattleText3 ; TextAfterBattle
 	dw Route24EndBattleText3 ; TextEndBattle
@@ -118,9 +114,9 @@
 	dw Route24EndBattleText3 ; TextEndBattle
 
 Route24TrainerHeader4: ; 5147f (14:547f)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_24_TRAINER_4
 	db ($1 << 4) ; trainer's view range
-	dw wd7ef ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_24_TRAINER_4
 	dw Route24BattleText4 ; TextBeforeBattle
 	dw Route24AfterBattleText4 ; TextAfterBattle
 	dw Route24EndBattleText4 ; TextEndBattle
@@ -127,9 +123,9 @@
 	dw Route24EndBattleText4 ; TextEndBattle
 
 Route24TrainerHeader5: ; 5148b (14:548b)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_24_TRAINER_5
 	db ($1 << 4) ; trainer's view range
-	dw wd7ef ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_24_TRAINER_5
 	dw Route24BattleText5 ; TextBeforeBattle
 	dw Route24AfterBattleText5 ; TextAfterBattle
 	dw Route24EndBattleText5 ; TextEndBattle
@@ -136,9 +132,9 @@
 	dw Route24EndBattleText5 ; TextEndBattle
 
 Route24TrainerHeader6: ; 51497 (14:5497)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_24_TRAINER_6
 	db ($1 << 4) ; trainer's view range
-	dw wd7ef ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_24_TRAINER_6
 	dw Route24BattleText6 ; TextBeforeBattle
 	dw Route24AfterBattleText6 ; TextAfterBattle
 	dw Route24EndBattleText6 ; TextEndBattle
@@ -148,10 +144,8 @@
 
 Route24Text1: ; 514a4 (14:54a4)
 	TX_ASM
-	ld hl, wd7f0
-	res 1, [hl]
-	ld a, [wd7ef]
-	bit 0, a
+	ResetEvent EVENT_NUGGET_REWARD_AVAILABLE
+	CheckEvent EVENT_GOT_NUGGET
 	jr nz, .asm_514f9
 	ld hl, Route24Text_51510
 	call PrintText
@@ -158,8 +152,7 @@
 	ld bc, (NUGGET << 8) | 1
 	call GiveItem
 	jr nc, .BagFull
-	ld hl, wd7ef
-	set 0, [hl]
+	SetEvent EVENT_GOT_NUGGET
 	ld hl, Route24Text_5151a
 	call PrintText
 	ld hl, Route24Text_51526
@@ -187,8 +180,7 @@
 .BagFull
 	ld hl, Route24Text_51521
 	call PrintText
-	ld hl, wd7f0
-	set 1, [hl]
+	SetEvent EVENT_NUGGET_REWARD_AVAILABLE
 	jp TextScriptEnd
 
 Route24Text_51510: ; 51510 (14:5510)
--- a/scripts/route25.asm
+++ b/scripts/route25.asm
@@ -13,19 +13,18 @@
 	bit 6, [hl]
 	res 6, [hl]
 	ret z
-	ld hl, wd7f2
-	bit 7, [hl]
+	CheckEventHL EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING
 	ret nz
-	bit 5, [hl]
+	CheckEventReuseHL EVENT_MET_BILL_2
 	jr nz, .asm_515ff
-	res 6, [hl]
+	ResetEventReuseHL EVENT_BILL_SAID_USE_CELL_SEPARATOR
 	ld a, HS_BILL_POKEMON
 	ld [wcc4d], a
 	predef_jump ShowObject
 .asm_515ff
-	bit 4, [hl]
+	CheckEventAfterBranchReuseHL EVENT_GOT_SS_TICKET, EVENT_MET_BILL_2
 	ret z
-	set 7, [hl]
+	SetEventReuseHL EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING
 	ld a, HS_NUGGET_BRIDGE_GUY
 	ld [wcc4d], a
 	predef HideObject
@@ -56,9 +55,9 @@
 
 Route25TrainerHeaders: ; 5163e (14:563e)
 Route25TrainerHeader0: ; 5163e (14:563e)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_25_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd7f1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_25_TRAINER_0
 	dw Route25BattleText1 ; TextBeforeBattle
 	dw Route25AfterBattleText1 ; TextAfterBattle
 	dw Route25EndBattleText1 ; TextEndBattle
@@ -65,9 +64,9 @@
 	dw Route25EndBattleText1 ; TextEndBattle
 
 Route25TrainerHeader2: ; 5164a (14:564a)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_25_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd7f1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_25_TRAINER_2
 	dw Route25BattleText2 ; TextBeforeBattle
 	dw Route25AfterBattleText2 ; TextAfterBattle
 	dw Route25EndBattleText2 ; TextEndBattle
@@ -74,9 +73,9 @@
 	dw Route25EndBattleText2 ; TextEndBattle
 
 Route25TrainerHeader3: ; 51656 (14:5656)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_25_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd7f1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_25_TRAINER_3
 	dw Route25BattleText3 ; TextBeforeBattle
 	dw Route25AfterBattleText3 ; TextAfterBattle
 	dw Route25EndBattleText3 ; TextEndBattle
@@ -83,9 +82,9 @@
 	dw Route25EndBattleText3 ; TextEndBattle
 
 Route25TrainerHeader4: ; 51662 (14:5662)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_25_TRAINER_4
 	db ($2 << 4) ; trainer's view range
-	dw wd7f1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_25_TRAINER_4
 	dw Route25BattleText4 ; TextBeforeBattle
 	dw Route25AfterBattleText4 ; TextAfterBattle
 	dw Route25EndBattleText4 ; TextEndBattle
@@ -92,9 +91,9 @@
 	dw Route25EndBattleText4 ; TextEndBattle
 
 Route25TrainerHeader5: ; 5166e (14:566e)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_25_TRAINER_5
 	db ($4 << 4) ; trainer's view range
-	dw wd7f1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_25_TRAINER_5
 	dw Route25BattleText5 ; TextBeforeBattle
 	dw Route25AfterBattleText5 ; TextAfterBattle
 	dw Route25EndBattleText5 ; TextEndBattle
@@ -101,9 +100,9 @@
 	dw Route25EndBattleText5 ; TextEndBattle
 
 Route25TrainerHeader6: ; 5167a (14:567a)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_25_TRAINER_6
 	db ($4 << 4) ; trainer's view range
-	dw wd7f1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_25_TRAINER_6
 	dw Route25BattleText6 ; TextBeforeBattle
 	dw Route25AfterBattleText6 ; TextAfterBattle
 	dw Route25EndBattleText6 ; TextEndBattle
@@ -110,9 +109,9 @@
 	dw Route25EndBattleText6 ; TextEndBattle
 
 Route25TrainerHeader7: ; 51686 (14:5686)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_25_TRAINER_7
 	db ($3 << 4) ; trainer's view range
-	dw wd7f1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_25_TRAINER_7
 	dw Route25BattleText7 ; TextBeforeBattle
 	dw Route25AfterBattleText7 ; TextAfterBattle
 	dw Route25EndBattleText7 ; TextEndBattle
@@ -119,9 +118,9 @@
 	dw Route25EndBattleText7 ; TextEndBattle
 
 Route25TrainerHeader8: ; 51692 (14:5692)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_25_TRAINER_8, 1
 	db ($2 << 4) ; trainer's view range
-	dw wd7f1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_25_TRAINER_8, 1
 	dw Route25BattleText8 ; TextBeforeBattle
 	dw Route25AfterBattleText8 ; TextAfterBattle
 	dw Route25EndBattleText8 ; TextEndBattle
@@ -128,9 +127,9 @@
 	dw Route25EndBattleText8 ; TextEndBattle
 
 Route25TrainerHeader9: ; 5169e (14:569e)
-	db $9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_25_TRAINER_9, 1
 	db ($2 << 4) ; trainer's view range
-	dw wd7f1 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_25_TRAINER_9, 1
 	dw Route25BattleText9 ; TextBeforeBattle
 	dw Route25AfterBattleText9 ; TextAfterBattle
 	dw Route25EndBattleText9 ; TextEndBattle
--- a/scripts/route2gate.asm
+++ b/scripts/route2gate.asm
@@ -7,8 +7,7 @@
 
 Route2GateText1: ; 5d5db (17:55db)
 	TX_ASM
-	ld a, [wd7c2]
-	bit 0, a
+	CheckEvent EVENT_GOT_HM05
 	jr nz, .asm_5d60d
 	ld a, 10 ; pokemon needed
 	ld [$ffdb], a
@@ -24,8 +23,7 @@
 	ld a, [$ffdb]
 	cp $1
 	jr nz, .asm_5d613
-	ld hl, wd7c2
-	set 0, [hl]
+	SetEvent EVENT_GOT_HM05
 .asm_5d60d
 	ld hl, Route2GateText_5d616
 	call PrintText
--- a/scripts/route3.asm
+++ b/scripts/route3.asm
@@ -26,9 +26,9 @@
 
 Route3TrainerHeaders: ; 55525 (15:5525)
 Route3TrainerHeader0: ; 55525 (15:5525)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_3_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd7c3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_3_TRAINER_0
 	dw Route3BattleText1 ; TextBeforeBattle
 	dw Route3AfterBattleText1 ; TextAfterBattle
 	dw Route3EndBattleText1 ; TextEndBattle
@@ -35,9 +35,9 @@
 	dw Route3EndBattleText1 ; TextEndBattle
 
 Route3TrainerHeader2: ; 55531 (15:5531)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_3_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd7c3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_3_TRAINER_2
 	dw Route3BattleText2 ; TextBeforeBattle
 	dw Route3AfterBattleText2 ; TextAfterBattle
 	dw Route3EndBattleText2 ; TextEndBattle
@@ -44,9 +44,9 @@
 	dw Route3EndBattleText2 ; TextEndBattle
 
 Route3TrainerHeader3: ; 5553d (15:553d)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_3_TRAINER_3
 	db ($2 << 4) ; trainer's view range
-	dw wd7c3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_3_TRAINER_3
 	dw Route3BattleText3 ; TextBeforeBattle
 	dw Route3AfterBattleText3 ; TextAfterBattle
 	dw Route3EndBattleText3 ; TextEndBattle
@@ -53,9 +53,9 @@
 	dw Route3EndBattleText3 ; TextEndBattle
 
 Route3TrainerHeader4: ; 55549 (15:5549)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_3_TRAINER_4
 	db ($1 << 4) ; trainer's view range
-	dw wd7c3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_3_TRAINER_4
 	dw Route3BattleText4 ; TextBeforeBattle
 	dw Route3AfterBattleText4 ; TextAfterBattle
 	dw Route3EndBattleText4 ; TextEndBattle
@@ -62,9 +62,9 @@
 	dw Route3EndBattleText4 ; TextEndBattle
 
 Route3TrainerHeader5: ; 55555 (15:5555)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_3_TRAINER_5
 	db ($4 << 4) ; trainer's view range
-	dw wd7c3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_3_TRAINER_5
 	dw Route3BattleText5 ; TextBeforeBattle
 	dw Route3AfterBattleText5 ; TextAfterBattle
 	dw Route3EndBattleText5 ; TextEndBattle
@@ -71,9 +71,9 @@
 	dw Route3EndBattleText5 ; TextEndBattle
 
 Route3TrainerHeader6: ; 55561 (15:5561)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_3_TRAINER_6
 	db ($3 << 4) ; trainer's view range
-	dw wd7c3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_3_TRAINER_6
 	dw Route3BattleText6 ; TextBeforeBattle
 	dw Route3AfterBattleText6 ; TextAfterBattle
 	dw Route3EndBattleText6 ; TextEndBattle
@@ -80,9 +80,9 @@
 	dw Route3EndBattleText6 ; TextEndBattle
 
 Route3TrainerHeader7: ; 5556d (15:556d)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_3_TRAINER_7, 1
 	db ($3 << 4) ; trainer's view range
-	dw wd7c3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_3_TRAINER_7, 1
 	dw Route3BattleText7 ; TextBeforeBattle
 	dw Route3AfterBattleText7 ; TextAfterBattle
 	dw Route3EndBattleText7 ; TextEndBattle
@@ -89,9 +89,9 @@
 	dw Route3EndBattleText7 ; TextEndBattle
 
 Route3TrainerHeader8: ; 55579 (15:5579)
-	db $9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_3_TRAINER_8, 1
 	db ($2 << 4) ; trainer's view range
-	dw wd7c3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_3_TRAINER_8, 1
 	dw Route3BattleText8 ; TextBeforeBattle
 	dw Route3AfterBattleText8 ; TextAfterBattle
 	dw Route3EndBattleText8 ; TextEndBattle
--- a/scripts/route4.asm
+++ b/scripts/route4.asm
@@ -22,9 +22,9 @@
 
 Route4TrainerHeaders: ; 5567d (15:567d)
 Route4TrainerHeader0: ; 5567d (15:567d)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_4_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd7c5 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_4_TRAINER_0
 	dw Route4BattleText1 ; TextBeforeBattle
 	dw Route4AfterBattleText1 ; TextAfterBattle
 	dw Route4EndBattleText1 ; TextEndBattle
--- a/scripts/route6.asm
+++ b/scripts/route6.asm
@@ -23,9 +23,9 @@
 
 Route6TrainerHeaders: ; 590d7 (16:50d7)
 Route6TrainerHeader0: ; 590d7 (16:50d7)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_6_TRAINER_0
 	db ($0 << 4) ; trainer's view range
-	dw wd7c9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_6_TRAINER_0
 	dw Route6BattleText1 ; TextBeforeBattle
 	dw Route6AfterBattleText1 ; TextAfterBattle
 	dw Route6EndBattleText1 ; TextEndBattle
@@ -32,9 +32,9 @@
 	dw Route6EndBattleText1 ; TextEndBattle
 
 Route6TrainerHeader1: ; 590e3 (16:50e3)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_6_TRAINER_1
 	db ($0 << 4) ; trainer's view range
-	dw wd7c9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_6_TRAINER_1
 	dw Route6BattleText2 ; TextBeforeBattle
 	dw Route6AfterBattleText1 ; TextAfterBattle
 	dw Route6EndBattleText2 ; TextEndBattle
@@ -41,9 +41,9 @@
 	dw Route6EndBattleText2 ; TextEndBattle
 
 Route6TrainerHeader2: ; 590ef (16:50ef)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_6_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd7c9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_6_TRAINER_2
 	dw Route6BattleText3 ; TextBeforeBattle
 	dw Route6AfterBattleText3 ; TextAfterBattle
 	dw Route6EndBattleText3 ; TextEndBattle
@@ -50,9 +50,9 @@
 	dw Route6EndBattleText3 ; TextEndBattle
 
 Route6TrainerHeader3: ; 590fb (16:50fb)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_6_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd7c9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_6_TRAINER_3
 	dw Route6BattleText4 ; TextBeforeBattle
 	dw Route6AfterBattleText4 ; TextAfterBattle
 	dw Route6EndBattleText4 ; TextEndBattle
@@ -59,9 +59,9 @@
 	dw Route6EndBattleText4 ; TextEndBattle
 
 Route6TrainerHeader4: ; 59107 (16:5107)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_6_TRAINER_4
 	db ($3 << 4) ; trainer's view range
-	dw wd7c9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_6_TRAINER_4
 	dw Route6BattleText5 ; TextBeforeBattle
 	dw Route6AfterBattleText5 ; TextAfterBattle
 	dw Route6EndBattleText5 ; TextEndBattle
@@ -68,9 +68,9 @@
 	dw Route6EndBattleText5 ; TextEndBattle
 
 Route6TrainerHeader5: ; 59113 (16:5113)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_6_TRAINER_5
 	db ($3 << 4) ; trainer's view range
-	dw wd7c9 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_6_TRAINER_5
 	dw Route6BattleText6 ; TextBeforeBattle
 	dw Route6AfterBattleText6 ; TextAfterBattle
 	dw Route6EndBattleText6 ; TextEndBattle
--- a/scripts/route8.asm
+++ b/scripts/route8.asm
@@ -26,9 +26,9 @@
 
 Route8TrainerHeaders: ; 591e3 (16:51e3)
 Route8TrainerHeader0: ; 591e3 (16:51e3)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_8_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd7cd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_8_TRAINER_0
 	dw Route8BattleText1 ; TextBeforeBattle
 	dw Route8AfterBattleText1 ; TextAfterBattle
 	dw Route8EndBattleText1 ; TextEndBattle
@@ -35,9 +35,9 @@
 	dw Route8EndBattleText1 ; TextEndBattle
 
 Route8TrainerHeader1: ; 591ef (16:51ef)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_8_TRAINER_1
 	db ($4 << 4) ; trainer's view range
-	dw wd7cd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_8_TRAINER_1
 	dw Route8BattleText2 ; TextBeforeBattle
 	dw Route8AfterBattleText2 ; TextAfterBattle
 	dw Route8EndBattleText2 ; TextEndBattle
@@ -44,9 +44,9 @@
 	dw Route8EndBattleText2 ; TextEndBattle
 
 Route8TrainerHeader2: ; 591fb (16:51fb)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_8_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd7cd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_8_TRAINER_2
 	dw Route8BattleText3 ; TextBeforeBattle
 	dw Route8AfterBattleText3 ; TextAfterBattle
 	dw Route8EndBattleText3 ; TextEndBattle
@@ -53,9 +53,9 @@
 	dw Route8EndBattleText3 ; TextEndBattle
 
 Route8TrainerHeader3: ; 59207 (16:5207)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_8_TRAINER_3
 	db ($2 << 4) ; trainer's view range
-	dw wd7cd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_8_TRAINER_3
 	dw Route8BattleText4 ; TextBeforeBattle
 	dw Route8AfterBattleText4 ; TextAfterBattle
 	dw Route8EndBattleText4 ; TextEndBattle
@@ -62,9 +62,9 @@
 	dw Route8EndBattleText4 ; TextEndBattle
 
 Route8TrainerHeader4: ; 59213 (16:5213)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_8_TRAINER_4
 	db ($3 << 4) ; trainer's view range
-	dw wd7cd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_8_TRAINER_4
 	dw Route8BattleText5 ; TextBeforeBattle
 	dw Route8AfterBattleText5 ; TextAfterBattle
 	dw Route8EndBattleText5 ; TextEndBattle
@@ -71,9 +71,9 @@
 	dw Route8EndBattleText5 ; TextEndBattle
 
 Route8TrainerHeader5: ; 5921f (16:521f)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_8_TRAINER_5
 	db ($3 << 4) ; trainer's view range
-	dw wd7cd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_8_TRAINER_5
 	dw Route8BattleText6 ; TextBeforeBattle
 	dw Route8AfterBattleText6 ; TextAfterBattle
 	dw Route8EndBattleText6 ; TextEndBattle
@@ -80,9 +80,9 @@
 	dw Route8EndBattleText6 ; TextEndBattle
 
 Route8TrainerHeader6: ; 5922b (16:522b)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_8_TRAINER_6
 	db ($2 << 4) ; trainer's view range
-	dw wd7cd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_8_TRAINER_6
 	dw Route8BattleText7 ; TextBeforeBattle
 	dw Route8AfterBattleText7 ; TextAfterBattle
 	dw Route8EndBattleText7 ; TextEndBattle
@@ -89,9 +89,9 @@
 	dw Route8EndBattleText7 ; TextEndBattle
 
 Route8TrainerHeader7: ; 59237 (16:5237)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_8_TRAINER_7, 1
 	db ($2 << 4) ; trainer's view range
-	dw wd7cd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_8_TRAINER_7, 1
 	dw Route8BattleText8 ; TextBeforeBattle
 	dw Route8AfterBattleText8 ; TextAfterBattle
 	dw Route8EndBattleText8 ; TextEndBattle
@@ -98,9 +98,9 @@
 	dw Route8EndBattleText8 ; TextEndBattle
 
 Route8TrainerHeader8: ; 59243 (16:5243)
-	db $9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_8_TRAINER_8, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd7cd ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_8_TRAINER_8, 1
 	dw Route8BattleText9 ; TextBeforeBattle
 	dw Route8AfterBattleText9 ; TextAfterBattle
 	dw Route8EndBattleText9 ; TextEndBattle
--- a/scripts/route9.asm
+++ b/scripts/route9.asm
@@ -27,9 +27,9 @@
 
 Route9TrainerHeaders: ; 556eb (15:56eb)
 Route9TrainerHeader0: ; 556eb (15:56eb)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd7cf ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_9_TRAINER_0
 	dw Route9BattleText1 ; TextBeforeBattle
 	dw Route9AfterBattleText1 ; TextAfterBattle
 	dw Route9EndBattleText1 ; TextEndBattle
@@ -36,9 +36,9 @@
 	dw Route9EndBattleText1 ; TextEndBattle
 
 Route9TrainerHeader2: ; 556f7 (15:56f7)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd7cf ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_9_TRAINER_2
 	dw Route9BattleText2 ; TextBeforeBattle
 	dw Route9AfterBattleText2 ; TextAfterBattle
 	dw Route9EndBattleText2 ; TextEndBattle
@@ -45,9 +45,9 @@
 	dw Route9EndBattleText2 ; TextEndBattle
 
 Route9TrainerHeader3: ; 55703 (15:5703)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_3
 	db ($4 << 4) ; trainer's view range
-	dw wd7cf ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_9_TRAINER_3
 	dw Route9BattleText3 ; TextBeforeBattle
 	dw Route9AfterBattleText3 ; TextAfterBattle
 	dw Route9EndBattleText3 ; TextEndBattle
@@ -54,9 +54,9 @@
 	dw Route9EndBattleText3 ; TextEndBattle
 
 Route9TrainerHeader4: ; 5570f (15:570f)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_4
 	db ($2 << 4) ; trainer's view range
-	dw wd7cf ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_9_TRAINER_4
 	dw Route9BattleText4 ; TextBeforeBattle
 	dw Route9AfterBattleText4 ; TextAfterBattle
 	dw Route9EndBattleText4 ; TextEndBattle
@@ -63,9 +63,9 @@
 	dw Route9EndBattleText4 ; TextEndBattle
 
 Route9TrainerHeader5: ; 5571b (15:571b)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_5
 	db ($2 << 4) ; trainer's view range
-	dw wd7cf ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_9_TRAINER_5
 	dw Route9BattleText5 ; TextBeforeBattle
 	dw Route9AfterBattleText5 ; TextAfterBattle
 	dw Route9EndBattleText5 ; TextEndBattle
@@ -72,9 +72,9 @@
 	dw Route9EndBattleText5 ; TextEndBattle
 
 Route9TrainerHeader6: ; 55727 (15:5727)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_6
 	db ($3 << 4) ; trainer's view range
-	dw wd7cf ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_9_TRAINER_6
 	dw Route9BattleText6 ; TextBeforeBattle
 	dw Route9AfterBattleText6 ; TextAfterBattle
 	dw Route9EndBattleText6 ; TextEndBattle
@@ -81,9 +81,9 @@
 	dw Route9EndBattleText6 ; TextEndBattle
 
 Route9TrainerHeader7: ; 55733 (15:5733)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_7
 	db ($4 << 4) ; trainer's view range
-	dw wd7cf ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_9_TRAINER_7
 	dw Route9BattleText7 ; TextBeforeBattle
 	dw Route9AfterBattleText7 ; TextAfterBattle
 	dw Route9EndBattleText7 ; TextEndBattle
@@ -90,9 +90,9 @@
 	dw Route9EndBattleText7 ; TextEndBattle
 
 Route9TrainerHeader8: ; 5573f (15:573f)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_8, 1
 	db ($2 << 4) ; trainer's view range
-	dw wd7cf ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_9_TRAINER_8, 1
 	dw Route9BattleText8 ; TextBeforeBattle
 	dw Route9AfterBattleText8 ; TextAfterBattle
 	dw Route9EndBattleText8 ; TextEndBattle
@@ -99,9 +99,9 @@
 	dw Route9EndBattleText8 ; TextEndBattle
 
 Route9TrainerHeader9: ; 5574b (15:574b)
-	db $9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_9, 1
 	db ($2 << 4) ; trainer's view range
-	dw wd7cf ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_ROUTE_9_TRAINER_9, 1
 	dw Route9BattleText9 ; TextBeforeBattle
 	dw Route9AfterBattleText9 ; TextAfterBattle
 	dw Route9EndBattleText9 ; TextEndBattle
--- a/scripts/safarizoneentrance-yellow.asm
+++ b/scripts/safarizoneentrance-yellow.asm
@@ -64,9 +64,8 @@
 	ld a,D_UP
 	ld c,3
 	call SafariZoneEntranceAutoWalk
-	ld hl,wd790
-	set 7,[hl]
-	res 6,[hl]
+	SetEvent EVENT_IN_SAFARI_ZONE
+	ResetEventReuseHL EVENT_SAFARI_GAME_OVER
 	ld a,3
 	ld [W_SAFARIZONEENTRANCECURSCRIPT],a
 	jr .done
--- a/scripts/safarizoneentrance.asm
+++ b/scripts/safarizoneentrance.asm
@@ -74,11 +74,9 @@
 .SafariZoneEntranceScript5
 	ld a, PLAYER_DIR_DOWN
 	ld [wPlayerMovingDirection], a
-	ld hl, wd790
-	bit 6, [hl]
-	res 6, [hl]
+	CheckAndResetEvent EVENT_SAFARI_GAME_OVER
 	jr z, .asm_7527f
-	res 7, [hl]
+	ResetEventReuseHL EVENT_IN_SAFARI_ZONE
 	call UpdateSprites
 	ld a, $f0
 	ld [wJoyIgnore], a
@@ -191,9 +189,8 @@
 	ld a,D_UP
 	ld c,3
 	call SafariZoneEntranceAutoWalk
-	ld hl,wd790
-	set 7,[hl]
-	res 6,[hl]
+	SetEvent EVENT_IN_SAFARI_ZONE
+	ResetEventReuseHL EVENT_SAFARI_GAME_OVER
 	ld a,3
 	ld [W_SAFARIZONEENTRANCECURSCRIPT],a
 	jr .done
@@ -238,9 +235,7 @@
 	ld a, D_DOWN
 	ld c, $3
 	call SafariZoneEntranceAutoWalk
-	ld hl, wd790
-	res 6, [hl]
-	res 7, [hl]
+	ResetEvents EVENT_SAFARI_GAME_OVER, EVENT_IN_SAFARI_ZONE
 	ld a, $0
 	ld [wcf0d], a
 	jr .asm_753b3
--- a/scripts/safarizonesecrethouse.asm
+++ b/scripts/safarizonesecrethouse.asm
@@ -6,8 +6,7 @@
 
 SafariZoneSecretHouseText1: ; 4a31c (12:631c)
 	TX_ASM
-	ld a, [wd857]
-	bit 0, a
+	CheckEvent EVENT_GOT_HM03
 	jr nz, .asm_20a9b
 	ld hl, SafariZoneSecretHouseText_4a350
 	call PrintText
@@ -16,8 +15,7 @@
 	jr nc, .BagFull
 	ld hl, ReceivedHM03Text
 	call PrintText
-	ld hl, wd857
-	set 0, [hl]
+	SetEvent EVENT_GOT_HM03
 	jr .asm_8f1fc
 .BagFull
 	ld hl, HM03NoRoomText
--- a/scripts/saffrongym.asm
+++ b/scripts/saffrongym.asm
@@ -46,8 +46,7 @@
 	ld a, $a
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd7b3
-	set 1, [hl]
+	SetEvent EVENT_BEAT_SABRINA
 	ld bc, (TM_46 << 8) | 1
 	call GiveItem
 	jr nc, .BagFull
@@ -54,8 +53,7 @@
 	ld a, $b
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd7b3
-	set 0, [hl]
+	SetEvent EVENT_GOT_TM46
 	jr .asm_5d091
 .BagFull
 	ld a, $c
@@ -68,11 +66,7 @@
 	set 5, [hl]
 
 	; deactivate gym trainers
-	ld a, [wd7b3]
-	or %11111100
-	ld [wd7b3], a
-	ld hl, wd7b4
-	set 0, [hl]
+	SetEventRange EVENT_BEAT_SAFFRON_GYM_TRAINER_0, EVENT_BEAT_SAFFRON_GYM_TRAINER_6
 
 	jp SaffronGymText_5d048
 
@@ -92,9 +86,9 @@
 
 SaffronGymTrainerHeaders: ; 5d0c3 (17:50c3)
 SaffronGymTrainerHeader0: ; 5d0c3 (17:50c3)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SAFFRON_GYM_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd7b3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SAFFRON_GYM_TRAINER_0
 	dw SaffronGymBattleText1 ; TextBeforeBattle
 	dw SaffronGymAfterBattleText1 ; TextAfterBattle
 	dw SaffronGymEndBattleText1 ; TextEndBattle
@@ -101,9 +95,9 @@
 	dw SaffronGymEndBattleText1 ; TextEndBattle
 
 SaffronGymTrainerHeader1: ; 5d0cf (17:50cf)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SAFFRON_GYM_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd7b3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SAFFRON_GYM_TRAINER_1
 	dw SaffronGymBattleText2 ; TextBeforeBattle
 	dw SaffronGymAfterBattleText2 ; TextAfterBattle
 	dw SaffronGymEndBattleText2 ; TextEndBattle
@@ -110,9 +104,9 @@
 	dw SaffronGymEndBattleText2 ; TextEndBattle
 
 SaffronGymTrainerHeader2: ; 5d0db (17:50db)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SAFFRON_GYM_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd7b3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SAFFRON_GYM_TRAINER_2
 	dw SaffronGymBattleText3 ; TextBeforeBattle
 	dw SaffronGymAfterBattleText3 ; TextAfterBattle
 	dw SaffronGymEndBattleText3 ; TextEndBattle
@@ -119,9 +113,9 @@
 	dw SaffronGymEndBattleText3 ; TextEndBattle
 
 SaffronGymTrainerHeader3: ; 5d0e7 (17:50e7)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SAFFRON_GYM_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd7b3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SAFFRON_GYM_TRAINER_3
 	dw SaffronGymBattleText4 ; TextBeforeBattle
 	dw SaffronGymAfterBattleText4 ; TextAfterBattle
 	dw SaffronGymEndBattleText4 ; TextEndBattle
@@ -128,9 +122,9 @@
 	dw SaffronGymEndBattleText4 ; TextEndBattle
 
 SaffronGymTrainerHeader4: ; 5d0f3 (17:50f3)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SAFFRON_GYM_TRAINER_4
 	db ($3 << 4) ; trainer's view range
-	dw wd7b3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SAFFRON_GYM_TRAINER_4
 	dw SaffronGymBattleText5 ; TextBeforeBattle
 	dw SaffronGymAfterBattleText5 ; TextAfterBattle
 	dw SaffronGymEndBattleText5 ; TextEndBattle
@@ -137,9 +131,9 @@
 	dw SaffronGymEndBattleText5 ; TextEndBattle
 
 SaffronGymTrainerHeader5: ; 5d0ff (17:50ff)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SAFFRON_GYM_TRAINER_5
 	db ($3 << 4) ; trainer's view range
-	dw wd7b3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SAFFRON_GYM_TRAINER_5
 	dw SaffronGymBattleText6 ; TextBeforeBattle
 	dw SaffronGymAfterBattleText6 ; TextAfterBattle
 	dw SaffronGymEndBattleText6 ; TextEndBattle
@@ -146,9 +140,9 @@
 	dw SaffronGymEndBattleText6 ; TextEndBattle
 
 SaffronGymTrainerHeader6: ; 5d10b (17:510b)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SAFFRON_GYM_TRAINER_6, 1
 	db ($3 << 4) ; trainer's view range
-	dw wd7b3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SAFFRON_GYM_TRAINER_6, 1
 	dw SaffronGymBattleText7 ; TextBeforeBattle
 	dw SaffronGymAfterBattleText7 ; TextAfterBattle
 	dw SaffronGymEndBattleText7 ; TextEndBattle
@@ -158,10 +152,9 @@
 
 SaffronGymText1: ; 5d118 (17:5118)
 	TX_ASM
-	ld a, [wd7b3]
-	bit 1, a
+	CheckEvent EVENT_BEAT_SABRINA
 	jr z, .asm_5d134
-	bit 0, a
+	CheckEventReuseA EVENT_GOT_TM46
 	jr nz, .asm_5d12c
 	call z, SaffronGymText_5d068
 	call DisableWaitingAfterTextDisplay
@@ -262,8 +255,7 @@
 
 SaffronGymText9: ; 5d1cd (17:51cd)
 	TX_ASM
-	ld a, [wd7b3]
-	bit 1, a
+	CheckEvent EVENT_BEAT_SABRINA
 	jr nz, .asm_5d1dd
 	ld hl, SaffronGymText_5d1e6
 	call PrintText
--- a/scripts/saffronhouse2.asm
+++ b/scripts/saffronhouse2.asm
@@ -6,8 +6,7 @@
 
 SaffronHouse2Text1: ; 1de41 (7:5e41)
 	TX_ASM
-	ld a, [wd7bd]
-	bit 0, a
+	CheckEvent EVENT_GOT_TM29
 	jr nz, .asm_9e72b
 	ld hl, TM29PreReceiveText
 	call PrintText
@@ -16,8 +15,7 @@
 	jr nc, .BagFull
 	ld hl, ReceivedTM29Text
 	call PrintText
-	ld hl, wd7bd
-	set 0, [hl]
+	SetEvent EVENT_GOT_TM29
 	jr .asm_fe4e1
 .BagFull
 	ld hl, TM29NoRoomText
--- a/scripts/seafoamislands1.asm
+++ b/scripts/seafoamislands1.asm
@@ -1,7 +1,6 @@
 SeafoamIslands1Script: ; 447e9 (11:47e9)
 	call EnableAutoTextBoxDrawing
-	ld hl, wd7e7
-	set 0, [hl]
+	SetEvent EVENT_IN_SEAFOAM_ISLANDS
 	ld hl, wFlags_0xcd60
 	bit 7, [hl]
 	res 7, [hl]
@@ -9,11 +8,11 @@
 	ld hl, Seafoam1HolesCoords
 	call CheckBoulderCoords
 	ret nc
-	ld hl, wd7e8
+	EventFlagAddress hl, EVENT_SEAFOAM1_BOULDER1_DOWN_HOLE
 	ld a, [wCoordIndex]
 	cp $1
 	jr nz, .asm_44819
-	set 6, [hl]
+	SetEventReuseHL EVENT_SEAFOAM1_BOULDER1_DOWN_HOLE
 	ld a, HS_SEAFOAM_ISLANDS_1_BOULDER_1
 	ld [wd079], a
 	ld a, HS_SEAFOAM_ISLANDS_2_BOULDER_1
@@ -20,7 +19,7 @@
 	ld [wd07a], a
 	jr .asm_44825
 .asm_44819
-	set 7, [hl]
+	SetEventAfterBranchReuseHL EVENT_SEAFOAM1_BOULDER2_DOWN_HOLE, EVENT_SEAFOAM1_BOULDER1_DOWN_HOLE
 	ld a, HS_SEAFOAM_ISLANDS_1_BOULDER_2
 	ld [wd079], a
 	ld a, HS_SEAFOAM_ISLANDS_2_BOULDER_2
--- a/scripts/seafoamislands2.asm
+++ b/scripts/seafoamislands2.asm
@@ -7,11 +7,11 @@
 	ld hl, Seafoam2HolesCoords
 	call CheckBoulderCoords
 	ret nc
-	ld hl, wd87f
+	EventFlagAddress hl, EVENT_SEAFOAM2_BOULDER1_DOWN_HOLE
 	ld a, [wCoordIndex]
 	cp $1
 	jr nz, .asm_46340
-	set 0, [hl]
+	SetEventReuseHL EVENT_SEAFOAM2_BOULDER1_DOWN_HOLE
 	ld a, HS_SEAFOAM_ISLANDS_2_BOULDER_1
 	ld [wd079], a
 	ld a, HS_SEAFOAM_ISLANDS_3_BOULDER_1
@@ -18,7 +18,7 @@
 	ld [wd07a], a
 	jr .asm_4634c
 .asm_46340
-	set 1, [hl]
+	SetEventAfterBranchReuseHL EVENT_SEAFOAM2_BOULDER2_DOWN_HOLE, EVENT_SEAFOAM2_BOULDER1_DOWN_HOLE
 	ld a, HS_SEAFOAM_ISLANDS_2_BOULDER_2
 	ld [wd079], a
 	ld a, HS_SEAFOAM_ISLANDS_3_BOULDER_2
--- a/scripts/seafoamislands3.asm
+++ b/scripts/seafoamislands3.asm
@@ -7,11 +7,11 @@
 	ld hl, Seafoam3HolesCoords
 	call CheckBoulderCoords
 	ret nc
-	ld hl, wd880
+	EventFlagAddress hl, EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE
 	ld a, [wCoordIndex]
 	cp $1
 	jr nz, .asm_4647c
-	set 0, [hl]
+	SetEventReuseHL EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE
 	ld a, HS_SEAFOAM_ISLANDS_3_BOULDER_1
 	ld [wd079], a
 	ld a, HS_SEAFOAM_ISLANDS_4_BOULDER_3
@@ -18,7 +18,7 @@
 	ld [wd07a], a
 	jr .asm_46488
 .asm_4647c
-	set 1, [hl]
+	SetEventAfterBranchReuseHL EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE, EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE
 	ld a, HS_SEAFOAM_ISLANDS_3_BOULDER_2
 	ld [wd079], a
 	ld a, HS_SEAFOAM_ISLANDS_4_BOULDER_4
--- a/scripts/seafoamislands4.asm
+++ b/scripts/seafoamislands4.asm
@@ -7,11 +7,11 @@
 	ld hl, Seafoam4HolesCoords
 	call CheckBoulderCoords
 	ret nc
-	ld hl, wd881
+	EventFlagAddress hl, EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE
 	ld a, [wCoordIndex]
 	cp $1
 	jr nz, .asm_465b8
-	set 0, [hl]
+	SetEventReuseHL EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE
 	ld a, HS_SEAFOAM_ISLANDS_4_BOULDER_1
 	ld [wd079], a
 	ld a, HS_SEAFOAM_ISLANDS_5_BOULDER_1
@@ -18,7 +18,7 @@
 	ld [wd07a], a
 	jr .asm_465c4
 .asm_465b8
-	set 1, [hl]
+	SetEventAfterBranchReuseHL EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE, EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE
 	ld a, HS_SEAFOAM_ISLANDS_4_BOULDER_2
 	ld [wd079], a
 	ld a, HS_SEAFOAM_ISLANDS_5_BOULDER_2
@@ -56,9 +56,7 @@
 	dw SeafoamIslands4Script3
 
 SeafoamIslands4Script0: ; 46603 (11:6603)
-	ld a, [wd880]
-	and $3
-	cp $3
+	CheckBothEventsSet EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE
 	ret z
 	ld a, [W_YCOORD]
 	cp $8
@@ -93,9 +91,7 @@
 	ret
 
 SeafoamIslands4Script2: ; 46644 (11:6644)
-	ld a, [wd880]
-	and $3
-	cp $3
+	CheckBothEventsSet EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE
 	ret z
 	ld a, [W_XCOORD]
 	cp $12
--- a/scripts/seafoamislands5.asm
+++ b/scripts/seafoamislands5.asm
@@ -27,9 +27,7 @@
 	ret
 
 SeafoamIslands5Script0: ; 467c7 (11:67c7)
-	ld a, [wd880]
-	and $3
-	cp $3
+	CheckBothEventsSet EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE
 	ret z
 	ld hl, CoordsData_467fe
 	call ArePlayerCoordsInArray
@@ -72,9 +70,7 @@
 	ret
 
 SeafoamIslands5Script2: ; 46816 (11:6816)
-	ld a, [wd881]
-	and $3
-	cp $3
+	CheckBothEventsSet EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE
 	ld a, $0
 	jr z, .asm_46849
 	ld hl, CoordsData_4684d
@@ -143,9 +139,9 @@
 
 SeafoamIslands5TrainerHeaders: ; 46886 (11:6886)
 SeafoamIslands5TrainerHeader0: ; 46886 (11:6886)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SEAFOAM_ISLANDS_5_TRAINER_0
 	db ($0 << 4) ; trainer's view range
-	dw wd882 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SEAFOAM_ISLANDS_5_TRAINER_0
 	dw SeafoamIslands5BattleText2 ; TextBeforeBattle
 	dw SeafoamIslands5BattleText2 ; TextAfterBattle
 	dw SeafoamIslands5BattleText2 ; TextEndBattle
--- a/scripts/silphco1.asm
+++ b/scripts/silphco1.asm
@@ -1,13 +1,10 @@
 SilphCo1Script: ; 5d44e (17:544e)
 	call EnableAutoTextBoxDrawing
-	ld a, [wd838]
-	bit 7, a
+	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	ret z
-	ld hl, wd7b9
-	bit 7, [hl]
-	set 7, [hl]
+	CheckAndSetEvent EVENT_SILPH_CO_RECEPTIONIST_AT_DESK
 	ret nz
-	ld a, HS_SILPH_CO_1F_1
+	ld a, HS_SILPH_CO_1F_RECEPTIONIST
 	ld [wcc4d], a
 	predef_jump ShowObject
 
--- a/scripts/silphco10.asm
+++ b/scripts/silphco10.asm
@@ -16,8 +16,7 @@
 	ld hl, DataTable_5a173
 	call SilphCo2Script_59d43
 	call SilphCo10Text_5a176
-	ld a, [wd836]
-	bit 0, a
+	CheckEvent EVENT_SILPH_CO_10_UNLOCKED_DOOR
 	ret nz
 	ld a, $54
 	ld [wd09f], a
@@ -31,8 +30,7 @@
 	ld a, [$ffe0]
 	and a
 	ret z
-	ld hl, wd836
-	set 0, [hl]
+	SetEvent EVENT_SILPH_CO_10_UNLOCKED_DOOR
 	ret
 
 SilphCo10ScriptPointers: ; 5a180 (16:6180)
@@ -50,9 +48,9 @@
 
 SilphCo10TrainerHeaders: ; 5a192 (16:6192)
 SilphCo10TrainerHeader0: ; 5a192 (16:6192)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_10F_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd835 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_10F_TRAINER_0
 	dw SilphCo10BattleText1 ; TextBeforeBattle
 	dw SilphCo10AfterBattleText1 ; TextAfterBattle
 	dw SilphCo10EndBattleText1 ; TextEndBattle
@@ -59,9 +57,9 @@
 	dw SilphCo10EndBattleText1 ; TextEndBattle
 
 SilphCo10TrainerHeader1: ; 5a19e (16:619e)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_10F_TRAINER_1
 	db ($4 << 4) ; trainer's view range
-	dw wd835 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_10F_TRAINER_1
 	dw SilphCo10BattleText2 ; TextBeforeBattle
 	dw SilphCo10AfterBattleText2 ; TextAfterBattle
 	dw SilphCo10EndBattleText2 ; TextEndBattle
@@ -83,8 +81,7 @@
 
 SilphCo10Text3: ; 5a1bf (16:61bf)
 	TX_ASM
-	ld a, [wd838]
-	bit 7, a
+	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	ld hl, SilphCo10Text_5a1d8
 	jr nz, .asm_cf85f
 	ld hl, SilphCo10Text_5a1d3
--- a/scripts/silphco11.asm
+++ b/scripts/silphco11.asm
@@ -16,8 +16,7 @@
 	ld hl, DataTable_62134
 	call SilphCo11Script_62137
 	call SilphCo11Script_62163
-	ld a, [wd838]
-	bit 0, a
+	CheckEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR
 	ret nz
 	ld a, $20
 	ld [wd09f], a
@@ -67,8 +66,7 @@
 	ld a, [$ffe0]
 	and a
 	ret z
-	ld hl, wd838
-	set 0, [hl]
+	SetEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR
 	ret
 
 SilphCo11Script_6216d: ; 6216d (18:616d)
@@ -164,8 +162,7 @@
 	dw SilphCo11Script5
 
 SilphCo11Script0: ; 621db (18:61db)
-	ld a, [wd838]
-	bit 7, a
+	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	ret nz
 	ld hl, CoordsData_62211
 	call ArePlayerCoordsInArray
@@ -231,8 +228,7 @@
 	call UpdateSprites
 	call Delay3
 	call GBFadeInFromBlack
-	ld hl, wd838
-	set 7, [hl]
+	SetEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	xor a
 	ld [wJoyIgnore], a
 	jp SilphCo11Script_621c8
@@ -285,9 +281,9 @@
 
 SilphCo11TrainerHeaders: ; 622c3 (18:62c3)
 SilphCo11TrainerHeader0: ; 622c3 (18:62c3)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_11F_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd837 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_11F_TRAINER_0
 	dw SilphCo11BattleText1 ; TextBeforeBattle
 	dw SilphCo11AfterBattleText1 ; TextAfterBattle
 	dw SilphCo11EndBattleText1 ; TextEndBattle
@@ -294,9 +290,9 @@
 	dw SilphCo11EndBattleText1 ; TextEndBattle
 
 SilphCo11TrainerHeader1: ; 622cf (18:62cf)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_11F_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd837 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_11F_TRAINER_1
 	dw SilphCo11BattleText2 ; TextBeforeBattle
 	dw SilphCo11AfterBattleText2 ; TextAfterBattle
 	dw SilphCo11EndBattleText2 ; TextEndBattle
@@ -306,8 +302,7 @@
 
 SilphCo11Text1: ; 622dc (18:62dc)
 	TX_ASM
-	ld a, [wd838]
-	bit 5, a
+	CheckEvent EVENT_GOT_MASTER_BALL
 	jp nz, .asm_62308
 	ld hl, SilphCoPresidentText
 	call PrintText
@@ -316,8 +311,7 @@
 	jr nc, .BagFull
 	ld hl, ReceivedSilphCoMasterBallText
 	call PrintText
-	ld hl, wd838
-	set 5, [hl]
+	SetEvent EVENT_GOT_MASTER_BALL
 	jr .asm_6230e
 .BagFull
 	ld hl, SilphCoMasterBallNoRoomText
--- a/scripts/silphco2.asm
+++ b/scripts/silphco2.asm
@@ -16,8 +16,7 @@
 	ld hl, DataTable_59d3e
 	call SilphCo2Script_59d43
 	call SilphCo2Script_59d6f
-	ld a, [wd826]
-	bit 5, a
+	CheckEvent EVENT_SILPH_CO_2_UNLOCKED_DOOR1
 	jr nz, .asm_59d2e
 	push af
 	ld a, $54
@@ -26,7 +25,7 @@
 	predef ReplaceTileBlock
 	pop af
 .asm_59d2e
-	bit 6, a
+	CheckEventAfterBranchReuseA EVENT_SILPH_CO_2_UNLOCKED_DOOR2, EVENT_SILPH_CO_2_UNLOCKED_DOOR1
 	ret nz
 	ld a, $54
 	ld [wd09f], a
@@ -73,16 +72,16 @@
 	ret
 
 SilphCo2Script_59d6f: ; 59d6f (16:5d6f)
-	ld hl, wd826
+	EventFlagAddress hl, EVENT_SILPH_CO_2_UNLOCKED_DOOR1
 	ld a, [$ffe0]
 	and a
 	ret z
 	cp $1
-	jr nz, .asm_59d7d
-	set 5, [hl]
+	jr nz, .next
+	SetEventReuseHL EVENT_SILPH_CO_2_UNLOCKED_DOOR1
 	ret
-.asm_59d7d
-	set 6, [hl]
+.next
+	SetEventAfterBranchReuseHL EVENT_SILPH_CO_2_UNLOCKED_DOOR2, EVENT_SILPH_CO_2_UNLOCKED_DOOR1
 	ret
 
 SilphCo2ScriptPointers: ; 59d80 (16:5d80)
@@ -99,9 +98,9 @@
 
 SilphCo2TrainerHeaders: ; 59d90 (16:5d90)
 SilphCo2TrainerHeader0: ; 59d90 (16:5d90)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_2F_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd825 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_2F_TRAINER_0
 	dw SilphCo2BattleText1 ; TextBeforeBattle
 	dw SilphCo2AfterBattleText1 ; TextAfterBattle
 	dw SilphCo2EndBattleText1 ; TextEndBattle
@@ -108,9 +107,9 @@
 	dw SilphCo2EndBattleText1 ; TextEndBattle
 
 SilphCo2TrainerHeader1: ; 59d9c (16:5d9c)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_2F_TRAINER_1
 	db ($4 << 4) ; trainer's view range
-	dw wd825 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_2F_TRAINER_1
 	dw SilphCo2BattleText2 ; TextBeforeBattle
 	dw SilphCo2AfterBattleText2 ; TextAfterBattle
 	dw SilphCo2EndBattleText2 ; TextEndBattle
@@ -117,9 +116,9 @@
 	dw SilphCo2EndBattleText2 ; TextEndBattle
 
 SilphCo2TrainerHeader2: ; 59da8 (16:5da8)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_2F_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd825 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_2F_TRAINER_2
 	dw SilphCo2BattleText3 ; TextBeforeBattle
 	dw SilphCo2AfterBattleText3 ; TextAfterBattle
 	dw SilphCo2EndBattleText3 ; TextEndBattle
@@ -126,9 +125,9 @@
 	dw SilphCo2EndBattleText3 ; TextEndBattle
 
 SilphCo2TrainerHeader3: ; 59db4 (16:5db4)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_2F_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd825 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_2F_TRAINER_3
 	dw SilphCo2BattleText4 ; TextBeforeBattle
 	dw SilphCo2AfterBattleText4 ; TextAfterBattle
 	dw SilphCo2EndBattleText4 ; TextEndBattle
@@ -138,8 +137,7 @@
 
 SilphCo2Text1: ; 59dc1 (16:5dc1)
 	TX_ASM
-	ld a, [wd826]
-	bit 7, a
+	CheckEvent EVENT_GOT_TM36
 	jr nz, .asm_59de4
 	ld hl, SilphCo2Text_59ded
 	call PrintText
@@ -147,8 +145,7 @@
 	call GiveItem
 	ld hl, TM36NoRoomText
 	jr nc, .asm_59de7
-	ld hl, wd826
-	set 7, [hl]
+	SetEvent EVENT_GOT_TM36
 	ld hl, ReceivedTM36Text
 	jr .asm_59de7
 .asm_59de4
--- a/scripts/silphco3.asm
+++ b/scripts/silphco3.asm
@@ -16,8 +16,7 @@
 	ld hl, DataTable_59fa8
 	call SilphCo2Script_59d43
 	call SilphCo3Script_59fad
-	ld a, [wd828]
-	bit 0, a
+	CheckEvent EVENT_SILPH_CO_3_UNLOCKED_DOOR1
 	jr nz, .asm_59f98
 	push af
 	ld a, $5f
@@ -26,7 +25,7 @@
 	predef ReplaceTileBlock
 	pop af
 .asm_59f98
-	bit 1, a
+	CheckEventAfterBranchReuseA EVENT_SILPH_CO_3_UNLOCKED_DOOR2, EVENT_SILPH_CO_3_UNLOCKED_DOOR1
 	ret nz
 	ld a, $5f
 	ld [wd09f], a
@@ -37,16 +36,16 @@
 	db $04,$04,$04,$08,$FF
 
 SilphCo3Script_59fad: ; 59fad (16:5fad)
-	ld hl, wd828
+	EventFlagAddress hl, EVENT_SILPH_CO_3_UNLOCKED_DOOR1
 	ld a, [$ffe0]
 	and a
 	ret z
 	cp $1
-	jr nz, .asm_59fbb
-	set 0, [hl]
+	jr nz, .next
+	SetEventReuseHL EVENT_SILPH_CO_3_UNLOCKED_DOOR1
 	ret
-.asm_59fbb
-	set 1, [hl]
+.next
+	SetEventAfterBranchReuseHL EVENT_SILPH_CO_3_UNLOCKED_DOOR2, EVENT_SILPH_CO_3_UNLOCKED_DOOR1
 	ret
 
 SilphCo3ScriptPointers: ; 59fbe (16:5fbe)
@@ -62,9 +61,9 @@
 
 SilphCo3TrainerHeaders: ; 59fcc (16:5fcc)
 SilphCo3TrainerHeader0: ; 59fcc (16:5fcc)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_3F_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd827 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_3F_TRAINER_0
 	dw SilphCo3BattleText1 ; TextBeforeBattle
 	dw SilphCo3AfterBattleText1 ; TextAfterBattle
 	dw SilphCo3EndBattleText1 ; TextEndBattle
@@ -71,9 +70,9 @@
 	dw SilphCo3EndBattleText1 ; TextEndBattle
 
 SilphCo3TrainerHeader1: ; 59fd8 (16:5fd8)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_3F_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd827 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_3F_TRAINER_1
 	dw SilphCo3BattleText2 ; TextBeforeBattle
 	dw SilphCo3AfterBattleText2 ; TextAfterBattle
 	dw SilphCo3EndBattleText2 ; TextEndBattle
@@ -83,8 +82,7 @@
 
 SilphCo3Text1: ; 59fe5 (16:5fe5)
 	TX_ASM
-	ld a, [wd838]
-	bit 7, a
+	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	ld hl, SilphCo3Text_59ffe
 	jr nz, .asm_59fee
 	ld hl, SilphCo3Text_59ff9
--- a/scripts/silphco4.asm
+++ b/scripts/silphco4.asm
@@ -16,8 +16,7 @@
 	ld hl, SilphCo4Data19d58
 	call SilphCo4Script_19d5d
 	call SilphCo4Script_19d89
-	ld a, [wd82a]
-	bit 0, a
+	CheckEvent EVENT_SILPH_CO_4_UNLOCKED_DOOR1
 	jr nz, .asm_19d48
 	push af
 	ld a, $54
@@ -26,7 +25,7 @@
 	predef ReplaceTileBlock
 	pop af
 .asm_19d48
-	bit 1, a
+	CheckEventAfterBranchReuseA EVENT_SILPH_CO_4_UNLOCKED_DOOR2, EVENT_SILPH_CO_4_UNLOCKED_DOOR1
 	ret nz
 	ld a, $54
 	ld [wd09f], a
@@ -73,16 +72,16 @@
 	ret
 
 SilphCo4Script_19d89: ; 19d89 (6:5d89)
-	ld hl, wd82a
+	EventFlagAddress hl, EVENT_SILPH_CO_4_UNLOCKED_DOOR1
 	ld a, [$ffe0]
 	and a
 	ret z
 	cp $1
-	jr nz, .asm_19d97
-	set 0, [hl]
+	jr nz, .next
+	SetEventReuseHL EVENT_SILPH_CO_4_UNLOCKED_DOOR1
 	ret
-.asm_19d97
-	set 1, [hl]
+.next
+	SetEventAfterBranchReuseHL EVENT_SILPH_CO_4_UNLOCKED_DOOR2, EVENT_SILPH_CO_4_UNLOCKED_DOOR1
 	ret
 
 SilphCo4ScriptPointers: ; 19d9a (6:5d9a)
@@ -101,9 +100,9 @@
 
 SilphCo4TrainerHeaders: ; 19dae (6:5dae)
 SilphCo4TrainerHeader0: ; 19dae (6:5dae)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_4F_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd829 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_4F_TRAINER_0
 	dw SilphCo4BattleText2 ; TextBeforeBattle
 	dw SilphCo4AfterBattleText2 ; TextAfterBattle
 	dw SilphCo4EndBattleText2 ; TextEndBattle
@@ -110,9 +109,9 @@
 	dw SilphCo4EndBattleText2 ; TextEndBattle
 
 SilphCo4TrainerHeader2: ; 19dba (6:5dba)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_4F_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd829 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_4F_TRAINER_2
 	dw SilphCo4BattleText3 ; TextBeforeBattle
 	dw SilphCo4AfterBattleText3 ; TextAfterBattle
 	dw SilphCo4EndBattleText3 ; TextEndBattle
@@ -119,9 +118,9 @@
 	dw SilphCo4EndBattleText3 ; TextEndBattle
 
 SilphCo4TrainerHeader3: ; 19dc6 (6:5dc6)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_4F_TRAINER_3
 	db ($4 << 4) ; trainer's view range
-	dw wd829 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_4F_TRAINER_3
 	dw SilphCo4BattleText4 ; TextBeforeBattle
 	dw SilphCo4AfterBattleText4 ; TextAfterBattle
 	dw SilphCo4EndBattleText4 ; TextEndBattle
--- a/scripts/silphco5.asm
+++ b/scripts/silphco5.asm
@@ -16,8 +16,7 @@
 	ld hl, SilphCo5Coords
 	call SilphCo4Script_19d5d
 	call SilphCo5Script_19f9e
-	ld a, [wd82c]
-	bit 0, a
+	CheckEvent EVENT_SILPH_CO_5_UNLOCKED_DOOR1
 	jr nz, .asm_19f74
 	push af
 	ld a, $5f
@@ -26,7 +25,7 @@
 	predef ReplaceTileBlock
 	pop af
 .asm_19f74
-	bit 1, a
+	CheckEventAfterBranchReuseA EVENT_SILPH_CO_5_UNLOCKED_DOOR2, EVENT_SILPH_CO_5_UNLOCKED_DOOR1
 	jr nz, .asm_19f87
 	push af
 	ld a, $5f
@@ -35,7 +34,7 @@
 	predef ReplaceTileBlock
 	pop af
 .asm_19f87
-	bit 2, a
+	CheckEventAfterBranchReuseA EVENT_SILPH_CO_5_UNLOCKED_DOOR3, EVENT_SILPH_CO_5_UNLOCKED_DOOR2
 	ret nz
 	ld a, $5f
 	ld [wd09f], a
@@ -46,21 +45,21 @@
 	db $02, $03, $06, $03, $05, $07, $ff
 
 SilphCo5Script_19f9e: ; 19f9e (6:5f9e)
-	ld hl, wd82c
+	EventFlagAddress hl, EVENT_SILPH_CO_5_UNLOCKED_DOOR1
 	ld a, [$ffe0]
 	and a
 	ret z
 	cp $1
-	jr nz, .asm_19fac
-	set 0, [hl]
+	jr nz, .next1
+	SetEventReuseHL EVENT_SILPH_CO_5_UNLOCKED_DOOR1
 	ret
-.asm_19fac
+.next1
 	cp $2
-	jr nz, .asm_19fb3
-	set 1, [hl]
+	jr nz, .next2
+	SetEventAfterBranchReuseHL EVENT_SILPH_CO_5_UNLOCKED_DOOR2, EVENT_SILPH_CO_5_UNLOCKED_DOOR1
 	ret
-.asm_19fb3
-	set 2, [hl]
+.next2
+	SetEventAfterBranchReuseHL EVENT_SILPH_CO_5_UNLOCKED_DOOR3, EVENT_SILPH_CO_5_UNLOCKED_DOOR1
 	ret
 
 SilphCo5ScriptPointers: ; 19fb6 (6:5fb6)
@@ -83,9 +82,9 @@
 
 SilphCo5TrainerHeaders: ; 19fd2 (6:5fd2)
 Silphco5TrainerHeader0: ; 19fd2 (6:5fd2)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_5F_TRAINER_0
 	db ($1 << 4) ; trainer's view range
-	dw wd82b ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_5F_TRAINER_0
 	dw SilphCo5BattleText2 ; TextBeforeBattle
 	dw SilphCo5AfterBattleText2 ; TextAfterBattle
 	dw SilphCo5EndBattleText2 ; TextEndBattle
@@ -92,9 +91,9 @@
 	dw SilphCo5EndBattleText2 ; TextEndBattle
 
 Silphco5TrainerHeader2: ; 19fde (6:5fde)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_5F_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd82b ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_5F_TRAINER_2
 	dw SilphCo5BattleText3 ; TextBeforeBattle
 	dw SilphCo5AfterBattleText3 ; TextAfterBattle
 	dw SilphCo5EndBattleText3 ; TextEndBattle
@@ -101,9 +100,9 @@
 	dw SilphCo5EndBattleText3 ; TextEndBattle
 
 Silphco5TrainerHeader3: ; 19fea (6:5fea)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_5F_TRAINER_3
 	db ($4 << 4) ; trainer's view range
-	dw wd82b ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_5F_TRAINER_3
 	dw SilphCo5BattleText4 ; TextBeforeBattle
 	dw SilphCo5AfterBattleText4 ; TextAfterBattle
 	dw SilphCo5EndBattleText4 ; TextEndBattle
@@ -110,9 +109,9 @@
 	dw SilphCo5EndBattleText4 ; TextEndBattle
 
 Silphco5TrainerHeader4: ; 19ff6 (6:5ff6)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_5F_TRAINER_4
 	db ($3 << 4) ; trainer's view range
-	dw wd82b ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_5F_TRAINER_4
 	dw SilphCo5BattleText5 ; TextBeforeBattle
 	dw SilphCo5AfterBattleText5 ; TextAfterBattle
 	dw SilphCo5EndBattleText5 ; TextEndBattle
--- a/scripts/silphco6.asm
+++ b/scripts/silphco6.asm
@@ -16,8 +16,7 @@
 	ld hl, SilphCo6Coords1
 	call SilphCo4Script_19d5d
 	call SilphCo6Script_1a1e6
-	ld a, [wd82e]
-	bit 7, a
+	CheckEvent EVENT_SILPH_CO_6_UNLOCKED_DOOR
 	ret nz
 	ld a, $5f
 	ld [wd09f], a
@@ -32,8 +31,7 @@
 	ld a, [$ffe0]
 	and a
 	ret z
-	ld hl, wd82e
-	set 7, [hl]
+	SetEvent EVENT_SILPH_CO_6_UNLOCKED_DOOR
 	ret
 
 SilphCo6ScriptPointers: ; 1a1f0 (6:61f0)
@@ -55,9 +53,9 @@
 
 SilphCo6TrainerHeaders: ; 1a20a (6:620a)
 SilphCo6TrainerHeader0: ; 1a20a (6:620a)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_6F_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd82d ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_6F_TRAINER_0
 	dw SilphCo6BattleText2 ; TextBeforeBattle
 	dw SilphCo6AfterBattleText2 ; TextAfterBattle
 	dw SilphCo6EndBattleText2 ; TextEndBattle
@@ -64,9 +62,9 @@
 	dw SilphCo6EndBattleText2 ; TextEndBattle
 
 SilphCo6TrainerHeader2: ; 1a216 (6:6216)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_6F_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd82d ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_6F_TRAINER_2
 	dw SilphCo6BattleText3 ; TextBeforeBattle
 	dw SilphCo6AfterBattleText3 ; TextAfterBattle
 	dw SilphCo6EndBattleText3 ; TextEndBattle
@@ -73,9 +71,9 @@
 	dw SilphCo6EndBattleText3 ; TextEndBattle
 
 SilphCo6TrainerHeader3: ; 1a222 (6:6222)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_6F_TRAINER_3, 1
 	db ($2 << 4) ; trainer's view range
-	dw wd82d ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_6F_TRAINER_3, 1
 	dw SilphCo6BattleText4 ; TextBeforeBattle
 	dw SilphCo6AfterBattleText4 ; TextAfterBattle
 	dw SilphCo6EndBattleText4 ; TextEndBattle
@@ -84,8 +82,7 @@
 	db $ff
 
 SilphCo6Script_1a22f: ; 1a22f (6:622f)
-	ld a, [wd838]
-	bit 7, a
+	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	jr nz, .asm_1a238
 	jr .asm_1a23a
 .asm_1a238
--- a/scripts/silphco7.asm
+++ b/scripts/silphco7.asm
@@ -16,8 +16,7 @@
 	ld hl, DataTable_51bc1
 	call SilphCo7Text_51bc8
 	call SilphCo7Text_51bf4
-	ld a, [wd830]
-	bit 4, a
+	CheckEvent EVENT_SILPH_CO_7_UNLOCKED_DOOR1
 	jr nz, .asm_51b9e
 	push af
 	ld a, $54
@@ -26,7 +25,7 @@
 	predef ReplaceTileBlock
 	pop af
 .asm_51b9e
-	bit 5, a
+	CheckEventAfterBranchReuseA EVENT_SILPH_CO_7_UNLOCKED_DOOR2, EVENT_SILPH_CO_7_UNLOCKED_DOOR1
 	jr nz, .asm_51bb1
 	push af
 	ld a, $54
@@ -35,7 +34,7 @@
 	predef ReplaceTileBlock
 	pop af
 .asm_51bb1
-	bit 6, a
+	CheckEventAfterBranchReuseA EVENT_SILPH_CO_7_UNLOCKED_DOOR3, EVENT_SILPH_CO_7_UNLOCKED_DOOR2
 	ret nz
 	ld a, $54
 	ld [wd09f], a
@@ -82,21 +81,21 @@
 	ret
 
 SilphCo7Text_51bf4: ; 51bf4 (14:5bf4)
-	ld hl, wd830
+	EventFlagAddress hl, EVENT_SILPH_CO_7_UNLOCKED_DOOR1
 	ld a, [$ffe0]
 	and a
 	ret z
 	cp $1
-	jr nz, .asm_51c02
-	set 4, [hl]
+	jr nz, .next1
+	SetEventReuseHL EVENT_SILPH_CO_7_UNLOCKED_DOOR1
 	ret
-.asm_51c02
+.next1
 	cp $2
-	jr nz, .asm_51c09
-	set 5, [hl]
+	jr nz, .next2
+	SetEventAfterBranchReuseHL EVENT_SILPH_CO_7_UNLOCKED_DOOR2, EVENT_SILPH_CO_7_UNLOCKED_DOOR1
 	ret
-.asm_51c09
-	set 6, [hl]
+.next2
+	SetEventAfterBranchReuseHL EVENT_SILPH_CO_7_UNLOCKED_DOOR3, EVENT_SILPH_CO_7_UNLOCKED_DOOR1
 	ret
 
 SilphCo7Text_51c0c: ; 51c0c (14:5c0c)
@@ -117,8 +116,7 @@
 	dw SilphCo7Script5
 
 SilphCo7Script0: ; 51c23 (14:5c23)
-	ld a, [wd82f]
-	bit 0, a
+	CheckEvent EVENT_BEAT_SILPH_CO_RIVAL
 	jp nz, CheckFightingMapTrainers
 	ld hl, CoordsData_51c78
 	call ArePlayerCoordsInArray
@@ -207,8 +205,7 @@
 	jp z, SilphCo7Text_51c0c
 	ld a, $f0
 	ld [wJoyIgnore], a
-	ld hl, wd82f
-	set 0, [hl]
+	SetEvent EVENT_BEAT_SILPH_CO_RIVAL
 	ld a, PLAYER_DIR_DOWN
 	ld [wPlayerMovingDirection], a
 	ld a, $9
@@ -281,9 +278,9 @@
 
 SilphCo7TrainerHeaders: ; 51d5d (14:5d5d)
 SilphCo7TrainerHeader0: ; 51d5d (14:5d5d)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_7F_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd82f ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_7F_TRAINER_0
 	dw SilphCo7BattleText1 ; TextBeforeBattle
 	dw SilphCo7AfterBattleText1 ; TextAfterBattle
 	dw SilphCo7EndBattleText1 ; TextEndBattle
@@ -290,9 +287,9 @@
 	dw SilphCo7EndBattleText1 ; TextEndBattle
 
 SilphCo7TrainerHeader2: ; 51d69 (14:5d69)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_7F_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd82f ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_7F_TRAINER_2
 	dw SilphCo7BattleText2 ; TextBeforeBattle
 	dw SilphCo7AfterBattleText2 ; TextAfterBattle
 	dw SilphCo7EndBattleText2 ; TextEndBattle
@@ -299,9 +296,9 @@
 	dw SilphCo7EndBattleText2 ; TextEndBattle
 
 SilphCo7TrainerHeader3: ; 51d75 (14:5d75)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_7F_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd82f ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_7F_TRAINER_3
 	dw SilphCo7BattleText3 ; TextBeforeBattle
 	dw SilphCo7AfterBattleText3 ; TextAfterBattle
 	dw SilphCo7EndBattleText3 ; TextEndBattle
@@ -308,9 +305,9 @@
 	dw SilphCo7EndBattleText3 ; TextEndBattle
 
 SilphCo7TrainerHeader4: ; 51d81 (14:5d81)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_7F_TRAINER_4, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd82f ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_7F_TRAINER_4, 1
 	dw SilphCo7BattleText4 ; TextBeforeBattle
 	dw SilphCo7AfterBattleText4 ; TextAfterBattle
 	dw SilphCo7EndBattleText4 ; TextEndBattle
@@ -324,8 +321,7 @@
 	ld a, [wd72e]
 	bit 0, a ; got lapras?
 	jr z, .givelapras
-	ld a, [wd838]
-	bit 7, a ; saved silph?
+	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	jr nz, .savedsilph
 	ld hl, .LaprasGuyText
 	call PrintText
@@ -369,8 +365,7 @@
 
 SilphCo7Text2:
 	TX_ASM
-	ld a, [wd838]
-	bit 7, a ; saved silph?
+	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	jr nz, .savedsilph
 	ld hl, .rockettext
 	call PrintText
@@ -391,8 +386,7 @@
 
 SilphCo7Text3:
 	TX_ASM
-	ld a, [wd838]
-	bit 7, a ; saved silph?
+	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	jr nz, .savedsilph
 	ld hl, .rockettext
 	call PrintText
@@ -413,8 +407,7 @@
 
 SilphCo7Text4:
 	TX_ASM
-	ld a, [wd838]
-	bit 7, a ; saved silph?
+	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	jr nz, .savedsilph
 	ld hl, .rockettext
 	call PrintText
--- a/scripts/silphco8.asm
+++ b/scripts/silphco8.asm
@@ -16,8 +16,7 @@
 	ld hl, DataTable_5653e
 	call SilphCo8Script_56541
 	call SilphCo8Script_5656d
-	ld a, [wd832]
-	bit 0, a
+	CheckEvent EVENT_SILPH_CO_8_UNLOCKED_DOOR
 	ret nz
 	ld a, $5f
 	ld [wd09f], a
@@ -67,8 +66,7 @@
 	ld a, [$ffe0]
 	and a
 	ret z
-	ld hl, wd832
-	set 0, [hl]
+	SetEvent EVENT_SILPH_CO_8_UNLOCKED_DOOR
 	ret
 
 SilphCo8ScriptPointers: ; 56577 (15:6577)
@@ -84,9 +82,9 @@
 
 SilphCo8TrainerHeaders: ; 56585 (15:6585)
 SilphCo8TrainerHeader0: ; 56585 (15:6585)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_8F_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd831 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_8F_TRAINER_0
 	dw SilphCo8BattleText1 ; TextBeforeBattle
 	dw SilphCo8AfterBattleText1 ; TextAfterBattle
 	dw SilphCo8EndBattleText1 ; TextEndBattle
@@ -93,9 +91,9 @@
 	dw SilphCo8EndBattleText1 ; TextEndBattle
 
 SilphCo8TrainerHeader1: ; 56591 (15:6591)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_8F_TRAINER_1
 	db ($4 << 4) ; trainer's view range
-	dw wd831 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_8F_TRAINER_1
 	dw SilphCo8BattleText2 ; TextBeforeBattle
 	dw SilphCo8AfterBattleText2 ; TextAfterBattle
 	dw SilphCo8EndBattleText2 ; TextEndBattle
@@ -102,9 +100,9 @@
 	dw SilphCo8EndBattleText2 ; TextEndBattle
 
 SilphCo8TrainerHeader2: ; 5659d (15:659d)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_8F_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd831 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_8F_TRAINER_2
 	dw SilphCo8BattleText3 ; TextBeforeBattle
 	dw SilphCo8AfterBattleText3 ; TextAfterBattle
 	dw SilphCo8EndBattleText3 ; TextEndBattle
@@ -114,8 +112,7 @@
 
 SilphCo8Text1: ; 565aa (15:65aa)
 	TX_ASM
-	ld a, [wd838]
-	bit 7, a
+	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	ld hl, SilphCo8Text_565c3
 	jr nz, .asm_565b8
 	ld hl, SilphCo8Text_565be
--- a/scripts/silphco9.asm
+++ b/scripts/silphco9.asm
@@ -16,8 +16,7 @@
 	ld hl, DataTable_5d82e
 	call SilphCo9Script_5d837
 	call SilphCo9Script_5d863
-	ld a, [wd834]
-	bit 0, a
+	CheckEvent EVENT_SILPH_CO_9_UNLOCKED_DOOR1
 	jr nz, .asm_5d7f8
 	push af
 	ld a, $5f
@@ -26,7 +25,7 @@
 	predef ReplaceTileBlock
 	pop af
 .asm_5d7f8
-	bit 1, a
+	CheckEventAfterBranchReuseA EVENT_SILPH_CO_9_UNLOCKED_DOOR2, EVENT_SILPH_CO_9_UNLOCKED_DOOR1
 	jr nz, .asm_5d80b
 	push af
 	ld a, $54
@@ -35,7 +34,7 @@
 	predef ReplaceTileBlock
 	pop af
 .asm_5d80b
-	bit 2, a
+	CheckEventAfterBranchReuseA EVENT_SILPH_CO_9_UNLOCKED_DOOR3, EVENT_SILPH_CO_9_UNLOCKED_DOOR2
 	jr nz, .asm_5d81e
 	push af
 	ld a, $54
@@ -44,7 +43,7 @@
 	predef ReplaceTileBlock
 	pop af
 .asm_5d81e
-	bit 3, a
+	CheckEventAfterBranchReuseA EVENT_SILPH_CO_9_UNLOCKED_DOOR4, EVENT_SILPH_CO_9_UNLOCKED_DOOR3
 	ret nz
 	ld a, $5f
 	ld [wd09f], a
@@ -91,28 +90,28 @@
 	ret
 
 SilphCo9Script_5d863: ; 5d863 (17:5863)
-	ld hl, wd834
+	EventFlagAddress hl, EVENT_SILPH_CO_9_UNLOCKED_DOOR1
 	ld a, [$ffe0]
 	and a
 	ret z
 	cp $1
-	jr nz, .asm_5d871
-	set 0, [hl]
+	jr nz, .next1
+	SetEventReuseHL EVENT_SILPH_CO_9_UNLOCKED_DOOR1
 	ret
-.asm_5d871
+.next1
 	cp $2
-	jr nz, .asm_5d878
-	set 1, [hl]
+	jr nz, .next2
+	SetEventAfterBranchReuseHL EVENT_SILPH_CO_9_UNLOCKED_DOOR2, EVENT_SILPH_CO_9_UNLOCKED_DOOR1
 	ret
-.asm_5d878
+.next2
 	cp $3
-	jr nz, .asm_5d87f
-	set 2, [hl]
+	jr nz, .next3
+	SetEventAfterBranchReuseHL EVENT_SILPH_CO_9_UNLOCKED_DOOR3, EVENT_SILPH_CO_9_UNLOCKED_DOOR1
 	ret
-.asm_5d87f
+.next3
 	cp $4
 	ret nz
-	set 3, [hl]
+	SetEventAfterBranchReuseHL EVENT_SILPH_CO_9_UNLOCKED_DOOR4, EVENT_SILPH_CO_9_UNLOCKED_DOOR1
 	ret
 
 SilphCo9ScriptPointers: ; 5d885 (17:5885)
@@ -128,9 +127,9 @@
 
 SilphCo9TrainerHeaders: ; 5d893 (17:5893)
 SilphCo9TrainerHeader0: ; 5d893 (17:5893)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_9F_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd833 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_9F_TRAINER_0
 	dw SilphCo9BattleText1 ; TextBeforeBattle
 	dw SilphCo9AfterBattleText1 ; TextAfterBattle
 	dw SilphCo9EndBattleText1 ; TextEndBattle
@@ -137,9 +136,9 @@
 	dw SilphCo9EndBattleText1 ; TextEndBattle
 
 SilphCo9TrainerHeader1: ; 5d89f (17:589f)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_9F_TRAINER_1
 	db ($2 << 4) ; trainer's view range
-	dw wd833 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_9F_TRAINER_1
 	dw SilphCo9BattleText2 ; TextBeforeBattle
 	dw SilphCo9AfterBattleText2 ; TextAfterBattle
 	dw SilphCo9EndBattleText2 ; TextEndBattle
@@ -146,9 +145,9 @@
 	dw SilphCo9EndBattleText2 ; TextEndBattle
 
 SilphCo9TrainerHeader2: ; 5d8ab (17:58ab)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SILPH_CO_9F_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd833 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SILPH_CO_9F_TRAINER_2
 	dw SilphCo9BattleText3 ; TextBeforeBattle
 	dw SilphCo9AfterBattleText3 ; TextAfterBattle
 	dw SilphCo9EndBattleText3 ; TextEndBattle
@@ -158,8 +157,7 @@
 
 SilphCo9Text1: ; 5d8b8 (17:58b8)
 	TX_ASM
-	ld a, [wd838]
-	bit 7, a
+	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	jr nz, .asm_5d8dc
 	ld hl, SilphCo9Text_5d8e5
 	call PrintText
--- a/scripts/ssanne10.asm
+++ b/scripts/ssanne10.asm
@@ -27,9 +27,9 @@
 
 SSAnne10TrainerHeaders: ; 61d84 (18:5d84)
 SSAnne10TrainerHeader0: ; 61d84 (18:5d84)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_10_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd809 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_10_TRAINER_0
 	dw SSAnne10BattleText1 ; TextBeforeBattle
 	dw SSAnne10AfterBattleText1 ; TextAfterBattle
 	dw SSAnne10EndBattleText1 ; TextEndBattle
@@ -36,9 +36,9 @@
 	dw SSAnne10EndBattleText1 ; TextEndBattle
 
 SSAnne10TrainerHeader1: ; 61d90 (18:5d90)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_10_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd809 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_10_TRAINER_1
 	dw SSAnne10BattleText2 ; TextBeforeBattle
 	dw SSAnne10AfterBattleText2 ; TextAfterBattle
 	dw SSAnne10EndBattleText2 ; TextEndBattle
@@ -45,9 +45,9 @@
 	dw SSAnne10EndBattleText2 ; TextEndBattle
 
 SSAnne10TrainerHeader2: ; 61d9c (18:5d9c)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_10_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd809 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_10_TRAINER_2
 	dw SSAnne10BattleText3 ; TextBeforeBattle
 	dw SSAnne10AfterBattleText3 ; TextAfterBattle
 	dw SSAnne10EndBattleText3 ; TextEndBattle
@@ -54,9 +54,9 @@
 	dw SSAnne10EndBattleText3 ; TextEndBattle
 
 SSAnne10TrainerHeader3: ; 61da8 (18:5da8)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_10_TRAINER_3
 	db ($2 << 4) ; trainer's view range
-	dw wd809 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_10_TRAINER_3
 	dw SSAnne10BattleText4 ; TextBeforeBattle
 	dw SSAnne10AfterBattleText4 ; TextAfterBattle
 	dw SSAnne10EndBattleText4 ; TextEndBattle
@@ -63,9 +63,9 @@
 	dw SSAnne10EndBattleText4 ; TextEndBattle
 
 SSAnne10TrainerHeader4: ; 61db4 (18:5db4)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_10_TRAINER_4
 	db ($2 << 4) ; trainer's view range
-	dw wd809 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_10_TRAINER_4
 	dw SSAnne10BattleText5 ; TextBeforeBattle
 	dw SSAnne10AfterBattleText5 ; TextAfterBattle
 	dw SSAnne10EndBattleText5 ; TextEndBattle
@@ -72,9 +72,9 @@
 	dw SSAnne10EndBattleText5 ; TextEndBattle
 
 SSAnne10TrainerHeader5: ; 61dc0 (18:5dc0)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_10_TRAINER_5
 	db ($3 << 4) ; trainer's view range
-	dw wd809 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_10_TRAINER_5
 	dw SSAnne10BattleText6 ; TextBeforeBattle
 	dw SSAnne10AfterBattleText6 ; TextAfterBattle
 	dw SSAnne10EndBattleText6 ; TextEndBattle
--- a/scripts/ssanne5.asm
+++ b/scripts/ssanne5.asm
@@ -21,9 +21,9 @@
 
 SSAnne5TrainerHeaders: ; 616d1 (18:56d1)
 SSAnne5TrainerHeader0: ; 616d1 (18:56d1)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_5_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd7ff ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_5_TRAINER_0
 	dw SSAnne5BattleText1 ; TextBeforeBattle
 	dw SSAnne5AfterBattleText1 ; TextAfterBattle
 	dw SSAnne5EndBattleText1 ; TextEndBattle
@@ -30,9 +30,9 @@
 	dw SSAnne5EndBattleText1 ; TextEndBattle
 
 SSAnne5TrainerHeader1: ; 616dd (18:56dd)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_5_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd7ff ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_5_TRAINER_1
 	dw SSAnne5BattleText2 ; TextBeforeBattle
 	dw SSAnne5AfterBattleText2 ; TextAfterBattle
 	dw SSAnne5EndBattleText2 ; TextEndBattle
--- a/scripts/ssanne7.asm
+++ b/scripts/ssanne7.asm
@@ -3,8 +3,7 @@
 	jp EnableAutoTextBoxDrawing
 
 SSAnne7Script_6189b: ; 6189b (18:589b)
-	ld a, [wd803]
-	bit 1, a
+	CheckEvent EVENT_RUBBED_CAPTAINS_BACK
 	ret nz
 	ld hl, wd72d
 	set 5, [hl]
@@ -17,8 +16,7 @@
 
 SSAnne7Text1: ; 618ad (18:58ad)
 	TX_ASM
-	ld a, [wd803]
-	bit 0, a
+	CheckEvent EVENT_GOT_HM01
 	jr nz, .asm_797c4
 	ld hl, SSAnne7RubText
 	call PrintText
@@ -29,8 +27,7 @@
 	jr nc, .BagFull
 	ld hl, ReceivedHM01Text
 	call PrintText
-	ld hl, wd803
-	set 0, [hl]
+	SetEvent EVENT_GOT_HM01
 	jr .asm_0faf5
 .BagFull
 	ld hl, HM01NoRoomText
@@ -65,8 +62,7 @@
 	cp MUSIC_PKMN_HEALED
 	jr z, .asm_61910
 	call PlayDefaultMusic
-	ld hl, wd803
-	set 1, [hl]
+	SetEvent EVENT_RUBBED_CAPTAINS_BACK
 	ld hl, wd72d
 	res 5, [hl]
 	jp TextScriptEnd
--- a/scripts/ssanne8.asm
+++ b/scripts/ssanne8.asm
@@ -27,9 +27,9 @@
 
 SSAnne8TrainerHeaders: ; 619a5 (18:59a5)
 SSAnne8TrainerHeader0: ; 619a5 (18:59a5)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_8_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd805 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_8_TRAINER_0
 	dw SSAnne8BattleText1 ; TextBeforeBattle
 	dw SSAnne8AfterBattleText1 ; TextAfterBattle
 	dw SSAnne8EndBattleText1 ; TextEndBattle
@@ -36,9 +36,9 @@
 	dw SSAnne8EndBattleText1 ; TextEndBattle
 
 SSAnne8TrainerHeader1: ; 619b1 (18:59b1)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_8_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd805 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_8_TRAINER_1
 	dw SSAnne8BattleText2 ; TextBeforeBattle
 	dw SSAnne8AfterBattleText2 ; TextAfterBattle
 	dw SSAnne8EndBattleText2 ; TextEndBattle
@@ -45,9 +45,9 @@
 	dw SSAnne8EndBattleText2 ; TextEndBattle
 
 SSAnne8TrainerHeader2: ; 619bd (18:59bd)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_8_TRAINER_2
 	db ($2 << 4) ; trainer's view range
-	dw wd805 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_8_TRAINER_2
 	dw SSAnne8BattleText3 ; TextBeforeBattle
 	dw SSAnne8AfterBattleText3 ; TextAfterBattle
 	dw SSAnne8EndBattleText3 ; TextEndBattle
@@ -54,9 +54,9 @@
 	dw SSAnne8EndBattleText3 ; TextEndBattle
 
 SSAnne8TrainerHeader3: ; 619c9 (18:59c9)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_8_TRAINER_3
 	db ($2 << 4) ; trainer's view range
-	dw wd805 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_8_TRAINER_3
 	dw SSAnne8BattleText4 ; TextBeforeBattle
 	dw SSAnne8AfterBattleText4 ; TextAfterBattle
 	dw SSAnne8EndBattleText4 ; TextEndBattle
--- a/scripts/ssanne9.asm
+++ b/scripts/ssanne9.asm
@@ -32,9 +32,9 @@
 
 SSAnne9TrainerHeaders: ; 61b84 (18:5b84)
 SSAnne9TrainerHeader0: ; 61b84 (18:5b84)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_9_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd807 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_9_TRAINER_0
 	dw SSAnne9BattleText1 ; TextBeforeBattle
 	dw SSAnne9AfterBattleText1 ; TextAfterBattle
 	dw SSAnne9EndBattleText1 ; TextEndBattle
@@ -41,9 +41,9 @@
 	dw SSAnne9EndBattleText1 ; TextEndBattle
 
 SSAnne9TrainerHeader1: ; 61b90 (18:5b90)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_9_TRAINER_1
 	db ($3 << 4) ; trainer's view range
-	dw wd807 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_9_TRAINER_1
 	dw SSAnne9BattleText2 ; TextBeforeBattle
 	dw SSAnne9AfterBattleText2 ; TextAfterBattle
 	dw SSAnne9EndBattleText2 ; TextEndBattle
@@ -50,9 +50,9 @@
 	dw SSAnne9EndBattleText2 ; TextEndBattle
 
 SSAnne9TrainerHeader2: ; 61b9c (18:5b9c)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_9_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd807 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_9_TRAINER_2
 	dw SSAnne9BattleText3 ; TextBeforeBattle
 	dw SSAnne9AfterBattleText3 ; TextAfterBattle
 	dw SSAnne9EndBattleText3 ; TextEndBattle
@@ -59,9 +59,9 @@
 	dw SSAnne9EndBattleText3 ; TextEndBattle
 
 SSAnne9TrainerHeader3: ; 61ba8 (18:5ba8)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_SS_ANNE_9_TRAINER_3
 	db ($2 << 4) ; trainer's view range
-	dw wd807 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_SS_ANNE_9_TRAINER_3
 	dw SSAnne9BattleText4 ; TextBeforeBattle
 	dw SSAnne9AfterBattleText4 ; TextAfterBattle
 	dw SSAnne9EndBattleText4 ; TextEndBattle
--- a/scripts/unknowndungeon3.asm
+++ b/scripts/unknowndungeon3.asm
@@ -19,9 +19,9 @@
 
 UnknownDungeon3TrainerHeaders: ; 45f0f (11:5f0f)
 UnknownDungeon3TrainerHeader0: ; 45f0f (11:5f0f)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_UNKNOWN_DUNGEON_3_TRAINER_0
 	db ($0 << 4) ; trainer's view range
-	dw wd85f ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_UNKNOWN_DUNGEON_3_TRAINER_0
 	dw UnknownDungeon3MewtwoText ; TextBeforeBattle
 	dw UnknownDungeon3MewtwoText ; TextAfterBattle
 	dw UnknownDungeon3MewtwoText ; TextEndBattle
--- a/scripts/vermilioncity.asm
+++ b/scripts/vermilioncity.asm
@@ -21,11 +21,10 @@
 	ret
 
 VermilionCityScript_197cb: ; 197cb (6:57cb)
-	ld hl, wd803
-	bit 2, [hl]
+	CheckEventHL EVENT_SS_ANNE_LEFT
 	ret z
-	bit 3, [hl]
-	set 3, [hl]
+	CheckEventReuseHL EVENT_WALKED_PAST_GUARD_AFTER_SS_ANNE_LEFT
+	SetEventReuseHL EVENT_WALKED_PAST_GUARD_AFTER_SS_ANNE_LEFT
 	ret nz
 	ld a, $2
 	ld [W_VERMILIONCITYCURSCRIPT], a
@@ -51,8 +50,7 @@
 	ld a, $3
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld a, [wd803]
-	bit 2, a
+	CheckEvent EVENT_SS_ANNE_LEFT
 	jr nz, .asm_19810
 	ld b, S_S__TICKET
 	predef IsItemInBag_
@@ -136,8 +134,7 @@
 
 VermilionCityText2: ; 1988e (6:588e)
 	TX_ASM
-	ld a, [wd803]
-	bit 2, a
+	CheckEvent EVENT_SS_ANNE_LEFT
 	jr nz, .asm_1989e
 	ld hl, VermilionCityText_198a7
 	call PrintText
@@ -158,8 +155,7 @@
 
 VermilionCityText3: ; 198b1 (6:58b1)
 	TX_ASM
-	ld a, [wd803]
-	bit 2, a
+	CheckEvent EVENT_SS_ANNE_LEFT
 	jr nz, .asm_198f6
 	ld a, [wSpriteStateData1 + 9]
 	cp SPRITE_FACING_RIGHT
--- a/scripts/vermiliondock.asm
+++ b/scripts/vermiliondock.asm
@@ -1,21 +1,20 @@
 VermilionDockScript: ; 1db52 (7:5b52)
 	call EnableAutoTextBoxDrawing
-	ld hl, wd803
-	bit 4, [hl]
+	CheckEventHL EVENT_STARTED_WALKING_OUT_OF_DOCK
 	jr nz, .asm_1db8d
-	bit 0, [hl]
+	CheckEventReuseHL EVENT_GOT_HM01
 	ret z
 	ld a, [wDestinationWarpID]
 	cp $1
 	ret nz
-	bit 2, [hl]
+	CheckEventReuseHL EVENT_SS_ANNE_LEFT
 	jp z, VermilionDock_1db9b
-	set 4, [hl]
+	SetEventReuseHL EVENT_STARTED_WALKING_OUT_OF_DOCK
 	call Delay3
 	ld hl, wd730
 	set 7, [hl]
 	ld hl, wSimulatedJoypadStatesEnd
-	ld a, $40
+	ld a, D_UP
 	ld [hli], a
 	ld [hli], a
 	ld [hl], a
@@ -28,17 +27,17 @@
 	ld [wJoyIgnore], a
 	ret
 .asm_1db8d
-	bit 5, [hl]
+	CheckEventAfterBranchReuseHL EVENT_WALKED_OUT_OF_DOCK, EVENT_STARTED_WALKING_OUT_OF_DOCK
 	ret nz
 	ld a, [wSimulatedJoypadStatesIndex]
 	and a
 	ret nz
 	ld [wJoyIgnore], a
-	set 5, [hl]
+	SetEventReuseHL EVENT_WALKED_OUT_OF_DOCK
 	ret
 
 VermilionDock_1db9b: ; 1db9b (7:5b9b)
-	set 2, [hl]
+	SetEventForceReuseHL EVENT_SS_ANNE_LEFT
 	ld a, $ff
 	ld [wJoyIgnore], a
 	ld [wc0ee], a
--- a/scripts/vermiliongym.asm
+++ b/scripts/vermiliongym.asm
@@ -28,8 +28,7 @@
 	db "LT.SURGE@"
 
 VermilionGymScript_5ca6d: ; 5ca6d (17:4a6d)
-	ld a, [wd773]
-	bit 0, a
+	CheckEvent EVENT_2ND_LOCK_OPENED
 	jr nz, .asm_5ca78
 	ld a, $24
 	jr .asm_5ca7f
@@ -66,8 +65,7 @@
 	ld a, $6
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd773
-	set 7, [hl]
+	SetEvent EVENT_BEAT_LT_SURGE
 	ld bc, (TM_24 << 8) | 1
 	call GiveItem
 	jr nc, .BagFull
@@ -74,8 +72,7 @@
 	ld a, $7
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd773
-	set 6, [hl]
+	SetEvent EVENT_GOT_TM24
 	jr .asm_5cad3
 .BagFull
 	ld a, $8
@@ -88,9 +85,7 @@
 	set 2, [hl]
 
 	; deactivate gym trainers
-	ld a, [wd773]
-	or %00011100
-	ld [wd773], a
+	SetEventRange EVENT_BEAT_VERMILION_GYM_TRAINER_0, EVENT_BEAT_VERMILION_GYM_TRAINER_2
 
 	jp VermilionGymScript_5ca8a
 
@@ -106,9 +101,9 @@
 
 VermilionGymTrainerHeaders: ; 5caf8 (17:4af8)
 VermilionGymTrainerHeader0: ; 5caf8 (17:4af8)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VERMILION_GYM_TRAINER_0
 	db ($3 << 4) ; trainer's view range
-	dw wd773 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VERMILION_GYM_TRAINER_0
 	dw VermilionGymBattleText1 ; TextBeforeBattle
 	dw VermilionGymAfterBattleText1 ; TextAfterBattle
 	dw VermilionGymEndBattleText1 ; TextEndBattle
@@ -115,9 +110,9 @@
 	dw VermilionGymEndBattleText1 ; TextEndBattle
 
 VermilionGymTrainerHeader1: ; 5cb04 (17:4b04)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VERMILION_GYM_TRAINER_1
 	db ($2 << 4) ; trainer's view range
-	dw wd773 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VERMILION_GYM_TRAINER_1
 	dw VermilionGymBattleText2 ; TextBeforeBattle
 	dw VermilionGymAfterBattleText2 ; TextAfterBattle
 	dw VermilionGymEndBattleText2 ; TextEndBattle
@@ -124,9 +119,9 @@
 	dw VermilionGymEndBattleText2 ; TextEndBattle
 
 VermilionGymTrainerHeader2: ; 5cb10 (17:4b10)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VERMILION_GYM_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd773 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VERMILION_GYM_TRAINER_2
 	dw VermilionGymBattleText3 ; TextBeforeBattle
 	dw VermilionGymAfterBattleText3 ; TextAfterBattle
 	dw VermilionGymEndBattleText3 ; TextEndBattle
@@ -136,10 +131,9 @@
 
 VermilionGymText1: ; 5cb1d (17:4b1d)
 	TX_ASM
-	ld a, [wd773]
-	bit 7, a
+	CheckEvent EVENT_BEAT_LT_SURGE
 	jr z, .asm_5cb39
-	bit 6, a
+	CheckEventReuseA EVENT_GOT_TM24
 	jr nz, .asm_5cb31
 	call z, VermilionGymScript_5caaa
 	call DisableWaitingAfterTextDisplay
--- a/scripts/victoryroad1.asm
+++ b/scripts/victoryroad1.asm
@@ -11,8 +11,7 @@
 	ld [W_VICTORYROAD1CURSCRIPT], a
 	ret
 .next
-	ld a, [wd869]
-	bit 7, a
+	CheckEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH
 	ret z
 	ld a, $1d
 	ld [wd09f], a
@@ -25,8 +24,7 @@
 	dw EndTrainerBattle
 
 VictoryRoad1Script0: ; 5da40 (17:5a40)
-	ld a, [wd869]
-	bit 7, a
+	CheckEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH
 	jp nz, CheckFightingMapTrainers
 	ld hl, CoordsData_5da5c
 	call CheckBoulderCoords
@@ -33,8 +31,7 @@
 	jp nc, CheckFightingMapTrainers
 	ld hl, wd126
 	set 5, [hl]
-	ld hl, wd869
-	set 7, [hl]
+	SetEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH
 	ret
 
 CoordsData_5da5c: ; 5da5c (17:5a5c)
@@ -51,9 +48,9 @@
 
 VictoryRoad1TrainerHeaders: ; 5da6d (17:5a6d)
 VictoryRoad1TrainerHeader0: ; 5da6d (17:5a6d)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VICTORY_ROAD_1_TRAINER_0
 	db ($2 << 4) ; trainer's view range
-	dw wd869 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VICTORY_ROAD_1_TRAINER_0
 	dw VictoryRoad1BattleText1 ; TextBeforeBattle
 	dw VictoryRoad1AfterBattleText1 ; TextAfterBattle
 	dw VictoryRoad1EndBattleText1 ; TextEndBattle
@@ -60,9 +57,9 @@
 	dw VictoryRoad1EndBattleText1 ; TextEndBattle
 
 VictoryRoad1TrainerHeader1: ; 5da79 (17:5a79)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VICTORY_ROAD_1_TRAINER_1
 	db ($2 << 4) ; trainer's view range
-	dw wd869 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VICTORY_ROAD_1_TRAINER_1
 	dw VictoryRoad1BattleText2 ; TextBeforeBattle
 	dw VictoryRoad1AfterBattleText2 ; TextAfterBattle
 	dw VictoryRoad1EndBattleText2 ; TextEndBattle
--- a/scripts/victoryroad2.asm
+++ b/scripts/victoryroad2.asm
@@ -16,12 +16,10 @@
 	ret
 
 VictoryRoad2Script_517c4: ; 517c4 (14:57c4)
-	ld hl, wd869
-	res 7, [hl]
+	ResetEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH
 
 VictoryRoad2Script_517c9: ; 517c9 (14:57c9)
-	ld a, [wd7ee]
-	bit 0, a
+	CheckEvent EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1
 	jr z, .asm_517da
 	push af
 	ld a, $15
@@ -48,17 +46,17 @@
 	ld hl, CoordsData_51816
 	call CheckBoulderCoords
 	jp nc, CheckFightingMapTrainers
-	ld hl, wd7ee
+	EventFlagAddress hl, EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1
 	ld a, [wCoordIndex]
 	cp $2
 	jr z, .asm_5180b
-	bit 0, [hl]
-	set 0, [hl]
+	CheckEventReuseHL EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1
+	SetEventReuseHL EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1
 	ret nz
 	jr .asm_51810
 .asm_5180b
-	bit 7, [hl]
-	set 7, [hl]
+	CheckEventAfterBranchReuseHL EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH2, EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1
+	SetEventReuseHL EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH2
 	ret nz
 .asm_51810
 	ld hl, wd126
@@ -87,9 +85,9 @@
 
 VictoryRoad2TrainerHeaders: ; 51835 (14:5835)
 VictoryRoad2TrainerHeader0: ; 51835 (14:5835)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VICTORY_ROAD_2_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd7ee ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VICTORY_ROAD_2_TRAINER_0
 	dw VictoryRoad2BattleText1 ; TextBeforeBattle
 	dw VictoryRoad2AfterBattleText1 ; TextAfterBattle
 	dw VictoryRoad2EndBattleText1 ; TextEndBattle
@@ -96,9 +94,9 @@
 	dw VictoryRoad2EndBattleText1 ; TextEndBattle
 
 VictoryRoad2TrainerHeader2: ; 51841 (14:5841)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VICTORY_ROAD_2_TRAINER_2
 	db ($3 << 4) ; trainer's view range
-	dw wd7ee ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VICTORY_ROAD_2_TRAINER_2
 	dw VictoryRoad2BattleText2 ; TextBeforeBattle
 	dw VictoryRoad2AfterBattleText2 ; TextAfterBattle
 	dw VictoryRoad2EndBattleText2 ; TextEndBattle
@@ -105,9 +103,9 @@
 	dw VictoryRoad2EndBattleText2 ; TextEndBattle
 
 VictoryRoad2TrainerHeader3: ; 5184d (14:584d)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VICTORY_ROAD_2_TRAINER_3
 	db ($3 << 4) ; trainer's view range
-	dw wd7ee ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VICTORY_ROAD_2_TRAINER_3
 	dw VictoryRoad2BattleText3 ; TextBeforeBattle
 	dw VictoryRoad2AfterBattleText3 ; TextAfterBattle
 	dw VictoryRoad2EndBattleText3 ; TextEndBattle
@@ -114,9 +112,9 @@
 	dw VictoryRoad2EndBattleText3 ; TextEndBattle
 
 VictoryRoad2TrainerHeader4: ; 51859 (14:5859)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VICTORY_ROAD_2_TRAINER_4
 	db ($1 << 4) ; trainer's view range
-	dw wd7ee ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VICTORY_ROAD_2_TRAINER_4
 	dw VictoryRoad2BattleText4 ; TextBeforeBattle
 	dw VictoryRoad2AfterBattleText4 ; TextAfterBattle
 	dw VictoryRoad2EndBattleText4 ; TextEndBattle
@@ -123,9 +121,9 @@
 	dw VictoryRoad2EndBattleText4 ; TextEndBattle
 
 VictoryRoad2TrainerHeader5: ; 51865 (14:5865)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VICTORY_ROAD_2_TRAINER_5
 	db ($3 << 4) ; trainer's view range
-	dw wd7ee ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VICTORY_ROAD_2_TRAINER_5
 	dw VictoryRoad2BattleText5 ; TextBeforeBattle
 	dw VictoryRoad2AfterBattleText5 ; TextAfterBattle
 	dw VictoryRoad2EndBattleText5 ; TextEndBattle
@@ -132,9 +130,9 @@
 	dw VictoryRoad2EndBattleText5 ; TextEndBattle
 
 VictoryRoad2TrainerHeader6: ; 51871 (14:5871)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VICTORY_ROAD_2_TRAINER_6
 	db ($0 << 4) ; trainer's view range
-	dw wd7ee ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VICTORY_ROAD_2_TRAINER_6
 	dw VictoryRoad2BattleText6 ; TextBeforeBattle
 	dw VictoryRoad2BattleText6 ; TextAfterBattle
 	dw VictoryRoad2BattleText6 ; TextEndBattle
--- a/scripts/victoryroad3.asm
+++ b/scripts/victoryroad3.asm
@@ -13,8 +13,7 @@
 	bit 5, [hl]
 	res 5, [hl]
 	ret z
-	ld hl, wd813
-	bit 0, [hl]
+	CheckEventHL EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH1
 	ret z
 	ld a, $1d
 	ld [wd09f], a
@@ -39,13 +38,10 @@
 	jr nz, .asm_449dc
 	ld hl, wd126
 	set 5, [hl]
-	ld hl, wd813
-	set 0, [hl]
+	SetEvent EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH1
 	ret
 .asm_449dc
-	ld hl, wd813
-	bit 6, [hl]
-	set 6, [hl]
+	CheckAndSetEvent EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH2
 	jr nz, .asm_449fe
 	ld a, HS_VICTORY_ROAD_3_BOULDER
 	ld [wcc4d], a
@@ -92,9 +88,9 @@
 
 VictoryRoad3TrainerHeaders: ; 44a38 (11:4a38)
 VictoryRoad3TrainerHeader0: ; 44a38 (11:4a38)
-	db $1 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VICTORY_ROAD_3_TRAINER_0
 	db ($1 << 4) ; trainer's view range
-	dw wd813 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VICTORY_ROAD_3_TRAINER_0
 	dw VictoryRoad3BattleText2 ; TextBeforeBattle
 	dw VictoryRoad3AfterBattleText2 ; TextAfterBattle
 	dw VictoryRoad3EndBattleText2 ; TextEndBattle
@@ -101,9 +97,9 @@
 	dw VictoryRoad3EndBattleText2 ; TextEndBattle
 
 VictoryRoad3TrainerHeader2: ; 44a44 (11:4a44)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VICTORY_ROAD_3_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd813 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VICTORY_ROAD_3_TRAINER_2
 	dw VictoryRoad3BattleText3 ; TextBeforeBattle
 	dw VictoryRoad3AfterBattleText3 ; TextAfterBattle
 	dw VictoryRoad3EndBattleText3 ; TextEndBattle
@@ -110,9 +106,9 @@
 	dw VictoryRoad3EndBattleText3 ; TextEndBattle
 
 VictoryRoad3TrainerHeader3: ; 44a50 (11:4a50)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VICTORY_ROAD_3_TRAINER_3
 	db ($4 << 4) ; trainer's view range
-	dw wd813 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VICTORY_ROAD_3_TRAINER_3
 	dw VictoryRoad3BattleText4 ; TextBeforeBattle
 	dw VictoryRoad3AfterBattleText4 ; TextAfterBattle
 	dw VictoryRoad3EndBattleText4 ; TextEndBattle
@@ -119,9 +115,9 @@
 	dw VictoryRoad3EndBattleText4 ; TextEndBattle
 
 VictoryRoad3TrainerHeader4: ; 44a5c (11:4a5c)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VICTORY_ROAD_3_TRAINER_4
 	db ($4 << 4) ; trainer's view range
-	dw wd813 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VICTORY_ROAD_3_TRAINER_4
 	dw VictoryRoad3BattleText5 ; TextBeforeBattle
 	dw VictoryRoad3AfterBattleText5 ; TextAfterBattle
 	dw VictoryRoad3EndBattleText5 ; TextEndBattle
--- a/scripts/viridiancity.asm
+++ b/scripts/viridiancity.asm
@@ -15,14 +15,12 @@
 	jp ViridianCityScript_1903d
 
 ViridianCityScript_1900b: ; 1900b (6:500b)
-	ld a, [wd74c]
-	bit 0, a
+	CheckEvent EVENT_VIRIDIAN_GYM_OPEN
 	ret nz
 	ld a, [W_OBTAINEDBADGES]
 	cp %01111111
 	jr nz, .asm_1901e
-	ld hl, wd74c
-	set 0, [hl]
+	SetEvent EVENT_VIRIDIAN_GYM_OPEN
 	ret
 .asm_1901e
 	ld a, [W_YCOORD]
@@ -42,8 +40,7 @@
 	ret
 
 ViridianCityScript_1903d: ; 1903d (6:503d)
-	ld a, [wd74b]
-	bit 5, a
+	CheckEvent EVENT_GOT_POKEDEX
 	ret nz
 	ld a, [W_YCOORD]
 	cp $9
@@ -154,8 +151,7 @@
 	cp %01111111
 	ld hl, ViridianCityText_19127
 	jr z, .asm_ae9fe
-	ld a, [wd751]
-	bit 1, a
+	CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
 	jr nz, .asm_ae9fe
 	ld hl, ViridianCityText_19122
 .asm_ae9fe
@@ -201,8 +197,7 @@
 
 ViridianCityText4: ; 1915c (6:515c)
 	TX_ASM
-	ld a, [wd74b]
-	bit 5, a
+	CheckEvent EVENT_GOT_POKEDEX
 	jr nz, .asm_83894
 	ld hl, ViridianCityText_19175
 	call PrintText
@@ -236,8 +231,7 @@
 
 ViridianCityText6: ; 19196 (6:5196)
 	TX_ASM
-	ld a, [wd74c]
-	bit 1, a
+	CheckEvent EVENT_GOT_TM42
 	jr nz, .asm_4e5a0
 	ld hl, ViridianCityText_191ca
 	call PrintText
@@ -246,8 +240,7 @@
 	jr nc, .BagFull
 	ld hl, ReceivedTM42Text
 	call PrintText
-	ld hl, wd74c
-	set 1, [hl]
+	SetEvent EVENT_GOT_TM42
 	jr .asm_3c73c
 .BagFull
 	ld hl, TM42NoRoomText
--- a/scripts/viridianforest.asm
+++ b/scripts/viridianforest.asm
@@ -30,9 +30,9 @@
 
 ViridianForestTrainerHeaders: ; 61142 (18:5142)
 ViridianForestTrainerHeader0: ; 61142 (18:5142)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd7f3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_0
 	dw ViridianForestBattleText1 ; TextBeforeBattle
 	dw ViridianForestAfterBattleText1 ; TextAfterBattle
 	dw ViridianForestEndBattleText1 ; TextEndBattle
@@ -39,9 +39,9 @@
 	dw ViridianForestEndBattleText1 ; TextEndBattle
 
 ViridianForestTrainerHeader1: ; 6114e (18:514e)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_1
 	db ($4 << 4) ; trainer's view range
-	dw wd7f3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_1
 	dw ViridianForestBattleText2 ; TextBeforeBattle
 	dw ViridianForestAfterBattleText2 ; TextAfterBattle
 	dw ViridianForestEndBattleText2 ; TextEndBattle
@@ -48,9 +48,9 @@
 	dw ViridianForestEndBattleText2 ; TextEndBattle
 
 ViridianForestTrainerHeader2: ; 6115a (18:515a)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_2
 	db ($1 << 4) ; trainer's view range
-	dw wd7f3 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_2
 	dw ViridianForestBattleText3 ; TextBeforeBattle
 	dw ViridianForestAfterBattleText3 ; TextAfterBattle
 	dw ViridianForestEndBattleText3 ; TextEndBattle
--- a/scripts/viridiangym.asm
+++ b/scripts/viridiangym.asm
@@ -140,8 +140,7 @@
 	ld a, $c
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd751
-	set 1, [hl]
+	SetEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
 	ld bc, (TM_27 << 8) | 1
 	call GiveItem
 	jr nc, .BagFull
@@ -148,8 +147,7 @@
 	ld a, $d
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd751
-	set 0, [hl]
+	SetEvent EVENT_GOT_TM27
 	jr .asm_749be
 .BagFull
 	ld a, $e
@@ -162,19 +160,12 @@
 	set 7, [hl]
 
 	; deactivate gym trainers
-	ld a, [wd751]
-	or %11111100
-	ld [wd751], a
-	ld a, [wd752]
-	or %00000011
-	ld [wd752], a
+	SetEventRange EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0, EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7
 
 	ld a, HS_ROUTE_22_RIVAL_2
 	ld [wcc4d], a
 	predef ShowObject
-	ld hl, wd7eb
-	set 1, [hl]
-	set 7, [hl]
+	SetEvents EVENT_2ND_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_FIGHT
 	jp ViridianGymScript_748d6
 
 ViridianGymTextPointers: ; 749ec (1d:49ec)
@@ -195,9 +186,9 @@
 
 ViridianGymTrainerHeaders: ; 74a08 (1d:4a08)
 ViridianGymTrainerHeader0: ; 74a08 (1d:4a08)
-	db $2 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0
 	db ($4 << 4) ; trainer's view range
-	dw wd751 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0
 	dw ViridianGymBattleText1 ; TextBeforeBattle
 	dw ViridianGymAfterBattleText1 ; TextAfterBattle
 	dw ViridianGymEndBattleText1 ; TextEndBattle
@@ -204,9 +195,9 @@
 	dw ViridianGymEndBattleText1 ; TextEndBattle
 
 ViridianGymTrainerHeader1: ; 74a14 (1d:4a14)
-	db $3 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_1
 	db ($4 << 4) ; trainer's view range
-	dw wd751 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_1
 	dw ViridianGymBattleText2 ; TextBeforeBattle
 	dw ViridianGymAfterBattleText2 ; TextAfterBattle
 	dw ViridianGymEndBattleText2 ; TextEndBattle
@@ -213,9 +204,9 @@
 	dw ViridianGymEndBattleText2 ; TextEndBattle
 
 ViridianGymTrainerHeader2: ; 74a20 (1d:4a20)
-	db $4 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_2
 	db ($4 << 4) ; trainer's view range
-	dw wd751 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_2
 	dw ViridianGymBattleText3 ; TextBeforeBattle
 	dw ViridianGymAfterBattleText3 ; TextAfterBattle
 	dw ViridianGymEndBattleText3 ; TextEndBattle
@@ -222,9 +213,9 @@
 	dw ViridianGymEndBattleText3 ; TextEndBattle
 
 ViridianGymTrainerHeader3: ; 74a2c (1d:4a2c)
-	db $5 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_3
 	db ($2 << 4) ; trainer's view range
-	dw wd751 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_3
 	dw ViridianGymBattleText4 ; TextBeforeBattle
 	dw ViridianGymAfterBattleText4 ; TextAfterBattle
 	dw ViridianGymEndBattleText4 ; TextEndBattle
@@ -231,9 +222,9 @@
 	dw ViridianGymEndBattleText4 ; TextEndBattle
 
 ViridianGymTrainerHeader4: ; 74a38 (1d:4a38)
-	db $6 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_4
 	db ($3 << 4) ; trainer's view range
-	dw wd751 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_4
 	dw ViridianGymBattleText5 ; TextBeforeBattle
 	dw ViridianGymAfterBattleText5 ; TextAfterBattle
 	dw ViridianGymEndBattleText5 ; TextEndBattle
@@ -240,9 +231,9 @@
 	dw ViridianGymEndBattleText5 ; TextEndBattle
 
 ViridianGymTrainerHeader5: ; 74a44 (1d:4a44)
-	db $7 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_5
 	db ($4 << 4) ; trainer's view range
-	dw wd751 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_5
 	dw ViridianGymBattleText6 ; TextBeforeBattle
 	dw ViridianGymAfterBattleText6 ; TextAfterBattle
 	dw ViridianGymEndBattleText6 ; TextEndBattle
@@ -249,9 +240,9 @@
 	dw ViridianGymEndBattleText6 ; TextEndBattle
 
 ViridianGymTrainerHeader6: ; 74a50 (1d:4a50)
-	db $8 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_6, 1
 	db ($3 << 4) ; trainer's view range
-	dw wd751 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_6, 1
 	dw ViridianGymBattleText7 ; TextBeforeBattle
 	dw ViridianGymAfterBattleText7 ; TextAfterBattle
 	dw ViridianGymEndBattleText7 ; TextEndBattle
@@ -258,9 +249,9 @@
 	dw ViridianGymEndBattleText7 ; TextEndBattle
 
 ViridianGymTrainerHeader7: ; 74a5c (1d:4a5c)
-	db $9 ; flag's bit
+	dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7, 1
 	db ($4 << 4) ; trainer's view range
-	dw wd751 ; flag's byte
+	dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7, 1
 	dw ViridianGymBattleText8 ; TextBeforeBattle
 	dw ViridianGymAfterBattleText8 ; TextAfterBattle
 	dw ViridianGymEndBattleText8 ; TextEndBattle
@@ -270,10 +261,9 @@
 
 ViridianGymText1: ; 74a69 (1d:4a69)
 	TX_ASM
-	ld a, [wd751]
-	bit 1, a
+	CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
 	jr z, .asm_6de66
-	bit 0, a
+	CheckEventReuseA EVENT_GOT_TM27
 	jr nz, .asm_9fc95
 	call z, ViridianGymScript3_74995
 	call DisableWaitingAfterTextDisplay
@@ -485,8 +475,7 @@
 
 ViridianGymText10: ; 74bbb (1d:4bbb)
 	TX_ASM
-	ld a, [wd751]
-	bit 1, a
+	CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
 	jr nz, .asm_1abd1
 	ld hl, ViridianGymText_74bd4
 	call PrintText
--- a/scripts/viridianmart.asm
+++ b/scripts/viridianmart.asm
@@ -6,8 +6,7 @@
 	jp CallFunctionInTable
 
 ViridianMartScript_1d47d: ; 1d47d (7:547d)
-	ld a, [wd74e]
-	bit 0, a
+	CheckEvent EVENT_OAK_GOT_PARCEL
 	jr nz, .asm_1d489
 	ld hl, ViridianMartTextPointers
 	jr .asm_1d48c
@@ -55,8 +54,7 @@
 	call DisplayTextID
 	ld bc, (OAKS_PARCEL << 8) + 1
 	call GiveItem
-	ld hl, wd74e
-	set 1, [hl]
+	SetEvent EVENT_GOT_OAKS_PARCEL
 	ld a, $2
 	ld [W_VIRIDIANMARKETCURSCRIPT], a
 	; fallthrough
--- a/wram.asm
+++ b/wram.asm
@@ -2547,7 +2547,10 @@
 ; bit 7: used fly out of battle
 	ds 1
 
-wd734:: ds 2 ; flag for indigo plateau and lorelei (not sure what it's for)
+wBeatLorelei:: ; d734
+; bit 1: set when you beat Lorelei and reset in Indigo Plateau lobby
+; the game uses this to tell when Elite 4 events need to be reset
+	ds 2
 
 wd736:: ; d736
 ; bit 0: check if the player is standing on a door and make him walk down a step if so
@@ -2575,142 +2578,9 @@
 
 wd743:: ds 1 ; used with surge gym trash cans
 wd744:: ds 3 ; also used with surge gym trash cans
-wd747:: ds 3 ; and we're getting to flags, which I'm not going to bother commenting
-wd74a:: ds 1
 
-wd74b:: ; d74b
-; bit 0: Prof. Oak has lead the player to the north end of his lab
-; bit 1: Prof. Oak has asked the player to choose a pokemon
-; bit 2: the player and the rival have received their pokemon
-; bit 3: the player has battled the rival in Oak's lab
-; bit 4: Prof. Oak has given the player 5 pokeballs
-; bit 5: received pokedex
-	ds 1
-
-wd74c:: ds 2
-wd74e:: ds 3
-wd751:: ds 1
-wd752:: ds 2
-wd754:: ds 1
-wd755:: ds 5
-wd75a:: ds 1
-wd75b:: ds 3
-wd75e:: ds 1
-wd75f:: ds 5
-wd764:: ds 1
-wd765:: ds 1
-wd766:: ds 1
-wd767:: ds 1
-wd768:: ds 1
-wd769:: ds 3
-wd76c:: ds 5
-wd771:: ds 2
-wd773:: ds 4
-wd777:: ds 1
-wd778:: ds 4
-wd77c:: ds 1
-wd77d:: ds 1
-wd77e:: ds 5
-wd783:: ds 11
-wd78e:: ds 2
-wd790:: ds 2
-wd792:: ds 4
-wd796:: ds 2
-wd798:: ds 2
-wd79a:: ds 1
-wd79b:: ds 1
-wd79c:: ds 5
-wd7a1:: ds 2
-wd7a3:: ds 12
-wd7af:: ds 2
-wd7b1:: ds 2
-wd7b3:: ds 1
-wd7b4:: ds 5
-wd7b9:: ds 4
-wd7bd:: ds 2
-wd7bf:: ds 3
-wd7c2:: ds 1
-wd7c3:: ds 2
-wd7c5:: ds 1
-wd7c6:: ds 3
-wd7c9:: ds 4
-wd7cd:: ds 2
-wd7cf:: ds 2
-wd7d1:: ds 1
-wd7d2:: ds 1
-wd7d3:: ds 2
-wd7d5:: ds 1
-wd7d6:: ds 1
-wd7d7:: ds 1
-wd7d8:: ds 1
-wd7d9:: ds 2
-wd7db:: ds 2
-wd7dd:: ds 2
-wd7df:: ds 1
-wd7e0:: ds 1
-wd7e1:: ds 2
-wd7e3:: ds 2
-wd7e5:: ds 2
-wd7e7:: ds 1
-wd7e8:: ds 1
-wd7e9:: ds 2
-wd7eb:: ds 2
-wd7ed:: ds 1
-wd7ee:: ds 1
-wd7ef:: ds 1
-wd7f0:: ds 1
-wd7f1:: ds 1
-wd7f2:: ds 1
-wd7f3:: ds 2
-wd7f5:: ds 1
-wd7f6:: ds 9
-wd7ff:: ds 4
-wd803:: ds 2
-wd805:: ds 2
-wd807:: ds 2
-wd809:: ds 10
-wd813:: ds 2
-wd815:: ds 1
-wd816:: ds 1
-wd817:: ds 2
-wd819:: ds 2
-wd81b:: ds 10
-wd825:: ds 1
-wd826:: ds 1
-wd827:: ds 1
-wd828:: ds 1
-wd829:: ds 1
-wd82a:: ds 1
-wd82b:: ds 1
-wd82c:: ds 1
-wd82d:: ds 1
-wd82e:: ds 1
-wd82f:: ds 1
-wd830:: ds 1
-wd831:: ds 1
-wd832:: ds 1
-wd833:: ds 1
-wd834:: ds 1
-wd835:: ds 1
-wd836:: ds 1
-wd837:: ds 1
-wd838:: ds 15
-wd847:: ds 2
-wd849:: ds 2
-wd84b:: ds 12
-wd857:: ds 8
-wd85f:: ds 4
-wd863:: ds 1
-wd864:: ds 1
-wd865:: ds 1
-wd866:: ds 1
-wd867:: ds 2
-wd869:: ds 20
-wd87d:: ds 2
-wd87f:: ds 1
-wd880:: ds 1
-wd881:: ds 1
-wd882:: ds 5
+wEventFlags:: ; d747
+	ds 320
 
 wLinkEnemyTrainerName:: ; d887
 ; linked game's trainer name