shithub: pokecrystal

Download patch

ref: 60cd04b02300c288a01a2f78a44cb39cbe6861d1
parent: e674869018ffe8f9be2351b2b569eb7300910e6a
author: PikalaxALT <[email protected]>
date: Sat Jul 18 19:45:39 EDT 2015

Trainer data structure and field move functions

Trainer data in map scripts is now a macro-defined structure.

Field move functions in main.asm are now nearly completely annotated, with local references.

Trailing white space deleted.

--- a/battle/ai/scoring.asm
+++ b/battle/ai/scoring.asm
@@ -151,7 +151,7 @@
 AI_Types: ; 38635
 ; Dismiss any move that the player is immune to.
 ; Encourage super-effective moves.
-; Discourage not very effective moves unless 
+; Discourage not very effective moves unless
 ; all damaging moves are of the same type.
 
 	ld hl, Buffer1 - 1
@@ -963,9 +963,9 @@
 AI_Smart_Whirlwind: ; 38a2a
 ; Whirlwind, Roar.
 
-; Discourage this move if the player has not shown 
+; Discourage this move if the player has not shown
 ; a super-effective move against the enemy.
-; Consider player's type(s) if its moves are unknown. 
+; Consider player's type(s) if its moves are unknown.
 
 	push hl
 	callab Function3484e
@@ -1231,7 +1231,7 @@
 	call AICheckPlayerQuarterHP
 	jr nc, .asm_38b3a
 	
-; 80% chance to greatly encourage this move 
+; 80% chance to greatly encourage this move
 ; if enemy is slower than player and its HP is above 25%.	
 	call AICompareSpeed
 	ret c
@@ -1879,7 +1879,7 @@
 	bit SUBSTATUS_TOXIC, a
 	jr nz, .asm_38e26
 
-; 80% chance to greatly encourage this move if the player is either 
+; 80% chance to greatly encourage this move if the player is either
 ; in love, identified, stuck in Rollout, or has a Nightmare.	
 	ld a, [PlayerSubStatus1]
 	and 1<<SUBSTATUS_IN_LOVE | 1<<SUBSTATUS_ROLLOUT | 1<<SUBSTATUS_IDENTIFIED | 1<<SUBSTATUS_NIGHTMARE
@@ -3292,7 +3292,7 @@
 	call AIGetEnemyMove
 
 ; Ignore this move if its power is 0 or 1.
-; Moves such as Seismic Toss, Hidden Power, 
+; Moves such as Seismic Toss, Hidden Power,
 ; Counter and Fissure have a base power of 1.	
 	ld a, [wEnemyMoveStruct + MOVE_POWER]
 	cp 2
--- a/constants/battle_constants.asm
+++ b/constants/battle_constants.asm
@@ -96,54 +96,54 @@
 
 ; substatus
 	enum_start 7, -1
-	enum SUBSTATUS_IN_LOVE     
-	enum SUBSTATUS_ROLLOUT     
-	enum SUBSTATUS_ENDURE      
-	enum SUBSTATUS_PERISH      
-	enum SUBSTATUS_IDENTIFIED  
-	enum SUBSTATUS_PROTECT     
-	enum SUBSTATUS_CURSE       
-	enum SUBSTATUS_NIGHTMARE   
+	enum SUBSTATUS_IN_LOVE
+	enum SUBSTATUS_ROLLOUT
+	enum SUBSTATUS_ENDURE
+	enum SUBSTATUS_PERISH
+	enum SUBSTATUS_IDENTIFIED
+	enum SUBSTATUS_PROTECT
+	enum SUBSTATUS_CURSE
+	enum SUBSTATUS_NIGHTMARE
 
 SUBSTATUS_CURLED       EQU 0
 
 	enum_start 7, -1
-	enum SUBSTATUS_CONFUSED    
-	enum SUBSTATUS_FLYING      
-	enum SUBSTATUS_UNDERGROUND 
-	enum SUBSTATUS_CHARGED     
-	enum SUBSTATUS_FLINCHED    
-	enum SUBSTATUS_IN_LOOP     
-	enum SUBSTATUS_RAMPAGE     
-	enum SUBSTATUS_BIDE        
+	enum SUBSTATUS_CONFUSED
+	enum SUBSTATUS_FLYING
+	enum SUBSTATUS_UNDERGROUND
+	enum SUBSTATUS_CHARGED
+	enum SUBSTATUS_FLINCHED
+	enum SUBSTATUS_IN_LOOP
+	enum SUBSTATUS_RAMPAGE
+	enum SUBSTATUS_BIDE
 
 	enum_start 7, -1
-	enum SUBSTATUS_LEECH_SEED  
-	enum SUBSTATUS_RAGE        
-	enum SUBSTATUS_RECHARGE    
-	enum SUBSTATUS_SUBSTITUTE  
-	enum SUBSTATUS_UNKNOWN_1                     
+	enum SUBSTATUS_LEECH_SEED
+	enum SUBSTATUS_RAGE
+	enum SUBSTATUS_RECHARGE
+	enum SUBSTATUS_SUBSTITUTE
+	enum SUBSTATUS_UNKNOWN_1
 	enum SUBSTATUS_FOCUS_ENERGY
-	enum SUBSTATUS_MIST        
-	enum SUBSTATUS_X_ACCURACY  
+	enum SUBSTATUS_MIST
+	enum SUBSTATUS_X_ACCURACY
 
 	enum_start 7, -1
-	enum SUBSTATUS_CANT_RUN    
+	enum SUBSTATUS_CANT_RUN
 	enum SUBSTATUS_DESTINY_BOND
-	enum SUBSTATUS_LOCK_ON     
-	enum SUBSTATUS_ENCORED     
-	enum SUBSTATUS_TRANSFORMED 
-	enum SUBSTATUS_UNKNOWN_2   
-	enum SUBSTATUS_UNKNOWN_3                    
-	enum SUBSTATUS_TOXIC       
+	enum SUBSTATUS_LOCK_ON
+	enum SUBSTATUS_ENCORED
+	enum SUBSTATUS_TRANSFORMED
+	enum SUBSTATUS_UNKNOWN_2
+	enum SUBSTATUS_UNKNOWN_3
+	enum SUBSTATUS_TOXIC
 
 ; environmental
 	enum_start 4, -1
-	enum SCREENS_REFLECT     
+	enum SCREENS_REFLECT
 	enum SCREENS_LIGHT_SCREEN
-	enum SCREENS_SAFEGUARD   
+	enum SCREENS_SAFEGUARD
 	enum SCREENS_UNUSED
-	enum SCREENS_SPIKES      
+	enum SCREENS_SPIKES
 
 ; weather
 	const_def
@@ -158,160 +158,160 @@
 
 ; move effects
 	const_def
-	const EFFECT_NORMAL_HIT         
-	const EFFECT_SLEEP              
-	const EFFECT_POISON_HIT         
-	const EFFECT_LEECH_HIT          
-	const EFFECT_BURN_HIT           
-	const EFFECT_FREEZE_HIT         
-	const EFFECT_PARALYZE_HIT       
-	const EFFECT_EXPLOSION          
-	const EFFECT_DREAM_EATER        
-	const EFFECT_MIRROR_MOVE        
-	const EFFECT_ATTACK_UP          
-	const EFFECT_DEFENSE_UP         
-	const EFFECT_SPEED_UP           
-	const EFFECT_SP_ATK_UP          
-	const EFFECT_SP_DEF_UP          
-	const EFFECT_ACCURACY_UP        
-	const EFFECT_EVASION_UP         
-	const EFFECT_ALWAYS_HIT         
-	const EFFECT_ATTACK_DOWN        
-	const EFFECT_DEFENSE_DOWN       
-	const EFFECT_SPEED_DOWN         
-	const EFFECT_SP_ATK_DOWN        
-	const EFFECT_SP_DEF_DOWN        
-	const EFFECT_ACCURACY_DOWN      
-	const EFFECT_EVASION_DOWN       
-	const EFFECT_HAZE               
-	const EFFECT_BIDE               
-	const EFFECT_RAMPAGE            
-	const EFFECT_WHIRLWIND          
-	const EFFECT_MULTI_HIT          
-	const EFFECT_CONVERSION         
-	const EFFECT_FLINCH_HIT         
-	const EFFECT_HEAL               
-	const EFFECT_TOXIC              
-	const EFFECT_PAY_DAY            
-	const EFFECT_LIGHT_SCREEN       
-	const EFFECT_TRI_ATTACK         
-	const EFFECT_UNUSED_25          
-	const EFFECT_OHKO               
-	const EFFECT_RAZOR_WIND         
-	const EFFECT_SUPER_FANG         
-	const EFFECT_STATIC_DAMAGE      
-	const EFFECT_BIND               
-	const EFFECT_UNUSED_2B          
-	const EFFECT_DOUBLE_HIT         
-	const EFFECT_JUMP_KICK          
-	const EFFECT_MIST               
-	const EFFECT_FOCUS_ENERGY       
-	const EFFECT_RECOIL_HIT         
-	const EFFECT_CONFUSE            
-	const EFFECT_ATTACK_UP_2        
-	const EFFECT_DEFENSE_UP_2       
-	const EFFECT_SPEED_UP_2         
-	const EFFECT_SP_ATK_UP_2        
-	const EFFECT_SP_DEF_UP_2        
-	const EFFECT_ACCURACY_UP_2      
-	const EFFECT_EVASION_UP_2       
-	const EFFECT_TRANSFORM          
-	const EFFECT_ATTACK_DOWN_2      
-	const EFFECT_DEFENSE_DOWN_2     
-	const EFFECT_SPEED_DOWN_2       
-	const EFFECT_SP_ATK_DOWN_2      
-	const EFFECT_SP_DEF_DOWN_2      
-	const EFFECT_ACCURACY_DOWN_2    
-	const EFFECT_EVASION_DOWN_2     
-	const EFFECT_REFLECT            
-	const EFFECT_POISON             
-	const EFFECT_PARALYZE           
-	const EFFECT_ATTACK_DOWN_HIT    
-	const EFFECT_DEFENSE_DOWN_HIT   
-	const EFFECT_SPEED_DOWN_HIT     
-	const EFFECT_SP_ATK_DOWN_HIT    
-	const EFFECT_SP_DEF_DOWN_HIT    
-	const EFFECT_ACCURACY_DOWN_HIT  
-	const EFFECT_EVASION_DOWN_HIT   
-	const EFFECT_SKY_ATTACK         
-	const EFFECT_CONFUSE_HIT        
-	const EFFECT_TWINEEDLE          
-	const EFFECT_UNUSED_4E          
-	const EFFECT_SUBSTITUTE         
-	const EFFECT_HYPER_BEAM         
-	const EFFECT_RAGE               
-	const EFFECT_MIMIC              
-	const EFFECT_METRONOME          
-	const EFFECT_LEECH_SEED         
-	const EFFECT_SPLASH             
-	const EFFECT_DISABLE            
-	const EFFECT_LEVEL_DAMAGE       
-	const EFFECT_PSYWAVE            
-	const EFFECT_COUNTER            
-	const EFFECT_ENCORE             
-	const EFFECT_PAIN_SPLIT         
-	const EFFECT_SNORE              
-	const EFFECT_CONVERSION2        
-	const EFFECT_LOCK_ON            
-	const EFFECT_SKETCH             
-	const EFFECT_DEFROST_OPPONENT   
-	const EFFECT_SLEEP_TALK         
-	const EFFECT_DESTINY_BOND       
-	const EFFECT_REVERSAL           
-	const EFFECT_SPITE              
-	const EFFECT_FALSE_SWIPE        
-	const EFFECT_HEAL_BELL          
-	const EFFECT_PRIORITY_HIT       
-	const EFFECT_TRIPLE_KICK        
-	const EFFECT_THIEF              
-	const EFFECT_MEAN_LOOK          
-	const EFFECT_NIGHTMARE          
-	const EFFECT_FLAME_WHEEL        
-	const EFFECT_CURSE              
-	const EFFECT_UNUSED_6E          
-	const EFFECT_PROTECT            
-	const EFFECT_SPIKES             
-	const EFFECT_FORESIGHT          
-	const EFFECT_PERISH_SONG        
-	const EFFECT_SANDSTORM          
-	const EFFECT_ENDURE             
-	const EFFECT_ROLLOUT            
-	const EFFECT_SWAGGER            
-	const EFFECT_FURY_CUTTER        
-	const EFFECT_ATTRACT            
-	const EFFECT_RETURN             
-	const EFFECT_PRESENT            
-	const EFFECT_FRUSTRATION        
-	const EFFECT_SAFEGUARD          
-	const EFFECT_SACRED_FIRE        
-	const EFFECT_MAGNITUDE          
-	const EFFECT_BATON_PASS         
-	const EFFECT_PURSUIT            
-	const EFFECT_RAPID_SPIN         
-	const EFFECT_UNUSED_82          
-	const EFFECT_UNUSED_83          
-	const EFFECT_MORNING_SUN        
-	const EFFECT_SYNTHESIS          
-	const EFFECT_MOONLIGHT          
-	const EFFECT_HIDDEN_POWER       
-	const EFFECT_RAIN_DANCE         
-	const EFFECT_SUNNY_DAY          
-	const EFFECT_STEEL_WING         
-	const EFFECT_METAL_CLAW         
-	const EFFECT_ANCIENTPOWER       
-	const EFFECT_FAKE_OUT           
-	const EFFECT_BELLY_DRUM         
-	const EFFECT_PSYCH_UP           
-	const EFFECT_MIRROR_COAT        
-	const EFFECT_SKULL_BASH         
-	const EFFECT_TWISTER            
-	const EFFECT_EARTHQUAKE         
-	const EFFECT_FUTURE_SIGHT       
-	const EFFECT_GUST               
-	const EFFECT_STOMP              
-	const EFFECT_SOLARBEAM          
-	const EFFECT_THUNDER            
-	const EFFECT_TELEPORT           
-	const EFFECT_BEAT_UP            
-	const EFFECT_FLY                
-	const EFFECT_DEFENSE_CURL       
+	const EFFECT_NORMAL_HIT
+	const EFFECT_SLEEP
+	const EFFECT_POISON_HIT
+	const EFFECT_LEECH_HIT
+	const EFFECT_BURN_HIT
+	const EFFECT_FREEZE_HIT
+	const EFFECT_PARALYZE_HIT
+	const EFFECT_EXPLOSION
+	const EFFECT_DREAM_EATER
+	const EFFECT_MIRROR_MOVE
+	const EFFECT_ATTACK_UP
+	const EFFECT_DEFENSE_UP
+	const EFFECT_SPEED_UP
+	const EFFECT_SP_ATK_UP
+	const EFFECT_SP_DEF_UP
+	const EFFECT_ACCURACY_UP
+	const EFFECT_EVASION_UP
+	const EFFECT_ALWAYS_HIT
+	const EFFECT_ATTACK_DOWN
+	const EFFECT_DEFENSE_DOWN
+	const EFFECT_SPEED_DOWN
+	const EFFECT_SP_ATK_DOWN
+	const EFFECT_SP_DEF_DOWN
+	const EFFECT_ACCURACY_DOWN
+	const EFFECT_EVASION_DOWN
+	const EFFECT_HAZE
+	const EFFECT_BIDE
+	const EFFECT_RAMPAGE
+	const EFFECT_WHIRLWIND
+	const EFFECT_MULTI_HIT
+	const EFFECT_CONVERSION
+	const EFFECT_FLINCH_HIT
+	const EFFECT_HEAL
+	const EFFECT_TOXIC
+	const EFFECT_PAY_DAY
+	const EFFECT_LIGHT_SCREEN
+	const EFFECT_TRI_ATTACK
+	const EFFECT_UNUSED_25
+	const EFFECT_OHKO
+	const EFFECT_RAZOR_WIND
+	const EFFECT_SUPER_FANG
+	const EFFECT_STATIC_DAMAGE
+	const EFFECT_BIND
+	const EFFECT_UNUSED_2B
+	const EFFECT_DOUBLE_HIT
+	const EFFECT_JUMP_KICK
+	const EFFECT_MIST
+	const EFFECT_FOCUS_ENERGY
+	const EFFECT_RECOIL_HIT
+	const EFFECT_CONFUSE
+	const EFFECT_ATTACK_UP_2
+	const EFFECT_DEFENSE_UP_2
+	const EFFECT_SPEED_UP_2
+	const EFFECT_SP_ATK_UP_2
+	const EFFECT_SP_DEF_UP_2
+	const EFFECT_ACCURACY_UP_2
+	const EFFECT_EVASION_UP_2
+	const EFFECT_TRANSFORM
+	const EFFECT_ATTACK_DOWN_2
+	const EFFECT_DEFENSE_DOWN_2
+	const EFFECT_SPEED_DOWN_2
+	const EFFECT_SP_ATK_DOWN_2
+	const EFFECT_SP_DEF_DOWN_2
+	const EFFECT_ACCURACY_DOWN_2
+	const EFFECT_EVASION_DOWN_2
+	const EFFECT_REFLECT
+	const EFFECT_POISON
+	const EFFECT_PARALYZE
+	const EFFECT_ATTACK_DOWN_HIT
+	const EFFECT_DEFENSE_DOWN_HIT
+	const EFFECT_SPEED_DOWN_HIT
+	const EFFECT_SP_ATK_DOWN_HIT
+	const EFFECT_SP_DEF_DOWN_HIT
+	const EFFECT_ACCURACY_DOWN_HIT
+	const EFFECT_EVASION_DOWN_HIT
+	const EFFECT_SKY_ATTACK
+	const EFFECT_CONFUSE_HIT
+	const EFFECT_TWINEEDLE
+	const EFFECT_UNUSED_4E
+	const EFFECT_SUBSTITUTE
+	const EFFECT_HYPER_BEAM
+	const EFFECT_RAGE
+	const EFFECT_MIMIC
+	const EFFECT_METRONOME
+	const EFFECT_LEECH_SEED
+	const EFFECT_SPLASH
+	const EFFECT_DISABLE
+	const EFFECT_LEVEL_DAMAGE
+	const EFFECT_PSYWAVE
+	const EFFECT_COUNTER
+	const EFFECT_ENCORE
+	const EFFECT_PAIN_SPLIT
+	const EFFECT_SNORE
+	const EFFECT_CONVERSION2
+	const EFFECT_LOCK_ON
+	const EFFECT_SKETCH
+	const EFFECT_DEFROST_OPPONENT
+	const EFFECT_SLEEP_TALK
+	const EFFECT_DESTINY_BOND
+	const EFFECT_REVERSAL
+	const EFFECT_SPITE
+	const EFFECT_FALSE_SWIPE
+	const EFFECT_HEAL_BELL
+	const EFFECT_PRIORITY_HIT
+	const EFFECT_TRIPLE_KICK
+	const EFFECT_THIEF
+	const EFFECT_MEAN_LOOK
+	const EFFECT_NIGHTMARE
+	const EFFECT_FLAME_WHEEL
+	const EFFECT_CURSE
+	const EFFECT_UNUSED_6E
+	const EFFECT_PROTECT
+	const EFFECT_SPIKES
+	const EFFECT_FORESIGHT
+	const EFFECT_PERISH_SONG
+	const EFFECT_SANDSTORM
+	const EFFECT_ENDURE
+	const EFFECT_ROLLOUT
+	const EFFECT_SWAGGER
+	const EFFECT_FURY_CUTTER
+	const EFFECT_ATTRACT
+	const EFFECT_RETURN
+	const EFFECT_PRESENT
+	const EFFECT_FRUSTRATION
+	const EFFECT_SAFEGUARD
+	const EFFECT_SACRED_FIRE
+	const EFFECT_MAGNITUDE
+	const EFFECT_BATON_PASS
+	const EFFECT_PURSUIT
+	const EFFECT_RAPID_SPIN
+	const EFFECT_UNUSED_82
+	const EFFECT_UNUSED_83
+	const EFFECT_MORNING_SUN
+	const EFFECT_SYNTHESIS
+	const EFFECT_MOONLIGHT
+	const EFFECT_HIDDEN_POWER
+	const EFFECT_RAIN_DANCE
+	const EFFECT_SUNNY_DAY
+	const EFFECT_STEEL_WING
+	const EFFECT_METAL_CLAW
+	const EFFECT_ANCIENTPOWER
+	const EFFECT_FAKE_OUT
+	const EFFECT_BELLY_DRUM
+	const EFFECT_PSYCH_UP
+	const EFFECT_MIRROR_COAT
+	const EFFECT_SKULL_BASH
+	const EFFECT_TWISTER
+	const EFFECT_EARTHQUAKE
+	const EFFECT_FUTURE_SIGHT
+	const EFFECT_GUST
+	const EFFECT_STOMP
+	const EFFECT_SOLARBEAM
+	const EFFECT_THUNDER
+	const EFFECT_TELEPORT
+	const EFFECT_BEAT_UP
+	const EFFECT_FLY
+	const EFFECT_DEFENSE_CURL
--- a/constants/event_flags.asm
+++ b/constants/event_flags.asm
@@ -718,11 +718,11 @@
 	const EVENT_2C9
 	const EVENT_2CA
 	const EVENT_2CB
-	const EVENT_2CC
+	const EVENT_KRISS_ROOM_POSTER
 	const EVENT_2CD
 	const EVENT_2CE
 	const EVENT_2CF
-	const EVENT_2D0
+	const EVENT_2D0 ; 2d0
 	const EVENT_2D1
 	const EVENT_2D2
 	const EVENT_SWITCH_1
@@ -738,7 +738,7 @@
 	const EVENT_SWITCH_10
 	const EVENT_SWITCH_11
 	const EVENT_SWITCH_12
-	const EVENT_SWITCH_13
+	const EVENT_SWITCH_13 ; 2e0
 	const EVENT_SWITCH_14
 	const EVENT_UNCOVERED_STAIRCASE_IN_MAHOGANY_MART
 	const EVENT_TURNED_OFF_SECURITY_CAMERAS
@@ -754,7 +754,7 @@
 	const EVENT_EXPLODING_TRAP_5
 	const EVENT_EXPLODING_TRAP_6
 	const EVENT_EXPLODING_TRAP_7
-	const EVENT_EXPLODING_TRAP_8
+	const EVENT_EXPLODING_TRAP_8 ; 2f0
 	const EVENT_EXPLODING_TRAP_9
 	const EVENT_EXPLODING_TRAP_10
 	const EVENT_EXPLODING_TRAP_11
@@ -770,7 +770,7 @@
 	const EVENT_EXPLODING_TRAP_21
 	const EVENT_EXPLODING_TRAP_22
 	const EVENT_LEARNED_HAIL_GIOVANNI
-	const EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER
+	const EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER ; 300
 	const EVENT_LEARNED_SLOWPOKETAIL
 	const EVENT_LEARNED_RATICATE_TAIL
 	const EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE
@@ -786,7 +786,7 @@
 	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_KARENS_ROOM_EXIT_OPEN ; 310
 	const EVENT_LANCES_ROOM_ENTRANCE_CLOSED
 	const EVENT_LANCES_ROOM_EXIT_OPEN
 	const EVENT_CONTEST_OFFICER_HAS_SUN_STONE
@@ -802,7 +802,7 @@
 	const EVENT_SHOWED_STARYU_TO_BILLS_GRANDPA
 	const EVENT_SHOWED_GROWLITHE_VULPIX_TO_BILLS_GRANDPA
 	const EVENT_SHOWED_PICHU_TO_BILLS_GRANDPA
-	const EVENT_GOT_EVERSTONE_FROM_BILLS_GRANDPA
+	const EVENT_GOT_EVERSTONE_FROM_BILLS_GRANDPA ; 320
 	const EVENT_GOT_LEAF_STONE_FROM_BILLS_GRANDPA
 	const EVENT_GOT_WATER_STONE_FROM_BILLS_GRANDPA
 	const EVENT_GOT_FIRE_STONE_FROM_BILLS_GRANDPA
@@ -1910,7 +1910,7 @@
 	const EVENT_WHIRL_ISLAND_LUGIA_CHAMBER_LUGIA
 	const EVENT_KURTS_HOUSE_KURT_1
 	const EVENT_KURTS_HOUSE_KURT_2
-	const EVENT_SLOWPOKE_WELL_KURT
+	const EVENT_SLOWPOKE_WELL_KURT ; 740
 	const EVENT_KRISS_HOUSE_2F_CONSOLE
 	const EVENT_KRISS_HOUSE_2F_DOLL_1
 	const EVENT_KRISS_HOUSE_2F_DOLL_2
@@ -1926,7 +1926,7 @@
 	const EVENT_BLACKTHORN_CITY_GRAMPS_NOT_BLOCKING_DRAGONS_DEN
 	const EVENT_RUINS_OF_ALPH_KABUTO_CHAMBER_RECEPTIONIST
 	const EVENT_OPENED_MT_SILVER
-	const EVENT_FOUGHT_SNORLAX
+	const EVENT_FOUGHT_SNORLAX ; 750
 	const EVENT_LAKE_OF_RAGE_RED_GYARADOS
 	const EVENT_WAREHOUSE_ENTRANCE_GRANNY
 	const EVENT_WAREHOUSE_ENTRANCE_GRAMPS
@@ -1942,7 +1942,7 @@
 	const EVENT_BLACKTHORN_CITY_SANTOS_OF_SATURDAY
 	const EVENT_ROUTE_40_MONICA_OF_MONDAY
 	const EVENT_LANCES_ROOM_OAK_AND_MARY
-	const EVENT_UNION_CAVE_B2F_LAPRAS
+	const EVENT_UNION_CAVE_B2F_LAPRAS ; 760
 	const EVENT_761
 	const EVENT_RED_IN_MT_SILVER
 	const EVENT_GOLDENROD_DEPT_STORE_5F_HAPPINESS_EVENT_LADY
@@ -1959,7 +1959,7 @@
 	const EVENT_CERULEAN_GYM_ROCKET
 	const EVENT_ROUTE_25_MISTY_BOYFRIEND
 	const EVENT_TRAINERS_IN_CERULEAN_GYM
-	const EVENT_VERMILION_CITY_SNORLAX
+	const EVENT_VERMILION_CITY_SNORLAX ; 770
 	const EVENT_ROUTE_5_6_POKEFAN_M_BLOCKS_UNDERGROUND_PATH
 	const EVENT_SAFFRON_TRAIN_STATION_POPULATION
 	const EVENT_COPYCATS_HOUSE_2F_DOLL
@@ -1975,7 +1975,7 @@
 	const EVENT_PICKED_UP_FOCUS_BAND
 	const EVENT_ROCK_TUNNEL_1F_ELIXER
 	const EVENT_ROCK_TUNNEL_1F_TM_STEEL_WING
-	const EVENT_ROCK_TUNNEL_B1F_IRON
+	const EVENT_ROCK_TUNNEL_B1F_IRON ; 780
 	const EVENT_ROCK_TUNNEL_B1F_PP_UP
 	const EVENT_ROCK_TUNNEL_B1F_REVIVE
 	const EVENT_ROUTE_2_DIRE_HIT
@@ -1992,7 +1992,7 @@
 	const EVENT_KURTS_HOUSE_GRANDDAUGHTER_2
 	const EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_FISHER
 	const EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
-	const EVENT_DRAGON_SHRINE_CLAIR
+	const EVENT_DRAGON_SHRINE_CLAIR ; 790
 	const EVENT_BATTLE_TOWER_BATTLE_ROOM_YOUNGSTER
 	const EVENT_KRISS_HOUSE_1F_NEIGHBOR
 	const EVENT_KRISS_NEIGHBORS_HOUSE_NEIGHBOR
@@ -2008,7 +2008,7 @@
 	const EVENT_PICKED_UP_MYSTIC_WATER_FROM_OMANYTE_ITEM_ROOM
 	const EVENT_PICKED_UP_STARDUST_FROM_OMANYTE_ITEM_ROOM
 	const EVENT_PICKED_UP_STAR_PIECE_FROM_OMANYTE_ITEM_ROOM
-	const EVENT_PICKED_UP_GOLD_BERRY_FROM_AERODACTYL_ITEM_ROOM
+	const EVENT_PICKED_UP_GOLD_BERRY_FROM_AERODACTYL_ITEM_ROOM ; 7a0
 	const EVENT_PICKED_UP_MOON_STONE_FROM_AERODACTYL_ITEM_ROOM
 	const EVENT_PICKED_UP_HEAL_POWDER_FROM_AERODACTYL_ITEM_ROOM
 	const EVENT_PICKED_UP_ENERGY_ROOT_FROM_AERODACTYL_ITEM_ROOM
@@ -2024,7 +2024,7 @@
 	const EVENT_CIANWOOD_CITY_EUSINE
 	const EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
 	const EVENT_SAW_SUICUNE_ON_ROUTE_42
-	const EVENT_SAW_SUICUNE_ON_ROUTE_36
+	const EVENT_SAW_SUICUNE_ON_ROUTE_36 ; 7b0
 	const EVENT_ECRUTEAK_HOUSE_WANDERING_SAGE
 	const EVENT_TIN_TOWER_1F_SUICUNE
 	const EVENT_TIN_TOWER_1F_ENTEI
@@ -2040,7 +2040,7 @@
 	const EVENT_ROUTE_44_MAX_REPEL
 	const EVENT_ICE_PATH_1F_PROTEIN
 	const EVENT_DRAGONS_DEN_B1F_CALCIUM
-	const EVENT_DRAGONS_DEN_B1F_MAX_ELIXER
+	const EVENT_DRAGONS_DEN_B1F_MAX_ELIXER ; 7c0
 	const EVENT_SILVER_CAVE_ROOM_1_ULTRA_BALL
 	const EVENT_SILVER_CAVE_ROOM_2_CALCIUM
 	const EVENT_SILVER_CAVE_ROOM_2_ULTRA_BALL
@@ -2056,5 +2056,4 @@
 	const EVENT_RADIO_TOWER_5F_ULTRA_BALL
 	const EVENT_DARK_CAVE_VIOLET_ENTRANCE_DIRE_HIT
 	const EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
-
-NUM_EVENTS EQU const_value
+NUM_EVENTS EQU const_value ; 7d0
--- a/constants/item_constants.asm
+++ b/constants/item_constants.asm
@@ -354,3 +354,13 @@
 	const HELD_BRIGHTPOWDER
 	const HELD_4E
 	const HELD_FOCUS_BAND
+
+	const_def
+	const ITEMATTR_PRICE
+	const ITEMATTR_PRICE_HI
+	const ITEMATTR_EFFECT
+	const ITEMATTR_PARAM
+	const ITEMATTR_PERMISSIONS
+	const ITEMATTR_POCKET
+	const ITEMATTR_HELP
+NUM_ITEMATTRS EQU const_value
--- a/constants/phone_constants.asm
+++ b/constants/phone_constants.asm
@@ -1,34 +1,43 @@
 
-PHONE_SCHOOLBOY_JACK EQU $05
-PHONE_POKEFAN_BEVERLY EQU $06
-PHONE_SAILOR_HUEY EQU $07
-
-PHONE_COOLTRAINERM_GAVEN EQU $0b
-PHONE_COOLTRAINERF_BETH EQU $0c
-PHONE_BIRDKEEPER_JOSE EQU $0d
-PHONE_COOLTRAINERF_REENA EQU $0e
-PHONE_YOUNGSTER_JOEY EQU $0f
-PHONE_BUG_CATCHER_WADE EQU $10
-PHONE_FISHER_RALPH EQU $11
-PHONE_PICNICKER_LIZ EQU $12
-PHONE_HIKER_ANTHONY EQU $13
-PHONE_CAMPER_TODD EQU $14
-PHONE_PICNICKER_GINA EQU $15
-PHONE_JUGGLER_IRWIN EQU $16
-PHONE_BUG_CATCHER_ARNIE EQU $17
-PHONE_SCHOOLBOY_ALAN EQU $18
-
-PHONE_LASS_DANA EQU $1a
-PHONE_SCHOOLBOY_CHAD EQU $1b
-PHONE_POKEFANM_DEREK EQU $1c
-PHONE_FISHER_TULLY EQU $1d
-PHONE_POKEMANIAC_BRENT EQU $1e
-PHONE_PICNICKER_TIFFANY EQU $1f
-PHONE_BIRDKEEPER_VANCE EQU $20
-PHONE_FISHER_WILTON EQU $21
-PHONE_BLACKBELT_KENJI EQU $22
-PHONE_HIKER_PARRY EQU $23
-PHONE_PICNICKER_ERIN EQU $24
+	const_def
+	const PHONE_00
+	const PHONE_MOM
+	const PHONE_OAK
+	const PHONE_BILL
+	const PHONE_ELM
+	const PHONE_SCHOOLBOY_JACK
+	const PHONE_POKEFAN_BEVERLY
+	const PHONE_SAILOR_HUEY
+	const PHONE_08
+	const PHONE_09
+	const PHONE_0A
+	const PHONE_COOLTRAINERM_GAVEN
+	const PHONE_COOLTRAINERF_BETH
+	const PHONE_BIRDKEEPER_JOSE
+	const PHONE_COOLTRAINERF_REENA
+	const PHONE_YOUNGSTER_JOEY
+	const PHONE_BUG_CATCHER_WADE
+	const PHONE_FISHER_RALPH
+	const PHONE_PICNICKER_LIZ
+	const PHONE_HIKER_ANTHONY
+	const PHONE_CAMPER_TODD
+	const PHONE_PICNICKER_GINA
+	const PHONE_JUGGLER_IRWIN
+	const PHONE_BUG_CATCHER_ARNIE
+	const PHONE_SCHOOLBOY_ALAN
+	const PHONE_19
+	const PHONE_LASS_DANA
+	const PHONE_SCHOOLBOY_CHAD
+	const PHONE_POKEFANM_DEREK
+	const PHONE_FISHER_TULLY
+	const PHONE_POKEMANIAC_BRENT
+	const PHONE_PICNICKER_TIFFANY
+	const PHONE_BIRDKEEPER_VANCE
+	const PHONE_FISHER_WILTON
+	const PHONE_BLACKBELT_KENJI
+	const PHONE_HIKER_PARRY
+	const PHONE_PICNICKER_ERIN
+	const PHONE_BUENA
 
 	const_def
 	const ELMCALL_NONE
--- a/constants/sfx_constants.asm
+++ b/constants/sfx_constants.asm
@@ -1,210 +1,210 @@
 	const_def
 
-	const SFX_DEX_FANFARE_50_79          
-	const SFX_ITEM                       
-	const SFX_CAUGHT_MON                 
-	const SFX_POKEBALLS_PLACED_ON_TABLE  
-	const SFX_POTION                     
-	const SFX_FULL_HEAL                  
-	const SFX_MENU                       
-	const SFX_READ_TEXT                  
-	const SFX_READ_TEXT_2                
-	const SFX_DEX_FANFARE_20_49          
-	const SFX_DEX_FANFARE_80_109         
-	const SFX_POISON                     
-	const SFX_GOT_SAFARI_BALLS           
-	const SFX_BOOT_PC                    
-	const SFX_SHUT_DOWN_PC               
-	const SFX_CHOOSE_PC_OPTION           
-	const SFX_ESCAPE_ROPE                
-	const SFX_PUSH_BUTTON                
-	const SFX_SECOND_PART_OF_ITEMFINDER  
-	const SFX_WARP_TO                    
-	const SFX_WARP_FROM                  
-	const SFX_CHANGE_DEX_MODE            
-	const SFX_JUMP_OVER_LEDGE            
-	const SFX_GRASS_RUSTLE               
-	const SFX_FLY                        
-	const SFX_WRONG                      
-	const SFX_SQUEAK                     
-	const SFX_STRENGTH                   
-	const SFX_BOAT                       
-	const SFX_WALL_OPEN                  
-	const SFX_PLACE_PUZZLE_PIECE_DOWN    
-	const SFX_ENTER_DOOR                 
-	const SFX_SWITCH_POKEMON             
-	const SFX_TALLY                      
-	const SFX_TRANSACTION                
-	const SFX_EXIT_BUILDING              
-	const SFX_BUMP                       
-	const SFX_SAVE                       
-	const SFX_POKEFLUTE                  
-	const SFX_ELEVATOR_END               
-	const SFX_THROW_BALL                 
-	const SFX_BALL_POOF                  
-	const SFX_UNKNOWN_2A                 
-	const SFX_RUN                        
-	const SFX_SLOT_MACHINE_START         
-	const SFX_FANFARE                    
-	const SFX_PECK                       
-	const SFX_KINESIS                    
-	const SFX_LICK                       
-	const SFX_POUND                      
-	const SFX_MOVE_PUZZLE_PIECE          
-	const SFX_COMET_PUNCH                
-	const SFX_MEGA_PUNCH                 
-	const SFX_SCRATCH                    
-	const SFX_VICEGRIP                   
-	const SFX_RAZOR_WIND                 
-	const SFX_CUT                        
-	const SFX_WING_ATTACK                
-	const SFX_WHIRLWIND                  
-	const SFX_BIND                       
-	const SFX_VINE_WHIP                  
-	const SFX_DOUBLE_KICK                
-	const SFX_MEGA_KICK                  
-	const SFX_HEADBUTT                   
-	const SFX_HORN_ATTACK                
-	const SFX_TACKLE                     
-	const SFX_POISON_STING               
-	const SFX_POWDER                     
-	const SFX_DOUBLESLAP                 
-	const SFX_BITE                       
-	const SFX_JUMP_KICK                  
-	const SFX_STOMP                      
-	const SFX_TAIL_WHIP                  
-	const SFX_KARATE_CHOP                
-	const SFX_SUBMISSION                 
-	const SFX_WATER_GUN                  
-	const SFX_SWORDS_DANCE               
-	const SFX_THUNDER                    
-	const SFX_SUPERSONIC                 
-	const SFX_LEER                       
-	const SFX_EMBER                      
-	const SFX_BUBBLEBEAM                 
-	const SFX_HYDRO_PUMP                 
-	const SFX_SURF                       
-	const SFX_PSYBEAM                    
-	const SFX_CHARGE                     
-	const SFX_THUNDERSHOCK               
-	const SFX_PSYCHIC                    
-	const SFX_SCREECH                    
-	const SFX_BONE_CLUB                  
-	const SFX_SHARPEN                    
-	const SFX_EGG_BOMB                   
-	const SFX_SING                       
-	const SFX_HYPER_BEAM                 
-	const SFX_SHINE                      
-	const SFX_UNKNOWN_5F                 
-	const SFX_UNKNOWN_60                 
-	const SFX_UNKNOWN_61                 
-	const SFX_UNKNOWN_62                 
-	const SFX_UNKNOWN_63                 
-	const SFX_BURN                       
-	const SFX_TITLE_SCREEN_ENTRANCE      
-	const SFX_UNKNOWN_66                 
-	const SFX_GET_COIN_FROM_SLOTS        
-	const SFX_PAY_DAY                    
-	const SFX_METRONOME                  
-	const SFX_CALL                       
-	const SFX_HANG_UP                    
-	const SFX_NO_SIGNAL                  
-	const SFX_SANDSTORM                  
-	const SFX_ELEVATOR                   
-	const SFX_PROTECT                    
-	const SFX_SKETCH                     
-	const SFX_RAIN_DANCE                 
-	const SFX_AEROBLAST                  
-	const SFX_SPARK                      
-	const SFX_CURSE                      
-	const SFX_RAGE                       
-	const SFX_THIEF                      
-	const SFX_THIEF_2                    
-	const SFX_SPIDER_WEB                 
-	const SFX_MIND_READER                
-	const SFX_NIGHTMARE                  
-	const SFX_SNORE                      
-	const SFX_SWEET_KISS                 
-	const SFX_SWEET_KISS_2               
-	const SFX_BELLY_DRUM                 
-	const SFX_UNKNOWN_7F                 
-	const SFX_SLUDGE_BOMB                
-	const SFX_FORESIGHT                  
-	const SFX_SPITE                      
-	const SFX_OUTRAGE                    
-	const SFX_PERISH_SONG                
-	const SFX_GIGA_DRAIN                 
-	const SFX_ATTRACT                    
-	const SFX_KINESIS_2                  
-	const SFX_ZAP_CANNON                 
-	const SFX_MEAN_LOOK                  
-	const SFX_HEAL_BELL                  
-	const SFX_RETURN                     
-	const SFX_EXP_BAR                    
-	const SFX_MILK_DRINK                 
-	const SFX_PRESENT                    
-	const SFX_MORNING_SUN                
-	const SFX_LEVEL_UP                   
-	const SFX_KEY_ITEM                   
-	const SFX_FANFARE_2                  
-	const SFX_REGISTER_PHONE_NUMBER      
-	const SFX_3RD_PLACE                  
-	const SFX_GET_EGG_FROM_DAYCARE_MAN   
-	const SFX_GET_EGG_FROM_DAYCARE_LADY  
-	const SFX_MOVE_DELETED               
-	const SFX_2ND_PLACE                  
-	const SFX_1ST_PLACE                  
-	const SFX_CHOOSE_A_CARD              
-	const SFX_GET_TM                     
-	const SFX_GET_BADGE                  
-	const SFX_QUIT_SLOTS                 
-	const SFX_EGG_CRACK                  
-	const SFX_DEX_FANFARE_LESS_THAN_20   
-	const SFX_DEX_FANFARE_140_169        
-	const SFX_DEX_FANFARE_170_199        
-	const SFX_DEX_FANFARE_200_229        
-	const SFX_DEX_FANFARE_230_PLUS       
-	const SFX_EVOLVED                    
-	const SFX_MASTER_BALL                
-	const SFX_EGG_HATCH                  
+	const SFX_DEX_FANFARE_50_79
+	const SFX_ITEM
+	const SFX_CAUGHT_MON
+	const SFX_POKEBALLS_PLACED_ON_TABLE
+	const SFX_POTION
+	const SFX_FULL_HEAL
+	const SFX_MENU
+	const SFX_READ_TEXT
+	const SFX_READ_TEXT_2
+	const SFX_DEX_FANFARE_20_49
+	const SFX_DEX_FANFARE_80_109
+	const SFX_POISON
+	const SFX_GOT_SAFARI_BALLS
+	const SFX_BOOT_PC
+	const SFX_SHUT_DOWN_PC
+	const SFX_CHOOSE_PC_OPTION
+	const SFX_ESCAPE_ROPE
+	const SFX_PUSH_BUTTON
+	const SFX_SECOND_PART_OF_ITEMFINDER
+	const SFX_WARP_TO
+	const SFX_WARP_FROM
+	const SFX_CHANGE_DEX_MODE
+	const SFX_JUMP_OVER_LEDGE
+	const SFX_GRASS_RUSTLE
+	const SFX_FLY
+	const SFX_WRONG
+	const SFX_SQUEAK
+	const SFX_STRENGTH
+	const SFX_BOAT
+	const SFX_WALL_OPEN
+	const SFX_PLACE_PUZZLE_PIECE_DOWN
+	const SFX_ENTER_DOOR
+	const SFX_SWITCH_POKEMON
+	const SFX_TALLY
+	const SFX_TRANSACTION
+	const SFX_EXIT_BUILDING
+	const SFX_BUMP
+	const SFX_SAVE
+	const SFX_POKEFLUTE
+	const SFX_ELEVATOR_END
+	const SFX_THROW_BALL
+	const SFX_BALL_POOF
+	const SFX_UNKNOWN_2A
+	const SFX_RUN
+	const SFX_SLOT_MACHINE_START
+	const SFX_FANFARE
+	const SFX_PECK
+	const SFX_KINESIS
+	const SFX_LICK
+	const SFX_POUND
+	const SFX_MOVE_PUZZLE_PIECE
+	const SFX_COMET_PUNCH
+	const SFX_MEGA_PUNCH
+	const SFX_SCRATCH
+	const SFX_VICEGRIP
+	const SFX_RAZOR_WIND
+	const SFX_CUT
+	const SFX_WING_ATTACK
+	const SFX_WHIRLWIND
+	const SFX_BIND
+	const SFX_VINE_WHIP
+	const SFX_DOUBLE_KICK
+	const SFX_MEGA_KICK
+	const SFX_HEADBUTT
+	const SFX_HORN_ATTACK
+	const SFX_TACKLE
+	const SFX_POISON_STING
+	const SFX_POWDER
+	const SFX_DOUBLESLAP
+	const SFX_BITE
+	const SFX_JUMP_KICK
+	const SFX_STOMP
+	const SFX_TAIL_WHIP
+	const SFX_KARATE_CHOP
+	const SFX_SUBMISSION
+	const SFX_WATER_GUN
+	const SFX_SWORDS_DANCE
+	const SFX_THUNDER
+	const SFX_SUPERSONIC
+	const SFX_LEER
+	const SFX_EMBER
+	const SFX_BUBBLEBEAM
+	const SFX_HYDRO_PUMP
+	const SFX_SURF
+	const SFX_PSYBEAM
+	const SFX_CHARGE
+	const SFX_THUNDERSHOCK
+	const SFX_PSYCHIC
+	const SFX_SCREECH
+	const SFX_BONE_CLUB
+	const SFX_SHARPEN
+	const SFX_EGG_BOMB
+	const SFX_SING
+	const SFX_HYPER_BEAM
+	const SFX_SHINE
+	const SFX_UNKNOWN_5F
+	const SFX_UNKNOWN_60
+	const SFX_UNKNOWN_61
+	const SFX_UNKNOWN_62
+	const SFX_UNKNOWN_63
+	const SFX_BURN
+	const SFX_TITLE_SCREEN_ENTRANCE
+	const SFX_UNKNOWN_66
+	const SFX_GET_COIN_FROM_SLOTS
+	const SFX_PAY_DAY
+	const SFX_METRONOME
+	const SFX_CALL
+	const SFX_HANG_UP
+	const SFX_NO_SIGNAL
+	const SFX_SANDSTORM
+	const SFX_ELEVATOR
+	const SFX_PROTECT
+	const SFX_SKETCH
+	const SFX_RAIN_DANCE
+	const SFX_AEROBLAST
+	const SFX_SPARK
+	const SFX_CURSE
+	const SFX_RAGE
+	const SFX_THIEF
+	const SFX_THIEF_2
+	const SFX_SPIDER_WEB
+	const SFX_MIND_READER
+	const SFX_NIGHTMARE
+	const SFX_SNORE
+	const SFX_SWEET_KISS
+	const SFX_SWEET_KISS_2
+	const SFX_BELLY_DRUM
+	const SFX_UNKNOWN_7F
+	const SFX_SLUDGE_BOMB
+	const SFX_FORESIGHT
+	const SFX_SPITE
+	const SFX_OUTRAGE
+	const SFX_PERISH_SONG
+	const SFX_GIGA_DRAIN
+	const SFX_ATTRACT
+	const SFX_KINESIS_2
+	const SFX_ZAP_CANNON
+	const SFX_MEAN_LOOK
+	const SFX_HEAL_BELL
+	const SFX_RETURN
+	const SFX_EXP_BAR
+	const SFX_MILK_DRINK
+	const SFX_PRESENT
+	const SFX_MORNING_SUN
+	const SFX_LEVEL_UP
+	const SFX_KEY_ITEM
+	const SFX_FANFARE_2
+	const SFX_REGISTER_PHONE_NUMBER
+	const SFX_3RD_PLACE
+	const SFX_GET_EGG_FROM_DAYCARE_MAN
+	const SFX_GET_EGG_FROM_DAYCARE_LADY
+	const SFX_MOVE_DELETED
+	const SFX_2ND_PLACE
+	const SFX_1ST_PLACE
+	const SFX_CHOOSE_A_CARD
+	const SFX_GET_TM
+	const SFX_GET_BADGE
+	const SFX_QUIT_SLOTS
+	const SFX_EGG_CRACK
+	const SFX_DEX_FANFARE_LESS_THAN_20
+	const SFX_DEX_FANFARE_140_169
+	const SFX_DEX_FANFARE_170_199
+	const SFX_DEX_FANFARE_200_229
+	const SFX_DEX_FANFARE_230_PLUS
+	const SFX_EVOLVED
+	const SFX_MASTER_BALL
+	const SFX_EGG_HATCH
 	const SFX_GS_INTRO_CHARIZARD_FIREBALL
-	const SFX_GS_INTRO_POKEMON_APPEARS   
-	const SFX_FLASH                      
-	const SFX_GAME_FREAK_LOGO_GS         
-	const SFX_NOT_VERY_EFFECTIVE         
-	const SFX_DAMAGE                     
-	const SFX_SUPER_EFFECTIVE            
-	const SFX_BALL_BOUNCE                
-	const SFX_MOONLIGHT                  
-	const SFX_ENCORE                     
-	const SFX_BEAT_UP                    
-	const SFX_BATON_PASS                 
-	const SFX_BALL_WIGGLE                
-	const SFX_SWEET_SCENT                
-	const SFX_SWEET_SCENT_2              
-	const SFX_HIT_END_OF_EXP_BAR         
-	const SFX_GIVE_TRADEMON              
-	const SFX_GET_TRADEMON               
-	const SFX_TRAIN_ARRIVED              
-	const SFX_STOP_SLOT                  
-	const SFX_2_BOOPS                    
-	const SFX_GLASS_TING                 
-	const SFX_GLASS_TING_2               
+	const SFX_GS_INTRO_POKEMON_APPEARS
+	const SFX_FLASH
+	const SFX_GAME_FREAK_LOGO_GS
+	const SFX_NOT_VERY_EFFECTIVE
+	const SFX_DAMAGE
+	const SFX_SUPER_EFFECTIVE
+	const SFX_BALL_BOUNCE
+	const SFX_MOONLIGHT
+	const SFX_ENCORE
+	const SFX_BEAT_UP
+	const SFX_BATON_PASS
+	const SFX_BALL_WIGGLE
+	const SFX_SWEET_SCENT
+	const SFX_SWEET_SCENT_2
+	const SFX_HIT_END_OF_EXP_BAR
+	const SFX_GIVE_TRADEMON
+	const SFX_GET_TRADEMON
+	const SFX_TRAIN_ARRIVED
+	const SFX_STOP_SLOT
+	const SFX_2_BOOPS
+	const SFX_GLASS_TING
+	const SFX_GLASS_TING_2
 
-	const SFX_INTRO_UNOWN_1              
-	const SFX_INTRO_UNOWN_2              
-	const SFX_INTRO_UNOWN_3              
-	const SFX_DITTO_POP_UP               
-	const SFX_DITTO_TRANSFORM            
-	const SFX_INTRO_SUICUNE_1            
-	const SFX_INTRO_PICHU                
-	const SFX_INTRO_SUICUNE_2            
-	const SFX_INTRO_SUICUNE_3            
-	const SFX_DITTO_BOUNCE               
-	const SFX_INTRO_SUICUNE_4            
-	const SFX_GAME_FREAK_PRESENTS        
-	const SFX_TINGLE                     
-	const SFX_UNKNOWN_CB                 
-	const SFX_TWO_PC_BEEPS               
-	const SFX_4_NOTE_DITTY               
-	const SFX_TWINKLE                    
+	const SFX_INTRO_UNOWN_1
+	const SFX_INTRO_UNOWN_2
+	const SFX_INTRO_UNOWN_3
+	const SFX_DITTO_POP_UP
+	const SFX_DITTO_TRANSFORM
+	const SFX_INTRO_SUICUNE_1
+	const SFX_INTRO_PICHU
+	const SFX_INTRO_SUICUNE_2
+	const SFX_INTRO_SUICUNE_3
+	const SFX_DITTO_BOUNCE
+	const SFX_INTRO_SUICUNE_4
+	const SFX_GAME_FREAK_PRESENTS
+	const SFX_TINGLE
+	const SFX_UNKNOWN_CB
+	const SFX_TWO_PC_BEEPS
+	const SFX_4_NOTE_DITTY
+	const SFX_TWINKLE
--- a/engine/events_2.asm
+++ b/engine/events_2.asm
@@ -1,7 +1,7 @@
 ; More overworld event handling.
 
 
-WarpToLastSpawn:: ; 97c28
+WarpToSpawnPoint:: ; 97c28
 	ld hl, StatusFlags2
 	res 1, [hl]
 	res 2, [hl]
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -2446,12 +2446,12 @@
 ; 5041
 
 Function5041: ; 5041
-	call Function5055
+	call CopyMovementPointer
 .loop
 	xor a
 	ld [wc2ea], a
-	call Function505e
-	call Function506b
+	call GetMovementByte
+	call DoMovementFunction
 	ld a, [wc2ea]
 	and a
 	jr nz, .loop
@@ -2458,7 +2458,7 @@
 	ret
 ; 5055
 
-Function5055: ; 5055
+CopyMovementPointer: ; 5055
 	ld a, l
 	ld [wc2eb], a
 	ld a, h
@@ -2466,7 +2466,7 @@
 	ret
 ; 505e
 
-Function505e: ; 505e
+GetMovementByte: ; 505e
 	ld hl, wc2eb
 	ld a, [hli]
 	ld h, [hl]
@@ -2480,7 +2480,7 @@
 	ret
 ; 506b
 
-Function506b: ; 506b
+DoMovementFunction: ; 506b
 	push af
 	call Function54b8
 	pop af
--- a/engine/movement.asm
+++ b/engine/movement.asm
@@ -130,7 +130,7 @@
 	ld hl, $000b
 	add hl, bc
 	ld [hl], $4
-	call Function505e
+	call GetMovementByte
 	ld hl, $000a
 	add hl, bc
 	ld [hl], a
@@ -150,7 +150,7 @@
 	ld hl, $000c
 	add hl, bc
 	ld [hl], a
-	call Function505e
+	call GetMovementByte
 	ld hl, $000a
 	add hl, bc
 	ld [hl], a
@@ -174,7 +174,7 @@
 ; 5196
 
 Function5196: ; 5196
-	call Function505e
+	call GetMovementByte
 	ld hl, $000a
 	add hl, bc
 	ld [hl], a
@@ -228,7 +228,7 @@
 	ld hl, $001b
 	add hl, bc
 	ld [hl], $0
-	call Function505e
+	call GetMovementByte
 	ld hl, $000a
 	add hl, bc
 	ld [hl], a
@@ -302,7 +302,7 @@
 ; parameters:
 ;	duration (DecimalParam)
 
-	call Function505e
+	call GetMovementByte
 	jr Function5247
 
 Function5247: ; 5247
@@ -411,7 +411,7 @@
 ; parameters:
 ;	displacement (DecimalParam)
 
-	call Function505e
+	call GetMovementByte
 	call Function5565
 	jp Function5065
 ; 52de
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -500,7 +500,7 @@
 	jr c, .asm_1039c
 	call Function10a1d
 	ld hl, UnknownText_0x10ae9
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
 	push af
 	call Function1c07
@@ -1673,7 +1673,7 @@
 ; 0x10b0c
 
 UnknownText_0x10b0c: ; 0x10b0c
-	; 
+	;
 	text_jump UnknownText_0x1c0c83
 	db "@"
 ; 0x10b11
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -912,12 +912,12 @@
 ;     win_text_pointer (TextPointerLabelParam)
 ;     loss_text_pointer (TextPointerLabelParam)
 
-	ld hl, WalkingTile
+	ld hl, wWinTextPointer ; d047
 	call GetScriptByte
 	ld [hli], a
 	call GetScriptByte
 	ld [hli], a
-	ld hl, wd048 + 1
+	ld hl, wLossTextPointer ; d049; this is unnecessary
 	call GetScriptByte
 	ld [hli], a
 	call GetScriptByte
@@ -2675,7 +2675,7 @@
 	ld e, a
 	call GetScriptByte
 	ld d, a
-	ld b, 1 ; set
+	ld b, SET_FLAG
 	call EventFlagAction
 	ret
 ; 0x97996
@@ -2689,7 +2689,7 @@
 	ld e, a
 	call GetScriptByte
 	ld d, a
-	ld b, 0 ; clear
+	ld b, RESET_FLAG
 	call EventFlagAction
 	ret
 ; 0x979a4
@@ -2703,7 +2703,7 @@
 	ld e, a
 	call GetScriptByte
 	ld d, a
-	ld b, 2 ; check
+	ld b, CHECK_FLAG
 	call EventFlagAction
 	ld a, c
 	and a
--- a/engine/spawn_points.asm
+++ b/engine/spawn_points.asm
@@ -41,10 +41,10 @@
 	spawn BLACKTHORN,  BLACKTHORN_CITY,            21, 30
 	spawn MT_SILVER,   SILVER_CAVE_OUTSIDE,        23, 20
 	spawn FAST_SHIP,   FAST_SHIP_CABINS_SW_SSW_NW,  6,  2
+NUM_SPAWNS EQU const_value
 const_value = -1
 	spawn N_A,         N_A,                        -1, -1
 
-NUM_SPAWNS EQU const_value
 
 
 LoadSpawnPoint: ; 1531f
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -14,7 +14,7 @@
 ; c029
 
 SpecialsPointers:: ; c029
-	add_special WarpToLastSpawn
+	add_special WarpToSpawnPoint
 
 ; Communications
 	add_special Special_SetBitsForLinkTradeRequest
@@ -58,7 +58,7 @@
 	add_special Function90913
 	add_special Functionc2c0
 	add_special Functionc2cd
-	add_special Functionc355
+	add_special MapRadio
 	add_special Functionc360
 	add_special Functionc373
 	add_special Functionc380
@@ -92,7 +92,7 @@
 	add_special Special_SelectRandomBugContestContestants
 	add_special Functionc3fc
 	add_special Function26feb
-	add_special Function27043
+	add_special ToggleDecorationsVisibility
 	add_special SpecialGiveShuckle
 	add_special SpecialReturnShuckle
 	add_special Function73f7
@@ -150,7 +150,7 @@
 	add_special Function101225
 	add_special Function101231
 	add_special Function4925b
-	add_special Function8adef
+	add_special SpecialOmanyteChamber
 	add_special Function11c1ab
 	add_special Function170687
 	add_special Function8ae68
@@ -367,10 +367,10 @@
 	ret
 ; c355
 
-Functionc355: ; c355
+MapRadio: ; c355
 	ld a, [ScriptVar]
 	ld e, a
-	callba Function91a53
+	callba PlayRadio
 	ret
 ; c360
 
--- a/engine/std_scripts.asm
+++ b/engine/std_scripts.asm
@@ -204,7 +204,7 @@
 Radio1Script:
 	loadfont
 	writebyte $0
-	special Functionc355
+	special MapRadio
 	loadmovesprites
 	end
 
@@ -212,7 +212,7 @@
 ; Lucky Channel
 	loadfont
 	writebyte $4
-	special Functionc355
+	special MapRadio
 	loadmovesprites
 	end
 
--- a/gbhw.asm
+++ b/gbhw.asm
@@ -51,7 +51,7 @@
 rTAC_ON        EQU 2
 rTAC_4096_HZ   EQU 0
 rTAC_262144_HZ EQU 1
-rTAC_65536_HZ  EQU 2 
+rTAC_65536_HZ  EQU 2
 rTAC_16384_HZ  EQU 3
 rIF         EQU $ff0f ; Interrupt Flag (R/W)
 rNR10       EQU $ff10 ; Channel 1 Sweep register (R/W)
--- a/home.asm
+++ b/home.asm
@@ -481,7 +481,7 @@
 ; 31cd
 
 
-Function31cd:: ; 31cd
+ExitMenuCallScript:: ; 31cd
 ; Push pointer hl in the current bank to wd0e8.
 	ld a, [hROMBank]
 
@@ -1379,7 +1379,7 @@
 	push de
 
 ; Has a sprite
-	ld hl, $0001
+	ld hl, MAPOBJECT_SPRITE
 	add hl, de
 	ld a, [hl]
 	and a
@@ -1386,7 +1386,7 @@
 	jr z, .next
 
 ; Is a trainer
-	ld hl, $0008
+	ld hl, MAPOBJECT_COLOR
 	add hl, de
 	ld a, [hl]
 	and $f
@@ -1394,10 +1394,10 @@
 	jr nz, .next
 
 ; Is visible on the map
-	ld hl, $0000
+	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, de
 	ld a, [hl]
-	cp $ff
+	cp -1
 	jr z, .next
 
 ; Is facing the player...
@@ -1406,7 +1406,7 @@
 	jr nc, .next
 
 ; ...within their sight range
-	ld hl, $0009
+	ld hl, MAPOBJECT_RANGE
 	add hl, de
 	ld a, [hl]
 	cp b
@@ -1415,7 +1415,7 @@
 ; And hasn't already been beaten
 	push bc
 	push de
-	ld hl, $000a
+	ld hl, MAPOBJECT_SCRIPT_POINTER
 	add hl, de
 	ld a, [hli]
 	ld h, [hl]
@@ -1429,7 +1429,7 @@
 	pop de
 	pop bc
 	and a
-	jr z, .asm_3666
+	jr z, .startbattle
 
 .next
 	pop de
@@ -1445,7 +1445,7 @@
 	xor a
 	ret
 
-.asm_3666
+.startbattle
 	pop de
 	pop af
 	ld [$ffe0], a
@@ -1457,9 +1457,9 @@
 ; 3674
 
 Function3674:: ; 3674
-	ld a, $1
+	ld a, 1
 	ld [CurFruit], a
-	ld a, $ff
+	ld a, -1
 	ld [wd040], a
 
 Function367e:: ; 367e
@@ -1467,7 +1467,7 @@
 	ld [EngineBuffer1], a
 	ld a, [$ffe0]
 	call GetMapObject
-	ld hl, $000a
+	ld hl, MAPOBJECT_SCRIPT_POINTER
 	add hl, bc
 	ld a, [EngineBuffer1]
 	call GetFarHalfword
@@ -1564,13 +1564,13 @@
 ; 36f5
 
 
-Function36f5:: ; 36f5
+CheckTrainerFlag:: ; 36f5
 	push bc
-	ld hl, $0001
+	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, bc
 	ld a, [hl]
 	call GetMapObject
-	ld hl, OBJECT_STEP_DURATION
+	ld hl, MAPOBJECT_SCRIPT_POINTER
 	add hl, bc
 	ld a, [hli]
 	ld h, [hl]
@@ -1580,7 +1580,7 @@
 	ld d, h
 	ld e, l
 	push de
-	ld b, $2 ; check
+	ld b, CHECK_FLAG
 	call EventFlagAction
 	pop de
 	ld a, c
--- a/home/map.asm
+++ b/home/map.asm
@@ -1774,9 +1774,9 @@
 
 GetBlockLocation:: ; 2a66
 	ld a, [MapWidth]
-	add $6
+	add 6
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld hl, wc801
 	add hl, bc
 	ld a, e
@@ -1797,7 +1797,7 @@
 .nope
 	ld c, d
 	srl c
-	ld b, $0
+	ld b, 0
 	add hl, bc
 	ret
 ; 2a8b
--- a/home/menu.asm
+++ b/home/menu.asm
@@ -21,9 +21,9 @@
 ; 1d4f
 
 
-Function1d4f:: ; 1d4f
+MenuTextBox:: ; 1d4f
 	push hl
-	call Function1d58
+	call LoadMenuTextBox
 	pop hl
 	jp PrintText
 ; 1d57
@@ -32,7 +32,7 @@
 	ret
 ; 1d58
 
-Function1d58:: ; 1d58
+LoadMenuTextBox:: ; 1d58
 	ld hl, MenuDataHeader_0x1d5f
 	call LoadMenuDataHeader
 	ret
@@ -46,8 +46,8 @@
 	db 0 ; default option
 ; 1d67
 
-Function1d67:: ; 1d67
-	call Function1d4f
+MenuTextBoxBackup:: ; 1d67
+	call MenuTextBox
 	call WriteBackup
 	ret
 ; 1d6e
@@ -252,7 +252,7 @@
 MenuWriteText:: ; 0x1e8c
 	xor a
 	ld [hBGMapMode], a
-	call Function1ebd ; sort out the text 
+	call Function1ebd ; sort out the text
 	call Function1eda ; actually write it
 	call Function2e31
 	ld a, [hOAMUpdate]
@@ -530,7 +530,7 @@
 ; 2009
 
 
-PlayClickSFX:: ; 2009 
+PlayClickSFX:: ; 2009
 	push de
 	ld de, SFX_READ_TEXT_2
 	call PlaySFX
@@ -539,7 +539,7 @@
 ; 0x2012
 
 Function2012:: ; 2012
-	call Function1d4f
+	call MenuTextBox
 	call CloseText
 	call Function1c07
 	ret
--- a/home/vblank.asm
+++ b/home/vblank.asm
@@ -363,7 +363,7 @@
 ; bg map
 ; tiles
 ; joypad
-; 
+;
 
 	ld a, [hROMBank]
 	ld [hROMBankBackup], a
--- a/items/item_attributes.asm
+++ b/items/item_attributes.asm
@@ -1,2051 +1,777 @@
+item_attribute: macro
+	; price, effect, param, permissions, pocket, battle permissions
+	dw \1
+	db \2, \3, \4, \5, \6
+	endm
+
 Item1Attributes:
 
 ; MASTER BALL
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 0, NONE, 0, CANT_SELECT, BALL, $06
 
 Item2Attributes:
 
 ; ULTRA BALL
-	dw 1200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 1200, NONE, 0, CANT_SELECT, BALL, $06
 
 ; BRIGHTPOWDER
-	dw 10 ; price
-	db HELD_BRIGHTPOWDER ; effect
-	db 20 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 10, HELD_BRIGHTPOWDER, 20, CANT_SELECT, ITEM, $00
 
 ; GREAT BALL
-	dw 600 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 600, NONE, 0, CANT_SELECT, BALL, $06
 
 ; # BALL
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 200, NONE, 0, CANT_SELECT, BALL, $06
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; BICYCLE
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_TOSS, KEY_ITEM, $60
 
 ; MOON STONE
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; ANTIDOTE
-	dw 100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 100, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; BURN HEAL
-	dw 250 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 250, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; ICE HEAL
-	dw 250 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 250, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; AWAKENING
-	dw 250 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 250, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; PARLYZ HEAL
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; FULL RESTORE
-	dw 3000 ; price
-	db NONE ; effect
-	db 255 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 3000, NONE, -1, CANT_SELECT, ITEM, $55
 
 ; MAX POTION
-	dw 2500 ; price
-	db NONE ; effect
-	db 255 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 2500, NONE, -1, CANT_SELECT, ITEM, $55
 
 ; HYPER POTION
-	dw 1200 ; price
-	db NONE ; effect
-	db 200 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 1200, NONE, 200, CANT_SELECT, ITEM, $55
 
 ; SUPER POTION
-	dw 700 ; price
-	db NONE ; effect
-	db 50 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 700, NONE, 50, CANT_SELECT, ITEM, $55
 
 ; POTION
-	dw 300 ; price
-	db NONE ; effect
-	db 20 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 300, NONE, 20, CANT_SELECT, ITEM, $55
 
 ; ESCAPE ROPE
-	dw 550 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $60 ; overworld
+	item_attribute 550, NONE, 0, CANT_SELECT, ITEM, $60
 
 ; REPEL
-	dw 350 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $40 ; current menu
+	item_attribute 350, NONE, 0, CANT_SELECT, ITEM, $40
 
 ; MAX ELIXER
-	dw 4500 ; price
-	db NONE ; effect
-	db 255 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 4500, NONE, -1, CANT_SELECT, ITEM, $55
 
 ; FIRE STONE
-	dw 2100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 2100, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; THUNDERSTONE
-	dw 2100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 2100, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; WATER STONE
-	dw 2100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 2100, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; HP UP
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; PROTEIN
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; IRON
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; CARBOS
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; LUCKY PUNCH
-	dw 10 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 10, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; CALCIUM
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; RARE CANDY
-	dw 4800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 4800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; X ACCURACY
-	dw 950 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 950, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; LEAF STONE
-	dw 2100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 2100, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; METAL POWDER
-	dw 10 ; price
-	db HELD_METAL_POWDER ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 10, HELD_METAL_POWDER, 10, CANT_SELECT, ITEM, $00
 
 ; NUGGET
-	dw 10000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 10000, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; # DOLL
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 1000, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; FULL HEAL
-	dw 600 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 600, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; REVIVE
-	dw 1500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 1500, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; MAX REVIVE
-	dw 4000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 4000, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; GUARD SPEC.
-	dw 700 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 700, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; SUPER REPEL
-	dw 500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $40 ; current menu
+	item_attribute 500, NONE, 0, CANT_SELECT, ITEM, $40
 
 ; MAX REPEL
-	dw 700 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $40 ; current menu
+	item_attribute 700, NONE, 0, CANT_SELECT, ITEM, $40
 
 ; DIRE HIT
-	dw 650 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 650, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; FRESH WATER
-	dw 200 ; price
-	db NONE ; effect
-	db 50 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 200, NONE, 50, CANT_SELECT, ITEM, $55
 
 ; SODA POP
-	dw 300 ; price
-	db NONE ; effect
-	db 60 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 300, NONE, 60, CANT_SELECT, ITEM, $55
 
 ; LEMONADE
-	dw 350 ; price
-	db NONE ; effect
-	db 80 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 350, NONE, 80, CANT_SELECT, ITEM, $55
 
 ; X ATTACK
-	dw 500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 500, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; X DEFEND
-	dw 550 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 550, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; X SPEED
-	dw 350 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 350, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; X SPECIAL
-	dw 350 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $06 ; ball
+	item_attribute 350, NONE, 0, CANT_SELECT, ITEM, $06
 
 ; COIN CASE
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $40 ; current menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $40
 
 ; ITEMFINDER
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_TOSS, KEY_ITEM, $60
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; EXP.SHARE
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 3000, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; OLD ROD
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_TOSS, KEY_ITEM, $60
 
 ; GOOD ROD
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_TOSS, KEY_ITEM, $60
 
 ; SILVER LEAF
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 1000, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; SUPER ROD
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_TOSS, KEY_ITEM, $60
 
 ; PP UP
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; ETHER
-	dw 1200 ; price
-	db NONE ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 1200, NONE, 10, CANT_SELECT, ITEM, $55
 
 ; MAX ETHER
-	dw 2000 ; price
-	db NONE ; effect
-	db 255 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 2000, NONE, -1, CANT_SELECT, ITEM, $55
 
 ; ELIXER
-	dw 3000 ; price
-	db NONE ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 3000, NONE, 10, CANT_SELECT, ITEM, $55
 
 ; RED SCALE
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; SECRETPOTION
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; S.S.TICKET
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; MYSTERY EGG
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; CLEAR BELL
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; SILVER WING
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; MOOMOO MILK
-	dw 500 ; price
-	db NONE ; effect
-	db 100 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 500, NONE, 100, CANT_SELECT, ITEM, $55
 
 ; QUICK CLAW
-	dw 100 ; price
-	db HELD_QUICK_CLAW ; effect
-	db 60 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_QUICK_CLAW, 60, CANT_SELECT, ITEM, $00
 
 ; PSNCUREBERRY
-	dw 10 ; price
-	db HELD_HEAL_POISON ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_HEAL_POISON, 0, CANT_SELECT, ITEM, $55
 
 ; GOLD LEAF
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 1000, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; SOFT SAND
-	dw 100 ; price
-	db HELD_GROUND_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_GROUND_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; SHARP BEAK
-	dw 100 ; price
-	db HELD_FLYING_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_FLYING_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; PRZCUREBERRY
-	dw 10 ; price
-	db HELD_HEAL_PARALYZE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_HEAL_PARALYZE, 0, CANT_SELECT, ITEM, $55
 
 ; BURNT BERRY
-	dw 10 ; price
-	db HELD_HEAL_FREEZE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_HEAL_FREEZE, 0, CANT_SELECT, ITEM, $55
 
 ; ICE BERRY
-	dw 10 ; price
-	db HELD_HEAL_BURN ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_HEAL_BURN, 0, CANT_SELECT, ITEM, $55
 
 ; POISON BARB
-	dw 100 ; price
-	db HELD_POISON_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_POISON_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; KING'S ROCK
-	dw 100 ; price
-	db HELD_TRADE_EVOLVE ; effect
-	db 30 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_TRADE_EVOLVE, 30, CANT_SELECT, ITEM, $00
 
 ; BITTER BERRY
-	dw 10 ; price
-	db HELD_HEAL_CONFUSION ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $05 ; heal menu (battle only)
+	item_attribute 10, HELD_HEAL_CONFUSION, 0, CANT_SELECT, ITEM, $05
 
 ; MINT BERRY
-	dw 10 ; price
-	db HELD_HEAL_SLEEP ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_HEAL_SLEEP, 0, CANT_SELECT, ITEM, $55
 
 ; RED APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; TINYMUSHROOM
-	dw 500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 500, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BIG MUSHROOM
-	dw 5000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 5000, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; SILVERPOWDER
-	dw 100 ; price
-	db HELD_BUG_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_BUG_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; BLU APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; AMULET COIN
-	dw 100 ; price
-	db HELD_AMULET_COIN ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_AMULET_COIN, 10, CANT_SELECT, ITEM, $00
 
 ; YLW APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; GRN APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; CLEANSE TAG
-	dw 200 ; price
-	db HELD_CLEANSE_TAG ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, HELD_CLEANSE_TAG, 0, CANT_SELECT, ITEM, $00
 
 ; MYSTIC WATER
-	dw 100 ; price
-	db HELD_WATER_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_WATER_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; TWISTEDSPOON
-	dw 100 ; price
-	db HELD_PSYCHIC_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_PSYCHIC_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; WHT APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BLACKBELT
-	dw 100 ; price
-	db HELD_FIGHTING_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_FIGHTING_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; BLK APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; PNK APRICORN
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BLACKGLASSES
-	dw 100 ; price
-	db HELD_DARK_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_DARK_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; SLOWPOKETAIL
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; PINK BOW
-	dw 100 ; price
-	db HELD_NORMAL_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_NORMAL_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; STICK
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; SMOKE BALL
-	dw 200 ; price
-	db HELD_ESCAPE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, HELD_ESCAPE, 0, CANT_SELECT, ITEM, $00
 
 ; NEVERMELTICE
-	dw 100 ; price
-	db HELD_ICE_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_ICE_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; MAGNET
-	dw 100 ; price
-	db HELD_ELECTRIC_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_ELECTRIC_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; MIRACLEBERRY
-	dw 10 ; price
-	db HELD_HEAL_STATUS ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_HEAL_STATUS, 0, CANT_SELECT, ITEM, $55
 
 ; PEARL
-	dw 1400 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 1400, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BIG PEARL
-	dw 7500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 7500, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; EVERSTONE
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; SPELL TAG
-	dw 100 ; price
-	db HELD_GHOST_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_GHOST_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; RAGECANDYBAR
-	dw 300 ; price
-	db NONE ; effect
-	db 20 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 300, NONE, 20, CANT_SELECT, ITEM, $55
 
 ; GS BALL
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; BLUE CARD
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $40 ; current menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $40
 
 ; MIRACLE SEED
-	dw 100 ; price
-	db HELD_GRASS_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_GRASS_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; THICK CLUB
-	dw 500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 500, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; FOCUS BAND
-	dw 200 ; price
-	db HELD_FOCUS_BAND ; effect
-	db 30 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, HELD_FOCUS_BAND, 30, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; ENERGYPOWDER
-	dw 500 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 500, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; ENERGY ROOT
-	dw 800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 800, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; HEAL POWDER
-	dw 450 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 450, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; REVIVAL HERB
-	dw 2800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 2800, NONE, 0, CANT_SELECT, ITEM, $55
 
 ; HARD STONE
-	dw 100 ; price
-	db HELD_ROCK_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_ROCK_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; LUCKY EGG
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; CARD KEY
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $60
 
 ; MACHINE PART
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; EGG TICKET
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; LOST ITEM
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; STARDUST
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 2000, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; STAR PIECE
-	dw 9800 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 9800, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BASEMENT KEY
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $60
 
 ; PASS
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; CHARCOAL
-	dw 9800 ; price
-	db HELD_FIRE_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 9800, HELD_FIRE_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; BERRY JUICE
-	dw 100 ; price
-	db HELD_BERRY ; effect
-	db 20 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 100, HELD_BERRY, 20, CANT_SELECT, ITEM, $55
 
 ; SCOPE LENS
-	dw 200 ; price
-	db HELD_CRITICAL_UP ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, HELD_CRITICAL_UP, 0, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; METAL COAT
-	dw 100 ; price
-	db HELD_STEEL_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_STEEL_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; DRAGON FANG
-	dw 100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; LEFTOVERS
-	dw 200 ; price
-	db HELD_LEFTOVERS ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, HELD_LEFTOVERS, 10, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; MYSTERYBERRY
-	dw 10 ; price
-	db HELD_RESTORE_PP ; effect
-	db 255 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_RESTORE_PP, -1, CANT_SELECT, ITEM, $55
 
 ; DRAGON SCALE
-	dw 2100 ; price
-	db HELD_DRAGON_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 2100, HELD_DRAGON_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; BERSERK GENE
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; SACRED ASH
-	dw 200 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $60 ; overworld
+	item_attribute 200, NONE, 0, CANT_SELECT, ITEM, $60
 
 ; HEAVY BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; FLOWER MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; LEVEL BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; LURE BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; FAST BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; LIGHT BALL
-	dw 100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; FRIEND BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; MOON BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; LOVE BALL
-	dw 150 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 150, NONE, 0, CANT_SELECT, BALL, $06
 
 ; NORMAL BOX
-	dw 10 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $40 ; current menu
+	item_attribute 10, NONE, 0, CANT_SELECT, ITEM, $40
 
 ; GORGEOUS BOX
-	dw 10 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $40 ; current menu
+	item_attribute 10, NONE, 0, CANT_SELECT, ITEM, $40
 
 ; SUN STONE
-	dw 2100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $50 ; party menu
+	item_attribute 2100, NONE, 0, CANT_SELECT, ITEM, $50
 
 ; POLKADOT BOW
-	dw 100 ; price
-	db HELD_NORMAL_BOOST ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 100, HELD_NORMAL_BOOST, 10, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; UP-GRADE
-	dw 2100 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 2100, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BERRY
-	dw 10 ; price
-	db HELD_BERRY ; effect
-	db 10 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_BERRY, 10, CANT_SELECT, ITEM, $55
 
 ; GOLD BERRY
-	dw 10 ; price
-	db HELD_BERRY ; effect
-	db 30 ; param
-	db CANT_SELECT
-	db ITEM
-	db $55 ; heal menu
+	item_attribute 10, HELD_BERRY, 30, CANT_SELECT, ITEM, $55
 
 ; SQUIRTBOTTLE
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $60 ; overworld
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $60
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; PARK BALL
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db BALL
-	db $06 ; ball
+	item_attribute 0, NONE, 0, CANT_SELECT, BALL, $06
 
 ; RAINBOW WING
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db KEY_ITEM
-	db $00 ; can't use
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; BRICK PIECE
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; SURF MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; LITEBLUEMAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; PORTRAITMAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; LOVELY MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; EON MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; MORPH MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; BLUESKY MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; MUSIC MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; MIRAGE MAIL
-	dw 50 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db ITEM
-	db $00 ; can't use
+	item_attribute 50, NONE, 0, CANT_SELECT, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TM01
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM02
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM03
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM04
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TM05
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM06
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM07
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM08
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM09
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM10
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM11
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM12
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM13
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM14
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM15
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM16
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM17
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM18
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM19
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM20
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM21
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM22
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM23
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM24
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM25
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM26
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM27
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM28
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TM29
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM30
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM31
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM32
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM33
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM34
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM35
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM36
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM37
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM38
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM39
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM40
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM41
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM42
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM43
-	dw 1000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 1000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM44
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM45
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM46
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM47
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM48
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM49
-	dw 3000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 3000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; TM50
-	dw 2000 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 2000, NONE, 0, CANT_SELECT, TM_HM, $50
 
 ; HM01
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; HM02
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; HM03
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; HM04
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; HM05
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; HM06
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; HM07
-	dw 0 ; price
-	db NONE ; effect
-	db 0 ; param
-	db CANT_SELECT | CANT_TOSS
-	db TM_HM
-	db $50 ; party menu
+	item_attribute 0, NONE, 0, CANT_SELECT | CANT_TOSS, TM_HM, $50
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; TERU-SAMA
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
 
 ; ?
-	dw $9999 ; price
-	db NONE ; effect
-	db 0 ; param
-	db 0 ; can select + toss
-	db ITEM
-	db $00 ; can't use
+	item_attribute $9999, NONE, 0, 0, ITEM, $00
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -1177,7 +1177,7 @@
 
 
 Bicycle: ; ee08
-	callba Functiond0b3
+	callba BikeFunction
 	ret
 ; ee0f
 
@@ -2209,7 +2209,7 @@
 .asm_f440
 	push bc
 	ld hl, UnknownText_0xf44a
-	call Function1d67
+	call MenuTextBoxBackup
 	pop bc
 	jr Functionf419
 ; f44a (3:744a)
@@ -2224,7 +2224,7 @@
 EscapeRope: ; f44f
 	xor a
 	ld [wd0ec], a
-	callba Functioncb95
+	callba EscapeRopeFunction
 
 	ld a, [wd0ec]
 	cp 1
@@ -2492,7 +2492,7 @@
 ; f5b1
 
 Function_0xf5b1: ; f5b1
-	callba Functioncf8e
+	callba FishFunction
 	ret
 ; f5b8
 
--- a/macros/movement.asm
+++ b/macros/movement.asm
@@ -292,7 +292,11 @@
 	db movement_fix_facing ; $3b
 	endm
 
-__enum__ = $3d
+	enum movement_return_dig
+return_dig: macro
+	db movement_return_dig
+	db \1
+	endm
 
 	enum movement_hide_person
 hide_person: macro
@@ -351,7 +355,17 @@
 	db movement_step_wait5 ; $4f
 	endm
 
-__enum__ = $53
+__enum__ = $51
+
+	enum movement_fish_got_bite
+fish_got_bite: macro
+	db movement_fish_got_bite
+	endm
+
+	enum movement_fish_got_bite_2
+fish_got_bite_2: macro
+	db movement_fish_got_bite_2
+	endm
 
 	enum movement_hide_emote
 hide_emote: macro
--- a/macros/trainer.asm
+++ b/macros/trainer.asm
@@ -2,3 +2,10 @@
 	enum \1
 const_value = 1
 ENDM
+
+trainer: MACRO
+	; flag, group, id, seen text, win text, lost text, talk-again text
+	dw \1
+	db \2, \3
+	dw \4, \5, \6, \7
+ENDM
--- a/main.asm
+++ b/main.asm
@@ -14,12 +14,12 @@
 	jr z, .notinbattle
 
 	call TextBox
-	jr .continue
+	jr .incave
 
 .notinbattle
 	predef Function28eef
 
-.continue
+.incave
 	hlcoord 4, 11
 	ld de, .Waiting
 	call PlaceString
@@ -1304,10 +1304,10 @@
 .check_start
 	ld a, [hl]
 	and START | A_BUTTON
-	jr nz, .continue
+	jr nz, .incave
 	ret
 
-.continue
+.incave
 	ld a, 0
 	jr .done
 
@@ -2774,18 +2774,18 @@
 .Actions
 	db  +5,  +3,  +2 ; Gained a level
 	db  +5,  +3,  +2 ; Used a stat-boosting item (vitamin or X-item)
-	db  +1,  +1,  +0 
+	db  +1,  +1,  +0
 	db  +3,  +2,  +1 ; Battled a Gym Leader
 	db  +1,  +1,  +0 ; Learned a move
 	db  -1,  -1,  -1 ; Lost to an enemy
-	db  -5,  -5, -10 
+	db  -5,  -5, -10
 	db  -5,  -5, -10 ; Lost to a much weaker enemy
-	db  +1,  +1,  +1 
-	db  +3,  +3,  +1 
-	db  +5,  +5,  +2 
-	db  +1,  +1,  +1 
-	db  +3,  +3,  +1 
-	db +10, +10,  +4 
+	db  +1,  +1,  +1
+	db  +3,  +3,  +1
+	db  +5,  +5,  +2
+	db  +1,  +1,  +1
+	db  +3,  +3,  +1
+	db +10, +10,  +4
 	db  -5,  -5, -10 ; Used Heal Powder or Energypowder (bitter)
 	db -10, -10, -15 ; Used Energy Root (bitter)
 	db -15, -15, -20 ; Used Revival Herb (bitter)
@@ -4516,7 +4516,7 @@
 	ld d, h
 	ld e, l
 
-	ld hl, PartyMon1Status - PartyMon1Species 
+	ld hl, PartyMon1Status - PartyMon1Species
 	add hl, de
 	xor a
 	ld [hli], a
@@ -4607,16 +4607,16 @@
 	ret
 ; c6f5
 
-Functionc6f5: ; c6f5
+FieldMoveJumptable: ; c6f5
 	ld a, [Buffer1]
 	rst JumpTable
 	ld [Buffer1], a
 	bit 7, a
-	jr nz, .asm_c702
+	jr nz, .okay
 	and a
 	ret
 
-.asm_c702
+.okay
 	and $7f
 	scf
 	ret
@@ -4660,7 +4660,7 @@
 	call CheckEngineFlag
 	ret nc
 	ld hl, BadgeRequiredText
-	call Function1d67 ; push text to queue
+	call MenuTextBoxBackup ; push text to queue
 	scf
 	ret
 ; c73d
@@ -4687,7 +4687,7 @@
 	ld a, [hl]
 	and a
 	jr z, .no
-	cp a, $ff
+	cp a, -1
 	jr z, .no
 	cp a, EGG
 	jr z, .next
@@ -4719,9 +4719,9 @@
 ; c779
 
 
-Functionc779: ; c779
+FieldMoveFailed: ; c779
 	ld hl, UnknownText_0xc780
-	call Function1d67
+	call MenuTextBoxBackup
 	ret
 ; c780
 
@@ -4730,11 +4730,11 @@
 	db "@"
 ; 0xc785
 
-Functionc785: ; c785
+CutFunction: ; c785
 	call Functionc6ea
 .loop
-	ld hl, Jumptable_c796
-	call Functionc6f5
+	ld hl, .Jumptable
+	call FieldMoveJumptable
 	jr nc, .loop
 	and $7f
 	ld [wd0ec], a
@@ -4742,36 +4742,36 @@
 ; c796
 
 
-Jumptable_c796: ; c796 (3:4796)
-	dw Functionc79c
-	dw Functionc7b2
-	dw Functionc7bb
+.Jumptable: ; c796 (3:4796)
+	dw .CheckAble
+	dw .DoCut
+	dw .FailCut
 
 
-Functionc79c: ; c79c (3:479c)
+.CheckAble: ; c79c (3:479c)
 	ld de, ENGINE_HIVEBADGE
 	call CheckBadge
-	jr c, .asm_c7ac
-	call Functionc7ce
-	jr c, .asm_c7af
+	jr c, .nohivebadge
+	call CheckMapForSomethingToCut
+	jr c, .nothingtocut
 	ld a, $1
 	ret
-.asm_c7ac
+.nohivebadge
 	ld a, $80
 	ret
-.asm_c7af
+.nothingtocut
 	ld a, $2
 	ret
 
-Functionc7b2: ; c7b2 (3:47b2)
-	ld hl, UnknownScript_0xc7fe
-	call Function31cd
+.DoCut: ; c7b2 (3:47b2)
+	ld hl, Script_CutFromMenu
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 
-Functionc7bb: ; c7bb (3:47bb)
+.FailCut: ; c7bb (3:47bb)
 	ld hl, UnknownText_0xc7c9
-	call Function1d67
+	call MenuTextBoxBackup
 	ld a, $80
 	ret
 
@@ -4787,13 +4787,13 @@
 	db "@"
 ; 0xc7ce
 
-Functionc7ce: ; c7ce
+CheckMapForSomethingToCut: ; c7ce
 	call GetFacingTileCoord
 	ld c, a
 	push de
 	callba Function149f5
 	pop de
-	jr nc, .asm_c7fc
+	jr nc, .fail
 	call GetBlockLocation
 	ld c, [hl]
 	push hl
@@ -4800,7 +4800,7 @@
 	ld hl, Unknown_c862
 	call Functionc840
 	pop hl
-	jr nc, .asm_c7fc
+	jr nc, .fail
 	ld a, l
 	ld [wd1ec], a
 	ld a, h
@@ -4812,25 +4812,25 @@
 	xor a
 	ret
 
-.asm_c7fc
+.fail
 	scf
 	ret
 ; c7fe
 
-UnknownScript_0xc7fe: ; c7fe
+Script_CutFromMenu: ; c7fe
 	reloadmappart
 	special UpdateTimePals
 
-UnknownScript_0xc802: ; 0xc802
+Script_Cut: ; 0xc802
 	callasm GetPartyNick
 	writetext UnknownText_0xc7c4
 	reloadmappart
-	callasm Functionc810
+	callasm CutDownTreeOrGrass
 	loadmovesprites
 	end
 ; 0xc810
 
-Functionc810: ; c810
+CutDownTreeOrGrass: ; c810
 	ld hl, wd1ec
 	ld a, [hli]
 	ld h, [hl]
@@ -4859,7 +4859,7 @@
 	ld de, 3
 	call IsInArray
 	pop bc
-	jr nc, .asm_c860
+	jr nc, .nope
 	inc hl
 	ld a, [hli]
 	ld h, [hl]
@@ -4867,7 +4867,7 @@
 	ld de, 3
 	ld a, c
 	call IsInArray
-	jr nc, .asm_c860
+	jr nc, .nope
 	inc hl
 	ld b, [hl]
 	inc hl
@@ -4875,7 +4875,7 @@
 	scf
 	ret
 
-.asm_c860
+.nope
 	xor a
 	ret
 ; c862
@@ -4945,40 +4945,40 @@
 ; Flash
 	ld de, ENGINE_ZEPHYRBADGE
 	callba CheckBadge
-	jr c, .asm_c8dd
+	jr c, .nozephyrbadge
 	push hl
-	callba Function8ae30
+	callba SpecialAerodactylChamber
 	pop hl
-	jr c, .asm_c8d1
+	jr c, .useflash
 	ld a, [wd847]
-	cp $ff
-	jr nz, .asm_c8d7
+	cp -1
+	jr nz, .notadarkcave
 
-.asm_c8d1
-	call Functionc8e0
+.useflash
+	call UseFlash
 	ld a, $81
 	ret
 
-.asm_c8d7
-	call Functionc779
+.notadarkcave
+	call FieldMoveFailed
 	ld a, $80
 	ret
 
-.asm_c8dd
+.nozephyrbadge
 	ld a, $80
 	ret
 ; c8e0
 
-Functionc8e0: ; c8e0
-	ld hl, UnknownScript_0xc8e6
-	jp Function31cd
+UseFlash: ; c8e0
+	ld hl, Script_UseFlash
+	jp ExitMenuCallScript
 ; c8e6
 
-UnknownScript_0xc8e6: ; 0xc8e6
+Script_UseFlash: ; 0xc8e6
 	reloadmappart
 	special UpdateTimePals
 	writetext UnknownText_0xc8f3
-	callasm Function8c7e1
+	callasm BlindingFlash
 	loadmovesprites
 	end
 ; 0xc8f3
@@ -5001,12 +5001,12 @@
 	db "@"
 ; 0xc909
 
-Functionc909: ; c909
+SurfFunction: ; c909
 	call Functionc6ea
-.asm_c90c
-	ld hl, Jumptable_c91a
-	call Functionc6f5
-	jr nc, .asm_c90c
+.loop
+	ld hl, .Jumptable
+	call FieldMoveJumptable
+	jr nc, .loop
 	and $7f
 	ld [wd0ec], a
 	ret
@@ -5013,68 +5013,68 @@
 ; c91a
 
 
-Jumptable_c91a: ; c91a (3:491a)
-	dw Functionc922
-	dw Functionc95f
-	dw Functionc971
-	dw Functionc97a
+.Jumptable: ; c91a (3:491a)
+	dw .TrySurf
+	dw .DoSurf
+	dw .FailSurf
+	dw .AlreadySurfing
 
 
-Functionc922: ; c922 (3:4922)
+.TrySurf: ; c922 (3:4922)
 	ld de, ENGINE_FOGBADGE
 	call CheckBadge
 	jr c, .asm_c956
 	ld hl, BikeFlags
 	bit 1, [hl] ; always on bike
-	jr nz, .asm_c95c
+	jr nz, .cannotsurf
 	ld a, [PlayerState]
 	cp PLAYER_SURF
-	jr z, .asm_c959
+	jr z, .alreadysurfing
 	cp PLAYER_SURF_PIKA
-	jr z, .asm_c959
+	jr z, .alreadysurfing
 	call GetFacingTileCoord
 	call GetTileCollision
 	cp $1
-	jr nz, .asm_c95c
+	jr nz, .cannotsurf
 	call CheckDirection
-	jr c, .asm_c95c
+	jr c, .cannotsurf
 	callba CheckFacingObject
-	jr c, .asm_c95c
+	jr c, .cannotsurf
 	ld a, $1
 	ret
 .asm_c956
 	ld a, $80
 	ret
-.asm_c959
+.alreadysurfing
 	ld a, $3
 	ret
-.asm_c95c
+.cannotsurf
 	ld a, $2
 	ret
 
-Functionc95f: ; c95f (3:495f)
+.DoSurf: ; c95f (3:495f)
 	call GetSurfType
 	ld [Buffer2], a ; wd1eb (aliases: MovementType)
 	call GetPartyNick
-	ld hl, UnknownScript_0xc983
-	call Function31cd
+	ld hl, SurfFromMenuScript
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 
-Functionc971: ; c971 (3:4971)
+.FailSurf: ; c971 (3:4971)
 	ld hl, CantSurfText
-	call Function1d67
+	call MenuTextBoxBackup
 	ld a, $80
 	ret
 
-Functionc97a: ; c97a (3:497a)
+.AlreadySurfing: ; c97a (3:497a)
 	ld hl, AlreadySurfingText
-	call Function1d67
+	call MenuTextBoxBackup
 	ld a, $80
 	ret
 ; c983 (3:4983)
 
-UnknownScript_0xc983: ; c983
+SurfFromMenuScript: ; c983
 	special UpdateTimePals
 
 UsedSurfScript: ; c986
@@ -5091,7 +5091,7 @@
 	special PlayMapMusic
 ; step into the water
 	special Function8379 ; (slow_step_x, step_end)
-	applymovement 0, MovementBuffer ; PLAYER, MovementBuffer
+	applymovement $0, MovementBuffer ; PLAYER, MovementBuffer
 	end
 ; c9a2
 
@@ -5233,11 +5233,11 @@
 ; ca3b
 
 
-Functionca3b: ; ca3b
+FlyFunction: ; ca3b
 	call Functionc6ea
 .asm_ca3e
 	ld hl, .data_ca4c
-	call Functionc6f5
+	call FieldMoveJumptable
 	jr nc, .asm_ca3e
 	and $7f
 	ld [wd0ec], a
@@ -5245,33 +5245,33 @@
 ; ca4c
 
 .data_ca4c
- 	dw Functionca52
- 	dw Functionca94
- 	dw Functionca9d
+ 	dw .TryFly
+ 	dw .DoFly
+ 	dw .FailFly
 ; ca52
 
 
-Functionca52: ; ca52
+.TryFly: ; ca52
 ; Fly
 	ld de, ENGINE_STORMBADGE
 	call CheckBadge
-	jr c, .asm_ca85
+	jr c, .nostormbadge
 	call GetMapPermission
 	call CheckOutdoorMap
-	jr z, .asm_ca64
+	jr z, .outdoors
 	jr .indoors
 
-.asm_ca64
+.outdoors
 	xor a
 	ld [$ffde], a
 	call Function1d6e
 	call ClearSprites
-	callba Function91af3
+	callba _FlyMap
 	ld a, e
 	cp -1
-	jr z, .asm_ca8b
+	jr z, .illegal
 	cp $1c ; NUM_SPAWNS
-	jr nc, .asm_ca8b
+	jr nc, .illegal
 
 	ld [wd001], a
 	call WriteBackup
@@ -5278,7 +5278,7 @@
 	ld a, $1
 	ret
 
-.asm_ca85
+.nostormbadge
 	ld a, $82
 	ret
 
@@ -5286,7 +5286,7 @@
 	ld a, $2
 	ret
 
-.asm_ca8b
+.illegal
 	call WriteBackup
 	call WaitBGMap
 	ld a, $80
@@ -5293,26 +5293,26 @@
 	ret
 ; ca94
 
-Functionca94: ; ca94
-	ld hl, UnknownScript_0xcaa3
-	call Function31cd
+.DoFly: ; ca94
+	ld hl, .FlyScript
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; ca9d
 
-Functionca9d: ; ca9d
-	call Functionc779
+.FailFly: ; ca9d
+	call FieldMoveFailed
 	ld a, $82
 	ret
 ; caa3
 
-UnknownScript_0xcaa3: ; 0xcaa3
+.FlyScript: ; 0xcaa3
 	reloadmappart
 	callasm HideSprites
 	special UpdateTimePals
 	callasm Function8caed
 	farscall UnknownScript_0x122c1
-	special WarpToLastSpawn
+	special WarpToSpawnPoint
 	callasm Function154f1
 	writecode VAR_MOVEMENT, $0
 	newloadmap $fc
@@ -5331,52 +5331,52 @@
 ; cade
 
 Functioncade: ; cade
-	call Functioncae7
+	call AttemptToWaterfall
 	and $7f
 	ld [wd0ec], a
 	ret
 ; cae7
 
-Functioncae7: ; cae7
+AttemptToWaterfall: ; cae7
 ; Waterfall
 	ld de, ENGINE_RISINGBADGE
 	callba CheckBadge
 	ld a, $80
 	ret c
-	call Functioncb07
-	jr c, .asm_cb01
-	ld hl, UnknownScript_0xcb1c
-	call Function31cd
+	call CheckMapCanWaterfall
+	jr c, .failed
+	ld hl, Script_WaterfallFromMenu
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 
-.asm_cb01
-	call Functionc779
+.failed
+	call FieldMoveFailed
 	ld a, $80
 	ret
 ; cb07
 
-Functioncb07: ; cb07
+CheckMapCanWaterfall: ; cb07
 	ld a, [PlayerDirection]
 	and $c
 	cp FACE_UP
-	jr nz, .asm_cb1a
+	jr nz, .failed
 	ld a, [TileUp]
 	call CheckWaterfallTile
-	jr nz, .asm_cb1a
+	jr nz, .failed
 	xor a
 	ret
 
-.asm_cb1a
+.failed
 	scf
 	ret
 ; cb1c
 
-UnknownScript_0xcb1c: ; 0xcb1c
+Script_WaterfallFromMenu: ; 0xcb1c
 	reloadmappart
 	special UpdateTimePals
 
-UnknownScript_0xcb20: ; 0xcb20
+Script_UsedWaterfall: ; 0xcb20
 	callasm GetPartyNick
 	writetext UnknownText_0xcb51
 	closetext
@@ -5384,12 +5384,12 @@
 	playsound SFX_BUBBLEBEAM
 .loop
 	applymovement $0, WaterfallStep
-	callasm Functioncb38
+	callasm CheckContinueWaterfall
 	iffalse .loop
 	end
 ; 0xcb38
 
-Functioncb38: ; cb38
+CheckContinueWaterfall: ; cb38
 	xor a
 	ld [ScriptVar], a
 	ld a, [StandingTile]
@@ -5414,27 +5414,27 @@
 TryWaterfallOW:: ; cb56
 	ld d, WATERFALL
 	call CheckPartyMove
-	jr c, .asm_cb74
+	jr c, .failed
 	ld de, ENGINE_RISINGBADGE
 	call CheckEngineFlag
-	jr c, .asm_cb74
-	call Functioncb07
-	jr c, .asm_cb74
-	ld a, BANK(UnknownScript_0xcb86)
-	ld hl, UnknownScript_0xcb86
+	jr c, .failed
+	call CheckMapCanWaterfall
+	jr c, .failed
+	ld a, BANK(Script_AskWaterfall)
+	ld hl, Script_AskWaterfall
 	call CallScript
 	scf
 	ret
 
-.asm_cb74
-	ld a, BANK(UnknownScript_0xcb7e)
-	ld hl, UnknownScript_0xcb7e
+.failed
+	ld a, BANK(Script_CantDoWaterfall)
+	ld hl, Script_CantDoWaterfall
 	call CallScript
 	scf
 	ret
 ; cb7e
 
-UnknownScript_0xcb7e: ; 0xcb7e
+Script_CantDoWaterfall: ; 0xcb7e
 	jumptext UnknownText_0xcb81
 ; 0xcb81
 
@@ -5443,11 +5443,11 @@
 	db "@"
 ; 0xcb86
 
-UnknownScript_0xcb86: ; 0xcb86
+Script_AskWaterfall: ; 0xcb86
 	loadfont
 	writetext UnknownText_0xcb90
 	yesorno
-	iftrue UnknownScript_0xcb20
+	iftrue Script_UsedWaterfall
 	loadmovesprites
 	end
 ; 0xcb90
@@ -5458,89 +5458,89 @@
 ; 0xcb95
 
 
-Functioncb95: ; cb95
+EscapeRopeFunction: ; cb95
 	call Functionc6ea
 	ld a, $1
-	jr asm_cba1
+	jr dig_incave
 
-Functioncb9c: ; cb9c
+DigFunction: ; cb9c
 	call Functionc6ea
 	ld a, $2
 
-asm_cba1
+dig_incave
 	ld [Buffer2], a
-.asm_cba4
-	ld hl, Tablecbb2
-	call Functionc6f5
-	jr nc, .asm_cba4
+.loop
+	ld hl, .DigTable
+	call FieldMoveJumptable
+	jr nc, .loop
 	and $7f
 	ld [wd0ec], a
 	ret
 ; cbb2
 
-Tablecbb2: ; cbb2
-	dw Functioncbb8
-	dw Functioncbd8
-	dw Functioncc06
+.DigTable: ; cbb2
+	dw .CheckCanDig
+	dw .DoDig
+	dw .FailDig
 ; cbb8
 
-Functioncbb8: ; cbb8
+.CheckCanDig: ; cbb8
 	call GetMapPermission
 	cp $4
-	jr z, .asm_cbc6
+	jr z, .incave
 	cp $7
-	jr z, .asm_cbc6
-.asm_cbc3
+	jr z, .incave
+.fail
 	ld a, $2
 	ret
 
-.asm_cbc6
+.incave
 	ld hl, wdca9
 	ld a, [hli]
 	and a
-	jr z, .asm_cbc3
+	jr z, .fail
 	ld a, [hli]
 	and a
-	jr z, .asm_cbc3
+	jr z, .fail
 	ld a, [hl]
 	and a
-	jr z, .asm_cbc3
+	jr z, .fail
 	ld a, $1
 	ret
 ; cbd8
 
-Functioncbd8: ; cbd8
+.DoDig: ; cbd8
 	ld hl, wdca9
 	ld de, wd146
-	ld bc, $0003
+	ld bc, 3
 	call CopyBytes
 	call GetPartyNick
 	ld a, [Buffer2]
 	cp $2
-	jr nz, .asm_cbf7
-	ld hl, UnknownScript_0xcc35
-	call Function31cd
+	jr nz, .escaperope
+	ld hl, UsedDigScript
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 
-.asm_cbf7
-	callba Function8ae4e
-	ld hl, UnknownScript_0xcc2b
-	call Function31cd
+.escaperope
+	callba SpecialKabutoChamber
+	ld hl, UsedEscapeRopeScript
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; cc06
 
-Functioncc06: ; cc06
+.FailDig: ; cc06
 	ld a, [Buffer2]
 	cp $2
-	jr nz, .asm_cc19
+	jr nz, .failescaperope
 	ld hl, UnknownText_0xcc26
-	call Function1d4f
+	call MenuTextBox
 	call Functiona80
 	call WriteBackup
 
-.asm_cc19
+.failescaperope
 	ld a, $80
 	ret
 ; cc1c
@@ -5563,25 +5563,25 @@
 	db "@"
 ; 0xcc2b
 
-UnknownScript_0xcc2b: ; 0xcc2b
+UsedEscapeRopeScript: ; 0xcc2b
 	reloadmappart
 	special UpdateTimePals
 	writetext UnknownText_0xcc21
-	jump UnknownScript_0xcc3c
+	jump UsedDigOrEscapeRopeScript
 ; 0xcc35
 
-UnknownScript_0xcc35: ; 0xcc35
+UsedDigScript: ; 0xcc35
 	reloadmappart
 	special UpdateTimePals
 	writetext UnknownText_0xcc1c
 
-UnknownScript_0xcc3c: ; 0xcc3c
+UsedDigOrEscapeRopeScript: ; 0xcc3c
 	closetext
 	loadmovesprites
 	playsound SFX_WARP_TO
 	applymovement $0, MovementData_0xcc59
 	farscall UnknownScript_0x122c1
-	special WarpToLastSpawn
+	special WarpToSpawnPoint
 	writecode VAR_MOVEMENT, $0
 	newloadmap $f5
 	playsound SFX_WARP_FROM
@@ -5597,29 +5597,29 @@
 ; 0xcc5d
 
 MovementData_0xcc5d: ; 0xcc5d
-	db $3c, $58
+	return_dig $58
 	turn_away_down
 	step_end
 ; 0xcc61
 
-Functioncc61: ; cc61
+TeleportFunction: ; cc61
 	call Functionc6ea
-.asm_cc64
-	ld hl, Tablecc72
-	call Functionc6f5
-	jr nc, .asm_cc64
+.loop
+	ld hl, .Jumptable
+	call FieldMoveJumptable
+	jr nc, .loop
 	and $7f
 	ld [wd0ec], a
 	ret
 ; cc72
 
-Tablecc72: ; cc72
-	dw Functioncc78
-	dw Functioncc9c
-	dw Functioncca8
+.Jumptable: ; cc72
+	dw .TryTeleport
+	dw .DoTeleport
+	dw .FailTeleport
 ; cc78
 
-Functioncc78: ; cc78
+.TryTeleport: ; cc78
 	call GetMapPermission
 	call CheckOutdoorMap
 	jr z, .CheckIfSpawnPoint
@@ -5642,17 +5642,17 @@
 	ret
 ; cc9c
 
-Functioncc9c: ; cc9c
+.DoTeleport: ; cc9c
 	call GetPartyNick
-	ld hl, UnknownScript_0xccbb
-	call Function31cd
+	ld hl, Script_UsedTeleport
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; cca8
 
-Functioncca8: ; cca8
+.FailTeleport: ; cca8
 	ld hl, UnknownText_0xccb6
-	call Function1d67
+	call MenuTextBoxBackup
 	ld a, $80
 	ret
 ; ccb1
@@ -5669,7 +5669,7 @@
 	db "@"
 ; 0xccbb
 
-UnknownScript_0xccbb: ; 0xccbb
+Script_UsedTeleport: ; 0xccbb
 	reloadmappart
 	special UpdateTimePals
 	writetext UnknownText_0xccb1
@@ -5679,7 +5679,7 @@
 	playsound SFX_WARP_TO
 	applymovement $0, MovementData_0xcce1
 	farscall UnknownScript_0x122c1
-	special WarpToLastSpawn
+	special WarpToSpawnPoint
 	writecode VAR_MOVEMENT, $0
 	newloadmap $f4
 	playsound SFX_WARP_FROM
@@ -5697,24 +5697,24 @@
 	step_end
 ; cce5
 
-Functioncce5: ; cce5
-	call Functionccee
+StrengthFunction: ; cce5
+	call .TryStrength
 	and $7f
 	ld [wd0ec], a
 	ret
 ; ccee
 
-Functionccee: ; ccee
+.TryStrength: ; ccee
 ; Strength
 	ld de, ENGINE_PLAINBADGE
 	call CheckBadge
-	jr c, Functioncd06
-	jr Functioncd09
+	jr c, FailedStrength
+	jr StartToUseStrength
 ; ccf8
 
-Functionccf8: ; ccf8
+AlreadyUsingStrength: ; ccf8
 	ld hl, UnknownText_0xcd01
-	call Function1d67
+	call MenuTextBoxBackup
 	ld a, $80
 	ret
 ; cd01
@@ -5724,14 +5724,14 @@
 	db "@"
 ; 0xcd06
 
-Functioncd06: ; cd06
+FailedStrength: ; cd06
 	ld a, $80
 	ret
 ; cd09
 
-Functioncd09: ; cd09
-	ld hl, UnknownScript_0xcd29
-	call Function31cd
+StartToUseStrength: ; cd09
+	ld hl, Script_StrengthFromMenu
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; cd12
@@ -5754,11 +5754,11 @@
 	ret
 ; cd29
 
-UnknownScript_0xcd29: ; 0xcd29
+Script_StrengthFromMenu: ; 0xcd29
 	reloadmappart
 	special UpdateTimePals
 
-UnknownScript_0xcd2d: ; 0xcd2d
+Script_UsedStrength: ; 0xcd2d
 	callasm Functioncd12
 	writetext UnknownText_0xcd41
 	copybytetovar wd1ef
@@ -5780,25 +5780,25 @@
 ; 0xcd4b
 
 AskStrengthScript:
-	callasm Functioncd78
-	iffalse UnknownScript_0xcd5f
-	if_equal $1, UnknownScript_0xcd59
-	jump UnknownScript_0xcd5c
+	callasm TryStrengthOW
+	iffalse .AskStrength
+	if_equal $1, .DontMeetRequirements
+	jump .AlreadyUsedStrength
 ; 0xcd59
 
-UnknownScript_0xcd59: ; 0xcd59
+.DontMeetRequirements: ; 0xcd59
 	jumptext UnknownText_0xcd73
 ; 0xcd5c
 
-UnknownScript_0xcd5c: ; 0xcd5c
+.AlreadyUsedStrength: ; 0xcd5c
 	jumptext UnknownText_0xcd6e
 ; 0xcd5f
 
-UnknownScript_0xcd5f: ; 0xcd5f
+.AskStrength: ; 0xcd5f
 	loadfont
 	writetext UnknownText_0xcd69
 	yesorno
-	iftrue UnknownScript_0xcd2d
+	iftrue Script_UsedStrength
 	loadmovesprites
 	end
 ; 0xcd69
@@ -5821,41 +5821,41 @@
 	db "@"
 ; 0xcd78
 
-Functioncd78: ; cd78
+TryStrengthOW: ; cd78
 	ld d, STRENGTH
 	call CheckPartyMove
-	jr c, .asm_cd92
+	jr c, .nope
 
 	ld de, ENGINE_PLAINBADGE
 	call CheckEngineFlag
-	jr c, .asm_cd92
+	jr c, .nope
 
 	ld hl, BikeFlags
 	bit 0, [hl]
-	jr z, .asm_cd96
+	jr z, .already_using
 
 	ld a, 2
-	jr .asm_cd99
+	jr .done
 
-.asm_cd92
+.nope
 	ld a, 1
-	jr .asm_cd99
+	jr .done
 
-.asm_cd96
+.already_using
 	xor a
-	jr .asm_cd99
+	jr .done
 
-.asm_cd99
+.done
 	ld [ScriptVar], a
 	ret
 ; cd9d
 
-Functioncd9d: ; cd9d
+WhirlpoolFunction: ; cd9d
 	call Functionc6ea
-.asm_cda0
+.loop
 	ld hl, Jumptable_cdae
-	call Functionc6f5
-	jr nc, .asm_cda0
+	call FieldMoveJumptable
+	jr nc, .loop
 	and $7f
 	ld [wd0ec], a
 	ret
@@ -5862,38 +5862,38 @@
 ; cdae
 
 Jumptable_cdae: ; cdae
-	dw Functioncdb4
-	dw Functioncdca
-	dw Functioncdd3
+	dw .TryWhirlpool
+	dw .DoWhirlpool
+	dw .FailWhirlpool
 ; cdb4
 
-Functioncdb4: ; cdb4
+.TryWhirlpool: ; cdb4
 	ld de, ENGINE_GLACIERBADGE
 	call CheckBadge
-	jr c, .asm_cdc7
-	call Functioncdde
-	jr c, .asm_cdc4
+	jr c, .noglacierbadge
+	call TryWhirlpoolMenu
+	jr c, .failed
 	ld a, $1
 	ret
 
-.asm_cdc4
+.failed
 	ld a, $2
 	ret
 
-.asm_cdc7
+.noglacierbadge
 	ld a, $80
 	ret
 ; cdca
 
-Functioncdca: ; cdca
-	ld hl, UnknownScript_0xce0b
-	call Function31cd
+.DoWhirlpool: ; cdca
+	ld hl, Script_WhirlpoolFromMenu
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; cdd3
 
-Functioncdd3: ; cdd3
-	call Functionc779
+.FailWhirlpool: ; cdd3
+	call FieldMoveFailed
 	ld a, $80
 	ret
 ; cdd9
@@ -5904,13 +5904,13 @@
 	db "@"
 ; 0xcdde
 
-Functioncdde: ; cdde
+TryWhirlpoolMenu: ; cdde
 	call GetFacingTileCoord
 	ld c, a
 	push de
 	call CheckWhirlpoolTile
 	pop de
-	jr c, .asm_ce09
+	jr c, .failed
 	call GetBlockLocation
 	ld c, [hl]
 	push hl
@@ -5917,7 +5917,7 @@
 	ld hl, Unknown_c8a4
 	call Functionc840
 	pop hl
-	jr nc, .asm_ce09
+	jr nc, .failed
 	ld a, l
 	ld [wd1ec], a
 	ld a, h
@@ -5929,25 +5929,25 @@
 	xor a
 	ret
 
-.asm_ce09
+.failed
 	scf
 	ret
 ; ce0b
 
-UnknownScript_0xce0b: ; 0xce0b
+Script_WhirlpoolFromMenu: ; 0xce0b
 	reloadmappart
 	special UpdateTimePals
 
-UnknownScript_0xce0f: ; 0xce0f
+Script_UsedWhirlpool: ; 0xce0f
 	callasm GetPartyNick
 	writetext UnknownText_0xcdd9
 	reloadmappart
-	callasm Functionce1d
+	callasm DisappearWhirlpool
 	loadmovesprites
 	end
 ; 0xce1d
 
-Functionce1d: ; ce1d
+DisappearWhirlpool: ; ce1d
 	ld hl, wd1ec
 	ld a, [hli]
 	ld h, [hl]
@@ -5968,27 +5968,27 @@
 TryWhirlpoolOW:: ; ce3e
 	ld d, WHIRLPOOL
 	call CheckPartyMove
-	jr c, .asm_ce5c
+	jr c, .failed
 	ld de, ENGINE_GLACIERBADGE
 	call CheckEngineFlag
-	jr c, .asm_ce5c
-	call Functioncdde
-	jr c, .asm_ce5c
-	ld a, BANK(UnknownScript_0xce6e)
-	ld hl, UnknownScript_0xce6e
+	jr c, .failed
+	call TryWhirlpoolMenu
+	jr c, .failed
+	ld a, BANK(Script_AskWhirlpoolOW)
+	ld hl, Script_AskWhirlpoolOW
 	call CallScript
 	scf
 	ret
 
-.asm_ce5c
-	ld a, BANK(UnknownScript_0xce66)
-	ld hl, UnknownScript_0xce66
+.failed
+	ld a, BANK(Script_MightyWhirlpool)
+	ld hl, Script_MightyWhirlpool
 	call CallScript
 	scf
 	ret
 ; ce66
 
-UnknownScript_0xce66: ; 0xce66
+Script_MightyWhirlpool: ; 0xce66
 	jumptext UnknownText_0xce69
 ; 0xce69
 
@@ -5997,11 +5997,11 @@
 	db "@"
 ; 0xce6e
 
-UnknownScript_0xce6e: ; 0xce6e
+Script_AskWhirlpoolOW: ; 0xce6e
 	loadfont
 	writetext UnknownText_0xce78
 	yesorno
-	iftrue UnknownScript_0xce0f
+	iftrue Script_UsedWhirlpool
 	loadmovesprites
 	end
 ; 0xce78
@@ -6012,25 +6012,25 @@
 ; 0xce7d
 
 
-Functionce7d: ; ce7d
-	call Functionce86
+HeadbuttFunction: ; ce7d
+	call TryHeadbuttFromMenu
 	and $7f
 	ld [wd0ec], a
 	ret
 ; ce86
 
-Functionce86: ; ce86
+TryHeadbuttFromMenu: ; ce86
 	call GetFacingTileCoord
 	call CheckHeadbuttTreeTile
 	jr nz, .no_tree
 
 	ld hl, HeadbuttFromMenuScript
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 
 .no_tree
-	call Functionc779
+	call FieldMoveFailed
 	ld a, $80
 	ret
 ; ce9d
@@ -6105,15 +6105,15 @@
 ; 0xceeb
 
 
-Functionceeb: ; ceeb
-	call Functioncef4
+RockSmashFunction: ; ceeb
+	call TryRockSmashFromMenu
 	and $7f
 	ld [wd0ec], a
 	ret
 ; cef4
 
-Functioncef4: ; cef4
-	call Functioncf0d
+TryRockSmashFromMenu: ; cef4
+	call GetFacingObject
 	jr c, .no_rock
 	ld a, d
 	cp $18
@@ -6120,28 +6120,28 @@
 	jr nz, .no_rock
 
 	ld hl, RockSmashFromMenuScript
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 
 .no_rock
-	call Functionc779
+	call FieldMoveFailed
 	ld a, $80
 	ret
 ; cf0d
 
-Functioncf0d: ; cf0d
+GetFacingObject: ; cf0d
 	callba CheckFacingObject
-	jr nc, .asm_cf2c
+	jr nc, .fail
 
 	ld a, [$ffb0]
 	call GetObjectStruct
-	ld hl, $0001
+	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, bc
 	ld a, [hl]
 	ld [$ffe0], a
 	call GetMapObject
-	ld hl, $0004
+	ld hl, MAPOBJECT_FACING
 	add hl, bc
 	ld a, [hl]
 	ld d, a
@@ -6148,7 +6148,7 @@
 	and a
 	ret
 
-.asm_cf2c
+.fail
 	scf
 	ret
 ; cf2e
@@ -6165,7 +6165,7 @@
 	playsound SFX_STRENGTH
 	earthquake 84
 	applymovement2 MovementData_0xcf55
-	disappear $fe
+	disappear -2
 
 	callasm RockMonEncounter
 	copybytetovar wd22e
@@ -6227,52 +6227,52 @@
 	ret
 
 
-Functioncf8e: ; cf8e
+FishFunction: ; cf8e
 	ld a, e
 	push af
 	call Functionc6ea
 	pop af
 	ld [Buffer2], a
-.asm_cf97
-	ld hl, Jumptable_cfa5
-	call Functionc6f5
-	jr nc, .asm_cf97
+.loop
+	ld hl, .FishTable
+	call FieldMoveJumptable
+	jr nc, .loop
 	and $7f
 	ld [wd0ec], a
 	ret
 ; cfa5
 
-Jumptable_cfa5: ; cfa5
-	dw Functioncfaf
-	dw Functiond002
-	dw Functioncff4
-	dw Functioncff1
-	dw Functiond010
+.FishTable: ; cfa5
+	dw .TryFish
+	dw .FishNoBite
+	dw .FishGotSomething
+	dw .SurfingFish
+	dw .FailFish
 ; cfaf
 
-Functioncfaf: ; cfaf
+.TryFish: ; cfaf
 	ld a, [PlayerState]
 	cp PLAYER_SURF
-	jr z, .asm_cfc4
+	jr z, .surfing
 	cp PLAYER_SURF_PIKA
-	jr z, .asm_cfc4
+	jr z, .surfing
 	call GetFacingTileCoord
 	call GetTileCollision
 	cp $1
-	jr z, .asm_cfc7
+	jr z, .facingwater
 
-.asm_cfc4
+.surfing
 	ld a, $3
 	ret
 
-.asm_cfc7
+.facingwater
 	call Function2d19
 	and a
-	jr nz, .asm_cfd0
+	jr nz, .goodtofish
 	ld a, $4
 	ret
 
-.asm_cfd0
+.goodtofish
 	ld d, a
 	ld a, [Buffer2]
 	ld e, a
@@ -6279,7 +6279,7 @@
 	callba FishAction
 	ld a, d
 	and a
-	jr z, .asm_cfee
+	jr z, .nonibble
 	ld [wd22e], a
 	ld a, e
 	ld [CurPartyLevel], a
@@ -6288,76 +6288,76 @@
 	ld a, $2
 	ret
 
-.asm_cfee
+.nonibble
 	ld a, $1
 	ret
 ; cff1
 
-Functioncff1: ; cff1
+.SurfingFish: ; cff1
 	ld a, $80
 	ret
 ; cff4
 
-Functioncff4: ; cff4
+.FishGotSomething: ; cff4
 	ld a, $1
 	ld [wd1ef], a
-	ld hl, UnknownScript_0xd035
-	call Function31cd
+	ld hl, Script_GotABite
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; d002
 
-Functiond002: ; d002
+.FishNoBite: ; d002
 	ld a, $2
 	ld [wd1ef], a
-	ld hl, UnknownScript_0xd01e
-	call Function31cd
+	ld hl, Script_NotEvenANibble
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; d010
 
-Functiond010: ; d010
+.FailFish: ; d010
 	ld a, $0
 	ld [wd1ef], a
-	ld hl, UnknownScript_0xd027
-	call Function31cd
+	ld hl, Script_NotEvenANibble2
+	call ExitMenuCallScript
 	ld a, $81
 	ret
 ; d01e
 
-UnknownScript_0xd01e: ; 0xd01e
-	scall UnknownScript_0xd07c
+Script_NotEvenANibble: ; 0xd01e
+	scall Script_FishCastRod
 	writetext UnknownText_0xd0a9
-	jump UnknownScript_0xd02d
+	jump Script_NotEvenANibble_FallThrough
 ; 0xd027
 
-UnknownScript_0xd027: ; 0xd027
-	scall UnknownScript_0xd07c
+Script_NotEvenANibble2: ; 0xd027
+	scall Script_FishCastRod
 	writetext UnknownText_0xd0a9
 
-UnknownScript_0xd02d: ; 0xd02d
+Script_NotEvenANibble_FallThrough: ; 0xd02d
 	loademote $8
-	callasm Functiond095
+	callasm PutTheRodAway
 	loadmovesprites
 	end
 ; 0xd035
 
-UnknownScript_0xd035: ; 0xd035
-	scall UnknownScript_0xd07c
-	callasm Functiond06c
-	iffalse UnknownScript_0xd046
+Script_GotABite: ; 0xd035
+	scall Script_FishCastRod
+	callasm Fishing_CheckFacingUp
+	iffalse .FacingUp
 	applymovement $0, MovementData_0xd062
-	jump UnknownScript_0xd04a
+	jump .FightTheHookedPokemon
 ; 0xd046
 
-UnknownScript_0xd046: ; 0xd046
+.FacingUp: ; 0xd046
 	applymovement $0, MovementData_0xd05c
 
-UnknownScript_0xd04a: ; 0xd04a
+.FightTheHookedPokemon: ; 0xd04a
 	pause 40
 	applymovement $0, MovementData_0xd069
 	writetext UnknownText_0xd0a4
-	callasm Functiond095
+	callasm PutTheRodAway
 	loadmovesprites
 	battlecheck
 	startbattle
@@ -6366,19 +6366,19 @@
 ; 0xd05c
 
 MovementData_0xd05c: ; d05c
-	db $51
-	db $51
-	db $51
-	db $51
+	fish_got_bite
+	fish_got_bite
+	fish_got_bite
+	fish_got_bite
 	show_emote
 	step_end
 ; d062
 
 MovementData_0xd062: ; d062
-	db $51
-	db $51
-	db $51
-	db $51
+	fish_got_bite
+	fish_got_bite
+	fish_got_bite
+	fish_got_bite
 	show_person
 	show_emote
 	step_end
@@ -6386,24 +6386,24 @@
 
 MovementData_0xd069: ; d069
 	hide_emote
-	db $52
+	fish_got_bite_2
 	step_end
 ; d06c
 
-Functiond06c: ; d06c
+Fishing_CheckFacingUp: ; d06c
 	ld a, [PlayerDirection]
 	and $c
 	cp $4
 	ld a, $1
-	jr z, .asm_d078
+	jr z, .up
 	xor a
 
-.asm_d078
+.up
 	ld [ScriptVar], a
 	ret
 ; d07c
 
-UnknownScript_0xd07c: ; 0xd07c
+Script_FishCastRod: ; 0xd07c
 	reloadmappart
 	loadvar $ffd4, $0
 	special UpdateTimePals
@@ -6420,7 +6420,7 @@
 	step_end
 ; d095
 
-Functiond095: ; d095
+PutTheRodAway: ; d095
 	xor a
 	ld [hBGMapMode], a
 	ld a, $1
@@ -6448,28 +6448,28 @@
 	db "@"
 ; 0xd0b3
 
-Functiond0b3: ; d0b3
-	call Functiond0bc
+BikeFunction: ; d0b3
+	call .TryBike
 	and $7f
 	ld [wd0ec], a
 	ret
 ; d0bc
 
-Functiond0bc: ; d0bc
-	call Functiond121
-	jr c, .asm_d110
+.TryBike: ; d0bc
+	call .CheckEnvironment
+	jr c, .CannotUseBike
 	ld a, [PlayerState]
 	cp PLAYER_NORMAL
-	jr z, .asm_d0ce
+	jr z, .GetOnBike
 	cp PLAYER_BIKE
-	jr z, .asm_d0f7
-	jr .asm_d110
+	jr z, .GetOffBike
+	jr .CannotUseBike
 
-.asm_d0ce
-	ld hl, UnknownScript_0xd13e
-	ld de, UnknownScript_0xd14e
-	call Functiond119
-	call Function31cd
+.GetOnBike
+	ld hl, Script_GetOnBike
+	ld de, Script_GetOnBike_Register
+	call .CheckIfRegistered
+	call ExitMenuCallScript
 	xor a
 	ld [MusicFade], a
 	ld de, MUSIC_NONE
@@ -6483,31 +6483,31 @@
 	ld a, $1
 	ret
 
-.asm_d0f7
+.GetOffBike
 	ld hl, BikeFlags
 	bit 1, [hl]
-	jr nz, .asm_d10b
-	ld hl, UnknownScript_0xd158
-	ld de, UnknownScript_0xd16b
-	call Functiond119
+	jr nz, .CantGetOffBike
+	ld hl, Script_GetOffBike
+	ld de, Script_GetOffBike_Register
+	call .CheckIfRegistered
 	ld a, $3
-	jr .asm_d113
+	jr .done
 
-.asm_d10b
+.CantGetOffBike
 	ld hl, UnknownScript_0xd171
-	jr .asm_d113
+	jr .done
 
-.asm_d110
+.CannotUseBike
 	ld a, $0
 	ret
 
-.asm_d113
-	call Function31cd
+.done
+	call ExitMenuCallScript
 	ld a, $1
 	ret
 ; d119
 
-Functiond119: ; d119
+.CheckIfRegistered: ; d119
 	ld a, [wd0ef]
 	and a
 	ret z
@@ -6516,29 +6516,29 @@
 	ret
 ; d121
 
-Functiond121: ; d121
+.CheckEnvironment: ; d121
 	call GetMapPermission
 	call CheckOutdoorMap
-	jr z, .asm_d133
+	jr z, .ok
 	cp CAVE
-	jr z, .asm_d133
+	jr z, .ok
 	cp GATE
-	jr z, .asm_d133
-	jr .asm_d13c
+	jr z, .ok
+	jr .nope
 
-.asm_d133
+.ok
 	call Function184a
 	and $f
-	jr nz, .asm_d13c
+	jr nz, .nope
 	xor a
 	ret
 
-.asm_d13c
+.nope
 	scf
 	ret
 ; d13e
 
-UnknownScript_0xd13e: ; 0xd13e
+Script_GetOnBike: ; 0xd13e
 	reloadmappart
 	special UpdateTimePals
 	writecode VAR_MOVEMENT, $1
@@ -6549,7 +6549,7 @@
 	end
 ; 0xd14e
 
-UnknownScript_0xd14e: ; 0xd14e
+Script_GetOnBike_Register: ; 0xd14e
 	writecode VAR_MOVEMENT, $1
 	loadmovesprites
 	special Functione4a
@@ -6560,7 +6560,7 @@
 	nop
 	ret
 
-UnknownScript_0xd158: ; 0xd158
+Script_GetOffBike: ; 0xd158
 	reloadmappart
 	special UpdateTimePals
 	writecode VAR_MOVEMENT, $0
@@ -6574,7 +6574,7 @@
 	end
 ; 0xd16b
 
-UnknownScript_0xd16b: ; 0xd16b
+Script_GetOffBike_Register: ; 0xd16b
 	writecode VAR_MOVEMENT, $0
 	jump UnknownScript_0xd163
 ; 0xd171
@@ -6633,17 +6633,17 @@
 	writetext UnknownText_0xd1c8
 	yesorno
 	iffalse .script_d1b8
-	callasm Functiond1ba
-	iftrue UnknownScript_0xc802
+	callasm .CheckMap
+	iftrue Script_Cut
 .script_d1b8
 	loadmovesprites
 	end
 ; 0xd1ba
 
-Functiond1ba: ; d1ba
+.CheckMap: ; d1ba
 	xor a
 	ld [ScriptVar], a
-	call Functionc7ce
+	call CheckMapForSomethingToCut
 	ret c
 	ld a, 1
 	ld [ScriptVar], a
@@ -6666,54 +6666,54 @@
 
 
 _ReceiveItem:: ; d1d5
-	call Functiond27b
-	jp nz, Functiond29c
+	call CheckHLequTMsHMsEnd
+	jp nz, PutItemInPocket
 	push hl
 	call CheckItemPocket
 	pop de
 	ld a, [wd142]
 	dec a
-	ld hl, Tabled1e9
+	ld hl, .Pockets
 	rst JumpTable
 	ret
 ; d1e9
 
-Tabled1e9: ; d1e9
-	dw Functiond1f1
-	dw Functiond1f6
-	dw Functiond1fb
-	dw Functiond201
+.Pockets: ; d1e9
+	dw .Item
+	dw .KeyItem
+	dw .Ball
+	dw .TMHM
 ; d1f1
 
-Functiond1f1: ; d1f1
+.Item: ; d1f1
 	ld h, d
 	ld l, e
-	jp Functiond29c
+	jp PutItemInPocket
 ; d1f6
 
-Functiond1f6: ; d1f6
+.KeyItem: ; d1f6
 	ld h, d
 	ld l, e
-	jp Functiond35a
+	jp ReceiveKeyItem
 ; d1fb
 
-Functiond1fb: ; d1fb
+.Ball: ; d1fb
 	ld hl, NumBalls
-	jp Functiond29c
+	jp PutItemInPocket
 ; d201
 
-Functiond201: ; d201
+.TMHM: ; d201
 	ld h, d
 	ld l, e
 	ld a, [CurItem]
 	ld c, a
 	call GetTMHMNumber
-	jp Functiond3c4
+	jp ReceiveTMHM
 ; d20d
 
 
 _TossItem:: ; d20d
-	call Functiond27b
+	call CheckHLequTMsHMsEnd
 	jr nz, .asm_d241
 	push hl
 	call CheckItemPocket
@@ -6720,11 +6720,11 @@
 	pop de
 	ld a, [wd142]
 	dec a
-	ld hl, .data_d220
+	ld hl, .Pockets
 	rst JumpTable
 	ret
 
-.data_d220
+.Pockets
 	dw .Item
 	dw .KeyItem
 	dw .Ball
@@ -6733,7 +6733,7 @@
 
 .Ball ; d228
 	ld hl, NumBalls
-	jp Functiond2ff
+	jp RemoveItemFromPocket
 ; d22e
 
 .TMHM ; d22e
@@ -6742,13 +6742,13 @@
 	ld a, [CurItem]
 	ld c, a
 	call GetTMHMNumber
-	jp Functiond3d8
+	jp TossTMHM
 ; d23a
 
 .KeyItem ; d23a
 	ld h, d
 	ld l, e
-	jp Functiond374
+	jp TossKeyItem
 ; d23f
 
 .Item ; d23f
@@ -6757,11 +6757,11 @@
 ; d241
 
 .asm_d241
-	jp Functiond2ff
+	jp RemoveItemFromPocket
 ; d244
 
 _CheckItem:: ; d244
-	call Functiond27b
+	call CheckHLequTMsHMsEnd
 	jr nz, .asm_d278
 	push hl
 	call CheckItemPocket
@@ -6768,11 +6768,11 @@
 	pop de
 	ld a, [wd142]
 	dec a
-	ld hl, .data_d257
+	ld hl, .Pockets
 	rst JumpTable
 	ret
 
-.data_d257
+.Pockets
 	dw .Item
 	dw .KeyItem
 	dw .Ball
@@ -6781,7 +6781,7 @@
 
 .Ball ; d25f
 	ld hl, NumBalls
-	jp Functiond349
+	jp CheckTheItem
 ; d265
 
 .TMHM ; d265
@@ -6790,13 +6790,13 @@
 	ld a, [CurItem]
 	ld c, a
 	call GetTMHMNumber
-	jp Functiond3fb
+	jp CheckTMHM
 ; d271
 
 .KeyItem ; d271
 	ld h, d
 	ld l, e
-	jp Functiond3b1
+	jp CheckKeyItems
 ; d276
 
 .Item ; d276
@@ -6805,10 +6805,10 @@
 ; d278
 
 .asm_d278
-	jp Functiond349
+	jp CheckTheItem
 ; d27b
 
-Functiond27b: ; d27b
+CheckHLequTMsHMsEnd: ; d27b
 	ld a, l
 	cp TMsHMsEnd % $100
 	ret nz
@@ -6840,7 +6840,7 @@
 	ret
 ; d29c
 
-Functiond29c: ; d29c
+PutItemInPocket: ; d29c
 	ld d, h
 	ld e, l
 	inc hl
@@ -6847,34 +6847,34 @@
 	ld a, [CurItem]
 	ld c, a
 	ld b, 0
-.asm_d2a5
+.loop
 	ld a, [hli]
-	cp $ff
-	jr z, .asm_d2bd
+	cp -1
+	jr z, .terminator
 	cp c
-	jr nz, .asm_d2ba
-	ld a, $63
+	jr nz, .next
+	ld a, 99
 	sub [hl]
 	add b
 	ld b, a
 	ld a, [wd10c]
 	cp b
-	jr z, .asm_d2c6
-	jr c, .asm_d2c6
+	jr z, .ok
+	jr c, .ok
 
-.asm_d2ba
+.next
 	inc hl
-	jr .asm_d2a5
+	jr .loop
 
-.asm_d2bd
+.terminator
 	call GetPocketCapacity
 	ld a, [de]
 	cp c
-	jr c, .asm_d2c6
+	jr c, .ok
 	and a
 	ret
 
-.asm_d2c6
+.ok
 	ld h, d
 	ld l, e
 	ld a, [CurItem]
@@ -6881,43 +6881,43 @@
 	ld c, a
 	ld a, [wd10c]
 	ld [wd10d], a
-.asm_d2d2
+.loop2
 	inc hl
 	ld a, [hli]
-	cp $ff
-	jr z, .asm_d2ef
+	cp -1
+	jr z, .terminator2
 	cp c
-	jr nz, .asm_d2d2
+	jr nz, .loop2
 	ld a, [wd10d]
 	add [hl]
-	cp $64
-	jr nc, .asm_d2e6
+	cp 100
+	jr nc, .newstack
 	ld [hl], a
-	jr .asm_d2fd
+	jr .done
 
-.asm_d2e6
-	ld [hl], $63
-	sub $63
+.newstack
+	ld [hl], 99
+	sub 99
 	ld [wd10d], a
-	jr .asm_d2d2
+	jr .loop2
 
-.asm_d2ef
+.terminator2
 	dec hl
 	ld a, [CurItem]
 	ld [hli], a
 	ld a, [wd10d]
 	ld [hli], a
-	ld [hl], $ff
+	ld [hl], -1
 	ld h, d
 	ld l, e
 	inc [hl]
 
-.asm_d2fd
+.done
 	scf
 	ret
 ; d2ff
 
-Functiond2ff: ; d2ff
+RemoveItemFromPocket: ; d2ff
 	ld d, h
 	ld e, l
 	ld a, [hli]
@@ -6924,150 +6924,149 @@
 	ld c, a
 	ld a, [wd107]
 	cp c
-	jr nc, .asm_d318
+	jr nc, .ok
 	ld c, a
 	ld b, $0
-	add hl, bc
-	add hl, bc
+	add_n_times hl, bc, 2
 	ld a, [CurItem]
 	cp [hl]
 	inc hl
-	jr z, .asm_d327
+	jr z, .skip
 	ld h, d
 	ld l, e
 	inc hl
 
-.asm_d318
+.ok
 	ld a, [CurItem]
 	ld b, a
-.asm_d31c
+.loop
 	ld a, [hli]
 	cp b
-	jr z, .asm_d327
-	cp $ff
-	jr z, .asm_d347
+	jr z, .skip
+	cp -1
+	jr z, .nope
 	inc hl
-	jr .asm_d31c
+	jr .loop
 
-.asm_d327
+.skip
 	ld a, [wd10c]
 	ld b, a
 	ld a, [hl]
 	sub b
-	jr c, .asm_d347
+	jr c, .nope
 	ld [hl], a
 	ld [wd10d], a
 	and a
-	jr nz, .asm_d345
+	jr nz, .yup
 	dec hl
 	ld b, h
 	ld c, l
 	inc hl
 	inc hl
-.asm_d33b
+.loop2
 	ld a, [hli]
 	ld [bc], a
 	inc bc
-	cp $ff
-	jr nz, .asm_d33b
+	cp -1
+	jr nz, .loop2
 	ld h, d
 	ld l, e
 	dec [hl]
 
-.asm_d345
+.yup
 	scf
 	ret
 
-.asm_d347
+.nope
 	and a
 	ret
 ; d349
 
-Functiond349: ; d349
+CheckTheItem: ; d349
 	ld a, [CurItem]
 	ld c, a
-.asm_d34d
+.loop
 	inc hl
 	ld a, [hli]
-	cp $ff
-	jr z, .asm_d358
+	cp -1
+	jr z, .done
 	cp c
-	jr nz, .asm_d34d
+	jr nz, .loop
 	scf
 	ret
 
-.asm_d358
+.done
 	and a
 	ret
 ; d35a
 
-Functiond35a: ; d35a
+ReceiveKeyItem: ; d35a
 	ld hl, NumKeyItems
 	ld a, [hli]
-	cp $19
-	jr nc, .asm_d372
+	cp MAX_KEY_ITEMS
+	jr nc, .nope
 	ld c, a
-	ld b, $0
+	ld b, 0
 	add hl, bc
 	ld a, [CurItem]
 	ld [hli], a
-	ld [hl], $ff
+	ld [hl], -1
 	ld hl, NumKeyItems
 	inc [hl]
 	scf
 	ret
 
-.asm_d372
+.nope
 	and a
 	ret
 ; d374
 
-Functiond374: ; d374
+TossKeyItem: ; d374
 	ld a, [wd107]
 	ld e, a
-	ld d, $0
+	ld d, 0
 	ld hl, NumKeyItems
 	ld a, [hl]
 	cp e
-	jr nc, .asm_d387
-	call Functiond396
+	jr nc, .ok
+	call .Toss
 	ret nc
-	jr .asm_d38a
+	jr .ok2
 
-.asm_d387
+.ok
 	dec [hl]
 	inc hl
 	add hl, de
 
-.asm_d38a
+.ok2
 	ld d, h
 	ld e, l
 	inc hl
-.asm_d38d
+.loop
 	ld a, [hli]
 	ld [de], a
 	inc de
-	cp $ff
-	jr nz, .asm_d38d
+	cp -1
+	jr nz, .loop
 	scf
 	ret
 ; d396
 
-Functiond396: ; d396
+.Toss: ; d396
 	ld hl, NumKeyItems
 	ld a, [CurItem]
 	ld c, a
-.asm_d39d
+.loop3
 	inc hl
 	ld a, [hl]
 	cp c
-	jr z, .asm_d3a8
-	cp $ff
-	jr nz, .asm_d39d
+	jr z, .ok3
+	cp -1
+	jr nz, .loop3
 	xor a
 	ret
 
-.asm_d3a8
+.ok3
 	ld a, [NumKeyItems]
 	dec a
 	ld [NumKeyItems], a
@@ -7075,20 +7074,20 @@
 	ret
 ; d3b1
 
-Functiond3b1: ; d3b1
+CheckKeyItems: ; d3b1
 	ld a, [CurItem]
 	ld c, a
 	ld hl, KeyItems
-.asm_d3b8
+.loop
 	ld a, [hli]
 	cp c
-	jr z, .asm_d3c2
-	cp $ff
-	jr nz, .asm_d3b8
+	jr z, .done
+	cp -1
+	jr nz, .loop
 	and a
 	ret
 
-.asm_d3c2
+.done
 	scf
 	ret
 ; d3c4
@@ -7095,27 +7094,27 @@
 
 
 
-Functiond3c4: ; d3c4
+ReceiveTMHM: ; d3c4
 	dec c
-	ld b, $0
+	ld b, 0
 	ld hl, TMsHMs
 	add hl, bc
 	ld a, [wd10c]
 	add [hl]
-	cp $64
-	jr nc, .asm_d3d6
+	cp 100
+	jr nc, .toomany
 	ld [hl], a
 	scf
 	ret
 
-.asm_d3d6
+.toomany
 	and a
 	ret
 ; d3d8
 
-Functiond3d8: ; d3d8
+TossTMHM: ; d3d8
 	dec c
-	ld b, $0
+	ld b, 0
 	ld hl, TMsHMs
 	add hl, bc
 	ld a, [wd10c]
@@ -7122,26 +7121,26 @@
 	ld b, a
 	ld a, [hl]
 	sub b
-	jr c, .asm_d3f9
+	jr c, .nope
 	ld [hl], a
 	ld [wd10d], a
-	jr nz, .asm_d3f7
+	jr nz, .yup
 	ld a, [wd0e2]
 	and a
-	jr z, .asm_d3f7
+	jr z, .yup
 	dec a
 	ld [wd0e2], a
 
-.asm_d3f7
+.yup
 	scf
 	ret
 
-.asm_d3f9
+.nope
 	and a
 	ret
 ; d3fb
 
-Functiond3fb: ; d3fb
+CheckTMHM: ; d3fb
 	dec c
 	ld b, $0
 	ld hl, TMsHMs
@@ -7180,7 +7179,7 @@
 GetNumberedTMHM: ; d417
 ; Return the item id of a TM/HM by number c.
 
-	ld a, c 
+	ld a, c
 
 ; Skip any gaps.
 	cp ITEM_C3 - (TM01 - 1)
@@ -7202,7 +7201,7 @@
 
 _CheckTossableItem:: ; d427
 ; Return 1 in wd142 and carry if CurItem can't be removed from the bag.
-	ld a, 4
+	ld a, ITEMATTR_PERMISSIONS
 	call GetItemAttr
 	bit 7, a
 	jr nz, Functiond47f
@@ -7212,7 +7211,7 @@
 
 CheckSelectableItem: ; d432
 ; Return 1 in wd142 and carry if CurItem can't be selected.
-	ld a, 4
+	ld a, ITEMATTR_PERMISSIONS
 	call GetItemAttr
 	bit 6, a
 	jr nz, Functiond47f
@@ -7222,7 +7221,7 @@
 
 CheckItemPocket:: ; d43d
 ; Return the pocket for CurItem in wd142.
-	ld a, 5
+	ld a, ITEMATTR_POCKET
 	call GetItemAttr
 	and $f
 	ld [wd142], a
@@ -7231,7 +7230,7 @@
 
 CheckItemContext: ; d448
 ; Return the context for CurItem in wd142.
-	ld a, 6
+	ld a, ITEMATTR_HELP
 	call GetItemAttr
 	and $f
 	ld [wd142], a
@@ -7240,7 +7239,7 @@
 
 CheckItemMenu: ; d453
 ; Return the menu for CurItem in wd142.
-	ld a, 6
+	ld a, ITEMATTR_HELP
 	call GetItemAttr
 	swap a
 	and $f
@@ -7265,7 +7264,7 @@
 	ld a, [CurItem]
 	dec a
 	ld c, a
-	ld a, 7
+	ld a, NUM_ITEMATTRS
 	call AddNTimes
 	ld a, BANK(ItemAttributes)
 	call GetFarByte
@@ -7287,10 +7286,10 @@
 ; Return the price of CurItem in de.
 	push hl
 	push bc
-	ld a, $0
+	ld a, ITEMATTR_PRICE
 	call GetItemAttr
 	ld e, a
-	ld a, $1
+	ld a, ITEMATTR_PRICE_HI
 	call GetItemAttr
 	ld d, a
 	pop bc
@@ -9745,7 +9744,7 @@
 	and a
 	ret nz
 	ld hl, UnknownText_0xe417
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 ; e417 (3:6417)
@@ -9902,13 +9901,13 @@
 
 .asm_e51e
 	ld hl, UnknownText_0xe52e
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 
 .asm_e526
 	ld hl, UnknownText_0xe533
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 ; e52e
@@ -9976,7 +9975,7 @@
 
 .asm_e576
 	ld hl, UnknownText_0xe57e
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 ; e57e
@@ -12721,7 +12720,7 @@
 	callasm HalveMoney
 	callasm Function12527
 	farscall UnknownScript_0x122c1
-	special WarpToLastSpawn
+	special WarpToSpawnPoint
 	newloadmap $f1
 	resetfuncs
 
@@ -12866,7 +12865,7 @@
 	ld hl, UnknownScript_0x125ad
 
 .asm_12590
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, $1
 	ld [wd0ec], a
 	ret
@@ -13165,7 +13164,7 @@
 	push de
 	ld a, [MenuSelection]
 	cp $ff
-	jr z, .none 
+	jr z, .none
 	call .GetMenuAccountTextPointer
 	inc hl
 	inc hl
@@ -13513,7 +13512,7 @@
 	and a
 	jr nz, .asm_12a3f
 	ld hl, UnknownText_0x12a45
-	call Function1d4f
+	call MenuTextBox
 	callba Function24fbf
 	push af
 	call WriteBackup
@@ -13521,7 +13520,7 @@
 	pop af
 	jr c, .asm_12a42
 	ld hl, UnknownText_0x12a4a
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
 	push af
 	call Function1c07
@@ -13532,7 +13531,7 @@
 	call TossItem
 	call PartyMonItemName
 	ld hl, UnknownText_0x12a4f
-	call Function1d4f
+	call MenuTextBox
 	call Function1c07
 	and a
 	ret
@@ -13564,7 +13563,7 @@
 
 Function12a54: ; 12a54 (4:6a54)
 	ld hl, UnknownText_0x12a5b
-	call Function1d67
+	call MenuTextBoxBackup
 	ret
 ; 12a5b (4:6a5b)
 
@@ -13769,7 +13768,7 @@
 
 .next
 	ld hl, CantBeHeldText
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .loop
 
 .quit
@@ -13797,13 +13796,13 @@
 .asm_12bf4
 	call Function12cea
 	ld hl, MadeHoldText
-	call Function1d67
+	call MenuTextBoxBackup
 	call GivePartyItem
 	ret
 
 .asm_12c01
 	ld hl, PleaseRemoveMailText
-	call Function1d67
+	call MenuTextBoxBackup
 	ret
 
 .asm_12c08
@@ -13824,7 +13823,7 @@
 	jr nc, .asm_12c3c
 
 	ld hl, TookAndMadeHoldText
-	call Function1d67
+	call MenuTextBoxBackup
 	ld a, [wd265]
 	ld [CurItem], a
 	call GivePartyItem
@@ -13835,7 +13834,7 @@
 	ld [CurItem], a
 	call Function12cdf
 	ld hl, ItemStorageIsFullText
-	call Function1d67
+	call MenuTextBoxBackup
 
 .asm_12c4b
 	ret
@@ -13876,17 +13875,17 @@
 	ld [hl], NO_ITEM
 	call GetItemName
 	ld hl, TookFromText
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .asm_12c9a
 
 .asm_12c8c
 	ld hl, IsntHoldingAnythingText
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .asm_12c9a
 
 .asm_12c94
 	ld hl, ItemStorageIsFullText
-	call Function1d67
+	call MenuTextBoxBackup
 
 .asm_12c9a
 	ret
@@ -13973,7 +13972,7 @@
 	jp TossItem
 
 Function12cf5: ; 12cf5
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
 	jp Function1c07
 ; 12cfe
@@ -14040,12 +14039,12 @@
 	callba Function4456e
 	jr c, .asm_12d92
 	ld hl, UnknownText_0x12dfb
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .asm_12dc6
 
 .asm_12d92
 	ld hl, UnknownText_0x12df6
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .asm_12dc6
 
 .asm_12d9a
@@ -14061,12 +14060,12 @@
 	ld [hl], $0
 	call GetCurNick
 	ld hl, UnknownText_0x12de7
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .asm_12dc6
 
 .asm_12dbe
 	ld hl, UnknownText_0x12dec
-	call Function1d67
+	call MenuTextBoxBackup
 	jr .asm_12dc6
 
 .asm_12dc6
@@ -14139,7 +14138,7 @@
 
 
 Function12e1b: ; 12e1b
-	callba Functionc785
+	callba CutFunction
 	ld a, [wd0ec]
 	cp $1
 	jr nz, .asm_12e2d
@@ -14154,7 +14153,7 @@
 
 
 Function12e30: ; 12e30
-	callba Functionca3b
+	callba FlyFunction
 	ld a, [wd0ec]
 	cp $2
 	jr z, .asm_12e4c
@@ -14193,7 +14192,7 @@
 ; 12e6a
 
 Function12e6a: ; 12e6a
-	callba Functioncce5
+	callba StrengthFunction
 	ld a, [wd0ec]
 	cp $1
 	jr nz, .asm_12e7c
@@ -14207,7 +14206,7 @@
 ; 12e7f
 
 Function12e7f: ; 12e7f
-	callba Functioncd9d
+	callba WhirlpoolFunction
 	ld a, [wd0ec]
 	cp $1
 	jr nz, .asm_12e91
@@ -14235,7 +14234,7 @@
 ; 12ea9
 
 Function12ea9: ; 12ea9
-	callba Functioncc61
+	callba TeleportFunction
 	ld a, [wd0ec]
 	and a
 	jr z, .asm_12eba
@@ -14249,7 +14248,7 @@
 ; 12ebd
 
 Function12ebd: ; 12ebd
-	callba Functionc909
+	callba SurfFunction
 	ld a, [wd0ec]
 	and a
 	jr z, .asm_12ece
@@ -14263,7 +14262,7 @@
 ; 12ed1
 
 Function12ed1: ; 12ed1
-	callba Functioncb9c
+	callba DigFunction
 	ld a, [wd0ec]
 	cp $1
 	jr nz, .asm_12ee3
@@ -14321,7 +14320,7 @@
 ; 12f26
 
 Function12f26: ; 12f26
-	callba Functionce7d
+	callba HeadbuttFunction
 	ld a, [wd0ec]
 	cp $1
 	jr nz, .asm_12f38
@@ -14335,7 +14334,7 @@
 ; 12f3b
 
 Function12f3b: ; 12f3b
-	callba Functionceeb
+	callba RockSmashFunction
 	ld a, [wd0ec]
 	cp $1
 	jr nz, .asm_12f4d
@@ -14349,7 +14348,7 @@
 ; 12f50
 
 Function12f50: ; 12f50
-	callba Function506bc
+	callba DoMovementFunctionc
 	ld b, $4
 	ld a, $2
 	ret
@@ -15447,7 +15446,7 @@
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
-	ld b, $1 ; set
+	ld b, SET_FLAG
 	call EventFlagAction
 	ret
 
@@ -16011,7 +16010,7 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld b, $0 ; clear
+	ld b, RESET_FLAG
 	call EventFlagAction
 	pop hl
 	inc hl
@@ -16040,7 +16039,7 @@
 	ld d, [hl]
 	push de
 ; If we've already set it, it doesn't count.
-	ld b, $2 ; check
+	ld b, CHECK_FLAG
 	call EventFlagAction
 	pop de
 	ld a, c
@@ -16047,7 +16046,7 @@
 	and a
 	jr nz, .next
 ; Set the flag.  This will cause that sprite to not be visible in the contest.
-	ld b, $1 ; set
+	ld b, SET_FLAG
 	call EventFlagAction
 	pop bc
 ; Check if we're done.  If so, return.  Otherwise, choose the next victim.
@@ -16068,7 +16067,7 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld b, $2 ; check
+	ld b, CHECK_FLAG
 	call EventFlagAction
 	ret
 ; 139fe
@@ -18251,7 +18250,7 @@
 Function14a83: ; 14a83 (5:4a83)
 	push de
 	ld hl, UnknownText_0x152a1
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
 	call Function1c07
 	jr c, .asm_14ab0
@@ -18331,7 +18330,7 @@
 
 Function14b34: ; 14b34
 	ld hl, UnknownText_0x152a6
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
 	call Function1c07
 	jr c, .asm_14b52
@@ -18420,7 +18419,7 @@
 Function14baf: ; 14baf
 	ld b, BANK(UnknownText_0x15283)
 	call MapTextbox
-	call Function1d58
+	call LoadMenuTextBox
 	lb bc, 0, 7
 	call PlaceYesNoBox
 	ld a, [wcfa9]
@@ -19668,7 +19667,7 @@
 	push af
 	set 4, a
 	ld [Options], a
-	call Function1d4f
+	call MenuTextBox
 	pop af
 	ld [Options], a
 	ret
@@ -19709,7 +19708,7 @@
 
 .askquantity
 	ld hl, .HowManyText
-	call Function1d4f
+	call MenuTextBox
 	callba Function24fbf
 	call Function1c07
 	call Function1c07
@@ -19731,7 +19730,7 @@
 	call TossItem
 	predef PartyMonItemName
 	ld hl, .WithdrewText
-	call Function1d4f
+	call MenuTextBox
 	xor a
 	ld [hBGMapMode], a
 	call Function1c07
@@ -19739,7 +19738,7 @@
 
 .PackFull
 	ld hl, .NoRoomText
-	call Function1d67
+	call MenuTextBoxBackup
 	ret
 
 .done
@@ -19820,7 +19819,7 @@
 	callba Function129d5
 	ret nc
 	ld hl, UnknownText_0x158c7
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 ; 0x158c7
@@ -19881,7 +19880,7 @@
 
 .asm_1591d
 	ld hl, .HowManyText
-	call Function1d4f
+	call MenuTextBox
 	callba Function24fbf
 	push af
 	call Function1c07
@@ -20028,7 +20027,7 @@
 	dbw BANK(Function244c3), Function244c3
 
 Function15a20: ; 15a20
-	call Function1d4f
+	call MenuTextBox
 	call Function1c07
 	ret
 ; 15a27
@@ -20871,7 +20870,7 @@
 
 Function15ed3: ; 15ed3
 	ld hl, UnknownText_0x15edb
-	call Function1d67
+	call MenuTextBoxBackup
 	and a
 	ret
 ; 15edb
@@ -21037,7 +21036,7 @@
 ; 15fcd
 
 Function15fcd: ; 15fcd
-	call Function1d4f
+	call MenuTextBox
 	call Functiona36
 	call Function1c07
 	ret
@@ -22154,7 +22153,7 @@
 ; 167f1
 
 UnknownText_0x167f1: ; 0x167f1
-	; 
+	;
 	text_jump UnknownText_0x1bdaa7
 	db "@"
 ; 0x167f6
@@ -23302,7 +23301,7 @@
 	jr nz, .nottogepi
 	; set the event flag for hatching togepi
 	ld de, EVENT_TOGEPI_HATCHED
-	ld b, $1 ; set
+	ld b, SET_FLAG
 	call EventFlagAction
 .nottogepi
 
@@ -23441,7 +23440,7 @@
 ; 170b0 (5:70b0)
 
 UnknownText_0x170b0: ; 0x170b0
-	; 
+	;
 	text_jump UnknownText_0x1c0db8
 	db "@"
 ; 0x170b5
@@ -25258,13 +25257,13 @@
 	ld a, [hl]
 	ld d, a
 	cp -1
-	jr nz, .clear
+	jr nz, .check
 	ld a, e
 	cp -1
 	jr z, .zero
 	jr .minus_one
-.clear
-	ld b, $2 ; clear
+.check
+	ld b, CHECK_FLAG
 	call EventFlagAction
 	ld a, c
 	and a
@@ -27694,7 +27693,7 @@
 
 ProfOaksPC: ; 0x265d3
 	ld hl, OakPCText1
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
 	jr c, .shutdown
 	call ProfOaksPCBoot ; player chose "yes"?
@@ -28131,7 +28130,7 @@
 	jr z, .done
 	push hl
 	push af
-	ld b, 2 ; check
+	ld b, CHECK_FLAG
 	call DecorationFlagAction
 	ld a, c
 	and a
@@ -28344,7 +28343,7 @@
 
 .empty
 	ld hl, UnknownText_0x269b0
-	call Function1d67
+	call MenuTextBoxBackup
 	ret
 ; 269b0
 
@@ -28366,7 +28365,7 @@
 	db $a0 ; flags
 	db 0 ; items
 	dw wd002
-	dw Function269f3
+	dw DecorationMenuFunction
 	dw DecorationAttributes
 ; 0x269c5
 
@@ -28383,7 +28382,7 @@
 	db 8, 0 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, wd002 ; text pointer
-	dbw BANK(Function269f3), Function269f3
+	dbw BANK(DecorationMenuFunction), DecorationMenuFunction
 	dbw 0, 0
 	dbw 0, 0
 ; 269dd
@@ -28396,7 +28395,7 @@
 	ret
 ; 269e7
 
-Function269e7: ; 269e7
+GetDecorationName: ; 269e7
 	push hl
 	call GetDecorationData
 	call GetDecorationType
@@ -28405,7 +28404,7 @@
 	ret
 ; 269f3
 
-Function269f3: ; 269f3
+DecorationMenuFunction: ; 269f3
 	ld a, [MenuSelection]
 	push de
 	call GetDecorationData
@@ -28418,36 +28417,36 @@
 DoDecorationAction2: ; 26a02
 	ld a, [MenuSelection]
 	call GetDecorationData
-	ld de, 2
+	ld de, 2 ; function 2
 	add hl, de
 	ld a, [hl]
-	ld hl, Jumptable_26a12
+	ld hl, .DecoActions
 	rst JumpTable
 	ret
 ; 26a12
 
-Jumptable_26a12: ; 26a12
-	dw Function26ce3
-	dw Function26ce5
-	dw Function26ceb
-	dw Function26cf1
-	dw Function26cf7
-	dw Function26cfd
-	dw Function26d03
-	dw Function26d09
-	dw Function26d0f
-	dw Function26d15
-	dw Function26d1b
-	dw Function26d21
-	dw Function26d27
-	dw Function26db3
-	dw Function26dc9
+.DecoActions: ; 26a12
+	dw DecoAction_nothing
+	dw DecoAction_setupbed
+	dw DecoAction_putawaybed
+	dw DecoAction_setupcarpet
+	dw DecoAction_putawaycarpet
+	dw DecoAction_setupplant
+	dw DecoAction_putawayplant
+	dw DecoAction_setupposter
+	dw DecoAction_putawayposter
+	dw DecoAction_setupconsole
+	dw DecoAction_putawayconsole
+	dw DecoAction_setupbigdoll
+	dw DecoAction_putawaybigdoll
+	dw DecoAction_setupornament
+	dw DecoAction_putawayornament
 ; 26a30
 
 
 GetDecorationFlag: ; 26a30
 	call GetDecorationData
-	ld de, 3
+	ld de, 3 ; event flag
 	add hl, de
 	ld a, [hli]
 	ld d, [hl]
@@ -28463,10 +28462,10 @@
 	ret
 ; 26a44
 
-Function26a44: ; 26a44
+GetDecorationSprite: ; 26a44
 	ld a, c
 	call GetDecorationData
-	ld de, 5
+	ld de, 5 ; sprite
 	add hl, de
 	ld a, [hl]
 	ld c, a
@@ -28474,7 +28473,7 @@
 ; 26a4f
 
 decoration: MACRO
-	; type, ??, event flag, sprite
+	; type, name function, ?? function, event flag, sprite
 	db \1, \2, \3
 	dw \4
 	db \5
@@ -28571,80 +28570,80 @@
 	ld e, [hl]
 	ld bc, StringBuffer2
 	push bc
-	ld hl, Table26c7e
+	ld hl, .NameFunctions
 	rst JumpTable
 	pop de
 	ret
 ; 26c7e
 
-Table26c7e: ; 26c7e
-	dw Function26c8c
-	dw Function26c8d
-	dw Function26c90
-	dw Function26c97
-	dw Function26c9e
-	dw Function26ca6
-	dw Function26cae
+.NameFunctions: ; 26c7e
+	dw .invalid
+	dw .default
+	dw .bed
+	dw .three
+	dw .poster
+	dw .doll
+	dw .bigdoll
 ; 26c8c
 
 
-Function26c8c: ; 26c8c
+.invalid: ; 26c8c
 	ret
 ; 26c8d
 
-Function26c8d: ; 26c8d
+.default: ; 26c8d
 	ld a, e
-	jr Function26cca
+	jr .getdeconame
 
-Function26c90: ; 26c90
-	call Function26c8d
-	ld a, $d
-	jr Function26cca
+.bed: ; 26c90
+	call .default
+	ld a, $d ; " BED@"
+	jr .getdeconame
 
-Function26c97: ; 26c97
-	call Function26c8d
-	ld a, $e
-	jr Function26cca
+.three: ; 26c97
+	call .default
+	ld a, $e ; " CARPET@"
+	jr .getdeconame
 
-Function26c9e: ; 26c9e
+.poster: ; 26c9e
 	ld a, e
-	call Function26cc0
-	ld a, $f
-	jr Function26cca
+	call .getpokename
+	ld a, $f ; " POSTER@"
+	jr .getdeconame
 
-Function26ca6: ; 26ca6
+.doll: ; 26ca6
 	ld a, e
-	call Function26cc0
-	ld a, $10
-	jr Function26cca
+	call .getpokename
+	ld a, $10 ; " DOLL@"
+	jr .getdeconame
 
-Function26cae: ; 26cae
+.bigdoll: ; 26cae
 	push de
-	ld a, $11
-	call Function26cca
+	ld a, $11 ; "BIG @"
+	call .getdeconame
 	pop de
 	ld a, e
-	jr Function26cc0
+	jr .getpokename
 
-Function26cb8: ; 26cb8
+.unused: ; 26cb8
 	push de
-	call Function26cca
+	call .getdeconame
 	pop de
 	ld a, e
-	jr Function26cca
+	jr .getdeconame
 
-Function26cc0: ; 26cc0
+.getpokename: ; 26cc0
 	push bc
 	ld [wd265], a
 	call GetPokemonName
 	pop bc
-	jr Function26cda
+	jr .copy
 
-Function26cca: ; 26cca
-	call GetDecorationName
-	jr Function26cda
+.getdeconame: ; 26cca
+	call ._getdeconame
+	jr .copy
 
-GetDecorationName: ; 26ccf
+._getdeconame: ; 26ccf
 	push bc
 	ld hl, DecorationNames
 	call GetNthString
@@ -28653,7 +28652,7 @@
 	pop bc
 	ret
 
-Function26cda: ; 26cda
+.copy: ; 26cda
 	ld h, b
 	ld l, c
 	call CopyName2
@@ -28663,77 +28662,77 @@
 	ret
 ; 26ce3
 
-Function26ce3: ; 26ce3
+DecoAction_nothing: ; 26ce3
 	scf
 	ret
 ; 26ce5
 
-Function26ce5: ; 26ce5
+DecoAction_setupbed: ; 26ce5
 	ld hl, Bed
-	jp Function26d2d
+	jp DecoAction_TrySetItUp
 ; 26ceb
 
-Function26ceb: ; 26ceb
+DecoAction_putawaybed: ; 26ceb
 	ld hl, Bed
-	jp Function26d86
+	jp DecoAction_TryPutItAway
 ; 26cf1
 
-Function26cf1: ; 26cf1
+DecoAction_setupcarpet: ; 26cf1
 	ld hl, Carpet
-	jp Function26d2d
+	jp DecoAction_TrySetItUp
 ; 26cf7
 
-Function26cf7: ; 26cf7
+DecoAction_putawaycarpet: ; 26cf7
 	ld hl, Carpet
-	jp Function26d86
+	jp DecoAction_TryPutItAway
 ; 26cfd
 
-Function26cfd: ; 26cfd
+DecoAction_setupplant: ; 26cfd
 	ld hl, Plant
-	jp Function26d2d
+	jp DecoAction_TrySetItUp
 ; 26d03
 
-Function26d03: ; 26d03
+DecoAction_putawayplant: ; 26d03
 	ld hl, Plant
-	jp Function26d86
+	jp DecoAction_TryPutItAway
 ; 26d09
 
-Function26d09: ; 26d09
+DecoAction_setupposter: ; 26d09
 	ld hl, Poster
-	jp Function26d2d
+	jp DecoAction_TrySetItUp
 ; 26d0f
 
-Function26d0f: ; 26d0f
+DecoAction_putawayposter: ; 26d0f
 	ld hl, Poster
-	jp Function26d86
+	jp DecoAction_TryPutItAway
 ; 26d15
 
-Function26d15: ; 26d15
+DecoAction_setupconsole: ; 26d15
 	ld hl, Console
-	jp Function26d2d
+	jp DecoAction_TrySetItUp
 ; 26d1b
 
-Function26d1b: ; 26d1b
+DecoAction_putawayconsole: ; 26d1b
 	ld hl, Console
-	jp Function26d86
+	jp DecoAction_TryPutItAway
 ; 26d21
 
-Function26d21: ; 26d21
+DecoAction_setupbigdoll: ; 26d21
 	ld hl, BigDoll
-	jp Function26d2d
+	jp DecoAction_TrySetItUp
 ; 26d27
 
-Function26d27: ; 26d27
+DecoAction_putawaybigdoll: ; 26d27
 	ld hl, BigDoll
-	jp Function26d86
+	jp DecoAction_TryPutItAway
 ; 26d2d
 
-Function26d2d: ; 26d2d
+DecoAction_TrySetItUp: ; 26d2d
 	ld a, [hl]
 	ld [Buffer1], a
 	push hl
-	call Function26d46
-	jr c, .asm_26d43
+	call DecoAction_SetItUp
+	jr c, .failed
 	ld a, $1
 	ld [wd1ee], a
 	pop hl
@@ -28742,48 +28741,52 @@
 	xor a
 	ret
 
-.asm_26d43
+.failed
 	pop hl
 	xor a
 	ret
 ; 26d46
 
-Function26d46: ; 26d46
+DecoAction_SetItUp: ; 26d46
+; See if there's anything of the same type already out
 	ld a, [Buffer1]
 	and a
-	jr z, .asm_26d6d
+	jr z, .nothingthere
+; See if that item is already out
 	ld b, a
 	ld a, [MenuSelection]
 	cp b
-	jr z, .asm_26d7e
+	jr z, .alreadythere
+; Put away the item that's already out, and set up the new one
 	ld a, [MenuSelection]
 	ld hl, StringBuffer4
-	call Function269e7
+	call GetDecorationName
 	ld a, [Buffer1]
 	ld hl, StringBuffer3
-	call Function269e7
+	call GetDecorationName
 	ld hl, UnknownText_0x26ee0
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 
-.asm_26d6d
+.nothingthere
 	ld a, [MenuSelection]
 	ld hl, StringBuffer3
-	call Function269e7
+	call GetDecorationName
 	ld hl, UnknownText_0x26edb
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 
-.asm_26d7e
+.alreadythere
 	ld hl, UnknownText_0x26ee5
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 ; 26d86
 
-Function26d86: ; 26d86
+DecoAction_TryPutItAway: ; 26d86
+; If there is no item of that type already set, there is nothing to put away.
 	ld a, [hl]
 	ld [Buffer1], a
 	xor a
@@ -28790,50 +28793,51 @@
 	ld [hl], a
 	ld a, [Buffer1]
 	and a
-	jr z, .asm_26dab
+	jr z, .nothingthere
+; Put it away.
 	ld a, $1
 	ld [wd1ee], a
 	ld a, [Buffer1]
 	ld [MenuSelection], a
 	ld hl, StringBuffer3
-	call Function269e7
+	call GetDecorationName
 	ld hl, UnknownText_0x26ed1
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 
-.asm_26dab
+.nothingthere
 	ld hl, UnknownText_0x26ed6
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 ; 26db3
 
-Function26db3: ; 26db3
+DecoAction_setupornament: ; 26db3
 	ld hl, UnknownText_0x26e41
-	call Function26e70
-	jr c, .asm_26dc7
-	call Function26de3
-	jr c, .asm_26dc7
+	call DecoAction_AskWhichSide
+	jr c, .cancel
+	call DecoAction_SetItUp_Ornament
+	jr c, .cancel
 	ld a, $1
 	ld [wd1ee], a
-	jr Function26dd6
+	jr DecoAction_FinishUp_Ornament
 
-.asm_26dc7
+.cancel
 	xor a
 	ret
 
-Function26dc9: ; 26dc9
+DecoAction_putawayornament: ; 26dc9
 	ld hl, UnknownText_0x26e6b
-	call Function26e70
-	jr nc, .asm_26dd3
+	call DecoAction_AskWhichSide
+	jr nc, .incave
 	xor a
 	ret
 
-.asm_26dd3
-	call Function26e46
+.incave
+	call DecoAction_PutItAway_Ornament
 
-Function26dd6: ; 26dd6
+DecoAction_FinishUp_Ornament: ; 26dd6
 	call Function26e9a
 	ld a, [wd1ec]
 	ld [hl], a
@@ -28843,48 +28847,48 @@
 	ret
 ; 26de3
 
-Function26de3: ; 26de3
+DecoAction_SetItUp_Ornament: ; 26de3
 	ld a, [wd1ec]
 	and a
-	jr z, .asm_26e11
+	jr z, .nothingthere
 	ld b, a
 	ld a, [MenuSelection]
 	cp b
-	jr z, .asm_26e2b
+	jr z, .failed
 	ld a, b
 	ld hl, StringBuffer3
-	call Function269e7
+	call GetDecorationName
 	ld a, [MenuSelection]
 	ld hl, StringBuffer4
-	call Function269e7
+	call GetDecorationName
 	ld a, [MenuSelection]
 	ld [wd1ec], a
-	call Function26e33
+	call .getwhichside
 	ld hl, UnknownText_0x26ee0
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 
-.asm_26e11
+.nothingthere
 	ld a, [MenuSelection]
 	ld [wd1ec], a
-	call Function26e33
+	call .getwhichside
 	ld a, [MenuSelection]
 	ld hl, StringBuffer3
-	call Function269e7
+	call GetDecorationName
 	ld hl, UnknownText_0x26edb
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 
-.asm_26e2b
+.failed
 	ld hl, UnknownText_0x26ee5
-	call Function1d67
+	call MenuTextBoxBackup
 	scf
 	ret
 ; 26e33
 
-Function26e33: ; 26e33
+.getwhichside: ; 26e33
 	ld a, [MenuSelection]
 	ld b, a
 	ld a, [wd1ed]
@@ -28901,24 +28905,24 @@
 	db "@"
 ; 0x26e46
 
-Function26e46: ; 26e46
+DecoAction_PutItAway_Ornament: ; 26e46
 	ld a, [wd1ec]
 	and a
-	jr z, .asm_26e63
+	jr z, .nothingthere
 	ld hl, StringBuffer3
-	call Function269e7
+	call GetDecorationName
 	ld a, $1
 	ld [wd1ee], a
 	xor a
 	ld [wd1ec], a
 	ld hl, UnknownText_0x26ed1
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 
-.asm_26e63
+.nothingthere
 	ld hl, UnknownText_0x26ed6
-	call Function1d67
+	call MenuTextBoxBackup
 	xor a
 	ret
 ; 26e6b
@@ -28929,8 +28933,8 @@
 	db "@"
 ; 0x26e70
 
-Function26e70: ; 26e70
-	call Function1d4f
+DecoAction_AskWhichSide: ; 26e70
+	call MenuTextBox
 	ld hl, MenuDataHeader_0x26eab
 	call Function1dab
 	call Function1c07
@@ -29016,7 +29020,7 @@
 	ld a, c
 	ld h, d
 	ld l, e
-	call Function269e7
+	call GetDecorationName
 	ret
 ; 26ef1
 
@@ -29031,7 +29035,7 @@
 	call GetDecorationID
 	ld hl, StringBuffer1
 	push hl
-	call Function269e7
+	call GetDecorationName
 	pop de
 	ret
 
@@ -29039,7 +29043,7 @@
 SetSpecificDecorationFlag: ; 26f02
 	ld a, c
 	call GetDecorationID
-	ld b, 1 ; set
+	ld b, SET_FLAG
 	call DecorationFlagAction
 	ret
 ; 26f0c
@@ -29064,7 +29068,7 @@
 	cp -1
 	jr z, .done
 	push hl
-	ld b, 1 ; set
+	ld b, SET_FLAG
 	call DecorationFlagAction
 	pop hl
 	jr .loop
@@ -29261,25 +29265,25 @@
 ; 0x26feb
 
 Function26feb: ; 26feb
-	ld de, $0004
+	lb de, 0, 4
 	ld a, [Bed]
 	call Function27037
-	ld de, $0704
+	lb de, 7, 4
 	ld a, [Plant]
 	call Function27037
-	ld de, $0600
+	lb de, 6, 0
 	ld a, [Poster]
 	call Function27037
-	call Function27027
-	ld de, $0000
+	call SetPosterVisibility
+	lb de, 0, 0
 	call Function27092
 	ld a, [Carpet]
 	and a
 	ret z
-	call Function27085
+	call _GetDecorationSprite
 	ld [hl], a
 	push af
-	ld de, $0002
+	lb de, 0, 2
 	call Function27092
 	pop af
 	inc a
@@ -29291,15 +29295,15 @@
 	ret
 ; 27027
 
-Function27027: ; 27027
-	ld b, $1
+SetPosterVisibility: ; 27027
+	ld b, SET_FLAG
 	ld a, [Poster]
 	and a
-	jr nz, .asm_27031
-	ld b, $0
+	jr nz, .ok
+	ld b, RESET_FLAG
 
-.asm_27031
-	ld de, $02cc
+.ok
+	ld de, EVENT_KRISS_ROOM_POSTER
 	jp EventFlagAction
 ; 27037
 
@@ -29309,49 +29313,49 @@
 	pop af
 	and a
 	ret z
-	call Function27085
+	call _GetDecorationSprite
 	ld [hl], a
 	ret
 ; 27043
 
-Function27043: ; 27043
-	ld de, $0741
-	ld hl, VariableSprites
+ToggleDecorationsVisibility: ; 27043
+	ld de, EVENT_KRISS_HOUSE_2F_CONSOLE
+	ld hl, VariableSprites + SPRITE_CONSOLE - SPRITE_VARS
 	ld a, [Console]
-	call Function27074
-	ld de, $0742
-	ld hl, VariableSprites + 1
+	call ToggleDecorationVisibility
+	ld de, EVENT_KRISS_HOUSE_2F_DOLL_1
+	ld hl, VariableSprites + SPRITE_DOLL_1 - SPRITE_VARS
 	ld a, [LeftOrnament]
-	call Function27074
-	ld de, $0743
-	ld hl, VariableSprites + 2
+	call ToggleDecorationVisibility
+	ld de, EVENT_KRISS_HOUSE_2F_DOLL_2
+	ld hl, VariableSprites + SPRITE_DOLL_2 - SPRITE_VARS
 	ld a, [RightOrnament]
-	call Function27074
-	ld de, $0744
-	ld hl, VariableSprites + 3
+	call ToggleDecorationVisibility
+	ld de, EVENT_KRISS_HOUSE_2F_BIG_DOLL
+	ld hl, VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS
 	ld a, [BigDoll]
-	call Function27074
+	call ToggleDecorationVisibility
 	ret
 ; 27074
 
-Function27074: ; 27074
+ToggleDecorationVisibility: ; 27074
 	and a
-	jr z, .asm_27080
-	call Function27085
+	jr z, .hide
+	call _GetDecorationSprite
 	ld [hl], a
-	ld b, $0
+	ld b, RESET_FLAG
 	jp EventFlagAction
 
-.asm_27080
-	ld b, $1
+.hide
+	ld b, SET_FLAG
 	jp EventFlagAction
 ; 27085
 
-Function27085: ; 27085
+_GetDecorationSprite: ; 27085
 	ld c, a
 	push de
 	push hl
-	callba Function26a44
+	callba GetDecorationSprite
 	pop hl
 	pop de
 	ld a, c
@@ -29360,10 +29364,10 @@
 
 Function27092: ; 27092
 	ld a, d
-	add $4
+	add 4
 	ld d, a
 	ld a, e
-	add $4
+	add 4
 	ld e, a
 	call GetBlockLocation
 	ret
@@ -29383,11 +29387,11 @@
 	ld c, a
 	call GetWorldMapLocation
 	cp d
-	ld c, $1
-	jr nz, .asm_270bd
-	ld c, $13
+	ld c, 1
+	jr nz, .ok
+	ld c, 19
 
-.asm_270bd
+.ok
 	callab ChangeHappiness
 	ret
 ; 270c4
@@ -32779,7 +32783,7 @@
 ; 0x29737
 
 UnknownText_0x29737: ; 0x29737
-	; 
+	;
 	text_jump UnknownText_0x1bc701
 	db "@"
 ; 0x2973c
@@ -38000,7 +38004,7 @@
 	ld a, [de]
 	and a
 	jr nz, .asm_44189
-	ld [hl], a 
+	ld [hl], a
 
 ; Disregard the move if its score is not 1	
 .asm_44189
@@ -38661,7 +38665,7 @@
 
 .nomail
 	ld hl, .EmptyMailboxText
-	jp Function1d67
+	jp MenuTextBoxBackup
 ; 0x447b4
 
 .EmptyMailboxText ; 0x447b4
@@ -38788,7 +38792,7 @@
 
 .PutInPack ; 0x44877
 	ld hl, .MessageLostText
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
 	call Function1c07
 	ret c
@@ -38801,7 +38805,7 @@
 	call ReceiveItem
 	jr c, .asm_4489e
 	ld hl, .PackFullText
-	jp Function1d67
+	jp MenuTextBoxBackup
 
 .asm_4489e
 	ld a, [MenuSelection]
@@ -38809,7 +38813,7 @@
 	ld b, a
 	call Function445c0
 	ld hl, .PutAwayText
-	jp Function1d67
+	jp MenuTextBoxBackup
 ; 0x448ac
 
 .PutAwayText ; 0x448ac
@@ -49294,9 +49298,9 @@
 ; 506bc
 
 
-Function506bc: ; 506bc
+DoMovementFunctionc: ; 506bc
 	ld hl, UnknownScript_0x506c8
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, $1
 	ld [wd0ec], a
 	ret
@@ -49373,7 +49377,7 @@
 
 _Squirtbottle: ; 50730
 	ld hl, UnknownScript_0x5073c
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, $1
 	ld [wd0ec], a
 	ret
@@ -49406,7 +49410,7 @@
 	cp MAP_ROUTE_36
 	jr nz, .asm_50774
 
-	callba Functioncf0d
+	callba GetFacingObject
 	jr c, .asm_50774
 
 	ld a, d
@@ -49447,7 +49451,7 @@
 	jr nz, .asm_507a9
 
 	ld hl, UnknownScript_0x507af
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, $1
 	ld [wd0ec], a
 	ret
@@ -49482,7 +49486,7 @@
 	jr nz, .nope
 
 	ld hl, UnlockBasementDoorScript
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, 1
 	ld [wd0ec], a
 	ret
@@ -49506,7 +49510,7 @@
 	ret nc
 
 	ld hl, SacredAshScript
-	call Function31cd
+	call ExitMenuCallScript
 	ld a, $1
 	ld [wd0ec], a
 	ret
@@ -49863,7 +49867,7 @@
 	call DrawHPBar
 	pop hl
 
-; Print HP 
+; Print HP
 	ld bc, $0015 ; move (1,1)
 	add hl, bc
 	ld de, TempMonHP
@@ -57180,12 +57184,12 @@
 Function89346: ; 89346 (22:5346)
 	ld h, b
 	ld l, c
-	jr _continue
+	jr _incave
 
 Function8934a: ; 8934a
 	ld hl, 6
 	add hl, bc
-_continue:
+_incave:
 ; Scans up to 5 characters starting at hl, looking for a nonspace character up to the next terminator.  Sets carry if it does not find a nonspace character.  Returns the location of the following character in hl.
 	push bc
 	ld c, 5
@@ -57214,12 +57218,12 @@
 ; Scans six byte pairs starting at bc to find $ff.  Sets carry if it does not find a $ff.  Returns the location of the byte after the first $ff found in hl.
 	ld h, b
 	ld l, c
-	jr ._continue
+	jr ._incave
 
 	ld hl, 25
 	add hl, bc
 
-._continue
+._incave
 	push de
 	ld e, 6
 .loop
@@ -61213,7 +61217,7 @@
 	cp HO_OH ; is Ho-oh the first Pokémon in the party?
 	jr nz, .done ; if not, we're done
 	call GetSecondaryMapHeaderPointer
-	ld de, $0326
+	ld de, EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
 	ld b, SET_FLAG
 	call EventFlagAction
 .done
@@ -61220,27 +61224,27 @@
 	ret
 ; 0x8adef
 
-Function8adef: ; 8adef
+SpecialOmanyteChamber: ; 8adef
 	call GetSecondaryMapHeaderPointer
-	ld de, $0328
+	ld de, EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
 	ld b, CHECK_FLAG
 	call EventFlagAction
 	ld a, c
 	and a
-	jr nz, .asm_8ae2f
+	jr nz, .nope
 
 	ld a, WATER_STONE
 	ld [CurItem], a
 	ld hl, NumItems
 	call CheckItem
-	jr c, .asm_8ae24
+	jr c, .open
 
 	ld a, [PartyCount]
 	ld b, a
 	inc b
-.asm_8ae10
+.loop
 	dec b
-	jr z, .asm_8ae2f
+	jr z, .nope
 	ld a, b
 	dec a
 	ld [CurPartyMon], a
@@ -61250,19 +61254,19 @@
 	pop bc
 	ld a, [hl]
 	cp WATER_STONE
-	jr nz, .asm_8ae10
+	jr nz, .loop
 
-.asm_8ae24
+.open
 	call GetSecondaryMapHeaderPointer
-	ld de, $0328
+	ld de, EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
 	ld b, SET_FLAG
 	call EventFlagAction
 
-.asm_8ae2f
+.nope
 	ret
 ; 8ae30
 
-Function8ae30: ; 8ae30
+SpecialAerodactylChamber: ; 8ae30
 	push de
 	push bc
 
@@ -61269,12 +61273,12 @@
 	call GetSecondaryMapHeaderPointer
 	ld a, h
 	cp RuinsofAlphAerodactylChamber_SecondMapHeader / $100
-	jr nz, .asm_8ae4a
+	jr nz, .nope
 	ld a, l
 	cp RuinsofAlphAerodactylChamber_SecondMapHeader % $100
-	jr nz, .asm_8ae4a
+	jr nz, .nope
 
-	ld de, $0329
+	ld de, EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
 	ld b, SET_FLAG
 	call EventFlagAction
 
@@ -61281,7 +61285,7 @@
 	scf
 	jr .done
 
-.asm_8ae4a
+.nope
 	and a
 
 .done
@@ -61290,7 +61294,7 @@
 	ret
 ; 8ae4e
 
-Function8ae4e: ; 8ae4e
+SpecialKabutoChamber: ; 8ae4e
 	push hl
 	push de
 
@@ -61302,7 +61306,7 @@
 	cp RuinsofAlphKabutoChamber_SecondMapHeader % $100
 	jr nz, .done
 
-	ld de, $0327
+	ld de, EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
 	ld b, SET_FLAG
 	call EventFlagAction
 
@@ -64579,7 +64583,7 @@
 	ret
 ; 8c7e1
 
-Function8c7e1: ; 8c7e1
+BlindingFlash: ; 8c7e1
 	callba Function8c084
 	ld hl, StatusFlags
 	set 2, [hl]
@@ -71452,7 +71456,7 @@
 	hlcoord 1, 10
 	ld [hl], a
 	hlcoord 1, 4
-	ld a, [wc6d1] 
+	ld a, [wc6d1]
 	ld bc, $28
 	call AddNTimes
 	ld [hl], "▶"
@@ -71472,19 +71476,19 @@
 	inc hl
 	dec b
 	jr nz, .asm_912df
-	ld a, [wc6d2] 
+	ld a, [wc6d2]
 	ld e, a
 	ld d, $0
 	ld hl, wdc7c
 	add hl, de
 	xor a
-	ld [wc6d0], a 
+	ld [wc6d0], a
 .asm_912f8
 	ld a, [hli]
 	push hl
 	push af
 	hlcoord 2, 4
-	ld a, [wc6d0] 
+	ld a, [wc6d0]
 	ld bc, $28
 	call AddNTimes
 	ld d, h
@@ -71493,9 +71497,9 @@
 	ld b, a
 	call Function90380
 	pop hl
-	ld a, [wc6d0] 
+	ld a, [wc6d0]
 	inc a
-	ld [wc6d0], a 
+	ld [wc6d0], a
 	cp $4
 	jr c, .asm_912f8
 	call Function912b7
@@ -71530,11 +71534,11 @@
 
 Function91342: ; 91342 (24:5342)
 	ld hl, wdc7c
-	ld a, [wc6d2] 
+	ld a, [wc6d2]
 	ld e, a
 	ld d, 0
 	add hl, de
-	ld a, [wc6d1] 
+	ld a, [wc6d1]
 	ld e, a
 	ld d, 0
 	add hl, de
@@ -71579,7 +71583,7 @@
 	call PlaceString
 	pop de
 	xor a
-	ld [wc6d4], a 
+	ld [wc6d4], a
 	call Function9141d
 	call WaitBGMap
 
@@ -71612,11 +71616,11 @@
 .asm_913c1
 	ld hl, 2
 	add hl, de
-	ld a, [wc6d4] 
+	ld a, [wc6d4]
 	inc a
 	cp [hl]
 	jr nc, .asm_91398
-	ld [wc6d4], a 
+	ld [wc6d4], a
 	call Function9141d
 	jr .asm_91398
 
@@ -71631,7 +71635,7 @@
 	and B_BUTTON
 	jr nz, Function913f1
 
-	ld a, [wc6d4] 
+	ld a, [wc6d4]
 	ld e, a
 	ld d, 0
 	add_n_times hl, de, 2
@@ -71649,7 +71653,7 @@
 
 Function913f9: ; 913f9
 	ld hl, UnknownText_0x914d8
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
 	call Function1c07
 	jr c, .asm_91419
@@ -71899,7 +71903,7 @@
 	push de
 	jp [hl]
 .asm_9168e
-	ld a, [wc6d9] 
+	ld a, [wc6d9]
 	and a
 	ret z
 	xor a
@@ -71912,9 +71916,9 @@
 ; 916a1 (24:56a1)
 
 Function916a1: ; 916a1
-	ld [wc6d9], a 
+	ld [wc6d9], a
 	ld a, [hli]
-	ld [wc6da], a 
+	ld [wc6da], a
 	ld a, [hli]
 	ld [wc6db], a
 	ret
@@ -72041,8 +72045,8 @@
 
 Function91753: ; 91753 (24:5753)
 	xor a ; OAKS_POKEMON_TALK
-	ld [wd002], a 
-	ld [wd005], a 
+	ld [wd002], a
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72051,9 +72055,9 @@
 
 Function91766: ; 91766 (24:5766)
 	ld a, POKEDEX_SHOW
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72062,9 +72066,9 @@
 
 Function9177b: ; 9177b (24:577b)
 	ld a, POKEMON_MUSIC
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72073,9 +72077,9 @@
 
 Function91790: ; 91790 (24:5790)
 	ld a, LUCKY_CHANNEL
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72084,9 +72088,9 @@
 
 Function917a5: ; 917a5 (24:57a5)
 	ld a, BUENAS_PASSWORD
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72103,9 +72107,9 @@
 
 Function917d5: ; 917d5 (24:57d5)
 	ld a, UNOWN_RADIO
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72114,9 +72118,9 @@
 
 Function917ea: ; 917ea (24:57ea)
 	ld a, PLACES_AND_PEOPLE
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72125,9 +72129,9 @@
 
 Function917ff: ; 917ff (24:57ff)
 	ld a, LETS_ALL_SING
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72137,9 +72141,9 @@
 
 Function91814: ; 91814
 	ld a, ROCKET_RADIO
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72149,9 +72153,9 @@
 
 Function91829: ; 91829 (24:5829)
 	ld a, POKE_FLUTE_RADIO
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72160,9 +72164,9 @@
 
 Function9183e: ; 9183e (24:583e)
 	ld a, EVOLUTION_RADIO
-	ld [wd002], a 
+	ld [wd002], a
 	xor a
-	ld [wd005], a 
+	ld [wd005], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Function9187c
@@ -72176,7 +72180,7 @@
 Function91854: ; 91854 (24:5854)
 	push de
 	ld a, e
-	ld [wc6dc], a 
+	ld [wc6dc], a
 	ld de, MUSIC_NONE
 	call PlayMusic
 	pop de
@@ -72188,7 +72192,7 @@
 Function91868: ; 91868 (24:5868)
 	push de
 	ld a, $fe
-	ld [wc6dc], a 
+	ld [wc6dc], a
 	ld de, MUSIC_NONE
 	call PlayMusic
 	pop de
@@ -72197,9 +72201,9 @@
 	ret
 
 Function9187c: ; 9187c (24:587c)
-	ld [wc6d9], a 
+	ld [wc6d9], a
 	ld a, l
-	ld [wc6da], a 
+	ld [wc6da], a
 	ld a, h
 	ld [wc6db], a
 	ret
@@ -72208,8 +72212,8 @@
 	call NoRadioMusic
 	call NoRadioName
 	xor a
-	ld [wc6d9], a 
-	ld [wc6da], a 
+	ld [wc6d9], a
+	ld [wc6da], a
 	ld [wc6db], a
 	ld a, $1
 	ld [hBGMapMode], a ; $ff00+$d4
@@ -72219,7 +72223,7 @@
 	ld de, MUSIC_NONE
 	call PlayMusic
 	ld a, $ff
-	ld [wc6dc], a 
+	ld [wc6dc], a
 	ret
 
 NoRadioName: ; 918a9 (24:58a9)
@@ -72412,19 +72416,19 @@
 	ret
 ; 91a53
 
-Function91a53: ; 91a53
+PlayRadio: ; 91a53
 	ld hl, Options
 	ld a, [hl]
 	push af
 	set 4, [hl]
-	call Function91a87
+	call .PlayStation
 	ld c, 100
 	call DelayFrames
-.asm_91a62
+.loop
 	call Functiona57
 	ld a, [hJoyPressed]
 	and A_BUTTON | B_BUTTON
-	jr nz, .asm_91a7f
+	jr nz, .stop
 	ld a, [wc6da]
 	ld l, a
 	ld a, [wc6db]
@@ -72431,14 +72435,14 @@
 	ld h, a
 	ld a, [wc6d9]
 	and a
-	jr z, .asm_91a7a
+	jr z, .zero
 	rst FarCall
 
-.asm_91a7a
+.zero
 	call DelayFrame
-	jr .asm_91a62
+	jr .loop
 
-.asm_91a7f
+.stop
 	pop af
 	ld [Options], a
 	call Function91492
@@ -72445,10 +72449,10 @@
 	ret
 ; 91a87
 
-Function91a87: ; 91a87
-	ld a, $ff
+.PlayStation: ; 91a87
+	ld a, -1
 	ld [EnemyTurnsTaken], a
-	ld hl, Jumptable_91ab9
+	ld hl, .StationPointers
 	ld d, $0
 	add_n_times hl, de, 2
 	ld a, [hli]
@@ -72475,7 +72479,7 @@
 	ret
 ; 91ab9
 
-Jumptable_91ab9: ; 91ab9
+.StationPointers: ; 91ab9
 	dw Function91acb
 	dw Function91753
 	dw Function91766
@@ -72490,7 +72494,7 @@
 Function91acb: ; 91acb
 	call IsInJohto
 	and a
-	jr nz, .asm_91ade
+	jr nz, .kanto
 	call UpdateTime
 	ld a, [TimeOfDay]
 	and a
@@ -72497,7 +72501,7 @@
 	jp z, Function91766
 	jp Function91753
 
-.asm_91ade
+.kanto
 	jp Function917ea
 ; 91ae1
 
@@ -72504,12 +72508,12 @@
 Function91ae1: ; 91ae1
 	ld a, e
 	and a
-	jr nz, .asm_91aec
+	jr nz, .kanto
 	call Function91ff2
 	call FillJohtoMap
 	ret
 
-.asm_91aec
+.kanto
 	call Function91ff2
 	call FillKantoMap
 	ret
@@ -72516,7 +72520,7 @@
 ; 91af3
 
 
-Function91af3: ; 91af3
+_FlyMap: ; 91af3
 	call WhiteBGMap
 	call ClearTileMap
 	call ClearSprites
@@ -72537,26 +72541,26 @@
 	ld b, $2
 	call GetSGBLayout
 	call Function32f9
-.asm_91b29
+.loop
 	call Functiona57
 	ld hl, hJoyPressed
 	ld a, [hl]
-	and $2
-	jr nz, .asm_91b4a
+	and B_BUTTON
+	jr nz, .pressedB
 	ld a, [hl]
-	and $1
-	jr nz, .asm_91b4e
+	and A_BUTTON
+	jr nz, .pressedA
 	call Function91b73
 	call Function91c17
 	callba Function8cf69
 	call DelayFrame
-	jr .asm_91b29
+	jr .loop
 
-.asm_91b4a
-	ld a, $ff
-	jr .asm_91b5a
+.pressedB
+	ld a, -1
+	jr .exit
 
-.asm_91b4e
+.pressedA
 	ld a, [DefaultFlypoint]
 	ld l, a
 	ld h, 0
@@ -72565,7 +72569,7 @@
 	add hl, de
 	ld a, [hl]
 
-.asm_91b5a
+.exit
 	ld [DefaultFlypoint], a
 	pop af
 	ld [$ffaa], a
@@ -73325,7 +73329,7 @@
 ; 91f7b
 
 TownMapMon: ; 91f7b
-; Draw the FlyMon icon at town map location in 
+; Draw the FlyMon icon at town map location in
 
 ; Get FlyMon species
 	ld a, [CurPartyMon]
@@ -75280,7 +75284,7 @@
 .asm_930fd
 	ld hl, UnknownText_9311f
 	call PrintText
-	call Function1d58
+	call LoadMenuTextBox
 	lb bc, 14, 12
 	call PlaceYesNoBox
 	ld a, [wcfa9]
@@ -76001,7 +76005,7 @@
 	call GetFarHalfword
 	ld d, h
 	ld e, l
-	ld b, $2
+	ld b, CHECK_FLAG
 	call EventFlagAction
 	ld a, c
 	and a
@@ -76533,7 +76537,7 @@
 
 
 PlayRadioShow: ; b8612
-	ld a, [wd002] 
+	ld a, [wd002]
 	cp 8
 	jr nc, .ok
 	ld a, [StatusFlags2]
@@ -76543,9 +76547,9 @@
 	and a
 	jr nz, .ok
 	ld a, 7
-	ld [wd002], a 
+	ld [wd002], a
 .ok
-	ld a, [wd002] 
+	ld a, [wd002]
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_b863a
@@ -78577,7 +78581,7 @@
 ; 0xb91d7
 
 UnknownText_0xb91d7: ; 0xb91d7
-	; 
+	;
 	text_jump UnknownText_0x1bcf99
 	db "@"
 ; 0xb91dc
@@ -86811,7 +86815,7 @@
 	RGB 26, 19, 02
 	RGB 26, 19, 00
 ;' e47cc
- 
+
 GameFreakLogo: ; e47cc
 INCBIN "gfx/splash/logo.1bpp"
 ; e48ac
@@ -91183,7 +91187,7 @@
 	jr z, .zero
 	dec a
 	ld de, MomItems_1
-	jr .continue
+	jr .incave
 
 .zero
 	ld a, [wdc17]
@@ -91194,7 +91198,7 @@
 .ok
 	ld de, MomItems_2
 
-.continue
+.incave
 	ld l, a
 	ld h, 0
 	add_n_times hl, hl, 3 ; multiply hl by 8
--- a/maps/AzaleaGym.asm
+++ b/maps/AzaleaGym.asm
@@ -61,24 +61,8 @@
 	jumpstd radiotowerrockets
 
 TrainerTwinsAmyandmay1:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_AMY_AND_MAY
+	trainer EVENT_BEAT_TWINS_AMY_AND_MAY, TWINS, AMYANDMAY1, TwinsAmyandmay1SeenText, TwinsAmyandmay1BeatenText, $0000, TwinsAmyandmay1Script
 
-	; trainer group && trainer id
-	db TWINS, AMYANDMAY1
-
-	; text when seen
-	dw TwinsAmyandmay1SeenText
-
-	; text when trainer beaten
-	dw TwinsAmyandmay1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsAmyandmay1Script
-
 TwinsAmyandmay1Script:
 	talkaftercancel
 	loadfont
@@ -88,24 +72,8 @@
 	end
 
 TrainerTwinsAmyandmay2:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_AMY_AND_MAY
+	trainer EVENT_BEAT_TWINS_AMY_AND_MAY, TWINS, AMYANDMAY2, TwinsAmyandmay2SeenText, TwinsAmyandmay2BeatenText, $0000, TwinsAmyandmay2Script
 
-	; trainer group && trainer id
-	db TWINS, AMYANDMAY2
-
-	; text when seen
-	dw TwinsAmyandmay2SeenText
-
-	; text when trainer beaten
-	dw TwinsAmyandmay2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsAmyandmay2Script
-
 TwinsAmyandmay2Script:
 	talkaftercancel
 	loadfont
@@ -115,24 +83,8 @@
 	end
 
 TrainerBug_catcherBug_catcher_benny:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_BENNY
+	trainer EVENT_BEAT_BUG_CATCHER_BENNY, BUG_CATCHER, BUG_CATCHER_BENNY, Bug_catcherBug_catcher_bennySeenText, Bug_catcherBug_catcher_bennyBeatenText, $0000, Bug_catcherBug_catcher_bennyScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, BUG_CATCHER_BENNY
-
-	; text when seen
-	dw Bug_catcherBug_catcher_bennySeenText
-
-	; text when trainer beaten
-	dw Bug_catcherBug_catcher_bennyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherBug_catcher_bennyScript
-
 Bug_catcherBug_catcher_bennyScript:
 	talkaftercancel
 	loadfont
@@ -142,24 +94,8 @@
 	end
 
 TrainerBug_catcherAl:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_AL
+	trainer EVENT_BEAT_BUG_CATCHER_AL, BUG_CATCHER, AL, Bug_catcherAlSeenText, Bug_catcherAlBeatenText, $0000, Bug_catcherAlScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, AL
-
-	; text when seen
-	dw Bug_catcherAlSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherAlBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherAlScript
-
 Bug_catcherAlScript:
 	talkaftercancel
 	loadfont
@@ -169,23 +105,7 @@
 	end
 
 TrainerBug_catcherJosh:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_JOSH
-
-	; trainer group && trainer id
-	db BUG_CATCHER, JOSH
-
-	; text when seen
-	dw Bug_catcherJoshSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherJoshBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherJoshScript
+	trainer EVENT_BEAT_BUG_CATCHER_JOSH, BUG_CATCHER, JOSH, Bug_catcherJoshSeenText, Bug_catcherJoshBeatenText, $0000, Bug_catcherJoshScript
 
 Bug_catcherJoshScript:
 	talkaftercancel
--- a/maps/BlackthornGym1F.asm
+++ b/maps/BlackthornGym1F.asm
@@ -87,24 +87,8 @@
 	end
 
 TrainerCooltrainermPaul:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_PAUL
+	trainer EVENT_BEAT_COOLTRAINERM_PAUL, COOLTRAINERM, PAUL, CooltrainermPaulSeenText, CooltrainermPaulBeatenText, $0000, CooltrainermPaulScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, PAUL
-
-	; text when seen
-	dw CooltrainermPaulSeenText
-
-	; text when trainer beaten
-	dw CooltrainermPaulBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermPaulScript
-
 CooltrainermPaulScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +98,8 @@
 	end
 
 TrainerCooltrainermMike:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_MIKE
+	trainer EVENT_BEAT_COOLTRAINERM_MIKE, COOLTRAINERM, MIKE, CooltrainermMikeSeenText, CooltrainermMikeBeatenText, $0000, CooltrainermMikeScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, MIKE
-
-	; text when seen
-	dw CooltrainermMikeSeenText
-
-	; text when trainer beaten
-	dw CooltrainermMikeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermMikeScript
-
 CooltrainermMikeScript:
 	talkaftercancel
 	loadfont
@@ -141,23 +109,7 @@
 	end
 
 TrainerCooltrainerfLola:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_LOLA
-
-	; trainer group && trainer id
-	db COOLTRAINERF, LOLA
-
-	; text when seen
-	dw CooltrainerfLolaSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfLolaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfLolaScript
+	trainer EVENT_BEAT_COOLTRAINERF_LOLA, COOLTRAINERF, LOLA, CooltrainerfLolaSeenText, CooltrainerfLolaBeatenText, $0000, CooltrainerfLolaScript
 
 CooltrainerfLolaScript:
 	talkaftercancel
--- a/maps/BlackthornGym2F.asm
+++ b/maps/BlackthornGym2F.asm
@@ -59,24 +59,8 @@
 	jumpstd strengthboulder
 
 TrainerCooltrainermCody:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_CODY
+	trainer EVENT_BEAT_COOLTRAINERM_CODY, COOLTRAINERM, CODY, CooltrainermCodySeenText, CooltrainermCodyBeatenText, $0000, CooltrainermCodyScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, CODY
-
-	; text when seen
-	dw CooltrainermCodySeenText
-
-	; text when trainer beaten
-	dw CooltrainermCodyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermCodyScript
-
 CooltrainermCodyScript:
 	talkaftercancel
 	loadfont
@@ -86,23 +70,7 @@
 	end
 
 TrainerCooltrainerfFran:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_FRAN
-
-	; trainer group && trainer id
-	db COOLTRAINERF, FRAN
-
-	; text when seen
-	dw CooltrainerfFranSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfFranBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfFranScript
+	trainer EVENT_BEAT_COOLTRAINERF_FRAN, COOLTRAINERF, FRAN, CooltrainerfFranSeenText, CooltrainerfFranBeatenText, $0000, CooltrainerfFranScript
 
 CooltrainerfFranScript:
 	talkaftercancel
--- a/maps/CeladonGym.asm
+++ b/maps/CeladonGym.asm
@@ -42,24 +42,8 @@
 	end
 
 TrainerLassMichelle:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_MICHELLE
+	trainer EVENT_BEAT_LASS_MICHELLE, LASS, MICHELLE, LassMichelleSeenText, LassMichelleBeatenText, $0000, LassMichelleScript
 
-	; trainer group && trainer id
-	db LASS, MICHELLE
-
-	; text when seen
-	dw LassMichelleSeenText
-
-	; text when trainer beaten
-	dw LassMichelleBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassMichelleScript
-
 LassMichelleScript:
 	talkaftercancel
 	loadfont
@@ -69,24 +53,8 @@
 	end
 
 TrainerPicnickerTanya:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_TANYA
+	trainer EVENT_BEAT_PICNICKER_TANYA, PICNICKER, TANYA, PicnickerTanyaSeenText, PicnickerTanyaBeatenText, $0000, PicnickerTanyaScript
 
-	; trainer group && trainer id
-	db PICNICKER, TANYA
-
-	; text when seen
-	dw PicnickerTanyaSeenText
-
-	; text when trainer beaten
-	dw PicnickerTanyaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerTanyaScript
-
 PicnickerTanyaScript:
 	talkaftercancel
 	loadfont
@@ -96,24 +64,8 @@
 	end
 
 TrainerBeautyJulia:
-	; bit/flag number
-	dw EVENT_BEAT_BEAUTY_JULIA
+	trainer EVENT_BEAT_BEAUTY_JULIA, BEAUTY, JULIA, BeautyJuliaSeenText, BeautyJuliaBeatenText, $0000, BeautyJuliaScript
 
-	; trainer group && trainer id
-	db BEAUTY, JULIA
-
-	; text when seen
-	dw BeautyJuliaSeenText
-
-	; text when trainer beaten
-	dw BeautyJuliaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BeautyJuliaScript
-
 BeautyJuliaScript:
 	talkaftercancel
 	loadfont
@@ -123,24 +75,8 @@
 	end
 
 TrainerTwinsJoandzoe1:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_JO_AND_ZOE
+	trainer EVENT_BEAT_TWINS_JO_AND_ZOE, TWINS, JOANDZOE1, TwinsJoandzoe1SeenText, TwinsJoandzoe1BeatenText, $0000, TwinsJoandzoe1Script
 
-	; trainer group && trainer id
-	db TWINS, JOANDZOE1
-
-	; text when seen
-	dw TwinsJoandzoe1SeenText
-
-	; text when trainer beaten
-	dw TwinsJoandzoe1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsJoandzoe1Script
-
 TwinsJoandzoe1Script:
 	talkaftercancel
 	loadfont
@@ -150,23 +86,7 @@
 	end
 
 TrainerTwinsJoandzoe2:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_JO_AND_ZOE
-
-	; trainer group && trainer id
-	db TWINS, JOANDZOE2
-
-	; text when seen
-	dw TwinsJoandzoe2SeenText
-
-	; text when trainer beaten
-	dw TwinsJoandzoe2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsJoandzoe2Script
+	trainer EVENT_BEAT_TWINS_JO_AND_ZOE, TWINS, JOANDZOE2, TwinsJoandzoe2SeenText, TwinsJoandzoe2BeatenText, $0000, TwinsJoandzoe2Script
 
 TwinsJoandzoe2Script:
 	talkaftercancel
--- a/maps/CeruleanGym.asm
+++ b/maps/CeruleanGym.asm
@@ -80,24 +80,8 @@
 	end
 
 TrainerSwimmerfDiana:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_DIANA
+	trainer EVENT_BEAT_SWIMMERF_DIANA, SWIMMERF, DIANA, SwimmerfDianaSeenText, SwimmerfDianaBeatenText, $0000, SwimmerfDianaScript
 
-	; trainer group && trainer id
-	db SWIMMERF, DIANA
-
-	; text when seen
-	dw SwimmerfDianaSeenText
-
-	; text when trainer beaten
-	dw SwimmerfDianaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfDianaScript
-
 SwimmerfDianaScript:
 	talkaftercancel
 	loadfont
@@ -107,24 +91,8 @@
 	end
 
 TrainerSwimmerfBriana:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_BRIANA
+	trainer EVENT_BEAT_SWIMMERF_BRIANA, SWIMMERF, BRIANA, SwimmerfBrianaSeenText, SwimmerfBrianaBeatenText, $0000, SwimmerfBrianaScript
 
-	; trainer group && trainer id
-	db SWIMMERF, BRIANA
-
-	; text when seen
-	dw SwimmerfBrianaSeenText
-
-	; text when trainer beaten
-	dw SwimmerfBrianaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfBrianaScript
-
 SwimmerfBrianaScript:
 	talkaftercancel
 	loadfont
@@ -134,23 +102,7 @@
 	end
 
 TrainerSwimmermParker:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_PARKER
-
-	; trainer group && trainer id
-	db SWIMMERM, PARKER
-
-	; text when seen
-	dw SwimmermParkerSeenText
-
-	; text when trainer beaten
-	dw SwimmermParkerBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermParkerScript
+	trainer EVENT_BEAT_SWIMMERM_PARKER, SWIMMERM, PARKER, SwimmermParkerSeenText, SwimmermParkerBeatenText, $0000, SwimmermParkerScript
 
 SwimmermParkerScript:
 	talkaftercancel
--- a/maps/CianwoodGym.asm
+++ b/maps/CianwoodGym.asm
@@ -76,24 +76,8 @@
 	jumpstd radiotowerrockets
 
 TrainerBlackbeltYoshi:
-	; bit/flag number
-	dw EVENT_BEAT_BLACKBELT_YOSHI
+	trainer EVENT_BEAT_BLACKBELT_YOSHI, BLACKBELT_T, YOSHI, BlackbeltYoshiSeenText, BlackbeltYoshiBeatenText, $0000, BlackbeltYoshiScript
 
-	; trainer group && trainer id
-	db BLACKBELT_T, YOSHI
-
-	; text when seen
-	dw BlackbeltYoshiSeenText
-
-	; text when trainer beaten
-	dw BlackbeltYoshiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BlackbeltYoshiScript
-
 BlackbeltYoshiScript:
 	talkaftercancel
 	loadfont
@@ -103,24 +87,8 @@
 	end
 
 TrainerBlackbeltLao:
-	; bit/flag number
-	dw EVENT_BEAT_BLACKBELT_LAO
+	trainer EVENT_BEAT_BLACKBELT_LAO, BLACKBELT_T, LAO, BlackbeltLaoSeenText, BlackbeltLaoBeatenText, $0000, BlackbeltLaoScript
 
-	; trainer group && trainer id
-	db BLACKBELT_T, LAO
-
-	; text when seen
-	dw BlackbeltLaoSeenText
-
-	; text when trainer beaten
-	dw BlackbeltLaoBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BlackbeltLaoScript
-
 BlackbeltLaoScript:
 	talkaftercancel
 	loadfont
@@ -130,24 +98,8 @@
 	end
 
 TrainerBlackbeltNob:
-	; bit/flag number
-	dw EVENT_BEAT_BLACKBELT_NOB
+	trainer EVENT_BEAT_BLACKBELT_NOB, BLACKBELT_T, NOB, BlackbeltNobSeenText, BlackbeltNobBeatenText, $0000, BlackbeltNobScript
 
-	; trainer group && trainer id
-	db BLACKBELT_T, NOB
-
-	; text when seen
-	dw BlackbeltNobSeenText
-
-	; text when trainer beaten
-	dw BlackbeltNobBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BlackbeltNobScript
-
 BlackbeltNobScript:
 	talkaftercancel
 	loadfont
@@ -157,23 +109,7 @@
 	end
 
 TrainerBlackbeltLung:
-	; bit/flag number
-	dw EVENT_BEAT_BLACKBELT_LUNG
-
-	; trainer group && trainer id
-	db BLACKBELT_T, LUNG
-
-	; text when seen
-	dw BlackbeltLungSeenText
-
-	; text when trainer beaten
-	dw BlackbeltLungBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BlackbeltLungScript
+	trainer EVENT_BEAT_BLACKBELT_LUNG, BLACKBELT_T, LUNG, BlackbeltLungSeenText, BlackbeltLungBeatenText, $0000, BlackbeltLungScript
 
 BlackbeltLungScript:
 	talkaftercancel
--- a/maps/DanceTheatre.asm
+++ b/maps/DanceTheatre.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerKimono_girlNaoko2:
-	; bit/flag number
-	dw EVENT_BEAT_KIMONO_GIRL_NAOKO
+	trainer EVENT_BEAT_KIMONO_GIRL_NAOKO, KIMONO_GIRL, NAOKO2, Kimono_girlNaoko2SeenText, Kimono_girlNaoko2BeatenText, $0000, Kimono_girlNaoko2Script
 
-	; trainer group && trainer id
-	db KIMONO_GIRL, NAOKO2
-
-	; text when seen
-	dw Kimono_girlNaoko2SeenText
-
-	; text when trainer beaten
-	dw Kimono_girlNaoko2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Kimono_girlNaoko2Script
-
 Kimono_girlNaoko2Script:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerKimono_girlSayo:
-	; bit/flag number
-	dw EVENT_BEAT_KIMONO_GIRL_SAYO
+	trainer EVENT_BEAT_KIMONO_GIRL_SAYO, KIMONO_GIRL, SAYO, Kimono_girlSayoSeenText, Kimono_girlSayoBeatenText, $0000, Kimono_girlSayoScript
 
-	; trainer group && trainer id
-	db KIMONO_GIRL, SAYO
-
-	; text when seen
-	dw Kimono_girlSayoSeenText
-
-	; text when trainer beaten
-	dw Kimono_girlSayoBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Kimono_girlSayoScript
-
 Kimono_girlSayoScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerKimono_girlZuki:
-	; bit/flag number
-	dw EVENT_BEAT_KIMONO_GIRL_ZUKI
+	trainer EVENT_BEAT_KIMONO_GIRL_ZUKI, KIMONO_GIRL, ZUKI, Kimono_girlZukiSeenText, Kimono_girlZukiBeatenText, $0000, Kimono_girlZukiScript
 
-	; trainer group && trainer id
-	db KIMONO_GIRL, ZUKI
-
-	; text when seen
-	dw Kimono_girlZukiSeenText
-
-	; text when trainer beaten
-	dw Kimono_girlZukiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Kimono_girlZukiScript
-
 Kimono_girlZukiScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerKimono_girlKuni:
-	; bit/flag number
-	dw EVENT_BEAT_KIMONO_GIRL_KUNI
+	trainer EVENT_BEAT_KIMONO_GIRL_KUNI, KIMONO_GIRL, KUNI, Kimono_girlKuniSeenText, Kimono_girlKuniBeatenText, $0000, Kimono_girlKuniScript
 
-	; trainer group && trainer id
-	db KIMONO_GIRL, KUNI
-
-	; text when seen
-	dw Kimono_girlKuniSeenText
-
-	; text when trainer beaten
-	dw Kimono_girlKuniBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Kimono_girlKuniScript
-
 Kimono_girlKuniScript:
 	talkaftercancel
 	loadfont
@@ -114,23 +50,7 @@
 	end
 
 TrainerKimono_girlMiki:
-	; bit/flag number
-	dw EVENT_BEAT_KIMONO_GIRL_MIKI
-
-	; trainer group && trainer id
-	db KIMONO_GIRL, MIKI
-
-	; text when seen
-	dw Kimono_girlMikiSeenText
-
-	; text when trainer beaten
-	dw Kimono_girlMikiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Kimono_girlMikiScript
+	trainer EVENT_BEAT_KIMONO_GIRL_MIKI, KIMONO_GIRL, MIKI, Kimono_girlMikiSeenText, Kimono_girlMikiBeatenText, $0000, Kimono_girlMikiScript
 
 Kimono_girlMikiScript:
 	talkaftercancel
--- a/maps/DragonsDenB1F.asm
+++ b/maps/DragonsDenB1F.asm
@@ -78,24 +78,8 @@
 	end
 
 TrainerCooltrainermDarin:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_DARIN
+	trainer EVENT_BEAT_COOLTRAINERM_DARIN, COOLTRAINERM, DARIN, CooltrainermDarinSeenText, CooltrainermDarinBeatenText, $0000, CooltrainermDarinScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, DARIN
-
-	; text when seen
-	dw CooltrainermDarinSeenText
-
-	; text when trainer beaten
-	dw CooltrainermDarinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermDarinScript
-
 CooltrainermDarinScript:
 	talkaftercancel
 	loadfont
@@ -105,24 +89,8 @@
 	end
 
 TrainerCooltrainerfCara:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_CARA
+	trainer EVENT_BEAT_COOLTRAINERF_CARA, COOLTRAINERF, CARA, CooltrainerfCaraSeenText, CooltrainerfCaraBeatenText, $0000, CooltrainerfCaraScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, CARA
-
-	; text when seen
-	dw CooltrainerfCaraSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfCaraBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfCaraScript
-
 CooltrainerfCaraScript:
 	talkaftercancel
 	loadfont
@@ -132,24 +100,8 @@
 	end
 
 TrainerTwinsLeaandpia1:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_LEA_AND_PIA
+	trainer EVENT_BEAT_TWINS_LEA_AND_PIA, TWINS, LEAANDPIA1, TwinsLeaandpia1SeenText, TwinsLeaandpia1BeatenText, $0000, TwinsLeaandpia1Script
 
-	; trainer group && trainer id
-	db TWINS, LEAANDPIA1
-
-	; text when seen
-	dw TwinsLeaandpia1SeenText
-
-	; text when trainer beaten
-	dw TwinsLeaandpia1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsLeaandpia1Script
-
 TwinsLeaandpia1Script:
 	talkaftercancel
 	loadfont
@@ -159,23 +111,7 @@
 	end
 
 TrainerTwinsLeaandpia2:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_LEA_AND_PIA
-
-	; trainer group && trainer id
-	db TWINS, LEAANDPIA1
-
-	; text when seen
-	dw TwinsLeaandpia2SeenText
-
-	; text when trainer beaten
-	dw TwinsLeaandpia2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsLeaandpia2Script
+	trainer EVENT_BEAT_TWINS_LEA_AND_PIA, TWINS, LEAANDPIA1, TwinsLeaandpia2SeenText, TwinsLeaandpia2BeatenText, $0000, TwinsLeaandpia2Script
 
 TwinsLeaandpia2Script:
 	talkaftercancel
--- a/maps/EcruteakGym.asm
+++ b/maps/EcruteakGym.asm
@@ -91,24 +91,8 @@
 	end
 
 TrainerSageJeffrey:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_JEFFREY
+	trainer EVENT_BEAT_SAGE_JEFFREY, SAGE, JEFFREY, SageJeffreySeenText, SageJeffreyBeatenText, $0000, SageJeffreyScript
 
-	; trainer group && trainer id
-	db SAGE, JEFFREY
-
-	; text when seen
-	dw SageJeffreySeenText
-
-	; text when trainer beaten
-	dw SageJeffreyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageJeffreyScript
-
 SageJeffreyScript:
 	talkaftercancel
 	loadfont
@@ -118,24 +102,8 @@
 	end
 
 TrainerSagePing:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_PING
+	trainer EVENT_BEAT_SAGE_PING, SAGE, PING, SagePingSeenText, SagePingBeatenText, $0000, SagePingScript
 
-	; trainer group && trainer id
-	db SAGE, PING
-
-	; text when seen
-	dw SagePingSeenText
-
-	; text when trainer beaten
-	dw SagePingBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SagePingScript
-
 SagePingScript:
 	talkaftercancel
 	loadfont
@@ -145,24 +113,8 @@
 	end
 
 TrainerMediumMartha:
-	; bit/flag number
-	dw EVENT_BEAT_MEDIUM_MARTHA
+	trainer EVENT_BEAT_MEDIUM_MARTHA, MEDIUM, MARTHA, MediumMarthaSeenText, MediumMarthaBeatenText, $0000, MediumMarthaScript
 
-	; trainer group && trainer id
-	db MEDIUM, MARTHA
-
-	; text when seen
-	dw MediumMarthaSeenText
-
-	; text when trainer beaten
-	dw MediumMarthaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw MediumMarthaScript
-
 MediumMarthaScript:
 	talkaftercancel
 	loadfont
@@ -172,23 +124,7 @@
 	end
 
 TrainerMediumGrace:
-	; bit/flag number
-	dw EVENT_BEAT_MEDIUM_GRACE
-
-	; trainer group && trainer id
-	db MEDIUM, GRACE
-
-	; text when seen
-	dw MediumGraceSeenText
-
-	; text when trainer beaten
-	dw MediumGraceBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw MediumGraceScript
+	trainer EVENT_BEAT_MEDIUM_GRACE, MEDIUM, GRACE, MediumGraceSeenText, MediumGraceBeatenText, $0000, MediumGraceScript
 
 MediumGraceScript:
 	talkaftercancel
--- a/maps/ElmsLab.asm
+++ b/maps/ElmsLab.asm
@@ -252,7 +252,7 @@
 	writetext ElmDirectionsText1
 	closetext
 	loadmovesprites
-	addcellnum $4
+	addcellnum PHONE_ELM
 	loadfont
 	writetext GotElmsNumberText
 	playsound SFX_REGISTER_PHONE_NUMBER
--- a/maps/FastShipB1F.asm
+++ b/maps/FastShipB1F.asm
@@ -82,24 +82,8 @@
 	end
 
 TrainerSailorJeff:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_JEFF
+	trainer EVENT_BEAT_SAILOR_JEFF, SAILOR, JEFF, SailorJeffSeenText, SailorJeffBeatenText, $0000, SailorJeffScript
 
-	; trainer group && trainer id
-	db SAILOR, JEFF
-
-	; text when seen
-	dw SailorJeffSeenText
-
-	; text when trainer beaten
-	dw SailorJeffBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorJeffScript
-
 SailorJeffScript:
 	talkaftercancel
 	loadfont
@@ -109,24 +93,8 @@
 	end
 
 TrainerPicnickerDebra:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_DEBRA
+	trainer EVENT_BEAT_PICNICKER_DEBRA, PICNICKER, DEBRA, PicnickerDebraSeenText, PicnickerDebraBeatenText, $0000, PicnickerDebraScript
 
-	; trainer group && trainer id
-	db PICNICKER, DEBRA
-
-	; text when seen
-	dw PicnickerDebraSeenText
-
-	; text when trainer beaten
-	dw PicnickerDebraBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerDebraScript
-
 PicnickerDebraScript:
 	talkaftercancel
 	loadfont
@@ -136,24 +104,8 @@
 	end
 
 TrainerJugglerFritz:
-	; bit/flag number
-	dw EVENT_BEAT_JUGGLER_FRITZ
+	trainer EVENT_BEAT_JUGGLER_FRITZ, JUGGLER, FRITZ, JugglerFritzSeenText, JugglerFritzBeatenText, $0000, JugglerFritzScript
 
-	; trainer group && trainer id
-	db JUGGLER, FRITZ
-
-	; text when seen
-	dw JugglerFritzSeenText
-
-	; text when trainer beaten
-	dw JugglerFritzBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw JugglerFritzScript
-
 JugglerFritzScript:
 	talkaftercancel
 	loadfont
@@ -163,24 +115,8 @@
 	end
 
 TrainerSailorGarrett:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_GARRETT
+	trainer EVENT_BEAT_SAILOR_GARRETT, SAILOR, GARRETT, SailorGarrettSeenText, SailorGarrettBeatenText, $0000, SailorGarrettScript
 
-	; trainer group && trainer id
-	db SAILOR, GARRETT
-
-	; text when seen
-	dw SailorGarrettSeenText
-
-	; text when trainer beaten
-	dw SailorGarrettBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorGarrettScript
-
 SailorGarrettScript:
 	talkaftercancel
 	loadfont
@@ -190,24 +126,8 @@
 	end
 
 TrainerFisherJonah:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_JONAH
+	trainer EVENT_BEAT_FISHER_JONAH, FISHER, JONAH, FisherJonahSeenText, FisherJonahBeatenText, $0000, FisherJonahScript
 
-	; trainer group && trainer id
-	db FISHER, JONAH
-
-	; text when seen
-	dw FisherJonahSeenText
-
-	; text when trainer beaten
-	dw FisherJonahBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherJonahScript
-
 FisherJonahScript:
 	talkaftercancel
 	loadfont
@@ -217,24 +137,8 @@
 	end
 
 TrainerBlackbeltWai:
-	; bit/flag number
-	dw EVENT_BEAT_BLACKBELT_WAI
+	trainer EVENT_BEAT_BLACKBELT_WAI, BLACKBELT_T, WAI, BlackbeltWaiSeenText, BlackbeltWaiBeatenText, $0000, BlackbeltWaiScript
 
-	; trainer group && trainer id
-	db BLACKBELT_T, WAI
-
-	; text when seen
-	dw BlackbeltWaiSeenText
-
-	; text when trainer beaten
-	dw BlackbeltWaiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BlackbeltWaiScript
-
 BlackbeltWaiScript:
 	talkaftercancel
 	loadfont
@@ -244,24 +148,8 @@
 	end
 
 TrainerSailorKenneth:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_KENNETH
+	trainer EVENT_BEAT_SAILOR_KENNETH, SAILOR, KENNETH, SailorKennethSeenText, SailorKennethBeatenText, $0000, SailorKennethScript
 
-	; trainer group && trainer id
-	db SAILOR, KENNETH
-
-	; text when seen
-	dw SailorKennethSeenText
-
-	; text when trainer beaten
-	dw SailorKennethBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorKennethScript
-
 SailorKennethScript:
 	talkaftercancel
 	loadfont
@@ -271,24 +159,8 @@
 	end
 
 TrainerTeacherShirley:
-	; bit/flag number
-	dw EVENT_BEAT_TEACHER_SHIRLEY
+	trainer EVENT_BEAT_TEACHER_SHIRLEY, TEACHER, SHIRLEY, TeacherShirleySeenText, TeacherShirleyBeatenText, $0000, TeacherShirleyScript
 
-	; trainer group && trainer id
-	db TEACHER, SHIRLEY
-
-	; text when seen
-	dw TeacherShirleySeenText
-
-	; text when trainer beaten
-	dw TeacherShirleyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TeacherShirleyScript
-
 TeacherShirleyScript:
 	talkaftercancel
 	loadfont
@@ -298,24 +170,8 @@
 	end
 
 TrainerSchoolboyNate:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_NATE
+	trainer EVENT_BEAT_SCHOOLBOY_NATE, SCHOOLBOY, NATE, SchoolboyNateSeenText, SchoolboyNateBeatenText, $0000, SchoolboyNateScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, NATE
-
-	; text when seen
-	dw SchoolboyNateSeenText
-
-	; text when trainer beaten
-	dw SchoolboyNateBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyNateScript
-
 SchoolboyNateScript:
 	talkaftercancel
 	loadfont
@@ -325,23 +181,7 @@
 	end
 
 TrainerSchoolboyRicky:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_RICKY
-
-	; trainer group && trainer id
-	db SCHOOLBOY, RICKY
-
-	; text when seen
-	dw SchoolboyRickySeenText
-
-	; text when trainer beaten
-	dw SchoolboyRickyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyRickyScript
+	trainer EVENT_BEAT_SCHOOLBOY_RICKY, SCHOOLBOY, RICKY, SchoolboyRickySeenText, SchoolboyRickyBeatenText, $0000, SchoolboyRickyScript
 
 SchoolboyRickyScript:
 	talkaftercancel
--- a/maps/FastShipCabins_NNW_NNE_NE.asm
+++ b/maps/FastShipCabins_NNW_NNE_NE.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerCooltrainermSean:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_SEAN
+	trainer EVENT_BEAT_COOLTRAINERM_SEAN, COOLTRAINERM, SEAN, CooltrainermSeanSeenText, CooltrainermSeanBeatenText, $0000, CooltrainermSeanScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, SEAN
-
-	; text when seen
-	dw CooltrainermSeanSeenText
-
-	; text when trainer beaten
-	dw CooltrainermSeanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermSeanScript
-
 CooltrainermSeanScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerCooltrainerfCarol:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_CAROL
+	trainer EVENT_BEAT_COOLTRAINERF_CAROL, COOLTRAINERF, CAROL, CooltrainerfCarolSeenText, CooltrainerfCarolBeatenText, $0000, CooltrainerfCarolScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, CAROL
-
-	; text when seen
-	dw CooltrainerfCarolSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfCarolBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfCarolScript
-
 CooltrainerfCarolScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerPokemaniacEthan:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_ETHAN
+	trainer EVENT_BEAT_POKEMANIAC_ETHAN, POKEMANIAC, ETHAN, PokemaniacEthanSeenText, PokemaniacEthanBeatenText, $0000, PokemaniacEthanScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, ETHAN
-
-	; text when seen
-	dw PokemaniacEthanSeenText
-
-	; text when trainer beaten
-	dw PokemaniacEthanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacEthanScript
-
 PokemaniacEthanScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerHikerNoland:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_NOLAND
+	trainer EVENT_BEAT_HIKER_NOLAND, HIKER, NOLAND, HikerNolandSeenText, HikerNolandBeatenText, $0000, HikerNolandScript
 
-	; trainer group && trainer id
-	db HIKER, NOLAND
-
-	; text when seen
-	dw HikerNolandSeenText
-
-	; text when trainer beaten
-	dw HikerNolandBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerNolandScript
-
 HikerNolandScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +50,8 @@
 	end
 
 TrainerGentlemanEdward:
-	; bit/flag number
-	dw EVENT_BEAT_GENTLEMAN_EDWARD
+	trainer EVENT_BEAT_GENTLEMAN_EDWARD, GENTLEMAN, EDWARD, GentlemanEdwardSeenText, GentlemanEdwardBeatenText, $0000, GentlemanEdwardScript
 
-	; trainer group && trainer id
-	db GENTLEMAN, EDWARD
-
-	; text when seen
-	dw GentlemanEdwardSeenText
-
-	; text when trainer beaten
-	dw GentlemanEdwardBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GentlemanEdwardScript
-
 GentlemanEdwardScript:
 	talkaftercancel
 	loadfont
@@ -141,23 +61,7 @@
 	end
 
 TrainerBurglarCorey:
-	; bit/flag number
-	dw EVENT_BEAT_BURGLAR_COREY
-
-	; trainer group && trainer id
-	db BURGLAR, COREY
-
-	; text when seen
-	dw BurglarCoreySeenText
-
-	; text when trainer beaten
-	dw BurglarCoreyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BurglarCoreyScript
+	trainer EVENT_BEAT_BURGLAR_COREY, BURGLAR, COREY, BurglarCoreySeenText, BurglarCoreyBeatenText, $0000, BurglarCoreyScript
 
 BurglarCoreyScript:
 	talkaftercancel
--- a/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
+++ b/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
@@ -128,24 +128,8 @@
 	end
 
 TrainerPokefanmColin:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_COLIN
+	trainer EVENT_BEAT_POKEFANM_COLIN, POKEFANM, COLIN, PokefanmColinSeenText, PokefanmColinBeatenText, $0000, PokefanmColinScript
 
-	; trainer group && trainer id
-	db POKEFANM, COLIN
-
-	; text when seen
-	dw PokefanmColinSeenText
-
-	; text when trainer beaten
-	dw PokefanmColinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmColinScript
-
 PokefanmColinScript:
 	talkaftercancel
 	loadfont
@@ -155,25 +139,9 @@
 	end
 
 TrainerTwinsMegandpeg1:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_MEG_AND_PEG
+	trainer EVENT_BEAT_TWINS_MEG_AND_PEG, TWINS, MEGANDPEG1, TwinsMegandpeg1SeenText, TwinsMegandpeg1BeatenText, $0000, TwinsMegandpeg1Script
 
-	; trainer group && trainer id
-	db TWINS, MEGANDPEG1
-
-	; text when seen
-	dw TwinsMegandpeg1SeenText
-
-	; text when trainer beaten
-	dw TwinsMegandpeg1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsMegandpeg1Script
-
-TwinsMegandpeg1Script:
+TwinsMegandpeg1Script:
 	talkaftercancel
 	loadfont
 	writetext UnknownText_0x763c2
@@ -182,24 +150,8 @@
 	end
 
 TrainerTwinsMegandpeg2:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_MEG_AND_PEG
+	trainer EVENT_BEAT_TWINS_MEG_AND_PEG, TWINS, MEGANDPEG2, TwinsMegandpeg2SeenText, TwinsMegandpeg2BeatenText, $0000, TwinsMegandpeg2Script
 
-	; trainer group && trainer id
-	db TWINS, MEGANDPEG2
-
-	; text when seen
-	dw TwinsMegandpeg2SeenText
-
-	; text when trainer beaten
-	dw TwinsMegandpeg2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsMegandpeg2Script
-
 TwinsMegandpeg2Script:
 	talkaftercancel
 	loadfont
@@ -209,24 +161,8 @@
 	end
 
 TrainerPsychicRodney:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_RODNEY
+	trainer EVENT_BEAT_PSYCHIC_RODNEY, PSYCHIC_T, RODNEY, PsychicRodneySeenText, PsychicRodneyBeatenText, $0000, PsychicRodneyScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, RODNEY
-
-	; text when seen
-	dw PsychicRodneySeenText
-
-	; text when trainer beaten
-	dw PsychicRodneyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicRodneyScript
-
 PsychicRodneyScript:
 	talkaftercancel
 	loadfont
@@ -236,24 +172,8 @@
 	end
 
 TrainerPokefanmJeremy:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_JEREMY
+	trainer EVENT_BEAT_POKEFANM_JEREMY, POKEFANM, JEREMY, PokefanmJeremySeenText, PokefanmJeremyBeatenText, $0000, PokefanmJeremyScript
 
-	; trainer group && trainer id
-	db POKEFANM, JEREMY
-
-	; text when seen
-	dw PokefanmJeremySeenText
-
-	; text when trainer beaten
-	dw PokefanmJeremyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmJeremyScript
-
 PokefanmJeremyScript:
 	talkaftercancel
 	loadfont
@@ -263,24 +183,8 @@
 	end
 
 TrainerPokefanfGeorgia:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANF_GEORGIA
+	trainer EVENT_BEAT_POKEFANF_GEORGIA, POKEFANF, GEORGIA, PokefanfGeorgiaSeenText, PokefanfGeorgiaBeatenText, $0000, PokefanfGeorgiaScript
 
-	; trainer group && trainer id
-	db POKEFANF, GEORGIA
-
-	; text when seen
-	dw PokefanfGeorgiaSeenText
-
-	; text when trainer beaten
-	dw PokefanfGeorgiaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanfGeorgiaScript
-
 PokefanfGeorgiaScript:
 	talkaftercancel
 	loadfont
@@ -290,23 +194,7 @@
 	end
 
 TrainerSupernerdShawn:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_SHAWN
-
-	; trainer group && trainer id
-	db SUPER_NERD, SHAWN
-
-	; text when seen
-	dw SupernerdShawnSeenText
-
-	; text when trainer beaten
-	dw SupernerdShawnBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdShawnScript
+	trainer EVENT_BEAT_SUPER_NERD_SHAWN, SUPER_NERD, SHAWN, SupernerdShawnSeenText, SupernerdShawnBeatenText, $0000, SupernerdShawnScript
 
 SupernerdShawnScript:
 	talkaftercancel
--- a/maps/FastShipCabins_SW_SSW_NW.asm
+++ b/maps/FastShipCabins_SW_SSW_NW.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerFirebreatherLyle:
-	; bit/flag number
-	dw EVENT_BEAT_FIREBREATHER_LYLE
+	trainer EVENT_BEAT_FIREBREATHER_LYLE, FIREBREATHER, LYLE, FirebreatherLyleSeenText, FirebreatherLyleBeatenText, $0000, FirebreatherLyleScript
 
-	; trainer group && trainer id
-	db FIREBREATHER, LYLE
-
-	; text when seen
-	dw FirebreatherLyleSeenText
-
-	; text when trainer beaten
-	dw FirebreatherLyleBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FirebreatherLyleScript
-
 FirebreatherLyleScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerBug_catcherKen:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_KEN
+	trainer EVENT_BEAT_BUG_CATCHER_KEN, BUG_CATCHER, KEN, Bug_catcherKenSeenText, Bug_catcherKenBeatenText, $0000, Bug_catcherKenScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, KEN
-
-	; text when seen
-	dw Bug_catcherKenSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherKenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherKenScript
-
 Bug_catcherKenScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerBeautyCassie:
-	; bit/flag number
-	dw EVENT_BEAT_BEAUTY_CASSIE
+	trainer EVENT_BEAT_BEAUTY_CASSIE, BEAUTY, CASSIE, BeautyCassieSeenText, BeautyCassieBeatenText, $0000, BeautyCassieScript
 
-	; trainer group && trainer id
-	db BEAUTY, CASSIE
-
-	; text when seen
-	dw BeautyCassieSeenText
-
-	; text when trainer beaten
-	dw BeautyCassieBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BeautyCassieScript
-
 BeautyCassieScript:
 	talkaftercancel
 	loadfont
@@ -87,23 +39,7 @@
 	end
 
 TrainerGuitaristClyde:
-	; bit/flag number
-	dw EVENT_BEAT_GUITARIST_CLYDE
-
-	; trainer group && trainer id
-	db GUITARIST, CLYDE
-
-	; text when seen
-	dw GuitaristClydeSeenText
-
-	; text when trainer beaten
-	dw GuitaristClydeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GuitaristClydeScript
+	trainer EVENT_BEAT_GUITARIST_CLYDE, GUITARIST, CLYDE, GuitaristClydeSeenText, GuitaristClydeBeatenText, $0000, GuitaristClydeScript
 
 GuitaristClydeScript:
 	talkaftercancel
--- a/maps/GoldenrodBillsHouse.asm
+++ b/maps/GoldenrodBillsHouse.asm
@@ -65,14 +65,14 @@
 BillsSister:
 	faceplayer
 	loadfont
-	checkcellnum $3
+	checkcellnum PHONE_BILL
 	iftrue UnknownScript_0x54c58
 	writetext UnknownText_0x54f9e
-	askforphonenumber $3
+	askforphonenumber PHONE_BILL
 	if_equal $1, UnknownScript_0x54c64
 	if_equal $2, UnknownScript_0x54c5e
 	waitbutton
-	addcellnum $3
+	addcellnum PHONE_BILL
 	writetext UnknownText_0x54fd9
 	playsound SFX_REGISTER_PHONE_NUMBER
 	waitbutton
--- a/maps/GoldenrodGym.asm
+++ b/maps/GoldenrodGym.asm
@@ -87,24 +87,8 @@
 	jumpstd radiotowerrockets
 
 TrainerLassCarrie:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_CARRIE
+	trainer EVENT_BEAT_LASS_CARRIE, LASS, CARRIE, LassCarrieSeenText, LassCarrieBeatenText, $0000, LassCarrieScript
 
-	; trainer group && trainer id
-	db LASS, CARRIE
-
-	; text when seen
-	dw LassCarrieSeenText
-
-	; text when trainer beaten
-	dw LassCarrieBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassCarrieScript
-
 LassCarrieScript:
 	talkaftercancel
 	loadfont
@@ -127,24 +111,8 @@
 	end
 
 TrainerLassBridget:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_BRIDGET
+	trainer EVENT_BEAT_LASS_BRIDGET, LASS, BRIDGET, LassBridgetSeenText, LassBridgetBeatenText, $0000, LassBridgetScript
 
-	; trainer group && trainer id
-	db LASS, BRIDGET
-
-	; text when seen
-	dw LassBridgetSeenText
-
-	; text when trainer beaten
-	dw LassBridgetBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassBridgetScript
-
 LassBridgetScript:
 	talkaftercancel
 	loadfont
@@ -154,24 +122,8 @@
 	end
 
 TrainerBeautyVictoria:
-	; bit/flag number
-	dw EVENT_BEAT_BEAUTY_VICTORIA
+	trainer EVENT_BEAT_BEAUTY_VICTORIA, BEAUTY, VICTORIA, BeautyVictoriaSeenText, BeautyVictoriaBeatenText, $0000, BeautyVictoriaScript
 
-	; trainer group && trainer id
-	db BEAUTY, VICTORIA
-
-	; text when seen
-	dw BeautyVictoriaSeenText
-
-	; text when trainer beaten
-	dw BeautyVictoriaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BeautyVictoriaScript
-
 BeautyVictoriaScript:
 	talkaftercancel
 	loadfont
@@ -181,23 +133,7 @@
 	end
 
 TrainerBeautySamantha:
-	; bit/flag number
-	dw EVENT_BEAT_BEAUTY_SAMANTHA
-
-	; trainer group && trainer id
-	db BEAUTY, SAMANTHA
-
-	; text when seen
-	dw BeautySamanthaSeenText
-
-	; text when trainer beaten
-	dw BeautySamanthaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BeautySamanthaScript
+	trainer EVENT_BEAT_BEAUTY_SAMANTHA, BEAUTY, SAMANTHA, BeautySamanthaSeenText, BeautySamanthaBeatenText, $0000, BeautySamanthaScript
 
 BeautySamanthaScript:
 	talkaftercancel
--- a/maps/IlexForest.asm
+++ b/maps/IlexForest.asm
@@ -376,23 +376,7 @@
 	end
 
 TrainerBug_catcherWayne:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_WAYNE
-
-	; trainer group && trainer id
-	db BUG_CATCHER, WAYNE
-
-	; text when seen
-	dw Bug_catcherWayneSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherWayneBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherWayneScript
+	trainer EVENT_BEAT_BUG_CATCHER_WAYNE, BUG_CATCHER, WAYNE, Bug_catcherWayneSeenText, Bug_catcherWayneBeatenText, $0000, Bug_catcherWayneScript
 
 Bug_catcherWayneScript:
 	talkaftercancel
--- a/maps/KrissHouse2F.asm
+++ b/maps/KrissHouse2F.asm
@@ -15,7 +15,7 @@
 	end
 
 UnknownScript_0x7abb4:
-	special Function27043
+	special ToggleDecorationsVisibility
 	setevent EVENT_007
 	checkevent EVENT_036
 	iftrue UnknownScript_0x7abc4
--- a/maps/LakeofRage.asm
+++ b/maps/LakeofRage.asm
@@ -137,24 +137,8 @@
 	end
 
 TrainerFisherAndre:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_ANDRE
+	trainer EVENT_BEAT_FISHER_ANDRE, FISHER, ANDRE, FisherAndreSeenText, FisherAndreBeatenText, $0000, FisherAndreScript
 
-	; trainer group && trainer id
-	db FISHER, ANDRE
-
-	; text when seen
-	dw FisherAndreSeenText
-
-	; text when trainer beaten
-	dw FisherAndreBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherAndreScript
-
 FisherAndreScript:
 	talkaftercancel
 	loadfont
@@ -164,24 +148,8 @@
 	end
 
 TrainerFisherRaymond:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_RAYMOND
+	trainer EVENT_BEAT_FISHER_RAYMOND, FISHER, RAYMOND, FisherRaymondSeenText, FisherRaymondBeatenText, $0000, FisherRaymondScript
 
-	; trainer group && trainer id
-	db FISHER, RAYMOND
-
-	; text when seen
-	dw FisherRaymondSeenText
-
-	; text when trainer beaten
-	dw FisherRaymondBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherRaymondScript
-
 FisherRaymondScript:
 	talkaftercancel
 	loadfont
@@ -191,24 +159,8 @@
 	end
 
 TrainerCooltrainermAaron:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_AARON
+	trainer EVENT_BEAT_COOLTRAINERM_AARON, COOLTRAINERM, AARON, CooltrainermAaronSeenText, CooltrainermAaronBeatenText, $0000, CooltrainermAaronScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, AARON
-
-	; text when seen
-	dw CooltrainermAaronSeenText
-
-	; text when trainer beaten
-	dw CooltrainermAaronBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermAaronScript
-
 CooltrainermAaronScript:
 	talkaftercancel
 	loadfont
@@ -218,23 +170,7 @@
 	end
 
 TrainerCooltrainerfLois:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_LOIS
-
-	; trainer group && trainer id
-	db COOLTRAINERF, LOIS
-
-	; text when seen
-	dw CooltrainerfLoisSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfLoisBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfLoisScript
+	trainer EVENT_BEAT_COOLTRAINERF_LOIS, COOLTRAINERF, LOIS, CooltrainerfLoisSeenText, CooltrainerfLoisBeatenText, $0000, CooltrainerfLoisScript
 
 CooltrainerfLoisScript:
 	talkaftercancel
--- a/maps/MahoganyGym.asm
+++ b/maps/MahoganyGym.asm
@@ -62,24 +62,8 @@
 	jumpstd radiotowerrockets
 
 TrainerSkierRoxanne:
-	; bit/flag number
-	dw EVENT_BEAT_SKIER_ROXANNE
+	trainer EVENT_BEAT_SKIER_ROXANNE, SKIER, ROXANNE, SkierRoxanneSeenText, SkierRoxanneBeatenText, $0000, SkierRoxanneScript
 
-	; trainer group && trainer id
-	db SKIER, ROXANNE
-
-	; text when seen
-	dw SkierRoxanneSeenText
-
-	; text when trainer beaten
-	dw SkierRoxanneBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SkierRoxanneScript
-
 SkierRoxanneScript:
 	talkaftercancel
 	loadfont
@@ -89,24 +73,8 @@
 	end
 
 TrainerSkierClarissa:
-	; bit/flag number
-	dw EVENT_BEAT_SKIER_CLARISSA
+	trainer EVENT_BEAT_SKIER_CLARISSA, SKIER, CLARISSA, SkierClarissaSeenText, SkierClarissaBeatenText, $0000, SkierClarissaScript
 
-	; trainer group && trainer id
-	db SKIER, CLARISSA
-
-	; text when seen
-	dw SkierClarissaSeenText
-
-	; text when trainer beaten
-	dw SkierClarissaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SkierClarissaScript
-
 SkierClarissaScript:
 	talkaftercancel
 	loadfont
@@ -116,24 +84,8 @@
 	end
 
 TrainerBoarderRonald:
-	; bit/flag number
-	dw EVENT_BEAT_BOARDER_RONALD
+	trainer EVENT_BEAT_BOARDER_RONALD, BOARDER, RONALD, BoarderRonaldSeenText, BoarderRonaldBeatenText, $0000, BoarderRonaldScript
 
-	; trainer group && trainer id
-	db BOARDER, RONALD
-
-	; text when seen
-	dw BoarderRonaldSeenText
-
-	; text when trainer beaten
-	dw BoarderRonaldBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BoarderRonaldScript
-
 BoarderRonaldScript:
 	talkaftercancel
 	loadfont
@@ -143,24 +95,8 @@
 	end
 
 TrainerBoarderBrad:
-	; bit/flag number
-	dw EVENT_BEAT_BOARDER_BRAD
+	trainer EVENT_BEAT_BOARDER_BRAD, BOARDER, BRAD, BoarderBradSeenText, BoarderBradBeatenText, $0000, BoarderBradScript
 
-	; trainer group && trainer id
-	db BOARDER, BRAD
-
-	; text when seen
-	dw BoarderBradSeenText
-
-	; text when trainer beaten
-	dw BoarderBradBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BoarderBradScript
-
 BoarderBradScript:
 	talkaftercancel
 	loadfont
@@ -170,23 +106,7 @@
 	end
 
 TrainerBoarderDouglas:
-	; bit/flag number
-	dw EVENT_BEAT_BOARDER_DOUGLAS
-
-	; trainer group && trainer id
-	db BOARDER, DOUGLAS
-
-	; text when seen
-	dw BoarderDouglasSeenText
-
-	; text when trainer beaten
-	dw BoarderDouglasBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BoarderDouglasScript
+	trainer EVENT_BEAT_BOARDER_DOUGLAS, BOARDER, DOUGLAS, BoarderDouglasSeenText, BoarderDouglasBeatenText, $0000, BoarderDouglasScript
 
 BoarderDouglasScript:
 	talkaftercancel
--- a/maps/MountMortar1FInside.asm
+++ b/maps/MountMortar1FInside.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerPokemaniacMiller:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_MILLER
+	trainer EVENT_BEAT_POKEMANIAC_MILLER, POKEMANIAC, MILLER, PokemaniacMillerSeenText, PokemaniacMillerBeatenText, $0000, PokemaniacMillerScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, MILLER
-
-	; text when seen
-	dw PokemaniacMillerSeenText
-
-	; text when trainer beaten
-	dw PokemaniacMillerBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacMillerScript
-
 PokemaniacMillerScript:
 	talkaftercancel
 	loadfont
@@ -33,23 +17,7 @@
 	end
 
 TrainerSupernerdMarkus:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_MARKUS
-
-	; trainer group && trainer id
-	db SUPER_NERD, MARKUS
-
-	; text when seen
-	dw SupernerdMarkusSeenText
-
-	; text when trainer beaten
-	dw SupernerdMarkusBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdMarkusScript
+	trainer EVENT_BEAT_SUPER_NERD_MARKUS, SUPER_NERD, MARKUS, SupernerdMarkusSeenText, SupernerdMarkusBeatenText, $0000, SupernerdMarkusScript
 
 SupernerdMarkusScript:
 	talkaftercancel
--- a/maps/MountMortar2FInside.asm
+++ b/maps/MountMortar2FInside.asm
@@ -6,23 +6,7 @@
 	db 0
 
 TrainerSupernerdHugh:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_HUGH
-
-	; trainer group && trainer id
-	db SUPER_NERD, HUGH
-
-	; text when seen
-	dw SupernerdHughSeenText
-
-	; text when trainer beaten
-	dw SupernerdHughBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdHughScript
+	trainer EVENT_BEAT_SUPER_NERD_HUGH, SUPER_NERD, HUGH, SupernerdHughSeenText, SupernerdHughBeatenText, $0000, SupernerdHughScript
 
 SupernerdHughScript:
 	talkaftercancel
--- a/maps/NationalPark.asm
+++ b/maps/NationalPark.asm
@@ -56,31 +56,15 @@
 	end
 
 TrainerSchoolboyJack1:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_JACK
+	trainer EVENT_BEAT_SCHOOLBOY_JACK, SCHOOLBOY, JACK1, SchoolboyJack1SeenText, SchoolboyJack1BeatenText, $0000, SchoolboyJack1Script
 
-	; trainer group && trainer id
-	db SCHOOLBOY, JACK1
-
-	; text when seen
-	dw SchoolboyJack1SeenText
-
-	; text when trainer beaten
-	dw SchoolboyJack1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyJack1Script
-
 SchoolboyJack1Script:
-	writecode VAR_CALLERID, $5
+	writecode VAR_CALLERID, PHONE_SCHOOLBOY_JACK
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_JACK
 	iftrue UnknownScript_0x5c088
-	checkcellnum $5
+	checkcellnum PHONE_SCHOOLBOY_JACK
 	iftrue UnknownScript_0x5c108
 	checkevent EVENT_JACK_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x5c071
@@ -93,7 +77,7 @@
 UnknownScript_0x5c071:
 	scall UnknownScript_0x5c100
 UnknownScript_0x5c074:
-	askforphonenumber $5
+	askforphonenumber PHONE_SCHOOLBOY_JACK
 	if_equal $1, UnknownScript_0x5c110
 	if_equal $2, UnknownScript_0x5c10c
 	trainertotext SCHOOLBOY, JACK1, $0
@@ -189,24 +173,8 @@
 	end
 
 TrainerPokefanmWilliam:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_WILLIAM
+	trainer EVENT_BEAT_POKEFANM_WILLIAM, POKEFANM, WILLIAM, PokefanmWilliamSeenText, PokefanmWilliamBeatenText, $0000, PokefanmWilliamScript
 
-	; trainer group && trainer id
-	db POKEFANM, WILLIAM
-
-	; text when seen
-	dw PokefanmWilliamSeenText
-
-	; text when trainer beaten
-	dw PokefanmWilliamBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmWilliamScript
-
 PokefanmWilliamScript:
 	talkaftercancel
 	loadfont
@@ -216,31 +184,15 @@
 	end
 
 TrainerPokefanfBeverly1:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANF_BEVERLY
+	trainer EVENT_BEAT_POKEFANF_BEVERLY, POKEFANF, BEVERLY1, PokefanfBeverly1SeenText, PokefanfBeverly1BeatenText, $0000, PokefanfBeverly1Script
 
-	; trainer group && trainer id
-	db POKEFANF, BEVERLY1
-
-	; text when seen
-	dw PokefanfBeverly1SeenText
-
-	; text when trainer beaten
-	dw PokefanfBeverly1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanfBeverly1Script
-
 PokefanfBeverly1Script:
-	writecode VAR_CALLERID, $6
+	writecode VAR_CALLERID, PHONE_POKEFAN_BEVERLY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_BEVERLY_HAS_NUGGET
 	iftrue UnknownScript_0x5c177
-	checkcellnum $6
+	checkcellnum PHONE_POKEFAN_BEVERLY
 	iftrue UnknownScript_0x5c19b
 	checkpoke MARILL
 	iffalse UnknownScript_0x5c189
@@ -255,7 +207,7 @@
 UnknownScript_0x5c160:
 	scall UnknownScript_0x5c193
 UnknownScript_0x5c163:
-	askforphonenumber $6
+	askforphonenumber PHONE_POKEFAN_BEVERLY
 	if_equal $1, UnknownScript_0x5c1a3
 	if_equal $2, UnknownScript_0x5c19f
 	trainertotext POKEFANF, BEVERLY1, $0
@@ -311,23 +263,7 @@
 	end
 
 TrainerLassKrise:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_KRISE
-
-	; trainer group && trainer id
-	db LASS, KRISE
-
-	; text when seen
-	dw LassKriseSeenText
-
-	; text when trainer beaten
-	dw LassKriseBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassKriseScript
+	trainer EVENT_BEAT_LASS_KRISE, LASS, KRISE, LassKriseSeenText, LassKriseBeatenText, $0000, LassKriseScript
 
 LassKriseScript:
 	talkaftercancel
--- a/maps/OlivineLighthouse2F.asm
+++ b/maps/OlivineLighthouse2F.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerGentlemanAlfred:
-	; bit/flag number
-	dw EVENT_BEAT_GENTLEMAN_ALFRED
+	trainer EVENT_BEAT_GENTLEMAN_ALFRED, GENTLEMAN, ALFRED, GentlemanAlfredSeenText, GentlemanAlfredBeatenText, $0000, GentlemanAlfredScript
 
-	; trainer group && trainer id
-	db GENTLEMAN, ALFRED
-
-	; text when seen
-	dw GentlemanAlfredSeenText
-
-	; text when trainer beaten
-	dw GentlemanAlfredBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GentlemanAlfredScript
-
 GentlemanAlfredScript:
 	talkaftercancel
 	loadfont
@@ -33,31 +17,15 @@
 	end
 
 TrainerSailorHuey1:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_HUEY
+	trainer EVENT_BEAT_SAILOR_HUEY, SAILOR, HUEY1, SailorHuey1SeenText, SailorHuey1BeatenText, $0000, SailorHuey1Script
 
-	; trainer group && trainer id
-	db SAILOR, HUEY1
-
-	; text when seen
-	dw SailorHuey1SeenText
-
-	; text when trainer beaten
-	dw SailorHuey1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorHuey1Script
-
 SailorHuey1Script:
-	writecode VAR_CALLERID, $7
+	writecode VAR_CALLERID, PHONE_SAILOR_HUEY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_HUEY
 	iftrue UnknownScript_0x5afc7
-	checkcellnum $7
+	checkcellnum PHONE_SAILOR_HUEY
 	iftrue UnknownScript_0x5b05f
 	checkevent EVENT_HUEY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x5afb0
@@ -68,7 +36,7 @@
 UnknownScript_0x5afb0:
 	scall UnknownScript_0x5b057
 UnknownScript_0x5afb3:
-	askforphonenumber $7
+	askforphonenumber PHONE_SAILOR_HUEY
 	if_equal $1, UnknownScript_0x5b067
 	if_equal $2, UnknownScript_0x5b063
 	trainertotext SAILOR, HUEY1, $0
--- a/maps/OlivineLighthouse3F.asm
+++ b/maps/OlivineLighthouse3F.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerBird_keeperTheo:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_THEO
+	trainer EVENT_BEAT_BIRD_KEEPER_THEO, BIRD_KEEPER, THEO, Bird_keeperTheoSeenText, Bird_keeperTheoBeatenText, $0000, Bird_keeperTheoScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, THEO
-
-	; text when seen
-	dw Bird_keeperTheoSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperTheoBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperTheoScript
-
 Bird_keeperTheoScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerGentlemanPreston:
-	; bit/flag number
-	dw EVENT_BEAT_GENTLEMAN_PRESTON
+	trainer EVENT_BEAT_GENTLEMAN_PRESTON, GENTLEMAN, PRESTON, GentlemanPrestonSeenText, GentlemanPrestonBeatenText, $0000, GentlemanPrestonScript
 
-	; trainer group && trainer id
-	db GENTLEMAN, PRESTON
-
-	; text when seen
-	dw GentlemanPrestonSeenText
-
-	; text when trainer beaten
-	dw GentlemanPrestonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GentlemanPrestonScript
-
 GentlemanPrestonScript:
 	talkaftercancel
 	loadfont
@@ -60,23 +28,7 @@
 	end
 
 TrainerSailorTerrell:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_TERRELL
-
-	; trainer group && trainer id
-	db SAILOR, TERRELL
-
-	; text when seen
-	dw SailorTerrellSeenText
-
-	; text when trainer beaten
-	dw SailorTerrellBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorTerrellScript
+	trainer EVENT_BEAT_SAILOR_TERRELL, SAILOR, TERRELL, SailorTerrellSeenText, SailorTerrellBeatenText, $0000, SailorTerrellScript
 
 SailorTerrellScript:
 	talkaftercancel
--- a/maps/OlivineLighthouse4F.asm
+++ b/maps/OlivineLighthouse4F.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerLassConnie:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_CONNIE
+	trainer EVENT_BEAT_LASS_CONNIE, LASS, CONNIE1, LassConnie1SeenText, LassConnie1BeatenText, $0000, LassConnie1Script
 
-	; trainer group && trainer id
-	db LASS, CONNIE1
-
-	; text when seen
-	dw LassConnie1SeenText
-
-	; text when trainer beaten
-	dw LassConnie1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassConnie1Script
-
 LassConnie1Script:
 	talkaftercancel
 	loadfont
@@ -33,23 +17,7 @@
 	end
 
 TrainerSailorKent:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_KENT
-
-	; trainer group && trainer id
-	db SAILOR, KENT
-
-	; text when seen
-	dw SailorKentSeenText
-
-	; text when trainer beaten
-	dw SailorKentBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorKentScript
+	trainer EVENT_BEAT_SAILOR_KENT, SAILOR, KENT, SailorKentSeenText, SailorKentBeatenText, $0000, SailorKentScript
 
 SailorKentScript:
 	talkaftercancel
--- a/maps/OlivineLighthouse5F.asm
+++ b/maps/OlivineLighthouse5F.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerBird_keeperDenis:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_DENIS
+	trainer EVENT_BEAT_BIRD_KEEPER_DENIS, BIRD_KEEPER, DENIS, Bird_keeperDenisSeenText, Bird_keeperDenisBeatenText, $0000, Bird_keeperDenisScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, DENIS
-
-	; text when seen
-	dw Bird_keeperDenisSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperDenisBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperDenisScript
-
 Bird_keeperDenisScript:
 	talkaftercancel
 	loadfont
@@ -33,23 +17,7 @@
 	end
 
 TrainerSailorErnest:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_ERNEST
-
-	; trainer group && trainer id
-	db SAILOR, ERNEST
-
-	; text when seen
-	dw SailorErnestSeenText
-
-	; text when trainer beaten
-	dw SailorErnestBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorErnestScript
+	trainer EVENT_BEAT_SAILOR_ERNEST, SAILOR, ERNEST, SailorErnestSeenText, SailorErnestBeatenText, $0000, SailorErnestScript
 
 SailorErnestScript:
 	talkaftercancel
--- a/maps/PewterGym.asm
+++ b/maps/PewterGym.asm
@@ -36,23 +36,7 @@
 	end
 
 TrainerCamperJerry:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_JERRY
-
-	; trainer group && trainer id
-	db CAMPER, JERRY
-
-	; text when seen
-	dw CamperJerrySeenText
-
-	; text when trainer beaten
-	dw CamperJerryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperJerryScript
+	trainer EVENT_BEAT_CAMPER_JERRY, CAMPER, JERRY, CamperJerrySeenText, CamperJerryBeatenText, $0000, CamperJerryScript
 
 CamperJerryScript:
 	talkaftercancel
--- a/maps/RadioTower1F.asm
+++ b/maps/RadioTower1F.asm
@@ -178,23 +178,7 @@
 	jumptextfaceplayer UnknownText_0x5d4ac
 
 TrainerGruntM3:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_3
-
-	; trainer group && trainer id
-	db GRUNTM, 3
-
-	; text when seen
-	dw GruntM3SeenText
-
-	; text when trainer beaten
-	dw GruntM3BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM3Script
+	trainer EVENT_BEAT_ROCKET_GRUNTM_3, GRUNTM, 3, GruntM3SeenText, GruntM3BeatenText, $0000, GruntM3Script
 
 GruntM3Script:
 	talkaftercancel
--- a/maps/RadioTower2F.asm
+++ b/maps/RadioTower2F.asm
@@ -42,24 +42,8 @@
 	jumptextfaceplayer UnknownText_0x5da44
 
 TrainerGruntM4:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_4
+	trainer EVENT_BEAT_ROCKET_GRUNTM_4, GRUNTM, 4, GruntM4SeenText, GruntM4BeatenText, $0000, GruntM4Script
 
-	; trainer group && trainer id
-	db GRUNTM, 4
-
-	; text when seen
-	dw GruntM4SeenText
-
-	; text when trainer beaten
-	dw GruntM4BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM4Script
-
 GruntM4Script:
 	talkaftercancel
 	loadfont
@@ -69,24 +53,8 @@
 	end
 
 TrainerGruntM5:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_5
+	trainer EVENT_BEAT_ROCKET_GRUNTM_5, GRUNTM, 5, GruntM5SeenText, GruntM5BeatenText, $0000, GruntM5Script
 
-	; trainer group && trainer id
-	db GRUNTM, 5
-
-	; text when seen
-	dw GruntM5SeenText
-
-	; text when trainer beaten
-	dw GruntM5BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM5Script
-
 GruntM5Script:
 	talkaftercancel
 	loadfont
@@ -96,24 +64,8 @@
 	end
 
 TrainerGruntM6:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_6
+	trainer EVENT_BEAT_ROCKET_GRUNTM_6, GRUNTM, 6, GruntM6SeenText, GruntM6BeatenText, $0000, GruntM6Script
 
-	; trainer group && trainer id
-	db GRUNTM, 6
-
-	; text when seen
-	dw GruntM6SeenText
-
-	; text when trainer beaten
-	dw GruntM6BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM6Script
-
 GruntM6Script:
 	talkaftercancel
 	loadfont
@@ -123,24 +75,8 @@
 	end
 
 TrainerGruntF2:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTF_2
+	trainer EVENT_BEAT_ROCKET_GRUNTF_2, GRUNTF, 2, GruntF2SeenText, GruntF2BeatenText, $0000, GruntF2Script
 
-	; trainer group && trainer id
-	db GRUNTF, 2
-
-	; text when seen
-	dw GruntF2SeenText
-
-	; text when trainer beaten
-	dw GruntF2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntF2Script
-
 GruntF2Script:
 	talkaftercancel
 	loadfont
@@ -220,7 +156,7 @@
 	writetext UnknownText_0x5de10
 	closetext
 	loadmovesprites
-	checkcellnum $25
+	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d81a
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER
 	iftrue UnknownScript_0x5d8cc
@@ -242,7 +178,7 @@
 	writetext UnknownText_0x5df6c
 	closetext
 	loadmovesprites
-	checkcellnum $25
+	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d83f
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER
 	iftrue UnknownScript_0x5d8cc
@@ -279,7 +215,7 @@
 	writetext UnknownText_0x5e192
 	closetext
 	loadmovesprites
-	checkcellnum $25
+	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d87b
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER_NO_BLUE_CARD
 	iftrue UnknownScript_0x5d8cc
@@ -291,7 +227,7 @@
 	writetext UnknownText_0x5e0f1
 	closetext
 	loadmovesprites
-	checkcellnum $25
+	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d88f
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER_NO_BLUE_CARD
 	iftrue UnknownScript_0x5d8cc
@@ -303,7 +239,7 @@
 	writetext UnknownText_0x5e131
 	closetext
 	loadmovesprites
-	checkcellnum $25
+	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d8a3
 	checkevent EVENT_BUENA_OFFERED_HER_PHONE_NUMBER
 	iftrue UnknownScript_0x5d8cc
@@ -311,7 +247,7 @@
 	end
 
 UnknownScript_0x5d8a4:
-	checkcellnum $25
+	checkcellnum PHONE_BUENA
 	iftrue UnknownScript_0x5d8fe
 	pause 20
 	spriteface $b, DOWN
@@ -331,7 +267,7 @@
 	loadfont
 	writetext UnknownText_0x5e2bf
 UnknownScript_0x5d8d0:
-	askforphonenumber $25
+	askforphonenumber PHONE_BUENA
 	if_equal $1, UnknownScript_0x5d8f6
 	if_equal $2, UnknownScript_0x5d8ed
 	writetext UnknownText_0x5e2f3
@@ -342,7 +278,7 @@
 	closetext
 	loadmovesprites
 	spriteface $b, RIGHT
-	addcellnum $25
+	addcellnum PHONE_BUENA
 	end
 
 UnknownScript_0x5d8ed:
--- a/maps/RadioTower3F.asm
+++ b/maps/RadioTower3F.asm
@@ -77,24 +77,8 @@
 	end
 
 TrainerGruntM7:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_7
+	trainer EVENT_BEAT_ROCKET_GRUNTM_7, GRUNTM, 7, GruntM7SeenText, GruntM7BeatenText, $0000, GruntM7Script
 
-	; trainer group && trainer id
-	db GRUNTM, 7
-
-	; text when seen
-	dw GruntM7SeenText
-
-	; text when trainer beaten
-	dw GruntM7BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM7Script
-
 GruntM7Script:
 	talkaftercancel
 	loadfont
@@ -104,24 +88,8 @@
 	end
 
 TrainerGruntM8:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_8
+	trainer EVENT_BEAT_ROCKET_GRUNTM_8, GRUNTM, 8, GruntM8SeenText, GruntM8BeatenText, $0000, GruntM8Script
 
-	; trainer group && trainer id
-	db GRUNTM, 8
-
-	; text when seen
-	dw GruntM8SeenText
-
-	; text when trainer beaten
-	dw GruntM8BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM8Script
-
 GruntM8Script:
 	talkaftercancel
 	loadfont
@@ -131,24 +99,8 @@
 	end
 
 TrainerGruntM9:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_9
+	trainer EVENT_BEAT_ROCKET_GRUNTM_9, GRUNTM, 9, GruntM9SeenText, GruntM9BeatenText, $0000, GruntM9Script
 
-	; trainer group && trainer id
-	db GRUNTM, 9
-
-	; text when seen
-	dw GruntM9SeenText
-
-	; text when trainer beaten
-	dw GruntM9BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM9Script
-
 GruntM9Script:
 	talkaftercancel
 	loadfont
@@ -158,23 +110,7 @@
 	end
 
 TrainerScientistMarc:
-	; bit/flag number
-	dw EVENT_BEAT_SCIENTIST_MARC
-
-	; trainer group && trainer id
-	db SCIENTIST, MARC
-
-	; text when seen
-	dw ScientistMarcSeenText
-
-	; text when trainer beaten
-	dw ScientistMarcBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw ScientistMarcScript
+	trainer EVENT_BEAT_SCIENTIST_MARC, SCIENTIST, MARC, ScientistMarcSeenText, ScientistMarcBeatenText, $0000, ScientistMarcScript
 
 ScientistMarcScript:
 	talkaftercancel
--- a/maps/RadioTower4F.asm
+++ b/maps/RadioTower4F.asm
@@ -47,24 +47,8 @@
 	end
 
 TrainerGruntM10:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_10
+	trainer EVENT_BEAT_ROCKET_GRUNTM_10, GRUNTM, 10, GruntM10SeenText, GruntM10BeatenText, $0000, GruntM10Script
 
-	; trainer group && trainer id
-	db GRUNTM, 10
-
-	; text when seen
-	dw GruntM10SeenText
-
-	; text when trainer beaten
-	dw GruntM10BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM10Script
-
 GruntM10Script:
 	talkaftercancel
 	loadfont
@@ -74,24 +58,8 @@
 	end
 
 TrainerExecutivem2:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_EXECUTIVEM_2
+	trainer EVENT_BEAT_ROCKET_EXECUTIVEM_2, EXECUTIVEM, 2, Executivem2SeenText, Executivem2BeatenText, $0000, Executivem2Script
 
-	; trainer group && trainer id
-	db EXECUTIVEM, 2
-
-	; text when seen
-	dw Executivem2SeenText
-
-	; text when trainer beaten
-	dw Executivem2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Executivem2Script
-
 Executivem2Script:
 	talkaftercancel
 	loadfont
@@ -101,24 +69,8 @@
 	end
 
 TrainerGruntF4:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTF_4
+	trainer EVENT_BEAT_ROCKET_GRUNTF_4, GRUNTF, 4, GruntF4SeenText, GruntF4BeatenText, $0000, GruntF4Script
 
-	; trainer group && trainer id
-	db GRUNTF, 4
-
-	; text when seen
-	dw GruntF4SeenText
-
-	; text when trainer beaten
-	dw GruntF4BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntF4Script
-
 GruntF4Script:
 	talkaftercancel
 	loadfont
@@ -128,23 +80,7 @@
 	end
 
 TrainerScientistRich:
-	; bit/flag number
-	dw EVENT_BEAT_SCIENTIST_RICH
-
-	; trainer group && trainer id
-	db SCIENTIST, RICH
-
-	; text when seen
-	dw ScientistRichSeenText
-
-	; text when trainer beaten
-	dw ScientistRichBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw ScientistRichScript
+	trainer EVENT_BEAT_SCIENTIST_RICH, SCIENTIST, RICH, ScientistRichSeenText, ScientistRichBeatenText, $0000, ScientistRichScript
 
 ScientistRichScript:
 	talkaftercancel
--- a/maps/RadioTower5F.asm
+++ b/maps/RadioTower5F.asm
@@ -63,23 +63,7 @@
 	end
 
 TrainerExecutivef1:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_EXECUTIVEF_1
-
-	; trainer group && trainer id
-	db EXECUTIVEF, 1
-
-	; text when seen
-	dw Executivef1SeenText
-
-	; text when trainer beaten
-	dw Executivef1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Executivef1Script
+	trainer EVENT_BEAT_ROCKET_EXECUTIVEF_1, EXECUTIVEF, 1, Executivef1SeenText, Executivef1BeatenText, $0000, Executivef1Script
 
 Executivef1Script:
 	talkaftercancel
--- a/maps/Route1.asm
+++ b/maps/Route1.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerSchoolboyDanny:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_DANNY
+	trainer EVENT_BEAT_SCHOOLBOY_DANNY, SCHOOLBOY, DANNY, SchoolboyDannySeenText, SchoolboyDannyBeatenText, $0000, SchoolboyDannyScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, DANNY
-
-	; text when seen
-	dw SchoolboyDannySeenText
-
-	; text when trainer beaten
-	dw SchoolboyDannyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyDannyScript
-
 SchoolboyDannyScript:
 	talkaftercancel
 	loadfont
@@ -33,23 +17,7 @@
 	end
 
 TrainerCooltrainerfQuinn:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_QUINN
-
-	; trainer group && trainer id
-	db COOLTRAINERF, QUINN
-
-	; text when seen
-	dw CooltrainerfQuinnSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfQuinnBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfQuinnScript
+	trainer EVENT_BEAT_COOLTRAINERF_QUINN, COOLTRAINERF, QUINN, CooltrainerfQuinnSeenText, CooltrainerfQuinnBeatenText, $0000, CooltrainerfQuinnScript
 
 CooltrainerfQuinnScript:
 	talkaftercancel
--- a/maps/Route10South.asm
+++ b/maps/Route10South.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerHikerJim:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_JIM
+	trainer EVENT_BEAT_HIKER_JIM, HIKER, JIM, HikerJimSeenText, HikerJimBeatenText, $0000, HikerJimScript
 
-	; trainer group && trainer id
-	db HIKER, JIM
-
-	; text when seen
-	dw HikerJimSeenText
-
-	; text when trainer beaten
-	dw HikerJimBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerJimScript
-
 HikerJimScript:
 	talkaftercancel
 	loadfont
@@ -33,23 +17,7 @@
 	end
 
 TrainerPokefanmRobert:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_ROBERT
-
-	; trainer group && trainer id
-	db POKEFANM, ROBERT
-
-	; text when seen
-	dw PokefanmRobertSeenText
-
-	; text when trainer beaten
-	dw PokefanmRobertBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmRobertScript
+	trainer EVENT_BEAT_POKEFANM_ROBERT, POKEFANM, ROBERT, PokefanmRobertSeenText, PokefanmRobertBeatenText, $0000, PokefanmRobertScript
 
 PokefanmRobertScript:
 	talkaftercancel
--- a/maps/Route11.asm
+++ b/maps/Route11.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerYoungsterOwen:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_OWEN
+	trainer EVENT_BEAT_YOUNGSTER_OWEN, YOUNGSTER, OWEN, YoungsterOwenSeenText, YoungsterOwenBeatenText, $0000, YoungsterOwenScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, OWEN
-
-	; text when seen
-	dw YoungsterOwenSeenText
-
-	; text when trainer beaten
-	dw YoungsterOwenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterOwenScript
-
 YoungsterOwenScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerYoungsterJason:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_JASON
+	trainer EVENT_BEAT_YOUNGSTER_JASON, YOUNGSTER, JASON, YoungsterJasonSeenText, YoungsterJasonBeatenText, $0000, YoungsterJasonScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, JASON
-
-	; text when seen
-	dw YoungsterJasonSeenText
-
-	; text when trainer beaten
-	dw YoungsterJasonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterJasonScript
-
 YoungsterJasonScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerPsychicHerman:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_HERMAN
+	trainer EVENT_BEAT_PSYCHIC_HERMAN, PSYCHIC_T, HERMAN, PsychicHermanSeenText, PsychicHermanBeatenText, $0000, PsychicHermanScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, HERMAN
-
-	; text when seen
-	dw PsychicHermanSeenText
-
-	; text when trainer beaten
-	dw PsychicHermanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicHermanScript
-
 PsychicHermanScript:
 	talkaftercancel
 	loadfont
@@ -87,23 +39,7 @@
 	end
 
 TrainerPsychicFidel:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_FIDEL
-
-	; trainer group && trainer id
-	db PSYCHIC_T, FIDEL
-
-	; text when seen
-	dw PsychicFidelSeenText
-
-	; text when trainer beaten
-	dw PsychicFidelBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicFidelScript
+	trainer EVENT_BEAT_PSYCHIC_FIDEL, PSYCHIC_T, FIDEL, PsychicFidelSeenText, PsychicFidelBeatenText, $0000, PsychicFidelScript
 
 PsychicFidelScript:
 	talkaftercancel
--- a/maps/Route12.asm
+++ b/maps/Route12.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerFisherKyle:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_KYLE
+	trainer EVENT_BEAT_FISHER_KYLE, FISHER, KYLE, FisherKyleSeenText, FisherKyleBeatenText, $0000, FisherKyleScript
 
-	; trainer group && trainer id
-	db FISHER, KYLE
-
-	; text when seen
-	dw FisherKyleSeenText
-
-	; text when trainer beaten
-	dw FisherKyleBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherKyleScript
-
 FisherKyleScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerFisherMartin:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_MARTIN
+	trainer EVENT_BEAT_FISHER_MARTIN, FISHER, MARTIN, FisherMartinSeenText, FisherMartinBeatenText, $0000, FisherMartinScript
 
-	; trainer group && trainer id
-	db FISHER, MARTIN
-
-	; text when seen
-	dw FisherMartinSeenText
-
-	; text when trainer beaten
-	dw FisherMartinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherMartinScript
-
 FisherMartinScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerFisherStephen:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_STEPHEN
+	trainer EVENT_BEAT_FISHER_STEPHEN, FISHER, STEPHEN, FisherStephenSeenText, FisherStephenBeatenText, $0000, FisherStephenScript
 
-	; trainer group && trainer id
-	db FISHER, STEPHEN
-
-	; text when seen
-	dw FisherStephenSeenText
-
-	; text when trainer beaten
-	dw FisherStephenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherStephenScript
-
 FisherStephenScript:
 	talkaftercancel
 	loadfont
@@ -87,23 +39,7 @@
 	end
 
 TrainerFisherBarney:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_BARNEY
-
-	; trainer group && trainer id
-	db FISHER, BARNEY
-
-	; text when seen
-	dw FisherBarneySeenText
-
-	; text when trainer beaten
-	dw FisherBarneyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherBarneyScript
+	trainer EVENT_BEAT_FISHER_BARNEY, FISHER, BARNEY, FisherBarneySeenText, FisherBarneyBeatenText, $0000, FisherBarneyScript
 
 FisherBarneyScript:
 	talkaftercancel
--- a/maps/Route13.asm
+++ b/maps/Route13.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerPokefanmAlex:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_ALEX
+	trainer EVENT_BEAT_POKEFANM_ALEX, POKEFANM, ALEX, PokefanmAlexSeenText, PokefanmAlexBeatenText, $0000, PokefanmAlexScript
 
-	; trainer group && trainer id
-	db POKEFANM, ALEX
-
-	; text when seen
-	dw PokefanmAlexSeenText
-
-	; text when trainer beaten
-	dw PokefanmAlexBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmAlexScript
-
 PokefanmAlexScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerPokefanmJoshua:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_JOSHUA
+	trainer EVENT_BEAT_POKEFANM_JOSHUA, POKEFANM, JOSHUA, PokefanmJoshuaSeenText, PokefanmJoshuaBeatenText, $0000, PokefanmJoshuaScript
 
-	; trainer group && trainer id
-	db POKEFANM, JOSHUA
-
-	; text when seen
-	dw PokefanmJoshuaSeenText
-
-	; text when trainer beaten
-	dw PokefanmJoshuaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmJoshuaScript
-
 PokefanmJoshuaScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerBird_keeperPerry:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_PERRY
+	trainer EVENT_BEAT_BIRD_KEEPER_PERRY, BIRD_KEEPER, PERRY, Bird_keeperPerrySeenText, Bird_keeperPerryBeatenText, $0000, Bird_keeperPerryScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, PERRY
-
-	; text when seen
-	dw Bird_keeperPerrySeenText
-
-	; text when trainer beaten
-	dw Bird_keeperPerryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperPerryScript
-
 Bird_keeperPerryScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerBird_keeperBret:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_BRET
+	trainer EVENT_BEAT_BIRD_KEEPER_BRET, BIRD_KEEPER, BRET, Bird_keeperBretSeenText, Bird_keeperBretBeatenText, $0000, Bird_keeperBretScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, BRET
-
-	; text when seen
-	dw Bird_keeperBretSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperBretBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperBretScript
-
 Bird_keeperBretScript:
 	talkaftercancel
 	loadfont
@@ -114,23 +50,7 @@
 	end
 
 TrainerHikerKenny:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_KENNY
-
-	; trainer group && trainer id
-	db HIKER, KENNY
-
-	; text when seen
-	dw HikerKennySeenText
-
-	; text when trainer beaten
-	dw HikerKennyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerKennyScript
+	trainer EVENT_BEAT_HIKER_KENNY, HIKER, KENNY, HikerKennySeenText, HikerKennyBeatenText, $0000, HikerKennyScript
 
 HikerKennyScript:
 	talkaftercancel
--- a/maps/Route14.asm
+++ b/maps/Route14.asm
@@ -14,24 +14,8 @@
 	end
 
 TrainerPokefanmCarter:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_CARTER
+	trainer EVENT_BEAT_POKEFANM_CARTER, POKEFANM, CARTER, PokefanmCarterSeenText, PokefanmCarterBeatenText, $0000, PokefanmCarterScript
 
-	; trainer group && trainer id
-	db POKEFANM, CARTER
-
-	; text when seen
-	dw PokefanmCarterSeenText
-
-	; text when trainer beaten
-	dw PokefanmCarterBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmCarterScript
-
 PokefanmCarterScript:
 	talkaftercancel
 	loadfont
@@ -41,24 +25,8 @@
 	end
 
 TrainerBird_keeperRoy:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_ROY
+	trainer EVENT_BEAT_BIRD_KEEPER_ROY, BIRD_KEEPER, ROY, Bird_keeperRoySeenText, Bird_keeperRoyBeatenText, $0000, Bird_keeperRoyScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, ROY
-
-	; text when seen
-	dw Bird_keeperRoySeenText
-
-	; text when trainer beaten
-	dw Bird_keeperRoyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperRoyScript
-
 Bird_keeperRoyScript:
 	talkaftercancel
 	loadfont
@@ -68,23 +36,7 @@
 	end
 
 TrainerPokefanmTrevor:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_TREVOR
-
-	; trainer group && trainer id
-	db POKEFANM, TREVOR
-
-	; text when seen
-	dw PokefanmTrevorSeenText
-
-	; text when trainer beaten
-	dw PokefanmTrevorBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmTrevorScript
+	trainer EVENT_BEAT_POKEFANM_TREVOR, POKEFANM, TREVOR, PokefanmTrevorSeenText, PokefanmTrevorBeatenText, $0000, PokefanmTrevorScript
 
 PokefanmTrevorScript:
 	talkaftercancel
--- a/maps/Route15.asm
+++ b/maps/Route15.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerTeacherColette:
-	; bit/flag number
-	dw EVENT_BEAT_TEACHER_COLETTE
+	trainer EVENT_BEAT_TEACHER_COLETTE, TEACHER, COLETTE, TeacherColetteSeenText, TeacherColetteBeatenText, $0000, TeacherColetteScript
 
-	; trainer group && trainer id
-	db TEACHER, COLETTE
-
-	; text when seen
-	dw TeacherColetteSeenText
-
-	; text when trainer beaten
-	dw TeacherColetteBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TeacherColetteScript
-
 TeacherColetteScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerTeacherHillary:
-	; bit/flag number
-	dw EVENT_BEAT_TEACHER_HILLARY
+	trainer EVENT_BEAT_TEACHER_HILLARY, TEACHER, HILLARY, TeacherHillarySeenText, TeacherHillaryBeatenText, $0000, TeacherHillaryScript
 
-	; trainer group && trainer id
-	db TEACHER, HILLARY
-
-	; text when seen
-	dw TeacherHillarySeenText
-
-	; text when trainer beaten
-	dw TeacherHillaryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TeacherHillaryScript
-
 TeacherHillaryScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerSchoolboyKipp:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_KIP
+	trainer EVENT_BEAT_SCHOOLBOY_KIP, SCHOOLBOY, KIPP, SchoolboyKippSeenText, SchoolboyKippBeatenText, $0000, SchoolboyKippScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, KIPP
-
-	; text when seen
-	dw SchoolboyKippSeenText
-
-	; text when trainer beaten
-	dw SchoolboyKippBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyKippScript
-
 SchoolboyKippScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerSchoolboyTommy:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_TOMMY
+	trainer EVENT_BEAT_SCHOOLBOY_TOMMY, SCHOOLBOY, TOMMY, SchoolboyTommySeenText, SchoolboyTommyBeatenText, $0000, SchoolboyTommyScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, TOMMY
-
-	; text when seen
-	dw SchoolboyTommySeenText
-
-	; text when trainer beaten
-	dw SchoolboyTommyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyTommyScript
-
 SchoolboyTommyScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +50,8 @@
 	end
 
 TrainerSchoolboyJohnny:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_JOHNNY
+	trainer EVENT_BEAT_SCHOOLBOY_JOHNNY, SCHOOLBOY, JOHNNY, SchoolboyJohnnySeenText, SchoolboyJohnnyBeatenText, $0000, SchoolboyJohnnyScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, JOHNNY
-
-	; text when seen
-	dw SchoolboyJohnnySeenText
-
-	; text when trainer beaten
-	dw SchoolboyJohnnyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyJohnnyScript
-
 SchoolboyJohnnyScript:
 	talkaftercancel
 	loadfont
@@ -141,23 +61,7 @@
 	end
 
 TrainerSchoolboyBilly:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_BILLY
-
-	; trainer group && trainer id
-	db SCHOOLBOY, BILLY
-
-	; text when seen
-	dw SchoolboyBillySeenText
-
-	; text when trainer beaten
-	dw SchoolboyBillyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyBillyScript
+	trainer EVENT_BEAT_SCHOOLBOY_BILLY, SCHOOLBOY, BILLY, SchoolboyBillySeenText, SchoolboyBillyBeatenText, $0000, SchoolboyBillyScript
 
 SchoolboyBillyScript:
 	talkaftercancel
--- a/maps/Route17.asm
+++ b/maps/Route17.asm
@@ -15,24 +15,8 @@
 	return
 
 TrainerBikerCharles:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_CHARLES
+	trainer EVENT_BEAT_BIKER_CHARLES, BIKER, CHARLES, BikerCharlesSeenText, BikerCharlesBeatenText, $0000, BikerCharlesScript
 
-	; trainer group && trainer id
-	db BIKER, CHARLES
-
-	; text when seen
-	dw BikerCharlesSeenText
-
-	; text when trainer beaten
-	dw BikerCharlesBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerCharlesScript
-
 BikerCharlesScript:
 	talkaftercancel
 	loadfont
@@ -42,24 +26,8 @@
 	end
 
 TrainerBikerRiley:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_RILEY
+	trainer EVENT_BEAT_BIKER_RILEY, BIKER, RILEY, BikerRileySeenText, BikerRileyBeatenText, $0000, BikerRileyScript
 
-	; trainer group && trainer id
-	db BIKER, RILEY
-
-	; text when seen
-	dw BikerRileySeenText
-
-	; text when trainer beaten
-	dw BikerRileyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerRileyScript
-
 BikerRileyScript:
 	talkaftercancel
 	loadfont
@@ -69,24 +37,8 @@
 	end
 
 TrainerBikerJoel:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_JOEL
+	trainer EVENT_BEAT_BIKER_JOEL, BIKER, JOEL, BikerJoelSeenText, BikerJoelBeatenText, $0000, BikerJoelScript
 
-	; trainer group && trainer id
-	db BIKER, JOEL
-
-	; text when seen
-	dw BikerJoelSeenText
-
-	; text when trainer beaten
-	dw BikerJoelBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerJoelScript
-
 BikerJoelScript:
 	talkaftercancel
 	loadfont
@@ -96,23 +48,7 @@
 	end
 
 TrainerBikerGlenn:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_GLENN
-
-	; trainer group && trainer id
-	db BIKER, GLENN
-
-	; text when seen
-	dw BikerGlennSeenText
-
-	; text when trainer beaten
-	dw BikerGlennBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerGlennScript
+	trainer EVENT_BEAT_BIKER_GLENN, BIKER, GLENN, BikerGlennSeenText, BikerGlennBeatenText, $0000, BikerGlennScript
 
 BikerGlennScript:
 	talkaftercancel
--- a/maps/Route18.asm
+++ b/maps/Route18.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerBird_keeperBoris:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_BORIS
+	trainer EVENT_BEAT_BIRD_KEEPER_BORIS, BIRD_KEEPER, BORIS, Bird_keeperBorisSeenText, Bird_keeperBorisBeatenText, $0000, Bird_keeperBorisScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, BORIS
-
-	; text when seen
-	dw Bird_keeperBorisSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperBorisBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperBorisScript
-
 Bird_keeperBorisScript:
 	talkaftercancel
 	loadfont
@@ -33,23 +17,7 @@
 	end
 
 TrainerBird_keeperBob:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_BOB
-
-	; trainer group && trainer id
-	db BIRD_KEEPER, BOB
-
-	; text when seen
-	dw Bird_keeperBobSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperBobBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperBobScript
+	trainer EVENT_BEAT_BIRD_KEEPER_BOB, BIRD_KEEPER, BOB, Bird_keeperBobSeenText, Bird_keeperBobBeatenText, $0000, Bird_keeperBobScript
 
 Bird_keeperBobScript:
 	talkaftercancel
--- a/maps/Route19.asm
+++ b/maps/Route19.asm
@@ -22,24 +22,8 @@
 	return
 
 TrainerSwimmerfDawn:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_DAWN
+	trainer EVENT_BEAT_SWIMMERF_DAWN, SWIMMERF, DAWN, SwimmerfDawnSeenText, SwimmerfDawnBeatenText, $0000, SwimmerfDawnScript
 
-	; trainer group && trainer id
-	db SWIMMERF, DAWN
-
-	; text when seen
-	dw SwimmerfDawnSeenText
-
-	; text when trainer beaten
-	dw SwimmerfDawnBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfDawnScript
-
 SwimmerfDawnScript:
 	talkaftercancel
 	loadfont
@@ -49,24 +33,8 @@
 	end
 
 TrainerSwimmermHarold:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_HAROLD
+	trainer EVENT_BEAT_SWIMMERM_HAROLD, SWIMMERM, HAROLD, SwimmermHaroldSeenText, SwimmermHaroldBeatenText, $0000, SwimmermHaroldScript
 
-	; trainer group && trainer id
-	db SWIMMERM, HAROLD
-
-	; text when seen
-	dw SwimmermHaroldSeenText
-
-	; text when trainer beaten
-	dw SwimmermHaroldBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermHaroldScript
-
 SwimmermHaroldScript:
 	talkaftercancel
 	loadfont
@@ -76,24 +44,8 @@
 	end
 
 TrainerSwimmermJerome:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_JEROME
+	trainer EVENT_BEAT_SWIMMERM_JEROME, SWIMMERM, JEROME, SwimmermJeromeSeenText, SwimmermJeromeBeatenText, $0000, SwimmermJeromeScript
 
-	; trainer group && trainer id
-	db SWIMMERM, JEROME
-
-	; text when seen
-	dw SwimmermJeromeSeenText
-
-	; text when trainer beaten
-	dw SwimmermJeromeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermJeromeScript
-
 SwimmermJeromeScript:
 	talkaftercancel
 	loadfont
@@ -103,23 +55,7 @@
 	end
 
 TrainerSwimmermTucker:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_TUCKER
-
-	; trainer group && trainer id
-	db SWIMMERM, TUCKER
-
-	; text when seen
-	dw SwimmermTuckerSeenText
-
-	; text when trainer beaten
-	dw SwimmermTuckerBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermTuckerScript
+	trainer EVENT_BEAT_SWIMMERM_TUCKER, SWIMMERM, TUCKER, SwimmermTuckerSeenText, SwimmermTuckerBeatenText, $0000, SwimmermTuckerScript
 
 SwimmermTuckerScript:
 	talkaftercancel
--- a/maps/Route2.asm
+++ b/maps/Route2.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerBug_catcherRob:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_ROB
+	trainer EVENT_BEAT_BUG_CATCHER_ROB, BUG_CATCHER, ROB, Bug_catcherRobSeenText, Bug_catcherRobBeatenText, $0000, Bug_catcherRobScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, ROB
-
-	; text when seen
-	dw Bug_catcherRobSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherRobBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherRobScript
-
 Bug_catcherRobScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerBug_catcherEd:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_ED
+	trainer EVENT_BEAT_BUG_CATCHER_ED, BUG_CATCHER, ED, Bug_catcherEdSeenText, Bug_catcherEdBeatenText, $0000, Bug_catcherEdScript
 
-	; trainer group && trainer id
-	db BUG_CATCHER, ED
-
-	; text when seen
-	dw Bug_catcherEdSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherEdBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherEdScript
-
 Bug_catcherEdScript:
 	talkaftercancel
 	loadfont
@@ -60,23 +28,7 @@
 	end
 
 TrainerBug_catcherDoug:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_DOUG
-
-	; trainer group && trainer id
-	db BUG_CATCHER, DOUG
-
-	; text when seen
-	dw Bug_catcherDougSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherDougBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherDougScript
+	trainer EVENT_BEAT_BUG_CATCHER_DOUG, BUG_CATCHER, DOUG, Bug_catcherDougSeenText, Bug_catcherDougBeatenText, $0000, Bug_catcherDougScript
 
 Bug_catcherDougScript:
 	talkaftercancel
--- a/maps/Route20.asm
+++ b/maps/Route20.asm
@@ -14,24 +14,8 @@
 	return
 
 TrainerSwimmerfNicole:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_NICOLE
+	trainer EVENT_BEAT_SWIMMERF_NICOLE, SWIMMERF, NICOLE, SwimmerfNicoleSeenText, SwimmerfNicoleBeatenText, $0000, SwimmerfNicoleScript
 
-	; trainer group && trainer id
-	db SWIMMERF, NICOLE
-
-	; text when seen
-	dw SwimmerfNicoleSeenText
-
-	; text when trainer beaten
-	dw SwimmerfNicoleBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfNicoleScript
-
 SwimmerfNicoleScript:
 	talkaftercancel
 	loadfont
@@ -41,24 +25,8 @@
 	end
 
 TrainerSwimmerfLori:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_LORI
+	trainer EVENT_BEAT_SWIMMERF_LORI, SWIMMERF, LORI, SwimmerfLoriSeenText, SwimmerfLoriBeatenText, $0000, SwimmerfLoriScript
 
-	; trainer group && trainer id
-	db SWIMMERF, LORI
-
-	; text when seen
-	dw SwimmerfLoriSeenText
-
-	; text when trainer beaten
-	dw SwimmerfLoriBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfLoriScript
-
 SwimmerfLoriScript:
 	talkaftercancel
 	loadfont
@@ -68,23 +36,7 @@
 	end
 
 TrainerSwimmermCameron:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_CAMERON
-
-	; trainer group && trainer id
-	db SWIMMERM, CAMERON
-
-	; text when seen
-	dw SwimmermCameronSeenText
-
-	; text when trainer beaten
-	dw SwimmermCameronBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermCameronScript
+	trainer EVENT_BEAT_SWIMMERM_CAMERON, SWIMMERM, CAMERON, SwimmermCameronSeenText, SwimmermCameronBeatenText, $0000, SwimmermCameronScript
 
 SwimmermCameronScript:
 	talkaftercancel
--- a/maps/Route21.asm
+++ b/maps/Route21.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerSwimmermSeth:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_SETH
+	trainer EVENT_BEAT_SWIMMERM_SETH, SWIMMERM, SETH, SwimmermSethSeenText, SwimmermSethBeatenText, $0000, SwimmermSethScript
 
-	; trainer group && trainer id
-	db SWIMMERM, SETH
-
-	; text when seen
-	dw SwimmermSethSeenText
-
-	; text when trainer beaten
-	dw SwimmermSethBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermSethScript
-
 SwimmermSethScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerSwimmerfNikki:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_NIKKI
+	trainer EVENT_BEAT_SWIMMERF_NIKKI, SWIMMERF, NIKKI, SwimmerfNikkiSeenText, SwimmerfNikkiBeatenText, $0000, SwimmerfNikkiScript
 
-	; trainer group && trainer id
-	db SWIMMERF, NIKKI
-
-	; text when seen
-	dw SwimmerfNikkiSeenText
-
-	; text when trainer beaten
-	dw SwimmerfNikkiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfNikkiScript
-
 SwimmerfNikkiScript:
 	talkaftercancel
 	loadfont
@@ -60,23 +28,7 @@
 	end
 
 TrainerFisherArnold:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_ARNOLD
-
-	; trainer group && trainer id
-	db FISHER, ARNOLD
-
-	; text when seen
-	dw FisherArnoldSeenText
-
-	; text when trainer beaten
-	dw FisherArnoldBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherArnoldScript
+	trainer EVENT_BEAT_FISHER_ARNOLD, FISHER, ARNOLD, FisherArnoldSeenText, FisherArnoldBeatenText, $0000, FisherArnoldScript
 
 FisherArnoldScript:
 	talkaftercancel
--- a/maps/Route25.asm
+++ b/maps/Route25.asm
@@ -68,24 +68,8 @@
 	end
 
 TrainerSchoolboyDudley:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_DUDLEY
+	trainer EVENT_BEAT_SCHOOLBOY_DUDLEY, SCHOOLBOY, DUDLEY, SchoolboyDudleySeenText, SchoolboyDudleyBeatenText, $0000, SchoolboyDudleyScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, DUDLEY
-
-	; text when seen
-	dw SchoolboyDudleySeenText
-
-	; text when trainer beaten
-	dw SchoolboyDudleyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyDudleyScript
-
 SchoolboyDudleyScript:
 	talkaftercancel
 	loadfont
@@ -95,24 +79,8 @@
 	end
 
 TrainerLassEllen:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_ELLEN
+	trainer EVENT_BEAT_LASS_ELLEN, LASS, ELLEN, LassEllenSeenText, LassEllenBeatenText, $0000, LassEllenScript
 
-	; trainer group && trainer id
-	db LASS, ELLEN
-
-	; text when seen
-	dw LassEllenSeenText
-
-	; text when trainer beaten
-	dw LassEllenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassEllenScript
-
 LassEllenScript:
 	talkaftercancel
 	loadfont
@@ -122,24 +90,8 @@
 	end
 
 TrainerSchoolboyJoe:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_JOE
+	trainer EVENT_BEAT_SCHOOLBOY_JOE, SCHOOLBOY, JOE, SchoolboyJoeSeenText, SchoolboyJoeBeatenText, $0000, SchoolboyJoeScript
 
-	; trainer group && trainer id
-	db SCHOOLBOY, JOE
-
-	; text when seen
-	dw SchoolboyJoeSeenText
-
-	; text when trainer beaten
-	dw SchoolboyJoeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyJoeScript
-
 SchoolboyJoeScript:
 	talkaftercancel
 	loadfont
@@ -149,24 +101,8 @@
 	end
 
 TrainerLassLaura:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_LAURA
+	trainer EVENT_BEAT_LASS_LAURA, LASS, LAURA, LassLauraSeenText, LassLauraBeatenText, $0000, LassLauraScript
 
-	; trainer group && trainer id
-	db LASS, LAURA
-
-	; text when seen
-	dw LassLauraSeenText
-
-	; text when trainer beaten
-	dw LassLauraBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassLauraScript
-
 LassLauraScript:
 	talkaftercancel
 	loadfont
@@ -176,24 +112,8 @@
 	end
 
 TrainerCamperLloyd:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_LLOYD
+	trainer EVENT_BEAT_CAMPER_LLOYD, CAMPER, LLOYD, CamperLloydSeenText, CamperLloydBeatenText, $0000, CamperLloydScript
 
-	; trainer group && trainer id
-	db CAMPER, LLOYD
-
-	; text when seen
-	dw CamperLloydSeenText
-
-	; text when trainer beaten
-	dw CamperLloydBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperLloydScript
-
 CamperLloydScript:
 	talkaftercancel
 	loadfont
@@ -203,24 +123,8 @@
 	end
 
 TrainerLassShannon:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_SHANNON
+	trainer EVENT_BEAT_LASS_SHANNON, LASS, SHANNON, LassShannonSeenText, LassShannonBeatenText, $0000, LassShannonScript
 
-	; trainer group && trainer id
-	db LASS, SHANNON
-
-	; text when seen
-	dw LassShannonSeenText
-
-	; text when trainer beaten
-	dw LassShannonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassShannonScript
-
 LassShannonScript:
 	talkaftercancel
 	loadfont
@@ -230,23 +134,7 @@
 	end
 
 TrainerSupernerdPat:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_PAT
-
-	; trainer group && trainer id
-	db SUPER_NERD, PAT
-
-	; text when seen
-	dw SupernerdPatSeenText
-
-	; text when trainer beaten
-	dw SupernerdPatBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdPatScript
+	trainer EVENT_BEAT_SUPER_NERD_PAT, SUPER_NERD, PAT, SupernerdPatSeenText, SupernerdPatBeatenText, $0000, SupernerdPatScript
 
 SupernerdPatScript:
 	talkaftercancel
--- a/maps/Route26.asm
+++ b/maps/Route26.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerCooltrainermJake:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_JAKE
+	trainer EVENT_BEAT_COOLTRAINERM_JAKE, COOLTRAINERM, JAKE, CooltrainermJakeSeenText, CooltrainermJakeBeatenText, $0000, CooltrainermJakeScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, JAKE
-
-	; text when seen
-	dw CooltrainermJakeSeenText
-
-	; text when trainer beaten
-	dw CooltrainermJakeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermJakeScript
-
 CooltrainermJakeScript:
 	talkaftercancel
 	loadfont
@@ -33,31 +17,15 @@
 	end
 
 TrainerCooltrainermGaven3:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_GAVEN
+	trainer EVENT_BEAT_COOLTRAINERM_GAVEN, COOLTRAINERM, GAVEN3, CooltrainermGaven3SeenText, CooltrainermGaven3BeatenText, $0000, CooltrainermGaven3Script
 
-	; trainer group && trainer id
-	db COOLTRAINERM, GAVEN3
-
-	; text when seen
-	dw CooltrainermGaven3SeenText
-
-	; text when trainer beaten
-	dw CooltrainermGaven3BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermGaven3Script
-
 CooltrainermGaven3Script:
-	writecode VAR_CALLERID, $b
+	writecode VAR_CALLERID, PHONE_COOLTRAINERM_GAVEN
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_GAVEN
 	iftrue UnknownScript_0x1a4d79
-	checkcellnum $b
+	checkcellnum PHONE_COOLTRAINERM_GAVEN
 	iftrue UnknownScript_0x1a4dcb
 	checkevent EVENT_GAVEN_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a4d62
@@ -70,7 +38,7 @@
 UnknownScript_0x1a4d62:
 	scall UnknownScript_0x1a4dc3
 UnknownScript_0x1a4d65:
-	askforphonenumber $b
+	askforphonenumber PHONE_COOLTRAINERM_GAVEN
 	if_equal $1, UnknownScript_0x1a4dd3
 	if_equal $2, UnknownScript_0x1a4dcf
 	trainertotext COOLTRAINERM, GAVEN3, $0
@@ -142,24 +110,8 @@
 	end
 
 TrainerCooltrainerfJoyce:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_JOYCE
+	trainer EVENT_BEAT_COOLTRAINERF_JOYCE, COOLTRAINERF, JOYCE, CooltrainerfJoyceSeenText, CooltrainerfJoyceBeatenText, $0000, CooltrainerfJoyceScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, JOYCE
-
-	; text when seen
-	dw CooltrainerfJoyceSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfJoyceBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfJoyceScript
-
 CooltrainerfJoyceScript:
 	talkaftercancel
 	loadfont
@@ -169,31 +121,15 @@
 	end
 
 TrainerCooltrainerfBeth1:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_BETH
+	trainer EVENT_BEAT_COOLTRAINERF_BETH, COOLTRAINERF, BETH1, CooltrainerfBeth1SeenText, CooltrainerfBeth1BeatenText, $0000, CooltrainerfBeth1Script
 
-	; trainer group && trainer id
-	db COOLTRAINERF, BETH1
-
-	; text when seen
-	dw CooltrainerfBeth1SeenText
-
-	; text when trainer beaten
-	dw CooltrainerfBeth1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfBeth1Script
-
 CooltrainerfBeth1Script:
-	writecode VAR_CALLERID, $c
+	writecode VAR_CALLERID, PHONE_COOLTRAINERF_BETH
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_BETH
 	iftrue UnknownScript_0x1a4e35
-	checkcellnum $c
+	checkcellnum PHONE_COOLTRAINERF_BETH
 	iftrue UnknownScript_0x1a4e87
 	checkevent EVENT_BETH_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a4e1e
@@ -206,7 +142,7 @@
 UnknownScript_0x1a4e1e:
 	scall UnknownScript_0x1a4e7f
 UnknownScript_0x1a4e21:
-	askforphonenumber $c
+	askforphonenumber PHONE_COOLTRAINERF_BETH
 	if_equal $1, UnknownScript_0x1a4e8f
 	if_equal $2, UnknownScript_0x1a4e8b
 	trainertotext COOLTRAINERF, BETH1, $0
@@ -278,24 +214,8 @@
 	end
 
 TrainerPsychicRichard:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_RICHARD
+	trainer EVENT_BEAT_PSYCHIC_RICHARD, PSYCHIC_T, RICHARD, PsychicRichardSeenText, PsychicRichardBeatenText, $0000, PsychicRichardScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, RICHARD
-
-	; text when seen
-	dw PsychicRichardSeenText
-
-	; text when trainer beaten
-	dw PsychicRichardBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicRichardScript
-
 PsychicRichardScript:
 	talkaftercancel
 	loadfont
@@ -305,23 +225,7 @@
 	end
 
 TrainerFisherScott:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_SCOTT
-
-	; trainer group && trainer id
-	db FISHER, SCOTT
-
-	; text when seen
-	dw FisherScottSeenText
-
-	; text when trainer beaten
-	dw FisherScottBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherScottScript
+	trainer EVENT_BEAT_FISHER_SCOTT, FISHER, SCOTT, FisherScottSeenText, FisherScottBeatenText, $0000, FisherScottScript
 
 FisherScottScript:
 	talkaftercancel
--- a/maps/Route27.asm
+++ b/maps/Route27.asm
@@ -40,24 +40,8 @@
 	jumptextfaceplayer UnknownText_0x1a0a71
 
 TrainerPsychicGilbert:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_GILBERT
+	trainer EVENT_BEAT_PSYCHIC_GILBERT, PSYCHIC_T, GILBERT, PsychicGilbertSeenText, PsychicGilbertBeatenText, $0000, PsychicGilbertScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, GILBERT
-
-	; text when seen
-	dw PsychicGilbertSeenText
-
-	; text when trainer beaten
-	dw PsychicGilbertBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicGilbertScript
-
 PsychicGilbertScript:
 	talkaftercancel
 	loadfont
@@ -67,26 +51,10 @@
 	end
 
 TrainerBird_keeperJose2:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_JOSE2
+	trainer EVENT_BEAT_BIRD_KEEPER_JOSE2, BIRD_KEEPER, JOSE2, Bird_keeperJose2SeenText, Bird_keeperJose2BeatenText, $0000, Bird_keeperJose2Script
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, JOSE2
-
-	; text when seen
-	dw Bird_keeperJose2SeenText
-
-	; text when trainer beaten
-	dw Bird_keeperJose2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperJose2Script
-
 Bird_keeperJose2Script:
-	writecode VAR_CALLERID, $d
+	writecode VAR_CALLERID, PHONE_BIRDKEEPER_JOSE
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_JOSE
@@ -93,7 +61,7 @@
 	iftrue UnknownScript_0x1a08ff
 	checkflag ENGINE_JOSE_HAS_STAR_PIECE
 	iftrue UnknownScript_0x1a0945
-	checkcellnum $d
+	checkcellnum PHONE_BIRDKEEPER_JOSE
 	iftrue UnknownScript_0x1a0963
 	checkevent EVENT_JOSE_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a08e8
@@ -106,7 +74,7 @@
 UnknownScript_0x1a08e8:
 	scall UnknownScript_0x1a095b
 UnknownScript_0x1a08eb:
-	askforphonenumber $d
+	askforphonenumber PHONE_BIRDKEEPER_JOSE
 	if_equal $1, UnknownScript_0x1a096b
 	if_equal $2, UnknownScript_0x1a0967
 	trainertotext BIRD_KEEPER, JOSE2, $0
@@ -196,24 +164,8 @@
 	end
 
 TrainerCooltrainermBlake:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_BLAKE
+	trainer EVENT_BEAT_COOLTRAINERM_BLAKE, COOLTRAINERM, BLAKE, CooltrainermBlakeSeenText, CooltrainermBlakeBeatenText, $0000, CooltrainermBlakeScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, BLAKE
-
-	; text when seen
-	dw CooltrainermBlakeSeenText
-
-	; text when trainer beaten
-	dw CooltrainermBlakeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermBlakeScript
-
 CooltrainermBlakeScript:
 	talkaftercancel
 	loadfont
@@ -223,24 +175,8 @@
 	end
 
 TrainerCooltrainermBrian:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_BRIAN
+	trainer EVENT_BEAT_COOLTRAINERM_BRIAN, COOLTRAINERM, BRIAN, CooltrainermBrianSeenText, CooltrainermBrianBeatenText, $0000, CooltrainermBrianScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, BRIAN
-
-	; text when seen
-	dw CooltrainermBrianSeenText
-
-	; text when trainer beaten
-	dw CooltrainermBrianBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermBrianScript
-
 CooltrainermBrianScript:
 	talkaftercancel
 	loadfont
@@ -250,31 +186,15 @@
 	end
 
 TrainerCooltrainerfReena:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_REENA
+	trainer EVENT_BEAT_COOLTRAINERF_REENA, COOLTRAINERF, REENA1, CooltrainerfReena1SeenText, CooltrainerfReena1BeatenText, $0000, CooltrainerfReena1Script
 
-	; trainer group && trainer id
-	db COOLTRAINERF, REENA1
-
-	; text when seen
-	dw CooltrainerfReena1SeenText
-
-	; text when trainer beaten
-	dw CooltrainerfReena1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfReena1Script
-
 CooltrainerfReena1Script:
-	writecode VAR_CALLERID, $e
+	writecode VAR_CALLERID, PHONE_COOLTRAINERF_REENA
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_REENA
 	iftrue UnknownScript_0x1a09e9
-	checkcellnum $e
+	checkcellnum PHONE_COOLTRAINERF_REENA
 	iftrue UnknownScript_0x1a0a3b
 	checkevent EVENT_REENA_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a09d2
@@ -287,7 +207,7 @@
 UnknownScript_0x1a09d2:
 	scall UnknownScript_0x1a0a33
 UnknownScript_0x1a09d5:
-	askforphonenumber $e
+	askforphonenumber PHONE_COOLTRAINERF_REENA
 	if_equal $1, UnknownScript_0x1a0a43
 	if_equal $2, UnknownScript_0x1a0a3f
 	trainertotext COOLTRAINERF, REENA1, $0
@@ -359,23 +279,7 @@
 	end
 
 TrainerCooltrainerfMegan:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_MEGAN
-
-	; trainer group && trainer id
-	db COOLTRAINERF, MEGAN
-
-	; text when seen
-	dw CooltrainerfMeganSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfMeganBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfMeganScript
+	trainer EVENT_BEAT_COOLTRAINERF_MEGAN, COOLTRAINERF, MEGAN, CooltrainerfMeganSeenText, CooltrainerfMeganBeatenText, $0000, CooltrainerfMeganScript
 
 CooltrainerfMeganScript:
 	talkaftercancel
--- a/maps/Route3.asm
+++ b/maps/Route3.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerFirebreatherOtis:
-	; bit/flag number
-	dw EVENT_BEAT_FIREBREATHER_OTIS
+	trainer EVENT_BEAT_FIREBREATHER_OTIS, FIREBREATHER, OTIS, FirebreatherOtisSeenText, FirebreatherOtisBeatenText, $0000, FirebreatherOtisScript
 
-	; trainer group && trainer id
-	db FIREBREATHER, OTIS
-
-	; text when seen
-	dw FirebreatherOtisSeenText
-
-	; text when trainer beaten
-	dw FirebreatherOtisBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FirebreatherOtisScript
-
 FirebreatherOtisScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerYoungsterWarren:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_WARREN
+	trainer EVENT_BEAT_YOUNGSTER_WARREN, YOUNGSTER, WARREN, YoungsterWarrenSeenText, YoungsterWarrenBeatenText, $0000, YoungsterWarrenScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, WARREN
-
-	; text when seen
-	dw YoungsterWarrenSeenText
-
-	; text when trainer beaten
-	dw YoungsterWarrenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterWarrenScript
-
 YoungsterWarrenScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerYoungsterJimmy:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_JIMMY
+	trainer EVENT_BEAT_YOUNGSTER_JIMMY, YOUNGSTER, JIMMY, YoungsterJimmySeenText, YoungsterJimmyBeatenText, $0000, YoungsterJimmyScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, JIMMY
-
-	; text when seen
-	dw YoungsterJimmySeenText
-
-	; text when trainer beaten
-	dw YoungsterJimmyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterJimmyScript
-
 YoungsterJimmyScript:
 	talkaftercancel
 	loadfont
@@ -87,23 +39,7 @@
 	end
 
 TrainerFirebreatherBurt:
-	; bit/flag number
-	dw EVENT_BEAT_FIREBREATHER_BURT
-
-	; trainer group && trainer id
-	db FIREBREATHER, BURT
-
-	; text when seen
-	dw FirebreatherBurtSeenText
-
-	; text when trainer beaten
-	dw FirebreatherBurtBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FirebreatherBurtScript
+	trainer EVENT_BEAT_FIREBREATHER_BURT, FIREBREATHER, BURT, FirebreatherBurtSeenText, FirebreatherBurtBeatenText, $0000, FirebreatherBurtScript
 
 FirebreatherBurtScript:
 	talkaftercancel
--- a/maps/Route30.asm
+++ b/maps/Route30.asm
@@ -26,31 +26,15 @@
 	end
 
 TrainerYoungsterJoey:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_JOEY
+	trainer EVENT_BEAT_YOUNGSTER_JOEY, YOUNGSTER, JOEY1, YoungsterJoey1SeenText, YoungsterJoey1BeatenText, $0000, YoungsterJoey1Script
 
-	; trainer group && trainer id
-	db YOUNGSTER, JOEY1
-
-	; text when seen
-	dw YoungsterJoey1SeenText
-
-	; text when trainer beaten
-	dw YoungsterJoey1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterJoey1Script
-
 YoungsterJoey1Script:
-	writecode VAR_CALLERID, $f
+	writecode VAR_CALLERID, PHONE_YOUNGSTER_JOEY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_JOEY
 	iftrue UnknownScript_0x1a16e0
-	checkcellnum $f
+	checkcellnum PHONE_YOUNGSTER_JOEY
 	iftrue UnknownScript_0x1a178f
 	checkevent EVENT_JOEY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a16c9
@@ -63,7 +47,7 @@
 UnknownScript_0x1a16c9:
 	scall UnknownScript_0x1a1787
 UnknownScript_0x1a16cc:
-	askforphonenumber $f
+	askforphonenumber PHONE_YOUNGSTER_JOEY
 	if_equal $1, UnknownScript_0x1a1797
 	if_equal $2, UnknownScript_0x1a1793
 	trainertotext YOUNGSTER, JOEY1, $0
@@ -189,24 +173,8 @@
 	end
 
 TrainerYoungsterMikey:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_MIKEY
+	trainer EVENT_BEAT_YOUNGSTER_MIKEY, YOUNGSTER, MIKEY, YoungsterMikeySeenText, YoungsterMikeyBeatenText, $0000, YoungsterMikeyScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, MIKEY
-
-	; text when seen
-	dw YoungsterMikeySeenText
-
-	; text when trainer beaten
-	dw YoungsterMikeyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterMikeyScript
-
 YoungsterMikeyScript:
 	talkaftercancel
 	loadfont
@@ -216,23 +184,7 @@
 	end
 
 TrainerBug_catcherDon:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_DON
-
-	; trainer group && trainer id
-	db BUG_CATCHER, DON
-
-	; text when seen
-	dw Bug_catcherDonSeenText
-
-	; text when trainer beaten
-	dw Bug_catcherDonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherDonScript
+	trainer EVENT_BEAT_BUG_CATCHER_DON, BUG_CATCHER, DON, Bug_catcherDonSeenText, Bug_catcherDonBeatenText, $0000, Bug_catcherDonScript
 
 Bug_catcherDonScript:
 	talkaftercancel
--- a/maps/Route31.asm
+++ b/maps/Route31.asm
@@ -19,26 +19,10 @@
 	return
 
 TrainerBug_catcherWade1:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_WADE
+	trainer EVENT_BEAT_BUG_CATCHER_WADE, BUG_CATCHER, WADE1, Bug_catcherWade1SeenText, Bug_catcherWade1BeatenText, $0000, Bug_catcherWade1Script
 
-	; trainer group && trainer id
-	db BUG_CATCHER, WADE1
-
-	; text when seen
-	dw Bug_catcherWade1SeenText
-
-	; text when trainer beaten
-	dw Bug_catcherWade1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherWade1Script
-
 Bug_catcherWade1Script:
-	writecode VAR_CALLERID, $10
+	writecode VAR_CALLERID, PHONE_BUG_CATCHER_WADE
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_WADE
@@ -45,7 +29,7 @@
 	iftrue UnknownScript_0x1a5493
 	checkflag ENGINE_WADE_HAS_ITEM
 	iftrue UnknownScript_0x1a5507
-	checkcellnum $10
+	checkcellnum PHONE_BUG_CATCHER_WADE
 	iftrue UnknownScript_0x1a5558
 	checkevent EVENT_WADE_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a547c
@@ -58,7 +42,7 @@
 UnknownScript_0x1a547c:
 	scall UnknownScript_0x1a5550
 UnknownScript_0x1a547f:
-	askforphonenumber $10
+	askforphonenumber PHONE_BUG_CATCHER_WADE
 	if_equal $1, UnknownScript_0x1a5560
 	if_equal $2, UnknownScript_0x1a555c
 	trainertotext BUG_CATCHER, WADE1, $0
--- a/maps/Route32.asm
+++ b/maps/Route32.asm
@@ -133,24 +133,8 @@
 	end
 
 TrainerCamperRoland:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_ROLAND
+	trainer EVENT_BEAT_CAMPER_ROLAND, CAMPER, ROLAND, CamperRolandSeenText, CamperRolandBeatenText, $0000, CamperRolandScript
 
-	; trainer group && trainer id
-	db CAMPER, ROLAND
-
-	; text when seen
-	dw CamperRolandSeenText
-
-	; text when trainer beaten
-	dw CamperRolandBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperRolandScript
-
 CamperRolandScript:
 	talkaftercancel
 	loadfont
@@ -160,24 +144,8 @@
 	end
 
 TrainerFisherJustin:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_JUSTIN
+	trainer EVENT_BEAT_FISHER_JUSTIN, FISHER, JUSTIN, FisherJustinSeenText, FisherJustinBeatenText, $0000, FisherJustinScript
 
-	; trainer group && trainer id
-	db FISHER, JUSTIN
-
-	; text when seen
-	dw FisherJustinSeenText
-
-	; text when trainer beaten
-	dw FisherJustinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherJustinScript
-
 FisherJustinScript:
 	talkaftercancel
 	loadfont
@@ -187,26 +155,10 @@
 	end
 
 TrainerFisherRalph1:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_RALPH
+	trainer EVENT_BEAT_FISHER_RALPH, FISHER, RALPH1, FisherRalph1SeenText, FisherRalph1BeatenText, $0000, FisherRalph1Script
 
-	; trainer group && trainer id
-	db FISHER, RALPH1
-
-	; text when seen
-	dw FisherRalph1SeenText
-
-	; text when trainer beaten
-	dw FisherRalph1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherRalph1Script
-
 FisherRalph1Script:
-	writecode VAR_CALLERID, $11
+	writecode VAR_CALLERID, PHONE_FISHER_RALPH
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_RALPH
@@ -213,7 +165,7 @@
 	iftrue UnknownScript_0x19057d
 	checkflag ENGINE_SPECIAL_WILDDATA
 	iftrue UnknownScript_0x1905f1
-	checkcellnum $11
+	checkcellnum PHONE_FISHER_RALPH
 	iftrue UnknownScript_0x190603
 	checkevent EVENT_RALPH_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x190566
@@ -226,7 +178,7 @@
 UnknownScript_0x190566:
 	scall UnknownScript_0x1905fb
 UnknownScript_0x190569:
-	askforphonenumber $11
+	askforphonenumber PHONE_FISHER_RALPH
 	if_equal $1, UnknownScript_0x19060b
 	if_equal $2, UnknownScript_0x190607
 	trainertotext FISHER, RALPH1, $0
@@ -328,24 +280,8 @@
 	end
 
 TrainerFisherHenry:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_HENRY
+	trainer EVENT_BEAT_FISHER_HENRY, FISHER, HENRY, FisherHenrySeenText, FisherHenryBeatenText, $0000, FisherHenryScript
 
-	; trainer group && trainer id
-	db FISHER, HENRY
-
-	; text when seen
-	dw FisherHenrySeenText
-
-	; text when trainer beaten
-	dw FisherHenryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherHenryScript
-
 FisherHenryScript:
 	talkaftercancel
 	loadfont
@@ -355,31 +291,15 @@
 	end
 
 TrainerPicnickerLiz1:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_LIZ
+	trainer EVENT_BEAT_PICNICKER_LIZ, PICNICKER, LIZ1, PicnickerLiz1SeenText, PicnickerLiz1BeatenText, $0000, PicnickerLiz1Script
 
-	; trainer group && trainer id
-	db PICNICKER, LIZ1
-
-	; text when seen
-	dw PicnickerLiz1SeenText
-
-	; text when trainer beaten
-	dw PicnickerLiz1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerLiz1Script
-
 PicnickerLiz1Script:
-	writecode VAR_CALLERID, $12
+	writecode VAR_CALLERID, PHONE_PICNICKER_LIZ
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_LIZ
 	iftrue UnknownScript_0x19066d
-	checkcellnum $12
+	checkcellnum PHONE_PICNICKER_LIZ
 	iftrue UnknownScript_0x1906ed
 	checkevent EVENT_LIZ_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x190656
@@ -392,7 +312,7 @@
 UnknownScript_0x190656:
 	scall UnknownScript_0x1906e5
 UnknownScript_0x190659:
-	askforphonenumber $12
+	askforphonenumber PHONE_PICNICKER_LIZ
 	if_equal $1, UnknownScript_0x1906f5
 	if_equal $2, UnknownScript_0x1906f1
 	trainertotext PICNICKER, LIZ1, $0
@@ -488,24 +408,8 @@
 	end
 
 TrainerYoungsterAlbert:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_ALBERT
+	trainer EVENT_BEAT_YOUNGSTER_ALBERT, YOUNGSTER, ALBERT, YoungsterAlbertSeenText, YoungsterAlbertBeatenText, $0000, YoungsterAlbertScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, ALBERT
-
-	; text when seen
-	dw YoungsterAlbertSeenText
-
-	; text when trainer beaten
-	dw YoungsterAlbertBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterAlbertScript
-
 YoungsterAlbertScript:
 	talkaftercancel
 	loadfont
@@ -515,24 +419,8 @@
 	end
 
 TrainerYoungsterGordon:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_GORDON
+	trainer EVENT_BEAT_YOUNGSTER_GORDON, YOUNGSTER, GORDON, YoungsterGordonSeenText, YoungsterGordonBeatenText, $0000, YoungsterGordonScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, GORDON
-
-	; text when seen
-	dw YoungsterGordonSeenText
-
-	; text when trainer beaten
-	dw YoungsterGordonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterGordonScript
-
 YoungsterGordonScript:
 	talkaftercancel
 	loadfont
@@ -542,23 +430,7 @@
 	end
 
 TrainerBird_keeperPeter:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_PETER
-
-	; trainer group && trainer id
-	db BIRD_KEEPER, PETER
-
-	; text when seen
-	dw Bird_keeperPeterSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperPeterBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperPeterScript
+	trainer EVENT_BEAT_BIRD_KEEPER_PETER, BIRD_KEEPER, PETER, Bird_keeperPeterSeenText, Bird_keeperPeterBeatenText, $0000, Bird_keeperPeterScript
 
 Bird_keeperPeterScript:
 	talkaftercancel
--- a/maps/Route33.asm
+++ b/maps/Route33.asm
@@ -9,26 +9,10 @@
 	jumptextfaceplayer UnknownText_0x1ac1e7
 
 TrainerHikerAnthony:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_ANTHONY
+	trainer EVENT_BEAT_HIKER_ANTHONY, HIKER, ANTHONY2, HikerAnthony2SeenText, HikerAnthony2BeatenText, $0000, HikerAnthony2Script
 
-	; trainer group && trainer id
-	db HIKER, ANTHONY2
-
-	; text when seen
-	dw HikerAnthony2SeenText
-
-	; text when trainer beaten
-	dw HikerAnthony2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerAnthony2Script
-
 HikerAnthony2Script:
-	writecode VAR_CALLERID, $13
+	writecode VAR_CALLERID, PHONE_HIKER_ANTHONY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_ANTHONY
@@ -35,7 +19,7 @@
 	iftrue UnknownScript_0x1ac051
 	checkflag ENGINE_DUNSPARCE_SWARM
 	iftrue UnknownScript_0x1ac0c5
-	checkcellnum $13
+	checkcellnum PHONE_HIKER_ANTHONY
 	iftrue UnknownScript_0x1ac0d7
 	checkevent EVENT_ANTHONY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1ac03a
@@ -48,7 +32,7 @@
 UnknownScript_0x1ac03a:
 	scall UnknownScript_0x1ac0cf
 UnknownScript_0x1ac03d:
-	askforphonenumber $13
+	askforphonenumber PHONE_HIKER_ANTHONY
 	if_equal $1, UnknownScript_0x1ac0df
 	if_equal $2, UnknownScript_0x1ac0db
 	trainertotext HIKER, ANTHONY2, $0
--- a/maps/Route34.asm
+++ b/maps/Route34.asm
@@ -76,26 +76,10 @@
 	end
 
 TrainerCamperTodd1:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_TODD
+	trainer EVENT_BEAT_CAMPER_TODD, CAMPER, TODD1, CamperTodd1SeenText, CamperTodd1BeatenText, $0000, CamperTodd1Script
 
-	; trainer group && trainer id
-	db CAMPER, TODD1
-
-	; text when seen
-	dw CamperTodd1SeenText
-
-	; text when trainer beaten
-	dw CamperTodd1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperTodd1Script
-
 CamperTodd1Script:
-	writecode VAR_CALLERID, $14
+	writecode VAR_CALLERID, PHONE_CAMPER_TODD
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_TODD
@@ -102,7 +86,7 @@
 	iftrue UnknownScript_0x780bd
 	checkflag ENGINE_GOLDENROD_DEPT_STORE_SALE_IS_ON
 	iftrue UnknownScript_0x78131
-	checkcellnum $14
+	checkcellnum PHONE_CAMPER_TODD
 	iftrue UnknownScript_0x78143
 	checkevent EVENT_TODD_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x780a6
@@ -115,7 +99,7 @@
 UnknownScript_0x780a6:
 	scall UnknownScript_0x7813b
 UnknownScript_0x780a9:
-	askforphonenumber $14
+	askforphonenumber PHONE_CAMPER_TODD
 	if_equal $1, UnknownScript_0x7814b
 	if_equal $2, UnknownScript_0x78147
 	trainertotext CAMPER, TODD1, $0
@@ -217,26 +201,10 @@
 	end
 
 TrainerPicnickerGina1:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_GINA
+	trainer EVENT_BEAT_PICNICKER_GINA, PICNICKER, GINA1, PicnickerGina1SeenText, PicnickerGina1BeatenText, $0000, PicnickerGina1Script
 
-	; trainer group && trainer id
-	db PICNICKER, GINA1
-
-	; text when seen
-	dw PicnickerGina1SeenText
-
-	; text when trainer beaten
-	dw PicnickerGina1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerGina1Script
-
 PicnickerGina1Script:
-	writecode VAR_CALLERID, $15
+	writecode VAR_CALLERID, PHONE_PICNICKER_GINA
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_GINA
@@ -243,7 +211,7 @@
 	iftrue UnknownScript_0x7819f
 	checkflag ENGINE_GINA_HAS_LEAF_STONE
 	iftrue UnknownScript_0x78213
-	checkcellnum $15
+	checkcellnum PHONE_PICNICKER_GINA
 	iftrue UnknownScript_0x78234
 	checkevent EVENT_GINA_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x78188
@@ -256,7 +224,7 @@
 UnknownScript_0x78188:
 	scall UnknownScript_0x7822c
 UnknownScript_0x7818b:
-	askforphonenumber $15
+	askforphonenumber PHONE_PICNICKER_GINA
 	if_equal $1, UnknownScript_0x7823c
 	if_equal $2, UnknownScript_0x78238
 	trainertotext PICNICKER, GINA1, $0
@@ -402,24 +370,8 @@
 	end
 
 TrainerYoungsterSamuel:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_SAMUEL
+	trainer EVENT_BEAT_YOUNGSTER_SAMUEL, YOUNGSTER, SAMUEL, YoungsterSamuelSeenText, YoungsterSamuelBeatenText, $0000, YoungsterSamuelScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, SAMUEL
-
-	; text when seen
-	dw YoungsterSamuelSeenText
-
-	; text when trainer beaten
-	dw YoungsterSamuelBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterSamuelScript
-
 YoungsterSamuelScript:
 	talkaftercancel
 	loadfont
@@ -429,24 +381,8 @@
 	end
 
 TrainerYoungsterIan:
-	; bit/flag number
-	dw EVENT_BEAT_YOUNGSTER_IAN
+	trainer EVENT_BEAT_YOUNGSTER_IAN, YOUNGSTER, IAN, YoungsterIanSeenText, YoungsterIanBeatenText, $0000, YoungsterIanScript
 
-	; trainer group && trainer id
-	db YOUNGSTER, IAN
-
-	; text when seen
-	dw YoungsterIanSeenText
-
-	; text when trainer beaten
-	dw YoungsterIanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw YoungsterIanScript
-
 YoungsterIanScript:
 	talkaftercancel
 	loadfont
@@ -456,24 +392,8 @@
 	end
 
 TrainerPokefanmBrandon:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_BRANDON
+	trainer EVENT_BEAT_POKEFANM_BRANDON, POKEFANM, BRANDON, PokefanmBrandonSeenText, PokefanmBrandonBeatenText, $0000, PokefanmBrandonScript
 
-	; trainer group && trainer id
-	db POKEFANM, BRANDON
-
-	; text when seen
-	dw PokefanmBrandonSeenText
-
-	; text when trainer beaten
-	dw PokefanmBrandonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmBrandonScript
-
 PokefanmBrandonScript:
 	talkaftercancel
 	loadfont
@@ -483,24 +403,8 @@
 	end
 
 TrainerCooltrainerfIrene:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_IRENE
+	trainer EVENT_BEAT_COOLTRAINERF_IRENE, COOLTRAINERF, IRENE, CooltrainerfIreneSeenText, CooltrainerfIreneBeatenText, $0000, CooltrainerfIreneScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, IRENE
-
-	; text when seen
-	dw CooltrainerfIreneSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfIreneBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfIreneScript
-
 CooltrainerfIreneScript:
 	talkaftercancel
 	loadfont
@@ -518,24 +422,8 @@
 	end
 
 TrainerCooltrainerfJenn:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_JENN
+	trainer EVENT_BEAT_COOLTRAINERF_JENN, COOLTRAINERF, JENN, CooltrainerfJennSeenText, CooltrainerfJennBeatenText, $0000, CooltrainerfJennScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, JENN
-
-	; text when seen
-	dw CooltrainerfJennSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfJennBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfJennScript
-
 CooltrainerfJennScript:
 	talkaftercancel
 	loadfont
@@ -553,23 +441,7 @@
 	end
 
 TrainerCooltrainerfKate:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_KATE
-
-	; trainer group && trainer id
-	db COOLTRAINERF, KATE
-
-	; text when seen
-	dw CooltrainerfKateSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfKateBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfKateScript
+	trainer EVENT_BEAT_COOLTRAINERF_KATE, COOLTRAINERF, KATE, CooltrainerfKateSeenText, CooltrainerfKateBeatenText, $0000, CooltrainerfKateScript
 
 CooltrainerfKateScript:
 	talkaftercancel
--- a/maps/Route35.asm
+++ b/maps/Route35.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerBird_keeperBryan:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_BRYAN
+	trainer EVENT_BEAT_BIRD_KEEPER_BRYAN, BIRD_KEEPER, BRYAN, Bird_keeperBryanSeenText, Bird_keeperBryanBeatenText, $0000, Bird_keeperBryanScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, BRYAN
-
-	; text when seen
-	dw Bird_keeperBryanSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperBryanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperBryanScript
-
 Bird_keeperBryanScript:
 	talkaftercancel
 	loadfont
@@ -33,29 +17,13 @@
 	end
 
 TrainerJugglerIrwin:
-	; bit/flag number
-	dw EVENT_BEAT_JUGGLER_IRWIN
+	trainer EVENT_BEAT_JUGGLER_IRWIN, JUGGLER, IRWIN1, JugglerIrwin1SeenText, JugglerIrwin1BeatenText, $0000, JugglerIrwin1Script
 
-	; trainer group && trainer id
-	db JUGGLER, IRWIN1
-
-	; text when seen
-	dw JugglerIrwin1SeenText
-
-	; text when trainer beaten
-	dw JugglerIrwin1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw JugglerIrwin1Script
-
 JugglerIrwin1Script:
-	writecode VAR_CALLERID, $16
+	writecode VAR_CALLERID, PHONE_JUGGLER_IRWIN
 	talkaftercancel
 	loadfont
-	checkcellnum $16
+	checkcellnum PHONE_JUGGLER_IRWIN
 	iftrue UnknownScript_0x19c90f
 	checkevent EVENT_IRWIN_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19c8ec
@@ -68,7 +36,7 @@
 UnknownScript_0x19c8ec:
 	scall UnknownScript_0x19c907
 UnknownScript_0x19c8ef:
-	askforphonenumber $16
+	askforphonenumber PHONE_JUGGLER_IRWIN
 	if_equal $1, UnknownScript_0x19c917
 	if_equal $2, UnknownScript_0x19c913
 	trainertotext JUGGLER, IRWIN1, $0
@@ -104,24 +72,8 @@
 	end
 
 TrainerCamperIvan:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_IVAN
+	trainer EVENT_BEAT_CAMPER_IVAN, CAMPER, IVAN, CamperIvanSeenText, CamperIvanBeatenText, $0000, CamperIvanScript
 
-	; trainer group && trainer id
-	db CAMPER, IVAN
-
-	; text when seen
-	dw CamperIvanSeenText
-
-	; text when trainer beaten
-	dw CamperIvanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperIvanScript
-
 CamperIvanScript:
 	talkaftercancel
 	loadfont
@@ -131,24 +83,8 @@
 	end
 
 TrainerCamperElliot:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_ELLIOT
+	trainer EVENT_BEAT_CAMPER_ELLIOT, CAMPER, ELLIOT, CamperElliotSeenText, CamperElliotBeatenText, $0000, CamperElliotScript
 
-	; trainer group && trainer id
-	db CAMPER, ELLIOT
-
-	; text when seen
-	dw CamperElliotSeenText
-
-	; text when trainer beaten
-	dw CamperElliotBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperElliotScript
-
 CamperElliotScript:
 	talkaftercancel
 	loadfont
@@ -158,24 +94,8 @@
 	end
 
 TrainerPicnickerBrooke:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_BROOKE
+	trainer EVENT_BEAT_PICNICKER_BROOKE, PICNICKER, BROOKE, PicnickerBrookeSeenText, PicnickerBrookeBeatenText, $0000, PicnickerBrookeScript
 
-	; trainer group && trainer id
-	db PICNICKER, BROOKE
-
-	; text when seen
-	dw PicnickerBrookeSeenText
-
-	; text when trainer beaten
-	dw PicnickerBrookeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerBrookeScript
-
 PicnickerBrookeScript:
 	talkaftercancel
 	loadfont
@@ -185,24 +105,8 @@
 	end
 
 TrainerPicnickerKim:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_KIM
+	trainer EVENT_BEAT_PICNICKER_KIM, PICNICKER, KIM, PicnickerKimSeenText, PicnickerKimBeatenText, $0000, PicnickerKimScript
 
-	; trainer group && trainer id
-	db PICNICKER, KIM
-
-	; text when seen
-	dw PicnickerKimSeenText
-
-	; text when trainer beaten
-	dw PicnickerKimBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerKimScript
-
 PicnickerKimScript:
 	talkaftercancel
 	loadfont
@@ -212,26 +116,10 @@
 	end
 
 TrainerBug_catcherArnie1:
-	; bit/flag number
-	dw EVENT_BEAT_BUG_CATCHER_ARNIE
+	trainer EVENT_BEAT_BUG_CATCHER_ARNIE, BUG_CATCHER, ARNIE1, Bug_catcherArnie1SeenText, Bug_catcherArnie1BeatenText, $0000, Bug_catcherArnie1Script
 
-	; trainer group && trainer id
-	db BUG_CATCHER, ARNIE1
-
-	; text when seen
-	dw Bug_catcherArnie1SeenText
-
-	; text when trainer beaten
-	dw Bug_catcherArnie1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bug_catcherArnie1Script
-
 Bug_catcherArnie1Script:
-	writecode VAR_CALLERID, $17
+	writecode VAR_CALLERID, PHONE_BUG_CATCHER_ARNIE
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_ARNIE
@@ -238,7 +126,7 @@
 	iftrue UnknownScript_0x19c9bb
 	checkflag ENGINE_YANMA_SWARM
 	iftrue UnknownScript_0x19ca2f
-	checkcellnum $17
+	checkcellnum PHONE_BUG_CATCHER_ARNIE
 	iftrue UnknownScript_0x19c90f
 	checkevent EVENT_ARNIE_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19c9a4
@@ -251,7 +139,7 @@
 UnknownScript_0x19c9a4:
 	scall UnknownScript_0x19c907
 UnknownScript_0x19c9a7:
-	askforphonenumber $17
+	askforphonenumber PHONE_BUG_CATCHER_ARNIE
 	if_equal $1, UnknownScript_0x19c917
 	if_equal $2, UnknownScript_0x19c913
 	trainertotext BUG_CATCHER, ARNIE1, $0
@@ -325,23 +213,7 @@
 	end
 
 TrainerFirebreatherWalt:
-	; bit/flag number
-	dw EVENT_BEAT_FIREBREATHER_WALT
-
-	; trainer group && trainer id
-	db FIREBREATHER, WALT
-
-	; text when seen
-	dw FirebreatherWaltSeenText
-
-	; text when trainer beaten
-	dw FirebreatherWaltBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FirebreatherWaltScript
+	trainer EVENT_BEAT_FIREBREATHER_WALT, FIREBREATHER, WALT, FirebreatherWaltSeenText, FirebreatherWaltBeatenText, $0000, FirebreatherWaltScript
 
 FirebreatherWaltScript:
 	talkaftercancel
--- a/maps/Route36.asm
+++ b/maps/Route36.asm
@@ -162,26 +162,10 @@
 	end
 
 TrainerSchoolboyAlan1:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_ALAN
+	trainer EVENT_BEAT_SCHOOLBOY_ALAN, SCHOOLBOY, ALAN1, SchoolboyAlan1SeenText, SchoolboyAlan1BeatenText, $0000, SchoolboyAlan1Script
 
-	; trainer group && trainer id
-	db SCHOOLBOY, ALAN1
-
-	; text when seen
-	dw SchoolboyAlan1SeenText
-
-	; text when trainer beaten
-	dw SchoolboyAlan1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyAlan1Script
-
 SchoolboyAlan1Script:
-	writecode VAR_CALLERID, $18
+	writecode VAR_CALLERID, PHONE_SCHOOLBOY_ALAN
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_ALAN
@@ -188,7 +172,7 @@
 	iftrue UnknownScript_0x194140
 	checkflag ENGINE_ALAN_HAS_FIRE_STONE
 	iftrue UnknownScript_0x1941b4
-	checkcellnum $18
+	checkcellnum PHONE_SCHOOLBOY_ALAN
 	iftrue UnknownScript_0x1941d5
 	checkevent EVENT_ALAN_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x194129
@@ -201,7 +185,7 @@
 UnknownScript_0x194129:
 	scall UnknownScript_0x1941cd
 UnknownScript_0x19412c:
-	askforphonenumber $18
+	askforphonenumber PHONE_SCHOOLBOY_ALAN
 	if_equal $1, UnknownScript_0x1941dd
 	if_equal $2, UnknownScript_0x1941d9
 	trainertotext SCHOOLBOY, ALAN1, $0
@@ -316,23 +300,7 @@
 	end
 
 TrainerPsychicMark:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_MARK
-
-	; trainer group && trainer id
-	db PSYCHIC_T, MARK
-
-	; text when seen
-	dw PsychicMarkSeenText
-
-	; text when trainer beaten
-	dw PsychicMarkBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicMarkScript
+	trainer EVENT_BEAT_PSYCHIC_MARK, PSYCHIC_T, MARK, PsychicMarkSeenText, PsychicMarkBeatenText, $0000, PsychicMarkScript
 
 PsychicMarkScript:
 	talkaftercancel
--- a/maps/Route37.asm
+++ b/maps/Route37.asm
@@ -20,24 +20,8 @@
 	return
 
 TrainerTwinsAnnandanne1:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_ANN_AND_ANNE
+	trainer EVENT_BEAT_TWINS_ANN_AND_ANNE, TWINS, ANNANDANNE1, TwinsAnnandanne1SeenText, TwinsAnnandanne1BeatenText, $0000, TwinsAnnandanne1Script
 
-	; trainer group && trainer id
-	db TWINS, ANNANDANNE1
-
-	; text when seen
-	dw TwinsAnnandanne1SeenText
-
-	; text when trainer beaten
-	dw TwinsAnnandanne1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsAnnandanne1Script
-
 TwinsAnnandanne1Script:
 	talkaftercancel
 	loadfont
@@ -47,24 +31,8 @@
 	end
 
 TrainerTwinsAnnandanne2:
-	; bit/flag number
-	dw EVENT_BEAT_TWINS_ANN_AND_ANNE
+	trainer EVENT_BEAT_TWINS_ANN_AND_ANNE, TWINS, ANNANDANNE2, TwinsAnnandanne2SeenText, TwinsAnnandanne2BeatenText, $0000, TwinsAnnandanne2Script
 
-	; trainer group && trainer id
-	db TWINS, ANNANDANNE2
-
-	; text when seen
-	dw TwinsAnnandanne2SeenText
-
-	; text when trainer beaten
-	dw TwinsAnnandanne2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw TwinsAnnandanne2Script
-
 TwinsAnnandanne2Script:
 	talkaftercancel
 	loadfont
@@ -74,23 +42,7 @@
 	end
 
 TrainerPsychicGreg:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_GREG
-
-	; trainer group && trainer id
-	db PSYCHIC_T, GREG
-
-	; text when seen
-	dw PsychicGregSeenText
-
-	; text when trainer beaten
-	dw PsychicGregBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicGregScript
+	trainer EVENT_BEAT_PSYCHIC_GREG, PSYCHIC_T, GREG, PsychicGregSeenText, PsychicGregBeatenText, $0000, PsychicGregScript
 
 PsychicGregScript:
 	talkaftercancel
--- a/maps/Route38.asm
+++ b/maps/Route38.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerBird_keeperToby:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_TOBY
+	trainer EVENT_BEAT_BIRD_KEEPER_TOBY, BIRD_KEEPER, TOBY, Bird_keeperTobySeenText, Bird_keeperTobyBeatenText, $0000, Bird_keeperTobyScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, TOBY
-
-	; text when seen
-	dw Bird_keeperTobySeenText
-
-	; text when trainer beaten
-	dw Bird_keeperTobyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperTobyScript
-
 Bird_keeperTobyScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerSailorHarry:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_HARRY
+	trainer EVENT_BEAT_SAILOR_HARRY, SAILOR, HARRY, SailorHarrySeenText, SailorHarryBeatenText, $0000, SailorHarryScript
 
-	; trainer group && trainer id
-	db SAILOR, HARRY
-
-	; text when seen
-	dw SailorHarrySeenText
-
-	; text when trainer beaten
-	dw SailorHarryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorHarryScript
-
 SailorHarryScript:
 	talkaftercancel
 	loadfont
@@ -60,26 +28,10 @@
 	end
 
 TrainerLassDana1:
-	; bit/flag number
-	dw EVENT_BEAT_LASS_DANA
+	trainer EVENT_BEAT_LASS_DANA, LASS, DANA1, LassDana1SeenText, LassDana1BeatenText, $0000, LassDana1Script
 
-	; trainer group && trainer id
-	db LASS, DANA1
-
-	; text when seen
-	dw LassDana1SeenText
-
-	; text when trainer beaten
-	dw LassDana1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw LassDana1Script
-
 LassDana1Script:
-	writecode VAR_CALLERID, $1a
+	writecode VAR_CALLERID, PHONE_LASS_DANA
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_DANA
@@ -86,7 +38,7 @@
 	iftrue UnknownScript_0x1a1d82
 	checkflag ENGINE_LIZ_HAS_THUNDERSTONE
 	iftrue UnknownScript_0x1a1df6
-	checkcellnum $1a
+	checkcellnum PHONE_LASS_DANA
 	iftrue UnknownScript_0x1a1e17
 	checkevent EVENT_DANA_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a1d6b
@@ -99,7 +51,7 @@
 UnknownScript_0x1a1d6b:
 	scall UnknownScript_0x1a1e0f
 UnknownScript_0x1a1d6e:
-	askforphonenumber $1a
+	askforphonenumber PHONE_LASS_DANA
 	if_equal $1, UnknownScript_0x1a1e1f
 	if_equal $2, UnknownScript_0x1a1e1b
 	trainertotext LASS, DANA1, $0
@@ -214,31 +166,15 @@
 	end
 
 TrainerSchoolboyChad1:
-	; bit/flag number
-	dw EVENT_BEAT_SCHOOLBOY_CHAD
+	trainer EVENT_BEAT_SCHOOLBOY_CHAD, SCHOOLBOY, CHAD1, SchoolboyChad1SeenText, SchoolboyChad1BeatenText, $0000, SchoolboyChad1Script
 
-	; trainer group && trainer id
-	db SCHOOLBOY, CHAD1
-
-	; text when seen
-	dw SchoolboyChad1SeenText
-
-	; text when trainer beaten
-	dw SchoolboyChad1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SchoolboyChad1Script
-
 SchoolboyChad1Script:
-	writecode VAR_CALLERID, $1b
+	writecode VAR_CALLERID, PHONE_SCHOOLBOY_CHAD
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_CHAD
 	iftrue UnknownScript_0x1a1e75
-	checkcellnum $1b
+	checkcellnum PHONE_SCHOOLBOY_CHAD
 	iftrue UnknownScript_0x1a1ef5
 	checkevent EVENT_CHAD_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a1e5e
@@ -251,7 +187,7 @@
 UnknownScript_0x1a1e5e:
 	scall UnknownScript_0x1a1eed
 UnknownScript_0x1a1e61:
-	askforphonenumber $1b
+	askforphonenumber PHONE_SCHOOLBOY_CHAD
 	if_equal $1, UnknownScript_0x1a1efd
 	if_equal $2, UnknownScript_0x1a1ef9
 	trainertotext SCHOOLBOY, CHAD1, $0
@@ -347,24 +283,8 @@
 	end
 
 TrainerBeautyValerie:
-	; bit/flag number
-	dw EVENT_BEAT_BEAUTY_VALERIE
+	trainer EVENT_BEAT_BEAUTY_VALERIE, BEAUTY, VALERIE, BeautyValerieSeenText, BeautyValerieBeatenText, $0000, BeautyValerieScript
 
-	; trainer group && trainer id
-	db BEAUTY, VALERIE
-
-	; text when seen
-	dw BeautyValerieSeenText
-
-	; text when trainer beaten
-	dw BeautyValerieBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BeautyValerieScript
-
 BeautyValerieScript:
 	talkaftercancel
 	loadfont
@@ -374,23 +294,7 @@
 	end
 
 TrainerBeautyOlivia:
-	; bit/flag number
-	dw EVENT_BEAT_BEAUTY_OLIVIA
-
-	; trainer group && trainer id
-	db BEAUTY, OLIVIA
-
-	; text when seen
-	dw BeautyOliviaSeenText
-
-	; text when trainer beaten
-	dw BeautyOliviaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BeautyOliviaScript
+	trainer EVENT_BEAT_BEAUTY_OLIVIA, BEAUTY, OLIVIA, BeautyOliviaSeenText, BeautyOliviaBeatenText, $0000, BeautyOliviaScript
 
 BeautyOliviaScript:
 	talkaftercancel
--- a/maps/Route39.asm
+++ b/maps/Route39.asm
@@ -14,31 +14,15 @@
 	end
 
 TrainerPokefanmDerek1:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_DEREK
+	trainer EVENT_BEAT_POKEFANM_DEREK, POKEFANM, DEREK1, PokefanmDerek1SeenText, PokefanmDerek1BeatenText, $0000, PokefanmDerek1Script
 
-	; trainer group && trainer id
-	db POKEFANM, DEREK1
-
-	; text when seen
-	dw PokefanmDerek1SeenText
-
-	; text when trainer beaten
-	dw PokefanmDerek1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmDerek1Script
-
 PokefanmDerek1Script:
-	writecode VAR_CALLERID, $1c
+	writecode VAR_CALLERID, PHONE_POKEFANM_DEREK
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_DEREK_HAS_NUGGET
 	iftrue UnknownScript_0x1a5b4a
-	checkcellnum $1c
+	checkcellnum PHONE_POKEFANM_DEREK
 	iftrue UnknownScript_0x1a5b6e
 	checkpoke PIKACHU
 	iffalse UnknownScript_0x1a5b5c
@@ -53,7 +37,7 @@
 UnknownScript_0x1a5b33:
 	scall UnknownScript_0x1a5b66
 UnknownScript_0x1a5b36:
-	askforphonenumber $1c
+	askforphonenumber PHONE_POKEFANM_DEREK
 	if_equal $1, UnknownScript_0x1a5b76
 	if_equal $2, UnknownScript_0x1a5b72
 	trainertotext POKEFANM, DEREK1, $0
@@ -109,24 +93,8 @@
 	end
 
 TrainerPokefanfRuth:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANF_RUTH
+	trainer EVENT_BEAT_POKEFANF_RUTH, POKEFANF, RUTH, PokefanfRuthSeenText, PokefanfRuthBeatenText, $0000, PokefanfRuthScript
 
-	; trainer group && trainer id
-	db POKEFANF, RUTH
-
-	; text when seen
-	dw PokefanfRuthSeenText
-
-	; text when trainer beaten
-	dw PokefanfRuthBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanfRuthScript
-
 PokefanfRuthScript:
 	talkaftercancel
 	loadfont
@@ -136,24 +104,8 @@
 	end
 
 TrainerSailorEugene:
-	; bit/flag number
-	dw EVENT_BEAT_SAILOR_EUGENE
+	trainer EVENT_BEAT_SAILOR_EUGENE, SAILOR, EUGENE, SailorEugeneSeenText, SailorEugeneBeatenText, $0000, SailorEugeneScript
 
-	; trainer group && trainer id
-	db SAILOR, EUGENE
-
-	; text when seen
-	dw SailorEugeneSeenText
-
-	; text when trainer beaten
-	dw SailorEugeneBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SailorEugeneScript
-
 SailorEugeneScript:
 	talkaftercancel
 	loadfont
@@ -163,23 +115,7 @@
 	end
 
 TrainerPsychicNorman:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_NORMAN
-
-	; trainer group && trainer id
-	db PSYCHIC_T, NORMAN
-
-	; text when seen
-	dw PsychicNormanSeenText
-
-	; text when trainer beaten
-	dw PsychicNormanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicNormanScript
+	trainer EVENT_BEAT_PSYCHIC_NORMAN, PSYCHIC_T, NORMAN, PsychicNormanSeenText, PsychicNormanBeatenText, $0000, PsychicNormanScript
 
 PsychicNormanScript:
 	talkaftercancel
--- a/maps/Route4.asm
+++ b/maps/Route4.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerBird_keeperHank:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_HANK
+	trainer EVENT_BEAT_BIRD_KEEPER_HANK, BIRD_KEEPER, HANK, Bird_keeperHankSeenText, Bird_keeperHankBeatenText, $0000, Bird_keeperHankScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, HANK
-
-	; text when seen
-	dw Bird_keeperHankSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperHankBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperHankScript
-
 Bird_keeperHankScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerPicnickerHope:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_HOPE
+	trainer EVENT_BEAT_PICNICKER_HOPE, PICNICKER, HOPE, PicnickerHopeSeenText, PicnickerHopeBeatenText, $0000, PicnickerHopeScript
 
-	; trainer group && trainer id
-	db PICNICKER, HOPE
-
-	; text when seen
-	dw PicnickerHopeSeenText
-
-	; text when trainer beaten
-	dw PicnickerHopeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerHopeScript
-
 PicnickerHopeScript:
 	talkaftercancel
 	loadfont
@@ -60,23 +28,7 @@
 	end
 
 TrainerPicnickerSharon:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_SHARON
-
-	; trainer group && trainer id
-	db PICNICKER, SHARON
-
-	; text when seen
-	dw PicnickerSharonSeenText
-
-	; text when trainer beaten
-	dw PicnickerSharonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerSharonScript
+	trainer EVENT_BEAT_PICNICKER_SHARON, PICNICKER, SHARON, PicnickerSharonSeenText, PicnickerSharonBeatenText, $0000, PicnickerSharonScript
 
 PicnickerSharonScript:
 	talkaftercancel
--- a/maps/Route40.asm
+++ b/maps/Route40.asm
@@ -21,24 +21,8 @@
 	return
 
 TrainerSwimmerfElaine:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_ELAINE
+	trainer EVENT_BEAT_SWIMMERF_ELAINE, SWIMMERF, ELAINE, SwimmerfElaineSeenText, SwimmerfElaineBeatenText, $0000, SwimmerfElaineScript
 
-	; trainer group && trainer id
-	db SWIMMERF, ELAINE
-
-	; text when seen
-	dw SwimmerfElaineSeenText
-
-	; text when trainer beaten
-	dw SwimmerfElaineBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfElaineScript
-
 SwimmerfElaineScript:
 	talkaftercancel
 	loadfont
@@ -48,24 +32,8 @@
 	end
 
 TrainerSwimmerfPaula:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_PAULA
+	trainer EVENT_BEAT_SWIMMERF_PAULA, SWIMMERF, PAULA, SwimmerfPaulaSeenText, SwimmerfPaulaBeatenText, $0000, SwimmerfPaulaScript
 
-	; trainer group && trainer id
-	db SWIMMERF, PAULA
-
-	; text when seen
-	dw SwimmerfPaulaSeenText
-
-	; text when trainer beaten
-	dw SwimmerfPaulaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfPaulaScript
-
 SwimmerfPaulaScript:
 	talkaftercancel
 	loadfont
@@ -75,24 +43,8 @@
 	end
 
 TrainerSwimmermSimon:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_SIMON
+	trainer EVENT_BEAT_SWIMMERM_SIMON, SWIMMERM, SIMON, SwimmermSimonSeenText, SwimmermSimonBeatenText, $0000, SwimmermSimonScript
 
-	; trainer group && trainer id
-	db SWIMMERM, SIMON
-
-	; text when seen
-	dw SwimmermSimonSeenText
-
-	; text when trainer beaten
-	dw SwimmermSimonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermSimonScript
-
 SwimmermSimonScript:
 	talkaftercancel
 	loadfont
@@ -102,23 +54,7 @@
 	end
 
 TrainerSwimmermRandall:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_RANDALL
-
-	; trainer group && trainer id
-	db SWIMMERM, RANDALL
-
-	; text when seen
-	dw SwimmermRandallSeenText
-
-	; text when trainer beaten
-	dw SwimmermRandallBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermRandallScript
+	trainer EVENT_BEAT_SWIMMERM_RANDALL, SWIMMERM, RANDALL, SwimmermRandallSeenText, SwimmermRandallBeatenText, $0000, SwimmermRandallScript
 
 SwimmermRandallScript:
 	talkaftercancel
--- a/maps/Route41.asm
+++ b/maps/Route41.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerSwimmerfKaylee:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_KAYLEE
+	trainer EVENT_BEAT_SWIMMERF_KAYLEE, SWIMMERF, KAYLEE, SwimmerfKayleeSeenText, SwimmerfKayleeBeatenText, $0000, SwimmerfKayleeScript
 
-	; trainer group && trainer id
-	db SWIMMERF, KAYLEE
-
-	; text when seen
-	dw SwimmerfKayleeSeenText
-
-	; text when trainer beaten
-	dw SwimmerfKayleeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfKayleeScript
-
 SwimmerfKayleeScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerSwimmerfSusie:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_SUSIE
+	trainer EVENT_BEAT_SWIMMERF_SUSIE, SWIMMERF, SUSIE, SwimmerfSusieSeenText, SwimmerfSusieBeatenText, $0000, SwimmerfSusieScript
 
-	; trainer group && trainer id
-	db SWIMMERF, SUSIE
-
-	; text when seen
-	dw SwimmerfSusieSeenText
-
-	; text when trainer beaten
-	dw SwimmerfSusieBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfSusieScript
-
 SwimmerfSusieScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerSwimmerfDenise:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_DENISE
+	trainer EVENT_BEAT_SWIMMERF_DENISE, SWIMMERF, DENISE, SwimmerfDeniseSeenText, SwimmerfDeniseBeatenText, $0000, SwimmerfDeniseScript
 
-	; trainer group && trainer id
-	db SWIMMERF, DENISE
-
-	; text when seen
-	dw SwimmerfDeniseSeenText
-
-	; text when trainer beaten
-	dw SwimmerfDeniseBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfDeniseScript
-
 SwimmerfDeniseScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerSwimmerfKara:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_KARA
+	trainer EVENT_BEAT_SWIMMERF_KARA, SWIMMERF, KARA, SwimmerfKaraSeenText, SwimmerfKaraBeatenText, $0000, SwimmerfKaraScript
 
-	; trainer group && trainer id
-	db SWIMMERF, KARA
-
-	; text when seen
-	dw SwimmerfKaraSeenText
-
-	; text when trainer beaten
-	dw SwimmerfKaraBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfKaraScript
-
 SwimmerfKaraScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +50,8 @@
 	end
 
 TrainerSwimmerfWendy:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERF_WENDY
+	trainer EVENT_BEAT_SWIMMERF_WENDY, SWIMMERF, WENDY, SwimmerfWendySeenText, SwimmerfWendyBeatenText, $0000, SwimmerfWendyScript
 
-	; trainer group && trainer id
-	db SWIMMERF, WENDY
-
-	; text when seen
-	dw SwimmerfWendySeenText
-
-	; text when trainer beaten
-	dw SwimmerfWendyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmerfWendyScript
-
 SwimmerfWendyScript:
 	talkaftercancel
 	loadfont
@@ -141,24 +61,8 @@
 	end
 
 TrainerSwimmermCharlie:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_CHARLIE
+	trainer EVENT_BEAT_SWIMMERM_CHARLIE, SWIMMERM, CHARLIE, SwimmermCharlieSeenText, SwimmermCharlieBeatenText, $0000, SwimmermCharlieScript
 
-	; trainer group && trainer id
-	db SWIMMERM, CHARLIE
-
-	; text when seen
-	dw SwimmermCharlieSeenText
-
-	; text when trainer beaten
-	dw SwimmermCharlieBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermCharlieScript
-
 SwimmermCharlieScript:
 	talkaftercancel
 	loadfont
@@ -168,24 +72,8 @@
 	end
 
 TrainerSwimmermGeorge:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_GEORGE
+	trainer EVENT_BEAT_SWIMMERM_GEORGE, SWIMMERM, GEORGE, SwimmermGeorgeSeenText, SwimmermGeorgeBeatenText, $0000, SwimmermGeorgeScript
 
-	; trainer group && trainer id
-	db SWIMMERM, GEORGE
-
-	; text when seen
-	dw SwimmermGeorgeSeenText
-
-	; text when trainer beaten
-	dw SwimmermGeorgeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermGeorgeScript
-
 SwimmermGeorgeScript:
 	talkaftercancel
 	loadfont
@@ -195,24 +83,8 @@
 	end
 
 TrainerSwimmermBerke:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_BERKE
+	trainer EVENT_BEAT_SWIMMERM_BERKE, SWIMMERM, BERKE, SwimmermBerkeSeenText, SwimmermBerkeBeatenText, $0000, SwimmermBerkeScript
 
-	; trainer group && trainer id
-	db SWIMMERM, BERKE
-
-	; text when seen
-	dw SwimmermBerkeSeenText
-
-	; text when trainer beaten
-	dw SwimmermBerkeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermBerkeScript
-
 SwimmermBerkeScript:
 	talkaftercancel
 	loadfont
@@ -222,24 +94,8 @@
 	end
 
 TrainerSwimmermKirk:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_KIRK
+	trainer EVENT_BEAT_SWIMMERM_KIRK, SWIMMERM, KIRK, SwimmermKirkSeenText, SwimmermKirkBeatenText, $0000, SwimmermKirkScript
 
-	; trainer group && trainer id
-	db SWIMMERM, KIRK
-
-	; text when seen
-	dw SwimmermKirkSeenText
-
-	; text when trainer beaten
-	dw SwimmermKirkBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermKirkScript
-
 SwimmermKirkScript:
 	talkaftercancel
 	loadfont
@@ -249,23 +105,7 @@
 	end
 
 TrainerSwimmermMathew:
-	; bit/flag number
-	dw EVENT_BEAT_SWIMMERM_MATHEW
-
-	; trainer group && trainer id
-	db SWIMMERM, MATHEW
-
-	; text when seen
-	dw SwimmermMathewSeenText
-
-	; text when trainer beaten
-	dw SwimmermMathewBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SwimmermMathewScript
+	trainer EVENT_BEAT_SWIMMERM_MATHEW, SWIMMERM, MATHEW, SwimmermMathewSeenText, SwimmermMathewBeatenText, $0000, SwimmermMathewScript
 
 SwimmermMathewScript:
 	talkaftercancel
--- a/maps/Route42.asm
+++ b/maps/Route42.asm
@@ -28,26 +28,10 @@
 	end
 
 TrainerFisherTully1:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_TULLY
+	trainer EVENT_BEAT_FISHER_TULLY, FISHER, TULLY1, FisherTully1SeenText, FisherTully1BeatenText, $0000, FisherTully1Script
 
-	; trainer group && trainer id
-	db FISHER, TULLY1
-
-	; text when seen
-	dw FisherTully1SeenText
-
-	; text when trainer beaten
-	dw FisherTully1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherTully1Script
-
 FisherTully1Script:
-	writecode VAR_CALLERID, $1d
+	writecode VAR_CALLERID, PHONE_FISHER_TULLY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_TULLY
@@ -54,7 +38,7 @@
 	iftrue UnknownScript_0x1a927f
 	checkflag ENGINE_TULLY_HAS_WATER_STONE
 	iftrue UnknownScript_0x1a92dc
-	checkcellnum $1d
+	checkcellnum PHONE_FISHER_TULLY
 	iftrue UnknownScript_0x1a92fd
 	checkevent EVENT_TULLY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a9268
@@ -67,7 +51,7 @@
 UnknownScript_0x1a9268:
 	scall UnknownScript_0x1a92f5
 UnknownScript_0x1a926b:
-	askforphonenumber $1d
+	askforphonenumber PHONE_FISHER_TULLY
 	if_equal $1, UnknownScript_0x1a9305
 	if_equal $2, UnknownScript_0x1a9301
 	trainertotext FISHER, TULLY1, $0
@@ -170,24 +154,8 @@
 	end
 
 TrainerPokemaniacShane:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_SHANE
+	trainer EVENT_BEAT_POKEMANIAC_SHANE, POKEMANIAC, SHANE, PokemaniacShaneSeenText, PokemaniacShaneBeatenText, $0000, PokemaniacShaneScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, SHANE
-
-	; text when seen
-	dw PokemaniacShaneSeenText
-
-	; text when trainer beaten
-	dw PokemaniacShaneBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacShaneScript
-
 PokemaniacShaneScript:
 	talkaftercancel
 	loadfont
@@ -197,23 +165,7 @@
 	end
 
 TrainerHikerBenjamin:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_BENJAMIN
-
-	; trainer group && trainer id
-	db HIKER, BENJAMIN
-
-	; text when seen
-	dw HikerBenjaminSeenText
-
-	; text when trainer beaten
-	dw HikerBenjaminBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerBenjaminScript
+	trainer EVENT_BEAT_HIKER_BENJAMIN, HIKER, BENJAMIN, HikerBenjaminSeenText, HikerBenjaminBeatenText, $0000, HikerBenjaminScript
 
 HikerBenjaminScript:
 	talkaftercancel
--- a/maps/Route43.asm
+++ b/maps/Route43.asm
@@ -20,24 +20,8 @@
 	return
 
 TrainerCamperSpencer:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_SPENCER
+	trainer EVENT_BEAT_CAMPER_SPENCER, CAMPER, SPENCER, CamperSpencerSeenText, CamperSpencerBeatenText, $0000, CamperSpencerScript
 
-	; trainer group && trainer id
-	db CAMPER, SPENCER
-
-	; text when seen
-	dw CamperSpencerSeenText
-
-	; text when trainer beaten
-	dw CamperSpencerBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperSpencerScript
-
 CamperSpencerScript:
 	talkaftercancel
 	loadfont
@@ -47,24 +31,8 @@
 	end
 
 TrainerPokemaniacBen:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_BEN
+	trainer EVENT_BEAT_POKEMANIAC_BEN, POKEMANIAC, BEN, PokemaniacBenSeenText, PokemaniacBenBeatenText, $0000, PokemaniacBenScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, BEN
-
-	; text when seen
-	dw PokemaniacBenSeenText
-
-	; text when trainer beaten
-	dw PokemaniacBenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacBenScript
-
 PokemaniacBenScript:
 	talkaftercancel
 	loadfont
@@ -74,31 +42,15 @@
 	end
 
 TrainerPokemaniacBrent1:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_BRENT
+	trainer EVENT_BEAT_POKEMANIAC_BRENT, POKEMANIAC, BRENT1, PokemaniacBrent1SeenText, PokemaniacBrent1BeatenText, $0000, PokemaniacBrent1Script
 
-	; trainer group && trainer id
-	db POKEMANIAC, BRENT1
-
-	; text when seen
-	dw PokemaniacBrent1SeenText
-
-	; text when trainer beaten
-	dw PokemaniacBrent1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacBrent1Script
-
 PokemaniacBrent1Script:
-	writecode VAR_CALLERID, $1e
+	writecode VAR_CALLERID, PHONE_POKEMANIAC_BRENT
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_BRENT
 	iftrue UnknownScript_0x19d0cf
-	checkcellnum $1e
+	checkcellnum PHONE_POKEMANIAC_BRENT
 	iftrue UnknownScript_0x19d138
 	checkevent EVENT_BRENT_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19d0b8
@@ -111,7 +63,7 @@
 UnknownScript_0x19d0b8:
 	scall UnknownScript_0x19d130
 UnknownScript_0x19d0bb:
-	askforphonenumber $1e
+	askforphonenumber PHONE_POKEMANIAC_BRENT
 	if_equal $1, UnknownScript_0x19d140
 	if_equal $2, UnknownScript_0x19d13c
 	trainertotext POKEMANIAC, BRENT1, $0
@@ -195,24 +147,8 @@
 	end
 
 TrainerPokemaniacRon:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_RON
+	trainer EVENT_BEAT_POKEMANIAC_RON, POKEMANIAC, RON, PokemaniacRonSeenText, PokemaniacRonBeatenText, $0000, PokemaniacRonScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, RON
-
-	; text when seen
-	dw PokemaniacRonSeenText
-
-	; text when trainer beaten
-	dw PokemaniacRonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacRonScript
-
 PokemaniacRonScript:
 	talkaftercancel
 	loadfont
@@ -222,24 +158,8 @@
 	end
 
 TrainerFisherMarvin:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_MARVIN
+	trainer EVENT_BEAT_FISHER_MARVIN, FISHER, MARVIN, FisherMarvinSeenText, FisherMarvinBeatenText, $0000, FisherMarvinScript
 
-	; trainer group && trainer id
-	db FISHER, MARVIN
-
-	; text when seen
-	dw FisherMarvinSeenText
-
-	; text when trainer beaten
-	dw FisherMarvinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherMarvinScript
-
 FisherMarvinScript:
 	talkaftercancel
 	loadfont
@@ -249,26 +169,10 @@
 	end
 
 TrainerPicnickerTiffany3:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_TIFFANY
+	trainer EVENT_BEAT_PICNICKER_TIFFANY, PICNICKER, TIFFANY3, PicnickerTiffany3SeenText, PicnickerTiffany3BeatenText, $0000, PicnickerTiffany3Script
 
-	; trainer group && trainer id
-	db PICNICKER, TIFFANY3
-
-	; text when seen
-	dw PicnickerTiffany3SeenText
-
-	; text when trainer beaten
-	dw PicnickerTiffany3BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerTiffany3Script
-
 PicnickerTiffany3Script:
-	writecode VAR_CALLERID, $1f
+	writecode VAR_CALLERID, PHONE_PICNICKER_TIFFANY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_TIFFANY
@@ -275,7 +179,7 @@
 	iftrue UnknownScript_0x19d1c1
 	checkflag ENGINE_TIFFANY_HAS_PINK_BOW
 	iftrue UnknownScript_0x19d21e
-	checkcellnum $1f
+	checkcellnum PHONE_PICNICKER_TIFFANY
 	iftrue UnknownScript_0x19d245
 	checkpoke CLEFAIRY
 	iffalse UnknownScript_0x19d233
@@ -290,7 +194,7 @@
 UnknownScript_0x19d1aa:
 	scall UnknownScript_0x19d23d
 UnknownScript_0x19d1ad:
-	askforphonenumber $1f
+	askforphonenumber PHONE_PICNICKER_TIFFANY
 	if_equal $1, UnknownScript_0x19d24d
 	if_equal $2, UnknownScript_0x19d249
 	trainertotext PICNICKER, TIFFANY3, $0
--- a/maps/Route44.asm
+++ b/maps/Route44.asm
@@ -6,31 +6,15 @@
 	db 0
 
 TrainerBird_keeperVance1:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_VANCE
+	trainer EVENT_BEAT_BIRD_KEEPER_VANCE, BIRD_KEEPER, VANCE1, Bird_keeperVance1SeenText, Bird_keeperVance1BeatenText, $0000, Bird_keeperVance1Script
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, VANCE1
-
-	; text when seen
-	dw Bird_keeperVance1SeenText
-
-	; text when trainer beaten
-	dw Bird_keeperVance1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperVance1Script
-
 Bird_keeperVance1Script:
-	writecode VAR_CALLERID, $20
+	writecode VAR_CALLERID, PHONE_BIRDKEEPER_VANCE
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_VANCE
 	iftrue UnknownScript_0x19d86a
-	checkcellnum $20
+	checkcellnum PHONE_BIRDKEEPER_VANCE
 	iftrue UnknownScript_0x19d8eb
 	checkevent EVENT_VANCE_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19d853
@@ -43,7 +27,7 @@
 UnknownScript_0x19d853:
 	scall UnknownScript_0x19d8e3
 UnknownScript_0x19d856:
-	askforphonenumber $20
+	askforphonenumber PHONE_BIRDKEEPER_VANCE
 	if_equal $1, UnknownScript_0x19d8f3
 	if_equal $2, UnknownScript_0x19d8ef
 	trainertotext BIRD_KEEPER, VANCE1, $0
@@ -153,24 +137,8 @@
 	end
 
 TrainerPsychicPhil:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_PHIL
+	trainer EVENT_BEAT_PSYCHIC_PHIL, PSYCHIC_T, PHIL, PsychicPhilSeenText, PsychicPhilBeatenText, $0000, PsychicPhilScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, PHIL
-
-	; text when seen
-	dw PsychicPhilSeenText
-
-	; text when trainer beaten
-	dw PsychicPhilBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicPhilScript
-
 PsychicPhilScript:
 	talkaftercancel
 	loadfont
@@ -180,26 +148,10 @@
 	end
 
 TrainerFisherWilton1:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_WILTON
+	trainer EVENT_BEAT_FISHER_WILTON, FISHER, WILTON1, FisherWilton1SeenText, FisherWilton1BeatenText, $0000, FisherWilton1Script
 
-	; trainer group && trainer id
-	db FISHER, WILTON1
-
-	; text when seen
-	dw FisherWilton1SeenText
-
-	; text when trainer beaten
-	dw FisherWilton1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherWilton1Script
-
 FisherWilton1Script:
-	writecode VAR_CALLERID, $21
+	writecode VAR_CALLERID, PHONE_FISHER_WILTON
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_WILTON
@@ -206,7 +158,7 @@
 	iftrue UnknownScript_0x19d96e
 	checkflag ENGINE_WILTON_HAS_ITEM
 	iftrue UnknownScript_0x19d9b4
-	checkcellnum $21
+	checkcellnum PHONE_FISHER_WILTON
 	iftrue UnknownScript_0x19d8eb
 	checkevent EVENT_WILTON_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19d957
@@ -219,7 +171,7 @@
 UnknownScript_0x19d957:
 	scall UnknownScript_0x19d8e3
 UnknownScript_0x19d95a:
-	askforphonenumber $21
+	askforphonenumber PHONE_FISHER_WILTON
 	if_equal $1, UnknownScript_0x19d8f3
 	if_equal $2, UnknownScript_0x19d8ef
 	trainertotext FISHER, WILTON1, $0
@@ -291,24 +243,8 @@
 	jump UnknownScript_0x19d8ff
 
 TrainerFisherEdgar:
-	; bit/flag number
-	dw EVENT_BEAT_FISHER_EDGAR
+	trainer EVENT_BEAT_FISHER_EDGAR, FISHER, EDGAR, FisherEdgarSeenText, FisherEdgarBeatenText, $0000, FisherEdgarScript
 
-	; trainer group && trainer id
-	db FISHER, EDGAR
-
-	; text when seen
-	dw FisherEdgarSeenText
-
-	; text when trainer beaten
-	dw FisherEdgarBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FisherEdgarScript
-
 FisherEdgarScript:
 	talkaftercancel
 	loadfont
@@ -318,24 +254,8 @@
 	end
 
 TrainerCooltrainerfCybil:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_CYBIL
+	trainer EVENT_BEAT_COOLTRAINERF_CYBIL, COOLTRAINERF, CYBIL, CooltrainerfCybilSeenText, CooltrainerfCybilBeatenText, $0000, CooltrainerfCybilScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, CYBIL
-
-	; text when seen
-	dw CooltrainerfCybilSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfCybilBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfCybilScript
-
 CooltrainerfCybilScript:
 	talkaftercancel
 	loadfont
@@ -345,24 +265,8 @@
 	end
 
 TrainerPokemaniacZach:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_ZACH
+	trainer EVENT_BEAT_POKEMANIAC_ZACH, POKEMANIAC, ZACH, PokemaniacZachSeenText, PokemaniacZachBeatenText, $0000, PokemaniacZachScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, ZACH
-
-	; text when seen
-	dw PokemaniacZachSeenText
-
-	; text when trainer beaten
-	dw PokemaniacZachBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacZachScript
-
 PokemaniacZachScript:
 	talkaftercancel
 	loadfont
@@ -372,23 +276,7 @@
 	end
 
 TrainerCooltrainermAllen:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_ALLEN
-
-	; trainer group && trainer id
-	db COOLTRAINERM, ALLEN
-
-	; text when seen
-	dw CooltrainermAllenSeenText
-
-	; text when trainer beaten
-	dw CooltrainermAllenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermAllenScript
+	trainer EVENT_BEAT_COOLTRAINERM_ALLEN, COOLTRAINERM, ALLEN, CooltrainermAllenSeenText, CooltrainermAllenBeatenText, $0000, CooltrainermAllenScript
 
 CooltrainermAllenScript:
 	talkaftercancel
--- a/maps/Route45.asm
+++ b/maps/Route45.asm
@@ -6,29 +6,13 @@
 	db 0
 
 TrainerBlackbeltKenji:
-	; bit/flag number
-	dw EVENT_BEAT_BLACKBELT_KENJI
+	trainer EVENT_BEAT_BLACKBELT_KENJI, BLACKBELT_T, KENJI3, BlackbeltKenji3SeenText, BlackbeltKenji3BeatenText, $0000, BlackbeltKenji3Script
 
-	; trainer group && trainer id
-	db BLACKBELT_T, KENJI3
-
-	; text when seen
-	dw BlackbeltKenji3SeenText
-
-	; text when trainer beaten
-	dw BlackbeltKenji3BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BlackbeltKenji3Script
-
 BlackbeltKenji3Script:
-	writecode VAR_CALLERID, $22
+	writecode VAR_CALLERID, PHONE_BLACKBELT_KENJI
 	talkaftercancel
 	loadfont
-	checkcellnum $22
+	checkcellnum PHONE_BLACKBELT_KENJI
 	iftrue UnknownScript_0x19e0e4
 	checkevent EVENT_KENJI_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19e0cd
@@ -42,7 +26,7 @@
 UnknownScript_0x19e0cd:
 	scall UnknownScript_0x19e11f
 UnknownScript_0x19e0d0:
-	askforphonenumber $22
+	askforphonenumber PHONE_BLACKBELT_KENJI
 	if_equal $1, UnknownScript_0x19e12f
 	if_equal $2, UnknownScript_0x19e12b
 	trainertotext BLACKBELT_T, KENJI3, $0
@@ -126,24 +110,8 @@
 	end
 
 TrainerHikerErik:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_ERIK
+	trainer EVENT_BEAT_HIKER_ERIK, HIKER, ERIK, HikerErikSeenText, HikerErikBeatenText, $0000, HikerErikScript
 
-	; trainer group && trainer id
-	db HIKER, ERIK
-
-	; text when seen
-	dw HikerErikSeenText
-
-	; text when trainer beaten
-	dw HikerErikBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerErikScript
-
 HikerErikScript:
 	talkaftercancel
 	loadfont
@@ -153,24 +121,8 @@
 	end
 
 TrainerHikerMichael:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_MICHAEL
+	trainer EVENT_BEAT_HIKER_MICHAEL, HIKER, MICHAEL, HikerMichaelSeenText, HikerMichaelBeatenText, $0000, HikerMichaelScript
 
-	; trainer group && trainer id
-	db HIKER, MICHAEL
-
-	; text when seen
-	dw HikerMichaelSeenText
-
-	; text when trainer beaten
-	dw HikerMichaelBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerMichaelScript
-
 HikerMichaelScript:
 	talkaftercancel
 	loadfont
@@ -180,31 +132,15 @@
 	end
 
 TrainerHikerParry:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_PARRY
+	trainer EVENT_BEAT_HIKER_PARRY, HIKER, PARRY3, HikerParry3SeenText, HikerParry3BeatenText, $0000, HikerParry3Script
 
-	; trainer group && trainer id
-	db HIKER, PARRY3
-
-	; text when seen
-	dw HikerParry3SeenText
-
-	; text when trainer beaten
-	dw HikerParry3BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerParry3Script
-
 HikerParry3Script:
-	writecode VAR_CALLERID, $23
+	writecode VAR_CALLERID, PHONE_HIKER_PARRY
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_PARRY
 	iftrue UnknownScript_0x19e1b8
-	checkcellnum $23
+	checkcellnum PHONE_HIKER_PARRY
 	iftrue UnknownScript_0x19e127
 	checkevent EVENT_PARRY_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x19e1a1
@@ -217,7 +153,7 @@
 UnknownScript_0x19e1a1:
 	scall UnknownScript_0x19e11f
 UnknownScript_0x19e1a4:
-	askforphonenumber $23
+	askforphonenumber PHONE_HIKER_PARRY
 	if_equal $1, UnknownScript_0x19e12f
 	if_equal $2, UnknownScript_0x19e12b
 	trainertotext HIKER, PARRY1, $0
@@ -282,24 +218,8 @@
 	jump UnknownScript_0x19e127
 
 TrainerHikerTimothy:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_TIMOTHY
+	trainer EVENT_BEAT_HIKER_TIMOTHY, HIKER, TIMOTHY, HikerTimothySeenText, HikerTimothyBeatenText, $0000, HikerTimothyScript
 
-	; trainer group && trainer id
-	db HIKER, TIMOTHY
-
-	; text when seen
-	dw HikerTimothySeenText
-
-	; text when trainer beaten
-	dw HikerTimothyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerTimothyScript
-
 HikerTimothyScript:
 	talkaftercancel
 	loadfont
@@ -309,24 +229,8 @@
 	end
 
 TrainerCooltrainermRyan:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_RYAN
+	trainer EVENT_BEAT_COOLTRAINERM_RYAN, COOLTRAINERM, RYAN, CooltrainermRyanSeenText, CooltrainermRyanBeatenText, $0000, CooltrainermRyanScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, RYAN
-
-	; text when seen
-	dw CooltrainermRyanSeenText
-
-	; text when trainer beaten
-	dw CooltrainermRyanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermRyanScript
-
 CooltrainermRyanScript:
 	talkaftercancel
 	loadfont
@@ -336,23 +240,7 @@
 	end
 
 TrainerCooltrainerfKelly:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_KELLY
-
-	; trainer group && trainer id
-	db COOLTRAINERF, KELLY
-
-	; text when seen
-	dw CooltrainerfKellySeenText
-
-	; text when trainer beaten
-	dw CooltrainerfKellyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfKellyScript
+	trainer EVENT_BEAT_COOLTRAINERF_KELLY, COOLTRAINERF, KELLY, CooltrainerfKellySeenText, CooltrainerfKellyBeatenText, $0000, CooltrainerfKellyScript
 
 CooltrainerfKellyScript:
 	talkaftercancel
--- a/maps/Route46.asm
+++ b/maps/Route46.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerCamperTed:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_TED
+	trainer EVENT_BEAT_CAMPER_TED, CAMPER, TED, CamperTedSeenText, CamperTedBeatenText, $0000, CamperTedScript
 
-	; trainer group && trainer id
-	db CAMPER, TED
-
-	; text when seen
-	dw CamperTedSeenText
-
-	; text when trainer beaten
-	dw CamperTedBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperTedScript
-
 CamperTedScript:
 	talkaftercancel
 	loadfont
@@ -33,31 +17,15 @@
 	end
 
 TrainerPicnickerErin1:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_ERIN
+	trainer EVENT_BEAT_PICNICKER_ERIN, PICNICKER, ERIN1, PicnickerErin1SeenText, PicnickerErin1BeatenText, $0000, PicnickerErin1Script
 
-	; trainer group && trainer id
-	db PICNICKER, ERIN1
-
-	; text when seen
-	dw PicnickerErin1SeenText
-
-	; text when trainer beaten
-	dw PicnickerErin1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerErin1Script
-
 PicnickerErin1Script:
-	writecode VAR_CALLERID, $24
+	writecode VAR_CALLERID, PHONE_PICNICKER_ERIN
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_ERIN
 	iftrue UnknownScript_0x1a96da
-	checkcellnum $24
+	checkcellnum PHONE_PICNICKER_ERIN
 	iftrue UnknownScript_0x1a975b
 	checkevent EVENT_ERIN_ASKED_FOR_PHONE_NUMBER
 	iftrue UnknownScript_0x1a96c3
@@ -70,7 +38,7 @@
 UnknownScript_0x1a96c3:
 	scall UnknownScript_0x1a9753
 UnknownScript_0x1a96c6:
-	askforphonenumber $24
+	askforphonenumber PHONE_PICNICKER_ERIN
 	if_equal $1, UnknownScript_0x1a9763
 	if_equal $2, UnknownScript_0x1a975f
 	trainertotext PICNICKER, ERIN1, $0
@@ -172,23 +140,7 @@
 	end
 
 TrainerHikerBailey:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_BAILEY
-
-	; trainer group && trainer id
-	db HIKER, BAILEY
-
-	; text when seen
-	dw HikerBaileySeenText
-
-	; text when trainer beaten
-	dw HikerBaileyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerBaileyScript
+	trainer EVENT_BEAT_HIKER_BAILEY, HIKER, BAILEY, HikerBaileySeenText, HikerBaileyBeatenText, $0000, HikerBaileyScript
 
 HikerBaileyScript:
 	talkaftercancel
--- a/maps/Route6.asm
+++ b/maps/Route6.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerPokefanmRex:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_REX
+	trainer EVENT_BEAT_POKEFANM_REX, POKEFANM, REX, PokefanmRexSeenText, PokefanmRexBeatenText, $0000, PokefanmRexScript
 
-	; trainer group && trainer id
-	db POKEFANM, REX
-
-	; text when seen
-	dw PokefanmRexSeenText
-
-	; text when trainer beaten
-	dw PokefanmRexBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmRexScript
-
 PokefanmRexScript:
 	talkaftercancel
 	loadfont
@@ -33,23 +17,7 @@
 	end
 
 TrainerPokefanmAllan:
-	; bit/flag number
-	dw EVENT_BEAT_POKEFANM_ALLAN
-
-	; trainer group && trainer id
-	db POKEFANM, ALLAN
-
-	; text when seen
-	dw PokefanmAllanSeenText
-
-	; text when trainer beaten
-	dw PokefanmAllanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokefanmAllanScript
+	trainer EVENT_BEAT_POKEFANM_ALLAN, POKEFANM, ALLAN, PokefanmAllanSeenText, PokefanmAllanBeatenText, $0000, PokefanmAllanScript
 
 PokefanmAllanScript:
 	talkaftercancel
--- a/maps/Route8.asm
+++ b/maps/Route8.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerBikerDwayne:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_DWAYNE
+	trainer EVENT_BEAT_BIKER_DWAYNE, BIKER, DWAYNE, BikerDwayneSeenText, BikerDwayneBeatenText, $0000, BikerDwayneScript
 
-	; trainer group && trainer id
-	db BIKER, DWAYNE
-
-	; text when seen
-	dw BikerDwayneSeenText
-
-	; text when trainer beaten
-	dw BikerDwayneBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerDwayneScript
-
 BikerDwayneScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerBikerHarris:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_HARRIS
+	trainer EVENT_BEAT_BIKER_HARRIS, BIKER, HARRIS, BikerHarrisSeenText, BikerHarrisBeatenText, $0000, BikerHarrisScript
 
-	; trainer group && trainer id
-	db BIKER, HARRIS
-
-	; text when seen
-	dw BikerHarrisSeenText
-
-	; text when trainer beaten
-	dw BikerHarrisBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerHarrisScript
-
 BikerHarrisScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerBikerZeke:
-	; bit/flag number
-	dw EVENT_BEAT_BIKER_ZEKE
+	trainer EVENT_BEAT_BIKER_ZEKE, BIKER, ZEKE, BikerZekeSeenText, BikerZekeBeatenText, $0000, BikerZekeScript
 
-	; trainer group && trainer id
-	db BIKER, ZEKE
-
-	; text when seen
-	dw BikerZekeSeenText
-
-	; text when trainer beaten
-	dw BikerZekeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BikerZekeScript
-
 BikerZekeScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerSupernerdSam:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_SAM
+	trainer EVENT_BEAT_SUPER_NERD_SAM, SUPER_NERD, SAM, SupernerdSamSeenText, SupernerdSamBeatenText, $0000, SupernerdSamScript
 
-	; trainer group && trainer id
-	db SUPER_NERD, SAM
-
-	; text when seen
-	dw SupernerdSamSeenText
-
-	; text when trainer beaten
-	dw SupernerdSamBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdSamScript
-
 SupernerdSamScript:
 	talkaftercancel
 	loadfont
@@ -114,23 +50,7 @@
 	end
 
 TrainerSupernerdTom:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_TOM
-
-	; trainer group && trainer id
-	db SUPER_NERD, TOM
-
-	; text when seen
-	dw SupernerdTomSeenText
-
-	; text when trainer beaten
-	dw SupernerdTomBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdTomScript
+	trainer EVENT_BEAT_SUPER_NERD_TOM, SUPER_NERD, TOM, SupernerdTomSeenText, SupernerdTomBeatenText, $0000, SupernerdTomScript
 
 SupernerdTomScript:
 	talkaftercancel
--- a/maps/Route9.asm
+++ b/maps/Route9.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerCamperDean:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_DEAN
+	trainer EVENT_BEAT_CAMPER_DEAN, CAMPER, DEAN, CamperDeanSeenText, CamperDeanBeatenText, $0000, CamperDeanScript
 
-	; trainer group && trainer id
-	db CAMPER, DEAN
-
-	; text when seen
-	dw CamperDeanSeenText
-
-	; text when trainer beaten
-	dw CamperDeanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperDeanScript
-
 CamperDeanScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerPicnickerHeidi:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_HEIDI
+	trainer EVENT_BEAT_PICNICKER_HEIDI, PICNICKER, HEIDI, PicnickerHeidiSeenText, PicnickerHeidiBeatenText, $0000, PicnickerHeidiScript
 
-	; trainer group && trainer id
-	db PICNICKER, HEIDI
-
-	; text when seen
-	dw PicnickerHeidiSeenText
-
-	; text when trainer beaten
-	dw PicnickerHeidiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerHeidiScript
-
 PicnickerHeidiScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerCamperSid:
-	; bit/flag number
-	dw EVENT_BEAT_CAMPER_SID
+	trainer EVENT_BEAT_CAMPER_SID, CAMPER, SID, CamperSidSeenText, CamperSidBeatenText, $0000, CamperSidScript
 
-	; trainer group && trainer id
-	db CAMPER, SID
-
-	; text when seen
-	dw CamperSidSeenText
-
-	; text when trainer beaten
-	dw CamperSidBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CamperSidScript
-
 CamperSidScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerPicnickerEdna:
-	; bit/flag number
-	dw EVENT_BEAT_PICNICKER_EDNA
+	trainer EVENT_BEAT_PICNICKER_EDNA, PICNICKER, EDNA, PicnickerEdnaSeenText, PicnickerEdnaBeatenText, $0000, PicnickerEdnaScript
 
-	; trainer group && trainer id
-	db PICNICKER, EDNA
-
-	; text when seen
-	dw PicnickerEdnaSeenText
-
-	; text when trainer beaten
-	dw PicnickerEdnaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PicnickerEdnaScript
-
 PicnickerEdnaScript:
 	talkaftercancel
 	loadfont
@@ -114,24 +50,8 @@
 	end
 
 TrainerHikerTim:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_TIM
+	trainer EVENT_BEAT_HIKER_TIM, HIKER, TIM, HikerTimSeenText, HikerTimBeatenText, $0000, HikerTimScript
 
-	; trainer group && trainer id
-	db HIKER, TIM
-
-	; text when seen
-	dw HikerTimSeenText
-
-	; text when trainer beaten
-	dw HikerTimBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerTimScript
-
 HikerTimScript:
 	talkaftercancel
 	loadfont
@@ -141,23 +61,7 @@
 	end
 
 TrainerHikerSidney:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_SIDNEY
-
-	; trainer group && trainer id
-	db HIKER, SIDNEY
-
-	; text when seen
-	dw HikerSidneySeenText
-
-	; text when trainer beaten
-	dw HikerSidneyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerSidneyScript
+	trainer EVENT_BEAT_HIKER_SIDNEY, HIKER, SIDNEY, HikerSidneySeenText, HikerSidneyBeatenText, $0000, HikerSidneyScript
 
 HikerSidneyScript:
 	talkaftercancel
--- a/maps/RuinsofAlphOmanyteChamber.asm
+++ b/maps/RuinsofAlphOmanyteChamber.asm
@@ -14,7 +14,7 @@
 	dbw 1, UnknownScript_0x58bf8
 
 UnknownScript_0x58be9:
-	special Function8adef
+	special SpecialOmanyteChamber
 	checkevent EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
 	iftrue UnknownScript_0x58bf3
 	end
--- a/maps/RuinsofAlphOutside.asm
+++ b/maps/RuinsofAlphOutside.asm
@@ -100,24 +100,8 @@
 	end
 
 TrainerPsychicNathan:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_NATHAN
+	trainer EVENT_BEAT_PSYCHIC_NATHAN, PSYCHIC_T, NATHAN, PsychicNathanSeenText, PsychicNathanBeatenText, $0000, PsychicNathanScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, NATHAN
-
-	; text when seen
-	dw PsychicNathanSeenText
-
-	; text when trainer beaten
-	dw PsychicNathanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicNathanScript
-
 PsychicNathanScript:
 	talkaftercancel
 	loadfont
@@ -128,23 +112,7 @@
 
 
 TrainerSuperNerdStan:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_STAN
-
-	; trainer group && trainer id
-	db SUPER_NERD, STAN
-
-	; text when seen
-	dw UnknownText_0x581e5
-
-	; text when trainer beaten
-	dw UnknownText_0x58217
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw UnknownScript_0x580a9
+	trainer EVENT_BEAT_SUPER_NERD_STAN, SUPER_NERD, STAN, UnknownText_0x581e5, UnknownText_0x58217, $0000, UnknownScript_0x580a9
 
 UnknownScript_0x580a9:
 	talkaftercancel
--- a/maps/SaffronGym.asm
+++ b/maps/SaffronGym.asm
@@ -39,24 +39,8 @@
 	end
 
 TrainerMediumRebecca:
-	; bit/flag number
-	dw EVENT_BEAT_MEDIUM_REBECCA
+	trainer EVENT_BEAT_MEDIUM_REBECCA, MEDIUM, REBECCA, MediumRebeccaSeenText, MediumRebeccaBeatenText, $0000, MediumRebeccaScript
 
-	; trainer group && trainer id
-	db MEDIUM, REBECCA
-
-	; text when seen
-	dw MediumRebeccaSeenText
-
-	; text when trainer beaten
-	dw MediumRebeccaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw MediumRebeccaScript
-
 MediumRebeccaScript:
 	talkaftercancel
 	loadfont
@@ -66,24 +50,8 @@
 	end
 
 TrainerPsychicFranklin:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_FRANKLIN
+	trainer EVENT_BEAT_PSYCHIC_FRANKLIN, PSYCHIC_T, FRANKLIN, PsychicFranklinSeenText, PsychicFranklinBeatenText, $0000, PsychicFranklinScript
 
-	; trainer group && trainer id
-	db PSYCHIC_T, FRANKLIN
-
-	; text when seen
-	dw PsychicFranklinSeenText
-
-	; text when trainer beaten
-	dw PsychicFranklinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicFranklinScript
-
 PsychicFranklinScript:
 	talkaftercancel
 	loadfont
@@ -93,24 +61,8 @@
 	end
 
 TrainerMediumDoris:
-	; bit/flag number
-	dw EVENT_BEAT_MEDIUM_DORIS
+	trainer EVENT_BEAT_MEDIUM_DORIS, MEDIUM, DORIS, MediumDorisSeenText, MediumDorisBeatenText, $0000, MediumDorisScript
 
-	; trainer group && trainer id
-	db MEDIUM, DORIS
-
-	; text when seen
-	dw MediumDorisSeenText
-
-	; text when trainer beaten
-	dw MediumDorisBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw MediumDorisScript
-
 MediumDorisScript:
 	talkaftercancel
 	loadfont
@@ -120,23 +72,7 @@
 	end
 
 TrainerPsychicJared:
-	; bit/flag number
-	dw EVENT_BEAT_PSYCHIC_JARED
-
-	; trainer group && trainer id
-	db PSYCHIC_T, JARED
-
-	; text when seen
-	dw PsychicJaredSeenText
-
-	; text when trainer beaten
-	dw PsychicJaredBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PsychicJaredScript
+	trainer EVENT_BEAT_PSYCHIC_JARED, PSYCHIC_T, JARED, PsychicJaredSeenText, PsychicJaredBeatenText, $0000, PsychicJaredScript
 
 PsychicJaredScript:
 	talkaftercancel
--- a/maps/SlowpokeWellB1F.asm
+++ b/maps/SlowpokeWellB1F.asm
@@ -9,24 +9,8 @@
 	jumptextfaceplayer UnknownText_0x5a6b5
 
 TrainerGruntM29:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_29
+	trainer EVENT_BEAT_ROCKET_GRUNTM_29, GRUNTM, 29, GruntM29SeenText, GruntM29BeatenText, $0000, GruntM29Script
 
-	; trainer group && trainer id
-	db GRUNTM, 29
-
-	; text when seen
-	dw GruntM29SeenText
-
-	; text when trainer beaten
-	dw GruntM29BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM29Script
-
 GruntM29Script:
 	talkaftercancel
 	loadfont
@@ -36,24 +20,8 @@
 	end
 
 TrainerGruntM1:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_1
+	trainer EVENT_BEAT_ROCKET_GRUNTM_1, GRUNTM, 1, GruntM1SeenText, GruntM1BeatenText, $0000, GruntM1Script
 
-	; trainer group && trainer id
-	db GRUNTM, 1
-
-	; text when seen
-	dw GruntM1SeenText
-
-	; text when trainer beaten
-	dw GruntM1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM1Script
-
 GruntM1Script:
 	loadfont
 	writetext TrainerGruntM1WhenTalkText
@@ -95,24 +63,8 @@
 	end
 
 TrainerGruntM2:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_2
+	trainer EVENT_BEAT_ROCKET_GRUNTM_2, GRUNTM, 2, GruntM2SeenText, GruntM2BeatenText, $0000, GruntM2Script
 
-	; trainer group && trainer id
-	db GRUNTM, 2
-
-	; text when seen
-	dw GruntM2SeenText
-
-	; text when trainer beaten
-	dw GruntM2BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM2Script
-
 GruntM2Script:
 	talkaftercancel
 	loadfont
@@ -122,23 +74,7 @@
 	end
 
 TrainerGruntF1:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTF_1
-
-	; trainer group && trainer id
-	db GRUNTF, 1
-
-	; text when seen
-	dw GruntF1SeenText
-
-	; text when trainer beaten
-	dw GruntF1BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntF1Script
+	trainer EVENT_BEAT_ROCKET_GRUNTF_1, GRUNTF, 1, GruntF1SeenText, GruntF1BeatenText, $0000, GruntF1Script
 
 GruntF1Script:
 	talkaftercancel
--- a/maps/SproutTower1F.asm
+++ b/maps/SproutTower1F.asm
@@ -18,23 +18,7 @@
 	jumptextfaceplayer UnknownText_0x18469d
 
 TrainerSageChow:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_CHOW
-
-	; trainer group && trainer id
-	db SAGE, CHOW
-
-	; text when seen
-	dw SageChowSeenText
-
-	; text when trainer beaten
-	dw SageChowBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageChowScript
+	trainer EVENT_BEAT_SAGE_CHOW, SAGE, CHOW, SageChowSeenText, SageChowBeatenText, $0000, SageChowScript
 
 SageChowScript:
 	talkaftercancel
--- a/maps/SproutTower2F.asm
+++ b/maps/SproutTower2F.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerSageNico:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_NICO
+	trainer EVENT_BEAT_SAGE_NICO, SAGE, NICO, SageNicoSeenText, SageNicoBeatenText, $0000, SageNicoScript
 
-	; trainer group && trainer id
-	db SAGE, NICO
-
-	; text when seen
-	dw SageNicoSeenText
-
-	; text when trainer beaten
-	dw SageNicoBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageNicoScript
-
 SageNicoScript:
 	talkaftercancel
 	loadfont
@@ -33,23 +17,7 @@
 	end
 
 TrainerSageEdmond:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_EDMOND
-
-	; trainer group && trainer id
-	db SAGE, EDMOND
-
-	; text when seen
-	dw SageEdmondSeenText
-
-	; text when trainer beaten
-	dw SageEdmondBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageEdmondScript
+	trainer EVENT_BEAT_SAGE_EDMOND, SAGE, EDMOND, SageEdmondSeenText, SageEdmondBeatenText, $0000, SageEdmondScript
 
 SageEdmondScript:
 	talkaftercancel
--- a/maps/SproutTower3F.asm
+++ b/maps/SproutTower3F.asm
@@ -86,24 +86,8 @@
 	end
 
 TrainerSageJin:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_JIN
+	trainer EVENT_BEAT_SAGE_JIN, SAGE, JIN, SageJinSeenText, SageJinBeatenText, $0000, SageJinScript
 
-	; trainer group && trainer id
-	db SAGE, JIN
-
-	; text when seen
-	dw SageJinSeenText
-
-	; text when trainer beaten
-	dw SageJinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageJinScript
-
 SageJinScript:
 	talkaftercancel
 	loadfont
@@ -113,24 +97,8 @@
 	end
 
 TrainerSageTroy:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_TROY
+	trainer EVENT_BEAT_SAGE_TROY, SAGE, TROY, SageTroySeenText, SageTroyBeatenText, $0000, SageTroyScript
 
-	; trainer group && trainer id
-	db SAGE, TROY
-
-	; text when seen
-	dw SageTroySeenText
-
-	; text when trainer beaten
-	dw SageTroyBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageTroyScript
-
 SageTroyScript:
 	talkaftercancel
 	loadfont
@@ -140,23 +108,7 @@
 	end
 
 TrainerSageNeal:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_NEAL
-
-	; trainer group && trainer id
-	db SAGE, NEAL
-
-	; text when seen
-	dw SageNealSeenText
-
-	; text when trainer beaten
-	dw SageNealBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageNealScript
+	trainer EVENT_BEAT_SAGE_NEAL, SAGE, NEAL, SageNealSeenText, SageNealBeatenText, $0000, SageNealScript
 
 SageNealScript:
 	talkaftercancel
--- a/maps/TeamRocketBaseB1F.asm
+++ b/maps/TeamRocketBaseB1F.asm
@@ -478,24 +478,8 @@
 	end
 
 TrainerScientistJed:
-	; bit/flag number
-	dw EVENT_BEAT_SCIENTIST_JED
+	trainer EVENT_BEAT_SCIENTIST_JED, SCIENTIST, JED, ScientistJedSeenText, ScientistJedBeatenText, $0000, ScientistJedScript
 
-	; trainer group && trainer id
-	db SCIENTIST, JED
-
-	; text when seen
-	dw ScientistJedSeenText
-
-	; text when trainer beaten
-	dw ScientistJedBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw ScientistJedScript
-
 ScientistJedScript:
 	talkaftercancel
 	loadfont
@@ -505,23 +489,7 @@
 	end
 
 TrainerGruntM16:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_16
-
-	; trainer group && trainer id
-	db GRUNTM, 16
-
-	; text when seen
-	dw GruntM16SeenText
-
-	; text when trainer beaten
-	dw GruntM16BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM16Script
+	trainer EVENT_BEAT_ROCKET_GRUNTM_16, GRUNTM, 16, GruntM16SeenText, GruntM16BeatenText, $0000, GruntM16Script
 
 GruntM16Script:
 	talkaftercancel
--- a/maps/TeamRocketBaseB2F.asm
+++ b/maps/TeamRocketBaseB2F.asm
@@ -178,24 +178,8 @@
 	end
 
 TrainerGruntM17:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_17
+	trainer EVENT_BEAT_ROCKET_GRUNTM_17, GRUNTM, 17, GruntM17SeenText, GruntM17BeatenText, $0000, GruntM17Script
 
-	; trainer group && trainer id
-	db GRUNTM, 17
-
-	; text when seen
-	dw GruntM17SeenText
-
-	; text when trainer beaten
-	dw GruntM17BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM17Script
-
 GruntM17Script:
 	talkaftercancel
 	loadfont
@@ -205,24 +189,8 @@
 	end
 
 TrainerGruntM18:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_18
+	trainer EVENT_BEAT_ROCKET_GRUNTM_18, GRUNTM, 18, GruntM18SeenText, GruntM18BeatenText, $0000, GruntM18Script
 
-	; trainer group && trainer id
-	db GRUNTM, 18
-
-	; text when seen
-	dw GruntM18SeenText
-
-	; text when trainer beaten
-	dw GruntM18BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM18Script
-
 GruntM18Script:
 	talkaftercancel
 	loadfont
@@ -232,23 +200,7 @@
 	end
 
 TrainerGruntM19:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_19
-
-	; trainer group && trainer id
-	db GRUNTM, 19
-
-	; text when seen
-	dw GruntM19SeenText
-
-	; text when trainer beaten
-	dw GruntM19BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM19Script
+	trainer EVENT_BEAT_ROCKET_GRUNTM_19, GRUNTM, 19, GruntM19SeenText, GruntM19BeatenText, $0000, GruntM19Script
 
 GruntM19Script:
 	talkaftercancel
--- a/maps/TeamRocketBaseB3F.asm
+++ b/maps/TeamRocketBaseB3F.asm
@@ -117,24 +117,8 @@
 	end
 
 TrainerGruntF5:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTF_5
+	trainer EVENT_BEAT_ROCKET_GRUNTF_5, GRUNTF, 5, GruntF5SeenText, GruntF5BeatenText, $0000, GruntF5Script
 
-	; trainer group && trainer id
-	db GRUNTF, 5
-
-	; text when seen
-	dw GruntF5SeenText
-
-	; text when trainer beaten
-	dw GruntF5BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntF5Script
-
 GruntF5Script:
 	talkaftercancel
 	loadfont
@@ -145,24 +129,8 @@
 	end
 
 TrainerGruntM28:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_28
+	trainer EVENT_BEAT_ROCKET_GRUNTM_28, GRUNTM, 28, GruntM28SeenText, GruntM28BeatenText, $0000, GruntM28Script
 
-	; trainer group && trainer id
-	db GRUNTM, 28
-
-	; text when seen
-	dw GruntM28SeenText
-
-	; text when trainer beaten
-	dw GruntM28BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM28Script
-
 GruntM28Script:
 	talkaftercancel
 	loadfont
@@ -173,24 +141,8 @@
 	end
 
 TrainerScientistRoss:
-	; bit/flag number
-	dw EVENT_BEAT_SCIENTIST_ROSS
+	trainer EVENT_BEAT_SCIENTIST_ROSS, SCIENTIST, ROSS, ScientistRossSeenText, ScientistRossBeatenText, $0000, ScientistRossScript
 
-	; trainer group && trainer id
-	db SCIENTIST, ROSS
-
-	; text when seen
-	dw ScientistRossSeenText
-
-	; text when trainer beaten
-	dw ScientistRossBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw ScientistRossScript
-
 ScientistRossScript:
 	talkaftercancel
 	loadfont
@@ -200,23 +152,7 @@
 	end
 
 TrainerScientistMitch:
-	; bit/flag number
-	dw EVENT_BEAT_SCIENTIST_MITCH
-
-	; trainer group && trainer id
-	db SCIENTIST, MITCH
-
-	; text when seen
-	dw ScientistMitchSeenText
-
-	; text when trainer beaten
-	dw ScientistMitchBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw ScientistMitchScript
+	trainer EVENT_BEAT_SCIENTIST_MITCH, SCIENTIST, MITCH, ScientistMitchSeenText, ScientistMitchBeatenText, $0000, ScientistMitchScript
 
 ScientistMitchScript:
 	talkaftercancel
--- a/maps/UndergroundPathSwitchRoomEntrances.asm
+++ b/maps/UndergroundPathSwitchRoomEntrances.asm
@@ -166,24 +166,8 @@
 	end
 
 TrainerGruntM11:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_11
+	trainer EVENT_BEAT_ROCKET_GRUNTM_11, GRUNTM, 11, GruntM11SeenText, GruntM11BeatenText, $0000, GruntM11Script
 
-	; trainer group && trainer id
-	db GRUNTM, 11
-
-	; text when seen
-	dw GruntM11SeenText
-
-	; text when trainer beaten
-	dw GruntM11BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM11Script
-
 GruntM11Script:
 	talkaftercancel
 	loadfont
@@ -193,24 +177,8 @@
 	end
 
 TrainerGruntM25:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_25
+	trainer EVENT_BEAT_ROCKET_GRUNTM_25, GRUNTM, 25, GruntM25SeenText, GruntM25BeatenText, $0000, GruntM25Script
 
-	; trainer group && trainer id
-	db GRUNTM, 25
-
-	; text when seen
-	dw GruntM25SeenText
-
-	; text when trainer beaten
-	dw GruntM25BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM25Script
-
 GruntM25Script:
 	talkaftercancel
 	loadfont
@@ -220,24 +188,8 @@
 	end
 
 TrainerBurglarDuncan:
-	; bit/flag number
-	dw EVENT_BEAT_BURGLAR_DUNCAN
+	trainer EVENT_BEAT_BURGLAR_DUNCAN, BURGLAR, DUNCAN, BurglarDuncanSeenText, BurglarDuncanBeatenText, $0000, BurglarDuncanScript
 
-	; trainer group && trainer id
-	db BURGLAR, DUNCAN
-
-	; text when seen
-	dw BurglarDuncanSeenText
-
-	; text when trainer beaten
-	dw BurglarDuncanBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BurglarDuncanScript
-
 BurglarDuncanScript:
 	talkaftercancel
 	loadfont
@@ -247,24 +199,8 @@
 	end
 
 TrainerBurglarEddie:
-	; bit/flag number
-	dw EVENT_BEAT_BURGLAR_EDDIE
+	trainer EVENT_BEAT_BURGLAR_EDDIE, BURGLAR, EDDIE, BurglarEddieSeenText, BurglarEddieBeatenText, $0000, BurglarEddieScript
 
-	; trainer group && trainer id
-	db BURGLAR, EDDIE
-
-	; text when seen
-	dw BurglarEddieSeenText
-
-	; text when trainer beaten
-	dw BurglarEddieBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw BurglarEddieScript
-
 BurglarEddieScript:
 	talkaftercancel
 	loadfont
@@ -274,24 +210,8 @@
 	end
 
 TrainerGruntM13:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_13
+	trainer EVENT_BEAT_ROCKET_GRUNTM_13, GRUNTM, 13, GruntM13SeenText, GruntM13BeatenText, $0000, GruntM13Script
 
-	; trainer group && trainer id
-	db GRUNTM, 13
-
-	; text when seen
-	dw GruntM13SeenText
-
-	; text when trainer beaten
-	dw GruntM13BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM13Script
-
 GruntM13Script:
 	talkaftercancel
 	loadfont
@@ -301,23 +221,7 @@
 	end
 
 TrainerGruntF3:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTF_3
-
-	; trainer group && trainer id
-	db GRUNTF, 3
-
-	; text when seen
-	dw GruntF3SeenText
-
-	; text when trainer beaten
-	dw GruntF3BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntF3Script
+	trainer EVENT_BEAT_ROCKET_GRUNTF_3, GRUNTF, 3, GruntF3SeenText, GruntF3BeatenText, $0000, GruntF3Script
 
 GruntF3Script:
 	talkaftercancel
--- a/maps/UndergroundWarehouse.asm
+++ b/maps/UndergroundWarehouse.asm
@@ -30,24 +30,8 @@
 	return
 
 TrainerGruntM24:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_24
+	trainer EVENT_BEAT_ROCKET_GRUNTM_24, GRUNTM, 24, GruntM24SeenText, GruntM24BeatenText, $0000, GruntM24Script
 
-	; trainer group && trainer id
-	db GRUNTM, 24
-
-	; text when seen
-	dw GruntM24SeenText
-
-	; text when trainer beaten
-	dw GruntM24BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM24Script
-
 GruntM24Script:
 	talkaftercancel
 	loadfont
@@ -57,24 +41,8 @@
 	end
 
 TrainerGruntM14:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_14
+	trainer EVENT_BEAT_ROCKET_GRUNTM_14, GRUNTM, 14, GruntM14SeenText, GruntM14BeatenText, $0000, GruntM14Script
 
-	; trainer group && trainer id
-	db GRUNTM, 14
-
-	; text when seen
-	dw GruntM14SeenText
-
-	; text when trainer beaten
-	dw GruntM14BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM14Script
-
 GruntM14Script:
 	talkaftercancel
 	loadfont
@@ -84,23 +52,7 @@
 	end
 
 TrainerGruntM15:
-	; bit/flag number
-	dw EVENT_BEAT_ROCKET_GRUNTM_15
-
-	; trainer group && trainer id
-	db GRUNTM, 15
-
-	; text when seen
-	dw GruntM15SeenText
-
-	; text when trainer beaten
-	dw GruntM15BeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GruntM15Script
+	trainer EVENT_BEAT_ROCKET_GRUNTM_15, GRUNTM, 15, GruntM15SeenText, GruntM15BeatenText, $0000, GruntM15Script
 
 GruntM15Script:
 	talkaftercancel
--- a/maps/UnionCave1F.asm
+++ b/maps/UnionCave1F.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerPokemaniacLarry:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_LARRY
+	trainer EVENT_BEAT_POKEMANIAC_LARRY, POKEMANIAC, LARRY, PokemaniacLarrySeenText, PokemaniacLarryBeatenText, $0000, PokemaniacLarryScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, LARRY
-
-	; text when seen
-	dw PokemaniacLarrySeenText
-
-	; text when trainer beaten
-	dw PokemaniacLarryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacLarryScript
-
 PokemaniacLarryScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerHikerRussell:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_RUSSELL
+	trainer EVENT_BEAT_HIKER_RUSSELL, HIKER, RUSSELL, HikerRussellSeenText, HikerRussellBeatenText, $0000, HikerRussellScript
 
-	; trainer group && trainer id
-	db HIKER, RUSSELL
-
-	; text when seen
-	dw HikerRussellSeenText
-
-	; text when trainer beaten
-	dw HikerRussellBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerRussellScript
-
 HikerRussellScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerHikerDaniel:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_DANIEL
+	trainer EVENT_BEAT_HIKER_DANIEL, HIKER, DANIEL, HikerDanielSeenText, HikerDanielBeatenText, $0000, HikerDanielScript
 
-	; trainer group && trainer id
-	db HIKER, DANIEL
-
-	; text when seen
-	dw HikerDanielSeenText
-
-	; text when trainer beaten
-	dw HikerDanielBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerDanielScript
-
 HikerDanielScript:
 	talkaftercancel
 	loadfont
@@ -87,24 +39,8 @@
 	end
 
 TrainerFirebreatherBill:
-	; bit/flag number
-	dw EVENT_BEAT_FIREBREATHER_BILL
+	trainer EVENT_BEAT_FIREBREATHER_BILL, FIREBREATHER, BILL, FirebreatherBillSeenText, FirebreatherBillBeatenText, $0000, FirebreatherBillScript
 
-	; trainer group && trainer id
-	db FIREBREATHER, BILL
-
-	; text when seen
-	dw FirebreatherBillSeenText
-
-	; text when trainer beaten
-	dw FirebreatherBillBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FirebreatherBillScript
-
 FirebreatherBillScript:
 	talkaftercancel
 	loadfont
@@ -114,23 +50,7 @@
 	end
 
 TrainerFirebreatherRay:
-	; bit/flag number
-	dw EVENT_BEAT_FIREBREATHER_RAY
-
-	; trainer group && trainer id
-	db FIREBREATHER, RAY
-
-	; text when seen
-	dw FirebreatherRaySeenText
-
-	; text when trainer beaten
-	dw FirebreatherRayBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw FirebreatherRayScript
+	trainer EVENT_BEAT_FIREBREATHER_RAY, FIREBREATHER, RAY, FirebreatherRaySeenText, FirebreatherRayBeatenText, $0000, FirebreatherRayScript
 
 FirebreatherRayScript:
 	talkaftercancel
--- a/maps/UnionCaveB1F.asm
+++ b/maps/UnionCaveB1F.asm
@@ -6,24 +6,8 @@
 	db 0
 
 TrainerPokemaniacAndrew:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_ANDREW
+	trainer EVENT_BEAT_POKEMANIAC_ANDREW, POKEMANIAC, ANDREW, PokemaniacAndrewSeenText, PokemaniacAndrewBeatenText, $0000, PokemaniacAndrewScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, ANDREW
-
-	; text when seen
-	dw PokemaniacAndrewSeenText
-
-	; text when trainer beaten
-	dw PokemaniacAndrewBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacAndrewScript
-
 PokemaniacAndrewScript:
 	talkaftercancel
 	loadfont
@@ -33,24 +17,8 @@
 	end
 
 TrainerPokemaniacCalvin:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_CALVIN
+	trainer EVENT_BEAT_POKEMANIAC_CALVIN, POKEMANIAC, CALVIN, PokemaniacCalvinSeenText, PokemaniacCalvinBeatenText, $0000, PokemaniacCalvinScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, CALVIN
-
-	; text when seen
-	dw PokemaniacCalvinSeenText
-
-	; text when trainer beaten
-	dw PokemaniacCalvinBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacCalvinScript
-
 PokemaniacCalvinScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +28,8 @@
 	end
 
 TrainerHikerPhillip:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_PHILLIP
+	trainer EVENT_BEAT_HIKER_PHILLIP, HIKER, PHILLIP, HikerPhillipSeenText, HikerPhillipBeatenText, $0000, HikerPhillipScript
 
-	; trainer group && trainer id
-	db HIKER, PHILLIP
-
-	; text when seen
-	dw HikerPhillipSeenText
-
-	; text when trainer beaten
-	dw HikerPhillipBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerPhillipScript
-
 HikerPhillipScript:
 	talkaftercancel
 	loadfont
@@ -87,23 +39,7 @@
 	end
 
 TrainerHikerLeonard:
-	; bit/flag number
-	dw EVENT_BEAT_HIKER_LEONARD
-
-	; trainer group && trainer id
-	db HIKER, LEONARD
-
-	; text when seen
-	dw HikerLeonardSeenText
-
-	; text when trainer beaten
-	dw HikerLeonardBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw HikerLeonardScript
+	trainer EVENT_BEAT_HIKER_LEONARD, HIKER, LEONARD, HikerLeonardSeenText, HikerLeonardBeatenText, $0000, HikerLeonardScript
 
 HikerLeonardScript:
 	talkaftercancel
--- a/maps/UnionCaveB2F.asm
+++ b/maps/UnionCaveB2F.asm
@@ -33,24 +33,8 @@
 	end
 
 TrainerCooltrainermNick:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERM_NICK
+	trainer EVENT_BEAT_COOLTRAINERM_NICK, COOLTRAINERM, NICK, CooltrainermNickSeenText, CooltrainermNickBeatenText, $0000, CooltrainermNickScript
 
-	; trainer group && trainer id
-	db COOLTRAINERM, NICK
-
-	; text when seen
-	dw CooltrainermNickSeenText
-
-	; text when trainer beaten
-	dw CooltrainermNickBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainermNickScript
-
 CooltrainermNickScript:
 	talkaftercancel
 	loadfont
@@ -60,24 +44,8 @@
 	end
 
 TrainerCooltrainerfGwen:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_GWEN
+	trainer EVENT_BEAT_COOLTRAINERF_GWEN, COOLTRAINERF, GWEN, CooltrainerfGwenSeenText, CooltrainerfGwenBeatenText, $0000, CooltrainerfGwenScript
 
-	; trainer group && trainer id
-	db COOLTRAINERF, GWEN
-
-	; text when seen
-	dw CooltrainerfGwenSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfGwenBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfGwenScript
-
 CooltrainerfGwenScript:
 	talkaftercancel
 	loadfont
@@ -87,23 +55,7 @@
 	end
 
 TrainerCooltrainerfEmma:
-	; bit/flag number
-	dw EVENT_BEAT_COOLTRAINERF_EMMA
-
-	; trainer group && trainer id
-	db COOLTRAINERF, EMMA
-
-	; text when seen
-	dw CooltrainerfEmmaSeenText
-
-	; text when trainer beaten
-	dw CooltrainerfEmmaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw CooltrainerfEmmaScript
+	trainer EVENT_BEAT_COOLTRAINERF_EMMA, COOLTRAINERF, EMMA, CooltrainerfEmmaSeenText, CooltrainerfEmmaBeatenText, $0000, CooltrainerfEmmaScript
 
 CooltrainerfEmmaScript:
 	talkaftercancel
--- a/maps/VermilionGym.asm
+++ b/maps/VermilionGym.asm
@@ -38,24 +38,8 @@
 	end
 
 TrainerGentlemanGregory:
-	; bit/flag number
-	dw EVENT_BEAT_GENTLEMAN_GREGORY
+	trainer EVENT_BEAT_GENTLEMAN_GREGORY, GENTLEMAN, GREGORY, GentlemanGregorySeenText, GentlemanGregoryBeatenText, $0000, GentlemanGregoryScript
 
-	; trainer group && trainer id
-	db GENTLEMAN, GREGORY
-
-	; text when seen
-	dw GentlemanGregorySeenText
-
-	; text when trainer beaten
-	dw GentlemanGregoryBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GentlemanGregoryScript
-
 GentlemanGregoryScript:
 	talkaftercancel
 	loadfont
@@ -65,24 +49,8 @@
 	end
 
 TrainerGuitaristVincent:
-	; bit/flag number
-	dw EVENT_BEAT_GUITARIST_VINCENT
+	trainer EVENT_BEAT_GUITARIST_VINCENT, GUITARIST, VINCENT, GuitaristVincentSeenText, GuitaristVincentBeatenText, $0000, GuitaristVincentScript
 
-	; trainer group && trainer id
-	db GUITARIST, VINCENT
-
-	; text when seen
-	dw GuitaristVincentSeenText
-
-	; text when trainer beaten
-	dw GuitaristVincentBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw GuitaristVincentScript
-
 GuitaristVincentScript:
 	talkaftercancel
 	loadfont
@@ -92,23 +60,7 @@
 	end
 
 TrainerJugglerHorton:
-	; bit/flag number
-	dw EVENT_BEAT_JUGGLER_HORTON
-
-	; trainer group && trainer id
-	db JUGGLER, HORTON
-
-	; text when seen
-	dw JugglerHortonSeenText
-
-	; text when trainer beaten
-	dw JugglerHortonBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw JugglerHortonScript
+	trainer EVENT_BEAT_JUGGLER_HORTON, JUGGLER, HORTON, JugglerHortonSeenText, JugglerHortonBeatenText, $0000, JugglerHortonScript
 
 JugglerHortonScript:
 	talkaftercancel
--- a/maps/VioletGym.asm
+++ b/maps/VioletGym.asm
@@ -61,24 +61,8 @@
 	jumpstd radiotowerrockets
 
 TrainerBird_keeperRod:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_ROD
+	trainer EVENT_BEAT_BIRD_KEEPER_ROD, BIRD_KEEPER, ROD, Bird_keeperRodSeenText, Bird_keeperRodBeatenText, $0000, Bird_keeperRodScript
 
-	; trainer group && trainer id
-	db BIRD_KEEPER, ROD
-
-	; text when seen
-	dw Bird_keeperRodSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperRodBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperRodScript
-
 Bird_keeperRodScript:
 	talkaftercancel
 	loadfont
@@ -88,23 +72,7 @@
 	end
 
 TrainerBird_keeperAbe:
-	; bit/flag number
-	dw EVENT_BEAT_BIRD_KEEPER_ABE
-
-	; trainer group && trainer id
-	db BIRD_KEEPER, ABE
-
-	; text when seen
-	dw Bird_keeperAbeSeenText
-
-	; text when trainer beaten
-	dw Bird_keeperAbeBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw Bird_keeperAbeScript
+	trainer EVENT_BEAT_BIRD_KEEPER_ABE, BIRD_KEEPER, ABE, Bird_keeperAbeSeenText, Bird_keeperAbeBeatenText, $0000, Bird_keeperAbeScript
 
 Bird_keeperAbeScript:
 	talkaftercancel
--- a/maps/WarehouseEntrance.asm
+++ b/maps/WarehouseEntrance.asm
@@ -105,24 +105,8 @@
 	return
 
 TrainerSupernerdEric:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_ERIC
+	trainer EVENT_BEAT_SUPER_NERD_ERIC, SUPER_NERD, ERIC, SupernerdEricSeenText, SupernerdEricBeatenText, $0000, SupernerdEricScript
 
-	; trainer group && trainer id
-	db SUPER_NERD, ERIC
-
-	; text when seen
-	dw SupernerdEricSeenText
-
-	; text when trainer beaten
-	dw SupernerdEricBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdEricScript
-
 SupernerdEricScript:
 	talkaftercancel
 	loadfont
@@ -132,24 +116,8 @@
 	end
 
 TrainerSupernerdTeru:
-	; bit/flag number
-	dw EVENT_BEAT_SUPER_NERD_TERU
+	trainer EVENT_BEAT_SUPER_NERD_TERU, SUPER_NERD, TERU, SupernerdTeruSeenText, SupernerdTeruBeatenText, $0000, SupernerdTeruScript
 
-	; trainer group && trainer id
-	db SUPER_NERD, TERU
-
-	; text when seen
-	dw SupernerdTeruSeenText
-
-	; text when trainer beaten
-	dw SupernerdTeruBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SupernerdTeruScript
-
 SupernerdTeruScript:
 	talkaftercancel
 	loadfont
@@ -159,24 +127,8 @@
 	end
 
 TrainerPokemaniacIssac:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_ISSAC
+	trainer EVENT_BEAT_POKEMANIAC_ISSAC, POKEMANIAC, ISSAC, PokemaniacIssacSeenText, PokemaniacIssacBeatenText, $0000, PokemaniacIssacScript
 
-	; trainer group && trainer id
-	db POKEMANIAC, ISSAC
-
-	; text when seen
-	dw PokemaniacIssacSeenText
-
-	; text when trainer beaten
-	dw PokemaniacIssacBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacIssacScript
-
 PokemaniacIssacScript:
 	talkaftercancel
 	loadfont
@@ -186,23 +138,7 @@
 	end
 
 TrainerPokemaniacDonald:
-	; bit/flag number
-	dw EVENT_BEAT_POKEMANIAC_DONALD
-
-	; trainer group && trainer id
-	db POKEMANIAC, DONALD
-
-	; text when seen
-	dw PokemaniacDonaldSeenText
-
-	; text when trainer beaten
-	dw PokemaniacDonaldBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw PokemaniacDonaldScript
+	trainer EVENT_BEAT_POKEMANIAC_DONALD, POKEMANIAC, DONALD, PokemaniacDonaldSeenText, PokemaniacDonaldBeatenText, $0000, PokemaniacDonaldScript
 
 PokemaniacDonaldScript:
 	talkaftercancel
--- a/maps/WiseTriosRoom.asm
+++ b/maps/WiseTriosRoom.asm
@@ -66,24 +66,8 @@
 	end
 
 TrainerSageGaku:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_GAKU
+	trainer EVENT_BEAT_SAGE_GAKU, SAGE, GAKU, SageGakuSeenText, SageGakuBeatenText, $0000, SageGakuScript
 
-	; trainer group && trainer id
-	db SAGE, GAKU
-
-	; text when seen
-	dw SageGakuSeenText
-
-	; text when trainer beaten
-	dw SageGakuBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageGakuScript
-
 SageGakuScript:
 	loadfont
 	writetext UnknownText_0x98938
@@ -92,24 +76,8 @@
 	end
 
 TrainerSageMasa:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_MASA
+	trainer EVENT_BEAT_SAGE_MASA, SAGE, MASA, SageMasaSeenText, SageMasaBeatenText, $0000, SageMasaScript
 
-	; trainer group && trainer id
-	db SAGE, MASA
-
-	; text when seen
-	dw SageMasaSeenText
-
-	; text when trainer beaten
-	dw SageMasaBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageMasaScript
-
 SageMasaScript:
 	loadfont
 	writetext UnknownText_0x98a35
@@ -118,23 +86,7 @@
 	end
 
 TrainerSageKoji:
-	; bit/flag number
-	dw EVENT_BEAT_SAGE_KOJI
-
-	; trainer group && trainer id
-	db SAGE, KOJI
-
-	; text when seen
-	dw SageKojiSeenText
-
-	; text when trainer beaten
-	dw SageKojiBeatenText
-
-	; script when lost
-	dw $0000
-
-	; script when talk again
-	dw SageKojiScript
+	trainer EVENT_BEAT_SAGE_KOJI, SAGE, KOJI, SageKojiSeenText, SageKojiBeatenText, $0000, SageKojiScript
 
 SageKojiScript:
 	checkevent EVENT_KOJI_ALLOWS_YOU_PASSAGE_TO_TIN_TOWER
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -4972,7 +4972,7 @@
 	call Function10218d
 	call Function102180
 	ld hl, UnknownText_0x1021d1
-	call Function1d4f
+	call MenuTextBox
 	ld de, SFX_LEVEL_UP
 	call PlaySFX
 	call Functiona36
@@ -4979,7 +4979,7 @@
 	call Function1c07
 	call Function10219f
 	ld hl, UnknownText_0x1021d6
-	call Function1d4f
+	call MenuTextBox
 	call YesNoBox
 	call Function1c07
 	jr c, .asm_10217c
@@ -5051,7 +5051,7 @@
 ; 1021e0
 
 Function1021e0: ; 1021e0
-	call Function1d4f
+	call MenuTextBox
 	call Functiona36
 	call Function1c07
 	ret
--- a/wram.asm
+++ b/wram.asm
@@ -1403,9 +1403,11 @@
 WalkingY:: ; d046
 	ds 1
 WalkingTile:: ; d047
+wWinTextPointer::
 	ds 1
 
-wd048:: ds 3
+wd048:: ds 1
+wLossTextPointer:: ds 2
 wd04b:: ds 2
 wd04d:: ds 1
 wd04e:: ds 2
@@ -2428,7 +2430,7 @@
 	ds PARTY_LENGTH ; species of each Pokémon in party
 PartyEnd:: ; dcde
 	ds 1 ; legacy functions don't check PartyCount
-		 
+		
 PartyMons::
 PartyMon1:: party_struct PartyMon1 ; dcdf
 PartyMon2:: party_struct PartyMon2 ; dd0f