shithub: pokered

Download patch

ref: fcab935a0f449246380480613ac0896e0b90a0d8
parent: 13e28b0ece7c7888cba792cc6f7219b384213427
author: YamaArashi <shadow962@live.com>
date: Mon Jul 20 14:32:02 EDT 2015

enumerate events

--- a/constants.asm
+++ b/constants.asm
@@ -30,3 +30,4 @@
 INCLUDE "constants/music_constants.asm"
 INCLUDE "constants/tilesets.asm"
 INCLUDE "constants/starter_mons.asm"
+INCLUDE "constants/event_constants.asm"
--- /dev/null
+++ b/constants/event_constants.asm
@@ -1,0 +1,2562 @@
+const_value = 0
+
+	const EVENT_STOPPED_FROM_LEAVING_PALLET
+	const EVENT_001
+	const EVENT_002
+	const EVENT_003
+	const EVENT_004
+	const EVENT_005
+	const EVENT_006
+	const EVENT_007
+	const EVENT_008
+	const EVENT_009
+	const EVENT_00A
+	const EVENT_00B
+	const EVENT_00C
+	const EVENT_00D
+	const EVENT_00E
+	const EVENT_00F
+	const EVENT_010
+	const EVENT_011
+	const EVENT_012
+	const EVENT_013
+	const EVENT_014
+	const EVENT_015
+	const EVENT_016
+	const EVENT_017
+	const EVENT_018
+	const EVENT_019
+	const EVENT_01A
+	const EVENT_01B
+	const EVENT_01C
+	const EVENT_01D
+	const EVENT_01E
+	const EVENT_01F
+	const EVENT_FOLLOWED_OAK_INSIDE_LAB
+	const EVENT_OAK_ASKED_TO_CHOOSE_MON
+	const EVENT_GOT_STARTER
+	const EVENT_BATTLED_RIVAL_IN_OAKS_LAB
+	const EVENT_GOT_POKEBALLS_FROM_OAK
+	const EVENT_GOT_POKEDEX
+	const EVENT_026
+	const EVENT_027
+	const EVENT_028
+	const EVENT_029
+	const EVENT_02A
+	const EVENT_02B
+	const EVENT_02C
+	const EVENT_02D
+	const EVENT_02E
+	const EVENT_02F
+	const EVENT_030
+	const EVENT_031
+	const EVENT_032
+	const EVENT_033
+	const EVENT_034
+	const EVENT_035
+	const EVENT_036
+	const EVENT_037
+	const EVENT_038
+	const EVENT_039
+	const EVENT_03A
+	const EVENT_03B
+	const EVENT_03C
+	const EVENT_03D
+	const EVENT_03E
+	const EVENT_03F
+	const EVENT_040
+	const EVENT_041
+	const EVENT_042
+	const EVENT_043
+	const EVENT_044
+	const EVENT_045
+	const EVENT_046
+	const EVENT_047
+	const EVENT_048
+	const EVENT_049
+	const EVENT_04A
+	const EVENT_04B
+	const EVENT_04C
+	const EVENT_04D
+	const EVENT_04E
+	const EVENT_04F
+	const EVENT_050
+	const EVENT_051
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_1
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_2
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_3
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_4
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_5
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_6
+	const EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7
+	const EVENT_05A
+	const EVENT_05B
+	const EVENT_05C
+	const EVENT_05D
+	const EVENT_05E
+	const EVENT_05F
+	const EVENT_060
+	const EVENT_061
+	const EVENT_062
+	const EVENT_063
+	const EVENT_064
+	const EVENT_065
+	const EVENT_066
+	const EVENT_067
+	const EVENT_068
+	const EVENT_069
+	const EVENT_06A
+	const EVENT_06B
+	const EVENT_06C
+	const EVENT_06D
+	const EVENT_06E
+	const EVENT_06F
+	const EVENT_070
+	const EVENT_071
+	const EVENT_BEAT_PEWTER_GYM_TRAINER_0
+	const EVENT_073
+	const EVENT_074
+	const EVENT_075
+	const EVENT_076
+	const EVENT_077
+	const EVENT_078
+	const EVENT_079
+	const EVENT_07A
+	const EVENT_07B
+	const EVENT_07C
+	const EVENT_07D
+	const EVENT_07E
+	const EVENT_07F
+	const EVENT_080
+	const EVENT_081
+	const EVENT_082
+	const EVENT_083
+	const EVENT_084
+	const EVENT_085
+	const EVENT_086
+	const EVENT_087
+	const EVENT_088
+	const EVENT_089
+	const EVENT_08A
+	const EVENT_08B
+	const EVENT_08C
+	const EVENT_08D
+	const EVENT_08E
+	const EVENT_08F
+	const EVENT_090
+	const EVENT_091
+	const EVENT_092
+	const EVENT_093
+	const EVENT_094
+	const EVENT_095
+	const EVENT_096
+	const EVENT_097
+	const EVENT_098
+	const EVENT_099
+	const EVENT_09A
+	const EVENT_09B
+	const EVENT_09C
+	const EVENT_09D
+	const EVENT_09E
+	const EVENT_09F
+	const EVENT_0A0
+	const EVENT_0A1
+	const EVENT_0A2
+	const EVENT_0A3
+	const EVENT_0A4
+	const EVENT_0A5
+	const EVENT_0A6
+	const EVENT_0A7
+	const EVENT_0A8
+	const EVENT_0A9
+	const EVENT_0AA
+	const EVENT_0AB
+	const EVENT_0AC
+	const EVENT_0AD
+	const EVENT_0AE
+	const EVENT_0AF
+	const EVENT_0B0
+	const EVENT_0B1
+	const EVENT_0B2
+	const EVENT_0B3
+	const EVENT_0B4
+	const EVENT_0B5
+	const EVENT_0B6
+	const EVENT_0B7
+	const EVENT_0B8
+	const EVENT_0B9
+	const EVENT_BEAT_CERULEAN_GYM_TRAINER_0
+	const EVENT_BEAT_CERULEAN_GYM_TRAINER_1
+	const EVENT_0BC
+	const EVENT_0BD
+	const EVENT_0BE
+	const EVENT_0BF
+	const EVENT_0C0
+	const EVENT_0C1
+	const EVENT_0C2
+	const EVENT_0C3
+	const EVENT_0C4
+	const EVENT_0C5
+	const EVENT_0C6
+	const EVENT_0C7
+	const EVENT_0C8
+	const EVENT_0C9
+	const EVENT_0CA
+	const EVENT_0CB
+	const EVENT_0CC
+	const EVENT_0CD
+	const EVENT_0CE
+	const EVENT_0CF
+	const EVENT_0D0
+	const EVENT_0D1
+	const EVENT_0D2
+	const EVENT_0D3
+	const EVENT_0D4
+	const EVENT_0D5
+	const EVENT_0D6
+	const EVENT_0D7
+	const EVENT_0D8
+	const EVENT_0D9
+	const EVENT_0DA
+	const EVENT_0DB
+	const EVENT_0DC
+	const EVENT_0DD
+	const EVENT_0DE
+	const EVENT_0DF
+	const EVENT_0E0
+	const EVENT_0E1
+	const EVENT_0E2
+	const EVENT_0E3
+	const EVENT_0E4
+	const EVENT_0E5
+	const EVENT_0E6
+	const EVENT_0E7
+	const EVENT_0E8
+	const EVENT_0E9
+	const EVENT_0EA
+	const EVENT_0EB
+	const EVENT_0EC
+	const EVENT_0ED
+	const EVENT_0EE
+	const EVENT_0EF
+	const EVENT_0F0
+	const EVENT_BEAT_POKEMONTOWER_3_TRAINER_0
+	const EVENT_BEAT_POKEMONTOWER_3_TRAINER_1
+	const EVENT_BEAT_POKEMONTOWER_3_TRAINER_2
+	const EVENT_0F4
+	const EVENT_0F5
+	const EVENT_0F6
+	const EVENT_0F7
+	const EVENT_0F8
+	const EVENT_BEAT_POKEMONTOWER_4_TRAINER_0
+	const EVENT_BEAT_POKEMONTOWER_4_TRAINER_1
+	const EVENT_BEAT_POKEMONTOWER_4_TRAINER_2
+	const EVENT_0FC
+	const EVENT_0FD
+	const EVENT_0FE
+	const EVENT_0FF
+	const EVENT_100
+	const EVENT_101
+	const EVENT_BEAT_POKEMONTOWER_5_TRAINER_0
+	const EVENT_BEAT_POKEMONTOWER_5_TRAINER_1
+	const EVENT_BEAT_POKEMONTOWER_5_TRAINER_2
+	const EVENT_BEAT_POKEMONTOWER_5_TRAINER_3
+	const EVENT_106
+	const EVENT_107
+	const EVENT_108
+	const EVENT_BEAT_POKEMONTOWER_6_TRAINER_0
+	const EVENT_BEAT_POKEMONTOWER_6_TRAINER_1
+	const EVENT_BEAT_POKEMONTOWER_6_TRAINER_2
+	const EVENT_10C
+	const EVENT_10D
+	const EVENT_10E
+	const EVENT_10F
+	const EVENT_110
+	const EVENT_BEAT_POKEMONTOWER_7_TRAINER_0
+	const EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
+	const EVENT_BEAT_POKEMONTOWER_7_TRAINER_2
+	const EVENT_114
+	const EVENT_115
+	const EVENT_116
+	const EVENT_117
+	const EVENT_118
+	const EVENT_119
+	const EVENT_11A
+	const EVENT_11B
+	const EVENT_11C
+	const EVENT_11D
+	const EVENT_11E
+	const EVENT_11F
+	const EVENT_120
+	const EVENT_121
+	const EVENT_122
+	const EVENT_123
+	const EVENT_124
+	const EVENT_125
+	const EVENT_126
+	const EVENT_127
+	const EVENT_128
+	const EVENT_129
+	const EVENT_12A
+	const EVENT_12B
+	const EVENT_12C
+	const EVENT_12D
+	const EVENT_12E
+	const EVENT_12F
+	const EVENT_130
+	const EVENT_131
+	const EVENT_132
+	const EVENT_133
+	const EVENT_134
+	const EVENT_135
+	const EVENT_136
+	const EVENT_137
+	const EVENT_138
+	const EVENT_139
+	const EVENT_13A
+	const EVENT_13B
+	const EVENT_13C
+	const EVENT_13D
+	const EVENT_13E
+	const EVENT_13F
+	const EVENT_140
+	const EVENT_141
+	const EVENT_142
+	const EVENT_143
+	const EVENT_144
+	const EVENT_145
+	const EVENT_146
+	const EVENT_147
+	const EVENT_148
+	const EVENT_149
+	const EVENT_14A
+	const EVENT_14B
+	const EVENT_14C
+	const EVENT_14D
+	const EVENT_14E
+	const EVENT_14F
+	const EVENT_150
+	const EVENT_GOT_BIKE_VOUCHER
+	const EVENT_152
+	const EVENT_153
+	const EVENT_154
+	const EVENT_155
+	const EVENT_156
+	const EVENT_157
+	const EVENT_158
+	const EVENT_159
+	const EVENT_15A
+	const EVENT_15B
+	const EVENT_15C
+	const EVENT_15D
+	const EVENT_15E
+	const EVENT_15F
+	const EVENT_2ND_LOCK_OPENED
+	const EVENT_1ST_LOCK_OPENED
+	const EVENT_BEAT_VERMILION_GYM_TRAINER_0
+	const EVENT_BEAT_VERMILION_GYM_TRAINER_1
+	const EVENT_BEAT_VERMILION_GYM_TRAINER_2
+	const EVENT_165
+	const EVENT_166
+	const EVENT_167
+	const EVENT_168
+	const EVENT_169
+	const EVENT_16A
+	const EVENT_16B
+	const EVENT_16C
+	const EVENT_16D
+	const EVENT_16E
+	const EVENT_16F
+	const EVENT_170
+	const EVENT_171
+	const EVENT_172
+	const EVENT_173
+	const EVENT_174
+	const EVENT_175
+	const EVENT_176
+	const EVENT_177
+	const EVENT_178
+	const EVENT_179
+	const EVENT_17A
+	const EVENT_17B
+	const EVENT_17C
+	const EVENT_17D
+	const EVENT_17E
+	const EVENT_17F
+	const EVENT_180
+	const EVENT_181
+	const EVENT_182
+	const EVENT_183
+	const EVENT_184
+	const EVENT_185
+	const EVENT_186
+	const EVENT_187
+	const EVENT_188
+	const EVENT_189
+	const EVENT_18A
+	const EVENT_18B
+	const EVENT_18C
+	const EVENT_18D
+	const EVENT_18E
+	const EVENT_18F
+	const EVENT_190
+	const EVENT_191
+	const EVENT_192
+	const EVENT_193
+	const EVENT_194
+	const EVENT_195
+	const EVENT_196
+	const EVENT_197
+	const EVENT_198
+	const EVENT_199
+	const EVENT_19A
+	const EVENT_19B
+	const EVENT_19C
+	const EVENT_19D
+	const EVENT_19E
+	const EVENT_19F
+	const EVENT_1A0
+	const EVENT_1A1
+	const EVENT_1A2
+	const EVENT_1A3
+	const EVENT_1A4
+	const EVENT_1A5
+	const EVENT_1A6
+	const EVENT_1A7
+	const EVENT_1A8
+	const EVENT_1A9
+	const EVENT_BEAT_CELADON_GYM_TRAINER_0
+	const EVENT_BEAT_CELADON_GYM_TRAINER_2
+	const EVENT_BEAT_CELADON_GYM_TRAINER_3
+	const EVENT_BEAT_CELADON_GYM_TRAINER_4
+	const EVENT_BEAT_CELADON_GYM_TRAINER_5
+	const EVENT_BEAT_CELADON_GYM_TRAINER_6
+	const EVENT_BEAT_CELADON_GYM_TRAINER_7
+	const EVENT_1B1
+	const EVENT_1B2
+	const EVENT_1B3
+	const EVENT_1B4
+	const EVENT_1B5
+	const EVENT_1B6
+	const EVENT_1B7
+	const EVENT_1B8
+	const EVENT_1B9
+	const EVENT_1BA
+	const EVENT_1BB
+	const EVENT_1BC
+	const EVENT_1BD
+	const EVENT_1BE
+	const EVENT_1BF
+	const EVENT_1C0
+	const EVENT_1C1
+	const EVENT_1C2
+	const EVENT_1C3
+	const EVENT_1C4
+	const EVENT_1C5
+	const EVENT_1C6
+	const EVENT_1C7
+	const EVENT_1C8
+	const EVENT_1C9
+	const EVENT_1CA
+	const EVENT_1CB
+	const EVENT_1CC
+	const EVENT_1CD
+	const EVENT_1CE
+	const EVENT_1CF
+	const EVENT_1D0
+	const EVENT_1D1
+	const EVENT_1D2
+	const EVENT_1D3
+	const EVENT_1D4
+	const EVENT_1D5
+	const EVENT_1D6
+	const EVENT_1D7
+	const EVENT_1D8
+	const EVENT_1D9
+	const EVENT_1DA
+	const EVENT_1DB
+	const EVENT_1DC
+	const EVENT_1DD
+	const EVENT_1DE
+	const EVENT_1DF
+	const EVENT_1E0
+	const EVENT_1E1
+	const EVENT_1E2
+	const EVENT_1E3
+	const EVENT_1E4
+	const EVENT_1E5
+	const EVENT_1E6
+	const EVENT_1E7
+	const EVENT_1E8
+	const EVENT_1E9
+	const EVENT_1EA
+	const EVENT_1EB
+	const EVENT_1EC
+	const EVENT_1ED
+	const EVENT_1EE
+	const EVENT_1EF
+	const EVENT_1F0
+	const EVENT_1F1
+	const EVENT_1F2
+	const EVENT_1F3
+	const EVENT_1F4
+	const EVENT_1F5
+	const EVENT_1F6
+	const EVENT_1F7
+	const EVENT_1F8
+	const EVENT_1F9
+	const EVENT_1FA
+	const EVENT_1FB
+	const EVENT_1FC
+	const EVENT_1FD
+	const EVENT_1FE
+	const EVENT_1FF
+	const EVENT_200
+	const EVENT_201
+	const EVENT_202
+	const EVENT_203
+	const EVENT_204
+	const EVENT_205
+	const EVENT_206
+	const EVENT_207
+	const EVENT_208
+	const EVENT_209
+	const EVENT_20A
+	const EVENT_20B
+	const EVENT_20C
+	const EVENT_20D
+	const EVENT_20E
+	const EVENT_20F
+	const EVENT_210
+	const EVENT_211
+	const EVENT_212
+	const EVENT_213
+	const EVENT_214
+	const EVENT_215
+	const EVENT_216
+	const EVENT_217
+	const EVENT_218
+	const EVENT_219
+	const EVENT_21A
+	const EVENT_21B
+	const EVENT_21C
+	const EVENT_21D
+	const EVENT_21E
+	const EVENT_21F
+	const EVENT_220
+	const EVENT_221
+	const EVENT_222
+	const EVENT_223
+	const EVENT_224
+	const EVENT_225
+	const EVENT_226
+	const EVENT_227
+	const EVENT_228
+	const EVENT_229
+	const EVENT_22A
+	const EVENT_22B
+	const EVENT_22C
+	const EVENT_22D
+	const EVENT_22E
+	const EVENT_22F
+	const EVENT_230
+	const EVENT_231
+	const EVENT_232
+	const EVENT_233
+	const EVENT_234
+	const EVENT_235
+	const EVENT_236
+	const EVENT_237
+	const EVENT_238
+	const EVENT_239
+	const EVENT_23A
+	const EVENT_23B
+	const EVENT_23C
+	const EVENT_23D
+	const EVENT_23E
+	const EVENT_23F
+	const EVENT_240
+	const EVENT_241
+	const EVENT_242
+	const EVENT_243
+	const EVENT_244
+	const EVENT_245
+	const EVENT_246
+	const EVENT_247
+	const EVENT_248
+	const EVENT_249
+	const EVENT_24A
+	const EVENT_24B
+	const EVENT_24C
+	const EVENT_24D
+	const EVENT_SAFARI_GAME_OVER
+	const EVENT_IN_SAFARI_ZONE
+	const EVENT_250
+	const EVENT_251
+	const EVENT_252
+	const EVENT_253
+	const EVENT_254
+	const EVENT_255
+	const EVENT_256
+	const EVENT_257
+	const EVENT_258
+	const EVENT_259
+	const EVENT_BEAT_FUCHSIA_GYM_TRAINER_0
+	const EVENT_BEAT_FUCHSIA_GYM_TRAINER_2
+	const EVENT_BEAT_FUCHSIA_GYM_TRAINER_3
+	const EVENT_BEAT_FUCHSIA_GYM_TRAINER_4
+	const EVENT_BEAT_FUCHSIA_GYM_TRAINER_5
+	const EVENT_BEAT_FUCHSIA_GYM_TRAINER_6
+	const EVENT_260
+	const EVENT_261
+	const EVENT_262
+	const EVENT_263
+	const EVENT_264
+	const EVENT_265
+	const EVENT_266
+	const EVENT_267
+	const EVENT_268
+	const EVENT_269
+	const EVENT_26A
+	const EVENT_26B
+	const EVENT_26C
+	const EVENT_26D
+	const EVENT_26E
+	const EVENT_26F
+	const EVENT_270
+	const EVENT_271
+	const EVENT_272
+	const EVENT_273
+	const EVENT_274
+	const EVENT_275
+	const EVENT_276
+	const EVENT_277
+	const EVENT_278
+	const EVENT_279
+	const EVENT_27A
+	const EVENT_27B
+	const EVENT_27C
+	const EVENT_27D
+	const EVENT_27E
+	const EVENT_27F
+	const EVENT_280
+	const EVENT_281
+	const EVENT_282
+	const EVENT_283
+	const EVENT_284
+	const EVENT_285
+	const EVENT_286
+	const EVENT_287
+	const EVENT_288
+	const EVENT_BEAT_MANSION_1_TRAINER_0
+	const EVENT_28A
+	const EVENT_28B
+	const EVENT_28C
+	const EVENT_28D
+	const EVENT_28E
+	const EVENT_28F
+	const EVENT_290
+	const EVENT_291
+	const EVENT_292
+	const EVENT_293
+	const EVENT_294
+	const EVENT_295
+	const EVENT_296
+	const EVENT_297
+	const EVENT_298
+	const EVENT_299
+	const EVENT_29A
+	const EVENT_29B
+	const EVENT_29C
+	const EVENT_29D
+	const EVENT_29E
+	const EVENT_29F
+	const EVENT_2A0
+	const EVENT_2A1
+	const EVENT_2A2
+	const EVENT_2A3
+	const EVENT_2A4
+	const EVENT_2A5
+	const EVENT_2A6
+	const EVENT_2A7
+	const EVENT_2A8
+	const EVENT_2A9
+	const EVENT_2AA
+	const EVENT_2AB
+	const EVENT_2AC
+	const EVENT_2AD
+	const EVENT_2AE
+	const EVENT_2AF
+	const EVENT_2B0
+	const EVENT_2B1
+	const EVENT_2B2
+	const EVENT_2B3
+	const EVENT_2B4
+	const EVENT_2B5
+	const EVENT_2B6
+	const EVENT_2B7
+	const EVENT_2B8
+	const EVENT_2B9
+	const EVENT_2BA
+	const EVENT_2BB
+	const EVENT_2BC
+	const EVENT_2BD
+	const EVENT_2BE
+	const EVENT_2BF
+	const EVENT_2C0
+	const EVENT_2C1
+	const EVENT_2C2
+	const EVENT_2C3
+	const EVENT_2C4
+	const EVENT_2C5
+	const EVENT_2C6
+	const EVENT_2C7
+	const EVENT_2C8
+	const EVENT_2C9
+	const EVENT_2CA
+	const EVENT_2CB
+	const EVENT_2CC
+	const EVENT_2CD
+	const EVENT_2CE
+	const EVENT_2CF
+	const EVENT_2D0
+	const EVENT_2D1
+	const EVENT_2D2
+	const EVENT_2D3
+	const EVENT_2D4
+	const EVENT_2D5
+	const EVENT_2D6
+	const EVENT_2D7
+	const EVENT_2D8
+	const EVENT_2D9
+	const EVENT_2DA
+	const EVENT_2DB
+	const EVENT_2DC
+	const EVENT_2DD
+	const EVENT_2DE
+	const EVENT_2DF
+	const EVENT_2E0
+	const EVENT_2E1
+	const EVENT_2E2
+	const EVENT_2E3
+	const EVENT_2E4
+	const EVENT_2E5
+	const EVENT_2E6
+	const EVENT_2E7
+	const EVENT_2E8
+	const EVENT_2E9
+	const EVENT_2EA
+	const EVENT_2EB
+	const EVENT_2EC
+	const EVENT_2ED
+	const EVENT_2EE
+	const EVENT_2EF
+	const EVENT_2F0
+	const EVENT_2F1
+	const EVENT_2F2
+	const EVENT_2F3
+	const EVENT_2F4
+	const EVENT_2F5
+	const EVENT_2F6
+	const EVENT_2F7
+	const EVENT_2F8
+	const EVENT_2F9
+	const EVENT_2FA
+	const EVENT_2FB
+	const EVENT_2FC
+	const EVENT_2FD
+	const EVENT_2FE
+	const EVENT_2FF
+	const EVENT_300
+	const EVENT_301
+	const EVENT_302
+	const EVENT_303
+	const EVENT_304
+	const EVENT_305
+	const EVENT_306
+	const EVENT_307
+	const EVENT_308
+	const EVENT_309
+	const EVENT_30A
+	const EVENT_30B
+	const EVENT_30C
+	const EVENT_30D
+	const EVENT_30E
+	const EVENT_30F
+	const EVENT_310
+	const EVENT_311
+	const EVENT_312
+	const EVENT_313
+	const EVENT_314
+	const EVENT_315
+	const EVENT_316
+	const EVENT_317
+	const EVENT_318
+	const EVENT_319
+	const EVENT_31A
+	const EVENT_31B
+	const EVENT_31C
+	const EVENT_31D
+	const EVENT_31E
+	const EVENT_31F
+	const EVENT_320
+	const EVENT_321
+	const EVENT_322
+	const EVENT_323
+	const EVENT_324
+	const EVENT_325
+	const EVENT_326
+	const EVENT_327
+	const EVENT_328
+	const EVENT_329
+	const EVENT_32A
+	const EVENT_32B
+	const EVENT_32C
+	const EVENT_32D
+	const EVENT_32E
+	const EVENT_32F
+	const EVENT_330
+	const EVENT_331
+	const EVENT_332
+	const EVENT_333
+	const EVENT_334
+	const EVENT_335
+	const EVENT_336
+	const EVENT_337
+	const EVENT_338
+	const EVENT_339
+	const EVENT_33A
+	const EVENT_33B
+	const EVENT_33C
+	const EVENT_33D
+	const EVENT_33E
+	const EVENT_33F
+	const EVENT_340
+	const EVENT_341
+	const EVENT_342
+	const EVENT_343
+	const EVENT_344
+	const EVENT_345
+	const EVENT_346
+	const EVENT_347
+	const EVENT_348
+	const EVENT_349
+	const EVENT_34A
+	const EVENT_34B
+	const EVENT_34C
+	const EVENT_34D
+	const EVENT_34E
+	const EVENT_34F
+	const EVENT_350
+	const EVENT_351
+	const EVENT_BEAT_FIGHTING_DOJO_TRAINER_0
+	const EVENT_BEAT_FIGHTING_DOJO_TRAINER_1
+	const EVENT_BEAT_FIGHTING_DOJO_TRAINER_2
+	const EVENT_BEAT_FIGHTING_DOJO_TRAINER_3
+	const EVENT_356
+	const EVENT_357
+	const EVENT_358
+	const EVENT_359
+	const EVENT_35A
+	const EVENT_35B
+	const EVENT_35C
+	const EVENT_35D
+	const EVENT_35E
+	const EVENT_35F
+	const EVENT_360
+	const EVENT_361
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_0
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_1
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_2
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_3
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_4
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_5
+	const EVENT_BEAT_SAFFRON_GYM_TRAINER_6
+	const EVENT_369
+	const EVENT_36A
+	const EVENT_36B
+	const EVENT_36C
+	const EVENT_36D
+	const EVENT_36E
+	const EVENT_36F
+	const EVENT_370
+	const EVENT_371
+	const EVENT_372
+	const EVENT_373
+	const EVENT_374
+	const EVENT_375
+	const EVENT_376
+	const EVENT_377
+	const EVENT_378
+	const EVENT_379
+	const EVENT_37A
+	const EVENT_37B
+	const EVENT_37C
+	const EVENT_37D
+	const EVENT_37E
+	const EVENT_37F
+	const EVENT_380
+	const EVENT_381
+	const EVENT_382
+	const EVENT_383
+	const EVENT_384
+	const EVENT_385
+	const EVENT_386
+	const EVENT_387
+	const EVENT_388
+	const EVENT_389
+	const EVENT_38A
+	const EVENT_38B
+	const EVENT_38C
+	const EVENT_38D
+	const EVENT_38E
+	const EVENT_38F
+	const EVENT_390
+	const EVENT_391
+	const EVENT_392
+	const EVENT_393
+	const EVENT_394
+	const EVENT_395
+	const EVENT_396
+	const EVENT_397
+	const EVENT_398
+	const EVENT_399
+	const EVENT_39A
+	const EVENT_39B
+	const EVENT_39C
+	const EVENT_39D
+	const EVENT_39E
+	const EVENT_39F
+	const EVENT_3A0
+	const EVENT_3A1
+	const EVENT_3A2
+	const EVENT_3A3
+	const EVENT_3A4
+	const EVENT_3A5
+	const EVENT_3A6
+	const EVENT_3A7
+	const EVENT_3A8
+	const EVENT_3A9
+	const EVENT_3AA
+	const EVENT_3AB
+	const EVENT_3AC
+	const EVENT_3AD
+	const EVENT_3AE
+	const EVENT_3AF
+	const EVENT_3B0
+	const EVENT_3B1
+	const EVENT_3B2
+	const EVENT_3B3
+	const EVENT_3B4
+	const EVENT_3B5
+	const EVENT_3B6
+	const EVENT_3B7
+	const EVENT_3B8
+	const EVENT_3B9
+	const EVENT_3BA
+	const EVENT_3BB
+	const EVENT_3BC
+	const EVENT_3BD
+	const EVENT_3BE
+	const EVENT_3BF
+	const EVENT_3C0
+	const EVENT_3C1
+	const EVENT_3C2
+	const EVENT_3C3
+	const EVENT_3C4
+	const EVENT_3C5
+	const EVENT_3C6
+	const EVENT_3C7
+	const EVENT_3C8
+	const EVENT_3C9
+	const EVENT_3CA
+	const EVENT_3CB
+	const EVENT_3CC
+	const EVENT_3CD
+	const EVENT_3CE
+	const EVENT_3CF
+	const EVENT_3D0
+	const EVENT_3D1
+	const EVENT_3D2
+	const EVENT_3D3
+	const EVENT_3D4
+	const EVENT_3D5
+	const EVENT_3D6
+	const EVENT_3D7
+	const EVENT_3D8
+	const EVENT_3D9
+	const EVENT_3DA
+	const EVENT_3DB
+	const EVENT_3DC
+	const EVENT_3DD
+	const EVENT_3DE
+	const EVENT_3DF
+	const EVENT_3E0
+	const EVENT_3E1
+	const EVENT_BEAT_ROUTE_3_TRAINER_0
+	const EVENT_BEAT_ROUTE_3_TRAINER_2
+	const EVENT_BEAT_ROUTE_3_TRAINER_3
+	const EVENT_BEAT_ROUTE_3_TRAINER_4
+	const EVENT_BEAT_ROUTE_3_TRAINER_5
+	const EVENT_BEAT_ROUTE_3_TRAINER_6
+	const EVENT_BEAT_ROUTE_3_TRAINER_7
+	const EVENT_BEAT_ROUTE_3_TRAINER_8
+	const EVENT_3EA
+	const EVENT_3EB
+	const EVENT_3EC
+	const EVENT_3ED
+	const EVENT_3EE
+	const EVENT_3EF
+	const EVENT_3F0
+	const EVENT_3F1
+	const EVENT_BEAT_ROUTE_4_TRAINER_0
+	const EVENT_3F3
+	const EVENT_3F4
+	const EVENT_3F5
+	const EVENT_3F6
+	const EVENT_3F7
+	const EVENT_3F8
+	const EVENT_3F9
+	const EVENT_3FA
+	const EVENT_3FB
+	const EVENT_3FC
+	const EVENT_3FD
+	const EVENT_3FE
+	const EVENT_BOUGHT_MAGIKARP
+	const EVENT_400
+	const EVENT_401
+	const EVENT_402
+	const EVENT_403
+	const EVENT_404
+	const EVENT_405
+	const EVENT_406
+	const EVENT_407
+	const EVENT_408
+	const EVENT_409
+	const EVENT_40A
+	const EVENT_40B
+	const EVENT_40C
+	const EVENT_40D
+	const EVENT_40E
+	const EVENT_40F
+	const EVENT_410
+	const EVENT_BEAT_ROUTE_6_TRAINER_0
+	const EVENT_BEAT_ROUTE_6_TRAINER_1
+	const EVENT_BEAT_ROUTE_6_TRAINER_2
+	const EVENT_BEAT_ROUTE_6_TRAINER_3
+	const EVENT_BEAT_ROUTE_6_TRAINER_4
+	const EVENT_BEAT_ROUTE_6_TRAINER_5
+	const EVENT_417
+	const EVENT_418
+	const EVENT_419
+	const EVENT_41A
+	const EVENT_41B
+	const EVENT_41C
+	const EVENT_41D
+	const EVENT_41E
+	const EVENT_41F
+	const EVENT_420
+	const EVENT_421
+	const EVENT_422
+	const EVENT_423
+	const EVENT_424
+	const EVENT_425
+	const EVENT_426
+	const EVENT_427
+	const EVENT_428
+	const EVENT_429
+	const EVENT_42A
+	const EVENT_42B
+	const EVENT_42C
+	const EVENT_42D
+	const EVENT_42E
+	const EVENT_42F
+	const EVENT_430
+	const EVENT_BEAT_ROUTE_8_TRAINER_0
+	const EVENT_BEAT_ROUTE_8_TRAINER_1
+	const EVENT_BEAT_ROUTE_8_TRAINER_2
+	const EVENT_BEAT_ROUTE_8_TRAINER_3
+	const EVENT_BEAT_ROUTE_8_TRAINER_4
+	const EVENT_BEAT_ROUTE_8_TRAINER_5
+	const EVENT_BEAT_ROUTE_8_TRAINER_6
+	const EVENT_BEAT_ROUTE_8_TRAINER_7
+	const EVENT_BEAT_ROUTE_8_TRAINER_8
+	const EVENT_43A
+	const EVENT_43B
+	const EVENT_43C
+	const EVENT_43D
+	const EVENT_43E
+	const EVENT_43F
+	const EVENT_440
+	const EVENT_BEAT_ROUTE_9_TRAINER_0
+	const EVENT_BEAT_ROUTE_9_TRAINER_2
+	const EVENT_BEAT_ROUTE_9_TRAINER_3
+	const EVENT_BEAT_ROUTE_9_TRAINER_4
+	const EVENT_BEAT_ROUTE_9_TRAINER_5
+	const EVENT_BEAT_ROUTE_9_TRAINER_6
+	const EVENT_BEAT_ROUTE_9_TRAINER_7
+	const EVENT_BEAT_ROUTE_9_TRAINER_8
+	const EVENT_BEAT_ROUTE_9_TRAINER_9
+	const EVENT_44A
+	const EVENT_44B
+	const EVENT_44C
+	const EVENT_44D
+	const EVENT_44E
+	const EVENT_44F
+	const EVENT_450
+	const EVENT_BEAT_ROUTE_10_TRAINER_0
+	const EVENT_BEAT_ROUTE_10_TRAINER_1
+	const EVENT_BEAT_ROUTE_10_TRAINER_2
+	const EVENT_BEAT_ROUTE_10_TRAINER_3
+	const EVENT_BEAT_ROUTE_10_TRAINER_4
+	const EVENT_BEAT_ROUTE_10_TRAINER_5
+	const EVENT_457
+	const EVENT_458
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_1
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_2
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_3
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_4
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_5
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_6
+	const EVENT_BEAT_ROCK_TUNNEL_1_TRAINER_7
+	const EVENT_460
+	const EVENT_BEAT_POWER_PLANT_TRAINER_0
+	const EVENT_BEAT_POWER_PLANT_TRAINER_1
+	const EVENT_BEAT_POWER_PLANT_TRAINER_2
+	const EVENT_BEAT_POWER_PLANT_TRAINER_3
+	const EVENT_BEAT_POWER_PLANT_TRAINER_4
+	const EVENT_BEAT_POWER_PLANT_TRAINER_5
+	const EVENT_BEAT_POWER_PLANT_TRAINER_6
+	const EVENT_BEAT_POWER_PLANT_TRAINER_7
+	const EVENT_BEAT_POWER_PLANT_TRAINER_8
+	const EVENT_46A
+	const EVENT_46B
+	const EVENT_46C
+	const EVENT_46D
+	const EVENT_46E
+	const EVENT_46F
+	const EVENT_470
+	const EVENT_BEAT_ROUTE_11_TRAINER_0
+	const EVENT_BEAT_ROUTE_11_TRAINER_1
+	const EVENT_BEAT_ROUTE_11_TRAINER_2
+	const EVENT_BEAT_ROUTE_11_TRAINER_3
+	const EVENT_BEAT_ROUTE_11_TRAINER_4
+	const EVENT_BEAT_ROUTE_11_TRAINER_5
+	const EVENT_BEAT_ROUTE_11_TRAINER_6
+	const EVENT_BEAT_ROUTE_11_TRAINER_7
+	const EVENT_BEAT_ROUTE_11_TRAINER_8
+	const EVENT_BEAT_ROUTE_11_TRAINER_9
+	const EVENT_47B
+	const EVENT_47C
+	const EVENT_47D
+	const EVENT_47E
+	const EVENT_47F
+	const EVENT_480
+	const EVENT_481
+	const EVENT_BEAT_ROUTE_12_TRAINER_0
+	const EVENT_BEAT_ROUTE_12_TRAINER_1
+	const EVENT_BEAT_ROUTE_12_TRAINER_2
+	const EVENT_BEAT_ROUTE_12_TRAINER_3
+	const EVENT_BEAT_ROUTE_12_TRAINER_4
+	const EVENT_BEAT_ROUTE_12_TRAINER_5
+	const EVENT_BEAT_ROUTE_12_TRAINER_6
+	const EVENT_489
+	const EVENT_48A
+	const EVENT_48B
+	const EVENT_48C
+	const EVENT_48D
+	const EVENT_FIGHT_ROUTE12_SNORLAX
+	const EVENT_BEAT_ROUTE12_SNORLAX
+	const EVENT_490
+	const EVENT_BEAT_ROUTE_13_TRAINER_0
+	const EVENT_BEAT_ROUTE_13_TRAINER_2
+	const EVENT_BEAT_ROUTE_13_TRAINER_3
+	const EVENT_BEAT_ROUTE_13_TRAINER_4
+	const EVENT_BEAT_ROUTE_13_TRAINER_5
+	const EVENT_BEAT_ROUTE_13_TRAINER_6
+	const EVENT_BEAT_ROUTE_13_TRAINER_7
+	const EVENT_BEAT_ROUTE_13_TRAINER_8
+	const EVENT_BEAT_ROUTE_13_TRAINER_9
+	const EVENT_BEAT_ROUTE_13_TRAINER_10
+	const EVENT_49B
+	const EVENT_49C
+	const EVENT_49D
+	const EVENT_49E
+	const EVENT_49F
+	const EVENT_4A0
+	const EVENT_BEAT_ROUTE_14_TRAINER_0
+	const EVENT_BEAT_ROUTE_14_TRAINER_1
+	const EVENT_BEAT_ROUTE_14_TRAINER_2
+	const EVENT_BEAT_ROUTE_14_TRAINER_3
+	const EVENT_BEAT_ROUTE_14_TRAINER_4
+	const EVENT_BEAT_ROUTE_14_TRAINER_5
+	const EVENT_BEAT_ROUTE_14_TRAINER_6
+	const EVENT_BEAT_ROUTE_14_TRAINER_7
+	const EVENT_BEAT_ROUTE_14_TRAINER_8
+	const EVENT_BEAT_ROUTE_14_TRAINER_9
+	const EVENT_4AB
+	const EVENT_4AC
+	const EVENT_4AD
+	const EVENT_4AE
+	const EVENT_4AF
+	const EVENT_4B0
+	const EVENT_BEAT_ROUTE_15_TRAINER_0
+	const EVENT_BEAT_ROUTE_15_TRAINER_1
+	const EVENT_BEAT_ROUTE_15_TRAINER_2
+	const EVENT_BEAT_ROUTE_15_TRAINER_3
+	const EVENT_BEAT_ROUTE_15_TRAINER_4
+	const EVENT_BEAT_ROUTE_15_TRAINER_5
+	const EVENT_BEAT_ROUTE_15_TRAINER_6
+	const EVENT_BEAT_ROUTE_15_TRAINER_7
+	const EVENT_BEAT_ROUTE_15_TRAINER_8
+	const EVENT_BEAT_ROUTE_15_TRAINER_9
+	const EVENT_4BB
+	const EVENT_4BC
+	const EVENT_4BD
+	const EVENT_4BE
+	const EVENT_4BF
+	const EVENT_4C0
+	const EVENT_BEAT_ROUTE_16_TRAINER_0
+	const EVENT_BEAT_ROUTE_16_TRAINER_1
+	const EVENT_BEAT_ROUTE_16_TRAINER_2
+	const EVENT_BEAT_ROUTE_16_TRAINER_3
+	const EVENT_BEAT_ROUTE_16_TRAINER_4
+	const EVENT_BEAT_ROUTE_16_TRAINER_5
+	const EVENT_4C7
+	const EVENT_FIGHT_ROUTE16_SNORLAX
+	const EVENT_BEAT_ROUTE16_SNORLAX
+	const EVENT_4CA
+	const EVENT_4CB
+	const EVENT_4CC
+	const EVENT_4CD
+	const EVENT_4CE
+	const EVENT_4CF
+	const EVENT_4D0
+	const EVENT_BEAT_ROUTE_17_TRAINER_0
+	const EVENT_BEAT_ROUTE_17_TRAINER_1
+	const EVENT_BEAT_ROUTE_17_TRAINER_2
+	const EVENT_BEAT_ROUTE_17_TRAINER_3
+	const EVENT_BEAT_ROUTE_17_TRAINER_4
+	const EVENT_BEAT_ROUTE_17_TRAINER_5
+	const EVENT_BEAT_ROUTE_17_TRAINER_6
+	const EVENT_BEAT_ROUTE_17_TRAINER_7
+	const EVENT_BEAT_ROUTE_17_TRAINER_8
+	const EVENT_BEAT_ROUTE_17_TRAINER_9
+	const EVENT_4DB
+	const EVENT_4DC
+	const EVENT_4DD
+	const EVENT_4DE
+	const EVENT_4DF
+	const EVENT_4E0
+	const EVENT_BEAT_ROUTE_18_TRAINER_0
+	const EVENT_BEAT_ROUTE_18_TRAINER_1
+	const EVENT_BEAT_ROUTE_18_TRAINER_2
+	const EVENT_4E4
+	const EVENT_4E5
+	const EVENT_4E6
+	const EVENT_4E7
+	const EVENT_4E8
+	const EVENT_4E9
+	const EVENT_4EA
+	const EVENT_4EB
+	const EVENT_4EC
+	const EVENT_4ED
+	const EVENT_4EE
+	const EVENT_4EF
+	const EVENT_4F0
+	const EVENT_BEAT_ROUTE_19_TRAINER_0
+	const EVENT_BEAT_ROUTE_19_TRAINER_1
+	const EVENT_BEAT_ROUTE_19_TRAINER_2
+	const EVENT_BEAT_ROUTE_19_TRAINER_3
+	const EVENT_BEAT_ROUTE_19_TRAINER_4
+	const EVENT_BEAT_ROUTE_19_TRAINER_5
+	const EVENT_BEAT_ROUTE_19_TRAINER_6
+	const EVENT_BEAT_ROUTE_19_TRAINER_7
+	const EVENT_BEAT_ROUTE_19_TRAINER_8
+	const EVENT_BEAT_ROUTE_19_TRAINER_9
+	const EVENT_4FB
+	const EVENT_4FC
+	const EVENT_4FD
+	const EVENT_4FE
+	const EVENT_4FF
+	const EVENT_500
+	const EVENT_BEAT_ROUTE_20_TRAINER_0
+	const EVENT_BEAT_ROUTE_20_TRAINER_2
+	const EVENT_BEAT_ROUTE_20_TRAINER_3
+	const EVENT_BEAT_ROUTE_20_TRAINER_4
+	const EVENT_BEAT_ROUTE_20_TRAINER_5
+	const EVENT_BEAT_ROUTE_20_TRAINER_6
+	const EVENT_BEAT_ROUTE_20_TRAINER_7
+	const EVENT_BEAT_ROUTE_20_TRAINER_8
+	const EVENT_BEAT_ROUTE_20_TRAINER_9
+	const EVENT_BEAT_ROUTE_20_TRAINER_10
+	const EVENT_50B
+	const EVENT_50C
+	const EVENT_50D
+	const EVENT_50E
+	const EVENT_50F
+	const EVENT_510
+	const EVENT_BEAT_ROUTE_21_TRAINER_0
+	const EVENT_BEAT_ROUTE_21_TRAINER_1
+	const EVENT_BEAT_ROUTE_21_TRAINER_2
+	const EVENT_BEAT_ROUTE_21_TRAINER_3
+	const EVENT_BEAT_ROUTE_21_TRAINER_4
+	const EVENT_BEAT_ROUTE_21_TRAINER_5
+	const EVENT_BEAT_ROUTE_21_TRAINER_6
+	const EVENT_BEAT_ROUTE_21_TRAINER_7
+	const EVENT_BEAT_ROUTE_21_TRAINER_8
+	const EVENT_51A
+	const EVENT_51B
+	const EVENT_51C
+	const EVENT_51D
+	const EVENT_51E
+	const EVENT_51F
+	const EVENT_520
+	const EVENT_521
+	const EVENT_522
+	const EVENT_523
+	const EVENT_524
+	const EVENT_525
+	const EVENT_526
+	const EVENT_527
+	const EVENT_528
+	const EVENT_529
+	const EVENT_52A
+	const EVENT_52B
+	const EVENT_52C
+	const EVENT_52D
+	const EVENT_52E
+	const EVENT_52F
+	const EVENT_530
+	const EVENT_531
+	const EVENT_532
+	const EVENT_533
+	const EVENT_534
+	const EVENT_535
+	const EVENT_536
+	const EVENT_537
+	const EVENT_538
+	const EVENT_BEAT_VICTORY_ROAD_2_TRAINER_0
+	const EVENT_BEAT_VICTORY_ROAD_2_TRAINER_2
+	const EVENT_BEAT_VICTORY_ROAD_2_TRAINER_3
+	const EVENT_BEAT_VICTORY_ROAD_2_TRAINER_4
+	const EVENT_BEAT_VICTORY_ROAD_2_TRAINER_5
+	const EVENT_BEAT_VICTORY_ROAD_2_TRAINER_6
+	const EVENT_53F
+	const EVENT_540
+	const EVENT_541
+	const EVENT_BEAT_ROUTE_24_TRAINER_0
+	const EVENT_BEAT_ROUTE_24_TRAINER_2
+	const EVENT_BEAT_ROUTE_24_TRAINER_3
+	const EVENT_BEAT_ROUTE_24_TRAINER_4
+	const EVENT_BEAT_ROUTE_24_TRAINER_5
+	const EVENT_BEAT_ROUTE_24_TRAINER_6
+	const EVENT_548
+	const EVENT_549
+	const EVENT_54A
+	const EVENT_54B
+	const EVENT_54C
+	const EVENT_54D
+	const EVENT_54E
+	const EVENT_54F
+	const EVENT_550
+	const EVENT_BEAT_ROUTE_25_TRAINER_0
+	const EVENT_BEAT_ROUTE_25_TRAINER_2
+	const EVENT_BEAT_ROUTE_25_TRAINER_3
+	const EVENT_BEAT_ROUTE_25_TRAINER_4
+	const EVENT_BEAT_ROUTE_25_TRAINER_5
+	const EVENT_BEAT_ROUTE_25_TRAINER_6
+	const EVENT_BEAT_ROUTE_25_TRAINER_7
+	const EVENT_BEAT_ROUTE_25_TRAINER_8
+	const EVENT_BEAT_ROUTE_25_TRAINER_9
+	const EVENT_55A
+	const EVENT_55B
+	const EVENT_55C
+	const EVENT_55D
+	const EVENT_55E
+	const EVENT_55F
+	const EVENT_560
+	const EVENT_561
+	const EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_0
+	const EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_1
+	const EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_2
+	const EVENT_565
+	const EVENT_566
+	const EVENT_567
+	const EVENT_568
+	const EVENT_569
+	const EVENT_56A
+	const EVENT_56B
+	const EVENT_56C
+	const EVENT_56D
+	const EVENT_56E
+	const EVENT_56F
+	const EVENT_570
+	const EVENT_BEAT_MT_MOON_1_TRAINER_0
+	const EVENT_BEAT_MT_MOON_1_TRAINER_2
+	const EVENT_BEAT_MT_MOON_1_TRAINER_3
+	const EVENT_BEAT_MT_MOON_1_TRAINER_4
+	const EVENT_BEAT_MT_MOON_1_TRAINER_5
+	const EVENT_BEAT_MT_MOON_1_TRAINER_6
+	const EVENT_BEAT_MT_MOON_1_TRAINER_7
+	const EVENT_578
+	const EVENT_579
+	const EVENT_BEAT_MT_MOON_3_TRAINER_0
+	const EVENT_BEAT_MT_MOON_3_TRAINER_2
+	const EVENT_BEAT_MT_MOON_3_TRAINER_3
+	const EVENT_BEAT_MT_MOON_3_TRAINER_4
+	const EVENT_57E
+	const EVENT_57F
+	const EVENT_580
+	const EVENT_581
+	const EVENT_582
+	const EVENT_583
+	const EVENT_584
+	const EVENT_585
+	const EVENT_586
+	const EVENT_587
+	const EVENT_588
+	const EVENT_589
+	const EVENT_58A
+	const EVENT_58B
+	const EVENT_58C
+	const EVENT_58D
+	const EVENT_58E
+	const EVENT_58F
+	const EVENT_590
+	const EVENT_591
+	const EVENT_592
+	const EVENT_593
+	const EVENT_594
+	const EVENT_595
+	const EVENT_596
+	const EVENT_597
+	const EVENT_598
+	const EVENT_599
+	const EVENT_59A
+	const EVENT_59B
+	const EVENT_59C
+	const EVENT_59D
+	const EVENT_59E
+	const EVENT_59F
+	const EVENT_5A0
+	const EVENT_5A1
+	const EVENT_5A2
+	const EVENT_5A3
+	const EVENT_5A4
+	const EVENT_5A5
+	const EVENT_5A6
+	const EVENT_5A7
+	const EVENT_5A8
+	const EVENT_5A9
+	const EVENT_5AA
+	const EVENT_5AB
+	const EVENT_5AC
+	const EVENT_5AD
+	const EVENT_5AE
+	const EVENT_5AF
+	const EVENT_5B0
+	const EVENT_5B1
+	const EVENT_5B2
+	const EVENT_5B3
+	const EVENT_5B4
+	const EVENT_5B5
+	const EVENT_5B6
+	const EVENT_5B7
+	const EVENT_5B8
+	const EVENT_5B9
+	const EVENT_5BA
+	const EVENT_5BB
+	const EVENT_5BC
+	const EVENT_5BD
+	const EVENT_5BE
+	const EVENT_5BF
+	const EVENT_5C0
+	const EVENT_5C1
+	const EVENT_5C2
+	const EVENT_5C3
+	const EVENT_BEAT_SS_ANNE_5_TRAINER_0
+	const EVENT_BEAT_SS_ANNE_5_TRAINER_1
+	const EVENT_5C6
+	const EVENT_5C7
+	const EVENT_5C8
+	const EVENT_5C9
+	const EVENT_5CA
+	const EVENT_5CB
+	const EVENT_5CC
+	const EVENT_5CD
+	const EVENT_5CE
+	const EVENT_5CF
+	const EVENT_5D0
+	const EVENT_5D1
+	const EVENT_5D2
+	const EVENT_5D3
+	const EVENT_5D4
+	const EVENT_5D5
+	const EVENT_5D6
+	const EVENT_5D7
+	const EVENT_5D8
+	const EVENT_5D9
+	const EVENT_5DA
+	const EVENT_5DB
+	const EVENT_5DC
+	const EVENT_5DD
+	const EVENT_5DE
+	const EVENT_5DF
+	const EVENT_5E0
+	const EVENT_5E1
+	const EVENT_SS_ANNE_LEFT
+	const EVENT_5E3
+	const EVENT_5E4
+	const EVENT_5E5
+	const EVENT_5E6
+	const EVENT_5E7
+	const EVENT_5E8
+	const EVENT_5E9
+	const EVENT_5EA
+	const EVENT_5EB
+	const EVENT_5EC
+	const EVENT_5ED
+	const EVENT_5EE
+	const EVENT_5EF
+	const EVENT_5F0
+	const EVENT_BEAT_SS_ANNE_8_TRAINER_0
+	const EVENT_BEAT_SS_ANNE_8_TRAINER_1
+	const EVENT_BEAT_SS_ANNE_8_TRAINER_2
+	const EVENT_BEAT_SS_ANNE_8_TRAINER_3
+	const EVENT_5F5
+	const EVENT_5F6
+	const EVENT_5F7
+	const EVENT_5F8
+	const EVENT_5F9
+	const EVENT_5FA
+	const EVENT_5FB
+	const EVENT_5FC
+	const EVENT_5FD
+	const EVENT_5FE
+	const EVENT_5FF
+	const EVENT_600
+	const EVENT_BEAT_SS_ANNE_9_TRAINER_0
+	const EVENT_BEAT_SS_ANNE_9_TRAINER_1
+	const EVENT_BEAT_SS_ANNE_9_TRAINER_2
+	const EVENT_BEAT_SS_ANNE_9_TRAINER_3
+	const EVENT_605
+	const EVENT_606
+	const EVENT_607
+	const EVENT_608
+	const EVENT_609
+	const EVENT_60A
+	const EVENT_60B
+	const EVENT_60C
+	const EVENT_60D
+	const EVENT_60E
+	const EVENT_60F
+	const EVENT_610
+	const EVENT_BEAT_SS_ANNE_10_TRAINER_0
+	const EVENT_BEAT_SS_ANNE_10_TRAINER_1
+	const EVENT_BEAT_SS_ANNE_10_TRAINER_2
+	const EVENT_BEAT_SS_ANNE_10_TRAINER_3
+	const EVENT_BEAT_SS_ANNE_10_TRAINER_4
+	const EVENT_BEAT_SS_ANNE_10_TRAINER_5
+	const EVENT_617
+	const EVENT_618
+	const EVENT_619
+	const EVENT_61A
+	const EVENT_61B
+	const EVENT_61C
+	const EVENT_61D
+	const EVENT_61E
+	const EVENT_61F
+	const EVENT_620
+	const EVENT_621
+	const EVENT_622
+	const EVENT_623
+	const EVENT_624
+	const EVENT_625
+	const EVENT_626
+	const EVENT_627
+	const EVENT_628
+	const EVENT_629
+	const EVENT_62A
+	const EVENT_62B
+	const EVENT_62C
+	const EVENT_62D
+	const EVENT_62E
+	const EVENT_62F
+	const EVENT_630
+	const EVENT_631
+	const EVENT_632
+	const EVENT_633
+	const EVENT_634
+	const EVENT_635
+	const EVENT_636
+	const EVENT_637
+	const EVENT_638
+	const EVENT_639
+	const EVENT_63A
+	const EVENT_63B
+	const EVENT_63C
+	const EVENT_63D
+	const EVENT_63E
+	const EVENT_63F
+	const EVENT_640
+	const EVENT_641
+	const EVENT_642
+	const EVENT_643
+	const EVENT_644
+	const EVENT_645
+	const EVENT_646
+	const EVENT_647
+	const EVENT_648
+	const EVENT_649
+	const EVENT_64A
+	const EVENT_64B
+	const EVENT_64C
+	const EVENT_64D
+	const EVENT_64E
+	const EVENT_64F
+	const EVENT_650
+	const EVENT_651
+	const EVENT_652
+	const EVENT_653
+	const EVENT_654
+	const EVENT_655
+	const EVENT_656
+	const EVENT_657
+	const EVENT_658
+	const EVENT_659
+	const EVENT_65A
+	const EVENT_65B
+	const EVENT_65C
+	const EVENT_65D
+	const EVENT_65E
+	const EVENT_65F
+	const EVENT_660
+	const EVENT_BEAT_VICTORY_ROAD_3_TRAINER_0
+	const EVENT_BEAT_VICTORY_ROAD_3_TRAINER_2
+	const EVENT_BEAT_VICTORY_ROAD_3_TRAINER_3
+	const EVENT_BEAT_VICTORY_ROAD_3_TRAINER_4
+	const EVENT_665
+	const EVENT_666
+	const EVENT_667
+	const EVENT_668
+	const EVENT_669
+	const EVENT_66A
+	const EVENT_66B
+	const EVENT_66C
+	const EVENT_66D
+	const EVENT_66E
+	const EVENT_66F
+	const EVENT_670
+	const EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_0
+	const EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_2
+	const EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_3
+	const EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_4
+	const EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_5
+	const EVENT_676
+	const EVENT_677
+	const EVENT_678
+	const EVENT_679
+	const EVENT_67A
+	const EVENT_67B
+	const EVENT_67C
+	const EVENT_67D
+	const EVENT_67E
+	const EVENT_67F
+	const EVENT_680
+	const EVENT_BEAT_ROCKET_HIDEOUT_2_TRAINER_0
+	const EVENT_682
+	const EVENT_683
+	const EVENT_684
+	const EVENT_685
+	const EVENT_686
+	const EVENT_687
+	const EVENT_688
+	const EVENT_689
+	const EVENT_68A
+	const EVENT_68B
+	const EVENT_68C
+	const EVENT_68D
+	const EVENT_68E
+	const EVENT_68F
+	const EVENT_690
+	const EVENT_BEAT_ROCKET_HIDEOUT_3_TRAINER_0
+	const EVENT_BEAT_ROCKET_HIDEOUT_3_TRAINER_2
+	const EVENT_693
+	const EVENT_694
+	const EVENT_695
+	const EVENT_696
+	const EVENT_697
+	const EVENT_698
+	const EVENT_699
+	const EVENT_69A
+	const EVENT_69B
+	const EVENT_69C
+	const EVENT_69D
+	const EVENT_69E
+	const EVENT_69F
+	const EVENT_6A0
+	const EVENT_6A1
+	const EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0
+	const EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2
+	const EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_3
+	const EVENT_6A5
+	const EVENT_6A6
+	const EVENT_6A7
+	const EVENT_6A8
+	const EVENT_6A9
+	const EVENT_6AA
+	const EVENT_6AB
+	const EVENT_6AC
+	const EVENT_6AD
+	const EVENT_6AE
+	const EVENT_6AF
+	const EVENT_6B0
+	const EVENT_6B1
+	const EVENT_6B2
+	const EVENT_6B3
+	const EVENT_6B4
+	const EVENT_6B5
+	const EVENT_6B6
+	const EVENT_6B7
+	const EVENT_6B8
+	const EVENT_6B9
+	const EVENT_6BA
+	const EVENT_6BB
+	const EVENT_6BC
+	const EVENT_6BD
+	const EVENT_6BE
+	const EVENT_6BF
+	const EVENT_6C0
+	const EVENT_6C1
+	const EVENT_6C2
+	const EVENT_6C3
+	const EVENT_6C4
+	const EVENT_6C5
+	const EVENT_6C6
+	const EVENT_6C7
+	const EVENT_6C8
+	const EVENT_6C9
+	const EVENT_6CA
+	const EVENT_6CB
+	const EVENT_6CC
+	const EVENT_6CD
+	const EVENT_6CE
+	const EVENT_6CF
+	const EVENT_6D0
+	const EVENT_6D1
+	const EVENT_6D2
+	const EVENT_6D3
+	const EVENT_6D4
+	const EVENT_6D5
+	const EVENT_6D6
+	const EVENT_6D7
+	const EVENT_6D8
+	const EVENT_6D9
+	const EVENT_6DA
+	const EVENT_6DB
+	const EVENT_6DC
+	const EVENT_6DD
+	const EVENT_6DE
+	const EVENT_6DF
+	const EVENT_6E0
+	const EVENT_6E1
+	const EVENT_6E2
+	const EVENT_6E3
+	const EVENT_6E4
+	const EVENT_6E5
+	const EVENT_6E6
+	const EVENT_6E7
+	const EVENT_6E8
+	const EVENT_6E9
+	const EVENT_6EA
+	const EVENT_6EB
+	const EVENT_6EC
+	const EVENT_6ED
+	const EVENT_6EE
+	const EVENT_6EF
+	const EVENT_6F0
+	const EVENT_6F1
+	const EVENT_BEAT_SILPH_CO_2F_TRAINER_0
+	const EVENT_BEAT_SILPH_CO_2F_TRAINER_1
+	const EVENT_BEAT_SILPH_CO_2F_TRAINER_2
+	const EVENT_BEAT_SILPH_CO_2F_TRAINER_3
+	const EVENT_6F6
+	const EVENT_6F7
+	const EVENT_6F8
+	const EVENT_6F9
+	const EVENT_6FA
+	const EVENT_6FB
+	const EVENT_6FC
+	const EVENT_6FD
+	const EVENT_6FE
+	const EVENT_6FF
+	const EVENT_700
+	const EVENT_701
+	const EVENT_BEAT_SILPH_CO_3F_TRAINER_0
+	const EVENT_BEAT_SILPH_CO_3F_TRAINER_1
+	const EVENT_704
+	const EVENT_705
+	const EVENT_706
+	const EVENT_707
+	const EVENT_708
+	const EVENT_709
+	const EVENT_70A
+	const EVENT_70B
+	const EVENT_70C
+	const EVENT_70D
+	const EVENT_70E
+	const EVENT_70F
+	const EVENT_710
+	const EVENT_711
+	const EVENT_BEAT_SILPH_CO_4F_TRAINER_0
+	const EVENT_BEAT_SILPH_CO_4F_TRAINER_2
+	const EVENT_BEAT_SILPH_CO_4F_TRAINER_3
+	const EVENT_715
+	const EVENT_716
+	const EVENT_717
+	const EVENT_718
+	const EVENT_719
+	const EVENT_71A
+	const EVENT_71B
+	const EVENT_71C
+	const EVENT_71D
+	const EVENT_71E
+	const EVENT_71F
+	const EVENT_720
+	const EVENT_721
+	const EVENT_BEAT_SILPH_CO_5F_TRAINER_0
+	const EVENT_BEAT_SILPH_CO_5F_TRAINER_2
+	const EVENT_BEAT_SILPH_CO_5F_TRAINER_3
+	const EVENT_BEAT_SILPH_CO_5F_TRAINER_4
+	const EVENT_726
+	const EVENT_727
+	const EVENT_728
+	const EVENT_729
+	const EVENT_72A
+	const EVENT_72B
+	const EVENT_72C
+	const EVENT_72D
+	const EVENT_72E
+	const EVENT_72F
+	const EVENT_730
+	const EVENT_731
+	const EVENT_732
+	const EVENT_733
+	const EVENT_734
+	const EVENT_735
+	const EVENT_BEAT_SILPH_CO_6F_TRAINER_0
+	const EVENT_BEAT_SILPH_CO_6F_TRAINER_2
+	const EVENT_BEAT_SILPH_CO_6F_TRAINER_3
+	const EVENT_739
+	const EVENT_73A
+	const EVENT_73B
+	const EVENT_73C
+	const EVENT_73D
+	const EVENT_73E
+	const EVENT_73F
+	const EVENT_740
+	const EVENT_741
+	const EVENT_742
+	const EVENT_743
+	const EVENT_744
+	const EVENT_BEAT_SILPH_CO_7F_TRAINER_0
+	const EVENT_BEAT_SILPH_CO_7F_TRAINER_2
+	const EVENT_BEAT_SILPH_CO_7F_TRAINER_3
+	const EVENT_BEAT_SILPH_CO_7F_TRAINER_4
+	const EVENT_749
+	const EVENT_74A
+	const EVENT_74B
+	const EVENT_74C
+	const EVENT_74D
+	const EVENT_74E
+	const EVENT_74F
+	const EVENT_750
+	const EVENT_751
+	const EVENT_BEAT_SILPH_CO_8F_TRAINER_0
+	const EVENT_BEAT_SILPH_CO_8F_TRAINER_1
+	const EVENT_BEAT_SILPH_CO_8F_TRAINER_2
+	const EVENT_755
+	const EVENT_756
+	const EVENT_757
+	const EVENT_758
+	const EVENT_759
+	const EVENT_75A
+	const EVENT_75B
+	const EVENT_75C
+	const EVENT_75D
+	const EVENT_75E
+	const EVENT_75F
+	const EVENT_760
+	const EVENT_761
+	const EVENT_BEAT_SILPH_CO_9F_TRAINER_0
+	const EVENT_BEAT_SILPH_CO_9F_TRAINER_1
+	const EVENT_BEAT_SILPH_CO_9F_TRAINER_2
+	const EVENT_765
+	const EVENT_766
+	const EVENT_767
+	const EVENT_768
+	const EVENT_769
+	const EVENT_76A
+	const EVENT_76B
+	const EVENT_76C
+	const EVENT_76D
+	const EVENT_76E
+	const EVENT_76F
+	const EVENT_770
+	const EVENT_BEAT_SILPH_CO_10F_TRAINER_0
+	const EVENT_BEAT_SILPH_CO_10F_TRAINER_1
+	const EVENT_773
+	const EVENT_774
+	const EVENT_775
+	const EVENT_776
+	const EVENT_777
+	const EVENT_778
+	const EVENT_779
+	const EVENT_77A
+	const EVENT_77B
+	const EVENT_77C
+	const EVENT_77D
+	const EVENT_77E
+	const EVENT_77F
+	const EVENT_780
+	const EVENT_781
+	const EVENT_782
+	const EVENT_783
+	const EVENT_BEAT_SILPH_CO_11F_TRAINER_0
+	const EVENT_BEAT_SILPH_CO_11F_TRAINER_1
+	const EVENT_786
+	const EVENT_787
+	const EVENT_788
+	const EVENT_789
+	const EVENT_78A
+	const EVENT_78B
+	const EVENT_78C
+	const EVENT_78D
+	const EVENT_78E
+	const EVENT_78F
+	const EVENT_790
+	const EVENT_791
+	const EVENT_792
+	const EVENT_793
+	const EVENT_794
+	const EVENT_795
+	const EVENT_796
+	const EVENT_797
+	const EVENT_798
+	const EVENT_799
+	const EVENT_79A
+	const EVENT_79B
+	const EVENT_79C
+	const EVENT_79D
+	const EVENT_79E
+	const EVENT_79F
+	const EVENT_7A0
+	const EVENT_7A1
+	const EVENT_7A2
+	const EVENT_7A3
+	const EVENT_7A4
+	const EVENT_7A5
+	const EVENT_7A6
+	const EVENT_7A7
+	const EVENT_7A8
+	const EVENT_7A9
+	const EVENT_7AA
+	const EVENT_7AB
+	const EVENT_7AC
+	const EVENT_7AD
+	const EVENT_7AE
+	const EVENT_7AF
+	const EVENT_7B0
+	const EVENT_7B1
+	const EVENT_7B2
+	const EVENT_7B3
+	const EVENT_7B4
+	const EVENT_7B5
+	const EVENT_7B6
+	const EVENT_7B7
+	const EVENT_7B8
+	const EVENT_7B9
+	const EVENT_7BA
+	const EVENT_7BB
+	const EVENT_7BC
+	const EVENT_7BD
+	const EVENT_7BE
+	const EVENT_7BF
+	const EVENT_7C0
+	const EVENT_7C1
+	const EVENT_7C2
+	const EVENT_7C3
+	const EVENT_7C4
+	const EVENT_7C5
+	const EVENT_7C6
+	const EVENT_7C7
+	const EVENT_7C8
+	const EVENT_7C9
+	const EVENT_7CA
+	const EVENT_7CB
+	const EVENT_7CC
+	const EVENT_7CD
+	const EVENT_7CE
+	const EVENT_7CF
+	const EVENT_7D0
+	const EVENT_7D1
+	const EVENT_7D2
+	const EVENT_7D3
+	const EVENT_7D4
+	const EVENT_7D5
+	const EVENT_7D6
+	const EVENT_7D7
+	const EVENT_7D8
+	const EVENT_7D9
+	const EVENT_7DA
+	const EVENT_7DB
+	const EVENT_7DC
+	const EVENT_7DD
+	const EVENT_7DE
+	const EVENT_7DF
+	const EVENT_7E0
+	const EVENT_7E1
+	const EVENT_7E2
+	const EVENT_7E3
+	const EVENT_7E4
+	const EVENT_7E5
+	const EVENT_7E6
+	const EVENT_7E7
+	const EVENT_7E8
+	const EVENT_7E9
+	const EVENT_7EA
+	const EVENT_7EB
+	const EVENT_7EC
+	const EVENT_7ED
+	const EVENT_7EE
+	const EVENT_7EF
+	const EVENT_7F0
+	const EVENT_7F1
+	const EVENT_7F2
+	const EVENT_7F3
+	const EVENT_7F4
+	const EVENT_7F5
+	const EVENT_7F6
+	const EVENT_7F7
+	const EVENT_7F8
+	const EVENT_7F9
+	const EVENT_7FA
+	const EVENT_7FB
+	const EVENT_7FC
+	const EVENT_7FD
+	const EVENT_7FE
+	const EVENT_7FF
+	const EVENT_800
+	const EVENT_BEAT_MANSION_2_TRAINER_0
+	const EVENT_802
+	const EVENT_803
+	const EVENT_804
+	const EVENT_805
+	const EVENT_806
+	const EVENT_807
+	const EVENT_808
+	const EVENT_809
+	const EVENT_80A
+	const EVENT_80B
+	const EVENT_80C
+	const EVENT_80D
+	const EVENT_80E
+	const EVENT_80F
+	const EVENT_810
+	const EVENT_BEAT_MANSION_3_TRAINER_0
+	const EVENT_BEAT_MANSION_3_TRAINER_2
+	const EVENT_813
+	const EVENT_814
+	const EVENT_815
+	const EVENT_816
+	const EVENT_817
+	const EVENT_818
+	const EVENT_819
+	const EVENT_81A
+	const EVENT_81B
+	const EVENT_81C
+	const EVENT_81D
+	const EVENT_81E
+	const EVENT_81F
+	const EVENT_820
+	const EVENT_BEAT_MANSION_4_TRAINER_0
+	const EVENT_BEAT_MANSION_4_TRAINER_2
+	const EVENT_823
+	const EVENT_824
+	const EVENT_825
+	const EVENT_826
+	const EVENT_827
+	const EVENT_828
+	const EVENT_829
+	const EVENT_82A
+	const EVENT_82B
+	const EVENT_82C
+	const EVENT_82D
+	const EVENT_82E
+	const EVENT_82F
+	const EVENT_830
+	const EVENT_831
+	const EVENT_832
+	const EVENT_833
+	const EVENT_834
+	const EVENT_835
+	const EVENT_836
+	const EVENT_837
+	const EVENT_838
+	const EVENT_839
+	const EVENT_83A
+	const EVENT_83B
+	const EVENT_83C
+	const EVENT_83D
+	const EVENT_83E
+	const EVENT_83F
+	const EVENT_840
+	const EVENT_841
+	const EVENT_842
+	const EVENT_843
+	const EVENT_844
+	const EVENT_845
+	const EVENT_846
+	const EVENT_847
+	const EVENT_848
+	const EVENT_849
+	const EVENT_84A
+	const EVENT_84B
+	const EVENT_84C
+	const EVENT_84D
+	const EVENT_84E
+	const EVENT_84F
+	const EVENT_850
+	const EVENT_851
+	const EVENT_852
+	const EVENT_853
+	const EVENT_854
+	const EVENT_855
+	const EVENT_856
+	const EVENT_857
+	const EVENT_858
+	const EVENT_859
+	const EVENT_85A
+	const EVENT_85B
+	const EVENT_85C
+	const EVENT_85D
+	const EVENT_85E
+	const EVENT_85F
+	const EVENT_860
+	const EVENT_861
+	const EVENT_862
+	const EVENT_863
+	const EVENT_864
+	const EVENT_865
+	const EVENT_866
+	const EVENT_867
+	const EVENT_868
+	const EVENT_869
+	const EVENT_86A
+	const EVENT_86B
+	const EVENT_86C
+	const EVENT_86D
+	const EVENT_86E
+	const EVENT_86F
+	const EVENT_870
+	const EVENT_871
+	const EVENT_872
+	const EVENT_873
+	const EVENT_874
+	const EVENT_875
+	const EVENT_876
+	const EVENT_877
+	const EVENT_878
+	const EVENT_879
+	const EVENT_87A
+	const EVENT_87B
+	const EVENT_87C
+	const EVENT_87D
+	const EVENT_87E
+	const EVENT_87F
+	const EVENT_880
+	const EVENT_881
+	const EVENT_882
+	const EVENT_883
+	const EVENT_884
+	const EVENT_885
+	const EVENT_886
+	const EVENT_887
+	const EVENT_888
+	const EVENT_889
+	const EVENT_88A
+	const EVENT_88B
+	const EVENT_88C
+	const EVENT_88D
+	const EVENT_88E
+	const EVENT_88F
+	const EVENT_890
+	const EVENT_891
+	const EVENT_892
+	const EVENT_893
+	const EVENT_894
+	const EVENT_895
+	const EVENT_896
+	const EVENT_897
+	const EVENT_898
+	const EVENT_899
+	const EVENT_89A
+	const EVENT_89B
+	const EVENT_89C
+	const EVENT_89D
+	const EVENT_89E
+	const EVENT_89F
+	const EVENT_8A0
+	const EVENT_8A1
+	const EVENT_8A2
+	const EVENT_8A3
+	const EVENT_8A4
+	const EVENT_8A5
+	const EVENT_8A6
+	const EVENT_8A7
+	const EVENT_8A8
+	const EVENT_8A9
+	const EVENT_8AA
+	const EVENT_8AB
+	const EVENT_8AC
+	const EVENT_8AD
+	const EVENT_8AE
+	const EVENT_8AF
+	const EVENT_8B0
+	const EVENT_8B1
+	const EVENT_8B2
+	const EVENT_8B3
+	const EVENT_8B4
+	const EVENT_8B5
+	const EVENT_8B6
+	const EVENT_8B7
+	const EVENT_8B8
+	const EVENT_8B9
+	const EVENT_8BA
+	const EVENT_8BB
+	const EVENT_8BC
+	const EVENT_8BD
+	const EVENT_8BE
+	const EVENT_8BF
+	const EVENT_8C0
+	const EVENT_BEAT_UNKNOWN_DUNGEON_3_TRAINER_0
+	const EVENT_8C2
+	const EVENT_8C3
+	const EVENT_8C4
+	const EVENT_8C5
+	const EVENT_8C6
+	const EVENT_8C7
+	const EVENT_8C8
+	const EVENT_8C9
+	const EVENT_8CA
+	const EVENT_8CB
+	const EVENT_8CC
+	const EVENT_8CD
+	const EVENT_8CE
+	const EVENT_8CF
+	const EVENT_8D0
+	const EVENT_8D1
+	const EVENT_8D2
+	const EVENT_8D3
+	const EVENT_8D4
+	const EVENT_8D5
+	const EVENT_8D6
+	const EVENT_8D7
+	const EVENT_8D8
+	const EVENT_8D9
+	const EVENT_8DA
+	const EVENT_8DB
+	const EVENT_8DC
+	const EVENT_8DD
+	const EVENT_8DE
+	const EVENT_8DF
+	const EVENT_8E0
+	const EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
+	const EVENT_8E2
+	const EVENT_8E3
+	const EVENT_8E4
+	const EVENT_8E5
+	const EVENT_8E6
+	const EVENT_8E7
+	const EVENT_8E8
+	const EVENT_BEAT_BRUNOS_ROOM_TRAINER_0
+	const EVENT_8EA
+	const EVENT_8EB
+	const EVENT_8EC
+	const EVENT_8ED
+	const EVENT_8EE
+	const EVENT_8EF
+	const EVENT_8F0
+	const EVENT_BEAT_AGATHAS_ROOM_TRAINER_0
+	const EVENT_8F2
+	const EVENT_8F3
+	const EVENT_8F4
+	const EVENT_8F5
+	const EVENT_8F6
+	const EVENT_8F7
+	const EVENT_8F8
+	const EVENT_BEAT_LANCES_ROOM_TRAINER_0
+	const EVENT_8FA
+	const EVENT_8FB
+	const EVENT_8FC
+	const EVENT_8FD
+	const EVENT_8FE
+	const EVENT_8FF
+	const EVENT_900
+	const EVENT_901
+	const EVENT_902
+	const EVENT_903
+	const EVENT_904
+	const EVENT_905
+	const EVENT_906
+	const EVENT_907
+	const EVENT_908
+	const EVENT_909
+	const EVENT_90A
+	const EVENT_90B
+	const EVENT_90C
+	const EVENT_90D
+	const EVENT_90E
+	const EVENT_90F
+	const EVENT_910
+	const EVENT_BEAT_VICTORY_ROAD_1_TRAINER_0
+	const EVENT_BEAT_VICTORY_ROAD_1_TRAINER_1
+	const EVENT_913
+	const EVENT_914
+	const EVENT_915
+	const EVENT_916
+	const EVENT_917
+	const EVENT_918
+	const EVENT_919
+	const EVENT_91A
+	const EVENT_91B
+	const EVENT_91C
+	const EVENT_91D
+	const EVENT_91E
+	const EVENT_91F
+	const EVENT_920
+	const EVENT_921
+	const EVENT_922
+	const EVENT_923
+	const EVENT_924
+	const EVENT_925
+	const EVENT_926
+	const EVENT_927
+	const EVENT_928
+	const EVENT_929
+	const EVENT_92A
+	const EVENT_92B
+	const EVENT_92C
+	const EVENT_92D
+	const EVENT_92E
+	const EVENT_92F
+	const EVENT_930
+	const EVENT_931
+	const EVENT_932
+	const EVENT_933
+	const EVENT_934
+	const EVENT_935
+	const EVENT_936
+	const EVENT_937
+	const EVENT_938
+	const EVENT_939
+	const EVENT_93A
+	const EVENT_93B
+	const EVENT_93C
+	const EVENT_93D
+	const EVENT_93E
+	const EVENT_93F
+	const EVENT_940
+	const EVENT_941
+	const EVENT_942
+	const EVENT_943
+	const EVENT_944
+	const EVENT_945
+	const EVENT_946
+	const EVENT_947
+	const EVENT_948
+	const EVENT_949
+	const EVENT_94A
+	const EVENT_94B
+	const EVENT_94C
+	const EVENT_94D
+	const EVENT_94E
+	const EVENT_94F
+	const EVENT_950
+	const EVENT_951
+	const EVENT_952
+	const EVENT_953
+	const EVENT_954
+	const EVENT_955
+	const EVENT_956
+	const EVENT_957
+	const EVENT_958
+	const EVENT_959
+	const EVENT_95A
+	const EVENT_95B
+	const EVENT_95C
+	const EVENT_95D
+	const EVENT_95E
+	const EVENT_95F
+	const EVENT_960
+	const EVENT_961
+	const EVENT_962
+	const EVENT_963
+	const EVENT_964
+	const EVENT_965
+	const EVENT_966
+	const EVENT_967
+	const EVENT_968
+	const EVENT_969
+	const EVENT_96A
+	const EVENT_96B
+	const EVENT_96C
+	const EVENT_96D
+	const EVENT_96E
+	const EVENT_96F
+	const EVENT_970
+	const EVENT_971
+	const EVENT_972
+	const EVENT_973
+	const EVENT_974
+	const EVENT_975
+	const EVENT_976
+	const EVENT_977
+	const EVENT_978
+	const EVENT_979
+	const EVENT_97A
+	const EVENT_97B
+	const EVENT_97C
+	const EVENT_97D
+	const EVENT_97E
+	const EVENT_97F
+	const EVENT_980
+	const EVENT_981
+	const EVENT_982
+	const EVENT_983
+	const EVENT_984
+	const EVENT_985
+	const EVENT_986
+	const EVENT_987
+	const EVENT_988
+	const EVENT_989
+	const EVENT_98A
+	const EVENT_98B
+	const EVENT_98C
+	const EVENT_98D
+	const EVENT_98E
+	const EVENT_98F
+	const EVENT_990
+	const EVENT_991
+	const EVENT_992
+	const EVENT_993
+	const EVENT_994
+	const EVENT_995
+	const EVENT_996
+	const EVENT_997
+	const EVENT_998
+	const EVENT_999
+	const EVENT_99A
+	const EVENT_99B
+	const EVENT_99C
+	const EVENT_99D
+	const EVENT_99E
+	const EVENT_99F
+	const EVENT_9A0
+	const EVENT_9A1
+	const EVENT_9A2
+	const EVENT_9A3
+	const EVENT_9A4
+	const EVENT_9A5
+	const EVENT_9A6
+	const EVENT_9A7
+	const EVENT_9A8
+	const EVENT_9A9
+	const EVENT_9AA
+	const EVENT_9AB
+	const EVENT_9AC
+	const EVENT_9AD
+	const EVENT_9AE
+	const EVENT_9AF
+	const EVENT_9B0
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_0
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_2
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_3
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_4
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_5
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_6
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_7
+	const EVENT_BEAT_ROCK_TUNNEL_2_TRAINER_8
+	const EVENT_9B9
+	const EVENT_9BA
+	const EVENT_9BB
+	const EVENT_9BC
+	const EVENT_9BD
+	const EVENT_9BE
+	const EVENT_9BF
+	const EVENT_9C0
+	const EVENT_9C1
+	const EVENT_9C2
+	const EVENT_9C3
+	const EVENT_9C4
+	const EVENT_9C5
+	const EVENT_9C6
+	const EVENT_9C7
+	const EVENT_9C8
+	const EVENT_9C9
+	const EVENT_9CA
+	const EVENT_9CB
+	const EVENT_9CC
+	const EVENT_9CD
+	const EVENT_9CE
+	const EVENT_9CF
+	const EVENT_9D0
+	const EVENT_9D1
+	const EVENT_9D2
+	const EVENT_9D3
+	const EVENT_9D4
+	const EVENT_9D5
+	const EVENT_9D6
+	const EVENT_9D7
+	const EVENT_9D8
+	const EVENT_9D9
+	const EVENT_BEAT_SEAFOAM_ISLANDS_5_TRAINER_0
+	const EVENT_9DB
+	const EVENT_9DC
+	const EVENT_9DD
+	const EVENT_9DE
+	const EVENT_9DF
+	const EVENT_9E0
+	const EVENT_9E1
+	const EVENT_9E2
+	const EVENT_9E3
+	const EVENT_9E4
+	const EVENT_9E5
+	const EVENT_9E6
+	const EVENT_9E7
+	const EVENT_9E8
+	const EVENT_9E9
+	const EVENT_9EA
+	const EVENT_9EB
+	const EVENT_9EC
+	const EVENT_9ED
+	const EVENT_9EE
+	const EVENT_9EF
+	const EVENT_9F0
+	const EVENT_9F1
+	const EVENT_9F2
+	const EVENT_9F3
+	const EVENT_9F4
+	const EVENT_9F5
+	const EVENT_9F6
+	const EVENT_9F7
+	const EVENT_9F8
+	const EVENT_9F9
+	const EVENT_9FA
+	const EVENT_9FB
+	const EVENT_9FC
+	const EVENT_9FD
+	const EVENT_9FE
+	const EVENT_9FF
--- 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_003
 	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_78F
 	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
