shithub: pokecrystal

Download patch

ref: 894955f9d922de5fc33e6c0aa7af9795dbcbc158
parent: 7054bfe71718d5b327bbd3725c82d2431c7fcfb1
author: PikalaxALT <PikalaxALT@gmail.com>
date: Thu Jul 16 14:10:10 EDT 2015

Special script annotation, trainer constant enumeration, person-event structure update

--- a/constants/event_flags.asm
+++ b/constants/event_flags.asm
@@ -1,8 +1,8 @@
 
 	const_def
 
-	const EVENT_000
-	const EVENT_001
+	const EVENT_CHRIS1_IN_CABLE_CLUB
+	const EVENT_CHRIS2_IN_CABLE_CLUB
 	const EVENT_002
 	const EVENT_003
 	const EVENT_004
@@ -778,16 +778,16 @@
 	const EVENT_WAREHOUSE_LAYOUT_3
 	const EVENT_WAREHOUSE_BLOCKED_OFF
 	const EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
-	const EVENT_309
-	const EVENT_WILLS_ROOM_EXIT_OPEN
 	const EVENT_WILLS_ROOM_ENTRANCE_CLOSED
-	const EVENT_KOGAS_ROOM_EXIT_OPEN
+	const EVENT_WILLS_ROOM_EXIT_OPEN
 	const EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
+	const EVENT_KOGAS_ROOM_EXIT_OPEN
+	const EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
 	const EVENT_BRUNOS_ROOM_EXIT_OPEN
 	const EVENT_KARENS_ROOM_ENTRANCE_CLOSED
 	const EVENT_KARENS_ROOM_EXIT_OPEN
 	const EVENT_LANCES_ROOM_ENTRANCE_CLOSED
-	const EVENT_312
+	const EVENT_LANCES_ROOM_EXIT_OPEN
 	const EVENT_CONTEST_OFFICER_HAS_SUN_STONE
 	const EVENT_CONTEST_OFFICER_HAS_EVERSTONE
 	const EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
@@ -1001,6 +1001,8 @@
 	const EVENT_3E5
 	const EVENT_3E6
 	const EVENT_3E7
+; Trainer Flags
+; Swimmer F
 	const EVENT_BEAT_SWIMMERF_ELAINE
 	const EVENT_BEAT_SWIMMERF_PAULA
 	const EVENT_BEAT_SWIMMERF_KAYLEE
@@ -1008,18 +1010,19 @@
 	const EVENT_BEAT_SWIMMERF_DENISE
 	const EVENT_BEAT_SWIMMERF_KARA
 	const EVENT_BEAT_SWIMMERF_WENDY
-	const EVENT_3EF
-	const EVENT_3F0
-	const EVENT_3F1
-	const EVENT_3F2
+	const EVENT_BEAT_SWIMMERF_LISA
+	const EVENT_BEAT_SWIMMERF_JILL
+	const EVENT_BEAT_SWIMMERF_MARY
+	const EVENT_BEAT_SWIMMERF_KATIE
 	const EVENT_BEAT_SWIMMERF_DAWN
-	const EVENT_3F4
+	const EVENT_BEAT_SWIMMERF_TARA
 	const EVENT_BEAT_SWIMMERF_NICOLE
 	const EVENT_BEAT_SWIMMERF_LORI
-	const EVENT_3F7
+	const EVENT_BEAT_SWIMMERF_JODY
 	const EVENT_BEAT_SWIMMERF_NIKKI
 	const EVENT_BEAT_SWIMMERF_DIANA
 	const EVENT_BEAT_SWIMMERF_BRIANA
+; Bird Keeper
 	const EVENT_BEAT_BIRD_KEEPER_ROD
 	const EVENT_BEAT_BIRD_KEEPER_ABE
 	const EVENT_BEAT_BIRD_KEEPER_BRYAN
@@ -1031,17 +1034,19 @@
 	const EVENT_BEAT_BIRD_KEEPER_ROY
 	const EVENT_BEAT_BIRD_KEEPER_BORIS
 	const EVENT_BEAT_BIRD_KEEPER_BOB
-	const EVENT_406
-	const EVENT_BEAT_BIRD_KEEPER_PETER
 	const EVENT_BEAT_BIRD_KEEPER_JOSE
+	const EVENT_BEAT_BIRD_KEEPER_PETER
+	const EVENT_BEAT_BIRD_KEEPER_JOSE2
 	const EVENT_BEAT_BIRD_KEEPER_PERRY
 	const EVENT_BEAT_BIRD_KEEPER_BRET
-	const EVENT_40B
-	const EVENT_40C
-	const EVENT_40D
+	const EVENT_BEAT_BIRD_KEEPER_JOSE3
+	const EVENT_BEAT_BIRD_KEEPER_VANCE2
+	const EVENT_BEAT_BIRD_KEEPER_VANCE3
+; Boarder
 	const EVENT_BEAT_BOARDER_RONALD
 	const EVENT_BEAT_BOARDER_BRAD
 	const EVENT_BEAT_BOARDER_DOUGLAS
+; Sage
 	const EVENT_BEAT_SAGE_CHOW
 	const EVENT_BEAT_SAGE_NICO
 	const EVENT_BEAT_SAGE_JIN
@@ -1051,6 +1056,7 @@
 	const EVENT_BEAT_SAGE_EDMOND
 	const EVENT_BEAT_SAGE_NEAL
 	const EVENT_BEAT_SAGE_LI
+; Camper
 	const EVENT_BEAT_CAMPER_ROLAND
 	const EVENT_BEAT_CAMPER_TODD
 	const EVENT_BEAT_CAMPER_IVAN
@@ -1059,23 +1065,26 @@
 	const EVENT_BEAT_CAMPER_LLOYD
 	const EVENT_BEAT_CAMPER_DEAN
 	const EVENT_BEAT_CAMPER_SID
-	const EVENT_422
-	const EVENT_423
+	const EVENT_BEAT_CAMPER_HERVEY
+	const EVENT_BEAT_CAMPER_DALE
 	const EVENT_BEAT_CAMPER_TED
-	const EVENT_425
-	const EVENT_426
-	const EVENT_427
-	const EVENT_428
-	const EVENT_429
-	const EVENT_42A
+	const EVENT_BEAT_CAMPER_TODD2
+	const EVENT_BEAT_CAMPER_TODD3
+	const EVENT_BEAT_CAMPER_THOMAS
+	const EVENT_BEAT_CAMPER_LEROY
+	const EVENT_BEAT_CAMPER_DAVID
+	const EVENT_BEAT_CAMPER_JOHN
 	const EVENT_BEAT_CAMPER_JERRY
 	const EVENT_BEAT_CAMPER_SPENCER
+; Burglar
 	const EVENT_BEAT_BURGLAR_DUNCAN
 	const EVENT_BEAT_BURGLAR_EDDIE
 	const EVENT_BEAT_BURGLAR_COREY
+; Unknown
 	const EVENT_430
-	const EVENT_431
-	const EVENT_432
+; Biker
+	const EVENT_BEAT_BIKER_BENNY
+	const EVENT_BEAT_BIKER_KAZU
 	const EVENT_BEAT_BIKER_DWAYNE
 	const EVENT_BEAT_BIKER_HARRIS
 	const EVENT_BEAT_BIKER_ZEKE
@@ -1083,6 +1092,7 @@
 	const EVENT_BEAT_BIKER_RILEY
 	const EVENT_BEAT_BIKER_JOEL
 	const EVENT_BEAT_BIKER_GLENN
+; Psychic
 	const EVENT_BEAT_PSYCHIC_NATHAN
 	const EVENT_BEAT_PSYCHIC_FRANKLIN
 	const EVENT_BEAT_PSYCHIC_HERMAN
@@ -1095,14 +1105,16 @@
 	const EVENT_BEAT_PSYCHIC_GILBERT
 	const EVENT_BEAT_PSYCHIC_JARED
 	const EVENT_BEAT_PSYCHIC_RODNEY
+; Firebreather
 	const EVENT_BEAT_FIREBREATHER_OTIS
-	const EVENT_447
-	const EVENT_448
+	const EVENT_BEAT_FIREBREATHER_DICK
+	const EVENT_BEAT_FIREBREATHER_NED
 	const EVENT_BEAT_FIREBREATHER_BURT
 	const EVENT_BEAT_FIREBREATHER_BILL
 	const EVENT_BEAT_FIREBREATHER_WALT
 	const EVENT_BEAT_FIREBREATHER_RAY
 	const EVENT_BEAT_FIREBREATHER_LYLE
+; Fisher
 	const EVENT_BEAT_FISHER_JUSTIN
 	const EVENT_BEAT_FISHER_RALPH
 	const EVENT_BEAT_FISHER_ARNOLD
@@ -1118,21 +1130,23 @@
 	const EVENT_BEAT_FISHER_MARTIN
 	const EVENT_BEAT_FISHER_STEPHEN
 	const EVENT_BEAT_FISHER_BARNEY
-	const EVENT_45D
-	const EVENT_45E
-	const EVENT_45F
-	const EVENT_460
-	const EVENT_461
+	const EVENT_BEAT_FISHER_RALPH2
+	const EVENT_BEAT_FISHER_RALPH3
+	const EVENT_BEAT_FISHER_TULLY2
+	const EVENT_BEAT_FISHER_TULLY3
+	const EVENT_BEAT_FISHER_WILTON2
 	const EVENT_BEAT_FISHER_SCOTT
-	const EVENT_463
+	const EVENT_BEAT_FISHER_WILTON3
+; Twins
 	const EVENT_BEAT_TWINS_AMY_AND_MAY
 	const EVENT_BEAT_TWINS_ANN_AND_ANNE
-	const EVENT_466
-	const EVENT_467
+	const EVENT_BEAT_TWINS_ANN_AND_ANNE2
+	const EVENT_BEAT_TWINS_AMY_AND_MAY2
 	const EVENT_BEAT_TWINS_JO_AND_ZOE
-	const EVENT_469
+	const EVENT_BEAT_TWINS_JO_AND_ZOE2
 	const EVENT_BEAT_TWINS_MEG_AND_PEG
-	const EVENT_46B
+	const EVENT_BEAT_TWINS_MEG_AND_PEG2
+; Schoolboy
 	const EVENT_BEAT_SCHOOLBOY_JACK
 	const EVENT_BEAT_SCHOOLBOY_KIP
 	const EVENT_BEAT_SCHOOLBOY_ALAN
@@ -1145,12 +1159,13 @@
 	const EVENT_BEAT_SCHOOLBOY_CHAD
 	const EVENT_BEAT_SCHOOLBOY_NATE
 	const EVENT_BEAT_SCHOOLBOY_RICKY
-	const EVENT_478
-	const EVENT_479
-	const EVENT_47A
-	const EVENT_47B
-	const EVENT_47C
-	const EVENT_47D
+	const EVENT_BEAT_SCHOOLBOY_JACK2
+	const EVENT_BEAT_SCHOOLBOY_JACK3
+	const EVENT_BEAT_SCHOOLBOY_ALAN2
+	const EVENT_BEAT_SCHOOLBOY_ALAN3
+	const EVENT_BEAT_SCHOOLBOY_CHAD2
+	const EVENT_BEAT_SCHOOLBOY_CHAD3
+; Picnicker
 	const EVENT_BEAT_PICNICKER_LIZ
 	const EVENT_BEAT_PICNICKER_GINA
 	const EVENT_BEAT_PICNICKER_BROOKE
@@ -1159,39 +1174,44 @@
 	const EVENT_BEAT_PICNICKER_HOPE
 	const EVENT_BEAT_PICNICKER_SHARON
 	const EVENT_BEAT_PICNICKER_DEBRA
-	const EVENT_486
+	const EVENT_BEAT_PICNICKER_GINA2
 	const EVENT_BEAT_PICNICKER_ERIN
-	const EVENT_488
-	const EVENT_489
+	const EVENT_BEAT_PICNICKER_LIZ2
+	const EVENT_BEAT_PICNICKER_LIZ3
 	const EVENT_BEAT_PICNICKER_HEIDI
 	const EVENT_BEAT_PICNICKER_EDNA
-	const EVENT_48C
-	const EVENT_48D
-	const EVENT_48E
-	const EVENT_48F
+	const EVENT_BEAT_PICNICKER_GINA3
+	const EVENT_BEAT_PICNICKER_TIFFANY2
+	const EVENT_BEAT_PICNICKER_TIFFANY3
+	const EVENT_BEAT_PICNICKER_ERIN2
 	const EVENT_BEAT_PICNICKER_TANYA
 	const EVENT_BEAT_PICNICKER_TIFFANY
-	const EVENT_492
+	const EVENT_BEAT_PICNICKER_ERIN3
+; Guitarist
 	const EVENT_BEAT_GUITARIST_CLYDE
 	const EVENT_BEAT_GUITARIST_VINCENT
+; Juggler
 	const EVENT_BEAT_JUGGLER_IRWIN
 	const EVENT_BEAT_JUGGLER_FRITZ
 	const EVENT_BEAT_JUGGLER_HORTON
-	const EVENT_498
-	const EVENT_499
+	const EVENT_BEAT_JUGGLER_IRWIN2
+	const EVENT_BEAT_JUGGLER_IRWIN3
+; Gentleman
 	const EVENT_BEAT_GENTLEMAN_PRESTON
 	const EVENT_BEAT_GENTLEMAN_EDWARD
 	const EVENT_BEAT_GENTLEMAN_GREGORY
-	const EVENT_49D
+	const EVENT_BEAT_GENTLEMAN_VIRGIL
 	const EVENT_BEAT_GENTLEMAN_ALFRED
+; Scientist
 	const EVENT_BEAT_SCIENTIST_ROSS
 	const EVENT_BEAT_SCIENTIST_MITCH
 	const EVENT_BEAT_SCIENTIST_JED
 	const EVENT_BEAT_SCIENTIST_MARC
 	const EVENT_BEAT_SCIENTIST_RICH
-	const EVENT_4A4
+; Blackbelt
+	const EVENT_BEAT_BLACKBELT_KENJI2
 	const EVENT_BEAT_BLACKBELT_YOSHI
-	const EVENT_4A6
+	const EVENT_BEAT_BLACKBELT_KENJI3
 	const EVENT_BEAT_BLACKBELT_LAO
 	const EVENT_BEAT_BLACKBELT_NOB
 	const EVENT_BEAT_BLACKBELT_KIYO
@@ -1198,22 +1218,24 @@
 	const EVENT_BEAT_BLACKBELT_LUNG
 	const EVENT_BEAT_BLACKBELT_KENJI
 	const EVENT_BEAT_BLACKBELT_WAI
+; Beauti
 	const EVENT_BEAT_BEAUTY_VICTORIA
 	const EVENT_BEAT_BEAUTY_SAMANTHA
-	const EVENT_4AF
-	const EVENT_4B0
-	const EVENT_4B1
+	const EVENT_BEAT_BEAUTY_JULIE
+	const EVENT_BEAT_BEAUTY_JACLYN
+	const EVENT_BEAT_BEAUTY_BRENDA
 	const EVENT_BEAT_BEAUTY_CASSIE
-	const EVENT_4B3
-	const EVENT_4B4
-	const EVENT_4B5
-	const EVENT_4B6
-	const EVENT_4B7
-	const EVENT_4B8
-	const EVENT_4B9
+	const EVENT_BEAT_BEAUTY_CAROLINE
+	const EVENT_BEAT_BEAUTY_CARLENE
+	const EVENT_BEAT_BEAUTY_JESSICA
+	const EVENT_BEAT_BEAUTY_RACHAEL
+	const EVENT_BEAT_BEAUTY_ANGELICA
+	const EVENT_BEAT_BEAUTY_KENDRA
+	const EVENT_BEAT_BEAUTY_VERONICA
 	const EVENT_BEAT_BEAUTY_JULIA
-	const EVENT_4BB
+	const EVENT_BEAT_BEAUTY_THERESA
 	const EVENT_BEAT_BEAUTY_VALERIE
+; Johto Gym Leaders
 	const EVENT_BEAT_FALKNER
 	const EVENT_BEAT_BUGSY
 	const EVENT_BEAT_WHITNEY
@@ -1222,6 +1244,7 @@
 	const EVENT_BEAT_CHUCK
 	const EVENT_BEAT_PRYCE
 	const EVENT_BEAT_CLAIR
+; Kanto Gym Leaders
 	const EVENT_BEAT_BROCK
 	const EVENT_BEAT_MISTY
 	const EVENT_BEAT_LTSURGE
@@ -1230,6 +1253,7 @@
 	const EVENT_BEAT_SABRINA
 	const EVENT_BEAT_BLAINE
 	const EVENT_BEAT_BLUE
+; PokefanM
 	const EVENT_BEAT_POKEFANM_WILLIAM
 	const EVENT_BEAT_POKEFANM_DEREK
 	const EVENT_BEAT_POKEFANM_ROBERT
@@ -1239,20 +1263,24 @@
 	const EVENT_BEAT_POKEFANM_BRANDON
 	const EVENT_BEAT_POKEFANM_JEREMY
 	const EVENT_BEAT_POKEFANM_COLIN
-	const EVENT_4D6
-	const EVENT_4D7
+	const EVENT_BEAT_POKEFANM_DEREK2
+	const EVENT_BEAT_POKEFANM_DEREK3
 	const EVENT_BEAT_POKEFANM_ALEX
+; PokefanF
 	const EVENT_BEAT_POKEFANF_BEVERLY
 	const EVENT_BEAT_POKEFANF_RUTH
-	const EVENT_4DB
-	const EVENT_4DC
+	const EVENT_BEAT_POKEFANF_BEVERLY2
+	const EVENT_BEAT_POKEFANF_BEVERLY3
 	const EVENT_BEAT_POKEFANF_GEORGIA
+; Unknown
 	const EVENT_4DE
+; Kimono Girl
 	const EVENT_BEAT_KIMONO_GIRL_NAOKO
 	const EVENT_BEAT_KIMONO_GIRL_SAYO
 	const EVENT_BEAT_KIMONO_GIRL_ZUKI
 	const EVENT_BEAT_KIMONO_GIRL_KUNI
 	const EVENT_BEAT_KIMONO_GIRL_MIKI
+; Pokemaniac
 	const EVENT_BEAT_POKEMANIAC_LARRY
 	const EVENT_BEAT_POKEMANIAC_ANDREW
 	const EVENT_BEAT_POKEMANIAC_CALVIN
@@ -1261,11 +1289,12 @@
 	const EVENT_BEAT_POKEMANIAC_BRENT
 	const EVENT_BEAT_POKEMANIAC_RON
 	const EVENT_BEAT_POKEMANIAC_ETHAN
-	const EVENT_4EC
-	const EVENT_4ED
+	const EVENT_BEAT_POKEMANIAC_BRENT2
+	const EVENT_BEAT_POKEMANIAC_BRENT3
 	const EVENT_BEAT_POKEMANIAC_ISSAC
 	const EVENT_BEAT_POKEMANIAC_DONALD
 	const EVENT_BEAT_POKEMANIAC_ZACH
+; GruntM
 	const EVENT_BEAT_ROCKET_GRUNTM_1
 	const EVENT_BEAT_ROCKET_GRUNTM_2
 	const EVENT_BEAT_ROCKET_GRUNTM_3
@@ -1277,7 +1306,6 @@
 	const EVENT_BEAT_ROCKET_GRUNTM_9
 	const EVENT_BEAT_ROCKET_GRUNTM_10
 	const EVENT_BEAT_ROCKET_GRUNTM_11
-	const EVENT_4FC
 	const EVENT_BEAT_ROCKET_GRUNTM_12
 	const EVENT_BEAT_ROCKET_GRUNTM_13
 	const EVENT_BEAT_ROCKET_GRUNTM_14
@@ -1285,23 +1313,26 @@
 	const EVENT_BEAT_ROCKET_GRUNTM_16
 	const EVENT_BEAT_ROCKET_GRUNTM_17
 	const EVENT_BEAT_ROCKET_GRUNTM_18
-	const EVENT_504
-	const EVENT_505
-	const EVENT_506
-	const EVENT_507
 	const EVENT_BEAT_ROCKET_GRUNTM_19
 	const EVENT_BEAT_ROCKET_GRUNTM_20
-	const EVENT_50A
-	const EVENT_50B
 	const EVENT_BEAT_ROCKET_GRUNTM_21
 	const EVENT_BEAT_ROCKET_GRUNTM_22
-	const EVENT_50E
-	const EVENT_50F
+	const EVENT_BEAT_ROCKET_GRUNTM_23
+	const EVENT_BEAT_ROCKET_GRUNTM_24
+	const EVENT_BEAT_ROCKET_GRUNTM_25
+	const EVENT_BEAT_ROCKET_GRUNTM_26
+	const EVENT_BEAT_ROCKET_GRUNTM_27
+	const EVENT_BEAT_ROCKET_GRUNTM_28
+	const EVENT_BEAT_ROCKET_GRUNTM_29
+	const EVENT_BEAT_ROCKET_GRUNTM_30
+	const EVENT_BEAT_ROCKET_GRUNTM_31
+; GruntF
 	const EVENT_BEAT_ROCKET_GRUNTF_1
 	const EVENT_BEAT_ROCKET_GRUNTF_2
 	const EVENT_BEAT_ROCKET_GRUNTF_3
 	const EVENT_BEAT_ROCKET_GRUNTF_4
 	const EVENT_BEAT_ROCKET_GRUNTF_5
+; Lass
 	const EVENT_BEAT_LASS_CARRIE
 	const EVENT_BEAT_LASS_BRIDGET
 	const EVENT_BEAT_LASS_ALICE
@@ -1313,11 +1344,12 @@
 	const EVENT_BEAT_LASS_MICHELLE
 	const EVENT_BEAT_LASS_DANA
 	const EVENT_BEAT_LASS_ELLEN
-	const EVENT_520
-	const EVENT_521
-	const EVENT_522
-	const EVENT_523
-	const EVENT_524
+	const EVENT_BEAT_LASS_CONNIE2
+	const EVENT_BEAT_LASS_CONNIE3
+	const EVENT_BEAT_LASS_DANA2
+	const EVENT_BEAT_LASS_DANA3
+; Hiker
+	const EVENT_BEAT_HIKER_ANTHONY2
 	const EVENT_BEAT_HIKER_RUSSELL
 	const EVENT_BEAT_HIKER_PHILLIP
 	const EVENT_BEAT_HIKER_LEONARD
@@ -1328,7 +1360,7 @@
 	const EVENT_BEAT_HIKER_PARRY
 	const EVENT_BEAT_HIKER_TIMOTHY
 	const EVENT_BEAT_HIKER_BAILEY
-	const EVENT_52F
+	const EVENT_BEAT_HIKER_ANTHONY3
 	const EVENT_BEAT_HIKER_TIM
 	const EVENT_BEAT_HIKER_NOLAND
 	const EVENT_BEAT_HIKER_SIDNEY
@@ -1335,8 +1367,9 @@
 	const EVENT_BEAT_HIKER_KENNY
 	const EVENT_BEAT_HIKER_JIM
 	const EVENT_BEAT_HIKER_DANIEL
-	const EVENT_536
-	const EVENT_537
+	const EVENT_BEAT_HIKER_PARRY2
+	const EVENT_BEAT_HIKER_PARRY3
+; Bug Catcher
 	const EVENT_BEAT_BUG_CATCHER_DON
 	const EVENT_BEAT_BUG_CATCHER_ROB
 	const EVENT_BEAT_BUG_CATCHER_ED
@@ -1346,32 +1379,35 @@
 	const EVENT_BEAT_BUG_CATCHER_JOSH
 	const EVENT_BEAT_BUG_CATCHER_ARNIE
 	const EVENT_BEAT_BUG_CATCHER_KEN
-	const EVENT_541
-	const EVENT_542
+	const EVENT_BEAT_BUG_CATCHER_WADE2
+	const EVENT_BEAT_BUG_CATCHER_WADE3
 	const EVENT_BEAT_BUG_CATCHER_DOUG
-	const EVENT_544
-	const EVENT_545
+	const EVENT_BEAT_BUG_CATCHER_ARNIE2
+	const EVENT_BEAT_BUG_CATCHER_ARNIE3
+; Officer
 	const EVENT_BEAT_OFFICER_KEITH
 	const EVENT_BEAT_OFFICER_DIRK
+; CooltrainerM
 	const EVENT_BEAT_COOLTRAINERM_NICK
 	const EVENT_BEAT_COOLTRAINERM_AARON
 	const EVENT_BEAT_COOLTRAINERM_PAUL
 	const EVENT_BEAT_COOLTRAINERM_CODY
 	const EVENT_BEAT_COOLTRAINERM_MIKE
-	const EVENT_54D
-	const EVENT_54E
+	const EVENT_BEAT_COOLTRAINERM_GAVEN2
+	const EVENT_BEAT_COOLTRAINERM_GAVEN3
 	const EVENT_BEAT_COOLTRAINERM_RYAN
 	const EVENT_BEAT_COOLTRAINERM_JAKE
 	const EVENT_BEAT_COOLTRAINERM_GAVEN
 	const EVENT_BEAT_COOLTRAINERM_BLAKE
 	const EVENT_BEAT_COOLTRAINERM_BRIAN
-	const EVENT_554
-	const EVENT_555
-	const EVENT_556
+	const EVENT_BEAT_COOLTRAINERM_ERICK
+	const EVENT_BEAT_COOLTRAINERM_ANDY
+	const EVENT_BEAT_COOLTRAINERM_TYLER
 	const EVENT_BEAT_COOLTRAINERM_SEAN
 	const EVENT_BEAT_COOLTRAINERM_KEVIN
-	const EVENT_559
+	const EVENT_BEAT_COOLTRAINERM_STEVE
 	const EVENT_BEAT_COOLTRAINERM_ALLEN
+; CooltrainerF
 	const EVENT_BEAT_COOLTRAINERF_GWEN
 	const EVENT_BEAT_COOLTRAINERF_LOIS
 	const EVENT_BEAT_COOLTRAINERF_FRAN
@@ -1383,21 +1419,24 @@
 	const EVENT_BEAT_COOLTRAINERF_BETH
 	const EVENT_BEAT_COOLTRAINERF_REENA
 	const EVENT_BEAT_COOLTRAINERF_MEGAN
-	const EVENT_566
+	const EVENT_BEAT_COOLTRAINERF_BETH2
 	const EVENT_BEAT_COOLTRAINERF_CAROL
 	const EVENT_BEAT_COOLTRAINERF_QUINN
 	const EVENT_BEAT_COOLTRAINERF_EMMA
 	const EVENT_BEAT_COOLTRAINERF_CYBIL
 	const EVENT_BEAT_COOLTRAINERF_JENN
-	const EVENT_56C
-	const EVENT_56D
-	const EVENT_56E
+	const EVENT_BEAT_COOLTRAINERF_BETH3
+	const EVENT_BEAT_COOLTRAINERF_REENA2
+	const EVENT_BEAT_COOLTRAINERF_REENA3
+; ExecutiveF
 	const EVENT_BEAT_ROCKET_EXECUTIVEF_1
 	const EVENT_BEAT_ROCKET_EXECUTIVEF_2
+; ExecutiveM
 	const EVENT_BEAT_ROCKET_EXECUTIVEM_1
 	const EVENT_BEAT_ROCKET_EXECUTIVEM_2
 	const EVENT_BEAT_ROCKET_EXECUTIVEM_3
 	const EVENT_BEAT_ROCKET_EXECUTIVEM_4
+; Sailor
 	const EVENT_BEAT_SAILOR_EUGENE
 	const EVENT_BEAT_SAILOR_HUEY
 	const EVENT_BEAT_SAILOR_TERRELL
@@ -1408,27 +1447,31 @@
 	const EVENT_BEAT_SAILOR_KENNETH
 	const EVENT_BEAT_SAILOR_STANLY
 	const EVENT_BEAT_SAILOR_HARRY
-	const EVENT_57F
-	const EVENT_580
+	const EVENT_BEAT_SAILOR_HUEY2
+	const EVENT_BEAT_SAILOR_HUEY3
+; Super Nerd
 	const EVENT_BEAT_SUPER_NERD_STAN
 	const EVENT_BEAT_SUPER_NERD_ERIC
-	const EVENT_583
-	const EVENT_584
-	const EVENT_585
+	const EVENT_BEAT_SUPER_NERD_GREGG
+	const EVENT_BEAT_SUPER_NERD_JAY
+	const EVENT_BEAY_SUPER_NERD_DAVE
 	const EVENT_BEAT_SUPER_NERD_SAM
 	const EVENT_BEAT_SUPER_NERD_TOM
 	const EVENT_BEAT_SUPER_NERD_PAT
 	const EVENT_BEAT_SUPER_NERD_SHAWN
 	const EVENT_BEAT_SUPER_NERD_TERU
+; Medium
 	const EVENT_BEAT_MEDIUM_MARTHA
 	const EVENT_BEAT_MEDIUM_GRACE
-	const EVENT_58D
-	const EVENT_58E
-	const EVENT_58F
+	const EVENT_BEAT_MEDIUM_BETHANY
+	const EVENT_BEAT_MEDIUM_MARGRET
+	const EVENT_BEAT_MEDIUM_ETHEL
 	const EVENT_BEAT_MEDIUM_REBECCA
 	const EVENT_BEAT_MEDIUM_DORIS
+; Skier
 	const EVENT_BEAT_SKIER_ROXANNE
 	const EVENT_BEAT_SKIER_CLARISSA
+; SwimmerM
 	const EVENT_BEAT_SWIMMERM_HAROLD
 	const EVENT_BEAT_SWIMMERM_SIMON
 	const EVENT_BEAT_SWIMMERM_RANDALL
@@ -1437,19 +1480,20 @@
 	const EVENT_BEAT_SWIMMERM_BERKE
 	const EVENT_BEAT_SWIMMERM_KIRK
 	const EVENT_BEAT_SWIMMERM_MATHEW
-	const EVENT_59C
-	const EVENT_59D
-	const EVENT_59E
-	const EVENT_59F
-	const EVENT_5A0
+	const EVENT_BEAT_SWIMMERM_HAL
+	const EVENT_BEAT_SWIMMERM_PATON
+	const EVENT_BEAT_SWIMMERM_DARYL
+	const EVENT_BEAT_SWIMMERM_WALTER
+	const EVENT_BEAT_SWIMMERM_TONY
 	const EVENT_BEAT_SWIMMERM_JEROME
 	const EVENT_BEAT_SWIMMERM_TUCKER
-	const EVENT_5A3
+	const EVENT_BEAT_SWIMMERM_RICK
 	const EVENT_BEAT_SWIMMERM_CAMERON
 	const EVENT_BEAT_SWIMMERM_SETH
-	const EVENT_5A6
-	const EVENT_5A7
+	const EVENT_BEAT_SWIMMERM_JAMES
+	const EVENT_BEAT_SWIMMERM_LEWIS
 	const EVENT_BEAT_SWIMMERM_PARKER
+; Youngster
 	const EVENT_BEAT_YOUNGSTER_JOEY
 	const EVENT_BEAT_YOUNGSTER_MIKEY
 	const EVENT_BEAT_YOUNGSTER_ALBERT
@@ -1456,20 +1500,23 @@
 	const EVENT_BEAT_YOUNGSTER_GORDON
 	const EVENT_BEAT_YOUNGSTER_SAMUEL
 	const EVENT_BEAT_YOUNGSTER_IAN
-	const EVENT_5AF
-	const EVENT_5B0
+	const EVENT_BEAT_YOUNGSTER_JOEY2
+	const EVENT_BEAT_YOUNGSTER_JOEY3
 	const EVENT_BEAT_YOUNGSTER_WARREN
 	const EVENT_BEAT_YOUNGSTER_JIMMY
 	const EVENT_BEAT_YOUNGSTER_OWEN
 	const EVENT_BEAT_YOUNGSTER_JASON
+; Teacher
 	const EVENT_BEAT_TEACHER_COLETTE
 	const EVENT_BEAT_TEACHER_HILLARY
 	const EVENT_BEAT_TEACHER_SHIRLEY
+; Elite Four and Champion
 	const EVENT_BEAT_ELITE_4_WILL
 	const EVENT_BEAT_ELITE_4_KOGA
 	const EVENT_BEAT_ELITE_4_BRUNO
 	const EVENT_BEAT_ELITE_4_KAREN
 	const EVENT_BEAT_CHAMPION_LANCE
+; New to Crystal
 	const EVENT_BEAT_COOLTRAINERM_DARIN
 	const EVENT_BEAT_COOLTRAINERF_CARA
 	const EVENT_BEAT_TWINS_LEA_AND_PIA
@@ -1601,9 +1648,9 @@
 	const EVENT_63D
 	const EVENT_63E
 	const EVENT_63F
-	const EVENT_640
-	const EVENT_641
-	const EVENT_642
+	const EVENT_CYNDAQUIL_POKEBALL_IN_ELMS_LAB
+	const EVENT_TOTODILE_POKEBALL_IN_ELMS_LAB
+	const EVENT_CHIKORITA_POKEBALL_IN_ELMS_LAB
 	const EVENT_643
 	const EVENT_644
 	const EVENT_645
@@ -1795,7 +1842,7 @@
 	const EVENT_GUIDE_GENT_VISIBLE_IN_CHERRYGROVE
 	const EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
 	const EVENT_ELMS_AIDE_IN_LAB
-	const EVENT_702
+	const EVENT_COP_IN_ELMS_LAB
 	const EVENT_703
 	const EVENT_704
 	const EVENT_705
@@ -1810,31 +1857,31 @@
 	const EVENT_BOULDER_IN_ICE_PATH_2
 	const EVENT_BOULDER_IN_ICE_PATH_3
 	const EVENT_BOULDER_IN_ICE_PATH_4
-	const EVENT_711
+	const EVENT_MYSTERY_GIFT_DELIVERY_GUY
 	const EVENT_MET_BILL
 	const EVENT_713
 	const EVENT_714
 	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_722
-	const EVENT_723
-	const EVENT_724
-	const EVENT_725
-	const EVENT_726
-	const EVENT_727
-	const EVENT_728
-	const EVENT_729
+	const EVENT_BUG_CATCHING_CONTESTANT_1A
+	const EVENT_BUG_CATCHING_CONTESTANT_2A
+	const EVENT_BUG_CATCHING_CONTESTANT_3A
+	const EVENT_BUG_CATCHING_CONTESTANT_4A
+	const EVENT_BUG_CATCHING_CONTESTANT_5A
+	const EVENT_BUG_CATCHING_CONTESTANT_6A
+	const EVENT_BUG_CATCHING_CONTESTANT_7A
+	const EVENT_BUG_CATCHING_CONTESTANT_8A
+	const EVENT_BUG_CATCHING_CONTESTANT_9A
+	const EVENT_BUG_CATCHING_CONTESTANT_10A
+	const EVENT_BUG_CATCHING_CONTESTANT_1B
+	const EVENT_BUG_CATCHING_CONTESTANT_2B
+	const EVENT_BUG_CATCHING_CONTESTANT_3B
+	const EVENT_BUG_CATCHING_CONTESTANT_4B
+	const EVENT_BUG_CATCHING_CONTESTANT_5B
+	const EVENT_BUG_CATCHING_CONTESTANT_6B
+	const EVENT_BUG_CATCHING_CONTESTANT_7B
+	const EVENT_BUG_CATCHING_CONTESTANT_8B
+	const EVENT_BUG_CATCHING_CONTESTANT_9B
+	const EVENT_BUG_CATCHING_CONTESTANT_10B
 	const EVENT_72A
 	const EVENT_72B
 	const EVENT_72C
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -739,3 +739,14 @@
 	const EMOTE_ROD_UP ; 9
 	const EMOTE_ROD_LEFT ; a
 	const EMOTE_ROD_RIGHT ; b
+
+	const_def
+	const SIGNPOST_READ
+	const SIGNPOST_UP
+	const SIGNPOST_DOWN
+	const SIGNPOST_RIGHT
+	const SIGNPOST_LEFT
+	const SIGNPOST_IFSET
+	const SIGNPOST_IFNOTSET
+	const SIGNPOST_ITEMIFSET
+	const SIGNPOST_COPY
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -12,6 +12,7 @@
 PKMN_NAME_LENGTH EQU 11
 MOVE_NAME_LENGTH EQU 13
 ITEM_NAME_LENGTH EQU 13
+TRAINER_CLASS_NAME_LENGTH EQU 13
 NAME_LENGTH EQU 11
 LV_CHAR EQU $6e
 
--- a/constants/pokemon_constants.asm
+++ b/constants/pokemon_constants.asm
@@ -1,4 +1,5 @@
 
+; pokemon
 const_value set 1
 	const BULBASAUR
 	const IVYSAUR
@@ -257,3 +258,58 @@
 NUM_POKEMON EQU const_value
 
 EGG EQU 253
+
+; pokemon structure in RAM
+	const_def
+
+	const MON_SPECIES
+	const MON_ITEM
+	const MON_MOVE1
+	const MON_MOVE2
+	const MON_MOVE3
+	const MON_MOVE4
+	const MON_ID
+	const MON_07
+	const MON_EXP
+	const MON_09
+	const MON_0A
+	const MON_HP_EXP
+	const MON_0C
+	const MON_ATK_EXP
+	const MON_0E
+	const MON_DEF_EXP
+	const MON_10
+	const MON_SPD_EXP
+	const MON_12
+	const MON_SPC_EXP
+	const MON_14
+	const MON_DVS
+	const MON_16
+	const MON_PP1
+	const MON_PP2
+	const MON_PP3
+	const MON_PP4
+	const MON_HAPPINESS
+	const MON_PKRUS
+	const MON_CAUGHTTIME
+	const MON_CAUGHTGENDER
+	const MON_LEVEL
+BOXMON_STRUCT_LENGTH EQU const_value
+
+	const MON_STATUS
+	const MON_21
+	const MON_HP
+	const MON_23
+	const MON_MAXHP
+	const MON_25
+	const MON_ATK
+	const MON_27
+	const MON_DEF
+	const MON_29
+	const MON_SPD
+	const MON_2B
+	const MON_SAT
+	const MON_2D
+	const MON_SDF
+	const MON_2F
+PARTYMON_STRUCT_LENGTH EQU const_value
--- a/constants/trainer_constants.asm
+++ b/constants/trainer_constants.asm
@@ -1,625 +1,609 @@
-NUM_TRAINER_CLASSES EQU $44
-
 ; trainer groups
-FALKNER      EQU $01
-WHITNEY      EQU $02
-BUGSY        EQU $03
-MORTY        EQU $04
-PRYCE        EQU $05
-JASMINE      EQU $06
-CHUCK        EQU $07
-CLAIR        EQU $08
-RIVAL1       EQU $09
-POKEMON_PROF EQU $0A
-WILL         EQU $0B
-CAL          EQU $0C
-BRUNO        EQU $0D
-KAREN        EQU $0E
-KOGA         EQU $0F
-CHAMPION     EQU $10
-BROCK        EQU $11
-MISTY        EQU $12
-LT_SURGE     EQU $13
-SCIENTIST    EQU $14
-ERIKA        EQU $15
-YOUNGSTER    EQU $16
-SCHOOLBOY    EQU $17
-BIRD_KEEPER  EQU $18
-LASS         EQU $19
-JANINE       EQU $1A
-COOLTRAINERM EQU $1B
-COOLTRAINERF EQU $1C
-BEAUTY       EQU $1D
-POKEMANIAC   EQU $1E
-GRUNTM       EQU $1F
-GENTLEMAN    EQU $20
-SKIER        EQU $21
-TEACHER      EQU $22
-SABRINA      EQU $23
-BUG_CATCHER  EQU $24
-FISHER       EQU $25
-SWIMMERM     EQU $26
-SWIMMERF     EQU $27
-SAILOR       EQU $28
-SUPER_NERD   EQU $29
-RIVAL2       EQU $2A
-GUITARIST    EQU $2B
-HIKER        EQU $2C
-BIKER        EQU $2D
-BLAINE       EQU $2E
-BURGLAR      EQU $2F
-FIREBREATHER EQU $30
-JUGGLER      EQU $31
-BLACKBELT_T  EQU $32
-EXECUTIVEM   EQU $33
-PSYCHIC_T    EQU $34
-PICNICKER    EQU $35
-CAMPER       EQU $36
-EXECUTIVEF   EQU $37
-SAGE         EQU $38
-MEDIUM       EQU $39
-BOARDER      EQU $3A
-POKEFANM     EQU $3B
-KIMONO_GIRL  EQU $3C
-TWINS        EQU $3D
-POKEFANF     EQU $3E
-RED          EQU $3F
-BLUE         EQU $40
-OFFICER      EQU $41
-GRUNTF       EQU $42
-MYSTICALMAN  EQU $43
+	enum_start 1
+	trainerclass FALKNER
 
-; Rival1
-RIVAL1_1 EQU $01
-RIVAL1_2 EQU $02
-RIVAL1_3 EQU $03
-RIVAL1_4 EQU $04
-RIVAL1_5 EQU $05
-RIVAL1_6 EQU $06
-RIVAL1_7 EQU $07
-RIVAL1_8 EQU $08
-RIVAL1_9 EQU $09
-RIVAL1_10 EQU $0a
-RIVAL1_11 EQU $0b
-RIVAL1_12 EQU $0c
-RIVAL1_13 EQU $0d
-RIVAL1_14 EQU $0e
-RIVAL1_15 EQU $0f
+	trainerclass WHITNEY
 
-; PokemonProf
-; no trainers
+	trainerclass BUGSY
 
-; SpecialPKMN1
-CAL1 EQU $01
-CAL2 EQU $02
-CAL3 EQU $03
+	trainerclass MORTY
 
-; Champion
-LANCE EQU $01
+	trainerclass PRYCE
 
-; Scientist
-ROSS EQU $01
-MITCH EQU $02
-JED EQU $03
-MARC EQU $04
-RICH EQU $05
+	trainerclass JASMINE
 
-; Youngster
-JOEY1 EQU $01
-MIKEY EQU $02
-ALBERT EQU $03
-GORDON EQU $04
-SAMUEL EQU $05
-IAN EQU $06
-JOEY2 EQU $07
-JOEY3 EQU $08
-WARREN EQU $09
-JIMMY EQU $0a
-OWEN EQU $0b
-JASON EQU $0c
-JOEY4 EQU $0d
-JOEY5 EQU $0e
+	trainerclass CHUCK
 
-; Schoolboy
-JACK1 EQU $01
-KIPP EQU $02
-ALAN1 EQU $03
-JOHNNY EQU $04
-DANNY EQU $05
-TOMMY EQU $06
-DUDLEY EQU $07
-JOE EQU $08
-BILLY EQU $09
-CHAD1 EQU $0a
-NATE EQU $0b
-RICKY EQU $0c
-JACK2 EQU $0d
-JACK3 EQU $0e
-ALAN2 EQU $0f
-ALAN3 EQU $10
-CHAD2 EQU $11
-CHAD3 EQU $12
-JACK4 EQU $13
-JACK5 EQU $14
-ALAN4 EQU $15
-ALAN5 EQU $16
-CHAD4 EQU $17
-CHAD5 EQU $18
+	trainerclass CLAIR
 
-; BirdKeeper
-ROD EQU $01
-ABE EQU $02
-BRYAN EQU $03
-THEO EQU $04
-TOBY EQU $05
-DENIS EQU $06
-VANCE1 EQU $07
-HANK EQU $08
-ROY EQU $09
-BORIS EQU $0a
-BOB EQU $0b
-JOSE1 EQU $0c
-PETER EQU $0d
-JOSE2 EQU $0e
-PERRY EQU $0f
-BRET EQU $10
-JOSE3 EQU $11
-VANCE2 EQU $12
-VANCE3 EQU $13
+	trainerclass RIVAL1
+	const RIVAL1_1
+	const RIVAL1_2
+	const RIVAL1_3
+	const RIVAL1_4
+	const RIVAL1_5
+	const RIVAL1_6
+	const RIVAL1_7
+	const RIVAL1_8
+	const RIVAL1_9
+	const RIVAL1_10
+	const RIVAL1_11
+	const RIVAL1_12
+	const RIVAL1_13
+	const RIVAL1_14
+	const RIVAL1_15
 
-; Lass
-CARRIE EQU $01
-BRIDGET EQU $02
-ALICE EQU $03
-KRISE EQU $04
-CONNIE1 EQU $05
-LINDA EQU $06
-LAURA EQU $07
-SHANNON EQU $08
-MICHELLE EQU $09
-DANA1 EQU $0a
-ELLEN EQU $0b
-CONNIE2 EQU $0c
-CONNIE3 EQU $0d
-DANA2 EQU $0e
-DANA3 EQU $0f
-DANA4 EQU $10
-DANA5 EQU $11
+	trainerclass POKEMON_PROF
 
-; CooltrainerM
-NICK EQU $01
-AARON EQU $02
-PAUL EQU $03
-CODY EQU $04
-MIKE EQU $05
-GAVEN1 EQU $06
-GAVEN2 EQU $07
-RYAN EQU $08
-JAKE EQU $09
-GAVEN3 EQU $0a
-BLAKE EQU $0b
-BRIAN EQU $0c
-ERICK EQU $0d
-ANDY EQU $0e
-TYLER EQU $0f
-SEAN EQU $10
-KEVIN EQU $11
-STEVE EQU $12
-ALLEN EQU $13
-DARIN EQU $14
+	trainerclass WILL
 
-; CooltrainerF
-GWEN EQU $01
-LOIS EQU $02
-FRAN EQU $03
-LOLA EQU $04
-KATE EQU $05
-IRENE EQU $06
-KELLY EQU $07
-JOYCE EQU $08
-BETH1 EQU $09
-REENA1 EQU $0a
-MEGAN EQU $0b
-BETH2 EQU $0c
-CAROL EQU $0d
-QUINN EQU $0e
-EMMA EQU $0f
-CYBIL EQU $10
-JENN EQU $11
-BETH3 EQU $12
-REENA2 EQU $13
-REENA3 EQU $14
-CARA EQU $15
+	trainerclass CAL
+	const CAL1
+	const CAL2
+	const CAL3
 
-; Beauty
-VICTORIA EQU $01
-SAMANTHA EQU $02
-JULIE EQU $03
-JACLYN EQU $04
-BRENDA EQU $05
-CASSIE EQU $06
-CAROLINE EQU $07
-CARLENE EQU $08
-JESSICA EQU $09
-RACHAEL EQU $0a
-ANGELICA EQU $0b
-KENDRA EQU $0c
-VERONICA EQU $0d
-JULIA EQU $0e
-THERESA EQU $0f
-VALERIE EQU $10
-OLIVIA EQU $11
+	trainerclass BRUNO
 
-; Pokemaniac
-LARRY EQU $01
-ANDREW EQU $02
-CALVIN EQU $03
-SHANE EQU $04
-BEN EQU $05
-BRENT1 EQU $06
-RON EQU $07
-ETHAN EQU $08
-BRENT2 EQU $09
-BRENT3 EQU $0a
-ISSAC EQU $0b
-DONALD EQU $0c
-ZACH EQU $0d
-BRENT4 EQU $0e
-MILLER EQU $0f
+	trainerclass KAREN
 
-; Gentleman
-PRESTON EQU $01
-EDWARD EQU $02
-GREGORY EQU $03
-VIRGIL EQU $04
-ALFRED EQU $05
+	trainerclass KOGA
 
-; Skier
-ROXANNE EQU $01
-CLARISSA EQU $02
+	trainerclass CHAMPION
+	const LANCE
 
-; Teacher
-COLETTE EQU $01
-HILLARY EQU $02
-SHIRLEY EQU $03
+	trainerclass BROCK
 
-; BugCatcher
-DON EQU $01
-ROB EQU $02
-ED EQU $03
-WADE1 EQU $04
-BUG_CATCHER_BENNY EQU $05
-AL EQU $06
-JOSH EQU $07
-ARNIE1 EQU $08
-KEN EQU $09
-WADE2 EQU $0a
-WADE3 EQU $0b
-DOUG EQU $0c
-ARNIE2 EQU $0d
-ARNIE3 EQU $0e
-WADE4 EQU $0f
-WADE5 EQU $10
-ARNIE4 EQU $11
-ARNIE5 EQU $12
-WAYNE EQU $13
+	trainerclass MISTY
 
-; Fisher
-JUSTIN EQU $01
-RALPH1 EQU $02
-ARNOLD EQU $03
-KYLE EQU $04
-HENRY EQU $05
-MARVIN EQU $06
-TULLY1 EQU $07
-ANDRE EQU $08
-RAYMOND EQU $09
-WILTON1 EQU $0a
-EDGAR EQU $0b
-JONAH EQU $0c
-MARTIN EQU $0d
-STEPHEN EQU $0e
-BARNEY EQU $0f
-RALPH2 EQU $10
-RALPH3 EQU $11
-TULLY2 EQU $12
-TULLY3 EQU $13
-WILTON2 EQU $14
-SCOTT EQU $15
-WILTON3 EQU $16
-RALPH4 EQU $17
-RALPH5 EQU $18
-TULLY4 EQU $19
+	trainerclass LT_SURGE
 
-; SwimmerM
-HAROLD EQU $01
-SIMON EQU $02
-RANDALL EQU $03
-CHARLIE EQU $04
-GEORGE EQU $05
-BERKE EQU $06
-KIRK EQU $07
-MATHEW EQU $08
-HAL EQU $09
-PATON EQU $0a
-DARYL EQU $0b
-WALTER EQU $0c
-TONY EQU $0d
-JEROME EQU $0e
-TUCKER EQU $0f
-RICK EQU $10
-CAMERON EQU $11
-SETH EQU $12
-JAMES EQU $13
-LEWIS EQU $14
-PARKER EQU $15
+	trainerclass SCIENTIST
+	const ROSS
+	const MITCH
+	const JED
+	const MARC
+	const RICH
+
+	trainerclass ERIKA
+
+	trainerclass YOUNGSTER
+	const JOEY1
+	const MIKEY
+	const ALBERT
+	const GORDON
+	const SAMUEL
+	const IAN
+	const JOEY2
+	const JOEY3
+	const WARREN
+	const JIMMY
+	const OWEN
+	const JASON
+	const JOEY4
+	const JOEY5
+
+	trainerclass SCHOOLBOY
+	const JACK1
+	const KIPP
+	const ALAN1
+	const JOHNNY
+	const DANNY
+	const TOMMY
+	const DUDLEY
+	const JOE
+	const BILLY
+	const CHAD1
+	const NATE
+	const RICKY
+	const JACK2
+	const JACK3
+	const ALAN2
+	const ALAN3
+	const CHAD2
+	const CHAD3
+	const JACK4
+	const JACK5
+	const ALAN4
+	const ALAN5
+	const CHAD4
+	const CHAD5
+
+	trainerclass BIRD_KEEPER
+	const ROD
+	const ABE
+	const BRYAN
+	const THEO
+	const TOBY
+	const DENIS
+	const VANCE1
+	const HANK
+	const ROY
+	const BORIS
+	const BOB
+	const JOSE1
+	const PETER
+	const JOSE2
+	const PERRY
+	const BRET
+	const JOSE3
+	const VANCE2
+	const VANCE3
+
+	trainerclass LASS
+	const CARRIE
+	const BRIDGET
+	const ALICE
+	const KRISE
+	const CONNIE1
+	const LINDA
+	const LAURA
+	const SHANNON
+	const MICHELLE
+	const DANA1
+	const ELLEN
+	const CONNIE2
+	const CONNIE3
+	const DANA2
+	const DANA3
+	const DANA4
+	const DANA5
+
+	trainerclass JANINE
+
+	trainerclass COOLTRAINERM
+	const NICK
+	const AARON
+	const PAUL
+	const CODY
+	const MIKE
+	const GAVEN1
+	const GAVEN2
+	const RYAN
+	const JAKE
+	const GAVEN3
+	const BLAKE
+	const BRIAN
+	const ERICK
+	const ANDY
+	const TYLER
+	const SEAN
+	const KEVIN
+	const STEVE
+	const ALLEN
+	const DARIN
+
+	trainerclass COOLTRAINERF
+	const GWEN
+	const LOIS
+	const FRAN
+	const LOLA
+	const KATE
+	const IRENE
+	const KELLY
+	const JOYCE
+	const BETH1
+	const REENA1
+	const MEGAN
+	const BETH2
+	const CAROL
+	const QUINN
+	const EMMA
+	const CYBIL
+	const JENN
+	const BETH3
+	const REENA2
+	const REENA3
+	const CARA
+
+	trainerclass BEAUTY
+	const VICTORIA
+	const SAMANTHA
+	const JULIE
+	const JACLYN
+	const BRENDA
+	const CASSIE
+	const CAROLINE
+	const CARLENE
+	const JESSICA
+	const RACHAEL
+	const ANGELICA
+	const KENDRA
+	const VERONICA
+	const JULIA
+	const THERESA
+	const VALERIE
+	const OLIVIA
 
-; SwimmerF
-ELAINE EQU $01
-PAULA EQU $02
-KAYLEE EQU $03
-SUSIE EQU $04
-DENISE EQU $05
-KARA EQU $06
-WENDY EQU $07
-LISA EQU $08
-JILL EQU $09
-MARY EQU $0a
-KATIE EQU $0b
-DAWN EQU $0c
-TARA EQU $0d
-NICOLE EQU $0e
-LORI EQU $0f
-JODY EQU $10
-NIKKI EQU $11
-DIANA EQU $12
-BRIANA EQU $13
+	trainerclass POKEMANIAC
+	const LARRY
+	const ANDREW
+	const CALVIN
+	const SHANE
+	const BEN
+	const BRENT1
+	const RON
+	const ETHAN
+	const BRENT2
+	const BRENT3
+	const ISSAC
+	const DONALD
+	const ZACH
+	const BRENT4
+	const MILLER
 
-; Sailor
-EUGENE EQU $01
-HUEY1 EQU $02
-TERRELL EQU $03
-KENT EQU $04
-ERNEST EQU $05
-JEFF EQU $06
-GARRETT EQU $07
-KENNETH EQU $08
-STANLY EQU $09
-HARRY EQU $0a
-HUEY2 EQU $0b
-HUEY3 EQU $0c
-HUEY4 EQU $0d
+	trainerclass GRUNTM
 
-; SuperNerd
-STAN EQU $01
-ERIC EQU $02
-GREGG EQU $03
-JAY EQU $04
-DAVE EQU $05
-SAM EQU $06
-TOM EQU $07
-PAT EQU $08
-SHAWN EQU $09
-TERU EQU $0a
-RUSS EQU $0b
-NORTON EQU $0c
-HUGH EQU $0d
-MARKUS EQU $0e
+	trainerclass GENTLEMAN
+	const PRESTON
+	const EDWARD
+	const GREGORY
+	const VIRGIL
+	const ALFRED
 
-; Guitarist
-CLYDE EQU $01
-VINCENT EQU $02
+	trainerclass SKIER
+	const ROXANNE
+	const CLARISSA
 
-; Hiker
-ANTHONY1 EQU $01
-RUSSELL EQU $02
-PHILLIP EQU $03
-LEONARD EQU $04
-ANTHONY2 EQU $05
-BENJAMIN EQU $06
-ERIK EQU $07
-MICHAEL EQU $08
-PARRY1 EQU $09
-TIMOTHY EQU $0a
-BAILEY EQU $0b
-ANTHONY3 EQU $0c
-TIM EQU $0d
-NOLAND EQU $0e
-SIDNEY EQU $0f
-KENNY EQU $10
-JIM EQU $11
-DANIEL EQU $12
-PARRY2 EQU $13
-PARRY3 EQU $14
-ANTHONY4 EQU $15
-ANTHONY5 EQU $16
+	trainerclass TEACHER
+	const COLETTE
+	const HILLARY
+	const SHIRLEY
 
-; Biker
-BIKER_BENNY EQU $01
-KAZU EQU $02
-DWAYNE EQU $03
-HARRIS EQU $04
-ZEKE EQU $05
-CHARLES EQU $06
-RILEY EQU $07
-JOEL EQU $08
-GLENN EQU $09
+	trainerclass SABRINA
 
-; Burglar
-DUNCAN EQU $01
-EDDIE EQU $02
-COREY EQU $03
+	trainerclass BUG_CATCHER
+	const DON
+	const ROB
+	const ED
+	const WADE1
+	const BUG_CATCHER_BENNY
+	const AL
+	const JOSH
+	const ARNIE1
+	const KEN
+	const WADE2
+	const WADE3
+	const DOUG
+	const ARNIE2
+	const ARNIE3
+	const WADE4
+	const WADE5
+	const ARNIE4
+	const ARNIE5
+	const WAYNE
 
-; Firebreather
-OTIS EQU $01
-DICK EQU $02
-NED EQU $03
-BURT EQU $04
-BILL EQU $05
-WALT EQU $06
-RAY EQU $07
-LYLE EQU $08
+	trainerclass FISHER
+	const JUSTIN
+	const RALPH1
+	const ARNOLD
+	const KYLE
+	const HENRY
+	const MARVIN
+	const TULLY1
+	const ANDRE
+	const RAYMOND
+	const WILTON1
+	const EDGAR
+	const JONAH
+	const MARTIN
+	const STEPHEN
+	const BARNEY
+	const RALPH2
+	const RALPH3
+	const TULLY2
+	const TULLY3
+	const WILTON2
+	const SCOTT
+	const WILTON3
+	const RALPH4
+	const RALPH5
+	const TULLY4
 
-; Juggler
-IRWIN1 EQU $01
-FRITZ EQU $02
-HORTON EQU $03
-IRWIN2 EQU $04
-IRWIN3 EQU $05
-IRWIN4 EQU $06
+	trainerclass SWIMMERM
+	const HAROLD
+	const SIMON
+	const RANDALL
+	const CHARLIE
+	const GEORGE
+	const BERKE
+	const KIRK
+	const MATHEW
+	const HAL
+	const PATON
+	const DARYL
+	const WALTER
+	const TONY
+	const JEROME
+	const TUCKER
+	const RICK
+	const CAMERON
+	const SETH
+	const JAMES
+	const LEWIS
+	const PARKER
 
-; Blackbelt
-KENJI1 EQU $01
-YOSHI EQU $02
-KENJI2 EQU $03
-LAO EQU $04
-NOB EQU $05
-KIYO EQU $06
-LUNG EQU $07
-KENJI3 EQU $08
-WAI EQU $09
+	trainerclass SWIMMERF
+	const ELAINE
+	const PAULA
+	const KAYLEE
+	const SUSIE
+	const DENISE
+	const KARA
+	const WENDY
+	const LISA
+	const JILL
+	const MARY
+	const KATIE
+	const DAWN
+	const TARA
+	const NICOLE
+	const LORI
+	const JODY
+	const NIKKI
+	const DIANA
+	const BRIANA
 
-; Psychic
-NATHAN EQU $01
-FRANKLIN EQU $02
-HERMAN EQU $03
-FIDEL EQU $04
-GREG EQU $05
-NORMAN EQU $06
-MARK EQU $07
-PHIL EQU $08
-RICHARD EQU $09
-GILBERT EQU $0a
-JARED EQU $0b
-RODNEY EQU $0c
+	trainerclass SAILOR
+	const EUGENE
+	const HUEY1
+	const TERRELL
+	const KENT
+	const ERNEST
+	const JEFF
+	const GARRETT
+	const KENNETH
+	const STANLY
+	const HARRY
+	const HUEY2
+	const HUEY3
+	const HUEY4
 
-; Picnicker
-LIZ1 EQU $01
-GINA1 EQU $02
-BROOKE EQU $03
-KIM EQU $04
-CINDY EQU $05
-HOPE EQU $06
-SHARON EQU $07
-DEBRA EQU $08
-GINA2 EQU $09
-ERIN1 EQU $0a
-LIZ2 EQU $0b
-LIZ3 EQU $0c
-HEIDI EQU $0d
-EDNA EQU $0e
-GINA3 EQU $0f
-TIFFANY1 EQU $10
-TIFFANY2 EQU $11
-ERIN2 EQU $12
-TANYA EQU $13
-TIFFANY3 EQU $14
-ERIN3 EQU $15
-LIZ4 EQU $16
-LIZ5 EQU $17
-GINA4 EQU $18
-GINA5 EQU $19
-TIFFANY4 EQU $1a
+	trainerclass SUPER_NERD
+	const STAN
+	const ERIC
+	const GREGG
+	const JAY
+	const DAVE
+	const SAM
+	const TOM
+	const PAT
+	const SHAWN
+	const TERU
+	const RUSS
+	const NORTON
+	const HUGH
+	const MARKUS
 
-; Camper
-ROLAND EQU $01
-TODD1 EQU $02
-IVAN EQU $03
-ELLIOT EQU $04
-BARRY EQU $05
-LLOYD EQU $06
-DEAN EQU $07
-SID EQU $08
-HARVEY EQU $09
-DALE EQU $0a
-TED EQU $0b
-TODD2 EQU $0c
-TODD3 EQU $0d
-THOMAS EQU $0e
-LEROY EQU $0f
-DAVID EQU $10
-JOHN EQU $11
-JERRY EQU $12
-SPENCER EQU $13
-TODD4 EQU $14
-TODD5 EQU $15
-QUENTIN EQU $16
+	trainerclass RIVAL2
 
-; Sage
-CHOW EQU $01
-NICO EQU $02
-JIN EQU $03
-TROY EQU $04
-JEFFREY EQU $05
-PING EQU $06
-EDMOND EQU $07
-NEAL EQU $08
-LI EQU $09
-GAKU EQU $0a
-MASA EQU $0b
-KOJI EQU $0c
+	trainerclass GUITARIST
+	const CLYDE
+	const VINCENT
 
-; Medium
-MARTHA EQU $01
-GRACE EQU $02
-BETHANY EQU $03
-MARGRET EQU $04
-ETHEL EQU $05
-REBECCA EQU $06
-DORIS EQU $07
+	trainerclass HIKER
+	const ANTHONY1
+	const RUSSELL
+	const PHILLIP
+	const LEONARD
+	const ANTHONY2
+	const BENJAMIN
+	const ERIK
+	const MICHAEL
+	const PARRY1
+	const TIMOTHY
+	const BAILEY
+	const ANTHONY3
+	const TIM
+	const NOLAND
+	const SIDNEY
+	const KENNY
+	const JIM
+	const DANIEL
+	const PARRY2
+	const PARRY3
+	const ANTHONY4
+	const ANTHONY5
 
-; Boarder
-RONALD EQU $01
-BRAD EQU $02
-DOUGLAS EQU $03
+	trainerclass BIKER
+	const BIKER_BENNY
+	const KAZU
+	const DWAYNE
+	const HARRIS
+	const ZEKE
+	const CHARLES
+	const RILEY
+	const JOEL
+	const GLENN
 
-; PokefanM
-WILLIAM EQU $01
-DEREK1 EQU $02
-ROBERT EQU $03
-JOSHUA EQU $04
-CARTER EQU $05
-TREVOR EQU $06
-BRANDON EQU $07
-JEREMY EQU $08
-COLIN EQU $09
-DEREK2 EQU $0a
-DEREK3 EQU $0b
-ALEX EQU $0c
-REX EQU $0d
-ALLAN EQU $0e
+	trainerclass BLAINE
 
-; KimonoGirl
-NAOKO1 EQU $01
-NAOKO2 EQU $02
-SAYO EQU $03
-ZUKI EQU $04
-KUNI EQU $05
-MIKI EQU $06
+	trainerclass BURGLAR
+	const DUNCAN
+	const EDDIE
+	const COREY
 
-; Twins
-AMYANDMAY1 EQU $01
-ANNANDANNE1 EQU $02
-ANNANDANNE2 EQU $03
-AMYANDMAY2 EQU $04
-JOANDZOE1 EQU $05
-JOANDZOE2 EQU $06
-MEGANDPEG1 EQU $07
-MEGANDPEG2 EQU $08
-LEAANDPIA1 EQU $09
-LEAANDPIA2 EQU $0a
+	trainerclass FIREBREATHER
+	const OTIS
+	const DICK
+	const NED
+	const BURT
+	const BILL
+	const WALT
+	const RAY
+	const LYLE
 
-; PokefanF
-BEVERLY1 EQU $01
-RUTH EQU $02
-BEVERLY2 EQU $03
-BEVERLY3 EQU $04
-GEORGIA EQU $05
-JAIME EQU $06
+	trainerclass JUGGLER
+	const IRWIN1
+	const FRITZ
+	const HORTON
+	const IRWIN2
+	const IRWIN3
+	const IRWIN4
 
-; Officer
-KEITH EQU $01
-DIRK EQU $02
+	trainerclass BLACKBELT_T
+	const KENJI1
+	const YOSHI
+	const KENJI2
+	const LAO
+	const NOB
+	const KIYO
+	const LUNG
+	const KENJI3
+	const WAI
 
-; Mysticalman
-EUSINE EQU $01
+	trainerclass EXECUTIVEM
+
+	trainerclass PSYCHIC_T
+	const NATHAN
+	const FRANKLIN
+	const HERMAN
+	const FIDEL
+	const GREG
+	const NORMAN
+	const MARK
+	const PHIL
+	const RICHARD
+	const GILBERT
+	const JARED
+	const RODNEY
+
+	trainerclass PICNICKER
+	const LIZ1
+	const GINA1
+	const BROOKE
+	const KIM
+	const CINDY
+	const HOPE
+	const SHARON
+	const DEBRA
+	const GINA2
+	const ERIN1
+	const LIZ2
+	const LIZ3
+	const HEIDI
+	const EDNA
+	const GINA3
+	const TIFFANY1
+	const TIFFANY2
+	const ERIN2
+	const TANYA
+	const TIFFANY3
+	const ERIN3
+	const LIZ4
+	const LIZ5
+	const GINA4
+	const GINA5
+	const TIFFANY4
+
+	trainerclass CAMPER
+	const ROLAND
+	const TODD1
+	const IVAN
+	const ELLIOT
+	const BARRY
+	const LLOYD
+	const DEAN
+	const SID
+	const HARVEY
+	const DALE
+	const TED
+	const TODD2
+	const TODD3
+	const THOMAS
+	const LEROY
+	const DAVID
+	const JOHN
+	const JERRY
+	const SPENCER
+	const TODD4
+	const TODD5
+	const QUENTIN
+
+	trainerclass EXECUTIVEF
+
+	trainerclass SAGE
+	const CHOW
+	const NICO
+	const JIN
+	const TROY
+	const JEFFREY
+	const PING
+	const EDMOND
+	const NEAL
+	const LI
+	const GAKU
+	const MASA
+	const KOJI
+
+	trainerclass MEDIUM
+	const MARTHA
+	const GRACE
+	const BETHANY
+	const MARGRET
+	const ETHEL
+	const REBECCA
+	const DORIS
+
+	trainerclass BOARDER
+	const RONALD
+	const BRAD
+	const DOUGLAS
+
+	trainerclass POKEFANM
+	const WILLIAM
+	const DEREK1
+	const ROBERT
+	const JOSHUA
+	const CARTER
+	const TREVOR
+	const BRANDON
+	const JEREMY
+	const COLIN
+	const DEREK2
+	const DEREK3
+	const ALEX
+	const REX
+	const ALLAN
+
+	trainerclass KIMONO_GIRL
+	const NAOKO1
+	const NAOKO2
+	const SAYO
+	const ZUKI
+	const KUNI
+	const MIKI
+
+	trainerclass TWINS
+	const AMYANDMAY1
+	const ANNANDANNE1
+	const ANNANDANNE2
+	const AMYANDMAY2
+	const JOANDZOE1
+	const JOANDZOE2
+	const MEGANDPEG1
+	const MEGANDPEG2
+	const LEAANDPIA1
+	const LEAANDPIA2
+
+	trainerclass POKEFANF
+	const BEVERLY1
+	const RUTH
+	const BEVERLY2
+	const BEVERLY3
+	const GEORGIA
+	const JAIME
+
+	trainerclass RED
+
+	trainerclass BLUE
+
+	trainerclass OFFICER
+	const KEITH
+	const DIRK
+
+	trainerclass GRUNTF
+
+	trainerclass MYSTICALMAN
+	const EUSINE
+
+NUM_TRAINER_CLASSES EQU __enum__
--- a/constants/wram_constants.asm
+++ b/constants/wram_constants.asm
@@ -71,5 +71,3 @@
 
 OBJECT_STRUCT_LENGTH EQU 40
 NUM_OBJECT_STRUCTS EQU 13
-
-PARTYMON_STRUCT_LENGTH EQU 48
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -358,7 +358,7 @@
 	call CheckBit2_ScriptFlags3
 	jr z, .bit2
 
-	callba Function104820
+	callba CheckMovingOffEdgeOfMap
 	jr c, .return4
 
 	call Function2238
@@ -368,7 +368,7 @@
 	call CheckBit1_ScriptFlags3
 	jr z, .bit1
 
-	call Function2ad4
+	call CheckCurrentMapXYTriggers
 	jr c, .movement
 
 .bit1
@@ -398,12 +398,12 @@
 .return6
 	ld a, [StandingTile]
 	call CheckPitTile
-	jr nz, .asm_968b6
+	jr nz, .pittile
 	ld a, 6
 	scf
 	ret
 
-.asm_968b6
+.pittile
 	ld a, 5
 	scf
 	ret
@@ -528,8 +528,8 @@
 	ret
 
 .elevator
-	ld a, BANK(UnknownScript_0x135f8)
-	ld hl, UnknownScript_0x135f8
+	ld a, BANK(BugCatchingContestOverScript)
+	ld hl, BugCatchingContestOverScript
 	call CallScript
 	scf
 	ret
@@ -764,8 +764,8 @@
 	ld de, EngineBuffer1
 	ld bc, 3
 	call FarCopyBytes
-	ld a, BANK(UnknownScript_0x13625)
-	ld hl, UnknownScript_0x13625
+	ld a, BANK(SignpostItemScript)
+	ld hl, SignpostItemScript
 	call CallScript
 	scf
 	ret
@@ -817,7 +817,7 @@
 	call GetFarHalfword
 	ld e, l
 	ld d, h
-	ld b, $2
+	ld b, $2 ; check
 	call EventFlagAction
 	ld a, c
 	and a
@@ -1024,8 +1024,8 @@
 	dec a
 	ld [wdca1], a
 	ret nz
-	ld a, BANK(UnknownScript_0x13619)
-	ld hl, UnknownScript_0x13619
+	ld a, BANK(RepelWoreOffScript)
+	ld hl, RepelWoreOffScript
 	call CallScript
 	scf
 	ret
--- a/engine/events_2.asm
+++ b/engine/events_2.asm
@@ -1,7 +1,7 @@
 ; More overworld event handling.
 
 
-Function97c28:: ; 97c28
+WarpToLastSpawn:: ; 97c28
 	ld hl, StatusFlags2
 	res 1, [hl]
 	res 2, [hl]
@@ -48,13 +48,13 @@
 	call GetFacingTileCoord
 	ld [EngineBuffer1], a
 	ld c, a
-	callba Function1365b
-	jr c, .asm_97cb9
+	callba CheckFacingTileForStd
+	jr c, .done
 
 	call CheckCutTreeTile
 	jr nz, .whirlpool
 	callba TryCutOW
-	jr .asm_97cb9
+	jr .done
 
 .whirlpool
 	ld a, [EngineBuffer1]
@@ -61,7 +61,7 @@
 	call CheckWhirlpoolTile
 	jr nz, .waterfall
 	callba TryWhirlpoolOW
-	jr .asm_97cb9
+	jr .done
 
 .waterfall
 	ld a, [EngineBuffer1]
@@ -68,7 +68,7 @@
 	call CheckWaterfallTile
 	jr nz, .headbutt
 	callba TryWaterfallOW
-	jr .asm_97cb9
+	jr .done
 
 .headbutt
 	ld a, [EngineBuffer1]
@@ -75,19 +75,19 @@
 	call CheckHeadbuttTreeTile
 	jr nz, .surf
 	callba TryHeadbuttOW
-	jr c, .asm_97cb9
-	jr .asm_97cb7
+	jr c, .done
+	jr .noevent
 
 .surf
 	callba TrySurfOW
-	jr nc, .asm_97cb7
-	jr .asm_97cb9
+	jr nc, .noevent
+	jr .done
 
-.asm_97cb7
+.noevent
 	xor a
 	ret
 
-.asm_97cb9
+.done
 	call PlayClickSFX
 	ld a, $ff
 	scf
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -2,9 +2,7 @@
 Special:: ; c01b
 ; Run script special de.
 	ld hl, SpecialsPointers
-	add hl, de
-	add hl, de
-	add hl, de
+	add_n_times hl, de, 3
 	ld b, [hl]
 	inc hl
 	ld a, [hli]
@@ -16,32 +14,36 @@
 ; c029
 
 SpecialsPointers:: ; c029
-	add_special Function97c28
-	add_special Function29ce8
-	add_special Function29d11
-	add_special Function29d92
-	add_special Function29e66
-	add_special Function29e82
-	add_special Function29efa
-	add_special Function29eee
-	add_special Function29c92
-	add_special Function29cf1
-	add_special Function29cfa
-	add_special Function29bfb
-	add_special Function29c7b
-	add_special Function29ec4
-	add_special Function29ed9
-	add_special Function29eaf
-	add_special Function29f47
-	add_special Functionc2f6
-	add_special Functionc309
-	add_special Function1050b9
+	add_special WarpToLastSpawn
+
+; Communications
+	add_special Special_SetBitsForLinkTradeRequest
+	add_special Special_WaitForLinkedFriend
+	add_special Special_CheckLinkTimeout
+	add_special Special_TryQuickSave
+	add_special Special_CheckBothSelectedSameRoom
+	add_special Special_FailedLinkToPast
+	add_special Special_CloseLink
+	add_special Special_AbortLink
+	add_special Special_SetBitsForBattleRequest
+	add_special Special_SetBitsForTimeCapsuleRequest
+	add_special Special_CheckTimeCapsuleCompatibility
+	add_special Special_EnterTimeCapsule
+	add_special Special_TradeCenter
+	add_special Special_Colosseum
+	add_special Special_TimeCapsule
+	add_special Special_CableClubCheckWhichChris
+	add_special Special_CheckMysteryGift
+	add_special Special_GetMysteryGiftItem
+	add_special Special_UnlockMysteryGift
+
+; Bug Catching Contest
 	add_special BugContestJudging
 	add_special CheckPartyFullAfterContest
-	add_special Function13a12
+	add_special CheckFirstMonFainted
 	add_special ContestReturnMons
-	add_special Function135db
-	add_special Functionfbb32
+	add_special Special_GiveParkBalls
+	add_special Special_CheckMagikarpLength
 	add_special Functionfbcd2
 	add_special HealParty
 	add_special Function1559a
@@ -87,7 +89,7 @@
 	add_special Functionc3ef
 	add_special Function17421
 	add_special Function17440
-	add_special Function139a8
+	add_special Special_SelectRandomBugContestContestants
 	add_special Functionc3fc
 	add_special Function26feb
 	add_special Function27043
@@ -170,7 +172,7 @@
 	add_special SpecialMonCheck
 	add_special Functionc225
 	add_special Function170bd2
-	add_special Function10366e
+	add_special Mobile_SelectThreeMons
 	add_special Function1037eb
 	add_special Function10383c
 	add_special Mobile_HealParty
@@ -309,21 +311,21 @@
 	ret
 ; c2f6
 
-Functionc2f6: ; c2f6
+Special_CheckMysteryGift: ; c2f6
 	ld a, $0
 	call GetSRAMBank
 	ld a, [$abe2]
 	and a
-	jr z, .asm_c302
+	jr z, .no
 	inc a
 
-.asm_c302
+.no
 	ld [ScriptVar], a
 	call CloseSRAM
 	ret
 ; c309
 
-Functionc309: ; c309
+Special_GetMysteryGiftItem: ; c309
 	ld a, $0
 	call GetSRAMBank
 	ld a, [$abe2]
--- a/engine/std_scripts.asm
+++ b/engine/std_scripts.asm
@@ -357,26 +357,26 @@
 	loadmovesprites
 	dotrigger $0
 	domaptrigger GROUP_ROUTE_35_NATIONAL_PARK_GATE, MAP_ROUTE_35_NATIONAL_PARK_GATE, $0
-	setevent EVENT_716
-	setevent EVENT_717
-	setevent EVENT_718
-	setevent EVENT_719
-	setevent EVENT_71A
-	setevent EVENT_71B
-	setevent EVENT_71C
-	setevent EVENT_71D
-	setevent EVENT_71E
-	setevent EVENT_71F
-	setevent EVENT_720
-	setevent EVENT_721
-	setevent EVENT_722
-	setevent EVENT_723
-	setevent EVENT_724
-	setevent EVENT_725
-	setevent EVENT_726
-	setevent EVENT_727
-	setevent EVENT_728
-	setevent EVENT_729
+	setevent EVENT_BUG_CATCHING_CONTESTANT_1A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_2A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_3A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_4A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_5A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_6A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_7A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_8A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_9A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_10A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_1B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_2B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_3B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_4B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_5B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_6B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_7B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_8B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_9B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_10B
 	setflag ENGINE_DAILY_BUG_CONTEST
 	special PlayMapMusic
 	end
@@ -383,7 +383,7 @@
 ; 0xbc31e
 
 BugContestResults_FirstPlace ; 0xbc31e
-	setevent EVENT_000
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
 	itemtotext SUN_STONE, $1
 	farwritetext ContestResults_PlayerWonAPrizeText
 	closetext
@@ -439,45 +439,45 @@
 ; 0xbc380
 
 BugContestResults_EnsureNoDuplicateSprites ; 0xbc380
-	checkevent EVENT_716
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_1A
 	iftrue .skip1
-	clearevent EVENT_720
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_1B
 .skip1
-	checkevent EVENT_717
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_2A
 	iftrue .skip2
-	clearevent EVENT_721
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_2B
 .skip2
-	checkevent EVENT_718
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_3A
 	iftrue .skip3
-	clearevent EVENT_722
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_3B
 .skip3
-	checkevent EVENT_719
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_4A
 	iftrue .skip4
-	clearevent EVENT_723
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_4B
 .skip4
-	checkevent EVENT_71A
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_5A
 	iftrue .skip5
-	clearevent EVENT_724
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_5B
 .skip5
-	checkevent EVENT_71B
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_6A
 	iftrue .skip6
-	clearevent EVENT_725
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_6B
 .skip6
-	checkevent EVENT_71C
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_7A
 	iftrue .skip7
-	clearevent EVENT_726
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_7B
 .skip7
-	checkevent EVENT_71D
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_8A
 	iftrue .skip8
-	clearevent EVENT_727
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_8B
 .skip8
-	checkevent EVENT_71E
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_9A
 	iftrue .skip9
-	clearevent EVENT_728
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_9B
 .skip9
-	checkevent EVENT_71F
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_10A
 	iftrue .skip10
-	clearevent EVENT_729
+	clearevent EVENT_BUG_CATCHING_CONTESTANT_10B
 .skip10
 	end
 
@@ -503,7 +503,7 @@
 	setevent EVENT_6FD
 	setevent EVENT_GUIDE_GENT_VISIBLE_IN_CHERRYGROVE
 	setevent EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
-	setevent EVENT_702
+	setevent EVENT_COP_IN_ELMS_LAB
 	setevent EVENT_703
 	setevent EVENT_704
 	setevent EVENT_BOULDER_IN_ICE_PATH_1
@@ -511,26 +511,26 @@
 	setevent EVENT_BOULDER_IN_ICE_PATH_3
 	setevent EVENT_BOULDER_IN_ICE_PATH_4
 	setevent EVENT_715
-	setevent EVENT_716
-	setevent EVENT_717
-	setevent EVENT_718
-	setevent EVENT_719
-	setevent EVENT_71A
-	setevent EVENT_71B
-	setevent EVENT_71C
-	setevent EVENT_71D
-	setevent EVENT_71E
-	setevent EVENT_71F
-	setevent EVENT_720
-	setevent EVENT_721
-	setevent EVENT_722
-	setevent EVENT_723
-	setevent EVENT_724
-	setevent EVENT_725
-	setevent EVENT_726
-	setevent EVENT_727
-	setevent EVENT_728
-	setevent EVENT_729
+	setevent EVENT_BUG_CATCHING_CONTESTANT_1A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_2A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_3A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_4A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_5A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_6A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_7A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_8A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_9A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_10A
+	setevent EVENT_BUG_CATCHING_CONTESTANT_1B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_2B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_3B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_4B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_5B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_6B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_7B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_8B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_9B
+	setevent EVENT_BUG_CATCHING_CONTESTANT_10B
 	setevent EVENT_72C
 	setevent EVENT_72F
 	setevent EVENT_72D
@@ -549,7 +549,7 @@
 	setevent EVENT_74D
 	setevent EVENT_MET_BILL
 	setevent EVENT_713
-	setevent EVENT_711
+	setevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
 	setevent EVENT_6D4
 	setevent EVENT_WAREHOUSE_LAYOUT_1
 	setevent EVENT_WAREHOUSE_BLOCKED_OFF
--- a/home.asm
+++ b/home.asm
@@ -499,6 +499,7 @@
 StringCmp:: ; 31db
 ; Compare c bytes at de and hl.
 ; Return z if they all match.
+.loop
 	ld a, [de]
 	cp [hl]
 	ret nz
@@ -505,7 +506,7 @@
 	inc de
 	inc hl
 	dec c
-	jr nz, StringCmp
+	jr nz, .loop
 	ret
 ; 0x31e4
 
@@ -866,9 +867,7 @@
 	ld e, a
 	ld d, 0
 	ld hl, NamesPointers
-	add hl, de
-	add hl, de
-	add hl, de
+	add_n_times hl, de, 3
 	ld a, [hli]
 	rst Bankswitch
 	ld a, [hli]
@@ -880,7 +879,7 @@
 	call GetNthString
 
 	ld de, StringBuffer1
-	ld bc, $000d
+	ld bc, ITEM_NAME_LENGTH
 	call CopyBytes
 
 .done
@@ -1209,7 +1208,7 @@
 	ld a, [hROMBank]
 	push af
 
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call Function3574
 
 	pop bc
@@ -1355,7 +1354,7 @@
 	ld a, [hROMBank]
 	push af
 
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call CheckTrainerBattle
 
 	pop bc
--- a/home/map.asm
+++ b/home/map.asm
@@ -9,40 +9,48 @@
 ; 211b
 
 CheckTriggers:: ; 211b
+; Checks wCurrentMapTriggerPointer.  If it's empty, returns -1 in a.  Otherwise, returns the active trigger ID in a.
 	push hl
-	ld hl, BikeFlags + 2
+	ld hl, wCurrentMapTriggerPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	or h
 	ld a, [hl]
-	jr nz, .asm_2128
+	jr nz, .triggerexists
 	ld a, -1
 
-.asm_2128
+.triggerexists
 	pop hl
 	ret
 ; 212a
 
 GetCurrentMapTrigger:: ; 212a
+; Grabs the wram map trigger pointer for the current map and loads it into wCurrentMapTriggerPointer.
+; If there are no triggers, both bytes of wCurrentMapTriggerPointer are wiped clean.
+; Copy the current map group and number into bc.  This is needed for GetMapTrigger.
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
 	ld c, a
+; Blank out wCurrentMapTriggerPointer; this is the default scenario.
 	xor a
-	ld [BikeFlags + 2], a
-	ld [BikeFlags + 3], a
+	ld [wCurrentMapTriggerPointer], a
+	ld [wCurrentMapTriggerPointer + 1], a
 	call GetMapTrigger
-	ret c
+	ret c ; The map is not in the trigger table
+; Load the trigger table pointer from de into wCurrentMapTriggerPointer
 	ld a, e
-	ld [BikeFlags + 2], a
+	ld [wCurrentMapTriggerPointer], a
 	ld a, d
-	ld [BikeFlags + 3], a
+	ld [wCurrentMapTriggerPointer + 1], a
 	xor a
 	ret
 ; 2147
 
 GetMapTrigger:: ; 2147
+; Searches the trigger table for the map group and number loaded in bc, and returns the wram pointer in de.
+; If the map is not in the trigger table, returns carry.
 	push bc
 	ld a, [hROMBank]
 	push af
@@ -50,34 +58,34 @@
 	rst Bankswitch
 
 	ld hl, MapTriggers
-.asm_2151
+.loop
 	push hl
-	ld a, [hli]
-	cp $ff
-	jr z, .asm_2167
+	ld a, [hli] ; map group, or terminator
+	cp -1
+	jr z, .end ; the current map is not in the trigger table
 	cp b
-	jr nz, .asm_2160
-	ld a, [hli]
+	jr nz, .next ; map group did not match
+	ld a, [hli] ; map number
 	cp c
-	jr nz, .asm_2160
-	jr .asm_216a
+	jr nz, .next ; map number did not match
+	jr .found ; we found our map
 
-.asm_2160
+.next
 	pop hl
-	ld de, $0004
+	ld de, 4 ; size of an entry in the trigger table
 	add hl, de
-	jr .asm_2151
+	jr .loop
 
-.asm_2167
+.end
 	scf
-	jr .asm_216d
+	jr .done
 
-.asm_216a
+.found
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
 
-.asm_216d
+.done
 	pop hl
 	pop bc
 	ld a, b
@@ -234,7 +242,7 @@
 	ld a, [hROMBank]
 	push af
 
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call Function2266
 
 	pop de
@@ -305,7 +313,7 @@
 	ld a, [hROMBank]
 	push af
 
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call Function22b4
 
 	pop af
@@ -381,7 +389,7 @@
 
 Function2309:: ; 2309
 	call Function2326
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call Function234f
 	xor a
 	call Function2336
@@ -390,7 +398,7 @@
 
 Function2317:: ; 2317
 	call Function2326
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call Function234f
 	ld a, $1
 	call Function2336
@@ -548,7 +556,7 @@
 Function23f1:: ; 23f1
 	ld a, [hli]
 	ld c, a
-	ld [wdbfe], a
+	ld [wCurrentMapXYTriggerCount], a
 	ld a, l
 	ld [wdbff], a
 	ld a, h
@@ -564,7 +572,7 @@
 Function2408:: ; 2408
 	ld a, [hli]
 	ld c, a
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld a, l
 	ld [wdc02], a
 	ld a, h
@@ -972,7 +980,7 @@
 	ld b, a
 	ld a, [hROMBank]
 	push af
-	call Function2c52
+	call SwitchToMapScriptHeaderBank
 	call Function2653
 	jr nc, .done
 
@@ -1607,13 +1615,13 @@
 	ld a, [TileDown]
 	and $7
 	cp $2
-	jr z, .asm_299f
+	jr z, .ok
 	cp $6
-	jr z, .asm_299f
+	jr z, .ok
 	cp $7
 	ret nz
 
-.asm_299f
+.ok
 	ld a, [TilePermissions]
 	or $8
 	ld [TilePermissions], a
@@ -1626,13 +1634,13 @@
 	ld a, [TileUp]
 	and $7
 	cp $3
-	jr z, .asm_29bc
+	jr z, .ok
 	cp $4
-	jr z, .asm_29bc
+	jr z, .ok
 	cp $5
 	ret nz
 
-.asm_29bc
+.ok
 	ld a, [TilePermissions]
 	or $4
 	ld [TilePermissions], a
@@ -1645,13 +1653,13 @@
 	ld a, [TileRight]
 	and $7
 	cp $1
-	jr z, .asm_29d9
+	jr z, .ok
 	cp $5
-	jr z, .asm_29d9
+	jr z, .ok
 	cp $7
 	ret nz
 
-.asm_29d9
+.ok
 	ld a, [TilePermissions]
 	or $1
 	ld [TilePermissions], a
@@ -1664,13 +1672,13 @@
 	ld a, [TileLeft]
 	and $7
 	cp $0
-	jr z, .asm_29f6
+	jr z, .ok
 	cp $4
-	jr z, .asm_29f6
+	jr z, .ok
 	cp $6
 	ret nz
 
-.asm_29f6
+.ok
 	ld a, [TilePermissions]
 	or $2
 	ld [TilePermissions], a
@@ -1696,8 +1704,7 @@
 	srl a
 	ld l, a
 	ld h, 0
-	add hl, hl
-	add hl, hl
+	add_n_times hl, hl, 2
 	ld de, .Directions
 	add hl, de
 
@@ -1736,11 +1743,10 @@
 	call GetBlockLocation
 	ld a, [hl]
 	and a
-	jr z, .asm_2a63
+	jr z, .nope
 	ld l, a
 	ld h, $0
-	add hl, hl
-	add hl, hl
+	add_n_times hl, hl, 2
 	ld a, [TilesetCollisionAddress]
 	ld c, a
 	ld a, [TilesetCollisionAddress + 1]
@@ -1747,22 +1753,22 @@
 	ld b, a
 	add hl, bc
 	rr d
-	jr nc, .asm_2a56
+	jr nc, .nocarry
 	inc hl
 
-.asm_2a56
+.nocarry
 	rr e
-	jr nc, .asm_2a5c
+	jr nc, .nocarry2
 	inc hl
 	inc hl
 
-.asm_2a5c
+.nocarry2
 	ld a, [TilesetCollisionBank]
 	call GetFarByte
 	ret
 
-.asm_2a63
-	ld a, $ff
+.nope
+	ld a, -1
 	ret
 ; 2a66
 
@@ -1775,20 +1781,20 @@
 	add hl, bc
 	ld a, e
 	srl a
-	jr z, .asm_2a84
+	jr z, .nope
 	and a
-.asm_2a78
+.loop
 	srl a
-	jr nc, .asm_2a7d
+	jr nc, .ok
 	add hl, bc
 
-.asm_2a7d
+.ok
 	sla c
 	rl b
 	and a
-	jr nz, .asm_2a78
+	jr nz, .loop
 
-.asm_2a84
+.nope
 	ld c, d
 	srl c
 	ld b, $0
@@ -1799,7 +1805,9 @@
 
 CheckFacingSign:: ; 2a8b
 	call GetFacingTileCoord
+; Load facing into b.
 	ld b, a
+; Convert the coordinates at de to within-boundaries coordinates.
 	ld a, d
 	sub 4
 	ld d, a
@@ -1806,14 +1814,15 @@
 	ld a, e
 	sub 4
 	ld e, a
-	ld a, [wdc01]
+; If there are no signposts, we don't need to be here.
+	ld a, [wCurrentMapSignpostCount]
 	and a
 	ret z
 	ld c, a
 	ld a, [hROMBank]
 	push af
-	call Function2c52
-	call Function2aaa
+	call SwitchToMapScriptHeaderBank
+	call CheckIfFacingTileCoordIsSign
 	pop hl
 	ld a, h
 	rst Bankswitch
@@ -1820,53 +1829,56 @@
 	ret
 ; 2aaa
 
-Function2aaa:: ; 2aaa
+CheckIfFacingTileCoordIsSign:: ; 2aaa
+; Checks to see if you are facing a signpost.  If so, copies it into EngineBuffer1 and sets carry.
 	ld hl, wdc02
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-.asm_2ab0
+.loop
 	push hl
 	ld a, [hli]
 	cp e
-	jr nz, .asm_2abb
+	jr nz, .next
 	ld a, [hli]
 	cp d
-	jr nz, .asm_2abb
-	jr .asm_2ac8
+	jr nz, .next
+	jr .copysign
 
-.asm_2abb
+.next
 	pop hl
-	ld a, 5
+	ld a, 5 ; signpost event length
 	add l
 	ld l, a
-	jr nc, .asm_2ac3
+	jr nc, .nocarry
 	inc h
 
-.asm_2ac3
+.nocarry
 	dec c
-	jr nz, .asm_2ab0
+	jr nz, .loop
 	xor a
 	ret
 
-.asm_2ac8
+.copysign
 	pop hl
 	ld de, EngineBuffer1
-	ld bc, 5
+	ld bc, 5 ; signpost event length
 	call CopyBytes
 	scf
 	ret
 ; 2ad4
 
-Function2ad4:: ; 2ad4
-	ld a, [wdbfe]
+CheckCurrentMapXYTriggers:: ; 2ad4
+; If there are no xy triggers, we don't need to be here.
+	ld a, [wCurrentMapXYTriggerCount]
 	and a
 	ret z
+; Copy the trigger count into c.
 	ld c, a
 	ld a, [hROMBank]
 	push af
-	call Function2c52
-	call Function2ae7
+	call SwitchToMapScriptHeaderBank
+	call CheckStandingOnXYTrigger
 	pop hl
 	ld a, h
 	rst Bankswitch
@@ -1873,54 +1885,58 @@
 	ret
 ; 2ae7
 
-Function2ae7:: ; 2ae7
+CheckStandingOnXYTrigger:: ; 2ae7
+; Checks to see if you are standing on an xy-trigger.  If yes, copies the trigger to EngineBuffer1 and sets carry.
 	ld hl, wdbff
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+; Load the active trigger ID into b
 	call CheckTriggers
 	ld b, a
+; Load your current coordinates into de.  This will be used to check if your position is in the xy-trigger table for the current map.
 	ld a, [MapX]
-	sub $4
+	sub 4
 	ld d, a
 	ld a, [MapY]
-	sub $4
+	sub 4
 	ld e, a
-.asm_2afd
+
+.loop
 	push hl
 	ld a, [hli]
 	cp b
-	jr z, .asm_2b06
-	cp $ff
-	jr nz, .asm_2b10
+	jr z, .got_id
+	cp -1
+	jr nz, .next
 
-.asm_2b06
+.got_id
 	ld a, [hli]
 	cp e
-	jr nz, .asm_2b10
+	jr nz, .next
 	ld a, [hli]
 	cp d
-	jr nz, .asm_2b10
-	jr .asm_2b1d
+	jr nz, .next
+	jr .copytrigger
 
-.asm_2b10
+.next
 	pop hl
-	ld a, $8
+	ld a, $8 ; xy-trigger size
 	add l
 	ld l, a
-	jr nc, .asm_2b18
+	jr nc, .nocarry
 	inc h
 
-.asm_2b18
+.nocarry
 	dec c
-	jr nz, .asm_2afd
+	jr nz, .loop
 	xor a
 	ret
 
-.asm_2b1d
+.copytrigger
 	pop hl
 	ld de, EngineBuffer1
-	ld bc, $0008
+	ld bc, $0008 ; xy-trigger size
 	call CopyBytes
 	scf
 	ret
@@ -2139,7 +2155,7 @@
 	ret
 ; 2c52
 
-Function2c52:: ; 2c52
+SwitchToMapScriptHeaderBank:: ; 2c52
 	ld a, [MapScriptHeaderBank]
 	rst Bankswitch
 	ret
--- a/macros.asm
+++ b/macros.asm
@@ -13,6 +13,7 @@
 INCLUDE "macros/predef.asm"
 INCLUDE "macros/rst.asm"
 INCLUDE "macros/mobile.asm"
+INCLUDE "macros/trainer.asm"
 
 
 
--- a/macros/charmap.asm
+++ b/macros/charmap.asm
@@ -281,5 +281,6 @@
 	charmap "<TARGET>", $59
 	charmap "<USER>",   $5a
 	charmap "<ENEMY>",  $3f
+	charmap "<PKMN>",   $4a
 
 	charmap "<PLAY_G>", $14 ; <PLAYER> + gender
--- a/main.asm
+++ b/main.asm
@@ -3216,7 +3216,7 @@
 ; A dummy map object used to initialize the player object.
 ; Shorter than the actual amount copied by two bytes.
 ; Said bytes seem to be unused.
-	person_event SPRITE_CHRIS, 0, 0, LEFT << 2 | $3, $ff, -1, -1, PAL_OW_RED << 4 | $0, 0, $0000, -1
+	person_event SPRITE_CHRIS, 0, 0, LEFT << 2 | $3, $ff, -1, -1, $0, 0, $0000, -1
 	; db $01, $00, $00, $0b, $ff, $ff, $ff, $00, $00, $00, $00, $ff, $ff
 ; 807e
 
@@ -5319,7 +5319,7 @@
 	special UpdateTimePals
 	callasm Function8caed
 	farscall UnknownScript_0x122c1
-	special Function97c28
+	special WarpToLastSpawn
 	callasm Function154f1
 	writecode VAR_MOVEMENT, $0
 	newloadmap $fc
@@ -5588,7 +5588,7 @@
 	playsound SFX_WARP_TO
 	applymovement $0, MovementData_0xcc59
 	farscall UnknownScript_0x122c1
-	special Function97c28
+	special WarpToLastSpawn
 	writecode VAR_MOVEMENT, $0
 	newloadmap $f5
 	playsound SFX_WARP_FROM
@@ -5686,7 +5686,7 @@
 	playsound SFX_WARP_TO
 	applymovement $0, MovementData_0xcce1
 	farscall UnknownScript_0x122c1
-	special Function97c28
+	special WarpToLastSpawn
 	writecode VAR_MOVEMENT, $0
 	newloadmap $f4
 	playsound SFX_WARP_FROM
@@ -12731,7 +12731,7 @@
 	callasm HalveMoney
 	callasm Function12527
 	farscall UnknownScript_0x122c1
-	special Function97c28
+	special WarpToLastSpawn
 	newloadmap $f1
 	resetfuncs
 
@@ -13349,8 +13349,8 @@
 	ld hl, .EndTheContestText
 	call Function12cf5
 	jr c, .asm_12903
-	ld a, BANK(UnknownScript_0x1360b)
-	ld hl, UnknownScript_0x1360b
+	ld a, BANK(BugCatchingContestReturnToGateScript)
+	ld hl, BugCatchingContestReturnToGateScript
 	call Function31cf
 	ld a, 4
 	ret
@@ -15357,10 +15357,10 @@
 ; 135db
 
 
-Function135db: ; 135db
+Special_GiveParkBalls: ; 135db
 	xor a
 	ld [wdf9c], a
-	ld a, $14
+	ld a, 20
 	ld [wdc79], a
 	callba Function11490
 	ret
@@ -15372,25 +15372,25 @@
 	startbattle
 	returnafterbattle
 	copybytetovar wdc79
-	iffalse UnknownScript_0x13603
+	iffalse BugCatchingContestOutOfBallsScript
 	end
 ; 0x135f8
 
-UnknownScript_0x135f8:: ; 0x135f8
+BugCatchingContestOverScript:: ; 0x135f8
 	playsound SFX_ELEVATOR_END
 	loadfont
 	writetext UnknownText_0x1360f
 	closetext
-	jump UnknownScript_0x1360b
+	jump BugCatchingContestReturnToGateScript
 ; 0x13603
 
-UnknownScript_0x13603: ; 0x13603
+BugCatchingContestOutOfBallsScript: ; 0x13603
 	playsound SFX_ELEVATOR_END
 	loadfont
 	writetext UnknownText_0x13614
 	closetext
 
-UnknownScript_0x1360b: ; 0x1360b
+BugCatchingContestReturnToGateScript: ; 0x1360b
 	loadmovesprites
 	jumpstd bugcontestresultswarp
 ; 0x1360f
@@ -15407,7 +15407,7 @@
 	db "@"
 ; 0x13619
 
-UnknownScript_0x13619:: ; 0x13619
+RepelWoreOffScript:: ; 0x13619
 	loadfont
 	writetext UnknownText_0x13620
 	closetext
@@ -15421,14 +15421,14 @@
 	db "@"
 ; 0x13625
 
-UnknownScript_0x13625:: ; 0x13625
+SignpostItemScript:: ; 0x13625
 	loadfont
 	copybytetovar Unkn2Pals
-	itemtotext $0, $0
+	itemtotext 0, 0
 	writetext UnknownText_0x13645
-	giveitem $ff, $1
+	giveitem -1, 1
 	iffalse UnknownScript_0x1363e
-	callasm Function1364f
+	callasm SetMemEvent
 	specialsound
 	itemnotify
 	jump UnknownScript_0x13643
@@ -15456,19 +15456,20 @@
 	db "@"
 ; 0x1364f
 
-Function1364f: ; 1364f
+SetMemEvent: ; 1364f
 	ld hl, EngineBuffer1 ; wd03e (aliases: MenuItemsList, CurFruitTree, CurInput)
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
-	ld b, $1
+	ld b, $1 ; set
 	call EventFlagAction
 	ret
 
 
-Function1365b:: ; 1365b
+CheckFacingTileForStd:: ; 1365b
+; Checks to see if the tile you're facing has a std script associated with it.  If so, executes the script and returns carry.
 	ld a, c
-	ld de, .table2 - .table1
+	ld de, 3
 	ld hl, .table1
 	call IsInArray
 	jr nc, .notintable
@@ -15493,7 +15494,6 @@
 
 .table1
 	dbw $91, magazinebookshelf
-.table2
 	dbw $93, pcscript
 	dbw $94, radio1
 	dbw $95, townmap
@@ -15514,7 +15514,7 @@
 	callba Function105f79
 	call Function13819
 	ld a, [wd00a]
-	call LoadContestantData
+	call LoadContestantName
 	ld a, [wd00b]
 	ld [wd265], a
 	call GetPokemonName
@@ -15521,7 +15521,7 @@
 	ld hl, BugContest_ThirdPlaceText
 	call PrintText
 	ld a, [EndFlypoint]
-	call LoadContestantData
+	call LoadContestantName
 	ld a, [MovementBuffer]
 	ld [wd265], a
 	call GetPokemonName
@@ -15528,7 +15528,7 @@
 	ld hl, BugContest_SecondPlaceText
 	call PrintText
 	ld a, [DefaultFlypoint]
-	call LoadContestantData
+	call LoadContestantName
 	ld a, [wd003]
 	ld [wd265], a
 	call GetPokemonName
@@ -15596,57 +15596,66 @@
 	db "@"
 ; 0x13730
 
-LoadContestantData: ; 13730
+LoadContestantName: ; 13730
+
+; If a = 0, get your name.
 	dec a
-	jr z, .asm_13777
+	jr z, .done
+; Find the pointer for the trainer class of the Bug Catching Contestant whose ID is in a.
 	ld c, a
 	ld b, 0
 	ld hl, BugContestantPointers
-	add hl, bc
-	add hl, bc
+	add_n_times hl, bc, 2
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+; Copy the Trainer Class to c.
 	ld a, [hli]
 	ld c, a
+; Save hl and bc for later.
 	push hl
 	push bc
+; Get the Trainer Class name and copy it into wd016.
 	callab Function3952d
 	ld hl, StringBuffer1
 	ld de, wd016
-	ld bc, $000d
+	ld bc, TRAINER_CLASS_NAME_LENGTH
 	call CopyBytes
 	ld hl, wd016
-.asm_13757
+; Delete the trailing terminator and replace it with a space.
+.next
 	ld a, [hli]
-	cp $50
-	jr nz, .asm_13757
+	cp "@"
+	jr nz, .next
 	dec hl
-	ld [hl], $7f
+	ld [hl], " "
 	inc hl
 	ld d, h
 	ld e, l
+; Restore the Trainer Class ID and Trainer ID pointer.  Save de for later.
 	pop bc
 	pop hl
 	push de
+; Get the name of the trainer with class c and ID b.
 	ld a, [hl]
 	ld b, a
 	callab GetTrainerName
+; Append the name to wd016.
 	ld hl, StringBuffer1
 	pop de
-	ld bc, $000a
+	ld bc, NAME_LENGTH - 1
 	jp CopyBytes
 
-.asm_13777
+.done
 	ld hl, PlayerName
 	ld de, wd016
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	jp CopyBytes
 ; 13783
 
 BugContestantPointers: ; 13783
+	dw BugContestant_BugCatcherDon ; This reverts back to the player
 	dw BugContestant_BugCatcherDon
-	dw BugContestant_BugCatcherDon
 	dw BugContestant_BugCatcherEd
 	dw BugContestant_CooltrainerMNick
 	dw BugContestant_PokefanMWilliam
@@ -15721,17 +15730,17 @@
 
 Function13807: ; 13807
 	ld hl, wd00a
-	ld de, $fffc
-	ld b, $3
-.asm_1380f
+	ld de, -4
+	ld b, 3
+.loop
 	ld a, [hl]
-	cp $1
-	jr z, .asm_13818
+	cp 1
+	jr z, .done
 	add hl, de
 	dec b
-	jr nz, .asm_1380f
+	jr nz, .loop
 
-.asm_13818
+.done
 	ret
 ; 13819
 
@@ -15739,7 +15748,7 @@
 	call Function13833
 	call Function138b0
 	ld hl, wd00e
-	ld a, $1
+	ld a, 1
 	ld [hli], a
 	ld a, [wdf9c]
 	ld [hli], a
@@ -15753,12 +15762,12 @@
 
 Function13833: ; 13833
 	ld hl, DefaultFlypoint
-	ld b, $c
+	ld b, 12
 	xor a
-.asm_13839
+.loop
 	ld [hli], a
 	dec b
-	jr nz, .asm_13839
+	jr nz, .loop
 	ret
 ; 1383e
 
@@ -15765,9 +15774,9 @@
 Function1383e: ; 1383e
 	ld de, wd010
 	ld hl, wd004
-	ld c, $2
+	ld c, 2
 	call StringCmp
-	jr c, .asm_1386b
+	jr c, .next
 	ld hl, EndFlypoint
 	ld de, wd00a
 	ld bc, $0004
@@ -15774,36 +15783,36 @@
 	call CopyBytes
 	ld hl, DefaultFlypoint
 	ld de, EndFlypoint
-	ld bc, $0004
+	ld bc, 4
 	call CopyBytes
 	ld hl, DefaultFlypoint
 	call Function138a0
-	jr .asm_1389f
+	jr .done
 
-.asm_1386b
+.next
 	ld de, wd010
 	ld hl, wd008
-	ld c, $2
+	ld c, 2
 	call StringCmp
-	jr c, .asm_1388c
+	jr c, .next2
 	ld hl, EndFlypoint
 	ld de, wd00a
-	ld bc, $0004
+	ld bc, 4
 	call CopyBytes
 	ld hl, EndFlypoint
 	call Function138a0
-	jr .asm_1389f
+	jr .done
 
-.asm_1388c
+.next2
 	ld de, wd010
 	ld hl, wd00c
-	ld c, $2
+	ld c, 2
 	call StringCmp
-	jr c, .asm_1389f
+	jr c, .done
 	ld hl, wd00a
 	call Function138a0
 
-.asm_1389f
+.done
 	ret
 ; 138a0
 
@@ -15825,12 +15834,12 @@
 ; 138b0
 
 Function138b0: ; 138b0
-	ld e, $0
-.asm_138b2
+	ld e, 0
+.loop
 	push de
-	call Function139ed
+	call Special_CheckBugContestContestantFlag
 	pop de
-	jr nz, .asm_138f9
+	jr nz, .done
 	ld a, e
 	inc a
 	inc a
@@ -15839,23 +15848,20 @@
 	ld c, a
 	ld b, 0
 	ld hl, BugContestantPointers
-	add hl, bc
-	add hl, bc
+	add_n_times hl, bc, 2
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	inc hl
 	inc hl
-.asm_138cd
+.loop2
 	call Random
-	and $3
-	cp $3
-	jr z, .asm_138cd
+	and 3
+	cp 3
+	jr z, .loop2
 	ld c, a
-	ld b, $0
-	add hl, bc
-	add hl, bc
-	add hl, bc
+	ld b, 0
+	add_n_times hl, bc, 3
 	ld a, [hli]
 	ld [wd00f], a
 	ld a, [hli]
@@ -15862,9 +15868,9 @@
 	ld h, [hl]
 	ld l, a
 	call Random
-	and $7
+	and 7
 	ld c, a
-	ld b, $0
+	ld b, 0
 	add hl, bc
 	ld a, h
 	ld [wd010], a
@@ -15874,11 +15880,11 @@
 	call Function1383e
 	pop de
 
-.asm_138f9
+.done
 	inc e
 	ld a, e
-	cp $a
-	jr nz, .asm_138b2
+	cp 10
+	jr nz, .loop
 	ret
 ; 13900
 
@@ -15979,20 +15985,20 @@
 
 ; decreases all pokemon's pokerus counter by b. if the lower nybble reaches zero, the pokerus is cured.
 ApplyPokerusTick: ; 13988
-	ld hl, PartyMon1PokerusStatus
+	ld hl, PartyMon1PokerusStatus ; PartyMon1 + MON_PKRS
 	ld a, [PartyCount]
 	and a
 	ret z
 	ld c, a
-.asm_13991
+.loop
 	ld a, [hl]
 	and $f
-	jr z, .asm_139a0
+	jr z, .does_not_have_pokerus
 	sub b
-	jr nc, .asm_1399a
+	jr nc, .ok
 	xor a
 
-.asm_1399a
+.ok
 	ld d, a
 	ld a, [hl]
 	and $f0
@@ -15999,24 +16005,27 @@
 	add d
 	ld [hl], a
 
-.asm_139a0
+.does_not_have_pokerus
 	ld de, PartyMon2 - PartyMon1
 	add hl, de
 	dec c
-	jr nz, .asm_13991
+	jr nz, .loop
 	ret
 ; 139a8
 
-Function139a8: ; 139a8
-	ld c, $a
-	ld hl, Unknown_139fe
-.asm_139ad
+Special_SelectRandomBugContestContestants: ; 139a8
+; Select five random people to participate in the current contest.
+
+; First we have to make sure that any old data is cleared away.
+	ld c, 10 ; Number of people to choose from.
+	ld hl, BugCatchingContestantEventFlagTable
+.loop1
 	push bc
 	push hl
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld b, $0
+	ld b, $0 ; clear
 	call EventFlagAction
 	pop hl
 	inc hl
@@ -16023,71 +16032,79 @@
 	inc hl
 	pop bc
 	dec c
-	jr nz, .asm_139ad
-	ld c, $5
-.asm_139c0
+	jr nz, .loop1
+
+; Now that that's out of the way, we can get on to the good stuff.
+	ld c, 5
+.loop2
 	push bc
-.asm_139c1
+.next
+; Choose a flag at uniform random to be set.
 	call Random
-	cp $fa
-	jr nc, .asm_139c1
-	ld c, $19
+	cp $fa ; 250
+	jr nc, .next
+	ld c, $19 ; 25
 	call SimpleDivide
 	ld e, b
 	ld d, 0
-	ld hl, Unknown_139fe
-	add hl, de
-	add hl, de
+	ld hl, BugCatchingContestantEventFlagTable
+	add_n_times hl, de, 2
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
 	push de
-	ld b, $2
+; If we've already set it, it doesn't count.
+	ld b, $2 ; check
 	call EventFlagAction
 	pop de
 	ld a, c
 	and a
-	jr nz, .asm_139c1
-	ld b, $1
+	jr nz, .next
+; Set the flag.  This will cause that sprite to not be visible in the contest.
+	ld b, $1 ; set
 	call EventFlagAction
 	pop bc
+; Check if we're done.  If so, return.  Otherwise, choose the next victim.
 	dec c
-	jr nz, .asm_139c0
+	jr nz, .loop2
 	ret
 ; 139ed
 
-Function139ed: ; 139ed
-	ld hl, Unknown_139fe
+Special_CheckBugContestContestantFlag: ; 139ed
+; Checks the flag of the Bug Catching Contestant whose index is loaded in a.
+
+; Bug: If a >= 10 when this is called, it will read beyond the table.
+
+	ld hl, BugCatchingContestantEventFlagTable
 	ld e, a
 	ld d, 0
-	add hl, de
-	add hl, de
+	add_n_times hl, de, 2
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld b, $2
+	ld b, $2 ; check
 	call EventFlagAction
 	ret
 ; 139fe
 
-Unknown_139fe: ; 139fe
-	dw $0716
-	dw $0717
-	dw $0718
-	dw $0719
-	dw $071a
-	dw $071b
-	dw $071c
-	dw $071d
-	dw $071e
-	dw $071f
+BugCatchingContestantEventFlagTable: ; 139fe
+	dw EVENT_BUG_CATCHING_CONTESTANT_1A
+	dw EVENT_BUG_CATCHING_CONTESTANT_2A
+	dw EVENT_BUG_CATCHING_CONTESTANT_3A
+	dw EVENT_BUG_CATCHING_CONTESTANT_4A
+	dw EVENT_BUG_CATCHING_CONTESTANT_5A
+	dw EVENT_BUG_CATCHING_CONTESTANT_6A
+	dw EVENT_BUG_CATCHING_CONTESTANT_7A
+	dw EVENT_BUG_CATCHING_CONTESTANT_8A
+	dw EVENT_BUG_CATCHING_CONTESTANT_9A
+	dw EVENT_BUG_CATCHING_CONTESTANT_10A
 ; 13a12
 
-Function13a12: ; 13a12
+CheckFirstMonFainted: ; 13a12
 	ld hl, PartyMon1HP
 	ld a, [hli]
 	or [hl]
-	jr z, .asm_13a2b
+	jr z, .fainted
 	ld hl, PartyCount
 	ld a, 1
 	ld [hli], a
@@ -16099,7 +16116,7 @@
 	ld [ScriptVar], a
 	ret
 
-.asm_13a2b
+.fainted
 	ld a, $1
 	ld [ScriptVar], a
 	ret
@@ -33045,23 +33062,31 @@
 TradeBallGFX:   INCBIN "gfx/trade/ball.2bpp"
 TradePoofGFX:   INCBIN "gfx/trade/poof.2bpp"
 
-Function29bfb: ; 29bfb
+Special_CheckTimeCapsuleCompatibility: ; 29bfb
+; Checks to see if your Party is compatible with the generation 1 games.  Returns the following in ScriptVar:
+; 0: Party is okay
+; 1: At least one Pokemon was introduced in GS
+; 2: At least one Pokemon has a move that was introduced in GS
+; 3: At least one Pokemon is holding mail
+
+; If any party Pokemon was introduced in the generation 2 games, don't let it in.
 	ld hl, PartySpecies
-	ld b, PARTY_LENGTH
-.asm_29c00
+	ld b, PARTY_LENGTH ; 6
+.loop
 	ld a, [hli]
 	cp $ff
-	jr z, .asm_29c0c
-	cp 151 + 1
-	jr nc, .asm_29c42
+	jr z, .checkitem
+	cp CHIKORITA ; MEW + 1 ; 151 + 1
+	jr nc, .mon_too_new
 	dec b
-	jr nz, .asm_29c00
+	jr nz, .loop
 
-.asm_29c0c
+; If any party Pokemon is holding mail, don't let it in.
+.checkitem
 	ld a, [PartyCount]
 	ld b, a
 	ld hl, PartyMon1Item
-.asm_29c13
+.itemloop
 	push hl
 	push bc
 	ld d, [hl]
@@ -33068,37 +33093,38 @@
 	callba ItemIsMail
 	pop bc
 	pop hl
-	jr c, .asm_29c5e
+	jr c, .mon_has_mail
 	ld de, PartyMon2 - PartyMon1
 	add hl, de
 	dec b
-	jr nz, .asm_29c13
+	jr nz, .itemloop
 
+; If any party Pokemon has a move that was introduced in the generation 2 games, don't let it in.
 	ld hl, PartyMon1Moves
 	ld a, [PartyCount]
 	ld b, a
-.asm_29c2e
+.move_loop
 	ld c, NUM_MOVES
-.asm_29c30
+.move_next
 	ld a, [hli]
 	cp STRUGGLE + 1
-	jr nc, .asm_29c4c
+	jr nc, .move_too_new
 	dec c
-	jr nz, .asm_29c30
+	jr nz, .move_next
 	ld de, PartyMon2 - (PartyMon1 + NUM_MOVES)
 	add hl, de
 	dec b
-	jr nz, .asm_29c2e
+	jr nz, .move_loop
 	xor a
-	jr .asm_29c63
+	jr .done
 
-.asm_29c42
+.mon_too_new
 	ld [wd265], a
 	call GetPokemonName
 	ld a, $1
-	jr .asm_29c63
+	jr .done
 
-.asm_29c4c
+.move_too_new
 	push bc
 	ld [wd265], a
 	call GetMoveName
@@ -33106,13 +33132,13 @@
 	pop bc
 	call Function29c67
 	ld a, $2
-	jr .asm_29c63
+	jr .done
 
-.asm_29c5e
+.mon_has_mail
 	call Function29c67
 	ld a, $3
 
-.asm_29c63
+.done
 	ld [ScriptVar], a
 	ret
 ; 29c67
@@ -33131,7 +33157,7 @@
 	ret
 ; 29c7b
 
-Function29c7b: ; 29c7b
+Special_EnterTimeCapsule: ; 29c7b
 	ld c, $a
 	call DelayFrames
 	ld a, $4
@@ -33145,7 +33171,7 @@
 	ret
 ; 29c92
 
-Function29c92: ; 29c92
+Special_AbortLink: ; 29c92
 	ld c, $3
 	call DelayFrames
 	ld a, $ff
@@ -33193,7 +33219,7 @@
 	ret
 ; 29ce8
 
-Function29ce8: ; 29ce8
+Special_SetBitsForLinkTradeRequest: ; 29ce8
 	ld a, $1
 	ld [wcf56], a
 	ld [wd265], a
@@ -33200,7 +33226,7 @@
 	ret
 ; 29cf1
 
-Function29cf1: ; 29cf1
+Special_SetBitsForBattleRequest: ; 29cf1
 	ld a, $2
 	ld [wcf56], a
 	ld [wd265], a
@@ -33207,7 +33233,7 @@
 	ret
 ; 29cfa
 
-Function29cfa: ; 29cfa
+Special_SetBitsForTimeCapsuleRequest: ; 29cfa
 	ld a, $2
 	ld [rSB], a
 	xor a
@@ -33222,7 +33248,7 @@
 	ret
 ; 29d11
 
-Function29d11: ; 29d11
+Special_WaitForLinkedFriend: ; 29d11
 	ld a, [wcf56]
 	and a
 	jr z, .asm_29d2f
@@ -33294,7 +33320,7 @@
 	ret
 ; 29d92
 
-Function29d92: ; 29d92
+Special_CheckLinkTimeout: ; 29d92
 	ld a, $1
 	ld [wcf56], a
 	ld hl, wcf5b
@@ -33430,7 +33456,7 @@
 	ret
 ; 29e66
 
-Function29e66: ; 29e66
+Special_TryQuickSave: ; 29e66
 	ld a, [wd265]
 	push af
 	callba Function14ab2
@@ -33447,7 +33473,7 @@
 	ret
 ; 29e82
 
-Function29e82: ; 29e82
+Special_CheckBothSelectedSameRoom: ; 29e82
 	ld a, [wd265]
 	call Function29f17
 	push af
@@ -33474,7 +33500,7 @@
 	ret
 ; 29eaf
 
-Function29eaf: ; 29eaf
+Special_TimeCapsule: ; 29eaf
 	ld a, $1
 	ld [InLinkBattle], a
 	call Function2ed3
@@ -33485,7 +33511,7 @@
 	ret
 ; 29ec4
 
-Function29ec4: ; 29ec4
+Special_TradeCenter: ; 29ec4
 	ld a, $2
 	ld [InLinkBattle], a
 	call Function2ed3
@@ -33496,7 +33522,7 @@
 	ret
 ; 29ed9
 
-Function29ed9: ; 29ed9
+Special_Colosseum: ; 29ed9
 	ld a, $3
 	ld [InLinkBattle], a
 	call Function2ed3
@@ -33507,7 +33533,7 @@
 	ret
 ; 29eee
 
-Function29eee: ; 29eee
+Special_CloseLink: ; 29eee
 	xor a
 	ld [InLinkBattle], a
 	ld c, $3
@@ -33515,7 +33541,7 @@
 	jp Function29f04
 ; 29efa
 
-Function29efa: ; 29efa
+Special_FailedLinkToPast: ; 29efa
 	ld c, $28
 	call DelayFrames
 	ld a, $e
@@ -33564,14 +33590,14 @@
 	ret
 ; 29f47
 
-Function29f47: ; 29f47
+Special_CableClubCheckWhichChris: ; 29f47
 	ld a, [$ffcb]
 	cp $1
 	ld a, $1
-	jr z, .asm_29f50
+	jr z, .yes
 	dec a
 
-.asm_29f50
+.yes
 	ld [ScriptVar], a
 	ret
 ; 29f54
@@ -35089,7 +35115,7 @@
 	db "RIVAL@"
 	db "#MON PROF.@"
 	db "ELITE FOUR@"
-	db $4a, " TRAINER@"
+	db "<PKMN> TRAINER@"
 	db "ELITE FOUR@"
 	db "ELITE FOUR@"
 	db "ELITE FOUR@"
@@ -35140,7 +35166,7 @@
 	db "KIMONO GIRL@"
 	db "TWINS@"
 	db "#FAN@"
-	db $4a, " TRAINER@"
+	db "<PKMN> TRAINER@"
 	db "LEADER@"
 	db "OFFICER@"
 	db "ROCKET@"
@@ -75984,7 +76010,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	and a
 	jr z, .asm_b81dd
 .asm_b8194
@@ -90043,23 +90069,23 @@
 UnownWord26: unownword "ZOOM"
 ; fbb32
 
-Functionfbb32: ; fbb32
+Special_CheckMagikarpLength: ; fbb32
 	callba Function50000
-	jr c, .asm_fbb9e
+	jr c, .declined
 	ld a, [CurPartySpecies]
 	cp MAGIKARP
-	jr nz, .asm_fbba4
+	jr nz, .not_magikarp
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Species
 	ld bc, PartyMon2 - PartyMon1
 	call AddNTimes
 	push hl
-	ld bc, $0015
+	ld bc, MON_DVS
 	add hl, bc
 	ld d, h
 	ld e, l
 	pop hl
-	ld bc, $0006
+	ld bc, MON_ID
 	add hl, bc
 	ld b, h
 	ld c, l
@@ -90072,7 +90098,7 @@
 	ld de, wdfe8
 	ld c, $2
 	call StringCmp
-	jr nc, .asm_fbb98
+	jr nc, .not_long_enough
 	ld hl, Buffer1
 	ld de, wdfe8
 	ld a, [hli]
@@ -90089,17 +90115,17 @@
 	ld [ScriptVar], a
 	ret
 
-.asm_fbb98
+.not_long_enough
 	ld a, $2
 	ld [ScriptVar], a
 	ret
 
-.asm_fbb9e
+.declined
 	ld a, $1
 	ld [ScriptVar], a
 	ret
 
-.asm_fbba4
+.not_magikarp
 	xor a
 	ld [ScriptVar], a
 	ret
@@ -92235,55 +92261,55 @@
 	ld [wd45b], a
 	ret
 
-Function104820:: ; 104820 (41:4820)
+CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
 	ld a, [wd151]
-	cp $ff
+	cp STANDING
 	ret z
 	and a
-	jr z, .asm_104837
-	cp $1
-	jr z, .asm_104846
-	cp $2
-	jr z, .asm_104851
-	cp $3
-	jr z, .asm_10485c
+	jr z, .down
+	cp UP
+	jr z, .up
+	cp LEFT
+	jr z, .left
+	cp RIGHT
+	jr z, .right
 	and a
 	ret
-.asm_104837
+.down
 	ld a, [MapY]
-	sub $4
+	sub 4
 	ld b, a
 	ld a, [MapHeight]
 	add a
 	cp b
-	jr z, .asm_10486b
+	jr z, .ok
 	and a
 	ret
-.asm_104846
+.up
 	ld a, [MapY]
-	sub $4
-	cp $ff
-	jr z, .asm_10486b
+	sub 4
+	cp -1
+	jr z, .ok
 	and a
 	ret
-.asm_104851
+.left
 	ld a, [MapX]
 	sub $4
-	cp $ff
-	jr z, .asm_10486b
+	cp -1
+	jr z, .ok
 	and a
 	ret
-.asm_10485c
+.right
 	ld a, [MapX]
-	sub $4
+	sub 4
 	ld b, a
 	ld a, [MapWidth]
 	add a
 	cp b
-	jr z, .asm_10486b
+	jr z, .ok
 	and a
 	ret
-.asm_10486b
+.ok
 	scf
 	ret
 
@@ -93468,16 +93494,16 @@
 	jr c, .asm_105096
 	jp CloseSRAM
 
-Function1050b9: ; 1050b9
+Special_UnlockMysteryGift: ; 1050b9
 	call Function105106
 	ld hl, $abe3
 	ld a, [hl]
 	inc a
-	jr nz, .asm_1050c5
+	jr nz, .ok
 	ld [hld], a
 	ld [hl], a
 
-.asm_1050c5
+.ok
 	jp CloseSRAM
 ; 1050c8
 
--- a/maps/AzaleaGym.asm
+++ b/maps/AzaleaGym.asm
@@ -446,15 +446,15 @@
 
 	; signposts
 	db 2
-	signpost 13, 3, $0, AzaleaGymStatue
-	signpost 13, 6, $0, AzaleaGymStatue
+	signpost 13, 3, SIGNPOST_READ, AzaleaGymStatue
+	signpost 13, 6, SIGNPOST_READ, AzaleaGymStatue
 
 	; people-events
 	db 7
-	person_event SPRITE_BUGSY, 11, 9, $3, $0, 255, 255, $a0, 0, BugsyScript_0x18ec1e, -1
-	person_event SPRITE_BUG_CATCHER, 7, 9, $a, $0, 255, 255, $b2, 2, TrainerBug_catcherBug_catcher_benny, -1
-	person_event SPRITE_BUG_CATCHER, 12, 12, $6, $0, 255, 255, $b2, 3, TrainerBug_catcherAl, -1
-	person_event SPRITE_BUG_CATCHER, 6, 4, $6, $0, 255, 255, $b2, 3, TrainerBug_catcherJosh, -1
-	person_event SPRITE_TWIN, 14, 8, $6, $0, 255, 255, $82, 1, TrainerTwinsAmyandmay1, -1
-	person_event SPRITE_TWIN, 14, 9, $6, $0, 255, 255, $82, 1, TrainerTwinsAmyandmay2, -1
-	person_event SPRITE_GYM_GUY, 17, 11, $6, $0, 255, 255, $80, 0, AzaleaGymGuyScript, -1
+	person_event SPRITE_BUGSY, 11, 9, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BugsyScript_0x18ec1e, -1
+	person_event SPRITE_BUG_CATCHER, 7, 9, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerBug_catcherBug_catcher_benny, -1
+	person_event SPRITE_BUG_CATCHER, 12, 12, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBug_catcherAl, -1
+	person_event SPRITE_BUG_CATCHER, 6, 4, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBug_catcherJosh, -1
+	person_event SPRITE_TWIN, 14, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsAmyandmay1, -1
+	person_event SPRITE_TWIN, 14, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsAmyandmay2, -1
+	person_event SPRITE_GYM_GUY, 17, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, AzaleaGymGuyScript, -1
--- a/maps/AzaleaMart.asm
+++ b/maps/AzaleaMart.asm
@@ -57,6 +57,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x18e040, -1
-	person_event SPRITE_COOLTRAINER_M, 9, 6, $7, $0, 255, 255, $0, 0, CooltrainerMScript_0x18e047, -1
-	person_event SPRITE_BUG_CATCHER, 6, 11, $5, $2, 255, 255, $80, 0, BugCatcherScript_0x18e04a, -1
+	person_event SPRITE_CLERK, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x18e040, -1
+	person_event SPRITE_COOLTRAINER_M, 9, 6, UP << 2 | $3, $0, -1, -1, $0, 0, CooltrainerMScript_0x18e047, -1
+	person_event SPRITE_BUG_CATCHER, 6, 11, UP << 2 | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, BugCatcherScript_0x18e04a, -1
--- a/maps/AzaleaPokeCenter1F.asm
+++ b/maps/AzaleaPokeCenter1F.asm
@@ -90,7 +90,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x18db28, -1
-	person_event SPRITE_GENTLEMAN, 10, 13, $4, $10, 255, 255, $0, 0, GentlemanScript_0x18db2b, -1
-	person_event SPRITE_FISHING_GURU, 5, 10, $6, $0, 255, 255, $0, 0, FishingGuruScript_0x18db2e, -1
-	person_event SPRITE_POKEFAN_F, 8, 5, $2, $21, 255, 255, $0, 0, PokefanFScript_0x18db31, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x18db28, -1
+	person_event SPRITE_GENTLEMAN, 10, 13, UP << 2 | $0, $10, -1, -1, $0, 0, GentlemanScript_0x18db2b, -1
+	person_event SPRITE_FISHING_GURU, 5, 10, UP << 2 | $2, $0, -1, -1, $0, 0, FishingGuruScript_0x18db2e, -1
+	person_event SPRITE_POKEFAN_F, 8, 5, DOWN << 2 | $2, $21, -1, -1, $0, 0, PokefanFScript_0x18db31, -1
--- a/maps/AzaleaTown.asm
+++ b/maps/AzaleaTown.asm
@@ -470,27 +470,27 @@
 
 	; signposts
 	db 9
-	signpost 9, 19, $0, AzaleaTownSign
-	signpost 9, 10, $0, KurtsHouseSign
-	signpost 15, 14, $0, AzaleaGymSign
-	signpost 7, 29, $0, SlowpokeWellSign
-	signpost 13, 19, $0, CharcoalKilnSign
-	signpost 9, 16, $0, AzaleaTownPokeCenterSign
-	signpost 5, 22, $0, AzaleaTownMartSign
-	signpost 9, 3, $0, AzaleaTownIlextForestSign
-	signpost 6, 31, $7, MapAzaleaTownSignpostItem8
+	signpost 9, 19, SIGNPOST_READ, AzaleaTownSign
+	signpost 9, 10, SIGNPOST_READ, KurtsHouseSign
+	signpost 15, 14, SIGNPOST_READ, AzaleaGymSign
+	signpost 7, 29, SIGNPOST_READ, SlowpokeWellSign
+	signpost 13, 19, SIGNPOST_READ, CharcoalKilnSign
+	signpost 9, 16, SIGNPOST_READ, AzaleaTownPokeCenterSign
+	signpost 5, 22, SIGNPOST_READ, AzaleaTownMartSign
+	signpost 9, 3, SIGNPOST_READ, AzaleaTownIlextForestSign
+	signpost 6, 31, SIGNPOST_ITEMIFSET, MapAzaleaTownSignpostItem8
 
 	; people-events
 	db 12
-	person_event SPRITE_AZALEA_ROCKET, 13, 35, $6, $0, 255, 255, $0, 0, AzaleaRocketScript_0x1980ab, EVENT_6FA
-	person_event SPRITE_GRAMPS, 13, 25, $2, $21, 255, 255, $0, 0, GrampsScript_0x1980b1, -1
-	person_event SPRITE_TEACHER, 17, 19, $4, $20, 255, 255, $90, 0, TeacherScript_0x1980c5, -1
-	person_event SPRITE_YOUNGSTER, 13, 11, $5, $1, 255, 255, $a0, 0, YoungsterScript_0x1980c8, -1
-	person_event SPRITE_SLOWPOKE, 21, 12, $1, $0, 255, 255, $0, 0, SlowpokeScript_0x1980cb, EVENT_6F9
-	person_event SPRITE_SLOWPOKE, 13, 22, $1, $0, 255, 255, $0, 0, SlowpokeScript_0x1980cb, EVENT_6F9
-	person_event SPRITE_SLOWPOKE, 13, 33, $1, $0, 255, 255, $0, 0, SlowpokeScript_0x1980cb, EVENT_6F9
-	person_event SPRITE_SLOWPOKE, 19, 19, $1, $0, 255, 255, $0, 0, SlowpokeScript_0x1980cb, EVENT_6F9
-	person_event SPRITE_FRUIT_TREE, 6, 12, $1, $0, 255, 255, $0, 0, WhiteApricornTree, -1
-	person_event SPRITE_AZALEA_ROCKET, 14, 15, $8, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6BF
-	person_event SPRITE_AZALEA_ROCKET, 20, 14, $6, $0, 255, 255, $0, 0, AzaleaRocketScript_0x1980ae, EVENT_6FC
-	person_event SPRITE_KURT_OUTSIDE, 9, 10, $8, $0, 255, 255, $0, 0, KurtOutsideScript_0x19810c, EVENT_7A4
+	person_event SPRITE_AZALEA_ROCKET, 13, 35, UP << 2 | $2, $0, -1, -1, $0, 0, AzaleaRocketScript_0x1980ab, EVENT_6FA
+	person_event SPRITE_GRAMPS, 13, 25, DOWN << 2 | $2, $21, -1, -1, $0, 0, GrampsScript_0x1980b1, -1
+	person_event SPRITE_TEACHER, 17, 19, UP << 2 | $0, $20, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x1980c5, -1
+	person_event SPRITE_YOUNGSTER, 13, 11, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x1980c8, -1
+	person_event SPRITE_SLOWPOKE, 21, 12, DOWN << 2 | $1, $0, -1, -1, $0, 0, SlowpokeScript_0x1980cb, EVENT_6F9
+	person_event SPRITE_SLOWPOKE, 13, 22, DOWN << 2 | $1, $0, -1, -1, $0, 0, SlowpokeScript_0x1980cb, EVENT_6F9
+	person_event SPRITE_SLOWPOKE, 13, 33, DOWN << 2 | $1, $0, -1, -1, $0, 0, SlowpokeScript_0x1980cb, EVENT_6F9
+	person_event SPRITE_SLOWPOKE, 19, 19, DOWN << 2 | $1, $0, -1, -1, $0, 0, SlowpokeScript_0x1980cb, EVENT_6F9
+	person_event SPRITE_FRUIT_TREE, 6, 12, DOWN << 2 | $1, $0, -1, -1, $0, 0, WhiteApricornTree, -1
+	person_event SPRITE_AZALEA_ROCKET, 14, 15, LEFT << 2 | $0, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6BF
+	person_event SPRITE_AZALEA_ROCKET, 20, 14, UP << 2 | $2, $0, -1, -1, $0, 0, AzaleaRocketScript_0x1980ae, EVENT_6FC
+	person_event SPRITE_KURT_OUTSIDE, 9, 10, LEFT << 2 | $0, $0, -1, -1, $0, 0, KurtOutsideScript_0x19810c, EVENT_7A4
--- a/maps/BattleTower1F.asm
+++ b/maps/BattleTower1F.asm
@@ -79,7 +79,7 @@
 	yesorno
 	iffalse UnknownScript_0x9e3fc
 	dotrigger $0
-	special Function29e66
+	special Special_TryQuickSave
 	iffalse UnknownScript_0x9e3fc
 	dotrigger $1
 	writebyte $1
@@ -168,7 +168,7 @@
 	writetext UnknownText_0x9ef1f
 	yesorno
 	iffalse UnknownScript_0x9e3fc
-	special Function29e66
+	special Special_TryQuickSave
 	iffalse UnknownScript_0x9e3fc
 	writebyte $1
 	special Function170687
@@ -207,7 +207,7 @@
 	yesorno
 	iffalse UnknownScript_0x9e3fc
 	dotrigger $0
-	special Function29e66
+	special Special_TryQuickSave
 	iffalse UnknownScript_0x9e3fc
 	dotrigger $1
 	writebyte $6
@@ -806,12 +806,12 @@
 
 	; signposts
 	db 1
-	signpost 6, 6, $0, MapBattleTower1FSignpost0Script
+	signpost 6, 6, SIGNPOST_READ, MapBattleTower1FSignpost0Script
 
 	; people-events
 	db 5
-	person_event SPRITE_RECEPTIONIST, 10, 11, $6, $0, 255, 255, $0, 0, ReceptionistScript_0x9e3e2, -1
-	person_event SPRITE_YOUNGSTER, 13, 18, $9, $0, 255, 255, $b0, 0, YoungsterScript_0x9e55d, -1
-	person_event SPRITE_COOLTRAINER_F, 13, 8, $5, $1, 255, 255, $80, 0, CooltrainerFScript_0x9e568, -1
-	person_event SPRITE_BUG_CATCHER, 7, 5, $2, $11, 255, 255, $90, 0, BugCatcherScript_0x9e56b, -1
-	person_event SPRITE_GRANNY, 7, 18, $4, $10, 255, 255, $0, 0, GrannyScript_0x9e56e, -1
+	person_event SPRITE_RECEPTIONIST, 10, 11, UP << 2 | $2, $0, -1, -1, $0, 0, ReceptionistScript_0x9e3e2, -1
+	person_event SPRITE_YOUNGSTER, 13, 18, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, YoungsterScript_0x9e55d, -1
+	person_event SPRITE_COOLTRAINER_F, 13, 8, UP << 2 | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x9e568, -1
+	person_event SPRITE_BUG_CATCHER, 7, 5, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, BugCatcherScript_0x9e56b, -1
+	person_event SPRITE_GRANNY, 7, 18, UP << 2 | $0, $10, -1, -1, $0, 0, GrannyScript_0x9e56e, -1
--- a/maps/BattleTowerBattleRoom.asm
+++ b/maps/BattleTowerBattleRoom.asm
@@ -155,5 +155,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_YOUNGSTER, 4, 8, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_791
-	person_event SPRITE_RECEPTIONIST, 10, 5, $9, $0, 255, 255, $0, 0, ObjectEvent, -1
+	person_event SPRITE_YOUNGSTER, 4, 8, UP << 2 | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_791
+	person_event SPRITE_RECEPTIONIST, 10, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ObjectEvent, -1
--- a/maps/BattleTowerElevator.asm
+++ b/maps/BattleTowerElevator.asm
@@ -60,4 +60,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_RECEPTIONIST, 6, 5, $9, $0, 255, 255, $0, 0, MovementData_0x9f58f, -1
+	person_event SPRITE_RECEPTIONIST, 6, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, MovementData_0x9f58f, -1
--- a/maps/BattleTowerHallway.asm
+++ b/maps/BattleTowerHallway.asm
@@ -96,4 +96,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_RECEPTIONIST, 6, 15, $6, $0, 255, 255, $0, 0, BattleTowerHallway_MapEventHeader, -1
+	person_event SPRITE_RECEPTIONIST, 6, 15, UP << 2 | $2, $0, -1, -1, $0, 0, BattleTowerHallway_MapEventHeader, -1
--- a/maps/BattleTowerOutside.asm
+++ b/maps/BattleTowerOutside.asm
@@ -138,11 +138,11 @@
 
 	; signposts
 	db 1
-	signpost 10, 10, $0, MapBattleTowerOutsideSignpost0Script
+	signpost 10, 10, SIGNPOST_READ, MapBattleTowerOutsideSignpost0Script
 
 	; people-events
 	db 4
-	person_event SPRITE_STANDING_YOUNGSTER, 16, 10, $7, $0, 255, 255, $80, 0, StandingYoungsterScript_0x9f85f, -1
-	person_event SPRITE_BUENA, 15, 17, $2, $11, 255, 255, $a0, 0, BuenaScript_0x9f862, -1
-	person_event SPRITE_SAILOR, 22, 16, $5, $1, 255, 255, $0, 0, SailorScript_0x9f865, EVENT_7CF
-	person_event SPRITE_LASS, 28, 16, $3, $0, 255, 255, $a0, 0, ObjectEvent, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 16, 10, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, StandingYoungsterScript_0x9f85f, -1
+	person_event SPRITE_BUENA, 15, 17, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BuenaScript_0x9f862, -1
+	person_event SPRITE_SAILOR, 22, 16, UP << 2 | $1, $1, -1, -1, $0, 0, SailorScript_0x9f865, EVENT_7CF
+	person_event SPRITE_LASS, 28, 16, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ObjectEvent, -1
--- a/maps/BillsHouse.asm
+++ b/maps/BillsHouse.asm
@@ -8,7 +8,7 @@
 GrampsScript_0x189538:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x1896ba
 	checkevent EVENT_GOT_THUNDERSTONE_FROM_BILLS_GRANDPA
 	iftrue UnknownScript_0x1896c0
@@ -120,7 +120,7 @@
 	verbosegiveitem EVERSTONE, 1
 	iffalse UnknownScript_0x1896cc
 	setevent EVENT_GOT_EVERSTONE_FROM_BILLS_GRANDPA
-	setevent EVENT_000
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
 	loadmovesprites
 	end
 
@@ -131,7 +131,7 @@
 	verbosegiveitem LEAF_STONE, 1
 	iffalse UnknownScript_0x1896cc
 	setevent EVENT_GOT_LEAF_STONE_FROM_BILLS_GRANDPA
-	setevent EVENT_000
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
 	loadmovesprites
 	end
 
@@ -142,7 +142,7 @@
 	verbosegiveitem WATER_STONE, 1
 	iffalse UnknownScript_0x1896cc
 	setevent EVENT_GOT_WATER_STONE_FROM_BILLS_GRANDPA
-	setevent EVENT_000
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
 	loadmovesprites
 	end
 
@@ -153,7 +153,7 @@
 	verbosegiveitem FIRE_STONE, 1
 	iffalse UnknownScript_0x1896cc
 	setevent EVENT_GOT_FIRE_STONE_FROM_BILLS_GRANDPA
-	setevent EVENT_000
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
 	loadmovesprites
 	end
 
@@ -367,4 +367,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_GRAMPS, 7, 6, $7, $20, 255, 255, $90, 0, GrampsScript_0x189538, -1
+	person_event SPRITE_GRAMPS, 7, 6, UP << 2 | $3, $20, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrampsScript_0x189538, -1
--- a/maps/BlackthornCity.asm
+++ b/maps/BlackthornCity.asm
@@ -323,22 +323,22 @@
 
 	; signposts
 	db 7
-	signpost 24, 34, $0, BlackthornCitySign
-	signpost 13, 17, $0, BlackthornGymSign
-	signpost 31, 7, $0, MoveDeletersHouseSign
-	signpost 3, 21, $0, DragonDensSign
-	signpost 25, 5, $0, BlackthornCityTrainerTips
-	signpost 29, 16, $0, BlackthornCityMartSign
-	signpost 29, 22, $0, BlackthornCityPokeCenterSign
+	signpost 24, 34, SIGNPOST_READ, BlackthornCitySign
+	signpost 13, 17, SIGNPOST_READ, BlackthornGymSign
+	signpost 31, 7, SIGNPOST_READ, MoveDeletersHouseSign
+	signpost 3, 21, SIGNPOST_READ, DragonDensSign
+	signpost 25, 5, SIGNPOST_READ, BlackthornCityTrainerTips
+	signpost 29, 16, SIGNPOST_READ, BlackthornCityMartSign
+	signpost 29, 22, SIGNPOST_READ, BlackthornCityPokeCenterSign
 
 	; people-events
 	db 9
-	person_event SPRITE_SUPER_NERD, 16, 22, $6, $0, 255, 255, $80, 0, SuperNerdScript_0x1a46e8, EVENT_6E3
-	person_event SPRITE_SUPER_NERD, 16, 23, $6, $0, 255, 255, $80, 0, SuperNerdScript_0x1a46e8, EVENT_6E4
-	person_event SPRITE_GRAMPS, 6, 24, $6, $0, 255, 255, $0, 0, GrampsScript_0x1a4708, EVENT_74C
-	person_event SPRITE_GRAMPS, 6, 25, $8, $0, 255, 255, $0, 0, GrampsScript_0x1a470b, EVENT_74D
-	person_event SPRITE_BLACK_BELT, 35, 28, $5, $1, 255, 255, $90, 0, BlackBeltScript_0x1a470e, -1
-	person_event SPRITE_COOLTRAINER_F, 29, 13, $5, $2, 255, 255, $80, 0, CooltrainerFScript_0x1a4722, -1
-	person_event SPRITE_YOUNGSTER, 19, 17, $5, $1, 255, 255, $0, 0, YoungsterScript_0x1a4725, -1
-	person_event SPRITE_YOUNGSTER, 24, 26, $6, $0, 255, 255, $0, 0, SantosScript, EVENT_75D
-	person_event SPRITE_COOLTRAINER_F, 23, 39, $7, $0, 255, 255, $a0, 0, CooltrainerFScript_0x1a4728, -1
+	person_event SPRITE_SUPER_NERD, 16, 22, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x1a46e8, EVENT_6E3
+	person_event SPRITE_SUPER_NERD, 16, 23, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x1a46e8, EVENT_6E4
+	person_event SPRITE_GRAMPS, 6, 24, UP << 2 | $2, $0, -1, -1, $0, 0, GrampsScript_0x1a4708, EVENT_74C
+	person_event SPRITE_GRAMPS, 6, 25, LEFT << 2 | $0, $0, -1, -1, $0, 0, GrampsScript_0x1a470b, EVENT_74D
+	person_event SPRITE_BLACK_BELT, 35, 28, UP << 2 | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, BlackBeltScript_0x1a470e, -1
+	person_event SPRITE_COOLTRAINER_F, 29, 13, UP << 2 | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x1a4722, -1
+	person_event SPRITE_YOUNGSTER, 19, 17, UP << 2 | $1, $1, -1, -1, $0, 0, YoungsterScript_0x1a4725, -1
+	person_event SPRITE_YOUNGSTER, 24, 26, UP << 2 | $2, $0, -1, -1, $0, 0, SantosScript, EVENT_75D
+	person_event SPRITE_COOLTRAINER_F, 23, 39, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x1a4728, -1
--- a/maps/BlackthornDodrioTradeHouse.asm
+++ b/maps/BlackthornDodrioTradeHouse.asm
@@ -30,9 +30,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, EmysHouseBookshelf
-	signpost 1, 1, $0, EmysHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, EmysHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, EmysHouseBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_LASS, 7, 6, $3, $0, 255, 255, $a0, 0, Emy, -1
+	person_event SPRITE_LASS, 7, 6, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, Emy, -1
--- a/maps/BlackthornDragonSpeechHouse.asm
+++ b/maps/BlackthornDragonSpeechHouse.asm
@@ -58,5 +58,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_GRANNY, 7, 6, $3, $0, 255, 255, $0, 0, GrannyScript_0x195949, -1
-	person_event SPRITE_EKANS, 9, 9, $16, $0, 255, 255, $90, 0, EkansScript_0x19594c, -1
+	person_event SPRITE_GRANNY, 7, 6, DOWN << 2 | $3, $0, -1, -1, $0, 0, GrannyScript_0x195949, -1
+	person_event SPRITE_EKANS, 9, 9, UP << 2 | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, EkansScript_0x19594c, -1
--- a/maps/BlackthornGym1F.asm
+++ b/maps/BlackthornGym1F.asm
@@ -447,13 +447,13 @@
 
 	; signposts
 	db 2
-	signpost 15, 3, $0, BlackthornGymStatue
-	signpost 15, 6, $0, BlackthornGymStatue
+	signpost 15, 3, SIGNPOST_READ, BlackthornGymStatue
+	signpost 15, 6, SIGNPOST_READ, BlackthornGymStatue
 
 	; people-events
 	db 5
-	person_event SPRITE_CLAIR, 7, 9, $6, $0, 255, 255, $90, 0, ClairScript_0x194e24, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 10, $6, $0, 255, 255, $82, 3, TrainerCooltrainermMike, -1
-	person_event SPRITE_COOLTRAINER_M, 18, 5, $6, $0, 255, 255, $82, 3, TrainerCooltrainermPaul, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 13, $6, $0, 255, 255, $82, 1, TrainerCooltrainerfLola, -1
-	person_event SPRITE_GYM_GUY, 19, 11, $6, $0, 255, 255, $80, 0, BlackthornGymGuyScript, -1
+	person_event SPRITE_CLAIR, 7, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClairScript_0x194e24, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 10, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainermMike, -1
+	person_event SPRITE_COOLTRAINER_M, 18, 5, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainermPaul, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 13, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerCooltrainerfLola, -1
+	person_event SPRITE_GYM_GUY, 19, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, BlackthornGymGuyScript, -1
--- a/maps/BlackthornGym2F.asm
+++ b/maps/BlackthornGym2F.asm
@@ -177,11 +177,11 @@
 
 	; people-events
 	db 8
-	person_event SPRITE_COOLTRAINER_M, 5, 8, $9, $0, 255, 255, $82, 1, TrainerCooltrainermCody, -1
-	person_event SPRITE_COOLTRAINER_F, 15, 8, $8, $0, 255, 255, $82, 1, TrainerCooltrainerfFran, -1
-	person_event SPRITE_BOULDER, 6, 12, $19, $0, 255, 255, $0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_1
-	person_event SPRITE_BOULDER, 7, 6, $19, $0, 255, 255, $0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_2
-	person_event SPRITE_BOULDER, 20, 10, $19, $0, 255, 255, $0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_3
-	person_event SPRITE_BOULDER, 7, 7, $19, $0, 255, 255, $0, 0, BlackthornGymBoulder, -1
-	person_event SPRITE_BOULDER, 5, 10, $19, $0, 255, 255, $0, 0, BlackthornGymBoulder, -1
-	person_event SPRITE_BOULDER, 18, 12, $19, $0, 255, 255, $0, 0, BlackthornGymBoulder, -1
+	person_event SPRITE_COOLTRAINER_M, 5, 8, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerCooltrainermCody, -1
+	person_event SPRITE_COOLTRAINER_F, 15, 8, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerCooltrainerfFran, -1
+	person_event SPRITE_BOULDER, 6, 12, LEFT << 2 | $11, $0, -1, -1, $0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_1
+	person_event SPRITE_BOULDER, 7, 6, LEFT << 2 | $11, $0, -1, -1, $0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_2
+	person_event SPRITE_BOULDER, 20, 10, LEFT << 2 | $11, $0, -1, -1, $0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_3
+	person_event SPRITE_BOULDER, 7, 7, LEFT << 2 | $11, $0, -1, -1, $0, 0, BlackthornGymBoulder, -1
+	person_event SPRITE_BOULDER, 5, 10, LEFT << 2 | $11, $0, -1, -1, $0, 0, BlackthornGymBoulder, -1
+	person_event SPRITE_BOULDER, 18, 12, LEFT << 2 | $11, $0, -1, -1, $0, 0, BlackthornGymBoulder, -1
--- a/maps/BlackthornMart.asm
+++ b/maps/BlackthornMart.asm
@@ -58,6 +58,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x195a5d, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 11, $5, $2, 255, 255, $0, 0, CooltrainerMScript_0x195a64, -1
-	person_event SPRITE_BLACK_BELT, 6, 9, $6, $0, 255, 255, $a0, 0, BlackBeltScript_0x195a67, -1
+	person_event SPRITE_CLERK, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x195a5d, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 11, UP << 2 | $1, $2, -1, -1, $0, 0, CooltrainerMScript_0x195a64, -1
+	person_event SPRITE_BLACK_BELT, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BlackBeltScript_0x195a67, -1
--- a/maps/BlackthornPokeCenter1F.asm
+++ b/maps/BlackthornPokeCenter1F.asm
@@ -61,7 +61,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x195b79, -1
-	person_event SPRITE_GENTLEMAN, 7, 9, $6, $0, 255, 255, $0, 0, GentlemanScript_0x195b7c, -1
-	person_event SPRITE_TWIN, 8, 5, $3, $0, 255, 255, $a0, 0, TwinScript_0x195b7f, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 11, $5, $1, 255, 255, $80, 0, CooltrainerMScript_0x195b82, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x195b79, -1
+	person_event SPRITE_GENTLEMAN, 7, 9, UP << 2 | $2, $0, -1, -1, $0, 0, GentlemanScript_0x195b7c, -1
+	person_event SPRITE_TWIN, 8, 5, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TwinScript_0x195b7f, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 11, UP << 2 | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x195b82, -1
--- a/maps/BluesHouse.asm
+++ b/maps/BluesHouse.asm
@@ -158,4 +158,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_DAISY, 7, 6, $3, $0, 255, 255, $0, 0, DaisyScript_0x19b0d0, -1
+	person_event SPRITE_DAISY, 7, 6, DOWN << 2 | $3, $0, -1, -1, $0, 0, DaisyScript_0x19b0d0, -1
--- a/maps/BrunosRoom.asm
+++ b/maps/BrunosRoom.asm
@@ -21,7 +21,7 @@
 	end
 
 UnknownScript_0x180998:
-	checkevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
+	checkevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
 	iffalse UnknownScript_0x1809a2
 	changeblock $4, $e, $2a
 UnknownScript_0x1809a2:
@@ -40,7 +40,7 @@
 	reloadmappart
 	loadmovesprites
 	dotrigger $1
-	setevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
+	setevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
 	waitbutton
 	end
 
@@ -145,4 +145,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_BRUNO, 11, 9, $6, $0, 255, 255, $b0, 0, BrunoScript_0x1809c5, -1
+	person_event SPRITE_BRUNO, 11, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, BrunoScript_0x1809c5, -1
--- a/maps/BurnedTower1F.asm
+++ b/maps/BurnedTower1F.asm
@@ -306,13 +306,13 @@
 
 	; signposts
 	db 2
-	signpost 7, 8, $7, MapBurnedTower1FSignpostItem0
-	signpost 11, 13, $7, MapBurnedTower1FSignpostItem1
+	signpost 7, 8, SIGNPOST_ITEMIFSET, MapBurnedTower1FSignpostItem0
+	signpost 11, 13, SIGNPOST_ITEMIFSET, MapBurnedTower1FSignpostItem1
 
 	; people-events
 	db 5
-	person_event SPRITE_ROCK, 8, 19, $18, $0, 255, 255, $0, 0, BurnedTower1FRock, -1
-	person_event SPRITE_SUPER_NERD, 16, 16, $3, $0, 255, 255, $90, 0, SuperNerdScript_0x185cbc, EVENT_765
-	person_event SPRITE_SILVER, 13, 12, $8, $0, 255, 255, $2, 3, ObjectEvent, EVENT_6C5
-	person_event SPRITE_MORTY, 18, 18, $2, $11, 255, 255, $b0, 0, MortyScript_0x185cbf, EVENT_764
-	person_event SPRITE_POKE_BALL, 6, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x185ccb, EVENT_656
+	person_event SPRITE_ROCK, 8, 19, LEFT << 2 | $10, $0, -1, -1, $0, 0, BurnedTower1FRock, -1
+	person_event SPRITE_SUPER_NERD, 16, 16, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x185cbc, EVENT_765
+	person_event SPRITE_SILVER, 13, 12, LEFT << 2 | $0, $0, -1, -1, $2, 3, ObjectEvent, EVENT_6C5
+	person_event SPRITE_MORTY, 18, 18, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, MortyScript_0x185cbf, EVENT_764
+	person_event SPRITE_POKE_BALL, 6, 18, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x185ccb, EVENT_656
--- a/maps/BurnedTowerB1F.asm
+++ b/maps/BurnedTowerB1F.asm
@@ -251,12 +251,12 @@
 
 	; people-events
 	db 9
-	person_event SPRITE_BOULDER, 12, 21, $19, $0, 255, 255, $0, 0, BurnedTowerB1FBoulder, -1
-	person_event SPRITE_RAIKOU, 7, 11, $16, $0, 255, 255, $b0, 0, ObjectEvent, EVENT_74A
-	person_event SPRITE_ENTEI, 7, 16, $16, $0, 255, 255, $80, 0, ObjectEvent, EVENT_74A
-	person_event SPRITE_SUICUNE, 8, 14, $16, $0, 255, 255, $90, 0, ObjectEvent, EVENT_74A
-	person_event SPRITE_RAIKOU, 7, 11, $6, $0, 255, 255, $d0, 0, ObjectEvent, EVENT_74B
-	person_event SPRITE_ENTEI, 7, 16, $6, $0, 255, 255, $d0, 0, ObjectEvent, EVENT_74B
-	person_event SPRITE_SUICUNE, 8, 14, $6, $0, 255, 255, $d0, 0, ObjectEvent, EVENT_74B
-	person_event SPRITE_POKE_BALL, 8, 20, $1, $0, 255, 255, $1, 0, ItemFragment_0x186231, EVENT_657
-	person_event SPRITE_SUPER_NERD, 16, 14, $7, $0, 255, 255, $90, 0, SuperNerdScript_0x186212, EVENT_EUSINE_IN_BURNED_TOWER
+	person_event SPRITE_BOULDER, 12, 21, LEFT << 2 | $11, $0, -1, -1, $0, 0, BurnedTowerB1FBoulder, -1
+	person_event SPRITE_RAIKOU, 7, 11, UP << 2 | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, ObjectEvent, EVENT_74A
+	person_event SPRITE_ENTEI, 7, 16, UP << 2 | $12, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ObjectEvent, EVENT_74A
+	person_event SPRITE_SUICUNE, 8, 14, UP << 2 | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_74A
+	person_event SPRITE_RAIKOU, 7, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_SILVER << 4) | $80, 0, ObjectEvent, EVENT_74B
+	person_event SPRITE_ENTEI, 7, 16, UP << 2 | $2, $0, -1, -1, (PAL_OW_SILVER << 4) | $80, 0, ObjectEvent, EVENT_74B
+	person_event SPRITE_SUICUNE, 8, 14, UP << 2 | $2, $0, -1, -1, (PAL_OW_SILVER << 4) | $80, 0, ObjectEvent, EVENT_74B
+	person_event SPRITE_POKE_BALL, 8, 20, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x186231, EVENT_657
+	person_event SPRITE_SUPER_NERD, 16, 14, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x186212, EVENT_EUSINE_IN_BURNED_TOWER
--- a/maps/CeladonCafe.asm
+++ b/maps/CeladonCafe.asm
@@ -214,13 +214,13 @@
 
 	; signposts
 	db 2
-	signpost 0, 5, $0, EatathonContestPoster
-	signpost 1, 7, $0, CeladonCafeTrashcan
+	signpost 0, 5, SIGNPOST_READ, EatathonContestPoster
+	signpost 1, 7, SIGNPOST_READ, CeladonCafeTrashcan
 
 	; people-events
 	db 5
-	person_event SPRITE_SUPER_NERD, 7, 13, $8, $0, 255, 255, $b0, 0, SuperNerdScript_0x73049, -1
-	person_event SPRITE_FISHER, 10, 8, $8, $0, 255, 255, $0, 0, FisherScript_0x73051, -1
-	person_event SPRITE_FISHER, 11, 5, $9, $0, 255, 255, $a0, 0, FisherScript_0x73062, -1
-	person_event SPRITE_FISHER, 6, 5, $9, $0, 255, 255, $0, 0, FisherScript_0x73073, -1
-	person_event SPRITE_TEACHER, 7, 8, $8, $0, 255, 255, $0, 0, TeacherScript_0x73084, -1
+	person_event SPRITE_SUPER_NERD, 7, 13, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, SuperNerdScript_0x73049, -1
+	person_event SPRITE_FISHER, 10, 8, LEFT << 2 | $0, $0, -1, -1, $0, 0, FisherScript_0x73051, -1
+	person_event SPRITE_FISHER, 11, 5, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x73062, -1
+	person_event SPRITE_FISHER, 6, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, FisherScript_0x73073, -1
+	person_event SPRITE_TEACHER, 7, 8, LEFT << 2 | $0, $0, -1, -1, $0, 0, TeacherScript_0x73084, -1
--- a/maps/CeladonCity.asm
+++ b/maps/CeladonCity.asm
@@ -247,23 +247,23 @@
 
 	; signposts
 	db 8
-	signpost 21, 23, $0, CeladonCitySign
-	signpost 31, 11, $0, CeladonGymSign
-	signpost 9, 6, $0, CeladonCityDeptStoreSign
-	signpost 9, 13, $0, CeladonCityMansionSign
-	signpost 21, 19, $0, CeladonCityGameCornerSign
-	signpost 21, 29, $0, CeladonCityTrainerTips
-	signpost 9, 30, $0, CeladonCityPokeCenterSign
-	signpost 21, 37, $7, MapCeladonCitySignpostItem7
+	signpost 21, 23, SIGNPOST_READ, CeladonCitySign
+	signpost 31, 11, SIGNPOST_READ, CeladonGymSign
+	signpost 9, 6, SIGNPOST_READ, CeladonCityDeptStoreSign
+	signpost 9, 13, SIGNPOST_READ, CeladonCityMansionSign
+	signpost 21, 19, SIGNPOST_READ, CeladonCityGameCornerSign
+	signpost 21, 29, SIGNPOST_READ, CeladonCityTrainerTips
+	signpost 9, 30, SIGNPOST_READ, CeladonCityPokeCenterSign
+	signpost 21, 37, SIGNPOST_ITEMIFSET, MapCeladonCitySignpostItem7
 
 	; people-events
 	db 9
-	person_event SPRITE_FISHER, 15, 30, $9, $0, 255, 255, $a0, 0, FisherScript_0x1a9f43, -1
-	person_event SPRITE_POLIWAG, 15, 31, $16, $0, 255, 255, $90, 0, CeladonCityPoliwrath, -1
-	person_event SPRITE_TEACHER, 28, 24, $5, $2, 255, 255, $80, 0, TeacherScript_0x1a9f50, -1
-	person_event SPRITE_GRAMPS, 20, 18, $6, $0, 255, 255, $b0, 0, GrampsScript_0x1a9f53, -1
-	person_event SPRITE_GRAMPS, 35, 12, $7, $0, 255, 255, $80, 0, GrampsScript_0x1a9f56, -1
-	person_event SPRITE_YOUNGSTER, 17, 22, $5, $2, 255, 255, $90, 0, YoungsterScript_0x1a9f59, -1
-	person_event SPRITE_YOUNGSTER, 37, 28, $7, $0, 255, 255, $a0, 0, YoungsterScript_0x1a9f5c, -1
-	person_event SPRITE_TEACHER, 18, 10, $2, $22, 255, 255, $a0, 0, TeacherScript_0x1a9f5f, -1
-	person_event SPRITE_LASS, 26, 11, $4, $20, 255, 255, $80, 0, LassScript_0x1a9f62, -1
+	person_event SPRITE_FISHER, 15, 30, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x1a9f43, -1
+	person_event SPRITE_POLIWAG, 15, 31, UP << 2 | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CeladonCityPoliwrath, -1
+	person_event SPRITE_TEACHER, 28, 24, UP << 2 | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, TeacherScript_0x1a9f50, -1
+	person_event SPRITE_GRAMPS, 20, 18, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrampsScript_0x1a9f53, -1
+	person_event SPRITE_GRAMPS, 35, 12, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GrampsScript_0x1a9f56, -1
+	person_event SPRITE_YOUNGSTER, 17, 22, UP << 2 | $1, $2, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x1a9f59, -1
+	person_event SPRITE_YOUNGSTER, 37, 28, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x1a9f5c, -1
+	person_event SPRITE_TEACHER, 18, 10, DOWN << 2 | $2, $22, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x1a9f5f, -1
+	person_event SPRITE_LASS, 26, 11, UP << 2 | $0, $20, -1, -1, (PAL_OW_RED << 4) | $80, 0, LassScript_0x1a9f62, -1
--- a/maps/CeladonDeptStore1F.asm
+++ b/maps/CeladonDeptStore1F.asm
@@ -84,11 +84,11 @@
 
 	; signposts
 	db 2
-	signpost 0, 14, $0, CeladonDeptStore1FDirectory
-	signpost 0, 3, $0, CeladonDeptStore1FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, CeladonDeptStore1FDirectory
+	signpost 0, 3, SIGNPOST_READ, CeladonDeptStore1FElevatorButton
 
 	; people-events
 	db 3
-	person_event SPRITE_RECEPTIONIST, 5, 14, $6, $0, 255, 255, $80, 0, ReceptionistScript_0x709e0, -1
-	person_event SPRITE_GENTLEMAN, 8, 15, $2, $11, 255, 255, $0, 0, GentlemanScript_0x709e3, -1
-	person_event SPRITE_TEACHER, 7, 9, $5, $1, 255, 255, $a0, 0, TeacherScript_0x709e6, -1
+	person_event SPRITE_RECEPTIONIST, 5, 14, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ReceptionistScript_0x709e0, -1
+	person_event SPRITE_GENTLEMAN, 8, 15, DOWN << 2 | $2, $11, -1, -1, $0, 0, GentlemanScript_0x709e3, -1
+	person_event SPRITE_TEACHER, 7, 9, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x709e6, -1
--- a/maps/CeladonDeptStore2F.asm
+++ b/maps/CeladonDeptStore2F.asm
@@ -77,12 +77,12 @@
 
 	; signposts
 	db 2
-	signpost 0, 14, $0, CeladonDeptStore2FDirectory
-	signpost 0, 3, $0, CeladonDeptStore2FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, CeladonDeptStore2FDirectory
+	signpost 0, 3, SIGNPOST_READ, CeladonDeptStore2FElevatorButton
 
 	; people-events
 	db 4
-	person_event SPRITE_CLERK, 9, 17, $7, $0, 255, 255, $90, 0, ClerkScript_0x70bad, -1
-	person_event SPRITE_CLERK, 9, 18, $7, $0, 255, 255, $90, 0, ClerkScript_0x70bb5, -1
-	person_event SPRITE_POKEFAN_M, 6, 9, $7, $0, 255, 255, $80, 0, PokefanMScript_0x70bbd, -1
-	person_event SPRITE_YOUNGSTER, 6, 10, $8, $0, 255, 255, $a0, 0, YoungsterScript_0x70bc0, -1
+	person_event SPRITE_CLERK, 9, 17, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClerkScript_0x70bad, -1
+	person_event SPRITE_CLERK, 9, 18, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClerkScript_0x70bb5, -1
+	person_event SPRITE_POKEFAN_M, 6, 9, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x70bbd, -1
+	person_event SPRITE_YOUNGSTER, 6, 10, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x70bc0, -1
--- a/maps/CeladonDeptStore3F.asm
+++ b/maps/CeladonDeptStore3F.asm
@@ -102,13 +102,13 @@
 
 	; signposts
 	db 2
-	signpost 0, 14, $0, CeladonDeptStore3FDirectory
-	signpost 0, 3, $0, CeladonDeptStore3FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, CeladonDeptStore3FDirectory
+	signpost 0, 3, SIGNPOST_READ, CeladonDeptStore3FElevatorButton
 
 	; people-events
 	db 5
-	person_event SPRITE_CLERK, 5, 11, $6, $0, 255, 255, $90, 0, ClerkScript_0x70d29, -1
-	person_event SPRITE_YOUNGSTER, 8, 10, $4, $10, 255, 255, $a0, 0, YoungsterScript_0x70d31, -1
-	person_event SPRITE_GAMEBOY_KID, 5, 13, $6, $0, 255, 255, $80, 0, GameboyKidScript_0x70d34, -1
-	person_event SPRITE_GAMEBOY_KID, 5, 14, $6, $0, 255, 255, $90, 0, GameboyKidScript_0x70d3f, -1
-	person_event SPRITE_SUPER_NERD, 8, 17, $2, $11, 255, 255, $80, 0, SuperNerdScript_0x70d4a, -1
+	person_event SPRITE_CLERK, 5, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClerkScript_0x70d29, -1
+	person_event SPRITE_YOUNGSTER, 8, 10, UP << 2 | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x70d31, -1
+	person_event SPRITE_GAMEBOY_KID, 5, 13, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GameboyKidScript_0x70d34, -1
+	person_event SPRITE_GAMEBOY_KID, 5, 14, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GameboyKidScript_0x70d3f, -1
+	person_event SPRITE_SUPER_NERD, 8, 17, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x70d4a, -1
--- a/maps/CeladonDeptStore4F.asm
+++ b/maps/CeladonDeptStore4F.asm
@@ -60,11 +60,11 @@
 
 	; signposts
 	db 2
-	signpost 0, 14, $0, CeladonDeptStore4FDirectory
-	signpost 0, 3, $0, CeladonDeptStore4FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, CeladonDeptStore4FDirectory
+	signpost 0, 3, SIGNPOST_READ, CeladonDeptStore4FElevatorButton
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 9, 17, $7, $0, 255, 255, $90, 0, ClerkScript_0x70f0d, -1
-	person_event SPRITE_SUPER_NERD, 10, 11, $5, $1, 255, 255, $a0, 0, SuperNerdScript_0x70f15, -1
-	person_event SPRITE_YOUNGSTER, 6, 12, $7, $0, 255, 255, $0, 0, YoungsterScript_0x70f18, -1
+	person_event SPRITE_CLERK, 9, 17, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClerkScript_0x70f0d, -1
+	person_event SPRITE_SUPER_NERD, 10, 11, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x70f15, -1
+	person_event SPRITE_YOUNGSTER, 6, 12, UP << 2 | $3, $0, -1, -1, $0, 0, YoungsterScript_0x70f18, -1
--- a/maps/CeladonDeptStore5F.asm
+++ b/maps/CeladonDeptStore5F.asm
@@ -79,13 +79,13 @@
 
 	; signposts
 	db 2
-	signpost 0, 14, $0, CeladonDeptStore5FDirectory
-	signpost 0, 3, $0, CeladonDeptStore5FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, CeladonDeptStore5FDirectory
+	signpost 0, 3, SIGNPOST_READ, CeladonDeptStore5FElevatorButton
 
 	; people-events
 	db 5
-	person_event SPRITE_CLERK, 9, 11, $7, $0, 255, 255, $90, 0, ClerkScript_0x71004, -1
-	person_event SPRITE_CLERK, 9, 12, $7, $0, 255, 255, $90, 0, ClerkScript_0x7100c, -1
-	person_event SPRITE_GENTLEMAN, 9, 17, $2, $11, 255, 255, $80, 0, GentlemanScript_0x71014, -1
-	person_event SPRITE_SAILOR, 8, 7, $2, $11, 255, 255, $90, 0, SailorScript_0x71017, -1
-	person_event SPRITE_TEACHER, 11, 5, $9, $0, 255, 255, $a0, 0, TeacherScript_0x7101a, -1
+	person_event SPRITE_CLERK, 9, 11, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClerkScript_0x71004, -1
+	person_event SPRITE_CLERK, 9, 12, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ClerkScript_0x7100c, -1
+	person_event SPRITE_GENTLEMAN, 9, 17, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, GentlemanScript_0x71014, -1
+	person_event SPRITE_SAILOR, 8, 7, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SailorScript_0x71017, -1
+	person_event SPRITE_TEACHER, 11, 5, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x7101a, -1
--- a/maps/CeladonDeptStore6F.asm
+++ b/maps/CeladonDeptStore6F.asm
@@ -159,14 +159,14 @@
 
 	; signposts
 	db 6
-	signpost 0, 14, $0, CeladonDeptStore6FDirectory
-	signpost 0, 3, $0, CeladonDeptStore1FElevatorButton
-	signpost 1, 8, $1, CeladonVendingMachine
-	signpost 1, 9, $1, CeladonVendingMachine
-	signpost 1, 10, $1, CeladonVendingMachine
-	signpost 1, 11, $1, CeladonVendingMachine
+	signpost 0, 14, SIGNPOST_READ, CeladonDeptStore6FDirectory
+	signpost 0, 3, SIGNPOST_READ, CeladonDeptStore1FElevatorButton
+	signpost 1, 8, SIGNPOST_UP, CeladonVendingMachine
+	signpost 1, 9, SIGNPOST_UP, CeladonVendingMachine
+	signpost 1, 10, SIGNPOST_UP, CeladonVendingMachine
+	signpost 1, 11, SIGNPOST_UP, CeladonVendingMachine
 
 	; people-events
 	db 2
-	person_event SPRITE_SUPER_NERD, 6, 13, $7, $0, 255, 255, $0, 0, SuperNerdScript_0x7117a, -1
-	person_event SPRITE_YOUNGSTER, 9, 16, $2, $12, 255, 255, $80, 0, YoungsterScript_0x7117d, -1
+	person_event SPRITE_SUPER_NERD, 6, 13, UP << 2 | $3, $0, -1, -1, $0, 0, SuperNerdScript_0x7117a, -1
+	person_event SPRITE_YOUNGSTER, 9, 16, DOWN << 2 | $2, $12, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x7117d, -1
--- a/maps/CeladonDeptStoreElevator.asm
+++ b/maps/CeladonDeptStoreElevator.asm
@@ -43,7 +43,7 @@
 
 	; signposts
 	db 1
-	signpost 0, 3, $0, MapCeladonDeptStoreElevatorSignpost0Script
+	signpost 0, 3, SIGNPOST_READ, MapCeladonDeptStoreElevatorSignpost0Script
 
 	; people-events
 	db 0
--- a/maps/CeladonGameCorner.asm
+++ b/maps/CeladonGameCorner.asm
@@ -284,53 +284,53 @@
 
 	; signposts
 	db 38
-	signpost 6, 1, $0, MapCeladonGameCornerSignpost11Script
-	signpost 7, 1, $0, MapCeladonGameCornerSignpost11Script
-	signpost 8, 1, $0, MapCeladonGameCornerSignpost11Script
-	signpost 9, 1, $0, MapCeladonGameCornerSignpost11Script
-	signpost 10, 1, $0, MapCeladonGameCornerSignpost11Script
-	signpost 11, 1, $4, MapCeladonGameCornerSignpost11Script
-	signpost 6, 6, $0, MapCeladonGameCornerSignpost11Script
-	signpost 7, 6, $0, MapCeladonGameCornerSignpost11Script
-	signpost 8, 6, $0, MapCeladonGameCornerSignpost11Script
-	signpost 9, 6, $0, MapCeladonGameCornerSignpost9Script
-	signpost 10, 6, $0, MapCeladonGameCornerSignpost11Script
-	signpost 11, 6, $3, MapCeladonGameCornerSignpost11Script
-	signpost 6, 7, $0, MapCeladonGameCornerSignpost35Script
-	signpost 7, 7, $0, MapCeladonGameCornerSignpost35Script
-	signpost 8, 7, $0, MapCeladonGameCornerSignpost35Script
-	signpost 9, 7, $0, MapCeladonGameCornerSignpost35Script
-	signpost 10, 7, $0, MapCeladonGameCornerSignpost16Script
-	signpost 11, 7, $4, MapCeladonGameCornerSignpost35Script
-	signpost 6, 12, $0, MapCeladonGameCornerSignpost35Script
-	signpost 7, 12, $0, MapCeladonGameCornerSignpost35Script
-	signpost 8, 12, $0, MapCeladonGameCornerSignpost35Script
-	signpost 9, 12, $0, MapCeladonGameCornerSignpost35Script
-	signpost 10, 12, $0, MapCeladonGameCornerSignpost35Script
-	signpost 11, 12, $3, MapCeladonGameCornerSignpost35Script
-	signpost 6, 13, $0, MapCeladonGameCornerSignpost35Script
-	signpost 7, 13, $0, MapCeladonGameCornerSignpost35Script
-	signpost 8, 13, $0, MapCeladonGameCornerSignpost35Script
-	signpost 9, 13, $0, MapCeladonGameCornerSignpost35Script
-	signpost 10, 13, $0, MapCeladonGameCornerSignpost35Script
-	signpost 11, 13, $4, MapCeladonGameCornerSignpost35Script
-	signpost 6, 18, $0, MapCeladonGameCornerSignpost35Script
-	signpost 7, 18, $0, MapCeladonGameCornerSignpost35Script
-	signpost 8, 18, $0, MapCeladonGameCornerSignpost32Script
-	signpost 9, 18, $0, MapCeladonGameCornerSignpost35Script
-	signpost 10, 18, $0, MapCeladonGameCornerSignpost35Script
-	signpost 11, 18, $3, MapCeladonGameCornerSignpost35Script
-	signpost 0, 15, $0, MapCeladonGameCornerSignpost36Script
-	signpost 0, 9, $0, MapCeladonGameCornerSignpost37Script
+	signpost 6, 1, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 7, 1, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 8, 1, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 9, 1, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 10, 1, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 11, 1, SIGNPOST_LEFT, MapCeladonGameCornerSignpost11Script
+	signpost 6, 6, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 7, 6, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 8, 6, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 9, 6, SIGNPOST_READ, MapCeladonGameCornerSignpost9Script
+	signpost 10, 6, SIGNPOST_READ, MapCeladonGameCornerSignpost11Script
+	signpost 11, 6, SIGNPOST_RIGHT, MapCeladonGameCornerSignpost11Script
+	signpost 6, 7, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 7, 7, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 8, 7, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 9, 7, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 10, 7, SIGNPOST_READ, MapCeladonGameCornerSignpost16Script
+	signpost 11, 7, SIGNPOST_LEFT, MapCeladonGameCornerSignpost35Script
+	signpost 6, 12, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 7, 12, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 8, 12, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 9, 12, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 10, 12, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 11, 12, SIGNPOST_RIGHT, MapCeladonGameCornerSignpost35Script
+	signpost 6, 13, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 7, 13, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 8, 13, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 9, 13, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 10, 13, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 11, 13, SIGNPOST_LEFT, MapCeladonGameCornerSignpost35Script
+	signpost 6, 18, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 7, 18, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 8, 18, SIGNPOST_READ, MapCeladonGameCornerSignpost32Script
+	signpost 9, 18, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 10, 18, SIGNPOST_READ, MapCeladonGameCornerSignpost35Script
+	signpost 11, 18, SIGNPOST_RIGHT, MapCeladonGameCornerSignpost35Script
+	signpost 0, 15, SIGNPOST_READ, MapCeladonGameCornerSignpost36Script
+	signpost 0, 9, SIGNPOST_READ, MapCeladonGameCornerSignpost37Script
 
 	; people-events
 	db 9
-	person_event SPRITE_CLERK, 6, 9, $6, $0, 255, 255, $a0, 0, ClerkScript_0x7211d, -1
-	person_event SPRITE_RECEPTIONIST, 6, 7, $6, $0, 255, 255, $a0, 0, ReceptionistScript_0x72120, -1
-	person_event SPRITE_POKEFAN_M, 14, 18, $8, $0, 255, 255, $80, 0, PokefanMScript_0x72123, -1
-	person_event SPRITE_TEACHER, 11, 21, $9, $0, 255, 255, $90, 0, TeacherScript_0x7212e, -1
-	person_event SPRITE_FISHING_GURU, 11, 15, $9, $0, 255, 255, $a0, 0, FishingGuruScript_0x72139, -1
-	person_event SPRITE_FISHER, 14, 12, $8, $0, 255, 2, $80, 0, FisherScript_0x72144, -1
-	person_event SPRITE_FISHER, 14, 12, $8, $0, 255, 4, $80, 0, FisherScript_0x72144, -1
-	person_event SPRITE_GYM_GUY, 7, 15, $6, $0, 255, 255, $80, 0, CeladonGymGuyScript, -1
-	person_event SPRITE_GRAMPS, 12, 6, $8, $0, 255, 255, $a0, 0, GrampsScript_0x72190, -1
+	person_event SPRITE_CLERK, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ClerkScript_0x7211d, -1
+	person_event SPRITE_RECEPTIONIST, 6, 7, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ReceptionistScript_0x72120, -1
+	person_event SPRITE_POKEFAN_M, 14, 18, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x72123, -1
+	person_event SPRITE_TEACHER, 11, 21, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x7212e, -1
+	person_event SPRITE_FISHING_GURU, 11, 15, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FishingGuruScript_0x72139, -1
+	person_event SPRITE_FISHER, 14, 12, LEFT << 2 | $0, $0, -1, 2, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x72144, -1
+	person_event SPRITE_FISHER, 14, 12, LEFT << 2 | $0, $0, -1, 4, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x72144, -1
+	person_event SPRITE_GYM_GUY, 7, 15, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CeladonGymGuyScript, -1
+	person_event SPRITE_GRAMPS, 12, 6, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GrampsScript_0x72190, -1
--- a/maps/CeladonGameCornerPrizeRoom.asm
+++ b/maps/CeladonGameCornerPrizeRoom.asm
@@ -279,10 +279,10 @@
 
 	; signposts
 	db 2
-	signpost 1, 2, $0, MapCeladonGameCornerPrizeRoomSignpost0Script
-	signpost 1, 4, $0, MapCeladonGameCornerPrizeRoomSignpost1Script
+	signpost 1, 2, SIGNPOST_READ, MapCeladonGameCornerPrizeRoomSignpost0Script
+	signpost 1, 4, SIGNPOST_READ, MapCeladonGameCornerPrizeRoomSignpost1Script
 
 	; people-events
 	db 2
-	person_event SPRITE_GENTLEMAN, 6, 4, $6, $0, 255, 255, $80, 0, GentlemanScript_0x726e9, -1
-	person_event SPRITE_PHARMACIST, 8, 8, $4, $10, 255, 255, $a0, 0, PharmacistScript_0x726ec, -1
+	person_event SPRITE_GENTLEMAN, 6, 4, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GentlemanScript_0x726e9, -1
+	person_event SPRITE_PHARMACIST, 8, 8, UP << 2 | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, PharmacistScript_0x726ec, -1
--- a/maps/CeladonGym.asm
+++ b/maps/CeladonGym.asm
@@ -353,14 +353,14 @@
 
 	; signposts
 	db 2
-	signpost 15, 3, $0, CeladonGymStatue
-	signpost 15, 6, $0, CeladonGymStatue
+	signpost 15, 3, SIGNPOST_READ, CeladonGymStatue
+	signpost 15, 6, SIGNPOST_READ, CeladonGymStatue
 
 	; people-events
 	db 6
-	person_event SPRITE_ERIKA, 7, 9, $6, $0, 255, 255, $a0, 0, ErikaScript_0x72a6a, -1
-	person_event SPRITE_LASS, 12, 11, $8, $0, 255, 255, $92, 2, TrainerLassMichelle, -1
-	person_event SPRITE_LASS, 12, 6, $9, $0, 255, 255, $a2, 2, TrainerPicnickerTanya, -1
-	person_event SPRITE_BUENA, 9, 7, $9, $0, 255, 255, $92, 2, TrainerBeautyJulia, -1
-	person_event SPRITE_TWIN, 14, 8, $6, $0, 255, 255, $82, 1, TrainerTwinsJoandzoe1, -1
-	person_event SPRITE_TWIN, 14, 9, $6, $0, 255, 255, $82, 1, TrainerTwinsJoandzoe2, -1
+	person_event SPRITE_ERIKA, 7, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ErikaScript_0x72a6a, -1
+	person_event SPRITE_LASS, 12, 11, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerLassMichelle, -1
+	person_event SPRITE_LASS, 12, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerPicnickerTanya, -1
+	person_event SPRITE_BUENA, 9, 7, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerBeautyJulia, -1
+	person_event SPRITE_TWIN, 14, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsJoandzoe1, -1
+	person_event SPRITE_TWIN, 14, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsJoandzoe2, -1
--- a/maps/CeladonMansion1F.asm
+++ b/maps/CeladonMansion1F.asm
@@ -85,13 +85,13 @@
 
 	; signposts
 	db 3
-	signpost 8, 5, $1, CeladonMansionManagersSuiteSign
-	signpost 3, 0, $0, CeladonMansion1fBookshelf
-	signpost 3, 2, $0, CeladonMansion1fBookshelf
+	signpost 8, 5, SIGNPOST_UP, CeladonMansionManagersSuiteSign
+	signpost 3, 0, SIGNPOST_READ, CeladonMansion1fBookshelf
+	signpost 3, 2, SIGNPOST_READ, CeladonMansion1fBookshelf
 
 	; people-events
 	db 4
-	person_event SPRITE_GRANNY, 9, 5, $3, $0, 255, 255, $0, 0, CeladonMansionManager, -1
-	person_event SPRITE_GROWLITHE, 10, 6, $16, $0, 255, 255, $0, 0, CeladonMansion1FMeowth, -1
-	person_event SPRITE_CLEFAIRY, 8, 7, $16, $0, 255, 255, $0, 0, CeladonMansion1FClefairy, -1
-	person_event SPRITE_GROWLITHE, 8, 8, $16, $2, 255, 255, $90, 0, CeladonMansion1FNidoranF, -1
+	person_event SPRITE_GRANNY, 9, 5, DOWN << 2 | $3, $0, -1, -1, $0, 0, CeladonMansionManager, -1
+	person_event SPRITE_GROWLITHE, 10, 6, UP << 2 | $12, $0, -1, -1, $0, 0, CeladonMansion1FMeowth, -1
+	person_event SPRITE_CLEFAIRY, 8, 7, UP << 2 | $12, $0, -1, -1, $0, 0, CeladonMansion1FClefairy, -1
+	person_event SPRITE_GROWLITHE, 8, 8, UP << 2 | $12, $2, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CeladonMansion1FNidoranF, -1
--- a/maps/CeladonMansion2F.asm
+++ b/maps/CeladonMansion2F.asm
@@ -65,9 +65,9 @@
 
 	; signposts
 	db 3
-	signpost 3, 0, $0, CeladonMansion2FComputer
-	signpost 8, 5, $1, CeladonMansion2FSign
-	signpost 3, 2, $0, CeladonMansion2FBookshelf
+	signpost 3, 0, SIGNPOST_READ, CeladonMansion2FComputer
+	signpost 8, 5, SIGNPOST_UP, CeladonMansion2FSign
+	signpost 3, 2, SIGNPOST_READ, CeladonMansion2FBookshelf
 
 	; people-events
 	db 0
--- a/maps/CeladonMansion3F.asm
+++ b/maps/CeladonMansion3F.asm
@@ -199,14 +199,14 @@
 
 	; signposts
 	db 4
-	signpost 8, 5, $1, MapCeladonMansion3FSignpost0Script
-	signpost 3, 4, $1, MapCeladonMansion3FSignpost1Script
-	signpost 6, 1, $1, MapCeladonMansion3FSignpost2Script
-	signpost 3, 1, $1, MapCeladonMansion3FSignpost3Script
+	signpost 8, 5, SIGNPOST_UP, MapCeladonMansion3FSignpost0Script
+	signpost 3, 4, SIGNPOST_UP, MapCeladonMansion3FSignpost1Script
+	signpost 6, 1, SIGNPOST_UP, MapCeladonMansion3FSignpost2Script
+	signpost 3, 1, SIGNPOST_UP, MapCeladonMansion3FSignpost3Script
 
 	; people-events
 	db 4
-	person_event SPRITE_COOLTRAINER_M, 10, 7, $3, $0, 255, 255, $80, 0, CooltrainerMScript_0x71670, -1
-	person_event SPRITE_GYM_GUY, 8, 7, $7, $0, 255, 255, $90, 0, GymGuyScript_0x71696, -1
-	person_event SPRITE_SUPER_NERD, 11, 4, $7, $0, 255, 255, $90, 0, SuperNerdScript_0x716bc, -1
-	person_event SPRITE_FISHER, 8, 4, $7, $2, 255, 255, $80, 0, FisherScript_0x716bf, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 7, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x71670, -1
+	person_event SPRITE_GYM_GUY, 8, 7, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GymGuyScript_0x71696, -1
+	person_event SPRITE_SUPER_NERD, 11, 4, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x716bc, -1
+	person_event SPRITE_FISHER, 8, 4, UP << 2 | $3, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x716bf, -1
--- a/maps/CeladonMansionRoof.asm
+++ b/maps/CeladonMansionRoof.asm
@@ -45,8 +45,8 @@
 
 	; signposts
 	db 1
-	signpost 1, 6, $4, MapCeladonMansionRoofSignpost0Script
+	signpost 1, 6, SIGNPOST_LEFT, MapCeladonMansionRoofSignpost0Script
 
 	; people-events
 	db 1
-	person_event SPRITE_FISHER, 9, 11, $4, $10, 255, 255, $90, 0, FisherScript_0x71a39, -1
+	person_event SPRITE_FISHER, 9, 11, UP << 2 | $0, $10, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FisherScript_0x71a39, -1
--- a/maps/CeladonMansionRoofHouse.asm
+++ b/maps/CeladonMansionRoofHouse.asm
@@ -130,4 +130,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_PHARMACIST, 6, 7, $6, $20, 255, 255, $a0, 0, PharmacistScript_0x71afd, -1
+	person_event SPRITE_PHARMACIST, 6, 7, UP << 2 | $2, $20, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, PharmacistScript_0x71afd, -1
--- a/maps/CeladonPokeCenter1F.asm
+++ b/maps/CeladonPokeCenter1F.asm
@@ -156,8 +156,8 @@
 
 	; people-events
 	db 5
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x71e22, -1
-	person_event SPRITE_GENTLEMAN, 9, 5, $5, $1, 255, 255, $0, 0, GentlemanScript_0x71e25, -1
-	person_event SPRITE_PHARMACIST, 7, 4, $6, $0, 255, 255, $80, 0, PharmacistScript_0x71e2b, -1
-	person_event SPRITE_COOLTRAINER_F, 10, 12, $5, $1, 255, 255, $a0, 0, CooltrainerFScript_0x71e28, -1
-	person_event SPRITE_SUPER_NERD, 7, 8, $6, $0, 255, 255, $90, 0, SuperNerdScript_0x71e2e, EVENT_SET_WHEN_FOUGHT_HO_OH
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x71e22, -1
+	person_event SPRITE_GENTLEMAN, 9, 5, UP << 2 | $1, $1, -1, -1, $0, 0, GentlemanScript_0x71e25, -1
+	person_event SPRITE_PHARMACIST, 7, 4, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PharmacistScript_0x71e2b, -1
+	person_event SPRITE_COOLTRAINER_F, 10, 12, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x71e28, -1
+	person_event SPRITE_SUPER_NERD, 7, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x71e2e, EVENT_SET_WHEN_FOUGHT_HO_OH
--- a/maps/CeruleanCity.asm
+++ b/maps/CeruleanCity.asm
@@ -288,21 +288,21 @@
 
 	; signposts
 	db 9
-	signpost 23, 23, $0, CeruleanCitySign
-	signpost 25, 27, $0, CeruleanGymSign
-	signpost 29, 11, $0, CeruleanBikeShopSign
-	signpost 17, 25, $0, CeruleanPoliceSign
-	signpost 7, 23, $0, CeruleanCapeSign
-	signpost 29, 14, $0, CeruleanLockedDoor
-	signpost 21, 20, $0, CeruleanCityPokeCenterSign
-	signpost 29, 26, $0, CeruleanCityMartSign
-	signpost 12, 2, $7, MapCeruleanCitySignpostItem8
+	signpost 23, 23, SIGNPOST_READ, CeruleanCitySign
+	signpost 25, 27, SIGNPOST_READ, CeruleanGymSign
+	signpost 29, 11, SIGNPOST_READ, CeruleanBikeShopSign
+	signpost 17, 25, SIGNPOST_READ, CeruleanPoliceSign
+	signpost 7, 23, SIGNPOST_READ, CeruleanCapeSign
+	signpost 29, 14, SIGNPOST_READ, CeruleanLockedDoor
+	signpost 21, 20, SIGNPOST_READ, CeruleanCityPokeCenterSign
+	signpost 29, 26, SIGNPOST_READ, CeruleanCityMartSign
+	signpost 12, 2, SIGNPOST_ITEMIFSET, MapCeruleanCitySignpostItem8
 
 	; people-events
 	db 6
-	person_event SPRITE_COOLTRAINER_M, 27, 19, $2, $22, 255, 255, $90, 0, CooltrainerMScript_0x184009, -1
-	person_event SPRITE_SUPER_NERD, 19, 27, $2, $11, 255, 255, $90, 0, SuperNerdScript_0x18401d, -1
-	person_event SPRITE_SLOWPOKE, 28, 24, $1, $0, 255, 255, $0, 0, CeruleanCitySlowbro, -1
-	person_event SPRITE_COOLTRAINER_F, 28, 25, $8, $0, 255, 255, $a0, 0, CooltrainerFScript_0x18402a, -1
-	person_event SPRITE_FISHER, 30, 34, $5, $1, 255, 255, $80, 0, FisherScript_0x18404a, -1
-	person_event SPRITE_YOUNGSTER, 16, 10, $3, $1, 255, 255, $80, 0, YoungsterScript_0x184064, -1
+	person_event SPRITE_COOLTRAINER_M, 27, 19, DOWN << 2 | $2, $22, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CooltrainerMScript_0x184009, -1
+	person_event SPRITE_SUPER_NERD, 19, 27, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x18401d, -1
+	person_event SPRITE_SLOWPOKE, 28, 24, DOWN << 2 | $1, $0, -1, -1, $0, 0, CeruleanCitySlowbro, -1
+	person_event SPRITE_COOLTRAINER_F, 28, 25, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x18402a, -1
+	person_event SPRITE_FISHER, 30, 34, UP << 2 | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x18404a, -1
+	person_event SPRITE_YOUNGSTER, 16, 10, DOWN << 2 | $3, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x184064, -1
--- a/maps/CeruleanGym.asm
+++ b/maps/CeruleanGym.asm
@@ -420,15 +420,15 @@
 
 	; signposts
 	db 3
-	signpost 8, 3, $7, MapCeruleanGymSignpostItem0
-	signpost 13, 2, $0, CeruleanGymStatue1
-	signpost 13, 6, $0, CeruleanGymStatue2
+	signpost 8, 3, SIGNPOST_ITEMIFSET, MapCeruleanGymSignpostItem0
+	signpost 13, 2, SIGNPOST_READ, CeruleanGymStatue1
+	signpost 13, 6, SIGNPOST_READ, CeruleanGymStatue2
 
 	; people-events
 	db 6
-	person_event SPRITE_ROCKET, 14, 8, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_76D
-	person_event SPRITE_MISTY, 7, 9, $6, $0, 255, 255, $80, 0, MistyScript_0x188432, EVENT_TRAINERS_IN_CERULEAN_GYM
-	person_event SPRITE_SWIMMER_GIRL, 10, 8, $9, $0, 255, 255, $a2, 3, TrainerSwimmerfDiana, EVENT_TRAINERS_IN_CERULEAN_GYM
-	person_event SPRITE_SWIMMER_GIRL, 13, 5, $9, $0, 255, 255, $a2, 1, TrainerSwimmerfBriana, EVENT_TRAINERS_IN_CERULEAN_GYM
-	person_event SPRITE_SWIMMER_GUY, 13, 12, $8, $0, 255, 255, $82, 3, TrainerSwimmermParker, EVENT_TRAINERS_IN_CERULEAN_GYM
-	person_event SPRITE_GYM_GUY, 17, 11, $6, $0, 255, 255, $90, 0, CeruleanGymGuyScript, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_ROCKET, 14, 8, UP << 2 | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_76D
+	person_event SPRITE_MISTY, 7, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, MistyScript_0x188432, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_SWIMMER_GIRL, 10, 8, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfDiana, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_SWIMMER_GIRL, 13, 5, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerSwimmerfBriana, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_SWIMMER_GUY, 13, 12, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermParker, EVENT_TRAINERS_IN_CERULEAN_GYM
+	person_event SPRITE_GYM_GUY, 17, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CeruleanGymGuyScript, EVENT_TRAINERS_IN_CERULEAN_GYM
--- a/maps/CeruleanGymBadgeSpeechHouse.asm
+++ b/maps/CeruleanGymBadgeSpeechHouse.asm
@@ -30,4 +30,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_POKEFAN_M, 7, 6, $9, $0, 255, 255, $0, 0, PokefanMScript_0x188002, -1
+	person_event SPRITE_POKEFAN_M, 7, 6, LEFT << 2 | $1, $0, -1, -1, $0, 0, PokefanMScript_0x188002, -1
--- a/maps/CeruleanMart.asm
+++ b/maps/CeruleanMart.asm
@@ -57,6 +57,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x188ac0, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 5, $6, $0, 255, 255, $a0, 0, CooltrainerMScript_0x188ac7, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 11, $5, $2, 255, 255, $80, 0, CooltrainerFScript_0x188aca, -1
+	person_event SPRITE_CLERK, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x188ac0, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 5, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerMScript_0x188ac7, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 11, UP << 2 | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x188aca, -1
--- a/maps/CeruleanPokeCenter1F.asm
+++ b/maps/CeruleanPokeCenter1F.asm
@@ -75,6 +75,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x18820f, -1
-	person_event SPRITE_SUPER_NERD, 8, 12, $5, $1, 255, 255, $0, 0, SuperNerdScript_0x188212, -1
-	person_event SPRITE_GYM_GUY, 9, 5, $2, $11, 255, 255, $a0, 0, GymGuyScript_0x18821e, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x18820f, -1
+	person_event SPRITE_SUPER_NERD, 8, 12, UP << 2 | $1, $1, -1, -1, $0, 0, SuperNerdScript_0x188212, -1
+	person_event SPRITE_GYM_GUY, 9, 5, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GymGuyScript_0x18821e, -1
--- a/maps/CeruleanPoliceStation.asm
+++ b/maps/CeruleanPoliceStation.asm
@@ -55,6 +55,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_FISHING_GURU, 5, 9, $7, $0, 255, 255, $a0, 0, FishingGuruScript_0x18804a, -1
-	person_event SPRITE_POKEFAN_F, 8, 9, $8, $0, 255, 255, $90, 0, PokefanFScript_0x18804d, -1
-	person_event SPRITE_DIGLETT, 9, 7, $16, $0, 255, 255, $b0, 0, DiglettScript_0x188050, -1
+	person_event SPRITE_FISHING_GURU, 5, 9, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FishingGuruScript_0x18804a, -1
+	person_event SPRITE_POKEFAN_F, 8, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, PokefanFScript_0x18804d, -1
+	person_event SPRITE_DIGLETT, 9, 7, UP << 2 | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, DiglettScript_0x188050, -1
--- a/maps/CeruleanTradeSpeechHouse.asm
+++ b/maps/CeruleanTradeSpeechHouse.asm
@@ -64,7 +64,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_GRANNY, 8, 6, $9, $0, 255, 255, $90, 0, GrannyScript_0x188133, -1
-	person_event SPRITE_GRAMPS, 6, 5, $2, $0, 255, 255, $a0, 0, GrampsScript_0x188136, -1
-	person_event SPRITE_RHYDON, 6, 9, $16, $0, 255, 255, $b0, 0, RhydonScript_0x188139, -1
-	person_event SPRITE_ZUBAT, 10, 9, $16, $0, 255, 255, $0, 0, ZubatScript_0x188143, -1
+	person_event SPRITE_GRANNY, 8, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrannyScript_0x188133, -1
+	person_event SPRITE_GRAMPS, 6, 5, DOWN << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GrampsScript_0x188136, -1
+	person_event SPRITE_RHYDON, 6, 9, UP << 2 | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, RhydonScript_0x188139, -1
+	person_event SPRITE_ZUBAT, 10, 9, UP << 2 | $12, $0, -1, -1, $0, 0, ZubatScript_0x188143, -1
--- a/maps/CharcoalKiln.asm
+++ b/maps/CharcoalKiln.asm
@@ -157,12 +157,12 @@
 
 	; signposts
 	db 3
-	signpost 1, 0, $0, CharcoalKilnBookshelf
-	signpost 1, 1, $0, CharcoalKilnBookshelf
-	signpost 1, 7, $0, CharcoalKilnRadio
+	signpost 1, 0, SIGNPOST_READ, CharcoalKilnBookshelf
+	signpost 1, 1, SIGNPOST_READ, CharcoalKilnBookshelf
+	signpost 1, 7, SIGNPOST_READ, CharcoalKilnRadio
 
 	; people-events
 	db 3
-	person_event SPRITE_BLACK_BELT, 7, 6, $3, $0, 255, 255, $0, 0, CharcoalKilnBoss, EVENT_6F7
-	person_event SPRITE_YOUNGSTER, 7, 9, $2, $11, 255, 255, $0, 0, CharcoalKilnApprentice, EVENT_6F6
-	person_event SPRITE_MOLTRES, 10, 9, $16, $22, 255, 255, $b0, 0, CharcoalKilnFarfetchd, EVENT_6F5
+	person_event SPRITE_BLACK_BELT, 7, 6, DOWN << 2 | $3, $0, -1, -1, $0, 0, CharcoalKilnBoss, EVENT_6F7
+	person_event SPRITE_YOUNGSTER, 7, 9, DOWN << 2 | $2, $11, -1, -1, $0, 0, CharcoalKilnApprentice, EVENT_6F6
+	person_event SPRITE_MOLTRES, 10, 9, UP << 2 | $12, $22, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, CharcoalKilnFarfetchd, EVENT_6F5
--- a/maps/CherrygroveCity.asm
+++ b/maps/CherrygroveCity.asm
@@ -563,15 +563,15 @@
 
 	; signposts
 	db 4
-	signpost 8, 30, $0, CherrygroveCitySign
-	signpost 9, 23, $0, GuideGentsHouseSign
-	signpost 3, 24, $0, CherrygroveCityMartSign
-	signpost 3, 30, $0, CherrygroveCityPokeCenterSign
+	signpost 8, 30, SIGNPOST_READ, CherrygroveCitySign
+	signpost 9, 23, SIGNPOST_READ, GuideGentsHouseSign
+	signpost 3, 24, SIGNPOST_READ, CherrygroveCityMartSign
+	signpost 3, 30, SIGNPOST_READ, CherrygroveCityPokeCenterSign
 
 	; people-events
 	db 5
-	person_event SPRITE_GRAMPS, 10, 36, $6, $0, 255, 255, $0, 0, CherrygroveCityGuideGent, EVENT_6FE
-	person_event SPRITE_SILVER, 10, 43, $3, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6BE
-	person_event SPRITE_TEACHER, 16, 31, $5, $1, 255, 255, $90, 0, TeacherScript_0x19c146, -1
-	person_event SPRITE_YOUNGSTER, 11, 27, $5, $1, 255, 255, $80, 0, YoungsterScript_0x19c15a, -1
-	person_event SPRITE_FISHER, 16, 11, $9, $0, 255, 255, $a0, 0, MysticWaterGuy, -1
+	person_event SPRITE_GRAMPS, 10, 36, UP << 2 | $2, $0, -1, -1, $0, 0, CherrygroveCityGuideGent, EVENT_6FE
+	person_event SPRITE_SILVER, 10, 43, DOWN << 2 | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6BE
+	person_event SPRITE_TEACHER, 16, 31, UP << 2 | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x19c146, -1
+	person_event SPRITE_YOUNGSTER, 11, 27, UP << 2 | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x19c15a, -1
+	person_event SPRITE_FISHER, 16, 11, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, MysticWaterGuy, -1
--- a/maps/CherrygroveEvolutionSpeechHouse.asm
+++ b/maps/CherrygroveEvolutionSpeechHouse.asm
@@ -51,10 +51,10 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, CherrygroveEvolutionSpeechHouseBookshelf
-	signpost 1, 1, $0, CherrygroveEvolutionSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, CherrygroveEvolutionSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, CherrygroveEvolutionSpeechHouseBookshelf
 
 	; people-events
 	db 2
-	person_event SPRITE_LASS, 9, 7, $8, $0, 255, 255, $a0, 0, LassScript_0x196cb9, -1
-	person_event SPRITE_YOUNGSTER, 9, 6, $9, $0, 255, 255, $80, 0, YoungsterScript_0x196cb2, -1
+	person_event SPRITE_LASS, 9, 7, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x196cb9, -1
+	person_event SPRITE_YOUNGSTER, 9, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x196cb2, -1
--- a/maps/CherrygroveGymSpeechHouse.asm
+++ b/maps/CherrygroveGymSpeechHouse.asm
@@ -54,10 +54,10 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, CherrygroveGymSpeechHouseBookshelf
-	signpost 1, 1, $0, CherrygroveGymSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, CherrygroveGymSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, CherrygroveGymSpeechHouseBookshelf
 
 	; people-events
 	db 2
-	person_event SPRITE_POKEFAN_M, 7, 6, $6, $0, 255, 255, $0, 0, PokefanMScript_0x196ae1, -1
-	person_event SPRITE_BUG_CATCHER, 9, 9, $5, $1, 255, 255, $80, 0, BugCatcherScript_0x196ae4, -1
+	person_event SPRITE_POKEFAN_M, 7, 6, UP << 2 | $2, $0, -1, -1, $0, 0, PokefanMScript_0x196ae1, -1
+	person_event SPRITE_BUG_CATCHER, 9, 9, UP << 2 | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, BugCatcherScript_0x196ae4, -1
--- a/maps/CherrygroveMart.asm
+++ b/maps/CherrygroveMart.asm
@@ -83,6 +83,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x19680a, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 11, $5, $2, 255, 255, $0, 0, CooltrainerMScript_0x19681d, -1
-	person_event SPRITE_YOUNGSTER, 9, 6, $6, $0, 255, 255, $80, 0, YoungsterScript_0x196831, -1
+	person_event SPRITE_CLERK, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x19680a, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 11, UP << 2 | $1, $2, -1, -1, $0, 0, CooltrainerMScript_0x19681d, -1
+	person_event SPRITE_YOUNGSTER, 9, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x196831, -1
--- a/maps/CherrygrovePokeCenter1F.asm
+++ b/maps/CherrygrovePokeCenter1F.asm
@@ -80,7 +80,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x19696d, -1
-	person_event SPRITE_FISHER, 7, 6, $7, $0, 255, 255, $80, 0, FisherScript_0x196970, -1
-	person_event SPRITE_GENTLEMAN, 10, 12, $7, $0, 255, 255, $0, 0, GentlemanScript_0x196973, -1
-	person_event SPRITE_TEACHER, 10, 5, $9, $0, 255, 255, $a0, 0, TeacherScript_0x196976, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x19696d, -1
+	person_event SPRITE_FISHER, 7, 6, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x196970, -1
+	person_event SPRITE_GENTLEMAN, 10, 12, UP << 2 | $3, $0, -1, -1, $0, 0, GentlemanScript_0x196973, -1
+	person_event SPRITE_TEACHER, 10, 5, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x196976, -1
--- a/maps/CianwoodCity.asm
+++ b/maps/CianwoodCity.asm
@@ -392,26 +392,26 @@
 
 	; signposts
 	db 8
-	signpost 34, 20, $0, CianwoodCitySign
-	signpost 45, 7, $0, CianwoodGymSign
-	signpost 43, 24, $0, CianwoodPokeCenterSign
-	signpost 47, 19, $0, CianwoodPharmacySign
-	signpost 32, 8, $0, CianwoodPhotoStudioSign
-	signpost 24, 8, $0, CianwoodPokeSeerSign
-	signpost 19, 4, $7, MapCianwoodCitySignpostItem6
-	signpost 29, 5, $7, MapCianwoodCitySignpostItem7
+	signpost 34, 20, SIGNPOST_READ, CianwoodCitySign
+	signpost 45, 7, SIGNPOST_READ, CianwoodGymSign
+	signpost 43, 24, SIGNPOST_READ, CianwoodPokeCenterSign
+	signpost 47, 19, SIGNPOST_READ, CianwoodPharmacySign
+	signpost 32, 8, SIGNPOST_READ, CianwoodPhotoStudioSign
+	signpost 24, 8, SIGNPOST_READ, CianwoodPokeSeerSign
+	signpost 19, 4, SIGNPOST_ITEMIFSET, MapCianwoodCitySignpostItem6
+	signpost 29, 5, SIGNPOST_ITEMIFSET, MapCianwoodCitySignpostItem7
 
 	; people-events
 	db 12
-	person_event SPRITE_STANDING_YOUNGSTER, 41, 25, $3, $0, 255, 255, $a0, 0, StandingYoungsterScript_0x1a00b3, -1
-	person_event SPRITE_POKEFAN_M, 37, 21, $5, $1, 255, 255, $0, 0, PokefanMScript_0x1a00b6, -1
-	person_event SPRITE_LASS, 46, 18, $4, $20, 255, 255, $0, 0, LassScript_0x1a00b9, -1
-	person_event SPRITE_ROCK, 20, 12, $18, $0, 255, 255, $0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 21, 13, $18, $0, 255, 255, $0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 29, 8, $18, $0, 255, 255, $0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 33, 9, $18, $0, 255, 255, $0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 31, 14, $18, $0, 255, 255, $0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 23, 8, $18, $0, 255, 255, $0, 0, CianwoodCityRock, -1
-	person_event SPRITE_POKEFAN_F, 50, 14, $5, $1, 255, 255, $0, 0, PokefanFScript_0x1a0084, -1
-	person_event SPRITE_SUPER_NERD, 25, 15, $7, $0, 255, 255, $90, 0, ObjectEvent, EVENT_7AD
-	person_event SPRITE_SUICUNE, 18, 14, $1, $0, 255, 255, $90, 0, ObjectEvent, EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
+	person_event SPRITE_STANDING_YOUNGSTER, 41, 25, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, StandingYoungsterScript_0x1a00b3, -1
+	person_event SPRITE_POKEFAN_M, 37, 21, UP << 2 | $1, $1, -1, -1, $0, 0, PokefanMScript_0x1a00b6, -1
+	person_event SPRITE_LASS, 46, 18, UP << 2 | $0, $20, -1, -1, $0, 0, LassScript_0x1a00b9, -1
+	person_event SPRITE_ROCK, 20, 12, LEFT << 2 | $10, $0, -1, -1, $0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 21, 13, LEFT << 2 | $10, $0, -1, -1, $0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 29, 8, LEFT << 2 | $10, $0, -1, -1, $0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 33, 9, LEFT << 2 | $10, $0, -1, -1, $0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 31, 14, LEFT << 2 | $10, $0, -1, -1, $0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 23, 8, LEFT << 2 | $10, $0, -1, -1, $0, 0, CianwoodCityRock, -1
+	person_event SPRITE_POKEFAN_F, 50, 14, UP << 2 | $1, $1, -1, -1, $0, 0, PokefanFScript_0x1a0084, -1
+	person_event SPRITE_SUPER_NERD, 25, 15, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_7AD
+	person_event SPRITE_SUICUNE, 18, 14, DOWN << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
--- a/maps/CianwoodCityPhotoStudio.asm
+++ b/maps/CianwoodCityPhotoStudio.asm
@@ -62,4 +62,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_FISHING_GURU, 7, 6, $6, $0, 255, 255, $80, 0, FishingGuruScript_0x9e0e0, -1
+	person_event SPRITE_FISHING_GURU, 7, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FishingGuruScript_0x9e0e0, -1
--- a/maps/CianwoodGym.asm
+++ b/maps/CianwoodGym.asm
@@ -372,17 +372,17 @@
 
 	; signposts
 	db 2
-	signpost 15, 3, $0, CianwoodGymStatue
-	signpost 15, 6, $0, CianwoodGymStatue
+	signpost 15, 3, SIGNPOST_READ, CianwoodGymStatue
+	signpost 15, 6, SIGNPOST_READ, CianwoodGymStatue
 
 	; people-events
 	db 9
-	person_event SPRITE_CHUCK, 5, 8, $6, $0, 255, 255, $b0, 0, ChuckScript_0x9d60f, -1
-	person_event SPRITE_BLACK_BELT, 16, 6, $9, $0, 255, 255, $b2, 3, TrainerBlackbeltYoshi, -1
-	person_event SPRITE_BLACK_BELT, 16, 11, $8, $0, 255, 255, $b2, 3, TrainerBlackbeltLao, -1
-	person_event SPRITE_BLACK_BELT, 13, 7, $9, $0, 255, 255, $b2, 2, TrainerBlackbeltNob, -1
-	person_event SPRITE_BLACK_BELT, 9, 9, $8, $0, 255, 255, $b2, 1, TrainerBlackbeltLung, -1
-	person_event SPRITE_BOULDER, 5, 9, $19, $0, 255, 255, $0, 0, CianwoodGymBoulder, -1
-	person_event SPRITE_BOULDER, 11, 7, $19, $0, 255, 255, $0, 0, CianwoodGymBoulder, -1
-	person_event SPRITE_BOULDER, 11, 8, $19, $0, 255, 255, $0, 0, CianwoodGymBoulder, -1
-	person_event SPRITE_BOULDER, 11, 9, $19, $0, 255, 255, $0, 0, CianwoodGymBoulder, -1
+	person_event SPRITE_CHUCK, 5, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, ChuckScript_0x9d60f, -1
+	person_event SPRITE_BLACK_BELT, 16, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBlackbeltYoshi, -1
+	person_event SPRITE_BLACK_BELT, 16, 11, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBlackbeltLao, -1
+	person_event SPRITE_BLACK_BELT, 13, 7, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerBlackbeltNob, -1
+	person_event SPRITE_BLACK_BELT, 9, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerBlackbeltLung, -1
+	person_event SPRITE_BOULDER, 5, 9, LEFT << 2 | $11, $0, -1, -1, $0, 0, CianwoodGymBoulder, -1
+	person_event SPRITE_BOULDER, 11, 7, LEFT << 2 | $11, $0, -1, -1, $0, 0, CianwoodGymBoulder, -1
+	person_event SPRITE_BOULDER, 11, 8, LEFT << 2 | $11, $0, -1, -1, $0, 0, CianwoodGymBoulder, -1
+	person_event SPRITE_BOULDER, 11, 9, LEFT << 2 | $11, $0, -1, -1, $0, 0, CianwoodGymBoulder, -1
--- a/maps/CianwoodLugiaSpeechHouse.asm
+++ b/maps/CianwoodLugiaSpeechHouse.asm
@@ -70,11 +70,11 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, CianwoodLugiaSpeechHouseBookshelf
-	signpost 1, 1, $0, CianwoodLugiaSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, CianwoodLugiaSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, CianwoodLugiaSpeechHouseBookshelf
 
 	; people-events
 	db 3
-	person_event SPRITE_TEACHER, 8, 6, $6, $0, 255, 255, $0, 0, TeacherScript_0x9e1b0, -1
-	person_event SPRITE_LASS, 9, 10, $5, $1, 255, 255, $a0, 0, LassScript_0x9e1b3, -1
-	person_event SPRITE_TWIN, 6, 4, $7, $0, 255, 255, $90, 0, TwinScript_0x9e1b6, -1
+	person_event SPRITE_TEACHER, 8, 6, UP << 2 | $2, $0, -1, -1, $0, 0, TeacherScript_0x9e1b0, -1
+	person_event SPRITE_LASS, 9, 10, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x9e1b3, -1
+	person_event SPRITE_TWIN, 6, 4, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TwinScript_0x9e1b6, -1
--- a/maps/CianwoodPharmacy.asm
+++ b/maps/CianwoodPharmacy.asm
@@ -85,9 +85,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, CianwoodPharmacyBookshelf
-	signpost 1, 1, $0, CianwoodPharmacyBookshelf
+	signpost 1, 0, SIGNPOST_READ, CianwoodPharmacyBookshelf
+	signpost 1, 1, SIGNPOST_READ, CianwoodPharmacyBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_PHARMACIST, 7, 6, $6, $0, 255, 255, $80, 0, CianwoodPharmacist, -1
+	person_event SPRITE_PHARMACIST, 7, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CianwoodPharmacist, -1
--- a/maps/CianwoodPokeCenter1F.asm
+++ b/maps/CianwoodPokeCenter1F.asm
@@ -143,7 +143,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x9dbcf, -1
-	person_event SPRITE_LASS, 9, 5, $4, $10, 255, 255, $a0, 0, LassScript_0x9dbd2, -1
-	person_event SPRITE_GYM_GUY, 7, 9, $6, $0, 255, 255, $80, 0, CianwoodGymGuyScript, -1
-	person_event SPRITE_SUPER_NERD, 10, 12, $5, $1, 255, 255, $90, 0, SuperNerdScript_0x9dbea, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x9dbcf, -1
+	person_event SPRITE_LASS, 9, 5, UP << 2 | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x9dbd2, -1
+	person_event SPRITE_GYM_GUY, 7, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CianwoodGymGuyScript, -1
+	person_event SPRITE_SUPER_NERD, 10, 12, UP << 2 | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x9dbea, -1
--- a/maps/CinnabarIsland.asm
+++ b/maps/CinnabarIsland.asm
@@ -140,11 +140,11 @@
 
 	; signposts
 	db 4
-	signpost 11, 12, $0, CinnabarIslandPokeCenterSign
-	signpost 11, 9, $0, CinnabarIslandGymSign
-	signpost 7, 7, $0, CinnabarIslandSign
-	signpost 1, 9, $7, MapCinnabarIslandSignpostItem3
+	signpost 11, 12, SIGNPOST_READ, CinnabarIslandPokeCenterSign
+	signpost 11, 9, SIGNPOST_READ, CinnabarIslandGymSign
+	signpost 7, 7, SIGNPOST_READ, CinnabarIslandSign
+	signpost 1, 9, SIGNPOST_ITEMIFSET, MapCinnabarIslandSignpostItem3
 
 	; people-events
 	db 1
-	person_event SPRITE_BLUE, 10, 13, $3, $0, 255, 255, $0, 0, CinnabarIslandBlue, EVENT_BLUE_IN_CINNABAR
+	person_event SPRITE_BLUE, 10, 13, DOWN << 2 | $3, $0, -1, -1, $0, 0, CinnabarIslandBlue, EVENT_BLUE_IN_CINNABAR
--- a/maps/CinnabarPokeCenter1F.asm
+++ b/maps/CinnabarPokeCenter1F.asm
@@ -47,6 +47,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x1ab32c, -1
-	person_event SPRITE_COOLTRAINER_F, 10, 11, $5, $2, 255, 255, $80, 0, CooltrainerFScript_0x1ab32f, -1
-	person_event SPRITE_FISHER, 8, 6, $6, $0, 255, 255, $a0, 0, FisherScript_0x1ab332, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x1ab32c, -1
+	person_event SPRITE_COOLTRAINER_F, 10, 11, UP << 2 | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x1ab32f, -1
+	person_event SPRITE_FISHER, 8, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x1ab332, -1
--- a/maps/Colosseum.asm
+++ b/maps/Colosseum.asm
@@ -3,9 +3,9 @@
 	db 3
 
 	; triggers
-	dw UnknownScript_0x193471, $0000
-	dw UnknownScript_0x193475, $0000
-	dw UnknownScript_0x193476, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
+	dw .Trigger3, $0000
 
 	; callback count
 	db 2
@@ -12,54 +12,54 @@
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x193477
+	dbw 2, ColosseumScript_SetWhichChris
 
-	dbw 5, UnknownScript_0x193487
+	dbw 5, ColosseumScript_InitializeCB
 
-UnknownScript_0x193471:
-	priorityjump UnknownScript_0x19348c
+.Trigger1:
+	priorityjump ColosseumScript_Initialize
 	end
 
-UnknownScript_0x193475:
+.Trigger2:
 	end
 
-UnknownScript_0x193476:
+.Trigger3:
 	end
 
-UnknownScript_0x193477:
-	special Function29f47
-	iffalse UnknownScript_0x193482
+ColosseumScript_SetWhichChris:
+	special Special_CableClubCheckWhichChris
+	iffalse .Chris2
 	disappear $3
 	appear $2
 	return
 
-UnknownScript_0x193482:
+.Chris2:
 	disappear $2
 	appear $3
 	return
 
-UnknownScript_0x193487:
+ColosseumScript_InitializeCB:
 	domaptrigger GROUP_POKECENTER_2F, MAP_POKECENTER_2F, $2
 	return
 
-UnknownScript_0x19348c:
+ColosseumScript_Initialize:
 	dotrigger $1
 	domaptrigger GROUP_POKECENTER_2F, MAP_POKECENTER_2F, $2
 	end
 
 MapColosseumSignpost1Script:
-	special Function29ed9
+	special Special_Colosseum
 	newloadmap $f8
 	end
 
 ChrisScript_0x193499:
 	loadfont
-	writetext UnknownText_0x1934a0
+	writetext .FriendReadyText
 	closetext
 	loadmovesprites
 	end
 
-UnknownText_0x1934a0:
+.FriendReadyText:
 	text "Your friend is"
 	line "ready."
 	done
@@ -78,10 +78,10 @@
 
 	; signposts
 	db 2
-	signpost 4, 4, $3, MapColosseumSignpost1Script
-	signpost 4, 5, $4, MapColosseumSignpost1Script
+	signpost 4, 4, SIGNPOST_RIGHT, MapColosseumSignpost1Script
+	signpost 4, 5, SIGNPOST_LEFT, MapColosseumSignpost1Script
 
 	; people-events
 	db 2
-	person_event SPRITE_CHRIS, 8, 7, $9, $0, 255, 255, $0, 0, ChrisScript_0x193499, EVENT_000
-	person_event SPRITE_CHRIS, 8, 10, $8, $0, 255, 255, $0, 0, ChrisScript_0x193499, EVENT_001
+	person_event SPRITE_CHRIS, 8, 7, LEFT << 2 | $1, $0, -1, -1, $0, 0, ChrisScript_0x193499, EVENT_CHRIS1_IN_CABLE_CLUB
+	person_event SPRITE_CHRIS, 8, 10, LEFT << 2 | $0, $0, -1, -1, $0, 0, ChrisScript_0x193499, EVENT_CHRIS2_IN_CABLE_CLUB
--- a/maps/CopycatsHouse1F.asm
+++ b/maps/CopycatsHouse1F.asm
@@ -85,6 +85,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_POKEFAN_M, 7, 6, $6, $0, 255, 255, $0, 0, PokefanMScript_0x18ad13, -1
-	person_event SPRITE_POKEFAN_F, 8, 9, $8, $0, 255, 255, $a0, 0, PokefanFScript_0x18ad16, -1
-	person_event SPRITE_CLEFAIRY, 10, 10, $16, $0, 255, 255, $0, 0, ClefairyScript_0x18ad2a, -1
+	person_event SPRITE_POKEFAN_M, 7, 6, UP << 2 | $2, $0, -1, -1, $0, 0, PokefanMScript_0x18ad13, -1
+	person_event SPRITE_POKEFAN_F, 8, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, PokefanFScript_0x18ad16, -1
+	person_event SPRITE_CLEFAIRY, 10, 10, UP << 2 | $12, $0, -1, -1, $0, 0, ClefairyScript_0x18ad2a, -1
--- a/maps/CopycatsHouse2F.asm
+++ b/maps/CopycatsHouse2F.asm
@@ -368,14 +368,14 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, CopycatsHouse2FBookshelf
-	signpost 1, 1, $0, CopycatsHouse2FBookshelf
+	signpost 1, 0, SIGNPOST_READ, CopycatsHouse2FBookshelf
+	signpost 1, 1, SIGNPOST_READ, CopycatsHouse2FBookshelf
 
 	; people-events
 	db 6
-	person_event SPRITE_COPYCAT, 7, 8, $8, $0, 255, 255, $80, 0, Copycat, EVENT_6EE
-	person_event SPRITE_MOLTRES, 8, 10, $16, $0, 255, 255, $b0, 0, CopycatsDodrio, -1
-	person_event SPRITE_FAIRY, 5, 10, $6, $0, 255, 255, $80, 0, CopycatsHouse2FDoll, EVENT_773
-	person_event SPRITE_MONSTER, 5, 6, $6, $0, 255, 255, $a0, 0, CopycatsHouse2FDoll, -1
-	person_event SPRITE_BIRD, 5, 11, $6, $0, 255, 255, $90, 0, CopycatsHouse2FDoll, -1
-	person_event SPRITE_COPYCAT, 7, 8, $8, $0, 255, 255, $90, 0, Copycat, EVENT_6EF
+	person_event SPRITE_COPYCAT, 7, 8, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, Copycat, EVENT_6EE
+	person_event SPRITE_MOLTRES, 8, 10, UP << 2 | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, CopycatsDodrio, -1
+	person_event SPRITE_FAIRY, 5, 10, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CopycatsHouse2FDoll, EVENT_773
+	person_event SPRITE_MONSTER, 5, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CopycatsHouse2FDoll, -1
+	person_event SPRITE_BIRD, 5, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CopycatsHouse2FDoll, -1
+	person_event SPRITE_COPYCAT, 7, 8, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, Copycat, EVENT_6EF
--- a/maps/DanceTheatre.asm
+++ b/maps/DanceTheatre.asm
@@ -420,17 +420,17 @@
 
 	; signposts
 	db 2
-	signpost 6, 5, $1, MapDanceTheatreSignpost1Script
-	signpost 6, 6, $1, MapDanceTheatreSignpost1Script
+	signpost 6, 5, SIGNPOST_UP, MapDanceTheatreSignpost1Script
+	signpost 6, 6, SIGNPOST_UP, MapDanceTheatreSignpost1Script
 
 	; people-events
 	db 9
-	person_event SPRITE_KIMONO_GIRL, 6, 4, $1e, $0, 255, 255, $a2, 0, TrainerKimono_girlNaoko2, -1
-	person_event SPRITE_KIMONO_GIRL, 5, 6, $a, $0, 255, 255, $92, 0, TrainerKimono_girlSayo, -1
-	person_event SPRITE_KIMONO_GIRL, 6, 10, $3, $0, 255, 255, $82, 0, TrainerKimono_girlZuki, -1
-	person_event SPRITE_KIMONO_GIRL, 5, 13, $a, $0, 255, 255, $92, 0, TrainerKimono_girlKuni, -1
-	person_event SPRITE_KIMONO_GIRL, 6, 15, $1f, $0, 255, 255, $a2, 0, TrainerKimono_girlMiki, -1
-	person_event SPRITE_GENTLEMAN, 14, 11, $7, $0, 255, 255, $0, 0, GentlemanScript_0x994c6, -1
-	person_event SPRITE_RHYDON, 12, 10, $16, $0, 255, 255, $90, 0, RhydonScript_0x9951b, -1
-	person_event SPRITE_COOLTRAINER_M, 14, 14, $8, $0, 255, 255, $80, 0, CooltrainerMScript_0x99525, -1
-	person_event SPRITE_GRANNY, 10, 7, $7, $0, 255, 255, $0, 0, GrannyScript_0x99528, -1
+	person_event SPRITE_KIMONO_GIRL, 6, 4, RIGHT << 2 | $12, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 0, TrainerKimono_girlNaoko2, -1
+	person_event SPRITE_KIMONO_GIRL, 5, 6, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 0, TrainerKimono_girlSayo, -1
+	person_event SPRITE_KIMONO_GIRL, 6, 10, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 0, TrainerKimono_girlZuki, -1
+	person_event SPRITE_KIMONO_GIRL, 5, 13, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 0, TrainerKimono_girlKuni, -1
+	person_event SPRITE_KIMONO_GIRL, 6, 15, RIGHT << 2 | $13, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 0, TrainerKimono_girlMiki, -1
+	person_event SPRITE_GENTLEMAN, 14, 11, UP << 2 | $3, $0, -1, -1, $0, 0, GentlemanScript_0x994c6, -1
+	person_event SPRITE_RHYDON, 12, 10, UP << 2 | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, RhydonScript_0x9951b, -1
+	person_event SPRITE_COOLTRAINER_M, 14, 14, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x99525, -1
+	person_event SPRITE_GRANNY, 10, 7, UP << 2 | $3, $0, -1, -1, $0, 0, GrannyScript_0x99528, -1
--- a/maps/DarkCaveBlackthornEntrance.asm
+++ b/maps/DarkCaveBlackthornEntrance.asm
@@ -73,6 +73,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_PHARMACIST, 7, 11, $3, $0, 255, 255, $0, 0, PharmacistScript_0x18c720, -1
-	person_event SPRITE_POKE_BALL, 28, 25, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c73b, EVENT_6A1
-	person_event SPRITE_POKE_BALL, 26, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c73d, EVENT_6A2
+	person_event SPRITE_PHARMACIST, 7, 11, DOWN << 2 | $3, $0, -1, -1, $0, 0, PharmacistScript_0x18c720, -1
+	person_event SPRITE_POKE_BALL, 28, 25, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c73b, EVENT_6A1
+	person_event SPRITE_POKE_BALL, 26, 11, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c73d, EVENT_6A2
--- a/maps/DarkCaveVioletEntrance.asm
+++ b/maps/DarkCaveVioletEntrance.asm
@@ -40,15 +40,15 @@
 
 	; signposts
 	db 1
-	signpost 3, 26, $7, MapDarkCaveVioletEntranceSignpostItem0
+	signpost 3, 26, SIGNPOST_ITEMIFSET, MapDarkCaveVioletEntranceSignpostItem0
 
 	; people-events
 	db 8
-	person_event SPRITE_POKE_BALL, 12, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c68e, EVENT_69E
-	person_event SPRITE_ROCK, 18, 20, $18, $0, 255, 255, $0, 0, DarkCaveVioletEntranceRock, -1
-	person_event SPRITE_ROCK, 10, 31, $18, $0, 255, 255, $0, 0, DarkCaveVioletEntranceRock, -1
-	person_event SPRITE_ROCK, 18, 11, $18, $0, 255, 255, $0, 0, DarkCaveVioletEntranceRock, -1
-	person_event SPRITE_ROCK, 35, 40, $18, $0, 255, 255, $0, 0, DarkCaveVioletEntranceRock, -1
-	person_event SPRITE_POKE_BALL, 26, 40, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c690, EVENT_69F
-	person_event SPRITE_POKE_BALL, 13, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c692, EVENT_6A0
-	person_event SPRITE_POKE_BALL, 32, 34, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c694, EVENT_7CE
+	person_event SPRITE_POKE_BALL, 12, 10, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c68e, EVENT_69E
+	person_event SPRITE_ROCK, 18, 20, LEFT << 2 | $10, $0, -1, -1, $0, 0, DarkCaveVioletEntranceRock, -1
+	person_event SPRITE_ROCK, 10, 31, LEFT << 2 | $10, $0, -1, -1, $0, 0, DarkCaveVioletEntranceRock, -1
+	person_event SPRITE_ROCK, 18, 11, LEFT << 2 | $10, $0, -1, -1, $0, 0, DarkCaveVioletEntranceRock, -1
+	person_event SPRITE_ROCK, 35, 40, LEFT << 2 | $10, $0, -1, -1, $0, 0, DarkCaveVioletEntranceRock, -1
+	person_event SPRITE_POKE_BALL, 26, 40, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c690, EVENT_69F
+	person_event SPRITE_POKE_BALL, 13, 39, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c692, EVENT_6A0
+	person_event SPRITE_POKE_BALL, 32, 34, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c694, EVENT_7CE
--- a/maps/DayCare.asm
+++ b/maps/DayCare.asm
@@ -170,10 +170,10 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, DayCareBookshelf
-	signpost 1, 1, $0, DayCareBookshelf
+	signpost 1, 0, SIGNPOST_READ, DayCareBookshelf
+	signpost 1, 1, SIGNPOST_READ, DayCareBookshelf
 
 	; people-events
 	db 2
-	person_event SPRITE_GRAMPS, 7, 6, $9, $0, 255, 255, $0, 0, GrampsScript_0x62f8f, EVENT_6E5
-	person_event SPRITE_GRANNY, 7, 9, $8, $0, 255, 255, $80, 0, GrannyScript_0x62fc3, -1
+	person_event SPRITE_GRAMPS, 7, 6, LEFT << 2 | $1, $0, -1, -1, $0, 0, GrampsScript_0x62f8f, EVENT_6E5
+	person_event SPRITE_GRANNY, 7, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GrannyScript_0x62fc3, -1
--- a/maps/DiglettsCave.asm
+++ b/maps/DiglettsCave.asm
@@ -39,8 +39,8 @@
 
 	; signposts
 	db 1
-	signpost 11, 6, $7, MapDiglettsCaveSignpostItem0
+	signpost 11, 6, SIGNPOST_ITEMIFSET, MapDiglettsCaveSignpostItem0
 
 	; people-events
 	db 1
-	person_event SPRITE_POKEFAN_M, 35, 7, $6, $0, 255, 255, $0, 0, PokefanMScript_0x74002, -1
+	person_event SPRITE_POKEFAN_M, 35, 7, UP << 2 | $2, $0, -1, -1, $0, 0, PokefanMScript_0x74002, -1
--- a/maps/DragonShrine.asm
+++ b/maps/DragonShrine.asm
@@ -23,7 +23,7 @@
 	writetext UnknownText_0x18d2ea
 	keeptextopen
 UnknownScript_0x18d030:
-	setevent EVENT_001
+	setevent EVENT_CHRIS2_IN_CABLE_CLUB
 	writetext UnknownText_0x18d3bc
 	keeptextopen
 	loadmenudata MenuDataHeader_0x18d215
@@ -85,7 +85,7 @@
 	iftrue UnknownScript_0x18d079
 	checkevent EVENT_002
 	iftrue UnknownScript_0x18d061
-	checkevent EVENT_001
+	checkevent EVENT_CHRIS2_IN_CABLE_CLUB
 	iftrue UnknownScript_0x18d049
 UnknownScript_0x18d0cb:
 	loadmovesprites
@@ -109,7 +109,7 @@
 	iftrue UnknownScript_0x18d061
 	checkevent EVENT_002
 	iftrue UnknownScript_0x18d049
-	checkevent EVENT_001
+	checkevent EVENT_CHRIS2_IN_CABLE_CLUB
 	iftrue UnknownScript_0x18d030
 UnknownScript_0x18d100:
 	writetext UnknownText_0x18d47c
@@ -184,13 +184,13 @@
 	playsound SFX_ENTER_DOOR
 	disappear $5
 	waitbutton
-	setevent EVENT_000
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
 	end
 
 ElderScript_0x18d1a5:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x18d1f9
 	checkevent EVENT_006
 	iftrue UnknownScript_0x18d1ff
@@ -681,7 +681,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_ELDER, 5, 9, $6, $0, 255, 255, $0, 0, ElderScript_0x18d1a5, EVENT_000
-	person_event SPRITE_ELDER, 8, 6, $9, $0, 255, 255, $0, 0, ElderScript_0x18d205, EVENT_000
-	person_event SPRITE_ELDER, 8, 11, $8, $0, 255, 255, $0, 0, ElderScript_0x18d20d, EVENT_000
-	person_event SPRITE_CLAIR, 12, 8, $7, $0, 255, 255, $90, 0, ObjectEvent, EVENT_790
+	person_event SPRITE_ELDER, 5, 9, UP << 2 | $2, $0, -1, -1, $0, 0, ElderScript_0x18d1a5, EVENT_CHRIS1_IN_CABLE_CLUB
+	person_event SPRITE_ELDER, 8, 6, LEFT << 2 | $1, $0, -1, -1, $0, 0, ElderScript_0x18d205, EVENT_CHRIS1_IN_CABLE_CLUB
+	person_event SPRITE_ELDER, 8, 11, LEFT << 2 | $0, $0, -1, -1, $0, 0, ElderScript_0x18d20d, EVENT_CHRIS1_IN_CABLE_CLUB
+	person_event SPRITE_CLAIR, 12, 8, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_790
--- a/maps/DragonsDenB1F.asm
+++ b/maps/DragonsDenB1F.asm
@@ -212,12 +212,12 @@
 	playmusic MUSIC_RIVAL_ENCOUNTER
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x18c995
 	writetext UnknownText_0x18cc83
 	closetext
 	loadmovesprites
-	setevent EVENT_000
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
 	special RestartMapMusic
 	end
 
@@ -479,19 +479,19 @@
 
 	; signposts
 	db 4
-	signpost 24, 18, $0, MapDragonsDenB1FSignpost0Script
-	signpost 29, 33, $7, MapDragonsDenB1FSignpostItem1
-	signpost 17, 21, $7, MapDragonsDenB1FSignpostItem2
-	signpost 15, 31, $7, MapDragonsDenB1FSignpostItem3
+	signpost 24, 18, SIGNPOST_READ, MapDragonsDenB1FSignpost0Script
+	signpost 29, 33, SIGNPOST_ITEMIFSET, MapDragonsDenB1FSignpostItem1
+	signpost 17, 21, SIGNPOST_ITEMIFSET, MapDragonsDenB1FSignpostItem2
+	signpost 15, 31, SIGNPOST_ITEMIFSET, MapDragonsDenB1FSignpostItem3
 
 	; people-events
 	db 9
-	person_event SPRITE_POKE_BALL, 20, 39, $1, $0, 255, 255, $0, 0, PokeBallScript_0x18c95a, EVENT_6A8
-	person_event SPRITE_CLAIR, 34, 18, $7, $0, 255, 255, $90, 0, ObjectEvent, EVENT_6D8
-	person_event SPRITE_SILVER, 27, 24, $2, $22, 255, 255, $0, 0, SilverScript_0x18c97e, EVENT_6C6
-	person_event SPRITE_COOLTRAINER_M, 12, 24, $7, $0, 255, 255, $82, 4, TrainerCooltrainermDarin, -1
-	person_event SPRITE_COOLTRAINER_F, 12, 12, $6, $0, 255, 255, $82, 3, TrainerCooltrainerfCara, -1
-	person_event SPRITE_TWIN, 21, 8, $9, $0, 255, 255, $82, 1, TrainerTwinsLeaandpia1, -1
-	person_event SPRITE_TWIN, 22, 8, $9, $0, 255, 255, $82, 1, TrainerTwinsLeaandpia2, -1
-	person_event SPRITE_POKE_BALL, 8, 34, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c9a1, EVENT_7BF
-	person_event SPRITE_POKE_BALL, 24, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c9a3, EVENT_7C0
+	person_event SPRITE_POKE_BALL, 20, 39, DOWN << 2 | $1, $0, -1, -1, $0, 0, PokeBallScript_0x18c95a, EVENT_6A8
+	person_event SPRITE_CLAIR, 34, 18, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_6D8
+	person_event SPRITE_SILVER, 27, 24, DOWN << 2 | $2, $22, -1, -1, $0, 0, SilverScript_0x18c97e, EVENT_6C6
+	person_event SPRITE_COOLTRAINER_M, 12, 24, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerCooltrainermDarin, -1
+	person_event SPRITE_COOLTRAINER_F, 12, 12, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainerfCara, -1
+	person_event SPRITE_TWIN, 21, 8, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsLeaandpia1, -1
+	person_event SPRITE_TWIN, 22, 8, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsLeaandpia2, -1
+	person_event SPRITE_POKE_BALL, 8, 34, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c9a1, EVENT_7BF
+	person_event SPRITE_POKE_BALL, 24, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c9a3, EVENT_7C0
--- a/maps/EarlsPokemonAcademy.asm
+++ b/maps/EarlsPokemonAcademy.asm
@@ -418,16 +418,16 @@
 
 	; signposts
 	db 4
-	signpost 1, 0, $0, AcademyBookshelf
-	signpost 1, 1, $0, AcademyBookshelf
-	signpost 0, 3, $0, AcademyBlackboard
-	signpost 0, 4, $0, AcademyBlackboard
+	signpost 1, 0, SIGNPOST_READ, AcademyBookshelf
+	signpost 1, 1, SIGNPOST_READ, AcademyBookshelf
+	signpost 0, 3, SIGNPOST_READ, AcademyBlackboard
+	signpost 0, 4, SIGNPOST_READ, AcademyBlackboard
 
 	; people-events
 	db 6
-	person_event SPRITE_FISHER, 6, 8, $6, $0, 255, 255, $a0, 0, AcademyEarl, EVENT_6CB
-	person_event SPRITE_YOUNGSTER, 9, 6, $7, $0, 255, 255, $80, 0, YoungsterScript_0x68a83, -1
-	person_event SPRITE_GAMEBOY_KID, 15, 7, $6, $0, 255, 255, $0, 0, GameboyKidScript_0x68a86, -1
-	person_event SPRITE_GAMEBOY_KID, 15, 8, $8, $0, 255, 255, $80, 0, GameboyKidScript_0x68a91, -1
-	person_event SPRITE_YOUNGSTER, 11, 8, $7, $0, 255, 255, $0, 0, YoungsterScript_0x68a9c, -1
-	person_event SPRITE_POKEDEX, 8, 6, $1, $0, 255, 255, $0, 0, AcademyNotebook, -1
+	person_event SPRITE_FISHER, 6, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, AcademyEarl, EVENT_6CB
+	person_event SPRITE_YOUNGSTER, 9, 6, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x68a83, -1
+	person_event SPRITE_GAMEBOY_KID, 15, 7, UP << 2 | $2, $0, -1, -1, $0, 0, GameboyKidScript_0x68a86, -1
+	person_event SPRITE_GAMEBOY_KID, 15, 8, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GameboyKidScript_0x68a91, -1
+	person_event SPRITE_YOUNGSTER, 11, 8, UP << 2 | $3, $0, -1, -1, $0, 0, YoungsterScript_0x68a9c, -1
+	person_event SPRITE_POKEDEX, 8, 6, DOWN << 2 | $1, $0, -1, -1, $0, 0, AcademyNotebook, -1
--- a/maps/EcruteakCity.asm
+++ b/maps/EcruteakCity.asm
@@ -280,21 +280,21 @@
 
 	; signposts
 	db 8
-	signpost 21, 15, $0, EcruteakCitySign
-	signpost 10, 38, $0, TinTowerSign
-	signpost 28, 8, $0, EcruteakGymSign
-	signpost 21, 21, $0, EcruteakDanceTheaterSign
-	signpost 10, 2, $0, BurnedTowerSign
-	signpost 27, 24, $0, EcruteakCityPokeCenterSign
-	signpost 21, 30, $0, EcruteakCityMartSign
-	signpost 14, 23, $7, MapEcruteakCitySignpostItem7
+	signpost 21, 15, SIGNPOST_READ, EcruteakCitySign
+	signpost 10, 38, SIGNPOST_READ, TinTowerSign
+	signpost 28, 8, SIGNPOST_READ, EcruteakGymSign
+	signpost 21, 21, SIGNPOST_READ, EcruteakDanceTheaterSign
+	signpost 10, 2, SIGNPOST_READ, BurnedTowerSign
+	signpost 27, 24, SIGNPOST_READ, EcruteakCityPokeCenterSign
+	signpost 21, 30, SIGNPOST_READ, EcruteakCityMartSign
+	signpost 14, 23, SIGNPOST_ITEMIFSET, MapEcruteakCitySignpostItem7
 
 	; people-events
 	db 7
-	person_event SPRITE_GRAMPS, 19, 22, $2, $11, 255, 255, $0, 0, GrampsScript_0x1a4009, -1
-	person_event SPRITE_GRAMPS, 25, 24, $3, $0, 255, 255, $0, 0, GrampsScript_0x1a400c, -1
-	person_event SPRITE_LASS, 33, 25, $5, $2, 255, 255, $90, 0, LassScript_0x1a4012, -1
-	person_event SPRITE_LASS, 13, 7, $7, $0, 255, 255, $0, 0, LassScript_0x1a4015, -1
-	person_event SPRITE_FISHER, 26, 13, $5, $1, 255, 255, $a0, 0, FisherScript_0x1a4029, -1
-	person_event SPRITE_YOUNGSTER, 18, 14, $2, $11, 255, 255, $80, 0, YoungsterScript_0x1a403d, -1
-	person_event SPRITE_GRAMPS, 11, 7, $2, $11, 255, 255, $a0, 0, GrampsScript_0x1a400f, EVENT_7A9
+	person_event SPRITE_GRAMPS, 19, 22, DOWN << 2 | $2, $11, -1, -1, $0, 0, GrampsScript_0x1a4009, -1
+	person_event SPRITE_GRAMPS, 25, 24, DOWN << 2 | $3, $0, -1, -1, $0, 0, GrampsScript_0x1a400c, -1
+	person_event SPRITE_LASS, 33, 25, UP << 2 | $1, $2, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x1a4012, -1
+	person_event SPRITE_LASS, 13, 7, UP << 2 | $3, $0, -1, -1, $0, 0, LassScript_0x1a4015, -1
+	person_event SPRITE_FISHER, 26, 13, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x1a4029, -1
+	person_event SPRITE_YOUNGSTER, 18, 14, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x1a403d, -1
+	person_event SPRITE_GRAMPS, 11, 7, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GrampsScript_0x1a400f, EVENT_7A9
--- a/maps/EcruteakGym.asm
+++ b/maps/EcruteakGym.asm
@@ -488,15 +488,15 @@
 
 	; signposts
 	db 2
-	signpost 15, 3, $0, EcruteakGymStatue
-	signpost 15, 6, $0, EcruteakGymStatue
+	signpost 15, 3, SIGNPOST_READ, EcruteakGymStatue
+	signpost 15, 6, SIGNPOST_READ, EcruteakGymStatue
 
 	; people-events
 	db 7
-	person_event SPRITE_MORTY, 5, 9, $6, $0, 255, 255, $b0, 0, MortyScript_0x99d58, -1
-	person_event SPRITE_SAGE, 11, 6, $9, $0, 255, 255, $92, 1, TrainerSageJeffrey, -1
-	person_event SPRITE_SAGE, 17, 7, $9, $0, 255, 255, $92, 3, TrainerSagePing, -1
-	person_event SPRITE_GRANNY, 9, 11, $8, $0, 255, 255, $b2, 1, TrainerMediumMartha, -1
-	person_event SPRITE_GRANNY, 13, 11, $8, $0, 255, 255, $b2, 1, TrainerMediumGrace, -1
-	person_event SPRITE_GYM_GUY, 19, 11, $6, $0, 255, 255, $80, 0, EcruteakGymGuyScript, -1
-	person_event SPRITE_GRAMPS, 18, 8, $6, $0, 255, 255, $a0, 0, ObjectEvent, EVENT_7A8
+	person_event SPRITE_MORTY, 5, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, MortyScript_0x99d58, -1
+	person_event SPRITE_SAGE, 11, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerSageJeffrey, -1
+	person_event SPRITE_SAGE, 17, 7, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSagePing, -1
+	person_event SPRITE_GRANNY, 9, 11, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerMediumMartha, -1
+	person_event SPRITE_GRANNY, 13, 11, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerMediumGrace, -1
+	person_event SPRITE_GYM_GUY, 19, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, EcruteakGymGuyScript, -1
+	person_event SPRITE_GRAMPS, 18, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ObjectEvent, EVENT_7A8
--- a/maps/EcruteakHouse.asm
+++ b/maps/EcruteakHouse.asm
@@ -86,7 +86,7 @@
 UnknownScript_0x9807c:
 	checkevent EVENT_KOJI_ALLOWS_YOU_PASSAGE_TO_TIN_TOWER
 	iftrue UnknownScript_0x980a4
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x980aa
 	checkitem CLEAR_BELL
 	iftrue UnknownScript_0x98093
@@ -102,7 +102,7 @@
 	dotrigger $1
 	setevent EVENT_RANG_CLEAR_BELL
 	clearevent EVENT_766
-	setevent EVENT_000
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
 	end
 
 UnknownScript_0x980a4:
@@ -298,7 +298,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_SAGE, 10, 8, $6, $0, 255, 255, $0, 0, SageScript_0x98062, EVENT_766
-	person_event SPRITE_SAGE, 10, 9, $6, $0, 255, 255, $0, 0, SageScript_0x98062, EVENT_RANG_CLEAR_BELL
-	person_event SPRITE_SAGE, 13, 10, $2, $11, 255, 255, $0, 0, SageScript_0x980b0, EVENT_7B1
-	person_event SPRITE_GRAMPS, 15, 7, $2, $11, 255, 255, $0, 0, GrampsScript_0x980c4, EVENT_7B1
+	person_event SPRITE_SAGE, 10, 8, UP << 2 | $2, $0, -1, -1, $0, 0, SageScript_0x98062, EVENT_766
+	person_event SPRITE_SAGE, 10, 9, UP << 2 | $2, $0, -1, -1, $0, 0, SageScript_0x98062, EVENT_RANG_CLEAR_BELL
+	person_event SPRITE_SAGE, 13, 10, DOWN << 2 | $2, $11, -1, -1, $0, 0, SageScript_0x980b0, EVENT_7B1
+	person_event SPRITE_GRAMPS, 15, 7, DOWN << 2 | $2, $11, -1, -1, $0, 0, GrampsScript_0x980c4, EVENT_7B1
--- a/maps/EcruteakItemfinderHouse.asm
+++ b/maps/EcruteakItemfinderHouse.asm
@@ -172,9 +172,9 @@
 
 	; signposts
 	db 1
-	signpost 1, 2, $0, ItemFinderHouseRadio
+	signpost 1, 2, SIGNPOST_READ, ItemFinderHouseRadio
 
 	; people-events
 	db 2
-	person_event SPRITE_COOLTRAINER_M, 7, 6, $6, $0, 255, 255, $80, 0, CooltrainerMScript_0x9a5fb, -1
-	person_event SPRITE_POKEDEX, 7, 7, $1, $0, 255, 255, $0, 0, PokedexScript_0x9a620, -1
+	person_event SPRITE_COOLTRAINER_M, 7, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x9a5fb, -1
+	person_event SPRITE_POKEDEX, 7, 7, DOWN << 2 | $1, $0, -1, -1, $0, 0, PokedexScript_0x9a620, -1
--- a/maps/EcruteakLugiaSpeechHouse.asm
+++ b/maps/EcruteakLugiaSpeechHouse.asm
@@ -54,9 +54,9 @@
 
 	; signposts
 	db 1
-	signpost 1, 2, $0, LugiaSpeechHouseRadio
+	signpost 1, 2, SIGNPOST_READ, LugiaSpeechHouseRadio
 
 	; people-events
 	db 2
-	person_event SPRITE_GRAMPS, 7, 6, $3, $0, 255, 255, $0, 0, GrampsScript_0x99334, -1
-	person_event SPRITE_YOUNGSTER, 8, 9, $8, $0, 255, 255, $0, 0, YoungsterScript_0x99337, -1
+	person_event SPRITE_GRAMPS, 7, 6, DOWN << 2 | $3, $0, -1, -1, $0, 0, GrampsScript_0x99334, -1
+	person_event SPRITE_YOUNGSTER, 8, 9, LEFT << 2 | $0, $0, -1, -1, $0, 0, YoungsterScript_0x99337, -1
--- a/maps/EcruteakMart.asm
+++ b/maps/EcruteakMart.asm
@@ -57,6 +57,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x99c3b, -1
-	person_event SPRITE_SUPER_NERD, 6, 9, $5, $1, 255, 255, $a0, 0, SuperNerdScript_0x99c42, -1
-	person_event SPRITE_GRANNY, 10, 10, $7, $0, 255, 255, $0, 0, GrannyScript_0x99c45, -1
+	person_event SPRITE_CLERK, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x99c3b, -1
+	person_event SPRITE_SUPER_NERD, 6, 9, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x99c42, -1
+	person_event SPRITE_GRANNY, 10, 10, UP << 2 | $3, $0, -1, -1, $0, 0, GrannyScript_0x99c45, -1
--- a/maps/EcruteakPokeCenter1F.asm
+++ b/maps/EcruteakPokeCenter1F.asm
@@ -219,8 +219,8 @@
 
 	; people-events
 	db 5
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x98eb0, -1
-	person_event SPRITE_POKEFAN_M, 10, 11, $a, $0, 255, 255, $0, 0, PokefanMScript_0x98eb3, -1
-	person_event SPRITE_COOLTRAINER_F, 8, 5, $3, $0, 255, 255, $0, 0, CooltrainerFScript_0x98ebf, -1
-	person_event SPRITE_GYM_GUY, 5, 11, $6, $0, 255, 255, $a0, 0, GymGuyScript_0x98ec2, -1
-	person_event SPRITE_BILL, 11, 4, $9, $0, 255, 255, $0, 0, ObjectEvent, EVENT_713
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x98eb0, -1
+	person_event SPRITE_POKEFAN_M, 10, 11, LEFT << 2 | $2, $0, -1, -1, $0, 0, PokefanMScript_0x98eb3, -1
+	person_event SPRITE_COOLTRAINER_F, 8, 5, DOWN << 2 | $3, $0, -1, -1, $0, 0, CooltrainerFScript_0x98ebf, -1
+	person_event SPRITE_GYM_GUY, 5, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GymGuyScript_0x98ec2, -1
+	person_event SPRITE_BILL, 11, 4, LEFT << 2 | $1, $0, -1, -1, $0, 0, ObjectEvent, EVENT_713
--- a/maps/ElmsHouse.asm
+++ b/maps/ElmsHouse.asm
@@ -93,11 +93,11 @@
 
 	; signposts
 	db 3
-	signpost 1, 0, $0, ElmsHousePC
-	signpost 1, 6, $0, ElmsHouseBookshelf
-	signpost 1, 7, $0, ElmsHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, ElmsHousePC
+	signpost 1, 6, SIGNPOST_READ, ElmsHouseBookshelf
+	signpost 1, 7, SIGNPOST_READ, ElmsHouseBookshelf
 
 	; people-events
 	db 2
-	person_event SPRITE_TEACHER, 9, 5, $4, $10, 255, 255, $a0, 0, ElmsWife, -1
-	person_event SPRITE_BUG_CATCHER, 8, 9, $7, $0, 255, 255, $0, 0, ElmsSon, -1
+	person_event SPRITE_TEACHER, 9, 5, UP << 2 | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ElmsWife, -1
+	person_event SPRITE_BUG_CATCHER, 8, 9, UP << 2 | $3, $0, -1, -1, $0, 0, ElmsSon, -1
--- a/maps/ElmsLab.asm
+++ b/maps/ElmsLab.asm
@@ -1389,28 +1389,28 @@
 
 	; signposts
 	db 16
-	signpost 1, 2, $0, ElmsLabHealingMachine
-	signpost 1, 6, $0, ElmsLabBookshelf
-	signpost 1, 7, $0, ElmsLabBookshelf
-	signpost 1, 8, $0, ElmsLabBookshelf
-	signpost 1, 9, $0, ElmsLabBookshelf
-	signpost 7, 0, $0, ElmsLabTravelTip1
-	signpost 7, 1, $0, ElmsLabTravelTip2
-	signpost 7, 2, $0, ElmsLabTravelTip3
-	signpost 7, 3, $0, ElmsLabTravelTip4
-	signpost 7, 6, $0, ElmsLabBookshelf
-	signpost 7, 7, $0, ElmsLabBookshelf
-	signpost 7, 8, $0, ElmsLabBookshelf
-	signpost 7, 9, $0, ElmsLabBookshelf
-	signpost 3, 9, $0, ElmsLabTrashcan
-	signpost 0, 5, $0, ElmsLabWindow
-	signpost 5, 3, $2, ElmsLabPC
+	signpost 1, 2, SIGNPOST_READ, ElmsLabHealingMachine
+	signpost 1, 6, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 1, 7, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 1, 8, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 1, 9, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 7, 0, SIGNPOST_READ, ElmsLabTravelTip1
+	signpost 7, 1, SIGNPOST_READ, ElmsLabTravelTip2
+	signpost 7, 2, SIGNPOST_READ, ElmsLabTravelTip3
+	signpost 7, 3, SIGNPOST_READ, ElmsLabTravelTip4
+	signpost 7, 6, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 7, 7, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 7, 8, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 7, 9, SIGNPOST_READ, ElmsLabBookshelf
+	signpost 3, 9, SIGNPOST_READ, ElmsLabTrashcan
+	signpost 0, 5, SIGNPOST_READ, ElmsLabWindow
+	signpost 5, 3, SIGNPOST_DOWN, ElmsLabPC
 
 	; people-events
 	db 6
-	person_event SPRITE_ELM, 6, 9, $6, $0, 255, 255, $0, 0, ProfElmScript, -1
-	person_event SPRITE_SCIENTIST, 13, 6, $3, $0, 255, 255, $90, 0, ElmsAideScript, EVENT_ELMS_AIDE_IN_LAB
-	person_event SPRITE_POKE_BALL, 7, 10, $1, $0, 255, 255, $0, 0, CyndaquilPokeBallScript, EVENT_640
-	person_event SPRITE_POKE_BALL, 7, 11, $1, $0, 255, 255, $0, 0, TotodilePokeBallScript, EVENT_641
-	person_event SPRITE_POKE_BALL, 7, 12, $1, $0, 255, 255, $0, 0, ChikoritaPokeBallScript, EVENT_642
-	person_event SPRITE_OFFICER, 7, 9, $7, $0, 255, 255, $90, 0, CopScript, EVENT_702
+	person_event SPRITE_ELM, 6, 9, UP << 2 | $2, $0, -1, -1, $0, 0, ProfElmScript, -1
+	person_event SPRITE_SCIENTIST, 13, 6, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ElmsAideScript, EVENT_ELMS_AIDE_IN_LAB
+	person_event SPRITE_POKE_BALL, 7, 10, DOWN << 2 | $1, $0, -1, -1, $0, 0, CyndaquilPokeBallScript, EVENT_CYNDAQUIL_POKEBALL_IN_ELMS_LAB
+	person_event SPRITE_POKE_BALL, 7, 11, DOWN << 2 | $1, $0, -1, -1, $0, 0, TotodilePokeBallScript, EVENT_TOTODILE_POKEBALL_IN_ELMS_LAB
+	person_event SPRITE_POKE_BALL, 7, 12, DOWN << 2 | $1, $0, -1, -1, $0, 0, ChikoritaPokeBallScript, EVENT_CHIKORITA_POKEBALL_IN_ELMS_LAB
+	person_event SPRITE_OFFICER, 7, 9, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CopScript, EVENT_COP_IN_ELMS_LAB
--- a/maps/FastShip1F.asm
+++ b/maps/FastShip1F.asm
@@ -310,7 +310,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_SAILOR, 6, 29, $6, $0, 255, 255, $0, 0, SailorScript_0x75160, -1
-	person_event SPRITE_SAILOR, 11, 18, $9, $0, 255, 255, $0, 0, SailorScript_0x751d0, -1
-	person_event SPRITE_SAILOR, 21, 26, $5, $2, 255, 255, $0, 0, SailorScript_0x751e4, -1
-	person_event SPRITE_GENTLEMAN, 10, 23, $9, $0, 255, 255, $0, 0, ObjectEvent, EVENT_72C
+	person_event SPRITE_SAILOR, 6, 29, UP << 2 | $2, $0, -1, -1, $0, 0, SailorScript_0x75160, -1
+	person_event SPRITE_SAILOR, 11, 18, LEFT << 2 | $1, $0, -1, -1, $0, 0, SailorScript_0x751d0, -1
+	person_event SPRITE_SAILOR, 21, 26, UP << 2 | $1, $2, -1, -1, $0, 0, SailorScript_0x751e4, -1
+	person_event SPRITE_GENTLEMAN, 10, 23, LEFT << 2 | $1, $0, -1, -1, $0, 0, ObjectEvent, EVENT_72C
--- a/maps/FastShipB1F.asm
+++ b/maps/FastShipB1F.asm
@@ -612,19 +612,19 @@
 
 	; signposts
 	db 1
-	signpost 9, 27, $0, FashShipB1FTrashcan
+	signpost 9, 27, SIGNPOST_READ, FashShipB1FTrashcan
 
 	; people-events
 	db 12
-	person_event SPRITE_SAILOR, 10, 34, $6, $0, 255, 255, $90, 0, SailorScript_0x76767, EVENT_72E
-	person_event SPRITE_SAILOR, 10, 35, $6, $0, 255, 255, $90, 0, SailorScript_0x76767, EVENT_72F
-	person_event SPRITE_SAILOR, 15, 13, $7, $0, 255, 255, $92, 3, TrainerSailorJeff, EVENT_739
-	person_event SPRITE_LASS, 8, 10, $7, $0, 255, 255, $a2, 1, TrainerPicnickerDebra, EVENT_739
-	person_event SPRITE_SUPER_NERD, 13, 30, $9, $0, 255, 255, $92, 1, TrainerJugglerFritz, EVENT_739
-	person_event SPRITE_SAILOR, 8, 21, $9, $0, 255, 255, $92, 4, TrainerSailorGarrett, EVENT_73A
-	person_event SPRITE_FISHER, 12, 29, $7, $0, 255, 255, $a2, 3, TrainerFisherJonah, EVENT_73A
-	person_event SPRITE_BLACK_BELT, 15, 19, $1f, $0, 255, 255, $b2, 3, TrainerBlackbeltWai, EVENT_73A
-	person_event SPRITE_SAILOR, 8, 27, $9, $0, 255, 255, $92, 4, TrainerSailorKenneth, EVENT_73B
-	person_event SPRITE_TEACHER, 15, 13, $7, $0, 255, 255, $82, 3, TrainerTeacherShirley, EVENT_73B
-	person_event SPRITE_YOUNGSTER, 13, 18, $3, $0, 255, 255, $92, 1, TrainerSchoolboyNate, EVENT_73B
-	person_event SPRITE_YOUNGSTER, 15, 18, $a, $0, 255, 255, $92, 1, TrainerSchoolboyRicky, EVENT_73B
+	person_event SPRITE_SAILOR, 10, 34, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SailorScript_0x76767, EVENT_72E
+	person_event SPRITE_SAILOR, 10, 35, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SailorScript_0x76767, EVENT_72F
+	person_event SPRITE_SAILOR, 15, 13, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSailorJeff, EVENT_739
+	person_event SPRITE_LASS, 8, 10, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerPicnickerDebra, EVENT_739
+	person_event SPRITE_SUPER_NERD, 13, 30, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerJugglerFritz, EVENT_739
+	person_event SPRITE_SAILOR, 8, 21, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerSailorGarrett, EVENT_73A
+	person_event SPRITE_FISHER, 12, 29, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerFisherJonah, EVENT_73A
+	person_event SPRITE_BLACK_BELT, 15, 19, RIGHT << 2 | $13, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBlackbeltWai, EVENT_73A
+	person_event SPRITE_SAILOR, 8, 27, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerSailorKenneth, EVENT_73B
+	person_event SPRITE_TEACHER, 15, 13, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerTeacherShirley, EVENT_73B
+	person_event SPRITE_YOUNGSTER, 13, 18, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerSchoolboyNate, EVENT_73B
+	person_event SPRITE_YOUNGSTER, 15, 18, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerSchoolboyRicky, EVENT_73B
--- a/maps/FastShipCabins_NNW_NNE_NE.asm
+++ b/maps/FastShipCabins_NNW_NNE_NE.asm
@@ -368,16 +368,16 @@
 
 	; signposts
 	db 3
-	signpost 13, 6, $0, FastShipCabins_NNW_NNE_NETrashcan
-	signpost 19, 7, $0, FastShipCabins_NNW_NNE_NETrashcan
-	signpost 31, 7, $0, FastShipCabins_NNW_NNE_NETrashcan
+	signpost 13, 6, SIGNPOST_READ, FastShipCabins_NNW_NNE_NETrashcan
+	signpost 19, 7, SIGNPOST_READ, FastShipCabins_NNW_NNE_NETrashcan
+	signpost 31, 7, SIGNPOST_READ, FastShipCabins_NNW_NNE_NETrashcan
 
 	; people-events
 	db 7
-	person_event SPRITE_COOLTRAINER_M, 7, 8, $a, $0, 255, 255, $82, 2, TrainerCooltrainermSean, EVENT_73A
-	person_event SPRITE_COOLTRAINER_F, 9, 5, $7, $0, 255, 255, $82, 3, TrainerCooltrainerfCarol, EVENT_73A
-	person_event SPRITE_SUPER_NERD, 9, 5, $7, $0, 255, 255, $92, 3, TrainerPokemaniacEthan, EVENT_73B
-	person_event SPRITE_POKEFAN_M, 21, 8, $7, $0, 255, 255, $b2, 3, TrainerHikerNoland, EVENT_739
-	person_event SPRITE_SAILOR, 30, 8, $3, $0, 255, 255, $90, 0, SailorScript_0x755f1, EVENT_72D
-	person_event SPRITE_GENTLEMAN, 34, 11, $3, $0, 255, 255, $92, 1, TrainerGentlemanEdward, EVENT_73A
-	person_event SPRITE_PHARMACIST, 34, 6, $7, $0, 255, 255, $a2, 4, TrainerBurglarCorey, EVENT_73B
+	person_event SPRITE_COOLTRAINER_M, 7, 8, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerCooltrainermSean, EVENT_73A
+	person_event SPRITE_COOLTRAINER_F, 9, 5, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainerfCarol, EVENT_73A
+	person_event SPRITE_SUPER_NERD, 9, 5, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacEthan, EVENT_73B
+	person_event SPRITE_POKEFAN_M, 21, 8, UP << 2 | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerHikerNoland, EVENT_739
+	person_event SPRITE_SAILOR, 30, 8, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SailorScript_0x755f1, EVENT_72D
+	person_event SPRITE_GENTLEMAN, 34, 11, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerGentlemanEdward, EVENT_73A
+	person_event SPRITE_PHARMACIST, 34, 6, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 4, TrainerBurglarCorey, EVENT_73B
--- a/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
+++ b/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
@@ -579,18 +579,18 @@
 
 	; signposts
 	db 1
-	signpost 25, 4, $0, FastShipCaptainsCabinTrashcan
+	signpost 25, 4, SIGNPOST_READ, FastShipCaptainsCabinTrashcan
 
 	; people-events
 	db 11
-	person_event SPRITE_CAPTAIN, 29, 7, $6, $0, 255, 255, $90, 0, CaptainScript_0x75ea7, -1
-	person_event SPRITE_GENTLEMAN, 21, 6, $9, $0, 255, 255, $90, 0, GentlemanScript_0x75f1f, EVENT_730
-	person_event SPRITE_TWIN, 21, 7, $a, $0, 255, 255, $0, 0, TwinScript_0x75f6d, EVENT_731
-	person_event SPRITE_TWIN, 29, 6, $a, $0, 255, 255, $0, 0, TwinScript_0x75ebb, EVENT_732
-	person_event SPRITE_POKEFAN_M, 10, 9, $8, $0, 255, 255, $82, 5, TrainerPokefanmColin, EVENT_739
-	person_event SPRITE_TWIN, 8, 6, $6, $0, 255, 255, $82, 1, TrainerTwinsMegandpeg1, EVENT_739
-	person_event SPRITE_TWIN, 8, 7, $6, $0, 255, 255, $82, 1, TrainerTwinsMegandpeg2, EVENT_739
-	person_event SPRITE_SUPER_NERD, 9, 9, $8, $0, 255, 255, $92, 5, TrainerPsychicRodney, EVENT_73A
-	person_event SPRITE_POKEFAN_M, 7, 6, $6, $0, 255, 255, $82, 3, TrainerPokefanmJeremy, EVENT_73B
-	person_event SPRITE_POKEFAN_F, 9, 9, $9, $0, 255, 255, $82, 1, TrainerPokefanfGeorgia, EVENT_73B
-	person_event SPRITE_SUPER_NERD, 19, 5, $3, $0, 255, 255, $b2, 2, TrainerSupernerdShawn, EVENT_73A
+	person_event SPRITE_CAPTAIN, 29, 7, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CaptainScript_0x75ea7, -1
+	person_event SPRITE_GENTLEMAN, 21, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GentlemanScript_0x75f1f, EVENT_730
+	person_event SPRITE_TWIN, 21, 7, LEFT << 2 | $2, $0, -1, -1, $0, 0, TwinScript_0x75f6d, EVENT_731
+	person_event SPRITE_TWIN, 29, 6, LEFT << 2 | $2, $0, -1, -1, $0, 0, TwinScript_0x75ebb, EVENT_732
+	person_event SPRITE_POKEFAN_M, 10, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 5, TrainerPokefanmColin, EVENT_739
+	person_event SPRITE_TWIN, 8, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsMegandpeg1, EVENT_739
+	person_event SPRITE_TWIN, 8, 7, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsMegandpeg2, EVENT_739
+	person_event SPRITE_SUPER_NERD, 9, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 5, TrainerPsychicRodney, EVENT_73A
+	person_event SPRITE_POKEFAN_M, 7, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerPokefanmJeremy, EVENT_73B
+	person_event SPRITE_POKEFAN_F, 9, 9, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerPokefanfGeorgia, EVENT_73B
+	person_event SPRITE_SUPER_NERD, 19, 5, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerSupernerdShawn, EVENT_73A
--- a/maps/FastShipCabins_SW_SSW_NW.asm
+++ b/maps/FastShipCabins_SW_SSW_NW.asm
@@ -297,13 +297,13 @@
 
 	; signposts
 	db 3
-	signpost 1, 7, $0, FastShipBed
-	signpost 2, 7, $0, FastShipBed
-	signpost 7, 7, $0, FastShipCabinsNorthwestCabinTrashcan
+	signpost 1, 7, SIGNPOST_READ, FastShipBed
+	signpost 2, 7, SIGNPOST_READ, FastShipBed
+	signpost 7, 7, SIGNPOST_READ, FastShipCabinsNorthwestCabinTrashcan
 
 	; people-events
 	db 4
-	person_event SPRITE_FISHER, 19, 5, $1e, $0, 255, 255, $82, 2, TrainerFirebreatherLyle, EVENT_739
-	person_event SPRITE_BUG_CATCHER, 19, 10, $a, $0, 255, 255, $b2, 2, TrainerBug_catcherKen, EVENT_73B
-	person_event SPRITE_BUENA, 30, 5, $a, $0, 255, 255, $92, 3, TrainerBeautyCassie, EVENT_73A
-	person_event SPRITE_ROCKER, 32, 7, $1e, $0, 255, 255, $82, 2, TrainerGuitaristClyde, EVENT_73B
+	person_event SPRITE_FISHER, 19, 5, RIGHT << 2 | $12, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerFirebreatherLyle, EVENT_739
+	person_event SPRITE_BUG_CATCHER, 19, 10, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerBug_catcherKen, EVENT_73B
+	person_event SPRITE_BUENA, 30, 5, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBeautyCassie, EVENT_73A
+	person_event SPRITE_ROCKER, 32, 7, RIGHT << 2 | $12, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerGuitaristClyde, EVENT_73B
--- a/maps/FightingDojo.asm
+++ b/maps/FightingDojo.asm
@@ -52,10 +52,10 @@
 
 	; signposts
 	db 2
-	signpost 0, 4, $0, MapFightingDojoSignpost0Script
-	signpost 0, 5, $0, MapFightingDojoSignpost1Script
+	signpost 0, 4, SIGNPOST_READ, MapFightingDojoSignpost0Script
+	signpost 0, 5, SIGNPOST_READ, MapFightingDojoSignpost1Script
 
 	; people-events
 	db 2
-	person_event SPRITE_BLACK_BELT, 8, 8, $6, $0, 255, 255, $90, 0, BlackBeltScript_0x189b61, -1
-	person_event SPRITE_POKE_BALL, 5, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x189b6a, EVENT_PICKED_UP_FOCUS_BAND
+	person_event SPRITE_BLACK_BELT, 8, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, BlackBeltScript_0x189b61, -1
+	person_event SPRITE_POKE_BALL, 5, 7, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x189b6a, EVENT_PICKED_UP_FOCUS_BAND
--- a/maps/FuchsiaBillSpeechHouse.asm
+++ b/maps/FuchsiaBillSpeechHouse.asm
@@ -40,5 +40,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_POKEFAN_F, 7, 6, $9, $0, 255, 255, $80, 0, PokefanFScript_0x1963bd, -1
-	person_event SPRITE_YOUNGSTER, 8, 10, $4, $10, 255, 255, $0, 0, YoungsterScript_0x1963c0, -1
+	person_event SPRITE_POKEFAN_F, 7, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanFScript_0x1963bd, -1
+	person_event SPRITE_YOUNGSTER, 8, 10, UP << 2 | $0, $10, -1, -1, $0, 0, YoungsterScript_0x1963c0, -1
--- a/maps/FuchsiaCity.asm
+++ b/maps/FuchsiaCity.asm
@@ -143,18 +143,18 @@
 
 	; signposts
 	db 8
-	signpost 15, 21, $0, FuchsiaCitySign
-	signpost 29, 5, $0, FuchsiaGymSign
-	signpost 15, 25, $0, SafariZoneOfficeSign
-	signpost 29, 27, $0, WardensHomeSign
-	signpost 5, 17, $0, SafariZoneClosedSign
-	signpost 15, 13, $0, NoLitteringSign
-	signpost 27, 20, $0, FuchsiaCityPokeCenterSign
-	signpost 13, 6, $0, FuchsiaCityMartSign
+	signpost 15, 21, SIGNPOST_READ, FuchsiaCitySign
+	signpost 29, 5, SIGNPOST_READ, FuchsiaGymSign
+	signpost 15, 25, SIGNPOST_READ, SafariZoneOfficeSign
+	signpost 29, 27, SIGNPOST_READ, WardensHomeSign
+	signpost 5, 17, SIGNPOST_READ, SafariZoneClosedSign
+	signpost 15, 13, SIGNPOST_READ, NoLitteringSign
+	signpost 27, 20, SIGNPOST_READ, FuchsiaCityPokeCenterSign
+	signpost 13, 6, SIGNPOST_READ, FuchsiaCityMartSign
 
 	; people-events
 	db 4
-	person_event SPRITE_YOUNGSTER, 22, 27, $2, $11, 255, 255, $a0, 0, YoungsterScript_0x194b22, -1
-	person_event SPRITE_POKEFAN_M, 12, 17, $2, $11, 255, 255, $b0, 0, PokefanMScript_0x194b25, -1
-	person_event SPRITE_TEACHER, 18, 20, $2, $11, 255, 255, $80, 0, TeacherScript_0x194b28, -1
-	person_event SPRITE_FRUIT_TREE, 5, 12, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x194b43, -1
+	person_event SPRITE_YOUNGSTER, 22, 27, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x194b22, -1
+	person_event SPRITE_POKEFAN_M, 12, 17, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x194b25, -1
+	person_event SPRITE_TEACHER, 18, 20, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, TeacherScript_0x194b28, -1
+	person_event SPRITE_FRUIT_TREE, 5, 12, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x194b43, -1
--- a/maps/FuchsiaGym.asm
+++ b/maps/FuchsiaGym.asm
@@ -386,14 +386,14 @@
 
 	; signposts
 	db 2
-	signpost 15, 3, $0, FuchsiaGymStatue
-	signpost 15, 6, $0, FuchsiaGymStatue
+	signpost 15, 3, SIGNPOST_READ, FuchsiaGymStatue
+	signpost 15, 6, SIGNPOST_READ, FuchsiaGymStatue
 
 	; people-events
 	db 6
-	person_event SPRITE_JANINE, 14, 5, $3, $0, 255, 255, $90, 0, JanineScript_0x195db9, -1
-	person_event SPRITE_FUCHSIA_GYM_1, 11, 9, $a, $0, 255, 255, $90, 0, FuschiaGym1Script_0x195e1b, -1
-	person_event SPRITE_FUCHSIA_GYM_2, 15, 9, $a, $0, 255, 255, $90, 0, FuschiaGym2Script_0x195e55, -1
-	person_event SPRITE_FUCHSIA_GYM_3, 8, 13, $a, $0, 255, 255, $90, 0, FuschiaGym3Script_0x195e8f, -1
-	person_event SPRITE_FUCHSIA_GYM_4, 6, 8, $a, $0, 255, 255, $90, 0, FuschiaGym4Script_0x195ec9, -1
-	person_event SPRITE_GYM_GUY, 19, 11, $6, $0, 255, 255, $90, 0, FuchsiaGymGuyScript, -1
+	person_event SPRITE_JANINE, 14, 5, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, JanineScript_0x195db9, -1
+	person_event SPRITE_FUCHSIA_GYM_1, 11, 9, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FuschiaGym1Script_0x195e1b, -1
+	person_event SPRITE_FUCHSIA_GYM_2, 15, 9, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FuschiaGym2Script_0x195e55, -1
+	person_event SPRITE_FUCHSIA_GYM_3, 8, 13, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FuschiaGym3Script_0x195e8f, -1
+	person_event SPRITE_FUCHSIA_GYM_4, 6, 8, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FuschiaGym4Script_0x195ec9, -1
+	person_event SPRITE_GYM_GUY, 19, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FuchsiaGymGuyScript, -1
--- a/maps/FuchsiaMart.asm
+++ b/maps/FuchsiaMart.asm
@@ -49,6 +49,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x195ce8, -1
-	person_event SPRITE_FISHER, 6, 7, $8, $0, 255, 255, $80, 0, FisherScript_0x195cef, -1
-	person_event SPRITE_COOLTRAINER_F, 10, 11, $5, $2, 255, 255, $a0, 0, CooltrainerFScript_0x195cf2, -1
+	person_event SPRITE_CLERK, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x195ce8, -1
+	person_event SPRITE_FISHER, 6, 7, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x195cef, -1
+	person_event SPRITE_COOLTRAINER_F, 10, 11, UP << 2 | $1, $2, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x195cf2, -1
--- a/maps/FuchsiaPokeCenter1F.asm
+++ b/maps/FuchsiaPokeCenter1F.asm
@@ -102,7 +102,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $a0, 0, NurseScript_0x196459, -1
-	person_event SPRITE_COOLTRAINER_M, 8, 12, $5, $1, 255, 255, $0, 0, CooltrainerMScript_0x19645c, -1
-	person_event SPRITE_COOLTRAINER_F, 8, 5, $5, $1, 255, 255, $0, 0, CooltrainerFScript_0x19645f, -1
-	person_event SPRITE_JANINE_IMPERSONATOR, 7, 9, $6, $0, 255, 255, $90, 0, JanineImpersonatorScript_0x196462, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, NurseScript_0x196459, -1
+	person_event SPRITE_COOLTRAINER_M, 8, 12, UP << 2 | $1, $1, -1, -1, $0, 0, CooltrainerMScript_0x19645c, -1
+	person_event SPRITE_COOLTRAINER_F, 8, 5, UP << 2 | $1, $1, -1, -1, $0, 0, CooltrainerFScript_0x19645f, -1
+	person_event SPRITE_JANINE_IMPERSONATOR, 7, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, JanineImpersonatorScript_0x196462, -1
--- a/maps/GoldenrodBikeShop.asm
+++ b/maps/GoldenrodBikeShop.asm
@@ -113,16 +113,16 @@
 
 	; signposts
 	db 9
-	signpost 2, 1, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 3, 0, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 3, 1, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 5, 0, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 5, 1, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 6, 0, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 6, 1, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 6, 6, $0, MapGoldenrodBikeShopSignpost8Script
-	signpost 6, 7, $0, MapGoldenrodBikeShopSignpost8Script
+	signpost 2, 1, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 3, 0, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 3, 1, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 5, 0, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 5, 1, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 6, 0, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 6, 1, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 6, 6, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
+	signpost 6, 7, SIGNPOST_READ, MapGoldenrodBikeShopSignpost8Script
 
 	; people-events
 	db 1
-	person_event SPRITE_CLERK, 6, 11, $8, $0, 255, 255, $80, 0, ClerkScript_0x54750, -1
+	person_event SPRITE_CLERK, 6, 11, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ClerkScript_0x54750, -1
--- a/maps/GoldenrodBillsHouse.asm
+++ b/maps/GoldenrodBillsHouse.asm
@@ -251,12 +251,12 @@
 
 	; signposts
 	db 3
-	signpost 1, 0, $0, BillsHouseBookshelf2
-	signpost 1, 1, $0, BillsHouseBookshelf1
-	signpost 1, 7, $0, BillsHouseRadio
+	signpost 1, 0, SIGNPOST_READ, BillsHouseBookshelf2
+	signpost 1, 1, SIGNPOST_READ, BillsHouseBookshelf1
+	signpost 1, 7, SIGNPOST_READ, BillsHouseRadio
 
 	; people-events
 	db 3
-	person_event SPRITE_BILL, 7, 6, $9, $0, 255, 255, $0, 0, BillsHouseBill, EVENT_MET_BILL
-	person_event SPRITE_POKEFAN_F, 7, 9, $6, $0, 255, 255, $0, 0, BillsMom, -1
-	person_event SPRITE_TWIN, 8, 9, $2, $11, 255, 255, $a0, 0, BillsSister, -1
+	person_event SPRITE_BILL, 7, 6, LEFT << 2 | $1, $0, -1, -1, $0, 0, BillsHouseBill, EVENT_MET_BILL
+	person_event SPRITE_POKEFAN_F, 7, 9, UP << 2 | $2, $0, -1, -1, $0, 0, BillsMom, -1
+	person_event SPRITE_TWIN, 8, 9, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BillsSister, -1
--- a/maps/GoldenrodCity.asm
+++ b/maps/GoldenrodCity.asm
@@ -566,33 +566,33 @@
 
 	; signposts
 	db 12
-	signpost 14, 10, $0, GoldenrodCityStationSign
-	signpost 17, 4, $0, GoldenrodCityRadioTowerSign
-	signpost 27, 26, $0, GoldenrodDeptStoreSign
-	signpost 9, 26, $0, GoldenrodGymSign
-	signpost 18, 22, $0, GoldenrodCitySign
-	signpost 30, 28, $0, GoldenrodCityBikeShopSign
-	signpost 22, 16, $0, GoldenrodCityGameCornerSign
-	signpost 7, 12, $0, GoldenrodCityNameRaterSign
-	signpost 6, 8, $0, GoldenrodCityUndergroundSignNorth
-	signpost 30, 12, $0, GoldenrodCityUndergroundSignSouth
-	signpost 27, 16, $1, GoldenrodCityPokeCenterSign
-	signpost 6, 30, $0, GoldenrodCityFlowerShopSign
+	signpost 14, 10, SIGNPOST_READ, GoldenrodCityStationSign
+	signpost 17, 4, SIGNPOST_READ, GoldenrodCityRadioTowerSign
+	signpost 27, 26, SIGNPOST_READ, GoldenrodDeptStoreSign
+	signpost 9, 26, SIGNPOST_READ, GoldenrodGymSign
+	signpost 18, 22, SIGNPOST_READ, GoldenrodCitySign
+	signpost 30, 28, SIGNPOST_READ, GoldenrodCityBikeShopSign
+	signpost 22, 16, SIGNPOST_READ, GoldenrodCityGameCornerSign
+	signpost 7, 12, SIGNPOST_READ, GoldenrodCityNameRaterSign
+	signpost 6, 8, SIGNPOST_READ, GoldenrodCityUndergroundSignNorth
+	signpost 30, 12, SIGNPOST_READ, GoldenrodCityUndergroundSignSouth
+	signpost 27, 16, SIGNPOST_UP, GoldenrodCityPokeCenterSign
+	signpost 6, 30, SIGNPOST_READ, GoldenrodCityFlowerShopSign
 
 	; people-events
 	db 15
-	person_event SPRITE_POKEFAN_M, 22, 11, $7, $0, 255, 255, $0, 0, PokefanMScript_0x1989e3, EVENT_6CF
-	person_event SPRITE_YOUNGSTER, 21, 34, $2, $11, 255, 255, $0, 0, YoungsterScript_0x1989e6, EVENT_6CF
-	person_event SPRITE_COOLTRAINER_F, 20, 16, $8, $0, 255, 255, $a0, 0, CooltrainerFScript_0x1989e9, EVENT_6CF
-	person_event SPRITE_COOLTRAINER_F, 30, 24, $2, $21, 255, 255, $0, 0, CooltrainerFScript_0x1989fd, EVENT_6CF
-	person_event SPRITE_YOUNGSTER, 21, 23, $2, $11, 255, 255, $80, 0, YoungsterScript_0x198a11, EVENT_6CF
-	person_event SPRITE_LASS, 14, 21, $5, $2, 255, 255, $a0, 0, LassScript_0x198a14, EVENT_6CF
-	person_event SPRITE_GRAMPS, 31, 15, $5, $1, 255, 255, $0, 0, GrampsScript_0x198a17, EVENT_6CF
-	person_event SPRITE_ROCKET, 20, 8, $7, $0, 255, 255, $0, 0, RocketScript_0x198a1a, EVENT_6CC
-	person_event SPRITE_ROCKET, 24, 32, $7, $0, 255, 255, $0, 0, RocketScript_0x198a29, EVENT_6CD
-	person_event SPRITE_ROCKET, 19, 12, $6, $0, 255, 255, $0, 0, RocketScript_0x198a2c, EVENT_6CD
-	person_event SPRITE_ROCKET, 27, 20, $9, $0, 255, 255, $0, 0, RocketScript_0x198a2f, EVENT_6CE
-	person_event SPRITE_ROCKET, 24, 33, $7, $0, 255, 255, $0, 0, RocketScript_0x198a32, EVENT_6CE
-	person_event SPRITE_ROCKET, 11, 33, $6, $0, 255, 255, $0, 0, RocketScript_0x198a35, EVENT_6CE
-	person_event SPRITE_ROCKET, 14, 35, $8, $0, 255, 255, $0, 0, RocketScript_0x198a38, EVENT_6CE
-	person_event SPRITE_POKEFAN_M, 26, 16, $3, $0, 255, 255, $80, 0, MoveTutor, EVENT_76A
+	person_event SPRITE_POKEFAN_M, 22, 11, UP << 2 | $3, $0, -1, -1, $0, 0, PokefanMScript_0x1989e3, EVENT_6CF
+	person_event SPRITE_YOUNGSTER, 21, 34, DOWN << 2 | $2, $11, -1, -1, $0, 0, YoungsterScript_0x1989e6, EVENT_6CF
+	person_event SPRITE_COOLTRAINER_F, 20, 16, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x1989e9, EVENT_6CF
+	person_event SPRITE_COOLTRAINER_F, 30, 24, DOWN << 2 | $2, $21, -1, -1, $0, 0, CooltrainerFScript_0x1989fd, EVENT_6CF
+	person_event SPRITE_YOUNGSTER, 21, 23, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x198a11, EVENT_6CF
+	person_event SPRITE_LASS, 14, 21, UP << 2 | $1, $2, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x198a14, EVENT_6CF
+	person_event SPRITE_GRAMPS, 31, 15, UP << 2 | $1, $1, -1, -1, $0, 0, GrampsScript_0x198a17, EVENT_6CF
+	person_event SPRITE_ROCKET, 20, 8, UP << 2 | $3, $0, -1, -1, $0, 0, RocketScript_0x198a1a, EVENT_6CC
+	person_event SPRITE_ROCKET, 24, 32, UP << 2 | $3, $0, -1, -1, $0, 0, RocketScript_0x198a29, EVENT_6CD
+	person_event SPRITE_ROCKET, 19, 12, UP << 2 | $2, $0, -1, -1, $0, 0, RocketScript_0x198a2c, EVENT_6CD
+	person_event SPRITE_ROCKET, 27, 20, LEFT << 2 | $1, $0, -1, -1, $0, 0, RocketScript_0x198a2f, EVENT_6CE
+	person_event SPRITE_ROCKET, 24, 33, UP << 2 | $3, $0, -1, -1, $0, 0, RocketScript_0x198a32, EVENT_6CE
+	person_event SPRITE_ROCKET, 11, 33, UP << 2 | $2, $0, -1, -1, $0, 0, RocketScript_0x198a35, EVENT_6CE
+	person_event SPRITE_ROCKET, 14, 35, LEFT << 2 | $0, $0, -1, -1, $0, 0, RocketScript_0x198a38, EVENT_6CE
+	person_event SPRITE_POKEFAN_M, 26, 16, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, MoveTutor, EVENT_76A
--- a/maps/GoldenrodDeptStore1F.asm
+++ b/maps/GoldenrodDeptStore1F.asm
@@ -88,12 +88,12 @@
 
 	; signposts
 	db 2
-	signpost 0, 14, $0, GoldenrodDeptStore1FDirectory
-	signpost 0, 3, $0, GoldenrodDeptStore1FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, GoldenrodDeptStore1FDirectory
+	signpost 0, 3, SIGNPOST_READ, GoldenrodDeptStore1FElevatorButton
 
 	; people-events
 	db 4
-	person_event SPRITE_RECEPTIONIST, 5, 14, $6, $0, 255, 255, $0, 0, ReceptionistScript_0x55981, -1
-	person_event SPRITE_POKEFAN_F, 8, 9, $6, $0, 255, 255, $0, 0, PokefanFScript_0x55987, -1
-	person_event SPRITE_BUG_CATCHER, 9, 9, $5, $1, 255, 255, $a0, 0, BugCatcherScript_0x5598a, -1
-	person_event SPRITE_GENTLEMAN, 9, 15, $2, $11, 255, 255, $0, 0, GentlemanScript_0x55984, -1
+	person_event SPRITE_RECEPTIONIST, 5, 14, UP << 2 | $2, $0, -1, -1, $0, 0, ReceptionistScript_0x55981, -1
+	person_event SPRITE_POKEFAN_F, 8, 9, UP << 2 | $2, $0, -1, -1, $0, 0, PokefanFScript_0x55987, -1
+	person_event SPRITE_BUG_CATCHER, 9, 9, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BugCatcherScript_0x5598a, -1
+	person_event SPRITE_GENTLEMAN, 9, 15, DOWN << 2 | $2, $11, -1, -1, $0, 0, GentlemanScript_0x55984, -1
--- a/maps/GoldenrodDeptStore2F.asm
+++ b/maps/GoldenrodDeptStore2F.asm
@@ -108,13 +108,13 @@
 
 	; signposts
 	db 2
-	signpost 0, 14, $0, GoldenrodDeptStore2FDirectory
-	signpost 0, 3, $0, GoldenrodDeptStore2FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, GoldenrodDeptStore2FDirectory
+	signpost 0, 3, SIGNPOST_READ, GoldenrodDeptStore2FElevatorButton
 
 	; people-events
 	db 5
-	person_event SPRITE_CLERK, 9, 17, $7, $0, 255, 255, $0, 0, ClerkScript_0x55b5d, -1
-	person_event SPRITE_CLERK, 10, 17, $8, $0, 255, 255, $0, 0, ClerkScript_0x55b65, -1
-	person_event SPRITE_YOUNGSTER, 10, 13, $4, $10, 255, 255, $0, 0, YoungsterScript_0x55b6d, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 10, $5, $2, 255, 255, $80, 0, CooltrainerFScript_0x55b70, -1
-	person_event SPRITE_GENTLEMAN, 10, 6, $3, $0, 255, 255, $0, 0, GentlemanScript_0x55b73, -1
+	person_event SPRITE_CLERK, 9, 17, UP << 2 | $3, $0, -1, -1, $0, 0, ClerkScript_0x55b5d, -1
+	person_event SPRITE_CLERK, 10, 17, LEFT << 2 | $0, $0, -1, -1, $0, 0, ClerkScript_0x55b65, -1
+	person_event SPRITE_YOUNGSTER, 10, 13, UP << 2 | $0, $10, -1, -1, $0, 0, YoungsterScript_0x55b6d, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 10, UP << 2 | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x55b70, -1
+	person_event SPRITE_GENTLEMAN, 10, 6, DOWN << 2 | $3, $0, -1, -1, $0, 0, GentlemanScript_0x55b73, -1
--- a/maps/GoldenrodDeptStore3F.asm
+++ b/maps/GoldenrodDeptStore3F.asm
@@ -66,11 +66,11 @@
 
 	; signposts
 	db 2
-	signpost 0, 14, $0, GoldenrodDeptStore3FDirectory
-	signpost 0, 3, $0, GoldenrodDeptStore3FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, GoldenrodDeptStore3FDirectory
+	signpost 0, 3, SIGNPOST_READ, GoldenrodDeptStore3FElevatorButton
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 5, 10, $6, $0, 255, 255, $0, 0, ClerkScript_0x55db8, -1
-	person_event SPRITE_SUPER_NERD, 9, 16, $a, $10, 255, 255, $80, 0, SuperNerdScript_0x55dc0, -1
-	person_event SPRITE_ROCKER, 9, 6, $4, $10, 255, 255, $0, 0, RockerScript_0x55dc3, -1
+	person_event SPRITE_CLERK, 5, 10, UP << 2 | $2, $0, -1, -1, $0, 0, ClerkScript_0x55db8, -1
+	person_event SPRITE_SUPER_NERD, 9, 16, LEFT << 2 | $2, $10, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x55dc0, -1
+	person_event SPRITE_ROCKER, 9, 6, UP << 2 | $0, $10, -1, -1, $0, 0, RockerScript_0x55dc3, -1
--- a/maps/GoldenrodDeptStore4F.asm
+++ b/maps/GoldenrodDeptStore4F.asm
@@ -86,12 +86,12 @@
 
 	; signposts
 	db 2
-	signpost 0, 14, $0, GoldenrodDeptStore4FDirectory
-	signpost 0, 3, $0, GoldenrodDeptStore4FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, GoldenrodDeptStore4FDirectory
+	signpost 0, 3, SIGNPOST_READ, GoldenrodDeptStore4FElevatorButton
 
 	; people-events
 	db 4
-	person_event SPRITE_CLERK, 9, 17, $7, $0, 255, 255, $0, 0, ClerkScript_0x55ee9, -1
-	person_event SPRITE_COOLTRAINER_M, 11, 15, $9, $0, 255, 255, $0, 0, CooltrainerMScript_0x55ef1, -1
-	person_event SPRITE_BUG_CATCHER, 6, 11, $5, $1, 255, 255, $0, 0, BugCatcherScript_0x55ef4, -1
-	person_event SPRITE_GAMEBOY_KID, 5, 9, $6, $0, 255, 255, $0, 0, GameboyKidScript_0x55ef7, -1
+	person_event SPRITE_CLERK, 9, 17, UP << 2 | $3, $0, -1, -1, $0, 0, ClerkScript_0x55ee9, -1
+	person_event SPRITE_COOLTRAINER_M, 11, 15, LEFT << 2 | $1, $0, -1, -1, $0, 0, CooltrainerMScript_0x55ef1, -1
+	person_event SPRITE_BUG_CATCHER, 6, 11, UP << 2 | $1, $1, -1, -1, $0, 0, BugCatcherScript_0x55ef4, -1
+	person_event SPRITE_GAMEBOY_KID, 5, 9, UP << 2 | $2, $0, -1, -1, $0, 0, GameboyKidScript_0x55ef7, -1
--- a/maps/GoldenrodDeptStore5F.asm
+++ b/maps/GoldenrodDeptStore5F.asm
@@ -7,15 +7,15 @@
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x56090
+	dbw 2, .CheckIfSunday
 
-UnknownScript_0x56090:
+.CheckIfSunday:
 	checkcode VAR_WEEKDAY
-	if_equal SUNDAY, UnknownScript_0x56099
+	if_equal SUNDAY, .yes
 	disappear $7
 	return
 
-UnknownScript_0x56099:
+.yes:
 	appear $7
 	return
 
@@ -23,32 +23,32 @@
 	faceplayer
 	loadfont
 	checkevent EVENT_GOT_TM02_HEADBUTT
-	iftrue UnknownScript_0x560ad
+	iftrue .headbutt
 	checkevent EVENT_GOT_TM08_ROCK_SMASH
-	iftrue UnknownScript_0x560c2
-	jump UnknownScript_0x560b6
+	iftrue .onlyrocksmash
+	jump .neither
 
-UnknownScript_0x560ad:
+.headbutt:
 	checkevent EVENT_GOT_TM08_ROCK_SMASH
-	iftrue UnknownScript_0x560c8
-	jump UnknownScript_0x560bc
+	iftrue .both
+	jump .onlyheadbutt
 
-UnknownScript_0x560b6:
+.neither:
 	pokemart $0, $0009
 	loadmovesprites
 	end
 
-UnknownScript_0x560bc:
+.onlyheadbutt:
 	pokemart $0, $000a
 	loadmovesprites
 	end
 
-UnknownScript_0x560c2:
+.onlyrocksmash:
 	pokemart $0, $000b
 	loadmovesprites
 	end
 
-UnknownScript_0x560c8:
+.both:
 	pokemart $0, $000c
 	loadmovesprites
 	end
@@ -57,44 +57,44 @@
 	faceplayer
 	loadfont
 	checkcode VAR_WEEKDAY
-	if_not_equal SUNDAY, UnknownScript_0x56112
+	if_not_equal SUNDAY, .EventIsOver
 	checkflag ENGINE_GOLDENROD_MALL_5F_HAPPINESS_EVENT
-	iftrue UnknownScript_0x56112
+	iftrue .EventIsOver
 	special GetFirstPokemonHappiness
 	writetext UnknownText_0x56143
 	keeptextopen
-	if_greater_than $95, UnknownScript_0x560ee
-	if_greater_than $31, UnknownScript_0x560fd
-	jump UnknownScript_0x56103
+	if_greater_than $95, .VeryHappy
+	if_greater_than $31, .SomewhatHappy
+	jump .NotVeryHappy
 
-UnknownScript_0x560ee:
+.VeryHappy:
 	writetext UnknownText_0x5615a
 	keeptextopen
 	verbosegiveitem TM_RETURN, 1
-	iffalse UnknownScript_0x56116
+	iffalse .Done
 	setflag ENGINE_GOLDENROD_MALL_5F_HAPPINESS_EVENT
 	loadmovesprites
 	end
 
-UnknownScript_0x560fd:
+.SomewhatHappy:
 	writetext UnknownText_0x561a6
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x56103:
+.NotVeryHappy:
 	writetext UnknownText_0x561d8
 	keeptextopen
 	verbosegiveitem TM_FRUSTRATION, 1
-	iffalse UnknownScript_0x56116
+	iffalse .Done
 	setflag ENGINE_GOLDENROD_MALL_5F_HAPPINESS_EVENT
 	loadmovesprites
 	end
 
-UnknownScript_0x56112:
+.EventIsOver:
 	writetext UnknownText_0x56202
 	closetext
-UnknownScript_0x56116:
+.Done:
 	loadmovesprites
 	end
 
@@ -102,14 +102,14 @@
 	faceplayer
 	loadfont
 	special SpecialGameboyCheck
-	if_not_equal $2, UnknownScript_0x5612a
+	if_not_equal $2, .NotGBC ; This is a dummy check from Gold and Silver.  In normal gameplay, this would not be checked.
 	writetext UnknownText_0x56241
 	closetext
 	loadmovesprites
-	special Function1050b9
+	special Special_UnlockMysteryGift
 	end
 
-UnknownScript_0x5612a:
+.NotGBC:
 	writetext UnknownText_0x56279
 	closetext
 	loadmovesprites
@@ -227,14 +227,14 @@
 
 	; signposts
 	db 2
-	signpost 0, 14, $0, GoldenrodDeptStore5FDirectory
-	signpost 0, 3, $0, GoldenrodDeptStore5FElevatorButton
+	signpost 0, 14, SIGNPOST_READ, GoldenrodDeptStore5FDirectory
+	signpost 0, 3, SIGNPOST_READ, GoldenrodDeptStore5FElevatorButton
 
 	; people-events
 	db 6
-	person_event SPRITE_CLERK, 9, 12, $7, $0, 255, 255, $0, 0, ClerkScript_0x5609c, -1
-	person_event SPRITE_LASS, 10, 7, $2, $11, 255, 255, $0, 0, LassScript_0x56130, -1
-	person_event SPRITE_COOLTRAINER_M, 7, 10, $3, $0, 255, 255, $0, 0, CooltrainerMScript_0x56133, -1
-	person_event SPRITE_POKEFAN_M, 9, 17, $2, $22, 255, 255, $0, 0, PokefanMScript_0x5613a, -1
-	person_event SPRITE_TWIN, 5, 13, $6, $0, 255, 255, $a0, 0, TwinScript_0x56118, -1
-	person_event SPRITE_RECEPTIONIST, 9, 11, $7, $0, 255, 255, $80, 0, ReceptionistScript_0x560ce, EVENT_763
+	person_event SPRITE_CLERK, 9, 12, UP << 2 | $3, $0, -1, -1, $0, 0, ClerkScript_0x5609c, -1
+	person_event SPRITE_LASS, 10, 7, DOWN << 2 | $2, $11, -1, -1, $0, 0, LassScript_0x56130, -1
+	person_event SPRITE_COOLTRAINER_M, 7, 10, DOWN << 2 | $3, $0, -1, -1, $0, 0, CooltrainerMScript_0x56133, -1
+	person_event SPRITE_POKEFAN_M, 9, 17, DOWN << 2 | $2, $22, -1, -1, $0, 0, PokefanMScript_0x5613a, -1
+	person_event SPRITE_TWIN, 5, 13, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TwinScript_0x56118, -1
+	person_event SPRITE_RECEPTIONIST, 9, 11, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ReceptionistScript_0x560ce, EVENT_763
--- a/maps/GoldenrodDeptStore6F.asm
+++ b/maps/GoldenrodDeptStore6F.asm
@@ -160,14 +160,14 @@
 
 	; signposts
 	db 6
-	signpost 0, 14, $0, GoldenrodDeptStore6FDirectory
-	signpost 0, 3, $0, GoldenrodDeptStore6FElevatorButton
-	signpost 1, 8, $1, GoldenrodVendingMachine
-	signpost 1, 9, $1, GoldenrodVendingMachine
-	signpost 1, 10, $1, GoldenrodVendingMachine
-	signpost 1, 11, $1, GoldenrodVendingMachine
+	signpost 0, 14, SIGNPOST_READ, GoldenrodDeptStore6FDirectory
+	signpost 0, 3, SIGNPOST_READ, GoldenrodDeptStore6FElevatorButton
+	signpost 1, 8, SIGNPOST_UP, GoldenrodVendingMachine
+	signpost 1, 9, SIGNPOST_UP, GoldenrodVendingMachine
+	signpost 1, 10, SIGNPOST_UP, GoldenrodVendingMachine
+	signpost 1, 11, SIGNPOST_UP, GoldenrodVendingMachine
 
 	; people-events
 	db 2
-	person_event SPRITE_LASS, 6, 14, $5, $1, 255, 255, $a0, 0, LassScript_0x564bf, -1
-	person_event SPRITE_SUPER_NERD, 6, 12, $7, $0, 255, 255, $80, 0, SuperNerdScript_0x564c2, -1
+	person_event SPRITE_LASS, 6, 14, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x564bf, -1
+	person_event SPRITE_SUPER_NERD, 6, 12, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x564c2, -1
--- a/maps/GoldenrodDeptStoreB1F.asm
+++ b/maps/GoldenrodDeptStoreB1F.asm
@@ -121,11 +121,11 @@
 
 	; people-events
 	db 8
-	person_event SPRITE_POKE_BALL, 19, 14, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d7c3, EVENT_675
-	person_event SPRITE_POKE_BALL, 6, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d7c5, EVENT_676
-	person_event SPRITE_POKE_BALL, 7, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d7c7, EVENT_677
-	person_event SPRITE_POKE_BALL, 19, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d7c9, EVENT_678
-	person_event SPRITE_BLACK_BELT, 14, 13, $4, $10, 255, 255, $a0, 0, BlackBeltScript_0x7d7b0, -1
-	person_event SPRITE_BLACK_BELT, 12, 8, $3, $0, 255, 255, $80, 0, BlackBeltScript_0x7d7b3, -1
-	person_event SPRITE_BLACK_BELT, 17, 10, $5, $1, 255, 255, $90, 0, BlackBeltScript_0x7d7b6, -1
-	person_event SPRITE_MACHOP, 11, 11, $16, $0, 255, 255, $90, 0, MachopScript_0x7d7b9, -1
+	person_event SPRITE_POKE_BALL, 19, 14, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d7c3, EVENT_675
+	person_event SPRITE_POKE_BALL, 6, 18, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d7c5, EVENT_676
+	person_event SPRITE_POKE_BALL, 7, 10, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d7c7, EVENT_677
+	person_event SPRITE_POKE_BALL, 19, 19, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d7c9, EVENT_678
+	person_event SPRITE_BLACK_BELT, 14, 13, UP << 2 | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BlackBeltScript_0x7d7b0, -1
+	person_event SPRITE_BLACK_BELT, 12, 8, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, BlackBeltScript_0x7d7b3, -1
+	person_event SPRITE_BLACK_BELT, 17, 10, UP << 2 | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, BlackBeltScript_0x7d7b6, -1
+	person_event SPRITE_MACHOP, 11, 11, UP << 2 | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, MachopScript_0x7d7b9, -1
--- a/maps/GoldenrodDeptStoreElevator.asm
+++ b/maps/GoldenrodDeptStoreElevator.asm
@@ -70,7 +70,7 @@
 
 	; signposts
 	db 1
-	signpost 0, 3, $0, MapGoldenrodDeptStoreElevatorSignpost0Script
+	signpost 0, 3, SIGNPOST_READ, MapGoldenrodDeptStoreElevatorSignpost0Script
 
 	; people-events
 	db 0
--- a/maps/GoldenrodDeptStoreRoof.asm
+++ b/maps/GoldenrodDeptStoreRoof.asm
@@ -218,18 +218,18 @@
 
 	; signposts
 	db 4
-	signpost 3, 15, $3, MapGoldenrodDeptStoreRoofSignpost0Script
-	signpost 5, 15, $3, MapGoldenrodDeptStoreRoofSignpost1Script
-	signpost 6, 15, $3, MapGoldenrodDeptStoreRoofSignpost2Script
-	signpost 0, 3, $1, MapGoldenrodDeptStoreRoofSignpost3Script
+	signpost 3, 15, SIGNPOST_RIGHT, MapGoldenrodDeptStoreRoofSignpost0Script
+	signpost 5, 15, SIGNPOST_RIGHT, MapGoldenrodDeptStoreRoofSignpost1Script
+	signpost 6, 15, SIGNPOST_RIGHT, MapGoldenrodDeptStoreRoofSignpost2Script
+	signpost 0, 3, SIGNPOST_UP, MapGoldenrodDeptStoreRoofSignpost3Script
 
 	; people-events
 	db 8
-	person_event SPRITE_CLERK, 8, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x5673f, EVENT_6F0
-	person_event SPRITE_POKEFAN_F, 7, 14, $5, $1, 255, 255, $80, 0, PokefanFScript_0x56746, -1
-	person_event SPRITE_FISHER, 5, 6, $7, $0, 255, 255, $90, 0, FisherScript_0x56749, -1
-	person_event SPRITE_TWIN, 8, 7, $2, $11, 255, 255, $a0, 0, TwinScript_0x56754, EVENT_6F1
-	person_event SPRITE_SUPER_NERD, 10, 18, $9, $0, 255, 255, $a0, 0, SuperNerdScript_0x56757, EVENT_6F1
-	person_event SPRITE_POKEFAN_M, 4, 11, $5, $1, 255, 255, $0, 0, PokefanMScript_0x5676a, EVENT_6F0
-	person_event SPRITE_TEACHER, 7, 9, $2, $11, 255, 255, $a0, 0, TeacherScript_0x5676d, EVENT_6F0
-	person_event SPRITE_BUG_CATCHER, 10, 5, $7, $0, 255, 255, $80, 0, BugCatcherScript_0x56770, EVENT_6F0
+	person_event SPRITE_CLERK, 8, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x5673f, EVENT_6F0
+	person_event SPRITE_POKEFAN_F, 7, 14, UP << 2 | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanFScript_0x56746, -1
+	person_event SPRITE_FISHER, 5, 6, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FisherScript_0x56749, -1
+	person_event SPRITE_TWIN, 8, 7, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TwinScript_0x56754, EVENT_6F1
+	person_event SPRITE_SUPER_NERD, 10, 18, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x56757, EVENT_6F1
+	person_event SPRITE_POKEFAN_M, 4, 11, UP << 2 | $1, $1, -1, -1, $0, 0, PokefanMScript_0x5676a, EVENT_6F0
+	person_event SPRITE_TEACHER, 7, 9, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x5676d, EVENT_6F0
+	person_event SPRITE_BUG_CATCHER, 10, 5, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, BugCatcherScript_0x56770, EVENT_6F0
--- a/maps/GoldenrodFlowerShop.asm
+++ b/maps/GoldenrodFlowerShop.asm
@@ -172,5 +172,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_TEACHER, 8, 6, $9, $0, 255, 255, $0, 0, TeacherScript_0x5535d, -1
-	person_event SPRITE_LASS, 10, 9, $2, $11, 255, 255, $90, 0, LassScript_0x553a2, EVENT_768
+	person_event SPRITE_TEACHER, 8, 6, LEFT << 2 | $1, $0, -1, -1, $0, 0, TeacherScript_0x5535d, -1
+	person_event SPRITE_LASS, 10, 9, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x553a2, EVENT_768
--- a/maps/GoldenrodGameCorner.asm
+++ b/maps/GoldenrodGameCorner.asm
@@ -445,49 +445,49 @@
 
 	; signposts
 	db 31
-	signpost 6, 6, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 7, 6, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 8, 6, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 9, 6, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 10, 6, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 11, 6, $3, MapGoldenrodGameCornerSignpost17Script
-	signpost 6, 7, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 7, 7, $0, MapGoldenrodGameCornerSignpost7Script
-	signpost 8, 7, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 9, 7, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 10, 7, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 11, 7, $4, MapGoldenrodGameCornerSignpost17Script
-	signpost 6, 12, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 7, 12, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 8, 12, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 9, 12, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 10, 12, $0, MapGoldenrodGameCornerSignpost17Script
-	signpost 11, 12, $3, MapGoldenrodGameCornerSignpost17Script
-	signpost 6, 13, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 7, 13, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 8, 13, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 9, 13, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 10, 13, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 11, 13, $4, MapGoldenrodGameCornerSignpost29Script
-	signpost 6, 18, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 7, 18, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 8, 18, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 9, 18, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 10, 18, $0, MapGoldenrodGameCornerSignpost29Script
-	signpost 11, 18, $3, MapGoldenrodGameCornerSignpost29Script
-	signpost 1, 12, $4, MapGoldenrodGameCornerSignpost30Script
+	signpost 6, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 7, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 8, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 9, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 10, 6, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 11, 6, SIGNPOST_RIGHT, MapGoldenrodGameCornerSignpost17Script
+	signpost 6, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 7, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost7Script
+	signpost 8, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 9, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 10, 7, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 11, 7, SIGNPOST_LEFT, MapGoldenrodGameCornerSignpost17Script
+	signpost 6, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 7, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 8, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 9, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 10, 12, SIGNPOST_READ, MapGoldenrodGameCornerSignpost17Script
+	signpost 11, 12, SIGNPOST_RIGHT, MapGoldenrodGameCornerSignpost17Script
+	signpost 6, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 7, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 8, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 9, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 10, 13, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 11, 13, SIGNPOST_LEFT, MapGoldenrodGameCornerSignpost29Script
+	signpost 6, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 7, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 8, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 9, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 10, 18, SIGNPOST_READ, MapGoldenrodGameCornerSignpost29Script
+	signpost 11, 18, SIGNPOST_RIGHT, MapGoldenrodGameCornerSignpost29Script
+	signpost 1, 12, SIGNPOST_LEFT, MapGoldenrodGameCornerSignpost30Script
 
 	; people-events
 	db 12
-	person_event SPRITE_CLERK, 6, 7, $6, $0, 255, 255, $80, 0, ClerkScript_0x56c25, -1
-	person_event SPRITE_RECEPTIONIST, 6, 20, $6, $0, 255, 255, $80, 0, ReceptionistScript_0x56c28, -1
-	person_event SPRITE_RECEPTIONIST, 6, 22, $6, $0, 255, 255, $80, 0, ReceptionistScript_0x56d01, -1
-	person_event SPRITE_PHARMACIST, 11, 12, $8, $0, 255, 2, $90, 0, PharmacistScript_0x56df1, -1
-	person_event SPRITE_PHARMACIST, 11, 12, $8, $0, 255, 4, $90, 0, PharmacistScript_0x56df1, -1
-	person_event SPRITE_POKEFAN_M, 14, 15, $9, $0, 255, 255, $b0, 0, PokefanMScript_0x56dfc, -1
-	person_event SPRITE_COOLTRAINER_M, 12, 18, $8, $0, 255, 255, $90, 0, CooltrainerMScript_0x56e07, -1
-	person_event SPRITE_POKEFAN_F, 10, 21, $9, $0, 255, 255, $80, 0, PokefanFScript_0x56e12, -1
-	person_event SPRITE_COOLTRAINER_F, 7, 14, $2, $12, 255, 255, $a0, 0, CooltrainerFScript_0x56e1d, -1
-	person_event SPRITE_GENTLEMAN, 14, 9, $9, $0, 255, 255, $90, 0, GentlemanScript_0x56e20, -1
-	person_event SPRITE_POKEFAN_M, 13, 6, $2, $11, 255, 255, $b0, 0, PokefanMScript_0x56e2b, -1
-	person_event SPRITE_POKEFAN_M, 14, 21, $9, $0, 255, 255, $80, 0, PokefanMScript_0x56c1a, EVENT_76B
+	person_event SPRITE_CLERK, 6, 7, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ClerkScript_0x56c25, -1
+	person_event SPRITE_RECEPTIONIST, 6, 20, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ReceptionistScript_0x56c28, -1
+	person_event SPRITE_RECEPTIONIST, 6, 22, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ReceptionistScript_0x56d01, -1
+	person_event SPRITE_PHARMACIST, 11, 12, LEFT << 2 | $0, $0, -1, 2, (PAL_OW_BLUE << 4) | $80, 0, PharmacistScript_0x56df1, -1
+	person_event SPRITE_PHARMACIST, 11, 12, LEFT << 2 | $0, $0, -1, 4, (PAL_OW_BLUE << 4) | $80, 0, PharmacistScript_0x56df1, -1
+	person_event SPRITE_POKEFAN_M, 14, 15, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x56dfc, -1
+	person_event SPRITE_COOLTRAINER_M, 12, 18, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CooltrainerMScript_0x56e07, -1
+	person_event SPRITE_POKEFAN_F, 10, 21, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanFScript_0x56e12, -1
+	person_event SPRITE_COOLTRAINER_F, 7, 14, DOWN << 2 | $2, $12, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x56e1d, -1
+	person_event SPRITE_GENTLEMAN, 14, 9, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GentlemanScript_0x56e20, -1
+	person_event SPRITE_POKEFAN_M, 13, 6, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x56e2b, -1
+	person_event SPRITE_POKEFAN_M, 14, 21, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x56c1a, EVENT_76B
--- a/maps/GoldenrodGym.asm
+++ b/maps/GoldenrodGym.asm
@@ -452,14 +452,14 @@
 
 	; signposts
 	db 2
-	signpost 15, 1, $0, GoldenrodGymStatue
-	signpost 15, 4, $0, GoldenrodGymStatue
+	signpost 15, 1, SIGNPOST_READ, GoldenrodGymStatue
+	signpost 15, 4, SIGNPOST_READ, GoldenrodGymStatue
 
 	; people-events
 	db 6
-	person_event SPRITE_WHITNEY, 7, 12, $6, $0, 255, 255, $80, 0, WhitneyScript_0x5400c, -1
-	person_event SPRITE_LASS, 17, 13, $9, $0, 255, 255, $92, 4, TrainerLassCarrie, -1
-	person_event SPRITE_LASS, 10, 13, $8, $0, 255, 255, $92, 1, TrainerLassBridget, -1
-	person_event SPRITE_BUENA, 6, 4, $6, $0, 255, 255, $92, 3, TrainerBeautyVictoria, -1
-	person_event SPRITE_BUENA, 9, 23, $6, $0, 255, 255, $92, 3, TrainerBeautySamantha, -1
-	person_event SPRITE_GYM_GUY, 19, 9, $6, $0, 255, 255, $80, 0, GoldenrodGymGuyScript, -1
+	person_event SPRITE_WHITNEY, 7, 12, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, WhitneyScript_0x5400c, -1
+	person_event SPRITE_LASS, 17, 13, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerLassCarrie, -1
+	person_event SPRITE_LASS, 10, 13, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerLassBridget, -1
+	person_event SPRITE_BUENA, 6, 4, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBeautyVictoria, -1
+	person_event SPRITE_BUENA, 9, 23, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBeautySamantha, -1
+	person_event SPRITE_GYM_GUY, 19, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GoldenrodGymGuyScript, -1
--- a/maps/GoldenrodHappinessRater.asm
+++ b/maps/GoldenrodHappinessRater.asm
@@ -145,12 +145,12 @@
 
 	; signposts
 	db 3
-	signpost 1, 0, $0, HappinessRatersHouseBookshelf
-	signpost 1, 1, $0, HappinessRatersHouseBookshelf
-	signpost 1, 7, $0, HappinessRatersHouseRadio
+	signpost 1, 0, SIGNPOST_READ, HappinessRatersHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, HappinessRatersHouseBookshelf
+	signpost 1, 7, SIGNPOST_READ, HappinessRatersHouseRadio
 
 	; people-events
 	db 3
-	person_event SPRITE_TEACHER, 8, 6, $6, $0, 255, 255, $90, 0, TeacherScript_0x54953, -1
-	person_event SPRITE_POKEFAN_M, 7, 9, $8, $0, 255, 255, $0, 0, PokefanMScript_0x54997, -1
-	person_event SPRITE_TWIN, 10, 9, $5, $1, 255, 255, $a0, 0, TwinScript_0x5499a, -1
+	person_event SPRITE_TEACHER, 8, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x54953, -1
+	person_event SPRITE_POKEFAN_M, 7, 9, LEFT << 2 | $0, $0, -1, -1, $0, 0, PokefanMScript_0x54997, -1
+	person_event SPRITE_TWIN, 10, 9, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TwinScript_0x5499a, -1
--- a/maps/GoldenrodMagnetTrainStation.asm
+++ b/maps/GoldenrodMagnetTrainStation.asm
@@ -182,5 +182,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_OFFICER, 13, 13, $6, $0, 255, 255, $0, 0, OfficerScript_0x550ec, -1
-	person_event SPRITE_GENTLEMAN, 18, 15, $2, $22, 255, 255, $0, 0, GentlemanScript_0x55143, EVENT_749
+	person_event SPRITE_OFFICER, 13, 13, UP << 2 | $2, $0, -1, -1, $0, 0, OfficerScript_0x550ec, -1
+	person_event SPRITE_GENTLEMAN, 18, 15, DOWN << 2 | $2, $22, -1, -1, $0, 0, GentlemanScript_0x55143, EVENT_749
--- a/maps/GoldenrodNameRatersHouse.asm
+++ b/maps/GoldenrodNameRatersHouse.asm
@@ -35,10 +35,10 @@
 
 	; signposts
 	db 3
-	signpost 1, 0, $0, GoldenrodNameRatersHouseBookshelf
-	signpost 1, 1, $0, GoldenrodNameRatersHouseBookshelf
-	signpost 1, 7, $0, GoldenrodNameRatersHouseRadio
+	signpost 1, 0, SIGNPOST_READ, GoldenrodNameRatersHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, GoldenrodNameRatersHouseBookshelf
+	signpost 1, 7, SIGNPOST_READ, GoldenrodNameRatersHouseRadio
 
 	; people-events
 	db 1
-	person_event SPRITE_GENTLEMAN, 8, 6, $6, $2, 255, 255, $0, 0, GentlemanScript_0x5577c, -1
+	person_event SPRITE_GENTLEMAN, 8, 6, UP << 2 | $2, $2, -1, -1, $0, 0, GentlemanScript_0x5577c, -1
--- a/maps/GoldenrodPPSpeechHouse.asm
+++ b/maps/GoldenrodPPSpeechHouse.asm
@@ -61,11 +61,11 @@
 
 	; signposts
 	db 3
-	signpost 1, 0, $0, GoldenrodPPSpeechHouseBookshelf1
-	signpost 1, 1, $0, GoldenrodPPSpeechHouseBookshelf2
-	signpost 1, 7, $0, GoldenrodPPSpeechHouseRadio
+	signpost 1, 0, SIGNPOST_READ, GoldenrodPPSpeechHouseBookshelf1
+	signpost 1, 1, SIGNPOST_READ, GoldenrodPPSpeechHouseBookshelf2
+	signpost 1, 7, SIGNPOST_READ, GoldenrodPPSpeechHouseRadio
 
 	; people-events
 	db 2
-	person_event SPRITE_FISHER, 8, 6, $4, $10, 255, 255, $a0, 0, FisherScript_0x5564a, -1
-	person_event SPRITE_LASS, 7, 9, $8, $10, 255, 255, $0, 0, LassScript_0x5564d, -1
+	person_event SPRITE_FISHER, 8, 6, UP << 2 | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x5564a, -1
+	person_event SPRITE_LASS, 7, 9, LEFT << 2 | $0, $10, -1, -1, $0, 0, LassScript_0x5564d, -1
--- a/maps/GoldenrodPokeCenter1F.asm
+++ b/maps/GoldenrodPokeCenter1F.asm
@@ -818,8 +818,8 @@
 
 	; people-events
 	db 5
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x60f91, -1
-	person_event SPRITE_LINK_RECEPTIONIST, 12, 20, $6, $0, 255, 255, $90, 0, ObjectEvent, -1
-	person_event SPRITE_GAMEBOY_KID, 5, 10, $6, $0, 255, 255, $a0, 0, GameboyKidScript_0x6101e, -1
-	person_event SPRITE_LASS, 8, 5, $5, $1, 255, 255, $0, 0, LassScript_0x61021, -1
-	person_event SPRITE_POKEFAN_F, 9, 11, $6, $0, 255, 255, $b0, 0, PokefanFScript_0x61024, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x60f91, -1
+	person_event SPRITE_LINK_RECEPTIONIST, 12, 20, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, -1
+	person_event SPRITE_GAMEBOY_KID, 5, 10, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GameboyKidScript_0x6101e, -1
+	person_event SPRITE_LASS, 8, 5, UP << 2 | $1, $1, -1, -1, $0, 0, LassScript_0x61021, -1
+	person_event SPRITE_POKEFAN_F, 9, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanFScript_0x61024, -1
--- a/maps/GoldenrodPokeComCenter2FMobile.asm
+++ b/maps/GoldenrodPokeComCenter2FMobile.asm
@@ -99,8 +99,8 @@
 MenuData2_0x62654:
 	db $80 ; flags
 	db 3 ; items
-	db "でんわ",$1f,"つかうとき@" ; Use phone
-	db "でんわ",$4a,"つながらないとき@" ; Don't use phone
+	db "でんわ", $1f,"つかうとき@" ; Use phone
+	db "でんわ", $4a,"つながらないとき@" ; Don't use phone
 	db "やめる@" ; QUIT
 
 
@@ -277,12 +277,12 @@
 
 	; signposts
 	db 3
-	signpost 26, 6, $1, MapGoldenrodPokeComCenter2FMobileSignpost0Script
-	signpost 28, 6, $1, MapGoldenrodPokeComCenter2FMobileSignpost1Script
-	signpost 26, 3, $1, MapGoldenrodPokeComCenter2FMobileSignpost2Script
+	signpost 26, 6, SIGNPOST_UP, MapGoldenrodPokeComCenter2FMobileSignpost0Script
+	signpost 28, 6, SIGNPOST_UP, MapGoldenrodPokeComCenter2FMobileSignpost1Script
+	signpost 26, 3, SIGNPOST_UP, MapGoldenrodPokeComCenter2FMobileSignpost2Script
 
 	; people-events
 	db 3
-	person_event SPRITE_SCIENTIST, 32, 8, $4, $10, 255, 255, $80, 0, ScientistScript_0x625d1, -1
-	person_event SPRITE_SCIENTIST, 31, 11, $7, $0, 255, 255, $90, 0, ScientistScript_0x625d4, -1
-	person_event SPRITE_SCIENTIST, 33, 11, $7, $0, 255, 255, $a0, 0, ScientistScript_0x625d7, -1
+	person_event SPRITE_SCIENTIST, 32, 8, UP << 2 | $0, $10, -1, -1, (PAL_OW_RED << 4) | $80, 0, ScientistScript_0x625d1, -1
+	person_event SPRITE_SCIENTIST, 31, 11, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x625d4, -1
+	person_event SPRITE_SCIENTIST, 33, 11, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ScientistScript_0x625d7, -1
--- a/maps/GuideGentsHouse.asm
+++ b/maps/GuideGentsHouse.asm
@@ -38,9 +38,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, GuideGentsHouseBookshelf
-	signpost 1, 1, $0, GuideGentsHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, GuideGentsHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, GuideGentsHouseBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_GRAMPS, 7, 6, $9, $0, 255, 255, $0, 0, GuideGentsHouseGuideGent, EVENT_GUIDE_GENT_VISIBLE_IN_CHERRYGROVE
+	person_event SPRITE_GRAMPS, 7, 6, LEFT << 2 | $1, $0, -1, -1, $0, 0, GuideGentsHouseGuideGent, EVENT_GUIDE_GENT_VISIBLE_IN_CHERRYGROVE
--- a/maps/IcePath1F.asm
+++ b/maps/IcePath1F.asm
@@ -33,6 +33,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_POKE_BALL, 11, 35, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e472, EVENT_688
-	person_event SPRITE_POKE_BALL, 27, 36, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e474, EVENT_689
-	person_event SPRITE_POKE_BALL, 13, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e476, EVENT_7BE
+	person_event SPRITE_POKE_BALL, 11, 35, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e472, EVENT_688
+	person_event SPRITE_POKE_BALL, 27, 36, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e474, EVENT_689
+	person_event SPRITE_POKE_BALL, 13, 39, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e476, EVENT_7BE
--- a/maps/IcePathB1F.asm
+++ b/maps/IcePathB1F.asm
@@ -104,12 +104,12 @@
 
 	; signposts
 	db 1
-	signpost 30, 17, $7, MapIcePathB1FSignpostItem0
+	signpost 30, 17, SIGNPOST_ITEMIFSET, MapIcePathB1FSignpostItem0
 
 	; people-events
 	db 5
-	person_event SPRITE_BOULDER, 11, 15, $19, $0, 255, 255, $0, 0, IcePathB1FBoulder, EVENT_709
-	person_event SPRITE_BOULDER, 12, 11, $19, $0, 255, 255, $0, 0, IcePathB1FBoulder, EVENT_70A
-	person_event SPRITE_BOULDER, 13, 12, $19, $0, 255, 255, $0, 0, IcePathB1FBoulder, EVENT_70B
-	person_event SPRITE_BOULDER, 11, 21, $19, $0, 255, 255, $0, 0, IcePathB1FBoulder, EVENT_70C
-	person_event SPRITE_POKE_BALL, 39, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e50d, EVENT_68A
+	person_event SPRITE_BOULDER, 11, 15, LEFT << 2 | $11, $0, -1, -1, $0, 0, IcePathB1FBoulder, EVENT_709
+	person_event SPRITE_BOULDER, 12, 11, LEFT << 2 | $11, $0, -1, -1, $0, 0, IcePathB1FBoulder, EVENT_70A
+	person_event SPRITE_BOULDER, 13, 12, LEFT << 2 | $11, $0, -1, -1, $0, 0, IcePathB1FBoulder, EVENT_70B
+	person_event SPRITE_BOULDER, 11, 21, LEFT << 2 | $11, $0, -1, -1, $0, 0, IcePathB1FBoulder, EVENT_70C
+	person_event SPRITE_POKE_BALL, 39, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e50d, EVENT_68A
--- a/maps/IcePathB2FBlackthornSide.asm
+++ b/maps/IcePathB2FBlackthornSide.asm
@@ -27,8 +27,8 @@
 
 	; signposts
 	db 1
-	signpost 10, 2, $7, MapIcePathB2FBlackthornSideSignpostItem0
+	signpost 10, 2, SIGNPOST_ITEMIFSET, MapIcePathB2FBlackthornSideSignpostItem0
 
 	; people-events
 	db 1
-	person_event SPRITE_POKE_BALL, 20, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e646, EVENT_68D
+	person_event SPRITE_POKE_BALL, 20, 12, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e646, EVENT_68D
--- a/maps/IcePathB2FMahoganySide.asm
+++ b/maps/IcePathB2FMahoganySide.asm
@@ -42,13 +42,13 @@
 
 	; signposts
 	db 1
-	signpost 17, 0, $7, MapIcePathB2FMahoganySideSignpostItem0
+	signpost 17, 0, SIGNPOST_ITEMIFSET, MapIcePathB2FMahoganySideSignpostItem0
 
 	; people-events
 	db 6
-	person_event SPRITE_BOULDER, 7, 15, $1, $0, 255, 255, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_1
-	person_event SPRITE_BOULDER, 11, 8, $1, $0, 255, 255, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_2
-	person_event SPRITE_BOULDER, 16, 7, $1, $0, 255, 255, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_3
-	person_event SPRITE_BOULDER, 17, 16, $1, $0, 255, 255, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_4
-	person_event SPRITE_POKE_BALL, 13, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e5a6, EVENT_68B
-	person_event SPRITE_POKE_BALL, 6, 4, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e5a8, EVENT_68C
+	person_event SPRITE_BOULDER, 7, 15, DOWN << 2 | $1, $0, -1, -1, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_1
+	person_event SPRITE_BOULDER, 11, 8, DOWN << 2 | $1, $0, -1, -1, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_2
+	person_event SPRITE_BOULDER, 16, 7, DOWN << 2 | $1, $0, -1, -1, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_3
+	person_event SPRITE_BOULDER, 17, 16, DOWN << 2 | $1, $0, -1, -1, $0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_4
+	person_event SPRITE_POKE_BALL, 13, 12, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e5a6, EVENT_68B
+	person_event SPRITE_POKE_BALL, 6, 4, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e5a8, EVENT_68C
--- a/maps/IcePathB3F.asm
+++ b/maps/IcePathB3F.asm
@@ -28,5 +28,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_POKE_BALL, 11, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e66f, EVENT_68E
-	person_event SPRITE_ROCK, 10, 10, $18, $0, 255, 255, $0, 0, IcePathB3FRock, -1
+	person_event SPRITE_POKE_BALL, 11, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e66f, EVENT_68E
+	person_event SPRITE_ROCK, 10, 10, LEFT << 2 | $10, $0, -1, -1, $0, 0, IcePathB3FRock, -1
--- a/maps/IlexForest.asm
+++ b/maps/IlexForest.asm
@@ -961,22 +961,22 @@
 
 	; signposts
 	db 5
-	signpost 17, 3, $0, MapIlexForestSignpost0Script
-	signpost 7, 11, $7, MapIlexForestSignpostItem1
-	signpost 14, 22, $7, MapIlexForestSignpostItem2
-	signpost 17, 1, $7, MapIlexForestSignpostItem3
-	signpost 22, 8, $1, MapIlexForestSignpost4Script
+	signpost 17, 3, SIGNPOST_READ, MapIlexForestSignpost0Script
+	signpost 7, 11, SIGNPOST_ITEMIFSET, MapIlexForestSignpostItem1
+	signpost 14, 22, SIGNPOST_ITEMIFSET, MapIlexForestSignpostItem2
+	signpost 17, 1, SIGNPOST_ITEMIFSET, MapIlexForestSignpostItem3
+	signpost 22, 8, SIGNPOST_UP, MapIlexForestSignpost4Script
 
 	; people-events
 	db 11
-	person_event SPRITE_BIRD, 35, 18, $3, $0, 255, 255, $b0, 0, BirdScript_0x6eb8f, EVENT_6E9
-	person_event SPRITE_YOUNGSTER, 32, 11, $6, $0, 255, 255, $a0, 0, YoungsterScript_0x6eb7b, EVENT_6F3
-	person_event SPRITE_BLACK_BELT, 32, 9, $9, $0, 255, 255, $0, 0, BlackBeltScript_0x6edae, EVENT_6F4
-	person_event SPRITE_ROCKER, 18, 19, $9, $0, 255, 255, $0, 0, RockerScript_0x6edde, -1
-	person_event SPRITE_POKE_BALL, 36, 24, $1, $0, 255, 255, $1, 0, ItemFragment_0x6ee10, EVENT_671
-	person_event SPRITE_KURT, 33, 12, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_7A5
-	person_event SPRITE_LASS, 28, 7, $9, $0, 255, 255, $a0, 0, LassScript_0x6ee0d, EVENT_6ED
-	person_event SPRITE_YOUNGSTER, 5, 16, $7, $0, 255, 255, $a2, 0, TrainerBug_catcherWayne, -1
-	person_event SPRITE_POKE_BALL, 21, 13, $1, $0, 255, 255, $1, 0, ItemFragment_0x6ee12, EVENT_7B9
-	person_event SPRITE_POKE_BALL, 11, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x6ee14, EVENT_7BA
-	person_event SPRITE_POKE_BALL, 5, 31, $1, $0, 255, 255, $1, 0, ItemFragment_0x6ee16, EVENT_7BB
+	person_event SPRITE_BIRD, 35, 18, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, BirdScript_0x6eb8f, EVENT_6E9
+	person_event SPRITE_YOUNGSTER, 32, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x6eb7b, EVENT_6F3
+	person_event SPRITE_BLACK_BELT, 32, 9, LEFT << 2 | $1, $0, -1, -1, $0, 0, BlackBeltScript_0x6edae, EVENT_6F4
+	person_event SPRITE_ROCKER, 18, 19, LEFT << 2 | $1, $0, -1, -1, $0, 0, RockerScript_0x6edde, -1
+	person_event SPRITE_POKE_BALL, 36, 24, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x6ee10, EVENT_671
+	person_event SPRITE_KURT, 33, 12, UP << 2 | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_7A5
+	person_event SPRITE_LASS, 28, 7, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x6ee0d, EVENT_6ED
+	person_event SPRITE_YOUNGSTER, 5, 16, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 0, TrainerBug_catcherWayne, -1
+	person_event SPRITE_POKE_BALL, 21, 13, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x6ee12, EVENT_7B9
+	person_event SPRITE_POKE_BALL, 11, 21, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x6ee14, EVENT_7BA
+	person_event SPRITE_POKE_BALL, 5, 31, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x6ee16, EVENT_7BB
--- a/maps/IlexForestAzaleaGate.asm
+++ b/maps/IlexForestAzaleaGate.asm
@@ -45,5 +45,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $80, 0, OfficerScript_0x62c7a, -1
-	person_event SPRITE_GRANNY, 7, 5, $6, $0, 255, 255, $b0, 0, GrannyScript_0x62c7d, -1
+	person_event SPRITE_OFFICER, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x62c7a, -1
+	person_event SPRITE_GRANNY, 7, 5, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrannyScript_0x62c7d, -1
--- a/maps/IndigoPlateauPokeCenter1F.asm
+++ b/maps/IndigoPlateauPokeCenter1F.asm
@@ -22,16 +22,16 @@
 	domaptrigger GROUP_KARENS_ROOM, MAP_KARENS_ROOM, $0
 	domaptrigger GROUP_LANCES_ROOM, MAP_LANCES_ROOM, $0
 	domaptrigger GROUP_HALL_OF_FAME, MAP_HALL_OF_FAME, $0
-	clearevent EVENT_309
-	clearevent EVENT_WILLS_ROOM_EXIT_OPEN
 	clearevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
-	clearevent EVENT_KOGAS_ROOM_EXIT_OPEN
+	clearevent EVENT_WILLS_ROOM_EXIT_OPEN
 	clearevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
+	clearevent EVENT_KOGAS_ROOM_EXIT_OPEN
+	clearevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
 	clearevent EVENT_BRUNOS_ROOM_EXIT_OPEN
 	clearevent EVENT_KARENS_ROOM_ENTRANCE_CLOSED
 	clearevent EVENT_KARENS_ROOM_EXIT_OPEN
 	clearevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
-	clearevent EVENT_312
+	clearevent EVENT_LANCES_ROOM_EXIT_OPEN
 	clearevent EVENT_BEAT_ELITE_4_WILL
 	clearevent EVENT_BEAT_ELITE_4_KOGA
 	clearevent EVENT_BEAT_ELITE_4_BRUNO
@@ -319,9 +319,9 @@
 
 	; people-events
 	db 6
-	person_event SPRITE_NURSE, 11, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x18012c, -1
-	person_event SPRITE_CLERK, 11, 15, $6, $0, 255, 255, $0, 0, ClerkScript_0x18012f, -1
-	person_event SPRITE_COOLTRAINER_M, 15, 15, $2, $22, 255, 255, $0, 0, CooltrainerMScript_0x180136, -1
-	person_event SPRITE_SILVER, 13, 20, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_77B
-	person_event SPRITE_GRAMPS, 13, 5, $6, $0, 255, 255, $90, 0, TeleportGuyScript, EVENT_TELEPORT_GUY
-	person_event SPRITE_JYNX, 13, 4, $16, $0, 255, 255, $b0, 0, AbraScript, EVENT_TELEPORT_GUY
+	person_event SPRITE_NURSE, 11, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x18012c, -1
+	person_event SPRITE_CLERK, 11, 15, UP << 2 | $2, $0, -1, -1, $0, 0, ClerkScript_0x18012f, -1
+	person_event SPRITE_COOLTRAINER_M, 15, 15, DOWN << 2 | $2, $22, -1, -1, $0, 0, CooltrainerMScript_0x180136, -1
+	person_event SPRITE_SILVER, 13, 20, UP << 2 | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_77B
+	person_event SPRITE_GRAMPS, 13, 5, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeleportGuyScript, EVENT_TELEPORT_GUY
+	person_event SPRITE_JYNX, 13, 4, UP << 2 | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, AbraScript, EVENT_TELEPORT_GUY
--- a/maps/KarensRoom.asm
+++ b/maps/KarensRoom.asm
@@ -153,4 +153,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_KAREN, 11, 9, $6, $0, 255, 255, $80, 0, KarenScript_0x180bee, -1
+	person_event SPRITE_KAREN, 11, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, KarenScript_0x180bee, -1
--- a/maps/KogasRoom.asm
+++ b/maps/KogasRoom.asm
@@ -21,7 +21,7 @@
 	end
 
 UnknownScript_0x18072d:
-	checkevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
+	checkevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
 	iffalse UnknownScript_0x180737
 	changeblock $4, $e, $2a
 UnknownScript_0x180737:
@@ -40,7 +40,7 @@
 	reloadmappart
 	loadmovesprites
 	dotrigger $1
-	setevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
+	setevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
 	waitbutton
 	end
 
@@ -150,4 +150,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_KOGA, 11, 9, $6, $0, 255, 255, $90, 0, KogaScript_0x18075a, -1
+	person_event SPRITE_KOGA, 11, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, KogaScript_0x18075a, -1
--- a/maps/KrissHouse1F.asm
+++ b/maps/KrissHouse1F.asm
@@ -16,13 +16,13 @@
 	end
 
 UnknownScript_0x7a4d8:
-	setevent EVENT_000
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
 
 UnknownScript_0x7a4db:
 	playmusic MUSIC_MOM
 	showemote EMOTE_SHOCK, $2, 15
 	spriteface $0, LEFT
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iffalse UnknownScript_0x7a4f2
 	applymovement $2, MovementData_0x7a5fc
 	jump UnknownScript_0x7a4f6
@@ -77,9 +77,9 @@
 	writetext UnknownText_0x7a850
 	closetext
 	loadmovesprites
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x7a55d
-	checkevent EVENT_001
+	checkevent EVENT_CHRIS2_IN_CABLE_CLUB
 	iffalse UnknownScript_0x7a564
 	jump UnknownScript_0x7a56b
 
@@ -109,7 +109,7 @@
 
 MomScript_0x7a582:
 	faceplayer
-	setevent EVENT_001
+	setevent EVENT_CHRIS2_IN_CABLE_CLUB
 	checktriggers
 	iffalse UnknownScript_0x7a572
 	loadfont
@@ -397,15 +397,15 @@
 
 	; signposts
 	db 4
-	signpost 1, 0, $0, StoveScript
-	signpost 1, 1, $0, SinkScript
-	signpost 1, 2, $0, FridgeScript
-	signpost 1, 4, $0, TVScript
+	signpost 1, 0, SIGNPOST_READ, StoveScript
+	signpost 1, 1, SIGNPOST_READ, SinkScript
+	signpost 1, 2, SIGNPOST_READ, FridgeScript
+	signpost 1, 4, SIGNPOST_READ, TVScript
 
 	; people-events
 	db 5
-	person_event SPRITE_MOM, 8, 11, $8, $0, 255, 255, $0, 0, MomScript_0x7a582, EVENT_6C7
-	person_event SPRITE_MOM, 6, 6, $7, $0, 255, 1, $0, 0, MomScript_0x7a582, EVENT_6C8
-	person_event SPRITE_MOM, 8, 11, $8, $0, 255, 2, $0, 0, MomScript_0x7a582, EVENT_6C8
-	person_event SPRITE_MOM, 6, 4, $7, $0, 255, 4, $0, 0, MomScript_0x7a582, EVENT_6C8
-	person_event SPRITE_POKEFAN_F, 8, 8, $9, $0, 255, 255, $80, 0, NeighborScript, EVENT_792
+	person_event SPRITE_MOM, 8, 11, LEFT << 2 | $0, $0, -1, -1, $0, 0, MomScript_0x7a582, EVENT_6C7
+	person_event SPRITE_MOM, 6, 6, UP << 2 | $3, $0, -1, 1, $0, 0, MomScript_0x7a582, EVENT_6C8
+	person_event SPRITE_MOM, 8, 11, LEFT << 2 | $0, $0, -1, 2, $0, 0, MomScript_0x7a582, EVENT_6C8
+	person_event SPRITE_MOM, 6, 4, UP << 2 | $3, $0, -1, 4, $0, 0, MomScript_0x7a582, EVENT_6C8
+	person_event SPRITE_POKEFAN_F, 8, 8, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, NeighborScript, EVENT_792
--- a/maps/KrissHouse2F.asm
+++ b/maps/KrissHouse2F.asm
@@ -125,14 +125,14 @@
 
 	; signposts
 	db 4
-	signpost 1, 2, $1, KrissHousePC
-	signpost 1, 3, $0, KrissHouseRadio
-	signpost 1, 5, $0, KrissHouseBookshelf
-	signpost 0, 6, $5, KrissHousePoster
+	signpost 1, 2, SIGNPOST_UP, KrissHousePC
+	signpost 1, 3, SIGNPOST_READ, KrissHouseRadio
+	signpost 1, 5, SIGNPOST_READ, KrissHouseBookshelf
+	signpost 0, 6, SIGNPOST_IFSET, KrissHousePoster
 
 	; people-events
 	db 4
-	person_event SPRITE_CONSOLE, 6, 8, $1, $0, 255, 255, $0, 0, GameConsole, EVENT_741
-	person_event SPRITE_DOLL_1, 8, 8, $1, $0, 255, 255, $0, 0, Doll1, EVENT_742
-	person_event SPRITE_DOLL_2, 8, 9, $1, $0, 255, 255, $0, 0, Doll2, EVENT_743
-	person_event SPRITE_BIG_DOLL, 5, 4, $21, $0, 255, 255, $0, 0, BigDoll, EVENT_744
+	person_event SPRITE_CONSOLE, 6, 8, DOWN << 2 | $1, $0, -1, -1, $0, 0, GameConsole, EVENT_741
+	person_event SPRITE_DOLL_1, 8, 8, DOWN << 2 | $1, $0, -1, -1, $0, 0, Doll1, EVENT_742
+	person_event SPRITE_DOLL_2, 8, 9, DOWN << 2 | $1, $0, -1, -1, $0, 0, Doll2, EVENT_743
+	person_event SPRITE_BIG_DOLL, 5, 4, DOWN << 2 | $21, $0, -1, -1, $0, 0, BigDoll, EVENT_744
--- a/maps/KrissNeighborsHouse.asm
+++ b/maps/KrissNeighborsHouse.asm
@@ -108,11 +108,11 @@
 
 	; signposts
 	db 3
-	signpost 1, 0, $0, KrissNeighborsHouseBookshelf
-	signpost 1, 1, $0, KrissNeighborsHouseBookshelf
-	signpost 1, 7, $0, KrissNeighborsHouseRadio
+	signpost 1, 0, SIGNPOST_READ, KrissNeighborsHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, KrissNeighborsHouseBookshelf
+	signpost 1, 7, SIGNPOST_READ, KrissNeighborsHouseRadio
 
 	; people-events
 	db 2
-	person_event SPRITE_COOLTRAINER_F, 7, 6, $9, $0, 255, 255, $80, 0, KrissNeighborsDaughter, -1
-	person_event SPRITE_POKEFAN_F, 7, 9, $8, $0, 255, 255, $80, 0, KrissNeighbor, EVENT_793
+	person_event SPRITE_COOLTRAINER_F, 7, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, KrissNeighborsDaughter, -1
+	person_event SPRITE_POKEFAN_F, 7, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, KrissNeighbor, EVENT_793
--- a/maps/KurtsHouse.asm
+++ b/maps/KurtsHouse.asm
@@ -70,7 +70,7 @@
 	iffalse UnknownScript_0x18e2b2
 	setevent EVENT_035
 UnknownScript_0x18e1cc:
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x18e29f
 	checkevent EVENT_258
 	iftrue UnknownScript_0x18e2b4
@@ -89,7 +89,7 @@
 	checkevent EVENT_CAN_GIVE_GS_BALL_TO_KURT
 	iftrue UnknownScript_0x18e34e
 UnknownScript_0x18e202:
-	checkevent EVENT_001
+	checkevent EVENT_CHRIS2_IN_CABLE_CLUB
 	iftrue UnknownScript_0x18e212
 	checkevent EVENT_002
 	iftrue UnknownScript_0x18e212
@@ -110,7 +110,7 @@
 	iftrue UnknownScript_0x18e249
 	checkitem PNK_APRICORN
 	iftrue UnknownScript_0x18e249
-	checkevent EVENT_001
+	checkevent EVENT_CHRIS2_IN_CABLE_CLUB
 	iftrue UnknownScript_0x18e2ae
 	checkevent EVENT_002
 	iftrue UnknownScript_0x18e243
@@ -163,7 +163,7 @@
 	jump UnknownScript_0x18e299
 
 UnknownScript_0x18e299:
-	setevent EVENT_000
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
 	setflag ENGINE_KURT_MAKING_BALLS
 UnknownScript_0x18e29f:
 	writetext UnknownText_0x18e779
@@ -178,7 +178,7 @@
 	end
 
 UnknownScript_0x18e2ab:
-	setevent EVENT_001
+	setevent EVENT_CHRIS2_IN_CABLE_CLUB
 UnknownScript_0x18e2ae:
 	writetext UnknownText_0x18e82a
 	closetext
@@ -349,9 +349,9 @@
 
 KurtsGranddaughter1:
 	faceplayer
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue KurtsGranddaughter2Subscript
-	checkevent EVENT_001
+	checkevent EVENT_CHRIS2_IN_CABLE_CLUB
 	iftrue KurtsGranddaughterFunScript
 	checkevent EVENT_FOREST_IS_RESTLESS
 	iftrue .Lonely
@@ -692,18 +692,18 @@
 
 	; signposts
 	db 7
-	signpost 1, 6, $0, KurtsHouseRadio
-	signpost 0, 8, $0, KurtsHouseOakPhoto
-	signpost 0, 9, $0, KurtsHouseOakPhoto
-	signpost 1, 5, $0, KurtsHouseBookshelf
-	signpost 1, 2, $0, KurtsHouseBookshelf
-	signpost 1, 3, $0, KurtsHouseBookshelf
-	signpost 1, 4, $0, KurtsHouseCelebiStatue
+	signpost 1, 6, SIGNPOST_READ, KurtsHouseRadio
+	signpost 0, 8, SIGNPOST_READ, KurtsHouseOakPhoto
+	signpost 0, 9, SIGNPOST_READ, KurtsHouseOakPhoto
+	signpost 1, 5, SIGNPOST_READ, KurtsHouseBookshelf
+	signpost 1, 2, SIGNPOST_READ, KurtsHouseBookshelf
+	signpost 1, 3, SIGNPOST_READ, KurtsHouseBookshelf
+	signpost 1, 4, SIGNPOST_READ, KurtsHouseCelebiStatue
 
 	; people-events
 	db 5
-	person_event SPRITE_KURT, 6, 7, $6, $0, 255, 255, $0, 0, KurtScript_0x18e178, EVENT_73E
-	person_event SPRITE_TWIN, 7, 9, $3, $0, 255, 255, $0, 0, KurtsGranddaughter1, EVENT_78C
-	person_event SPRITE_SLOWPOKE, 7, 10, $1, $0, 255, 255, $0, 0, KurtsHouseSlowpoke, EVENT_6FD
-	person_event SPRITE_KURT, 7, 18, $7, $0, 255, 255, $0, 0, KurtScript_0x18e3bd, EVENT_73F
-	person_event SPRITE_TWIN, 8, 15, $9, $0, 255, 255, $0, 0, KurtsGranddaughter2, EVENT_78D
+	person_event SPRITE_KURT, 6, 7, UP << 2 | $2, $0, -1, -1, $0, 0, KurtScript_0x18e178, EVENT_73E
+	person_event SPRITE_TWIN, 7, 9, DOWN << 2 | $3, $0, -1, -1, $0, 0, KurtsGranddaughter1, EVENT_78C
+	person_event SPRITE_SLOWPOKE, 7, 10, DOWN << 2 | $1, $0, -1, -1, $0, 0, KurtsHouseSlowpoke, EVENT_6FD
+	person_event SPRITE_KURT, 7, 18, UP << 2 | $3, $0, -1, -1, $0, 0, KurtScript_0x18e3bd, EVENT_73F
+	person_event SPRITE_TWIN, 8, 15, LEFT << 2 | $1, $0, -1, -1, $0, 0, KurtsGranddaughter2, EVENT_78D
--- a/maps/LakeofRage.asm
+++ b/maps/LakeofRage.asm
@@ -568,23 +568,23 @@
 
 	; signposts
 	db 5
-	signpost 27, 21, $0, MapLakeofRageSignpost0Script
-	signpost 31, 25, $0, MapLakeofRageSignpost1Script
-	signpost 28, 11, $7, MapLakeofRageSignpostItem2
-	signpost 4, 4, $7, MapLakeofRageSignpostItem3
-	signpost 5, 35, $7, MapLakeofRageSignpostItem4
+	signpost 27, 21, SIGNPOST_READ, MapLakeofRageSignpost0Script
+	signpost 31, 25, SIGNPOST_READ, MapLakeofRageSignpost1Script
+	signpost 28, 11, SIGNPOST_ITEMIFSET, MapLakeofRageSignpostItem2
+	signpost 4, 4, SIGNPOST_ITEMIFSET, MapLakeofRageSignpostItem3
+	signpost 5, 35, SIGNPOST_ITEMIFSET, MapLakeofRageSignpostItem4
 
 	; people-events
 	db 12
-	person_event SPRITE_LANCE, 32, 25, $7, $0, 255, 255, $0, 0, LanceScript_0x70022, EVENT_6D4
-	person_event SPRITE_GRAMPS, 30, 24, $7, $0, 255, 255, $0, 0, GrampsScript_0x7008e, -1
-	person_event SPRITE_SUPER_NERD, 17, 40, $8, $0, 255, 255, $0, 0, SuperNerdScript_0x700a2, -1
-	person_event SPRITE_COOLTRAINER_F, 33, 29, $5, $1, 255, 255, $0, 0, CooltrainerFScript_0x700a5, -1
-	person_event SPRITE_FISHER, 27, 34, $8, $0, 255, 255, $92, 1, TrainerFisherAndre, EVENT_735
-	person_event SPRITE_FISHER, 30, 28, $7, $0, 255, 255, $92, 1, TrainerFisherRaymond, EVENT_735
-	person_event SPRITE_COOLTRAINER_M, 19, 8, $9, $0, 255, 255, $82, 1, TrainerCooltrainermAaron, EVENT_735
-	person_event SPRITE_COOLTRAINER_F, 11, 40, $8, $0, 255, 255, $82, 0, TrainerCooltrainerfLois, EVENT_735
-	person_event SPRITE_GYARADOS, 26, 22, $16, $0, 255, 255, $80, 0, GyaradosScript_0x70063, EVENT_751
-	person_event SPRITE_SUPER_NERD, 8, 8, $6, $0, 255, 255, $0, 0, WesleyScript, EVENT_75C
-	person_event SPRITE_POKE_BALL, 14, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x70148, EVENT_645
-	person_event SPRITE_POKE_BALL, 6, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x7014a, EVENT_646
+	person_event SPRITE_LANCE, 32, 25, UP << 2 | $3, $0, -1, -1, $0, 0, LanceScript_0x70022, EVENT_6D4
+	person_event SPRITE_GRAMPS, 30, 24, UP << 2 | $3, $0, -1, -1, $0, 0, GrampsScript_0x7008e, -1
+	person_event SPRITE_SUPER_NERD, 17, 40, LEFT << 2 | $0, $0, -1, -1, $0, 0, SuperNerdScript_0x700a2, -1
+	person_event SPRITE_COOLTRAINER_F, 33, 29, UP << 2 | $1, $1, -1, -1, $0, 0, CooltrainerFScript_0x700a5, -1
+	person_event SPRITE_FISHER, 27, 34, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerFisherAndre, EVENT_735
+	person_event SPRITE_FISHER, 30, 28, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerFisherRaymond, EVENT_735
+	person_event SPRITE_COOLTRAINER_M, 19, 8, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerCooltrainermAaron, EVENT_735
+	person_event SPRITE_COOLTRAINER_F, 11, 40, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 0, TrainerCooltrainerfLois, EVENT_735
+	person_event SPRITE_GYARADOS, 26, 22, UP << 2 | $12, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GyaradosScript_0x70063, EVENT_751
+	person_event SPRITE_SUPER_NERD, 8, 8, UP << 2 | $2, $0, -1, -1, $0, 0, WesleyScript, EVENT_75C
+	person_event SPRITE_POKE_BALL, 14, 11, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x70148, EVENT_645
+	person_event SPRITE_POKE_BALL, 6, 39, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7014a, EVENT_646
--- a/maps/LakeofRageHiddenPowerHouse.asm
+++ b/maps/LakeofRageHiddenPowerHouse.asm
@@ -78,9 +78,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, HiddenPowerHouseBookshelf
-	signpost 1, 1, $0, HiddenPowerHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, HiddenPowerHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, HiddenPowerHouseBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_FISHER, 7, 6, $3, $0, 255, 255, $0, 0, HiddenPowerGuy, -1
+	person_event SPRITE_FISHER, 7, 6, DOWN << 2 | $3, $0, -1, -1, $0, 0, HiddenPowerGuy, -1
--- a/maps/LakeofRageMagikarpHouse.asm
+++ b/maps/LakeofRageMagikarpHouse.asm
@@ -41,7 +41,7 @@
 	iffalse UnknownScript_0x19a6d7
 	writetext UnknownText_0x19a93e
 	closetext
-	special Functionfbb32
+	special Special_CheckMagikarpLength
 	if_equal $0, UnknownScript_0x19a71c
 	if_equal $1, UnknownScript_0x19a722
 	if_equal $2, UnknownScript_0x19a716
@@ -216,9 +216,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, MagikarpHouseBookshelf
-	signpost 1, 1, $0, MagikarpHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, MagikarpHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, MagikarpHouseBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_FISHING_GURU, 7, 6, $3, $0, 255, 255, $0, 0, FishingGuruScript_0x19a6ae, -1
+	person_event SPRITE_FISHING_GURU, 7, 6, DOWN << 2 | $3, $0, -1, -1, $0, 0, FishingGuruScript_0x19a6ae, -1
--- a/maps/LancesRoom.asm
+++ b/maps/LancesRoom.asm
@@ -25,7 +25,7 @@
 	iffalse UnknownScript_0x180e48
 	changeblock $4, $16, $34
 UnknownScript_0x180e48:
-	checkevent EVENT_312
+	checkevent EVENT_LANCES_ROOM_EXIT_OPEN
 	iffalse UnknownScript_0x180e52
 	changeblock $4, $0, $b
 UnknownScript_0x180e52:
@@ -358,6 +358,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_LANCE, 7, 9, $6, $0, 255, 255, $0, 0, LanceScript_0x180e7b, -1
-	person_event SPRITE_TEACHER, 11, 8, $7, $0, 255, 255, $a0, 0, ObjectEvent, EVENT_75F
-	person_event SPRITE_OAK, 11, 8, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_75F
+	person_event SPRITE_LANCE, 7, 9, UP << 2 | $2, $0, -1, -1, $0, 0, LanceScript_0x180e7b, -1
+	person_event SPRITE_TEACHER, 11, 8, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ObjectEvent, EVENT_75F
+	person_event SPRITE_OAK, 11, 8, UP << 2 | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_75F
--- a/maps/LavRadioTower1F.asm
+++ b/maps/LavRadioTower1F.asm
@@ -228,13 +228,13 @@
 
 	; signposts
 	db 2
-	signpost 0, 11, $0, MapLavRadioTower1FSignpost0Script
-	signpost 0, 5, $0, MapLavRadioTower1FSignpost1Script
+	signpost 0, 11, SIGNPOST_READ, MapLavRadioTower1FSignpost0Script
+	signpost 0, 5, SIGNPOST_READ, MapLavRadioTower1FSignpost1Script
 
 	; people-events
 	db 5
-	person_event SPRITE_RECEPTIONIST, 10, 10, $7, $0, 255, 255, $a0, 0, ReceptionistScript_0x7ee63, -1
-	person_event SPRITE_OFFICER, 5, 19, $6, $0, 255, 255, $a0, 0, OfficerScript_0x7ee66, -1
-	person_event SPRITE_SUPER_NERD, 7, 5, $2, $11, 255, 255, $80, 0, SuperNerdScript_0x7ee69, -1
-	person_event SPRITE_GENTLEMAN, 5, 13, $7, $0, 255, 255, $0, 0, GentlemanScript_0x7ee6c, -1
-	person_event SPRITE_SUPER_NERD, 10, 18, $9, $0, 255, 255, $0, 0, SuperNerdScript_0x7eea2, -1
+	person_event SPRITE_RECEPTIONIST, 10, 10, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ReceptionistScript_0x7ee63, -1
+	person_event SPRITE_OFFICER, 5, 19, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x7ee66, -1
+	person_event SPRITE_SUPER_NERD, 7, 5, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x7ee69, -1
+	person_event SPRITE_GENTLEMAN, 5, 13, UP << 2 | $3, $0, -1, -1, $0, 0, GentlemanScript_0x7ee6c, -1
+	person_event SPRITE_SUPER_NERD, 10, 18, LEFT << 2 | $1, $0, -1, -1, $0, 0, SuperNerdScript_0x7eea2, -1
--- a/maps/LavenderMart.asm
+++ b/maps/LavenderMart.asm
@@ -59,6 +59,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x7eb1c, -1
-	person_event SPRITE_POKEFAN_M, 10, 10, $5, $2, 255, 255, $80, 0, PokefanMScript_0x7eb23, -1
-	person_event SPRITE_ROCKER, 6, 13, $3, $0, 255, 255, $0, 0, RockerScript_0x7eb26, -1
+	person_event SPRITE_CLERK, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x7eb1c, -1
+	person_event SPRITE_POKEFAN_M, 10, 10, UP << 2 | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x7eb23, -1
+	person_event SPRITE_ROCKER, 6, 13, DOWN << 2 | $3, $0, -1, -1, $0, 0, RockerScript_0x7eb26, -1
--- a/maps/LavenderNameRater.asm
+++ b/maps/LavenderNameRater.asm
@@ -40,4 +40,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_GENTLEMAN, 7, 6, $6, $0, 255, 255, $80, 0, LavenderNameRater, -1
+	person_event SPRITE_GENTLEMAN, 7, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, LavenderNameRater, -1
--- a/maps/LavenderPokeCenter1F.asm
+++ b/maps/LavenderPokeCenter1F.asm
@@ -92,7 +92,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x7e6a0, -1
-	person_event SPRITE_GENTLEMAN, 10, 11, $5, $1, 255, 255, $0, 0, GentlemanScript_0x7e6a3, -1
-	person_event SPRITE_TEACHER, 7, 9, $6, $0, 255, 255, $a0, 0, TeacherScript_0x7e6a6, -1
-	person_event SPRITE_YOUNGSTER, 9, 5, $4, $10, 255, 255, $80, 0, YoungsterScript_0x7e6a9, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x7e6a0, -1
+	person_event SPRITE_GENTLEMAN, 10, 11, UP << 2 | $1, $1, -1, -1, $0, 0, GentlemanScript_0x7e6a3, -1
+	person_event SPRITE_TEACHER, 7, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x7e6a6, -1
+	person_event SPRITE_YOUNGSTER, 9, 5, UP << 2 | $0, $10, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x7e6a9, -1
--- a/maps/LavenderTown.asm
+++ b/maps/LavenderTown.asm
@@ -120,16 +120,16 @@
 
 	; signposts
 	db 6
-	signpost 3, 11, $0, LavenderTownSign
-	signpost 7, 15, $0, KantoRadioStationSign
-	signpost 9, 3, $0, VolunteerPokemonHouseSign
-	signpost 13, 15, $0, SoulHouseSign
-	signpost 5, 6, $0, LavenderPokeCenterSignText
-	signpost 5, 2, $0, LavenderMartSignText
+	signpost 3, 11, SIGNPOST_READ, LavenderTownSign
+	signpost 7, 15, SIGNPOST_READ, KantoRadioStationSign
+	signpost 9, 3, SIGNPOST_READ, VolunteerPokemonHouseSign
+	signpost 13, 15, SIGNPOST_READ, SoulHouseSign
+	signpost 5, 6, SIGNPOST_READ, LavenderPokeCenterSignText
+	signpost 5, 2, SIGNPOST_READ, LavenderMartSignText
 
 	; people-events
 	db 4
-	person_event SPRITE_POKEFAN_M, 11, 16, $5, $1, 255, 255, $80, 0, PokefanMScript_0x1ad6e4, -1
-	person_event SPRITE_TEACHER, 19, 6, $5, $1, 255, 255, $90, 0, TeacherScript_0x1ad6e7, -1
-	person_event SPRITE_GRAMPS, 16, 18, $7, $0, 255, 255, $0, 0, GrampsScript_0x1ad6ea, -1
-	person_event SPRITE_YOUNGSTER, 15, 10, $5, $1, 255, 255, $a0, 1, YoungsterScript_0x1ad6ed, -1
+	person_event SPRITE_POKEFAN_M, 11, 16, UP << 2 | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x1ad6e4, -1
+	person_event SPRITE_TEACHER, 19, 6, UP << 2 | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x1ad6e7, -1
+	person_event SPRITE_GRAMPS, 16, 18, UP << 2 | $3, $0, -1, -1, $0, 0, GrampsScript_0x1ad6ea, -1
+	person_event SPRITE_YOUNGSTER, 15, 10, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 1, YoungsterScript_0x1ad6ed, -1
--- a/maps/LavenderTownSpeechHouse.asm
+++ b/maps/LavenderTownSpeechHouse.asm
@@ -39,9 +39,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, LavenderTownSpeechHouseBookshelf
-	signpost 1, 1, $0, LavenderTownSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, LavenderTownSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, LavenderTownSpeechHouseBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_POKEFAN_F, 7, 6, $7, $0, 255, 255, $90, 0, PokefanFScript_0x7ea47, -1
+	person_event SPRITE_POKEFAN_F, 7, 6, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, PokefanFScript_0x7ea47, -1
--- a/maps/MahoganyGym.asm
+++ b/maps/MahoganyGym.asm
@@ -457,15 +457,15 @@
 
 	; signposts
 	db 2
-	signpost 15, 3, $0, MahoganyGymStatue
-	signpost 15, 6, $0, MahoganyGymStatue
+	signpost 15, 3, SIGNPOST_READ, MahoganyGymStatue
+	signpost 15, 6, SIGNPOST_READ, MahoganyGymStatue
 
 	; people-events
 	db 7
-	person_event SPRITE_PRYCE, 7, 9, $6, $0, 255, 255, $b0, 0, PryceScript_0x199a9e, -1
-	person_event SPRITE_BUENA, 10, 8, $6, $0, 255, 255, $82, 1, TrainerSkierRoxanne, -1
-	person_event SPRITE_ROCKER, 21, 4, $7, $0, 255, 255, $92, 1, TrainerBoarderRonald, -1
-	person_event SPRITE_BUENA, 21, 13, $7, $0, 255, 255, $82, 1, TrainerSkierClarissa, -1
-	person_event SPRITE_ROCKER, 13, 9, $6, $0, 255, 255, $92, 1, TrainerBoarderBrad, -1
-	person_event SPRITE_ROCKER, 8, 6, $a, $0, 255, 255, $92, 1, TrainerBoarderDouglas, -1
-	person_event SPRITE_GYM_GUY, 19, 11, $6, $0, 255, 255, $80, 0, MahoganyGymGuyScript, -1
+	person_event SPRITE_PRYCE, 7, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PryceScript_0x199a9e, -1
+	person_event SPRITE_BUENA, 10, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerSkierRoxanne, -1
+	person_event SPRITE_ROCKER, 21, 4, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerBoarderRonald, -1
+	person_event SPRITE_BUENA, 21, 13, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerSkierClarissa, -1
+	person_event SPRITE_ROCKER, 13, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerBoarderBrad, -1
+	person_event SPRITE_ROCKER, 8, 6, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerBoarderDouglas, -1
+	person_event SPRITE_GYM_GUY, 19, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, MahoganyGymGuyScript, -1
--- a/maps/MahoganyMart1F.asm
+++ b/maps/MahoganyMart1F.asm
@@ -236,8 +236,8 @@
 
 	; people-events
 	db 5
-	person_event SPRITE_PHARMACIST, 7, 8, $6, $0, 255, 255, $0, 0, PharmacistScript_0x6c367, EVENT_6DA
-	person_event SPRITE_BLACK_BELT, 10, 5, $3, $0, 255, 255, $0, 0, BlackBeltScript_0x6c37b, EVENT_6DA
-	person_event SPRITE_LANCE, 10, 8, $8, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6D5
-	person_event SPRITE_DRAGON, 10, 7, $8, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6D5
-	person_event SPRITE_GRANNY, 7, 5, $9, $0, 255, 255, $0, 0, GrannyScript_0x6c3ee, EVENT_736
+	person_event SPRITE_PHARMACIST, 7, 8, UP << 2 | $2, $0, -1, -1, $0, 0, PharmacistScript_0x6c367, EVENT_6DA
+	person_event SPRITE_BLACK_BELT, 10, 5, DOWN << 2 | $3, $0, -1, -1, $0, 0, BlackBeltScript_0x6c37b, EVENT_6DA
+	person_event SPRITE_LANCE, 10, 8, LEFT << 2 | $0, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6D5
+	person_event SPRITE_DRAGON, 10, 7, LEFT << 2 | $0, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6D5
+	person_event SPRITE_GRANNY, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, GrannyScript_0x6c3ee, EVENT_736
--- a/maps/MahoganyPokeCenter1F.asm
+++ b/maps/MahoganyPokeCenter1F.asm
@@ -65,7 +65,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x19a356, -1
-	person_event SPRITE_POKEFAN_M, 6, 11, $2, $11, 255, 255, $80, 0, PokefanMScript_0x19a359, -1
-	person_event SPRITE_YOUNGSTER, 7, 5, $9, $0, 255, 255, $a0, 0, YoungsterScript_0x19a35c, -1
-	person_event SPRITE_COOLTRAINER_F, 7, 6, $8, $0, 255, 255, $0, 0, CooltrainerFScript_0x19a35f, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x19a356, -1
+	person_event SPRITE_POKEFAN_M, 6, 11, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x19a359, -1
+	person_event SPRITE_YOUNGSTER, 7, 5, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x19a35c, -1
+	person_event SPRITE_COOLTRAINER_F, 7, 6, LEFT << 2 | $0, $0, -1, -1, $0, 0, CooltrainerFScript_0x19a35f, -1
--- a/maps/MahoganyRedGyaradosSpeechHouse.asm
+++ b/maps/MahoganyRedGyaradosSpeechHouse.asm
@@ -73,5 +73,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_BLACK_BELT, 7, 6, $9, $0, 255, 255, $0, 0, BlackBeltScript_0x19997f, -1
-	person_event SPRITE_TEACHER, 9, 10, $4, $10, 255, 255, $90, 0, TeacherScript_0x199982, -1
+	person_event SPRITE_BLACK_BELT, 7, 6, LEFT << 2 | $1, $0, -1, -1, $0, 0, BlackBeltScript_0x19997f, -1
+	person_event SPRITE_TEACHER, 9, 10, UP << 2 | $0, $10, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x199982, -1
--- a/maps/MahoganyTown.asm
+++ b/maps/MahoganyTown.asm
@@ -261,14 +261,14 @@
 
 	; signposts
 	db 4
-	signpost 5, 1, $0, MahoganyTownSign
-	signpost 7, 9, $0, MahoganyTownRagecandybarSign
-	signpost 13, 3, $0, MahoganyGymSign
-	signpost 13, 16, $0, MahoganyTownPokeCenterSign
+	signpost 5, 1, SIGNPOST_READ, MahoganyTownSign
+	signpost 7, 9, SIGNPOST_READ, MahoganyTownRagecandybarSign
+	signpost 13, 3, SIGNPOST_READ, MahoganyGymSign
+	signpost 13, 16, SIGNPOST_READ, MahoganyTownPokeCenterSign
 
 	; people-events
 	db 4
-	person_event SPRITE_POKEFAN_M, 12, 23, $6, $0, 255, 255, $0, 0, PokefanMScript_0x19002e, EVENT_756
-	person_event SPRITE_GRAMPS, 13, 10, $5, $1, 255, 255, $0, 0, GrampsScript_0x19007e, -1
-	person_event SPRITE_FISHER, 18, 10, $6, $0, 255, 255, $a0, 0, FisherScript_0x190092, EVENT_757
-	person_event SPRITE_LASS, 12, 16, $6, $0, 255, 255, $0, 0, LassScript_0x190095, EVENT_736
+	person_event SPRITE_POKEFAN_M, 12, 23, UP << 2 | $2, $0, -1, -1, $0, 0, PokefanMScript_0x19002e, EVENT_756
+	person_event SPRITE_GRAMPS, 13, 10, UP << 2 | $1, $1, -1, -1, $0, 0, GrampsScript_0x19007e, -1
+	person_event SPRITE_FISHER, 18, 10, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x190092, EVENT_757
+	person_event SPRITE_LASS, 12, 16, UP << 2 | $2, $0, -1, -1, $0, 0, LassScript_0x190095, EVENT_736
--- a/maps/ManiasHouse.asm
+++ b/maps/ManiasHouse.asm
@@ -212,4 +212,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_ROCKER, 8, 6, $3, $0, 255, 255, $0, 0, RockerScript_0x9d278, -1
+	person_event SPRITE_ROCKER, 8, 6, DOWN << 2 | $3, $0, -1, -1, $0, 0, RockerScript_0x9d278, -1
--- a/maps/MobileBattleRoom.asm
+++ b/maps/MobileBattleRoom.asm
@@ -3,20 +3,20 @@
 	db 2
 
 	; triggers
-	dw UnknownScript_0x1935ce, $0000
-	dw UnknownScript_0x1935d2, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
 
 	; callback count
 	db 0
 
-UnknownScript_0x1935ce:
-	priorityjump UnknownScript_0x1935d3
+.Trigger1:
+	priorityjump MobileBattleRoom_Initialize
 	end
 
-UnknownScript_0x1935d2:
+.Trigger2:
 	end
 
-UnknownScript_0x1935d3:
+MobileBattleRoom_Initialize:
 	dotrigger $1
 	domaptrigger GROUP_POKECENTER_2F, MAP_POKECENTER_2F, $5
 	end
@@ -24,15 +24,15 @@
 MapMobileBattleRoomSignpost0Script:
 	refreshscreen $0
 	special Function1037c2
-	if_equal $1, UnknownScript_0x193619
+	if_equal $1, .one
 	special Function1037eb
-	iffalse UnknownScript_0x193624
-	if_equal $1, UnknownScript_0x1935f4
-	if_equal $2, UnknownScript_0x19360d
-	jump UnknownScript_0x193624
+	iffalse .false
+	if_equal $1, .one_
+	if_equal $2, .two_
+	jump .false
 
-UnknownScript_0x1935f4:
-	writetext UnknownText_0x193644
+.one_:
+	writetext MobileBattleRoom_HealText
 	pause 20
 	loadmovesprites
 	special Function8c084
@@ -42,27 +42,27 @@
 	special Function8c079
 	special RestartMapMusic
 	refreshscreen $0
-UnknownScript_0x19360d:
+.two_:
 	special Mobile_HealParty
 	special HealParty
 	special Function10383c
-	iftrue UnknownScript_0x193624
-UnknownScript_0x193619:
+	iftrue .false
+.one:
 	special Function10387b
-	writetext UnknownText_0x193626
+	writetext MobileBattleRoom_EstablishingCommsText
 	closetext
 	reloadmappart
 	special Function101225
-UnknownScript_0x193624:
+.false:
 	loadmovesprites
 	end
 
-UnknownText_0x193626:
+MobileBattleRoom_EstablishingCommsText:
 	text "Establishing"
 	line "communications…"
 	done
 
-UnknownText_0x193644:
+MobileBattleRoom_HealText:
 	text "Your #MON will"
 	line "be fully healed"
 	cont "before battle."
@@ -82,7 +82,7 @@
 
 	; signposts
 	db 1
-	signpost 2, 4, $1, MapMobileBattleRoomSignpost0Script
+	signpost 2, 4, SIGNPOST_UP, MapMobileBattleRoomSignpost0Script
 
 	; people-events
 	db 0
--- a/maps/MobileTradeRoomMobile.asm
+++ b/maps/MobileTradeRoomMobile.asm
@@ -3,20 +3,20 @@
 	db 2
 
 	; triggers
-	dw UnknownScript_0x193576, $0000
-	dw UnknownScript_0x19357a, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
 
 	; callback count
 	db 0
 
-UnknownScript_0x193576:
-	priorityjump UnknownScript_0x19357b
+.Trigger1:
+	priorityjump MobileTradeRoomMobile_Initialize
 	end
 
-UnknownScript_0x19357a:
+.Trigger2:
 	end
 
-UnknownScript_0x19357b:
+MobileTradeRoomMobile_Initialize:
 	dotrigger $1
 	domaptrigger GROUP_POKECENTER_2F, MAP_POKECENTER_2F, $4
 	end
@@ -24,7 +24,7 @@
 MapMobileTradeRoomMobileSignpost0Script:
 	refreshscreen $0
 	special Function1037c2
-	writetext UnknownText_0x193591
+	writetext MobileTradeRoomMobile_EstablishingCommsText
 	closetext
 	reloadmappart
 	special Function101231
@@ -31,7 +31,7 @@
 	loadmovesprites
 	end
 
-UnknownText_0x193591:
+MobileTradeRoomMobile_EstablishingCommsText:
 	text "Establishing"
 	line "communications…"
 	done
@@ -50,7 +50,7 @@
 
 	; signposts
 	db 1
-	signpost 2, 4, $1, MapMobileTradeRoomMobileSignpost0Script
+	signpost 2, 4, SIGNPOST_UP, MapMobileTradeRoomMobileSignpost0Script
 
 	; people-events
 	db 0
--- a/maps/MountMoon.asm
+++ b/maps/MountMoon.asm
@@ -182,4 +182,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_SILVER, 7, 11, $8, $0, 255, 255, $0, 0, ObjectEvent, EVENT_77A
+	person_event SPRITE_SILVER, 7, 11, LEFT << 2 | $0, $0, -1, -1, $0, 0, ObjectEvent, EVENT_77A
--- a/maps/MountMoonGiftShop.asm
+++ b/maps/MountMoonGiftShop.asm
@@ -38,7 +38,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_GRAMPS, 7, 8, $6, $0, 255, 1, $0, 0, GrampsScript_0x771a8, -1
-	person_event SPRITE_GRAMPS, 6, 5, $9, $0, 255, 2, $0, 0, GrampsScript_0x771a8, -1
-	person_event SPRITE_LASS, 10, 5, $5, $1, 255, 1, $0, 0, LassScript_0x771b0, -1
-	person_event SPRITE_LASS, 8, 9, $4, $10, 255, 2, $0, 0, LassScript_0x771b0, -1
+	person_event SPRITE_GRAMPS, 7, 8, UP << 2 | $2, $0, -1, 1, $0, 0, GrampsScript_0x771a8, -1
+	person_event SPRITE_GRAMPS, 6, 5, LEFT << 2 | $1, $0, -1, 2, $0, 0, GrampsScript_0x771a8, -1
+	person_event SPRITE_LASS, 10, 5, UP << 2 | $1, $1, -1, 1, $0, 0, LassScript_0x771b0, -1
+	person_event SPRITE_LASS, 8, 9, UP << 2 | $0, $10, -1, 2, $0, 0, LassScript_0x771b0, -1
--- a/maps/MountMoonSquare.asm
+++ b/maps/MountMoonSquare.asm
@@ -151,11 +151,11 @@
 
 	; signposts
 	db 2
-	signpost 7, 7, $7, MapMountMoonSquareSignpostItem0
-	signpost 7, 17, $0, MapMountMoonSquareSignpost1Script
+	signpost 7, 7, SIGNPOST_ITEMIFSET, MapMountMoonSquareSignpostItem0
+	signpost 7, 17, SIGNPOST_READ, MapMountMoonSquareSignpost1Script
 
 	; people-events
 	db 3
-	person_event SPRITE_FAIRY, 10, 10, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_779
-	person_event SPRITE_FAIRY, 10, 11, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_779
-	person_event SPRITE_ROCK, 11, 11, $18, $0, 255, 255, $0, 0, MtMoonSquareRock, EVENT_778
+	person_event SPRITE_FAIRY, 10, 10, UP << 2 | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_779
+	person_event SPRITE_FAIRY, 10, 11, UP << 2 | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_779
+	person_event SPRITE_ROCK, 11, 11, LEFT << 2 | $10, $0, -1, -1, $0, 0, MtMoonSquareRock, EVENT_778
--- a/maps/MountMortar1FInside.asm
+++ b/maps/MountMortar1FInside.asm
@@ -156,17 +156,17 @@
 
 	; signposts
 	db 1
-	signpost 11, 30, $7, MapMountMortar1FInsideSignpostItem0
+	signpost 11, 30, SIGNPOST_ITEMIFSET, MapMountMortar1FInsideSignpostItem0
 
 	; people-events
 	db 10
-	person_event SPRITE_BOULDER, 47, 25, $19, $0, 255, 255, $0, 0, MountMortar1FBoulder, -1
-	person_event SPRITE_POKE_BALL, 42, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de7c, EVENT_67D
-	person_event SPRITE_POKE_BALL, 14, 20, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de7e, EVENT_67E
-	person_event SPRITE_POKE_BALL, 31, 14, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de80, EVENT_67F
-	person_event SPRITE_POKE_BALL, 24, 26, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de82, EVENT_7A6
-	person_event SPRITE_POKE_BALL, 23, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de84, EVENT_7A7
-	person_event SPRITE_SUPER_NERD, 47, 37, $8, $0, 255, 255, $92, 3, TrainerPokemaniacMiller, -1
-	person_event SPRITE_SUPER_NERD, 32, 28, $a, $0, 255, 255, $b2, 3, TrainerSupernerdMarkus, -1
-	person_event SPRITE_POKE_BALL, 20, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de86, EVENT_7C8
-	person_event SPRITE_POKE_BALL, 21, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x7de88, EVENT_7C9
+	person_event SPRITE_BOULDER, 47, 25, LEFT << 2 | $11, $0, -1, -1, $0, 0, MountMortar1FBoulder, -1
+	person_event SPRITE_POKE_BALL, 42, 39, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de7c, EVENT_67D
+	person_event SPRITE_POKE_BALL, 14, 20, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de7e, EVENT_67E
+	person_event SPRITE_POKE_BALL, 31, 14, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de80, EVENT_67F
+	person_event SPRITE_POKE_BALL, 24, 26, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de82, EVENT_7A6
+	person_event SPRITE_POKE_BALL, 23, 39, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de84, EVENT_7A7
+	person_event SPRITE_SUPER_NERD, 47, 37, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacMiller, -1
+	person_event SPRITE_SUPER_NERD, 32, 28, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerSupernerdMarkus, -1
+	person_event SPRITE_POKE_BALL, 20, 12, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de86, EVENT_7C8
+	person_event SPRITE_POKE_BALL, 21, 21, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7de88, EVENT_7C9
--- a/maps/MountMortar1FOutside.asm
+++ b/maps/MountMortar1FOutside.asm
@@ -37,9 +37,9 @@
 
 	; signposts
 	db 1
-	signpost 22, 25, $7, MapMountMortar1FOutsideSignpostItem0
+	signpost 22, 25, SIGNPOST_ITEMIFSET, MapMountMortar1FOutsideSignpostItem0
 
 	; people-events
 	db 2
-	person_event SPRITE_POKE_BALL, 19, 17, $1, $0, 255, 255, $1, 0, ItemFragment_0x7ddf6, EVENT_67B
-	person_event SPRITE_POKE_BALL, 22, 35, $1, $0, 255, 255, $1, 0, ItemFragment_0x7ddf8, EVENT_67C
+	person_event SPRITE_POKE_BALL, 19, 17, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7ddf6, EVENT_67B
+	person_event SPRITE_POKE_BALL, 22, 35, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7ddf8, EVENT_67C
--- a/maps/MountMortar2FInside.asm
+++ b/maps/MountMortar2FInside.asm
@@ -89,14 +89,14 @@
 
 	; signposts
 	db 1
-	signpost 8, 24, $7, MapMountMortar2FInsideSignpostItem0
+	signpost 8, 24, SIGNPOST_ITEMIFSET, MapMountMortar2FInsideSignpostItem0
 
 	; people-events
 	db 7
-	person_event SPRITE_POKE_BALL, 26, 32, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e0de, EVENT_680
-	person_event SPRITE_POKE_BALL, 37, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e0e0, EVENT_681
-	person_event SPRITE_POKE_BALL, 21, 23, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e0e2, EVENT_682
-	person_event SPRITE_POKE_BALL, 9, 20, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e0e4, EVENT_683
-	person_event SPRITE_POKE_BALL, 15, 13, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e0e6, EVENT_684
-	person_event SPRITE_POKE_BALL, 9, 32, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e0e8, EVENT_685
-	person_event SPRITE_SUPER_NERD, 30, 17, $a, $0, 255, 255, $b2, 2, TrainerSupernerdHugh, -1
+	person_event SPRITE_POKE_BALL, 26, 32, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e0de, EVENT_680
+	person_event SPRITE_POKE_BALL, 37, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e0e0, EVENT_681
+	person_event SPRITE_POKE_BALL, 21, 23, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e0e2, EVENT_682
+	person_event SPRITE_POKE_BALL, 9, 20, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e0e4, EVENT_683
+	person_event SPRITE_POKE_BALL, 15, 13, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e0e6, EVENT_684
+	person_event SPRITE_POKE_BALL, 9, 32, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e0e8, EVENT_685
+	person_event SPRITE_SUPER_NERD, 30, 17, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerSupernerdHugh, -1
--- a/maps/MountMortarB1F.asm
+++ b/maps/MountMortarB1F.asm
@@ -141,14 +141,14 @@
 
 	; signposts
 	db 1
-	signpost 6, 4, $7, MapMountMortarB1FSignpostItem0
+	signpost 6, 4, SIGNPOST_ITEMIFSET, MapMountMortarB1FSignpostItem0
 
 	; people-events
 	db 7
-	person_event SPRITE_POKE_BALL, 16, 33, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e240, EVENT_686
-	person_event SPRITE_POKE_BALL, 20, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e242, EVENT_687
-	person_event SPRITE_BOULDER, 14, 13, $19, $0, 255, 255, $0, 0, MountMortarB1FBoulder, -1
-	person_event SPRITE_BLACK_BELT, 8, 20, $6, $0, 255, 255, $b0, 0, BlackBeltScript_0x7e1f6, -1
-	person_event SPRITE_POKE_BALL, 28, 38, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e244, EVENT_7CA
-	person_event SPRITE_POKE_BALL, 7, 36, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e246, EVENT_7CB
-	person_event SPRITE_POKE_BALL, 30, 25, $1, $0, 255, 255, $1, 0, ItemFragment_0x7e248, EVENT_7CC
+	person_event SPRITE_POKE_BALL, 16, 33, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e240, EVENT_686
+	person_event SPRITE_POKE_BALL, 20, 8, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e242, EVENT_687
+	person_event SPRITE_BOULDER, 14, 13, LEFT << 2 | $11, $0, -1, -1, $0, 0, MountMortarB1FBoulder, -1
+	person_event SPRITE_BLACK_BELT, 8, 20, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, BlackBeltScript_0x7e1f6, -1
+	person_event SPRITE_POKE_BALL, 28, 38, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e244, EVENT_7CA
+	person_event SPRITE_POKE_BALL, 7, 36, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e246, EVENT_7CB
+	person_event SPRITE_POKE_BALL, 30, 25, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7e248, EVENT_7CC
--- a/maps/MoveDeletersHouse.asm
+++ b/maps/MoveDeletersHouse.asm
@@ -30,9 +30,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, MoveDeletersHouseBookshelf
-	signpost 1, 1, $0, MoveDeletersHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, MoveDeletersHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, MoveDeletersHouseBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_SUPER_NERD, 7, 6, $6, $0, 255, 255, $0, 0, MoveDeleter, -1
+	person_event SPRITE_SUPER_NERD, 7, 6, UP << 2 | $2, $0, -1, -1, $0, 0, MoveDeleter, -1
--- a/maps/MrFujisHouse.asm
+++ b/maps/MrFujisHouse.asm
@@ -86,13 +86,13 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, MrFujisHouseBookshelf
-	signpost 1, 1, $0, MrFujisHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, MrFujisHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, MrFujisHouseBookshelf
 
 	; people-events
 	db 5
-	person_event SPRITE_SUPER_NERD, 5, 8, $6, $0, 255, 255, $a0, 0, SuperNerdScript_0x7e8ca, -1
-	person_event SPRITE_LASS, 8, 7, $2, $11, 255, 255, $0, 0, LassScript_0x7e8cd, -1
-	person_event SPRITE_RHYDON, 8, 11, $16, $0, 255, 255, $0, 0, MrFujisPsyduck, -1
-	person_event SPRITE_GROWLITHE, 9, 9, $16, $0, 255, 255, $90, 0, MrFujisNidorino, -1
-	person_event SPRITE_MOLTRES, 7, 5, $16, $0, 255, 255, $b0, 0, MrFujisPidgey, -1
+	person_event SPRITE_SUPER_NERD, 5, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x7e8ca, -1
+	person_event SPRITE_LASS, 8, 7, DOWN << 2 | $2, $11, -1, -1, $0, 0, LassScript_0x7e8cd, -1
+	person_event SPRITE_RHYDON, 8, 11, UP << 2 | $12, $0, -1, -1, $0, 0, MrFujisPsyduck, -1
+	person_event SPRITE_GROWLITHE, 9, 9, UP << 2 | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, MrFujisNidorino, -1
+	person_event SPRITE_MOLTRES, 7, 5, UP << 2 | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, MrFujisPidgey, -1
--- a/maps/MrPokemonsHouse.asm
+++ b/maps/MrPokemonsHouse.asm
@@ -127,20 +127,20 @@
 	domaptrigger GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY, $1
 	domaptrigger GROUP_ELMS_LAB, MAP_ELMS_LAB, $3
 	specialphonecall $2
-	clearevent EVENT_702
+	clearevent EVENT_COP_IN_ELMS_LAB
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
 	iftrue UnknownScript_0x196f49
 	checkevent EVENT_GOT_CHIKORITA_FROM_ELM
 	iftrue UnknownScript_0x196f4d
-	setevent EVENT_641
+	setevent EVENT_TOTODILE_POKEBALL_IN_ELMS_LAB
 	end
 
 UnknownScript_0x196f49:
-	setevent EVENT_642
+	setevent EVENT_CHIKORITA_POKEBALL_IN_ELMS_LAB
 	end
 
 UnknownScript_0x196f4d:
-	setevent EVENT_640
+	setevent EVENT_CYNDAQUIL_POKEBALL_IN_ELMS_LAB
 	end
 
 MapMrPokemonsHouseSignpost1Script:
@@ -384,13 +384,13 @@
 
 	; signposts
 	db 5
-	signpost 1, 0, $0, MapMrPokemonsHouseSignpost1Script
-	signpost 1, 1, $0, MapMrPokemonsHouseSignpost1Script
-	signpost 1, 6, $0, MapMrPokemonsHouseSignpost3Script
-	signpost 1, 7, $0, MapMrPokemonsHouseSignpost3Script
-	signpost 4, 6, $0, MapMrPokemonsHouseSignpost4Script
+	signpost 1, 0, SIGNPOST_READ, MapMrPokemonsHouseSignpost1Script
+	signpost 1, 1, SIGNPOST_READ, MapMrPokemonsHouseSignpost1Script
+	signpost 1, 6, SIGNPOST_READ, MapMrPokemonsHouseSignpost3Script
+	signpost 1, 7, SIGNPOST_READ, MapMrPokemonsHouseSignpost3Script
+	signpost 4, 6, SIGNPOST_READ, MapMrPokemonsHouseSignpost4Script
 
 	; people-events
 	db 2
-	person_event SPRITE_GENTLEMAN, 9, 7, $9, $0, 255, 255, $0, 0, GentlemanScript_0x196e97, -1
-	person_event SPRITE_OAK, 9, 10, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6C9
+	person_event SPRITE_GENTLEMAN, 9, 7, LEFT << 2 | $1, $0, -1, -1, $0, 0, GentlemanScript_0x196e97, -1
+	person_event SPRITE_OAK, 9, 10, UP << 2 | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6C9
--- a/maps/MrPsychicsHouse.asm
+++ b/maps/MrPsychicsHouse.asm
@@ -58,9 +58,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, MrPsychicsHouseBookshelf
-	signpost 1, 1, $0, MrPsychicsHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, MrPsychicsHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, MrPsychicsHouseBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_FISHING_GURU, 7, 9, $8, $0, 255, 255, $a0, 0, MrPsychic, -1
+	person_event SPRITE_FISHING_GURU, 7, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, MrPsychic, -1
--- a/maps/NationalPark.asm
+++ b/maps/NationalPark.asm
@@ -579,24 +579,24 @@
 
 	; signposts
 	db 4
-	signpost 44, 14, $0, MapNationalParkSignpost0Script
-	signpost 31, 27, $0, MapNationalParkSignpost1Script
-	signpost 47, 6, $7, MapNationalParkSignpostItem2
-	signpost 4, 12, $0, MapNationalParkSignpost3Script
+	signpost 44, 14, SIGNPOST_READ, MapNationalParkSignpost0Script
+	signpost 31, 27, SIGNPOST_READ, MapNationalParkSignpost1Script
+	signpost 47, 6, SIGNPOST_ITEMIFSET, MapNationalParkSignpostItem2
+	signpost 4, 12, SIGNPOST_READ, MapNationalParkSignpost3Script
 
 	; people-events
 	db 14
-	person_event SPRITE_LASS, 28, 19, $5, $1, 255, 255, $a0, 0, LassScript_0x5c002, -1
-	person_event SPRITE_POKEFAN_F, 8, 18, $6, $0, 255, 255, $0, 0, PokefanFScript_0x5c005, -1
-	person_event SPRITE_TEACHER, 44, 31, $6, $0, 255, 255, $a0, 0, TeacherScript_0x5c008, -1
-	person_event SPRITE_YOUNGSTER, 45, 15, $8, $0, 255, 255, $0, 0, YoungsterScript_0x5c023, -1
-	person_event SPRITE_YOUNGSTER, 45, 14, $6, $0, 255, 255, $80, 0, YoungsterScript_0x5c026, -1
-	person_event SPRITE_TEACHER, 45, 21, $2, $21, 255, 255, $0, 0, TeacherScript_0x5c029, -1
-	person_event SPRITE_GROWLITHE, 44, 30, $16, $0, 255, 255, $0, 0, GrowlitheScript_0x5c02c, -1
-	person_event SPRITE_YOUNGSTER, 27, 31, $a, $0, 255, 255, $92, 3, TrainerSchoolboyJack1, -1
-	person_event SPRITE_POKEFAN_F, 33, 22, $a, $0, 255, 255, $82, 2, TrainerPokefanfBeverly1, -1
-	person_event SPRITE_POKEFAN_M, 13, 20, $a, $0, 255, 255, $82, 2, TrainerPokefanmWilliam, -1
-	person_event SPRITE_LASS, 18, 12, $a, $0, 255, 255, $92, 3, TrainerLassKrise, -1
-	person_event SPRITE_POKE_BALL, 16, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x5c1cc, EVENT_658
-	person_event SPRITE_GAMEBOY_KID, 10, 30, $6, $0, 255, 255, $0, 0, GameboyKidScript_0x5c037, -1
-	person_event SPRITE_POKE_BALL, 47, 5, $1, $0, 255, 255, $1, 0, ItemFragment_0x5c1ce, EVENT_659
+	person_event SPRITE_LASS, 28, 19, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x5c002, -1
+	person_event SPRITE_POKEFAN_F, 8, 18, UP << 2 | $2, $0, -1, -1, $0, 0, PokefanFScript_0x5c005, -1
+	person_event SPRITE_TEACHER, 44, 31, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x5c008, -1
+	person_event SPRITE_YOUNGSTER, 45, 15, LEFT << 2 | $0, $0, -1, -1, $0, 0, YoungsterScript_0x5c023, -1
+	person_event SPRITE_YOUNGSTER, 45, 14, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x5c026, -1
+	person_event SPRITE_TEACHER, 45, 21, DOWN << 2 | $2, $21, -1, -1, $0, 0, TeacherScript_0x5c029, -1
+	person_event SPRITE_GROWLITHE, 44, 30, UP << 2 | $12, $0, -1, -1, $0, 0, GrowlitheScript_0x5c02c, -1
+	person_event SPRITE_YOUNGSTER, 27, 31, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSchoolboyJack1, -1
+	person_event SPRITE_POKEFAN_F, 33, 22, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerPokefanfBeverly1, -1
+	person_event SPRITE_POKEFAN_M, 13, 20, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerPokefanmWilliam, -1
+	person_event SPRITE_LASS, 18, 12, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerLassKrise, -1
+	person_event SPRITE_POKE_BALL, 16, 39, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5c1cc, EVENT_658
+	person_event SPRITE_GAMEBOY_KID, 10, 30, UP << 2 | $2, $0, -1, -1, $0, 0, GameboyKidScript_0x5c037, -1
+	person_event SPRITE_POKE_BALL, 47, 5, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5c1ce, EVENT_659
--- a/maps/NationalParkBugContest.asm
+++ b/maps/NationalParkBugContest.asm
@@ -224,22 +224,22 @@
 
 	; signposts
 	db 4
-	signpost 44, 14, $0, MapNationalParkBugContestSignpost0Script
-	signpost 31, 27, $0, MapNationalParkBugContestSignpost1Script
-	signpost 47, 6, $7, MapNationalParkBugContestSignpostItem2
-	signpost 4, 12, $0, MapNationalParkBugContestSignpost3Script
+	signpost 44, 14, SIGNPOST_READ, MapNationalParkBugContestSignpost0Script
+	signpost 31, 27, SIGNPOST_READ, MapNationalParkBugContestSignpost1Script
+	signpost 47, 6, SIGNPOST_ITEMIFSET, MapNationalParkBugContestSignpostItem2
+	signpost 4, 12, SIGNPOST_READ, MapNationalParkBugContestSignpost3Script
 
 	; people-events
 	db 12
-	person_event SPRITE_YOUNGSTER, 33, 23, $2, $22, 255, 255, $80, 0, YoungsterScript_0x5c8ec, EVENT_716
-	person_event SPRITE_YOUNGSTER, 26, 32, $2, $22, 255, 255, $a0, 0, YoungsterScript_0x5c8f4, EVENT_717
-	person_event SPRITE_ROCKER, 22, 13, $7, $0, 255, 255, $90, 0, RockerScript_0x5c8fc, EVENT_718
-	person_event SPRITE_POKEFAN_M, 17, 11, $4, $1, 255, 255, $b0, 0, PokefanMScript_0x5c904, EVENT_719
-	person_event SPRITE_YOUNGSTER, 13, 27, $3, $0, 255, 255, $80, 0, YoungsterScript_0x5c90c, EVENT_71A
-	person_event SPRITE_YOUNGSTER, 17, 31, $2, $33, 255, 255, $a0, 0, YoungsterScript_0x5c914, EVENT_71B
-	person_event SPRITE_LASS, 27, 11, $5, $2, 255, 255, $90, 0, LassScript_0x5c91c, EVENT_71C
-	person_event SPRITE_YOUNGSTER, 31, 15, $2, $11, 255, 255, $80, 0, YoungsterScript_0x5c924, EVENT_71D
-	person_event SPRITE_YOUNGSTER, 12, 20, $2, $11, 255, 255, $a0, 0, YoungsterScript_0x5c92c, EVENT_71E
-	person_event SPRITE_YOUNGSTER, 38, 21, $2, $33, 255, 255, $90, 0, YoungsterScript_0x5c934, EVENT_71F
-	person_event SPRITE_POKE_BALL, 16, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x5c945, EVENT_658
-	person_event SPRITE_POKE_BALL, 47, 5, $1, $0, 255, 255, $1, 0, ItemFragment_0x5c947, EVENT_659
+	person_event SPRITE_YOUNGSTER, 33, 23, DOWN << 2 | $2, $22, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x5c8ec, EVENT_BUG_CATCHING_CONTESTANT_1A
+	person_event SPRITE_YOUNGSTER, 26, 32, DOWN << 2 | $2, $22, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x5c8f4, EVENT_BUG_CATCHING_CONTESTANT_2A
+	person_event SPRITE_ROCKER, 22, 13, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, RockerScript_0x5c8fc, EVENT_BUG_CATCHING_CONTESTANT_3A
+	person_event SPRITE_POKEFAN_M, 17, 11, UP << 2 | $0, $1, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x5c904, EVENT_BUG_CATCHING_CONTESTANT_4A
+	person_event SPRITE_YOUNGSTER, 13, 27, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x5c90c, EVENT_BUG_CATCHING_CONTESTANT_5A
+	person_event SPRITE_YOUNGSTER, 17, 31, DOWN << 2 | $2, $33, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x5c914, EVENT_BUG_CATCHING_CONTESTANT_6A
+	person_event SPRITE_LASS, 27, 11, UP << 2 | $1, $2, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x5c91c, EVENT_BUG_CATCHING_CONTESTANT_7A
+	person_event SPRITE_YOUNGSTER, 31, 15, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x5c924, EVENT_BUG_CATCHING_CONTESTANT_8A
+	person_event SPRITE_YOUNGSTER, 12, 20, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x5c92c, EVENT_BUG_CATCHING_CONTESTANT_9A
+	person_event SPRITE_YOUNGSTER, 38, 21, DOWN << 2 | $2, $33, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x5c934, EVENT_BUG_CATCHING_CONTESTANT_10A
+	person_event SPRITE_POKE_BALL, 16, 39, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5c945, EVENT_658
+	person_event SPRITE_POKE_BALL, 47, 5, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5c947, EVENT_659
--- a/maps/NewBarkTown.asm
+++ b/maps/NewBarkTown.asm
@@ -298,13 +298,13 @@
 
 	; signposts
 	db 4
-	signpost 8, 8, $0, MapNewBarkTownSignpost0Script
-	signpost 5, 11, $0, MapNewBarkTownSignpost1Script
-	signpost 3, 3, $0, MapNewBarkTownSignpost2Script
-	signpost 13, 9, $0, MapNewBarkTownSignpost3Script
+	signpost 8, 8, SIGNPOST_READ, MapNewBarkTownSignpost0Script
+	signpost 5, 11, SIGNPOST_READ, MapNewBarkTownSignpost1Script
+	signpost 3, 3, SIGNPOST_READ, MapNewBarkTownSignpost2Script
+	signpost 13, 9, SIGNPOST_READ, MapNewBarkTownSignpost3Script
 
 	; people-events
 	db 3
-	person_event SPRITE_TEACHER, 12, 10, $3, $1, 255, 255, $0, 0, TeacherScript_0x1a806f, -1
-	person_event SPRITE_FISHER, 13, 16, $4, $10, 255, 255, $a0, 0, FisherScript_0x1a809b, -1
-	person_event SPRITE_SILVER, 6, 7, $9, $0, 255, 255, $0, 0, SilverScript_0x1a809e, EVENT_6BD
+	person_event SPRITE_TEACHER, 12, 10, DOWN << 2 | $3, $1, -1, -1, $0, 0, TeacherScript_0x1a806f, -1
+	person_event SPRITE_FISHER, 13, 16, UP << 2 | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x1a809b, -1
+	person_event SPRITE_SILVER, 6, 7, LEFT << 2 | $1, $0, -1, -1, $0, 0, SilverScript_0x1a809e, EVENT_6BD
--- a/maps/OaksLab.asm
+++ b/maps/OaksLab.asm
@@ -264,26 +264,26 @@
 
 	; signposts
 	db 16
-	signpost 1, 6, $0, OaksLabBookshelf
-	signpost 1, 7, $0, OaksLabBookshelf
-	signpost 1, 8, $0, OaksLabBookshelf
-	signpost 1, 9, $0, OaksLabBookshelf
-	signpost 7, 0, $0, OaksLabBookshelf
-	signpost 7, 1, $0, OaksLabBookshelf
-	signpost 7, 2, $0, OaksLabBookshelf
-	signpost 7, 3, $0, OaksLabBookshelf
-	signpost 7, 6, $0, OaksLabBookshelf
-	signpost 7, 7, $0, OaksLabBookshelf
-	signpost 7, 8, $0, OaksLabBookshelf
-	signpost 7, 9, $0, OaksLabBookshelf
-	signpost 0, 4, $0, OaksLabPoster1
-	signpost 0, 5, $0, OaksLabPoster2
-	signpost 3, 9, $0, OaksLabTrashcan
-	signpost 1, 0, $0, OaksLabPC
+	signpost 1, 6, SIGNPOST_READ, OaksLabBookshelf
+	signpost 1, 7, SIGNPOST_READ, OaksLabBookshelf
+	signpost 1, 8, SIGNPOST_READ, OaksLabBookshelf
+	signpost 1, 9, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 0, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 1, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 2, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 3, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 6, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 7, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 8, SIGNPOST_READ, OaksLabBookshelf
+	signpost 7, 9, SIGNPOST_READ, OaksLabBookshelf
+	signpost 0, 4, SIGNPOST_READ, OaksLabPoster1
+	signpost 0, 5, SIGNPOST_READ, OaksLabPoster2
+	signpost 3, 9, SIGNPOST_READ, OaksLabTrashcan
+	signpost 1, 0, SIGNPOST_READ, OaksLabPC
 
 	; people-events
 	db 4
-	person_event SPRITE_OAK, 6, 8, $6, $0, 255, 255, $0, 0, Oak, -1
-	person_event SPRITE_SCIENTIST, 12, 5, $5, $1, 255, 255, $90, 0, ScientistScript_0x19b40f, -1
-	person_event SPRITE_SCIENTIST, 13, 12, $4, $10, 255, 255, $90, 0, ScientistScript_0x19b412, -1
-	person_event SPRITE_SCIENTIST, 8, 5, $2, $11, 255, 255, $90, 0, ScientistScript_0x19b415, -1
+	person_event SPRITE_OAK, 6, 8, UP << 2 | $2, $0, -1, -1, $0, 0, Oak, -1
+	person_event SPRITE_SCIENTIST, 12, 5, UP << 2 | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x19b40f, -1
+	person_event SPRITE_SCIENTIST, 13, 12, UP << 2 | $0, $10, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x19b412, -1
+	person_event SPRITE_SCIENTIST, 8, 5, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x19b415, -1
--- a/maps/OlivineCafe.asm
+++ b/maps/OlivineCafe.asm
@@ -90,6 +90,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_SAILOR, 7, 8, $8, $0, 255, 255, $0, 0, SailorScript_0x9c8c1, -1
-	person_event SPRITE_FISHING_GURU, 7, 11, $4, $10, 255, 255, $0, 0, FishingGuruScript_0x9c8d9, -1
-	person_event SPRITE_SAILOR, 10, 10, $7, $0, 255, 255, $0, 0, SailorScript_0x9c8dc, -1
+	person_event SPRITE_SAILOR, 7, 8, LEFT << 2 | $0, $0, -1, -1, $0, 0, SailorScript_0x9c8c1, -1
+	person_event SPRITE_FISHING_GURU, 7, 11, UP << 2 | $0, $10, -1, -1, $0, 0, FishingGuruScript_0x9c8d9, -1
+	person_event SPRITE_SAILOR, 10, 10, UP << 2 | $3, $0, -1, -1, $0, 0, SailorScript_0x9c8dc, -1
--- a/maps/OlivineCity.asm
+++ b/maps/OlivineCity.asm
@@ -310,17 +310,17 @@
 
 	; signposts
 	db 7
-	signpost 11, 17, $0, OlivineCitySign
-	signpost 24, 20, $0, OlivineCityPortSign
-	signpost 11, 7, $0, OlivineGymSign
-	signpost 28, 30, $0, OlivineLighthouseSign
-	signpost 23, 3, $0, OlivineCityBattleTowerSign
-	signpost 21, 14, $0, OlivineCityPokeCenterSign
-	signpost 17, 20, $0, OlivineCityMartSign
+	signpost 11, 17, SIGNPOST_READ, OlivineCitySign
+	signpost 24, 20, SIGNPOST_READ, OlivineCityPortSign
+	signpost 11, 7, SIGNPOST_READ, OlivineGymSign
+	signpost 28, 30, SIGNPOST_READ, OlivineLighthouseSign
+	signpost 23, 3, SIGNPOST_READ, OlivineCityBattleTowerSign
+	signpost 21, 14, SIGNPOST_READ, OlivineCityPokeCenterSign
+	signpost 17, 20, SIGNPOST_READ, OlivineCityMartSign
 
 	; people-events
 	db 4
-	person_event SPRITE_SAILOR, 31, 30, $4, $10, 255, 255, $0, 0, SailorScript_0x1a88a3, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 17, 24, $3, $0, 255, 255, $80, 0, StandingYoungsterScript_0x1a88a6, -1
-	person_event SPRITE_SAILOR, 25, 21, $2, $11, 255, 255, $0, 0, SailorScript_0x1a88ba, -1
-	person_event SPRITE_OLIVINE_RIVAL, 15, 14, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6C3
+	person_event SPRITE_SAILOR, 31, 30, UP << 2 | $0, $10, -1, -1, $0, 0, SailorScript_0x1a88a3, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 17, 24, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, StandingYoungsterScript_0x1a88a6, -1
+	person_event SPRITE_SAILOR, 25, 21, DOWN << 2 | $2, $11, -1, -1, $0, 0, SailorScript_0x1a88ba, -1
+	person_event SPRITE_OLIVINE_RIVAL, 15, 14, UP << 2 | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6C3
--- a/maps/OlivineGoodRodHouse.asm
+++ b/maps/OlivineGoodRodHouse.asm
@@ -96,4 +96,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_FISHING_GURU, 7, 6, $6, $0, 255, 255, $a0, 0, GoodRodGuru, -1
+	person_event SPRITE_FISHING_GURU, 7, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GoodRodGuru, -1
--- a/maps/OlivineGym.asm
+++ b/maps/OlivineGym.asm
@@ -207,10 +207,10 @@
 
 	; signposts
 	db 2
-	signpost 13, 3, $0, OlivineGymStatue
-	signpost 13, 6, $0, OlivineGymStatue
+	signpost 13, 3, SIGNPOST_READ, OlivineGymStatue
+	signpost 13, 6, SIGNPOST_READ, OlivineGymStatue
 
 	; people-events
 	db 2
-	person_event SPRITE_JASMINE, 7, 9, $6, $0, 255, 255, $80, 0, JasmineScript_0x9c12f, EVENT_6D3
-	person_event SPRITE_GYM_GUY, 17, 11, $6, $0, 255, 255, $80, 0, OlivineGymGuyScript, -1
+	person_event SPRITE_JASMINE, 7, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, JasmineScript_0x9c12f, EVENT_6D3
+	person_event SPRITE_GYM_GUY, 17, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OlivineGymGuyScript, -1
--- a/maps/OlivineHouseBeta.asm
+++ b/maps/OlivineHouseBeta.asm
@@ -49,10 +49,10 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, OlivineHouseBetaBookshelf1
-	signpost 1, 1, $0, OlivineHouseBetaBookshelf2
+	signpost 1, 0, SIGNPOST_READ, OlivineHouseBetaBookshelf1
+	signpost 1, 1, SIGNPOST_READ, OlivineHouseBetaBookshelf2
 
 	; people-events
 	db 2
-	person_event SPRITE_TEACHER, 7, 6, $3, $0, 255, 255, $0, 0, TeacherScript_0x9c58f, -1
-	person_event SPRITE_RHYDON, 8, 10, $4, $20, 255, 255, $0, 0, RhydonScript_0x9c592, -1
+	person_event SPRITE_TEACHER, 7, 6, DOWN << 2 | $3, $0, -1, -1, $0, 0, TeacherScript_0x9c58f, -1
+	person_event SPRITE_RHYDON, 8, 10, UP << 2 | $0, $20, -1, -1, $0, 0, RhydonScript_0x9c592, -1
--- a/maps/OlivineLighthouse1F.asm
+++ b/maps/OlivineLighthouse1F.asm
@@ -52,5 +52,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_SAILOR, 6, 12, $6, $0, 255, 255, $0, 0, SailorScript_0x5ae67, -1
-	person_event SPRITE_POKEFAN_F, 13, 20, $4, $20, 255, 255, $0, 0, PokefanFScript_0x5ae6a, -1
+	person_event SPRITE_SAILOR, 6, 12, UP << 2 | $2, $0, -1, -1, $0, 0, SailorScript_0x5ae67, -1
+	person_event SPRITE_POKEFAN_F, 13, 20, UP << 2 | $0, $20, -1, -1, $0, 0, PokefanFScript_0x5ae6a, -1
--- a/maps/OlivineLighthouse2F.asm
+++ b/maps/OlivineLighthouse2F.asm
@@ -253,5 +253,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_SAILOR, 7, 13, $9, $0, 255, 255, $92, 3, TrainerSailorHuey1, -1
-	person_event SPRITE_GENTLEMAN, 12, 21, $8, $0, 255, 255, $92, 3, TrainerGentlemanAlfred, -1
+	person_event SPRITE_SAILOR, 7, 13, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSailorHuey1, -1
+	person_event SPRITE_GENTLEMAN, 12, 21, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerGentlemanAlfred, -1
--- a/maps/OlivineLighthouse3F.asm
+++ b/maps/OlivineLighthouse3F.asm
@@ -178,7 +178,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_SAILOR, 6, 13, $6, $0, 255, 255, $92, 1, TrainerSailorTerrell, -1
-	person_event SPRITE_GENTLEMAN, 9, 17, $9, $0, 255, 255, $92, 4, TrainerGentlemanPreston, -1
-	person_event SPRITE_YOUNGSTER, 13, 7, $7, $0, 255, 255, $92, 3, TrainerBird_keeperTheo, -1
-	person_event SPRITE_POKE_BALL, 6, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x5b279, EVENT_664
+	person_event SPRITE_SAILOR, 6, 13, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerSailorTerrell, -1
+	person_event SPRITE_GENTLEMAN, 9, 17, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerGentlemanPreston, -1
+	person_event SPRITE_YOUNGSTER, 13, 7, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperTheo, -1
+	person_event SPRITE_POKE_BALL, 6, 12, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5b279, EVENT_664
--- a/maps/OlivineLighthouse4F.asm
+++ b/maps/OlivineLighthouse4F.asm
@@ -134,5 +134,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_SAILOR, 18, 11, $8, $0, 255, 255, $92, 3, TrainerSailorKent, -1
-	person_event SPRITE_LASS, 6, 15, $6, $0, 255, 255, $92, 1, TrainerLassConnie, -1
+	person_event SPRITE_SAILOR, 18, 11, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSailorKent, -1
+	person_event SPRITE_LASS, 6, 15, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerLassConnie, -1
--- a/maps/OlivineLighthouse5F.asm
+++ b/maps/OlivineLighthouse5F.asm
@@ -136,12 +136,12 @@
 
 	; signposts
 	db 1
-	signpost 13, 3, $7, MapOlivineLighthouse5FSignpostItem0
+	signpost 13, 3, SIGNPOST_ITEMIFSET, MapOlivineLighthouse5FSignpostItem0
 
 	; people-events
 	db 5
-	person_event SPRITE_SAILOR, 15, 12, $a, $0, 255, 255, $92, 3, TrainerSailorErnest, -1
-	person_event SPRITE_YOUNGSTER, 7, 12, $8, $0, 255, 255, $92, 4, TrainerBird_keeperDenis, -1
-	person_event SPRITE_POKE_BALL, 16, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x609aa, EVENT_665
-	person_event SPRITE_POKE_BALL, 19, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x609ac, EVENT_666
-	person_event SPRITE_POKE_BALL, 17, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x609ae, EVENT_667
+	person_event SPRITE_SAILOR, 15, 12, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSailorErnest, -1
+	person_event SPRITE_YOUNGSTER, 7, 12, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerBird_keeperDenis, -1
+	person_event SPRITE_POKE_BALL, 16, 19, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x609aa, EVENT_665
+	person_event SPRITE_POKE_BALL, 19, 10, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x609ac, EVENT_666
+	person_event SPRITE_POKE_BALL, 17, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x609ae, EVENT_667
--- a/maps/OlivineLighthouse6F.asm
+++ b/maps/OlivineLighthouse6F.asm
@@ -270,6 +270,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_JASMINE, 12, 12, $6, $0, 255, 255, $80, 0, JasmineScript_0x60b91, EVENT_6D2
-	person_event SPRITE_MONSTER, 12, 13, $6, $0, 255, 255, $b0, 0, MonsterScript_0x60c3a, -1
-	person_event SPRITE_POKE_BALL, 8, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x60c66, EVENT_668
+	person_event SPRITE_JASMINE, 12, 12, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, JasmineScript_0x60b91, EVENT_6D2
+	person_event SPRITE_MONSTER, 12, 13, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, MonsterScript_0x60c3a, -1
+	person_event SPRITE_POKE_BALL, 8, 7, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x60c66, EVENT_668
--- a/maps/OlivineMart.asm
+++ b/maps/OlivineMart.asm
@@ -57,6 +57,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x9cac7, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 10, $5, $2, 255, 255, $a0, 0, CooltrainerFScript_0x9cace, -1
-	person_event SPRITE_LASS, 10, 5, $8, $0, 255, 255, $0, 0, LassScript_0x9cad1, -1
+	person_event SPRITE_CLERK, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x9cac7, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 10, UP << 2 | $1, $2, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x9cace, -1
+	person_event SPRITE_LASS, 10, 5, LEFT << 2 | $0, $0, -1, -1, $0, 0, LassScript_0x9cad1, -1
--- a/maps/OlivinePokeCenter1F.asm
+++ b/maps/OlivinePokeCenter1F.asm
@@ -59,7 +59,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x9c002, -1
-	person_event SPRITE_FISHING_GURU, 8, 12, $5, $1, 255, 255, $0, 0, FishingGuruScript_0x9c005, -1
-	person_event SPRITE_FISHER, 7, 6, $6, $0, 255, 255, $a0, 0, FisherScript_0x9c008, -1
-	person_event SPRITE_TEACHER, 5, 11, $6, $0, 255, 255, $0, 0, TeacherScript_0x9c00b, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x9c002, -1
+	person_event SPRITE_FISHING_GURU, 8, 12, UP << 2 | $1, $1, -1, -1, $0, 0, FishingGuruScript_0x9c005, -1
+	person_event SPRITE_FISHER, 7, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x9c008, -1
+	person_event SPRITE_TEACHER, 5, 11, UP << 2 | $2, $0, -1, -1, $0, 0, TeacherScript_0x9c00b, -1
--- a/maps/OlivinePort.asm
+++ b/maps/OlivinePort.asm
@@ -20,7 +20,7 @@
 	applymovement $0, MovementData_0x74a32
 	appear $2
 	dotrigger $0
-	setevent EVENT_000
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
 	blackoutmod GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY
 	end
 
@@ -27,7 +27,7 @@
 SailorScript_0x748c0:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x74919
 	writetext UnknownText_0x74a55
 	closetext
@@ -69,9 +69,9 @@
 
 UnknownScript_0x7491f:
 	spriteface $4, RIGHT
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x7498b
-	checkevent EVENT_001
+	checkevent EVENT_CHRIS2_IN_CABLE_CLUB
 	iftrue UnknownScript_0x7498b
 	spriteface $0, LEFT
 	loadfont
@@ -94,7 +94,7 @@
 	writetext UnknownText_0x74b11
 	closetext
 	loadmovesprites
-	setevent EVENT_001
+	setevent EVENT_CHRIS2_IN_CABLE_CLUB
 	applymovement $0, MovementData_0x74a37
 	jump SailorScript_0x748c0
 
@@ -138,7 +138,7 @@
 SailorScript_0x7499c:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x74919
 	checkevent EVENT_030
 	iffalse UnknownScript_0x749c0
@@ -159,7 +159,7 @@
 	writetext UnknownText_0x74b11
 	closetext
 	loadmovesprites
-	setevent EVENT_001
+	setevent EVENT_CHRIS2_IN_CABLE_CLUB
 	checkcode VAR_FACING
 	if_equal $3, UnknownScript_0x749e5
 	applymovement $0, MovementData_0x74a3f
@@ -394,14 +394,14 @@
 
 	; signposts
 	db 1
-	signpost 22, 1, $7, MapOlivinePortSignpostItem0
+	signpost 22, 1, SIGNPOST_ITEMIFSET, MapOlivinePortSignpostItem0
 
 	; people-events
 	db 7
-	person_event SPRITE_SAILOR, 27, 11, $7, $0, 255, 255, $0, 0, SailorScript_0x748c0, EVENT_72A
-	person_event SPRITE_SAILOR, 19, 11, $7, $0, 255, 255, $0, 0, SailorScript_0x749fe, EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
-	person_event SPRITE_SAILOR, 19, 10, $9, $0, 255, 255, $0, 0, SailorScript_0x7499c, EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
-	person_event SPRITE_FISHING_GURU, 18, 8, $7, $0, 255, 255, $0, 0, FishingGuruScript_0x74a01, EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
-	person_event SPRITE_FISHING_GURU, 18, 17, $7, $0, 255, 255, $0, 0, FishingGuruScript_0x74a0c, EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
-	person_event SPRITE_YOUNGSTER, 19, 8, $6, $0, 255, 255, $0, 0, YoungsterScript_0x74a17, EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
-	person_event SPRITE_COOLTRAINER_F, 19, 15, $6, $0, 255, 255, $0, 0, CooltrainerFScript_0x74a22, EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
+	person_event SPRITE_SAILOR, 27, 11, UP << 2 | $3, $0, -1, -1, $0, 0, SailorScript_0x748c0, EVENT_72A
+	person_event SPRITE_SAILOR, 19, 11, UP << 2 | $3, $0, -1, -1, $0, 0, SailorScript_0x749fe, EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
+	person_event SPRITE_SAILOR, 19, 10, LEFT << 2 | $1, $0, -1, -1, $0, 0, SailorScript_0x7499c, EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
+	person_event SPRITE_FISHING_GURU, 18, 8, UP << 2 | $3, $0, -1, -1, $0, 0, FishingGuruScript_0x74a01, EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
+	person_event SPRITE_FISHING_GURU, 18, 17, UP << 2 | $3, $0, -1, -1, $0, 0, FishingGuruScript_0x74a0c, EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
+	person_event SPRITE_YOUNGSTER, 19, 8, UP << 2 | $2, $0, -1, -1, $0, 0, YoungsterScript_0x74a17, EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
+	person_event SPRITE_COOLTRAINER_F, 19, 15, UP << 2 | $2, $0, -1, -1, $0, 0, CooltrainerFScript_0x74a22, EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
--- a/maps/OlivinePortPassage.asm
+++ b/maps/OlivinePortPassage.asm
@@ -36,4 +36,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_POKEFAN_M, 5, 21, $8, $0, 255, 255, $0, 0, PokefanMScript_0x76fac, EVENT_733
+	person_event SPRITE_POKEFAN_M, 5, 21, LEFT << 2 | $0, $0, -1, -1, $0, 0, PokefanMScript_0x76fac, EVENT_733
--- a/maps/OlivinePunishmentSpeechHouse.asm
+++ b/maps/OlivinePunishmentSpeechHouse.asm
@@ -49,10 +49,10 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, OlivinePunishmentSpeechHouseBookshelf1
-	signpost 1, 1, $0, OlivinePunishmentSpeechHouseBookshelf2
+	signpost 1, 0, SIGNPOST_READ, OlivinePunishmentSpeechHouseBookshelf1
+	signpost 1, 1, SIGNPOST_READ, OlivinePunishmentSpeechHouseBookshelf2
 
 	; people-events
 	db 2
-	person_event SPRITE_POKEFAN_M, 6, 5, $3, $0, 255, 255, $0, 0, OlivinePunishmentSpeechHouseDad, -1
-	person_event SPRITE_LASS, 9, 9, $5, $2, 255, 255, $0, 0, OlivinePunishmentSpeechHouseDaughter, -1
+	person_event SPRITE_POKEFAN_M, 6, 5, DOWN << 2 | $3, $0, -1, -1, $0, 0, OlivinePunishmentSpeechHouseDad, -1
+	person_event SPRITE_LASS, 9, 9, UP << 2 | $1, $2, -1, -1, $0, 0, OlivinePunishmentSpeechHouseDaughter, -1
--- a/maps/OlivineVoltorbHouse.asm
+++ b/maps/OlivineVoltorbHouse.asm
@@ -30,9 +30,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, TimsHouseBookshelf
-	signpost 1, 1, $0, TimsHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, TimsHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, TimsHouseBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_FISHING_GURU, 7, 6, $3, $0, 255, 255, $80, 0, Tim, -1
+	person_event SPRITE_FISHING_GURU, 7, 6, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, Tim, -1
--- a/maps/PalletTown.asm
+++ b/maps/PalletTown.asm
@@ -82,12 +82,12 @@
 
 	; signposts
 	db 4
-	signpost 9, 7, $0, PalletTownSign
-	signpost 5, 3, $0, RedsHouseSign
-	signpost 13, 13, $0, OaksLabSign
-	signpost 5, 11, $0, BluesHouseSign
+	signpost 9, 7, SIGNPOST_READ, PalletTownSign
+	signpost 5, 3, SIGNPOST_READ, RedsHouseSign
+	signpost 13, 13, SIGNPOST_READ, OaksLabSign
+	signpost 5, 11, SIGNPOST_READ, BluesHouseSign
 
 	; people-events
 	db 2
-	person_event SPRITE_TEACHER, 12, 7, $2, $22, 255, 255, $0, 0, TeacherScript_0x1ac6d5, -1
-	person_event SPRITE_FISHER, 18, 16, $5, $2, 255, 255, $a0, 0, FisherScript_0x1ac6d8, -1
+	person_event SPRITE_TEACHER, 12, 7, DOWN << 2 | $2, $22, -1, -1, $0, 0, TeacherScript_0x1ac6d5, -1
+	person_event SPRITE_FISHER, 18, 16, UP << 2 | $1, $2, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x1ac6d8, -1
--- a/maps/PewterCity.asm
+++ b/maps/PewterCity.asm
@@ -164,18 +164,18 @@
 
 	; signposts
 	db 7
-	signpost 23, 25, $0, PewterCitySign
-	signpost 17, 11, $0, PewterGymSign
-	signpost 9, 15, $0, PewterMuseumSign
-	signpost 19, 33, $0, PewterCityMtMoonGiftShopSign
-	signpost 29, 19, $0, PewterCityWelcomeSign
-	signpost 25, 14, $0, PewterCityPokeCenterSign
-	signpost 17, 24, $0, PewterCityMartSign
+	signpost 23, 25, SIGNPOST_READ, PewterCitySign
+	signpost 17, 11, SIGNPOST_READ, PewterGymSign
+	signpost 9, 15, SIGNPOST_READ, PewterMuseumSign
+	signpost 19, 33, SIGNPOST_READ, PewterCityMtMoonGiftShopSign
+	signpost 29, 19, SIGNPOST_READ, PewterCityWelcomeSign
+	signpost 25, 14, SIGNPOST_READ, PewterCityPokeCenterSign
+	signpost 17, 24, SIGNPOST_READ, PewterCityMartSign
 
 	; people-events
 	db 5
-	person_event SPRITE_COOLTRAINER_F, 15, 23, $2, $22, 255, 255, $a0, 0, CooltrainerFScript_0x18c009, -1
-	person_event SPRITE_BUG_CATCHER, 33, 18, $2, $22, 255, 255, $80, 0, BugCatcherScript_0x18c00c, -1
-	person_event SPRITE_GRAMPS, 21, 33, $5, $2, 255, 255, $90, 0, GrampsScript_0x18c00f, -1
-	person_event SPRITE_FRUIT_TREE, 7, 36, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x18c03e, -1
-	person_event SPRITE_FRUIT_TREE, 7, 34, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x18c040, -1
+	person_event SPRITE_COOLTRAINER_F, 15, 23, DOWN << 2 | $2, $22, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x18c009, -1
+	person_event SPRITE_BUG_CATCHER, 33, 18, DOWN << 2 | $2, $22, -1, -1, (PAL_OW_RED << 4) | $80, 0, BugCatcherScript_0x18c00c, -1
+	person_event SPRITE_GRAMPS, 21, 33, UP << 2 | $1, $2, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrampsScript_0x18c00f, -1
+	person_event SPRITE_FRUIT_TREE, 7, 36, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x18c03e, -1
+	person_event SPRITE_FRUIT_TREE, 7, 34, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x18c040, -1
--- a/maps/PewterGym.asm
+++ b/maps/PewterGym.asm
@@ -233,11 +233,11 @@
 
 	; signposts
 	db 2
-	signpost 11, 2, $0, PewterGymStatue
-	signpost 11, 7, $0, PewterGymStatue
+	signpost 11, 2, SIGNPOST_READ, PewterGymStatue
+	signpost 11, 7, SIGNPOST_READ, PewterGymStatue
 
 	; people-events
 	db 3
-	person_event SPRITE_BROCK, 5, 9, $6, $0, 255, 255, $b0, 0, BrockScript_0x1a2864, -1
-	person_event SPRITE_YOUNGSTER, 9, 6, $9, $0, 255, 255, $a2, 3, TrainerCamperJerry, -1
-	person_event SPRITE_GYM_GUY, 15, 10, $6, $0, 255, 255, $90, 1, PewterGymGuyScript, -1
+	person_event SPRITE_BROCK, 5, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, BrockScript_0x1a2864, -1
+	person_event SPRITE_YOUNGSTER, 9, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerCamperJerry, -1
+	person_event SPRITE_GYM_GUY, 15, 10, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 1, PewterGymGuyScript, -1
--- a/maps/PewterMart.asm
+++ b/maps/PewterMart.asm
@@ -57,6 +57,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x1a2dcb, -1
-	person_event SPRITE_YOUNGSTER, 6, 13, $5, $2, 255, 255, $0, 0, YoungsterScript_0x1a2dd2, -1
-	person_event SPRITE_SUPER_NERD, 10, 10, $3, $0, 255, 255, $80, 0, SuperNerdScript_0x1a2dd5, -1
+	person_event SPRITE_CLERK, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x1a2dcb, -1
+	person_event SPRITE_YOUNGSTER, 6, 13, UP << 2 | $1, $2, -1, -1, $0, 0, YoungsterScript_0x1a2dd2, -1
+	person_event SPRITE_SUPER_NERD, 10, 10, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x1a2dd5, -1
--- a/maps/PewterNidoranSpeechHouse.asm
+++ b/maps/PewterNidoranSpeechHouse.asm
@@ -41,5 +41,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_SUPER_NERD, 9, 7, $9, $0, 255, 255, $a0, 0, SuperNerdScript_0x1a2807, -1
-	person_event SPRITE_GROWLITHE, 9, 8, $16, $0, 255, 255, $90, 0, GrowlitheScript_0x1a280a, -1
+	person_event SPRITE_SUPER_NERD, 9, 7, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x1a2807, -1
+	person_event SPRITE_GROWLITHE, 9, 8, UP << 2 | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrowlitheScript_0x1a280a, -1
--- a/maps/PewterPokeCenter1F.asm
+++ b/maps/PewterPokeCenter1F.asm
@@ -78,8 +78,8 @@
 
 	; people-events
 	db 5
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x1a2ee7, -1
-	person_event SPRITE_TEACHER, 10, 12, $6, $0, 255, 255, $a0, 0, TeacherScript_0x1a2eea, -1
-	person_event SPRITE_JIGGLYPUFF, 7, 5, $16, $0, 255, 255, $0, 0, JigglypuffScript_0x1a2eed, -1
-	person_event SPRITE_BUG_CATCHER, 7, 6, $6, $0, 255, 255, $90, 0, BugCatcherScript_0x1a2ef7, -1
-	person_event SPRITE_POKEFAN_M, 6, 11, $6, $0, 255, 255, $80, 0, PokefanMScript_0x1a2efa, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x1a2ee7, -1
+	person_event SPRITE_TEACHER, 10, 12, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x1a2eea, -1
+	person_event SPRITE_JIGGLYPUFF, 7, 5, UP << 2 | $12, $0, -1, -1, $0, 0, JigglypuffScript_0x1a2eed, -1
+	person_event SPRITE_BUG_CATCHER, 7, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, BugCatcherScript_0x1a2ef7, -1
+	person_event SPRITE_POKEFAN_M, 6, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x1a2efa, -1
--- a/maps/PewterSnoozeSpeechHouse.asm
+++ b/maps/PewterSnoozeSpeechHouse.asm
@@ -31,9 +31,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, PewterSnoozeSpeechHouseBookshelf
-	signpost 1, 1, $0, PewterSnoozeSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, PewterSnoozeSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, PewterSnoozeSpeechHouseBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_GRAMPS, 7, 9, $8, $0, 255, 255, $90, 0, GrampsScript_0x1a3059, -1
+	person_event SPRITE_GRAMPS, 7, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrampsScript_0x1a3059, -1
--- a/maps/PokeCenter2F.asm
+++ b/maps/PokeCenter2F.asm
@@ -3,430 +3,430 @@
 	db 6
 
 	; triggers
-	dw UnknownScript_0x19285f, $0000
-	dw UnknownScript_0x192873, $0000
-	dw UnknownScript_0x192877, $0000
-	dw UnknownScript_0x19287b, $0000
-	dw UnknownScript_0x19287f, $0000
-	dw UnknownScript_0x192883, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
+	dw .Trigger3, $0000
+	dw .Trigger4, $0000
+	dw .Trigger5, $0000
+	dw .Trigger6, $0000
 
 	; callback count
 	db 0
 
-UnknownScript_0x19285f:
-	special Functionc2f6
-	if_equal $0, UnknownScript_0x192872
-	clearevent EVENT_711
-	checkevent EVENT_001
-	iftrue UnknownScript_0x192872
-	priorityjump UnknownScript_0x192887
+.Trigger1:
+	special Special_CheckMysteryGift
+	if_equal $0, .Trigger1Done
+	clearevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
+	checkevent EVENT_CHRIS2_IN_CABLE_CLUB
+	iftrue .Trigger1Done
+	priorityjump PokeCenter2F_AppearMysteryGiftDeliveryGuy
 
-UnknownScript_0x192872:
+.Trigger1Done:
 	end
 
-UnknownScript_0x192873:
-	priorityjump UnknownScript_0x192ab6
+.Trigger2:
+	priorityjump Script_LeftCableTradeCenter
 	end
 
-UnknownScript_0x192877:
-	priorityjump UnknownScript_0x192add
+.Trigger3:
+	priorityjump Script_LeftCableColosseum
 	end
 
-UnknownScript_0x19287b:
-	priorityjump UnknownScript_0x192c4e
+.Trigger4:
+	priorityjump Script_LeftTimeCapsule
 	end
 
-UnknownScript_0x19287f:
-	priorityjump UnknownScript_0x192ac3
+.Trigger5:
+	priorityjump Script_LeftMobileTradeRoom
 	end
 
-UnknownScript_0x192883:
-	priorityjump UnknownScript_0x192aea
+.Trigger6:
+	priorityjump Script_LeftMobileBattleRoom
 	end
 
-UnknownScript_0x192887:
+PokeCenter2F_AppearMysteryGiftDeliveryGuy:
 	appear $5
-	setevent EVENT_001
+	setevent EVENT_CHRIS2_IN_CABLE_CLUB
 	end
 
-UnknownScript_0x19288d:
+Script_TradeCenterClosed:
 	faceplayer
 	loadfont
-	writetext UnknownText_0x19312f
+	writetext Text_TradeRoomClosed
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x192895:
+Script_BattleRoomClosed:
 	faceplayer
 	loadfont
-	writetext UnknownText_0x19315f
+	writetext Text_BattleRoomClosed
 	closetext
 	loadmovesprites
 	end
 
-LinkReceptionistScript_0x19289d:
+LinkReceptionistScript_Trade:
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
-	iffalse UnknownScript_0x19288d
+	iffalse Script_TradeCenterClosed
 	loadfont
-	writetext UnknownText_0x192e3a
+	writetext Text_TradeReceptionistIntro
 	yesorno
-	iffalse UnknownScript_0x19291d
+	iffalse .Cancel
 	special Function10630f
-	iffalse UnknownScript_0x1928be
-	writetext UnknownText_0x192d7e
+	iffalse .NoMobile
+	writetext Text_TradeReceptionistMobile
 	special Function103612
-	iffalse UnknownScript_0x19291d
-	if_equal $1, UnknownScript_0x19291f
-UnknownScript_0x1928be:
-	special Function29ce8
-	writetext UnknownText_0x192f67
-	special Function29d11
-	iffalse UnknownScript_0x1928f6
-	writetext UnknownText_0x192f34
+	iffalse .Cancel
+	if_equal $1, .Mobile
+.NoMobile:
+	special Special_SetBitsForLinkTradeRequest
+	writetext Text_PleaseWait
+	special Special_WaitForLinkedFriend
+	iffalse .FriendNotReady
+	writetext Text_MustSaveGame
 	yesorno
-	iffalse UnknownScript_0x192917
-	special Function29e66
-	iffalse UnknownScript_0x192917
-	writetext UnknownText_0x192f67
-	special Function29d92
-	iffalse UnknownScript_0x192911
+	iffalse .DidNotSave
+	special Special_TryQuickSave
+	iffalse .DidNotSave
+	writetext Text_PleaseWait
+	special Special_CheckLinkTimeout
+	iffalse .LinkTimedOut
 	copybytetovar wcf51
-	iffalse UnknownScript_0x1928fe
-	special Function29e82
-	iffalse UnknownScript_0x192909
-	writetext UnknownText_0x19306b
+	iffalse .LinkedToFirstGen
+	special Special_CheckBothSelectedSameRoom
+	iffalse .IncompatibleRooms
+	writetext Text_PleaseComeIn2
 	closetext
 	loadmovesprites
-	scall UnknownScript_0x192b04
+	scall PokeCenter2F_CheckGender
 	warpcheck
 	end
 
-UnknownScript_0x1928f6:
-	special Function29c92
-	writetext UnknownText_0x192f19
+.FriendNotReady:
+	special Special_AbortLink
+	writetext Text_FriendNotReady
 	loadmovesprites
 	end
 
-UnknownScript_0x1928fe:
-	special Function29efa
-	writetext UnknownText_0x193029
-	special Function29eee
+.LinkedToFirstGen:
+	special Special_FailedLinkToPast
+	writetext Text_CantLinkToThePast
+	special Special_CloseLink
 	loadmovesprites
 	end
 
-UnknownScript_0x192909:
-	writetext UnknownText_0x19304a
-	special Function29eee
+.IncompatibleRooms:
+	writetext Text_IncompatibleRooms
+	special Special_CloseLink
 	loadmovesprites
 	end
 
-UnknownScript_0x192911:
-	writetext UnknownText_0x192f75
-	jump UnknownScript_0x19291a
+.LinkTimedOut:
+	writetext Text_LinkTimedOut
+	jump .AbortLink
 
-UnknownScript_0x192917:
-	writetext UnknownText_0x192fd1
-UnknownScript_0x19291a:
-	special Function29c92
-UnknownScript_0x19291d:
+.DidNotSave:
+	writetext Text_PleaseComeAgain
+.AbortLink:
+	special Special_AbortLink
+.Cancel:
 	loadmovesprites
 	end
 
-UnknownScript_0x19291f:
-	scall UnknownScript_0x19292b
-	iftrue UnknownScript_0x19292a
-	scall UnknownScript_0x19294a
+.Mobile:
+	scall .Mobile_TrySave
+	iftrue .Mobile_Abort
+	scall BattleTradeMobile_WalkIn
 	warpcheck
 	end
 
-UnknownScript_0x19292a:
+.Mobile_Abort:
 	end
 
-UnknownScript_0x19292b:
-	writetext UnknownText_0x192f34
+.Mobile_TrySave:
+	writetext Text_MustSaveGame
 	yesorno
-	iffalse UnknownScript_0x192943
-	special Function29e66
-	iffalse UnknownScript_0x192943
+	iffalse .Mobile_DidNotSave
+	special Special_TryQuickSave
+	iffalse .Mobile_DidNotSave
 	special Function1011f1
-	writetext UnknownText_0x19306b
+	writetext Text_PleaseComeIn2
 	closetext
 	loadmovesprites
 	writebyte $0
 	end
 
-UnknownScript_0x192943:
-	writetext UnknownText_0x192fd1
+.Mobile_DidNotSave:
+	writetext Text_PleaseComeAgain
 	loadmovesprites
 	writebyte $1
 	end
 
-UnknownScript_0x19294a:
+BattleTradeMobile_WalkIn:
 	applymovement2 MovementData_0x192cce
 	applymovement $0, MovementData_0x192ce7
 	end
 
-LinkReceptionistScript_0x192952:
+LinkReceptionistScript_Battle:
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
-	iffalse UnknownScript_0x192895
+	iffalse Script_BattleRoomClosed
 	loadfont
-	writetext UnknownText_0x192de0
+	writetext Text_BattleReceptionistIntro
 	yesorno
-	iffalse UnknownScript_0x1929d2
+	iffalse .Cancel
 	special Function10630f
-	iffalse UnknownScript_0x192973
-	writetext UnknownText_0x192d39
+	iffalse .NoMobile
+	writetext Text_BattleReceptionistMobile
 	special Function103612
-	iffalse UnknownScript_0x1929d2
-	if_equal $1, UnknownScript_0x1929d4
-UnknownScript_0x192973:
-	special Function29cf1
-	writetext UnknownText_0x192f67
-	special Function29d11
-	iffalse UnknownScript_0x1929ab
-	writetext UnknownText_0x192f34
+	iffalse .Cancel
+	if_equal $1, .Mobile
+.NoMobile:
+	special Special_SetBitsForBattleRequest
+	writetext Text_PleaseWait
+	special Special_WaitForLinkedFriend
+	iffalse .FriendNotReady
+	writetext Text_MustSaveGame
 	yesorno
-	iffalse UnknownScript_0x1929cc
-	special Function29e66
-	iffalse UnknownScript_0x1929cc
-	writetext UnknownText_0x192f67
-	special Function29d92
-	iffalse UnknownScript_0x1929c6
+	iffalse .DidNotSave
+	special Special_TryQuickSave
+	iffalse .DidNotSave
+	writetext Text_PleaseWait
+	special Special_CheckLinkTimeout
+	iffalse .LinkTimedOut
 	copybytetovar wcf51
-	iffalse UnknownScript_0x1929b3
-	special Function29e82
-	iffalse UnknownScript_0x1929be
-	writetext UnknownText_0x19306b
+	iffalse .LinkedToFirstGen
+	special Special_CheckBothSelectedSameRoom
+	iffalse .IncompatibleRooms
+	writetext Text_PleaseComeIn2
 	closetext
 	loadmovesprites
-	scall UnknownScript_0x192b04
+	scall PokeCenter2F_CheckGender
 	warpcheck
 	end
 
-UnknownScript_0x1929ab:
-	special Function29c92
-	writetext UnknownText_0x192f19
+.FriendNotReady:
+	special Special_AbortLink
+	writetext Text_FriendNotReady
 	loadmovesprites
 	end
 
-UnknownScript_0x1929b3:
-	special Function29efa
-	writetext UnknownText_0x193029
-	special Function29eee
+.LinkedToFirstGen:
+	special Special_FailedLinkToPast
+	writetext Text_CantLinkToThePast
+	special Special_CloseLink
 	loadmovesprites
 	end
 
-UnknownScript_0x1929be:
-	writetext UnknownText_0x19304a
-	special Function29eee
+.IncompatibleRooms:
+	writetext Text_IncompatibleRooms
+	special Special_CloseLink
 	loadmovesprites
 	end
 
-UnknownScript_0x1929c6:
-	writetext UnknownText_0x192f75
-	jump UnknownScript_0x1929cf
+.LinkTimedOut:
+	writetext Text_LinkTimedOut
+	jump .AbortLink
 
-UnknownScript_0x1929cc:
-	writetext UnknownText_0x192fd1
-UnknownScript_0x1929cf:
-	special Function29c92
-UnknownScript_0x1929d2:
+.DidNotSave:
+	writetext Text_PleaseComeAgain
+.AbortLink:
+	special Special_AbortLink
+.Cancel:
 	loadmovesprites
 	end
 
-UnknownScript_0x1929d4:
-	scall UnknownScript_0x192a05
-	iffalse UnknownScript_0x1929e5
-	scall UnknownScript_0x1929e6
-	iftrue UnknownScript_0x1929e5
-	scall UnknownScript_0x19294a
+.Mobile:
+	scall .SelectThreeMons
+	iffalse .Mobile_Abort
+	scall .Mobile_TrySave
+	iftrue .Mobile_Abort
+	scall BattleTradeMobile_WalkIn
 	warpcheck
 	end
 
-UnknownScript_0x1929e5:
+.Mobile_Abort:
 	end
 
-UnknownScript_0x1929e6:
-	writetext UnknownText_0x192f34
+.Mobile_TrySave:
+	writetext Text_MustSaveGame
 	yesorno
-	iffalse UnknownScript_0x1929fe
+	iffalse .Mobile_DidNotSave
 	special Function103780
-	iffalse UnknownScript_0x1929fe
+	iffalse .Mobile_DidNotSave
 	special Function1011f1
-	writetext UnknownText_0x19306b
+	writetext Text_PleaseComeIn2
 	closetext
 	loadmovesprites
 	writebyte $0
 	end
 
-UnknownScript_0x1929fe:
-	writetext UnknownText_0x192fd1
+.Mobile_DidNotSave:
+	writetext Text_PleaseComeAgain
 	loadmovesprites
 	writebyte $1
 	end
 
-UnknownScript_0x192a05:
-	special Function10366e
-	iffalse UnknownScript_0x192a1e
-	if_equal $1, UnknownScript_0x192a22
-	if_equal $2, UnknownScript_0x192a22
-	if_equal $3, UnknownScript_0x192a1a
-	jump UnknownScript_0x192a1e
+.SelectThreeMons:
+	special Mobile_SelectThreeMons
+	iffalse .Mobile_DidNotSelect
+	if_equal $1, .Mobile_OK
+	if_equal $2, .Mobile_OK
+	if_equal $3, .Mobile_InvalidParty
+	jump .Mobile_DidNotSelect
 
-UnknownScript_0x192a1a:
-	writetext UnknownText_0x1932bc
+.Mobile_InvalidParty:
+	writetext Text_BrokeStadiumRules
 	closetext
-UnknownScript_0x192a1e:
+.Mobile_DidNotSelect:
 	loadmovesprites
 	writebyte $0
 	end
 
-UnknownScript_0x192a22:
+.Mobile_OK:
 	writebyte $1
 	end
 
-UnknownScript_0x192a25:
+Script_TimeCapsuleClosed:
 	faceplayer
 	loadfont
-	writetext UnknownText_0x193100
+	writetext Text_TimeCapsuleClosed
 	closetext
 	loadmovesprites
 	end
 
-LinkReceptionistScript_0x192a2d:
+LinkReceptionistScript_TimeCapsule:
 	checkevent EVENT_MET_BILL
-	iftrue UnknownScript_0x192a25
+	iftrue Script_TimeCapsuleClosed
 	checkflag ENGINE_TIME_CAPSULE
-	iftrue UnknownScript_0x192a25
-	special Function29cfa
+	iftrue Script_TimeCapsuleClosed
+	special Special_SetBitsForTimeCapsuleRequest
 	faceplayer
 	loadfont
-	writetext UnknownText_0x192e9f
+	writetext Text_TimeCapsuleRecptionistIntro
 	yesorno
-	iffalse UnknownScript_0x192aa2
-	special Function29bfb
-	if_equal $1, UnknownScript_0x192aa7
-	if_equal $2, UnknownScript_0x192aac
-	if_equal $3, UnknownScript_0x192ab1
-	writetext UnknownText_0x192f67
-	special Function29d11
-	iffalse UnknownScript_0x192a91
-	writetext UnknownText_0x192f34
+	iffalse .Cancel
+	special Special_CheckTimeCapsuleCompatibility
+	if_equal $1, .MonTooNew
+	if_equal $2, .MonMoveTooNew
+	if_equal $3, .MonHasMail
+	writetext Text_PleaseWait
+	special Special_WaitForLinkedFriend
+	iffalse .FriendNotReady
+	writetext Text_MustSaveGame
 	yesorno
-	iffalse UnknownScript_0x192a9f
-	special Function29e66
-	iffalse UnknownScript_0x192a9f
-	writetext UnknownText_0x192f67
-	special Function29d92
-	iffalse UnknownScript_0x192a99
+	iffalse .DidNotSave
+	special Special_TryQuickSave
+	iffalse .DidNotSave
+	writetext Text_PleaseWait
+	special Special_CheckLinkTimeout
+	iffalse .LinkTimedOut
 	copybytetovar wcf51
-	iffalse UnknownScript_0x192a84
-	special Function29e82
-	writetext UnknownText_0x19304a
-	special Function29eee
+	iffalse .OK
+	special Special_CheckBothSelectedSameRoom
+	writetext Text_IncompatibleRooms
+	special Special_CloseLink
 	loadmovesprites
 	end
 
-UnknownScript_0x192a84:
-	special Function29c7b
-	writetext UnknownText_0x19306b
+.OK:
+	special Special_EnterTimeCapsule
+	writetext Text_PleaseComeIn2
 	closetext
 	loadmovesprites
-	scall UnknownScript_0x192bc4
+	scall TimeCapsuleScript_CheckPlayerGender
 	warpcheck
 	end
 
-UnknownScript_0x192a91:
-	special Function29c92
-	writetext UnknownText_0x192f19
+.FriendNotReady:
+	special Special_AbortLink
+	writetext Text_FriendNotReady
 	loadmovesprites
 	end
 
-UnknownScript_0x192a99:
-	writetext UnknownText_0x192f75
-	jump UnknownScript_0x192aa2
+.LinkTimedOut:
+	writetext Text_LinkTimedOut
+	jump .Cancel
 
-UnknownScript_0x192a9f:
-	writetext UnknownText_0x192fd1
-UnknownScript_0x192aa2:
-	special Function29c92
+.DidNotSave:
+	writetext Text_PleaseComeAgain
+.Cancel:
+	special Special_AbortLink
 	loadmovesprites
 	end
 
-UnknownScript_0x192aa7:
-	writetext UnknownText_0x19308b
+.MonTooNew:
+	writetext Text_RejectNewMon
 	loadmovesprites
 	end
 
-UnknownScript_0x192aac:
-	writetext UnknownText_0x1930a8
+.MonMoveTooNew:
+	writetext Text_RejectMonWithNewMove
 	loadmovesprites
 	end
 
-UnknownScript_0x192ab1:
-	writetext UnknownText_0x1930cf
+.MonHasMail:
+	writetext Text_RejectMonWithMail
 	loadmovesprites
 	end
 
-UnknownScript_0x192ab6:
-	special Function29c92
-	scall UnknownScript_0x192b50
+Script_LeftCableTradeCenter:
+	special Special_AbortLink
+	scall Script_CleanUpFemaleFlagAfterTrade
 	dotrigger $0
 	domaptrigger GROUP_TRADE_CENTER, MAP_TRADE_CENTER, $0
 	end
 
-UnknownScript_0x192ac3:
+Script_LeftMobileTradeRoom:
 	special Function101220
-	scall UnknownScript_0x192ad0
+	scall Script_WalkOutOfMobileTradeRoom
 	dotrigger $0
 	domaptrigger GROUP_MOBILE_TRADE_ROOM_MOBILE, MAP_MOBILE_TRADE_ROOM_MOBILE, $0
 	end
 
-UnknownScript_0x192ad0:
+Script_WalkOutOfMobileTradeRoom:
 	applymovement $2, MovementData_0x192d0b
 	applymovement $0, MovementData_0x192d0f
 	applymovement $2, MovementData_0x192d14
 	end
 
-UnknownScript_0x192add:
-	special Function29c92
-	scall UnknownScript_0x192b8a
+Script_LeftCableColosseum:
+	special Special_AbortLink
+	scall Script_CleanUpFemaleFlagAfterBattle
 	dotrigger $0
 	domaptrigger GROUP_COLOSSEUM, MAP_COLOSSEUM, $0
 	end
 
-UnknownScript_0x192aea:
+Script_LeftMobileBattleRoom:
 	special Function101220
-	scall UnknownScript_0x192af7
+	scall Script_WalkOutOfMobileBattleRoom
 	dotrigger $0
 	domaptrigger GROUP_MOBILE_BATTLE_ROOM, MAP_MOBILE_BATTLE_ROOM, $0
 	end
 
-UnknownScript_0x192af7:
+Script_WalkOutOfMobileBattleRoom:
 	applymovement $3, MovementData_0x192d0b
 	applymovement $0, MovementData_0x192d0f
 	applymovement $3, MovementData_0x192d14
 	end
 
-UnknownScript_0x192b04:
+PokeCenter2F_CheckGender:
 	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue UnknownScript_0x192b12
+	iftrue .Female
 	applymovement2 MovementData_0x192cca
 	applymovement $0, MovementData_0x192cde
 	end
 
-UnknownScript_0x192b12:
+.Female:
 	applymovement2 MovementData_0x192cd8
 	applymovement $0, MovementData_0x192ce2
 	loadfont
-	writetext UnknownText_0x193266
+	writetext Text_OhPleaseWait
 	closetext
 	loadmovesprites
 	applymovement2 MovementData_0x192cdc
 	spriteface $0, LEFT
 	loadfont
-	writetext UnknownText_0x193278
+	writetext Text_ChangeTheLook
 	closetext
 	loadmovesprites
 	playsound SFX_TINGLE
@@ -437,7 +437,7 @@
 	setflag ENGINE_KRIS_IN_CABLE_CLUB
 	special Functione4a
 	loadfont
-	writetext UnknownText_0x19329a
+	writetext Text_LikeTheLook
 	closetext
 	loadmovesprites
 	showemote EMOTE_SHOCK, $0, 15
@@ -444,15 +444,15 @@
 	applymovement $0, MovementData_0x192ce5
 	end
 
-UnknownScript_0x192b50:
+Script_CleanUpFemaleFlagAfterTrade:
 	checkflag ENGINE_KRIS_IN_CABLE_CLUB
-	iftrue UnknownScript_0x192b63
+	iftrue .Female
 	applymovement $2, MovementData_0x192d04
 	applymovement $0, MovementData_0x192cf5
 	applymovement $2, MovementData_0x192cfe
 	end
 
-UnknownScript_0x192b63:
+.Female:
 	applymovement $2, MovementData_0x192d04
 	applymovement $0, MovementData_0x192d28
 	clearflag ENGINE_KRIS_IN_CABLE_CLUB
@@ -466,15 +466,15 @@
 	applymovement $2, MovementData_0x192cfe
 	end
 
-UnknownScript_0x192b8a:
+Script_CleanUpFemaleFlagAfterBattle:
 	checkflag ENGINE_KRIS_IN_CABLE_CLUB
-	iftrue UnknownScript_0x192b9d
+	iftrue .Female
 	applymovement $3, MovementData_0x192d04
 	applymovement $0, MovementData_0x192cf5
 	applymovement $3, MovementData_0x192cfe
 	end
 
-UnknownScript_0x192b9d:
+.Female:
 	applymovement $3, MovementData_0x192d04
 	applymovement $0, MovementData_0x192d28
 	clearflag ENGINE_KRIS_IN_CABLE_CLUB
@@ -488,53 +488,53 @@
 	applymovement $3, MovementData_0x192cfe
 	end
 
-UnknownScript_0x192bc4:
+TimeCapsuleScript_CheckPlayerGender:
 	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue UnknownScript_0x192bec
+	iftrue .Female
 	checkcode VAR_FACING
-	if_equal $2, UnknownScript_0x192bdc
-	if_equal $3, UnknownScript_0x192be4
+	if_equal LEFT, .MaleFacingLeft
+	if_equal RIGHT, .MaleFacingRight
 	applymovement2 MovementData_0x192cd2
 	applymovement $0, MovementData_0x192cec
 	end
 
-UnknownScript_0x192bdc:
+.MaleFacingLeft:
 	applymovement2 MovementData_0x192cd2
 	applymovement $0, MovementData_0x192cef
 	end
 
-UnknownScript_0x192be4:
+.MaleFacingRight:
 	applymovement2 MovementData_0x192cd5
 	applymovement $0, MovementData_0x192cf2
 	end
 
-UnknownScript_0x192bec:
+.Female:
 	checkcode VAR_FACING
-	if_equal $3, UnknownScript_0x192c00
-	if_equal $2, UnknownScript_0x192c0a
+	if_equal RIGHT, .FemaleFacingRight
+	if_equal LEFT, .FemaleFacingLeft
 	applymovement2 MovementData_0x192d33
 	applymovement $0, MovementData_0x192d2d
-	jump UnknownScript_0x192c11
+	jump .FemaleContinue
 
-UnknownScript_0x192c00:
+.FemaleFacingRight:
 	applymovement2 MovementData_0x192d36
 	applymovement $0, MovementData_0x192d2f
-	jump UnknownScript_0x192c11
+	jump .FemaleContinue
 
-UnknownScript_0x192c0a:
+.FemaleFacingLeft:
 	applymovement2 MovementData_0x192d33
 	applymovement $0, MovementData_0x192d31
-UnknownScript_0x192c11:
+.FemaleContinue:
 	loadfont
-	writetext UnknownText_0x193266
+	writetext Text_OhPleaseWait
 	closetext
 	loadmovesprites
 	checkcode VAR_FACING
-	if_not_equal $1, UnknownScript_0x192c20
+	if_not_equal UP, .FemaleChangeApperance
 	spriteface $0, LEFT
-UnknownScript_0x192c20:
+.FemaleChangeApperance:
 	loadfont
-	writetext UnknownText_0x193278
+	writetext Text_ChangeTheLook
 	closetext
 	loadmovesprites
 	playsound SFX_TINGLE
@@ -546,7 +546,7 @@
 	setflag ENGINE_KRIS_IN_CABLE_CLUB
 	special Functione4a
 	loadfont
-	writetext UnknownText_0x19329a
+	writetext Text_LikeTheLook
 	closetext
 	loadmovesprites
 	showemote EMOTE_SHOCK, $0, 15
@@ -553,16 +553,16 @@
 	applymovement $0, MovementData_0x192d2d
 	end
 
-UnknownScript_0x192c4e:
-	special Function29c92
+Script_LeftTimeCapsule:
+	special Special_AbortLink
 	checkflag ENGINE_KRIS_IN_CABLE_CLUB
-	iftrue UnknownScript_0x192c66
+	iftrue .Female
 	applymovement $4, MovementData_0x192d08
 	applymovement $0, MovementData_0x192cf9
 	applymovement $4, MovementData_0x192d01
-	jump UnknownScript_0x192c8c
+	jump .Done
 
-UnknownScript_0x192c66:
+.Female:
 	applymovement $4, MovementData_0x192d08
 	applymovement $0, MovementData_0x192cfc
 	clearflag ENGINE_KRIS_IN_CABLE_CLUB
@@ -574,7 +574,7 @@
 	special Functione4a
 	applymovement $0, MovementData_0x192cfc
 	applymovement $4, MovementData_0x192d01
-UnknownScript_0x192c8c:
+.Done:
 	dotrigger $0
 	domaptrigger GROUP_TIME_CAPSULE, MAP_TIME_CAPSULE, $0
 	end
@@ -588,32 +588,32 @@
 OfficerScript_0x192c9a:
 	faceplayer
 	loadfont
-	checkevent EVENT_711
-	iftrue UnknownScript_0x192cb8
-	writetext UnknownText_0x193190
+	checkevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
+	iftrue .AlreadyGotGift
+	writetext Text_MysteryGiftDeliveryGuy_Intro
 	yesorno
-	iffalse UnknownScript_0x192cc4
-	writetext UnknownText_0x1931c4
+	iffalse .RefusedGift
+	writetext Text_MysteryGiftDeliveryGuy_HereYouGo
 	keeptextopen
 	waitbutton
-	special Functionc309
-	iffalse UnknownScript_0x192cbe
+	special Special_GetMysteryGiftItem
+	iffalse .BagIsFull
 	itemnotify
-	setevent EVENT_711
-UnknownScript_0x192cb8:
-	writetext UnknownText_0x1931d2
+	setevent EVENT_MYSTERY_GIFT_DELIVERY_GUY
+.AlreadyGotGift:
+	writetext Text_MysteryGiftDeliveryGuy_Outro
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x192cbe:
-	writetext UnknownText_0x1931ef
+.BagIsFull:
+	writetext Text_MysteryGiftDeliveryGuy_NoRoom
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x192cc4:
-	writetext UnknownText_0x19324d
+.RefusedGift:
+	writetext Text_MysteryGiftDeliveryGuy_SaidNo
 	closetext
 	loadmovesprites
 	end
@@ -795,7 +795,7 @@
 	turn_head_left
 	step_end
 
-UnknownText_0x192d39:
+Text_BattleReceptionistMobile:
 	text "Would you like to"
 	line "battle over a GAME"
 
@@ -803,7 +803,7 @@
 	line "mobile phone?"
 	done
 
-UnknownText_0x192d7e:
+Text_TradeReceptionistMobile:
 	text "Would you like to"
 	line "trade over a GAME"
 
@@ -811,12 +811,12 @@
 	line "mobile phone?"
 	done
 
-UnknownText_0x192dc2:
+Text_ThisWayToMobileRoom:
 	text "This way to the"
 	line "MOBILE ROOM."
 	done
 
-UnknownText_0x192de0:
+Text_BattleReceptionistIntro:
 	text "Welcome to CABLE"
 	line "CLUB COLOSSEUM."
 
@@ -827,7 +827,7 @@
 	line "battle?"
 	done
 
-UnknownText_0x192e3a:
+Text_TradeReceptionistIntro:
 	text "Welcome to CABLE"
 	line "TRADE CENTER."
 
@@ -839,7 +839,7 @@
 	line "trade?"
 	done
 
-UnknownText_0x192e9f:
+Text_TimeCapsuleRecptionistIntro:
 	text "Welcome to CABLE"
 	line "CLUB TIME CAPSULE."
 
@@ -851,22 +851,22 @@
 	line "trade across time?"
 	done
 
-UnknownText_0x192f19:
+Text_FriendNotReady:
 	text "Your friend is not"
 	line "ready."
 	prompt
 
-UnknownText_0x192f34:
+Text_MustSaveGame:
 	text "Before opening the"
 	line "link, you must"
 	cont "save your game."
 	done
 
-UnknownText_0x192f67:
+Text_PleaseWait:
 	text "Please wait."
 	done
 
-UnknownText_0x192f75:
+Text_LinkTimedOut:
 	text "The link has been"
 	line "closed because of"
 	cont "inactivity."
@@ -876,39 +876,39 @@
 	cont "come again."
 	prompt
 
-UnknownText_0x192fd1:
+Text_PleaseComeAgain:
 	text "Please come again."
 	prompt
 
-UnknownText_0x192fe5:
+Text_PleaseComeIn:
 	text "Please come in."
 	prompt
 
-UnknownText_0x192ff6:
+Text_TemporaryStagingInLinkRoom:
 	text "We'll put you in"
 	line "the link room for"
 	cont "the time being."
 	done
 
-UnknownText_0x193029:
+Text_CantLinkToThePast:
 	text "You can't link to"
 	line "the past here."
 	prompt
 
-UnknownText_0x19304a:
+Text_IncompatibleRooms:
 	text "Incompatible rooms"
 	line "were chosen."
 	prompt
 
-UnknownText_0x19306b:
+Text_PleaseComeIn2:
 	text "Please come in."
 	done
 
-UnknownText_0x19307c:
+Text_PleaseEnter:
 	text "Please enter."
 	prompt
 
-UnknownText_0x19308b:
+Text_RejectNewMon:
 	text "Sorry--@"
 	text_from_ram StringBuffer1
 	text ""
@@ -915,7 +915,7 @@
 	line "can't be taken."
 	prompt
 
-UnknownText_0x1930a8:
+Text_RejectMonWithNewMove:
 	text "You can't take the"
 	line "@"
 	text_from_ram StringBuffer1
@@ -925,7 +925,7 @@
 	text "."
 	prompt
 
-UnknownText_0x1930cf:
+Text_RejectMonWithMail:
 	text "You can't take the"
 	line "@"
 	text_from_ram StringBuffer1
@@ -933,25 +933,25 @@
 	cont "has MAIL with you."
 	prompt
 
-UnknownText_0x193100:
+Text_TimeCapsuleClosed:
 	text "I'm sorry--the"
 	line "TIME CAPSULE is"
 	cont "being adjusted."
 	done
 
-UnknownText_0x19312f:
+Text_TradeRoomClosed:
 	text "I'm sorry--the"
 	line "TRADE MACHINE is"
 	cont "being adjusted."
 	done
 
-UnknownText_0x19315f:
+Text_BattleRoomClosed:
 	text "I'm sorry--the"
 	line "BATTLE MACHINE is"
 	cont "being adjusted."
 	done
 
-UnknownText_0x193190:
+Text_MysteryGiftDeliveryGuy_Intro:
 	text "Hello! You're"
 	line "<PLAYER>, right?"
 
@@ -959,16 +959,16 @@
 	line "thing for you."
 	done
 
-UnknownText_0x1931c4:
+Text_MysteryGiftDeliveryGuy_HereYouGo:
 	text "Here you go!"
 	done
 
-UnknownText_0x1931d2:
+Text_MysteryGiftDeliveryGuy_Outro:
 	text "We hope to serve"
 	line "you again."
 	done
 
-UnknownText_0x1931ef:
+Text_MysteryGiftDeliveryGuy_NoRoom:
 	text "Oh, you have no"
 	line "space for this."
 
@@ -979,26 +979,26 @@
 	line "to pick it up."
 	done
 
-UnknownText_0x19324d:
+Text_MysteryGiftDeliveryGuy_SaidNo:
 	text "No? That's very"
 	line "strange…"
 	done
 
-UnknownText_0x193266:
+Text_OhPleaseWait:
 	text "Oh, please wait."
 	done
 
-UnknownText_0x193278:
+Text_ChangeTheLook:
 	text "We need to change"
 	line "the look here…"
 	done
 
-UnknownText_0x19329a:
+Text_LikeTheLook:
 	text "How does this"
 	line "style look to you?"
 	done
 
-UnknownText_0x1932bc:
+Text_BrokeStadiumRules:
 	text "Excuse me!"
 
 	para "For STADIUM rules,"
@@ -1024,7 +1024,7 @@
 
 	; warps
 	db 6
-	warp_def $7, $0, 255, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
+	warp_def $7, $0, -1, GROUP_POKECENTER_2F, MAP_POKECENTER_2F
 	warp_def $0, $5, 1, GROUP_TRADE_CENTER, MAP_TRADE_CENTER
 	warp_def $0, $9, 1, GROUP_COLOSSEUM, MAP_COLOSSEUM
 	warp_def $2, $d, 1, GROUP_TIME_CAPSULE, MAP_TIME_CAPSULE
@@ -1036,11 +1036,11 @@
 
 	; signposts
 	db 1
-	signpost 3, 7, $0, MapPokeCenter2FSignpost0Script
+	signpost 3, 7, SIGNPOST_READ, MapPokeCenter2FSignpost0Script
 
 	; people-events
 	db 4
-	person_event SPRITE_LINK_RECEPTIONIST, 6, 9, $6, $0, 255, 255, $a0, 0, LinkReceptionistScript_0x19289d, -1
-	person_event SPRITE_LINK_RECEPTIONIST, 6, 13, $6, $0, 255, 255, $a0, 0, LinkReceptionistScript_0x192952, -1
-	person_event SPRITE_LINK_RECEPTIONIST, 7, 17, $6, $0, 255, 255, $a0, 0, LinkReceptionistScript_0x192a2d, -1
-	person_event SPRITE_OFFICER, 5, 5, $6, $0, 255, 255, $0, 0, OfficerScript_0x192c9a, EVENT_711
+	person_event SPRITE_LINK_RECEPTIONIST, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LinkReceptionistScript_Trade, -1
+	person_event SPRITE_LINK_RECEPTIONIST, 6, 13, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LinkReceptionistScript_Battle, -1
+	person_event SPRITE_LINK_RECEPTIONIST, 7, 17, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LinkReceptionistScript_TimeCapsule, -1
+	person_event SPRITE_OFFICER, 5, 5, UP << 2 | $2, $0, -1, -1, $0, 0, OfficerScript_0x192c9a, EVENT_MYSTERY_GIFT_DELIVERY_GUY
--- a/maps/PokeSeersHouse.asm
+++ b/maps/PokeSeersHouse.asm
@@ -30,4 +30,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_GRANNY, 7, 6, $6, $0, 255, 255, $80, 0, SeerScript, -1
+	person_event SPRITE_GRANNY, 7, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SeerScript, -1
--- a/maps/PokemonFanClub.asm
+++ b/maps/PokemonFanClub.asm
@@ -302,14 +302,14 @@
 
 	; signposts
 	db 2
-	signpost 0, 7, $0, MapPokemonFanClubSignpost0Script
-	signpost 0, 9, $0, MapPokemonFanClubSignpost1Script
+	signpost 0, 7, SIGNPOST_READ, MapPokemonFanClubSignpost0Script
+	signpost 0, 9, SIGNPOST_READ, MapPokemonFanClubSignpost1Script
 
 	; people-events
 	db 6
-	person_event SPRITE_GENTLEMAN, 5, 7, $6, $0, 255, 255, $0, 0, GentlemanScript_0x1917e9, -1
-	person_event SPRITE_RECEPTIONIST, 5, 8, $6, $0, 255, 255, $a0, 0, ReceptionistScript_0x191821, -1
-	person_event SPRITE_FISHER, 7, 6, $9, $0, 255, 255, $0, 0, FisherScript_0x191824, -1
-	person_event SPRITE_TEACHER, 6, 11, $8, $0, 255, 255, $0, 0, TeacherScript_0x19186b, -1
-	person_event SPRITE_FAIRY, 8, 6, $6, $0, 255, 255, $0, 0, FairyScript_0x19186e, EVENT_774
-	person_event SPRITE_ODDISH, 7, 11, $16, $0, 255, 255, $a0, 0, OddishScript_0x191871, -1
+	person_event SPRITE_GENTLEMAN, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, GentlemanScript_0x1917e9, -1
+	person_event SPRITE_RECEPTIONIST, 5, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ReceptionistScript_0x191821, -1
+	person_event SPRITE_FISHER, 7, 6, LEFT << 2 | $1, $0, -1, -1, $0, 0, FisherScript_0x191824, -1
+	person_event SPRITE_TEACHER, 6, 11, LEFT << 2 | $0, $0, -1, -1, $0, 0, TeacherScript_0x19186b, -1
+	person_event SPRITE_FAIRY, 8, 6, UP << 2 | $2, $0, -1, -1, $0, 0, FairyScript_0x19186e, EVENT_774
+	person_event SPRITE_ODDISH, 7, 11, UP << 2 | $12, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OddishScript_0x191871, -1
--- a/maps/PowerPlant.asm
+++ b/maps/PowerPlant.asm
@@ -396,15 +396,15 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, PowerPlantBookshelf
-	signpost 1, 1, $0, PowerPlantBookshelf
+	signpost 1, 0, SIGNPOST_READ, PowerPlantBookshelf
+	signpost 1, 1, SIGNPOST_READ, PowerPlantBookshelf
 
 	; people-events
 	db 7
-	person_event SPRITE_OFFICER, 18, 8, $6, $0, 255, 255, $a0, 0, OfficerScript_0x188df5, -1
-	person_event SPRITE_GYM_GUY, 13, 6, $3, $0, 255, 255, $90, 0, GymGuyScript_0x188e15, -1
-	person_event SPRITE_GYM_GUY, 15, 10, $7, $0, 255, 255, $90, 0, GymGuyScript_0x188e29, -1
-	person_event SPRITE_OFFICER, 7, 13, $8, $0, 255, 255, $a0, 0, OfficerScript_0x188e3d, -1
-	person_event SPRITE_GYM_GUY, 6, 11, $5, $1, 255, 255, $90, 0, GymGuyScript_0x188e51, -1
-	person_event SPRITE_FISHER, 14, 18, $7, $0, 255, 255, $80, 0, PowerPlantManager, -1
-	person_event SPRITE_GYM_GUY, 9, 9, $7, $0, 255, 255, $90, 0, GymGuyScript_0x188ecb, -1
+	person_event SPRITE_OFFICER, 18, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x188df5, -1
+	person_event SPRITE_GYM_GUY, 13, 6, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GymGuyScript_0x188e15, -1
+	person_event SPRITE_GYM_GUY, 15, 10, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GymGuyScript_0x188e29, -1
+	person_event SPRITE_OFFICER, 7, 13, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x188e3d, -1
+	person_event SPRITE_GYM_GUY, 6, 11, UP << 2 | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GymGuyScript_0x188e51, -1
+	person_event SPRITE_FISHER, 14, 18, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PowerPlantManager, -1
+	person_event SPRITE_GYM_GUY, 9, 9, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GymGuyScript_0x188ecb, -1
--- a/maps/RadioTower1F.asm
+++ b/maps/RadioTower1F.asm
@@ -495,14 +495,14 @@
 
 	; signposts
 	db 2
-	signpost 0, 3, $0, MapRadioTower1FSignpost0Script
-	signpost 0, 13, $0, MapRadioTower1FSignpost1Script
+	signpost 0, 3, SIGNPOST_READ, MapRadioTower1FSignpost0Script
+	signpost 0, 13, SIGNPOST_READ, MapRadioTower1FSignpost1Script
 
 	; people-events
 	db 6
-	person_event SPRITE_RECEPTIONIST, 10, 9, $8, $0, 255, 255, $80, 0, ReceptionistScript_0x5cd29, -1
-	person_event SPRITE_LASS, 8, 20, $8, $0, 255, 255, $80, 0, LassScript_0x5ce51, EVENT_6CF
-	person_event SPRITE_YOUNGSTER, 8, 19, $9, $0, 255, 255, $90, 0, YoungsterScript_0x5ce54, EVENT_6CF
-	person_event SPRITE_ROCKET, 5, 18, $6, $0, 255, 255, $2, 3, TrainerGruntM3, EVENT_6CE
-	person_event SPRITE_GENTLEMAN, 10, 12, $7, $0, 255, 255, $90, 0, GentlemanScript_0x5cd3d, EVENT_6CF
-	person_event SPRITE_COOLTRAINER_F, 10, 16, $7, $0, 255, 255, $a0, 0, CooltrainerFScript_0x5cdd5, EVENT_6CF
+	person_event SPRITE_RECEPTIONIST, 10, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ReceptionistScript_0x5cd29, -1
+	person_event SPRITE_LASS, 8, 20, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, LassScript_0x5ce51, EVENT_6CF
+	person_event SPRITE_YOUNGSTER, 8, 19, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x5ce54, EVENT_6CF
+	person_event SPRITE_ROCKET, 5, 18, UP << 2 | $2, $0, -1, -1, $2, 3, TrainerGruntM3, EVENT_6CE
+	person_event SPRITE_GENTLEMAN, 10, 12, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GentlemanScript_0x5cd3d, EVENT_6CF
+	person_event SPRITE_COOLTRAINER_F, 10, 16, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x5cdd5, EVENT_6CF
--- a/maps/RadioTower2F.asm
+++ b/maps/RadioTower2F.asm
@@ -775,23 +775,23 @@
 
 	; signposts
 	db 6
-	signpost 0, 3, $0, MapRadioTower2FSignpost0Script
-	signpost 0, 5, $0, MapRadioTower2FSignpost1Script
-	signpost 1, 9, $0, RadioTower2FBookshelf
-	signpost 1, 10, $0, RadioTower2FBookshelf
-	signpost 1, 11, $0, RadioTower2FBookshelf
-	signpost 0, 13, $0, MapRadioTower2FSignpost5Script
+	signpost 0, 3, SIGNPOST_READ, MapRadioTower2FSignpost0Script
+	signpost 0, 5, SIGNPOST_READ, MapRadioTower2FSignpost1Script
+	signpost 1, 9, SIGNPOST_READ, RadioTower2FBookshelf
+	signpost 1, 10, SIGNPOST_READ, RadioTower2FBookshelf
+	signpost 1, 11, SIGNPOST_READ, RadioTower2FBookshelf
+	signpost 0, 13, SIGNPOST_READ, MapRadioTower2FSignpost5Script
 
 	; people-events
 	db 11
-	person_event SPRITE_SUPER_NERD, 10, 10, $8, $0, 255, 255, $a0, 0, SuperNerdScript_0x5d6fe, EVENT_6CF
-	person_event SPRITE_TEACHER, 6, 21, $5, $1, 255, 255, $80, 0, TeacherScript_0x5d701, -1
-	person_event SPRITE_ROCKET, 8, 5, $7, $0, 255, 255, $2, 3, TrainerGruntM4, EVENT_6CE
-	person_event SPRITE_ROCKET, 8, 12, $6, $0, 255, 255, $2, 3, TrainerGruntM5, EVENT_6CE
-	person_event SPRITE_ROCKET, 5, 8, $6, $0, 255, 255, $2, 2, TrainerGruntM6, EVENT_6CE
-	person_event SPRITE_ROCKET_GIRL, 9, 14, $7, $0, 255, 255, $82, 3, TrainerGruntF2, EVENT_6CE
-	person_event SPRITE_BLACK_BELT, 5, 4, $6, $0, 255, 255, $0, 0, BlackBeltScript_0x5d71f, EVENT_6D1
-	person_event SPRITE_BLACK_BELT, 5, 5, $6, $0, 255, 255, $0, 0, BlackBeltScript_0x5d722, EVENT_6D0
-	person_event SPRITE_JIGGLYPUFF, 5, 16, $16, $0, 255, 255, $0, 0, JigglypuffScript_0x5d715, -1
-	person_event SPRITE_BUENA, 9, 18, $9, $0, 255, 255, $80, 0, Buena, -1
-	person_event SPRITE_RECEPTIONIST, 11, 16, $9, $0, 255, 255, $a0, 0, ReceptionistScript_0x5d8ff, EVENT_6CF
+	person_event SPRITE_SUPER_NERD, 10, 10, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x5d6fe, EVENT_6CF
+	person_event SPRITE_TEACHER, 6, 21, UP << 2 | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, TeacherScript_0x5d701, -1
+	person_event SPRITE_ROCKET, 8, 5, UP << 2 | $3, $0, -1, -1, $2, 3, TrainerGruntM4, EVENT_6CE
+	person_event SPRITE_ROCKET, 8, 12, UP << 2 | $2, $0, -1, -1, $2, 3, TrainerGruntM5, EVENT_6CE
+	person_event SPRITE_ROCKET, 5, 8, UP << 2 | $2, $0, -1, -1, $2, 2, TrainerGruntM6, EVENT_6CE
+	person_event SPRITE_ROCKET_GIRL, 9, 14, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerGruntF2, EVENT_6CE
+	person_event SPRITE_BLACK_BELT, 5, 4, UP << 2 | $2, $0, -1, -1, $0, 0, BlackBeltScript_0x5d71f, EVENT_6D1
+	person_event SPRITE_BLACK_BELT, 5, 5, UP << 2 | $2, $0, -1, -1, $0, 0, BlackBeltScript_0x5d722, EVENT_6D0
+	person_event SPRITE_JIGGLYPUFF, 5, 16, UP << 2 | $12, $0, -1, -1, $0, 0, JigglypuffScript_0x5d715, -1
+	person_event SPRITE_BUENA, 9, 18, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, Buena, -1
+	person_event SPRITE_RECEPTIONIST, 11, 16, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ReceptionistScript_0x5d8ff, EVENT_6CF
--- a/maps/RadioTower3F.asm
+++ b/maps/RadioTower3F.asm
@@ -401,16 +401,16 @@
 
 	; signposts
 	db 3
-	signpost 0, 3, $0, MapRadioTower3FSignpost0Script
-	signpost 0, 9, $0, MapRadioTower3FSignpost1Script
-	signpost 2, 14, $1, MapRadioTower3FSignpost2Script
+	signpost 0, 3, SIGNPOST_READ, MapRadioTower3FSignpost0Script
+	signpost 0, 9, SIGNPOST_READ, MapRadioTower3FSignpost1Script
+	signpost 2, 14, SIGNPOST_UP, MapRadioTower3FSignpost2Script
 
 	; people-events
 	db 7
-	person_event SPRITE_SUPER_NERD, 8, 11, $7, $0, 255, 255, $90, 0, SuperNerdScript_0x5e553, EVENT_6D0
-	person_event SPRITE_GYM_GUY, 8, 7, $a, $0, 255, 255, $80, 0, GymGuyScript_0x5e556, -1
-	person_event SPRITE_COOLTRAINER_F, 7, 15, $2, $11, 255, 255, $a0, 0, CooltrainerFScript_0x5e56a, -1
-	person_event SPRITE_ROCKET, 5, 9, $9, $0, 255, 255, $2, 2, TrainerGruntM7, EVENT_6CE
-	person_event SPRITE_ROCKET, 6, 10, $6, $0, 255, 255, $2, 3, TrainerGruntM8, EVENT_6CE
-	person_event SPRITE_ROCKET, 10, 20, $7, $0, 255, 255, $2, 3, TrainerGruntM9, EVENT_6CE
-	person_event SPRITE_SCIENTIST, 10, 13, $7, $0, 255, 255, $92, 5, TrainerScientistMarc, EVENT_6CE
+	person_event SPRITE_SUPER_NERD, 8, 11, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x5e553, EVENT_6D0
+	person_event SPRITE_GYM_GUY, 8, 7, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GymGuyScript_0x5e556, -1
+	person_event SPRITE_COOLTRAINER_F, 7, 15, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x5e56a, -1
+	person_event SPRITE_ROCKET, 5, 9, LEFT << 2 | $1, $0, -1, -1, $2, 2, TrainerGruntM7, EVENT_6CE
+	person_event SPRITE_ROCKET, 6, 10, UP << 2 | $2, $0, -1, -1, $2, 3, TrainerGruntM8, EVENT_6CE
+	person_event SPRITE_ROCKET, 10, 20, UP << 2 | $3, $0, -1, -1, $2, 3, TrainerGruntM9, EVENT_6CE
+	person_event SPRITE_SCIENTIST, 10, 13, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 5, TrainerScientistMarc, EVENT_6CE
--- a/maps/RadioTower4F.asm
+++ b/maps/RadioTower4F.asm
@@ -316,15 +316,15 @@
 
 	; signposts
 	db 2
-	signpost 0, 7, $0, MapRadioTower4FSignpost0Script
-	signpost 0, 15, $0, MapRadioTower4FSignpost1Script
+	signpost 0, 7, SIGNPOST_READ, MapRadioTower4FSignpost0Script
+	signpost 0, 15, SIGNPOST_READ, MapRadioTower4FSignpost1Script
 
 	; people-events
 	db 7
-	person_event SPRITE_FISHER, 8, 10, $7, $0, 255, 255, $80, 0, FisherScript_0x5eb82, EVENT_6D0
-	person_event SPRITE_TEACHER, 10, 18, $3, $0, 255, 255, $a0, 0, TeacherScript_0x5eb85, -1
-	person_event SPRITE_GROWLITHE, 11, 16, $16, $0, 255, 255, $80, 0, GrowlitheScript_0x5ebb2, -1
-	person_event SPRITE_ROCKET, 10, 9, $1f, $0, 255, 255, $2, 3, TrainerGruntM10, EVENT_6CE
-	person_event SPRITE_ROCKET, 5, 18, $8, $2, 255, 255, $2, 2, TrainerExecutivem2, EVENT_6CE
-	person_event SPRITE_ROCKET_GIRL, 8, 16, $9, $0, 255, 255, $82, 1, TrainerGruntF4, EVENT_6CE
-	person_event SPRITE_SCIENTIST, 6, 8, $8, $0, 255, 255, $92, 4, TrainerScientistRich, EVENT_6CE
+	person_event SPRITE_FISHER, 8, 10, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x5eb82, EVENT_6D0
+	person_event SPRITE_TEACHER, 10, 18, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x5eb85, -1
+	person_event SPRITE_GROWLITHE, 11, 16, UP << 2 | $12, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, GrowlitheScript_0x5ebb2, -1
+	person_event SPRITE_ROCKET, 10, 9, RIGHT << 2 | $13, $0, -1, -1, $2, 3, TrainerGruntM10, EVENT_6CE
+	person_event SPRITE_ROCKET, 5, 18, LEFT << 2 | $0, $2, -1, -1, $2, 2, TrainerExecutivem2, EVENT_6CE
+	person_event SPRITE_ROCKET_GIRL, 8, 16, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerGruntF4, EVENT_6CE
+	person_event SPRITE_SCIENTIST, 6, 8, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerScientistRich, EVENT_6CE
--- a/maps/RadioTower5F.asm
+++ b/maps/RadioTower5F.asm
@@ -447,16 +447,16 @@
 
 	; signposts
 	db 5
-	signpost 0, 3, $0, MapRadioTower5FSignpost0Script
-	signpost 0, 11, $0, MapRadioTower5FSignpost2Script
-	signpost 0, 15, $0, MapRadioTower5FSignpost2Script
-	signpost 1, 16, $0, RadioTower5FBookshelf
-	signpost 1, 17, $0, RadioTower5FBookshelf
+	signpost 0, 3, SIGNPOST_READ, MapRadioTower5FSignpost0Script
+	signpost 0, 11, SIGNPOST_READ, MapRadioTower5FSignpost2Script
+	signpost 0, 15, SIGNPOST_READ, MapRadioTower5FSignpost2Script
+	signpost 1, 16, SIGNPOST_READ, RadioTower5FBookshelf
+	signpost 1, 17, SIGNPOST_READ, RadioTower5FBookshelf
 
 	; people-events
 	db 5
-	person_event SPRITE_GENTLEMAN, 10, 7, $3, $0, 255, 255, $0, 0, Director, -1
-	person_event SPRITE_ROCKET, 9, 17, $8, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6CE
-	person_event SPRITE_ROCKET_GIRL, 6, 21, $8, $0, 255, 255, $82, 1, TrainerExecutivef1, EVENT_6CE
-	person_event SPRITE_ROCKER, 9, 17, $8, $0, 255, 255, $80, 0, Ben, EVENT_6D0
-	person_event SPRITE_POKE_BALL, 9, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x600fe, EVENT_7CD
+	person_event SPRITE_GENTLEMAN, 10, 7, DOWN << 2 | $3, $0, -1, -1, $0, 0, Director, -1
+	person_event SPRITE_ROCKET, 9, 17, LEFT << 2 | $0, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6CE
+	person_event SPRITE_ROCKET_GIRL, 6, 21, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerExecutivef1, EVENT_6CE
+	person_event SPRITE_ROCKER, 9, 17, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, Ben, EVENT_6D0
+	person_event SPRITE_POKE_BALL, 9, 12, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x600fe, EVENT_7CD
--- a/maps/RedsHouse1F.asm
+++ b/maps/RedsHouse1F.asm
@@ -88,10 +88,10 @@
 
 	; signposts
 	db 3
-	signpost 1, 0, $0, RedsHouse1FBookshelf
-	signpost 1, 1, $0, RedsHouse1FBookshelf
-	signpost 1, 2, $0, RedsHouse1FTV
+	signpost 1, 0, SIGNPOST_READ, RedsHouse1FBookshelf
+	signpost 1, 1, SIGNPOST_READ, RedsHouse1FBookshelf
+	signpost 1, 2, SIGNPOST_READ, RedsHouse1FTV
 
 	; people-events
 	db 1
-	person_event SPRITE_REDS_MOM, 7, 9, $8, $0, 255, 255, $0, 0, RedsMom, -1
+	person_event SPRITE_REDS_MOM, 7, 9, LEFT << 2 | $0, $0, -1, -1, $0, 0, RedsMom, -1
--- a/maps/RedsHouse2F.asm
+++ b/maps/RedsHouse2F.asm
@@ -38,8 +38,8 @@
 
 	; signposts
 	db 2
-	signpost 5, 3, $0, MapRedsHouse2FSignpost0Script
-	signpost 1, 0, $0, MapRedsHouse2FSignpost1Script
+	signpost 5, 3, SIGNPOST_READ, MapRedsHouse2FSignpost0Script
+	signpost 1, 0, SIGNPOST_READ, MapRedsHouse2FSignpost1Script
 
 	; people-events
 	db 0
--- a/maps/RockTunnel1F.asm
+++ b/maps/RockTunnel1F.asm
@@ -39,10 +39,10 @@
 
 	; signposts
 	db 2
-	signpost 4, 24, $7, MapRockTunnel1FSignpostItem0
-	signpost 15, 21, $7, MapRockTunnel1FSignpostItem1
+	signpost 4, 24, SIGNPOST_ITEMIFSET, MapRockTunnel1FSignpostItem0
+	signpost 15, 21, SIGNPOST_ITEMIFSET, MapRockTunnel1FSignpostItem1
 
 	; people-events
 	db 2
-	person_event SPRITE_POKE_BALL, 22, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x743b5, EVENT_77E
-	person_event SPRITE_POKE_BALL, 19, 14, $1, $0, 255, 255, $1, 0, ItemFragment_0x743b7, EVENT_77F
+	person_event SPRITE_POKE_BALL, 22, 8, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x743b5, EVENT_77E
+	person_event SPRITE_POKE_BALL, 19, 14, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x743b7, EVENT_77F
--- a/maps/RockTunnelB1F.asm
+++ b/maps/RockTunnelB1F.asm
@@ -35,10 +35,10 @@
 
 	; signposts
 	db 1
-	signpost 14, 4, $7, MapRockTunnelB1FSignpostItem0
+	signpost 14, 4, SIGNPOST_ITEMIFSET, MapRockTunnelB1FSignpostItem0
 
 	; people-events
 	db 3
-	person_event SPRITE_POKE_BALL, 29, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x74409, EVENT_780
-	person_event SPRITE_POKE_BALL, 21, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x7440b, EVENT_781
-	person_event SPRITE_POKE_BALL, 6, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x7440d, EVENT_782
+	person_event SPRITE_POKE_BALL, 29, 11, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x74409, EVENT_780
+	person_event SPRITE_POKE_BALL, 21, 10, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7440b, EVENT_781
+	person_event SPRITE_POKE_BALL, 6, 19, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7440d, EVENT_782
--- a/maps/Route1.asm
+++ b/maps/Route1.asm
@@ -119,10 +119,10 @@
 
 	; signposts
 	db 1
-	signpost 27, 7, $0, MapRoute1Signpost0Script
+	signpost 27, 7, SIGNPOST_READ, MapRoute1Signpost0Script
 
 	; people-events
 	db 3
-	person_event SPRITE_YOUNGSTER, 16, 8, $9, $0, 255, 255, $92, 4, TrainerSchoolboyDanny, -1
-	person_event SPRITE_COOLTRAINER_F, 29, 13, $a, $0, 255, 255, $82, 2, TrainerCooltrainerfQuinn, -1
-	person_event SPRITE_FRUIT_TREE, 11, 7, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1ac581, -1
+	person_event SPRITE_YOUNGSTER, 16, 8, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerSchoolboyDanny, -1
+	person_event SPRITE_COOLTRAINER_F, 29, 13, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerCooltrainerfQuinn, -1
+	person_event SPRITE_FRUIT_TREE, 11, 7, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1ac581, -1
--- a/maps/Route10North.asm
+++ b/maps/Route10North.asm
@@ -29,8 +29,8 @@
 
 	; signposts
 	db 2
-	signpost 11, 5, $0, PowerPlantSign
-	signpost 1, 12, $0, Route10PokeCenterSign
+	signpost 11, 5, SIGNPOST_READ, PowerPlantSign
+	signpost 1, 12, SIGNPOST_READ, Route10PokeCenterSign
 
 	; people-events
 	db 0
--- a/maps/Route10PokeCenter1F.asm
+++ b/maps/Route10PokeCenter1F.asm
@@ -92,7 +92,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x188bd4, -1
-	person_event SPRITE_GENTLEMAN, 10, 11, $5, $1, 255, 255, $80, 0, GentlemanScript_0x188bd7, -1
-	person_event SPRITE_GYM_GUY, 6, 11, $3, $0, 255, 255, $a0, 0, GymGuyScript_0x188bda, -1
-	person_event SPRITE_COOLTRAINER_F, 7, 5, $6, $0, 255, 255, $0, 0, CooltrainerFScript_0x188bee, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x188bd4, -1
+	person_event SPRITE_GENTLEMAN, 10, 11, UP << 2 | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, GentlemanScript_0x188bd7, -1
+	person_event SPRITE_GYM_GUY, 6, 11, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GymGuyScript_0x188bda, -1
+	person_event SPRITE_COOLTRAINER_F, 7, 5, UP << 2 | $2, $0, -1, -1, $0, 0, CooltrainerFScript_0x188bee, -1
--- a/maps/Route10South.asm
+++ b/maps/Route10South.asm
@@ -116,9 +116,9 @@
 
 	; signposts
 	db 1
-	signpost 3, 5, $0, MapRoute10SouthSignpost0Script
+	signpost 3, 5, SIGNPOST_READ, MapRoute10SouthSignpost0Script
 
 	; people-events
 	db 2
-	person_event SPRITE_POKEFAN_M, 7, 21, $8, $0, 255, 255, $b2, 3, TrainerHikerJim, -1
-	person_event SPRITE_POKEFAN_M, 14, 12, $a, $0, 255, 255, $82, 3, TrainerPokefanmRobert, -1
+	person_event SPRITE_POKEFAN_M, 7, 21, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerHikerJim, -1
+	person_event SPRITE_POKEFAN_M, 14, 12, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerPokefanmRobert, -1
--- a/maps/Route11.asm
+++ b/maps/Route11.asm
@@ -216,13 +216,13 @@
 
 	; signposts
 	db 2
-	signpost 7, 3, $0, MapRoute11Signpost0Script
-	signpost 5, 32, $7, MapRoute11SignpostItem1
+	signpost 7, 3, SIGNPOST_READ, MapRoute11Signpost0Script
+	signpost 5, 32, SIGNPOST_ITEMIFSET, MapRoute11SignpostItem1
 
 	; people-events
 	db 5
-	person_event SPRITE_YOUNGSTER, 18, 26, $a, $0, 255, 255, $92, 3, TrainerYoungsterOwen, -1
-	person_event SPRITE_YOUNGSTER, 8, 24, $6, $0, 255, 255, $92, 3, TrainerYoungsterJason, -1
-	person_event SPRITE_YOUNGSTER, 11, 32, $6, $0, 255, 255, $92, 1, TrainerPsychicHerman, -1
-	person_event SPRITE_YOUNGSTER, 10, 12, $a, $0, 255, 255, $92, 3, TrainerPsychicFidel, -1
-	person_event SPRITE_FRUIT_TREE, 6, 36, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x68055, -1
+	person_event SPRITE_YOUNGSTER, 18, 26, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterOwen, -1
+	person_event SPRITE_YOUNGSTER, 8, 24, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterJason, -1
+	person_event SPRITE_YOUNGSTER, 11, 32, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerPsychicHerman, -1
+	person_event SPRITE_YOUNGSTER, 10, 12, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPsychicFidel, -1
+	person_event SPRITE_FRUIT_TREE, 6, 36, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x68055, -1
--- a/maps/Route12.asm
+++ b/maps/Route12.asm
@@ -237,15 +237,15 @@
 
 	; signposts
 	db 3
-	signpost 27, 11, $0, MapRoute12Signpost0Script
-	signpost 9, 13, $0, MapRoute12Signpost1Script
-	signpost 13, 14, $7, MapRoute12SignpostItem2
+	signpost 27, 11, SIGNPOST_READ, MapRoute12Signpost0Script
+	signpost 9, 13, SIGNPOST_READ, MapRoute12Signpost1Script
+	signpost 13, 14, SIGNPOST_ITEMIFSET, MapRoute12SignpostItem2
 
 	; people-events
 	db 6
-	person_event SPRITE_FISHER, 17, 9, $a, $0, 255, 255, $a2, 1, TrainerFisherMartin, -1
-	person_event SPRITE_FISHER, 27, 18, $6, $0, 255, 255, $a2, 1, TrainerFisherStephen, -1
-	person_event SPRITE_FISHER, 42, 14, $8, $0, 255, 255, $a2, 5, TrainerFisherBarney, -1
-	person_event SPRITE_FISHER, 11, 10, $9, $0, 255, 255, $a2, 3, TrainerFisherKyle, -1
-	person_event SPRITE_POKE_BALL, 47, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a700b, EVENT_788
-	person_event SPRITE_POKE_BALL, 55, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a700d, EVENT_789
+	person_event SPRITE_FISHER, 17, 9, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherMartin, -1
+	person_event SPRITE_FISHER, 27, 18, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherStephen, -1
+	person_event SPRITE_FISHER, 42, 14, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 5, TrainerFisherBarney, -1
+	person_event SPRITE_FISHER, 11, 10, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerFisherKyle, -1
+	person_event SPRITE_POKE_BALL, 47, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a700b, EVENT_788
+	person_event SPRITE_POKE_BALL, 55, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a700d, EVENT_789
--- a/maps/Route12SuperRodHouse.asm
+++ b/maps/Route12SuperRodHouse.asm
@@ -93,4 +93,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_FISHING_GURU, 7, 9, $6, $0, 255, 255, $80, 0, FishingGuruScript_0x7f484, -1
+	person_event SPRITE_FISHING_GURU, 7, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FishingGuruScript_0x7f484, -1
--- a/maps/Route13.asm
+++ b/maps/Route13.asm
@@ -278,15 +278,15 @@
 
 	; signposts
 	db 4
-	signpost 13, 29, $0, MapRoute13Signpost0Script
-	signpost 11, 41, $0, MapRoute13Signpost1Script
-	signpost 13, 17, $0, MapRoute13Signpost2Script
-	signpost 13, 30, $7, MapRoute13SignpostItem3
+	signpost 13, 29, SIGNPOST_READ, MapRoute13Signpost0Script
+	signpost 11, 41, SIGNPOST_READ, MapRoute13Signpost1Script
+	signpost 13, 17, SIGNPOST_READ, MapRoute13Signpost2Script
+	signpost 13, 30, SIGNPOST_ITEMIFSET, MapRoute13SignpostItem3
 
 	; people-events
 	db 5
-	person_event SPRITE_YOUNGSTER, 10, 46, $6, $0, 255, 255, $92, 2, TrainerBird_keeperPerry, -1
-	person_event SPRITE_YOUNGSTER, 10, 47, $6, $0, 255, 255, $92, 2, TrainerBird_keeperBret, -1
-	person_event SPRITE_POKEFAN_M, 12, 36, $8, $0, 255, 255, $82, 3, TrainerPokefanmJoshua, -1
-	person_event SPRITE_POKEFAN_M, 14, 18, $8, $0, 255, 255, $82, 4, TrainerHikerKenny, -1
-	person_event SPRITE_POKEFAN_M, 10, 29, $9, $0, 255, 255, $82, 4, TrainerPokefanmAlex, -1
+	person_event SPRITE_YOUNGSTER, 10, 46, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerBird_keeperPerry, -1
+	person_event SPRITE_YOUNGSTER, 10, 47, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerBird_keeperBret, -1
+	person_event SPRITE_POKEFAN_M, 12, 36, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerPokefanmJoshua, -1
+	person_event SPRITE_POKEFAN_M, 14, 18, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerHikerKenny, -1
+	person_event SPRITE_POKEFAN_M, 10, 29, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerPokefanmAlex, -1
--- a/maps/Route14.asm
+++ b/maps/Route14.asm
@@ -172,7 +172,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_POKEFAN_M, 19, 15, $9, $0, 255, 255, $82, 3, TrainerPokefanmCarter, -1
-	person_event SPRITE_YOUNGSTER, 31, 15, $a, $0, 255, 255, $92, 3, TrainerBird_keeperRoy, -1
-	person_event SPRITE_POKEFAN_M, 15, 10, $a, $0, 255, 255, $82, 3, TrainerPokefanmTrevor, -1
-	person_event SPRITE_TEACHER, 9, 11, $5, $1, 255, 255, $a0, 4, TeacherScript_0x1ad47f, -1
+	person_event SPRITE_POKEFAN_M, 19, 15, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerPokefanmCarter, -1
+	person_event SPRITE_YOUNGSTER, 31, 15, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperRoy, -1
+	person_event SPRITE_POKEFAN_M, 15, 10, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerPokefanmTrevor, -1
+	person_event SPRITE_TEACHER, 9, 11, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 4, TeacherScript_0x1ad47f, -1
--- a/maps/Route15.asm
+++ b/maps/Route15.asm
@@ -302,14 +302,14 @@
 
 	; signposts
 	db 1
-	signpost 9, 19, $0, MapRoute15Signpost0Script
+	signpost 9, 19, SIGNPOST_READ, MapRoute15Signpost0Script
 
 	; people-events
 	db 7
-	person_event SPRITE_YOUNGSTER, 14, 14, $9, $0, 255, 255, $92, 4, TrainerSchoolboyKipp, -1
-	person_event SPRITE_YOUNGSTER, 17, 19, $7, $0, 255, 255, $92, 3, TrainerSchoolboyTommy, -1
-	person_event SPRITE_YOUNGSTER, 14, 37, $6, $0, 255, 255, $92, 3, TrainerSchoolboyJohnny, -1
-	person_event SPRITE_YOUNGSTER, 14, 31, $6, $0, 255, 255, $92, 3, TrainerSchoolboyBilly, -1
-	person_event SPRITE_TEACHER, 16, 34, $7, $0, 255, 255, $82, 4, TrainerTeacherColette, -1
-	person_event SPRITE_TEACHER, 14, 24, $a, $0, 255, 255, $82, 3, TrainerTeacherHillary, -1
-	person_event SPRITE_POKE_BALL, 9, 16, $1, $0, 255, 255, $1, 0, ItemFragment_0x1aa5e4, EVENT_78A
+	person_event SPRITE_YOUNGSTER, 14, 14, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerSchoolboyKipp, -1
+	person_event SPRITE_YOUNGSTER, 17, 19, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSchoolboyTommy, -1
+	person_event SPRITE_YOUNGSTER, 14, 37, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSchoolboyJohnny, -1
+	person_event SPRITE_YOUNGSTER, 14, 31, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSchoolboyBilly, -1
+	person_event SPRITE_TEACHER, 16, 34, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerTeacherColette, -1
+	person_event SPRITE_TEACHER, 14, 24, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerTeacherHillary, -1
+	person_event SPRITE_POKE_BALL, 9, 16, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1aa5e4, EVENT_78A
--- a/maps/Route15FuchsiaGate.asm
+++ b/maps/Route15FuchsiaGate.asm
@@ -35,4 +35,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $90, 0, OfficerScript_0x19679e, -1
+	person_event SPRITE_OFFICER, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x19679e, -1
--- a/maps/Route16.asm
+++ b/maps/Route16.asm
@@ -48,7 +48,7 @@
 
 	; signposts
 	db 1
-	signpost 5, 5, $0, MapRoute16Signpost0Script
+	signpost 5, 5, SIGNPOST_READ, MapRoute16Signpost0Script
 
 	; people-events
 	db 0
--- a/maps/Route16FuchsiaSpeechHouse.asm
+++ b/maps/Route16FuchsiaSpeechHouse.asm
@@ -33,9 +33,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, Route16FuchsiaSpeechHouseBookshelf
-	signpost 1, 1, $0, Route16FuchsiaSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, Route16FuchsiaSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, Route16FuchsiaSpeechHouseBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_SUPER_NERD, 7, 6, $6, $0, 255, 255, $a0, 0, SuperNerdScript_0x73373, -1
+	person_event SPRITE_SUPER_NERD, 7, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x73373, -1
--- a/maps/Route16Gate.asm
+++ b/maps/Route16Gate.asm
@@ -80,4 +80,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $90, 0, OfficerScript_0x733ea, -1
+	person_event SPRITE_OFFICER, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x733ea, -1
--- a/maps/Route17.asm
+++ b/maps/Route17.asm
@@ -211,12 +211,12 @@
 
 	; signposts
 	db 2
-	signpost 54, 9, $7, MapRoute17SignpostItem0
-	signpost 77, 8, $7, MapRoute17SignpostItem1
+	signpost 54, 9, SIGNPOST_ITEMIFSET, MapRoute17SignpostItem0
+	signpost 77, 8, SIGNPOST_ITEMIFSET, MapRoute17SignpostItem1
 
 	; people-events
 	db 4
-	person_event SPRITE_BIKER, 21, 8, $a, $0, 255, 255, $b2, 4, TrainerBikerRiley, -1
-	person_event SPRITE_BIKER, 72, 13, $6, $0, 255, 255, $b2, 1, TrainerBikerJoel, -1
-	person_event SPRITE_BIKER, 57, 7, $a, $0, 255, 255, $b2, 3, TrainerBikerGlenn, -1
-	person_event SPRITE_BIKER, 84, 10, $9, $0, 255, 255, $b2, 4, TrainerBikerCharles, -1
+	person_event SPRITE_BIKER, 21, 8, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 4, TrainerBikerRiley, -1
+	person_event SPRITE_BIKER, 72, 13, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerBikerJoel, -1
+	person_event SPRITE_BIKER, 57, 7, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBikerGlenn, -1
+	person_event SPRITE_BIKER, 84, 10, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 4, TrainerBikerCharles, -1
--- a/maps/Route1718Gate.asm
+++ b/maps/Route1718Gate.asm
@@ -71,4 +71,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $90, 0, OfficerScript_0x7360e, -1
+	person_event SPRITE_OFFICER, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x7360e, -1
--- a/maps/Route18.asm
+++ b/maps/Route18.asm
@@ -119,9 +119,9 @@
 
 	; signposts
 	db 1
-	signpost 5, 9, $0, MapRoute18Signpost0Script
+	signpost 5, 9, SIGNPOST_READ, MapRoute18Signpost0Script
 
 	; people-events
 	db 2
-	person_event SPRITE_YOUNGSTER, 16, 13, $a, $0, 255, 255, $92, 3, TrainerBird_keeperBoris, -1
-	person_event SPRITE_YOUNGSTER, 10, 17, $6, $0, 255, 255, $92, 3, TrainerBird_keeperBob, -1
+	person_event SPRITE_YOUNGSTER, 16, 13, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperBoris, -1
+	person_event SPRITE_YOUNGSTER, 10, 17, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperBob, -1
--- a/maps/Route19.asm
+++ b/maps/Route19.asm
@@ -306,14 +306,14 @@
 
 	; signposts
 	db 2
-	signpost 13, 11, $0, MapRoute19Signpost0Script
-	signpost 1, 11, $0, MapRoute19Signpost1Script
+	signpost 13, 11, SIGNPOST_READ, MapRoute19Signpost0Script
+	signpost 1, 11, SIGNPOST_READ, MapRoute19Signpost1Script
 
 	; people-events
 	db 6
-	person_event SPRITE_SWIMMER_GIRL, 27, 13, $8, $0, 255, 255, $a2, 0, TrainerSwimmerfDawn, -1
-	person_event SPRITE_SWIMMER_GUY, 32, 17, $a, $0, 255, 255, $82, 3, TrainerSwimmermHarold, -1
-	person_event SPRITE_SWIMMER_GUY, 21, 15, $a, $0, 255, 255, $82, 3, TrainerSwimmermJerome, -1
-	person_event SPRITE_SWIMMER_GUY, 27, 12, $7, $0, 255, 255, $82, 0, TrainerSwimmermTucker, -1
-	person_event SPRITE_FISHER, 9, 13, $6, $0, 255, 255, $80, 1, FisherScript_0x19ea4d, -1
-	person_event SPRITE_FISHER, 9, 15, $5, $1, 255, 255, $90, 1, FisherScript_0x19ea61, -1
+	person_event SPRITE_SWIMMER_GIRL, 27, 13, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 0, TrainerSwimmerfDawn, -1
+	person_event SPRITE_SWIMMER_GUY, 32, 17, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermHarold, -1
+	person_event SPRITE_SWIMMER_GUY, 21, 15, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermJerome, -1
+	person_event SPRITE_SWIMMER_GUY, 27, 12, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 0, TrainerSwimmermTucker, -1
+	person_event SPRITE_FISHER, 9, 13, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 1, FisherScript_0x19ea4d, -1
+	person_event SPRITE_FISHER, 9, 15, UP << 2 | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 1, FisherScript_0x19ea61, -1
--- a/maps/Route19FuchsiaGate.asm
+++ b/maps/Route19FuchsiaGate.asm
@@ -61,4 +61,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $90, 0, OfficerScript_0x1ab3f6, -1
+	person_event SPRITE_OFFICER, 8, 4, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x1ab3f6, -1
--- a/maps/Route2.asm
+++ b/maps/Route2.asm
@@ -209,20 +209,20 @@
 
 	; signposts
 	db 6
-	signpost 51, 7, $0, MapRoute2Signpost0Script
-	signpost 9, 11, $0, MapRoute2Signpost1Script
-	signpost 23, 7, $7, MapRoute2SignpostItem2
-	signpost 14, 4, $7, MapRoute2SignpostItem3
-	signpost 27, 4, $7, MapRoute2SignpostItem4
-	signpost 30, 11, $7, MapRoute2SignpostItem5
+	signpost 51, 7, SIGNPOST_READ, MapRoute2Signpost0Script
+	signpost 9, 11, SIGNPOST_READ, MapRoute2Signpost1Script
+	signpost 23, 7, SIGNPOST_ITEMIFSET, MapRoute2SignpostItem2
+	signpost 14, 4, SIGNPOST_ITEMIFSET, MapRoute2SignpostItem3
+	signpost 27, 4, SIGNPOST_ITEMIFSET, MapRoute2SignpostItem4
+	signpost 30, 11, SIGNPOST_ITEMIFSET, MapRoute2SignpostItem5
 
 	; people-events
 	db 8
-	person_event SPRITE_BUG_CATCHER, 49, 14, $8, $0, 255, 255, $b2, 5, TrainerBug_catcherRob, -1
-	person_event SPRITE_BUG_CATCHER, 8, 10, $1f, $0, 255, 255, $b2, 3, TrainerBug_catcherEd, -1
-	person_event SPRITE_BUG_CATCHER, 44, 4, $9, $0, 255, 255, $b2, 3, TrainerBug_catcherDoug, -1
-	person_event SPRITE_POKE_BALL, 33, 4, $1, $0, 255, 255, $1, 0, ItemFragment_0x1ac2fe, EVENT_783
-	person_event SPRITE_POKE_BALL, 27, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x1ac300, EVENT_784
-	person_event SPRITE_POKE_BALL, 6, 23, $1, $0, 255, 255, $1, 0, ItemFragment_0x1ac302, EVENT_785
-	person_event SPRITE_POKE_BALL, 54, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x1ac304, EVENT_786
-	person_event SPRITE_FRUIT_TREE, 18, 14, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1ac306, -1
+	person_event SPRITE_BUG_CATCHER, 49, 14, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 5, TrainerBug_catcherRob, -1
+	person_event SPRITE_BUG_CATCHER, 8, 10, RIGHT << 2 | $13, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBug_catcherEd, -1
+	person_event SPRITE_BUG_CATCHER, 44, 4, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBug_catcherDoug, -1
+	person_event SPRITE_POKE_BALL, 33, 4, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1ac2fe, EVENT_783
+	person_event SPRITE_POKE_BALL, 27, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1ac300, EVENT_784
+	person_event SPRITE_POKE_BALL, 6, 23, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1ac302, EVENT_785
+	person_event SPRITE_POKE_BALL, 54, 18, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1ac304, EVENT_786
+	person_event SPRITE_FRUIT_TREE, 18, 14, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1ac306, -1
--- a/maps/Route20.asm
+++ b/maps/Route20.asm
@@ -171,10 +171,10 @@
 
 	; signposts
 	db 1
-	signpost 11, 37, $0, MapRoute20Signpost0Script
+	signpost 11, 37, SIGNPOST_READ, MapRoute20Signpost0Script
 
 	; people-events
 	db 3
-	person_event SPRITE_SWIMMER_GIRL, 12, 56, $a, $0, 255, 255, $a2, 3, TrainerSwimmerfNicole, -1
-	person_event SPRITE_SWIMMER_GIRL, 17, 49, $a, $0, 255, 255, $a2, 3, TrainerSwimmerfLori, -1
-	person_event SPRITE_SWIMMER_GUY, 17, 16, $a, $0, 255, 255, $82, 3, TrainerSwimmermCameron, -1
+	person_event SPRITE_SWIMMER_GIRL, 12, 56, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfNicole, -1
+	person_event SPRITE_SWIMMER_GIRL, 17, 49, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfLori, -1
+	person_event SPRITE_SWIMMER_GUY, 17, 16, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermCameron, -1
--- a/maps/Route21.asm
+++ b/maps/Route21.asm
@@ -147,6 +147,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_SWIMMER_GIRL, 20, 15, $a, $0, 255, 255, $a2, 3, TrainerSwimmerfNikki, -1
-	person_event SPRITE_SWIMMER_GUY, 34, 6, $9, $0, 255, 255, $82, 4, TrainerSwimmermSeth, -1
-	person_event SPRITE_FISHER, 26, 18, $7, $0, 255, 255, $a2, 1, TrainerFisherArnold, -1
+	person_event SPRITE_SWIMMER_GIRL, 20, 15, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfNikki, -1
+	person_event SPRITE_SWIMMER_GUY, 34, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerSwimmermSeth, -1
+	person_event SPRITE_FISHER, 26, 18, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherArnold, -1
--- a/maps/Route22.asm
+++ b/maps/Route22.asm
@@ -28,7 +28,7 @@
 
 	; signposts
 	db 1
-	signpost 7, 15, $0, MapRoute22Signpost0Script
+	signpost 7, 15, SIGNPOST_READ, MapRoute22Signpost0Script
 
 	; people-events
 	db 0
--- a/maps/Route23.asm
+++ b/maps/Route23.asm
@@ -40,7 +40,7 @@
 
 	; signposts
 	db 1
-	signpost 7, 11, $0, IndigoPlateauSign
+	signpost 7, 11, SIGNPOST_READ, IndigoPlateauSign
 
 	; people-events
 	db 0
--- a/maps/Route24.asm
+++ b/maps/Route24.asm
@@ -130,4 +130,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_ROCKET, 11, 12, $3, $0, 255, 255, $0, 0, RocketScript_0x1adbfa, EVENT_76C
+	person_event SPRITE_ROCKET, 11, 12, DOWN << 2 | $3, $0, -1, -1, $0, 0, RocketScript_0x1adbfa, EVENT_76C
--- a/maps/Route25.asm
+++ b/maps/Route25.asm
@@ -547,19 +547,19 @@
 
 	; signposts
 	db 2
-	signpost 5, 45, $0, MapRoute25Signpost0Script
-	signpost 5, 4, $7, MapRoute25SignpostItem1
+	signpost 5, 45, SIGNPOST_READ, MapRoute25Signpost0Script
+	signpost 5, 4, SIGNPOST_ITEMIFSET, MapRoute25SignpostItem1
 
 	; people-events
 	db 11
-	person_event SPRITE_MISTY, 13, 50, $8, $0, 255, 255, $80, 0, ObjectEvent, EVENT_76E
-	person_event SPRITE_COOLTRAINER_M, 14, 50, $8, $0, 255, 255, $a0, 0, ObjectEvent, EVENT_76E
-	person_event SPRITE_YOUNGSTER, 12, 16, $6, $0, 255, 255, $92, 3, TrainerSchoolboyDudley, -1
-	person_event SPRITE_LASS, 15, 20, $7, $0, 255, 255, $92, 3, TrainerLassEllen, -1
-	person_event SPRITE_YOUNGSTER, 12, 25, $6, $0, 255, 255, $92, 1, TrainerSchoolboyJoe, -1
-	person_event SPRITE_LASS, 10, 26, $9, $0, 255, 255, $92, 3, TrainerLassLaura, -1
-	person_event SPRITE_YOUNGSTER, 8, 29, $6, $0, 255, 255, $a2, 2, TrainerCamperLloyd, -1
-	person_event SPRITE_LASS, 15, 32, $7, $0, 255, 255, $92, 1, TrainerLassShannon, -1
-	person_event SPRITE_SUPER_NERD, 11, 35, $6, $0, 255, 255, $b2, 1, TrainerSupernerdPat, -1
-	person_event SPRITE_COOLTRAINER_M, 12, 41, $8, $0, 255, 255, $80, 0, CooltrainerMScript_0x19efac, -1
-	person_event SPRITE_POKE_BALL, 8, 36, $1, $0, 255, 255, $1, 0, ItemFragment_0x19efe3, EVENT_78B
+	person_event SPRITE_MISTY, 13, 50, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ObjectEvent, EVENT_76E
+	person_event SPRITE_COOLTRAINER_M, 14, 50, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ObjectEvent, EVENT_76E
+	person_event SPRITE_YOUNGSTER, 12, 16, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSchoolboyDudley, -1
+	person_event SPRITE_LASS, 15, 20, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerLassEllen, -1
+	person_event SPRITE_YOUNGSTER, 12, 25, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerSchoolboyJoe, -1
+	person_event SPRITE_LASS, 10, 26, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerLassLaura, -1
+	person_event SPRITE_YOUNGSTER, 8, 29, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerCamperLloyd, -1
+	person_event SPRITE_LASS, 15, 32, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerLassShannon, -1
+	person_event SPRITE_SUPER_NERD, 11, 35, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerSupernerdPat, -1
+	person_event SPRITE_COOLTRAINER_M, 12, 41, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x19efac, -1
+	person_event SPRITE_POKE_BALL, 8, 36, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x19efe3, EVENT_78B
--- a/maps/Route26.asm
+++ b/maps/Route26.asm
@@ -513,15 +513,15 @@
 
 	; signposts
 	db 1
-	signpost 6, 8, $0, MapRoute26Signpost0Script
+	signpost 6, 8, SIGNPOST_READ, MapRoute26Signpost0Script
 
 	; people-events
 	db 8
-	person_event SPRITE_COOLTRAINER_M, 28, 18, $8, $0, 255, 255, $82, 2, TrainerCooltrainermJake, -1
-	person_event SPRITE_COOLTRAINER_M, 42, 13, $8, $0, 255, 255, $82, 3, TrainerCooltrainermGaven3, -1
-	person_event SPRITE_COOLTRAINER_F, 60, 14, $a, $0, 255, 255, $82, 3, TrainerCooltrainerfJoyce, -1
-	person_event SPRITE_COOLTRAINER_F, 12, 9, $9, $0, 255, 255, $82, 4, TrainerCooltrainerfBeth1, -1
-	person_event SPRITE_YOUNGSTER, 83, 17, $9, $0, 255, 255, $92, 2, TrainerPsychicRichard, -1
-	person_event SPRITE_FISHER, 96, 14, $6, $0, 255, 255, $a2, 3, TrainerFisherScott, -1
-	person_event SPRITE_FRUIT_TREE, 58, 18, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a4ec2, -1
-	person_event SPRITE_POKE_BALL, 19, 13, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a4ec4, EVENT_6AA
+	person_event SPRITE_COOLTRAINER_M, 28, 18, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerCooltrainermJake, -1
+	person_event SPRITE_COOLTRAINER_M, 42, 13, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainermGaven3, -1
+	person_event SPRITE_COOLTRAINER_F, 60, 14, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainerfJoyce, -1
+	person_event SPRITE_COOLTRAINER_F, 12, 9, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerCooltrainerfBeth1, -1
+	person_event SPRITE_YOUNGSTER, 83, 17, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerPsychicRichard, -1
+	person_event SPRITE_FISHER, 96, 14, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerFisherScott, -1
+	person_event SPRITE_FRUIT_TREE, 58, 18, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a4ec2, -1
+	person_event SPRITE_POKE_BALL, 19, 13, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a4ec4, EVENT_6AA
--- a/maps/Route26DayofWeekSiblingsHouse.asm
+++ b/maps/Route26DayofWeekSiblingsHouse.asm
@@ -84,4 +84,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_POKEDEX, 7, 7, $1, $0, 255, 255, $0, 0, PokedexScript_0x7b1e4, -1
+	person_event SPRITE_POKEDEX, 7, 7, DOWN << 2 | $1, $0, -1, -1, $0, 0, PokedexScript_0x7b1e4, -1
--- a/maps/Route26HealSpeechHouse.asm
+++ b/maps/Route26HealSpeechHouse.asm
@@ -59,9 +59,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, Route26HealHouseBookshelf
-	signpost 1, 1, $0, Route26HealHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, Route26HealHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, Route26HealHouseBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_TEACHER, 7, 6, $6, $0, 255, 255, $90, 0, TeacherScript_0x7b125, -1
+	person_event SPRITE_TEACHER, 7, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x7b125, -1
--- a/maps/Route27.asm
+++ b/maps/Route27.asm
@@ -68,7 +68,7 @@
 
 TrainerBird_keeperJose2:
 	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_JOSE
+	dw EVENT_BEAT_BIRD_KEEPER_JOSE2
 
 	; trainer group && trainer id
 	db BIRD_KEEPER, JOSE2
@@ -571,16 +571,16 @@
 
 	; signposts
 	db 1
-	signpost 7, 25, $0, MapRoute27Signpost0Script
+	signpost 7, 25, SIGNPOST_READ, MapRoute27Signpost0Script
 
 	; people-events
 	db 9
-	person_event SPRITE_COOLTRAINER_M, 11, 52, $7, $0, 255, 255, $82, 3, TrainerCooltrainermBlake, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 62, $9, $0, 255, 255, $82, 4, TrainerCooltrainermBrian, -1
-	person_event SPRITE_COOLTRAINER_F, 14, 76, $7, $0, 255, 255, $82, 4, TrainerCooltrainerfReena, -1
-	person_event SPRITE_COOLTRAINER_F, 10, 41, $1f, $0, 255, 255, $82, 2, TrainerCooltrainerfMegan, -1
-	person_event SPRITE_YOUNGSTER, 11, 69, $8, $0, 255, 255, $92, 3, TrainerPsychicGilbert, -1
-	person_event SPRITE_YOUNGSTER, 17, 62, $9, $0, 255, 255, $92, 3, TrainerBird_keeperJose2, -1
-	person_event SPRITE_POKE_BALL, 16, 64, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a0a62, EVENT_6AB
-	person_event SPRITE_POKE_BALL, 16, 57, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a0a64, EVENT_6AC
-	person_event SPRITE_FISHER, 14, 25, $3, $0, 255, 255, $0, 3, FisherScript_0x1a089c, -1
+	person_event SPRITE_COOLTRAINER_M, 11, 52, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainermBlake, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 62, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerCooltrainermBrian, -1
+	person_event SPRITE_COOLTRAINER_F, 14, 76, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerCooltrainerfReena, -1
+	person_event SPRITE_COOLTRAINER_F, 10, 41, RIGHT << 2 | $13, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerCooltrainerfMegan, -1
+	person_event SPRITE_YOUNGSTER, 11, 69, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPsychicGilbert, -1
+	person_event SPRITE_YOUNGSTER, 17, 62, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperJose2, -1
+	person_event SPRITE_POKE_BALL, 16, 64, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a0a62, EVENT_6AB
+	person_event SPRITE_POKE_BALL, 16, 57, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a0a64, EVENT_6AC
+	person_event SPRITE_FISHER, 14, 25, DOWN << 2 | $3, $0, -1, -1, $0, 3, FisherScript_0x1a089c, -1
--- a/maps/Route27SandstormHouse.asm
+++ b/maps/Route27SandstormHouse.asm
@@ -104,9 +104,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, SandstormHouseBookshelf
-	signpost 1, 1, $0, SandstormHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, SandstormHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, SandstormHouseBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_GRANNY, 8, 6, $6, $0, 255, 255, $0, 0, SandstormHouseWoman, -1
+	person_event SPRITE_GRANNY, 8, 6, UP << 2 | $2, $0, -1, -1, $0, 0, SandstormHouseWoman, -1
--- a/maps/Route28.asm
+++ b/maps/Route28.asm
@@ -31,8 +31,8 @@
 
 	; signposts
 	db 2
-	signpost 5, 31, $0, MapRoute28Signpost0Script
-	signpost 2, 25, $7, MapRoute28SignpostItem1
+	signpost 5, 31, SIGNPOST_READ, MapRoute28Signpost0Script
+	signpost 2, 25, SIGNPOST_ITEMIFSET, MapRoute28SignpostItem1
 
 	; people-events
 	db 0
--- a/maps/Route28FamousSpeechHouse.asm
+++ b/maps/Route28FamousSpeechHouse.asm
@@ -82,10 +82,10 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, CelebrityHouseBookshelf
-	signpost 1, 1, $0, CelebrityHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, CelebrityHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, CelebrityHouseBookshelf
 
 	; people-events
 	db 2
-	person_event SPRITE_COOLTRAINER_F, 7, 6, $6, $0, 255, 255, $a0, 0, Celebrity, -1
-	person_event SPRITE_MOLTRES, 9, 10, $16, $0, 255, 255, $b0, 0, CelebritysFearow, -1
+	person_event SPRITE_COOLTRAINER_F, 7, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, Celebrity, -1
+	person_event SPRITE_MOLTRES, 9, 10, UP << 2 | $12, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, CelebritysFearow, -1
--- a/maps/Route29.asm
+++ b/maps/Route29.asm
@@ -425,16 +425,16 @@
 
 	; signposts
 	db 2
-	signpost 7, 51, $0, MapRoute29Signpost0Script
-	signpost 5, 3, $0, MapRoute29Signpost1Script
+	signpost 7, 51, SIGNPOST_READ, MapRoute29Signpost0Script
+	signpost 5, 3, SIGNPOST_READ, MapRoute29Signpost1Script
 
 	; people-events
 	db 8
-	person_event SPRITE_COOLTRAINER_M, 16, 54, $3, $0, 255, 255, $80, 0, CooltrainerMScript_0x1a0ff1, -1
-	person_event SPRITE_YOUNGSTER, 20, 31, $4, $10, 255, 255, $a0, 0, YoungsterScript_0x1a1028, -1
-	person_event SPRITE_TEACHER, 15, 19, $5, $1, 255, 255, $a0, 0, TeacherScript_0x1a102b, -1
-	person_event SPRITE_FRUIT_TREE, 6, 16, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a1089, -1
-	person_event SPRITE_FISHER, 7, 29, $7, $0, 255, 255, $90, 0, FisherScript_0x1a102e, -1
-	person_event SPRITE_COOLTRAINER_M, 8, 17, $6, $0, 255, 255, $80, 0, CooltrainerMScript_0x1a1031, -1
-	person_event SPRITE_TEACHER, 16, 33, $3, $0, 255, 255, $0, 0, TuscanyScript, EVENT_759
-	person_event SPRITE_POKE_BALL, 6, 52, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a108b, EVENT_6AD
+	person_event SPRITE_COOLTRAINER_M, 16, 54, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x1a0ff1, -1
+	person_event SPRITE_YOUNGSTER, 20, 31, UP << 2 | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x1a1028, -1
+	person_event SPRITE_TEACHER, 15, 19, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x1a102b, -1
+	person_event SPRITE_FRUIT_TREE, 6, 16, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a1089, -1
+	person_event SPRITE_FISHER, 7, 29, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FisherScript_0x1a102e, -1
+	person_event SPRITE_COOLTRAINER_M, 8, 17, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x1a1031, -1
+	person_event SPRITE_TEACHER, 16, 33, DOWN << 2 | $3, $0, -1, -1, $0, 0, TuscanyScript, EVENT_759
+	person_event SPRITE_POKE_BALL, 6, 52, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a108b, EVENT_6AD
--- a/maps/Route2946Gate.asm
+++ b/maps/Route2946Gate.asm
@@ -51,5 +51,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $80, 0, OfficerScript_0x7b5bb, -1
-	person_event SPRITE_YOUNGSTER, 8, 10, $4, $10, 255, 255, $a0, 0, YoungsterScript_0x7b5be, -1
+	person_event SPRITE_OFFICER, 8, 4, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x7b5bb, -1
+	person_event SPRITE_YOUNGSTER, 8, 10, UP << 2 | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x7b5be, -1
--- a/maps/Route2Gate.asm
+++ b/maps/Route2Gate.asm
@@ -41,4 +41,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_SCIENTIST, 8, 10, $4, $20, 255, 255, $90, 0, ScientistScript_0x9b952, -1
+	person_event SPRITE_SCIENTIST, 8, 10, UP << 2 | $0, $20, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x9b952, -1
--- a/maps/Route2NuggetSpeechHouse.asm
+++ b/maps/Route2NuggetSpeechHouse.asm
@@ -66,4 +66,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_FISHER, 8, 6, $4, $20, 255, 255, $90, 0, FisherScript_0x9b847, -1
+	person_event SPRITE_FISHER, 8, 6, UP << 2 | $0, $20, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FisherScript_0x9b847, -1
--- a/maps/Route3.asm
+++ b/maps/Route3.asm
@@ -203,11 +203,11 @@
 
 	; signposts
 	db 1
-	signpost 13, 49, $0, MapRoute3Signpost0Script
+	signpost 13, 49, SIGNPOST_READ, MapRoute3Signpost0Script
 
 	; people-events
 	db 4
-	person_event SPRITE_FISHER, 16, 30, $7, $0, 255, 255, $82, 2, TrainerFirebreatherOtis, -1
-	person_event SPRITE_YOUNGSTER, 11, 14, $8, $0, 255, 255, $92, 3, TrainerYoungsterWarren, -1
-	person_event SPRITE_YOUNGSTER, 7, 20, $a, $0, 255, 255, $92, 1, TrainerYoungsterJimmy, -1
-	person_event SPRITE_FISHER, 9, 53, $a, $0, 255, 255, $82, 3, TrainerFirebreatherBurt, -1
+	person_event SPRITE_FISHER, 16, 30, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerFirebreatherOtis, -1
+	person_event SPRITE_YOUNGSTER, 11, 14, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterWarren, -1
+	person_event SPRITE_YOUNGSTER, 7, 20, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerYoungsterJimmy, -1
+	person_event SPRITE_FISHER, 9, 53, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerFirebreatherBurt, -1
--- a/maps/Route30.asm
+++ b/maps/Route30.asm
@@ -457,22 +457,22 @@
 
 	; signposts
 	db 5
-	signpost 43, 9, $0, MapRoute30Signpost0Script
-	signpost 29, 13, $0, MapRoute30Signpost1Script
-	signpost 5, 15, $0, MapRoute30Signpost2Script
-	signpost 21, 3, $0, MapRoute30Signpost3Script
-	signpost 9, 14, $7, MapRoute30SignpostItem4
+	signpost 43, 9, SIGNPOST_READ, MapRoute30Signpost0Script
+	signpost 29, 13, SIGNPOST_READ, MapRoute30Signpost1Script
+	signpost 5, 15, SIGNPOST_READ, MapRoute30Signpost2Script
+	signpost 21, 3, SIGNPOST_READ, MapRoute30Signpost3Script
+	signpost 9, 14, SIGNPOST_ITEMIFSET, MapRoute30SignpostItem4
 
 	; people-events
 	db 11
-	person_event SPRITE_YOUNGSTER, 30, 9, $7, $0, 255, 255, $90, 0, YoungsterScript_0x1a1673, EVENT_714
-	person_event SPRITE_YOUNGSTER, 32, 6, $9, $0, 255, 255, $92, 3, TrainerYoungsterJoey, EVENT_715
-	person_event SPRITE_YOUNGSTER, 27, 9, $6, $0, 255, 255, $92, 1, TrainerYoungsterMikey, -1
-	person_event SPRITE_BUG_CATCHER, 11, 5, $6, $0, 255, 255, $b2, 3, TrainerBug_catcherDon, -1
-	person_event SPRITE_YOUNGSTER, 34, 11, $5, $1, 255, 255, $80, 0, YoungsterScript_0x1a17d2, -1
-	person_event SPRITE_MONSTER, 28, 9, $6, $0, 255, 255, $80, 0, ObjectEvent, EVENT_714
-	person_event SPRITE_MONSTER, 29, 9, $7, $0, 255, 255, $90, 0, ObjectEvent, EVENT_714
-	person_event SPRITE_FRUIT_TREE, 43, 9, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a17f7, -1
-	person_event SPRITE_FRUIT_TREE, 9, 15, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a17f9, -1
-	person_event SPRITE_COOLTRAINER_F, 17, 6, $6, $0, 255, 255, $0, 0, CooltrainerFScript_0x1a17e6, -1
-	person_event SPRITE_POKE_BALL, 39, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a17f5, EVENT_7B8
+	person_event SPRITE_YOUNGSTER, 30, 9, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x1a1673, EVENT_714
+	person_event SPRITE_YOUNGSTER, 32, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterJoey, EVENT_715
+	person_event SPRITE_YOUNGSTER, 27, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerYoungsterMikey, -1
+	person_event SPRITE_BUG_CATCHER, 11, 5, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBug_catcherDon, -1
+	person_event SPRITE_YOUNGSTER, 34, 11, UP << 2 | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x1a17d2, -1
+	person_event SPRITE_MONSTER, 28, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ObjectEvent, EVENT_714
+	person_event SPRITE_MONSTER, 29, 9, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_714
+	person_event SPRITE_FRUIT_TREE, 43, 9, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a17f7, -1
+	person_event SPRITE_FRUIT_TREE, 9, 15, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a17f9, -1
+	person_event SPRITE_COOLTRAINER_F, 17, 6, UP << 2 | $2, $0, -1, -1, $0, 0, CooltrainerFScript_0x1a17e6, -1
+	person_event SPRITE_POKE_BALL, 39, 12, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a17f5, EVENT_7B8
--- a/maps/Route30BerrySpeechHouse.asm
+++ b/maps/Route30BerrySpeechHouse.asm
@@ -57,9 +57,9 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, Route30BerrySpeechHouseBookshelf
-	signpost 1, 1, $0, Route30BerrySpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, Route30BerrySpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, Route30BerrySpeechHouseBookshelf
 
 	; people-events
 	db 1
-	person_event SPRITE_POKEFAN_M, 7, 6, $6, $0, 255, 255, $b0, 0, PokefanMScript_0x196d64, -1
+	person_event SPRITE_POKEFAN_M, 7, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x196d64, -1
--- a/maps/Route31.asm
+++ b/maps/Route31.asm
@@ -252,7 +252,7 @@
 	end
 
 ReceivedSpearowMailText:
-	db "DARK CAVE leads",$4E
+	db "DARK CAVE leads", $4E
 	db "to another road@"
 
 YoungsterScript_0x1a55ed:
@@ -441,15 +441,15 @@
 
 	; signposts
 	db 2
-	signpost 5, 7, $0, MapRoute31Signpost0Script
-	signpost 5, 31, $0, MapRoute31Signpost1Script
+	signpost 5, 7, SIGNPOST_READ, MapRoute31Signpost0Script
+	signpost 5, 31, SIGNPOST_READ, MapRoute31Signpost1Script
 
 	; people-events
 	db 7
-	person_event SPRITE_FISHER, 11, 21, $6, $0, 255, 255, $0, 0, FisherScript_0x1a5570, -1
-	person_event SPRITE_YOUNGSTER, 9, 13, $2, $11, 255, 255, $0, 0, YoungsterScript_0x1a55ed, -1
-	person_event SPRITE_BUG_CATCHER, 17, 25, $8, $0, 255, 255, $b2, 5, TrainerBug_catcherWade1, -1
-	person_event SPRITE_COOLTRAINER_M, 12, 37, $2, $11, 255, 255, $0, 0, CooltrainerMScript_0x1a55f6, -1
-	person_event SPRITE_FRUIT_TREE, 11, 20, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a55f9, -1
-	person_event SPRITE_POKE_BALL, 9, 33, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a55fb, EVENT_6AE
-	person_event SPRITE_POKE_BALL, 19, 23, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a55fd, EVENT_6AF
+	person_event SPRITE_FISHER, 11, 21, UP << 2 | $2, $0, -1, -1, $0, 0, FisherScript_0x1a5570, -1
+	person_event SPRITE_YOUNGSTER, 9, 13, DOWN << 2 | $2, $11, -1, -1, $0, 0, YoungsterScript_0x1a55ed, -1
+	person_event SPRITE_BUG_CATCHER, 17, 25, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 5, TrainerBug_catcherWade1, -1
+	person_event SPRITE_COOLTRAINER_M, 12, 37, DOWN << 2 | $2, $11, -1, -1, $0, 0, CooltrainerMScript_0x1a55f6, -1
+	person_event SPRITE_FRUIT_TREE, 11, 20, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a55f9, -1
+	person_event SPRITE_POKE_BALL, 9, 33, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a55fb, EVENT_6AE
+	person_event SPRITE_POKE_BALL, 19, 23, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a55fd, EVENT_6AF
--- a/maps/Route31VioletGate.asm
+++ b/maps/Route31VioletGate.asm
@@ -42,5 +42,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $80, 0, OfficerScript_0x197634, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 5, $3, $0, 255, 255, $90, 0, CooltrainerFScript_0x197637, -1
+	person_event SPRITE_OFFICER, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x197634, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 5, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CooltrainerFScript_0x197637, -1
--- a/maps/Route32.asm
+++ b/maps/Route32.asm
@@ -1067,26 +1067,26 @@
 
 	; signposts
 	db 6
-	signpost 5, 13, $0, Route32Sign
-	signpost 1, 9, $0, Route32RuinsSign
-	signpost 84, 10, $0, Route32UnionCaveSign
-	signpost 73, 12, $0, Route32PokeCenterSign
-	signpost 67, 12, $7, MapRoute32SignpostItem4
-	signpost 40, 11, $7, MapRoute32SignpostItem5
+	signpost 5, 13, SIGNPOST_READ, Route32Sign
+	signpost 1, 9, SIGNPOST_READ, Route32RuinsSign
+	signpost 84, 10, SIGNPOST_READ, Route32UnionCaveSign
+	signpost 73, 12, SIGNPOST_READ, Route32PokeCenterSign
+	signpost 67, 12, SIGNPOST_ITEMIFSET, MapRoute32SignpostItem4
+	signpost 40, 11, SIGNPOST_ITEMIFSET, MapRoute32SignpostItem5
 
 	; people-events
 	db 14
-	person_event SPRITE_FISHER, 53, 12, $6, $0, 255, 255, $a2, 1, TrainerFisherJustin, -1
-	person_event SPRITE_FISHER, 60, 16, $7, $0, 255, 255, $a2, 3, TrainerFisherRalph1, -1
-	person_event SPRITE_FISHER, 52, 10, $8, $0, 255, 255, $a2, 1, TrainerFisherHenry, -1
-	person_event SPRITE_YOUNGSTER, 26, 16, $9, $0, 255, 255, $92, 3, TrainerYoungsterAlbert, -1
-	person_event SPRITE_YOUNGSTER, 67, 8, $a, $0, 255, 255, $92, 3, TrainerYoungsterGordon, -1
-	person_event SPRITE_YOUNGSTER, 49, 7, $7, $0, 255, 255, $a2, 3, TrainerCamperRoland, -1
-	person_event SPRITE_LASS, 34, 14, $8, $0, 255, 255, $a2, 1, TrainerPicnickerLiz1, -1
-	person_event SPRITE_COOLTRAINER_M, 12, 23, $8, $0, 255, 255, $0, 0, CooltrainerMScript_0x19046f, -1
-	person_event SPRITE_YOUNGSTER, 86, 15, $7, $0, 255, 255, $92, 3, TrainerBird_keeperPeter, -1
-	person_event SPRITE_FISHER, 74, 11, $6, $0, 255, 255, $0, 0, FisherScript_0x1904f2, EVENT_6FC
-	person_event SPRITE_POKE_BALL, 57, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x190773, EVENT_6B0
-	person_event SPRITE_FISHER, 17, 19, $9, $0, 255, 255, $0, 0, FisherScript_0x1904ce, -1
-	person_event SPRITE_LASS, 71, 16, $8, $0, 255, 255, $0, 0, FriedaScript, EVENT_758
-	person_event SPRITE_POKE_BALL, 34, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x190775, EVENT_6B1
+	person_event SPRITE_FISHER, 53, 12, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherJustin, -1
+	person_event SPRITE_FISHER, 60, 16, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerFisherRalph1, -1
+	person_event SPRITE_FISHER, 52, 10, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherHenry, -1
+	person_event SPRITE_YOUNGSTER, 26, 16, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterAlbert, -1
+	person_event SPRITE_YOUNGSTER, 67, 8, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterGordon, -1
+	person_event SPRITE_YOUNGSTER, 49, 7, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerCamperRoland, -1
+	person_event SPRITE_LASS, 34, 14, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerPicnickerLiz1, -1
+	person_event SPRITE_COOLTRAINER_M, 12, 23, LEFT << 2 | $0, $0, -1, -1, $0, 0, CooltrainerMScript_0x19046f, -1
+	person_event SPRITE_YOUNGSTER, 86, 15, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperPeter, -1
+	person_event SPRITE_FISHER, 74, 11, UP << 2 | $2, $0, -1, -1, $0, 0, FisherScript_0x1904f2, EVENT_6FC
+	person_event SPRITE_POKE_BALL, 57, 10, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x190773, EVENT_6B0
+	person_event SPRITE_FISHER, 17, 19, LEFT << 2 | $1, $0, -1, -1, $0, 0, FisherScript_0x1904ce, -1
+	person_event SPRITE_LASS, 71, 16, LEFT << 2 | $0, $0, -1, -1, $0, 0, FriedaScript, EVENT_758
+	person_event SPRITE_POKE_BALL, 34, 7, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x190775, EVENT_6B1
--- a/maps/Route32PokeCenter1F.asm
+++ b/maps/Route32PokeCenter1F.asm
@@ -107,6 +107,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x69b52, -1
-	person_event SPRITE_FISHING_GURU, 8, 5, $6, $0, 255, 255, $a0, 0, FishingGuruScript_0x69b55, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 10, $6, $0, 255, 255, $80, 0, CooltrainerFScript_0x69b80, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x69b52, -1
+	person_event SPRITE_FISHING_GURU, 8, 5, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FishingGuruScript_0x69b55, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 10, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x69b80, -1
--- a/maps/Route32RuinsofAlphGate.asm
+++ b/maps/Route32RuinsofAlphGate.asm
@@ -60,6 +60,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $80, 0, OfficerScript_0x69a2d, -1
-	person_event SPRITE_POKEFAN_M, 6, 12, $4, $10, 255, 255, $b0, 0, PokefanMScript_0x69a30, -1
-	person_event SPRITE_YOUNGSTER, 10, 5, $7, $0, 255, 255, $a0, 0, YoungsterScript_0x69a33, -1
+	person_event SPRITE_OFFICER, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x69a2d, -1
+	person_event SPRITE_POKEFAN_M, 6, 12, UP << 2 | $0, $10, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x69a30, -1
+	person_event SPRITE_YOUNGSTER, 10, 5, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x69a33, -1
--- a/maps/Route33.asm
+++ b/maps/Route33.asm
@@ -218,10 +218,10 @@
 
 	; signposts
 	db 1
-	signpost 11, 11, $0, MapRoute33Signpost0Script
+	signpost 11, 11, SIGNPOST_READ, MapRoute33Signpost0Script
 
 	; people-events
 	db 3
-	person_event SPRITE_POKEFAN_M, 17, 10, $a, $0, 255, 255, $b2, 2, TrainerHikerAnthony, -1
-	person_event SPRITE_LASS, 20, 17, $2, $11, 255, 255, $90, 0, LassScript_0x1ac002, -1
-	person_event SPRITE_FRUIT_TREE, 20, 18, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1ac0ea, -1
+	person_event SPRITE_POKEFAN_M, 17, 10, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerHikerAnthony, -1
+	person_event SPRITE_LASS, 20, 17, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x1ac002, -1
+	person_event SPRITE_FRUIT_TREE, 20, 18, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1ac0ea, -1
--- a/maps/Route34.asm
+++ b/maps/Route34.asm
@@ -897,24 +897,24 @@
 
 	; signposts
 	db 5
-	signpost 6, 12, $0, MapRoute34Signpost0Script
-	signpost 33, 13, $0, MapRoute34Signpost1Script
-	signpost 13, 10, $0, MapRoute34Signpost2Script
-	signpost 32, 8, $7, MapRoute34SignpostItem3
-	signpost 19, 17, $7, MapRoute34SignpostItem4
+	signpost 6, 12, SIGNPOST_READ, MapRoute34Signpost0Script
+	signpost 33, 13, SIGNPOST_READ, MapRoute34Signpost1Script
+	signpost 13, 10, SIGNPOST_READ, MapRoute34Signpost2Script
+	signpost 32, 8, SIGNPOST_ITEMIFSET, MapRoute34SignpostItem3
+	signpost 19, 17, SIGNPOST_ITEMIFSET, MapRoute34SignpostItem4
 
 	; people-events
 	db 13
-	person_event SPRITE_YOUNGSTER, 11, 17, $8, $0, 255, 255, $a2, 5, TrainerCamperTodd1, -1
-	person_event SPRITE_YOUNGSTER, 36, 19, $6, $0, 255, 255, $92, 3, TrainerYoungsterSamuel, -1
-	person_event SPRITE_YOUNGSTER, 24, 15, $6, $0, 255, 255, $92, 3, TrainerYoungsterIan, -1
-	person_event SPRITE_LASS, 30, 14, $9, $0, 255, 255, $a2, 3, TrainerPicnickerGina1, -1
-	person_event SPRITE_OFFICER, 15, 13, $6, $0, 255, 255, $90, 0, OfficerScript_0x7824c, -1
-	person_event SPRITE_POKEFAN_M, 32, 22, $1e, $0, 255, 255, $82, 3, TrainerPokefanmBrandon, -1
-	person_event SPRITE_GRAMPS, 20, 19, $6, $0, 255, 255, $0, 0, GrampsScript_0x7803d, EVENT_6E6
-	person_event SPRITE_DAYCARE_MON_1, 22, 18, $16, $22, 255, 255, $0, 0, DaycareMon1Script_0x78065, EVENT_6E7
-	person_event SPRITE_DAYCARE_MON_2, 23, 21, $16, $22, 255, 255, $0, 0, DaycareMon2Script_0x7806b, EVENT_6E8
-	person_event SPRITE_COOLTRAINER_F, 52, 15, $8, $0, 255, 255, $82, 5, TrainerCooltrainerfIrene, -1
-	person_event SPRITE_COOLTRAINER_F, 52, 7, $9, $0, 255, 255, $82, 3, TrainerCooltrainerfJenn, -1
-	person_event SPRITE_COOLTRAINER_F, 55, 10, $7, $0, 255, 255, $82, 2, TrainerCooltrainerfKate, -1
-	person_event SPRITE_POKE_BALL, 34, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x7832b, EVENT_7BC
+	person_event SPRITE_YOUNGSTER, 11, 17, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 5, TrainerCamperTodd1, -1
+	person_event SPRITE_YOUNGSTER, 36, 19, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterSamuel, -1
+	person_event SPRITE_YOUNGSTER, 24, 15, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerYoungsterIan, -1
+	person_event SPRITE_LASS, 30, 14, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerPicnickerGina1, -1
+	person_event SPRITE_OFFICER, 15, 13, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x7824c, -1
+	person_event SPRITE_POKEFAN_M, 32, 22, RIGHT << 2 | $12, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerPokefanmBrandon, -1
+	person_event SPRITE_GRAMPS, 20, 19, UP << 2 | $2, $0, -1, -1, $0, 0, GrampsScript_0x7803d, EVENT_6E6
+	person_event SPRITE_DAYCARE_MON_1, 22, 18, UP << 2 | $12, $22, -1, -1, $0, 0, DaycareMon1Script_0x78065, EVENT_6E7
+	person_event SPRITE_DAYCARE_MON_2, 23, 21, UP << 2 | $12, $22, -1, -1, $0, 0, DaycareMon2Script_0x7806b, EVENT_6E8
+	person_event SPRITE_COOLTRAINER_F, 52, 15, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 5, TrainerCooltrainerfIrene, -1
+	person_event SPRITE_COOLTRAINER_F, 52, 7, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainerfJenn, -1
+	person_event SPRITE_COOLTRAINER_F, 55, 10, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerCooltrainerfKate, -1
+	person_event SPRITE_POKE_BALL, 34, 11, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7832b, EVENT_7BC
--- a/maps/Route34IlexForestGate.asm
+++ b/maps/Route34IlexForestGate.asm
@@ -152,7 +152,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_TEACHER, 7, 13, $8, $0, 255, 255, $90, 0, TeacherScript_0x62d63, EVENT_6EA
-	person_event SPRITE_BUTTERFREE, 8, 13, $16, $0, 255, 255, $80, 0, ButterfreeScript_0x62d8a, -1
-	person_event SPRITE_LASS, 8, 7, $4, $10, 255, 255, $a0, 0, LassScript_0x62d94, EVENT_6EB
-	person_event SPRITE_TEACHER, 11, 9, $7, $0, 255, 255, $90, 0, TeacherScript_0x62d63, EVENT_6EC
+	person_event SPRITE_TEACHER, 7, 13, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x62d63, EVENT_6EA
+	person_event SPRITE_BUTTERFREE, 8, 13, UP << 2 | $12, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ButterfreeScript_0x62d8a, -1
+	person_event SPRITE_LASS, 8, 7, UP << 2 | $0, $10, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x62d94, EVENT_6EB
+	person_event SPRITE_TEACHER, 11, 9, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x62d63, EVENT_6EC
--- a/maps/Route35.asm
+++ b/maps/Route35.asm
@@ -592,19 +592,19 @@
 
 	; signposts
 	db 2
-	signpost 7, 1, $0, MapRoute35Signpost1Script
-	signpost 31, 11, $0, MapRoute35Signpost1Script
+	signpost 7, 1, SIGNPOST_READ, MapRoute35Signpost1Script
+	signpost 31, 11, SIGNPOST_READ, MapRoute35Signpost1Script
 
 	; people-events
 	db 11
-	person_event SPRITE_YOUNGSTER, 23, 8, $a, $0, 255, 255, $a2, 2, TrainerCamperIvan, -1
-	person_event SPRITE_YOUNGSTER, 24, 12, $6, $0, 255, 255, $a2, 3, TrainerCamperElliot, -1
-	person_event SPRITE_LASS, 24, 11, $6, $0, 255, 255, $a2, 3, TrainerPicnickerBrooke, -1
-	person_event SPRITE_LASS, 30, 14, $a, $0, 255, 255, $a2, 1, TrainerPicnickerKim, -1
-	person_event SPRITE_YOUNGSTER, 32, 18, $6, $0, 255, 255, $92, 0, TrainerBird_keeperBryan, -1
-	person_event SPRITE_FISHER, 14, 6, $1e, $0, 255, 255, $82, 2, TrainerFirebreatherWalt, -1
-	person_event SPRITE_BUG_CATCHER, 11, 20, $6, $2, 255, 255, $b2, 3, TrainerBug_catcherArnie1, -1
-	person_event SPRITE_SUPER_NERD, 14, 9, $a, $0, 255, 255, $92, 2, TrainerJugglerIrwin, -1
-	person_event SPRITE_OFFICER, 10, 9, $6, $0, 255, 255, $90, 0, OfficerScript_0x19ca49, -1
-	person_event SPRITE_FRUIT_TREE, 29, 6, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x19ca7e, -1
-	person_event SPRITE_POKE_BALL, 20, 17, $1, $0, 255, 255, $1, 0, ItemFragment_0x19ca7c, EVENT_6B2
+	person_event SPRITE_YOUNGSTER, 23, 8, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerCamperIvan, -1
+	person_event SPRITE_YOUNGSTER, 24, 12, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerCamperElliot, -1
+	person_event SPRITE_LASS, 24, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerPicnickerBrooke, -1
+	person_event SPRITE_LASS, 30, 14, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerPicnickerKim, -1
+	person_event SPRITE_YOUNGSTER, 32, 18, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 0, TrainerBird_keeperBryan, -1
+	person_event SPRITE_FISHER, 14, 6, RIGHT << 2 | $12, $0, -1, -1, (PAL_OW_RED << 4) | $82, 2, TrainerFirebreatherWalt, -1
+	person_event SPRITE_BUG_CATCHER, 11, 20, UP << 2 | $2, $2, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerBug_catcherArnie1, -1
+	person_event SPRITE_SUPER_NERD, 14, 9, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerJugglerIrwin, -1
+	person_event SPRITE_OFFICER, 10, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x19ca49, -1
+	person_event SPRITE_FRUIT_TREE, 29, 6, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x19ca7e, -1
+	person_event SPRITE_POKE_BALL, 20, 17, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x19ca7c, EVENT_6B2
--- a/maps/Route35Goldenrodgate.asm
+++ b/maps/Route35Goldenrodgate.asm
@@ -209,6 +209,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $80, 0, OfficerScript_0x69d37, -1
-	person_event SPRITE_POKEFAN_F, 8, 10, $4, $10, 255, 255, $90, 0, PokefanFScript_0x69dc6, -1
-	person_event SPRITE_FISHER, 6, 7, $3, $0, 255, 255, $a0, 0, FisherScript_0x69dda, -1
+	person_event SPRITE_OFFICER, 8, 4, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x69d37, -1
+	person_event SPRITE_POKEFAN_F, 8, 10, UP << 2 | $0, $10, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, PokefanFScript_0x69dc6, -1
+	person_event SPRITE_FISHER, 6, 7, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x69dda, -1
--- a/maps/Route35NationalParkgate.asm
+++ b/maps/Route35NationalParkgate.asm
@@ -3,9 +3,9 @@
 	db 3
 
 	; triggers
-	dw UnknownScript_0x6a19d, $0000
-	dw UnknownScript_0x6a19e, $0000
-	dw UnknownScript_0x6a19f, $0000
+	dw Route35NationalParkgate_Trigger1, $0000
+	dw Route35NationalParkgate_Trigger2, $0000
+	dw Route35NationalParkgate_Trigger3, $0000
 
 	; callback count
 	db 2
@@ -12,49 +12,49 @@
 
 	; callbacks
 
-	dbw 5, UnknownScript_0x6a1a3
+	dbw 5, Route35NationalParkgate_CheckIfStillInContest
 
-	dbw 2, UnknownScript_0x6a1af
+	dbw 2, Route35NationalParkgate_CheckIfContestDay
 
-UnknownScript_0x6a19d:
+Route35NationalParkgate_Trigger1:
 	end
 
-UnknownScript_0x6a19e:
+Route35NationalParkgate_Trigger2:
 	end
 
-UnknownScript_0x6a19f:
-	priorityjump UnknownScript_0x6a1d1
+Route35NationalParkgate_Trigger3:
+	priorityjump Route35NationalParkGate_LeavingContestEarly
 	end
 
-UnknownScript_0x6a1a3:
+Route35NationalParkgate_CheckIfStillInContest:
 	checkflag ENGINE_BUG_CONTEST_TIMER
-	iftrue UnknownScript_0x6a1ac
+	iftrue Route35NationalParkgate_Yes
 	dotrigger $0
 	return
 
-UnknownScript_0x6a1ac:
+Route35NationalParkgate_Yes:
 	dotrigger $2
 	return
 
-UnknownScript_0x6a1af:
+Route35NationalParkgate_CheckIfContestDay:
 	checkcode VAR_WEEKDAY
-	if_equal TUESDAY, UnknownScript_0x6a1ca
-	if_equal THURSDAY, UnknownScript_0x6a1ca
-	if_equal SATURDAY, UnknownScript_0x6a1ca
+	if_equal TUESDAY, Route35NationalParkgate_IsContestDay
+	if_equal THURSDAY, Route35NationalParkgate_IsContestDay
+	if_equal SATURDAY, Route35NationalParkgate_IsContestDay
 	checkflag ENGINE_BUG_CONTEST_TIMER
-	iftrue UnknownScript_0x6a1ac
+	iftrue Route35NationalParkgate_Yes
 	disappear $2
 	appear $3
 	appear $4
 	return
 
-UnknownScript_0x6a1ca:
+Route35NationalParkgate_IsContestDay:
 	appear $2
 	disappear $3
 	disappear $4
 	return
 
-UnknownScript_0x6a1d1:
+Route35NationalParkGate_LeavingContestEarly:
 	applymovement $0, MovementData_0x6a2e2
 	spriteface $2, RIGHT
 	loadfont
@@ -63,17 +63,17 @@
 	RAM2MEM $0
 	writetext UnknownText_0x6a79a
 	yesorno
-	iffalse UnknownScript_0x6a1ee
+	iffalse Route35NationalParkgate_GoBackIn
 	writetext UnknownText_0x6a7db
 	closetext
 	loadmovesprites
 	jumpstd bugcontestresultswarp
 
-UnknownScript_0x6a1ee:
+Route35NationalParkgate_GoBackIn:
 	writetext UnknownText_0x6a823
 	closetext
 	loadmovesprites
-	scall UnknownScript_0x6a261
+	scall Route35NationalParkgate_EnterContest
 	playsound SFX_ENTER_DOOR
 	special Function8c084
 	waitbutton
@@ -82,23 +82,23 @@
 
 OfficerScript_0x6a204:
 	checkcode VAR_WEEKDAY
-	if_equal SUNDAY, UnknownScript_0x6a2c7
-	if_equal MONDAY, UnknownScript_0x6a2c7
-	if_equal WEDNESDAY, UnknownScript_0x6a2c7
-	if_equal FRIDAY, UnknownScript_0x6a2c7
+	if_equal SUNDAY, Route35NationalParkgate_NoContestToday
+	if_equal MONDAY, Route35NationalParkgate_NoContestToday
+	if_equal WEDNESDAY, Route35NationalParkgate_NoContestToday
+	if_equal FRIDAY, Route35NationalParkgate_NoContestToday
 	faceplayer
 	loadfont
 	checkflag ENGINE_DAILY_BUG_CONTEST
-	iftrue UnknownScript_0x6a2c1
-	scall UnknownScript_0x6a2de
+	iftrue Route35NationalParkgate_ContestIsOver
+	scall Route35NationalParkgate_GetDayOfWeek
 	writetext UnknownText_0x6a2eb
 	yesorno
-	iffalse UnknownScript_0x6a2a3
+	iffalse Route35NationalParkgate_DeclinedToParticipate
 	checkcode VAR_PARTYCOUNT
-	if_greater_than $1, UnknownScript_0x6a271
-	special Function13a12
+	if_greater_than $1, Route35NationalParkgate_LeaveTheRestBehind
+	special CheckFirstMonFainted
 	clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
-UnknownScript_0x6a234:
+Route35NationalParkgate_OkayToProceed:
 	setflag ENGINE_BUG_CONTEST_TIMER
 	special PlayMapMusic
 	writetext UnknownText_0x6a39d
@@ -109,39 +109,39 @@
 	writetext UnknownText_0x6a3e2
 	closetext
 	loadmovesprites
-	special Function135db
-	scall UnknownScript_0x6a261
+	special Special_GiveParkBalls
+	scall Route35NationalParkgate_EnterContest
 	playsound SFX_ENTER_DOOR
 	special Function8c084
 	waitbutton
-	special Function139a8
+	special Special_SelectRandomBugContestContestants
 	warpfacing $1, GROUP_NATIONAL_PARK_BUG_CONTEST, MAP_NATIONAL_PARK_BUG_CONTEST, $a, $2f
 	end
 
-UnknownScript_0x6a261:
+Route35NationalParkgate_EnterContest:
 	checkcode VAR_FACING
-	if_equal $2, UnknownScript_0x6a26c
+	if_equal LEFT, Route35NationalParkgate_FacingLeft
 	applymovement $0, MovementData_0x6a2e5
 	end
 
-UnknownScript_0x6a26c:
+Route35NationalParkgate_FacingLeft:
 	applymovement $0, MovementData_0x6a2e9
 	end
 
-UnknownScript_0x6a271:
+Route35NationalParkgate_LeaveTheRestBehind:
 	checkcode VAR_PARTYCOUNT
-	if_less_than $6, UnknownScript_0x6a27d
+	if_less_than 6, Route35NationalParkgate_LessThanFullParty
 	checkcode VAR_BOXSPACE
-	if_equal $0, UnknownScript_0x6a2b5
+	if_equal 0, Route35NationalParkgate_NoRoomInBox
 
-UnknownScript_0x6a27d: ; 6a27d
+Route35NationalParkgate_LessThanFullParty: ; 6a27d
 	special Function71ac
-	if_equal $1, UnknownScript_0x6a2bb
+	if_equal $1, Route35NationalParkgate_FirstMonIsEgg
 	writetext UnknownText_0x6a4c6
 	yesorno
-	iffalse UnknownScript_0x6a2a9
-	special Function13a12
-	iftrue UnknownScript_0x6a2af
+	iffalse Route35NationalParkgate_DeclinedToLeaveMonsBehind
+	special CheckFirstMonFainted
+	iftrue Route35NationalParkgate_FirstMonIsFainted
 	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 	writetext UnknownText_0x6a537
 	keeptextopen
@@ -149,45 +149,45 @@
 	playsound SFX_GOT_SAFARI_BALLS
 	waitbutton
 	keeptextopen
-	jump UnknownScript_0x6a234
+	jump Route35NationalParkgate_OkayToProceed
 
-UnknownScript_0x6a2a3:
+Route35NationalParkgate_DeclinedToParticipate:
 	writetext UnknownText_0x6a5dc
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x6a2a9:
+Route35NationalParkgate_DeclinedToLeaveMonsBehind:
 	writetext UnknownText_0x6a597
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x6a2af:
+Route35NationalParkgate_FirstMonIsFainted:
 	writetext UnknownText_0x6a608
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x6a2b5:
+Route35NationalParkgate_NoRoomInBox:
 	writetext UnknownText_0x6a67c
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x6a2bb:
+Route35NationalParkgate_FirstMonIsEgg:
 	writetext UnknownText_0x6a71f
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x6a2c1:
+Route35NationalParkgate_ContestIsOver:
 	writetext UnknownText_0x6a84f
 	closetext
 	loadmovesprites
 	end
 
-UnknownScript_0x6a2c7:
+Route35NationalParkgate_NoContestToday:
 	jumptextfaceplayer UnknownText_0x6a894
 
 OfficerScript_0x6a2ca:
@@ -194,7 +194,7 @@
 	faceplayer
 	loadfont
 	checkflag ENGINE_DAILY_BUG_CONTEST
-	iftrue UnknownScript_0x6a2c1
+	iftrue Route35NationalParkgate_ContestIsOver
 	writetext UnknownText_0x6a894
 	closetext
 	loadmovesprites
@@ -206,7 +206,7 @@
 MapRoute36NationalParkgateSignpost0Script:
 	jumptext UnknownText_0x6a90e
 
-UnknownScript_0x6a2de:
+Route35NationalParkgate_GetDayOfWeek:
 	jumpstd daytotext
 	end
 
@@ -454,10 +454,10 @@
 
 	; signposts
 	db 1
-	signpost 0, 5, $0, MapRoute36NationalParkgateSignpost0Script
+	signpost 0, 5, SIGNPOST_READ, MapRoute36NationalParkgateSignpost0Script
 
 	; people-events
 	db 3
-	person_event SPRITE_OFFICER, 5, 6, $6, $0, 255, 255, $a0, 0, OfficerScript_0x6a204, EVENT_745
-	person_event SPRITE_YOUNGSTER, 9, 10, $2, $11, 255, 255, $80, 0, YoungsterScript_0x6a2d8, EVENT_734
-	person_event SPRITE_OFFICER, 7, 4, $9, $0, 255, 255, $a0, 0, OfficerScript_0x6a2ca, EVENT_746
+	person_event SPRITE_OFFICER, 5, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x6a204, EVENT_745
+	person_event SPRITE_YOUNGSTER, 9, 10, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x6a2d8, EVENT_734
+	person_event SPRITE_OFFICER, 7, 4, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x6a2ca, EVENT_746
--- a/maps/Route36.asm
+++ b/maps/Route36.asm
@@ -704,19 +704,19 @@
 
 	; signposts
 	db 4
-	signpost 1, 29, $0, MapRoute36Signpost0Script
-	signpost 11, 45, $0, MapRoute36Signpost1Script
-	signpost 7, 55, $0, MapRoute36Signpost2Script
-	signpost 7, 21, $0, MapRoute36Signpost3Script
+	signpost 1, 29, SIGNPOST_READ, MapRoute36Signpost0Script
+	signpost 11, 45, SIGNPOST_READ, MapRoute36Signpost1Script
+	signpost 7, 55, SIGNPOST_READ, MapRoute36Signpost2Script
+	signpost 7, 21, SIGNPOST_READ, MapRoute36Signpost3Script
 
 	; people-events
 	db 9
-	person_event SPRITE_YOUNGSTER, 17, 24, $9, $0, 255, 255, $92, 3, TrainerPsychicMark, -1
-	person_event SPRITE_YOUNGSTER, 18, 35, $8, $0, 255, 255, $92, 5, TrainerSchoolboyAlan1, -1
-	person_event SPRITE_WEIRD_TREE, 13, 39, $17, $0, 255, 255, $0, 0, WeirdTreeScript_0x19403c, EVENT_6F8
-	person_event SPRITE_LASS, 12, 55, $5, $2, 255, 255, $0, 0, LassScript_0x1940e0, -1
-	person_event SPRITE_FISHER, 13, 48, $8, $0, 255, 255, $0, 0, FisherScript_0x1940b9, -1
-	person_event SPRITE_FRUIT_TREE, 8, 25, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x194247, -1
-	person_event SPRITE_YOUNGSTER, 10, 50, $2, $11, 255, 255, $0, 0, ArthurScript, EVENT_75A
-	person_event SPRITE_LASS, 16, 37, $6, $0, 255, 255, $90, 0, LassScript_0x19408c, EVENT_FLORIA_AT_SUDOWOODO
-	person_event SPRITE_SUICUNE, 10, 25, $1, $0, 255, 255, $90, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_36
+	person_event SPRITE_YOUNGSTER, 17, 24, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPsychicMark, -1
+	person_event SPRITE_YOUNGSTER, 18, 35, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 5, TrainerSchoolboyAlan1, -1
+	person_event SPRITE_WEIRD_TREE, 13, 39, UP << 2 | $13, $0, -1, -1, $0, 0, WeirdTreeScript_0x19403c, EVENT_6F8
+	person_event SPRITE_LASS, 12, 55, UP << 2 | $1, $2, -1, -1, $0, 0, LassScript_0x1940e0, -1
+	person_event SPRITE_FISHER, 13, 48, LEFT << 2 | $0, $0, -1, -1, $0, 0, FisherScript_0x1940b9, -1
+	person_event SPRITE_FRUIT_TREE, 8, 25, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x194247, -1
+	person_event SPRITE_YOUNGSTER, 10, 50, DOWN << 2 | $2, $11, -1, -1, $0, 0, ArthurScript, EVENT_75A
+	person_event SPRITE_LASS, 16, 37, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x19408c, EVENT_FLORIA_AT_SUDOWOODO
+	person_event SPRITE_SUICUNE, 10, 25, DOWN << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_36
--- a/maps/Route36NationalParkgate.asm
+++ b/maps/Route36NationalParkgate.asm
@@ -89,43 +89,43 @@
 	end
 
 UnknownScript_0x6ab8c:
-	checkevent EVENT_716
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_1A
 	iftrue UnknownScript_0x6ab94
 	appear $3
 UnknownScript_0x6ab94:
-	checkevent EVENT_717
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_2A
 	iftrue UnknownScript_0x6ab9c
 	appear $4
 UnknownScript_0x6ab9c:
-	checkevent EVENT_718
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_3A
 	iftrue UnknownScript_0x6aba4
 	appear $5
 UnknownScript_0x6aba4:
-	checkevent EVENT_719
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_4A
 	iftrue UnknownScript_0x6abac
 	appear $6
 UnknownScript_0x6abac:
-	checkevent EVENT_71A
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_5A
 	iftrue UnknownScript_0x6abb4
 	appear $7
 UnknownScript_0x6abb4:
-	checkevent EVENT_71B
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_6A
 	iftrue UnknownScript_0x6abbc
 	appear $8
 UnknownScript_0x6abbc:
-	checkevent EVENT_71C
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_7A
 	iftrue UnknownScript_0x6abc4
 	appear $9
 UnknownScript_0x6abc4:
-	checkevent EVENT_71D
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_8A
 	iftrue UnknownScript_0x6abcc
 	appear $a
 UnknownScript_0x6abcc:
-	checkevent EVENT_71E
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_9A
 	iftrue UnknownScript_0x6abd4
 	appear $b
 UnknownScript_0x6abd4:
-	checkevent EVENT_71F
+	checkevent EVENT_BUG_CATCHING_CONTESTANT_10A
 	iftrue UnknownScript_0x6abdc
 	appear $c
 UnknownScript_0x6abdc:
@@ -148,7 +148,7 @@
 	iffalse UnknownScript_0x6ac73
 	checkcode VAR_PARTYCOUNT
 	if_greater_than $1, UnknownScript_0x6ac41
-	special Function13a12
+	special CheckFirstMonFainted
 	clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 UnknownScript_0x6ac10:
 	setflag ENGINE_BUG_CONTEST_TIMER
@@ -163,12 +163,12 @@
 	closetext
 	loadmovesprites
 	setflag ENGINE_BUG_CONTEST_TIMER
-	special Function135db
+	special Special_GiveParkBalls
 	spriteface $0, LEFT
 	playsound SFX_EXIT_BUILDING
 	special Function8c084
 	waitbutton
-	special Function139a8
+	special Special_SelectRandomBugContestContestants
 	warpfacing $2, GROUP_NATIONAL_PARK_BUG_CONTEST, MAP_NATIONAL_PARK_BUG_CONTEST, $21, $12
 	end
 
@@ -183,7 +183,7 @@
 	writetext UnknownText_0x6afb0
 	yesorno
 	iffalse UnknownScript_0x6ac79
-	special Function13a12
+	special CheckFirstMonFainted
 	iftrue UnknownScript_0x6ac7f
 	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 	writetext UnknownText_0x6b021
@@ -300,7 +300,7 @@
 YoungsterScript_0x6ad06:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iffalse UnknownScript_0x6ad14
 	writetext UnknownText_0x6b399
 	closetext
@@ -316,7 +316,7 @@
 YoungsterScript_0x6ad1a:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iffalse UnknownScript_0x6ad28
 	writetext UnknownText_0x6b40f
 	closetext
@@ -332,7 +332,7 @@
 RockerScript_0x6ad2e:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iffalse UnknownScript_0x6ad3c
 	writetext UnknownText_0x6b462
 	closetext
@@ -348,7 +348,7 @@
 PokefanMScript_0x6ad42:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iffalse UnknownScript_0x6ad50
 	writetext UnknownText_0x6b4da
 	closetext
@@ -364,7 +364,7 @@
 YoungsterScript_0x6ad56:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iffalse UnknownScript_0x6ad64
 	writetext UnknownText_0x6b54e
 	closetext
@@ -380,7 +380,7 @@
 YoungsterScript_0x6ad6a:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iffalse UnknownScript_0x6ad78
 	writetext UnknownText_0x6b5b0
 	closetext
@@ -396,7 +396,7 @@
 LassScript_0x6ad7e:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iffalse UnknownScript_0x6ad8c
 	writetext UnknownText_0x6b64b
 	closetext
@@ -412,7 +412,7 @@
 YoungsterScript_0x6ad92:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iffalse UnknownScript_0x6ada0
 	writetext UnknownText_0x6b6b8
 	closetext
@@ -428,7 +428,7 @@
 YoungsterScript_0x6ada6:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iffalse UnknownScript_0x6adb4
 	writetext UnknownText_0x6b71b
 	closetext
@@ -444,7 +444,7 @@
 YoungsterScript_0x6adba:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iffalse UnknownScript_0x6adc8
 	writetext UnknownText_0x6b76f
 	closetext
@@ -858,19 +858,19 @@
 
 	; signposts
 	db 1
-	signpost 0, 6, $0, MapRoute36NationalParkgateSignpost0Script
+	signpost 0, 6, SIGNPOST_READ, MapRoute36NationalParkgateSignpost0Script
 
 	; people-events
 	db 12
-	person_event SPRITE_OFFICER, 7, 4, $6, $0, 255, 255, $a0, 0, OfficerScript_0x6abe0, EVENT_747
-	person_event SPRITE_YOUNGSTER, 9, 6, $7, $0, 255, 255, $80, 0, YoungsterScript_0x6ad06, EVENT_720
-	person_event SPRITE_YOUNGSTER, 9, 8, $7, $0, 255, 255, $a0, 0, YoungsterScript_0x6ad1a, EVENT_721
-	person_event SPRITE_ROCKER, 10, 6, $7, $0, 255, 255, $90, 0, RockerScript_0x6ad2e, EVENT_722
-	person_event SPRITE_POKEFAN_M, 9, 10, $7, $0, 255, 255, $b0, 0, PokefanMScript_0x6ad42, EVENT_723
-	person_event SPRITE_YOUNGSTER, 11, 6, $7, $0, 255, 255, $80, 0, YoungsterScript_0x6ad56, EVENT_724
-	person_event SPRITE_YOUNGSTER, 10, 9, $7, $0, 255, 255, $a0, 0, YoungsterScript_0x6ad6a, EVENT_725
-	person_event SPRITE_LASS, 10, 7, $7, $0, 255, 255, $90, 0, LassScript_0x6ad7e, EVENT_726
-	person_event SPRITE_YOUNGSTER, 11, 8, $7, $0, 255, 255, $80, 0, YoungsterScript_0x6ad92, EVENT_727
-	person_event SPRITE_YOUNGSTER, 11, 10, $7, $0, 255, 255, $a0, 0, YoungsterScript_0x6ada6, EVENT_728
-	person_event SPRITE_YOUNGSTER, 10, 10, $7, $0, 255, 255, $90, 0, YoungsterScript_0x6adba, EVENT_729
-	person_event SPRITE_OFFICER, 6, 7, $6, $0, 255, 255, $a0, 0, OfficerScript_0x6acf4, EVENT_748
+	person_event SPRITE_OFFICER, 7, 4, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x6abe0, EVENT_747
+	person_event SPRITE_YOUNGSTER, 9, 6, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x6ad06, EVENT_BUG_CATCHING_CONTESTANT_1B
+	person_event SPRITE_YOUNGSTER, 9, 8, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x6ad1a, EVENT_BUG_CATCHING_CONTESTANT_2B
+	person_event SPRITE_ROCKER, 10, 6, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, RockerScript_0x6ad2e, EVENT_BUG_CATCHING_CONTESTANT_3B
+	person_event SPRITE_POKEFAN_M, 9, 10, UP << 2 | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x6ad42, EVENT_BUG_CATCHING_CONTESTANT_4B
+	person_event SPRITE_YOUNGSTER, 11, 6, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x6ad56, EVENT_BUG_CATCHING_CONTESTANT_5B
+	person_event SPRITE_YOUNGSTER, 10, 9, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x6ad6a, EVENT_BUG_CATCHING_CONTESTANT_6B
+	person_event SPRITE_LASS, 10, 7, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x6ad7e, EVENT_BUG_CATCHING_CONTESTANT_7B
+	person_event SPRITE_YOUNGSTER, 11, 8, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x6ad92, EVENT_BUG_CATCHING_CONTESTANT_8B
+	person_event SPRITE_YOUNGSTER, 11, 10, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x6ada6, EVENT_BUG_CATCHING_CONTESTANT_9B
+	person_event SPRITE_YOUNGSTER, 10, 10, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x6adba, EVENT_BUG_CATCHING_CONTESTANT_10B
+	person_event SPRITE_OFFICER, 6, 7, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, OfficerScript_0x6acf4, EVENT_748
--- a/maps/Route36RuinsofAlphgate.asm
+++ b/maps/Route36RuinsofAlphgate.asm
@@ -49,5 +49,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $80, 0, OfficerScript_0x6aa1a, -1
-	person_event SPRITE_GRAMPS, 9, 11, $2, $21, 255, 255, $b0, 0, GrampsScript_0x6aa1d, -1
+	person_event SPRITE_OFFICER, 8, 4, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x6aa1a, -1
+	person_event SPRITE_GRAMPS, 9, 11, DOWN << 2 | $2, $21, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrampsScript_0x6aa1d, -1
--- a/maps/Route37.asm
+++ b/maps/Route37.asm
@@ -293,15 +293,15 @@
 
 	; signposts
 	db 2
-	signpost 3, 5, $0, MapRoute37Signpost0Script
-	signpost 2, 4, $7, MapRoute37SignpostItem1
+	signpost 3, 5, SIGNPOST_READ, MapRoute37Signpost0Script
+	signpost 2, 4, SIGNPOST_ITEMIFSET, MapRoute37SignpostItem1
 
 	; people-events
 	db 7
-	person_event SPRITE_WEIRD_TREE, 16, 10, $6, $0, 255, 255, $82, 1, TrainerTwinsAnnandanne1, -1
-	person_event SPRITE_WEIRD_TREE, 16, 11, $6, $0, 255, 255, $82, 1, TrainerTwinsAnnandanne2, -1
-	person_event SPRITE_YOUNGSTER, 10, 10, $a, $0, 255, 255, $92, 1, TrainerPsychicGreg, -1
-	person_event SPRITE_FRUIT_TREE, 9, 17, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a8e09, -1
-	person_event SPRITE_BUG_CATCHER, 12, 20, $2, $11, 255, 255, $0, 0, SunnyScript, EVENT_75B
-	person_event SPRITE_FRUIT_TREE, 9, 20, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a8e0b, -1
-	person_event SPRITE_FRUIT_TREE, 11, 19, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a8e0d, -1
+	person_event SPRITE_WEIRD_TREE, 16, 10, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsAnnandanne1, -1
+	person_event SPRITE_WEIRD_TREE, 16, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerTwinsAnnandanne2, -1
+	person_event SPRITE_YOUNGSTER, 10, 10, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerPsychicGreg, -1
+	person_event SPRITE_FRUIT_TREE, 9, 17, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a8e09, -1
+	person_event SPRITE_BUG_CATCHER, 12, 20, DOWN << 2 | $2, $11, -1, -1, $0, 0, SunnyScript, EVENT_75B
+	person_event SPRITE_FRUIT_TREE, 9, 20, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a8e0b, -1
+	person_event SPRITE_FRUIT_TREE, 11, 19, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a8e0d, -1
--- a/maps/Route38.asm
+++ b/maps/Route38.asm
@@ -573,15 +573,15 @@
 
 	; signposts
 	db 2
-	signpost 7, 33, $0, MapRoute38Signpost0Script
-	signpost 13, 5, $0, MapRoute38Signpost1Script
+	signpost 7, 33, SIGNPOST_READ, MapRoute38Signpost0Script
+	signpost 13, 5, SIGNPOST_READ, MapRoute38Signpost1Script
 
 	; people-events
 	db 7
-	person_event SPRITE_STANDING_YOUNGSTER, 5, 8, $9, $0, 255, 255, $92, 1, TrainerSchoolboyChad1, -1
-	person_event SPRITE_LASS, 7, 19, $a, $0, 255, 255, $92, 2, TrainerLassDana1, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 19, 16, $a, $0, 255, 255, $92, 1, TrainerBird_keeperToby, -1
-	person_event SPRITE_BUENA, 13, 23, $6, $0, 255, 255, $92, 1, TrainerBeautyValerie, -1
-	person_event SPRITE_SAILOR, 9, 28, $1e, $0, 255, 255, $92, 2, TrainerSailorHarry, -1
-	person_event SPRITE_FRUIT_TREE, 14, 16, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a1f33, -1
-	person_event SPRITE_BUENA, 12, 9, $a, $0, 255, 255, $92, 1, TrainerBeautyOlivia, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 5, 8, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerSchoolboyChad1, -1
+	person_event SPRITE_LASS, 7, 19, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerLassDana1, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 19, 16, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerBird_keeperToby, -1
+	person_event SPRITE_BUENA, 13, 23, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerBeautyValerie, -1
+	person_event SPRITE_SAILOR, 9, 28, RIGHT << 2 | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerSailorHarry, -1
+	person_event SPRITE_FRUIT_TREE, 14, 16, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a1f33, -1
+	person_event SPRITE_BUENA, 12, 9, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerBeautyOlivia, -1
--- a/maps/Route38EcruteakGate.asm
+++ b/maps/Route38EcruteakGate.asm
@@ -40,4 +40,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $80, 0, OfficerScript_0x9cbd7, -1
+	person_event SPRITE_OFFICER, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x9cbd7, -1
--- a/maps/Route39.asm
+++ b/maps/Route39.asm
@@ -411,20 +411,20 @@
 
 	; signposts
 	db 4
-	signpost 31, 5, $0, MapRoute39Signpost0Script
-	signpost 5, 9, $0, MapRoute39Signpost1Script
-	signpost 7, 15, $0, MapRoute39Signpost2Script
-	signpost 13, 5, $7, MapRoute39SignpostItem3
+	signpost 31, 5, SIGNPOST_READ, MapRoute39Signpost0Script
+	signpost 5, 9, SIGNPOST_READ, MapRoute39Signpost1Script
+	signpost 7, 15, SIGNPOST_READ, MapRoute39Signpost2Script
+	signpost 13, 5, SIGNPOST_ITEMIFSET, MapRoute39SignpostItem3
 
 	; people-events
 	db 10
-	person_event SPRITE_SAILOR, 33, 17, $8, $0, 255, 255, $92, 5, TrainerSailorEugene, -1
-	person_event SPRITE_POKEFAN_M, 26, 14, $7, $0, 255, 255, $82, 4, TrainerPokefanmDerek1, -1
-	person_event SPRITE_POKEFAN_F, 23, 15, $9, $0, 255, 255, $82, 4, TrainerPokefanfRuth, -1
-	person_event SPRITE_TAUROS, 16, 7, $16, $0, 255, 255, $0, 0, TaurosScript_0x1a5af5, -1
-	person_event SPRITE_TAUROS, 15, 10, $16, $0, 255, 255, $0, 0, TaurosScript_0x1a5af5, -1
-	person_event SPRITE_TAUROS, 19, 8, $16, $0, 255, 255, $0, 0, TaurosScript_0x1a5af5, -1
-	person_event SPRITE_TAUROS, 17, 12, $16, $0, 255, 255, $0, 0, TaurosScript_0x1a5af5, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 11, 17, $a, $0, 255, 255, $92, 1, TrainerPsychicNorman, -1
-	person_event SPRITE_FRUIT_TREE, 7, 13, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a5bf4, -1
-	person_event SPRITE_POKEFAN_F, 26, 8, $6, $0, 255, 255, $80, 0, PokefanFScript_0x1a5bbe, -1
+	person_event SPRITE_SAILOR, 33, 17, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 5, TrainerSailorEugene, -1
+	person_event SPRITE_POKEFAN_M, 26, 14, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerPokefanmDerek1, -1
+	person_event SPRITE_POKEFAN_F, 23, 15, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerPokefanfRuth, -1
+	person_event SPRITE_TAUROS, 16, 7, UP << 2 | $12, $0, -1, -1, $0, 0, TaurosScript_0x1a5af5, -1
+	person_event SPRITE_TAUROS, 15, 10, UP << 2 | $12, $0, -1, -1, $0, 0, TaurosScript_0x1a5af5, -1
+	person_event SPRITE_TAUROS, 19, 8, UP << 2 | $12, $0, -1, -1, $0, 0, TaurosScript_0x1a5af5, -1
+	person_event SPRITE_TAUROS, 17, 12, UP << 2 | $12, $0, -1, -1, $0, 0, TaurosScript_0x1a5af5, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 11, 17, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 1, TrainerPsychicNorman, -1
+	person_event SPRITE_FRUIT_TREE, 7, 13, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a5bf4, -1
+	person_event SPRITE_POKEFAN_F, 26, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanFScript_0x1a5bbe, -1
--- a/maps/Route39Barn.asm
+++ b/maps/Route39Barn.asm
@@ -200,6 +200,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_TWIN, 7, 6, $9, $0, 255, 255, $0, 0, TwinScript_0x9cc76, -1
-	person_event SPRITE_TWIN, 7, 8, $8, $0, 255, 255, $a0, 0, TwinScript_0x9cc90, -1
-	person_event SPRITE_TAUROS, 7, 7, $16, $0, 255, 255, $0, 0, TaurosScript_0x9ccaa, -1
+	person_event SPRITE_TWIN, 7, 6, LEFT << 2 | $1, $0, -1, -1, $0, 0, TwinScript_0x9cc76, -1
+	person_event SPRITE_TWIN, 7, 8, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TwinScript_0x9cc90, -1
+	person_event SPRITE_TAUROS, 7, 7, UP << 2 | $12, $0, -1, -1, $0, 0, TaurosScript_0x9ccaa, -1
--- a/maps/Route39Farmhouse.asm
+++ b/maps/Route39Farmhouse.asm
@@ -202,10 +202,10 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, FarmhouseBookshelf
-	signpost 1, 1, $0, FarmhouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, FarmhouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, FarmhouseBookshelf
 
 	; people-events
 	db 2
-	person_event SPRITE_POKEFAN_M, 6, 7, $6, $0, 255, 255, $90, 0, PokefanMScript_0x9ceb4, -1
-	person_event SPRITE_POKEFAN_F, 8, 9, $8, $0, 255, 255, $b0, 0, PokefanFScript_0x9cf0e, -1
+	person_event SPRITE_POKEFAN_M, 6, 7, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, PokefanMScript_0x9ceb4, -1
+	person_event SPRITE_POKEFAN_F, 8, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanFScript_0x9cf0e, -1
--- a/maps/Route4.asm
+++ b/maps/Route4.asm
@@ -177,12 +177,12 @@
 
 	; signposts
 	db 2
-	signpost 7, 3, $0, MapRoute4Signpost0Script
-	signpost 3, 10, $7, MapRoute4SignpostItem1
+	signpost 7, 3, SIGNPOST_READ, MapRoute4Signpost0Script
+	signpost 3, 10, SIGNPOST_ITEMIFSET, MapRoute4SignpostItem1
 
 	; people-events
 	db 4
-	person_event SPRITE_YOUNGSTER, 13, 21, $6, $0, 255, 255, $92, 3, TrainerBird_keeperHank, -1
-	person_event SPRITE_LASS, 12, 13, $8, $0, 255, 255, $a2, 4, TrainerPicnickerHope, -1
-	person_event SPRITE_LASS, 10, 25, $9, $0, 255, 255, $a2, 4, TrainerPicnickerSharon, -1
-	person_event SPRITE_POKE_BALL, 7, 30, $1, $0, 255, 255, $1, 0, ItemFragment_0x1ae20f, EVENT_787
+	person_event SPRITE_YOUNGSTER, 13, 21, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperHank, -1
+	person_event SPRITE_LASS, 12, 13, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 4, TrainerPicnickerHope, -1
+	person_event SPRITE_LASS, 10, 25, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 4, TrainerPicnickerSharon, -1
+	person_event SPRITE_POKE_BALL, 7, 30, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1ae20f, EVENT_787
--- a/maps/Route40.asm
+++ b/maps/Route40.asm
@@ -404,20 +404,20 @@
 
 	; signposts
 	db 2
-	signpost 10, 14, $0, MapRoute40Signpost0Script
-	signpost 8, 7, $7, MapRoute40SignpostItem1
+	signpost 10, 14, SIGNPOST_READ, MapRoute40Signpost0Script
+	signpost 8, 7, SIGNPOST_ITEMIFSET, MapRoute40SignpostItem1
 
 	; people-events
 	db 12
-	person_event SPRITE_OLIVINE_RIVAL, 19, 18, $9, $0, 255, 255, $82, 4, TrainerSwimmermSimon, -1
-	person_event SPRITE_OLIVINE_RIVAL, 34, 22, $8, $0, 255, 255, $82, 5, TrainerSwimmermRandall, -1
-	person_event SPRITE_SWIMMER_GIRL, 23, 7, $9, $0, 255, 255, $a2, 4, TrainerSwimmerfElaine, -1
-	person_event SPRITE_SWIMMER_GIRL, 29, 14, $1f, $0, 255, 255, $a2, 3, TrainerSwimmerfPaula, -1
-	person_event SPRITE_ROCK, 15, 11, $18, $0, 255, 255, $0, 0, Route40Rock, -1
-	person_event SPRITE_ROCK, 13, 10, $18, $0, 255, 255, $0, 0, Route40Rock, -1
-	person_event SPRITE_ROCK, 12, 11, $18, $0, 255, 255, $0, 0, Route40Rock, -1
-	person_event SPRITE_LASS, 17, 15, $6, $0, 255, 255, $0, 0, LassScript_0x1a61c4, -1
-	person_event SPRITE_BUENA, 14, 12, $3, $0, 255, 255, $0, 0, MonicaScript, EVENT_75E
-	person_event SPRITE_POKEFAN_M, 10, 11, $9, $0, 255, 255, $0, 0, PokefanMScript_0x1a61c7, -1
-	person_event SPRITE_LASS, 8, 17, $3, $0, 255, 255, $a0, 0, LassScript_0x1a61d3, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 13, 20, $3, $0, 255, 255, $90, 0, StandingYoungsterScript_0x1a61d6, EVENT_7CF
+	person_event SPRITE_OLIVINE_RIVAL, 19, 18, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerSwimmermSimon, -1
+	person_event SPRITE_OLIVINE_RIVAL, 34, 22, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 5, TrainerSwimmermRandall, -1
+	person_event SPRITE_SWIMMER_GIRL, 23, 7, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 4, TrainerSwimmerfElaine, -1
+	person_event SPRITE_SWIMMER_GIRL, 29, 14, RIGHT << 2 | $13, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfPaula, -1
+	person_event SPRITE_ROCK, 15, 11, LEFT << 2 | $10, $0, -1, -1, $0, 0, Route40Rock, -1
+	person_event SPRITE_ROCK, 13, 10, LEFT << 2 | $10, $0, -1, -1, $0, 0, Route40Rock, -1
+	person_event SPRITE_ROCK, 12, 11, LEFT << 2 | $10, $0, -1, -1, $0, 0, Route40Rock, -1
+	person_event SPRITE_LASS, 17, 15, UP << 2 | $2, $0, -1, -1, $0, 0, LassScript_0x1a61c4, -1
+	person_event SPRITE_BUENA, 14, 12, DOWN << 2 | $3, $0, -1, -1, $0, 0, MonicaScript, EVENT_75E
+	person_event SPRITE_POKEFAN_M, 10, 11, LEFT << 2 | $1, $0, -1, -1, $0, 0, PokefanMScript_0x1a61c7, -1
+	person_event SPRITE_LASS, 8, 17, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x1a61d3, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 13, 20, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, StandingYoungsterScript_0x1a61d6, EVENT_7CF
--- a/maps/Route40BattleTowerGate.asm
+++ b/maps/Route40BattleTowerGate.asm
@@ -88,5 +88,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_ROCKER, 7, 7, $3, $0, 255, 255, $a0, 0, RockerScript_0x9f669, EVENT_7CF
-	person_event SPRITE_TWIN, 9, 11, $4, $10, 255, 255, $80, 0, TwinScript_0x9f66c, -1
+	person_event SPRITE_ROCKER, 7, 7, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, RockerScript_0x9f669, EVENT_7CF
+	person_event SPRITE_TWIN, 9, 11, UP << 2 | $0, $10, -1, -1, (PAL_OW_RED << 4) | $80, 0, TwinScript_0x9f66c, -1
--- a/maps/Route41.asm
+++ b/maps/Route41.asm
@@ -506,17 +506,17 @@
 
 	; signposts
 	db 1
-	signpost 35, 9, $7, MapRoute41SignpostItem0
+	signpost 35, 9, SIGNPOST_ITEMIFSET, MapRoute41SignpostItem0
 
 	; people-events
 	db 10
-	person_event SPRITE_OLIVINE_RIVAL, 10, 36, $a, $0, 255, 255, $82, 3, TrainerSwimmermCharlie, -1
-	person_event SPRITE_OLIVINE_RIVAL, 12, 50, $a, $0, 255, 255, $82, 3, TrainerSwimmermGeorge, -1
-	person_event SPRITE_OLIVINE_RIVAL, 30, 24, $1e, $0, 255, 255, $82, 3, TrainerSwimmermBerke, -1
-	person_event SPRITE_OLIVINE_RIVAL, 34, 36, $1f, $0, 255, 255, $82, 3, TrainerSwimmermKirk, -1
-	person_event SPRITE_OLIVINE_RIVAL, 50, 23, $1e, $0, 255, 255, $82, 3, TrainerSwimmermMathew, -1
-	person_event SPRITE_SWIMMER_GIRL, 8, 21, $a, $0, 255, 255, $a2, 3, TrainerSwimmerfKaylee, -1
-	person_event SPRITE_SWIMMER_GIRL, 23, 27, $7, $0, 255, 255, $a2, 3, TrainerSwimmerfSusie, -1
-	person_event SPRITE_SWIMMER_GIRL, 38, 31, $8, $0, 255, 255, $a2, 3, TrainerSwimmerfDenise, -1
-	person_event SPRITE_SWIMMER_GIRL, 32, 48, $9, $0, 255, 255, $a2, 4, TrainerSwimmerfKara, -1
-	person_event SPRITE_SWIMMER_GIRL, 54, 13, $a, $0, 255, 255, $a2, 2, TrainerSwimmerfWendy, -1
+	person_event SPRITE_OLIVINE_RIVAL, 10, 36, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermCharlie, -1
+	person_event SPRITE_OLIVINE_RIVAL, 12, 50, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermGeorge, -1
+	person_event SPRITE_OLIVINE_RIVAL, 30, 24, RIGHT << 2 | $12, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermBerke, -1
+	person_event SPRITE_OLIVINE_RIVAL, 34, 36, RIGHT << 2 | $13, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermKirk, -1
+	person_event SPRITE_OLIVINE_RIVAL, 50, 23, RIGHT << 2 | $12, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerSwimmermMathew, -1
+	person_event SPRITE_SWIMMER_GIRL, 8, 21, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfKaylee, -1
+	person_event SPRITE_SWIMMER_GIRL, 23, 27, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfSusie, -1
+	person_event SPRITE_SWIMMER_GIRL, 38, 31, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerSwimmerfDenise, -1
+	person_event SPRITE_SWIMMER_GIRL, 32, 48, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 4, TrainerSwimmerfKara, -1
+	person_event SPRITE_SWIMMER_GIRL, 54, 13, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerSwimmerfWendy, -1
--- a/maps/Route42.asm
+++ b/maps/Route42.asm
@@ -377,20 +377,20 @@
 
 	; signposts
 	db 5
-	signpost 10, 4, $0, MapRoute42Signpost0Script
-	signpost 5, 7, $0, MapRoute42Signpost1Script
-	signpost 9, 45, $0, MapRoute42Signpost2Script
-	signpost 8, 54, $0, MapRoute42Signpost3Script
-	signpost 11, 16, $7, MapRoute42SignpostItem4
+	signpost 10, 4, SIGNPOST_READ, MapRoute42Signpost0Script
+	signpost 5, 7, SIGNPOST_READ, MapRoute42Signpost1Script
+	signpost 9, 45, SIGNPOST_READ, MapRoute42Signpost2Script
+	signpost 8, 54, SIGNPOST_READ, MapRoute42Signpost3Script
+	signpost 11, 16, SIGNPOST_ITEMIFSET, MapRoute42SignpostItem4
 
 	; people-events
 	db 9
-	person_event SPRITE_FISHER, 14, 44, $8, $0, 255, 255, $a2, 1, TrainerFisherTully1, -1
-	person_event SPRITE_POKEFAN_M, 13, 55, $a, $0, 255, 255, $b2, 3, TrainerHikerBenjamin, -1
-	person_event SPRITE_SUPER_NERD, 12, 51, $6, $0, 255, 255, $92, 3, TrainerPokemaniacShane, -1
-	person_event SPRITE_FRUIT_TREE, 20, 31, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a934d, -1
-	person_event SPRITE_FRUIT_TREE, 20, 32, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a934f, -1
-	person_event SPRITE_FRUIT_TREE, 20, 33, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a9351, -1
-	person_event SPRITE_POKE_BALL, 8, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a9349, EVENT_6B3
-	person_event SPRITE_POKE_BALL, 12, 37, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a934b, EVENT_6B4
-	person_event SPRITE_SUICUNE, 20, 30, $1, $0, 255, 255, $90, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_42
+	person_event SPRITE_FISHER, 14, 44, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherTully1, -1
+	person_event SPRITE_POKEFAN_M, 13, 55, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerHikerBenjamin, -1
+	person_event SPRITE_SUPER_NERD, 12, 51, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacShane, -1
+	person_event SPRITE_FRUIT_TREE, 20, 31, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a934d, -1
+	person_event SPRITE_FRUIT_TREE, 20, 32, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a934f, -1
+	person_event SPRITE_FRUIT_TREE, 20, 33, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a9351, -1
+	person_event SPRITE_POKE_BALL, 8, 10, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a9349, EVENT_6B3
+	person_event SPRITE_POKE_BALL, 12, 37, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a934b, EVENT_6B4
+	person_event SPRITE_SUICUNE, 20, 30, DOWN << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_42
--- a/maps/Route42EcruteakGate.asm
+++ b/maps/Route42EcruteakGate.asm
@@ -35,4 +35,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $80, 0, OfficerScript_0x19a4b5, -1
+	person_event SPRITE_OFFICER, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x19a4b5, -1
--- a/maps/Route43.asm
+++ b/maps/Route43.asm
@@ -606,17 +606,17 @@
 
 	; signposts
 	db 3
-	signpost 3, 13, $0, MapRoute43Signpost0Script
-	signpost 49, 11, $0, MapRoute43Signpost1Script
-	signpost 38, 16, $0, MapRoute43Signpost2Script
+	signpost 3, 13, SIGNPOST_READ, MapRoute43Signpost0Script
+	signpost 49, 11, SIGNPOST_READ, MapRoute43Signpost1Script
+	signpost 38, 16, SIGNPOST_READ, MapRoute43Signpost2Script
 
 	; people-events
 	db 8
-	person_event SPRITE_SUPER_NERD, 9, 17, $8, $0, 255, 255, $92, 2, TrainerPokemaniacBen, -1
-	person_event SPRITE_SUPER_NERD, 24, 17, $a, $0, 255, 255, $92, 3, TrainerPokemaniacBrent1, -1
-	person_event SPRITE_SUPER_NERD, 11, 18, $6, $0, 255, 255, $92, 2, TrainerPokemaniacRon, -1
-	person_event SPRITE_FISHER, 20, 8, $9, $0, 255, 255, $a2, 4, TrainerFisherMarvin, -1
-	person_event SPRITE_LASS, 29, 13, $6, $0, 255, 255, $a2, 2, TrainerPicnickerTiffany3, -1
-	person_event SPRITE_YOUNGSTER, 44, 17, $a, $0, 255, 255, $a2, 3, TrainerCamperSpencer, -1
-	person_event SPRITE_FRUIT_TREE, 30, 5, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x19d266, -1
-	person_event SPRITE_POKE_BALL, 36, 16, $1, $0, 255, 255, $1, 0, ItemFragment_0x19d268, EVENT_6B5
+	person_event SPRITE_SUPER_NERD, 9, 17, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerPokemaniacBen, -1
+	person_event SPRITE_SUPER_NERD, 24, 17, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacBrent1, -1
+	person_event SPRITE_SUPER_NERD, 11, 18, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerPokemaniacRon, -1
+	person_event SPRITE_FISHER, 20, 8, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 4, TrainerFisherMarvin, -1
+	person_event SPRITE_LASS, 29, 13, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerPicnickerTiffany3, -1
+	person_event SPRITE_YOUNGSTER, 44, 17, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerCamperSpencer, -1
+	person_event SPRITE_FRUIT_TREE, 30, 5, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x19d266, -1
+	person_event SPRITE_POKE_BALL, 36, 16, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x19d268, EVENT_6B5
--- a/maps/Route43Gate.asm
+++ b/maps/Route43Gate.asm
@@ -264,6 +264,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $80, 0, OfficerScript_0x19ac85, EVENT_735
-	person_event SPRITE_ROCKET, 8, 6, $6, $0, 255, 255, $0, 0, RocketScript_0x19ac82, EVENT_6DC
-	person_event SPRITE_ROCKET, 8, 11, $7, $0, 255, 255, $0, 0, RocketScript_0x19ac82, EVENT_6DC
+	person_event SPRITE_OFFICER, 8, 4, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x19ac85, EVENT_735
+	person_event SPRITE_ROCKET, 8, 6, UP << 2 | $2, $0, -1, -1, $0, 0, RocketScript_0x19ac82, EVENT_6DC
+	person_event SPRITE_ROCKET, 8, 11, UP << 2 | $3, $0, -1, -1, $0, 0, RocketScript_0x19ac82, EVENT_6DC
--- a/maps/Route43MahoganyGate.asm
+++ b/maps/Route43MahoganyGate.asm
@@ -54,4 +54,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $80, 0, OfficerScript_0x19ab0b, -1
+	person_event SPRITE_OFFICER, 8, 4, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, OfficerScript_0x19ab0b, -1
--- a/maps/Route44.asm
+++ b/maps/Route44.asm
@@ -620,20 +620,20 @@
 
 	; signposts
 	db 3
-	signpost 7, 53, $0, MapRoute44Signpost0Script
-	signpost 10, 6, $0, MapRoute44Signpost1Script
-	signpost 9, 32, $7, MapRoute44SignpostItem2
+	signpost 7, 53, SIGNPOST_READ, MapRoute44Signpost0Script
+	signpost 10, 6, SIGNPOST_READ, MapRoute44Signpost1Script
+	signpost 9, 32, SIGNPOST_ITEMIFSET, MapRoute44SignpostItem2
 
 	; people-events
 	db 11
-	person_event SPRITE_FISHER, 7, 39, $6, $0, 255, 255, $a2, 1, TrainerFisherWilton1, -1
-	person_event SPRITE_FISHER, 17, 23, $9, $0, 255, 255, $a2, 1, TrainerFisherEdgar, -1
-	person_event SPRITE_YOUNGSTER, 13, 14, $1f, $0, 255, 255, $92, 3, TrainerPsychicPhil, -1
-	person_event SPRITE_SUPER_NERD, 6, 47, $1f, $0, 255, 255, $a2, 3, TrainerPokemaniacZach, -1
-	person_event SPRITE_YOUNGSTER, 9, 55, $6, $0, 255, 255, $a2, 2, TrainerBird_keeperVance1, -1
-	person_event SPRITE_COOLTRAINER_M, 19, 45, $8, $0, 255, 255, $82, 5, TrainerCooltrainermAllen, -1
-	person_event SPRITE_COOLTRAINER_F, 18, 35, $8, $0, 255, 255, $82, 5, TrainerCooltrainerfCybil, -1
-	person_event SPRITE_FRUIT_TREE, 9, 13, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x19da40, -1
-	person_event SPRITE_POKE_BALL, 12, 34, $1, $0, 255, 255, $1, 0, ItemFragment_0x19da42, EVENT_6B6
-	person_event SPRITE_POKE_BALL, 8, 49, $1, $0, 255, 255, $1, 0, ItemFragment_0x19da44, EVENT_6B7
-	person_event SPRITE_POKE_BALL, 13, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x19da46, EVENT_7BD
+	person_event SPRITE_FISHER, 7, 39, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherWilton1, -1
+	person_event SPRITE_FISHER, 17, 23, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerFisherEdgar, -1
+	person_event SPRITE_YOUNGSTER, 13, 14, RIGHT << 2 | $13, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPsychicPhil, -1
+	person_event SPRITE_SUPER_NERD, 6, 47, RIGHT << 2 | $13, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerPokemaniacZach, -1
+	person_event SPRITE_YOUNGSTER, 9, 55, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerBird_keeperVance1, -1
+	person_event SPRITE_COOLTRAINER_M, 19, 45, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 5, TrainerCooltrainermAllen, -1
+	person_event SPRITE_COOLTRAINER_F, 18, 35, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 5, TrainerCooltrainerfCybil, -1
+	person_event SPRITE_FRUIT_TREE, 9, 13, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x19da40, -1
+	person_event SPRITE_POKE_BALL, 12, 34, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x19da42, EVENT_6B6
+	person_event SPRITE_POKE_BALL, 8, 49, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x19da44, EVENT_6B7
+	person_event SPRITE_POKE_BALL, 13, 18, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x19da46, EVENT_7BD
--- a/maps/Route45.asm
+++ b/maps/Route45.asm
@@ -643,21 +643,21 @@
 
 	; signposts
 	db 2
-	signpost 4, 10, $0, MapRoute45Signpost0Script
-	signpost 80, 13, $7, MapRoute45SignpostItem1
+	signpost 4, 10, SIGNPOST_READ, MapRoute45Signpost0Script
+	signpost 80, 13, SIGNPOST_ITEMIFSET, MapRoute45SignpostItem1
 
 	; people-events
 	db 13
-	person_event SPRITE_POKEFAN_M, 20, 14, $9, $0, 255, 255, $b2, 1, TrainerHikerErik, -1
-	person_event SPRITE_POKEFAN_M, 69, 19, $9, $0, 255, 255, $b2, 2, TrainerHikerMichael, -1
-	person_event SPRITE_POKEFAN_M, 32, 9, $7, $0, 255, 255, $b2, 2, TrainerHikerParry, -1
-	person_event SPRITE_POKEFAN_M, 69, 13, $8, $0, 255, 255, $b2, 1, TrainerHikerTimothy, -1
-	person_event SPRITE_BLACK_BELT, 54, 15, $a, $0, 255, 255, $b2, 2, TrainerBlackbeltKenji, -1
-	person_event SPRITE_COOLTRAINER_M, 22, 21, $8, $0, 255, 255, $82, 1, TrainerCooltrainermRyan, -1
-	person_event SPRITE_COOLTRAINER_F, 40, 9, $a, $0, 255, 255, $82, 3, TrainerCooltrainerfKelly, -1
-	person_event SPRITE_FRUIT_TREE, 86, 20, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x19e294, -1
-	person_event SPRITE_POKE_BALL, 55, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x19e296, EVENT_6B8
-	person_event SPRITE_POKE_BALL, 70, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x19e298, EVENT_6B9
-	person_event SPRITE_POKE_BALL, 24, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x19e29a, EVENT_6BA
-	person_event SPRITE_POKE_BALL, 37, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x19e29c, EVENT_6BB
-	person_event SPRITE_YOUNGSTER, 74, 8, $3, $0, 255, 255, $a0, 0, YoungsterScript_0x19e269, -1
+	person_event SPRITE_POKEFAN_M, 20, 14, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerHikerErik, -1
+	person_event SPRITE_POKEFAN_M, 69, 19, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerHikerMichael, -1
+	person_event SPRITE_POKEFAN_M, 32, 9, UP << 2 | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerHikerParry, -1
+	person_event SPRITE_POKEFAN_M, 69, 13, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerHikerTimothy, -1
+	person_event SPRITE_BLACK_BELT, 54, 15, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerBlackbeltKenji, -1
+	person_event SPRITE_COOLTRAINER_M, 22, 21, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerCooltrainermRyan, -1
+	person_event SPRITE_COOLTRAINER_F, 40, 9, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainerfKelly, -1
+	person_event SPRITE_FRUIT_TREE, 86, 20, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x19e294, -1
+	person_event SPRITE_POKE_BALL, 55, 10, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x19e296, EVENT_6B8
+	person_event SPRITE_POKE_BALL, 70, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x19e298, EVENT_6B9
+	person_event SPRITE_POKE_BALL, 24, 10, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x19e29a, EVENT_6BA
+	person_event SPRITE_POKE_BALL, 37, 11, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x19e29c, EVENT_6BB
+	person_event SPRITE_YOUNGSTER, 74, 8, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x19e269, -1
--- a/maps/Route46.asm
+++ b/maps/Route46.asm
@@ -305,13 +305,13 @@
 
 	; signposts
 	db 1
-	signpost 27, 9, $0, MapRoute46Signpost0Script
+	signpost 27, 9, SIGNPOST_READ, MapRoute46Signpost0Script
 
 	; people-events
 	db 6
-	person_event SPRITE_POKEFAN_M, 23, 16, $8, $0, 255, 255, $b2, 2, TrainerHikerBailey, -1
-	person_event SPRITE_YOUNGSTER, 18, 8, $7, $0, 255, 255, $a2, 2, TrainerCamperTed, -1
-	person_event SPRITE_LASS, 17, 6, $6, $0, 255, 255, $a2, 2, TrainerPicnickerErin1, -1
-	person_event SPRITE_FRUIT_TREE, 9, 11, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a978f, -1
-	person_event SPRITE_FRUIT_TREE, 10, 12, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a9791, -1
-	person_event SPRITE_POKE_BALL, 19, 5, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a978d, EVENT_6BC
+	person_event SPRITE_POKEFAN_M, 23, 16, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerHikerBailey, -1
+	person_event SPRITE_YOUNGSTER, 18, 8, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerCamperTed, -1
+	person_event SPRITE_LASS, 17, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerPicnickerErin1, -1
+	person_event SPRITE_FRUIT_TREE, 9, 11, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a978f, -1
+	person_event SPRITE_FRUIT_TREE, 10, 12, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a9791, -1
+	person_event SPRITE_POKE_BALL, 19, 5, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a978d, EVENT_6BC
--- a/maps/Route5.asm
+++ b/maps/Route5.asm
@@ -52,9 +52,9 @@
 
 	; signposts
 	db 2
-	signpost 17, 17, $0, MapRoute5Signpost0Script
-	signpost 11, 10, $0, MapRoute5Signpost1Script
+	signpost 17, 17, SIGNPOST_READ, MapRoute5Signpost0Script
+	signpost 11, 10, SIGNPOST_READ, MapRoute5Signpost1Script
 
 	; people-events
 	db 1
-	person_event SPRITE_POKEFAN_M, 20, 21, $6, $0, 255, 255, $80, 0, PokefanMScript_0x1adb19, EVENT_771
+	person_event SPRITE_POKEFAN_M, 20, 21, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x1adb19, EVENT_771
--- a/maps/Route5CleanseTagSpeechHouse.asm
+++ b/maps/Route5CleanseTagSpeechHouse.asm
@@ -70,10 +70,10 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, HouseForSaleBookshelf
-	signpost 1, 1, $0, HouseForSaleBookshelf
+	signpost 1, 0, SIGNPOST_READ, HouseForSaleBookshelf
+	signpost 1, 1, SIGNPOST_READ, HouseForSaleBookshelf
 
 	; people-events
 	db 2
-	person_event SPRITE_GRANNY, 9, 6, $1f, $0, 255, 255, $b0, 0, GrannyScript_0x18b634, -1
-	person_event SPRITE_TEACHER, 7, 9, $8, $0, 255, 255, $80, 0, TeacherScript_0x18b64f, -1
+	person_event SPRITE_GRANNY, 9, 6, RIGHT << 2 | $13, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrannyScript_0x18b634, -1
+	person_event SPRITE_TEACHER, 7, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, TeacherScript_0x18b64f, -1
--- a/maps/Route5SaffronCityGate.asm
+++ b/maps/Route5SaffronCityGate.asm
@@ -36,4 +36,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $90, 0, OfficerScript_0x18b5b9, -1
+	person_event SPRITE_OFFICER, 8, 4, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x18b5b9, -1
--- a/maps/Route5UndergroundEntrance.asm
+++ b/maps/Route5UndergroundEntrance.asm
@@ -34,4 +34,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_TEACHER, 6, 6, $2, $11, 255, 255, $a0, 0, TeacherScript_0x18b555, -1
+	person_event SPRITE_TEACHER, 6, 6, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x18b555, -1
--- a/maps/Route6.asm
+++ b/maps/Route6.asm
@@ -132,10 +132,10 @@
 
 	; signposts
 	db 1
-	signpost 5, 19, $0, MapRoute6Signpost0Script
+	signpost 5, 19, SIGNPOST_READ, MapRoute6Signpost0Script
 
 	; people-events
 	db 3
-	person_event SPRITE_POKEFAN_M, 8, 21, $6, $0, 255, 255, $b0, 2, PokefanMScript_0x1ad951, EVENT_771
-	person_event SPRITE_POKEFAN_M, 16, 13, $9, $0, 255, 255, $82, 0, TrainerPokefanmRex, -1
-	person_event SPRITE_POKEFAN_M, 16, 14, $8, $0, 255, 255, $82, 0, TrainerPokefanmAllan, -1
+	person_event SPRITE_POKEFAN_M, 8, 21, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 2, PokefanMScript_0x1ad951, EVENT_771
+	person_event SPRITE_POKEFAN_M, 16, 13, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 0, TrainerPokefanmRex, -1
+	person_event SPRITE_POKEFAN_M, 16, 14, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 0, TrainerPokefanmAllan, -1
--- a/maps/Route6SaffronGate.asm
+++ b/maps/Route6SaffronGate.asm
@@ -75,4 +75,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_OFFICER, 8, 4, $9, $0, 255, 255, $90, 0, OfficerScript_0x1926ea, -1
+	person_event SPRITE_OFFICER, 8, 4, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x1926ea, -1
--- a/maps/Route7.asm
+++ b/maps/Route7.asm
@@ -48,8 +48,8 @@
 
 	; signposts
 	db 2
-	signpost 11, 5, $0, MapRoute7Signpost0Script
-	signpost 9, 6, $0, MapRoute7Signpost1Script
+	signpost 11, 5, SIGNPOST_READ, MapRoute7Signpost0Script
+	signpost 9, 6, SIGNPOST_READ, MapRoute7Signpost1Script
 
 	; people-events
 	db 0
--- a/maps/Route7SaffronGate.asm
+++ b/maps/Route7SaffronGate.asm
@@ -61,4 +61,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $90, 0, OfficerScript_0x73518, -1
+	person_event SPRITE_OFFICER, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x73518, -1
--- a/maps/Route8.asm
+++ b/maps/Route8.asm
@@ -258,14 +258,14 @@
 
 	; signposts
 	db 2
-	signpost 7, 11, $0, MapRoute8Signpost0Script
-	signpost 5, 10, $0, MapRoute8Signpost1Script
+	signpost 7, 11, SIGNPOST_READ, MapRoute8Signpost0Script
+	signpost 5, 10, SIGNPOST_READ, MapRoute8Signpost1Script
 
 	; people-events
 	db 6
-	person_event SPRITE_BIKER, 12, 14, $8, $0, 255, 255, $82, 5, TrainerBikerDwayne, -1
-	person_event SPRITE_BIKER, 13, 14, $8, $0, 255, 255, $a2, 5, TrainerBikerHarris, -1
-	person_event SPRITE_BIKER, 14, 14, $8, $0, 255, 255, $92, 5, TrainerBikerZeke, -1
-	person_event SPRITE_SUPER_NERD, 6, 27, $6, $0, 255, 255, $b2, 3, TrainerSupernerdSam, -1
-	person_event SPRITE_SUPER_NERD, 16, 35, $a, $0, 255, 255, $b2, 4, TrainerSupernerdTom, -1
-	person_event SPRITE_FRUIT_TREE, 9, 37, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x6c06c, -1
+	person_event SPRITE_BIKER, 12, 14, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 5, TrainerBikerDwayne, -1
+	person_event SPRITE_BIKER, 13, 14, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 5, TrainerBikerHarris, -1
+	person_event SPRITE_BIKER, 14, 14, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 5, TrainerBikerZeke, -1
+	person_event SPRITE_SUPER_NERD, 6, 27, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerSupernerdSam, -1
+	person_event SPRITE_SUPER_NERD, 16, 35, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 4, TrainerSupernerdTom, -1
+	person_event SPRITE_FRUIT_TREE, 9, 37, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x6c06c, -1
--- a/maps/Route8SaffronGate.asm
+++ b/maps/Route8SaffronGate.asm
@@ -35,4 +35,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_OFFICER, 6, 9, $6, $0, 255, 255, $90, 0, OfficerScript_0x7f416, -1
+	person_event SPRITE_OFFICER, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x7f416, -1
--- a/maps/Route9.asm
+++ b/maps/Route9.asm
@@ -308,14 +308,14 @@
 
 	; signposts
 	db 2
-	signpost 7, 15, $0, MapRoute9Signpost0Script
-	signpost 15, 41, $7, MapRoute9SignpostItem1
+	signpost 7, 15, SIGNPOST_READ, MapRoute9Signpost0Script
+	signpost 15, 41, SIGNPOST_ITEMIFSET, MapRoute9SignpostItem1
 
 	; people-events
 	db 6
-	person_event SPRITE_YOUNGSTER, 15, 27, $8, $0, 255, 255, $a2, 3, TrainerCamperDean, -1
-	person_event SPRITE_LASS, 12, 43, $a, $0, 255, 255, $a2, 3, TrainerPicnickerHeidi, -1
-	person_event SPRITE_YOUNGSTER, 8, 15, $a, $0, 255, 255, $a2, 5, TrainerCamperSid, -1
-	person_event SPRITE_LASS, 19, 16, $7, $0, 255, 255, $a2, 1, TrainerPicnickerEdna, -1
-	person_event SPRITE_POKEFAN_M, 7, 32, $9, $0, 255, 255, $b2, 2, TrainerHikerTim, -1
-	person_event SPRITE_POKEFAN_M, 19, 40, $9, $0, 255, 255, $b2, 4, TrainerHikerSidney, -1
+	person_event SPRITE_YOUNGSTER, 15, 27, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerCamperDean, -1
+	person_event SPRITE_LASS, 12, 43, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 3, TrainerPicnickerHeidi, -1
+	person_event SPRITE_YOUNGSTER, 8, 15, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 5, TrainerCamperSid, -1
+	person_event SPRITE_LASS, 19, 16, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 1, TrainerPicnickerEdna, -1
+	person_event SPRITE_POKEFAN_M, 7, 32, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerHikerTim, -1
+	person_event SPRITE_POKEFAN_M, 19, 40, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 4, TrainerHikerSidney, -1
--- a/maps/RuinsofAlphAerodactylChamber.asm
+++ b/maps/RuinsofAlphAerodactylChamber.asm
@@ -165,12 +165,12 @@
 
 	; signposts
 	db 6
-	signpost 3, 2, $0, MapRuinsofAlphAerodactylChamberSignpost1Script
-	signpost 3, 5, $0, MapRuinsofAlphAerodactylChamberSignpost1Script
-	signpost 2, 3, $1, MapRuinsofAlphAerodactylChamberSignpost2Script
-	signpost 2, 4, $1, MapRuinsofAlphAerodactylChamberSignpost3Script
-	signpost 0, 3, $1, MapRuinsofAlphAerodactylChamberSignpost4Script
-	signpost 0, 4, $1, MapRuinsofAlphAerodactylChamberSignpost5Script
+	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphAerodactylChamberSignpost1Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphAerodactylChamberSignpost1Script
+	signpost 2, 3, SIGNPOST_UP, MapRuinsofAlphAerodactylChamberSignpost2Script
+	signpost 2, 4, SIGNPOST_UP, MapRuinsofAlphAerodactylChamberSignpost3Script
+	signpost 0, 3, SIGNPOST_UP, MapRuinsofAlphAerodactylChamberSignpost4Script
+	signpost 0, 4, SIGNPOST_UP, MapRuinsofAlphAerodactylChamberSignpost5Script
 
 	; people-events
 	db 0
--- a/maps/RuinsofAlphAerodactylItemRoom.asm
+++ b/maps/RuinsofAlphAerodactylItemRoom.asm
@@ -42,12 +42,12 @@
 
 	; signposts
 	db 2
-	signpost 1, 2, $0, MapRuinsofAlphAerodactylItemRoomSignpost1Script
-	signpost 1, 5, $0, MapRuinsofAlphAerodactylItemRoomSignpost1Script
+	signpost 1, 2, SIGNPOST_READ, MapRuinsofAlphAerodactylItemRoomSignpost1Script
+	signpost 1, 5, SIGNPOST_READ, MapRuinsofAlphAerodactylItemRoomSignpost1Script
 
 	; people-events
 	db 4
-	person_event SPRITE_POKE_BALL, 10, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x59ab6, EVENT_PICKED_UP_GOLD_BERRY_FROM_AERODACTYL_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 10, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x59ab8, EVENT_PICKED_UP_MOON_STONE_FROM_AERODACTYL_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x59aba, EVENT_PICKED_UP_HEAL_POWDER_FROM_AERODACTYL_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x59abc, EVENT_PICKED_UP_ENERGY_ROOT_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x59ab6, EVENT_PICKED_UP_GOLD_BERRY_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x59ab8, EVENT_PICKED_UP_MOON_STONE_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x59aba, EVENT_PICKED_UP_HEAL_POWDER_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x59abc, EVENT_PICKED_UP_ENERGY_ROOT_FROM_AERODACTYL_ITEM_ROOM
--- a/maps/RuinsofAlphHoOhChamber.asm
+++ b/maps/RuinsofAlphHoOhChamber.asm
@@ -166,12 +166,12 @@
 
 	; signposts
 	db 6
-	signpost 3, 2, $0, MapRuinsofAlphHoOhChamberSignpost1Script
-	signpost 3, 5, $0, MapRuinsofAlphHoOhChamberSignpost1Script
-	signpost 2, 3, $1, MapRuinsofAlphHoOhChamberSignpost2Script
-	signpost 2, 4, $1, MapRuinsofAlphHoOhChamberSignpost3Script
-	signpost 0, 3, $1, MapRuinsofAlphHoOhChamberSignpost4Script
-	signpost 0, 4, $1, MapRuinsofAlphHoOhChamberSignpost5Script
+	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphHoOhChamberSignpost1Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphHoOhChamberSignpost1Script
+	signpost 2, 3, SIGNPOST_UP, MapRuinsofAlphHoOhChamberSignpost2Script
+	signpost 2, 4, SIGNPOST_UP, MapRuinsofAlphHoOhChamberSignpost3Script
+	signpost 0, 3, SIGNPOST_UP, MapRuinsofAlphHoOhChamberSignpost4Script
+	signpost 0, 4, SIGNPOST_UP, MapRuinsofAlphHoOhChamberSignpost5Script
 
 	; people-events
 	db 0
--- a/maps/RuinsofAlphHoOhItemRoom.asm
+++ b/maps/RuinsofAlphHoOhItemRoom.asm
@@ -42,12 +42,12 @@
 
 	; signposts
 	db 2
-	signpost 1, 2, $0, MapRuinsofAlphHoOhItemRoomSignpost1Script
-	signpost 1, 5, $0, MapRuinsofAlphHoOhItemRoomSignpost1Script
+	signpost 1, 2, SIGNPOST_READ, MapRuinsofAlphHoOhItemRoomSignpost1Script
+	signpost 1, 5, SIGNPOST_READ, MapRuinsofAlphHoOhItemRoomSignpost1Script
 
 	; people-events
 	db 4
-	person_event SPRITE_POKE_BALL, 10, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x59918, EVENT_PICKED_UP_GOLD_BERRY_FROM_HO_OH_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 10, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x5991a, EVENT_PICKED_UP_MYSTERYBERRY_FROM_HO_OH_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x5991c, EVENT_PICKED_UP_REVIVAL_HERB_FROM_HO_OH_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x5991e, EVENT_PICKED_UP_CHARCOAL_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x59918, EVENT_PICKED_UP_GOLD_BERRY_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5991a, EVENT_PICKED_UP_MYSTERYBERRY_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5991c, EVENT_PICKED_UP_REVIVAL_HERB_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5991e, EVENT_PICKED_UP_CHARCOAL_FROM_HO_OH_ITEM_ROOM
--- a/maps/RuinsofAlphInnerChamber.asm
+++ b/maps/RuinsofAlphInnerChamber.asm
@@ -96,35 +96,35 @@
 
 	; signposts
 	db 26
-	signpost 3, 2, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 5, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 8, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 11, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 14, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 3, 17, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 2, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 5, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 8, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 11, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 14, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 8, 17, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 13, 2, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 13, 17, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 2, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 5, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 8, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 11, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 14, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 18, 17, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 2, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 5, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 8, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 11, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 14, $0, MapRuinsofAlphInnerChamberSignpost25Script
-	signpost 24, 17, $0, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 3, 8, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 3, 11, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 3, 14, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 3, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 8, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 8, 5, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 8, 8, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 8, 11, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 8, 14, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 8, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 13, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 13, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 18, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 18, 5, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 18, 8, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 18, 11, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 18, 14, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 18, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 24, 2, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 24, 5, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 24, 8, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 24, 11, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 24, 14, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
+	signpost 24, 17, SIGNPOST_READ, MapRuinsofAlphInnerChamberSignpost25Script
 
 	; people-events
 	db 3
-	person_event SPRITE_FISHER, 11, 7, $3, $0, 255, 255, $a0, 0, FisherScript_0x58f7d, EVENT_705
-	person_event SPRITE_TEACHER, 17, 18, $2, $11, 255, 255, $0, 0, TeacherScript_0x58f80, EVENT_705
-	person_event SPRITE_GRAMPS, 23, 15, $7, $0, 255, 255, $b0, 0, GrampsScript_0x58f83, EVENT_705
+	person_event SPRITE_FISHER, 11, 7, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x58f7d, EVENT_705
+	person_event SPRITE_TEACHER, 17, 18, DOWN << 2 | $2, $11, -1, -1, $0, 0, TeacherScript_0x58f80, EVENT_705
+	person_event SPRITE_GRAMPS, 23, 15, UP << 2 | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrampsScript_0x58f83, EVENT_705
--- a/maps/RuinsofAlphKabutoChamber.asm
+++ b/maps/RuinsofAlphKabutoChamber.asm
@@ -275,14 +275,14 @@
 
 	; signposts
 	db 6
-	signpost 3, 2, $0, MapRuinsofAlphKabutoChamberSignpost1Script
-	signpost 3, 5, $0, MapRuinsofAlphKabutoChamberSignpost1Script
-	signpost 2, 3, $1, MapRuinsofAlphKabutoChamberSignpost2Script
-	signpost 2, 4, $1, MapRuinsofAlphKabutoChamberSignpost3Script
-	signpost 0, 3, $1, MapRuinsofAlphKabutoChamberSignpost4Script
-	signpost 0, 4, $1, MapRuinsofAlphKabutoChamberSignpost5Script
+	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphKabutoChamberSignpost1Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphKabutoChamberSignpost1Script
+	signpost 2, 3, SIGNPOST_UP, MapRuinsofAlphKabutoChamberSignpost2Script
+	signpost 2, 4, SIGNPOST_UP, MapRuinsofAlphKabutoChamberSignpost3Script
+	signpost 0, 3, SIGNPOST_UP, MapRuinsofAlphKabutoChamberSignpost4Script
+	signpost 0, 4, SIGNPOST_UP, MapRuinsofAlphKabutoChamberSignpost5Script
 
 	; people-events
 	db 2
-	person_event SPRITE_RECEPTIONIST, 9, 9, $6, $0, 255, 255, $0, 0, ReceptionistScript_0x58769, EVENT_74E
-	person_event SPRITE_SCIENTIST, 5, 7, $7, $0, 255, 255, $90, 0, ScientistScript_0x587a8, -1
+	person_event SPRITE_RECEPTIONIST, 9, 9, UP << 2 | $2, $0, -1, -1, $0, 0, ReceptionistScript_0x58769, EVENT_74E
+	person_event SPRITE_SCIENTIST, 5, 7, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x587a8, -1
--- a/maps/RuinsofAlphKabutoItemRoom.asm
+++ b/maps/RuinsofAlphKabutoItemRoom.asm
@@ -42,12 +42,12 @@
 
 	; signposts
 	db 2
-	signpost 1, 2, $0, MapRuinsofAlphKabutoItemRoomSignpost1Script
-	signpost 1, 5, $0, MapRuinsofAlphKabutoItemRoomSignpost1Script
+	signpost 1, 2, SIGNPOST_READ, MapRuinsofAlphKabutoItemRoomSignpost1Script
+	signpost 1, 5, SIGNPOST_READ, MapRuinsofAlphKabutoItemRoomSignpost1Script
 
 	; people-events
 	db 4
-	person_event SPRITE_POKE_BALL, 10, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x599a2, EVENT_PICKED_UP_BERRY_FROM_KABUTO_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 10, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x599a4, EVENT_PICKED_UP_PSNCUREBERRY_FROM_KABUTO_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x599a6, EVENT_PICKED_UP_HEAL_POWDER_FROM_KABUTO_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x599a8, EVENT_PICKED_UP_ENERGYPOWDER_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x599a2, EVENT_PICKED_UP_BERRY_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x599a4, EVENT_PICKED_UP_PSNCUREBERRY_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x599a6, EVENT_PICKED_UP_HEAL_POWDER_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x599a8, EVENT_PICKED_UP_ENERGYPOWDER_FROM_KABUTO_ITEM_ROOM
--- a/maps/RuinsofAlphOmanyteChamber.asm
+++ b/maps/RuinsofAlphOmanyteChamber.asm
@@ -166,12 +166,12 @@
 
 	; signposts
 	db 6
-	signpost 3, 2, $0, MapRuinsofAlphOmanyteChamberSignpost1Script
-	signpost 3, 5, $0, MapRuinsofAlphOmanyteChamberSignpost1Script
-	signpost 2, 3, $1, MapRuinsofAlphOmanyteChamberSignpost2Script
-	signpost 2, 4, $1, MapRuinsofAlphOmanyteChamberSignpost3Script
-	signpost 0, 3, $1, MapRuinsofAlphOmanyteChamberSignpost4Script
-	signpost 0, 4, $1, MapRuinsofAlphOmanyteChamberSignpost5Script
+	signpost 3, 2, SIGNPOST_READ, MapRuinsofAlphOmanyteChamberSignpost1Script
+	signpost 3, 5, SIGNPOST_READ, MapRuinsofAlphOmanyteChamberSignpost1Script
+	signpost 2, 3, SIGNPOST_UP, MapRuinsofAlphOmanyteChamberSignpost2Script
+	signpost 2, 4, SIGNPOST_UP, MapRuinsofAlphOmanyteChamberSignpost3Script
+	signpost 0, 3, SIGNPOST_UP, MapRuinsofAlphOmanyteChamberSignpost4Script
+	signpost 0, 4, SIGNPOST_UP, MapRuinsofAlphOmanyteChamberSignpost5Script
 
 	; people-events
 	db 0
--- a/maps/RuinsofAlphOmanyteItemRoom.asm
+++ b/maps/RuinsofAlphOmanyteItemRoom.asm
@@ -42,12 +42,12 @@
 
 	; signposts
 	db 2
-	signpost 1, 2, $0, MapRuinsofAlphOmanyteItemRoomSignpost1Script
-	signpost 1, 5, $0, MapRuinsofAlphOmanyteItemRoomSignpost1Script
+	signpost 1, 2, SIGNPOST_READ, MapRuinsofAlphOmanyteItemRoomSignpost1Script
+	signpost 1, 5, SIGNPOST_READ, MapRuinsofAlphOmanyteItemRoomSignpost1Script
 
 	; people-events
 	db 4
-	person_event SPRITE_POKE_BALL, 10, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x59a2c, EVENT_PICKED_UP_MYSTERYBERRY_FROM_OMANYTE_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 10, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x59a2e, EVENT_PICKED_UP_MYSTIC_WATER_FROM_OMANYTE_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x59a30, EVENT_PICKED_UP_STARDUST_FROM_OMANYTE_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 8, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x59a32, EVENT_PICKED_UP_STAR_PIECE_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x59a2c, EVENT_PICKED_UP_MYSTERYBERRY_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 10, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x59a2e, EVENT_PICKED_UP_MYSTIC_WATER_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x59a30, EVENT_PICKED_UP_STARDUST_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 8, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x59a32, EVENT_PICKED_UP_STAR_PIECE_FROM_OMANYTE_ITEM_ROOM
--- a/maps/RuinsofAlphOutside.asm
+++ b/maps/RuinsofAlphOutside.asm
@@ -337,14 +337,14 @@
 
 	; signposts
 	db 3
-	signpost 8, 16, $0, MapRuinsofAlphOutsideSignpost0Script
-	signpost 16, 12, $0, MapRuinsofAlphOutsideSignpost1Script
-	signpost 12, 18, $0, MapRuinsofAlphOutsideSignpost2Script
+	signpost 8, 16, SIGNPOST_READ, MapRuinsofAlphOutsideSignpost0Script
+	signpost 16, 12, SIGNPOST_READ, MapRuinsofAlphOutsideSignpost1Script
+	signpost 12, 18, SIGNPOST_READ, MapRuinsofAlphOutsideSignpost2Script
 
 	; people-events
 	db 5
-	person_event SPRITE_YOUNGSTER, 24, 8, $6, $0, 255, 255, $2, 1, TrainerPsychicNathan, -1
-	person_event SPRITE_SCIENTIST, 19, 15, $7, $0, 255, 255, $0, 0, ScientistScript_0x58043, EVENT_703
-	person_event SPRITE_FISHER, 21, 17, $3, $0, 255, 255, $a0, 0, FisherScript_0x58061, EVENT_78E
-	person_event SPRITE_YOUNGSTER, 15, 18, $2, $11, 255, 255, $b0, 0, YoungsterScript_0x58076, EVENT_78F
-	person_event SPRITE_YOUNGSTER, 12, 16, $7, $0, 255, 255, $80, 0, YoungsterScript_0x5807e, EVENT_78F
+	person_event SPRITE_YOUNGSTER, 24, 8, UP << 2 | $2, $0, -1, -1, $2, 1, TrainerPsychicNathan, -1
+	person_event SPRITE_SCIENTIST, 19, 15, UP << 2 | $3, $0, -1, -1, $0, 0, ScientistScript_0x58043, EVENT_703
+	person_event SPRITE_FISHER, 21, 17, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x58061, EVENT_78E
+	person_event SPRITE_YOUNGSTER, 15, 18, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, YoungsterScript_0x58076, EVENT_78F
+	person_event SPRITE_YOUNGSTER, 12, 16, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x5807e, EVENT_78F
--- a/maps/RuinsofAlphResearchCenter.asm
+++ b/maps/RuinsofAlphResearchCenter.asm
@@ -406,12 +406,12 @@
 
 	; signposts
 	db 3
-	signpost 5, 6, $0, MapRuinsofAlphResearchCenterSignpost0Script
-	signpost 4, 3, $0, MapRuinsofAlphResearchCenterSignpost1Script
-	signpost 1, 7, $0, MapRuinsofAlphResearchCenterSignpost2Script
+	signpost 5, 6, SIGNPOST_READ, MapRuinsofAlphResearchCenterSignpost0Script
+	signpost 4, 3, SIGNPOST_READ, MapRuinsofAlphResearchCenterSignpost1Script
+	signpost 1, 7, SIGNPOST_READ, MapRuinsofAlphResearchCenterSignpost2Script
 
 	; people-events
 	db 3
-	person_event SPRITE_SCIENTIST, 9, 8, $7, $0, 255, 255, $90, 0, ScientistScript_0x591e5, -1
-	person_event SPRITE_SCIENTIST, 6, 9, $2, $12, 255, 255, $90, 0, ScientistScript_0x59214, -1
-	person_event SPRITE_SCIENTIST, 9, 6, $7, $0, 255, 255, $90, 0, ScientistScript_0x591d1, EVENT_704
+	person_event SPRITE_SCIENTIST, 9, 8, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x591e5, -1
+	person_event SPRITE_SCIENTIST, 6, 9, DOWN << 2 | $2, $12, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x59214, -1
+	person_event SPRITE_SCIENTIST, 9, 6, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x591d1, EVENT_704
--- a/maps/SafariZoneWardensHome.asm
+++ b/maps/SafariZoneWardensHome.asm
@@ -87,11 +87,11 @@
 
 	; signposts
 	db 4
-	signpost 1, 0, $0, WardensHomeBookshelf
-	signpost 1, 1, $0, WardensHomeBookshelf
-	signpost 0, 7, $0, WardenPhoto
-	signpost 0, 9, $0, SafariZonePhoto
+	signpost 1, 0, SIGNPOST_READ, WardensHomeBookshelf
+	signpost 1, 1, SIGNPOST_READ, WardensHomeBookshelf
+	signpost 0, 7, SIGNPOST_READ, WardenPhoto
+	signpost 0, 9, SIGNPOST_READ, SafariZonePhoto
 
 	; people-events
 	db 1
-	person_event SPRITE_LASS, 8, 6, $9, $0, 255, 255, $a0, 0, WardensGranddaughter, -1
+	person_event SPRITE_LASS, 8, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, WardensGranddaughter, -1
--- a/maps/SaffronCity.asm
+++ b/maps/SaffronCity.asm
@@ -284,22 +284,22 @@
 
 	; signposts
 	db 8
-	signpost 5, 21, $0, SaffronCitySign
-	signpost 5, 33, $0, SaffronGymSign
-	signpost 5, 25, $0, FightingDojoSign
-	signpost 21, 15, $0, SilphCoSign
-	signpost 29, 25, $0, MrPsychicsHouseSign
-	signpost 5, 11, $0, SaffronCityMagnetTrainStationSign
-	signpost 29, 10, $0, SaffronCityPokeCenterSign
-	signpost 11, 26, $0, SaffronCityMartSign
+	signpost 5, 21, SIGNPOST_READ, SaffronCitySign
+	signpost 5, 33, SIGNPOST_READ, SaffronGymSign
+	signpost 5, 25, SIGNPOST_READ, FightingDojoSign
+	signpost 21, 15, SIGNPOST_READ, SilphCoSign
+	signpost 29, 25, SIGNPOST_READ, MrPsychicsHouseSign
+	signpost 5, 11, SIGNPOST_READ, SaffronCityMagnetTrainStationSign
+	signpost 29, 10, SIGNPOST_READ, SaffronCityPokeCenterSign
+	signpost 11, 26, SIGNPOST_READ, SaffronCityMartSign
 
 	; people-events
 	db 8
-	person_event SPRITE_LASS, 18, 11, $5, $2, 255, 255, $80, 0, LassScript_0x19932a, -1
-	person_event SPRITE_POKEFAN_M, 34, 23, $5, $2, 255, 255, $b0, 0, PokefanMScript_0x19933e, -1
-	person_event SPRITE_COOLTRAINER_M, 11, 36, $5, $1, 255, 255, $a0, 0, CooltrainerMScript_0x199352, -1
-	person_event SPRITE_COOLTRAINER_F, 28, 24, $5, $2, 255, 255, $80, 0, CooltrainerFScript_0x199355, -1
-	person_event SPRITE_FISHER, 16, 31, $6, $0, 255, 255, $a0, 0, FisherScript_0x199358, -1
-	person_event SPRITE_YOUNGSTER, 23, 19, $4, $10, 255, 255, $90, 0, YoungsterScript_0x19936c, -1
-	person_event SPRITE_YOUNGSTER, 26, 39, $2, $11, 255, 255, $80, 0, YoungsterScript_0x19936f, -1
-	person_event SPRITE_LASS, 12, 23, $3, $0, 255, 255, $a0, 0, LassScript_0x199372, -1
+	person_event SPRITE_LASS, 18, 11, UP << 2 | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, LassScript_0x19932a, -1
+	person_event SPRITE_POKEFAN_M, 34, 23, UP << 2 | $1, $2, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, PokefanMScript_0x19933e, -1
+	person_event SPRITE_COOLTRAINER_M, 11, 36, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerMScript_0x199352, -1
+	person_event SPRITE_COOLTRAINER_F, 28, 24, UP << 2 | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x199355, -1
+	person_event SPRITE_FISHER, 16, 31, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x199358, -1
+	person_event SPRITE_YOUNGSTER, 23, 19, UP << 2 | $0, $10, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x19936c, -1
+	person_event SPRITE_YOUNGSTER, 26, 39, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x19936f, -1
+	person_event SPRITE_LASS, 12, 23, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x199372, -1
--- a/maps/SaffronGym.asm
+++ b/maps/SaffronGym.asm
@@ -390,13 +390,13 @@
 
 	; signposts
 	db 1
-	signpost 15, 8, $0, SaffronGymStatue
+	signpost 15, 8, SIGNPOST_READ, SaffronGymStatue
 
 	; people-events
 	db 6
-	person_event SPRITE_SABRINA, 12, 13, $6, $0, 255, 255, $80, 0, SabrinaScript_0x189c2e, -1
-	person_event SPRITE_GRANNY, 20, 21, $a, $0, 255, 255, $b2, 3, TrainerMediumRebecca, -1
-	person_event SPRITE_YOUNGSTER, 20, 7, $a, $0, 255, 255, $92, 3, TrainerPsychicFranklin, -1
-	person_event SPRITE_GRANNY, 8, 7, $a, $0, 255, 255, $b2, 2, TrainerMediumDoris, -1
-	person_event SPRITE_YOUNGSTER, 8, 21, $a, $0, 255, 255, $92, 2, TrainerPsychicJared, -1
-	person_event SPRITE_GYM_GUY, 18, 13, $6, $0, 255, 255, $90, 0, SaffronGymGuyScript, -1
+	person_event SPRITE_SABRINA, 12, 13, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SabrinaScript_0x189c2e, -1
+	person_event SPRITE_GRANNY, 20, 21, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerMediumRebecca, -1
+	person_event SPRITE_YOUNGSTER, 20, 7, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPsychicFranklin, -1
+	person_event SPRITE_GRANNY, 8, 7, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerMediumDoris, -1
+	person_event SPRITE_YOUNGSTER, 8, 21, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerPsychicJared, -1
+	person_event SPRITE_GYM_GUY, 18, 13, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SaffronGymGuyScript, -1
--- a/maps/SaffronMart.asm
+++ b/maps/SaffronMart.asm
@@ -49,6 +49,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x18a3bf, -1
-	person_event SPRITE_COOLTRAINER_M, 6, 11, $3, $0, 255, 255, $b0, 0, CooltrainerMScript_0x18a3c6, -1
-	person_event SPRITE_COOLTRAINER_F, 10, 11, $5, $1, 255, 255, $a0, 0, CooltrainerFScript_0x18a3c9, -1
+	person_event SPRITE_CLERK, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x18a3bf, -1
+	person_event SPRITE_COOLTRAINER_M, 6, 11, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, CooltrainerMScript_0x18a3c6, -1
+	person_event SPRITE_COOLTRAINER_F, 10, 11, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, CooltrainerFScript_0x18a3c9, -1
--- a/maps/SaffronPokeCenter1F.asm
+++ b/maps/SaffronPokeCenter1F.asm
@@ -123,7 +123,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x18a47d, -1
-	person_event SPRITE_TEACHER, 6, 11, $2, $11, 255, 255, $a0, 0, TeacherScript_0x18a480, -1
-	person_event SPRITE_FISHER, 10, 12, $8, $0, 255, 255, $80, 0, FisherScript_0x18a48c, -1
-	person_event SPRITE_YOUNGSTER, 8, 5, $3, $0, 255, 255, $90, 0, YoungsterScript_0x18a4a0, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x18a47d, -1
+	person_event SPRITE_TEACHER, 6, 11, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, TeacherScript_0x18a480, -1
+	person_event SPRITE_FISHER, 10, 12, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x18a48c, -1
+	person_event SPRITE_YOUNGSTER, 8, 5, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, YoungsterScript_0x18a4a0, -1
--- a/maps/SaffronTrainStation.asm
+++ b/maps/SaffronTrainStation.asm
@@ -231,7 +231,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_OFFICER, 13, 13, $6, $0, 255, 255, $0, 0, OfficerScript_0x18a81e, -1
-	person_event SPRITE_GYM_GUY, 18, 14, $2, $11, 255, 255, $0, 0, GymGuyScript_0x18a875, -1
-	person_event SPRITE_TEACHER, 15, 10, $9, $0, 255, 255, $0, 0, TeacherScript_0x18a889, EVENT_772
-	person_event SPRITE_LASS, 14, 10, $7, $0, 255, 255, $a0, 0, LassScript_0x18a88c, EVENT_772
+	person_event SPRITE_OFFICER, 13, 13, UP << 2 | $2, $0, -1, -1, $0, 0, OfficerScript_0x18a81e, -1
+	person_event SPRITE_GYM_GUY, 18, 14, DOWN << 2 | $2, $11, -1, -1, $0, 0, GymGuyScript_0x18a875, -1
+	person_event SPRITE_TEACHER, 15, 10, LEFT << 2 | $1, $0, -1, -1, $0, 0, TeacherScript_0x18a889, EVENT_772
+	person_event SPRITE_LASS, 14, 10, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x18a88c, EVENT_772
--- a/maps/SeafoamGym.asm
+++ b/maps/SeafoamGym.asm
@@ -171,5 +171,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_BLAINE, 6, 9, $6, $0, 255, 255, $b0, 0, BlaineScript_0x1ab4fb, -1
-	person_event SPRITE_GYM_GUY, 9, 10, $7, $0, 255, 255, $90, 0, SeafoamGymGuyScript, EVENT_777
+	person_event SPRITE_BLAINE, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, BlaineScript_0x1ab4fb, -1
+	person_event SPRITE_GYM_GUY, 9, 10, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SeafoamGymGuyScript, EVENT_777
--- a/maps/SilphCo1F.asm
+++ b/maps/SilphCo1F.asm
@@ -68,5 +68,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_RECEPTIONIST, 6, 8, $6, $0, 255, 255, $90, 0, ReceptionistScript_0x18abe5, -1
-	person_event SPRITE_OFFICER, 5, 17, $6, $0, 255, 255, $90, 0, OfficerScript_0x18abe8, -1
+	person_event SPRITE_RECEPTIONIST, 6, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ReceptionistScript_0x18abe5, -1
+	person_event SPRITE_OFFICER, 5, 17, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, OfficerScript_0x18abe8, -1
--- a/maps/SilverCaveItemRooms.asm
+++ b/maps/SilverCaveItemRooms.asm
@@ -28,5 +28,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_POKE_BALL, 7, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c65e, EVENT_69C
-	person_event SPRITE_POKE_BALL, 15, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c660, EVENT_69D
+	person_event SPRITE_POKE_BALL, 7, 10, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c65e, EVENT_69C
+	person_event SPRITE_POKE_BALL, 15, 19, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c660, EVENT_69D
--- a/maps/SilverCaveOutside.asm
+++ b/maps/SilverCaveOutside.asm
@@ -40,9 +40,9 @@
 
 	; signposts
 	db 3
-	signpost 19, 24, $0, MtSilverPokeCenterSign
-	signpost 13, 17, $0, MtSilverSign
-	signpost 25, 9, $7, MapSilverCaveOutsideSignpostItem2
+	signpost 19, 24, SIGNPOST_READ, MtSilverPokeCenterSign
+	signpost 13, 17, SIGNPOST_READ, MtSilverSign
+	signpost 25, 9, SIGNPOST_ITEMIFSET, MapSilverCaveOutsideSignpostItem2
 
 	; people-events
 	db 0
--- a/maps/SilverCavePokeCenter1F.asm
+++ b/maps/SilverCavePokeCenter1F.asm
@@ -43,5 +43,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x1ae59a, -1
-	person_event SPRITE_GRANNY, 9, 5, $8, $12, 255, 255, $0, 0, GrannyScript_0x1ae59d, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x1ae59a, -1
+	person_event SPRITE_GRANNY, 9, 5, LEFT << 2 | $0, $12, -1, -1, $0, 0, GrannyScript_0x1ae59d, -1
--- a/maps/SilverCaveRoom1.asm
+++ b/maps/SilverCaveRoom1.asm
@@ -41,12 +41,12 @@
 
 	; signposts
 	db 2
-	signpost 23, 16, $7, MapSilverCaveRoom1SignpostItem0
-	signpost 12, 17, $7, MapSilverCaveRoom1SignpostItem1
+	signpost 23, 16, SIGNPOST_ITEMIFSET, MapSilverCaveRoom1SignpostItem0
+	signpost 12, 17, SIGNPOST_ITEMIFSET, MapSilverCaveRoom1SignpostItem1
 
 	; people-events
 	db 4
-	person_event SPRITE_POKE_BALL, 13, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c554, EVENT_699
-	person_event SPRITE_POKE_BALL, 33, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c556, EVENT_69A
-	person_event SPRITE_POKE_BALL, 34, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c558, EVENT_69B
-	person_event SPRITE_POKE_BALL, 22, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c55a, EVENT_7C1
+	person_event SPRITE_POKE_BALL, 13, 8, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c554, EVENT_699
+	person_event SPRITE_POKE_BALL, 33, 19, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c556, EVENT_69A
+	person_event SPRITE_POKE_BALL, 34, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c558, EVENT_69B
+	person_event SPRITE_POKE_BALL, 22, 11, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c55a, EVENT_7C1
--- a/maps/SilverCaveRoom2.asm
+++ b/maps/SilverCaveRoom2.asm
@@ -35,10 +35,10 @@
 
 	; signposts
 	db 1
-	signpost 31, 14, $7, MapSilverCaveRoom2SignpostItem0
+	signpost 31, 14, SIGNPOST_ITEMIFSET, MapSilverCaveRoom2SignpostItem0
 
 	; people-events
 	db 3
-	person_event SPRITE_POKE_BALL, 14, 28, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c5b2, EVENT_7C2
-	person_event SPRITE_POKE_BALL, 28, 26, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c5b4, EVENT_7C3
-	person_event SPRITE_POKE_BALL, 24, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c5b6, EVENT_7C4
+	person_event SPRITE_POKE_BALL, 14, 28, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c5b2, EVENT_7C2
+	person_event SPRITE_POKE_BALL, 28, 26, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c5b4, EVENT_7C3
+	person_event SPRITE_POKE_BALL, 24, 8, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c5b6, EVENT_7C4
--- a/maps/SilverCaveRoom3.asm
+++ b/maps/SilverCaveRoom3.asm
@@ -63,4 +63,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_RED, 14, 13, $7, $0, 255, 255, $80, 0, RedScript_0x18c603, EVENT_RED_IN_MT_SILVER
+	person_event SPRITE_RED, 14, 13, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, RedScript_0x18c603, EVENT_RED_IN_MT_SILVER
--- a/maps/SlowpokeWellB1F.asm
+++ b/maps/SlowpokeWellB1F.asm
@@ -10,7 +10,7 @@
 
 TrainerGruntM29:
 	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_22
+	dw EVENT_BEAT_ROCKET_GRUNTM_29
 
 	; trainer group && trainer id
 	db GRUNTM, 29
@@ -390,12 +390,12 @@
 
 	; people-events
 	db 9
-	person_event SPRITE_ROCKET, 11, 19, $6, $0, 255, 255, $2, 3, TrainerGruntM29, EVENT_6FC
-	person_event SPRITE_ROCKET, 6, 9, $6, $0, 255, 255, $2, 1, TrainerGruntM1, EVENT_6FC
-	person_event SPRITE_ROCKET, 10, 9, $9, $0, 255, 255, $2, 2, TrainerGruntM2, EVENT_6FC
-	person_event SPRITE_ROCKET_GIRL, 8, 14, $9, $0, 255, 255, $82, 4, TrainerGruntF1, EVENT_6FC
-	person_event SPRITE_SLOWPOKE, 8, 11, $1, $0, 255, 255, $80, 0, SlowpokeScript_0x5a681, EVENT_6FB
-	person_event SPRITE_SLOWPOKE, 6, 10, $1, $0, 255, 255, $80, 0, SlowpokeScript_0x5a695, EVENT_6FB
-	person_event SPRITE_KURT, 18, 20, $7, $0, 255, 255, $0, 0, KurtScript_0x5a5d5, EVENT_740
-	person_event SPRITE_BOULDER, 6, 7, $19, $0, 255, 255, $0, 0, SlowpokeWellB1FBoulder, -1
-	person_event SPRITE_POKE_BALL, 7, 14, $1, $0, 255, 255, $1, 0, ItemFragment_0x5a6a3, EVENT_662
+	person_event SPRITE_ROCKET, 11, 19, UP << 2 | $2, $0, -1, -1, $2, 3, TrainerGruntM29, EVENT_6FC
+	person_event SPRITE_ROCKET, 6, 9, UP << 2 | $2, $0, -1, -1, $2, 1, TrainerGruntM1, EVENT_6FC
+	person_event SPRITE_ROCKET, 10, 9, LEFT << 2 | $1, $0, -1, -1, $2, 2, TrainerGruntM2, EVENT_6FC
+	person_event SPRITE_ROCKET_GIRL, 8, 14, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerGruntF1, EVENT_6FC
+	person_event SPRITE_SLOWPOKE, 8, 11, DOWN << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SlowpokeScript_0x5a681, EVENT_6FB
+	person_event SPRITE_SLOWPOKE, 6, 10, DOWN << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SlowpokeScript_0x5a695, EVENT_6FB
+	person_event SPRITE_KURT, 18, 20, UP << 2 | $3, $0, -1, -1, $0, 0, KurtScript_0x5a5d5, EVENT_740
+	person_event SPRITE_BOULDER, 6, 7, LEFT << 2 | $11, $0, -1, -1, $0, 0, SlowpokeWellB1FBoulder, -1
+	person_event SPRITE_POKE_BALL, 7, 14, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5a6a3, EVENT_662
--- a/maps/SlowpokeWellB2F.asm
+++ b/maps/SlowpokeWellB2F.asm
@@ -73,5 +73,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_GYM_GUY, 8, 9, $2, $21, 255, 255, $0, 1, GymGuyScript_0x5ad0b, -1
-	person_event SPRITE_POKE_BALL, 9, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x5ad28, EVENT_663
+	person_event SPRITE_GYM_GUY, 8, 9, DOWN << 2 | $2, $21, -1, -1, $0, 1, GymGuyScript_0x5ad0b, -1
+	person_event SPRITE_POKE_BALL, 9, 19, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5ad28, EVENT_663
--- a/maps/SoulHouse.asm
+++ b/maps/SoulHouse.asm
@@ -83,7 +83,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_GRAMPS, 6, 8, $6, $0, 255, 255, $90, 0, GrampsScript_0x7ec47, -1
-	person_event SPRITE_TEACHER, 7, 11, $5, $1, 255, 255, $90, 0, TeacherScript_0x7ec4a, -1
-	person_event SPRITE_LASS, 9, 6, $7, $0, 255, 255, $90, 0, LassScript_0x7ec4d, -1
-	person_event SPRITE_GRANNY, 7, 5, $7, $0, 255, 255, $90, 0, GrannyScript_0x7ec50, -1
+	person_event SPRITE_GRAMPS, 6, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrampsScript_0x7ec47, -1
+	person_event SPRITE_TEACHER, 7, 11, UP << 2 | $1, $1, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, TeacherScript_0x7ec4a, -1
+	person_event SPRITE_LASS, 9, 6, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LassScript_0x7ec4d, -1
+	person_event SPRITE_GRANNY, 7, 5, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrannyScript_0x7ec50, -1
--- a/maps/SproutTower1F.asm
+++ b/maps/SproutTower1F.asm
@@ -127,14 +127,14 @@
 
 	; signposts
 	db 2
-	signpost 15, 7, $0, MapSproutTower1FSignpost1Script
-	signpost 15, 12, $0, MapSproutTower1FSignpost1Script
+	signpost 15, 7, SIGNPOST_READ, MapSproutTower1FSignpost1Script
+	signpost 15, 12, SIGNPOST_READ, MapSproutTower1FSignpost1Script
 
 	; people-events
 	db 6
-	person_event SPRITE_SAGE, 8, 11, $6, $0, 255, 255, $90, 0, SageScript_0x1844fe, -1
-	person_event SPRITE_SAGE, 11, 10, $2, $11, 255, 255, $90, 0, SageScript_0x184501, -1
-	person_event SPRITE_GRANNY, 16, 15, $8, $0, 255, 255, $0, 0, GrannyScript_0x184504, -1
-	person_event SPRITE_TEACHER, 13, 13, $7, $0, 255, 255, $0, 0, TeacherScript_0x184507, -1
-	person_event SPRITE_SAGE, 9, 7, $7, $0, 255, 255, $92, 4, TrainerSageChow, -1
-	person_event SPRITE_POKE_BALL, 11, 20, $1, $0, 255, 255, $1, 0, ItemFragment_0x18451e, EVENT_647
+	person_event SPRITE_SAGE, 8, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SageScript_0x1844fe, -1
+	person_event SPRITE_SAGE, 11, 10, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SageScript_0x184501, -1
+	person_event SPRITE_GRANNY, 16, 15, LEFT << 2 | $0, $0, -1, -1, $0, 0, GrannyScript_0x184504, -1
+	person_event SPRITE_TEACHER, 13, 13, UP << 2 | $3, $0, -1, -1, $0, 0, TeacherScript_0x184507, -1
+	person_event SPRITE_SAGE, 9, 7, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerSageChow, -1
+	person_event SPRITE_POKE_BALL, 11, 20, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18451e, EVENT_647
--- a/maps/SproutTower2F.asm
+++ b/maps/SproutTower2F.asm
@@ -127,10 +127,10 @@
 
 	; signposts
 	db 1
-	signpost 15, 12, $0, MapSproutTower2FSignpost0Script
+	signpost 15, 12, SIGNPOST_READ, MapSproutTower2FSignpost0Script
 
 	; people-events
 	db 3
-	person_event SPRITE_SAGE, 7, 16, $a, $0, 255, 255, $92, 4, TrainerSageNico, -1
-	person_event SPRITE_SAGE, 18, 13, $8, $0, 255, 255, $92, 5, TrainerSageEdmond, -1
-	person_event SPRITE_POKE_BALL, 5, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x1847a7, EVENT_648
+	person_event SPRITE_SAGE, 7, 16, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerSageNico, -1
+	person_event SPRITE_SAGE, 18, 13, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 5, TrainerSageEdmond, -1
+	person_event SPRITE_POKE_BALL, 5, 7, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1847a7, EVENT_648
--- a/maps/SproutTower3F.asm
+++ b/maps/SproutTower3F.asm
@@ -384,19 +384,19 @@
 
 	; signposts
 	db 6
-	signpost 1, 8, $0, MapSproutTower3FSignpost5Script
-	signpost 1, 11, $0, MapSproutTower3FSignpost5Script
-	signpost 0, 9, $0, MapSproutTower3FSignpost3Script
-	signpost 0, 10, $0, MapSproutTower3FSignpost3Script
-	signpost 15, 5, $0, MapSproutTower3FSignpost5Script
-	signpost 15, 14, $0, MapSproutTower3FSignpost5Script
+	signpost 1, 8, SIGNPOST_READ, MapSproutTower3FSignpost5Script
+	signpost 1, 11, SIGNPOST_READ, MapSproutTower3FSignpost5Script
+	signpost 0, 9, SIGNPOST_READ, MapSproutTower3FSignpost3Script
+	signpost 0, 10, SIGNPOST_READ, MapSproutTower3FSignpost3Script
+	signpost 15, 5, SIGNPOST_READ, MapSproutTower3FSignpost5Script
+	signpost 15, 14, SIGNPOST_READ, MapSproutTower3FSignpost5Script
 
 	; people-events
 	db 7
-	person_event SPRITE_SAGE, 17, 12, $9, $0, 255, 255, $92, 3, TrainerSageJin, -1
-	person_event SPRITE_SAGE, 12, 12, $6, $0, 255, 255, $92, 2, TrainerSageTroy, -1
-	person_event SPRITE_SAGE, 6, 14, $6, $0, 255, 255, $90, 0, SageLiScript, -1
-	person_event SPRITE_SAGE, 15, 15, $8, $0, 255, 255, $92, 3, TrainerSageNeal, -1
-	person_event SPRITE_POKE_BALL, 18, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x184a19, EVENT_649
-	person_event SPRITE_POKE_BALL, 5, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x184a1b, EVENT_64A
-	person_event SPRITE_SILVER, 8, 14, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_RIVAL_SPROUT_TOWER
+	person_event SPRITE_SAGE, 17, 12, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSageJin, -1
+	person_event SPRITE_SAGE, 12, 12, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerSageTroy, -1
+	person_event SPRITE_SAGE, 6, 14, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SageLiScript, -1
+	person_event SPRITE_SAGE, 15, 15, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerSageNeal, -1
+	person_event SPRITE_POKE_BALL, 18, 10, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x184a19, EVENT_649
+	person_event SPRITE_POKE_BALL, 5, 18, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x184a1b, EVENT_64A
+	person_event SPRITE_SILVER, 8, 14, UP << 2 | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_RIVAL_SPROUT_TOWER
--- a/maps/TeamRocketBaseB1F.asm
+++ b/maps/TeamRocketBaseB1F.asm
@@ -506,7 +506,7 @@
 
 TrainerGruntM16:
 	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_15
+	dw EVENT_BEAT_ROCKET_GRUNTM_16
 
 	; trainer group && trainer id
 	db GRUNTM, 16
@@ -807,21 +807,21 @@
 
 	; signposts
 	db 9
-	signpost 11, 19, $0, MapTeamRocketBaseB1FSignpost0Script
-	signpost 1, 24, $1, MapTeamRocketBaseB1FSignpost5Script
-	signpost 1, 6, $1, MapTeamRocketBaseB1FSignpost5Script
-	signpost 15, 8, $1, MapTeamRocketBaseB1FSignpost5Script
-	signpost 15, 22, $1, MapTeamRocketBaseB1FSignpost5Script
-	signpost 5, 24, $1, MapTeamRocketBaseB1FSignpost5Script
-	signpost 11, 20, $0, MapTeamRocketBaseB1FSignpost7Script
-	signpost 11, 21, $0, MapTeamRocketBaseB1FSignpost7Script
-	signpost 11, 3, $7, MapTeamRocketBaseB1FSignpostItem8
+	signpost 11, 19, SIGNPOST_READ, MapTeamRocketBaseB1FSignpost0Script
+	signpost 1, 24, SIGNPOST_UP, MapTeamRocketBaseB1FSignpost5Script
+	signpost 1, 6, SIGNPOST_UP, MapTeamRocketBaseB1FSignpost5Script
+	signpost 15, 8, SIGNPOST_UP, MapTeamRocketBaseB1FSignpost5Script
+	signpost 15, 22, SIGNPOST_UP, MapTeamRocketBaseB1FSignpost5Script
+	signpost 5, 24, SIGNPOST_UP, MapTeamRocketBaseB1FSignpost5Script
+	signpost 11, 20, SIGNPOST_READ, MapTeamRocketBaseB1FSignpost7Script
+	signpost 11, 21, SIGNPOST_READ, MapTeamRocketBaseB1FSignpost7Script
+	signpost 11, 3, SIGNPOST_ITEMIFSET, MapTeamRocketBaseB1FSignpostItem8
 
 	; people-events
 	db 6
-	person_event SPRITE_ROCKET, 4, 4, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6D9
-	person_event SPRITE_ROCKET, 8, 6, $9, $0, 255, 255, $2, 3, TrainerGruntM16, EVENT_6DA
-	person_event SPRITE_SCIENTIST, 16, 22, $8, $0, 255, 255, $92, 3, TrainerScientistJed, EVENT_6DA
-	person_event SPRITE_POKE_BALL, 10, 31, $1, $0, 255, 255, $1, 0, ItemFragment_0x6cac4, EVENT_669
-	person_event SPRITE_POKE_BALL, 19, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x6cac6, EVENT_66A
-	person_event SPRITE_POKE_BALL, 16, 25, $1, $0, 255, 255, $1, 0, ItemFragment_0x6cac8, EVENT_66B
+	person_event SPRITE_ROCKET, 4, 4, UP << 2 | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6D9
+	person_event SPRITE_ROCKET, 8, 6, LEFT << 2 | $1, $0, -1, -1, $2, 3, TrainerGruntM16, EVENT_6DA
+	person_event SPRITE_SCIENTIST, 16, 22, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerScientistJed, EVENT_6DA
+	person_event SPRITE_POKE_BALL, 10, 31, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x6cac4, EVENT_669
+	person_event SPRITE_POKE_BALL, 19, 18, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x6cac6, EVENT_66A
+	person_event SPRITE_POKE_BALL, 16, 25, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x6cac8, EVENT_66B
--- a/maps/TeamRocketBaseB2F.asm
+++ b/maps/TeamRocketBaseB2F.asm
@@ -179,7 +179,7 @@
 
 TrainerGruntM17:
 	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_16
+	dw EVENT_BEAT_ROCKET_GRUNTM_17
 
 	; trainer group && trainer id
 	db GRUNTM, 17
@@ -206,7 +206,7 @@
 
 TrainerGruntM18:
 	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_17
+	dw EVENT_BEAT_ROCKET_GRUNTM_18
 
 	; trainer group && trainer id
 	db GRUNTM, 18
@@ -233,7 +233,7 @@
 
 TrainerGruntM19:
 	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_18
+	dw EVENT_BEAT_ROCKET_GRUNTM_19
 
 	; trainer group && trainer id
 	db GRUNTM, 19
@@ -975,43 +975,43 @@
 
 	; signposts
 	db 23
-	signpost 12, 14, $6, MapTeamRocketBaseB2FSignpostPtr1
-	signpost 12, 15, $6, MapTeamRocketBaseB2FSignpostPtr1
-	signpost 9, 17, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 16, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 15, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 14, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 13, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 9, 12, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 8, 12, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 7, 12, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 6, 12, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 5, 12, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 12, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 13, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 14, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 15, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 16, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 4, 17, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 5, 17, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 6, 17, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 7, 17, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 8, 17, $0, MapTeamRocketBaseB2FSignpost21Script
-	signpost 7, 26, $7, MapTeamRocketBaseB2FSignpostItem22
+	signpost 12, 14, SIGNPOST_IFNOTSET, MapTeamRocketBaseB2FSignpostPtr1
+	signpost 12, 15, SIGNPOST_IFNOTSET, MapTeamRocketBaseB2FSignpostPtr1
+	signpost 9, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 9, 16, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 9, 15, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 9, 14, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 9, 13, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 9, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 8, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 7, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 6, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 5, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 4, 12, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 4, 13, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 4, 14, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 4, 15, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 4, 16, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 4, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 5, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 6, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 7, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 8, 17, SIGNPOST_READ, MapTeamRocketBaseB2FSignpost21Script
+	signpost 7, 26, SIGNPOST_ITEMIFSET, MapTeamRocketBaseB2FSignpostItem22
 
 	; people-events
 	db 14
-	person_event SPRITE_ROCKET, 20, 24, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6DE
-	person_event SPRITE_ROCKET_GIRL, 20, 24, $7, $0, 255, 255, $80, 0, ObjectEvent, EVENT_6DD
-	person_event SPRITE_LANCE, 17, 9, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6D6
-	person_event SPRITE_DRAGON, 17, 13, $9, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6DF
-	person_event SPRITE_VOLTORB, 9, 11, $16, $0, 255, 255, $0, 0, VoltorbScript_0x6d101, EVENT_6E0
-	person_event SPRITE_VOLTORB, 11, 11, $16, $0, 255, 255, $0, 0, VoltorbScript_0x6d12c, EVENT_6E1
-	person_event SPRITE_VOLTORB, 13, 11, $16, $0, 255, 255, $0, 0, VoltorbScript_0x6d157, EVENT_6E2
-	person_event SPRITE_VOLTORB, 9, 26, $16, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6E0
-	person_event SPRITE_VOLTORB, 11, 26, $16, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6E1
-	person_event SPRITE_VOLTORB, 13, 26, $16, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6E2
-	person_event SPRITE_ROCKET, 17, 29, $6, $0, 255, 255, $2, 3, TrainerGruntM17, EVENT_6DA
-	person_event SPRITE_ROCKET, 5, 8, $a, $0, 255, 255, $2, 1, TrainerGruntM18, EVENT_6DA
-	person_event SPRITE_ROCKET, 18, 25, $8, $0, 255, 255, $2, 4, TrainerGruntM19, EVENT_6DA
-	person_event SPRITE_POKE_BALL, 14, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x6d20d, EVENT_66C
+	person_event SPRITE_ROCKET, 20, 24, UP << 2 | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6DE
+	person_event SPRITE_ROCKET_GIRL, 20, 24, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ObjectEvent, EVENT_6DD
+	person_event SPRITE_LANCE, 17, 9, UP << 2 | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6D6
+	person_event SPRITE_DRAGON, 17, 13, LEFT << 2 | $1, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6DF
+	person_event SPRITE_VOLTORB, 9, 11, UP << 2 | $12, $0, -1, -1, $0, 0, VoltorbScript_0x6d101, EVENT_6E0
+	person_event SPRITE_VOLTORB, 11, 11, UP << 2 | $12, $0, -1, -1, $0, 0, VoltorbScript_0x6d12c, EVENT_6E1
+	person_event SPRITE_VOLTORB, 13, 11, UP << 2 | $12, $0, -1, -1, $0, 0, VoltorbScript_0x6d157, EVENT_6E2
+	person_event SPRITE_VOLTORB, 9, 26, UP << 2 | $12, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6E0
+	person_event SPRITE_VOLTORB, 11, 26, UP << 2 | $12, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6E1
+	person_event SPRITE_VOLTORB, 13, 26, UP << 2 | $12, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6E2
+	person_event SPRITE_ROCKET, 17, 29, UP << 2 | $2, $0, -1, -1, $2, 3, TrainerGruntM17, EVENT_6DA
+	person_event SPRITE_ROCKET, 5, 8, LEFT << 2 | $2, $0, -1, -1, $2, 1, TrainerGruntM18, EVENT_6DA
+	person_event SPRITE_ROCKET, 18, 25, LEFT << 2 | $0, $0, -1, -1, $2, 4, TrainerGruntM19, EVENT_6DA
+	person_event SPRITE_POKE_BALL, 14, 7, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x6d20d, EVENT_66C
--- a/maps/TeamRocketBaseB3F.asm
+++ b/maps/TeamRocketBaseB3F.asm
@@ -146,7 +146,7 @@
 
 TrainerGruntM28:
 	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_21
+	dw EVENT_BEAT_ROCKET_GRUNTM_28
 
 	; trainer group && trainer id
 	db GRUNTM, 28
@@ -638,30 +638,30 @@
 
 	; signposts
 	db 10
-	signpost 9, 10, $6, BossDoor
-	signpost 9, 11, $6, BossDoor
-	signpost 1, 10, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 1, 11, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 1, 12, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 1, 13, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 13, 4, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 13, 5, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 13, 6, $0, MapTeamRocketBaseB3FSignpost9Script
-	signpost 13, 7, $0, MapTeamRocketBaseB3FSignpost9Script
+	signpost 9, 10, SIGNPOST_IFNOTSET, BossDoor
+	signpost 9, 11, SIGNPOST_IFNOTSET, BossDoor
+	signpost 1, 10, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 1, 11, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 1, 12, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 1, 13, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 13, 4, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 13, 5, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 13, 6, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
+	signpost 13, 7, SIGNPOST_READ, MapTeamRocketBaseB3FSignpost9Script
 
 	; people-events
 	db 14
-	person_event SPRITE_LANCE, 18, 29, $6, $0, 255, 255, $0, 0, LanceScript_0x6dffc, EVENT_6D7
-	person_event SPRITE_ROCKET, 7, 12, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6DB
-	person_event SPRITE_MOLTRES, 6, 11, $16, $0, 255, 255, $90, 0, MoltresScript_0x6e091, EVENT_6DA
-	person_event SPRITE_ROCKET_GIRL, 11, 25, $7, $0, 255, 255, $82, 0, TrainerGruntF5, EVENT_6DA
-	person_event SPRITE_ROCKET, 18, 9, $a, $0, 255, 255, $2, 3, TrainerGruntM28, EVENT_6DA
-	person_event SPRITE_SCIENTIST, 15, 27, $7, $0, 255, 255, $92, 0, TrainerScientistRoss, EVENT_6DA
-	person_event SPRITE_SCIENTIST, 19, 15, $9, $0, 255, 255, $92, 3, TrainerScientistMitch, EVENT_6DA
-	person_event SPRITE_ROCKET, 18, 28, $6, $0, 255, 255, $0, 0, RocketScript_0x6e048, EVENT_6DA
-	person_event SPRITE_SILVER, 9, 8, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6C0
-	person_event SPRITE_POKE_BALL, 16, 5, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e120, EVENT_66D
-	person_event SPRITE_POKE_BALL, 16, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e122, EVENT_66E
-	person_event SPRITE_POKE_BALL, 13, 32, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e124, EVENT_66F
-	person_event SPRITE_POKE_BALL, 6, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e126, EVENT_670
-	person_event SPRITE_POKE_BALL, 14, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x6e128, EVENT_654
+	person_event SPRITE_LANCE, 18, 29, UP << 2 | $2, $0, -1, -1, $0, 0, LanceScript_0x6dffc, EVENT_6D7
+	person_event SPRITE_ROCKET, 7, 12, UP << 2 | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6DB
+	person_event SPRITE_MOLTRES, 6, 11, UP << 2 | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, MoltresScript_0x6e091, EVENT_6DA
+	person_event SPRITE_ROCKET_GIRL, 11, 25, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 0, TrainerGruntF5, EVENT_6DA
+	person_event SPRITE_ROCKET, 18, 9, LEFT << 2 | $2, $0, -1, -1, $2, 3, TrainerGruntM28, EVENT_6DA
+	person_event SPRITE_SCIENTIST, 15, 27, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 0, TrainerScientistRoss, EVENT_6DA
+	person_event SPRITE_SCIENTIST, 19, 15, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerScientistMitch, EVENT_6DA
+	person_event SPRITE_ROCKET, 18, 28, UP << 2 | $2, $0, -1, -1, $0, 0, RocketScript_0x6e048, EVENT_6DA
+	person_event SPRITE_SILVER, 9, 8, UP << 2 | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6C0
+	person_event SPRITE_POKE_BALL, 16, 5, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e120, EVENT_66D
+	person_event SPRITE_POKE_BALL, 16, 7, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e122, EVENT_66E
+	person_event SPRITE_POKE_BALL, 13, 32, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e124, EVENT_66F
+	person_event SPRITE_POKE_BALL, 6, 21, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e126, EVENT_670
+	person_event SPRITE_POKE_BALL, 14, 18, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x6e128, EVENT_654
--- a/maps/TimeCapsule.asm
+++ b/maps/TimeCapsule.asm
@@ -3,8 +3,8 @@
 	db 2
 
 	; triggers
-	dw UnknownScript_0x1934f8, $0000
-	dw UnknownScript_0x1934fc, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
 
 	; callback count
 	db 1
@@ -11,34 +11,34 @@
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x1934fd
+	dbw 2, TimeCapsule_SetWhichChris
 
-UnknownScript_0x1934f8:
-	priorityjump UnknownScript_0x19350d
+.Trigger1:
+	priorityjump TimeCapsule_Initialize
 	end
 
-UnknownScript_0x1934fc:
+.Trigger2:
 	end
 
-UnknownScript_0x1934fd:
-	special Function29f47
-	iffalse UnknownScript_0x193508
+TimeCapsule_SetWhichChris:
+	special Special_CableClubCheckWhichChris
+	iffalse .Chris2
 	disappear $3
 	appear $2
 	return
 
-UnknownScript_0x193508:
+.Chris2:
 	disappear $2
 	appear $3
 	return
 
-UnknownScript_0x19350d:
+TimeCapsule_Initialize:
 	dotrigger $1
 	domaptrigger GROUP_POKECENTER_2F, MAP_POKECENTER_2F, $3
 	end
 
 MapTimeCapsuleSignpost1Script:
-	special Function29eaf
+	special Special_TimeCapsule
 	newloadmap $f8
 	end
 
@@ -68,10 +68,10 @@
 
 	; signposts
 	db 2
-	signpost 4, 4, $3, MapTimeCapsuleSignpost1Script
-	signpost 4, 5, $4, MapTimeCapsuleSignpost1Script
+	signpost 4, 4, SIGNPOST_RIGHT, MapTimeCapsuleSignpost1Script
+	signpost 4, 5, SIGNPOST_LEFT, MapTimeCapsuleSignpost1Script
 
 	; people-events
 	db 2
-	person_event SPRITE_CHRIS, 8, 7, $9, $0, 255, 255, $0, 0, ChrisScript_0x19351a, EVENT_000
-	person_event SPRITE_CHRIS, 8, 10, $8, $0, 255, 255, $0, 0, ChrisScript_0x19351a, EVENT_001
+	person_event SPRITE_CHRIS, 8, 7, LEFT << 2 | $1, $0, -1, -1, $0, 0, ChrisScript_0x19351a, EVENT_CHRIS1_IN_CABLE_CLUB
+	person_event SPRITE_CHRIS, 8, 10, LEFT << 2 | $0, $0, -1, -1, $0, 0, ChrisScript_0x19351a, EVENT_CHRIS2_IN_CABLE_CLUB
--- a/maps/TinTower1F.asm
+++ b/maps/TinTower1F.asm
@@ -534,13 +534,13 @@
 
 	; people-events
 	db 10
-	person_event SPRITE_SUICUNE, 13, 13, $1, $0, 255, 255, $90, 0, ObjectEvent, EVENT_7B2
-	person_event SPRITE_RAIKOU, 13, 11, $1, $0, 255, 255, $b0, 0, ObjectEvent, EVENT_7B4
-	person_event SPRITE_ENTEI, 13, 16, $1, $0, 255, 255, $80, 0, ObjectEvent, EVENT_7B3
-	person_event SPRITE_SUPER_NERD, 7, 12, $3, $0, 255, 255, $90, 0, SuperNerdScript_0x1851c8, EVENT_7B5
-	person_event SPRITE_SAGE, 13, 9, $3, $0, 255, 255, $0, 0, SageScript_0x185173, EVENT_7B6
-	person_event SPRITE_SAGE, 15, 15, $3, $0, 255, 255, $0, 0, SageScript_0x185176, EVENT_7B6
-	person_event SPRITE_SAGE, 10, 18, $3, $0, 255, 255, $0, 0, SageScript_0x185179, EVENT_7B6
-	person_event SPRITE_SAGE, 6, 8, $4, $10, 255, 255, $0, 0, SageScript_0x18517c, EVENT_7C5
-	person_event SPRITE_SAGE, 5, 13, $6, $0, 255, 255, $0, 0, SageScript_0x185188, EVENT_7C5
-	person_event SPRITE_SAGE, 6, 18, $5, $1, 255, 255, $0, 0, SageScript_0x1851bc, EVENT_7C5
+	person_event SPRITE_SUICUNE, 13, 13, DOWN << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ObjectEvent, EVENT_7B2
+	person_event SPRITE_RAIKOU, 13, 11, DOWN << 2 | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, ObjectEvent, EVENT_7B4
+	person_event SPRITE_ENTEI, 13, 16, DOWN << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ObjectEvent, EVENT_7B3
+	person_event SPRITE_SUPER_NERD, 7, 12, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x1851c8, EVENT_7B5
+	person_event SPRITE_SAGE, 13, 9, DOWN << 2 | $3, $0, -1, -1, $0, 0, SageScript_0x185173, EVENT_7B6
+	person_event SPRITE_SAGE, 15, 15, DOWN << 2 | $3, $0, -1, -1, $0, 0, SageScript_0x185176, EVENT_7B6
+	person_event SPRITE_SAGE, 10, 18, DOWN << 2 | $3, $0, -1, -1, $0, 0, SageScript_0x185179, EVENT_7B6
+	person_event SPRITE_SAGE, 6, 8, UP << 2 | $0, $10, -1, -1, $0, 0, SageScript_0x18517c, EVENT_7C5
+	person_event SPRITE_SAGE, 5, 13, UP << 2 | $2, $0, -1, -1, $0, 0, SageScript_0x185188, EVENT_7C5
+	person_event SPRITE_SAGE, 6, 18, UP << 2 | $1, $1, -1, -1, $0, 0, SageScript_0x1851bc, EVENT_7C5
--- a/maps/TinTower3F.asm
+++ b/maps/TinTower3F.asm
@@ -25,4 +25,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_POKE_BALL, 18, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x185a37, EVENT_64B
+	person_event SPRITE_POKE_BALL, 18, 7, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x185a37, EVENT_64B
--- a/maps/TinTower4F.asm
+++ b/maps/TinTower4F.asm
@@ -35,10 +35,10 @@
 
 	; signposts
 	db 1
-	signpost 6, 11, $7, MapTinTower4FSignpostItem0
+	signpost 6, 11, SIGNPOST_ITEMIFSET, MapTinTower4FSignpostItem0
 
 	; people-events
 	db 3
-	person_event SPRITE_POKE_BALL, 14, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x185a58, EVENT_64C
-	person_event SPRITE_POKE_BALL, 18, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x185a5a, EVENT_64D
-	person_event SPRITE_POKE_BALL, 16, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x185a5c, EVENT_64E
+	person_event SPRITE_POKE_BALL, 14, 18, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x185a58, EVENT_64C
+	person_event SPRITE_POKE_BALL, 18, 21, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x185a5a, EVENT_64D
+	person_event SPRITE_POKE_BALL, 16, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x185a5c, EVENT_64E
--- a/maps/TinTower5F.asm
+++ b/maps/TinTower5F.asm
@@ -34,9 +34,9 @@
 
 	; signposts
 	db 2
-	signpost 14, 16, $7, MapTinTower5FSignpostItem0
-	signpost 15, 3, $7, MapTinTower5FSignpostItem1
+	signpost 14, 16, SIGNPOST_ITEMIFSET, MapTinTower5FSignpostItem0
+	signpost 15, 3, SIGNPOST_ITEMIFSET, MapTinTower5FSignpostItem1
 
 	; people-events
 	db 1
-	person_event SPRITE_POKE_BALL, 13, 13, $1, $0, 255, 255, $1, 0, ItemFragment_0x185aa9, EVENT_64F
+	person_event SPRITE_POKE_BALL, 13, 13, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x185aa9, EVENT_64F
--- a/maps/TinTower6F.asm
+++ b/maps/TinTower6F.asm
@@ -25,4 +25,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_POKE_BALL, 12, 12, $1, $0, 255, 255, $1, 0, ItemFragment_0x185ae4, EVENT_7C6
+	person_event SPRITE_POKE_BALL, 12, 12, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x185ae4, EVENT_7C6
--- a/maps/TinTower7F.asm
+++ b/maps/TinTower7F.asm
@@ -28,4 +28,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_POKE_BALL, 5, 20, $1, $0, 255, 255, $1, 0, ItemFragment_0x185b05, EVENT_650
+	person_event SPRITE_POKE_BALL, 5, 20, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x185b05, EVENT_650
--- a/maps/TinTower8F.asm
+++ b/maps/TinTower8F.asm
@@ -35,6 +35,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_POKE_BALL, 17, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x185b35, EVENT_651
-	person_event SPRITE_POKE_BALL, 10, 15, $1, $0, 255, 255, $1, 0, ItemFragment_0x185b37, EVENT_652
-	person_event SPRITE_POKE_BALL, 5, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x185b39, EVENT_653
+	person_event SPRITE_POKE_BALL, 17, 11, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x185b35, EVENT_651
+	person_event SPRITE_POKE_BALL, 10, 15, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x185b37, EVENT_652
+	person_event SPRITE_POKE_BALL, 5, 7, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x185b39, EVENT_653
--- a/maps/TinTower9F.asm
+++ b/maps/TinTower9F.asm
@@ -38,4 +38,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_POKE_BALL, 5, 13, $1, $0, 255, 255, $1, 0, ItemFragment_0x185b88, EVENT_7C7
+	person_event SPRITE_POKE_BALL, 5, 13, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x185b88, EVENT_7C7
--- a/maps/TinTowerRoof.asm
+++ b/maps/TinTowerRoof.asm
@@ -60,4 +60,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_HO_OH, 9, 13, $16, $0, 255, 255, $80, 0, HoOhScript_0x77244, EVENT_73C
+	person_event SPRITE_HO_OH, 9, 13, UP << 2 | $12, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, HoOhScript_0x77244, EVENT_73C
--- a/maps/TohjoFalls.asm
+++ b/maps/TohjoFalls.asm
@@ -25,4 +25,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_POKE_BALL, 10, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x18db02, EVENT_6A9
+	person_event SPRITE_POKE_BALL, 10, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18db02, EVENT_6A9
--- a/maps/TradeCenter.asm
+++ b/maps/TradeCenter.asm
@@ -3,8 +3,8 @@
 	db 2
 
 	; triggers
-	dw UnknownScript_0x1933e9, $0000
-	dw UnknownScript_0x1933ed, $0000
+	dw .Trigger1, $0000
+	dw .Trigger2, $0000
 
 	; callback count
 	db 1
@@ -11,45 +11,45 @@
 
 	; callbacks
 
-	dbw 2, UnknownScript_0x1933ee
+	dbw 2, TradeCenter_SetWhichChris
 
-UnknownScript_0x1933e9:
-	priorityjump UnknownScript_0x1933fe
+.Trigger1:
+	priorityjump TradeCenter_Initialize
 	end
 
-UnknownScript_0x1933ed:
+.Trigger2:
 	end
 
-UnknownScript_0x1933ee:
-	special Function29f47
-	iffalse UnknownScript_0x1933f9
+TradeCenter_SetWhichChris:
+	special Special_CableClubCheckWhichChris
+	iffalse .Chris2
 	disappear $3
 	appear $2
 	return
 
-UnknownScript_0x1933f9:
+.Chris2:
 	disappear $2
 	appear $3
 	return
 
-UnknownScript_0x1933fe:
+TradeCenter_Initialize:
 	dotrigger $1
 	domaptrigger GROUP_POKECENTER_2F, MAP_POKECENTER_2F, $1
 	end
 
 MapTradeCenterSignpost1Script:
-	special Function29ec4
+	special Special_TradeCenter
 	newloadmap $f8
 	end
 
-UnknownScript_0x19340b:
+ChrisScript_0x19340b:
 	loadfont
-	writetext UnknownText_0x193412
+	writetext .FriendReadyText
 	closetext
 	loadmovesprites
 	end
 
-UnknownText_0x193412:
+.FriendReadyText:
 	text "Your friend is"
 	line "ready."
 	done
@@ -68,10 +68,10 @@
 
 	; signposts
 	db 2
-	signpost 4, 4, $3, MapTradeCenterSignpost1Script
-	signpost 4, 5, $4, MapTradeCenterSignpost1Script
+	signpost 4, 4, SIGNPOST_RIGHT, MapTradeCenterSignpost1Script
+	signpost 4, 5, SIGNPOST_LEFT, MapTradeCenterSignpost1Script
 
 	; people-events
 	db 2
-	person_event SPRITE_CHRIS, 8, 7, $9, $0, 255, 255, $0, 0, ChrisScript_0x193499, EVENT_000
-	person_event SPRITE_CHRIS, 8, 10, $8, $0, 255, 255, $0, 0, ChrisScript_0x193499, EVENT_001
+	person_event SPRITE_CHRIS, 8, 7, LEFT << 2 | $1, $0, -1, -1, $0, 0, ChrisScript_0x193499, EVENT_CHRIS1_IN_CABLE_CLUB
+	person_event SPRITE_CHRIS, 8, 10, LEFT << 2 | $0, $0, -1, -1, $0, 0, ChrisScript_0x193499, EVENT_CHRIS2_IN_CABLE_CLUB
--- a/maps/TrainerHouse1F.asm
+++ b/maps/TrainerHouse1F.asm
@@ -145,14 +145,14 @@
 
 	; signposts
 	db 3
-	signpost 0, 5, $0, MapTrainerHouse1FSignpost0Script
-	signpost 0, 7, $0, MapTrainerHouse1FSignpost1Script
-	signpost 10, 7, $0, MapTrainerHouse1FSignpost2Script
+	signpost 0, 5, SIGNPOST_READ, MapTrainerHouse1FSignpost0Script
+	signpost 0, 7, SIGNPOST_READ, MapTrainerHouse1FSignpost1Script
+	signpost 10, 7, SIGNPOST_READ, MapTrainerHouse1FSignpost2Script
 
 	; people-events
 	db 5
-	person_event SPRITE_RECEPTIONIST, 15, 4, $9, $0, 255, 255, $a0, 0, ReceptionistScript_0x9af67, -1
-	person_event SPRITE_COOLTRAINER_M, 15, 11, $7, $0, 255, 255, $0, 0, CooltrainerMScript_0x9af6a, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 10, $6, $2, 255, 255, $80, 0, CooltrainerFScript_0x9af6d, -1
-	person_event SPRITE_YOUNGSTER, 12, 8, $5, $2, 255, 255, $80, 0, YoungsterScript_0x9af70, -1
-	person_event SPRITE_GENTLEMAN, 8, 6, $9, $0, 255, 255, $0, 0, GentlemanScript_0x9af73, -1
+	person_event SPRITE_RECEPTIONIST, 15, 4, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ReceptionistScript_0x9af67, -1
+	person_event SPRITE_COOLTRAINER_M, 15, 11, UP << 2 | $3, $0, -1, -1, $0, 0, CooltrainerMScript_0x9af6a, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 10, UP << 2 | $2, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerFScript_0x9af6d, -1
+	person_event SPRITE_YOUNGSTER, 12, 8, UP << 2 | $1, $2, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x9af70, -1
+	person_event SPRITE_GENTLEMAN, 8, 6, LEFT << 2 | $1, $0, -1, -1, $0, 0, GentlemanScript_0x9af73, -1
--- a/maps/TrainerHouseB1F.asm
+++ b/maps/TrainerHouseB1F.asm
@@ -184,5 +184,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_RECEPTIONIST, 5, 11, $6, $0, 255, 255, $a0, 0, ObjectEvent, -1
-	person_event SPRITE_CHRIS, 15, 10, $8, $0, 255, 255, $80, 0, ObjectEvent, -1
+	person_event SPRITE_RECEPTIONIST, 5, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, ObjectEvent, -1
+	person_event SPRITE_CHRIS, 15, 10, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, ObjectEvent, -1
--- a/maps/Underground.asm
+++ b/maps/Underground.asm
@@ -29,8 +29,8 @@
 
 	; signposts
 	db 2
-	signpost 9, 3, $7, MapUndergroundSignpostItem0
-	signpost 19, 1, $7, MapUndergroundSignpostItem1
+	signpost 9, 3, SIGNPOST_ITEMIFSET, MapUndergroundSignpostItem0
+	signpost 19, 1, SIGNPOST_ITEMIFSET, MapUndergroundSignpostItem1
 
 	; people-events
 	db 0
--- a/maps/UndergroundPathSwitchRoomEntrances.asm
+++ b/maps/UndergroundPathSwitchRoomEntrances.asm
@@ -194,7 +194,7 @@
 
 TrainerGruntM25:
 	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_20
+	dw EVENT_BEAT_ROCKET_GRUNTM_25
 
 	; trainer group && trainer id
 	db GRUNTM, 25
@@ -275,7 +275,7 @@
 
 TrainerGruntM13:
 	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_12
+	dw EVENT_BEAT_ROCKET_GRUNTM_13
 
 	; trainer group && trainer id
 	db GRUNTM, 13
@@ -1012,23 +1012,23 @@
 
 	; signposts
 	db 6
-	signpost 1, 16, $0, MapUndergroundPathSwitchRoomEntrancesSignpost0Script
-	signpost 1, 10, $0, MapUndergroundPathSwitchRoomEntrancesSignpost1Script
-	signpost 1, 2, $0, MapUndergroundPathSwitchRoomEntrancesSignpost2Script
-	signpost 11, 20, $0, MapUndergroundPathSwitchRoomEntrancesSignpost3Script
-	signpost 9, 8, $7, MapUndergroundPathSwitchRoomEntrancesSignpostItem4
-	signpost 8, 1, $7, MapUndergroundPathSwitchRoomEntrancesSignpostItem5
+	signpost 1, 16, SIGNPOST_READ, MapUndergroundPathSwitchRoomEntrancesSignpost0Script
+	signpost 1, 10, SIGNPOST_READ, MapUndergroundPathSwitchRoomEntrancesSignpost1Script
+	signpost 1, 2, SIGNPOST_READ, MapUndergroundPathSwitchRoomEntrancesSignpost2Script
+	signpost 11, 20, SIGNPOST_READ, MapUndergroundPathSwitchRoomEntrancesSignpost3Script
+	signpost 9, 8, SIGNPOST_ITEMIFSET, MapUndergroundPathSwitchRoomEntrancesSignpostItem4
+	signpost 8, 1, SIGNPOST_ITEMIFSET, MapUndergroundPathSwitchRoomEntrancesSignpostItem5
 
 	; people-events
 	db 11
-	person_event SPRITE_PHARMACIST, 16, 13, $9, $0, 255, 255, $a2, 2, TrainerBurglarDuncan, EVENT_6CE
-	person_event SPRITE_PHARMACIST, 12, 8, $8, $0, 255, 255, $a2, 2, TrainerBurglarEddie, EVENT_6CE
-	person_event SPRITE_ROCKET, 6, 21, $6, $0, 255, 255, $2, 3, TrainerGruntM13, EVENT_6CE
-	person_event SPRITE_ROCKET, 6, 15, $6, $0, 255, 255, $2, 3, TrainerGruntM11, EVENT_6CE
-	person_event SPRITE_ROCKET, 6, 7, $6, $0, 255, 255, $2, 3, TrainerGruntM25, EVENT_6CE
-	person_event SPRITE_ROCKET_GIRL, 16, 23, $6, $0, 255, 255, $82, 1, TrainerGruntF3, EVENT_6CE
-	person_event SPRITE_TEACHER, 31, 7, $6, $0, 255, 255, $0, 0, TeacherScript_0x7ca7d, -1
-	person_event SPRITE_SUPER_NERD, 31, 23, $6, $0, 255, 255, $0, 0, SuperNerdScript_0x7ca7a, -1
-	person_event SPRITE_POKE_BALL, 16, 5, $1, $0, 255, 255, $1, 0, ItemFragment_0x7ce7d, EVENT_673
-	person_event SPRITE_POKE_BALL, 13, 18, $1, $0, 255, 255, $1, 0, ItemFragment_0x7ce7f, EVENT_674
-	person_event SPRITE_SILVER, 7, 27, $6, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6C1
+	person_event SPRITE_PHARMACIST, 16, 13, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerBurglarDuncan, EVENT_6CE
+	person_event SPRITE_PHARMACIST, 12, 8, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $82, 2, TrainerBurglarEddie, EVENT_6CE
+	person_event SPRITE_ROCKET, 6, 21, UP << 2 | $2, $0, -1, -1, $2, 3, TrainerGruntM13, EVENT_6CE
+	person_event SPRITE_ROCKET, 6, 15, UP << 2 | $2, $0, -1, -1, $2, 3, TrainerGruntM11, EVENT_6CE
+	person_event SPRITE_ROCKET, 6, 7, UP << 2 | $2, $0, -1, -1, $2, 3, TrainerGruntM25, EVENT_6CE
+	person_event SPRITE_ROCKET_GIRL, 16, 23, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerGruntF3, EVENT_6CE
+	person_event SPRITE_TEACHER, 31, 7, UP << 2 | $2, $0, -1, -1, $0, 0, TeacherScript_0x7ca7d, -1
+	person_event SPRITE_SUPER_NERD, 31, 23, UP << 2 | $2, $0, -1, -1, $0, 0, SuperNerdScript_0x7ca7a, -1
+	person_event SPRITE_POKE_BALL, 16, 5, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7ce7d, EVENT_673
+	person_event SPRITE_POKE_BALL, 13, 18, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7ce7f, EVENT_674
+	person_event SPRITE_SILVER, 7, 27, UP << 2 | $2, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6C1
--- a/maps/UndergroundWarehouse.asm
+++ b/maps/UndergroundWarehouse.asm
@@ -31,7 +31,7 @@
 
 TrainerGruntM24:
 	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_19
+	dw EVENT_BEAT_ROCKET_GRUNTM_24
 
 	; trainer group && trainer id
 	db GRUNTM, 24
@@ -58,7 +58,7 @@
 
 TrainerGruntM14:
 	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_13
+	dw EVENT_BEAT_ROCKET_GRUNTM_14
 
 	; trainer group && trainer id
 	db GRUNTM, 14
@@ -85,7 +85,7 @@
 
 TrainerGruntM15:
 	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_14
+	dw EVENT_BEAT_ROCKET_GRUNTM_15
 
 	; trainer group && trainer id
 	db GRUNTM, 15
@@ -270,10 +270,10 @@
 
 	; people-events
 	db 7
-	person_event SPRITE_ROCKET, 12, 13, $7, $0, 255, 255, $2, 3, TrainerGruntM24, EVENT_6CE
-	person_event SPRITE_ROCKET, 19, 12, $7, $0, 255, 255, $2, 3, TrainerGruntM14, EVENT_6CE
-	person_event SPRITE_ROCKET, 7, 18, $9, $0, 255, 255, $2, 4, TrainerGruntM15, EVENT_6CE
-	person_event SPRITE_GENTLEMAN, 12, 16, $3, $0, 255, 255, $0, 0, GentlemanScript_0x7d9bf, EVENT_6CE
-	person_event SPRITE_POKE_BALL, 19, 22, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d9e4, EVENT_679
-	person_event SPRITE_POKE_BALL, 13, 17, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d9e6, EVENT_67A
-	person_event SPRITE_POKE_BALL, 5, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x7d9e8, EVENT_655
+	person_event SPRITE_ROCKET, 12, 13, UP << 2 | $3, $0, -1, -1, $2, 3, TrainerGruntM24, EVENT_6CE
+	person_event SPRITE_ROCKET, 19, 12, UP << 2 | $3, $0, -1, -1, $2, 3, TrainerGruntM14, EVENT_6CE
+	person_event SPRITE_ROCKET, 7, 18, LEFT << 2 | $1, $0, -1, -1, $2, 4, TrainerGruntM15, EVENT_6CE
+	person_event SPRITE_GENTLEMAN, 12, 16, DOWN << 2 | $3, $0, -1, -1, $0, 0, GentlemanScript_0x7d9bf, EVENT_6CE
+	person_event SPRITE_POKE_BALL, 19, 22, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d9e4, EVENT_679
+	person_event SPRITE_POKE_BALL, 13, 17, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d9e6, EVENT_67A
+	person_event SPRITE_POKE_BALL, 5, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7d9e8, EVENT_655
--- a/maps/UnionCave1F.asm
+++ b/maps/UnionCave1F.asm
@@ -287,12 +287,12 @@
 
 	; people-events
 	db 9
-	person_event SPRITE_POKEFAN_M, 10, 7, $9, $0, 255, 255, $b2, 2, TrainerHikerDaniel, -1
-	person_event SPRITE_SUPER_NERD, 25, 8, $a, $0, 255, 255, $92, 3, TrainerPokemaniacLarry, -1
-	person_event SPRITE_POKEFAN_M, 12, 15, $a, $0, 255, 255, $b2, 1, TrainerHikerRussell, -1
-	person_event SPRITE_FISHER, 31, 19, $8, $0, 255, 255, $82, 4, TrainerFirebreatherRay, -1
-	person_event SPRITE_FISHER, 23, 18, $7, $0, 255, 255, $82, 4, TrainerFirebreatherBill, -1
-	person_event SPRITE_POKE_BALL, 25, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x59c00, EVENT_65A
-	person_event SPRITE_POKE_BALL, 6, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x59c02, EVENT_65B
-	person_event SPRITE_POKE_BALL, 21, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x59c04, EVENT_65C
-	person_event SPRITE_POKE_BALL, 37, 16, $1, $0, 255, 255, $1, 0, ItemFragment_0x59c06, EVENT_65D
+	person_event SPRITE_POKEFAN_M, 10, 7, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerHikerDaniel, -1
+	person_event SPRITE_SUPER_NERD, 25, 8, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacLarry, -1
+	person_event SPRITE_POKEFAN_M, 12, 15, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 1, TrainerHikerRussell, -1
+	person_event SPRITE_FISHER, 31, 19, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerFirebreatherRay, -1
+	person_event SPRITE_FISHER, 23, 18, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 4, TrainerFirebreatherBill, -1
+	person_event SPRITE_POKE_BALL, 25, 21, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x59c00, EVENT_65A
+	person_event SPRITE_POKE_BALL, 6, 8, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x59c02, EVENT_65B
+	person_event SPRITE_POKE_BALL, 21, 8, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x59c04, EVENT_65C
+	person_event SPRITE_POKE_BALL, 37, 16, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x59c06, EVENT_65D
--- a/maps/UnionCaveB1F.asm
+++ b/maps/UnionCaveB1F.asm
@@ -227,10 +227,10 @@
 
 	; people-events
 	db 7
-	person_event SPRITE_POKEFAN_M, 8, 13, $a, $0, 255, 255, $b2, 3, TrainerHikerPhillip, -1
-	person_event SPRITE_POKEFAN_M, 11, 20, $6, $0, 255, 255, $b2, 3, TrainerHikerLeonard, -1
-	person_event SPRITE_SUPER_NERD, 36, 9, $8, $0, 255, 255, $92, 3, TrainerPokemaniacAndrew, -1
-	person_event SPRITE_SUPER_NERD, 34, 21, $8, $0, 255, 255, $92, 3, TrainerPokemaniacCalvin, -1
-	person_event SPRITE_POKE_BALL, 20, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x5a016, EVENT_65E
-	person_event SPRITE_BOULDER, 14, 11, $19, $0, 255, 255, $0, 0, UnionCaveB1FBoulder, -1
-	person_event SPRITE_POKE_BALL, 27, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x5a018, EVENT_65F
+	person_event SPRITE_POKEFAN_M, 8, 13, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerHikerPhillip, -1
+	person_event SPRITE_POKEFAN_M, 11, 20, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerHikerLeonard, -1
+	person_event SPRITE_SUPER_NERD, 36, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacAndrew, -1
+	person_event SPRITE_SUPER_NERD, 34, 21, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacCalvin, -1
+	person_event SPRITE_POKE_BALL, 20, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5a016, EVENT_65E
+	person_event SPRITE_BOULDER, 14, 11, LEFT << 2 | $11, $0, -1, -1, $0, 0, UnionCaveB1FBoulder, -1
+	person_event SPRITE_POKE_BALL, 27, 21, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5a018, EVENT_65F
--- a/maps/UnionCaveB2F.asm
+++ b/maps/UnionCaveB2F.asm
@@ -200,9 +200,9 @@
 
 	; people-events
 	db 6
-	person_event SPRITE_ROCKER, 23, 19, $6, $0, 255, 255, $82, 3, TrainerCooltrainermNick, -1
-	person_event SPRITE_COOLTRAINER_F, 17, 9, $a, $0, 255, 255, $82, 1, TrainerCooltrainerfGwen, -1
-	person_event SPRITE_COOLTRAINER_F, 34, 7, $7, $0, 255, 255, $82, 3, TrainerCooltrainerfEmma, -1
-	person_event SPRITE_POKE_BALL, 6, 20, $1, $0, 255, 255, $1, 0, ItemFragment_0x5a36a, EVENT_660
-	person_event SPRITE_POKE_BALL, 23, 16, $1, $0, 255, 255, $1, 0, ItemFragment_0x5a36c, EVENT_661
-	person_event SPRITE_SURF, 35, 15, $24, $11, 255, 255, $90, 0, SurfScript_0x5a31f, EVENT_760
+	person_event SPRITE_ROCKER, 23, 19, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainermNick, -1
+	person_event SPRITE_COOLTRAINER_F, 17, 9, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $82, 1, TrainerCooltrainerfGwen, -1
+	person_event SPRITE_COOLTRAINER_F, 34, 7, UP << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerCooltrainerfEmma, -1
+	person_event SPRITE_POKE_BALL, 6, 20, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5a36a, EVENT_660
+	person_event SPRITE_POKE_BALL, 23, 16, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x5a36c, EVENT_661
+	person_event SPRITE_SURF, 35, 15, UP << 2 | $20, $11, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SurfScript_0x5a31f, EVENT_760
--- a/maps/VermilionCity.asm
+++ b/maps/VermilionCity.asm
@@ -284,20 +284,20 @@
 
 	; signposts
 	db 8
-	signpost 3, 25, $0, VermilionCitySign
-	signpost 19, 5, $0, VermilionGymSign
-	signpost 13, 5, $0, PokemonFanClubSign
-	signpost 9, 33, $0, VermilionCityDiglettsCaveSign
-	signpost 15, 27, $0, VermilionCityPortSign
-	signpost 5, 10, $0, VermilionCityPokeCenterSign
-	signpost 13, 22, $0, VermilionCityMartSign
-	signpost 19, 12, $7, MapVermilionCitySignpostItem7
+	signpost 3, 25, SIGNPOST_READ, VermilionCitySign
+	signpost 19, 5, SIGNPOST_READ, VermilionGymSign
+	signpost 13, 5, SIGNPOST_READ, PokemonFanClubSign
+	signpost 9, 33, SIGNPOST_READ, VermilionCityDiglettsCaveSign
+	signpost 15, 27, SIGNPOST_READ, VermilionCityPortSign
+	signpost 5, 10, SIGNPOST_READ, VermilionCityPokeCenterSign
+	signpost 13, 22, SIGNPOST_READ, VermilionCityMartSign
+	signpost 19, 12, SIGNPOST_ITEMIFSET, MapVermilionCitySignpostItem7
 
 	; people-events
 	db 6
-	person_event SPRITE_TEACHER, 13, 22, $2, $11, 255, 255, $0, 0, TeacherScript_0x1aa983, -1
-	person_event SPRITE_GRAMPS, 10, 27, $9, $0, 255, 255, $0, 0, GrampsScript_0x1aa986, -1
-	person_event SPRITE_MACHOP, 11, 30, $16, $0, 255, 255, $90, 0, VermilionMachop, -1
-	person_event SPRITE_SUPER_NERD, 20, 18, $2, $11, 255, 255, $a0, 0, SuperNerdScript_0x1aa99b, -1
-	person_event SPRITE_BIG_SNORLAX, 12, 38, $15, $0, 255, 255, $0, 0, VermilionSnorlax, EVENT_770
-	person_event SPRITE_POKEFAN_M, 16, 35, $6, $0, 255, 255, $80, 0, VermilionGymBadgeGuy, -1
+	person_event SPRITE_TEACHER, 13, 22, DOWN << 2 | $2, $11, -1, -1, $0, 0, TeacherScript_0x1aa983, -1
+	person_event SPRITE_GRAMPS, 10, 27, LEFT << 2 | $1, $0, -1, -1, $0, 0, GrampsScript_0x1aa986, -1
+	person_event SPRITE_MACHOP, 11, 30, UP << 2 | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, VermilionMachop, -1
+	person_event SPRITE_SUPER_NERD, 20, 18, DOWN << 2 | $2, $11, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x1aa99b, -1
+	person_event SPRITE_BIG_SNORLAX, 12, 38, UP << 2 | $11, $0, -1, -1, $0, 0, VermilionSnorlax, EVENT_770
+	person_event SPRITE_POKEFAN_M, 16, 35, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, VermilionGymBadgeGuy, -1
--- a/maps/VermilionGym.asm
+++ b/maps/VermilionGym.asm
@@ -315,28 +315,28 @@
 
 	; signposts
 	db 17
-	signpost 7, 1, $0, MapVermilionGymSignpost14Script
-	signpost 7, 3, $0, MapVermilionGymSignpost14Script
-	signpost 7, 5, $0, MapVermilionGymSignpost14Script
-	signpost 7, 7, $0, MapVermilionGymSignpost14Script
-	signpost 7, 9, $0, MapVermilionGymSignpost14Script
-	signpost 9, 1, $0, MapVermilionGymSignpost14Script
-	signpost 9, 3, $0, MapVermilionGymSignpost14Script
-	signpost 9, 5, $0, MapVermilionGymSignpost14Script
-	signpost 9, 7, $0, MapVermilionGymSignpost14Script
-	signpost 9, 9, $0, MapVermilionGymSignpost14Script
-	signpost 11, 1, $0, MapVermilionGymSignpost14Script
-	signpost 11, 3, $0, MapVermilionGymSignpost14Script
-	signpost 11, 5, $0, MapVermilionGymSignpost14Script
-	signpost 11, 7, $0, MapVermilionGymSignpost14Script
-	signpost 11, 9, $0, MapVermilionGymSignpost14Script
-	signpost 15, 3, $0, VermilionGymStatue
-	signpost 15, 6, $0, VermilionGymStatue
+	signpost 7, 1, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 7, 3, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 7, 5, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 7, 7, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 7, 9, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 9, 1, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 9, 3, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 9, 5, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 9, 7, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 9, 9, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 11, 1, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 11, 3, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 11, 5, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 11, 7, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 11, 9, SIGNPOST_READ, MapVermilionGymSignpost14Script
+	signpost 15, 3, SIGNPOST_READ, VermilionGymStatue
+	signpost 15, 6, SIGNPOST_READ, VermilionGymStatue
 
 	; people-events
 	db 5
-	person_event SPRITE_SURGE, 6, 9, $6, $0, 255, 255, $b0, 0, SurgeScript_0x1920a5, -1
-	person_event SPRITE_GENTLEMAN, 12, 12, $8, $0, 255, 255, $92, 4, TrainerGentlemanGregory, -1
-	person_event SPRITE_ROCKER, 11, 8, $6, $3, 255, 255, $82, 3, TrainerGuitaristVincent, -1
-	person_event SPRITE_SUPER_NERD, 14, 4, $9, $0, 255, 255, $92, 4, TrainerJugglerHorton, -1
-	person_event SPRITE_GYM_GUY, 19, 11, $6, $0, 255, 255, $90, 1, VermilionGymGuyScript, -1
+	person_event SPRITE_SURGE, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, SurgeScript_0x1920a5, -1
+	person_event SPRITE_GENTLEMAN, 12, 12, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerGentlemanGregory, -1
+	person_event SPRITE_ROCKER, 11, 8, UP << 2 | $2, $3, -1, -1, (PAL_OW_RED << 4) | $82, 3, TrainerGuitaristVincent, -1
+	person_event SPRITE_SUPER_NERD, 14, 4, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 4, TrainerJugglerHorton, -1
+	person_event SPRITE_GYM_GUY, 19, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 1, VermilionGymGuyScript, -1
--- a/maps/VermilionHouseDiglettsCaveSpeechHouse.asm
+++ b/maps/VermilionHouseDiglettsCaveSpeechHouse.asm
@@ -34,4 +34,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_GENTLEMAN, 7, 5, $4, $10, 255, 255, $80, 0, GentlemanScript_0x192031, -1
+	person_event SPRITE_GENTLEMAN, 7, 5, UP << 2 | $0, $10, -1, -1, (PAL_OW_RED << 4) | $80, 0, GentlemanScript_0x192031, -1
--- a/maps/VermilionHouseFishingSpeechHouse.asm
+++ b/maps/VermilionHouseFishingSpeechHouse.asm
@@ -61,8 +61,8 @@
 
 	; signposts
 	db 1
-	signpost 0, 3, $0, FishingDudesHousePhoto
+	signpost 0, 3, SIGNPOST_READ, FishingDudesHousePhoto
 
 	; people-events
 	db 1
-	person_event SPRITE_FISHING_GURU, 8, 6, $6, $0, 255, 255, $a0, 0, FishingDude, -1
+	person_event SPRITE_FISHING_GURU, 8, 6, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FishingDude, -1
--- a/maps/VermilionMagnetTrainSpeechHouse.asm
+++ b/maps/VermilionMagnetTrainSpeechHouse.asm
@@ -43,10 +43,10 @@
 
 	; signposts
 	db 2
-	signpost 1, 0, $0, VermilionMagnetTrainSpeechHouseBookshelf
-	signpost 1, 1, $0, VermilionMagnetTrainSpeechHouseBookshelf
+	signpost 1, 0, SIGNPOST_READ, VermilionMagnetTrainSpeechHouseBookshelf
+	signpost 1, 1, SIGNPOST_READ, VermilionMagnetTrainSpeechHouseBookshelf
 
 	; people-events
 	db 2
-	person_event SPRITE_POKEFAN_F, 7, 6, $8, $0, 255, 255, $0, 0, PokefanFScript_0x191eb7, -1
-	person_event SPRITE_YOUNGSTER, 7, 4, $a, $0, 255, 255, $a0, 0, YoungsterScript_0x191eba, -1
+	person_event SPRITE_POKEFAN_F, 7, 6, LEFT << 2 | $0, $0, -1, -1, $0, 0, PokefanFScript_0x191eb7, -1
+	person_event SPRITE_YOUNGSTER, 7, 4, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x191eba, -1
--- a/maps/VermilionMart.asm
+++ b/maps/VermilionMart.asm
@@ -48,6 +48,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x191f7e, -1
-	person_event SPRITE_SUPER_NERD, 6, 9, $6, $0, 255, 255, $80, 0, SuperNerdScript_0x191f85, -1
-	person_event SPRITE_BUENA, 10, 12, $5, $1, 255, 255, $a0, 0, BuenaScript_0x191f88, -1
+	person_event SPRITE_CLERK, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x191f7e, -1
+	person_event SPRITE_SUPER_NERD, 6, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x191f85, -1
+	person_event SPRITE_BUENA, 10, 12, UP << 2 | $1, $1, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BuenaScript_0x191f88, -1
--- a/maps/VermilionPokeCenter1F.asm
+++ b/maps/VermilionPokeCenter1F.asm
@@ -88,7 +88,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x191603, -1
-	person_event SPRITE_FISHING_GURU, 6, 11, $6, $0, 255, 255, $80, 0, FishingGuruScript_0x191606, -1
-	person_event SPRITE_SAILOR, 9, 10, $4, $10, 255, 255, $90, 0, SailorScript_0x19161a, -1
-	person_event SPRITE_BUG_CATCHER, 9, 5, $3, $0, 255, 255, $a0, 0, BugCatcherScript_0x19161d, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x191603, -1
+	person_event SPRITE_FISHING_GURU, 6, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FishingGuruScript_0x191606, -1
+	person_event SPRITE_SAILOR, 9, 10, UP << 2 | $0, $10, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SailorScript_0x19161a, -1
+	person_event SPRITE_BUG_CATCHER, 9, 5, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BugCatcherScript_0x19161d, -1
--- a/maps/VermilionPort.asm
+++ b/maps/VermilionPort.asm
@@ -32,7 +32,7 @@
 	setevent EVENT_739
 	clearevent EVENT_733
 	setevent EVENT_030
-	setevent EVENT_000
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
 	blackoutmod GROUP_VERMILION_CITY, MAP_VERMILION_CITY
 	end
 
@@ -39,7 +39,7 @@
 SailorScript_0x74dc4:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x74e1a
 	writetext UnknownText_0x74f06
 	closetext
@@ -79,9 +79,9 @@
 
 UnknownScript_0x74e20:
 	spriteface $3, RIGHT
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x74e86
-	checkevent EVENT_001
+	checkevent EVENT_CHRIS2_IN_CABLE_CLUB
 	iftrue UnknownScript_0x74e86
 	spriteface $0, LEFT
 	loadfont
@@ -101,7 +101,7 @@
 	writetext UnknownText_0x74fc2
 	closetext
 	loadmovesprites
-	setevent EVENT_001
+	setevent EVENT_CHRIS2_IN_CABLE_CLUB
 	applymovement $0, MovementData_0x74ef8
 	jump SailorScript_0x74dc4
 
@@ -145,7 +145,7 @@
 SailorScript_0x74e97:
 	faceplayer
 	loadfont
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x74e1a
 	checkcode VAR_WEEKDAY
 	if_equal MONDAY, UnknownScript_0x74eda
@@ -163,7 +163,7 @@
 	writetext UnknownText_0x74fc2
 	closetext
 	loadmovesprites
-	setevent EVENT_001
+	setevent EVENT_CHRIS2_IN_CABLE_CLUB
 	applymovement $0, MovementData_0x74efe
 	jump SailorScript_0x74dc4
 
@@ -314,10 +314,10 @@
 
 	; signposts
 	db 1
-	signpost 13, 16, $7, MapVermilionPortSignpostItem0
+	signpost 13, 16, SIGNPOST_ITEMIFSET, MapVermilionPortSignpostItem0
 
 	; people-events
 	db 3
-	person_event SPRITE_SAILOR, 21, 11, $7, $0, 255, 255, $0, 0, SailorScript_0x74dc4, EVENT_72B
-	person_event SPRITE_SAILOR, 15, 10, $9, $0, 255, 255, $0, 0, SailorScript_0x74e97, -1
-	person_event SPRITE_SUPER_NERD, 15, 15, $5, $2, 255, 255, $0, 0, SuperNerdScript_0x74ee6, -1
+	person_event SPRITE_SAILOR, 21, 11, UP << 2 | $3, $0, -1, -1, $0, 0, SailorScript_0x74dc4, EVENT_72B
+	person_event SPRITE_SAILOR, 15, 10, LEFT << 2 | $1, $0, -1, -1, $0, 0, SailorScript_0x74e97, -1
+	person_event SPRITE_SUPER_NERD, 15, 15, UP << 2 | $1, $2, -1, -1, $0, 0, SuperNerdScript_0x74ee6, -1
--- a/maps/VermilionPortPassage.asm
+++ b/maps/VermilionPortPassage.asm
@@ -35,4 +35,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_TEACHER, 5, 21, $8, $0, 255, 255, $0, 0, TeacherScript_0x7701a, -1
+	person_event SPRITE_TEACHER, 5, 21, LEFT << 2 | $0, $0, -1, -1, $0, 0, TeacherScript_0x7701a, -1
--- a/maps/VictoryRoad.asm
+++ b/maps/VictoryRoad.asm
@@ -260,14 +260,14 @@
 
 	; signposts
 	db 2
-	signpost 29, 3, $7, MapVictoryRoadSignpostItem0
-	signpost 65, 3, $7, MapVictoryRoadSignpostItem1
+	signpost 29, 3, SIGNPOST_ITEMIFSET, MapVictoryRoadSignpostItem0
+	signpost 65, 3, SIGNPOST_ITEMIFSET, MapVictoryRoadSignpostItem1
 
 	; people-events
 	db 6
-	person_event SPRITE_SILVER, 17, 22, $7, $0, 255, 255, $0, 0, ObjectEvent, EVENT_6C2
-	person_event SPRITE_POKE_BALL, 32, 7, $1, $0, 255, 255, $1, 0, ItemFragment_0x74529, EVENT_6A3
-	person_event SPRITE_POKE_BALL, 52, 16, $1, $0, 255, 255, $1, 0, ItemFragment_0x7452b, EVENT_6A4
-	person_event SPRITE_POKE_BALL, 33, 22, $1, $0, 255, 255, $1, 0, ItemFragment_0x7452d, EVENT_6A5
-	person_event SPRITE_POKE_BALL, 52, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x7452f, EVENT_6A6
-	person_event SPRITE_POKE_BALL, 42, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x74531, EVENT_6A7
+	person_event SPRITE_SILVER, 17, 22, UP << 2 | $3, $0, -1, -1, $0, 0, ObjectEvent, EVENT_6C2
+	person_event SPRITE_POKE_BALL, 32, 7, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x74529, EVENT_6A3
+	person_event SPRITE_POKE_BALL, 52, 16, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7452b, EVENT_6A4
+	person_event SPRITE_POKE_BALL, 33, 22, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7452d, EVENT_6A5
+	person_event SPRITE_POKE_BALL, 52, 19, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7452f, EVENT_6A6
+	person_event SPRITE_POKE_BALL, 42, 11, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x74531, EVENT_6A7
--- a/maps/VictoryRoadGate.asm
+++ b/maps/VictoryRoadGate.asm
@@ -118,6 +118,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_OFFICER, 15, 12, $9, $0, 255, 255, $0, 0, OfficerScript_0x9ba03, -1
-	person_event SPRITE_BLACK_BELT, 9, 11, $9, $0, 255, 255, $0, 0, BlackBeltScript_0x9ba21, EVENT_OPENED_MT_SILVER
-	person_event SPRITE_BLACK_BELT, 9, 16, $8, $0, 255, 255, $0, 0, BlackBeltScript_0x9ba24, EVENT_FOUGHT_SNORLAX
+	person_event SPRITE_OFFICER, 15, 12, LEFT << 2 | $1, $0, -1, -1, $0, 0, OfficerScript_0x9ba03, -1
+	person_event SPRITE_BLACK_BELT, 9, 11, LEFT << 2 | $1, $0, -1, -1, $0, 0, BlackBeltScript_0x9ba21, EVENT_OPENED_MT_SILVER
+	person_event SPRITE_BLACK_BELT, 9, 16, LEFT << 2 | $0, $0, -1, -1, $0, 0, BlackBeltScript_0x9ba24, EVENT_FOUGHT_SNORLAX
--- a/maps/VioletCity.asm
+++ b/maps/VioletCity.asm
@@ -292,21 +292,21 @@
 
 	; signposts
 	db 7
-	signpost 20, 24, $0, VioletCitySign
-	signpost 17, 15, $0, VioletGymSign
-	signpost 8, 24, $0, SproutTowerSign
-	signpost 17, 27, $0, EarlsPokemonAcademySign
-	signpost 25, 32, $0, VioletCityPokeCenterSign
-	signpost 17, 10, $0, VioletCityMartSign
-	signpost 14, 37, $7, MapVioletCitySignpostItem6
+	signpost 20, 24, SIGNPOST_READ, VioletCitySign
+	signpost 17, 15, SIGNPOST_READ, VioletGymSign
+	signpost 8, 24, SIGNPOST_READ, SproutTowerSign
+	signpost 17, 27, SIGNPOST_READ, EarlsPokemonAcademySign
+	signpost 25, 32, SIGNPOST_READ, VioletCityPokeCenterSign
+	signpost 17, 10, SIGNPOST_READ, VioletCityMartSign
+	signpost 14, 37, SIGNPOST_ITEMIFSET, MapVioletCitySignpostItem6
 
 	; people-events
 	db 8
-	person_event SPRITE_FISHER, 20, 17, $3, $0, 255, 255, $a0, 0, FisherScript_0x1a83bb, EVENT_6CA
-	person_event SPRITE_LASS, 32, 32, $2, $22, 255, 255, $a0, 0, LassScript_0x1a8403, -1
-	person_event SPRITE_SUPER_NERD, 18, 28, $2, $21, 255, 255, $80, 0, SuperNerdScript_0x1a8406, -1
-	person_event SPRITE_GRAMPS, 24, 21, $5, $1, 255, 255, $0, 0, GrampsScript_0x1a8409, -1
-	person_event SPRITE_YOUNGSTER, 22, 9, $3, $0, 255, 255, $a0, 0, YoungsterScript_0x1a840c, -1
-	person_event SPRITE_FRUIT_TREE, 33, 18, $1, $0, 255, 255, $0, 0, FruitTreeScript_0x1a8425, -1
-	person_event SPRITE_POKE_BALL, 5, 8, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a8421, EVENT_643
-	person_event SPRITE_POKE_BALL, 9, 39, $1, $0, 255, 255, $1, 0, ItemFragment_0x1a8423, EVENT_644
+	person_event SPRITE_FISHER, 20, 17, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, FisherScript_0x1a83bb, EVENT_6CA
+	person_event SPRITE_LASS, 32, 32, DOWN << 2 | $2, $22, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x1a8403, -1
+	person_event SPRITE_SUPER_NERD, 18, 28, DOWN << 2 | $2, $21, -1, -1, (PAL_OW_RED << 4) | $80, 0, SuperNerdScript_0x1a8406, -1
+	person_event SPRITE_GRAMPS, 24, 21, UP << 2 | $1, $1, -1, -1, $0, 0, GrampsScript_0x1a8409, -1
+	person_event SPRITE_YOUNGSTER, 22, 9, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x1a840c, -1
+	person_event SPRITE_FRUIT_TREE, 33, 18, DOWN << 2 | $1, $0, -1, -1, $0, 0, FruitTreeScript_0x1a8425, -1
+	person_event SPRITE_POKE_BALL, 5, 8, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a8421, EVENT_643
+	person_event SPRITE_POKE_BALL, 9, 39, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x1a8423, EVENT_644
--- a/maps/VioletGym.asm
+++ b/maps/VioletGym.asm
@@ -321,12 +321,12 @@
 
 	; signposts
 	db 2
-	signpost 13, 3, $0, VioletGymStatue
-	signpost 13, 6, $0, VioletGymStatue
+	signpost 13, 3, SIGNPOST_READ, VioletGymStatue
+	signpost 13, 6, SIGNPOST_READ, VioletGymStatue
 
 	; people-events
 	db 4
-	person_event SPRITE_FALKNER, 5, 9, $6, $0, 255, 255, $90, 0, FalknerScript_0x683c2, -1
-	person_event SPRITE_YOUNGSTER, 10, 11, $8, $2, 255, 255, $92, 3, TrainerBird_keeperRod, -1
-	person_event SPRITE_YOUNGSTER, 14, 6, $9, $2, 255, 255, $92, 3, TrainerBird_keeperAbe, -1
-	person_event SPRITE_GYM_GUY, 17, 11, $6, $0, 255, 255, $80, 0, VioletGymGuyScript, -1
+	person_event SPRITE_FALKNER, 5, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, FalknerScript_0x683c2, -1
+	person_event SPRITE_YOUNGSTER, 10, 11, LEFT << 2 | $0, $2, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperRod, -1
+	person_event SPRITE_YOUNGSTER, 14, 6, LEFT << 2 | $1, $2, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerBird_keeperAbe, -1
+	person_event SPRITE_GYM_GUY, 17, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, VioletGymGuyScript, -1
--- a/maps/VioletMart.asm
+++ b/maps/VioletMart.asm
@@ -60,6 +60,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x68295, -1
-	person_event SPRITE_GRANNY, 10, 11, $5, $1, 255, 255, $0, 0, GrannyScript_0x6829c, -1
-	person_event SPRITE_COOLTRAINER_M, 6, 9, $3, $0, 255, 255, $80, 0, CooltrainerMScript_0x6829f, -1
+	person_event SPRITE_CLERK, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x68295, -1
+	person_event SPRITE_GRANNY, 10, 11, UP << 2 | $1, $1, -1, -1, $0, 0, GrannyScript_0x6829c, -1
+	person_event SPRITE_COOLTRAINER_M, 6, 9, DOWN << 2 | $3, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x6829f, -1
--- a/maps/VioletNicknameSpeechHouse.asm
+++ b/maps/VioletNicknameSpeechHouse.asm
@@ -56,6 +56,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_TEACHER, 7, 6, $9, $0, 255, 255, $0, 0, TeacherScript_0x693e9, -1
-	person_event SPRITE_LASS, 8, 10, $7, $0, 255, 255, $a0, 0, LassScript_0x693ec, -1
-	person_event SPRITE_BIRD, 6, 9, $5, $1, 255, 255, $b0, 0, BirdScript_0x693ef, -1
+	person_event SPRITE_TEACHER, 7, 6, LEFT << 2 | $1, $0, -1, -1, $0, 0, TeacherScript_0x693e9, -1
+	person_event SPRITE_LASS, 8, 10, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x693ec, -1
+	person_event SPRITE_BIRD, 6, 9, UP << 2 | $1, $1, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, BirdScript_0x693ef, -1
--- a/maps/VioletOnixTradeHouse.asm
+++ b/maps/VioletOnixTradeHouse.asm
@@ -45,5 +45,5 @@
 
 	; people-events
 	db 2
-	person_event SPRITE_POKEFAN_M, 7, 6, $3, $0, 255, 255, $0, 0, PokefanMScript_0x6998d, -1
-	person_event SPRITE_YOUNGSTER, 9, 10, $4, $20, 255, 255, $80, 0, YoungsterScript_0x69990, -1
+	person_event SPRITE_POKEFAN_M, 7, 6, DOWN << 2 | $3, $0, -1, -1, $0, 0, PokefanMScript_0x6998d, -1
+	person_event SPRITE_YOUNGSTER, 9, 10, UP << 2 | $0, $20, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x69990, -1
--- a/maps/VioletPokeCenter1F.asm
+++ b/maps/VioletPokeCenter1F.asm
@@ -226,8 +226,8 @@
 
 	; people-events
 	db 5
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x694c9, -1
-	person_event SPRITE_GAMEBOY_KID, 10, 11, $6, $0, 255, 255, $a0, 0, GameboyKidScript_0x69540, -1
-	person_event SPRITE_GENTLEMAN, 8, 5, $3, $0, 255, 255, $0, 0, GentlemanScript_0x69543, -1
-	person_event SPRITE_YOUNGSTER, 5, 12, $6, $0, 255, 255, $80, 0, YoungsterScript_0x69546, -1
-	person_event SPRITE_SCIENTIST, 7, 8, $6, $0, 255, 255, $90, 0, ScientistScript_0x694cc, EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x694c9, -1
+	person_event SPRITE_GAMEBOY_KID, 10, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, GameboyKidScript_0x69540, -1
+	person_event SPRITE_GENTLEMAN, 8, 5, DOWN << 2 | $3, $0, -1, -1, $0, 0, GentlemanScript_0x69543, -1
+	person_event SPRITE_YOUNGSTER, 5, 12, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, YoungsterScript_0x69546, -1
+	person_event SPRITE_SCIENTIST, 7, 8, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ScientistScript_0x694cc, EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
--- a/maps/ViridianCity.asm
+++ b/maps/ViridianCity.asm
@@ -228,16 +228,16 @@
 
 	; signposts
 	db 6
-	signpost 17, 17, $0, ViridianCitySign
-	signpost 7, 27, $0, ViridianGymSign
-	signpost 1, 19, $0, ViridianCityWelcomeSign
-	signpost 15, 21, $0, TrainerHouseSign
-	signpost 25, 24, $0, ViridianCityPokeCenterSign
-	signpost 19, 30, $0, ViridianCityMartSign
+	signpost 17, 17, SIGNPOST_READ, ViridianCitySign
+	signpost 7, 27, SIGNPOST_READ, ViridianGymSign
+	signpost 1, 19, SIGNPOST_READ, ViridianCityWelcomeSign
+	signpost 15, 21, SIGNPOST_READ, TrainerHouseSign
+	signpost 25, 24, SIGNPOST_READ, ViridianCityPokeCenterSign
+	signpost 19, 30, SIGNPOST_READ, ViridianCityMartSign
 
 	; people-events
 	db 4
-	person_event SPRITE_GRAMPS, 9, 22, $2, $22, 255, 255, $0, 0, GrampsScript_0x1a9a4c, -1
-	person_event SPRITE_GRAMPS, 12, 34, $6, $0, 255, 255, $90, 0, GrampsScript_0x1a9a61, -1
-	person_event SPRITE_FISHER, 27, 10, $6, $0, 255, 255, $80, 0, FisherScript_0x1a9a75, -1
-	person_event SPRITE_YOUNGSTER, 25, 21, $2, $33, 255, 255, $a0, 0, YoungsterScript_0x1a9a90, -1
+	person_event SPRITE_GRAMPS, 9, 22, DOWN << 2 | $2, $22, -1, -1, $0, 0, GrampsScript_0x1a9a4c, -1
+	person_event SPRITE_GRAMPS, 12, 34, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrampsScript_0x1a9a61, -1
+	person_event SPRITE_FISHER, 27, 10, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, FisherScript_0x1a9a75, -1
+	person_event SPRITE_YOUNGSTER, 25, 21, DOWN << 2 | $2, $33, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, YoungsterScript_0x1a9a90, -1
--- a/maps/ViridianGym.asm
+++ b/maps/ViridianGym.asm
@@ -178,10 +178,10 @@
 
 	; signposts
 	db 2
-	signpost 13, 3, $0, ViridianGymStatue
-	signpost 13, 6, $0, ViridianGymStatue
+	signpost 13, 3, SIGNPOST_READ, ViridianGymStatue
+	signpost 13, 6, SIGNPOST_READ, ViridianGymStatue
 
 	; people-events
 	db 2
-	person_event SPRITE_BLUE, 7, 9, $6, $0, 255, 255, $0, 0, BlueScript_0x9aa26, EVENT_776
-	person_event SPRITE_GYM_GUY, 17, 11, $6, $0, 255, 255, $90, 0, ViridianGymGuyScript, EVENT_776
+	person_event SPRITE_BLUE, 7, 9, UP << 2 | $2, $0, -1, -1, $0, 0, BlueScript_0x9aa26, EVENT_776
+	person_event SPRITE_GYM_GUY, 17, 11, UP << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, ViridianGymGuyScript, EVENT_776
--- a/maps/ViridianMart.asm
+++ b/maps/ViridianMart.asm
@@ -48,6 +48,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_CLERK, 7, 5, $9, $0, 255, 255, $0, 0, ClerkScript_0x9b5e7, -1
-	person_event SPRITE_LASS, 6, 11, $5, $2, 255, 255, $0, 0, LassScript_0x9b5ee, -1
-	person_event SPRITE_COOLTRAINER_M, 10, 5, $7, $0, 255, 255, $0, 0, CooltrainerMScript_0x9b5f1, -1
+	person_event SPRITE_CLERK, 7, 5, LEFT << 2 | $1, $0, -1, -1, $0, 0, ClerkScript_0x9b5e7, -1
+	person_event SPRITE_LASS, 6, 11, UP << 2 | $1, $2, -1, -1, $0, 0, LassScript_0x9b5ee, -1
+	person_event SPRITE_COOLTRAINER_M, 10, 5, UP << 2 | $3, $0, -1, -1, $0, 0, CooltrainerMScript_0x9b5f1, -1
--- a/maps/ViridianNicknameSpeechHouse.asm
+++ b/maps/ViridianNicknameSpeechHouse.asm
@@ -72,7 +72,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_POKEFAN_M, 8, 6, $9, $0, 255, 255, $80, 0, PokefanMScript_0x9ae3a, -1
-	person_event SPRITE_LASS, 8, 9, $7, $0, 255, 255, $a0, 0, LassScript_0x9ae3d, -1
-	person_event SPRITE_MOLTRES, 6, 9, $16, $2, 255, 255, $b0, 0, MoltresScript_0x9ae40, -1
-	person_event SPRITE_GROWLITHE, 7, 10, $16, $2, 255, 255, $90, 0, GrowlitheScript_0x9ae4a, -1
+	person_event SPRITE_POKEFAN_M, 8, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, PokefanMScript_0x9ae3a, -1
+	person_event SPRITE_LASS, 8, 9, UP << 2 | $3, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, LassScript_0x9ae3d, -1
+	person_event SPRITE_MOLTRES, 6, 9, UP << 2 | $12, $2, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, MoltresScript_0x9ae40, -1
+	person_event SPRITE_GROWLITHE, 7, 10, UP << 2 | $12, $2, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, GrowlitheScript_0x9ae4a, -1
--- a/maps/ViridianPokeCenter1F.asm
+++ b/maps/ViridianPokeCenter1F.asm
@@ -83,7 +83,7 @@
 
 	; people-events
 	db 4
-	person_event SPRITE_NURSE, 5, 7, $6, $0, 255, 255, $0, 0, NurseScript_0x9b690, -1
-	person_event SPRITE_COOLTRAINER_M, 8, 12, $5, $1, 255, 255, $80, 0, CooltrainerMScript_0x9b693, -1
-	person_event SPRITE_COOLTRAINER_F, 7, 9, $7, $0, 255, 255, $90, 0, CooltrainerFScript_0x9b6a7, -1
-	person_event SPRITE_BUG_CATCHER, 10, 5, $9, $0, 255, 255, $a0, 0, BugCatcherScript_0x9b6aa, -1
+	person_event SPRITE_NURSE, 5, 7, UP << 2 | $2, $0, -1, -1, $0, 0, NurseScript_0x9b690, -1
+	person_event SPRITE_COOLTRAINER_M, 8, 12, UP << 2 | $1, $1, -1, -1, (PAL_OW_RED << 4) | $80, 0, CooltrainerMScript_0x9b693, -1
+	person_event SPRITE_COOLTRAINER_F, 7, 9, UP << 2 | $3, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, CooltrainerFScript_0x9b6a7, -1
+	person_event SPRITE_BUG_CATCHER, 10, 5, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, BugCatcherScript_0x9b6aa, -1
--- a/maps/WarehouseEntrance.asm
+++ b/maps/WarehouseEntrance.asm
@@ -265,20 +265,20 @@
 	jump UnknownScript_0x7c1c1
 
 UnknownScript_0x7c1a9:
-	setevent EVENT_000
-	clearevent EVENT_001
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
+	clearevent EVENT_CHRIS2_IN_CABLE_CLUB
 	clearevent EVENT_002
 	jump UnknownScript_0x7c1cd
 
 UnknownScript_0x7c1b5:
-	clearevent EVENT_000
-	setevent EVENT_001
+	clearevent EVENT_CHRIS1_IN_CABLE_CLUB
+	setevent EVENT_CHRIS2_IN_CABLE_CLUB
 	clearevent EVENT_002
 	jump UnknownScript_0x7c1cd
 
 UnknownScript_0x7c1c1:
-	clearevent EVENT_000
-	clearevent EVENT_001
+	clearevent EVENT_CHRIS1_IN_CABLE_CLUB
+	clearevent EVENT_CHRIS2_IN_CABLE_CLUB
 	setevent EVENT_002
 	jump UnknownScript_0x7c1cd
 
@@ -296,9 +296,9 @@
 	loadfont
 	writetext UnknownText_0x7c6d8
 	closetext
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x7c2bb
-	checkevent EVENT_001
+	checkevent EVENT_CHRIS2_IN_CABLE_CLUB
 	iftrue UnknownScript_0x7c2c4
 	jump UnknownScript_0x7c2cd
 
@@ -348,20 +348,20 @@
 	jump UnknownScript_0x7c26e
 
 UnknownScript_0x7c256:
-	setevent EVENT_000
-	clearevent EVENT_001
+	setevent EVENT_CHRIS1_IN_CABLE_CLUB
+	clearevent EVENT_CHRIS2_IN_CABLE_CLUB
 	clearevent EVENT_002
 	jump UnknownScript_0x7c27a
 
 UnknownScript_0x7c262:
-	clearevent EVENT_000
-	setevent EVENT_001
+	clearevent EVENT_CHRIS1_IN_CABLE_CLUB
+	setevent EVENT_CHRIS2_IN_CABLE_CLUB
 	clearevent EVENT_002
 	jump UnknownScript_0x7c27a
 
 UnknownScript_0x7c26e:
-	clearevent EVENT_000
-	clearevent EVENT_001
+	clearevent EVENT_CHRIS1_IN_CABLE_CLUB
+	clearevent EVENT_CHRIS2_IN_CABLE_CLUB
 	setevent EVENT_002
 	jump UnknownScript_0x7c27a
 
@@ -379,9 +379,9 @@
 	loadfont
 	writetext UnknownText_0x7c82a
 	closetext
-	checkevent EVENT_000
+	checkevent EVENT_CHRIS1_IN_CABLE_CLUB
 	iftrue UnknownScript_0x7c2bb
-	checkevent EVENT_001
+	checkevent EVENT_CHRIS2_IN_CABLE_CLUB
 	iftrue UnknownScript_0x7c2c4
 	jump UnknownScript_0x7c2cd
 
@@ -726,20 +726,20 @@
 
 	; signposts
 	db 5
-	signpost 6, 18, $0, MapWarehouseEntranceSignpost0Script
-	signpost 6, 19, $0, MapWarehouseEntranceSignpost1Script
-	signpost 13, 6, $7, MapWarehouseEntranceSignpostItem2
-	signpost 18, 4, $7, MapWarehouseEntranceSignpostItem3
-	signpost 8, 17, $7, MapWarehouseEntranceSignpostItem4
+	signpost 6, 18, SIGNPOST_READ, MapWarehouseEntranceSignpost0Script
+	signpost 6, 19, SIGNPOST_READ, MapWarehouseEntranceSignpost1Script
+	signpost 13, 6, SIGNPOST_ITEMIFSET, MapWarehouseEntranceSignpostItem2
+	signpost 18, 4, SIGNPOST_ITEMIFSET, MapWarehouseEntranceSignpostItem3
+	signpost 8, 17, SIGNPOST_ITEMIFSET, MapWarehouseEntranceSignpostItem4
 
 	; people-events
 	db 9
-	person_event SPRITE_SUPER_NERD, 35, 9, $8, $0, 255, 255, $b2, 3, TrainerSupernerdEric, -1
-	person_event SPRITE_SUPER_NERD, 13, 10, $7, $0, 255, 255, $b2, 2, TrainerSupernerdTeru, -1
-	person_event SPRITE_SUPER_NERD, 31, 7, $a, $0, 255, 255, $92, 2, TrainerPokemaniacIssac, -1
-	person_event SPRITE_SUPER_NERD, 10, 6, $9, $0, 255, 255, $92, 3, TrainerPokemaniacDonald, -1
-	person_event SPRITE_POKE_BALL, 29, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x7c306, EVENT_672
-	person_event SPRITE_GRAMPS, 15, 11, $8, $0, 255, 255, $b0, 0, GrampsScript_0x7c146, EVENT_753
-	person_event SPRITE_SUPER_NERD, 18, 11, $8, $0, 255, 255, $90, 0, SuperNerdScript_0x7c161, EVENT_754
-	person_event SPRITE_SUPER_NERD, 19, 11, $8, $0, 255, 255, $a0, 0, SuperNerdScript_0x7c20e, EVENT_755
-	person_event SPRITE_GRANNY, 25, 11, $8, $0, 255, 255, $b0, 0, GrannyScript_0x7c132, EVENT_752
+	person_event SPRITE_SUPER_NERD, 35, 9, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 3, TrainerSupernerdEric, -1
+	person_event SPRITE_SUPER_NERD, 13, 10, UP << 2 | $3, $0, -1, -1, (PAL_OW_BROWN << 4) | $82, 2, TrainerSupernerdTeru, -1
+	person_event SPRITE_SUPER_NERD, 31, 7, LEFT << 2 | $2, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 2, TrainerPokemaniacIssac, -1
+	person_event SPRITE_SUPER_NERD, 10, 6, LEFT << 2 | $1, $0, -1, -1, (PAL_OW_BLUE << 4) | $82, 3, TrainerPokemaniacDonald, -1
+	person_event SPRITE_POKE_BALL, 29, 11, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x7c306, EVENT_672
+	person_event SPRITE_GRAMPS, 15, 11, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrampsScript_0x7c146, EVENT_753
+	person_event SPRITE_SUPER_NERD, 18, 11, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, SuperNerdScript_0x7c161, EVENT_754
+	person_event SPRITE_SUPER_NERD, 19, 11, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_GREEN << 4) | $80, 0, SuperNerdScript_0x7c20e, EVENT_755
+	person_event SPRITE_GRANNY, 25, 11, LEFT << 2 | $0, $0, -1, -1, (PAL_OW_BROWN << 4) | $80, 0, GrannyScript_0x7c132, EVENT_752
--- a/maps/WhirlIslandB1F.asm
+++ b/maps/WhirlIslandB1F.asm
@@ -59,15 +59,15 @@
 
 	; signposts
 	db 3
-	signpost 4, 30, $7, MapWhirlIslandB1FSignpostItem0
-	signpost 18, 36, $7, MapWhirlIslandB1FSignpostItem1
-	signpost 23, 2, $7, MapWhirlIslandB1FSignpostItem2
+	signpost 4, 30, SIGNPOST_ITEMIFSET, MapWhirlIslandB1FSignpostItem0
+	signpost 18, 36, SIGNPOST_ITEMIFSET, MapWhirlIslandB1FSignpostItem1
+	signpost 23, 2, SIGNPOST_ITEMIFSET, MapWhirlIslandB1FSignpostItem2
 
 	; people-events
 	db 6
-	person_event SPRITE_POKE_BALL, 17, 11, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c410, EVENT_691
-	person_event SPRITE_POKE_BALL, 22, 6, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c412, EVENT_692
-	person_event SPRITE_POKE_BALL, 27, 37, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c414, EVENT_693
-	person_event SPRITE_POKE_BALL, 12, 21, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c416, EVENT_694
-	person_event SPRITE_POKE_BALL, 30, 23, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c418, EVENT_695
-	person_event SPRITE_BOULDER, 30, 27, $19, $0, 255, 255, $0, 0, WhirlIslandB1FBoulder, -1
+	person_event SPRITE_POKE_BALL, 17, 11, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c410, EVENT_691
+	person_event SPRITE_POKE_BALL, 22, 6, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c412, EVENT_692
+	person_event SPRITE_POKE_BALL, 27, 37, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c414, EVENT_693
+	person_event SPRITE_POKE_BALL, 12, 21, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c416, EVENT_694
+	person_event SPRITE_POKE_BALL, 30, 23, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c418, EVENT_695
+	person_event SPRITE_BOULDER, 30, 27, LEFT << 2 | $11, $0, -1, -1, $0, 0, WhirlIslandB1FBoulder, -1
--- a/maps/WhirlIslandB2F.asm
+++ b/maps/WhirlIslandB2F.asm
@@ -33,6 +33,6 @@
 
 	; people-events
 	db 3
-	person_event SPRITE_POKE_BALL, 15, 14, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c4b8, EVENT_696
-	person_event SPRITE_POKE_BALL, 8, 10, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c4ba, EVENT_697
-	person_event SPRITE_POKE_BALL, 16, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c4bc, EVENT_698
+	person_event SPRITE_POKE_BALL, 15, 14, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c4b8, EVENT_696
+	person_event SPRITE_POKE_BALL, 8, 10, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c4ba, EVENT_697
+	person_event SPRITE_POKE_BALL, 16, 9, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c4bc, EVENT_698
--- a/maps/WhirlIslandLugiaChamber.asm
+++ b/maps/WhirlIslandLugiaChamber.asm
@@ -59,4 +59,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_LUGIA, 9, 13, $16, $0, 255, 255, $90, 0, LugiaScript_0x18c518, EVENT_73D
+	person_event SPRITE_LUGIA, 9, 13, UP << 2 | $12, $0, -1, -1, (PAL_OW_BLUE << 4) | $80, 0, LugiaScript_0x18c518, EVENT_73D
--- a/maps/WhirlIslandNE.asm
+++ b/maps/WhirlIslandNE.asm
@@ -26,4 +26,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_POKE_BALL, 15, 15, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c396, EVENT_68F
+	person_event SPRITE_POKE_BALL, 15, 15, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c396, EVENT_68F
--- a/maps/WhirlIslandSW.asm
+++ b/maps/WhirlIslandSW.asm
@@ -28,4 +28,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_POKE_BALL, 6, 19, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c3bc, EVENT_690
+	person_event SPRITE_POKE_BALL, 6, 19, DOWN << 2 | $1, $0, -1, -1, $1, 0, ItemFragment_0x18c3bc, EVENT_690
--- a/maps/WillsRoom.asm
+++ b/maps/WillsRoom.asm
@@ -21,7 +21,7 @@
 	end
 
 UnknownScript_0x1804cb:
-	checkevent EVENT_309
+	checkevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
 	iffalse UnknownScript_0x1804d5
 	changeblock $4, $e, $2a
 UnknownScript_0x1804d5:
@@ -40,7 +40,7 @@
 	reloadmappart
 	loadmovesprites
 	dotrigger $1
-	setevent EVENT_309
+	setevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
 	waitbutton
 	end
 
@@ -148,4 +148,4 @@
 
 	; people-events
 	db 1
-	person_event SPRITE_WILL, 11, 9, $6, $0, 255, 255, $80, 0, WillScript_0x1804f8, -1
+	person_event SPRITE_WILL, 11, 9, UP << 2 | $2, $0, -1, -1, (PAL_OW_RED << 4) | $80, 0, WillScript_0x1804f8, -1
--- a/maps/WiseTriosRoom.asm
+++ b/maps/WiseTriosRoom.asm
@@ -408,9 +408,9 @@
 
 	; people-events
 	db 6
-	person_event SPRITE_SAGE, 6, 10, $3, $0, 255, 255, $0, 0, SageScript_0x9859a, EVENT_7AB
-	person_event SPRITE_SAGE, 11, 10, $5, $1, 255, 255, $0, 0, SageScript_0x9859d, EVENT_7AB
-	person_event SPRITE_SAGE, 9, 11, $8, $0, 255, 255, $0, 0, SageScript_0x985a0, EVENT_7AB
-	person_event SPRITE_SAGE, 6, 8, $6, $0, 255, 255, $2, 2, TrainerSageGaku, EVENT_7AC
-	person_event SPRITE_SAGE, 10, 8, $7, $0, 255, 255, $2, 2, TrainerSageMasa, EVENT_7AC
-	person_event SPRITE_SAGE, 8, 10, $8, $0, 255, 255, $2, 2, TrainerSageKoji, EVENT_7AC
+	person_event SPRITE_SAGE, 6, 10, DOWN << 2 | $3, $0, -1, -1, $0, 0, SageScript_0x9859a, EVENT_7AB
+	person_event SPRITE_SAGE, 11, 10, UP << 2 | $1, $1, -1, -1, $0, 0, SageScript_0x9859d, EVENT_7AB
+	person_event SPRITE_SAGE, 9, 11, LEFT << 2 | $0, $0, -1, -1, $0, 0, SageScript_0x985a0, EVENT_7AB
+	person_event SPRITE_SAGE, 6, 8, UP << 2 | $2, $0, -1, -1, $2, 2, TrainerSageGaku, EVENT_7AC
+	person_event SPRITE_SAGE, 10, 8, UP << 2 | $3, $0, -1, -1, $2, 2, TrainerSageMasa, EVENT_7AC
+	person_event SPRITE_SAGE, 8, 10, LEFT << 2 | $0, $0, -1, -1, $2, 2, TrainerSageKoji, EVENT_7AC
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -7733,7 +7733,7 @@
 	ret
 ; 10366e
 
-Function10366e: ; 10366e
+Mobile_SelectThreeMons: ; 10366e
 	callba Function10632f
 	bit 7, c
 	jr z, .asm_10369b
--- a/misc/mobile_45.asm
+++ b/misc/mobile_45.asm
@@ -427,7 +427,7 @@
 	pop hl
 	push af
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -673,7 +673,7 @@
 .asm_11451c
 	pop hl
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -690,7 +690,7 @@
 .asm_114537
 	ld hl, wdc06
 	ld a, [hl]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld hl, wdc09
@@ -1255,7 +1255,7 @@
 Function114867: ; 114867
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -1283,7 +1283,7 @@
 	inc e
 	call z, Function1148b9
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
 	inc hl
@@ -1313,7 +1313,7 @@
 
 Function1148b9: ; 1148b9
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -1322,7 +1322,7 @@
 Function1148c2: ; 1148c2
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -1375,7 +1375,7 @@
 	inc e
 	call z, Function114944
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
 	inc hl
@@ -1413,7 +1413,7 @@
 
 Function114944: ; 114944
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -1422,7 +1422,7 @@
 Function11494d: ; 11494d
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -1467,7 +1467,7 @@
 	inc e
 	call z, Function1149c3
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
 	inc hl
@@ -1505,7 +1505,7 @@
 
 Function1149c3: ; 1149c3
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -1514,7 +1514,7 @@
 Function1149cc: ; 1149cc
 	ld hl, wdc06
 	ld a, [hl]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	push de
@@ -1546,7 +1546,7 @@
 	inc e
 	call z, Function114a0f
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
 	inc hl
@@ -1563,7 +1563,7 @@
 
 Function114a0f: ; 114a0f
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -1872,7 +1872,7 @@
 .asm_114b96
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -1922,7 +1922,7 @@
 	jr z, .asm_114bff
 	pop hl
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -2152,7 +2152,7 @@
 .asm_114d11
 	pop hl
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -2456,7 +2456,7 @@
 Function114ea0: ; 114ea0
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -2481,7 +2481,7 @@
 	inc e
 	call z, Function114ee0
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -2502,7 +2502,7 @@
 
 Function114ee0: ; 114ee0
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -2740,7 +2740,7 @@
 	push hl
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -2767,7 +2767,7 @@
 
 .asm_115046
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -2786,7 +2786,7 @@
 
 Function115059: ; 115059
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -2952,7 +2952,7 @@
 Function115136: ; 115136
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -2979,7 +2979,7 @@
 
 .asm_11515d
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -2998,7 +2998,7 @@
 
 Function115170: ; 115170
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -3007,7 +3007,7 @@
 Function115179: ; 115179
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -3102,7 +3102,7 @@
 	inc e
 	call z, Function11520e
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -3117,7 +3117,7 @@
 
 Function11520e: ; 11520e
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -3127,7 +3127,7 @@
 	push hl
 	ld hl, wdc06
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld a, [hli]
@@ -3166,7 +3166,7 @@
 
 .asm_115252
 	ld hl, wdc06
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -3211,7 +3211,7 @@
 
 Function115286: ; 115286
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
@@ -3610,7 +3610,7 @@
 	ld [de], a
 	ld hl, RightOrnament
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -3619,7 +3619,7 @@
 	ld hl, $ddc8
 	call Function115d6a
 	ld hl, RightOrnament
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
 	inc hl
@@ -3845,7 +3845,7 @@
 
 Function11560a: ; 11560a
 	ld a, [wdc06]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld a, [wdc17]
 	ld [wdc00], a
 	ld [$ff8c], a
@@ -3920,7 +3920,7 @@
 	inc hl
 	ld [hl], d
 	pop bc
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [$ff8c], a
 	ld [$4000], a
 	ld hl, wdc07
@@ -3942,7 +3942,7 @@
 	jr nz, .asm_11564d
 
 .asm_1156a9
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [wdc06], a
 	xor a
 	ret
@@ -4285,7 +4285,7 @@
 	pop hl
 	ld hl, wdc07
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -4294,7 +4294,7 @@
 	ld hl, PartyMon5Speed
 	call Function115d6a
 	ld hl, wdc07
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -4847,7 +4847,7 @@
 	pop hl
 	ld hl, wdc07
 	ld a, [hli]
-	ld [wdc01], a
+	ld [wCurrentMapSignpostCount], a
 	ld [$ff8c], a
 	ld [$4000], a
 	ld e, [hl]
@@ -4856,7 +4856,7 @@
 	ld hl, wdc26
 	call Function115d6a
 	ld hl, wdc07
-	ld a, [wdc01]
+	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
 	ld [hli], a
@@ -5230,7 +5230,7 @@
 
 Function115d77: ; 115d77
 	push bc
-	ld bc, wdc01
+	ld bc, wCurrentMapSignpostCount
 	call Function115d80
 	pop bc
 	ret
--- a/wram.asm
+++ b/wram.asm
@@ -2280,16 +2280,18 @@
 ; bit 2: downhill
 	ds 1
 
-	ds 3
+	ds 1
+wCurrentMapTriggerPointer:: ; dbf7
+	ds 2
 
 wdbf9:: ds 2
 wdbfb:: ds 1
 wdbfc:: ds 1
 wdbfd:: ds 1
-wdbfe:: ds 1
+wCurrentMapXYTriggerCount:: ds 1
 wdbff:: ds 1
 wdc00:: ds 1
-wdc01:: ds 1
+wCurrentMapSignpostCount:: ds 1
 wdc02:: ds 1
 wdc03:: ds 1
 wdc04:: ds 1