@@ -191,7 +189,7 @@
 	db "@"
 
 CinnabarGymQuiz_1ea8a: ; 1ea8a (7:6a8a)
-	ld hl, wd79c
+	EventFlagAddress hl, EVENT_2A8
 	predef_jump FlagActionPredef
 
 CinnabarGymQuiz_1ea92: ; 1ea92 (7:6a92)
@@ -208,6 +206,7 @@
 	ld hl, CinnabarGymQuizCorrectText
 	call PrintText
 	ld a, [$ffe0]
+	AdjustEventBit EVENT_2A8, 0
 	ld c, a
 	ld b, FLAG_SET
 	call CinnabarGymQuiz_1ea8a
@@ -221,9 +220,10 @@
 	call PrintText
 	ld a, [$ffdb]
 	add $2
+	AdjustEventBit EVENT_29A, 2
 	ld c, a
 	ld b, FLAG_TEST
-	ld hl, wd79a
+	EventFlagAddress hl, EVENT_29A
 	predef FlagActionPredef
 	ld a, c
 	and a
@@ -240,6 +240,7 @@
 	TX_ASM
 
 	ld a, [$ffe0]
+	AdjustEventBit EVENT_2A8, 0
 	ld c, a
 	ld b, FLAG_TEST
 	call CinnabarGymQuiz_1ea8a
@@ -277,6 +278,7 @@
 	push bc
 	ld a, [$ffdb]
 	ld [$ffe0], a
+	AdjustEventBit EVENT_2A8, 0
 	ld c, a
 	ld b, FLAG_TEST
 	call CinnabarGymQuiz_1ea8a
@@ -320,12 +322,11 @@
 	ld a, [wSpriteStateData1 + 9]
 	cp SPRITE_FACING_UP
 	ret nz
-	ld a, [wd7f2]
-	bit 7, a
+	CheckEvent EVENT_55F
 	jr nz, .asm_1ebd2
-	bit 3, a
+	CheckEventReuseA EVENT_55B
 	jr nz, .asm_1eb86
-	bit 6, a
+	CheckEventReuseA EVENT_55E
 	jr nz, .asm_1eb8b
 .asm_1eb86
 	tx_pre_jump BillsHouseMonitorText
@@ -354,8 +355,7 @@
 	call PlaySound
 	call WaitForSoundToFinish
 	call PlayDefaultMusic
-	ld hl, wd7f2
-	set 3, [hl]
+	SetEvent EVENT_55B
 	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_550
 	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_550
 	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_550
 	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_2E0, EVENT_2E1
 	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_003
 	jr nz, .label3
 	push hl
 	ld hl, PokedexRatingText_441cc
--- 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/macros.asm
+++ b/macros.asm
@@ -79,6 +79,432 @@
 coins equs "bcd2"
 money equs "bcd3"
 
+;\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 = 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 = -1 + event_fill_start
+event_fill_count = 1 + event_fill_count
+		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 = 1 + event_fill_count
+		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 -1 + event_fill_count
+				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 = -1 + event_fill_start
+event_fill_count = 1 + event_fill_count
+		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 = 1 + event_fill_count
+		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 -1 + event_fill_count
+				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
+;\1 = event index 1
+;\2 = event index 2
+CheckBothEventsSet: MACRO
+	IF ((\1) / 8) == ((\2) / 8)
+		ld a, [wEventFlags + ((\1) / 8)]
+		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
+
 ;\1 = r
 ;\2 = X
 ;\3 = Y
--- 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_9D0, EVENT_9D1
 	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_8F6
 	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_0C0
 	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_0C0
 	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_0C0
 	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_55E
 	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_55B
 	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_55D
+	SetEvent EVENT_550
 	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_55C
 	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_55C
 	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_019
 
 	; 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_018
 	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_018
 	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_8EE
 	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_180
 	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_180
 	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_1E0
 	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_1E0
 	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_1B9
 	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_1BA
 	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_1BA
 	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_1A9
 	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_1BC
 	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_1BC
 	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_1BB
 	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_1BB
 	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_1B9
 	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_1A9
 	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_1A8
 	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_1A9
 	jr z, .asm_48a2d
-	bit 0, a
+	CheckEventReuseA EVENT_1A8
 	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_18F
 	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_18F
 	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_18E
 	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_18E
 	ret
 .asm_48492
-	ld a, [wd778]
-	bit 5, a
+	CheckEvent EVENT_18D
 	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_18D
 	ret
 .asm_484b6
-	ld a, [wd778]
-	bit 4, a
+	CheckEvent EVENT_18C
 	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_18C
 	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_0A7
 	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_0A7
 	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_098
 	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_098
 	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_098
 	; 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_0A7
 	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_0BF
 	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_0BE
 	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_0BF
 	jr z, .asm_5c78d
-	bit 6, a
+	CheckEventReuseA EVENT_0BE
 	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_0BF
 	jr nz, .asm_5c821
 	ld hl, CeruleanGymText_5c82a
 	call PrintText
--- a/scripts/cinnabargym.asm
+++ b/scripts/cinnabargym.asm
@@ -15,8 +15,7 @@
 	bit 5, [hl]
 	res 5, [hl]
 	call nz, Func_3ead
-	ld hl, wd79b
-	res 7, [hl]
+	ResetEvent EVENT_2A7
 	ret
 CinnabarGymScript_75772: ; 75772 (1d:5772)
 	ld hl, Gym7CityName
@@ -98,9 +97,10 @@
 	jp z, CinnabarGymScript_75792
 	ld a, [wTrainerHeaderFlagBit]
 	ld [$ffdb], a
+	AdjustEventBit EVENT_29A, 2
 	ld c, a
 	ld b, FLAG_TEST
-	ld hl, wd79a
+	EventFlagAddress hl, EVENT_29A
 	call CinnabarGymScript_757f1
 	ld a, c
 	and a
@@ -112,15 +112,17 @@
 .asm_7581b
 	ld a, [wTrainerHeaderFlagBit]
 	ld [$ffdb], a
+	AdjustEventBit EVENT_29A, 2
 	ld c, a
 	ld b, FLAG_SET
-	ld hl, wd79a
+	EventFlagAddress hl, EVENT_29A
 	call CinnabarGymScript_757f1
 	ld a, [wTrainerHeaderFlagBit]
 	sub $2
+	AdjustEventBit EVENT_2A8, 0
 	ld c, a
 	ld b, FLAG_SET
-	ld hl, wd79c
+	EventFlagAddress hl, EVENT_2A8
 	call CinnabarGymScript_757f1
 	call Func_3ead
 	xor a
@@ -141,8 +143,7 @@
 	ld a, $a
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
-	ld hl, wd79a
-	set 1, [hl]
+	SetEvent EVENT_299
 	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_298
 	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_29A, EVENT_2A0
 
 	ld hl, wd126
 	set 5, [hl]
@@ -210,10 +206,9 @@
 
 CinnabarGymText1: ; 758df (1d:58df)
 	TX_ASM
-	ld a, [wd79a]
-	bit 1, a
+	CheckEvent EVENT_299
 	jr z, .asm_d9332
-	bit 0, a
+	CheckEventReuseA EVENT_298
 	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_29A
 	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_29B
 	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_29C
 	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_29D
 	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_29E
 	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_29F
 	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_2A0
 	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_299
 	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_278
+	ResetEvent EVENT_2E1
 	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_340
 	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_340
 	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_157
 	jr nz, .mineisbetter
 	ld hl, .normaltext
 	call PrintText
-	ld hl, wd771
-	set 6, [hl]
+	SetEvent EVENT_156
 	jr .done
 .mineisbetter
 	ld hl, .bettertext
 	call PrintText
-	ld hl, wd771
-	res 7, [hl]
+	ResetEvent EVENT_157
 .done
 	jp TextScriptEnd
 
@@ -52,19 +48,16 @@
 FanClubText2:
 ; seel fan
 	TX_ASM
-	ld a, [wd771]
-	bit 6, a
+	CheckEvent EVENT_156
 	jr nz, .mineisbetter
 	ld hl, .normaltext
 	call PrintText
-	ld hl, wd771
-	set 7, [hl]
+	SetEvent EVENT_157
 	jr .done
 .mineisbetter
 	ld hl, .bettertext
 	call PrintText
-	ld hl, wd771
-	res 6, [hl]
+	ResetEvent EVENT_156
 .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_350
 	ret nz
 	call CheckFightingMapTrainers
 	ld a, [wTrainerHeaderFlagBit]
 	and a
 	ret nz
-	ld a, [wd7b1]
-	bit 1, a
+	CheckEvent EVENT_351
 	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_351, 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_350
 	jp nz, .continue1
-	bit 1, a
+	CheckEventReuseA EVENT_351
 	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_356, EVENT_357
 	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_356, EVENT_350
 .done
 	jp TextScriptEnd
 
@@ -295,8 +287,7 @@
 FightingDojoText7: ; 5cf4e (17:4f4e)
 ; Hitmonchan Poké Ball
 	TX_ASM
-	ld a, [wd7b1]
-	and %11000000
+	CheckEitherEventSet EVENT_356, EVENT_357
 	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_357, EVENT_350
 
 	; 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_57E
 	jr nz, .asm_3b4e8
-	bit 7, a
+	CheckEventReuseA EVENT_57F
 	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_259
 	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_258
 	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_259
 	jr z, .asm_181b6
-	bit 0, a
+	CheckEventReuseA EVENT_258
 	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_259
 	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_238
 	jr nz, .subtract
 	ld b,GOLD_TEETH
 	call IsItemInBag
 	jr nz, .asm_3f30f
-	ld a, [wd78e]
-	bit 1, a
+	CheckEvent EVENT_239
 	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_239
 .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_238
 	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_901
 	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_901
 	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 EVENT_8E0, EVENT_907, 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]
+	ResetEvent EVENT_917
 	ld hl, wd734
 	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 EVENT_8E0, EVENT_8FF
 	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_2D7
 	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_2D7
 	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_2E0
 	jr nz, .asm_75d96
 	ld hl, Lab4Text_75dc6
 	call PrintText
@@ -75,17 +74,13 @@
 	call LoadFossilItemAndMonNameBank1D
 	ld hl, Lab4Text_75dd5
 	call PrintText
-	ld hl, wd7a3
-	set 2, [hl]
+	SetEvent EVENT_2E2
 	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_2E0, EVENT_2E1, EVENT_2E2
 	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_8FF
 	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_8FE
 	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_8FF
 	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_8FE
 	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_4CF
 	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_4CF
 	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_128
 	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_128
 	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_4CF
 	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_4CF
 	jr nz, .asm_c88d4
 	ld hl, LavenderMart_5c953
 	call PrintText
--- a/scripts/lorelei.asm
+++ b/scripts/lorelei.asm
@@ -15,8 +15,7 @@
 	ret z
 	ld hl, wd734
 	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_8E6
 	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_278
 	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_278
 	jr z, .asm_44392
-	res 0, [hl]
+	ResetEventReuseHL EVENT_278
 	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_278
 	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_278
 	jr z, .asm_520bf
-	res 0, [hl]
+	ResetEventReuseHL EVENT_278
 	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_278
 	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_278
 	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_579
 	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_579
 	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_57E, EVENT_57F
 	jp z, CheckFightingMapTrainers
 	ret
 
@@ -81,8 +78,7 @@
 	jp z, MtMoon3Script_49d58
 	call UpdateSprites
 	call Delay3
-	ld hl, wd7f6
-	set 1, [hl]
+	SetEvent EVENT_579
 	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_57E
 	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_579
 	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_57E
 	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_57F
 	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_068
 	jr nz, .asm_31a16
 	ld hl, Museum1FText_5c23d
 	call PrintText
 	jp Museum1FScriptEnd
 .asm_b8709
-	ld a, [wd754]
-	bit 0, a
+	CheckEvent EVENT_068
 	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_068
 	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_069
 	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_069
 	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_026
 	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_027
 	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_STOPPED_FROM_LEAVING_PALLET
+	SetEvent EVENT_FOLLOWED_OAK_INSIDE_LAB
 	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_038
 	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_520
+	ResetEventReuseHL EVENT_521
+	SetEventReuseHL EVENT_527
 	ld a, HS_ROUTE_22_RIVAL_1
 	ld [wcc4d], a
 	predef ShowObject
@@ -772,8 +762,7 @@
 OaksLabText28: ; 1d0ce (7:50ce)
 OaksLabText1: ; 1d0ce (7:50ce)
 	TX_ASM
-	ld a, [wd74b]
-	bit 0, a
+	CheckEvent EVENT_FOLLOWED_OAK_INSIDE_LAB
 	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_006
 	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_525
 	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
@@ -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_006
 .next
 	call EnableAutoTextBoxDrawing
 	ld hl,PalletTownScriptPointers
@@ -20,8 +18,7 @@
 	dw PalletTownScript6
 
 PalletTownScript0: ; 18e81 (6:4e81)
-	ld a,[wd747]
-	bit 0,a
+	CheckEvent EVENT_STOPPED_FROM_LEAVING_PALLET
 	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_027
 
 	; trigger the next script
 	ld a,1
@@ -134,14 +130,12 @@
 	ret
 
 PalletTownScript5: ; 18f56 (6:4f56)
-	ld a,[wd74a]
-	bit 2,a
+	CheckEvent EVENT_01A
 	jr nz,.next
 	and 3
 	cp 3
 	jr nz,.next
-	ld hl,wd74a
-	set 2,[hl]
+	SetEvent EVENT_01A
 	ld a,HS_DAISY_SITTING
 	ld [wcc4d],a
 	predef HideObject
@@ -149,11 +143,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_026
 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_068
 	call PewterCityScript_1925e
 	ret
 
 PewterCityScript_1925e: ; 1925e (6:525e)
-	ld a, [wd755]
-	bit 7, a
+	CheckEvent EVENT_077
 	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_077
 	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_076
 	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_520, EVENT_527
 
 	; 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_077
 	jr z, .asm_5c46a
-	bit 6, a
+	CheckEventReuseA EVENT_076
 	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_0EF
 	ret nz
 	ld hl, CoordsData_6055e
 	call ArePlayerCoordsInArray
@@ -29,15 +28,13 @@
 	ld c, BANK(Music_MeetRival)
 	ld a, MUSIC_MEET_RIVAL
 	call PlayMusic
-	ld hl, wd764
-	res 6, [hl]
+	ResetEvent EVENT_0EE
 	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]
+	SetEvent EVENT_0EE
 	ld a, PLAYER_DIR_LEFT
 	ld b, SPRITE_FACING_RIGHT
 .asm_60544
@@ -66,14 +63,12 @@
 	jp z, PokemonTower2Script_604fe
 	ld a, $f0
 	ld [wJoyIgnore], a
-	ld hl, wd764
-	set 7, [hl]
+	SetEvent EVENT_0EF
 	ld a, $1
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
 	ld de, MovementData_605b2
-	ld a, [wd764]
-	bit 6, a
+	CheckEvent EVENT_0EE
 	jr nz, .asm_60589
 	ld de, MovementData_605a9
 .asm_60589
@@ -132,8 +127,7 @@
 
 PokemonTower2Text1: ; 605df (18:45df)
 	TX_ASM
-	ld a, [wd764]
-	bit 7, a
+	CheckEvent EVENT_0EF
 	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_107
 	jp CheckFightingMapTrainers
 .asm_60960
-	ld hl, wd767
-	bit 7, [hl]
-	set 7, [hl]
+	CheckAndSetEvent EVENT_107
 	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_10F
 	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_10F
 	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_4CF
+	SetEvent EVENT_117
 	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,8 +13,7 @@
 	bit 5, [hl]
 	res 5, [hl]
 	ret z
-	ld a, [wd81b]
-	bit 5, a
+	CheckEvent EVENT_6A5
 	jr nz, .asm_45496
 	and $c
 	cp $c
@@ -24,8 +23,7 @@
 .asm_4548c
 	ld a, SFX_GO_INSIDE
 	call PlaySound
-	ld hl, wd81b
-	set 5, [hl]
+	SetEvent EVENT_6A5
 .asm_45496
 	ld a, $e
 .asm_45498
@@ -53,8 +51,7 @@
 	call UpdateSprites
 	ld a, $f0
 	ld [wJoyIgnore], a
-	ld hl, wd81b
-	set 7, [hl]
+	SetEvent EVENT_6A7
 	ld a, $a
 	ld [hSpriteIndexOrTextID], a
 	call DisplayTextID
@@ -90,9 +87,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 +96,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 +105,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 +117,7 @@
 
 RocketHideout4Text1: ; 4553a (11:553a)
 	TX_ASM
-	ld a, [wd81b]
-	bit 7, a
+	CheckEvent EVENT_6A7
 	jp nz, .asm_545571
 	ld hl, RocketHideout4Text_4557a
 	call PrintText
@@ -213,9 +209,7 @@
 	TX_ASM
 	ld hl, RocketHideout4Text_455ec
 	call PrintText
-	ld hl, wd81b
-	bit 6, [hl]
-	set 6, [hl]
+	CheckAndSetEvent EVENT_6A6
 	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_3C0
 	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_47F, 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_47F
 .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_480, 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_480
 	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_4B0
 	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_4B0
 .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_4CE
 	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_4CE
 	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_500
 	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_9C8, EVENT_9C9
 	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_9D0, EVENT_9D1
 	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_527
 	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_520
 	jr nz, .firstRivalBattle
-	bit 1, a ; is this the rival at the end of the game?
+	CheckEventReuseA EVENT_521 ; 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_525
 	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_520, EVENT_527
 	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_526
 	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_521, EVENT_527
 	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_525
 	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_526
 	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_538, EVENT_53F
+	ResetEvents EVENT_660, EVENT_666
 	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_536 + 1, EVENT_530
 .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_530
 	predef FlagActionPredef
 	ld a, c
 	and a
@@ -147,43 +143,43 @@
 
 Route23Text1: ; 51307 (14:5307)
 	TX_ASM
-	ld a, $6
+	EventFlagBit a, EVENT_536, EVENT_530
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text2: ; 51310 (14:5310)
 	TX_ASM
-	ld a, $5
+	EventFlagBit a, EVENT_535, EVENT_530
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text3: ; 51319 (14:5319)
 	TX_ASM
-	ld a, $4
+	EventFlagBit a, EVENT_534, EVENT_530
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text4: ; 51322 (14:5322)
 	TX_ASM
-	ld a, $3
+	EventFlagBit a, EVENT_533, EVENT_530
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text5: ; 5132b (14:532b)
 	TX_ASM
-	ld a, $2
+	EventFlagBit a, EVENT_532, EVENT_530
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text6: ; 51334 (14:5334)
 	TX_ASM
-	ld a, $1
+	EventFlagBit a, EVENT_531, EVENT_530
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text7: ; 5133d (14:533d)
 	TX_ASM
-	ld a, $0
+	EventFlagBit a, EVENT_530
 	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_530
 	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_540
 	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_549
 	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_541
 	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_549
+	CheckEvent EVENT_540
 	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_540
 	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_549
 	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_55F
 	ret nz
-	bit 5, [hl]
+	CheckEventReuseHL EVENT_55D
 	jr nz, .asm_515ff
-	res 6, [hl]
+	ResetEventReuseHL EVENT_55E
 	ld a, HS_BILL_POKEMON
 	ld [wcc4d], a
 	predef_jump ShowObject
 .asm_515ff
-	bit 4, [hl]
+	CheckEventAfterBranchReuseHL EVENT_55C, EVENT_55D
 	ret z
-	set 7, [hl]
+	SetEventReuseHL EVENT_55F
 	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_3D8
 	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_3D8
 .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_880
 	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_880
 	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_361
 	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_360
 	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_361
 	jr z, .asm_5d134
-	bit 0, a
+	CheckEventReuseA EVENT_360
 	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_361
 	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_3B0
 	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_3B0
 	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_500
 	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_50E
 	ld a, [wCoordIndex]
 	cp $1
 	jr nz, .asm_44819
-	set 6, [hl]
+	SetEventReuseHL EVENT_50E
 	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_50F, EVENT_50E
 	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_9C0
 	ld a, [wCoordIndex]
 	cp $1
 	jr nz, .asm_46340
-	set 0, [hl]
+	SetEventReuseHL EVENT_9C0
 	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_9C1, EVENT_9C0
 	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_9C8
 	ld a, [wCoordIndex]
 	cp $1
 	jr nz, .asm_4647c
-	set 0, [hl]
+	SetEventReuseHL EVENT_9C8
 	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_9C9, EVENT_9C8
 	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_9D0
 	ld a, [wCoordIndex]
 	cp $1
 	jr nz, .asm_465b8
-	set 0, [hl]
+	SetEventReuseHL EVENT_9D0
 	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_9D1, EVENT_9D0
 	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_9C8, EVENT_9C9
 	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_9C8, EVENT_9C9
 	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_9C8, EVENT_9C9
 	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_9D0, EVENT_9D1
 	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,11 +1,8 @@
 SilphCo1Script: ; 5d44e (17:544e)
 	call EnableAutoTextBoxDrawing
-	ld a, [wd838]
-	bit 7, a
+	CheckEvent EVENT_78F
 	ret z
-	ld hl, wd7b9
-	bit 7, [hl]
-	set 7, [hl]
+	CheckAndSetEvent EVENT_397
 	ret nz
 	ld a, HS_SILPH_CO_1F_1
 	ld [wcc4d], a
--- 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_778
 	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_778
 	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_78F
 	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_788
 	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_788
 	ret
 
 SilphCo11Script_6216d: ; 6216d (18:616d)
@@ -164,8 +162,7 @@
 	dw SilphCo11Script5
 
 SilphCo11Script0: ; 621db (18:61db)
-	ld a, [wd838]
-	bit 7, a
+	CheckEvent EVENT_78F
 	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_78F
 	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_78D
 	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_78D
 	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_6FD
 	jr nz, .asm_59d2e
 	push af
 	ld a, $54
@@ -73,16 +72,16 @@
 	ret
 
 SilphCo2Script_59d6f: ; 59d6f (16:5d6f)
-	ld hl, wd826
+	EventFlagAddress hl, EVENT_6FD
 	ld a, [$ffe0]
 	and a
 	ret z
 	cp $1
-	jr nz, .asm_59d7d
-	set 5, [hl]
+	jr nz, .next
+	SetEventReuseHL EVENT_6FD
 	ret
-.asm_59d7d
-	set 6, [hl]
+.next
+	SetEventAfterBranchReuseHL EVENT_6FE, EVENT_6FD
 	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_6FF
 	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_6FF
 	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_708
 	jr nz, .asm_59f98
 	push af
 	ld a, $5f
@@ -37,16 +36,16 @@
 	db $04,$04,$04,$08,$FF
 
 SilphCo3Script_59fad: ; 59fad (16:5fad)
-	ld hl, wd828
+	EventFlagAddress hl, EVENT_708
 	ld a, [$ffe0]
 	and a
 	ret z
 	cp $1
-	jr nz, .asm_59fbb
-	set 0, [hl]
+	jr nz, .next
+	SetEventReuseHL EVENT_708
 	ret
-.asm_59fbb
-	set 1, [hl]
+.next
+	SetEventAfterBranchReuseHL EVENT_709, EVENT_708
 	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_78F
 	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_718
 	jr nz, .asm_19d48
 	push af
 	ld a, $54
@@ -73,16 +72,16 @@
 	ret
 
 SilphCo4Script_19d89: ; 19d89 (6:5d89)
-	ld hl, wd82a
+	EventFlagAddress hl, EVENT_718
 	ld a, [$ffe0]
 	and a
 	ret z
 	cp $1
-	jr nz, .asm_19d97
-	set 0, [hl]
+	jr nz, .next
+	SetEventReuseHL EVENT_718
 	ret
-.asm_19d97
-	set 1, [hl]
+.next
+	SetEventAfterBranchReuseHL EVENT_719, EVENT_718
 	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_728
 	jr nz, .asm_19f74
 	push af
 	ld a, $5f
@@ -46,21 +45,21 @@
 	db $02, $03, $06, $03, $05, $07, $ff
 
 SilphCo5Script_19f9e: ; 19f9e (6:5f9e)
-	ld hl, wd82c
+	EventFlagAddress hl, EVENT_728
 	ld a, [$ffe0]
 	and a
 	ret z
 	cp $1
-	jr nz, .asm_19fac
-	set 0, [hl]
+	jr nz, .next1
+	SetEventReuseHL EVENT_728
 	ret
-.asm_19fac
+.next1
 	cp $2
-	jr nz, .asm_19fb3
-	set 1, [hl]
+	jr nz, .next2
+	SetEventAfterBranchReuseHL EVENT_729, EVENT_728
 	ret
-.asm_19fb3
-	set 2, [hl]
+.next2
+	SetEventAfterBranchReuseHL EVENT_72A, EVENT_728
 	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_73F
 	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_73F
 	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_78F
 	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_74C
 	jr nz, .asm_51b9e
 	push af
 	ld a, $54
@@ -82,21 +81,21 @@
 	ret
 
 SilphCo7Text_51bf4: ; 51bf4 (14:5bf4)
-	ld hl, wd830
+	EventFlagAddress hl, EVENT_74C
 	ld a, [$ffe0]
 	and a
 	ret z
 	cp $1
-	jr nz, .asm_51c02
-	set 4, [hl]
+	jr nz, .next1
+	SetEventReuseHL EVENT_74C
 	ret
-.asm_51c02
+.next1
 	cp $2
-	jr nz, .asm_51c09
-	set 5, [hl]
+	jr nz, .next2
+	SetEventAfterBranchReuseHL EVENT_74D, EVENT_74C
 	ret
-.asm_51c09
-	set 6, [hl]
+.next2
+	SetEventAfterBranchReuseHL EVENT_74E, EVENT_74C
 	ret
 
 SilphCo7Text_51c0c: ; 51c0c (14:5c0c)
@@ -117,8 +116,7 @@
 	dw SilphCo7Script5
 
 SilphCo7Script0: ; 51c23 (14:5c23)
-	ld a, [wd82f]
-	bit 0, a
+	CheckEvent EVENT_740
 	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_740
 	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_78F
 	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_78F
 	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_78F
 	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_78F
 	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_758
 	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_758
 	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_78F
 	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_768
 	jr nz, .asm_5d7f8
 	push af
 	ld a, $5f
@@ -91,28 +90,28 @@
 	ret
 
 SilphCo9Script_5d863: ; 5d863 (17:5863)
-	ld hl, wd834
+	EventFlagAddress hl, EVENT_768
 	ld a, [$ffe0]
 	and a
 	ret z
 	cp $1
-	jr nz, .asm_5d871
-	set 0, [hl]
+	jr nz, .next1
+	SetEventReuseHL EVENT_768
 	ret
-.asm_5d871
+.next1
 	cp $2
-	jr nz, .asm_5d878
-	set 1, [hl]
+	jr nz, .next2
+	SetEventAfterBranchReuseHL EVENT_769, EVENT_768
 	ret
-.asm_5d878
+.next2
 	cp $3
-	jr nz, .asm_5d87f
-	set 2, [hl]
+	jr nz, .next3
+	SetEventAfterBranchReuseHL EVENT_76A, EVENT_768
 	ret
-.asm_5d87f
+.next3
 	cp $4
 	ret nz
-	set 3, [hl]
+	SetEventAfterBranchReuseHL EVENT_76B, EVENT_768
 	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_78F
 	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_5E1
 	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_5E0
 	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_5E0
 	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_5E1
 	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_5E3
+	SetEventReuseHL EVENT_5E3
 	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,16 +1,15 @@
 VermilionDockScript: ; 1db52 (7:5b52)
 	call EnableAutoTextBoxDrawing
-	ld hl, wd803
-	bit 4, [hl]
+	CheckEventHL EVENT_5E4
 	jr nz, .asm_1db8d
-	bit 0, [hl]
+	CheckEventReuseHL EVENT_5E0
 	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_5E4
 	call Delay3
 	ld hl, wd730
 	set 7, [hl]
@@ -28,17 +27,17 @@
 	ld [wJoyIgnore], a
 	ret
 .asm_1db8d
-	bit 5, [hl]
+	CheckEventAfterBranchReuseHL EVENT_5E5, EVENT_5E4
 	ret nz
 	ld a, [wSimulatedJoypadStatesIndex]
 	and a
 	ret nz
 	ld [wJoyIgnore], a
-	set 5, [hl]
+	SetEventReuseHL EVENT_5E5
 	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_167
 	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_166
 	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_167
 	jr z, .asm_5cb39
-	bit 6, a
+	CheckEventReuseA EVENT_166
 	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_917
 	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_917
 	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_917
 	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_917
 
 VictoryRoad2Script_517c9: ; 517c9 (14:57c9)
-	ld a, [wd7ee]
-	bit 0, a
+	CheckEvent EVENT_538
 	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_538
 	ld a, [wCoordIndex]
 	cp $2
 	jr z, .asm_5180b
-	bit 0, [hl]
-	set 0, [hl]
+	CheckEventReuseHL EVENT_538
+	SetEventReuseHL EVENT_538
 	ret nz
 	jr .asm_51810
 .asm_5180b
-	bit 7, [hl]
-	set 7, [hl]
+	CheckEventAfterBranchReuseHL EVENT_53F, EVENT_538
+	SetEventReuseHL EVENT_53F
 	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_660
 	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_660
 	ret
 .asm_449dc
-	ld hl, wd813
-	bit 6, [hl]
-	set 6, [hl]
+	CheckAndSetEvent EVENT_666
 	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_028
 	ret nz
 	ld a, [W_OBTAINEDBADGES]
 	cp %01111111
 	jr nz, .asm_1901e
-	ld hl, wd74c
-	set 0, [hl]
+	SetEvent EVENT_028
 	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_051
 	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_029
 	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_029
 	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_051
 	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_050
 	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_521, EVENT_527
 	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_051
 	jr z, .asm_6de66
-	bit 0, a
+	CheckEventReuseA EVENT_050
 	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_051
 	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_038
 	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_039
 	ld a, $2
 	ld [W_VIRIDIANMARKETCURSCRIPT], a
 	; fallthrough
--- a/wram.asm
+++ b/wram.asm
@@ -2575,142 +2575,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